计算机系统结构实验教程
计算机体系结构实验讲义

本科教学实验讲义(实验)课程名称计算机体系结构学院(部、中心):信息学院执笔人(签字): 唐斌审核人(签字):编写时间:2016.7.9贵州财经大学教务处印制年月日实验一流水线技术一、实验目的1.加深对计算机流水线基本概念的理解;2.理解MIPS结构如何用5段流水线来实现,理解各段的功能和基本操作;3.加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU性能的影响;4.进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿。
5.加深对指令调度和延迟分支技术的理解;6.熟练掌握用指令调度技术来解决流水线中的数据冲突的方法;7.进一步理解指令调度技术和延迟分支技术对CPU性能的改进。
二、实验平台模拟器MIPSsim、计算机三、实验内容和步骤1、流水线工作原理a. 启动MIPSsim。
b. 勾选配置菜单中的“流水方式”,使模拟器工作于流水方式下。
c.观察程序在流水线中的执行情况,步骤如下:(1)用MIPSsim的“文件”菜单中的“载入程序”来加载pipeline.s(在模拟器所在文件夹下的“样例程序”文件夹中);(2)关闭定向功能。
这是通过在“配置”菜单中去选“定向”(即使得该项前面没有“√”号)来实现的;(3)用单步执行一周期的方式(“执行”菜单中,或用F7)执行该程序,观察每一周期中,各段流水寄存器内容的变化、指令的执行情况(代码窗口)以及时钟周期图;(4)当执行到第10个时钟周期时,各段分别正在处理的指令是:IF:ID:EX:MEM:WB:画出这时的时钟周期图。
(5). 这时各流水寄存器中的内容为:IF/ID.IR:IF/ID.NPC:ID/EX.A:ID/EX.B:ID/EX.Imm:ID/EX.IR:EX/MEM.ALUo:EX/MEM.IR:MEM/WB.LMD:MEM/WB.ALUo:MEM/WB.IR:2、流水线中的冲突a. 启动MIPSsim。
b. 观察和分析结构冲突对CPU性能的影响,步骤如下:(1)加载structure_hz.s(在模拟器所在文件夹下的“样例程序”文件夹中);(2)执行该程序,找出存在结构冲突的指令对以及导致结构冲突的部件;(3) 记录由结构冲突引起的停顿时钟周期数,计算停顿时钟周期数占总执行周期数的百分比;(4)把浮点加法器的个数改为6个;(5)再次重复上述(1)~(3)的工作;(6)分析结构冲突对CPU性能的影响,讨论解决结构冲突的方法。
计算机系统结构实验报告

计算机系统结构实验报告实验目的:掌握计算机系统的基本结构和工作原理,了解计算机系统的组成部分及其相互关系。
实验仪器和材料:计算机硬件设备(主机、硬盘、内存、显卡等)、操作系统、实验指导书、实验报告模板。
实验原理:实验步骤:1.搭建计算机硬件设备,将主机、硬盘、内存、显卡等组装连接好。
2. 安装操作系统,如Windows、Linux等。
3.启动计算机,进入操作系统界面。
4.打开任务管理器,查看CPU的使用情况。
5.打开任务管理器,查看内存的使用情况。
6.运行一些应用程序,观察CPU和内存的使用情况。
7.尝试使用输入输出设备,如键盘、鼠标等。
实验结果:通过实验,我们可以观察到计算机系统的硬件部分和软件部分的工作情况。
通过任务管理器,我们可以查看到CPU的使用情况和内存的使用情况。
在运行应用程序时,我们可以观察到CPU和内存的使用情况的变化。
通过使用输入输出设备,我们可以与计算机进行交互操作。
实验分析:从实验结果可以看出,计算机系统的硬件部分和软件部分都是相互关联的。
CPU作为计算机的核心部件,负责执行各种指令,通过数据传输和计算来完成各种操作。
而内存则用于存储数据和程序,通过读写操作来完成对数据的处理。
硬盘则用于长期存储数据。
操作系统则是计算机系统的管理者,通过调度CPU和内存的使用来实现对计算机资源的分配。
结论:计算机系统是由硬件和软件部分组成的,其中硬件部分包括CPU、内存、硬盘等,软件部分包括操作系统、应用程序等。
计算机系统通过CPU 的运算和数据传输来实现各种操作。
通过实验,我们可以观察到计算机系统的工作情况,并深入了解计算机系统的组成和工作原理。
实验总结:通过本次实验,我们对计算机系统的基本结构和工作原理有了更深入的了解。
实验中,我们搭建了计算机硬件设备,安装了操作系统,并通过观察和分析实验结果,进一步认识到计算机系统的组成部分和各部分之间的相互关系。
通过操作输入输出设备,我们还实践了与计算机进行交互操作的过程。
计算机体系结构课程实验

