北邮 计算机系统结构 实验报告(全部)指令流水线相关性分析 DLX 处理器程序设计 代码优化

合集下载

北京邮电大学计算机学院 - 操作系统实验报告(含源代码)

北京邮电大学计算机学院 - 操作系统实验报告(含源代码)
小组成员:许伟林 08211306 (6 班) 刘惠庭 08211338 (7 班)
1/58
10 年 12 月 19 日
内容目录
实验 1.3 Shell 编程...........................................................4 1、实验目的...............................................................4 2、实验内容...............................................................4 3、实验原理...............................................................4 4、实验步骤...............................................................4 5、实验结果:.............................................................4 6、人员任务分配...........................................................5
实验项目:
1. 实验 1.3 Shell 编程 2. 实验 2.3 内核模块 3. 实验 2.4 系统调用 4. 实验 3.3 Shell 编程实验(进程管理实验) 5. 实验 4.1 观察实验(存储管理实验) 6. 实验 5.1 观察实验(进程通信) 7. 实验 6.3 Io 系统编程实验 8. 实验 6.4 设备驱动程序 9. 实验 7.1 代码分析(文件系统管理实验)
实验 3.3 Shell 编程实验(进程管理实验)......................................18 1、实验目的..............................................................18 2、实验内容..............................................................18 3、实验原理..............................................................18 4、实验步骤..............................................................18 5、实验结果及分析........................................................19 6、人员任务分配..........................................................19 2、实验内容 2............................................................20 3、实验原理..............................................................20 4、实验步骤..............................................................20 5、实验结果及分析........................................................23 6、人员分配..............................................................24

计算机系统结构实验报告

计算机系统结构实验报告

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

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

北京邮电大学实验报告课程名称计算机系统结构计算机学院03班王陈(11)目录实验一WINDLX模拟器安装及使用......................................... 错误!未定义书签。

·实验准备................................................................................ 错误!未定义书签。

·实验环境................................................................................ 错误!未定义书签。

·实验步骤................................................................................ 错误!未定义书签。

·实验内容及要求.................................................................... 错误!未定义书签。

·实验过程............................................................................. 错误!未定义书签。

·实验总结............................................................................. 错误!未定义书签。

实验二指令流水线相关性分析 ............................................... 错误!未定义书签。

·实验目的............................................................................. 错误!未定义书签。

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

北邮大三下 计算机系统结构实验报告 实验一到五 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提供了多种长度的整型数据和浮点数据。

(完整版)北邮电子院专业实验报告

(完整版)北邮电子院专业实验报告

电子工程学院ASIC专业实验报告班级:姓名:学号:班内序号:第一局部语言级仿真LAB1:简单的组合逻辑设计一、实验目的掌握根本组合逻辑电路的实现方法。

二、实验原理本实验中描述的是一个可综合的二选一开关,它的功能是当sel=0否那么给出结果out=b。

在Verilog HDL 中,描述组合逻辑时常使用时,给出out=a,assign结构。

equal=(a==b)?1:0是一种在组合逻辑实现分支判断时常用的格式。

parameter定义的参数决定位宽。

测试模块用于检测模块设计的是否正确,它给出模块的输入信号,模块的内部信号和输出信号。

size观察三、源代码mux.vmodulescale_mux(out,sel,b,a);parametersize=1;output[size-1:0]out;input[size-1:0]b,a;inputsel;assignout=(!sel)?a:(sel)?b:{size{1'bx}};endmodulemux_test.v`definewidth8`timescale1ns/1nsmodulemux_test;reg[`width:1]a,b;wire[`width:1]out;regsel;scale_mux#(`width)m1(.out(out),.sel(sel),.b(b),.a(a)); initialbegin$monitor($stime,,"sel=%ba=%bb=%bout=%b",sel,a,b,out); $dumpvars(2,mux_test);sel=0;b={`width{1'b0}};a={`width{1'b1}};#5sel=0;b={`width{1'b1}};a={`width{1'b0}};#5sel=1;b={`width{1'b0}};a={`width{1'b1}};#5sel=1;b={`width{1'b1}};a={`width{1'b0}};#5$finish;endendmodule四、仿真结果与波形LAB2:简单时序逻辑电路的设计一、实验目的掌握根本时序逻辑电路的实现。

计算机系统结构实验报告

计算机系统结构实验报告

计算机系统结构实验报告一.流水线中的相关实验目的: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之后,不设置任何断点运行。

北邮计算机系统结构实验报告

