当前位置: 首页 > news >正文

计算机组成与设计04——处理器

系列文章目录

本系列博客重点在深圳大学计算机系统(3)课程的核心内容梳理,参考书目《计算机组成与设计》(有问题欢迎在评论区讨论指出,或直接私信联系我)。

第一章 计算机组成与设计01——计算机概要与技术_@李忆如的博客-CSDN博客

第二章 计算机组成与设计02——指令:计算机的语言_@李忆如的博客-CSDN博客

第三章 计算机组成与设计03——计算机的算术运算_@李忆如的博客-CSDN博客

第四章 计算机组成与设计04——处理器 


梗概

本篇博客主要介绍深入计算机组成与设计第四章处理器的相关知识。


一、引言

1.计算机性能因素

计算机性能因素与其决定因素如下:

2.基本的MIPS实现(指令部分)

一个基本的MIPS的实现方式如下:

指令的执行步骤如下: 

3.CPU 抽象视图

算术逻辑指令、存储访问指令、分支指令的CPU抽象视图分别如下:

​Tips:某个操作的数有多个来源时,需要加入复选器调整视图(如bne、lw、sw)

4.MIPS子集的基本实现

加入后一个MIPS子集的基本实现如下,包含控制信号与复选器。

二、逻辑设计基础

1.组合单元

2.时钟方法

三、数据通路的建立

数据通路:CPU中处理数据和地址的单元部件 Registers ALUs Mux’s Memories …

数据通路部件(datapath element):一个用来操作保存处理器中数据的单元

程序计数器PC:存放下一条指令地址的寄存器

1.R型指令

2.存取指令

Tips:符号扩展不能漏(为增加数据项长度,将原数据项最高位复制到新数据项多出来的高位)。

3.分支指令 

Tips:beq需要左移两位,MIPS中连续字的地址相差4,且字的起始地址为4的倍数(一个地址为8位,即一个字节,一个字有4个字节)。所以,需要将offset_value左移2位,使其表示为字的地址,确保其能正确跳转到正确地址。

4.简单的数据通路(R型/存取)

初步的数据通路在1个时钟周期内完成指令

每个数据通路部件在一个时钟周期内只能处理一条指令 因此需要独立的数据和指令存储器

当不同指令的数据来源不同时,需要使用多选器

5.完整的数据通路(单周期)

Tips:数据通路必须有独立的指令存储器和数据存储器,因为处理器在一个周期内只能操作每个部件一次,而在一个周期内不可能对一个单端口存储器进行两次存取。 

四、简单的实现机制

核心:以MIPS核心指令子集为目标,为数据通路设计控制单元

核心指令: lw, sw, beq, add, sub, and, or, slt, j

1.ALU控制信号

设计单元表示真值表如下:

2.主控单元设计

Tips:增加了指令判断的复选器与ALU控制单元,并标识出了所有控制信号。

控制信号及其含义如下:

加入控制单元后的简单数据通路如下:

各类指令的控制信号如下:

五、流水线概述

单周期处理器缺点:无法应对不同指令路径(处理时间)长短的差异,最慢的路径决定时钟周期,不符合“加快经常性实事件”设计原则。

0.MIPS指令流水

IF: 从内存中取指令

ID: 指令解码& 读寄存器

EX: 执行运算或计算地址

MEM: 访问内存操作

WB: 将结果写回寄存器 

Tips:流水线每一步的流水线周期(Tc)一致,取决于最慢处理步骤。 

1.流水线的性能

对上述例题(lw)进行分析,性能对比如下:

2.流水线的加速比及分析

流水线vs单周期如下:

流水线vs多周期指令如下:

流水线分析:n个段(以5为例)构成了一个指令流水线,一条指令经过每个段

CPI(平均执行周期数)减少到1,平均每个时钟周期发射或完成一条指令

在任意时钟周期,在每个流水段正执行一条指令的一部分 

3.流水线冒险

冒险现象:下一周期不能按时执行下一条指令

①结构冒险(结构相关):所需的部件忙,暂不可用

