《计算机原理与系统结构》学习系列——处理器(中)

系列文章目录

目录

  • 流水线数据通路与控制
    • 概述
      • 5个流水级
        • 指令周期与流水级
      • 流水线性能
        • 流水线时钟周期的长度T和数量cycles
        • 流水线性能
    • 流水线数据通路
      • 流水线寄存器
      • 流水线分析
      • 图形化流水线
      • 流水线控制

流水线数据通路与控制


概述

5个流水级

指令周期与流水级

在这里插入图片描述
在这里插入图片描述

单周期实现中,任一时刻只有部分硬件在运行
将指令执行分散在五个周期,每个周期只执行一个阶段,这样的方法对于效能浪费大
指令1进入ID周期后,指令2可以使用IF部分硬件
指令1进入EX周期后,指令2可以使用ID部分硬件…

与指令周期五个阶段相对应,把数据通路分为五个流水级,形成流水线


流水线性能

流水线时钟周期的长度T和数量cycles

假设五个阶段各需200ps(1ps = 1 0 − 12 s 10^{-12}s 1012s),将最慢阶段的200ps作为时钟周期

时钟周期数 = 指令数 + 流水级数 - 1 cycles = IC + n -1
理想加速比 = 流水线级数 S n 理想 = n S_{n理想} = n Sn理想=n
(理想条件为:1.每个流水级时间等长 2.流水线没有开销 3.指令数足够大)

在这里插入图片描述
假设五个阶段需要的时间分别为200ps、100ps、200ps、200ps、100ps
仍然将最慢阶段的200ps作为时钟周期(简单源于规整)
现在考虑lw指令后面跟着一条add指令,add指令在ID阶段需要lw取出的数据,而此时lw还没取出数据,这导致了冲突
因此省略流水周期可能导致两条指令抢占同一流水级的硬件部件引发结构冒险


流水线性能

只管查一条指令,可以发现流水线没有减少单挑指令的执行时间,而是通过增加指令的吞吐率来提高性能,即在同一时间处理多条指令的不同阶段,实现指令级并行

理想情况下,流水线CPI为1,IC不变,由时钟周期长度决定的吞吐率是评价流水线性能的重要指标

提高流水线性能,可以进一步划分流水级缩短时钟周期。在IC和CPI不变的情况下,进一步缩短T,减少CPU执行时间,提高吞吐率提升

过度划分流水级会导致调度开销增大、分支性能下降、抵消性能


流水线数据通路

流水线寄存器

任一时刻,每个流水级只被一条指令占用,用一条数据通路执行5条MIPS指令不会造成结构冒险

但每条指令使用和生成的数据不同,为了保留指令各自的数据需要在两个流水级之间插入流水线寄存器(以左右两个流水级命名非别为IF/ID,ID/EX,EX/MEM,MEN/WB)
在这里插入图片描述
在这里插入图片描述

流水线分析

(左半边涂灰表示写入,右半边涂灰表示读取,组合单元涂灰表示使用)

  • IF:一切指令都要读取,将PC+4和指令传给IF/ID
  • ID:一切指令都要译码产生控制信号,除j以外均要读取寄存器。PC+4继续传给ID/EX,rs和rt的数据扩展后的立即数也要传给ID/EX
  • EX:多选器ALUSrc选择ALU源操作数和rs相加。ALU结果、Zero标志位、分支目标地址都要传给EX/MEM

在这里插入图片描述

  • MEM:从数据存储器中读取数据,和ALU运算结果一并传给MEM/WB
  • WB:将访存读取的数据写回寄存器,为写回rt,需要保存rt地址
    在这里插入图片描述在这里插入图片描述

图形化流水线

以下面五条指令为例
lw $10,20($1)
sub $11,$2,$3
add $12,$3,$4
lw $13,24($1)
add $14,$5,$6
在这里插入图片描述

流水线控制

