第九章 加载存储指令的实现

您所在的位置:网站首页 工厂里lbu缩写是什么意思 第九章 加载存储指令的实现

第九章 加载存储指令的实现

2024-06-02 09:15| 来源: 网络整理| 查看: 265

本章将实现MIPS32指令集架构中定义的加载存储指令,分两步:首先实现除ll、sc指令外的一般加载存储指令,其次实现比较特殊的加载存储指令ll、sc。 9.1 加载存储指令说明 MIPS指令集架构中定义的加载存储指令共有14条,如下:

在这里插入图片描述

9.1.1 加载指令lb,lbu,lh,lhu,lw说明

加载指令lb,lbu,lh,lhu,lw说明 在这里插入图片描述 从图中可知,这5条加载指令可以根据指令中26-31bit的指令码加以区分,另外,加载指令的第0-15bit是offset,第21-15bit是base,加载地址的计算方法如下,先将16位的offset符号扩展为32位,然后与地址为base的通用寄存器的值相加,即可得到加载地址。

在这里插入图片描述在这里插入图片描述

9.1.2 存储指令sb,sh,sw说明

存储指令sb,sh,sw事物格式如图所示 在这里插入图片描述 从图中可知,这3条存储指令可以依据指令中26-31bit的指令码加以区分,另外,存储指令的第0-15bit是offset,第21-15bit是base,存储地址的计算方法如下,先将16位的offset符号扩展至32位,然后与地址为base的通用寄存器的值相加,即可得到存储地址。 在这里插入图片描述

9.1.3 加载存储指令用法示例

OpenMIPS处理器是按照字节寻址,并且是大端模式,在这种模式下,数据的高位保存在存储器的低地址中,而数据的低位保存在存储器的高地址中。比如:使用指令sb在ox50处存储0x81,存储器中实际存储效果如图9-3所示。 使用指令sh在0x54处存储0x8281,存储器中实际存储效果如图9-4所示:

在这里插入图片描述使用指令sw在0x58处存储0x84838281,存储器中实际存储效果如图9-5所示 在这里插入图片描述在这里插入图片描述

9.1.4 加载指令lwl、lwr说明

在这里插入图片描述 在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

9.1.5 存储指令swl,swr说明

存储指令swl,swr的格式如图所示 在这里插入图片描述在这里插入图片描述 在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

9.2 加载存储指令实现思路 加载指令实现思路 加载指令在译码阶段进行译码,得到运算类型alusel_o、aluop_o,以及要写入的目的寄存器信息。这些信息传递到执行阶段,然后又传递到访存阶段,访存阶段依据这些信息,设置对数据存储器RAM的访问信号,从RAM读取回来的数据需要按照加载指令的类型,加载地址进行对齐跳调整,调整后的结果作为最终要写入目的寄存器的数据。存储指令实现思路 存储指令在译码阶段进行译码,得到运算类型alusel_o,sluop_o以及要存储的数据,这些信息传递到执行阶段,然后又传递到访存阶段,访存阶段依据这些信息,设置对数据存储器RAM的访问信号,将数据写入RAM。 需要特别注意的是:本章假设可以在一个时钟周期内完成对外部数据存储器RAM的读、写操作,在后续章节实现实践版OpenMIPS处理器的时候会考虑复杂情况 9.2.1 数据流图的修改

在这里插入图片描述

在这里插入图片描述

9.2.2 系统结构的修改

为了实现除ll,sc之外的加载存储指令,需要对系统结构进行修改,增加部分模块的接口,修改后系统结构如图所示 在这里插入图片描述在这里插入图片描述

PS:由于后面我也是刚刚学习,再加上寒假变懒了,有点偷懒,后续可能精修文章


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3