【README】

本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐;


【1】CPU结构

Cpu的首要功能就是解释指令;功能列表如下:

  • 1)    取指令:从内存中读取指令;
  • 2)    分析指令:对指令的操作码部分进行解码;分析这条指令要完成什么功能,是指令集中的哪一条指令;
  • 3)    执行指令: cpu控制器发出各种操作命令,由这些操作命令去控制相关部件去完成指令要求的操作;(这些操作命令有一定的先后顺序);
  • 4)    控制器控制参数输入及结果输出;
  • 5)    总线管理: 对总线的控制权,使用权进行管理;
  • 6)    处理异常情况和特殊请求: 在程序执行过程中,控制器能够对异常情况,或特殊请求进行及时处理;

【2】cpu结构框图

【2.1】总线功能列表

1)    控制总线:双向,由cpu向各个部件发出的控制命令,或外部设备向cpu提出的请求以及外部设备的状态,可以通过控制总线来传输;
2)    数据总线:双向,由cpu向存储器或外设写出或读入数据;
3)    地址总线:单向, 由cpu发出,送给内存或外设接口;

【2.2】cpu内部结构

【2.2.1】寄存器

PC,程序计数器寄存器,存储要取出的指令的地址;
IR,指令寄存器,从内存中取出指令,被放入到IR寄存器中;

。。。其他寄存器;

【2.2.2】控制单元CU

操作控制和实际控制:这两部分需要控制单元CU,由控制单元对指令进行译码,译码之后,在给定时刻给出给定的操作命令;

【2.2.3】ALU(算术逻辑运算单元):

算术运算,逻辑运算都是在ALU中进行计算中;
另外在运算过程中,还需要寄存器,如2个操作数可能都保存在寄存器中,或运算结果也需要输出到寄存器中;

【2.2.4】中断系统

还需要中断处理,所以需要中断系统;

refer2 计算机中断系统小结(cpu响应中断)_PacosonSWJTU的博客-CSDN博客_各中断源如何向cpu提出中断请求


【3】cpu的寄存器

【3.1】用户可见寄存器

1)    通用寄存器:用于存放操作数,如8086cpu的AX,BX等;
2)    数据寄存器:存放操作数,如有保存整数的寄存器,也有保存浮点数的寄存器;如把ACC寄存器和MQ寄存器拼接在一起用于保存两个数相乘的积;
3)    地址寄存器:保存地址,如8086cpu中的段寄存器,如段基址,堆栈指针寄存器SP;
4)    条件码寄存器:存放条件码,根据条件码来判断是否要跳转执行指令;

补充:用户可见的寄存器指的是 用户在编写程序的过程中,可以使用这些寄存器的值;

【3.2】控制和状态寄存器

PC -> MAR -> M -> MDR ->IR  讲的是取指令的过程,其中

  1. PC-程序计数器寄存器:保存了将要执行的下一条指令的地址;
  2. MAR-主存(内存)地址寄存器:保存了访问内存(访存)的地址,从内存读出或写入内存某地址;
  3. M:主存(内存);
  4. MDR-主存(内存)数据寄存器:保存了访问内存(访存)的数据,从内存的MAR指定的地址单元读取的数据,或写入到MAR指定的地址单元的数据;
  5. IR:指令寄存器:存储要执行的指令;(而PC存储的下一条执行的地址)

步骤如下:

  1. PC -> MAR :PC(程序计数器寄存器)保存了下一条执行指令的地址,把下一条指令地址送入到MAR;
  2. MAR -> M :MAR中的指令地址送入到地址总线,地址总线再送入到主存;
  3. M -> MDR:从主存的MAR指定的内存单元读取数据(指令)到MDR
  4. MDR ->IR  :把读取的数据(指令)从MDR 送入 IR;

写到这里,本文扩展性的给出取指令的步骤(干货):

步骤

描述

1

PC把下一条指令的内存地址送入MAR;

2

MAR把地址送到地址总线,再由地址总线送到存储器;

3

CU把读控制信号送到控制总线上;再由控制总线送到存储器;

4

存储器执行读操作,把相应的数据送到数据总线;通过数据总线送到MDR;

(这个时候,指令已经被取出到cpu了,并保持到MDR寄存器中)

5

MDR把指令送到IR中;

6

CU把PC加1(得到下一条指令的地址);为下一条指令的取指操作做准备;

【补充】

状态寄存器 :反映了指令执行结果的情况或计算机的软硬件状态;
PSW: 程序状态字寄存器(procedure state word);

程序状态字是什么?
在中断或者是子程序调用过程中,为了能够让程序能够正确返回断点,返回断点后,还能够接着执行给定程序;在中断前或转子程序前,就需要保存程序的运行现场和断点,包括了程序运行的软硬件信息;这些软硬件信息就可以保存在程序状态字寄存器(它是一个大的寄存器);


【4】控制单元CU和中断系统

【4.1】控制单元CU

1)控制单元作用:产生全部指令在执行时所需要的微操作命令序列;

任何一条指令的执行,它会在cpu中译码;
根据它是一条什么样的指令,或完成什么功能;要产生完成这些功能所需的微操作命令及序列(保证微操作命令的顺序);

2)控制器的设计方式

  • 组合逻辑设计: 通过硬连线逻辑,如精简指令集计算机 CISC;
  • 微程序设计:存储逻辑;适用于复杂指令的设计;