– 指令
• 访存类、寄存器操作、算术类、逻辑类、控制流转移
– WinDLX的Trap机制
实验步骤
一. 学习WinDLX软件使用; 二. 学习DLX汇编程序的编写; 三. 将程序在WinDLX上运行调试; 四. 观察程序中出现的数据/控制/结构相关; 五. 优化代码(在有定向功能和无定向功能两种情 况下),尽量消除相关引起的暂停; 六. 对优化后的代码重新模拟,并观察优化效果; 七. 分析实验结果,书写实验报告。
计算机系统结构课程实验
—— 流水线篇
主要内容
• 实验目的 • 实验原理 • 实验平台
– WinDLX
• 实验内容 • 实验步骤 • 实验要求
实验目的
• 通过该模拟实验,进一步掌握和巩固流水 线的基本知识; • 初步掌握在特定体系结构下的汇编代码的 编写和优化;
• 培养运用所学知识解决实际问题的能力。
DLX的汇编语法
• DLX的汇编语法(1/2)
– 伪指令
.data [address] .text [address] .global label .word word1,word2,… .space size .double 常数、运算符…………
一般地,指令(code)均被导入 $CODE (起始地址为0x100) 而数据(data)则被导入$DATA (起 始地址为0x1000)
实验要求
• 实验报告要求包括:
1. 程序源代码 2. 实验结果、实验分析、优化过程、性能分析 3. 简单谈谈自己对流水线技术的认识
提交形式: 实验源代码 + 实验报告(Word编辑) 文件夹命名格式:学号1_姓名1
谢 谢
实验原理
• 流水线执行过程
计算机系统结构课程实验1

计算机系统结构课程实验指导书2016——2017 学年第 2学期姓名:徐益学号:201415725指导教师:薛素静教研室:计算机系统结构教研室实验:存贮层次模拟器1学时:4学时实验类型:(综合/设计):设计一、实验目的与要求使学生清楚认识虚拟存贮层次结构,熟练掌握常用的几种存储地址映像与变换方法,以及FIFO、LRU等替换算法的工作全过程。
要求用程序实现任意地址流在存储层次上的命中情况,实验结束后提交源程序和实验说明书。
二、实验内容在模拟器上实现在任意地址流下求出在 Cache—主存两层存贮层次上的命中率。
三、实验步骤1.Cache—主存:映像方式要实现全相联、直接映象、组相联方式三种方式,并选择每一种映像方式下输出结果;替换算法一般使用LRU算法。
2.要求主存容量、Cache大小、块大小以及组数等可以输入修改。
3.求出命中率;显示替换的全过程;任选一种高级语言来做。
4.要设计简洁、易于操作的界面。
四、实验仪器设备计算机(装有java、Apache tomcat)五、实验过程1、设计思想:(1)在本次实验中,我使用的是java语言来实现。
(2)首先,建一个web项目,然后将整个实验分为前端和后端两部分,前端为jsp页面,用来输入数据和显示实验结果。
后端为Java,在本次实验我用了一个MyServlt类,在这个类中用来接收前端的数据,然后进行一系列的逻辑处理;即各个算法的具体实现。
最后将数据传送给前端输出。
(3)将整个cache看成是一个对象,然后建一个实体类Cache。
在这个类中有cache的大小、块大小、块数、块地址、计数器、计时器等属性。
块地址用于存放地址流,计数器用于计算命中率,当命中一次,计数器加1。
计时器用于LRU 算法。
当命中时,计时器清零。
每一个循环结束,有地址的块计时器加1;替换时,找到计时器最大的块地址,然后把它替换出去。
(4)将要输出的数据封装成一个类,然后进行输出。
六、实验代码1、前端代码:Index.jsp代码(用于输入数据):在本页面中用到jqurey插件以达到美观效果,其中的js、css等代码就不粘贴出来了。
计算机组织与体系结构(实验一)

中国矿业大学计算机科学与技术学院计算机组织与体系结构实验一目录1.实验目的 (2)2.实验设备 (2)3.实验内容和步骤 (2)4.实验步骤 (7)5.实验结果 (9)6.实验体会 (19)1.实验目的1)了解运算器的组成结构;2)掌握运算器的工作原理。
2.实验设备PC机一台,TD-CMA实验系统一套。
3.实验内容和步骤本实验的原理如图1-1所示。
运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种运算由控制信号S3…S0和CN来决定,任何时候多路选择开关只选择三部件中一个部件的结果作为ALU的输出。
如果是影响进位的运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。
ALU中所有模块集成在一片FPGA中。
逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对两个部件不再赘述。
移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-2所示。
图中显示的是一个4*4的矩阵(系统中是一个8*8的矩阵)。
每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即:1)对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连,而没有同任何输入相连的则输出连接0。
2)对于循环右移功能,右移对角线同互补的左移对角线一起激活。
例如,在4位矩阵中使用‘右1’和‘左3’对角线来实现右循环1位。
3)对于未连接的输出位,移位时使用符号扩展或是0填充,具体由相应的指令控制。
使用另外的逻辑进行移位总量译码和符号判别。
图1-1 运算器原理图运算器部件由一片FPGA实现。
ALU的输入和输出通过三态门74LS245连到CPU内总线上,另外还有指示灯标明进位标志FC和零标志FZ。
计算机组成原理实验教程完整版课件全

