目录
1.相关知识
(1)计算机系统的层次模型
a)应用开发:
应用软件 |
用户接口 |
系统软件:操作系统、编译器、数据库管理系统、Web浏览器、设备驱动、中断服务程序 |
系统调用接口 |
硬件系统:异常机构处理、指令系统、CPU、存储器、I/O及通信子系统 |
b)软硬件实现:
系统分析层(数学模型、算法) |
用户程序层(语法编程) |
语言处理层(解释、编译) |
操作系统层 |
指令系统层(机器语言指令) |
微体系结构层(微程序)(硬核级) |
数字逻辑层(硬连逻辑)(硬核级) |
c) 语言功能:
应用语言虚拟机 |
高级语言虚拟机 |
汇编语言虚拟机 |
操作系统虚拟机 |
机器语言级 |
微程序级 |
寄存器级(硬件) |
逐级生成过程:CPU硬核拟定指令系统,配置操作系统,配置所需的语言处理程序和其他软件资源,并使用操作系统管理调度,编制并输入用户程序,处理执行;求解问题的过程:用户根据任务需求构建数学模型,设计算法;用户选用合适的计算机语言,根据算法编写源程序;在操作系统控制下,调用语言处理程序将源程序翻译为机器语言描述的目标;
(2)计算机系统
计算机体系结构指程序员关心的计算机概念结构与功能特性;计算机组成是指物理机器中各操作单元的逻辑设计、硬件实现及互连组织技术;更底层的集成电路设计技术、封装技术、电源技术、冷却措施及微组装技术称为计算机实现。
冯.诺伊曼机由运算器、控制器、存储器、输入设备和输出设备五大部件组成,其主要有3个特征:(1)计算机以存储器为中心,由5大部分组成,运算器用于数据处理,存储器用于存放各种信息,控制器对程序代码进行解释并产生各种控制信号协同各部件工作,输入设备和输出设备主要用于人机交互;(2)计算机内部的控制信息和数据信息均采用二进制,存放在同一个存储器(3)计算机按照存储原理程序原理工作,其基本点是指令驱动,编制好的程序预先经输入设备并保存在存储器中;计算机开始工作以后,在不需要人工干预的情况下由控制器自动、高速地依次从存储器中取出指令并加以执行;
即其模型由CPU子系统(控制器与运算器)、存储器子系统和输入/输出子系统通过总线互连而成。总线是连接上述各部件的公共通道,用于实现各部件之间的数据、信息等的传输和交换,总线分为数据总线、地址总线、控制总线,地址是单向的,由主设备发出,用于选择某个读写对象,数据总线用于数据交互,是双向的,控制总线用于实现对设备的监视和控制。存储器子系统用来存放当前的运行程序和数据,字节单元的唯一编号叫存储单元地址,其中保存的字节信息称为存储单元内容,输入/输出子系统用于完成计算机与外部的信息交换。
运算器完成各种数据的运算和处理,一般由算术逻辑单元(ALU)、累加器(ACC)、标志寄存器(FR)和暂存器组成。算术逻辑单元是核心,以全加器为基础,辅之以移位寄存器及相应控制逻辑电路,累加器是寄存器阵列中的一个通用寄存器,提供送入ALU的两个运算操作数之一,且运算结果又总是送回ACC,累加锁存器作用是防止ALU通过ACC反馈到ALU输入端。暂存器与ACC相似,用来保存操作数,暂存器不可访问,对程序员透明,标志寄存器是一个按位操作访问的寄存器,用于ALU运算结果的某些重要状态或特征,每种状态或特征可以用一个二进制位标识。
控制器是整个微处理器的控制中心,由指令寄存器(IR)、指令译码器(ID)和操作控制器(OC)组成,根据程序计数器(PC)指定的地址,CPU首先把指令操作码从存储器中取出来,并由数据总线输入到指令寄存器(IR)中,然后由指令译码器(ID)分析应该进行什么操作,并通过操作控制器(OC)确定的时序,向相应的部件发出控制信号,控制器中主要包括脉冲发生器、控制矩阵、复位电路和启停电路等控制逻辑。
寄存器阵列是CPU内部的临时存储单元,用来暂时存放数据和地址。寄存器的访问效率比存储器高,在需要重复使用某些操作数或中间结果时,就可将他们放在寄存器中,避免存储器的频繁访问,从而缩短指令长度和指令执行时间,加快CPU的运算处理速度,同时也给编程带来方便。但因受芯片面积和集成度所限,一般CPU内部寄存器的数目不会很多。寄存器阵列可分为专用寄存器和通用寄存器,专用寄存器的作用是固定的,例如堆栈指针(SP)、程序计数器(PC)、标志寄存器(FR)即为专用寄存器。PC用于存放下一条要执行指令的情况下,每取出指令的1字节,PC的内容自动加1,于是当从存储器取完一条指令的所有字节时,PC中存放的是下一条指令的首地址。若要改变程序的正常执行顺序,就必须把新的目标地址装入PC,称程序发生了转移。指令系统中有一些指令用来控制程序的转移,称为转移指令。堆栈是一组寄存器或存储器中开辟的一个特定区域。数据存入堆栈称为压入操作,从堆栈取出数据称为弹出(POP)操作,是按“先进后出”(FIFO)或“后进先出”(LIFO)的方式进行的。数据无论是压入堆栈还是从堆栈弹出,总是在栈顶进行。堆栈指针(SP)就是用来指示栈顶地址的寄存器。
地址和数据缓冲器都用来作为总线缓冲器,是微处理器地址和数据信号的出入口,用来隔离微处理器的内部和外部总线,并提供附加的驱动能力。从存储器取数据、对数据进行逻辑运算等。CPU可以处理的全部指令集合称为指令集,如果所用指令编写的程序是微机能直接理解和执行的二进制代码形式,那么所用指令系统称为机器语言,相应的程序称为机器语言程序。人们用几个字母构成的符号来代替机器语言指令,称为汇编语言,用汇编语言编写的程序则称为汇编语言源程序。将源代码翻译成机器语言来表示的目标程序,这个过程称为汇编。
指令类型 | 操作码示例 | 操作数示例 | 说明 | ||
算术类 | 加法 | ADD | Rs1,Rs2,Rd | (Rs1)+(Rs2)→Rd | 运算类指令只能对寄存器中的数据或立即数进行直接操作 |
减法 | SUB | Rs1,Rs2,Rd | (Rs1)-(Rs2)→Rd | ||
逻辑类 | 位与 | AND | Rs1,Rs2,Rd | (Rs1)∩(Rs2)→Rd | |
位或 | OR | Rs1,Rs2,Rd | (Rs1)∪(Rs2)→Rd | ||
位非 | NOT | Rs,Rd | !(Rs)→Rd | ||
传送类 | 存储器或I/O读 | LDR | [MEM],Rd | [MEM]→(Rd) | 将指定地址的存储单元或I/O端口的值读入寄存器Rd |
存储器或I/O写 | STR | Rs,[MEM] | (Rs)→[MEM] | 将寄存器Rs的值写入指定地址的存储单元或I/O端口 | |
寄存器访问 | MOV | Rs,Rd | (Rs)→(Rd) | ||
跳转类 | 无条件跳转 | JMP | Lable | Label→(PC) | |
条件跳转 | JX/JNX | Lable | IF x为真/假,则Label→(PC) | ||
过程调用 | CALL | Sub-Lable | Sub-Label→(pc) | 调用子程序 | |
过程返回 | RET | - | 返回主程序 | ||
其他 | 停机 | HLT | - |
每条指令执行的基本过程都可以分为取指令(fetch)、分析指令(decode)和执行指令(execute)三个阶段,上述程序段基本为顺序执行的过程,其中溢出转移将可能导致转移的发生,即程序计数器(PC)会被重新设置。系统对冯.诺伊曼结构的改进主要体现在以下几方面:①指令集的更新和优化②利用局部性原理将存储器划分为多个层次,以达到速度、容量和价格的平衡③高速总线成为系统核心。串行性是冯.诺伊曼型计算机的本质特点,即以计算机以存储程序原理为基础,将程序和数据混合放在单一存储器中,并使用单一处理部件按“取址——分析——执行”的步骤顺序执行指令,结构性瓶颈的主要原因是指令执行的串行性和存储器读取的串行性。其发展方向一是改变冯.诺伊曼的串行执行模式,发展并行技术;二是改变冯.诺伊曼的控制驱动方式,发展数据驱动、需求驱动、模式驱动等其他驱动模式。
(3)CPU指令集
其功能设计实际上就是确定软硬件的功能分配,这里主要考虑因素有3个:速度、成本和灵活性,一般来说,用硬件实现的特点是速度快、成本高、灵活性差,而用软件实现则相反。指令集的不同反应设计原理、制造技术和系统类别的差别。有精简指令集计算机(RISC)和复杂指令集计算机(CISC)。
最初计算机系统指令系统比较简单,随着半导体技术和微电子技术的发展,硬件成本降低,越来越多的高级复杂指令被添加到指令系统中,但由于当时的存储器速度慢、容量小,为减少对存储器的存取操作,减小软件开发难度,设计人员将复杂指令功能通过微程序实现,将微程序固化或硬化后交由硬件实现,这就是CISC系统的设计思路。
实际上,一般来说利用包括对简单数据进行传输和运算及转移控制操作在内的十余指令就可以实现现代计算机执行的所有操作,更复杂的功能可以由这些简单指令组合完成。因此随着存储器价格下降和CPU制造技术的提高,RISC结构开始被广泛采用。RISC的出现简化了指令系统,克服了CISC的缺点,使得更多的芯片硅面积可以用于实现流水和高速缓存,有校地提高了计算机的性能。RSIC的性能就能更依赖于编译程序的有效性。设计应当遵守以下原则:①指令条数少,格式简单,易于译码;②提供足够的寄存器,只允许Load和Store指令访问内存;指令由硬件直接执行,在单个周期内完成;③指令由硬件直接执行,在单个周期内完成;④充分利用流水线⑤强调优化编码器的作用;
(4)存储器分层子系统
从整体上看,cache——主存层次的存取速度接近于cache的存取速度,容量和每位存储的平均价格却接近主存的存取速度,容量和每位存储的平均价格却接近辅存,解决了大容量和低成本的矛盾。上层的存储器离CPU越近,存取速度越快,但价格也越较高,因此容量也越小。越上层的存储器离CPU越近,存取速度越快,但价格也越高,因此容量越小。
哈佛结构计算机将程序存储器与数据存储器分开,改善了冯.诺伊曼计算机存储器串行读写效率低下的瓶颈,CPU拥有两套独立的地址和数据总线。
(5)总线与输入/输出子系统
计算机系统中连接各子系统的通路集合称为互连结构。总线是迄今为止使用最普遍的互连结构。总线是一组传送信息的公共通路,总线上设备可分为主设备和从设备两大类。总线主设备指能够启动总线活动的设备(如CPU),而那些只能等待启动命令的被动型设备称为总线从设备。简总线结构的不足表现在两个方面:①CPU是总线唯一的主设备(2)总线结构与处理器紧密相关,通用性差。由总线控制器来协调主设备对总线的请求,其中数据传送总线包括地址、数据及相应的控制线;仲裁总线包括总线请求线和总线授权线;中断和同步总线用于处理带优先级的中断操作,包括中断请求线和中断认可线;公用线包括时钟、电源/地、系统复位线等。
(6)并行技术
并行性指计算机系统在同一时刻或同一时间间隔内进行多种运算或操作。它包括同时性和并发性。同时性指两个或两个以上事件在同一时刻发生,并发性指两个或两个以上事件在同一时间间隔内发生,并行处理技术就是描述多个处理器级并行技术(SLP)、线程级并行技术(TLP)、指令级并行技术(ISP)、电路级并行技术(CLP),其基本思想包括时间重叠、资源重复和资源共享。指令级并行主要目标是使计算机在单位时间内处理更多指令,电路级并行是为了使多个CPU一起工作,解决同一个问题。流水线是指令级并行技术的典型应用。下图表示了顺序执行和流水线执行的方法:
流水线只有在不出现断流或阻塞的条件下才能获得较高的效率。常见冒险包括数据冒险(写后读、写后写、读后写)、结构冒险(硬件资源不够)和控制冒险(分支等跳转指令引起)。超标量机通过重复设置多分流水线硬件并行来提高性能。超长指令字机依靠编译器在编译时找出指令之间潜在的并学习,并通过指令调度把可能出现的数据冲突减少到最小,最后把能并行执行的多条指令组装成一条很长的指令,然后由处理机中多个相互独立的执行部件分别执行长指令中的一个操作,即相当于同时执行多条指令。
数据冒险可以采用定向或调度技术,定向技术指将结果数据从其产生的地方直接传送到所有需要它的功能部件,调度技术则可以利用编译器或硬件来重新组装指令顺序以减少流水线停顿。两者合称为乱序技术。
(7)多机与多核结构
多机系统是指由两台以上的计算机经网络互连、并能够在操作系统的控制下合作解决一个共同问题的计算机系统,按照多机系统的模式将多个处理器集成到单个芯片中的想法已经成为现实,这种多核芯片称为单片多处理器(CMP),片内的多个处理器能并行执行不同的进程,从而大幅度提高CPU性能。细粒度多线程在每个指令中切换线程,结果是多个线程交叉处理,处理器必须能在每个时钟周期切换线程。粗粒度多线程是为了替代细粒度多线程而发明的,当到开销大的阻塞时才切换线程,主要缺陷在于克服吞吐量损失能力的局限,特别是对于短的阻塞。
单指令单数据流(SISD)代表了冯.诺伊曼计算机,即大多数的单处理机,都是由单一指令流控制的;单指令多数据流(SIMD)结构具有单一的控制部件和多个处理部分,代表机型为阵列处理机,多用于处理物理学和工程学中涉及阵列或其他高度规则数据结构问题。多指令单数据流(MISD)并无实际机型,多指令多数据流(MIMD)的每一对CU和PU组合可以看成一个独立的CPU核。
集中式共享存储器属于紧耦合多处理机,而分布式存储器结构多处理属于松耦合多处理机。
(8)字长
字长是一个基本的微处理器设计决策,它指CPU能够一次处理的最大数据宽度,在相同的运算速度下,字长直接影响计算精度,而在执行相同量的工作时,字长较大的CPU速度较快。
(9)存储容量
访问空间是指CPU能直接访问的存储单一数量及容量,一般由CPU的地址总线宽度确定,即2^地址总线宽度。
(10)运算速度
时钟频率是CPU性能的重要衡量标准,单机用户关心的整体性能,即单个程序的执行时间;而数据处理中心的管理员则更关心单位时间里完成的任务数,采用的一致和可靠评价方法是使用基准测试程序的执行时间来衡量。用f表示时钟频率,IC表示指令数目,用CPI表示每种指令的平均执行周期数,用MIPS表示每秒百万条指令,用T表示执行时间,则有下面公式:
2.重要课后题及答案
(1)完成下列逻辑运算
101+1.01 = 110.01;1010.001-10.1 = 111.101;-1011.0110 1-1.1001 = -1100.1111;10.1101-1.1001 = 1.01;110011/11 = 10001;(-101.01)/(-0.1) = 1010.1
(2)完成下列逻辑运算
1011 0101 ∨1111 0000 = 1111 0101;1101 0001 ∧1010 1011 = 1000 0001;1010 1011 ⊕0001 1100 = 1011 0111
(3)选择题
<1>下列无符号数中最小的数是 ( A ) 。 A.(01A5) H B.(1,1011,0101) B C.(2590) D D.(3764)O
<2>下列无符号数中最大的数是 ( B ) 。A.(10010101)B B.(227) O C.(96)H D. (143)D
<3>在机器数 ( A ) 中,零的表示形式是唯一的。 A.补码 B.原码 C.补码和反码 D.原码和反码
<4>单纯从理论出发,计算机的所有功能都可以交给硬件实现。而事实上,硬件只 实现比较简单的功能,复杂的功能则交给软件完成。这样做的理由是 ( BCD ) 。 A.提高解题速度 B.降低成本 C.增强计算机的适应性,扩大应用面 D.易于制造
<5> 编译程序和解释程序相比,编译程序的优点是 ( D ),解释程序的优点是 ( C ) 。 A.编译过程 ( 解释并执行过程 ) 花费时间短 B.占用内存少 C.比较容易发现和排除源程序错误 D.编译结果 ( 目标程序 ) 执行速度快
(4)通常使用逻辑运算代替数值运算是非常方便 的。例如,逻辑运算 AND将两个位组合的方法同 乘法运算一样。 哪一种逻辑运算和两个位的加法 几乎相同?这样情况下会导致什么错误发生?
答:逻辑运算OR和两个位的加法几乎相同。 问题在于多个 bit 的乘或加运算无法用 AND或OR运算替代, 因为逻辑运算没有相应的进位机制。
(5)假设一台数码相机的存储容量是 256MB,如果每个像素需要 3 个字节的存储空间, 而且一张照片包括每行 1024 个像素和每列 1024 个像素, 那么这台数码相机可以存放多少张照片?
答:每张照片所需空间为:1024*1024*3=3MB 则 256M可存照片数为: 256MB/3MB≈85张
(6)某测试程序在一个 40 MHz处理器上运行, 其目标代码有 100 000 条指令,由如下各类指令 及其时钟周期计数混合组成, 试确定这个程序的 有效 CPI、MIPS的值和执行时间。
指令类型 | 指令计数 | 时钟周期计数 |
整数算术 | 45 000 | 1 |
数据传送 | 32 000 | 2 |
浮点数 | 15 000 | 2 |
控制传送 | 8000 | 2 |
CPI=(45000/100000)*1+(32000/100000)*2+(1 5000/100000)*2+(8000/100000)*2=0.45*1+0. 32*2+0.15*2+0.08*2=1.55
MIPS=40/1.55=25.8
执行时间 T=(100000*1.55)*(1/(40*10 ∧ 6) )=15.5/4*10 ∧(-3 )= 3.875*10 ∧(-3 ) s= 3.875ms
(7)假设一条指令的执行过程分为“取指令” 、 “分析”和“执行”三段,每一段的时间分别为 t,2t 和 3t 。在下列各种情况下, 分别写出连 续执行 n 条指令所需要的时间表达式。
<1> 顺序执行方式:T= ( t+2t+3t)*n=6nt
<2> 仅“取指令”和“执行”重叠:T=6t+5*t*(n-1)=(5n+1)t
<3>“取指令”、“分析”和“执行”重叠T=tn-1+3t=(3+3n) t