lea*_*ner 16 memory operating-systems
我的简单理解如下。
存储器 (RAM) 由位组成,每组 8 组构成字节,每个字节都可以寻址,因此是字节可寻址存储器。
地址总线存储一个字节的内存位置。
如果地址总线的大小为 32 位,这意味着它最多可以容纳 2 32 个数字,因此它可以引用最多 2 32个字节的内存 = 4GB 内存,任何大于此值的内存都是无用的。
数据总线用于发送要写入/读取内存的值。如果我有一个 32 位大小的数据总线,这意味着一次最多可以写入/读取 4 个字节。我发现这个大小和可能的最大内存大小之间没有关系。
但我在这里读到:
尽管大多数系统都是字节可寻址的,但处理器移动尽可能多的数据是有意义的。这是由数据总线完成的,数据总线的大小是8位系统、16位系统、32位系统、64位系统等名称的来源。当数据总线为 8 位宽时,它可以在单个内存操作中传输 8 位。当数据总线为 32 位宽时(在写入时最常见),在单个内存操作中最多可以移动 32 位。
这表示数据总线的大小决定了操作系统的名称,8 位、16 位等等。我的理解有什么问题?
Dou*_*gvj 14
在简单的设计中,数据总线的大小就是处理器寄存器的大小。对于大多数设计的第一代来说,这通常是正确的,所以最初的 16 位 CPU 有 16 位总线,32 位 CPU 有 32 位数据总线,等等。
但是,决定操作系统类型(64 对 32)的是处理器整数寄存器的大小,而不是数据总线。数据总线可能与整数寄存器不同,但您引用的作者将两者联系在一起,因为它在历史上通常是相同的。
数据总线和整数寄存器宽度不同的一些实际示例:
IBM PC 最初的 8088 是 16 位 CPU 设计,但数据总线是 8 位宽。将 16 位从 RAM 移入处理器寄存器需要两个访问周期
1992 年的 Original Pentium 具有 64 位数据总线,但采用 32 位设计。更大的数据总线允许 CPU 通过高速缓存传入和传出更多数据,但仍然只能在内部使用其 CPU 寄存器访问 32 位。
通常指针大小也遵循寄存器大小,但物理地址总线宽度可以大于或小于寄存器大小。一些例子:
现代设计还使用更复杂的总线,这些总线不能完全适应位宽范例。上面的 Opteron 示例是关于 CPU 可以根据软件物理寻址多少,实际上 CPU 可能会或可能不会暴露任何物理 48 位寻址。CPU 高度集成,并具有用于外围设备、内存和与其他 CPU 通信的专用总线。不再有单一的“数据总线”或“地址总线”。这些总线可能使用不以任何有意义的方式处理位宽的差分信号,即使它们这样做,它们也不会与 CPU 的架构寄存器强耦合。
最好认识到 CPU 的位数完全是体系结构的,而且主要只是从软件的角度来看。它不再与物理设计有太大关系。
| 归档时间: |
|
| 查看次数: |
97409 次 |
| 最近记录: |