数据结构中,地址0001包含8位,那么地址0010又是8位。
但在 RAM 存储器阵列中,每个位都有自己独特的地址。
在 RAM 中,地址 0001 指向一个存储单元,地址 0010 指向另一个存储单元。
那么如果我输入地址 0001,为什么它可以指向 8 位,而不仅仅是 1 位?
怎么字节寻址能力在这样的内存阵列中可能吗?图像
它必须采用行和列地址才能选择单个存储单元。
我不明白这里如何实现字节寻址。
答案1
数据结构中,地址0001包含8位,那么地址0010又是8位。
“数据结构“通常仅存在于软件中,即编程语言中,并且通常不受硬件支持。“数据结构“将通过符号名称而不是数字地址(某些未指定的基数)来引用。
代替 ”数据结构“你真的是指大批,它将通过数值进行索引?但数组不一定只包含字节。您可以定义一个 32 位有符号整数数组。
无论您试图举什么例子或提出什么观点都没有意义。
但在 RAM 存储器阵列中,每个位都有自己独特的地址。
这是不正确的说法。RAM
地址引用的数据大小取决于硬件系统或 CPU 架构。由于我在 20 世纪 70 年代曾编写过具有 16 位字和非易失性铁氧体磁芯 RAM 的小型计算机,因此我不认为 RAM 是字节可寻址的,也不认为 RAM 是易失性的(这在现代计算机中几乎是普遍存在的两个属性)。
在 RAM 中,地址 0001 指向一个存储单元,地址 0010 指向另一个存储单元。
首先,这些基数是什么?地址“?
那么如果我输入 0001 地址,为什么它可以指向 8 位,而不仅仅是 1 位?
因为在典型的计算机中(据我所知),内存地址引用的要么是一个字(根据该 CPU 架构的定义),要么是一个字节。引用内存中每个单独位的实用性被地址空间访问尽可能多的内存的需求所压倒。
不要忽视历史的影响。
从历史上看,硬件一直很昂贵。内存地址大小通常受到快速而宽的并行地址总线的代价的限制。20 世纪 70 年代小型计算机(例如 DEC PDP-11、DG Nova、HP 2100)的 16 位字就是这种折衷的完美例子。现代、廉价的 64 位处理器的出现并不意味着内存地址将变成位地址而不是字节(或字)地址。
例如,程序计数器(CPU 的寄存器)将包含要执行的下一条指令的内存地址。这些指令可能以字对齐的方式存储在内存中。对于 CPU 执行的超过一半的内存访问(即获取指令),具有位寻址能力是没有意义的。
怎么字节寻址能力在这样的内存阵列中可能吗?图像
它必须采用行和列地址才能选择单个存储单元。
我不明白这里如何实现字节寻址。
您似乎对内存子系统接口(可能涉及向 CPU 传输 8 位、16 位、32 位、64 位或 128 位数据)与内存子系统的内部组织感到困惑。您可以尝试推断数据传输宽度,或者您需要确定/指定您正在查看的内存子系统类型,以了解如何利用或丢弃内存地址的位(加上行和列信号)来访问内存芯片/阵列。
答案2
虽然 RAM 中每个位都有自己的地址,但读写必须在字节边界上进行。
如果我没记错的话,有些处理器允许位寻址,但大多数现代处理器使用字节寻址作为增加内存大小的方法,因为你可以丢弃位寻址所需地址的低 3 位。结果是,位(= 536,870,912 字节 = 524,288 千字节 = 512 兆字节)现在您可以寻址 4,294,967,296字节= 4 千兆字节。