目录
第一章 计算机组成与结构
第一节 数据的表示
1、进制的转化
(1)R 进制转十进制:位权展开法,用 R 进制数的每一位乘以 R 的 n 次方,n 是变量(n可以是负数),从 R 进制数的最低位开始,依次为 0,1,2,3...累加。
举例:
二进制 10100.01 =
1 0 1 0 0 . 0 1
1×2^4 + 0×2^3 + 1×2^2 + 0×2^1 + 0×2^0 + 0×2^(-1) + 1×2^(-2),
七进制604.01=
6 0 4 . 0 1
6×7^2 + 0×7^1 + 4×7^0 + 0×7^(-1) + 1×7^(-2)
八进制十六进制也是同样的道理,就不多赘述。
(2)十进制转 R 进制:短除法
举例:
十进制转 2 进制,每次都除以 2 ,除至余数为 0 或者 1,得到的结果就是二进制数 94。
(3) 特殊的二进制、八进制、十六进制的互转要特别熟练
把二进制按位区分,就可以很容易的互转了。
2、源码、补码、反码、移码
(1)相互关系
运算过程 : 原码 -> 反码 -> 补码 -> 移码
原码 : 二进制(开头第一个表示符号 0 正 1 负)
反码 : 在原码的基础上,符号位不动,其他位取反——注意,任何正数的源码 = 反码 补码。而负数都是通过补码表示的。
补码 : 在反码的基础上,运算+1—注意,任何正数的 源码 = 反码 = 补码 ,而负数都是通过补码表示的0,0有唯一的编码:[+0]补 = 0 0000000.
移码 : 在补码的基础上,符号位取反。
公式 : 两数补码的和 == 两数和的补码。
一个原码的补码再求其补码,就是它的原码;减一取反等价于取反加一。
(2)表示范围
(3)例子
3、浮点数运算(小阶向大阶对齐,小阶尾数右移)
浮点数的表示分为阶和尾数两部分。两个浮点数相加时,需要先对阶,即将小阶向大阶对齐,同时将尾数右移n位。
二进制数N = × F (E为阶码,F为尾数,例: × 0.1010001),而 × F 称为浮点数。
浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。为了充分利用尾数来表示更多的有效数字,通常才用规格化浮点数。规格化就是将尾数的绝对值限定在区间 [ 0.5,1 ]。
例如:
第二节 计算机结构
运算器与控制器的组成
考试中考的比较多的还是运算器和控制器的构成,这块必须掌握。
计算机的硬件基本系统由五大部分组成 : 运算器、控制器、存储器、输入设备(如鼠标键盘)、输出设备(如显示器)。
其中,运算器和控制器合并称为中央处理单元,即CPU;存储器分为内部存储器(即内存,容量小,速度快,临时存放数据)和外部存储器(即硬盘、光盘等,容量大,速度慢,长期保存数据);输入设备和输出设备合并称为外设。
鼠标键盘等输入设备都是通过中断的原理来实现控制,点击后触发中断,首先进入中断处理程序。
主机:CPU(运算器、控制器)+主存储器。
CPU:由运算器、控制器、寄存器组和内部总线组成。实现程序控制、操作控制、时间控制、数据处理功能。
运算器:由算术逻辑单元 ALU(实现对数据的算术和逻辑运算)、累加存器 AC(运算结果或源操作数的存放区)、数据缓冲寄存器 DR (暂时存放内存的指令或数据)和状条寄存器 PSW(保存指令运行结果的条件码内容,如溢出标志等)组成。执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等.
控制器:由指令寄存器 IR(暂存 CPU 执行指令)、程序计数器 PC(存放指令执行地址)、地址寄存器 AR(保存当前 CPU 所访问的内存地址)、指令译码器 ID(分析指令操作码)等组成。控制整个CPU的工作,最为重要。
CPU 依据指令周期的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU 分别去取指令或者数据。
第三节 指令寻址方式
顺序寻址方式(从存储器中按顺序取指执行)、跳跃寻址方式(下一条指令的地址码不止由程序计数器给出,而是由本条指令直接给出,程序跳跃后,按新的指令地址开始顺序执行,指令计数器也会跟着改变,跟踪新的指令地址)。
指令操作数的寻址方式
寻址速度:立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址
立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身。
直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址。
寄存器间接寻址方式:与直接寻址方式相比,间接寻址中指令地址码字段所指向的存储单元中存储的不是操作数本身,而是操作数的地址。
寄存器寻址方式:指令中的地址码是寄存器的编号,而不是操作数地址或操作数本身。寄存器的寻址方式也可以分为直接寻址和间接寻址,两者的区别在于:前者的指令地址码给出寄存器编号,寄存器的内容就是操作数本身;而后者的指令地址码给出寄存器编号,寄存器的内容是操作数的地址,根据该地址访问主存后才能得到真正的操作数。
基址寻址方式:将基址寄存器的内容加上指令中的形式地址而形成操作数的有效地址,其优点是可以扩大寻址能力。(了解)
变址寻址方式:变址寻址方式计算有效地址的方法与基址寻址方式很相似,它是将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址。
相对寻址方式:相对于当前的指令地址而言的寻址方式。相对寻址是把程序计数器 PC 的内容加上指令中的形式地址而形成操作数的有效地址,而程序计数器的内容就是当前指令的地址,所以相对寻址是相对于当前的指令地址而言的。
第四节 计算机体系结构分类
按处理机的数量进行分类:单处理系统(一个处理单元和其他设备集成)、并行处理系统(两个以上的处理机互联)、分布式处理系统(物理上远距离且松耦合的多计算机系统)。
Flynn分类法
Flynn分类法中主要有两个指标:一个是指令流,一个是数据流。
指令流为机器执行的指令序列;
数据流是由指令调用的数据序列。
依据计算机特性,是由指令来控制数据的传输,因此,一条指令可以控制一条或多条数据流,但一条数据流不能被多条指令控制,否则会出错,就如同上级命令太多还互相冲突,不知道该执行哪个,因此多指令单数据MISD 不可能。
第五节 CISC和RISC
CISC 是复杂指令系统,兼容性强,指令繁多、长度可变,由微程序实现;
RISC 是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)。
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 |
CISC(复杂指令系统) | 数量多,使用频率差别大 可变长格式 |
支持多种 | 微程序控制技术(微码) | 研制周期长 |
RISC(精简指令系统) | 数量少,使用频率接近 定长格式,大部分为单周期指令 操作寄存器,只有Load/Store 操作内存 |
支持方式少 | 增加了通用寄存器 硬部线逻辑控制为主 适合采流水线 |
优化编译 有效支持高级语言 |
第六节 指令的流水处理(流水线)
流水线原理
将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段,如下图所示:
RISC 中的流水线技术:超流水线(在每个机器周期内能完成一个甚至两个浮点操作,以时间换空间)、超标量(内装多条流水线同时执行多个处理,以空间换时间)、超长指令字 VLIW(同时执行多条指令,发挥软件作用)。
流水线时间计算
流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期。
流水线的总共时间 = 一条完整指令的时间 +(n-1)*流水线周期
吞吐率 = 指令条数 /(一条完整指令的时间+(n-1)*流水线周期)
而流水线最大吞吐率是一种理想情况,即TPmax=1/流水线周期。
流水线的加速比计算
加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高,
公式:
流水线的效率
简单来算,就是阴影面积/总面积=[4*(1+1+1+3)] / (4*15) = 2/5
第七节 存储系统
计算机存储结构层次图
计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题。
存储速度:寄存器 > Cache > 内存(主存) > 外存(辅存)
两级存储映像为:Cache-主存、主存-辅存(虚拟存储体系)。
存储器的分类
按存储器所处的位置: 内存、外存。
按存储器构成材料:磁存储器 (磁带)、半导体存储器(静态和动态两类)、光存储器(光盘)。
按存储器的工作方式:可读可写存储器(RAM)、只读存储器(ROM 固定只读存储器 只能读,PROM 可编程的只读存储器 可写入一次;EPROM 可擦除可编程的只读存储器 和 EEPOM 电擦除可编程的只读存储器 既可以读也可以写,只是修改方式不用)。闪速存储器(FM 简称闪存,其特性介于EPROM和EEPROM之间,类似于EEPROM)。
按存储器访问方式:按地址访问、按内容访问(相联存储器)。
按寻址方式:随机存储器(访问任意存储单元所用时间相同)、顺序存储器(只能按顺序访问,如磁带)、直接存储器(二者结合,如磁盘,对于磁道的寻址是随机的,在一个磁道内则是顺序的)。
主存分类
主存分为:随机存取存储器(RAM)和只读存储器(ROM)。主要区别是内存是属于RAM的,一旦断电之后,内存中的所有数据都将被清除掉,无法进行保存;而ROM在断电之后,仍然可以存储信息内容。
主存编址
由图可知三个存储器分别由一块芯片、两块芯片、两块芯片组成,以此类推。
(1)内存地址从 AC000H 到 C7FFFH,共有多少K个地址单元,需要对这两个十六进制数进行相减,由于是“到”,要包含 AC000H,所以再加 1 即可,所得结果是:1C000H(将其转换成K单位,要对结果除以 1024 )。将其转为十进制:( 0 × 16 ^ 0 + 0 × 16 ^ 1 + 0 × 16 ^ 2 + C × 16 ^ 3 + 1 × 16 ^ 4)/ 1024 = 112K。
(2)总容量为 112K × 16bit,需要 28 片存储器芯片,每片芯片有 16K 个存储单元,问该芯片每个存储单元存储多少位?
( 112K × 16bit )/( 28 × 16K × a )= 1,比值为 1 是因为这些地址单元是由 28 片芯片组成固定的空间,16 和 16 约掉,K 和 K 约掉,所以 112 / 28a = 1,解得 a = 4bit,即 4 位。
相联存储器
相联存储器是一种按内容访问的存储器,其工作原理就是把数据或数据的某一部分作为关键字,按顺序写入信息,读出时并行的将该关键字与存储器中的每一单元进行比较,找出存储器中所有关键字相同的数据字,特别适合于信息的检索和更新。
第八节 高速缓存 Cache
对程序员透明的意思是看不到的意思,而不是看得到。
虚拟存储器
虚拟存储器技术是将很大的数据分成许多较小的块,全部存储在外存中。运行时,将用到的数据调入主存中,马上要用到的数据置于缓存中,这样,一边运行一边进行所需数据块的调入/调出。对于应用程序员来说,就好像有一个比实际主存空间大得多的虚拟主存空间,基本层级为:主存一一缓存一一外存。与CPU一一高速缓存 Cache一一主存的原理类似。但虚拟存储器中程序员无需考虑地址映像关系,由系统自动完成,因此对于程序来说是透明(看不见)的。
Cache地址映射
高速缓存中的地址映像方法:直接映像、全相联映像、组相联映像。
1、直接映像:指主存的块与Cache块的对应关系是固定的。优点是地址变换简单,缺点是灵活性差、Cache块冲突率高。
2、全相联映像:允许主存的任一块可以调入Cache存储器的任何一个块的空间中。优点是Cache块冲突率低、灵活性好,缺点是访问速度慢、地址变换较复杂、成本太高。
3、组相联映像:是前两种方式的折衷方案,即组采用直接映像方式、块采用全相联映像方式。
发生块冲突从少到多的顺序:全相联映射-->组相联映射-->直接映射
Cache命中率
替换算法
替换算法的目的是使cache获得尽可能高的命中率,有以下四种:随机替换算法、先进先出算法、近期最少使用算法、优化替换算法
注:现代的计算机cache系统是分为了三个级别的,访问时先从第一层开始访问,直至三个级别的cache都被访问完全时才会访问内存
第九节 局部性原理
总的来说,在 CPU 运行时,所访问的数据会趋向于一个较小的局部空间地址内。(例如循环操作,循环体被反复执行)
时间局部性原理:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项。
空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问。
第十节 磁盘工作原理
磁盘结构
软盘,机械硬盘,都属于磁盘,不包含固态硬盘。磁盘的结构是一个环形的盘片,上面涂上特殊的材质用于保存数据,磁盘的结构中盘面保存数据,读取数据要用到专业的设备–磁头,读取时磁头定位移动到相应的磁道(存信息时是存到磁道是上面 )上,这过程消耗的时间称为寻道时间。然后是旋转延迟时间,也称为等待时间(等待读写的扇区转到磁头下方所用的时间)。
存取时间 = 寻道时间 + 等待时间 ( 平均定位时间 + 转动延迟时间 )
磁盘相关计算
假设某磁盘的每个磁道划分成11个物理块,每块存放1个逻辑记录。逻辑记录R0,R1,…,R9,R10存放在同一个磁道上,记录的存放顺序如下表所示:
如果磁盘的旋转周期为33ms,磁头当前处在R0的开始处。若系统使用单缓冲区顺序处理这些记录,每个记录处理时间为3ms,则处理这11个记录的最长时间为( );若对信息存储进行优化分布后,处理11个记录的最少时间为( )。
问题1选项 A.33ms B.336ms C.366ms D.376ms
问题2选项 A.33ms B.66ms C.86ms D.93ms
第一空分析:系统读记录的时间为33/11=3ms,对第一种情况:系统读出并处理记录R0之后,将转到记录R2的开始处,所以为了读出记录R1,磁盘必须再转一圈,需要33ms(30ms到R1起始位置,3ms读完R1,刚好转一圈)的时间。这样,处理11个记录的总时间应为366ms,因为处理前10个记录(即R0,R1,R2,…,R9)的时间为10×(33+3)ms =360 ms,读记录R10及处理记录R10时间为6ms,所以处理11个记录的总时间=360ms+ 6ms=366ms。
第二空分析:对于第二种情况,若对信息进行分布优化的结果如下所示:
从中可以看出,当读出记录R0并处理结束后,磁头刚好转至R1记录的开始处,立即就可以读出R1并处理,因此处理11个记录的总时间为:
11×(3ms(读记录)+3ms(处理记录))=11×6ms=66ms
故答案选择 C、B。
第十一节 计算机总线
总线分类
从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。
系统总线:又叫计算机内部总线,是板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行传输数据信息,CPU一次传输的数据与数据总线带宽相等)、地址总线(传送地址,决定系统的寻址空间)、控制总线(传送控制信号和时序信号,如读、写、片选、中断响应信号等)。代表的有ISA总线、EISA总线、PCl总线。
外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。
并行总线适合近距离高速数据传输,串行总线适合长距离数据传输,专用总线在设计上可以与连接设备实现最佳匹配。
总线计算:总线的时钟周期 = 时钟频率的倒数;总线的宽度(传输速率) = 单位时间内传输的数据总量 / 单位时间大小。(了解)
第十二节 系统可靠性分析
●可靠性:指一个系统对于给定时间间隔内、给定条件下无失效运作的概率。可以用MTTF/(1+MTTF)来度量,其中MTTF为平均无故障时间
●可用性:在给定时间点上,一个系统能够按照规格说明正确运作的概率。可以用MTBF/(1+MTBF)来度量,其中MTBF为平均失效间隔时间
●可维护性:实在给定使用条件下,再规定时间间隔内,使用规定的过程和资源完成维护活动的概率,可以用1/ (1+MTTR)来度量,其中MTTR为平均修复时间
(MTTF:Mean Time To Failure;MTTR:Mean Time To Repair;MTBF:Mean Time Between Failure)
系统中的各个子系统的可靠性均采用R1、R2、......、Rn表示;失效率均采用λ1、λ2、......、λn表示。
计算考法有两种:串联系统的可靠性(R)与失效率(λ)、并联系统的可靠性(R)与失效率(μ)
举例:
串联系统:
并联系统:
可靠性串并联系统举例:
第十三节 输入输出技术
程序控制(查询)方式:CPU 主动查询外设是否完成数据传输,效率极低。
程序中断方式:外设完成数据传输后,向 CPU 发送中断,等待 CPU 处理数据,效率相对较高。中断响应时间指的是从发出中断请求到开始进入中断处理程序:中断处理时间指的是从中断处理开始到中新处理结束。中断向量提供中断服务程序的入口地址。多级中断嵌套,使用堆栈来保护断点和现场。
DMA方式(直接主存存取): CPU 只需完成必要的初始化等操作,数据传输的整个过程都由 DMA控制器来完成,在主存和外设之间建立直接的数据通路,效率很高。在一个总线周期结束后,CPU 会响应 DMA 请求开始读取数据:CPU 响应程序中断方式请求是在一条指令执行结束时;区分指令执行结束和总线周期结束。
输入/输出处理机(IOP、通道):IOP 数据传送的方式包括字节多路方式、选择传送方式和数组多路方式。也是一种处理机,内部具有独立的处理系统,使数据的传输独立于 CPU。分为字节多路通道的传送方式(每一次传送一个通道的一个字节,多路通道循环) 和选择通道的传送方式(选择一个通道,先传送完这个通道的所有字节,再开始下一个通道传送)。
第十四节 差错控制
校验码的基本概念
检错:将错误检查出来
纠错:将错误检查出来的同时并进行纠正
要达到检错和纠错的目的,往往是需要加冗余信息进行实现。而在编码当中,往往是通过增大码距的方式进行实现。
码距及其作用
1.码距的概念:指整个编码系统中任意两个码字的最小距离,如A变化X个位得到B,则X就为码距,如:若使用2位长度的二进制编码,若以 A=11,B=00 为例,A,B 之间的最小码距为2
2.码距的作用:增大码距能够起到检错的作用,因为数据在传输的过程中如果链路出现了问题,那么将会使得接收到的二进制数发生变化,若码距过小,则很可能造成信息的混淆,增大码距就使得被改变的二进制数混淆信息的概率极大的降低;若码距再进行增大,则能够起到纠错的作用,因为数据链路出错的概率比较低,只能造成传输中极少二进制数的改变,我们可以根据该传输失真的二进制数中大部分二进制数的构成来进行推断,推断出结果就达到了纠错的目的。
注:在一个码组内为了检测e个误码,要求最小码距d应满足:d>=e+1
在一个码组内为了纠正t个误码,要求最小码距d应该满足:d>=2t+1
奇偶校验码(PC)
奇偶校验是一种简单有效的校验方法(可以检错,不能纠错)。在编码中增加一位校验位来使编码中 1 的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为 2 。
奇校验可以检测代码中奇数位出错的编码,但不能发现偶数位出错的情况,即当合法编码中的奇数位发生了错误时,编码中的 1 变成 0 或 0 变成 1,则该编码中 1 的个数的奇偶性就发生了变化,从而可以发现错误。
奇校验:被传输的有效数据中“1”的个数是奇数个,校验位填 “0”,否则填 “1”。
偶校验:被传输的有效数据中“1”的个数是偶数个,校验位填 “0”,否则填 “1”。
例如:奇校验 1101110(0),采用奇校验,“1” 的个数为奇数个,所以校验位填 “0”。
偶校验 1001110(0),采用偶检验,“1” 的个数为偶数个,所以校验位填 “0”。
循环冗余校验码(CRC)
循环冗余校验码由信息码n位和校验码k位构成。k位校验位拼接在n位数据位后面,n+k为循环冗余校验码的字长,又称这个校验码(n+k , n)码。
n位信息位可以表示成为一个报文多项式M(x),最高幂次是。约定的生成多项式G(x)是一个k+1位的二进制数,最高幂次是。将M(x)乘以,即左移k位后,除以G(x),得到的k位余数就是校验位。这里的除法运算是模2除法,即当部分余数首位是1时商取1,反之商取0。然后每一位的减法运算是按位减,不产生借位。
模2运算法
举例:
海明码校验(HC)
海明码的构成方法是在数据位之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错(可以检错和纠错)。其本质也是使用奇偶校验方式检验。
设数据位是n位,校验位是k位,则n和k必须满足:。
例:求信息1011的海明码
(1),确定校验码为3位:。因为海明校验码是放在2的幂次位上,所以插在位置1,2,4 中
把有用到的那几个信息位拿出来异或计算,如 的位数为 1,即,用到有7、5、3,则
= 1 xor 1 xor 1 = 1,以此类推。
1、对接收到的信息再次生成校验位。
2、重新生成的校验位与原来的校验位进行异或操作,哪位为1,说明哪位错了,取反即可。