02
实验原理
03
实验内容
01
实验目的
实验目的
(1)理解累加器的概念和作用。 (2)连接运算器、存储器和累加器,熟悉计算机的数据通路。 (3)掌握使用微命令执行各种操作的方法。
40
02
实验原理
数据通路总框图:
实验原理
03
实验内容
实验内容
(1)在已有电路中加入一个74LS374芯片作为累加寄存器。 (2)设计微命令,使用累加器完成一次加法运算。
目录
Contents
01
实验目的
02
实验原理
03
实验内容
01
实验目的
实验目的
1) 熟悉多思计算机组成原理网络虚拟实验系统的使用方法。 2)掌握全加器的逻辑结构和电路实现方法。
3
02
实验原理
实验原理
(1)全加器是一个三输入,两输出的逻辑部件, 三个输入:被加数Ai、加数Bi和低位的进位Ci, 两个输出:本位和Si和向高位的进位Ci+1,
实验原理
总线与微命令实验数据通路图:
实验原理
03
实验内容
实验内容
(1)运行虚拟实验系统,导入总线与微命令电路。 (2)执行A+B的微命令。 (3)设计并执行C-D的微命令。
谢谢欣赏
感谢使用计算机组成原理多思网络虚拟实验系统
实验五 累加器
基于多思网络虚拟实验系统
目录
Contents
01
实验目的
谢谢欣赏
感谢使用计算机组成原理多思网络虚拟实验系统
实验六 程序计数器
基于多思网络虚拟实验系统
目录
Contents
01
实验目的
计算机组成与系统结构实验课件

运算器设计与仿真
一、实验目的
理解并掌握运算器的基本电路结构及其设计方
法,学会使用Verilog HDL对电路进行行为建 模、结构建模以及仿真测试。 二、实验内容
利用Verilog HDL设计一个运算器模型,并进
行仿真测试。要求该运算器的字长为32位,能 够实现加法、减法、逻辑与、逻辑或四种运算, 并产生N(结果为负)、Z(结果为零)、V(结果溢 出)、C(进位)四个标志位。要求采用层次化的 建模方法,即先搭建低层模块,然后再逐级搭 建高层模块。 三、实验环境
dce<31:q0<>31:0> c r30
dce<31:q0<>31:0> c r31
N1<4> N1<3> N1<2> N1<1> N1<0>
A0<31:0> A1<31:0> A2<31:0> A3<31:0> A4<31:0> … A30<31:0> A31<31:0>
Y<31:0>
Mux32*32 Q1<31:0>
当前状态Q3Q2Q1Q0 0000 (S0) 0001 (S1) 0001 (S1) 0001 (S1) 0001 (S1) 0001 (S1) 0010 (S2) 0011 (S3) 0100 (S4) 0101 (S5) 0110 (S6) 0111 (S7) 1000 (S8) 1001 (S9) 1010(S10)
b=32'hA520_4232;
=?
错误?
op=2'b00
计算机组成原理与系统结构实验教程

(一)界面窗口介绍
主界面主要分为三部分:指令区、输出区和图形区,下面分别加以介绍。
指令区:
分为两部分,即机器指令区和微指令区,在指令区的下方有两个Tab按钮,您可以通过按钮在两者之间来回切换。
机器指令区:分为两列,第一列为下位机主存地址(00—FF,共256个单元),第二列为每一地址中所对应的数值。如果串口通讯正常且系统不忙(即串口没有被占用),您可以直接修改指定单元的内容,方法是用鼠标单击要修改单元的数据,此单元格会变成一个编辑框,等待您输入,该编辑框只接收两位合法的16进制数(请注意:非16进制数不认),如果输入正确,您可以按回车键确认,或用鼠标点击别的区域,这样就完成了修改工作。如果想要结束修改,您可以按下ESC键,编辑框就会自动消失,恢复显示原来的值。一旦编辑框出现,您可以通过上下键让编辑框上下移动,从而选中需要修改的地址单元。如果输入不正确,如输入少于2个字符,则不进行修改。
①.端口1(1)
此命令用来选择串口1进行联机通讯,该命令会对串口1进行初始化操作,并进行联机测试,报告测试结果,如果联机成功,则会将指令区初始化。
②.端口2(2)
此命令用来选择串口2进行联机通讯,该命令会对串口2进行初始化操作,并进行联机测试,报告测试结果,如果联机成功,则会将指令区初始化。
③.端口测试
2.对实验设计具有完全的开放性,增强学生综合设计能力
系统所具有的软硬件结构对用户的实验设计具有完全的开放性,其数据线、地址线、控制线都由用户来操作连接,系统中的运算器结构、控制器结构及微程序指令的格式及定义均可由用户根据教学需要来做灵活改变或重新设计。这对于用户自行设计各种结构及不同复杂程度的模型计算机提供了强大的软硬件操作平台,从而避免了单纯验证性的实验模式,极大提高了学生计算机系统的综合设计能力。
计算机系统结构实验指导(修改)