8.1-CPU结构(学习笔记)相关推荐

  1. UCOS内核结构学习笔记

    呵呵,大家好,暑假一直在实验室,校园网一直打不开我的BLOG,全国大赛结束后,我虽然没有参加,但是我也是经历了的,只是没有参赛而已.呵呵,感觉全国大赛不是比各高校学生的能力,而是各高校老师的能力.相信 ...

  2. 操作系统六种设计结构(学习笔记一)

    笔记参考的是现代操作系统第四版和华中科技大学软件学院苏曙光老师的操作系统原理课程 操作系统六种结构设计 单体系统 层次式系统 微内核 客户端-服务器模式 虚拟机 外核 单体系统 概念 在大多数常见的组 ...

  3. MYSQL索引结构学习笔记

    mysql 的数据.索引.DDL 等数据,都是以文件形式存储的, 所以导致每次查询都是一次I/O操作,当I/O操作过大时,会严重影响效率 MYSQL索引结构: mysql使用的是B+树来存储索引的,为 ...

  4. 《Linux性能优化实战》—倪朋飞,CPU部分学习笔记

    图片来自极客时间,如有版权问题,请联系我删除. 扫码加入学习! 平均负载 top或uptime命令 load average: 0.63, 0.83, 0.88 指的是系统可运行状态和不可中断状态的进 ...

  5. c语言程序的基本结构(学习笔记1)

    我是一个c语言初学者,这几天开始接触c编程.简单的了解了一下c程序的结构. c语言一般由预处理命令,函数,变量,语句&表达式,注释这6部分组成. 下面是一个最简单的c程序. #include& ...

  6. Intel X86 CPU寄存器学习笔记

    本文对Intel CPU寄存器做一些浅显的介绍.Intel处理器寄存器在很多教科书上有,网络也有很多文章涉及到.因此本文在这些基础上做一些归纳总结,另外也参考了Intel IA32架构软件开发手册. ...

  7. MATLAB中table结构学习笔记01_table数据结构的创建

    我们不重复造轮子,但是我们是否掌握了造轮子的算法和技能? 文章目录 前言 1. 版本 2. 关键词 一.table数据结构简述 二.table的创建 1. 创建空的table 2. 创建0行多列的ta ...

  8. Java基础(顺序结构)学习笔记

    Java基础 顺序结构 JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行 顺序结构是最简单的算法结构 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个一次执行的 ...

  9. 区块链之区块结构-学习笔记

    目录 一.区块结构 二.区块头 三.区块体 四.交易类型 (1)生产交易 (2)通用地址交易 (3)合成地址交易 一.区块结构 数据区块是区块链的基本元素.比特币系统的每个数据区块主要由区块头(Blo ...

  10. Marie.js CPU仿真器学习笔记仿真器简单教程

    传送门: ① Marie ② 使用手册 0.内容声明 本文章内容源于Marie.js使用手册,代码摘自Marie.js的样例代码,若有错误,敬请斧正. 1.Marie.js简介 这是一个非常精简易用的 ...

最新文章

  1. (How to)WordPress与Windows Live Writer整合
  2. RGB转YUV420
  3. python 线程异步执行踩坑
  4. DistBelief 框架下的并行随机梯度下降法 - Downpour SGD
  5. 20172303 2018-2019-1《程序设计与数据结构》第7周学习总结
  6. bat实现监测计算机网络连接,断网自动重启网络连接
  7. c语言开发kafka环境,c++(11)使用librdkafka库实现kafka的消费实例
  8. [Accessibility] ****************** Loading GAX Client Bundle ****************
  9. dos从优盘启动计算机,u盘dos启动盘制作
  10. 计算机开机跳过硬盘检查,怎么取消开机自动检测硬盘磁盘检查,开机老是修复分区怎么办及原因...
  11. 笔记本电脑+第二块显示屏如何双屏操作
  12. 我的世界服务器配置文件
  13. TensorFlow 2 和 Keras 高级深度学习:11~13
  14. java实现冒泡排序完整版
  15. 优链时代入围Internet Deep 【2022元宇宙TOP500】榜!
  16. 【宋红康 MySQL数据库 】【高级篇】【12】性能分析工具的使用
  17. 外盘期货的几个级别 你到达几级了?
  18. 小梅哥FPGA学习笔记——状态机设计学习
  19. <STM32F103ZET6>通过串口更新flash字库(包括LVGL字库烧写)
  20. EXCEL函数:VLOOKUP、SUMPRODUCT使用记录

热门文章

  1. 【SDOI2013】项链【莫比乌斯反演】【Polya定理】【递推式求通项】【数论】
  2. [ARC073C] Ball Coloring(贪心)
  3. CF1497D Genius
  4. 牛客题霸 [子数组的最大累加和问题] C++题解/答案
  5. Codeforces Round #757 (Div. 2)
  6. 数论分块练习([CF830 C]Bamboo Partition + [hdu 6395]Sequence )
  7. 内存管理(ybtoj-二叉堆)
  8. P5319-[BJOI2019]奥术神杖【0/1分数规划,AC自动机,dp】
  9. P5664-Emiya家今天的饭【dp】
  10. jzoj4669-[NOIP2016提高A组模拟7.19]弄提纲【LCA,KMP,字符串】