北邮计算机系统结构实验报告

高级计算机系统结构实验报告实验二指令流水线相关性分析实验三DLX处理器程序设计实验四代码优化实验五循环展开专业计算机科学与技术班级2015姓名学号2015实验二指令流水线相关性分析1. 实验目的:通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。

2. 实验设备环境:2.1 WinDLX模拟器可以装入DLX汇编语言程序,然后单步、设置断点或者连续执行该程序;2.2 CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来;2.3 模拟器还提供了对流水线操作的统计功能;2.4 该模拟器对理解流水线和RISC处理器的特点很有帮助;2.5 所有浮点运算部件的延时都设定为4个周期;3. 实验原理:指令流水线中主要有结构相关、数据相关、控制相关。

相关影响流水线性能。

3.1数据相关定义:原有先后顺序的两条指令(I1,I2)在对共享变量(位置)进行读、写时,指令流水线中实际完成的读、写顺序与原有顺序不一致,导致流水线输出错误。

三类数据相关:写读(WR)相关读写(RW)相关写写(WW)相关解决方法技术:1.使某些流水线指令延迟、停顿一或多个周期。

2.双端口存储器:如果指令和数据放在同一个存储器。

3.设置两个存储器:一个数据存储,一个为指令存储器。

4.软件优化编译:通过指令重新排序,消除数据相关。

5.定向技术:又称旁路技术或专用通路技术,是使后续指令提前得到前指令的运算结果(适合ALU类指令)3.2结构相关定义:如果某指令在流水线重叠执行过程中,硬件资源满足不了指令重叠执行的要求,会产生资源冲突或竞争,称为流水线结构相关解决方法技术:1.延迟技术:使某些指令延迟、停顿一或多个时钟周期2.双端口存储器:允许同时读两个数据或指令3.设置双存储器(哈弗结构):一个数据存储,一个指令存储。

4软件优化编译:通过指令重新排序消除结构相关。

计算机系统结构实训课程学习总结指令集设计与流水线优化

计算机系统结构实训课程学习总结指令集设计与流水线优化

计算机系统结构实训课程学习总结指令集设计与流水线优化在计算机科学与技术领域中,计算机系统结构是一个至关重要的学科,它关注的是如何设计和构建计算机系统的硬件和软件部分,以及它们之间的协作运行。

在我参加的计算机系统结构实训课程中,我们主要学习了指令集设计和流水线优化的相关知识。

在本文中,我将对我在实训课程中所学到的内容进行总结和回顾。

首先,我们学习了什么是指令集设计。

指令集是一组用于控制计算机硬件操作的指令的集合。

在实际应用中,不同的计算机体系结构会采用不同的指令集。

指令集设计的目标是设计一种高效、功能强大且易于使用的指令集,以满足计算机系统的需求。

在实训课程中,我们学习了不同类型的指令,如数据传输指令、算术指令和逻辑指令等,并了解了指令格式的设计原则和优化方法。

其次,我们学习了如何进行流水线优化。

流水线是一种并行处理的技术,它将计算机指令的执行过程划分为多个独立的阶段,并在每个阶段同时执行不同的指令。

这样可以提高计算机的吞吐量和执行效率。

然而,在实际应用中,流水线可能会面临一些问题,如数据依赖、流水线冲突等。

为了解决这些问题,我们学习了流水线的优化技术,如超标量技术、预测执行技术和乱序执行技术等,以提高流水线的效率和性能。

在实训课程中,我们进行了一系列的实践操作,以更好地理解和应用所学的知识。

我们使用了一些模拟器和工具,如MIPS模拟器、Verilog仿真工具等,来模拟和测试指令集设计和流水线优化的实际效果。

通过这些实践操作,我深入了解了指令集设计和流水线优化的原理和方法,并且掌握了一定的实际操作技能。

通过参加计算机系统结构实训课程,我收获了很多知识和经验。

首先,我学会了如何进行指令集设计,了解了不同指令类型的设计原则和优化方法。

其次,我掌握了流水线优化的技术,学会了解决流水线中可能遇到的问题。

最后,我通过实践操作提高了自己的实际操作能力,熟悉了一些相关的工具和模拟器。

总的来说,计算机系统结构实训课程是一门非常实用和有趣的课程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:计算机系统结构实验名称:WINDLX模拟实验一、二班级:2010211309姓名:毕鹏飞学长班内序号:日期:2012年3月18日目录实验一WINDLX模拟器安装及使用 (3)简要介绍WINDLX模拟器结构和功能 (3)Register 窗口 (4)Code 窗口 (4)Pipeline 窗口 (5)Clock Cycle Diagram 窗口 (5)Statistics 窗口 (6)Breakpoint 窗口 (6)实验二指令流水线相关性分析 (8)1.实验目的 (8)2.实验原理 (8)3.实验过程及结果分析 (8)3.1.观察程序中的数据/控制/结构相关及指令组合 (8)3.2.考察增加浮点运算部件对性能的影响(N=7) (10)3.3.考察增加forward部件对性能的影响(N=7,floating为2,4) (11)3.4.观察转移指令在转移成功和转移不成功时候的流水线开销 (12)4.实验总结 (13)实验三DLX处理器程序设计 (13)一、实验目的 (13)二、实验设备环境 (13)三、实验内容和要求 (13)四、代码清单及注释 (13)五、程序相关性分析结果 (15)六、实验心得 (17)实验四代码优化实验 (18)实验目的: (18)实验原理: (18)实验核心思想 (18)优化程序代码清单及注释说明: (18)四、实验分析: (20)五、实验总结: (23)实验五循环展开(选作) (24)实验目的: (24)实验原理: (24)实验核心思想 (24)优化程序代码清单及注释说明: (24)四、实验分析: (25)五、实验总结: (27)实验一WINDLX模拟器安装及使用简要介绍WINDLX模拟器结构和功能第一次打开WINDLX模拟器,我们可以看到如下六个小窗口。

Register窗口显示寄存器中的内容。

为此,双击主窗口中的Register 图标。

Register 窗口会显示各个寄存器中的内容。

看一下R1到R5的值。

按F5使模拟继续运行到下一个断点处,有些值将发生改变。

Code 窗口该窗口代表存储器内容的三栏信息,从左到右依次为:地址(符号或数字)、命令的十六进制机器代码和汇编命令。

现在,点击主窗口中的Execution开始模拟。

在出现的下拉式菜单中,点击Single Cycle或按F7键。

这时,窗口中带有地址“$TEXT ”的第一行变成黄色。

按下F7键,模拟就向前执行一步,第一行的颜色变成橘黄色,下一行变成黄色.。

这些不同颜色指明命令处于流水线的哪一段。

Pipeline窗口显示DLX处理器的内部结构。

窗口中用图表形式显示了DLX的五段流水线。

你应尽可能地扩大此窗口,以便处于不同流水段的指令都能够在图表中显示。

水线的时空图。

该时空图中显示了每一个时隙内的运行情况。

对准Clock cycle diagram窗口中相应命令所在行,然后双击它,弹出一个新窗口。

窗口中会详细显示每一个流水段处理器内部的执行动作。

该窗口是对运行程序中数据的分析。

Statistics 窗口提供各个方面的信息:模对模拟的影响。

Breakpoint 窗口通过Code 窗口可以观察代码(如果未打开,双击图标Code),可以通过Breakpoint 来观察代码运行的情况。

单击Set Breakpoint ,将弹出一个新的"Set Breakpoint" 窗口。

通过此窗口,可以选择命令运行到流水线的哪一阶段时,程序停止执行。

缺省为ID段。

点击OK 关闭窗口。

实验二指令流水线相关性分析1.实验目的通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。

2.实验原理指令流水线中主要有结构相关、数据相关、控制相关。

相关影响流水线性能。

3.实验过程及结果分析3.1.观察程序中的数据/控制/结构相关及指令组合3.1.1.数据相关及指令组合1)截图及分析在第25个周期里(两次输入都是7),Clock Cycle Diagram窗口的时空图(下图为多了两个周期后的,以明显显示橘黄色的R-Stall)和Pipeline窗口中的流图第一次出现了橘黄色的R-Stall。

点击Pipeline的橘黄色框,出现的Information about seqir5,r3,0xa中有右图:lbu r3,0x0(r2)要在WB周期写回r3中的数据,而下一条指令seqi r5,r3,0xa 要在intEX周期中读取r3中的数据。

发生了写读相关。

所以为了避免冲突,seqi r5,r3,0xa的intEX指令延迟了一个周期进行。

2)相关指令组合lbu r3,0x0(r2)seqi r5,r3,0xa3.1.2.控制相关及指令组合:1)截图及分析在第四时钟周期,第一条命令正处于MEM段,第二条命令处于intEX段,第四条命令处于IF段,而第三条命令处于"aborted"。

原因是:第二条命令jal InputUnsigned是无条件分支指令,但只有在第三个时钟周期,jal 指令被译码后才知道。

