计算机组成原理唐朔飞第2版高 等 教 育 出 版 社高等教育电子音像出版社为配合由高等教育出版社出版的面向 21世纪课程教材,计算机组成原理,
教学和自学的需要,随书出版了,计算机组成原理,配套课件 。 为了配合该教材的第2版,本课件在保留原课件特色的基础上,做了相应的补充和修改 。
该课件与,计算机组成原理,第2版教材在体系上完全一致,它 以课堂教学为依托,帮助读者边阅读边思考,通过点击鼠 标,逐行显示精练的文字和简明的图表,既可从文稿中对教材的重点和难点加深理解,又可从视图中看到动画演示效果,形象地理解各种电路的工作原理和设计思路 。
新版课件 提供了章目录和节目录 。 操作上除了顺序播放外,还可任选一章,
任选一节播放,并可从任意一页幻灯片返回到上一级目录 。 具体功能如下 。
1,进入章目录后,可点击任一章播放 。
2,进入节目录后,可点击任一节播放 。
3,每一节播放结束时,可继续播放,也可点击本节最后一页幻灯片右下角的按钮,回到上一级目录,再点击节目录幻灯片右下角的按钮,即可回到章目录 。
4,点击任一页幻灯片右下角的按钮,均可回到上一级目录 。
在修改课件过程中,哈尔滨工业大学计算机科学与技术学院张丽杰,罗丹彦为课件的录入,排版,绘图,动画演示做了大量工作,在此表示衷心感谢 。
由于时间仓促,难免有不妥之处,敬请读者和专家批评指正 。
唐朔飞
2007年 12月第 1 章 计算机系统概论第 3 章 系统总线第 4 章 存储器第 5 章 输入输出系统第 6 章 计算机的运算方法第 7 章 指令系统第 8 章 CPU 的结构和功能第 9 章 控制单元的功能第 10章 控制单元的设计第 2 章 计算机的发展及应用第 1 章 计算机系统概论
1.1 计算机系统简介
1.4 本书结构
1.3 计算机硬件的主要技术指标
1.2 计算机的基本组成
1.1 计算机系统简介由具有各类特殊功能的信息(程序)组成
1,计算机系统计算机系统计算机的实体,
如主机、外设等一,计算机的软硬件概念硬件软件按任务需要编制成的各种程序用来管理整个计算机系统系统软件应用软件语言处理程序操作系统服务性程序数据库管理系统网络软件软件
1.1
计算机高级语言程序目标程序结果翻译运行
1.12,计算机的解题过程二、计算机系统的层次结构高级语言 虚拟机器 M3
汇编语言 虚拟机器 M2
操作系统 虚拟机器机器语言 实际机器 M1
微指令系统 微程序机器 M0
1.1
用编译程序翻译成汇编语言程序用汇编程序翻译成机器语言程序用机器语言解释操作系统用微指令解释机器指令由硬件直接执行微指令软件硬件
1.1
虚拟机器 M4
虚拟机器 M3
虚拟机器 M2
实际机器 M1
微程序机器 M0
程序员所见到的计算机系统的属性概念性的结构与功能特性计算机体系结构计算机组成实现计算机体系结构所体现的属性有无乘法指令如何实现乘法指令
(指令系统、数据类型、寻址技术,I/O机理)
(具体指令的实现)
1.1三,计算机体系结构和计算机组成
1.2 计算机的基本组成
1,计算机由五大部件组成
3,指令和数据用二进制表示
4,指令由操作码和地址码组成
6,以运算器为中心
2,指令和数据以同等地位存于存储器,
可按地址寻访
5,存储程序一,冯 ·诺依曼计算机的特点算术运算逻辑运算存放数据和程序将信息转换成机器能识别的形式将结果转换成人们熟悉的形式指挥程序运行
1.2冯 ·诺依曼计算机硬件框图存储器输入设备 运算器控制器输出设备
1.2冯 ·诺依曼计算机硬件框图存储器输入设备 运算器控制器输出设备二、计算机硬件框图 1.2
1,以存储器为中心的计算机硬件框图程序存储器 输出设备输入设备运算器控制器数据结果计算
ALU
主存辅存
CPU
主机
I/O设备硬件
CU
2.现代计算机硬件框图存储器输入设备运算器输出设备控制器
1.2
ALU
CPU主机
I/O
设备CU
主存
1.上机前的准备
建立数学模型
-+-+-= !x9!x7!x5!x3xx 9753sin …
编制解题程序
确定计算方法程序 —— 运算的 全部步骤
0,1,2,)()(21 ny
n
xynx =+=√ …
指令 —— 每 一个步骤
1.2三、计算机的工作步骤取 x 至运算器中乘以 x 在运算器中乘以 a 在运算器中存 ax2 在存储器中取 b 至运算器中乘以 x 在运算器中加 ax2 在运算器中加 c 在运算器中
= (ax + b)x + c
取 x 至运算器中乘以 a 在运算器中加 b 在运算器中乘以 x 在运算器中加 c 在运算器中计算 ax2 + bx + c
1.2编程举例
000001 0000001000
打印?
停机取数 α [α] ACC
存数 β [ACC] β
加 γ [ACC]+[γ] ACC
乘 δ [ACC]× [δ] ACC
指令格式举例 1.2
操作码 地址码
[?] 打印机指令和数据存于主存单元的地址指令 注释操作码 地址码
0 000001 0000001000 取数 x至 ACC
1 000100 0000001001 乘 a得 ax,存于 ACC中
2 000011 0000001010 加 b得 ax+b,存于 ACC中
3 000100 0000001000 乘 x得( ax+b)x,存于 ACC中
4 000011 0000001011 加 c得 ax2 + bx + c,存于 ACC
5 000010 0000001100 将 ax2 + bx +c,存于主存单元
6 000101 0000001100 打印
7 000110 停机
8 x 原始数据 x
9 a 原始数据 a
10 b 原始数据 b
11 c 原始数据 c
12 存放结果
1.2计算 ax2 + bx + c 程序清单存储体大楼存储单元 存放一串二进制代码存储字 存储单元中二进制代码的组合存储字长 存储单元中二进制代码的位数每个存储单元赋予一个地址号按地址寻访
– 存储单元 – 存储元件 ( 0/1)
– 房间 – 床位 (无人 /有人)
(1)存储器的基本组成
1.2
MDR
主存储器存储体
MAR
2.计算机的解题过程
MAR
MDR
存储单元个数 16
存储字长 8
设 MAR= 4位
MDR= 8位
1.2
存储器地址寄存器反映存储单元的个数存储器数据寄存器反映存储字长
(1)存储器的基本组成
MDR
主存储器存储体
MAR
ACC MQ X
(2)运算器的基本组成及操作过程 1.2
运算器
MQACC
ALU
X
被加数被减数被除数乘数商加数减数被乘数除数加法减法乘法除法和差余数乘积高位 乘积低位运算器
MQACC
ALU
X
ACC 被加数初态
① 加法操作过程 1.2
[ACC]+[X]
ALU [M] X
ACC
指令 加 M
1.2② 减法操作过程运算器
MQACC
ALU
X
指令 减 M
ACC 被减数初态
[M] X
[ACC]-[X]
ALU
ACC
运算器
MQACC
ALU
X
ACC 被乘数初态
1.2
[M] MQ
指令 乘 M
③ 乘法操作过程
[ACC] X
ALU
[X]× [MQ]
0
0 ACC
ACC∥ MQ
运算器
MQACC
ALU
X
ACC 被除数初态
1.2
[ACC]÷ [X]
ALU
MQ
余数在 ACC中指令 除 M
[M] X
④ 除法操作过程取指令分析指令执行指令
PC
IR
CU
PCIR
CU
取指执行
PC 存放当前欲执行指令的地址,
具有计数功能( PC) +1 PC
IR 存放当前欲执行的指令访存访存完成一条指令
1.2(3)控制器的基本组成
1
2 3
5
6
7 8
9
以取数指令为例
4
(4)主机完成一条指令的过程 1.2
CU
控制单元主存储器
MDRMAR
存储体
CPU
PC
控制器
IR

运算器
MQACC
ALU
X
I/O
设备
1
2 3
5
6
7 9
8
以存数指令为例
4
1.2(4)主机完成一条指令的过程
CU
控制单元主存储器
MDRMAR
存储体
CPU
PC
控制器
IR

运算器
MQACC
ALU
X
I/O
设备
(5) ax2 + bx + c 程序的运行 过程
将程序通过输入设备送至计算机
程序首地址
打印结果
分析指令
取指令

停机
启动程序运行
,(PC)+1 PC
执行指令
1.2
MAR M MDR IRPC
CUOP(IR)
Ad(IR) MAR M MDR ACC
PC
1.3 计算机硬件的主要技术指标
1.机器字长
2.运算速度
CPU 一次能处理数据的位数与 CPU 中的 寄存器位数 有关
= n
i=1
fi tiTM 吉普森法主频每秒执行百万条指令MIPS
执行一条指令所需时钟周期数CPI
每秒浮点运算次数FLOPS
221 =256 KB
213 =1 KB如
3.存储容量主存容量辅存容量存储单元个数 × 存储字长字节数字节数 80 GB
如 MAR MDR 容量
10 8
16 32
存放二进制信息的总位数 1.3
1K = 210
1B = 23b
1GB = 230b
1 K× 8位
64 K× 32位第 1 篇 概论
1.4 本书结构计算机
1.4 本书结构第2篇计算机系统的硬件结构计算机
I/O
系统总线存储器
CPU
1.4 本书结构
CPU
内部互连
ALU CU
寄存器中央处理器第 3 篇 CPU
计算机
I/O
系统总线存储器
CPU
1.4 本书结构
CPU
内部互连
ALU CU
寄存器中央处理器寄存器和解码器控制单元排队逻辑控制存储器第4篇 CU
计算机
I/O
系统总线存储器
CPU
第2章 计算机的发展及应用
2.3 计算机的展望
2.2 计算机的应用
2.1 计算机的发展史
2.1 计算机的发展史一、计算机的产生和发展
1946年 美国 ENIAC 1955年退役十进制运算
18 000
1 500
150
30
1 500
多个电子管多个继电器千瓦吨平方英尺
5 000 次加法/秒用手工搬动开关和拔插电缆来编程世界上第一台电子计算机 ENIAC(1946)
2.1
硬件技术对计算机更新换代的影响
100 000 000超大规模集成电路1978-现在五
10 000 000
大规模集成电路1972- 1977
1 000 000中小规模集成电路1965- 1971
200 000晶体管1958- 1964
40 000电子管1946- 1957
速度 /(次 /秒)硬件技术时间代三四二一
2.1
第一台 von Neumann 系统结构的计算机 2.1
IBM System/ 360 2.1
2.1
1,IBM,BlueGene/L - eServer Blue Gene
Solution
212 992 个 CPU 最大平均速度 478 200 GFLOPS
最快的五台超级计算机 (截止到 2007.11)
2.1
2.IBM,JUGENE - Blue Gene/P Solution
65 536个 CPU 最大平均速度 167 300 GFLOPS
最快的五台超级计算机 (截止到 2007.11)
3.SGI,SGI Altix ICE 8200
2.1
14 336个 CPU 最大平均速度 126 900 GFLOPS
最快的五台超级计算机 (截止到 2007.11)
2.1
4,HP,EKA - Cluster Platform 3000 BL460c
14 240个 CPU 最大平均速度 117 900 GFLOPS
最快的五台超级计算机 (截止到 2007.11)
2.1最快的五台超级计算机 (截止到 2007.11)
5,HP,Cluster Platform 3000 BL460c
13 728个 CPU 最大平均速度 102 800 GFLOPS
2.1
最权威的超级计算机排名的参考网址
http://www.top500.org
二、微型计算机的出现和发展微处理器芯片 存储器芯片1971年
8位
16位
32位
64位
4位( 4004)
1970年
256位
1K位
16K位
64K位
256K位
1M位
16M位
64M位
4K位
4M位
2.1
Moore 定律
Intel 公司的缔造者之一
Gordon Moore 提出微芯片上集成的晶体管数目每三年翻两番
2.1
Intel 公司的典型微处理器产品
8080 8位 1974年
8086 16位 1979年 2.9 万个晶体管
80286 16位 1982年 13.4 万个晶体管
80386 32位 1985年 27.5 万个晶体管
80486 32位 1989年 120.0 万个晶体管
Pentium 64位(准) 1993年 310.0 万个晶体管
Pentium Pro 64位(准) 1995年 550.0 万个晶体管
Pentium Ⅱ 64位(准) 1997年 750.0 万个晶体管
Pentium Ⅲ 64位(准) 1999年 950.0 万个晶体管
Pentium Ⅳ 64位 2000年 4 200.0 万个晶体管
2.1
2007 年 芯片上可集成 3亿 5千万 个 晶体管预计 2010 年 芯片上可集成 8亿 个晶体管三、软件技术的兴起和发展机器语言 面向机器汇编语言 面向机器高级语言 面向问题
FORTRAN 科学计算和工程计算
PASCAL 结构化程序设计
C++ 面向对象
Java 适应网络环境
1,各种语言
2.1
2,系统软件语言处理程序 汇编程序 编译程序 解释程序操作系统 DOS UNIX Windows
服务性程序 装配 调试 诊断 排错数据库管理系统 数据库和数据库管理软件网络软件
2.1
3,软件发展的特点
开发周期长
制作成本昂贵
检测软件产品质量的特殊性软件是程序以及开发、使用和维护程序所需要的所有文档
2.1
2.2 计算机的应用一、科学计算和数据处理二、工业控制和实时控制三、网络技术
1,电子商务
2,网络教育
3,敏捷制造四、虚拟现实五、办公自动化和管理信息系统六,CAD/CAM/CIMS
七、多媒体技术八、人工智能
2.2
2.3 计算机的展望一、计算机具有类似人脑的一些超级智能功能要求计算机的速度达 1015/秒二、芯片集成度的提高受以下三方面的限制
芯片集成度受物理极限的制约
按几何级数递增的制作成本
芯片的功耗、散热、线延迟三、?替代传统的硅芯片
1,光计算机
2,DNA生物计算机
3,量子计算机利用光子取代电子进行运算和存储通过控制 DNA分子间的生化反应利用原子所具有的量子特性
2.3
第3章 系统总线
3.1 总线的基本概念
3.2 总线的分类
3.3 总线特性及性能指标
3.4 总线结构
3.5 总线控制
3.1 总线的基本概念一、为什么要用总线二、什么是总线三、总线上信息的传送总线是连接各个部件的信息传输线,
是 各个部件共享的传输介质串行并行四、总线结构的计算机举例
1,面向 CPU 的双总线结构框图中央处理器
CPU
I/O总线
M
总线
3.1
主存
I/O接口
I/O
设备 1
I/O
设备 2


I/O接口 I/O接口
I/O
设备 n
单总线(系统总线)
2,单总线结构框图
CPU 主存
I/O接口
I/O
设备 1
I/O
设备 2
I/O接口 …
I/O
设备 n
I/O接口

3.1
3,以存储器为中心的双总线结构框图系统总线主存CPU
I/O接口
I/O
设备 1

I/O
设备 n
I/O接口

存储总线
3.1
3.2 总线的分类
1.片内总线
2.系统总线芯片内部 的总线数据总线地址总线控制总线双向 与机器字长、存储字长有关单向 与存储地址,I/O地址有关有出 有入计算机各部件之间 的信息传输线存储器读、存储器写总线允许、中断确认中断请求、总线请求
3.通信总线串行通信总线并行通信总线传输方式
3.2
用于 计算机系统之间 或 计算机系统与其他系统 (如控制仪表、移动通信等)
之间的通信
3.3 总线特性及性能指标
CPU
插板主存插板
I/O
插板一、总线物理实现
BUS 主板
1,机械特性
2,电气特性
3,功能特性
4,时间特性二、总线特性尺寸,形状,管脚数 及 排列顺序传输方向 和有效的 电平 范围每根传输线的 功能信号的 时序 关系
3.3
地址数据控制三、总线的性能指标
1,总线宽度
2,标准传输率
3,时钟同步 /异步
4,总线复用
5,信号线数
6,总线控制方式
7,其他指标数据线 的根数每秒传输的最大字节数( MBps)
同步,不同步地址线 与 数据线 复用地址线、数据线和控制线的 总和负载能力并发、自动、仲裁、逻辑、计数
3.3
ISA
EISA
VESA(LV-BUS)
PCI
AGP
RS-232
USB
模块系统总线标准四、总线标准系统模块
3.3
标准界面总线标准 数据线 总线时钟 带宽
ISA 16 8 MHz(独立) 33 MBps
EISA 32 8 MHz(独立) 33 MBps
VESA
(VL-BUS) 32 32 MHz( CPU) 133 MBps
PCI 3264 33 MHz(独立)64 MHz(独立) 132 MBps528 MBps
AGP 32 66.7 MHz(独立)133 MHz(独立) 266 MBps533 MBps
RS-232 串行通信总线标准 数据终端设备(计算机)和数据通信设备(调制解调器)之间的标准接口
USB 串行接口总线标准普通无屏蔽双绞线带屏蔽双绞线最高
1.5 Mbps (USB1.0)
12 Mbps (USB1.0)
480 Mbps (USB2.0)
3.3四、总线标准
3.4 总线结构一、单总线结构单总线(系统总线)
CPU 主存
I/O接口
I/O
设备 1
I/O
设备 2
I/O接口 …
I/O
设备 n
I/O接口

1,双总线结构具有特殊功能的处理器,
由通道对 I/O统一管理通道
I/O接口设备 n…
…I/O接口设备 0
CPU 主存主存总线
I/O总线二、多总线结构 3.4
2,三总线结构主存总线
DMA总线
I/O总线CPU
主存设备 1 设备 n高速外设
I/O接口 I/O接口 I/O接口


3.4
3,三总线结构的又一形式 3.4
局域网系统总线
CPU Cache
局部总线扩展总线接口扩展总线
Modem 串行接口SCSI
局部 I/O控制器主存
4,四总线结构多媒体
Modem
主存扩展总线接口局域网SCSI
CPU
串行接口FAX
系统总线局部总线高速总线扩展总线图形
Cache/桥
3.4
1,传 统微型机总线结构三、总线结构举例 3.4
存储器
SCSI Ⅱ
控制器主存控制器
ISA,EISA 8 MHz的 16位数据通路标准总线控制器
33 MHz的 32位数据通路 系统总线多媒体 高速局域网 高性能图形
CPU


Modem
2,VL-BUS局部总线结构 3.4
33 MHz的 32位数据通路系统总线
ISA,EISA
多媒体 高速局域网 高性能图形图文传真
8 MHz的 16位数据通路标准总线控制器
CPU 主存控制器 存储器局部总线控制器
SCSIⅡ
控制器
VL BUS


Modem
3,PCI 总线结构 3.4
CPU
多媒体
PCI 桥高速局域网 高性能图形图文传真
PCI 总线系统总线
33 MHz的 32位数据通路
8 MHz的 16位数据通路
ISA,EISA
标准总线控制器
SCSIⅡ
控制器存储器
Modem
4,多层 PCI 总线结构
PCI总线 2
存储器桥 0 桥 4
PCI设备 桥 5
总线桥 桥 3桥 1 设备桥 2
第一级桥第二级桥第三级桥
PCI总线 4
PCI总线 5
PCI总线 3
PCI总线 1
PCI总线 0
存储器总线标准总线
CPU
3.4
3.5 总线控制一、总线判优控制
总线判优控制分布式集中式
主设备 (模块 ) 对总线有 控制权
从设备 (模块 ) 响应 从主设备发来的总线命令
1,基本概念链式查询计数器定时查询独立请求方式
2,链式查询方式总线控制部件
I/O接口 0 …
BS
BR
I/O接口 1 I/O接口 n
…BG
数据线地址线
BS-总线忙
BR-总线请求
BG-总线同意
3.5
0
BS-总线忙
BR-总线请求总线控制部件数据线地址线
I/O接口 0 …
BS
BR
I/O接口 1 I/O接口 n
设备地址
3,计数器定时查询方式 3.5
计数器设备地址
1
排队器
4,独立请求方式总线控制部件数据线地址线
I/O接口 0 I/O接口 1 I/O接口 n…
BR0
BG0
BR1
BG1
BRn
BGn
BG-总线同意
BR-总线请求
3.5
二、总线通信控制
1,目的
2,总线传输周期主模块申请,总线仲裁决定主模块向从模块 给出地址 和 命令主模块和从模块 交换数据主模块 撤消有关信息申请分配阶段寻址阶段传数阶段结束阶段解决通信双方 协调配合 问题
3.5
由 统一时标 控制数据传送充分 挖掘 系统 总线每个瞬间 的 潜力同步通信异步通信半同步通信分离式通信
3,总线通信的四种方式采用 应答方式,没有公共时钟标准同步,异步结合
3.5
读命令
(1) 同步式数据输入
T1
总线传输周期
T2 T3 T4
时钟地址数据
3.5
数据
(2) 同步式数据输出
T1
总线传输周期
T2 T3 T4
时钟地址写命令
3.5
不互锁 半互锁 全互锁
(3) 异步通信 3.5
主设备从设备请求回答
(4) 半同步通信同步 发送方 用系统 时钟前沿 发信号接收方 用系统 时钟后沿 判断、识别
3.5( 同步,异步 结合)
异步 允许不同速度的模块和谐工作增加一条,等待”响应信号 WAIT
以输入数据为例的半同步通信时序
T1 主模块发地址
T2 主模块发命令

T3 从模块提供数据
T4 从模块撤销数据,主模块撤销命令
Tw 当 为低电平时,等待一个 TWAIT
Tw 当 为低电平时,等待一个 TWAIT
3.5
读命令
WAIT
地址数据
3.5
时钟总线传输周期
T1 T2 TW TW T3 T4
(4) 半同步通信 ( 同步,异步 结合)
上述三种通信的共同点一个总线传输周期(以输入数据为例)
主模块发地址,命令
从模块准备数据
从模块向主模块发数据总线空闲
3.5
占用总线不占用总线占用总线
(5) 分离式通信充分挖掘系统总线每个瞬间的潜力主模块 申请 占用总线,使用完后即 放弃总线 的使用权从模块 申请 占用总线,将各种信息送至总线上一个总线传输周期子周期 1
子周期 2
3.5
主模块
1,各模块有权申请占用总线分离式通信特点充分提高了总线的有效占用
2,采用同步方式通信,不等对方回答
3,各模块准备数据时,不占用总线
4,总线被占用时,无空闲
3.5
第 4 章 存 储 器
4.1 概述
4.2 主存储器
4.3 高速缓冲存储器
4.4 辅助存储器
4.1 概 述一、存储器分类
1,按存储介质分类
(1) 半导体存储器
(2) 磁表面存储器
(3) 磁芯存储器
(4) 光盘存储器易失TTL,MOS
磁头、载磁体硬磁材料、环状元件激光、磁光材料非易失
(1) 存取时间与物理地址无关(随机访问)
顺序存取存储器 磁带
4.12,按存取方式分类
(2) 存取时间与物理地址有关(串行访问)
随机存储器
只读存储器
直接存取存储器 磁盘在程序的执行过程中 可 读 可 写在程序的执行过程中 只 读磁盘、磁带、光盘高速缓冲存储器( Cache)
Flash Memory
存储器主存储器辅助存储器
MROM
PROM
EPROM
EEPROM
RAM
ROM
静态 RAM
动态 RAM
3,按在计算机中的作用分类 4.1
高低小大快慢辅存寄存器缓存主存磁盘光盘磁带速度 容量 价格 位/
1,存储器三个主要特性的关系二、存储器的层次结构
CPU CPU 主机
4.1
缓存CPU 主存 辅存
2,缓存 主存层次和主存 辅存层次缓存 主存 辅存主存虚拟存储器
10 ns 20 ns 200 ns ms
虚地址逻辑地址实地址物理地址主存储器
4.1
(速度) (容量)
4.2 主存储器一、概述
1,主存的基本组成存储体驱动器译码器
MAR
控制电路读写电路
MDR
地址总线数据总线读 写



… …
2,主存和 CPU 的联系
MDR
MAR
CPU 主 存读数据总线地址总线写
4.2
高位字节 地址为字地址 低位字节 地址为字地址设地址线 24 根 按 字节 寻址按 字 寻址若字长为 16 位按 字 寻址若字长为 32 位字地址 字节地址
111098
7654
3210
8
4
0
字节地址字地址
45
23
01
4
2
0
3,主存中存储单元地址的分配 4.2
224 = 16 M
8 M
4 M
(2) 存储速度
4,主存的技术指标
(1) 存储容量
(3) 存储器的带宽主存 存放二进制代码的总位数读出时间 写入时间存储器的 访问时间? 存取时间
存取周期读周期 写周期连续两次独立的存储器操作
(读或写)所需的 最小间隔时间位 /秒
4.2
芯片容量二、半导体存储芯片简介
1,半导体存储芯片的基本结构译码驱动存储矩阵读写电路
1K× 4位
16K× 1位
8K× 8位片选线 读 /写控制线地址线
… 数据线

地址线 (单向) 数据线 (双向)
10 4
14 1
13 8
4.2
二、半导体存储芯片简介
1,半导体存储芯片的基本结构译码驱动存储矩阵读写电路片选线 读 /写控制线地址线
… 数据线

片选线读 /写控制线 (低电平写 高电平读)
(允许读)
4.2
CS CE
WE
(允许写)WEOE
存储芯片片选线的作用用 16K × 1位 的存储芯片组成 64K × 8位 的存储器
32片当地址为 65 535 时,此 8 片的片选有效
8片
16K × 1位
8片
16K × 1位
8片
16K × 1

8片
16K × 1位
4.2
0,0
15,0 15,7
0,7
读 /写控制电路地址译码器字线
0
15

… 16× 8矩阵… …

0 7
D 0 7D
位线读 / 写选通
A 3
A 2
A 1
A 0


2,半导体存储芯片的译码驱动方式
(1) 线选法
4.2
0
0
0
0



读 写 选通 读 写控制电路
A 3
A 2
A 1
A 0
A 4 0,310,0
31,0 31,31
Y 地址译码器
X
地址译码器
32× 32
矩阵
… …
A 9
I/O
A 8 A 7 A 56A
Y0 Y31
X 0
X 31
D
读 /写


(2) 重合法 4.2
0 0 0 0 0
0
0
0
0
0 0,0


/O
读三、随机存取存储器 ( RAM )
1,静态 RAM (SRAM)
(1) 静态 RAM 基本电路
A′ 触发器非端
1T 4T~ 触发器
5T T 6,行开关
7T T 8,列开关
7T T 8,一列共用
A 触发器原端
T1 ~ T4T
5 T6
T7 T8
A′ A
写放大器 写放大器
DIN 写选择 读选择
DOUT读放位线 A位线 A′
列地址选择行地址选择
4.2
A′ T
1 ~ T4
T5 T6
T7 T8
A
写放大器 写放大器
DIN 写选择 读选择读放位线 A位线 A′
列地址选择行地址选择
DOUT
① 静态 RAM 基本电路的 读 操作行选 T5,T6 开
4.2
T7,T8 开列选读放 DOUT
VA T6 T8
读选择有效
T1 ~ T4
T5 T6
T7 T8
A′ A
DIN
位线 A位线 A ′
列地址选择行地址选择写放 写放 读放
DOUT
写选择 读选择
② 静态 RAM 基本电路的 写 操作行选 T5,T6 开两个写放DIN
4.2
列选 T7,T8 开
(左) 反相 T5 A′
(右) T8 T6 A
DIN
DIN
T7
写选择有效
(2) 静态 RAM 芯片举例
① Intel 2114 外特性存储容量
1K× 4位
4.2
I/O1
I/O2
I/O3
I/O4
A
0
A 8
A
9
WE CS
VCC GND
Intel 2114…
② Intel 2114 RAM 矩阵 (64 × 64) 读
A3
A4
A5
A6
A7
A8
A0
A1
A2
A9
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
第一组 第二组 第三组 第四组
4.2
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
第一组 第二组 第三组 第四组0
0
0
0
0
0
0
0
0
0
4.2② Intel 2114 RAM 矩阵 (64 × 64) 读第一组 第二组 第三组 第四组
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
0
0
0
0
0
0
0
0
0
0
4.2② Intel 2114 RAM 矩阵 (64 × 64) 读
… … … …
第一组 第二组 第三组 第四组
4.2② Intel 2114 RAM 矩阵 (64 × 64) 读
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
0
0
0
0
0
0
0
0
0
0
… … … …
… … … …
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
0
0
0
0
0
0
0
0
0
0
… … … …
… … … …
第一组 第二组 第三组 第四组
4.2② Intel 2114 RAM 矩阵 (64 × 64) 读
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
… … … …
第一组 第二组 第三组 第四组
4.2② Intel 2114 RAM 矩阵 (64 × 64) 读
… … … …
0
0
0
0
0
0
0
0
0
0
… … … …
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
0
0
0
0
0
0
0
0
0
0
… … … …
第一组 第二组 第三组 第四组
4.2② Intel 2114 RAM 矩阵 (64 × 64) 读
… … … …
… … … …
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
0
0
0
0
0
0
0
0
0
0
… … … …
第一组 第二组 第三组 第四组
4.2② Intel 2114 RAM 矩阵 (64 × 64) 读
… … … …
读写电路 读写电路 读写电路 读写电路
… … … …
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
0
0
0
0
0
0
0
0
0
0
… … … …
第一组 第二组 第三组 第四组
4.2② Intel 2114 RAM 矩阵 (64 × 64) 读
… … … …
读写电路 读写电路 读写电路 读写电路
… … … …
A3
A4
A5
A6
A7
A8
A0
A1
A2
A9
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
第一组 第二组 第三组 第四组
4.2③ Intel 2114 RAM 矩阵 (64 × 64) 写
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
第一组 第二组 第三组 第四组0
0
0
0
0
0
0
0
0
0
4.2③ Intel 2114 RAM 矩阵 (64 × 64) 写第一组 第二组 第三组 第四组
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
0
0
0
0
0
0
0
0
0
0
4.2③ Intel 2114 RAM 矩阵 (64 × 64) 写
… … … …
第一组 第二组 第三组 第四组
4.2③ Intel 2114 RAM 矩阵 (64 × 64) 写
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码 I/O1 I/O2 I/O3 I/O4
WE
CS
0
0
0
0
0
0
0
0
0
0
… … … …
… … … …
第一组 第二组 第三组 第四组
4.2③ Intel 2114 RAM 矩阵 (64 × 64) 写
I/O1 I/O2 I/O3 I/O4
WE
CS
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码
0
0
0
0
0
0
0
0
0
0
… … … …
… … … …
第一组 第二组 第三组 第四组
4.2③ Intel 2114 RAM 矩阵 (64 × 64) 写
I/O1 I/O2 I/O3 I/O4
WE
CS
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码
0
0
0
0
0
0
0
0
0
0
… … … …
读写电路 读写电路 读写电路 读写电路
… … … …
第一组 第二组 第三组 第四组
4.2③ Intel 2114 RAM 矩阵 (64 × 64) 写
I/O1 I/O2 I/O3 I/O4
WE
CS
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码
0
0
0
0
0
0
0
0
0
0
… … … …
读写电路 读写电路 读写电路 读写电路
… … … …
第一组 第二组 第三组 第四组
4.2③ Intel 2114 RAM 矩阵 (64 × 64) 写
I/O1 I/O2 I/O3 I/O4
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码
WE
CS
0
0
0
0
0
0
0
0
0
0
… … … …
读写电路 读写电路 读写电路 读写电路
… … … …
第一组 第二组 第三组 第四组
4.2③ Intel 2114 RAM 矩阵 (64 × 64) 写
I/O1 I/O2 I/O3 I/O4
15…0 31…16 47…32 63…48
150 3116 4732 6348
读写电路 读写电路 读写电路 读写电路
… … … … … … … …
0
1
63
0
15


行地址译码列地址译码
WE
CS
0
0
0
0
0
0
0
0
0
0
… … … …
读写电路 读写电路 读写电路 读写电路
… … … …
A
CS
DOUT
地址有效 地址失效片选失效数据有效 数据稳定高阻
(3) 静态 RAM 读 时序
t A
t CO t OHA
t OTD
t RC
片选有效
4.2
读周期 tRC 地址有效 下一次地址有效读时间 tA 地址有效 数据稳定tCO 片选有效 数据稳定OTD 片选失效 输出高阻OHA 地址失效后的 数据维持时间
A
CS
WE
D
OUT
D
IN
(4) 静态 RAM (2114) 写 时序
t WC
t Wt AW
t DW tDH
t WR
写周期 tWC 地址有效 下一次地址有效
4.2
写时间 tW 写命令 WE 的有效时间tAW 地址有效 片选有效的滞后时间tWR 片选失效 下一次地址有效tDW 数据稳定 WE 失效DH WE 失效后的数据维持时间
DD
预充电信号读选择线写数据线写选择线读数据线
V
Cg
T4
T3
T2
T1
1
(1) 动态 RAM 基本单元电路
2,动态 RAM ( DRAM )
读出与原存信息相反 读出时数据线有电流 为,1”
数据线
Cs
T
字线
01 010
写入与输入信息相同 写入时 CS 充电 为,1” 放电 为
,0”
4.2
无电流有电流单元电路读 写 控 制 电 路列 地 址 译 码 器
… … …
读选择线写选择线
D
行地址译码器
0
0
1
1
31
31
1
A9
A8
A7
A6
A5
31
A4 A3 A2 A1 A0
刷新放大器写数据线读数据线





0 …
(2) 动态 RAM 芯片举例
① 三管动态 RAM 芯片 (Intel 1103) 读
0
0
0
0
0
0 0000

4.2
读 写 控 制 电 路

A9
A8
A7
A6
A5
读 写 控 制 电 路列 地 址 译 码 器
… … …
读选择线写选择线
D
单元电路行地址译码器
0
0
1
1
31
31
1 31
A4 A3 A2 A1 A0
刷新放大器写数据线读数据线





0 …
② 三管动态 RAM 芯片 (Intel 1103) 写 4.2
1
1
1
1
1
4.2② 三管动态 RAM 芯片 (Intel 1103) 写
A9
A8
A7
A6
A5
读 写 控 制 电 路列 地 址 译 码 器
… … …
读选择线写选择线
D
单元电路行地址译码器
0
0
1
1
31
31
1 31
A4 A3 A2 A1 A0
刷新放大器写数据线读数据线





0 …
A9
A8
A7
A6
A5
读 写 控 制 电 路列 地 址 译 码 器
… … …
读选择线写选择线
D
单元电路行地址译码器
0
0
1
1
31
31
1 31
A4 A3 A2 A1 A0
刷新放大器写数据线读数据线





0 …
1
1
1
1
1

4.2② 三管动态 RAM 芯片 (Intel 1103) 写
A9
A8
A7
A6
A5
读 写 控 制 电 路列 地 址 译 码 器
… … …
读选择线写选择线
D
单元电路行地址译码器
0
0
1
1
31
31
1 31
A4 A3 A2 A1 A0
刷新放大器写数据线读数据线





0 …

0 1000
1
1
1
1
1
4.2② 三管动态 RAM 芯片 (Intel 1103) 写
A9
A8
A7
A6
A5
读 写 控 制 电 路列 地 址 译 码 器
… … …
读选择线写选择线
D
单元电路行地址译码器
0
0
1
1
31
31
1 31
A4 A3 A2 A1 A0
刷新放大器写数据线读数据线





0 …

1
1
1
1
1
0 1000
4.2② 三管动态 RAM 芯片 (Intel 1103) 写

A9
A8
A7
A6
A5
读 写 控 制 电 路列 地 址 译 码 器
… … …
读选择线写选择线
D
单元电路行地址译码器
0
0
1
1
31
31
1 31
A4 A3 A2 A1 A0
刷新放大器写数据线读数据线





0 …

1
1
1
1
1
0 1000
4.2② 三管动态 RAM 芯片 (Intel 1103) 写

A9
A8
A7
A6
A5
读 写 控 制 电 路列 地 址 译 码 器
… … …
读选择线写选择线
D
单元电路行地址译码器
0
0
1
1
31
31
1 31
A4 A3 A2 A1 A0
刷新放大器写数据线读数据线





0 …

1
1
1
1
1
0 1000
4.2② 三管动态 RAM 芯片 (Intel 1103) 写读 写 控 制 电 路

A9
A8
A7
A6
A5
读 写 控 制 电 路列 地 址 译 码 器
… … …
读选择线写选择线
D
单元电路行地址译码器
0
0
1
1
31
31
1 31
A4 A3 A2 A1 A0
刷新放大器写数据线读数据线





0 …

1
1
1
1
1
0 1000
4.2② 三管动态 RAM 芯片 (Intel 1103) 写读 写 控 制 电 路

A9
A8
A7
A6
A5
读 写 控 制 电 路列 地 址 译 码 器
… … …
读选择线写选择线
D
单元电路行地址译码器
0
0
1
1
31
31
1 31
A4 A3 A2 A1 A0
刷新放大器写数据线读数据线





0 …

1
1
1
1
1
0 1000
4.2② 三管动态 RAM 芯片 (Intel 1103) 写读 写 控 制 电 路

时序与控制行时钟列时钟写时钟WE
RAS
CAS
A'6
A'0
存储单元阵列基准单元行译码列译码器再生放大器列译码器读出放大基准单元存储单元阵列行译码
I/O
缓存器数据输出驱动数据输入寄存器 DIN
DOUT
~ 行地址缓存器列地址缓存器
③ 单管动态 RAM 4116 (16K × 1位 ) 外特性 4.2
~
读放大器读放大器读放大器
… … …
……

……

0 63 64 127
128 根行线
C s
0
127
1 128列选择读 /写线数据输入 I/O缓冲 输出驱动
DOUTD
IN
C s
④ 4116 (16K × 1位 ) 芯片 读 原理读放大器


4.2
缓冲 输出驱动读放大器读放大器读放大器
… … …
……

……

0 63 64 127
128 根行线
C s
0
127
1 128列选择读 /写线数据输入 I/O缓冲 输出驱动
DOUTD
IN
C s

⑤ 4116 (16K× 1位 ) 芯片 写 原理数据输入 I/ 缓冲缓冲读出放大器 读放大器
4.2
(3) 动态 RAM 时序行、列地址分开传送写时序行地址 RAS 有效写允许 WE 有效 (高 )
数据 DOUT 有效数据 DIN 有效读时序
4.2
行地址 RAS 有效写允许 WE 有效 (低 )
列地址 CAS 有效列地址 CAS 有效
(4) 动态 RAM 刷新刷新与行地址有关
① 集中刷新 ( 存取周期为 0.5?s)
“死时间率” 为 128/4 000 × 100% = 3.2%
“死区” 为 0.5?s× 128 = 64?s
周期序号地址序号
tc
0 1 2 3871 3872 0 1
t c t c tc t c
3999
V W 0 1 127
读 /写或维持 刷新 读 /写或维持
3872 个周期 ( 1936?s) 128个周期 ( 64?s)
刷新时间间隔 ( 2 m s)
刷新序号

t c
X
t c
Y

4.2
以 128 × 128 矩阵为例
tC = tM + tR
读写 刷新无,死区”
② 分散刷新 ( 存取周期为 1?s)
(存取周期为 0.5?s + 0.5?s )
4.2
以 128 × 128 矩阵为例
W/R REF
0
W/R
tRt M
tC
REF
126
REF
127
REFW/R W/R W/R W/R
刷新间隔 128 个存取周期

③ 分散刷新与集中刷新相结合(异步刷新)
对于 128 × 128 的存储芯片 ( 存取周期为 0.5?s)
将刷新安排在指令译码阶段,不会出现,死区”
“死区” 为 0.5?s
若每隔 15.6?s 刷新一行每行每隔 2 ms 刷新一次
4.2
W / R W / R W / R W / R W / R W / R W / R W / R
R E F R E F
t
C
μ s
0,5
μ s
0,5
μ s
0,5
t
C
1 5,6 μ s 1 5,6 μ s
3,动态 RAM 和静态 RAM 的比较
DRAM SRAM
存储原理集成度芯片引脚功耗价格速度刷新电容 触发器高 低少 多小 大低 高慢 快有 无主存缓存
4.2
四、只读存储器( ROM)
1,掩模 ROM ( MROM )
行列选择线交叉处有 MOS 管为,1”
行列选择线交叉处无 MOS 管为,0”
2,PROM (一次性编程 )
VCC行线列线熔丝熔丝断 为,0”
为,1”熔丝未断
4.2
3,EPROM (多次性编程 )
(1) N型沟道浮动栅 MOS 电路
G 栅极
S 源
D 漏紫外线全部擦洗
D 端加正电压 形成浮动栅 S 与 D 不导通为,0”
D 端不加正电压 不形成浮动栅 S 与 D 导通为,1”
S G D
N+ N+P基片
G
D
S
浮动栅SiO2
+ + + + +
_ _ _
4.2

控制逻辑
Y 译码
X
译码数据缓冲区
Y 控制
128 × 128
存储矩阵


PD/Progr
CS
A10
A7

A6
A0


DO0 … DO7
1
12

A7
A1
A0
VSS
DO2
DO0
DO1

2716
24
13

VCC
A8
A9
VPP
CSA
10
PD/Progr
DO3
DO7

(2) 2716 EPROM 的逻辑图和引脚 4.2
PD/Progr 功率下降 / 编程输入端 读出时 为 低电平
4,EEPROM (多次性编程 )
电可擦写局部擦写全部擦写
5,Flash Memory (闪速型存储器 )
比 EEPROM快
4.2
EPROM 价格便宜 集成度高
EEPROM 电可擦洗重写具备 RAM 功能用 1K× 4位 存储芯片组成 1K× 8位 的存储器?片五、存储器与 CPU 的连接
1,存储器容量的扩展
(1) 位扩展 (增加存储字长) 10根地址线
8根数据线
D
D


D
0
4
7
9
A
A
0

2114 2114
CS
WE
4.2
2片
(2) 字扩展(增加存储字的数量)
用 1K× 8位 存储芯片组成 2K× 8位 的存储器
11根地址线
8根数据线
4.2
?片 2片
1K× 8位 1K× 8位
D7
D0





WE
A1
A0
A9
CS0
A10 1
CS1
(3) 字、位扩展用 1K× 4位 存储芯片组成 4K× 8位 的存储器
8根数据线12根地址线
WE
A8A9
A0
...
D7
D0

A11
A10
CS0 CS1 CS2 CS3
片选译码
… … … … … … … …
4.2
1K× 4 1K× 4 1K× 4 1K× 4 1K× 4 1K× 4 1K× 41K× 4
?片 8片
2,存储器与 CPU 的连接
(1) 地址线的连接
(2) 数据线的连接
(3) 读 /写命令线的连接
(4) 片选线的连接
(5) 合理选择存储芯片
(6) 其他 时序、负载
4.2
例 4.1 解,
(1) 写出对应的二进制地址码
(2) 确定芯片的数量及类型
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
A15A14A13 A11 A10 … A 7 … A4 A3 … A0

0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1
0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0…
0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1
2K× 8位
1K× 8位
RAM
2片 1K× 4位
ROM
1片 2K× 8位
4.2
(3) 分配地址线
A10~ A0 接 2K× 8位 ROM 的地址线
A9 ~ A0 接 1K× 4位 RAM 的地址线
(4) 确定片选信号
C B A
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
A15 A13 A11 A10 … A 7 … A 4 A3 … A0

0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1
0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0…
0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1
2K× 8位
1片 ROM
1K× 4位
2片 RAM
4.2
2K× 8位
ROM
1K× 4位
RAM 1K× 4位RAM
…… …
&
PD/Progr
Y5
Y4
G1
C
B
A
G2B
G2A


MREQ
A14
A15
A13
A12
A11
A10
A9
A0

D7
D4
D3
D0
WR

……

例 4.1 CPU 与存储器的连接图 4.2
… …

(1) 写出对应的二进制地址码例 4.2 假设同前,要求最小 4K为系统程序区,相邻 8K为用户程序区。
(2) 确定芯片的数量及类型
(3) 分配地址线
(4) 确定片选信号
1片 4K× 8位 ROM 2片 4K× 8位 RAM
A11~ A0 接 ROM 和 RAM 的地址线
4.2
例 4.3 设 CPU 有 20 根地址线,8 根数据线。
并用 IO/M 作访存控制信号。 RD 为读命令,
WR 为写命令。现有 2764 EPROM ( 8K × 8位 ),
外特性如下:
用 138 译码器及其他门电路(门电路自定)画出 CPU
和 2764 的连接图。要求地址为 F0000H~FFFFFH,并写出每片 2764 的地址范围。
4.2

D7 D0
CE
OE
CE 片选信号
OE 允许输出
PGM 可编程端
PGM

A0A12
六、存储器的校验编码的纠错,检错能力与编码的最小距离有关
L —— 编码的最小距离
D —— 检测错误的位数
C —— 纠正错误的位数汉明码是具有一位纠错能力的编码
4.2
L 1 = D + C ( D≥C )
1,编码的最小距离任意两组合法代码之间 二进制位数 的 最少差异
L = 3
具有 一位 纠错能力汉明码的组成需增添? 位检测位检测位的位置?
检测位的取值?
2k≥ n + k + 1
检测位的取值与该位所在的检测“小组” 中承担的奇偶校验任务有关组成汉明码的三要素
4.22,汉明码的组成
2i ( i = 0,1,2,3,)…
各检测位 Ci 所承担的检测小组为
gi小组独占第 2i- 1 位
gi 和 gj 小组共同占第 2i- 1 + 2j- 1 位
gi,gj 和 gl 小组共同占第 2i- 1 + 2j- 1 + 2l- 1 位
C1 检测的 g1 小组包含第 1,3,5,7,9,11,…
C2 检测的 g2 小组包含第 2,3,6,7,10,11,…
C4 检测的 g3 小组包含第 4,5,6,7,12,13,…
C8 检测的 g4 小组包含第 8,9,10,11,12,13,14,15,24,…
4.2
例 4.4 求 0101 按,偶校验” 配置的汉明码解,∵ n = 4
根据 2k≥ n + k + 1
得 k = 3
汉明码排序如下,
二进制序号名称
1 2 3 4 5 6 7
C1 C2 C4
0
∴ 0101 的汉明码为 0100101
0 1 0 1
4.2
1 0
按配偶原则配置 0011 的汉明码二进制序号名称
1 2 3 4 5 6 7
C1 C2 C4
1 0 0
0 0 1 1
解,∵ n = 4 根据 2k≥ n + k + 1
取 k = 3
C1= 3 5 7 = 1
C2= 3 6 7 = 0
C4= 5 6 7 = 0
∴ 0011 的汉明码为 1000011
练习 1 4.2
3,汉明码的纠错过程形成新的检测位 Pi,
如增添 3 位 ( k = 3),新的检测位为 P4 P2 P1。
以 k = 3 为例,Pi的取值为
P1 = 1 3 5 7
P2 = 2 3 6 7
P4 = 4 5 6 7
对于按,偶校验” 配置的汉明码不出错时 P1= 0,P2 = 0,P4 = 0
C1
C2
C4
其位数与增添的检测位有关,
4.2
P1= 1 3 5 7 = 0 无错
P2= 2 3 6 7 = 1 有错
P4= 4 5 6 7 = 1 有错
∴ P4P2P1 = 110
第 6 位出错,可纠正为 0100101,
故要求传送的信息为 0101。
纠错过程如下例 4.5
解:
已知接收到的汉明码为 0100111
(按配偶原则配置)试问要求传送的信息是什么?
4.2


练习 2
P4 = 4 5 6 7 = 1
P2 = 2 3 6 7 = 0
P1 = 1 3 5 7 = 0
∴ P4 P2 P1 = 100 第 4 位错,可不纠写出按偶校验配置的汉明码
0101101 的纠错过程练习 3 按配奇原则配置 0011 的汉明码配奇的汉明码为 0101011
4.2
七、提高访存速度的措施
采用高速器件
调整主存结构
1,单体多字系统
W位 W位 W位 W位
W位地址寄存器主存控制器,,,
.,,
单字长寄存器数据寄存器存储体
采用层次结构 Cache –主存增加存储器的带宽
4.2
2,多体并行系统
(1) 高位交叉
M0


M1


M2 M3




4.2
体内地址体号地址
00 0000
00 0001
00 1111
01 0000
01 0001
01 1111
10 0000
10 0001
10 1111
11 0000
11 0001
11 1111
顺序编址各个体并行工作 4.2
M0地址
0
1 …

n- 1
M1
n
n+1 …

2n- 1
M2
2n
2n+1
3n- 1
M3
3n
3n+1
4n- 1




地址译码体内地址体号
(1) 高位交叉
M0


M1


M2 M3




4.2
体号体内地址地址
0000 00 0000 01 0000 10 0000 11
0001 00 0001 01 0001 10 0001 11
1111 00 1111 01 1111 10 1111 11
(2) 低位交叉 各个体轮流编址
4.2
M0地址
0
4 …

4n- 4
M1
1
5 …

4n- 3
M2
2
6
4n- 2
M3
3
7
4n- 1




地址译码体号体内地址
(2) 低位交叉 各个体轮流编址低位交叉的特点在不改变存取周期的前提下,增加存储器的带宽时间单体访存周期单体访存周期
4.2
启动存储体 0
启动存储体 1
启动存储体 2
启动存储体 3
4.2
T
字 体 号时 间
W
4
W
3
W
2
W
1
W
0
M
0
M
0
M
1
M
2
M
3
τ τ τ
设四体低位交叉存储器,存取周期为 T,总线传输周期为 τ,为实现流水线方式存取,应满足 T = 4τ。
连续读取 4 个字所需的时间为 T+ (4- 1)τ
(3) 存储器控制部件(简称存控)
易发生代码丢失的请求源,优先级最高严重影响 CPU
工作的请求源,
给予 次高 优先级
4.2
控制线路排队器节拍发生器
Q Q
CM
来自各个请求源

主脉冲存控标记触发器
4.23.高性能存储芯片
(1) SDRAM (同步 DRAM)
在系统时钟的控制下进行读出和写入
CPU 无须等待
(2) RDRAM
由 Rambus 开发,主要解决 存储器带宽 问题
(3) 带 Cache 的 DRAM
在 DRAM 的芯片内 集成 了一个由 SRAM 组成的
Cache,有利于 猝发式读取
4.3 高速缓冲存储器一、概述
1,问题的提出避免 CPU ―空等” 现象
CPU 和主存( DRAM) 的速度差异缓存CPU 主存容量小速度高容量大速度低程序访问的局部性原理
2,Cache 的工作原理
(1) 主存和缓存的编址主存和缓存按块存储 块的大小相同 B 为块长
~~~~


主存块号主存储器
0
1
2m- 1
字块 0
字块 1
字块 M- 1
主存块号 块内地址
m位 b位
n位
M块 B个字缓存块号 块内地址
c位 b位
C块 B个字
~~~~


字块 0
字块 1
字块 C- 1
0
1
2c- 1
标记 Cache 缓存块号
4.3
(2) 命中与未命中缓存共有 C 块主存共有 M 块 M >> C
主存块 调入 缓存主存块与缓存块 建立 了对应关系用 标记记录 与某缓存块建立了对应关系的 主存块号命中未命中主存块与缓存块 未建立 对应关系主存块 未调入 缓存
4.3
(3) Cache 的命中率
CPU 欲访问的信息在 Cache 中的 比率命中率 与 Cache 的 容量 与 块长 有关一般每块可取 4 ~ 8 个字块长取一个存取周期内从主存调出的信息长度
CRAY_1 16体交叉 块长取 16 个存储字
IBM 370/168 4体交叉 块长取 4 个存储字
( 64位 × 4 = 256位)
4.3
(4) Cache –主存系统的效率效率 e 与 命中率 有关设 Cache 命中率 为 h,访问 Cache 的时间为 tc,
访问 主存 的时间为 tm
4.3
则 e = × 100%tch × t
c+ (1- h)× tm
访问 Cache 的时间平均访问时间e = × 100%
主存
C a c h e
替 换 机 构可 装 进? 命 中?
块 号 块 内 地 址块 号 块 内 地 址主 存 C a c h e
地 址 映 射变 换 机 构
C a c h e 存 储 体
C P U
访 问 主 存替 换 C a c h e
否 否是 是访 问 主 存 装 入 C a c h e
直 接 通 路
C a c h e 地 址主 存 块 号地 址 总 线数 据 总 线
3,Cache 的基本结构 4.3
Cache
替换机构
Cache
存储体主存 Cache
地址映射变换机构由 CPU完成
4,Cache 的 读写 操作访问 Cache
取出信息送 CPU
访问主存取出信息送 CPU
将新的主存块调入 Cache中执行替换算法腾出空位结束命中?
Cache满?
CPU发出访问地址开始是 否是否读
4.3
Cache 和主存的一致性
4,Cache 的 读写 操作写
4.3
写直达法 ( Write – through)
写回法 ( Write – back)
写操作时数据既写入 Cache又写入主存写操作时只把数据写入 Cache 而不写入主存当 Cache 数据被替换出去时才写回主存写操作时间就是访问主存的时间,读操作时不涉及对主存的写操作,更新策略比较容易实现写操作时间就是访问 Cache 的时间,
读操作 Cache 失效发生数据替换时,
被替换的块需写回主存,增加了 Cache 的复杂性
5,Cache 的改进
(1) 增加 Cache 的级数片载(片内) Cache
片外 Cache
(2) 统一缓存和分立缓存指令 Cache 数据 Cache
与主存结构有关与指令执行的控制方式有关 是否流水
Pentium 8K 指令 Cache 8K 数据 Cache
PowerPC620 32K 指令 Cache 32K 数据 Cache
4.3
字块 2m- 1
字块 2c+1
字块 2c+1- 1
字块 2c +1
字块 2c
字块 2c- 1
字块 1
字块 0



主存储体字块 1标记字块 0标记字块 2c-
1
标记
Cache存储体t位
0
1
2c- 1

字块字块地址主存字块标记
t 位 c 位 b 位主存地址比较器( t位)
= ≠
不命中有效位 =1?
*
m位
Cache
内地址否是命中二,Cache –主存的地址映射
1,直接映射每个缓存块 i 可以和 若干 个 主存块 对应每个主存块 j 只能和 一 个 缓存块 对应
i = j mod C
4.3
字块字块字块
2,全相联映射主存 中的 任一块 可以映射到 缓存 中的 任一块字块 2m- 1
字块 2c- 1
字块 1
字块 0

…字块 2c- 1
字块 1
字块 0

标记标记标记主存字块标记 字块内地址主存地址
m = t + c 位 b位
m= t+c
Cache 存储器 主存储器
4.3
字块 2m- 1
字块 2c-r+1
字块 2c-r +1
字块 2c-r
字块 2c-r-
字块 1
字块 0



字块 3标记字块 1标记字块 2c- 1标记字块 2标记字块 0标记字块 2c- 2标记
…………
字块内地址组地址主存字块标记
s = t + r 位 q = c- r 位 b 位组
0
1
2c-r- 1
主存地址
Cache 主存储器
m 位共 Q 组,每组内两块( r = 1)
1
某一主存块 j 按模 Q 映射到 缓存 的第 i 组 中的 任一块
i = j mod Q 直接映射 全相联映射
3,组相联映射 4.3
字块字块 c-r
三、替换算法
1,先进先出 ( FIFO ) 算法
2,近期最少使用( LRU) 算法小结某一 主存块 只能固定 映射到 某一 缓存块直接全相联组相联某一 主存块 能 映射到 任一 缓存块某一 主存块 只能 映射到 某一 缓存 组 中的 任一块不灵活成本高
4.3
4.4 辅助存储器一、概述
1,特点 不直接与 CPU 交换信息
2,磁表面存储器的技术指标道密度 Dt 位密度 Db
C = n × k × s
寻道时间 + 等待时间
(1) 记录密度
(2) 存储容量
(3) 平均寻址时间
(4) 数据传输率
(5) 误码率辅存的速度 寻址时间磁头读写时间
Dr = Db × V
出错信息位数与读出信息的总位数之比二、磁记录原理和记录方式
1,磁记录原理写
4.4
局部磁化单元 载磁体写线圈
SN
I
局部磁化单元写线圈
S N
铁芯磁通磁层写入,0” 写入,1”
I
N
读线圈
S
读线圈
S N
铁芯磁通磁层运动方向 运动方向
s s
t t
ff
e e
读出 ―0‖ 读出,1”
4.4

1,磁记录原理
2,磁表面存储器的记录方式
0 1 1 1 0 0 0 1 0数据序列
RZ
NRZ
NRZ1
PM
FM
MFM
T
位周期
4.4
例 NRZ1 的读出代码波形
0 1 1 0 0 1 0数据序列驱动电流磁通变化感应电势同步脉冲读出代码
4.4
三、硬磁盘存储器
1,硬磁盘存储器的类型
(1) 固定磁头和移动磁头
(2) 可换盘和固定盘
2,硬磁盘存储器结构磁盘控制器磁盘驱动器盘片主机
4.4
磁盘磁盘组主轴 磁头音圈电机位置检测定位驱动 模拟控制 放大闭环自动控制系统由磁盘控制器送来的目标磁道信号测速输出读写臂传动机构主轴 定位驱动 数据控制
(1) 磁盘驱动器 4.4
(2) 磁盘控制器
接收主机发来的命令,转换成磁盘驱动器的控制命令
实现主机和驱动器之间的数据格式转换
控制磁盘驱动器读写通过总线
(3) 盘片对主机对硬盘(设备)
磁盘控制器 是主机与磁盘驱动器之间的 接口由硬质铝合金材料制成
4.4
四、软磁盘存储器
1,概述速度磁头盘片价格环境硬盘 软盘高 低固定、活动 活动固定盘、盘组大部分不可换可换盘片苛刻浮动 接触盘片高 低
4.4
2,软盘片由聚酯薄膜制成保护套 主轴孔 实际的软盘片 写保护口读 /写磁头访问槽衬里 /清洁材料
4.4
五、光盘存储器
1,概述采用光存储技术采用非磁性介质采用磁性介质第一代光存储技术第二代光存储技术不可擦写可擦写
2,光盘的存储原理只读型和只写一次型可擦写光盘热作用 (物理或化学变化)
热磁效应
4.4
利用激光写入和读出第 5 章 输入输出系统
5.6 DMA方式
5.5 程序中断方式
5.4 程序查询方式
5.3 I/O接口
5.2 外部设备
5.1 概述
5.1 概 述一、输入输出系统的发展概况
1,早期分散连接
CPU 和 I/O设备 串行 工作 程序查询方式
2,接口模块和 DMA 阶段总线连接
CPU 和 I/O设备 并行 工作
3,具有通道结构的阶段
4,具有 I/O 处理机的阶段中断方式
DMA 方式二、输入输出系统的组成
1,I/O 软件
(1) I/O 指令
(2) 通道指令
CPU 指令的一部分通道自身的指令指出数组的首地址、传送字数、操作命令如 IBM/370 通道指令为 64 位
2,I/O 硬件设备 I/O 接口设备 设备控制器 通道操作码 命令码 设备码
5.1
三,I/O 设备与主机的联系方式
1,I/O 设备编址方式
(1) 统一编址
(2) 不统一编址用取数、存数指令有专门的 I/O 指令
2,设备选址用设备选择电路识别是否被选中
3,传送方式
(1) 串行
(2) 并行
5.1
数据字 命令字命令字
0 1 1 0 1 0 0 0
起始位终止位9.09 ms 2× 9.09 ms
4,联络方式
(1) 立即响应
(2) 异步工作采用应答信号
,Ready‖
,Strobe‖
I/O
接口
I/O
设备
CPU
(3) 同步工作采用同步时标
5.1
并行串行起始位终止位 ×
5,I/O 设备与主机的连接方式
(1) 辐射式连接
(2) 总线连接外设 Ⅰ
外设 Ⅱ
外设 Ⅲ
主机 不便于增删设备每台设备都配有一套控制线路和一组信号线
5.1
便于增删设备四,I/O设备与主机信息传送的控制方式
1,程序查询方式
CPU 和 I/O 串行工作踏步等待
CPU读 I/O状态检查状态未准备就绪 出错从 I/O接口中读一个字到 CPU
从 CPU向主存写入一个字
CPU向 I/O发读指令
CPU读 I/O状态检查状态完成否未准备就绪现行程序是出错已准备就绪否
5.1
2,程序中断方式
I/O 工作 CPU 不查询
CPU 暂停现行程序自身准备与主机交换信息
CPU 和 I/O 并行工作启动 I/O设备现行程序


中断服务程序
K
K+1

没有踏步等待现象中断现行程序
5.1
程序中断方式流程
CPU 向 I/O 发读指令
CPU 读 I/O 状态检查状态完成否?
CPU 做其他事情 I/O 设备工作准备就绪
CPU I/O
从 CPU 向主存写入一个字 CPU 主存从 I/O 接口中读一个字到 CPU I/O CPU
中断请求
I/O CPU
出错是否未错
5.1
3,DMA 方式主存和 I/O 之间有一条直接数据通道不中断现行程序周期挪用(周期窃取)
CPU 和 I/O 并行工作存取周期结束
CPU 执行现行程序 CPU 执行现行程序
DMA请求启动 I/O
I/O准备 I/O准备一个存取周期实现 I/O与主存之间的传送
5.1
三种方式的 CPU 工作效率比较存取周期结束
CPU 执行现行程序 CPU 执行现行程序
DMA请求启动 I/O
I/O准备 I/O准备一个存取周期实现 I/O与主存之间的传送
CPU执行现行程序 CPU查询等待并传输 I/O数据
CPU 执行现行程序启动 I/O I/O 准备及传送指令执行周期结束
CPU 执行现行程序 CPU 执行现行程序启动 I/O 中断请求
I/O准备I/O准备
CPU 处理中断服务程序实现 I/O 与主机之间的传送间断启动准备中断请求启动一个存取周期程序查询方式程序中断方式
DMA
方式
5.1
准备及传送间断
5.2 I/O设备一、概述主机设备控制器机、电磁、光部分
I/O
接口外部设备外部设备大致分三类键盘、鼠标、打印机、显示器磁盘、光盘、磁带
1,人机交互设备
2,计算机信息存储设备
3,机 机通信设备 调制解调器等二、输入设备
1,键盘
2,鼠标
3,触摸屏按键判断哪个键按下将此键翻译成 ASCII 码 (编码键盘法)
机械式 金属球 电位器
5.2
光电式 光电转换器三、输出设备
1,显示器
(1) 字符显示
(2) 图形显示
(3) 图像显示字符发生器主观图像客观图像
2,打印机
(1) 击打式
(2) 非击打式点阵式(逐字、逐行)
喷墨(逐字)激光(逐页)
5.2
四、其他
1,A/D,D/A
2,终端
3,汉字处理五、多媒体技术完成显示控制与存储、键盘管理及通信控制模拟 /数字(数字 /模拟)转换器汉字输入、汉字存储、汉字输出
1,什么是多媒体
2,多媒体计算机的关键技术
5.2
由键盘和显示器组成
5.3 I/O 接 口一、概述为什么要设置接口?
1,实现设备的选择
2,实现数据缓冲达到速度匹配
4,实现电平转换
5,传送控制命令
6,反映设备的状态(“忙”、“就绪”、“中断请求”)
3,实现数据串 并格式转换二、接口的功能和组成
(1) 设备选择线
(2) 数据线
(3) 命令线
(4) 状态线
I/O 接口设备
I/O 接口设备数据线命令线状态线
I/O总线设备选择线
1,总线连接方式的 I/O 接口电路
5.3
2,接口的功能和组成功能 组成选址功能传送命令的功能传送数据的功能反映设备状态的功能设备选择电路命令寄存器、命令译码器数据缓冲寄存器设备状态标记完成触发器 D
工作触发器 B
中断请求触发器 INTR
屏蔽触发器 MASK
5.3
3,I/O 接口的基本组成命令寄存器和命令译码器设备选择电路设备状态标记数据缓冲寄存器 DBR 控制逻辑电路
I/O接口外部设备数据线命令状态数据线命令线状态线
CPU
地址线
5.3
三、接口类型并行接口串行接口可编程接口不可编程接口通用接口专用接口
1,按数据 传送方式 分类
2,按功能 选择的灵活性 分类
3,按 通用性 分类
4,按数据传送的 控制方式 分类中断接口
DMA 接口
5.3
Intel 8255
Intel 8251
Intel 8255,Intel 8251
Intel 8212
Intel 8255,Intel 8251
Intel 8279,Intel 8275
Intel 8259
Intel 8257
5.4 程序查询方式一、程序查询流程检查状态标记 1
设备 1
准备就绪?
检查状态标记 N
设备 N
准备就绪?

处理设备 1是否否处理设备 N

1,查询流程检查状态标记交换数据准备就绪?
是否单个设备多个设备测试指令转移指令传送指令
2,程序流程设置主存缓冲区首址设置计数值启动外设传送一个数据修改主存地址修改计数值结束 I/O传送准备好?
传送完?
未完是完否
5.4
保存寄存器内容

设备选择电路
DBR
Q Q
&
数据线准备就绪启动命令地址线 SEL
输入数据启动设备设备工作结束





D B
二、程序查询方式的接口电路




101 0

5.4
以输入为例

5.5 程序中断方式一、中断的概念

K
K+1
Q
Q+1


中断服务程序 1
中断服务程序 2
入口 1
入口 2
二,I/O 中断的产生以打印机为例发中断请求空闲 接收数据接收数据准备 发中断请求打印 打印打印机执行主程序 继续执行主程序 继续执行主程序响应中断中断返回响应中断中断返回启动打印机传送数据传送数据
CPU
CPU 与打印机并行工作
5.5
三、程序中断方式的接口电路
1,配置中断请求触发器和中断屏蔽触发器
D
Q
&
1
INTR
中断请求触发器
INTR = 1 有请求
MASK
中断屏蔽触发器
MASK = 1 被屏蔽来自 CPU 的中断查询信号受设备本身控制
INTR
D MASK
Q
D 完成触发器
5.5
中断请求
2,排队器排队 在 CPU 内或在接口电路中(链式排队器)硬件软件
5.5
详见第八章
INTP1′ INTP2′ INTP3′ INTP4′
INTR1 INTR2 INTR3 INTR4
1 & 1 & 1 & 1 &
设备 1#,2#,3#,4# 优先级按 降序排列
INTRi = 1 有请求 即 INTRi = 0
1
INTP1
1
INTP2
1
INTP3
1
INTP4
& & & &
INTR1 INTR2 INTR3 INTR4
INTR1 INTR2 INTR3 INTR4
1 & 1 & 1 & 1 &
INTP1′ INTP2′ INTP3′ INTP4′
5.52,排队器排队 在 CPU 内或在接口电路中(链式排队器)硬件软件 详见第八章
3,中断向量地址形成部件入口地址

向量地址

排队器输出由软件产生硬件向量法显示器服务程序打印机服务程序
JMP 400
JMP 300
JMP 200




主存
12H
13H
14H
200
300
向量地址入口地址入口地址中断向量地址形成部件设备编码器
1 0 0 0…
0 0 0 1 0 0 1 0
0 1 …
1
详见第八章由 硬件 产生 向量地址再由 向量地址 找到 入口地址
5.5
设备选择电路
DBR
DQ
&
数据线启动命令地址线
SEL
输入数据启动设备设备工作结束
&
1
Q Q
D INTR
BQ
QMASK
设备编码器排队器中断查询来自高一级的排队器至低一级的排队器向量地址中断响应
INTA
中断请求命令译码
4,程序中断方式接口电路的基本组成 5.5
四,I/O 中断处理过程
1,CPU 响应中断的条件和时间
(1) 条件
(2) 时间允许中断触发器 EINT = 1
用 开中断 指令将 EINT 置,1”
用 关中断 指令将 EINT 置,0” 或硬件 自动复位当 D = 1( 随机)且 MASK = 0 时在每条指令执行阶段的结束前
CPU 发 中断查询信号 (将 INTR 置,1” )
5.5
设备选择电路
DBR
DQ
&
数据线启动命令地址线
SEL
输入数据启动设备设备工作结束
&
1
Q Q
D INTR
BQ
QMASK
设备编码器排队器中断查询来自高一级的排队器至低一级的排队器向量地址中断响应
INTA
中断请求命令译码①







2,I/O 中断处理过程
① 10




设备选择电路
01
以输入为例

5.5


五、中断服务程序流程
1,中断服务程序的流程
(1) 保护现场
(2) 中断服务
(3) 恢复现场
(4) 中断返回对不同的 I/O 设备具有不同内容的设备服务中断返回指令
2,单重中断和多重中断不允许中断 现行的 中断服务程序单重 中断多重 中断 允许级别更高 的中断源中断 现行的 中断服务程序中断隐指令完成进栈指令出栈指令程序断点的保护寄存器内容的保护
5.5
3,单重中断和多重中断的服务程序流程中断否?
保护现场设备服务恢复现场开中断中断返回取指令执行指令中断服务程序中断响应程序断点进栈关中断向量地址 PC
中断周期是中断返回保护现场设备服务恢复现场开中断开中断中断隐指令中断隐指令否取指令执行指令中断否? 否中断响应程序断点进栈关中断向量地址 PC
中断周期是中断服务程序单重 多重
5.5
程序中断接口芯片 8259A 的内部结构 5.5
内部总线缓冲器读 / 写逻 辑级联缓冲器 /比较器优先权比较器
( PR )
中断服务寄存器
(ISR)
中断请求寄存器
(IRR)
中断屏蔽寄存器
( IMR)
控制逻辑
INTINTA
D7~D0
A0
RD
WR
CS
CAS0
CAS1
CAS2
SP/EN
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
内部总线主程序和服务程序抢占 CPU 示意图准备工作 准备工作 准备工作传送数据 传送数据发中断请求 发中断请求
I/O
宏观 上 CPU 和 I/O 并行 工作微观 上 CPU 中断现行程序 为 I/O 服务主程序 继续执行主程序启动外设 服务程序
(传送数据)
服务程序
(传送数据)
继续执行主程序
CPU
5.5
5.6 DMA 方式一,DMA 方式的特点
1,DMA 和程序中断两种方式的数据通路
CPU主存
ACC
中断接口
DMA 接口
I/O
设备中断方式数据传送通路输入指令输出指令
DMA方式数据传送通路
2,DMA 与主存交换数据的三种方式
(1) 停止 CPU 访问主存控制简单
CPU 处于不工作状态或保持状态未充分发挥 CPU 对主存的利用率主存工作时间
CPU不执行程序
DMA不工作 DMA不工作DMA工作
CPU控制并使用主存
DMA控制并使用主存
t
5.6
(2) 周期挪用(或周期窃取)
DMA 访问主存有三种可能
CPU 此时不访存
CPU 正在访存
CPU 与 DMA 同时请求访存此时 CPU 将总线控制权让给 DMA
主存工作时间
CPU控制并使用主存
DMA控制并使用主存
t
5.6
(3) DMA 与 CPU 交替访问主存工作时间
DMA控制并使用主存
CPU控制并使用主存
t
CPU 工作周期 C1 专供 DMA 访存C
2 专供 CPU 访存所有指令执行过程中的一个基准时间
5.6
不需要 申请建立和归还 总线的使用权二,DMA 接口的功能和组成
1,DMA 接口功能
(1) 向 CPU 申请 DMA 传送
(2) 处理总线 控制权的转交
(3) 管理 系统总线,控制 数据传送
(4) 确定 数据传送的 首地址和长度
(5) DMA 传送结束时,给出操作完成信号修正 传送过程中的数据 地址 和 长度
5.6
DMA接口主存
CPU
2,DMA 接口组成
DMA
控制逻辑中断机构设备
HLDA
AR
WC
DAR
HRQ
中断请求数据线地址线
+1
+1
溢出信号
DREQ
DACK
BR
5.6
三,DMA 的工作过程
1,DMA 传送过程预处理、数据传送、后处理
(1) 预处理通过几条输入输出指令预置如下信息
通知 DMA 控制逻辑传送方向(入 /出)
设备地址 DMA 的 DAR
主存地址 DMA 的 AR
传送字数 DMA 的 WC
5.6
预处理,
主存起始地址设备地址传送数据个数启动设备
DMA
DMA
DMA
数据传送,
继续执行主程序同时完成一批数据传送后处理,
中断服务程序做 DMA 结束处理继续执行主程序
CPU
(2) DMA 传送过程示意允许传送?
主存地址送总线数据送 I/O设备(或主存 )
修改 主存地址修改 字计数器数据块传送结束?
向 CPU申请 程序中断
DMA请求否否是是数据传送 5.6
BR
设备
DMA
控制逻辑中断机构
AR
WC
DAR
DMA接口主存
CPU
+1
+1
(3) 数据传送过程(输入)
DREQ②
HRQ

HLDA

地址线

DACK
⑥ ①
数据线

溢出信号中断请求
5.6
BR
设备
DMA
控制逻辑中断机构
AR
WC
DAR
DMA接口主存
CPU
+1
+1
DREQ②
HRQ

HLDA

地址线

DACK
⑥ ①
数据线

溢出信号中断请求
(4) 数据传送过程(输出) 5.6
(5) 后处理校验送入主存的数是否正确是否继续用 DMA
测试传送过程是否正确,错则转诊断程序由中断服务程序完成
5.6
2,DMA 接口与系统的连接方式
DMA
接口 1
DMA
接口 2
DMA
接口 nCPU
…主存
DMA响应
I/O总线数据线地址线
DMA请求
(1) 具有公共请求线的 DMA 请求
5.6
(2) 独立的 DMA 请求
DMA
接口 1
DMA
接口 2
DMA
接口 3
CPU
主存
DMA响应 1
DMA请求 1
DMA响应 2
DMA请求 2
DMA响应 3
DMA请求 3
I/O总线数据线地址线
5.6
3,DMA 方式与程序中断方式的比较
(1) 数据传送
(2) 响应时间
(3) 处理异常情况
(4) 中断请求
(5) 优先级中断方式 DMA 方式程序 硬件指令执行结束 存取周期结束能 不能低 高传送数据 后处理
5.6
四,DMA 接口的类型
1,选择型 在 物理上 连接 多个 设备在 逻辑上 只允许连接 一个 设备设备地址寄存器控制状态寄存器数据缓冲寄存器主存地址寄存器时序电路字计数器
DMA接口
CPU主存设备 1
设备 2
设备 n
选择线
.,
.
系统总线
5.6
2,多路型 在 物理上 连接 多个 设备在 逻辑上 允许连接 多个 设备同时工作
5.6
设备 设备 设备DMA
接口CPU主存

独立请求式设备 设备 设备DMA
接口CPU主存

链式
……
3,多路型 DMA 接口的工作原理
T4 T6 T7T2为磁盘服务
T5 T8T3为磁带服务为打印机服务
T1
5?s
5.6
DMA 请求打印机 t
DMA 请求 DMA 请求 DMA 请求
45?s
磁带 t
DMA 请求 DMA 请求 DMA 请求 DMA 请求
30?s磁盘
t
第 6 章 计算机的运算方法
6.1 无符号数和有符号数
6.3 定点运算
6.2 数的定点表示和浮点表示
6.4 浮点四则运算
6.5 算术逻辑单元
6.1 无符号数和有符号数一、无符号数寄存器的位数反映无符号数的表示范围
8 位 0 ~ 255
16 位 0 ~ 65535
带符号的数 符号数字化的数
+ 0.1011 0 1011
小数点的位置
+ 1100 0 1100
小数点的位置
– 1100 1 1100
小数点的位置
– 0.1011 1 1011
小数点的位置真值 机器数
1,机器数与真值二、有符号数 6.1
2,原码表示法带符号的绝对值表示
(1) 定义整数
x 为真值 n 为整数的位数如 x = +1110 [x]原 = 0,1110
[x]原 = 24 + 1110 = 1,1110 x = 1110
[x]原 =
0,x 2n > x ≥ 0
2n x 0 ≥ x > 2n
用 逗号 将符号位和数值部分隔开
6.1
小数
x 为真值如 x = + 0.1101 [x]原 = 0,1101
x = 0.1101 [x]原 = 1 ( 0.1101) = 1,1101
x 1 > x ≥ 0
[x]原 = 1 – x 0
≥ x > 1
x = 0.1000000 [x]原 = 1 ( 0.1000000) = 1,1000000
x = + 0.1000000 [x]原 = 0,1000000 用 小数点 将符号位和数值部分隔开用 小数点 将符号位和数值部分隔开
6.1
(2) 举例例 6.1 已知 [x]原 = 1.0011 求 x
解,
例 6.2 已知 [x]原 = 1,1100 求 x
解,
x = 1 [x]原 = 1 1.0011 = 0.0011
x = 24 [x]原 = 10000 1,1100 = 1100


0.0011
1100
由定义得由定义得
6.1
例 6.4 求 x = 0 的原码解,设 x = +0.0000
例 6.3 已知 [x]原 = 0.1101 求 x
解:
∴ x = + 0.1101
同理,对于整数 [+ 0]原 = 0,0000
[+0.0000]原 = 0.0000
x = 0.0000 [ 0.0000]原 = 1.0000
[ 0]原 = 1,0000
∴ [+ 0]原 ≠ [ 0]原根据 定义 ∵ [x]原 = 0.1101
6.1
原码的特点,简单、直观但是用原码作加法时,会出现如下问题:
能否 只作加法?
找到一个与负数等价的正数 来代替这个负数就可使 减 加加法 正 正 加加法 正 负加法 负 正加法 负 负减减加要求 数 1 数 2 实际操作 结果符号正可正可负可正可负负
6.1
- 12
3
(1) 补的概念
时钟 逆时针
- 3
6
3
顺时针
+ 9
6
15
3,补码表示法可见 3 可用 + 9 代替记作 3 ≡ + 9 ( mod 12)
同理 4 ≡ + 8 ( mod 12)
5 ≡ + 7 ( mod 12)
时钟以
12为模减法 加法
6.1
称 + 9 是 3 以 12 为模的 补数结论
一个负数加上,模” 即得该负数的补数
一个正数和一个负数互为补数时它们绝对值之和即为 模 数
计数器 (模 16)
– 1011
1011
0000
+ 0101
1011
10000
1011 0000?
可见 1011 可用 + 0101 代替同理 011
0.1001
自然去掉
6.1
记作 1011 ( mod 24)≡ + 0101
( mod 23)≡ + 101
( mod 2)≡ + 1.0111
+ 0101( mod24)≡1011 ( )
(2) 正数的补数即为其本身
+ 10000 + 10000
两个互为补数的数
+ 0101 + 10101≡
分别加上模结果仍互为补数
∴ + 0101 ≡ + 0101
+ 0101
24+1 – 1011
1,0101 用 逗号 将符号位和数值部分隔开丢掉
1011
0,
1,
1011
( mod24)
可见? + 0101
0101 0101
10110101
+
( mod24+1)
6.1
100000=
(3) 补码定义整数
x 为真值 n 为整数的位数
[x]补 =
0,x 2n > x ≥ 0
2n+1 + x 0 > x ≥ 2n( mod 2n+1)
如 x = +1010
[x]补 = 27+1 +( 1011000 )
=
[x]补 = 0,1010
x = 1011000
1,0101000用 逗号 将符号位和数值部分隔开
6.1
1011000
100000000
小数
x 为真值
x = + 0.1110
[x]补 =
x 1 > x ≥ 0
2 + x 0 > x ≥ 1( mod 2)

[x]补 = 0.1110
x = 0.1100000
1.0100000
[x]补 = 2 + ( 0.1100000 )
=
用 小数点 将符号位和数值部分隔开
6.1
0.1100000
10.0000000
(4) 求补码的快捷方式
= 100000
= 1,0110 10101 + 1
= 1,0110
又 [x]原 = 1,1010
则 [x]补 = 24+1 1010 = 11111 + 1 1010
= 11111
10101010
当真值为 负 时,补码 可用 原码除符号位外每位取反,末位加 1 求得
6.1
+ 1
设 x = 1010 时
(5) 举例解,x = + 0.0001
解:由定义得
x = [x]补 – 2
= 1.0001 – 10.0000
[x]原 = 1.1111
例 6.6 已知 [x]补 = 1.0001
求 x
[x]补 [x]原?
由定义得
6.1
例 6.5 已知 [x]补 = 0.0001
求 x
∴ x = 0.1111–
= 0.1111–
例 6.7
解:
x = [x]补 – 24+1
= 1,1110 – 100000
[x]原 = 1,0010
当真值为 负 时,原码 可用 补码除符号位外每位取反,末位加 1 求得
[x]补 [x]原?
∴ x = 0010
= 0010
求 x
已知 [x]补 = 1,1110
由定义得
6.1
真值
0,1000110
1,0111010
0.1110
1.0010
0.0000
0.0000
1.0000
0,1000110
1,1000110
0.1110
1.1110
0.0000
1.0000
不能表示练习 求下列真值的补码
[ 1]补 = 2 + x = 10.0000 1.0000 = 1.0000
[+ 0]补 = [ 0]补由小数补码定义
= 1000110
[x]补 [x]原
6.1
x = +70
x = 0.1110
x = 0.0000
x = 70
x = 0.1110
x = 0.0000
x = 1.0000
= 1000110
[x]补 =
x 1 > x ≥ 0
2+ x 0 > x ≥ 1( mod 2)
4,反码表示法
(1) 定义整数
[x]反 =
0,x 2n > x ≥ 0
( 2n+1 – 1) + x 0 ≥ x > 2n( mod 2n+1 1)
如 x = +1101
[x]反 = 0,1101
= 1,0010
x = 1101
[x]反 = (24+1 1) 1101
= 11111 1101
用 逗号 将符号位和数值部分隔开
x 为真值 n 为整数的位数
6.1
小数
x = + 0.1101
[x]反 = 0.1101
x = 0.1010
[x]反 = (2 2-4) 0.1010
= 1.1111 0.1010
= 1.0101

[x]反 =
x 1 > x ≥ 0
( 2 – 2-n) + x 0 ≥ x > 1( mod 2 2-n)
用 小数点 将符号位和数值部分隔开
x 为真值
6.1
n 为小数的位数
(2) 举例例 6.10 求 0 的反码设 x = + 0.0000 [+0.0000]反 = 0.0000解:
同理,对于整数 [+0]反 = 0,0000
例 6.9 已知 [x]反 = 1,1110 求 x
例 6.8 已知 [x]反 = 0,1110 求 x
解:
由定义得 x = + 1110解:
6.1
= 1,1110 11111
= 0001
由定义得 x = [x]反 (24+1 1)
x = 0.0000 [ 0.0000]反 = 1.1111
[ 0]反 = 1,1111
∴ [+ 0]反 ≠ [ 0]反三种机器数的小结
对于 正数,原码 = 补码 = 反码
对于 负数,符号位为 1,其 数值部分原码除符号位外每位取反末位加 1 补码原码除符号位外每位取反 反码
最高位 为 符号位,书写上用“,”(整数)
或,.”(小数)将数值部分和符号位隔开
6.1
例 6.11
00000000
00000001
00000010…
01111111
10000000
10000001
11111101
11111110
11111111

128
129
-0
-1
-128
-127
-127
-126
二进制代码 无符号数对应的真值 原码对应 的真值 补码对应 的真值 反码对应 的真值
0
1
2
127

253
254
255

-125
-126
-127

-3
-2
-1

-2
-1
-0

+0
+1
+2
+127

+0
+1
+2
+127

+0
+1
+2
+127

6.1设机器数字长为 8 位(其中1位为符号位)
对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围各为多少?
例 6.12
解:
已知 [y]补 求 [ y]补
<Ⅰ > [y]补 = 0,y1 y2 yn…
y = 0,y1 y2 yn…
y = 0,y1 y2 yn…
[ y]补 = 1.y1 y2 yn + 2-n…
<Ⅱ > [ y]补 = 1,y1 y2 yn…
[ y]原 = 1,y1 y2 yn + 2-n…
y = ( 0,y1 y2 yn + 2-n)…
y = 0,y1 y2 yn + 2-n…
[ y]补 = 0,y1 y2 yn + 2-n…
设 [y]补 = y0,y1 y2 yn…
6.1
每位取反,
即得 [ y]补
[y]补 连同符号位在内,末位加 1
每位取反,
即得 [ y]补
[y]补 连同符号位在内,末位加 1
5,移码表示法补码表示很难直接判断其真值大小如 十进制
x = +21
x = –21
x = +31
x = –31
x + 25
+10101 + 100000
+11111 + 100000
10101 + 100000
11111 + 100000
大大错错大大正确正确
0,10101
1,01011
0,11111
1,00001
+10101
–10101
+11111
–11111
= 110101
= 001011
= 111111
= 000001
二进制 补码
6.1
(1) 移码定义
x 为真值,n 为 整数的位数移码在数轴上的表示
[x]移码
2n+1–12n
2n–1–2n 0
0
真值如 x = 10100
[x]移 = 25 + 10100
用 逗号 将符号位和数值部分隔开x = –10100
[x]移 = 25 – 10100
[x]移 = 2n + x( 2n> x ≥ 2n)
= 1,10100
= 0,01100
6.1
(2) 移码和补码的比较设 x = +1100100
[x]移 = 27 + 1100100
[x]补 = 0,1100100
设 x = –1100100
[x]移 = 27 – 1100100
[x]补 = 1,0011100
补码与移码只差一个符号位
= 1,1100100
= 0,0011100
6.1
- 1 0 0 0 0 0
- 1 1 1 1 1
- 1 1 1 1 0
- 0 0 0 0 1
± 0 0 0 0 0
+ 0 0 0 0 1
+ 0 0 0 1 0
+ 1 1 1 1 0
+ 1 1 1 1 1


真值 x ( n=5 ) [x]补 [x]移 [x] 移 对应的十进制整数
(3) 真值、补码和移码的对照表


0
1
2
31
32
33
34
62
63


0 0 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 1
0 1 1 1 1 1
1 0 0 0 0 0
1 0 0 0 0 1
1 0 0 0 1 0
1 1 1 1 1 0
1 1 1 1 1 1


0 1 1 1 1 1
0 1 1 1 1 0
0 0 0 0 1 0
0 0 0 0 0 1
0 0 0 0 0 0
1 1 1 1 1 1
1 0 0 0 1 0
1 0 0 0 0 1
1 0 0 0 0 0
±
6.1
当 x = 0 时 [+0]移 = 25 + 0
当 n = 5 时可见,最小真值的移码为全 0
(4) 移码的特点用移码表示浮点数的阶码能方便地判断浮点数的阶码大小
= 1,00000
= 1,00000
= 000000
6.1
[ 0]移 = 25 0
∴ [+0]移 = [ 0]移
[ 100000]移 = 25 100000
最小的真值为 25 = 100000
6.2 数的定点表示和浮点表示小数点按约定方式标出一、定点表示
Sf S1S2 Sn…
数符 数值部分小数点位置
Sf S1S2 Sn…
数符 数值部分小数点位置或定点机 小数定点机 整数定点机原码补码反码
–(1 – 2-n) ~ +(1 – 2-n) –(2n– 1) ~ +( 2n– 1)
– 1 ~ +(1 – 2-n) – 2n ~ +( 2n– 1)
–(1 – 2-n) ~ +(1 – 2-n) –(2n–1) ~ +( 2n– 1)
二、浮点表示
N = S× rj 浮点数的一般形式
S 尾数 j 阶码 r 基数(基值)
计算机中 r 取 2,4,8,16等当 r = 2 N = 11.0101
= 0.110101× 210
= 1.10101× 21
= 1101.01× 2-10
= 0.00110101× 2100
计算机中 S 小数、可正可负
j 整数、可正可负
规格化数二进制表示
6.2
1,浮点数的表示形式
Sf 代表浮点数的符号
n 其位数反映浮点数的精度
m 其位数反映浮点数的表示范围
jf 和 m 共同表示小数点的实际位置
6.2
jf j1 j2 jm Sf S1 S2 Sn… …
j 阶码 S 尾数阶符数符阶码的数值部分 尾数的数值部分小数点位置
2,浮点数的表示范围
–2( 2m–1)× ( 1–2–n)
–2–( 2m–1)× 2–n
2( 2m–1)× ( 1–2–n)
2–( 2m–1)× 2–n
最小负数最大负数最大正数最小正数负数区 正数区下溢
0
上溢 上溢
–215 × ( 1–2-10)
–2-15 × 2-10
215 × ( 1–2-10)
设 m = 4
n =10
上溢 阶码 > 最大阶码下溢 阶码 < 最小阶码 按 机器零 处理
6.2
2-15 × 2-10
练习设机器数字长为 24 位,欲表示± 3万的十进制数,
试问在保证数的最大精度的前提下,除阶符、数符各取 1 位外,阶码、尾数各取几位?
满足 最大精度 可取 m = 4,n = 18
解:
…m = 4,5,6,
15 位二进制数可反映 ± 3 万之间的十进制数∴
215 = 32768214 = 16384∵
6.2
215 × 0.××× ×× ×
15位

3,浮点数的规格化形式
r = 2 尾数最高位为 1
r = 4 尾数最高 2 位不全为 0
r = 8 尾数最高 3 位不全为 0
4,浮点数的规格化
r = 2 左规 尾数左移 1 位,阶码减 1
右规 尾数右移 1 位,阶码加 1
r = 4 左规 尾数左移 2 位,阶码减 1
右规 尾数右移 2 位,阶码加 1
r = 8 左规 尾数左移 3 位,阶码减 1
右规 尾数右移 3 位,阶码加 1
基数 r 越大,可表示的浮点数的范围越大基数不同,浮点数的规格化形式不同基数 r 越大,浮点数的精度降低
6.2
例如:
最大正数 = 215× ( 1–2–10 )2+1111 × 0.1111111111
10 个 1
最小正数最大负数最小负数
= 2–15× 2–1
= –215× ( 1–2– 10 )
= 2–16
= –2–15× 2–1 = –2–16
2-1111 × 0.1000000000
9 个 0
2-1111 × (– 0.1000000000)
9 个 0
2+1111 × (– 0.1111111111)
10 个 1
设 m = 4,n = 10,r = 2
尾数规格化后的浮点数表示范围
6.2
三、举例例 6.13 将 + 写成二进制定点数、浮点数及在定点机和浮点机中的机器数形式。其中数值部分均取 10 位,
数符取 1 位,浮点数阶码取 5 位(含 1位阶符)。
19
128
解,设 x = + 19128
二进制形式定点表示浮点规格化形式
[x]原 = 1,0010; 0,1001100000
[x]补 = 1,1110; 0,1001100000
[x]反 = 1,1101; 0,1001100000
定点机中浮点机中
000
x = 0.0010011
x = 0.0010011
x = 0.1001100000× 2-10
[x]原 = [x]补 = [x]反 = 0.0010011000
6.2
x = – 1110100000
例 6.14 将 –58 表示成二进制定点数和浮点数,
并写出它在定点机和浮点机中的三种机器数及阶码为移码、尾数为补码的形式(其他要求同上例)。
解,设 x = –58
二进制形式定点表示浮点规格化形式
[x]原 = 1,0000111010
[x]补 = 1,1111000110
[x]反 = 1,1111000101
[x]原 = 0,0110; 1,1110100000
[x]补 = 0,0110; 1,0001100000
[x]反 = 0,0110; 1,0001011111
定点机中 浮点机中
[x]阶移、尾补 = 1,0110; 1,0001100000
x = – 111010
x = – (0.1110100000) × 2110
6.2
例 6.15 写出对应下图所示的浮点数的补码形式。 设 n = 10,m = 4,阶符、数符各取 1位。
负数区 正数区下溢
0
上溢 上溢
–2( 2m–1)× ( 1–2–n) 2( 2m–1)× (1–2–n)2–( 2m–1)× 2–n
最小负数 最大正数最小正数
–2–( 2m–1)× 2–n
最大负数解,真值最大正数最小正数最大负数最小负数
215× (1–2–10)
2–15× 2–10
–2–15× 2–10
–215× (1–2–10)
0,1111; 0.1111111111
1,0001; 0.0000000001
1,0001; 1.1111111111
0,1111; 1.0000000001
补码
6.2
当浮点数 尾数为 0 时,不论其阶码为何值按机器零处理机器零
当浮点数 阶码等于或小于它所表示的最小数 时,不论尾数为何值,按机器零处理如 m = 4 n = 10
当阶码用移码,尾数用补码表示时,机器零为
0,0 0 0 0; 0,0 0 0…
1,0 0 0 0 ; ×,×× ×…
×,× × × × ; 0,0 0 0…
有利于机器中,判 0,电路的实现当阶码和尾数都用补码表示时,机器零为
6.2
(阶码 = 16)
四,IEEE 754 标准短实数长实数临时实数符号位 S 阶码 尾数 总位数
1 8 23 32
1 11 52 64
1 15 64 80
S 阶码(含阶符) 尾 数数符 小数点位置尾数为规格化表示非,0” 的有效位最高位为,1”(隐含)
6.2
6.3 定 点 运 算一、移位运算
1,移位的意义
15 m = 1500 cm
小数点右移 2 位机器用语 15 相对于小数点 左移 2 位
( 小数点不动 )
.,
左移 绝对值扩大右移 绝对值缩小在计算机中,移位与加减配合,能够实现乘除运算
2,算术移位规则
1
右移 添 1
左移 添 0
0
反 码补 码原 码负数
0原码、补码、反码正数添补代码码 制符号位不变
6.3
例 6.16
设机器数字长为 8 位(含1位符号位 ),写出
A = +26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。
解,A = +26
则 [A]原 = [A]补 = [A]反 = 0,0011010
+60,0000110
+130,0001101
+1040,1101000
+520,0110100
+260,0011010移位前
[A]原 =[A]补 =[A]反 对应的真值机 器 数移位操作
= +11010
6.3
左移一位左移两位右移一位右移两位例 6.17
设机器数字长为 8 位(含1位符号位 ),写出
A = –26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。
解,A = – 26
– 61,0000110
– 131,0001101
– 1041,1101000
– 521,0110100
– 261,0011010移位前对应的真值机 器 数移位操作原码
= – 11010
6.3
左移一位左移两位右移一位右移两位
– 61,1111001
– 131,1110010
– 1041,0010111
– 521,1001011
– 261,1100101移位前对应的真值机 器 数移位操作
– 71,1111001
– 131,1110011
– 1041,0011000
– 521,1001100
– 261,1100110移位前对应的真值机 器 数移位操作补码反码
6.3
左移一位左移两位右移一位右移两位左移一位左移两位右移一位右移两位
3,算术移位的硬件实现
( a) 真值为正 ( b) 负数的原码 ( c) 负数的补码 ( d) 负数的反码
0 0 0 1
0
丢 1
丢 1
出错影响精度出错影响精度正确影响精度正确正确
6.3
4,算术移位和逻辑移位的区别算术移位 有符号数的移位逻辑移位 无符号数的移位逻辑左移逻辑右移低位添 0,高位移丢高位添 0,低位移丢例如 01010011
逻辑左移 10100110 逻辑右移 01011001
算术左移 算术右移00100110 11011001(补码)
高位 1 移丢
0 1 0 1 0 0 1 1 0Cy 0 1 0 1 0 0 1 1
0
0
10110010
6.3
二、加减法运算
1,补码加减运算公式
(1) 加法
(2) 减法整数 [A]补 + [B]补 = [A+B]补 ( mod 2n+1)
小数 [A]补 + [B]补 = [A+B]补 ( mod 2)
A–B = A+(–B )
整数 [A – B]补 = [A+(–B )]补 = [A]补 + [–B]补 (mod 2n+1)
小数 [A – B]补 = [A+(–B )]补 (mod 2)
连同符号位一起相加,符号位产生的进位自然丢掉
= [A]补 + [–B]补
6.3
2,举例解,[A]补
[B]补
[A]补 + [B]补
+
= 0,1 0 1 1
= 1,1 0 1 1
= 1 0,0 1 1 0 = [A + B]补验证例 6.18 设 A = 0.1011,B = –0.0101
求 [A + B]补
0.1011
– 0.0101
0.0110
∴ A + B = 0,0 1 1 0
[A]补
[B]补
[A]补 + [B]补
+
= 1,0 1 1 1
= 1,1 0 1 1
= 1 1,0 0 1 0 = [A + B]补验证
– 1001
– 1110
– 0101+
例 6.19 设 A = –9,B = –5
求 [A+B]补解:
∴ A + B = – 1110
6.3
例 6.20 设机器数字长为 8 位(含 1 位符号位)
且 A = 15,B = 24,用补码求 A – B
解,A = 15 = 0001111
B = 24 = 0011000
[A]补 + [– B]补
+
[A]补 = 0,0001111
[– B]补 = 1,1101000
= 1,1110111 = [A – B]补
[B]补 = 0,0011000
练习 1 设 x = y =,用补码求 x+y916 1116
x + y = – 0.1100 = 1216–
练习 2 设机器数字长为 8 位(含 1 位符号位)
且 A = – 97,B = +41,用补码求 A – B
A – B = + 1110110 = + 118
∴ A – B = – 1001 = –9
错错
6.3
3,溢出判断
(1) 一位符号位判溢出参加操作的 两个数 (减法时即为被减数和“求补”
以后的减数) 符号相同,其结果的符号与原操作数的符号不同,即为溢出硬件实现最高有效位的进位 符号位的进位 = 1
如 1 0 = 1
0 1 = 1 有 溢出
0 0 = 0
1 1 = 0 无 溢出
6.3
溢出
(2) 两位符号位判溢出
[x]补 ' = x 1 > x ≥ 04 + x 0 > x ≥ –1( mod 4)
[x]补 ' + [y]补 ' = [ x + y ]补 ' ( mod 4)
[x –y]补 ' = [x]补 ' + [– y]补 ' ( mod 4)
结果的双符号位 相同 未溢出结果的双符号位 不同 溢出最高符号位 代表其 真正的符号
00,×××××
11,×××××
10,×××××
01,×××××
,×××××
,×××××
,×××××
,×××××
6.3
4,补码加减法的硬件配置
V 0 A n GA GS
加法器( n+1)溢出判断求补控制逻 辑
0 X n
A,X 均 n+1 位用减法标记 GS 控制求补逻辑
6.3
三、乘法运算
1,分析笔算乘法
A = – 0.1101 B = 0.1011
A× B = – 0.10001111
0,1 1 0 1
0,1 0 1 1
1 1 0 1
1 1 0 1
0 0 0 0
1 1 0 1
0,1 0 0 0 1 1 1 1
符号位单独处理乘数的某一位决定是否加被乘数
4个位积一起相加乘积的位数扩大一倍
×
乘积的符号心算求得

6.3
2,笔算乘法改进
A? B = A? 0.1011
= 0.1A + 0.00A + 0.001A +0.0001A
= 0.1A + 0.00A + 0.001( A +0.1A)
= 0.1A + 0.01[0? A + 0,1( A +0.1A)]
= 0.1{A +0.1[ 0? A+0.1(A + 0.1A)]}
= 2-1{A +2-1[ 0? A+2-1(A + 2-1(A+0))]}



第一步 被乘数 A + 0
第二步 右移 一 位,得新的部分积第八步 右移 一 位,得结果
③第三步 部分积 + 被乘数…
右移一位
6.3
3,改进后的笔算乘法过程(竖式)
0,0 0 0 0
0,1 1 0 1
0,1 1 0 1
0,1 1 0 1
0,0 0 0 0
0,1 1 0 1
初态,部分积 = 0
乘数为 1,加被乘数乘数为 1,加被乘数乘数为 0,加 0
1,0 0 1 1 1
0,1 0 0 1 1 1
1,0 0 0 1 1 1 1
乘数为 1,加 被乘数
0,1 0 0 0 1 1 1 1 1,得结果
1 0 1 1=
0,0 1 1 0 1,形成新的部分积1 1 0 1=
0,1 0 0 1 1,形成新的部分积1 1 1 0=
0,0 1 0 0 1,形成新的部分积1 1 1 1=
部 分 积 乘 数 说 明
6.3




小结
被乘数只与部分积的高位相加
由乘数的末位决定被乘数是否与原部分积相加,
然后 1 位形成新的部分积,同时 乘数 1 位
(末位移丢),空出高位存放部分积的低位。
硬件 3 个寄存器,具有移位功能
1 个全加器
6.3
乘法 运算可用 加和移位实现
n = 4,加 4 次,移 4 次
4,原码乘法
(1) 原码一位乘运算规则以小数为例设 [x]原 = x0,x1x2 xn…
[y]原 = y0,y1y2 yn…
= (x0 y0),x*y*
[x? y]原 = (x0 y0).(0,x1x2 xn)(0.y1y2 yn)… …
式中 x*= 0,x1x2 xn 为 x 的绝对值…
y*= 0,y1y2 yn 为 y 的绝对值…
乘积的符号位单独处理 x0 y0
数值部分为绝对值相乘 x*? y*
6.3
(2) 原码一位乘递推公式
x*?y* = x*(0.y1y2 yn)…
= x*(y12-1+y22-2+ + yn2-n)…
= 2-1(y1x*+2-1(y2x*+ 2-1(ynx* + 0) ))… …
z1
znz
0 = 0
z1 = 2-1(ynx*+z0)
z2 = 2-1(yn-1x*+z1)
zn = 2-1(y1x*+zn-1)


z0
6.3
例 6.21 已知 x = – 0.1110 y = 0.1101 求 [x? y]原解:
6.3
数值部分的运算
0,0 0 0 0
0,1 1 1 0
0,1 1 1 0
0,0 0 0 0
0,1 1 1 0
0,1 1 1 0
部分积 初态 z0 = 0
部 分 积 乘 数 说 明
0,0 1 1 1 0
1,0 0 0 1 1 0
1,0 1 1 0 1 1 0
0,1 0 1 1 0 1 1 0 1,得 z4
逻辑右移
1 1 0 1=
0,0 1 1 1 1,得 z10 1 1 0=
0,0 0 1 1 1,得 z21 0 1 1=
0,1 0 0 0 1,得 z31 1 0 1=
逻辑右移逻辑右移逻辑右移
+
+
+
+
+ x*
+ 0
+ x*
+ x*
② 数值部分按绝对值相乘
① 乘积的符号位 x0 y0 = 1 0 = 1
x*? y* = 0,1 0 1 1 0 1 1 0
则 [x? y]原 = 1,1 0 1 1 0 1 1 0
特点 绝对值运算逻辑移位例 6.21 结果用移位的次数判断乘法是否结束
6.3
(3) 原码一位乘的硬件配置
A,X,Q 均 n+1 位移位和加受末位乘数控制
0 A n
加 法 器控 制 门
0 X n
移位和加控制计数器 C S GM
0 Q n
右移
6.3
(4) 原码两位乘原码乘 符号位 和 数值位 部分 分开运算两位乘 每次用 乘数的 2 位判断 原部分积是否加 和 如何加 被乘数
1 1
1 0
0 1
0 0 加,0” 2
加 1 倍的被乘数 2
加 2 倍的被乘数 2
加 3 倍的被乘数 2
3? 先 减 1 倍 的被乘数再 加 4 倍 的被乘数
4
– 1
3
100
– 01
11
6.3
新的部分积乘数 yn-1 yn
(5) 原码两位乘运算规则
11 1
11 0
10 1
10 0
01 1
01 0
00 1
00 0
操 作 内 容标志位 Cj乘数判断位 yn-1yn
z 2,y* 2,Cj 保持,0”
z 2,y* 2,Cj 保持,1”
z–x* 2,y* 2,Cj 保持,1”
z+2x* 2,y* 2,Cj 保持,0”
z+x* 2,y* 2,Cj 保持,0”
共有操作 +x* +2x* –x* 2
实际操作 +[x*]补 +[2x*]补 +[–x* ]补 2 补码移
z–x* 2,y* 2,Cj 置,1”
z+2x* 2,y* 2,Cj 置,0”
6.3
z+x* 2,y* 2,Cj 置,0”
例 6.22 已知 x = 0.111111 y = – 0.111001 求 [x·y]原
0 0 0,0 0 0 0 0 0
0 0 0,1 1 1 1 1 1
0 0 0,1 1 1 1 1 1
0 0,1 1 1 0 0 1 0 初态 z0 = 0
+ x*,Cj = 0
0 1 0,0 0 1 1 0 1 1 1
0 0 0,1 1 1 0 0 0 0 0 0 1 1 1
1 1 1,1 0 0 1 0 0 0 1 1 1
0 0 1,1 1 1 1 1 0 + 2x*,Cj = 0
1 1 1,0 0 0 0 0 1 – x*,Cj = 1
0 0 0,1 1 1 1 1 1 + x*,Cj = 0
00 0 0,0 0 1 1 1 1 1 1 0 0 1 1 1 0 2
00 0 0,1 0 0 0 1 1 0 1 1 1 0 0 1 1 2
11 1 1,1 1 1 0 0 1 0 0 0 1 1 1 0 0 2
Cj部 分 积 乘 数 说 明补码右移补码右移
6.3
解,数值部分的运算补码右移
+
+
+
+
② 数值部分的运算
① 乘积的符号位 x0 y0 = 0 1 = 1
x*? y* = 0,1 1 1 0 0 0 0 0 0 1 1 1
则 [x? y]原 = 1,1 1 1 0 0 0 0 0 0 1 1 1
例 6.22 结果特点 绝对值的补码运算算术移位用移位的次数判断乘法是否结束
6.3
(6) 原码两位乘和原码一位乘比较符号位操作数移位移位次数最多加法次数
x0 y0 x0 y0
绝对值 绝对值的补码逻辑右移 算术右移
n
n
n
2( n为偶数)
n
2 +1( n为偶数)
思考 n 为奇数时,原码两位乘 移?次 最多加?次原码一位乘 原码两位乘
6.3
5,补码乘法设 被乘数乘数
[x]补 = x0,x1x2 xn…
[y]补 = y0,y1y2 yn…
① 被乘数任意,乘数为正同原码乘 但 加 和 移位 按 补码规则 运算乘积的符号自然形成
② 被乘数任意,乘数为负乘数 [y]补,去掉符号位,操作同 ①
最后 加 [–x]补,校正
(1) 补码一位乘运算规则
6.3
以小数为例
③ Booth 算法 (被乘数、乘数符号任意)
设 [x]补 = x0.x1x2 xn [y]补 = y0.y1y2 yn… …
[x · y]补
= [x]补 ( 0.y1 yn ) – [x]补 · y0…
= [x]补 (y1 2-1+y22-2+ +yn2-n) – [x]补 · y0…
= [x]补 (–y0+y1 2-1+y22-2+ +yn2-n)…
= [x]补 [–y0+(y1 –y12-1)+(y22-1–y22-2)+ +(yn2-(n-1)–yn2-n)]…
= [x]补 [(y1–y0)+(y2–y1)2-1+ +(yn–yn-1)2-(n-1)+(0–yn)2-n)]…
y1 2-1 + +… yn 2-n
–[x]补 = +[–x]补
2-1 = 20 – 2-1
2-2 = 2-1 – 2-2
= [x]补 [(y1–y0)+(y2–y1)2-1+ +(yn+1–yn)2-n]…
6.3
附加位 yn+1
④ Booth 算法递推公式
[z0]补 = 0
[z1]补 = 2-1{(yn+1–yn)[x]补 +[z0]补 } yn+1 = 0
[zn]补 = 2-1{(y2–y1)[x]补 +[zn-1]补 }

