本发明专利技术公开一种扩展处理器寄存器堆容量的方法,主要为了解决寄存器容量受限的问题。所述方法包括:判断指令为条件执行还是非条件执行,若指令为条件执行且条件是AL,则选择扩展的寄存器堆S1;若指令为非条件指令,则选择扩展的寄存器堆S0;若指令为条件指令,但条件不是AL,则选择扩展的寄存器堆S0。本发明专利技术针对支持条件执行的指令集,不需要对原指令集做任何的修改,对原处理器的应用程序能够完全兼容。
【技术实现步骤摘要】
本专利技术涉及一种。
技术介绍
传统的计算机层次存储系统采取寄存器和高速缓存桥接于ALU和存储器之间,成功地解决了存储器的访问速度与处理器的计算速度不匹配的问题。其中,寄存器可以和ALU之间进行快速的通讯,为ALU提供操作数并保存计算结果。 现在的处理器体系结构设计中多采用流水线技术,以典型的5级流水线RISC处理器的设计为例,在取指阶段,根据程序计数器的值从指令存储器中读取指令,并存入指令寄存器中,同时计算下一条指令的地址;在译码阶段,对指令进行译码,并从寄存器堆读取源操作数,如果是跳转指令,则在这一阶段将跳转的地址写入程序计数器;在指令执行阶段,对上一阶段获取的操作数进行运算,根据指令的类型,可实现不同的功能,如果是load/store指令,则在这一阶段计算存储器存取的地址;访问存储器阶段,主要针对load/store指令完成对存储器的访问;写回阶段,将ALU的计算结果或者是访存的结果写回寄存器堆。 在不同的设计中,处理器完成的工作大致相同,只是因上叙述过程的细化程度不同,带来流水线的深度的不同。总体而言,处理器在指令译码和写回两个阶段访问了寄存器堆,每周期访问寄存器的数量又因指令所需操作数的不同而不同。 随着对处理器的性能要求越来越高,仅仅依靠流水线技术已经无法满足要求。提高处理器性能最根本的办法是提高指令级并行,也就是使处理器在同一周期处理尽量多的指令。现在的技术可以将指令级并行提高到8甚至更高,而每条指令也可能访问多个寄存器。这样的处理器需要更多的寄存器为其提供足够操作数进行运算。 寄存器的数量受到指令集的限制。如今比较常见的RISC指令集有16位,32位和64位,当指令编码中有N位作为寄存器索引时,最多可以访问2的η次方个寄存器。在这些寄存器中,除去程序计数器,栈指针寄存器,链接寄存器等不能任意修改的寄存器,程序员可以使用的寄存器数量更加有限。 目前,提高指令并行度的手段主要是超标量和超长指令字。超标量的方法通过牺牲硬件复杂度的方式一定程度上缓解了对大量寄存器的需求,而超长指令字方法,由于是依赖编译器静态进行指令调度,其所需要寄存器的数量也是静态可见的,这种方法对寄存器的需求量更大。常见的超长指令字架构的处理器多拥有独立设计的指令集,并在设计中提供足够的寄存器堆容量。而在已有指令集的基础上扩展寄存器堆容量的常见方法也都需要对指令集进行一定的修改,增加寄存器堆配置指令等相关指令。
技术实现思路
针对上述问题,本专利技术提供一种在不改变指令集的前提下,利用指令集条件执行。 为达到上述目的,本专利技术,应用于支持条件执行的指令集,所述方法至少包括: 基于指令集中的指令是否为条件执行以及执行的条件,选择相应的扩展寄存器堆, 当指令是条件执行且条件为AL时,选择扩展寄存器堆SI ; 当指令是非条件执行或除AL以外其他条件执行时,选择扩展寄存器堆S0。 进一步地,所述方法还包括确定是否使用扩展寄存器S0、SI的步骤。 本专利技术,从一个全新的角度解决寄存器容量受限的问题,提出了一种在不改变指令集的前提下,利用指令集条件执行。优点是不需要对原指令集做任何的修改,对原处理器的应用程序能够完全兼容。 【附图说明】 图1是本专利技术条件执行中,以AL为执行条件的指令编码; 图2是本专利技术非条件执行的指令编码; 图3为本专利技术扩展后的寄存器组织结构。 【具体实施方式】 下面结合说明书附图对本专利技术做进一步的描述。 本专利技术所述的方法针对支持条件执行的指令集(例如ARM指令集或者与ARM指令集有相似编码特性的指令集),指令可以条件执行,也可以非条件执行。在条件执行中,条件AL (always)表示永远执行,这与非条件执行的结果是相同的,但是这两种指令的指令编码却并不相同。 利用这一特点,将条件执行的AL条件作为寄存器堆的选择信息,当指令是非条件执行或除AL以外其他的条件执行时,选择寄存器堆SO ;当指令是条件执行并且条件是AL时,选择扩展的寄存器堆SI,同时,该寄存器堆不再支持其他的条件执行。这样,在不改变指令功能的前提下,扩展了寄存器堆容量。 需要时,通过Load/Store指令在两个寄存器堆之间进行数据交换。 用户在使用时,通过预先选择设定工作模式为使用扩展寄存器或不使用扩展寄存器。 使用扩展寄存器的情况下,所述的,至少包括: 基于指令集中的指令是否为条件执行以及执行的条件,选择相应的扩展寄存器堆, 当指令是条件执行且条件为AL时,选择扩展寄存器堆SI ; 当指令是非条件执行或除AL以外其他条件执行时,选择扩展寄存器堆S0。也即当指令为非条件指令,则选择扩展的寄存器堆SO ;若指令为条件指令,但条件不是AL,则选择扩展的寄存器堆S0。 以某32位指令集为例,该指令集的大部分指令都支持条件执行,指令编码的前4位是指令的条件执行位。0X0000?0X1110分别表示15种执行条件,其中,0X1110表示条件AL,如图1所示。在此条件下,指令永远会被执行,这与非条件执行的结果是一致的。而非条件执行的指令编码前4位为0X1111,如图2所示。 该指令集的指令编码中有4位作为寄存器的索引信息,则寄存器堆一共包含16个寄存器。如图3所示,其中有部分寄存器在子程序调用过程中,由主程序负责保存,用于在调用和被调用程序之间传递参数。有部分寄存器用作特殊功能寄存器,比如程序计数器,栈指针寄存器,链接寄存器等,这些寄存器是程序员不能任意修改的。其他的寄存器可以由程序员任意使用,在子程序调用过程中,由被调用程序负责保存,扩展的寄存器堆SO和扩展的寄存器堆SI与这一部分相对应。 利用条件执行的AL作为寄存器堆的选择信息。即当指令编码的前4位为0X1110时,选择寄存器堆Si,否则,选择寄存器堆so。也就是说,原本是非条件执行的指令,我们可以通过简单地加上AL条件,就可以使用扩展的寄存器堆SI,这不会对指令的功能产生任何的影响。下面是一段汇编程序的示例,在使用扩展寄存器堆的模式下,当指令的末尾加上条件AL时,使用扩展的寄存器堆SI,其余的指令则使用扩展的寄存器堆S0。这样,在功能单元充足的条件下,可以再同一个周期内执行更多的指令,从而提高程序的指令效率。 .L8: Idr r4 [r0#-4] Idr r9 [r3 rl] ldral j4[r0#-4] //使用寄存器堆 SI ldral j9[r3 rl] //使用寄存器堆 SI mu I r7 r8 r4 mu I r6 r5 r9 add r2 r2 si mulal j4 j5 j4 //使用寄存器堆 SI mulal jlO j8 j9 //使用寄存器堆 SI cmp r2 32 Idr rll [r3#-4] rsb r6 r6 r7 ble.L8 以上,仅为本专利技术的较佳实施例,但本专利技术的保护范围并不局限于此,任何熟悉本
的技术人员在本专利技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本专利技术的保护范围之内。因此,本专利技术的保护范围应该以权利要求所界定的保护范围为准。本文档来自技高网...
【技术保护点】
一种扩展处理器寄存器堆容量的方法,应用于支持条件执行的指令集,其特征在于,所述方法至少包括:基于指令集中的指令是否为条件执行以及执行的条件,选择相应的扩展寄存器堆,当指令是条件执行且条件为AL时,选择扩展寄存器堆S1;当指令是非条件执行或除AL以外其他条件执行时,选择扩展寄存器堆S0。
【技术特征摘要】
1.一种扩展处理器寄存器堆容量的方法,应用于支持条件执行的指令集,其特征在于,所述方法至少包括: 基于指令集中的指令是否为条件执行以及执行的条件,选择相应的扩展寄存器堆, 当指令是条件执行且条件为AL时,选择...
【专利技术属性】
技术研发人员:侯毓敏,何虎,
申请(专利权)人:清华大学,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。