文档视界 最新最全的文档下载
当前位置:文档视界 › 北邮大三下 计算机系统结构实验报告 实验一到五 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提供了多种长度的整型数据和浮点数据。对整型数据而言,有8位,16位,32位多种长度;对浮点而言,有32位单精度浮点数和64位双精度浮点数。浮点数据表示采用的是IEEE754标准。DLX操作都是对32位整型数据及32或64位浮点数据进行的。

4.了解DLX的寻址方式和数据传送

DLX提供了寄存器寻址,立即寻址,偏移寻址和寄存器间接寻址四种寻址方式。寄存器寻址字段的大小为5位,用来标识32个通用寄存器或浮点寄存器。

5.了解DLX的指令格式

因为DLX只有四种寻址方式,所以将其寻址方式编码在操作码中。为了简化指令译码,并充分发挥流水线的效率,所有DLX指令的字长均是32位,其中用6位表示操作码。DLX中各种类型指令的格式如下图所示:

6.了解DLX中的操作

DLX指令中的操作可以分为四种类型,即:Load和Store操作、ALU操作、分支和跳转操作、浮点操作。

(1)Load和Store操作

可以对DLX的所有通用寄存器和浮点寄存器进行Load(载入)和Store(储存)操作,但是通用寄存器R0的Load操作没有任何效果。

(2) ALU操作

在DLX中,所有的ALU指令都是寄存器-寄存器型指令,其运算包含了简单的算术和逻辑运算,DLX还允许所有这些指令对立即值进行操作,立即值以16位符号扩展形式出现。在DLX指令集中,还有一些寄存器比较指令(=,≠,<,>,≤,≥),如果比较结果为真,这些指令就在目标寄存器中填入1(表示真),否则填入0(表示假)。因为这些比较操作指令要对目标寄存器进行“设置”,所以也称它们为设置相等、设置不等、设置小于等指令。

(3) 分支和跳转操作

在DLX中,对程序流程的控制是通过一些跳转和分支指令来实现的。根据描述目标地址的方法和是否链接可以将跳转操作指令分为四种类型。其中两种类型的跳转指令用带符号位的26位偏移量加上程序计数器的值来确定跳转的目标地址,另外两种类型的跳转指令则指定一个寄存器,由寄存器中的内容决定跳转的目标地址。跳转有两种类型,一种是简单跳转,另一种是跳转并链接(用于过程调用),后者将返回一个地址,即将下一条顺序指令地址(返回地址)保存在寄存器R31中。DLX中的所有分支指令均是条件分支指令,其源操作数寄存器中包含了一个数值或某个比较结果。分支指令测试该源操作数寄存器中的值是0还是非0,决定分支是否成功。

(4) 浮点操作

DLX的浮点操作有:加、减、乘、除。后缀D代表双精度浮点操作,而后缀F代表单精度浮点操作(如:ADDD、ADDF、SUBD、SUBF、MULTD、MULTF、DIVD、DIVF)。值得提出的是,DLX的浮点比较操作设置浮点状态寄存器中的位,如果比较结果为真,则将该位设置为1;如果比较结果为假,则将该位设置为0。浮点分支指令BFPT和BFTF则测试该寄存器的值来决定分支是否成功。

·实验环境

Windows XP操作系统

WinDLX模拟器

·实验步骤

1.WINDLX模拟器安装

2.熟悉模拟器的配置

3.熟悉各工具的使用

·实验内容及要求

阅读模拟器Help文档和相关资料,利用Fact.s及Input.s代码熟悉模拟器的配置、各项工具使用、寄存器设置及指令系统。

软件包中还有WinDLX教程和联机帮助,可以通过它们进一步了解模拟器的使用方法和DLX处理器的原理。

·实验过程

前期精读老师所给资料+上网查询相关资料,了解WinDLX模拟器。

1.首先,要认真阅读老师所给的有关WinDLX的实验指导书和使用指南,在实验