[x ·y]补 = [zn]补 +(y1–y0)[x]补 最后一步不移位如何实现
yi+1–yi? 0 00 1
1 0
1 1
1
+[x]补 1
+[–x]补 1
1
0
1
-1
0
6.3
yi yi+1 操作yi+1–yi
例 6.23 已知 x = +0.0011 y = – 0.1011 求 [x·y]补解,0 0,0 0 0 0
1 1,1 1 0 1
1 1,1 1 0 1
0 0,0 0 1 1
1 1,1 1 0 1
0 0,0 0 1 1
1 1,1 1 0 1
1,0 1 0 1 0
0 0,0 0 0 1 1
1 1,1 1 0 1 1 1
0 0,0 0 0 1 1 1 1
1 1,1 1 0 1 1 1 1 1
[x]补 = 0.0011
[y]补 = 1.0101
[–x]补 = 1.1101
+[–x]补
1 1,1 1 1 0 1 1 0 1 0 1 1
+[x]补
0 0,0 0 0 0 1 1 1 0 1 0 1
+[–x]补
1 1,1 1 1 0 1 1 1 1 0 1 1
0 0,0 0 0 0 1 1 1 1 1 0 1
+[–x]补
+[x]补
∴ [x·y]补
=1.11011111
最后一步不移位
6.3
补码右移补码右移补码右移补码右移
+
+
+
+
+
(2) Booth 算法的硬件配置
A,X,Q 均 n + 2 位移位和加受末两位乘数控制
6.3
0 A n+1
n + 2 位加法器控 制 门
0 X n+1
0 Q n n+1
移位和加控制逻辑计数器 C GM
00,11
01
10
右移乘法小结
原码乘 符号位 单独处理补码乘 符号位 自然形成
原码乘去掉符号位运算 即为无符号数乘法
不同的乘法运算需有不同的硬件支持
整数乘法与小数乘法完全相同可用 逗号 代替小数点
6.3
四、除法运算
1,分析笔算除法
x = – 0.1011 y = 0.1101 求 x÷ y
0,1 0 1 10,1 1 0 1