计算机系统结构实验指导主编:刘文英宋继志中国石油大学(华东)计算机与通信工程学院目录实验一熟悉模拟器W IN DLX的使用 (1)一、实验目的 (1)二、实验平台 (1)三、实验内容和步骤 (1)四、实验任务 (6)实验二流水线中的相关 (8)一、实验目的 (8)二、实验平台 (8)三、实验内容和步骤 (8)实验三环境熟悉与基本CPU设计 (10)一、实验目的 (10)二、实验说明 (10)三、基本CPU的设计 (14)四、实验步骤与现象 (19)五、实验思考总结 (20)实验四多级流水CPU设计 (21)一、实验目的 (21)二、流水线的工作原理 (21)三、5级流水无Cache的CPU (24)四、实验步骤与现象 (31)五、实验总结思考 (32)附录A TEC-CA开放式CPU实验教学系统介绍 (33)A.1 TEC-CA的总体结构概述 (33)A.1.1 TEC-CA的组成部分 (33)A.1.2 TEC-CA的总体结构 (34)A.2 TEC-CA的设计指导思想 (34)A.3 TEC-CA的功能概述 (35)A.3.1 TEC-CA的基本功能 (35)A.3.2 TEC-CA的扩展功能 (35)A.4 子板 (36)A.4.1 Cyclone系列FPGA的特点 (36)A.4.2 Cyclone系列FPGA的结构 (37)A.4.3 TEC-CA-I子板和实验平台的连接 (38)A.4.4 使用EPlC6和EPlCl2的限制 (38)A.5 实验平台 (41)A.5.1 实验平台布局图 (41)A.5.2 实验平台上的指示灯 (42)A.5.2 实验平台上的指示灯 (43)A.5.3 实验平台上的开关 (43)A.5.4 实验平台上的指示灯和逻辑笔 (45)A.5.5 实验平台上的短路子和单脉冲按钮 (46)A.6 TEC-CA的3种调试模式及其设定 (46)A.6.1 TEC-CA的3种调试模式 (46)A.6.2 三种调试模式的设定 (48)A.7 FPGA-CPU的一般实验步骤 (48)A.8 TEC-CA出厂时模式开关和短路子的默认设置 (50)附录B 调试软件DEBUGCONTROLLER (51)B.1 简介 (51)B.1.1 用户界面 (51)B.1.2 命令 (53)B.1.3 Debugcontroller使用流程 (56)B.2 规则文件语法与编写指南 (60)B.2.1 基本语法 (60)B.2.2 进阶使用 (62)B.3 汇编程序格式说明 (64)附录C TEC-CA教学机用前准备工作 (66)实验一熟悉模拟器WinDLX的使用一、实验目的1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。
计算机体系结构实验二

实验二循环展开及指令调度实验目的1.加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;2.熟悉用指令调度技术来解决流水线中的数据相关的方法;3.了解循环展开、指令调度等技术对CPU性能的改进。
实验平台WinDLX simulator实验内容和步骤1.用指令调度技术解决流水线中的结构相关与数据相关(1)用DLX汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:加法﹑乘法﹑除法部件各有2个,延迟时间都是3个时钟周期)代码.data.global ONEONE: .word 1.text.global mainmain:lf f1,ONEcvti2f f7,f1nopdivf f1,f8,f7divf f2,f6,f7addf f3,f1,f2divf f10,f3,f7divf f4,f11,f7divf f5,f12,f7multf f6,f11,f7multf f6,f4,f5divf f13,f6,f7Finish:trap 0(2)通过Configuration菜单中的“Floating point stages”选项,把加法﹑乘法﹑除法部件的个数设置为2个,把延迟都设置为3个时钟周期;(3)用WinDLX运行程序。
记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总时钟周期数;结构相关1次别在9 10行数据相关3次分别在5 6 11行(4)采用指令调度技术对程序进行指令调度,消除相关;.data .global ONEONE: .word 1.text.global mainmain:lf f1,ONEcvti2f f7,f1nopdivf f1,f8,f7divf f2,f6,f7divf f10,f3,f7divf f4,f11,f7addf f3,f1,f2multf f6,f11,f7divf f5,f12,f7multf f6,f4,f5divf f13,f6,f7Finish:trap 0(5)用WinDLX运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数;(6)根据记录结果,比较调度前和调度后的性能。
计算机体系结构试验2