这时,下一条命令movi2fp已经取出,但需执行的下一条命令在另一个地址处,因而,movi2fp的执行应被取消,在流水线中留下气泡。

此处发生了控制相关。

2)相关指令组合addi r1, r0 , 0x1000jal InputUnsignedmovi2fp f10,r1sw SaveR2[r0],r23.1.3.结构相关及指令组合1)截图及分析在下图中,Clock Cycle Diagram窗口的时空图可发现指令Stall了4个周期。

点击右上图Pipeline窗口流水线的亮黄色框,则弹出的Information about addi r2,r2,0x1显示如右图:addi r2, r2, 0x1 该指令与它前面的一天指令addr1,r1, r3发生了结构相关。

由于上一条指令由于数据相关需要停4个周期,在ID段后停滞,不能进入intEX段,故addi r2,r2,0x1 就不能进入ID段,译码部分已经被占用。

故发生了结构相关。

2)相关指令组合add r1,r1, r3addi r2, r2, 0x13.2.考察增加浮点运算部件对性能的影响(N=7)1)结果截图浮点运算部件均为1浮点运算部件均为2N=7,floating 为2,4且有forward 部件时条件转移结果如下图:条件转移分析(有数据通路): 静态指令调度算法只能解决数据相关,条件转移结果与原来相比没有变化。

转移指令一共9条。

其中成功转移的2条,占22.22%,不成功转移的7条,占84.62%。

2) 结果分析若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低。

若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,每执行一条条件转移指令,一条x段流水线就有x-2个流水线被浪费掉,执行效率降低,性能有一定的损失。

4.实验总结这次实验,通过观察程序中出现的数据相关、控制相关、结构相关,以及他们的指令组合,并考察增加浮点运算部件、forward部件对性能的影响,观察转移指令在转移成功和不成功时的流水线开销。

我更加深入的认识了流水线的概念。

WINDLX软件使得流水线的知识变得更加形象生动,易于理解。

试验中,我一开始因为对软件的不了解,摸索了一段时间,后来才变得很顺利,出现问题也知道该如何充分利用软件功能来分析理解。

我认为流水线技术确实可以提高计算机的执行效率,但是它的不足之处也是很多的。

比如发生一些相关的时候就需要延迟,当浮点运算部件,前向部件,条件转移等问题都会对吞吐率有很大的影响。

如果要将流水线的效率做到最大,就需要对代码进行优化处理,而这个并没有什么唯一的方法,只能通过个人的分析,手工进行。

实验三DLX处理器程序设计一、实验目的学习使用DLX 汇编语言编程,进一步分析相关现象。

二、实验设备环境DLX汇编语言环境三、实验内容和要求自编一段汇编代码,完成一维向量加法运算,并输出结果。

观察程序中出现的数据/控制/结构相关。

(注:使用一维数组表示一维向量。

)四、代码清单及注释*向量加法设计*1、源代码.dataVectorLength: .word 16Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 Printf1: .asciiz "Vector ="Printf2: .asciiz " %f".align 2PrintPrompt: .word Printf1PrintPar: .word Printf2Result: .space 4.textmain:addi r14,r0,PrintPrompttrap 5lw r20,VectorLengthaddi r2,r0,0Loop:ld f10,Vector1(r2)ld f12,Vector2(r2)cvti2d f0,f10cvti2d f2,f12addd f4,f2,f0Finish:;**** Finish,write result into stdoutsd Result,f4addi r14,r0,PrintPartrap 5addi r2,r2,4subi r20,r20,1bnez r20,Loop;**** Endtrap 02、注释VectorLength: .word 16Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 声明向量长度以及声明向量1、2Result: .space 4存放打印数据的空间申请Loop:ld f10,Vector1(r2)ld f12,Vector2(r2)循环体中读入向量addd f4,f2,f0加法运算trap 5系统中断,输出结果3、运行结果五、程序相关性分析结果1、数据、控制、结构相关数据相关。

所以当对当前指令的操作数寄存器进行操作(EX)的时候,前几条指令的运算结果还未写回(WB)结果寄存器,由此产生数据相关。

结构相关。

由于程序只简单的做了一次加法,所以没有结构相关产生。

控制相关。

于系统按照预测成功来执行指令,所以执行bnez后马上将其下一条指令trap读进来。

2、浮点运算部件带来的影响将浮点加法器有1个增加为2个后,程序执行的性能未得到提升。

相关文档
最新文档