408-机组

本文最后更新于:a year ago

机组难度很大,决定了你的上限,所以如果想考高分的话,需要多花时间去理解”里面”的东西。这里我按照408给的大纲来进行一些总结,下面是我总结的一些笔记,给出幕布链接:

计算机组成原理

1、计算机系统概述

性能指标

这一章是408必考的知识点,年年考,分值占的比例很大,大题涉及,选择涉及,所以一定要好好掌握

计算机性能指标☀️

机器字长

  • 计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数
  • 微处理器的位数就是指的机器字长(如我们常说的64位CPU),机器字长一般等于内部寄存器的大小,字长越长,数的表示范围越大,计算精度越高。操作系统位数指的是操作系统可寻址的位数
    • 注意说法,CPU位数就是机器字长
    • 9f918425-ad05-4cbf-b881-483057e401a5-6205003

    • 注意ALU:机器字长就是计算机进行一次整数运算能够处理的二进制位数
    • d7b285ff-5883-4e1e-8bd9-106086dd83f6-6205003

      df56a450-7fa8-4ea0-946e-f2278dbdddd6-6205003
  • 指令字长(与机器字长对比)
    • 一个指令中包含的二进制代码的位数
  • 存储字长(与机器字长对比)
    • 一个存储单元存储的二进制代码的长度

数据通路带宽

  • 数据总线一次所能并行传送信息的位数

主存容量

  • 主存储器能存储信息的最大容量,通常用字节(B)衡量
    • 字数×字长(例 512K×16位)
    • MAR的位数反映存储单元个数,其反映可寻址范围的最大值
      • MAR16位 表示有2^16=65536个存储单元 (称64K内存) MDR32位 则存储容量 64K×32位
    • n位地址->2^n个存储单元 最大容量= 2^n×存储字长
    • 总容量=存储单元个数×存储字长 bit单位 总容量=存储单元个数×存储字长/8 Byte单位

运算速度

  • 吞吐量
    • 系统单位时间内处理请求的数量
  • 响应时间
    • 用户向计算机发送一个请求,到系统做出相应并获得所需结果的等待时间
      • 通常包括CPU时间(允许一个程序所花时间)和等待时间(磁盘范围、存储器访问、I/O操作、操作系统开销等)
  • CPU时钟周期
    • 通常为节拍脉冲或T周期,即主频的倒数,是CPU中最小的时间单位,每个动作至少需要1个时钟周期
    • 有关周期的概念
      • CPU周期就是机器周期
      • 50ac1884-1502-4066-8e80-c90f99755250-6205003
  • 主频(CPU时钟频率)
    • 机器内部主时钟的频率
      • CPU时钟周期=1/主频
    • 单位 Hz 1Hz表示每秒1次
    • 主频越高,完成指令一个步骤所用的时间越短
  • CPI
    • 执行一条指令所需要的时钟周期数
    • 不同的指令,CPI一般不同,甚至相同的指令,CPI也可能发生变化。
    • A、B主机的CPI一样,主频大的一定快? 错,因为还要看指令系统,如果主频大的那个不支持乘法指令,只能通过多步加法来实现,而主频小的那个支持乘法指令
  • CPU执行时间
    • 运行一个程序所花费的时间
    • CPU执行时间=CPU时钟周期数/主频=(指令条数×CPI)/主频
  • MIPS
    • 每秒执行多少百万条指令
      • MIPS=指令条数/(执行时间×10^6)=主频/CPI
  • MFLOPS
    • 每秒执行多少百万次浮点运算
      • MFLOPS=浮点操作次数/(执行时间×10^6)
  • GFLOPS
    • GFLOPS=浮点操作次数/(执行时间×10^9)
  • TFLOPS
    • TFLOPS=浮点操作次数/(执行时间×10^12)
  • M、G、T、P、E、Z(单位就是三次方三次方往上加,mg、tp、ez)
  • 1位(b)=1比特(bit) 1字节=8位=8比特