0,0 1 1 0 1
0,0 1 0 0 1
0,0 0 1 1 0 1
0,0 0 0 1 0 1
0,0 0 0 0 1 1 0 1
0,0 0 0 0 0 1 1 1
1 商符单独处理心算上商余数不动低位补,0”
减右移一位的除数上商位置不固定
x÷ y = – 0,1 1 0 1
余数 0,0 0 0 0 0 1 1 1
商符心算求得
0
0,1
0
1
0
0
0



6.3
2,笔算除法和机器除法的比较笔算除法 机器除法商符单独处理心算上商符号位异或形成
| x | – | y | > 0 上商 1
| x | – | y | < 0 上商 0
余数 不动 低位补,0”
减右移一位 的除数
2 倍字长加法器上商位置 不固定余数 左移一位 低位补,0”
减 除数
1 倍字长加法器在寄存器 最末位上商
6.3
3,原码除法以小数为例
[ x ]原 = x0,x1x2 xn…
[ y ]原 = y0,y1y2 yn…
式中 x* = 0,x1x2 xn 为 x 的绝对值
y* = 0,y1y2 yn 为 y 的绝对值


数值部分为绝对值相除 x*y*
被除数不等于 0
除数不能为 0
小数定点除法 x* < y* 整数定点除法 x* > y*
商的符号位单独处理 x0 y0
[ ]原 = (x0 y0).xy x*y*
约定
6.3
(1) 恢复余数法
0,1 0 1 1
1,0 0 1 1
1,0 0 1 1
1,0 0 1 1
0,0 0 0 0
+[– y*]补
01,1 1 1 0 余数为负,上商 0
0,1 1 0 1 恢复余数
00,1 0 0 1 余数为正,上商 1
+[– y*]补
1,0 1 1 0 0 1
1,0 0 1 0 0 1 1
+[–y*]补解:
被除数(余数) 商 说 明
[x]原 = 1.1011 [y]原 = 1.1101
① x0 y0 = 1 1 = 0

