安排处理器中的暂存器以模拟部分堆叠的装置及方法

文档序号:6757242阅读:113来源:国知局
专利名称:安排处理器中的暂存器以模拟部分堆叠的装置及方法
技术领域
本发明有关于一种处理器相关的装置和方法,特别是关于一种于处理器中安排暂存器以模拟(emulate)一部分堆叠性能的装置及方法。
背景技术
处理器(例如微处理器)为众所皆知且广泛应用在各式各样的产品上,从桌上型计算机到可携式电子产品,例如手机及个人数字助理(PDA)等,皆微处理器的应用范畴。如同所知,有些处理器其功能非常强大(例如尖端计算机工作站的处理器),而其它基本、较为便宜的应用及产品,其处理器则有较为简单的设计。
与平台无关的程序语言(platform-independent programminglanguages),例如升阳计算机(Sun Microsystem Inc.)的Java程序语言,和传统的平台特定语言(platform-specific languages)比较起来,其提供了不同的结构及不同的操作特性。与平台无关的程序语言其基本上使用的与平台无关的程序代码(如机器可读的指令,machine-readableinstructions),此程序代码适合执行于多种硬件平台(multiple hardwareplatforms),且与硬件平台的相关特定指令集(particular instruction set)无关。硬件平台通常包含具有一或多个处理器(例如微处理器或为控制器)的计算机系统,用以执行具有特定型式的特定指令集(particularinstruction set),此特定指令集有时亦称做原生指令集(native instructionset)。平台特定语言须使用一特定的平台编译器(compiler)以产生对应于一特定硬件平台的原生(native)程序代码。然而在一些应用例中,相同的原始码(source code)通常须透过不同的特定平台编译器,以编译成适合多种不同平台的程序代码,换句话说此种编译后的程序代码并非为与平台无关(platform-independent)的程序代码。
指令集中的一类包含了那些使用以堆叠式为基础的方法(stack-based approach)来储存及处理其所执行的数据项(date items)的指令集。支持这样堆叠式指令集(stack-based instruction set)的数据处理系统其内的堆叠,可能储存一序列的数据项,例如运算值(operand values),而这一序列的数据项以一特定次序被存放于堆叠中,然后再以该次序的反向从堆叠中移出。因此,最后被存放置堆叠中的数据项通常也会是第一个从堆叠中移出的数据项。以堆叠为基础的处理器(stack-basedprocessor)可提供一包含复数个可寻址(addressable)的堆叠入口(stackentries)的堆叠,其中,数据项将通过搭配一显示目前堆叠顶端位置的堆叠指标(stack-pointer),写入堆叠入口或从堆叠入口读出。堆叠指标将指明堆叠存储器中之一参考点,该参考点标示了最后存入堆叠的数据项,而堆叠的其它存取操作即可由此参考点位置做为操作参考基础。
堆叠式指令集(stack-based set)之一例子为由升阳计算机所提出的Java虚拟机器指令集(Java Virtual Machine instruction set)。Java程序语言试图提供一个环境,使得以Java写成的计算机软件能在许多不同的处理硬件平台上执行,而不需要针对不同的处理硬件平台改变Java软件。
另一类指令集包含那些使用以暂存器为基础的方法(register-basedapproach)来储存及处理其所执行的数据项的指令集。使用这种指令集的暂存器式系统(register-based systems)的一例子为由英国安谋所出产的(ARM Limited of Cambridge,England)ARM处理器。ARM的指令将基于储存于指令内的暂存器字段(register fields)所指定的处理器的暂存器的操作数,执行操作(例如数学处理、负载操作、储存操作等)。
如同所知,某些设计用来执行暂存器式指令(register-basedinstructions)的数据处理系统,亦支持堆叠式指令(stack-basedinstructions)的执行。在这样的系统中,堆叠式指令将通过暂存器排组(register bank)或暂存器集(register set)内的暂存器,转换成一序列可供处理器核心(processor core)执行的操作。那些操作所需的堆叠中的数据项从堆叠储存到暂存器排组的暂存器中,使其可被处理器核心所使用。一般而言,暂存器排组中的一组暂存器将被用来分配储存来自堆叠之一部份的堆叠数据项(在此亦称堆叠操作数)。暂存器集中不同的暂存器,从堆叠之一部份子堆叠中不同的位置,储存各自相对的堆叠操作数,此动作产生了复数个不同的对应状态(mappingstates)。这些对应状态将依据增加或移除暂存器集中的堆叠操作数的操作而有所改变,藉此,提供一个类似于堆叠内的堆叠指标的功能。这样的方法试图降低于暂存器式处理器的暂存器内提供堆叠式储存(stack-like storage)时所需要处理的功夫。
在这样的系统中,堆叠中的堆叠入口可以视为具有固定的大小,且每一暂存器集之中用来储存堆叠操作数的暂存器,可被安排只储存其所对应之一堆叠入口的数据。然而,此可用来储存堆叠操作数的处理器核心的暂存器,将因其尚须提供出其它暂存器以得到相关所需功能而受到限制,这些相关所需功能包括,例如安排堆叠式指令的解码,使其成为可在暂存器式处理器执行的操作,以及例如,为模拟其它控制值,如常见于堆叠式处理系统中的变量指标(variables pointer)或常数群(constant pool)指标等。这表示处理器内暂存器可供使用的数量有限,故储存于暂存器集中的堆叠操作数,可能需要被移回当初的堆叠,以提供空间给新的堆叠操作数放置于暂存器集中。
如同所知,使用处理器的暂存器来实现模拟一部份的存储器堆叠(memory stack)的做法,将较传统只采用存储器堆叠达到更佳的效率成果;此由于,数据于处理器的暂存器间的移动将较于暂存器与存储器间的移动来得快。然而,至今已知的实施或应用中通常将导致大量的暂存器间的传送(register-to-register transfer)操作。有鉴于此,亟需提供于暂存式处理器中模拟堆叠式操作的装置架构与方法,以达到减少暂存器间的传送操作,进而进一步提升效率。

发明内容
本发明特定的目的、优点、及新的特色部分将于说明书中陈述,通过对以下说明的检视或由发明的实施学习,本发明的相关部分对于本领域的专业技术人员将显而易见。本发明的目的及优点将通过附录的权利要求范围所指出的方法及组合而得。
为达到特定的优点及新的特色,本发明有别于传统提出一种于一处理器中模拟一部分堆叠的方法及装置。本发明的特定实施例提出了通过安排复数个处理器的暂存器来储存堆叠的顶端部位的装置和方法。其中,堆叠相关数据项将通过安排一指定目前的堆叠顶端暂存器的指标,以被安排至这些复数个暂存器中。当数据项由堆叠被推入或推出时,堆叠顶端指标亦将因而递增或递减。


图1A为说明传统技术的处理器管线内的某些特定处理阶层的方块图;图1B显示已知技术中用以模拟一堆叠存储器中之一部份的暂存器的方块图;图2为一类似于图1B的方块图,用以显示本发明一实施例与图1B的操作的差异;图3显示本发明一实施例所使用的特定产品的组成方块图;图4显示根据本发明一实施例所建构之一处理器管线的内部产品的方块图,其中内部产品包含有其相关的逻辑电路单元;
图5为一类似于图4的方块图,用以显示本发明之一另一实施例的特征;图6根据本发明一实施例的高阶层功能性操作(top-level functionaloperation)的流程图;图7根据本发明另一实施例的高阶层功能性操作的流程图;及图8根据本发明再一实施例的高阶层功能性操作的流程图。
图中符号说明R0-R7暂存器110 指令撷取单元120 解码单元130 执行单元132 中断讯号产生逻辑电路134 中断讯号136 分支讯号产生逻辑电路138 分支/返回讯号140 存储器存取单元150 暂存器写回单元160 暂存器档案162 暂存器166 PUSH指令167 ADD指令168 STR指令169 LDR指令201 模拟堆叠的复数个暂存器202 第一时序列204 第二时序列205 堆叠顶端指标206 第三时序列207 PUSH指令
208 ADD指令209 LDR指令215 堆叠顶端指标值控制逻辑电路217 其它的暂存器220 存储器225 将数据由暂存器移入/移出的控制逻辑电路230 撷取阶层231 编解码232 解码阶层234 暂存器存取阶层236 执行阶层240 由堆叠推入或推出的控制逻辑电路250 决定是否激活转移的控制逻辑电路260 来自分支预测失败的回馈265 监督堆叠指标执行状况的逻辑电路302~332 为流程方块图具体实施方法前述已就本发明各不同方面做概括性的描述,本发明的详细描述将参考其所附的图标进行的。本发明将配合图标做相关的描述,而此意不在对在公开的实施例做限制。相反的,本发明的精神及范畴所包含的相关改变、修正、及等价的事物为本文专利申请范围的定义所涵盖。
要注意的是下列附图用以举例说明本发明的实施例的特征及概观。由说明书应了解到各种替换或相关的实施例可以以本发明一致的精神与范畴来完成。
参阅图1A,其显示一用以执行相关指令的5阶层管线处理器(fivestage pipeline processor)架构的方块图。其它具有较多或较少管线阶层及/或不同的配置的管线架构,可由一致的原理及技术来实施。图1A的架构中,包含一指令撷取单元(instruction fetch unit)110、解码单元(adecode unit)120、执行单元(an execute unit)130、存储器存取单元(memory access unit)140、及暂存器写回单元(register writer unit)150等5阶层。除非在本文特别说明,否则文中所出现的这些单元(或逻辑电路方块)的操作为一般本领域的技术者所已知,不再加以描述。
如同所知,指令撷取单元110执行指令存储器撷取(instructionmemory fetches)。此单元用以决定位于暂存器档案(register file)160内的程序计数器(program counter)的值或内容以提供依序的指令执行(in-order instruction execution),以及提供意外向量(exceptionvectors)、分支(branch)操作、及返回(return)操作。指令撷取单元110亦被设定为决定所有意外及分支连结(branch-link)指令的返回地址,以及将返回地址写入或存入暂存器档案160内适当的暂存器中。指令撷取的寻址可透过实体地址(physical addresses)直接到存储器,或者透过指令高速缓存(instruction cache,图未显示)采用实体地址或虚拟地址的方式。虽然暂存器档案160内部架构未显示于图中,然而,暂存器档案160包含了处理器所使用的各种不同的暂存器。如同所知,这些暂存器可能包含了一般目的(general-purpose)暂存器或特殊目的(special-purpose)暂存器(例如,状态暂存器(status register)或程序计数器(program counter)等)。此外,暂存器档案160内的暂存器将可能以排组(banked)或未排组(unbanked,或称分散)的形式存在。如同所知,每一未排组的暂存器指可于所有的处理器操作模式所使用的单一实体暂存器(signal physical register)。一般而言,未排组的暂存器为一般目的的暂存器(general-purpose register),并无架构上的特殊用途。当然,这些操作将取决于程序设计者的规划,以确保当改变操作模式时或者在处理分支程序(branch routines)或其它次程序(subroutines)时暂储器的内容被储存(例如被推入至一堆叠),或当从一被改变的操作模式中返回时被复原(restore)。
暂存器档案160包含了复数个暂存器162(于此例中标记为R0到R7)以及其它复数个暂存器(未显示于图中)用以执行传统处理器的暂存器的功能及操作。暂存器162用以被设定和控制以模拟复数个(于此例为8个)位于堆叠顶端的存储器位置(memory locations)。在操作上,暂存器R0到R7将保留存储器堆叠顶端8个数据项。关于暂存器162其相关操作及处理流程以及其它相关的描述将于之后内容配合图1B叙述之。
解码单元120用以对来自指令撷取单元110的指令进行解码,并产生必要的控制讯号予执行单元130使其完成特定指令的执行。解码单元120的具体架构视处理器而定,但其一般的操作与组成为本领域的技术人员所了解。同样的,本领域的技术人员亦可了解,执行单元130的具体结构及相关操作亦须视处理器而定。一般而言,执行单元包含了用以实行如解码单元120产生的控制讯号所决定的相关指令操作的电路。
如图1A所示,此实施例的执行单元130包含了逻辑电路132以产生一或多个中断讯号(interrupt signals)134,以及包含逻辑电路136以产生一或多个分支讯号(branch signals)138。如同其名称所示,中断讯号134用以指示一中断状况(例如IRQ、FIRQ等)。同样地,分支讯号138指示一分支状况(亦或指示一来自分支的返回(return)状况)。这些讯号间接地显示了脱序指令(out-of-order instructions)。
存储器存取单元(memory access unit)140作为与外部数据存储器的介面,用来读写数据,以响应执行单元130所执行的指令。当然,并非所有的指令都需要存储器存取,但是对需要的指令而言,存储器存取单元140完成了对外部存储器必须的存取。这样的存储器存取可能是直接就进行存取,或通过实体(physical)或虚拟(virtual)地址透过一数据高速缓存(data cache)来完成。
最后,暂存器写回单元150负责将内容(指令执行的结果)储存或写入暂存器档案160中适当的暂存器。例如,一指令的执行情况将二个一般目的暂存器的内容相加,然后将相加后的内容存入第三个一般目的暂存器。执行这样的指令后,暂存器写回单元150将使得相加所得的值写入至此第三个一般目的暂存器中。
参考图1B,说明已知系统于模拟存储器堆叠的顶端部分时,暂存器162的操作情形。于图1B中,堆叠模拟(stack-emulation)暂存器162间数据的内容的移动,通过PUSH 166及ADD 167指令的执行来举例说明的。在此已知系统中,给定的暂存器(R0)被指定为存储器堆叠的顶端位置。而次一暂存器(R1)(与堆叠的顶端相邻)为下一个位置,等等。在第一时序列163中,暂存器包含了特定的内容,分别标记为A到H(字母A及H表示任意的数值),其中,暂存器R7的内容为A,暂存器R6的内容为B,依此类推直到暂存器R0,其内容为H。以PUSH指令166(或任和其它能使新的数据项倍加或推入存储器堆叠的指令)为例,被推入至堆叠的数据(J)储存于暂存器R0,其中暂存器R0将维持为堆叠数据的顶端。在内容J被推入堆叠暂存器顶端R0之前,其余每一暂存器的内容从暂存器R7开始,将被推移到其下一个暂存器中。在此情况下,暂存器R7的内容(A)将被储存到存储器中一个由存储器堆叠指标(memory stack pointer)所定义的位置;此操作将伴随着一储存R7的操作STR 168来执行。接着,暂存器R6的内容(B)将被推移到暂存器R7,而暂存器R5的内容(C)将被推移到暂存器R6,依此类推直到暂存器R0的内容(H)推移到暂存器R1。最后,内容(J)被推入到堆叠的顶端上的暂存器R0中。
继之,若接下来的指令为一ADD指令167,则存储器堆叠的顶端二个位置的数据(J及H)将被相加并储存在存储器堆叠顶端位置(暂存器R0)中。此将使得下一个暂存器R1空下来(因其内容已于执行ADD指令时被使用了)。然后,其余暂存器R2到R7的值将被往上推移,使得暂存器R2的内容(G)被推移到现在可用(空下来)的暂存器R1,而暂存器R3的内容(F)被推移到暂存器R2等,直到暂存器R7的内容(B)被推移到暂存器R6。这使得暂存器R7将空下来并可用以接收之前存到存储器中其它堆叠的数据(A),此操作将由一负载操作LDR 169执行的。
前述讨论的图1B一般传统通过复数个处理器的暂存器以模拟存储器堆叠操作的一简单例子;然而如同所知,其相关的设计及操作方法非常的繁复,其将耗费相当大的频宽和工作周期以处理不同暂存器间的数据推移(例如,推入(push)和跳出(pop)堆叠操作所引发的相关涟波般的推移动作(ripple shifting))。
鉴于上述,本发明提出于暂存器式处理器中模拟堆叠式操作的改良系统与方法,并提出相关实施例以说明。参考图2,为类似图1B的方块图,并通过相同的二个指令PUSH 207及ADD 208的操作来举例说明其与传统操作结果的差异。在此,8个暂存器201(R0到R7)的内容将透过202、204、206此三个连续的时序列,以分别说明各暂存器于在执行PUSH指令207及ADD指令208之前以及其响应此二指令后的内容变化情形。在第一时序列202中,暂存器R0到R7的内容与图1B的时序列163中的内容相同;且同样地,堆叠顶端指标205指向暂存器R0。于执行PUSH指令207(或任何使得数据被推入至堆叠顶端的相关指令)中,暂存器R7的内容(A)将被储存于存储器中的一个位置,如同图1B中的STR 168操作。然而,此实施例中,不同于图1B中的操作是,R0到R6的内容将维持不变;同时,堆叠指标205的顶端将改为指到暂存器R7,以取代传统暂存器间的数据内容做连续涟波式的推移动作。然后,被推入堆叠的内容(J)将被写入至暂存器R7。继之,执行ADD指令208时,目前被指定为模拟堆叠的顶端位置的暂存器R7的内容(J),将被加到下一个连续的堆叠位置R0。此时,堆叠顶端指标将接着移动(例如以递增或递减的方式移动)并再度指向暂存器R0,于是现在暂存器R0的内容(J+H)包含最后两个被推入到堆叠的元素之和。然后,就像图1B的操作169,一下载操作LDR 209将被执行以恢复之前储存到存储器的内容(A)至暂存器R7中。
相较图1B所示的操作,图2所示的模拟堆叠的处理器暂存器操作,其效能上将有相当大的提升。本实施例在处理相关指令中,如无论是处理从存储器堆叠推入(push)或推出(pop)数据的操作,借着有效地安排堆叠顶端指标205的递增或递减,将可得相当大的效益。亦即,通过有效地安排堆叠顶端指标205的位置,其避免了传统须执行大量的推移操作,以将不同暂存器的内容推移到其相邻的暂存器中。
描述完本发明的主要操作方式后,参考图3,其一用以说明本发明之一实施例的特定基本组成产品的方块图。配合图2的实施例所示,图3中复数个暂存器201用以模拟存储器堆叠的顶端位置。在图2中以八个暂存器为例,来模拟存储器堆叠的顶端八个位置。然而,暂存器的个数多寡依特定的设计或架构的各种不同要求因素而定,将可能采用较多或较少的暂存器来完成本发明的所述功能。堆叠顶端指标205用来指向复数个暂存器201中,含有目前存在存储器堆叠顶端内容的个暂存器。于实施例中,堆叠顶端指标205将以一下载有一数值的处理器暂存器实现的(其中当暂存器内原先的数值改变时,其将重新被下载一新数值)。在另一实施例中,堆叠顶端指标205将以一可逆计数器(up/down counter)实现的,并通过递增或递减操作以指向复数个暂存器201中的连续相继的暂存器之一。
在以八个暂存器模拟堆叠顶端八个位置的实施例中,反转计数器(rollover counter)中的至少三个位元将用以定义堆叠顶端指标205的内容。在一实施例中,计数器将进行反转以响应递增或递减的操作。例如,若此三个位元皆为1,其显示堆叠顶端指标的值为7(例如指到暂存器R7),当对计数值递增加1,则计数值将会数到8(亦或此三个位元皆变成0),藉此,其将有效地使得堆叠顶端指标205的值为0,以指向暂存器R0。然而,用以控制指标之值的相关逻辑电路的组成及实施方法,将因所给定的系统或架构的设计目标而定。
此外,存储器220用以保存或维持未被复数个暂存器201所模拟的堆叠的内容。于一实施例中,存储器220可以一般的方法来安排及实现。逻辑电路225用以安排或控制复数个暂存器201与存储器220间数据的移动。亦即,当堆叠束(stack-bound)数据超过所配置的暂存器空间时,其将被挪移到存储器220中的堆叠配置(stack-allocated)的部分。同理,当堆叠数据将被读入到配置的暂存器时(例如从由堆叠推出),则堆叠数据将由存储器220移到空置的暂存器空间中。
参阅图4,用以说明根据本发明的实施例的实施特征方块图。在此,图4以处理器管线的撷取230、解码232、暂存器存取(registeraccess)234、及执行236等阶层为例。于此实施例中,用以控制堆叠顶端指标205的逻辑电路215内嵌于解码器232。如同所知,编解码(compiled code)231将由撷取单元230进行读取。编解码231由一编译器所产生,其中此编译器用以对程序代码进行编译以供传统如图1A及图1B所示的相关装置执行。如前所述,一指定的暂存器(R0)总是维持为堆叠的顶端;因此,此用以控制堆叠顶端指标的逻辑电路215将执行一指标转移操作以转换暂存器R0,例如,将指标转移到目前指定为堆叠顶端位置的暂存器。举例来说,若此被指定的暂存器为暂存器R3,则暂存器R3的相关识别讯息将从解码器232传送到暂存器存取单元234,而非传送暂存器R0的讯息。接着,暂存器R3的内容将由堆叠模拟暂存器201得到并传送到执行单元236中。
在图4实施例中,逻辑电路240位于执行单元236内,用来完成关于将数据推入或推出存储器堆叠的相关执行。此逻辑电路240(或操作)的回馈讯号将传送到用以控制堆叠顶端指标的逻辑电路215中。在此实施例中,每一次在执行推入或推出存储器堆叠的操作时,逻辑电路215将必须随之对堆叠顶端指标的值进行递增或递减的操作,以指示出目前做为堆叠顶端位置的暂存器。此外,图4中的逻辑电路250用以决定是否激活(enable)或停止(disable)暂存器的转移操作(例如决定是否改变堆叠顶端指标的值等)。因此,堆叠顶端指标将可能如以上述的方法被控制改变,亦或不被改变。而在一实施例中,解码器232将设计为可于复数个不同的指令集下执行操作;例如,一第一指令集可包含16位的指令,第二指令集包含32位的指令,而第三指令集包含JAVA指令。在这样的实施例中,假设此16及32位的指令并非为堆叠式指令(stack-based instructions),则在执行这些传统指令的期间,上述本发明的相关操作将被停止(disabled),而本发明所述的操作将会于执行JAVA或其它堆叠式指令的操作期间激活(enabled)。
上述的实际例子,可以考虑手机的情况。当手机开启时(power-up),来自16或32位指令集的指令将被执行以控制手机的基本操作。然而,如果手机有能力可下载及执行以JAVA程序为基础的应用,则在这些指令程序(routine)的执行期间,上述发明的特性将可被激活(enable)。通过逻辑电路250与逻辑电路215的合作将得以控制本发明的特征的激活与停止。
参考图5,为类似于图4所举的例的方块图,用以说明本发明另一实施例的特征。在此实施例中,回馈260由执行单元236提供至解码器232中的逻辑电路265。特别的是,回馈260由执行单元236的分支预测逻辑电路(branch prediction logic)(图标未显示)所产生。如同所知,于处理器管线中,分支预测逻辑电路用以当发生于管线处理器稍早的撷取及/或解码操作遇到一分支指令时,预测(或猜测)伴随此分支接下来的指令流程(例如,此分支将发生与否)。当分支预测失败,基本上将会有来自执行单元236的回馈产生,且其将导致中间管线阶层(intermediate pipeline stages)的内容的清除(flush)。当执行本发明时,因中间管线阶层可能包含了暂时(interim)或称过渡的堆叠顶端暂存器位置,故管线的部分清除(a partial flush of the pipeline)亦必须确保堆叠顶端指标的完整性。因此,逻辑电路265设置于解码器232内以反映执行堆叠指标。当一部分管线清除动作实施时,逻辑电路265将用以确认是否逻辑电路215回复一适当的指标位置予堆叠顶端指标。从前面的相关描述知,不同的实施方法及实施例将可在与本发明的精神及范畴一致的情况下被提供,附录的权利要求范围并非用以限制此处所描述的实施例。
各种不同的方法将可依据本发明来实施,图6为说明一相关方法的流程图。根据本发明,如图6所示,通过安排处理器中的暂存器以模拟部分堆叠的方法被提出。首先,配置复数n个暂存器以模拟一存储器堆叠的顶端n个位置(302)。接着,建立一指标以指定n个暂存器中之一作为堆叠位置的顶端(304)。于响应一用以呼叫一待被推入堆叠之值的已解码指令时,此待被推入的值将被移动到目前被指标指定为堆叠顶端位置的暂存器中,而其余暂存器的值维持不动(306)。接着,堆叠顶端指标将被更新(update)以指定复数n个暂存器之一连续相继的暂存器作为堆叠位置目前的顶端(308)。要了解的是,此更新步骤(如上所述)将视系统较佳的操作流程而定,其可能发生在移动步骤之前或之后。当有其它额外的数据待被从堆叠中推入/推出时,前述的步骤将被重复操作之(310)。另外,其它额外的步骤亦可被提出,例如,储存一给定的暂存器的内容至一外部存储器,或从一外部存储器内之一堆叠位置,下载复数个暂存器中之一的内容;然上述的额外步骤并未特别显示于图中。在此操作中,复数个暂存器与外部存储器间的数据移动将与某些暂存器操作同时(平行)发生,或至少于一关键性时序路径(critical timing path)的外发生,因此不致于使暂存器操作产生延迟(delay)等操作瓶颈。
参考图7,其为说明本发明另一实施例的流程图。此实施例的方法中,于响应一用以呼叫一待被推入(push)堆叠之值的已解码指令时,目前被指定为堆叠顶端的暂存器(the top of stack register)内的数据将被传送出。接着,此待被推入堆叠之值将被移入到目前指定为堆叠暂存器顶端的暂存器(320)。然后,修正或更新堆叠暂存器顶端的指定(designation)以改以指定一连续相继的暂存器为堆叠暂存器顶端(322)。在一实施例中,堆叠暂存器顶端通过一指标来指定,而此指标可如前所述以一简单暂存器或一增/减量计数器(或可逆计数器)来实现。
参考图8,其为根据本发明类似于图7所示的通过安排复数个暂存器以模拟堆叠的部分顶端的流程图,与图7不同处为其说明响应一推出(pop)操作而非推入操作。此实施例方法中,于响应一用以呼叫一待被从堆叠推出(pop)之值的已解码指令时,目前被指定为堆叠顶端的暂存器(the top of stack register)内的内容将被传送出(例如,传送出至处理器管线的执行单元)(330)。接着,数据将从一外部存储器被传输入目前被指定为堆叠暂存器顶端位置的暂存器中(332)。然后,堆叠顶端指标将被更新以指定一连续相继的暂存器作为具有堆叠顶端的值的暂存器。
前述的内容并非用以详尽涵盖或是限制本发明公开的形式或内容。本发明的一些明显的相关修正或变化可经由上述的技术揭露而得。本文中所讨论的实施例为用以描述并提供本发明的原理的最佳例证,藉此使得本领域的技术人员可将本发明应用于各种不同的适合或特定意图的实施例以及各种不同的相关修正。当然,根据公平、合法授权的幅度来阐释时,所有相关的修正及变化涵盖于所述的专利权利要求的范畴中。
权利要求
1.一种安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,包含配置复数n个暂存器以模拟该堆叠的顶端n个位置;建立一指标以指定该n个暂存器之一为一堆叠的顶端;对一用以呼叫等待被推入该堆叠之一值之一指令进行解码;移动该值至目前被该指标指定作为堆叠位置的顶端的暂存器,并维持该复数n个暂存器中其它暂存器目前所存的值;及更新该指标以指定该n个暂存中另一个暂存器作为该堆叠位置的顶端。
2.如权利要求1所述的安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,该更新步骤包含下列可能变化的至少一种发生于该移动步骤之前及发生于该移动步骤之后。
3.如权利要求1所述的安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,更包含于移动该值进入该暂存器之前,将被指定为堆叠位置顶端的该暂存器内的数据传送出去。
4.权利要求3所述的安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,该传送步骤更特别包含传送该数据至一存储器中之一堆叠位置。
5.如权利要求3所述的安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,该传送步骤与其它暂存器的操作同时进行,或至少于其它暂存器操作之一关键性时序路径外进行。
6.如权利要求1所述的安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,更包含若该指令也呼叫一待从该堆叠推出的数据,则将该被指定为堆叠位置顶端的暂存器内的值移出,然后传送一新数据进入该被指定为堆叠位置顶端的暂存器。
7.如权利要求1所述的安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,该更新步骤的发生使得该复数个暂存器以一序列及循环的方式分别地被指定为该堆叠的顶端位置。
8.一种安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,包含配置复数n个暂存器以模拟该堆叠顶端的n个位置;建立一指标以指定该n个暂存器之一为该堆叠位置的顶端;对一用以呼叫一等待被推出该堆叠之一值的指令进行解码;从目前被该指标指定为该堆叠位置顶端的该暂存器中移动该值并维持该复数n个暂存器中其它暂存器目前所储存的值;及更新该指令以指定该n个暂存器的另一暂存器为该堆叠的顶端。
9.如权利要求8所述的安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,更包含将一数据从一存储器中之一堆叠位置传输出,并于该值从该暂存器中被移动后,将该数据传输至该被指定为该堆叠位置顶端的暂存器。
10.一种安排处理器中的暂存器以模拟部分堆叠的方法,其中于一处理器系统中配置复数个暂存器以模拟一堆叠的一顶端部分,其特征是,包含对一用以呼叫一待被推入一堆叠之一值的指令进行解码;将被指定为该堆叠的顶端位置之一暂存器内的数据传送出去;移动该值至目前被指定为该堆叠的顶端位置的该暂存器;及更新目前被指定为该堆叠的顶端位置的该暂存器以指定一不同的暂存器做为该堆叠的顶端。
11.如权利要求10所述的安排处理器中的暂存器以模拟部分堆叠的方法,其中于一处理器系统中配置复数个暂存器以模拟一堆叠的一顶端部分,其特征是,该传送该数据的步骤更包含传送该数据至一存储器中之一堆叠位置。
12.如权利要求10所述的安排处理器中的暂存器以模拟部分堆叠的方法,于一处理器系统中配置复数个暂存器以模拟一堆叠的一顶端部分,其特征是,该传送该数据的步骤与其它暂存器操作同时进行,或至少于其它暂存器操作之一关键性时序路径外进行。
13.如权利要求10所述的安排处理器中的暂存器以模拟部分堆叠的方法,其中于一处理器系统中配置复数个暂存器以模拟一堆叠之一顶端部分,其特征是,该更新步骤包含下列可能变化的至少一种发生于该传送步骤之前以及发生于该传送步骤之后。
14.如权利要求10所述的安排处理器中的暂存器以模拟部分堆叠的方法,其中于一处理器系统中配置复数个暂存器以模拟一堆叠的一顶端部分,其特征是,该更新步骤的发生使得该复数个暂存器以一序列及循环的方式分别地被指定为该堆叠的顶端位置。
15.如权利要求10所述的安排处理器中的暂存器以模拟部分堆叠的方法,其中于一处理器系统中配置复数个暂存器以模拟一堆叠的一顶端部分,其特征是,该输送及该移动步骤将影响或改变被指定为堆叠位置顶端的暂存器的数据,但其它暂存器的数据则维持不变或不动。
16.一种安排处理器中的暂存器以模拟部分堆叠的方法,其中于一处理器系统中配置复数个暂存器以模拟一堆叠的一顶端部分,其特征是,包含对一用以呼叫一待被从一堆叠推出之一值的指令进行解码;从目前被指定为该堆叠之一顶端位置之一暂存器移动该值;传送一数据至目前被指定为该堆叠的顶端位置的该暂存器;及更新目前被指定为该堆叠的顶端位置的该暂存器以指定一不同的暂存器做为该堆叠的顶端。
17.如权利要求16所述的安排处理器中的暂存器以模拟部分堆叠的方法,其中于一处理器系统中配置复数个暂存器以模拟一堆叠的一顶端部分,其特征是,该传送该数据的步骤更包含从一存储器中之一堆叠位置输出该数据。
18.一种安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,包含于一处理器中安排复数个暂存器藉以模拟复数个堆叠位置;于其它处理器暂存器与该复数个暂存器之间移动一数据,以响应一用以呼叫并使数据于该其它处理器暂存器与该堆叠位置间移动的指令;指定该复数个暂存器之一暂存器做为一堆叠位置的顶端;及当数据从该复数个暂存器中移入或移出以模拟堆叠位置时,更新该指定步骤以指定该复数个暂存器中的其它暂存器做为该堆叠位置的顶端。
19.如权利要求18所述的安排处理器中的暂存器以模拟部分堆叠的方法,其特征是,该更新步骤的发生使得该复数个暂存器以一序列及循环的方式个别地被指定为该堆叠的顶端位置。
20.一种安排处理器中的暂存器以模拟部分堆叠的装置,其特征是,包含一第一逻辑电路,以对一用以呼叫一待被推入一堆叠之一值的指令进行解码;一第二逻辑电路,以将目前被指定为该堆叠的顶端地址之一暂存器内的数据传送出去;一第三逻辑电路,以移动该值至目前被指定为该堆叠的顶端位置的该暂存器;及一第四逻辑电路,以更新目前被指定为该堆叠顶端位置的该暂存器以指定一不同的暂存器作为该堆叠的顶端。
21.一种安排处理器中的暂存器以模拟部分堆叠的装置,其特征是,包含一第一逻辑电路,以对一用以呼叫待被推出一堆叠之一值的指令进行解码;一第二逻辑电路,以将该值从目前被指定为该堆叠的顶端位置之一暂存器移出;一第三逻辑电路,以传送一数据进入目前被指定为该堆叠的顶端位置的该暂存器;及一第四逻辑电路,以更新目前被指定为该堆叠顶端位置的该暂存器以指定一不同的暂存器作为该堆叠的顶端。
22.一种安排处理器中的暂存器以模拟部分堆叠的装置,其特征是,包含一第一逻辑电路,以于一处理器安排复数个暂存器以模拟复数个堆叠位置;一第二逻辑电路,以于其它处理器暂存器与该复数个暂存器的暂存器间移动一数据,以响应一用以呼叫并使数据于该其它处理器暂存器与该堆叠位置间移动的指令;一第三逻辑电路,以指定该复数个暂存器中之一个暂存器做为一堆叠位置的顶端;及一第四逻辑电路,以当数据从该复数个暂存器中移入或移出以模拟该堆叠位置时,更新该指定以指定该复数个暂存器中的其它暂存器做为该堆叠位置的顶端。
23.一种安排处理器中的暂存器以模拟部分堆叠的装置,其特征是,包含一执行逻辑电路,以从复数个指令集之中执行指令;一显示逻辑电路,以显示一目前的指令是否为一Java指令集的指令;一安排逻辑电路,以根据该显示逻辑电路,于该处理器内安排复数个暂存器以模拟一堆叠的顶端位置;一指定逻辑电路,以于目前时刻指定该复数个暂存器中之一作为一堆叠顶端位置;及一更新逻辑电路,以当响应用以呼叫数据从该堆叠移入或移出的指令时,更新该被指定为堆叠顶端位置的暂存器,其中,对于任何从该堆叠移出或移入的单一数据移动操作而言,只有该复数个暂存器中的一个暂存器的数据被改变,而该复数个暂存器中的剩余的暂存器的数据值将不被改变或移动。
24.如权利要求23所述的安排处理器中的暂存器以模拟部分堆叠的装置,其特征是,该更新逻辑电路的该更新步骤使得该复数个暂存器被以一序列及循环的方式个别地指定为该堆叠顶端位置。
25.如权利要求23所述的安排处理器中的暂存器以模拟部分堆叠的装置,其特征是,该显示逻辑电路包含一单一控制位及该逻辑电路包含一指标。
26.如权利要求23所述的安排处理器中的暂存器以模拟部分堆叠的装置,其特征是,更包含一第一逻辑电路以当该堆叠大小变大并超过该复数个暂存器所能容纳的大小时,安排该复数个暂存器及外部存储器间的数据交换。
27.如权利要求26所述的安排处理器中的暂存器以模拟部分堆叠的装置,其特征是,该安排逻辑电路安排该交换操作于一关键性时序路径外进行,使得被执行指令所定义的功能性处理操作将不会被延迟。
全文摘要
本发明有关在一处理器中模拟一部分堆叠的方法及装置。本发明的特定实施例通过安排复数个处理器的暂存器以储存欲模拟的堆叠的顶端部分内容。其中,通过安排一用以指向一目前的堆叠顶端的暂存器的指标,相关的数据将被安排于这些复数个暂存器中。当数据被从堆叠推入或推出时,堆叠顶端的指标之值亦将随着递增或递减。本发明提供暂存式处理器中模拟堆叠式操作的装置架构与方法,可以达到减少暂存器间的传送操作,进而进一步提升效率。
文档编号G11C5/00GK1673953SQ20051006555
公开日2005年9月28日 申请日期2005年4月15日 优先权日2004年4月19日
发明者查理斯·F·雪洛 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1