计组-中央处理器学习笔记

cpu的功能和基本结构

中央处理器(CPU)由运算器和控制器组成

  • 控制器:负责协调并控制计算机各部件执行程序的指令序列,包括取指令、分析指令和执行指令
  • 运算器:主要是对数据进行加工

CPU的任务是:
● 取指令:CPU从存储器中读取指令。
● 分析指令:对取得的指令进行译码,确定需要完成的操作。
● 取操作数:根据指令的地址码字段,到存储器、寄存器或IO设备中读取数据。
● 执行指令:对取出的操作数做指令规定的操作,并把结果写入存储器、寄存器或IO设备中。

由此可以得知,CPU的功能是

  • 指令控制:控制程序的执行顺序。
  • 操作控制:产生每条指令所需的操作信号,并把信号送往各个部件,控制部件按要求进行操作。
  • 时间控制:对各种操作实施时间上的控制。
  • 数据加工:对数据进行算术和逻辑运算,完成数据的加工处理。(这是CPU最根本的任务)
  • 中断处理:对计算机运行过程中出现的异常情况和特殊请求进行处理

7h0q8e.png

7hBXJU.png

控制器
控制器 T7ezm6.png

控制器有硬布线控制器 和 微程序控制器两种类型

指令包括操作码字段和操作数地址码字段,但是指令译码器仅对操作码字段进行译码,借以确定指令的功能。

地址译码器是主存等存储器的组成部分,作用是根据输入的地址码唯一选定一个存储单元

用户可见寄存器:通用寄存器组,程序状态字寄存器(PSW)

用户不可见寄存器(对用户透明):指令寄存器(IR),存储器地址寄存器(MAR),存储器数据寄存器(MDR)

!!! 在一条无条件跳转指令的指令周期内,PC的值被修改了2次

过程:取指周期结束后,PC的值自动加1(必做),执行周期中,执行跳转指令,将PC的值修改为跳转的地址,这样就总共被修改了2次

运算器

T7edSA.png


指令执行过程

指令周期

指令周期:CPU从主存中取出并执行一条指令的时间,不同的指令其指令周期可能不同。

指令周期通常用若干机器周期来表示,一个机器周期又包含若干时钟周期(也称节拍或T周期,是CPU操作的最基本单元)

指令周期:

​ CPU每取出一条指令并执行这条指令,都要完成一系列的操作,这一系列操作所需要的时间通常叫做一个指令周期。换言之指令周期是取出一条指令并执行这条指令的时间。由于各条指令的操作功能不同,因此各种指令的指令周期是不尽相同的。例如一条加法指令的指令周期同一条乘法指令的指令周期是不相同的 。

机器周期:

​ 机器周期也称为CPU周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个时钟周期组成 ,每个机器周期内的节拍数可以不等,因此其长度可变。机器周期是在同步控制的机器中,执行指令周期中一步相对完整的操作(指令步)所需时间,通常安排机器周期长度=主存周期

时钟周期:

时钟周期T又称为振荡周期,由单片机片内振荡电路OSC产生,常定义为时钟脉冲频率的倒数,是时序中最小的时间单位。例如,若某单片机时钟频率为1MHz,则它的时钟周期T应为1μs。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏,使计算机的每一步工作都统一到它的步调上来。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以它们需要的时钟周期频率范围也不一定相同

指令周期包括取指、间址、执行(取操作数)、中断四部分

1️⃣取指周期

顾名思义,取指周期的任务是根据PC中的内容从主存中取出指令代码并存放在IR中。

取指周期的数据流如下:

  • 程序计数器将当前指令地址送去存储器地址寄存器。
  • 控制单元发出控制信号,经总线传送至主存。
  • 存储器将当前指令地址所指的数据传送至存储器数据寄存器中
  • 存储器数据寄存器将数据发送至指令寄存器中
  • 控制单元发出控制信号,PC++ (这种就是指令寻址中的顺序寻址)

2️⃣间址周期

地址码字段代表的位置可能存储的并不是操作数,而是存储操作数的地址EA。

