版权声明:本文为优快云博主「油条生煎」的原创文章,遵循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):存放一个基地址,而地址码字段表示相对于此基地址的偏移量。
堆栈寻址:操作数应假设存放在堆栈中。
间接变址寻址:同时使用间接寻址和变址寻址。
基址/偏移寻