开始之前一定要对软件有个细致的了解,点击,文档十分细致的讲述了这个模拟器各个窗口所包含的功能。但是我在做实验的时候还上网查了一些资料,希望能够对自己在以后的试验中有所帮助。

文档介绍了该模拟器的指令格式及要求。

2.在详细了解了WinDLX模拟器之后,点击,则开始运行。

WinDLX模拟器的结构和功能说明

1.点击运行之后,会看到一个如下图所示的窗口。

它包括Register, Code, Pipeline, Clock Cycle Diagram, Statistics, Breakpoints。接下来详细介模拟器的结构及各个部件的功能。

2.Register窗口介绍

Rigister窗口中显示的是各个寄存器的名称及内容。如下图:

可以看到寄存器中以十六进制标识,从上图可以看出各个寄存器中的内容。

2.Code窗口介绍

在没有进行任何执行的时候,初次打开code窗口,即为下图所示

窗口现实的信息是各个存储器内同。第一列标识存储器的地址;第二列是机器代码,用16进制表示;第三列是汇编指令。

当我们点击上方的,可以选择单步或多步执行(也可以使用快捷键F7或F8)。若选择单步执行,每按一次F7,指令执行一次,可以看到,一次执行的为IF->ID->intEX->MEM->WB,没执行一次还有颜色的变化。颜色是用来标识指令处于哪个流水段的,如下图。

当然,我们也可以使用多步执行,按快捷键F8,选择5步流水,即可。

3.Pipeline窗口介绍

通过阅读WinDLX模拟器说明书可以知道,Pipeline窗口显示的是DLX处理器的内部结构。窗口用下图标识DLX五段流水。当然,如同Code窗口介绍讲述的那样,不同的颜色显示了指令处于哪段流水线。使用快捷键F7单步执行,可以明显的看出,不同时候流水段执行的不同指令。如下图。

图片反映的正式与Code中所处的时刻相同的指令流水。可以清晰看到不同流水段执行的是哪条指令。

4.Clock Cycle Diagram窗口

实验准备中我们已经知道,该窗口显示的是流水线的时空图。时空图反映的是不同时隙内的运行情况。如下图。

在我看来,时空图是最好理解的。因为它反映的就是流水段的并行程度。在这个DLX模拟器中,并不存在一些数据或者控制上的冲突问题。所以可以依靠上图很清晰的看到指令所处的不同流水段,及指令执行情况。该时空图同样也是和前面的Code等相对应。也可以通过快捷键F7来进一步执行指令,可以看到流水线时空图的扩展情况。

任意双击指令的一行,可以详细看到不同流水段的情况。如下图所示。

5.Statistics窗口介绍

该窗口是对运行程序中的数据进行分析。主要包括模拟器中硬件配置情况,在该窗口中,我们可以比较不同配置对于该模拟器的不同影响。如下图所示。1)整体指令执行情况

2)硬件配置情况

3)暂停次数和百分比及原因分析

4)分支次数和百分比

5)Load/Store指令执行情况

6)浮点指令执行次数和百分比

7)trap发生的次数和百分比

6.Breakpoints窗口介绍

该窗口使用来观察代码运行情况。先打开Breakpoints窗口,点击窗口上方的来设置breakpoint,也就是设置指令运行到流水线的哪个阶段程勋停止执行。

如上图,如果选择EX阶段,在Code窗口中相应的行会出现BEX,即指令执

行到译码结束执行开始的时候,程序将中止。

·实验总结

通过本次试验,由于是第一次接触DLX模拟器,该试验能够帮助我对这个模拟器大致的功能及使用做个大致的了解。对于日后的实验打下好的基础。

我觉得WinDLX模拟器小而精悍,它有不同颜色的标记,不同寄存器及存储器的反映。通过使用它,可以对5步流水的过程及不同阶段很清楚明白的看到。也可以看到不同指令分析走到了哪一步,到了哪一步流水段。

实验二指令流水线相关性分析

