第二章 计算机组成与结构体


计算机的硬件组成

运算器、控制器、存储器、输入设备、输出设备。

CPU (中央处理单元)由运算器、控制器、寄存器组和内部总线组成

功能:实现程序控制、操作控制、时间控制、数据处理功能。

 

运算器组成:(执行加减乘除、与或非比较)

1、算术逻辑单元ALU(对数据的算数和逻辑运算)

2、累加寄存器AC(运算结果或源操作数的存放区)

3、数据缓冲寄存器DR(暂时存放内存的指令或数据)

4、状态寄存器PSW(保存指令运行结果的条件码内容,如溢出标志)

 

控制器组成:(程序控制、时序控制)

1、指令寄存器IR(暂存CPU执行指令)

2、程序计数器PC(存放指令执行地址)

3、地址寄存器AR(保存当前CPU所访问的内存地址)

4、指令译码器ID(分析指令操作码)

 

二进制用0b表示  =》 0b0011

十六进制用0x或H表示  =》 0x18F 或 18FH

 

R进制转10进制:(位权展开法)

如:6进制5043 =》 3*6^0 + 4*6^1 + 0*6^2 + 5*6^3

十进制转R进制:(除以R倒取余数)下至上记录  左至右顺序

如:10进制200转6进制 =》 200/6=33...2 , 33/6=5...3 , 5/6=0...5 => 得532

 

m进制转n进制:先m进制转成10进制,10进制转n进制。

例外:2进制转8进制、2进制转16进制 可以直接转化

 

二进制转八进制:(每3位二进制数转化为  1位八进制数)

二进制数 01101有五位,前面补一个0就有六位,001 101。

001 = 1 , 101 = 1*2^0 + 0*2^1 + 1*2^2 = 5    =》 得八进制为:15

 

二进制转十六进制:(每4位二进制数转化为  1位十六进制数)

二进制数101101,补位得0010 1101。

0010 = 2, 1101 = 13 = D   =》 得十六进制为:2D

 

小数部分进制转化 暂略。

 

数的表示

机器数:数值在计算机中的表示形式,使用二进制计数制,数的符号用0和1表示,小数点隐含,不占位置。

机器数分为 带符号数 和 无符号数。带符号数最高位为符号位,正数符号位为0,负数符号位为1。

 

数的编码方式:(带符号数有以下编码方式)

原码:一个数的正常二进制表示,最高位表示符号,数值0的源码有两种形式:+0(0 0000000)和 -0(1 0000000)

反码:正数的反码=原码 , 负数的反码在符号位的基础上按位取反。0的反码也有两种形式:+0(0 0000000)和 -0(1 1111111)

补码:正数的补码=原码,负数的补码 = 反码 +1 ,若有进位则产生进位,0的补码只有一种:+0 = -0 = (000 0000)

移码:无论正数还是负数,将该原码的补码的首位(符号位)取反得到移码

例子:数的机器子长为8,

45的原码、反码、补码 = 0010 1101、移码 1010 1101

-45的原码 = 1010 1101、反码 = 1101 0010、补码 = 1101 0011、移码 = 0101 0011

 

浮点数表示

N = F * 2^E,E为阶码,F称为尾数。类似10进制科学计数法。

二进制如:101.011 = 0.101011 * 2^3

阶码为带符号的纯整数,尾数为带符号的纯小数,符号占最高位(正数0负数1)

浮点数所能表示的数值范围由阶码确定,所表示的精度由尾数确定。

例子:带符号位的1.0xxxxx 或 0.1xxxxx

 

浮点数的运算:

1、对阶(使两个数的阶码相同,小阶向大阶看齐,较小的阶码增加几位,尾数就右移几位)

2、尾数计算(相加,若是减运算,则加负数)

3、结果规格化(尾数表示规格化,带符号尾数转换为1.0xxxx 或 0.1xxxx)

 

算术运算和逻辑运算:

数与数的运算:加减乘除、对于二进制还有逻辑运算。

逻辑与&&:一个为0,结果为0,一个为1,结果为1。

逻辑或||:一个为1,结果为1,两个都为0,才为0。

异或:同 0 ,非 1

逻辑非!:0的非是1,1的非是0

逻辑左移<<:二进制数整体左移,高位若溢出,则舍去,低位补0。

逻辑右移>>:二进制数整体左移,低位若溢出,则舍去,高位补0。

 

校验码:

码距:从A码到B码转换所需要改变的位数称为码距,一般来说码距越大,越利于纠错和检错。

(1)单个编码A:00 ,码距为1;

(2)在两个编码中,A:00要转换为B:11,码距为2。

