# 4计算机组成与原理

# 第一章:概论

  1. 计算机的基本概念
  2. 计算机的诞生和发展
  3. 系统硬件组成(主要部件、系统结构)
  4. 计算机的性能指标

# 1.1 计算机的基本概念

电子计算机是一种可以存储程序,并且通过执行程序指令,可以自动、高速、精确地对数字信息进行各种复杂处理,然后输出运算结果的高科技智能电子设备。

==冯诺依曼体系架构==:输入设备、输出设备、运算器、控制器、存储器(当前运算器和控制器集成在CPU内部)

计算机的工作流程:编写程序=》输入程序=》存储程序=》转换为指令序列=》执行指令=》输出结果

./image-20230529140506680

计算机总体上分为两大类:模拟计算机和数字计算机

模拟计算机:由模拟运算器件构成,处理在时间和数值上连续的模拟量(如:电压、电流等);

数字计算机:由数字逻辑器件构成,处理离散的数字量。数字计算机可分为专用计算机(是以快速、经济和高集成度为主要指标的特殊计算机,它是针对特定任务设计的计算机,适应性较差,如:工控机、ATM等)和通用计算机(适应性较高,但是牺牲了效率、速度和经济性,如个人电脑)。

计算机按照系统规模和计算能力也可以分为:

  • 巨型机(超算)
  • 大型机
  • 小型机
  • 微型机

系统规模和计算能力依次递减

image-20230529141407980



# 1.2计算机的诞生和发展

==冯·诺伊曼体系:==

  1. ==用二进制代码表示程序和数据== 任何任何复杂运算和操作都转换成用二进制代码表示的指令,数据也用二进制代码来表示

  2. ==采用存储程序的工作方式(核心思想)== 将程序和数据存储起来(存储程序),让计算机自动地执行指令,完成各种复杂的运算操作

新型现代计算机硬件组成:

输入设备、输出设备、运算器、存储器、控制器 冯诺依曼体系奠定了现代电子计算机的理论基础

计算机发展历程:

image-20230529142458872

# 1.3计算机系统的组织

硬件:是指构成计算机系统的实体和装置之类的有形设备,是组成计算机系统的物质基础。

硬件系统组成

  1. 硬件系统基本组成模型

    image-20230529143538814

2.主要功能部件

(1)CPU(Central Processing Unit):主要由运算器和控制器等组成

运算器:

  • 主要完成算术和逻辑两类运算
  • 主要由ALU(算术逻辑单元)构成,执行算术、逻辑运算以及移位循环操作等,是CPU的主要执行部件
  • ALU以全加器为核心运算的位数越多,计算精度就越高
  • 运算器一般数据宽度为8,16,32,64位

控制器:

  • 产生控制命令(微命令),控制全机操作

  • 基本组成

(2)存储器:以二进制代码的形式存储数据和数字化后的程序

  • 存储单元:在存储器中保存一个n位二进制数的n个存储电路,组成一个存储单元。
  • 地址:存储器由许多存储单元组成,每个存储单元的编号,称为地址。
  • 存储容量:存储器所有存储单元的总数,KB,MB,GB,TB,PB(k=1024)
  • 内存储器:主存,用来存放直接为CPU提供服务的程序和数据存储器,由半导体芯片构成,工作速度快
  • 外存储器:辅存,存储容量很大的存储器,速度较慢

(3)输入|输出设备:执行输入|输出信息的转换

  • 输入时:原始信息 =》 二进制代码,送入主机
  • 输出时:处理结果(二进制代码) =》 用户能够直接感知的形式(字符,图像,声音),并输出给用户

(4)总线(BUS):能为多个部件分时共享一组信息传递通路,根据传输信息的不同可分为三类

  1. 传送各种数据信息的数据总线(Data Bus)
  2. 传送各种地址信息的地址总线(Address Bus)
  3. 传送各种控制信号的控制总线(Control Bus)

(5)接口:外设的种类、数量了变,为了将总线与各类外设连接,须在两者之间设置一些部件,具有缓冲、转换、连接等功能,这些部件就是接口



3.计算机硬件的典型架构

  1. 微型计算机:南-北桥架构 (opens new window)

    image-20230529150403600

    什么是 BIOS,BIOS 有什么用? - 知乎 (zhihu.com) (opens new window)

    PCI-E通道是个什么东西?他是干啥的? - 知乎 (zhihu.com) (opens new window)



  2. 小型计算机:多处理器架构 (opens new window)

    image-20230529150451724
  3. 超级计算机:集群式架构 (opens new window)

image-20230529150535729



硬件的特点:可以高速实现逻辑和运算功能,但是难以实现复杂功能或计算,受到控制复杂性指标的制约。

软件:是指由硬件所表达的各种内在信息,包括数据与控制程序。因为它们是无形的东西,所以称为软件或软设备。

软件可分为系统程序和应用程序:

  • 系统程序:负责系统调度管理,提供运行和开发环境、各种服务,确保系统运行良好
  • 应用程序:利用计算机来解决应用问题所编制的程序,如工程设计程序、数据处理程序、自动控制程序、企业管理程序、情报检索程序、科学计算程序等等

软件的特点:易于实现各种逻辑和运算功能,但是常受到速度指标和软件容量的制约

计算机中的软件,理论上都可以“固化”或“硬化”成硬件,以高执行速度

软硬件系统层次结构:

image-20230529151031738



# 1.4计算机系统的性能指标

1.基本字长:指一次数据操作的基本位数,它会影响计算的精度、指令的功能

2.外频:外部频率或基频,也叫系统时钟频率

image-20230529154330380