流水线控制信号和单周期控制信号的种类、数量、功能完全相同
每条指令在ID级产生控制信号后,下一周期会后续指令覆盖
因此,控制信号也需要从ID级依次传递到EX级、MEM级、WB级。EX级使用该级的信号(ALUSrc和ALUOp)后不再使用,可以丢弃,MEM级同理,这就是跨流水级的控制信号传送

请添加图片描述
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE】【多线程】volatile,wait/notify

目录 一、volatile关键字1.1 内存可见性1.2 volatile解决内存可见性问题 二、wait和notify2.1 wait2.2 notify2.3 使用例子2.3.1 例子12.3.2 例子二 一、volatile关键字 volatile可以保证内存可见性,只能修饰变量。 1.1 内存可见性 在前面介绍线程不安全原因时介…

C语言[求x的y次方]

C语言——求x的y次方 这段 C 代码的目的是从用户输入获取两个整数 x 和 y ,然后计算 x 的 y 次幂(不过这里有个小错误,实际计算的是 x 的 (y - 1) 次幂,后面会详细说),最后输出结果。 代码如下: #include…

银河麒麟V10通过tigervnc实现远程桌面和windows系统连接

1、查看系统版本:uname -a Linux localhost.localdomain 4.19.90-89.16.v2401.ky10.x86_64 #1 SMP Sat Sep 14 13:09:47 CST 2024 x86_64 x86_64 x86_64 GNU/Linux 2、查看是否具有桌面环境:yum grouplist 安装VNC需要具有桌面环境 3.、安装tigervnc: yum install tigervnc…

Linux基础命令(五) 之 cat,head,tail,more,less,grep

目录 一,浏览普通文件内容 二,过滤文件内容显示--grep 参数及其作用 ​编辑 常见用法 一,浏览普通文件内容 注意:以上命令均可以结合管道符一起使用 二,过滤文件内容显示--grep 在指定的普通文件中查找并显示含有…

vue写个表格,让它滚动起来,没有用datav,有的时候结合会出错,一种简单的方法,直接用animation

表格样式就先不说了哈,这些简单内容,如果粉丝朋友还有什么问题,可以私信 好啦,首先,第一步 1.在目录的这个地方创建文件夹css,里面放两个文件 . 第一个文件里面内容 第二个文件里面内容 .drawCur{ curs…

VR在线展厅重塑展览新维度,引领沉浸式科技体验与漫游新时代

一、VR在线展厅开启数字展览新篇章 VR在线展厅将传统的实体展览空间转化为数字化的虚拟环境。参观用户只需使用手机、平板、电脑等设备就能瞬间穿越至虚拟展厅中,身临其境地浏览各类展品。这种前所未有的科技体验不仅让参观者感受到了数字技术的魅力,更极…

JS实现警灯效果红蓝闪烁

代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>警灯效果红蓝闪烁</title&…

【WiFi7】 支持wifi7的手机

数据来源 Smartphones with WiFi 7 - list of all latest phones 2024 Motorola Moto X50 Ultra 6.7" 1220x2712 Snapdragon 8s Gen 3 16GB RAM 1024 GB 4500 mAh a/b/g/n/ac/6e/7 Sony Xperia 1 VI 6.5" 1080x2340 Snapdragon 8 Gen 3 12GB RAM 512 G…

web服务实验

http实验 先创建需要访问的web页面文件index.html 编辑vim /etc/nginx/conf.d/testip.conf 测试通过域名访问需要编辑/etc/hosts 如果通过windows的浏览器访问需要编辑下面的文件通过一管理员身份打开的记事本编辑 C:\Windows\System32\drivers\etc下的hosts文件 192.168.1…

Kubernetes运行大数据组件-设计思路

环境说明 在Kubernetes集群添加三个节点作为大数据测试服务节点&#xff1a; NAME STATUS ROLES AGE VERSION bigdata199056 Ready worker 2d3h v1.20.6 bigdata199057 Ready worker 2d5h v1.20.6 bigdata199058 Ready work…

Maven的依赖

一、依赖的基本配置 根元素project下的dependencies可以包含多个 dependence元素&#xff0c;以声明多个依赖。每个依赖都应 该包含以下元素&#xff1a; 1. groupId, artifactId, version : 依赖的基本坐标&#xff0c; 对于任何⼀个依赖来说&#xff0c;基本坐标是最…

前端聊天室页面开发(赛博朋克科技风,内含源码)

肝了一天&#xff0c;经过各种处理美化&#xff0c;肝出来了一个赛博朋克科技风的前端页面&#xff0c;用的原生三件套htmlcssjavascript开发的&#xff0c;本来想是加点功能调用一下gpt接口&#xff0c;但是基本都需要webscoket通信&#xff0c;可惜我js学的不是很深入&#x…

使用Vue.js构建响应式Web应用

&#x1f496; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4bb; Gitee主页&#xff1a;瑕疵的gitee主页 &#x1f680; 文章专栏&#xff1a;《热点资讯》 使用Vue.js构建响应式Web应用 1 引言 2 Vue.js简介 3 安装Vue CLI 4 创建Vue项目 5 设计应用结构 6 创建组件 7 使用…

C++——string的模拟实现(下)

目录 成员函数 3.4 修改操作 (3)insert()函数 (4)pop_back()函数 (5)erase()函数 (6)swap()函数 3.5 查找操作 (1)find()函数 (2)substr()函数 3.6 重载函数 (1)operator赋值函数 (2)其他比较函数 (3)流插入和流提取 完整代码 结束语 第一篇链接&#xff1a;C——…

基于Springboot无人驾驶车辆路径规划系统(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

【大模型】Ollama+WebUI+AnythingLLM搭建本地知识库

目录 1 部署Ollama 1.1 下载镜像ollama 1.2 运行ollama 1.3 验证 2 模型选型 3 安装模型 3.1 选择模型安装 3.2 删除模型(选看) 4 安装webUI 4.1 拉镜像 4.2 启动服务 5 访问 5.1 注册 5.2 登录 5.3 设置 6 使用 7 使用api来调用 8 安装AnythingLLM搭建本地…

27.9 调用go-ansible执行playbook拷贝json文件重载采集器

本节重点介绍 : go-ansible执行playbook编写分发重载的playbook编译执行 测试停掉一个节点测试停掉的节点再回来 go-ansible执行playbook 新增 goansiblerun/run.go package goansiblerunimport ("context""github.com/apenella/go-ansible/pkg/execute&qu…

Python基础学习(四)程序控制结构

代码获取&#xff1a;https://github.com/qingxuly/hsp_python_course 完结版&#xff1a;Python基础学习完结版 程序控制结构 程序流程控制介绍 基本介绍 程序流程控制绝对程序是如何执行的&#xff0c;是我们必须掌握的&#xff0c;主要有三大流程控制语句。顺序控制、分支…

Linux中DHCP服务器配置和管理

文章目录 一、DHCP服务1.1、DHCP的工作流程1.2、DHCP的工作模式1.3、dhcp的主要配置文件 二、安装DHCP服务2.1、更新yum源2.2、安装DHCP服务软件包2.3、配置DHCP服务2.4、启用DHCP服务&#xff08;解决报错&#xff09;2.4.1、查看dhcpd服务的状态和最近的日志条目2.4.2、查看与…

js构造函数和原型对象,ES6中的class,四种继承方式

一、构造函数 1.构造函数是一种特殊的函数&#xff0c;主要用来初始化对象 2.使用场景 常见的{...}语法允许创建一个对象。可以通过构造函数来快速创建多个类似的对象。 const Peppa {name: 佩奇,age: 6,sex: 女}const George {name: 乔治,age: 3,sex: 男}const Mum {nam…