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

移動(dòng)位字段的方法和程控單元的制作方法

文檔序號:6486148閱讀:156來源:國知局
專利名稱:移動(dòng)位字段的方法和程控單元的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種方法和一種程控單元,用于在程控單元的存儲(chǔ)設(shè)備中、尤其是在位字段操作時(shí)移動(dòng)位字段。
這樣的程控單元例如被構(gòu)造為微處理器、微控制器、信號處理器等等。與分別選擇的編譯技術(shù)和各自的應(yīng)用程序有關(guān)聯(lián)的、選擇用于程控單元的處理器架構(gòu)基本上確定了程控單元的效率、速度和靈活性。
匯編程序設(shè)計(jì)語言供程控單元的應(yīng)用者用于進(jìn)行近似硬件的編程,該匯編程序設(shè)計(jì)語言在寄存器模型的基礎(chǔ)上具有固定的指令組(指令系統(tǒng)(Instruction Set))。
這種程控單元的實(shí)例是由Infineon技術(shù)股份公司銷售的具有16位架構(gòu)的C166系列的處理器以及具有32位架構(gòu)的三磁芯的處理器。這些程控單元具有存儲(chǔ)設(shè)備、指令譯碼寄存器、地址寄存器和數(shù)據(jù)寄存器、處理位指令的流水線以及桶式移位器和位掩模發(fā)生器。現(xiàn)代的程控單元、尤其是具有流水線架構(gòu)的處理器或協(xié)議處理器具有作為附加功能性的位字段操作(英語為Bit Field Manipulation)。在進(jìn)行位字段操作時(shí),從第一數(shù)據(jù)串中取出位段(Bitsegment),處理該位段并且將該位段插入到第二數(shù)據(jù)串中的相應(yīng)的位字段中,該位段由一個(gè)或多個(gè)被包含在第一數(shù)據(jù)串中的位組成。數(shù)據(jù)串例如可以含有字(32位)、雙字(64位)、半字(16位)等等。
對于具有位字段操作的程控單元的一般的背景,參閱美國專利6,061,783、美國專利申請US 2002/0120828 A1以及參閱在開頭所提及的Infineon技術(shù)股份公司的三磁芯微控制器的技術(shù)規(guī)范。在位字段操作方面,將這些文獻(xiàn)的全部內(nèi)容包括在本專利申請中。
位字段操作時(shí)的通常的指令是“傳送(Move)”指令,其中,從第一數(shù)據(jù)字中取出若干位,并相應(yīng)修改地插入到第二數(shù)據(jù)字中。用于位字段操作的該“傳送”指令在匯編程序設(shè)計(jì)語言中具有以下的結(jié)構(gòu)MVR R #offset1 Rs #offset0 #bits利用“傳送”指令MVR,將位長度為#bits的位段從位的位置為#offset0上的源寄存器Rs移動(dòng)到位的位置為#offset1上的目標(biāo)寄存器Rd。從形式上看,如下來描述該操作Rd(#bits,#offset1)<=Rs(#bits,#offset0)為了轉(zhuǎn)換具有簡單的指令組的該“傳送”指令,需要多個(gè)單個(gè)程序代碼。以下應(yīng)示范性地示出該“傳送”指令的轉(zhuǎn)換mvr R2 0 R1 0 8 //請取第一字節(jié)addi R3 R2 1 //請?zhí)幚碓撟止?jié)str R15 R3 //請存儲(chǔ)結(jié)果mvr R2 0 R1 8 8 //請取第二字節(jié),等等addi R3 R2 1str R15 R3mvr R2 0 R1 16 8addi R3 R2 1str R15 R3mvr R2 0 R1 24 8addi R3 R2 1str R15 0 R3 32 0 0該程序的第一行說明,應(yīng)在源寄存器的第一位置R1上取出位的位置0上的第一字節(jié)(8位),并且應(yīng)移動(dòng)到第二位置R2上的位的位置上。第二行表示了,就是處理(相加)該第二位置R2上的該位。將上一個(gè)處理步驟的結(jié)果R3插入和存儲(chǔ)到目標(biāo)寄存器中的位置R15上(第三行)。重復(fù)這些處理步驟,直至從源寄存器中取出全部32位、也就是整個(gè)字,處理該全部32位并且已寫入目標(biāo)寄存器中時(shí)為止。相應(yīng)地因此根據(jù)上述程序中的第四行,取出和向前推移位的位置8上的第二字節(jié)。
示出,在該情況下,對于指令“傳送”的簡單功能總共必需12個(gè)指令步驟(程序代碼)。多個(gè)指令步驟的缺點(diǎn)在于,指令存儲(chǔ)器變得較大。由于經(jīng)常對指令存儲(chǔ)器進(jìn)行存取,這直接導(dǎo)致較高的能耗。除此之外,大量指令步驟也導(dǎo)致要相應(yīng)大地構(gòu)造的存儲(chǔ)器,這最終也增大了芯片面積,并且因此附加地使得整個(gè)程控單元更昂貴。
在具有寄存器的直接尋址的程控單元的情況下,已說明了以上的問題。在該尋址方式中,將寄存器的地址(或號碼)直接作為(立即)值來說明。
除此之外,也存在寄存器間接的尋址,其中,寄存器的地址是另一個(gè)寄存器的內(nèi)容。這種尋址方式相對于直接尋址具有以下的優(yōu)點(diǎn),即在提取指令時(shí)不必同時(shí)讀取操作數(shù)地址。當(dāng)在一個(gè)程序部分之內(nèi)經(jīng)常存取同一個(gè)操作數(shù)地址時(shí),采用該尋址方式。
擴(kuò)展方案是利用位移(Displacement)的寄存器間接的尋址,其中,從恒定的地址距離(位移)的地址寄存器的內(nèi)容中計(jì)算出當(dāng)前的地址。該地址距離帶有符號(二進(jìn)制補(bǔ)碼),并且因此允許到地址寄存器中的基址的、正的或也可是負(fù)的地址距離。在進(jìn)行這種存在于存儲(chǔ)器中的固定結(jié)構(gòu)中的數(shù)據(jù)存取時(shí),應(yīng)用該方法。因此通過改變地址寄存器中的基址,訪問了下一個(gè)數(shù)據(jù)組中的相同的單元,或可以考慮可變的基址。
沒有間接的存儲(chǔ)器尋址的可能性的處理器在32位存儲(chǔ)器的情況下將必須例如將三個(gè)單個(gè)位存放到32位寬的數(shù)據(jù)字中。該數(shù)據(jù)字的剩余的29位因此保持未使用。間接的數(shù)據(jù)尋址的該形式(以下也稱為對數(shù)據(jù)存儲(chǔ)器的位字段存取)因此減小了數(shù)據(jù)存儲(chǔ)器的存儲(chǔ)器大小,并且也因此有意義地減小了芯片面積。但是,這種對數(shù)據(jù)存儲(chǔ)器的位字段存取不具有帶有對單個(gè)位結(jié)構(gòu)的順序的訪問的循環(huán),因?yàn)樵诟髯缘拇嫒r(shí),將位的位置和這些位的位置的偏移值預(yù)定為恒定的值(所謂的立即值)。由此而來的問題也在于,存儲(chǔ)器存取的數(shù)量總是保持相同,由此與傳統(tǒng)的存儲(chǔ)器存取相比較未考慮能源節(jié)省。
借助以下的程序來說明該問題,該程序在寄存器間接尋址的情況下描述了開頭所述的“傳送”指令MVRldi R1 0 0×030//請加載讀指針=0×30ldi R3 0 0×040//請如載寫指針=0×40ldr R2 0 R1 0 8//請取第一字節(jié)nopnopaddi R3R2 1 //請?zhí)幚碓撟止?jié)str R15 R3 //請存儲(chǔ)結(jié)果ldr R2 0 R1 8 8//請取第二字節(jié)nop
nopaddi R3 R2 1str R15 R3ldr R2 0 R1 16 8//請取第三字節(jié)nopnopaddi R3 R2 1str R15 R3ldr R2 0 R1 24 8//請取第四字節(jié)nopnopaddi R3 R2 1str R15 0 R3 32 0 0開始的兩行說明,將讀指針或?qū)懼羔樇虞d到相應(yīng)的位置R1、R3上。隨后(第三行)加載第一字節(jié)。在兩個(gè)程序步驟(第四和第五行)之后,其中,未設(shè)置操作,所讀出的字節(jié)根據(jù)第六行來處理,并根據(jù)第七行被存儲(chǔ)為結(jié)果。重復(fù)該過程,直至已讀出了所有四個(gè)字節(jié)時(shí)為止。因此得到針對“傳送”指令、也就是用于移動(dòng)由來自存儲(chǔ)器的32位組成的單個(gè)字的總共22個(gè)指令步驟。但是,大數(shù)量的指令步驟和對存儲(chǔ)器的經(jīng)常存取導(dǎo)致了程控單元的高的功率消耗并且此外還導(dǎo)致了大的芯片面積。
在應(yīng)用程控單元、尤其是具有固定指令組(指令系統(tǒng))的程控單元時(shí),因此存在以下需求,即在要實(shí)施的程序內(nèi)更有效地設(shè)計(jì)經(jīng)常重復(fù)的功能。
本發(fā)明所基于的任務(wù)是,在程控單元中實(shí)現(xiàn)一種改進(jìn)的、尤其是一種簡化的指令處理。
根據(jù)本發(fā)明通過具有權(quán)利要求1和26所述的特征的、用于移動(dòng)位字段的方法或程控單元來解決本發(fā)明所基于的任務(wù)。
因此規(guī)定了一種用于由于指令的實(shí)施而在程控單元中的存儲(chǔ)設(shè)備中移動(dòng)位字段的方法,其中,將第一存儲(chǔ)單元內(nèi)的位段移到第二存儲(chǔ)單元中,該方法具有以下的方法步驟
a)在第一起始點(diǎn)開始地,從第一存儲(chǔ)單元的第一位字段中讀出具有第一位長度的位段;b)在第二起始點(diǎn)開始地,將所讀出的位段存儲(chǔ)到第二存儲(chǔ)單元的第一位字段中;c)將第一和/或第二起始點(diǎn)更新了預(yù)定的值;d)存儲(chǔ)針對隨后的方法步驟的所更新的第一和/或第二起始點(diǎn)。(權(quán)利要求1)用于在處理器、尤其是具有流水線架構(gòu)的處理器中處理指令的程控單元具有-其中存放了指令的存儲(chǔ)器,-具有至少一個(gè)從中可讀出和/或可重新插入位段和/或位字段的存儲(chǔ)單元,-具有至少一個(gè)附加的寄存器,用于借助按照以上權(quán)利要求之一所述的方法來存儲(chǔ)所更新的第一和/或第二起始點(diǎn),-具有至少一個(gè)設(shè)備,用于計(jì)算出所更新的第一和/或第二起始點(diǎn),-具有用于進(jìn)行位字段操作的設(shè)備,該設(shè)備將第一位字段內(nèi)的位段移到第二位字段的范圍中。(權(quán)利要求26)從從屬權(quán)利要求中以及從參考附圖的說明中可以獲知有利的改進(jìn)方案和擴(kuò)展方案。
本發(fā)明所基于的知識是,不必持續(xù)地重新從存儲(chǔ)器或寄存器中下載總是重復(fù)的程序步驟。因而,本發(fā)明所基于的思想在于,將這些重復(fù)的程序步驟嵌入到程序循環(huán)(Loop)中。因此,尤其是在大量重復(fù)的程序步驟的情況下,可以有意義地降低對此必要的指令的數(shù)量。單個(gè)程序步驟或程序功能的減少導(dǎo)致功率消耗的降低,并且除此之外,通過較小的存儲(chǔ)器也導(dǎo)致存儲(chǔ)器大小的降低。
不僅在存儲(chǔ)器的寄存器間接的尋址的情況下,而且在直接的寄存器尋址的情況下,都可以借助本發(fā)明的方法或本發(fā)明的程控單元來有利地使存儲(chǔ)器存取或寄存器存取保持非常低。
對于該功能性的實(shí)施,根據(jù)本發(fā)明規(guī)定了位的位置指針的更新。
對于該附加的功能性,本發(fā)明的方法有利地規(guī)定了,將最后的或替代地也將下一個(gè)位的位置存儲(chǔ)為位的位置指針(起始點(diǎn))。在重復(fù)的程序段的情況下,該位的位置指針說明了,應(yīng)在哪個(gè)位置上存儲(chǔ)或讀出數(shù)據(jù)。這利用最后的位的位置指針通過固定偏移的增量來實(shí)現(xiàn),該位的位置指針被存儲(chǔ)在附加的寄存器中。于是從舊的、所存儲(chǔ)的位的位置指針加上預(yù)定的偏移或預(yù)定的位長度中得出了新的位的位置指針。
對于在直接尋址的情況下的位字段操作,根據(jù)本發(fā)明引入附加的寄存器。該附加的寄存器包含程序循環(huán)的功能性,其方式是該程序循環(huán)包含位的位置,在該位的位置中在從數(shù)據(jù)串中讀出位段之后應(yīng)讀出下一個(gè)位段。通過裝設(shè)用于存儲(chǔ)最后的位的位置的該附加的寄存器,有利地不改變寄存器的接線的數(shù)量。
通過本發(fā)明,尤其在從存儲(chǔ)器中順序地讀出數(shù)據(jù)時(shí),在應(yīng)用可變的位的位置的情況下擴(kuò)展了現(xiàn)有的功能性。為此目的規(guī)定了程控單元的架構(gòu),該程控單元將最后讀出的數(shù)據(jù)(順序地)存放在超高速緩沖存儲(chǔ)器中,由此基于因此取消的存儲(chǔ)器存取而進(jìn)一步降低了功率消耗。這里因此涉及數(shù)據(jù)超高速緩沖存儲(chǔ)器。
以下借助附圖中說明的實(shí)施例來詳細(xì)闡述本發(fā)明。在此

