1、 3.5 实验程序 3.5.1 源程序 3.5.2 没有采用定向技术分析 3.5.3 采用定向技术分析 3.5.4 结果截图 3.6 实验报告要求4、实验四 4.1 实验目的 4.2 实验平台 4.3 预备知识 4.3.1 调页策略 4.3.2 页面置换算法 4.4 实验内容和步骤 4.5 实验程序 4.5.1 源程序 4.5.2 程序流程图 4.5.3 结果截图 4.6 实验报告要求5、实验总结、参考资料实验一 WinDLX模拟器与DLX指令的使用1.1实验目的1.1.1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;1.1.2. 加深对计算机流水线基本概念的理解;
2、1.1.3. 了解DLX基本流水线各段的功能以及基本操作;1.2实验平台WinDLX模拟器1.3预备知识1.3.1. WinDLXWinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线是如何工作的。该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设断点或是连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,以形象生动的方式描述DLX流水线的工作过程。模拟器还提供了对流水线操作的统计功能,便于对流水线进行性能分析。 有关WinDLX的详细介绍,见附录(WinDLX教程)。1.3.2. 熟悉WinDLX指令集和WinDLX源代
3、码的编写1.4实验内容和步骤用WinDLX模拟器执行求最大公倍数程序gcm.s分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。注意:gcm.s中调用了input.s中的输入子程序。load程序时,要两个程序一起装入(都select后再点击load)。如:给出两组数6、3和6、1,分别在main+0x8(add r2, r1, r0)、gcm.loop(seg r3,r1,r2)和result+0xc(trap 0x0)设置断点,采用单步和连续混合执行的方法完成程序,注意中间过程和寄存器的变化情况,然后单
4、击主菜单execute/display dlx-i/o,观察结果。3 2 1 1.5 实验程序实验源程序见文件gcm.s和input.s结果截图如下:1.6实验报告要求实验报告中应包含:实验目的、实验内容、实验步骤(要有程序清单并以注释的形式对定义的变量和使用的寄存器进行说明)、实验结果等内容。gcm.s;* WINDLX Ex.1: Greatest common measure * (c) 1991 G黱ther Raidl * Modified 1992 Maziar Khosravipour *- Program begins at symbol main requires modul
5、e INPUT Read two positive integer numbers from stdin, calculate the gcm and write the result to stdout .data ;* Prompts for inputPrompt1: .asciiz First Number:Prompt2:Second Number: * Data for printf-TrapPrintfFormat:gcM=%dnn .align 2PrintfPar: .word PrintfFormatPrintfValue: .space 4 .text .global m
6、ainmain:* Read two positive integer numbers into R1 and R2 addi r1,r0,Prompt1 jal InputUnsigned ;read uns.-integer into R1 add r2,r1,r0 ;R2 R2 ? bnez r3,r1Greater r2Greater: ;* subtract r1 from r2 sub r2,r2,r1 j Loopr1Greater:* subtract r2 from r1 sub r1,r1,r2Result:* Write the result (R1) sw Printf
7、Value,r1 addi r14,r0,PrintfPar trap 5* end trap 0input.s Read a positive integer number * (c) 1991 G黱ther Raidl * Modified 1992 Maziar Khosravipour *-Subprogram call by symbol InputUnsignedexpect the address of a zero-terminated prompt string in R1returns the read value in R1changes the contents of
8、registers R1,R13,R14* Data for Read-TrapReadBuffer: .space 80ReadPar: .word 0,ReadBuffer,80* Data for Printf-TrapSaveR2: .space 4SaveR3:SaveR4:SaveR5: .global InputUnsignedInputUnsigned:* save register contents sw SaveR2,r2 sw SaveR3,r3 sw SaveR4,r4 sw SaveR5,r5* Prompt sw PrintfPar,r1* call Trap-3
9、to read line addi r14,r0,ReadPar trap 3* determine value addi r2,r0,ReadBuffer addi r1,r0,0 addi r4,r0,10 ;Decimal system* reads digits to end of line lbu r3,0(r2) seqi r5,r3,10 ;LF - Exit bnez r5,Finish subi r3,r3,48 ;? multu r1,r1,r4 ;Shift decimal add r1,r1,r3 addi r2,r2,1 ;increment pointerFinis
10、h:* restore old register contents lw r2,SaveR2 lw r3,SaveR3 lw r4,SaveR4 lw r5,SaveR5 jr r31 ; Return实验二 流水线中的结构相关2.1实验目的:1. 近一步熟悉DLX指令集结构及其特点; 2. 通过本实验,加深对结构相关的理解,了解结构相关对CPU性能的影响。2.2实验平台2.3预备知识2.3.1. 进一步熟悉WinDLX指令集和WinDLX源代码的编写2.3.2. 复习和掌握教材中相应的内容DLX基本流水线流水线的结构相关与数据相关结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行
11、的要求,发生资源冲突时,将产生“结构相关”。2.4实验内容和步骤1. 用WinDLX模拟器运行程序structure_d.s 。2. 通过模拟,找出存在结构相关的指令对以及导致结构相关的部件。存在结构相关的程序如下:1. LD F0, 0(R2) ADDD F2, F0, F2 ; 16)&0xFFFF /*A左移16位后,加载半字,结果送往R2指向的寄存器单元*/ ADDUI R2, R2, A&0xFFFF /*无溢出判断,从R2中取数和立即数相加,结果送R2*/ LHI R3, (B0xFFFF ADDUI R3, R3, B& ADDU R4, R0, R3 /*无判断溢出,从R0,R
12、3中取数,结果送R4*/ loop: /*循环语句*/ LD F0, 0(R2) /*从R2中取数和0相加,结果作为访存地址,并取数,结果送F0,F1*/ LD F4, 0(R3) ADDD F0, F0, F4 ADDD F2, F0, F2 ADDI R2, R2, #8 - A stall is found ADDI R3, R3, #8 - A stall is found SUB R5, R4, R2 - A stall is found /*从R2,R4取数相减,结果送R5*/ BNEZ R5, loop /*判断单元R5数据是否为0,不等则跳转loop,否则跳下一指令*/ TRA
13、P #0 Exit - this is a comment ! A: .double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 B:2.5.2、程序分析如下:在执行指令ADDI R2, R2, #8 , ADDI R3, R3, #8 , SUB R5, R4, R2 ,BNEZ R5, loop 时,实际上是1ADDI R2, R2, #8 ADDI R3, R3, #8 2. ADDI R3, R3, #8 SUB R5, R4, R2 3. SUB R5, R4, R2 BNEZ R5,在这3个步骤中会发生同时访问同一寄存器的现象,必然会导致结构相关的问题。为了避免结构
14、相关,可以考虑采用资源重复的方法,即在流水线机器中设置相互独立的指令存储器和数据存储器,也可以考虑将CACHE分为指令CACHE和数据CACHE。2.5.3、执行之后得到的结果截图如下2.6实验报告要求 实验三 流水线中的数据相关3.1实验目的3.1.1. 加深对数据相关的理解,了解数据相关对CPU性能的影响;3.1.2. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。3.2 实验平台3.3 预备知识3.3.1. 进一步熟悉WinDLX指令集和WinDLX源代码的编写3.3.2. 复习和掌握教材中相应的内容流水线的数据相关数据相关:当一条指令需要用到前面指令的执行结果,
15、而这些指令均在流水线中重叠执行时,就可能引起“数据相关”。定向技术的主要思想:在发生数据相关时,等待前面计算结果的指令并不一定真的马上就用到该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令需要它的地方,就可以避免暂停。3.4 实验内容和步骤1.在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数104以及程序执行的总时钟周期数202,计算暂停时钟周期数占总执行周期数的百分比51.48%。2.在采用定向技术的情况下(勾选Enable Forwardi
16、ng),用WinDLX再次运行程序data_d.s。重复上述3中的工作,128 30 23.44%并计算采用定向技术后性能提高的倍数220/128=1.723.5 实验程序3.5.1、实验源程序见文件data_d.s16) & 0xFFFF /* A左移16位后,加载半字,结果送往R2指向的寄存器单元*/ ADDUI R2, R2, A & 0xFFFF /*无溢出判断,从R2中取数和立即数相加,结果送R2*/ loop: /*循环语句*/ LW R1, 0 (R2) /*从R2中取数,立即数0符号扩展后两则相加,结果为访存地址,并从中取数,送往R1*/ ADD R1, R1, R3 /*从R
17、1,R3中取数进行相加,结果送往R1*/ SW 0(R2), R1 /*从从R2中取数和符号扩展后的立即数相加,结果作为访存单元,然后从寄存器R1中取数,送往存储单元*/ LW R5, 0 (R1) ADDI R5, R5, #10 /*从R5中读数和立即数10相加,结果送往R5*/ ADDI R2, R2, #4 SUB R4, R3, R2 /*从R2,R3中取数进行相减,结果送往R4*/ BNEZ R4, loop /*判断R4中的数据是否为0,不等0则跳转循环loop,否则继续下一条指令*/ TRAP #0 A: .word 0, 4, 8, 12, 16, 20, 24, 28, 3
18、2, 36 B: .word 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 3.5.2、没有采用定向技术时运行该程序:从数据中可知程序执行的总时钟周期数202,暂停时钟周期数104,暂停时钟周期数占总执行周期数的百分比51.48%。3.5.3、采用定向技术时运行该程序:从数据中可知,执行的总时钟周期数128,暂停时钟周期数30,暂停时钟周期数占总执行周期数的百分比23.44%。由此可知,运用定向技术,减少了数据相关,缩短了程序的执行周期,性能提高了1.57倍。3.5.4、结果截图如下:3.6 实验报告要求实验四 LRU页面置换算法模拟4.1实验目的 4.1.1、了解内存分页管理策略
19、4.1.2、掌握调页策略4.1.3、掌握一般常用的调度算法4.1.4、选取调度算法中的典型算法,模拟实现 4.2实验平台 在Window系统的TC2.0环境下运行程序;通过从一般常用的调页算法中选取典型算法LRU,了解页面管理的相关细节,并用程序设计实现LRU。4.3预备知识分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或页。4.3.1调页策略 何时调入页面 如果进程的许多页是存放在外存的一个连续区域中,则一次调入若干个相邻的页,会比一次调入一页的效率更高效一些。但如果调入的一批页面中的大多数都未被访问,则又是低效的。可采用一种以预测为基础的预调页策略,将那些预计在不久之后
20、便会被访问的页面,预先调入内存。如果预测较准确,那么,这种策略显然是很有吸引力的。但目前预调页的成功率仅为50%。且这种策略主要用于进程的首次调入时,由程序员指出应该先调入哪些页。4.3.2请求调页策略 当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便即提出请求,由OS将其所需页面调入内存。由请示调页策略所确定调入的页,是一定会被访问的,再加之请求调页策略比较易于实现,故在目前的虚拟存储器中,大多采用此策略。但这种策略每次仅调入一页,故须花费较大的系统开销,增加了磁盘I/O的启用频率。从何处调入页面 在请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页
21、面的对换区。通常,由于对换区是采用连续分配方式,而事件是采用离散分配方式,故对换区的磁盘I/O速度比文件区的高。这样,每当发生缺页请求时,系统应从何处将缺页调入内存,可分成如下三种情况:(1) 系统拥有足够的对换区空间,这时可以全部从对换区调入 所需页面,以提高调页速度。为此,在进程运行前,便须将与该进程有关的文件,从文件区拷贝到对换区。(2) 系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出时,以后需要时,再从对换区调入。(3) UNIX方式。由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都从文件区调入。而对于曾经运行过但又被换出的页面,由于被放在对换区,因此在下次时,应从对换区调入。由于UNIX系统允许页面共享,因此,某进程所请求的页面有可能已被其它进程调
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2