同济大学系统结构 实验一:MIPS指令系统和MIPS体系结构-3

简介: 同济大学系统结构 实验一:MIPS指令系统和MIPS体系结构-3

MIPSsim的窗口

在流水方式下,模拟器主界面中共有7个子窗口,它们是:代码窗口、寄存器窗口、流水线窗口、时钟周期图窗口、内存窗口、统计窗口和断点窗口。每一个窗口都可以被收起(变成小图标)、展开、拖动位置和放大/缩小。当要看窗口的全部内容时,可以将其放大到最大。

在非流水方式下,只有代码窗口、寄存器窗口、内存窗口和断点窗口。


1.代码窗口

代码窗口给出内存中代码的列表,每条指令占一行,按地址顺序排列。每行有5列(当全部显示时):地址、断点标记、指令的机器码、流水段标记和符号指令。如图1所示。

图1代码窗口

图中不同抹色的行代表相应的指令所处的执行段。黄色代表IF段,绿色代表ID段,红

色代表EX段,青色代表MEM段,棕色代表WB段。

该窗口中各列的含义如下:

地址:以16进制的形式给出。内存是按字节寻址的,每条指令占4个字节。当采用符号地址时,会在相应的位置给出汇编程序中出现的标号。

断点标记:如果在该指令处设有断点,则显示相应的标记。断点标记的形式为B.X(X为段名),表示该断点是设置在该指令的“X”段。例如,若某行的断点标记为“B.EX”,则表示在该指令的EX段设置了断点。当模拟器工作在非流水方式下时,断点的标记为B。

机器码:该行所对应的指令的十六进制机器码。若该行无指令,则仅仅显示4字节数据;

流水段标记:表示当该指令正在执行时,它在当前周期该指令所处的流水段。当模拟器工作在非流水方式下时,它没有意义。

符号指令:机器代码所对应的符号指令。

在该窗口中选中某行(用鼠标左键单击),然后再点击鼠标右键,就会弹出菜单:设置断点,清除断点,它们分别用于在所选指令处设置断点和清除断点。

设置断点

选择(点击)要设断点的指令点击右键“设置断点”,弹出“设置断点”小对话框,在“段”的下拉框中选择断点所在的流水段(在非流水方式下,不存在该下拉框),单击“确定”即可。

清除断点

选择(点击)指令点击右键“清除断点”,则设置在该指令处的断点被删除。

2.寄存器窗口

寄存器窗口显示MIPSsim模拟器中的寄存器的内容。共有4组寄存器:通用寄存器、浮点寄存器、特殊寄存器和流水寄存器,分为4栏来显示。每一栏下分别有各自的数据格式选项,如图2所示。

图2寄存器窗口

(1)通用寄存器

MIPS64有32个64位通用寄存器:R0,R1,…,R31。它们被简称为GPRs(General-PurposeRegisters),有时也被称为整数寄存器。R0的值永远是0。

通过数据格式选项,可以选择显示的格式是十进制还是十六进制。

(2)浮点寄存器

共有32个64位浮点数寄存器:F0,F1,…,F31。它们被简称为FPRs(Floating-PointRegisters)。它们既可以用来存放32个单精度浮点数(32位),也可以用来存放32个双精度浮点数(64位)。

存储单精度浮点数(32位)时,只用到FPR的一半,其另一半没用。

(3)特殊寄存器

特殊寄存器有4个:

PC:程序计数器(32位);

LO:乘法寄存器的低位;

HI:乘法寄存器的高位;

FCSR:浮点状态寄存器。

(4)流水寄存器

IF/ID.IR:流水段IF与ID之间的指令寄存器;

IF/ID.NPC:流水段IF与ID之间的下一指令程序计数器;

ID/EX.A:流水段ID与EX之间的第一操作数寄存器;

ID/EX.B:流水段ID与EX之间的第二操作数寄存器;

ID/EX.Imm:流水段ID与EX之间的立即数寄存器;

ID/EX.IR:存放从IF/ID.IR传过来的指令;

EX/MEM.ALUo:流水段EX与MEM之间的ALU计算结果寄存器;

EX/MEM.IR:存放从ID/EX.IR传过来的指令;

MEM/WB.LMD:流水段MEM与WB之间的数据寄存器,用于存放从存储器

读出的数据;

MEM/WB.ALUo:存放从EX/MEM.ALUo传过来的计算结果;

MEM/WB.IR:存放从EX/MEM.IR传过来的指令。

除了流水寄存器外,其他寄存器都可以修改。只要双击某寄存器所在的行,系统就会弹出一个小对话框。该对话框显示了该寄存器原来的值。在新值框中填入新的值,然后点击“保存”,系统就会将新值写入该寄存器。

