计算机组成原理

CPU

指令执行过程

大体分三个:取指——分析——执行

PC:程序计数器;        IR:指令寄存器

如:y=3x2+2

指令0:

取指:最初PC中是0,即指向第0条指令,将PC传入MAR,同时CU发出控制信号(读)到控制总线,主存收到MAR地址和控制总线信号,读0地址数据传给MDR;MDR拿到数据传给IR(IR拿到的指令就是传给MDR的数据);取指阶段完成

分析:IR将指令操作码传给CU,CU判断操作码是取数,CU将读信号到控制总线

执行:IR将指令地址码传到MAR,主存收到MAR地址和控制总线信号,取对应数据传给MDR,MDR拿到数据传给ACC(累加器),同时PC+1

指令1:

取指:PC中是1,即指向第1条指令,将PC传入MAR,同时CU发出控制信号(读)到控制总线,主存收到MAR地址和控制总线信号,读1地址数据传给MDR;MDR拿到数据传给IR(IR拿到的指令就是传给MDR的数据);取指阶段完成

分析:IR将指令操作码传给CU,CU判断操作码是乘法,CU将操作信号传到控制总线

执行:IR将指令地址码传到MAR,配合控制总线,是乘法指令,故主存收到MAR地址和控制总线信号取对应数据给MDR,MDR拿到数据传给MQ(乘商寄存器),指令0存到ACC的值转到X(通用的操作数寄存器),之后X和MQ的值由ALU实现乘法运算,结果返回ACC,同时PC+1

指令2:

取指:PC中是2,即指向第2条指令,将PC传入MAR,同时CU发出控制信号(读)到控制总线,主存收到MAR地址和控制总线信号,读2地址数据传给MDR;MDR拿到数据传给IR(IR拿到的指令就是传给MDR的数据);取指阶段完成

分析:IR将指令操作码传给CU,CU判断操作码是加法,CU将操作信号传到控制总线

执行:IR将指令地址码传到MAR,配合控制总线加法指令,故主存收到MAR地址和控制总线信号取对应数据给MDR,MDR传到X(通用的操作数寄存器),指令1存到ACC的值和X的值由ALU实现加法运算,结果返回ACC,同时PC+1

指令3:

取指:PC中是3,即指向第3条指令,将PC传入MAR,同时CU发出控制信号(读)到控制总线,主存收到MAR地址和控制总线信号,读3地址数据传给MDR;MDR拿到数据传给IR(IR拿到的指令就是传给MDR的数据);取指阶段完成

分析:IR将指令操作码传给CU,CU判断操作码是存数,CU将操作信号传到控制总线

执行:IR将指令地址码传到MAR,ACC将指令2存的值传到MDR,配合控制总线存数指令,故主存收到MAR地址、MDR数据和控制总线存数信号,将MDR值存到主存的MAR对应地址,同时PC+1

指令4:

取指:PC中是4,即指向第4条指令,将PC传入MAR,同时CU发出控制信号(读)到控制总线,主存收到MAR地址和控制总线信号,读4地址数据传给MDR;MDR拿到数据传给IR(IR拿到的指令就是传给MDR的数据);取指阶段完成

分析:IR将指令操作码传给CU,CU判断操作码是停机,CU将操作信号传到控制总线

执行:利用中断机制终止进程

中断处理流程

一个中断源对应一个中断处理程序,这种关系索引表,就是中断向量表

中断处理程序的入口地址就是中断向量。

中断隐指令是在中断开始时由硬件完成的一系列操作(关中断、保存断点、引出中断服务程序(中断向量))

内部异常种类
CPI-执行时间-指令执行速度

主频:4 GHZ=每秒执行4G个时钟周期

时钟周期:主频倒数,cpu最小时间单位

CPI=执行一条指令所需要的时钟周期数

执行时间:时钟周期数*时钟周期

MIPS:多少 百万条指令/s;MFLOPS:多少 百万条浮点运算/s;

GFLOPS:多少 十亿条浮点运算/s;TFLOPS:多少 万亿条浮点运算/s; 

数据表示和运算

问题

