前置知识
指令流水线与分支预测
指令流水线(英语:Instruction pipeline)是为了让计算机和其它数字电子设备能够加速指令的通过速度(单位时间内被执行的指令数量)而设计的技术。
流水线在处理器的内部被组织成层级,各个层级的流水线能半独立地单独运作。每一个层级都被管理并且链接到一条“链”,因而每个层级的输出被送到其它层级直至任务完成。
上述说的流水线级数在此图上为4。
条件分支指令通常具有两路后续执行分支。即不采取(not taken)跳转,顺序执行后面紧挨JMP的指令;以及采取(taken)跳转到另一块程序内存去执行那里的指令。是否条件跳转,只有在该分支指令在指令流水线中通过了执行阶段(execution stage)才能确定下来。
如果后来发现分支预测错误,那么流水线中推测执行的那些中间结果全部放弃,重新获取正确的分支路线上的指令开始执行。在分支预测失败时浪费的时间是从取指令到执行完指令(但还没有写回结果)的流水线的级数。
分支预测不同于“分支目标预测”(Branch target predictor)。后者是指对指令高速缓存中的内容,检测出其中的条件跳转指令与无条件跳转指令,然后为指令高速缓存预装入(prefetch)相应的跳转目标代码块。
即分支预测投机的指令是真正会执行的。
TMA基本概念
-
TMA是什么?
Top-down Microarchitecture Analysis,是对CPU性能瓶颈进行分析和优化的方法论。
-
Top-down是基于事件指标的层次组织。
从上图可以初步窥见,所谓事件是像缓存未命中事件、分支预测失败等影响CPU性能的事情。 -
这套方法论计算基于流水线资源利用率。
-