第一章
1、R进制:逢R进一
二进制:使用数字”2“来表示。如:(10)2
八进制:使用数字“8”或者使用字母“O"来表示。如:(25)8 或者 25O
十进制:使用数字“10”或者字母“D”来表示。如:(89)10 或者 89D
十六进制:10 ~ 15分别使用A~F来表示;使用数字“16”或者字母“H"来表示。如:(A1B4)16 或者 A1B4H
2、进制转换
R进制转十进制:按权展开(本位数字和该位的位权乘积的代数和)
二进制转十进制
eg:(111010)2转换成十进制
(111010)2 -------- 0 * 20 + 1 * 21+ 0 * 22 + 1 * 23 + 1 * 24 + 1 * 25 = (58)10
十进制转换成二进制
法1:除2取余,逆序排列:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
eg:(58)10转换成二进制
58/2=29 ===余0
29/2=14 ===余1
14/2=7 ===余0
7/2=3 ===余1
3/2=1 ===余1
所以:(58)10转换成二进制的结果是:(111010)2
法2:拆分法:把待转换的十进制数拆分成多个二的次方项相加。转换后的二进制数有(二的最高次幂+1)位,从右往左,从0开始到最高次幂的数。转换后存在幂指数表示的位置都用1表示,其他位置用0表示。
eg:(58)10转换成二进制
58=32+16+8+2=25+24+23+21
所以:(58)10转换成二进制的结果是:(111010)2
二进制转八进制(3个二进制位转换成1个八进制位)
从右往左,3个二进制数为一组。判断位数是否足够,如果不够,则在左边添加0补齐。分别计算出每一组的值,把得到的结果拼接起来就是对应的八进制。
eg:(1101111)2转换成八进制
1101111 ----三位一组,补全位数----- 001 101 111 ----三位为一组,计算每组的值---- 1 5 7
所以:(1101111)2转换成八进制的结果是:(157)8
八进制转换成二进制(一个八进制位可转换成三位二进制位)
把八进制的每一位都分别使用三位二进制来表示,然后把得到的结果拼接起来就是对应的二进制数。
eg:(235)8转换成二进制数
2 ---- 010;3 ---- 011;5 ---- 101
所以:(235)8转换成二进制的结果是:(10011101)2
二进制转十六进制(4位二进制转换成1位十六进制)
从左往右,4个二进制位为一组。判断位数是否足够,如果不够,则在 左边添加0补齐。分别计算出每一组的值,把得到的结果拼接起来就是对应的十六进制数。
eg:(11001011101)2转换成十六进制
11001011101 ----四位一组,补全位数----- 0110 0101 1101 ----四位为一组,计算每组的值---- 6 5 D
所以:(11001011101)2转换成十六进制的结果是:(65D)H
十进制转换成其他进制时,先把十进制转换成二进制,再用二进制去转换成对应的目标进制。
3、原码、反码、补码
数值 1 | 数值 -1 | 1+(-1)=0 | |
---|---|---|---|
原码 | 00000001 | 10000001 | 10000010=-2 |
反码 | 00000001 | 11111110 | 11111111=0 |
补码 | 00000001 | 11111111 | 00000000=0 |
一个数在计算机中的二进制表示形式,叫作这个数的机器数。机器数是带符号的,在计算机中用一个数的最高位(从左往右第一位)作为符号位,正数为 0,负数为 1。
原码:符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。
正数表示:原码、反码和补码的正数表示都一样
负数表示:原码数值位取反得到反码;反码加1得到补码。
移码(增码):符号位取反的补码
数据位不参与原码、反码、补码的转换。
原码表示0可分为:00000000或者是10000000
反码表示0可分为:00000000或者是11111111
所以:计算机中存储一个数使用的是补码来表示。补码的每个编码方案和数值都能一一对应。
定点整数 | 定点小数 | |
---|---|---|
原码 | -(2n-1-1)~2n-1-1 | -1<X<1 |
反码 | -(2n-1-1)~2n-1-1 | -1<X<1 |
补码 | -2n-1~2n-1-1 | -1<=X<1 |
定点小数和定点整数的个数都相同:最大值-最小值+1
4、逻辑运算
与:全真为真
0+0=0,0+1=0,1+0=0,1+1=1
0∧0=0,0∧1=0,1∧0=0,1∧1=1
或:全假为假
0+0=0,0+1=1,1+0=1,1+1=1
0∨0=0,0∨1=1,1∨0=1,1∨1=1
非:取反
!0 = 1,!1=0
异或:相同为假
0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0
5、总线
各部件通过总线系统来交换数据信息
微型计算机通过系统总线将各部件连接到一起,实现了微型计算机内部各部件间的信息交换。
总线:数据总线、地址总线、控制总线
-
数据总线 DB: 用于传送数据信息。
-
地址总线 AB:用来传送地址的,地址总线的位数决定了 CPU 可直接寻址的内存 空间大小。一般来说,若地址总线为 n 位,则可寻址空间为 2 n字节。
-
控制总线 CB :用来传送控制信号和时序信号。
6、CPU结构
冯诺依曼结构:计算机由运算器、控制器、存储器、I/O设备组成
运算器:通常是由 ALU(算术/逻辑单元,包括累加器、加法器等)、通用寄存器(不包含地址寄存器)等组成。
算数逻辑单元ALU:进行算数运算和逻辑运算
累加寄存器AC:暂存计算过程中的中间结果或者操作数
数据缓冲寄存器:用来暂时存放由内存储器读出的一条指令或一个数据字。反之,当向 内存存入一条指令或一个数据字时,也暂时将它们存放在数据缓冲寄存器中。
状态条件寄存器PSW:保存由算术指令和逻辑指令运算的状态和程序的工作方式。
控制器:包含 程序计数器(PC)、指令寄存器(IR)、指令译码器、时序部件等。
程序计数器PC:存放下一条指令的地址
指令寄存器IR:保存当前正在执行的一条指令
指令译码器:指令中的操作码经过指令译码器译码后,即可向操作控制器发出具体操作 的特定信号
时序部件:为指令执行产生时序信号
7、寻址方式
指令系统是中央处理器所有指令的集合
指令 = 操作码 + 地址码 操作码:确定指令的操作类型;地址码:要进行操作的数据的地址
基础:寻址方式
寻址:寻找操作数的地址
采用不同的寻址方式,是为了扩大编程灵活度
寻址方式:
立即寻址:通常直接在指令的地址码部分给出操作数。
内存寻址:
变址寻址:设置一个变址寄存器,把指令中的基地址和变址寄存器中的地址相加,得到实际的地址。再根据该地址去主存中找到对应的操作数。
直接寻址:一次访存就能拿到操作数。根据地址码中的地址,直接在主存中找到对应的操作数。
间接寻址:两次或两次以上访存才能拿到操作数。根据指令地址码中的地址,在主存中找到对应的信息(该信息也是一个地址),根据该地址找到实际的操作数。
寄存器寻址:
寄存器直接寻址:操作数在寄存器中。直接通过寄存器得到需要的数。
寄存器间接寻址:操作数在内存中,通过寄存器得到操作数的地址,再根据该地址从内存中找到该操作数。
8、CISC和RISC
CISC:复杂指令系统 偏向用户编程
RISC:精简指令系统 偏向机器高效性
指令系统类型 | 指令 | 寻址方式 | 实现方式 |
---|---|---|---|
CISC | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术 |
RISC | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器 | 支持方式少 | 增加通用寄存器,硬布线逻辑控制为主,适合流水线 |
9、Flynn分类
体系结构类型 | 结构 | 关键特性 | 代表 |
---|---|---|---|
单指令流单数据流 SISD | 控制部分:一个 处理器:一个 生存模块:一个 | 单处理器系统 | |
单指令流多数据流 SIMD | 控制部分:一个 处理器:多个 生存模块:多个 | 各处理器以异步的形式执行同一条指令 | 并行处理机 阵列处理机 超级向量处理机 |
多指令流单数据流 MISD | 控制部分:多个 处理器:一个 生存模块:多个 | 被证明不可能,至少是不切实际 | 目前没有 |
多指令流多数据流 MIMD | 控制部分:多个 处理器:多个 生存模块:多个 | 能够实现作业、任务、指令等各级全面并行 | 多处理机系统 多计算机 |
10、流水线
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。即可以同 时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
以一条指令可分为:取指、分析、执行,时间分别为:t1,t2,t3为例
流水线周期 t 为执行时间最长的那一部分
建立流水线的时间:t1+t2+t3
n条流水线的执行时间:Tk = (t1+t2+t3)+(n-1)*t
流水线技术指标:
-
实际吞吐率:Tp=n/Tk n:指令条数 Tk:流水线时间
-
理论最大吞吐率:Tp=1/t t:周期
-
加速比:S=Ts/Tk Ts:不使用流水线执行完指令需要的时间 Tk:流水线时间
eg:若指令流水线把一条指令分为取指、分析、执行三部分,且三部分的时间分别为:2ns,2ns,1ns。则流水线周期是?100条指令全部执行完,需要多长时间?实际吞吐率、最大吞吐率、加速比分别是多少?
解:
1.周期:t=2ns
2.流水线时间:Tk = (t1+t2+t3)+(n-1)*t = (2ns+2ns+1ns)+(100-1) * 2ns = 203ns
3.实际吞吐率:Tp=n/Tk = 100/203ns
4.理论吞吐率:Tp=1/t = 1/2ns
5.不使用流水线的时间:Ts = 100* (2ns+2ns+1ns) = 500ns
加速比:S = Ts/Tk = 500ns/203ns = 500/203
11、存储系统结构
主存:随机存储器RAM(掉电丢失)和只读存储器ROM(掉电不丢失)
- RAM:随机存储器,可读可写,数据掉电丢失。静态RAM(SRAM):常用在cache中;动态RAM(DRAM):常用在内存中
- ROM:只读存储器,数据掉电不丢失
缓存:cache告诉缓冲存储器,缓和CPU和主存之间的速率矛盾
虚拟存储器:主存-辅存
速度:寄存器>cache>主存>磁盘
12、存储方式
存储中常用的存储方式有:顺序存储、直接存储、随机存储、相联存储
顺序存储:存储器的数据是以记录的形式进行组织,对数据的访问必须按特定的线性顺序进行。如:磁带
直接存储:共享读写装置,但每个记录都有唯一的地址标识,共享的读写装置可以直接移动到数据块所在的位置进行访问。访问花费的时间和数据所在位置有关。如:磁盘
随机存取:存储器的每个存储单元都有唯一的地址和读写装置,系统可以在任意时间内对任意一个存储单元的数据进行访问,和先前的访问序列无关。如:主存储器、内存
相联存储:根据内容来选择要读写的存储单元。如:cache
13、存储容量计算
实际的存储器容量是由一片或多片存储芯片配以控制电路构成。其容量为 W * B,W是存储单元(word,即字)的数量,B表示每个word由多少bit(位)组成。如:某一芯片规格为 w * b ,则组成 W * B 的存储器需要(W/w)* (B/b)个芯片。
主存储器(内存)采用随机存储方式存储,需要对每个存储单元进行编址。而在主存储器中,通常以word为单位进行标识,即每个字一个地址,通常采用16进制表示。
表示存储容量相关的术语:
位:bit,一个二进制表示1bit
字节:B,1B = 8bit
字:实际表示CPU一次处理的二进制位数。通常为字节的整数倍。对应字长有8/16/32/64
计算机中:210 = 1024 = 1K
eg:按字节编址,地址从A4000H – CBFFFH,则表示有(CBFFFH - A4000H)+1个字节,即 28000H 个字节,也就是163840个字节,等于160KB。
cache:
如果cache的访问命中率为h,cache的访问周期时间是t1,主存储器的访问周期时间是t2,整个系统的平均访问时间为:T = h * t1 +(1-h) * t2
cache的命中算法:
- 先进先出算法
- 最近最少使用算法
- 随机算法
14、RAID技术
RAID:独立磁盘冗余阵列
CPU发展速度远远快于磁盘发展技术,所以造成了性能瓶颈。因此使用RAID技术来提升磁盘技术。把多个独立的物理硬盘组合成一个虚拟的逻辑硬盘,从而提供更大的容量,更高的性能,更高的数据容错功能。
RAID技术思想:条带化。通过条带化技术,加上校验技术、镜像技术…提升磁盘性能
条带化技术:把一条连续的数据分布式的存放在各个磁盘中,读取的时候可以从多个磁盘同时读取。
条带宽度:在一个RAID组中的磁盘数
条带深度:单块的分块大小
条带大小 = 条带宽度 * 条带深度
三大特点:
-
通过对硬盘上的数据进行条带化,实现对数据成块存取,减少硬盘的机械寻道时间,提高数据存取速度
-
通过对一阵列中的几块硬盘同时读取,减少硬盘的机械寻道时间,提高数据存取速度
-
通过镜像或存储奇偶校验信息的方式,实现对数据的冗余保护
RAID 0
采用数据分段技术,将所有硬盘构成一个磁盘阵列,可以同时对多个硬盘做读写操作,但不具备备份及容错能力。价格便宜,磁盘使用率最高,写入速度快,可靠性最差。
磁盘利用率:100%,所有磁盘都存放用户数据
当一块磁盘挂掉,其他磁盘都无法读取
所需成员磁盘数 | 最少2个 |
---|---|
优点 | 极高的读写效率; 不存在校验,不用太多CPU资源; 设计、使用、配置简单 |
缺点 | 无冗余,不能用于对数据安全性要求高的环境 |
适用领域 | 视频生成和编辑、图像编辑等需要大的传输带宽的操作 |
RAID 1
采用硬盘镜像技术,把一个硬盘内容同步备份到到另一个硬盘。具备备份容错能力。效率不高,可靠性高。
两个磁盘互为镜像,当其中一个挂掉后,可以从镜像磁盘恢复。
磁盘利用率:50%,两个磁盘存放一样的内容
所需成员磁盘数 | 2N (N >=1) |
---|---|
优点 | 100% 数据冗余,提供最高的数据保障; 理论上可以实现2倍的读取效率; 设计使用比较简单 |
缺点 | 开销大,空间利用率只有50%; 在写性能方面提升不大 |
适用领域 | 财务、金融等高可靠高安全的数据存储环境 |
RAID 3
采用特定奇偶校验盘的数据分段技术,将用于奇偶校验的数据存放到特定磁盘中,具备数据容错能力,可靠性较好。
当单个硬盘失效时,会产生I/O瓶颈效应
磁盘利用率:(n-1)/n
无论往哪个磁盘中存放数据,都会向校验磁盘写入校验数据。校验盘始终处于工作状态,会拖慢RAID的性能。
RAID3中允许一块磁盘坏掉。校验数据P0是根据D00、D01、D02计算出来的,当某个磁盘坏掉后,可以根据另外三个磁盘来恢复
RAID 5
解决校验盘中I/O性能瓶颈的问题
采用分布式就校验的数据分段技术,将用于奇偶校验的数据存放到各个硬盘中,具有数据容错能力,可靠性好
校验值分散在各个盘的不同位置,相当程度的分散了负载,有较好的性能
硬盘利用率:(n-1)/n
允许一个磁盘坏掉
所需成员磁盘数 | 最少3个 |
---|---|
优点 | 较高读性能; 中等写性能; 校验信息分布式存取,避免写操作瓶颈 |
缺点 | 控制器设计复杂; 磁盘重建过程复杂 |
适用领域 | 文件服务器、email服务器、web服务器等环境 |
RAID 6
允许2个磁盘同时坏掉,有2个独立的校验
磁盘利用率:(n-2)/n
RAID 10
RAID 1 + RAID 0 先做镜像,再条带化
允许不是互为镜像的两个磁盘同时坏掉
所需成员磁盘数 | 2N (N >= 2) |
---|---|
优点 | 读性能高; 写性能较好; 数据安全性好,允许同时n个磁盘失效 |
缺点 | 空间利用率只有50%; 开销大 |
适用领域 | 高可用性、高安全性的数据库应用 |
RAID 10 和RAID 5 的比较
RAID 10 和RAID 5 的比较 | |
---|---|
性能 | RAID 10 > RAID 5 |
可靠性 | RAID 10 > RAID 5 |
数据重构 | RAID 10 > RAID 5 |
利用率/成本 | RAID 10 < RAID 5 |
关键应用 | 使用RAID 10 |
非关键应用 | 使用RAID5,如:备份服务器、远程灾备 |
RAID2.0 优势
- 快速重构:在重构的过程中,所有的磁盘都会参与。重构的速度更快
- 自动负载均衡:采用虚拟化技术,把物理磁盘虚拟化,可以让数据均与分散的存储到各个磁盘中。实现负载均衡
- 系统性能提升
- 自愈合:自动校验恢复
13、系统的可靠性
失效率:单位时间内故障的概率
平均无故障时间MTBF:
平均故障修复时间MTTR:
可用性:
串联系统:
假设一个系统由n个子系统构成,当且仅当所有子系统都正常工作时,系统才能正常工作。设系统各个子系统的可靠性分别用 R1,R2,…,Rn表示, 则系统的可靠性 R = R1 * R2 * … * Rn
并联系统:
假如一个系统由 n 个子系统组成,只要有一个子系统能够正常工作,系统就能正常工作。设系统各个子系统的可靠性分别用 R1,R2,…,Rn表示, 则系统的可靠性:R = 1 - ((1 - R1) * (1 - R2)* …* (1 - Rn))
章节练习
1、(123)10转换成二进制为:1111011
2、若某整数的16位补码为FFFFH,则该数的十进制为:-1
3、计算机中常用原码、反码、补码和移码来表示数据,其中正负0编码相同的是:补码和移码
4、某机器字长为n位的二进制可以用补码表示(A)个有符号定点小数。
A. 2n B. 2n-1 C. 2n -1 D.2n-1 +1
析:定点整数和定点小数的个数都是一样的。补码的取指范围为:-2n-1~2n-1-1。即:2n-1-1 - 2n-1 +1 = 2n
5、在机器指令的地址字段中,直接指出操作数本身的寻址方式称为:立即寻址
6、Flynn分类法基于信息流特征将计算机分成4类,其中:MISD 只有理论意义而无实例。
7、流水线的吞吐率是指单位时间流水线处理的任务数,如果各段流水的操作时间不同,则流水线的吞吐率是(C)的倒数。
A.最短流水段操作时间 B.各段流水的操作时间总和 C.最长流水段操作时间 D.流水段数诚意最长流水段操作时间
8、在程序执行过程中,cache与主存的地址映射是由 硬件自动 完成的
9、RAID使用冗余技术实现高可靠性,其中RAID1的磁盘利用率为 100% 。如果用4个盘组成RAID3,则磁盘利用率为 75%
10、存储系统的RAID故障恢复机制为数据的可靠保障,请简要说明RAID2.0较传统RAID在重构方面有哪些改进。
答:在重构的过程中,所有的磁盘都会参与重构过程。重构的速度更快,降低了故障率