3.流水线窗口

流水线窗口显示流水线在当前配置下的组成以及该流水线的各段在当前周期正在处理的指令。如图3所示。

非流水方式下,没有该窗口。

图3流水线窗口

   在该窗口中,每一个矩形方块代表一个流水段,它们用不同的颜色填充。在该窗口的左侧是IF到WB段,其右边为浮点部件。浮点部件分有浮点加法部件(fadd)、浮点乘法部件fmul)和浮点除法部件(fdiv)三种。在菜单“配置”“常规配置”中修改浮点部件个数,可看到该窗口中对应类型的浮点部件个数会发生相应的变化。

   在运行过程中,各段的矩形方块中会显示该段正在处理的指令及其地址(16进制)。当双击某矩形方块时,会弹出窗口显示该段出口处的流水寄存器的内容(16进制)。

4.时钟周期图窗口

该窗口用于显示程序执行的时间关系,画出各条指令执行时所用的时钟周期。非流水方式下,没有该窗口。

以窗口左上为原点,横轴正方向指向右方,表示模拟器先后经过的各个周期(列),纵轴正方向指向下方,表示模拟器中先后执行的各条指令(行)。如图4所示。

图4时钟周期图窗口

   横坐标有相对周期计数和绝对周期计数两种不同的表示形式。在默认的绝对周期计数下,按0、1、2、… 依次递增的顺序计数。而在相对周期计数下,当前周期记为第0个周期,而其余周期(在左边)则按其相对于当前周期的位置,分别记为-1,-2,-3,…等。

在由指令轴和周期轴组成的二维空间下,坐标(n, i)对应的矩形区域表示指令i在第n+1周期时所经过的流水段(假设采用绝对周期计数)。

双击某行时,会弹出一个小窗口,显示该指令在各流水段所进行的处理。

该窗口中还显示定向的情况。这是用箭头来表示的。若在第m周期和第m+1周期间产生从指令i1到指令i2的定向,则在坐标(m, i1)和

(m+1, i2)表示的矩形区域之间会有一个箭头。

5. 内存窗口

   该窗口显示模拟器内存中的内容,左侧一栏为十六进制地址,右侧为数据,如图5所示。可以直接通过双击来修改其内容。这时会弹出一个“内存修改”对话框,如图6所示。对话框的上部区域为数据类型与格式选择区,通过勾选其中的一项,就可以指定所采用的数据类型与格式。

图6 “内存修改”对话框

   在该“内存修改”对话框中,地址框最开始显示的是被双击的单元的地址,用户可以直接修改该地址。在新值框中输入新值,然后点击按钮“修改”,模拟器就会把新值写入内存中相应的单元。新值的格式必须与所选的数据类型和格式一致。

    “前地址”与“后地址”按钮分别将当前地址减少和增加一个数据长度(字节数),并显示当前地址所指定单元的内容。“前地址”和“后地址”用于连续修改一片的内存数据。“显示”按钮用于显示当前地址所指单元的内容。在修改地址后,点击该按钮就可以显示内存单元的内容。

6. 统计窗口

该窗口显示模拟器统计的各项数据。如下所示。

(非流水方式下,没有该窗口)

 

 汇总:

   执行周期总数:0

   ID段执行了0条指令

 

 硬件配置:

   内存容量:4096 B

   加法器个数:1                执行时间(周期数):6

   乘法器个数:1                执行时间(周期数)7        

   除法器个数:1                执行时间(周期数)10                

   定向机制:不采用

 

 停顿(周期数):

   RAW停顿:0          占周期总数的百分比:0%

   其中:

     load停顿:0                占所有RAW停顿的百分比:0%

     分支/跳转停顿:0               占所有RAW停顿的百分比:0%

     浮点停顿:0                占所有RAW停顿的百分比:0%

   WAW停顿:0         占周期总数的百分比:0%

   结构停顿:0            占周期总数的百分比:0%

   控制停顿:0            占周期总数的百分比:0%

   自陷停顿:0            占周期总数的百分比:0%

   停顿周期总数:0   占周期总数的百分比:0%

 

 分支指令:

   指令条数:0            占指令总数的百分比:0%

   其中:

     分支成功:0                占分支指令数的百分比:0%

     分支失败:0                占分支指令数的百分比:0%

 

 load/store指令:

   指令条数:0            占指令总数的百分比:0%

   其中:

     load:0        占load/store指令数的百分比:0%

     store:0                占load/store指令数的百分比:0%

 

 浮点指令:

   指令条数:0            占指令总数的百分比:0%