圖1示出用于說明用于在直接尋址時(shí)進(jìn)行位字段操作(Bit FieldManipulation)的本發(fā)明方法的示意圖;圖2在方框電路圖中示出本發(fā)明程控單元的流水線架構(gòu);圖3示出詳細(xì)的方框電路圖,用于說明圖2的本發(fā)明程控單元的附加寄存器的實(shí)施;圖4示出用于在間接尋址時(shí)來移動(dòng)位字段(Bit FieldMovement)的本發(fā)明方法的示意圖;圖5示出用于實(shí)施本發(fā)明方法的程控單元的方框電路圖,該方法用于借助間接尋址來移動(dòng)位字段。
在所有的附圖中,只要沒有另作說明,相同的或功能相同的元件和信號配備了相同的參考符號。
本發(fā)明規(guī)定了,在具有流水線架構(gòu)的程控單元中,對于重復(fù)的程序步驟或程序塊引入了程序循環(huán)。該循環(huán)應(yīng)該有利地在沒有裝設(shè)附加的寄存器接線的情況下是可能的。從中得到的程序具有以下的功能性Rd(#bits,offset1_reg)<=Rs(#bits,offset0_reg)
offset0_reg<=(offset_reg+#offset0)offset1_reg<=(offset1_reg+#offset1)在此,Rs表示源寄存器(寄存器源(Register Source)),而Rd表示目標(biāo)寄存器(寄存器目的地(Register Destination))。offset0_reg和offset1_reg分別表示相應(yīng)的寄存器的位的位置指針。#bit表示了位長度,而#offset0或#offset1表示了源寄存器和目標(biāo)寄存器中的各自的偏移,在這些源寄存器和目標(biāo)寄存器中各自的位的位置指針在隨后的讀出步驟或插入步驟中讀出或插入相應(yīng)的位段。第一行因此包含了,應(yīng)將位置offset0_reg上的位長度為#bits的位段從源寄存器移動(dòng)到位置offset1_reg上。下兩行表示了本發(fā)明方法,其中,從以前分別應(yīng)用的位的位置指針與相應(yīng)的偏移的相加中得出了源寄存器和目標(biāo)寄存器的兩個(gè)當(dāng)前的位的位置指針。
在匯編程序設(shè)計(jì)語言中,相應(yīng)的程序具有以下語法MVRSO Rd #offset1 Rs #offset0 #bits在簡化的轉(zhuǎn)換中從中得出了具有以下步驟的程序init1 0 0 0 0ldi R4 0 3//請加載計(jì)數(shù)器=3_loopmvrsoR2 0 R1 8 8addiR3 R2 1str R15 R3decibr R4 1-loop 1//請以1來遞減;當(dāng)計(jì)數(shù)器=0時(shí),跳躍指令。
根據(jù)該程序的行1,預(yù)加載寄存器位置,其方式是將該寄存器位置初始化。在行二中將計(jì)數(shù)器的計(jì)數(shù)器讀數(shù)設(shè)置到三。行三至六包含了程序循環(huán),其中,根據(jù)行三,分別從源寄存器的相應(yīng)的位的位置中讀出和寫入一個(gè)字節(jié)。此后更新偏移寄存器。在程序行5中,將R3的內(nèi)容存儲(chǔ)到在R15中含有的地址上(間接尋址)。最后的行6將計(jì)數(shù)器讀數(shù)分別向下設(shè)置了1(遞減)。此外,還應(yīng)重新在行三處繼續(xù)該循環(huán),直至計(jì)數(shù)器讀數(shù)是零時(shí)為止。與開頭對于“傳送”指令MVR必要的12個(gè)指令相比較,單純引入循環(huán)將對于“傳送”指令MVR必要的指令的數(shù)量減少到了總共5個(gè)。
通過更新被分配給源寄存器和目標(biāo)寄存器Rs、Rd的位的位置指針offset0_reg、offset1_reg,以上程序流程中的循環(huán)是可能的。圖1示出用于說明本發(fā)明方法的示意圖。
在圖1中分別利用Rs和Rd來表示來自源寄存器或目標(biāo)寄存器的數(shù)據(jù)字。首先初始化位的位置指針offset0_reg、offset1_reg,也就是在本情況下將位的位置指針offset0_reg、offset1_reg設(shè)置到0。在第一步(1)中,將從由位的位置指針offset0_reg=0位確定的起始位置開始的第一字節(jié)(#bits=8位)寫到目標(biāo)寄存器Rd的相應(yīng)的范圍中,該范圍從由位的位置指針offset1_reg=0位確定的起始位置開始。在第二步(2)中,將源寄存器Rs的第二字節(jié)寫到目標(biāo)寄存器Rd中。再度通過位的位置指針offset0_reg、offset1_reg來確定起始位置,這些起始位置確定了在哪個(gè)位置上讀出或?qū)懭氲诙止?jié)。但是,在第二步(2)之前,已更新了位的位置指針的值,其方式是通過與各自的偏移值#offset0、#offset1相加來更新分別為舊的位的位置指針、也就是offset0_reg和offset1_reg的值。在本實(shí)例中,兩個(gè)偏移值是相同的,并且為#offset0=#offset1=8位。因此在第二步(2)中,針對起始位置的確定考慮了所更新的位的位置指針offset0_reg、offset1_reg。對于其它的字節(jié)(步驟(3),(4)),相應(yīng)地更新位的位置指針offset0_reg、offset1_reg。
為了更新各自的位的位置指針值,必需裝設(shè)附加的寄存器。以下借助圖2和3來詳細(xì)闡述具有這種附加的寄存器的程控單元的結(jié)構(gòu),該附加的寄存器用于存儲(chǔ)各更新過的位的位置指針值。
圖2在此借助方框電路圖來示出具有附加的寄存器的本發(fā)明程控單元的流水線架構(gòu)。
在圖2中利用參考符號1表示了這里被構(gòu)造為流水線處理器的相應(yīng)的程控單元。在本實(shí)施例中裝設(shè)了三級流水線。參考符號2至4在此表示單個(gè)流水線級的不同的流水線寄存器。程控單元1含有其中存放了固定指令組(指令系統(tǒng))的指令存儲(chǔ)器5。指令存儲(chǔ)器5通過流水線級2與指令譯碼器6相連接。在指令譯碼器6后面連接了源寄存器7,從該源寄存器7中與由指令譯碼器6譯碼的指令有關(guān)地讀出數(shù)據(jù),并且該數(shù)據(jù)通過流水線級3被輸送給計(jì)算單元8。計(jì)算單元8這里被構(gòu)造為算術(shù)邏輯單元(ALU)。此外,在第二流水線級3中,還可裝設(shè)在輸入側(cè)同樣與源寄存器7耦合的數(shù)據(jù)存儲(chǔ)器9。ALU單元8和數(shù)據(jù)存儲(chǔ)器9通過流水線級4一方面與輸出接線10而另一方面與桶式移位器11相連接。桶式移位器11含有用于進(jìn)行位字段操作的設(shè)備。桶式移位器11在輸出側(cè)與目標(biāo)寄存器12相耦合。
根據(jù)本發(fā)明裝設(shè)了附加的寄存器13,用于實(shí)施以上借助圖1示出的功能性,以更新源寄存器7和目標(biāo)寄存器11的位的位置指針。在圖2中,該附加的寄存器13被布置在第二流水線級3中并且與ALU單元8相耦合。
圖3示出詳細(xì)的方框電路圖,用于說明圖2的本發(fā)明程控單元的附加寄存器的實(shí)施。
從程序存儲(chǔ)器5中讀出單個(gè)指令inst,并且將該單個(gè)指令inst輸送給指令譯碼器6。指令譯碼器6借助信號#reg0、#reg1生成源寄存器Rs和目標(biāo)寄存器Rd的各自的寄存器地址。這些信號#reg0、#reg1被輸送給寄存器20,其中,寄存器20包含了源寄存器7和目標(biāo)寄存器12的功能性。與寄存器地址#reg0、#reg1有關(guān)地,從數(shù)據(jù)寄存器20中輸出數(shù)據(jù)信號data1、data0,并且將該數(shù)據(jù)信號data1、data0輸送給多路復(fù)用器21。
此外,程控單元還含有桶式移位器11、掩模發(fā)生器22以及加法器23。元件11、22、23用于進(jìn)行位字段操作。指令譯碼器6生成說明了位長度和被輸送給掩模發(fā)生器22的信號#bits。從此出發(fā),掩模發(fā)生器22生成用于進(jìn)行位字段操作的掩模。該位字段操作的作用方式對于專業(yè)人員一般是公知的,并且例如在已經(jīng)在說明書引言中列出的文獻(xiàn)中詳細(xì)進(jìn)行了說明,以致這里不應(yīng)對此深入討論。
此外,指令譯碼器6在輸出側(cè)還提供兩個(gè)偏移信號#offset0、#offset1,這兩個(gè)偏移信號#offset0、#offset1在第一工作方式中直接被輸送給加法器23。在該第一工作方式中,將加法器23中的信號#offset1從信號#offset0中扣除,并且將由此產(chǎn)生的信號sh0輸送給桶式移位器11。給其除此之外還輸送數(shù)據(jù)信號data0的桶式移位器11從此出發(fā)生成被輸送給多路復(fù)用器21的輸出信號。
根據(jù)本發(fā)明,程控單元具有除了第一工作方式之外還實(shí)現(xiàn)了第二工作方式的附加的寄存器13。該附加的寄存器13具有兩個(gè)輸入和兩個(gè)輸出。加法器24、25分別被連接在該附加的寄存器13的輸入之前,多路復(fù)用器26、27分別被連接在兩個(gè)輸出之后。該附加的寄存器13的輸出信號offset0_reg、offset1_reg一方面被輸送給分別連接在后面的多路復(fù)用器26、27。另一方面,這些信號offset0_reg、offset1_reg通過反饋環(huán)路被輸送給各自的加法器24、25,并且在那里與偏移信號#offset0、#offset1相加。將這些各自相加的結(jié)果分別輸入耦合到附加的寄存器13的相應(yīng)的輸入中。
通過同樣由指令譯碼器6提供的起動(dòng)信號(Enable-Signal)#so-enb來控制多路復(fù)用器26、27以及附加的寄存器13。
借助圖2和3中示出的裝置能有利地執(zhí)行指令“傳送”的實(shí)施,并且以很簡單的、節(jié)省功率的方式來執(zhí)行位字段操作。
以上借助圖1至3說明的實(shí)施例涉及已進(jìn)行位字段操作的直接尋址。在以下的、借助圖4和5說明的實(shí)施例中,將本發(fā)明方法用于存儲(chǔ)器存取的寄存器間接的尋址,其中,應(yīng)移動(dòng)位字段(Bit FieldMovement)。在開頭所述的“傳送”指令的情況下,本發(fā)明方法在該情況下實(shí)施以下的指令在讀過程中Rd<=mem((base-adr+#disp),bit_pos,#bits)在寫過程中mem((base_adr+disp),bit_pos,#bits)<=Rs在此,Rs和Rd再度表示源寄存器或目標(biāo)寄存器的內(nèi)容。base_adr表示被構(gòu)造為堆棧存儲(chǔ)器的存儲(chǔ)器中的起始地址。#disp表示了地址到堆棧存儲(chǔ)器中的基址的地址距離(位移),而bit_pos表示了位的位置指針。#bits再度表示位長度、也就是要移動(dòng)的位的數(shù)量。對于匯編操作語言,在讀過程的情況下因此得出了以下語法LDX Rd #bits @Rs #disp #auto_increment在此,將寄存器@Rs設(shè)置為基址base_adr=Rs[31:5],并且設(shè)置位指針bit_pos=Rs[4:0]。#auto_increment=1表示,將位的位置指針分別繼續(xù)前進(jìn)(weitersetzen)了位#bits的數(shù)量。此外還適用Rs<=Rs+#bits。
指令存儲(chǔ)STX具有類似的匯編語法STX@Rd #bits Rs#disp#auto_increment這里設(shè)置了基址為base_adr=Rd[31:5]的寄存器@Rd和位的位置bit_pos=Rd[4:0]。
在簡化的轉(zhuǎn)換中因此得出了讀指令中的以下的程序流程ldi R4 5 0×030 //請加載位置指針=0×30,bit_pos=0ldi R5 5 0×040 //請加載位置指針=0×40,bit_pos=0ldi R6 0 8 //請?zhí)幚?×8位_loopldx R2 8 R4 0×08 1 //請加載0×030+0×08nopnopaddiR3 R2 1str R5 8 R3 0×080 1decibr R6 1_loop 1 //請遞減了1;當(dāng)計(jì)數(shù)器不是1時(shí),跳躍指令根據(jù)該程序的開始的兩行首先加載堆棧存儲(chǔ)器的位置指針。此外,還將位置指針bit_pos設(shè)置到0。根據(jù)行三確定,必須分別處理1個(gè)字節(jié)8次。行四至九說明了本發(fā)明的程序循環(huán)。在此,首先根據(jù)行四來加載位段,根據(jù)行七相應(yīng)地處理,并根據(jù)行八重新寫到目標(biāo)寄存器的相應(yīng)的行上。根據(jù)行九將循環(huán)計(jì)數(shù)器后移了一位,并且該循環(huán)重新從前面開始,直至循環(huán)計(jì)數(shù)器到達(dá)零時(shí)為止。
這里與在說明書引言中對于同一個(gè)指令必需的22個(gè)指令相比較,為了從存儲(chǔ)器中讀出和移位一個(gè)數(shù)據(jù)字,僅僅得出九個(gè)指令。因此,導(dǎo)致功率消耗的顯著降低。
借助圖4中的示意圖,應(yīng)闡述用于在間接尋址時(shí)移動(dòng)位字段(BitField Movement)的本發(fā)明方法。
在利用位移進(jìn)行間接尋址的情況下,源寄存器的寄存器內(nèi)客Rs確定,應(yīng)在堆棧存儲(chǔ)器9的哪個(gè)位置上讀出數(shù)據(jù)。為此目的,源寄存器Rs具有其中說明了存儲(chǔ)器9中的相應(yīng)地址的第一位段30。信號#disp說明了涉及在源寄存器中所說明的地址的地址距離,該地址因此確定了當(dāng)前的地址。第二位段31含有位置指針bit_pos,該位置指針bit_pos說明了,應(yīng)在當(dāng)前地址的哪個(gè)位置上讀出位長度為#bits的數(shù)據(jù)。于是,將從堆棧存儲(chǔ)器9中讀出的位段32插入到具有內(nèi)容Rd的目標(biāo)寄存器的位段33中。
在此,在圖4中的實(shí)例中,以目標(biāo)寄存器Rd的零開始地將位段32寫入位段33中,可是按照實(shí)施方案也可以在目標(biāo)寄存器Rd的任意位置寫入。
借助本發(fā)明方法,在源寄存器7的保持恒定的內(nèi)容Rs中,持續(xù)地將來自堆棧存儲(chǔ)器9的數(shù)據(jù)段32寫入位置33上的目標(biāo)寄存器中。地址距離#disp在此始終保持恒定。僅僅更新下一個(gè)讀出步驟的各自的位的位置bit_pos。
對于第一讀出步驟n例如適用nbit_pos=16;#bits=10對于下一個(gè)讀出步驟n+1,于是在32位的數(shù)據(jù)字的情況下適用n+1bit_pos=10+16=26;#bits=6在有利的改進(jìn)方案中,對于數(shù)據(jù)段32到達(dá)堆棧存儲(chǔ)器9中的相應(yīng)的數(shù)據(jù)字34的末端的情況,實(shí)現(xiàn)進(jìn)位(Uebertrag)到位段30中的地址內(nèi)容。在此,將存放在位段30中的地址與一相加。這引起,堆棧存儲(chǔ)器9中的地址向下偏移了一行,并且因此在恒定的地址距離時(shí)也將當(dāng)前的地址向下偏移了一行。除此之外,通過進(jìn)位將位置指針由于位段31中的位的位置的復(fù)位而設(shè)置到零,以致可以從零開始地讀出下一行中的數(shù)據(jù)字。
圖5示處實(shí)施本發(fā)明方法的程控單元的方框電路圖,該方法用于借助根據(jù)圖4的間接尋址來移動(dòng)位字段。圖5也像上述的圖3那樣僅僅示出程控單元的示意圖,也就是在那里為了更好的清晰度沒有示出尤其不是直接對于描述本發(fā)明所必需的功能單元。
區(qū)別于圖3的直接尋址,未將指令代碼#reg0、#reg1輸入耦合到指令譯碼器6中,而是直接輸入耦合到寄存器20中。信號#reg0、#reg1對應(yīng)于源寄存器或目標(biāo)寄存器的寄存器內(nèi)容Rs、Rd。
指令譯碼器6生成輸出信號#disp,該輸出信號#disp在加法器40中與寄存器20的輸出信號A一起相加。從中得出的信號表示堆棧存儲(chǔ)器9中的當(dāng)前的地址,將該當(dāng)前的地址輸送給堆棧存儲(chǔ)器9的地址輸入a_mem。在堆棧存儲(chǔ)器9的輸出o_mem上,從各自的當(dāng)前的地址出發(fā),給桶式移位器11輸送要讀出的位段。
此外,指令譯碼器6還生成被輸送給掩模發(fā)生器22的信號#bits,該掩模發(fā)生器22從此出發(fā)生成被輸送給桶式移位器11的信號mask。該桶式移位器11從該信號mask和從由堆棧存儲(chǔ)器9讀出的數(shù)據(jù)信號中生成被寫入到目標(biāo)寄存器20中的已移位的數(shù)據(jù)信號。除此之外,更新下一個(gè)尋址的位置指針。
圖5中的程控單元此外還具有用于控制從存儲(chǔ)器9中的讀過程的控制單元41。通過由指令譯碼器6輸送給控制單元41的信號#cs,才使得對堆棧存儲(chǔ)器9的存儲(chǔ)器存取有可能。為此目的,堆棧存儲(chǔ)器9具有控制輸入cs_mem,控制單元41的由信號#cs導(dǎo)出的控制信號cs_o可被輸入耦合到該控制輸入cs_mem中。
在已實(shí)現(xiàn)的讀操作或?qū)懖僮髦螅瑢⑼瑯佑芍噶钭g碼器6提供使用的信號#auto_incrememt用于控制讀指針或?qū)懼羔樀倪f增或也可是遞減。
在有利的改進(jìn)方案中,在存儲(chǔ)器9的數(shù)據(jù)輸出o_mem和桶式移位器11之間裝設(shè)超高速緩沖存儲(chǔ)器42。超高速緩沖存儲(chǔ)器42此外與輸出或者存儲(chǔ)器單元41端相連接,并且因此可以施加控制信號cs_o。通過輸入adr給控制單元41連接了各自當(dāng)前的地址,利用該地址可由寄存器20來尋址存儲(chǔ)器9??刂茊卧?1將該當(dāng)前的地址與之前已經(jīng)輸入耦合的地址進(jìn)行比較,并且因此確定,當(dāng)前地址是否事先曾已經(jīng)存在。如果該比較得出了,該地址已經(jīng)存在,則通過控制信號cs_o去激活存儲(chǔ)器9。相反,從超高速緩沖存儲(chǔ)器42中讀出相應(yīng)的數(shù)據(jù)。從超高速緩沖存儲(chǔ)器42中讀出的位段通過桶式移位器11來移動(dòng),并且通過掩模發(fā)生器21來掩蔽,并然后作為新的基址重寫到寄存器20中的目標(biāo)寄存器中。對此的前提是,對應(yīng)于各當(dāng)前地址的數(shù)據(jù)還存在于超高速緩沖存儲(chǔ)器42中。由于對于該十分有利的實(shí)施方案不是專門訪問堆棧存儲(chǔ)器9,而是可以直接從超高速緩沖存儲(chǔ)器42中讀出相應(yīng)的數(shù)據(jù),所以有利地得出了能耗的有意義的降低。
盡管以上借助優(yōu)選的實(shí)施例已說明了本發(fā)明,但是本發(fā)明不局限于此,而是可以以多種多樣的方式來修改。
因此程控單元可以例如被構(gòu)造為微控制器、微處理器、信號處理器等等。在此也可以涉及具有流水線架構(gòu)的處理器或者協(xié)議處理器。
除此之外,以上已借助32位處理器架構(gòu)說明了本發(fā)明,可是本發(fā)明不局限于此。更確切地說,這里可以裝設(shè)具有64位、16位、8位或者任意其他的位長度的任意的處理器架構(gòu)。
本發(fā)明也不局限于以上的、亦即直接的寄存器尋址或利用位移的間接的寄存器尋址的尋址方式,而是可被擴(kuò)展到任意的尋址方式上。
除此之外,所說明的流水線結(jié)構(gòu)也可以具有多于或少于三級。
本發(fā)明此外還不固定到被構(gòu)造為寄存器的存儲(chǔ)器的讀出或?qū)懭肷?,而是可以在本發(fā)明的范圍內(nèi)被擴(kuò)展用于例如地址寄存器或者數(shù)據(jù)寄存器的任意存儲(chǔ)器的讀出或?qū)懭?,但是也可被擴(kuò)展到像RAM、SRAM等等的數(shù)據(jù)存儲(chǔ)器上。
在以上的實(shí)施例中,第一和/或第二位字段被構(gòu)造為32位寬的數(shù)據(jù)字,并且要讀出的位段具有8位的位長度。但是本發(fā)明不局限于此,而是當(dāng)然可被擴(kuò)展到任意寬的位字段上。重要的只是,位段具有至少一個(gè)相同的或者比位字段小的位長度。
參考符號列表1 程控單元2-4 流水線級5 指令存儲(chǔ)器、程序存儲(chǔ)器6 指令譯碼器7 源寄存器8 計(jì)算單元、ALU9 數(shù)據(jù)存儲(chǔ)器10 輸出接線11 桶式移位器12 目標(biāo)寄存器13 附加的寄存器20 寄存器21 多路復(fù)用器22 掩模發(fā)生器23-25 加法器26-27 多路復(fù)用器30 地址的位段31 位置指針的位段32 要讀出的數(shù)據(jù)的位段33 要讀入的數(shù)據(jù)的位段34 數(shù)據(jù)字、數(shù)據(jù)內(nèi)容40 加法器41 控制單元42 超高速緩沖存儲(chǔ)器
權(quán)利要求
1.用于由于實(shí)施指令而在程控單元的存儲(chǔ)設(shè)備中移動(dòng)位字段的方法,其中,將第一存儲(chǔ)單元內(nèi)的位段移動(dòng)到第二存儲(chǔ)單元中,該方法具有以下的方法步驟(a)在第一起始點(diǎn)上開始地,從所述第一存儲(chǔ)單元的第一位字段中讀出具有第一位長度的位段;(b)在第二起始點(diǎn)上開始地,將所讀出的位段存儲(chǔ)到所述第二存儲(chǔ)單元的第一位字段中;(c)將所述第一和/或所述第二起始點(diǎn)更新了預(yù)定的值;(d)存儲(chǔ)針對隨后的方法步驟的所更新的第一和/或第二起始點(diǎn)。
2.按權(quán)利要求1所述的方法,其特征在于,在所述方法步驟(d)之后規(guī)定以下的方法步驟(e)返回到所述方法步驟(a)的回跳。
3.按權(quán)利要求1或2之一所述的方法,其特征在于,在所述方法步驟(a)之前進(jìn)行初始化。
4.按權(quán)利要求1或2之一所述的方法,其特征在于,在所述方法步驟(a)之前進(jìn)行所述起始點(diǎn)和/或所述地址的復(fù)位。
5.按以上權(quán)利要求之一所述的方法,其特征在于,在所述方法步驟(a)和(c)之間處理所讀出的位段。
6.按以上權(quán)利要求之一所述的方法,其特征在于,所述預(yù)定的值在所述第一起始點(diǎn)的情況下是第一偏移值而在所述第二起始點(diǎn)的情況下是第二偏移值。
7.按權(quán)利要求6所述的方法,其特征在于,所述第一偏移值等于所述第二偏移值。
8.按權(quán)利要求6或7之一所述的方法,其特征在于,所述第一偏移值和/或所述第二偏移值相同地對應(yīng)于所述位段的位長度。
9.按權(quán)利要求6至8之一所述的方法,其特征在于,所述第一和所述第二偏移值是相等的。
10.按權(quán)利要求6至9之一所述的方法,其特征在于,通過兩個(gè)(立即)值的相加來更新所述偏移值。
11.按權(quán)利要求6至10之一所述的方法,其特征在于,通過所述位長度的相加來更新所述偏移值。
12.按以上權(quán)利要求之一所述的方法,其特征在于,所述第一和所述第二起始點(diǎn)不是相等的。
13.按以上權(quán)利要求之一所述的方法,其特征在于,將所述方法用于進(jìn)行位字段操作。
14.按以上權(quán)利要求之一所述的方法,其特征在于,在所述直接寄存器尋址時(shí)應(yīng)用所述方法,并且將所述第一存儲(chǔ)單元構(gòu)造為用于存儲(chǔ)地址的源寄存器,而將所述第二存儲(chǔ)單元構(gòu)造為目標(biāo)寄存器。
15.按權(quán)利要求1至13之一所述的方法,其特征在于,在存儲(chǔ)器的所述寄存器間接尋址時(shí)應(yīng)用所述方法,并且將所述第一存儲(chǔ)單元構(gòu)造為半導(dǎo)體存儲(chǔ)器、尤其是構(gòu)造為分批組織的存儲(chǔ)器(堆棧存儲(chǔ)器),而將所述第二存儲(chǔ)單元構(gòu)造為目標(biāo)寄存器。
16.按以上權(quán)利要求之一所述的方法,其特征在于,存儲(chǔ)所述最后的地址,并且將所述當(dāng)前地址與所述最后的、所存儲(chǔ)的地址進(jìn)行比較,其中,對于當(dāng)前的和所存儲(chǔ)的地址的比較得出了這些地址是相同的情況,不激活并因此不讀出所述第一存儲(chǔ)單元。
17.按權(quán)利要求1至16之一所述的方法,其特征在于,存儲(chǔ)所述最后的地址,并且將所述當(dāng)前地址與所述最后的、所存儲(chǔ)的地址進(jìn)行比較,其中,對于當(dāng)前的和所存儲(chǔ)的地址的比較得出了這些地址是不相同的情況,從所述第一存儲(chǔ)單元中讀出所述數(shù)據(jù)。
18.按權(quán)利要求17所述的方法,其特征在于,將來自所述第一存儲(chǔ)單元的數(shù)據(jù)寫入超高速緩沖存儲(chǔ)器。
19.按以上權(quán)利要求之一所述的方法,其特征在于,將所述被分配給當(dāng)前地址的位段從超高速緩沖存儲(chǔ)器中讀出到所述第二存儲(chǔ)單元中。
20.按以上權(quán)利要求之一所述的方法,其特征在于,對于在所述第一位字段內(nèi)的位段到達(dá)相應(yīng)的位字段的末端的情況,實(shí)現(xiàn)進(jìn)位到被分配給所述位字段的地址。
21.按權(quán)利要求20所述的方法,其特征在于,在所述進(jìn)位中,實(shí)現(xiàn)被分配給所述位字段的地址與一的相加。
22.按以上權(quán)利要求之一所述的方法,其特征在于,所述位段是要讀出的和要處理的日期的組成部分。
23.按權(quán)利要求1至21之一所述的方法,其特征在于,所述位段是要讀出的和要處理的地址的組成部分。
24.按以上權(quán)利要求之一所述的方法,其特征在于,所述位字段包含數(shù)據(jù)字、或該數(shù)據(jù)字的小部分或者多個(gè)該數(shù)據(jù)字。
25.按以上權(quán)利要求之一所述的方法,其特征在于,在重復(fù)實(shí)施指令時(shí),相繼處理不同的位字段。
26.用于處理處理器、尤其是具有流水線架構(gòu)的處理器中的指令的程控單元,其具有-其中存放了指令的存儲(chǔ)器,-具有至少一個(gè)存儲(chǔ)單元,從該存儲(chǔ)單元中可讀出和/或可以重新插入位段和/或位字段,-具有至少一個(gè)附加的寄存器,用于借助按以上權(quán)利要求之一所述的方法來存儲(chǔ)所更新的第一和/或第二起始點(diǎn),-具有至少一個(gè)設(shè)備,用于計(jì)算出所更新的第一和/或第二起始點(diǎn),-具有用于進(jìn)行位字段操作的設(shè)備,該設(shè)備將所述第一位字段內(nèi)的位段移動(dòng)到所述第二位字段的范圍中。
27.按權(quán)利要求26所述的程控單元,其特征在于,裝設(shè)指令譯碼器,用于從所述存儲(chǔ)器中讀出和譯碼至少一個(gè)指令。
28.按權(quán)利要求26或27之一所述的程控單元,其特征在于,在直接的寄存器尋址的情況下,所述第一存儲(chǔ)單元被構(gòu)造為用于存儲(chǔ)地址的源寄存器,而所述第二存儲(chǔ)單元被構(gòu)造為目標(biāo)寄存器。
29.按權(quán)利要求26或27之一所述的程控單元,其特征在于,在寄存器間接尋址的情況下,所述第一存儲(chǔ)單元是半導(dǎo)體存儲(chǔ)器,尤其是被構(gòu)造為成批組織的存儲(chǔ)器(堆棧存儲(chǔ)器),而所述第二存儲(chǔ)單元被構(gòu)造為目標(biāo)寄存器。
30.按權(quán)利要求26至29之一所述的程控單元,其特征在于,裝設(shè)跨接,借助該跨接可以按照釋放信號的標(biāo)準(zhǔn)來跨接或接通所述附加的寄存器。
31.按權(quán)利要求26至30之一所述的程控單元,其特征在于,裝設(shè)控制單元,該控制單元在所述第一存儲(chǔ)單元尋址時(shí)將所述當(dāng)前地址與之前已經(jīng)存在的地址進(jìn)行比較,其中,對于該比較得出所述當(dāng)前地址之前已經(jīng)存在的情況,未激活地設(shè)置或跨接所述第一存儲(chǔ)單元。
32.按權(quán)利要求31所述的程控單元,其特征在于,裝設(shè)超高速緩沖存儲(chǔ)器,其中,對于所述控制單元識別出所述當(dāng)前地址之前已經(jīng)存在的情況,將被分配給所述當(dāng)前地址的位段從超高速緩沖存儲(chǔ)器中讀出到所述第二存儲(chǔ)單元中。
全文摘要
本發(fā)明涉及一種方法和一種程控單元,用于由于實(shí)施指令而在程控單元的存儲(chǔ)設(shè)備中移動(dòng)位字段,其中,將第一存儲(chǔ)單元內(nèi)的位段移動(dòng)到第二存儲(chǔ)單元中,該方法具有以下的方法步驟(a)在第一起始點(diǎn)上開始地,從第一存儲(chǔ)單元的第一位字段中讀出具有第一位長度的位段;(b)在第二起始點(diǎn)上開始地,將所讀出的位段存儲(chǔ)到第二存儲(chǔ)單元的第一位字段中;(c)將第一和/或第二起始點(diǎn)更新了預(yù)定的值;(d)存儲(chǔ)針對隨后的方法步驟的所更新的第一和/或第二起始點(diǎn)。
文檔編號G06F9/308GK1799025SQ200480015195
公開日2006年7月5日 申請日期2004年3月23日 優(yōu)先權(quán)日2003年4月2日
發(fā)明者聶小寧, T·瓦爾 申請人:因芬尼昂技術(shù)股份公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1