專利名稱::微處理器中分段高速緩存的設(shè)計方法及分段高速緩存的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明主要涉及到微處理器中數(shù)據(jù)高速緩存的設(shè)計領(lǐng)域,特指一種微處理器中分段高速緩存的設(shè)計方法及分段高速緩存。技術(shù)背景當(dāng)前的計算機系統(tǒng)中,處理器的性能平均每年增長75%,而存儲器的性能平均每年僅增長7%。由于存儲器的速度限制,處理器無法及時得到數(shù)據(jù),致使其性能遠不能有效發(fā)揮,這就是著名的"存儲墻問題"。當(dāng)前,存儲墻問題己成為計算機系統(tǒng)性能提升的瓶頸之一,改善和解決存儲墻問題至關(guān)重要。高速緩存技術(shù)是人們?yōu)榻鉀Q存儲墻問題提出的重要的存儲層次技術(shù)之一,它通過利用程序中數(shù)據(jù)訪問的局部性原理來提高存儲系統(tǒng)的訪問性能。由于處于影響系統(tǒng)性能的關(guān)鍵路徑——存儲墻問題上,高速緩存的性能發(fā)揮變得異常重要。經(jīng)典的高速緩存技術(shù)大都由硬件直接支持,對軟件完全透明。而硬件受其本身復(fù)雜、開銷大等局限性制約,往往導(dǎo)致高速緩存的利用率很低。為此,越來越多的研究人員開始研究軟件可管理的高速緩存技術(shù)。當(dāng)前的軟件可管理高速緩存技術(shù)中,管理粒度大都面向高速緩存行一級,這種粒度的管理對高速緩存使用性能的提升有限,而且管理開銷很大。如何把握系統(tǒng)中軟件對高速緩存的管理粒度,有效發(fā)揮軟件管理高速緩存的優(yōu)勢,提高高速緩存的利用率,進而改善存儲墻問題,是微處理器高速緩存設(shè)計中亟待解決的重要問題。
發(fā)明內(nèi)容本發(fā)明要解決的問題就在于針對現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種軟件可管理的高性能分段高速緩存的設(shè)計方法及分段高速緩存,使得高速緩存能夠在較小的軟件管理開銷下,充分利用程序中數(shù)據(jù)的局部性,提升計算機中存儲系統(tǒng)的訪問性能,進而改善存儲墻問題。為解決上述技術(shù)問題,本發(fā)明提出的解決方案為一種微處理器中分段高速緩存的設(shè)計方法,其特征在于在傳統(tǒng)數(shù)據(jù)高速緩存上增加段表以及相應(yīng)的控制邏輯等段機制,增加用于在段機制基礎(chǔ)上實現(xiàn)預(yù)取的預(yù)取智能體,同時在指令集中增加維護段的創(chuàng)建段、刪除段指令,在傳統(tǒng)的存數(shù)、取數(shù)指令上增加段號,并增加特殊的存儲、取數(shù)指令,用于啟動預(yù)取智能體;當(dāng)數(shù)據(jù)高速緩存在使用時,査找段表與有效地址計算并行執(zhí)行,地址映射在有效地址計算和査找段表之后執(zhí)行,最后根據(jù)地址映射得到的高速緩存行的地址對高速緩存進行訪問,如果在高速緩存中找到對應(yīng)的項,就在對應(yīng)的數(shù)據(jù)存儲器中進行數(shù)據(jù)訪問,否則啟動失效處理過程。在指令集中修改如下2種指令(1)、為傳統(tǒng)的LD指令(取數(shù)指令)增加段號LDRD,RA,SID其中,SID是新增的段號域,指示當(dāng)前訪存的數(shù)據(jù)在高速緩存中存放在哪個段,這里的值必須與先前的段設(shè)置相符;(2)、為傳統(tǒng)的ST指令(存儲指令)增加段號STRA,RS,SID其中,SID是新增的段號域,指示當(dāng)前訪存的數(shù)據(jù)在高速緩存中存放在哪個段,這里的值必須與先前的段設(shè)置相符。在指令集中增加如下4條指令(1)、OSEGRDHA,RDS,RSHI,RSS,SID[OpenSEGment]功能是將數(shù)據(jù)首地址(寄存器RDHA中的值)、數(shù)據(jù)大小(寄存器RDS中的值)、段首地址(寄存器RSHI中的值)、段大小(寄存器RSS中的值)填入段表中地址為SID的對應(yīng)項,并把該項中的段有效位置l;(2)、CSEGSID[CloseSEGment]功能是根據(jù)段號(SID的值)查找段表,刪除段表中的對應(yīng)項(置該項對應(yīng)的段有效位為O);(3)、FLDRD,RA,SID[ForesightedLoaD]功能是將寄存器RA給出的地址ADDR對應(yīng)的數(shù)據(jù)寫入RD寄存器中,SID是分配給地址ADDR的段的段號,同時啟動高速緩存中的預(yù)取智能體,根據(jù)段號(SID的值)在段表中査找對應(yīng)的數(shù)據(jù)首地址DHA、數(shù)據(jù)大小DS、段首地址SHA和段大小SS,在高速緩存里對應(yīng)段的高速緩存行中填寫首地址為ADDR,大小為min{DHA+DS-ADDR,SS}的數(shù)據(jù);(4)、FSTRA,RS,SID[ForesightedSTore]功能是將寄存器RS中的數(shù)據(jù)寫入寄存器RA給出的地址ADDR對應(yīng)的存儲器中,SID是分配給地址ADDR的段的段號,同時啟動高速緩存中的預(yù)取智能體,根據(jù)段號(SID的值)在段表中查找對應(yīng)的數(shù)據(jù)首地址DHA、數(shù)據(jù)大小DS、段首地址SHA和段大小SS,在高速緩存里對應(yīng)段的高速緩存行中填寫首地址為ADDR,大小為min{DHA+DS-ADDR,SS}的數(shù)據(jù)。一種微處理器中的分段高速緩存,其特征在于它包括標識和標志位陣列,其中的項為標識、有效位和修改位,若標識和標志位陣列中某一項標識與地址ADDR的高位部分相同,且對應(yīng)的有效位為l,則地址ADDR對應(yīng)的數(shù)據(jù)在高速緩存中;修改位指示對應(yīng)的高速緩存行是否被修改過,如果高速緩存行的大小為2"字節(jié),存儲器地址總寬度為MW位,存儲空間使用字節(jié)編址,則標識和標志位陣列中每一項的標識共包含MW-LS位;數(shù)據(jù)陣列,其中存儲的是高速緩存中的數(shù)據(jù),當(dāng)讀寫操作査找標識和標志位陣列發(fā)生命中時,對應(yīng)數(shù)據(jù)陣列中的項即為所要訪問的數(shù)據(jù),數(shù)據(jù)陣列占用的存儲器數(shù)目與高速緩存設(shè)計的相聯(lián)度一一對應(yīng);段表,其用于記錄程序運行過程中的段設(shè)置,它的每一項包含數(shù)據(jù)首地址域、數(shù)據(jù)大小域、段首地址域、段大小域,以及段有效位,前面四項分別表示分配在該段的數(shù)據(jù)首地址、數(shù)據(jù)大小,以及該段在高速緩存中的首地址和段大小,段有效位標志該段是否有效;預(yù)取智能體,是用來完成FLD和FST指令的重要部件,預(yù)取智能體能夠在系統(tǒng)執(zhí)行FLD或FST指令時,智能地根據(jù)段表中的段設(shè)置,將程序未來可能用到的處于相同段的數(shù)據(jù)預(yù)取進高速緩存;控制邏輯,是整個高速緩存的核心控制部件,用于控制高速緩存中其他各部分模塊的協(xié)同工作,完成LD、ST指令,以及新增的OSEG、CSEG、FLD、FST指令訪問高速緩存時的各種功能;控制邏輯中包含段機制使能標志寄存器,當(dāng)此標志寄存器的值為0時,LD、ST指令訪問高速緩存時屏蔽段表,段機制將不起作用。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點就在于1、本發(fā)明在傳統(tǒng)高速緩存的基礎(chǔ)上增加了段機制,使得軟件能夠靈活地以段為單位控制數(shù)據(jù)集在高速緩存中的存放,提高高速緩存的利用率,改善存儲墻問題。2、本發(fā)明中,軟件對高速緩存管理的粒度是以段為單位,與其他的軟件可管理高速緩存(其他的軟件可管理高速緩存的管理粒度大都以高速緩存行為單位)相比,軟件管理的層次較高,軟件管理所引入的代價小的多,簡潔高效。3、本發(fā)明中的預(yù)取智能體能夠根據(jù)預(yù)先設(shè)置的段信息決定預(yù)取的數(shù)據(jù)位置和數(shù)據(jù)大小,這是普通的預(yù)取機制所無法完成的,因此預(yù)取智能體能夠在段機制的基礎(chǔ)上更進一步地減少高速緩存上訪存操作引起的失效次數(shù),提高存儲系統(tǒng)的訪問性能。4、本發(fā)明在為高速緩存增加新功能的同時,對于完成原有功能,沒有引入新的硬件時間開銷,硬件結(jié)構(gòu)簡單,代價小,擴展性好。5、本發(fā)明中,將段機制使能標志寄存器的值置為0時,即可完全兼容傳統(tǒng)程序,兼容性好,可移植性好。圖la是在傳統(tǒng)高速緩存上執(zhí)行訪存指令時的一種流程示意圖;圖lb是在傳統(tǒng)高速緩存上執(zhí)行訪存指令時的另一種流程示意圖;圖2a是在分段高速緩存上執(zhí)行訪存指令時的一種流程示意圖2b是在分段高速緩存上執(zhí)行訪存指令時的另一種流程示意圖;圖3是一種分段高速緩存的實現(xiàn)邏輯結(jié)構(gòu)示意圖;圖4是LD/ST指令在二路組相聯(lián)的分段高速緩存上的執(zhí)行結(jié)構(gòu)示意圖;圖5是控制邏輯的邏輯結(jié)構(gòu)示意圖6是控制邏輯的狀態(tài)機模塊為實現(xiàn)LD/ST/FLD/FST指令的狀態(tài)轉(zhuǎn)換示意圖;圖7是預(yù)取智能體的工作原理示意圖。具體實施例方式以下將結(jié)合附圖和具體實施例對本發(fā)明做進一步詳細說明。傳統(tǒng)處理器中數(shù)據(jù)高速緩存的設(shè)計分為兩種,圖la和圖lb中分別給出兩種設(shè)計方法執(zhí)行訪存指令的流程圖,第一種先計算所需要訪存的有效地址,再根據(jù)計算出的有效地址在高速緩存中執(zhí)行査找過程,如果在高速緩存中找到對應(yīng)的項,就在對應(yīng)的數(shù)據(jù)存儲器中進行數(shù)據(jù)訪問,否則啟動失效處理過程。第二種方法與第一種方法的不同在于,對數(shù)據(jù)存儲器的訪問與查找過程同時進行,由于在查找結(jié)束之前,并不能確定所訪問數(shù)據(jù)的具體位置,所以第二種方法在讀數(shù)據(jù)時會同時訪問同一組中的多個高速緩存行,再在查找過程結(jié)束后根據(jù)查找的結(jié)果選擇使用哪個高速緩存行。本發(fā)明是將軟件對高速緩存的管理粒度提升至程序中的數(shù)據(jù)集一級,同時保留硬件對高速緩存行一級粒度的管理。本發(fā)明的一種微處理器中分段高速緩存的設(shè)計方法,在傳統(tǒng)數(shù)據(jù)高速緩存上增加段表以及相應(yīng)的控制邏輯等段機制,增加用于在段機制基礎(chǔ)上實現(xiàn)預(yù)取的預(yù)取智能體,同時在指令集中增加維護段的創(chuàng)建段、刪除段指令,在傳統(tǒng)的存數(shù)、取數(shù)指令上增加段號,并增加特殊的存數(shù)、取數(shù)指令,用于啟動預(yù)取智能體;當(dāng)數(shù)據(jù)高速緩存在使用時,先査找段表與有效地址計算并行執(zhí)行,地址映射在有效地址計算和査找段表之后執(zhí)行,最后根據(jù)地址映射得到的高速緩存行的地址對高速緩存進行訪問,如果在高速緩存中找到對應(yīng)的項,就在對應(yīng)的數(shù)據(jù)存儲器中進行數(shù)據(jù)訪問,否則啟動失效處理過程。這種改變使得高速緩存能夠很容易地處理數(shù)據(jù)集與數(shù)據(jù)集之間(比如向量數(shù)據(jù)之間、向量數(shù)據(jù)和標量數(shù)據(jù)之間)的關(guān)系,有效地提升高速緩存的利用率。由此可見,本發(fā)明在傳統(tǒng)的高速緩存設(shè)計中增加了段機制,其中每個段包含高速緩存中的若干個組(對于直接映像高速緩存來說,每個段包含若干個高速緩存行),軟件在段一級進行管理,硬件在段內(nèi)的高速緩存行一級進行管理。程序員或編譯器根據(jù)程序中數(shù)據(jù)訪問的特點對高速緩存進行分段,并決定數(shù)據(jù)集在哪個段中存放。從數(shù)據(jù)的角度看,任何一個段都是分在該段數(shù)據(jù)的一個獨立的高速緩存。圖2a和圖2b給出了在分段高速緩存上執(zhí)行訪存指令的兩種流程圖,相對于傳統(tǒng)數(shù)據(jù)高速緩存,灰色方框中的查找段表和地址映射操作是增加的部分。其中,查找段表與有效地址計算并行執(zhí)行,地址映射在有效地址計算和査找段表之后執(zhí)行,最后根據(jù)地址映射得到的高速緩存行的地址對高速緩存進行訪問,后續(xù)的執(zhí)行過程與傳統(tǒng)高速緩存相同。傳統(tǒng)處理器中,計算有效地址的過程往往在流水線的執(zhí)行站進行;使用分段高速緩存的處理器中,査找段表操作和原先計算有效地址操作一起在執(zhí)行站完成,地址映射操作也在執(zhí)行站中進行。通常,處理器流水線中最長延時的組合邏輯路徑在存儲站(對高速緩存的訪問),因此,分段高速緩存并不會增加額外的硬件時間開銷。為了實現(xiàn)分段高速緩存,需要在傳統(tǒng)高速緩存中增加段表存儲器和相應(yīng)的控制機制,用于存放程序中數(shù)據(jù)的段設(shè)置。在傳統(tǒng)處理器指令集上,增加"創(chuàng)建段"和"刪除段"的指令,"創(chuàng)建段"指令在高速緩存中劃分出一段空間作為新段,并指示程序中的哪一部分數(shù)據(jù)集分配在該段上,創(chuàng)建好的段信息存儲在段表中,段號是該段的標識,也是段表存儲器中存儲對應(yīng)段信息項的地址。為了加速査找段表的操作,對存數(shù)、取數(shù)指令增加段號域,在執(zhí)行存數(shù)、取數(shù)指令時根據(jù)段號査找段表。在使用分段高速緩存的處理器上,數(shù)據(jù)訪問前,"創(chuàng)建段"指令首先明確了數(shù)據(jù)在高速緩存的位置,因此,帶來的另一個優(yōu)點是可以方便地實現(xiàn)數(shù)據(jù)預(yù)取,很自然地解決了傳統(tǒng)預(yù)取機制不知道取什么數(shù)據(jù),取多少數(shù)據(jù),取到什么位置等一系列難題。為此,可以在指令集中再增加兩條特殊的存儲、取數(shù)指令。在完成這兩條特殊的存數(shù)、取數(shù)指令的同時,硬件啟動預(yù)取機制,根據(jù)創(chuàng)建段時指示的段信息,在對應(yīng)段中預(yù)取事先分配在該段的數(shù)據(jù)集。分段高速緩存有很多種不同的實現(xiàn)方案,下面給出其中的一種。在本實施例中,本發(fā)明在指令集中修改如下2種指令(1)、為傳統(tǒng)的LD指令(取數(shù)指令)增加段號LDRD,RA,SID其中,SID是新增的段號域,指示當(dāng)前訪存的數(shù)據(jù)在高速緩存中存放在哪個段,這里的值必須與先前的段設(shè)置相符。(2)、為傳統(tǒng)的ST指令(存儲指令)增加段號STRA,RS,SID其中,SID是新增的段號域,指示當(dāng)前訪存的數(shù)據(jù)在高速緩存中存放在哪個段,這里的值必須與先前的段設(shè)置相符。在本實施例中,本發(fā)明在指令集中增加如下4條指令(1)、OSEGRDHA,RDS,RSHI,RSS,SID[OpenSEGment]功能是將數(shù)據(jù)首地址(寄存器RDHA中的值)、數(shù)據(jù)大小(寄存器RDS中的值)、段首地址(寄存器RSHI中的值)、段大小(寄存器RSS中的值)填入段表中地址為SID的對應(yīng)項,并把該項中的段有效位置l。(2)、CSEGSID[CloseSEGment]功能是根據(jù)段號(SID的值)査找段表,刪除段表中的對應(yīng)項(置該項對應(yīng)的段有效位為o)。(3)、FLDRD,RA,SID[ForesightedLoaD]功能是將寄存器RA給出的地址ADDR對應(yīng)的數(shù)據(jù)寫入RD寄存器中,SID是分配給地址ADDR的段的段號。同時啟動高速緩存中的預(yù)取智能體,根據(jù)段號(SID的值)在段表中查找對應(yīng)的數(shù)據(jù)首地址DHA、數(shù)據(jù)大小DS、段首地址SHA和段大小SS,在高速緩存里對應(yīng)段的高速緩存行中填寫首地址為ADDR,大小為min{DHA+DS-ADDR,SS)的數(shù)據(jù)。本條指令在啟動預(yù)取智能體后就返回,對本指令而言,預(yù)取智能體的行為是非阻塞的。(4)、FSTRA,RS,SID[ForesightedSTore]功能是將寄存器RS中的數(shù)據(jù)寫入寄存器RA給出的地址ADDR對應(yīng)的存儲器中,SID是分配給地址ADDR的段的段號。同時啟動高速緩存中的預(yù)取智能體,根據(jù)段號(SID的值)在段表中査找對應(yīng)的數(shù)據(jù)首地址DHA、數(shù)據(jù)大小DS、段首地址SHA和段大小SS,在高速緩存里對應(yīng)段的高速緩存行中填寫首地址為ADDR,大小為min(DHA+DS-ADDR,SSi的數(shù)據(jù)。本條指令在啟動預(yù)取智能體后就返回,對本指令而言,預(yù)取智能體的行為是非阻塞的。分段高速緩存由標識和標志位陣列、數(shù)據(jù)陣列、段表、預(yù)取智能體和控制邏輯組成。標識和標志位陣列、數(shù)據(jù)陣列的設(shè)計方法與傳統(tǒng)高速緩存相同,段表、預(yù)取智能體和相應(yīng)的控制邏輯配合軟件完成對高速緩存的分段管理。圖3是一種分段高速緩存的實現(xiàn)邏輯結(jié)構(gòu)圖。和傳統(tǒng)高速緩存一樣,本發(fā)明中的高速緩存在處理器中分別與中央處理器的存儲取數(shù)單元部件,以及下一級存儲器部件相連。本發(fā)明的高速緩存共由五部分邏輯結(jié)構(gòu)組成,它們分別是數(shù)據(jù)陣列(DataArray)、標識和標志位陣列(TagandFlagArray)、段表(SegmentTable)、預(yù)取智能體(PrefetchAgent)和控制邏輯(ControlLogic)??刂七壿嬍歉咚倬彺娴暮诵目刂撇考?,其他部件均與它相連。標識和標志位陣列、數(shù)據(jù)陣列與傳統(tǒng)高速緩存中的完全相同,它們使用SRAM實現(xiàn)。段表使用SRAM實現(xiàn)。預(yù)取智能體的實現(xiàn)類似DMA部件,當(dāng)中央處理器執(zhí)行FLD/FST指令時,預(yù)取智能體根據(jù)段的信息自動地訪問高速緩存以預(yù)取數(shù)據(jù)。其中,標識和標志位陣列中的項為標識、有效位和修改位(寫直達高速緩存不包含修改位)。若標識和標志位陣列中某一項標識與地址ADDR的高位部分相同(比較的哪幾位由段設(shè)置確定),且對應(yīng)的有效位為l,則地址ADDR對應(yīng)的數(shù)據(jù)在高速緩存中。修改位指示對應(yīng)的高速緩存行是否被修改過。如果高速緩存行的大小為2"字節(jié),存儲器地址總寬度為MW位,存儲空間使用字節(jié)編址,則標識和標志位陣列中每一項的標識共包含MW-LS位。數(shù)據(jù)陣列中存儲的是高速緩存中的數(shù)據(jù),當(dāng)讀寫操作查找標識和標志位陣列發(fā)生命中時,對應(yīng)數(shù)據(jù)陣列中的項即為所要訪問的數(shù)據(jù)。數(shù)據(jù)陣列占用的存儲器數(shù)目與高速緩存設(shè)計的相聯(lián)度一一對應(yīng),比如四路組相聯(lián)高速緩存就需要設(shè)置四個存儲器存放數(shù)據(jù)陣列(為了實現(xiàn)四路數(shù)據(jù)的并行訪問)。段表用于記錄程序運行過程中的段設(shè)置,它的每一項包含數(shù)據(jù)首地址域、數(shù)據(jù)大小域、段首地址域、段大小域,以及段有效位。前面四項分別表示分配在該段的數(shù)據(jù)首地址、數(shù)據(jù)大小,以及該段在高速緩存中的首地址和段大小。段有效位標志該段是否有效。這里,為了后面操作的簡單,段大小域中存儲的是段大小減1的值。預(yù)取智能體是完成FLD和FST指令的重要部件。預(yù)取智能體能夠在系統(tǒng)執(zhí)行FLD或FST指令時,智能地根據(jù)段表中的段設(shè)置,將程序未來可能用到的處于相同段的數(shù)據(jù)預(yù)取進高速緩存,從而避免這些數(shù)據(jù)在未來訪問時失效,最大程度地減少高速緩存的失效率,提升存儲系統(tǒng)的訪問性能。如圖7所示,是預(yù)取智能體(PrefetchAgent)的工作原理圖。仲裁器同時連接中央處理器和預(yù)取智能體,當(dāng)二者都有訪問請求時,仲裁器優(yōu)先滿足中央處理器的請求。如果在預(yù)取智能體工作時發(fā)生中央處理器的訪問請求,仲裁器剝奪預(yù)取智能體的訪問權(quán),滿足中央處理器的訪問請求。預(yù)取智能體被啟動時先向仲裁器發(fā)送取數(shù)請求,一旦獲得對高速緩存的訪問權(quán),預(yù)取智能體以突發(fā)流水的方式對高速緩存進行預(yù)取。控制邏輯是整個高速緩存的核心控制部件,用于控制高速緩存中其他各部分模塊的協(xié)同工作,完成LD、ST指令,以及新增的OSEG、CSEG、FLD、FST指令訪問高速緩存時的各種功能??刂七壿嬛邪螜C制使能標志寄存器,當(dāng)此標志寄存器的值為0時,LD、ST指令訪問高速緩存時屏蔽段表,段機制將不起作用,分段高速緩存的行為變得和傳統(tǒng)高速緩存一樣。如圖5所示,是控制邏輯(ControlLogic)的邏輯結(jié)構(gòu)圖??刂七壿嬍歉咚倬彺娴暮诵目刂撇考?,它由狀態(tài)機模塊、接口模塊、段表査詢模塊、標識和標志位訪問模塊、數(shù)據(jù)訪問模塊、訪存模塊和仲裁模塊組成。其中,狀態(tài)機模塊又是控制邏輯的核心部件,完成高速緩存各個功能的狀態(tài)控制。段表査詢模塊完成對段表的査詢,標識和標志位訪問模塊完成對標識和標志位陣列的訪問,數(shù)據(jù)訪問模塊完成對數(shù)據(jù)陣列的訪問,訪存模塊完成對下一級存儲層次的數(shù)據(jù)訪問,仲裁模塊配合預(yù)取智能體完成預(yù)取操作。如圖6所示,是控制邏輯的狀態(tài)機模塊為實現(xiàn)LD/ST/FLD/FST指令的狀態(tài)轉(zhuǎn)換圖。這里是狀態(tài)轉(zhuǎn)換簡圖,每個狀態(tài)中的動作并非都是在1個時鐘周期內(nèi)完成,其中,失效處理的處理時間和實際機器的設(shè)計實現(xiàn)密切相關(guān)。執(zhí)行LD/ST/FLD/FST指令時,先査找段表,進行地址映射,再根據(jù)映射出的地址查標識和標志位陣列,若命中,則直接訪問對應(yīng)數(shù)據(jù)存儲器中的數(shù)據(jù),否則發(fā)生高速緩存失效,進入失效處理過程。如果是FLD/FST指令,在査詢段表后啟動預(yù)取智能體,最后狀態(tài)返回,返回的同時預(yù)取智能體開始工作進行數(shù)據(jù)預(yù)取。其中,査段表和地址映射狀態(tài)在處理器流水線的執(zhí)行站完成,其余狀態(tài)在處理器流水線的訪存站完成。圖4是LD/ST指令在二路組相聯(lián)的分段高速緩存上的執(zhí)行結(jié)構(gòu)圖。其中,灰色圓角多邊形里的部分是新增段機制引入的操作,這些操作在處理器流水線的執(zhí)行站完成,其余部分在處理器流水線的訪存站完成。具體過程與圖2中的流程圖對應(yīng)根據(jù)指令中的段號査找段表得到對應(yīng)的段表項,一方面,根據(jù)段表中記錄的數(shù)據(jù)首地址和數(shù)據(jù)大小信息對訪存地址進行檢査,如果越界,報異常;另一方面,根據(jù)段大小信息對主存地址進行地址映射,映射得到對應(yīng)的標識和索引index,最后將段首地址與索引相加,使用相加的結(jié)果對高速緩存的兩路標識和標志位陣列、數(shù)據(jù)陣列同時進行訪問,訪問得到的標識域和有效位送入比較邏輯進行比較,如果命中,在對應(yīng)的高速緩存數(shù)據(jù)域中訪問數(shù)據(jù),否則,發(fā)生高速緩存失效,啟動高速緩存失效處理機制。地址映射邏輯的算法為offset=addressmodline_sizeindex=(address/line—size)modseg—sizetag=address/line—size特別地,設(shè)line—size=2j字節(jié),seg_size=2、set—size,貝ij:當(dāng)卜0時,沒有index域;否則,index=address[n-l:j]&(seg—size-l),offset=address[j-l:0],tag=address[n-l:j],比較邏輯的算法是result=valid&&(cache」ag==tag)注address-主存地址,二進制長度為n(address[n-l:O]);line_size——高速緩存塊大?。籹eg_Size——段大小,由于這里用到的是seg_size-l的值,因此段表中直接存放段大小減1的值;set—size——高速緩存組的大小(相聯(lián)度,一個組包含的行數(shù));offset——高速緩存行內(nèi)偏移地址;index——高速緩存中組的索引;tag——地址映射后的標識;<table>tableseeoriginaldocumentpage12</column></row><table>使用本發(fā)明后,程序的運行過程如下1、當(dāng)控制邏輯中的段機制使能標志寄存器的值為l時,系統(tǒng)啟用段機制,程序先使用OSEG指令為即將使用的數(shù)據(jù)開辟新段,然后和傳統(tǒng)程序一樣執(zhí)行,當(dāng)執(zhí)行到LD/ST指令時,高速緩存按照事先設(shè)置好的段和LD/ST指令中的段號完成所需的操作(詳細過程見表l),當(dāng)某段數(shù)據(jù)不再會被訪問時,程序使用CSEG指令刪除該段,將高速緩存的空間留給其他數(shù)據(jù)使用。為了提高性能,對于將來會被連續(xù)訪問的某段數(shù)據(jù),程序員或編譯器可以將訪問該段數(shù)據(jù)的第一條LD/ST指令更改為對應(yīng)的FLD/FST指令,這樣,硬件在完成取數(shù)/存數(shù)操作的同時會啟動預(yù)取智能體,預(yù)取智能體將分配在該段的其他數(shù)據(jù)提前預(yù)取進高速緩存,從而減少程序后續(xù)執(zhí)行時訪存指令的失效次數(shù),提高程序的運行性能。2、當(dāng)控制邏輯中的段機制使能標志寄存器的值為O時,本發(fā)明中高速緩存就和傳統(tǒng)高速緩存的行為相同,可以直接運行未作任何修改的傳統(tǒng)程序。權(quán)利要求1、一種微處理器中分段高速緩存的設(shè)計方法,其特征在于在傳統(tǒng)數(shù)據(jù)高速緩存上增加段表以及相應(yīng)的控制邏輯等段機制,增加用于在段機制基礎(chǔ)上實現(xiàn)預(yù)取的預(yù)取智能體,同時在指令集中增加維護段的創(chuàng)建段、刪除段指令,在傳統(tǒng)的存數(shù)、取數(shù)指令上增加段號,并增加特殊的存數(shù)、取數(shù)指令,用于啟動預(yù)取智能體;當(dāng)數(shù)據(jù)高速緩存在使用時,查找段表與有效地址計算并行執(zhí)行,地址映射在有效地址計算和查找段表之后執(zhí)行,最后根據(jù)地址映射得到的高速緩存行的地址對高速緩存進行訪問,如果在高速緩存中找到對應(yīng)的項,就在對應(yīng)的數(shù)據(jù)存儲器中進行數(shù)據(jù)訪問,否則啟動失效處理過程。2、根據(jù)權(quán)利要求1所述的微處理器中分段高速緩存的設(shè)計方法,其特征在于在指令集中修改如下2種指令(1)、為傳統(tǒng)的LD指令(取數(shù)指令)增加段號LDRD,RA,SID其中,SID是新增的段號域,指示當(dāng)前訪存的數(shù)據(jù)在高速緩存中存放在哪個段,這里的值必須與先前的段設(shè)置相符;(2)、為傳統(tǒng)的ST指令(存儲指令)增加段號STRA,RS,SID其中,SID是新增的段號域,指示當(dāng)前訪存的數(shù)據(jù)在高速緩存中存放在哪個段,這里的值必須與先前的段設(shè)置相符。3、根據(jù)權(quán)利要求1或2所述的微處理器中分段高速緩存的設(shè)計方法,其特征在于在指令集中增加如下4條指令(1)、0SEGRDHA,RDS,RSHI,RSS,SID[OpenSEGment]功能是將數(shù)據(jù)首地址(寄存器RDHA中的值)、數(shù)據(jù)大小(寄存器RDS中的值)、段首地址(寄存器RSHI中的值)、段大小(寄存器RSS中的值)填入段表中地址為SID的對應(yīng)項,并把該項中的段有效位置l;(2)、CSEGSID[CloseSEGment]功能是根據(jù)段號(SID的值)查找段表,刪除段表中的對應(yīng)項(置該項對應(yīng)的段有效位為0);(3)、FLDRD,RA,SID[ForesightedLoaD]功能是將寄存器RA給出的地址ADDR對應(yīng)的數(shù)據(jù)寫入RD寄存器中,SID是分配給地址ADDR的段的段號,同時啟動高速緩存中的預(yù)取智能體,根據(jù)段號(SID的值)在段表中查找對應(yīng)的數(shù)據(jù)首地址DHA、數(shù)據(jù)大小DS、段首地址SHA和段大小SS,在高速緩存里對應(yīng)段的高速緩存行中填寫首地址為ADDR,大小為min{DHA+DS-ADDR,SS}的數(shù)據(jù);(4)、FSTRA,RS,SID[ForesightedSTore]功能是將寄存器RS中的數(shù)據(jù)寫入寄存器RA給出的地址ADDR對應(yīng)的存儲器中,SID是分配給地址ADDR的段的段號,同時啟動高速緩存中的預(yù)取智能體,根據(jù)段號(SID的值)在段表中查找對應(yīng)的數(shù)據(jù)首地址DHA、數(shù)據(jù)大小DS、段首地址SHA和段大小SS,在高速緩存里對應(yīng)段的高速緩存行中填寫首地址為ADDR,大小為min{DHA+DS-ADDR,SS}的數(shù)據(jù)。4、一種微處理器中分段高速緩存,其特征在于它包括標識和標志位陣列,其中的項為標識、有效位和修改位,若標識和標志位陣列中某一項標識與地址ADDR的高位部分相同,且對應(yīng)的有效位為l,則地址ADDR對應(yīng)的數(shù)據(jù)在高速緩存中;修改位指示對應(yīng)的高速緩存行是否被修改過,如果高速緩存行的大小為2"字節(jié),存儲器地址總寬度為MW位,存儲空間使用字節(jié)編址,則標識和標志位陣列中每一項的標識共包含MW-LS位;數(shù)據(jù)陣列,其中存儲的是高速緩存中的數(shù)據(jù),當(dāng)讀寫操作查找標識和標志位陣列發(fā)生命中時,對應(yīng)數(shù)據(jù)陣列中的項即為所要訪問的數(shù)據(jù),數(shù)據(jù)陣列占用的存儲器數(shù)目與高速緩存設(shè)計的相聯(lián)度一一對應(yīng);段表,其用于記錄程序運行過程中的段設(shè)置,它的每一項包含數(shù)據(jù)首地址域、數(shù)據(jù)大小域、段首地址域、段大小域,以及段有效位,前面四項分別表示分配在該段的數(shù)據(jù)首地址、數(shù)據(jù)大小,以及該段在高速緩存中的首地址和段大小,段有效位標志該段是否有效;預(yù)取智能體,是用來完成FLD和FST指令的重要部件,預(yù)取智能體能夠在系統(tǒng)執(zhí)行FLD或FST指令時,智能地根據(jù)段表中的段設(shè)置,將程序未來可能用到的處于相同段的數(shù)據(jù)預(yù)取進高速緩存;控制邏輯,是整個高速緩存的核心控制部件,用于控制高速緩存中其他各部分模塊的協(xié)同工作,完成LD、ST指令,以及新增的OSEG、CSEG、FLD、FST指令訪問高速緩存時的各種功能;控制邏輯中包含段機制使能標志寄存器,當(dāng)此標志寄存器的值為0時,LD、ST指令訪問高速緩存時屏蔽段表,段機制將不起作用。全文摘要本發(fā)明公開了一種微處理器中分段高速緩存的設(shè)計方法及分段高速緩存,在傳統(tǒng)數(shù)據(jù)高速緩存上增加段表以及相應(yīng)的控制邏輯等段機制,增加用于在段機制基礎(chǔ)上實現(xiàn)預(yù)取的預(yù)取智能體,同時在指令集中增加維護段的創(chuàng)建段、刪除段指令,在傳統(tǒng)的存數(shù)、取數(shù)指令上增加段號,并增加特殊的存數(shù)、取數(shù)指令,用于啟動預(yù)取智能體;當(dāng)數(shù)據(jù)高速緩存在使用時,查找段表與有效地址計算并行執(zhí)行,地址映射在有效地址計算和查找段表之后執(zhí)行,最后根據(jù)地址映射得到的高速緩存行的地址對高速緩存進行訪問。本發(fā)明使得高速緩存能夠在較小的軟件管理開銷下,充分利用程序中數(shù)據(jù)的局部性,提升計算機中存儲系統(tǒng)的訪問性能,進而改善存儲墻問題。文檔編號G06F12/08GK101149704SQ20071003600公開日2008年3月26日申請日期2007年10月31日優(yōu)先權(quán)日2007年10月31日發(fā)明者馮權(quán)友,劉光輝,吳俊杰,唐玉華,張百達,坤曾,楊學(xué)軍申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)