專利名稱:預(yù)先擷取控制方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于預(yù)先擷取控制方法,特別是關(guān)于利用合并存取方式向總線接口單元請(qǐng)求至少兩倍資料量,并將所接收的一部分或全部資料儲(chǔ)存在預(yù)先擷取緩沖器的預(yù)先擷取控制方法。
背景技術(shù):
一般的計(jì)算機(jī)架構(gòu)包含有處理器核心(Processor Core)、L1指令快取單元(L1 I-cache)、L1資料快取單元(L1 D-cache)、預(yù)先擷取快取單元(Pre-fetch catch unit)、以及主存儲(chǔ)器(Main Memory)。處理器核心從L1指令快取單元讀取指令的優(yōu)先權(quán)及速度高于從預(yù)先擷取快取單元讀取指令,且從預(yù)先擷取快取單元讀取指令的優(yōu)先權(quán)及速度高于從主存儲(chǔ)器讀取指令。因此,若能提高處理器核心從L1指令快取單元或預(yù)先擷取快取單元讀取指令的命中率(Hit rate),將有助于提升此計(jì)算機(jī)系統(tǒng)的效能(Performance)。
圖1顯示處理器核心請(qǐng)求指令的示意圖,其中所請(qǐng)求的指令沒(méi)有在L1指令快取單元找到(Cache Miss)。其步驟如下1.處理器核心11向L1指令快取單元12發(fā)出讀取指令請(qǐng)求。
2.L1指令快取單元12沒(méi)有找到處理器核心11所請(qǐng)求的指令(CacheMiss),因此該L1指令快取單元12向預(yù)先擷取快取單元13發(fā)出讀取指令請(qǐng)求。
3.預(yù)先擷取快取單元13在指令預(yù)先擷取緩沖器(InstructionPre-fetch Buffer,IPB)找到(Hit)并讀取所需指令。
4.預(yù)先擷取快取單元13將所需指令傳回L1指令快取單元12。
5.L1指令快取單元12將指令輸出到處理器核心11。
圖2顯示處理器核心請(qǐng)求指令的示意圖,其中所請(qǐng)求的指令沒(méi)有在L1指令快取單元找到(Cache Miss),也沒(méi)有在指令預(yù)先擷取緩沖器找到。其步驟如下1.處理器核心11向L1指令快取單元12發(fā)出讀取指令請(qǐng)求。
2.L1指令快取單元12沒(méi)有找到處理器核心11所請(qǐng)求指令(CacheMiss),因此該L1指令快取單元12向預(yù)先擷取快取單元13發(fā)出讀取指令請(qǐng)求。
3.預(yù)先擷取快取單元13沒(méi)有在指令預(yù)先擷取緩沖器(InstructionPre-fetch Buffer,IPB)14找到,因此向總線接口單元(BusInterface Unit,BIU)15發(fā)出指令請(qǐng)求。
4.預(yù)先擷取快取單元13接收總線接口單元15的指令并傳回L1指令快取單元12。
5.L1指令快取單元12將指令輸出到處理器核心11。
一般而言,處理器核心11從L1指令快取單元12讀取資料的時(shí)間比從預(yù)先擷取快取單元13讀取資料的時(shí)間快上數(shù)倍左右;處理器核心11從預(yù)先擷取快取單元13讀取資料的時(shí)間比從總線接口單元15讀取資料的時(shí)間快上數(shù)倍左右;以及處理器核心11從L1指令快取單元12讀取資料的時(shí)間比從總線接口單元15讀取資料的時(shí)間快上數(shù)十倍左右。因此,若能增加L1指令快取單元12以及預(yù)先擷取快取單元13的命中率,則可增加系統(tǒng)的效率。但是若要提升命中率,則需要較高的成本以及較復(fù)雜的預(yù)先擷取算法(Pre-fetch Algorithm),且需要較多的硬件電路,并消耗較多功率。而且,系統(tǒng)總線會(huì)被預(yù)先存取工作占據(jù)過(guò)久的時(shí)間,所以系統(tǒng)的效能可能會(huì)變差。而先前的技術(shù)都著重于如何提高預(yù)先擷取快取的命中率,并未討論系統(tǒng)效能(System Performance)的因素。
發(fā)明內(nèi)容
有鑒于上述問(wèn)題,本發(fā)明的目的是提出一種預(yù)先擷取控制方法,利用合并存取方式向總線接口單元請(qǐng)求至少兩倍資料量,并將所接收的一部分或全部資料儲(chǔ)存在預(yù)先擷取緩沖器的預(yù)先擷取控制方法。
為達(dá)成上述目的,本發(fā)明預(yù)先擷取控制方法包含下列步驟一、接收快取控制器發(fā)出的M-bytes資料請(qǐng)求;二、預(yù)先擷取控制器確認(rèn)預(yù)先擷取緩沖器是否存在所請(qǐng)求的資料,若找到所請(qǐng)求的資料則將資料傳回快取控制器,若沒(méi)有找到所請(qǐng)求的資料則跳至下一步驟;三、根據(jù)合并存取條件來(lái)判斷是否需要合并存取資料,若不符合合并存取資料,則向外部單元發(fā)出M-bytes資料請(qǐng)求,若符合合并存取資料,則向外部單元發(fā)出n*M-bytes資料請(qǐng)求,其中n>=2;四、若向外部單元發(fā)出M-bytes資料請(qǐng)求,則將所接收的M-bytes資料傳回快取控制器;以及五、若向外部單元發(fā)出n*M-bytes資料請(qǐng)求,則除了將所接收的前M-bytes資料傳回快取控制器之外,還將后(n-1)*M-bytes資料儲(chǔ)存在預(yù)先擷取緩沖器。
其中,所謂的合并存取條件是指接收到兩個(gè)連續(xù)地址或特定特性的資料請(qǐng)求。
圖1顯示已知處理器核心請(qǐng)求指令的示意圖,其中所請(qǐng)求的指令沒(méi)有在L1指令快取單元找到;圖2顯示已知處理器核心請(qǐng)求指令的示意圖,其中所請(qǐng)求的指令沒(méi)有在L1指令快取單元找到,也沒(méi)有在指令預(yù)先擷取緩沖器找到;圖3顯示本發(fā)明處理器核心請(qǐng)求指令的示意圖的一實(shí)施例,是利用合并存取將下一地址資料寫入預(yù)先擷取緩沖器;
圖4顯示本發(fā)明處理器核心請(qǐng)求指令的示意圖的另一實(shí)施例,是利用合并存取將兩個(gè)連續(xù)地址資料寫入預(yù)先擷取緩沖器;圖5A與圖5B顯示本發(fā)明預(yù)先擷取控制方法的流程圖。
具體實(shí)施例方式
以下參考圖式詳細(xì)說(shuō)明本發(fā)明預(yù)先擷取控制方法。
一般而言,如主存儲(chǔ)器、硬盤、光盤等外部單元的資料存取可為突發(fā)模式(Burst-Mode),因此,此種外部單元,例如SDRAM,允許控制器在存取多個(gè)字組時(shí),不用對(duì)每個(gè)字組花費(fèi)CAS存取時(shí)間。所以,系統(tǒng)向此種外部單元讀取2*M-bytes資料的時(shí)間會(huì)少于分別以兩次讀取M-bytes資料所花費(fèi)的時(shí)間,例如分別以兩次讀取M-bytes資料可能需要52周期(cycle),而一次讀取2*M-bytes資料的時(shí)間可能只需34周期。因此,本發(fā)明預(yù)先擷取控制方法即利用此特性,在符合合并存取的條件時(shí),以至少兩倍于快取控制器所請(qǐng)求的資料量向外部單元讀取資料。之后,將所接收到的資料一部分或全部?jī)?chǔ)存在預(yù)先擷取緩沖器,藉以節(jié)省總線結(jié)面單元被占用的時(shí)間。
圖3顯示本發(fā)明處理器核心請(qǐng)求指令的示意圖,其中所請(qǐng)求的指令沒(méi)有在L1指令快取單元找到(Cache Miss),也沒(méi)有在指令預(yù)先擷取緩沖器找到。其指令讀取的方式如下1.處理器核心11向L1指令快取單元12發(fā)出讀取指令請(qǐng)求。
2.L1指令快取單元12沒(méi)有找到處理器核心11所需指令,因此該L1指令快取單元12向預(yù)先擷取快取單元13發(fā)出讀取M-bytes指令請(qǐng)求。
3.預(yù)先擷取快取單元13沒(méi)有在指令預(yù)先擷取緩沖器14找到,但由于預(yù)先擷取快取單元13偵測(cè)到符合合并存取的條件,因此向總線接口單元15發(fā)出2*M-bytes指令請(qǐng)求。
4.預(yù)先擷取快取單元13接收總線接口單元15的資料,并將前M-bytes指令傳回L1指令快取單元12。
5.L1指令快取單元12將指令輸出到處理器核心11,且預(yù)先擷取快取單元13將其余M-bytes指令填入指令預(yù)先擷取緩沖器中。
而上述所謂“符合合并存取的條件”在此是指L1指令快取單元12發(fā)出兩次連續(xù)地址的指令請(qǐng)求。也就是,處理器核心11需要兩個(gè)連續(xù)地址的指令。根據(jù)此需求來(lái)判斷,處理器核心11可能需要下一個(gè)連續(xù)地址的指令或資料,因此本發(fā)明的預(yù)先擷取快取單元13向總線接口單元15發(fā)出2*M-bytes指令請(qǐng)求,并將前M-bytes指令傳回L1指令快取單元12,而將后M-bytes指令填入指令預(yù)先擷取緩沖器中。所以,若處理器核心11真的需要下一個(gè)連續(xù)地址的指令,則可直接從該指令預(yù)先擷取緩沖器來(lái)讀取,不需向總線接口單元15發(fā)出M-bytes指令請(qǐng)求,藉以節(jié)省向總線接口單元15發(fā)出M-bytes指令請(qǐng)求的時(shí)間,同時(shí)減少處理器核心11的等待時(shí)間。例如,若以已知方式向總線口單元15發(fā)出指令請(qǐng)求,需要2次M-bytes存取周期,大約52周期;而本發(fā)明則僅需要一次2*M-bytes存取周期,大約34周期。
圖4顯示處理器核心請(qǐng)求指令的示意圖,其中所請(qǐng)求的指令沒(méi)有在L1指令快取單元找到,但在指令預(yù)先擷取緩沖器找到。另外,圖4的預(yù)先擷取快取單元13還接收一強(qiáng)制預(yù)取信號(hào)。該強(qiáng)制預(yù)取信號(hào)是在特別情形下由其它硬件或微處理單元產(chǎn)生,例如當(dāng)微處理單元接收到強(qiáng)制擷取某些資料至快取單元,快取單元可將該強(qiáng)制預(yù)取信號(hào)致能(Enable)。其指令讀取的方式如下1.處理器核心11向L1指令快取單元12發(fā)出讀取指令請(qǐng)求。
2.L1指令快取單元12沒(méi)有找到處理器核心11所需指令,因此該L1指令快取單元12向預(yù)先擷取快取單元13發(fā)出讀取M-bytes指令請(qǐng)求。
3.預(yù)先擷取快取單元13在指令預(yù)先擷取緩沖器14找到所需指令并將指令傳回L1指令快取單元12。
4.預(yù)先擷取快取單元13偵測(cè)到符合合并存取的條件,因此向總線接口單元15發(fā)出2*M-bytes指令請(qǐng)求。
5.預(yù)先擷取快取單元13將2*M-bytes指令填入指令預(yù)先擷取緩沖器中。
而上述所謂“符合合并存取的條件”在此是指在指令預(yù)先擷取緩沖器14找到所需指令,且其余指令預(yù)先擷取緩沖器14為空、無(wú)效(invalid)、無(wú)下一個(gè)連續(xù)位的資料或強(qiáng)制預(yù)取信號(hào)被致能。根據(jù)此需求來(lái)判斷,處理器核心11可能需要下一個(gè)連續(xù)地址的指令,本發(fā)明的預(yù)先擷取快取單元13向總線接口單元15發(fā)出2*M-bytes指令請(qǐng)求,并將2*M-bytes指令填入指令預(yù)先擷取緩沖器中。所以,若處理器核心11真的需要下一個(gè)連續(xù)地址的指令,則可直接從該指令預(yù)先擷取緩沖器來(lái)讀取,不需向總線接口單元15發(fā)出指令請(qǐng)求,藉以節(jié)省向總線接口單元15發(fā)出指令請(qǐng)求的時(shí)間。而且,由于預(yù)先擷取快取單元13向總線接口單元15發(fā)出2*M-bytes指令請(qǐng)求,可以減少CPU占用系統(tǒng)總線的時(shí)間,也可減少CPU等待的時(shí)間(Idle time)。
圖5A與圖5B顯示本發(fā)明預(yù)先擷取控制方法的流程圖。以下根據(jù)該流程圖詳細(xì)說(shuō)明本發(fā)明預(yù)先擷取控制方法的控制步驟。
步驟S502開始。
步驟S504接收快取控制器發(fā)出M-bytes資料請(qǐng)求。當(dāng)快取控制器沒(méi)有在高速緩存找到所需指令或資料時(shí),該快取控制器會(huì)發(fā)出M-bytes資料請(qǐng)求。
步驟S506確認(rèn)是否在預(yù)先擷取緩沖器找到所需指令或資料?當(dāng)有找到時(shí)則跳至步驟S514,否則執(zhí)行下一步驟S508。
步驟S508確認(rèn)是否符合合并存取的條件?也即所接收的前兩次M-bytes資料請(qǐng)求是否為連續(xù)地址或偵測(cè)到強(qiáng)制預(yù)取信號(hào)被致能?若是,則符合合并存取的條件,跳至步驟S520;若否,則不符合合并存取條件,跳至步驟S510。
步驟S510預(yù)先擷取控制器發(fā)出M-bytes資料請(qǐng)求。也即預(yù)先擷取控制器向總線接口單元發(fā)出M-bytes資料請(qǐng)求。
步驟S512從總線接口單元接收M-bytes資料。
步驟S514將所需的M-bytes資料填入高速緩存(cache memory,快取存儲(chǔ)器)。
步驟S516確認(rèn)是否符合合并存取的條件?也即在預(yù)先擷取緩沖器找到所需指令,且其余預(yù)先擷取緩沖器為空、無(wú)效或無(wú)下一個(gè)連續(xù)位的資料?若是,則符合合并存取的條件,跳至步驟S530;若否,則不符合合并存取的條件,跳回步驟S504。
步驟S520預(yù)先擷取控制器發(fā)出n*M-bytes資料請(qǐng)求,其中n為大于1的整數(shù)。也即預(yù)先擷取控制器向總線接口單元發(fā)出n*M-bytes資料請(qǐng)求。n的值可根據(jù)預(yù)先擷取緩沖器的大小來(lái)決定。
步驟S522從總線接口單元接收n*M-bytes資料。
步驟S524將所接收的前M-bytes資料填入高速緩存。
步驟S526將所接收的后(n-1)*M-bytes資料填入預(yù)先擷取緩沖器,并跳回步驟S504。
步驟S530預(yù)先擷取控制器發(fā)出n*M-bytes資料請(qǐng)求,其中n為大于1的整數(shù)。也即預(yù)先擷取控制器向總線接口單元發(fā)出n*M-bytes資料請(qǐng)求。n的值可根據(jù)預(yù)先擷取緩沖器的大小來(lái)決定。
步驟S532從總線接口單元接收n*M-bytes資料。
步驟S534將所接收的n*M-bytes資料填入預(yù)先擷取緩沖器,并跳回步驟S504。
上述是否符合合并存取的條件還可包含收到特定特性的地址的資料請(qǐng)求。例如若設(shè)定一特定位址區(qū)域?yàn)樽詣?dòng)預(yù)取區(qū),則當(dāng)所請(qǐng)求的地址屬于該特定位址區(qū)域,則判定為符合合并存取的條件。
因此,根據(jù)上述步驟,本發(fā)明預(yù)先擷取控制方法在符合合并存取的條件時(shí),會(huì)向總線接口單元發(fā)出至少兩倍于M-bytes資料的請(qǐng)求,藉以利用連續(xù)讀取至少兩倍M-bytes資料可縮短資料讀取時(shí)間的好處,來(lái)節(jié)省CPU占用系統(tǒng)總線的時(shí)間,并節(jié)省CPU等待時(shí)間。
以上雖以實(shí)施例說(shuō)明本發(fā)明預(yù)先擷取控制方法,但并不因此限定本發(fā)明的范圍,只要不脫離本發(fā)明的要旨,該行業(yè)者可進(jìn)行各種變形或變更。例如,雖然上述說(shuō)明是指指令預(yù)先擷取快取的控制方法,但也可應(yīng)用于資料預(yù)先擷取快取的控制方法。
權(quán)利要求
1.一種預(yù)先擷取控制方法,該控制方法是應(yīng)用于具有快取控制器的系統(tǒng),該系統(tǒng)還包含一預(yù)先擷取控制器與預(yù)先擷取緩沖器,其特征在于該方法包含下列步驟接收資料請(qǐng)求步驟,是接收前述快取控制器發(fā)出的M-bytes資料請(qǐng)求;資料找到確認(rèn)步驟,前述預(yù)先擷取控制器確認(rèn)前述預(yù)先擷取緩沖器是否儲(chǔ)存有所請(qǐng)求的資料,若找到所請(qǐng)求的資料則將資料傳回前述快取控制器,若沒(méi)有找到所請(qǐng)求的資料則跳至下步驟;合并存取確認(rèn)步驟,是根據(jù)合并存取的條件來(lái)判斷是否需要合并存取資料,若不符合合并存取的條件,則向外部單元發(fā)出M-bytes資料請(qǐng)求,若符合合并存取的條件,則向外部單元發(fā)出n*M-bytes資料請(qǐng)求,其中n>=2;若向外部單元發(fā)出M-bytes資料請(qǐng)求,則將所存取的M-bytes資料傳回前述快取控制器;以及若向外部單元發(fā)出n*M-bytes資料請(qǐng)求,則除了將所接收的前M-bytes資料傳回前述快取控制器之外,還將接收的后(n-1)*M-bytes資料儲(chǔ)存在前述預(yù)先擷取緩沖器。
2.如權(quán)利要求1所記載的預(yù)先擷取控制方法,其特征在于,其中前述合并存取的條件為前述接收資料請(qǐng)求步驟中收到兩個(gè)連續(xù)地址的資料請(qǐng)求。
3.如權(quán)利要求1所記載的預(yù)先擷取控制方法,其特征在于,其中前述合并存取的條件為前述接收資料請(qǐng)求步驟中收到特定特性的地址的資料請(qǐng)求,如設(shè)定某一特定地址區(qū)域?yàn)樽詣?dòng)預(yù)取區(qū)。
4.如權(quán)利要求1所記載的預(yù)先擷取控制方法,其特征在于,其中前述合并存取的條件為前述接收資料請(qǐng)求步驟中還偵測(cè)到一強(qiáng)制預(yù)取信號(hào)被致能。
5.如權(quán)利要求1所記載的預(yù)先擷取控制方法,其特征在于,其中前述合并存取的條件為前述資料找到確認(rèn)步驟中有找到所請(qǐng)求的資料。
6.如權(quán)利要求1所記載的預(yù)先擷取控制方法,其特征在于,其中在前述資料找到確認(rèn)步驟中若找到所請(qǐng)求的資料,則除了將資料傳回前述快取控制器,還確認(rèn)是否符合預(yù)先擷取條件,若符合預(yù)先擷取條件則若向外部單元發(fā)出(n-1)*M-bytes資料請(qǐng)求,且將所存取的(n-1)*M-bytes資料儲(chǔ)存在前述預(yù)先擷取緩沖器中。
全文摘要
一種預(yù)先擷取控制方法,是在接收到快取控制器發(fā)出連續(xù)地址或特定地址的M-bytes資料請(qǐng)求且沒(méi)有在預(yù)先擷取緩沖器找到資料時(shí),向外部單元發(fā)出n*M-bytes資料請(qǐng)求,其中n>=2,且M為高速緩存每個(gè)記錄單元(entry)的大?。磺页藢⑺邮盏那癕-bytes資料傳回快取控制器之外,還將后(n-1)*M-bytes資料儲(chǔ)存在預(yù)先擷取緩沖器。因此,該預(yù)先擷取的控制方法可節(jié)省連續(xù)向外部單元讀取資料的時(shí)間,藉以降低中央處理單元CPU占用系統(tǒng)總線的時(shí)間。
文檔編號(hào)G06F9/38GK1811733SQ20051000276
公開日2006年8月2日 申請(qǐng)日期2005年1月26日 優(yōu)先權(quán)日2005年1月26日
發(fā)明者黃明權(quán) 申請(qǐng)人:凌陽(yáng)科技股份有限公司