1、计算机体系结构课程实验 流水线篇12019-3-162019-3-16第1页,共29页。主要内容n实验目的n实验原理n实验平台nWinDLXn实验内容n实验步骤n实验要求2Computer Architecture-Pipeline第2页,共29页。实验目的n通过该模拟实验,进一步掌握和巩固的 流水线基本知识;n初步掌握在特定体系结构下的汇编代码的编写和优化;n培养运用所学知识解决实际问题的能力。3Computer Architecture-Pipeline第3页,共29页。实验原理(1/4)n流水线执行过程4Computer Architecture-Pipeline第4页,共29页。实验原
2、理(2/4)n流水线中的相关问题n结构相关n数据相关nRAW/WAR/WAWn控制相关硬件资源不够条件分支或跳转指令5Computer Architecture-Pipeline第5页,共29页。实验原理(3/4)n定向技术 在发生数据相关时,等待前面计算结果的指令并不一定真的马上就用到该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令需要它的地方,就可以避免暂停。n循环展开 是一种牺牲程序的尺寸来加快程序的执行速度的优化方法。可以由程序员完成,也可由编译器自动优化完成。循环展开通过将循环体代码复制多次实现。循环展开能够增大指令调度的空间,减少循环分支指令的开销。循环展开可以更好地
3、实现数据预取技术。6Computer Architecture-Pipeline第6页,共29页。实验原理(4/4)n流水线性能评价n加速比n吞吐率n效率7Computer Architecture-Pipeline第7页,共29页。实验平台WinDLX8Computer Architecture-Pipeline第8页,共29页。实验平台nWinDLX的使用步骤n安装 n配置 n浮点段配置 n存储器配置 n模拟 n代码载入 n程序推进 n机器状态的查看 9Computer Architecture-Pipeline第9页,共29页。WinDLX模拟器安装nWinDLX包含windlx.exe
4、和windlx.hlp文件。同时,还需要一些扩展名为.s的汇编代码文件。本次实验课将使用fact.s和input.s这两个汇编代码文件。nWinDLX的安装非常简单,只要将WinDLX1.3文件夹拷贝到一个不含中文不含中文路径的目录下即可,假设将其拷贝到D盘下,然后双击执行里面的windlx.exe,就可进入Windlx模拟器。10Computer Architecture-Pipeline第10页,共29页。开始和配置WinDLXn为了初始化模拟器,点击File 菜单中的 Reset all 菜单项,弹出一个“Reset DLX”对话框。然后点击窗口中的“确认”按钮即可。11Computer
5、 Architecture-Pipeline第11页,共29页。开始和配置WinDLXnWinDLX可以在多种配置下工作。可以改变流水线的结构和时间要求、存储器大小和其他几个控制模拟的参数。12Computer Architecture-Pipeline第12页,共29页。装载测试程序 n在开始模拟之前,至少应装入一个程序到主存。n我们选fact.s为例,fact.s 计算一个整型值的阶乘;它的运行还需要一个辅助文件input.s,input.s中包含一个子程序,它读标准输入(键盘)并将值存入DLX处理器的通用寄存器R1中。按如下步骤操作,可将这两个文件装入主存。n为此,选择File/Load
6、 Code or Data,窗口中会列出目录中所有汇编程序。按如下步骤操作,可将这两个文件装入主存。13Computer Architecture-Pipeline第13页,共29页。装载测试程序n 点击 fact.sn点击 select 按钮n点击 input.sn点击 select按钮n点击 load按钮n选择文件的顺序很关键,它决定了文件在存储器中出现的顺序。对话框中会显示信息“File(s)loaded successfully.Reset DLX?”,点击“是”按钮确认。这样,文件就已被装入到主存储器中了。14Computer Architecture-Pipeline第14页,共2
7、9页。Pipeline 窗口 nDLX执行指令的流水线是一个5段流水线,包括取指段(IF)、译码段(ID)、执行段(EX)、访存段(MEM)和写回段(WB)。15Computer Architecture-Pipeline第15页,共29页。Code 窗口 nCode窗口显示的内容是两个程序(fact.s和input.s)加载到内存中的情况。从左到右依次为:地址(符号或数字)、命令的十六进制机器代码和汇编命令。16Computer Architecture-Pipeline第16页,共29页。Clock Cycle Diagram 窗口 n它显示流水线的时空图。17Computer Archi
8、tecture-Pipeline第17页,共29页。Clock Cycle Diagram 窗口n在Clock cycle diagram 窗口中,有时候还可以看到在指令之间出现了红和绿的箭头。红色箭头表示需要一个暂停,箭头指向处显示了暂停的原因。R-Stall(R-暂停)表示引起暂停的原因是RAW。绿色箭头表示定向技术的使用。18Computer Architecture-Pipeline第18页,共29页。Breakpoint窗口 n当重复按F7执行代码很枯燥时,我们可以通过设置断点来加快此过程。该窗口详细的显示了我们设置的断点的信息。19Computer Architecture-Pip
9、eline第19页,共29页。Register窗口nDLX的全部寄存器及其内容。20Computer Architecture-Pipeline第20页,共29页。Statistics窗口 nStatistics 窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、Load/Store指令、浮点指令和traps。窗口中给出事件发生的次数和百分比,如RAW stalls:17(7.91%of all Cycles)。21Computer Architecture-Pipeline第21页,共29页。DLX的汇编语法nDLX的汇编语法(1/2)n伪指令.data address.te
10、xt address.global label.word word1,word2,.space size.double常数、运算符n指令n访存类、寄存器操作、算术类、逻辑类、控制流转移nWinDLX的Trap机制 一般地,指令(code)均被导入$CODE(起始地址为0 x100)而数据(data)则被导入$DATA(起始地址为0 x1000)22Computer Architecture-Pipeline第22页,共29页。DLX汇编的例子nDLX的汇编语法(2/2)n例子.dataadder1:.word7adder2:.word16result:.space4.text.global m
11、ainmain:lwr2,adder1lwr3,adder2addr1,r2,r3swresult,r1trap0;finish23Computer Architecture-Pipeline第23页,共29页。实验内容(1/2)n33矩阵乘法n编写矩阵积源程序;手工优化。例如:n在流水线各种资源配置下观察程序运行状态。lw r3,adder1add r1,r2,r3add r5,r6,r7lw r3,adder1add r5,r6,r7add r1,r2,r324Computer Architecture-Pipeline第24页,共29页。实验内容(2/2)n观察程序中出现的数据/控制/结
12、构相关,指出导致上述现象的指令组合n考察增加定向(forwarding)部件对性能的影响n观察转移指令在转移成功和转移不成功时候的流水线开销n手工优化程序(没有分支延迟槽)n分析程序的吞吐率、加速比和效率25Computer Architecture-Pipeline第25页,共29页。实验步骤n学习WinDLX软件使用;n学习DLX汇编程序的编写;n编写33矩阵乘法汇编源程序;n将程序在WinDLX上运行调试;n观察程序中出现的数据/控制/结构相关;n优化代码(在有定向功能和无定向功能两种情况下),尽量消除相关引起的暂停;n对优化后的代码重新模拟,并观察优化效果;n分析实验结果,书写实验报告
13、。26Computer Architecture-Pipeline第26页,共29页。实验要求n实验报告要求包括:n程序源代码n实验结果、实验分析、优化过程、性能分析 n简单谈谈自己对流水线技术的认识提交形式:实验源代码+实验报告(Word编辑)文件夹命名格式:学号1_姓名1(例如:04060006_邓明堂)27Computer Architecture-Pipeline第27页,共29页。检查方式n查看代码n查看运行n解释各种相关发生的情况及优化手段n查看统计信息28Computer Architecture-Pipeline第28页,共29页。谢 谢292019-3-162019-3-16第29页,共29页。