gpt4 book ai didi

mips - 'alignment of memory operands' 如何帮助 MIPS 流水线化?

转载 作者:行者123 更新时间:2023-12-04 14:58:41 24 4
gpt4 key购买 nike

“内存操作数对齐”如何帮助 MIPS 流水线化?

书中说:

Fourth, as discussed in Chapter 2, operands must be aligned in memory. Hence, we need not worry about a single data transfer instruction requiring two data memory accesses; the requested data can be transferred between processor and memory in a single pipeline stage.



我想我明白一个数据传输指令不需要两个或多个数据内存访问。
但是,我不确定它与内存操作数的对齐有什么关系。

提前致谢!

最佳答案

lw指令要求内存地址是字对齐的。

因此,要访问未对齐的字,需要访问所需字相交的两个字边界并屏蔽掉必要的字节。

例如,假设您希望加载存储在地址 0x2 处的单词。 . 0x2不是字对齐的,所以你需要加载存储在 0x2 的半字以及存储在 0x4 处的半字.

为此,可以这样写:

lh  $t0 2($zero)
lh $t1 4($zero)
sll $t1 $t1 16
or $t2 $t0 $t1

如果您想加载例如存储在地址 0x3 的单词,这只会变得更加复杂。 :
# load first byte
lb $t0 3($zero)

# load second word, mask out first 3 bytes
lw $t1 4($zero)
lui $t2 0x0000FFFF
ori $t2 $t2 0xFFFFFFFF
or $t1 $t1 $t2

# combine
sll $t1 $t1 8
or $t2 $t0 $t1

因此,可以看出,字对齐的要求并没有帮助 MIPS 进行流水线化,而是访问未对齐的字需要过多的内存访问——这是 ISA 的一个限制。

关于mips - 'alignment of memory operands' 如何帮助 MIPS 流水线化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23509433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com