亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在處理系統(tǒng)中用于執(zhí)行堆棧彈出與壓入操作的裝置和方法

文檔序號:6425752閱讀:200來源:國知局
專利名稱:在處理系統(tǒng)中用于執(zhí)行堆棧彈出與壓入操作的裝置和方法
技術(shù)領(lǐng)域
本發(fā)明涉及在處理系統(tǒng)中用于執(zhí)行堆棧操作的裝置和方法,特別地,用于允許高速堆棧操作的裝置和方法。
許多處理系統(tǒng)具有存儲器模塊,在存儲器模塊中實現(xiàn)了堆棧。一個堆棧是一個數(shù)據(jù)結(jié)構(gòu),其中最近被保存的一個值被首先檢索出來。某些堆棧進行生長時,向一個存儲器模塊的低端地址/存儲器位置進行擴展,而某些堆棧向存儲器模塊的高端地址進行擴展。所以,堆棧的頂部是一個具有最低或者最高堆棧地址的存儲器位置,用于保存最近的數(shù)據(jù)。
有兩個與一個堆棧相關(guān)的基本操作-一個壓入操作,其中一個新的值被添加到堆棧中,和一個彈出操作,其中檢索位于堆棧頂部的值。新的值被保存在堆棧頂部后面的一個存儲器地址中。
通常,一個堆棧指針指向堆棧的頂部或者指向在堆棧頂部后面的一個存儲器位置。第一類型的堆棧指針使能快速的彈出操作,而第二類型的堆棧指針的壓入操作速度快。當(dāng)一個堆棧朝高端地址進行生長,并且堆棧指針指向在堆棧頂部后面的存儲器位置時,一個彈出操作包括將堆棧指針減1,并且移動被保存在堆棧頂部的值,一個壓入操作包括將數(shù)據(jù)寫入到堆棧指針?biāo)赶虻拇鎯ζ魑恢茫⑶覍⒍褩V羔樤黾?。這個現(xiàn)有技術(shù)的方法所花費的時間相對較長。
一般在中斷中使用堆棧操作。通常,保存了處理系統(tǒng)的狀態(tài)的多個寄存器,被壓入到堆棧中,并且最后從堆棧中彈出這些寄存器。當(dāng)許多寄存器保存了處理系統(tǒng)狀態(tài)時,執(zhí)行一個中斷所花費的時間將相當(dāng)長。
所以,需要一個高速和一個改進的裝置和方法來執(zhí)行堆棧操作。
雖然在后附的權(quán)利要求書中具體地指出了本發(fā)明,但是通過下面詳細的描述,并且聯(lián)系附圖將公開本發(fā)明的其它特征,其中

