初识CPU(二)

news2024/10/7 19:21:27

目录

一、控制器的功能与工作原理

1.控制器的设计思路

2.控制器的分类

3.微程序

3.1微命令

3.2微操作

3.3微指令

3.4微程序

3.5微地址

4.控制方式

4.1同步控制方式

4.2异步控制方式

4.3联合控制方式

4.4人工控制方式

二、微指令

5.微指令的编码方式

5.1直接编码方式

5.2字段直接编码方式(显式编码)

5.3字段间接编码方式(隐式编码)

5.4混合编码

6.微指令序列地址的形成

7.微指令格式

7.1.水平型微指令

7.2.垂直型微指令

7.3.两种微指令格式的比较(重要)

三、指令流水

1.指令流水原理

2.流水线的表示方法

3.流水线性能

3.1吞吐率

3.2加速比

3.3效率

4.影响流水线的因素

4.1结构相关(资源冲突)

4.2数据相关(数据冲突)

4.3控制相关(控制冲突)


一、控制器的功能与工作原理

1.控制器的设计思路

2.控制器的分类

硬布线工作原理:微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序,既时产生。

微程序工作原理:事先把微程序控制信号存储在一个专门的存储器(控制存储器)中,将每一条机器指令编写成一个微程序,这些微程序可以存到一个控制存储器中,用寻址用户程序机器指令的办法来寻址每个微程序中的微指令。

3.微程序

3.1微命令

控制部件向执行部件发出的各种控制命令叫做微命令,它是构成控制序列的最小单元。

微命令是控制计算机各部件完成某个基本微操作的命令。

3.2微操作

即微命令的操作过程。

微命令与微操作的关系:

微命令与微操作的一一对应的。

微命令是微操作的控制信号,而微操作是微命令的操作过程。

微操作是执行部件中最基本的操作。

3.3微指令

把在同一CPU周期内并行执行的微操作控制信息,存储在控制存储器里,称为一条微指令。

微指令是微命令的组合,微指令存储在控制器中的控制存储器中。

一条微指令通常至少包含两大部分:

1.操作控制字段,又称微操作码字段,用以产生某一步操作所需的各个微操作控制信号。

2.顺序控制字段。又称微地址码字段,用以控制产生下一条要执行的微指令地址。

3.4微程序

一系列微指令的有序集合就是微程序。

一段微程序对应一条机器指令。

3.5微地址

就是存放微指令的控制存储器的单元地址

4.控制方式

4.1同步控制方式

任何一条指令或指令中的任一微操作均由统一基准时标的时序信号控制。

4.2异步控制方式

无基准时标信号

无固定的周期节拍和严格的时钟同步

采用 应答方式

4.3联合控制方式

同步与异步相结合

4.4人工控制方式

连续和单条指令执行转换开关

符合停机开关

二、微指令

5.微指令的编码方式

5.1直接编码方式

在微指令的操作控制字段中,每一位代表一个微操作命令,某位为“1”表示该控制信号有效。

 

5.2字段直接编码方式(显式编码)

将微指令的控制字段分成若干 “段”,每段经译码后发出控制信号。(执行速度较慢)

注:

每个字段中的命令是互斥的

缩短了微指令字长但增加了译码时间

微命令字段分段原则:

1.互斥性微命令分在同一段内,相容性微命令分在不同段内。

2.每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。

3.一般每个小段还要留出一个转态,表示本字段不发出任何微命令。

 

5.3字段间接编码方式(隐式编码)

 

5.4混合编码

直接编码与字段编码混合使用

6.微指令序列地址的形成

1.微指令的下地址字段指出

2.根据机器指令的操作码形成

(当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成)

3.增量计数器:(CMAR)+1 -> CMAR

4.分支转移

转移方式:指明判别条件

转移地址:指明转移成功后的去向

5.通过测试网络

6.由硬件产生微程序入口地址

 第一条微指令地址由专门硬件产生

中断周期由硬件产生 中断周期微程序首地址

7.微指令格式

7.1.水平型微指令

一次能定义并执行多个并行操作

  • 直接编码
  • 字段直接编码
  • 字段间接编码
  • 直接和字段混合编码

7.2.垂直型微指令

  • 类似机器指令操作码 的方式
  • 由微操作码字段规定微指令的功能

7.3.两种微指令格式的比较(重要)

  • (1) 水平型微指令比垂直型微指令 并行操作能力强
    灵活性强
  • (2) 水平型微指令执行一条机器指令所要的
    微指令 数目少,速度快
  • (3) 水平型微指令 用较短的微程序结构换取较长的
    微指令结构
  • (4) 水平型微指令与机器指令 差别大

三、指令流水

1.指令流水原理

 

可以将指令周期简单分为:IF取指、ID指令译码、EX执行 、WD写回

取指令由取指部件完成,执行指令由执行部件完成,如果采用串行化执行,则在执行指令1时,取指部件是空闲的。

2.流水线的表示方法

3.流水线性能

3.1吞吐率

单位时间内流水线完成指令或输出结果数量

最大吞吐率:流水线达到稳定状态后可获得的吞吐率
这个值是固定的的:

实际吞吐率:流水线完成n条指令实际吞吐率

 

3.2加速比

m段流水线速度与等功能非流水线速度之比

3.3效率

流水线中各功能段利用率

E=(流水线各段处于工作时间时空区)/(流水线中各段总时空区)

即在执行一段程序中,对CPU的有效利用率

在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积n个任务所用的时间与k个流水段所围成的时空区总面积之比

4.影响流水线的因素

4.1结构相关(资源冲突)

由于多条指令进入流水线后在同一时钟周期内争用同一功能部件。

解决方法:

1.后一相关指令暂停一周期

2.资源重复配置:数据存储器+指令存储器

4.2数据相关(数据冲突)

不同指令重叠操作,可能改变对操作数的读写访问顺序.

数据基本操作:读(R)、写(W)

主要数据相关冲突类型:

RAW(Read After Write)
后面指令用到前面指令所写的数据
WAW(Write After Write)
两条指令写同一个单元
在简单流水线中没有此类相关,因为不会乱序执行
WAR(Write After Read)
后面指令覆盖前面指令所读的单元
在简单流水线中没有此类相关

解决方法:

1.后推法:遇到数据相关时,停顿后继指令运行,直到前面指令结果已经生成

2.设置相关的直接通路“Forwarding”:定向技术 旁路技术 将某条指令执行结果不送回寄存器而是直接送到其他指令所需的地方

4.3控制相关(控制冲突)

当流水线遇到转移指令和其它改变PC值的指令而造成断流时,会引起控制相关.

由转移指令引起 若是条件转移指令,则转移目标地址可能发生跳转,影响流水线效率。

解决方法:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/482797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot的家政服务管理平台(源码,设计文档等)

摘要 随着家政服务行业的不断发展,家政服务在现实生活中的使用和普及,家政服务行业成为近年内出现的一个新行业,并且能够成为大众广为认可和接受的行为和选择。设计家政服务管理平台的目的就是借助计算机让复杂的销售操作变简单,…

kafka的安装与使用

文章目录 kafka安装1 上传安装包2 解压安装包3 创建logs文件夹4 修改配置文件5 分发kafka6 启动kafka kafka使用1 启动kafka2 关闭kafka3 查看topic4 创建topic,名称为test5 删除名称为test的topic6 向topic发送数据7 从topic里消费数据 kafka安装 kafka安装前需要确认zookeep…

《程序员面试金典(第6版)面试题 16.09. 运算

题目描述 请实现整数数字的乘法、减法和除法运算,运算结果均为整数数字,程序中只允许使用加法运算符和逻辑运算符,允许程序中出现正负常数,不允许使用位运算。 你的实现应该支持如下操作: Operations() 构造函数minus…

Linux【模拟实现C语言文件流】

✨个人主页: 北 海 🎉所属专栏: Linux学习之旅 🎃操作环境: CentOS 7.6 阿里云远程服务器 文章目录 🌇前言🏙️正文1、FILE 结构设计2、函数使用及分析3、文件打开 fopen4、文件关闭 fclose5、缓…

4.3 实施部署Nginx 高可用负载均衡集群

部署大致可分为:准备工作、配置、验证与交付几个步骤,接下来按顺序逐一介绍。 4.3.1 准备工作 Nginx高可以负载均衡集群准备工作分两个层面:前端负载均衡器的准备工作与后端真实服务器的准备工作。根据长期实践出来的经验,先准备后…

更轻更好用的蓝牙耳机,日常佩戴更舒适,QCY Crossky Link体验

平时为了方便接打电话,我经常会戴上一副蓝牙耳机,不过戴久了入耳式的耳机,总感觉不舒服,上个月我看到一款设计很新颖的开放式耳机,来自我之前用过的一个国产品牌,最近到手后试了试,感觉质量不错…

Pandoc 从入门到精通,你也可以学会这一个文本转换利器

Pandoc 简介 如果你需要在不同的文件格式之间相互转换,多半听说或使用过文档转换的瑞士军刀——Pandoc。事实上,不仅人类知道 Pandoc,最近很火的人工智能 ChatGPT 也知道「将 Markdown 转换为 docx」,首选方案是使用 Pandoc。 ​…

Codeforces Round 868 (Div. 2)

