计组复习
计组复习
第一章 概述
计算机的软件(系统软件,如操作系统、应用软件)和硬件以及各自组成
冯·诺依曼计算机(还有另外一种哈佛架构,指令和数据分开)
- 程序和数据都是二进制代码,如何区分指令和数据?
- 访问内存时访问地址,如果==来源于PC==,一般认为访问程序;如果来源于==程序运行的地址==,一般为数据
- 按照==时间==,取指周期——指令,执行周期——数据
- 程序和数据都是二进制代码,如何区分指令和数据?
现代计算机硬件框图;P9
硬件的主要技术指标:
- ==计算机字长==(每次进行相加运算最长的数据位数,也和内总线的根数有关,64位则有64跟总线,64位则寄存器也都是64位)、==速度==(主频、时钟周期、MIPS)、==容量==(主存的容量,多少字节)、==总线宽度==(CPU和主存链接的数据线的宽度,和带宽有关)——这些一般是非时间指标
- 新概念:外频,倍频
- 时间指标:f,T,==CPI(时钟周期)==,IPC,==MIPS(百万跳指令每秒)==等
- 存储容量:存储单元个数==存储字长=MAR*MDR==
第四章 存储器
存储器的存储层次
- 缓存-主存层次,解决速度问题:Cache,纯硬件,命中率90%以上
- 主存-缓存层次,解决容量问题:虚拟存储器?在操作系统里可能会讲
存储单元的属性、存储字(多个字节,连续的地址空间)的地址(每个存储单元以地址命名,应该能被4整除)
单元内(字,最低地址往上数4个,32位;字节,没听到)
大小端存储模式,==无论大小端都是以最低地址命名==
按边界存储
C语言的变量在内存分配字节数
主存的基本组成
- 读写逻辑(内有数据缓冲器)、译码器、
- 根据容量就可以知道引脚的分配
- 4k容量,212,12根地址线
主存的技术指标
- ==容量== n*m,n代表存储单元的个数,一般为2的 i 次方,m为数据线的个数,每个存储单元的位数
- ==访问周期== 读、写周期,写入时间一般大于读周期
- 外频、内频
动态存储器为何刷新?刷新方式。
- RAM,动态RAM,==电容存储电荷==,又一个放电回路,电荷可能会放完、损耗,
- 触发器造价==高==、电容造价==低==;电容==集成度==比触发器高,所以选择电容而不是触发器制作RAM
- 刷新方式:
- 分散刷新
- 在==存取周期==内进行,不再有“死区”,但是加长了系统的存取周期,存在无谓刷新,降低了运行效率,因此不适合高速存储器。
- 集中刷新,一刷新就刷新一行
- 在==最大刷新间隔时间==内,集中安排时间进行刷新。缺点是刷新时必须停止读写操作,这对主机而言是“死区”。
- 异步刷新,前面两种的总和?
- 结合了优点,==充分利用了最大刷新间隔==。相较于分散式,减少了刷新次数;相较于集中式,“死区”缩短了很多。
- 分散刷新
- ==静态RAM==就是==触发器==组成的
存储器的扩展 以及 与CPU的链接
- ==字向扩展和位向扩展==
- 字向扩展:是把地址进行译码,输送给不同的芯片
- 位向扩展:把数据分开,分别存入若干个芯片,且这若干个芯片==地址相同==可看做一个整体
- 系统程序空间ROM,==事先设定好的==
- 工作区间,暂存当前数据没用RAM
- 用户程序区,RAM
- 芯片存储容量与地址线、数据线的关系
- 选型
- 设计(要写:需要几个片选信号,最高地址最低地址,
- 如果芯片容量不一样大,小容量的芯片一定有二次译码电路2-4,3-8,等
- 译码器的使用
- ==字向扩展和位向扩展==
汉明检验码的解编码方法
- k位信息,需要几个校验位?校验位必须在2的i次方位置上
- 偶校验还是奇校验
- 如何解码?
提高访存速度的措施
调整主存结构:
单体多字,多体单字
低位交叉(交叉读取)
对于低位交叉的存储器,连续读取n个字所需要的时间t1为 ==t1=T+(n-1)τ==
其中,==n是存储器模块数,T是存取周期,τ为总线传输周期==
高位交叉(顺序读取)
高位交叉编址,连续n个字所需时间t2为==t2=nT==
低位和高位的速度不一样,计算带宽时需要注意
采用层次结构 Cache——主存
采用高速器件
高速缓冲存储器——Cache
- Cache的基本结构和工作原理
- CPU送出一个指令,访问Cache和主存同时进行
- 如果Cache命中,则访问主存的作废
- 如果没命中,继续访问主存,将得到的数据通过数据线送给CPU,然后将数据块送给Cache
- 如果Cache满了,还得替换,涉及到写回法和写直达法
- Cache的读操作流程
- Cache的写操作:
- 写回法(对CaChe操作,当CaChe中的主存块==被替换时==再写回内存)
- 写直达法(写CaChe的时候也一同写入内存)
- Cache的命中率、等效访问时间、效率
- Cache中不命中,主存一定命中
- 等效访问时间
- 效率:Tc/Ta?
==PS:CaChe对用户是透明的,指的是用户所用到的地址是主存地址,用户根本不知道这些主存块是否已经调入CaChe内。因为,将主存块调入CaChe的任务全由机器硬件自动完成==
- Cache的基本结构和工作原理
Cache——主存的地址映射
直接映射
主存字块标记 CaChe字块地址 字块内地址 t位 c位 b位 全相联映射
主存字块标记 字块内地址 m=t+c位 b位 组相联映射
主存字块标记 组地址 字块内地址 s=t+r位 q=c-r位 b位 主存地址组成、地址变换、例题
例题!例题!例题!
Cache替换算法
- 先进先出(FIFO)
- 近期最少用(LRU)
- 随机替换算法
作业
- 4MB->2^22,主存地址22位
- 16KB->2^14,块内地址14位
第五章、输入输出系统
编址方式
- 统一编址(将I/O地址看做存储器==地址的一部分==)
- 独立编址(I/O地址和存储器地址是分开的,所有对I/O设备的访问必须有==专用的I/O指令==)
IO设备与主机信息传送的控制方式
- 程序查询方式
- 程序中断方式
- DMA方式(周期挪用,也叫周期窃取)
- 通道方式等(大型设备)
- IO处理机方式
IO接口的功能和组成
- 一个标准的接口,挂在总线上(数据总线、地址总线等)
- 功能:
- ==寻址(选址)功能==,需要有一个==地址译码器和设备选择线==
- 为==传送数据==,需要有==数据线==,以及==输入数据寄存器==(输入设备),==输出数据寄存器==(输出设备)
- ==传送命令的功能==,需要有控制寄存器(可以用于输出,命令字)和命令线
- ==反映I/O设备工作状态的功能==,需要有状态寄存器(反映外设的状态)和状态线
接口和端口的概念
接口:硬件电路,硬件组成
端口:接口电路中的寄存器(3个寄存器(数据寄存器,状态寄存器,控制寄存器)的地址叫做端口(数据端口,状态端口,控制端口))——若干个端口加上相应的控制逻辑才能组成接口
==(这个图真难看!)==
```mermaid graph I/O设备-->I/O接口 I/O接口-->状态线 命令线-->I/O接口 设备选择线-->I/O接口 数据线-->I/O接口 I/O接口-->数据线 I/O总线-->设备选择线 I/O总线-->数据线 I/O总线-->状态线 I/O总线-->命令线
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
5. ### 程序查询方式
1. 程序查询流程
1. 串行工作(CPU和IO设备)
2. CPU的工作就是主动查询
2. 接口电路
6. ### 程序中断方式
1. 一次中断过程包含6个环节:前4步一般硬件实现,处理和返回是软件实现,总的来说软硬结合
2. 中断请求
1. 中断请求寄存器
3. 中断屏蔽
1. 中断屏蔽寄存器
2. 所有的中断屏蔽位合一块就是中断屏蔽字
3. 通过修改屏蔽字可以改变中断顺序
4. 中断判优
1. 中断判优电路
5. 中断响应
1. 中断响应也就是中断隐指令
1. 一共三步
2. {% asset_img image-20220404191607446.png image-20220404191607446 %}
2. 中断矢量地址编码器
3. 将数据传给PC
6. 中断处理
1. **单重中断** 和 **多重中断**(允许优先级别更高的中断程序
2. 保护现场 保护现场
3. 设备处理 开中断
4. 恢复现场 设备处理
5. 开中断 恢复现场
6. 中断返回 中断返回
7. 中断返回
8. 中断接口电路
9. CPU响应中断的条件和时刻
1. {% asset_img image-20220404193207813.png image-20220404193207813 %}
2. {% asset_img image-20220404193218671.png image-20220404193218671 %}
10. 中断响应、隐指令
11. 单重中断和多重中断的服务程序流程
7. ### DMA方式(IO和内存由硬件直接实现交换,在DMA下DMA可以控制 数据总线、地址总线、控制总线)
1. 周期挪用
2. DMA接口的功能和组成
1. 数据寄存器
2. AR?主存地址控制器
3. DAR寄存器,设备地址寄存器
4. WC,增一寄存器?
3. DMA传送过程
1. 预处理
1. 对三个寄存器进行初始化
2. 说明传送的方向(IO到内存——输入、写,内存到IO——输出、读)
2. 数据传送
1. 周期挪用,IO设备先发起
2. 申请时CPU没有用总线
3. 同时申请使用总线
4. CPU正在用总线
5. {% asset_img image-20220404192659170.png image-20220404192659170 %}
6. 申请、使用、释放总线都需要几微秒
3. 后处理
1. 没听到,重新看ppt
4. **例题!例题!例题!**
8. ### 中断屏蔽技术
1. 改变屏蔽字,改变中断处理顺序
1. 通过修改中断屏蔽字,改变中断处理顺序
2. CPU执行程序轨迹
9. ### 作业
1. {% asset_img image-20220404193047801.png image-20220404193047801 %}
2. 5.28:中断请求是对每次指令结束后都要查询有没有中断请求,DMA请求总线时有3个可能。
3. {% asset_img image-20220404193644844.png image-20220404193644844 %}
4. {% asset_img image-20220404193714607.png image-20220404193714607 %}
5. {% asset_img image-20220404193757365.png image-20220404193757365 %}
6. {% asset_img image-20220404194058259.png image-20220404194058259 %}
7. {% asset_img image-20220404194107638.png image-20220404194107638 %}
8. {% asset_img image-20220404194155829.png image-20220404194155829 %}
9. 中断隐指令:{% asset_img image-20220404194220875.png image-20220404194220875 %}
10. {% asset_img image-20220404194541382.png image-20220404194541382 %}
## 六、计算机的运算方法
1. ### 有符号数的真值、原码、反码、补码、移码相互转化
2. ### 浮点数与真值之间的相互转换
1. 见课本
3. ### 定点运算
1. 补码加减运算及溢出判断
1. 符号问题
1. 一位符号数判断溢出(比较简单
2. 两位符号数判断溢出(即变形补码,当两位符号数不同时,表示溢出;否则不溢出。无论是否溢出,高位(第一位)代表真正的符号)
2. 原码一位乘法运算规则及步骤
1. 符号位由两个数异或得到
2. 数值部分为绝对值相乘(一个数乘另一个数,按照格式持续右移)
3. 补码一位乘法运算规则及步骤
1. 乘数为**正数**时,直接按照原码乘法
2. 乘数为**负数**时,将乘数看做正数计算,最后加上一个[-x]~补~
4. 除法的运算步骤(理解)
4. ### 浮点数加减运算规则及步骤
1. 对阶。使两个数的小数点位置对齐(先计算阶差,然后小阶按大阶对齐,即==阶数小的进行右移==)
2. 尾数求和。将对阶之后的两个尾数按照定点加减法规则运算
3. 规格化。为增加有效数字的位数,提高运算精度,需要将运算得到的**尾数**进行**规格化**
1. 左规——当尾数出现`00.0xxxx`或者`11.1xxxx`时,左规即==尾数左移一位,阶码减一,直到符合`00.1xx`者`11.0xx`
2. 右规——尾数出现`01.xx`或者`10.x`时,在定点中认为是溢出,但是浮点运算不溢出,进行右规,即==右移一位==即可。
4. 舍入。为**提高精度**,需要考虑尾数右移时丢失的数值位
5. 溢出判断
5. ### 6.5节ALU需要掌握超前进位链?超限进位链?
6. ### 作业
1. {% asset_img image-20220404201021506.png image-20220404201021506 %}
2. {% asset_img image-20220404201226598.png image-20220404201226598 %}
3. ## 补码运算要说明是否溢出
4. {% asset_img image-20220404202439546.png image-20220404202439546 %}
5. ## 后边的没听,到时候记得看课本
6.
## 第七章 指令系统
### 1、操作码
固定编码、扩展编码方式
### 2、与数据有关的寻址方式
1. 立即寻址、寄存器寻址、直接寻址、间接寻址、寄存器间接寻址、基址寻址、变址寻址、相对寻址
2. | ==**寻址方式**== | ==**特点**== |
| ---------------- | ------------------------------------------------------------ |
| 立即寻址 | 地址就是操作数 |
| 寄存器寻址 | 地址是寄存器的编号,因此有:==1.指令较短,节省空间 2.无需访存,节省时间==的优点 |
| 直接寻址 | 地址就是直接的地址 |
| 间接寻址 | 地址储存的是操作数的地址 |
| 寄存器间接寻址 | 寄存器中储存的是地址,通过访问寄存器得到地址,然后访存得到数据 |
| 基址寻址 | 基址寄存器==BR==(内容不会变化)和有指令中的形式地址==A==相加得到有效地址==EA==,即`EA=A+(BR)` |
| 变址寻址 | 变址寄存器==IX==(内容可以变化)和有指令中的形式地址==A==相加得到有效地址==EA==,即`EA=A+(IX)` |
| 相对寻址 | 程序计数器==PC==(即当前指令的地址)和有指令中的地址==A==相加得到有效地址==EA==,即`EA=A+(PC)` |
3. 基址寻址和变址寻址的区别
1. **一个是基址寄存器BR,一个是变址寄存器IX,BR不可变,IX可变**
### 3、指令格式设计举例 P323-326
## 第八章 CPU的结构和功能
### 1、指令周期流程
```mermaid
graph LR
a[取指周期]-->b{有间址周期吗}
b--Y-->c[间址周期]
b--N-->d[执行周期]
c-->d
d-->zhongduan{有中断吗}
zhongduan--Y-->e[中断周期]
zhongduan--N-->a
2、中断隐指令
允许中断触发器==EINT==
中断请求标记触发器==INTR==
当==EINT和INTR==都为==1==时,即当前允许响应中断请求,并且也有中断请求
保护程序断点、寻找服务程序入口地址、关中断
**** | ...... |
---|---|
保护程序断点 | 将==PC==的内容(程序断点)存到特定单元(如0号地址或者堆栈) |
寻找中断服务程序的入口地址 | ==硬件向量法==:在中断周期内,将向量地址送入PC,使CPU执行下一条无条件转移指令,转至中断服务程序的入口地址 |
==软件查询法==:在中断周期内,将软件查询入口地址的程序(又称==中断识别程序==)首地址送入PC,使CPU执行==中断识别程序==,找到入口地址 | |
关中断 | 将EINT(允许中断触发器)置0,即关中断,禁止CPU再次响应新的中断请求 |
3、中断屏蔽技术
改变屏蔽字,改变中断处理顺序(课本P369)
==最先执行的,屏蔽字全是1,然后往后挨个少一个1==
CPU执行程序轨迹,先根据==硬件排队优先次序==判断,再根据==屏蔽字==判断,注意小的起伏
第九、十章 控制单元
1. 指令周期、机器周期和时钟周期的概念以及三者之间的关系
指令周期>机器周期>时钟周期
(v^ _^)v | (@-@) |
---|---|
指令周期 | CPU每取出并执行一条指令所需要的全部时间 |
机器周期 | 在==同步控制==的机器中,指令指令周期中一步相对完整的操作所需要的时间,通常安排机器周期长度等于==主存周期== |
时钟周期 | 计算机主时钟的周期时间,是计算机运行时最基本的时序单位,对应完成一个==微操作==所需的时间 |
关系:
- 时钟周期是基本动作单位
- 一个机器周期==通常==由多个时钟周期组成
- 一个指令周期==可能==包含==一个或多个==机器周期
2. 根据CPU的数据通路,写出指令的微操作
1.取指周期、间址周期、执行周期、中断周期
1. 取指周期
非总线结构 | |
---|---|
PC->MAR | 现行指令地址->MAR |
1->R | 命令存储器读 |
M(MAR)->MDR | 将现行指令从存储器中读到MDR |
MDR->IR | 从MDR中将现行地址传递到IR |
OP(IR)->CU | 指令的操作码->CU译码 |
(PC)+1->PC | 形成下一条指令的地址 |
单总线结构 | |
---|---|
PC->Bus->MAR | PC0, MARi |
M(MAR)->MDR | MAR0, R/W(上划线)=R,MDRi |
MDR->Bus->IR | MDR0,IRi |
(PC)+1->PC | +1 |
间址周期
执行周期
非访存指令 清楚累加器CLA 0->ACC 累加器取反COM ACC(一整个上划线)->ACC 算数右移一位SHR L(ACC)->R(ACC), ACC0->ACC0 循环左移一位CSL R(ACC)->L(ACC), ACC0->ACCn 停机指令STP 0->G ==G是运行标志触发器,1运行0停机== 访存指令 加法指令ADD X 1. 有的需要访存,需要读取IR的地址部分送至MAR,==Ad(IR)->MAR== 然后读指令==1->R==,读数据==M(MAR)->MDR==,加法==(ACC)+(MDR)->MDR== 加法ADD AX,BX 2. 有的不需要访存的只需完成==(AX)+(BX)->AX== 存数指令STA X 将地址送入MAR,==Ad(IR)->MAR==,然后写指令==1->W== 将ACC内容写入MDR(毕竟要通过MDR链接总线)==ACC->MDR== 将MDR内容写入主存==MDR->M(MAR)== 取数指令LDA X 与存数相反,将W写操作变成R读操作,从主存读数到MDR,再从MDR写到ACC 转移类指令 无条件转移指令JMP X 将地址码部分送至PC,==Ad(IR)->PC== 条件转移BAN X 若ACC最高位(即A0=1),则将指令地址码送给PC 总指令为==A0 ·Ad(IR)+A0(反)·(PC)->PC== 中断周期 在中断周期,由中断隐指令自动完成保护断点、寻找中断服务程序入口地址以及硬件关中断的操作。 假设程序断点存到主存的0地址单元,且采用==硬件向量法==寻找入口地址,则有 0->MAR 将特定地址“0”存入存储器地址寄存器 1->W 写命令 PC->MDR 将PC的内容(==程序断点==)送入MDR MDR->M(MAR) 将MDR(上一步写入的==程序断点==)写入0地址 向量地址->PC 将向量地址形成部件的输出送到PC,为下一条指令的取指周期做准备 0->EINT 关中断 配合节拍以及微指令
3. 微程序控制器的基本概念
微命令、微操作、微指令、微周期、微程序、控制存储器
x_x | ^ _ ^ |
---|---|
微命令 | 构成控制信号序列的最小单位 |
微操作 | 由微命令控制实现的最基本的操作 |
微指令 | 若干个微命令的组合 |
微周期 | 指从控制存储器中读取一条微指令并执行相应的微操作所需的时间 |
微程序 | 一系列微指令的有序集合 |
控制存储器 | 存放微程序的只读存储器 |
4. 微指令和微操作的关系,微指令和机器指令的关系,微程序和程序之间的关系
5. 微指令控制器的组成及部件的作用
6. 微程序控制器的设计思想
7. 微程序控制器的工作原理
微程序是利用软件方法来设计硬件的技术
将完成指令所需要的控制信号按照格式编写成微指令,存放到控制存储器
- 一条机器指令对应一段微程序(多条微指令,==别忘了一条微指令由若干微命令构成==)
- 指令取指执行——>微程序的执行——>执行多条微命令——>依次生成控制信号
- 存储技术和程序设计相结合,回避复杂的同步时序逻辑设计
PS:一个==微指令==就是一串二进制数010110,每个位置对应一个最基本的操作
- 一条机器指令对应一段微程序(多条微指令,==别忘了一条微指令由若干微命令构成==)
8. 微指令的编码方式
直接编码、字段直接编码方式、字段间接编码方式、混合编码
9. 微指令序列地址的形成
微指令的 下地址字段 指出
根据机器指令的 操作码 形成
增量计数器
- ==(CMAR)+1——>CMAR==
分支转移
1. 操作控制字段 转移方式 转移方式:指明判别条件
转移地址:指明转移成功后的去向
通过测试网络
由硬件产生微程序入口地址
- 微程序的==第一条==微指令地址,可以由==专门的硬件电路==产生,也可以从外部直接写入CMAR
- 进入中断周期,也可以由==硬件==产生相应的==中断周期微程序==的入口地址
- 相应的,间接寻址时,也由==硬件==产生==间址周期微程序==的入口地址
后续微指令地址形成方式原理图 图10.11
Others:
多级时序系统:
指令周期 > 机器周期 > 时钟周期
同步控制方式:
任一微操作均由统一基准时标的时序信号控制
一个机器周期包含多少个时钟周期?
- 采用定长的机器周期(机器周期内节拍数相同)
- 采用不定长的机器周期(机器周期内节拍数不等)
- 采用 中央控制和局部控制相结合 的方法
除了同步控制方式,还有:
- 异步控制方式(无基准时标信号,采用双方应答方式)
- 联合控制方式(同步与异步相结合)
- 人工控制方式(用于调试方式)