②数据冒险(数据相关):需要前面某条指令的计算结果,用于本次计算输入

③控制冒险(控制相关):需要根据前面某条指令的结果来确定分支的选择执行 

3.1 结构冒险

定义:缺乏硬件支持导致指令不能在预定的时钟周期内执行的情况

以data access与instruction fecth的冒险为例:

Tips:因此,流水实现的MIPS中指令和数据内存必须是分离独立的 两个独立的L1 cache 

3.2 数据冒险

定义:一条指令依赖于前面某条执行的计算结果,缺少指令执行所需数据而导致指令无法在预期的时钟周期内执行。

解决方法如下:

(1)前推

(2)前推+停顿

3.3 数据冒险样例

​Tips:时钟周期即横轴数,本题为13个。

调整后指令如下(减少时钟周期):

3.4 控制冒险

定义:取到的指令不是所需要的(地址变化不是预期)而导致指令不能在预定的时钟周期内执行。

出现原因:决策依赖于一条指令的结果,而其他指令正在执行中(例:下一条指令IF阶段时,分支指令仍在 ID阶段)。

解决控制冒险的方法如下:

(1)阻塞

在分支指令后立即阻塞流水线,避免地址未被计算,样例如下:

分析:在较长流水线中,往往不能在第二级完成分支决策,停顿会带来更大的速度下降。

(2)预测

根据“通过预测提高性能”的设计原则对分支地址进行预测预测,预测错误才需要阻塞。

Ⅰ、恒预测不跳转 

一种简单的预测方法就是总预测分支未发生(不跳转),样例如图:

Ⅱ、静态分支预测

一种更成熟的分支预测是基于典型的行为,预测一些分支发生而预测另一些分支不发生,样例如下:

Tips:这种分支预测依赖始终不变的行为,没有考虑特定分支指令的特点。

Ⅲ、动态硬件预测

定义:预测取决于每一步分支的行为,并且在整个程序的生命周期内可能改变分支的预测结果。

实现:保存每次分支的历史记录,利用历史记录来预测。

Tips:较长的流水线会恶化预测的性能(各种方法),并提高错误预测的概率。

3.5 流水线冒险样例

六、MIPS流水化的数据通路 

在单时钟周期中,流水线最多五条指令,因此要把之前的数据通路分为五部分,如图:

图中从左到右的指令流中有两个例外:

(1)写回阶段是写回数据通路中间的寄存器(可能导致数据冒险)

(2)选择PC的下一个值的时候,在自增PC与MEM的分支地址间进行选择(可能导致控制冒险) 

1.流水线寄存器

通过增加保存中间数据(记录前一时钟周期产生的结果)的寄存器,使得指令过程中可以共享部分数据通路,故需要流水线寄存器,确保一条数据通路实现流水线,加入流水线寄存器如图所示:

Tips:流水线寄存器宽度要足够大(64、128、97、64)

补充:每条指令都会更新PC,PC可以看作是一个流水线寄存器:给IF级提供数据,发生异常时必须保存它的内容。

2.流水线工作方式

以lw与sw为例介绍流水线的工作方式与数据通路实现,红圈为数据传输与存储,供之后的指令使用,如图所示:

2.1 lw/sw指令的流水操作——IF

2.2 lw/sw指令的流水操作——ID

Tips:由于处理器并不知道当前是哪一条指令在被译码,因此它把符号扩展后的常量及两个寄存器的值都读入ID/EX寄存器中,简化控制。 

2.3 lw指令的流水操作——EX

2.4 lw指令的流水操作——MEM 

2.5 lw指令的流水操作—— WB

其中,写回寄存器的值是IF/ID流水线寄存器(之前lw的目标寄存器没保存)提供的,但现在的指令是lw后的指令,故写回寄存器的值有问题,需要修正,如图所示:

2.6 sw指令的流水操作——EX

Tips:只有在Sw中才将第二个寄存器的数据写入EX/MEM寄存器。

2.7 sw指令的流水操作—— MEM

