冯·诺依曼体制的主要思想:
1. 采用二进制代码表示数据和指令。
任何复杂的运算和操作都可转换成一系列用二进制代码表示的简单指令,各种数据则可用二进制代码来表示;
2. 采用存储程序工作方式(核心)。
将组成程序的指令和数据存储起来(称为存储程序),让计算机自动地执行有关指令,就可以完成各种复杂的运算操作(称为程序控制)
3. 计算机硬件系统由五大部件构成。
(运算器、存储器、控制器、输入设备和输出设备)
ALU是一种以全加器为核心的具有多种运算功能的组合逻辑电路。
控制器CU:
产生控制命令(微命令), 控制全机操作。
总线:一组连接多个部件分时共享的信息传输线。
地址总线:用于传输地址信息,比如:CPU发向主存、外设等。
数据总线:双向的多根信号线,用于传输数据信息。
控制总线:传输控制信息,包括CPU送出的控制命令和主存(或外设)返回CPU的反馈信号。
1.基本字长
参与一次运算或并行传送的数的位数;
它反映寄存器、ALU和数据总线的位数;
字长越长,运算精度就越高,但硬件成本增高。
2.运算速度
可以用每秒所能执行的指令条数表示;
单位: 条/秒;
目前有三种计算执行速度的方法。
(1)CPU主频(又称时钟频率),通常以MHz(兆赫兹)为单位,相当于每秒时钟周期数
CPU时钟周期:主频的倒数,完成一步操作所需要的时间
外频:系统总线的工作频率,具体是指CPU到芯片组之间的总线速度,是CPU与主板之间同步运行的速度
(2)平均每秒执行指令数IPS(lnstructions Per Second)。
MIPS:Million lnstructions Per Second,表示每秒执行百万条指令
I P S = 主 频 C P I IPS= \frac{主频}{CPI} IPS=CPI主频
(3)平均每条指令的时钟周期数CPI(Clock cyclesPer lnstruction)
C P I = 程 序 所 需 时 钟 周 期 数 程 序 所 含 指 令 数 CPI = \frac{程序所需时钟周期数}{程序所含指令数} CPI=程序所含指令数程序所需时钟周期数
(4) MFLOPS: Million Floating point Operations Per Second表示每秒执行多少百万次浮点运算
3. 数据通路宽度与数据传送率
(1)数据通路宽度
数据总线一次能并行传送的数据位数。
CPU内部的数据通路宽度一般与等于基本字长;
CPU外部的数据通路宽度取决系统总线;
CPU外部和内部的数据通路宽度有相等和不等。
如:Intel8086(16位机) ,Intel8088(准16位机)
(2)数据传送率(或数据总线的带宽):总线单位时间传输的数据量
数据传送率=总线数据通路宽度×总线时钟频率(b/s)
例如:PCI总线宽度32位,总线频率33MHz,
总线带宽=32×33M/8=132Mb/s(或bps)。
4. 主存容量
(1) 字节数: 用字节(即Byte)作单位,记作B。
常用的单位有KB,MB,GB和TB。
(2) 单元数(字数)×位数: 用二进制的位(bit)作单位。如:64K×16。
分析:
1、位(bit)
表示二进制位。位是计算机内部数据储存的最小单位。
2、字节(byte)
习惯上用大写的“B”表示。
字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit)。
3、字
计算机进行数据处理时,一次存取、加工和传送的数据长度称为字(word)。一个字通常由一个或多个(一般是字节的整数位)字节构成。例如286微机的字由2个字节组成,它的字长为16;486微机的字由4个字节组成,它的字长为32位机。
计算机的字长决定了其CPU一次操作处理实际位数的多少,由此可见计算机的字长越大,其性能越优越。
3、假设同一套指令集用不同的方法设计了两种计算机A和B。机器A的时钟周期为1.2ns,机器B的时钟周期为2ns。某个程序在机器A上运行时的CPI为2,在B上的CPI为1。则对于该程序来说,机器A和机器B速度比例为(D )。
A.2 : 1 B.1 : 2 C.6 : 5 D.5 : 6
分析:
机器A的CPI为2,故执行一条指令需要2个时钟周期,即1.2ns×2=2.4ns。
机器B的CPI为1,故执行一条指令需要1个时钟周期,即2ns×1=2ns。
则机器A和机器B执行一条指令需要的时间之比为2.4ns : 2ns=6 : 5。
而速度比例为时间比例的倒数,即为5 : 6。
原码:一个数的真值中的符号“+”用0表示,而“-”用1表示,有效数值部分用二进制数绝对值的二进制数称为原码。
反码:正数的反码与正数的原码相同,而负数的反码为除符号位外,将原码逐位求反。
补码:正数的补码与正数的原码相同,而负数的补为其反码加1。
补码可以比原码和反码多表示一位负数,因为补码不区分+0和-0
移码:移码是在补码的基础上把符号位取反得到的,这样使得移码非常适合于阶码的运算,所以移码常用于表示阶码。(了解即可)
移码便于比较数的大小
注意:
1、字长为 n + 1 n+1 n+1的计算机
原码定点整数的范围: − ( 2 n − 1 ) ~ ( 2 n − 1 ) - (2^n-1) ~(2^n-1) −(2n−1)~(2n−1)
补码定点整数的范围: − 2 n ~ ( 2 n − 1 ) - 2^n ~(2^n-1) −2n~(2n−1)
原码定点小数的范围: − ( 1 − 2 – n ) ~ ( 1 − 2 − n ) - (1-2^{ –n}) ~(1-2^{-n} ) −(1−2–n)~(1−2−n)
补码定点小数的范围: − 1 ~ ( 1 − 2 – n ) -1 ~(1-2^{ –n} ) −1~(1−2–n)
2、定点数的优缺点:
优点:表达简单、直观、硬件成本低
缺点:
表达既有小数又有整数的数据,需要设置比例因子。
表达范围和分辨率固定,超出表达范围会产生溢出
3、正溢:运算结果超出能够表达的最大正数
负溢:运算结果超出能够表达的最小负数
补码:操作码为“加”时,两数直接相加
操作码为“减”时,将减转换为加。 即将减数变补后与被减数相加
其中:
S A , S B S_A,S_B SA,SB是两个数的符号位, S f S_f Sf是结果的符号位
符号位的进位Cf
尾数最高位进位C(或最高有效位的进位)
一、
二、计算流程
1、变化为二进制浮点数
2、对阶:首先把两个数写成规格化形式,小数点实际位置对齐,小阶向大阶对齐。小阶增大,尾数右移
3、尾数加减:做减法时,一定要变+为-,即减数变补
4、结果规格化:如果尾数求和结果溢出,|M| >1,进行右规,阶码增加;如果两异号数相加,|M| <1/2,左规。
规格化:为了提高精度,使有效位数尽可能占满可用的数位
注意:
1、对于- ½
其原码表示为1.1000…0,本身是满足原码规格化数的要求。
其补码表示为1.1000…0,不满足补码规格化数的要求。
规定: 1.1000…0为特殊的规格化数
2、在对阶或规格化的过程中需要移位,移位规则为
符号位不变: 单:符号位不变;双:第一符号位不变
例题见ppt2.3第48张
工作机制:
CPU基本组成:
1、运算部件
2、寄存器组
(1) 通用寄存器 GR ·多个寄存器组成,可存放操作数或地址信息
·使用时对寄存器进行编号,按寄存器号进行访问
·功能通用,可编程
·8bits 寄存器,8 个触发器构成
(2) 暂存器
·用于暂存某些中间过程所产生的信息
·不可被 CPU 直接编程访问
·暂存器的使用对用户是透明的
(3) 指令寄存器 IR(instruction register) ·
保存当前正在执行的指令
·指令寄存器中操作码字段输出作为指令译码器的输入,经译码
转换为具体操作信号
·指令队列(指令栈),允许取若干条指令
(4) 程序计数器 PC
指示指令在内存的存放位置(或地址),又称为指令计数器或指令指针
PC 是具有计数功能的寄存器。
顺序执行: (PC)+ 1 or 2 => PC
跳转执行: 转移地址 => PC
(5)程序状态寄存器 PSW(program status word)
·记录程序的运行状态、指示程序的工作方式
·包括:特征位和编程设定位
·特征位(标志位、条件码):进位标志(C),溢出标志(V),
结果为零标志(Z),负标志(N),奇偶位(P)等。这些标志分别
由 1 位触发器保存(carry、overflow、zero、negative、parity) ·编程设定位:跟踪位
(6)地址寄存器 MAR(Memory Address Register)
作用:保存当前 CPU 所访问的内存单元地址
(7)数据缓冲寄存器 MDR(Memory Data Register)
作用:作为 CPU 与内存、I/O 设备之间信息传送的缓冲区,补偿其在速度上的差异。
(8)堆栈指针寄存器 SP (Stack Pointer)
作用:保存栈顶单元地址
对应的英文:
CPU——Central Processing Unit,中央处理机(器),由运算器和控制器组成。
运算器:用于实现算术运算(如:加减乘除)、逻辑运算(如:与或非。
ALU——Arithmetic Logic Unit,算术逻辑运算单元,运算器中完成算术逻辑运算的逻辑部件;
ACC——Accumulator,累加器,运算器中运算前存放操作数、运算后存放运算结果的寄存器;
MQ——Multiplier-Quotient Register,乘商寄存器,在乘、除运算时,用于存放操作数或运算结果。
控制器:协调并控制计算机各部分执行程序的指令序列,包括取指令,分析指令和执行指令
PC——Program Counter,程序计数器,存放当前欲执行指令的地址
IR——Instruction Register,指令寄存器,存放当前正在执行的指令的寄存器;
CU——Control Unit,控制单元(部件),控制器中产生微操作命令序列的部件,为控制器的核心部件;
程序状态字寄存器 PSW(program status word):记录程序的运行状态、指示程序的工作方式。
PSW包括两部分:特征位和编程设定位
MAR——Memory Address Register,存储器地址寄存器,保存当前 CPU 所访问的内存单元地址
MDR——Memory Data Register,存储器数据缓冲寄存器,主存中用来存放从某单元读出、或写入某存储单元数据的寄存器;
作为 CPU 与内存、I/O 设备之间信息传送的缓冲区,补偿其在速度上的差异。
堆栈指针寄存器 SP (Stack Pointer)
作用:保存栈顶单元地址
指令:让计算机完成某种操作的命令
指令系统:一台计算机所能执行的全部指令
Ai表示地址,可以是寄存器号,也可以是主存单元的地址码;
(Ai)表示存放于该地址的内容;
A4明确表示下条将要执行指令的地址;
A4常隐含给出,四地址指令很少采用.
A1、A2、A3为内存地址
则执行该指令需要访问4次主存。
根据PC的内容,取指令;
根据指令中的A1取操作数;
根据指令中的A2取操作数;
ALU运算结果,然后将结果保存到A3。
其中: A1为目的操作数地址,A2为源操作数地址。
二地址指令执行之后,A1原存的内容被破坏了
单操作数指令
①指令的功能:OP(A) => A
(PC)+n => PC
②双操作数指令
指令的功能:(ACC)OP(A) => ACC
(PC)+n => PC
其中: Acc是累加寄存器( 隐地址 )
①不需要操作数的指令
如:HLT、NOP
②单操作数的指令
指令的功能: OP(ACC) => ACC
③堆栈中的操作数(“先进后出” 存储区)
操作: PUSH 、POP
SP(堆栈指针): 给出栈顶单元地址
形 式 地 址 A → 寻 址 方 式 有 效 地 址 E A 形式地址A \stackrel{寻址方式}{\rightarrow} 有效地址EA 形式地址A→寻址方式有效地址EA
寻址方式:寻址就是按照某种规则形成操作数的有效地址,我们把产生操作数有效地址的方式称为寻址方式。
显地址 :如果指令码中明显地给出地址,则称此地址为显地址。
隐地址 :如果地址以隐含的方式约定,而指令中并不给出该地址码,则称此地址码为隐地址。
寻址方式分为指令寻址和数据寻址。
1、指令寻址:寻找下一条将要执行指令的指令地址。
顺序寻址通过程序计数器PC加1,自动形成下一条指令的地址。
跳跃寻址通过转移指令实现。
2、数据寻址:确定本条指令的操作数地址。数据寻址方式的种类较多,为了区别各种方式,通常在指令种设一个字段,用来指明属于哪种寻址方式。
1、立即数寻址:助记符I,如汇编指令:MOV R1,1213H
2、直接寻址:助记符(A), 如: MOV R1,(1213H)
3、间接寻址:助记符@A,如:MOV R1,((1213H))
间址单元作为地址指针,只要修改指针,同一条指令就可以在不同时间访问不同的存储单元
3、寄存器直接寻址:助记符R,如:MOV R1,R2
Ri是CPU中的若干个可编址寄存器,如:R0, R1, … , R7
优点:
CPU中的寄存器的访问速度比主存快
寄存器数远远少于主存单元数,存放寄存器号的字段位数少,可以有效地缩短指令长度,提高工作速度
4、寄存器间接寻址:助记符( R),如:MOV R1,(R2)
自增型寄存器间址:助记符( R)+, 如:MOV R1,(R2)+ 先取后加
自减型寄存器间址:助记符-( R), 如:MOV R1,-(R2) 先减后取
优点:
CPU中的寄存器的访问速度比主存快
寄存器数远远少于主存单元数,存放寄存器号的字段位数少,可以有效地缩短指令长度,提高工作速度
寄存器本身的位数可以很多,足以提供较长的地址码
在程序的执行过程中 D内容不变,变址寄存器IX可变
5、变址寻址:助记符X( R),如:MOV R1,R2,1000H
①专用寄存器 IX 作为变址寄存器,EA=(IX)+D。
②通用寄存器 R0 作为变址寄存器,EA=(R0)+D,通用寄存器由用户决定。
变址寄存器内容由用户决定;D 为形式地址,不可改变,一般存放于当前指令的下一个存储单元。
6、基址寻址:作用同上,主要用于系统
①专用寄存器 BR 作为基址寄存器,EA=(BR)+D。
③ 通用寄存器 R0 作为变址寄存器,EA=(R0)+D。
基址寄存器内容由操作系统决定,不可改变,形式地址 D 可变。
基址寻址和变址寻址都可理解为有效地址=基准地址+偏移量,基址寻址中基址寄存器中的内容为基准地址,那么 D 就为偏移量;变址寻址中变址寄存器中的内容为偏移量,那么 D就为基准地址;便于理解上面说的可变与不可变
7、基址变址寻址:如:MOV R1,R2,R4,1000H
EA=(R0)+(R1)+D 其中 R0 为基址寄存器不可改变,R1 为变址寄存器,D 为形式地址,R1
与 D 均可改变。
可通过二维数组加深理解:(R0)为数组首地址,(R1)为行偏移量,D 为位偏移量。
8、相对寻址:助记符X(PC)
9、堆栈寻址,PUSH和POP
入栈先移动指针,出栈先移动数据
1、按指令格式分类
单操作数、双操作数、程序转移等
2、按操作数寻址方式分类
RR型、 RX型、 RS型、 SS型
寄存器-寄存器(RR)型指令:从寄存器中取操作数,把操作结果放到另一寄存器中,不需要访问内存存储器,因此速度快;
存储器—存储器(SS)型指令:参与操作的数都放在内存里,从内存某单元中取操作数,操作结果存放至内存另一单元中。因此机器执行这种指令需要多次访问内存。
寄存器-存储器(RS)型指令:执行此类指令,既要访问内存单元,又要访问寄存器。
(3)按指令功能分类
传送指令、I/O指令、算术运算指令、逻辑运算指令、程序控制指令、处理机控制指令等
常见的几种指令:
MOV,ADD,SUB,JSR等
MOV:传送
ADD:加
EOR:异或
JUM/RST 转移/返回
JSR:转子(调用子程序)
解析:操作数与地址可以一起在主存中任意浮动
解析:RISC采用硬步线方式,CISC采用微程序控制器
其中:
暂存器C:从主存读取源操作数地址或源操作数据时,就使用C。
暂存器D:从主存读取目的地址或目的数,以及需要暂存目的地址或运算结果时,就使用D。
可编程:R0~R3、PC、SP、PSW
不可编程:C、D、IR、MAR、MDR
指令流程:确定各工作周期中每拍完成的具体操作
操作时间表:列出每一步操作所需的微命令及产生条件
1.控制器的核心:指令流程+形成微命令序列
2.由数据通路可以将指令的执行过程分为4个基本的阶段
1)取指令周期FT(Fetching Time)
(公操作:所有指令都要经过的阶段)
以寄存器级语句来描述
M->IR(外部数据总线),PC+1->PC(内总线)
两条指令占用一个时钟周期(一个节拍)
2)源操作数周期ST(Source Time)
【R型】由于该操作数在CPU内部;在执行阶段ET,会将该数直接送往ALU。所以不需要取出,故不经历ST。
C作为暂存器,不仅可以存放源操作数还可以存放源操作数的地址
3)目的操作数周期DT(Destination Time)
DT 总体与 ST 相似,但对于 MOV,DT 只到取到目的操作数的地址为止,不取目的操作数。
4)执行周期ET(Execution Time)
如果 S R SR SR,起手为 R i R_i Ri,如果 S R ‾ \overline{SR} SR,起手为C
如果 D R DR DR,末尾为 R j R_j Rj,如果 D R ‾ \overline{DR} DR,末尾为 − > M D R , M D R − > M ->MDR,MDR->M −>MDR,MDR−>M
双操作数:
ADD,SUB,AND,OR,EOR
执行周期和源周期都和MOV一致
注意
OP 要写为对应具体运算符号,如+、-、AND、OR 等,且 AND 和 OR 不
应写为×和+,易混淆。
微命令:
地址使能EMAR、读R、写W、置入SMDR、置入SIR
用组合逻辑电路形成逻辑式
由微命令发生器发出所需的微命令
微命令的产生是有条件的,依据操作码和寻址方式代码经译码器产生的中间逻辑信号,以及运行状态、I/O状态和操作控制信号;
微命令是分时产生的,需要由时序系统提供时序信号。
组合逻辑控制器依靠不同的时间标志,让CPU分步工作;
通常采用工作周期、时钟周期和工作脉冲三级时序。
特点:
化简产生微命令的条件形成逻辑式,用组合逻辑电路实现;
执行指令时,由组合逻辑电路发出微命令,控制有关操作。
优缺点:
产生微命令快
控制器核心结构零乱,不便于检查和调试
不易修改、扩展指令系统功能。
应用场合:高速计算机
微命令由预存储的代码翻译产生
1条机器指令对应多条微指令代码
微命令不是由组合逻辑电路产生的,而是由微指令译码产生的。
若干微命令编制成一条微指令,控制实现一步操作;若干微命令–>一条微指令
若干条微指令组成一段微程序,解释执行一条机器指令;若干微指令–>一段微程序–>一条机器指令
微程序事先存放在控制存储器(CM)中,执行机器指令时再取出。
2、控制系统的逻辑组成
控制存储器CM
微指令寄存器uIR
微地址形成电路
微地址寄存器uAR
微命令译码电路
芯片存储容量与地址、数据线个数有关:
芯片的存储容量= 2 M × N 2^M×N 2M×N=存储单元数×存储单元的位数
M:芯片的地址线根数
N:芯片的数据线根数
字位同时扩展
全译码的三个特点
总线定义:一组能为多个部件分时共享的信息传送线路
特点:分时、共享
总线协议:连接到总线的各部件须遵守的总线标准和规则
二、总线的时序
1)同步控制总线
由统一时序控制总线传送操作。
2)异步控制总线
无固定时钟周期划分,总线周期时间由传送实际需要决定;
以异步应答方式控制总线传送操作。
1、接口功能
寻址
数据缓冲
数据格式变换、电平转换
控制逻辑:传送控制命令与状态信息,实现I/O传送控制方式
2、接口分类
并行接口与串行接口
同步接口与异步接口
中断接口、DMA接口 等等
无条件
在CPU与慢速变化的设备交换数据时,可以认为它们总是处于“就绪”状态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送
适合于状态很少改变的简单设备,如LED数码管、按键或按纽等
这种传送有前提:外设必须随时就绪
程序查询
CPU在执行程序时需要不断查询外部设备的状态,如果设备的数据传送没有准备好,CPU就反复查询;只有当设备准备好(READY),CPU才能用I/O指令传送一个数据。
(1)CPU主动的不断查询外设状态;
(2)数据的输入/输出都必须经过CPU;
(3)CPU 与设备间是串行工作,所以CPU的使用效率低。
程序中断
在程序执行过程中,由于某个随机事件的请求,暂停现程序的执行,转去执行一段处理此随机事件的程序,处理完后又回到原程序继续执行,这一过程叫“程序中断”
程序中断方式的不足之处:效率不高、特别是对大批量的数据传输。
只适用于低速I/O设备与CPU之间的数据传送
DMA
1、直接内存访问(DMA ) 方式 的定义
DMA方式:依靠硬件在主存与I/O设备之间进行直接的数据传送,在传送期间不需要CPU程序干预,** 。
两层含义:
数据直传,即主存与I/O设备之间有直接的数据传送通路
硬件控制实现:DMA控制器
2、特点及应用:
速度快,适用于主存与高速I/O设备间的简单数据**传送
1)当数据传送“准备好”时由设备主动向CPU提出中断请求;
(2)具有随机性
(3)CPU与设备是并行工作的;
(4)一般用于低速设备的数据传送。
1.中断源通过中断机构向CPU发中断请求。
2. 若有多个中断源或需要嵌套中断,首先判断当前中断申请的优先级
3.CPU在各种中断条件满足的条件下给予响应。响应的主要过程为:CPU 通过压栈操作自动保护返回地址和有关状态信息(如PSW中的信息),以便中断处理程序结束后可以返回。然后将PC设定为中断处理程序的入口地址。
4.运行中断处理程序。
5.中断处理程序完成后返回中断前的程序中去(通过中断返回指令IRET)
向量中断方式
为不同的中断源分配一个唯一的编号,称之为中断类型号或中断向量号。
将各中断处理程序的入口地址按中断类型号的顺序存放在一段连续的存储区,称为中断向量表。
表中的每个表项都是由一个段地址(分量)和一个偏移地址(分量)组成,最终用于合成 n位物理地址,即中断向量(中断程序的入口地址)
非向量中断方式
CPU响应中断后 ,产生一个固定的地址,由此地址单元中读取中断查询程序的入口地址,通过软件查询确定中断源,并转入相应的中断服务程序。
7、主机与设备传送数据时,采用( A),主机与设备是串行工作的。
A.程序查询方式; B.中断方式;
C.DMA 方式; D.通道方式
解析:程序查询方式是一种程序直接控制方式,这是主机与外设间进行信息交换的最简单的方式,输入和输出完全是通过CPU执行程序来完成的。
一旦某一外设被选中并启动后,主机将查询这个外设的某些状态位,看其是否准备就绪,若外设未准备就绪,主机将再次查询;若外设已准备就绪,则执行一次I/O操作。