其中:

     加法:0                占浮点指令数的百分比:0%

     乘法:0                占浮点指令数的百分比:0%

     除法:0                占浮点指令数的百分比:0%

 

 自陷指令:

   指令条数:0            占指令总数的百分比:0%

7. 断点窗口

断点一般是指指定的一条指令,当程序执行到该指令时,会中断执行,暂停在该指令上。在本模拟器中,断点可以设定在某条指令的某一个流水段上(如果是在流水方式下)。当该指令执行到相应的流水段时,会中断执行。

断点窗口列出当前已经设置的所有断点,每行一个。每行由3部分构成:地址(16进制),流水段名称,符号指令。如图7所示。(在非流水方式下,“段”没有意义)

图7 断点窗口

该窗口上方有四个按钮:添加、删除、全部删除、修改。

添加

单击“添加”,会弹出小对话框“设置断点”,在“地址”框中输入断点的十六进制地址,在“段”的下拉框中选择在哪个流水段中断(非流水方式下,不需要该操作,下同),单击“确定”即可。

删除

选中某个断点(单击断点列表中相应的一项),单击“删除”,则该断点被清除。

全部删除

单击“全部删除”,所有断点都将被清除。

修改

选中某个断点,单击“修改”,会弹出小对话框“设置断点”,在“地址”框中输入断点的地址,在“段”的下拉框中选择在哪个流水段中断,单击“确定”即可将原断点修改为新设断点。

目录
相关文章
|
存储 算法 NoSQL
TinyKv介绍
TinyKv介绍
852 1
|
API 数据库 开发者
Python微服务框架:Flask与FastAPI的融合创新
在当今高度互联的世界中,构建可扩展、灵活和高效的微服务架构变得至关重要。Python作为一种广泛应用于Web开发的编程语言,其微服务框架Flask和FastAPI的概念与实践日益受到关注。本文将介绍这两个框架的核心概念,并探讨它们在实际应用中的强大功能和优势。
|
7月前
|
机器学习/深度学习 编解码 自然语言处理
腾讯混元 HunyuanVideo 1.5 开源!
腾讯混元团队开源HunyuanVideo 1.5,一款8.3B参数的轻量级视频生成模型,基于DiT架构,支持文生视频、图生视频,可在14G显存设备运行,生成5-10秒高清视频,具备强指令响应、流畅动作与电影级画质。
1730 10
腾讯混元 HunyuanVideo 1.5 开源!
|
存储 人工智能 数据可视化
高效率,低成本!且看阿里云AI大模型如何帮助企业提升客服质量和销售转化率
在数字化时代,企业面临海量客户对话数据处理的挑战。阿里云推出的“AI大模型助力客户对话分析”解决方案,通过先进的AI技术和智能化分析,帮助企业精准识别客户意图、发现服务质量问题,并生成详尽的分析报告和可视化数据。该方案采用按需付费模式,有效降低企业运营成本,提升客服质量和销售转化率。
高效率,低成本!且看阿里云AI大模型如何帮助企业提升客服质量和销售转化率
|
人工智能 关系型数据库 BI
算术逻辑单元ALU
算术逻辑单元ALU
3967 0
|
存储 缓存 NoSQL
缓存中的共享和私有缓存
【6月更文挑战第7天】本文介绍了缓存数据库的分类和作用,主要分为私有缓存和共享缓存。 不应将缓存视为关键数据的唯一来源,重要更新应同步至持久性存储。
747 3
缓存中的共享和私有缓存
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习中的梯度消失与梯度爆炸问题解析
【8月更文挑战第31天】深度学习模型在训练过程中常常遇到梯度消失和梯度爆炸的问题,这两个问题严重影响了模型的收敛速度和性能。本文将深入探讨这两个问题的原因、影响及解决策略,并通过代码示例具体展示如何在实践中应用这些策略。
1179 1
|
机器学习/深度学习 搜索推荐 算法
智能推荐系统:个性化体验的背后
【7月更文第18天】在互联网的汪洋大海中,智能推荐系统就像一位贴心的向导,总能在浩瀚的信息中找到你最感兴趣的那一部分。它在电商平台上让你轻松发现心仪商品,在视频平台上为你连播下一集你欲罢不能的剧集。这背后的秘密,就是那些神奇的智能推荐算法。今天,咱们就来扒一扒电商、视频平台中的智能推荐系统,看看它是如何为你我打造出个性化的数字体验的。
901 0
|
前端开发 rax Shell
Shellcode Injection(√)
Shellcode Injection(√)