x = – 0.1011 y = – 0.1101 求 [ ]原xy例 6.24
1
0,1 0 1 1 恢复后的余数0
+[y*]补
[y*]补 = 0.1101 [– y*]补 = 1.0011
逻辑左移逻辑左移
6.3
+
+
+
+
0,0 1 0 1 0 1 余数为正,上商 1
被除数(余数) 商 说 明
1,0 0 1 1
0,1 1 0 1
1,0 0 1 1
10,1 0 1 0 0 1 1
+[– y*]补
1,1 1 0 1 0 1 1 余数为负,上商 0
恢复余数
1,0 1 0 0 0 1 1 0 1
+[– y*]补
0,0 1 1 1 0 1 1 0 余数为正,上商 1
= 0.1101x*y*
∴ [ ]原xy = 0.1101
上商 5 次第一次上商判溢出余数为正 上商 1
余数为负 上商 0,恢复余数移 4 次
1
0
0,1 0 1 0 恢复后的余数0 1 1 0
1
+[y*]补逻辑左移
6.3
逻辑左移
+
+
+
(2) 不恢复余数法余数 Ri> 0 上商,1”,2Ri– y*
余数 Ri< 0 上商,0”,Ri + y* 恢复余数
2( Ri+y*) – y* = 2Ri + y*
加减交替
恢复余数法运算规则
不恢复余数法运算规则上商,1” 2Ri – y*
上商,0” 2Ri + y*
(加减交替法) 6.3
x = – 0.1011 y = – 0.1101 求 [ ]原xy
解:
例 6.25
0,1 0 1 1
1,0 0 1 1
0,1 1 0 1
1,0 0 1 1
1,0 0 1 1
0,1 1 0 1
0,0 0 0 0
+[– y*]补
01,1 1 1 0 余数为负,上商 0
1,1 1 0 0 0 1
+[y*]补
00,1 0 0 1 余数为正,上商 1
+[– y*]补
1,0 0 1 0 0 1 1
+[– y*]补
+[y*]补
0,1 0 1 0 0 1 1 1
1,1 0 1 0 0 1 1 0 1
0,0 1 0 1 0 1 余数为正,上商 1
0,0 1 1 1 0 1 1 0 余数为正,上商 1
1,1 1 0 1 0 1 1 余数为负,上商 0
[x]原 = 1.1011
[y*]补 = 0.1101
[–y*]补 = 1.0011
[y]原 = 1.1101
1
1
0
1
逻辑左移
6.3
[x*]补 = 0.1011
逻辑左移逻辑左移逻辑左移





