CN101194228A - 微处理器中的有效子程序返回 - Google Patents
微处理器中的有效子程序返回 Download PDFInfo
- Publication number
- CN101194228A CN101194228A CNA2006800207138A CN200680020713A CN101194228A CN 101194228 A CN101194228 A CN 101194228A CN A2006800207138 A CNA2006800207138 A CN A2006800207138A CN 200680020713 A CN200680020713 A CN 200680020713A CN 101194228 A CN101194228 A CN 101194228A
- Authority
- CN
- China
- Prior art keywords
- return
- register
- instruction
- readable memory
- memory medium
- 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
Links
- 238000012360 testing method Methods 0.000 claims abstract description 63
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000004044 response Effects 0.000 claims abstract description 8
- 230000004087 circulation Effects 0.000 claims description 41
- 230000008859 change Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 239000013256 coordination polymer Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
Abstract
本发明提供一种用于执行子例行程序返回操作的方法和媒体。与返回操作(98)中的其它操作(92、94)并行地执行测试操作(88、90)。响应于单个指令(86)来执行这些测试操作(88、90)和所述返回操作(96、98)。
Description
技术领域
本发明涉及微处理器中的子程序返回操作。
背景技术
程序通常以执行特定任务的子例行程序为特征。在执行任务之后,程序流从子例行程序返回到主程序。一种用于执行子例行程序返回的常见机制涉及有条件地或无条件地将返回地址寄存器的内容移动到程序计数器中且接着继续程序执行。也可用可代表布尔值的恒定文字更新返回值寄存器。另一种用于子程序返回的方法是从堆栈“弹出”返回地址并将其输入到程序计数器中,且从那点继续程序执行。此操作还可将任何假脱机输出寄存器文件内容从堆栈弹出到寄存器文件中。
这些用于执行子例行程序返回的方法采用若干循环来执行。在图1中,当在典型管线型CPU中执行传统的返回(“RET”)指令时,需要五个循环10来执行所述指令。在图2中,典型的管线型CPU含有程序计数器(“PC”)42和指令存储器44。所述CPU具有分离不同管线级的四个不同管线寄存器46、52、56和60。(寄存器46与52之间的)指令解码级含有用于对当前指令解码且产生控制信号的控制/解码单元(“CU”)48以及寄存器文件50两者。(寄存器52与56之间的)执行级含有算术逻辑单元(“ALU”)54。(寄存器56与60之间的)存储器级含有数据存储器58。继续参看图1,在循环1期间,在指令获取(“IF”)级12中,获取RET指令(方框22)。在循环2中,在指令解码(“ID”)级14中,产生正确的控制信号且从寄存器文件读取返回地址寄存器(方框24)。在循环3中,在执行(“EX”)级16中,通过算术逻辑单元(“ALU”)无变化地写入返回地址寄存器内容(方框26)。在循环4期间,在存储器(“MEM”)级中,经过数据存储器写入返回地址寄存器内容。最后,在循环5中,在回写(“WB”)20级中,将返回地址寄存器内容写入到程序计数器(“PC”)且清洗管线(方框30)。一旦管线得以清洗,管线便不会含有任何指令,直到从程序存储器读取返回地址处的指令为止。因此,在管线清洗过程中浪费了若干个时钟循环。
对于从存储器中的堆栈弹出返回地址寄存器的返回指令(“RETMEM”)来说存在类似问题。如图3所示,在循环1中,在IF级中,获取RETMEM指令(方框32)。在循环2期间,在ID级中,产生正确的控制信号。在循环3中,在EX级期间,经过ALU将控制信号路由到数据存储器(方框36)。在循环4中,在MEM级中,从数据存储器读取返回地址(方框38)。最后,在循环5中,在WB级中,将从存储器读取的返回地址写入到PC且清洗管线(方框40)。如同图1中所论述的返回指令,在管线清洗之后浪费了若干个循环。
提供一种较为有效的子例行程序返回操作将是有利的。
发明内容
在示范性实施例中,获取需要返回操作且基于返回值寄存器的内容设置状态旗标的指令。与用以处理返回指令所需的至少一个其它操作并行地设置状态旗标。在以下情况之一发生之前设置状态旗标:i)返回地址寄存器的内容移动到程序计数器中;ii)返回地址从堆栈处弹出并进入程序计数器中。在另一实施例中,处理器可读存储媒体促使处理器执行此子例行程序返回操作。
在本发明的又一示范性实施例中,子例行程序返回操作将返回地址放置到程序计数器中。对返回值寄存器执行测试操作;与用以处理返回操作所需的至少一个其它操作并行地执行所述测试操作。程序流改变为目标地址。响应于单个指令来执行上文提到的步骤中的每一者。在一个实施例中,处理器可读存储媒体存储促使处理器执行此子例行程序返回操作的指令。
附图说明
图1是展示如何在现有技术中执行返回指令的图。
图2是现有技术中的管线型CPU的方框图。
图3是展示如何在现有技术中执行从存储器中的堆栈弹出返回地址寄存器的返回指令的图。
图4是本发明示范性实施例中的管线型CPU的方框图。
图5是展示本发明实施例中返回指令的示范性执行的图。
图6是展示在本发明实施例中执行从存储器中的堆栈弹出返回地址寄存器的返回指令的示范性执行的图。
具体实施方式
提供一种更有效的子例行程序返回操作,其中在子例行程序返回操作期间根据返回值寄存器的测试(在处理器的状态寄存器中)更新状态旗标。(在现有技术中,响应于单独的指令执行测试操作,例如对返回值寄存器的测试。)在一个实施例中,与用以执行单个指令(例如条件返回指令)以及并入有返回操作的单个指令的操作并行地设置状态旗标。所述指令存储在处理器可读媒体中,所述媒体包括可存储或传送信息的任何媒体,例如电子电路、半导体存储器装置、ROM、快闪存储器、软盘、致密盘、光盘等。
这些指令可由现有硬件执行。在图4中,用于执行这些指令的示范性CPU包括PC 62和指令存储器64。所述CPU含有分离不同级的四个管线寄存器(IF/ID 66、ID/EX 70、EX/MEM 74和MEM/WB 78)。寄存器66与70之间的ID级含有用于对当前指令解码且产生正确的控制信号的控制/解码单元68。ID级还含有寄存器文件132。寄存器70与74之间的EX级含有ALU 72和旗标寄存器84。寄存器74与78之间的MEM级含有数据存储器76。当地址已经达到WB级(在寄存器78之后)时,管线已经被清洗且获取地址被写入到PC 62。多路复用器118确定将哪个地址写入到寄存器文件或程序计数器(这在下文中更详细地论述)中。在其它实施例中,处理器可具有不同特征,例如数据转发;如上文提到的,图4中所描述的CPU是示范性的,且不是可执行本文所描述的更有效子例行程序返回操作的唯一处理器。
在本发明的一个实施例中,在用更有效子例行程序返回操作执行指令期间与其它操作并行地执行测试操作。在一个实施例中,图5所示,当执行返回(“return_with_test”)指令时,在循环1期间在IF级中,获取return_with_test指令(方框86)。在循环2中,return_with_test已经进入ID级;产生正确的控制信号且从寄存器文件读取返回地址寄存器(方框88)。在循环3中,将return_with_test保持在ID级中并持续额外的循环(在一个实施例中,这可在解码级中通过将指令分成两个“微操作”来完成:一个微操作执行测试操作,另一个微操作执行返回操作);在此第二循环中,从寄存器文件读取返回值寄存器且产生用以指示ALU执行测试操作的控制信号(方框90)。在循环3中在EX级中,通过ALU无变化地写入返回地址内容(方框92)。在循环4期间在EX级中,ALU对应于值寄存器的测试来设置旗标(方框94)。(在此实施例中,根据返回值寄存器内容与零的比较来设置状态旗标。此实施例中所使用的状态旗标指示溢出(“V”)、负值(“N”)、零结果(“Z”)和算术或逻辑操作之后的进位(“C”)。可在其它实施例中使用不同状态旗标且/或在其它实施例中可以不同方式设置状态旗标。)在循环4期间在MEM级中,经过数据存储器写入返回地址寄存器内容(方框96)。在循环5期间在WB级中,将返回地址寄存器内容写入到PC且清洗管线(方框98)。已经使用原本将由于管线清洗而不被使用的循环来执行测试操作。
在另一实施例中,可在执行从存储器中的堆栈处弹出返回地址寄存器的返回指令(“pop_with_test”)期间执行测试操作。在图6中,在循环1中在IF级中,获取pop_with_test指令(方框100)。在循环2期间在ID级中,产生正确的控制信号(方框102)。在循环3中,将pop_with_test保持在ID中持续一额外的循环(在一个实施例中,在ID级中将所述指令解码成两个微操作(子例行程序返回操作和测试操作));从寄存器文件中读取返回值寄存器,且产生用以指示ALU执行测试操作的控制信号(方框104)。在循环3中在EX级中,经过ALU将控制信号路由到数据存储器(方框106)。在循环4中在EX级中,ALU设置对应于返回值寄存器的测试的旗标(方框108)。在相同循环期间,在MEM级中,从数据存储器读取返回地址(方框110)。在循环5中在WB级中,将从存储器读取的返回地址写入PC且清洗管线(方框112)。
本发明的其它实施例可不同于上文论述的实施例。这些实施例可能需要较少或额外的时钟循环来执行指令。其它实施例可能需要不同硬件来执行指令。其它实施例可并入不同子程序返回操作和指令中。
图5和6分别是“return_with_test”和“pop_with_test”指令的示范性实施例。在“return_with_test”指令中,连同测试返回值寄存器中的值一起执行“返回”。“测试”测试指定的寄存器且相应地设置条件码旗标。“pop_with_test”指令连同测试返回值寄存器中的值一起执行“弹出”(将字从堆栈加载到指定寄存器或程序计数器中;弹出到PC清洗管线且开始从自堆栈加载的地址中获取指令)。
从控制/解码单元要求各种信号。回到图4,在一个实施例中需要以下信号:
pcmux_sel 114——用以选择将用顺序程序地址还是用返回指令给出的地址来更新程序计数器的选择器信号。
wbmux_sel 116——回写级用以确定将把哪个地址写入到寄存器文件或程序计数器中的选择器信号。如果信号是逻辑“0”,那么地址来自来自EX/MEM管线级的ALU结果。如果信号是逻辑“1”,那么地址来自数据存储器。
as_ctrl 120——用于选择ALU中的加法器将对来自寄存器文件的操作数执行减法还是加法的控制信号。
zeromux_sel 122——用以将ALU的输入操作数B迫使为整数值零的信号。
readreg1 124——针对操作数1的寄存器文件寄存器编号。
readreg2 126——针对操作数2的寄存器文件寄存器。
loadflag 128——用以允许状态寄存器更新旗标设定的控制信号。
writeaddr 130——针对其中写回结果的寄存器的寄存器文件寄存器编号。
以下表格列举了在RET指令的循环中来自控制/解码单元的示范性输出。在所述表格中识别以下寄存器:
R12——返回值寄存器。对此寄存器执行测试操作。
LR——链接寄存器。在完成子程序之后保持地址返回。LR还可被称为返回地址寄存器(RAR)。
PC——程序计数器。保持当前执行的指令的地址。
以下表格列举了在return_with_test指令的循环中来自控制/解码单元的示范性输出。
循环 | 控制信号输出 | 文本指令 |
1 | pcmux_sel=1wbmux_sel=0as_ctrl=相加zeromux_sel=0readreg1=X(无关值)readreg2=LRloadflag=0writeadr=X(无关值) | 将LR的内容写入PC寄存器中,使得将从此地址重新开始指令获取 |
2 | pcmux_sel=0wbmux_sel=X(无关值)as_ctrl=相减zeromux sel=0readreg1=X(无关值)readreg2=返回值寄存器loadflag=1writeadr=X(无关值) | 通过将返回值寄存器的内容与值0进行比较来测试返回值寄存器的内容。将所得的旗标写入旗标寄存器中。 |
以下表格列举在pop_with_test指令的循环中来自控制/解码单元的示范性输出。
循环 | 控制信号输出 | 文本指令 |
1 | pcmux sel=1wbmux sel=1as_ctrl=相加zeromux_sel=0readreg1=X(无关值)readreg2=指针寄存器loadflag=0writeadr=X(无关值) | 将从存储器读取的返回地址的内容写入PC寄存器中,使得将从此地址重新开始指令获取。返回地址驻存在由指针寄存器指向的存储器地址中。 |
2 | pcmux_sel=0wbmux_Sel=X(无关值)as_ctrl=相减zeromux_sel=0readreg1=X(无关值)readreg2=返回值寄存器loadflag=1writeadr=X(无关值) | 通过将返回值寄存器的内容与值0进行比较来测试返回值寄存器的内容。将所得旗标写入旗标寄存器中。 |
“return_with_test”和“pop_with_test”指令可执行作为其它指令的一部分。举例来说,“return_with_test”指令可执行作为条件返回指令的一部分,其中如果指定条件为真,那么存在从子例行程序的返回。将值移动到返回寄存器中,测试返回值,且设置旗标。此指令的特定实例是ATMEL AVR32指令组中的“ret{cond4}”指令。以下伪码描述ret{cond4}指令(SP是堆栈指针寄存器):
操作:
I.If(cond4)
If(Rs!={LR,SP,PC})
R12←Rs;
else if(Rs==LR)
R12←-1;
else if(Rs==SP)
R12←0;
else
R12←1;
Test R12 and set flags;
PC←LR;
语法:
I.ret{cond4}Rs
操作数:
I.cond4∈{eq,ne,cc/hs,cs/lo,ge,lt,mi,p1,ls,gt,le,hi,vs,vc,qs,al}
s∈{0,1,...,15}
状态旗标:
设置旗标作为操作CP R12,0的结果。
V:V←0
N:N←RES[31]
Z:Z←(RES[31:0]==0)
C:C←0
以下表格解释上文所使用的一些助记符和针对“加载多个寄存器”指令的伪码,下文中:
助记符 | 含义 |
eq | 相等 |
ne | 不相等 |
cc/hs | 较高或相同 |
cs/lo | 较低 |
ge | 大于或等于 |
It | 小于 |
mi | 负/负的 |
pl | 正/正的 |
Is | 较低或相同 |
gt | 大于 |
le | 小于或等于 |
hi | 较高 |
vs | 溢出 |
vc | 无溢出 |
qs | 饱和 |
al | 始终 |
操作CP R12,0是没有运算的比较或减法操作。在此特定情况下,操作结果=R12-0。
其中可采用“return_with_test”操作的另一指令是来自AVR32指令组的“加载多个寄存器”指令。此指令将由寄存器指针指向的连续字加载到所述指令中所指定的寄存器中。可加载PC,从而导致跳跃到所加载的目标地址。如果PC被加载,那么测试R12中的返回值,且更新旗标。视情况可将返回值设置为-1、0或1。以下伪码描述此指令(SP是堆栈指针):
I.Loadaddress←Rp;
if Reglistl6[PC]==1 then
if Rp==PC then
Loadaddress←SP;
PC←*(Loadaddress++);
if Rp==PC then
if ReglistlS[LR,R 12]==B′00
R12←0;
else if Reglistl6[LR,R12]==B′01
R12←1;
else
R12←1;
Test R12 and update flags;
else
Test R12 and update flags;
if Reglistl6[LR]==1
LR←*(Loadaddress++);
if Reglistl6[SP]==1
SP←*(Loadaddress++);
if Reglistl6[R12]==1
R12←*(Loadaddress++);
else
if Reglistl6[LR]==1
LR←*(Loadaddress++);
if Reglistl6[SP]==1
SP←*(Loadaddress++);
if Reglistl6[R12]==1
R12←*(Loadaddress++);
for(i=11 to 0)
if Reglistl6[i]==1then
Ri←*(Loadaddress++);
if Opcode[++]==1then
if Rp==PC then
SP←Loadaddress;
else
Rp←Loadaddress;
语法:
I.1 dm Rp{++},Reglistl6
操作数:
I.Reglistl6∈{RO,R1,R2,...,R12,LR,SP,PC}
p∈{0,1,...,15}
状态旗标:
仅当Reglistl6[PC]==1时才更新旗标。
将其设置作为操作CP R12,0的结果。
V:V←0
N:N←RES[31]
Z:Z←(RES[31:0]==0)
C:C←0
可采用采用“pop_with_test”操作的类似指令,其中将SP所指向的字加载到所述指令中所指定的寄存器中。
其中可采用“pop_with_test”操作的指令是来自AVR32指令组的从堆栈弹出多个寄存器(“POPM”)指令。此指令将SP所指向的连续字加载到所述指令中所指定的寄存器中。
尽管上文已经引用展示可如何在不同指令中采用子例行程序返回操作的特定实例,但其它实施例可将子例行程序操作并入不同指令中。
所述更有效子例行程序返回操作的一个优点是代码大小的减小,因为由于可由返回操作隐含地执行测试操作而可消除明确的“测试返回寄存器”指令。另一个优点是执行时间得以减少,因为并行地执行返回寄存器测试与程序将返回的指令的获取。
可在RISC和CISC机器两者中采用上文描述的指令和操作。
尽管已经依据特定示范性实施例描述了本发明,但所属领域的技术人员将认识到,可在不脱离本发明原理的情况下对所述实施例作出变化和增添。举例来说,返回操作可能需要更多或更少的循环来执行,或者返回操作可以是不同指令的一部分,或者执行返回操作的处理器可能具有不同结构。在另一实施例中,可添加更多硬件,因而返回操作可在一个循环中完成(即,在一个循环中完成响应于单个指令而执行的两个微操作)。
Claims (27)
1.一种用于执行子例行程序返回操作的方法,所述方法包含:
a)获取需要所述返回操作的指令;以及
b)与处理所述返回操作所需的至少一个其它操作并行地基于返回值寄存器的内容来设置状态旗标,在以下之一者发生之前设置所述状态旗标:
i)将返回地址寄存器的内容移动到程序计数器中;或
ii)从堆栈弹出返回地址并将其进入所述程序计数器中。
2.根据权利要求1所述的方法,其中仅当测试操作确定满足返回条件时,才将所述返回地址寄存器的所述内容移动到所述程序计数器中,或从所述堆栈弹出返回地址并使其进入所述程序计数器中。
3.根据权利要求1所述的方法,其中将所述返回操作分成两个微操作,一个微操作用于执行所述返回操作,另一个微操作用于执行测试操作。
4.根据权利要求1所述的方法,其中与通过微处理器的算术逻辑单元写入返回地址寄存器的内容并行地设置所述状态旗标。
5.根据权利要求1所述的方法,其中与经过所述微处理器的算术逻辑单元将控制信号路由到所述微处理器的数据存储器并行地设置所述状态旗标。
6.根据权利要求1所述的方法,其中响应于单个指令来执行步骤a)和b)。
7.一种处理器可读存储媒体,其存储在由处理器执行时促使所述处理器执行用于执行子例行程序返回操作的方法的指令,所述方法包含:
a)获取需要所述返回操作的指令;以及
b)与处理所述返回指令所需的至少一个其它操作并行地基于返回值寄存器的内容设置状态旗标,在以下之一者发生之前设置所述状态旗标:
i)将返回地址寄存器的内容移动到程序计数器中;或
ii)从堆栈弹出返回地址并将其弹入所述程序计数器中。
8.根据权利要求7所述的处理器可读存储媒体,其中仅当测试操作确定满足返回条件时,才将所述返回地址寄存器的所述内容移动到所述程序计数器中,或从所述堆栈弹出返回地址并使其进入所述程序计数器中。
9.根据权利要求7所述的处理器可读存储媒体,其中将所述返回操作分成两个微操作,一个微操作用于执行所述返回操作,另一个微操作用于执行测试操作。
10.根据权利要求7所述的处理器可读存储媒体,其中与通过微处理器的算术逻辑单元写入返回地址寄存器的内容并行地设置所述状态旗标。
11.根据权利要求7所述的处理器可读存储媒体,其中与经过所述微处理器的所述算术逻辑单元将控制信号路由到所述微处理器的数据存储器并行地设置所述状态旗标。
12.根据权利要求7所述的处理器可读存储媒体,所述方法进一步包含在将所述返回地址寄存器的所述内容或所述返回地址写入所述程序计数器中之前清除管线。
13.根据权利要求7所述的处理器可读存储媒体,其中响应于单个指令来执行步骤a)和b)。
14.一种用于执行子例行程序返回操作的方法,其包含:
a)将返回地址放置到程序计数器中;
b)对返回值寄存器执行测试操作,与处理返回操作所需的至少一个其它操作并行地执行所述测试操作;
c)将程序流改变为目标地址;以及
d)响应于单个指令执行步骤a)、b)和c)。
15.根据权利要求14所述的方法,其中仅在所述测试操作确定满足返回条件的情况下才执行所述改变所述程序流的步骤。
16.根据权利要求14所述的方法,其中在指令解码级中保持所述子例行程序返回操作持续一额外的循环。
17.根据权利要求14所述的方法,其中与通过微处理器的算术逻辑单元写入返回地址寄存器的内容并行地设置所述测试操作的状态旗标。
18.根据权利要求14所述的方法,其中与将控制信号路由到微处理器的位于所述微处理器的算术逻辑单元的下游处的数据存储器并行地设置所述测试操作的状态旗标。
19.根据权利要求14所述的方法,其进一步包含加载多个寄存器。
20.根据权利要求14所述的方法,其进一步包含在返回值寄存器中设置返回值。
21.一种处理器可读存储媒体,其存储由处理器执行时促使所述处理器执行用于执行子例行程序返回操作的方法的指令,所述方法包含:
a)将返回地址放置到程序计数器中;
b)对返回值寄存器执行测试操作,与处理返回操作所需的至少一个其它操作并行地执行所述测试操作;
c)将程序流改变为目标地址;以及
d)响应于单个指令执行步骤a)、b)和c)。
22.根据权利要求21所述的处理器可读存储媒体,其中仅在所述测试操作确定满足返回条件的情况下才执行所述改变所述程序流的步骤。
23.根据权利要求21所述的处理器可读存储媒体,其中在指令解码级中保持所述返回操作持续一额外的循环。
24.根据权利要求21所述的处理器可读存储媒体,其中与通过微处理器的算术逻辑单元写入返回地址寄存器的内容并行地设置所述测试操作的状态旗标。
25.根据权利要求21所述的处理器可读存储媒体,其中与将控制信号路由到所述微处理器的位于所述微处理器的算术逻辑单元的下游处的数据存储器并行地设置所述测试操作的状态旗标。
26.根据权利要求23所述的处理器可读存储媒体,所述方法进一步包含加载多个寄存器。
27.根据权利要求23所述的处理器可读存储媒体,所述方法进一步包含在返回值寄存器中设置返回值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/149,611 | 2005-06-10 | ||
US11/149,611 US20060282821A1 (en) | 2005-06-10 | 2005-06-10 | Efficient subprogram return in microprocessors |
PCT/US2006/020427 WO2006135549A2 (en) | 2005-06-10 | 2006-05-25 | Efficient subprogram return in microprocessors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101194228A true CN101194228A (zh) | 2008-06-04 |
CN101194228B CN101194228B (zh) | 2011-10-19 |
Family
ID=37525517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800207138A Expired - Fee Related CN101194228B (zh) | 2005-06-10 | 2006-05-25 | 执行微处理器和微控制器的子例行程序的快速返回的装置 |
Country Status (7)
Country | Link |
---|---|
US (2) | US20060282821A1 (zh) |
EP (1) | EP1891519B1 (zh) |
JP (1) | JP2009508180A (zh) |
KR (1) | KR20080014062A (zh) |
CN (1) | CN101194228B (zh) |
TW (1) | TW200709043A (zh) |
WO (1) | WO2006135549A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551749B (zh) * | 2009-05-11 | 2012-08-22 | 中国科学院计算技术研究所 | 随机测试程序生成方法和系统以及设计验证方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060282821A1 (en) * | 2005-06-10 | 2006-12-14 | Renno Erik K | Efficient subprogram return in microprocessors |
CN100442226C (zh) * | 2007-07-02 | 2008-12-10 | 美的集团有限公司 | 微波炉返回键的设定方法 |
US10802990B2 (en) * | 2008-10-06 | 2020-10-13 | International Business Machines Corporation | Hardware based mandatory access control |
WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
CN105122206B (zh) | 2013-03-15 | 2018-11-09 | 英特尔公司 | 用于支持推测的访客返回地址栈仿真的方法和装置 |
WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0731603B2 (ja) * | 1984-11-21 | 1995-04-10 | ノビツクス | Forth特定言語マイクロプロセサ |
US4814976C1 (en) * | 1986-12-23 | 2002-06-04 | Mips Tech Inc | Risc computer with unaligned reference handling and method for the same |
US4926355A (en) * | 1987-07-02 | 1990-05-15 | General Datacomm, Inc. | Digital signal processor architecture with an ALU and a serial processing section operating in parallel |
US4891754A (en) * | 1987-07-02 | 1990-01-02 | General Datacomm Inc. | Microinstruction sequencer for instructing arithmetic, logical and data move operations in a conditional manner |
US5193205A (en) * | 1988-03-01 | 1993-03-09 | Mitsubishi Denki Kabushiki Kaisha | Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address |
JP2796590B2 (ja) * | 1991-08-07 | 1998-09-10 | 三菱電機株式会社 | メモリ装置及びそれを使用したデータ処理装置 |
US5386563A (en) * | 1992-10-13 | 1995-01-31 | Advanced Risc Machines Limited | Register substitution during exception processing |
JP3499252B2 (ja) * | 1993-03-19 | 2004-02-23 | 株式会社ルネサステクノロジ | コンパイル装置及びデータ処理装置 |
US5925125A (en) * | 1993-06-24 | 1999-07-20 | International Business Machines Corporation | Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions |
GB2281986B (en) * | 1993-09-15 | 1997-08-06 | Advanced Risc Mach Ltd | Data processing reset |
JP3543181B2 (ja) * | 1994-11-09 | 2004-07-14 | 株式会社ルネサステクノロジ | データ処理装置 |
US5701493A (en) * | 1995-08-03 | 1997-12-23 | Advanced Risc Machines Limited | Exception handling method and apparatus in data processing systems |
WO1997013201A1 (en) * | 1995-10-06 | 1997-04-10 | Advanced Micro Devices, Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
US5926642A (en) * | 1995-10-06 | 1999-07-20 | Advanced Micro Devices, Inc. | RISC86 instruction set |
US5778208A (en) * | 1995-12-18 | 1998-07-07 | International Business Machines Corporation | Flexible pipeline for interlock removal |
US5884089A (en) * | 1997-10-14 | 1999-03-16 | Motorola, Inc. | Method for calculating an L1 norm and parallel computer processor |
US6434584B1 (en) * | 1998-06-04 | 2002-08-13 | Texas Instruments Incorporated | Flexible accumulator register file for use in high performance microprocessors |
US7472259B2 (en) * | 2000-12-06 | 2008-12-30 | Analog Devices, Inc. | Multi-cycle instructions |
US6954849B2 (en) * | 2002-02-21 | 2005-10-11 | Intel Corporation | Method and system to use and maintain a return buffer |
US7051190B2 (en) * | 2002-06-25 | 2006-05-23 | Intel Corporation | Intra-instruction fusion |
CN1266595C (zh) * | 2002-06-28 | 2006-07-26 | 联想(北京)有限公司 | 一种嵌入式操作系统半开放自动升级的方法 |
US7571258B2 (en) * | 2002-12-12 | 2009-08-04 | Adaptec, Inc. | Method and apparatus for a pipeline architecture |
US20060282821A1 (en) * | 2005-06-10 | 2006-12-14 | Renno Erik K | Efficient subprogram return in microprocessors |
-
2005
- 2005-06-10 US US11/149,611 patent/US20060282821A1/en not_active Abandoned
-
2006
- 2006-05-25 JP JP2008515743A patent/JP2009508180A/ja not_active Abandoned
- 2006-05-25 KR KR1020077029999A patent/KR20080014062A/ko not_active Application Discontinuation
- 2006-05-25 WO PCT/US2006/020427 patent/WO2006135549A2/en active Application Filing
- 2006-05-25 EP EP06771282.8A patent/EP1891519B1/en not_active Expired - Fee Related
- 2006-05-25 CN CN2006800207138A patent/CN101194228B/zh not_active Expired - Fee Related
- 2006-06-09 TW TW095120621A patent/TW200709043A/zh unknown
-
2010
- 2010-06-07 US US12/795,582 patent/US8555041B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551749B (zh) * | 2009-05-11 | 2012-08-22 | 中国科学院计算技术研究所 | 随机测试程序生成方法和系统以及设计验证方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2009508180A (ja) | 2009-02-26 |
US8555041B2 (en) | 2013-10-08 |
WO2006135549A8 (en) | 2008-01-10 |
KR20080014062A (ko) | 2008-02-13 |
WO2006135549A2 (en) | 2006-12-21 |
EP1891519B1 (en) | 2016-12-07 |
TW200709043A (en) | 2007-03-01 |
EP1891519A2 (en) | 2008-02-27 |
CN101194228B (zh) | 2011-10-19 |
US20060282821A1 (en) | 2006-12-14 |
WO2006135549A3 (en) | 2007-08-16 |
EP1891519A4 (en) | 2010-05-19 |
US20100250904A1 (en) | 2010-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101194228B (zh) | 执行微处理器和微控制器的子例行程序的快速返回的装置 | |
US9009447B2 (en) | Acceleration of string comparisons using vector instructions | |
EP0851343B1 (en) | System for processing floating point operations | |
US6185668B1 (en) | Method and apparatus for speculative execution of instructions | |
US20120216011A1 (en) | Apparatus and method of single-instruction, multiple-data vector operation masking | |
CN101689107A (zh) | 用于将条件指令扩展为无条件指令与选择指令的方法和系统 | |
US8429380B2 (en) | Disabling redundant subfunctional units receiving same input value and outputting same output value for the disabled units in SIMD processor | |
US6223278B1 (en) | Method and apparatus for floating point (FP) status word handling in an out-of-order (000) Processor Pipeline | |
CN103513964A (zh) | 循环缓冲器打包 | |
US20100211747A1 (en) | Processor with reconfigurable architecture | |
US7971040B2 (en) | Method and device for saving and restoring a set of registers of a microprocessor in an interruptible manner | |
CN113254079B (zh) | 一种用于实现自增指令的方法及系统 | |
CN1761940B (zh) | 指令处理设备,指令执行方法和装置,指令编译方法和装置 | |
US7003656B2 (en) | Automatic selection of firmware for a computer that allows a plurality of process types | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
US20120102496A1 (en) | Reconfigurable processor and method for processing a nested loop | |
Kiat et al. | A comprehensive analysis on data hazard for RISC32 5-stage pipeline processor | |
CN115878141A (zh) | 一种嵌入式设备及对rom程序进行修复的方法 | |
WO2022022194A1 (en) | Risc processor having specialized registers | |
US20020156992A1 (en) | Information processing device and computer system | |
JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
US11243905B1 (en) | RISC processor having specialized data path for specialized registers | |
JP2004326773A (ja) | プロセッサタイプの決定 | |
CN113656074B (zh) | 一种risc架构处理器及其并行流水线结构设计方法 | |
US8677099B2 (en) | Reconfigurable processor with predicate signal activated operation configuration memory and separate routing configuration memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1116888 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1116888 Country of ref document: HK |
|
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111019 Termination date: 20140525 |