3.常用的CPU性能指标

  1. ==CPU的主频===外频×倍频系数,1秒中的时钟脉冲数,即时钟周期的倒数

  2. ==CPU时钟周期== :一个时钟脉冲所需要的时间,也叫节拍脉冲或T周期,它是CPU中最小的时间单位

  3. ==IPS==,每秒执行指令数

  4. ==CPI==,Clock-cycle Per Instruction,执行一条指令所需要的时钟周期数 = 总时钟周期数/IC;

  5. ==IC==:总指令数

  6. ==FLOPS==,每秒执行浮点运算的次数

  7. ==MIPS==:每秒执行多少百万条指令 = 指令条数/(执行时间x10^6) = 主频/CPI

  8. ==CPU的功耗==

    • 动态功耗 P=C✖U^2✖f C:负载电容 U:工作电压 f:工作频率
    • 静态功耗
  9. ==指令周期(Instruction Cycle)==:CPU从存储器中取出并执行一条指令所需的全部时间称之为指令周期。

  10. ==机器周期(CPU周期)==:在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为机器周期。

WARNING

==机器周期,指令周期,时钟周期三者之间的关系:指令周期由若干个机器周期组成,而机器周期又包含若干个时钟周期。==

值得注意的是,若给出测试程序包含多条指令,则CPI就是这几条指令的数学期望 例如:指令类型|所占比例|CPI A 50% 2 B 20% 3 C 10% 4 D 20% 5 CPI = 2x0.5 + 3x0.2 + 4x0.1 + 5x0.2 = 3

4.数据传输率:单位时间内数据的传输量

带宽= 位宽✖工作频率 / 8(B/s或Bps)

WARNING

计算PCI-E总线的带宽时,一般还要考虑编码方式、单双工模式和通道路数等。

ps:image-20230529155953447



5.存储器的容量

  • 内存(主存)容量:指可编址的存储单元个数×存储单元的位宽

    ​ 地址码位数 编址单位

  • 外存(辅存)容量:存储器所能存储的最大数据量,外存容量与总线地址码位数无关

# 第二章:数据表示、运算与校验

①数字型数据的计数制、符号数的表示、定点数和浮点数 ②基本的运算方法 ③字符的表示 ④常用的数据校验方法

# 2.1数值型数据的表示方法

进位计数制

数字的基与权:基数,权重w

image-20230530103440253

进制之间的转换

  • 整数 10 -> 2 (除2取余法)
  • 小数 10 -> 2 (乘2取整法)
  • 整数 2 -> 10(按权相加)
  • 小数 2 -> 10(按权相加)
  • 16进制↔2进制(逐位转换/分组转换)

二 - 十进制:Binary Coded Decimal ,用四位二进制数表示一位十进制数,BCD码或者8421码

13710=000100110111BCD

十进制<->二进制

image-20230530104653448

数的符号表示规则:

“0”表示正好“+”,“1”表示负号“-”

二进制的码制:

  • ==原码== :一个二进制数,用0-1代码表示符号,数值位不变就得到与该二进制数真值对应的原码

    ps:真值 + 1001010 原码:0 1001010

    字长8位表示范围:-127~+127

                           <div style="text-align:center"> [+127]<sub>原</sub> =0 1111111</div>
    
    [–127] =1 1111111

    数据“0”有两种原码形式:[+0]=0 0000000 [-0 ]=1 0000000

  • ==反码==: 正数情况下,X=X (X>=0)

          <div style="text-align:center">  X= +1101001  (真值+105)
    

    ​ X=X=0 1101001

    ​ ==负数情况下:符号位保持为“1”,数值位分别“按位取反”==

    ​ X= -1101001 (真值-105)

    ​ X=1 1101001 X=1 0010110

    字长8位表示范围:-127~+127

    ​ [+127]=0 1111111 ​ [- 127]=1 000000

    数据“0”有两种反码形式:[+0]=0 0000000 [-0 ]=1 1111111

  • ==补码==:[X]=X+2n (模2n),n为编码位数

    ​ 正数情况下,X=X (X>=0)

    ​ X= +1101001 (真值+105) ​ X=X=0 1101001

    ​ 负数情况下:[X]补=[X]反+1 (即X<0时) 符号位保持为“1”,数值位分别“按位取反”,末位再加1

    ​ X= -1101001 (真值-105)

    ​ X=1 1101001 X=1 0010110

    字长8位表示范围:-128~+127

    ​ [+127]=0 1111111 ​ [- 128]=1 000000

    补码比原码和反码多表示1个负值,即-128

    补码最高位既是符号位又是运算位

​ 数值“0”只有1种补码形式:[+0]补=[-0]补= 0 0000000

  • ==移码(增码)==:移码通常用于表示浮点数的阶码。阶码一般为整数,故移码通常只用于表示整数

​ 对定点整数x,它的移码是: ​ [x]移=2n-1+x,其中-2n-1 < x < 2n-1

​ 这里的n为X位数

​ 移码表示范围与补码一致,0也只有1个移码。 ​ 正数:将原码符号位变反,即得到移码。 ​ 负数:将原码连同符号位一起变反,末位再加1,即得到移码(与变补等效)。 ​ 补码和移码: 符号相反、数值位相同

