计算机系统结构实验三加法乘法动态多功能流水线调度

计算机系统结构实验三加法乘法动态多功能流水线调度
计算机系统结构实验三加法乘法动态多功能流水线调度

计算机专业类课程

课程名称:计算机系统结构

学院:计算机科学与工程

专业:计算机科学与技术

学生姓名:林怡

学号:2012060020023

指导教师:叶娅兰

日期:2015年 6月 5日

电子科技大学计算机学院实验中心

电 子 科 技 大 学

实 验 报 告

实验三

一、实验名称:加法乘法动态多功能流水线调度 二、实验学时:4 三、实验内容和目的: 实验目的:

1、 掌握加法乘法动态双功能指令调度的方式,

2、 理解静态多功能流水线和动态多功能流水线在调度模式上的区别,

3、

了解指令并行度上限的概念。

实验内容:

(一)给定要执行的任务和执行该任务的流水线结构

流水线的调度方式能够提高任务的并行度,但是针对不同的任务,由于相关的存在,其并行度的提高是不一致的。在开始程序设计前,我们首先要给定所要完成的任务:

这里我们使用矩阵点积运算任务,∑=n

1i aibi 。 n 的数值可以变化,通过变换n 的值用

同一程序进行多次模拟。

给定流水线:

流水线分五个步骤,每个步骤的执行时间均为一个单位时间;其中1-2-3-5组成加法流水线,1-4-5组成乘法流水线。加法和乘法可以同时执行 (二)对任务进行分解

动态多功能流水线不同于静态多功能流水线,流水线中同时只能有多种种操作的指令,因此不能将其划分为两个相互独立的加法流水线和乘法流水线。

1

2

3

5

4

X Y

我们考虑设计一个加法乘法混合运算器,加法4步,乘法三步,在送入源数据时应指明执行哪种运算。

(三)任务分解程序模拟的思路

在实验二的基础上。我们对设计进行变更。

加法乘法有一个类实现,称之为加乘法类。乘法的数据源为两个队列,加法的数据源为一个队列。

加法器的源数据队列初始为空,乘法器的源数据队列初始分别放入A1-An和B1-Bn。

(四)加乘法流水线的设计

模拟程序的目的是为了计算总的执行时间,因此对于每个步骤执行的功能并不需要关心。

为此设计一个能够同时执行加法和乘法的运算器类,每次接收两个输入数据,对于加法,经过4个时间片,输出加法的结果;对于乘法,经过3个时间片,输出加法的结果。时间片可以用定时器来模拟。

(五)乘法流水线的设计

乘法流水线分为三个步骤,每个步骤时间花费是一个单位时间。模拟程序的目的是为了计算总的执行时间,因此对于每个步骤执行的功能并不需要关心。

为此设计一个总步数为三步的加法器,接收两个输入数据,经过3个时间片,输出乘法的结果。时间片可以用定时器来模拟。

(五)程序设计

程序应包括三个队列,一个加乘法类,一个定时器,一个输出对话框。

两个乘法队列用于存放源数据,一开始将A1-An和B1-Bn分别放入两个乘法队列。

启动定时器,每一个时间片从两个乘法队列中各取出一个源数据、或者从加法队列中取出两个数据源(依次只能是两者中的一种,可以考虑首先从加法队列中取,请思考为什么加法优先?),送入加乘法器(可以通过调用乘法器中对应的加法接口函数或者乘法接口函数,把源数据作为参数传入)。

构造加乘法器类,可以考虑用一个长度对5的执行队列来模拟流水线的5个步骤,对于队列的元素,除了要表示两个源数据外,还需要表示对应这两个数据所要执行的操作(乘法或加法),每个时间片将队列的数据根据执行的操作依次下压一格(加法下压的顺序是1-2-3-5,乘法下压的顺序是1-4-5),队列尾的数据进行对应的计算,并将结果压入加法器源数据队列。

当乘法源队列和乘法源队列均为空且加乘法器的执行队列也为空(所有运算执行完毕)时,任务执行完毕。

用一个记数值表示时间开销,每个时间片对该记数值加1。最后的记数值是任务

电子科技大学计算机学院实验中心

的总的时间开销。

(五)多次模拟

可以通过循环的方式对n从4-20进行循环,将每次模拟运行的时间开销值在对话框中显示出来。如果可能将结果打印。

四、实验原理:

程序设计及数据结构:

实验程序共有6个类,分别是:

①DynamicPiplineTest 公共类,测试程序,每一个n的循环,将计时器清零并初始化长度为n的乘法操作数队列A与B,每个时间片从乘法操作数队列中取出Ai与Bi,进行乘法操作,并将结果送入加法器的操作数队列。当乘法器的源操作数队列为空时开始执行加法操作,当加法操作数队列只剩一个操作数且加法器的执行队列为空的时候,程序结束,输出n和计时器timercounter的值,以及最终的计算结果sum;

②OperaQueue 操作数队列类,包括一个操作数队列数据结构、队列初始化函数OperaQueue(int queueLength)、从队列中取一个源操作数函数getOperationNum()和将加法器计算的结果压入队尾的函数pushOperationNum(int op);

③Addition 加法器类(也可以作乘法器类),一个加法(乘法)执行队列additionQueue,一个用于暂存操作数的队列addOperandQueue。构造函数Addition(int len)用于初始化加法器(len=4)或乘法器执行队列(len=3),函数fetchOpNum在每一个时间片从源操作数队列中取出操作数,函数getAdditionResult()将两个源操作数相加(相乘)并返回它们的和(积),以及一个空操作executeNop()用于模拟加法器(乘法器)执行队列。

④Timer 成员变量timerCounter为时间片计数器。

⑤DialogFrame 对话框相关。

⑥DialogFrameComponent 对话框相关。

五、实验器材(设备、元器件)

Win7操作系统、Eclipse集成开发环境、JDK1.8、Java程序语言

六、实验步骤:

程序流程图:

加法器流水线部分的流程图与实验一完全相同,为节省篇幅这里不再给出。

