一种risc处理器及其数据访存方法

文档序号:6616196阅读:208来源:国知局
专利名称:一种risc处理器及其数据访存方法
技术领域
本发明涉及计算机领域,特别是涉及处理器体系结构及MIPS指令领域, 更具体而言,是涉及一种MIPS指令集RISC处理器及其数据访存方法。
背景技术
复杂指令集计算机(Complex Instruction Set Computing, CISC)和精简指 令计算机(Reduced Instruction Set Computing, RISC)是当前处理器(CPU) 的两种架构。不同架构的处理器只能执行自己的指令集,如Intel的机器只能 执行80X86的指令集(一种CISC指令集),不能执行RISC的指令集;而RISC 架构的计算不能执行80X86的指令集。而由于这种硬件体系结构的不同,操 作系统和各种应用软件通常只能在特定架构的计算机上执行,如RISC处理器 不能充分利用X86处理器系列机器己有的广泛的应用软件。为了克服上述缺陷,更充分地使用有限的计算机软硬件资源,出现了虚拟 机技术。虚拟机是处于计算机软件和硬件中的一个虚拟的中间层,用来给上层的应 用软件程序或者操作系统提供一个所需要的虚拟软件/硬件平台。上层的应用 软件程序或者操作系统是通过这处虚拟的中间层,如虚拟机监视器(Virtual Machine Monitor, VMM)来与硬件进行通信,由VMM来决定其对系统上所 有虚拟硬件设备的访问。在虚拟机的设计中,X86处理器的通用寄存器被映射到固定的MIPS处理 器的寄存器,但是在虚拟机的MIPS代码和翻译后的MIPS代码两种上下文切 换时,需要保存或者恢复这些固定的MIPS寄存器的值,以保证这些寄存器在 两种上下文中都可以自由的使用,而不互相干扰。这种方法的代价是每次切换 都需要至少20条左右的访存指令,既要保存旧上下文的值,又要取出新上下 文的值,如果源平台为X86-64,则需要接近40条访存指令的开销。当然可以限制虚拟机系统上下文不使用被映射的MIPS处理器的寄存器,那样在上下文切换时就不需要保存恢复这些寄存器,但是现有技术中编译器无 法完成这个限制,同时即使这样做,虚拟机系统上下文的寄存器压力增大,只 能使用不到20个寄存器,性能将大大下降。发明内容本发明所要解决的问题是提供J种RISC处理器及其数据访存方法,其加 快虚拟机上下文切换,提高计算机性能。为实现本发明目的而提供的一种RISC处理器,包括指令模块,物理寄存 器堆,译码器,执行单元和存储器;所述指令模块包括访存扩展指令模块,所述扩展指令模块包括对多倍数据 宽度进行访存指令;所述译码器包括判断模块,多倍存储译码模块和多倍读取译码模块,其中所述判断模块,用于判断输入到译码器的指令类型;所述多倍存储译码模块,用于在输入的指令是访存扩展指令中的存储操作 指令时,将源寄存器由一个扩展成多个相邻的寄存器,然后输出到执行单元执 行;所述多倍读取译码模块,用于在输入的指令是访存扩展指令中的读取操作 指令时,将该读取操作指令译码为多条内部操作指令,将目标寄存器由一个扩 展成多个相邻的寄存器,然后分配到所述多条内部操作中,输出到执行单元执 行。所述执行单元包括合并单元,用于在多倍读取译码模块对读取内存操作指 令译码后,在执行单元执行前,把多个内部操作进行合并。所述多倍数据宽度访存指令包括对多倍数据宽度的读取内存、写入内存、 以及对浮点寄存器的多倍数据宽度的读取内存、写入内存共四类多倍数据宽度 访存扩展指令。所述合并的方法是如果发现相邻的将要进入执行单元的发射队列的多个 操作是多倍数据宽度取数指令译码而成,则后继操作不进入所述发射队列,而 将其目的物理寄存器号存为第一个操作的高位目的物理寄存器号。为实现本发明目的还提供一种RISC处理器的数据访存方法,包括下列步骤步骤A,处理器首先取出一条指令输入到译码器;步骤B,译码器判断指令类型,识别并译码多倍数据宽度指令;步骤C,将译码后的多倍数据宽度指令发送到执行单元执行操作。所述步骤B包括下列步骤如果输入的指令是现有指令集中的指令,译码器就将其译为内部操作;如果输入的指令是多倍访存扩展存储指令,译码器将源寄存器由一个扩展成多个相邻的寄存器;如果输入指令是多倍访存扩展的读取指令,译码器将目标寄存器由一个扩 展成多个相邻的寄存器,并将读取操作分配到多个内部操作里,多个相邻的寄 存器分别为这多个内部操作的目标寄存器。所述步骤C包括下列步骤.-在译码器对多倍数据宽度的读取指令译码后,在执行单元执行前,把所述 多个内部操作进行合并。所述合并的方法为如果发现相邻的将要进入执行单元的发射队列的多个 操作是多倍数据宽度取数指令译码而成,则后继操作不进入所述发射队列,而 将其目的物理寄存器号存为第一个操作的高位目的物理寄存器号。所述多倍数据宽度访存指令包括对多倍数据宽度的读取内存、写入内存、 以及对浮点寄存器的多倍数据宽度的读取内存、写入内存共四类多倍数据宽度 访存扩展指令。本发明的有益效果是本发明的RISC处理器及其数据访存方法,其提供数据宽度是原有数据宽度多倍的访存扩展指令,加快虚拟机上下文切换的同时 也可以提高计算机的性能。