所以也是当出现了这种情况时,才会进入间址周期,如果是直接寻址或立即寻址等就不需要进入间址周期

间址周期的任务是获取操作数的有效地址(因为可能是操作数直接记录一个地址,这个反应到我们编程中可以理解为指针,所以也会出现指针的指针等套娃)

3️⃣执行周期

执行周期的任务是取操作数,并根据IR中的指令字的操作码通过ALU操作产生执行结果

4️⃣中断周期

其在执行周期之后,所以CPU响应中断都是在执行完一条指令之后

指令的执行周期结束后,控制器会判断是否有中断请求,只有在出现了中断请求的情况下,才会进入中断周期

中断周期的任务是处理中断请求. 中断的意思是暂停当前任务,先去执行其他任务,这就需要我们保存断点。否则无法在执行其他任务后恢复任务。

我们用SP表示栈顶地址。并约定进栈操作是先修改地址,再存入数据

  • 通过控制单元将SP地址--,并将修改后的地址送入存储器地址寄存器。

  • 控制单元向主存发送控制信号

  • 程序计数器经过存储器数据寄存器经过数据总线写入主存(这个操作就是将中断发生前的程序数据写入主存)

  • 控制单元将中断服务程序地址赋值给PC

    若机器处于 ”开中断“状态,在每条指令执行结束后都可能被外部中断打断

机器字长,存储字长,指令字长

机器字长CPU一次能够处理的数据的位数。通常等于寄存器的位数。例子:windows 64位/32位,这里的64位和32位指的就是该操作系统的机器字长。

存储字长:计算机存储器中一个存储单元可以存储的位数。例子:某某计算机按照字节编址,即说明该计算机的存储字长为1B=8位。

指令字长:计算机内一条指令的位数。这里通常指的定长指令。

机器字长与存储字长:两者没有必然的联系

机器字长与指令字长:两者没有必然的联系。它既可以等于机器字长也可以大于或者小于机器字长。通常把等于机器字长的指令称为单字长指令。把等于半个机器字长的指令称为半字长指令。把等于两倍机器字长的指令称为双字长指令。

存储字长和指令字长。各位可能经常看到这样的字眼:某某计算机按字节编址,指令长度为16位/32位。通常为了方便取址规定指令字长为存储字长的整数倍。现在的计算机指令长度基本都是存储字长的整数倍


指令执行方案

单指令周期: 对所有的指令都选用相同的时间来完成,每条指令都在固定时间内完成,指令之间串行执行,因此指令周期取决于执行时间最长的的指令的执行时间。

一个时钟周期完成一条指令,如果一个程序有多条指令,则时钟周期的时间根据执行时间最长的那条指令为主。执行一条指令就需要一个时钟周期则CPI为1

多指令周期:对不同的指令选用不同的执行步骤,指令之间串行执行,指令需要几个周期就为其分配几个周期

多周期CPU比单周期CPU的优势在于:因为一个程序的不同指令所需要的执行时间是不同的,所以如果按照单周期处理的话,无论什么指令我都按照最长的那条指令去处理,可能我只要占用CPU1s,但是你给了我100s,其中99sCPU都在等待,闲着没事干,这完全是在浪费CPU。多周期CPU就是程序中的每一条指令要多少时间我就给你多少时间,比如第一条指令要是2s,那我就给你2s的CPU,第二条指令要5s,我就给你5s,多周期CPU完成这2条指令一共是7s,如果是单周期总时间就需要10s,多周期的CPU的效率比单周期高吧。但是多周期CPU也有缺点,就是同一时间不能运行多条指令无法实现CPU并行工作,因为有的时候一个程序执行的不同指令可能用的是CPU中的不同部件,如果可以让CPU中的所有部件都能不闲着那效率不就更高了,所以就有了指令流水线

流水线方案指令之间可以并行执行,尽量让指令同时运行,但各自处在不同的执行步骤中


数据通路

数据在功能部件之间传送的路径称为数据通路,包括数据通路上流经的部件,如ALU,通用寄存器,状态寄存器,异常和中断处理逻辑等。

