CPU子系统
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子系统的更多相关文章
- cpu子系统(优化)
如果业务已经在线上,你要优化,第一步如何做 首先进行服务器数据采集,和性能监测分析 一:使用cacti,nagios,zabbix 等监控工具 二:使用linux 自带的一些监控指令:vmstat,i ...
- [原] Cgroup CPU, Blkio 测试
关于Cgroup的简单测试 [toc] 简单介绍Cgroup (如果对cgroup熟悉可以忽略) 一般情况下,cgroup挂载到一个虚拟文件目录,然后可以通过文件系统的API对其操作. ># m ...
- Android中关于cpu/cpuset/schedtune的应用
Android中关于cpu/cpuset/schedtune的应用都是基于进程优先级的,根据不同优先级划分进程类型.AMS(ActivityManagerService)和PMS(PackageMan ...
- linux top命令中各cpu占用率含义
linux top命令中各cpu占用率含义 [尊重原创文章摘自:http://www.iteye.com/topic/1137848]0.3% us 用户空间占用CPU百分比 1.0% sy 内核空间 ...
- 【转载】Linux cgroup资源隔离各个击破之 - cpu隔离1
Linux cgroup 有两个子系统支持CPU隔离.一个是cpu子系统,另一个是cpuset子系统. cpu子系统根据进程设置的调度属性,选择对应的CPU资源调度方法 .1. 完全公平调度 Comp ...
- 《Linux 性能及调优指南》3.2 CPU瓶颈
翻译:飞哥 ( http://hi.baidu.com/imlidapeng ) 版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明. 原文名称:<Linux Performance ...
- Linux系统和性能监控之CPU篇
Linux系统和性能监控之CPU篇 性能优化就是找到系统处理中的瓶颈以及去除这些的过程.本文由sanotes.net站长tonnyom在2009年8月翻译自Linux System and Perfo ...
- (转)linux top命令中各cpu占用率含义及案例分析
原文:https://blog.csdn.net/ydyang1126/article/details/72820349 linux top命令中各cpu占用率含义 0 性能监控介绍 1 确定应用类型 ...
- 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 ...
随机推荐
- c# 通过json.net中的JsonConverter进行自定义序列化与反序列化
https://www.cnblogs.com/yijiayi/p/10051284.html 相信大家在工作中会经常遇见对json进行序列化与反序列化吧,但通常的序列化与反序列化中的json结构与c ...
- Oracle中如何修改已存在数据的列名的数据类型
在oracle中,如何修改已存在数据列名的数据类型 一般人直接在表结构设计这里修改,这里只适合修改列没有数据,可修改 那么,如何这个列是有数据,是怎么修改的呢? 直接修改会Oracle错误 第一步:先 ...
- 一款阿里开源的 Java 诊断工具
Arthas是什么鬼? Arthas是一款阿里巴巴开源的 Java 线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题. Arthas诊断使用的是命令行交互模式,支持JDK6+,Linux. ...
- 使用Nginx转发tcp请求
要求nginx版本大于1.9,在nginx.conf添加以下,要求和http{}同级 stream { upstream cakehouse { server weight= max_fails= f ...
- 这42个Python小例子,太走心
告别枯燥,60秒学会一个Python小例子.奔着此出发点,我在过去1个月,将平时经常使用的代码段换为小例子,分享出来后受到大家的喜欢. 一.基本操作 1 链式比较 i = 3print(1 < ...
- Java获取执行进程的dump文件及获取Java stack
转发自https://blog.csdn.net/MCC_MCC_MCC/article/details/80623156 1.Windows/Linux环境下查看Java进程ID方法 使用Java自 ...
- php_mvc实现步骤十
shop34-19-商品添加 功能:添加商品表单 Index.php?p=back&c=Goods&a=add Controller-Action: 新建商品控制器类 Applicat ...
- 【LeetCode】寻找两个有序数组的中位数【性质分析+二分】
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ...
- FineUI window弹层设置
需在页面先设置 <f:Window ID="Window1" runat="server" Height="600px" Widt ...
- js 获取服务端时间,并实现时钟
本例子以vue语法伪代码书写: 1,获取服务端北京时间 getRealTime() { let that = this; var xhr = new XMLHttpRequest(); if( !xh ...