文档库 最新最全的文档下载
当前位置:文档库 › 计算机系统结构实验一流水线指令调度

计算机系统结构实验一流水线指令调度

计算机系统结构实验一流水线指令调度
计算机系统结构实验一流水线指令调度

计算机专业类课程

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

学院:计算机科学与工程

专业:计算机科学与技术

学生姓名:林怡

学号:2012060020023

指导教师:叶娅兰

日期:2015年 5月 5日

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

电 子 科 技 大 学

实 验 报 告

实验一

一、实验名称:流水线指令调度 二、实验学时:4 三、实验内容和目的: 实验目的:

1. 通过本实验,理解指令调度的方法。

2.掌握使用VC 开发平台模拟处理机内部指令流调度的编程策略。 实验内容:

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

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

这里我们使用最简单的累加操作∑=n

1i Ai 。 n 的数值可以变化,通过变换n 的值用同一程

序进行多次模拟。

给定流水线: 流水线分四个步骤,每个步骤的执行时间均为一个单位时间。

(二)对任务进行分解

任务分解的目的是为了减少相关。例如n =4时,任务分解为 A1+A2、A3+A4、 A1+A2+A3+A4 三个加法操作。

如果n 的大小是未知的,任务该怎样分解呢?换而言之,在程序模拟中,有没有一种通行的分解处理方式,可以实现对任意数目的源数据的累加的分解? (三)任务分解程序模拟的思路

首先,Ai 是对称的,Ai 和Aj 都是一个源操作,任意更换其相对位置,计算的累加和的结果是不变的。每次的加法操作能执行的必要条件是存在两个源数据,因此我

1 2 3 4 X Y

们可以把所有的源数据放入一个队列中,只要该队列中有两个源,那么就执行加法,加法计算的结果是下一次计算的源数据,我们把它再放回源数据队列,直到对列中只剩一个数据、同时加法流水线中没有执行加法操作时,整个累加过程完成。

(四)加法流水线的设计

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

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

(五)程序设计

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

队列用于存放源数据,一开始将n个源数据A1-An放入。

启动定时器,每一个时间片从队列中取出两个源数据,送入加法器(可以通过调用加法器中接口函数,把源数据作为参数传入)。

构造加法器类,可以考虑用一个长度对4的执行队列来模拟4个步骤,每个时间片将队列的数据依次下压一格,队列尾的数据进行加法计算并将结果压入源数据队列。

用一个记数值表示时间开销,每个时间片对该记数值加1。

当源队列只剩一个数据且加法器的执行队列为空时,整个程序结束,记数器的值就是任务执行的总体时间花费。

(五)多次模拟

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

四、实验原理:

程序设计及数据结构:

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

①PipeAdditionTest 公共类,测试程序,每一个n的循环,将计时器清零并初始化长度为n的源操作数队列,当源操作数队列有多余一个操作数或者加法器的执行队列不为空的时候持续调用加法器类执行加法操作,在程序结束时输出n以及计时器timercounter的值;

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

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

③Addition 加法器类,包含一个加法执行队列additionQueue,一个用于暂存操作数

的队列addOperandQueue。构造函数Addition(int len)用于初始化加法器执行队列,函数fetchOpNum在每一个时间片从源操作数队列中取出操作数,函数getAdditionResult()将两个源操作数相加并返回它们的和,以及一个空操作executeNop()用于模拟加法器四级流水线。

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

⑤DialogFrame 对话框相关。

⑥DialogFrameComponent 对话框相关。

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

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

六、实验步骤:

程序流程图:

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

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

t=9

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

t=12

t=13

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

实验程序结果如图:

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

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

1、通过本次实验,我自己动手实现了一个简单的加法流水线,增加了我对于流水线的

工作流程的理解,也明白了通过指令的分解可以加快指令的运行速度并减少相

关。

2、通过对流水线的模拟,不仅熟悉了流水线指令调度的过程,也训练了我多种数据结

构的使用,以及将问题抽象的能力。在模拟程序的实现中,我采用了队列、类等

等基本的结构,这次实验,让我理解了流水线的调度策略,同时实际的程序开发

也提高了我的编程能力。

实验代码如下:

/*******PipeAdditionTest.java********/

package Pipeline;

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 PipelineAdditionTest{

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;

OperaQueue operaQueue = new OperaQueue(n); //创建长度为n的操作数队列

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

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

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

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

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

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

sum =

addition.getAddtionResult(addition.addOperandQueue.poll(),

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

addition.addOperandQueue.poll());

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

System.out.println("peek后

operaQueue.size()="+operaQueue.opQueue.size());

}

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

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

System.out.println("before

operaQueue.size()="+operaQueue.opQueue.size());

op1 = operaQueue.getOperationNum();

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

addition.addOperandQueue.offer(op1);

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

System.out.println("取数后

operaQueue.size()="+operaQueue.opQueue.size());

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

}

else {

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

}

System.out.println("执行后

addQueue="+addition.additionQueue.toString());

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

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

sum = operaQueue.opQueue.poll();

break;

}

Timer.timerCounter++;

System.out.println(" t"+Timer.timerCounter+"\n");

}

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); //将相加后的操作数入队}

}

/**

* 加法器类,分为四个步骤

*/

class Addition{

Queue additionQueue = new LinkedList();

Queue addOperandQueue = new LinkedList();

Addition(int len){

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

while (len--!=0)

additionQueue.offer(0);

}

void fetchOpNum(){

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

/*执行队列下压一格,模拟4个步骤*/

/*第一级取数操作*/

additionQueue.poll();

additionQueue.offer(1);

}

void executeNop(){

/*执行队列下压一格,模拟4个步骤*/

/*空操作*/

additionQueue.poll();

additionQueue.offer(0);

}

int getAddtionResult(int opa,int opb){

/*将两个源操作数相加,返回它们的和*/

return opa+opb;

}

}

