计算机组成原理
计算机体系结构的基础
- 计算机的分类
- 电子模拟计算机:数值由连续量表示,运算过程连续
- 示波器,通信
- 电子数字计算机:按位运算,不连续地跳动计算
- 量子计算机:量子比特Qbit
- 数字计算机分类:效率,速度,价格,适应性
- 专用计算机
- 通用计算机:体积,功耗,性能,数据存储量,指令系统规模,机器价格
- 单片机:所有部件集中在一块芯片,如儿童手表
- 微型机(晶体管密度):手机,ipad
- 大型机:分布系统,多个ATM去操纵一个业务系统
- 发展简史
- 计算机发展
- 电子管计算机:数据处理
- 晶体管计算机:工业控制
- 中小规模集成电路计算机:小型计算机
- 大规模和超大规模(VLSI)集成电路计算机:微型计算机
- 巨大规模集成电路计算机:单片机
- 半导体存储器发展:存储密度提升
- KB, MB, GB, TB, PB, EB, ZB
- 微处理机的发展
- 通用16位微处理机 8086
- x86: 基于8086向后兼容的架构(32位)
- x64: x86-64位,基于8086向后兼容的架构且拓展至64位存储器(64位)
- 64位机器可以装32位程序,反之不可
- 吞吐量:单位时间处理的信息量,单位为字节/s (B/S)
- 响应时间:微秒10-6s ,纳秒10-9s
- 利用率:给定的时间内系统被实际使用的时间比例
- 处理机字长:处理机一次能够完成二进制运算的位数
- 总线宽度:CPU中运运算器与存储器之间互联的内部总线二进制位数
- 存储器容量:B=8位,1个字节
- 存储器带宽:存储器速度指标,字节数/秒
- 主频/时钟周期:心脏跳动般,一时间间隔工作一次,由主时钟控制,它不断产生固定频率的时钟,
- 频率(f)叫CPU的主频MHz,GHz, 倒数叫做CPU时钟周期(T)
- 不与性能直接挂钩
- CPU执行时间
- CPI:程序每条指令的平均使用的周期数
- MIPS: million instructions per second 每秒百万指令 106
- FLOPS: floating-point opertations per second 浮点操作
- 例题
- 计算机的硬件
- 冯·诺伊曼计算机,五大部件
- 控制器:按照一定顺序取指令,译码,执行
- 可区分指令字,数据字
- 运算器:ALU,arithmetic,logic,unit,算术逻辑单元
- 存储器:存储数据和程序(指令)
- 内存ROM, RAM
- 外存
- I/O,输入,输出(外设)
- 适配器:使得被连接的外围设备通过系统总线与主机进行联系,如手机充电,驱动程序等
- 总线:多个系统部件之间进行数据传送的公共通路,数据流,指令流
- 计算机的软件
- 系统软件的发展:操作系统,分布式系统软件
- 多级组成的计算机系统:计算机是由复杂的硬、软件结合而成的整体
- 每一级都能进行程序设计
- 微程序设计级,一一般机器级,操作系统级,汇编语言级,高级语言级
- 软件与硬件的逻辑等价性:
- 软件硬化:神经计算器,硬件处理某些特定运算
- 硬件软化:用软件实现隐秘通信,代替拉光纤
- 固件:功能上是软件,但形态上是硬件,如BIOS
- B二进制(binary), D十进制(decimal), H十六进制(hexadecimal)
- 设机器字长n+1位,规定最高位(第n+1位)为符号位
- 纯小数最大范围中的可理解为小数部分全为0的“1”,再减去一个最后一位为1的"2-n "
- 数值数据:定点、浮点
- 定点表示法:
- 纯整数,纯小数,定点整数,定点小数
- 小数点位置固定不变
符号位S,阶码E,尾数M
IEEE754标准
- 浮点数规格化表示:尾数的值不为0时,尾数域的最高有效位为1
- 32位单精度浮点数:符号位S占1位,阶码E占8位(范围),尾数M占23位(精度),基数固定为2
- IEEE754标准,M隐去1(规定尾数域最高有效位为1(若尾数不为0),无需存储),指数真值e=阶码E-127(32位) e=E-1023(64位)
- 特殊规定
- 表示NaN(阶数全1,尾数不为0),\pm\infin (阶数全1,尾数为0),0(阶数尾数都为0),规格化数,非规格化数(阶数为0,尾数不为0)
- 机器码和真值转换例子
- 浮点数表示的范围比定点数大
- 数的机器码表示
- 真值: -127 真值的二进制表示 -0111 1111
- 机器数/机器码:原码、反码、补码、移码
- 正数的原码反码补码均相同
- 补码
- 模modulo, 区间总长
- 整数模2n ,小数模2
- 负数:固定符号位,补码为取反加1
- 方便加减运算
- x移=2n+x ,移码和补码尾数相同,符号位相反
- x为真值,右式为移码(机器码)
- 意思就是真值的二进制表示后最高位多添一个1
- 偏移值常数可以任意,如IEEE754标准为127,非2的幂次
- 方便指数大小对比,通常用于表示浮点数的阶码
- 字符与字符串表示方法
- ASCII码:最高位为0,余下7位表示128个编码
- 字符串:连续的一串字符,占用主存中连续的多字节,每个字节存放一个字符
- 汉字表示方法
- 输入码
- 数字编码:国标区位码,二维数组
- 拼音码:输入重码率重
- 字形编码:五笔
- 汉字内码,用于存储,采用两字节表示,最高位均为1
- 字模码(输出):字模矩阵,汉字库,存储空间大
- 校验码
- 奇偶校验码:检查出奇数位错,且不能纠正错误,奇数个1异或结果为1
- 奇校验:使得最后异或结果为1,奇数个1
- 偶检验:使得最后异或结果为0,偶数个1
- 二维码:校验码,纠错码
- 如果结果为负数,从补码转为二进制真值的时候记得求一次补
- 补码规则:
- 证明
- 补码减法规则
- 从该数补码求其相反数补码方法:
- 正溢,负溢
异或结果为1说明产生溢出
- 双符号位判断法:
- sf1,sf2分别是高符号位(始终正确)和低符号位(可能变化)
- 单符号位判断法:
- cf,c0分别是符号位产生的进位和最高有效位产生的进位
- 符号位产生进位而最高有效位没有产生进位,负溢
- 最高有效位产生进位而符号位没有产生进位,正溢
- 例题
- 移位过程中,符号位不变
- 补码右移是算术右移,补1
全加器FA
- 全加器Full Adder (FA),行波进位加法器(串行)
- 并行加法器
- 符号数单独处理,异或得到结果
- 并行
- 被加数产生部件:m*n个与门直接算得
- 被加数求和部件:求和每列被加数
- 被加数矩阵
- 同列幂次相同
- 每行有左移效果
- 被加数求和部件:全加器实现
- 对2求补器
- E为控制信号,为0代表操作数为正数,为1则是负数
- 求补方法:从右往左找出第一个"1",自己和右边的数位不变,以左的每一个数位取反
- 逻辑:算前求补-不带符号乘法-算后求补
如果是小数除法:被除数的绝对值应小于除数的绝对值(要求商始终小于1)
符号位单独处理,异或运算
- 基于补码进行加减法和移位
- 符号位不变
- "1."代表符号位
- 补码是算术右移
- 例子演算
- 减y (就是加上[-y]的补码),看余数正负
- 不够减商0并恢复余数,够减直接商1
- 余数左移,重复第一步
- 商做了五次运算,首位为0,商小于1,即说明被除数是小于除数的,合法
- 推演
- 例子演算
- 余数为正,商1,下次余数左移做减法
- 余数为负,商0,下次余数左移做加法
- 商计算5次,首位为0,即商小于1,说明被除数小于除数,合法
- 数值位为n位时,只做n+1步操作,对最后余数要处理(恢复余数,反正此时商0,结果正确的),其真实值还要算上位移量
可控加法/减法单元CAS
CAS controllable adder subtractor
- 从右往左算,进位也是从右往左进位
- 可控做加法还是做减法,那么就可做由加减交替法实现的定点数除法运算了
- 阵列除法器:加减交替法的并行实现
- q4=0 是因为规定被除数小于除数,商小于1,不够除
- 每行最左边的CAS存放的是被除数和除数补码符号位的加减法(记录最高位的进位情况,即Ci+1 )
- 模拟阵列除法器运行例子
- 加减交替法 + 除数右移
- 商跟除数位数相同,次数是位数加1
- 逻辑运算
- 逻辑非:按位求反
- 逻辑加:按位求或
- 逻辑乘:按位求与
- 逻辑异:按位加,按位异或
多功能算术/逻辑运算单元ALU
- 先行进位公式
- 规律:g3 -> g2p3 -> g1p2p3 -> g0p1p2p3 -> p0p1p2p3Cn
- 从左往右g下标不断减小,然后右边填上p下标从大到小,最后g没有的时候补上Cn
- ALU的逻辑结构
- 一个ALU由多片FA和函数发生器组合而成,来支持多位二进制位数
- i:一片电路(一片ALU,多个FA和函数发生器组成)的二进制位数
- n:多片ALU时,每片电路的进位输入
- ALU逻辑表达式
- 由真值表知Yi = XiYi
- 先行进位公式
- 进位发生输出G
- 进位传送输出P
- 最高位进位输出Cn+4