① x0 y0 = 1 1 = 0
② x*y* = 0.1101
∴ = 0.1101[ ]原xy
上商 n+1 次例 6.25 结果特点用移位的次数判断除法是否结束第一次上商判溢出移 n 次,加 n+1 次
6.3
(3) 原码加减交替除法硬件配置
A,X,Q 均 n +1 位用 Qn 控制加减交替
0 A n
n + 1 位加法器控 制 门
0 X n
0 Q n
计数器 C GD
加减 移位和加控制逻辑
S V
左移
6.3
[Ri]补 = 0.1000
[x]补 = 1.1101
[y]补 = 1.0101
4,补码除法
(1) 商值的确定
x = 0.1011
y = 0.0011
[x]补 = 0.1011
[y]补 = 0.0011
[x]补 = 0.1011
[–y]补 = 1.1101
[Ri]补 = 0.1000
x = – 0.0011
y = – 0.1011
[x]补 = 1.1101
[–y]补 = 0.1011
x*> y*
[Ri]补 与 [y]补 同号
“够减”
x*< y*
[Ri]补 与 [y]补 异号
“不够减”
+
+
① 比较被除数和除数绝对值的大小
x 与 y 同号
6.3
小结
x = 0.1011
y = – 0.0011
[x]补 = 0.1011
[y]补 = 1.1101
[x]补 = 0.1011
[y]补 = 1.1101
[Ri]补 = 0.1000
x = – 0.0011
y = 0.1011
[x]补 = 1.1101
[y]补 = 0.1011
[x]补 = 1.1101
[y]补 = 0.1011
[Ri]补 = 0.1000
x*> y*
[Ri]补 与 [y]补 异号
“够减”
x*< y*
[Ri]补 与 [y]补 同号
“不够减”
+
+
x 与 y 异号 6.3
[x]补 和 [y]补 求 [Ri]补 [Ri]补 与 [y]补同号异号
[x]补 –[y]补
[x]补 + [y]补同号,“够减”
异号,“够减”
② 商值的确定
[x]补 与 [y]补 同号正 商按原码上商,够减”上,1”
“不够减”上,0”
[x]补 与 [y]补 异号负 商按反码上商,够减”上,0”
“不够减”上,1”
原码
0,×××× 1
反码
1.×××× 1
末位恒置,1”法小 结简 化 为
(同号)
(异号)
(异号)
(同号)
6.3×,×××× 1
[x]补 与 [y]补 商 [Ri]补 与 [y]补 商 值够减不够减够减不够减同 号异 号正负
1
0
0
1
原码上商反码上商
[Ri]补 与 [y]补 商值同 号异 号
1
0
(2) 商符的形成除法过程中自然形成
[x]补 和 [y]补 同号 [x]补 –[y]补 比较 [Ri]补 和 [y]补同号 (够 ),1”
异号 (不够 ),0”
原码上商小数除法 第一次“不够”上,0”
正商
[x]补 和 [y]补 异号 [x]补 +[y]补 比较 [Ri]补 和 [y]补异号 (够 ),0”
同号 (不够 ),1”
反码上商小数除法 第一次“不够”上,1”
负商
6.3
(3) 新余数的形成加减交替
6.3
[Ri]补 和 [y]补 商 新余数同 号异 号
1
0
2[Ri]补 + [–y]补
2[Ri]补 + [ y ]补例 6.26 设 x = – 0.1011 y = 0.1101
求 并还原成真值[ ]补xy
解,[x]补 = 1.0101 [y]补 = 0.1101 [–y]补 = 1.0011
1,0 1 0 1
0,1 1 0 1
1,0 0 1 1
0,1 1 0 1
0,1 1 0 1
0,0 0 0 0
异号做加法
10,0 0 1 0 同号上,1”
1,0 1 1 1 1 异号上,0”
+[y]补
1,1 0 1 1 1 0 异号上,0”
+[y]补
0,0 0 1 1 1 0 0 同号上,1”
0,0 1 0 0 1 1
0,1 1 1 0 1 0 1
1,0 1 1 0 1 0 0 1
末位恒置,1”0,0 1 1 0 1 0 0 1 1
[ ]补 = 1.0011xy∴
0
0
1
1
+[–y]补
xy = – 0.1101则逻辑左移
6.3
逻辑左移逻辑左移逻辑左