存储器的性能指标
  • 存储容量=存储字数✖字长
    • 存储字数表示存储器的地址空间大小
    • 字长表示一次存取操作的数据量
  • 单位成本
    • 每位价格=总成本/总容量
  • 存储速度
    • 数据传输率=数据的宽度/存储周期
      • 存取时间(Ta)
        • 从启动一次存储器操作到完成该操作经历的时间,分为读出时间和写入时间
      • 存取周期(Tm)/读写周期/访问周期
        • 存储器进行一次完整的读写操作所需的全部时间 连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔
      • 主存带宽(Bm)/数据传输率
        • 每秒从主存进入信息的最大数量
      • 存取时间不等于存储周期,通常存取周期大于存取时间

      • bff35f0d-e284-46bb-9d73-9d999f383e92-6205003
流水线技术
  • 设模块字长等于数据总线宽度,模块存取一个字的存取周期为 T,总线传送周期为 r ,m 称为交叉存取度。
    • 为实现流水线方式存取,存储器交叉模块数应大于等于:m>=T/r
    • 每经 r 时间延迟后启动下一个模块,交叉存储器要求其模块数必须大于或等于m 以保证启动某模块后经过 m×r 的时间后再次启动该模块时,其上次存取操作已经完成(即流水线不间断)
    • 这样连续存取 m 个字所需的时间为
      • t = T + (m-1)r
      • 上式只是取数据,注意如果是总线事务完成,最后还应加上一个r的总线周期去送数据
    • 顺序方式连续读取 m 个字所需时间为 t2=mT
磁盘性能指标
  • 磁盘的容量
    • 一个磁盘所能存储的字节总数
    • 非格式化容量
      • 磁记录表面可以利用的磁化单元总数
    • 格式化容量
      • 按照某种特定的记录格式能存储的信息总量,比非格式化小。(完成划分磁道和扇区,设置文件目录区等操作后的磁盘,当然还有一些备份磁道)
  • 记录密度
    • 所有磁道的信息量一定相等

    • 2959c637-82fd-4ebb-ab55-7e58c3bf252f-6205003
  • 平均存取时间
    • img
      • 存取一个扇区的平均延迟时间为旋转半周的时间
  • 数据传输率
    • 磁盘存储器在单位时间内向主机传送数据的字节数
      • D=rN
        • 磁盘转数为 r转/秒 每条磁道容量N个字节
流水线的性能指标
  • 吞吐率【TP】
    • f4322795-ded0-4ec9-ae66-134d0cea7212-6205003
      • n 是任务数, Tk是处理完成 n 个任务所用的时间
      • ▲t为时钟周期
    • 8ad83ef0-dc79-4a21-b107-9b493eef24ff-6205003
  • 加速比
    • 完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比。
    • 85c1d1ba-fcf9-407d-8f77-2a5a531f475f-6205003
    • T0表示不使用流水线时的执行时间,即顺序执行所用的时间 Tk表示使用流水线时的执行时间
      • 1fb3acf4-306d-4e6b-a07d-b2bc3dd25558-6205003
  • 效率
    • a2cd26a3-01b2-4cd3-8e02-4532c1e610e7-6205003
周期概念
  • 6829523853BB44711663136668
字长概念
  • 机器字长:机器字长就是计算机进行一次整数运算能够处理的二进制位数
  • 指令字长:一个指令中包含的二进制代码的位数
  • 存储字长:一个存储单元存储的二进制代码的长度
其他
  • 1s🟰1000ms🟰1000,000微秒🟰1,000,000,000纳秒
  • 1GHz🟰1,000MHz🟰1,000,000KHz🟰1,000,000,000Hz
  • 1/1KHz🟰1ms

2、数据的表示和运算

第二章的知识点难理解,涉及到数据的一些表示,这里不介绍数据的具体框架知识点,只介绍一些容易忽视的地方

