华中科技大学 - 计算机硬件系统设计

单周期指令运行动态

Instruction Fetch
Instruction Decode
Execution
MEM
Write Back

单周期时空图

设耗时最长的操作时间为T,则时钟周期 = 5T
执行n条指令需要5nT时间

多周期指令运行动态

指令 时钟周期
lw 5个
IF
ID
Ex
MEM
WB
beq 3个
IF
ID
Ex
add 4个
IF
ID
Ex
WB
j 3个
IF
ID
Ex

多周期时空图


不同的指令按照状态图来运行,有多少个状态就分配多少个时钟周期,避免了单周期中某些快的指令需要等待的缺点

流水线架构


将一条指令分成5段,每段各自功能部件执行的时间不同,例如取指时访问主存相对较慢,取5段当中最长的时间作为每段需要的时间。各段完全并发,每一段都可以分开处理不同的指令。

IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB

图中蓝色长条形是流水接口部件。其本质是一系列同步的寄存器,锁存前段加工完成的数据。通过流水接口传递与指令相关的数据、控制、反馈信息。后段对数据的加工处理依赖于前段接口传递过来的信息

流水线数据和信号传递


IF / ID:

  • 设置PC值寄存器的目的:在执行分支指令是需要用到PC的值,如果不在取指时一并取出,则取指后PC的自动改变,到执行时再取出的PC值是错误的

单周期控制器根据IR的内容生成所有的控制信号,在后续阶段使用,需要向后传递

流水线时空图

流水线冒险 pipeline hazard

资源冒险 resource hazard

也称结构冒险 structural hazard

两条或多条已进入流水线的指令需要使用相同资源。此时这些指令必须串行执行,而不是并行执行。

  • 争用主存:IF取指,ID取操作数
  • 争用ALU:计算PC、分支地址、运算操作

解决方法:增加主存访存端口,或采用哈佛结构,增加ALU

分支冒险 branch hazard

也称控制冒险 control hazard

由转移指令引起,当分支指令进入Ex阶段时,如果需要跳转,则控制IF段进行分支跳转,提前取出的指令作废,流水线清空,流水线发生中断

数据冒险 data hazard

指令操作数依赖于前一条指令的执行结果,流水线停顿直到数据写回

有3种类型的数据冒险:

  • 写后读 Read After Write:在写操作完成前读
  • 读后写 Write After Read:在读操作完成前写
  • 写后写 Write After Write:两条指令要改写同一个位置
add $s1,$s2,$s3
add $s4,$s1,$s5
IF ID Ex WB(写R1
IF ID(读R1取操作数) EX WB

MIPS流水线技术的更多相关文章

  1. 计算机体系结构——流水线技术(Pipelining)

    本文导读: 一.并行技术 .并行技术分类 .新技术的设计与实现 .指令周期 二.流水线技术 .什么是流水线 .指令重叠方式 .流水工作设计 .流水线的描述方法(时空图) .流水线特点 三.流水线的分类 ...

  2. Intel系列CPU的流水线技术的发展

    Intel系列CPU的流水线技术的发展 CPU(Central processing Unit),又称“微处理器(Microprocessor)”,是现代计算机的核心部件.对于PC而言,CPU的规格与 ...

  3. 流水线技术原理和Verilog HDL实现(转)

    源:流水线技术原理和Verilog HDL实现 所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行.这使得操作执 ...

  4. geotrellis使用(四十一)流水线技术

    前言 之前 GeoTrellis 为方便用户将数据(GeoTiff 等遥感影像)导入到 backend (包含 Accumulo.File.Hadoop 等格式)中,编写了一个 ETL 类,该类的输入 ...

  5. CI-持续集成(2)-软件工业“流水线”技术实现

    1   概述 持续集成(Continuous Integration)是一种软件开发实践.在本系列文章的前一章节已经对其背景及理论体系进行了介绍.本小节则承接前面提出的理论构想进行具体的技术实现. & ...

  6. CI-持续集成(2)-软件工业“流水线”技术实现(转)

    1   概述 持续集成(Continuous Integration)是一种软件开发实践.在本系列文章的前一章节已经对其背景及理论体系进行了介绍.本小节则承接前面提出的理论构想进行具体的技术实现. & ...

  7. 流水线技术原理和Verilog HDL实现

    所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行.这使得操作执行速度只与流水线输入的速度有关,而与处理所需的时 ...

  8. 传统码头建设企业:Azure DevOps Server 流水线技术沟通

    受某码头建设企业的邀请,与企业软件研发团队就如何利用Azure DevOps Server进行了沟通.结合企业当前技术框架和管理流程,探索利用微软Azure DevOps Server的技术能力,加强 ...

  9. ARM流水线关键技术分析与代码优化

    引 言    流水线技术通 过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一.ARM7处理器核使用了典型三级流 水线的冯·诺伊曼结构,AR ...

随机推荐

  1. JavaSE基础之Java中的数据类型

    基本数据类型:8个 整数类型(4):byte short int long 浮点类型(2):float double 字符类型:char 布尔类型:boolean 引用数据类型:3个 数组 类:cla ...

  2. Linux定时任务(详细)

    Linux定时任务一.首先查看是否安装了crontab[root@master ~]# rpm -qa |grep crontabcrontabs-1.11-6.20121102git.el7.noa ...

  3. vue 上传头像悬浮显示文字

    template部分: 头像外部加一个 div <div class="user-info-head"> </div>   css 部分 <style ...

  4. 启动线程组报错:Error occurred starting thread group :test_1, error message:Invalid duration 0 set in Thread Group:test_1, see log file for more details

    线程组基础信息都已经配置好,启动时报错,如下图: 排查原因:勾选了线程组调度器,并未设置参数 解决方案:取消勾选或者设置参数

  5. (九)羽夏看C语言——C++番外篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  6. MySQL——MySQL多实例

    一台服务器上运行多个MySQL服务,不同的业务 多实例思路: 1. 多套配置文件 2. 多套数据 3. 多个socket 4. 多个端口 5. 多个日志文件 6. 多个启动程序

  7. HTB Hack The Box -- Oopsiec

    信息收集 开放了22ssh,80端口,其中ssh有弱口令爆破端口 先打开网页,然后进行目录爆破,在这期间先看一下网页的大概信息 没爆到什么有用的东西,但是有uploads文件夹说明是不是说明有文件上传 ...

  8. Webpack:打包项目报错(eslint: debugger)

    打包项目需要把项目中的debugger删除,否则会报错.

  9. Windows下安装程序时提示未安装Microsoft Net FrameWork 2.0

    问题描述 安装程序时碰到如下: 现在基本都是用win7.win10系统,缺少环境大多数都是因为系统没有启用. 解决方法 控制面板 - 程序 - 启用或关闭Windows功能 - 把第一项'NET Fr ...

  10. 【转】shell中的$0 $n $# $* $@ $? $$ 变量 if case for while

    shell中的$0 $n $# $* $@ $? $$  shell 编程 | shift 命令用法笔记 $0当前脚本的文件名 $n传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个 ...