计算机系统结构结构相关实验报告,计算机系统结构实验报告.doc

电 子 科 技 大 学

实 验 报 告

学生姓名: 学 号: 一、实验室名称:计算机学院实验中心二、实验项目名称:计算机系统结构课程实验三、实验原理:

1. 由教师给出一个具有基本功能的Verilog HDL流水线源代码;

2. 学生完成下面3个方面的内容:

(1)自行设计汇编伪指令格式,完成一个能把自己的汇编指令转换成流水线CPU能够识别的二进制指令的汇编器,实现语言不限;

(2)自行设计能够解决数据相关的机制并基于源代码进行扩展;

(3)自行设计能够解决控制相关的机制并基于源代码进行扩展。

四、实验目的:

帮助学生理解流水线的运行机制和基于Verilog HDL硬件描述语言的实现技术。五、实验内容:

(一) 基本流水线分析

1.1 认真阅读和理解源代码,请详细按要求回答每个问题。

源代码中文件是按什么样的规律来组织的?

答:按照子模块组织源代码文件。模块pipelinedcpu_tb用来控制CPU的时钟等信号,调用pipelinedcpu模块(假定为1级模块,最高级),1级模块中按顺序调用各个周期以及周期与周期之间的中间寄存器模块(假定为2级模块),2级模块中调用各自部件模块(假定为3级模块)。模块pipelinedcpu用来控制每级流水线及流水线级之间的控制信号,寄存器信息,其余子模块用来具体实现每一级流水线的功能。

存储器的实现方式?

答:用一个二维数组reg [31:0] ram [0:31] 实现,其中第一维代表32位地址,第二维代表32位数据

接口有:32位输入数据和输出,32位地址,一个同步时钟脉冲clk,一个控制写入的信号we

先对二维数组进行初始化

读数据时不需要时钟脉冲的激励,写数据时需要时钟脉冲的上升沿激励信号并且we信号为1

源代码文件中的流水线与我们课堂上讲的原理电路图有何相同之处,有何不同之处

答:相同:WB级,写回级使用2路32位的多路选择器来选择是获取ALU的计算结果还是LOAD指令从数据存储器中读取出来的数据。这里与课堂上所讲的内容基本相同。

流水线都分为五个执行级,都是在译码级产生各种控制信号,一级一级往后传,分离的指令存储器和数据存储器。各个部件以及逻辑都没有太大差异

不同:源代码文件中的流水线中的ALU部件的输出接在一个两路选择器上,并且没有zero输出端,而课堂上的直接输出到中间寄存器

源代码文件中没有关于消除数据相关的代码,而课堂上讲的原理电路图有消除数据相关的线路

没有数据前推和load前推的相关实现,指令格式的区别,流水线alu运算部件两个端口都可以接受立即数。

通过分析,写出本流水线的控制信号有哪些?对比我们课堂上讲的控制信号的差别有哪些?

答:本实验的控制信号主要有:wreg、m2reg、wmem、jal、aluc、aluimm

分别表示指令是否要写寄存器、信号是否有数据存储器中的数据需要写回寄存器、是否有指令需要往数据存储器中写数据、流水线寄存器R是要写入ALU的运算结果还是EPC的内容、指令的操作类型,例如加、减、与、或。、ALU的B输入端是否要选择立即数输入

差别主要有:regrt信号控制目的寄存器是rd或rt,sext信号控制是否需要传递立即数,wmem信号控制是否需要访存,jal信号控制exe级和mem级之间是传递运算结果还是立即数,这些信号是课堂上的流水线没有的。

1.2 针对流水线的指令集,编写必要的测试指令,分析运算结果,回答哪些指令的组合能由此流水线源代码正确实现,哪些指令的组合不能由此流水线源代码正确实现。(要求在实验报告中写出所完成的测试指令的组合、每个组合的仿真过程及结果、每个过程和结果的必要分析。)

(1)第一组指令序列

指令序列:

add r2 r1 1

add r2 r1 10

add r1 r3 1

add r1 r2 10

add r2 r2 1

add r2 r3 10

sub r2 r1 r3

截图:

结果分析:

观察三到九周期的ealu信号分别为(10,1,1,10,1,10,10),第九个周期的ealu为10,该周期执行的指令是sub r2 r1 r3;可见第一条指令赋值r1=10;第二条指令赋值r2=1;所以最后一条指令sub r1 r1 r2执行后结果为9,符合条件。

当有数据相关时,就会出问题,再观察第五、六、七两个周期,指令的执行结果均为1。故该程序不能解决数据相关问题。

(二) 汇编器实现

2.1自行设计与所给出的流水线指令的汇编格式,在下表中写出。

指令

指令意义

Op[31:26]

Op2 [25:20]

[19:15]

[14:10]

[9:5]

[4:0]

add

寄存器加法

000000

000001

00000

rd

r

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言高低位拷贝_C语言指针详解

1为什么使用指针 假如我们定义了 char a’A’ ,当需要使用 ‘A’ 时,除了直接调用变量 a ,还可以定义 char *p&a ,调用 a 的地址,即指向 a 的指针 p ,变量 a( char 类型)只占了一…

音乐计算机怎么用,如何利用电脑录制自己的歌曲(音乐)

一、 如何利用电脑录制自己的歌曲把自己在录音过程中的一些心得和体会告诉大家,希望大家能通过此贴,很快的掌握cooledit pro,并录出自己满意的歌曲。也许你看过之后,会觉得打造一个专业级的声音竟是如此的简单。首先,我…

MybatisPlus中@TableField注解的使用详解