小知识点
1、对于位数相同的定点数和浮点数,可表示的数据个数应该是一样多的。编码位数一定,编码出来的数据个数就是一定的。
2、补码的一位乘法和原码的除法,其中补码乘法需要做n+1次加,而原码的除法根据第n次余数是否与被除数同号,非同号需要n+1次加
3、正数原码、补码以及反码是一样的,负数的补码等于反码加一,负数的反码等于原码除符号位取反
4、C语言中类型转化方向:char—>int—>long—>double
5、基数越大精度越低,进制越大精度越高。(比如某些10进制小数不能用2进制表示,但是所有二进制小数都可以用10进制表示,这样就很容易理解10进制精度更高)
6.原码表示时,正数规格化形式为0.1xxx,负数格式化形式为1.1xxx
7.注意⚠️IEEE745一定要记住,阶码计算是通过二进制算出来的值E,再减127,而不是128,即1001 0011算出来的阶码应该是20(128+16+2+1-127=20)。其中E的取值为1~254,所以阶码单位为-126~127
8.采用规格化的浮点数最主要是为了增加数据的表示精度。
9.对于无符号整数乘法,若乘积高n位全为0,即使第n位全为1也正好是2^32-1,不溢出,否则溢出
10.CF=count异或sub count为最高位的进位,sub为加减控制信号,加法0,减法1
11.OF=次高进位异或最高进位
12.乘法溢出判断
17C6092D8A5143281665297368

3、存储系统

小知识点
1.主存和cache之间的数据调动是由硬件自动完成的,对所有程序员均是透明的;而主存和辅存之间的数据调动,则是由硬件和操作系统共同完成的,对应用程序员是透明的(CPU与Cache之间的数据交换是以字为单位,Cache与主存是以块为单位)
2.DRAM的刷新是由硬件自动完成的
3.高速缓冲存储器是从系统结构上进行改造,使得速度变快
4.虚拟存储管理系统的基础是程序访问的局部性原理, 此理论的基本含义是 在程序的执行过程中, 程序对主存的访问是不均匀的
5.虚拟存储器采用的是全相联映射,因为关键是提高命中率,所以还是采用的是回写法

Cache

这一块得区分一下,细节的地方比较多,并且OS也涉及到了

映射方式

1.直接映射

  • Cache行的字段是:标记➕数据(这里的标记是,主存块号➖Cache总行数所占的位数)
  • 直接映射的地址结构是:标记➕Cache行号➕块内地址(可以看出来,其实就是主存的访问地址,只是先通过这个地址去Cache中找。标记➕Cache行号对应的就是主存块的地址,再加块内地址,找到具体位置)

2.全相联映射

  • Cache行的字段是:标记➕数据(这里的标记是就主存块号,所以全相联映射慢,需要和相联存储器一起用)
  • 地址结构:标记➕块内地址(因为是随机的,所以标记就是主存块号)

3.组相联映射

  • Cache行的字段是:标记➕数据(这里的标记是,主存块号位数➖Cache总组数所占的位数(可以和直接映射对比一下),比如主存块号位数是11,Cache有8组,也就是占3位,那么标记占了11 - 3 = 8位)
  • 地址结构:标记➕组号➕块内地址

其中直接映射和组相联映射都是先查找行号/组号找到对应的Cache行/组,然后再和标记进行对比,再检查有效位。

需要注意的点

直接上图

60A66287F4BA487D1666854235
表格
1.有效位:为说明Cache行中的信息是否有效,每一个Cache行需要一个有效位
2.LRU位:替换算法如果采用LRU(最近最少使用算法),位数与Cache组的大小有关系,需要注意2路占一位LRU位,4路占两位LRU位;Clock算法还有访问位(不过用于操作系统)
3.修改位:回写法需要注意增加一个修改位(脏位)
4.失页率的计算要包括全部缺页
5.Cache缺失由CPU硬件实现,缺页处理由软件来完成
FB28CC3C9F6E43B01662018650
6.Cache对所有程序员都透明,而虚存对应用程序员透明,系统程序员不透明。
7.注意⚠️TLB路数并不能决定虚拟地址中标记要留多少位给组,而是根据TLB组数来决定标记留几位。
Cache总位数的计算

注意⚠️组相联和直接映射的区别,组相联和直接映射在计算Cache位数算的都是Cache总行数,组相联计算的不是总组数!

例题

CE2BD4815FF142F31662278712

答案

EC5D16CF846E4BEF1662278749

芯片引脚

芯片引脚408考得不深,大概就是SRAM和DRAM最少数目之类的,最多往年没有考过,所以记住即可。

SRAM

SRAM最小数考虑CS(片选信号线)➕读写信号线

例题

1EA9F1C21B604A5E1662101999

答案

C5ADC248958645421662102126DRAM
DRAM

