1 计算机系统概论1.1 计算机系统简介1.1.1 计算机的软硬件概念1.1.2 计算机系统的层次结构1.2 计算机的基本组成1.2.1 冯诺依曼计算机特点1.3 计算机硬件的只要技术指标1.3.1 机器字长1.3.2 运算速度1.3.3 存储容量3 系统总栈3.1 总线的基本概念3.2 总线的分类3.3 总线特性及性能指标3.3.1 总线标准3.3.2 总线的性能指标3.4 总线结构3.5 总线控制3.5.1 总线判优控制3.5.2 总线通信控制4 存储器4.1 概述4.1.1 存储器分类4.1.2 存储器的层次结构4.2 主存储器4.2.1 概述4.2.2 半导体存储芯片简介4.3 随机存取存储器RAM(SRAM和DRAM)4.3.1 SRAM:静态RAM(双稳态触发器原理)4.3.2 DRAM:动态RAM(栅极电容)集成度高、功耗低4.3.3 动态RAM与静态RAM的比较4.4 只读存储器(ROM)4.4.1 五种ROM4.5 存储器与CPU的连接4.5.1 存储器与容量的扩展4.5.2 存储器与CPU的连接4.5.3 例题4.5.4 存储器的校验4.6 提高访存速度的措施4.7 高速缓冲存储器Cache4.7.1 Cache的工作原理4.7.2 Cache的基本结构4.7.3 Cache的读写操作4.7.4 Cache—主存的地址映射4.7.3 替换算法4.8 辅助存储器4.8.1 虚拟存储器5 输入输出系统5.1 概述5.2 I/O接口5.3 I/O控制方式5.3.1 程序查询方式5.3.2 中断的作用及原理5.3.3 多重中断5.3.4 程序中断方式5.3.5 DMA方式6 计算机的运算方法6.1 无符号数和有符号数6.1.1 进位计数制6.1.2 BCD码6.1.3 无符号整数的表示和运算6.1.4 带符号整数的表示和运算6.1.5 定点小数6.2 算术逻辑单元6.2.1 电路基本原理+加法器设计6.2.2 并行进位加法器6.2.3 补码加减运算6.2.4 标志位的产生6.2.5 定点数的移位运算6.2.6 原码的乘法运算6.2.7 补码的乘法运算6.3 浮点四则运算6.3.1 浮点数的表示6.3.2 IEEE 754 标准6.3.3 浮点数的运算7 指令系统7.1 指令格式7.2 扩展操作码
1 计算机系统概论
1.1 计算机系统简介
1.1.1 计算机的软硬件概念
计算机系统:硬件、软件硬件五大部件:三器两设备—运算器、控制器、存储器、输入设备、输出设备(中央处理器)CPU = 运算器 + 控制器软件:系统软件、应用软件现代计算机框图:1.1.2 计算机系统的层次结构
源程序:用户用高级语言编写的程序高级语言源程序编译成的目标程序,只能在本机器上运行1.2 计算机的基本组成
1.2.1 冯诺依曼计算机特点
计算机由五大部件组成(现代计算机是以存储器为中心)冯诺依曼存储程序的思想:数据和程序都存储在存储器
1.3 计算机硬件的只要技术指标
1.3.1 机器字长
机器字长是指CPU一次处理数据的位数,通常与CPU的寄存器位数有关
通用机器字长 = 通用寄存器长度
1.3.2 运算速度
主频(时钟周期(Cycle) = 1/主频)吉普森法MIPS:每秒执行百万条指令 (Million Instruction per Second),和频率相关CPI:执行一条指令所需要的时钟周期 (Cycle Per Instruction) / 每一条指令的平均执行时间FLOPS:每秒浮点运算次数(Float Operation Per Second)
1.3.3 存储容量
定义:存放二进制信息的总位数存储单元个数和地址位数有关,假如地址位数为n,则存储位数为2^n例题:一个16K x 32位的存储器,其地址线和数据线的总和是()
2^14=16k,所以MAR=14,MDR=32,所以答案为:14+32=46
例题:微机A和B是采用不同主频的CPU芯片,片内逻辑电路完全相同。
(1)若A机的CPU主频为8MHz,B机为12MHz,则A机的CPU时钟周期为多少?
(2)若A机的平均指令执行速度为0.4MIPS,那么A机的平均指令周期为多少?
(3)B机的平均指令执行速度为多少?
(1) A时钟周期=1/主频=1/8M=0.125us(2) 每秒可以执行0.4MIPS //速度A平均指令周期=1/0.4M=2.5us //执行一条指令需要多少时间(3) A和B片内逻辑电路完全相同,执行一条指令所需要的时钟周期数相同,即CPI相同主频不同,不影响CPI,只影响一个周期的时间A机CPI=2.5us/0.125us=20B机CPI=20B机主频为12MHZ,即每秒12M个时钟周期平均指令执行速度=12M/20=0.6MIPS
3 系统总栈
3.1 总线的基本概念
总线:连接各个部件的信息传输线,是各个部件共享的传输介质
3.2 总线的分类
片内总线:芯片内部的总线系统总线:计算机各部件(五大部件)之间的信息传输线按照传输信息类别的不同可分为三类:
数据总线(双向)
地址总线(单向)
控制总线(有出有入)通信总线,传输方式可分为串行通信总线和并行通信总线
3.3 总线特性及性能指标
3.3.1 总线标准
ISA 及其扩展PCI:并行,即插即用,支持突发工作方式USB:串行,即插即用3.3.2 总线的性能指标
总线宽度:数据线的根数标准传输率(总线带宽):每秒传输的最大字节数(MBps)3.4 总线结构
例题1:计算机使用总线结构的主要优点是便于实现积木化,同时©
A 减少了信息传输量 B 提高了信息传输的速度 C 减少了信息传输的速度 D 加重了CPU的工作量
例题2:计算机使用总线结构的主要优点是便于实现积木化,同时© 。
A 减少了信息传输量 B 提高了信息传输的速度 C减少了信息传输线的条数 D加重了CPU的工作量
系统总栈是指(D)
A 运算器、控制器、寄存器之间的连接部件
B 运算器、寄存器、主存之间的连接部件
C 运算器、寄存器、外围设备之间的连接部件
D CPU、主存、外围设备之间的连接部件
3.5 总线控制
3.5.1 总线判优控制
总设备(模块):对总线有控制权
从设备(模块):响应从主设备发来的总线命令
三条总线仲裁的辅助线:BS总线忙、BR总线请求、BG总线同意
集中式 链式查询:仅需要常数根线计数器定时查询
2.1 计数从0开始,则优先级从0到n降序
2.2 计数从上次终点开始,则优先级相等
2.3 需要 log2n 条地址线,其中n为设备数目独立请求方式
3.1 响应快速,控制复杂
3.2 需要 2n 根线(但不会增加处理机开销) 分布式 自举式冲突检测式:常用于网络
3.5.2 总线通信控制
目的:解决通信双放协调配合的问题
总线传输周期的四个阶段:
申请分配阶段寻址阶段传输阶段结束阶段
总线通信的四种方式
同步通信异步通信
波特率:单位bps(位每秒),波特率 > 比特率半同步通信分离式通信
4 存储器
4.1 概述
4.1.1 存储器分类
按存储介质分类:半导体存储器(易失)、磁表面存储器、磁芯存储器、光盘存储器按存取方式分类
(1)存取时间与物理地址无关(随机访问):随机存储器RAM、只读存储器ROM
(2)存取时间与物理地址有关(串行访问):顺序存取存储器—磁带、直接存取存储器—磁盘按在计算机中的作用分类
4.1.2 存储器的层次结构
缓存容量小,速度高; 主存容量大,速度低
CPU和辅存之间没有数据通道
例题
4.2 主存储器
4.2.1 概述
主存的基本组成: 以存储器为中心, 其X轴依次是 读写电路, MDR, 数据总线…其Y轴依次是驱动器, 译码器, MAR, 地址总线.主存中存储单元地址的分配(1)每一行是一个存储字,字有两个字节组成;(2)对字节编址时,在右边给一个相对较小的编号;(3)字地址的编号取得是最右侧地址作为字节地址。
3. 主存的技术指标
(1)存储容量:主存存放二进制代码的总位数
(2)存储速度:存取时间、存取周期(连续两次独立的存储器操作所需的最小间隔时间,一次完整的读写操作所需的最小时间间隔)
(3)存储器的带宽(数据传输率 bit/s )
4.2.2 半导体存储芯片简介
存储芯片的容量由地址线和数据线的位数共同决定存储芯片·1片选线的作用(1)例:用16K x 1位的存储芯片组成64K x 8 位的存储器译码驱动方式: 线选法, 重合法
(1)首先将011转为十进制,为3(2)Y3处为1,其余为0
4.3 随机存取存储器RAM(SRAM和DRAM)
4.3.1 SRAM:静态RAM(双稳态触发器原理)
虚线框里面的为基本电路,可以存放一个二进制
T1-T4组成了一个触发器
T5、T6:控制门管(若T5、T6被断开内部则无法选中)
Z:字线(选择存储单元)
静态RAM(SRAM)芯片举例:Intel 2114外特性
1. 通过控制位线电平,来控制写入状态T1导通,T2截止 写1T1截止,T2导通 写02. 通过读取位线电流,来读取状态位线1有电流,位线2无电流 读1位线2有电流,位线1无电流 读03. 写步骤(此时有电压差走交叉线路):①字线给高电平(T5、T6都导通)②根据要写入的状态给两位线不同电平(H高L低)4. 读步骤(此时无电压差走耦合线路) :①字线给高电平(T5、T6都导通)②两位线都给高电平③检测电流
4.3.2 DRAM:动态RAM(栅极电容)集成度高、功耗低
读1:MOS管接通,电容放电,数据线上产生电流(电容放电是破坏性读出,还需重写操作),在对破坏性读出的的存储器进行读写操作时,为维持原来保存的信息不变,必须辅以再生操作读0:MOS管接通后,数据线上无电流地址送两次,一次行地址,一次列地址//行列地址是分开传送的
动态RAM的读写时序
动态RAM刷新
刷新与行地址有关
“死区”为:0.5 us×128= 64 us
死时间率”为:128/4 000×100%=3.2%
4.3.3 动态RAM与静态RAM的比较
4.4 只读存储器(ROM)
4.4.1 五种ROM
掩模ROM(MROM)
行列选择线交叉处有"MOS"管为"1"
行列选择线交叉处无"MOS"管为"0"
可编程ROM(PROM)(一次性编程)
熔丝连接为1,断开为0
EPROM(多次性编程,紫外线擦除)
EEPROM(电可擦除存储器)
电可擦写、局部擦写、全部擦写
闪速存储器
比EEPROM快,具备RAM功能
4.5 存储器与CPU的连接
4.5.1 存储器与容量的扩展
位扩展(数据线——增加存储字长)各个存储芯片的片选线连在一起
解释:数据位扩展,多个芯片要同时工作,所以片选线要连在一起
如:用2片1K x 4位存储芯片组成1K x 8位的存储器(10根地址线,8根数据线)字扩展(地址线)
多个芯片的片选端,连接到扩展的地址线上
解释:多个芯片不能同时工作
如:用2片1K x 8位的存储芯片组成2K x 8位的存储器(11根地址线,8根数据线)字位扩展(增加存储字的数量)
先扩展位,再扩展字。
扩展的位相当于分好了列,扩展后的位数为一组,同一组的芯片片选线连到一起
把这几组的片选线,连接到扩展的地址线上(片选译码器分出多个信号)
如:用8片1K x 4位存储芯片组成4K x 8位的存储器(12根地址线,8根数据线)
4.5.2 存储器与CPU的连接
地址线的连接数据线的连接读/写命令线的连接片选线的连接合理选择存储芯片系统程序区: ROM
其他:RAM其他 ,时序、负载
4.5.3 例题
主存地址空间分配:
系统程序区:6000H~67FFH
用户程序区:6800H~6BFFH
(1) 写出对应的二进制代码
(2)确定芯片的数量和类型
(3) 分配地址线
(4) 确定片选信号
74138译码器介绍
A,B,C 输入端口,输入二进制数;
Y0~Y7 输出端口,输出十进制数;
G1,G2A,G2B 片选端口,当以此为100时芯片选通,否则无法工作;
(1) 写出对应的二进制地址码
(2) 确定芯片的数量和类型
(3) 分配地址线
有一个 16K ×16位的存储器,由1K×4位的动态RAM芯片构成(芯片内是64×64结构),问:
(1) 总共需要多少RAM芯片?
(2) 存储体的组成框图。
(3) 采用异步刷新方式,如最大刷新间隔为2 ms,则相邻两行之间的刷新间隔是多少?
(4)如采用集中式刷新方式,存储器刷新一遍最少用多少刷新周期?设存储器的读写周期为0.5us,死区占多少时间?死时间率为多少?
(1)芯片1K×4位,片内地址线10位(A9--A0 ),数据线4位。芯片总数为:(16K×16)/(1K×4)=16×4=64片(2)存储器容量为16K,故地址线总数为14位(A13─A0),其中A13A12A11A10通过 4:16译码器产生片选信号CS0─CS15 (3)采用异步刷新方式,在2ms时间内把芯片的64行刷新一遍,相邻两行之间的刷新间隔=2ms/64=31.25μs,可取的刷新间隔为31μs(4)如果采用集中刷新方式,则存储器刷新一遍最少用64个存储周期,因为存储器的存储周期为0.5μs则“死区”=0.5μs×64=32μs“死时间率”=32μs/2000μs×100%=1.6%
有4个模块组成的四体存储器结构,每个体存储字长是32位,存取周期为200ns,每读一个字的时间怎么是200ns,假设数据总线宽度为32位,总线传输周期为50ns,试求顺序存储和交叉存储的存储器带宽。
存储器模块数为:n,存取周期为:T 总线传输周期:t 已知低位交叉的存储器,连续读取n个字所需要的时间t1为: T +(n-1)t
已知高位交叉的存储器,连续读取n个字所需要的时间t2为: nT
顺序存储和交叉存储连续读出4个字的信息量为324=128位顺序存储存储器连续读出4个字的时间为:200ns4=800ns交叉存储存储器连续读出4个字的时间为:200ns+50ns*(4-1)=350ns顺序存储器的带宽为:128bit/800ns=16 * 10^7bps交叉存储器的带宽为:128bit/350ns=37 * 10^7bps
4.5.4 存储器的校验
编码的最小距离任意两组合法代码之间二进制位数的最小差异;
编码的纠错,检错能力与编码的最小距离有关;
汉明码就是具有一位纠错能力的编码;汉明码的组成
汉明码采用奇偶检验,分组校验;
汉明码的分组是一种非划分方式:
P1检测位—1,3,5,7
P2检测位—2,3,6,7
P4检测位—4,5,6,7奇偶校验(高位放一位校验码)不能指出错误
(1)加上最高位,1的个数是奇数个是奇校验,1的个数是偶数个是偶校验
(2)添加冗余位之后,8个合法的,8个非法的
(3)码距:任意两个合法的编码之间的最小距离(最小码距)
(4)码距与编码系统的检错、纠错能力有关,见1。 偶校验只具有检错1位错误的能力,不具有纠错能力(2-1=D+C,D>=C,D=1, C=0)汉明码的纠错过程—形成新的检测位Pi
(1) 其位数与增添的检测位有关,如增添3位(k=3),新的检测位为P4P2P1
(2) 以 k=3 为例,P1=C1+3+5+7,P2=C2+3+6+7,P4=C4+5+6+7
(3) 对于按“偶检验”配置的汉明码,不出错时,P1=P2=P4=0例题:求 0101 按“偶检验”配置的汉明码
C1检测位检测二进制序号为3、5、7的编码,有两个1,所以补一个0成偶数C2检测位检测二进制序号为3、6、7的编码,有一个1,所以补一个1成偶数C4检测位检测二进制序号为5、6、7的编码,有两个1,所以补一个0成偶数因此汉明码为0100101
例题:已知接收到的汉明码为0100111(按配偶原则配置),试问要求传送的信息是什么
110=2^1 + 2^2=6,第六位出错
4.6 提高访存速度的措施
采用高速器件;采用层次结构 Cache -主存;调整主存结构:(1) 单体多字系统—增加存储器的带宽
总线带宽=总线数据传输频率*数据总线位数
(2) 多体并行系统—高位交叉(顺序编址,各个体并行工作)、低位交叉(各个体轮流编址),低位交叉特点为,在不改变存取周期的前提下,增加存储器的带宽
(3) 存储器控制部件(存控)
4.7 高速缓冲存储器Cache
4.7.1 Cache的工作原理
作用:解决CPU–主存之间的速度矛盾CPU可以不直接访问主存,而是直接与高速的Cache交换信息,找不到之后才去主存里面存取信息,主存的信息不仅要给CPU一份,还要给Cache一份进行存储
每一个小格子是一个存储单元(字),根据程序的局部性原理,可以将主存和缓存分为若干个块,每个块包含若干字,使他们大小相同。主存的地址分为两段,高m为主存的块地址,低b位表示块内地址。如下图将主存分为M个块,2m =M,2c= C,C必定远小于M
主存物理地址=块号+块内地址(就是把一串二进制数分成了两部分)
主存和缓存间对应块的大小都是相同的,校内地址也相同。主存和缓存间调用的是块,只调用不做修改。
工作原理: CPU想从主存中读取某一个字
(1) 所需要的字已经在cache中, 那么就直接访问cache.
(2) 所需要的字不在cache, 在主存内, 此时就将字所在的主存整个字块一次过调入到cache里面, 这样主存和cache就建立了映射关系.
命中和不命中 命中:主存块调入缓存,主存块与缓存块建立了对应关系的主存块号未命中:主存块未调入缓存,主存块与缓存块未建立了对应关系的主存块号命中率
命中率与Cache的容量和块长有关。
4.7.2 Cache的基本结构
地址总线上的地址传输的是主存地址整个过程是由CPU完成的,是硬件完成的,而不是操作系统 Cache的结构主要包括3部分: 数据存储体:用于存放主存数据的副本。标记存储体:用于存放标记,不同类型的映射方式标记位数不同。因此,所需要的标记存储体的容量也不同。有效位:用来标识存放在Cache中的数据是否有效,CPU查找Cache以及Cache更新时都需要使用有效位。4.7.3 Cache的读写操作
写操作:Cache和主存的一致性
写直达法
写操作时数据既写入Cache也写入主存(始终保持一致)
写操作的时间就是访问主存的时间
缺点:增加了访存的次数写回法
写操作时只需要把数据写入Cache而不写入主存,当Cache被替换出去时才写回主存
写操作时间就是访问Cache的时间(快)
缺点:成本高
4.7.4 Cache—主存的地址映射
直接映射先根据地址中间的 c 位,找到对应 Cache 行并用主存地址高 t 位与 Cache 行标记进行比较,若相等且有效位为 1,则访问 Cache “命中”,此时根据主存地址中低位的块内地址在对应 Cache 行读取信息;若不相等或有效位为 0,则“不命中”,此时 CPU 从主存读出该地址所在的一块信息并调入对应的 Cache 行中,将有效位置 1,并将标记设置为地址的高 t 位,同时将该地址中的内容送入 CPU。主存内可以分成很多个C块(组),每个组都可以完成Cache的分布,且在C块里面是1对1的,每一块主存块只能放入Cache块中的唯一位置。按地址访问主存物理地址=标记+Cache行号+块内地址 全相联映射
主存中地每一块可以装入 Cache 中地任何位置,每行地标记用于指出该行取自主存地哪一块,所以 CPU 访存时需要与所有 Cache 行标记进行比较,是按内容访问主存物理地址=标记+块内地址 组相连映射
将 Cache 空间分成大小相同地组,主存地一个数据块可以装入一组内地任何一个位置,即组间采取直接映射,组内用全相联映射组地址:一行是一组(几路组相连)主存物理地址=标记+组号+块内地址 Cache的计算
Cache的总容量 = 标记阵列 + cache的存储容量
例题1:有效容量为128KB的Cache,每块16B,采用8路组相连。字节地址为1234567H的单元调入该Cache,则其Tag应为?
字节地址为7个十六进制数,一个十六进制可以用四个二进制位表示,所以该字节地址一共可以用7*4=28个二进制位表示,所以主存物理地址为28位Cache每块16B(默认按字节编址,1B对应一个地址),4个二进制位可以表示16个地址,所以块内有16个地址,可以用4个二进制位表示,块内地址为4Cache行(块)数:128KB / 16B = ( 2^7^ x 2^10^ ) / 2^4^ = 2^13^ 块8路组相连的话,8个块一组,组数=2^13^ / 8 =2^10^ 组所以用10个二进制位就可以表示了主存物理地址(28)=标记(14)+组号(10)+块内地址(4)所以标记就是前14位,找1234567H的前14位转成2进制位:0001 0010 0011 0100 0101 0110 01110111是块内地址,0001 0010 0011 01至此为标记的前14位,但是凑不成十六进制了,因此可以在前面加00,后面不可以,就像002=2,200≠2)0000 0100 1000 1101变为十六进制:048DH
例题2:有一主存-Cache层次的存储器,其主存容量为1MB,Cache容量为16KB,每块有8个字,每字32位,采用直接地址映像方式,若主存地址为35301H,且 CPU访问Cache命中,则在Cache的第(A)(十进制表示)字块中( Cache起始字块为第0字块)
A. 152 B.153 C. 154 D. 151
主存物理地址(20)=主存字块标记()+Cache行号(?)+块内地址(5)主存容量:1MB = 2^20B ,默认按字节编址,可以用20个二进制位表示,20位地址Cache每块有8个字,每个字32位,一位是1B,所以8*32bit/1B(8bit)=32bit=2^5 ,可以用5个二进制位表示,所以块内地址是5Cache行号=Cache块号=16KB/32B=2^9 ,所以9个知道了块内地址是5,所以从后往前数9个35301H 化为2进制:0011 0101 0011 0000 00010 0001是块内地址,01 0011 000为前9位,十进制为152
例题3:若计算机主存地址空间大小为 256MB,按字节编址,其数据 Cache 有 8 行,行长 64B,则:
1)采用直接映射方式,Cache 总容量是多少?
2)在直接映射方式下,主存地址为 3200(十进制)的主存块对应的 Cache 行号是多少?若采用二路组相联映射呢?
1)Cache容量=8*Cache行的位数(可以理解为每块的容量)Cache行的位数=有效位(1bit)+标记位+数据位(Cache块位数))行长即数据块大小,主存和Cache是以数据块为单位进行数据交换的,主存块大小=Cache块大小行长为64B(数据块大小),默认按字节编址,64B=2^6 B,可以用6位二进制位表示,占6位,块内地址为6主存容量256MB=2^28 B,默认按字节编址,一个B(字节byte)对应一个地址,所以256MB主存需要为28位地址那么采用不同的映射方式会对主存地址(28位)有不同的划分(本题是直接映射)cache块: 块是一个固定大小的信息包,是cache和主存之间交换数据的最小单位行: 行是cache的一个容器,存储块以及其他信息(例如有效位和标记位)组: 组是一个或多个行的集合。在直接映射中一组由一行组成,组相联映射中一组由多行组成因为一行总是存储一块,因此 “行” 和 “块” 通常互换使用由于Cache总共8行,占3位(LRU替换算法,淘汰最近最久未访问的Cache块,当一个分组内8个块已满时,要进行选择淘汰,8个块需用3位进行标记,因为LRU占3位)主存地址由tag、cache行号、cache块内地址组成主存物理地址(28)=主存字块标记(19)+Cache行号(3)+块内地址(6)数据位=数据块的数据位数=64个字*字长位数=64*8=512位Cache每块容量=有效位(1bit)+标记位(19bit)+数据位(64B*8=512bit))2)直接映射方式下,主存依照 Cache 行大小进行划分,则主存地址 3200 对应的字块号为 3200B / 64B = 50Cache 有 8 行,50 mod 8 = 2,因此对应的 Cache 行号为 2.二路相联组映射,即将两个 Cache 行合并,组内全相联映射,组间直接映射,所以 50 mod 4 = 2 , 对应的组号为 2,即对应的 Cache 行号为 4 或 6.
例题4:假设主存容量为512K,Cache容量为4KB,每个字块为16个字,每个字32位
(1) Cache地址为多少位?可容纳多少块?
(2) 主存地址多少位 可容纳多少块?
(3) 在直接映射方式下,主存的第几块映射到Cache中始字块为第5块?(设起始字块为第一块)
(4) 画出直接映射方式下主存地址字段中各段的位数。
(1) Cache的容量为4KB=2^12B,Cache地址为12位可容纳块数=2^12 / 2^4=2^8=64(2) 主存的容量为512K=2^19,主存地址为19位可容纳块数2^19 / (2^2 * 2^4)=2^13=8192块(3) 在直接映射的方式下,i=j mod C,i是Cache的字块号,j是主存的字块号,C为Cache的字块数量为2^6=64块,主存的字块数量为8192块,i=5,主存的自块数分别是5,64+5,……(4) 字块内地址:(16*32)/8=2^6,所以字块内地址为6位Cache字块地址:12-6=6位主存字块地址:19-12=7位即可画图,图略
例题5:假设主存容量为512K×16位,Cache容量为4096 ×16位,块长为4个16位的字,访存地址为字地址。
(1)在直接映射方式下,设计主存的地址格式。
(2)在全相联映射方式下,设计主存的地址格式。
(3)在二路组相连映射方式下,设计主存的地址格式。
(4)若主存容量为512K×32位,块长不变,在四路组相联映射方式下,设计主存的地址格式。
(1)主存容量:512K=2^19B,主存地址位数为19位Cache容量:4096=2^12,Cache位数为12位Cache字块地址为:12-2=10位访存地址为字地址,4=2^2,字块内地址为2位主存字块标记:19-12=7位画图即可(主存物理地址:主存字块标记+Cache字块地址+字块内地址)(2)在全相连映射方式下,主存字块标记为19-2=17位,字块内地址为2位,画图即可(3)二路组相连,r=1,主存字块标记:7+1=8位组地址:10-1=9位字块内地址:2位主存物理地址=主存字块标记+组地址+自块内地址(4)主存容量为512K×32位,块长为4个16位的字,则贮存容量可以写为1024Kx16,主存地址为:2^20,所以主存地址位数20位四路组相连,r=2组地址:10-2=8位主存字块标记:20-8-2=10位画图(主存物理地址=主存字块标记+Cache字块地址+字块内地址)
例题6:假设某机主存容量为16MB,cache的容量为8KB。每字块有8·个字,每字32位。设计一个四路组相联映射的cache组织。
(1)画出主存地址字段中各段的位数。
(2)设Cache初态为空,CPU依次从主存第0,1,2,…,99号单元读出100个字(主存一次读出一个字),并重复此次序读10次,问命中率是多少?
(3)若Cache的速度是主存速度的5倍,试问有Cache和无Cache相比,速度提高多少倍?
(4)系统的效率为多少?
4.7.3 替换算法
先进先出(FIFO)算法近期最少使用算法(LRU算法)4.8 辅助存储器
特点:不直接与CPU交换信息磁表面存储器的技术指标(1)记录密度:道密度D1=1/P(P是道距—相邻两条磁道中心线间的距离),位密度D2=位数/周长
在磁盘各磁道上所记录的信息量是相同的(每个磁道的存储容量是一样的),而位密度不同,内圈磁道的位密度大,技术难度更高,所以一般用内圈的位密度作为磁盘位密度
(2)存储总容量C=nks【n为存放信息的盘面数(如果说另外两侧盘面不能记录,nX2-2),k为每个盘面的磁道数,s为每条磁道上的记录的二进制代码数】
(3)平均寻址时间=平均找道时间+平均等待时间
(4)数据传输率
(5) 误码率:出错信息位数和读出信息的总位数之比数据在盘片上的分布及磁盘地址定位
3. 硬磁盘存储器
(1)类型:固定磁头和移动磁盘、可换盘和固定盘
(2)存储器结构例题1:假设磁盘存储器共有6个盘片,最外侧盘面不能记录,每面有204条磁道,没条磁道有12个扇段,每个扇段有512B,磁盘机以7200rpm速度旋转,平均定位时间为8ms。问:
(1)计算该磁盘存储器的存储容量
(2)计算该磁盘存储器的平均寻址时间
1. 盘面数量n=6 x 2 - 2,每个盘片两侧都有盘面,其中有两个盘面不能用磁盘存储器的存储容量C=nks=(6 x 2-2)x 204 x12 x 512B=12533760B2. 平均寻址时间=平均找道时间+平均等待(旋转)时间平均找道时间=8ms平均等待时间(先化成r/ms,在转化成1圈多少ms,平均等待时间再乘0.5):1/7200 x 60 x 1000 x 1/2=4.17ms 平均寻址时间:8+4.17=12.17ms
例题2:一个磁盘组共11片,每片有203道,数据传输率为983040 Bps,磁盘组转速为3600 rpm。假设每个记录块有1024B,且系统可以挂16台这样的磁盘机,计算该磁盘存储器的总容量并设计磁盘地址格式。
磁盘存储容量C=(nks)磁面数n=16 x(11x2-2)磁道数k=203每条磁道上的记录的二进制代码数s=每条磁道上的扇段数 X 每个扇段(记录块)所记录的字节数,但是没有给每条磁道上的扇段数每条磁道上的扇段数只能根据数据传输率和转速算老师说过,实在不知道怎么算就利用单位,B/S=r/S X B/r(我这个也不懂),B/r=B/s X s/r=983040 X 60 X 1/3600=16384C=16 x(11x2-2) x 203 x 16384=1064304640B磁盘地址格式为:台号+柱面号+盘面号+扇段号16台这样的磁盘机=2^4,所以台号为4每片有203道,最近256=2^8,所以柱面号8盘面20,比他大且最接近32=2^5,所以扇面号5扇段号=16384/1024=16=2^4,所以扇段号为4
4.8.1 虚拟存储器
例题cache是纯硬件完成的,不需要处理器参与切换进程
5 输入输出系统
5.1 概述
输入输入系统的组成:
1. I/O软件:
①I/O指令
②通道指令:通道能识别的指令
2. I/O硬件:①接口模块 ②I/O设备
3.I/O指令和通道指令的区别: 通道指令是自身的指令, 用来执行I/O操作, 而I/O指令是CPU指令系统的一部分.
I/O设备与主机的联系方式
1. I/O设备编址方式
①统一编址: 全部放在内存里,将I/O设备看做是存储器的一部分, 所以将设备码看作是 地址码, 通过地址码访问I/O设备.
②不统一编址: 通过专用的I/O指令 才能访问I/O设备.
2.I/O设备寻址方式
①并行传输:适用近距离,速度快,效率不一定高
②串行传输:适用远距离
3.I/O设备与主机的联络方式(主机必须知道I/O设备当前什么状态才能够决定是否可以发送数据)
①立即响应方式: 只要CPU的I/O指令一到,设备就立即响应.(这样做的前提是, I/O设备已经处于等待状态)
②异步工作方式: I/O设备和CPU各自完成自身的任务, 一旦出现联络信号, 彼此才准备交换信息.
③同步工作方式: 要求I/O设备与CPU的工作速度完全同步, 发送有多快, 接收就要有多块.
5.I/O设备和主机之间的连接方式
①辐射式: 要求每一套I/O设备都要有一套控制线和一组信号线.
②总线式:现代计算机采用方式,所有设备都通过一套控制线和信号线与主机连接(共享)
常见的I/O设备:
输入设备:鼠标、键盘输出设备:显示器、打印机既可输入也可输出设备:硬盘、光盘
主机如何与I/O设备进行交互?
I/O接口(USB接口):又称I/O控制器、设备控制器,负责协调主机与外部设备之间的数据传输键盘插入电脑时需要插入USB插口,USB插口后部就有一个I/O设备,用来控制主机和键盘的数据交互
一般I/O控制器就是一块芯片,常被集成到主板上,通过主板上面的总线,和CPU\内存等进行连接
I/O设备与主机交换信息的三种控制方式
程序查询方式
程序中断方式:
特点:
①程序中断方式消除了程序查询方式的踏步现象,提高了资源利用率
②占用CPU内部寄存器,消耗资源
过程:
①中断现行程序
②保护断点,保存状态至寄存器
③转至中断服务程序
④处理完后返回断点DMA方式:
①进一步提高资源利用率
②主存与I/O设备之间有一条数据通路
③CPU总是将总线占有权让给DMA,让一个机器周期(又称存取周期/窃取周期/挪用周期)
④DMA接口也是一种特殊的I/O控制器
5.2 I/O接口
作用
数据缓冲功能:通过数据缓冲寄存器(DBR)达到主机和外设工作速度的匹配村务或状态监测:通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用控制和定时:接收从控制总线发来的控制信号、时钟信号数据格式转换:串-并、并-串等格式的转换与主机和设备通信:实现主机—I/O接口—I/O设备之间的通信
如何确定要操作的设备?每个设备对应一组寄存器,操作不同的寄存器就是在操作不同的设备
接口与端口
I/O端口
I/O端口是指接口电路中可以被CPU直接访问的寄存器统一编址和独立编址
统一编址
(1)把I/o端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问I/o端口,又称存储器映射方式
(2)靠不同的地址码区分内存和I/o设备,I/O地址要求相对固定在地址的某部分。
(3)优点:不需要专门的输入/输出指令,所有访存指令都可直接访问端口,程序设计灵活性高。端口有较大的编址空间
(4)缺点:端口占用了主存地址空间,使主存地址空间变小。外设寻址时间长(地址位数多,地址译码速度慢)
独立编址
(1)IO端口地址与存储器地址无关,独立编址CPU需要设置专门的输入/输出指令访问端口,又称I/O映射方式
(2)靠不同的指令区分内存和I/o设备
(3)优点:使用专用I/O指令,程序编制清晰;I/O端口地址位数少,(地址译码速度快;I/O端口的地址不占用主存地址空间
(4)缺点:I/O指令类型少,一般只能对端口进行传送操作,程序设计灵活性差;需要CPu提供存储器读/写、/O设备读/写两组控制信号,增加了控制逻辑电路的复杂性
I/O接口的类型 按照数据传送方式可以分为:
(1)并行接口:一个字节或一个字所有位同时传送
(2)串行接口:一位一位地传送按主机访问I/O设备的控制方式可以分为:
(1)程序查询接口
(2)中断接口
(3)DMA接口按功能选择的灵活性可以分为:
(1)可编程接口
(2)不可编程接口
5.3 I/O控制方式
5.3.1 程序查询方式
程序查询需要执行的三条指令 测试指令:查询I/O设备是否准备就绪传送指令:准备就绪,执行传送指令转移指令:未准备就绪,执行转移指令,再继续执行测试指令 查询多个设备时优先级标准为:先查速度快的,离CPU越近速度越快计数值(保存在堆栈中): 将传送的数据长度保存为负数的补码形式,每次加一至溢出则结束模拟:打印2个字符ab1. 2个字符可能存在寄存器,也可能存在主存内,如果存在只存内,只需要对主存进行一次读主存操作即可假设a放在寄存器1中,b放在寄存器2中。2. CPU向打印机发出打印的命令字(一串2进制):用OUT指令发出打印的命令—CPU通过地址线指明我要输出的I/O端口地址是Rn+1;CPU通过控制线指明此次对I/O端口写操作,要写的命令字数据只需要通过数据线传到Rn+1端口即可3. 打印机对应的I/O接口(I/O控制逻辑电路)通过需要根据CPU发来的打印命令信号,通过控制线传输给打印机,启动打印机。启动后,打印机会通过状态线给I/O接口一个反馈,I/O接口发现打印机启动操作已经完成,I/O控制逻辑电路会给ready就绪这个状态信息存放在Rn+1接口(因为打印命令已经发出,所以没有必要继续存储了)4. CPU采取程序查询方式,打印机通过OUT指令发出打印状态之后,CPU会一直循环检查状态寄存器是否已经变成了就绪的状态6. CPU开始输出a字符,通过地址线指明操作Rn接口……
例题:在程序查询方式的输入/输出系统中,假设不考虑处理时间,每一个查询操作需要100个时钟周期,CPU的时钟频率为50MHz。现有鼠标和硬盘两个设备,而且CPU必须每秒对鼠标进行30次查询,硬盘以32位字长为单位传输数据,即每32位被CPU查询一次,传输率为2×220B/s。求CPU对这两个设备查询所花费的时间比率,由此可得出什么结论?
此时牵扯到一个知识点:CPU程序查询方式:在数据不丢失的情况下—定时查询(有间隔时间)和独占查询(100%的时间)
5.3.2 中断的作用及原理
中断的基本概念 程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPu暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。不同的中断请求,需要不同的中断程序处理工作流程
(1)中断源向CPU发送中断请求信号
(2)中断响应
1. 响应中断的条件假如收到 关中断 的请求,那么CPU就不会响应中断
2. 中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源
(3)中断处理
1. 中断隐指令:中断隐指令并不是一条具体的CPU指令因为不同的中断请求,需要不同的中断程序处理,所以需要通过隐指令的帮助把CPU的指令执行流转移到正确的中断服务程序
2. 中断服务程序 中断请求的分类CPU如何分辨收到 关中断的信号呢
关中断的作用:实现原子操作原子操作:一些指令要么不执行,要么一气呵成的执行完
IF=1表示开中断(允许中断)
IF=0表示关中断(不允许中断)
中断请求标记(如何判断是哪个设备发来的中断信号)
每个中断源向CPU发出中断请求的时间是随机的。为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR,当其状态为“1”时,表示中断源有请求。这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中
对于外中断,CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取i/o的中断请求,也就是说,CPU响应中断的时间是在每条指令执行阶段的结束时刻CPU响应中断必须满足以下3个条件:
1. 中断源有中断请求
2. CPU允许中断,即开中断
3. 一条指令执行完毕,且没有更紧迫的任务中断判优—实现如上图,有多个中断信号同时到来,先处理哪一个
中断判优既可以用硬件实现,也可用软件实现:硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中软件实现是通过查询程序实现的。
中断判优—优先级设置 硬件故障中断属于最高级,其次是软件中断非屏蔽中断优于可屏蔽中断DMA请求优于I/oO设备传送的中断请求高速设备优于低速设备输入设备优于输出设备实时设备优于普通设备
中断处理过程
中断处理过程—硬件向量法
注意区分向量地址(中断类型号)和中断向量
中断处理过程—中断服务程序
总结
5.3.3 多重中断
单重与多重中断屏蔽字—中断屏蔽字(用来屏蔽某些中断的)中断屏蔽技术
例题:设某机有4个中断源A、B、C、D,其硬件排队优先次序为A>B>C>D,现要求将中断处理次序改为D>A>C>B。
1)写出每个中断源对应的屏蔽字。
2)按下图所示的时间轴给出的4个中断源的请求时刻,画出CPU执行程序的轨迹。设每个中断源的中断服务程序时间均为20us。
5.3.4 程序中断方式
例题解答第2题(第一题与本节无关)
5.3.5 DMA方式
DMA控制器通常是用来控制某些快设备(磁盘)
CPU向DMA控制器指明要输入还是输出;要传送多少个数据;数据在主存、外设中的地址 传送前 接受外设发出的DMA请求(外设传送一个字的请求),并向CPU发出总线请求CPU响应此总线请求,发出总线响应信号,接管总线控剧权,进入DMA操作周期 传送时 确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作 传送后—向CPU报告DMA操作的结束
DMA控制器内部结构
DMA传送过程
DMA方式的特点
主存和DMA接口之间有一条直接数据通路。
由于DMA方式传送数据不需要经过cPu,因此不必中断现行程序,I/O与主机并行工作,程序和传送并行工作。它使主存与CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问。在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。主存中要开辟专用缓冲区,及时供给和接收外设的数据。DMA传送速度快,CPU和外设并行工作,提高了系统效率。DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
DMA传送方式
DMA方式中断方式
6 计算机的运算方法
6.1 无符号数和有符号数
在计算机中,用来表示主存地址的是无符号数
6.1.1 进位计数制
基数:每个数码位所用到的不同符号的个数,r进制的基础是r
r进制转化为十进制:
二进制—>十进制:101.1—> 1x22+0x21+1x20+1x2-1=5.5
八进制—>十进制:5.4—> 5x80+4x8-1=5.5
十六进制—>十进制:5.8—> 5x160+8x16-1=5.5
还可以利用每个位置的权值计算,例如二进制10010010.110转化为十进制权重:128 64 32 16 8 4 2 1 0.5 0.25 0.125二进制:1 0 0 1 0 0 1 0.11 0结果:128+16+2+0.5+0.25=146.75
二进制<—> 八进制、十六进制
1111000010.01101
二进制—>八进制
3位一组,每组转换成对应的八进制符号
001 111 000 010 . 011 010(不够分组,前面加0补齐)
1 7 0 2 . 3 2八进制—>二进制
每位八进制对应的3位2进制
(251.5)8—>(010 101 001.101)2二进制—>十六进制
四位一组,每组转换成对应的十六进制符号
0011 1100 0010 . 0110 1000
3 C 2 . 6 8十六进制—>二进制
每位十六进制对应的4位二进制
(AE86.1)16—>(1010 1110 0110.0001)2
各种进制的常见书写方式
十进制—>任意进制
短除法
拼凑法(如果给的十进制不大可以用这个方法)
真值和机器数
真值:符合人类习惯的数字
机器数:数字实际存到机器里的形式,正负号需要被“数字化”
6.1.2 BCD码
8421码—有权码
4个二进制位—>16种不同的状态
BCD码直接使用其中10种—>不同的映射方案
落在1010—10010的范围都可以+6进行修正
余3码:8421码+(0011)2—无权码
6.1.3 无符号整数的表示和运算
无符号整数:即自然数
C语言的无符号整数:
unsigned short a=1;//无符号整数(短整型,2B)unsigned int b=2;//无符号整数(整型,4B)
提问
无符号整数,在计算机硬件内,如何表示呢?无符号整数的加法、减法运算是怎么用硬件实现的呢? 无符号整数 无符号整数的表示
假如机器字长为8位—所以最多只能进行8位运算,即通用寄存只能存8位(现在的计算机机器字长通常是64或者32位)
全部二进制都是数值位,没有符号位,第 i 位的位权是2i-1n bit 无符号整数表示范围是0—2n-1,(2n-1是等比数列求和),超出则溢出,意味着该计算机无法一次处理这么多可以表示最小的数,全0,可以表示最大的数,全1 无符号整数的加法运算:从最低位开始,按位相加,并往更高位进位
假如A-B=99-9 减数B的变形 减法变加法
超出的1丢弃,不影响结果
6.1.4 带符号整数的表示和运算
带符号整数,即“整数”,-2,-1,0,1……
C语言中的带符号整数:(位数不同,可表示的数值范围不同)
short a=1;//短整型,2Bint b=-2;//整型,4B
带符号整数的表示
原码、补码、反码(同一个含义,用不同的编码方式表示)
(假如机器字长为8位—所以最多只能进行8位运算,通用寄存只能存8位(现在的计算机机器字长通常是64或者32位),因此计算机硬件能支持的带符号整数位数有上限)
原码表示 原码的缺点:符号位不能参与运算,需要设计复杂的硬件电路才能处理,费钱!贵! 补码表示真值—符号位可以参与运算
以上是机算方法,且补码转反码不好计算(末位-1,减法不好计算)
那么我们可以:补码—原码—反码
特性总结
原码表示:A=-64,B=-64会溢出,因为-127—127补码表示:A=-64,B=-64不会溢出:因为范围是-128—127
移码
6.1.5 定点小数
定点数:定点整数(带符号整数)、定点小数
原码表示
原码—>反码—>补码、加减运算和整数一样
定点小数和定点整数区别
案例
6.2 算术逻辑单元
6.2.1 电路基本原理+加法器设计
算术逻辑单元(ALU)6.2.2 并行进位加法器
串行进位的并行加法器
串行进位的并行加法器:把n个全加器串接起来,就可进行两个n位数的相加。串行进位又称为行波进位,每一级进位直接依赖于前一级的进位,即进位信号是逐级形成的。结论:第i位向更高位的进位C可根据被加数、加数的第1~i1位,再结合C。即可确定
6.2.3 补码加减运算
加法器原理 例题:A=1000,B=0111,Cin=0,则F=1111,Cout=0例题:A=1000,B=0111,Cin=1,则F=0000,Cout=1补码加减运算方法 nbit补码X+Y。按位相加即可nbit补码X-Y:将补码Y全部按位取反,末位+1,得到[-Y]补,减法变加法 例:4bit补码,X=8,Y=7,X补=1000,Y补=0111
X+Y=1111B
X-Y=1000+(1000+1)=10001(最前面1溢出,丢弃)4bit补码,X=3,Y=4,X补=0011,Y补=0100
X+Y=0111B
X-Y=0011+(1011+1)=1111B
无符号整数的加减也可以用该电路实现 无符号整数X=8,Y=7,用4bit表示,,X=1000B,Y=0111B
X+Y=1111B=15D
X-Y=1000+(1000+1)=10001(最前面1溢出,丢弃)=1D**(正确)**无符号数X=3,Y=4,用4bit表示,X=0011B,Y=0100B
X-Y=0011+(1011+1)=1111B=15D**(错误)**
6.2.4 标志位的产生
6.2.5 定点数的移位运算
原码的算数移位――符号位保持不变,仅对数值位进行移位。 右移左移
反码的算数移位 正数的反码和原码相同,因此移位运算也相同:
(1)右移:高位补0,低位舍弃
(2)左移:地位补0,高位舍弃反码的算数移位—负数的反码数值为与原码相反,因此负数的反码的移位运算规则为:
(1)右移:高位补1,低位舍弃
(2)左移,低位补1,高位舍弃 补码的算数移位 正数与原码相同,移位运算相同负数补码=反码末位+1,导致反码最右边几个连续的1都因为进位变成0,直到进位碰到第一个0为止
规律――负数补码中,最右边的1及其右边同原码。最右边的1的左边同反码
(1)右移(同反码):高位补1,低位舍弃
(2)左移(同原码):低位补0,高位舍弃
案例
-20X7
7D=111B=20+21+22
-20X(20+21+22)
20:不左移
21:左移1位
22:左移2位 逻辑移位 逻辑右移:高位补o,低位舍弃。逻辑左移:低位补o,高位舍弃。
循环移位
6.2.6 原码的乘法运算
6.2.7 补码的乘法运算
后期再补
6.3 浮点四则运算
6.3.1 浮点数的表示
定点数的局限性定点数可表示的数字范围有限,但我们不能无限制地增加数据的长度浮点数的表示
但是对于b,阶码0,10对应真值+2
位数0.01001,对应真值为-(2-2+2-5)
b的真值=22X(-0.01001)=-1.001
1B的存储空间不够,最后一位1存不下,只能抛弃,但是精度降低,所以进行浮点数位数的规划进行优化
浮点数位数的规格化:规定尾数的最高数值位必须是一个有效值
b=21X(+0.10010) 右规:当浮点数运算的结果尾数出现溢出(双符号位为01或10),可以挽救,将尾数算数右移一位,阶码加1。 a=010;00.1100,b=010;00.1000,求a+b
a=22x00.1100,b=22X00.1000
a+b=22X(00.1100+00.1000)
=22X01.0100
=23X00.1010
浮点数规格化的特点
6.3.2 IEEE 754 标准
移码:补码的基础上符号位取反(只能表示整数)
移码定义:移码=真值+偏置值
此处8位移码的偏置值=128D=10000000B,即2n-1,n指的是移码的总位数2^7^=128
真值-127=-11111111B
移码=-1111111+100000000=00000001真值-3=-11B
移码=-11+100000000=011111101 偏置值一般取2n-1,此时移码=补码符号位取反,但是也可以取其他值 IEEE 754中偏置值=127D=01111111B,即2n-1-1 真值-128=-10000000B
移码=-10000000+01111111=11111111
在mod28,将被减数+28,被减数01111111+10000000=10111111,进行减法真值-127=-1111111
移码=-111 1111+01111111=0000 0000
IEEE 754版本
由浮点数确定真值(阶码不是全0、也不是全1): 根据“某浮点数”确定数符、阶码、尾数的分布确定尾数1.M(注意补充最高的隐含位1)确定阶码的真值=移码-偏置值(可将移码看作无符号数,用无符号数的值减去偏置值)(一1)×1.MX2E-偏置值
6.3.3 浮点数的运算
浮点数的加减运算步骤
对阶
小阶向大阶靠齐尾数加减规格化舍入
计算机内部浮点数的尾部比特位有限判溢出
例题:已知二进制X=-5/256,Y=+59/1024,按机器补码浮点运算规则计算X-Y,结果用二进制表示,浮点数格式如下:阶码取两位,阶码取3位,数符取2位,尾数取9位
0.转换格式,并用补码表示阶码和尾数5D=101B,1/256=2^(-8)X=-101 X 2^(-8)=-0.101 X 2^(-5)=-0.101 X 2^(-101)阶码补码:1011,双符号位补码:11011尾数补码:1.011,双符号位补码:11.011,扩展:11.011000000X=11011,11.01100000059D=111011B,1/1024=2^(-10)Y=+111011 X 2^(-10)=+0.111011 X 2^(-4)=+0.111011 X 2^(-100)阶码补码:1100,双符号位补码:11100尾数补码:0.111011,双符号位补码:00.000101,扩展:00.1110110001. 对阶使两个数的阶码相等,小阶向大阶看齐,尾数每右移一位,阶码+1333(2)对阶:令X向右移一位,阶码+1X=11011,11.011000000X=11100,11.101100000X=0.0101 X 2^(-100)2. 尾数加减-Y=11100,11.000101000X+[-Y]=10.110001000发生溢出X-Y=-1.001111X2^(-100),定点数>1,无法表示X-Y=11100,10.1100010003. 规格化(右规,高位空位补1,双符号位最高位是正确的符号)X-Y=11101,11.011000100X-Y=-0.1001111X2^(-011)4. 舍入——无舍入(右移已经抛弃了一个0,不影响)5. 判溢出(常阶码,双符号位相同,无溢出)结果真值:2^(-3)X(-0.1001111)2
例题2: 按机器数补码浮点运算步骤计算
x=2-011 x 0.101100,y=2-010 x (-0.011100)
浮点数的加减运算——舍入
“0”舍“1”入法:类似于十进制数运算中的“四舍五入”法,即在尾数右移时,被移去的最高数值位为0,则舍去;被移去的最高数值位为1,则在尾数的末位加1。这样做可能会使尾数又溢出,此时需再做一次右规。恒置“1”法:尾数右移时,不论丢掉的最高数值位是“1”还是“O”,都使右移后的尾数末位恒置“1”。这种方法同样有使尾数变大和变小的两种可能。 加减结果为11100,10.110001011 (0舍1入):11100,11.011000110(横置1):11101,11.011000101
强制类型转换
7 指令系统
7.1 指令格式
指令:定义—是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
指令:操作码+地址码
一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。
注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。
指令的分类
按照操作码长度分类 定长操作码:指令系统中所有指令的操作码长度都相同
n位→2n条指令(控制器的译码电路设计简单,但灵活性较低)可变长操作码:指令系统中各指令的操作码长度可变
(控制器的译码电路设计复杂,但灵活性较高)扩展操作码指令格式:定长指令字结构+可变长操作码 按指令长度分类指令字长:一条指令的总长度(可能会变)
机器字长:cPu进行一次整数运算所能处理的二进制数据的位数(通常和ALu直接相 关)
存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)半字长指令、单字长指令、双字长指令――指令长度是机器字长的多少倍
指令字长会影响取指令所需时间。如:机器字长=存储字长=16bit,则取一条双字长指令需要两次访存分类:
1. 定长指令字结构:指令系统中所有指令的长度都相等
2. 变长指令字结构:指令系统中各种指令的长度不等 根据地址码数目不同 零地址指令OP
(1)不需要操作数,如空操作、停机、关中断等指令
(2)堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶一地址指令OP+A1
(1)只需要单操作数,如+1,减1,取反、求补等
OP(A)→A
(2)需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC)
(ACC)OP(A1)→ACC
3. 二地址指令—常用于需要两个操作数的算术运算、逻辑运算相关指令
(1)指令含义:(A1)OP(A2)→A1
(2)完成一条指令需要访存4次,取指→读A1→读A2→写A1三地址指令—常用于需要两个操作数的算术运算、逻辑运算相关指令
(1)指令含义:(A1)OP(A2)→A3
(2)完成一条指令需要访存4次,取指→读A2→读A3→写A3
4. 四地址指令
(1)指令含义:(A1)OP(A2)→A3,A4=下一条将要执行指令的地址
(2)完成一条指令需要访存4次,取指→读A1→读A2→写A3
正常情况下:取指令之后PC+1,指向下一条指令
四地址指令:执行指令后,将PC的值修改位An所指地址 按操作了类型分类
7.2 扩展操作码
定长指令字结构+可变长操作码→扩展操作码指令格式(不同地址数的指令使用不同长度的操作码
)