MybatisPlus中TableField注解的使用详解 实现 官方文档说明: com.baomidou.mybatisplus.annotations.TableField TableField注解新增属性 update 预处理 set 字段自定义注入 (讲解:比如我们使用mybatisplus自带的insert()方法向数据库插入数据时&…

dataframe记录数_大数据系列之Spark SQL、DataFrame和RDD数据统计与可视化

Spark大数据分析中涉及到RDD、Data Frame和SparkSQL的操作,本文简要介绍三种方式在数据统计中的算子使用。1、在IPython Notebook运行Python Spark程序IPython Notebook具备交互式界面,可以在Web界面输入Python命令后立刻看到结果,还可将数据…

bug的生命周期、bug状态转换图

当我们发现一个bug的时候,应该怎么理清他们之间的关系呢?一个bug 从open到close的所有状态 都是我们测试人员需要注意的。 一、bug的状态 新建(New) 新发现的bug,未经评审决定是否指派给开发人员进行修改。 确认&…

青岛经济职业学校有计算机专业吗,青岛经济职业学校

原标题:青岛经济职业学校山东省青岛第二十中学(青岛经济职业学校)是青岛市教育局属公办中等职业学校、国家级重点职业学校、省规范化学校、省教学示范学校、省教学科研示范学校、省首批健康示范学校、市文明标兵单位、市首批办学模式改革示范学校、市首批文明校园。…

wps居中对齐不在中间_WPS文字快捷键总结(Windows版本)--值得收藏

WPS Office是一款国产的办公软件套装,有WPS文字、WPS表格和WPS演示三个板块,可以实现办公软件最常见的文字、表格、演示等多种功能,支持阅读和输出PDF文件,全面兼容Microsoft Office97-2010格式。想要熟练地使用WPS办公软件&#…

bugzilla使用规范分享

bugzilla使用规范分享 1.new/confirmed 测试人员将Bug提交给任务分发人员(研发模块负责人), 此时Bug状态为new/confirmed,开始Bug的生命周期,如果测试人员知道具体负责的研发人员,也可以直接指定&#x…

管理计算机(域)的内置账户名称,管理active directory中用户和计算机账户

匿名用户1级2013-05-29 回答Active Directory用户账户用于验证用户身份,指派用户的访问权限。用户必须使用用户账户登录到特定的计算机和域。登录到网络的每个用户应有自己的惟一账户和密码。用户账户也可用作某些应用程序的服务账户。在域控制器上建立的是域用户账…

编程语言_如何正确地学习编程语言

首先,当前学生和职场人学习编程已经成为了一个大的趋势,掌握编程语言不仅能够提升自身获取信息的能力,同时也能够拓展自身的能力边界,这一点在工业互联网时代会有更加明显的体现。编程语言本身并不难,但是要想形成自己…

MySQL——decimal类型长度

分为三种: float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)double:双精度实型,含字节数为8,64bit,数值范围-1.7E308~1.7E3…

测试游戏帧率电脑温度的软件,游戏中显示帧数和温度方法_游戏画面中实时显示FPS帧数温度技巧...

相信很多游戏玩家平时都是在用电脑玩游戏,而且大家也喜欢看一看自己在在游戏画面中实时的FPS帧数和温度信息。但是很网友对这个游戏画面中如何实时显示FPS帧数、频率、硬件温度不太清楚,下面智能手机网分享一下具体的操作方法,以便大家在玩游…

12面魔方公式图解法_一位建筑工程师:多年渴望就是学会魔方还原,只按这七步就可以!...

本人性别男,年龄47岁,一位建筑工程师,性格开朗,喜欢学习,2013年在网上搜索记忆关键词,从此开始了学习超级记忆和思维导图之路!也因此,接触了魔方!初学魔方,我…

计算机更新服务,使用 Microsoft Update 更新计算机

使用 Microsoft Update 更新计算机本文介绍可用于定期更新 Microsoft Office 2010 和其他 Microsoft 软件以及有助于增强计算机安全性的 Microsoft Update 选项。本文内容检查 Office 程序更新Microsoft Update 提供用于 Office 2010 和其他 Microsoft 程序的更新。注释如果您的…

navicat运行db文件_使用 YAML 文件配置 Jenkins 流水线

本文转载自:Jenkins 中文社区这也是一种自定义流水线 DSL 的方法几年前,我们的 CTO 写了一篇关于 使用 Jenkins 和 Docker 为 Ruby On Rails 应用提供持续集成服务 的文章。这些年,我们一直使用这个 CI 流水线解决方案,直到我们最…

Mybatis-Plus实现逻辑删除

数据库中的数据删除会分为两种:物理删除 和 逻辑删除 物理删除 物理删除就是我们删除数据库中的一条数据时,数据会真的被删除 逻辑删除 逻辑删除指的是我们删除一条数据时,数据不会在数据库中消息,逻辑删除是我们现在开发中经…

完美国际单机修改服务器端,完美国际改国内版单机一键服务端

最喜欢的一款网游,曾经出来的时候可以说是划时代的,3D游戏,空战,大地图无缝对接等。从比较早的113版本,经典的六职业136版本,到现在的155版本。都保存的有。玩官服就不说啦,从13年接触服务端到现…

HTTPClient和CloseableHttpClient

使用HttpClient发送请求的一般步骤 (1) 创建HttpClient对象。 (2)创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。 (3) 如果需要发送请求参数,可调用…

开发 数组里面的字典_Redis字典结构与rehash解读

关注公众号:后端技术漫谈,技术之路不迷路~字典是一种用于保存键值对的抽象数据结构,也被称为查找表、映射或关联表。在字典中,一个键(key)可以和一个值(value)进行关联,这些关联的键和值就称之为键值对。抽象数据结构&…