CPU的基本结构:

CPU的主要部件:

​ 运算部件、缓存部件、寄存器、控制器、时序部件

CPU的工作原理:

​ 主要功能:处理指令、执行操作、控制时间、数据运算

​ 执行指令的流程:读取指令、指令译码、指令执行、后续工作

部件的控制方式:

​ 同步控制方式:每步操作都向统一的外部时序信号对齐,每步操作之间无交互;

​ 异步控制方式:每步操作都不需向统一的外部时序信号对齐,每步操作之间通过交互应答来实现协同;

外部连接与I/O控制任务

指令系统:

设计CPU的一般过程:

​ 指令系统 --- 数据通路 --- 控制器 --- CPU定型

指令可能会涉及到的操作数类型:

​ 地址码数据:寄存器编号或者存储器地址,无符号整数.

​ 数值型数据:定点数、浮点数等,一般用补码表示;

​ 字符型数据:通常表示为ASCII码/汉字内码格式;

​ 逻辑型数据:常规二进制代码,不具有数值含义。

指令中的寻址方式:

​ 立即寻址:

​ 直接寻址:

​ 寄存器直接寻址:

​ 间接寻址(寄存器间接寻址、堆栈间接寻址):

​ 变址、基址寻址及其变化:

​ 基址寻址:

​ 基址 + 变址:

​ PC相对寻址:

​ 页面寻址(伪直接寻址):

设计传送指令时需要考虑:

​ 规定传送范围、指明传送单位、设置寻址方式

算数、逻辑运算指令:

​ 算数运算指令:设计时需要考虑操作数类型、符号、进制等,运算结束后设置CPU相应状态标志寄存器;

​ 逻辑运算指令:常用来对码位的设置和条件判断等操作.

程序控制类指令:

​ 转移指令、转子指令与返回指令、软中断指令、

控制处理机的专用指令
面向操作系统的指令

算数部件与运算器:

​ 需要解决的关键问题:如何以加法器为基础,实现各种类型的算数逻辑运算处理。

​ 解决思路:复杂运算 --- 四则运算 --- 加法运算

​ 解决方法:在加法的基础上,增加移位传送功能,并且输入运算控制条件。

加法单元:

串行加法器:

​ 特点:低位向高位依次传递进位信息。

​ 影响运算速度的主要因素:进位信号的传递。

​ 进位逻辑 特点:进位信号逐位形成。

并行加法器:

​ 特点:各位进位信号同时形成;

分组:组内并行、组间并行

运算器组织:

​ 带多路选择器的运算器、带输入锁存器的运算器、位片式运算器;

带多路选择器的运算器:

带输入锁存器的运算器:

位片式运算器:

MIPS(Micro-processor without interlocked piped stages),一种无内部互锁流水级微处理器。

指令格式与指令集:

​ 指令字长固定为32位,寄存器型寻址,指令中给出寄存器号.

R型指令:

I型指令:

J型指令:

寻址方式:

​ R型指令:由op和func字段共同隐含说明当前的寻址方式。

​ I型和J型指令:由op字段隐含说明当前指令使用的寻址方式。

立即数寻址:操作数在指令中的立即数字段。

寄存器直接寻址:操作数直接在寄存器中。

基址寻址:操作数由寄存器和立即数字段联合产生。

PC相对寻址:操作数由寄存器和立即数字段联合产生。

伪直接寻址:也叫页面寻址,由PC高4位与指令中的地址段组合产生的有效地址

CPU设计的主要任务:

​ 拟定指令集;

​ 数据通路设计;

​ 控制器设计。

CPU执行1条指令的步骤:

​ 取指令、取操作数、分析指令、执行指令;

流水技术:

​ 把指令过程分解为若干子过程,每个子过程都可有效地在其专用功能段上与其它子过程重叠执行,这种技术称为流水技术。

流水线的特点:

​ 流水线的子过程称为流水线的“级”或“段”,子过程的数目称为流水线的“流水深度”(m);

​ 每个子过程由专用的功能段实现,各功能段的时间应基本相等,通常为1个时钟周期(1拍);

​ 流水线需要经过一定的通过时间才能稳定(即无空闲功能段):t稳 = T * m;

​ 流水技术适合于大量相同指令的执行。

流水线的基本类型:

​ 按流水线的处理层级:操作部件级流水线、指令级流水,处理级流水;

​ 按流水线能完成的功能数量:单功能流水线、多功能流水线;多功能流水线按同一时间内可连接完成的功能数量不同,又分为:静态多功能流水线、动态多功能流水线(控制太复杂,很少使用)。

​ 按处理的数据形态:标量流水线、向量流水线;

​ 按流水线内各段的连接模式: 线性流水线(前馈性)、非线性流水线(存在反馈连接);

​ 按流水线输入输出对应关系:顺序流水线(先进先出)、乱序流水线(无序、错序或异步);

流水线的性能指标:

​ 吞吐率:单位时间内处理的任务数或数据量;

​ 加速比:同一程序,不采用流水的执行时间与采用流水的执行时间的比值;

​ 利用率:流水线中各部件的平均利用率,即一定时间内,部件实际工作时间与部件总时间的比值。

超标量流水线和超流水线:

​ 标量流水线:在每个时钟周期只发射1条指令,并要求每个时钟周期只从流水线流出一条指令的结果。

​ 超标量流水线:是指在每个时钟周期向流水线发射多条指令,并能从流水线流出多个结果。

​ 超流水线:把完成一条指令的流水线的各一级子过程进一步细分成若干二级子过程( = 超流水的度、深度)

超标量超流水线处理技术:

​ 同时使用超流水线和超标量技术;

​ 超标量的度 = 3,超流水的度 = 3,超标量超流水的度 = 3 * 3 = 9;

最新文章

  1. ionic ngCordova插件安装
  2. CF459C Pashmak and Buses (构造d位k进制数
  3. iOS开发小技巧
  4. EntityFramework Core 学习笔记 —— 创建模型
  5. Android中Service的使用
  6. Linux用户应知应会的7个‘ls’命令的独特技巧
  7. APP前端公共测试点
  8. ADO.NET数据库
  9. 微信红包API接口(PHP)
  10. POJ 1947 树DP获得冠军
  11. [转]奇异值分解(We Recommend a Singular Value Decomposition)
  12. JDBC(一)之细说JDBC
  13. 为什么要用日志框架 Logback 基本使用
  14. java 多线程中的锁的类别及使用
  15. java的一些基本概念——java11、jdk、jre、jvm等
  16. NOI Day2线上同步赛崩盘记
  17. [INS-20802] Oracle Net Configuration Assistant failed,Caught UnknownHostException
  18. tair介绍以及配置
  19. 初等数论及其应用——Lucas定理
  20. luoguP5105 不强制在线的动态快速排序 [官方?]题解 线段树 / set

热门文章

  1. Deep-learning augmented RNA-seq analysis of transcript splicing | 用深度学习预测可变剪切
  2. python @classmethod和@staticmethod区别
  3. mysql增删改查sql语句
  4. codeDecodeError ascii codec can't decode byte 0xe2 in position 44 ordinal not in range(128)
  5. ubuntu16上部署confluence-6.14.5的迁移
  6. [转] cmake源码编译安装jsoncpp
  7. iOS UILabel文字自适应高度自适应
  8. UIView的intrinsicContentSize方法,在按钮中重写
  9. bugclose使用—bug管理工具
  10. 在ensp上配置Trunk接口