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

合集下载

计算机系统结构实验报告

计算机系统结构实验报告

计算机系统结构实验报告实验目的:掌握计算机系统的基本结构和工作原理,了解计算机系统的组成部分及其相互关系。

实验仪器和材料:计算机硬件设备(主机、硬盘、内存、显卡等)、操作系统、实验指导书、实验报告模板。

实验原理:实验步骤:1.搭建计算机硬件设备,将主机、硬盘、内存、显卡等组装连接好。

2. 安装操作系统,如Windows、Linux等。

3.启动计算机,进入操作系统界面。

4.打开任务管理器,查看CPU的使用情况。

5.打开任务管理器,查看内存的使用情况。

6.运行一些应用程序,观察CPU和内存的使用情况。

7.尝试使用输入输出设备,如键盘、鼠标等。

实验结果:通过实验,我们可以观察到计算机系统的硬件部分和软件部分的工作情况。

通过任务管理器,我们可以查看到CPU的使用情况和内存的使用情况。

在运行应用程序时,我们可以观察到CPU和内存的使用情况的变化。

通过使用输入输出设备,我们可以与计算机进行交互操作。

实验分析:从实验结果可以看出,计算机系统的硬件部分和软件部分都是相互关联的。

CPU作为计算机的核心部件,负责执行各种指令,通过数据传输和计算来完成各种操作。

而内存则用于存储数据和程序,通过读写操作来完成对数据的处理。

硬盘则用于长期存储数据。

操作系统则是计算机系统的管理者,通过调度CPU和内存的使用来实现对计算机资源的分配。

结论:计算机系统是由硬件和软件部分组成的,其中硬件部分包括CPU、内存、硬盘等,软件部分包括操作系统、应用程序等。

计算机系统通过CPU 的运算和数据传输来实现各种操作。

通过实验,我们可以观察到计算机系统的工作情况,并深入了解计算机系统的组成和工作原理。

实验总结:通过本次实验,我们对计算机系统的基本结构和工作原理有了更深入的了解。

实验中,我们搭建了计算机硬件设备,安装了操作系统,并通过观察和分析实验结果,进一步认识到计算机系统的组成部分和各部分之间的相互关系。

通过操作输入输出设备,我们还实践了与计算机进行交互操作的过程。

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

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

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

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

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

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

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

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

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

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

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

北邮数据结构实验报告

北邮数据结构实验报告

北邮数据结构实验报告摘要:本报告基于北邮数据结构实验,通过实际操作和实验结果的分析,总结和讨论了各实验的目的、实验过程、实验结果以及相关的问题和解决方法。

本报告旨在帮助读者了解数据结构实验的基本原理和应用,并为今后的学习和研究提供参考。

1. 实验一:线性表的操作1.1 实验目的本实验旨在掌握线性表的基本操作以及对应的算法实现,包括插入、删除、查找、修改等。

1.2 实验过程我们使用C++语言编写了线性表的相关算法,并在实际编程环境下进行了测试。

通过插入元素、删除元素、查找元素和修改元素的操作,验证了算法的正确性和效率。

1.3 实验结果经过测试,我们发现线性表的插入和删除操作的时间复杂度为O(n),查找操作的时间复杂度为O(n),修改操作的时间复杂度为O(1)。

这些结果与预期相符,并反映了线性表的基本特性。

1.4 问题与解决方法在实验过程中,我们遇到了一些问题,例如插入操作的边界条件判断、删除操作时的内存释放等。

通过仔细分析问题,我们优化了算法的实现,并解决了这些问题。

2. 实验二:栈和队列的应用2.1 实验目的本实验旨在掌握栈和队列的基本原理、操作和应用,并进行实际编程实现。

2.2 实验过程我们使用C++语言编写了栈和队列的相关算法,并在实际编程环境下进行了测试。

通过栈的应用实现表达式求值和逆波兰表达式的计算,以及队列的应用实现图的广度优先遍历,验证了算法的正确性和效率。

2.3 实验结果经过测试,我们发现栈的应用可以实现表达式的求值和逆波兰表达式的计算,队列的应用可以实现图的广度优先遍历。

这些结果证明了栈和队列在实际应用中的重要性和有效性。

