CN1230739C - 用于执行堆栈操作的装置和方法以及用于产生地址的装置 - Google Patents

用于执行堆栈操作的装置和方法以及用于产生地址的装置 Download PDF

Info

Publication number
CN1230739C
CN1230739C CNB001329375A CN00132937A CN1230739C CN 1230739 C CN1230739 C CN 1230739C CN B001329375 A CNB001329375 A CN B001329375A CN 00132937 A CN00132937 A CN 00132937A CN 1230739 C CN1230739 C CN 1230739C
Authority
CN
China
Prior art keywords
stack pointer
pointer
stack
updated
memory location
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.)
Expired - Fee Related
Application number
CNB001329375A
Other languages
English (en)
Other versions
CN1295279A (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.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
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 Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of CN1295279A publication Critical patent/CN1295279A/zh
Application granted granted Critical
Publication of CN1230739C publication Critical patent/CN1230739C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

用于在处理系统内执行堆栈操作的方法和装置。第一和第二堆栈指针分别指向堆栈顶部及其后面的一个位置。第一和第二堆栈指针分别在弹出和压入操作中被使用。当选择一个堆栈指针时,它替代另外一个堆栈指针。被选择的堆栈指针被提供给一个堆栈存储器模块,并且也被更新。在弹出操作中,被更新的堆栈指针指向在被选择堆栈指针指向的一个存储器位置前的一个存储器位置,在压入操作中,被更新的堆栈指针指向在这个地址后面的一个存储器地址。

Description

用于执行堆栈操作的装置和方法 以及用于产生地址的装置
技术领域
本发明涉及在处理系统中用于执行堆栈操作的装置和方法,特别地,用于允许高速堆栈操作的装置和方法。
背景技术
许多处理系统具有存储器模块,在存储器模块中实现了堆栈。一个堆栈是一个数据结构,其中最近被保存的一个值被首先检索出来。某些堆栈进行生长时,向一个存储器模块的低端地址/存储器位置进行扩展,而某些堆栈向存储器模块的高端地址进行扩展。所以,堆栈的顶部是一个具有最低或者最高堆栈地址的存储器位置,用于保存最近的数据。
有两个与一个堆栈相关的基本操作-一个压入操作,其中一个新的值被添加到堆栈中,和一个弹出操作,其中检索位于堆栈顶部的值。新的值被保存在堆栈顶部后面的一个存储器地址中。
通常,一个堆栈指针指向堆栈的顶部或者指向在堆栈顶部后面的一个存储器位置。第一类型的堆栈指针使能快速的弹出操作,而第二类型的堆栈指针的压入操作速度快。当一个堆栈朝高端地址进行生长,并且堆栈指针指向在堆栈顶部后面的存储器位置时,一个弹出操作包括将堆栈指针减1,并且移动被保存在堆栈顶部的值,一个压入操作包括将数据写入到堆栈指针所指向的存储器位置,并且将堆栈指针增加1。这个现有技术的方法所花费的时间相对较长。
一般在中断中使用堆栈操作。通常,保存了处理系统的状态的多个寄存器,被压入到堆栈中,并且最后从堆栈中弹出这些寄存器。当许多寄存器保存了处理系统状态时,执行一个中断所花费的时间将相当长。
所以,需要一个高速和一个改进的装置和方法来执行堆栈操作。
发明内容
一般,本发明提供了用于执行高速堆栈操作的一个装置和一个方法。本发明提供两个堆栈指针,一第一指针指向堆栈的顶部,而一第二指针指向在堆栈顶部后面的存储器位置。在弹出和压入操作期间,分别使用两个堆栈指针中相应的一个堆栈指针。在使用一个堆栈指针以前,不需要增加或者减少一个堆栈指针。在第一时钟周期期间,执行下列步骤:决定是否需要执行一个弹出操作,并且响应于确定需要执行一个弹出操作,相应地产生调用弹出操作的一个控制指示符号;在第二时钟周期的第一阶段期间,当选择一第一堆栈指针时,它被作为指向保存这个堆栈的存储器模块的一个被选择堆栈指针,并且它替代第二堆栈指针,并且被更新。被更新的堆栈指针指向在被选择堆栈指针前一个的一个存储器位置。被更新的堆栈指针替代前面作为被选择堆栈指针而提供的第一堆栈指针。当选择一第二堆栈指针时,它被作为指向保存这个堆栈的存储器的一个被选择堆栈指针,并且它替代第一堆栈指针,并且被更新。被更新的堆栈指针指向在被选择堆栈指针后一个的一个存储器位置。在第二时钟周期的第一阶段期间,被更新的堆栈指针替代前面作为被选择堆栈指针而提供的第二堆栈指针。
还公开了用于在一个处理系统内执行堆栈操作的装置。所述装置包括:解码器,用于解码一个指令并且相应地产生调用堆栈操作的一个控制指示符号;第一堆栈指针寄存器,用于保存一第一堆栈指针;第二堆栈指针寄存器,用于保存一第二堆栈指针;加法器,连接到所述解码器,用于接收一个被选择堆栈指针和一个常数,并且根据所述控制指示符号产生一个被更新的堆栈指针;和选择逻辑,连接到第一和第二堆栈指针,连接到所述加法器和连接到所述解码器,以用于接收所述控制指示符号,并且相应地从第一和第二堆栈指针中选择出被选择的堆栈指针,将所述被选择堆栈指针发送到存储没有被选择的堆栈指针的堆栈指针寄存器,将所述被选择堆栈指针发送到所述加法器和发送到其中实现了一个堆栈的一个存储器单元,并且从加法器将被更新的堆栈指针发送到存储被选择的堆栈指针的堆栈指针寄存器。
还公开了用于用于产生地址的装置。所述装置包括:一第一堆栈指针寄存器,用于保存一第一堆栈指针;一第二堆栈指针寄存器,用于保存一第二堆栈指针;多个寄存器,用于保存与第一和第二堆栈指针不同的存储器位置;两个复用器,用于从第一堆栈指针寄存器,第二堆栈指针寄存器和多个寄存器中选择出一个被选择寄存器。该存储设备还包括一个加法器,连接到复用器,以用于接收被选择寄存器的堆栈指针和一个常数,并且产生需要被发送到被选择寄存器的一个被更新堆栈指针;一个开关,连接到第一和第二堆栈指针寄存器,用于允许第一堆栈指针被写入到第二堆栈指针寄存器,并且用于允许第二堆栈指针被写入到第一堆栈指针寄存器;一个控制单元,连接到第一和第二堆栈指针寄存器,连接到加法器和连接到解码器,被调节成接收一个指令,用于解码所述指令,并且用于相应地产生和提供控制信号和一个控制指示符号。
应注意,在详细描述中所采用的特定术语和表达式和关于特定结构与操作的细节,和附图仅仅是用于示例性的,并不对后附权利要求书中所描述的、本发明的范围有任何限制作用。
附图说明
虽然在后附的权利要求书中具体地指出了本发明,但是通过下面详细的描述,并且联系附图将公开本发明的其它特征,其中:
图1是根据本发明的一个优选实施方式,用于在一个处理系统中执行堆栈操作的一个装置的一个框图。
图2是根据本发明的一个实施方式,具有一个地址产生单元的一个处理器的一个框图;
图3是根据本发明的一个实施方式,一个地址产生单元的一个框图;和
图4以流图的形式,显示了根据本发明,用于执行堆栈操作的一个方法。
具体实施方式
图1是根据本发明的一个优选实施方式,用于在一个处理系统中执行堆栈操作的一个装置10的一个框图。
装置10包括:解码器20,用于解码一个指令并且相应地产生调用堆栈操作的一个控制指示符号(即,-PUSH/POP)30。第一堆栈指针寄存器22,用于保存一第一堆栈指针32。第二堆栈指针寄存器26,用于保存一第二堆栈指针34。加法器/减法器28,用于接收一个被选择堆栈指针36和一个常数38并且根据控制指示符号30产生一个被更新的堆栈指针40。选择逻辑24,用于接收控制指示符号30并且相应地从第一和第二堆栈指针32和34中选择出一个被选择的堆栈指针36,向没有被选择的堆栈指针寄存器发送被选择的堆栈指针36,向加法器/减法器28发送被选择的堆栈指针36和从加法器/减法器28向被选择的堆栈指针寄存器发送被更新的堆栈指针40。
选择逻辑24经过总线21连接到解码器20,以接收控制指示符号30,经过总线23和25连接到第一堆栈指针寄存器22,经过总线27和29连接到第二堆栈指针寄存器26,经过总线33和31连接到加法器/减法器28。
为了方便,假设第一堆栈指针32指向堆栈的顶部,第二堆栈指针34指向在堆栈顶部后面的存储器位置。当控制指示符号30调用一个弹出操作时,逻辑24选择调用堆栈指针寄存器22。被选择的堆栈指针36,与第一堆栈指针32相等,被提供到加法器/减法器28,并且也被提供到一个存储器模块(图1中没有显示),其中实现了一个堆栈。第一堆栈指针32被写入到第二堆栈指针寄存器26。加法器/减法器28通过从被选择堆栈指针32中减去常数38来产生被更新的堆栈指针40,被更新的堆栈指针将被写入到第一堆栈指针寄存器22。常数38反映了在堆栈顶部和堆栈顶部后面的存储器位置之间的偏移。
当控制指示符号30调用一个压入操作时,选择逻辑24选择第二堆栈指针寄存器26。被选择堆栈指针36与第二堆栈指针34相等,并且被提供到加法器/减法器28,也被提供到存储器模块。第二堆栈指针36被写入到第一堆栈指针寄存器22。加法器/减法器28通过从被选择堆栈指针36增加常数38,来产生被更新的堆栈指针40,被更新的堆栈指针40将被写入到第二堆栈指针寄存器26。
图2是根据本发明的一个实施方式,具有一个地址产生单元的一个处理系统110的一个框图。优选,处理系统110的特征是具有一个超长指令码字(即,-VLIW),但是这不是必要的。一个VLIW被并行地用于处理系统中。每一个VLIW包括多个指令,指令是被处理系统110的各种部分以一个并行的方式被执行。
处理系统110具有内部存储器模块220,222,一个地址寄存器文件226,一个程序序列器224,数据寄存器文件228和229,地址产生单元(AGU)230和231,和一起被标识为232的乘法和累加(MAC)单元。AGU 230和231经过内部总线260连接到地址寄存器文件226。MAC单元232经过内部总线262连接到数据寄存器文件228和229。程序序列器224经过指令总线224连接到AGU 230和231和MAC232。
处理系统110进一步包括一个程序总线238,一第一数据总线240和一第二数据总线242。程序总线238经过总线246连接到程序序列器224,经过总线272和282分别连接到存储器模块220,222。数据总线240和242经过总线248和250连接到地址寄存器文件226,经过总线252,254连接到数据寄存器文件228,229。数据总线240和242经过总线274-280连接到存储器模块220,222。
程序序列器224从存储器模块220和222中的一个拾取一个VLIW,并且将VLIW的部分分发到MAC 232,AGU 230和231。AGU 230和231提供在下一个操作周期期间,将被拾取的数据或者VLIW的存储器模块220和222地址。通常,一个堆栈被实现在存储器模块220和222中的一个中。
图3是根据本发明的一个实施方式,处理系统110内的一个地址产生单元(即,-AGU)230和地址寄存器文件226的一部分280的一个框图。
AGU 230包括控制单元264,寄存器N1 271和加法器/减法器28。地址寄存器文件226的部分280包括多个寄存器R0,R1,R2,R3 40-43,第一堆栈指针寄存器(即,-SPR1)22,第二堆栈指针寄存器(即,-SPR2)26,一个开关46,和两个复用器IN_MUX 48和OUT_MUX 47。控制单元264从程序序列器224接收一个指令,解码这个指令,并且向部分280,向加法器/减法器28和向N1 271提供控制指示符号30和多个控制信号,以控制一个被更新地址的产生,例如一个被选择的堆栈指针和一个被更新的堆栈指针。
控制单元264经过总线282和285向IN_MUX 48和向OUT_MUX47发送控制信号,以选择哪一个寄存器被包括在一个被更新地址的产生中。IN_MUX 48经过总线49连接到电阻R0,R1,R2,R3 40-43,SPR1 22和SPR2 26,并且根据它接收的这个控制信号,它选择哪一个寄存器将经过总线248和250将其内容提供到加法器/减法器28和提供到一个存储器模块222和22。加法器/减法器28经过总线70接收被选择寄存器的内容,接收一个控制信号INC/DEC 50来或者调用一个加法操作或者一个减法操作和或者常数38或者一个SIZE 52信号,并且产生一个被更新的地址。控制单元264经过总线73提供INC/DEC 50。控制单元264经过总线79或者是N1 271经过总线39来提供常数38。控制单元264提供SIZE 52。
加法器/减法器28经过总线76,OUT_MUX 47和总线248向被选择的寄存器产生一个被更新的地址。
在一第一时钟周期内,控制单元264解码程序序列器224所提供的一个指令,并且判断是否需要产生一个被更新的地址。
不是一个堆栈指针的一个被更新地址的产生通常或者包括从R0-R3 40-43中的一个寄存器的内容中增加或者减去SIZE 52。SIZE52是在一个指令的解码阶段期间被产生的,并且反映了与这个指令相关的一个操作参数的长度。例如,指令“MOVE.2L(R1)+”包括与R1 41的内容加8相等的一个被更新地址的产生。“2L”意味着一个8字节长的数据字,这样SIZE=8。R1 41被选择,并且INC/DEC=1。指令“MOVE.B(R2)-”包括与R2 42的内容减1相等的一个被更新地址的产生。“B”意味着一个单字节长的数据字,这样SIZE=1。R242被选择,并且INC/DEC=0。
如果需要执行一个压入操作,控制单元264产生控制信号并且将控制信号发送到IN_MUX 48和发送到OUT_MUX 47,以选择SPR2 26和相应地选择第二堆栈指针34,产生控制指示符号30并且将控制指示符号30发送到开关46,以指示在一第二时钟周期的一第一阶段期间,SPR2 26的内容需要被写入到SPR1 22。控制单元264产生INC/DEC 50(INC/DEC=1),并且将INC/DEC 50(INC/DEC=1)提供到加法器/减法器28。
在一第二时钟周期的一第一阶段期间,经过开关46向SPR1 22发送第二堆栈指针34,经过IN_MUX 48向加法器/减法器28发送第二堆栈指针34。第二堆栈指针34也被提供到存储器模块220和222中的一个存储器模块。加法器/减法器28通过将常数38增加到被选择堆栈指针36来产生被更新的堆栈指针40。
在一第二时钟周期的一第二阶段期间,经过OUT_MUX 47向SPR2 26发送被更新的堆栈指针40。
如果需要执行一个弹出操作,控制单元264产生控制信号并且将控制信号发送到IN_MUX 48和发送到OUT_MUX 47,以选择SPR1 22和相应地选择第一堆栈指针32,产生控制指示符号30并且将控制指示符号30发送到开关46,以指示在一第二时钟周期的一第一阶段期间,被保存在SPR1 22中的第一堆栈指针32需要被写入到SPR2 26。控制单元264进一步产生INC/DEC 50(INC/DEC=0),并且将INC/DEC 50(INC/DEC=0)提供到加法器/减法器28。
在一第二时钟周期的一第一阶段期间,经过开关46向SPR2 26发送第一堆栈指针32,经过IN_MUX 48向加法器/减法器28发送第一堆栈指针32。第一堆栈指针32也被提供到存储器模块220和222中的一个存储器模块,在这个存储器模块中实现了一个堆栈。加法器/减法器28通过将从被选择堆栈指针36减去常数38来产生被更新的堆栈指针40。
在一第二时钟周期的一第二阶段期间,经过OUT_MUX 47向SPR1 22发送被更新的堆栈指针40。
图4以一个流图的形式,显示了用于在一个处理系统中执行堆栈操作的一个方法300。矩形框310,320,330,340和350表示方法300的步骤。如路径315和325所指示的,步骤310的后面可以是步骤320和330。如路径335和345所显示的,步骤320和330的后面可以是步骤340和350。如路径355和365所显示的,步骤340和350后面可以是步骤310。
为了方便,假设在一个具有流水线结构的处理系统中执行方法300。指令在多个级中被执行,例如程序预拾取级,程序拾取级,调度级和解码级,地址产生级,和执行级。步骤310是在调度和解码级被执行的。步骤320和350是在地址产生级期间被执行的。为了方便解释,图4仅显示了这两个级。
方法300包括步骤:
在步骤310期间和在一第一时钟周期期间,解码一个指令并且判断是否需要执行一个压入操作和一个弹出操作中的一个堆栈操作,并且相应地产生调用这个堆栈操作的一个控制指示符号。
如路径315和335所指示的,如果这个堆栈操作是执行步骤320和340的一个弹出操作。
在步骤320期间和在第二时钟周期的第一阶段期间,提供指向堆栈顶部的一个被选择堆栈指针36。用这个被选择的堆栈指针代替指向这个堆栈指针后面的一个存储器位置的一个指针。产生指向在被选择堆栈指针36所指向的一个存储器位置前一个存储器位置的一个被更新堆栈指针40。将被选择堆栈指针36发送到其中实现了一个堆栈的一个存储器模块,以允许从被选择堆栈指针36所指向的存储器位置中读取数据。
为了方便,假设在步骤320期间和在第二时钟周期的第一阶段期间,提供从第一堆栈指针寄存器22中的一个被选择堆栈指针36,将被选择堆栈指针36写入到第二堆栈指针寄存器26,将被选择堆栈指针36发送到加法器/减法器28,通过从被选择堆栈指针36中减去常数38来产生一个被更新的堆栈指针40,并且向其中实现了一个堆栈的一个存储器模块发送被选择的堆栈指针36,以使在执行级期间可以从堆栈的顶部读取出数据。
在步骤340期间和在第二时钟周期的第二阶段期间,用被更新的堆栈指针40代替在第二时钟周期的第一阶段期间被提供的被选择堆栈指针36。为了方便,在步骤340期间和在第二时钟周期的第二阶段期间,将被更新的堆栈指针40写入到第一堆栈指针寄存器22。
如路径325和345所显示的,如果堆栈操作是一个压入操作,执行步骤330和350。
在步骤330期间和在第二时钟周期的第一阶段期间,提供指向堆栈顶部后面一个存储器位置的一个被选择堆栈指针36。用这个被选择的堆栈指针36代替指向这个堆栈指针顶部的一个指针。产生指向在被选择堆栈指针36所指向的一个存储器位置后一个存储器位置的一个被更新堆栈指针40。将被选择堆栈指针36发送到其中实现了一个堆栈的一个存储器模块,以允许数据可以被写入到被选择堆栈指针36所指向的存储器位置。为了方便,假设在步骤330期间和在第二时钟周期的第一阶段期间,提供从一第二堆栈指针寄存器36中的一个被选择堆栈指针36,将被选择堆栈指针36写入到第一堆栈指针寄存器22,将被选择堆栈指针36发送到加法器/减法器28,通过将被选择堆栈指针36加上常数38来产生一个被更新的堆栈指针40,并且向其中实现了一个堆栈的一个存储器模块发送被选择的堆栈指针36,以使在执行级期间数据可以被写入到堆栈的顶部后面的存储器位置。
在步骤340期间和在第二时钟周期的第二阶段期间,用被更新的堆栈指针40代替在第二时钟周期的第一阶段期间被提供的被选择堆栈指针36。方便地,在步骤350期间和在第二时钟周期的第二阶段期间,将被更新的堆栈指针40写入到第二堆栈指针寄存器26。
如路径355和365所指示的,步骤340和350的后面是步骤310。
这样,这里描述了一个实施方式,这个实施方式包括用于执行堆栈操作的一个装置和一个方法的至少一个优选实施方式。该领域内的技术人员将很清楚,可以用很多方法来修改所公开的目的,可以设想许多实施方式与这里所详细提出的和上面所描述的不同。
所以,上面所公开的目的仅能够被认为是示例性的,并不具有任何限制性,并且在法律所允许的最大程度上,应认为后附权利要求书覆盖了所有这样的修改和在本发明的精神和范围内的其它实施方式。本发明的范围是由下面权利要求书的最大程度可允许理解和与前面详细描述不同的其等效来决定。

Claims (7)

1.用于在处理系统内执行弹出操作的方法(300),该方法包括:
在第一时钟周期(310)期间,执行下列步骤:
决定是否需要执行一个弹出操作,并且
响应于确定需要执行一个弹出操作,相应地产生调用弹出操作的一个控制指示符号;
在第二时钟周期的第一阶段(320)期间,提供一个被选择堆栈指针,被选择堆栈指针指向一个堆栈的顶部,用被选择的堆栈指针来替代指向堆栈顶部后面的一个存储器位置的一个指针,产生指向被选择堆栈指针指向的存储器位置前一个存储器位置的一个被更新指针,并且向其中实现了一个堆栈的一个存储器单元发送被选择的堆栈指针,以使可以从被选择堆栈指针所指向的存储器位置中读取出数据;和
在第二时钟周期的第二阶段(340)期间,用被更新的堆栈指针代替在第二时钟周期的第一阶段期间提供的被选择堆栈指针。
2.用于在处理系统内执行压入操作的方法(300),该方法包括:
在第一时钟周期(310)期间,执行下列步骤:
解码一个指令,
决定是否需要执行一个压入操作,并且
响应于确定需要执行一个压入操作,相应地产生调用压入操作的一个控制指示符号;
在第二时钟周期的第一阶段(330)期间,提供一个被选择堆栈指针,被选择堆栈指针指向一个堆栈的顶部后面的一个存储器位置,用被选择的堆栈指针来替代指向堆栈顶部的一个指针,产生指向被选择堆栈指针指向的存储器位置后面一个存储器位置的一个被更新指针,并且向其中实现了一个堆栈的一个存储器单元发送被选择的堆栈指针,以使数据可以被写入到被选择堆栈指针所指向的存储器位置;和
在第二时钟周期的第二阶段(350)期间,用被更新的堆栈指针代替在第二时钟周期的第一阶段期间被提供的被选择堆栈指针。
3.用于在处理系统内执行堆栈操作的方法(300),所述方法包括:
在第一时钟周期(310)期间,解码一个指令,并且决定是否需要执行一个压入操作和一个弹出操作中的一个堆栈操作,并且相应地产生调用堆栈操作的一个控制指示符号;
如果所述堆栈操作是一个弹出操作,就执行包括下面的步骤:
在第二时钟周期的第一阶段(320)期间,提供一个被选择堆栈指针,被选择堆栈指针指向一个堆栈的顶部,用被选择的堆栈指针来替代指向堆栈顶部后面的一个存储器位置的一个指针,产生指向被选择堆栈指针指向的存储器位置前一个存储器位置的一个被更新指针,并且向其中实现了一个堆栈的一个存储器单元发送被选择的堆栈指针,以使可以从被选择堆栈指针所指向的存储器位置中读取出数据;
在第二时钟周期的第二阶段(340)期间,用被更新的堆栈指针代替在第二时钟周期的第一阶段期间被提供的被选择堆栈指针;
如果所述堆栈操作是一个压入操作,就执行包括下面的步骤:
在第二时钟周期的第一阶段(330)期间,提供一个被选择堆栈指针,被选择堆栈指针指向一个堆栈的顶部后面的一个存储器位置,用被选择的堆栈指针来替代指向堆栈顶部的一个指针,产生指向被选择堆栈指针指向的存储器位置后面一个存储器位置的一个被更新指针,并且向其中实现了一个堆栈的一个存储器单元发送被选择的堆栈指针,以使数据可以被写入到被选择堆栈指针所指向的存储器位置;和
在第二时钟周期的第二阶段(350)期间,用被更新的堆栈指针代替在第二时钟周期的第一阶段期间被提供的被选择堆栈指针。
4.用于在一个处理系统内执行堆栈操作的装置(10),所述装置包括:
解码器(20),用于解码一个指令并且相应地产生调用堆栈操作的一个控制指示符号;
第一堆栈指针寄存器(22),用于保存一第一堆栈指针;
第二堆栈指针寄存器(26),用于保存一第二堆栈指针;
加法器(28),连接到所述解码器,用于接收一个被选择堆栈指针(36)和一个常数(38),并且根据所述控制指示符号(30)产生一个被更新的堆栈指针(40);和
选择逻辑单元(24),连接到第一和第二堆栈指针寄存器,连接到所述加法器和连接到所述解码器,以用于接收所述控制指示符号,并且相应地从第一和第二堆栈指针中选择出被选择的堆栈指针(36),将所述被选择堆栈指针发送到存储没有被选择的堆栈指针的堆栈指针寄存器,将所述被选择堆栈指针发送到所述加法器和发送到其中实现了一个堆栈的一个存储器单元,并且从加法器将被更新的堆栈指针发送到存储被选择的堆栈指针的堆栈指针寄存器。
5.用于产生地址的装置,所述装置包括:
一第一堆栈指针寄存器(22),用于保存一第一堆栈指针(32);
一第二堆栈指针寄存器(26),用于保存一第二堆栈指针(34);
多个寄存器(40),(41),(42),(43),用于保存与第一和第二堆栈指针不同的存储器位置;
两个复用器(48)(47),用于从第一堆栈指针寄存器,第二堆栈指针寄存器和多个寄存器中选择出一个被选择寄存器;
一个加法器(28),连接到复用器,以用于接收被选择寄存器的堆栈指针和一个常数,并且产生需要被发送到被选择寄存器的一个被更新堆栈指针;
一个开关(46),连接到第一和第二堆栈指针寄存器,用于允许第一堆栈指针被写入到第二堆栈指针寄存器,并且用于允许第二堆栈指针被写入到第一堆栈指针寄存器;
一个控制单元(264),连接到第一和第二堆栈指针寄存器,连接到加法器,被调节成接收一个指令,用于解码所述指令,并且用于相应地产生和提供控制信号和一个控制指示符号。
6.如权利要求5的所述装置,其中当一个指令调用一个弹出操作时,所述控制单元发送控制信号,这些控制信号使两个复用器选择第一堆栈指针寄存器,使所述开关将第一堆栈指针写入到第二堆栈指针寄存器,使所述加法器通过从被选择堆栈指针来减去一个常数来产生一个被更新的堆栈指针。
7.如权利要求5的所述装置,其中当一个指令调用一个压入操作时,所述控制单元发送控制信号,这些控制信号使两个复用器选择第二堆栈指针寄存器,使所述开关将第二堆栈指针写入到第一堆栈指针寄存器,使所述加法器通过将一个常数增加到被选择堆栈指针来产生一个被更新的堆栈指针。
CNB001329375A 1999-11-09 2000-11-08 用于执行堆栈操作的装置和方法以及用于产生地址的装置 Expired - Fee Related CN1230739C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/436,891 US6654871B1 (en) 1999-11-09 1999-11-09 Device and a method for performing stack operations in a processing system
US09/436,891 1999-11-09

Publications (2)

Publication Number Publication Date
CN1295279A CN1295279A (zh) 2001-05-16
CN1230739C true CN1230739C (zh) 2005-12-07

Family

ID=23734241

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB001329375A Expired - Fee Related CN1230739C (zh) 1999-11-09 2000-11-08 用于执行堆栈操作的装置和方法以及用于产生地址的装置

Country Status (5)

Country Link
US (1) US6654871B1 (zh)
JP (1) JP2001184211A (zh)
KR (1) KR100875377B1 (zh)
CN (1) CN1230739C (zh)
TW (1) TW535089B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10121745A1 (de) * 2001-05-04 2002-11-14 Systemonic Ag Verfahren und Anordnung zu einem Stack mit einem, in Datengruppen mit mehreren Elementen aufgeteilten Speicher
IL152006A0 (en) * 2002-09-30 2003-07-31 Rabintex Ind Ltd Shell for ballistic helmet
CN100353335C (zh) * 2003-03-28 2007-12-05 联发科技股份有限公司 增加处理器中存储器的方法
US7111149B2 (en) * 2003-07-07 2006-09-19 Intel Corporation Method and apparatus for generating a device ID for stacked devices
WO2005096136A1 (en) * 2004-03-31 2005-10-13 Intel Corporation Stack caching using code sharing
US7290153B2 (en) 2004-11-08 2007-10-30 Via Technologies, Inc. System, method, and apparatus for reducing power consumption in a microprocessor
JP2006309508A (ja) * 2005-04-28 2006-11-09 Oki Electric Ind Co Ltd スタック制御装置およびその方法
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US7454572B2 (en) * 2005-11-08 2008-11-18 Mediatek Inc. Stack caching systems and methods with an active swapping mechanism
US7647482B2 (en) * 2006-03-31 2010-01-12 Intel Corporation Methods and apparatus for dynamic register scratching
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
EP2150889A1 (en) * 2007-04-10 2010-02-10 Cambridge Consultants Limited Data processing apparatus
US8055886B2 (en) * 2007-07-12 2011-11-08 Texas Instruments Incorporated Processor micro-architecture for compute, save or restore multiple registers and responsive to first instruction for repeated issue of second instruction
JP5044387B2 (ja) * 2007-12-26 2012-10-10 ルネサスエレクトロニクス株式会社 情報処理装置及びそのスタックポインタ更新方法
WO2010004240A1 (en) * 2008-07-10 2010-01-14 Cambridge Consultants Limited Data processing apparatus, for example using modes
US9588881B2 (en) * 2011-05-16 2017-03-07 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) for code space and a portion of the stack memory space having an instruction set optimized to minimize processor stack accesses
US8934279B2 (en) * 2011-05-16 2015-01-13 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) for code space and a portion of the stack memory space
US9910823B2 (en) 2011-05-16 2018-03-06 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) having an instruction set optimized to minimize memory fetch
US9697002B2 (en) * 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
CN112486897A (zh) * 2019-09-11 2021-03-12 中国科学院微电子研究所 一种高速缓存系统及单周期多数据的入栈、出栈操作方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58221446A (ja) * 1982-06-18 1983-12-23 Hitachi Ltd スタツクアドレス選択方式
JPS62128337A (ja) * 1985-11-30 1987-06-10 Nec Corp スタツク制御方式
US5142635A (en) 1989-04-07 1992-08-25 Intel Corporation Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer
JPH0752576B2 (ja) 1990-07-19 1995-06-05 株式会社東芝 スタックメモリ
US5381360A (en) * 1993-09-27 1995-01-10 Hitachi America, Ltd. Modulo arithmetic addressing circuit
US5706491A (en) 1994-10-18 1998-01-06 Cyrix Corporation Branch processing unit with a return stack including repair using pointers from different pipe stages
KR970705077A (ko) * 1995-05-26 1997-09-06 존 엠. 클락3세 팝(POP) 명령 실행 장치 및 방법(Apparatus and Method for Executing Pop Instructions)
US5687336A (en) 1996-01-11 1997-11-11 Exponential Technology, Inc. Stack push/pop tracking and pairing in a pipelined processor
KR100246465B1 (ko) * 1996-11-06 2000-03-15 김영환 마이크로프로세서 스택 명령어의 수행사이클을 줄이기 위한 장치 및 그 방법
US5958039A (en) * 1997-10-28 1999-09-28 Microchip Technology Incorporated Master-slave latches and post increment/decrement operations