​ ps: 阶码的为6位,X表示其真值 ​ X移=25+X (-25<X<25

​ 当正数X=+10101时, X移=25+X=110101 ​ 当负数X=-10101时, X移=25+X=25-10101=001011

原码和补码之间的转换:

image-20230530123407731 image-20230530123426450 image-20230530123444374

定点数与浮点数

1.定点数的表示:数的小数点固定在同一位置不变。

带符号的定点小数:约定所有数的小数点的位置,固定在符号位之后。

image-20230530124554500



带符号的定点整数:小数点的位置固定在最低数值位之后

image-20230530124658946



无符号定点整数:小数点的位置固定在最低数值位之后

image-20230530124751817



浮点数的表示原理

浮点表示中,小数点的位置可按需浮动

格式模型:./image-20230530125000763



引入浮点数表示的意义:相同字长时,浮点数的表示范围更大、精度更高!

image-20230530125131517



浮点数的机器(存储)格式

浮点数真值:N =±RE ×M

image-20230530125243430



尾数M的规格化表示:约定尾数M的值域,使数的表示是唯一的、确定的;规格化的目的 → 使浮点数的表示代码“唯一”

image-20230530125435305



IEEE754格式的浮点数

image-20230530125526997 image-20230530125542589

# 2.2字符表示方法

ASCII码

  • American Standard Code for Information Interchange
  • 字符总数:128 包含数字0~9,大小写英文字母,运算符,标点符号,标示符,格式控制符等等
  • 代码宽度:7b
  • 存储宽度:7b(有效位)+1b(奇偶校验位) =8b
img

汉字编码

  • 汉字的输入码:数字码,拼音码、字形码

    数字输入码

    ​ 常用的是国标区位码,用数字串代表汉字将6763个二级汉字分为94个区,每区94位,把汉字表示成二维数组,数组下标就是区 位码

    ​ 无重码,输入码与内部码的转换方便,代码难以记忆

    ​ ps:平↔3829(位于码表38区、29位)



    拼音输入码

    ​ 以汉字拼音为基础的输入方法(如微软拼音)

    ​ 简单方便;同音字多,重码率高,影响输入速度



    字形输入码

    ​ 根据汉字的书写形状来进行编码(如五笔字型);把汉字的笔划部件用字母或数字进行编码,按笔划顺序依次输入,就能对应 一个汉字

    ​ 简单方便,符合书写习惯;重码率高,需要记住字形结构



  • 汉字的内码:用于汉字信息的存储、交换、检索等操作的计算机内代码,一般用两个字节表示。

    国标码:10进制区位码转成16进制,再加2020H

    机内码:国标码+8080H(与ASCII区别),或者区位码转成16进制+A0A0H

    “啊”的区位码160110=1001H 国标码=1001H+2020H=3021H 机内码=1001H+A0A0H=B0A1H



  • 汉字字模码:用点阵表示的汉字字形代码,是汉字的输出形式

    image-20230530131303179

TIP

①字模点阵用来构成汉字库,并非而机内存储。 ②字库中存储每个汉字的点阵代码,用于汉字的显示输出或打印输出。 ③当显示输出或打印输出时才检索字库,输出字模点阵,得到字形。

汉字的输入码、内码、字模码分别是用于计算机输入、内部处理、输出三种不同用途的编码;



# 2.3数据处理与存储

移位操作

逻辑移位:数码位置变化 算术移位:符号位不变、数码位置变化

  1. 正数补码\原码移位规则

    数符不变 (单:符号位不变;双:第一符号位不变)

    空位补0 (右移时第2符号位移至尾数最高位)

    image-20230530154042078



  2. 负数补码移位

    数符不变 (单:符号位不变;双:第1符号位不变)

    左移空位补0

    右移空位补1 (第二符号位移至尾数最高位)

image-20230530154553009

舍入方法

  • 0舍1入(原码,补码)
  • 末位恒置1(原码,补码)

数位扩展与压缩

  1. 符号扩展:直接把符号位(0/1)填充到扩展位 ps:000A->0000 000A
  2. 0-扩展:高位均全补0(针对无符号数或正数)ps: 002A->0000 002A
  3. 位数压缩:弃高位、留低位 ps:F12B800A->800A

数据存储(按字节编址)

  • 小端模式/Little-Endian

    小地址单元存储数据的低位

    FF FF 00 01 ===>FFFF0001

    #9 #8 #7 #6

  • 大端模式/Big-Endian

    大地址单元存储数据的低位

    FF FF 00 01 ===>0100FFFF

    #9 #8 #7 #

数据字的存储对齐

一个多字节数据字再进行存储安排的时候,其首字节数据安排的起始地址位置

  • 按边界对齐

    字地址:4的倍数,地址最低两位为00

    半字地址:2的倍数 ,地址最低一位是0

    字节地址:1的倍数,任意地址

    image-20230530162049142

    访存次数相对较少,但是空间利用率不高(内存碎片)

  • 不按边界对齐

    任意

    image-20230530162109967

    访存次数相对较多,但是空间利用率提高

数据的校验

(1)==奇偶校验==

  • 编码规则:增设1位校验位,从而使1的个数是奇或偶数

    ps:待编码信息 1011 0001

    ​ 奇校验编码 1011 0001 1

    ​ 偶校验编码 1011 0001 0

    所以奇偶校验均不能发现偶数位错,也无法定位错误

(2)==海明校验==

  • 将代码组织为若干分组,每组进行奇偶校验;是一种多重分组奇偶校验; 能够检验是否出错,也能定位出错位;

    待编码信息K位,分成r组,每组1个校验位

    校验码位数:r位;

    海明编码总长:N=k+r位

    海明编码时:各组单独进行奇偶校验编码,以确定各组的校验位。

    代码检验时:每组能产生1个指误码,2r种可能的指误代码 :指误码为全0——>海明编码无错 ; 其余(2r-1)种指误代码——>分别用于指示(2r-1)种只有1位错的情况

    DANGER

    ==N = k+r≤ 2r-1==

  • ==编号为2的幂次方的位(1,2,4,8,16,……)依次填r位校验码。剩下的为(3,5,6,7,9,……)依次用K位数据来填充。==

    ==K位数据对应的位号拆分为2的幂次方和,含有的幂次项表示其组成第几组的校验码==

    image-20230530184118623

    p1 p2 p3插入2的幂次方;有效信息依次插入空位 A4位号为7=1+2+4 所以其组成第1,2,3组指误码

(3)==循环冗余校验(CRC, Cyclic Redundancy Check)==

  • 校验原理:一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。

  • 生成步骤

    (1)、将x的最高次幂为R的生成多项式G(x)转换成对应的R+1位二进制数。 (2)、将信息码左移R位,相当于对应的信息多项式C(x)*x的R次方。 (3)、用生成多项式(二进制数)对信息码做除,得到R位的余数。 (4)、将余数拼到信息码左移后空出的位置,得到完整的CRC码。

    设需要发送的信息为M = 1010001101,CRC8=X5+X4+X2+1产生多项式对应的代码为P = 110101,R=5。在M后加5个0为计算序列:101000110100000,然后对P做模2除法运算,得余数r(x)对应的代码:01110。故实际需要发送的数据是101000110101110。其中CRC校验码就为:01110。

    img



  • CRC的检错和纠错

    基本原理:计算编码与G(x)模2运算的初始余数R:

    ①R为全0,表明数据无错 ②R非全0,表明数据有错

    有错时执行循环:余数补0计算新余数、CRC数据循环左移,新余数为001时D0变反,R再次出现时停止。

    image-20230530191424888 image-20230530191443571

# 第三章:CPU子系统

CPU是计算机内部技术最复杂的子系统,部件众多,架构复杂,功能多样

1.CPU的基本结构:功能部件👊部件之间的通路

2.CPU的设计方法:CISC👊RISC

# 3.1CPU概述

image-20230601100733036

CPU是计算机中核心的部件:

  • 数据运算功能
  • 系统控制功能

CPU的基本结构

image-20230601101036913

==CPU内部主要包括:运算部件、缓存部件、寄存器、控制器、时序部件==,他们通过数据通路/控制通路互相连接,形成CPU的微架构

  1. 运算部件:对操作数进行运算,主要是算术/逻辑运算

  2. 缓存部件:缓存从主存中读取的部分指令/数据,目的是为了提高CPU从主存中读取指令/数据的效率

  3. 寄存器组(堆):存储各种用途的数据信息

  4. 控制器:根据指令、时钟信号、外部信号等信息,产生各种控制信号(微命令),以便控制各种功能部件协同工作,完成指令的功能。

    image-20230601101939622
  5. 时序部件:系统时钟信号经过倍频放大以后,产生执行指令所需要的各种时序信号: ①节拍信号,即CPU时钟周期信号; ②工作周期信号,即机器周期信号; ③指令周期信号。

    image-20230601102144730

    TIP

    时序信号:周期、节拍、脉冲等频率型信号序列。

    产生时序信号的部件称为时序发生器或时序系统,由1个低频振荡器和倍频逻辑组成

    image-20230601102319018

    ::: tips

    寄存器的基本类型

    1.通用寄存器(多个):通用寄存器有全局唯一地址,可通过地址码访问,可在机器指令中直接使用。提供操作数、地址码、存放运算结果等

    2.暂存器(多个):内部专用,无需分配地址码,不能在机器指令中使用,用来暂存产生的临时数据,以备在后续操作过程中使用。

    3.指令寄存器(1个,IR):用于存放指令代码;从存储器(或者指令缓存)中读取到指令以后,就直接存入到指令寄存器中。

    4.程序计数器(1个,PC):用来指明指令在存储器中的存放位置,即存储单元的地址码

    5.程序状态字寄存器(1个,PSW):记录现行程序的运行状态和程序的工作模式,PSW-特征位:进位C、溢出V、零值Z、负值N、奇偶P(具备=1),PSW-编程设定位:决定程序的调试、对中断的响应、程序的运行模式 跟踪位T、允许中断I、程序优先级P、运行模式

    6.地址寄存器(1个,MAR):读写存储器时,先要定位存储单元,因此设置MAR来存放目标单元的地址码。先将有效地址送入MAR,再启动后续的读写操作。

    7.数据缓冲寄存器(1个,MBR):过渡性地存放CPU与主存之间交换的数据。无论是从主存读取的数据,还是写入到主存的数据,都要经过MBR。

    8.堆栈指针(1个,SP):固定存放堆栈的栈顶单元的地址码。根据这个地址码,去读写堆栈。

    9.MDR(memory data register):主存数据寄存器,MDR用来保存要被写入地址单元或者从地址单元读入的数据。

    :::

CPU的工作原理

主要功能:

👊处理指令---控制指令的执行顺序; 👊执行操作---产生控制信号控制部件工作; 👊控制时间---控制各步操作的时序; 👊数据运算---算术和逻辑运算;

==执行流程:==

==👊读取指令---从存储器中读取;== ==👊指令译码---通过控制器进行、产生控制信号;== ==👊指令执行---寻址、取数、运算;== ==👊后续工作---保存结果、响应外部请求等;==


部件的控制方式

  • 同步控制方式:每步操作都向统一的外部时序信号对齐;各步操作之间无交互

    image-20230601105244809
  • 异步控制方式:每步操作都不需向统一的外部时序信号对齐;各步操作之间通过交互应答来实现协同

    image-20230601105222048

外部连接与IO控制任务

外部连接类型:

  1. 单处理机系统:通过前端总线与北桥芯片组连接

    image-20230601105520144
  2. 多处理机系统:高性能CPU中集成了主存、视频和PCI-E接口,CPU之间通过QPI、与芯片组之间通过DMI总线互连。

    image-20230601105701053

CPU在IO控制中的任务 (opens new window)

主机←接口→外围设备

主机与外设之间进行数据输入/输出操作时,在不同的I/O控制模式下,CPU承担的任务各不相同

  • 程序传送模式:CPU直接执行I/O指令
  • 中断模式:CPU执行中断服务程序
  • DMA (opens new window)模式:CPU管理DMA控制器、善后处理
  • IOP和PPU模式:CPU组织I/O程序,管理IOP与PPU,以及善后处理

# 3.2指令系统

==指令==:instruction,计算机执行某类操作的信息的集合,是CPU工作的主要依据 ==指令集==:instruction set,处理器能执行的全体指令的集合 ==指令字==:用来表示指令的一组二进制代码 ==指令字长==:指令中包含的二进制代码位数 ==机器字长==:计算机能够直接处理的二进制数据的位数 = 寄存器的宽度

==CISC:Complex Instruction Set Computing 复杂指令集 如X86== ==特点:== ==①指令数量多;== ==②指令长度可以不固定,指令格式和寻址方式多样;== ==③很多指令会涉及存储器读写操作,指令周期长;== ==④一般在通用处理器中使用;==

==RISC:Reduced Instruction Set Computing 精简指令集 如MIPS32,ARM== ==特点:== ==①指令数量少;== ==②指令长度固定,指令格式和寻址方式种类也少;== ==③一般只有少量指令(如取数/存数) 才会读写存储器,其余指令只涉及CPU内部寄存器,指令周期短;== ==④一般在高端服务器CPU中使用;==

常见的地址结构类型 ==四地址结构指令== image-20230615105605007

一般用PC寄存器指示下一条指令的地址 四地址结构指令在RISC中很少用到

==三地址结构指令== image-20230615105808132

==二地址结构指令== image-20230615110432836

一地址结构指令 image-20230615110530742

零地址结构指令 image-20230615110617513

==MIPS32架构的指令格式==image-20230615110721100

==R型指令==

  • OP:000000 由func来决定他的功能
  • rs、rt是两个源操作数所在的寄存器号
  • rd是目的操作数所在的寄存器号
  • shamt是位移量,执行移位操作的时候指明需要移动的次数

==I型指令==

  • 操作功能由OP决定
  • rs是第一个源操作数,immediate是第二个源操作数
  • rt是目的操作数所在的寄存器编号

==J型指令==

  • 操作功能由OP决定
  • 转移地址:26位(立即数)

指令字长32位,寄存器数量32个

==指令中的寻址方式== ==①立即寻址:指令中直接包含了操作数== image-20230615111454647

==②直接寻址:指令中直接给出操作数的地址码== ==主存直接寻址(绝对寻址)== image-20230615112059259

==寄存器直接寻址:针对操作数在寄存器中的情况== image-20230615112230909

==③间接寻址:指令给出操作数的间接地址== 如:存储单元地址、寄存器编号 | 一般只在CISC中使用,RISC中一般不用 ==主存间接寻址:== image-20230615112828709

==寄存器间接寻址== image-20230615112935001

指针不变(由指令指定),指针内容可变,使同一指令可指向不同存储单元,以实现程序的循环、共享,并提供转移地址。

==堆栈间接寻址== image-20230615113131483

④==变址、基址寻址及其变化== ==变址寻址:指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址。== image-20230615113709623

==基址寻址:指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址(二维数组的读写)== image-20230615113833368

==基址+变址:指令给出两个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址(处理三维数组)== image-20230615114022797

⑤==PC相对寻址:指令给出偏移量,PC当前值与偏移量相加得到有效地址== image-20230615114200942

⑥页面寻址(伪直接寻址):指令给出位移量,PC的高位部分与位移量拼接,形成有效地址。 image-20230615114328017

# 3.3算术部件与运算器

image-20230615114942200

==1.带多路选择器的运算器== image-20230615115037362

==2.带输入锁存器的运算器== image-20230615115137271

==3.位片式运算器== image-20230615115248825

# 3.4模型机CPU的设计

==CPU的设计步骤:==

  1. ==拟定指令系统==:格式、寻址方式、指令类型设置
  2. ==确定总体结构==:寄存器、ALU、数据通路设置
  3. ==安排时序==:画流程图,确定寄存器级别
  4. ==拟定指令流程和微命令序列==:列操作时间表
  5. ==形成控制逻辑==:组合逻辑-->列逻辑式,形成逻辑电路;微程序-->按微指令格式编写微程序

# 第四章:存储子系统

原理及器件

1.存储器如何存储信息

2.在实际应用中如何用存储芯片组成具有一定容量的存储器?

3.如何改进存储系统的性能?

# 4.1概述

存储系统的层次结构:

image-20230531103057716

存储器的分类

TIP

存储器可分为物理存储器和虚拟存储器 物理形态上真实存在的存储器,简称为实存,其地址称为物理地址或实地址 虚拟存储器是一个逻辑模型,并非物理存在,基于物理存储器来靠硬件+操作系统的映射来实现,逻辑上能提供比物理存储器更大的处理存储空间,相关地址称为虚地址或逻辑地址。

​ ​ image-20230531103655686

image-20230531103647914

存储器的技术指标

image-20230531103527032

# 4.2半导体存储原理及芯片

半导体存储类型: 双极型: TTL型,ECL型 特点速度很快,功耗大、容量小 MOS型 : 按电路结构分有P-MOS,N-MOS,CMOS 特点:功耗小,容量大 按工作方式分为静态MOS和动态MOS

TIP

TTL(Transistor-Transistor Logic), 晶体管-晶体管逻辑 ECL(Emitter Couple Logic), 射极耦合逻辑 MOS(Metal-Oxide Semiconductor), 金属氧化物半导体, 即场效应管) CMOS(Complementary Metal-Oxide Semiconductor), 即 互补对称金属氧化物半导体

