Skip to content

Commit d8ec97d

Browse files
committed
Merge branch 'master' of https://github.com/GHScan/TechNotes
2 parents 8ce1638 + 8ff57d1 commit d8ec97d

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

2017/Memory_Model.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
- `NUMA(Non-Uniform Memory Access)`:大量的处理器通过互连网络连接在一起,每个节点访问本地存储器时延迟较短,访问其他节点有不同的延迟
2424
- `UMA(Uniform Memory Access)`:又叫`SMP(Symmetric Multiprocessor)`,所有的处理器通过总线连接在一起,访问一个共享的存储器,每个节点的存储器访问延迟相同。目前常见的桌面多核处理器就是这种结构
2525
- #### 现代处理器中的技术$^{[2]}$
26-
- `流水线(Pipeline)`:每个指令的执行需要多个步骤,线代CPU通过流水线的方式允许同时执行多个指令,从而提高功能单元的利用率和系统总吞吐。支持流水线的CPU的`IPC(Instructions Per Second)` 可以达到1,哪怕每条指令实际上需要多个时钟周期才能完成
26+
- `流水线(Pipeline)`:每个指令的执行需要多个步骤,线代CPU通过流水线的方式允许同时执行多个指令,从而提高功能单元的利用率和系统总吞吐。支持流水线的CPU的`IPC(Instructions Per Cycle)` 可以达到1,哪怕每条指令实际上需要多个时钟周期才能完成
2727
- `动态分支预测(Dynamic Branch Prediction)`:带流水线的CPU需要每个时钟发射1条指令,但只有分支指令执行结束后才能确定下条指令是什么,这就导致`流水线停顿(Pipeline Stall)`。为避免分支指令导致的流水线停顿,一种对策是分支预测,即在发射分支指令之后,马上预测下条指令的地址并发射,如果分支指令执行结束后发现预测错误,则撤销之前的操作取正确的指令重新发射。这里预测失败导致的撤销开销,叫`分支预测惩罚(Mispredict Penalty)`,由于现代系统的分支预测正确率很高,摊还后的惩罚开销往往可以接受。动态分支预测是基于分支指令历史进行的,现代CPU的预测正确率在大部分场合可以高达95%以上;相对的,静态分支预测是基于固定分支选择策略、源码中的Hint,或根据编译器的得到的Profile信息来完成的
2828
- `动态多发射(超标量,Superscalar)`:为更好的利用富裕的功能单元,CPU希望IPC能够超过1,这就要求每个时钟发射多条指令。支持超标量的处理器,需要处理同时发射的多条指令间的数据依赖关系,这个复杂性限制了动态发射窗口的大小。与之相对的是静态多发射,即由编译器或程序员往一个`发射包(Issue Packet)`中填充多条无关指令,然后同时发射和执行,典型的例子是`超长指令字(Very Long Instruction Word)`体系结构
2929
- `乱序执行(Out-of-Order Execution)`:当前面的指令由于特种类型的功能单元不足、存储器延迟或操作数没有计算出来,必须停顿时,CPU可以发射后续的无关指令,从而乱序执行。乱序指令有效的提高了CPU利用率,掩盖了各种停顿

0 commit comments

Comments
 (0)