·实验目的

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

·实验环境

Windows XP操作系统

WinDLX模拟器

·实验步骤

1.观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令

组合。

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

3.考察增加forward部件对性能的影响。

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

·实验过程

在开始模拟之前,至少应装入一个程序到主存,按照下述步骤,将fact.s 和input.s加载至WinDLX中。

加在完后点击Code后可以看到如下图所示。证明加载成功,即可进行以下实验。

1.观察程序中出现的数据/控制/结构相关;指出程序中出现上述现象的指令组

合。

1)数据相关

如下图所示,在Clock Cycle Diagram窗口所想是的时空图中和Pipeline 窗口中的流图中,第一次出现了R-Stall。

接下来可以点击上图中的橘色窗口,则屏幕显示

lbu r3,0×0(r2)

要在WB周期写回r3中的数据;而下一条指令

seqi r5,r3,0×a

要在intEX周期中读取r3中的数据。

上述过程发生了WR冲突,即写读相关。为了避免此类冲突,

seq r5,r4,0×a的intEX指令延迟了一个周期进行。

由此,相关指令为:

2)控制相关

由上图可以看出,在第4时钟周期:第一条指令处于MEM段;第二条命令处于intEX段;第三条指令出于aborted状态;第四条命令处于IF段。

原因分析:jal InputUnsigned是无条件分支指令,但当第三个周期开始的时候,也就是jal这条指令被译码后才知道。此时,movi2fp已经执行,且将要执行的下一条命令在另外一个地址处,所以这条指令不会执行,这个时候就会发生控制相关。由此,发生控制相关的指令为:

3)结构相关

首先,我们先来看一下执行过控制相关的时空图和Pipeline,如下图。

当我们点击Pipeline中IF所对应的框框可以看到详细的该指令执行情况,如下图:

上图表明了addi r2,r2,0×1的详细信息。该指令与它前一条指令add r1,r1,r3发生了结构相关。并且由于此处的冲突,需要暂停2个周期。在ID段暂停后,则开始进图intEX段。所以这条指令(addi r2,r2,0×1)你不能进入ID流水段,译码部分占用,发生了结构相关。该部分的指令为:

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

该实验取N=6

首先通过,点击Floating Point Stage Configuration来设置浮点

运算部件的配置。由于实验手册上面要求Delay=4,所以我们将Delay这一栏改成4,而Count可以任意,为了对比,我们第一次浮点运算部件取全部为2,第二次浮点运算部件取全部为3。如下图所示:

运行50个cycles之后,可以看到他们数据的对比:

由此可见,浮点运算部件的增减对效率无影响。比较各个数据,发现没有变化。无论怎么增加浮点运算部件,统计结果都一样。原因在于此程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。

3.考察增加forward部件对性能的影响。

forwarding,以及不勾选enable configuration来看性能数据的对比。

不使用forward部件:

使用forward部件:

从上面的数据我们可以看出增加forwardi部件后RAW由原来占总时钟周期的26%减少至18%,RAW个数由原来的13减少至9。增加forward部件使得控制相关比例增加了。即,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。

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

我们假设,浮点部件设置Count=3,Delay=4;N=6。执行完毕后,查看条件转移

分支,如下图所示:

由上图可知,转移指令一共8条,成功转移2条(占25%),不成功为6条。所以,静态指令调度算法只能解决数据相关,条件转移结果与原来相比没有变化。即,若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低;若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,执行效率会下降。

·实验总结

本次试验中,主要遇见一个问题,就是在当初文件加载时没有成功,后来通过查询资料和自己的尝试,发现,在选择文件的顺序很关键,它决定了文件在存储器中出现的顺序。

本次实验,主要通过对于三中相关的观察,分析出现相关时的指令,分析浮点运算部件和forward部件对性能的影响,观察转移指令在转移成功和不成功时的流水线开销,这些实验一步一步,通过WinDLX形象生动的表示,使我在实践中更加深入的认识了流水线。