2.4 问题与解决方法在实验过程中,我们遇到了一些问题,例如中缀表达式转后缀表达式的算法设计、表达式求值的优化等。

通过查阅资料和与同学的讨论,我们解决了这些问题,并完善了算法的实现。

3. 实验三:串的模式匹配3.1 实验目的本实验旨在掌握串的基本操作和模式匹配算法,并进行实际编程实现。

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

北邮计算机组成实验报告

北邮计算机组成实验报告

一、实验目的1. 了解计算机组成原理的基本概念和组成结构。

2. 掌握计算机各部件的功能和相互关系。

3. 通过实验,加深对计算机组成原理的理解和认识。

4. 培养动手能力和实际操作技能。

二、实验内容本次实验主要分为以下几个部分:1. 计算机组成原理实验台介绍2. 数据通路和控制器实验3. 存储器实验4. 输入/输出实验5. 系统总线实验三、实验步骤1. 计算机组成原理实验台介绍实验开始前,先对实验台进行简要介绍,包括实验台的功能、操作方法、注意事项等。

2. 数据通路和控制器实验(1)观察数据通路和控制器结构,了解其组成和功能。

(2)通过实验,验证数据通路和控制器的基本工作原理。

(3)掌握数据通路和控制器的设计方法。

3. 存储器实验(1)观察存储器结构,了解其组成和功能。

(2)通过实验,验证存储器的基本工作原理。

(3)掌握存储器的设计方法。

4. 输入/输出实验(1)观察输入/输出设备,了解其组成和功能。

(2)通过实验,验证输入/输出设备的基本工作原理。

(3)掌握输入/输出设备的设计方法。

5. 系统总线实验(1)观察系统总线结构,了解其组成和功能。

(2)通过实验,验证系统总线的基本工作原理。

(3)掌握系统总线的设计方法。

四、实验结果与分析1. 数据通路和控制器实验通过实验,我们成功验证了数据通路和控制器的基本工作原理。

在实验过程中,我们了解到数据通路由数据总线、控制总线、地址总线等组成,控制器负责协调各部件的工作。

2. 存储器实验通过实验,我们成功验证了存储器的基本工作原理。

在实验过程中,我们了解到存储器由存储单元、地址译码器、读写控制电路等组成,存储单元负责存储数据。

3. 输入/输出实验通过实验,我们成功验证了输入/输出设备的基本工作原理。

在实验过程中,我们了解到输入/输出设备通过接口电路与主机相连,实现数据的输入和输出。

4. 系统总线实验通过实验,我们成功验证了系统总线的基本工作原理。

在实验过程中,我们了解到系统总线由数据总线、地址总线、控制总线等组成,负责传输数据和控制信号。

北邮 大三下 计算机系统结构 代码优化 实验报告

北邮 大三下 计算机系统结构 代码优化 实验报告

课程名称:计算机系统结构实验名称:代码优化实验班级:09211311姓名:schnee学号:日期:2012年4月20日目录1.实验目的 (3)2.实验原理 (3)3.优化程序代码清单及注释说明 (3)4.实验分析 (4)观察程序中出现的数据/结构/控制相关,指出程序中出现上述现象的指令组合。

(4)考察增加浮点运算部件对性能的影响。

(5)考察增加FORWARD部件对性能的影响。

(5)观察转移指令在转移成功和转移不成功时候的流水线开销。

(6)5.实验心得和总结 (6)1.实验目的学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。

2.实验原理采用静态调度方法重排指令序列,减少相关,优化程序。

