2021年系统架构师学习笔记
一、计算机系统知识
1、计算机硬件组成
主机:CPU (运算器、控制器)+ 主存储器
2、中央处理单元(CPU)
central processing unit
中央处理单元功能:程序控制、时间控制、操作控制、数据处理等
组成部分:
运算器
运算器功能:执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较、移位等
组成:
- 算术逻辑单元 ALU(arithmetic and logic unit ):实现对数据的算术和逻辑运算
- 累加寄存器AC(accumulator):运算结果或源操作数的存放区
- 数据缓冲寄存器 DR (Data Register):暂时存放内存的指令或者数据
- 状态条件寄存器PSW:(Program Status Word):保存指令的运行结果的条件码内容,如溢出标志
控制器
功能: 计算机的各个部件按照指令的功能要求协调工作的部件,是计算机的神经中枢和指挥中心
组成:
- 指令寄存器IR(InstructionRegister):用以保存当前执行或即将执行的指令的一种寄存器
- 程序计数器PC(ProgramCounter):存放指令执行地址
- 地址寄存器AR(AddressRegister):保存当前CPU所访问的内存地址
- 指令译码器ID(Instruction Decoder): 分析指令操作码
3、 数据表示
进制转换
多进制标书:
| | |
---|
二进制数10110011可以写成(10110011)2,或写成10110011B | 二进制数据 (11 101 010 . 010 110 100)2 对应八进制数据 (352.264)8或352.264O | 十六进制数4AC8可写成(4AC8)16,或写成4AC8H |
进制转换:
1)R进制转换成十进制
任意R进制数据按权展开、相加即可得十进制数据。
2)十进制转R进制
用十进制数除以R,记录每次余数,若商不为0,则继续除以R,直至商为0。余数从下至上记录,排成由左到右。
3)m进制转n进制
借助十进制作为中间数
2进制和16进制转换,可以进行分解,位分四位.。(2进制转8进制)
例:将(4AF8B)16转换为二进制数.
解: 4 A F 8 B
0100 1010 1111 1000 1011
备注:小数不考
数的表示
- 机器数:各种数值在计算机中表现的形式,其特点是使用二进制计数制,数的符号用0和1表示,小数点则隐含,不占位置。
- 正数符号位为0,负数符号位为1
- 定点表示法分为纯小数和纯整数两种,其中小数点不占存储位,而是按照以下约定
- 纯小数:约定小数点的位置在机器数的最高数值位之前
- 纯整数:约定小数点的位置在机器数的最高数值位之后
- 真值:机器数对应的实际数值
数的编码方式
带有符号数有下列编码方式:
- 原码:一个数的正常二进制表示,最高位表示符号,数值0的源码有两种形式:+0(0 0000000)或者-0(0 0000000)
- 反码:正数反码就是源码,负数反码除符号位在原码基础按位取反
- 补码:正数补码就是源码,负数反码+1
- 移码:补码的符号位取反
浮点数的表示
- 浮点数:表示方法为N=F*2^E,其中E称为阶码,F称为尾数;类似于十进制的科学计数法,如85.125 = 0.85125 * 10^2 ,二进制如101.11 = 0.101011 * 2^3
- 在浮点数的表示中,阶码为带符号的纯整数,尾数为带符号的纯小数,要注意符号占最高位(正数0或者负数1),其表示格式如下:
N=F*2^E
- 尾数的表示采用规格化方法,也即带符号尾数的补码必须为1.0xxx(负数)或者0.1xxx(负数),其中x可为0或者1
浮点数运算:
- 对阶(使两个数的阶码相同,小阶向大阶看齐,较小阶码增加几位,尾数就右移几位)
- 尾数计算(相加,若是减运算,则加负数)
- 结果规格化
算术运算和逻辑运算
- 逻辑与& :两个都为1才为1,其余都是0
- 逻辑或| :只有两个都为0才为0,其余都是1
- 异或xor:同0非1
- 逻辑非!:0非是1,1非是0
- 逻辑左移<< : 二进制数整体左移n位,高位若溢出则舍去,低位补0
- 逻辑右移>>: 二进制数整体右移n位,低位若溢出则舍去,高位补0
4、 校验码
系统编码传输中检查是否正确,需要校验码来完成这项工作。
- 码距:两个合法代码对应位上编码不同的位数称为码距,又称海明距离。举例如下:10101和00110从第一位开始依次有第一位、第四、第五位不同,则海明距离为3。码距越大越利于纠错和检错。
奇偶校验
- 奇偶校验码:在编码中增加1位校验位来使编码中的1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变成2。
- 奇校验:编码中含有奇数个1,发送给接收方,接收方收到后会检查1是否是奇数个。
- 偶校验同理。
最简单的校验,只能检查1位错误,且不能纠错。
循环冗余校验码