DRAM最小数考虑读写信号线➕行通选和列通选信号线(一共两根),并且DRAM采用地址复用,地址线减少一半

例题

DA8A8986315E46121662102029

答案

5542342F39EB4FDE1662102235

4、指令系统

无,指令系统因为本科阶段打比赛汇编学得比较多,所以当时这一部分学起来不是很困难。

5、中央处理器

这章知识点很多,容易漏的知识点也比较多,所以需要多总结多思考

小知识点
1.中断响应是CPU在每条指令执行结束前检查的,如果有,就进入中断周期,并且保存断点
2.理解什么是超标量流水线技术,超流水线技术
3.转移指令,PC并不总是修改为转移指令的目标地址,在转移指令时,需判别是否转移成功,成功则是目标地址,失败则是PC➕1
4.间址周期结束时,MDR中存放是的操作数的地址,而具体的操作数,需要到执行周期去取
5.按字节编制的时候需要注意,若题目又说按字边界对齐存放,此时MAR(或者有关的位数)就是主存空间/(字长/8)——16年统考选
6.指令字长一般取字节或者存储字长的整数倍,而不一定都和存储字长一样大
7.取指操作是自动进行的,控制器不需要得到相应的指令
8.空操作指令会导致PC增加,而不是寄存器都不变。并且空指令会进行访存,自己想想为什么?——-因为空指令,会在取指阶段去内存取这条空指令,所以会访存🤣
9.计算机基本上可以分为两大类:控制部件和执行部件。控制部件主要就是控制器,执行部件包括运算器,存储器,外围设备
10.CPU检测到异常事件后所做的处理和检测到中断请求后所做的处理完全相同(❌) 应该是基本相同的,而不是完全相同的
11.超线程技术是一个在CPU中,提供两套线程处理单元,让单个处理机实现线程级并行。采用超线程技术可以同时执行两个线程,但当两个线程同时需要某个资源的时候,其中一个线程必须挂起
12.中断向量是地址,异常或中断处理程序的首地址称为中断向量。而中断向量地址,指的是存放在中断向量表中的中断向量的地址
13.中断处理结束是可能引起进程调度程序执行。这是因为在时间轮转调度算法中,中断处理结束后,系统会检测当前进程的时间片是否用完,用完将其设为就绪态
14.在进程处于临界区时不能进行处理机调度。这种说法是不对的,处于系统临界区以及IO这种不能进行处理机调度。一些不破坏临界资源使用规则的可以调度
15.时间片轮转是绝对可抢占的,优先级有分抢占式和非抢占式
16.可重入代码(Reentry code)也叫纯代码(Pure code)是一种允许多个进程同时访问的代码。
17.异步总线一次通信往往会交换多位而非一位数据,DMA请求是每次传输一块数据(容易模糊,记混),但是这里要注意,题目可能要求的是采取窃取周期的方式进行DMA传输,这时DMA每次传输的是一个字的数据(真题考过两次DMA窃取周期方式)
18.什么叫断定方式?(P232);什么是数据旁路技术?
19.注意访存阶段是将结果写入存储器,而写回阶段是将结果写入寄存器
20.一个寄存器机器指令(即指令)对应一个微程序,一个微程序对应一段微指令,一个微指令对应若干微命令,一个微命令也就是一个微操作
21.一个指令周期对应若干机器周期,一个机器周期对应若干时钟周期(时钟周期倒数也就是频率),一个指令周期对应至少一个总线周期(思考原因,这是因为一个指令周期至少需要访存一次,即取指令),一个指令周期对应若干存取周期
注意理清思路6135F83379C84D881668070375
22.注意理解多核处理器、多处理器、硬件多线程技术(多线程技术)

6、总线

无,408总线这一块考得知识点很少,也不会考很深。

7、输入输出系统

