MIPS流水线技术
单周期指令运行动态
单周期时空图

设耗时最长的操作时间为T,则时钟周期 = 5T
执行n条指令需要5nT时间
多周期指令运行动态
| 指令 | 时钟周期 |
|---|---|
| lw | 5个 |
| beq | 3个 |
|---|
| add | 4个 |
|---|
| j | 3个 |
|---|
多周期时空图

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

将一条指令分成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流水线技术的更多相关文章
- 计算机体系结构——流水线技术(Pipelining)
本文导读: 一.并行技术 .并行技术分类 .新技术的设计与实现 .指令周期 二.流水线技术 .什么是流水线 .指令重叠方式 .流水工作设计 .流水线的描述方法(时空图) .流水线特点 三.流水线的分类 ...
- Intel系列CPU的流水线技术的发展
Intel系列CPU的流水线技术的发展 CPU(Central processing Unit),又称“微处理器(Microprocessor)”,是现代计算机的核心部件.对于PC而言,CPU的规格与 ...
- 流水线技术原理和Verilog HDL实现(转)
源:流水线技术原理和Verilog HDL实现 所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行.这使得操作执 ...
- geotrellis使用(四十一)流水线技术
前言 之前 GeoTrellis 为方便用户将数据(GeoTiff 等遥感影像)导入到 backend (包含 Accumulo.File.Hadoop 等格式)中,编写了一个 ETL 类,该类的输入 ...
- CI-持续集成(2)-软件工业“流水线”技术实现
1 概述 持续集成(Continuous Integration)是一种软件开发实践.在本系列文章的前一章节已经对其背景及理论体系进行了介绍.本小节则承接前面提出的理论构想进行具体的技术实现. & ...
- CI-持续集成(2)-软件工业“流水线”技术实现(转)
1 概述 持续集成(Continuous Integration)是一种软件开发实践.在本系列文章的前一章节已经对其背景及理论体系进行了介绍.本小节则承接前面提出的理论构想进行具体的技术实现. & ...
- 流水线技术原理和Verilog HDL实现
所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行.这使得操作执行速度只与流水线输入的速度有关,而与处理所需的时 ...
- 传统码头建设企业:Azure DevOps Server 流水线技术沟通
受某码头建设企业的邀请,与企业软件研发团队就如何利用Azure DevOps Server进行了沟通.结合企业当前技术框架和管理流程,探索利用微软Azure DevOps Server的技术能力,加强 ...
- ARM流水线关键技术分析与代码优化
引 言 流水线技术通 过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一.ARM7处理器核使用了典型三级流 水线的冯·诺伊曼结构,AR ...
随机推荐
- C#多线程开发-线程池03
你好,我是阿辉. 前面2篇文章介绍了线程的基础知识和线程同步,下面我们来一起认识学习下,线程池的使用. 线程池 创建线程是昂贵的操作,所以为每个短暂的异步操作创建线程会产生显著的开销.一般情况下,都会 ...
- AtomicStampedReference AtomicReference解决CAS机制中ABA问题
AtomicStampedReference AtomicReference解决CAS机制中ABA问题 AtomicStampedReference AtomicStampedReference它内部 ...
- spring boot 系列之八:SpringBoot处理定时任务
项目经常会用到定时任务,springboot自然是可以通过整合相关组件来实现的. 目前常用的定时任务的实现有两种: 通过spring 自带的定时器任务@Schedule来实现 通过Quartz来实现 ...
- noip模拟46
A. 数数 排好序从两头贪心即可 B. 数树 首先很容易想到容斥 如果选择的边集的相关点集有点的度数大于 \(1\) 是不合法的 也就是说一定形成若干条长度不一的链 要给这些链上的点安排排列中的数,方 ...
- PPP协议、PPPoE协议、L2TP协议的关系
1. 简述 首先对这3中协议做一个简单的描述: 协议 协议类型 描述 PPP 点对点链路层协议 应用最广泛的点对点协议,可应用在多种网络,改善了SLIP协议的不足 PPPoE 点对点链路层协议 对PP ...
- Hash值和位运算
一.Hash 1.md5是hash算法,不可逆,还原的是暴力穷举的方式解析的:加盐之后穷举也不能还原: 2.压缩映射会有重复,即哈希冲突: 二.ConcurrentHashMap 1.putIfAbs ...
- go中语句为什么不用加分号;结束
不用人加 编译的时候自动加了分号; 编译器工作原理 首先,在一行中,寻找成对的符号,比如一对字符串的引号.一对圆括号,一对大括号 上述任务完成后,在一行中没有其他成对的标示,然后就在行尾追加分号; 所 ...
- linux下分卷压缩,合并解压的3种方法
我们上传东西的时候,由于文件过大而不能上传,或者不给上传,最明显的就是发邮件了,附件最大5M,有的10M.如果超过了就郁闷了.这个时候,如果能把压缩的东西,分割开来就比较爽了,windows下面我想大 ...
- awk的执行方式
https://blog.csdn.net/fengyuanye/article/details/82858863 awk执行有三种形式: 1.直接以命令行来执行, 语法形式为:awk ...
- c++ undefined reference
记录一次c++编程时发现的问题 报错 undefined reference undefined reference to `Student::~Student()' 下面还有类似的好几行,翻译过来就 ...