计算机组成原理-组成篇(下)
目录
计算机的高速缓存
高速缓存的工作原理
高速缓存的替换策略
计算机的指令系统
机器指令的形式
机器指令的操作类型
机器指令的寻址方式
计算机的控制器
计算机的运算器
计算机指令的执行过程
指令执行过程
CPU的流水线设计
计算机的高速缓存
- 之前也提到过
- 高速缓存的目的是为了解决CPU与主存的速度不匹配的问题
高速缓存的工作原理
- 一个字有32位(针对高速缓存)
- 字:是指存放在一个存储单元中的二进制代码组合
- 字块:存储在连续的存储单元中而被看作是一个单元的一组字
- 若一个字块共B个字
- 主存共M个字块
- 主存总字数=B*M
- 主存总容量(bits)=B*M*32
- 字的地址包含2个部分
- 前m位指定字块的地址
- 后b位指定字在字块中的地址
- 缓存与主存的关系
- 缓存的数据来自主存
- 存储的逻辑结构类似
- 缓存的容量较小
- 缓存的速度更快
- CPU需要缓存有2种情况
- CPU需要的数据在缓存里
- CPU需要的数据不在缓存里
- 不在缓存的数据需要去主存拿
- 高速缓存的速度是比主存快许多的,如果CPU需要的数据要去主存内拿的话,那无疑是大大降低了CPU的效率,所以需要CPU尽可能去高速缓存内取数据
- 量化CPU从高速缓存取数据的成功率,这就是缓存命中率
- 命中率是衡量缓存的重要性能指标
- 理论上CPU每次都能从高速缓存取数据的时候,命中率为1
- 命中率=访问缓存次数/(访问主存次数+访问缓存次数)
- 还有一个访问效率也是衡量缓存的重要性能指标
- 访问缓存-主存系统平均时间=命中率×访问缓存时间+(1-命中率)×访问主存时间
- 访问效率=访问缓存时间/访问缓存-主存系统平均时间
高速缓存的替换策略
- 为了让CPU运行效率越高,命中率就要越高,就需要性能良好的缓存替换策略
- 高速缓存的替换时机
- 发生在目前层次结构里CPU所需要的数据不在缓存里时,这时候就需要从主存里载入所需要的数据,把数据取出来,替换到高速缓存里去
- 替换策略
- 随机算法
- 先进先出算法(FIFO)
- 最不经常使用算法(LFU)
- 最近最少使用算法(LRU)
- 随机算法
- 非常简单,每一次发生替换时随机选取一个高速缓存里面的位置,然后把相关的内容给替换掉
- 先进先出算法(FIFO)
- 把高速缓存看做是一个先进先出的队列
- 发生替换淘汰时,优先替换最先进入队列的字块
- 最不经常使用算法(LFU)
- 发生替换淘汰时,优先淘汰最不经常使用的字块
- 为了记录哪一个字块是最不经常使用的,需要额外的空间记录字块的使用频率
- 最近最少使用算法(LRU)
- 优先淘汰一段时间内没有使用的字块
- 有多种实现方法,一般使用双向链表
- 把当前访问节点置于链表前面(保证链表头部节点是最近使用的)
计算机的指令系统
机器指令的形式
- 机器指令主要由2部分组成:操作码,地址码
- 组成的前面的部分是操作码字段,后面的部分是地址码字段
- 操作码
- 操作码指明指令所要完成的操作
- 操作码的位数反映了机器的操作种类
- 例:如果操作码有8位,那么它最多有2的8次方=256种操作
- 地址码
- 因为机器指令本质上还是对数据进行操作
- 地址码直接给出操作数或者操作数的地址
- 使得CPU根据这个数据或者数据的地址来进行相关的运算
- 对于地址码的不同分三地址指令,二地址指令和一地址码指令
- 三地址指令的意思是地址码字段有3个地址
- 二地址指令的意思是地址码字段有2个地址
- 一地址指令的意思是地址码字段有1个地址
- 零地址指令
- 在机器指令中无地址码
- 一般是空操作,停机操作,中断返回操作等
机器指令的操作类型
- 数据传输类型
- 可以发生在寄存器之间,寄存器与存储单元,存储单元之间传送
- 包括数据读写,交换地址数据,清零置一等操作
- 算术逻辑操作类型
- 操作数之间的加减乘除运算
- 操作数的与或非等逻辑位运算
- 移位操作类型
- 数据左移(乘2),数据右移(除2)
- 完成数据在算术逻辑单元的必要操作
- 控制指令类型
- 主要是等待指令,停机指令,空操作指令,中断指令等
机器指令的寻址方式
- 指令寻址
- 主要有2种寻址方法:顺序寻址,跳跃寻址
- 数据寻址
- 主要有3种寻址方法:立即寻址,直接寻址,间接寻址
- 立即寻址
- 指令直接获得操作数
- 无需访问存储器
- 直接寻址
- 直接给出操作数在主存的地址
- 寻找操作数简单,无需计算数据地址
- 间接寻址
- 指令地址码给出的是操作数地址的地址
- 需要访问一次或者多次主存来获取操作数
计算机的控制器
- 控制器是协调和控制计算机运行的
- 控制器主要有以下部分组成
- 1.程序计数器
- 2.时序发生器
- 3.指令译码器
- 4.各种寄存器
- 指令寄存器
- 主存地址寄存器
- 主存数据寄存器
- 通用寄存器
- 5.总线
- 程序计数器
- 用来存储下一条指令的地址
- 循环从程序计数器中拿出指令
- 当指令被拿出时,指向下一条指令
- 程序计数器主要是用于提供给其它控制单元当前需要执行的指令的地址
- 时序发生器
- 属于电气工程领域,用于发送时序脉冲
- CPU依据不同的时序脉冲有节奏的进行工作
- 指令译码器
- 计算机指令由操作码和地址码组成
- 翻译操作码对应的操作以及控制传输地址码对应的数据
- 指令寄存器
- 从主存或高速缓存取计算机指令
- 使得CPU可以高效运转的重要部件之一
- 主存地址寄存器
- 保存当前CPU正要访问的内存单元的地址
- 使用地址总线与主存进行相关通信
- 主存数据寄存器
- 保存当前CPU正要读或写的主存数据
- 使用数据总线与主存进行相关通信
- 通用寄存器
- 用于暂时存放或传送数据或指令
- 可保存ALU(算术逻辑单元)的运算中间结果
- 容量比一般专用寄存器要大
计算机的运算器
- 运算器是用来进行数据运算加工的
- 组成:
- 1.数据缓冲器
- 2.ALU(算术逻辑单元)
- 3.通用寄存器
- 4.状态字寄存器
- 5.总线
- 数据缓冲器
- 分为输入缓冲和输出缓冲
- 输入缓冲暂时存放外设送过来的数据
- 如果ALU正在运算的话,那么下一个需要运算的数据就保存在这个缓冲内
- 输出缓冲暂时存放送往外设的数据
- 当数据运算完,从ALU输出时,是保存在输出缓冲里的,等待控制器下一步的命令,然后把它送到相应的位置
- ALU(算术逻辑单元)
- 能完成常见的位运算(左右移,与或非等)
- 算术运算(加减乘除等)
- A和B是输入,F是输出,K是若干个控制线
- 状态字寄存器
- 主要是用于存放运算状态(条件码,进位,溢出,结果正负等)
- 也能存放运算控制信息(调试跟踪标记位,允许中断位等)
计算机指令的执行过程
指令执行过程
- 主要有3个步骤:
- 取指令->分析指令->执行指令
- 都是由片内总线相连
过程:
- 1.出现指令时,首先会发生数据缓存和指令缓存,也就是把相关的数据和指令缓存起来放在CPU的高速缓存内
- 2.缓存之后就能进行指令的执行了,对于指令的执行,首先是程序计数器把当前需要执行的指令缓存起来
- 3.程序计数器只知道指令的地址,不知道指令的具体内容
- 4.这时就需要通过片内总线来到指令缓存把对应的操作码和地址码拿出来
- 5.然后指令寄存器就会缓存起这个指令的具体内容,包括操作码和地址码
- 6.指令寄存器是不知道指令的具体内容的
- 7.还需要把这条指令发送到指令译码器里去
- 8.还需要注意:发送之后,程序计数器要加1,移向下一条需要执行的指令
- 9.指令译码器拿到指令后就会进行相关的译码
- 10.译码完成后,就理解指令的具体内容了,就可以发出控制信号,控制信号就可以通过片内总线来到运算器内
- 11.运算器拿到控制信号后,就明白自己需要做什么工作了
- 12.首先把这个R0加载到ALU里面去,接着把R0的数据送出来,送到数据总线上,接着来到数据缓存器,把R0的数据覆盖到R1里面去,这时候就完成了这条指令的操作
- 13.完成这条指令后,CPU又会执行下一条指令
- 指令执行过程中,取指令和分析指令主要是控制器在工作,执行指令主要是运算器在工作
- 也就是说控制器和运算器不能同时工作
- 导致CPU的综合利用率并不高
CPU的流水线设计
- 类似工厂的装配线
- 工厂的装配线使得多个产品可以同时被加工
- 在同一个时刻,不同产品均位于不同的加工阶段
- 把这个思想应用到计算机里就的CPU的流水线设计
- 没有应用流水线设计与应用流水线设计的过程的区别
- 串行执行m条指令:
- T=3t×m
- 流水线执行m条指令:
- T=t×(m+2)
计算机组成原理-组成篇(下)相关推荐
- Java架构师成长之道之计算机组成原理组成篇
Java架构师成长之道之计算机组成原理组成篇 Java架构师成长之道 2.1 计算机总线 2.1.1 总线概述 以通用串行总线USB(Universial Serial Bus)为例子来理解什么是总线 ...
- 【计算机组成原理】计算机组成原理——计算篇
计算机组成原理--计算篇 进制运算的基础 定义: 进位制是一种计数方式,又称进位计数法或位值计数法 用有限种数字符号来表示无限的数值 进位制的基数或底数:使用的数字 ...
- 计算机组成原理——组成篇
文章目录 计算机组成原理 -- 组成篇 1. 计算机的总线与I/O设备 a.计算机的总线(Bus) 1.为什么要使用总线? 2.总线的两大基本特征是什么? 3.总线分为几类? 分类: 4.系统总线按照 ...
- 详解计算机组成原理组成篇(磁盘调度算法,cache命中率,效率,平均访问时间,以及FIFO、LFU、LRU算法。拒绝挂科)
计算机组成原理组成篇 文章目录 计算机组成原理组成篇 一.计算机的总线与IO设备 1.1计算机的总线 总线的概述 总线的分类 总线仲裁 1.2计算机的输入.输出设备 常见的输入输出设备分 输入输出接口 ...
- 计算机组成原理一篇过
内容参照王道考研计算机组成原理课程视频. 在学习操作系统之前有必要对计算机硬件的组成以及各部分的功能有较清晰的认识,尤其操作系统中内存管理部分对硬件的理解要求较高.针对这部分知识先大致了解基本概念,后 ...
- 计算机组成原理 MOOC(下)
第6章 计算机的运算方法(上)测试 第6章 计算机的运算方法(中)测试 第6章 计算机的运算方法(下)测试 第7章 指令系统 测试 第8章 CPU的结构和功能 测试 第9章 控制单元的功能 测试 第1 ...
- 计算机组成原理-原理篇:指令与运算-13加法器:如何像搭乐高一样搭电路(上)?
1. 异或门和半加器 面这些门电路的标识,你需要非常熟悉,后续的电路都是由这些门电路组合起来的. 这些基本的门电路,是我们计算机硬件端的最基本的"积木",就好像乐高积木里面最简单的 ...
- 计算机主机主板单元,计算机组成原理——主板篇
微机(Micro Computer)是电子计算机中的一个分类,其他的还有巨型机.大型机.中型机和小型机.不同类型的电子计算机之间的差别主要在体积与运算速度和存储容量上划分. 微机系统由硬件系统和软件系 ...
- 计算机组成原理-入门篇-04功耗与性能
1. 功耗 我们的 CPU,一般都被叫作超大规模集成电路(Very-Large-Scale Integration,VLSI).这些电路,实际上都是一个个晶体管组合而成的.CPU 在计算,其实就是让晶 ...
最新文章
- 数据源架构模式之数据映射器
- Dubbo原理和源码解析之服务引用
- 反思不可佛系:刺激身体 刺激神经 目标反馈 定量奖惩 注重氛围
- linux查看文件大小和查看磁盘使用情况
- Python面试题大全(一):基础知识学习
- docker 修改阿里镜像源_使用阿里云容器镜像服务托管私有Docker镜像
- 跨进程实现在Tree中快速定位节点
- Android网络请求通信之Volley
- python采用强制自动缩进使代码具有极佳的可读性_Python的详细介绍
- Linux proc目录详解
- fasterRCNN系列
- 智能硬件蓝牙配网方案概要
- 航空工装的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- C语言*p、p以及p的区别
- 苹果以旧换新再扩大 支持更多手机系统
- 惯量辨识c语言程序设计,异步电机参数在线辨识技术的(硬件部分)毕业设计.doc...
- 【PyTorch系列】找不到d2lzh_pytorch包,No module named ‘d2lzh_pytorch’
- 动态规划——买卖股票的最佳时机含手续费
- 混吃等死,成为了现在日本年轻人的梦想
- zookeeper 使用场景
热门文章
- FBI针对HTTPS网络钓鱼发布警告
- 笨办法学python练习35分支与函数
- 时间序列平稳性的判断和处理——R语言ndiffs()
- [Python] 黑白棋(翻转棋)小游戏
- nodejs爬虫爬取 喜马拉雅FM 指定主播歌单并下载
- 安装linux提示没有系统盘,我有RedHat安装光盘,但没有安装软盘, 应怎么办?linux安装...
- 位列首位!百度智能云开物入选“双跨”平台国家队
- VR实时语音,带着最好的武器去战斗
- 深圳的山人送给大家的中秋祝福
- QT 实现滚屏显示多张漂亮美眉图片(可放大缩小)