【发布时间】:2011-04-18 04:20:26
【问题描述】:
我读到微处理器由几个组件组成,每个组件都有相同/不同的“大小”。但真正让我感到困惑的是,是什么决定了微处理器的规定尺寸是 16 位、32 位还是 64 位...
是吗:
- ALU 的容量?
- 数据总线的大小?
- 地址总线的大小?
- 上述“最小公分母”?
- 或其他一些我至今不知道的因素?
【问题讨论】:
标签: microprocessors
我读到微处理器由几个组件组成,每个组件都有相同/不同的“大小”。但真正让我感到困惑的是,是什么决定了微处理器的规定尺寸是 16 位、32 位还是 64 位...
是吗:
【问题讨论】:
标签: microprocessors
通常,处理器的位大小是其通用寄存器的大小。这通常对应于内存总线的大小,也可能对应于地址总线,但不一定。
例如,英特尔出售了一个名为 386SX (http://en.wikipedia.org/wiki/Intel_80386#The_i386SX_variant) 的 386 芯片版本,它在内部是具有 32 位寄存器的 386,但只有 16 位数据总线。我想大多数人会认为该芯片仍然是 32 位处理器,而不是 16 位处理器。
【讨论】:
我想我会去的。传统上,我认为“大小”是指寄存器集中的宽度(位数)。在“我的”第一台计算机上,DEC PDP-8/E 可用的单个寄存器 - 累加器 - 是 12 位宽,它是一个 12 位计算机,在 PDP-11 上,寄存器是 16 位宽,它是一个 16位计算机。 IBM 370 和 VAX 有 32 位寄存器,是 32 位计算机。
从 80386 开始,事情变得很困难。根据操作模式,它可以显示为实模式 8086、保护模式 (PM) 80286 或 PM 80386。对于使用 AMD64 或 x86-64 的 64 位处理器,您拥有上述所有内容以及 64 位下午。那么它们是什么?它应该取决于在其上运行的操作系统的基本操作模式。 Windows NT 2000、Windows XP-32、Vista-32 7-32 使处理器为 32 位。带有“64”的操作系统使处理器成为 64 位。
至于公共汽车和其他东西。 x86 处理器地址+数据上有两条物理总线,内存+i/o 有两条逻辑总线。处理器上的特殊引脚决定了操作是内存还是 i/o,读还是写等等。在 8086/8088 上,数据和地址总线与 D0-D15/A0-A7 和 D0-D7 共享相同的引脚 A0-A15,其中位 A16-A19/A8-A19 是严格地址。在 80286 上它们是分开的,不确定 80186/80188。在 80286 上有 24 条地址线和 16 条数据线。在 80386 和 80486 上,地址和数据各有 32 个。 80386SX 的外部配置与 80286 相同。
在这之后总线变得复杂。处理器在内部运行得如此之快,以至于它们或多或少地不断等待它们的缓存,而这些缓存又或多或少地不断地等待外部 RAM。为了满足高速缓存对数据的贪得无厌的需求,外部存储器开始以 64 位宽的块的形式提供数据,从 Pentium 和 Pentium MMX 开始,它们都是具有 32 个地址线但具有 64 个数据线的 32 位处理器。
使用后来的处理器,地址线的数量增加到 36 条,允许总可寻址外部存储器为 64 GB。处理器内部保持 32 位。
在多核处理器上,对数据的渴望更加明显,因此它们可能有几组地址和数据总线,以方便将数据塞进处理器。台式机处理器可能有两个或三个,服务器处理器可能有三到四个。我不确定,但我相信有些人已经切换到 128 位宽的数据总线。
对于现代 64 位处理器,同时拥有 64 条地址线是不可行的,因为这将允许高达 160 亿千兆字节的内存,而这在今天是不可能的。一些主板允许 128 GB,这意味着处理器至少需要 37 个地址线。
如您所见,地址和数据总线不再真正可用于确定处理器大小。他们实际上在过去 25 年(80386 模式)中没有。
在 C 中,int 类型应该等同于寄存器宽度。在 AMD64 上,这并不是因为对 64 位整数的需求不是很大:在大多数情况下,32 位整数就很好。 AMD64 上 C 中的指针宽度是 64 位。
【讨论】:
通常这是指 CPU 可寻址的内存 (2^n) 字节的数量。通常它与数据总线相同,但硬件可能会进行多次访问以检索该数量,因此不能 100% 保证。有时它也对应于 CPU 寄存器大小,但也可能不同。
【讨论】: