![在现代计算机中如何访问、修改和寻址 HDDM(不是 RAM!)?](https://linux22.com/image/1374767/%E5%9C%A8%E7%8E%B0%E4%BB%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%AD%E5%A6%82%E4%BD%95%E8%AE%BF%E9%97%AE%E3%80%81%E4%BF%AE%E6%94%B9%E5%92%8C%E5%AF%BB%E5%9D%80%20HDDM%EF%BC%88%E4%B8%8D%E6%98%AF%20RAM%EF%BC%81%EF%BC%89%EF%BC%9F.png)
警告:是的,我知道维基百科的那篇文章。对我来说太难了!我希望有人能更简单地解释一下……
背景:我设计了一台 6 位计算机。它有 4kB 的 RAM 和 4kB 的 ROM(使用双地址)。两者的访问和读取方式与另一台相同:
- 12 位地址传送至解码器。
- 解码器解码应该访问哪个存储单元。
- 访问存储单元并将其内容传送至寄存器 A。
两者都受到严格限制。现在我们有了一台现代的 32 位计算机。它具有:
- 4 GB RAM。有限。
- 1 TB 的 HDDM,只需使用更大的 HDD 或更多的 HDD 即可扩展!
RAM 的一切都很清楚 - 它的读取和修改方式与我的计算机上的相同。但是我们如何访问 HDDM?
- 我们是否必须在现代计算机硬件中加入一个巨大的解码器,才能处理大量单独的存储单元?但 HDD 内存仍然应该限制在一定大小?
- 或者也许有一些微型磁盘在快速旋转,每个存储单元都发出自己的地址,而一些小型扫描仪则等待磁盘转到正确的位置进行扫描?但这种速度真的可能实现吗?
一般来说:那么我们如何才能拥有无限量的 HDDM?如何访问、读取和修改 HDDM?
额外的:SSDM 是通过解码器访问的,所以它比 HDDM 更快吗?
答案1
对于非直接寻址的设备,您不必使用固定数量的线路为它们提供特定地址,许多设备允许您发送多个字节来描述您希望它们访问的地址。存储设备通常没有连接到它们的地址线,因此实现命令总线,允许您发送一组类似于以下内容的字节:
- 第一个字节:“我想读一些东西,你收到的接下来的 6 个字节将是要读取的地址”
- 第 2 个字节:地址字节 1
- 第 3 个字节:地址字节 2
- 第 4 个字节:地址字节 3
- 第 5 个字节:地址字节 4
- 第6个字节:地址字节5
- 第7个字节:地址字节6
然后它们就会离开,过一段时间后会开始向您发送在该地址找到的数据字节。
您还可以将“一个数据块”的基本数量重新定义为单个字节以外的其他内容(如内存使用)。因此,地址 0 是 512 字节块,地址 1 是下一个 512 字节块,依此类推。
硬盘等都使用这两种方法。你需要研究的是逻辑块寻址
这仍然遇到与我们从 32 位处理器更改为 64 位处理器时遇到的问题类似的问题,旧硬件必须更换,因为它无法物理支持新的接口和寻址方案。前几代硬盘接口仅支持高达 137GiB 的存储空间和 28 位块地址,而较新的接口支持 48 位寻址,允许寻址高达 128 PiB。
控制器和从属设备都必须能够使用较新的标准进行通信,以便它们支持更大的尺寸,如果其中一个无法发送所有所需的信息,那么就需要以某种方式进行替换。