定点小数 范围,表示方法
字符码 奇偶校验、CRC校验
奇偶校验:偶校验:添加1,使编码中1的个数为偶数;奇校验:添加1使编码中1的个数为奇数
移码
源码加减交替除法

原反补码范围

0的正负原反补码
补码使加减法统一
加减运算溢出、进位…
双符号位判断
规格化
机器零
int转换float数位丢失,转double不会
浮点数 基数
补码加减交替 乘法运算区别除法运算
原码一位乘
补码一位乘
海明码对n位纠错,校验位k位,则2^k>=n+k+1
规格化阶码问题:对小阶对到大阶,不会溢出;左规右规操作
浮点型机器数,注意阶码全0全1情况,如浮点型8020 0000H 
八位字长小数机器数:没有阶码 123题
补码 符号位和数值位可以一起参与运算
溢出判断:进位判断法:最高位有进位,且和次高位进位异或结果为1,即溢出
基数为4的浮点数的尾数,小数点不能有两个连续0,可以有一个
浮点数范围
浮点数除法不需要左规,可能需要右规;
50(-0)-5128-128
0000 01010000 00001000 01010000 0000 1000 00001000 0000 1000 0000首位符号,正0负1;超出加位
0000 01010000 00001111 10100000 0000 1000 00001111 1111 0111 1111正不变首位不变,原码取反
0000 01010000 00001111 10110000 0000 1000 00001111 1111 1000 0000

正不变首位不变,反码加1

运算部件

一位全加,串行进位加,并行(先行)进位加,带标志加

算术逻辑单元ALU(做算术运算和逻辑运算)

大端小端存储(如名)、按边界对齐存储(一行四字节,一字节8位,十六进制表示)

定点数

加减法

溢出判别:

1.对参与操作的两个数及结果,三个符号位用一位符号法(三个符号位做异或)

2.一位符号位+最高数位 

3.双符号位(01正溢,10负溢)

乘法

原码一位乘(不带符号n次加n次位移)

按被乘数,1加一次乘数0加0.每次结果右移一位,移出位补到被乘位前面;符号单独算

补码一位乘(带符号n次加n+1次位移)

位移

算术:舍0等于乘(除)2舍1是误差

逻辑:视为无符号数,左右移都补0,舍去

循环:跟着箭头走

浮点数

最小值最大值
单精度2^(-126)
双精度2^(-1022)

除去E(指数)为全0和全1表示0和无穷大的情况


浮点数十进制转化

浮点数十进制
单精度32位41A4C000H——>20.59375

偏置8位

减127

0100 0001 1010 0100

1100 0000 0000 0000

阶码1000 0011

减去偏置127余4

1.010 0100 1100 0000

0000 0000*2^4

C104 0000H<——

-8.25

1100 0001 0000 0100 0000 0000 0000 0000

阶码=3+127

1000 0010

-1000.01=-1.00001*2^3
双精度

偏置11位

减1023

规格化:规定尾数最高数位必须是一个有效值(1)

左规:0.01001*2^1——>0.10010*2^0

右规:(尾数溢出时)a+b=00.1100*2^2+00.1000*2^2=01.0100*2^2=00.1010*2^3

存储系统

存储元

存储二进制的电子元件,每个存储元存1bit

存储单元

每个存储单元存放一串二进制代码

MDR为32位,即每单元32个存储元

MAR为16位,即存储体有2^16个存储单元

存储字

存储单元中二进制代码的组合

存储字长

存储单元中二进制代码的位数

机器字长计算机能一次处理的二进制代码长度
指令字长

指令的二进制长度

数据字长

数据总线一次能并行传送信息的次数

一字节=8位,即1B=8bit

问题

存储数据基本单位是字节(Byte),最小的存储单位是位(bit)
随机存储器RAM:SRAM(静态,速度快,价格贵),DRAM(动态)
只读存储器ROM:MROM(掩模式只读存储器),PROM(一次可编程可擦除),EPROM(多次可编程可擦除,次数有限),EEPROM(电可擦除)
Flash存储器,固态硬盘SSD
四体并行交叉存储器
cache地址映像
cache地址映像按内容寻址是全相联

引脚线:引脚最低数目 = 片选线(1) + 控制线(2, 读RD写WR)+ 数据线 + 地址线