3.优化程序代码清单及注释说明1..data2.VectorLength: .word 163.Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,164.Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,165.Printf1: .asciiz "Vector ="6.Printf2: .asciiz " %f"7..align 28.PrintPrompt: .word Printf19.PrintPar: . word Printf210.Result: .space 411..text12.main: ;**** Print prompt "Vector ="13.addi r14,r0,PrintPrompt14.trap 515. addi r2,r0,0 ;调换两行代码,;提前写入R2以减少下面语句的相关16.lw r20,VectorLength17.Loop:18.ld f10,Vector1(r2)19.ld f12,Vector2(r2)20.addi r2,r2,4 ;r2地址加4个字节,;相当于寻找下一个元素;将下面的句子1移动到此处21.cvti2d f0,f10 ;把int型改为double D0(f0:f1)22.cvti2d f2,f12 ;把int型改为double D1(f2:f3)23.subi r20,r20,1 ;r20值设为16,此处-1以循环16次;此处是将下面的句子2移动到此处24. addd f4,f2,f0 ;add D2=D0+D1;**** Finish,write result into stdout25.sd Result,f426.addi r14,r0,PrintPar27.trap 528.;addi r2,r2,4 ;句子129.;subi r20,r20,1 ;句子230. bnez r20,Loop;**** End31.trap 04.实验分析这个实验的优化思路在于:1、根据原先实验3中实验分析1)中关于相关性的分析来找出代码中的相关性,2、对其中具有相关性的指令,通过把无关紧要的代码提前或者拖后至相关性语句之间,以此来减少甚至消除数据相关性所造成的stall带来的效率低下。

计算机系统结构实验报告

计算机系统结构实验报告

计算机系统结构实验报告计算机系统结构实验报告引言:计算机系统结构是计算机科学领域中的重要课题,它研究计算机硬件和软件之间的关系,以及如何优化计算机系统的性能和效率。

本实验报告旨在介绍我们小组在计算机系统结构实验中的设计和实现过程,以及所获得的实验结果和经验。

一、实验目的计算机系统结构实验的目的是通过设计和实现一个简单的计算机系统,加深对计算机硬件和软件之间关系的理解,以及掌握计算机系统的组成和工作原理。

具体目标包括:1. 理解计算机系统的层次结构和组成部分。

2. 理解指令集架构和微指令集架构的区别。

3. 设计和实现一个简单的计算机系统,包括处理器、存储器和输入输出设备。

4. 测试和验证计算机系统的功能和性能。

二、实验设计与实现1. 计算机系统结构设计我们设计了一个基于冯·诺依曼体系结构的计算机系统,包括中央处理器(CPU)、存储器和输入输出设备。

CPU由控制单元和算术逻辑单元组成,控制单元负责指令的解码和执行,算术逻辑单元负责数据的运算和逻辑操作。

存储器用于存储指令和数据,我们选择了静态随机存储器(SRAM)作为主存储器。

输入输出设备包括键盘、显示器和磁盘。

2. 指令集架构设计我们选择了经典的冯·诺依曼指令集架构作为基础,定义了一套简单的指令集,包括算术运算、逻辑运算和数据传输等指令。

我们还设计了一套微指令集架构,用于实现指令的执行过程。

微指令集中包含了各种控制信号和操作码,用于控制CPU的工作。

3. 硬件设计与实现我们使用硬件描述语言(HDL)进行硬件设计和实现。

通过使用HDL,我们可以描述和模拟计算机系统的各个组成部分,并进行功能验证和性能分析。

我们使用Verilog HDL进行设计和实现,借助Verilog仿真器进行功能验证。

4. 软件设计与实现除了硬件设计和实现,我们还编写了一些软件程序,用于测试和验证计算机系统的功能和性能。

我们编写了一些简单的程序,包括算术运算、逻辑运算和数据传输等,用于测试CPU的指令执行和数据处理能力。

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

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

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

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

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

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

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

.实验总结 (6)实验二指令流水线相关性分析 (6).实验目的 (7).实验环境 (7).实验步骤 (7)·实验过程............................................................................. 错误!未定义书签。

.实验总结 (12)实验三DLX处理器程序设计 (13).实验目的 (13)·实验环境............................................................................. 错误!未定义书签。

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

高级计算机系统结构实验报告实验二指令流水线相关性分析实验三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软件优化编译:通过指令重新排序消除结构相关。

3.3控制相关定义:控制相关是指因程序执行转移类指令而引起的冲突相关。

包括无条件转移、条件转移、子程序调用、中断等,它们属于分支指令,执行中可能改变程序方向,造成流水线断流。

解决方法技术:1、静态分支技术➢静态转移预测技术(猜测法)➢延迟转移➢提前形成条件码,生成转移目标地址➢改进循环程序2、动态分支预测技术➢转移历史表BHT。

