字可寻址和字节可寻址之间的区别

leo*_*eon 21 memory operating-system cpu-architecture

有人能解释一下有什么不同WordByte可寻址的吗?它与内存大小等有什么关系?

Kaw*_*iKx 30

内存单元可寻址的.这是我们使用内存的唯一方法.

实际上,内存只能是字节可寻址的.它的意思是:

  • 一个二进制地址总是指向a single 字节而已.
  • 一个只是a group of 字节 - ,,2 取决于数据总线的CPU.48size of

要了解内存操作完全,你必须熟悉各种寄存器中的CPU内存端口中的RAM.我猜你知道它们的含义:


  • MAR(内存地址寄存器)
  • MDR(内存数据寄存器)
  • PC(程序计数器寄存器)
  • MBR(内存缓冲寄存器)

RAMtwo各种内存端口:

  1. 32-bits用于数据/地址
  2. 8-bit用于OPCODE.

假设CPU想要从地址开始读取a (比如4 字节).CPU会把地址上的MAR,发送存储器读出信号存储器控制器芯片.在接收到地址读取信号时,存储器控制器数据总线连接到端口,并且从地址开始将流出端口MDR. xyz32-bit 4 bytes xyz

如果CPU要读取下一指令,它会把地址PC寄存器并发送获取的信号存储控制器.在接收到地址和取信号,存储器控制器将连接数据总线8比特端口a single字节长的 操作码位于所述地址接收的将流出的RAMCPUMDR.

这就是当我们说某个寄存器存储器可寻址字节可寻址时的含义.现在会发生什么,当你把,说decimal 2binaryMAR有意向读 2,而不是(字节没有2)?

Word中没有2表示字节 4,5,6,732-bit机.在实际物理内存中只能进行字节寻址.所以有一个处理字寻址的技巧.

MAR放置在地址总线上时,其32-bits不会映射到32 地址线(0-31分别).相反,MAR bit 0连接到地址总线 line 2,MAR bit 1连接到地址总线 line 3等等.上2 bitsMAR被丢弃,因为他们只需要字地址上面2^32没有一个是合法的我们的32 bit机器.
使用这种映射,当MAR1,address 4被放在总线上,当MAR2,address 8被放在总线上等等.

一开始理解起来有点困难.我是从Andrew Tanenbaums结构化计算机组织中学到的.


小智 5

该图像应易于理解:http : //i.stack.imgur.com/rpB7N.png

简单的说,

•在字节寻址方案中,第一个字从地址0开始,第二个字从地址4开始。

•在字寻址方案中,第一个字的所有字节位于地址0中,而第二个字的所有字节位于地址1中。

当我们考虑一次处理一个字节的数据的应用程序时,字节寻址能力的优势显而易见。在可字节寻址的系统中访问单个字节仅需要发布单个地址。在16位字可寻址系统中,必须首先计算包含字节的字的地址,获取该字,然后从两字节字中提取字节。尽管已经很好地理解了字节提取的过程,但是它们的效率比直接访问字节要低。因此,许多现代机器都是字节可寻址的。