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;

CPU子系统的更多相关文章

  1. cpu子系统(优化)

    如果业务已经在线上,你要优化,第一步如何做 首先进行服务器数据采集,和性能监测分析 一:使用cacti,nagios,zabbix 等监控工具 二:使用linux 自带的一些监控指令:vmstat,i ...

  2. [原] Cgroup CPU, Blkio 测试

    关于Cgroup的简单测试 [toc] 简单介绍Cgroup (如果对cgroup熟悉可以忽略) 一般情况下,cgroup挂载到一个虚拟文件目录,然后可以通过文件系统的API对其操作. ># m ...

  3. Android中关于cpu/cpuset/schedtune的应用

    Android中关于cpu/cpuset/schedtune的应用都是基于进程优先级的,根据不同优先级划分进程类型.AMS(ActivityManagerService)和PMS(PackageMan ...

  4. linux top命令中各cpu占用率含义

    linux top命令中各cpu占用率含义 [尊重原创文章摘自:http://www.iteye.com/topic/1137848]0.3% us 用户空间占用CPU百分比 1.0% sy 内核空间 ...

  5. 【转载】Linux cgroup资源隔离各个击破之 - cpu隔离1

    Linux cgroup 有两个子系统支持CPU隔离.一个是cpu子系统,另一个是cpuset子系统. cpu子系统根据进程设置的调度属性,选择对应的CPU资源调度方法 .1. 完全公平调度 Comp ...

  6. 《Linux 性能及调优指南》3.2 CPU瓶颈

    翻译:飞哥 ( http://hi.baidu.com/imlidapeng ) 版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明. 原文名称:<Linux Performance ...

  7. Linux系统和性能监控之CPU篇

    Linux系统和性能监控之CPU篇 性能优化就是找到系统处理中的瓶颈以及去除这些的过程.本文由sanotes.net站长tonnyom在2009年8月翻译自Linux System and Perfo ...

  8. (转)linux top命令中各cpu占用率含义及案例分析

    原文:https://blog.csdn.net/ydyang1126/article/details/72820349 linux top命令中各cpu占用率含义 0 性能监控介绍 1 确定应用类型 ...

  9. cgroup 分析之CPU和内存部分

    https://ggaaooppeenngg.github.io/zh-CN/2017/05/07/cgroups-%E5%88%86%E6%9E%90%E4%B9%8B%E5%86%85%E5%AD ...

随机推荐

  1. 多线程 interrupt()方法

    java interrupt()方法只是设置线程的中断标记,当对处于阻塞状态的线程调用interrupt方法时(处于阻塞状态的线程是调用sleep, wait, join 的线程),会抛出Interr ...

  2. Invalid bound statement (not found) 错误原因

    对我来说,错误的原因是因为没有配置:mybatis.mapperLocations=classpath:mybatis/mapper/*Mapper.xmlmybatis.config-locatio ...

  3. merge同时包含增、改、删

    我们都知道oracle merge可以用来增和改,很少用它来删除.但是有时候我们仍然需要该特性,以提高性能,典型的场景就是将业务库逻辑删除的记录同步到查询库的时候,做真正的物理删除,这个时候merge ...

  4. 如何解决“HttpException (0x80004005): 超过了最大请求长度”问题

    .net mvc项目在做上传文件时,出现这个问题,上传文件的是通过表单提交,后台是通过请求里面获取文件信息的 1.问题截图: 堆栈信息 “/”应用程序中的服务器错误.超过了最大请求长度.说明: 执行当 ...

  5. 基于ifc数据的bim模型吊装模拟-1

    基于ifc数据的bim模型吊装模拟-1 IfcWallStandardCase    IfcColumn

  6. uni-app v-for循环遍历 动态切换class、动态切换style

    动态切换class,主要代码::class="i.themColor"  <view v-for="i in htmlJSON" class=" ...

  7. [LeetCode] 505. The Maze II 迷宫 II

    There is a ball in a maze with empty spaces and walls. The ball can go through empty spaces by rolli ...

  8. [LeetCode] 680. Valid Palindrome II 验证回文字符串 II

    Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...

  9. 【LeetCode】整数反转【不能借助辅助空间,需要处理溢出】

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: ...

  10. PAT(B) 1040 有几个PAT(Java)

    题目链接:1040 有几个PAT (25 point(s)) 题目描述 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 ...