➢转移目标缓冲栈(BTB)➢转移目标指令缓冲栈BTIB4. 实验步骤:4.1 观察程序中出现的数据/控制/结构相关。

指出程序中出现上述现象的指令组合。

按要求,初始化WinDLX ,将所有浮点运算部件的延时都设定为4周期;载入fact.s和input.s先总体上观察数据/结构/控制相关。

装入后点击F5运行,在结果分析中发现无结构相关,有数据相关和控制相关。

4.1.1数据相关分析可知第0*0000012c条指令subd f0,f0,f4对f0进行了读写操作,写回发生在MEM阶段,led f0,f4指令在ID时刻要读取f0,f4的信息,可知关于f0两条指令发生了写读相关(WR)。

如上图所示,此时由于指令subd f0,f0,f4,在MEM时才写回f0,为保证程序的正确运行,led f0,f4的ID取数阶段顺延至MEM完成后才进行,这样导致了流水线的断流,影响了程序的运行效率。

4.1.2控制相关分析可知第0*00000130条指令jfact.Loop为循环指令,指令在EX时刻才能判别指令是否发生转移,此时发生了控制相关。

如下所示,此时指令跳转成功,故顺序取出的指令必须中断,并且转向取出转移到的指令。

jfact.Loop在EX时发现跳转成功,则在EX阶段马上结束指令顺序取出的指令sd PrintfValue(r0),f0,转而执行led f0/4指令的取指阶段ID。

由于此控制相关使得流水线断流一个时钟周期。

4.2考察增加浮点运算部件对性能的影响。

4.2.1不附加部件在载入fact.s和input.s后,对程序进行初始化设置,使得浮点数运算时延均设为4。

按F5运行程序,要求输入时,输入12,以后的运算也均输入12。

Statistics 窗口中的各种统计数字:总的周期数(200) 其中控制相关暂停17(8.5%)数据相关暂停12.0(6.0%)。

4.2.2附加forward部件在Configuration 菜单中的设置,它们是:Symbolic addresses, Absolute Cycle Count 和。

点击Enable Forwarding相应菜单项后,在它的旁边将显示一个小钩。

在定向技术存在的情况下Statistics 窗口中的各种统计数字:总的周期数158其中控制相关暂停17(10.76%)数据相关暂停12.0(7.59%)。

在定向技术不存在时候,控制相关暂停和数据相关暂停仍然是同样的值,总的模拟周期数增加到200。

所以定向技术带来的加速比:200 / 158 = 1.266DLXforwarded比DLXnot forwarded 快26.6%。

4.2.3增加浮点运算部件点击Floating Point Stages,进入后按下图的方式进行选择:运算结果如下:Statistics 窗口中的各种统计数字:总的周期数(200) 其中控制相关暂停17(8.5%)数据相关暂停12.0(6.0%)与不增加部件的数据一样。

4.3转移指令的影响可知条件分支指令总共有15条,其中有两条转移成功(13.33%),有13条转移不成功。

转移不成功的指令就顺序执行,故不会影响程序的运行,不会导致流水线断流;而转移成功的指令会导致流水线的断流,经分析可知,两次断流都会导致一个周期的流水线断流。

5. 实验结论:在流水线中,硬件资源满足不了指令重叠执行的要求,会产生资源冲突或竞争,称为流水线结构相关,而解决流水线相关的途径之一是设置双存储器(哈弗结构):一个数据存储,一个指令存储。

实际上,本身实现DLX指令的硬件设备已经考虑到了这一点,本身已有两个存储器,一个为数据存储器,一个为指令存储器。

故本身就解决了部分结构相关问题。

并且fact.s中的指令并不会导致其他资源冲突,故无法体现资源相关。

试验中多加入浮点数部件,运行效率等没有变化。

通过观察指令的运行情况,因为不会发生结构相关(硬件资源冲突),在流水线中的部件线性使用,故加入部件也不会对结果有直接的影响。

6. 实验心得:通过本次实验,我熟悉了指令执行的每个阶段的任务,对时空图的理解也更深了一步,对流水线中的三种相关性问题有了认识,同时通过此实验学习到了解决这些相关问题的方法,从而对课上所学的知识有了更系统的认识。

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

2. 代码清单及注释说明;file add_vector.s;完成两双精度浮点一维向量的加法(或乘除法)运算.data;修改此处代码可设置向量的长度以及对应向量数据;向量长度>=16VectorLength: .word 16Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16Prompt: .asciiz "ResultVector ="PrintFormat: .asciiz " %f".align 2PrintPrompt: .word PromptPrintPar: .word PrintFormat;为结果向量分配一个数据大小的内存空间Result: .space 4.textmain: ;r0初始为0,加上符号地址Prompt得到打印内容的首地址,存入r14 I1: addi r14,r0,PrintPrompttrap 5;将向量长度存入r16I2: lw r16,VectorLength;向量第一个数据偏移地址为0I3: addi r2,r0,0Loop: ;循环将两向量对应位置的数据相加I4: ld f10,Vector1(r2)I5: ld f12,Vector2(r2)I6: cvti2d f0,f10I7: cvti2d f2,f12I8: addd f4,f2,f0I9: sd Result,f4 ;将一次相加的结果f4存入Result内存空间中I10: addi r14,r0,PrintPar ;打印目前为止的结果向量trap 5;为下一次循环做准备I11: addi r2,r2,4I12: subi r16,r16,1I13: bnez r16,Loop;trap 0;系统中断,输出结果3. 程序相关性分析结果初始化WinDLX ,将所有浮点运算部件的延时都设定为4周期;载入add_vector.s按F5运行,总体观察相关性。

无结构相关,有控制相关和数据相关。

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

指出程序中出现上述现象的指令组合。

●I3和I4,I5 --- 数据WR相关(r2),I4和I5需要I3存入r2的运算结果值。

●I4和I6,I5和I7 --- 数据WR相关,I6/I7需要I4/I5的结果值。

●I6, I7和I8 --- 数据WR相关(f0,f2),I8需要I6和I7的结果值。

●I8和I9 --- 数据WR相关(f4),I9需要I8的结果值。

●I9和I10 --- 结构相关。

译码部件只有一个,I9使用未结束,I10需等待。

●I12和I13 --- 数据WR相关,I13需要I12的结果值进行判断是否继续循环。

3.2 考察增加浮点运算部件对性能的影响。

●浮点运算部件分别只有一个的情况浮点运算部件各自增加一个的情况由上面可以看出,增加浮点运算部件并没有提高流水线的性能。

原因是本程序中并没有并行执行的浮点运算。

3.3 考察forward部件对性能的影响。

停用forward部件由上面可以看出,使用forwarding技术很大程度上提高了流水线的性能。

加速比= 413/315 = 1.3113.4 观察转移指令在转移成功和转移不成功时候的流水线开销。

转移成功:转移失败:由上面可以看出,当转移成功时,已经进入取指阶段的指令被放弃,转入转移的目标指令的取指操作,这就造成了流水线的断流;若转移失败,已经进入取指阶段的指令继续进入译码阶段,流水线不断流。

实验四代码优化1. 实验目的学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。

2. 实验原理采用静态调度方法重排指令序列,减少相关,优化程序。

3. 优化程序代码清单及注释说明;Program begin at symbol;requires module INPUT;read two vectors from stdin and calculate the sum;(type: double,vectorLength 16);the result is written to stdout;---------------------------------------------------------------------.dataVectorLength: .word 16Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16Printf1: .asciiz "Vector ="Printf2: .asciiz " %f".align 2PrintPrompt: .word Printf1PrintPar: . word Printf2Result: .space 4.textmain: ;**** Print prompt "Vector ="addi r14,r0,PrintPrompttrap 5addi r2,r0,0lw r20,VectorLengthLoop:ld f10,Vector1(r2)ld f12,Vector2(r2)addi r2,r2,4cvti2d f0,f10cvti2d f2,f12subi r20,r20,1addd f4,f2,f0 ;add D2=D0+D1;**** Finish,write result into stdoutsd Result,f4addi r14,r0,PrintPartrap 5;addi r2,r2,4;subi r20,r20,1bnez r20,Loop;**** Endtrap 04.实验分析:优化前:优化后:结论:可以从图中看出代码优化后总的时钟周期从315减少到299,减少了16个时钟周期。

相关文档
最新文档