DRMA地址复用:引脚数 = 地址线减半 + 数据线不变 + 行通选(1) + 列通选(1) + 读写控制线(2)

DRMA:以行为单位刷新

动态随机存储器(DRMA)刷新

死区:行刷新时间不能进行读/写操作,故称为“死时间”或访存“死区”

集中刷新:一个刷新周期内,全部存储单元集中一段时间逐行进行刷新;死区为刷新时间

分散刷新:对每行刷新分散到每个存取周期内;存取后刷新,无死区

异步刷新:在2ms内对128行各刷新一遍,刷新一行只能停止一个存取周期;一个刷新周期一次死区,刷新安排在译码则无死区

多模块存储器

多体并行存储器:多体模块组成,有独立的读写控制电路、MAR和MDR,能并行工作也能交叉

顺序(高位交叉编址):高位地址表示体号【模块号】,低位地址表示体内地址

交叉(低位交叉编址):高位地址表示体内地址,低位地址表示体号

取一个字的存取周期为T,总线传输周期为r,取m个字的时间为T+(m-1)r,顺序方式时间为mT

主存扩容

位扩展: 8片 8K*1位的RAM,组成8K* 8位的存储器;

                8k=13根地址线并联8快RAM;8位由8根数据线分别连接

字扩展:

        线选: 2片 8K*8位的存储器,组成16K * 8位的存储器

                16k=13根地址线每个连两片,2根译码线控制片;8位由8根数据线连接,每个连两片

        译码片:4片 8K*8位的存储器,组成32K * 8位的存储器

                同线选,但是2根译码线区分4片

字位同时扩展:四块8k4位芯片,位拓展为两片8k8位,译码片实现字拓展为16k8位

Cache

地址映射

未说明默认按字节(8位)访存

主存容量为512K*16位,Cache容量为4096*16位,块长为4个16位的字,访存地址为字

全相联映射:主存地址=主存字块地址位数m+字块内地址b

主存地址=(log[512k*16/(4*16)]=17)+(log[4*16/16]=2)=17(主存字块标记)+2(字块内地址)

直接映射:主存地址=主存字块标记t+cache字块地址c+字块内地址b

主存地址=(log[512k*16/16]-log[4096*16/16]=19-12=7)+(log[4096*16/(4*16)]=10)+2

                  =7(主存区号t)+10(cache字块地址c)+2(字块内地址b)

组相联映射:主存地址=主存字块标记(t+r)+组地址(c-r)+字块内地址b

二路组相联主存地址=(log[512k*16/16]-log[4096*16/16]+log[2]=19-12+1=8)

                                        +(log[4096*16/(4*16)]-log[2]=10-1=9)+2

                                    =8(主存字块标记t+r)+9(组地址c-r)+2字块内地址b

替换算法

随机、先进先出(FIFO)、最近最少使用(LRU)、最不常用(LFU)

写入更新策略

写命中(cache中有):直写、回写

写未命中(cache中没有):写分配(调入c回写改)、非写分配(直接内存改)

指令系统

指令格式

操作码+地址码:【操作码(OP)8位】+【地址码(A)共4个,每个6位】

地址码:字长(机器字长)32位的单字长指令

四地址指令(A1)OP(A2)---->A3OP(8位)A1(8位)A2(8位)A3(8位)
二地址指令

(A1)OP(A2)--->A1

OP(8位)A1(12位)A2(12位)

A1和A2相加结果返回到A1

单地址指令

OP(A1)---->A1

OP(8位)A(24位)

自增、自减、取反,求补

零地址指令OP

空操作,停机,关中断

操作码:定长操作码、不定长操作码(扩展操作码)

拓展操作码:将指定的操作码作为标记,出现这个操作码则侵占地址位作为操作码从而扩展操作码

寻址方式

指令寻址:顺序寻址,跳跃寻址

        PC的位数取决于存储器的字数;IR的位数取决于指令字长

数据寻址:地址码 = 寻址特征+形式地址;A:A的值;(A):地址为A的内容

访主存

隐含寻址

指令中就隐含操作数的地址

程序指定

立即寻址

形式地址是实际操作数

A就是操作数

直接寻址

形式地址存的操作数地址

