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 ...
随机推荐
- Ubuntu18.04 Server安装Nginx+Git服务和独立的svn服务
安装Nginx+Git 需要安装的包有 nginx, fcgiwrap, git. 其中git在Ubuntu18.04 Server安装时已经默认安装了. 需要安装的是前两个 而fcgiwrap是在 ...
- 一个非常好的开源项目FFmpeg命令处理器FFCH4J
项目地址:https://github.com/eguid/FFCH4J FFCH4J(原用名:FFmpegCommandHandler4java) FFCH4J项目全称:FFmpeg命令处理器,鉴于 ...
- SpringBoot过滤XSS脚本攻击
XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安 ...
- PHP session_start() open failed: Permission denied session 无法使用的问题
日志显示报错如下: PHP message: PHP Warning: session_start(): open(/) 报错显示无法打开 seesion 文件,没有权限,所以需要给 /var/lib ...
- JVM 线上故障排查基本操作--内容问题排查
内存问题排查 说完了 CPU 的问题排查,再说说内存的排查,通常,内存的问题就是 GC 的问题,因为 Java 的内存由 GC 管理.有2种情况,一种是内存溢出了,一种是内存没有溢出,但 GC 不健康 ...
- CDH集群手动导入scm库
一.手动导入 scm 库 背景:正常安装 cloudera-scm-server 时,安装 scm 库是通过脚本 /usr/share/cmf/schema/scm_prepare_database. ...
- 导入一个eclipse的java项目到IDEA报Cannot find JDK '1.7' for module 'TEST'
解决办法: 右键你的项目--------------->OPen module settings 将dependencies里面的module sdk改成你安装的java版本就可以了(比如我电脑 ...
- consul删除无效实例
consul删除无效实例删除无效服务删除无效节点删除无效服务http://127.0.0.1:8500/v1/agent/service/deregister/test-9c14fa595ddfb8f ...
- pymysql DAO简单封装
#!/usr/bin/env python # -*-coding:utf-8 -*- # # 无法执行多个query,self.conn.close()放在CdbConn类的单独函数中,每次quer ...
- 为Ubuntu笔记本电脑创建WiFi热点共享上网
from: linux公社 http://www.linuxidc.com/Linux/2014-02/97139.htm 该文由土木坛子转译而来,说是转译,其实看截图就可以方便的设置,没有任何命 ...