文章目录
- Part1. 处理器架构,以及流水线的实现方法
- part2 DLX架构
- part3 ULTRA SPARC T2架构
- part4 PENTIUM 4架构
- part5 不同架构之间的性能比较
PPT:2,4,5,6
这一章主要对之前的计算机架构一些知识进行复习,因为目前的处理器架构大多都是流水线,因此对流水线的构成,计算机处理器基本架构和一些设计中需要注意的问题进行了比较详细的复习。同时也简单介绍了几种典型的处理器的大致结构:DLX(MIPS), ULTRA SPARC T2(RISC), PENTIUM 4(CISC)
Part1. 处理器架构,以及流水线的实现方法
这里的处理器实际上是指处理器核,一般来说市面上广义所说的“处理器”是指为当前的处理器核配置了外设SoC。这个SoC的主要组成结构如fig1所示:
这里拿DLX处理器来举例,这是一个最基本的RISC架构处理器,在实际的工业生产中没有流片,但是能实现基本的一些RISC指令操作并且也具有处理器中最基本的结构。其data path实现了MIPS处理器中的5级流水线即:IF, ID, EXE, MEM, WB。在流水线运行的过程中主要有3类hazard:structure hazard, data hazard, control hazard.
- structure hazard :由于处理器的结构资源引起的冲突,比如说memory hazard。当data和instruction在同一个memory中时由于IF和MEM阶段都要对memory进行操作但是无法同时访问将会引起这类冲突。这种冲突直接多用一些资源就可以解决。
- data hazard:在顺序执行的过程中register或者memory中的数据会由于前后指令数据之间的dependence导致WAR,RAR,RAW三种问题。主要有三种解决方式:第一种是将EXE stage中的结果不通过后面的stage由EXE寄存器输出直接发送到ALU的输入上。如果是在MEM阶段数据冲突则需要从MEM的输出寄存器中直接发送到ALU;第二种解决方法是register renaming,这种方法解决的是寄存器或者memory由于前后数据不相关,但是使用同一个存储空间的情况。这种情况通常是在数据失效之前就对存储空间内的值进行操作导致的问题,解决方法简而言之就是让这两条指令不共用同一个寄存器,这通常是由编译器处理的。第三种方法就是使用乱序流水线,在数据结果确认之前乱序可以消除数据之间的相互依赖,只需要在确认结果的时候将数据前后写入和读取的顺序调整好即可。
- control hazard:由于转跳指令没办法准确预测到即将转跳的PC地址而导致的流水线暂停。这一般来说是无法完全避免的。但是可以有优化的空间,即使用分支预测技术。当预测的结果和实际结果一致的时候就不需要暂停流水线。
在单流水线的基础上,我们可以进行改进使得处理器在一个周期内处理的事情更多,即超标量流水线(superscalar)技术和多发射流水线(multi-issue)技术。这两个描述的是data path上不同的部分,超标量是指流水线本身在处理器中不只一条。而多发射是指流水线在IF stage一次性发送给instruction decoder多条指令。
part2 DLX架构
这是一个最基本的5级流水线架构,Data path如图fig2所示。
part3 ULTRA SPARC T2架构
T2架构是一个多核架构,总共有8个内核(运行时可以同时运行8个线程),每一个内核在运行时对应了不同的instruction cache(即instruction memory)。同时对于单核下其有两个EXE unit也是超标量流水线,与此同时在IF阶段每次分别选择两个instruction buffer中的两条指令中的两个发送到decoder中解析。
part4 PENTIUM 4架构
这是一个CISC架构的芯片,正如之前所述,其本质是一个超标量的RISC基础上套上一个解析器,将执行的microinstruction(
μ
\mu
μops)翻译为多条RISC指令。此外其还是一个乱序执行的处理器。处理器的执行主要包括以下几个模块如fig3所示
part5 不同架构之间的性能比较
目前的市场上Arm和x86架构是嵌入式设备的主流,其中x86更加倾向高性能处理器的设计,而Arm则倾向低功耗处理器。
对于基于MIPS架构的芯片目前在军工或者航天航空这类行业中中使用得更多,在民用小型嵌入式设备上基本上已经销声匿迹。以上这些”架构“说的并不是单单指一个ISA,而是指包括ISA以外的处理器IP,从而才有了性能上比较的标准,就上述所说的Arm架构,其使用的指令集实际上是名称为Thumb和Thumb-2,这两个指令集属于RISC指令集的范畴,而上面提到的Arm架构则是指的一些处理器的实现方式,例如Cortex-MX, ArmX等等。当前越发受欢迎的是RISCV架构,主要原因是指令集的开源生态。目前在网上已经有很多实现的开源架构并且其中的一些已经流片实现了商用。