计算机组成原理
2023-03-12 14:29:27 2 举报
AI智能生成
408知识点总结
作者其他创作
大纲/内容
输入/输出系统
I/O接口
I/O接口的功能
进行地址译码和设备选择
实现主机和外设的通信联络控制
实现数据缓冲
CPU与外设之间速度不匹配,接口设置缓冲寄存器,暂存数据
信号格式的转换
电平转换,并/串或串/并转换,模/数或数/模转换
传送控制命令和状态信息
错误和状态监测
控制和定时
I/O接口的基本结构
I/O接口的类型
传送方式
并行接口
串行接口
按主机访问I/O设备的控制方式
程序查询方式
中断接口
DMA接口
功能选择的灵活性
可编程接口
不可编程接口
I/O端口及其编址
统一编址
存储器映射方式
不需要设置专门的I/O指令,用统一的访存指令就可以访问I/O端口
操作更灵活,方便,使端口有较大的编址空间
端口占用存储器地址,是内存容量变小,利用存储器编址的I/O设备进行数据输入/输出操作,执行速度较慢,外设寻址时间长
独立编制
I/O端口的地址空间与主存地址空间的独立的
输入/输出指令与存储器指令有明显区别,程序清晰,便于理解,地址位少,译码快,地址不占用主存空间
增加了控制的复杂性,程序设计灵活性差
I/O方式
程序查询方式
独占查询
独占查询:CPU100%时间都在查询I/O状态,完全串行
定时查询
在保证数据不丢失的情况下,每隔一段时间CPU就查询一次I/O状态
有踏步现象,CPU与I/O串行工作,需要花费大量时间来查询和等待
过程
CPU执行初始化程序
向I/O接口发送命令字,启动I/O设备
从外设接口读取其状态信息
CPU不断查询I/O设备状态,直到外设准备就绪
传送一次地址
修改地址和计数器参数
判断传送是否结束,若未结束转第三步,直到计数器为0
程序中断方式
实现CPU与I/O设备的并行工作,传送与主程序串行
I/O工作
自身准备:CPU不查询
与主机交换信息:CPU暂停现行程序
程序中断的工作流程
中断请求
中断响应判优
响应优先级是指CPU响应中断请求的先后顺序。
不可屏蔽中断>内部异常>可屏蔽中断
硬件故障(最高级(如关机掉电)>软件中断
DMA请求优先于I/O设备传送请求
I/O传送类中断请求中,高速设备优先于低速设备,输入优先于输出设备,实时设备优先于普通设备
CPU响应中断的条件
中断源有中断请求
CPU允许中断及开中断
一条指令执行完毕
中断响应过程
关中断
保存断点
引出中断服务程序
中断向量
向量中断
硬件识别方式,异常或中断处理程序的首地址称为中断向量,所有中断向量都存放在中断向量表中
每个异常或中断都被指定一个中断类型号
类型号和向量一一对应,可以根据类型号快速找到对应的处理程序
CPU响应中断后,通过识别中断源获得中断类型号,计算出对应中断向量的地址
根据地址取出中断服务程序的入口地址,送入程序计数器PC,转而执行中断程序
非向量中断
即软件查询法,CPU设置一个异常状态寄存器,记录异常原因
中断处理过程
硬件完成
中断隐指令(硬件自动完成)
关中断
保存断点
中断服务程序寻址
保存源程序的PC值,并让PC值指向中断服务程序的第一个指令
中断服务程序完成
保存现场和屏蔽字
开中断(单重中断没有)
执行中断服务程序
关中断(单重中断没有)
执行现场和屏蔽字
开中断
中断返回
总线
总线概述
总线基本概念
总线的定义
为多个部件分时共享的公共信息传送线路
两个特点
分时
每个时刻只允许有一个部件向总线发送信息
共享
总线上可以挂接多个部件,多个部件之间相互交换信息都可通过这组线路分时共享,多个部件可同时从总线上接收相同的信息
总线设备
主设备
获得总线控制权的设备
从设备
被主设备访问的设备,它只能响应从主设备发来的各种总线命令
总线特性
机械特性(尺寸,大小)
电气特性
传输方向和有效的电平范围
功能特性
每根传输线的功能
时间特性
信号和时序的关系
总线的分类
片内总线
芯片内部,CPU内部寄存器与寄存器之间的
系统总线
数据总线
双向传输
传输各功能部件之间的数据信息
位数与存储字长,机器字长有关
地址总线
单向传输
尾数与主存地址空间大小有关
控制总线
传输控制信息
数据通路表示数据流经的路径,数据总线是承载的媒介
I/O总线
用于连接低速I/O设备
将低速设备和高速总线分离,提升总线的系统性能,常见的有USB,PCI总线
通信总线
计算机系统之间或计算机系统与其他系统之间传送信息的总线
也称外部总线
按时序控制方式划分
同步总线
异步总线
按数据传输格式
并行总线
串行总线
系统总线的结构
单总线结构
结构简单,成本低,易于接入新的设备
宽带低,负载重,多个部件争用唯一的总线,不支持并发传送
双总线结构
一条主存总线,用于CPU、主存和通道之间传送数据
另一条I/O总线,用于在多个外部设备与通道之间传送数据
优点:低速I/O从单总线上分离出来,实现存储器总线和I/O总线分离
需要增加通道等硬件设备
三总线结构
主存总线:CPU和内存之间传送地址、数据和控制信息
I/O总线用于CPU和各类外设之间通信
DMA总线用于内存和高速外设之间直接传送数据
提供了I/O设备的性能,使其更快地响应命令,提高系统吞吐量
系统工作效率较低
常见的总线标准
ISA
系统总线,IBM的AT机,并行
EISA
为32位CPU设计的扩展总线,系统总线,并行
VESA
32位局部总线,并行
PCI
局部总线,高性能,补衣服某个具体处理器,并行
AGP
局部总线,并行
PCI-E,PCI-Express
串行,局部总线
RS-232C
串行通信总线,连接外设
USB
串行总线
连接外部设备的I/O总线
设备总线,即插即用,热插拔,有很强的连接能力
PCMCIA
连接外设,并行
IDE
集成设备电源,连接硬盘,并行总线
SCSI
小型计算机系统接口,连接外设,并行
SATA
串行高级技术附件,连接硬盘
串行总线逐渐替代并行总线
总线的性能标准
总线传输周期
一次总线操作所需要的时间
总线时钟周期
机器的时钟周期
总线工作频率
总线周期的倒数
总线周期=N个时钟周期,总线工作频率=时钟频率/N
总线时钟频率
时钟周期的倒数
总线宽度
同时传输的数据位数
总线带宽
总线的最大数据传输率
总线带宽=总线工作频率×(总线宽度/8)
总线带宽=总线宽度×总线频率
总线复用
信号线不同时间传输不同的信息
信号线数
地址总线,数据总线,控制总线三种总线数的总和
总线事务和定时
总线定时是指总线在双方交换数据的过程中需要时间上配合关系的控制
总线事务
请求操作
仲裁操作
地址传输
数据传输
总线释放
突发(猝发)传送:能够进行连续成组数据的传送
同步定时方式
采用统一的时钟信号来协调发送和接收双方的传送定时关系
时钟产生的时间间隔,每个间隔构成一个总线周期
一个总线周期,发送方和接收方可以进行一次数据传送
异步定时方式
没有同意的时钟,依靠双方的相互制约的握手信号来实现定时控制
总线周期长度可变,保证两个工作速度相差大的部件或设备之间可靠的进行信息交换,自动适应时间的配合
比同步控制方式复杂,速度比同步方式慢
不互锁方式
速度最快,可靠性最差
半互锁方式
主设备发送请求,必须等到总设备回答后,才撤销请求信号。
全互锁方式
速度最慢,可靠性最强
中央处理器
CPU的功能和基本结构
CPU的功能
由运算器和控制器组成
控制器负责协调并控制计算机各部件执行程序的指令序列,取指令,分析指令和执行指令
运算器的功能是对数据进行加工
功能
指令控制
完成取指令,分析指令和执行指令的操作
操作控制
一条指令功能由若干操作信号的组合来实现的
时间控制
为每条指令按时间顺序提供应有的控制信号
数据加工
数据进行算术和逻辑运算
中断处理
出现的异常情况和特殊请求进行处理
CPU的基本结构
运算器
算术逻辑单元(ALU)
暂存寄存器
暂存从主存读来的数据,该数据不能存放在通用寄存器中,否则会破坏原有内容
用户可见
累加寄存器
通用寄存器组
如AX,BX,CX,DX,SP(堆栈指针)
程序状态字寄存器
移位器
计数器
控制器
程序计数器
用户可见
指令寄存器
指令译码器
存储器地址寄存器
存储器数据寄存器
时序系统
微操作信号发生器
指令执行过程
指令周期
CPU从主存中取出并执行一条指令的时间称为指令周期
指令周期长用若干机器周期表示
机器周期又包含若干时钟周期(也称节拍或T周期,他是CPU操作的最基本单位)
无条件转移指令只包括取指周期和执行周期
对于间接寻址的指令,包括间指周期,介于取指周期和执行周期之间
指令周期包括取指周期+间址周期+执行周期+中断周期
为了区分不同的工作周期,设置4个标志触发器FE,IND,EX,INT,分别对应取指,间址,执行和中断,1表示有效
指令周期的数据流
取指周期
PC->MAR,M(MAR)->MDR,PC+1->PC,MDR->
间址周期
取操作数有效地址
执行周期
取操作数
中断周期
处理中断请求
指令执行方案
单指令方案
所有指令都执行相同的执行时间
指令间串行执行
指令周期取决于执行时间最长的执行时间
多指令方案
多指令周期方案
串行执行,下条指令只能在前一条指令执行完才能启动
流水线方案
可以并行执行的方案
数据通路的功能和基本结构
数据通路的功能
数据在功能部件中传送的路径称为数据通路
实现CPU内部的运算器与寄存器及寄存器之间的数据交换
数据通路的基本结构
CPU内部单总线方式
所有寄存器的输入端和输出端都连接到一个公共通路上
结构简单,存在较多冲突
CPU内部三总线方式
专用数据通路方式
性能较高,但硬件量大
内部总线是指同一部件,如CPU内部各寄存器 即运算部件之间的总线;系统总线是指同一台计算机系统的各部件,如CPU,内存,之间相互连接的总线
寄存器之间的数据传送
主存与CPU之间的数据传送
执行算术或逻辑运算
控制器的功能和工作原理
控制器的结构和功能
控制器分为硬布线控制器和微程序控制器
硬布线控制器
特点
指令越多,设计和实现就越复杂,一般用于RISC(精简指令集系统)
扩充一条新指令,控制器设计需要大改,因此扩充较困难
纯硬件,执行速度很快,微操作控制信号由组合逻辑即时产生
硬布线控制单元图
根据指令操作码,目前的机器周期,节拍信号,机器状态条件即可确定这个节拍下应该发出那些微命令
硬布线控制器的时序系统及微操作
时钟周期
机器周期
指令周期
微操作命令分析
取指周期
PC->MAR
1->R 命令存储器读
M(MAR)->MDR
MDR->IR
OP(IR)->CU
(PC)+1->PC
间址周期
Ad(IR)->MAR
1->R
M(MAR)->MDR
执行周期
非访存指令
CLA 清ACC
COM 取反
SHR 算术右移
CSL 循环左移
STP 停机指令
访存指令
ADD X 加法指令
Ad(IR)->MAR,1->R
M(MAR)->MDR
(ACC)+(MDR)->ACC
STA X存数指令
Ad(IR)->MAR,1->W
ACC->MDR
MDR->M(MAR)
LDA X 取数指令
Ad(IR)->MAR,1->R
M(MAR)->MDR
MDR->ACC
转移指令
JMP X 无条件转移
BAN X 条件转移(负则转)
CPU的控制方式
同步控制方式
系统有一个统一的时钟
异步控制方式
各部件按自身固有的速度工作,通过应答机制进行联络
运行速度快,控制电路比较复杂
联合控制方式
介于同步,异步之间的一种折中
大部分采取同步控制,小部分采取异步控制的方式
硬布线控制单元设计步骤
列出微操作命令的操作时间表
进行微操作信号综合
画出微操作命令的逻辑图
微程序控制器
微程序控制的基本概念
微指令是对指令执行步骤的描述
每个微程序包含若干微指令
每条微指令包含若干微操作命令
微命令与微操作
微命令是构成控制序列的最小单位,微命令与微操作是一一对应的
微命令是微操作的控制信号,微操作是微命令的执行过程
微指令和微周期
微指令是若干微命令的集合
操作控制字段,又称微操作码字段,产生某一步操作所需的各种操作控制信号
顺序控制字段,又称微地址码字段,用于产生下一条要执行的微指令地址
主存储器与控制存储器
主存储器存放程序和数据,在CPU外部,用RAM实现,控制存储器(CM)用于存放微程序,在CPU内部,由ROM实现
程序与微程序
寄存器
地址寄存器(MAR):用于存放主存的读写地址
微地址寄存器(CMAR):用于存放控制寄存器的读写微指令的地址
指令寄存器(IR):用于存放从主存读出的指令
微指令寄存器(CMDR或uIR):用于存放从控制存储器中读出的微指令
微程序控制器的组成和工作方式
组成
控制存储器
核心部件,存放各指令对应的微程序
微指令寄存器
存放从CM中取出的微指令
微地址形成地址
产生初始微地址和后继微地址,保证微指令连续执行
微地址寄存器
接收微地址形成部件送来的微地址
工作过程
执行取微指令公共操作
由机器指令的操作码字段通过微地址 形成部件产生该机器指令所对应的微程序的入口地址
CM中逐条取出对应微指令执行
执行完后回到取微程序入口地址,继续第一步
微程序和机器指令
一条机器指令对应一个微程序,取指令操作的微命令统一编程一个微程序
指令系统具有n中机器指令,控制存储器中的微程序数至少n+1(1为公用 取指令微程序)
微程序个数为机器指令数加上对应取指,间址和中断等共用的微程序数
微程序的编码方式
直接编码方式
每位代表一个微命令
简单直观,执行速度快,操作并行性好
微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控制存储器容量极大
字段直接编码方式
微命令字段分成若干小字段,互斥性微命令组合在同一字段,把相容性命令组合在不同字段
缩短微指令字长
通过移码电路再放出微命令,比直接编译慢
信息位不能太多
每个小段要留出一个状态
字段间接编码方式
某些微命令需要另一字段的某些微命令来解释
微指令的地址形成方式
直接有微指令的下地址字段给出
根据机器指令的操作码形成
微指令的格式
水平型微指令
定义并执行几种并行的基本操作
微程序短,执行速度快
微指令长,编写微程序较麻烦
垂直型微指令
定义并执行一种基本操作
微指令短,简单,规整,便于编写微程序
微程序长,执行速度慢,效率低
混合型微指令
垂直基础上增加一些不太复杂的并行操作,微指令较短,仍便于编写;微指令不长,执行速度快
水平与垂直比较
水平指令解释指令的微程序,具有微指令字较长而微程序短的特点,垂直相反,微指令字短而微程序长
水平执行并行能力强,效率高,灵活性高,垂直型较差
水平型执行时间短,垂直型长
水平型用户难以掌握,垂直相对容易
微指令控制单元的设计步骤
写出对应机器指令的微操作命令及节拍安排
确定微指令格式
编写微指令码点
动态微程序设计和毫微程序设计
动态微程序设计
毫微程序设计
硬布线和微程序控制器的特点
异常和中断
指令流水线
基本概念
时间上的并行技术:流水线技术
空间上的并行技术:超标量处理机
指令流水的定义
取指
译码/读寄存器
执行/计算地址
访存
写回
特征
指令长度尽可能一致
指令格式尽可能规整
采用Load/Store指令
在存储器中“对齐”存放
流水线的表示方法
时空图
流水线的基本实现
执行最慢的指令作为设计其时钟周期的依据
流水线的数据通路
流水线的控制信号
流水线执行过程
取指
译码/读寄存器
执行/计算地址
访存
写回
流水线的冒险与处理
结构冒险
同一时刻征用同一资源而形成的冲突,也称资源冲突
解决办法
前一指令访存时,后一指令暂停一个时钟周期
单独设置数据存储器和指令存储器,使取数和取指令操作在各自不同的存储器中进行
数据冒险
写后读
写完后才能读,先读后写,读到的是旧数据
读后写
读出数据后,才能写该寄存器
写后写
解决办法
后续指令暂停一个或多个时钟周期
设置相关专用通路,数据旁路技术
编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相关
控制冒险
遇到改变指令执行顺序的情况
改变PC值,造成断流,一起控制冒险
解决办法
对转移指令进行分支预测
动态预测
静态预测
预取转移成功和不成功两个控制流方向上的目标指令
加快和提前形成条件码
提高转移方向的猜准率
流水线的性能指标
流水线的吞吐率
单位时间内流水线所完成的任务数量,或输出结构的数量
TP(流水线吞吐率)=n/Tk, n任务数,Tk是处理完n个任务所用的时间
设k为流水段的段数,△t为时钟周期,理想情况下一条k段流水线在k+n-1个时钟周期内完成n个任务,TP=n/((k+n-1)△t)
n->无穷,TPmax=1/△t
流水线加速比
S=T0/Tk,T0表示不使用流水线的总时间,Tk表示使用流水线的总时间
S=(kn△t)/(k+n-1)△t=kn/(k+n-1)
Smax=k
高级流水线技术
超标量流水线技术
也称动态发射技术
每个时钟周期并发多条独立指令,以并行操作方式将两条或多条指令编译执行,需配置多个功能部件
不能调整指令的执行顺序,通过编译优化技术,把可并行执行的指令搭配起来
超长指令字技术
静态多发射技术
挖掘指令间潜在的并发性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令,需多个处理部件
超流水线技术
一个时钟周期内再分段,一个时钟周期内一个功能部件使用多次
不能调整指令执行顺序,靠编译程序解决优化
超流水线CPU,每个时钟周期执行一条指令,CPI=1,多发射流水线CPU,每个时钟周期执行多条指令,CPI<1
多处理机的基本概念
SISD,SIMD,MIMD的基本概念
单指令单数据流结构(SISD)
一个处理机和一个存储器
不能并行,只能并发,每条指令只能处理一两个数据
串行执行指令流中的若干条指令
单指令多数据流结构(SIMD)
数据级并行技术
不能并行,只能并发,但每个指令可同时处理多个具有相同特殊的数据
一个指令控制部件,多个处理单元
多指令单数据流结构(MISD)
执行多条指令,处理统一数据,实际不存在
多指令多数据流结构(MIMD)
并行执行
同时执行多条指令分别处理不同的数据
分类
多计算机系统
多计算机系统有多个计算机组成,因此拥有多个处理机+多个主存储器
具有私有存储器,独立的主存地址空间,不能访问不同结点的私有存储器,要通过信息传递进行数据传送
多处理机系统
共享单一地址空间
一台计算机内包含多个处理机+一个主存储器
硬件多线程的基本概念
细粒度多线程
轮流交叉执行指令,每个时钟周期发射一个线程
能在每个时钟周期切换线程
线程切换代价低,指令级并行,线程间不并行
粗粒度多线程
仅一个线程出现较大开销阻塞时,才切换线程
新线程指令开始要重载流水线,线程切换开销比细粒度多线程大
指令级并行,线程间不并行
同时多线程
指令级并行,线程级并行
同一时钟周期,发射不同线程中的多条指令执行
多核处理机的基本概念
多个处理单元集成到一个CPU,一个处理单元称为一个核
共享主存储器
共享内存多处理机的基本概念
多处理机共享单一的地址空间,都通过存取指令访问共享的存储器
多个处理机共享一个主存储器
类型
统一存储访问(UMA)多处理机
处理器对所有存储单元的访问时间是大致相同的
处理机与共享存储器之间的连接方式,分为基于总线,基于交叉开关网络和基于多级交换网络连接等几种处理器
非统一存储访问(NUMA)多处理机
某些访存求要比其他的快
处理机不带高速缓存时,称为NC-NUMA;带有一致性高速缓存时,称为CC-NUMA
计算机系统概述
计算机系统层次结构
计算机系统的组成
既可以用硬件实现,也可以用软件实现,软硬件在逻辑上等效,硬件解决可以提升效率
计算机硬件
冯诺依曼机基本思想
采用“存储程序”的工作方式
由运算器,存储器,控制器,输入设备和输出设备5大部件组成
指令和数据以同等地位存储在存储器中,按地址寻址
指令与数据都用二进制代码表示,指由操作码和地址码组成
以运算器为中心,现代计算机以存储器为中心
基本思想:将实现编译好的程序和原始数据送入主存中才能执行,一旦程序被启动执行,就无需操作人员干预,计算机自动逐条执行指令,直至程序执行结束
基本工作方式是控制流驱动方式
计算机的功能部件
输入设备
输出设备
存储器
主存储器
按存储单元的地址进行访问
存储体存放二进制信息,地址寄存器(MAR)存放访存地址,经过地址译码后找到所选的存储单元
数据寄存器(MDR)用于暂存要从存储器中读或写的信息,失序逻辑控制用于产生存储器所需的各种时序信号
MAR用于寻址,位数对应着存储单元的个数
MDR的位数和存储字长等长,一般是字节的二次幂的整数倍
辅存储器
运算器
进行算术运算和逻辑运算
核心是算术逻辑单元ALU,运算器包含若干寄存器,如累加器(ACC),乘商寄存器(MQ),操作数寄存器(X),变址寄存器(IX),基址寄存器(BR),前三个是必备的
还有程序状态寄存器(PSW),用于存放标志信息或处理机状态信息,如结果是否溢出,有无产生进位或错位、结果是否为负
控制器
智慧各部件自动协调地进行工作
由程序计数器(PC),指令寄存器(IR)和控制单元(CU,核心)组成
PC用来存放当前欲执行指令的地址,可以自动加一
IR用来存放当前的指令
取指令PC——分析指令IP——执行指令CU
运算器+控制器=CPU,主存+PCU=主机,辅存+输入输出设备=I/O设备,主机+I/O设备=硬件
CPU和主存之间有一条总线相连,总线中有地址、控制和数据3组信号线
MAR中的地址信息会直接传送到地址线上,用于指向读写操作的主存存储单元
控制线有读写信号线,根据读操作还是写操作控制将MDR中的数据直接送到数据线还是将数据线上的数据接收到MDR中
计算机软件
程序以及开发、使用和维护程序所需要的所有文档
功能分类
系统软件
用来管理整个计算机系统
保证计算机系统高效、正确运行的基础软件
主要有操作系统,数据库管理系统(DBMS)、语言处理程序、分布式软件系统,网络软件系统、标准库程序,服务型程序等
应用软件
按任务需要编制成各种程序
三个级别的语言
机器语言
机器语言是计算机唯一可以直接识别和执行的语言
汇编语言
高级语言
高级语言,需要经过编译程序编译成汇编语言,然后经过汇编语言得到机器语言程序,或直接由高级语言翻译成机器语言
翻译程序
汇编程序
将汇编语言程序翻译成机器语言程序
解释程序
将源代码中的语句按执行顺序逐条翻译成机器指令并立即执行
翻译一句执行一句,每次执行都要翻译
编译程序
将高级语言翻译成汇编语言或机器语言程序
一次性全部翻译,只需翻译一次
软件和邮件的逻辑功能等价性
功能上等价,硬件实现的性能优于软件实现
软件与硬件关系
硬件与软件相互依存
软件与硬件无严格界线
软件与硬件协同发展
计算机系统的层次结构
硬件
第一级微程序机器层
由硬件直接执行微指令
第二级传统机器语言层
用微程序解释机器指令
软件
第三级是操作系统层
用机器语言解释操作系统
第4级是汇编语言层
用编译程序翻译成机器语言程序
第五级高级语言层,面向用户的
用编译程序翻译成汇编语言程序
下层是上层的基础,上层是下层的扩展
计算机系统的工作原理
存储程序工作方式
执行过程:从主存取指令,对指令进行译码,计算下条指令地址、取操作数并执行、将结果送回存储器
程序执行前,先将程序第一条的地址存放在PC中,取指令时,将PC的内容作为地址访问主存
从源程序到可执行文件
预处理阶段
编译阶段
汇编阶段
链接阶段
指令执行过程的描述
取指令
分析指令
执行指令
习题
相联存储器按内容选择地址
寄存器在CPU内部最快,Cache高速,内存教Cache慢
计算机的性能指标
主要性能指标
字长
数据通路宽带
数据总线一次所能并行传送信息的位数
主存容量
字数×字长,如64K×32位
运算速度
吞吐量
系统单位时间内处理请求的数量
响应时间
从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间
主频
机器内部主时钟的频率,是衡量机器速度的重要参数
CPU时钟周期
通常为节拍脉或T周期,即主频的倒数
CPI
执行一条指令所需的时钟周期数
CPU执行时间
CPU执行时间=CPU时钟周期数/主频=(指令条数×CPI)/主频
执行时间取决于主频,每条指令执行所需的时钟周期数,指令条数
MIPS
每秒执行多少百万条指令
衡量标量机的性能
MFLOPS(每秒执行多少百万条浮点运算),GFLOPS(十亿),TFLOPS(万亿),PELOPS(10^15),EFLOPS(10^18)和ZFLOPS(10^21)
衡量向量机的性能
表示容量,文件大小,KMGT通常用2的幂次表示,描述速率、频率,通常用10的幂次表示
基准程序
专门用来进行性能评估的一组程序,能够很好地反映机器在运行实际负载时的性能
专业术语
系列机
具有基本相同的体系结构
兼容
软件或硬件的通用性
软件可移植性
某个系列计算机的软件直接或进行较少修改就能运行在另一个系列计算机的可能性
固件
程序固化在ROM中的部件称为固件
数据的表示与运算
数制和编码
进位计数制及其相互转换
二进制编码
使用两种稳定状态的物理器件就可以表示二进制数的每一位,制作成本较低
二进制位1和0正好与逻辑值“真”和“假”对应,为逻辑判断提供便利条件
通过逻辑门电路能方便的实现算术运算
进位计数器
有二进制,八进制,十进制,十六进制,每个数位所用到不同数码的个数称为基数
不同进制位之间的相互转换
二进制转化为八进制和十六进制
任意进制转化为10进制
十进制转化为任意进制
整数部分除基取余,最先取得的余数为数的最低位,商0结束
小数部分:乘基取整,先整为高,后整为低
真值和机器数
带符号的数称为真值,真值是机器数表示的实际值
把符号数字化的数称为机器数
定点数的编码表示
机器数的定点表示
定点小数
纯小数,小数点在符号位之后,有效数值部分最高位之前
定点整数
纯整数,约定小数点位置在有效数值部分最低位之后
原码
机器数的最高位表示数的符号,其余位表示数的绝对值
纯小数表示范围-(1-2^(-n))<=x<=1-2^(-n)
纯整数表示范围:-(2^n-1)<=x<=2^n-1
0的原码有正零和负零两种形式
补码
正数的补码等于原码,负数的补码等于反码末尾+1
纯小数表示范围-1<=x<=1-2^(-n)
纯整数表示范围:-2^n<=x<=2^n-1
零表示唯一
变形补码
00表示正,11表示负,用于完成算数运算的ALU部件中
补码与真值之间的转换
正数不变,负数符号位取1,各位取反,末位加一
反码表示法
符号位为0,反码与原码相同,符号位为1,数值位全部取反
0不唯一
移码表示法
补码的基础上符号位取反
真值X加上一个偏置值
零表示唯一
全0表示-2^n,全1表示2^n-1
移码保持了数据原有的大小顺序,移码大真值就大,移码小真值就小
整数的表示
无符号整数的表示
一个编码二进制位全是数值位没有符号位时,该编码就是无符号整数,符号默认为正
带符号整数的表示
将符号数值化,并将符号位放在有效数字前面
计算机中的带符号整数都用补码表示
运算方法和运算电路
基本运算部件
算术逻辑单元(ALU),ALU核心是加法器,移位器,状态寄存器和通用寄存器
运算器基本功能包括加减乘除算术运算,与或非异或等逻辑运算,以及移位,求补等操作
一位全法器
和表达式 Si=Ai⊕Bi⊕C(i-1)
加数Ai,加数Bi,低位传来的进位C(i-1)三个输入
串行进位加法器
n个全加器相连得到n位加法器,称为串行n位加法器
进位信号逐级形成
最长运算时间主要是由进位信号的传递时间决定的,位数越多延迟时间就越长,使用进位产生和提高传递速度是关键
并行进位加法器
采用组内和组间都并行的进位方式,通常采用两级或多级先行进位加法器
带标志加法器
采用先行进位的根本目的就是让进位信号传递的时延更小
溢出标志的逻辑表达式OF=Cn⊕C(n-1)(最高位进位⊕次高位进位),表示带符号整数的加减运算发生溢出
符号标志就是和的标志,SF=F(n-1),SF表示带符号整数加减结果的符号位
零标志ZF=1当且仅当F=0;
进位/借位标志CF=Cout⊕Cin,CF表示无符号数加减运算时的进/借位
算数逻辑单元(ALU)
一种功能较强的组合逻辑电路
定点数的移位运算
算术移位
算术移位的对象是有符号数,在移位过程中符号位保持不变
左移不溢出相当于乘以2,舍弃位≠0,产生严重误差;右移一位,不考虑一位而舍去的末尾尾数,相当于除以2,舍弃位≠0,丢失精度
子主题
逻辑移位
操作数视为无符号数,左移高位丢弃,低位添0,右移,低位移丢,高位补0
循环移位
不带进位标志位
用移出的位补上空缺
带进位标志位
原进位位补上空缺,移出的位放到进位位
定点数加减运算
补码的加减法运算
补码可将剪发转化为加法操作
按二进制运算,加法,补码直接相加,减法,被减数与减数的机器负数相加
符号位与数值位一起参与运算
最终结果高位丢弃,结果亦是补码
补码加减运算电路
Sub为1,做减法,Sub为0,做加法
零标志ZF=1表示结果为0,不管无符号数和有符号数都有意义
溢出标志OF=1表示带符号整数运算发生溢出,无符号没有意义
符号标志SF表示结果的符号,即F最高位,无符号没有意义
借/进位标记CF表示无符号整数运算时的进位/借位,判断是否发生溢出。CF=Sub⊕Cout(进位输出)
溢出判别方法
正数相加符号位为1,一个负数减去1个正数符号位为0
采用一位符号位
参加的两个数符号相同,结果与原符号数不同,则表示溢出
采用双符号位
模4补码
00表示正数,无溢出
01表示正数,溢出
10表示负溢出
11表示负数,无溢出
逻辑判断表达式V=s1⊕s2
采用一位符号位根据数据位的进位情况判断是否溢出
符号位进位与最高数位进位相同,说明没有溢出
原码加减法运算
定点数乘除运算
定点数乘法运算
原码一位乘法
符号位与数值位分开求
无符号数乘法运算电路
补码一位乘法
符号位参与运算
定点数的除法运算
符号扩展
原码除法运算
又称不恢复余数法,原码加减交替除法
符号与数值分开
补码除法运算
数值位于符号位一起运算,商符自然形成
整数类型及类型转换
有符号数和无符号数的转换
位置不便,仅改变了解释这些位的方式,计算机有符号数采用补码表示
不同字长整数之间的转换
大向小:高位截断,低位赋值
小向大:高位扩展,无符号数,零扩展,有符号数,符号扩展
数据的存储和排列
大端方式
便于人类阅读
小端方式
便于机器阅读
数据按边界对齐方式存储
边界对齐方式
char 1字节,short 2字节,int 4字节
访问一个字/半个字只需一次访存
边界不对齐方式
访问一个字/半个字可能要2次访存
浮点数的表示与运算
浮点数的表示格式
N=(-1)^S×M×R^E
S取值1,0,表示符号,M称为尾数,E称为阶码或指数,用移码表示,R是基数
浮点数表示范围
子主题
浮点数的规格化
左规:尾数的最高数位不是有效位
右规:尾数的有效位在小数点前面
原码
负数表示1.1×××,最小值1.111...1,最大值1.10000...0,表示范围-1/2>=M>=-(1-2^(-n))
正数表示0.1×××,最大值0.111...1,最小值0.10000...0,表示范围1/2<=M<=1-2^(-n)
原码规格化数尾数最高数值位必须是1
补码
补码规格化数尾数最高数值位必须和尾数符号位相反
正数表示0.1×××,最大值0.111...1,最小值0.10000...0,表示范围1/2<=M<=1-2^(-n)
负数表示1.0×××,最大值1.0111...1,最小值1.0000...0,表示范围-1<=M<=-1/2-2^(-n)
IEEE 754标准
32位:一位符号+8位阶码+23位尾数
阶码移码表示,偏置值127
23位尾数原码表示
64位:1位符号+11位阶码+52位尾数
阶码移码表示,偏置值1023
数值位最高位为1,为多表示一位,将1隐藏,称为隐藏位
全0阶码全0尾数:+0/-0
全1阶码全0尾数:+∞/-∞
表示范围
定点和浮点表示的区别
浮点表示范围大
定点数精度高
不仅要做尾数运算,还要做阶码运算,然后规格化
定点运算,抄书数的表示范围发生溢出,浮点运算,超出阶码表示范围发生溢出
浮点数的加减运算
对阶
阶码小的右移一位,阶+1,知道阶码相等
尾数求和
规格化
左规
右规
最高位1移到小数点前作为隐藏位,最后一位移出考虑舍入
舍入
溢出判断
右规和尾数舍入,发生上溢
左规,发生下溢
浮点号类型
范围,精度从小到大:char->int->long->double,float->double
int 转换成float时,可能无法精确转换成24位浮点数的尾数,需舍入,影响精度
int,float转换成double,double有效位更多,能保留精度
存储系统
存储器概述
存储器分类
按在计算机中的作用分类
辅助存储器
可直接被CPU访问
高速缓冲存储器(Cache)
主存储器
按存储介质
磁表面存储器
磁盘,磁带
磁芯存储器
半导体存储器
易失
主存,Cache
光存储器
光盘,激光
按存取方式分类
随机存储器(RAM)
随机存取
只读存储器(ROM)
随机存取
串行访问存储器
按物理地址先后顺序寻址,包括顺序存取存储器(磁带)与直接存取存储器(磁盘,光盘)
按信息的可保存性分类
断电后,信息即消失的存储器称为易失性存储器,如RAM
断电后,信息仍然保持的存储器,称为非易失性存储器,如ROM,磁表面存储器,光存储器
信息读出后,原存储信息被破坏,称为破坏性读出
读出时,原存储器不被破坏,称为非破坏性读出
存储器性能指标
存储容量
存储字数×字长
单位成本
每位价格=总成本/容量
存储速度
数据传输率=数据的宽度/存储周期
存取时间
启动到完成该操作
存取周期
又称读写周期或访问周期
一次完整的读写操作所需的全部时间,即两次独立访问存储器操作之间所需的最小时间间隔
主存带宽
又称数据传输率
存取周期=存取时间+恢复时间
多级层次的存储系统
CPU,寄存器,Cache,主存,磁盘,磁带和光盘,价位越来越低,速度越来越慢,容量越来越大
Cache-主存,解决CPU和主存速度不匹配的问题
硬件自动完成
主存-辅存,解决系统容量的问题
硬件+操作系统
主存储器
SRAM芯片和DRAM芯片
都是易失性存储器
SRAM的工作原理
静态随机存储器(SRAM)的存储元是双稳态触发器,信息读出后,仍保持原状态不需要再生
集成度低,高耗较大,价格昂贵,一般用于高速缓冲存储器
DRAM的工作原理
动态随机存储器(DRAM)的存储元是栅极电容上的电荷
容易集成,功耗较低,容量大价位低
存取速度比SRAM慢,用于大容量主存系统
每隔一段时间需要刷新,通常取2ms
刷新方式
集中刷新
一个刷新周期内利用固定时间,依次对所有行逐一再生,在此期间停止对存储器的读写操作
优点:读写操作不受刷新影响,缺点:刷新期间造成死区,不能访问存储器
分散刷新
对每行的刷新分散到各个工作周期
工作周期分为两部分,前半部分正常读写,后半部分用于刷新
优点没有死区,缺点加成系统的存取周期,降低了整机的速度
异步刷新
刷新周期除以行数,得到时间间隔t,每隔时间t产生一次刷新请求
避免长时间等待,减少了刷新次数,提供整机工作效率
以行为单位,每次刷新一行存储单位
刷新是所有芯片某行同时被刷新
SRAM和DRAM的比较
只读存储器
只读存储器(ROM)特点
ROM和RAM都支持随机存取的存储器,其中SRAM和DRAM都是易失性半导体存储器
结构简单,位密度比可读写存储器高
具有非易失性,所有可靠性高
ROM的类型
掩模式只读存储器(MROM)
内容生产时直接写入,不可修改
可靠性高,集成度高,价格便宜,灵活性差
一次可编程只读存储器(PROM)
实现一次性编程的只读存储器
用户利用专门的设备写入自己的程序,一旦写入不可改变
可擦除可编程只读存储器(EPROM)
内容多次改写,编程次数有限,且写入时间长
Flash存储器(闪速存储器)
多次快速擦除重写,随机存取
固态硬盘(SSD)
基于闪存的固态硬盘,由控制单元和存储单元组成,保留了Flash长期保存信息、快速擦除与重写的特性
读写速度快,低功耗,价格较高
主存储器的基本构成
地址线,数据线,控制线
地址引脚复用技术,行地址和列地址通过相同的引脚先后两次输入,这样地址引脚数可减少一半
多模块存储器
单体多字存储器
存储单元m个字,总线宽度也必须m个字,一次并行多出m个字,地址必须顺序排列并处于同一存储单元
指令和数据在内存内必须是连续存放,每次只能同时取m个字,不能单独取其中某个字
多提并行存储器
高位交叉编制(顺序方式)
模块内地址连续,存取方式仍是串行存取,存储器仍是顺序存储器
低位交叉编制(交叉方式)
不改变存取周期的情况下,增加存储器带宽
采用流水线方式并行存取
存取一个字的存取周期为T,总线传送周期为r,存储器价差模块数应≥m=T/r
连续存取m个字所需时间为t=T+(m-1)r
主存储器与CPU的连接
连接原理
主存储器提供数据总线,地址总线,控制总线与CPU连接
数据总线的位数与工作频率的乘积正比于数据传输率
地址总线位数决定了可寻址的最大内存空间
控制总线(读写)指出总线周期的类型和本次输入输出操作完成的时刻
主存容量的扩展
位扩展法
使数据位数与CPU数据线数相等
字扩展法
增加存储器中字的数量
4个16K×8位=64K×8位
字位同时扩展法
既增加存储字的数量,有增加字长
存储芯片的地址分配和片选
线选法
信息为0,就选中对应的存储芯片,只能一位有效,不允许多位有效
0# 1110 1# 1101 2#1011 3#0111
不需要地址译码器,线路简单
地址空间不连续,不能充分利用系统的存储器空间,造成地址资源浪费
移码片选法
高位地址线通过地址译码器产生片选信号
000 表示第一片,001表示第二片,等等
存储器与CPU的连接
合理选择存储芯片
地址线的连接
数据线的连接
读写命令线的连接
片选线的连接
外部存储器
磁盘存储器
容量大,价格低;记录介质可重复使用;记录信息可长期保存而不丢失,设置可脱机存档;非破坏性读出,读出时不需要再生
存取速度慢,机械结构复杂,对工作环境要求较高
磁盘存储器
组成
磁盘驱动器
核心部件是磁头组件和盘片组件
磁盘控制器
硬盘存储器和主机的接口
存储区域
扇区(也称块)是磁盘读写的最小单位
硬盘含有若干面,每个记录面划分为若干磁道,磁道划分为若干扇区
磁头数记录面数
柱面数记录硬盘每面盘块上有多少条磁道
扇区数:表示每条磁道上多少个扇区
磁记录原理
性能指标
记录密度
使用磁道记录的信息量一定是相等的
到密度是要磁道半径方向单位长度上的磁道数,位密度是磁道单位长度上能记录的二进制代码位数,面密度是位密度和道密度的乘积
磁盘的容量
非格式化容量和格式化容量
格式化按某种特定的记录格式所能存储的消息总量
格式化后的容量比非格式化容量要小
平均存取时间
寻道时间(定位到磁道),旋转延迟时间(定位到扇区),传输时间(传输数据花费时间)
数据传输率
r转/秒,每条磁道N字节,数据传输率D=rN
磁盘地址
驱动器号+柱面(磁道)号+盘面号+扇区号
硬盘的工作过程
寻址,读盘,写盘
磁盘阵列
将多个独立的物理磁盘组成一个独立的逻辑盘
RAID0:无冗余和无校验的磁盘阵列
多个连续数据库交替存放在不同物理磁盘的扇区中,扩大存储容量,提供磁盘数据存取速度,没有容错能力
RAID1:镜像磁盘阵列
两个磁盘同时读写,互为备份
RAID2:采用纠错的海明码的磁盘阵列
RAID3:位交叉奇偶校验的磁盘阵列
RAID4:块交叉奇偶校验的磁盘阵列
RAID5:无独立校验的奇偶校验磁盘阵列
固态硬盘SSD
原理
基于闪存技术,属于电可擦除ROM,即EEPROM
组成
闪存翻译层
负责翻译逻辑块号,找到对应页
存储介质
多个闪存芯片——梦芯片包含多个块——每个块包含多个页
读写性能特征
以页为单位——相当于磁盘的“扇区”
以块为单位擦除,擦干净的块,其中的每页都可以写一次,读无限次
支持随机访问,系统给定一个逻辑地址,闪存翻译层可通过电路迅速定位到对应物理电路
读快,写慢。要写的页如果有数据,不能写入,将块内其他页复制到其他新的块中,再写入新的页
与机械硬盘相比
SSD读写速度快,随机访问性能高,用电路控制访问位置,机械硬盘通过移动磁臂旋转磁盘控制访问位置,有寻道时间和旋转延迟
安静无噪音,耐摔抗震,能耗低,造价更贵
一个块擦除次数过多(重复写一个块)可能会坏掉,而机械硬盘扇区不会因为写次数更多坏掉
磨损均衡技术
思想:将擦除平均分布在各个块上,以提升使用寿命
动态磨损均衡
写入数据时,优先选择累计擦除次数少的新闪存块
静态磨损均衡
SSD检测并自动进行数据分配、迁移,让老旧的闪存块承担以读为主的储存任务,让较新的闪存块承担更多的写任务
高速缓冲存储器
程序访问的局部性原理
时间局部性和空间局部性
将程序中正在使用的部分数据存放在高速的,容量较小的Cache中
Cache的基本工作原理
主存地址可拆为(主存块号,块内地址)的形式
主存与Cache之间以块为单位进行交换
每次被访问的主存块,一定会被立即调入Cache
全部由硬件实现
H=Nc/(Nc+Nm) Nc总命中次数,Nm访问主存的总次数
Ta=Htc+(1-H)tm ,H命中率,tm未命中访问时间,tc命中访问Cache时间,Ta平均访问时间
Cache和主存的映射方式
直接映射
主存中的每个块只能装入Cache中的唯一位置
任意一个地址,只需对比一个标记
快冲突的概率高,空间利用率低,命中率低
Cache行号=内存块号 mod Cache行数
直接地址映射结构:标记+Cache行号+块内地址
分支主题
全相联映射
主存块可以存放在Cache任意位置
比较灵活,冲突概率低,空间利用率高,命中率也高;标记的比较速度较慢
子主题
组相联映射
Cache分成若干组,每个主存块可以装入固定组的任意一行
另外两种方式的折中,效果最好
每组r个Cache行,称为r路组相联
Cache组号=内存块号 mod Cache组数
子主题
Cache中主存块的替换算法
页面置换算法
最佳置换算法(OPT)
最迟时间不会使用的页面
需要提前知道进程序列,实际无法实现
先进先出(FIFO)页面置换算法
分配物理块数增大而也故障不减反增的异常现象,称为Belady异常,只要FIFO会出现该异常
最近最久未使用(LRU)
性能较好,需要寄存器和栈的硬件支持需要对所有页进行排序,耗费高
时钟置换算法
简单的CLOCK置换算法
改进型CLOCK置换算法
分支主题
最不经常使用算法
抖动和工作集
抖动:刚刚被换出的页面又马上被换入主存,刚刚换入又马上换出
根本原因:进程太多,分配物理块太少
主要原因:置换算法不合理
工作集
时间间隔内,要访问的页面集合。可以用最近访问过页面来确定
分配的物理块数(即驻留集大小)大于工作集大小
Cache写策略
写命中
全写法
Cache命中时,数据同时写入Cache和主存,块替换时不必写回主存
随时保持主存数据的正确性,增加了访存次数,降低了Cache的效率
写缓冲
减少全写法直接写入主存的时间损耗
FIFO队列,解决速度不匹配的问题,但若出现频繁写时,会使写缓冲饱和缓冲
回写法
设置一个修改位(脏位),修改位为1,表示修改过,写回内存,0,未修改,直接丢弃
写没命中
写分配法
加载主存中的块到Cache中,然后更新这个Cache块中
常与回写法合用
非写分配法
只写入主存,不进行调块
常与全写法合用
虚拟存储器
参考操作系统
指令系统
指令格式
指令是指示计算机执行某种操作的命令,计算机的所有指令的集合构成该机的指令系统,也称指令集,位于硬件和软件的交界面
指令基本格式
一个指令就是机器语言的一个语句
操作码字段+地址码字段
指令字长取决于操作码的长度、操作数地址码的长度和操作数地址的个数。指令长度与机器字长没有固定的关系
零地址指令
零地址:OP
只给出操作码OP,没有显示地址
不需要操作数的指令,如空操作指令、停机指令,关中断指令
用在堆栈计算机中
一地址指令
OP+A1
只有目的操作数的单操作数指令,按A1地址读取操作数
OP(A1)->A1
加1,减1,取反等
另一个操作数由ACC(累加器)提供,运算结构也存放在ACC中
(ACC)OP(A1)->ACC
二地址指令
OP+A1+A2
(A1)OP(A2)->A1
访存4次,取指->读A1->读A2->写A1
三地址指令
OP+A1+A2+A3(结果)
(A1)OP(A2)->A3
访存4次,取指->读A1->读A2->写A3
四地址指令
OP+A1+A2+A3(结果)+A4(下址)
(A1)OP(A2)->A3,A4=下一条将要执行的指令的地址
访存4次,取指->读A1->读A2->写A3
定长操作码指令格式
扩展操作码指令格式
不允许断码是长码的前缀
各指令的操作码一定不能重复
对使用频率较高的指令分配较短的操作码,对使用频率较低的分配较长的操作码,减少译码和分析时间
指令的操作类型
数据传送
传送(MOV),内存单元读取到CPU寄存器(LOAD),从CPU写数据到内存单元(STORE)等
算数与逻辑运算
加(ADD),减(SUB),比较(CMP),乘(MUL),除(DIV),加一(INC),减1(DEC),或(OR),取反(NOT),异或(XOR)
移位操作
算法移位,逻辑移位,循环移位
转移操作
无条件转移(JMP),条件转移(BRANCH),调用(CALL),返回(RET),陷阱(TRAP)
输入输出操作
指令的寻址方式
指令寻址和数据寻址
寻找下一条将要执行的指令地址称为指令寻址
指令寻址
顺序寻址
通过程序计数器PC加1(一个指令字长),实际加的值会因指令长度,编址方式而不同
跳跃寻址
转移类指令实现
绝对地址和相对地址
指令修改PC值
数据寻址
指令中表示一个操作数的地址
操作码+寻址特征+形式地址A
常见数据寻址方式
隐含寻址
不明显给出操作数地址,而在指令中隐含地址
ACC累加器
有利于缩短指令字长
需要增加存储操作数或隐含地址的硬件
立即数寻址
地址字段不是操作数地址,而是操作数本身,又称立即数
不访问主存,执行时间最短
A的位数限制了立即数范围
直接寻址
EA=A
形式地址就是操作数的真实地址
仅访问一次主存,不需要专门计算操作数的地址
A位数决定了该指令操作数的寻址范围,操作数的地址不易修改
间接寻址
指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元地址
EA=(A)
可以是一次间接寻址,也可以是多次
扩大寻址范围,便于编制程序
执行阶段要多次访问
寄存器寻址
寄存器寻址是指在指令字中直接给出操作数所在的寄存器编号,即EA=Ri,其操作数在Ri所指的寄存器内
执行期间不访问主存,只访问寄存器,因寄存器较少,地址码较短,执行速度快
寄存器价格昂贵,寄存器个数有限
寄存器间接寻址
寄存器Ri给出的不是操作数,而是操作数所在主存单元的地址
EA=(Ri)
与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存(因为操作数在主存中)
相对寻址
以程序计数器PC所指的地址位起点
EA=(PC)+A,A是下一条指令地址的偏移量,可正可负,补码表示
操作数的地址不是固定的,他随PC值的变化而变化,且指令地址之间总是相差一个固定值,因此便于程序浮动。相对寻址广泛应用于转移指令
基址寻址
基址寄存器(BR)加上形式地址(A)
EA=(BR)+A
面向操作系统的,内容由操作系统或管理程序确定
以程序的起始存放地址作为“起点”
执行过程A可变,BR内容不可变
可扩大寻址范围,用户不必考虑之间的程序存于主存的哪个空间区域,有利于多道程序设计,便于程序浮动,偏移量位数较短
变址寻址
程序员自己决定从哪里作为起点
EA=(IX)+A
变址寄存器面向用户的,内容可由用户改变,形式地址A不变(作为基地址)
可扩大寻址范围,任意形成数组中任一数据的地址,特别适合编制循环程序
堆栈寻址
地址由特定的寄存器给出,寄存器称为堆栈指针(SP)
分为硬堆栈和软堆栈
寄存器堆栈又称硬堆栈,成本高,不适合做大容量的堆栈
主存划出一段区域做堆栈最合算最常用,称为软堆栈
寻址方式,有效地址,及访存次数
程序的机器级代码表示
常见汇编指令介绍
相关寄存器
E开头,表示32位寄存器
汇编指令格式
AT&T格式
只能用小写字母
第一个为源操作数,第二个为目的操作数
寄存器需要加前缀%,立即数加前缀“$”
内存操作数“disp(base,index,scale)”,分别表示偏移量,基址寄存器,变址寄存器和比例因子,如8(%edx,%eax,2)表示M[R[edx]+R[eax]*2+8]
操作码后面紧跟一个字符,表明操作数大小,b表示byte(字节),w表示word(字),l表示long(双字)
Intel格式
大小写不敏感
第一个为目的操作数,第二个为源操作数
寄存器和立即数不加前缀
操作数为“[eds+eax*2+8]”
操作数大小后面显示注明 byte ptr,word ptr,dword ptr
常用指令
数据传送指令
mov指令
复制
push指令
压入内存的栈
pop指令
出栈工作
算术和逻辑运算指令
add/sub指令
加/减
inc/dec指令
自加1,自减1
imul指令
带符号整数乘法指令
idiv指令
带符号整数除法指令
and/or/xor指令
逻辑与,逻辑或,逻辑异或
not指令
位翻转指令
neg指令
取负指令
shl、shr指令
逻辑左移/逻辑右移
控制流指令
jmp指令
转移指令
jcondition指令
条件转移指令
cmp/test指令
cmp比较,test逐位与
call/ret指令
调用和返回
过程调用的机器级表示
P(调用者)将入口参数放在Q(被调用者)能访问的地方
P将返回地址存放在特定的地方,然后将控制转移到Q
Q保存P的现场(通用寄存器的内容),并为自己的分静态局部变量分配空间
执行过程Q
Q恢复P的现场,将返回结果放到P能访问的地方,并释放局部变量所占空间
Q取出返回地址,将控制转移到P
选择语句的机器级表示
条件码
CF进借位标志
ZF零标志
SF符号标志
OF溢出标志
if语句
switch语句
循环语句的机器级表示
do-while
while
for
CISC和RISC的基本概念
复杂指令系统计算机(CISC)
一条指令完成一个复杂的基本功能
只有20%比较简单的指令反复使用,约占程序80%,80%指令很少使用
精简指令系统计算机(RISC)
一个指令完成一个基本动作,多条指令组合完成一个复杂的基本功能
选取使用频率最高的一些简单指令
不易实现指令兼容
子主题
0 条评论
下一页