收藏 分销(赏)

计算机标准体系结构实验报告.doc

上传人:精**** 文档编号:3000399 上传时间:2024-06-12 格式:DOC 页数:14 大小:91.04KB
下载 相关 举报
计算机标准体系结构实验报告.doc_第1页
第1页 / 共14页
计算机标准体系结构实验报告.doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述
实验一 流水线中有关 一.实验目 1. 纯熟掌握WinDLX模仿器操作和使用,熟悉DLX指令集构造及其特点; 2. 加深对计算机流水线基本概念理解; 3. 进一步理解DLX基本流水线各段功能以及基本操作; 4. 加深对数据有关、构造有关理解,理解这两类有关对CPU性能影响; 5. 理解解决数据有关办法,掌握如何使用定向技术来减少数据有关带来暂停。 二.实验平台 WinDLX模仿器 三. 预备知识 1. WinDLX WinDLX模仿器是一种图形化、交互式DLX流水线模仿器,可以演示DLX流水线 是如何工作。该模仿器可以装载DLX汇编语言程序(后缀为“.s”文献),然后单步、设 断点或是持续执行该程序。CPU寄存器、流水线、I/O和存储器都可以用图形表达出来, 以形象生动方式描述DLX流水线工作过程。模仿器还提供了对流水线操作记录功能, 便于对流水线进行性能分析。 关于WinDLX详细简介,见WinDLX教程。 2. 熟悉WinDLX指令集和WinDLX源代码编写 3. 复习和掌握教材中相应内容 (1)DLX基本流水线 (2)流水线构造有关与数据有关 ? 构造有关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行规定, 发生资源冲突时,将产生“构造有关”。 ? 数据有关:当一条指令需要用到前面指令执行成果,而这些指令均在流水线中 重叠执行时,就也许引起“数据有关”。 (3)定向技术重要思想:在发生数据有关时,等待前面计算成果指令并不一定真 立即就用到该计算成果,如果可以将该计算成果从其产生地方直接送到其她指令 需要它地方,就可以避免暂停。 四. 实验内容及成果 1. 用 WinDLX 模仿器执行下列三个程序(任选一种): ?求阶乘程序 fact.s ?求最大公倍数程序 gcm.s ?求素数程序 prim.s 分别以步进、持续、设立断点方式运营程序,观测程序在流水线中执行状况, 观测CPU 中寄存器和存储器内容。纯熟掌握WinDLX 操作和使用。 注意:fact.s 中调用了input.s 中输入子程序。load 程序时,要两个程序一起装入 (都select 后再点击load)。gcm.s 也是如此。 阐明:此实验咱们选取:求阶乘程序fact.s 1)用WinDLX模仿器执行求阶乘程序fact.s 。 2)程序作用:这个程序阐明浮点指令使用。该程序从原则输入读入一种整数,求其阶乘,然后将成果输出。该程序中调用了input.s中输入子程序,这个子程序用于读入正 整数。 3)实验成果: i . 分别以步进、持续、设立断点方式运营程序 图1. 求阶乘程序fact.s运营记录数据步进方式运营 图2 求阶乘程序fact.s运营记录数据持续方式运营 图3 求阶乘程序fact.s运营记录数据持续方式运营 ii. 数据记录 图1.1.4 求阶乘程序fact.s运营记录数据 图5 求阶乘程序fact.s流水线执行状况 图6 求阶乘程序fact.s寄存器使用状况 iii. 定向非定向分析 在载入fact.s和input.s之后,不设立任何断点运营。 A. 不采用重新定向技术,咱们得到成果: B. 采用定向技术,咱们得到成果: 成果分析 从上面数据咱们可以看出定向作用: 在定向技术存在状况下Statistics 窗口中各种记录数字:总周期数(215) 和暂停数 (17 RAW,25 Control,12 Trap;54 Total) 在定向技术不存在时候,控制暂停和 Trap 暂停依然是同样值,而RAW暂停从17变成了53,总模仿周期数增长到236。因此定向技术带来加速比:   S=236 / 215 = 1.098   因而:DLXforwarded比 DLXnot forwarded 快9.8%。 2. 用 WinDLX 运营程序structure_d.s,通过模仿: ?找出存在构造有关指令对以及导致构造有关部件; ?记录由构造有关引起暂停时钟周期数,计算暂停时钟周期数占总执行周期数百 分比; ?阐述构造有关对 CPU 性能影响,讨论解决构造有关办法。 1)模仿成果: 图2.1 程序structure_d.s流水线执行过程 图2.2程序structure_d.s运营记录信息 2)构造有关 i. 如图,导致构造部件:浮点数寄存器f4 addd f0,f0,f4 指令在译码阶段ID停滞1周期 ii. 如图导致构造有关部件: ALU addi r2,r2,0x8 指令在执行阶段intEX停滞1周期 3)成果分析 由资源有关引起暂停周期数为:30 总执行周期数为:139 暂停周期数占总执行周期数比例:21.58% 分析:资源有关使有关指令在流水线上停滞,减少了执行效率。 4)解决办法 在合理指令调度范畴内,尽量避免执行重复指令。尽量避免同一寄存器频繁使用,若无法避免,则使用寄存器换名办法。也可以考虑采用资源重复办法,例如,在流水线机器中设立互相独立指令存储器和数据存储器,也可以将CACHE分割成指令CACHE 和数据CACHE。 3. 在不采用定向技术状况下(去掉 Configuration 菜单中Enable Forwarding 选项前勾选符),用WinDLX 运营程序data_d.s。记录数据有关引起暂停时钟周期数以及程序执行总时钟周期数,计算暂停时钟周期数占总执行周期数比例。 1)实验成果: 没有采用定向技术时运营该程序,咱们得到: 2)成果分析: 程序执行了202个周期,10个数据有关引起时钟周期RAW stall为104个。暂停时钟周期数占总执行周期数比例=51.48% 4. 在采用定向技术状况下(勾选Enable Forwarding),用WinDLX 再次运营程序data_d.s。 重复上述3 中工作,并计算采用定向技术后性能提高倍数。 1)实验成果: 采用定向技术时运营该程序,咱们得到: 2)成果分析: 程序执行了128个周期,共有6个数据有关引起时钟周期RAW stall为30个。暂停时钟周期数占总执行周期数比例=23.44% 五.总结 实验二 循环展开及指令调度 一.实验目 1. 加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术理解; 2. 熟悉用指令调度技术来解决流水线中数据有关办法; 3. 理解循环展开、指令调度等技术对 CPU 性能改进。 二.实验平台 WinDLX simulator 四. 预备知识 1. WinDLX模仿器有关知识,详见有关文档。 2. 复习和掌握教材中相应内容: (1) 循环级并行性 (2) 指令调度 (3) 循环展开 (4) 寄存器换名 五. 实验内容及成果 1.用指令调度技术解决流水线中构造有关与数据有关 (1)用DLX汇编语言编写代码文献*.s,程序中应涉及数据有关与构造有关(假设:加法﹑乘法﹑除法部件各有2个,延迟时间都是3个时钟周期) 给出调度前程序sch_bef: .data .global ONE ONE:.word 1 .text .global main main: lf f1,ONE ;turn divf into a move cvti2f f7,f1 ;by storing in f7 1 in nop ;floating-point format divf f1,f8,f7 ;move Y=(f8) into f1 divf f2,f9,f7 ;move Z=(f9) into f2 addf f3,f1,f2 divf f10,f3,f7 ;move f3 into X=(f10) divf f4,f11,f7 ;move B=(f11) into f4 divf f5,f12,f7 ;move C=(f12) into f5 multf f6,f4,f5 divf f13,f6,f7 ;move f6 into A=(f13) Finish: trap 0 (2) 通过Configuration菜单中“Floating point stages” 选项,把加法﹑乘法﹑除法部件个数设立为2个,把延迟都设立为3个时钟周期; (3) 用WinDLX运营程序。记录程序执行过程中各种有关发生次数、发生有关指令组合,以及程序执行总时钟周期数; (4) 采用指令调度技术对程序进行指令调度,消除有关; 调度之后程序sch_aft: .data .global ONE ONE:.word 1 .text .global main main: lf f1,ONE ;turn divf into a move cvti2f f7,f1 ;by storing in f7 1 in nop ;floating-point format divf f1,f8,f7 ;move Y=(f8) into f1 divf f2,f9,f7 ;move Z=(f9) into f2 divf f4,f11,f7 ;move B=(f11) into f4 divf f5,f12,f7 ;move C=(f12) into f5 addf f3,f1,f2 multf f6,f4,f5 divf f10,f3,f7 ;move f3 into X=(f10) divf f13,f6,f7 ;move f6 into A=(f13) divf f10,f3,f7 ;move f3 into X=(f10) divf f13,f6,f7 ;move f6 into A=(f13) Finish: trap 0 (5) 用WinDLX运营调度后程序,观测程序在流水线中执行状况,记录程序执行总时钟周期数; (6) 依照记录成果,比较调度前和调度后性能。阐述指令调度对于提高CPU性能意义。 意义:可以看出通过调度之后运营周期从27减少到21,并且减少了有关。 2. 用循环展开、寄存器换名以及指令调度提高性能 (1)用DLX汇编语言编写代码文献*.s,程序中包括一种循环次数为4整数倍简朴循环; 循环展开前程序: LHI R2,(A>>16)&0xFFFF ADDUI R2,R2,A&0xFFFF LHI R3,(B>>16)&0xFFFF ADDUI R3,R3,B&0xFFFF ADDU R4,R0,R3 NOP loop: SUBI R4,R4,#8 SUB R5,R4,R2 BNEZ R5,loop TRAP #0 A: .double 1,2,3,4 B: .double 1,2,3,4 (2) 用WinDLX运营该程序。记录执行过程中各种有关发生次数以及程序执行总时钟周期数; (3) 将循环展开3次,将4个循环体构成代码代替本来循环体,并对程序做相应修改。然后对新循环体进行寄存器换名和指令调度; LHI R2,(A>>16)&0xFFFF ADDUI R2,R2,A&0xFFFF LHI R3,(B>>16)&0xFFFF ADDUI R3,R3,B&0xFFFF ADDU R4,R0,R3 SUBI R4,R4,#8 SUBI R4,R4,#8 SUBI R4,R4,#8 SUBI R4,R4,#8 TRAP #0 A: .double 1,2,3,4 B: .double 1,2,3,4 循环展开后程序: (4) 用WinDLX运营修改后程序,记录执行过程中各种有关发生次数以及程序执行总时钟周期数; (5) 依照记录成果,比较循环展开、指令调度先后性能。 结论:可以看出通过循环展开之后运营周期从30减少到14,并且减少了有关。 五.总结 实验三 记分牌算法和Tomasulo 算法 一.实验目 1. 掌握DLXview 模仿器用法; 2. 进一步理解指令动态调度基本思想,理解指令动态调度基本过程与办法; 3. 理解记分牌算法和Tomasulo 算法基本思想,理解它们基本构造、运营过程; 4. 比较分析基本流水线与记分牌算法和Tomasulo 算法性能及优缺陷。 二.实验平台 DLXview 模仿器 三.预备知识 1. DLXview 模仿器 2. 复习和掌握教材中相应内容 1)指令动态调度 2)乱序流水线 3)为了容许乱序执行,咱们将基本流水线译码阶段再分为两个阶段: 4)记分牌技术目的:在资源充分时,尽量早地执行没有数据阻塞指令,达到每个 时钟周期执行一条指令。 5)Tomasulo 算法将记分牌核心某些和寄存器换名技术结合在一起,其基本核心是通过 寄存器换名来消除写后写和先读后写有关也许引起流水线阻塞。 6)Tomasulo 算法基本思想 四.实验内容及成果 1. 用DLX汇编语言编写代码文献*.s(程序中应涉及指令数据有关、控制有关以及构造有关),以及有关初始化寄存器文献*.i和数据文献*.d; 305.s 305.i #put 30 into r2 -> #34(r2) is 64 (0x40) put r2 30 #put 2.5 into address 0x40 fput 0x40 2.5 #put 23 into r3 -> #45(r3) is 68 (0x41) put r3 23 #put 4.0 into address 68 fput 0x41 4.0 #put 1.25 into FP register f4 fput f4 1.25 lf f6,34(r2) lf f2,45(r3) multf f0,f2,f4 subf f8,f6,f2 divf f10,f0,f6 addf f6,f8,f2 trap #0 2. 观测程序中浮现数据有关、控制有关、构造有关,并指出三种有关指令组合; (1) 第二个lf指令到multf、subf和addf,multf到divf之间,subf到addf之间存在着先写后读有关。 (2) divf和addf之间存在着先读后写有关。 (3) addf和subf指令关于浮点加法部件还存在着构造有关。 3. 将自己编写程序*.s、*.i、*.d装载到DLXview模仿器上, (1)分别用基本流水线、记分牌算法和Tomasulo算法模仿,针对每一种模仿做如下分析: 基本流水线: 记录程序执行周期数和流水线中暂停时钟周期数 1个加法部件,延迟周期为2 2个乘法部件,延迟周期为10 1个除法部件,延迟周期为40 程序执行时钟周期数 67,流水线中暂停时钟周期10 ② 变化功能部件数目重新模仿,观测并记录性能变化 2个加法部件,延迟周期为2 3个乘法部件,延迟周期为10 2个除法部件,延迟周期为40 程序执行时钟周期数 67,流水线中暂停时钟周期10 ③ 变化功能部件延迟重新模仿,观测并记录性能变化 1个加法部件,延迟周期为1 2个乘法部件,延迟周期为8 1个除法部件,延迟周期为32 程序执行时钟周期数 47,流水线中暂停时钟周期8 由此可见增长功能部件数目之后,性能并没有提高 减少功能部件延迟之后,性能得到了显着提高。 记分牌算法: 记录程序执行周期数和流水线中暂停时钟周期数 1个加法部件,延迟周期为2 2个乘法部件,延迟周期为10 1个除法部件,延迟周期为40 程序执行时钟周期数 59,流水线中暂停时钟周期12 ② 变化功能部件数目重新模仿,观测并记录性能变化 2个加法部件,延迟周期为2 3个乘法部件,延迟周期为10 2个除法部件,延迟周期为40 程序执行时钟周期数 59,流水线中暂停时钟周期12 ③ 变化功能部件延迟重新模仿,观测并记录性能变化 1个加法部件,延迟周期为1 2个乘法部件,延迟周期为8 1个除法部件,延迟周期为32 程序执行时钟周期数 49,流水线中暂停时钟周期10 由此可见增长功能部件数目之后,性能并没有提高 减少功能部件延迟之后,性能得到了显着提高。 Tomasulo算法: 记录程序执行周期数和流水线中暂停时钟周期数 1个加法部件,延迟周期为2 2个乘法部件,延迟周期为10 1个除法部件,延迟周期为40 程序执行时钟周期数 56,流水线中暂停时钟周期10 ② 变化功能部件数目重新模仿,观测并记录性能变化 2个加法部件,延迟周期为2 3个乘法部件,延迟周期为10 2个除法部件,延迟周期为40 程序执行时钟周期数 56,流水线中暂停时钟周期10 ③ 变化功能部件延迟重新模仿,观测并记录性能变化 1个加法部件,延迟周期为1 2个乘法部件,延迟周期为8 1个除法部件,延迟周期为32 程序执行时钟周期数 46,流水线中暂停时钟周期8 由此可见增长功能部件数目之后,性能并没有提高 减少功能部件延迟之后,性能得到了显着提高。 (2)记录运营记分牌算法时功能部件状态表和指令状态表; (3)记录运营Tomasulo算法时指令状态表和保存站信息; 实验四 Cache 性能分析 一.实验目 1. 加深对 Cache 基本概念、基本组织构造以及基本工作原理理解; 2. 掌握 Cache 容量、相联度、块大小对Cache 性能影响; 3. 掌握减少 Cache 不命中率各种办法以及这些办法对提高Cache 性能好处; 4. 理解 LRU 与随机法基本思想以及它们对Cache 性能影响。 二.实验平台 Cache 模仿器MyCache 三.预备知识 MyCache 模仿器用法 1. 启动模仿器:用鼠标双击MyCache.exe。 2. 系统会打开一种操作界面。该界面左边为设立模仿参数区域,右边为模仿成果显示区 域。如图 1 所示。 3. 可以设立参数涉及:是统一Cache 还是分离Cache,Cache 容量,块大小,相联度, 替代算法,预取方略,写方略,写不命中时调块方略。可以直接从列表里选取。 4. 访问地址可以选取来自地址流文献,也可以选取手动输入。如果是前者,则可以通过点 击“浏览”按钮,从模仿器所在文献夹下面“地址流”文献夹中选用地址流文献(.din 文 件),然后进行执行。执行方式可以是步进,也可以是一次执行究竟。如果选取手动输入, 就可以在“执行控制”区域中输入块地址,然后点击“访问”按钮。系统会在界面右边显 示访问类型、地址、块号以及块内地址。 5. 模仿成果涉及: (1)访问总次数,总不命中次数,总不命中率; (2)读指令操作次数,其不命中次数及其不命中率; (3)读数据操作次数,其不命中次数及其不命中率; (4)写数据操作次数,其不命中次数及其不命中率; (5)手动输入单次访问有关信息。 图 1 MyCache 模仿器操作界面示意图 四. 实验内容及成果 1. Cache 容量对不命中率影响 1)启动 MyCache。 2)用鼠标点击“复位”按钮,把各参数设立为默认值。 3)选取一种地址流文献。办法:选取“访问地址”下“地址流文献”选项,然后点击“浏 览”按钮,从本模仿器所在文献夹下“地址流”文献夹中选用。 4)选取不同Cache 容量,涉及:2KB,4KB,8KB,16KB,32KB,64KB,128KB,256KB, 分别执行模仿器(点击“执行究竟”按钮),然后在表1 中记录各种状况下不命中率。 表 1 不同容量下Cache 不命中率 Cache容量(kb) 2 4 8 16 32 64 128 256 不命中率 14.22% 10.46% 7.59% 4.78% 2.84% 1.97% 1.26% 0.98% 地址流文献名:cc1.din 5)以容量为横坐标,画出不命中率随Cache 容量变化而变化曲线。并指明地址流文献名。 6) 依照该模仿成果,你能得出什么结论? 结论:在其她变量一定状况下,随着Cache容量变大不命中率逐渐减小最后趋于稳定。 2. 相联度对不命中率影响 1) 用鼠标点击“复位”按钮,把各参数设立为默认值。这时 Cache 容量为64KB。 2) 选取一种地址流文献。办法:选取“访问地址”下“地址流文献”选项,然后点击“浏览”按钮,从本模仿器所在文献夹下“地址流”文献夹中选用。 3) 选取不同Cache 相联度,涉及:直接映象,2 路,4 路,8 路,16 路,32 路,分别执行模仿器(点击“执行究竟”按钮),然后在表 2 中记录各种状况下不命中率。 a.某些截图: 表 2 当容量为64KB 时,不同相联度下Cache 不命中率 相联度 1 2 4 8 16 32 不命中率 1.97% 1.15% 0.99% 0.93% 0.92% 0.91% 地址流文献名:cc1.din 4) 把 Cache 容量设立为256KB,重复上一步工作。 表 3 当容量为256KB 时,不同相联度下Cache 不命中率 相联度 1 2 4 8 16 32 不命中率 0.98% 0.78% 0.74% 0.73% 0.71% 0.71% 地址流文献名:cc1.din 5) 以相联度为横坐标,画出在64KB 和256KB 状况下不命中率随Cache 相联度变化而变 化曲线。并指明地址流文献名。 6. 依照该模仿成果,你能得出什么结论? 结论:当cache容量一定期,不命中率先是随着相联度地增长而减小,但增长到一定限度后,不命中率不会再减少。当相联度相似,相联度较小时,cache容量越大不命中率就越低,但当相联度到达一定限度时,再增大cache容量就没有任何意义。 3. Cache 块大小对不命中率影响 1) 用鼠标点击“复位”按钮,把各参数设立为默认值。 2) 选取一种地址流文献。办法:选取“访问地址”下“地址流文献”选项,然后点击“浏 览”按钮,从本模仿器所在文献夹下“地址流”文献夹中选用。 3) 选取不同Cache 块大小,涉及:16B,32B,64B,128B,256B,对于Cache 各种 容量,涉及:2KB,8KB,32KB,128KB,512KB,分别执行模仿器(点击“执行究竟”按钮),然后在表 4 中记录各种状况下不命中率。 a.某些截图: 表 4 各种块大小状况下Cache 不命中率 eg.din 块大小(B) Cache容量(KB) 2 8 32 128 512 16 7.80% 7.40% 7.20% 7.20% 7.20% 32 5.4% 5% 4.7% 4.7% 4.7% 64 4.0% 3.4% 3.1% 3.1% 3.1% 128 4.4% 3.3% 2.4% 2.4% 2.4% 256 6.5% 5.1% 2.3% 1.9% 1.9% 地址流文献名:eg.din 4) 分析 Cache 块大小对不命中率影响。 结论:在Cache容量不变状况下,Cache块越大不命中率越小,最后趋于平缓。 4. 替代算法对不命中率影响 1) 用鼠标点击“复位”按钮,把各参数设立为默认值。 2)选取一种地址流文献。办法:选取“访问地址”下“地址流文献”选项,然后点击“浏 览”按钮,从本模仿器所在文献夹下“地址流”文献夹中选用。 3) 对于不同替代算法、Cache 容量和相联度,分别执行模仿器(点击“执行究竟”按钮), 然后在表 5 中记录各种状况下不命中率。 a.某些截图: (cache容量:16KB 相联度:2路 采用LRU算法) (cache容量:16KB 相联度:2路 采用随机算法) 表 5 LRU 和随机替代法不命中率比较 cache容量 相连度 2路 4路 8路 LRU 随机算法 LRU 随机算法 LRU 随机算法 16K 3.62% 4.50% 2.96% 4.71% 2.74% 5.43% 64K 1.15% 1.47% 0.99% 1.36% 0.93% 1.42% 256K 0.78% 0.83% 0.74% 0.76% 0.73% 0.72% 1M 0.71% 0.71% 0.70% 0.70% 0.70% 0.70% 地址流文献名:cc1.din 4) 分析不同替代算法对 Cache 不命中率影响。 结论:i.LRU和随机算法不命中率随着相联度增长而减少且随着cache容量增长而减少;?ii.在相联度相似,cache容量相似时,使用LRU替代算法不命中率比随机算法不命中率小;?iii.当cache容量增大到一定限度,相联度达到一定限度时,不命中率不会再减少,且与算法选取关系不大。 5. 混合Cache 和分离Cache 比较 1) 用鼠标点击“复位”按钮,把各参数设立为默认值。 2) 选取一种地址流文献。办法:选取“访问地址”下“地址流文献”选项,然后点击“浏 览”按钮,从本模仿器所在文献夹下“地址流”文献夹中选用。 3) 分别在分离Cache 和混合Cache 状况下,选取不同Cache 容量,涉及: 4KB,8KB, 16KB,32KB,64KB,128KB,256KB,分别执行模仿器(点击“执行究竟”按钮), 然后在表 6 中记录各种状况下不命中率。 a.某些截图: (Cache容量:4KB 混合Cache) (Cache容量:4KB 分离Cache) 表 6 分离Cache 和混合Cache 不命中率比较 容量 指令cache 数据cache 混合cache 4 5.53% 7.06% 5.40% 8 5.53% 7.06% 5.00% 16 5.53% 6.29% 4.70% 32 5.53% 5.86% 4.70% 64 5.53% 5.86% 4.70% 128 5.53% 5.86% 4.70% 256 5.53% 5.86% 4.70% 地址流文献名:eg.din 4) 对模仿成果进行分析。 结论:分离Cache 较混合Cache 不命中率较低,这是由于混合Cache按流水方式执行load指令和store指令时,也许会同步祈求一种数据字和一种指令字,这时会浮现构造冲突,导致CPU等待。 五.总结
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服