(4) 小结
补码除法共上商 n+1 次(末位恒置 1)
第一次为商符
第一次商可判溢出
加 n 次 移 n 次
用移位的次数判断除法是否结束
6.3
精度误差最大为 2-n
(5) 补码除和原码除(加减交替法)比较
x0 y0 自然形成绝对值补码 补码余数的正负 比较余数和除数的符号
n +1
n +1
原码除 补码除
6.3
商符操作数上商原则上商次数加法次数移位次数第一步操作移位
[x*]补 - [y*]补
n
逻辑左移
n
n +1
逻辑左移
n
同号 [x]补 - [y]补异号 [x]补 + [y]补
6.4 浮点四则运算一、浮点加减运算
x = Sx · 2jx y = Sy · 2jy
1,对阶
(1) 求阶差
(2) 对阶原则
Δj = jx – jy =
jx= jy 已对齐
jx> jy
jx< jy
x 向 y 看齐
y 向 x 看齐
x 向 y 看齐
y 向 x 看齐小阶向大阶看齐
Sx 1,
Sy 1,
Sx 1,
Sy 1,
= 0
> 0
< 0
jx–1
jy+1
jx+1
jy–1
例如 x = 0.1101× 201 y = (–0.1010)× 211
求 x +y
解,[x]补 = 00,01; 00.1101 [y]补 = 00,11; 11.0110
1,对阶
[Δj]补 = [jx]补 – [jy]补 = 00,01
11,01
11,10
阶差为负( –2)
[Sx]补 ' = 00.0011
[Sy]补 = 11.0110
11.1001
∴ Sx 2 jx+ 2
∴ [x+y]补 = 00,11; 11,1001
② 对阶 [x]补 ' = 00,11; 00.0011
+
+
对阶后的 [Sx]补 '
6.4
① 求阶差
2,尾数求和
3,规格化
(1) 规格化数的定义
(2) 规格化数的判断
r = 2 ≤ |S| < 112
S> 0
真值原码补码反码规格化形式 S< 0 规格化形式真值原码补码反码
0.1×× ×…
0.1×× ×…
0.1×× ×…
0.1×× ×…
原码 不论正数,负数,第一数位为 1
补码 符号位和第 一数位不同
– 0.1×× ×…
1.1×× ×…
1.0×× ×…
1.0×× ×…
6.4
特例
S = – = – 0.100 012 …
∴ [– ]补 不是规格化的数12
S = – 1
∴ [–1]补 是规格化的数
[S]原 = 1,1 0 0 0…
[S]补 = 1,1 0 0 0…
[S]补 = 1,0 0 0 0…
6.4
(3) 左规
(4) 右规尾数左移一位,阶码减 1,直到数符和第一数位不同为止上例 [x+y]补 = 00,11; 11,1001
左规后 [x+y]补 = 00,10; 11,0010
∴ x + y = (– 0.1110)× 210
当 尾数溢出 ( >1)时,需 右规即尾数出现 01,×× ×或 10,×× ×时… …
尾数右移一位,阶码加 1
6.4
例 6.27 x = 0.1101× 210 y = 0.1011× 201
求 x+y( 除阶符、数符外,阶码取 3 位,尾数取 6 位)
解,[x]补 = 00,010; 00,110100
[y]补 = 00,001; 00,101100
① 对阶
② 尾数求和
[Δj]补 = [jx]补 – [jy]补 = 00,010
11,111
100,001
阶差为 +1 ∴ Sy 1,jy+1
∴ [y]补 ' = 00,010; 00,010110
[Sx]补 = 00,110100
[Sy]补 ' = 00,010110 对阶后的 [Sy]补 '
01,001010
+
+
尾数溢出需右规
6.4
③ 右规
[x+y]补 = 00,010; 01,001010
[x+y]补 = 00,011; 00,100101
右规后
∴ x+y = 0,100101× 211
4,舍入在 对阶 和 右规 过程中,可能出现 尾数末位丢失引起误差,需考虑舍入
(1) 0 舍 1 入法
(2) 恒置,1” 法
6.4
例 6.28 x = (–—)× 2-5 y = (—) × 2-4 58 78
求 x–y( 除阶符、数符外,阶码取 3 位,尾数取 6 位)
解:
[x]补 = 11,011; 11,011000 [y]补 = 11,100; 00,111000
① 对阶
[Δj]补 = [jx]补 – [jy]补 = 11,011
00,100
11,111
阶差为 –1 ∴ Sx 1,jx+1
∴ [x]补 ' = 11,100; 11,101100
x = (– 0.101000)× 2-101 y = ( 0.111000)× 2-100
+
6.4
② 尾数求和
[Sx]补 ′ = 11,101100
[–Sy]补 = 11,001000+
110,110100
③ 右规
[x – y]补 = 11,100; 10,110100
[x –y]补 = 11,101; 11,011010
右规后
∴ x – y = (–0.100110)× 2-11
= (–—)× 2-31932
6.4
5,溢出判断设机器数为补码,尾数为 规格化形式,并假设阶符取 2 位,阶码的数值部分取 7 位,数符取
2 位,尾数取 n 位,则该 补码 在数轴上的表示为上溢 下溢 上溢对应负浮点数对应正浮点数
00,1111111;11.00 0… 00,1111111;00.11 1…
11,0000000;11.011 1…
11,0000000;00.100 0…
2127× (–1)
–2-128× (2-1+ 2-n)
2-128× 2-1
2127× (1–2-n)
最小负数最大负数最小正数最大正数
0
阶码
01,×× ···×
阶码
01,×× ···×
阶码 10,×× ···× 按机器零处理
6.4
二、浮点乘除运算
x = Sx · 2jx y = Sy · 2jy
1,乘法
x ·y = (Sx · Sy)× 2jx+jy
2,除法 x
y =
Sx
Sy × 2
jx – jy
(1) 阶码采用 补码定点加 (乘法) 减 (除法)运算
(2) 尾数乘除同 定点 运算
4,浮点运算部件阶码运算部件,尾数运算部件
3,步骤
(3) 规格化
6.4
6.5 算术逻辑单元一,ALU电路组合逻辑电路
Ki 不同取值
Fi 不同四位 ALU 74181
M = 0 算术运算
M = 1 逻辑运算
S3 ~ S0 不同取值,可做不同运算
ALU
Ai Bi
Fi
… K
i
二、快速进位链
1,并行加法器
= Ai Bi + (Ai+Bi)Ci-1
di = Ai Bi 本地进位 ti = Ai + Bi 传送条件则 Ci = di + tiCi-1
Si = Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1
Ci = Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1
FAn FAn-1 FA1 FA0FAn-2
Cn
Sn
Cn-1
Sn-1
Cn-2
Sn-2

C1
S1
C0
S0
C-1A
0 B0A1 B1An-2 Bn-2An-1 Bn-1An Bn
6.5
2,串行进位链进位链 传送进位的电路串行进位链 进位串行传送以 4 位全加器为例,每一位的进位表达式为
C0 = d0 + t0C-1
C1 = d1 + t1C0
C2 = d2 + t2C1
C3 = d3 + t3C2
= d0? t0C-1
4位 全加器产生进位的全部时间为 8ty
n 位全加器产生进位的全部时间为 2nty
& & & & & & & &C3
t3 t2 t1 t0
C2 C1 C0 C-1
d3 d2 d1 d0
设与非门的级延迟时间为 ty
6.5
3,并行进位链
n 位加法器的进位同时产生 以 4 位加法器为例
C0 = d0 + t0C-1
C1 = d1 + t1C0
C2 = d2 + t2C1
C3 = d3 + t3C2
= d1 + t1d0 + t1t0C-1
= d2 + t2d1 + t2t1d0 + t2t1t0C-1
= d3 + t3d2 + t3t2d1 + t3t2t1d0 + t3t2t1t0C-1
(先行进位,跳跃进位)
当 di ti 形成后,只需 2.5ty
产生全部进位
≥1
& &
≥1
&
≥1
&
≥1
&
C-1
d3 t3 d2 t2 d1 t1 d0 t0
1≥1 1 1
C0C1C2C3 设与或非门的延迟时间为 1.5ty
6.5
n 位全加器分若干小组,小组中的进位同时产生,
小组与小组之间采用串行进位当 di ti 形成后 经 2.5 ty
5 ty
7.5 ty
1 0 ty
(1) 单重分组跳跃进位链第 1 组 第 2 组 第 3 组 第 4 组
C15 C14 C13 C12 C11 C10 C9 C8 C7 C6 C5 C4 C3 C2 C1 C0
d15
t15
d14 d13 d12
t14 t13 t12
d11 d10 d9 d8
t11 t10 t9 t8
d7 d6 d5 d4
t7 t6 t5 t4
d3 d2 d1 d0
t3 t2 t1 t0
产生 C3 ~ C0
产生 C7 ~ C4
产生 C11 ~ C8
产生 C15 ~ C12
6.5
以 n = 16 为例
C-1
(2) 双重分组跳跃进位链
n 位全加器分若干大组,大组中又包含若干小组。每个大组中小组的最高位进位同时产生。
大组与大组之间采用串行进位。
以 n = 32 为例
1 32 4 5 6 7 8
第 一 大 组 第 二 大 组
C31 C27 C23 C19 C15 C11 C7 C3
6.5
(3) 双重分组跳跃进位链 大组进位分析
C3 = d3 + t3C2 = d3 + t3d2 + t3t2d1 + t3t2t1d0 + t3t2t1t0C-1
以第 8 小组为例
D8 小组的本地进位 与外来进位无关
T8 小组的传送条件 与外来进位无关 传递 外来进位
C7 = D7 + T7C3
C11= D6 + T6C7
进一步展开得
C15= D5 + T5C11
C3 = D8+T8C-1
C7 = D7+T7C3
C11= D6+T6C7
C15= D5+T5C11
第 7 小组第 6 小组第 5 小组同理
D8 T8C-1= +
= D7+T7D8+T7T8C-1
= D6+T6D7+T6T7D8+T6T7T8C-1
= D5+T5D6+T5T6D7+T5T6T7D8+T5T6T7T8C-1
6.5
(4) 双重分组跳跃进位链的 大组 进位线路以第 2 大组为例第 5 小组 第 6 小组 第 7 小组 第 8 小组
T5 T6
≥1
≥1
& &
≥1
&
≥1
&
≥1
&
1 1 1
C-1
D5 D6 D7 T7 D8 T8
C15 C11 C7 C3
6.5
(5) 双重分组跳跃进位链的 小组 进位线路以第 8 小组为例 只产生 低 3 位 的进位和 本小组的 D8 T8
C2 C1 C0D8 T8
1
≥1
& &
≥1
&
≥1
&
≥1
&
1 1 1
C-1
1
d3 t3 d2 t2 d1 t1 d0 t0
6.5
(6) n =16 双重分组跳跃进位链第 5 小组 第 6 小组 第 7 小组 第 8 小组第 二 重 进 位 链
D5 T5 D6 T6 D7 T7 D8 T8
C15 C11 C7 C3
C14~12 C10~8 C6~4 C2~0
d15~12 t15~12 d11~8 t11~8 d9~4 t9~4 d3~0 t3~0
C-1
经 5 ty
经 7.5 ty
经 3 2 ty
经 1 0 ty
产生 C2,C1,C0,D5 ~ D8,T5 ~ T8
产生 C15,C11,C7,C3
产生 C14~C12,C10~C8,C6~C4
产生 全部进位产生 全部进位
6.5
经 2.5 ty当 di ti 和 C-1形成后串行进位链单重分组跳跃进位链
(7) n =32 双重分组跳跃进位链
di ti di ti di ti di ti di ti di ti di ti di ti
1 2 3 4 5 6 7 8
第 一 大 组 第 二 大 组
… … … … … … … …
D1 T1 D2 T2 D3 T3 D4 T4 D5 T5 D6 T6 D7 T7 D8 T8
C31 C27 C23 C19 C15 C11 C7 C3
C30~28 C26~24 C22~20 C18~16 C14~12 C10~8 C6~4 C2~0
C-1
当 di ti 形成后 产生 C2,C1,C0,D1 ~ D8,T1 ~ T8
产生 C15,C11,C7,C3
产生 C18 ~C16,C14~C12,C10~C8,C6~C4
C31,C27,C23,C19
产生 C30~C28,C26 ~C24,C22 ~C20
经 2.5 ty
5 ty
7.5 ty
1 0 ty
6.5
第7章 指 令 系 统
7.1 机器指令
7.2 操作数类型和操作类型
7.3 寻址方式
7.4 指令格式举例
7.5 RISC 技术
7.1 机 器 指 令一、指令的一般格式操作码字段 地址码字段
1,操作码 反映机器做什么操作
(1) 长度固定
(2) 长度可变用于指令字长较长的情况,RISC
如 IBM 370 操作码 8 位操作码分散在指令字的不同字段中
(3) 扩展操作码技术操作码的位数随地址数的减少而增加
OP A1 A2 A3
0000
0001
1110

A1A
1
A1

A2A
2
A2

A3A
3
A3

A2A
2
A2

A3A
3
A3

11111111
1111

00000001
1110

11111111
1111

11111111
1111

11111111
1111

00000001
1111

11111111
1111

11111111
1111

A3A
3
A3

00000001
1110

4 位操作码
8 位操作码
12 位操作码
16 位操作码最多 15条三地址指令最多 15条二地址指令最多 15条一地址指令
16条零地址指令
7.1
(3) 扩展操作码技术操作码的位数随地址数的减少而增加
OP A1 A2 A3
0000
0001
1110

A1A
1
A1

A2A
2
A2

A3A
3
A3

A2A
2
A2

A3A
3
A3

11111111
1111

00000001
1110

11111111
1111

11111111
1111

11111111
1111

00000001
1111

11111111
1111

11111111
1111

A3A
3
A3

00000001
1110

4 位操作码
8 位操作码
12 位操作码
16 位操作码三地址指令操作码每减少一种可多构成
24 种二地址指令二地址指令操作码每减少一种可多构成
24 种一地址指令
7.1
2,地址码
(1) 四地址
(2) 三地址
OP A1 A2 A3 A4
8 6 6 6 6
A1 第一操作数地址
A2 第二操作数地址
A3 结果的地址
A4 下一条指令地址若 PC 代替 A4(A1) OP (A2) A3
8 8 8 8
OP A1 A2 A3
(A1) OP (A2) A3
4 次访存
4 次访存寻址范围 26 = 64
寻址范围 28 = 256
若 A3 用 A1 或 A2 代替
7.1
设指令字长为 32 位操作码固定为 8 位
(3) 二地址
OP A1 A2
8 12 12
(A1) OP (A2) A1
(A1) OP (A2) A2
或 4 次访存若 ACC 代替 A1( 或 A2)若结果存于 ACC
(4) 一地址
(5) 零地址
OP A1
8 24
无地址码
(ACC) OP (A1) ACC
2 次访存寻址范围 212 = 4 K
寻址范围 224 = 16 M
3次访存
7.1
二、指令字长指令字长决定于操作码的长度指令字长 = 存储字长
2,指令字长 可变操作数地址的长度操作数地址的个数
1,指令字长 固定按字节的倍数变化
7.1
小结
当用一些硬件资源代替指令字中的地址码字段后
当指令的地址字段为寄存器时
可扩大指令的寻址范围
可缩短指令字长
可减少访存次数三地址 OP R1,R2,R3
二地址 OP R1,R2
一地址 OP R1
指令执行阶段不访存
可缩短指令字长
7.1
7.2 操作数类型和操作种类一、操作数类型地址数字字符逻辑数无符号整数定点数、浮点数、十进制数
ASCII
逻辑运算二、数据在存储器中的存放方式字地址 为 低字节 地址 字地址 为 高字节 地址
3
7 6
2 1
5 4
0
字地址
0
4
低字节
0
4 5
1 2
6 7
3
字地址
0
4
低字节存储器中的数据存放(存储字长为 32位)
地址(十进制)
0
4
8
12
16
20
24
28
32
36双字双字(地址 32)
双字双字(地址 24)
半字(地址 20)半字(地址 22)
半字(地址 16)半字(地址 18)
字节(地址 8)字节(地址 9)字节(地址 10)字节(地址 11)
字(地址 4)
字(地址 0)
字节(地址 14)字节(地址 15) 字节(地址 13) 字节(地址 12)
边界对准地址(十进制)
0
4
8
字节 ( 地址 7) 字节 ( 地址 6)
字 ( 地址 2)
半字 ( 地址 10) 半字 ( 地址 8)
半字 ( 地址 0)
字 ( 地址 4)
边界未对准


7.2
三、操作类型
1,数据传送源目的寄存器 寄存器寄存器 寄存器存储器 存储器存储器 存储器置,1”,清,0”
2,算术逻辑操作加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算与、或、非、异或、位操作、位测试、位清除、位求反如 8086
MOVE STORE LOAD MOVE
PUSH POP
例如
MOVE MOVE
7.2
ADD SUB MUL DIV INC DEC CMP NEG
AAA AAS AAM AAD
AND OR NOT XOR TEST
3,移位操作算术移位
4,转移
(1) 无条件转移 JMP
(2) 条件转移结果为零转 ( Z = 1) JZ
结果溢出转 ( O = 1) JO
结果有进位转( C = 1) JC
跳过一条指令 SKP
循环移位(带进位和不带进位)

300…
305
306
307
SKP DZ D = 0 则跳逻辑移位完成触发器
7.2
(3) 调用和返回
CALL SUB1
...
...
CALL SUB2

...
CALL SUB2…
RETURN
RETURN
主程序地址
2000
2100
2101
子程序 SUB1
2400
2500
2501
2560
2561
2700
主存空间分配 程序执行流程子程序 SUB2
7.2
...
IN AX,n
OUT DX,ALOUT n,AX OUT DX AX
(4) 陷阱( Trap) 与陷阱指令意外事故的中断
设置供用户使用的陷阱指令如 8086 INT TYPE 软中断提供给用户使用的陷阱指令,完成系统调用
5,输入输出
一般不提供给用户直接使用在出现事故时,由 CPU 自动产生并执行(隐指令)
IN AL,DXAX
入 端口地址 CPU 的寄存器出 CPU 的寄存器 端口地址
7.2
如如
AL,
AL
7.3 寻 址 方 式寻址方式 确定 本条指令 的 操作数地址下一条 欲执行 指令 的 指令地址指令寻址数据寻址寻址方式
7.3 寻 址 方 式一、指令寻址顺序 ( PC ) + 1 PC
跳跃 由转移指令指出
LDA 1000
ADD 1001
DEC 1200
JMP 7
LDA 2000
SUB 2001
INC
STA 2500
LDA 1100...
0
1
2
3
4
5
6
7
8
9
PC
+1
指令地址寻址方式指令地址 指令顺序寻址顺序寻址顺序寻址跳跃寻址顺序寻址二、数据寻址形式地址 指令字中的地址有效地址 操作数的真实地址约定 指令字长 = 存储字长 = 机器字长
1,立即寻址
指令执行阶段不访存
A 的位数限制了立即数的范围形式地址 A操作码 寻址特征
OP # A
立即寻址特征立即数 可正可负 补码形式地址 A 就是操作数
7.3
2,直接寻址
EA = A
操作数主存寻址特征
LDA A
A ACC
执行阶段访问一次存储器
A 的位数决定了该指令操作数的寻址范围
操作数的地址不易修改(必须修改 A)
有效地址由形式地址直接给出
7.3
3,隐含寻址操作数地址隐含在操作码中
ADD A
操作数主存寻址特征
A
ACC
暂存
ALU
另一个操作数隐含在 ACC 中如 8086
MUL 指令 被乘数隐含在 AX( 16位)或 AL( 8位)中
MOVS 指令 源操作数的地址隐含在 SI 中目的操作数的地址隐含在 DI 中
指令字中少了一个地址字段,可缩短指令字长
7.3
4,间接寻址
EA =( A) 有效地址由形式地址间接提供
OP A
寻址特征
A EA
主存
EA A1
EA
A1
主存
EA
1
0
执行指令阶段 2 次访存
可扩大寻址范围
便于编制程序
OP A
寻址特征
A
一次间址 多次间址操作数操作数多次访存
7.3


子程序主程序

80
81
201
202
调用子程序调用子程序间接寻址编程举例
(A) = 81( ) = 202

… @ 间址特征
7.3
JMP @ A




5,寄存器寻址
EA = Ri
执行阶段不访存,只访问寄存器,执行速度快
OP Ri
寻址特征
寄存器个数有限,可缩短指令字长操作数




R0
Ri
Rn
寄存器有效地址即为寄存器编号
7.3
EA = ( Ri )
6,寄存器间接寻址
有效地址在寄存器中,操作数在存储器中,执行阶段访存操作数主存OP Ri
寻址特征
便于编制循环程序地址




R0
Ri
Rn
寄存器有效地址在寄存器中
7.3
7,基址寻址
(1) 采用专用寄存器作基址寄存器
EA = ( BR ) + A BR 为基址寄存器
OP A
操作数主存寻址特征
ALUBR
可扩大寻址范围
有利于多道程序
BR 内容由操作系统或管理程序确定
在程序的执行过程中 BR 内容不变,形式地址 A 可变
7.3
(2) 采用通用寄存器作基址寄存器操作数主存寻址特征
ALU
OP R0 A R0 作基址寄存器
由用户指定哪个通用寄存器作为基址寄存器通用寄存器
R0
Rn-1
R1…
基址寄存器的内容由操作系统确定
在程序的执行过程中 R0 内容不变,形式地址 A 可变
7.3
8,变址寻址
EA = ( IX ) +A
OP A
操作数主存寻址特征
ALUIX
可扩大寻址范围
便于处理数组问题
IX 的内容由用户给定
IX 为变址寄存器(专用)
在程序的执行过程中 IX 内容可变,形式地址 A 不变通用寄存器也可以作为变址寄存器
7.3
例 设数据块首地址为 D,求 N 个数的平均值直接寻址 变址寻址
LDA D
ADD D + 1
ADD D + 2

ADD D + ( N -1 )
DIV # N
STA ANS
LDA # 0
LDX # 0
INX
CPX # N
BNE M
DIV # N
STA ANS
共 N + 2 条指令 共 8 条指令
ADD X,DM
X 为变址寄存器
D 为形式地址
(X) 和 #N 比较
(X) +1 X
结果不为零则转
7.3
9,相对寻址
EA = ( PC ) + A
A 是相对于当前指令的位移量(可正可负,补码)
A 的位数决定操作数的寻址范围
程序浮动
广泛用于转移指令操作数寻址特征
ALU
OP A
相对距离 A
1000PC

主存
1000 AOP
7.3
(1) 相对寻址举例
M 随程序所在存储空间的位置不同而不同
EA = ( M+3 ) – 3 = M
– 3*
LDA # 0
LDX # 0
ADD X,D
INX
CPX # N
BNE M
DIV # N
STA ANS
M
M+1
M+2
M+3
而指令 BNE 与 指令 ADD X,D 相对位移量不变– 3*
指令 BNE 操作数的有效地址为– 3*
相对寻址特征*
7.3
(2) 按字节寻址的相对寻址举例
OP
位移量
2000 H
2008 H
8
JMP * + 8 OP06 H2000 H
2008 H
8
设 当前指令地址 PC = 2000H
转移后的目的地址为 2008H
因为 取出 JMP * + 8 后 PC = 2002H
二字节指令故 JMP * + 8 指令 的第二字节为 2008H - 2002H = 06H
7.3
10,堆栈寻址
(1) 堆栈的特点堆栈 硬堆栈软堆栈多个寄存器指定的存储空间先进后出 (一个入出口) 栈顶地址 由 SP 指出
–1
1FFFH
+1
2000 H
进栈 ( SP) – 1 SP 出栈 ( SP) + 1 SP
栈顶栈底
2000 HSP
2000 H … …
1FFF HSP
1FFFH 栈顶栈底进栈 出栈
1FFF
栈顶
2000
栈顶
7.3
(2) 堆栈寻址举例
15
200H
ACC
SP X栈顶200H
栈底主存
15
1FFH
ACC
SP 15
栈顶
200H
栈底主存
X
1FFH
PUSH A 前 PUSH A 后
POP A 前 POP A 后
Y
1FFH
ACC
SP X
栈顶
200H
栈底主存
151FFH
15
200H
ACC
SP 栈顶
200H
栈底主存
X
15
7.3
(3) SP 的修改与主存编址方法有关
① 按 字 编址进栈出栈
( SP) –1 SP
( SP) + 1 SP
② 按 字节 编址存储字长 16 位 进栈出栈
( SP) –2 SP
( SP) + 2 SP
存储字长 32 位 进栈出栈
( SP) –4 SP
( SP) + 4 SP
7.3
7.4 指令格式举例一、设计指令格式时应考虑的各种因素
1,指令系统的 兼容性 (向上兼容)
2,其他因素操作类型数据类型指令格式包括指令个数及操作的难易程度指令字长是否固定寻址方式寄存器个数地址码位数、地址个数、寻址方式类型操作码位数、是否采用扩展操作码技术,
确定哪些数据类型可参与操作指令寻址、操作数寻址寄存器的多少直接影响指令的执行时间二、指令格式举例
1,PDP – 8 指令字长固定 12 位操作码 间 页 地址码访存类指令
0 2 3 54 11
寄存器类指令 1 1 1 辅助操作码
0 2 3 11
I/O 类指令 1 1 0 设备 操作码
0 2 3 1198
7.4
采用扩展操作码技术
2,PDP – 11
源地址OP
4 6 6 16 16
目的地址 存储器地址 1 存储器地址 2
OP
10 6 16
目的地址 存储器地址目的地址
4 6 6
源地址OP
10 6
目的地址OP-CODE
16
OP-CODE
指令字长有 16 位,32 位,48 位三种零地址 (16 位 )
一地址 (16 位 )
二地址 R – R (16 位 )
二地址 R – M (32 位 )
二地址 M – M (48 位 )
扩展操作码技术
7.4
3,IBM 360
OP R1 R2RR格式
8 4 4
OP R1 X B DRX格式
8 4 4 4 12
OP R1 R3 B DRS格式
8 4 4 4 12
OP B DISI格式
8 8 4 12
二地址 R – R
基址加变址寻址二地址 R – M
三地址 R – M
基址寻址二地址 M – M
基址寻址基址寻址立即数 – M
7.4
OP B1 D1L B2 D2SS格式
8 8 4 12 4 12
4,Intel 8086
(1) 指令字长
(2) 地址格式
1 ~ 6 个字节
MOV WORD PTR[0204],0138H 6 字节
INC AX 1 字节一地址
NOP 1 字节
CALL
段内调用 3 字节零地址
5 字节段间调用寄存器 – 寄存器寄存器 – 立即数寄存器 – 存储器
ADD AX,BX 2 字节
ADD AX,[3048H] 4 字节
ADD AX,3048H 3 字节二地址
CALL
7.4
7.5 RISC 技 术一,RISC 的产生和发展
80 — 20 规律
典型程序中 80% 的语句仅仅使用处理机中 20% 的指令
执行频度高的简单指令,因复杂指令的存在,执行速度无法提高
RISC( Reduced Instruction Set Computer)
CISC( Complex Instruction Set Computer)
—— RISC技术能否用 20% 的简单指令组合不常用的
80% 的指令功能