实验三DLX处理器程序设计

·实验目的

学习使用DLX汇编语言编程,进一步分析相关现象

·实验环境

Win XP操作系统

DLX汇编语言环境

·实验步骤

1.熟悉DLX汇编语言。

2.自编一段汇编代码,完成两双精度浮点一维向量的加法(或乘除法)运算,并

输出结果。向量长度>=16。观察程序中出现的数据/控制/结构相关

3.对此程序完成上面实验二中1)、2)、3)、4)方面的分析

·实验过程

A.向量加法代码及性能分析

首先给据题目要求,需要熟练掌握DLX编程语言,然后根据规范格式编写向量的代码。

1)向量声明

VectorLength: .word 16 //声明向量长度

Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 //声明两个向

量 Vector1和Vector2

Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

Result: .space 4 //声明一个空间来存放打印的数据

Loop: //循环体

ld f10,Vector1(r2)

ld f12,Vector2(r2) //读入两个提前声明的向量

add f4,f2,f0 //加法运算

trap 5 //系统中断

2)源代码

计算机系统结构实验报告

计算机系统结构实验报告 一.流水线中的相关 实验目的: 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之后,不设置任何断点运行。 a.不采用重新定向技术,我们得到的结果

北邮大三下 计算机系统结构实验报告 实验一到五 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提供了多种长度的整型数据和浮点数据。对整型数据而言,有8位,16位,32位多种长度;对浮点而言,有32位单精度浮点数和64位双精度浮点数。浮点数据表示采用的是IEEE754标准。DLX操作都是对32位整型数据及32或64位浮点数据进行的。 4.了解DLX的寻址方式和数据传送 DLX提供了寄存器寻址,立即寻址,偏移寻址和寄存器间接寻址四种寻址方式。寄存器寻址字段的大小为5位,用来标识32个通用寄存器或浮点寄存器。 5.了解DLX的指令格式 因为DLX只有四种寻址方式,所以将其寻址方式编码在操作码中。为了简化指令译码,并充分发挥流水线的效率,所有DLX指令的字长均是32位,其中用6位表示操作码。DLX中各种类型指令的格式如下图所示:

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

课程名称:计算机系统结构实验名称:代码优化实验班级:09211311 姓名:schnee 学号: 日期:2012年4月20日

目录 1.实验目的 (3) 2.实验原理 (3) 3.优化程序代码清单及注释说明 (3) 4.实验分析 (4) 观察程序中出现的数据/结构/控制相关,指出程序中出现上述现象的指令组合。 (4) 考察增加浮点运算部件对性能的影响。 (5) 考察增加FORWARD部件对性能的影响。 (5) 观察转移指令在转移成功和转移不成功时候的流水线开销。 (6) 5.实验心得和总结 (6)

1.实验目的 学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。 2.实验原理 采用静态调度方法重排指令序列,减少相关,优化程序。 3.优化程序代码清单及注释说明 1..data 2.VectorLength: .word 16 3.Vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 4.Vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 5.Printf1: .asciiz "Vector =" 6.Printf2: .asciiz " %f" 7..align 2 8.PrintPrompt: .word Printf1 9.PrintPar: . word Printf2 10.Result: .space 4 11..text 12.main: ;**** Print prompt "Vector =" 13.addi r14,r0,PrintPrompt 14.trap 5 15. addi r2,r0,0 ;调换两行代码, ;提前写入R2以减少下面语句的相关16.lw r20,VectorLength 17.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)

计算机系统结构WinDlx实验报告

计算机组成与系统结构 课程设计 题目:流水线指令设计及页面置换算 法在WinDLX软件中的应用 学校: 专业: 学号: 姓名: 指导教师:*** 2011 年 6 月22 号

目录 1、实验一.....................2 1.1实验目的.......................2 1.2实验平台.......................2 1.3 预备知识.......................2 1.4实验内容和步骤....................2 1.5实验程序.......................4 1.6 实验报告要求.....................6 2、实验二.........................9 2.1 实验目的.......................9 2.2 实验平台.......................10 2.3 预备知识.......................10 2.4 实验内容和步骤....................10 2.5 实验程序.......................10 2.5.1 源程序.....................11 2.5.2 程序分析.....................11 2.5.3 结果截图.....................11 2.6 实验报告要求.....................12 3、实验三.........................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 结果截图.....................15 3.6 实验报告要求.....................15 4、实验四.........................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 结果截图.....................23 4.6 实验报告要求.....................23 5、实验总结........................236、参考资料.......................23

北邮计算机系统结构-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)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。 (2)考察增加浮点运算部件对性能的影响。 (3)考察增加forward部件对性能的影响。 (4)观察转移指令在转移成功和转移不成功时候的流水线开销。 注意:除(2)以外,浮点加、乘、除部件都只有一个;

北邮高级计算机系统结构实验二三四五

. .. . 实验二指令流水线相关性分析 ·实验目的 通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC 处理器的特点的理解。 ·实验原理: 指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。·实验步骤 一.使用WinDLX模拟器,对Fact.s做如下分析: (1)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。 (2)考察增加浮点运算部件对性能的影响。 (3)考察增加forward部件对性能的影响。 (4)观察转移指令在转移成功和转移不成功时候的流水线开销。 ·实验过程 一.使用WinDLX模拟器,对Fact.s做如下分析: 浮点加、乘、除部件都设置为1,浮点数运算部件的延时都设置为4,如图1: 图1 初始设置 将fact.s和input.s加载至WinDLX中,如图2示。

图2 加载程序 1.观察程序中出现的数据/控制/结构相关;指出程序中出现上述现象的指令组合。1)数据相关 点击F7,使程序单步执行,当出现R-Stall时停止,运行过程中出现下图3所示,输入整数6。 图3 输入整数6 打开Clock Diagram,可以清楚的看到指令执行的流水线如图4所示。 图4 指令流水线

双击第一次出现R-Stall的指令行,如图5所示。 图5 指令详细信息 对以上出现的情况分析如下: 程序发生了数据相关,R-Stall(R-暂停)表示引起暂停的原因是RAW。 lbu r3,0×0(r2) 要在WB周期写回r3中的数据;而下一条指令 seqi r5,r3,0×a 要在intEX周期中读取r3中的数据。 上述过程发生了WR冲突,即写读相关。为了避免此类冲突, seq r5,r4,0×a的intEX指令延迟了一个周期进行。 由此,相关指令为: 2)控制相关 由图6可以看出,在第4时钟周期:第一条指令处于MEM段,第二条命令

北邮《现代通信技术》实验报告一

北邮《现代通信技术》实验报告一

现代通信技术实验报告 班级: 2012211110 学号: 2012210299 姓名:未可知

在学习现代通信技术实验课上,老师提到的一个词“通信人”警醒了我,尽管当初填报志愿时选择了通信工程最终也如愿以偿,进入大三,身边的同学忙着保研、考研、出国、找工作,似乎大家都为了分数在不懈奋斗。作为一个北邮通信工程的大三学生,我也不断地问自己想要学习的是什么,找寻真正感兴趣的是什么,通信这个行业如此之大,我到底适合什么。本学期,现代通信技术这本书让我了解到各种通信技术的发展和规划,也让我对“通信人”的工作有了更深刻的认识。 一、通信知识的储备 《现代通信技术》第一页指出,人与人之间通过听觉、视觉、嗅觉、触觉等感官,感知现实世界而获取信息,并通过通信来传递信息。所谓信息,是客观事物状态和运动特征的一种普遍形式,客观世界中大量地存在、产生和传递着以这些方式表示出来的各种各样的信息。信息的目的是用来“消除不可靠的因素”,它是物质运动规律总和。因此,我们通信人的任务就是利用有线、无线等形式来将信息从信源传递到信宿,在传输过程中保证通信的有效性和可靠性。 而具体来讲,要实现信息传递,通信网是必需的通信体系,其中通信网分层的结构形式需要不同的支撑技术,包括业务网技术,向用户提供电话、电报、数据、图像等各种电信业务的网络;介入与传送网技术,实现信息由一个点传递到另一个点或一些点的功能。对此,我们通信工程专业学习课程的安排让我们一步步打下基础,建立起知识储备。 知识树如下: 如知识树所述,通信工程课程体系可以大致分为一下6类基础:

数学基础:工科数学分析,线性代数,复变函数,概率论基础,随机过程; 电路基础:电路分析,模拟电子技术,数字逻辑电路,通信电子电路; 场与波基础:电磁场与电磁波,微波技术,射频与天线; 计算机应用能力:C语言程序设计,微机原理与接口技术,计算机网络,数据结构,面向对象程序设计,实时嵌入式系统 信号处理类课程:信号与系统,信号处理,图像处理,DSP原理及应用; 通信类课程:通信原理,现代通信技术,信息论基础,移动通信,光纤通信等。 从大一开始学习的工科数学分析,大学物理,大学计算机基础等课程为基础类课程,旨在培养我们的语言能力,数学基础,物理基础,计算机能力,然后逐步加大难度,细化课程,方向逐渐明朗详细。同时,课程中加入了各种实验,锻炼了我们的动手能力。 二、通信知识的小小应用 实验课上老师说过,以我们所学的知识已经可以制作简单通信的手机的草图了,我对此跃跃欲试。经过思考和调研,以下是我对于简单手机设计的原理框图和思考结果。 一部手机的结构包括接收机、发射机、中央控制模块、电源和人机界面部分,如下图 手机结构设计图 电路部分包括射频和逻辑音频电路部分,射频电路包括从天线到接收机的解调输出,与发射的I/O调制到功率放大器输出的电路。其中,射频接收电路完成接收信号的滤波、信号放大、解调等功能;射频发射电路完成语音基带信号的调制、变频、功率放大等功能。要用到的超外差接收机、混频器、鉴相器等在《通信电子电路》书本中的知识。逻辑音频包括从接收解调到接收音频输出、送话器电路到发射I/O调制器及逻辑电路部分的中央处理单元、数字语音处理及各种存储器电路。由核心控制模块CPU、EEPROM、 FLASH、SRAM等部分

北邮大三计算机体系结构实验三DLX处理器程序设计

实验三 DLX处理器程序设计 1.实验目的 学习简单编译优化方法,观察采用编译优化方法所带来的性能的提高。 2.实验原理 采用静态调度方法重排指令序列,减少相关,优化程序。 3、实验内容和要求 自编一段汇编代码,完成一维向量加法运算,并输出结果。观察程序中出现的数据/控制/结构相关。(注:使用一维数组表示一维向量。) 4.1向量加法代码清单及注释说明 1、向量加法设计源代码 .data VectorLength: .word 16 Vector1: .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、2 Printf1: .asciiz "Vector =" Printf2: .asciiz " %f" .align 2 PrintPrompt: .word Printf1 PrintPar: .word Printf2 Result: .space 4 ;存放打印数据的空间申请 .text main: addi r14,r0,PrintPrompt trap 5 lw r20,VectorLength addi r2,r0,0 Loop: ld f10,Vector1(r2) ld f12,Vector2(r2) ;循环体中读入向量 cvti2d f0,f10 cvti2d f2,f12 addd f4,f2,f0 ;加法运算 Finish:;**** Finish,write result into stdout sd Result,f4

WinDLX实验报告