计算机系统结构课程计算机系统结构课程实验报告2010 2010 ——————2011 2011 2011 学年学年学年第 2 2 学期学期学期实验二:存贮层次模拟器学时:学时:22学时实验类型:(综合(综合//设计):设计 一、实验目的与要求使学生清楚认识cache-主存层次结构,熟练掌握常用的几种存储地址映象与变换方法,以及FIFO 、LRU 等替换算法的工作全过程。
等替换算法的工作全过程。
要求用程序实现任意地址流在存储层次上的命中情况,实验结束后提交源程序和实验说明书。
书。
二、实验内容在模拟器上实现在任意地址流下求出在在模拟器上实现在任意地址流下求出在 Cache Cache Cache—主存存贮层次上的命中率。
—主存存贮层次上的命中率。
—主存存贮层次上的命中率。
三、实验步骤1.Cache Cache—主存:—主存:映像方式可以选择全相联、直接映象、组相联方式;替换算法一般使用LRU算法。
算法。
2.要求主存容量、.要求主存容量、Cache Cache 大小、块大小以及组数等可以输入修改。
大小、块大小以及组数等可以输入修改。
3.求出命中率;显示替换的全过程;任选一种高级语言来做。
.求出命中率;显示替换的全过程;任选一种高级语言来做。
4.要有简洁、易于操作的界面。
.要有简洁、易于操作的界面。
四、代码#include <stdio.h> #include <string.h> typedef struct CMemory4 { int gm;//组号组号组号int bm; }; CMemory4 mem4[50]; typedef struct CCach4 { int gc; int bc; int cc; int bs; }; CCach4 cac4[50]; int a2[10][20],b2[10][20]; void inputmem2(int m_num,int group) //输入输入 { int i,t=0,nn=0; for(i=0;i<m_num;) { for(int j=0;j<group;j++) { if(i>=m_num) { break; } printf("第%d块",i); scanf("%d",&nn); mem4[i].bm=nn; mem4[i].gm=nn%group; i++; } } } void initcac2(int ilen,int group) // { int i=0,j=0; for(i;i<group;i++) { for(j;j<ilen/group;j++) { //cac[j].gc=i;// cac4[j].bc=-1;// cac4[j].cc=0; cac4[j].bs=j; } } } void change2(int x,int y,int cnum) { for(int i=0;i<cnum;i++) { cac4[i].cc+=1; } a2[y][x]=cac4[y].bc; b2[y][x]=cac4[y].cc; } void fdl(int cnum) { int tmp; tmp=cac4[0].bc; for(int i=0;i<cnum;i++) { cac4[i].bc=cac4[i+1].bc; } cac4[cnum-1].bc=tmp; } float steadcac2(int tt,int c_num,int j,float h,int i,int g,int group) { float sc=h; int fi=1,fj;//判断是否装满的标记判断是否装满的标记判断是否装满的标记for (int jj=0;jj<c_num;jj++)//判断cache中是否装满中是否装满 { if(jj%group==g&&cac4[jj].bc==-1) { fi=0;//没有装满没有装满fj=jj; break; } } if(fi==0)// 未装满未装满{ cac4[fj].bc=tt;//装入Cache中printf("块%d装入%d组%d块号\n",tt,g,cac4[fj].bs); } else //装满装满装满{ int m=0; for(m;m<c_num;m++) { if(tt==cac4[m].bc) { printf("块%d命中%d组%d块号\n",tt,g,cac4[m].bs); sc=sc+1;//命中命中break; } } if (m==c_num) { fdl(c_num);//FIFO替换,把进队较早的替换掉替换,把进队较早的替换掉cac4[0].bc=tt; printf("块%d替换%d组%d块号\n",tt,g,cac4[m].bs); } } return sc; } bool compare2(int m_num,int c_num,int group) { float sc=0; int sm=0,max,j=0,gm,gc,gt=0,tt,bm; for(int i=0;i<m_num;i++)//内存单元内存单元内存单元{ for(j=0;j<c_num; j++) { gm=mem4[i].gm; gc=j%group; bm=mem4[i].bm; if(gm==gc)//检查组号相等检查组号相等{ if(cac4[gt].bc==bm) { sc=sc+1;//命中命中printf("块%d命中%d组%d块号!\n",bm,gc,cac4[gt].bs); } else { if(j==0) { gt=0; } else { gt++; } sc=steadcac2(bm,c_num,gt,sc,i,gc,group); } sm++; if(gt>=c_num/group) { gt=0; } break; } } } printf("命中率:H=%.2f\n",sc/sm); return 1; } void Flink()// { int m_num,c_num,group; printf("请输入内存大小:"); scanf("%d",&m_num); printf("请输入Cache大小:"); scanf("%d",&c_num); printf("请输入组数:"); scanf("%d",&group); inputmem2(m_num,group); initcac2(c_num,group); // compare2(m_num,c_num,group); } 结果截图:结果截图:。
计算机系统结构实验 3.1 微程序版CPU 赖晓铮

03H:00000000
04H:11010001 05H:00010100 06H:00001100 07H:01010000 08H:11000001
ADD0_SUB0
09H:00010100
0AH:00001100 0BH:01010000 0CH:00000001
实验步骤(循环结构程序):
1) 单操作数运算指令验证程序SOP_JZ是典型的循环结构程序, 其功能类似于汇编语言的“LOOP”语句,实现了“1+2+„ +9+10”的连续十次相加求和,代码如后页所示。
ADD
汇编助记符 SET R0, 03H (M地址:机器指令) 00H:00110000
01H:00000011 02H:00110100 03H:00110000 04H:00111000 05H:11110000
SET R1, 30H
SET R2, F0H
ADD R0, R1
ADD R2, R1 HLT
JS
OUT R1, PORT0
HLT
0CH:01010100
0DH:00000001
汇编助记符 SET R0, 0
(M地址:机器指令) 00H:00110000 01H:00000000 02H:00110100
SET R1, 0 ADD R0, R1 JC 0CH OUT R0, PORT0 SUB R0, R1 JC 0CH OUT R0, PORT0 HLT
重启过程(跳出“断点”)
1) 时钟信号CLK接开关MANUAL=0, 手动令复位信号端#RESET的状 态“101”变化,即重启完 成,跳出“断点”继续执行 。
注:跳出“断点”后,CPU进入HLT指令的 后续下一条指令的取指周期。
《计算机系统结构》实验手册(内容)

