计算机系统结构课程设计Word文档下载推荐.docx

上传人:b****4 文档编号:18503895 上传时间:2022-12-18 格式:DOCX 页数:9 大小:22.50KB
下载 相关 举报
计算机系统结构课程设计Word文档下载推荐.docx_第1页
第1页 / 共9页
计算机系统结构课程设计Word文档下载推荐.docx_第2页
第2页 / 共9页
计算机系统结构课程设计Word文档下载推荐.docx_第3页
第3页 / 共9页
计算机系统结构课程设计Word文档下载推荐.docx_第4页
第4页 / 共9页
计算机系统结构课程设计Word文档下载推荐.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

计算机系统结构课程设计Word文档下载推荐.docx

《计算机系统结构课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机系统结构课程设计Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。

计算机系统结构课程设计Word文档下载推荐.docx

测试程序分析7

实验内容及步骤7

实验结果分析7

总结8

参考文献9

第1章引言

20世纪70年代初,人们开始认识到软件价格要比硬件增长的快,编译器和操作系统越来越大,因此人们希望引入强有力的、基于软件的系统结构来解决软件危机。

DEC的VAX系列因而登上历史舞台,VAX的设计目标是简化高级语言的编译,其指令集结构就是CISC的典范,有300多条指令,十几种寻址方式,指令字长度从1字节到53字节,具有高度的正交性,甚至允许把高级语言的一条语句直接映射为一条机器指令。

每个指令集CISC的指令可能在执行处理器系列内的行动,这将减少所需的指令数实现一个给定的程序,并允许程序员学习一个小而灵活的指令集。

但1991年Bhandarkar和Cark给出了VAX与RISC计算机比较后有关缺点的大量分析,在技术上宣布了VAX的死刑。

20世纪80年代初,计算机系统结构开始为语言提供高级硬件支持的方向转移出来为了提高CPU的执行速度,RISC应运而生。

1975年,IBM801开始研制,项目负责人JohnCocke因此获得Eckert-Mauchly奖和Turing奖。

1980年,Patterson和他在Berkeley的同事们研发了RISC-1和RISC-2。

1981年,Hennessy和他在Stanford的同事们发表了介绍MIPS(MicroprocessorwithoutInterlockedPipelineSystem)的文章。

这些研究成果被工业界广泛采用,MIPS系列是RISC的典型代表。

20世纪80年代RISC型CPU诞生了,相对于CISC型CPU,RISC型CPU不仅精简了指令系统,还采用了一种叫做“超标量和超流水线结构”,大大增加了并行处理能力。

1995年左右,设计师开始使用高性能通用处理器和科学应用处理器的技术来设计DSP(数字信号处理)指令集结构,使其有更高的并行度,更快的时钟频率,更简单的类RISC指令集。

由于RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少,处理速度提高很多了。

因此RISC指令系统更加适合高档服务器的操作系统UNIX和Linux。

目前在中高档服务器中普遍采用RISC指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。

第2章WinDLX指令集

WinDLX指令集简介

在《计算机系统结构-量化研究方法》一书中,作者定义DLX是世界上第二台多元未饱和的计算机——它是当今实验与商业计算机的平均。

DLX指令集结构是对当前大多数指令集结构研究的结果,是一种适合于学习和研究的指令集结构模型,不仅仅因为它在当前十分流行,同时因为它是一种容易理解的系统结构。

WinDLX便是一个基于Windows的DLX模拟器。

WinDLX指令集结构

2.2.1WinDLX的寄存器

DLX有32个32位通用寄存器(GPR),名称为R0,R1,R2,…,R31,另外还有一组浮点寄存器(FPR)它们既可以用作32个32位单精度浮点寄存器,也可以奇偶配对来存储双精度浮点数,即F0和F1构成一个64位双精度浮点数寄存器,F2和F3构成一个64位双精度浮点数寄存器,以此类推。

这些64位浮点数寄存器被命名为F0,F2,…,F28,F30这样,DLX就提供了32个32位单精度浮点数寄存器或16个64位双精度浮点数寄存器。

寄存器R0的值永远是零。

