芯片工程师求职题目之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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/53783.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

servlet生命周期和初始化参数传递

servlet生命周期和初始化参数传递 1、servlet生命周期 只有第一次访问才会初始化,之后访问都只执行service中的。 除非tomcat关闭重新启动: 2、初始化参数传递

了解 spring MVC + 使用spring MVC - springboot

前言 本篇介绍什么是spring MVC ,如何使用spring MVC,了解如何连接客户端与后端,如何从前端获取各种参数;如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录 前言1. 什么…

JSP--Java的服务器页面

jsp是什么? jsp的全称是Java server pages,翻译过来就是java的服务器页面。 jsp有什么作用? jsp的主要作用是代替Servlet程序回传html页面的数据,因为Servlet程序回传html页面数据是一件非常繁琐的事情,开发成本和维护成本都非常高…

【计算机网络】NAT技术

文章目录 1. NAT技术简介2. 使用NAT技术转换IP的过程3. NAPT4. NAT技术的缺陷5. NAT和代理服务器 1. NAT技术简介 NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效避免外…

《Java-SE-第二十九章》之Synchronized原理与JUC常用类

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…

通话降噪算法在手机和IOT设备上的应用和挑战

随着电子产品的升级换代,用户对通话质量的要求也越来越高。通话降噪算法对通话质量起到了关键核心的作用。计算资源的提升使得深度学习模型在便携式的低功耗芯片上面跑起来了,器件成本降低让IoT设备开始使用骨导传感器,,那怎么样才…

k8s基础

k8s基础 一、k8s组件 K8S 有 master 和 worker node 两类节点 master节点上有 apiserver controller-manager scheduler 以及使用 etcd 做 k8s 集群的数据库 node节点上有 kubelet kube-proxy 容器引擎/容器运行时(docker、containerd)二、k8s组件…

电动汽车设计、制造、研发的学科、技术和前沿科技综述

引言:电动汽车作为替代传统燃油汽车的一种先进交通工具,不仅具有环保、低噪音等优势,而且对于能源消耗和气候变化等全球性问题也具有重要意义。本文将综述与电动汽车设计、制造、研发相关的学科、技术和前沿科技,以期对电动汽车领…

Linux操作系统~Linux基础知识相关题

整卷阅览: 想要获取试卷原版请点击以下链接下载: https://download.csdn.net/download/qq_53142796/88168132https://download.csdn.net/download/qq_53142796/88168132 解题过程: 选择题(每小题2分,共30分&#xff…

网络安全(秋招)如何拿到offer?(含面试题)

以下为网络安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作。 注:本套面试题,已整理成pdf文档,但内容还在持续更新中,因为无论如何都不可能覆盖所有的面试问题&#xf…

PCIE链路信息

目录 简介: 目的: 详情: 简介: PCIe有很多寄存器,也有很多控制,包括链路状态信息,上一节我们讲到了PCie的链路训练,这节文章将继续学习PCIe相关知识。 目的: 从设计…

浅谈新电改背景下电网企业综合能源服务商业模式研究及发展方向

安科瑞 华楠 摘要: 新电改方案实施后,由于输配电价的改革和售电侧的放开,电网企业的盈利模式也随之发生了变化。这就要求电网企业转变服务理念与经营方式,来寻求竞争优势。基于“魏朱六要素商业模式”模型,对电网企业综合能源服务…