数据通路描述了信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器
数据通路中专门进行数据运算的部件称为执行部件或功能部件;数据通路由控制部件控制
数据通路的功能是实现 CPU 内部的运算器与寄存器及寄存器之间的数据交换

数据通路的基本结构

主要有以下几种:

CPU内部单总线方式:将所有寄存器的输入端和输出端都连接到一条公共通路上,其优点是结构简单易于实现,缺点就是数据传输时存在较多的冲突现象

CPU内部3总线方式:将所有寄存器的输入端和输出端都连接到多条公共通路上,可以在多个总线上传送不同的数据,提高效率

专用数据通路方式:根据指令执行过程中的数据和地址的流动方向安排连接线路,避免使用共享的总线,性能较高,缺点是硬件量大

数据通路基本结构

控制器的结构和功能

「控制器」是整个系统的指挥中枢,在「控制器」的控制下,「运算器」、「存储器」和「输入/输出设备」等功能部件构成一个有机的整体,根据指令的要求指挥全机协调工作。「控制器」的基本功能是执行指令,每条指令的执行时由「控制器」发出的一组微操作实现的。

「控制器」由程序计数器(PC)、指令寄存器(IR)、指令译码器、存储器地址寄存器(MAR)、存储器数据寄存器(MDR)、时序系统和微操作信号发生器等组成。

控制器是计算机系统的指挥中心,控制器的主要功能有:

  1. 从主存中取出一条指令,并指出下一条指令在主存中的位置;
  2. 对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作;
  3. 指挥并控制CPU、主存、输入和输出设备之间的数据流动方向。

「控制器」分为硬布线控制器和微程序控制器两种

两类控制器中的PC和IR是相同的,但确定和表示指令执行步骤的方法以及给出控制各部件运行所需要的控制信号的方案是不同的

控制单元CU的 输入信号来源:1.经指令译码器译码产生的指令信息 2.时序系统产生的机器周期信号和节拍信号 3.来自执行单元的反馈信息即标志,前两者为主要因素


基本概念

微命令 -> 微指令 -> 微程序 A -> B表示由A组成B

控制部件通过控制线向执行部件发出各种控制命令,通常这种控制命令叫做微命令,是最小单位,组成微指令 。
在机器的一个CPU周期中,一组实现一定操作功能的微命令的组合,构成一条微指令
事实上一条机器指令的功能是由许多条微指令组成的序列来实现的。这个微指令序列通常叫做微程序

微操作:指令执行时必须完成的基本操作。例如,PC→AR,PC+1→ PC,RAM→IR。

  • 微操作是动作,微指令是个编码。
  • 微操作是微命令作用在硬件上的一个动作。课本上的微操作是在写指令流程时一条即一个箭头,这粒度比较粗。

微命令 -> 微指令 -> 微程序 A -> B表示由A组成B

控制部件通过控制线向执行部件发出各种控制命令,通常这种控制命令叫做微命令,是最小单位,组成微指令 。

在机器的一个CPU周期中,一组实现一定操作功能的微命令的组合,构成一条微指令

事实上一条机器指令的功能是由许多条微指令组成的序列来实现的。这个微指令序列通常叫做微程序

微操作:指令执行时必须完成的基本操作。例如,PC→AR,PC+1→ PC,RAM→IR。

  • 一 条微指令可能有多个微命令。
  • 微操作是动作,微指令是个编码。
  • 微操作是微命令作用在硬件上的一个动作。

「微命令」是控制部件执行部件发出的各种控制命令

王道中:微命令和微操作是一 一对应的,微命令是微操作的控制信号,微操作是微命令的执行过程

微命令有兼容性和互斥性之分,兼容性微指令是指那些可以同时发生,共同完成某一些微操作的微命令;而互斥性微命令是指在机器中不允许同时出现的微命令。兼容和互斥是相对的,一个微命令可以和一些微命令兼容,和另一些微命令互斥。

