專利名稱:用于實時Java處理器的字節(jié)碼高速緩存裝置的制作方法
技術(shù)領(lǐng)域:
本實用新型涉及計算機(jī)領(lǐng)域中Java處理器的高速緩存機(jī)制,具體為一種用于實時Java處理器的字節(jié)碼(指令)高速緩存裝置。
背景技術(shù):
為了使存儲器的訪問速度盡可能與CPU的執(zhí)行速度相匹配,目前計算機(jī)系統(tǒng)一般 通過多層次的存儲器結(jié)構(gòu)滿足訪問速度、存儲容量和制造成本的多方面需求。通常將訪問 速度快,但制造成本高的存儲器以較小的存儲容量設(shè)置在離CPU較近的位置,它保存離CPU 較遠(yuǎn)的較大存儲器的一個數(shù)據(jù)子集。根據(jù)程序局部性原理,CPU大多數(shù)情況會在離它較近 的高速存儲器中訪問到所需數(shù)據(jù),只有少數(shù)情況才需要訪問較遠(yuǎn)的存儲器,并將一批數(shù)據(jù) 復(fù)制到高速存儲器中。在存儲器層次結(jié)構(gòu)設(shè)計合理的情況下,其整體訪問速度會接近最近 一級的訪問速度,而存儲容量及成本則接近最遠(yuǎn)一級的。高速緩存(即Cache)處于存儲器 層次結(jié)構(gòu)中最靠近CPU的位置,對CPU的性能起著至關(guān)重要的作用。由于目前CPU設(shè)計多 采用流水線技術(shù)來提高整體性能,為了減少流水線的停頓,通常把Cache分為指令Cache和 數(shù)據(jù)Cache兩部分,本實用新型針對的是指令Cache部分。在Java處理器中,由于硬件直 接執(zhí)行Java字節(jié)碼,因此指令Cache就是本實用新型所提到的字節(jié)碼高速緩存?,F(xiàn)有的指令Cache通常是通過提高命中率、減小命中時間、降低未命中開銷等方 法提高訪存平均性能,由于無法提前判斷程序執(zhí)行過程中訪問哪條指令會出現(xiàn)未命中,因 此程序最壞執(zhí)行時間無法提前靜態(tài)預(yù)測。也有通過指令預(yù)取提高指令存儲器訪問性能的, 但主要目標(biāo)也是提高平均性能,而且沒有和Java處理器特點相結(jié)合。現(xiàn)有技術(shù)中,也有針對實時Java處理器的字節(jié)碼高速緩存機(jī)制。該機(jī)制在方法調(diào) 用、返回時一次性地把將要用到的整個方法裝入高速緩存,避免在執(zhí)行時發(fā)生不命中。其優(yōu) 點是執(zhí)行時間容易靜態(tài)預(yù)測,存在的問題是裝入的方法利用率低,方法調(diào)用和返回時處理 器等待時間很長。
發(fā)明內(nèi)容針對上述問題,本實用新型提供一種用于實時Java處理器的字節(jié)碼高速緩存裝 置,使用該裝置可以提高Java處理器的性能。本實用新型裝置的技術(shù)方案是這樣的其包括字節(jié)碼計數(shù)器、高速緩存讀地址多路選擇器、高速緩存寫地址多路選擇器、 高速緩存讀地址寄存器、高速緩存寫地址寄存器、高速緩存讀地址加法器、高速緩存寫地址 加法器、字節(jié)碼可讀比較器、字節(jié)碼可寫比較器、主存儲器、高速緩存以及字節(jié)碼寄存器;字節(jié)碼計數(shù)器用來保存以字節(jié)為尋址單位的待執(zhí)行的字節(jié)碼地址,該地址經(jīng)過地 址對齊操作之后送到高速緩存寫地址多路選擇器;高速緩存讀地址多路選擇器及高速緩存寫地址多路選擇器的輸出端分別連接字 節(jié)碼可讀比較器的兩個輸入端,字節(jié)碼可讀比較器的輸出端分別連接字節(jié)碼寄存器以及高速緩存讀地址寄存器的使能端;字節(jié)碼可讀比較器用來判斷高速緩存中是否有字節(jié)碼可用,寫地址大于讀地址則 有字節(jié)碼可用,通過高速緩存讀地址加法器將當(dāng)前地址加1并在下一個時鐘來時打入高速 緩存讀地址寄存器,同時由控制信號控制選擇該地址作為輸出;主存儲器的讀地址輸入連接到高速緩存寫地址多路選擇器的輸出端,其數(shù)據(jù)輸出 連接到高速緩存的數(shù)據(jù)輸入端;高速緩存的讀地址輸入端連接于高速緩存讀地址多路選擇器的輸出端,其寫地址 輸入端連接于高速緩存寫地址多路選擇器的輸出端,其數(shù)據(jù)輸入端連接于主存儲器的數(shù)據(jù) 輸出端,其數(shù)據(jù)輸出端連接于字節(jié)碼寄存器的輸入端;字節(jié)碼寄存器的輸出端連接到Java處理器的后續(xù)段;高速緩存的讀地址輸入端及寫地址輸入端分別連接字節(jié)碼可寫比較器的兩個輸 入端,字節(jié)碼可寫比較器的輸出端連接高速緩存寫地址寄存器的使能端;字節(jié)碼可寫比較器用來判斷高速緩存有無空間存放更多字節(jié)碼,寫地址不等于讀 地址時表示有空間存放更多字節(jié)碼,通過高速緩存寫地址加法器將當(dāng)前地址加4并在下一 個時鐘來時打入高速緩存寫地址寄存器,同時由控制信號控制選擇該地址作為輸出;在控制流發(fā)生改變時,由控制信號分別控制高速緩存讀地址多路選擇器以及高速 緩存寫地址多路選擇器,選擇字節(jié)碼計數(shù)器的地址為輸出地址。其進(jìn)一步的技術(shù)方案為所述高速緩存的地址為0 (2m_l),所述主存儲器的地址為0 (2n_l);所述高速 緩存的讀地址輸入端連接于高速緩存讀地址多路選擇器輸出端的低m位,所述高速緩存的 寫地址輸入端連接于高速緩存寫地址多路選擇器輸出端的低m位;所述字節(jié)碼可讀比較器 的輸入分別是η位的高速緩存讀地址多路選擇器的(η-1) 2位以及η位的高速緩存寫地 址多路選擇器的(η-1) 2位,所述字節(jié)碼可寫比較器的輸入分別是高速緩存讀地址輸入 端的(m-Ι) 2位以及高速緩存寫地址輸入端的(m-Ι) 2位;所述高速緩存為雙端口環(huán)形存儲器;所述高速緩存的數(shù)據(jù)輸入端的總線寬度為32位,所述高速緩存的數(shù)據(jù)輸出端的寬度為8位。本實用新型的技術(shù)效果在于本實用新型利用Java字節(jié)碼不等長、多數(shù)字節(jié)碼少 于4個字節(jié)的特點,進(jìn)行一次取4個字節(jié),分多次使用完,從而產(chǎn)生預(yù)取時間;本實用新型對 Java字節(jié)碼中有一些復(fù)雜指令需要多個時鐘周期執(zhí)行,可以同時進(jìn)行大量的預(yù)取;通過對 方法調(diào)用、返回進(jìn)行改進(jìn),盡早獲得新的字節(jié)碼地址從而可以進(jìn)行正確的預(yù)??;利用主存儲 器初次讀取延時較大,接下來讀取延時較小的特點,將訪存產(chǎn)生的等待集中在基本塊的開 始,以便于進(jìn)行靜態(tài)分析。本實用新型裝置具有指令自動預(yù)取機(jī)制,可以減少因取指令帶來的CPU停頓;并 可以確定未命中發(fā)生的字節(jié)碼位置,使其訪問時間可靜態(tài)預(yù)測,在確保程序執(zhí)行可預(yù)測的 同時大大提高了 Java處理器的性能。
圖1為本實用新型裝置的內(nèi)部結(jié)構(gòu)示意圖;[0024]圖2為本實用新型中地址對齊操作的示意圖;圖3為本實用新型中基本塊的最壞情況統(tǒng)計方法示意圖;圖4為本實用新型中程序的最壞執(zhí)行時間靜態(tài)統(tǒng)計方法流程圖。
具體實施方式
如圖1所示,本實用新型所提出的裝置,包括字節(jié)碼計數(shù)器1、高速緩存讀地址多路選擇器3、高速緩存寫地址多路選擇器4、高速緩存讀地址寄存器5、高速緩存寫地址寄存 器6、高速緩存讀地址加法器7、高速緩存寫地址加法器8、字節(jié)碼可讀比較器9、字節(jié)碼可寫 比較器10、主存儲器13、高速緩存14以及字節(jié)碼寄存器15。其中,字節(jié)碼計數(shù)器1用來保存以字節(jié)為尋址單位的待執(zhí)行的字節(jié)碼地址,以字 節(jié)為尋址最小單位,由CPU的譯碼段根據(jù)當(dāng)前字節(jié)碼實際長度進(jìn)行調(diào)整。字節(jié)碼計數(shù)器1 寬度由主存儲器13地址寬度決定。字節(jié)碼計數(shù)器1的地址經(jīng)過地址對齊操作2之后送到 高速緩存寫地址多路選擇器4。圖2是地址對齊操作示意圖,因為是32位對齊,可以簡單地將最低2位接地處理。高速緩存14為雙端口環(huán)形存儲器,高速緩存14的地址為0 (2m_l)。高速緩存 14的讀地址輸入端11連接于高速緩存讀地址多路選擇器3輸出端的低m位,高速緩存14 的寫地址輸入端12連接于高速緩存寫地址多路選擇器4輸出端的低m位。字節(jié)碼可讀比較器9和字節(jié)碼可寫比較器10的輸出結(jié)果分別用來控制高速緩存 讀地址寄存器5和高速緩存寫地址寄存器6的使能端。主存儲器13的地址為0 (2n_l),字節(jié)碼可讀比較器9的輸入分別是η位的高 速緩存讀地址多路選擇器3的(η-1) 2位以及η位的高速緩存寫地址多路選擇器4的 (η-1) 2位。字節(jié)碼可讀比較器9的輸出端分別連接字節(jié)碼寄存器15以及高速緩存讀 地址寄存器5的使能端。字節(jié)碼可讀比較器9用來判斷高速緩存14中是否有字節(jié)碼可用。 因為直接比較的是主存儲器13的地址,當(dāng)讀地址落后于寫地址時說明有字節(jié)碼可讀,將讀 地址順序往下移動一個字節(jié),通過高速緩存讀地址加法器7將當(dāng)前地址加1并在下一個時 鐘來時打入高速緩存讀地址寄存器5,同時由控制信號19控制選擇該地址作為輸出。這樣 就完成了高速緩存讀地址多路選擇器3的順序遞增,同時也就完成了高速緩存14的讀地址 輸入端11的遞增。字節(jié)碼可寫比較器10的輸入分別是高速緩存讀地址輸入端11的(m-Ι) 2位以 及高速緩存寫地址輸入端12的(m-Ι) 2位。字節(jié)碼可寫比較器10的輸出端連接高速緩 存寫地址寄存器6的使能端。字節(jié)碼可寫比較器10用來判斷高速緩存14有無空間存放更 多字節(jié)碼。字節(jié)碼可寫比較器10比較的是高速緩存14的地址,因為該高速緩存14是環(huán)形 緩存,寫地址大于或小于讀地址都表明有空間可用,可以把寫地址順序往下移動一個字。通 過高速緩存寫地址加法器8將當(dāng)前地址加4并在下一個時鐘來時打入高速緩存寫地址寄存 器6,同時由控制信號19控制選擇該地址作為輸出。這樣就完成了高速緩存寫地址多路選 擇器4的順序遞增,同時也就完成了高速緩存寫地址輸入端12的遞增。主存儲器13的讀地址輸入連接到高速緩存寫地址多路選擇器4的輸出端,因為預(yù) 取就是以32位為單位讀取主存儲器13中的字節(jié)碼并將其寫入對應(yīng)的高速緩存14地址處; 主存儲器模塊的數(shù)據(jù)輸出端口是32位的端口 17,端口 17同時也是高速緩存14的數(shù)據(jù)輸入端17 。[0035]高速緩存14的數(shù)據(jù)輸入端17是32位的數(shù)據(jù)寫端口,其連接于主存儲器13的數(shù) 據(jù)輸出端。高速緩存14的數(shù)據(jù)輸出端18是8位的數(shù)據(jù)讀端口,其連接于字節(jié)碼寄存器15 的輸入端。字節(jié)碼高速緩存由高速緩存寫地址多路選擇器4所指定的地址處以32位為單 位自動預(yù)取字節(jié)碼并通過數(shù)據(jù)輸入端17寫入到寫地址輸入端12所指定的高速緩存14處; CPU在需要時從讀地址輸入端11所指定的地址處讀取字節(jié)碼并通過數(shù)據(jù)輸出端18送到字 節(jié)碼寄存器15。字節(jié)碼寄存器15用來存儲從高速緩存14讀出的字節(jié)碼并通過輸出端16提供給 Java處理器的后續(xù)段使用。該寄存器每個時鐘周期能以8位為單位提供字節(jié)碼,這就給自 動預(yù)取提供了時間。字節(jié)碼計數(shù)器1應(yīng)該在Java處理器的譯碼或執(zhí)行階段進(jìn)行更新,如果是在基本塊 內(nèi)部繼續(xù)執(zhí)行,則在譯碼階段就能根據(jù)當(dāng)前所譯碼的字節(jié)碼字節(jié)數(shù)判斷字節(jié)碼計數(shù)器1的 遞增值;如果要跳出基本塊,即控制流發(fā)生了變化,則要在執(zhí)行階段才能計算出要跳轉(zhuǎn)的新 地址;如果是方法調(diào)用、返回等復(fù)雜指令,可能還需要更多的時間才能計算出要更新的值。 圖1中的信號19用來說明當(dāng)前譯碼的字節(jié)碼是否需要改變控制流,該信號由譯碼部件產(chǎn) 生。在字節(jié)碼位于基本塊內(nèi)部時,控制流順序進(jìn)行,高速緩存讀地址多路選擇器3以 及高速緩存寫地址多路選擇器4獨(dú)立改變,由控制信號19控制高速緩存讀地址多路選擇器 3選擇地址加1作為其地址輸出,信號19控制高速緩存寫地址多路選擇器4選擇地址加4 作為其地址輸出。讀寫地址更新獨(dú)立進(jìn)行。在控制流發(fā)生改變時(如方法調(diào)用、返回,分支,跳轉(zhuǎn),中斷等),由來自譯碼段的 控制信號19分別控制高速緩存讀地址多路選擇器3以及高速緩存寫地址多路選擇器4,選 擇由地址對齊操作2送來的32位對齊的字節(jié)碼計數(shù)器1值作為新的預(yù)取起始地址,本實用 新型裝置從該起始地址開始自動讀取主存儲器13并將數(shù)據(jù)寫入高速緩存14,原來被預(yù)取 進(jìn)來的字節(jié)碼被丟棄;同時,高速緩存讀地址多路選擇器3選擇由字節(jié)碼計數(shù)器1送來的字 節(jié)對齊的字節(jié)碼計數(shù)器值作為新字節(jié)碼讀取地址。高速緩存通常是用SRAM技術(shù)來實現(xiàn),SRAM每次訪問的周期都是一樣的,而主存儲 器通常采用DRAM技術(shù)實現(xiàn),DRAM的特點是訪問第一個字與訪問后續(xù)字的時間不一樣。如 以DRAM PC-100為例,訪問第一個字所需的時間是20ns,而后續(xù)每個字所需的時間是10ns。 再考慮到嵌入式實時Java處理器的主頻一般不是很高,目前的多數(shù)實現(xiàn)都不超過100MHz, 如果以IOOMHz計算,則在每個新的基本塊預(yù)取第一個字時會出現(xiàn)20ns延時,而后續(xù)預(yù)取都 在IOns完成,而處理器的主頻也在100MHz,再加上統(tǒng)計資料顯示每32位字節(jié)碼平均需要 2. 41的周期完成,即處理器會以接近40MHz的平均頻率,IOOMHz的最高頻率訪問高速緩存, 而高速緩存的預(yù)取頻率可以達(dá)到100MHz,所以在基本塊內(nèi)部不會再發(fā)生未命中。本實用新型的存取方法如下CPU只從高速緩存14中讀取字節(jié)碼,并不直接對主存儲器13進(jìn)行讀??;當(dāng)高速緩 存14有空間可用時,在時鐘的驅(qū)動下,高速緩存14自動地把從主存儲器13讀出的字節(jié)碼 以每次4字節(jié)為單位寫入高速緩存14 ;當(dāng)字節(jié)碼可寫比較器10指出高速緩存14無空間存 放更多字節(jié)碼,自動預(yù)取就轉(zhuǎn)入等待;當(dāng)高速緩存14中有字節(jié)碼可用時,CPU對高速緩存14進(jìn)行讀取,以取得所需的字節(jié)碼;當(dāng)字節(jié)碼可讀比較器9指出高速緩存14中無字節(jié)碼可用,Java處理器轉(zhuǎn)入等待。當(dāng)控制流發(fā)生改變時,未用到的已預(yù)取指令作廢,高速緩存讀地址多路選擇器3 及高速緩存寫地址多路選擇器4選擇改變后的字節(jié)碼計數(shù)器1值作為新的預(yù)取起始地址, 所述字節(jié)碼高速緩存裝置從該起始地址開始自動讀取主存儲器13并將數(shù)據(jù)寫入高速緩存 14,Java處理器則以該地址作為新的字節(jié)碼讀取地址從高速緩存14中讀取字節(jié)碼送入字 節(jié)碼寄存器15中供后續(xù)使用。如果考慮到Java處理器頻率的提高,即使在基本塊內(nèi)部也可能發(fā)生未命中的情 況,本實用新型的存取方法還可以方便地計算出基本塊內(nèi)部的最壞情況執(zhí)行時間,而整個 程序的最壞情況執(zhí)行時間可以通過將基本塊以控制流圖的方式組織起來,根據(jù)最壞情況下 的執(zhí)行路徑統(tǒng)計出最壞情況執(zhí)行時間。圖3是基本塊的最壞情況統(tǒng)計方法示意,其中序號20表示字節(jié)碼,N說明該基本 塊包含N個字節(jié)碼。序號21是每個字節(jié)碼對應(yīng)的字節(jié)數(shù),比如第1個字節(jié)碼包含2個字 節(jié),第3個字節(jié)碼包含4個字節(jié),第N個字節(jié)碼包含X (X為1 4的某個數(shù))個字節(jié)等等。 序號22是每個字節(jié)碼需要被訪問的時間點(第幾個時鐘周期),它等于該字節(jié)碼之前的所 有字節(jié)碼執(zhí)行時間之和。序號23是每個字節(jié)碼不包含訪存延遲在內(nèi)的執(zhí)行所耗費(fèi)時鐘周 期數(shù)。序號24是每個字節(jié)碼被從存儲器預(yù)取到高速緩存的時間點(以第幾個時鐘周期計 算)。序號25說明每個字節(jié)碼訪問時是否發(fā)生了未命中。從圖3中可知,根據(jù)字節(jié)碼的執(zhí)行所需時間23,可以計算出每個字節(jié)碼的被訪問 的時間,它等于該字節(jié)碼之前的所有字節(jié)碼執(zhí)行時間之和,例如第4個字節(jié)碼需要被訪問 的時間是第8個時鐘周期,因為它之前的指令執(zhí)行分別用了 2、1、5個時鐘周期;而根據(jù)字節(jié) 數(shù)21和DRAM的延時指標(biāo)可以推斷出每個字節(jié)碼被預(yù)取到的時間24,如DRAM在訪問第一個 字時延時為2個周期,之后的字訪問延時都是1個周期,而且從DRAM讀取字節(jié)碼的單位是 32位,因此,第1、2個字節(jié)碼預(yù)取到的時間都是2,因為它們同屬于第1個32位;而第4個 字節(jié)碼預(yù)取到的時間是3,因為它屬于第2個32位。如果被訪問時間22在被預(yù)取到時間24 之后則該字節(jié)碼已經(jīng)被預(yù)取到,不會發(fā)生未命中情況,反之則會發(fā)生未命中。例如,第1個 字節(jié)碼在第0個周期時就需要被訪問,但直到第2周期才被取進(jìn)來,因此發(fā)生未命中。而第 4條指令被訪問時間是8,但早在第3周期就被預(yù)取到了,因此不會發(fā)生未命中?;緣K中 最后一條字節(jié)碼被預(yù)取到的時間加之后字節(jié)碼的執(zhí)行時間就是該基本塊的最壞執(zhí)行時間。 如圖中基本塊的最壞執(zhí)行時間當(dāng)Y >= M時,最壞執(zhí)行時間為Y+3 ;當(dāng)Y < M時,最壞執(zhí)行 時間為(M-Y)+3。因為每個程序都是由基本塊組成的,如以圖4中由基本塊Bl B12組成的程序為 例,下面說明整個程序的最壞執(zhí)行時間靜態(tài)統(tǒng)計方法。括號中標(biāo)出的是該基本塊的最壞執(zhí) 行時間,如Bl基本塊的最壞執(zhí)行時間是64。在進(jìn)行整個程序最壞執(zhí)行時間靜態(tài)統(tǒng)計時,以 具有較大最壞執(zhí)行時間的路徑取代較小的路徑,如B4-B5-B6-B7-B11-B4取代B4-B12。從而 得到整個程序的最壞執(zhí)行時間的最大路徑并統(tǒng)計出整個程序的最壞執(zhí)行時間為64+3+5+n (3+3+3+5+5) +m(15+36+6+5) +15+36,其中 η 是 Β4-Β5-Β6-Β7-Β11-Β4 路徑最壞情況下的執(zhí)行 次數(shù),m是B7-B8-B9-B10-B7路徑最壞情況下的執(zhí)行次數(shù)。
權(quán)利要求用于實時Java處理器的字節(jié)碼高速緩存裝置,其特征在于其包括字節(jié)碼計數(shù)器(1)、高速緩存讀地址多路選擇器(3)、高速緩存寫地址多路選擇器(4)、高速緩存讀地址寄存器(5)、高速緩存寫地址寄存器(6)、高速緩存讀地址加法器(7)、高速緩存寫地址加法器(8)、字節(jié)碼可讀比較器(9)、字節(jié)碼可寫比較器(10)、主存儲器(13)、高速緩存(14)以及字節(jié)碼寄存器(15);字節(jié)碼計數(shù)器(1)用來保存以字節(jié)為尋址單位的待執(zhí)行的字節(jié)碼地址,該地址經(jīng)過地址對齊操作(2)之后送到高速緩存寫地址多路選擇器(4);高速緩存讀地址多路選擇器(3)及高速緩存寫地址多路選擇器(4)的輸出端分別連接字節(jié)碼可讀比較器(9)的兩個輸入端,字節(jié)碼可讀比較器(9)的輸出端分別連接字節(jié)碼寄存器(15)以及高速緩存讀地址寄存器(5)的使能端;字節(jié)碼可讀比較器(9)用來判斷高速緩存(14)中是否有字節(jié)碼可用,寫地址大于讀地址則有字節(jié)碼可用,通過高速緩存讀地址加法器(7)將當(dāng)前地址加1并在下一個時鐘來時打入高速緩存讀地址寄存器(5),同時由控制信號(19)控制選擇該地址作為輸出;主存儲器(13)的讀地址輸入連接到高速緩存寫地址多路選擇器(4)的輸出端,其數(shù)據(jù)輸出連接到高速緩存(14)的數(shù)據(jù)輸入端(17);高速緩存(14)的讀地址輸入端(11)連接于高速緩存讀地址多路選擇器(3)的輸出端,其寫地址輸入端(12)連接于高速緩存寫地址多路選擇器(4)的輸出端,其數(shù)據(jù)輸入端(17)連接于主存儲器(13)的數(shù)據(jù)輸出端,其數(shù)據(jù)輸出端(18)連接于字節(jié)碼寄存器(15)的輸入端;字節(jié)碼寄存器(15)的輸出端(16)連接到Java處理器的后續(xù)段;高速緩存(14)的讀地址輸入端(11)及寫地址輸入端(12)分別連接字節(jié)碼可寫比較器(10)的兩個輸入端,字節(jié)碼可寫比較器(10)的輸出端連接高速緩存寫地址寄存器(6)的使能端;字節(jié)碼可寫比較器(10)用來判斷高速緩存(14)有無空間存放更多字節(jié)碼,寫地址不等于讀地址時表示有空間存放更多字節(jié)碼,通過高速緩存寫地址加法器(8)將當(dāng)前地址加4并在下一個時鐘來時打入高速緩存寫地址寄存器(6),同時由控制信號(19)控制選擇該地址作為輸出;在控制流發(fā)生改變時,由控制信號(19)分別控制高速緩存讀地址多路選擇器(3)以及高速緩存寫地址多路選擇器(4),選擇字節(jié)碼計數(shù)器(1)的地址為輸出地址。
2.根據(jù)權(quán)利要求1所述的用于實時Java處理器的字節(jié)碼高速緩存裝置,其特征在于 所述高速緩存(14)的地址為0 (2m-l),所述主存儲器(13)的地址為0 (2n-l);所述 高速緩存(14)的讀地址輸入端(11)連接于高速緩存讀地址多路選擇器(3)輸出端的低m 位,所述高速緩存(14)的寫地址輸入端(12)連接于高速緩存寫地址多路選擇器((4))輸 出端的低m位;所述字節(jié)碼可讀比較器(9)的輸入分別是η位的高速緩存讀地址多路選擇 器(3)的η-1 2位以及η位的高速緩存寫地址多路選擇器⑷的(η_1) 2位,所述字 節(jié)碼可寫比較器(10)的輸入分別是高速緩存讀地址輸入端(11)的(m-Ι) 2位以及高速 緩存寫地址輸入端(12)的(m-Ι) 2位。
3.根據(jù)權(quán)利要求1所述的用于實時Java處理器的字節(jié)碼高速緩存裝置,其特征在于 所述高速緩存(14)為雙端口環(huán)形存儲器。
4.根據(jù)權(quán)利要求1所述的用于實時Java處理器的字節(jié)碼高速緩存裝置,其特征在于 所述高速緩存(14)的數(shù)據(jù)輸入端(17)的總線寬度為32位,所述高速緩存(14)的數(shù)據(jù)輸 出端(18)的寬度為8位。
專利摘要本實用新型涉及一種用于實時Java處理器的字節(jié)碼高速緩存裝置,屬于計算機(jī)領(lǐng)域。本實用新型裝置包括字節(jié)碼計數(shù)器、高速緩存讀地址多路選擇器、高速緩存寫地址多路選擇器、高速緩存讀地址寄存器、高速緩存寫地址寄存器、高速緩存讀地址加法器、高速緩存寫地址加法器、字節(jié)碼可讀比較器、字節(jié)碼可寫比較器、主存儲器、高速緩存以及字節(jié)碼寄存器。本實用新型利用Java字節(jié)碼不等長、多數(shù)字節(jié)碼少于4個字節(jié)的特點,進(jìn)行一次取4個字節(jié),分多次使用完,從而產(chǎn)生預(yù)取時間。本實用新型裝置具有指令自動預(yù)取機(jī)制,可以減少因取指令帶來的CPU停頓;并可以確定未命中發(fā)生的字節(jié)碼位置,使其訪問時間可靜態(tài)預(yù)測。在確保程序執(zhí)行可預(yù)測的同時大大提高了Java處理器的性能。
文檔編號G06F12/08GK201556199SQ20092023236
公開日2010年8月18日 申請日期2009年9月30日 優(yōu)先權(quán)日2009年9月30日
發(fā)明者葉新棟, 吳小俊, 孫俊, 柴志雷, 涂時亮, 須文波 申請人:江南大學(xué)