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

四、计算机组成原理——第5章:存储系统

目录

5.1 CPU的功能和基本结构

5.1.1 CPU的功能

5.1.2CPU的基本结构

1.运算器

2.控制器

5.1.3CPU的寄存器

1.运算器中的寄存器

2.控制器中的寄存器

5.2指令执行过程

5.2.1指令周期

5.2.2指令周期的数据流

1.取指周期

2.间址周期

3.执行周期

4.中断周期

5.2.3指令执行方案

1.单周期处理器

2.多周期处理器

3.流水线处理器

5.3数据通路的功能和基本结构

5.3.1数据通路的功能

5.3.2数据通路的组成

1.组合逻辑元件(操作元件)

2.时序逻辑元件(状态元件)

5.3.3数据通路的基本结构

1.CPU内部单总线方式

2.CPU内部多总线方式

3.专用数据通路方式

5.3.4数据通路的操作举例

1.通用寄存器之间传送数据

2.从主存读取数据

3.将数据写入主存

4.执行算术或逻辑运算

5.修改程序计数器的值

5.4控制器的功能和工作原理

5.4.1控制器的结构和功能

5.4.2硬布线控制器

5.4.3微程序控制器

1.微程序控制的基本概念

(1)微命令与微操作

(2)微指令与微周期

(3)主存储器与控制存储器

(4)程序与微程序

2.微程序控制器的组成和工作过程

(1)微程序控制器的基本组成

(2)微程序控制器的工作过程

(3)微程序和机器指令

3.微指令的编码方式

(1)直接编码(直接控制)方式

(2)字段直接编码方式

(3)字段间接编码方式

4.微指令的地址形成方式

5.微指令的格式

(1)水平型微指令

(2)垂直型微指令

6.硬布线和微程序控制器的特点

(1)硬布线控制器的特点

(2)微程序控制器的特点

5.5异常和中断机制

5.5.1异常和中断的基本概念

5.5.2异常和中断的分类

1.异常的分类

(1)故障(Fault)

(2)自陷(Trap)

(3)终止(Abort)

2.中断的分类

(1)可屏蔽中断

(2)不可屏蔽中断

5.5.3异常和中断响应过程

(1)关中断

(2)保存断点和程序状态

(3)识别异常和中断并转到相应的处理程序

5.6指令流水线

5.6.1指令流水线的基本概念

5.6.2流水线的基本实现

1.流水线设计的原则

2.流水线的逻辑结构

3.流水线的时空图表示

5.6.3流水线的冒险与处理

1.结构冒险

2.数据冒险

(1)延迟执行相关指令

(2)采用转发(旁路)技术

(3)load-use数据冒险的处理

3.控制冒险

5.6.4流水线的性能指标

1.流水线的吞吐率

2.流水线的加速比

5.6.5高级流水线技术

1.超标量流水线技术

2.超长指令字技术

3.超流水线技术

5.7多处理器的基本概念

5.7.1SISD、SIMD、MIMD的基本概念

1.单指令流单数据流(SISD)结构

2.单指令流多数据流(SIMD)结构

3.多指令流单数据流(MISD)结构

4.多指令流多数据流(MIMD)结构

5.7.2硬件多线程的基本概念

1.细粒度多线程

2.粗粒度多线程

3.同时多线程

5.7.3多核处理器的基本概念

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

5.8常见问题和易混淆知识点



5.1 CPU的功能和基本结构

5.1.1 CPU的功能

中央处理器(CPU)由运算器和控制器组成。其中,控制器的功能是负责协调并控制计算机各部件执行程序的指令序列;运算器的功能是对数据进行加工。CPU的具体功能包括:

1)指令控制。完成取指令(也称取指)、分析指令和执行指令的操作,即程序的顺序控制。

2)操作控制。产生完成一条指令所需的操作信号,把各种操作信号送到相应的部件,从而控制这些部件按指令的要求正确执行。

3)时间控制。严格控制各种操作信号的出现时间、持续时间及出现的时间顺序。