Also Published As

Publication number Publication date
US6654871B1 (en) 2003-11-25
KR100875377B1 (ko) 2008-12-23
KR20010051522A (ko) 2001-06-25
JP2001184211A (ja) 2001-07-06
CN1295279A (zh) 2001-05-16
TW535089B (en) 2003-06-01

Similar Documents

Publication Publication Date Title
CN1230739C (zh) 用于执行堆栈操作的装置和方法以及用于产生地址的装置
US7925804B2 (en) FIFO device and method of storing data in FIFO buffer
US11249764B2 (en) Flushing in a microprocessor with multi-step ahead branch predictor and a fetch target queue
CN103827818B (zh) Fifo加载指令
US11593117B2 (en) Combining load or store instructions
US8458445B2 (en) Compute units using local luts to reduce pipeline stalls
KR100955433B1 (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
CN101916180A (zh) Risc处理器中执行寄存器类型指令的方法和其系统
GB2518289A (en) A modified return stack buffer
CN1680917A (zh) 用于跟踪完成表中更大量未完成指令的方法和处理器
CN104424128B (zh) 变长指令字处理器系统和方法
GB2496934A (en) Multi-stage register renaming using dependency removal and renaming maps.
US7509472B2 (en) Collapsible front-end translation for instruction fetch
US20040003219A1 (en) Loop control circuit and loop control method
CN1296836C (zh) 用以于嵌入程序只读存储器中实施修正机制的电路与方法
CN107870780B (zh) 数据处理装置和方法
JP2006155374A (ja) 分岐予測装置および分岐予測方法
CN111459550B (zh) 具高度领先分支预测器的微处理器
US7742544B2 (en) System and method for efficient CABAC clock
CN1523507A (zh) 嵌入顺序缓冲器的计算机系统及其方法
EP1622034A2 (en) Apparatus and method for controlling address conversion buffer
CN1269026C (zh) 寄存器移动操作
CN111459551B (zh) 具高度领先分支预测器的微处理器
CN115373628B (zh) 先进先出存储器、系统、装置、设备及数据读取方法
CN108399146B (zh) Flash控制器、取指令方法及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: FREEDOM SEMICONDUCTORS CO.

Free format text: FORMER OWNER: MOTOROLA, INC.

Effective date: 20040806

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20040806

Address after: Texas in the United States

Applicant after: FreeScale Semiconductor

Address before: Illinois Instrunment

Applicant before: Motorola, Inc.

C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20051207

Termination date: 20131108