「微周期」通常是从控制存储器读取一条微指令并执行相应的微操作所需的时间。

「程序与微程序」:程序是指令的有序集合,用于完成特定的功能。「微程序」是「微指令」的有序集合,一条指令的功能由一段「微程序」来实现。


硬布线控制器

硬布线控制器的基本原理是根据指令的要求,当前的时序和及外部和内部的状态,按时间的顺序发生一系列微操作控制信号

由复杂的组合逻辑门电路和一些触发器构成,因此又称组合逻辑电路

指令的操作码是决定控制单元(CU)发出不同操作命令(控制信号)的关键

硬布线控制器结构:

img
微程序控制器

微程序控制器采用存储逻辑实现,也就是把微操作信号代码化,使每条机器指令转换成为一段微程序并存入一个专门的存储器(控制存储器CM)中,微操作控制信号由微指令产生。

设计思想:将每条机器指令编写成一个微程序,每个微程序包含若干微指令,每条微指令对应一个或几个微操作命令

控制存储器(CM)是用于存放微程序,在CPU的内部,利用只读存储器ROM实现,是微程序控制器的核心部件

通常,一条机器指令对应一个微程序。由于任何一条机器指令的取指令操作都是相同的,因此可将取指令操作的微命令统一编成一个微程序,这个微程序只负责将指令从主存储器中取出并送至指令寄存器(IR)。

若指令系统中具有 n 种机器指令,则控制存储器中的微程序数至少是n+1 (其中1为公共的取指令微程序)

而在带中断的计算机指令系统中若具有 n种机器指令,则控制存储器中的微程序数至少是n+2 (其中1为公共的取指令微程序,另一个1为对应中断周期的微程序)

img 微程序控制器的工作过程

「微指令」的基本格式:

  1. 「微操作码」:用于产生某一步操作所需的各种操作控制信号

  2. 「微地址码」:用于控制产生下一条要执行的微指令地址

    img

微指令的编码方式

又称微指令的控制方式,是指如何对微指令的控制字段进行编码,以形成控制信号。目标:在保证速度的情况下,尽量缩短微指令字长

方式:

1.直接编码(控制)方式:在微指令的操作控制字段中,每一位代表一个微操作命令 某位为“1”表示该控制信号有效

img

优点:简单、直观、执行速度快,操作并行性好

缺点:微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控制存储器的容量极大。

2.字段直接编码方式:

将微指令的微命令字段分成若干小字段,互斥性微命令分在同一段中,相容性微命令分在不同段内,每个字段独立编码

微命令字段分段的原则

互斥性微命令分在同一段中,相容性微命令分在不同段内。

每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。

一般每个小段还要流出一个状态,表示本字段不发出任何的微命令。因此,当某个字段的长度为3位时,最多只能表示7个互斥的微命令,通常000表示不操作

img

优点:可以缩短微指令字长。

缺点:要通过译码电路后再发出发出微命令,因此比直接编码方式慢。

出题:可能给出

3.字段间接编码方式:

一个字段的某些微命令需要由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,故称为字段间接编码,又称为隐式编码。

优点:可进一步缩短微指令字长

缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段。


微指令的格式

和微指令的编码方式相关,通常分为水平型微指令和垂直型微指令

水平型微指令:

从编码方式来看,直接编码,字段直接编码,字段间接编码,混合编码都属于水平型微指令

优点:微程序短,执行速度快

缺点:微指令长,编写微程序较麻烦

平行操作能力强,微指令长,微程序短,执行速度快,当对用户来说不好理解

img

垂直型微指令:

类似机器指令操作码的方式,由微操作码字段指定微指令的功能。

优点:微指令短、简单、规整,便于编写微程序

缺点:微程序长,执行速度慢,工作效率低

微程序长,微指令短,执行速度慢,但对用户来说好理解

img

混合型微指令:

在垂直型的基础上增加一些不太复杂的并行操作。微指令较短,仍便于编写


两种控制器总结

硬布线控制器的特点

优点:由于控制器的速度取决于电路延迟,所以速度快