4)数据加工。对数据进行算术和逻辑运算。

5)中断处理。对运行过程中出现的异常情况和中断请求进行处理。


5.1.2CPU的基本结构

在计算机系统中,CPU主要由运算器和控制器两大部分组成

1.运算器

运算器主要由算术逻辑单元(ALU)、暂存器、累加寄存器(ACC)、通用寄存器组(GPRs)、程序状态字(PSW)寄存器、移位寄存器、计数器(CT)等组成。主要功能是根据控制器送来的命令,对数据执行算术运算(加、减、乘、除)、逻辑运算(与、或、非、异或、移位、求补等)或条件测试(用于设置ZF、SF、OF和CF等标志位,作为条件转移的判断条件)。

2.控制器

控制器主要由程序计数器(PC)、指令寄存器(IR)、指令译码器(ID)、时序电路和微操作信号发生器等组成。主要功能是执行指令,每条指令的执行是由控制器发出的一组微操作实现的。

控制器的工作原理是,根据指令操作码、指令的执行步骤(微命令序列)和条件信号来形成当前计算机各部件要用到的控制信号。计算机整机各硬件系统在这些控制信号的控制下协同运行,产生预期的执行结果。控制器是整个系统的指挥中枢,在控制器的控制下,运算器、存储器和输入/输出设备等功能部件构成一个有机的整体,根据指令的要求指挥全机协调工作。


5.1.3CPU的寄存器

◆汇编程序员可见的寄存器

CPU中的寄存器按汇编语言(或机器语言)程序是否可访问,可分为两类:一类是用户可见寄存器,可对这类寄存器编程,以通过使用这类寄存器减少对主存储器的访问次数,如通用寄存器组(含基址/变址寄存器)、程序状态字寄存器、程序计数器;另一类是用户不可见寄存器,对用户是透明的,不可对这类寄存器编程,它们被控制部件使用,以控制CPU的操作,如存储器地址寄存器、存储器数据寄存器、指令寄存器、暂存寄存器、累加寄存器、移位寄存器。

◆CPU中各种寄存器的作用

1.运算器中的寄存器

1)通用寄存器组(GPRs)。用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等,如AX、BX、CX、DX、SP等。在指令中要指定寄存器的编号,才能明确是对哪个寄存器进行访问。SP是堆栈指针,用于指示栈顶的地址。

2)累加寄存器(ACC)。它是一个通用寄存器,用于暂时存放ALU运算的结果。

3)移位寄存器(SR)。不但可用来存放操作数,而且在控制信号的作用下,寄存器中的数据可根据需要向左或向右移位。

4)暂存寄存器。用于暂存从数据总线或通用寄存器送来的操作数,以便在取出下一个操作数时将其同时送入ALU。暂存寄存器对应用程序员是透明的(不可见)。

5)程序状态字(PSW)寄存器。保留由算术/逻辑运算指令或测试指令的运行结果而建立的各种状态信息,如溢出标志(OF)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。每个标志位通常由一位触发器来保存,这些标志位组合在一起称为程序状态字。

2.控制器中的寄存器

◆PC和IR的位数与主存储器空间和指令字长的关系

1)程序计数器(PC)。用于指出欲执行指令在主存储器中的存放地址。若PC和主存储器均按字节编址,则PC的位数等于主存储器地址位数。CPU根据PC的内容从主存储器中取指令,然后送入指令寄存器。指令通常是顺序执行的,因此PC具有自动加4的功能(这里的“1”是指一条指令的字节数);当遇到转移类指令时,PC的新值由指令计算得到。

2)指令寄存器(IR)。用于保存当前正在执行的指令,IR的位数等于指令字长。




5.2指令执行过程

5.2.1指令周期

CPU每取出并执行一条指令所需的全部时间称为指令周期,如图5.2所示。取指阶段完成取指令和分析指令的操作,也称取指周期。执行阶段完成执行指令的操作,也称执行周期。