计算机系统结构模拟实验手册孟昭进刘东升赵斯琴编内蒙古师范大学计算机与信息工程学院二00六年五月计算机系统结构模拟实验手册目录第一部分预备知识 (3)1.指令集结构发展概述 (4)2.WinDLX简介 (6)3.DLX指令集结构 (7)3.1 DLX的寄存器 (7)3.2 DLX的数据类型 (7)3.3 DLX的寻址模式 (7)3.4 DLX指令格式 (8)3.5 DLX指令集 (8)4.WinDLX模拟器教程 (13)4.1 WinDLX模拟器的安装 (13)4.2 开始和配置WinDLX (13)4.3装载测试程序 (14)4.4 模拟运行程序 (18)5.实验中用到的几个.s文件 (24)第二部分实验项目 (25)实验一熟悉WinDLX的使用 (26)一、实验目的 (26)二、实验内容 (26)三、实验报告 (26)实验二DLX流水线结构相关 (27)一、实验目的 (27)二、实验内容 (27)三、实验报告 (27)实验三DLX流水线数据相关 (28)一、实验目的 (28)二、实验内容 (28)三、实验报告 (28)实验四DLX流水线指令调度 (29)一、实验目的 (29)二、实验内容 (29)三、实验报告 (29)实验五编译器对系统性能的影响实验 (30)一、背景知识 (30)二、gcc简介 (31)三、icc 简介 (32)·1·计算机系统结构模拟实验手册.2.四、实验目的 (32)五、实验内容 (32)六、实验报告 (33)实验六CPU性能测试实验 (34)一、背景知识 (34)二、实验目的 (35)三、实验内容 (35)四、实验报告 (35)实验七基于Cache的矩阵乘积算法性能改善实验 (39)一、背景知识 (39)二、实验目的 (40)三、实验内容 (40)四、实验报告 (40)参考文献 (43)计算机系统结构模拟实验手册第一部分预备知识·3·计算机系统结构模拟实验手册·4·1.指令集结构发展概述IBM资深专家 C.M.Amdahl 1964年在介绍IBM 360系统时首先提出计算机系统结构(computer architecture)的概念:计算机系统结构是程序员所看到的计算机的属性,即概念性结构与功能特性。
大连理工大学计算机系统结构实验-实验一

大连理工大学实验报告计算机系统结构实验实验一MIPS指令系统和MIPS体系结构学院(系):电子信息与电气工程学部专业:计算机科学与技术学生姓名:班级:学号:大连理工大学Dalian University of Technology实验一MIPS指令系统和MIPS体系结构一、实验目的和要求1. 了解熟悉MIPSsim模拟器。
2. 熟悉MIPS指令系统及其特点。
3. 熟悉MIPS体系结构。
二、实验步骤1、启动MIPSsim。
2、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。
3、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。
4、选择“文件”->“载入程序”选项,加载样例程序alltest.asm,然后查看“代码”窗口,查看程序所在的位置(起始地址为0x00000000)。
5、查看“寄存器”窗口PC寄存器的值:[PC]= 0x00000000 。
6、执行load和store指令,步骤如下:(1)单步执行一条指令(F7)。
(2)下一条指令地址为= 0x00000004 ,是一条有(有,无)符号载入字节(字节,半字,字)指令。
(3)单步执行一条指令(F7)。
(4)查看R1的值,[R1]=0X FFFFFFFFFFFFFF80 。
(5)下一条指令地址为=0X00000008 ,是一条有(有,无)符号载入字(字节,半字,字)指令。
(6)单步执行1条指令。
(7)查看R1的值,[R1]=0X0000000000000080 。
(8)下一条指令地址为=0X0000000C ,是一条无(有,无)符号载入字(字节,半字,字)指令。
(9)单步执行1条指令。
(10)查看R1的值,[R1]= 0X0000000000000080 。
(11)单步执行1条指令。
(12)下一条指令地址为0X00000014 ,是一条保存字(字节,半字,字)指令。
(13)单步执行一条指令。
(14)查看内存BUFFER处字的值,值为0x00000080 。
计算机组成原理与系统结构实验教程

