CPU结构与指令执行过程简介
2016-07-04 21:49
375 查看
CPU(Central Processing Unit)是计算机中进行算术和逻辑计算处理指令的主要部件.
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704195510280-1724130729.png)
寄存器包括
数据寄存器: AX,BX,CX,DX;
指针与变址寄存器:SP, BP, SI,DI
栈寄存器: CS,DS,SS,ES
详情参见寄存器与寻址方式的介绍
运算器主要是指算术逻辑单元(arithmetic and logic unit, ALU).
上图所示的CPU采用单总线结构, ALU通过两个暂存器T,S与总线相连.
控制器的主要组成部分是微命令形成电路, 以及3个控制寄存器和时序逻辑部件.
程序状态字(Program Status Word,PSW): 存放结果状态和标志
程序计数器(Program Counter,PC): 记录下一条指令的内存地址
指令寄存器(Instruction Register,IR): 寄存正在执行的指令
为了与系统总线交互设置单向地址寄存器AR和双向数据寄存器DR.
CPU为了IO等功能还设置了外部中断INT,直接内存访问(Direct Memory Access,DMA)等部件.
现代CPU通常还集成了高速缓存(Cache)和流水线等组件.
一般把CPU对内存的一次访问当作一个机器周期.
CPU执行一条指令的时间为一个指令周期,不同指令的指令周期不一样.
微指令: 在微程序控制的计算机中,微指令是同时发出的控制信号的组合.
一次能定义并执行多个并行操作微命令的微指令,叫做水平型微指令.水平型微指令的一般格式为:
控制字段 判别测试字段 下地址字段
垂直型微指令的结构类似于机器指令的结构.它有操作码,在一条微指令中只有l-2个微操作命令,每条微指令的功能简单.
微操作是CPU的原子操作,以一个寄存器的数据读写操作为标志.
每一个微操作是控制器向相应部件发送控制信号(微命令)而触发的.
一般在微操作的层面上研究指令的执行过程.
一般机器指令执行过程分为取指令(Fetch Instruction), 取数据(Fetch Data), 执行(Execute)等操作
双操作数指令: 0000 xxxx
单操作数指令: 0000 1110 xxxx
转移指令: 0000 1111 xxxx
无操作数指令: 0000 1111 1111 xxxx
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704211236921-1555879477.png)
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704211221608-426011677.png)
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704211412796-1070634863.png)
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704211615686-1895726200.png)
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704211350655-2079957621.png)
INC指令:
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704214046139-1989117805.png)
微程序控制器设计简单,规范化;功能可编程,成本低,错误少但是速度较慢.
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704214258124-1304442640.png)
硬布线控制器用与或逻辑阵列将微指令转换为控制信号,设计复杂,无法编程修改功能但是速度较快.
CPU结构
CPU由通用寄存器组,运算器,控制器和数据通路等部件组成.![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704195510280-1724130729.png)
寄存器包括
数据寄存器: AX,BX,CX,DX;
指针与变址寄存器:SP, BP, SI,DI
栈寄存器: CS,DS,SS,ES
详情参见寄存器与寻址方式的介绍
运算器主要是指算术逻辑单元(arithmetic and logic unit, ALU).
上图所示的CPU采用单总线结构, ALU通过两个暂存器T,S与总线相连.
控制器的主要组成部分是微命令形成电路, 以及3个控制寄存器和时序逻辑部件.
程序状态字(Program Status Word,PSW): 存放结果状态和标志
程序计数器(Program Counter,PC): 记录下一条指令的内存地址
指令寄存器(Instruction Register,IR): 寄存正在执行的指令
为了与系统总线交互设置单向地址寄存器AR和双向数据寄存器DR.
CPU为了IO等功能还设置了外部中断INT,直接内存访问(Direct Memory Access,DMA)等部件.
现代CPU通常还集成了高速缓存(Cache)和流水线等组件.
CPU时钟
时钟周期由时钟部件提供,是CPU中原子计时单位.一般把CPU对内存的一次访问当作一个机器周期.
CPU执行一条指令的时间为一个指令周期,不同指令的指令周期不一样.
指令执行过程
机器指令: 是CPU能直接识别并执行的指令,为二进制编码的形式, 汇编指令是二进制机器指令的助记符.微指令: 在微程序控制的计算机中,微指令是同时发出的控制信号的组合.
一次能定义并执行多个并行操作微命令的微指令,叫做水平型微指令.水平型微指令的一般格式为:
控制字段 判别测试字段 下地址字段
垂直型微指令的结构类似于机器指令的结构.它有操作码,在一条微指令中只有l-2个微操作命令,每条微指令的功能简单.
微操作是CPU的原子操作,以一个寄存器的数据读写操作为标志.
每一个微操作是控制器向相应部件发送控制信号(微命令)而触发的.
一般在微操作的层面上研究指令的执行过程.
一般机器指令执行过程分为取指令(Fetch Instruction), 取数据(Fetch Data), 执行(Execute)等操作
FIC微操作
PC->AR AR->MainMemory Read ;将Memory中的数据传到系统总线上 PC+1 M->DataBus DastaBus->DR DR->IR
FDC微操作
在进行取操作数之前先进行译码操作,首先根据16位指令编码的形式分析指令类型:双操作数指令: 0000 xxxx
单操作数指令: 0000 1110 xxxx
转移指令: 0000 1111 xxxx
无操作数指令: 0000 1111 1111 xxxx
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704211236921-1555879477.png)
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704211221608-426011677.png)
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704211412796-1070634863.png)
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704211615686-1895726200.png)
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704211350655-2079957621.png)
EXEC微操作
转移指令执行过程PC->ALU ADD PC Disp->T T->PC
INC指令:
ALU: S+1->T BX->MainMemory T->DB Write ;结果写入内存
微程序控制器与硬布线控制器
微程序控制器
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704214046139-1989117805.png)
微程序控制器设计简单,规范化;功能可编程,成本低,错误少但是速度较慢.
硬布线控制器
![](https://images2015.cnblogs.com/blog/793413/201607/793413-20160704214258124-1304442640.png)
硬布线控制器用与或逻辑阵列将微指令转换为控制信号,设计复杂,无法编程修改功能但是速度较快.
相关文章推荐
- 著名的卷积神经网络
- iOS--一个简单的提示条代码
- http://www.cnblogs.com/lidabo/archive/2012/08/27/2658903.html
- 类集框架Map
- 平衡二叉树(AVL树)旋转示例
- WebService学习总结 五 使用cxf 开发webService
- Spark实战(2)----hadoop集群框架搭建
- NSOperationQueue队列
- 汇编(三)
- arm系列cpu和嵌入式系统简单归纳
- 生活中的数学 —— 操场几何学
- 3.2 zabbix 增加客户端监控
- android产品研发(十七)-->Hybrid开发
- 安卓中xml解析天气预报
- 理解长短期记忆(LSTM) 神经网络
- python中全局变量
- LIBSVM-3.21在python下的使用
- LeetCode70. Climbing Stairs
- LeetCode(三)——Reverse String
- java程序启动界面