專(zhuān)利名稱(chēng):用于提高Java處理器取指令帶寬的字節(jié)碼緩沖裝置的制作方法
技術(shù)領(lǐng)域:
本實(shí)用新型涉及Java處理器,具體為一種用于提高Java處理器取指令帶寬的字 節(jié)碼緩沖裝置。
(二)
背景技術(shù):
計(jì)算機(jī)的指令集一般分為兩類(lèi)一類(lèi)是固定長(zhǎng)度的指令集,即不論指令類(lèi)型如何, 都保持相同的長(zhǎng)度,它的優(yōu)點(diǎn)是在取指令的同時(shí)就可以判斷并取到一條完整的指令,便于 指令的流水執(zhí)行,其不足之處是指令都占據(jù)相同的長(zhǎng)度,不利于節(jié)省指令存儲(chǔ)空間,固定長(zhǎng) 度的指令集多用于簡(jiǎn)單指令集計(jì)算機(jī)(RISC)系統(tǒng)中;另一類(lèi)是變長(zhǎng)指令集,即不同的指 令具有不同的長(zhǎng)度,它的優(yōu)點(diǎn)是可以盡量縮減指令長(zhǎng)度,有利于節(jié)省指令存儲(chǔ)空間,其不足 之處是無(wú)法在取指令的同時(shí)確定該條指令的完整長(zhǎng)度,只能在對(duì)操作碼部分譯碼之后才能 確定并讀取后續(xù)部分,不利于指令的流水執(zhí)行,所以多用于復(fù)雜指令集計(jì)算機(jī)(CISC)系統(tǒng) 中。 Java處理器是指能以硬件直接執(zhí)行Java虛擬機(jī)指令集的處理器。Java虛擬機(jī)的 指令集(即字節(jié)碼)屬于長(zhǎng)度不固定的指令集,其指令除了極個(gè)別之外,絕大多數(shù)不超過(guò)4 個(gè)字節(jié)。Java處理器通常的做法,就是和指令存儲(chǔ)器以l個(gè)字節(jié)寬度的接口進(jìn)行字節(jié)碼讀 取,在取指令階段只讀取第一個(gè)字節(jié)(操作碼所在的字節(jié)),而在譯碼段獲取到整個(gè)字節(jié)碼 長(zhǎng)度后再進(jìn)行后續(xù)字節(jié)的讀取。由于要多次以l個(gè)字節(jié)的寬度訪問(wèn)指令存儲(chǔ)器,影響到了 處理器性能的提高。 目前也有通過(guò)指令緩存來(lái)提高取指令帶寬的方法,它是將字節(jié)碼從指令存儲(chǔ)器讀 出并以4字節(jié)為單位寫(xiě)入一個(gè)由多個(gè)寄存器組成的緩沖,然后根據(jù)指令實(shí)際長(zhǎng)度從寄存器 緩沖的輸出多路開(kāi)關(guān)中讀取正確的字節(jié)碼;如果讀出的指令超過(guò)一個(gè)字,則將寄存器緩沖 中的數(shù)據(jù)向前移動(dòng)一次。這種方法的特點(diǎn)是寄存器組較大時(shí)可以提供較好的指令預(yù)取性 能,但是指令轉(zhuǎn)移等會(huì)導(dǎo)致其利用率下降,所以需要確定合適的寄存器組大小,這樣既能較 好地滿足譯碼部件的取指需求,又能減少硬件的設(shè)備量。
發(fā)明內(nèi)容針對(duì)上述問(wèn)題,本實(shí)用新型提供一種用于提高Java處理器取指令帶寬的字節(jié)碼
緩沖裝置,使用該裝置可以提高處理器的性能。 本實(shí)用新型裝置的技術(shù)方案是這樣的 其包括字節(jié)碼寄存器、多路選擇模塊、字節(jié)碼緩沖以及控制模塊,所述字節(jié)碼寄存 器、多路選擇模塊及字節(jié)碼緩沖順序相連;所述字節(jié)碼寄存器的輸入端與所述指令存儲(chǔ)器 相連,所述字節(jié)碼緩沖的輸出端與Java處理器的譯碼段相連;所述控制模塊的輸入端與 Java處理器的譯碼段相連,所述控制模塊的輸出端分別與所述字節(jié)碼寄存器、多路選擇模 塊及字節(jié)碼緩沖相連,對(duì)其進(jìn)行邏輯控制;所述字節(jié)碼寄存器是32位的,用來(lái)存儲(chǔ)從指令 存儲(chǔ)器讀出的以32位為單位的字節(jié)碼;所述字節(jié)碼緩沖是64位的,其高4個(gè)字節(jié)與Java
3處理器的譯碼段相連,為其提供一個(gè)完整的字節(jié)碼。 其進(jìn)一步的技術(shù)方案為 所述多路選擇模塊包括第一級(jí)多路選擇器及第二級(jí)多路選擇器,第一級(jí)多路選擇
器負(fù)責(zé)將字節(jié)碼寄存器的有效字節(jié)按照字節(jié)順序選擇到8個(gè)字節(jié)序列中的正確位置,第二
級(jí)多路選擇器負(fù)責(zé)將第一級(jí)多路選擇器輸出的字節(jié)以及原字節(jié)碼緩沖中的剩余字節(jié)統(tǒng)一
排序并送到字節(jié)碼緩沖的正確位置; 所述字節(jié)碼緩沖采用具有預(yù)取功能的cache 。 本實(shí)用新型所提出的字節(jié)碼緩沖長(zhǎng)度固定在64位,其輸出固定在最高的4個(gè)字 節(jié),避免了輸出時(shí)對(duì)多路選擇器的需要。其主要目的就是"整存零取",以和處理器相同的工 作頻率把32位為單位的字節(jié)碼送入字節(jié)碼緩沖,以不同長(zhǎng)度讀出并將后續(xù)字節(jié)碼往前推, 使可用的字節(jié)碼總保持在固定的位置。 本實(shí)用新型在字節(jié)碼緩沖的可用空間不小于4個(gè)字節(jié)時(shí),就從寄存器讀取4個(gè)字 節(jié),并通過(guò)多路選擇模塊將其送到緩沖的正確位置,使待執(zhí)行字節(jié)碼總完整存在于高字節(jié) 中,因?yàn)榇龍?zhí)行字節(jié)碼總能在一個(gè)周期內(nèi)取完整,減少了訪存次數(shù),提高了取指令帶寬。 本實(shí)用新型從兩方面提供處理器性能,一是在取指令同時(shí)將可能的操作數(shù)同時(shí)取 出,避免了多次訪問(wèn)存儲(chǔ)器;二是利用取指令每次4字節(jié),而多數(shù)字節(jié)碼不足4字節(jié),產(chǎn)生一 定時(shí)間可用于將指令預(yù)取到字節(jié)碼緩沖,從而隱藏了訪存時(shí)間。
圖1為本實(shí)用新型裝置的結(jié)構(gòu)示意及方框圖; 圖2為本實(shí)用新型中的多路選擇模塊的數(shù)據(jù)通路示意及方框圖; 圖3為本實(shí)用新型中的控制模塊的示意及方框圖; 圖4為本實(shí)用新型中的字節(jié)碼緩沖的輸出接口示意及方框圖。
具體實(shí)施方式如圖1所示,本實(shí)用新型裝置包括字節(jié)碼寄存器2、多路選擇模塊3、字節(jié)碼緩沖4 以及控制模塊1,字節(jié)碼寄存器2、多路選擇模塊3及字節(jié)碼緩沖4順序相連。字節(jié)碼寄存 器2的輸入端與指令存儲(chǔ)器相連,字節(jié)碼緩沖4的輸出端與Java處理器的譯碼段相連;控 制模塊1的輸入端與Java處理器的譯碼段相連,控制模塊1的輸出端分別與字節(jié)碼寄存器 2、多路選擇模塊3及字節(jié)碼緩沖4相連,對(duì)其進(jìn)行邏輯控制。 字節(jié)碼寄存器2是32位的,用來(lái)存儲(chǔ)從指令存儲(chǔ)器讀出的以32位為單位的字節(jié) 碼。字節(jié)碼緩沖4是64位的,其高4個(gè)字節(jié)與Java處理器的譯碼段相連,為其提供一個(gè)完 整的字節(jié)碼,字節(jié)碼長(zhǎng)度可以在1到4個(gè)字節(jié)之間變化。 如圖2所示,多路選擇模塊3包括第一級(jí)多路選擇器5及第二級(jí)多路選擇器6。第 一級(jí)多路選擇器5負(fù)責(zé)將字節(jié)碼寄存器2的有效字節(jié)按照字節(jié)順序選擇到8個(gè)字節(jié)序列中 的正確位置,第二級(jí)多路選擇器6負(fù)責(zé)將第一級(jí)多路選擇器5輸出的字節(jié)以及原字節(jié)碼緩 沖中的剩余字節(jié)統(tǒng)一排序并送到字節(jié)碼緩沖4的正確位置。 從字節(jié)碼寄存器2讀出的4個(gè)字節(jié)同時(shí)連接到所有第一級(jí)多路選擇器5,每個(gè)第一 級(jí)多路選擇器5可以選擇其中的一個(gè)從存儲(chǔ)器讀取的新字節(jié)作為輸出,因此通過(guò)第一級(jí)多路選擇器5可以將每個(gè)字節(jié)送到8個(gè)字節(jié)位置的正確位置并按順序排列好。第二級(jí)多路選 擇器6中,每個(gè)多路選擇的輸入端包含了可能出現(xiàn)在這個(gè)位置的所有的字節(jié),通過(guò)第二級(jí)多 路選擇器6就把新讀進(jìn)來(lái)的4個(gè)字節(jié)加上原來(lái)字節(jié)碼緩沖4中當(dāng)前字節(jié)碼執(zhí)行時(shí)沒(méi)有消耗掉 的字節(jié)一起進(jìn)行排序。經(jīng)過(guò)一個(gè)時(shí)鐘周期后,經(jīng)過(guò)排序的字節(jié)碼就被寫(xiě)入到字節(jié)碼緩沖4中 了 。因?yàn)樽铋L(zhǎng)的字節(jié)碼不超過(guò)4個(gè)字節(jié),所以只用8個(gè)字節(jié)的字節(jié)碼緩沖4就足夠了 。 在具體實(shí)施時(shí)需要注意因?yàn)镴ava虛擬機(jī)指令集中存在個(gè)別超出4字節(jié)的字節(jié) 碼,需要在Java處理器直接執(zhí)行之前將這些超出4字節(jié)的字節(jié)碼進(jìn)行轉(zhuǎn)換;因?yàn)樽止?jié)碼緩 沖的寬度固定在64位即8個(gè)字節(jié),因此預(yù)取性能較弱,只能在緩沖中有足夠空間可用時(shí),以 和處理器執(zhí)行頻率相同的頻率從指令cache中讀取字節(jié)碼,因此,建議采用具有預(yù)取功能 的cache,利用小于4的字節(jié)碼執(zhí)行產(chǎn)生的預(yù)取時(shí)間來(lái)減小訪存的性能損失。 如圖3所示,是控制模塊1的示意圖,說(shuō)明了對(duì)字節(jié)碼緩沖裝置進(jìn)行控制所需要的 輸入條件及其輸出的控制信號(hào)。其中序號(hào)21由處理器的譯碼段輸出,用來(lái)選擇從指令存儲(chǔ) 器讀入的實(shí)際有效字節(jié)數(shù)。序號(hào)13是由PC的最低兩位組成,用來(lái)在指令跳轉(zhuǎn)、中斷、方法 調(diào)用、返回等情況下,指出字節(jié)碼的地址對(duì)齊情況,從而指出從存儲(chǔ)器讀出的真正有效字節(jié) 數(shù)。序號(hào)14是在指令流順序執(zhí)行時(shí),從存儲(chǔ)器讀出的4個(gè)字節(jié)數(shù)。序號(hào)15是字節(jié)碼長(zhǎng)度, 即本條指令執(zhí)行之后可以騰出的緩沖空間。序號(hào)16是在序號(hào)9有效時(shí)待取的字節(jié)數(shù)。序 號(hào)18是無(wú)論序號(hào)9是否有效的待取字節(jié)數(shù)。序號(hào)19是一個(gè)時(shí)鐘周期后字節(jié)碼緩沖具有的 可用空間。序號(hào)20是當(dāng)前周期字節(jié)碼緩沖具有的可用空間,它需要加上當(dāng)前正在執(zhí)行的字 節(jié)碼將要消耗掉的空間15,再減去新取進(jìn)來(lái)的字節(jié)數(shù)18。序號(hào)17是當(dāng)前正在執(zhí)行的字節(jié) 碼執(zhí)行之后字節(jié)碼緩沖具有的空間,將其和要新讀進(jìn)來(lái)的字節(jié)數(shù)比較,產(chǎn)生能否繼續(xù)取的 控制信號(hào)9。序號(hào)7說(shuō)明當(dāng)前指令存儲(chǔ)器或指令cache是否有字節(jié)碼可讀。因此序號(hào)7和 序號(hào)9有一條不滿足,序號(hào)8就控制讀字節(jié)碼操作轉(zhuǎn)入等待。序號(hào)10、11用來(lái)根據(jù)將要消 耗掉的空間以及新讀進(jìn)來(lái)的字節(jié)數(shù)等情況,產(chǎn)生控制第一級(jí)多路選擇器5和第二級(jí)多路選 擇器6的控制信號(hào),用來(lái)將新讀進(jìn)來(lái)的字節(jié)碼送到正確位置。序號(hào)12用來(lái)控制字節(jié)碼緩沖 4是否更新。 圖4是字節(jié)碼緩沖的輸出接口示意圖,其中第一個(gè)字節(jié)永遠(yuǎn)是待執(zhí)行的字節(jié)碼操 作碼所在字節(jié),通過(guò)Byte2mov生成邏輯26可獲得該字節(jié)碼執(zhí)行后將消耗掉的字節(jié)數(shù)15, Byte2mov生成邏輯26的輸入是字節(jié)碼的操作碼部分,輸出是當(dāng)前字節(jié)碼的長(zhǎng)度,用來(lái)表示 當(dāng)前字節(jié)碼執(zhí)行后將消耗掉的字節(jié)數(shù)。最高4個(gè)字節(jié)同時(shí)送到處理器的譯碼段22、23、24 和25,包括操作碼和可能存在的操作數(shù),因?yàn)榧词共粫?huì)用到,同時(shí)取出來(lái)總沒(méi)有壞處。 本實(shí)用新型裝置的使用方法如下 字節(jié)碼寄存器2從32位對(duì)齊的指令存儲(chǔ)器地址處一次讀取4個(gè)字節(jié),通過(guò)多路選 擇模塊3送到字節(jié)碼緩沖4,字節(jié)碼緩沖4的高4個(gè)字節(jié)為Java處理器的譯碼段提供一個(gè) 完整的字節(jié)碼,該字節(jié)碼為1 4個(gè)字節(jié)。 控制模塊1根據(jù)當(dāng)前被執(zhí)行字節(jié)碼實(shí)際消耗字節(jié)數(shù),將其從字節(jié)碼緩沖4空間總 量減去,并判斷字節(jié)碼緩沖4是否能提供不小于將要送入的有效字節(jié)數(shù)的空間,判斷是否 將新的字節(jié)碼送入字節(jié)碼緩沖4。 控制模塊1根據(jù)字節(jié)碼地址的對(duì)齊情況,從字節(jié)碼寄存器2中選擇真正有效字節(jié) 送多路選擇模塊3。
權(quán)利要求用于提高Java處理器取指令帶寬的字節(jié)碼緩沖裝置,包括字節(jié)碼寄存器(2)、多路選擇模塊(3)、字節(jié)碼緩沖(4)以及控制模塊(1),其特征在于所述字節(jié)碼寄存器(2)、多路選擇模塊(3)及字節(jié)碼緩沖(4)順序相連;所述字節(jié)碼寄存器(2)的輸入端與所述指令存儲(chǔ)器相連,所述字節(jié)碼緩沖(4)的輸出端與Java處理器的譯碼段相連;所述控制模塊(1)的輸入端與Java處理器的譯碼段相連,所述控制模塊(1)的輸出端分別與所述字節(jié)碼寄存器(2)、多路選擇模塊(3)及字節(jié)碼緩沖(4)相連,對(duì)其進(jìn)行邏輯控制;所述字節(jié)碼寄存器(2)是32位的,用來(lái)存儲(chǔ)從指令存儲(chǔ)器讀出的以32位為單位的字節(jié)碼;所述字節(jié)碼緩沖(4)是64位的,其高4個(gè)字節(jié)與Java處理器的譯碼段相連,為其提供一個(gè)完整的字節(jié)碼。
2. 根據(jù)權(quán)利要求l所述的用于提高Java處理器取指令帶寬的字節(jié)碼緩沖裝置,其特征 在于所述多路選擇模塊(3)包括第一級(jí)多路選擇器(5)及第二級(jí)多路選擇器(6),第一級(jí) 多路選擇器(5)負(fù)責(zé)將字節(jié)碼寄存器(2)的有效字節(jié)按照字節(jié)順序選擇到8個(gè)字節(jié)序列中 的正確位置,第二級(jí)多路選擇器(6)負(fù)責(zé)將第一級(jí)多路選擇器(5)輸出的字節(jié)以及原字節(jié) 碼緩沖中的剩余字節(jié)統(tǒng)一排序并送到字節(jié)碼緩沖(4)的正確位置。
3. 根據(jù)權(quán)利要求l所述的用于提高Java處理器取指令帶寬的字節(jié)碼緩沖裝置,其特征 在于所述字節(jié)碼緩沖(4)采用具有預(yù)取功能的cache。
專(zhuān)利摘要本實(shí)用新型涉及用于提高Java處理器取指令帶寬的字節(jié)碼緩沖裝置。本實(shí)用新型中,字節(jié)碼寄存器、多路選擇模塊及字節(jié)碼緩沖順序相連;字節(jié)碼寄存器的輸入端與指令存儲(chǔ)器相連,字節(jié)碼緩沖的輸出端與Java處理器的譯碼段相連;控制模塊的輸入端與Java處理器的譯碼段相連,控制模塊的輸出端分別與字節(jié)碼寄存器、多路選擇模塊及字節(jié)碼緩沖相連;字節(jié)碼寄存器是32位的,字節(jié)碼緩沖是64位的,其高4個(gè)字節(jié)與Java處理器的譯碼段相連。本實(shí)用新型在字節(jié)碼緩沖的可用空間不小于4個(gè)字節(jié)時(shí),從寄存器讀取4個(gè)字節(jié),并通過(guò)多路選擇模塊將其送到緩沖的正確位置,使待執(zhí)行字節(jié)碼總完整存在于高字節(jié)中,減少了訪存次數(shù),提高了取指令帶寬。
文檔編號(hào)G06F9/30GK201548950SQ20092023236
公開(kāi)日2010年8月11日 申請(qǐng)日期2009年9月30日 優(yōu)先權(quán)日2009年9月30日
發(fā)明者任小龍, 張平, 柴志雷, 梁久禎 申請(qǐng)人:江南大學(xué)