Problem - D - Codeforces 思路&#xff1a; 首先&#xff0c;一个位置至多贡献1&#xff0c;不然就是0.如[l1,r]与[l2,r]都是回文串&#xff08;l1<l2) 若(l1r)/2<l2,即[l2,r]本身就是[l1,r]回文串右边的一部分&#xff0c;那么他的贡献在[l1,r]左边已经计算过。如果(…

Python程序的执行过程

哈喽&#xff0c;大家好&#xff0c;五一快乐呀&#xff0c;都去哪里旅游了呢&#xff1f;再游玩之余也花点时间来学习学习&#xff0c;让自己更强哟。这期就给大家分享的是Python程序执行的过程学习。 之前已经给大家介绍了Python语言的简介、Python环境的安装、IDE的选择与安…

4 斐波那契数列

4 斐波那契数列 作者: Turbo时间限制: 1S章节: 递归 问题描述 : 斐波那契数列的排列是&#xff1a;0&#xff0c;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8&#xff0c;13&#xff0c;21&#xff0c;34&#xff0c;55&#xff0c;89&#xff0c;…

CTF-PHP反序列化漏洞2-利用魔法函数

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

.net 智慧手术麻醉管理系统 WCF框架

实用性&#xff1a; 充分考虑科室业务场景实用性&#xff0c;把满足临床需要为第一要素进行考虑。具有操作简单、提示清晰、逻辑性强&#xff0c;直观简洁等特点。 灵活可自定义&#xff1a; 软件设计采用模块式、组件式开发&#xff0c;根据临床需要可根据实际业务进行组合…

【MATLAB第26期】区间预测 | 基于MATLAB的LASSO分位数回归预测模型 负荷预测数据

【MATLAB第26期】区间预测 | 基于MATLAB的LASSO分位数回归预测模型 负荷预测数据 一、效果预览 MSE: 22.9684327801807 %15分钟 21.6725387054707%30分钟 24.0995456594418%45分钟 21.3992361173462%60分钟 二、数据选择 案例数据&#xff1a;两个月负荷数据3599*30&#x…

网络编程 总结三

一、并发服务器模型 【1】 循环服务器 1>一次只能处理一个客户端的请求&#xff0c;等待这个客户端退出后&#xff0c;才能处理下一个客户端 2>缺点&#xff1a;循环服务器所处理的客户端不能有耗时操作 //*****模型****** sfd socket(); bind(); listen(); while(1)…

springboot websocket通信

目录 一、websocket是什么 二、实现websocket 2.1参考学习b站资料&#xff08;一定要看&#xff0c;前后端详细&#xff09; 2.2学习配套代码 一、websocket是什么 WebSocket_ohana&#xff01;的博客-CSDN博客 二、实现websocket 2.1参考学习b站资料&#xff08;一定要看…

4 异常机制--数组、切片、算法【Go语言教程】

4 异常机制–数组、切片、算法【Go语言教程】 1 异常机制 1.1 处理错误 Go 语言追求简洁优雅&#xff0c;所以&#xff0c;Go 语言不支持传统的 try…catch…finally 这种处理。Go 中引入的处理方式为&#xff1a;defer, panic, recover这几个异常的使用场景可以这么简单描述…

【小沐学Python】Python实现Web服务器(Flask框架扩展:Flask-Admin)

文章目录 1、简介1.1 flask1.2 flask-admin 2、安装2.1 安装库2.2 打印库版本 3、初始化4、添加独立视图&#xff08;BaseView&#xff09;4.1 管理接口索引页4.2 自定义视图 5、添加模型视图&#xff08;ModelView&#xff09;6、添加特殊视图6.1 Managing Files & Folder…

VS2019配置redis客户端的c++开发环境

目录 需要的开源库&#xff1a; 具体步骤&#xff1a; 遇到的问题&#xff1a; 1. 确保每个项目使用的配置解决方案管理器一样 2.CMAKE 的安装 3. 使用 CMAKE 的路径配置 4. redis 编译报错&#xff1a;jemalloc/jemalloc.h没有这个文件&#xff0c;或者找不到.dll 5. linux …

【Linux】初识Linux --指令Ⅰ

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法&#xff0c;Linux…感兴趣就关注我吧&#xff01;你定不会失望。 目录 1.ls 显示当前目录下的文件内内容2.pwd-显示用户当前所在的目录3.cd-改变工作目录。将当前工作目录改变到指定的目…

C++ STL-deque

deque&#xff1a;双端队列 目录 deque&#xff1a;双端队列 1、 基本介绍 2、使用方法 2.1、 头文件 2.2、 定义 2.3、 方法函数 3、排序 1、 基本介绍 首尾都可插入和删除的队列为双端队列。 deque容器是连续的空间&#xff0c;其他连续的行空间还有 array 和 vect…