奇偶校验码:在编码中增加1位校验位来使编码中1的个数变为奇数(奇校验)或者偶数(偶检验),从而使码距变为2。

例子:编码 01101,使用奇校验,编码成011010。(规则是1的个数为奇数个)

偶检验同理,只是编码中有偶数个1,奇偶校验只能检1位错,并且无法纠错。

 

循环冗余校验码CRC:

CRC只能检错,不能纠错,其原理是找出一个能整除多项式的编码,将原始报文除以多项式,将所得的余数作为检验位加在原始报文之后,作为发送数据发给接收方。

 

CRC由两部分组成,左边为信息码(原始数据),右边为校验码,检验码是由信息码产生的,校验码位数越长,校验能力越强。求CRC编码时,采用的是模2运算(按位运算,不发生借位和进位)。

例子:原始报文为:11001010101,生成多项式为:x^4+x^3+x+1(得11011,根据是否有x^k得来)

(1)首先根据多项式得出除数11011,在原始多项式后面加上多项式最高指数个数个0,即4个0

(2)和除数进行模2除法(同0非1),被除数一直上1,最终得出四位的余数为0011。

(3)最终编码为11001010101 0011,然后发送出去。

(4)接收方将收到的数据110010101010011与多项式的11011进行模2运算,若余数为0,说明校验正确,数据传输正确。

 

海明校验码:

海明码:本质也是利用奇偶性来检错和纠错的检验方法,构成方法是在数据位之间确定的位置上插入k个校验位,通过扩大码距实现检错和纠错。

设数据位是n位,校验位是k位,则n和k必须满足:2^k-1 >= n+k

例:求信息1011的海明码

(1)校验位的位数和具体的数据位的位数之间的关系:所有位都编号,从最低位编号开始,从1开始递增,校验位处于2的n次方中,即处于第1,2,4,8,16,32,...位上,其余位才能填充真正的数据位。

(2)若信息数据为1011,则第1,2,4位为校验位,第3,5,6,7位为数据位,用来从低位开始存放1011。

(3)每一位校验码的计算公式:

1、将信息位拆分为二进制表示方式,如7=4+2+1,由第4校验位(r2)、第2校验位(r1)、第1校验位(r0)共同校验,同理,6=4+2,5=4+1,3=2+1

2、2^n都是校验位,可知,第4位校验位校验第7 6 5三位数据位,因此第4位校验位r2等于这3位数据位的值得异或。(第2校验位和第1校验位原理同上)。

3、计算完成后结果为:1010101。

 

检错和纠错原理:

(1)接收方接收到海明码后,会将每一位校验位与其校验的位数分别异或,

如果是偶校验,那么运算结果应该全为0,如果是奇校验,应该全为1,才是正确的。

假设是偶校验,且接收到的数据为1011101(第4位出错),此时,运算的结果为:

这里不全为0,表明传输过程有误,并且按照r2r1r0排列为二进制100,这里指出的就是错误的位数,表示第100,

发现错误位置的方法就是二进制100转换成十进制4,就是第4位出错,纠错方法就是将该位逆转。

 

计算机体系结构分类

Flynn分类法:

(1)SISD 单指令流单数据流,

(2)SIMD 单指令流多数据流,各处理器以异步的形式执行同一条指令,如:并行处理机、

(3)MISD 多指令流单数据流,被证明不可能,

(4)MIMD 多指令流多数据流,

指令流对应控制部分,数据流对应处理器。

 

计算机指令:

计算机指令的组成:由操作码和操作数两部分组成。

操作码:要完成的操作

操作数:参加运算的数据及其所在的单元地址

计算机指令执行过程:取指令--分析指令--执行指令三个步骤:

(1)将程序计数器PC中的指令地址取出,送入地址总线,

(2)CPU依据指令地址去内存中取出指令内容存入指令寄存器IR,

(3)由指令译码器进行分析,分析指令操作码,

(4)执行指令,取出指令执行所需的源操作数。

 

指令寻址方式:

(1)顺序寻址方式,当执行一段程序时,是一条指令接着另一条指令地顺序执行

(2)跳跃寻址方式,下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出。程序跳跃后,按新的指令地址开始顺序执行。因此程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。

 

指令操作数的寻址方式:

(1)立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身。

(2)直接寻址方式:指令的地址字段中直接指出操作数在主存中的地址。

(3)间接寻址方式:指令地址字段所指向的存储单元中存储的是操作数的地址。

(4)寄存器寻址方式:指令中的地址码是寄存器的编号。

 

指令系统:

(1)CISC(复杂指令系统),指令数量多,使用频率差别大2,8,可变长格式,寻址方式支持多,微程序控制技术,兼容性强。

