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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java问题排查工具Arthas安装教程

Java问题排查工具Arthas入门教程 什么是阿里Arthas? 在生产环境经常遇到大量的日志,同时还有一些性能问题,需要进行进程分析,排查,有时候确实比较花时间,所以可以借助一些开源的框架来实现,Art…

深入学习 Redis - 谈谈你对 Redis 的 RDB、AOF、混合持久化的了解吧?

目录 一、Redis 是怎么存储数据的? 二、Redis 具体是按照什么样的策略来实现持久化的? 2.1、RDB(Redis Database) 2.1.1、触发机制 2.1.2、bgsave 命令处理流程 2.1.3、RDB 文件的处理 2.1.4、演示效果 1)手动执…

2023华数杯数学建模A题思路 - 隔热材料的结构优化控制研究

# 1 赛题 A 题 隔热材料的结构优化控制研究 新型隔热材料 A 具有优良的隔热特性,在航天、军工、石化、建筑、交通等 高科技领域中有着广泛的应用。 目前,由单根隔热材料 A 纤维编织成的织物,其热导率可以直接测出;但是 单根隔热…

Multimodal Learning with Transformer: A Survey

Transformer多模态学习 Abstract1 INTRODUCTION2 BACKGROUND2.1 Multimodal Learning (MML)2.2 Transformers: a Brief History and Milestones2.3 Multimodal Big Data 3 TRANSFORMERS: A GEOMETRICALLY TOPOLOGICAL PERSPECTIVE3.1 Vanilla Transformer3.1.1 Input Tokenizat…

查看gz文件 linux zcat file.gz mtx.gz

可以使用以下命令来查看 gz 压缩文件的内容: zcat file.gz 1 该命令会将 file.gz 文件解压并输出到标准输出,可以通过管道符将其与 grep 命令结合使用来查找需要的关键词,例如: zcat file.gz | grep keyword 1 该命令会将 file.gz…

GD32F103的EXTI中断和EXTI事件

GD32F103的EXTI可以产生中断,也产生事件信号。 GD32F03的EXTI触发源: 1、I/O管脚的16根线; 2、内部模块的4根线(包括LVD、RTC闹钟、USB唤醒、以太网唤醒)。 通过配置GPIO模块的AFIO_EXTISSx寄存器,所有的GPIO管脚都可以被选作EXTI的触发源…

windows开机运行jar

windows开机自启动jar包: 一、保存bat批处理文件 echo off %1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit java -jar E:\projects\ruoyi-admin.jar > E:\server.log 2>&1 &…

VX-API-Gateway开源网关技术的使用记录

VX-API-Gateway开源网关技术的使用记录 官网地址 https://mirren.gitee.io/vx-api-gateway-doc/ VX-API-Gateway(以下称为VX-API)是基于Vert.x (java)开发的 API网关, 是一个分布式、全异步、高性能、可扩展、轻量级的可视化配置的API网关服务官网下载程序zip包 访问 https:/…

【机器学习】 贝叶斯理论的变分推理

许志永 一、说明 贝叶斯原理,站在概率角度上似乎容易解释,但站在函数立场上就不那么容易了;然而,在高端数学模型中,必须要在函数和集合立场上有一套完整的概念,其迭代和运算才能有坚定的理论基础。 二、贝叶…

刷题笔记 day7

力扣 209 长度最小的子数组 解法:滑动指针(对同向双指针区间内的数据处理) 1)先初始化 两个指针 left ,right。 2)右移指针right的同时使用sum记录指针right处的值,并判断sum的值是否满足要求&…

【C#学习笔记】装箱和拆箱

文章目录 装箱和拆箱性能消耗装箱拆箱 比较var&#xff0c;object&#xff0c;dynamic&#xff0c;\<T\>varobject\<T\> 泛型dynamic 装箱和拆箱 在讲引用类型object的时候&#xff0c;我们说它是万能的&#xff0c;却没说它万能在哪里。 除了object为每一种变量…

【TiDB理论知识08】HATP概述

1 HTAP技术 OLTP 在线事务 支付 转账 高并发 每次操作的数据量少 &#xff0c;行存 OLAP 报表分析 每次操作大量数据 列存储 2 传统解决方案 数据抽取到数仓或者数据湖 ETL有延迟 &#xff0c;一般会有T1 T2 数据多副本 3 HTAP的要求 4 TIDB的HTAP架构 TiFlash特点&…

【Linux操作系统】相关问题和知识点总结~

【Linux操作系统】相关问题和知识点总结~&#x1f60e; 前言&#x1f64c;在Linux中&#xff0c;查看CPU使用效率top命令mpstat指令sar指令vmstat指令 如何查看Linux的内核版本grep指令&#xff08;用于在文件内容中&#xff0c;查找满足条件的内容&#xff09;如何批量删除当前…

Typescript+vite+sass手把手实现五子棋游戏(放置类)

Typescriptvitesass手把手实现五子棋游戏&#xff08;放置类&#xff09; 下面有图片和gif可能没加载出来 上面有图片和gif可能没加载出来 导言 最近练习Typescript&#xff0c;觉得差不多了&#xff0c;就用这个项目练练手&#xff0c;使用Typescript纯面向对象编程。 开源…

6.s081/6.1810(Fall 2022)Lab3: page tables

文章目录 前言其他篇章参考链接0. 前置环境1. Speed up system calls (easy)1.1 简单分析1.2 映射1.3 页分配1.4 页释放1.5 测试 2. Print a page table (easy)2.1 简单分析2.2 实现2.3 测试 3. Detect which pages have been accessed (hard)3.1 简单分析3.2 实现3.2.1 获取参…

【Ajax】笔记-设置CORS响应头实现跨域

CORS CORS CORS是什么&#xff1f; CORS(Cross-Origin Resource Sharing),跨域资源共享。CORS是官方的跨域解决方案&#xff0c;它的特点是不需要在客户端做任何特殊的操作&#xff0c;完全在服务器中进行处理&#xff0c;支持get和post请求。跨域资源共享标准新增了一组HTTP首…

【新版系统架构补充】-嵌入式技术

嵌入式微处理体系结构 冯诺依曼结构 传统计算机采用冯诺依曼结构&#xff0c;也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构 冯诺依曼的计算机程序和数据共用一个存储空间&#xff0c;程序指令存储地址和数据存储地址指向同一个存…

Nginx启动报错- Failed to start The nginx HTTP and reverse proxy server

根据日志&#xff0c;仍然出现 “bind() to 0.0.0.0:8888 failed (13: Permission denied)” 错误。这意味着 Nginx 仍然无法绑定到 8888 端口&#xff0c;即使使用 root 权限。 请执行以下操作来进一步排查问题&#xff1a; 确保没有其他进程占用 8888 端口&#xff1a;使用以…

【雕爷学编程】MicroPython动手做(27)——物联网之掌控板小程序2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

使用 Docker Compose 部署 Redis Cluster 集群,轻松搭建高可用分布式缓存

Redis Cluster&#xff08;Redis 集群&#xff09;是 Redis 分布式解决方案的一部分&#xff0c;它旨在提供高可用性、高性能和横向扩展的功能。Redis Cluster 能够将多个 Redis 节点组合成一个分布式集群&#xff0c;实现数据分片和负载均衡&#xff0c;从而确保在大规模应用场…