EA=A

间接寻址

地址码是存储操作数地址的地址

EA=(A)

访寄存器

访问主存改为访问寄存器

寄存器寻址

直接寻址同理

EA=Ri 

寄存器间接寻址

间接寻址同理

EA=( Ri)

偏移类

基址寻址

基址寄存器BR的内容+形式地址A有效地址

EA=(BR)+A

BR不变A变

变址寻址

变址值IX的内容+形式地址A有效地址

EA=(IX)+A

IX变A不变

相对寻址

程序计数器PC的内容+形式地址A有效地址

EA=(PC)+A

PC中保存下条指令地址

中央处理器CPU

机器字长(即字长)——操作系统位数(32、64);一般等于数据总线位数;cpu一次处理数据位数

存储字长——存储单元存储二进制位数(字节整数倍);存储字长一般不固定。小于等于机器字长

指令字长——一条指令二进制位数(存储字长整数倍);指令按长度分单字长指令,双子长指令,半字长指令(这里字长指机器字长)

指令执行过程

指令周期

指令周期最多有4种机器周期:取指周期、间址周期、执行周期、中断周期

指令总是根据PC从主存中读出

指令周期、机器周期、时钟周期、存取周期:指令周期 = 取指周期+间址周期+执行周期+中断周期

条指令执行结束前,都要发中断查询信号,有中断请求,则CPU进入中断响应阶段(中断周期)

CPI:一条指令所需要的时钟周期数

数据流向

根据指令要求一次访问的数据序列

取指周期

从主存中取出指令字

间址周期

取有效地址

执行周期

取操作数

无统一的数据流向

中断周期

保存程序断点

控制器

硬布线控制器:硬件电路

微程序控制器:将每条机器指令编写成一个微程序,每个微程序包含若干微指令,每条微指令对应一个或几个微操作命令;分水平型微指令和垂直型微指令

异常&中断

异常(内中断):故障(缺页、除零、地址越界)、自陷(系统调用、断点)、终止(重启)

        指令周期末尾执行,与指令执行同步,由cpu自身检出,无需外部信号

中断(外中断):可屏蔽中断、不可屏蔽中断;cache缺失、I/O中断、时钟中断

        执行完指令后检查中断信号线,与指令执行异步

        

指令流水线

流水线时间:时间= 一条指令所需时间+(指令条数-1)*时间最长的指令的一段【看图分析】

流水线吞吐量:吞吐量=指令条数 / 流水线执行时间

流水线冒险

结构冒险多条指令在同一时刻争用同一资源

暂停一个时钟周期、分离结构cache

数据冒险下一条指令会用到当前指令计算出的结果暂停一个或多个时钟周期、

数据旁路技术、指编译优化、按序流动

控制冒险

对转移指令进行分支预测、加快和提前形成条件码

多处理机

SI、MI(单指令、多指令);SD、MD(单数据、多数据)

单指令流单数据流结构(SISD)、单指令流多数据流结构(SIMD)、

多指令流单数据流结构(MISD)、多指令流多数据流结构(MIMD)【并行计算模式】

总线

计算

时钟周期=1/时钟频率(s);时钟周期即一个时钟的时间长度,时钟频率即2.3GHz

总线带宽(总线传输率)=总线宽*总线工作频率;总线数据线有几根即一次传输多少b

总线工作频率=1/时钟周期

注意半双工全双工

总线事务

请求总线到完成操作序列:请求总线——使用权仲裁——寻址设备——传输数据——释放使用权

突发传送总线事务:一次传输一个地址和一批连续的数据,只需给出一个首地址

        同步定时:统一时序控制

        异步定时:“握手”信号来实现定时控制

输入输出系统

I/O控制器(I/O接口)

接受主机发送的I/O控制信号,实现主机和外部设备之间的信息交换

若干端口+相应逻辑控制器

I/O端口

接口电路中可以被CPU直接访问的寄存器

主要端口:数据端口、状态端口、控制端口

I/O编址:统一编址(和内存编址相同)、独立编址(专门的I/O指令来区分存储单元和I/O设备)

I/O控制方法

输入/输出系统实现主机与I/O设备之间数据传送的控制方式

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值