实验一算术逻辑运算实验一.实验目的1.了解运算器的组成结构。
2.掌握运算器的工作原理。
3.学习运算器的设计方法。
4.掌握简单运算器的数据传送通路。
5.验证运算功能发生器74LS181 的组合功能。
二.实验设备TDN-CM+或TDN-CM++教学实验系统一套。
三.实验原理实验中所用的运算器数据通路图如图2.6-1。
图中所示的是由两片74LS181 芯片以并/串形式构成的8 位字长的运算器。
右方为低4 位运算芯片,左方为高4 位运算芯片。
低位芯片的进位输出端Cn+4 与高位芯片的进位输入端Cn 相连,使低4 位运算产生的进位送进高4 位运算中。
低位芯片的进位输入端Cn 可与外来进位相连,高位芯片的进位输出引至外部。
两个芯片的控制端S0~S3 和M 各自相连,其控制电平按表2.6-1。
为进行双操作数运算,运算器的两个数据输入端分别由两个数据暂存器DR1、DR2(用锁存器74LS273 实现)来锁存数据。
要将内总线上的数据锁存到DR1 或DR2 中,则锁存器74LS273 的控制端LDDR1 或LDDR2 须为高电平。
当T4 脉冲来到的时候,总线上的数据就被锁存进DR1 或DR2 中了。
为控制运算器向内总线上输出运算结果,在其输出端连接了一个三态门(用74LS245 实现)。
若要将运算结果输出到总线上,则要将三态门74LS245 的控制端ALU-B 置低电平。
否则输出高阻态。
2图2.6-1 运算器通路图数据输入单元(实验板上印有INPUT DEVICE)用以给出参与运算的数据。
其中,输入开关经过一个三态门(74LS245)和内总线相连,该三态门的控制信号为SW-B,取低电平时,开关上的数据则通过三态门而送入内总线中。
总线数据显示灯(在BUS UNIT 单元中)已与内总线相连,用来显示内总线上的数据。
控制信号中除T4 为脉冲信号,其它均为电平信号。
由于实验电路中的时序信号均已连至“W/R UNIT”单元中的相应时序信号引出端,因此,需要将“W/R UNIT”单元中的T4 接至“STATE UNIT”单元中的微动开关KK2 的输出端。
计算机体系结构系统结构实验