==静态存储器(Static RAM)==:主要包括双极型、静态MOS型;依靠双稳态电路内部交叉反馈机制存储信息;功效较大速度快,常用作Cache ==动态存储器(Dynamic RAM)==:主要包括动态MOS型;依靠电容存储电荷的原理存储信息;功耗较小,容量大,速度较快,常用作主存

双极型存储单元和芯片

image-20230531124944698

PS:

image-20230531125028742

静态MOS存储单元与芯片

image-20230531125635279 image-20230531125722189

PS:

image-20230531125757428

动态MOS存储单元与芯片

image-20230531125858907 ./image-20230531125920009 image-20230531130009025 image-20230531130145455 image-20230531130207797

PS:

image-20230531130230667

==RAM存储器介绍==

==静态RAM==:依靠存储单元中的交叉反馈电路形成互锁,通过电源对电路的持续供电以存储信息

  • ==SB SRAM==:同步突发静态随机访问存储器

    存储特点:能向CPU提供交替突发和线性突发两种突发地址访问存储器的方式。

  • ==MP SRAM==:多端口静态随机访问存储器

    存储特点:提供多个读地址端口、写地址端口、数据I/O端口。

  • ==FIFO SRAM==:先进先出的静态随机访问存储器

    存储特点:支持以不同速率访问存储器,数据先进先出、后进后出。常用在接口电路作为数据缓冲器