缺点:由于将控制部件视为专门产生固定时序控制信号的逻辑电路,所以把用最少原件和取得最高速度作为设计目标,一旦设计完成,就不可能通过其他额外修改添加新功能

微程序控制器的特点

优点:同组合逻辑控制器相比,微程序控制器具有规整性、灵活性、可维护性等一系列优点;

缺点:由于微程序控制器采用了存储程序原理,所以每条指令都从控制存储器中取一次,影响速度

img

微程序控制器的时序系统相比硬布线控制器更加简单

因为硬布线控制器需要结合各微操作的节拍安排,综合分析,写出逻辑表达式

而微程序只需按照节拍的安排,顺序执行微指令


异常和中断机制

基本概念

由CPU内部产生的意外事件被称为异常,或内中断,异常和CPU内部正在执行的指令相关,是同步事件

由来自CPU外部的设备向CPU发出的中断请求被称为中断,或外中断。

中断是来自处理器外部的I/O设备的信号的结果,它不是由指令流中某条指令执行引起的,从这个意义上讲,它是异步的,是来自指令流之外

异常和中断的处理过程基本是相同,这也是为什么有些教材把异常和中断都统称为中断的原因

异常

异常是CPU内部产生的意外事件,分为硬故障中断和程序性异常(软件中断)

按异常发生的原因和返回方式的不同分为:故障,自陷和终止

异常(内中断)分类

故障是由错误条件引起的,可能被故障处理例程修复。如果可以修复,则啥事儿没有,继续干活;如果不能修复则会转化为终止,并进入下一步。常见的故障如缺页。

终止是不可恢复的致命的错误造成结果。终止处理程序不再将控制返回给引发终止的应用程序,而是交给了系统——其结果往往是系统终止应用程序。 如主存异常

浮动运算下溢,直接当机器零处理,而不会引发异常(内中断),

而浮点运算上溢,表示超过了浮点数的表示范围,会引发异常


中断

CPU外部的设备向CPU发出的中断请求被称为中断,与cpu当前执行的指令无关,如I/O设备发出的I/O中断(键盘输入,打印机缺纸)

分为可屏蔽性中断和不可屏蔽性中断(如电源掉电)

异常和中断的响应过程
异常和中断响应过程

响应过程的结束是代表已经识别了异常或中断的类型,并转到相应的处理程序(但还未开始执行 ),即PC目前就存储了处理程序的第一条指令的地址,CPU开始执行异常/中断处理程序

中断向量保存着中断服务程序的入口程序的地址,所以中断向量地址是中断服务程序入口地址的地址

中断向量是中断服务程序的入口地址,在计算机中中断向量的地址存放一条跳转到中断服务程序的跳转指令。

中断地址是存储中断向量的内存单元,中断向量表或中断向量跳转表中每个表项所在的内存地址或表项的索引值,称为向量地址或中断类型号。。

中断向量表:用来存放中断向量(共256个)

向量中断:是指一种识别中断源的技术或方式。识别中断源的目的就是要找到中断源对应的中断服务程序的入口地址的地址,即获得向量地址。


指令流水线

时间上的并行技术:一条指令的执行过程分为若干阶段,每个阶段由相应的功能部件完成(洗衣服阶段由洗衣机完成,甩衣服阶段由甩干机完成,折叠衣服由折衣机完成)。如果把各个阶段看成相应的流水段,则指令的执行过程就是一条流水线。可以类比工业制造流水线理解。就是将一个物品的制造过程分为一个一个阶段完成。 这就是指令流水线

空间上的并行技术:在一个处理机内部设置多个执行相同任务的功能部件,并让这些部件并行工作,这样的处理机被称为:超标量处理机

指令流水线的定义

只有大量连续任务不断输入流水线中,才能充分发挥流水线的性能,而指令的执行正好是连续不断的,非常适合流水线技术。

每个流水段后面都需要增加一个流水寄存器,用于锁存本段处理完成的数据和控制信号,以保证本段的执行结果能在一个时钟周期给下一个流水段(相同的指令的下一执行步骤,流水段)的功能部件使用

