————————————————
版权声明:本文为CSDN博主「Adjerrekaf」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Adjerrekaf/article/details/78880089
————————————————
计算机系统是由“硬件”和“软件”组成。衡量一台计算机性能的优劣是根据多项技术指标综合确定的,既包括硬件的各种性能指标,又包括软件的各种功能。
1)计算机系统由硬件和软件两部分组成。
2)计算机系统性能由硬件和软件共同决定。
1)微程序机器、传统机器、操作系统机器、汇编语言机器、高级语言机器
2)微程序机器和传统机器是物理机,其他是虚拟机。
1)翻译:将一种语言编写的程序全部翻译成另一种语言,然后再执行;
2)解释:将一种语言编写的程序的一条语句翻译成另一种语言的一条或多条语句,然后执行,执行完这条语言后,再解释下一条。
1)计算机体系结构是指那些能够被程序员看到的计算机的属性。如指令集、数据类型等;
2)计算机组成是指如何实现计算机体系结构所体现出来的属性;
3)以乘法指令为例,计算机是否有乘法指令,属于体系结构的问题。乘法指令是采用专用的乘法器,还是使用加法器和移位器构成,属于计算机组成的问题。
1)计算机由运算器、存储器、控制器、输入设备和输出设备五大部分组成;
2)指令和数据存储在存储器中,并可以按地址访问;
3)指令和数据均以二进制表示;
4)指令由操作码和地址码构成,操作码指明操作的性质,地址码表示操作数在存储器中的位置;
5)指令在存储器内按顺序存放,通常按自动的顺序取出执行;
6)机器以运算器为中心,I/O设备与存储器交换数据也要通过运算器。(因此,后来有了以存储器为中心的计算机结构)
P10,图1.9
存储单元:存储一个存储字并具有特定存储地址的存储单位;
存储字:一个存储单元中存放的所有的二进制数据,按照某个地址访问某个存储单元获取的二进制数据。
存储字长:存储字中二进制数据的位数,即按照某个地址访问某个存储单元获取的二进制数据的位数;
存储体:由多个存储单元构成的存储器件。
1)MAR:存储地址寄存器,保存需要访问的存储单元地址。反映存储单元的个数。
2)MDR:存储数据寄存器,缓存读出/写入存储单元的数据。反映存储字长。
3)存储器的最大容量由MAR寄存器的位数和MDR寄存器的位数决定。
机器字长:CPU一次能够处理的二进制数据的位数。
存储字长:按照某个地址访问某个存储单元获取的二进制数据的位数。
1)MAR寄存器的位数为16位,能表示的地址个数为2的16次方,为64K;
2)MDR寄存器的位数为16位,说明存储字长为16位,也即2个字节;
3)存储器的最大容量为64K * 2B = 128K Byte
在冯诺依曼结构中,各个部件之间均有单独连线,不仅线多,而且导致扩展I/O设备很不容易。即扩展一个I/O设备,需要连接很多线。
因此,引入了总线连接方式,将多个设备连接在同一组总线上,构成设备之间的公共传输通道。
1)共享:多个部件连接在同一组总线上,各个部件之间都通过该总线进行数据交换。
2)分时:同一时刻,总线上只能传输一个部件发送的信息;
1)分成数据总线、地址总线以及控制总线。
2)数据总线:各个功能部件之间传送数据信息,双向传输;
3)地址总线:用来指明数据总线上,源数据或目的数据所在的主存单元的地址。单向:由CPU发出
4)控制总线:用来发送各种控制信号。对于控制总线中的单根线,是单向的,即只能由一个部件发向另一个部件。而一组控制总线中,有输入也有输出,因此,控制总线也可以看成是双向的。
1)总线宽度:数据总线的根数,一般是8的倍数。是衡量计算机系统性能的重要指标;
2)总线带宽:即总线数据传输速率,总线上每秒能够传输的最大字节量。
3)总线复用:一条信号线上分时传送两种信号。例如数据总线和地址总线的分时复用;
4)信号线数:地址总线、数据总线和控制总线三种总线的线数之和。
33 * (32/8) = 132 MB/s
在单总线结构中,所有的部件(CPU、主存、I/O设备)都连接在一组总线上。
但所有的信息传送都要通过这组总线,同时只能有一个部件向总线上发送信息,导致总线成为系统的瓶颈。
因此,发展出来了多总线结构,其基本思想均是将速度相近的设备挂接在同一组总线上,总线之间通过总线控制器相连。
例如CPU和Cache之间、I/O设备之间等。
1)链式查询、计数器定时查询、以及独立请求。
2)链式查询的优先级不能改变,离控制器最近的优先级最高。
1)总线周期:总线上两个部件完成一次完整且可靠的数据传输时间;
2)分为四个阶段:
申请分配阶段:申请总线
寻址阶段:发出地址及有关命令
传数阶段:进行数据交换
结束:从总线上撤除信号,让出总线
1)总线通信控制:解决通信双方如何获知传输开始和传输结束,以及如何协调配合;
2)同步通信、异步通信、半同步通信、分离式通信
1)同步通信:总线上各个部件由统一的时钟信号控制;在总线周期中,每个时钟周期各个部件如何动作都有明确的规定。
2)优点:速度快,各个模块间配合简单
3)缺点:以总线上最慢的部件来设计公共时钟,影响总线效率。
1)异步通信:总线上各部件没有统一的时钟标准,采用应答式通信;(主模块发出请求后,一直等到从模块反馈回来应答信号之后才开始通信)
2)不互锁、半互锁、全互锁。(需要了解各种方式的含义)
①不互锁方式。主模块发出请求信号后,不等待接到从模块的回答信号,而是经过一段时间。确认从模块已收到请求信号后,便撤消其请求信号;从设备接到请求信号后,在条件允许时发出内回答信号,并且经过一段时间,确认主设备已收到回答信号后,自动撤消回答信号。可见通信双方并无互锁关系。
②半互锁方式。主模块发出请求信号,待接到从模块的回答信号后再撤消其请求信号,存在着简单的互锁关系:而从模块发出容回答信号后,不等待主模块回答,在一段时间后便撤消其回答信号,无互锁关系。故称半互锁方式。
③全互锁方式。主模块发出请求信号,待从模块回答后再撤其请求信号;从模块发出回答信号,待主模块获知后,再撤消其回答信号。故称全互锁方式
波特率:单位时间内传送的二进制数据数据的位数,单位bps
比特率:单位时间内传送的有效的二进制位数。
波特率、停止位(1/2/1.5)、校验位(奇校验、偶校验、无校验)
半同步通信结合同步通信和异步通信。
同步通信:采用统一的时钟,规定了在一定的时钟周期干什么事情;
异步通信:如果从模块没有准备好,增加一个“等待响应”信号。
主模块发出地址和命令之后,放弃总线,在从模块准备数据期间,使得总线可以被其他设备所用。提高总线利用率。
但是,这种方式控制比较复杂。
1)奇偶校验只能检错,不能纠错。
2)汉明码可以纠错。
1)可以分为随机存储器、只读存储器、顺序存储器和直接存储器;
2)随机存储器和只读存储器属于随机存储器,即存取时间与物理地址无关;
3)顺序存储器(典型的如磁带)和直接存储器(典型的如磁盘)属于串行存储器,即存取时间与物理地址有关。
1)速度、容量、位价格。
2)寄存器速度最快,主存最便宜。
1)缓存-主存层次:用来缓解CPU和主存速度不匹配的问题,由硬件来完成,对所有的程序员完全透明。
2)主存-辅存层次:用来解决主存容量不够的问题,由操作系统和硬件共同完成,对应用程序设计者透明,对系统程序设计者不透明。
(现在一般存储器都即能按字访问,也能按照字节访问,因此,存储器编址时,每个字节都有一个独立的地址。)
1)大端方式:字的低位存在内存的高地址中,而字的高位存在内存的低地址中;
2)小端方式:字的低位存在内存的低地址中,而字的高位存在内存的高地址中。
3)x86CPU采用的是小端方式。
存储容量、存取速度和存储带宽
1)存取时间:启动一次存储器完成本次操作(读或写)所需的时间;
2)存取周期:连续两次启动存储器所需要的最小间隔时间;
3)存取周期包含存取时间;
单位时间内存储器存取的信息量;
1)线选法:所有的地址芯片通过一个译码器译码,选择一个存储单元的各位,适合于存储容量不大的芯片;
2)重合法:将地址分为两组,每组通过一个译码器译码,选择行或列,行、列交叉处就是要访问的存储位。
1)静态RAM:采用锁存器原理实现;
2)动态RAM:采用电容原理实现,需要刷新。
3)相比于动态RAM,静态RAM的速度快、容量小、价格高,一般用于缓存,而动态RAM一般用于内存。
1)掩模ROM(MROM):出厂后内容不能被更改。
2)PROM:可编程只读存储器,可以进行一次性编程;
3)EPROM:可擦除只读ROM,用紫外线照射;
4)EEPROM:电可擦除只读ROM。
6)FLash Memory:采用EEPROM的非易失性存储器。
存储器的扩展通常有位扩展和字扩展,什么是字扩展,什么是位扩展?请举例简要说明
1)位扩展:增加存储器的字长,例如两个1K * 4位的存储芯片构成1个1K*8位的存储器;
2)字扩展:增加存储器的字数,例如两个1K * 8位的存储芯片构成1个2K * 8位的存储器;
通常字扩展和位扩展两种方式混合使用。
参看P94页,例4.1
应添加的检测位位数:2的k次方大于等于n+k+1。
因为要使其有1位的检测能力,必须使用k位来说明n+k位到底哪一位出现了错误,k位能表达的数量为2的k次方,而n+k位到底哪一位
出现了错误或者是全部正确,共有n+k+1种状况,因此,k的取值需要满足:2的k次方大于等于n+k+1
1)采用高速元器件;
2)采用存储层次结构:cache-主存结构;
3)调整主存结构:包括单体多字,多体并行两种方式。
1)单体多字存储系统一次访存取出多个CPU字,即存储字为CPU字的n倍(假设一次访存取出n个cpu字)。
2)优点是:显著提高了存储器带宽。
1)高位交叉编址方式:存储体的编址方式为顺序存储,即一个存储体存满后,再存入下一个;存储单元地址的高位为存储体的编号。
高位交叉编址并不能提高单次访存速度,但能使多应用并行访存,提高系统的并发性。
2)低位交叉编址方式:存储体的编址方式为交叉存储。即程序连续存放在相邻的存储体之中。存储单元地址的低位为存储体的编号。
低位交叉编址能显著提高单次访存速度。
1)T= 4τ
2)连续读取四个字,所需要的时间为T + (4-1)τ
注意:假设不是低位交叉编址,而是高位交叉编址,连续读取四个字所需要的时间仍然为4T。
1)避免cpu空等I/O访存;
2)缓解CPU和主存速度不匹配的问题。
CPU从主存取指令或数据,在一定时间内,只是对主存局部地址区域访问。
1)写直达法:写操作既写入Cache又写入主存;
2)写回法:只把数据写入Cache而不写入主存,当Cache中数据被替换出去之后才写入主存。
直接映射、全相联映射、组相联映射。
优点:地址变换速度快。缺点:cache利用率不高,块冲突率高;
优点:cache利用率高,块冲突率低。缺点:地址变换复杂,需要较多的硬件。
1)先进先出、近期最少使用算法和随机替换算法;
2)命中率最高的是近期最少使用算法;
柱面、磁头号和扇区号
?
1)早期(分散连接、串行工作、程序查询)
2)接口模块和DMA阶段(总线连接、并行工作、中断及DMA)
3)通道阶段(通道是具有特殊功能的处理器)
4)I/O处理机阶段
I/O系统的发展实际上是逐步将CPU从繁重的I/O工作中解放出来的过程;
1)统一编址方式:和存储器统一编址,I/O地址作为存储器地址的一部分;无须用专用的I/O指令,但占用存储器空间。
2)独立编址方式:和存储地址分开编址,需用专用的I/O指令。
I/O设备与主机间交互信息时必须了解彼此的状态。根据I/O设备工作速度的不同,可以分为3类:
1)立即响应:不管其状态(认为其时刻准备好),适用于慢速设备。
2)应答信号:通过应答信号来进行交互;
3)同步时标:采用统一的时钟信号。
数据线、设备选择线、状态线、命令线
D=0,B=0:暂停状态;
D=0,B=1:准备状态
D=1,B=0:就绪状态
cpu不断去查询I/O设备状态,导致CPU和I/O设备串行工作。
计算机在执行程序过程中,当出现异常清空或特殊请求时,计算机停止现行程序的运行,转去处理这些异常清空或特殊请求,处理结束后,再返回现行程序的间断处,继续执行原程序,即为中断。
1)保护现场
2)中断服务
3)恢复现场
4)中断返回
1)单重中断:不允许中断现行的中断服务程序;
2)多重中断:允许级别更高的中断源中断现行的中断服务程序,也称为中断嵌套;
当前指令执行完毕后,cpu发出中断查询信号,也就是说,中断响应一定是在每条指令执行结束之后进行的,不可能在指令执行过程中响应中断。
DMA:直接内存访问。在主存和I/O设备之间建立独立的总线连接。
1)停止CPU访问主存:DMA访存优先级高;
2)周期挪用(窃取):DMA挪用存储或窃取总线使用权一个或几个主存存取周期;
3)DMA和CPU交替访问:将CPU工作周期分成两部分,一部分供DMA访存,一部分供CPU访存。
1)预处理
2)数据传输
2)后处理
1)通过原码求补码:符号位不变,各位取反,末位加1;
2)通过补码求原码:符号位不变,各位取反,末位加1;
补码能表示的真值范围为-128~+127(参见补码定义)
1)定点表示:小数点固定在某一位置的数为定点数;
2)浮点表示:小数点位置可以浮动的数。
由尾数、数符、阶码、阶符四部分组成。
由数符、阶码(含阶符)以及尾数组成。
阶码用移码表示,其偏移量是2^(n-1),尾数用原码表示。
float为短实数,占32位,其中阶码8位,尾数23位。
double为长实数,占64位,其中阶码占11位,尾数为52位。
对于正数,其源码、补码、反码均等于真值,左移时,低位添补0,右移时,高位添补0。
对于源码,左移或右移时,低位或高位均添补0;
对于补码:左移时,低位添补0,右移时高位添补1
对于反码:左移或右移时,低位或高位均添补1;
逻辑移位是对无符号数的移位,由于无符号数不存在符号位,左移时,高位移丢,低位补零。右移时,低位移丢,高位补零。
1)正数加正数,正数减负数,负数加负数,负数减正数时,可能会发生溢出。
2)如果参加操作的两个数符号相同(转换成补码的加法),其结果与源操作数符号不同,即为溢出。
3)如果补码采用1位符号位,如果最高有效位的进位和符号位的进位不同,则发生溢出。
可以。
1)对阶:使小数点对齐;
2)尾数求和:将对阶后的两个尾数按照定点加减运算规则求和;
3)规格化:尾数规格化;
4)舍入:尾数右规时,丢失数值位;
5)溢出判断:判断结果是否溢出。
阶码是否超出了其表示范围。(使用2个符号位判溢出)
1)机器指令:每一条机器语言的语句;
2)指令系统:全部机器指令的集合。
1)操作码:指明指令要完成的操作;
2)地址码:指明指令要操作的数据或数据来源;
1)固定长度:便于硬件设计,指令译码时间短;
2)可变长度:压缩了操作码平均长度;
可以是主存地址、寄存器地址或I/O设备的地址;
四地址、三地址、二地址、一地址以及零地址。
1)四地址:访存4次;
2)三地址:访存4次;
3)两地址:访存3次;
4)一地址:访存2次;
1)扩大指令字的寻址范围;
2)缩短指令字长;
3)减少访存次数
减少访存次数。
1)指令寻址:下一条将要执行的指令的指令地址;
2)数据寻址:确定本指令的操作数地址。
1)形式地址:指令的地址码字段通常都不代表操作数的真实地址,成为形式地址,记为A;
2)有效地址:操作数的真实地址,记为EA,由寻址特征和形式地址共同决定;
立即寻址、直接寻址、隐含寻址、间接寻址、寄存器寻址、寄存器间接寻址、基址寻址(隐式或显式)、变址寻址、相对寻址、堆栈寻址
RISC:精简指令集;
CISC:复杂指令集;