【问题标题】:Word alignment works only in case of byte addressable memory?字对齐仅在字节可寻址存储器的情况下有效?
【发布时间】:2022-01-13 10:27:27
【问题描述】:

这里有个词对齐的定义

如果字的起始字节地址是字中字节数的倍数,则称它们在内存中对齐。 https://educatech.in/word-alignment/

但是如果我没有字节可寻址的内存怎么办?

事实上,词对齐的确切一般定义是什么?我们是否只在字节可寻址内存的情况下讨论字对齐?

如果我有 N 位可寻址内存和 B 位字长,那么对齐是什么?

【问题讨论】:

  • 为此,您可以将byte 视为最小可寻址单元,不一定是8 位。
  • 最小可寻址单元等于 N ?
  • 是的,没错。

标签: assembly memory cpu-architecture terminology memory-alignment


【解决方案1】:

字可寻址内存使未对齐的字访问成为不可能,因为除了整个字的开头之外,实际上没有任何地址。地址没有低位为 0。就像字节寻址机器上的字节访问一样。

(就字节可寻址内存而言,您可能会认为那些字内字节位在字可寻址机器上隐含为零。但通常我们说它们根本不存在,所以地址仍然是字大小的,比如 32 位而不是 32+2 之类的。)

具有加载对/存储对指令的字可寻址机器或其他类似 SIMD 的机器可以通过单个指令访问多个字可能具有(错误)对齐的概念,因为与具有 2 字节字的字节寻址机器相同的原因。


在仅支持单字访问大小的字可寻址机器上,您可以说对齐的整个概念无关紧要或不存在。 (我认为,早期的计算机就是这样的;直到后来,对齐才成为现实。)

或者您可以说(例如,如果为现代 DSP 或其他东西设计缓存、加载/存储单元或总线接口)选择使机器字可寻址意味着您不必处理 不对齐或字节访问的可能性,简化了设计。

【讨论】:

  • 我不明白?如果内存是字寻址的,那么每个地址都是字对齐的!
  • @JeanDujardin:是的,没错,这就是我的回答。
  • 但是在问题中我并没有问到字可寻址存储器的情况,而是在N位可寻址的情况下(其中N并不总是8位的字节)
  • @JeanDujardin:然后正如 500 - Internal Server Error 所评论的,您的“N 位可寻址内存”是您的字节大小。如果您的字长不是它的倍数,那就太奇怪了,我认为这种情况下没有正常的对齐定义,除非机器具有 LCM(字节位,字位)的加载/存储一次读/写多个单词。 (顺便说一句,不要说 B 位词,这是最糟糕的字母,因为您希望 B 表示字节。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 2018-07-27
  • 1970-01-01
  • 2011-02-13
  • 2019-11-05
  • 1970-01-01
相关资源
最近更新 更多