因为各种指令操作功能不同,所以各种指令的指令周期可能是不同的。对于无条件转移指令JMPX,在执行阶段不需要访问主存,只包含取指阶段(包括取指和分析)和执行阶段,所以其指令周期仅包含取指周期和执行周期。对于间接寻址的指令,为了取操作数,需要先访问一次主存,取出有效地址,然后访问主存,取出操作数,所以还需包括间址周期。间址周期介于取指周期和执行周期之间。当CPU采用中断方式实现主机和I/O设备的信息交换时,CPU在每条指令执行结束前,都要发中断查询信号,若有中断请求,则CPU进入中断响应阶段,也称中断周期。这样,一个完整的指令周期可包括取指、间址、执行和中断4个周期,如图53所示。

◆指令执行的过程

当CPU执行指令时,首先进入取指周期,从PC指出的主存储器单元中取出指令,送至指令寄存器,同时PC加“1”以作为下一条指令的地址。当遇到转移指令等改变执行顺序的指令时,在PC加“1”后会重新计算并更新PC值。然后判断是否有间接寻址,若有,则进入间址周期以获取操作数的有效地址。之后进入执行周期,完成取操作数、执行运算和存操作数的任务。执行周期结束后,若CPU检测到中断请求,则进入中断周期,此时需要关中断、保存断点,并转向中断服务程序。关于中断的具体内容,见本章的5.5节。


5.2.2指令周期的数据流

数据流是根据指令要求依次访问的数据序列。在指令执行的不同阶段,要求依次访问的数据序列是不同的。而且对于不同的指令,它们的数据流往往也是不同的。

1.取指周期

取指周期的任务是根据PC中的内容从主存储器中取出指令代码并存放在IR中。取指周期的数据流如图5.4所示。PC中存放的是指令的地址,根据此地址从内存单元中取出的是指令,并放在指令寄存器IR中,取指令的同时,PC加1。取指周期的数据流向如下:

1)PC①MAR②地址总线③存储器。

2)CU发出读命令④控制总线⑤主存储器。

3)主存储器⑥数据总线⑦MDR⑧IR(存放指令)。

4)CU发出控制信号⑨PC加1。

2.间址周期

间址周期的任务是取操作数有效地址。以一次间址为例(见图5.5),将指令中的地址码送到MAR并送至地址总线,此后CU向主存储器发出读命令,以获取有效地址并存至MDR。

间址周期的数据流向如下:

1)Ad(IR)(或MDR)①MAR②地址总线③主存储器。

2)CU发出读命令④控制总线⑤主存储器。

3)主存储器⑥数据总线⑦MDR(存放有效地址)。

其中,Ad(IR)表示取出IR中存放的指令字的地址字段。

3.执行周期

执行周期的任务是取操作数,并根据IR中的指令字的操作码通过ALU操作产生执行结果。不同指令的执行周期操作不同,因此没有统一的数据流向。

4.中断周期

中断周期的任务是处理中断请求。假设程序断点存入堆栈中,并用SP指示栈顶地址,而且进栈操作是先修改栈顶指针,后存入数据,数据流如图5.6所示。

中断周期的数据流向如下:

1)CU控制将SP减1,SP①MAR②地址总线③主存储器。

2)CU发出写命令④控制总线⑤主存储器。

3)PC⑥MDR⑦数据总线⑧主存储器(程序断点存入主存储器)。

4)CU(中断服务程序的入口地址)⑨PC。


5.2.3指令执行方案

一个指令周期通常要包括几个执行步骤,每个步骤完成指令的一部分功能,几个依次执行的步骤完成这条指令的全部功能。不同的处理器采用不同的方案来安排指令的执行步骤。

1.单周期处理器

◆单周期CPU的特点

单周期处理器对所有指令都选用相同的执行时间来完成。此时每条指令都在一个时钟周期内完成(CPI=1),指令之间串行执行,即下一条指令只能在前一条指令执行结束后才能启动。因此,指令周期取决于执行时间最长的指令的执行时间。对于那些本来可以在更短时间内完成的指令,仍要在这个较长的周期内完成,会降低整个系统的运行速度。