二,RISC 的主要特征
选用使用频度较高的一些 简单指令,
复杂指令的功能由简单指令来组合
指令 长度固定,指令格式种类少,寻址方式少
只有 LOAD / STORE 指令访存
采用 流水技术 一个时钟周期 内完成一条指令
采用 组合逻辑 实现控制器
CPU 中有 多个 通用 寄存器
采用 优化 的 编译 程序
7.5
三,CISC 的主要特征
系统指令 复杂庞大,各种指令使用频度相差大
指令 长度不固定,指令格式种类多,寻址方式多
访存 指令 不受限制
大 多数指令需要 多个时钟周期 执行完毕
采用 微程序 控制器
CPU 中设有 专用寄存器
难以 用 优化编译 生成高效的目的代码
7.5
四,RISC和 CISC 的比较
1,RISC更能 充分利用 VLSI 芯片 的面积
2,RISC 更能 提高计算机运算速度指令数,指令格式,寻址方式少,
通用 寄存器多,采用 组合逻辑,
便于实现 指令流水
3,RISC 便于设计,可 降低成本,提高 可靠性
4,RISC 有利于编译程序代码优化
5,RISC 不易 实现 指令系统兼容
7.5
第8章 CPU 的结构和功能
8.1 CPU 的结构
8.3 指令流水
8.2 指令周期
8.4 中断系统
8.1 CPU 的结构一,CPU 的功能取指令分析指令执行指令,发出各种操作命令控制程序输入及结果的输出总线管理处理异常情况和特殊请求
1,控制器的功能
2,运算器的功能实现算术运算和逻辑运算指令控制操作控制时间控制数据加工处理中断二,CPU 结构框图
PC IR指令控制操作控制时间控制数据加工处理中断
ALU 寄存器中断系统
1,CPU 与系统总线
CU 时序电路寄存器ALU
中断系统 CU
CPU
控制总线数据总线地址总线
8.1
2,CPU 的内部结构 8.1
算术和布尔逻辑取反移位状态标志 内部数据总线寄存器
CU
中断系统
ALU
控制信号
…C P
U
1,用户可见寄存器
(1) 通用寄存器三,CPU 的寄存器存放操作数可作 某种寻址方式所需的 专用寄存器
(2) 数据寄存器 存放操作数 (满足各种数据类型)
两个寄存器拼接存放双倍字长数据
(3) 地址寄存器 存放地址,其位数应满足最大的地址范围用于特殊的寻址方式 段基值 栈指针
(4) 条件码寄存器 存放条件码,可作程序分支的依据如 正、负、零、溢出、进位等
8.1
2,控制和状态寄存器
(1) 控制寄存器
PC
控制 CPU 操作
(2) 状态寄存器状态寄存器其中 MAR,MDR,IR 用户不可见存放条件码
PSW 寄存器 存放程序状态字
PC 用户可见
3,举例 Z8000 8086 MC 68000
MAR M MDR IR
8.1
四,控制单元 CU 和中断系统
1,CU 产生全部指令的微操作命令序列组合逻辑设计微程序设计硬连线逻辑存储逻辑
2,中断系统参见 第4篇五,ALU
参见 8.4 节参见 第6章
8.1
8.2 指 令 周 期一,指令周期的基本概念
1,指令周期取出并执行一条指令所需的全部时间完成一条指令执行取指、分析取指阶段取指周期执行阶段执行周期
(取指、分析) (执行指令)
指令周期取指周期执行周期
2,每条指令的指令周期不同取指周期指令周期取指周期 执行周期指令周期
NOP
ADD mem
MUL mem
8.2
取指周期 执行周期指令周期

3,具有间接寻址的指令周期
4,带有中断周期的指令周期取指周期 间址周期指令周期执行周期取指周期 间址周期指令周期执行周期 中断周期
8.2
5,指令周期流程取指周期执行周期有间址吗?
有中断吗?
间址周期中断周期是是否否
8.2
6,CPU 工作周期的标志
CPU 访存有四种性质取 指令取 地址取 操作数存 程序断点取指周期间址周期执行周期中断周期
FE
D
IND
D
INT
D
CLK
1 FE 1 IND 1 EX 1 INT
EX
D
CPU 的
4个工作周期
8.2
1,取指周期数据流二,指令周期的数据流
MDR
CU
MARPC
IR
存储器
CPU
地址总线数据总线控制总线
+1
8.2
2,间址周期数据流
MDR
CU
MAR
CPU
地址总线数据总线控制总线
PC
IR
存储器
8.2
3,执行周期数据流
4,中断周期数据流不同指令的执行周期数据流不同
MDR
CU
MAR
CPU
地址总线数据总线控制总线
PC
存储器
8.2
8.3 指 令 流 水一、如何提高机器速度
1,提高访存速度
2,提高 I/O 和主机之间的传送速度
提高整机处理能力高速芯片 Cache 多体并行
I/O 处理机DMA 多总线通道高速器件 改进系统结构,开发系统的并行性中断
3,提高运算器速度高速芯片 改进算法 快速进位链二、系统的并行性时间上互相重叠
2,并行性的等级指令级(指令之间)
(指令内部)
过程级(程序、进程)
两个或两个以上事件在 同一时刻 发生两个或两个以上事件在 同一时间段 发生并行
1,并行的概念粗粒度 软件实现细粒度 硬件实现并发同时
8.3
取指令 3 执行指令 3
三、指令流水原理
2,指令的二级流水
1,指令的串行执行取指令 取指令部件 完成 总有一个部件 空闲指令预取若 取指 和 执行 阶段时间上 完全重叠指令周期 减半 速度提高 1 倍

执行指令 执行指令部件 完成取指令 1 执行 指令 1
取 指令 2 执行 指令 2
取 指令 3 执行指令 3
取指令 2 执行指令 2取指令 1 执行指令 1
8.3
必须等 上条 指令执行结束,才能确定 下条 指令的地址,
造成时间损失
3,影响指令流水效率加倍的因素
(1) 执行时间 > 取指时间
(2) 条件转移指令 对指令流水的影响解决办法?
取指令部件指令部件缓冲区执行指令部件猜测法
8.3
4,指令的六级流水六级流水 14个时间单位串行执行 6 × 9 = 54 个时间单位完成 一条指令 6 个时间单位
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
指令 1
指令 2
指令 3
指令 4
指令 5
指令 6
指令 7
指令 8
指令 9
1 2 3 4 5 6 7 8 9 10 11 12 13 14
t
8.3
指令 1 与指令 4 冲突指令 2 与指令 5 冲突指令 1、指令 3、指令 6 冲突

CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
CO FO EI WODIFI
指令 1
指令 2
指令 3
指令 4
指令 5
指令 6
指令 7
指令 8
指令 9
1 2 3 4 5 6 7 8 9 10 11 12 13 14
t
三、影响指令流水线性能的因素
1,结构相关
8.3
不同指令争用同一功能部件产生资源冲突程序的相近指令之间出现某种关联使指令流水出现停顿,影响流水线效率解决办法? 停顿
指令存储器和数据存储器分开
指令预取技术 (适用于访存周期短的情况)
2,数据相关不同指令因重叠操作,可能改变操作数的 读 /写 访问顺序
采用 旁路技术解决办法
8.3
写后读相关( RAW)
SUB R1,R2,R3
ADD R4,R5,R1;( R2) ( R3) R1;( R5) +( R1) R4
读后写相关( WAR)
STA M,R2
ADD R2,R4,R5;( R2) M 存储单元;( R4) +( R5) R2
写后写相关( WAW)
后推法
MUL R3,R2,R1
SUB R3,R4,R5;( R2) × ( R1) R3;( R4) ( R5) R3
3,控制相关 8.3
BNE 指令必须等
CPX 指令的结果才能判断出是转移还是顺序执行
LDA # 0
LDX # 0
INX
CPX # N
BNE M
DIV # N
STA ANS
ADD X,DM
由转移指令引起
3,控制相关 8.3
WOEIFOCODI
WOEIFODIFI
FI
DIFI
COFI
FOCODIFI
WOEIFOCODIFI
DI FO EI WO
EIFO
CO
FI
DI
CO WODIFI
COFI
指令 1
指令 2
指令 3
指令 4
指令 5
指令 6
指令 7
指令 15
指令 16
1 2 3 4 5 6 7 8 9 10 11 12 13 14
转移损失
t
设 指令 3 是转移指令四、流水线性能
1,吞吐率单位时间内 流水线所完成指令 或 输出结果 的 数量
8.3
最大吞吐率
实际吞吐率连续处理 n 条指令的吞吐率为设 m 段的流水线各段时间为 Δt
Tpmax = Δ1t
Tp = m
·Δ + (n-1) ·Δ
n
t t
2,加速比 Sp 8.3
m 段的 流水线的速度 与等功能的 非流水线的速度 之比设流水线各段时间为 Δ t
完成 n 条指令在 m 段流水线上共需
T = m · + (n-1) ·t t Δ Δ
完成 n 条指令在等效的非流水线上共需
T′= nm · t Δ
Sp = m · +(n-1) ·nm · = nmm + n -1Δ t Δ Δt t 则由于流水线有 建立时间 和 排空时间因此各功能段的 设备不可能 一直 处于 工作 状态
8.3
流水线中各功能段的 利用率
3,效率
mΔt
31 2 4 5
31 2 4 5
31 2 4 5
31 2 4 5
… … …
… … …
… … …
… … …
n-1 n
n-1 n
n-1 n
n-1 n
T时间
S空间空间
S4
S3
S2
S1
(n-1) Δt
8.3
m(m + n -1) Δt=
mnΔt
流水线各段处于工作时间的时空区流水线中各段总的时空区效率 =
3,效率
mΔt
31 2 4 5
31 2 4 5
31 2 4 5
31 2 4 5
… … …
… … …
… … …
… … …
n-1 n
n-1 n
n-1 n
n-1 n
T时间
S空间空间
S4
S3
S2
S1
(n-1) Δt
流水线中各功能段的 利用率五、流水线的多发技术
1,超标量技术
每个时钟周期内可 并发多条独立指令
不能调整 指令的 执行顺序配置多个功能部件通过编译优化技术,把可并行执行的指令搭配起来
8.3
IF ID EX WR
0 1 2 3 4 5 6 7 8 9 10 11 12 13
时钟周期指令序列
2,超流水线技术
在 一个时钟周期 内 再分段 ( 3 段)
不能调整 指令的 执行顺序在一个时钟周期内 一个功能部件使用多次 ( 3 次)
靠编译程序解决优化问题流水线速度是原来速度的 3 倍
8.3
IF ID EX WR
0 1 2 3 4 5 6 7 8 9 10 11 12 13
时钟周期指令序列
3,超长指令字技术
采用 多个处理部件具有 多个操作码字段 的 超长指令字 (可达几百位)
由编译程序 挖掘 出指令间 潜在 的 并行性,
将 多条 能 并行操作 的指令组合成 一条
8.3
IF ID EX WR
0 1 2 3 4 5 6 7 8 9 10 11 12 13 时钟周期指令序列六、流水线结构
1,指令流水线结构完成一条指令分 7 段,每段需一个时钟周期若 流水线不出现断流 1 个时钟周期出 1 结果不采用流水技术 7 个时钟周期出 1 结果理想情况下,7 级流水 的速度是不采用流水技术的 7 倍地址形成部件指令译码部件取操作数部件取指令部件操作执行部件回写结果部件修改指令指针部件锁存锁存锁存 锁存 锁存锁存
8.3
2,运算流水线完成 浮点加减 运算 可分对阶,尾数求和,规格化 三段分段原则 每段 操作时间 尽量 一致锁存器对阶功能部件第一段尾数加部件锁存器第二段规格化部件锁存器第三段
8.3
8.4 中断系统一、概述
1,引起中断的各种因素
(1) 人为设置的中断
(2) 程序性事故如 转管指令溢出、操作码不能识别、除法非法
(5) 外部事件
(4) I/O 设备
(3) 硬件故障用 键盘中断 现行程序转管指令

… 管理程序
2,中断系统需解决的问题
(1) 各中断源 如何 向 CPU 提出请求?
(2) 各中断源 同时 提出 请求 怎么办?
(5) 如何 寻找入口地址?
(4) 如何 保护现场?
(3) CPU 什么 条件,什么 时间,以什么 方式响应中断?
(6) 如何 恢复现场,如何 返回?
(7) 处理中断的过程中又 出现新的中断 怎么办?
硬件 + 软件
8.4
二、中断请求标记和中断判优逻辑
1,中断请求标记 INTR
一个请求源 一个 INTR 中断请求标记触发器多个 INTR 组成 中断请求标记寄存器
INTR 分散 在各个中断源的 接口电路中
INTR 集中 在 CPU 的中断系统 内
1 2 3 4 5 n
掉电过热阶上溢主存读写校验错非法除法键盘输入打印机输出
8.4
2,中断判优逻辑
① 分散 在各个中断源的 接口电路中 链式排队器
② 集中 在 CPU 内
(1) 硬件实现(排队器)
1
1
1
&
1
&
1
&
参见 第五章
INTR1 INTR2 INTR3 INTR4
INTR1,INTR2,INTR3,INTR4 优先级 按 降序 排列
INTP1 INTP2 INTP3 INTP4
8.4
A,B,C优先级按 降序 排列
(2) 软件实现(程序查询)


是否 A请求?
是否 B 请求?
是否 C 请求?
转 A 的服务程序入口地址转 B 的服务程序入口地址转 C 的服务程序入口地址是是是否否
8.4
三、中断服务程序入口地址的寻找
1,硬件向量法入口地址 200
入口地址 300
入口地址 400
12 H
13 H
14 H
主存
12 H
13 H
14 H
JMP 200
JMP 300
JMP 400
主存向量地址形成部件


中断向量排队器输出向量地址 12H,13H,14H
入口地址 200,300,400
8.4
2,软件查询法
M
JMP 1# SR 1# D = 1 转 1# 服务程序
SKP DZ 2#
JMP 2# SR
2# D = 0 跳
2# D = 1 转 2# 服务程序
SKP DZ 8#
JMP 8# SR
8# D = 0 跳
8# D = 1 转 8# 服务程序八个中断源 1,2,8 按 降序 排列…

8.4
SKP DZ 1# 1# D = 0 跳 ( D为完成触发器)
中断识别程序 (入口地址 M)
地 址 说 明指 令四、中断响应
1,响应中断的 条件允许中断触发器 EINT = 1
2,响应中断的 时间指令执行周期结束时刻由 CPU 发查询信号
CPU
中断查询
INTR1
D
Q
INTR2
D
Q
INTRn
D
Q
中断源 1 中断源 2 中断源 n

至排队器
8.4
3,中断隐指令
(1) 保护程序断点
(2) 寻找服务程序入口地址
(3) 硬件 关中断向量地址形成部件
INT
S
Q
R
EINT
S
Q
R
PC
1&
≥1
排队器


断点存于 特定地址 ( 0 号地址) 内 断点 进栈
INT 中断标记
EINT 允许中断
R – S 触发器
8.4
向量地址 PC (硬件向量法)
中断识别程序 入口地址 M PC (软件查询法)
五、保护现场和恢复现场
1,保护现场
2,恢复现场寄存器 内容断点保护现场其它服务程序恢复现场中断返回
PUSH
视不同请求源而定
POP
中断服务程序 完成中断服务程序中断隐指令 完成中断服务程序 完成
8.4
IRET
1,多重中断的概念
k l m
k +1 l +1 m +1
第一次中断第二次中断第三次中断程序断点 k+1,l+1,m+1
六、中断屏蔽技术 8.4
2,实现多重中断的条件
B,C
A
中断请求主程序
(2) 优先级别高 的中断源 有权中断优先级别低 的中断源
(1) 提前 设置 开中断 指令
A B C D
中断服务程序
( A,B,C,D 优先级按 降序 排列)
D
8.4
&
3,屏蔽技术
(1) 屏蔽触发器的作用
MASK = 0( 未屏蔽)
INTR 能被置,1”
& & & &
1 1 1 1
INTP1 INTP2 INTP3 INTP4
INTR1 INTR2 INTR3 INTR4
MASK1 MASK2 MASK3 MASK4
DQ
1
D
INTR MASKQ
CPU
查询
MASKi = 1 ( 屏蔽)
INTPi = 0 ( 不能被排队选中)
8.4
(2) 屏蔽字 8.4
优先级 屏 蔽 字
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1
2
3
4
5
6
15
16

16个中断源 1,2,3,16 按 降序 排列…
(3) 屏蔽技术可改变处理优先等级响应优先级响应优先级 A→B→C→D 降序排列
8.4
不可改变处理优先级 可改变(通过重新设置屏蔽字)
中断源 原屏蔽字 新屏蔽字
A
B
C
D
1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1
1 1 1 1
0 1 0 0
0 1 1 0
0 1 1 1
处理优先级 A→D→C→B 降序排列
(3) 屏蔽技术可改变处理优先等级 8.4
服务程序
B处理完
C处理完
D处理完A处理完 t
主程序
A程序
B程序
C程序
D程序
A,B,C,D
同时请求中断
CPU 执行程序轨迹(原屏蔽字)
(3) 屏蔽技术可改变处理优先等级
(4) 屏蔽技术的其他作用
8.4
便于程序控制可以 人为地屏蔽 某个中断源的请求服务程序
D处理完
C处理完
B处理完A处理完 t
主程序
A程序
B程序
C程序
D程序
A,B,C,D
同时请求中断
CPU 执行程序轨迹(新屏蔽字)
8.4(5) 新屏蔽字的设置保护现场置屏蔽字开中断中断服务关中断恢复现场恢复屏蔽字开中断中断返回置屏蔽字
(1) 断点进栈
(2) 断点存入,0,地址 中断隐指令 完成中断周期命令存储器写
0 MAR
PC MDR
(MDR) 存入存储器三次中断,三个断点都存入,0,地址
4,多重中断的断点保护断点 MDR
? 如何保证断点不丢失?
中断隐指令 完成
8.4
(3) 程序断点存入,0,地址的断点保护
××××0
5 JMP SERVE
××××SAVE
××××RETURN
STA SAVE…
0 地址内容转存其他服务内容
SERVE
LDA SAVE
JMP @ RETURN
存程序断点
5 为向量地址

保护现场恢复现场间址返回存放 ACC 内容转存 0 地址内容开中断ENI
LDA 0
STA RETURN置屏蔽字
8.4
地 址 内 容 说 明第 9 章 控制单元的功能
9.1 操作命令的分析
9.2 控制单元的功能
9.1 操作命令的分析完成一条指令分 4 个工作周期取指周期间址周期执行周期中断周期一、取指周期
PC MAR 地址线
1 R
M ( MAR ) MDR
MDR IR
( PC ) + 1 PC
+1
MDR
CU
MARPC
IR
存储器
CPU
地址总线数据总线控制总线
9.1 操作命令的分析
OP( IR) CU
二、间址周期
M ( MAR ) MDR
1 R
Ad ( IR ) MAR
MDR Ad ( IR )
指令形式地址 MAR
9.1
MDR
CU
MAR
CPU
地址总线数据总线控制总线
IR
存储器三、执行周期
1,非访存指令
(1) CLA 清 A
(2) COM 取反
(4) CSL 循环左移
(3) SHR 算术右移
(5) STP 停机指令
0 ACC
ACC ACC
L(ACC) R(ACC),ACC0 ACC0
R(ACC) L(ACC),ACC0 ACCn
0 G
9.1
2,访存指令
Ad(IR) MAR
1 R
M(MAR) MDR
(ACC) + (MDR) ACC
Ad(IR) MAR
1 W
ACC MDR
MDR M(MAR)
STA X
ADD X
(2) 存数指令
(1) 加法指令
9.1
(3) 取数指令
Ad ( IR ) MAR
1 R
M ( MAR ) MDR
MDR ACC
3,转移指令
(1) 无条件转
(2) 条件转移
Ad ( IR ) PC
A0?Ad ( IR ) + A0 ( PC ) PC
LDA X
JMP X
BAN X (负则转)
9.1
4,三类指令的指令周期取指周期 执行周期取指周期 执行周期取指周期 执行周期取指周期 间址周期 执行周期非访存 指令周期直接访存 指令周期间接访存 指令周期转移 指令周期
9.1
取指周期 间址周期 执行周期间接转移 指令周期四、中断周期程序断点存入,0,地址 程序断点 进栈
0 MAR
1 W
PC MDR
MDR M ( MAR )
向量地址 PC
0 EINT( 置,0”) 0 EINT( 置,0”)
向量地址 PC
MDR M ( MAR )
PC MDR
1 W
中断识别程序入口地址 M PC
9.1
( SP ) 1 MAR
9.2 控制单元的功能一、控制单元的外特性指令寄存器控制单元
CU

时钟标志 CPU 内部的控制信号到系统总线的控制信号来自系统总线的控制信号系统总线
1,输入信号
(1) 时钟
(2) 指令寄存器
(4) 外来信号
(3) 标志
CU 受时钟控制控制信号 与操作码有关
OP ( IR ) CU
CU 受标志控制
INTR 中断请求
HRQ 总线请求一个时钟脉冲发一个操作命令或一组需同时执行的操作命令如
9.2
2,输出信号
(1) CPU 内的各种控制信号
(2) 送至控制总线的信号
Ri Rj
(PC) + 1 PC
INTA
HLDA
访存控制信号访 IO/ 存储器的控制信号读命令写命令中断响应信号总线响应信号
MREQ
IO/M
RD
WR
ALU +、-、与、或 ……
9.2
二、控制信号举例
PC IR
AC
CU
时钟
ALU



控制信号标志控制信号C0C1
C2
C3
C4
取指周期以 ADD @ X 为例
9.2
1,不采用 CPU 内部总线的方式
M
D
R
M
A
R
M
D
R
M
A
R
PC IR
AC
CU
时钟
ALU



