CPU(Central Processing Unit)是计算机中进行算术和逻辑计算处理指令的主要部件.

CPU结构

CPU由通用寄存器组,运算器,控制器和数据通路等部件组成.

寄存器包括

  • 数据寄存器: 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

EXEC微操作

转移指令执行过程

PC->ALU
ADD PC Disp->T
T->PC

INC指令:

ALU: S+1->T
BX->MainMemory
T->DB
Write ;结果写入内存

微程序控制器与硬布线控制器

微程序控制器

微程序控制器设计简单,规范化;功能可编程,成本低,错误少但是速度较慢.

硬布线控制器

硬布线控制器用与或逻辑阵列将微指令转换为控制信号,设计复杂,无法编程修改功能但是速度较快.

CPU结构与指令执行过程简介的更多相关文章

  1. [No0000167]CPU内部组成结构及指令执行过程

    计算机的基本硬件系统由运算器.控制器.存储器和输入.输出设备五大部件组成.运算器和控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU). CPU的功能 ...

  2. servlet的执行过程简介(从tomcat服务器和web应用的角度)

    该链接详解htttp请求和响应 http://www.cnblogs.com/goxcheer/p/8424175.html 1.web应用工程发布到tomcat服务器 2.客户端访问某个web资源, ...

  3. Linux下shell命令执行过程简介

    Linux是如何寻找命令路径的:http://c.biancheng.net/view/5969.html Linux上命令运行的基本过程:https://blog.csdn.net/hjx5200/ ...

  4. CPU乱序执行基础 —— Tomasulo算法及执行过程

    朋友们可以关注下我的公众号,获得最及时的更新: IBM 360/91浮点单元最先实现Tomasulo算法从而允许乱序执行.360体系只有4个双精度浮点寄存器,限制了编译器调度的有效性.而且,IBM 3 ...

  5. angular核心原理解析3:指令的执行过程

    指令的执行过程分析. 我们知道指令的执行分两个阶段,一个是compile,一个是link. 我们可以在指令中自定义compile和link. 首先,我们来讲解如何自定义link函数 举个例子: < ...

  6. 【基础知识】CPU 指令执行的五个阶段,cpu就是用来执行指令的

    IF(Instruction fetch) 取指:从 Instruction-Memory 中读取指令,并在下一个时钟上升沿到来时把指令送到 ID 级的指令缓冲器 id_ir 中.该级控制信号决定下一 ...

  7. struts2学习(5)拦截器简介以及例子执行过程

    一.拦截器简介: 二.Struts2预定义拦截器&拦截器栈 在执行action之前和之后,拦截器进行了操作: 比如struts-default.xml中就有很多预定义的拦截器:   拦截器栈: ...

  8. 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?

    1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...

  9. tomcat——大致简介和执行过程

    jsp简介 JSP: JAVA Server Page 使用JAVA语言编写的一种在服务器运行的动态页面 JSP = JAVA + HTML JSP 的执行过程 1: 翻译阶段 把JSP源文件翻译成 ...

随机推荐

  1. Alwayson 基本概念

    1. AD域服务: 存储目录数据并管理用户与域之间的通信,包括用户登录处理.身份验证和目录搜索. 2. AD林:林是域的最大组织单元,一个林可以包括一个或多个域.林中的域之间相互信任(默认). 3. ...

  2. MongoDB VUE的下载及安装

    下载: mongo vue官网地址:http://www.mongovue.com/ 安装: 很简单,注意的是:在提示buy 和 OK  的时候点击OK即可: 连接: 默认连接(无用户名密码): 在启 ...

  3. DI spring.net简单使用

    IOC或DI  spring.net简单使用 一.spring.net是什么? Spring 框架本是 Java 平台上一个应用非常多的.开源的框架.虽然语言是固定的,但是好的方法应该是通用的,于是 ...

  4. pageadmin CMS网站制作教程:模板中的站点数据调用

    pageadmin CMS网站建设教程:模板中的站点数据调用 1.获取当前站点Id,返回int数字 Html.CurrentSiteId() 2.获取当前站点url地址,返回string字符串 Htm ...

  5. day 64 Django 第五天 多表对多表的对应关系ORM

     一.查 设置 Author表  在 views文件中 # 作者表 class Author(models.Model): id =models.AutoField(primary_key=True) ...

  6. Tomcat 服务器开启失败故障

    Server Tomcat v8.0 Server at localhost failed to start.故障 原因:1.可能是web.xml中的filter-mapping中url-patter ...

  7. Android的四大组件学习

    一.Linearlayout  :  线性布局 1. android:orientation="vertical"     //控件的方向控制,vertical : 垂直布局 ,  ...

  8. 微信小程序redirect 到tab不刷新

    // 更新2018/11/20:现在小程序的页面栈长度为10 更正 2018/11/20: 经过一段时间的实践,我发现以前方法存在很多问题,比如 getCurrentPages 方法并不在官方的 AP ...

  9. jvm高级特性(6)(线程的种类,调度,状态,安全程度,实现安全的方法,同步种类,锁优化,锁种类)

    JVM高级特性与实践(十三):线程实现 与 Java线程调度 JVM高级特性与实践(十四):线程安全 与 锁优化 一. 线程的实现 线程其实是比进程更轻量级的调度执行单位. 线程的引入,可以把一个检查 ...

  10. iOS完全自学手册——[一]Ready?No!

    1.前言 今天开始我会不定期写一些iOS自学的相关文章.毕竟,自己是自学开始,知道自学有哪些坑,知道自学对于开发欠缺什么,此外,加上现在的实际开发经验,希望能给自学的iOS开发者一些建议. 2.Rea ...