2.多周期处理器

多周期处理器对不同类型的指令选用不同的执行步骤。指令需要几个周期就为其分配几个周期,因此可选用不同个数的时钟周期来完成不同指令的执行过程(CPI>1),不再要求所有指令占用相同的执行时间。多指令周期方案中指令之间仍是串行执行的。

3.流水线处理器

流水线处理器采用指令之间并行执行的方案,其追求的目标是力争在每个时钟周期完成一条指令的执行过程(只在理想情况下才能达到该效果,此时CPI=1)。这种方案通过在每个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。




5.3数据通路的功能和基本结构

5.3.1数据通路的功能

随着技术的发展,更多的功能逻辑被集成到CPU芯片中,但不论CPU的内部结构多么复杂,它都可视为由数据通路(DataPath)和控制部件(ControlUnit)两大部分组成。

数据在指令执行过程中所经过的路径,包括路径上的部件,称为数据通路,ALU、通用寄存器、状态寄存器、异常和中断处理逻辑等都是指令执行时数据流经的部件,都属于数据通路的一部分。数据通路描述了信息从哪里开始,中间经过哪些部件,最后被传送到哪里。数据通路由控制部件控制,控制部件根据每条指令功能的不同,生成对数据通路的控制信号。


5.3.2数据通路的组成

组成数据通路的元件主要分为组合逻辑元件和时序逻辑元件两类。

1.组合逻辑元件(操作元件)

在组合逻辑元件中,任何时刻产生的输出仅取决于当前的输入。组合逻辑元件不含存储信号的记忆单元,也不受时钟信号的控制,输出与输入之间无反馈通路,信号是单向传输的。数据通路中常用的组合逻辑元件有加法器、算术逻辑单元(ALU)、译码器、多路选择器、三态门等,如图5.7所示。

◆三态门、多路选择器的应用

图5.7中虚线表示控制信号,译码器可用于操作码或地址码译码,n位输入对应2”种不同组合,因此有2"个不同输出。多路选择器(MUX)需要控制信号Select来确定选择哪个输入被输出。三态门可视为一种控制开关,由控制信号EN决定信号线的通断,当EN=1时,三态门被打开,输出信号等于输入信号;当EN=0时,输出端呈高阻态(隔断态),所连寄存器与总线断开。

2.时序逻辑元件(状态元件)

任何时刻的输出不仅与该时刻的输入有关,还与该时刻以前的输入有关,因此时序电路必然包含存储信号的记忆单元。此外,时序逻辑元件必须在时钟节拍下工作。各类寄存器和存储器,如通用寄存器组、程序计数器、状态/移位/暂存/锁存寄存器等,都属于时序逻辑元件。


5.3.3数据通路的基本结构

数据通路的基本结构主要有以下几种。

1.CPU内部单总线方式

将ALU及所有寄存器都连接到一条内部总线上,称为单总线结构的数据通路。这种结构比较简单,但数据传输存在较多的冲突现象,性能较低。此总线在CPU内部,注意不要把它与连接CPU、存储器和外设的系统总线相混淆。图5.8所示为单总线的数据通路和控制信号。

◆数据通路中的三态门及其作用

在图5.8中,GPRs为通用寄存器组,rs、rd分别为所读、写的通用寄存器的编号;Y和Z为暂存器;FR为标志寄存器,用于存放ALU产生的标志信息。带箭头的虚线表示控制信号,字母加“in”表示该部件允许写入,字母加“out”表示该部件允许输出。MDRin表示内部总线上信息写入MDR,MDRout表示MDR的内容送入内部总线。能输出到总线的部件均通过一个三态门与内部总线相连,用于控制该部件与内部总线之间数据通路的连接与断开。

单周期处理器(CPI=1)不能采用单总线方式,因为单总线将所有寄存器都连接到一条公共总线上,一个时钟内只允许一次操作,无法完成一条指令的所有操作。

