多发射:
- 概念:是指存在多条流水线进行指令的译码, 取指令后,可以同时发射多条指令到不同的流水线进行译码。(和执行?)
超标量:
- 超标量是一条流水线中,存在多个执行部件,可以在上一条指令没有执行完成时,执行下一条指令。 即乱序执行。可以针对没有前后顺序关系的指令进行并行执行;
- 超标量是对程序员透明的,是指令级别的并行;
- 超标量是否意味着需要多条流水线?(好像不需要,如果有,好像最好?)
- 超标量处理器内部只有一个指令指针,一套控制逻辑,也就是说,对于外界而言,在同一时刻,只能执行一段指令序列。
超线程:
- 概念:处理器可以同时执行多个指令,来自不同的线程;
- 超线程是线程级别的并行,需要程序员显示的编写超线程程序;
- Intel提出的,是指一个核心同时拥有两套寄存器、缓存,保存两个线程工作的现场。 线程之间切换几乎没有成本。可以有效的支持多线程程序。共享处理运算单元。
多线程:
- 一个处理器,一套寄存器文件,来回切换
分支预测
- 一般是基于跳转指令的历史数据统计,投机预测下一条的分支跳转情况。预测错了也没什么大不了
- 没有分支预测:遇到跳转指令,导致流水线形成泡沫(跳转指令后面管道不进行取指,译码,而是等跳转指令执行完成后在进行);
CPU 设计举例:
arm cortex M3/4: 3级流水线+分支预测
arm cortex M7: 6级 顺序 双发射 超标量流水线 +分支预测