实验五指令调度和延迟分支
实验一 流水线及流水线中的冲突
实验一流水线及流水线中的冲突
程元彬
PB12011076
实验目的
1.加深对计算机流水线基本概念的理解;
2.理解MIPS结构如何用5段流水线来实现,理解各段的功能和基本操作;
3.加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU性能的影响;
4.进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿。
5.加深对指令调度和延迟分支技术的理解;
6.熟练掌握用指令调度技术来解决流水线中的数据冲突的方法;
7.进一步理解指令调度技术和延迟分支技术对CPU性能的改进。
实验平台
指令级和流水线操作级模拟器MIPSsim,
实验内容和步骤
首先要掌握MIPSsim模拟器的使用方法。
一、流水线及流水线中的冲突观察
1. 启动MIPSsim。
2.根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。(用鼠标双击各段,就可以看到各流水寄存器的内容)
3. 熟悉MIPSsim模拟器的操作和使用方法。
可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一个周期、执行多个周期、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化,特别是流水寄存器内容的变化。
4. 勾选配置菜单中的“流水方式”,使模拟器工作于流水方式下。
5.观察程序在流水线中的执行情况,步骤如下:
(1)用MIPSsim的“文件”菜单中的“载入程序”来加载pipeline.s(在模拟器所在文
件夹下的“样例程序”文件夹中);
指令调度名词解释__概述说明以及解释
指令调度名词解释概述说明以及解释
1. 引言
1.1 概述
在计算机领域,在执行指令的过程中,指令调度起着重要的作用。指令调度是操作系统对CPU处理器进行任务分配和进程管理的关键部分。它通过合理安排和调度进程的执行顺序,可以提高CPU利用率、降低响应时间,并改善系统性能。
1.2 文章结构
本文将首先对指令调度进行名词解释,包括定义、功能和作用,分类和特点等方面进行详细说明。接着,将概述指令调度的背景与重要性,探讨其执行流程和原则,并介绍常见的调度算法及其评估标准。然后,将解释指令调度的关键要点,包括就绪队列管理与进程优先级划分策略、时间片轮转算法以及抢占式调度策略等内容。最后,在结论部分总结主要观点和结论,展望指令调度的发展前景和未来研究方向,并提出存在问题并给予建议。
1.3 目的
本文旨在全面解释和说明指令调度相关的核心概念和原理,并深入分析其功能、作用以及应用场景。通过本文的阐述,读者可以了解指令调度的重要性、优化策略和算法,并对当前的研究热点和未来发展进行展望。同时,通过指出存在的问
题并提供建议,为进一步研究和改善指令调度提供参考。
2. 指令调度名词解释
2.1 定义:
指令调度是操作系统中的一个重要概念,它是指根据一定的策略将处于就绪状态的进程分配给处理器执行的过程。具体而言,指令调度负责选择哪个进程将被优先执行以及在多个进程竞争处理器时如何进行调度。
2.2 功能和作用:
指令调度的主要功能是合理安排系统资源,提高计算机处理效率。通过合适地安排进程之间的执行顺序,可以充分利用CPU,并确保各个进程得到公平的机会使用处理器。同时,指令调度也能够有效地响应用户请求,并保证每个进程都能及时得到运行并完成任务。
吉林大学计算机系统结构题库第三章
第三章流水线技术
知识点汇总
先行控制、流水线、单功能流水线、多功能流水线、静态流水线、动态流水线、部件级流水线、处理机级流水线、处理机间流水线、线性流水线、非线性流水线、顺序流水线、乱序流水线、时空图、流水线性能评价(吞吐率、加速比、效率)、解决流水线瓶颈问题方法、相关(数据相关、名相关、控制相关)、换名技术、流水线冲突(结构冲突、数据冲突、控制冲突)、流水线互锁机制、定向技术、指令调度、预测分支失败、预测分支成功、延迟分支(从前调度、从失败处调度、从成功处调度)、流水寄存器、3种向量处理方式(横向、纵向、纵横)、链接技术。
简答题
1.流水技术有哪些特点?(答出4个即可)(知识点:流水线)
答:1.将处理过程分解为若干子过程,由专门的功能部件来实现,2各段的时间尽可能相等,3各部件间都有一个缓冲寄存器,4适用于大量重复的时序过程,5需要通过时间和排空时间。
2.什么是静态流水线?什么是动态流水线?(知识点:静态流水线、动态流水线)
答:同一时间段内,多功能流水线中的各段只能按同一种功能的连接方式工作;同一时间段内,多功能流水线中的各段可以按照不同的方式连接同时执行多种功能。
3.什么是单功能流水线?什么是多功能流水线?(知识点:单功能流水线、多功能流水线)
答:只能完成一种固定功能的流水线。流水线的各段可以进行不同的连接,以实现不同的功能。
4.什么是线性流水线?什么是非线性流水线?(知识点:线性流水线、非线性流水线)
答:流水线的各段串行连接,没有反馈回路。流水线中除了有串行的连接外,还有反馈回路。
操作系统实验5-调度
实验五调度
一、基本信息
二、实验内容
在设计一个按优先级进行调度的算法
(1
(2
的进程
(3)调度时,总是选择优先级最高的执行,并采用动态调度:每运行一次优先级减1,估计运行时间减1
(4)进程运行一次后,若剩余的运行时间不为0,且优先级低于就绪队列中的进程,则状态变为ready,并选择一个进程使用CPU;若剩余的运行时间为0,则状态变为完成
(5)如就绪队列不空,则重复(3)(4)直到所有进程都结束
三、实验目的
通过实验,巩固和加深对进程调度的理解,以及各种调度算法的基本实现思想。
四、设计思路和流程图
(1)用一个结构体构造进程块,记录进程的各个属性,优先级和估计运行时
间随机产生
(2)创建一个进程块链表,每个节点表示一个进程块。用head指针表示链
表头部,用curPCB表示当前CPU调度的进程块
(3)遍历链表,找到优先级最高的进程“运行”
(4)重复调度进直到就绪队列中没有进程时,程序运行结束
五、主要数据结构及其说明
#include <cstdio>
#include <random>
#include <time.h>
struct PCB
{
int id;
int priority;//数值越大,优先级越高
PCB* nextPCB;//指向就绪队列中下一个进程的PCB首址
int probTime;//估计运行时间
int state;//0: ready, 1: running, 2:finished
};
void main()
{
srand((unsigned)time(0));
指令调度和延迟分支实验总结
指令调度和延迟分支实验总结
指令调度和延迟分支是计算机体系结构中的两个重要概念。指令调度是指在执行指令时,通过优化指令的顺序和调整执行时间,以提高CPU的效率。而延迟分支则是为了避免CPU在等待分支结果时浪费时间,采用一种预测技术来减少分支对CPU效率的影响。
一、指令调度
1. 指令调度的概念
指令调度是一种优化技术,通过重新排列程序中的指令顺序,使得CPU能够更好地利用其硬件资源。在执行程序时,CPU需要从内存中读取指令,并将其解码为可执行操作码。然后,CPU根据操作码进行运算,并将结果写回内存。
2. 指令调度的优点
(1)提高CPU效率:通过重新排列程序中的指令顺序,可以使得CPU更好地利用其硬件资源,从而提高效率。
(2)减少空闲时间:由于程序中存在大量独立的操作,因此可以通过
将这些操作组合起来执行,从而减少空闲时间。
(3)提高缓存命中率:由于现代计算机都采用了多级缓存结构,在进行数据访问时会涉及到缓存命中率的问题。指令调度可以通过重新排
列程序中的指令顺序,使得CPU能够更好地利用缓存,从而提高命中率。
3. 指令调度的实现方法
(1)静态调度:在编译程序时,对程序进行指令重排,生成新的可执行代码。
(2)动态调度:在程序运行时,根据当前CPU状态和任务负载情况,动态地调整指令执行顺序。
二、延迟分支
1. 延迟分支的概念
延迟分支是一种预测技术,通过预测分支结果来减少CPU在等待分支结果时浪费时间。由于分支语句会导致程序流程的改变,因此在执行
分支语句时需要等待条件判断结果。如果条件成立,则跳转到目标地址;否则继续执行下一条指令。
实验3指令调度和延迟分支
实验3 指令调度和延迟分支
3.1 实验目的
(1)加深对指令调度技术的理解。
(2)加深对延迟分支技术的理解。
(3)熟练掌握用指令调度技术解决指令流水线中的数据冲突的方法。
(4)进一步理解指令调度技术对CPU性能的改进。
(5)进一步理解延迟分支技术对CPU性能的改进。
3.2 实验平台
指令级和流水线操作级模拟器MIPSsim。
3.3 实验内容和步骤
(1)启动MIPSsim。
(2)进一步理解流水段的构成和各个流水寄存器的功能。
(3)选择“配置”下的“流水方式”,让模拟器工作于流水方式下。
(4)采用指令调度技术解决流水线中的数据冲突。步骤如下:
1)载入程序schedule.s。
2)关闭定向功能。
3)执行载入的程序。观察时钟周期图,找出程序执行中各种冲突发生的次数,发生冲
突的指令组合以及程序执行的总时钟周期数。
答:执行总周期数为33,其中RAW停顿16次、load停顿6次、自陷停顿1次。停顿总周期占程序执行周期的:51.51515%。
发生冲突的指令组合:ADD $r4,$r0,$r2 SW $r4,0($r1) LW $r6,4($r1)
MUL $r12,$r10,$r1 ADD $r18,$r16,$r1 SW $r18,16($r1)
LW $r20,8($r1) MUL $r24,$r26,$r14
4)采用指令调度技术对程序进行指令调度,消除冲突。将调度后的指令存到
after-schedule.s中。
5)载入after-schedule.s。
6)执行程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数。
操作系统实验5 进程调度模拟程序设计
一、实验内容
进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)或者时间片轮转法。
每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。
进程的运行时间以时间片为单位进行计算。
等待I/O的时间以时间片为单位进行计算,可随机产生,也可事先指定。
每个进程的状态可以是就绪R(Ready)、运行R(Run)、等待(Wait)或完成F(Finish)四种状态之一。
就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。
如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。
每进行一次调度程序都打印一次运行进程、就绪队列、等待进程以及各个进程的PCB,以便进行检查。
重复以上过程,直到所要进程都完成为止。
用C或C++
二、实验目的与要求
在采用多道程序设计的设计中的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器
本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度工作。
三、实验环境
Visual+C++6.0
四、实验步骤
实验八 指令调度和延迟分支
1、指令调度概念
(1)概念
(2)分类
2、调度指令延迟分支
三、实验过程及工件原理(实验步骤)
1.指令调度
(1)概念:是指电网调度机构值班调度员对其下级值班调度员或调度管辖厂站值班员发布有关运行和操作的指令。
(2)分类
1口头令:由值班调度员口头下达(无须填写操作票)的调度指令。
2操作令:值班调度员对所管辖设备进行操作,给下级调度机构或调度管辖厂、站运行值班员发布的有关操作的指令。
2018
--
2019
学年Байду номын сангаас
第
2
学期
课程名称计算机组成原理
实验序号实验8
实验项目指令调度和延迟分支
实验地点软件开发教学实训平台
实验学时2实验类型验证性
指导教师···
专业计算机科学与技术班级2017级计算机(2)
学号···姓名玄月二五
2019年3月
一、实验目的及要求
1、认识和学习指令调度;
2、了解调度指令延迟分支。
操作令又分为:单项操作令、逐项操作令和综合操作令。
a.单项操作令:值班调度员向运行值班员发布的单一一项操作的指令。
b.逐项操作令:值班调度员向运行值班员发布的操作指令是具体的逐项操作步骤和内容,要求运行值班员按照指令的操作步骤和内容逐项进行操作。
操作系统实验五
操作系统实验五
(实验五)
⼀、实验项⽬名称:教师评分:
操作系统进程调度算法(第5个实验)
⼆、实验⽬的和要求:
⽬的:对操作系统中使⽤的进程调度算法进⾏改进性设计。
要求:对教材中所讲述的⼏种进程调度算法进⾏深⼊的分析,然后选取其中的⼀种算法进⾏改进,并编程实现此算法。
三、实验内容:
1、设计进程控制块PCB表结构,分别适⽤于优先数调度算法和先来先服务调度算法。
2、建⽴进程就绪队列。对两种不同算法编制⼊链⼦程序。
3、编制两种进程调度算法:1)优先数调度;2)先来先服务
四、实验原理:
先来先服务调度算法:按进程进⼊就绪队列的先后次序选择可以占⽤处理器的进程。
优先级调度算法:对每个进程确定⼀个优先数,该算法总是让优先数最⾼的进程先使⽤处理器。对具有相同优先数的进程,再采⽤先来先服务的次序分配处理器。系统常以任务的紧迫性和系统效率等因素确定进程的优先数。进程的优先数可以固定的,也可随进程执⾏过程动态变化。⼀个⾼优先数的进程占⽤处理器后,系统处理该进程时有两种⽅法,⼀是"⾮抢占式",另⼀种是"可抢占式"。前者是此进程占⽤处理器后⼀直运⾏到结束,除⾮本⾝主动让出处理器,
后者则是严格保证任何时刻总是让优先数最⾼的进程在处理器上运⾏(本实验采⽤“可抢占式”)。
五、实验提⽰:
1、⽤两种算法对多个进程进⾏调度,每个进程可有三个状态,并假设初始状态为就绪状态。
2、为了便于处理,程序中的某进程运⾏时间以时间⽚为单位计算。各进程的优先数及进程需运⾏的时间⽚数的初始值均由⽤户给定。
3、在优先数算法中,优先数可以先取值为n,进程每执⾏⼀次,优先数减3,进程还需要的cpu时间⽚数减1。在先来先服务算法中,采⽤固定时间⽚(即:每执⾏⼀次进程,该进程的执⾏时间⽚数为已执⾏了2个单位),这时进程还需要的时间⽚数减2,并排列到就绪队列的尾上。
指令调度和延迟分支实验总结
指令调度和延迟分支实验总结
一、引言
指令调度和延迟分支是计算机体系结构中的两个重要概念。指令调度的目标是充分利用计算机的硬件资源,提高指令执行的效率;而延迟分支则是为了解决分支指令对程序性能的负面影响。本文将从概念、实验设计和实验结果等方面对指令调度和延迟分支进行探讨和总结。
二、指令调度
2.1 概念
指令调度是指根据程序的数据依赖性和硬件资源的可利用性,对指令的执行顺序进行调整的技术。通过优化指令的执行顺序,可以减少指令之间的依赖关系,充分利用硬件资源,实现更高效的程序执行。
2.2 实验设计
为了验证指令调度对程序性能的影响,可以设计以下实验: 1. 选取一段具有明显数据依赖关系的程序作为测试样例。 2. 在不同的指令调度算法下,对程序进行编译和执行。 3. 测量程序的执行时间,并比较不同指令调度算法的性能差异。
2.3 实验结果
实验结果表明,指令调度可以显著影响程序的执行性能。通过优化指令的执行顺序,可以减少数据依赖关系,充分利用硬件资源,从而加快程序的执行速度。同时,实验还可以得出不同指令调度算法之间性能差异的结论,为后续的优化提供指导。
三、延迟分支
3.1 概念
延迟分支是为了解决分支指令对程序性能的负面影响而提出的一种技术。在传统的分支指令执行过程中,由于条件分支的判断需要等待前一条指令的执行结果,会导致流水线的阻塞,降低执行效率。而延迟分支则是将分支指令的判断延迟到之后的指令执行阶段,从而减少流水线的阻塞,提高程序的执行效率。
3.2 实验设计
为了验证延迟分支对程序性能的影响,可以设计以下实验: 1. 选取一段包含条件分支指令的程序作为测试样例。 2. 在延迟分支和非延迟分支的情况下,对程序进行编译和执行。 3. 测量程序的执行时间,并比较延迟分支和非延迟分支的性能差异。
《操作系统》实验讲义五
《操作系统》实验讲义五
《操作系统》实验讲义
实验五进程调度
一.实验目的
1.深入了解进程调度的策略和机制
2.掌握各种调度算法的基本原理和评价指标
3.实现几种常用的调度算法
二.实验工具与设备
装有Linux操作系统的计算机。
三.实验内容
1.掌握进程调度的调度策略和调度机制
处理机(CPU)是指在一组就绪的进程中进行CPU的分配。概念上,操作系统调度程序是由用于上下文切换的机制和确定就绪进程分配CPU顺序的策略构成的。现代操作系统中,硬件和进程管理器的数据结构和算法实现了机制。处理机调度所追求的性能主要是响应时间短、周转时间快和对截止完成时间的保证。
CPU调度涉及到三个层次的调度,即高级调度(或作业调度)、中级调度(或进程对换)和低级调度(或处理机调度、CPU调度、进程调度)。这里仅讨论低级调度。低级调度的对象是进程。对于单处理机系统,处理机调度,是从内存的就绪队列中挑选一个进程送到处理机上运行。它采用多道程序设计的操作系统中,在一段时间间隔内,允许多个进程加载到主存中。当一个进程执行结束、或等待某事件发生而进入阻塞状态时,由调度程序将CPU分配给另一个进程。
操作系统的调度程序有两项任务:调度和分派。前者实现调度策略,确定就绪进程竞争使用CPU 的次序的裁决原则,即进程何时应放弃CPU和选择哪个进程来执行;后者实现调度机制,确定何时复用CPU,处理上下文切换细节,完成进程和CPU的绑定与放弃的具体工作。
处理机有两种基本的调度策略,即抢占式(或称剥夺式)和非抢
占式(或称非剥夺式)。在抢占方式下,操作系统有权按某种原则剥夺一个正在运行的进程的处理机。通常高优先级进程剥夺低优先级进程,或当运行进程时间片用完后被剥夺;而在非抢占式方式下,除非进程主动放弃,否则操作系统不得剥夺一个正在运行的进程的处理机。
计算机组成原理实验五
实验五微控制器实验
班级:姓名:
学号:
一、实验目的
1、掌握微程序控制器的组成原理
2、为模型机定义五条机器指令,并编写相应的微程序
3、掌握微程序的编制、写入,观察微程序的运行
二、实验设备
TDN-CM++计算机组成原理教学实验系统一套,导线若干。
三.实验原理
1、微程序控制器的工作原理:
微程序控制的计算机的工作原理是:计算机所识别的全部指令都是通过执行相应的微程序来完成的。因此应将本机器能识别的所有指令变成对应的微程序,写入控制存储器中,以后再执行用户程序的过程中,每次先从内存储器中取出一条机器指令,其解释执行过程都是从控制存储器中读出相应的微程序,执行每条微指令的过程。
本实验实现的模型机共包含五条机器指令:IN(输入)、ADD(加法)、STA(存数)、OUT(输出)、JMP(无条件转移),其指令格式如下(前四位为操作码):
地址码。
下图是上诉几条机器指令对应的参考微程序流程:
控制台操作微程序如图所示:
当每条机器指令对应的微程序全部设计完毕后,应将全部的微程序按微指令格式转换成二进
最后就可以将这些内容属于入到微程序控制器中。
微程序控制器的组成见图5-2。其中控制存储器采用3片2816 E2PR0M具有掉电保护功能。微命令寄存器18位用两片8D触发器(273)和一片4D(175)触发器组成。微地址寄存器6位用三片上升沿触发的双D触发器(74)组成它们带有清“0”端和预置端。在不进行判别测试的情况下T2时刻打入微地址寄存器的内容即为下一条微指令地址。当T4时刻进行判别测试时转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器设置为“1”状态,完成地址修改。
实验3 指令调度和延迟分支
实验3 指令调度和延迟分支
3.1 实验目的
(1)加深对指令调度技术的理解。(2)加深对延迟分支技术的理解。
(3)熟练掌握用指令调度技术解决指令流水线中的数据冲突的方法。(4)进一步理解指令调度技术对CPU性能的改进。(5)进一步理解延迟分支技术对CPU性能的改进。
3.2 实验平台指令级和流水线操作级模拟器MIPSsim。
3.3 实验内容和步骤(1)启动MIPSsim。
(2)进一步理解流水段的构成和各个流水寄存器的功能。(3)选择“配置”下的“流水方式”,让模拟器工作于流水方式下。(4)采用指令调度技术解决流水线中的数据冲突。步骤如下:
1) 载入程序schedule.s。 2) 关闭定向功能。
3) 执行载入的程序。观察时钟周期图,找出程序执行中各种冲突发生的次数,发生冲
突的指令组合以及程序执行的总时钟周期数。时钟周期图如下:
由以上知:RAW数据冲突发生了16次,其中load停顿6次,自陷停顿1次。发生冲突的指令组合: ADDIU $r1,$r0,A
LW $r2,0($r1)与上条写后读冲突; ADD $r4,$r0,$r2
SW $r4,0($r1)与上条指令写后读冲突; LW $r6,4($r1)
ADD $r8,$r6,$r1与上条指令写后读冲突; MUL $r12,$r10,$r1
ADD $r16,$r12,$r1与上条指令写后读冲突; ADD $r18,$r16,$r1 与上条指令
组件冲突 SW $r18,16($r1) 与上条指令写后读冲突;; LW $r20,8($r1)
MUL $r22,$r20,$r14与上条指令写后读冲突;程序执行的总时钟周期数为33。
计算机系统结构实验-循环展开和指令调度.
中央民族大学实验报告
八、实验数据及结果分析:
一、用指令调度技术解决流水线中的结构相关与数据相关:
1、instruction.s文件的代码:
2、运行程序部分截图
3、未用指令调度技术之前程序执行过程中的相关:
4、运行结果数据统计
5、采用指令调度后的程序代码
6、采用调度技术后发生的关联
7、运行结果数据统计
二、用循环展开、寄存器换名以及指令调度提高性能:
1、test.s文件的源代码如下:
2、运行test.s文件,记录运行过程中存在的相关,以及运行总的时钟周期数
3、将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度,代码如下:
4、记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数:
实验3指令调度和延迟分支
实验3指令调度和延迟分支
第一篇:实验3 指令调度和延迟分支
实验3 指令调度和延迟分支
3.1 实验目的
(1)加深对指令调度技术的理解。(2)加深对延迟分支技术的理解。
(3)熟练掌握用指令调度技术解决指令流水线中的数据冲突的方法。(4)进一步理解指令调度技术对CPU性能的改进。(5)进一步理解延迟分支技术对CPU性能的改进。
3.2 实验平台
指令级和流水线操作级模拟器MIPSsim。
3.3 实验内容和步骤(1)启动MIPSsim。
(2)进一步理解流水段的构成和各个流水寄存器的功能。(3)选择“配置”下的“流水方式”,让模拟器工作于流水方式下。(4)采用指令调度技术解决流水线中的数据冲突。步骤如下:
1)载入程序schedule.s。2)关闭定向功能。
3)执行载入的程序。观察时钟周期图,找出程序执行中各种冲突发生的次数,发生冲突的指令组合以及程序执行的总时钟周期数。时钟周期图如下:
由以上知:RAW数据冲突发生了16次,其中load停顿6次,自陷停顿1次。发生冲突的指令组合: ADDIU $r1,$r0,A LW $r2,0($r1)与上条写后读冲突; ADD $r4,$r0,$r2 SW $r4,0($r1)与上条指令写后读冲突;LW $r6,4($r1)ADD $r8,$r6,$r1与上条指令写后读冲突;MUL $r12,$r10,$r1 ADD $r16,$r12,$r1与上条指令写后读冲突;ADD $r18,$r16,$r1 与上条指令组件冲突SW $r18,16($r1)与上条指令写后读冲突;; LW $r20,8($r1)MUL $r22,$r20,$r14与上条指令写后读冲突;程序执行的总时钟周期数为33。
实验五:进程调度
实验五:进程调度
一、实验目的
1、理解进程调度的过程。
2、掌握各种进程调度算法的实现方法
3、通过实验比较各种进程调度算法的优劣。
进程调度算法是系统管理进程调度,提高系统性能的重要手段。通过本次实验理解进程调度的机制,在模拟实现先来先服务FCFS、轮转RR(q=1)、最短进程优先SPN、最短剩余时间SRT、最高响应比优先HRRN算法的基础上,比较各种进程调度算法的效率和优劣,从而了解系统进程调度的实现过程。
二、实验内容
随机给出一个进程调度实例,如:
进程到达时间服务时间
A 0 3
B 2 6
C 4 4
D 6 5
E 8 2
模拟进程调度,给出按照算法先来先服务FCFS、轮转RR(q=1)、最短进程优先SPN、最短剩余时间SRT、最高响应比优先HRRN进行调度各进程的完成时间、周转时间、响应比的值。
三、实验环境
PC + Linux Red Hat操作系统
GCC
四、实验原理及实验思路
1、FCFS 先来先服务也可以称为是FIFO先进先出。此策略是当前正在运行的进程停止
执行时,选择在就绪队列中存在时间最长的进程运行。这种策略执行长进程比执行短进程更好。
2、轮转这种策略是以一个周期性间隔产生时钟中断,当中断发生时,当前正在运行的
进程被置于就绪队列中,然后基于FCFS策略选择下一个就绪作业运行,目的是为了减少在FCFS策略下短作业的不利情况。
3、SPN最短进程优先这种策略是下一次选择所需处理时间最短的进程。是非抢占策略,
目的也是为减少FCFS策略对长进程的偏向。
4、SRT最短剩余时间这种策略下调度器总是选择预期剩余时间最短的进程。是抢占策
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5 指令调度和延迟分支
一.实验目的
(1)加深对指令调度技术的理解。
(2)加深对延迟分支技术的理解。
(3)熟练掌握用指令调度技术解决流水线中的数据冲突的方法。(4)进一步理解指令调度技术对CPU性能的改进。
(5)进一步理解延迟分支技术对CPU性能的改进。
二.实验内容和步骤:
(1)、启动MIPSsim。
(2)、根据前面的相关知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。
指令流水线有取指(IF)、译码(ID)、执行(EX)、访存(MEM)、写回寄存器堆(WB)5个过程段,共有7条指令连续输入此流水线
IF段(取指):取指令,控制器必须具备能自动地从存储器中取出指令的功能
ID段(译码):指令译码、读寄存器
EX段(执行):执行、访存有效地址字段
MEM段(访存):存储器访问
WB(写回寄存器堆):结果写回寄存器
在该窗口中,每一个矩形方块代表一个流水段,它们用不同的颜色填充。在该窗口的左侧是IF到WB段,其右边为浮点部件。浮点部件分有浮点加法部件(fadd)、浮点乘法部件(fmul)和浮点除法部件(fdiv)三种。在菜单“配置” “常规配置”中修改浮点部件个数,可看到该窗口中对应类型的浮点部件个数会发生相应的变化。
(3)、选择“配置”->“流水方式”选项,使模拟器工作于流水方式下。
(4)、用指令调度技术解决流水线中的数据冲突。
1)启动MIPSsim。
2)加载schedule.s。
3)关闭定向功能。
4)执行所载入的程序。通过查看统计数据和时钟周期图,找出并记录程序执行过程中各种冲突发生的次数、发生冲突的指令组合以及程序执行的总时钟周期数。
调度前:
RAW发生的冲突周期数:2、3、5、6、8、9、11、12、15、16、18、
19、21、22、25、26
由以上可知:
RAW数据冲突发生了16次,其中load停顿6次,自陷停顿1次,停顿周期总数17次
执行过程中各种冲突发生次数:16次
程序执行的总时钟周期数:33次
发生冲突的指令组合:
TEQ $r0,$r0
ADDIU $r1,$r0,56
LW $r2,0($r1) 与上条写后读冲突;
ADD $r4,$r0,$r2 与上条指令写后读冲突;
SW $r4,0($r1)与上条指令写后读冲突;
LW $r6,4($r1)
ADD $r8,$r6,$r1 与上条指令写后读冲突;
MUL $r12,$r10,$r1
ADD $r16,$r12,$r1 与上条指令写后读冲突;
ADD $r18,$r16,$r1 与上条指令组件冲突
SW $r18,16($r1) 与上条指令写后读冲突;
LW $r20,8($r1)
MUL $r22,$r20,$r14与上条指令写后读冲突;
5)采用指令调度技术对程序进行指令调度,消除冲突。将调度后的程序存到after-schedule.s中。
6)载入after-schedule.s。
7)执行该程序。观察程序在流水线中的执行情况,记录程序执行的总时钟
周期数。
调度后:
执行总时钟周期数为19,其中RAW停顿2次、load停顿0次、自陷停顿1次。停顿总周期占总执行周期的15.78947%。
8)根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU性能的作用。
根据记录结果:指令调度后时钟总周期数从33降低到19,指令调度使指令顺序重新组合,可以消除部分的数据冲突,从而通过指令调度技术显著地提高了CPU的使用率,大大减少了指令冲突的次数,提高了CPU的性能。指令调度的优劣直接影响CPU性能的发挥好坏,好的指令调度可以让停顿周期
大幅度减少。
(5)、用延迟分支减少分支指令对性能的影响。
1)启动MIPSsim。
2)载入branch.s。
3)关闭延迟分支功能。
单击“配置” “延迟槽”,使处于关闭状态即为默认状态4)执行该程序。观察并记录发生分支延迟的时刻。
没有采用分支延迟:
答:发生分支延迟的时刻为:第18周期。
5)记录执行该程序所用的总时钟周期数。
执行周期总数为38,其中RAW停顿16次、load停顿4次、控制停顿0次、自陷停顿1次。总停顿周期占总执行周期的50%。
6)假设延迟槽有1个,对branch.s进行指令调度,然后保存到“delayed-branch.s”中。
7)载入delayed-branch.s。
8)打开延迟分支功能。
单击“配置” “延迟槽”,使该项前有√来实现9)执行该程序。观察其时钟周期图。
采用分支延迟:
10)记录执行该程序所用的总时钟周期数。
总时钟周期数为26。其中RAW停顿4次、load停顿2次、自陷停顿1次。总停顿周期占总执行周期的19.23077%。
11)对比上述两种情况下的时钟周期图。
见上图
12)根据记录结果,比较没采用延迟分支和采用了延迟分支的性能之间的不同。论述延迟分支对于提高CPU性能的作用。
答:没采用分支延迟的时候周期总数为38,采用分支后的周期总数为26,可知,
在使用延迟槽后,指令在运行到跳转指令时,不会出现延迟等待,则能够提高CPU的性能。并且在使用延迟后,指令在运行到跳转指令时,不会出现延迟等待,则能够提高CPU的性能。所以只要分支延迟槽中的指令是够用的,流水线中就没有停顿,这时延迟分支的方法就能很好的减少分支延迟。所以放入延迟槽中的指令是很重要的,对CPU性能的影响是很显著的!
分支延迟槽(Branch delay slot),简单地说就是位于分支指令后面的一条指令,不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支指令提交(commit)。
三.实验结果分析
实验结论:指令调度让指令顺序重新组织后能消除部分的数据冲突,指令调度的优劣直接影响CPU性能的发挥好坏,好的指令调度可以让停顿周期大幅度减少。只要分支延迟槽中的指令时有用的,流水线中就没有停顿,这是延迟分支的方法就能很好的减少分支延迟,所以放入延迟槽中的指令是很重要的,对CPU 性能的影响是显著的。
1.了解了什么是指令调度以及指令调度对CPU性能的影响:
指令调度:
为了减少停顿,对于无法使用定向技术解决的问题,可以通过指令调度让指令顺序重新组织后能消除部分的数据冲突,指令调度的优劣直接影响CPU性能的发挥好坏,好的指令调度可以让指令周期大幅度减少。
指令调度对CPU性能的影响:
指令调度技术减少了指令冲突的次数,提高了CPU的性能。
2.延迟分支: