计算机系统结构课程设计.doc_第1页
计算机系统结构课程设计.doc_第2页
计算机系统结构课程设计.doc_第3页
计算机系统结构课程设计.doc_第4页
计算机系统结构课程设计.doc_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河北大学工商学院计算机系统结构课程设计 学 部 信息科学与工程学部 学科门类 工学 专 业 计算机科学与技术 班 级 5008网络1班 学 号 2008482118 姓 名 康业凯 2011年 6月11日河北大学工商学院计算机系统结构课程设计目 录第1章 引言1第2章 WinDLX指令集22.1 WinDLX指令集简介22.2 WinDLX指令集结构2第3章 WinDLX模拟器63.1 WinDLX模拟器的安装63.2 WinDLX模拟器的配置63.3 WinDLX运行及模拟结果分析7第4章 WinDLX模拟器的流水线模拟与分析124.1 控制相关124.2 数据相关164.3 指令调度21总结26参考文献27第1章 引言引言介绍指令集结构发展概述(1)最早的指令集,来自于IBM650,累加器型指令集结构。在硬件资源十分有限的条件下,累加器型指令集结构是必然的选择。(2)1963年,出现了堆栈技术,堆栈最上面的两个元素被保存在CPU中作为运算器的输入,其它部分则保存在内存中。(3)1964年,出现基于寄存器的指令集结构。1964年,IBM资深专家首次提出计算机系统结构的概念,包括:数据表示,指令集系统,中断系统,存储系统,I/O结构等。其中,指令结构是计算机系统结构设计的核心问题。(4)20世纪70年代,软件价格增长大于硬件价格的增长,编译器和操作系统越来越大,许多研究人员希望通过引入强有力的,基于软件的系统结构来缓解软件危机,CISC的典范VAX出现。(5)20世纪80年代,为提高CPU执行指令速度,RISC应运而生。1995年左右,设计师使用高性能通用处理机和科学应用处理机的技术来设计DSP新的指令集结构。注:DSP为数字信号处理。(6)20世纪90年代,更多的设计人员转向了SOC(system-on-chip)。(7)补充:三种类型指令集结构的优缺点表1-1 三种类型指令集结构的优缺点指令集结构类型优点缺点堆栈型是一种表示计算的简单模型;指令短小不能随机访问堆栈,从而很难生成有效代码。同时,由于堆栈是瓶颈,所以很难被高效的实现累加器型减小了计算机的内部状态;指令短小由于累加器是唯一的寄存器,这种机器的存储器通信开销最大寄存器型易于生成高效的目标代码所有操作数均需命名,且要显式表示,因而指令比较长第 28 页 共 27 页第2章 WinDLX指令集2.1 WinDLX指令集简介美国斯坦福大学计算机系Hennessy 教授和加州伯克利分校计算机系Paterson教授是计算机系统结构领域非常受人尊敬的学者和开拓者。他们合著的计算机系统结构-量化研究方法一书,是他们对计算机组织、系统结构研究和实践的全面而系统的总结。DLX 处理器 (发音为 DeLuXe)为这本书中流水线处理器的例子。WINDLX是一个基于Windows的DLX模拟器。2.2 WinDLX指令集结构2.2.1 WinDLX的寄存器(1)32个32位通用寄存器(GPR),名称为R0,R1,R2R31,寄存器R0的内容恒为全零。(2)32个32位浮点寄存器(FPR),既可用作单精度浮点寄存器,也可以奇偶配对来存储双精度浮点数。2.2.2 WinDLX的数据表示DLX能处理的数据类型有8位字节,16位半字、32位整数字以及32位单精度浮点数和64位双精度浮点数。DLX的操作主要面向32位整数以及32位或64位浮点数。字节或半字节在被调入32位寄存器时,用零或者符号位填充32位寄存器的高位剩余部分,一旦被调入寄存器,它们将按照32位整数的方式进行计算。2.2.3 WinDLX的寻址方式利用R0寄存器永远为零的特性,DLX用很少的硬件代价,提供了5种寻址方式: (1)寄存器寻址方式; (2)立即数寻址方式(立即数范围为16位);(3)位移寻址方式(某寄存器的值加上位移量形成操作数地址);(4)寄存器间接寻址方式(位移寻址方式中位移量等于零);(5)直接寻址方式(位移寻址方式中寄存器用R0)。2.2.4 WinDLX指令格式为使机器更容易进行流水线操作和译码,DLX采用定长操作码的指令字格式。指令字长度32位(单字长指令),其中操作码占6位。具体指令格式如下图: 6 5 5 16操作码源寄存器目的寄存器立即数 图2-1 I型指令格式 6 5 5 5 11操作码源寄存器1源寄存器2目的寄存器功能码 图2-2 R型指令格式 6 26操作码与PC相加的偏移量 图2-3 J型指令格式I型指令格式主要用来对各种类型数的存取操作指令编码,即各种Load指令和Store指令,I型指令格式还用来为分支指令编码,包括条件分支指令,寄存器跳转指令和寄存器跳转并连接指令。R型指令格式主要用来为各种算数/逻辑运算指令编码。R型指令还为读写特殊寄存器指令和寄存器之间的传送指令编码。J型指令格式主要用来为跳转并连接指令(注意不是寄存器跳转并连接指令)和陷阱与异常返回指令编码。2.2.5 WinDLX指令集DLX指令大致可以分为4大类:加载/存储、ALU操作、分支与跳转和浮点数操作。1) Load和Store操作:可以对DLX的所有通用寄存器和浮点寄存器进行Load(载入)和Store(储存)操作,但是对通用寄存器R0的Load操作没有任何效果。表2-1 DLX的加载和存储指令指令实例指令名称含 义LW R1 , 30 (R2)载入整型字RegsR1 32 Mem30+RegsR2LW R1 , 1000 (R0)载入整型字RegsR1 32 Mem1000+0LB R1 , 40 (R3)载入字节RegsR1 32 (Mem40+RegsR30)24 # Mem40+RegsR3LBU R1 , 40 (R3)载入无符号字节RegsR1 32 024 # Mem40+RegsR3LH R1 , 40 (R3)载入整型半字RegsR1 32 (Mem40+RegsR30)16 # Mem40+RegsR3# Mem41+RegsR3LF F0 , 50 (R3)载入单精度浮点RegsF0 32 Mem50+RegsR3LD F0 , 50 (R2)载入双精度浮点RegsF0 # RegsF1 64 Mem50+RegsR2SW 500 (R4) , R3储存整型字Mem500+RegsR4 32 RegsR3SF 40 (R3) , F0储存单精度浮点Mem40+RegsR3 32 RegsF0SD 40 (R3) , F0储存双精度浮点Mem40+RegsR3 32 RegsF0Mem44+RegsR3 32 RegsF1SH 502 (R2), R31储存整型半字Mem502+RegsR2 16 RegsR3116.31SB 41 (R3) , R2储存整型字节Mem41+RegsR3 8 RegsR224.312)ALU操作:在DLX中,所有的ALU指令都是寄存器寄存器型指令,其运算包含了简单的算术和逻辑运算,如加、减、AND、OR、XOR和移位。“设置相等”、“设置不等”、“设置小于”:寄存器比较指令(=,),如果比较结果为真,这些指令就在目标寄存器中填入1(表示真),否则填入0(表示假)。表2-2 DLX中算术/逻辑运算指令,带立即数或不带立即数指令实例指令名称含 义Add R1,R2,R3加RegsR1 RegsR2 + RegsR3ADDI R1,R2,#3和立即值相加RegsR1 RegsR2 + 3LHI R1,#42载入高位立即值RegsR1 42 # 016SLLI R1,R2,#5逻辑左移立即值形式RegsR1 RegsR2 5SLT R1,R2,R3设置小于if (RegsR2 1: 后鼠标闪烁,键入20 然后按 Enter,模拟继续运行到断点 # 2 处。 在Clock cycle diagram 窗口中,在指令之间出现了红和绿的箭头。红色箭头表示需要一个暂停,箭头指向处显示了暂停的原因。R-Stall(R-暂停)表示引起暂停的原因是RAW。绿色箭头表示定向技术的使用。现在我们来看一下寄存器中的内容。为此,双击主窗口中的Register 图标。Register 窗口会显示各个寄存器中的内容。看一下R1到 R5的值。按F5使模拟继续运行到下一个断点处,有些值将发生改变,指令lw从主存中取数到寄存器中。如果你希望不设置断点,而使模拟继续进行。办法是:点击Execute / Multiple Cycles 或者按 F8键,在新出现的窗口中输入17 ,然后按 Enter键,模拟程序将继续运行17 个时钟周期。向上滚动Clock cycle diagram 窗口,直到看到指令周期72到78。在EX段,两个浮点操作(multd and subd)分别在不同的部件上运行,它们都需要多个周期才能结束。因而在它们之后的下一条指令能取指,译码和执行,然后暂停一个周期以允许subd完成MEM段。(8) Statistics 窗口最后我们来看一下Statistics 窗口。按F5使程序完成执行,出现消息Trap #0 occurred 表明最后一条指令 trap 0 已经执行, Trap指令中编号“0”没有定义,只是用来终止程序。双击图标Statistics。Statistics 窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、 Load/Store指令、浮点指令和traps。窗口中给出事件发生的次数和百分比,如RAW stalls:17(7.91 % of all Cycles)。在静态窗口中我们可以比较一下不同配置对模拟的影响。现在我们看一看定向的作用。在前面的模拟过程中,我们采用了定向。如果不采用定向,执行时间将会怎样呢?我们先看一下Statistics 窗口中的各种统计数字:总的周期数(215) 和暂停数 (17 RAW, 25 Control, 12 Trap; 54 Total) ,然后关闭窗口。点击 Configuration中的Enable Forwarding使定向无效(去掉小钩),打开断点Breakpoints 图标并点击Breakpoints 菜单,删除所有断点,然后按F5,键入20后,按Enter ,模拟程序一直运行到结束。重新查看静态窗口,你会看到控制暂停和 Trap 暂停仍然是同样的值,而RAW暂停从17变成了53,总的模拟周期数增加到236。利用这些值,你能够计算定向技术带来的加速比:236 / 215 = 1.098DLXforwarded比 DLXnot forwarded 快9.8%。第4章 基于WinDLX模拟器的流水线模拟与分析4.1 控制相关4.1.1 实验目的通过本实验,加深对控制相关的理解,了解控制相关对CPU性能的影响。4.1.2 实验内容1. 用WinDLX模拟器运行程序structure_d.s 。2. 通过模拟,找出存在控制相关的指令对以及导致控制相关的部件。3. 由控制相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。4论述控制相关对CPU性能的影响,讨论解决控制相关的方法。5在以上实验结果的基础上,讨论在流水线CPU设计当中,降低控制相关开销的方法,并给出具体的设计方案,用指令序列举例说明。4.1.3 实验原理1.控制相关是指因为程序的执行方向可能被改变而引起的相关。可能改变程序执行方向的指令通常有无条件转移、一般条件转移、复合条件转移、子程序调用、中断等。(1)无条件转移指令一般能够在指令分析器中就执行完成,一般对指令执行部件的工作不会造成影响。(2)条件转移1一般条件转移指令,相关最严重的情况发生在条件码是上一条指令产生的。优点:转移不成功对先行控制器的影响不大,缺点:转移成功时,不仅指令执行过程变成了完全串行,而且要作废已经取到先行指令缓冲栈中的大量指令,增加了处理机与主存之间的通信量。2复合条件转移指令,如果转移不成功,则就象一条普通的运算型指令一样。如果转移成功,不仅要全部或部分作废先行指令缓冲栈中已经预取的指令,还可能要作废先行操作栈中的指令和先行读数栈中的操作数,作废当前在指令分析器中分析的指令。2. WinDLX模拟器运行程序后,打开Statistics 窗口可看到各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、 Load/Store指令、浮点指令和traps。 3. 查看Statistics 窗口信息, 找出存在控制相关的指令对以及导致控制相关的部件,计算暂停时钟周期数占总执行周期数的百分比。4.1.4 控制相关下WinDLX配置Statistics 窗口:提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、 Load/Store指令、浮点指令和traps。窗口中给出事件发生的次数和百分比。点击 Configuration / Floating Point Stages选择标准配置。 点击 Configuration / Memory Size 设置模拟处理器的存储器大小(应设置为0x8000)。 在Configuration 菜单中的Symbolic addresses, Absolute Cycle Count 和 Enable Forwarding也可设置, 点击相应菜单项后, 它的旁边将显示一个小钩。4.1.5 实验过程1. 运行程序structure_d.s. 为了初始化模拟器, 点击File 菜单中的 Reset all 菜单项,弹出一个“Reset DLX”对话框。然后点击窗口中的“确认”按钮;点击 structure_d.s点击 select 按钮点击 load按钮 点击主窗口中的 Execution开始运行2. 在主窗口中点击“Statistics”图标,出现一个子窗口。此窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、 Load/Store指令、浮点指令和traps.3.查看Statistics 窗口中的各种统计数字,记录由控制相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。4.1.6 结果分析1.装载完测试程序:双击Pipeline子窗口,此时,所有方框均为交叉线,表明流水线没有执行程序在程序执行过程中。双击Register子窗口, PC寄存器值为0x00000100,也就是说程序会从内存0x00000100处开始执行。 2.运行过程中图4-1 Register运行中子窗口PC变为0x00000114,这是流水线下一步要装入的指令的地址,但根据程序,下一条指令应该执行地址0x00000138所指的指令。“BNEZ R5, loop”为存在控制相关的指令,由于“BNEZ R5, loop”指令被译码,流水线知道其指令满足条件转移,说明刚才顺序取进来的指令为误取,下一周期将“TRAP 0x0”指令封杀,不对其译码,直接跳转到LD F0, 0x0(R2)。3.运行结束 图4-2 Statistics子窗口 运行总周期数为139,ID执行指令数为86;intEX的延迟为1,faddEX、fmulEX;总暂停数为42个,其中30个RAW暂停,9个Control暂停,3个Trap暂停,总暂停时钟周期数占总执行周期数的百分比为30.22%,控制相关暂停周期数占总执行周期的百分比为6.47%;共十个条件分支,其中9个转移成功,造成9次控制相关,一个转移不成功。4.2 数据相关4.2.1 实验目的通过本实验,加深对数据相关的理解,掌握如何使用定向技术来减少数据相关带来的暂停。4.2.2 实验内容1在不采用定向技术的情况下(通过Configuration菜单中的Enable Forwarding选项设置),用WinDLX模拟器运行程序data_d.s 。2. 记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。3. 采用定向技术的情况下,用WinDLX模拟器再次运行程序data_d.s。4.2.3 实验原理1三种数据相关:“先读后写”、“先写后读”和“写-写”相关。2在流水线中建立专用数据路径来避免数据相关的基本原理是数据重定向。4.2.4 数据相关下WinDLX配置1Statistics 窗口:将待运行程序装入主存后按F5使程序完成执行,出现消息Trap #0 occurred 表明最后一条指令 trap 0 已经执行, Trap指令中编号“0”没有定义,只是用来终止程序。双击图标Statistics。Statistics 窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、 Load/Store指令、浮点指令和traps。窗口中给出事件发生的次数和百分比。2Code窗口:双击图标Code,你将看到代表存储器内容的三栏信息,从左到右依次为:地址 (符号或数字)、命令的十六进制机器代码和汇编命令。点击主窗口中的 Execution开始模拟。在出现的下拉式菜单中,点击Single Cycle或按 F7键,模拟就向前执行一步。3Breakpoint 窗口:当通过Code 窗口观察代码时 (如果未打开,双击图标 Code),你会看到接下来的几条指令几近一样,它们都是sw-操作:将寄存器中的数写入存储器中。重复按F7 将很枯燥,因此,我们使用断点加快此过程。现在,请指向Code 窗口中包含命令trap 0x5的0x0000015c行,此命令是写屏幕的系统调用。单击命令行,然后点击主窗口菜单Code,单击Set Breakpoint (确保命令行仍被标记!),将弹出一个新的Set Breakpoint 窗口。通过此窗口,你可以选择命令运行到流水线的哪一阶段时,程序停止执行。缺省为ID段。点击OK 关闭窗口。图4-3 设置断点子窗口在Code 窗口中, trap 0x5行上出现 了BID ,它表示当本指令在译码段时,程序中止执行。如果想查看已定义的断点,你只要单击图标Reakpoints,将弹出一个小窗口,其中显示了所有断点。重新使窗口图标化。现在你只要点击Execution / Run 或按F5,模拟就继续运行。会出现一个对话框提示你ID-Stage: reached at Breakpoint #1,按“确认”按钮关闭。点击Clock cycle diagram窗口中的trap 0x5行,你将看到模拟正处于时钟周期14。trap 0x5行如下所示:图4-4 trap 0x5行原因是:无论何时遇到一条trap指令时,DLX 处理器中的流水线将被清空。在Information 窗口(双击trap行弹出)中,在IF段显示消息3 stall(s) because of Trap-Pipeline-Clearing!。 (不要忘了按OK关闭窗口)。指令trap 0x5 已经写到屏幕上,你可以通过点击主窗口菜单条上的Execute / Display DLX-I/O来查看。4.2.5 实验过程1.使用定向技术:1)程序fact.s ,input.s ,data_d.s装入主存运行初始化模拟器, 点击File 菜单中的 Reset all 菜单项,弹出一个“Reset DLX”对话框。然后点击窗口中的“确认”按钮;点击 fact.s 点击 select点击 input.s点击 select点击 data_d.s点击 select 点击 load 2)设置断点按F7键以单步方式运行程序,指向Code窗口中包含指令trap 0x5的0x0000015c行,点击主窗口菜单Code,单击Set Breakpoint (确保指令行仍被标记),将弹出一个“Set Breakpoint”窗口,点击OK。3)按F5键,程序就会连续向前运行,直到碰到我们设置的断点后停下来,此时会出现一个提示对话框“ID-Stage: reached at Breakpoint #1”,按OK按钮关闭。按F5键继续运行,屏幕上会出现DLX-Standard I/O对话框,输入20后按回车键,程序会继续模拟运行,直至出现提示框“Trap #0 occurred”表明最后一条指令trap 0已经执行。4)记录下Statistics 窗口中的各种统计数字:总的周期数和暂停数( RAW,Control,Trap,Total),然后关闭窗口。2.使用不定向技术:点击 Configuration中的Enable Forwarding使定向无效(去掉小钩),打开断点Breakpoints 图标,点击Breakpoints 菜单,点击Delete All删除所有断点,然后按F5,键入20后,按Enter ,程序一直运行到结束。再次打开Statistics 窗口,记下新的统计数字。计算暂停时钟周期数占总执行周期数的百分比。计算采用定向技术后性能提高的倍数。4.2.6 结果分析图4-5 采用不定向技术图4-6 采用定向技术1)采用定向技术:总的周期数128和暂停数(30 RAW,9Control,3Trap,42Total)总暂停数占总周期数的32.81%读后写暂停周期数占总周期数的23.44%写后写暂停周期数为0 2)不采用定向技术 总的周期数202,暂停数(104 RAW,9Control,3Trap,116Total) 总暂停占总时钟周期数百分比为57.42%, 读后写暂停周期数占总周期数的51.48% 写后写暂停周期数为0 3.比较采用定向技术与采用不定向技术所得数据:表4-1 数据统计总的时钟周期Control暂停Trap暂停RAW暂停总暂停采用定向技术128933042不采用定向技术20293104116 定向技术带来的加速比:202 / 128 = 1.578,即定向比不定向快57.8%4.3 指令调度4.3.1 实验目的通过本实验,加深对指令调度的理解,了解指令调度技术对CPU性能改进的好处。4.3.2 实验内容1. 通过Configuration菜单中的“Floating point stages”选项,把除法单元数设置为3,把加法乘法除法的延迟设置为3个时钟周期。2. 用WinDLX模拟器运行调度前的程序sch-before.s 。记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。3. 用WinDLX模拟器运行调度后的程序sch-after.s ,记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。4. 根据记录结果,比较调度前和调度后的性能。4.3.3 实验原理在非线形流水线中,由于存在有反馈回路,当一个任务在流水线中流过时,在同一个功能段中可能要经过多次。因此不能每一个时钟周期向流水线输入一个新任务,否则会发生在同一个时刻有几个任务争用同一个功能段的情况。这种情况称为功能部件冲突,或流水线冲突。为了避免冲突,一般采用延迟输入新任务的方法。应该间隔多少时钟周期向流水线输入一个新任务就是非线性流水线的调度问题。非线性流水线调度的就是找出一个最小的循环周期,按照这周期向流水线输入新任务,流水线的各个功能段都不会发生冲突,而且流水线的吞吐率和效率最高。4.3.4 WinDLX配置点击 Configuration / Floating Point Stages(点击Configuration打开菜单,然后点击Floating Point Stages菜单项),选择如下标准配置:表4-2 DLX流水线结构设置CountDelayAddition Units:12Multiplication Units:15Division Units:119在本实验中,将标准配置更改为以下配置:表4-3 DLX流水线结构设置CountDelayAddition Units:13Multiplication Units:13Division Units:334.3.5 实验过程1.在主窗口中点击Configuration打开菜单,然后点击Floating Point Stages菜单项,把除法单元数设置为3,把加法、乘法、除法的延迟设置为3个时钟周期。2.将程序sch-before.s装入主存后运行。记录程序运行过程中各种相关发生的次数以及程序执行的总时钟周期数。3.将程序sch-afte

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论