Memory 当32位机器可以访问最多4GB的RAM时,它如何访问150GB的HDD

Memory 当32位机器可以访问最多4GB的RAM时,它如何访问150GB的HDD,memory,memory-management,Memory,Memory Management,我知道32位机器可以访问的内存大小限制为4GB。由于还必须处理PCIe、USB、串行、并行、PS/2、音频I/O、CD驱动器、软盘驱动器、读卡器e.t.c等I/O端口,因此CPU本身支持的RAM小于4GB。我刚才提到的所有事情和其他事情也占用了相当多的记忆 现在我感到困惑的是,它如何能够支持几GB的硬盘空间?如何通过这些SATA/ATA接口访问高达1 TB的外部存储。USB大容量存储设备(如外部USB硬盘)也是如此,我很惊讶CPU可以访问如此大的存储空间,而存储空间仅限于32位。32位处理器支持

我知道32位机器可以访问的内存大小限制为4GB。由于还必须处理PCIe、USB、串行、并行、PS/2、音频I/O、CD驱动器、软盘驱动器、读卡器e.t.c等I/O端口,因此CPU本身支持的RAM小于4GB。我刚才提到的所有事情和其他事情也占用了相当多的记忆


现在我感到困惑的是,它如何能够支持几GB的硬盘空间?如何通过这些SATA/ATA接口访问高达1 TB的外部存储。USB大容量存储设备(如外部USB硬盘)也是如此,我很惊讶CPU可以访问如此大的存储空间,而存储空间仅限于32位。32位处理器支持多大的HDD没有限制吗?

因为现在大多数应用程序开发人员更喜欢处理64位文件指针。例如,对于linux或Windows,从文件的角度来看,您可以处理2^64个单个文件

但从硬件层面来看,这更有趣,因为每个磁盘都是分开的(在集群上的逻辑单元中,在扇区上的磁盘单元中)。每个集群都有许多字节,可以通过单个查询寻址和读取。操作系统对您隐藏这些操作。但就集群而言,TB更容易处理

不确定从哪里开始:-)

这是一个非常简单的解释,自286年以来并不完全正确,但可能有助于您掌握基本概念:

内存寻址通过地址总线完成:32位地址总线可以表示2^32个不同的地址。在一次操作中可操作的最小内存量称为“字”大小,它受到数据总线宽度的限制

可寻址内存的最大容量是字大小乘以地址数

在“块IO”操作中,字大小的等价物是块大小,通常要大得多。这是一个折衷方案:可以使用相同的地址长度访问较大的数据,但翻转单个位需要覆盖整个块

更大的区别在于,地址不需要同时出现在“地址总线”上,就像内存中一样:命令(和响应)以顺序“包”的形式传输,就像在网络上一样。因此,对地址大小没有硬件限制,尽管我确信协议指定了一个合理的上限


如您所见,可寻址磁盘大小与CPU总线宽度和寄存器大小完全无关。

32位处理器可以处理比32位大得多的数字(例如使用“带进位添加”指令)。处理器可以将较大的地址值写入I/O控制器的地址寄存器(例如,使用多个32位数据存储指令)。由于这种间接寻址,磁盘I/O地址独立于处理器总线地址。

这可能属于其他地方;也许吧?和的副本。好问题,不过有点离题。