短语 "hit-under-miss" 中的 "under" 是什么意思?
What's the meaning of "under" in phrase "hit-under-miss"?
ARM website 包含对称为“HUM”(未命中)的功能的解释。
“under”好像可以理解为“after”或“follow”,意思是前面的访问是miss,后面的访问是hit。这种理解是否正确?如果,我想知道使用“under”这个词是否有特殊的上下文(即使用空间关系而不是时间关系)。
在这种情况下,“under”一词的意思可能是“期间”,如“在(在这种情况下)从之前的失误中恢复过来时被击中”。
目的是让 load/store 单元在等待 linefill(从可缓存内存传输到缓存)从之前的未命中中恢复时继续自由访问内存。在没有后续未命中的情况下无需停顿:
hit hit miss linefill -------> carry-on
hit hit hit hit >
但是,如果在行填充处于活动状态时发生未命中,则会发生停顿 。那时,在第一个行填充完成之前不会发生进一步的操作,此时停顿将“un-stall”并发出另一个行填充。
hit hit miss linefill ----------------> carry-on
hit hit miss/stall linefill ---> carry on
hit hit hit >
也许更图形化的查看方式是在下面的简化框图中:
+--- linefill <-----+
| (via amba) |
V |
+--------+ +-----------------+
+-> | dcache | .... | cachable memory |
+-----------------+ | +--------+ +-----------------+
| load/store unit | <-+
+-----------------+ | +---------------------+
+-> | non-cachable memory |
+---------------------+
一旦行填充开始,如果 load/store 单元只读取:
,则没有停顿
- 已在 dcache 中的可缓存内存;或
- non-cachable内存。
在 ARMv6
之前,如果 cache-miss 发生,整个管道就会停止。
HUM 表示独立指令继续执行,即使 cache-miss 发生。
1:
ldr r0, [r10], #4
lsl r1, r1, #2
subs r9, r9, #1
add r1, r0, r1
bgt 1b
无 HUM:下一条指令 lsl
被执行 AFTER cache-miss 惩罚(数十个周期)
嗡嗡声:第一个 dependent 指令add
必须等待。先前的指令 lsl
和 subs
无论如何都会执行。
ARM website 包含对称为“HUM”(未命中)的功能的解释。
“under”好像可以理解为“after”或“follow”,意思是前面的访问是miss,后面的访问是hit。这种理解是否正确?如果,我想知道使用“under”这个词是否有特殊的上下文(即使用空间关系而不是时间关系)。
在这种情况下,“under”一词的意思可能是“期间”,如“在(在这种情况下)从之前的失误中恢复过来时被击中”。
目的是让 load/store 单元在等待 linefill(从可缓存内存传输到缓存)从之前的未命中中恢复时继续自由访问内存。在没有后续未命中的情况下无需停顿:
hit hit miss linefill -------> carry-on
hit hit hit hit >
但是,如果在行填充处于活动状态时发生未命中,则会发生停顿 。那时,在第一个行填充完成之前不会发生进一步的操作,此时停顿将“un-stall”并发出另一个行填充。
hit hit miss linefill ----------------> carry-on
hit hit miss/stall linefill ---> carry on
hit hit hit >
也许更图形化的查看方式是在下面的简化框图中:
+--- linefill <-----+
| (via amba) |
V |
+--------+ +-----------------+
+-> | dcache | .... | cachable memory |
+-----------------+ | +--------+ +-----------------+
| load/store unit | <-+
+-----------------+ | +---------------------+
+-> | non-cachable memory |
+---------------------+
一旦行填充开始,如果 load/store 单元只读取:
,则没有停顿- 已在 dcache 中的可缓存内存;或
- non-cachable内存。
在 ARMv6
之前,如果 cache-miss 发生,整个管道就会停止。
HUM 表示独立指令继续执行,即使 cache-miss 发生。
1:
ldr r0, [r10], #4
lsl r1, r1, #2
subs r9, r9, #1
add r1, r0, r1
bgt 1b
无 HUM:下一条指令 lsl
被执行 AFTER cache-miss 惩罚(数十个周期)
嗡嗡声:第一个 dependent 指令add
必须等待。先前的指令 lsl
和 subs
无论如何都会执行。