北邮 计算机系统结构 实验报告(全部)指令流水线相关性分析 DLX 处理器程序设计 代码优化
- 格式:docx
- 大小:603.27 KB
- 文档页数:28
计算机系统结构实验报告一.流水线中的相关实验目的: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之后,不设置任何断点运行。
北京邮电大学实验报告课程名称计算机系统结构计算机学院03班王陈(11)目录实验一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)融会贯通计算机组成原理各章节教学内容,通过知识的综合应用,加深对CPU各模块工作原理及相互联系的认识,建立清晰的整机概念。
(2)掌握硬布线控制器的设计方法。
(3)学习运用可编程逻辑技术进行逻辑设计和调试的基本步骤和方法(4)学习运用VHDL语言,用编写编译下载程序到altera芯片运行。
(5)培养科学研究的独立工作能力,获得工程设计与组装调试的实践经验二、实验设备TEC-8实验系统一台PC计算机一台逻辑笔一只USB下载器一根三、设计与调试任务(1)设计一个硬连线控制器,和TEC-8模型计算机的数据通路结合在一起,构成一个完整的CPU,该CPU要求:能够完成控制台操作:启动程序运行、读存储器、写存储器、读寄存器、写寄存器;能够执行表中的指令,完成规定的操作。
(2)在Quarts下对硬布线控制器设计方案进行编辑和编译。
(3)将编译后的硬布线控制器下载到TEC-8实验台上的EPM7128中,使其成为一个硬布线控制器。
(4)根据指令系统,编写检测硬布线控制器正确性的测试程序,并用测试程序对硬布线控制器在单拍方式下进行调试,直到成功。
四、实验原理(1)硬布线控制器基本原理硬布线控制器是一种把控制部件看作产生专门固定时序控制信号的逻辑电路,这种逻辑电路是一种由门电路和触发器构成的复杂树形逻辑网络。
当执行不同机器指令时,通过激活一系列彼此很不相同的控制信号来实现对指令的解释。
每个微操作控制信号C是一系列输入量的逻辑函数,即用组合逻辑来实现C=f(Im,Mi,Tk,Bj)Im是机器指令操作码译码器的输出信号,Mi是节拍电位信号,Tk是节拍脉冲信号,Bj表示来自执行部件的反馈信息,是状态条件信号。
在TEC-8实验系统中,节拍脉冲信号Tk,(T1~T3)已经直接输送给数据通路。
北邮计算机组成实验报告北邮计算机组成实验报告一、实验概述计算机组成实验是计算机科学与技术专业的一门重要实践课程,旨在通过实际操作和实验验证,加深学生对计算机硬件组成的理解和掌握。
本次实验的主要内容是通过搭建一个简单的计算机系统,包括CPU、存储器和输入输出设备等,来实现一个简单的指令执行过程。
二、实验目的1. 理解计算机系统的基本组成部分,包括CPU、存储器和输入输出设备等。
2. 掌握计算机指令的执行过程,包括指令的获取、解码和执行等。
3. 熟悉计算机系统的工作原理,包括时钟信号、总线传输和寄存器的使用等。
三、实验过程1. CPU设计与搭建在本次实验中,我们选择了基于MIPS架构的CPU进行设计和搭建。
首先,我们需要设计并实现CPU的指令集,包括算术运算、逻辑运算和数据传输等。
然后,根据指令集的要求,设计并实现CPU的控制逻辑电路,包括指令获取、解码和执行等。
最后,通过连接寄存器、ALU和存储器等组件,完成CPU的搭建。
2. 存储器设计与实现在计算机系统中,存储器是用于存储指令和数据的重要组成部分。
在本次实验中,我们选择了SRAM作为存储器的实现方式。
首先,我们需要根据CPU的指令集和数据需求,确定存储器的容量和位宽等参数。
然后,设计并实现存储器的读写控制电路,以实现指令和数据的读写功能。
最后,通过连接存储器和CPU,完成存储器的搭建。
3. 输入输出设备设计与实现在计算机系统中,输入输出设备用于与外部环境进行数据交互。
在本次实验中,我们选择了键盘和显示器作为输入输出设备的实现方式。
首先,我们需要设计并实现键盘的输入控制电路,以实现对输入数据的获取和传输。
然后,设计并实现显示器的输出控制电路,以实现对输出数据的显示和传输。
最后,通过连接输入输出设备和CPU,完成输入输出设备的搭建。
四、实验结果与分析通过实验,我们成功搭建了一个简单的计算机系统,并进行了指令执行的测试。
在测试过程中,我们编写了一些简单的程序,包括加法、乘法和逻辑运算等。
北邮大三计算机体系结构实验三DLX处理器程序设计DLX处理器是一种精简指令集计算机体系结构,它包含了32个通用寄存器,支持32位指令和数据,以及高度定制化的流水线架构,能够提供高效的指令执行能力。
本文将针对DLX处理器进行程序设计,主要实现一个简单的计算程序。
首先,我们将使用汇编语言来设计DLX处理器的程序。
DLX处理器的指令集采用32位指令,并且按照固定格式进行编码。
在本实验中,我们将实现一个简单的加法程序。
首先,我们需要定义一些常量和变量。
在DLX处理器中,可以使用32个通用寄存器来存储数据和中间结果。
我们可以使用其中的3个寄存器来存储输入数据和输出结果。
```assembly.datainput1: .word 5input2: .word 7result: .word 0```接下来,我们需要编写程序的主体部分。
程序的主体部分包含了一系列的指令,用来执行具体的计算任务。
在本实验中,我们将使用ADD指令来执行加法操作,并将结果存储到result寄存器中。
```assembly.textmain:L.D F0, input1L.D F2, input2ADD.DF4,F0,F2S.D result, F4```在这段代码中,我们首先使用L.D指令将input1中的值加载到浮点寄存器F0中,然后使用L.D指令将input2中的值加载到浮点寄存器F2中。
接着,我们使用ADD.D指令将F0和F2中的值相加,并将结果存储到F4中。
最后,我们使用S.D指令将F4中的值存储到result寄存器中。
最后,我们需要在程序中添加一些必要的指令,用来启动和结束程序的执行。
在DLX处理器中,程序的执行是按照顺序进行的,因此我们只需要添加一些简单的指令即可。
```assemblystart:j mainnop```总结起来,本文针对北邮大三计算机体系结构实验三DLX处理器程序设计,我们使用汇编语言设计了一个简单的加法程序。
北京邮电大学操作系统实验实验报告操作系统实验实验报告实验日期:11月23日实验名称:实验一一、实验目的1.学习LINUX操作系统2.熟悉UNIX/LINUX的常用基本命令3.理解fork()与clone()函数的区别和联系4.深入理解生产者和消费者问题二、实验内容(1)安装LINUX:(2)熟悉UNIX/LINUX的常用基本命令如ls、who、wc、pwd、ps、pstree、top,cat,cd,chgrp,chmod,chown,comm,cmp,cp,rm,diff,mv,rmdir等,了解环境。
(3)比较fork()和clone()的功能,利用fork()生成子进程和clone()生成线程。
(4)利用pthread库,通过其中的mutex来实现生产者和消费者问题。
三、项目要求及分析基本要求:(1)安装LINUX:使用FEDORA11(2)熟悉UNIX/LINUX的常用基本命令如ls、who、wc、pwd、ps、pstree、top,cat,cd,chgrp,chmod,chown,comm,cmp,cp,rm,diff,mv,rmdir等,了解环境。
(3)比较fork()和clone()的功能,利用fork()生成子进程和clone()生成线程。
(4)利用pthread库,通过其中的mutex来实现生产者和消费者问题。
四、具体实现1.linux常用指令1.1 目录操作和DOS 相似,Linux 采用树型目录管理结构,由根目录开始一层层将子目录建下去,各子目录以“/”隔开。
用户login后,工作目录的位置称为home directory,由系统管理员设定。
‘—’符号代表自己的home directory,例如:~/myfile 是指自己home目录下myfile这个文件。
Linux 的通配符有三种:‘*’和‘?’用法与DOS相同,‘’代表区间内的任一字符,如test[05]即代表test0,test1,……,test5的集合。
实验报告学院: 计算机学院课程名称: 计算机系统结构实验名称: 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) 观察程序中出现的数据/控制/结构相关。
北京邮电大学计算机学院《计算机系统结构》课程实验2015年4月实验三DLX处理器程序设计一、实验类别:综合型二、实验目的:学习使用DLX汇编语言编程,进一步分析相关现象三、实验学时:4四、实验组人数:1/1五、实验设备环境:DLX汇编语言环境六、实验原理:掌握向量运算算法和编程方法。
七、教学要点与学习难点:DLX汇编语言八、实验内容和要求:自编一段汇编代码,完成两双精度浮点一维向量的加法(或乘除法)运算,并输出结果。
向量长度>=16。
观察程序中出现的数据/控制/结构相关九、实验步骤:(1)熟悉DLX汇编语言。
(2)编写两双精度浮点一维向量的加法运算程序。
(3)对此程序完成上面实验二中1)、2)、3)、4)方面的分析。
程序代码.data;初始化两个用于相加的一维向量(双精度浮点数),向量长度为20a: .double 1.9, 2.1, 3.7, 4.6, 5.5, 6.4, 7.3, 8.2, 9.1, 10.1,11.2,12.3,13.4,14.5,15.6,16.7,17.8,18.9,19.0,20.2b: .double 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.8, 10.9,11.8,12.7,13.6,14.5,15.4,16.3,17.2,18.1,19.9,20.8PrintfFormat: .asciiz "The result is \n\n%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\n\n".align 2PrintfPar: .word PrintfFormatr: .space 200;r为保存相加结果的向量空间.text.global mainmain:addi r1,r0,0 ;r1计数相加的次数addui r4,r0,8 ;r4为常数8loop: ;循环计算向量相加结果subi r2,r1,20 ;r1=20时,跳转到finishbeqz r2,finishmultu r3,r1,r4 ;r3为当前分量相对于向量基址的偏移(每个分量占8B)ld f0,a(r3) ;取a中第r1个分量ld f2,b(r3) ;取b中第r1个分量addd f4,f0,f2 ;相加结果放在f4中sd r(r3),f4 ;将相加结果放入结果向量r中addi r1,r1,1 ;下一分量j loopfinish: ;输出向量相加的结果addi r14,r0,PrintfPartrap 5trap 0运行结果Statistics可以看到具体数据情况和产生相关的比例等结果分析1.数据相关由Statistics中的知道,发生了55.02%的数据相关。
实验二指令流水线相关性分析实验类别:验证实验实验目的:通过使用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的阶乘,分别是运算部件为都为一个,运算部件都为两个的数据统计。
实验作业3:DLX流水线实验报告计算机体系结构姓名:学号:班级:班级号:《计算机系统结构》第三次实验作业一、实验目的本次实验的主要目的是熟悉dlx流水线以及结构相关、数据相关、控制相关、前送(forwarding)等概念和技术。
二、实验内容1.了解各种指令在dlx流水线中的运行过程;2.流水线相关实验;3.转发技术对对流水线性能的影响;4.调查更改部件数量和延迟次数对性能的影响。
三、实验步骤及结果分析1.了解Dlx管线中各种指令的操作流程如上次实验那样,读入并运行fact.s和input.s。
请从程序中选择有代表性的5条不同类型的指令,并描述每条指令在5段流水线中每步完成的工作。
(1)(2)(3)(4)(5)2.流水线相关实验在管道窗口中观察,分别找出结构相关性、数据相关性和控制相关性,并描述风险情况以及如何在windlx中解决这些风险。
(1)结构相关在循环期间执行subdf0、F0、F4和jfact时,硬件资源无法满足jfact,因为Alu被占用,循环进入ex阶段并承担结构风险。
Windlx通过阻止EX1循环来解决这个问题。
(2)数据相关性bnezr5,input.finish需要使用seqi的计算结果r5,所以产生数据相关的冒险。
winddlx通过阻塞解决问题。
(3)控制相关语句lwr2、saver2(R0)被中止,这是由控制相关风险引起的。
因为前面的语句jinput Loop是一个跳转语句,并且在解码后可以知道指定给ex stage的语句的函数,所以执行该指令的LW语句被取消。
3.前送(forwarding)技术对流水线性能的影响(1)打开转发:没有开启forwarding:。
课程名称:计算机系统结构实验名称: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个后,程序执行的性能未得到提升。