计算机硬件与系统软件精简版.docx
《计算机硬件与系统软件精简版.docx》由会员分享,可在线阅读,更多相关《计算机硬件与系统软件精简版.docx(50页珍藏版)》请在冰豆网上搜索。
计算机硬件与系统软件精简版
第二章计算机的组成与分类
1、计算机硬件系统组成:
(运算器、控制器、高速缓存、主存储器、外存设备、输入设备、输出设备,这些设备和部件通过总线和接口连结在一起,构成一台完整的计算机)
(1)运算器:
是计算机中进行数据加工的部件。
功能有:
执行算术运算、逻辑运算,由ALU线路完成;暂时存放参加运算的数据和中间结果,由寄存器来承担;运算器通常也是数据传输的通路。
(2)控制器:
计算机中控制执行指令的部件。
正确执行每条指令(取来一条指令;接着分析这条指令;再按指令格式和功能执行这条指令);保证指令按规定序列自动连续地执行;对各种异常情况和请求及时响应和处理。
说到底,控制器要向计算机各功能部件提供每一时刻协同运行所需要的控制信号。
(3)存储器系统:
由高速缓冲存储器,主存储器,外存储器所组成的多级(层)存储器系统,是计算机中用于存储程序和数据的系统。
(4)输入设备:
输入设备是向计算机中送入程序和数据的有一定独立功能的设备,通过接口和总线与计算机主机连通,用于人—机交互联系。
(5)输出设备:
计算机中用于送出计算机内部信息的设备。
2、Vonneumann计算机的体系结构的主要特点:
数据表示及运算采用二进制,指令及其他非数值信息也以二进制表示;存储程序控制,将程序和数据事先存入;计算机的硬件由运算器、控制器、存储器、输入设备和输出设备五大部件组成;存储程序、顺序执行的单指令流是该体系结构的核心。
3、非Vonneumann结构:
是一个知识系统,包括知识库、推理机、智能接口和数据流机器,采用分布式系统结构。
4、计算机系统的层次结构:
多级组成的计算机系统——软硬件的整体。
(1)硬件:
构成计算机的设备实体。
(2)软件:
包括各类程序和文件(除去硬件之外)。
指令系统是硬件和软件的结合点。
5、计算机解题的一般过程:
用户编写高级语言程序(源程序)→输入PC→由计算机翻译成机器语言(目标程序)→在PC上运行,得结果。
第三章存储系统
1、cache的功能,cache是介于CPU和主存之间的小容量存储器,存取速度比主存快。
它能高速地向CPU提供指令和数据,加快程序的执行速度。
它是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。
2、cache的基本原理:
CPU与cache之间的数据交换是以字为单位,而cache与主存之间的数据交换是以块为单位。
一个块由若干定长字组成的。
当CPU读取主存中一个字时,便发出此字的内存地址到cache和主存。
此时cache控制逻辑依据地址判断此字当前是否在cache中:
若是,此字立即传送给CPU;若非,则用主存读周期把此字从主存读出送到CPU,与此同时,把含有这个字的整个数据块从主存读出送到cache中。
由始终管理cache使用情况的硬件逻辑电路来实现LRU替换算法。
3、cache的命中率:
在一个程序执行期间,设Nc表示cache完成存取的总次数,Nm表示主存完成存取的总次数,h定义为命中率,则有:
h=Nc/(Nc+Nm)
若tc表示命中时的cache访问时间,tm表示未命中时的主存访问时间,1-h表示未命中率,则cache/主存系统的平均访问时间ta为:
ta=htc+(1-h)tm
设r=tm/tc表示主存慢于cache的倍率,e表示访问效率,则有:
e=tc/ta=tc/(htc+(1-h)tm)=1/[r+(1-r)h]=1/[h+(1-h)r]
为提高访问效率,命中率h越接近1越好,r值以5—10为宜,不宜太大。
命中率h与程序的行为、cache的容量、组织方式、块的大小有关。
【例5】CPU执行一段程序时,cache完成存取的次数为1900次,主存完成存取的次5数为100次,已知cache存取周期为50ns,主存存取周期为250ns,求cache/主存系统的效率和平均访问时间。
【解】h=Nc/(Nc+Nm)=1900/(1900+100)=0.95;r=tm/tc=250ns/50ns=5;e=1/(r+(1-r)h)=1/(5+(1-5)×0.95)=83.3%;ta=tc/e=50ns/0.833=60ns
4、主存与cache的地址映射:
cache的容量很小,它保存的内容只是主存内容的一个子集,且cache与主存的数据交换是以块为单位。
地址映射即是应用某种方法把主存地址定位到cache中。
地址映射方式有全相联方式、直接映射方式和组相联映射方式三种。
(1)全相联方式:
主存中一个块的地址与块的内容一起存于cache的行中,其中块地址存于cache行的标记部分中。
这种方法可使主存的一个块直接拷贝到cache中的任意一行上,非常灵活。
它的主要缺点是比较器电路难于设计和实现,因此只适合于小容量cache采用。
(2)直接映射方式:
这也是一种多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。
cache的行号i和主存的块号j有如下函数关系:
i=jmodm(m为cache中的总行数)直接映射方式的优点是硬件简单,成本低。
缺点是每个主存块只有一个固定的行位置可存放,容易产生冲突。
因此适合大容量cache采用。
不够灵活,即使Cache存储器别的许多地址空着也不能占用。
这使得cache存储空间得不到充分利用,并降低了命中率。
(3)组相联映射方式:
这种方式是前两种方式的折衷方案。
它将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪一行是灵活的,即有如下函数关系:
m=u×v组号 q=jmodu
组相联映射方式中的每组行数v一般取值较小,这种规模的v路比较器容易设计和实现。
而块在组中的排放又有一定的灵活性,冲突减少。
组相联映像方式的性能与复杂性介于直接映像与全相联映像两种方式之间。
Cache的命中率除了与地址映像的方式有关外,还与cache的容量有关。
cache容量大,则命中率就高,但达到一定容量后,命中率的提高就不明显了。
5、替换策略:
cache工作原理要求它尽量保存最新数据,必然要产生替换。
对直接映射的cache来说,只要把此特定位置上的原主存块换出cache即可。
对全相联和组相联cache来说,就要从允许存放新主存块的若干特定行中选取一行换出。
6、常用替换算法:
(1)最不经常使用法:
LFU算法将一段时间内被访问次数最少的那行数据换出。
每行设置一个计数器。
从0开始计数,每访问一次,被访行的计数器增1。
当需要替换时,将计数值最小的行换出,同时将这些行的计数器都清零。
这种算法将计数周期限定在对这些特定行两次替换之间的间隔时间内,不能严格反映近期访问情况。
(2)近期最少使用法:
LRU算法将近期内长久未被访问过的行换出。
每行也设置一个计数器,cache每命中一次,命中行计数器清零,其它各行计数器增1。
当需要替换时,将计数值最大的行换出。
这种算法保护了刚拷贝到cache中的新数据行,有较高的命中率。
对两路组相联的cache,算法可以简化,二选一不需要计数器。
(3)随机替换:
随机替换策略从特定的行位置中随机地选取一行换出。
在硬件上容易实现,且速度也比前两种策略快。
缺点是降低了命中率和cache工作效率。
cache的写操作策略:
CPU对cache的写入更改了cache的内容。
可选用写操作策略使cache内容和主存内容保持一致。
常用的写操作策略:
写回法、全写法、写一次法。
(4)写回法:
当CPU写cache命中时,只修改cache的内容,而不立即写入主存;只有当此行被换出时才写回主存。
这种方法减少了访问主存的次数,但是存在不一致性的隐患。
实现这种方法时,每个cache行必须配置一个修改位,以反映此行是否被CPU修改过。
(5)全写法:
当写cache命中时,cache与主存同时发生写修改,因而较好地维护了cache与主存的内容的一致性。
当写cache未命中时,直接向主存进行写入。
cache中每行无需设置一个修改位以及相应的判断逻辑。
缺点是CPU向主存的写操作无高速缓冲功能,降低了cache的功效。
(6)写一次法:
基于写回法并结合全写法的写策略,写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存。
这便于维护系统全部cache的一致性。
第四章指令系统
1、指令:
要计算机执行某种操作的命令。
从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令。
微指令是微程序级的命令,它属于硬件;
宏指令是由若干条机器指令组成的软件指令,它属于软件;
机器指令则介于微指令与宏指令之间。
2、指令系统:
一台计算机能直接理解与执行的全部指令的集合称为该机的指令系统,也叫机器语言。
指令系统是进行计算机逻辑设计和编制程序的基本依据。
它直接说明了这台计算机的功能.不同类型CPU的指令系统是不能混用与兼容的,但同一系列的CPU一般升级后指令都有扩充,并可兼容。
3、复杂指令系统计算机(CISC)精简指令系统计算机(RISC)
4、指令系统性能的要求
(1)完备性:
指令系统丰富,功能齐全,使用方便
(2)有效性:
高效率运行。
程序占据存储空间小、执行速度快。
(3)规整性:
对称性、匀齐性、指令格式与数据格式一致性
对称性指在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式;
匀齐性是指一种操作性质的指令可以支持各种数据类型;
指令格式和数据格式的一致性是指指令长度和数据长度有一定的关系,以方便处理和存取。
(4)兼容性:
系列机各机种之间具有相同的基本结构和共同的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用。
但由于不同机种推出的时间不同,在结构和性能上有差异,做到所有软件都完全兼容是不可能的,只能做到“向上兼容”,即低档机上运行的软件可以在高档机上运行。
5、指令的结构
指令字:
代表指令的一组二进制代码信息;
指令长度:
指令字中二进制代码的位数;
6、典型的指令格式
操作码OP——指明操作性质的命令码,提供指令的操作控制信息。
操作对象A——说明操作数存放的地址,有时则就是操作数本身。
7、指令格式的五种类型(根据操作对象地址长度划分)
(1)零地址指令
例如:
NOP、HLT,也叫无操作数指令
(2)一地址指令
例如:
递增,移位,取反,INCAX,NOTBX
(3)二地址指令
例:
[A1]+[A2]→[A1],[A2]为源地址,[A1]目的地址
(4)三地址指令
例:
[A1]+[A2]→[A3],其中[A1]、[A2]为源地址,[A3]为目的地址,操作后源地址内容不变仅被拷贝。
(5)多地址指令:
用于实现成批数据处理。
8、指令操作码的编码格式
指令操作码的位数限制指令系统中完成操作的指令条数
(1)固定格式操作码
操作码长度固定,一般集中于指令字的一个字段中。
在字长较大的大中型以及超级小型机上广泛使用。
优点:
有利于简化硬件设计,减少译码时间。
(2)可变格式操作码
通常在指令字中用一个固定长度的字段来表示基本的操作码,而对于一部分少地址指令则把它们的操作码扩充到该指令的地址字段,即操作码长度可以改变。
这种方法在不增加指令字长度的情况下可表示更多的指令,但增加了译码和分析难度,需更多硬件支持。
微机中常使用此方式。
9、可变格式操作码的指令
例一:
假设某机器的指令长度为16位,包括4位基本操作码和三个4位地址码段。
15…1211……87……43…..0
4位基本操作码可表示16个状态,因此如用
4位操作码则能表示16条三地址指令,而用8位操作码则可表示256条二地址指令。
而用12位操作码则可表示4096条一地址指令。
例二:
同样情况下,如果需要三地址、二地址、一地址指令各15条、零地址指令16条,则一样能够采用可变格式操作码实现。
例如可以这样规定:
15条三地址指令的操作码为:
0000~1110
15条二地址指令的操作码为:
前4位1111,
即11110000~11111110
15条一地址指令的操作码为:
前8位均为1,
即111111110000~111111111110
16条零地址指令的操作码为:
前12位均为1,
即111111*********0~111111*********1
例三:
同样情况下用可变格式操作码分别形成三地址指令、二地址指令、一地址指令和零地址指令15、14、31、16条。
按要求得到结果之一如下
15条三地址为:
0000~1110
14条二地址为:
11110000~11111101
31条一地址为:
111111100000~111111111110
16条零地址为:
1111111111110000~1111111111111111
10、机器字长是指计算机能直接处理的二进制数据的位数,决定了计算机的运算速度,是计算机的一个重要技术指标。
字长决定了计算机的运算精度,字长越长计算机的运算精度越高,因此高性能的计算机字长较长。
11、指令字长度是指一个指令字中包含二进制代码的位数。
单字长指令:
指令字长度等于机器字长度的指令。
多字长指令:
使用目的在于提供足够的地址位来解决访问内存任何单元的寻址问题。
其主要缺点是必须两次或多次访问内存以取出一整条指令,降低了CPU的运算速度,又占用了更多的存储空间。
12、等长指令字结构:
各种指令字长度是相等的。
这种指令字结构简单,且指令字长度是不变的。
变长指令字结构:
各种指令字长度随指令功能而异。
结构灵活,能充分利用指令长度,但指令的控制较复杂。
13、指令的长度主要取决于:
操作码的长度、操作数地址的长度、操作数地址的个数。
14、指令的长度与机器的字长没有固定的关系,它既可以小于或等于机器的字长,也可以大于机器的字长。
15、计算机中基本数据有逻辑数、定点数、无符号数、浮点数、字符数及数组等。
目前微机所用的数据(字)长度一般为32位,4个字节。
内存地址按字节编址。
计算机指令系统可支持对字节、半字、字、双字的运算,有的还支持位操作。
为便于硬件的实现,一般要求多字节数据采用对准数据边界的方式储存。
不合要求则填充空白字节(无操作)代替。
16、寻址方式:
当采用地址指定方式时,形成操作数或指令地址的方式。
17、寻址方式分类:
指令寻址方式、数据寻址方式。
指令寻址方式分类:
(1)顺序寻址方式
指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序执行。
使用程序计数器(又称指令指针寄存器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。
(2)跳跃寻址方式
当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。
所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。
程序跳跃后,按新的指令地址开始顺序执行。
指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址。
采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。
指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。
操作数寻址方式:
定义:
指令中如何提供操作数或操作数地址。
换句话说就是规定如何对地址字段作出解释以找到操作数。
分类:
立即寻址、直接寻址、间接寻址、变址寻址以及相对寻址等几种寻址方式,或者这几种方式的组合与变形。
(1)立即数寻址方式
在这种方式中,指令的地址码部分就是指令的操作数,而不是操作数的地址。
优点:
取指同时取得操作数,提高指令的运行速度。
缺点:
操作数的长度受指令长度的影响,且不便修改。
适合操作数固定的情况。
例:
MOVAX,1AH的结果:
(AX)←1AH
(2)直接寻址方式
指令的地址码部分给出的就是操作数在存储器中的地址。
特点是简单直观,便于硬件实现,但操作数地址是指令的一部分,只能用于访问固定的存储器单元。
例:
MOVAX,[0110H]
(3)寄存器寻址方式
在指令的地址码部分给出某一寄存器的名称,而所需的操作数就在这个寄存器中。
这种方式数据传送快,计算机中多用。
例:
MOVAX,BX
其中BX为源操作数地址,AX为目的操作数地址,操作的结果为将BX中的数据传送(拷贝)到AX中。
(4)寄存器间接寻址方式
在指令的地址码部分直接给出的既不是操作数也不是操作数的地址,而是操作数地址的地址。
优点:
改变寄存器Rn中的内容就可访问内存的不同地址。
修改十分方便。
缺点:
二次寻址速度慢。
例:
MOVAX,[BX]
(5)变址寻址方式
把CPU中变址寄存器的内容和指令地址部分给出的地址之和作为操作数的地址来获得操作数。
这种方式多用于字串处理、矩阵运算和成批数据处理。
(6)基址寻址方式
将整个存储空间分成若干个段,段的首地址存放在基址寄存器中,操作数的存储地址与段的首地址的距离即段内偏移量由指令直接给出。
操作数存储单元的实际有效地址就等与基址寄存器的内容与段内偏移量之和。
改变基址寄存器的内容(基准量)并由指令提供位移量就可以访问存储器的任一单元。
基址寄存器用于程序装配可为浮动程序分配存储单元。
基址寻址面向系统,解决程序的存储定位问题;变址寻址面向用户,用以访问字串和数组。
(7)相对寻址方式
也称程序计数器寻址,其有效地址是指令中地址码部分给出的形式地址(偏移量Disp)与程序计数器PC的内容之和。
即有效地址是以当前PC的内容为基准浮动的,浮动的距离就是偏移量。
偏移量可正可负,通常用补码表示。
相对寻址方式主要应用于相对转移指令。
由于目的地址随PC变化不固定,所以非常适用于浮动程序的装配与运行。
18、指令的类型
(1)数据传送指令
用以实现寄存器与寄存器之间,寄存器与内存单元之间以及内存单元相互之间的数据传送。
数据能够被从源地址传送到目的地址,而源地址中数据不变,——拷贝。
包括:
立即数送寄存器(MOVAX,1)、将数据送到不同字长的寄存器中(MOVAL,78H、MOVAX,A0A0HMOVEAX,12345678H)以及寄存器组数据交换等操作指令。
(2)算术与逻辑运算指令
算术运算指令:
一般包括定点、浮点的加、减、乘、除运算。
根据运算结果改变标志寄存器的状态位。
ADD,ADC,SUB,SBB,INC,DEC,DIV,MUL
逻辑运算:
一般包括逻辑与,逻辑或,逻辑非,逻辑异或等运算,是以二进制为单位按位进行运算。
OR,AND,XOR,NOT
(3)移位指令
算术移位:
左移时空位补0而符号位进标志位,右移时空位复制符号位而溢出位进标志位。
逻辑移位:
整体移位,空位补0,溢出进标志位。
循环移位:
有不带进位循环和带进位循环。
前者循环后的溢出位进标志位,后者与标志位一起循环。
(4)比较指令
比较指令:
CMPAX,BX
作用:
根据参加比较的两个数相减后的结果,区分大于等于小于等情况对标志位进行置位操作。
比较指令只影响标志位,而不影响参加比较的操作数。
(5)转移指令
作用:
根据逻辑判断结果,改变程序的执行顺序。
无条件转移指令强迫CPU运行程序地址转移至新地址开始执行程序。
有条件转移指令根据当前运算的结果进行逻辑判断,符合判断条件则转移到指令表明的新地址处执行程序,否则继续按原顺序执行原来的程序。
根据实际需要,有条件转移指令分为许多种类,其中包括单一条件转移指令、复合条件转移指令、适用于无符号数的条件转移指令、适用于有符号数的条件转移指令以及某些特殊的条件转移指令等等。
(6)调用指令和返回指令
调用指令实现从一个程序转去执行子程序的操作;
返回指令则使CPU结束执行子程序而返回执行原程序。
(7)输入、输出指令
完成在中央处理器和外设之间进行数据交换。
输入指令使数据由外设传送到处理机
输出指令使数据由处理机传送到外设
(8)堆栈及堆栈操作指令
堆栈(stack)是由若干个连续存储单元组成的先进后出(firstinlastout,简称FILO)存储区。
第一个送入堆栈中的数据存放在栈底,最后送入堆栈中的数据存放在栈顶。
栈底是固定不变的,而栈顶却是随着数据的入栈和出栈在不断变化。
为了表示栈顶的位置,有一个寄存器或存储器单元用于指出栈顶的地址,这个寄存器或存储器单元就称为堆栈指针(stackpointer简称SP),任何堆栈操作只能在栈顶进行.。
在一般计算机中堆栈主要用来暂存中断和子程序调用时现场数据及返回地址,用于访问堆栈的指令只有压入(即进栈)和弹出(即退栈)两种,它们实际上是一种特殊的数据传送指令。
压入指令(PUSH)是把指定的操作数送入堆栈的栈顶,而弹出指令(POP)的操作刚好相反,是把栈顶的数据取出,送到指令所指定的目的地。
压入指令PUSHOPR把OPR(长度为两个字节)压入堆栈
其操作是(SP)-2→SPOPR→(Sp)
弹出指令POPOPR弹出一个数据(长度为两个字节)送OPR
其操作是:
((SP))→OPR(SP)十2→SP
其中,(SP)表示堆栈指针的内容;((SP))表示SP所指的栈顶的内容。
(9)字符串处理指令
用于各种文字编辑与排版处理,包括:
字符串的传送、比较、查找、匹配以及字符串的抽取和字符串的替换等操作指令。
(10)其它特殊指令
专用指令用来完成特殊的专门操作。
如:
暂停、等待、空操作、位操作、以及开中断、关中断等等。
特权指令分配和管理系统资源,防止非法用户对系统资源及其他用户程序的修改、打印以及删除等。
19、计算机的操作过程:
加电开外设开主机产生RESET信号执行程序停主机停外设停电
指令执行五阶段:
取指译码取操作数操作结果处理
20、隐含寻址:
不是明显的给出操作数地址,而是在指令中隐含着操作数的地址,即要寻找的地址包含在操作码中。
例如在单地址指令格式中,就是不明显的给出第二操作数的地址,而是以隐含的方式规定累加器作为第二操作数的地址。
如DAA;指令的操作对象为AL,结果也存于AL中。
第五章中央处理器
1.CPU功能:
(1)指令控制:
程序的顺序控制称为指令控制。
由于程序是一个指令序列,这些指令的相互顺序不能任意颠倒,必须严格按程序规定的顺序进行
(2)操作控制:
一条指令的功能往往是由若干个操作信号的组合来实现的,因此,CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
(3)时间控制:
对各种操作实施时间上的定时称为时间控制。
在计算机中,各种指令的操作信号以及一条指令的整个执行过程都受到时间的严格定时。
(4)数据加工:
对数据进行算术运算和逻辑运算处理。
2.CPU的组成:
CPU的基本部分由运算器、控制器组成
(1)控制器:
由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,完成协调和指挥整个计算机系统的操作。
其主要功能有:
a.取指令,PC+1送PC
b.指令译码并测试,产生相应控制信号,以便启动规定的动作.
c.指挥并控制CPU、内存和I/O设备之间数据流动的方向。
(2)运算器:
由算术逻辑单元、累加寄存器、数据缓冲寄存器和状态条件寄存器组成,是数据加工处理部件。
运算器所进行的所有操作都是由控制器发出的控制
信号来指挥的,它是执行部件。
其主要功能有:
a.执行所有的算术运算;
b.执行所有的逻辑运算。
(画CPU内部结构图)
3.CPU中主要寄存器:
(1)数据缓冲寄存器:
数据缓冲寄存器用来暂时存放由内存储器读出的一条指令或一个数据字;反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在数据缓冲寄存器中。
缓冲寄存器的作