2 实验原理
2.2
RISC 处理器的流水方案
设计
数据通路图
2019/3/8
2019/3/8
2 实验原理
流水模型机工作原理(两级
流水)
指令分析部件
指令执行部件
2019/3/8
指令分析部件
取指:IR1
将指令码锁存
译码:产生所需的控制信号 形成操作数 在机器周期结束时,也就是
流水线处理机设计
何辉
2019/3/8
目录
1
实验目的 2 实验原理 3 实验步骤 4 实验要求
2019/3/8
1.实验目的
掌握RISC处理器设计
设计具有流水功能的模型机
掌握FPGA设计流程 实验学时
8学时
2019/3/8
2 实验原理
2.1
RISC 处理器指令系统
指令格式
2019/3/8
2 实验原理
2.1
RISC 处理器指令系统
*
指令描述示例
OP部分请自定义
2019/3/8
2 实验原理
指令描述
单周期指令
MOV ADD
双周期指令
STORE、LOAD、JMP STORE、LOAD
指令中,A 为存或 取数的直接地址 JMP 指令,A 为转移地址的立即数
程序
2019/3/8
3.实验步骤
2.连接实验电路
2019/3/8
3.下载FPGA文件
4.
联机调试 详细步骤见word文档 设计资料 ftp://10.245.130.21
2019/3/8
4.实验要求
A
设计报告(纸质和电子版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一流水线及流水线中的冲突
实验目的
1.加深对计算机流水线基本概念的理解;
2.理解MIPS结构如何用5段流水线来实现,理解各段的功能和基本操作;
3.加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU性能的影响;
4.进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿。
5.加深对指令调度和延迟分支技术的理解;
6.熟练掌握用指令调度技术来解决流水线中的数据冲突的方法;
7.进一步理解指令调度技术和延迟分支技术对CPU性能的改进。
实验平台
指令级和流水线操作级模拟器MIPSsim,
实验内容和步骤
首先要掌握MIPSsim模拟器的使用方法。
一、流水线及流水线中的冲突观察
1. 启动MIPSsim。
2.根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。
(用鼠标双击各段,就可以看到各流水寄存器的内容)
3. 熟悉MIPSsim模拟器的操作和使用方法。
可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一个周期、执行多个周期、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化,特别是流水寄存器内容的变化。
4. 勾选配置菜单中的“流水方式”,使模拟器工作于流水方式下。
5.观察程序在流水线中的执行情况,步骤如下:
(1)用MIPSsim的“文件”菜单中的“载入程序”来加载pipeline.s(在模拟器所在文
件夹下的“样例程序”文件夹中);
(2)关闭定向功能。
这是通过在“配置”菜单中去选“定向”(即使得该项前面没有“√”
号)来实现的;
(3)用单步执行一周期的方式(“执行”菜单中,或用F7)执行该程序,观察每一周
期中,各段流水寄存器内容的变化、指令的执行情况(代码窗口)以及时钟周期
图;
(4)当执行到第10个时钟周期时,各段分别正在处理的指令是:
IF:
ID:
EX:
MEM:
WB:
画出这时的时钟周期图。
6. 这时各流水寄存器中的内容为:
IF/ID.IR:
IF/ID.NPC:
ID/EX.A:
ID/EX.B:
ID/EX.Imm:
ID/EX.IR:
EX/MEM.ALUo:
EX/MEM.IR:
MEM/WB.LMD:
MEM/WB.ALUo:
MEM/WB.IR:
7. 观察和分析结构冲突对CPU性能的影响,步骤如下:
(1)加载structure_hz.s(在模拟器所在文件夹下的“样例程序”文件夹中);
(2)执行该程序,找出存在结构冲突的指令对以及导致结构冲突的部件;
(3) 记录由结构冲突引起的停顿时钟周期数,计算停顿时钟周期数占总执行周期数的百分比;
(4)把浮点加法器的个数改为6个;
(5)再次重复上述(1)~(3)的工作;
(6)分析结构冲突对CPU性能的影响,讨论解决结构冲突的方法。
8. 观察数据冲突并用定向技术来减少停顿,步骤如下:
(1)把浮点加法器的个数改为1个;
(2)加载data_hz.s(在模拟器所在文件夹下的“样例程序”文件夹中);
(3)关闭定向功能。
这是通过在“配置”菜单中去选“定向”(即使得该项前面没有“√”
号)来实现的;
(4)用单步执行一个周期的方式(F7)执行该程序,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突;
(5)记录数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数,计算停顿时钟周期数占总执行周期数的百分比;
(6)复位CPU;
(7)打开定向功能。
这是通过在“配置”菜单中勾选“定向”(即使得该项前面有一个“√”号)来实现的;
(8)用单步执行一周期的方式(F7)执行该程序,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突,并与(3)的结果进行比较;
(9)记录数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数。
计算采用定向技术后性能提高的倍数。
二、指令调度和延迟分支
1. 启动MIPSsim。
2. 根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。
(用鼠标双击各段,就可以看到各流水寄存器的内容)
3. 勾选配置菜单中的“流水方式”,使模拟器工作于流水方式下。
4. 用指令调度技术解决流水线中的结构冲突与数据冲突。
(1)启动MIPSsim;
(2)通过“配置”菜单中的“常规配置”项把加法﹑乘法﹑除法部件的个数设置为两个,把它们的延迟时间都设置为3个时钟周期;
(3)用MIPSsim的“文件”菜单中的“载入程序”来加载schedule.asm(在模拟器所在文件夹下的“样例程序”文件夹中);
(4)关闭定向功能。
这是通过在“配置”菜单中去选“定向”(即使得该项前面没有“√”
号)来实现的。
(5)执行所载入的程序,通过查看统计数据和时钟周期图,找出并记录程序执行过程中各种冲突发生的次数、发生冲突的指令组合,以及程序执行的总时钟周期数;
(6)采用指令调度技术对程序进行指令调度,消除冲突。
将调度后的程序放到after-schedule.asm中;
(7)载入after-schedule.asm;
(8)执行该程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数;
(9)根据记录结果,比较调度前和调度后的性能。
论述指令调度对于提高CPU性能的作用。
5. 用延迟分支减少分支指令对性能的影响。
(1)启动MIPSsim;
(2)载入branch.asm;
(3)关闭延迟分支功能。
这是通过在“配置”菜单中去选“延迟分支”来实现的;
(4)执行该程序,观察并记录发生分支延迟的时刻,保存下其时钟周期图(可用拷屏的方法);
(5)记录执行该程序所花的总时钟周期数;
(6)假设延迟槽为一个,对branch.asm进行指令调度,然后存到delayed-branch.asm中;(7)载入delayed-branch.asm;
(8)打开延迟分支功能;
(9)执行该程序,观察其时钟周期图,保存下其时钟周期图;
(10)记录执行该程序所花的总时钟周期数;
(11)对比上述两种情况下的时钟周期图;
(12)根据记录结果,比较没采用延迟分支和采用了延迟分支的性能。
论述延迟分支对于提高CPU性能的作用。