有这样一个特点,就可以利用这个寄存器由简单指令集来合成一组有用的操作。

另外,还有一些特殊用途的寄存器,这些寄存器可以和通用寄存器交换数据。

2.2.2WinDLX的数据表示

DLX能处理的数据类型有8位字节,16位半字、32位整数字以及32位单精度浮点数和64位双精度浮点数。

DLX处理字符数据要使用8字节,使用16位半字,是因为它在类似C的语言中出现,在操作系统代码中半字数据类型也很流行,使用32位整数字,是因为DLX认为32位整数的处理范围一般而言已经足够;

之所以有32位单精度浮点数,是因为和16位半字同样的理由;

之所以有64位双精度浮点数,是因为和32位整数同样的理由。

DLX的操作主要面向32位整数以及32位或64位浮点数。

字节或半字在被调入32位寄存器时,用零或者符号位填充32位寄存器的高位剩余部分,一旦被调入寄存器,它们将按照32位整数的方式进行计算。

2.2.3WinDLX的寻址方式

利用R0寄存器永远为零的特性,DLX用很少的硬件代价,提供了5种寻址方式。

它们是:

寄存器寻址方式;

立即数寻址方式(立即数范围为16位);

位移寻址方式(某寄存器的值加上位移量形成操作数的地址);

寄存器间接寻址方式(位移寻址方式中位移量等于0);

直接寻址方式(位移寻址方式中寄存器用R0)。

2.2.4WinDLX指令格式

由于DLX的寻址方式较少,因此在指令格式中没有必要专门设置寻址方式描述位,可以将其直由于DLX的寻址方式较少,因此在指令格式中没有必要专门设置寻址方式描述位,可以将其直指令字长度32位(单字长指令),其中操作码占6位。

I型指令

65516

操作码

源寄存器

目的寄存器

立即数

R型指令

655511

源寄存器1

源寄存器2

功能码

J型指令

626

与PC相加的偏移量

I型指令格式主要用来对各种类型数的存取操作指令编码,即各种Load指令和Store指令,含义为:

从内存单元(地址为源寄存器值+立即数)取数至目的寄存器;

或把源寄存器中值存在内存单元(地址为目的寄存器值+立即数)中;

或把立即数送到目的寄存器中(源寄存器不用)。

I型指令格式还用来为分支指令编码,包括条件分支指令(此时,立即数是相对目标地址,源寄存器是判断条件,目的寄存器不用),寄存器跳转指令(此时,源寄存器里是目标地址,目的寄存器不用)和寄存器跳转并连接指令(此时,源寄存器里是目标地址,立即数为0,目的寄存器也为0,该指令主要用于过程调用)。

R型指令格式主要用来为各种算数/逻辑运算指令编码,含义为:

源寄存器1和源寄存器2进行功能码指定的操作,并把结果存入目的寄存器中。

另外,R型指令还为读写特殊寄存器指令和寄存器之间的传送指令编码。

J型指令格式主要用来为跳转并连接指令(注意不是寄存器跳转并连接指令)和陷阱与异常返回指令编码。

2.2.5WinDLX指令集

DLX指令大致可以分为4大类:

加载/存储、ALU操作、分支与跳转和浮点数操作。

所有通用寄存器GPR和浮点数寄存器FPR都可作为加载或存储之用,唯一例外是R0,加载R0是没有意义的。

单精度浮点数占用一个浮点数寄存器,双精度浮点数占用一对浮点数寄存器。

单精度浮点数与双精度浮点数之间的转换必须显式地进行。

所有的ALU指令都是寄存器-寄存器指令,包括简单的算术和逻辑操作:

加、减、与、或、异或和移位,所有这些指令都支持立即数寻址方式,它带有一个16位的符号扩展立即数。

LHI(LoadHighImmediate)操作将立即数加载到寄存器的高半字,而将低半字设为0,这使得一个32位的常数可以用两条指令来建立。

如上所述,R0经常被用来合成通用操作,加载一个常数的操作可以由一个立即数和一个源操作数是R0的加法来实现,寄存器-寄存器传送可以通过其中一个源操作数是R0的加法来完成(DLX有时用助记符LI代表加载来指前者,而用MOV来指后者)。

