处理器设计简介<一>

194 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天


(ISA)指令集架构是设计处理器的规范。

  • 设计现代高端微处理器的过程主要包括两个步骤:微体系结构设计和逻辑设计 计算机体系结构定义了三个抽象层次:分别是体系结构、逻辑实现和物理实现。
  1. 指令集体系结构规定了处理器的功能性行为;
  2. 逻辑实现是实现体系结构的逻辑结构和组织;
  3. 物理实现是逻辑实现的物理结构和具体表现形式。

处理器设计中最先考虑的是性能

  • 处理器性能公式:
1性能=时间程序=程序指令×周期数指令×时间周期\frac{1}{性能} = \frac{时间}{程序} = \frac{程序}{指令} \times \frac{周期数}{指令} \times \frac{时间}{周期}

其中,第一项:特定程序需要执行的动态指令的数目。(指令数
第二项,指出平均执行每一条指令需要耗费多少个时钟周期[CPI(Cycles Per Instruction)]
第三项,指每个时钟周期所需要的时间(机器的时钟周期)
程序执行时间越短,性能越好。 性能优化:最终就是减少处理器性能公式三项中的一项或者多项。

  • 减少时钟周期时间的关键在于使用流水线技术 不考虑其他因素的前提下,由于时钟频率受制于流水线中最长、最慢的那个阶段。如果把流水线阶段(尤其是耗时的阶段)拆分成更加简单的子阶段,即采用深度流水线,那么整个处理器的主频就可以运行得更高! 但在实际应用过程中,发现会引起流水线冒险等问题。
  • 结构冒险: 硬件不支持多条指令在同一个时钟周期内执行。
  • 数据保险: 在一个操作必须等待另一个操作完成之后才能进行时,这就会造成流水线停顿。
  • 控制冒险: 分支的流水线和其他指令改变程序计算器的值 如何解决数据冒险呢?
  1. 数据旁路:这是一种解决数据冒险的方法,它使用内部的数据缓存直接提供缺少的数据,而不需要等待该数据到达程序员可见的寄存器或内存才使用。
  2. 指令重排(乱序执行):
  3. 分支预测与分支延迟:这都是用来解决控制冒险的,因为需要得到分支的结果才可以进行下一步,那么在一些流水级数比较长的流水线中就会造成相当大的损失。
  • 分支预测:通过某种方式对分支的结果进行预测,那么无需等待分支结构,便可直接执行下一步【这一块需要详细说明】
  • 分支延迟:不理会分支的结果如何,对分支的两种结果都进行计算,等分支得到的结果之后再舍弃。

CPU核心设计

  1. 超标量
  • 本质特点是可以同时发射多条指令,从而克服单指令流水线每周期只能发射一条的指令的限制,并通过配置多个功能部件,增强了并行执行程序的能力,提高了吞吐率。
  • 另一个特点是乱序执行,即不按照程序给定的原始指令顺序执行。当指令由于相关性而被阻塞时可以从后续指令中找出不相关的指令进行执行。
  1. 流水线(Pipeline) 流水线是现代RISC核心的一个重要设计,它极大地提高了性能。
    对于一条具体的指令执行过程,通常可以分为五个部分:取指令、指令译码、取操作数、执行、回写。其中,前三步一般是由指令控制器完成,后两步则由运算器完成。
    按照传统方式,所有指令顺序执行,先是在指令控制器完成,完成第一条指令的前三步,然后运算器工作,完成后两步;再在指令控制器工作,完成第二条指令的前三步,再是在运算器,完成第二条指令的后两步.....这样反复,很明显就是在指令控制器工作时运算器在休息,当运算器在工作时,指令控制器却在休息,解决办法就是当指令控制器结束工作,运算器开始工作时,直接开始第二条指令操作,这样就形成了流水线系统。这是一个典型的2级流水
  • 对于一个超标量系统,假设有三个指令控制单元和两个运算单元,那么就可以完成第一条指令的取址工作后直接开始第二条指令的取址,这样当开始第三条指令取址时,此时进行第一条指令的取操作数,...这就形成了一个5级流水线。

流水线系统最大限度利用了CPU资源,使每个部件在每个时钟周期都工作,大大提高了效率。