图1为本发明RISC处理器结构示意图;图2为本发明实施例多倍数据宽度扩展指令的编码格式示意图; 图3为本发明RISC处理器数据访存方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种RISC处理器及其数据访存方法进行进一步详细说明。 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发 明。本发明实施例以MIPS64指令集的RISC处理器装置,以双倍数据宽度访 存指令为例,而对本发明的RISC处理器装置及其数据访存方法而进行说明, 但是,应当指明的是,其不是对本发明权利要求的限定。本发明提供一种RISC处理器,如图1所示,包括指令模块I,物理寄存 器堆2,译码器3,执行单元4和存储器(内存)5。所述指令模块1包括MIPS指令集的指令;所述物理寄存器堆2,包括通用寄存器和浮点寄存器。所述指令模块1还包括访存扩展指令模块11 ,所述扩展指令模块11包括 对多倍数据宽度进行访存指令。所述多倍数据宽度访存指令包括对多倍数据宽 度的读取内存、写入内存、以及对浮点寄存器的多倍数据宽度的读取内存、写 入内存共四类多倍数据宽度访存扩展指令。所述访存扩展指令是译码器3的输入子集,译码器3接收访存扩展指令, 并对该访存扩展指令译码。译码后译码器3的输出,根据读取和写入内存的不 同指令而分别译码为多条内部操作和一条内部操作。所述译码器3包括判断模块31,多倍存储译码模块32和多倍读取译码模 块33,其中,所述判断模块31,用于判断输入到译码器3的指令类型。 所述多倍存储译码模块32,用于在输入的指令是访存扩展指令中的存储操作指令时,将源寄存器由一个扩展成多个相邻的寄存器,然后输出到执行单元执行;所述多倍读取译码模块33,用于在输入的指令是访存扩展指令中的读取 操作指令时,将该读取操作指令译码为多条内部操作指令,将目标寄存器由一 个扩展成多个相邻的寄存器,然后分配到所述多条内部操作中,输出到执行单 元执行。所述执行单元4包括合并单元41,用于在多倍读取译码模块对读取内存 操作译码后,在执行单元执行前,把多个内部操作进行合并。作为一种可实施方式,本发明一共提出了四条多倍数据宽度的访存扩展指 令,包括双倍数据宽度的读取内存、写入内存指令,以及对浮点寄存器的双倍 数据宽度的读取内存、写入内存指令。作为一种可实施方式,本发明提供的多倍数据宽度扩展指令的编码格式如图2所示,其利用现有MIPS64指令集中保留的LWC2和SWC2空槽的值, 其中32位指令的高6位Gbit: 26bit)为opcode域。其中LWC2 (opcode 为110010)禾n SWC2 (opcode为111010)指令槽都是MIPS规定的可以由用 户自主定义的。其访存的寻址方式是base+8 bits offset的寻址方式。其中,5位的base域表示基址,5位的rt ( Register Target (Source/Destination))域表示源/目标寄存器,offset表示偏移地址,最后6 位的fimc域用于区分各条扩展指令。本发明的四条扩展指令是MIPS64指令集中给用户扩展的自定义指令。对于存数指令SQ,译码器3输出一个内部的sq操作;对于取数指令LQ,译码器3输出两个相邻的内部操作lql和lq2,其中lql 带有LQ指令的低64位逻辑寄存器号,1q2带有LQ指令的高64位逻辑寄存 器号。译码器3对指令进行译码后送到执行单元4的发射队列(未示出),发射 队列从中选取操作数准备好的操作,发射到执行单元4的访存部件(未示出)。对于读取内存的四个字的共128位取数指令操作,所述执行单元的合并模 块41,把两个内部操作在进入发射队列时进行合并。合并的方法是如果发现 相邻的将要进入队列的两个操作是四个字的128位取数指令译码而成,则后一 个操作不进入发射队列,而将其目的物理寄存器号存入前一操作的高64位目 的物理寄存器号。合并后的取数操作有两个目的物理寄存器号,在地址确定(对应源物理寄 存器准备好)时会发射到执行单元的访存部件执行。访存部件是执行存取数据的部件,其根据指令从内存中取出数据或者把数 据存放到内存中。这个过程是现有的标准技术,对本领域技术人员是显而易见 的,因此,本发明实施例中不再一一详细描述。下面对双倍数据宽度的读取内存、写入内存指令,以及对浮点寄存器的双 倍数据宽度的读取内存、写入内存指令共四条指令进行说明gsLQ rt, offset(base) /读取四字数据到内存从内存中取四字存入到寄存器中,先将带符号的8位offset和GPR[base] 的内容相加得到有效地址,再根据这个对齐的有效地址从内存中取出128位四 字,存放到相邻的2个通用寄存器中。如果rt为偶数,则存放到寄存器rt和rt+l中;如果rt为奇数,则存放到 寄存器rt-l和rt中。有效地址是对齐的,如果低4位地址中任何一位非零,则发生地址错例外。gsLQCl ft, offset(base) /四字数据写入内存先将带符号的8位offset和GPR[base]的内容相加得到有效地址,再根据 这个对齐的有效地址从内存中取出128位四字,存放到相邻的2个浮点寄存器 中。如果ft为偶数,则存放到寄存器ft和ft+l中;如果ft为奇数,则存放到 寄存器ft-l和ft中。有效地址是对齐的,如果低4位地址中任何一位非零,则发生地址错例外。gsSQ rt, offset(base) /存四字数据到内存先将带符号的8位offset和GPR[base]的内容相加得到有效地址,然后将 相邻2个通用寄存器中的四字存放到内存中的有效地址中。如果rt为偶数,则取出寄存器rt和rt+l中的值存放到内存;如果rt为奇 数,则取出寄存器rt-l和rt中的值存放到内存。有效地址是对齐的,如果低4位地址中任何一位非零,则发生地址错例外。gsSQCl ft, offset(base) /从浮点寄存器存四字到内存 先将带符号的8位offset和GPR[base]的内容相加得到有效地址,然后将 相邻2个浮点寄存器中的四字存放到内存中的有效地址中。如果ft为偶数,则取出寄存器ft和ft+l中的值存放到内存;如果ft为奇数,则取出寄存器ft-l 和ft中的值存放到内存。有效地址必须是对齐的,如果低4位地址中任何一位非零,则发生地址错 例外。根据本发明还提供一种RISC处理器的数据访存方法,该方法包括下列步骤如图3所示,为RISC处理器的数据访存方法流程图,其包括下列步骤步骤S100,处理器首先取出一条指令输入到译码器3;步骤S200,译码器3判断指令类型,识别并译码多倍数据宽度指令;如果是现有的MIPS指令集中的指令,译码器3就将其译为内部操作,比 如给出相应的OP,源寄存器和目标寄存器等;如果输入的指令是本发明提出的多倍访存扩展指令操作,译码器3将源/ 或目标寄存器由一个自动扩展成两个成对的寄存器;如果rt为偶数,则存放到寄存器rt和rt+l中;如果rt为奇数,则存放到 寄存器rt-l和rt中。如果输入指令是多倍数据宽度的读取指令时,译码器3将目标寄存器由一 个自动扩展成多个相邻的寄存器,并将读取操作分配到多个内部操作里,多个 成对的寄存器分别为这多个内部操作的目标寄存器。如果输入指令是多倍数据宽度的存储指令时,译码器将源寄存器由一个扩 展成多个相邻的寄存器。处理器首先取出一条指令输入到译码器,译码器判断指令类型,如果是原 有MIPS指令集中的指令,译码器就将其译为内部操作,例如给出相应的操作 (OP),源寄存器械和目标寄存器等,输出到存储执行单元执行;如果输入 的指令是本发明提出的访存扩展指令中的存储操作,译码器将源/或目标寄存 器由一个自动扩展成两个成对的寄存器,然后输出到存储执行单元执行。处理器首先取出一条指令输入到译码器3,译码器3判断指令类型,并转 换成内部操作。内部操作的编码对处理器的功能部件而言比指令更规整,有利 于简化内部逻辑。RISC处理器中,通常外部的指令到内部操作是一一映射。 译码器输出的内部操作由若干个域组成,如操作码(op)、扩展操作码(fmt)、源 寄存器号、目的寄存器号、立即数等。步骤S300,将译码后的多倍数据宽度指令发送到执行单元4执行操作。译码器3对输入指令译码后,发送到执行单元4,在执行单元4中,如果 是读取操作指令,则读取操作指令LQ的2个内部操作lql, lq2合并成一个操 作,送到执行单元的访存部件执行。如果输入的指令是本发明提出的访存扩展指令中的四个字共128位的存 数指令SQ,译码器3将源寄存器号由一个扩展成两个成对的寄存器号。比如 4号寄存器扩展成4、 5两个寄存器号;7号寄存器扩展成6、 7两个。作为内 部操作的两个源寄存器号送到执行单元的发射队列。如果输入的指令是本发明提出的访存扩展指令中的读取操作,译码器3 将该读取操作译码为两条内部操作,同样将目标寄存器由一个自动扩展为两个 成对的寄存器,然后分配到上述两个内部操作里,输出到执行单元4执行,然 后将其合并成一个操作送到执行单元的访存部件中执行。也就是说,如果输入的指令是本发明提出的访存扩展指令中的四个字共 128位的存数指令LQ,译码器将目标寄存器号由一个扩展成两个成对的寄存 器号。并且拆成两个相邻的内部操作lql、 lq2,分别带上这两个目标寄存器号, 送入执行单元4的发射队列。执行单元接收来自译码器的内部操作,选择其中 源物理寄存器准备好的那些发射到执行单元的访存部件。LQ指令作为一个访 存操作发射到访存部件,因此由执行单元的合并模块完成两个内部操作的合 并。方法是把lq2的目的物理寄存器存入lql操作的高64位目的物理寄存器中, lq2本身并不进入发射队列。访存部件执行访存操作,对于lql,在结果中有两 个值域,分别写入对应的物理寄存器。本发明的RISC处理器及其数据访存方法,其提供数据宽度是原有数据宽 度多倍的访存扩展指令,加快虚拟机上下文切换的同时也可以提高计算机的性 能。通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本 领域的技术人员而言是显而易见的。以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只 是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行 解释。
权利要求
1、一种RISC处理器,包括指令模块,物理寄存器堆,译码器,执行单元和存储器,其特征在于所述指令模块包括访存扩展指令模块,所述扩展指令模块包括对多倍数据宽度进行访存指令;所述译码器包括判断模块,多倍存储译码模块和多倍读取译码模块,其中所述判断模块,用于判断输入到译码器的指令类型;所述多倍存储译码模块,用于在输入的指令是访存扩展指令中的存储操作指令时,将源寄存器由一个扩展成多个相邻的寄存器,然后输出到执行单元执行;所述多倍读取译码模块,用于在输入的指令是访存扩展指令中的读取操作指令时,将该读取操作指令译码为多条内部操作指令,将目标寄存器由一个扩展成多个相邻的寄存器,然后分配到所述多条内部操作中,输出到执行单元执行。
2. 根据权利要求1所述的RISC处理器,其特征在于,所述执行单元包 括合并单元,用于在多倍读取译码模块对读取内存操作指令译码后,在执行单 元执行前,把多个内部操作进行合并。
3. 根据权利要求1或2所述的RISC处理器,其特征在于,所述多倍数 据宽度访存指令包括对多倍数据宽度的读取内存、写入内存、以及对浮点寄存 器的多倍数据宽度的读取内存、写入内存共四类多倍数据宽度访存扩展指令。
4. 根据权利要求2所述的RISC处理器,其特征在于,所述合并的方法 是如果发现相邻的将要进入执行单元的发射队列的多个操作是多倍数据宽度 取数指令译码而成,则后继操作不进入所述发射队列,而将其目的物理寄存器 号存为第一个操作的高位目的物理寄存器号。
5. 一种RISC处理器的数据访存方法,其特征在于,包括下列步骤 步骤A,处理器首先取出一条指令输入到译码器;步骤B,译码器判断指令类型,识别并译码多倍数据宽度指令; 步骤C,将译码后的多倍数据宽度指令发送到执行单元执行操作。
6. 根据权利要求5所述的RISC处理器的数据访存方法,其特征在于,所述步骤B包括下列步骤如果输入的指令是现有的MIPS指令集中的指令,译码器就将其译为内部 操作;如果输入的指令是多倍访存扩展存储指令,译码器将源寄存器由一个扩展 成多个相邻的寄存器;如果输入指令是多倍访存扩展的读取指令,译码器将目标寄存器由一个扩 展成多个相邻的寄存器,并将读取操作分配到多个内部操作里,多个相邻的寄 存器分别为这多个内部操作的目标寄存器。
7、 根据权利要求6所述的RISC处理器的数据访存方法,其特征在于, 所述歩骤C包括下列步骤在译码器对多倍数据宽度的读取指令译码后,在执行单元执行前,把所述 多个内部操作进行合并。
8、 根据权利要求7所述的RISC处理器的数据访存方法,其特征在于, 所述合并的方法为如果发现相邻的将要进入执行单元的发射队列的多个操作 是多倍数据宽度取数指令译码而成,则后继操作不进入所述发射队列,而将其 目的物理寄存器号存为第一个操作的高位目的物理寄存器号。
9、 根据权利要求5至8任一项所述的RISC处理器的数据访存方法,其 特征在于,所述多倍数据宽度访存指令包括对多倍数据宽度的读取内存、写入 内存、以及对浮点寄存器的多倍数据宽度的读取内存、写入内存共四类多倍数 据宽度访存扩展指令。
全文摘要
本发明公开了一种RISC处理器及其数据访存方法。该处理器包括指令模块,物理寄存器堆,译码器,执行单元和存储器;指令模块包括访存扩展指令模块,所述扩展指令模块包括对多倍数据宽度进行访存指令;所述译码器包括判断模块,用于判断输入到译码器的类型;多倍存储译码模块,用于在输入的指令是访存扩展指令中的存储操作指令时,将源寄存器由一个扩展成多个相邻的寄存器,然后输出到执行单元执行;多倍读取译码模块,用于在输入的指令是访存扩展指令中的读取操作指令时,将该读取操作指令译码为多条内部操作指令,将目标寄存器由一个扩展成多个相邻的寄存器,然后分配到所述多条内部操作中,输出到执行单元执行。
文档编号G06F9/38GK101216757SQ20071030855
公开日2008年7月9日 申请日期2007年12月29日 优先权日2007年12月29日
发明者李晓钰, 玮 段 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1