还有比较两个寄存器的比较指令(=,≠,<,>,≤,≥),如果条件为真,则比较指令将在目的寄存器中放入一个1(代表真);

否则放入一个0。

由于这些操作都设置寄存器,因此它们被叫做set-equal,set-not-equal,set-less-than等,同时这些比较指令也具有立即数寻址方式。

控制由一组跳转指令和一组分支指令来处理。

4种跳转指令由指定目的地址的两种方式和是否进行链接来区分。

有两种跳转指令把26位带符号的位移量加到PC中来确定目的地址;

另外两种跳转指令通过指定包含目的地址的寄存器来确定目的地址。

有两种跳转:

简单跳转,跳转并链接(用于过程调用),后者把返回地址——下一个顺序指令的地址——放入寄存器R31。

所有的分支都是有条件的。

分支条件由指令确定,可能是测试源寄存器是否为0;

寄存器可能含有一个数据或者比较结果。

分支的目标地址由16位带符号位移量和PC值相加的结果来确定。

浮点指令对浮点寄存器进行操作,并指出将被使用的操作数是单精度还是双精度。

MOVF和MOVD分别把一个单精度(MOVF)或双精度(MOVD)浮点寄存器的值复制到另一个同类型寄存器中。

MOVFP2I和MOVI2FP在单精度浮点寄存器和整数寄存器之间传送数据。

把一个双精数据移到两个整数寄存器中需要两条指令。

另外还有32位浮点寄存器上的整数乘除法指令和整数与浮点数之间转换的指令。

浮点操作包括加、减、乘、除。

后缀F表示单精度浮点数,而后缀D表示双精度浮点数。

浮点数比较指令会设置浮点数状态寄存器中的某一位,可以用两条分支指令BFPTO(为真分支)和BFPF(为假分支)测试浮点数状态寄存器来决定是否进行分支。

DLX的一个不太寻常的特征是它用浮点部件来完成整数的乘除。

因为对较慢的浮点数操作的控制要比控制整数的加减复杂得多,既然浮点部件已经可以处理浮点乘除,那么再让它处理相对较慢的整数乘除也并不困难。

因此,DLX要求把乘除的操作数放入浮点寄存器中。

第3章WinDLX模拟器

WinDLX模拟器的安装

WinDLX包含和文件。

此外,还需要一些扩展名为.s的汇编代码文件。

实验将使用和这两个汇编代码文件。

WinDLX的安装非常简单,将WinDLX压缩包解压到一个指定的目录,做实验时直接双击WinDLX图标就可进入Windlx模拟器。

WinDLX模拟器的配置

WinDLX可以在多种配置下工作。

可以改变流水线的结构和时间要求、存储器大小和其他几个控制模拟的参数。

点击Configuration/FloatingPointStages(点击Configuration打开菜单,然后点击FloatingPointStages菜单项),选择如下标准配置:

UNIT

COUNT

DELAY

AdditionUnits:

1

2

MultiplicationUnits:

5

DivisionUnits:

19

如果需要,可以通过点击相应区域来改变设置。

然后,点击OK返回主窗口。

点击Configuration/MemorySize,可以设置模拟处理器的存储器大小。

应设置为0x8000,然后,点击OK返回主窗口。

在Configuration菜单中的其他三个配置也可以设置,它们是:

Symbolicaddresses,AbsoluteCycleCount和EnableForwarding。

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

WinDLX运行及模拟结果分析

在开始模拟之前,至少应装入一个程序到主存。

我们选择作为例子,计算一个整型值的阶乘,它的运行还需要一个辅助文件,中包含一个子程序,它读标准输入(键盘)并将值存入DLX处理器的通用寄存器R1中。

为此,选择File/LoadCodeorData,窗口中会列出目录中所有汇编程序。

按如下步骤操作,可将这两个文件装入主存。

点击,点击select按钮,点击,点击select按钮,点击load按。

钮选择文件的顺序很关键,它决定了文件在存储器中出现的顺序。

对话框中会显示信息“File(s)loadedsuccessfully.ResetDLX”,点击确认按钮。