小知识点
1.什么是中断请求标志寄存器,屏蔽字寄存器(中断屏蔽触发器)、中断允许触发器
FE8B321C01F748F41668242293A01869EF199A42EC1668242300
2.程序查询方式,程序中断方式每次都是读一个字,而DMA读写可以以单字节(或字)为基本单位,也可以以数据块为基本单位
3.对中断请求的响应只能发生在每条指令执行完毕时(即执行周期后),而DMA请求的响应可以发生在每个机器周期结束(取指周期、间址周期、执行周期)
4.DMA除了预处理和后处理阶段,数据传输阶段是不需要CPU控制的,是完全由DMA控制器(硬件)控制的
5.DMA包括主存地址的确定、传送数据的计数,以及发出中断请求信号都是自动的。
6.DMA开始前通过程序进行预处理,结束后通过中断方式进行后处理,都需要CPU参与
7.程序中断方式中,由硬件完成的是,保存断点(PSW和PC)以及中断服务程序寻址(将寻址后的地址存入PC)
8.IO端口在统一编址的方式下,区分存储单元和I/O设备是靠地址码区分的
9.IO指令只能在操作系统内核使用,是一种特权指令
10.注意⚠️:接口中控制线主要用于传送读写信号、一些仲裁信号以及握手信号。至于和对外设管理的控制是由I/O控制逻辑来完成的,所以I/O接口的指令字,状态字以及中断类型号都是在数据线上传输的
11.IO接口中,CPU可以直接访问的寄存器是I/O端口,包括数据端口、控制端口以及状态端口
12.通用寄存器和I/O端口之间的数据传送通常由I/O指令实现的,而I/O端口和I/O设备之间的数据传送是由指令字实现的。
13.中断返回指令和转移指令不一样,转移指令只需要修改PC的值,而中断返回指令不仅需要修改PC的值,而且需要恢复CPU中断前的环境(通用寄存器、PSW…)
14.DMA传送过程中,设备设备发出DMA请求,而DMA控制器向CPU发出总线请求
15.注意⚠️,用户的输入输出,一定是访管中断,不要学了IO以后,认为输入输出是IO中断
16.在中断响应周期中,由中断隐指令将允许中断触发器置0
17.DMA要等存取周期(机器周期)结束时才可以进行周期窃取,而不是指令周期、总线周期
18.存取周期是对于主存来说的,是主存的性能指标。存取周期是对内存进行一次读/写操作从得到地址到完成读/写操作以及下一次读/写操作开始前的总时间;总线周期是对于总线来说的,是总线的性能指标。总线周期又称为总线的传输周期,包括申请阶段,寻址阶段,传输阶段和结束阶段,一般来说,总线周期是由多个总线时钟周期构成的。
19.DMA的优先级比外中断(非屏蔽中断、可屏蔽中断)要高,这里的非屏蔽中断不包括故障,如果包括故障的话,非屏蔽中断>内部异常>可屏蔽中断
20.单位时间内I/O请求数量比中断处理的多,数据就会丢失(大题需要注意)

总结点

1.各个部件由什么构成
  • 1.控制存储器CM—ROM
  • 2.Cache—SRAM
  • 3.主存—DRAM、ROM
2.由硬件进行的操作
  • 1.DMA数据传输阶段
  • 2.程序中断方式中断点保存(即中断隐指令)以及中断程序寻址
  • 3.主存和cache之间的数据调动是由硬件自动完成的,主存和辅存之间的数据调动,则是由硬件和操作系统共同完成的。
  • 4.微程序控制器中微指令设计中,第一条微指令地址(用专门的硬件记录取指周期微程序首地址)和 中断周期微程序的首地址 都是由硬件产生
  • 5.DRAM的刷新是由硬件自动完成的
3.用户可见寄存器/不可见寄存器

在CPU中,IR,MAR和MDR对各类程序员都是透明的,但通用寄存器组、程序状态寄存器对程序员是可见的。

用户可见的寄存器

  • 通用寄存器组
  • 程序状态字寄存器【PSW】
  • 程序计数器【PC】
  • 累加寄存器【ACC】
  • 中断字寄存器

用户不可见的寄存器

  • 指令寄存器【IR】
  • 暂存寄存器【DR】
  • 存储器地址寄存器【MAR】
  • 存储器数据寄存器【MDR】
  • 主存和cache之间的数据调动是由硬件自动完成的,,对所有程序员均是透明的;主存和辅存之间的数据调动,则是由硬件和操作系统共同完成的,对应用程序员是透明的。
  • 指令缓冲器、移位器、乘法器、先行进位链
  • 等等,除去上面的用户可见寄存器,其他的基本上都不可见,比如移位寄存。。。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!