体系结构windlx流水线实验报告
计算机系统结构实验报告.doc
计算机系统结构实验报告一.流水线中的相关实验目的: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之后,不设置任何断点运行。
体系结构windlx流水线实验报告
实验一基本实验----by 王琳PB072104321. 实验目的:1)熟悉计算机流水线基本概念2)了解DLX基本流水线的各段的功能3)了解各种不同指令在流水线中的实际流动情况4)对流水线做性能分析5)了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类6)了解解决数据相关的方法2. 实验平台:WinDLX仿真器WinDLX简介:●是一个图形化、交互式的DLX流水线仿真器。
●可以装入DLX汇编语言程序,然后单步,设断点或是连续执行该程序.●CPU的寄存器,流水线,I/O和存储器都可以用图形表示出来●提供了对流水线操作的统计功能.●可以装载文件名为*.s的文件.●要求的硬件平台是IBM-PC兼容机.●WinDLX是一个Windows应用程序,运行DOS3.3以上和Windows3.0以上的操作系统.●WinDLX软件包中带有说明文件及教程,可以供使用者进一步了解仿真器的使用方法和DLX处理器的原理.大家再进行实验前应该仔细阅读这些文档.3. 实验内容:1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,记录它们在流水线中的执行情况●Lw:观察此流水线时空图,可以发现:转移指令引起的延迟仅为1 clocks,另2 stalls 是trap指令引起的,这个执行结果似与不采用forwarding技术的前提相违,只能理解为对于无条件的转移指令,新的PC值在EX阶段即已被写入。
●Sw:●Beqz:由此图可见,对于分支指令,总是用not-taken的策略来处理,并且也认为新的PC值也在EX阶段即已被写入,且cond条件也在EX段被算出(这显然是一个极不合理的假设,究竟为何分支指令的延迟为1 stall有待进一步探究)●寄存器ALU指令●立即数ALU指令2)仿真器运行一段无相关的程序,记录它的执行情况,计算流水线的加速比、吞吐率与效率。
系统结构-流水线工作分析报告
系统结构-流水线工作分析报告第一篇:系统结构-流水线工作分析报告《计算机系统结构课内实验》实验报告一、实验目的及要求1、加深对计算机流水线基本概念的理解;2、理解MIPS结构如何用5段流水线来实现,理解各段的功能和基本操作;3、加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU 性能的影响。
4、进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿。
加深对计算机流水线基本概念的理解;二、实验环境采用指令级和流水线操作级模拟器WinDLX;三、实验内容1、用WinDLX模拟器进行结构相关的分析①生成汇编程序structure_d.s。
用WinDLX模拟器运行该程序。
②通过模拟,找出存在结构相关的指令对,以及导致结构相关的部件。
③记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
2、用WinDLX模拟器进行数据相关分析①添加data.s程序。
②通过Configuration菜单中的选项,设定在不采用定向技术的情况下,用WinDLX模拟器运行程序data_d.s。
记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
③在采用定向技术的情况下,用WinDLX模拟器再次运行程序data_d.s。
记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
3、用WinDLX模拟器分析指令调度①生成schedule-before.s及schedule-after.s程序。
②通过Configuration菜单中的选项,将除法单元数设置为3,将加法﹑乘法﹑除法的延迟设置为3个时钟周期。
③用WinDLX模拟器运行调度前的程序schedule-before.s。
记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。
④用WinDLX模拟器运行调度后的程序schedule-after.s,记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。
流水线实验报告
流水线实验报告一、实验目的本次实验旨在探究流水线技术在计算机体系结构中的应用,并了解流水线的工作原理与效果。
通过对流水线的实验,掌握流水线操作的过程和相关概念,并通过实践了解其对计算机性能的提升作用。
二、实验器材与软件环境实验使用的器材为一台配有Intel Core i7处理器的计算机。
软件环境为Windows 10操作系统,使用C语言编译器进行代码编写和实验运行。
三、实验内容1. 流水线概述流水线是一种用于提高计算机处理器效率的技术。
它将任务划分为多个阶段,使得每个阶段都能并行地处理不同的任务。
通过将多个任务拆分并在不同的阶段同时进行,可以显著提高计算机处理速度。
2. 流水线原理流水线工作原理如下:1) 将任务划分为多个子任务,并在不同的阶段上并行执行。
2) 每个阶段的任务之间通过专门的寄存器传递数据。
3) 每个阶段的任务完成后,将结果写入寄存器,供下一个阶段使用。
4) 流水线的效果取决于各个阶段的任务执行时间,如果存在某个阶段的任务耗时较长,则可能导致整个流水线效率下降。
3. 流水线的实现实验中我们使用C语言编写一段简单的代码来模拟流水线的实现过程。
我们通过将输入的整数加1后输出,来模拟流水线的工作状态。
cinclude <stdio.h>int main() {int input[5] = {1, 2, 3, 4, 5};int output[5];int i;for (i = 0; i < 5; i++) {output[i] = input[i] + 1;}for (i = 0; i < 5; i++) {printf("%d\n", output[i]);}return 0;}上述代码将输入数组中的每个元素加1后,输出到屏幕上。
在这个过程中,我们可以将输入和输出视为流水线中的阶段,每个阶段都有固定的任务。
4. 实验结果与分析在实验中,我们输入数组为{1, 2, 3, 4, 5},运行结果如下:23456可以看到,实验结果符合我们的预期,每个输入元素都成功地加1后输出。
北邮大三下 计算机系统结构实验报告 实验一到五 WINDLX模拟器
北京邮电大学实验报告课程名称计算机系统结构计算机学院 2011211311班薛玥(2011211432)目录实验一 WINDLX模拟器安装及使用 (3).实验准备 (3).实验环境 (4).实验步骤 (5).实验内容及要求 (5).实验过程 (5).实验总结 (11)实验二指令流水线相关性分析 (12).实验目的 (12).实验环境 (12).实验步骤 (12).实验过程 (12).实验总结 (19)实验三DLX处理器程序设计 (20).实验目的 (20).实验环境 (20).实验步骤 (20).实验过程 (20)A.向量加法代码及性能分析 (20)B.双精度浮点加法求和代码及结果分析 (26).实验总结 (31)实验四代码优化 (32).实验目的 (32).实验环境 (32).实验原理 (32).实验步骤 (32).实验过程 (32).实验总结+实习体会 (37)实验五循环展开 (38).实验目的 (38).实验环境 (38).实验原理 (38).实验步骤 (38).实验过程 (38)矩阵乘程序代码清单及注释说明 (38)相关性分析结果 (43)增加浮点运算部件对性能的影响 (43)增加forward部件对性能的影响 (43)转移指令在转移成功和转移不成功时候的流水线开销 (43).实验总结+实习体会+课程建议 (43)实验一 WINDLX模拟器安装及使用·实验准备1.了解DLX的基本结构和原理DLX是一种典型的Load/Store型指令集结构。
它具有一套简单的Load/Store 指令集;它注重指令流水效率;它简化指令的译码;它高效支持编译器。
2.了解DLX中的寄存器DLX中有32个通用寄存器(GPRs),分别将其命名为R0,R1...R31。
每个通用寄存器长度为32位。
另外,DLX中有32个浮点寄存器(FPRs),分别将其命名为F0,F1 (31)3.了解DLX数据类型DLX提供了多种长度的整型数据和浮点数据。
计算机系统结构实验三.
计算机系统结构实验实验三:DLX 流水线运行分析一、实验目的通过本实验,熟悉 WinDLX 模拟器的操作和使用,了解 DLX 指令集结构及其特点。
二、实验内容(1) 用 WinDLX 模拟器执行求阶乘程序 fact.s 。
执行步骤详见“WinDLX教程”。
这个程序说明浮点指令的使用。
该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了 input.s 中的输入子程序,这个子程序用于读入正整数。
(2)输入数据“3”采用单步执行方法,完成程序并通过上述使用 WinDLX,总结 WinDLX的特点。
(3)注意观察变量说明语句所建立的数据区,理解 WinDLX 指令系统。
三、实验步骤1.双击 Code 图标,从左到右依次为代表存储器内容的三栏信息:地址 (符号或数字)、命令的十六进制机器代码和汇编命令。
点击主窗口中的 Execution 开始模拟。
按 F7 键开始执行。
这时,窗口中带有地址“$TEXT”的第一行变成黄色。
按下 F7 键,模拟就向前执行一步,第一行的颜色变成橘黄色,下一行变成黄色。
这些不同颜色指明命令处于流水线的哪一段。
命令“jalInputUnsigned”在 IF 段,“addi r1, r0, 0x1000”在第二段ID。
其他方框中带有一个“X”标志,表明没有处理有效信息。
2.再次按下 F7 键,代码窗口中的颜色会再改变,红色表明命令处入第三段“intEX”。
再按下 F7,在代码窗口中,黄色出现在更下面的位置,并且是唯一彩色行。
打开 Clock Cycle Diagram 窗口。
它显示流水线的时空图。
第一条命令正在 MEM 段,第二条命令在 intEX 段,第四条命令在 IF 段。
而第三条命令指示为“aborted”。
其原因是:第二条命令(jal)是无条件分支指令,但只有在第三个时钟周期, jal 指令被译码后才知道,这时,下一条命令 movi2fp 已经取出,但需执行的下一条命令在另一个地址处,因而,movi2fp 的执行应被取消,在流水线中留下气泡。
计算机系统结构实验报告
计算机系统结构实验报告一.流水线中的相关实验目的: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之后,不设置任何断点运行。
计算机体系结构实验报告
计算机体系结构实验报告实验⼆结构相关⼀、实验⽬的:通过本实验,加深对结构相关的理解,了解结构相关对CPU性能的影响。
⼆、实验内容:1. ⽤WinDLX模拟器运⾏程序structure_d.s 。
2. 通过模拟,找出存在结构相关的指令对以及导致结构相关的部件。
3. 记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执⾏周期数的百分⽐。
4. 论述结构相关对CPU性能的影响,讨论解决结构相关的⽅法。
三、实验程序structure_d.sLHI R2, (A>>16)&0xFFFF 数据相关ADDUI R2, R2, A&0xFFFFLHI R3, (B>>16)&0xFFFFADDUI R3, R3, B&0xFFFFADDU R4, R0, R3loop: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 answeryour questions)ADDI R2, R2, #8ADDI R3, R3, #8SUB R5, R4, R2BNEZ R5, loop ;条件跳转TRAP #0 ;; Exit <- this is a comment !!A: .double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10B: .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发⽣结构相关,导致相关的部件:译码部件。
计算机系统结构winDLX流水线实验报告
计算机科学与技术学院《计算机体系结构》课程实验学号:班级:专业:学生姓名:年月日实验报告seqi r5,r3,10下面两条指令中,因为加法指令要读r1,而执行到此操作时乘法指令仍对r进行操作,因此出现了数据相关multu r1,r1,r4add r1,r1,r3图1 数据相关(2)控制相关:以图2中出现的控制相关为例下面两条指令中,因为第一条指令出现跳转指令时,存储指令的取指将作废,所以出现控制相关jal InputUnsignedsw PrintfValue(r3),r1图2 控制相关(3)结构相关:以图3中出现的结构相关为例下面两条指令中,因为当第二条乘法指令需要使用乘法器时,第一条乘法指令仍在使用乘法器,所以出现结构相关mult r2,r0,r0mult r3,r0,r0图3 结构相关3、主程序Variance.s的代码.data ;.data标识下面的数据放在数据区中;输入语句,指示你输入要求多少个数的方差Prompt: .asciiz "Please input An integer which is array's size value>0: ";输入语句,指示你输入要求方差的数PromptLast: .asciiz "Please input the integer :";输出格式,表示求出的方差按什么格式输出PrintfFormat: .asciiz "the Variance is : %g ";表示下面采用字对齐.align 2;求出方差存入r11中div r11,r2,r8output:;将方差存入Variance所指存储空间中sw Variance,r11;转换为双精度并输出lf f2,Variancecvti2d f0,f2sd Printf,f0addi r14,r0,PrintfPartrap 5 ;调用中断,格式化输出转化为标准输出over:trap 0 ;调用系统中断,0表示程序执行结束4、样例输出,以图4中数据为例输入需要求方差数的个数为4,4个数分别为3,5,6,2,输出结果为2图4 输出界面5、尽量减少和消除程序中出现的相关。
计算机体系结构实验报告——实验二
计算机体系结构实验报告——实验二1.实验目的:通过本实验,熟练掌握WinDLX模拟器的操作和使用,清楚WinDLX五段流水线在执行具体程序时的流水情况,熟悉DLX指令集结构及其特点。
2.实验内容:(1)用WinDLX模拟器执行程序gcm.s。
该程序从标准输入读入两个整数,求他们的greatest common measure,然后将结果写到标准输出。
该程序中调用了input.s中的输入子程序。
(2).给出两组数6、3和6、1,分别在main+0x8(add r2,r1,r0)、gcm.loop(seg r3,r1,r2)和result+0xc(trap0x0)设断点,采用单步和连续混合执行的方法完成程序,注意中间过程和寄存器的变化情况,然后单击主菜单execute/display dlx-i/0,观察结果。
3.实验程序求最大公约数程序:gcm.s;***********WINDLX Ex.1:Greatest common measure*************;------------------------------------------------------------------------;Program begins at symbol main;requires module INPUT;Read two positive integer numbers from stdin,calculate the gcm;and write the result to stdout;------------------------------------------------------------------------.data;***Prompts for inputPrompt1:.asciiz“First Number:”Prompt2:.asciiz“Second Number:“;***Data for printf-TrapPrintfFormat:.asciiz“gcM=%d\n\n”.align2PrintfPar:.word PrintfFormatPrintfValue:.space4.text.global mainmain:;***Read two positive integer numbers into R1and R2 addi r1,r0,Prompt1jal InputUnsigned;read uns.-integer into R1add r2,r1,r0;R2<-R1addi r1,r0,Prompt2jal InputUnsigned;read uns.-integer into R1Loop:;***Compare R1and R2seq r3,r1,r2;R1==R2?bnez r3,Resultsgt r3,r1,r2;R1>R2?bnez r3,r1Greaterr2Greater:;***subtract r1from r2sub r2,r2,r1j Loopr1Greater:;***subtract r2from r1sub r1,r1,r2j LoopResult:;***Write the result(R1)sw PrintfValue,r1addi r14,r0,PrintfPartrap5;***endtrap0该程序中调用了input.s中的输入子程序。
计算机体系结构实验报告
实验一流水线中的相关一.实验目的1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 进一步了解DLX基本流水线各段的功能以及基本操作;4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。
二.实验平台WinDLX模拟器三.预备知识1. WinDLXWinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线是如何工作的。
该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设断点或是连续执行该程序。
CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,以形象生动的方式描述DLX流水线的工作过程。
模拟器还提供了对流水线操作的统计功能,便于对流水线进行性能分析。
有关WinDLX的详细介绍,见WinDLX教程。
2. 熟悉WinDLX指令集和WinDLX源代码的编写3. 复习和掌握教材中相应的内容(1)DLX基本流水线(2)流水线的结构相关与数据相关结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突时,将产生“结构相关”。
数据相关:当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行时,就可能引起“数据相关”。
(3)定向技术的主要思想:在发生数据相关时,等待前面计算结果的指令并不一定真的马上就用到该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令需要它的地方,就可以避免暂停。
四.实验内容及结果1. 用 WinDLX 模拟器执行下列三个程序(任选一个):求阶乘程序 fact.s求最大公倍数程序 gcm.s求素数程序 prim.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU 中寄存器和存储器的内容。
熟练掌握WinDLX 的操作和使用。
体系结构实验报告-winDLX代码优化
体系结构实验报告实验四代码优化09211312班 29号钟亦然实验四代码优化一、实验类别:综合实验二、实验目的:学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。
三、实验设备环境:DLX汇编语言环境,win7操作平台四、实验原理:采用静态调度方法重排指令序列,减少相关,优化程序五、实验内容和要求:对实验二或实验三的代码进行优化,给出性能改进的量化值,同时给出采取优化手段的理论依据。
六、实验步骤:(1)使用静态调度方法手工优化实验2或实验3的代码(2)对优化程序,重复实验二中(1)、(2)、(3)、(4)工作。
七、实验过程:源程序代码以及注释说明;*********** WINDLX Ex.3: Factorial *************;*********** (c) 1991 G黱therRaidl *************;*********** Modified: 1992 MaziarKhosravipour *************;--------------------------------------------------------------------------; Program begin at symbol main; requires module INPUT; read a number from stdin and calculate the factorial (type: double); the result is written to stdout;--------------------------------------------------------------------------.data ; 数据段Prompt: .asciiz "An integer value >1 : ";PrintfFormat: .asciiz "Factorial = %g\n\n".align 2 ;PrintfPar: .word PrintfFormatPrintfValue: .space 8.text ; 代码段.global mainmain:;*** Read value from stdin into R1addi r1,r0,Prompt;r1 <—r0 + promptjal InputUnsigned;*** init valuesmovi2fp f10,r1 ;R1 -> D0 D0..Count register,格式转换cvti2d f0,f10;转化为双精度的addi r2,r0,1 ;r0 + 1 ->r2 D2..resultmovi2fp f11,r2cvti2d f2,f11;双精度movd f4,f2 ;1-> D4,f4 = 1D4..Constant 1;*** Break loop if D0 = 1Loop: led f0,f4 ;f0 和f4 比较大小。
北邮计算机系统结构-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)观察程序中出现的数据/控制/结构相关。
计算机系统结构实验报告
计算机系统结构实验报告计算机系统结构实验报告《计算机系统结构》实验报告专业班级姓名学号实验一熟悉模拟器WinDLX的使用一、实验目的1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。
2. 加深对计算机流水线基本概念的理解。
3.了解DLX基本流水线各段的功能以及基本操作。
二、实验平台WinDLX模拟器三、实验内容和步骤1.WinDLX的安装WinDLX模拟器是一个图形化、交互式的DLX 流水线模拟器,能够演示DLX流水线是如何工作的。
该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设断点或是连续执行该程序。
CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,以形象生动的方式描述DLX流水线的工作过程。
模拟器还提供了对流水线操作的统计功能,便于对流水线进行性能分析。
WinDLX 包含windlx.exe和windlx.hlp文件。
同时,还需要一些扩展名为.s的汇编代码文件。
按以下步骤在Windows下安装WinDLX:(1)WinDLX创建目录,例如D:\WINDLX(2)解压WinDLX软件包或拷贝所有的WinDLX文件(至少包含windlx.exe, windlx.hlp)到这个WinDLX 目录。
2.启动和配置WinDLX双击WinDLX图标,将出现一个带有六个图标的主窗口,如图1-1。
双击这些图标会弹出子窗口。
图1-1 WinDLX启动窗口为了初始化模拟器, 点击File 菜单中的Reset all 菜单项,弹出一个“Reset DLX”对话框。
然后点击窗口中的“确认”按钮即可。
WinDLX可以在多种配置下工作。
可以改变流水线的结构和时间要求、存储器大小和其他几个控制模拟的参数。
点击Configuration→Floating Point Stages(点击Configuration打开菜单,然后点击Floating Point Stages菜单项),选择如图1-2标准配置。
北邮计算机系统结构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) 观察程序中出现的数据/控制/结构相关。
windlx系统结构实验报告
课程设计报告书课程名称:计算机系统结构题目:WinDLX模拟器实验学生姓名:xxx专业:计算机科学与技术(数字媒体)班别:x学号:x指导老师:x日期:2011 年 5 月 2 日一、实验目的:熟悉WinDLX的的基本概念和使用,了解各种不同指令在流水线的实际流动情况,对流水线做性能分析,加深对流水线及RISC处理器的理解二、实验环境:WinDLX模拟器可以装入DLX汇编语言程序,然后单步、设置断点或者连续执行该程序。
CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。
模拟器还提供了对流水线操作的统计功能。
该模拟器对理解流水线和RISC处理器的特点很有帮助。
WinDLX要求的硬件平台是IBM PC兼容机,WinDLX是一个Windows应用程序,运行于Windows 3.0以上的操作系统。
三、实验步骤、结果分析:使用WinDLX模拟器,对Fact.s做如下分析:开始模拟之前的准备工作:(1) 通过双击WinDLX 图标启动WinDLX,将出现一个带有六个图标的主窗口:(2)进行初始化模拟器, 点击File菜单中的Reset all菜单项,弹出一个“Reset DLX”对话框。
然后点击窗口中的“确认”按钮即可。
(3)在开始模拟之前,至少应装入一个程序到主存。
为此,选择File / Load Code or Data,窗口中会列出目录中所有汇编程序。
fact.s计算一个整型值的阶乘;input.s中包含一个子程序,它读标准输入(键盘)并将值存入DLX处理器的通用寄存器R1中。
按如下步骤操作,把fact.s和input.s加载入主存。
•点击fact.s•点击select按钮•点击input.s•点击select按钮•点击load按钮得到如下图:弹出一下询问对话框,点击“是”。
1. 观察增加浮点运算部件对性能的影响。
(1)点击Configuration打开菜单,然后点击Floating Point Stages菜单项,选择如下标准配置:(2)再点击Execute Run,输入15点,回车,在弹出的对话框出现消息"Trap #0 occurred" 表明最后一条指令trap 0已经执行,Trap指令中编号“0”没有定义,只是用来终止程序。
计算机系统结构WinDlx实验报告
计算机组成与系统结构课程设计题目:流水线指令设计及页面置换算法在WinDLX软件中的应用学校:专业:学号:姓名:指导教师:***2011 年 6 月22 号目录1、实验一.....................21.1实验目的.......................21.2实验平台.......................21.3 预备知识.......................21.4实验内容和步骤....................21.5实验程序.......................41.6 实验报告要求.....................62、实验二.........................92.1 实验目的.......................92.2 实验平台.......................10 2.3 预备知识.......................10 2.4 实验内容和步骤....................10 2.5 实验程序.......................10 2.5.1 源程序.....................11 2.5.2 程序分析.....................11 2.5.3 结果截图.....................112.6 实验报告要求.....................123、实验三.........................13 3.1 实验目的.......................13 3.2 实验平台.......................13 3.3 预备知识.......................13 3.4 实验内容和步骤....................13 3.5 实验程序.......................13 3.5.1 源程序......................14 3.5.2 没有采用定向技术分析...............14 3.5.3 采用定向技术分析.................14 3.5.4 结果截图.....................153.6 实验报告要求.....................154、实验四.........................16 4.1 实验目的.......................16 4.2 实验平台......................16 4.3 预备知识.......................16 4.3.1 调页策略.....................16 4.3.2 页面置换算法...................17 4.4 实验内容和步骤....................18 4.5 实验程序.......................19 4.5.1 源程序......................19 4.5.2 程序流程图....................22 4.5.3 结果截图.....................234.6 实验报告要求.....................235、实验总结........................236、参考资料.......................23实验一 WinDLX模拟器与DLX指令的使用1.1实验目的1.1.1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;1.1.2. 加深对计算机流水线基本概念的理解;1.1.3. 了解DLX基本流水线各段的功能以及基本操作;1.2实验平台WinDLX模拟器1.3预备知识1.3.1. WinDLXWinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线是如何工作的。
计算机体系结构 指令流水线相关性分析 实验报告
实验二指令流水线相关性分析实验类别:验证实验实验目的:通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC 处理器的特点的理解。
实验学时:4实验组人数:1/1实验设备环境:WinDLX模拟器可以装入DLX汇编语言程序,然后单步、设置断点或者连续执行该程序。
CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。
模拟器还提供了对流水线操作的统计功能。
该模拟器对理解流水线和RISC处理器的特点很有帮助。
实验原理:指令流水线中主要有结构相关、数据相关、控制相关。
相关影响流水线性能。
实验内容和要求:使用WinDLX模拟器,对求阶乘程序Fact.s做分析。
实验步骤:1、观察程序中出现的数据/控制/结构相关程序中出现的数据相关lbu r3,0x0(r2)需要在WB周期才能将值写入r3里,而后续的指令seqi r5,r3,0x0a在intEx周期里读取r3寄存器的值,发生了读写相关。
所以为了避免冲突,将seqi r5,r3,0x0a的指令的intEx延迟一个周期执行。
程序中出现的控制相关movi2fp f10,r1在IF指令周期后为aborted。
原因在于:第二条指令jal InputUnsigned 为无条件转移指令,但只有在该指令译码的时候才可以知道转移的位置。
但是此时movif2p f10,r1指令已经取出,所以需要将该指令流水清空,由于是刚执行了IF指令,所以只需要重新取新的指令就可以了。
程序中出现的结构相关由于上条指令add r1,r1,r3的intEx的执行延迟了4个指令周期,所以addi,r2,r2,0x1指令就不能在add r1,r1,r3的intEx的执行前进入ID指令译码的执行。
所以这里出现了指令译码器的争用。
因而发生了结构相关。
2、考察增加浮点运算部件对性能的影响下面两组数据来自Statistics窗口,都是算5的阶乘,分别是运算部件为都为一个,运算部件都为两个的数据统计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一基本实验 ----by 王琳 PB072104321. 实验目的:1)熟悉计算机流水线基本概念2)了解DLX基本流水线的各段的功能3)了解各种不同指令在流水线中的实际流动情况4)对流水线做性能分析5)了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类6)了解解决数据相关的方法2. 实验平台:WinDLX仿真器WinDLX简介:是一个图形化、交互式的DLX流水线仿真器。
可以装入DLX汇编语言程序,然后单步,设断点或是连续执行该程序.CPU的寄存器,流水线,I/O和存储器都可以用图形表示出来提供了对流水线操作的统计功能.可以装载文件名为*.s的文件.要求的硬件平台是IBM-PC兼容机.WinDLX是一个Windows应用程序,运行以上和以上的操作系统.WinDLX软件包中带有说明文件及教程,可以供使用者进一步了解仿真器的使用方法和DLX处理器的原理.大家再进行实验前应该仔细阅读这些文档.3. 实验内容:1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,记录它们在流水线中的执行情况Lw:观察此流水线时空图,可以发现:转移指令引起的延迟仅为1 clocks,另2 stalls 是trap指令引起的,这个执行结果似与不采用forwarding技术的前提相违,只能理解为对于无条件的转移指令,新的PC值在EX阶段即已被写入。
Sw:Beqz:由此图可见,对于分支指令,总是用not-taken的策略来处理,并且也认为新的PC值也在EX阶段即已被写入,且cond条件也在EX段被算出(这显然是一个极不合理的假设,究竟为何分支指令的延迟为1 stall有待进一步探究)寄存器ALU指令立即数ALU指令2)仿真器运行一段无相关的程序,记录它的执行情况,计算流水线的加速比、吞吐率与效率。
下面是一段不相关的程序,一共6条指令ADDI R5, R5, 1SUBI R4, R4, 1AND R3, R3, R3XOR R7, R7, R7ADDI R8, R8, 1ADDI R9, R9, 1在WinDLX中执行的结果如下:如上图所示:6条指令一共执行了10个周期,而每个指令都需要5个周期来完成。
故可得加速比:5*6/10=3实际吞吐率:流水线由5段组成,完成6条指令,m=5,n=6,T=5△t+(6-1) △t=10△t,Tp=n/T=3/(5△t),即为实际吞吐率。
效率: E=1/(1+(m-1)/n)=TP*△t=3/53)在仿真器运行一段程序:在用仿真器模拟前先自己手动分析出程序执行时的相关种类与个数:1.addi-addi关于r2的raw相关:2 stalls2.lw-addi关于r1的raw相关:2 stalls3.addi-sw关于r1的raw相关:2 stalls4.addi-sub关于r2的raw相关:2 stalls5.sub-bnez关于r4的raw相关:2 stalls6.bnez的控制相关(always not-take):1 stalls(not hit)/0 stall(hit)7.j的控制相关:1 stalls8.trap:2 stalls在DLX上的实际运行结果:统计该程序在流水线中出现的各种相关个数,及其引起的流水线暂停周期数:可见,此执行结果与之前手动分析的结果完全相同4)通过在流水线中设置定向路径来消除数据相关后,仅lw-addi一处会产生关于r1的raw相关,延迟为1 stall,转移指令的延迟情况不变:一个循环的执行时间:6+1+1=8(clocks)总执行时间:(2)+(8*2-1)+(1+1)+(1+2)=22(clocks)总RAW相关的stall数:1*2=2(clocks)运行程序:有出入的原因是windlx认为除了在lw-addi处有1 stall的raw相关,sub-bnez处也会有1 stall的raw相关(真搞不懂,难道分支指令在IF 阶段开始读取寄存器的值了!),按照这种想法重新计算的结果是:一个循环的执行时间:6+1*2+1=9(clocks)总执行时间:2+(9*2-1)+(1+1)+(1+2)=24(clocks)总RAW相关的stall数:2*2=4(clocks)统计在流水线中出现的相关个数,及其引起的流水线暂停周期数:5)通过对程序进行编译优化并结合其他相关解决方法——分支预测与延迟槽:由于windlx默认采取了always not-taken的分支预测策略,且不支持延迟槽的概念,所以唯一可做的调度就是通过分离lw-addi和sub-bnez指令来消除raw相关,调度后的程序如下图所示:一个循环的执行时间:6+1=7(clocks)总执行时间:2+(7*2-1)+(1+1)+(1+2)=20(clocks)总RAW相关的stall数:0(clocks)运行程序:统计在流水线中出现的相关个数,及其引起的流水线暂停周期数4.实验步骤:1) 运行WinDLX仿真器.2) 根据实验内容的要求设计出相应的DLX程序.3) 完成所有的实验内容.5. 实验时间:4课时6. 实验要求:1) 必做实验。
2) 自己设计出体现实验要求的程序。
比如在进行统计相关种类与个数的步骤中所用到的程序怎么尽可能包含所有种类的相关,建议3) 要求学生实际在仿真器运行程序并统计结果, 课后形成图表上交实验报告。
4) 通过实验分析相关对流水线的性能影响,实际掌握各种相关解决策略,比较采用各种策略前后流水线的性能,形成图表上交实验报告。
7. 参考材料:计算机体系结构教材、WinDLX仿真器使用指南8. 附录编写代码的要求:1)需要编写代码文件*.s。
所有程序均用DLX汇编语言编写.2)文件格式请参照WinDLX自带的例子程序.常见问题:1. Load指令后都是nop注意选择了文件后要Select,或双击,下方Select Files显示了相应的文件名才是已经选择了文件。
选择之后需再Load.正确的Load会显示:File(s) Loaded Successfully, Reset DLX此时在Window->Code窗口里应该能看到你的代码。
2. Load时会出现“Code or Data Error”这是因为你的汇编代码有错。
DLX汇编的格式请参考帮助文件之The DLX-Assembly Language && DLX Instructions Set && DLX-Examples。
如果是Load 自带的GCM和FACT的例子,请先务必Load 。
(WinDLX可以一次load 多个.s文件).3.如何初始化内存呢Memory->Change 里面可以察看/设置内存的值,指定Address和Value后Set即可。
Memory->Display 可以显示内存的值。
4.程序运行时会报错“Mem Error”可能是因为你程序中用到的访存地址没有对齐导致,Memory是按字对齐的,访问地址必须是4的倍数。
也可能是地址超过了存储器得地址范围。
默认的存储器大小是0x8000 Bytes,可以通过Configuration->Memory Size 来设置大小。
.5.如何载入立即值可以通过LHI指令和其他指令的组合,或者用ADDI指令来实现。
注意LW是访存指令,并非载入立即值指令。
具体指令请参考DLX Instruction Set。
6.指令用到了立即数需不需要用“#“用不用不会影响,具体请参考 The DLX-Assembly Language && DLX-Examples.7.例子里的.data, .global等是干什么用的这些是编译制导语句,具体含义请参考 The DLX-Assembly Language ->Directives..space size Move the current storage pointer forward size bytes (to leave some empty space in memory).data [address] Cause the following code and data to be stored in the data area. If an address was supplied, the data will be loaded starting at that address, otherwise, the last value for the data pointer will be used. If we were just reading data based on the text (code) pointer, store that address so that we can continue from there later (on a .text directive)..text [address] Cause the following code and data to be stored in the text (code) area. If an address was supplied, the data will be loaded starting at that address, otherwise, the last value for the text pointer will be used. If we were just reading data based on the data pointer, store that address so that we can continue from there later (on a .data directive)..global label Make the label available for reference by code found in files loaded after this file.8. WinDLX能指定定向路径吗如何指定WinDLX可以启用和禁止Forwarding。
Configuration->Enable Forwarding.定向路径可以显示出来,选中Clock Cycle Diag->Display Forwading9.如何设置程序代码和数据段在内存中起始位置有没有类似i386汇编的ORG语句WinDLX没有 ORG指令,但可以通过Symbol来指定代码和数据段的起始位置。