2.8 sw指令的流水操作—— WB

3.流水线图形化 

3.1 多时钟周期流水线图

多时钟周期流水线图简单但不包括所有细节,构成了资源(部件)的使用情况图。样例如图所示:

Tips:上图描述的是每个步骤使用的物理资源

3.2 传统图示

3.3 单时钟周期流水线图

单时钟周期流水线图表示的是一个时钟周期内整个数据通路的状态,样例如图:

3.4 流水线性能与时钟周期回顾

3.5 流水线例题 

Ⅰ、几个学生在讨论五级流水线的效率问题。有一个学生指出并非所有流水级中的指令都是活动的。在忽略冒险的情况下,他们做出了以下几个断言,其中哪一个是正确的?

1)允许跳转、分支、ALU指令使用比5级(装载指令需要的级数)更少的级数将在所有情况下增加流水线的性能。

错误,由2)解释。

2)允许一些指令使用更少的级数并不能提高性能,因为吞吐率(单位时间流出的指令数)是由时钟周期决定的。每条指令所需的流水线级数仅影响它的延迟时间,而不影响吞吐率

正确

3)不可能减少ALU指令所需的时钟周期数,因为他们需要写回结果。不过分支和跳转指令是可以减少时钟周期数的,因此存在改善性能的机会。

错误

4)相对于尝试减少指令所需的时钟周期数,我们可以延长流水线的级数,虽然每条指令花费更多的时钟周期数,但时钟周期的长度变短了,这样才能提高性能(吞吐率 = 单位时间 / 时钟周期的长度)。

正确 

Ⅱ、流水线对时钟周期的影响

1.流水线处理器与非流水线处理器的时钟周期分别是多少?

流水线处理器时钟周期取决于最慢的流水线级:350ps

非流水线时钟周期为一条指令(单周期):1250ps

2.lw指令在流水线处理器和非流水线处理器中的总延迟分别是多少?

流水线总延迟:max (250, 350, 150, 300, 200) * 5 = 350ps * 5 = 1750ps

非流水线:250 + 350 + 150 + 300 + 200 = 1250ps

3.如果可以将原流水线数据通路的一级划分为两级,每级的延迟是原级的一半,那么你会选哪一级进行划分?划分后的时钟周期是多少?

选择最长的一级划分,即ID

划分后时钟周期为:300ps 

4.假设没有阻塞和冒险,数据存储器的利用率是多少(占总周期数的百分比)?

lw与sw使用数据存储器,故利用率为20+15=35%

5.假设没有阻塞和冒险,寄存器堆的写寄存器端口的利用率是多少?

alu与lw使用写寄存器端口,故利用率为45+20=65%

6.假设一种多周期的处理器设计,其中每条指令需要多个时钟周期完成。但上一条指令完成前不取下一条指令。在这种设计中,指令仅经过其所需的阶段(例如,存储指令仅需4个时钟周期,因为其不需要WB阶段)。比较单周期设计、多周期设计和流水线设计三者的时钟周期和总执行时间。

Tips:beq因为branch在mem中,所以有控制信号,无WB,所以在多周期中为4。

4.流水线控制信号 

流水线控制信号(简化)如图:

Tips:输入ALU control的六位字段为指令立即数的低六位(符号扩展时无变化)。

EX过程中控制信号有:RegDst、ALUOp、ALUSrc,根据这些信息选择结果寄存器(R、I型指令)、ALU操作、并为ALU读取data2或符号扩展后的立即数。 

4.1 控制信号说明

ALUOp信号如下:

其他信号如下:

Tips:控制信号与非流水方式相同的意义,各种指令如下:

4.2 控制信号与数据通路 

流水线控制信号根据指令产生:与单周期实现一样,如图:

Tips:ALUOp分为ALUOp1与ALUOp0,为两个控制信号。 

流水线数据通路如图:

总结

以上便是绍深入计算机组成与设计第四章处理器的相关知识。在第四章中,主要以计算机系统处理器与流水线的数据通路介绍与实现为主。