WinDLX基础实验 1.实验目的: 1)熟悉计算机流水线基本概念 2)了解DLX基本流水线的各段的功能了解各种不同指令在流水线中的实际流动情况 3)对流水线做性能分析 4)了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类 5)了解决数据相关的方法 2.实验内容: 1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,记录它们在流水线中的执行情况 2)仿真器运行一段无相关的程序,记录执行情况,计算流水线的加速比、吞吐率与效率。 3)在仿真器运行一段程序,统计该程序在流水线中出现的各种相关个数,及其引起的流水线暂停周期数 4)在流水线中设置定向路径来消除数据相关,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数 5)通过对程序进行编译优化并结合其他相关解决方法——分支预测与延迟槽,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数。 3.实验步骤: 1.)熟悉WinDLX的使用 用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按钮 得到如下图:

WINDLX虚拟处理器概述

第一章WINDLX虚拟处理器概述 1.1 计算机结构发展及其测试概述 60多年前,宾夕法尼亚大学莫尔学院的J.Presper Eckert和John Mauchly制造了世界上第一台通用的电子计算机ENIAC(Electronic Numerical Integrator and Calculator)。美籍匈牙利数学家冯.诺依曼设法帮助他们明确设计目标,并在一份备忘录中提出了被称为EDVAC(Electronic Discrete Variable Automatic Computer)的能够存储程序的计算机的构想,奠定了后来被称为冯.诺依曼型计算机的基础。然而,真正完整地体现了冯.诺依曼设计意图的可操作的能够存储程序的计算机是剑桥大学的Mauries Wilkes建造的EDSAC(Electronic Delay Storage Automatic Calculator),于1949年投入运行,它是基于累加器的计算机。在ENIAC的同时代,Howard Aiken在哈佛建造了Mark-I的电子机械化计算机,在EDSAC诞生之后,他相继开发了Mark-Ⅲ、Mark-Ⅳ,创建了哈佛结构。 第一台成功出售的商业计算机是Eckert和Mauchly制造的通用计算机UNIVAC I (1951年),第一台IBM计算机——IBM701于1952年交货。 IBM资深专家C.M.Amdahl 1964年在介绍IBM 360系统时首先提出计算机系统结构(computer architecture)的概念:计算机系统结构是程序员所看到的计算机的属性,即概念性结构与功能特性。这些属性也就是机器语言程序设计者(或编译程序生成系统)为使其设计(或生成)的程序能在机器上正确运行所必需遵循的计算机的属性,即计算机系统软硬件的界面,包括:数据表示,指令集结构,中断系统,存储系统,I/O结构等。其中指令集结构又包括寻址规则、寄存器定义和指令系统等,它是CPU的外在表现形式,是计算机系统结构设计中的核心问题,是软硬件功能分配最主要的界面,是计算机系统结构设计者、系统软件设计者和系统硬件设计者所共同关注的问题。 最初的计算机系统性能评价指标是执行单项操作的时间。例如,ENIAC要比Mark-I 快1000倍。随着指令的执行时间差异逐渐扩大,需要一个能反映指令混合度的指标,比如,1970年Gibson提出了平均指令执行时间,其意义同今天的CPI,也与MIPS差不多,因为CPI与MIPS有互为倒数的关系,但是MIPS易于理解,用得广泛。 当CPU越来越复杂,系统采用了存储层次结构和流水线结构后,每条指令不再有单一的执行时间了,MIPS也无法准确计算了,下一步就是使用核心程序、综合基准程序等来测试机器性能了。1976年,Curnow和Wichmann用Algol 60编写了Whetstone基准合成程序,后改成Fortran语言程序,在测试程序性能时被广泛使用。1986年,McMahon 和Lawrence Livermore实验室共同编写出Livermore核心程序,用于测试举行计算机的性能。同时代还出现了相对MIPS、MFLOPS等衡量计算机性能的指标。 SPEC(System Performance and Evaluation Cooperrative)组织力图改进评测程序的混乱局面,并为计算机的性能比较建立一个更为合理的基础。相继推出了SPEC89、SPEC92等评测标准程序。卡内.基梅隆大学的Fuller和Burr在1977年提出了详细考察系统结构的3个定量指标:

相关文档
相关文档 最新文档