控制信号标志控制信号
M
D
R
M
A
R
二、控制信号举例
1,不采用 CPU 内部总线的方式
C1
C2
C3C
5
ADD @ X 间址周期
9.2
M
D
R
M
D
R
M
A
R
PC IR
AC
CU
时钟
ALU



控制信号标志控制信号
M
D
R
M
A
R
二、控制信号举例
1,不采用 CPU 内部总线的方式
C1
C2
C5
ADD @ X 执行周期
C7
C6 C8
… 控制信号
9.2
M
D
R
M
A
R
M
D
R
MDR
CU(1) ADD @ X 取指周期
PC
CU 发读命令 1 R
MDR
OP( IR)
( PC) + 1 PC
IR
PC
MAR
AC
Y
ALU
Z

控制信号
IRi
IRi
PCO
PCO
MARi
MARi
MDRO
MDRO

数据线 数据线控制信号
CPU
内部总线时钟
2,采用 CPU 内部总线方式地址线地址线MAR
MDR
IR
CU
9.2
PC
(2) ADD @ X 间址周期
MDR
1 R
MDR
有效地址 Ad( IR)
MDRO
MDRO
数据线 数据线时钟 CU
IR
PC
MAR
MDR
AC
Y
ALU
Z

控制信号
…控制信号
CPU
内部总线MDR
IR
MARi
MARi
地址线地址线MAR
IRi
IRiMDRO
形式地址 MAR
9.2
时钟 CU
IR
PC
MAR
MDR
AC
Y
ALU
Z

控制信号
CPU
内部总线MDRO
MDRO
(3) ADD @ X 执行周期
1 R
MDR
Z
AC
( AC) +( Y)
MDR
控制信号 …
MAR
MDR
地址线地址线? 数据线数据线
Y
MDRO Yi
Yi
ALU
ACO ACOALUi
ALUiAC
Z
ZO
ZO
ACi
ACi
MARi
MARi
ALU
9.2
三、多级时序系统
1,机器周期
(1) 机器周期的概念
(2) 确定机器周期需考虑的因素
(3) 基准时间的确定所有指令执行过程中的一个基准时间每条指令的执行 步骤每一步骤 所需的 时间
以完成 最复杂 指令功能的时间 为准
以 访问一次存储器 的时间 为基准若指令字长 = 存储字长 取指周期 = 机器周期
9.2
2,时钟周期 (节拍、状态)
一个机器周期内可完成若干个微操作每个微操作需一定的时间时钟周期是控制计算机操作的最小单位时间将一个机器周期分成若干个时间相等的时间段( 节拍、状态、时钟周期 )
9.2
用时钟周期控制产生一个或几个微操作命令
CLK
T0
T1
T2
T3
时钟周期
2,时钟周期 (节拍、状态)
机器周期 机器周期
T0 T1 T2 T3 T0 T1 T2 T3
9.2
3,多级时序系统机器周期、节拍(状态)组成多级时序系统一个指令周期包含若干个机器周期一个机器周期包含若干个时钟周期
CLK
机器周期 机器周期 机器周期
(取指令) (取有效地址) (执行指令)
指令周期
T0 T1 T2 T3 T0 T1 T2 T3 T0 T1 T2 T3
机器周期 机器周期
(取指令) (执行指令)
指令周期
T0 T1 T2 T3 T0 T1 T2节拍
(状态 )
节拍
(状态 )
9.2
4,机器速度与机器主频的关系机器的 主频 f 越快 机器的 速度也越快在机器周期所含时钟周期数 相同 的前提下,
两机 平均指令执行速度之比 等于 两机主频之比机器速度 不仅与 主频有关,还与机器周期中所含时钟周期 (主频的倒数) 数 以及指令周期中所含的 机器周期数有关
9.2
MIPS1
MIPS2 =
f1
f2
四、控制方式产生不同微操作命令序列所用的时序控制方式
1,同步控制方式任一微操作均由 统一基准时标 的时序信号控制
CLK
机器周期 机器周期 机器周期
(取指令) (取有效地址) (执行指令)
指令周期
T0 T1 T2 T3 T0 T1 T2 T3 T0 T1 T2 T3
(1) 采用 定长 的机器周期以 最长 的 微操作序列 和 最繁 的微操作作为 标准
9.2
机器周期内 节拍数相同
(2) 采用不定长的机器周期机器周期 机器周期
(取指令) (执行指令)
指令周期
T0 T1 T2 T3 T0 T1 T2节拍
(状态 )
机器周期 机器周期
(取指令) (执行指令)
T0 T1 T2 T3 T0 T1 T2 T3 T T
延长
9.2
机器周期内 节拍数不等
(3) 采用中央控制和局部控制相结合的方法
T0 T1 T2 T3 T0 T1 T2
中央控制节拍
T3 T0 T1
中央控制节拍机器周期执行周期指令周期取指周期
T0 T1 T2 T3
9.2
局部控制的节拍宽度与中央控制的节拍宽度一致
T*T* T*
局部控制节拍

2,异步控制方式无基准时标信号无固定的周期节拍和严格的时钟同步采用 应答方式
3,联合控制方式
4,人工控制方式
(1) Reset
(2) 连续 和 单条 指令执行转换开关
(3) 符合停机开关同步与异步相结合
9.2
五、多级时序系统实例分析
1,8085 的组成 9.2
A15~A8
中断控制
AC(8) TR(8) FR(5) IR(8)
IDAL( 16)
PC( 16)
SP( 16)
L( 8)H( 8)
E( 8)D( 8)
C( 8)B( 8)
指令译码和机器周期编码
ALU
定时和控制时钟 控制 状态 DMA 复位 ABR(8) ADBR(8)
8位内部数据总线
I/O控制
INTA
INTR SID SOD
CLK
Ready RD WR ALE IO/M HLDA Reset out AD7~AD0
2,8085 的外部引脚
(1) 地址和数据信号
(2) 定时和控制信号
(3) 存储器和 I/O 初始化
A15~A8 AD7~AD0
SID SOD
入 X1 X2
入 HOLD Ready
出 HLDA
出 CLK ALE S0 S1
IO/M RD WR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
X1
X2
Reset out
SOD
SID
Trap
RST7.5
RST6.5
RST5.5
INTA
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
VSS
INTR
VCC
HOLD
HLDA
CLK(out)
Rsest in
Ready
IO/M
S1
RD
WR
ALE
S0
A15
A14
A13
A12
A11
A10
A9
A8
9.2
(4) 与中断有关的信号
(5) CPU 初始化
(6) 电源和地出 INTA
Trap 重新启动中断入 INTR
入 Reset in
出 Reset out
VCC +5 V
VSS 地
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
X1
X2
Reset out
SOD
SID
Trap
RST7.5
RST6.5
RST5.5
INTA
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
VSS
INTR
VCC
HOLD
HLDA
CLK(out)
Rsest in
Ready
IO/M
S1
RD
WR
ALE
S0
A15
A14
A13
A12
A11
A10
A9
A8
9.2
3,机器周期和节拍(状态)与控制信号的关系 9.2
T1 T2 T3 T4 T1 T2 T3 T1 T2 T3
M1 M2 M3
PC out PC+1 Ins IR X PC out PC+1 By Z Z out A Port
IO
PORT ACCbytePCLInstrPCL
PCH PCH IO PORT
3MHZ
CLK
A15~A8
AD7~AD0
ALE
RD
WR
IO/M
小结每个 控制 信号 在 指定机器周期 的指定节拍 T 时刻 发出机器周期 M1 取指令操作码机器周期 M2 取设备地址机器周期 M3 执行 ACC 的内容写入设备以一条输出指令( I/O 写 )为例
9.2
第 10章 控制单元的设计
10.1 组合逻辑设计
10.2 微程序设计
10.1 组合逻辑设计一、组合逻辑控制单元框图
1,CU 外特性
IR
节拍发生器
CU
T0
T1
Tn
…CLK
(机器主频)

标志
0 1 2n-1…
C0 C1 Cn
操作码译码
n 位操作码
2.节拍信号
CLK
T0
T1
T2
T3
时钟周期机器周期 机器周期
T0 T1 T2 T3 T0 T1 T2 T3
10.1
二、微操作的节拍安排采用 同步控制方式
CPU 内部结构采用非总线方式一个 机器周期 内有 3个节拍(时钟周期)
10.1
PC IR
AC
CU
时钟
ALU



C1
C2
C5 C9
C0
C10 C3
C7
C4
C6
C12
C11
C8
控制信号标志控制信号
M
D
R
M
A
R
1,安排微操作时序的原则原则一 微操作的 先后顺序不得 随意 更改原则二 被控对象不同 的微操作尽量安排在 一个节拍 内完成原则三 占用 时间较短 的微操作尽量 安排在 一个节拍 内完成并 允许有先后顺序
10.1
2,取指周期 微操作的 节拍安排
PC MAR
M ( MAR ) MDR
MDR IR
( PC ) + 1 PC
原则二原则二原则三
3,间址周期 微操作的 节拍安排
M ( MAR ) MDR
MDR Ad ( IR )
T0
T1
T2
T0
T1
T2
1 R
OP ( IR ) ID
Ad ( IR ) MAR
1 R
10.1
4,执行周期 微操作的 节拍安排
① CLA
② COM
③ SHR
T0
T1
T2
T0
T1
T2
T0
T1
T2
AC0 AC0
L ( AC ) R ( AC )
0 AC
AC AC
10.1
④ CSL
⑤ STP
⑥ ADD X
⑦ STA X
R ( AC ) L ( AC ) AC0 ACn
T0
T1
T2
0 G
T0
T1
T2
T0
T1
T2
T0
T1
T2
Ad ( IR ) MAR
M ( MAR ) MDR
( AC ) + ( MDR ) AC
Ad ( IR ) MAR
AC MDR
MDR M ( MAR )
1 R
1 W
10.1
⑧ LDA X
⑨ JMP X
⑩ BAN X
T0
T1
T2
Ad ( IR ) MAR
M ( MAR ) MDR
MDR AC
T0
T1
T2
T0
T1
T2
Ad ( IR ) PC
1 R
A0? Ad ( IR ) + A0? PC PC
10.1
5,中断周期 微操作的 节拍安排
T0
T1
T2
0 MAR
PC MDR
MDR M ( MAR )
硬件关中断向量地址 PC
中断隐指令完成
1 W
10.1
三、组合逻辑设计步骤
1,列出操作时间表
T2
T1
T0
FE
取指
JMPLDASTAADDCOMCLA微操作命令信号状态条件节拍工作周期标记
PC MAR
1 R
M(MAR) MDR
( PC ) +1 PC
MDR IR
OP( IR ) ID
1 IND
1 EX
I
I
10.1
间址特征三、组合逻辑设计步骤
1,列出操作时间表
T2
T1
T0
IND
间址
JMPLDASTAADDCOMCLA微操作命令信号状态条件节拍工作周期标记
Ad (IR) MAR
1 R
M(MAR) MDR
MDR Ad (IR)
1 EXIND
10.1
间址周期标志
T2
T1
T0
EX
执行
JMPLDASTAADDCOMCLA微操作命令信号状态条件节拍工作周期标记
Ad (IR) MAR
1 R
M(MAR) MDR
AC MDR
(AC)+(MDR) AC
MDR M(MAR)
MDR AC
0 AC
三、组合逻辑设计步骤
1,列出操作时间表
1 W
10.1
三、组合逻辑设计步骤
1,列出操作时间表
T2
T1
T0
FE
取指
JMPLDASTAADDCOMCLA微操作命令信号状态条件节拍工作周期标记
PC MAR
1 R
M(MAR) MDR
( PC ) +1 PC
MDR IR
OP( IR ) ID
1 IND
1 EX
I
I
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
10.1
三、组合逻辑设计步骤
1,列出操作时间表
T2
T1
T0
IND
间址
JMPLDASTAADDCOMCLA微操作命令信号状态条件节拍工作周期标记
Ad (IR) MAR
1 R
M(MAR) MDR
MDR Ad (IR)
1 EXIND
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
10.1
三、组合逻辑设计步骤
1,列出操作时间表
T2
T1
T0
EX
执行
JMPLDASTAADDCOMCLA微操作命令信号状态条件节拍工作周期标记
Ad (IR) MAR
1 R
M(MAR) MDR
AC MDR
(AC)+(MDR) AC
MDR M(MAR)
MDR AC
0 AC
1 W
1 1 1
1 1
1
1 1
1
1
1
1
1
10.1
2,写出微操作命令的最简表达式
= FE · T1 + IND ·T1 ( ADD + STA + LDA + JMP + BAN )
+ EX ·T1 ( ADD +LDA )
M ( MAR ) MDR
= T1{ FE + IND ( ADD + STA + LDA + JMP + BAN )
+ EX ( ADD +LDA ) }
10.1
3,画出逻辑图特点?思路清晰,简单明了
庞杂,调试困难,修改困难
速度快
&
&
& 1
1
& &
& &
& ≥1
FE
IND
EX
LDA ADD
JMP BAN
STA
T1
M ( MAR)
MDR
( RISC)
& &
10.1
10.2 微程序设计一、微程序设计思想的产生
1951 英国剑桥大学教授 Wilkes
完成一条机器指令微操作命令 1
微操作命令 2
微操作命令 n

微指令 1
10100000
微指令 n
微程序
00010010
存储逻辑一条机器指令对应一个微程序

存入 ROM
二、微程序控制单元框图及工作原理
1,机器指令对应的微程序
M+1
M
M+2
P+1
K
K+2
P
P+2
K+1

取指周期微程序对应 LDA 操作的微程序对应 STA 操作的微程序间址周期微程序中断周期微程序
10.2
2,微程序控制单元的基本框图微地址形成部件顺序逻辑
CMAR
地址译码控制存储器标志
CLK
下地址CMDR
至 CPU 内部和系统总线的控制信号
OP IR
顺序控制操作控制微指令基本格式
10.2
二、微程序控制单元框图及工作原理
M+1
M
M+2
P+1
K
K+2
P
P+2
K+1

取指周期 微程序对应 LDA 操作的微程序对应 STA 操作的微程序间址周期 微程序中断周期 微程序
M+1
M+2
P+1
P+2
K+1
K+2
M
M
转执行周期微程序

转取指周期微程序

10.2
× ××
3,工作原理
LDA X
ADD Y
STA Z
主存
STP
用户程序
10.2控存
M+1
M
M+2
P+1
Q
Q+2
P
P+2
Q+1

取指周期微程序对应 LDA 操作的微程序对应 ADD 操作的微程序
Q+1
Q+2
M
M+1
M+2
P+1
P+2
M



对应 STA 操作的微程序
K+1
K+2
M
K
K+2
K+1
× ××
3,工作原理
(1) 取指阶段
M CMAR
CM ( CMAR ) CMDR
由 CMDR 发命令形成下条微指令地址
Ad (CMDR ) CMAR
CM (CMAR ) CMDR
由 CMDR 发命令
Ad (CMDR ) CMAR
CM (CMAR ) CMDR
由 CMDR 发命令
M + 1
M + 2
PC MAR 1 R
M ( MAR ) MDR
( PC ) + 1 PC
MDR IR
1 0 0 0 0 1 M+1M …
0 1 0 0 1 0 M+2M + 1 …
形成下条微指令地址执行取指微程序
10.2
0 0 1 0 0 0 0M + 2 … ×××
(2) 执行阶段
CM ( CMAR ) CMDR
由 CMDR 发命令
Ad (CMDR ) CMAR
CM (CMAR ) CMDR
由 CMDR 发命令
Ad (CMDR ) CMAR
CM (CMAR ) CMDR
由 CMDR 发命令
OP ( IR ) 微地址形成部件 CMAR ( P CMAR )
Ad (CMDR ) CMAR
Ad ( IR ) MAR 1 R
M ( MAR ) MDR
MDR AC
0 0 0 0 0 0 1 0P + 2 … M
执行 LDA 微程序形成下条微指令地址 P + 1
形成下条微指令地址 P + 2
形成下条微指令地址 ( M CMAR )
0 1 0 0 0 P+2P + 1 …
0 0 0 1 0 0 1 P+1P …
10.2
(3) 取指阶段
CM ( CMAR ) CMDR
由 CMDR 发命令
M CMAR
PC MAR 1 R
全部微指令存在 CM 中,程序执行过程中 只需读出关键?微指令的 操作控制字段如何形成微操作命令
微指令的 后续地址如何形成执行取指微程序

10.2
1 0 0 0 0 1 M+1M …
三、微指令的编码方式(控制方式)
1,直接编码(直接控制)方式在微指令的操作控制字段中,
每一位代表一个微操作命令速度最快下地址
…控制信号操作控制某位为,1” 表示该控制信号有效
10.2
2,字段直接编码方式将微指令的控制字段分成若干,段,,
每段经译码后发出控制信号每个字段中的命令是 互斥 的译码

译码

译码

下地址操作控制控制信号缩短 了微指令 字长,增加 了译码 时间微程序执行速度较慢
10.2
显式编码
3,字段间接编码方式
4,混合编码直接编码和字段编码(直接和间接)混合使用
5,其他

字段 1

字段 2
译码 译码 译码

操作控制控制信号

字段 n 下地址…

控制信号
10.2
隐式编码四、微指令序列地址的形成
1,微指令的 下地址字段 指出
2,根据机器指令的 操作码 形成
3,增量计数器
4,分支转移
( CMAR ) + 1 CMAR
转移地址操作控制字段 转移方式转移方式 指明判别条件转移地址 指明转移成功后的去向
10.2
5,通过测试网络
6,由硬件产生 微程序入口地址第一条微指令地址 由专门 硬件 产生中断周期 由 硬件 产生 中断周期微程序首地址非测试地址 h 测试地址 l
测试网络

… 测试源微指令地址
CMDR
操作控制 顺序控制
H L
10.2
7,后续微指令地址形成方式原理图地址选择
+ 1
CMAR
地址译码下地址转移方式CMDR
控制存储器

控制信号分支逻辑
…标志微程序入口
10.2
OP IR
微地址形成部件多路选择五、微指令格式
1,水平型微指令如 直接编码、字段直接编码、字段间接编码、
直接和字段混合编码
2,垂直型微指令类似机器指令操作码 的方式一次能定义并执行多个并行操作由微操作码字段规定微指令的功能
10.2
3,两种微指令格式的比较
(1) 水平型微指令比垂直型微指令 并行操作能力强,
灵活性强
(2) 水平型微指令执行一条机器指令所要的微指令 数目少,速度快
(3) 水平型微指令 用较短的微程序结构换取较长的微指令结构
(4) 水平型微指令与机器指令 差别大
10.2
六、静态微程序设计和动态微程序设计静态 微程序无须改变,采用 ROM
动态 通过 改变微指令 和 微程序 改变机器指令,
有利于仿真,采用 EPROM
七、毫微程序设计
1,毫微程序设计的基本概念微程序设计 用 微程序解释机器指令毫微程序设计 用 毫微程序解释微程序毫微指令与微指令 的关系好比 微指令与机器指令 的关系
10.2
2,毫微程序控制存储器的基本组成控制存储器
(微程序)
CMAR1
MOP
OP
转移地址垂直型微指令
IR
+ 1
CMDR1 CMAR2
控制存储器
(毫微程序)
水平型微指令

控制信号
CMDR2
10.2
八、串行微程序控制和并行微程序控制取第 i+1 条微指令执行第 i 条微指令取第 i 条微指令 执行第 i+1条微指令执行第 i 条微指令取第 i 条微指令取第 i+1 条微指令 执行第 i+1条微指令取第 i+2 条微指令 执行第 i+2条微指令串行 微程序控制并行 微程序控制
10.2
还需考虑 如何读出 这 3 条微指令?
1,写出对应机器指令的微操作及节拍安排假设 CPU 结构与组合逻辑相同
(1) 取指阶段微操作分析
T0
T1
T2
PC MAR
M ( MAR ) MDR ( PC ) + 1 PC
MDR IR OP ( IR ) 微地址形成部件九、微程序设计举例
1 R
若一个 T 内安排一条微指令则取指操作需 3 条微指令
3 条微指令
Ad ( CMDR ) CMAR
OP ( IR ) 微地址形成部件 CMAR
10.2
(2) 取指阶段的微操作及节拍安排考虑到需要 形成后续微指令的地址
T0
T1
T2
T3
T4
T5
1 R
( PC )+1 PC
OP ( IR ) 微地址形成部件
MARPC
CMARAd ( CMDR )
MDRM ( MAR )
CMARAd ( CMDR )
IRMDR
10.2
CMAROP ( IR ) 微地址形成部件
(3) 执行阶段的微操作及节拍安排考虑到需形成后续微指令的地址取指微程序的入口地址 M
由微指令下地址字段指出? 非访存指令
① CLA 指令
T0
T1
② COM 指令
T0
T1 Ad ( CMDR ) CMAR
AC AC
CMARAd ( CMDR )
AC0
10.2
④ CSL 指令
T0
T1
⑤ STP 指令
T1
Ad ( CMDR ) CMAR
AC0 ACn
T0
CMARAd ( CMDR )
G0
L ( AC )R ( AC )
③ SHR 指令
T0
T1
AC0 AC0R ( AC )L ( AC )
CMARAd ( CMDR )
10.2
访存指令
⑥ ADD 指令
T0
T1
T2
T3
T4
T5
Ad ( IR ) MAR
Ad ( CMDR ) CMAR
M ( MAR ) MDR
Ad ( CMDR ) CMAR
( AC ) + ( MDR ) AC
Ad ( CMDR ) CMAR
1 R
⑦ STA 指令
T0
T1
T2
T3
T4
T5
Ad (IR) MAR
Ad ( CMDR ) CMAR
AC MDR
Ad ( CMDR ) CMAR
MDR M (MAR)
Ad ( CMDR ) CMAR
1 W
10.2
⑧ LDA 指令
T0
T1
T2
T3
T4
T5
Ad ( IR ) MAR
Ad ( CMDR ) CMAR
M ( MAR ) MDR
Ad ( CMDR ) CMAR
MDR AC
Ad ( CMDR ) CMAR
1 R
10.2
全部微操作 20个微指令 38条
转移类指令
⑨ JMP 指令
T0
T1
Ad ( IR) PC
Ad ( CMDR ) CMAR
⑩ BAN 指令
T0
T1 Ad ( CMDR ) CMAR
A0?Ad ( IR ) + A0? ( PC ) PC
10.2
2,确定微指令格式
(1) 微指令的编码方式
(2) 后续微指令的地址形成方式采用直接控制由机器指令的操作码通过微地址形成部件形成由微指令的下地址字段直接给出
(3) 微指令字长由 20 个微操作确定 操作控制字段 最少 20 位由 38 条微指令确定微指令的 下地址字段 为 6 位微指令字长 可取 20 + 6 = 26 位
10.2
(4) 微指令字长的确定
1 条
18 条
38 条微指令中有 19 条是关于后续微指令地址 CMAR
Ad ( CMDR ) CMAR其中若用 Ad ( CMDR ) 直接送控存地址线则 省去了输至 CMAR 的时间,省去了 CMAR
同理 OP ( IR ) 微地址形成部件 控存地址线可省去 19 条微指令,2 个微操作
38 - 19 = 19
下地址字段最少取 5 位
10.2
20 - 2 = 18
操作控制字段最少取 18位
CMAROP ( IR ) 微地址形成部件
18 位考虑留有一定的余量 取操作控制字段下地址字段 5 位 共 30 位
(6) 定义微指令操作控制字段每一位的微操作
0 1 2 23 24 29… …
24 位
6 位
10.2
多路选择
OPIR
下地址控制存储器

CMDR
控制信号微地址形成部件
(5) 省去了 CMAR 的控制存储器
3,编写微指令码点
1116
LDA
12
111ADD
110
04COM
03CLA
1
1101
1100
微指令地址
(八进制 )
微程序名称
1100 11
0000 00
0100 01
0000 00
0000 00
0000 10
微指令(二进制代码 )
操作控制字段 下地址字段
117 0010 00
取指
02
20
× × ××× ×
000 010
0100 10
0000 00
10.2
2726252423104321 29280 … …
1