專利名稱:一種外部存儲器的訪問控制方法及訪問控制裝置的制作方法
技術領域:
本發(fā)明屬于存儲器領域,尤其涉及一種外部存儲器的訪問控制方法及訪問 控制裝置。
背景技術:
處理器是系統(tǒng)工作的核心,它需要與外部存儲器進行頻繁的數(shù)據(jù)交互來進 行運算或者系統(tǒng)控制。但由于現(xiàn)有的外部存儲器的運行速度遠遠小于處理器的 運算速度,造成處理器必須等待所需數(shù)據(jù)從外部存儲器中獲得才能繼續(xù)進行運 算,從而降低了處理器的工作效率。
為了降低低速的外部存儲器對處理器工作效率的影響,現(xiàn)有技術提供了多 種外部存儲器訪問方法,如在處理器中設置高速緩存,當處理器發(fā)生數(shù)據(jù)訪問 請求時,先從高速緩存中查詢,如果沒有,則高速緩存才艮據(jù)處理器的數(shù)據(jù)訪問 請求攜帶的數(shù)據(jù)訪問地址從外部存儲器中讀取該數(shù)據(jù)訪問地址對應的數(shù)據(jù)行的 所有數(shù)據(jù),這種外部存儲器訪問方法對于處理器重復訪問同一地址區(qū)域的數(shù)據(jù) 十分有效,但如果處理器經(jīng)常訪問不同的地址區(qū)域,則高速緩存的命中率大大 下降,從而影響處理器的工作效率。
現(xiàn)有技術提供另一種基于預先讀取機制的外部存儲器的訪問方法,該方法 是基于預設的預先讀取機制,將預測的處理器需要的數(shù)據(jù)提前從外部存儲器中 讀取至高速緩存中,當處理器需要使用時,直接從高速緩存中獲取。這種方法 降低了讀取數(shù)據(jù)的延時,但由于處理器所需的數(shù)據(jù)一般可分指令數(shù)據(jù)和運算數(shù) 據(jù),其中運算數(shù)據(jù)的相關性與具體的應用有關,比較復雜,如果采用預先讀取 機制預先讀取運算數(shù)據(jù),則預先讀取機制設計復雜,且通用性不好,難以提高 處理器的工作效率。
發(fā)明內容
本發(fā)明實施例的目的在于提供一種外部存儲器的訪問控制方法,旨在解決 現(xiàn)有技術在處理器訪問外部存儲器時訪問效率低下的問題。
本發(fā)明實施例是這樣實現(xiàn)的, 一種外部存儲器的訪問控制方法,所述方法
包括下述步驟
從預先讀取的數(shù)據(jù)中讀取與所述第 一指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的 所有數(shù)據(jù);
將所述第 一指令數(shù)據(jù)訪問地址加上預設的步長值作為第二指令數(shù)據(jù)訪問地
址;
從外部存儲器中讀取并緩存與所述第二指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中 的所有數(shù)據(jù)。
進一步的,在接收到指令數(shù)據(jù)訪問請求時,從預先讀取的數(shù)據(jù)中讀取與所 述指令數(shù)據(jù)訪問請求攜帶的第 一指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的所有數(shù)據(jù) 的步驟之前,所述方法還包括下述步驟
接收數(shù)據(jù)訪問請求,并判斷所述數(shù)據(jù)訪問請求是否為指令數(shù)據(jù)訪問請求, 當所述數(shù)據(jù)訪問請求不是指令數(shù)據(jù)訪問請求時,根據(jù)所述數(shù)據(jù)訪問請求,直接 對外部存儲器進行訪問操作。
進一步的,在將所述第一指令數(shù)據(jù)訪問地址加上預設的步長值作為第二指 令數(shù)據(jù)訪問地址,從外部存儲器中讀取并緩存與所述第二指令數(shù)據(jù)訪問地址對 應的數(shù)據(jù)行中的所有數(shù)據(jù)的步驟之后,所述方法還包括下述步驟
判斷是否接收到非指令數(shù)據(jù)訪問請求,或者接收到的指令數(shù)據(jù)訪問請求攜 帶的指令數(shù)據(jù)訪問地址是否為所述第 一指令數(shù)據(jù)訪問地址后的連續(xù)地址,或者 預先讀取的數(shù)據(jù)是否已達到預設的數(shù)量,如果是,結束讀?。?br>
如果未接收到非指令數(shù)據(jù)訪問請求,接收到的指令數(shù)據(jù)訪問請求攜帶的指 令數(shù)據(jù)訪問地址是所述第 一指令數(shù)據(jù)訪問地址后的連續(xù)地址,且預先讀取的數(shù)
據(jù)未達到預設的數(shù)量,則將所述第二指令數(shù)據(jù)訪問地址加上預設的步長值作為 第三指令數(shù)據(jù)訪問地址,繼續(xù)從外部存儲器中讀取與所述第三指令數(shù)據(jù)訪問地 址對應的數(shù)據(jù)行中的所有數(shù)據(jù),循環(huán)執(zhí)行,直至接收到非指令數(shù)據(jù)訪問請求, 或者接收到的指令數(shù)據(jù)訪問請求攜帶的指令數(shù)據(jù)訪問地址不是所述第 一指令數(shù) 據(jù)訪問地址后的連續(xù)地址,或者預先讀取的數(shù)據(jù)達到預設的數(shù)量。
本發(fā)明實施例的另一目的在于提供一種外部存儲器的訪問控制裝置,所述 訪問控制裝置包括
總線接口,與所述總線接口分別連接的狀態(tài)處理器、預取數(shù)據(jù)緩存,分別 與所述狀態(tài)處理器、預取數(shù)據(jù)緩存連接的外部存儲器接口,以及與所述狀態(tài)處
理器連接的預取地址緩存;
所述狀態(tài)處理器根據(jù)所述總線接口接收的數(shù)據(jù)訪問請求控制所述外部存儲 器接口從外部讀取數(shù)據(jù)至所述預取數(shù)據(jù)緩存。
進一步的,所述訪問控制裝置還包括
分別與所述總線接口和外部存儲器接口連接的讀緩存和寫緩存;此時, 所述狀態(tài)處理器根據(jù)所述總線接口接收的數(shù)據(jù)訪問請求,控制所述外部存
儲器接口從外部存儲器中讀取數(shù)據(jù)至所述讀緩存,或者將所述寫緩存中的數(shù)據(jù)
寫入外部存儲器。
進一步的,所述狀態(tài)處理器包括
指令判斷單元,用于判斷所述總線接口接收的數(shù)據(jù)訪問請求是否為指令數(shù) 據(jù)訪問請求;
地址匹配單元,用于在所述指令判斷單元的結果為是時,將所述指令數(shù)據(jù) 訪問請求攜帶的第 一指令數(shù)據(jù)訪問地址與所述預取地址緩存中預存的地址進行 匹酉己;
訪問控制單元,用于根據(jù)所述指令判斷單元,或者地址匹配單元的判斷結 果控制所述外部存儲器接口從外部存儲器中讀取數(shù)據(jù)至所述讀緩存,或者從外 部存儲器中預先讀取數(shù)據(jù)至所述預取數(shù)據(jù)緩存,或者將所述寫緩存中的數(shù)據(jù)寫
入外部存儲器。
在本發(fā)明實施例中,通過設置一外部存儲器的訪問控制裝置,對指令數(shù)據(jù) 進行預先讀取緩存,從而在處理器的高速緩存未命中時,可以從外部存儲器的 訪問控制裝置中預先讀取緩存中讀取相應的指令數(shù)據(jù),從而提高了處理器的工 作效率。
圖1是本發(fā)明實施例提供的外部存儲器訪問控制方法的實現(xiàn)流程圖; 圖2是本發(fā)明實施例4是供的外部存儲器的訪問控制裝置的結構組成圖。
具體實施例方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實 施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅 僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
在本發(fā)明實施例中,在接收到指令數(shù)據(jù)訪問請求時,從預先讀取的數(shù)據(jù)中 讀取與該指令數(shù)據(jù)訪問請求攜帶的指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的所有數(shù) 據(jù),同時將該指令數(shù)據(jù)訪問地址加上預設的步長值作為指令數(shù)據(jù)訪問地址,從 外部存儲器中預先讀取并緩存與該指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行的所有數(shù) 據(jù),從而在處理器使用指令數(shù)據(jù)前,預先讀取指令數(shù)據(jù),提高了處理器的工作 效率。
圖1示出了本發(fā)明實施例提供的外部存儲器訪問控制方法的實現(xiàn)流程,詳 述如下
在步驟SIOI中,接收攜帶數(shù)據(jù)訪問地址的數(shù)據(jù)訪問請求,并判斷該數(shù)據(jù)訪 問請求是否為指令數(shù)據(jù)訪問請求,如果是,執(zhí)行步驟S102,否則,執(zhí)行步驟 S106。
由于處理器所需的數(shù)據(jù)一般可分為兩種, 一種是指令數(shù)據(jù),另一種是運算
數(shù)據(jù)。其中指令數(shù)據(jù)是處理器的指令代碼,其相關性一般呈固定的連續(xù)性。運 算數(shù)據(jù)是處理器的運算對象,其相關性與具體的運算應用有關,且比較復雜。 因此,數(shù)據(jù)訪問請求可以是指令數(shù)據(jù)訪問請求或者運算數(shù)據(jù)訪問請求。由于運 算數(shù)據(jù)的相關性與具體的運算應用有關,因此,需要根據(jù)具體的運算應用設計 對應的數(shù)據(jù)預先讀取機制,難以設計一種通用的數(shù)據(jù)預先讀取機制來預先讀取 運算數(shù)據(jù)。而指令數(shù)據(jù)的相關性呈固定的連續(xù)性,因此,本發(fā)明實施例主要針 對指令數(shù)據(jù)設計一種指令數(shù)據(jù)的預先讀取機制。所以,在接收到數(shù)據(jù)訪問請求 時,需要判斷該數(shù)據(jù)訪問請求是否為指令數(shù)據(jù)訪問請求。
在本發(fā)明實施例中,可以通過在數(shù)據(jù)訪問請求中添加標志信號,通過該標 志信號標識該數(shù)據(jù)訪問請求為指令數(shù)據(jù)訪問請求還是運算數(shù)據(jù)訪問請求。在接 收到攜帶數(shù)據(jù)訪問地址的數(shù)據(jù)訪問請求后,根據(jù)該數(shù)據(jù)訪問請求中的標志信號 判斷該數(shù)據(jù)訪問請求是否為指令數(shù)據(jù)訪問請求。如果該數(shù)據(jù)訪問請求為指令數(shù) 據(jù)訪問請求,則該數(shù)據(jù)訪問請求攜帶的數(shù)據(jù)訪問地址為第 一指令數(shù)據(jù)訪問地址
A,如果該數(shù)據(jù)訪問請求為運算數(shù)據(jù)訪問請求,則該數(shù)據(jù)訪問請求攜帶的數(shù)據(jù) 訪問地址為運算數(shù)據(jù)訪問地址B。
在步驟S102中,將該指令數(shù)據(jù)訪問請求攜帶的第一指令數(shù)據(jù)訪問地址A 和預先讀取的地址行進行逐項匹配,如果匹配不成功,執(zhí)行步驟S103,如果匹 配成功,同時執(zhí)行步驟S104和步驟S105。
在步驟S103中,從外部存儲器中讀取與該第一指令數(shù)據(jù)訪問地址A對應 的數(shù)據(jù)行中的所有數(shù)據(jù),并將讀取的數(shù)據(jù)傳輸至高速緩存,再執(zhí)行步驟S105。
在步驟S104中,從預先讀取的數(shù)據(jù)中讀取與該第一指令數(shù)據(jù)訪問地址A 匹配成功的地址所對應的數(shù)據(jù)行中的所有數(shù)據(jù)并傳輸至高速緩存,再返回步驟 S101,繼續(xù)等待接收總線接口的訪問請求。
為了保證從預先讀取的數(shù)據(jù)中讀取與該第一指令數(shù)據(jù)訪問地址A匹配成功 的地址所對應的數(shù)據(jù)行中的所有翁:據(jù)為有效數(shù)據(jù),在本發(fā)明另一實施例中,在 讀取與該第 一指令數(shù)據(jù)訪問地址A匹配成功的地址所對應的數(shù)據(jù)行中的所有數(shù)據(jù)之前,該方法還包括下述步驟
判斷與該第一指令數(shù)據(jù)訪問地址A匹配成功的地址所對應的數(shù)據(jù)行中的數(shù) 據(jù)的有效位是否有效,如果是,則讀取該數(shù)據(jù)并將該數(shù)據(jù)傳輸至高速緩存,如 果否,則等待直至該數(shù)據(jù)的有效位被置為有效后再讀取該數(shù)據(jù)并將該數(shù)據(jù)傳輸 至高速緩存,循環(huán)執(zhí)行,直至與該第一指令數(shù)據(jù)訪問地址A匹配成功的地址所 對應的數(shù)據(jù)行中的所有數(shù)據(jù)均讀取完畢。
在步驟S105中,將該第一指令數(shù)據(jù)訪問地址A加上預設的步長值S作為 第二指令數(shù)據(jù)訪問地址c,從外部存儲器中讀取與該第二指令數(shù)據(jù)訪問地址C 對應的數(shù)據(jù)行中的所有數(shù)據(jù),并緩存第二指令數(shù)據(jù)訪問地址C以及讀取的數(shù)據(jù)。 其具體過程如下所述
A、 將該第一指令數(shù)據(jù)訪問地址A加上預設的步長值S作為第二指令數(shù)據(jù) 訪問地址C,并緩存該第二指令數(shù)據(jù)訪問地址C。其中預設的步長值S的長度 為處理器使用的高速緩存的數(shù)據(jù)行的大小,即每次預先讀取的數(shù)據(jù)量為處理器 使用的高速緩存的一行的數(shù)據(jù)量。
B、 從外部存儲器中讀取與該第二指令數(shù)據(jù)訪問地址C對應的數(shù)據(jù)行中的 所有數(shù)據(jù)并緩存。
由于在讀取與第二指令數(shù)據(jù)訪問地址C對應的數(shù)據(jù)行時,是逐字讀取的, 因此,每讀取與第二指令數(shù)據(jù)訪問地址C對應的數(shù)據(jù)行中的一個數(shù)據(jù)時,即將 該數(shù)據(jù)對應的有效位置為有效,以備以后在讀取該數(shù)據(jù)時,保證該數(shù)據(jù)的有效 性。
在本發(fā)明另一實施例中,在讀取完第二指令數(shù)據(jù)訪問地址C對應的數(shù)據(jù)行 中的所有數(shù)據(jù)后,如果接收到總線接口傳輸?shù)姆侵噶顢?shù)據(jù)訪問請求,或者接收 到指令數(shù)據(jù)訪問請求,但該指令數(shù)據(jù)訪問請求攜帶的指令數(shù)據(jù)訪問地址不是第 一指令數(shù)據(jù)訪問地址A后面的連續(xù)地址,或者緩存的從外部存儲器中讀取的數(shù) 據(jù)已經(jīng)達到預設數(shù)量,則停止繼續(xù)從外部存儲器中讀取數(shù)據(jù)。如果未接收到非 指令數(shù)據(jù)訪問請求,接收到的指令數(shù)據(jù)訪問請求攜帶的指令數(shù)據(jù)訪問地址是所 述第一指令數(shù)據(jù)訪問地址A后的連續(xù)地址,且預先讀取的數(shù)據(jù)未達到預設的數(shù) 量,將第二指令數(shù)據(jù)訪問地址C加上預設的步長值S作為第三指令數(shù)據(jù)訪問地 址D,繼續(xù)從外部存儲器中讀取與該第三指令數(shù)據(jù)訪問地址D對應的數(shù)據(jù)行中 的所有數(shù)據(jù),循環(huán)執(zhí)行,直至接收到非指令數(shù)據(jù)訪問請求,或者接收到的指令 數(shù)據(jù)訪問請求攜帶的指令數(shù)據(jù)訪問地址不是第 一指令數(shù)據(jù)訪問地址A后的連續(xù) 地址,或者預先讀取的數(shù)據(jù)已達到預設的數(shù)量,即停止預先讀取數(shù)據(jù)。
在步驟S106中,根據(jù)接收的數(shù)據(jù)訪問請求攜帶的數(shù)據(jù)訪問地址,對外部存 儲器進行訪問操作, 一次數(shù)據(jù)訪問操作完成后返回步驟SIOI,繼續(xù)等待接收總 線接口的訪問請求。
在本發(fā)明實施例中,當接收的數(shù)據(jù)訪問請求為寫數(shù)據(jù)訪問請求時,該寫數(shù) 據(jù)訪問請求攜帶需要寫入外部存儲器中的數(shù)據(jù)以及數(shù)據(jù)寫入地址,此時,將該 寫數(shù)據(jù)訪問請求攜帶的需要寫入外部存儲器中的數(shù)據(jù)寫入至外部存儲器的與該 寫數(shù)據(jù)訪問請求攜帶的數(shù)據(jù)寫入地址對應的地址中。當從數(shù)據(jù)總線傳輸?shù)臄?shù)據(jù) 訪問請求為讀數(shù)據(jù)訪問請求時,該讀數(shù)據(jù)訪問請求攜帶數(shù)據(jù)讀取地址,此時, 從外部存儲器中讀取與該讀數(shù)據(jù)訪問請求攜帶的數(shù)據(jù)讀取地址對應的數(shù)據(jù),并 傳輸至總線接口。
圖2示出了本發(fā)明實施例提供的外部存儲器的訪問控制裝置的結構,為了 ^更于說明,僅示出了與本發(fā)明實施例相關的部分。
總線接口 l分別與處理器的高速緩存(圖未示出)、狀態(tài)處理器2連接, 將處理器的高速緩存的彩:據(jù)訪問請求傳輸至狀態(tài)處理器2,同時該總線接口 1 分別與預取數(shù)據(jù)緩存3、讀緩存5以及寫緩存6連接,將預取數(shù)據(jù)緩存3中的 數(shù)據(jù)或者讀緩存5中的數(shù)據(jù)傳輸至處理器的高速緩存,或者將處理器的高速緩 存?zhèn)鬏數(shù)臄?shù)據(jù)寫入寫緩存6中。
狀態(tài)處理器2分別與預取地址緩存4以及外部存儲器接口 7連接。該狀態(tài) 處理器2根據(jù)總線接口 1傳輸?shù)臄?shù)據(jù)訪問請求控制外部存儲器接口 7訪問外部 存儲器。其中根據(jù)總線接口 l傳輸?shù)臄?shù)據(jù)訪問請求控制外部存儲器接口 7訪問
外部存儲器具體包括狀態(tài)處理器2根據(jù)總線接口l傳輸?shù)臄?shù)據(jù)訪問請求控制 外部存儲器接口 7將寫緩存6中的數(shù)據(jù)寫入外部存儲器,或者控制外部存儲器 接口 7從外部存儲器中讀取數(shù)據(jù)至讀緩存5中,或者控制外部存儲器接口 7從 外部存儲器中預先讀取數(shù)據(jù)至預取數(shù)據(jù)緩存3中。
其中預取數(shù)據(jù)緩存3暫存從外部存儲器預先讀取的指令數(shù)據(jù)。該預取數(shù)據(jù) 緩存3可以有至少一個數(shù)據(jù)行,數(shù)據(jù)行的大小與處理器使用的高速緩存的數(shù)據(jù) 行的大小一致。同時數(shù)據(jù)行中的每個數(shù)據(jù)均設置有一有效位,該有效位標志該 數(shù)據(jù)行中對應的數(shù)據(jù)是否有效。
預取地址緩存4存儲對應于預取數(shù)據(jù)緩存3中的指令數(shù)據(jù)的高位地址,即 每一個凄史據(jù)行對應預耳又地址緩存4中的一個地址4亍。
外部存儲器接口 7在狀態(tài)處理器的控制下從外部存儲器中預先讀取數(shù)據(jù)至 預取數(shù)據(jù)緩存3中或者讀取數(shù)據(jù)至讀緩存5中,或者將高速緩存?zhèn)鬏數(shù)臄?shù)據(jù)寫 入外部存儲器。
其中狀態(tài)處理器2包括指令判斷單元21、地址匹配單元22、訪問控制單元 23。該指令判斷單元21在接收到總線接口 l傳輸?shù)臄?shù)據(jù)訪問請求時,判斷該數(shù) 據(jù)訪問請求是否為指令數(shù)據(jù)訪問請求。在本發(fā)明實施例中,可以通過為指令數(shù) 據(jù)訪問請求中添加標志信號,通過該標志信號標識該數(shù)據(jù)訪問請求為指令數(shù)據(jù) 訪問請求還是運算數(shù)據(jù)訪問請求。指令判斷單元21根據(jù)數(shù)據(jù)訪問請求中的標志 信號即可判斷該數(shù)據(jù)訪問請求是否為指令數(shù)據(jù)訪問請求。
如果指令判斷單元21判定總線接口 1傳輸?shù)臄?shù)據(jù)訪問請求為指令數(shù)據(jù)訪問 請求,則該指令數(shù)據(jù)訪問請求攜帶第一指令數(shù)據(jù)訪問地址A。當該數(shù)據(jù)訪問請 求為指令數(shù)據(jù)訪問請求時,地址匹配單元22將該指令數(shù)據(jù)訪問請求攜帶的第一 指令數(shù)據(jù)訪問地址A與預取地址緩存4中預存的地址進行匹配。
其中訪問控制單元23包括預取訪問控制模塊231、直接讀取控制模塊232 和直接訪問控制模塊233。
其中預取訪問控制模塊231在指令判斷單元21判定總線接口 1傳輸?shù)臄?shù)據(jù)
訪問請求為指令數(shù)據(jù)訪問請求時,從預取數(shù)據(jù)緩存3中讀取與第一指令數(shù)據(jù)訪
問地址A匹配的預取地址緩存4中的地址對應的數(shù)據(jù)行中的數(shù)據(jù)至總線接口 1, 同時將該指令數(shù)據(jù)訪問請求攜帶的第一指令數(shù)據(jù)訪問地址A加上預設的步長值 S作為第二指令數(shù)據(jù)訪問地址C,并將該第二指令數(shù)據(jù)訪問地址C緩存至預取 地址緩存4,同時控制外部存儲器接口 7從外部存儲器預先讀取與該第二指令 數(shù)據(jù)訪問地址C對應的數(shù)據(jù)行中的數(shù)據(jù)至預取數(shù)據(jù)緩存3。
在本發(fā)明另一實施例中,在預取訪問控制模塊231控制外部存儲器接口 7 從外部存儲器中預先讀取與該第二指令數(shù)據(jù)訪問地址C對應的數(shù)據(jù)行中的所有 數(shù)據(jù)后,如果從總線接口 l接收到非指令數(shù)據(jù)訪問請求,或者接收到的指令數(shù) 據(jù)訪問請求攜帶的指令數(shù)據(jù)訪問地址不是第 一指令數(shù)據(jù)訪問地址A后面的連續(xù) 地址,或者預取數(shù)據(jù)緩存3中的數(shù)據(jù)行已滿,則預取訪問控制模塊231控制外 部存儲器接口 7停止預先讀取數(shù)據(jù),否則,預取訪問控制模塊231將第二指令 數(shù)據(jù)訪問地址C加上預設的步長值S作為第三指令數(shù)據(jù)訪問地址D,繼續(xù)控制 外部存儲器接口 7從外部存儲器中預先讀取與該第三指令數(shù)據(jù)訪問地址D對應 的數(shù)據(jù)行中的所有數(shù)據(jù)并暫存至預取數(shù)據(jù)緩存3中。
直接讀取控制模塊232在地址匹配單元22將第一指令數(shù)據(jù)訪問地址A與 預取地址緩存4中預存的地址匹配不成功時,控制外部存儲器接口 7直接從外 部存儲器中讀取與第一指令數(shù)據(jù)訪問地址A對應的數(shù)據(jù)行中的數(shù)據(jù),并將讀取 的數(shù)據(jù)暫存至讀緩存5中,通過數(shù)據(jù)接口 21將讀緩存5中的數(shù)據(jù)傳輸至處理器 的高速緩存。
直接訪問控制模塊233在指令判斷單元21判定總線接口 l傳輸?shù)臄?shù)據(jù)訪問 請求不是指令數(shù)據(jù)訪問請求時,控制外部存儲器接口 7根據(jù)數(shù)據(jù)訪問請求將寫 緩存6中的數(shù)據(jù)寫入外部存儲器,或者從外部存儲器中讀取數(shù)據(jù)至讀緩存5, 再通過總線數(shù)據(jù)接口 21將讀緩存5中的數(shù)據(jù)傳輸至處理器的高速緩存。
在本發(fā)明實施例中,外部存儲器的訪問控制裝置在接收到指令數(shù)據(jù)訪問請 求時,先從預存的數(shù)據(jù)中查找,同時根據(jù)該指令數(shù)據(jù)訪問請求攜帶的指令數(shù)據(jù)
訪問地址加上預設的步長,從外部存儲器中預先讀取數(shù)據(jù),從而增加了高速緩 存的命中率,提高了處理器的工作效率。同時本發(fā)明實施例在外部存儲器的訪 問控制裝置中設置預先讀取緩存(包括預取地址緩存和預取數(shù)據(jù)緩存),不需 要修改處理器的高速緩存,通用性較好。本發(fā)明實施例通過為數(shù)據(jù)設置有效位, 從而在一個數(shù)據(jù)行沒有完全讀取完畢時,可以先讀取數(shù)據(jù)的有效位為有效的數(shù) 據(jù),從而不需要處理器等待整行數(shù)據(jù)全部讀取完畢后再執(zhí)行操作,提高了處理 器的工作效率。同時本發(fā)明實施例在完成處理器的一行指令數(shù)據(jù)的讀請求后, 如果沒有收到其他非指令數(shù)據(jù)訪問請求,且預測正確,并且預取數(shù)據(jù)緩存未滿 時,繼續(xù)讀取下一行指令數(shù)據(jù),從而增加了每次訪問外部存儲器的有效數(shù)據(jù)的 讀取量,提高了外部存儲器的訪問效率。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā) 明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明 的寸呆護范圍之內。
權利要求
1、一種外部存儲器的訪問控制方法,其特征在于,所述方法包括下述步驟接收指令數(shù)據(jù)訪問請求,所述指令數(shù)據(jù)訪問請求包括第一指令數(shù)據(jù)訪問地址;從預先讀取的數(shù)據(jù)中讀取與所述第一指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的所有數(shù)據(jù);將所述第一指令數(shù)據(jù)訪問地址加上預設的步長值作為第二指令數(shù)據(jù)訪問地址;從外部存儲器中讀取并緩存與所述第二指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的所有數(shù)據(jù)。
2、 如權利要求1所述的方法,其特征在于,在接收到指令數(shù)據(jù)訪問請求時, 從預先讀取的數(shù)據(jù)中讀取與所述指令數(shù)據(jù)訪問請求攜帶的第 一指令數(shù)據(jù)訪問地 址對應的數(shù)據(jù)行中的所有數(shù)據(jù)的步驟之前,所述方法還包括下述步驟接收數(shù)據(jù)訪問請求,并判斷所述數(shù)據(jù)訪問請求是否為指令數(shù)據(jù)訪問請求, 當所述數(shù)據(jù)訪問請求不是指令數(shù)據(jù)訪問請求時,根據(jù)所述數(shù)據(jù)訪問請求,直接 對外部存儲器進行訪問操作。
3、 如權利要求l所述的方法,其特征在于,在將所述第一指令數(shù)據(jù)訪問地 址加上預設的步長值作為第二指令數(shù)據(jù)訪問地址,從外部存儲器中讀取并緩存 與所述第二指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的所有數(shù)據(jù)的步驟之后,所述方 法還包括下述步驟判斷是否接收到非指令數(shù)據(jù)訪問請求,或者接收到的指令數(shù)據(jù)訪問請求攜 帶的指令數(shù)據(jù)訪問地址是否為所述第 一指令數(shù)據(jù)訪問地址后的連續(xù)地址,或者預先讀取的數(shù)據(jù)是否已達到預設的數(shù)量,如果是,結束讀?。蝗绻唇邮盏椒侵噶顢?shù)據(jù)訪問請求,接收到的指令數(shù)據(jù)訪問請求攜帶的指令數(shù)據(jù)訪問地址是所述第 一指令數(shù)據(jù)訪問地址后的連續(xù)地址,且預先讀取的數(shù) 據(jù)未達到預設的數(shù)量,則將所述第二指令數(shù)據(jù)訪問地址加上預設的步長值作為 第三指令數(shù)據(jù)訪問地址,繼續(xù)從外部存儲器中讀取與所述第三指令數(shù)據(jù)訪問地 址對應的數(shù)據(jù)行中的所有數(shù)據(jù),循環(huán)執(zhí)行,直至接收到非指令數(shù)據(jù)訪問請求, 或者接收到的指令數(shù)據(jù)訪問請求攜帶的指令數(shù)據(jù)訪問地址不是所述第 一指令數(shù) 據(jù)訪問地址后的連續(xù)地址,或者預先讀取的數(shù)據(jù)達到預設的數(shù)量。
4、 如權利要求l所述的方法,其特征在于,在從外部存儲器中預先讀取與 所述指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的所有數(shù)據(jù)時,每讀取成功一個數(shù)據(jù), 即將所述數(shù)據(jù)的有效位置為有效。
5、 如權利要求4所述的方法,其特征在于,從預先讀取的數(shù)據(jù)中讀取與所 述指令數(shù)據(jù)訪問請求攜帶的第 一指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的所有數(shù)據(jù) 的步驟之前,所述方法還包括下述步驟判斷與所述指令數(shù)據(jù)訪問請求攜帶的第 一指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行 中的數(shù)據(jù)的有效位是否為有效,如果是,則讀取所述數(shù)據(jù),否則,等待直至所 述數(shù)據(jù)的有效位被置為有效后再讀取所述數(shù)據(jù)。
6、 如權利要求1至5任一權利要求所述的方法,其特征在于,所述預設的 步長值為處理器所使用的高速緩存的數(shù)據(jù)行的大小。
7、 一種外部存儲器的訪問控制裝置,其特征在于,所述訪問控制裝置包括 總線接口,分別與所述總線接口連接的狀態(tài)處理器、預取數(shù)據(jù)緩存,分別與所述狀態(tài)處理器、預取數(shù)據(jù)緩存連接的外部存儲器接口,以及與所述狀態(tài)處 理器連接的預取地址緩存;所述狀態(tài)處理器根據(jù)所述總線接口接收的數(shù)據(jù)訪問請求控制所述外部存儲 器接口從外部讀取數(shù)據(jù)至所述預取數(shù)據(jù)緩存。
8、 如權利要求7所述的訪問控制裝置,其特征在于,所述訪問控制裝置還 包括分別與所述總線接口和外部存儲器接口連接的讀緩存和寫緩存;此時, 所述狀態(tài)處理器根據(jù)所述總線接口接收的數(shù)據(jù)訪問請求,控制所述外部存 儲器接口從外部讀取數(shù)據(jù)至所述讀緩存,或者將所述寫緩存中的數(shù)據(jù)寫入外部 存儲器。
9、 如權利要求8所述的訪問控制裝置,其特征在于,所述狀態(tài)處理器包括 指令判斷單元,用于判斷所述總線接口接收的數(shù)據(jù)訪問請求是否為指令數(shù)據(jù)訪問請求;地址匹配單元,用于在所述指令判斷單元的結果為是時,將所述指令數(shù)據(jù) 訪問請求攜帶的第 一指令數(shù)據(jù)訪問地址與所述預取地址緩存中預存的地址進行 匹酉己;訪問控制單元,用于根據(jù)所述指令判斷單元,或者地址匹配單元的判斷結 果控制所述外部存儲器接口從外部讀取數(shù)據(jù)至所述讀緩存,或者從外部預先讀 取數(shù)據(jù)至所述預取數(shù)據(jù)緩存,或者將所述寫緩存中的數(shù)據(jù)寫入外部存儲器。
10、 如權利要求9所述的訪問控制裝置,其特征在于,所述訪問控制單元 包括預取訪問控制模塊,用于在所述指令判斷單元的結果為是時,從所述預取 數(shù)據(jù)緩存中讀取與所述第 一指令數(shù)據(jù)訪問地址匹配的地址對應的數(shù)據(jù)行中的數(shù) 據(jù)至所述總線接口 ,同時將所述指令數(shù)據(jù)訪問請求攜帶的第一指令數(shù)據(jù)訪問地 址加上預設的步長值作為第二指令數(shù)據(jù)訪問地址,并將所述第二指令數(shù)據(jù)訪問 地址緩存至所述預取地址緩存,同時控制所述外部存儲器接口從外部預先讀取 與所述第二指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的數(shù)據(jù)至所述預取數(shù)據(jù)緩存;直接讀取控制模塊,用于在所述地址匹配單元的結果為否時,控制所述外 部存儲器接口直接從外部讀取與所述第一指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的 數(shù)據(jù),并將讀取的數(shù)據(jù)暫存至所述讀緩存中;直接訪問控制模塊,用于在所述指令判斷單元的結果為否時,控制所述外 部存儲器接口根據(jù)所述數(shù)據(jù)訪問請求從外部讀取數(shù)據(jù)至所述讀緩存,或者將所 述寫緩存中的數(shù)據(jù)寫入外部存儲器。
11、 如權利要求IO所述的訪問控制裝置,其特征在于,當所述預取訪問控 制模塊控制所述外部存儲器接口從外部預先讀取與所述第二指令數(shù)據(jù)訪問地址對應的翁:據(jù)行中的數(shù)據(jù)至所述預取數(shù)據(jù)緩存后,如果未接收到非指令數(shù)據(jù)訪問 請求,接收到的指令數(shù)據(jù)訪問請求攜帶的指令數(shù)據(jù)訪問地址是所述第 一指令數(shù) 據(jù)訪問地址后的連續(xù)地址,且預先讀取的數(shù)據(jù)未達到預設的數(shù)量時,所述預取訪問控制模塊將所述第二指令數(shù)據(jù)訪問地址加上預設的步長值作 為第三指令數(shù)據(jù)訪問地址,繼續(xù)從外部讀取與所述第三指令數(shù)據(jù)訪問地址對應 的數(shù)據(jù)行中的所有數(shù)據(jù),循環(huán)執(zhí)行,直至接收到非指令數(shù)據(jù)訪問請求,或者接 收到的指令數(shù)據(jù)訪問請求攜帶的指令數(shù)據(jù)訪問地址不是所述第 一指令數(shù)據(jù)訪問 地址后的連續(xù)地址,或者預先讀取的數(shù)據(jù)達到預設的數(shù)量。
全文摘要
本發(fā)明適用于存儲器領域,提供了一種外部存儲器的訪問控制方法及訪問控制裝置,該方法包括下述步驟接收指令數(shù)據(jù)訪問請求,所述指令數(shù)據(jù)訪問請求包括第一指令數(shù)據(jù)訪問地址;從預先讀取的數(shù)據(jù)中讀取與所述第一指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的所有數(shù)據(jù);將所述第一指令數(shù)據(jù)訪問地址加上預設的步長值作為第二指令數(shù)據(jù)訪問地址;從外部存儲器中讀取并緩存與所述第二指令數(shù)據(jù)訪問地址對應的數(shù)據(jù)行中的所有數(shù)據(jù)。本發(fā)明實施例通過對指令數(shù)據(jù)進行預先讀取緩存,從而在處理器的高速緩存未命中時,從預先讀取緩存的指令數(shù)據(jù)中讀取相應的指令數(shù)據(jù),從而提高了處理器的工作效率。
文檔編號G06F13/16GK101354641SQ20081014197
公開日2009年1月28日 申請日期2008年8月20日 優(yōu)先權日2008年8月20日
發(fā)明者剛 牟 申請人:炬力集成電路設計有限公司