Dskpimc? · 2023年08月18日 · 北京市

芯片工程师求职题目之CPU篇(2)

1. CPU架构中流水线的概念?

CPU流水线(pipelining)是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令。

采用流水线技术后,并没有加速单条指令的执行,每条指令的操作步骤一个也不能少,只是多条指令的不同操作步骤同时执行,因而从总体上看加快了指令流速度,缩短了程序执行时间。

例如:一条指令的生命周期可以分为五个阶段:读取、解码、执行、访问内存和回写。这允许CPU并行处理多个指令。

2. 什么是流水线冲突(pipeline hazard)?在CPU的pipeline设计中有哪些不同类型的hazard?

Pipeline hazard是指由于某种原因程序中的下一条指令不能执行的情况。在pipeline中发生hazard有3种类型:

  • Structural Hazards(结构冲突):这些冲突是由于资源冲突导致无法重叠执行而产生的。例如:如果设计有一个浮点执行单元,如果每次执行需要2个时钟周期,那么程序中背靠背的浮点指令将导致结构冲突。另一种可能发生结构冲突的资源是memory/cache访问。
  • Data Hazards(数据冲突):当一条指令以pipeline重叠执行的方式依赖于前一个指令的结果时,就有数据冲突了。有三种类型:

    • 写后读(RAW):如果一条指令需要一个由前一条写指令写入的源,则会发生这种情况;
    • 写后写(WAW):如果一条指令写入的寄存器也被前一条指令写入,就会发生这种情况;
    • 读后写(WAR):如果一条指令写入一个寄存器,该寄存器是前一条读指令的源,则会发还是呢个这种情况;
  • Control Hazards(控制冲突):这些冲突是由于分支和跳转指令改变了程序执行的顺序而产生的。

3. 怎么避免pipeline中的三种hazard(结构、数据、控制)呢?

以下是用于避免每种pipeline hazard的一些技术:

  • 结构冲突:a) 复制资源以实现并行执行,分离指令和数据cache,为整数和浮点操作提供多个计算单元,分离load和store单元等。
  • 数据冲突:a) 乱序执行,当依赖指令被堵塞时,其它不依赖指令可以提前执行;b) 数据转发,对于RAW冲突,一条指令的写入可以提前转发到下一条相关指令,以消除冲突。
  • 控制冲突:a) 使用分支预测算法对分支结果进行预测,以便在分支之后获取正确的指令集。

4. 一条指令有哪些类型的寻址模式?

以下是一些最常用的执行寻址模式(尽管某些架构也可能支持其它几种模式):

  • 立即数模式:在这种模式下,操作数作为常量是指令本身的一部分,例如,add r0 r1 0x12 (将常量0x12和r1相加,并将结果放到r0)
  • 直接寻址模式:在这种模式下,操作数的地址直接在指令中指定。例如,load r0 0x10000 (从地址0x10000处读取数据到r0寄存器)
  • 寄存器寻址模式:在这种模式下,操作数被放在寄存器中,寄存器名是指令中直接指定的一部分。例如:mul r0, r1, r2 (r1和r2的内容相乘,并将结果放在r0)
  • 基址寻址模式:在这种模式下,将索引寄存器的内容加上偏移量(偏移量是指令的一部分)以获得有效地址。例如,load r0 r1 offset (这里r1包含基址,”r1+偏移量”将给出一个内存位置的地址,从这个内存位置读取数据并将其存储到r0)

5. 程序访问的时间和空间局部性原理是什么?

程序访问的局部性原理包括时间局部性(Temporal Locality)和空间局部性(Spatial Locality)。

  • 空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的;
  • 时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息;

高速缓冲技术是利用程序访问的局部性原理,把程序中正在使用的部分存放在一个高速的、容量较小的Cache中,使CPU的访存操作大多数针对Cache进行,从而大大提高程序的执行速度

6. 假如1个CPU的pipeline有10级,每一级(stage)都需要需要消耗1ns,且没有任何hazard,每条指令都会经过pipeline的每一级,那么这个CPU处理100条指令所需要的时间是多少?

pipeline的每级需要1ns时间,由于有10级,那么第一条指令需要10*1ns才能从pipeline上出来,这时候pipeline将是满的,剩余的99条指令的每条只占用1ns。因此总耗时为:(10+99)ns = 109ns。

作者:谷公子
文章来源:CSDN

推荐阅读

更多IC设计干货请关注IC设计专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
11572
内容数
1229
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息