==动态RAM==:依靠存储单元中形成的栅级电容来保存信息,不需要持续电源,因此需要定期逐行刷新。

  • ==EDO DRAM==:拓展数据输出动态随机访问存储器

    存储特点:行列地址译码后定位到存储单元,能整体锁定一列数据,保持该列在输出缓冲区中的数据开放,直到列改变或读周期切换。可避免重复的同列寻址和数据读操作,速度快

  • ==SDRAM==:同步动态访问存储器

    存储特点:采用DRAM存储结构,但半导体工艺和工作机制有改进 (基本废用)

  • ==DDR SDRAM==:在SDRAM基础上,逐步发展起来的双倍数据率、同步动态、随机访问存储器

    存储特点:DRAM存储结构,同步时序,在时钟信号的上升和下降沿各触发1次存储读写操作。

  • ==GDDR SDRAM==:专用于显存的DDR存储器

==ROM存储器的介绍==

  • ==MROM==:掩模型的只读存储器

    基本原理:根据存储信息的二进制代码,设计相应的光刻掩模(1-有元件、0-无元件)

    特点:存储的信息固定不变,不可改写

    应用:字符点阵存储器,微程序存储器

  • ==PROM==:可编程型的只读存储器

    基本原理:芯片出厂时其存储的内容为全0,用户可通过专用的写入器将信息自行写入;结破坏型或者熔丝型 ;

    特点:写入操作是不可逆的,用户只能写入1次,无法再次重写数据;

    应用:可编程逻辑阵列(PLA)

  • ==EPROM==:擦除型可编程的只读存储器

    基本原理:写入器在25v下写入数据,5v下读数据,通过紫外线擦除数据

    特点:工作环境下存储芯片为只读模式;可擦写次数有限,通常几十次;需专用擦写器,只能芯片级擦除

  • ==EEPROM==:电擦除型可编程只读存储器

    基本原理:采用了更方便的高电压擦除数据的方式,可只对特定存储单元加高压形成电子隧道擦除其数据,其它单元数据保持不变;通常采用金属-氮-氧化硅的集成工艺

    特点:工作环境下存储芯片为只读模式;需要专用擦写器,可实现比特级擦除

  • ==FLASH==:闪存,可快速擦写型的ROM

    基本原理:沿用了EPROM的简单结构和浮栅/热电子注入写入方式,可芯片级擦除;兼备EEPROM的比特级电擦除特性;

    特点:掉电时信息不丢失,功耗低、存储密度高;芯片级+比特级数据擦除方式,读写速度很快;可在计算机内实现擦写,不需专用擦写器

    应用:U盘,SSD固态硬盘