流水线的控制信号

每个流水段还需要正在执行指令对应的功能段的控制信号


流水线的执行过程
单周期-流水线的基本实现
  • 取指((Instruction Fetch,IF)

以程序计数器 PC中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,PC中的数值将根据指令字长度而自动递增:若为单字长指令,则(PC)+1 -> PC;若为双字长指令,则(PC)+2 -> PC,依此类推。

  • 译码/读写寄存器(Instruction Decode,ID)

产生指令执行所需的控制信号

  • 执行/计算地址(Execute,EX)

在取指令和指令译码阶段以后,接着进入执行指令 阶段。

此阶段的任务是完成指令所规定的各类操做,具体实现指令的功能。

  • 访存(MEM)
  • 写回(WB)

流水线的冒险与处理

在指令流水线中,遇到的一些情况使得流水线无法正确执行后续指令而引起流水线阻塞或停顿,这种现象称为流水线冒险。

根据冒险的原因不同主要分为三种

结构冒险(资源冲突)

也称为硬件资源冲突,引起结构冒险的原因在于同一个部件同时被不同的指令所用,由硬件资源竞争造成的

解决:

  1. 规定一个部件每条指令只能使用1次,且只能在特点阶段使用
  2. 通过设置多个独立的部件来避免资源冲突

数据冒险

也称为数据相关,引起数据冒险的原因在于后面的指令(中的某一个步骤)需要用到前面指令的运算结果,而前面这条指令还没有执行完成,即运算结果还没有产生

解决:

  1. 由编译器在数据相关的指令之间增加若干nop指令(空操作指令,除修改PC外,什么也不做),这种方式简化了硬件,但增加了时间开销
  2. 采用数据转发机制,

控制冒险

正常情况下,指令在流水线中总是顺序执行,当遇到改变指令执行顺序的情况时,流水线中指令的正常执行会被阻塞。

由分支指令而引起的控制冒险也称为分支冒险,针对分支冒险,可采用硬件阻塞方式(插入气泡),软件阻塞方式(插入空操作指令nop)


性能指标
流水线的性能指标

一条K段流水线能在K+n-1个时钟周期内完成n条指令


高级流水线实现技术

超流水线

通过增加流水线级数来使更多的指令同时在流水线中重叠执行,超流水线技术并没有改变CPI(仍为1),但指令的吞吐率增大了,

但流水线级数越多,用于流水线寄存器的开销也就越大。

动态多发射流水线超标量流水线技术

通过同时启动多条指令独立运行来提高指令的并行性,以并行操作方式将两条或多条指令编译并执行,每条指令按流水线分段进行(即同时可以进行多条流水线),其前提是数据通路中有多个执行部件,多发射流水线的CPI能达到小于1.

超长指令字技术

也称静态发射技术

编译程序挖掘出指令潜在的并行技术,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达几百位),为此需要采用多个处理部件。且其对Cache的容量要求更多,因为需要执行的指令长度也许会很长

动态流水线|静态流水线

按照在同一时间内是否能够连接成多种方式,同时执行多种功能,可以把多功能流水线分为静态流水线和动态流水线。

动态流水线(dynamic pipelining)是指在同一段时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。连接方式是有条件的,要求流水线中各个功能部件之间不能发生冲突。其优点是效率和功能模块利用率比静态流水线要高,缺点是相关控制复杂。

静态流水线(static pipeline):在同一段时间内,多功能流水线中的各个功能段只能按照一种固定的方式连接,实现一种固定的功能


指令流水线数据通路

数据通路上流经的部件有:程序计数器(PC),ALU,通用寄存器,状态寄存器(PSW),异常和中断处理逻辑等

其中数据通路是由控制部件控制的,控制部件根据每条指令功能的不同生成对数据通路的控制信号,因此数据通路不包含控制部件


多处理器的基本概念

SISD,SIMD,MISD,MIMD

基于指令流的数量和数据流的数量,将计算机体系结构分为:

SISD 单指令流单数据流结构

SISD是传统的串行计算机结构,这种计算机通常仅包含一个处理器(CPU)和一个存储器(主存),处理器在一段时间内仅执行一条指令,按指令流规定的顺序串行执行指令。

为了提高速度,有些SISD计算机会采用流水线技术

SIMD 单指令流多数据流结构

SIMD是指一个指令流同时对多个数据流进行处理,一般称为数据级并行技术

这种结构的计算机通常由一个指令控制部件,多个处理单元组成。每个处理单元虽然执行同一条指令,但是每个单元都有自己的地址寄存器,这样每个单元都有不同的数据地址。因此,不同的处理单元执行的同一指令所处理的数据是不同的

SIMD在使用for循环处理数组时最有效

SIMD在使用case,switch 语句时效率最低

SIMD是数据级并行模式

MISD 多指令流单数据流结构

MISD是指同时执行多条指令,处理同一个数据,实际并不存在这样的计算机

MIMD 多指令流多数据流结构

MIMD是指同时执行多条指令分别处理多个不同的数据,MIMD分为多计算机系统和多处理器系统

多计算机系统中的每个计算机节点都具有各自的私有存储器,并且具有独立的主存地址空间,不能通过存取指令来访问不同节点的私有存储器,而要通过消息传递进行数据传送,也称消息传递MIMD

多处理器系统是共享存储多处理器(SMP)系统的简称,具有共享的单一地址空间,通过存器指令来访问系统中的所有存储器,也称共享存储MIMD

MIMD是一种并行程度更高的线程级并行技术或线程级以上并行计算模式

向量处理器是SIMD的变体,是一种实现了直接操作一维数组(向量)指令集的CPU,而串行处理器只能处理单一数据集


硬件多线程基本概念

在传统的CPU中,线程的切换包含一系列开销,频繁的切换会极大影响系统的性能,为了减少线程切换的开销,便诞生了硬件多线程

在支持硬件多线程的CPU中,必须为每个线程提供单独的通用寄存器、单独的程序计算器PC等

线程的切换只需激活选中的寄存器,从而省略了与存储器数据交换的环节

硬件多线程有3种实现方式:

细粒度多线程

粗粒度多线程

同时多线程

硬件多线程-3种

Inter处理器中的超线程(Hyper-Threading)就是同时多线程SMT ,即在一个单处理器或单个核中设置了两套线程状态部件,共享高速缓存和功能部件


多核处理器的概念

多核处理器是指将多个处理单元集成到单个CPU中,每个处理单元称为一个核(core).每个核都有自己的Cache,或共享同一个Cache。

所有核一般是对称的,并且共享存储器

多核处理器的基本概念

采用多核CPU可以降低计算机系统的功耗和体积

多核CPU属于空间并行 指硬件资源重复

流水线技术是-时间平行


共享内存多处理器的基本概念

具有共享的单一物理地址空间的多处理器被称为共享内存多处理器(SMP),处理器通过存储器中的共享变量互相通信,所有处理器都能够通过存取指令访问任务存储器的位置。

!!注意,即使这些系统共享同一个物理地址空间,它们仍在自己的虚拟地址空间中单独运行程序

单一地址空间的多处理器有两种类型:

统一存储访问(UMA)多处理器

每个处理器对所有存储单元的访问时间是大致相同的,根据处理器与共享存储器之间的连接方式,分为基于总线、基于交叉开关网络和基于多级交换网络连续等几种处理器。

非统一存储访问(NUMA)多处理器

某些访存请求要比其他的快,具体取决与哪个处理器提出了内存访问请求以及访问哪个字

这是由于主存被分割并分配给了同一机器上的不同处理器或内存控制器

处理器中不带高速缓存时,被称为NC-NUMA

处理器带有一致性高速缓存时,CC-NUMA

NUMA架构比UMA架构的运算扩展性更强

UMA框架需要解决的重要性问题是Cache一致性

参考:《王道计算机组成原理》

posted @   林之在  阅读(666)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示