【问题标题】:When 32 bit machine can access max of 4GB RAM, how does it access 150GB of HDD [closed]当 32 位机器可以访问最大 4GB RAM 时,它如何访问 150GB 的 HDD [关闭]
【发布时间】:2013-04-27 17:41:21
【问题描述】:

我了解 32 位机器可以访问的内存大小限制为 4GB。由于还必须处理诸如 PCIe、USB、串行、并行、PS/2、音频 I/O、CD 驱动器、软盘驱动器、存储卡读卡器等 I/O 端口,结果是少于CPU 本身支持 4GB RAM。我刚才提到的所有事情以及其他事情也需要相当多的记忆。

现在我很困惑的是它怎么能支持几GB的硬盘空间?它如何通过这些 SATA/ATA 接口访问甚至高达 1 TB 的外部存储。外置USB硬盘等USB大容量存储设备也是如此,我很惊讶CPU可以访问这么大的存储空间,同时限制为32位。 32位处理器能支持多大的硬盘没有限制吗?

【问题讨论】:

  • 这可能属于别处; superuser 也许?
  • thisthis 的副本。好问题,虽然有点离题。

标签: memory memory-management


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    不知道从哪里开始 :-)

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

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

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

    在“block IO”操作中,相当于word size的就是block size,通常要大得多。这是一个权衡:可以使用相同的地址长度访问更大的数据,但翻转单个位需要覆盖整个块。

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 2013-03-25
        • 2017-02-03
        • 2013-06-21
        • 2021-12-30
        • 1970-01-01
        • 2013-03-19
        相关资源
        最近更新 更多