相关文章:

计算机组成与设计04——处理器

系列文章目录 本系列博客重点在深圳大学计算机系统(3)课程的核心内容梳理,参考书目《计算机组成与设计》(有问题欢迎在评论区讨论指出,或直接私信联系我)。 第一章 计算机组成与设计01——计算机概要与技…...

IT行业那么辛苦,我们为什么还要选择它?

疫情三年,我们学会了什么?工作诚可贵,技能价更高。 搞IT辛苦?有啥辛苦的?说什么辛苦?能有工作,工资又高,还要什么自行车,有啥搞啥吧!每次看到网络上有人问有…...

PyTorch学习笔记:nn.CrossEntropyLoss——交叉熵损失

PyTorch学习笔记:nn.CrossEntropyLoss——交叉熵损失 torch.nn.CrossEntropyLoss(weightNone, size_averageNone, ignore_index-100, reduceNone, reductionmean, label_smoothing0.0)功能:创建一个交叉熵损失函数: l(x,y)L{l1,…,lN}T&…...

【VictoriaMetrics】什么是VictoriaMetrics

VictoriaMetrics是一个快速、经济、可扩展的监控解决方案和时间序列数据库,有单机版和集群版本,基础功能及集群版本基本功能不收费,VictoriaMetrics有二进制安装版本、Docker安装版本等多种安装方式,其源码及部署包更新迭代很快,VictoriaMetrics具有以下突出特点: 它可以作…...

(第五章)OpenGL超级宝典学习:统一变量(uniform variable)

统一变量 前言 本篇在讲什么 本篇记录对glsl中的变量uniform的认知和学习 本篇适合什么 适合初学Open的小白 适合想要学习OpenGL中uniform的人 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 …...

数据存储技术复习(四)未完

1.什么是NAS。一般用途服务器与NAS设备之间有何不同。NAS是一个基于IP的专用高性能文件共享和存储设备。—般用途服务器可用于托管任何应用程序,因为它运行的是一般用途操作系统NAS设备专用于文件服务。它具有专门的操作系统,专用于通过使用行业标准协议…...

Rust编码的信息窃取恶意软件源代码公布,专家警告已被利用

黑客论坛上发布了一个 用Rust编码的信息窃取恶意软件源代码 ,安全分析师警告,该恶意软件已被积极用于攻击。 该恶意软件的开发者称,仅用6个小时就开发完成,相当隐蔽, VirusTotal的检测率约为22% 。 恶意软件开发者在…...

diffusers编写自己的推理管道

英文文献:Stable Diffusion with 🧨 Diffusers 编写自己的推理管道 最后,我们展示了如何使用diffusers. 编写自定义推理管道是对diffusers库的高级使用,可用于切换某些组件,例如上面解释的 VAE 或调度程序。 例如&a…...

计算机操作系统 左万利 第二章课后习题答案

计算机操作系统 左万利 第二章课后习题答案 1、为何引进多道程序设计,在多道程序设计中,内存中作业的道数是否越多越好?说明原因。 引入多道程序设计技术是为了提高计算机系统资源的利用率。在多道程序系统中,内存中作业的道数并…...

CODESYS开发教程10-文件读写(SysFile库)

今天继续我们的小白教程,老鸟就不要在这浪费时间了😊。 前面一期我们介绍了CODESYS的文件操作库CAA File。这一期主要介绍CODESYS的SysFile库所包含的文件读写功能块,主要包括文件路径、名称、大小的获取以及文件的创建、打开、读、写、拷贝…...

Linux安装redis

Linux安装redis一.下载二.解压配置1.创建文件夹2.上传文件3.解压4.编译配置三.启动测试1.启动2.防火墙配置3.测试四.设置开机自启1.配置脚本2.添加服务3.测试一.下载 redis官网:https://redis.io/ redis官方下载地址:http://download.redis.io/releases…...

计算机组成与体系结构 性能设计 William Stallings 第2章 性能问题

