版权声明:本文为CSDN博主「油条生煎」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
觉得这位学长写的非常好,复制了一份修改自用,原文链接在这里
第 1 章 绪论
1.ISA:指令集体系结构(instruction set architecture ,ISA)
2.计算机的硬件和软件等效原理有什么重要性?
可以使用不同的原理来实现相同的计算机功能
3.列举计算机的3种基本部件。
用来解释和执行程序的处理器
用来存储数据和程序的存储器
与外界进行数据传输的机制
4.通常用来测量计算机时钟频率的单位是什么?
MHz
5.列举两种类型的计算机存储器。
随机存取存储器(RAM)和只读存储器(ROM)。
RAM可以读写数据,但数据在断电后会丢失;
ROM只能读取数据,数据可以长期保存。
在编程中,可以使用ROM存储只读数据和固定的程序代码,而RAM用于存储变量和临时计算结果。
6.解释SSI,MSI,LSI和VLSI之间的区别?
小规模集成电路(SSI):每块芯片上只有10-100个元件;
中规模集成电路(MSI):每块芯片上集成100-1000个元件;
大规模集成电路(LSI):每块芯片上集成的元件多达1000-10000个;
最后是超大规模集成电路(VLSI),每块芯片上集成的元件超过10000.
超大规模集成电路标志着第四代计算机的开始。
7.冯·诺伊曼体系结构与它以前的计算机体系结构有什么不同?
早期的计算机体系结构中,编程就是利用各种导线进行接插连线,没有计算机的分层结构。冯·诺伊曼体系结构使用一种利用汞延迟线形式的存储设备,可以提供一种存储程序指令的方法,即分层的计算机体系结构。
8.取指-译码-执行周期的工作原理是怎样的?
处理器的工作是执行指令的过程:
取指——从主存储器读取指令
译码——翻译指令代码的功能
执行——完成指令所规定的操作
处理器就是在重复进行着“取指-译码-执行周期(Fetch-Decode-Execute Cycle)”过程中完成了一条条指令的执行,实现了程序规定的任务。
第 4 章 计算机模型MARIE
CPU 基本知识和组织结构
CPU的主要功能:负责提取程序指令,并对指令进行译码,然后按程序规定的顺序对正确的数据执行各种操作。
算术逻辑单元(ALU)在程序执行过程中用于执行逻辑运算和算术运算。
控制单元负责监视所有指令的执行和各种信息的传输过程,根据程序计数器和状态寄存器中的值确定执行的动作。
总线
总线就是一组连线的集合,它作为一种共享的而又常见的数据通路连接系统内的多个子系统。
主设备是最初启动操作的设备,从设备是响应主设备请求的设备。
数据总线用于数据传递;控制线指示哪些设备有使用总线的权限,以及使用目的是什么;地址线表示数据的位置。
总线周期(bus cycle) 是完成总线信息传送所需的时钟脉冲间隔。
总线仲裁机制(bus arbitration):
菊花链(Daisy chain)仲裁方式:使用一个“总线允许”控制线,该总线是从最高优先级设备传给最低优先级设备的。
集中式并行(Centrailized parallel) 仲裁方式:每个设备都有一个到总线的请求控制线和一个选择谁可以使用总线的仲裁控制器。
采用自选择的分配式(Distributed using self-detection) 仲裁方式:设备本身决定谁具有最高优先级和谁应该得到总线使用权。
采用冲突检测的分配式(Distributed using collision-detection) 仲裁方式:允许每个设备对总线发出请求。如果总线检测到任何冲突(多个同时请求),则设备必须发出另一个请求)。
时钟
时钟周期(clock cycle):时钟脉冲的时间间隔。
CPU 时间 = 时间 ( s ) / 程序 = ( 指令 / 程序 ) × ( 平均周期 / 指令 ) × ( 时间 ( s ) / 周期 )
存储器的组成和寻址方式
字节编址:每个单独的字节具有一个唯一的地址。
按字编址:每个字具有一个唯一的地址。
在低位交叉时,地址的低位用于选择模块;在高位交叉时,地址的高位用于选择模块。
中断
中断是改变(或中断)系统中流程正常执行的各种事件。
由用户或系统发出(启动)的中断请求可以是可屏蔽中断(可以被禁止或忽略)或不可屏蔽中断(高优先级的中断不能被禁止并且必须响应),它可以在指令内或指令之间发生。
MARIE
在 MARIE 中,有下列 7 种寄存器:
AC:累加器用来保存 CPU 需要处理的数据。
MAR:存储器地址寄存器用来保存所引用数据的存储器地址。
MBR:存储器缓冲寄存器用来保存刚从存储器中读取或者将要写入存储器中的数据。
PC:程序计数器用来保存将要执行的下一条指令。
IR:指令寄存器用来保存将要执行的下一条指令。
InREG:输入寄存器用来保存来自输入设备的数据。
OutREG:输出寄存器用来保存要输出到输出设备的数据。
描述微操作(微指令,规定了对寄存器中存储的数据执行的基本操作)行为的符号表示法称为寄存器传输语言(RTL,Register Transfer Notation)。
编译程序
对于采用标记符号编写的汇编程序,编译程序必须进行两次转换,即编译程序需要通读程序两次。
在第一次通读时,编译程序会建立一组名为符号表的对应关系。
在符号表建立之后,编译程序可以进行第二次通读,并且会“填充原来的空白位置”。
基本概念
1.数据通路的作用是什么?
数据通道是一种由存储单元和算数逻辑单元所组成的网络,这些组件通过总线连接起来,并利用时钟来控制时间。
2.控制单元的任务是什么?
负责监视所有指令的执行和各种信息的传输过程,根据程序计数器和状态寄存器中的值确定执行的动作。
3.寄存器安排在什么位置?有何种不同类型的寄存器?
位置:处理器内部;
存储信息寄存器
进行数值移位寄存器
进行数值比较的寄存器
计数寄存器
变址寄存器
堆栈指针寄存器
状态寄存器
通用寄存器
“中间结果”寄存器
4.什么是总线周期?
完成总线信息传送所需的时钟脉冲间的时间间隔
5.列举三种不同类型的总线,并指出这些总线在计算机中的位置。
处理器-内存总线:连接处理器和内存系统
I/O总线:连接不同带宽的各种设备
底板总线:机器主板上的一条总线,将主板上所有的部件连在一起
6.总线仲裁的4种方式是什么?
菊花链仲裁方式(Daisy chain)
集中式平行仲裁方式(Centrailized parallel)
采用自选择的分配式仲裁方式(Distributed using self-detection)
采用冲突检测的分配式仲裁方式(Distributed using collision-detection)
7.说明取指-译码-执行周期的各个步骤
将PC中的内容复制到MAR:MAR←PC;
CPU转向主存储器,提取由MAR给出的地址单元中的指令,并将指令放入指令寄存器IR中。同时,PC自动加1,现在PC指向程序的下一条指令:IR←M[MAR]和PC←PC+1;
将IR中最右边的12位复制到MAR,并对IR最左边的4位进行译码,以确定操作码:MAR←IR[11-0]和译码IR[15-12];
如果需要,CPU将使用MAR中的地址转向存储器提取数据,并将数据放入MBR(可能是AC)中,然后执行该命令:MBR←M[MAR],并且执行实际的指令。
8.中断驱动的I/O是如何工作的?
当CPU要执行输入或输出指令时,首先通知相应的I/O设备;
然后,继续处理其他的一些工作任务,直到该I/O设备准备就绪;
这时,I/O设备会向CPU发送一个中断请求信号;
随后,CPU会响应和处理这个中断请求;
完成输入或输出操作后,CPU会继续其正常的取指-译码-执行周期。
第 5 章 指令集架构
指令格式(Instruction Format)
不同的指令集可以通过以下特征进行区分:
- 操作数的存储位置(Stack, Register, or both)
- 每条指令包含的显式操作数的个数(0/1/2/3)
- 操作数的位置
- 操作
- 操作数的类型和大小
指令集设计决策
短指令更好,因为它们占用更少的内存空间并且可以快速地从内存中读取出来。
定长指令的译码相对容易但浪费空间。
内存组织影响指令格式。
在定长指令中操作数的个数并非固定不变的。
寻址方式有多种类型。
大端和小端方式
大端方式(Big Endian):将最高有效字节存放在最低地址
小端方式(Little Endian):将最低有效字节存放在最低地址
小端方式和大端方式是指字节的顺序不同,而不是数字位顺序的不同。
大端方式更符合大多数人的习惯,更易于读取十六进制数。
小端计算机实现高精度的算术运算更快速且更容易。
CPU 内部的存储:堆栈和寄存器
1.A stack architecture
2.An accumulator architecture
3.A general-purpose register (GPR) architecture
操作数个数和指令长度
定长指令 —— 浪费空间但是速度快,当使用指令集流水线时,它具有更优的性能。
变长指令 —— 译码更复杂但是节省存储空间。
常用的指令格式:
- 仅有操作码(零地址指令)
- 操作码 + 一个地址(通常使用一个内存地址)
- 操作码 +两个地址(通常使用两个寄存器地址,或者寄存器地址和一个内存地址)
- 操作码 +三个地址(使用三个寄存器地址,或者寄存器地址和内存地址的组合)
没有操作数的机器指令必须使用堆栈来在逻辑上实现一个或两个操作数的运算。
扩展操作码(Expanding Opcodes)
思想:有一些短操作码,但需要时也可以提供更长的操作码。
寻址方式
立即寻址(Immediate addressing):指令数就是指令中紧跟操作码之后的数,而且立即就能被访问到。
直接寻址(Direct addressing):是指在指令中通过直接内存地址给出的操作数。
寄存器寻址(Register addressing):用来指定操作数的内存地址被寄存器编号所取代。
间接寻址(Indirect addressing):地址字段的位数指定了一个内存地址,而该地址当作一个指针来使用。
寄存器间接寻址(Register indirect addressing):操作数字段给出的不是内存地址,而是寄存器地址。
变址寻址(Indexed addressing):一个变址寄存器用来存储偏移量,偏移量加上指令的操作数,就得到了所请求操作数的有效地址。
基址寻址(Based addressing):存放一个基地址,而地址码字段表示相对于此基地址的偏移量。
堆栈寻址:操作数应假设存放在堆栈中。
间接变址寻址:同时使用间接寻址和变址寻址。
基址/偏移寻址:它将一个偏移量和基址寄存器中的值进行相加,然后将和加到指定操作数上,从而产生实际指令中所用操作数的有效地址。
指令流水线
指令流水线是一种要用来实现指令级并行(ILP)的方法。
每一个步骤叫作一个流水线阶段。
加速比:
S
p
e
e
d
u
p
S
=
n
t
n
(
k
+
n
−
1
)
t
p
Speedup S=\frac{nt_n}{(k+n-1)t_p}
SpeedupS=(k+n−1)tpntn (n条指令、k级流水线、时间周期
t
p
t_p
tp 、不用流水线时需要花费
n
t
n
nt_n
ntn个时钟周期)。
理论加速比: S p e e d u p S = k Speedup S = k SpeedupS=k
基本概念
1.固定长度和可变长度的指令结构各有什么优缺点?当前哪一种指令结构更流行?
固定长度(fixed length):会浪费一些存储空间,指令执行的速度快。在采用指令层次的流水线结构时,固定长度的指令系统的性能会更好些。
可变长度(variable length):译码变得比较复杂,但是节省存储空间。
在实际设计中,通常会考虑一些折中的方案,采用两到三种不同的指令长度。
2.什么是寻址方式?
指定指令中操作数位置的方法
举例说明下列的寻址方式:
立即寻址:在指令中操作代码后面的数值会被立即引用。Eg:指令Load 008的操作就是将数值8直接装入累加器AC中;
直接寻址:在指令中直接指定要引用的数值的存储器地址。Eg:指令Load 008的操作就是将存储器地址为008的存储单元中的数值装入累加器AC中;
寄存器寻址:采用一个寄存器来指定一个操作数,与直接寻址方式不同的是指令的地址域包含一个寄存器的引用。
间接寻址:地址域中的二进制数用来指定一个存储器地址,该地址中的内容将被用作一个指针,操作数的有效地址是通过访问这个存储器地址来获得的。Eg:指令Load 008的操作表示在存储器地址为008的单元中存放的数据值实际上就是所要求的操作数的有效地址,假设在008单元存放的数值为2A0,执行这条指令的操作之后就将地址为2A0的存储器单元中的内容装入到累加器AC中;
寄存器间接寻址:采用一个寄存器来代替某个存储器地址作为指针;
变址寻址:一个变址寄存器用来存储一个偏移量,将这个偏移量与操作数相加,就产生了指令所要求的数据的有效地址。Eg:如果指令Load X 中的操作数X是采用变址寻址方式编址的,若假定R1为变址寄存器,而且其中存放的数值为1,那么操作数的有效地址实际上就是X+1.
3.解释有关流水线体系结构的基本概念。
计算机使用时钟脉冲来精确控制各个操作步骤的顺利执行,但是有时还可以使用一些额外的脉冲来控制某个操作步骤中的一些小细节,有些CPU会将取指-译码-执行周期分成一些较小的步骤,其中的某些较小的步骤可以并行执行,这种时间上的交叠可以加快CPU的执行速度,这种方法称为流水线(pipeline)。
第 6 章 存储器
存储器类型
RAM (Random access memory)
ROM (Read-only memory)
SRAM is faster and much more expensive than DRAM; however, designers use DRAM because it is much denser (can store many bits per chip), uses less power, and generates less heat than SRAM.
DRAM需要频繁充电已保存数据
存储器的层次结构
命中(Hit)
失效(Miss)
命中率(Hit rate)
失效率(Miss rate)
命中时间
失效惩罚(Miss penalty)
访问局部性(Locality of Reference):
时间局部性(Temporal Locality)—— 最近访问的数据在不远的将来会再次被访问
空间局部性(Spatial Locality)—— 访问趋向于在地址空间中聚集
顺序局部性(Sequencial Locality)—— 指令趋向于按顺序访问
高速缓存
缓存映射策略
直接映射(Direct mapped)
全相联映射(Full associative)
组相联映射(Set associative)
有效访问时间和命中率
E
A
T
=
H
×
A
c
c
e
s
s
C
+
(
1
−
H
)
×
A
c
c
e
s
s
M
M
EAT=H×Access_C+(1-H)×Access_{MM}
EAT=H×AccessC+(1−H)×AccessMM
其中,H为缓存命中率,
A
c
c
e
s
s
C
Access_C
AccessC为缓存访问时间,
A
c
c
e
s
s
M
M
Access_{MM}
AccessMM为主存访问时间。
缓存写策略
写直通(Write through)—— 同时更新缓存和贮存
写回(Write back)—— 仅当某个缓存块被替换出去时才更新其对应的主存块
虚拟存储器
转换后援缓冲器(TLB,Translation look-aside buffer)
基本概念
1.SRAM(静态随机存储器)和DRAM(动态随机存储器)哪一个速度更快?
SRAM
2.直接映射的高速缓存中地址的三个域分别是什么?如何使用这些域来访问存放在高速缓存中的一个数据字
标记域,块域,字域;
字域用来唯一的识别和确定来自某个指定的数据块中的一个数据字,块域选择一个唯一的高速缓存块;在复制主存储器中的数据块到高速缓存时,标记会随着数据块一起被存储在高速缓存中,并且通过标记可以唯一识别和确定该数据块。
3.组关联高速缓存的地址分为哪三个域?如何使用这三个域来访问高速缓存中的某个存储单元
标记域,组域,字域;
字域用来唯一的识别和确定来自某个指定的数据块中的一个数据字,组域选择一个唯一的高组;在复制主存储器中的数据块到高速缓存时,标记会随着数据块一起被存储在高速缓存中,并且通过标记可以唯一识别和确定该数据块。
4.严格来说,什么是有效存取时间(EAT)?
是使用命中率与相连存储层次的相对访问时间 产生的加权平均
是高速缓存访问时间和主存储器的访问时间。
5.说明如何导出有效存取时间的公式?
E
A
T
=
H
×
A
c
c
e
s
s
C
+
(
1
−
H
)
×
A
c
c
e
s
s
M
M
EAT=H×Access_C+(1-H)×Access_{MM}
EAT=H×AccessC+(1−H)×AccessMM
其中,H为缓存命中率,
A
c
c
e
s
s
C
Access_C
AccessC为缓存访问时间,
A
c
c
e
s
s
M
M
Access_{MM}
AccessMM为主存访问时间。
6.什么是脏块?
已经被修改过的数据块。
第 7 章 输入/输出和存储系统
Amdahl’s Law
阿姆达尔定律指出了计算机系统整体性能提升(称为加速比)取决于某个特定部件的加速比和该部件在系统中的使用率。
S = 1 ( 1 − f ) + f / k S=\frac{1}{(1-f)+f/k} S=(1−f)+f/k1
S 代表系统整体性能的加速比;f 表示由较快部件完成的部分;k 是新部件的加速比。
I/O 控制方法
Programmed I/O
Systems using programmed I/O devote at least one register for the exclusive use of each I/O device. The CPU continually monitors each register, waiting for data to arrive. This is called polling. (轮询)
CPU 不断地监视(轮询)与每个 I/O 端口相关联的控制寄存器。当一个字节到达端口时,控制寄存器中的一位也被置位。CPU 最终轮询端口,并注意到“数据就绪”控制位被置为 1。CPU 置位控制位,检索字节,并根据为该特定端口编写的指令进行处理。处理完成后,CPU 将像以前一样继续轮询控制寄存器。
适合用于专用系统。
Interrupt-Driven I/O
Q: How programmed I/O is different from interrupe-driven I/O?
A: CPU 利用率更高,不需要 CPU 反复检测设备状态,I/O 模块就绪后发出中断而非修改控制位。
适合用于个人系统。
DMA
Q: How does direct memory access (DMA) work?
A: 一旦在存储器中装入了所需数值,CPU 将向 DMA 子系统发出信号并继续执行下一个任务,而 DMA 负责处理 I/O 的细节。在 I/O 完成(或错误结束)之后,DMA 子系统通过发送另一个中断来通知 CPU。
Protocol协议: The exact form and meaning of the signals exchanged between a sender and a receiver is called a protocal.
适合用于中小型系统。
Channel I/O
一个或多个 I/O 处理器可以控制多个不同的 I/O 路径,这些路径称为通道路径。对于慢速设备来说看,通道路径可以组合在一起(复用),允许仅通过一个控制器来管理几个这类设备。
适合用于高吞吐量的事务处理环境。
磁盘技术
寻道时间:指磁盘驱动臂定位到磁道上所需要的时间。
旋转延迟:读/写头定位到指定扇区上方所需要的时间。
存取时间:寻道时间 + 旋转延迟。
RAID
RAID-0
将数据块以条带形式存放在几个磁盘表面上,这样一个记录就会占用几个磁盘表面的多个扇区。
RAID-0 不提供冗余,具有最佳性能,但是可靠性极低。
RAID-1
在每次写入数据时,RAID-1 都会将数据复制到各为镜像盘的第二组磁盘驱动器上。
最佳失效保护的一种方案。
RAID-2
在每个条带中只写入一位数据,而不是在任意大小的块中写入数据。
纠错位是采用汉明编码生成的。
RAID-3
按照每次一位的方式将数据交错分配到各个数据驱动器条带中的。
使用奇偶校验(异或)。
RAID-4
将数据写入到统一大小的条带中。
是带有奇偶校验位的 RAID-0.
RAID-5
RAID-5 是 RAID-4ss 将奇偶校验模型中提供了最佳的读操作吞吐量,并且在写操作时也具有令人满意的吞吐量。
以最小的成本提供最佳的保护。
成功应用于商业。
RAID-6
对每排驱动器使用了两组纠错条带。
基本概念
1.用文字表述Amdahl定律
计算机系统整体性能的速度提升取决于某个特定部件本身的加速率和该部件在系统中的使用率。
2.什么是加速率
S
=
1
(
1
−
f
)
+
f
/
k
S=\frac{1}{(1-f)+f/k}
S=(1−f)+f/k1
S 代表系统整体性能的加速比;f 表示由较快部件完成的部分;k 是新部件的加速比。
3.解释程序控制的I/O与中断控制的I/O之间有什么不同
程序控制的I/O:计算机系统需要为每个I/O设备至少准备一个专用的寄存器,CPU会不断地监视每个寄存器,等待数据的到达;
中断控制的I/O:CPU不再需要持续的查询其附属设备是否有任何输入请求,而是在有数据发送需求时由外部设备来通知CPU.
4.直接存储访问(DMA)的工作原理
一旦在存储器中装入了所要求的数值后,CPU就会发送信号到DMA子系统,由DMA来负责I/O的细节过程,而CPU会继续执行其下一个任务,在完成I/O处理后,DMA子系统会发送另一次中断请求通知CPU
5.通道控制的I/O与中断控制的I/O有什么不同?
中断控制的I/O:通过传输字或者小数据块,这要取决与传输的设备。
而通道控制I/O,一个I/O处理器可以控制几条I/O通道;对于小规模数据的输入I/O如键盘等,可以将它们合并起来一起使用,称为多道复用通道,而对于大量数据的传输处理器。则使用选择通道。
6.通道控制的I/O与DMA有何相似之处?
必须从CPU中窃取存储器周期。
7.什么是寻道时间?
磁头定位到指定磁道所需的时间
8.旋转延迟和寻道时间的总和叫做什么?
存取时间
9.哪一种RAID技术能够提供最好的性能?
RAID-0
10.哪一种RAID技术最经济,而又可以提供足够的冗余量?
RAID-5
11.哪一种RAID技术使用镜像磁盘组?
RAID-1
第 9 章 可供选择的体系结构
RISC:精简指令集计算机
复杂指令集的设计目的主要是为了解决当时存储器成本过高的问题。
CISC:设备依靠微代码来执行指令。
大多数的 RISC 指令可以在一个时钟周期内完成。为了实现加速,微程序控制器由硬连线逻辑所取代,硬连线将以更快的速度执行指令。
RISC 设备的时钟周期通常比 CISC 设备短,因此即使 RISC 设备有更多的指令,其执行时间仍然小于 CISC 设备。
Flynn 分类法考虑两方面因素:进入处理器的指令数和数据流数。
SISD(单指令流单数据流)
SIMD(单指令流多数据流)
MISD(多指令流单数据流)
MIMD(多指令流多数据流)
并行和多处理器体系结构
超长指令字处理器采用多个独立的功能部件,但它并不是将多条指令流出到各个功能单元,而是将多条指令的操作打包,形成一条非常长的指令,超长指令字由此得名。
其他的并行处理方法
数据流计算(dataflow computing)
神经网络(neural network)
脉动阵列(systolic array)
基本概念
1.解释程序或系统属于存储器约束的含义,本章还讨论了其他什么类型的约束?
程序运行的速率,系统执行的效率,都受到了存储器的制约,既是它们最常使用的部件。只有在提高了存储器的读取速度,代码的管理效率,才能使其得到改善。
CPU制约,存储器制约,I/O制约