计组
名词解释题
指令 | 解释 |
---|---|
程序计数器(PC) | 用于存放下一条要执行的指令。每次指令执行完成后,PC自动递增,指向下一条指令 |
指令寄存器(IR) | 用于暂存寻当前要执行的指令 |
指令集体系结构(ISA) | 定义了一台计算机可以执行的所有指令的集合。每条指令规定了计算机执行什么操作,操作的位置和操作数的类型,包括指令集、寄存器等 |
CPI(Cycles Per Instruction) | 执行一条指令所需的时钟周期数,衡量CPU性能 |
MIPS(Million Instructions Per Second) | 每秒钟执行多少百万条指令 |
下溢 | 定点计算机中:下溢是从从负方向超过了数的范围。浮点计算机中:不论数的符号的正负,若阶码从负的方向超出阶码的范围,或者尾数为‘0’时,称为下溢 |
上溢 | 定点计算机中:上溢是从正的方向超过了数的范围。浮点计算及中:不论数的符号的正负,若阶码从正的方向超过阶码的表示范围,称为上溢 |
机器字长 | 计算机进行一次整数运算所能处理的二进制数的位数,通常与CPU的寄存器位数有关 |
大端方式 | 数据的低位(在数据后面权值小的位)放在内存的高地址中,高位存放在内存的低地址 |
小端方式 | 数据的低位(数据后面权值小的位)放在内存的低地址,高位存放在内存的高地址中 |
指令 | 是指计算机完成某种操作的命令,通常包括操作码和地址码 |
指令指针IP | 相当于ARM中的程序计数器PC,控制指令的执行顺序。IP是存放指令机器码的内存单元的地址指针 |
程序状态字PSW | 程序当前状态的二进制序列,一般包括反应指令执行结果的标志信息(进位、溢出)和状态信息(中断允许/禁止) |
程序状态字寄存器PSWR | 用来存放程序状态字(指令执行结果的状态标志和控制信息)的寄存器(Program Status Word register) |
寻址方式 | 是指令中操作数的地址的表示方法,决定了操作数的获取方式。包括直接寻址、间接寻址等等 |
立即寻址 | 指令中直接给出操作数 |
直接寻址 | 指令中给出操作数的有效地址 |
寄存器寻址 | 指令中给出的是操作数所在的寄存器的编号 |
寄存器间接寻址 | 指令中给出的是一个寄存器编号,寄存器里放着操作数的有效地址 |
CISC | 复杂指令集计算机 |
RISC | 精简指令集计算机 |
MAR | 存储器地址寄存器 |
MDR | 存储器数据寄存器 |
控制存储器(CS) | 用来存放实现全部指令系统的所有微程序的只读存储器 |
数据通路 | 数据在功能部件之间的传送路径叫做数据通路 |
流水段寄存器 | 用来在流水段各个阶段之间暂存数据的寄存器 |
结构冒险 | 多条指令同时访问一处硬件导致的流水线阻塞的情况 |
数据冒险 | 多条指令之间存在数据依赖而导致的流水线阻塞的情况 |
控制冒险 | 因为发生了指令执行顺序的改变而导致的流水线阻塞的情况 |
SRAM | 静态随机存取存储器 |
DRAM | 动态随机存取存储器 |
码距 | 同一编码中,任意两个合法编码之间不同二进制位数的最小值 |
FIFO | 先进先出法则,遵循先进入的数据先出去的原则 |
LRU | 最近最少使用,是一种缓存替换算法,淘汰最长时间没有被访问的缓存项 |
全写法 | 存储器写入策略,每次写入数据时,同时更新内存和高速缓存cache的内容 |
回写法 | 存储器写入策略,每次写入数据时,只更新高速缓存cache中的内容,当缓存块被替代时,再将其写回主存 |
时间局部性 | 刚被访问过的内存单元,在不久之后将再次被访问 |
空间局部性 | 刚被访问过的内存单元附近的存储单元,可能在将来被访问 |
I/O端口 | I/O接口中,一些可被程序访问的寄存器,存放控制、数据和状态等信息,这些寄存器称为I/O端口 |
DMA(Direct Memory Access) | 直接内存访问,允许外部设备直接和内存进行数据传输,而不需要CPU参与每个数据传输的过程 |
简答题
1.计算机内部为什么用二进制来编码所有信息?计算机内都用二进制表示信息,为什么还要引入十六进制?
答:(1)二进制系统只有两个基本符号:0、1,他的基本符号少,易于用稳态电路实现
(2)二进制的编码、计数、运算等规则简单
(3)二进制中的0和1与逻辑命题里的“真”和“假”对应关系简单,便于实现计算机中逻辑运算和程序中的逻辑判断,可通过逻辑门电路方便地实现逻辑运算
因为二进制的位数多,阅读记忆不便,十六进制与二进制对应关系简单,便于阅读记忆书写,所以引入十六进制,使得人们开发、调试程序和阅读机器内部代码时,能方便地用十六进制来等价表示二进制信息
2.常用的定点数编码方式有哪几种?通常它们各自用来表示什么?
答:原码、反码、补码、移码
(1)原码:由符号位直接和数值为构成,通常用来表示浮点数的尾数
(2)反码:求补码时会用到,用于数据校验
(3)补码:用来表示有符号数
(4)移码:表示浮点数中的阶码
3.为什么现代计算机大都用补码来表示整数?
和原码、反码相比,补码表示整数有以下好处:
符号位可以一起参与运算
补码可以实现模运算,即可以用加法方便实现减法运算
零的表示唯一
可以多表示一个最小负数
4.在浮点数的基数和总位数一定的情况下,浮点数的表示范围和精度分别由什么决定?两者如何相互制约?
浮点数的表示范围由阶码的位数决定,精度由尾数的位数决定。
阶码位越多,则尾数位越少。即表示的数据的范围越大,精度越低。
5.CPU的基本组成和基本功能各是什么?
组成:运算器+控制器
功能:数据加工:算术/逻辑运算
程序控制:程序中指令执行顺序控制
操作控制:将机器指令翻译成执行部件所需操作控制信号
时序控制:控制操作信号的产生、持续时间
异常控制:异常处理,外设交互
6.控制器的功能是什么?
主要功能:循环取指、执行、处理异常
从主存中取出指令,指出下一条指令的地址
进行译码、测试,产生对应的控制信号
指挥并控制CPU、主存、I/O之间的数据流
7.单周期处理器的CPI是多少?时钟周期如何确定?为什么单周期处理器的性能差?
CPI为1,因为每条指令只需要一个时钟周期即可完成
单周期处理器的时钟周期需要确保在一个时钟周期内完成一条机器指令的所有步骤,包括取指、译码、执行、访问存储器和写回寄存器
性能差是因为:其时钟周期取决于执行时间最长的指令,对于大多数简单指令来说时钟周期过长,导致CPU大部分时间都在空闲等待
8.硬连线控制器和微程序控制器的特点各是什么?
硬连线:同步逻辑,繁、快、贵、难改
速度快;设计复杂、调试难、不易修改、不利于拓展和兼容。适合RISC计算机
微程序控制器:异步逻辑,简、慢、廉、易改
设计简单、易于修改和调试,可实现复杂的指令功能;速度慢。适合CISC计算机
9.为什么CISC大多采用微程序控制器,RISC大多采用硬连线控制器?
(1)CISC复杂指令集计算机的控制逻辑复杂,用硬连线会导致电路规模过大,不宜修改;用微程序,能够将复杂的指令简单化,用微指令控制,简化设计,提高灵活性和可维护性
(2)RISC精简指令集计算机指令长度固定,控制逻辑简单,用微程序会增加不必要的存储器访问时间,降低执行效率;使用硬连线直接根据操作码产生控制信号,这样可以提高速度,减少开销,而且可以利用流水线技术和超标量技术提高性能
10.什么是DMA方式
DMA(direct memory access)直接内存访问方式是一种不需要CPU参与的数据传输方式。在DMA传输过程中,DMA控制器负责数据传输过程,CPU只需要发出传输指令即可,不需要参与每个数据子的传送过程,从而释放CPU的运算资源
用于外设与存储器之间和存储器与存储器之间提供高速数据传输
11.CPU如何进行设备的寻址?
两种方式:内存映射I/O和端口映射I/O
内存映射I/O是将设备的寄存器或端口映射到内存地址空间中,使得CPU可以用访存指令访问设备;端口映射I/O是将设备的寄存器或端口映射到一个独立的地址空间中,CPU需要有专门的I/O指令来访问设备
CPU进行设备的寻址,一般会通过指令和寄存器来实现。具体来说,CPU会通过指令中的地址字段来指定要访问的设备或设备的寄存器。
12.输入输出的编址方式有哪两种?各有何特点?
编址方式有:与存储器统一编址和独立编址
统一编址:又称存储器映射方法,指吧I/O端口当作存储器的单元进行地址分配,CPU可以使用统一访存指令访问设备。更灵活、方便,端口占用存储地址,使内存容量变小,存储器编址的I/O设备数据操作,速度慢
独立编址:又称I/O映射方式,IO端口地址空间和主存地址空间是两个独立空间,无法从形式上区分,需要设置专门I/O指令来访问I/O端口。
指令与存储器指令有明显区别,编制清晰,便于理解。但是指令少,一般只能对端口进行传送操作,需要CPU提供存储器读/写等,增加了控制的复杂性
13.什么是中断控制I/O方式?说明其工作原理
中断控制I/O方式:通过让CPU执行相应的中断程序来完成输入输出的任务
工作原理如下:
(1)中断允许:CPU在执行程序时,会设置中断允许标志,表明允许接收中断请求
(2)检查中断:CPU在每条指令执行完毕后,会检查中断请求信号,如果没有中断,继续下一条指令
(3)中断请求:当I/O设备完成操作后,会向CPU发送中断请求信号,CPU检测到中断程序后,暂停当前任务,保存现场信息,转入中断服务程序
(4)中断程序:CPU执行中断服务程序,处理I/O数据,同时清除中断服务请求,恢复中断允许标志
(5)中断返回:CPU执行完终端服务后,恢复现场信息,返回原任务,继续执行
14.流水线方式下,一条指令的执行时间缩短了吗?程序的执行时间缩短了吗?
一条指令的执行时间没有缩短,甚至可能增加,因为流水线的每一个阶段都需要一定时间,而且要考虑流水线的建立时间和流水线间的寄存器延迟
程序的执行时间缩短了,因为流水线可以提高指令的并行度,使多条指令在不同阶段执行,从而提高了程序的吞吐率
15.具有什么特征的指令集易于实现指令流水线?
(1)无数据相关性:存在数据相关性时,需要插入停顿周期来解决数据冒险,因此减少数据相关性,能减少停顿周期的插入,提高流水线的效率
(2)指令长度保持一致,在流水线中避免需要变长或变短的时钟周期
(3)简单的指令格式,便于指令的译码和操作码的识别,提高流水线效率
(4)少量分支和跳转指令: 大量的分支和跳转指令可能会增加预测错误的概率,导致流水线的停顿
16.数据冒险的解决方法有哪些?
软件方法:插入空指令;调整程序顺序,使相关性在流水线中消失
硬件方法:插入气泡;数据重定向(数据旁路)
计算题
计算CPI\MIPS
1.
M1=800/1=800MIPS M2=1600/2=800MIPS
(1+2+2+3+4)/5=2.4 (2+2+4+5+6)/5=3.8
假设P的指令条数为N,P在M1上执行时间
2.4
∗
N
∗
1
/
0.8
=
3.0
N
3.8
∗
N
∗
1
/
1.6
=
2.375
N
2.4*N*1/0.8=3.0N 3.8*N*1/1.6=2.375N
2.4∗N∗1/0.8=3.0N3.8∗N∗1/1.6=2.375N
所以M2执行速度更快,每条指令平均快0.625ns
2.
只执行A指令,1000/1=1000MIPS
只执行A或者B指令,1500/2=750MIPS
(1+2+2+3+4)/5=2.4 (2+2+4+5+6)/5=3.8
设置P的指令数N,P在M1上执行时间
2.4
∗
N
∗
1
/
1
=
2.4
N
3.8
∗
N
∗
1
/
1.5
=
2.53
N
2.4*N*1/1=2.4N 3.8*N*1/1.5=2.53N
2.4∗N∗1/1=2.4N3.8∗N∗1/1.5=2.53N
在M1上平均一条指令比M2上快0.13s
3.
设P指令条数位N
在M1上 4*0.8 *N=3.2N M2上 2 * 1.2 * N=2.4N(ns)
M2上快,快0.8ns
4.
时钟周期数=2000 * 10=20000
1.5 * 20000=30000 时钟频率=30000/6=5000=5GHz
5.
P1时钟周期数=(8+4+4)=20
P2时钟周期数=(1+10+12)=23
P1的CPI为20/12=1.67 P2CPI 为23/10=2.3
两个代码在一个机器上执行,所以时钟周期一样,故时钟数少的代码时间短,速度快,
P1比P2快
cache 直接映射、组相联映射
直接映射:物理地址=标记+cache行号+块内地址
全相联映射:物理地址=标记+块内地址
组相联映射:物理地址=标记+组号+块内地址
每块16B,2^4=16,块内地址4
cache容量128kB,128kB/16B=2^13块
组相联使两组213/2=212,直接映射就除以1
组号为12,cache行号为13
标记=主存-行号(组号)-块内地址
1.直接映射
块大小为1B无须寻址,块内地址位数为0
cache为4B 2^2=4 cache行号为2
主存地址-cache地址=标记=32-2=30,标记位数为30,行号位数为c=2
块大小设置为1B的缺陷:
(1)临近单元可能被访问,但由于没有跟着该字节调入cache,因此临近单元的访问也会发生缺失,程序访问的空间局部性没有被利用
(2)在cache行数不变下,块太小会使映射到同一个cache行的主存块数增加,发生冲突机率增大
2.例 7.5 假定主存和 cache 之间采用直接映射方式,块大小为 512B。cache 数据区容量
为8KB,主存空间大小为 1MB。问:主存地址如何划分?要求用图表示主存块和 cache行
之间的映射关系,假定 cache 当前为空,说明 CPU 对主存单元 0240CH 的访问过程
主存大小为2^20=1MB
cache为2^13=8KB 块大小为512B为2^9
组号=213/29=2^4
块内地址为9,cache组号为4,主存地址为20,标记为20-9-4=7
0240CH为 标记0000 001 组号0010 块内地址0 0000 1100
块内是块号为18块(标记+组号),所属块群为第一块(标记),映射到的cache为0010(第2行)
访问过程:首先根据中间4位0010,找到cache第2行,cache为空,每个cache有效位位0.不命中。将0240CH单元所在的第18块复制到cache第2行,并置有效位1,置标记为0000 001
3.例7.6
块内地址16B=2^4 主存32位,cache组号64KB/16B=216/24=2^12
标记为=主存-块内地址-组号=32-4-12=16
整个访存过程由硬件实现,先根据12个cache位找到对应的行,在行里将16个标志位进行比较,若相等设有效位为1,输出hit为1
每个cache行由一位有效位V,16标记和4个32位数据组成,共4K行
总容量位2^12 * (4 * 32+16+1)=4K * 145=580Kbits=72.5kb
4.组相联映射
块内地址512B=2^9 cache组号=8KB/2/512B=2^3 主存位2^20
标记=20-9-3=8
0240CH为 标记0000 0010 组号010 块内地址0 0000 1100
访问过程:首先根据中间3位010,找到cache第2组,将标记与cache行的标记进行比较,若有一个相等且有效位为1,则命中。将块内地址送CPU。如果都不命中,九八0240CH单元所在主存的第18块复制到第二组,置有效位为1,置标记为为0000 0010
5全相联映射
块内地址16B=2^4 4K=2^12
关联度为1:直接映射,每组一行,共4K组,标记占32-4-12=16位
总位数站4K * 16=64 K位
关联度为2:2路组相联,每组两行,共2K组,标记占32-4-11=17位
总位数位4K * 17=68K
**全相联:**整个为一组,每组4K行,标记站32-4=28位
总位数4K * 28=112K位
标记所占总位数=cache行号 * 标记位