專利名稱:將指令裝入指令高速緩沖存儲器中的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字計算機系統(tǒng),具體涉及指令高速緩沖存儲器。
高速緩沖存儲器(memory caches)是因性能的原因而設(shè)置在數(shù)據(jù)處理系統(tǒng)中的存儲系統(tǒng),它存儲數(shù)據(jù)處理系統(tǒng)的主存儲器的內(nèi)容的子集,該子集由一個選定的子系統(tǒng)(通常是系統(tǒng)的數(shù)據(jù)處理器)來使用。高速緩沖存儲器與主存儲器相比,能以更快的速率將數(shù)據(jù)提供到數(shù)據(jù)處理器,其原因在于以下幾方面首先,高速緩沖存儲器與主存儲器系統(tǒng)相比,高速緩沖存儲器由級別更高的存儲器電路構(gòu)成,這些電路能以比主存儲器高些的時鐘速率來運行;其次,在數(shù)據(jù)處理器與高速緩沖存儲器之間可以有一條專用總線,從而導(dǎo)致在數(shù)據(jù)處理器與高速緩沖存儲器之間的頻帶寬度比數(shù)據(jù)處理器與主存儲器之間的寬些;最后,高速緩沖存儲器可以在物理上放在與由它提供數(shù)據(jù)的子系統(tǒng)相同的集成電路上。在這種情況下,高速緩沖存儲器由較快的電路構(gòu)成,并且在高速緩沖存儲器與數(shù)據(jù)處理器之間有一條專用總線。
高速緩沖存儲器可以由其所存儲的信息類型來進(jìn)一步加以區(qū)分。統(tǒng)一式(unified)高速緩沖存儲器按照一種單一的結(jié)構(gòu)存儲所有類型的信息,指令式高速緩沖存儲器只存儲數(shù)據(jù)處理器執(zhí)行的或?qū)⒁獔?zhí)行的指令,數(shù)據(jù)式高速緩沖存儲器只存儲數(shù)據(jù)處理器使用的或?qū)⒁褂玫臄?shù)據(jù)。包含有指令高速緩沖存儲器和數(shù)據(jù)高速緩沖存儲器的數(shù)據(jù)處理系統(tǒng)稱為具有“Harvard(哈佛)結(jié)構(gòu)”。
具有哈佛結(jié)構(gòu)的數(shù)據(jù)處理器至少有一個缺點。這些數(shù)據(jù)處理器“缺少”在它們將特定的數(shù)據(jù)塊裝入到它們的數(shù)據(jù)高速緩沖存儲器內(nèi)時將特定的指令裝入到它們的指令高速緩沖存儲器內(nèi)的能力。具有哈佛結(jié)構(gòu)的數(shù)據(jù)處理器將指令裝入其指令高速緩沖存儲器中只是作為“確定它接下來該執(zhí)行什么指令”的一個副產(chǎn)品,該數(shù)據(jù)處理器在它執(zhí)行一條特定指令之前將某條指令裝入到指令高速緩沖存儲器,為此,當(dāng)數(shù)據(jù)處理器從數(shù)據(jù)處理系統(tǒng)的主存儲器子系統(tǒng)取出指令時,在每條指令或每組指令被執(zhí)行之前要引入一個小的遲延。
下面將結(jié)合附圖詳細(xì)描述本發(fā)明,本發(fā)明的特點和優(yōu)點就更清楚了。附圖中相同的標(biāo)號代表相同和相關(guān)的部件。
圖1示出了與本發(fā)明一起使用的數(shù)據(jù)處理器的方框圖;圖2示出本發(fā)明的一序列指令的表格形式;圖3示出圖1所示數(shù)據(jù)處理器執(zhí)行圖2所示的指令序列的一部分的第一時序圖。
圖1示出與本發(fā)明一起使用的數(shù)據(jù)處理器10的方框圖。數(shù)據(jù)處理器10涉及獨立指令和數(shù)據(jù)的高速緩沖存儲器。像其它的“哈佛結(jié)構(gòu)”式數(shù)據(jù)處理器那樣,數(shù)據(jù)處理器10在它確定它應(yīng)執(zhí)行指令時將該指令裝入其數(shù)據(jù)高速緩沖存儲器。通常,數(shù)據(jù)處理器10在完成一條特定指令之后執(zhí)行下一順序的指令。數(shù)據(jù)處理器10通過在主存儲器中將該特定指令的地址上加一位移來確定下一順序的指令。在某些情況下,數(shù)據(jù)處理器10執(zhí)行一個非順序的指令。也就是說,數(shù)據(jù)處理器10在某些情況下執(zhí)行了分支指令之后,在它接受一個中斷之后,在某些指令產(chǎn)生例外之后等等情況下,執(zhí)行一個非順序的指令。根據(jù)本發(fā)明,數(shù)據(jù)處理器10可以被編程,以便在它需要指令之前將指令塊裝入它的指令高速緩沖存儲器中。借此,例如對于時間緊迫的數(shù)字信號處理(“DSP”)的例行程序數(shù)據(jù)處理器10可以保證指令塊存在于指令高速緩沖存儲器中。
繼續(xù)參照圖1,總線接口單元(下文稱為BIU)12控制數(shù)據(jù)處理器10與數(shù)據(jù)處理系統(tǒng)其余部分(圖中未示出)之間的數(shù)據(jù)流。BIU12連接到指令高速緩沖存儲器14和數(shù)據(jù)高速緩沖存儲器16。指令式高速緩沖存儲器14把一個指令流提供到定序器單元18,定序器單元18將各條指令送到適當(dāng)?shù)膱?zhí)行單元。數(shù)據(jù)處理器10具有一個分支單元20、一個定點執(zhí)行單元A22、一個定點執(zhí)行單元B24、一個復(fù)雜定點執(zhí)行單元26、一個裝入/存儲執(zhí)行單元28以及一個浮點執(zhí)行單元30。定點執(zhí)行單元A22、定點執(zhí)行單元B24、復(fù)雜定點執(zhí)行單元26、裝入/存儲執(zhí)行單元28將其結(jié)果讀和寫到一個通用結(jié)構(gòu)的寄存器文件32(標(biāo)為“GPRs”,下文稱為“GPR文件”)和一個第一重新命名緩沖器34內(nèi)。浮點執(zhí)行單元30和裝入/存儲執(zhí)行單元28將其結(jié)果讀和寫到一個浮點結(jié)構(gòu)寄存器文件36(標(biāo)記為“FPRs”,下文稱為“FPR文件”)和一個第二重新命名的緩沖器38內(nèi)。
在尚未公開本發(fā)明的情況下數(shù)據(jù)處理器10的運行對本領(lǐng)域是公知的??偟卣f來,數(shù)據(jù)處理器是一臺簡化指令集的計算機(RISC)。數(shù)據(jù)處理器10通過將每個指令分為一系列較小的步驟,每個步驟可以與其它指令的步驟在時間上重疊,來取得高性能。這功能策略稱為“流水線技術(shù)”。在所述的實施例中,每條指令被分為五個分離的步驟取出、分配、執(zhí)行、回寫和完成。
在取出階段期間,指令高速緩沖存儲器14中的存儲器管理電路(圖中未示出)在定序器單元18和分支單元20所識別的一個存儲器地址(取出地址)時開始檢索一條或多條指令。定序器單元18和分支單元20確定什么序列的編程指令在某些數(shù)據(jù)寄存器的內(nèi)容和指令本身已給定的情況下是適合的。指令高速緩沖存儲器14將這個編程指令序列提供給定序器單元18。如果指令高速緩沖存儲器14不含需要的指令,則它會從數(shù)據(jù)處理器10之外的主存儲器系統(tǒng)(圖中未示出)取出這些指令。
在分配階段期間,定序器單元18將編程指令序列的各條指令分配給各個執(zhí)行單元20、22、24、26、28和30。定序器單元18還在重新命名緩沖器34或38中保留一個入口,用于在其中暫時存儲結(jié)果(如果有的話)。兩個重新命名緩沖器都是先進(jìn)先出(FIFO)隊例。
在執(zhí)行階段期間,每個特定的執(zhí)行單元執(zhí)行其編程指令。每個執(zhí)行單元執(zhí)行一個特定級的指令中的一條或多條指令,每個執(zhí)行單元的特定級指令由該執(zhí)行單元的名稱來指明。例如,定點執(zhí)行單元A和B對以定點符號例如加、減、與、或和異或表示的運算符執(zhí)行簡單的數(shù)學(xué)運算。復(fù)雜定點執(zhí)行單元26對以定點符號例如乘和除表示的運算符執(zhí)行較復(fù)雜的數(shù)學(xué)運算。浮點執(zhí)行單元30對以浮點符號例如乘和除表示的運算符執(zhí)行數(shù)學(xué)運算。
定點執(zhí)行單元A和B以及復(fù)雜定點執(zhí)行單元26將它們的運算結(jié)果返回到第一重新命名緩沖器34的指定入口。當(dāng)在產(chǎn)生結(jié)果的指令之前的所有指令已更新了它們的GPR文件入口時,第一重新命名緩沖器34用其一個入口周期性地更新GPR文件32的一個入口。定序器單元18保持一個再排序緩沖器39來協(xié)調(diào)這一更新。再排序緩沖器39是一個FIFO隊列,它將編程指令氣流的一部分按其初始順序存儲起來。定序器單元18等待直待到再排序緩沖器39中最先的指令執(zhí)行完畢時為止。然后,它用存儲在分配給該指令的重新命名緩沖器入口中的結(jié)果來更新結(jié)構(gòu)寄存器。定序器單元18也使再排序緩沖器39中的該指令入口無效,以為后面的指令留空間。第一重新命名緩沖器34和GPR文件32都能將運算符提供給定點執(zhí)行單元A和B以及復(fù)雜定點單元26。
浮點執(zhí)行單元30將其運算結(jié)果返回到第一更新命名緩沖器38的指定入口。當(dāng)產(chǎn)生結(jié)果的指令之前的所有指令已更新了它們的GPR文件入口時,第二重新命名緩沖器38用它的一個入口來更新FPR文件36的一個入口。定序器單元18也協(xié)調(diào)這一更新。第二重新命名緩沖器38和FPR文件36都給浮點執(zhí)行單元30提供運算符。
裝入/存儲執(zhí)行單元28讀出存儲在GPR文件32中的數(shù)據(jù),或者在完成時刻讀取存儲在FPR文件36中的數(shù)據(jù),并將選定的數(shù)據(jù)寫入數(shù)據(jù)高速緩沖器16中。這一數(shù)據(jù)還可以寫入外部存儲器系統(tǒng)(圖中未示出),這取決于數(shù)據(jù)處理器10的運行特性,與公開的本發(fā)明無關(guān)。相反,裝入/存儲執(zhí)行單元28讀出存儲在數(shù)據(jù)高速緩沖存儲器16中的數(shù)據(jù),并將讀出的數(shù)據(jù)寫入第一更新命名緩沖器34或第二重新命名緩沖器38。如果數(shù)據(jù)高速緩沖存儲器16不含所需數(shù)據(jù),則它經(jīng)由BIU12從數(shù)據(jù)處理器10外部的主存儲器系統(tǒng)取出該數(shù)據(jù)。
在回寫階段期間,每個執(zhí)行單元將其結(jié)果(如果有的話)寫入保留的重新命名緩沖器入口。定序器單元18還確定哪些指令能夠在下一階段更新適當(dāng)?shù)慕Y(jié)構(gòu)寄存器。
在完成階段期間,在某個或某些特定指令之前的每個指令已更新了結(jié)構(gòu)寄存器文件后,定序器單元18用存儲在重新命名緩沖器中的特定指令的結(jié)果來更新結(jié)構(gòu)寄存器文件。
總之,每個指令項占用一個機器時鐘周期。然而,一些指令需要一個以上的時鐘周期來執(zhí)行,而其它的指令不需要經(jīng)過這五個階段。由于各個指令完成其執(zhí)行所占用的時間范圍,也可能在某個特定指令的回寫和完成階段之間有一個遲延。
本發(fā)明所公開的數(shù)據(jù)處理器10的運算在下面將結(jié)合圖2和圖3進(jìn)行描述。
數(shù)據(jù)處理器10還利用靜態(tài)分支預(yù)測方法學(xué),來保證向它的各個執(zhí)行單元20、22、24、26、28和30恒定地提供指令。根據(jù)靜態(tài)分支預(yù)測方法學(xué),如果數(shù)據(jù)處理器10尚未根據(jù)分支指令確定所依據(jù)的狀態(tài)時,則它依賴于分支指令本身的一個或多個比特位來假設(shè)將采用該分支或不采用該分支,接著,數(shù)據(jù)處理器10在根據(jù)該分支指令實際計算狀態(tài)之前不采用的或不采用的地址上取出指令作為適合指令。隨后,數(shù)據(jù)處理器10計算該狀態(tài),如果預(yù)測錯誤,則返回到先前未選擇的取出地址,否則,數(shù)據(jù)處理器沿著預(yù)定路徑繼續(xù)執(zhí)行指令。在編輯程序時,根據(jù)指令執(zhí)行時該分支是占主導(dǎo)的采用還是占主導(dǎo)的不采用這樣一種統(tǒng)計概率,預(yù)測每個分支指令為采用的或不采用的。指令自身的一個或多個比特位向數(shù)據(jù)處理器10指示分支指令是否應(yīng)該采用或不采用。
圖2示出了本發(fā)明的一個指令序列的表格形式。圖2所示的指令執(zhí)行兩種功能。第一,該指令將常數(shù)裝入各種不同的寄存器,所述常數(shù)是將所需的指令塊預(yù)裝入指令高速緩沖存儲器14時所要求的;第二,該指令執(zhí)行一個例行程序(標(biāo)記為“循環(huán)”),在每當(dāng)數(shù)據(jù)處理器10執(zhí)行“循環(huán)”例行程序,該例行程序?qū)⒏咚倬彌_存儲器行預(yù)裝入指令高速緩沖存儲器14。高速緩沖存儲器行是在數(shù)據(jù)處理器10與它的存儲器系統(tǒng)之間的一個標(biāo)準(zhǔn)大小的數(shù)據(jù)轉(zhuǎn)移。所示的指令是Power PCTm指令集的組成部分(Power PC是國際商業(yè)機器公司(IBm)的商標(biāo))。然而,本領(lǐng)域的技術(shù)人員結(jié)合實例描述,可將Power PC指令轉(zhuǎn)換成為另一個數(shù)據(jù)處理器的指令。
繼續(xù)參照圖2,數(shù)據(jù)處理器10最初就作好了執(zhí)行“循環(huán)”例行程序的準(zhǔn)備。指令高速緩沖存儲器14和數(shù)據(jù)高速緩沖存儲器16中的屬性比特被修改,以只允許所需的指令被高速緩沖存儲在數(shù)據(jù)處理器10(圖中未示出)中。主存儲器中的所有其它地址空間被限定為“非高速緩沖存儲的”所需的指令裝入操作次數(shù)N被存儲在一個計數(shù)器寄存器“ctr”中。指令裝入操作次數(shù)N等于預(yù)裝到指令高速緩沖存儲器14中的指令個數(shù)除以標(biāo)準(zhǔn)存儲器存取的大小。數(shù)據(jù)處理器10執(zhí)行N次“循環(huán)”例行程序。在所示的例子中,預(yù)裝入的32位比特指令的個數(shù)為2048,存儲器存取的標(biāo)準(zhǔn)大小為32個字節(jié),則N等于256。預(yù)先裝入的第一指令的地址LOAD-BLOCK存儲在鏈接寄存器“Ir”中,該鏈接寄存器起指示器的作用,它指向要從主存儲器中取出的下一條指令。
接下來,一個常數(shù)鎖定指令高速緩沖存儲器14以防止再裝入,該常數(shù)存儲器在通用寄存器r3中。該常數(shù)HIDO-VALUE最終被移到一個特定用途寄存器HIDO,在“循環(huán)”例行程序被執(zhí)行N次后,在該寄存器中該常數(shù)對所有指令高速緩沖存儲器運行進(jìn)行保護(hù)。通用寄存器r2裝入一個非零值。最后,在通過使用一個指令同步操作而分支到“循環(huán)”例行程序之前,所有指令允許完成。
數(shù)據(jù)處理器10執(zhí)行“循環(huán)”例行程序N次,借此,將N個高速緩沖存儲器行預(yù)先裝入到指令高速緩沖存儲器14。數(shù)據(jù)處理器10通過將以字節(jié)形示的存儲器存取的標(biāo)準(zhǔn)大小與執(zhí)行圖示的例行程序當(dāng)前指令指示的N次的每一次相加,來計算下一指令裝入操作的地址。接著,數(shù)據(jù)處理器10執(zhí)行一條長時間等待指令,其結(jié)果是隨后分支指令的基礎(chǔ)。在這種情況下,如果長時間等待指令的結(jié)果等于零,則分支指令將分支到鏈接寄存器(指示器)的內(nèi)容,否則,分支指令輸出順序取出地址。
長時間等待指令亦即一個整數(shù)除指令,它在分支指令開始之后完成,并且其結(jié)果總是“真”或“非零”。分支指令被編碼,來按照統(tǒng)計來預(yù)測,如果它所依據(jù)的條件未知,則它應(yīng)被采用(“+”)。相反,在分支指令執(zhí)行之前,長時間等待指令的結(jié)果總是未知的。因此,數(shù)據(jù)處理器10總是預(yù)先裝入由鏈接寄存器的內(nèi)容作索引的8條指令。
最后,數(shù)據(jù)處理器10完成長時間等待指令,并且確定它不應(yīng)分支到鏈接寄存器的內(nèi)容。然后數(shù)據(jù)處理10在緊隨分支指令之后的指令處繼續(xù)執(zhí)行指令。在這里,一個“傳送到”(move-to)指令跟在預(yù)測錯誤分支指令之后,該“傳送到”指令把下一個指針的值裝入鏈接寄存器。最后,數(shù)據(jù)處理器10使條件寄存器的內(nèi)容遞減,將該值與零相比較,并且如果它執(zhí)行該例行程序少于N次,則返回到“循環(huán)”例行程序的起始點。程序執(zhí)行N次后,數(shù)據(jù)處理器10放棄“循環(huán)”例行程序。
執(zhí)行“循環(huán)”例行程序N次之后,數(shù)據(jù)處理器10鎖定指令高速緩沖存儲器14,以防止預(yù)先裝入的指令不致因疏忽而重寫。然后,可以修改數(shù)據(jù)高速緩沖存儲器16中的屬性比特位,以允許新的數(shù)據(jù)被高速緩沖存儲到數(shù)據(jù)高速緩沖存儲器16中(圖中未示出)。
圖3示出圖1所示數(shù)據(jù)處理器10執(zhí)行圖2所示的指令序列的一部分時的第一時序圖。圖3示出了“環(huán)路”例行程序相對于周期性時鐘信號CLOCK的兩種迭代。如上所述,長時間等待除指令divw。在隨后的分支指令beqlrt。起點之后結(jié)束。在所述的實施例中,數(shù)據(jù)處理器10可能需要20或更多個周期來執(zhí)行一個整數(shù)除指令。然而,在第5時鐘周期內(nèi),數(shù)據(jù)處理器10推測出分支,并且開始預(yù)先裝入由鏈接寄存器的內(nèi)容所索引的指令。分支指令beqlrt最后將在長時間等待指令完成后的時鐘周期內(nèi)產(chǎn)生一個校正的取出地址。一旦指令高速緩沖存儲器14完成預(yù)裝入高速緩沖存儲器行,數(shù)據(jù)處理器10就執(zhí)行“傳送到”指令和第二分支指令。數(shù)據(jù)處理器10的某些實施例會在它的一旦接收到指令時就執(zhí)行該預(yù)裝入的指令。因此,圖3示出了預(yù)裝入高速緩沖存儲器行操作與這些預(yù)裝入的指令將要執(zhí)行之處的“傳送到”指令之間的縱向斷開。然而,在分支指令be-qlrt按預(yù)計完成之前,這些相同的數(shù)據(jù)處理器將不會把推測取出的指令的結(jié)果傳送到各種結(jié)構(gòu)寄存器中。
雖然本發(fā)明是參照特定實施例描述的,但本領(lǐng)域的技術(shù)人員可以進(jìn)一步地修改和改進(jìn)。例如,已公開的本發(fā)明可以包括在按常規(guī)分類為復(fù)雜指令集計算機(CISC)的數(shù)據(jù)處理器中,也可以結(jié)合到每個時鐘周期能分配二條或多條指令的數(shù)據(jù)處理器中。已公開的本發(fā)明也可以采用動態(tài)分支預(yù)測方法來代替所描述的靜態(tài)分支預(yù)測方法。例如Power PC620TM微處理機可以動態(tài)預(yù)測轉(zhuǎn)移結(jié)構(gòu),并同時有選擇地更新其分支歷史表(Power PC 620是國際商業(yè)機器公司的商標(biāo))。如果分支歷史表未修改,以反應(yīng)不正確的猜測,則這樣的方法將導(dǎo)致固定的預(yù)測。因此,應(yīng)該理解,本發(fā)明包括不脫離權(quán)利要求書所限定的精神與范圍之內(nèi)的所有這類修改。
權(quán)利要求
1.一種用以將指令裝入數(shù)據(jù)處理器的指令高速緩沖存儲器中的方法,其特征在于,該方法包括以下步驟在數(shù)據(jù)處理器中第一次取出第一指令,該第一指令在被執(zhí)行時產(chǎn)生一個結(jié)果;在數(shù)據(jù)處理器中第二次取出一條分支指令,該分支指令在結(jié)果等于一個第一值時產(chǎn)生一個“順序取出地址”,而結(jié)果等于一個第二個值時產(chǎn)生一個第一“分支被采用—取出—地址”,而結(jié)果未知時,該分支指令推測地產(chǎn)生第一“分支—被采用—取出—地址”;響應(yīng)“第一分支—被采用—取出—地址”,第一次將指令裝入數(shù)據(jù)處理器的指令高速緩沖存儲器中;第一次執(zhí)行第一指令,該第一指令產(chǎn)生第一值;第二次執(zhí)行分支指令,該分支指令產(chǎn)生“順序—取出—地址”;產(chǎn)生一個“第二分支—被采用—取出—地址”;第三次取出第一指令;第四次取出分支指令,該分支指令在結(jié)果等于一個第一值時產(chǎn)生“順序—取出—地址”,而結(jié)果等于第二值時產(chǎn)生“第二分支—被采用—取出—地址”,而如果結(jié)果未知時,則該分支指令推測地產(chǎn)生“第二分支—被采用—取出—地址”;響應(yīng)“第二分支—被采用—取出—地址”,第二次將指令裝入指令高速緩沖存儲器中;第三次執(zhí)行第一指令,該第一指令產(chǎn)生第一值;及第四次執(zhí)行分支指令,該分支指令產(chǎn)生“順序—取出—地址”。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括鎖定指令高速緩沖存儲器的步驟。
3.一種用以將指令裝入數(shù)據(jù)處理器的指令高速緩沖存儲器中的方法,該方法重復(fù)執(zhí)行一個例行程序,其特征在于,該例行程序包括以下步驟遞增指示器;執(zhí)行一條長時間等待指令,產(chǎn)生一個結(jié)果;和推測地執(zhí)行一條分支指令,該分支指令響應(yīng)上述結(jié)果,產(chǎn)生一個取出地址,該分支指令響應(yīng)該結(jié)果的第一值,產(chǎn)生一個“順序—取出—地址”,該分支指令響應(yīng)該結(jié)果的第二值和指示器,產(chǎn)生一個“分支—被采用—取出—地址”,而在結(jié)果未知時,該分支指令產(chǎn)生“分支—被采用—取出—地址”。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,進(jìn)一步包括在例行程序執(zhí)行之后鎖定指令高速緩沖存儲器的步驟。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,例行程序進(jìn)一步包括以下步驟將一個計數(shù)器的值與一個預(yù)定值相比較;及響應(yīng)該比較步驟,執(zhí)行該例行程序。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,例行程序進(jìn)一步包括以下步驟將指示器與一個預(yù)定值相比較;及響應(yīng)比較步驟執(zhí)行該例行程序。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于,例行程序進(jìn)一步包括以下步驟將一個計數(shù)器的值與一個預(yù)定值相比較;及響應(yīng)比較步驟,執(zhí)行該例行程序。
8.根據(jù)權(quán)利要求3所述的方法,其特征在于,例行程序進(jìn)一步包括以下步驟將指示器與一個預(yù)定值相比較;及響應(yīng)比較步驟,執(zhí)行該例行程序。
9.一種用以將指令裝入數(shù)據(jù)處理器的指令高速緩沖存儲器中的方法,該方法重復(fù)執(zhí)行一個例行程序,其特征在于,該程序包括以下步驟在數(shù)據(jù)處理器中第一次取出一條第一指令,該第一指令由順序取出地址索引,該第一指令在執(zhí)行時產(chǎn)生一個包括一個第一值的結(jié)果;在數(shù)據(jù)處理器中第二次取出一條第一分支指令,如果結(jié)果等于第一值,則該第一分支指令產(chǎn)生“順序—取出—地址”,如果結(jié)果等于一個第二值,該第一分支指令產(chǎn)生一個“分支—被采用—取出—地址”,如果結(jié)果未知,則該第一分支指令推測地產(chǎn)生“分支—被采用—取出—地址”;響應(yīng)該“分支—被采用—取出—地址”,第一次將指令裝入一個指令高速緩沖存儲器中;產(chǎn)生“分支—被采用—取出—地址”。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,進(jìn)一步包括在例行程序執(zhí)行之后鎖定指令高速緩沖存儲器的步驟。
全文摘要
將特定指令塊裝入哈佛結(jié)構(gòu)數(shù)據(jù)處理器(10)的指令高速緩沖存儲器(14)的方法包括在一個循環(huán)中重復(fù)地錯誤預(yù)測分支指令。該分支指令受執(zhí)行謀求輸出一個順序取出地址的指令的限制。該指令的結(jié)果直到分支指令開始執(zhí)行時才能得到。數(shù)據(jù)處理器推測地執(zhí)行或預(yù)測分支指令。這時分支指令預(yù)測它將分支到特定指令塊。數(shù)據(jù)處理器將指令裝入其指令高速緩沖存儲器,確定它錯誤地預(yù)測分支指令并返回循環(huán)起點,以便另一迭代。
文檔編號G06F9/38GK1151047SQ9511977
公開日1997年6月4日 申請日期1995年11月23日 優(yōu)先權(quán)日1994年11月25日
發(fā)明者布拉德利·伯吉斯 申請人:摩托羅拉公司