CN101216755A - Risc处理器及其浮点寄存器的非对齐访存方法 - Google Patents

Risc处理器及其浮点寄存器的非对齐访存方法 Download PDF

Info

Publication number
CN101216755A
CN101216755A CNA2008100559284A CN200810055928A CN101216755A CN 101216755 A CN101216755 A CN 101216755A CN A2008100559284 A CNA2008100559284 A CN A2008100559284A CN 200810055928 A CN200810055928 A CN 200810055928A CN 101216755 A CN101216755 A CN 101216755A
Authority
CN
China
Prior art keywords
word
instruction
point register
flating point
live part
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2008100559284A
Other languages
English (en)
Other versions
CN101216755B (zh
Inventor
蔡嵩松
苏孟豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2008100559284A priority Critical patent/CN101216755B/zh
Publication of CN101216755A publication Critical patent/CN101216755A/zh
Application granted granted Critical
Publication of CN101216755B publication Critical patent/CN101216755B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种RISC处理器及其浮点寄存器的非对齐访存方法。该处理器包括指令译码部件和执行单元,还包括扩展指令模块;所述扩展指令模块包括多个扩展指令,用于实现对浮点寄存器的非对齐访存操作;所述指令译码部件,包括扩展指令译码模块,用于识别扩展指令模块的扩展指令,并进行译码,译码后输出到执行单元执行。其提高了处理器的性能。

Description

RISC处理器及其浮点寄存器的非对齐访存方法
技术领域
本发明涉及计算机处理器技术领域,特别是涉及一种精简指令集计算机(RISC)处理器,以及其浮点寄存器的非对齐访存方法。
背景技术
复杂指令集计算机(Complex Instruction Set Computing,CISC)和精简指令计算机(Reduced Instruction Set Computing,RISC)是当前CPU的两种架构。不同架构的处理器只能执行自己的指令集,如Intel的机器只能执行80X86的指令集(一种CISC指令集),不能执行RISC的指令集;而RISC处理器的计算不能执行80X86的指令集。而由于这种硬件体系结构的不同,操作系统和各种应用软件通常只能在特定架构的计算机上执行,如RISC处理器不能充分利用X86系列机器已有的广泛的应用软件。
在RISC处理器,如MIPS指令集的RISC处理器中使用访存指令存储和读取数据单元时,目标地址必须是所访问的数据单元字节数的整数倍,称之为地址对齐。例如在MIPS指令集的RISC处理器上,读取一半字时,访存地址必须是2个字节的整数倍;读取一个字时,访存指令中地址必须是4个字节的整数倍;写入一个双字时,访存地址必须是8个字节的整数倍。
如果在进行内存访问的时候,目标地址没有对齐,则会引起异常。
而CISC处理器,如Intel 80X86处理器是可以处理这种访存地址非对齐的读取和写入的。
因此,当移植CISC处理器处理的软件到RISC处理器处理,或者移植CISC处理器处理的软件到RISC处理器支持CISC虚拟机,如X86虚拟机时,会碰到兼容性处理问题。
现有技术中,可以用生成一个例外处理器程序来模拟期望的读写操作的方式来处理,并且对上层处理隐藏这种特性。但是,除非非对齐的访存很少,否则这种处理方法对计算机性能将是非常严重的打击。
MIPS指令集的RISC处理器对非对齐访存的解决方法是,提供特殊的访存地址非对齐的访存指令,其中,MIPS指令集中与地址非对齐访存有关的指令包括对32位数据的操作和对64位数据的操作,就读取32位数据来说,其提供两条指令来实现,这两条指令被称为“从左读取字”指令和“从右读取字”指令:lwl,lwr,swl,swr,ldl,ldr,sdl,sdr。
但是,MIPS指令集中只包括了到通用寄存器的非对齐读写,而对浮点寄存器并没有支持,如果需要读取到浮点寄存器中使用,则要读取到通用定点寄存器中,然后再从通用定点寄存器中拷贝过来。这样,处理器的性能有很大的下降。
发明内容
本发明的目的在于提供一种精简指令集计算机(RISC)处理器,以及其浮点寄存器的非对齐访存方法。其提高了处理器的性能。
为实现本发明目的而提供的一种RISC处理器,包括指令译码部件和执行单元,还包括扩展指令模块;
所述扩展指令模块包括多个扩展指令,用于实现对浮点寄存器的非对齐访存操作;
所述指令译码部件,包括扩展指令译码模块,用于识别扩展指令模块的扩展指令,并进行译码,译码后输出到执行单元执行。
所述扩展指令译码模块,包括识别子模块,用于在读取指令后,识别出对浮点寄存器的非对齐访存扩展指令。
所述扩展指令包括对32位单精度浮点寄存器的操作指令和/或对64位双精度浮点寄存器的操作指令。
所述扩展指令包括从左读取字扩展指令;从右读取字扩展指令;从左读取双字扩展指令;从右读取双字扩展指令;从左写入字扩展指令;从右写入字扩展指令;从左写入双字扩展指令;从右写入双字扩展指令。
所述执行单元,包括从左读取字模块;从右读取字模块,从左读取双字模块,从右读取双字模块,从左写入字模块,从右写入字模块,从左写入双字模块,从右写入双字模块,其中:
所述从左读取字模块,用于根据指令译码部件译码得到的有效地址,从相应的内存中取出包含4个连续字节的一个字中的一有效部分,将所述有效部分存放到浮点寄存器字的左边部分,所述浮点寄存器中字的右边则维持不变;
所述从右读取字模块,用于根据指令译码部件译码得到的有效地址,从相应的内存中取出包含4个连续字节的一个字中的一有效部分,将所述有效部分存放到浮点寄存器字的右边部分,所述浮点寄存器中字的左边部分则维持不变;
所述从左读取双字模块,用于根据指令译码部件译码得到的有效地址,从相应的内存中取出包含8个连续字节的一个双字中的一有效部分,并将所述有效部分存放到浮点寄存器双字的左边部分,浮点寄存器中双字的右边部分则维持不变;
所述从右读取双字模块,用于根据指令译码部件译码得到的有效地址,从相应的内存中取出包含8个连续字节的一个双字中的一有效部分,并将所述有效部分存放到浮点寄存器双字的右边部分,浮点寄存器中双字的左边部分则维持不变;
所述从左写入字模块,用于根据指令译码部件译码得到的有效地址,查找到包含4个连续字节的一个字中的一有效部分,并将浮点寄存器的左边部分存放到内存中所述字的相应字节;
所述从右写入字模块,用于根据指令译码部件译码得到的有效地址,查找到包含4个连续字节的一个字中的一有效部分,并将浮点寄存器的右边部分存放到内存中所述字的相应字节;
所述从左写入双字模块,用于根据指令译码部件译码得到的有效地址,查找到包含8个连续字节的一个双字中的一有效部分,并将浮点寄存器的左边部分存放到内存中所述双字的相应字节;
所述从右写入双字模块,用于根据指令译码部件译码得到的有效地址,查找到包含8个连续字节的一个双字中的一有效部分,并将浮点寄存器的右边部分被存放到内存中所述双字的相应字节。
所述扩展指令的编码格式是利用MIPS指令集中LWC2和SWC2空槽的值实现的。
为实现本发明目的还提供一种RISC处理器的浮点寄存器的非对齐访存方法,包括下列步骤:
步骤A,从处理器中读取指令,识别出对浮点寄存器的非对齐访存扩展指令;
步骤B,对浮点寄存器的非对齐访存扩展指令进行译码,然后送入到执行单元,执行对浮点寄存器的非对齐访存操作。
所述步骤A包括下列步骤:
步骤A1,从处理器中读取指令到指令译码部件后,首先根据指令中的func域的值,判断该指令是现有的MIPS指令集指令,还是对浮点寄存器的非对齐访存扩展指令;
步骤A2,如果是现有的MIPS指令集指令,则按照现有技术的指令操作后结束;
步骤A3,如果是对浮点寄存器的非对齐访存扩展指令,则转入步骤B。
所述扩展指令包括从左读取字扩展指令;从右读取字扩展指令;从左读取双字扩展指令;从右读取双字扩展指令;从左写入字扩展指令;从右写入字扩展指令;从左写入双字扩展指令;从右写入双字扩展指令。
所述步骤B包括下列步骤:
步骤B1,如果是从左读取字指令,则译码后得到有效地址,根据所述有效地址,从相应的内存中取出包含有4个连续字节的一个字中的一有效部分,将所述有效部分存放到浮点寄存器字的左边部分,所述浮点寄存器中字的右边则维持不变;
步骤B2,如果是从右读取字指令,则译码后得到有效地址,根据所述有效地址,从相应的内存中取出包含有4个连续字节的一个字中的一有效部分,将所述有效部分存放到浮点寄存器字的右边部分,浮点寄存器中字的左边部分则维持不变;
步骤B3,如果是从左读取双字指令,则译码后得到有效地址,根据所述有效地址,从相应的内存中取出包含有8个连续字节的一个双字中的一有效部分,并将所述有效部分存放到浮点寄存器双字的左边部分,浮点寄存器中双字的右边部分则维持不变;
步骤B4,如果是从右读取双字指令,则译码后得到有效地址,根据所述有效地址,从相应的内存中取出包含有8个连续字节的一个双字中的一有效部分,并将所述有效部分存放到浮点寄存器双字的右边部分,浮点寄存器中双字的左边部分则维持不变;
步骤B5,如果是从左写入字指令,则译码后得到有效地址,根据所述有效地址,查找到包含4个连续字节的一个字中的一有效部分,并将浮点寄存器的左边部分存放到内存中所述字的相应字节;
步骤B6,如果是从右写入字指令,则译码后得到有效地址,根据所述有效地址,查找到包含4个连续字节的一个字中的一有效部分,并将浮点寄存器的右边部分存放到内存中所述字的相应字节;
步骤B7,如果是从左写入双字指令,则译码后得到有效地址,根据所述有效地址,查找到包含8个连续字节的一个双字中的一有效部分,并将浮点寄存器的左边部分存放到内存中所述双字的相应字节;
步骤B8,如果是从右写入双字指令,则译码后得到有效地址,根据所述有效地址,查找到包含8个连续字节的一个双字中的一有效部分,并将浮点寄存器的右边部分存放到内存中所述双字的相应字节。
本发明的有益效果是:本发明的RISC处理器及其浮点寄存器的非对齐访存方法,其在基本不改变原有的处理器架构的情况下,在RISC处理器中实现对其浮点寄存器的非对齐访存,改动小,提高处理器的性能。
附图说明
图1为本发明精简指令集计算机(RISC)处理器结构示意图;
图2为本发明实施例精简指令集计算机(RISC)扩展指令格式示意图;
图3为本发明精简指令集计算机(RISC)处理器非对齐访存方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种RISC处理器及其浮点寄存器的非对齐访存方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,以MIPS指令集,该处理器的数据在内存中使用小尾端表示为例,而对本发明的RISC处理器及其浮点寄存器的非对齐访存方法进行说明,但是,应当说明的是,本发明同样适用于其他指令集和数据表示(如大尾端表示)的RISC处理器。
为实现本发明目的,提供了一种RISC处理器,包括指令译码部件2和执行单元3。
所述RISC处理器还包括扩展指令模块1,该模块包括多个扩展指令,用于实现对浮点寄存器的非对齐访存操作。
所述扩展指令包括了对32位单精度浮点寄存器的操作指令和对64位双精度浮点寄存器的操作指令。
所述扩展指令,包括从左读取字扩展指令;从右读取字扩展指令;从左读取双字扩展指令;从右读取双字扩展指令;从左写入字扩展指令;从右写入字扩展指令;从左写入双字扩展指令;从右写入双字扩展指令。
所述指令译码部件2,包括扩展指令译码模块,用于识别扩展指令模块1的扩展指令,并进行译码,译码后输出到执行单元3执行。
所述扩展指令译码模块,包括识别子模块21,用于在处理器的指令译码部件2读取指令后,识别出对浮点寄存器的非对齐访存扩展指令;
所述执行单元3,包括从左读取字模块31,从右读取字模块32,从左读取双字模块33,从右读取双字模块34,从左写入字模块35,从右写入字模块36,从左写入双字模块37,从右写入双字模块38。
所述从左读取字模块31,用于根据指令译码部件2译码得到的有效地址,从相应的内存中取出包含4个连续字节的一个字W中的一高有效部分,将所述高有效部分,即与有效地址所指向的字节处于同一个对齐字的字节存放到浮点寄存器中字的左边部分(最高有效部分),浮点寄存器中字的右边部分(最低有效部分)则维持不变;
所述从右读取字模块32,用于根据指令译码部件2译码得到的有效地址,从相应的内存中取出包含4个连续字节的一个字W中的一低有效部分,将所述低有效部分,即与有效地址所指向的字节处于同一个对齐字的字节存放到浮点寄存器中字的右边部分(最低有效部分),浮点寄存器中字的左边部分(最高有效部分)则维持不变;
所述从左读取双字模块33,用于根据指令译码部件2译码得到的有效地址,从相应的内存中取出包含8个连续字节的一个双字DW中的一高有效部分,将所述高有效部分,即与有效地址所指向的字节处于同一个对齐双字的字节存放到浮点寄存器中双字的左边部分(最高有效部分),浮点寄存器中双字的右边部分(最低有效部分)则维持不变;
所述从右读取双字模块34,用于根据指令译码部件2译码得到的有效地址,从相应的内存中取出包含8个连续字节的一个双字DW中的一低有效部分,将所述低有效部分,即与有效地址所指向的字节处于同一个对齐双字的字节存放到浮点寄存器中双字的右边部分(最低有效部分),浮点寄存器中双字的左边部分(最高有效部分)则维持不变;
所述从左写入字模块35,用于根据指令译码部件2译码得到的有效地址,查找到包含4个连续字节的一个字中的一高有效部分,并将浮点寄存器中字的左边部分(最高有效部分)存放到该高有效部分,即与有效地址所指向的字节处于同一个对齐字的字节;
所述从右写入字模块36,用于根据指令译码部件2译码得到的有效地址,查找到包含4个连续字节的一个字中的一低有效部分,并将浮点寄存器中字的右边部分(最低有效部分)存放到该低有效部分,即与有效地址所指向的字节处于同一个对齐字的字节;
所述从左写入双字模块37,用于根据指令译码部件2译码得到的有效地址,查找到包含8个连续字节的一个双字中的一高有效部分,并将浮点寄存器中双字的左边部分(最高有效部分)存放到该高有效部分,即与有效地址所指向的字节处于同一个对齐字的字节;
所述从右写入双字模块38,用于根据指令译码部件2译码得到的有效地址,查找到包含8个连续字节的一个双字中的一低有效部分,并将浮点寄存器中双字的右边部分(最低有效部分)存放到该低有效部分,即与有效地址所指向的字节处于同一个对齐字的字节。
应当说明的是,如果该处理器的数据在内存中使用大尾端表示,则从左读取或者写入时,取出低有效部分;从右读取或者写入时,取出高有效部分。
本发明的扩展指令,作为一种可实施方式,所述扩展指令的编码格式利用了现有MIPS指令集中保留的LWC2和SWC2空槽的值而实现。
以LWC2为例,其实现格式如图2所示;
其中,扩展指令的访存的寻址方式是base+8 bit offset的寻址方式,其中,5位的base域表示基址,5位的ft域表示源/目标寄存器,offset域表示偏移地址:最后6位的func域用于区分各条扩展指令。
以从左读取字扩展指令为例,则其格式为:gsLWLC1 ft,offset(base)
指令描述:FPR[ft]←FPR[ft] MERGE memory[GPR[base]+offset]
所述扩展指令包括了对32位单精度浮点寄存器的操作指令和/或对64位双精度浮点寄存器的操作指令。
对每种浮点寄存器,包括从左读取、从左写入、从右读取和从右写入操作共八条对浮点寄存器的非对齐访存扩展指令,即从左读取字扩展指令;从右读取字扩展指令;从左读取双字扩展指令;从右读取双字扩展指令;从左写入字扩展指令;从右写入字扩展指令;从左写入双字扩展指令;从右写入双字扩展指令。其中:
从左读取字扩展指令为:gsLWLC1/取字左部到浮点寄存器
指令译码部件2先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,执行单元3中的从左读取字模块31根据该有效地址,从相应的内存中取出包含4个连续字节的一个字W中的一高有效部分,该高有效部分在内存中是以任意字节为边界开始的。
该高有效部分被存放到浮点寄存器中字的最高有效部分(左边),浮点寄存器中字的最低有效部分(右)则维持不变。
从右读取字扩展指令为:gsLWRC1/取字右部到浮点寄存器
指令译码部件2先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,执行单元3中的从右读取字模块32根据该有效地址,从相应的内存中取出包含4个连续字节的一个字W中的一低有效部分,该低有效部分在内存中是以任意字节为边界开始的。
该低有效部分存放到浮点寄存器中字的最低有效部分(右边),浮点寄存器中字的最高有效部分(左)则维持不变。
从左读取双字扩展指令为:gsLDLC1/取双字左部到浮点寄存器
指令译码部件2先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,执行单元3中的从左读取双字模块33根据该有效地址,从相应的内存中取出包含8个连续字节的一个双字DW中的一高有效部分,该高有效部分在内存中是以任意字节为边界开始的。
该高有效部分存放到浮点寄存器中双字的最高有效部分(左边),浮点寄存器中双字的最低有效部分(右)则维持不变。
从右读取双字扩展指令为:gsLDRC1/取双字右部到浮点寄存器
指令译码部件2先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,执行单元3中的从右读取双字模块34根据该有效地址,从相应的内存中取出包含8个连续字节的一个双字DW中的一低有效部分,该低有效部分在内存中是以任意字节为边界开始的。
该低有效部分存放到浮点寄存器中双字的最低有效部分(右边),浮点寄存器中双字的最高有效部分(左)则维持不变。
从左写入字扩展指令:gsSWLC1/从浮点寄存器存字左部
指令译码部件2先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,执行单元3中的从左写入字模块35根据该有效地址,查找到包含4个连续字节的一个字中的一高有效部分,该高有效部分在内存中是以任意字节为边界开始的。
将浮点寄存器中字的最高有效部分(左边)存放到该高有效部分,即与有效地址所指向的字节处于同一个对齐字的字节。
从右写入字扩展指令:gsSWRC1/从浮点寄存器存字右部
指令译码部件2先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,执行单元3中的从右写入字模块36根据所述有效地址,查找到包含4个连续字节的一个字中的一低有效部分,该低有效部分在内存中是以任意字节为边界开始的。
将浮点寄存器中字的最低有效部分(右边)存放到该低有效部分,即与有效地址所指向的字节处于同一个对齐字的字节。
从左写入双字扩展指令:gsSDLC1/从浮点寄存器存双字左部
指令译码部件2先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,执行单元3中的从左写入双字模块37根据该有效地址,查找到包含8个连续字节的一个双字中的一高有效部分,该高有效部分在内存中是以任意字节为边界开始的。
将浮点寄存器中双字的最高有效部分(左边)被存放到该高有效部分,即与有效地址所指向的字节处于同一个对齐字的字节。
从右写入双字扩展指令:gsSDRC1/从浮点寄存器存双字右部
指令译码部件2先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,执行单元3中的从右写入双字模块38根据该有效地址,查找到包含8个连续字节的一个双字中的一低有效部分,该低有效部分在内存中是以任意字节为边界开始的。
将浮点寄存器中双字的最低有效部分(右边)被存放到该低有效部分,即与有效地址所指向的字节处于同一个对齐字的字节。
本发明还提供一种RISC处理器的浮点寄存器的非对齐访存方法,其包括下列步骤:
步骤S100,从处理器中读取指令,识别出对浮点寄存器的非对齐访存扩展指令;
所述的对浮点寄存器的非对齐访存扩展指令,包括从左读取字扩展指令;从右读取字扩展指令;从左读取双字扩展指令;从右读取双字扩展指令;从左写入字扩展指令;从右写入字扩展指令;从左写入双字扩展指令;从右写入双字扩展指令。
所述步骤S100包括下列步骤:
步骤S110,从处理器中读取指令到指令译码部件2后,首先根据指令中的func域的值,判断该指令是现有的MIPS指令集指令,还是对浮点寄存器的非对齐访存扩展指令;
步骤S120,如果是现有的MIPS指令集指令,则按照现有技术的指令后结束;
步骤S130,如果是对浮点寄存器的非对齐访存扩展指令,则转入步骤S200。
步骤S200,对浮点寄存器的非对齐访存扩展指令进行译码,然后送入到执行单元3,执行对浮点寄存器的非对齐访存操作。
对浮点寄存器的非对齐访存扩展指令,其中操作部分(OP)译码与现有的MIPS指令的操作部分相同,即从左读取、从左写入、从右读取和从右写入操作,与现有技术的MIPS指令的从左读取、从左写入、从右读取和从右写入操作译码相同,其为现有的标准技术,因此,在本发明中不再一一详细描述。
对源寄存器和目标寄存器的译码,与现有技术的MIPS指令集不同。
具体包括如下步骤:
步骤S210,如果是从左读取字指令,则译码为先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,根据该有效地址,从相应的内存中取出包含4个连续字节的一个字W中的一高有效部分,该高有效部分被存放到浮点寄存器中字的最高有效部分(左边),浮点寄存器中字的最低有效部分(右)则维持不变;
步骤S220,如果是从右读取字指令,则译码为先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,根据该有效地址,从相应的内存中取出包含4个连续字节的一个字W中的一低有效部分,该低有效部分存放到浮点寄存器中字的最低有效部分(右边),浮点寄存器中字的最高有效部分(左)则维持不变;
步骤S230,如果是从左读取双字指令,则译码为先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,根据该有效地址,从相应的内存中取出包含8个连续字节的一个双字DW中的一高有效部分,该高有效部分存放到浮点寄存器中双字的最高有效部分(左边),浮点寄存器中双字的最低有效部分(右)则维持不变;
步骤S240,如果是从右读取双字指令,则译码为先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,根据该有效地址,从相应的内存中取出包含8个连续字节的一个双字DW中的一低有效部分,该低有效部分存放到浮点寄存器中双字的最低有效部分(右边),浮点寄存器中双字的最高有效部分(左)则维持不变;
步骤S250,如果是从左写入字指令,则译码为先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,根据该有效地址,查找到包含4个连续字节的一个字中的一高有效部分,将浮点寄存器中字的最高有效部分(左边)存放到该高有效部分;
步骤S260,如果是从右写入字指令,则译码为先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,根据所述有效地址,查找到包含4个连续字节的一个字中的一低有效部分,将浮点寄存器中字的最低有效部分(右边)存放到该低有效部分;
步骤S270,如果是从左写入双字指令,则译码为先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,根据所述有效地址,查找到包含8个连续字节的一个双字中的一高有效部分,将浮点寄存器中双字的最高有效部分(左边)被存放到该高有效部分;
步骤S280,如果是从右写入双字指令,则译码为先将带符号的8位偏移地址(offset)和GPR[base]的内容相加得到有效地址,根据该有效地址,查找到包含8个连续字节的一个双字中的一低有效部分,将浮点寄存器中双字的最低有效部分(右边)被存放到该低有效部分。
指令译码部件2译码后得到的操作部分(OP)和源/目标浮点寄存器送入到执行单元3,执行单元3和原来一样执行,但是需要读写浮点寄存器,然后完成把浮点寄存器的内容写入内存,或者完成从内存读取内容到浮点寄存器。
本发明的RISC处理器及其浮点寄存器的非对齐访存方法,可以在不改变原有处理器的其他部件的情况下,实现对地址非对齐访存扩展指令的支持。其针对原有的MIPS指令集的RISC处理器,对指令集及指令译码部件2进行改造,使之能够识别该扩展指令,然后对其译码并输出到访存执行单元3执行,其改动小,并能提高处理器的性能。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (10)

1.一种RISC处理器,包括指令译码部件和执行单元,其特征在于,还包括扩展指令模块;
所述扩展指令模块包括多个扩展指令,用于实现对浮点寄存器的非对齐访存操作;
所述指令译码部件,包括扩展指令译码模块,用于识别扩展指令模块的扩展指令,并进行译码,译码后输出到执行单元执行。
2.根据权利要求1所述的RISC处理器,其特征在于,所述扩展指令译码模块,包括识别子模块,用于在读取指令后,识别出对浮点寄存器的非对齐访存扩展指令。
3.根据权利要求1或2所述的RISC处理器,其特征在于,所述扩展指令包括对32位单精度浮点寄存器的操作指令和/或对64位双精度浮点寄存器的操作指令。
4.根据权利要求3所述的RISC处理器,其特征在于,所述扩展指令包括从左读取字扩展指令;从右读取字扩展指令;从左读取双字扩展指令;从右读取双字扩展指令;从左写入字扩展指令;从右写入字扩展指令;从左写入双字扩展指令;从右写入双字扩展指令。
5.根据权利要求4所述的RISC处理器,其特征在于,所述执行单元,包括从左读取字模块;从右读取字模块,从左读取双字模块,从右读取双字模块,从左写入字模块,从右写入字模块,从左写入双字模块,从右写入双字模块,其中:
所述从左读取字模块,用于根据指令译码部件译码得到的有效地址,从相应的内存中取出包含有4个连续字节的一个字中的一有效部分,将所述有效部分存放到浮点寄存器字的左边部分,所述浮点寄存器中字的右边则维持不变;
所述从右读取字模块,用于根据指令译码部件译码得到的有效地址,从相应的内存中取出包含4个连续字节的一个字中的一有效部分,将所述有效部分存放到浮点寄存器字的右边部分,浮点寄存器中字的左边部分则维持不变;
所述从左读取双字模块,用于根据指令译码部件译码得到的有效地址,从相应的内存中取出包含8个连续字节的一个双字中的一有效部分,并将所述有效部分存放到浮点寄存器双字的左边部分,浮点寄存器中双字的右边部分则维持不变;
所述从右读取双字模块,用于根据指令译码部件译码得到的有效地址,从相应的内存中取出包含8个连续字节的一个双字中的一有效部分,并将所述有效部分存放到浮点寄存器双字的右边部分,浮点寄存器中双字的左边部分则维持不变;
所述从左写入字模块,用于根据指令译码部件译码得到的有效地址,查找到包含4个连续字节的一个字中的一有效部分,并将浮点寄存器的左边部分存放到内存中所述字的相应字节;
所述从右写入字模块,用于根据指令译码部件译码得到的有效地址,查找到包含4个连续字节的一个字中的一有效部分,并将浮点寄存器的右边部分存放到内存中所述字的相应字节;
所述从左写入双字模块,用于根据指令译码部件译码得到的有效地址,查找到包含8个连续字节的一个双字中的一有效部分,并将浮点寄存器的左边部分存放到内存中所述双字的相应字节;
所述从右写入双字模块,用于根据指令译码部件译码得到的有效地址,查找到包含8个连续字节的一个双字中的一有效部分,并将浮点寄存器的右边部分被存放到内存中所述双字的相应字节。
6.根据权利要求1或2所述的RISC处理器,其特征在于,所述扩展指令的编码格式是利用MIPS指令集中LWC2和SWC2空槽的值实现的。
7.一种RISC处理器的浮点寄存器的非对齐访存方法,其特征在于,包括下列步骤:
步骤A,从处理器中读取指令,识别出对浮点寄存器的非对齐访存扩展指令;
步骤B,对浮点寄存器的非对齐访存扩展指令进行译码,然后送入到执行单元,执行对浮点寄存器的非对齐访存操作。
8.根据权利要求7所述的非对齐访存方法,其特征在于,所述步骤A包括下列步骤:
步骤A1,从处理器中读取指令到指令译码部件后,首先根据指令中的func域的值,判断该指令是现有的MIPS指令集指令,还是对浮点寄存器的非对齐访存扩展指令;
步骤A2,如果是现有的MIPS指令集指令,则按照现有技术的指令操作后结束;
步骤A3,如果是对浮点寄存器的非对齐访存扩展指令,则转入步骤B。
9.根据权利要求7所述的非对齐访存方法,其特征在于,所述扩展指令包括从左读取字扩展指令;从右读取字扩展指令;从左读取双字扩展指令;从右读取双字扩展指令;从左写入字扩展指令;从右写入字扩展指令;从左写入双字扩展指令;从右写入双字扩展指令。
10.根据权利要求9所述的非对齐访存方法,其特征在于,所述步骤B包括下列步骤:
步骤B1,如果是从左读取字指令,则译码为得到有效地址,根据所述有效地址,从相应的内存中取出包含有4个连续字节的一个字中的一有效部分,将所述有效部分存放到浮点寄存器字的左边部分,所述浮点寄存器中字的右边则维持不变;
步骤B2,如果是从右读取字指令,则译码为得到有效地址,根据所述有效地址,从相应的内存中取出包含4个连续字节的一个字中的一有效部分,将所述有效部分存放到浮点寄存器字的右边部分,浮点寄存器中字的左边部分则维持不变;
步骤B3,如果是从左读取双字指令,则译码为得到有效地址,根据所述有效地址,从相应的内存中取出包含8个连续字节的一个双字中的一有效部分,并将所述有效部分存放到浮点寄存器字的左边部分,浮点寄存器中双字的右边部分则维持不变;
步骤B4,如果是从右读取双字指令,则译码为得到有效地址,根据所述有效地址,从相应的内存中取出包含8个连续字节的一个双字中的一有效部分,并将所述有效部分存放到浮点寄存器字的右边部分,浮点寄存器中双字的左边部分则维持不变;
步骤B5,如果是从左写入字指令,则译码为得到有效地址,根据所述有效地址,查找到包含4个连续字节的一个字中的一有效部分,并将浮点寄存器的左边部分存放到内存中所述字的相应字节;
步骤B6,如果是从右写入字指令,则译码为得到有效地址,根据所述有效地址,查找到包含4个连续字节的一个字中的一有效部分,并将浮点寄存器的右边部分存放到内存中所述字的相应字节;
步骤B7,如果是从左写入双字指令,则译码为得到有效地址,根据所述有效地址,查找到包含8个连续字节的一个双字中的一有效部分,并将浮点寄存器的左边部分存放到内存中所述双字的相应字节;
步骤B8,如果是从右写入双字指令,则译码为得到有效地址,根据所述有效地址,查找到包含8个连续字节的一个双字中的一有效部分,并将浮点寄存器的右边部分被存放到内存中所述双字的相应字节。
CN2008100559284A 2008-01-02 2008-01-02 Risc处理器及其浮点寄存器的非对齐访存方法 Active CN101216755B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008100559284A CN101216755B (zh) 2008-01-02 2008-01-02 Risc处理器及其浮点寄存器的非对齐访存方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100559284A CN101216755B (zh) 2008-01-02 2008-01-02 Risc处理器及其浮点寄存器的非对齐访存方法

Publications (2)

Publication Number Publication Date
CN101216755A true CN101216755A (zh) 2008-07-09
CN101216755B CN101216755B (zh) 2011-10-12

Family

ID=39623194

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100559284A Active CN101216755B (zh) 2008-01-02 2008-01-02 Risc处理器及其浮点寄存器的非对齐访存方法

Country Status (1)

Country Link
CN (1) CN101216755B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407880A (zh) * 2014-10-27 2015-03-11 杭州中天微系统有限公司 支持硬件非对齐存储访问的risc处理器加载/存储单元
CN108415728A (zh) * 2018-03-01 2018-08-17 中国科学院计算技术研究所 一种用于处理器的扩展浮点运算指令执行方法及装置
CN110038301A (zh) * 2019-04-11 2019-07-23 网易(杭州)网络有限公司 数据处理方法、装置、电子设备及存储介质
WO2020207319A1 (zh) * 2019-04-10 2020-10-15 北京灵汐科技有限公司 基于共享内存的数据读写方法、系统及可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0651320B1 (en) * 1993-10-29 2001-05-23 Advanced Micro Devices, Inc. Superscalar instruction decoder
US5884057A (en) * 1994-01-11 1999-03-16 Exponential Technology, Inc. Temporal re-alignment of a floating point pipeline to an integer pipeline for emulation of a load-operate architecture on a load/store processor
CN1306395C (zh) * 2004-02-13 2007-03-21 中国科学院计算技术研究所 Mips指令集的处理器扩展指令及其编码方法和部件

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407880A (zh) * 2014-10-27 2015-03-11 杭州中天微系统有限公司 支持硬件非对齐存储访问的risc处理器加载/存储单元
CN108415728A (zh) * 2018-03-01 2018-08-17 中国科学院计算技术研究所 一种用于处理器的扩展浮点运算指令执行方法及装置
WO2020207319A1 (zh) * 2019-04-10 2020-10-15 北京灵汐科技有限公司 基于共享内存的数据读写方法、系统及可读存储介质
CN111813722A (zh) * 2019-04-10 2020-10-23 北京灵汐科技有限公司 基于共享内存的数据读写方法,系统及可读存储介质
CN111813722B (zh) * 2019-04-10 2022-04-15 北京灵汐科技有限公司 基于共享内存的数据读写方法,系统及可读存储介质
CN110038301A (zh) * 2019-04-11 2019-07-23 网易(杭州)网络有限公司 数据处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN101216755B (zh) 2011-10-12

Similar Documents

Publication Publication Date Title
KR101703743B1 (ko) 가속된 레인 간 벡터 감축 명령어들
CN101916180B (zh) Risc处理器中执行寄存器类型指令的方法和其系统
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
US20190012171A1 (en) Read and Write Masks Update Instruction for Vectorization of Recursive Computations Over Independent Data
US7203932B1 (en) Method and system for using idiom recognition during a software translation process
CN118034781A (zh) 用于矩阵加法、减法和乘法的系统、方法和装置
US20140095847A1 (en) Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US20060190700A1 (en) Handling permanent and transient errors using a SIMD unit
US20140095828A1 (en) Vector move instruction controlled by read and write masks
CN115686633A (zh) 用于实现链式区块操作的系统和方法
CN101147125A (zh) 用于直接累积未调准数据的可写入分段字的架构型寄存器
CN110909882A (zh) 用于执行水平铺块操作的系统和方法
WO2014105057A1 (en) Instruction to reduce elements in a vector register with strided access pattern
CN104346132B (zh) 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机
US6175910B1 (en) Speculative instructions exection in VLIW processors
WO2013095529A9 (en) Addition instructions with independent carry chains
US9424042B2 (en) System, apparatus and method for translating vector instructions
CN101216755B (zh) Risc处理器及其浮点寄存器的非对齐访存方法
CN114675889A (zh) 用于对函数调用的基于硬件的记忆化的装置和方法
CN101539852B (zh) 用于执行条件存储指令的方法、处理器和信息处理设备
CN113535236A (zh) 基于指令集体系结构的和自动的加载跟踪的方法和装置
CN116860334A (zh) 用于计算两个区块操作数中的半字节的数量积的系统和方法
CN115640047A (zh) 指令操作方法及装置、电子装置及存储介质
CN114675888A (zh) 用于加载矩阵操作加速器瓦片的指令的装置、方法和系统
CN114675883A (zh) 用于对齐矩阵操作加速器瓦片的指令的装置、方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
EE01 Entry into force of recordation of patent licensing contract

Assignee: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract fulfillment period: 2009.12.16 to 2028.12.31

Contract record no.: 2010990000062

Denomination of invention: RISC method and its floating-point register non-alignment access method

License type: exclusive license

Record date: 20100128

LIC Patent licence contract for exploitation submitted for record

Free format text: EXCLUSIVE LICENSE; TIME LIMIT OF IMPLEMENTING CONTACT: 2009.12.16 TO 2028.12.31; CHANGE OF CONTRACT

Name of requester: BEIJING LOONGSON TECHNOLOGY SERVICE CENTER CO., LT

Effective date: 20100128

C14 Grant of patent or utility model
GR01 Patent grant
EC01 Cancellation of recordation of patent licensing contract

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2010990000062

Date of cancellation: 20141231

EM01 Change of recordation of patent licensing contract

Change date: 20141231

Contract record no.: 2010990000062

Assignee after: Longxin Zhongke Technology Co., Ltd.

Assignee before: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20080709

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Denomination of invention: RISC method and its floating-point register non-alignment access method

Granted publication date: 20111012

License type: Common License

Record date: 20150211

TR01 Transfer of patent right

Effective date of registration: 20200824

Address after: 100095, Beijing, Zhongguancun Haidian District environmental science and technology demonstration park, Liuzhou Industrial Park, No. 2 building

Patentee after: LOONGSON TECHNOLOGY Corp.,Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

TR01 Transfer of patent right
EC01 Cancellation of recordation of patent licensing contract

Assignee: LOONGSON TECHNOLOGY Corp.,Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Date of cancellation: 20200928

EC01 Cancellation of recordation of patent licensing contract
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.