是确定“ 8位,16位,32位,64位”系统的地址总线大小还是数据总线大小?


15

我的简单理解如下。

内存(RAM)由位组成,每8位组成一个字节,每个字节都可以寻址,因此是字节可寻址存储器。

地址总线存储一个内存字节的位置。

如果地址总线的大小为32位,则意味着它最多可以容纳2 32个数字,因此可以引用最多2 32个字节的内存= 4GB内存,任何大于该数量的内存都是无用的。

数据总线用于发送要写入/读取存储器的值。如果我的数据总线大小为32位,则意味着一次最多可以将4个字节写入/读取存储器。我发现此大小与最大内存大小之间没有关系。

但我在这里读到:

即使大多数系统都是字节寻址的,对于处理器来说,也需要尽可能多地移动数据。这是通过数据总线完成的,数据总线的大小就是名称8位系统,16位系统,32位系统,64位系统等的来源。当数据总线为8位宽时,它可以在一次存储操作中传输8位。当数据总线为32位宽时(在写入时最常见),一次存储操作最多可以移动32位。

这就是说,数据总线的大小决定了OS的名称,即8bit,16bit等。我的理解有什么问题?


我的理解有什么问题? ”-您正在尝试使一个定义适合不同的事物。比特大小描述符已在不同时间用于不同事物。
木屑

1
这意味着制造商所说的一切。通常,这类似于寄存器的大小,但是有很多方法可以伪造/混淆。
Daniel R Hicks

Answers:


12

通常,数据总线的大小由处理器寄存器的大小决定。通常,处理器寄存器的大小决定了操作系统的类型(64 vs 32)。物理总线大小在技术上可能与此有所不同(以8088为例),但是它是如此罕见,以至于您引用的作者可能将两者联系在一起。

通常,指针大小也跟随寄存器大小,但是物理地址总线宽度可以更大(例如8086 16位为20)或更小(例如AMD 64为48)。


2
物理地址总线宽度可以更大 ”-特别是对于4位和8位处理器!
木屑

好的。但是我试图简单地理解它。我找不到数据总线的大小和最大可能的内存之间的关系,就像我可以用地址总线的大小来解释。因此答案似乎是“不是地址总线大小而是数据总线大小”(因为它通常和处理器寄存器一样大)。我想念什么吗?
学习者2012年

@learner没错,混乱还在于系统的最大指针大小就是处理器寄存器的大小。与大多数现代系统一样,在平坦的地址空间中,它受到处理器寄存器大小的限制,因此,正如您所指出的,寻址限制。一些处理器,特别是较旧的处理器,利用特殊的分段寻址等技巧来解决此问题。
Dougvj 2012年

@Dougvj,好吧,它越来越清晰了。但是为什么它们使地址总线的大小不同于处理器寄存器的大小?保持它们不变会更有意义吗?我对地址存放在哪里感到困惑?(地址总线还是处理器寄存器?)谢谢
学习者

1
@learner是的。总结一下:OS名称与处理器寄存器的大小完全对应。地址总线的大小可能与处理器寄存器的大小相同,也可能不同,因此,最大可能的可寻址RAM与此无关。但是,处理器内部几乎总是具有某种寻址方案,其中包含与处理器寄存器大小相同的指针。
Dougvj

1

它是处理器中的寄存器大小和内存处理。

使用技巧,一个16位处理器具有20位地址总线,因此它不是处理器外部的存储器。


1

没有“纯”的32或64位系统,因此无论如何这些术语只是近似值。

例如,您声明“内存(RAM)由位组成,每8位组成一个字节,每个字节都可以寻址”。这不是很常见。PC在DIMM模块上具有其RAM,并且它们的宽度为64位。上世纪90年代,您拥有SIMM,它们的宽度为32位。

在某些系统中,DIMM必须或可以配对(“成组” /“双通道”),这将是128位数据总线。这个概念早于AMD和Intel所谓的“ 64位”处理器。

单个DIMM中的那组64位确实可以细分为8个字节。CPU透明地做到了这一点。它也可以将64位分解为4 * 16位,2 * 32位,或仅将所有64位用作单个变量。

但是,最重要的问题是地址的宽度。存储器中的每个字节都有其自己的地址,但不是每个位。这意味着从单个DIMM获得的64位具有8个地址。其中最低的总是8的倍数:现在,CPU支持多少个不同的地址?至少在理论上有两个常见答案。一些CPU支持2 32个不同的地址,一些支持2 64个。这种区别是32位和64位系统之间最常见的区别。

实际上,当今的64位系统支持少于2 64个字节的RAM。那将是无法承受的,而且无论如何也无法在普通PC中使用。这么大的内存将重达数百万吨!


是保留地址的处理器寄存器,还是地址总线?您说“某些CPU支持2 ^ 32个不同的地址...”。他们到底受到什么限制?
学习者2012年

通常,寄存器大小和MMU(内存管理单元,CPU的直接负责内存的部分)都是如此。
MSalters 2012年

0

两者实际上。

CPU上的位通常是对其内部寄存器大小的引用。一个32位CPU具有32位寄存器,该寄存器可能会或可能不会分成块。

使用32位CPU和32位数据总线是有意义的,因为您可以将所有数据从内存直接传输到寄存器,但是可以具有任何数据总线大小。因此,32位CPU通常具有32位数据总线,以便轻松地与之进行数据传输。

并且出于两个原因,拥有32位地址总线也很有意义。较大的地址总线会更难进行间接寻址,因为您没有足够大的寄存器来存储内存地址,或者CPU需要专门的寄存器来进行内存寻址,请注意,像Intel 8080这样的旧CPU是8位的,并且具有16位地址总线。相反,比寄存器小的地址总线只是浪费资源。有些微控制器使用较小的地址总线。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.