由程序流程图可以看出,动态流水线与静态流水线大体的流程都是相同的,唯一的区别在于动态流水线一旦等到乘法执行队列为空后就立马进入加法流水线,而静态流水线要等到乘法流水线也排空后才能进入,因此动态流水线所需的时间片开销较静态流水线要更少,效率更高。

七、实验数据及结果分析:

电子科技大学计算机学院实验中心

当n=4时,时空图如下:此时时间片开销为t=14

当n=5时,时空图如下:此时时间片开销为t=17

当n=6时,时空图如下:此时时间片开销为t=19

实验程序结果如图:

由截图可知,实验结果与时空图的结果是一致的,说明实验程序的正确性。

八、实验结论、心得体会和改进建议:

1、通过本次实验,我自己动手实现了一个简单的动态加法乘法多功能流水线,增加了我对于流水线的工作流程的理解,也明白了通过指令的分解可以加快指令的运行速度并减少相关。

2、通过对流水线的模拟,不仅熟悉了流水线指令调度的过程,也训练了我多种数据结构的使用,以及将问题抽象的能力。在模拟程序的实现中,我采用了队列、类等等基本的结构,这次实验,让我理解了流水线的调度策略,同时实际的程序开发也提高了我的编程能力。

3、动态流水线与静态流水线的不同之处在于,当乘法器操作数队列为空时,加法器马上进入,而不用等到乘法操作执行完之后才进入。

电子科技大学计算机学院实验中心

实验代码如下:

/*******DynamicPipelineTest.java********/

package pipeline3;

import java.awt.Dimension;

import java.awt.EventQueue;

import java.awt.Font;

import java.awt.Graphics;

import java.util.LinkedList;

import java.util.Queue;

import javax.swing.JComponent;

import javax.swing.JFrame;

public class DynamicPipelineTest{

public static String printStr = "";

public static void main(String[] args) {

int n = 0;

String tempStr = "";

for (n=4;n<=20;n++){

Timer.timerCounter = 0; //计时器初始化为0

int op1 = 0,op2 = 0;

int sum = 0; //存放最后结果

int tempProduct = 0; //存放乘法的中间结果

Boolean end = false; //标志位,代表整个加法操作是否完成

OperaQueue mulQueueA = new OperaQueue(n); //创建长度为n的乘法操作数队列A

OperaQueue mulQueueB = new OperaQueue(n); //创建长度为n的乘法操作数队列B

OperaQueue addQueue = new OperaQueue(0); //创建长度为0的加法操作数队列

Addition multi = new Addition(3); //初始化创建一个空的乘法器执行队列长度为3

Addition addition = new Addition(4); //初始化创建一个空的加法器执行队列长度为4

/**当源队列里有一个或多个数据或者乘法器的执行队列不为空时执行乘法操作*/

while ((mulQueueA.opQueue.size() > 1)

| !multi.additionQueue.toString().equals("[0, 0, 0]")){

/*若乘法源操作数队列中有多于一个操作数*/

if (mulQueueA.opQueue.size() > 0){

op1 = mulQueueA.getOperationNum(); //从乘法操作数队列A中

取一个源操作数

op2 = mulQueueB.getOperationNum(); //从乘法操作数队列B中取一个源操作数

multi.addOperandQueue.offer(op1);

multi.addOperandQueue.offer(op2); //暂存入乘法器的操作数队列,以便后续进行乘法时提供操作数

multi.fetchOpNum(); //指令进入乘法流水线,压入乘法器执行队列

}

/*若乘法指令到达流水线最后一级,则求和并将结果压入源操作数队列*/

if(multi.additionQueue.peek() == 1){

tempProduct =

multi.getResult(multi.addOperandQueue.poll(),

multi.addOperandQueue.poll(),"MUL");

addQueue.pushOperationNum(tempProduct); //乘法操作得到的结果压入加法的操作数队列

}

Timer.timerCounter++;

//注意增加了条件:当乘法器的源操作数队列为空时开始执行加法操作!!

if (mulQueueA.opQueue.size() == 0){

/**当源队列里有多于一个数据或者加法器的执行队列不为空时执行加法操作*/

while ((addQueue.opQueue.size() > 1)

| !addition.additionQueue.toString().equals("[0, 0, 0, 0]")){

/*乘法队列中已无操作数,乘法器执行空操作*/

if (!multi.additionQueue.toString().equals("[0, 0, 0]")){

multi.executeNop();

}

/*若加法指令到达流水线最后一级,则求和并将结果压入源操作数队列*/

if(addition.additionQueue.peek() == 1){

sum =

addition.getResult(addition.addOperandQueue.poll(),

addition.addOperandQueue.poll(),"ADD");

addQueue.pushOperationNum(sum); //加法操作得到的结果压入操作数队列

}

/*若源操作数队列中有多于两个操作数*/

if (addQueue.opQueue.size() > 1){

电子科技大学计算机学院实验中心

op1 = addQueue.getOperationNum();

op2 = addQueue.getOperationNum(); //从操作数队列中取两个源操作数

addition.addOperandQueue.offer(op1);

addition.addOperandQueue.offer(op2); //暂存入加法器的操作数队列,以便后续进行加法操作

addition.fetchOpNum(); //指令进入加法流水线,压入加法器执行队列

}

else {

addition.executeNop(); // 若源操作数队列中的元素个数少于2个,执行空操作

}

/*若指令到达流水线最后一级,则求和并将结果压入源操作数队列*/

if(multi.additionQueue.peek() == 1){

tempProduct =

multi.getResult(multi.addOperandQueue.poll(),

multi.addOperandQueue.poll(),"MUL");

addQueue.pushOperationNum(tempProduct); //乘法操作得到的结果压入加法的操作数队列

}

if (addQueue.opQueue.size() == 1 &&

addition.additionQueue.toString().equals("[0, 0, 0, 0]")){

sum = addQueue.opQueue.poll();

end = true; // 流水线结束跳出外层循环

break;

}

Timer.timerCounter++;

}

}

if (end) break;

}

tempStr = "n = "+n+" timer = "+Timer.timerCounter+"

sum="+sum+"\n";

printStr = printStr + tempStr;

}

/*调用对话框*/

EventQueue.invokeLater(new Runnable() {

public void run() {

JFrame frame = new DialogFrame();

frame.setTitle("加法乘法动态多功能流水线调度");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

});

}

}

/**

* 操作数队列,长度初始化为n

*/

class OperaQueue{

Queue opQueue;

public OperaQueue(int queueLength){

opQueue = new LinkedList(); //初始化队列

for (int i=1;i

opQueue.offer(i); //操作数1~n依次入队,不采用随机数便于观察结果}

}

int getOperationNum(){

return opQueue.poll();

}

void pushOperationNum(int op){

opQueue.offer(op); //将相加后的操作数入队

}

}

/**

* 加法器类,也可作乘法器类

* 作加法器时执行队列长度为4

* 作乘法器时执行队列长度为3

*/

class Addition{

Queue additionQueue = new LinkedList();

Queue addOperandQueue = new LinkedList();

Addition(int len){

/*初始化加法器执行队列*/

while (len--!=0)

additionQueue.offer(0);

}

void fetchOpNum(){

/*执行队列下压一格,模拟具体的步骤*/

电子科技大学计算机学院实验中心

/*第一级取数操作*/

additionQueue.poll();

additionQueue.offer(1);

}

void executeNop(){

/*执行队列下压一格,模拟具体的步骤*/

/*空操作*/

additionQueue.poll();

additionQueue.offer(0);

}

int getResult(int opa,int opb,String opCode){ /*若操作码为ADD,将两个源操作数相加,返回它们的和*/

if (opCode.equals("ADD"))

return opa+opb;

/*若操作码为MUL,将两个源操作数相乘,返回它们的积*/

else if (opCode.equals("MUL"))

return opa*opb;

else

return -1;

}

}

/**

* 计时器timerCounter

*/

class Timer{

public static int timerCounter; //计时器timercounter }

/**

* 对话框

*/

class DialogFrame extends JFrame{

public DialogFrame(){

add(new DialogFrameComponent());

pack();

}

}

class DialogFrameComponent extends JComponent{ public static int MESSAGE_X = 40;

public static int MESSAGE_Y = -200;

private static final int DEFAULT_WIDTH = 400;

private static final int DEFAULT_HEIGHT = 350;

public void paintComponent(Graphics g){

String[] str = DynamicPipelineTest.printStr.split("\n");

for (int i = 0;i < str.length;i++){

g.setFont(new Font("Tahoma", Font.BOLD, 12));

g.drawString(str[i], MESSAGE_X, MESSAGE_Y);

MESSAGE_Y += 15;

}

}

public Dimension getPreferredSize(){return new

Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT);}

}

电子科技大学计算机学院实验中心

计算机体系结构实验报告二

实验二结构相关 一、实验目得: 通过本实验,加深对结构相关得理解,了解结构相关对CPU性能得影响。 二、实验内容: 1、用WinDLX模拟器运行程序structure_d、s 。 2、通过模拟,找出存在结构相关得指令对以及导致结构相关得部件。 3、记录由结构相关引起得暂停时钟周期数,计算暂停时钟周期数占总执行 周期数得百分比。 4、论述结构相关对CPU性能得影响,讨论解决结构相关得方法。 三、实验程序structure_d、s LHI R2, (A>>16)&0xFFFF 数据相关 ADDUI R2, R2, A&0xFFFF LHI R3, (B>>16)&0xFFFF ADDUI R3, R3, B&0xFFFF ADDU R4, R0, R3 loop: LD F0, 0(R2) LD F4, 0(R3) ADDD F0, F0, F4 ;浮点运算,两个周期,结构相关 ADDD F2, F0, F2 ; < A stall is found (an example of how to answer your questions) ADDI R2, R2, #8 ADDI R3, R3, #8 SUB R5, R4, R2 BNEZ R5, loop ;条件跳转 TRAP #0 ;; Exit < this is a ment !! A: 、double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 B: 、double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 四、实验过程 打开软件,load structure_d、s文件,进行单步运行。经过分析,此程序一 次循环中共有五次结构相关。(Rstall 数据相关Stall 结构相关) 1)第一个结构相关:addd f2,,f0,f2 由于前面得数据相关,导致上一条指令addd f0,f0,f4暂停在ID阶段,所以下一条指令addd f2,,f0,f2发生结构相关,导致相关得部件:译码部件。

北邮高级计算机系统结构实验二三四五

实验二指令流水线相关性分析 ·实验目的 通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。 ·实验原理: 指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。·实验步骤 一.使用WinDLX模拟器,对做如下分析: (1)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。 (2)考察增加浮点运算部件对性能的影响。 (3)考察增加forward部件对性能的影响。 (4)观察转移指令在转移成功和转移不成功时候的流水线开销。 ·实验过程 一.使用WinDLX模拟器,对做如下分析: } 浮点加、乘、除部件都设置为1,浮点数运算部件的延时都设置为4,如图1: 图1 初始设置 将和加载至WinDLX中,如图2示。

图2 加载程序 1.观察程序中出现的数据/控制/结构相关;指出程序中出现上述现象的指令组合。 1)数据相关 点击F7,使程序单步执行,当出现R-Stall时停止,运行过程中出现下图3所示,输入整数6。 图3 输入整数6 @ 打开Clock Diagram,可以清楚的看到指令执行的流水线如图4所示。 图4 指令流水线 双击第一次出现R-Stall的指令行,如图5所示。

图5 指令详细信息 对以上出现的情况分析如下: 程序发生了数据相关,R-Stall(R-暂停)表示引起暂停的原因是RAW。 lbu r3,0×0(r2) 要在WB周期写回r3中的数据;而下一条指令 & seqi r5,r3,0×a 要在intEX周期中读取r3中的数据。 上述过程发生了WR冲突,即写读相关。为了避免此类冲突, seq r5,r4,0×a的intEX指令延迟了一个周期进行。 由此,相关指令为: 2)控制相关 由图6可以看出,在第4时钟周期:第一条指令处于MEM段,第二条命令处于intEX段,第三条指令出于aborted状态,第四条命令处于IF段。 图 6 指令流水线 }