(2)RISC(精简指令系统),指令数量少,使用频率接近,定长格式,大部分单周期指令,寻址方式少,增加了通用寄存器,采用硬布线逻辑控制为主,适合采用流水线,优化编译,有效支持高级语言。

 

指令流水线:

指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段。

 

流水线相关计算:

流水线周期:(一条指令开始到下一条指令的最晚开始时间)指令分成不同执行段,其中执行时间最长的段为流水线周期。

流水线执行时间:1条指令总执行时间 +(总指令条数-1)* 流水线周期。

流水线吞吐率:总指令条数 / 流水线执行时间

流水线加速比:不使用流水线总执行时间 / 使用流水线总执行时间

注意:1秒=10^9纳秒,k段流水线,时间t,那么1条指令总执行时间为kt。

 

超标量流水线技术:常规流水线是度为1的,即每个流水线阶段只执行一个部分,当度大于1,就是超标量技术。

当度为3时,相当于3条流水线并行执行,即取指、分析、执行每个阶段都同时处理3条指令,因此,当题目提到度的概念时,计算时需要将:指令条数=指令条数 / 度,然后再套流水线执行时间的公式。

 

存储系统

两级存储:Cache-主存,主存-辅存(虚拟存储体系)

局部性原理:在cpu运行时,所访问的数据会趋向于一个较小的局部空间地址内。

时间局部性原理:相邻的时间里会访问同一个数据项。

空间局部性原理:相邻的空间地址会被连续访问。

 

高速缓存Cache

高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,内容是主存内存的副本拷贝,对于程序员来说是透明的。

Cache由控制部分和存储器组成,存储器存储数据,控制部分判断cpu要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换。

 

地址映射:在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储器地址,这种地址的转换称为地址映像,由硬件自动完成映射,分为以下三种:

(1)直接映射:将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中块的对应关系是固定的,也即二者块号相同才能命中,最容易发成冲突。

 

(2)全相联映像:同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。最不容易发生块冲突的映像方式。

 

(3)组组相连映像:前面两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,即主存中组号与Cache中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两个组内的所有块可以任意调换。

 

Cache置换算法:

(1)随机算法。简单地根据一个随机数,选择一块替换掉。

(2)先进先出算法。按调入Cache的先后决定淘汰的顺序,在需要更新时,将最先进入cache的块作为被替换的块。

(3)近期最少使用LRU,把CPU近期最少使用的块作为被替换的块。随时记录cache中各块使用情况。

(4)最不经常使用页置换LFU,置换引用计数最小的页,LFU复杂度以及计数器规模都比比LRU大。LRU只关注近期访问情况,而LFU会统计累计访问次数作为淘汰的依据。

 

主存编址

地址编号从80000H到BFFFFH且按字节编址的内存容量为()KB,若用16K*4bit的存储器芯片构成该内存,共需()片。

1、1K = 1024 ,1Byte字节 = 8bit位,内存单元个数*内存单元大小。

内存单元个数 = 末地址 - 首地址 + 1。

C0000H - 80000H = 40000H,按字节编址 = 每个内存单元占1字节,按双字节编址则*2。

40000HB * 1B =  4*16^4 = 4 * (2^4)^4 = 4*2^16 = 2^18 B = 2^8KB ,( 2^10 = 1024)

2、16K*4bit = 8KB = 2^13B ,2^18 / 2^13 = 32

 

磁盘结构:

磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区中。

磁头首先要寻找到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,会产生寻道时间和等待时间。

存取时间 = 寻道时间 + 等待时间(平均定位时间+转动延迟)

注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。

 

 

总线结构:

任何连接两个以上电子元器件的导线都可以称为总线。通常分为以下三类:

内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。

系统总线:板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数)

地址总线:系统可管理的内存空间大小

控制总线:传送控制命令,ISA总线、EASI总线、PCI总线。

外部总线:设备一级的总线,微机和外部设备的总线,RS232(串行总线)SCSI(并行总线)USB(通用串行总线)

串行总线:适合长距离低速数据传输

并行总线:适合短距离高速数据传输

半双工/全双工:同一时间只有1个还是两个方向上数据传输。

 

系统可靠性分析:

平均无故障时间MTTF = 1/失效率

平均故障修复时间MTTR = 1/修复率

平均故障间隔时间MTBF = MTTF + MTTR

系统可靠性 = MTTF / (MTTF + MTTR) * 100%

 

串联系统:一个设备不可靠,整个系统奔溃:R = R1 * R2 * ... * Rn

并联系统:所有设备都不可靠,整个系统奔溃(先计算不可靠时间):R = 1- (1 - R1)*(1 - R2)* ... *(1-Rn)

混合系统:划分串联、并联。

 

 例题:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM