北邮大三计算机体系结构实验三DLX管理解决方法器程序设计

合集下载

计算机系统结构实验报告

计算机系统结构实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

计算机体系结构实验

计算机体系结构实验
gtd f2,f10 ;f2>1?
bfpf InputArray1;若不大于1,跳到InputArray1,此时r9为10的n次方
mult r9,r7,r9
subi r2,r2,1
j Loop1 ; Loop1用来求出10的n次方(n为输入的位数),n随后面的循环逐渐减1
InputArray1:
div r11,r5,r9
2、程序中出现数据相关因为下面两条指令,第二条指令要读r1而执行到此操作时第一条指令仍对r1进行操作
lw r4,PrintfValue(r3)
sw Printf,r4
图4.数据相关
程序中出现控制相关,当程序执行下面指令时,第二条指令出现跳转指令时,第一条指令还没有执行完,所以出现控制相关
subi r2,r2,1
add r2,r8,r0 ;将r8中的数值放到r2寄存器中
addi r9,r0,1 ;r9置1;
j Loop1 ;跳转Loop1
Output: ;输出结果
lw r4,PrintfValue(r3)
sw Printf,r4 ;将寄存器r4中的内容存Printf地址单元中
addi r14,r0,PrintPar ;将要输出的数据格式输到寄存器r14中
点击zui3.s
点击select按钮
点击input.s
点击select按钮
点击load按钮
3、按F7键程序顺序执行观察6个子窗口的情况。
七、实验数据及结果分析:
1、先装入zui3.s再转入input.s时,因为程序顺序执行,地址顺序符合程序执行顺序,程序能够正确执行;顺序相反时,因为input.s的地址高,而程序顺序执行到input.s时将没有正确的输入窗口,程序执行到输出结果时,也不会出现结果

计算机系统(体系)结构实验指导书

计算机系统(体系)结构实验指导书

计算机系统(体系)结构实验指导书内容简介计算机体系结构是计算机专业学生的一门专业课程,本课程是计算机专业一门重要的专业课,着重讲述计算机系统的软、硬件界面。

对于学生从事计算机系统的研制、使用和维护有重要意义。

本课程概念多、内容涉及面广、系统性强。

通过本课程的学习,学生应能从软件、硬件功能分配的角度去了解、分析和研究计算机系统,建立起对计算机系统的全面认识,树立全面地、发展地看问题的观点,从而加深对各种类型体系结构的了解,牢固地树立起整机系统的概念。

本课程的学习应注重理论与实践相结合,因此实验教学是教学环节中必不可少的重要内容。

通过实验教学的学习,使学生熟练掌握有关计算机体系结构的基本概念、基本原理和基本思想,掌握对计算机体系结构和组成进行分析和计算的方法。

实验部分包括四个实验,包括有完整的源程序例题,介绍了一些设计数据结构题目所需的的知识和技巧。

在实验题中,既有简单容易的验证题,即验证已经给出的源程序,或者扩充已经给出的源程序,也有需独立思考设计的综合实验题。

中南大学信息科学与工程学院余腊生制定上机实验要求及规范计算机体系结构课程具有比较强的理论性,同时也具有较强的可应用性和实践性。

上机实验是一个重要的教学环节。

一般情况下学生能够重视实验环节,对于编写程序上机练习具有一定的积极性。

但是容易忽略实验的总结,忽略实验报告的撰写。

对于一名大学生必须严格训练分析总结能力、书面表达能力。

需要逐步培养书写科学实验报告以及科技论文的能力。

拿到一个题目,一般不要急于编程。

按照面向过程的程序设计思路(关于面向对象的训练将在其它后继课程中进行),正确的方法是:首先理解问题,明确给定的条件和要求解决的问题,然后按照自顶向下,逐步求精,分而治之的策略,逐一地解决子问题。

一、实验报告的基本要求:一般性、较小规模的上机实验题,必须遵循下列要求。

养成良好的习惯。

姓名班级学号日期题目i. 问题描述ii. 设计简要描述iii. 程序清单(带有必要的注释)iv. 结果分析(原始图示,测试数据与运行记录,分析正确性;)v. 调试报告:实验者必须重视最后这两个环节,否则等同于没有完成实验任务。

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

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

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

计算机系统结构实验报告班级: 2011211 学号:姓名: 171. 实验一WINDLX模拟器安装及使用2. 实验二指令流水线相关性分析3. 实验三DLX处理器程序设计4. 实验四代码优化5. 实验五循环展开(选作)实验一WINDLX模拟器安装及使用简要介绍WINDLX模拟器结构和功能此图为初始界面Register窗口显示寄存器中的内容Clock Cycle Diagram子窗口现在双击Clock Cycle Diagram子窗口,它显示DLX流水线的时空图。

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

可以看出,DLX执行指令的流水线是一个5段流水线,包括取指段(IF)、译码段(ID)、执行段(EX)、访存段(MEM)和写回段(WB)。

显然,不同指令在执行段的操作是不同的,而且不同操作在该段的延迟也是不同的。

Breakpoint子窗口按F7键以单步方式运行程序,可以清楚的看到每条指令在流水线各个段的具体操作情况,除此之外,DLX模拟器还提供了其他几种运行程序的方式。

单击主窗口中Execute子菜单,可以看到DLX模拟器共提供了4种运行程序的方式,其中Single Cycle(或按F7键)就是单步执行方式;Multiple Cycles(或按F8键)是多步执行方式,选择该方式,会在屏幕上出现一个窗口,询问周期个数,它表示流水线从当前位置继续向前执行的周期个数,输入你需要的值,然后按OK键.Code子窗口里面显示的内容是两个程序(fact.s和input.s)加载到内存中的情况。

最右边显示的是程序fact.s的第一条指令,对照图2.7中fact.s的第一条语句,可以看出,变量Prompt被代替以0x1000,这说明变量Prompt在程序被加载到内存中的实际地址就是0x1000,也即程序的数据区被加载到内存地址0x1000开始的地方,这里“0x”表示十六进制。

北邮实验三 DLX处理器程序设计

北邮实验三    DLX处理器程序设计

北京邮电大学计算机学院《计算机系统结构》课程实验2015年4月实验三DLX处理器程序设计实验类别:综合型实验目的:学习使用DLX汇编语言编程,进一步分析相关现象实验学时:4实验组人数:1/1实验设备环境:DLX汇编语言环境实验原理:掌握向量运算算法和编程方法。

教学要点与学习难点:DLX汇编语言实验内容和要求:自编一段汇编代码,完成两双精度浮点一维向量的加法(或乘除法)运算,并输出结果。

向量长度>=16。

观察程序中出现的数据/控制/结构相关实验步骤:(1)熟悉DLX汇编语言。

(2)编写两双精度浮点一维向量的加法运算程序。

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

程序代码.data;初始化两个用于相加的一维向量(双精度浮点数),向量长度为20a: .double , , , , , , , , , ,,,,,,,,,,b: .double , , , , , , , , , ,,,,,,,,,,PrintfFormat: .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可以看到具体数据情况和产生相关的比例等结果分析数据相关由Statistics中的知道,发生了%的数据相关。

计算机组成原理实验(复杂模型机)

计算机组成原理实验(复杂模型机)

2021/6/16
4
实验八 复杂模型机的设计与实现
• 实验目的
综合运用所学计算机原理知识,设计并 实现较为完整的计算机。
2021/6/16
5
实验八 复杂模型机的设计与实现
• 实验原理
1、数据格式
模型机规定采用定点补码表示法表示数据,且 字长为8位,其格式如下:
7 6543210
符号


其中第7位为符号位,数值表示范围是: -1≤X<1。
14
实验八 复杂模型机的设计与实现
四、实验步骤
⑴ 设计复杂模型机的监控软件,详细如下:
$P00 44
IN 01, R0
$P01 46
IN 01, R2
$P02 98
ADC R2, R0
$P03 81
MOV R0, R1
$P04 F5
RLC R1, R1
$P05 0C
BZC 00, 00
$P06 00
18
实验八 复杂模型机的设计与实现
⑶ 将二进制代码表转换为联机操作时的十六进制 格式文件(文件名C8JHE3)。 程序:
$P00 44 $P01 46 $P02 98 $P03 81 $P04 F5 $P05 0C $P06 00
2021/6/16
19
实验八 复杂模型机的设计与实现
$M00 088105 $M01 82ED05 $M02 50C004 $M03 04A004 $M04 A0E004 $M05 06E004 $M06 07A004 $M07 A0E004 $M08 8AED05 $M09 8CED05 $M0A 3BA004 $M0B 018005 $M0C 3C2004 $M0D 0EA004

计算机系统结构实验指导书

计算机系统结构实验指导书

计算机系统结构实验指导书殷晓峰编著山东大学计算机科学与技术学院2004年3月前言计算机系统结构是计算机科学与技术专业的一门骨干课程,课程中讲授的许多内容诸如:指令流水线、向量计算、流水线的相关、并行计算、定向技术等内容比较抽象,同学们在学习中会有些难度。

为了使理论教学与实践教学紧密结合,注重学生的智力开发和能力培养,为了帮助大家学好这门课程,我们安排了计算机系统结构实验,希望同学们认真完成实验内容,增进对课程内容的理解,提高自己理论联系实际的能力,提高自己独立思考解决问题的能力。

本实验采用了目前在世界上计算机系统结构实验教学过程中广泛采用的WinDLX模拟器,该模拟器把系统结构课程中许多抽象的东西变成实际的、便于同学们理解的内容。

本实验中借鉴和引用了其他学校的经验和内容,在此表示感谢。

山东大学计算机科学与技术学院殷晓峰2004.3目录一.WinDLX简介二.WinDLX寄存器结构及指令集三.WinDLX教程四.实验注意事项及要求五.实验一熟悉WinDLX的使用六.实验二用WinDLX执行程序求最大公约数七.实验三用WinDLX模拟器完成求素数程序八.实验四结构相关九.实验五数据相关十.实验六指令调度十一.实验七多处理机并行计算一.WinDLX 简介1.DLX流水线处理器DLX是贯穿本课程的一个流水线处理器实例,许多讨论、模拟结果和例题都是基于DLX的。

它不仅体现了当今多种机器(AMD29K、DEC station 3100、HP850、IBM 801、Intel i860、MIPS M/120A、MIPS M/1000、Motorola 88k、RISC I,SGI4D/60, SPARC station 1、Sun 4/110、Sun 4/260等)指令集结构的共同特点,而且它还将会体现未来一些机器的指令集结构的特点。

这些机器的指令集结构设计思想都和DLX指令集结构的设计思想十分相似,它们都强调:具有一个简单的Load/Store指令集;注重指令流水效率;简化指令的译码;高效支持编译器。

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

实验三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
addi r14,r0,PrintPar
trap 5 ;系统中断,输出结果
addi r2,r2,4
subi r20,r20,1
bnez r20,Loop
;**** End
trap 0
2、运行结果
5.1程序相关性分析结果
(1)观察程序中出现的数据/控制/结构相关。

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

产生34.12%的数据相关。

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

没有产生结构相关。

产生3.94%的控制相关。

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

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

1个浮点运算部件3个浮点运算部件
同一段代码执行相同步,但是经过对比发现浮点运算部件的多少对于程序执行效率并没有什么影响,浮点运算部件的多少对统计结果都不造成影响,可能是由于该程序不存在争用浮点运算部件资源的情况
(3)考察增加forward 部件对性能的影响。

不使用forward 部件 使用forward 部件
使用forward 部件之后执行相同的代码用的时钟周期比不使用forward 部件少了 大约100个时钟周期,由于没有结构相关,所以使用forward 部件主要使得RAW 相关明显减少了,占总的时钟周期比例也减少了,对控制相关没有什么影响。

总之,使用forward 部件后,总的时钟周期减少,数据相关减少,流水线的性能得到很大的改善。

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

在本次实验中转移成功的几率比较大,进行16次转移只有一次转移不成功的,因为系统按照预测成功来执行指令,当判断转移不成功时,系统对trap 指令进行的操作被全部作废,转而去执行跳转到的指令。

4.2双精度浮点加法求和代码清单及注释说明
1、双精度浮点加法求和源代码
.data
;初始化两个用于相加的一维向量(双精度浮点数),向量长度为20
a: .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.2
b: .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.8
PrintfFormat:.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 2
PrintfPar: .word PrintfFormat
r: .space 200
;r为保存相加结果的向量空间
.text
.global main
main:
addi r1,r0,0 ;r1计数相加的次数
addui r4,r0,8 ;r4为常数8
loop: ;循环计算向量相加结果
subi r2,r1,20 ;r1=20时,跳转到finish
beqz r2,finish
multu 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 loop
finish: ;输出向量相加的结果
addi r14,r0,PrintfPar
trap 5
2、运行结果:
5.2程序相关性分析结果
(1)观察程序中出现的数据/控制/结构相关。

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

产生了53.78%的数据相关。

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

产生数据相关的指令主要有:
1) addi r1,r0,0
subi r2,r1,20
2) subi r2,r1,20
beqz r2,finish
3) multu r3,r1,r4
ld f0,a(r3)
4) ld f2,b(r3)
addd f4,f0,f2
无结构相关
产生了4.29%的控制相关。

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

和4.1代码类似。

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

1个浮点运算部件3个浮点运算部件
同一段代码执行相同步,但是经过对比发现浮点运算部件的多少对于程序执行效率并没有什么影响,浮点运算部件的多少对统计结果都不造成影响,可能是由于该程序函数中没有连续的浮点运算指令。

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

没有forward部件有forward部件
使用forward 部件之后执行相同的代码用的时钟周期比不使用forward 部件少了 大约122个时钟周期,使用forward 部件使得RAW 相关明显减少了,流水线的性能得到很大的改善。

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

该转移指令不成功的情况较多,21次预测中只有1次转移成功,所以预测顺序取对流水线的性能是有利的。

6、实验总结
本次实验主要是向量求和运算,在本次实验我设计了两个部分,首先是整数向量的加法,整数向量加法的实验进行成功后才在之前实验的基础上略作修改,进行了的双精度浮点加法求和的实验。

本次实验没有输入,是直接对固定在代码中的数据进行运算,运算完毕后直接输出结果。

编程中遇到的一些问题:在由整形改为双精度浮点运算的时候对双精度运算指
令不知道怎么来标识,后来查到所有涉及到double型数据的运算指令,指令代码都要加上d来说明,否则编译是不通过的。

通过本次自己编写汇编程序对浮点数的操作有了更深入的了解,也学会了WINDLX中浮点寄存器和浮点状态寄存器的设置和使用。

熟悉了双精度浮点运算的流水线操作过程,以及数据相关,结构相关,控制相关,forward部件对于双精度浮点运算流水线的影响。

相关文档
最新文档