生产线平衡实验报告

安徽工业大学 生产线平衡实验报告 专业信息管理与信息系统 班级息111 姓名史家成 学号 119094276 日期 2014-4-23

一、概述 1. 实验目的及要求 将所学的生产运作与管理理论综合应用到实际生产系统的规划和运行管理中去,使学生在实训中理解和巩固所学理论知识,培养其在生产线运行调度过程中发现、分析和解决问题的能力,提高学生的专业素养和综合素质。 2. 实验内容 在生产系统实验室的地面生产线上进行三相异步电动机的装配。 二、实验内容完成情况 1.基于三相异步电动机拆装的生产实验 (1)三相异步电动机拆装:简介所装配三相异步电动机的各零部件的名称、拆装方法及注意事项等。 a、按时间过程拆:分别是风扇罩、风扇、前端盖、后端盖和转子、接线盒。 B、按时间过程装:分别是接线盒、后端盖和转子、前端盖、风扇和风扇罩。 (2)工作研究部分 流程程序图 (3)生产过程实训部分 实训内容及记录数据 简介本部分的实训内容及方式(按照车间管理的模式,将全部实训学生分为若干班组,各班组自行商定其作业安排、车间派工、实施方案和具体生产管理过程,然后轮班实训)1)个人方案介绍 简介本次设计的方案,包括小组成员岗位设置、岗位派工、装配流程、工序安排、物流路线等(可附图、表补充说明)

将学生分为车间主任,搬运工,操作工,计时人员;商议作业顺序及作业安排; 各工种就位;电动机组装,检验组装的成品,完成该次试验。 岗位设置及派工:我小组人员,具体分配为一车间主任、四个操作工,六个搬运工,四个计时人员 装配流程及工序安排:组装前后端盖→组装风扇盖→组装接线盒 2)初次方案设计及实施情况 说明本组初次实施的方案的具体内容及其设计依据→绘出装配流程图→完成数据记录表→根据记录数据总结本次方案设计及实施的质量;总结说明本次方案的优缺点由于是初次进行实践,我们并不熟悉每位队员对拆装电动机的熟悉程度,在有些步骤上浪费了一点时间,但我们进行了调整,最终顺利完成了。 3)第二次方案设计同2)一样,绘出装配流程图 将学生分为车间主任,搬运工,操作工,计时人员;商议作业顺序 及作业安排;各工种就位;电动机组装,检验组装的成品,完成该次试验。 岗位设置及派工:我小组人员,具体分配为一车间主任、四个操作工,六个搬运工,四个计时人员 装配流程及工序安排:组装前端盖→组装后端盖→组装风扇罩→组装接 线盒 Ⅲ 小结 对比总结两次方案的优缺点,针对出现的问题给出进一步的优化设计建议第一次只是盲目的进行生产,第二次是在带一次的基础上进行优化的。第 二次各工种工作时间更为平均 三、思考题 1.能否应用工序同期化方法进行装配时间平衡?如有,写出具体的过程,如不可行,为什么? 答:可以,可以同时进行前端盖和后端盖的装配,最后装配风扇罩,可将前后端分为两道工序

计算机组织与体系结构实验报告

《计算机组织与体系结构》 实验报告 学号: XXX 姓名:XXX 班级:XXX 指导教师:XXX 时间: 2013年01月 中国矿业大学计算机学院

目录 一基本运算器实验 (2) 1、实验目的 (2) 2、实验设备 (2) 3、实验原理 (2) 4、实验步骤 (3) 5、实验结果 (5) 5、实验体会 (5) 二微程序控制实验 (6) 1、实验目的 (6) 2、实验设备 (6) 3、实验原理 (6) 4、实验步骤 (12) 5、实验体会 (13) 三CPU与简单模型机设计实验 (13) 1、实验目的 (13) 2、实验设备 (13) 3、实验原理 (13) 4、实验步骤 (18) 5、实验流图 (21) 6、实验体会 (25)

实验一基本运算器实验 1. 实验目的 (1) 了解运算器的组成结构。 (2) 掌握运算器的工作原理。 2. 实验设备 PC机一台,TD-CMA实验系统一套。 3.实验原理 本实验的原理如下图所示: 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种运算由控制信号S3…S0和CN来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU的输出。如果是影响进位的运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。ALU中所有模块集成在一片FPGA中。 逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-1-2所示。图中显示的是一个4X4的矩阵(系统中是一个8X8的矩阵)。每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即: (1) 对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连,而没有同任何输入相连的则输出连接0。 (2) 对于循环右移功能,右移对角线同互补的左移对角线一起激活。例如,在4位矩阵中使用‘右1’和‘左3’对角线来实现右循环1位。 (3) 对于未连接的输出位,移位时使用符号扩展或是0填充,具体由相应的指令控制。使用另外的逻辑进行移位总量译码和符号判别。

自动化生产线实训总结

自动化生产线实训总结 百度最近发表了一篇名为《自动化生产线实训总结》的范文,觉得应该跟大家分享,这里给大家转摘到百度。 篇一:自动化生产线实习总结实训小结时间过的真快,转眼间两周的实训时间就过了,在过去的两周内我们小组在自动化生产线实验室进行了为期两周的实训练习。 通过这段时间的切身实践,我们收获了很多,一方面学习到了许多以前没学过的专业知识与知识的应用,另一方面还提高了自己动手做项目的能力;还令我学会了一些如何在社会中为人处事的道理。 本次实训的指导老师是何老师和马老师。 在实训拉开帷幕时,指导老师马老师首先给我们讲解了一下本次实训的目的、要求、主要内容及任务安排。 从他的讲解我们了解到本次实训分两个阶段进行,阶段一是在第一周做好自动化生产线的前三个单元站——即供料单元、搬运单元和操作手单元,阶段二是在第二周做好自动化生产线的后三个单元站——即检测单元、加工单元和提取安装单元,并完成实训报告和实训小结。 实训开始后,我们按照指导老师的要求,每至人组成一个小组,根据大家的工作习惯和相互了解情况,我们团队共有位成员组成(钟**、陈**、陈**、王**、林**和我),经过推举我作为小组组长。 范文写作组成团队后,为了便于开展实训工作,同时也能够使团队成员确定个人实训任务,根据指导老师给定的要求我们的主要任务

就是做好自动化生产线个单元站的编程调试工作,并写出此次实训各站的控制要求和控制工艺流程,以及画好各站的机械简图、电气原理图、安装接线图和详细程序。 因此,我根据整个实训的安排进行了详细的任务分工,使团队成员在每个阶段工作时都能够各司其职,才尽其用。 经过讨论我安排钟**、陈**、王**三人负责程序的设计编写;林**和我负责程序的调试工作;陈**则负责文本的书写。 整个实训过程中所有队员都应该参与到程序的设计当中随时做好对程序更好的解决方案。 本次实训,是对我们能力的进一步锻炼,也是一种考验。 从中获得的诸多收获,也是很可贵的,是非常有意义的。 不过在进行当中困难是随处可见的。 就像刚开始做第一个单元的时候,最全面的范文写作网站我们在编写好程序准备开始进行调试的时候。 由于技术原因,电脑和一直无法连接,在经过多种途径都无法解决问题的时候我们求助于指导老师马老师,原来调节电脑的搜索波特率的大小才使得电脑能够正常连接到。 还有在供料单元的调试过程中,可能是由于人为的原因,摆动气缸在摆动到吸取工件位置的时候,无法使真空吸盘吸取工件,检查其原因,发现原来是摆臂和工件位置没有准确对应。 因此,在不得已的情况下我们调整了摆臂和工件的位置,这才使

生产系统仿真实验报告

实验一:工艺原则布置 实验项目名称:工艺原则布置( ) 实验项目性质:综合性实验 所属课程名称:《设施规划与物流分析》 实验计划学时:学时 一、实验目的 通过本实验,掌握四种布置设计方法中最常用的工艺原则布置。 二、实验内容和要求 对于常用的工艺原则布置设计,最常用的设计方法为新建法()和改建法(),最常用的工具是从至表()。 本试验要求学生在熟练掌握工艺原则布置方法的基础上,使用物流仿真软件实现布置设计。 要求: . 认真学习教材第章第节 . 复习运筹学的二次分配问题 . 预先查阅遗传算法相关基本概念 三、实验主要仪器设备和材料 电脑,软件 四、实验方法、步骤及结果测试 见附录一 五、实验报告要求 实验报告要求:任选思考题中的一题 . 教材方法求解,确定你的最佳布置并计算物流量大小。 . 进行建模,可以仿照附录的步骤进行,相关的图、表、文字说明全过程体现在试验报告内。 . 请考虑并回答问题:如果只知道搬运量的从至表和作业单位设施的面积,以及总面积大小,具体位置不能确定,这时我们一般采用的是方法来进行布置设计,如何在实现?不需要你在里面建模,但是希望你考虑实现的方法和一些设想,请把这些思考内容体现在你的实验报告最后,这是体现综合性和设计性的关键点,也是决定你的成绩的评判标准之一。 这里我们统一:假设有台设备要布置到个工作地 .作业单位到作业单位之间如果有物料交换,则二者间的搬运量为。(,…) (,…) .工作地到工作地之间搬运距离为。(,…) (,…) .总的物流量:,而工艺原则布置优劣评判的其中一个标准是。 问题回答: 、通过作业单位搬运量从至表和作业单位距离从至表运行程序得出物流相关表。

计算机系统结构实验报告

计算机系统结构实验报告 一.流水线中的相关 实验目的: 1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点; 2. 加深对计算机流水线基本概念的理解; 3. 进一步了解DLX基本流水线各段的功能以及基本操作; 4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响; 5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。 实验平台: WinDLX模拟器 实验内容和步骤: 1.用WinDLX模拟器执行下列三个程序: 求阶乘程序fact.s 求最大公倍数程序gcm.s 求素数程序prim.s 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察 CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。 2. 用WinDLX运行程序structure_d.s,通过模拟找出存在资源相关的指令对以及导致资源相 关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的 百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。 3. 在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的 总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。 在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。重复上述3中的工作,并计算采用定向技术后性能提高的倍数。 1. 求阶乘程序 用WinDLX模拟器执行求阶乘程序fact.s。这个程序说明浮点指令的使用。该程序从标准 输入读入一个整数,求其阶乘,然后将结果输出。 该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。 实验结果: 在载入fact.s和input.s之后,不设置任何断点运行。 a.不采用重新定向技术,我们得到的结果

北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器

北京邮电大学 实验报告 课程名称计算机系统结构 计算机学院03班 王陈(11)

目录 实验一WINDLX模拟器安装及使用......................................... 错误!未定义书签。 ·实验准备................................................................................ 错误!未定义书签。 ·实验环境................................................................................ 错误!未定义书签。 ·实验步骤................................................................................ 错误!未定义书签。 ·实验内容及要求.................................................................... 错误!未定义书签。 ·实验过程............................................................................. 错误!未定义书签。 ·实验总结............................................................................. 错误!未定义书签。实验二指令流水线相关性分析 ............................................... 错误!未定义书签。 ·实验目的............................................................................. 错误!未定义书签。 ·实验环境................................................................................ 错误!未定义书签。 ·实验步骤................................................................................ 错误!未定义书签。 ·实验过程............................................................................. 错误!未定义书签。 ·实验总结............................................................................. 错误!未定义书签。实验三DLX处理器程序设计 .................................................... 错误!未定义书签。 ·实验目的............................................................................. 错误!未定义书签。 ·实验环境................................................................................ 错误!未定义书签。 ·实验步骤................................................................................ 错误!未定义书签。 ·实验过程............................................................................. 错误!未定义书签。 A.向量加法代码及性能分析 ................................................... 错误!未定义书签。 B.双精度浮点加法求和代码及结果分析 .............................. 错误!未定义书签。 ·实验总结............................................................................. 错误!未定义书签。实验四代码优化 ....................................................................... 错误!未定义书签。 ·实验目的............................................................................. 错误!未定义书签。 ·实验环境................................................................................ 错误!未定义书签。 ·实验原理................................................................................ 错误!未定义书签。 ·实验步骤................................................................................ 错误!未定义书签。 ·实验过程............................................................................. 错误!未定义书签。 ·实验总结+实习体会........................................................... 错误!未定义书签。实验五循环展开 ....................................................................... 错误!未定义书签。 ·实验目的............................................................................. 错误!未定义书签。 ·实验环境................................................................................ 错误!未定义书签。 ·实验原理................................................................................ 错误!未定义书签。 ·实验步骤................................................................................ 错误!未定义书签。 ·实验过程............................................................................. 错误!未定义书签。 矩阵乘程序代码清单及注释说明........................................... 错误!未定义书签。 相关性分析结果........................................................................... 错误!未定义书签。 增加浮点运算部件对性能的影响........................................... 错误!未定义书签。 增加forward部件对性能的影响 ............................................ 错误!未定义书签。 转移指令在转移成功和转移不成功时候的流水线开销 .. 错误!未定义书签。 ·实验总结+实习体会+课程建议......................................... 错误!未定义书签。

计算机系统结构实验指导书-14

北京邮电大学 计算机学院 计算机系统结构实验指导书 王春露邝坚编著 2007.3 – 2013.4

目录z计算机系统结构实验简介 z DLX处理器简介 1. 实验一WINDLX模拟器安装及使用 2. 实验二指令流水线相关性分析 3. 实验三DLX处理器程序设计 4. 实验四代码优化 5. 实验五循环展开(选作)

计算机系统结构实验简介 DLX是一个虚拟处理器。该处理器是加州大学伯克利分校计算机系JohnL .H ennessy教授和斯坦福大学计算机系David A. Patterson教授在其《计算机体系结构:一种定量的方法》一书中提出的。该处理器反映了新一代处理器的特点。通过了解DLX处理器的结构和工作原理,并利用DLX模拟器进行实验,可以帮助学生综合地了解和运用有关处理器指令系统的设计、流水线的设计与实现等方面的知识,有助于计算机系统结构课程内容的理解。 DLX处理器简介 第一节 DLX基本结构 DLX是一种典型的Load/Store型指令集结构。它不仅体现了当今多种机器的指令集结构的共同特点,而且它还体现出未来一些机器的指令集结构的特点。这些机器的指令集结构设计思想都和DLX指令集结构的设计思想十分相似,它们都强调: (1) 具有一套简单的Load/Store指令集; (2) 注重指令流水效率; (3) 简化指令的译码; (4) 高效支持编译器。 DLX是一种易于学习和研究的处理器结构模型。这种类型的机器正在日趋流行,而且其结构非常易于理解。 1.DLX中的寄存器 DLX中有32个通用寄存器(GPRs),分别将其命名为R0,R1…R31。每个通用寄存器长度为32位。 另外,DLX中有32个浮点寄存器(FPRs),分别将其命名为F0,F1…F31。每个浮点寄存器长度为32位。这些浮点寄存器可以用来保存32位的单精度浮点数,或者通过相邻两个浮点寄存器奇偶对FiFi+1(i=0,2,4…,30)来保存双精度浮点数,这种组合而成的64位双精度浮点寄存器在DLX中分别被命名为F0,F2…F28,F30. 2. DLX数据类型 DLX提供了多种长度的整型数据和浮点数据。对整型数据而言,有8位,16位,32位多种长度;对浮点而言,有32位单精度浮点数和64位双精度浮点数。浮点数据表示采用的是IEEE754标准。DLX操作都是对32位整型数据及32或64位浮点数据进行的。 3.DLX的寻址方式和数据传送 DLX提供了寄存器寻址,立即寻址,偏移寻址和寄存器间接寻址四种寻址方式。寄存器寻址字段的大小为5位,用来标识32个通用寄存器或浮点寄存器。

管理决策模拟实验报告

本科学生综合性实验报告 项目组长****** 学号******* 成员 专业班级 实验项目名称企业经营决策仿真 指导教师及职称****** 开课学期****至****学年第** 学期 上课时间****年*月**日

学生实验报告 (经管类专业用) 一、实验目的及要求: 1、目的 通过多轮仿真对抗练习,让学生熟悉系统设定的竞争规则和企业组成原理,熟练使用模块进行决策变量设计和优化,训练学生的决策分析能力,帮助开发一定的经营管理能力。考核学生掌握本门实践课程的情况,发现学生学习中存在的问题和障碍,以利于改进实验课教学。 2、内容及要求 熟练掌握决策分析程序和优化技术。 1、学生1人组成一个小组,模拟一个公司的运营,各小组进行4个周期的管理决策与公司运营的模拟。利用《现代企业经营决策仿真系统—千姿版》软件平台,连续经过4轮对抗:在查看决算企业报告和把握周期形势的基础上,判断竞争对手策略,依据一定的目标,输入本轮的指标变量,利用预算仿真工具优化指标,力图实现目标,争取竞争排名中位置前移。提交数据等到所有小组提交后,计算仿真周期出本轮对抗结果。 依次进行直至第4轮结束。查看最后排名和得分。 2、在4轮对抗中,要求重点分析预决算的各类表格,寻求绩效改进的解决办法并反映到指标的设计上。 3、撰写管理决策模拟工作底稿,提交实验报告 二、仪器用具:

三、实验方法与步骤: 一、利用《现代企业经营决策仿真系统—千姿版》软件平台,学生1人组成一个小组,模拟一个公司的运营,各小组间进行4个周期的管理决策与公司运营的模拟。下面以第1周期为例: ①查阅每轮的周期形势报告和上轮对抗模拟结果的企业报告,收集周期形势报告(一个表)、周期企业成果数据表(七个表) ②判读对手的策略,明确本轮目标:产量、利润、市场占有率、销售额的数值; ③从价格,广告等市场营销策略指标的设计入手,依次决定产量、产能、用工人数、原材料采购及科研开发、财务等指标,输入决策表格; ④利用预算仿真工具,查看预算仿真表,计算边际成本、平均成本,利用盈亏平衡分析工具计算保本点销量。从增利减亏或提高市场份额及竞争力等方面,结合对手策略,密切监视产品销售和库存、原材料库存、产能利用率、债务变动、现金指标,优化决策变量,重新填入决策表格,收集相应的预算企业方案成果数据表(七个表)。重复这一步骤至不再修改决策指标为止。 ⑤提交决策数据,并记录、收集决策表格(一个表); ⑥报告老师,等全部小组提交数据后,计算仿真周期出对抗结果。 依次展开第二至四期对抗。 最后计算机自动生成演练结果(经营管理成果),并提出各小组参考得分,由老师综合各方面因素给出各小组及每位学生的最终得分。 四、实验结果与数据处理(说明:四轮中每轮必做的作业): 第一周期报告 (一)、第1周期工作底稿 1、图表输出 A. 第1周期市场形势报告:

计算机系统结构实验1预习报告

计算机系统结构实验 实验1:MIPS指令系统和MIPS体系结构 (预习报告) 姓名: 学号: 班级:

大连理工大学实验预习报告 学院:______________________专业:_______________________班级:_____________________ 姓名:______________________学号:_______________________ 实验时间:__________________实验室:__________________实验台:__________________ 指导老师签字:_________________________________________成绩:____________________ 实验目的: 了解熟悉MIPSsim模拟器; 熟悉MIPS指令系统及其特点; 熟悉MIPS体系结构 实验平台: 指令级和流水线操作级模拟器MIPSsim 资料准备: MIPS64指令系统介绍 1.MIPS的寄存器 32个64位通用寄存器(GPRs整数寄存器):R0-R31。R0的值永远是0。 32个64位浮点数寄存器FPRs:F0-F31。它们可以存放32个单精度浮点数(32位),也可以存放32个双精度浮点数(64位)。 MIPS提供了单精度和双精度操作的指令,而且还提供了在FPRs和GPRs之间传送数据的指令。2.MIPS的数据表示

整数:字节(8位)、半字(16位)、字(32位)和双字(64位)。 浮点数:单精度浮点数(32位)和双精度浮点数(64位)。 MIPS64的操作是针对64位整数以及32位或64位浮点数进行的。字节、半字或字在装入64位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们按照64位整数的方式进行运算。 3.MIPS的数据寻址方式 MIPS的数据寻址方式只有立即数寻址和偏移量寻址两种,立即数字段和偏移量字段都是16位。 寄存器间接寻址是通过把0作为偏移量来实现的,16位绝对寻址是通过把R0作为基址寄存器来完成的。 MIPS的存储器是按字节寻址的,地址是64位。由于MIPS是load-store结构,寄存器和存储器之间的数据传送都是通过load指令和store指令来完成的。所有存储器访问都必须边界对齐。 4.MIPS的指令格式 指令格式简单,其中操作码6位。按不同类型的指令设置不同的格式,共有3种格式,分别对应I指令、R指令和J指令。在这3种格式中,同名字段的位置固定不变。 I类指令 包括所有的load和store指令、立即数指令、分支指令、寄存器跳转指令、寄存器链接跳转指令。其中立即数字段位16位,用于提供立即数或偏移量。 1)load指令 2)store指令 3)立即数指令 4)分支指令 5)寄存器跳转、寄存器跳转并链接

全自动立体仓库实验报告

实验报告 课程名称:全自动立体仓库实验 课程代码: 6003209 学院(直属系) :建设与管理工程学院 年级/专业/班: 2012级工业工程 学生姓名:杨韬 学号: 312012********* 指导教师:张跃刚贾艳 开题时间: 2015 年 6 月 10 日完成时间: 2015 年 6 月 25 日

目录 1.实验目的和要求…………………………………………………………… 2.实验设备与环境……………………………………………………………… 2.1了解自动化立体仓库系统的总体构成及运作…………………………… 2.2自动化立体仓库的出、入库操作及移库操作…………………………… 2.3绘制自动化立体仓库平面布置图………………………………………… 3.实验内容及步骤………………………………………………………… 3.1实验内容 3.2实验步骤 4.实验结果及分析…………………………………………………………… 4.1绘制生产物流系统的流程程序图………………………………………… 4.2测试记录各工位时间……………………………………………………… 4.3绘制生产线山积图(平衡图) ………………………………………… 4.4借助监控系统监控与记录生产过程,采集生产过程视频……………… 4.5借助达宝易软件对生产过程各工位进行动作时间分析………………… 5.实验总结与感想…………………………………………………………… 参考文献………………………………………………………………………

1、实验目的和要求 通过实验项目培养学生理论与实践相结合的能力。通过实验应达到的基本要求和目的如下: (1)使学生直观地了解和掌握仓储自动化系统的实际运作情况; (2)熟悉自动化仓库系统的设备构成、典型设备和堆垛机; (3)熟悉产品的结构与组成,掌握产品的加工装配工艺过程,进行方法研究,建立标准的作业方法。 2、实验设备与环境 2.1了解自动化立体仓库系统的总体构成及运作 自动化立体仓库系统总体构成包括土建工程及辅助设施、高层货架、自动输送系统、自动存取系统、自动分拣系统、自动监控系统、仓库管理信息系统。 2.2自动化立体仓库的出、入库操作及移库操作 入库操作 入库管理建立与ERP采购计划和到货计划的接口,从物料入库到入库检验和上架进行严格的流程控制。采用条码技术加快入库操作,并可根据既定的规则对物料的存放地点(库位)进行指定,做到物料的有序存放。并实现准确的批次管理。 图8 入库管理模块

计算机体系结构实验报告二