2.CPU内部多总线方式

CPU内部有两条或更多的总线时,构成双总线结构或多总线结构。将所有寄存器的输入端和输出端都连接到多条公共通路上,相比之下单总线中一个时钟内只允许传送一个数据,因此指令执行效率很低,因此采用多总线方式,同时在多个总线上传送不同的数据,提高效率。

3.专用数据通路方式

根据指令执行过程中的数据和地址的流动方向安排连接电路,避免使用共享的总线,性能较高,但硬件量大。内部总线是指同一部件(如CPU内部连接各寄存器及运算部件)之间的总线;系统总线是指同一台计算机系统的各部件(如CPU、内存和各类I/O接口)间互相连接的总线。


5.3.4数据通路的操作举例

总线是一组共享的传输信号线,它不能存储信息,任一时刻也只能有一个部件把信息送到总线上。下面以图5.8所示的单总线数据通路为例,介绍一些常见操作的流程及控制信号。

1.通用寄存器之间传送数据

在寄存器和总线之间有两个控制信号:Rin和Rout。当Rin有效时,控制将总线上的信息存到寄存器R中;当Rout有效时,控制将寄存器R的内容送至总线。下面以程序计数器PC为例,将PC的内容送至MAR。实现该操作的流程及控制信号为

2.从主存读取数据

从主存中读取的信息可能是数据或指令,现以CPU从主存中取指令为例,说明数据在单总线数据通路中的传送过程。实现该操作的流程及控制信号为

第一步,将PC的内容通过内部总线送至MAR,需要1个时钟周期。第二步,CU向主存发出读命令,从MAR所指主存单元读取一个字,并送至MDR;同时PC加1为取下一条指令做准备,需要1个主存周期。第三步,将MDR的内容通过内部总线送至IR,需要1个时钟周期。

3.将数据写入主存

将寄存器R1的内容写入寄存器R2所指的主存单元,完成该操作的流程及控制信号为</

http://www.lryc.cn/news/602618.html

相关文章:

  • 电子电路原理学习笔记---第4章二极管电路---第3天
  • 架构师增效指南:飞算JavaAI:需求驱动下的智能微服务拆分与治理
  • 浏览器安全演进:从裸指针到 raw_ptr 的实践与思考
  • leetcode 2044. 统计按位或能得到最大值的子集数目 中等
  • RV1126B-P机器视觉应用AIoT及边缘计算算力达2.0支持 HDR 、 3DNR
  • 网安学习NO.19
  • 构建 P2P 网络与分布式下载系统:从底层原理到安装和功能实现
  • SystemClock_Config 函数解析
  • Office-PowerPoint-MCP-Server – 基于MCP的开源PPT生成与编辑工具
  • 【WRF-Chem第二期】WRF-Chem有关 namelist 详解
  • Leaflet 综合案例-矢量图层控制
  • Python Pandas.merge_ordered函数解析与实战教程
  • OpenLayers 综合案例-区域掩膜
  • springCloudAlibaba集成Dubbo
  • Yolo底层原理学习--(第二篇)
  • 【HTTP】防XSS+SQL注入:自定义HttpMessageConverter过滤链深度解决方案
  • window显示驱动开发—Direct3D 11 视频设备驱动程序接口 (DDI)
  • 网络编程接口htonl学习
  • CMakelists.txt 实现多级目录编译
  • 星辰大海的征途:星宸科技的中国芯片突围战
  • GaussianMesh运行指南
  • MySQL的常用数据类型详解
  • 飞算科技重磅出品:飞算 JavaAI 重构 Java 开发效率新标杆
  • 塔能科技物联运维平台及城市照明市场竞争力分析
  • kruscal重构树
  • 【Java EE】多线程-初阶-线程的状态
  • Ettus USRP X410/X440 运行 ADC 自校准
  • ubuntu qt环境下出现No suitable kits found解决方案
  • 2025最新Mybatis-plus教程(三)
  • 目前市面上有Android 16KB的手机吗