/**

* 计时器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 = PipelineAdditionTest.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 指令流水线 }

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

《计算机组织与体系结构》 实验报告 学号: 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.检查线体各部位,确认运行环境安全后, 打开控制柜,合上控制柜所有的空气开关,使控制回路得电,同时“电源指示灯”亮。 2.按下“启动”按钮,线体启动运转,同时“运行指示”灯亮。 (二)关机: 3、按下“停止”按钮,线体停止运转,同时“运行指示”灯灭。 4、打开控制柜,断开控制柜所有的空气开关,使控制回路断电,同时“电源指示”灯灭。 (三)紧急停止: 5、如遇紧急情况时,按控制柜或线体头部、尾部的“紧急停止”按钮,线体立刻停止运行。 (四)维护及日常保养: 6、操作人员应定期和不定期检查各可见部位,及时清扫,定期清理倍速链槽内及线体其他区域散落的小五金件。 7、操作人员应经常检查脚踏开关、气管接头等气管连接部位,防止接插不良导致漏气或气压不足,及时清理空气过滤器内产生的废油。 8、设备维修人员应定期为减速箱、轴承及其它运动部件添加润滑油,操作人员定期清理线体工装板下及减速箱下的接油盘,保持线体卫生清洁。

流水线安全操作规程 FJ-SB-01-2014(B版) 9、设备维修人员应定期检查阻挡器紧固螺丝是否紧固,有无异常。 (五)注意事项: 10、流水线的日常开关机由生产车间指定专人负责,未经授权及无上岗资格人员禁止对流水线体进行操作。 11、正常关机时,按下停止按钮后,需待流水线体完全停止运行,各运送件,如:电机转轴、链条等完全停止工作,才能断开控制柜中的空气开关。 12、操作人员检查流水线时,不得用手或其它身体部位接触设备运动部件,确需检查或清扫流水线体时将流水线正常关机保证在断开开关电源的前提下,方可进行清扫等工作。 13、流水线发生故障或存在故障隐患时,应停止运行,及时通知设备维修人员前来排查和修复设备。 14、流水线体出现紧急情况时,如:发生或将要发生人身伤害事故时、电气部位应发热而发出焦糊气味等情况,操作人员应立即按下紧急停止按钮,断开电源,并立刻通知设备维修人员,切勿慌乱私自进行不正当处理,以免发生危险。

计算机系统结构实验报告

计算机系统结构实验报告 一.流水线中的相关 实验目的: 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预习报告

计算机系统结构实验 实验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)寄存器跳转、寄存器跳转并链接

冲压自动化生产线安全操作规程详细版

冲压自动化生产线安全操作规程【详细版】 内容来源网络,由深圳机械展收集整理! 更多冲压自动化展示,就在深圳机械展! 1、目的为规范公司设备操作安全方面的要求,人员人身安全及设备安全运行,特 制订本规程 2、适用范围本规程适用于冲压自动化生产线作业的安全操作 3、职责制造部负责制定设备安全操作规程,负责设备的故障维修及定期检修维护,设备正常安全运行,并对使用人的使用保养情况予以监督检查 4、各使用部门严格按照安全操作规程的要求操作机械设备,定期保养维护,设备 及保护人身安全。 5、操作规程 5.1开机前,按设备润滑图表注油,检查油路是否畅通。 5.2打开压缩机及干燥机开关,开启压缩空气调节系统压力:气压不足0.5Mpa压力机不能工作;离合器工作压力为0.5-0.6Mpa,由机床总进气口处的调压阀调整; 制动器制动汽缸气压为0.2-0.3Mpa,由机身左侧箱内储气筒端上的调压阀调整。 5.3检查储油泵润滑脂是否足够(油杯1/3-2/3处),并将油泵水杯积水、杂物放干净。 5.4检查送料机工作气压是否到达0.5MPa,将送料机的压力调节器旁的积水杯杂质 排放干净。 5.5检查储油泵、管接头是否漏油,损坏或有压扁堵塞现象。 5.6检查冲床靠右后侧的油泵是否有异常声响。 5.7操作前必须将控制柜上选择寸动状态,严禁用连续行程试机操作。 5.8启动主电机空转1-3分钟注意是否有异常声音。 5.9检查传动轴、飞轮、连杆连接的螺栓、防护罩有无松动,气压等仪表显示是否 符合开机条件,模具安装是否可靠,安全及各项监测装置、仪表是否正常有效,工 作区域内有无无关工件、杂物,如有异常即时停机填单报修。 5.10检查送料辊及矫正辊内有无杂物,挡料轮螺丝是否松动。 5.11检查涂油(冷却)装置中的防锈油(乳化液)是否足够,不足及时注入。 6、启动冲床

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

实验二结构相关 一、实验目的: 通过本实验,加深对结构相关的理解,了解结构相关对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阶段,所以导致下一条指令发生结构相关。

流水线安全操作规程

流水线安全操作规程公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

流水线安全操作规程 1、范围 本规程对流水线基本危险因素进行了识别,编写了操作要领及要求,以及在异常及紧急情况下的一般应急措施。 本规程适用于流水线的安全操作。操作人员在使用时应严格遵守本操作规程。 2、本设备的危险、危害因素 a)触电(误操作); b)火灾(电器引发); c)手套或衣物卷入传送带受到伤害; d)其它可能存在的危险、危害因素。 3、操作要领及要求 3.1工作前 3.1.1检查设备接地装置是否完好,否则联系相关人员进行查看,禁止开机 启动。 3.1.2查看确保传送带上及其周围没有杂物,传送带上没有人员正在维修或 操作。 3.1.3严禁湿手操作电源或电器。 3.1.4开净化系统(抽风)。 3.2工作中 3.2.1开机后首先确认流水线有否有振动或异响,传送带是否有停滞或跑 偏,若有上述现象应立即切断电源,并联系相关人员进行查看维修。 3.2.2查看传送带传送速度。如不合适,联系相关人员进行调整,不允许自 行调整。 3.2.3严禁螺丝、刀片等尖状物掉入传送带内或用记号笔、刀片乱写或划, 以免刺伤、划伤传送带。 3.3工作后 3.3.1关闭电源总闸,整理流水线、电烙铁和排烟管等,将其归位。台面须 清洁和做好日常保养工作,关闭净化系统。 3.3.2定期对传送系统进行保养和打扫,确保其正常工作。 4、应急处理 4.1若发生火灾等危及人身安全的突发事故,应立即按下机台急停开关,并切断 电源,火警电话“119”。同时组织灭火。 4.2若发生人身触电事故,现场人员必须第一时间抢救伤者,迅速使触电者脱离 电源,移到空气新鲜通风处,急救电话“120”,保护好现场,同时对触电者 进行心肺复苏和人工呼吸。

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

大连理工大学实验报告计算机系统结构实验 实验四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:

生产流水线安全操作规程

生产流水线安全操作规程 一、目的 为提高生产力,确保人身安全,设备安全正常运行,以延长设备使用寿命。 二、范围 适用于公司所有产品生产时的产品,半成品零配件的输送。 三、操作规程 3.1.机器需有良好的接地保护措施。 3.2.开机前需做好以下工作 (1)检查气管有无破损、漏气; (2)检查插座、电源线有无破损。 3.3.正常开机后,需做好以下工作。 (1)细听机内是否有异响; (2)检查传输带是否有停滞、跑偏的现象; (3)预设数显速度按制器、调整传输传输速度,以适应产品传输进度要求; 3.4.使用过程中,不充许螺丝、刀片等尖状物掉入传输带内或用记 号笔、刀片乱写或乱划,以免刺伤,划伤传输带。 3.5.使用过程中,若发生故障或机内有异常响动时,须马上切断电 源并及时通知生技课技术员。 3.6.使用完毕需关闭总阐,整理流水线、电烙铁、电批、排烟器等 工装夹具需归位,台面需清洁并做好日常保养工作。 四、注意事项

4.1 严禁非本厂人员进场观看喧哗,严禁操作人员在运行的传 送带的上方或者下方通过,严禁酗酒上线操作,严禁在操作时与他人说话打闹。 4.2 严禁在设备运转过程中调整或检查转动部件。 4.3 开机前需先开总开关,然后开分部开关,关机时反之,先 关分部开关再关总阐。 4.4 开始空运行时,应注意皮带有无跑偏,各位置有无异响常。 4.5运行过程中,应注意有无卡顿及震动异常,或者电机发烫异 常,链条堆积,噪音异响等现象。 4.6 出现电气失灵,漏电,流水线皮带磨出粉尘等现象时,需 要立即停机调修,解决异常后,方可再次开机。

Welcome !!! 欢迎您的下载,资料仅供参考! 4.7

流水线安全操作规程实用版

YF-ED-J1617 可按资料类型定义编号 流水线安全操作规程实用 版 In Order To Ensure The Effective And Safe Operation Of The Department Work Or Production, Relevant Personnel Shall Follow The Procedures In Handling Business Or Operating Equipment. (示范文稿) 二零XX年XX月XX日

流水线安全操作规程实用版 提示:该操作规程文档适合使用于工作中为保证本部门的工作或生产能够有效、安全、稳定地运转而制定的,相关人员在办理业务或操作设备时必须遵循的程序或步骤。下载后可以对文件进行定制修改,请根据实际需要调整使用。 1. 操作前 1) 先将流水线总电源闭合,再接电机ON 键,电机随即运转。 2) 接着调节电磁调速旋钮,减速器开始动 作,使线速达到所需要求。 2. 操作时 1) 注意观察和倾听电机及减速器有无异 声,若有异状,请先关机,通知生技人员处 理,待故障排除后,方可使用。 2) 非修理人员,不得将手、工具或身体的 某一部位伸进电机减速装置或皮带滚筒之间。

3) 不得以任何理由用重锤、工件或其他物件,撞击、敲击流水线支架,违反规定造成的后果,必须由相关人员负责。 4) 流水线运转时,不得跨越流水线。 3. 操作完毕 1) 停机时,先将电磁调速旋钮置于0档,再按电机OFF键,最后切断总电源。 2) 下班前,必须清除废料、杂物,使流水线的各部位均保持整洁之状况。

软件设计与体系结构实验报告

福建农林大学计算机与信息学院 实验报告 课程名称:软件设计与体系结构 姓名:陈宇翔 系:软件工程系 专业:软件工程 年级:2007 学号:070481024 指导教师:王李进 职称:讲师 2009年12月16日

实验项目列表

福建农林大学计算机与信息学院实验报告 学院:计算机与信息学院专业:软件工程系年级:2007 姓名:陈宇翔 学号:070481024 课程名称:软件设计与体系结构实验时间:2009-10-28 实验室田实验室312、313计算机号024 指导教师签字:成绩: 实验1:ACME软件体系结构描述语言应用 一、实验目的 1)掌握软件体系结构描述的概念 2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作 二、实验学时 2学时。 三、实验方法 由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。 四、实验环境 计算机及ACMESTUDIO。 五、实验内容 利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。 六、实验操作步骤 一、导入Zip文档 建立的一个Acme Project,并且命名为AcmeLab2。如下图:

接着导入ZIP文档,导入完ZIP文档后显示的如下图: 二、修改风格 在AcmeLab2项目中,打开families下的TieredFam.acme.如下图: 修改组件外观 1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify 按钮,将打开外观编辑器对话框。 2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选 择Repository类型. 3. 在Color/Line Properties section修改填充颜色为深蓝色。 4. 在颜色对话框中选择深蓝色,并单击 [OK]. 5. 修改图形的边框颜色为绿色 7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK] 产生的图形如下图:

热处理生产线安全生产操作规程标准范本

操作规程编号:LX-FS-A55842 热处理生产线安全生产操作规程标 准范本 In The Daily Work Environment, The Operation Standards Are Restricted, And Relevant Personnel Are Required To Abide By The Corresponding Procedures And Codes Of Conduct, So That The Overall Behavior Can Reach The Specified Standards 编写:_________________________ 审批:_________________________ 时间:________年_____月_____日 A4打印/ 新修订/ 完整/ 内容可编辑

热处理生产线安全生产操作规程标 准范本 使用说明:本操作规程资料适用于日常工作环境中对既定操作标准、规范进行约束,并要求相关人员共同遵守对应的办事规程与行动准则,使整体行为或活动达到或超越规定的标准。资料内容可按真实状况进行条款调整,套用时请仔细阅读。 一、设备操作步骤: 1、不锈钢热处理炉开炉前,先对设备进行检查。 (1)合上电源总开关,观察电压表读数是否正常(365V-400V),温控表是否处于正常状态。 (2)检查氨气管各接头和阀门是否连接牢固;用PH值试纸测试各接头部位是否有气体泄漏,如正常启动氨分解炉加热升温。 (3)开启水泵,检查冷却水进出是否畅通,将进、出水控制在平衡的状态,如无异常,水泵投入运

行。 2、不锈钢热处理炉开炉 (1)先将四个温控表的温度设定分200℃,通电升温,以后每个一小时升温100℃,直至到700℃时将保护气送进炉内。随后将电热炉的温度设定所需的工作温度,并开动输送带,投料进行操作。工作时应将炉口对应的门窗关好,尽量减少空气流动。 (2)经热处理出来的工件,需抽样冷至室温进行硬度值测试,以确定所设的温度,速度是否合理,控制工件的质量。要求每小时抽样检验一次,并将测试结果填写在“监控记录表”上,此硬度值应填写在相应的产品标识卡上。 3、不锈钢热处理炉停炉 (1)停炉时先将炉温降至700℃,再关断气源,断开分解炉电源。

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

实验报告 学院:计算机学院 课程名称:计算机系统结构 实验名称: WINDLX模拟器实验 班级: 姓名: 学号:

实验一 WINDLX模拟器安装及使用 略 实验二指令流水线相关性分析 一.实验类别 验证实验 二.实验目的 通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。 三.实验环境 Windows XP操作系统 WinDLX模拟器 四.实验原理 指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。 (1)数据相关 定义:原有先后顺序的两条指令(I1,I2)在对共享变量(位置)进行读、写时,指令流水线中实际完成的读、写顺序与原有顺序不一

致,导致流水线输出错误。 三类数据相关: 写读(WR)相关 读写(RW)相关 写写(WW)相关 解决方法技术: 1. 使某些流水线指令延迟、停顿一或多个周期。 2. 双端口存储器:如果指令和数据放在同一个存储器。 3. 设置两个存储器:一个数据存储,一个为指令存储器。 4. 软件优化编译:通过指令重新排序,消除数据相关。 5. 定向技术:又称旁路技术或专用通路技术,是使后续指令 提前得到前指令的运算结果(适合ALU类指令)(2)结构相关 定义:如果某指令在流水线重叠执行过程中,硬件资源满足不了指令重叠执行的要求,会产生资源冲突或竞争,称为流水线结构相关 解决方法技术: 1. 延迟技术:使某些指令延迟、停顿一或多个时钟周期 2. 双端口存储器:允许同时读两个数据或指令 3. 设置双存储器(哈弗结构):一个数据存储,一个指令存 储。 4软件优化编译:通过指令重新排序消除结构相关。 (3)控制相关 定义:控制相关是指因程序执行转移类指令而引起的冲突相关。包括无条件转移、条件转移、子程序调用、中断等,它们属于分支指令,执行中可能改变程序方向,造成流水线断流。 解决方法技术: 1、静态分支技术 静态转移预测技术(猜测法) ; 延迟转移; 提前形成条件码,生成转移目标地址; 改进循环程序; 2、动态分支预测技术 转移历史表BHT; 转移目标缓冲栈(BTB); 转移目标指令缓冲栈BTIB; 五.实验步骤 (1)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。 (2)考察增加浮点运算部件对性能的影响。 (3)考察增加forward部件对性能的影响。 (4)观察转移指令在转移成功和转移不成功时候的流水线开销。 注意:除(2)以外,浮点加、乘、除部件都只有一个;

相关文档
相关文档 最新文档