2.1 优化性能设计例如,当前需要微处理器强大功能的桌面应用程序包括:图像处理、三维渲染、语音识别、视频会议、多媒体创作、文件的声音和视频注释、仿真建模从计算机组成与体系结构的角度来看,一方面,现代计算机的基本组成与50多…...

anaconda详细介绍、安装及使用(python)

anaconda详细介绍、安装及使用1 介绍1.1 简介1.2 特点1.3 版本下载2 Anaconda管理Python包命令3 安装3.1 windows安装4 操作4.1 Conda 操作4.2 Anaconda Navigator 操作4.3 Spyder 操作4.4 Jupyter Notebook 操作5 示例参考1 介绍 1.1 简介 Anaconda是用于科学计算&#xff08…...

雅思经验(6)

反正我是希望遇到的雅思听力section 4.里面填空的地方多一些,之后单选的部分少一些。练了一下剑9 test3 的section 4,感觉还是不难的,都是在复现,而且绕的弯子也不是很多。本次考试的目标就是先弄一个六分,也就是说&am…...

CentOS9源码编译libvirtd工具

卸载原有版本libvirt [rootcentos9 ~]# yum remove libvirt Centos9配置网络源 [rootcentos9 ~]# dnf config-manager --set-enabled crb [rootcentos9 ~]# dnf install epel-release epel-next-release 安装依赖包 [rootcentos9 ~]# yum install -y libtirpc-devel libxml2-de…...

搭建内网穿透

文章目录摘要npsfrp服务提供商摘要 内网穿透是一种方便的技术,可以让用户随时随地访问内网设备。有两种方式可以使用内网穿透:自己搭建,使用nps/frps软件;购买服务,快速享受内网穿透带来的便利。 nps 内网穿透。参考…...

vue3组件库项目学习笔记(八):Git 使用总结

目前组件库的开发已经接近尾声,因为这次是使用 git 进行协作的开发模式,在团队协作的时候遇到很多的问题,开发过程中发现小伙伴们对于 git 的使用还不是很熟练,这里就简单总结一下常用的 git 的操作,大致有&#xff1a…...

ISO7320FCQDRQ1数字隔离器LMG1025QDEETQ1半桥GaN驱动器

1、数字隔离器 DGTL ISO 3000VRMS 2CH 8SOIC型号:ISO7320FCQDRQ1批次:新技术:容性耦合类型:通用隔离式电源:无通道数:2输入 - 侧 1/侧 2:2/0通道类型:单向电压 - 隔离:30…...

openmmlab 语义分割算法基础

本文是openmmlab AI实战营的第六次课程的笔记,以下是我比较关注的部分。简要介绍语义分割:如下图,左边原图,右边语义分割图,对每个像数进行分类应用语义分割在个各种场景下都非常重要,特别是在自动驾驶和医…...

2023年深圳/东莞/惠州CPDA数据分析师认证报名入口

CPDA数据分析师认证是中国大数据领域有一定权威度的中高端人才认证,它不仅是中国较早大数据专业技术人才认证、更是中国大数据时代先行者,具有广泛的社会认知度和权威性。 无论是地方政府引进人才、公务员报考、各大企业选聘人才,还是招投标加…...

XML Group端口详解

在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...

软件工程 期末复习

瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...

sshd代码修改banner

sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

简约商务通用宣传年终总结12套PPT模版分享

IOS风格企业宣传PPT模版,年终工作总结PPT模版,简约精致扁平化商务通用动画PPT模版,素雅商务PPT模版 简约商务通用宣传年终总结12套PPT模版分享:商务通用年终总结类PPT模版https://pan.quark.cn/s/ece1e252d7df...

Redis——Cluster配置

目录 分片 一、分片的本质与核心价值 二、分片实现方案对比 三、分片算法详解 1. ‌范围分片(顺序分片)‌ 2. ‌哈希分片‌ 3. ‌虚拟槽分片(Redis Cluster 方案)‌ 四、Redis Cluster 分片实践要点 五、经典问题解析 C…...