这样,文件就已被装入到主存储器中了。

现在就可以开始模拟工作了。

第4章基于WinDLX模拟器的流水线模拟与分析

控制相关

4.1.1实验目的

通过本实验,加深对结构相关的理解,了解结构相关对CPU性能的影响。

4.1.2实验内容

1.用WinDLX模拟器运行程序。

2.通过模拟,找出存在结构相关的指令对以及导致结构相关的部件。

3.由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。

4.论述结构相关对CPU性能的影响,讨论解决结构相关的方法。

4.1.3实验原理

结构相关是指因为程序的执行方向可能被改变而引起的相关。

可能改变程序执行方向的指令通常有无条件转移、一般条件转移、复合条件转移、子程序调用、中断等。

1.无条件转移

无条件转移指令一般能够在指令分析器中就执行完成,因此一般对指令执行部件的工作不会造成影响。

2.条件转移

条件转移指令有两种:

一般条件转移指令和复合条件转移指令。

对于一般条件转移指令,相关最严重的情况发生在条件码是上一条指令产生的。

转移不成功对先行控制器的影响不大,而转移成功时,不仅指令执行过程变成了完全串行,而且要作废已经取到先行指令缓冲栈中的大量指令,从而白白增加了处理机与主存之间的通信量。

对于复合条件转移指令,如果转移不成功,则就象一条普通的运算型指令一样。

如果转移成功,不仅要全部或部分作废先行指令缓冲栈中已经预取的指令,还可能要作废先行操作栈中的指令和先行读数栈中的操作数,作废当前在指令分析器中分析的指令。

4.1.4控制相关下WinDLX配置

1.Statistics窗口:

将待运行程序装入主存后按F5使程序完成执行,出现消息"

Trap#0occurred"

表明最后一条指令trap0已经执行,Trap指令中编号“0”没有定义,只是用来终止程序。

双击图标Statistics。

Statistics窗口提供各个方面的信息:

模拟中硬件配置情况、暂停及原因、条件分支、Load/Store指令、浮点指令和traps。

窗口中给出事件发生的次数和百分比。

2.WinDLX可以在多种配置下工作。

你可以改变流水线的结构和时间要求、存储器大小和其他几个控制模拟的参数。

点击Configuration/FloatingPointStages(点击Configuration打开菜单,然后点击FloatingPointStages菜单项),选择如下标准配置:

Count

Delay

点击Configuration/MemorySize,可以设置模拟处理器的存储器大小。

应设置为0x8000,然后,点击OK返回主窗口。

在Configuration菜单中的其他三个配置也可以设置,它们是:

Symbolicaddresses,AbsoluteCycleCount和EnableForwarding。

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

4.1.5实验过程

实验时,先将Configuration/MemorySize菜单选项中的设置按4.1.5控制相关下WinDLX的配置更改,在flie菜单中选择reallyresetallwindlxcompletely,随后选择loadcodeordata装入structure_d.点load。

查看clockcyclediagram中的实验结果时空图。

4.1.6结果分析

数据相关

4.2.1实验目的

4.2.2实验内容

4.2.3实验原理

4.2.4数据相关下WinDLX配置

4.2.5实验过程

4.2.6结果分析

指令调度

4.3.1实验目的

4.3.2实验内容

4.3.3实验原理

4.3.4WinDLX配置

4.3.5实验过程

4.3.6结果分析

第5章基于SimpleScalar模拟器的Cache性能分析

实验目的

SimpleScalar简介

测试程序分析

实验内容及步骤

实验结果分析

总结

参考文献

[1]JohnL.Hennessy,DavidA.ComputerArchitecture:

AQuantitativeApproach,4thEdition.Patterson.MorganKaufmann,4edition,

[2]郑纬民,汤志忠译.计算机系统结构——量化研究方法(第三版).电子工业出版社,

[3]郑纬民,汤志忠.计算机系统结构(第2版).郑纬民,汤志忠.清华大学出版社,

[4]李学干.计算机系统结构,西安电子科技大学出版社,2006

[5]张晨曦.刘依.计算机组成与结构.高等教育出版社,

[6]n/arch/

[7]l

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1