圖1是根據(jù)本發(fā)明的一個優(yōu)選實施方式,用于在一個處理系統(tǒng)中執(zhí)行堆棧操作的一個裝置的一個框圖。
圖2是根據(jù)本發(fā)明的一個實施方式,具有一個地址產(chǎn)生單元的一個處理器的一個框圖;圖3是根據(jù)本發(fā)明的一個實施方式,一個地址產(chǎn)生單元的一個框圖;和圖4以流圖的形式,顯示了根據(jù)本發(fā)明,用于執(zhí)行堆棧操作的一個方法。
一般,本發(fā)明提供了用于執(zhí)行高速堆棧操作的一個裝置和一個方法。本發(fā)明提供兩個堆棧指針,一第一指針指向堆棧的頂部,而一第二指針指向在堆棧頂部后面的存儲器位置。在彈出和壓入操作期間,分別使用兩個堆棧指針中相應(yīng)的一個堆棧指針。在使用一個堆棧指針以前,不需要增加或者減少一個堆棧指針。當(dāng)選擇一第一堆棧指針時,它被作為指向保存這個堆棧的存儲器模塊的一個被選擇堆棧指針,并且它替代第二堆棧指針,并且被更新。被更新的堆棧指針指向在被選擇堆棧指針前一個的一個存儲器位置。被更新的堆棧指針替代前面作為被選擇堆棧指針而提供的第一堆棧指針。當(dāng)選擇一第二堆棧指針時,它被作為指向保存這個堆棧的存儲器的一個被選擇堆棧指針,并且它替代第一堆棧指針,并且被更新。被更新的堆棧指針指向在被選擇堆棧指針后一個的一個存儲器位置。被更新的堆棧指針替代前面作為被選擇堆棧指針而提供的第二堆棧指針。
應(yīng)注意,在詳細描述中所采用的特定術(shù)語和表達式和關(guān)于特定結(jié)構(gòu)與操作的細節(jié),和附圖僅僅是用于示例性的,并不對后附權(quán)利要求書中所描述的、本發(fā)明的范圍有任何限制作用。
圖1是根據(jù)本發(fā)明的一個優(yōu)選實施方式,用于在一個處理系統(tǒng)中執(zhí)行堆棧操作的一個裝置10的一個框圖。
裝置10包括解碼器20,用于解碼一個指令并且相應(yīng)地產(chǎn)生調(diào)用堆棧操作的一個控制指示符號(即,-PUSH/POP)30。第一堆棧指針寄存器22,用于保存一第一堆棧指針32。第二堆棧指針寄存器26,用于保存一第二堆棧指針34。加法器/減法器28,用于接收一個被選擇堆棧指針36和一個常數(shù)38并且根據(jù)控制指示符號30產(chǎn)生一個被更新的堆棧指針40。選擇邏輯24,用于接收控制指示符號30并且相應(yīng)地從第一和第二堆棧指針32和34中選擇出一個被選擇的堆棧指針36,向沒有被選擇的堆棧指針寄存器發(fā)送被選擇的堆棧指針36,向加法器/減法器28發(fā)送被選擇的堆棧指針36和從加法器/減法器28向被選擇的堆棧指針寄存器發(fā)送被更新的堆棧指針40。
選擇邏輯24經(jīng)過總線21連接到解碼器20,以接收控制指示符號30,經(jīng)過總線23和25連接到第一堆棧指針寄存器22,經(jīng)過總線27和29連接到第二堆棧指針寄存器26,經(jīng)過總線33和31連接到加法器/減法器28。
為了方便,假設(shè)第一堆棧指針32指向堆棧的頂部,第二堆棧指針34指向在堆棧頂部后面的存儲器位置。當(dāng)控制指示符號30調(diào)用一個彈出操作時,邏輯24選擇調(diào)用堆棧指針寄存器22。被選擇的堆棧指針36,與第一堆棧指針32相等,被提供到加法器/減法器28,并且也被提供到一個存儲器模塊(圖1中沒有顯示),其中實現(xiàn)了一個堆棧。第一堆棧指針32被寫入到第二堆棧指針寄存器26。加法器/減法器28通過從被選擇堆棧指針32中減去常數(shù)38來產(chǎn)生被更新的堆棧指針40,被更新的堆棧指針將被寫入到第一堆棧指針寄存器22。常數(shù)38反映了在堆棧頂部和堆棧頂部后面的存儲器位置之間的偏移。
當(dāng)控制指示符號30調(diào)用一個壓入操作時,選擇邏輯24選擇第二堆棧指針寄存器26。被選擇堆棧指針36與第二堆棧指針34相等,并且被提供到加法器/減法器28,也被提供到存儲器模塊。第二堆棧指針36被寫入到第一堆棧指針寄存器22。加法器/減法器28通過從被選擇堆棧指針36增加常數(shù)38,來產(chǎn)生被更新的堆棧指針40,被更新的堆棧指針40將被寫入到第二堆棧指針寄存器26。
圖2是根據(jù)本發(fā)明的一個實施方式,具有一個地址產(chǎn)生單元的一個處理系統(tǒng)110的一個框圖。優(yōu)選,處理系統(tǒng)110的特征是具有一個超長指令碼字(即,-VLIW),但是這不是必要的。一個VLIW被并行地用于處理系統(tǒng)中。每一個VLIW包括多個指令,指令是被處理系統(tǒng)110的各種部分以一個并行的方式被執(zhí)行。
處理系統(tǒng)110具有內(nèi)部存儲器模塊220,222,一個地址寄存器文件226,一個程序序列器224,數(shù)據(jù)寄存器文件228和229,地址產(chǎn)生單元(AGU)230和231,和一起被標(biāo)識為232的乘法和累加(MAC)單元。AGU 230和231經(jīng)過內(nèi)部總線260連接到地址寄存器文件226。MAC單元232經(jīng)過內(nèi)部總線262連接到數(shù)據(jù)寄存器文件228和229。程序序列器224經(jīng)過指令總線224連接到AGU 230和231和MAC232。
處理系統(tǒng)110進一步包括一個程序總線238,一第一數(shù)據(jù)總線240和一第二數(shù)據(jù)總線242。程序總線238經(jīng)過總線246連接到程序序列器224,經(jīng)過總線272和282分別連接到存儲器模塊220,222。數(shù)據(jù)總線240和242經(jīng)過總線248和250連接到地址寄存器文件226,經(jīng)過總線252,254連接到數(shù)據(jù)寄存器文件228,229。數(shù)據(jù)總線240和242經(jīng)過總線274-280連接到存儲器模塊220,222。
程序序列器224從存儲器模塊220和222中的一個拾取一個VLIW,并且將VLIW的部分分發(fā)到MAC 232,AGU 230和231。AGU 230和231提供在下一個操作周期期間,將被拾取的數(shù)據(jù)或者VLIW的存儲器模塊220和222地址。通常,一個堆棧被實現(xiàn)在存儲器模塊220和222中的一個中。
圖3是根據(jù)本發(fā)明的一個實施方式,處理系統(tǒng)110內(nèi)的一個地址產(chǎn)生單元(即,-AGU)230和地址寄存器文件226的一部分280的一個框圖。
AGU 230包括控制單元264,寄存器N1271和加法器/減法器28。地址寄存器文件226的部分280包括多個寄存器R0,R1,R2,R3 40-43,第一堆棧指針寄存器(即,-SPR1)22,第二堆棧指針寄存器(即,-SPR2)26,一個開關(guān)46,和兩個復(fù)用器IN_MUX 48和OUT MUX 47??刂茊卧?64從程序序列器224接收一個指令,解碼這個指令,并且向部分280,向加法器/減法器28和向N1 271提供控制指示符號30和多個控制信號,以控制一個被更新地址的產(chǎn)生,例如一個被選擇的堆棧指針和一個被更新的堆棧指針。
控制單元264經(jīng)過總線282和285向IN_MUX 48和向OUT_MUX47發(fā)送控制信號,以選擇哪一個寄存器被包括在一個被更新地址的產(chǎn)生中。IN_MUX 48經(jīng)過總線49連接到電阻R0,R1,R2,R3 40-43,SPR1 22和SPR2 26,并且根據(jù)它接收的這個控制信號,它選擇哪一個寄存器將經(jīng)過總線248和250將其內(nèi)容提供到加法器/減法器28和提供到一個存儲器模塊222和22。加法器/減法器28經(jīng)過總線70接收被選擇寄存器的內(nèi)容,接收一個控制信號INC/DEC 50來或者調(diào)用一個加法操作或者一個減法操作和或者常數(shù)38或者一個SIZE 52信號,并且產(chǎn)生一個被更新的地址??刂茊卧?64經(jīng)過總線73提供INC/DEC 50??刂茊卧?64經(jīng)過總線79或者是N1 271經(jīng)過總線39來提供常數(shù)38??刂茊卧?64提供SIZE 52。
加法器/減法器28經(jīng)過總線76,OUT_MUX 47和總線248向被選擇的寄存器產(chǎn)生一個被更新的地址。
在一第一時鐘周期內(nèi),控制單元264解碼程序序列器224所提供的一個指令,并且判斷是否需要產(chǎn)生一個被更新的地址。
不是一個堆棧指針的一個被更新地址的產(chǎn)生通常或者包括從R0-R3 40-43中的一個寄存器的內(nèi)容中增加或者減去SIZE 52。SIZE52是在一個指令的解碼階段期間被產(chǎn)生的,并且反映了與這個指令相關(guān)的一個操作參數(shù)的長度。例如,指令“MOVE.2L(R1)+”包括與R1 41的內(nèi)容加8相等的一個被更新地址的產(chǎn)生。“2L”意味著一個8字節(jié)長的數(shù)據(jù)字,這樣SIZE=8.R1 41被選擇,并且INC/DEC=1。指令“MOVE.B(R2)-”包括與R2 42的內(nèi)容減1相等的一個被更新地址的產(chǎn)生?!癇”意味著一個單字節(jié)長的數(shù)據(jù)字,這樣SIZE=1。 R2 42被選擇,并且INC/DEC=0。
如果需要執(zhí)行一個壓入操作,控制單元264產(chǎn)生控制信號并且將控制信號發(fā)送到IN_MUX 48和發(fā)送到OUT_MUX 47,以選擇SPR2 26和相應(yīng)地選擇第二堆棧指針34,產(chǎn)生控制指示符號30并且將控制指示符號30發(fā)送到開關(guān)46,以指示在一第二時鐘周期的一第一階段期間,SPR2 26的內(nèi)容需要被寫入到SPR1 22??刂茊卧?64產(chǎn)生INC/DEC 50(INC/DEC=1),并且將INC/DEC 50(INC/DEC=1)提供到加法器/減法器28。
在一第二時鐘周期的一第一階段期間,經(jīng)過開關(guān)46向SPR1 22發(fā)送第二堆棧指針34,經(jīng)過IN_MUX 48向加法器/減法器28發(fā)送第二堆棧指針34。第二堆棧指針34也被提供到存儲器模塊220和222中的一個存儲器模塊。加法器/減法器28通過將常數(shù)38增加到被選擇堆棧指針36來產(chǎn)生被更新的堆棧指針40。
在一第二時鐘周期的一第二階段期間,經(jīng)過OUT_MUX 47向SPR2 26發(fā)送被更新的堆棧指針40。
如果需要執(zhí)行一個彈出操作,控制單元264產(chǎn)生控制信號并且將控制信號發(fā)送到IN_MUX 48和發(fā)送到OUT_MUX 47,以選擇SPR1 22和相應(yīng)地選擇第一堆棧指針32,產(chǎn)生控制指示符號30并且將控制指示符號30發(fā)送到開關(guān)46,以指示在一第二時鐘周期的一第一階段期間,被保存在SPR1 22中的第一堆棧指針32需要被寫入到SPR2 26??刂茊卧?64進一步產(chǎn)生INC/DEC 50(INC/DEC=0),并且將INC/DEC 50(INC/DEC=0)提供到加法器/減法器28。
在一第二時鐘周期的一第一階段期間,經(jīng)過開關(guān)46向SPR2 26發(fā)送第一堆棧指針32,經(jīng)過IN_MUX 48向加法器/減法器28發(fā)送第一堆棧指針32。第一堆棧指針32也被提供到存儲器模塊220和222中的一個存儲器模塊,在這個存儲器模塊中實現(xiàn)了一個堆棧。加法器/減法器28通過將從被選擇堆棧指針36減去常數(shù)38來產(chǎn)生被更新的堆棧指針40。
在一第二時鐘周期的一第二階段期間,經(jīng)過OUT_MUX 47向SPR1 22發(fā)送被更新的堆棧指針40。
圖4以一個流圖的形式,顯示了用于在一個處理系統(tǒng)中執(zhí)行堆棧操作的一個方法300。矩形框310,320,330,340和350表示方法300的步驟。如路徑315和325所指示的,步驟310的后面可以是步驟320和330。如路徑335和345所顯示的,步驟320和330的后面可以是步驟340和350。如路徑355和365所顯示的,步驟340和350后面可以是步驟310。
為了方便,假設(shè)在一個具有流水線結(jié)構(gòu)的處理系統(tǒng)中執(zhí)行方法300。指令在多個級中被執(zhí)行,例如程序預(yù)拾取級,程序拾取級,調(diào)度級和解碼級,地址產(chǎn)生級,和執(zhí)行級。步驟310是在調(diào)度和解碼級被執(zhí)行的。步驟320和350是在地址產(chǎn)生級期間被執(zhí)行的。為了方便解釋,圖4僅顯示了這兩個級。
方法300包括步驟在步驟310期間和在一第一時鐘周期期間,解碼一個指令并且判斷是否需要執(zhí)行一個壓入操作和一個彈出操作中的一個堆棧操作,并且相應(yīng)地產(chǎn)生調(diào)用這個堆棧操作的一個控制指示符號。
如路徑315和335所指示的,如果這個堆棧操作是執(zhí)行步驟320和340的一個彈出操作。
在步驟320期間和在第二時鐘周期的第一階段期間,提供指向堆棧頂部的一個被選擇堆棧指針36。用這個被選擇的堆棧指針代替指向這個堆棧指針后面的一個存儲器位置的一個指針。產(chǎn)生指向在被選擇堆棧指針36所指向的一個存儲器位置前一個存儲器位置的一個被更新堆棧指針40。將被選擇堆棧指針36發(fā)送到其中實現(xiàn)了一個堆棧的一個存儲器模塊,以允許從被選擇堆棧指針36所指向的存儲器位置中讀取數(shù)據(jù)。
為了方便,假設(shè)在步驟320期間和在第二時鐘周期的第一階段期間,提供從第一堆棧指針寄存器22中的一個被選擇堆棧指針36,將被選擇堆棧指針36寫入到第二堆棧指針寄存器26,將被選擇堆棧指針36發(fā)送到加法器/減法器28,通過從被選擇堆棧指針36中減去常數(shù)38來產(chǎn)生一個被更新的堆棧指針40,并且向其中實現(xiàn)了一個堆棧的一個存儲器模塊發(fā)送被選擇的堆棧指針36,以使在執(zhí)行級期間可以從堆棧的頂部讀取出數(shù)據(jù)。
在步驟340期間和在第二時鐘周期的第二階段期間,用被更新的堆棧指針40代替在第二時鐘周期的第一階段期間被提供的被選擇堆棧指針36。為了方便,在步驟340期間和在第二時鐘周期的第二階段期間,將被更新的堆棧指針40寫入到第一堆棧指針寄存器22。
如路徑325和345所顯示的,如果堆棧操作是一個壓入操作,執(zhí)行步驟330和350。
在步驟330期間和在第二時鐘周期的第一階段期間,提供指向堆棧頂部后面一個存儲器位置的一個被選擇堆棧指針36。用這個被選擇的堆棧指針36代替指向這個堆棧指針頂部的一個指針。產(chǎn)生指向在被選擇堆棧指針36所指向的一個存儲器位置后一個存儲器位置的一個被更新堆棧指針40。將被選擇堆棧指針36發(fā)送到其中實現(xiàn)了一個堆棧的一個存儲器模塊,以允許數(shù)據(jù)可以被寫入到被選擇堆棧指針36所指向的存儲器位置。為了方便,假設(shè)在步驟330期間和在第二時鐘周期的第一階段期間,提供從一第二堆棧指針寄存器36中的一個被選擇堆棧指針36,將被選擇堆棧指針36寫入到第一堆棧指針寄存器22,將被選擇堆棧指針36發(fā)送到加法器/減法器28,通過將被選擇堆棧指針36加上常數(shù)38來產(chǎn)生一個被更新的堆棧指針40,并且向其中實現(xiàn)了一個堆棧的一個存儲器模塊發(fā)送被選擇的堆棧指針36,以使在執(zhí)行級期間數(shù)據(jù)可以被寫入到堆棧的頂部后面的存儲器位置。
在步驟340期間和在第二時鐘周期的第二階段期間,用被更新的堆棧指針40代替在第二時鐘周期的第一階段期間被提供的被選擇堆棧指針36。方便地,在步驟350期間和在第二時鐘周期的第二階段期間,將被更新的堆棧指針40寫入到第二堆棧指針寄存器26。
如路徑355和365所指示的,步驟340和350的后面是步驟310。
這樣,這里描述了一個實施方式,這個實施方式包括用于執(zhí)行堆棧操作的一個裝置和一個方法的至少一個優(yōu)選實施方式。該領(lǐng)域內(nèi)的技術(shù)人員將很清楚,可以用很多方法來修改所公開的目的,可以設(shè)想許多實施方式與這里所詳細提出的和上面所描述的不同。
所以,上面所公開的目的僅能夠被認為是示例性的,并不具有任何限制性,并且在法律所允許的最大程度上,應(yīng)認為后附權(quán)利要求書覆蓋了所有這樣的修改和在本發(fā)明的精神和范圍內(nèi)的其它實施方式。本發(fā)明的范圍是由下面權(quán)利要求書的最大程度可允許理解和與前面詳細描述不同的其等效來決定。
權(quán)利要求
1.用于在處理系統(tǒng)內(nèi)執(zhí)行彈出操作的方法(300),該方法包括在一第一時鐘周期(310)期間,解碼一個指令,并且決定是否需要執(zhí)行一個彈出操作,并且相應(yīng)地產(chǎn)生調(diào)用彈出操作的一個控制指示符號;在一第二時鐘周期的第一階段(320)期間,提供一個被選擇堆棧指針,被選擇堆棧指針指向一個堆棧的頂部,用被選擇的堆棧指針來替代指向堆棧指針后面的一個存儲器位置的一個指針,產(chǎn)生指向被選擇堆棧指針指向的存儲器位置前一個存儲器位置的一個被更新指針,并且向其中實現(xiàn)了一個堆棧的一個存儲器模塊發(fā)送被選擇的堆棧指針,以使可以從被選擇堆棧指針?biāo)赶虻拇鎯ζ魑恢弥凶x取出數(shù)據(jù);和在一第二時鐘周期的第二階段(340)期間,用被更新的堆棧指針代替在第二時鐘周期的第一階段期間被提供的被選擇堆棧指針。
2.用于在處理系統(tǒng)內(nèi)執(zhí)行壓入操作的方法(300),該方法包括在一第一時鐘周期(310)期間,解碼一個指令,并且決定是否需要執(zhí)行一個壓入操作,并且相應(yīng)地產(chǎn)生調(diào)用壓入操作的一個控制指示符號;在一第二時鐘周期的第一階段(330)期間,提供一個被選擇堆棧指針,被選擇堆棧指針指向一個堆棧的頂部后面的一個存儲器位置,用被選擇的堆棧指針來替代指向堆棧頂部的一個指針,產(chǎn)生指向被選擇堆棧指針指向的存儲器位置后面一個存儲器位置的一個被更新指針,并且向其中實現(xiàn)了一個堆棧的一個存儲器模塊發(fā)送被選擇的堆棧指針,以使數(shù)據(jù)可以被寫入到被選擇堆棧指針?biāo)赶虻拇鎯ζ魑恢?;和在一第二時鐘周期的第二階段(350)期間,用被更新的堆棧指針代替在第二時鐘周期的第一階段期間被提供的被選擇堆棧指針。
3.用于在處理系統(tǒng)內(nèi)執(zhí)行堆棧操作的方法(300),這個方法包括在一第一時鐘周期(310)期間,解碼一個指令,并且決定是否需要執(zhí)行一個壓入操作和一個彈出操作中的一個堆棧操作,并且相應(yīng)地產(chǎn)生調(diào)用堆棧操作的一個控制指示符號;如果這個堆棧操作是一個彈出操作,就執(zhí)行包括下面的步驟在一第二時鐘周期的第一階段(320)期間,提供一個被選擇堆棧指針,被選擇堆棧指針指向一個堆棧的頂部,用被選擇的堆棧指針來替代指向堆棧指針后面的一個存儲器位置的一個指針,產(chǎn)生指向被選擇堆棧指針指向的存儲器位置前一個存儲器位置的一個被更新指針,并且向其中實現(xiàn)了一個堆棧的一個存儲器模塊發(fā)送被選擇的堆棧指針,以使可以從被選擇堆棧指針?biāo)赶虻拇鎯ζ魑恢弥凶x取出數(shù)據(jù);在一第二時鐘周期的第二階段(340)期間,用被更新的堆棧指針代替在第二時鐘周期的第一階段期間被提供的被選擇堆棧指針;如果這個堆棧操作是一個壓入操作,就執(zhí)行包括下面的步驟在一第二時鐘周期的第一階段(330)期間,提供一個被選擇堆棧指針,被選擇堆棧指針指向一個堆棧的頂部后面的一個存儲器位置,用被選擇的堆棧指針來替代指向堆棧頂部的一個指針,產(chǎn)生指向被選擇堆棧指針指向的存儲器位置后面一個存儲器位置的一個被更新指針,并且向其中實現(xiàn)了一個堆棧的一個存儲器模塊發(fā)送被選擇的堆棧指針,以使數(shù)據(jù)可以被寫入到被選擇堆棧指針?biāo)赶虻拇鎯ζ魑恢?;和在一第二時鐘周期的第二階段(350)期間,用被更新的堆棧指針代替在第二時鐘周期的第一階段期間被提供的被選擇堆棧指針。
4.用于在一個處理系統(tǒng)內(nèi)執(zhí)行堆棧操作的一個裝置(10),這個裝置包括一個解碼器(20),用于解碼一個指令并且相應(yīng)地產(chǎn)生調(diào)用堆棧操作的一個控制指示符號一第一堆棧指針寄存器(32),用于保存一第一堆棧指針;一第二堆棧指針寄存器(34),用于保存一第二堆棧指針;一個加法器(28),連接到這個解碼器,用于接收一個被選擇堆棧指針(36)和一個常數(shù)(38),并且根據(jù)這個控制指示符號(30)產(chǎn)生一個被更新的堆棧指針(40);和一個選擇邏輯(24),連接到第一和第二堆棧指針,連接到這個加法器和連接到這個解碼器,以用于接收這個控制指示符號,并且相應(yīng)地從第一和第二堆棧指針中選擇出被選擇堆棧指針(36),這個被選擇堆棧指針被保存在一個被選擇堆棧指針寄存器中,將這個被選擇堆棧指針發(fā)送到?jīng)]有被選擇的堆棧指針寄存器,將這個被選擇堆棧指針發(fā)送到這個加法器和發(fā)送到其中實現(xiàn)了一個堆棧的一個存儲器模塊,并且從加法器將被更新的堆棧指針發(fā)送到被選擇堆棧指針寄存器。
5.用于產(chǎn)生地址的裝置(10),這個裝置包括一第一堆棧指針寄存器(22),用于保存一第一堆棧指針(32);一第二堆棧指針寄存器(26),用于保存一第二堆棧指針(34);多個寄存器(40),(41),(42),(43),用于保存與第一和第二堆棧指針不同的存儲器位置;兩個復(fù)用器(48)(47),用于從第一堆棧指針寄存器,第二堆棧指針寄存器和多個寄存器中選擇出一個被選擇寄存器;一個加法器(28),連接到復(fù)用器,以用于接收被選擇寄存器的內(nèi)容和一個常數(shù),并且產(chǎn)生需要被發(fā)送到被選擇寄存器的一個被更新內(nèi)容;一個開關(guān)(46),連接到第一和第二堆棧指針寄存器,用于允許第一堆棧指針被寫入到第二堆棧指針寄存器,并且用于允許第二堆棧指針被寫入到第一堆棧指針寄存器;一個控制單元(264),連接到第一和第二堆棧指針寄存器,連接到加法器和連接到解碼器,被調(diào)節(jié)成接收一個指令,用于解碼這個指令,并且用于相應(yīng)地產(chǎn)生和提供控制信號和一個控制指示符號。
6.如權(quán)利要求5的這個裝置,其中當(dāng)一個指令調(diào)用一個彈出操作時,這個控制單元發(fā)送控制信號,這些控制信號促使兩個復(fù)用器選擇第一堆棧指針寄存器,促使這個開關(guān)將第一堆棧指針寫入到第二堆棧指針寄存器,促使這個加法器通過將一個常數(shù)增加到被選擇堆棧指針來產(chǎn)生一個被更新的堆棧指針。
7.如權(quán)利要求5的這個裝置,其中當(dāng)一個指令調(diào)用一個壓入操作時,這個控制單元發(fā)送控制信號,這些控制信號促使兩個復(fù)用器選擇第二堆棧指針寄存器,促使這個開關(guān)將第二堆棧指針寫入到第一堆棧指針寄存器,促使這個加法器通過將被選擇堆棧指針減去一個常數(shù)來產(chǎn)生一個被更新的堆棧指針。
全文摘要
用于在處理系統(tǒng)內(nèi)執(zhí)行堆棧操作的方法和裝置。第一和第二堆棧指針分別指向堆棧頂部及其后面的一個位置。第一和第二堆棧指針分別在彈出和壓人操作中被使用。當(dāng)選擇一個堆棧指針時,它替代另外一個堆棧指針。被選擇的堆棧指針被提供給一個堆棧存儲器模塊,并且也被更新。在彈出操作中,被更新的堆棧指針指向在被選擇堆棧指針指向的一個存儲器位置前的一個存儲器位置,在壓入操作中,被更新的堆棧指針指向在這個地址后面的一個存儲器地址。
文檔編號G06F9/48GK1295279SQ0013293
公開日2001年5月16日 申請日期2000年11月8日 優(yōu)先權(quán)日1999年11月9日
發(fā)明者法布利斯·艾丹, 約拉姆·薩蘭特, 馬克·額爾尼卡夫, 里昂尼德·茨可曼 申請人:摩托羅拉公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1