# 4.3半导体存储器的组织逻辑

存储器通常有ROM型,RAM型,ROM和RAM混合型

主存与外部的连接

==系统的结构模式:==

  1. ==模块式直连==
image-20230531152226014

特点:CPU与存储器直接相连;存储容量小;CPU-存储器两者集成在一块插卡上作为一个单独的计算模块来使用

  1. ==部件式总线挂接==:

    image-20230531152532283

特点:存储器通过总线与CPU直接相连;存储器独立,容量大;但会与总线上其他的部件争夺总线控制权

  1. ==专用存储总线==

    image-20230531152716934

特点:存储器与CPU之间增设了专用的高速存储总线;存储器独立,容量大;存储器独享存储总线的带宽

动态存储器的刷新

刷新---->定期向电容补充电荷

TIP

动态存储器依靠电容电荷存储信息,没有电源(VCC)持续供电,电荷会泄漏,故需定期向电容补充电荷,才能维持存储的信息不变。

最大刷新间隔:DDR:64ms 以封装后的一个存储芯片为单位,64ms内必须对所有内存储单元刷新一遍 刷新方法:逐行刷新 刷新一行所用的时间:刷新周期Tref(小于存取周期) 刷新1块芯片所需的刷新周期数由芯片的刷新矩阵的行数和最大刷新间隔决定

WARNING

访存与刷新的对比 CPU访存:由CPU通过地址总线(AB)提供行+列地址,进行随机访问 动态芯片刷新:由刷新地址计数器提供行地址(RA),在64ms内逐行完成全部存储单元的刷新

刷新周期的安排

  1. 集中刷新

    image-20230531153904116
  2. 分散刷新

    image-20230531153923056
  3. 异步刷新

    image-20230531153945012

# 4.4三级存储体系

image-20230531154714894

外存:确保计算机具有足够大的容量;确保数据能够脱机保存 内存:存储运行期指令/数据,确保CPU能快速读取 Cache:强化CPU快速读取指令和数据的速度

Cache和内存的关联:内存中的数据调入Cache;Cache中的数据写回内存  数据操作以数据块为单位进行整体操作:直接映射、全相联映射、组相联映射

内存与外存的关联:外存中的数据调入内存,内存中的数据写回外存  虚拟存储技术:页式、段式、段页式
1
2
3

Cache与内存映射

TIP

