찾다
데이터 베이스MySQL 튜토리얼自己动手写CPU之第九阶段(2)加载存储指令说明2(lwl、lwr

将陆续上传新书《 自己动手写CPU 》,今天是第38篇,我尽量每周四篇,但是最近已经很久没有实现这个目标了,一直都有事,不好意思哈。 开展晒书评送书活动,在 亚马逊 、京东、当当三大图书网站上,发表《 自己动手写CPU 》书评的前十名读者,均可获赠《步步

将陆续上传新书《自己动手写CPU》,今天是第38篇,我尽量每周四篇,但是最近已经很久没有实现这个目标了,一直都有事,不好意思哈。

开展晒书评送书活动,在亚马逊、京东、当当三大图书网站上,发表《自己动手写CPU》书评的前十名读者,均可获赠《步步惊芯——软核处理器内部设计分析》一书,大家踊跃参与吧!活动时间:2014-9-11至2014-10-20


今天继续对MIPS32中加载存储指令进行说明(主要是lwl、lwr),上次已经介绍一些其他的加载存储指令,大家可以回顾。


9.1.4 加载指令lwllwr说明

      加载指令lwllwr的格式如图9-6所示。

自己动手写CPU之第九阶段(2)加载存储指令说明2(lwl、lwr
  •  当指令中的指令码为6'b100010时,是lwl指令,非对齐加载指令,向左加载

      指令用法为:lwl rt, offset(base)

      指令作用为:从内存中指定的加载地址处,加载一个字的最高有效部分。lwl指令对加载地址没有要求,从而允许地址非对齐加载,这是与前面介绍的lhlhulw指令的不同之处。在大端模式、小端模式下,lwl指令的效果不同,因为OpenMIPS是大端模式,所以此处只介绍在大端模式下lwl指令的效果。假设计算出来的加载地址是loadaddrloadaddr的最低两位的值为n,将loadaddr最低两位设为0后的值称为loadaddr_align,如下。

加载地址loadaddr = signed_extended(offset) + GPR[base]

n = loadaddr[1:0]

loadaddr_align = loadaddr – n

      例如:假设计算出来的加载地址是5lwl指令要从地址5加载数据,那么loadaddr就等于5n等于1loadaddr_align等于4

      lwl指令的作用是从地址为loadaddr_align处加载一个字,也就是4个字节,然后将这个字的最低4-n个字节保存到地址为rt的通用寄存器的高位,并且保持低位不变。

      继续上例,此时loadaddr_align4,所以从地址4处加载一个字,对应的是地址为4567的字节,因为n等于1,所以将加载到的字的最低3个字节保存到地址rt的通用寄存器的高3个字节。如图9-7所示。一个更加通用的描述如图9-8所示。

自己动手写CPU之第九阶段(2)加载存储指令说明2(lwl、lwr
  •  当指令中的指令码为6'b100110时,是lwr指令,非对齐加载指令,向右加载

      指令用法为:lwr rt, offset(base)

      指令作用为:从内存中指定的加载地址处,加载一个字的最低有效部分。还是假设计算出来的加载地址是loadaddrloadaddr的最低两位的值为n,将loadaddr最低两位设为0后的值称为loadaddr_align,如下。

加载地址loadaddr = signed_extended(offset) + GPR[base]

n = loadaddr[1:0]

loadaddr_align = loadaddr – n

      例如:假设计算出来的加载地址是9lwr指令要从地址9加载数据,那么loadaddr就等于9n等于1loadaddr_align等于8

      lwr指令的作用是从地址为loadaddr_align处加载一个字,也就是4个字节,然后将这个字的最高n+1个字节保存到地址为rt的通用寄存器的低位,并且保持高位不变。

      继续上例,此时loadaddr_align8,所以从地址8处加载一个字,对应的是地址为891011的字节,因为n等于1,所以将加载到的字的最高2个字节保存到地址rt的通用寄存器的低2个字节。如图9-9所示。一个更加通用的描述如图9-10所示。

自己动手写CPU之第九阶段(2)加载存储指令说明2(lwl、lwr

      lwllwr指令配合可以实现从一个非对齐地址加载一个字,而且只需要使用2条指令,提高了效率。例如:使用一般指令从地址7处加载一个字,那么可以使用以下代码实现,共5条指令。

lw  $1, 4($0)          # 取得地址0x4处的字,保存在$1中
lw  $2, 8($0)          # 取得地址0x8处的字,保存在$2中
sll $1, $1, 24         # $1左移24位
slr $2, $2, 8          # $2右移8位
or  $1, $1, $2         # $1与$2进行逻辑“或”运算,得到最终结果

      而有了lwllwr指令后,只需要2条指令即可。如下,图9-11是对这个过程的描述。

lwl $1, 7($0)
lwr $1,10($0)
自己动手写CPU之第九阶段(2)加载存储指令说明2(lwl、lwr


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
核心数和线程数是什么意思核心数和线程数是什么意思Sep 01, 2022 pm 04:52 PM

核心数指的是CPU内核数量,表示一个CPU由多少个核心组成;cpu核心是CPU的重要组成部件,在内核频率、缓存大小等条件相同的情况下,CPU核心数量越多,CPU的整体性能越强。线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。CPU之所以要增加线程数,是源于多任务处理的需要;线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。

多核和单核的区别是什么多核和单核的区别是什么Aug 02, 2022 pm 02:04 PM

区别:1、单核就是CPU集成了一个运算核心,多核就是CPU集成了两个或多个运算核心;2、单核能同时运行的线程数较多核更少,不利于同时运行多个程序,而多核有利于同时运行多个程序;3、单核的执行速度较多核更慢,容易造成卡顿;4、多核的多任务处理效率比单核高;5、多核的性能比单核高,散热量、耗电量也比单核大;6、单核多用于部分要求轻薄、待机时间长、而对性能要求不高的笔记本电脑上。

12核16线程是什么意思12核16线程是什么意思Aug 24, 2022 am 11:45 AM

12核16线程指的是CPU中有12个内核,CPU的线程是16个,最多可以模拟16个核心;CPU的核心是运算器和控制器,多核可以增强并行处理能力,线程是进程中某个单一顺序的控制流,在单个程序中同时运行多个线程完成不同的工作,称为多线程。

cpu温度高是什么原因引起的cpu温度高是什么原因引起的Nov 28, 2022 am 10:25 AM

cpu温度高的原因:1、散热不良;2、机器内灰尘过多也会引起死机故障;3、内存条故障;4、CPU超频;5、 硬盘故障;6、软硬件不兼容;7、驱动程序安装有误;8、应用软件的缺陷;9、病毒感染;10、启动的程序太多;11、用非法格式或参数非法打开或释放有关程序;12、误删除了系统文件;13、CMOS设置不当。

cpu能直接存取内存储器上的数据吗cpu能直接存取内存储器上的数据吗Nov 25, 2022 pm 02:02 PM

能直接存取。内存储器又称内存,是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行。内存的作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算;当运算完成后,CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。

cpu温度过高会导致什么情况cpu温度过高会导致什么情况Feb 01, 2023 am 10:53 AM

cpu温度过高导致的影响:1、CPU有自我保护功能,CPU过高会自动开启保护系统,降低电脑运行速率,系统越来越慢,直至死机,反复重启;2、长时间高温(长时间85度以上),CPU的自我保护功能可能失效,会烧坏CPU;3、自动关机,且关机之后,温度未降低之前无法开机。

手机的cpu和gpu是什么意思手机的cpu和gpu是什么意思Nov 16, 2022 pm 02:13 PM

手机CPU指的是手机处理器,它是整台手机的控制中枢系统,也是逻辑部分的控制中心;手机CPU通过运行存储器内的软件及调用存储器内的数据库,达到控制目的。手机CPU指的是手机的图形处理器,是显示卡的大脑,它决定了该显卡的档次和大部分性能,在手机主板上,GPU芯片一般都是紧挨着CPU芯片的。

cpu接口类型有几种cpu接口类型有几种Feb 01, 2023 am 10:43 AM

有14种:Socket 478、Socket 775、Socket 754、Socket 939、Socket 940、Socket 603、Socket 604、Socket A、Socket B、Socket 423、Socket 370、SLOT 1、SLOT 2、SLOT A。其中Socket 478是早期Pentium 4系列处理器所采用的接口类型,针脚数为478针。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전