指令格式由操作码和地址码组成,操作码指明执行什么操作,地址码指明操作数在内存单元(存储单元)中的地址。指令和数据以二进制的形式以同等地位保存在存储器的存储单元中。
运算器的基本功能就是完成运算,其核心是ALU(算术逻辑运算单元)。其中的寄存器主要有ACC(累加器)、MQ(乘商寄存器)、X(数据寄存器)。
控制器的功能是解释一条指令(完成一条指令)以及保证指令的按序执行,主要由控制单元(CU)、程序计数器(PC)、指令寄存器(IR)构成。
**程序计数器**PC:存放欲执行指令的地址
**指令寄存器**IR:存放当前要执行指令的地址
**控制单元**CU:控制相应的执行部件执行操作
完成一条指令的过程分成3个阶段:
1. 取指令(指令从内存单元–>指令寄存器IR)
2. 分析指令,把IR中指令的操作码部分送给控制单元(CU)进行分析
3. 执行指令,控制单元(CU)控制相应的执行部件执行操作。
以完成一条取数指令为例,需要经过的步骤为:
1. 取指令 PC➖MAR➖M(存储体)➖MDR➖IR;PC+1->PC
2. 分析指令 Op(IR)➖CU
3. 执行指令 Ad(IR)➖MAR➖(存储体)➖MDR➖ACC
对于一个程序而言,程序说到底是多条指令的集合,执行一个程序也就是有序地执行多条指令。执行前先将程序的首地址,也就是第一条指令的地址保存到PC中,之后每执行一条指令PC+1(当然不一定是1,由机器决定)。
1、机器字长 CPU一次能处理数据的位数,与CPU中的寄存器位数有关
2、运算速度 包括:
(1)主频
(2)核数和每个核支持的线程数
(3)CPI值 执行一条指令所需时钟周期数(越少越好) (4)MIPS值 每秒执行百万条指令
(5)FLOPS值 每秒浮点运算次数
3、存储容量 包括主存容量和辅存容量
总线是连接各个部件的信息传输线,是各个部件共享的传输介质,一个时刻一条总线只能传输一个信号。
按连接部件不同,总线可分为片内总线、通信总线、系统总线。
总线上信息的传输方式分为串行传输和并行传输,串行传输每次只传输一位信息,并行传输一次可以传输多位信息。
连接在主线上的设备(部件),对总线有控制权的称为主设备(主部件),没有控制权的称为从设备(从部件),从设备响应从主设备发来的总线命令。
总线判优控制:由于一个时刻一条总线只能有一个信号在传输,因此各个主设备要争抢总线的控制权,这就是总线判优控制。方式有集中式和分布式,其中集中式有链式查询方式、计数器定时查询方式、独立请求方式。
总线通信控制:即控制主设备和从设备之间的信息交流方式,以解决通信双方协调配合问题。总线通信的方式有同步通信、异步通信、半同步通信、分离式通信。
按存储介质:
1.半导体存储器
2.磁表面存储体
3、光盘存储器
按存取方式分类:
1.存取事件与物理地址无关(随机访问)
(1).随机存取器(RAM)
(2).只读存储器(ROM)
2.存取事件与物理地址有关(串行访问)
(1).顺序存取存储器 磁带
(2).直接存取存储器 磁盘
按在计算机中的作用分类:
1.主存,包括RAM和ROM
2.Flash Memory(闪存) 常用的U盘、SSD,存储速度比主存慢,比辅存快。
3、高度缓冲存储器Cache 速度最快,一部分集成在CPU中,一部分在主板上。
4.辅存 磁盘、磁带、光盘
缓存➖主存 层次 解决速度问题
主存➖辅存 层次 解决容量问题
由3部分组成: 存储体、MAR(存储器地址寄存器)、MDR(存储器数据寄存器),不过现在的计算机MAR和MDR都放到CPU中了。
存储体:以二进制的形式存放指令以及操作数,由存储单元构成,存储单元按地址访问。每个存储单元中保存的数据称为存储字,存储子的位数称为存储字长。
MAR:保存了存储单元的地址,其位数与存储单元的个数有关。
MDR:保存了要保存到存储体中的数据或刚刚从存储体重取出来的数据,其位数与存储字长一致。
主存储器的容量表示形式为:M*N M为存储单元个数,N为每个存储单元所能保存的数据位数。
(1)位扩展:增加存储字长
(2)字扩展:增加存储字的数量
RAM又分静态RAM(SRAM)和动态RAM(DRAM),SRAM的基本单元原件通过双稳态触发器保存信息(0/1),只要不断电,信息就不会丢失;DRAM的基本单元元件通过MOS电容存储信息(0/1),需不断给电容充电才能保存信息(不断刷新)。 DRAM基本单元元件又有3管DRAM和单管DRAM。一般主存用DRAM,缓存Cache用SRAM,后者速度快。
一般用于保存系统程序或者系统的配置信息。
掩模ROM(MROM):只可读
PROM:可一次性编程
EPROM:可多次编程
EEPROM:课多次编程
Flash Memory:已经具备了RAM的功能
以内存为例,如果内存所处的电子环境比较复杂,或者在空间环境下受到带电粒子的打击,就可能造成电容的充电放电,或者是触发器的翻转,存放在存储器中的信息就可能会出错,因此需要对存储器中的信息进行校验。
编码的最小距离:一组合法代码中任意两个合法代码之间二进制位数的最少差异。
编码的检错、纠错能力与编码的最小距离有关。编码的最小距离=检错位数+纠错位数+1(检错位数>=纠错位数)
汉明码是具有一位纠错能力的编码,采用奇偶校验。
1.单体多字方式
2.多体并行方式 分为高位交叉方式和低位交叉方式,前者用于存储器容量的扩展,后者用于存储器带宽和访问速度的提高。
3.高性能存储芯片 (1)SDRAM(同步DRAM) (2)RDRAM (3)带Cache的DRAM
由于CPU速度过快,主存速度跟不上,因此引进了Cache,避免了CPU“空等”的现象。Cache由SRAM构成。
空间局限性:一旦主存中一个存储单元中的指令被访问,那么它附近存储单元的指令很快也会被访问。
时间局部性:一旦主存中一个存储单元中的指令被访问,那么这个指令在不久的将来还会再被访问。
空间局限性导致主存和cache之间的信息交换是以块进行交换的,一个块中又多个存储单元。
主存编址:主存块号+块内地址
cache编址:缓存块号+块内地址
主存和cache相对应的块的块内地址是完全一样的,即块的大小(块长)是一样的。
命中:主存块调入缓存,主存块与缓存块建立了对应关系。
未命中:主存块未调入缓存,主存块与缓存块未建立对应关系。
命中率:CPU要访问的信息在Cache中的比率。 命中率与Cache的容量和块长有关。
一、直接映射
主存当中任意一个块,只能映射到Cache当中指定的某一块。这种方法速度快,Cache利用率低。
二、全相联映射
主存中的任何一个快可以映射到Cache当中的任何一个块中这种方法速度慢,Cache利用率高。
三、组相联映射
缓存被分为若干组,每组r块。主存储器被分为若干区,每个区的块数与缓存的组数相等。主存储区的每个区中的第n块只能映射到Cache中的第n组的任意一块。这种方法相当于直接映射和全相联映射的结合。
主存中的内存块如果要映射到Cache中,而Cache中能接受主存块的块全被放满了,就要对这些块中的其中某个块进行替换。
一、先进先出(FOFO)算法
最先被放入到Cache中的块被替换。
二、近期最少使用(LRU)算法
在最近一段时间里面使用最少的块被替换。
三级缓存的设计,弥补速度与空间利用率之间的不平衡,兼顾速度与命中率。三级缓存的设计基于这样一个原则:越是靠近 CPU Cache 层对于速度的要求越高,可以采用直接相联映射和路数少的分组相联映射。对于中间层 Cache 需要兼顾速度和空间利用率,用组相联映射更加合适。距离 CPU 远的 Cache 层,对速度的要求低,空间利用率高,适合全相联映射的 Cache。设计三级缓存是为了弥补速度与空间利用率之间的不平衡,兼顾速度与命中率。
1、特点:不能直接与CPU进行信息交换
2、磁表面存储器:有硬磁盘和软磁盘,现在市场上软磁盘已经淘汰。
磁表面存储器的几个技术指标:
(1)记录密度 道密度Dt:硬盘径向方向上单位长度的磁道数 位密度Db:单位长度的磁道保存的二进制信息数。 每个磁道是一个同心圆,越往外位密度越低。
(2)存储容量:盘面数*Dt*Db
(3)平均寻址时间:寻道时间+等待时间 寻道时间:读写头在硬盘表面移动找到指定磁道所需要的事件;等待时间:找到给定磁道以后,读写头停止运动,磁盘旋转,等待给定的扇区旋转到磁头下面需要的时间。
(4)辅存的速度:与平均寻址时间和磁头读写时间有关。
(5)数据传输率Dr:Db*V V为磁盘旋转速度
(6)误码率:出错信息位数与读出信息的位数
3、光盘存储器:采用光存储技术,用激光写入和读出。
第一代光存储器:采用非磁性介质,不可擦写,存储原理是热作用(物理化学反应)。
第二代光存储器:采用磁性介质,可擦写,存储原理是热磁效应。
大致分为三类:
1、输入设备:键盘、鼠标、触摸屏等
2、输出设备:显示器、打印机等
3、其他:模数/数模转换器、网卡、磁盘等
I/O接口的功能及组成:
选址功能—-设备选择电路
传送命令的功能—-命令寄存器、命令译码器
传送数据的功能—-数据缓冲寄存器
反应设备状态的功能—-设备状态标记
I/O接口的基本组成:
1、程序查询方式
2、程序中断方式
3、DMA方式
以I/O向内存输入数据为例:
CPU在执行现行程序时执行到一条I/O指令,CPU向I/O接口发送读指令,I/O接口启动相应I/O设备准备数据,同时CPU在原地踏步等待,不停地读I/O接口中的设备状态。当I/O设备中的数据缓存到I/O接口的数据缓冲寄存器后,I/O接口中的设备状态标记为准备就绪,这时候CPU开始从I/O接口的数据缓冲寄存器中读数据(I/O接口->CPU),完后再将数据从CPU中写入到内存中。接下来判断读数是否完成,若未完成,CPU继续向I/O发读指令,重复操作;若读数完成,CPU继续执行现行程序指令。
可见程序查询方式是CPU和I/O串行工作,在I/O设备准备数据的时候(I/O接口与CPU数据传输之前),CPU原地踏步等待I/O设备数据准备完成,即I/O接口中的设备状态标记为准备就绪。
程序查询方式的接口电路(以输入数据为例):
DBR:数据缓冲寄存器
D:完成触发器,保存I/O设备状态,0为未准备就绪,1为准备就绪,受设备本身控制
B:启动设备触发器,1为启动,2为不启动
与程序查询方式不同的是,CPU向I/O接口发送读指令后,不会踏步等待I/O接口中的设备状态准备就绪,而是直接继续执行现行程序的下一条指令。与此同时,I/O设备接到启动命令启动,准备数据,并将数据传送到I/O接口的数据缓冲寄存器中。这时候数据已经准备完成,I/O接口向CPU发送中断请求,请求CPU中断现行程序转而执行中断服务程序。CPU在收到请求后做出响应,如果拒绝请求则继续执行现行程序指令;如果同意请求,则中断现行程序,转而执行中断服务程序。中断服务程序执行结束,CPU回到程序断点,继续执行现行程序。
这种方式实现了CPU和I/O部分的并行工作,表现在I/O设备在准备数据的同时,CPU没有踏步等待其状态准备就绪,而是继续执行现行程序指令。
程序中断方式接口电路:
B:启动设备触发器,1为启动,2为不启动
D:完成触发器,保存I/O设备状态,0为未准备就绪,1为准备就绪,受设备本身控制
DBR:数据缓冲寄存器
MASK:中断屏蔽触发器
INTR:中断请求触发器
中断服务程序(包括4个步骤)::
(1)保护现场:程序断点的保护和寄存器内容的保护
(2)中断服务:数据传输
(3)恢复现场:恢复寄存器内容
(4)中断返回:返回程序断点处继续执行指令
这种方式与前面两种方式最大的不同之处在于,I/O和内存交换数据的过程中没有直接依赖于CPU,而是通过I/O与内存之间的一条直接数据通道完成的。具体流程如下:
CPU在执行现行程序时执行到一条I/O指令,发送给I/O接口(DMA接口),对DMA接口进行预处理,然后启动相应的I/O设备,然后CPU继续执行现行程序指令。I/O设备准备好数据并缓存到DMA接口之后,DMA接口向CPU发出DMA请求,请求获取总线和内存的控制权。CPU同意请求之后将总线和内存的控制权交给了DMA控制器,此时CPU不能再与内存进行数据交换,而是根据需要从Cache中获取数据。DMA接口在获取到总线和内存的控制权之后与内存进行数据传送,数据传送结束之后DMA接口会像CPU发送中断请求,CPU进行后处理。后处理结束后,CPU继续执行主程序。
这里涉及到几个关键字:
预处理:在启动I/O设备之前CPU将主存中进行数据交换的起始地址、进行数据交换的I/O设备地址、传送数据个数预先在DMA中设置好
数据传送:DMA接口与内存之间的信息传输
后处理:数据传送完成之后,DMA接口向CPU发送中断请求,CPU响应后进行后处理,包括校验送入主存的数是否正确、是否继续用 DMA以及测试传送过程是否正确,错则转诊断程序。后处理由中断服务程序完成,这个中断服务程序不同于程序中断方式的中断服务程序,后者是进行数据传输,相当于这里的数据传送(其实是一样的),而这里的中断服务程序是数据传输完毕之后的后处理。
DMA方式的数据传送过程(以数据输出为例):
BR:数据缓冲寄存器
AR:内存地址寄存器
WC:数据个数寄存器
DAR:I/O设备地址寄存器
从程序查询方式到程序中断方式到DMA方式,I/O系统的自治能力越来越强。