目录
计算机基础
1、进制转换
浮点数的表示范围: ~ ,M表示尾数,R表示阶码
浮点数相加。首先要对阶,小阶向大阶看齐,尾数右移,然后进行位、尾数处理
-
阶码决定范围,常用移码表示
-
尾数决定精度,补码原码表示
规格化处理:是指对不满足规格化的尾数进行处理,当尾数可能发生溢出时(尾数绝对值>1),应该调整阶码,M的范围[0.5,1)
溢出处理:尾数相加不是真正的溢出,因为可以向右规格化处理,阶码溢出时真正的溢出。阶码下溢出,结果为0,阶码上溢出(阶码向右规格化处理时发生),溢出标志会置1
定点数和浮点数表示时,小数点表示一个约定的范围,不占位数
十进制整数转二进制 | 十进制小数转二进制 |
---|---|
除2,取余数,直到商0 第一次相除,得到最低位 | 乘积小数部分乘2取整 第一次相乘得到最高位 |
53%2(1)—26%2(0)—13%2(1)—6%2(0)—3%2(1)—1%2(1) (53) — 110101 | 0.125 x 2 = 0.25(0)—0.25 x 2(0)—0.5 x 2 —1.0(1) (0.125) — (0.001) |
二进制转八进制 | 八进制转二进制 |
---|---|
整数部分从右到左,三位并一位,左侧补0 小数部分从左到右,三位并一位,右侧补0 | 一位变三位 |
码制 | 定点整数 | 定点小数 |
---|---|---|
原码和反码 | ~ (-0、+0) | -(1-2-{n-1}-1) ~ 1 - 2-{n-1} |
补码和移码 | ~ (0此时有唯一编码+0) | -1 ~ 1-2-{n-1}(共有2n个数) |
正数的原码= 反码 = 补码,负数的补码 = 原码(除符号位)按位取反 + 1
最高位是符号位,0表示正数,1表示负数
为何要用补码表示和运算数据:简化计算机运存部件的设计(设计补码的目的是让符号位能与有效值一起参与运算,从而简化运算)
16位补码为FFFFH,对应的十进制数是 -1
逻辑运算 | 符号 | 法则 |
---|---|---|
或(并集) | + 或 | 有1则1,无1则0 |
与(交集) | · 或 | 有0 则0,全1则1 |
非 | ~ | 取反 |
异或 | ⊕ 或 xor | 相同0,不同则1 |
移位运算:
一个数左移n位,相当于乘 ,一个数右移n位,相当于除
2、常见编码
海明码利用奇偶性,可以检错和纠错:
循环冗余码:模2运算来构件校验位
哈夫曼编码(最优二叉树):带权节点路径长度最短
奇/偶校验:以二进制中1的个数是奇数还是偶数,无法进行错误校正
3、计算机体系结构
冯诺依曼体系结构:运算器、控制器、存储器、输入/输出设备,5大部分组成
CPU = 运算器 + 控制器 + 寄存器组 + 内部总线(不包括I/O总线)
主机 = CPU + 内存
外设:其他部件
程序计数器PC
-
程序开始执行前,将程序的起始地址送入PC,该地址在程序加载到内存时决定,因此PC的内容是程序第一条指令的地址。
-
执行指令时,CPU自动修改PC内容,使其保持的总是将要执行的下一条指令的地址,由于大多数指令顺序执行,所以修改过程为PC+1
-
当遇到转移指令时,后继指令的地址根据当前指令的地址 + 偏移量得到,或者根据转移指令直接转移到目标地址(常用于跟踪指令地址)
-
编写汇编语言时,程序员可以访问的是PC(因为程序员编写程序,控制的是程序的执行过程),而指令寄存器IR对用户完全透明
-
指令和数据均存放在内存中,通常由PC(程序计数器)提供存储单元地址取出的是指令,由指令地址码部分提供存储单元地址取出的是数据。因此通过不同的寻址方式来区别指令和数据
控制器 | 特点 |
---|---|
程序计数器 PC | 指向下一条指令的地址,CPU去主存取得指令,有自动增加功能 |
指令寄存器 IR | 保存当前正在执行的指令,位数取决于字长 计算机指令包括操作码和地址码,执行一条指令时,操作码和地址码都应该放入指令寄存器IR |
地址寄存器 AR | 存放CPU当前访问的内存单元 |
数据寄存器 DR | 包含累加器AR、暂存算术运算或逻辑运算的操作数和结果 节省读取数据时,所占用的总线和访问存储器的时间 |
指令译码器 | 对获取指令进行译码 |
寻址方式 | 说明 |
---|---|
立即寻址 | 直接给出操作码 |
直接寻址 | 直接给出操作码的地址或寄存器号(寄存器寻址) |
间接寻址 | 给出指向操作码地址的地址 |
变址寻址 | 给出地址,需要与特定的地址值相加,得到操作码地址 |
CISC | RISC |
---|---|
指令多,复杂 | 指令少,不丰富 |
寻址方式丰富 | 寻址方式少,简化逻辑 |
编程容易,灵活 | 编程体量大,源程序长 |
机器指令系统越来越庞大 芯片设计复杂度高 | 适合硬布线逻辑来执行 |
RISC的三种流水线
-
超流水线技术:时间换空间,增加流水线级数、提高主频,在相同时间执行更多机器指令
-
超标量技术:空间换时间
-
超长指令字:VLIW:(Very Long Instruction Word)一种非常长的指令组合,它把许多条指令连在一起,增加了运算的速度
4、流水线
-
串行:每条指令顺序执行,一条执行完才能执行下一条
-
并行流水线:提高了利用率和吞吐率,但是对于执行单指令执行来说,并没有
-
区别采用异步控制,明显提速的同时,增加阻塞概率,所以不会明显提高整体性能
-
取决于最长的指令周期
-
流水线时间计算 = 最长的t1 (n -1 )+(t1 + t2 + t3)
-
流水线吞吐率 = 或最长流水段操作时间的倒数
-
5、存储器
存储系统 | 存储结构 |
---|---|
CPU寄存器 | 通用寄存器 |
主存 | Cache高速缓存 主存 |
辅存 | 磁盘 可移动存储 |
相联存储器CAM(Content Addressable Memory):按内容访问,速度非常快
BIOS(基本输入输出系统,保存计算机最重要的基本输入输出,开机自检和系统自启动)保存在主板上的ROM中
CPU访问存储器的速度排序:通用寄存器 > Cache > 内存 > 硬盘
采用分级存储是为了解决:存储容量、成本和速度之间的矛盾
虚拟存储器 = 主存 + 辅存
缓存:是介于CPU存储器和内存间的高速存储器,容量比内存小,速度更快
-
解决了CPU运行速度和内存读写速度不匹配的问题
-
缓存容量的大小是CPU性能重要指标
-
缓存的结构和大小对CPU影响很大
Cache高速缓存:
-
利用程序访问的局部性原理
-
主存部分内容的拷贝/副本,选取最常使用的或者将来仍将使用的
-
命中率主存
判断CPU访问的内容是否在Cache中,通过命中率来判定
-
若命中:在
-
通过地址映射,把主存地址转换为Cache地址,访问Cache
-
-
没命中:不在
-
读操作:从主存中读取数据,按照替换原则,把数据装入Cache
-
写操作:把数据写入主存
-
硬件自动完成Cache与主存间的地址映射
Cache并不能扩大主存容量,他们是两个独立的部分
Cache地址的映像方式
-
直接映像:主存中每一块,映射到Cache中特定的一块,一对一
-
组相连映像:组间直接映射,组内全相连映射,折中
-
全相连映像:主存中任意一块,可以映射到Cache任意位置,一对多
冲突排序:全相连映像 < 组相连映像 < 直接映像
W 存储容量 = 大地址 - 小地址 + 1
需要芯片数量默认
开放系统的数据存储中,属于网络化存储的是:网络接入存储 NAS(Network Attached Storage)存储区域网络 SAN(Storage Area Network)
计算机系统部件可靠度:
串联:R = R1 R2 Rn
并联:R = 1-(1-R1) (1-R2) (1-Rn)
6、磁盘调度
独立磁盘冗余阵列RAID,特点和块数
-
RAID0:数据分成数据块保存在不同驱动器上,没有校验功能,没有冗余技术,所以利用率最高,一旦损坏,阵列数据全部丢失,2块
-
RAID1:安全性最好,空间利用率50%,最低,2块
-
RAID2:使用海明码校验和纠错,2块
-
RAID3:使用单独的一块进行奇偶校验,3块
-
RAID5:常用于IO较频繁的事物上,3块
-
RAID10:最高安全性和高性能,4块
先来先服务算法和最短寻找时间(当前磁臂到访问磁道的距离)算法可能会随时改变移动臂的移动方向
磁盘调度先进行移臂调度,再进行旋转调度
可靠性 :系统从正常运行到发生故障 MTTF/(1+MTTF) — 平均故障时间
可用性:任何时间都能及时工作 MTBF/(1+MTBF) — 两次故障的平均时间
7、输入输出技术
-
中断技术:计算机执行过程中,出现异常或请求,CPU保存正在执行程序的现场,用程序计数器PC保存,等中断服务处理完成后,自动返回原程序继续执行
-
中断响应时间,是指从发出中断请求到开始进入中断服务程序所需的时间,不包括中断处理过程、中断结束等
-
中断向量可以提供中断服务程序的入口地址
-
-
DMA:传输数据时,CPU只参与初始化工作,DMA完成数据传输和具体操作,不需要CPU参与,传输速度最快
-
主存与外设之间建立通路
-
占用的是系统总线
-
CPU是在一个总线周期结束时,响应DMA请求的
-
指令周期:取出并执行一条指令的时间
-
总线周期:一个访存储器或I/O端口操作所用的时间
-
时钟周期:是处理操作的最基本单位
-
时钟周期之间的关系:一个指令周期由若干个总线周期组成,而一个总线周期时间又包含有若干个时钟周期
-
-
程序查询、无条件传送、中断都需要CPU参与
名称 | 用途 |
---|---|
数据总线 | 双向数据传输,DB的宽度决定CPU和其他设备的交换位数 分时发送数据,同时并行接收数据 |
地址总线 | 只单向传输,CPU发送的地址信息,AB决定CPU最大寻址能力 |
控制总线 | 传送控制信息信号、时序信号、状态信息,传输方向固定 CB每一根线单向传输,总体是双向传输 |
总线带宽 = 总线宽度(总线一次性输出二进制位的位数) 总线频率(一秒钟传输数据的次数)
例2:总线宽度64bit,时钟频率100Mhz,总线上每5个时钟周期传送64bit,那么总线带宽?
总线带宽 = (64/8bit) (100Mhz/5) = 160Mb/s
总线带宽 = 时钟频率 每个总线周期传送的字节数/每个总线周期的时钟周期数
例:系统总线一个周期传送32位数据,一个总线周期包括6个时钟周期数,总线时钟频率66MHZ,那么总线带宽?
总线带宽 = 66MHZ (32/8bit)/6 = 44Mb/s
习题和易错点
2X的补码是90H,X的真值?
90H = 10010000,该数为负数,反码10001111,源码11110000 即 -112,得X=-56
Flymn分类法(根据Single、Multi判断)
-
SISD:单指令单数据流
-
SIMD
-
MISD多指令流多单数据流,只有理论意义没有实践意义
-
MIMD