实验二结构相关 一、实验目的: 通过本实验,加深对结构相关的理解,了解结构相关对CPU性能的影响。 二、实验内容: 1. 用WinDLX模拟器运行程序structure_d.s 。 2. 通过模拟,找出存在结构相关的指令对以及导致结构相关的部件。 3. 记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行 周期数的百分比。 4. 论述结构相关对CPU性能的影响,讨论解决结构相关的方法。 三、实验程序structure_d.s LHI R2, (A>>16)&0xFFFF 数据相关 ADDUI R2, R2, A&0xFFFF LHI R3, (B>>16)&0xFFFF ADDUI R3, R3, B&0xFFFF ADDU R4, R0, R3 loop: LD F0, 0(R2) LD F4, 0(R3) ADDD F0, F0, F4 ;浮点运算,两个周期,结构相关 ADDD F2, F0, F2 ; <- A stall is found (an example of how to answer your questions) ADDI R2, R2, #8 ADDI R3, R3, #8 SUB R5, R4, R2 BNEZ R5, loop ;条件跳转 TRAP #0 ;; Exit <- this is a comment !! A: .double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 B: .double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

四、实验过程 打开软件,load structure_d.s文件,进行单步运行。经过分析,此程序一 次循环中共有五次结构相关。(R-stall 数据相关Stall- 结构相关) 1)第一个结构相关:addd f2,,f0,f2 由于前面的数据相关,导致上一条指令addd f0,f0,f4暂停在ID阶段,所以下一条指令addd f2,,f0,f2发生结构相关,导致相关的部件:译码部件。 2)第二个结构相关:ADDI R2, R2, #8,与第一个结构相关类似。由于数据相关, 上一条指令暂停在ID阶段,所以导致下一条指令发生结构相关。

离解平衡实验报告及图片

[ 西安交通大学实验报告 课 程:无机化学实验 实验名称: 解离平衡 第 1 页共 7 页 一、实验目的 1.加深理解铜离子效应、盐类水解平衡及其移动等基本原理和规律; 2.学习缓冲溶液的配置方法,并试验器缓冲作用; 3.学会弱酸或弱碱解离平衡常数的测量方法; 4.学习使PH 计测定溶液PH 的方法; 二、实验原理 弱电解质在水中存在解离平衡,如醋酸HAc 为弱电解质,其水溶液存在下列平衡: HAc = H + + Ac 起始浓度(mol/L) c 0 0 平衡浓度(mol/L) c-c α c α c α α为解离度,则HAc 的解离平衡常数K 为: K a θ =])[]([]) [(][]c ][[2- ++ +-+≈-=Ac H H C H HAc A H 若已知弱电解质的初始浓度并测量出解离平衡时 氢离子浓度,可计算出弱电解质的解离平衡常数。 弱电解质溶液中加入含有相同离子的另一强电解质时,弱电解质的解离程度降低的效应称为同离子效应。 盐类水解可改变溶液的pH 值,因为水解时可释放出H + 和OH - 生成弱电解质。如BICl 3 固体溶于水时就能产生BiOCl 白色沉淀,同时溶液酸性增强。 BiCl 3 + H 2O 2HCl + BiOCl 缓冲溶液指的是弱酸(碱)及其盐的混合溶液,当将其稀释或其中加入少量的酸或碱时,溶液的pH 值改变或减少。缓冲溶液的pH 值(以HAc 和NaAc 为例)可用下式计算: Ph= K a θ - --lg ) c(Ac c(HAc) lg - K )()(-=θa p c c 盐酸 c(酸)、c (盐)、c (HAc )、c(Ac -- )均指平衡时的物质的浓度 三、实验用品 仪器:pH 计及pH 电极,量筒(25mL ,6个),点滴板,烧杯(50mL ,4个),试管, 酸式滴定管(2个),碎滤纸,pH 试纸,pH 为的标准缓冲溶液,酒精灯,试管夹, 离解平衡] | AC41

大连理工大学计算机系统结构实验-实验四

大连理工大学实验报告计算机系统结构实验 实验四Cache性能分析 学院(系):电子信息与电气工程学部专业:计算机科学与技术 学生姓名: 班级: 学号: 大连理工大学 Dalian University of Technology

实验四Cache性能分析 一、实验目的和要求 (1)加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。 (2)掌握Cache容量、相联度、块大小对Cache性能的影响。 (3)掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。 (4)理解LRU与随机法的基本思想以及它们对Cache性能的影响。 二、实验步骤与操作方法 1、Cache容量对不命中率的影响。 (1)启动MyCache。 (2)用鼠标单击“复位”按钮,把各参数设置为默认值。 (3)选择一个地址流文件。方法:选择“访问地址”—>“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在文件夹下的“地址流”文件夹中选取。 (4)选择不同的Cache容量,包括2KB、4KB、8KB、16KB、32KB、64KB、128KB和256KB。分别执行模拟器(单击“执行到底”按钮即可执行),然后在下表中记录各种情况下的不命中率。 表不同容量下Cache的不命中率 (5)以容量为横坐标,画出不命中率随Cache容量变化而变化的曲线,并指明地址流文件名。

(6)根据该模拟结果,你能得出什么结论? 答:随着Cache容量的增大,不命中率降低,但是降低的幅度由较大差别,Cache容 量足够大以后,不命中率降到一定程度以后,降低效果不再明显。 2.相联度对不命中率的影响 (1)用鼠标单击“复位”按钮,把各参数设置为默认值。此时的Cache容量为64KB。 (2)选择一个地址流文件。 (3)选择不同的Cache相联度,包括2路、4路、8路、16路和32路。分别执行模拟器,然后在下表中记录各种情况下的不命中率。 表当容量为64KB时,不同相联度下Cache的不命中率 (4)把Cache的容量设置为256KB,重复(3)的工作,并填写下表。 表当容量为256KB时,不同相联度下Cache的不命中率 (5)以相联度为横坐标,画出在64KB和256KB的情况下不命中率随Cache相联度变化而变化的曲线,并指明地址流文件名。

计算机系统结构实验教程

实验一流水线及流水线中的冲突 实验目的 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(在模拟器所在文 件夹下的“样例程序”文件夹中); (2)关闭定向功能。这是通过在“配置”菜单中去选“定向”(即使得该项前面没有“√” 号)来实现的; (3)用单步执行一周期的方式(“执行”菜单中,或用F7)执行该程序,观察每一周 期中,各段流水寄存器内容的变化、指令的执行情况(代码窗口)以及时钟周期 图; (4)当执行到第10个时钟周期时,各段分别正在处理的指令是: IF: ID:

相关文档
最新文档