设置Cache的原因:为解决CPU和主存速度不匹配而采用的一项技术,使访问主存的平均速度接近于访问Cache的速度。 Cache由硬件系统实现,已在CPU内集成,两级以上的Cache系统。

Cache的前提条件:CPU从主存中取指令、数据,在一定时间内地址范围常局限于主存的某个小区域即指令的执行具有局部性特征,因此可以将正在使用的部分(热点区数据和指令)提前预取并存储到一个高速的、小容量的Cache中,这样就能使CPU读写指令、数据的速度大大提高

基于下列条件,分析3种主存↔Cache映射: 存储器均按字节编址:1B/每个地址 👊 数据块大小:512B 👊 Cache容量:8KB 👊 主存容量大小:1MB

==(1)====直接映射==

==Cache==:只分块不分组
==内存==:既分组也分块(每组的块数等于Cache块数) ==映射规则==:主存的每一个数据块,只能映射到与其组内序号相同的Cache数据块位置。 ==优缺点==:在硬件方面实现比较简单,硬件成本低,映射速率快 👊不够灵活,Cache块冲突的概率很高,可能使Cache的空间得不到充分利用

image-20230531160657488

==(2)====全相联映射==

==Cache==:只分块不分组 ==内存==:只分块不分组 ==映射规则==:主存任何一个块都可以映射到Cache的任何一个数据块位置上 ==优缺点==:Cache块的冲突概率很低,空间利用率最高👊Cache标记太长了,判断时间长因此速率较慢;硬件复杂成本较高

image-20230531161635088

==(3)组相联映射==

==Cache==:既分组也分块 ==内存==:既分组也分块(组内块数等于Cache组数) ==映射规则==:主存数据块,映射到与自己组内块序号相同的Cache分组,可占据Cache分组中的任意数据块位置。 ==优缺点==:直接映射和全相联映射的折衷,速度快、硬件简单、成本低、易实现

image-20230531162151967
常用的替换算法:
 (1)先进先出策略(FIFO ,First In First Out)
 (2)最久被使用策略(LRU,Least-Recently Used)
 (3)最不经常使用(LFU,Least-Frequently Used)
 (4)随机替换策略
1
2
3
4
5

==Cache的读/写操作==

==Cache的写操作:== 当CPU发出写请求时,如果Cache命中可以: ①Cache单元和主存单元同时写,使Cache和主存保持一致,称为通写(write-through)。 ②只修改Cache单元,并用标志将该块加以注明,直到该块从Cache中替换出来时才一次性写入主存,称为回写(write-back)。

==Cache的写操作:== ① 旁路式读 (Look-Aside):CPU向Cache和主存同时发读命令和地址。Cache命中,则Cache回送数据并中断读主存命令;Cache未命中,则直接访问主存读取数据。 | ② 通过式读(Look-Through):CPU首先向Cache发读命令和地址。Cache命中,则从Cache中读出数据;Cache未命中,再将读命令和地址传给主存并读主存。

==内存与外存的映射==

==虚拟存储==:在内存和外存之间,由操作系统存储管理模块及相关硬件(存储器管理部件)实现的一种存储映射技术。逻辑上能提供比物理存储器更大的虚拟存储空间,相关地址称为虚拟地址或逻辑地址。

关联表来实现映射地址:

  • 内存,虚存都分成页:页表
  • 内存,虚存都分成段:段表
  • 内存,虚存都分段,每段再分页:段页表

页式虚拟存储管理:主存和外存统一分页后进行管理 页表:记录虚地址页号与实地址页号的对应关系,即虚页面调入主存时被安排在主存中的位置(实页号);页表中的每一行,称为页表项; 页表基址寄存器:记录页表在主存中的起始地址;页表项的地址a=页表基址b+页号n×表项的字节数w

image-20230531172058042

快表(TLB):把活跃的页表项用高速存储器单独存储,访问速度更快,它是页表的子集。

image-20230531172134815

段式虚拟存储器管理:虚存中的程序分段(按照代码段、数据段和共享段等)进行管理。 为了将虚拟地址变换成主存实地址,操作系统创建1个段表。每段在段表中占有一登记项,内容包括:段号、段起点、段长、装入位等。

image-20230531172315723

段页式虚拟存储管理:每个程序按逻辑模块分段,每段再分页,页面大小与内存页面相同 由操作系统创建两表:段表、页表

  • 虚地址格式:段号+页号+页内地址
  • 实地址格式:页号+页内地址
image-20230531172544116

# 第五章:总线与IO子系统

1.接口的基本概念

2.总线的基本概念

3.中断方式及其接口组成

4.DMA方式及其接口组成

5.IOP与PPU

# 5.1概述

==总线BUS==: 一种用来连接各功能部件并承当部件之间信息传送任务的信息公共通路, 可分为==数据总线,地址总线,控制总线==, 实行分时共享策略

接口的功能与类型

IO接口:主机与外设的衔接部分,位于总线与外部设备之间 IO接口的基本功能:

  1. ==设备寻址==: 接受CPU送来的地址码,选择接口中的寄存器供CPU访问
  2. ==数据缓冲==: 实现主机与外设的速度匹配, 缓冲深度与传送的数据量有关
  3. ==预处理功能==: 串-并格式转换 | 数据通路宽度转换 | 高低电平转换
  4. ==控制逻辑功能==: 接收主机CPU的控制指令, 保存状态信息, 协助主机实现对IO传送操作的控制

接口中寄存器的编址

  • ==单独编址==: 为接口中的每个寄存器分配独立的端口地址, 需设置标志区分访问的对象 如:M/IO=?访问存储器:访问IO端口
  • ==独立编址==: 接口中的寄存器当成特殊的主存单元,与其他主存单元统一编址 . IO端口将占据主存部分地址空间 . 基本原则:低端地址-->主存单元; 高端地址-->IO端口

IO操作的控制方式分IO:

  1. ==PIO接口(Programmed IO,程控方式)==
  2. ==中断接口(可采用查询方式)==
  3. ==DMA接口(可插入中断DMA善后处理)==
  4. ==IOP/PPU接口(专用处理器方式)==

DANGER

输入输出控制方式: 👊直接程序传送 👊中断方式 👊DMA方式 👊IOP/PPU方式

==核心差异在于IO操作中主CPU承担的任务不用==


# 5.2总线

单总线结构:

image-20230613092212886

特点: 唯一通道, 竞争激烈 ,响应慢

image-20230613092330869

特点:多组总线, 分摊负载 ,传输效率高

==总线的宽度与频率== ==宽度==: 总线个功能组中的信号数量量, 32或64 ==频率==: 每秒数传输的次数 ==带宽==: BW=(FxWxDxLxE) / 8(Bps) F->总线频率 ; W->总线位宽 ; D->工作模式 ; L->通道数量 ; E->编码方式

==总线操作的基本步骤==

  1. 主设备申请总线, 总裁器裁决并批准
  2. 主设备掌握总线, 启动总线周期,初始化
  3. 从设备响应, 主从设备之间数据传输
  4. 主设备释放总线, 结束总线周期

==总线上数据传输模式==

  • 单周期模式: 1 1 1
  • 突发模式: 1 n n

==总线的仲裁==

==1.集中式仲裁==

集中式仲裁中每个模块有两条线连到中央仲裁器: 一条是送往仲裁器的总线请求(BR)信号线; 一条是仲裁器送出的总线授权(BG)信号线。

👊 ==(1)链式查询==

image-20230613093928353

总线授权信号被依次串行的传送到所连接的外围设备上进行比较

距离总线的逻辑距离越短优先级越高

==优点==:优先级固定,只需较少的控制线就能按一定优先次序实现总线控制,结构简单,扩充容易。 ==缺点==:对硬件电路的故障敏感,且优先级不能改变,这样极易导致当优先级高的部件频繁请求总线时,优先级低的部件长期不能使用总线。

👊 ==(2)计数器定时查询==

计数器不断轮询设备, 当计数器计数值与发出请求设备编号一致时中止查询, 移交控制权

优先级灵活: 计数器初始, 设备编号程序设定, 频繁的设备增加权重以提高概率, 优先次序可程序控制

==优点==:计数器计数可从“0”开始,当设备优先次序固定,则设备优先级就按0,1……的顺序排列,固定不变;计数可以从上一次的终点开始,即采用一种循环方法,此时设备使用总线的优先级相等;计数器的初值还可由程序设置,因此优先次序可以改变,且这种方式对电路的故障不那么敏感。 ==缺点==:增加了控制线,若设备有 n 个,则大致需要 ==⌈log_2⁡n ⌉+2==条控制线,控制也比链式查询复杂。

👊 ==(3)独立式请求方式==

image-20230613094725068

设备直接独立授权

==优点==:响应速度快,对优先次序的控制相当灵活。 ==缺点==:控制线数量多,若有设备 n 个,则需要 ==2n+1== 条控制线,其中的 1 是指反馈线,用于让设备向总线控制器反馈已经使用完总线;总线控制逻辑复杂

==2.分布式仲裁==

image-20230613094918278

设备需要控制总线时,发请求信号,并监听其它请求信号,各设备能判别自己的优先级、以及能否在下一周期控制总线。 ==缺点==:信号线复杂;==优点==:防止总线时间浪费


# 5.3直接程序传送方式与接口

image-20230613100739440

主CPU执行IO程序实现主外的数据IO ==优缺点==: 硬件开销小, 实时处理能力差, 并行程度低 ==应用场合==: IO效率要求不高, 数据量少, 如外设的诊断或调试

::: tips PIO工作机制归纳如下 需要专用的I/O程序; 主机CPU执行I/O程序:不断查询外设状态,进而控制具体的数据I/O过程(主机←→外设) 数据I/O过程中主CPU无法执行其它计算任务,对其它外设的请求响应慢 主CPU完全束缚于简单的数据I/O控制,利用率低。 :::


# 5.4中断方式与接口

image-20230613101330700

==中断的实质是程序切换==: 方法: 保存断点, 保护现场; 恢复现场, 返回断点 时间: 一条指令结束时切换, 保证程序的完整性 中断具有随机性

DANGER

==注意中断与子程序调用的区别==

  • 子程序的执行由程序员事先安排,而中断服务程序的执行则是由随机中断事件触发。
  • 子程序的执行受主程序或上层程序控制,而中断服务程序一般与被中断的现行程序无关。
  • 一般不存在同时调用多个子程序,但可能发生多个外设同时向CPU发出中断服务请求的情况。

# 5.5DMA方式及磁盘接口

==DMA(Direct Memory Access):== 直接依靠硬件系统来控制主存与外设之间的数据传送,传送期间无需CPU干预,传送结束后通常用中断方式通知CPU。

==特点==:响应随机请求 ;一般不影响CPU程序的执行,仅占用总线 ;无程序切换 ;大批量数据的简单传送


# 5.6IOP与PPU模式

==IOP(IO Processor)== :输入输出处理器 ==PPU(Peripheral Processor Unit)== :外围处理单元32

==IOP的特点:== 能执行简单的通道程序(通道指令); 一般位于主机之外; 逻辑上仍属于主机系统的一部分; ==PPU的特点==: 有独立的指令系统,指令丰富,功能比IOP更强大;能执行算术/逻辑运算、读写主存、管理I/O操作;独立于主机系统,可以是个完整的计算机系统;

IOP和PPU的方式能把CPU从繁杂的I/O任务中解脱出来,与I/O操作并行执行,能显著提高计算机系统的I/O处理能力。