TWI483186B - 微處理器及其使用指令迴圈快取記憶體的方法 - Google Patents

微處理器及其使用指令迴圈快取記憶體的方法 Download PDF

Info

Publication number
TWI483186B
TWI483186B TW102147204A TW102147204A TWI483186B TW I483186 B TWI483186 B TW I483186B TW 102147204 A TW102147204 A TW 102147204A TW 102147204 A TW102147204 A TW 102147204A TW I483186 B TWI483186 B TW I483186B
Authority
TW
Taiwan
Prior art keywords
instruction
tag
cache
loop
processor core
Prior art date
Application number
TW102147204A
Other languages
English (en)
Other versions
TW201512986A (zh
Inventor
Zhong Ho Chen
Wei Hao Chiao
Original Assignee
Andes Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Andes Technology Corp filed Critical Andes Technology Corp
Publication of TW201512986A publication Critical patent/TW201512986A/zh
Application granted granted Critical
Publication of TWI483186B publication Critical patent/TWI483186B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

微處理器及其使用指令迴圈快取記憶體的方法
本發明是有關於一種指令快取(instruction caching),且特別是有關於對微處理器所執行的指令迴圈所進行的快取。
指令快取記憶體(instruction cache)是微處理器中不可或缺的元件。當微處理器需要提取指令時,其處理器核心會傳送指令的提取位址(fetch address)至指令快取記憶體。提取位址對應於指令流(instruction stream),且指令流包括一或多個指令。當指令已存於指令快取記憶體內時,指令快取記憶體可直接對處理器核心提供指令。否則,指令快取記憶體會從指令所在的記憶體中提取指令、儲存指令以及將指令提供給處理器核心。由於從外部記憶體提取指令比從指令快取記憶體提取指令花費更多的時間並耗費更多功率,指令快取記憶體可減低功率消耗並促進微處理器的處理速度。
嵌入式系統(embedded system)的應用程式通常在最深層迴圈(innermost loop)花費很多執行時間。因此,本發明提供一種包括指令迴圈快取記憶體的微處理器以及使用指令迴圈快取記憶體的方法,藉以降低功率損耗並改善指令提取的效率。
依據本發明一實施例,本發明提供一種微處理器。微處理器包括處理器核心以及指令迴圈快取記憶體。處理器核心提供指令流的提取位址。指令流包括一或多個指令。提取位址包括標籤(tag)以及索引(index)。指令迴圈快取記憶體自處理器核心接收提取位址。指令迴圈快取記憶體包括快取陣列以及標籤儲存器。快取陣列耦接至處理器核心。快取陣列儲存第一預定數量個快取條目。各快取條目包括標籤識別碼(tag identification;tag ID)。快取陣列輸出提取位址中索引所對應的快取條目的標籤識別碼。標籤儲存器耦接至處理器核心以及快取陣列。標籤儲存器經配置用以儲存第二預定數量個標籤值,並輸出快取陣列輸出的標籤識別碼所對應的標籤值。指令迴圈快取記憶體基於提取位址的標籤與標籤儲存器輸出的標籤值之間的按位元比較,而決定快取命中(cache hit)或快取未中(cache miss)是否發生。
依據本發明另一實施例,本發明提供一種使用前述指令迴圈快取記憶體的方法。此方法包括下列步驟。初始時進入正常狀態,其中指令迴圈快取記憶體與包括正常狀態及內部狀態的有限狀態機(finite state machine)相關。當目前狀態為正常狀態且處理器核心發送至指令迴圈快取記憶體的標籤值與之前儲存於指 令迴圈快取記憶體中的每一標籤值不同時,以該標籤值更新指令迴圈快取記憶體。當目前狀態為內部狀態,且處理器核心發送至指令迴圈快取記憶體的標籤值與之前儲存於指令迴圈快取記憶體中的每一標籤值不同時,進入正常狀態。當目前狀態為正常狀態時,對應於接收內部訊號而進入內部狀態。基於由處理器核心發送至該指令迴圈快取記憶體的提取位址的標籤以及儲存於指令迴圈快取記憶體中的標籤值其中之一之間的比較,判斷指令迴圈快取記憶體內是否發生快取命中或快取未中。
依據本發明另一實施例,本發明提供一種使用前述指令迴圈快取記憶體的方法。此方法包括下列步驟。每當提示指令被提取並辨識時,發送與提示指令相關的標籤值至指令迴圈快取記憶體。提示指令透過標籤值而與提示指令被執行之後將被執行的指令迴圈相關。基於指令的提取位址的標籤與儲存於指令迴圈快取記憶體中的標籤值其中之一之間的比較,指令迴圈快取記憶體判斷快取命中或快取未中是否發生。
為讓本案的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
100‧‧‧微處理器
120‧‧‧處理器核心
125‧‧‧迴圈標籤訊號
140‧‧‧指令迴圈快取記憶體
160‧‧‧記憶體
320、1120‧‧‧快取陣列
322、1122‧‧‧標籤識別碼(ID)
324‧‧‧有效位元
326、1126‧‧‧指令/指令類別
340、1140‧‧‧標籤儲存器
360、1160‧‧‧比較器
365‧‧‧命中訊號
380、1180‧‧‧控制器
I0~I7、Hint A、Hint B、Call F、F、RET、A、B、JA、JB‧‧‧指令
505~545、805、812~818、832‧‧‧方法步驟
圖1是依照本發明一實施例所繪示的一種微處理器的示意圖。
圖2是依照本發明一實施例所繪示的記憶體內的一種快取線(cache line)的示意圖。
圖3是依照本發明一實施例所繪示的微處理器的一種指令迴圈快取記憶體的示意圖。
圖4是依照本發明一實施例所繪示的一種指令迴圈的示意圖。
圖5是依照本發明一實施例所繪示的一種使用指令迴圈快取記憶體的方法的流程圖。
圖6是依照本發明一實施例所繪示的一種指令迴圈的示意圖。
圖7是依照本發明一實施例所繪示的另一種指令迴圈的示意圖。
圖8是依照本發明一實施例所繪示的一種使用指令迴圈快取記憶體的方法的流程圖。
圖9是依照本發明一實施例所繪示的相關於指令迴圈快取記憶體的一種有限狀態機的示意圖。
圖10是依照本發明一實施例所繪示的一種指令迴圈的示意圖。
圖11是依照本發明一實施例所繪示的微處理器的一種指令迴圈快取記憶體的示意圖。
圖12是依照本發明一實施例所繪示的一種指令迴圈的示意圖。
圖1是依照本發明一實施例所繪示的一種微處理器100的示意圖。微處理器100包括處理器核心120以及指令迴圈快取記憶體140。指令迴圈快取記憶體140耦接於處理器核心120以及外部記憶體160。處理器核心120可提供指令流中的一或多個提取位址至指令迴圈快取記憶體140。指令流可包括一或多個指令。各提取位址包括一個標籤以及索引。在此,指令的提取位址是代表指令儲存於記憶體160中的位址。提取位址並非指令其運算元(operand)中所包括的位址。
指令迴圈快取記憶體140接收處理器核心120所提供的提取位址,並對應於此提取位址以確認快取命中或快取未中是否發生。當快取命中發生時,指令迴圈快取記憶體140可對應於提取位址,而直接從指令迴圈快取記憶體140本身提供指令至處理器核心120。當快取未中發生時,指令迴圈快取記憶體140則對應於提取位址,而從記憶體160中的提取並儲存指令,且將上述指令提供給處理器核心120。
處理器核心120可透過迴圈標籤(loop-tag)訊號125而提供一或多個標籤值(tag value)至指令迴圈快取記憶體140,藉以對應反向分支(backward branch)指令或提示指令(hint instruction)。迴圈標籤訊號125中所傳送的標籤值可以和處理器核心120傳送至指令迴圈快取記憶體140的提取位址的標籤相 異。迴圈標籤訊號125中所傳送的標籤值也可以和處理器核心120傳送至指令迴圈快取記憶體140的提取位址相關。在此情況下,迴圈標籤訊號可以用控制訊號來實現,藉以表示提取位址與標籤值有關。以下將詳細說明。
圖2是依照本發明一實施例所繪示的記憶體160內的快取線的示意圖。記憶體160的位址可分為標籤以及索引。在本實施例中,一個位址有32位元,而標籤有30位元且索引有2位元。在另一實施例中,位址、標籤以及索引可以是不同的位元數。在相同快取線中的位址具有相同的標籤。舉例而言,指令I0至I3位於位址0至3,且屬於相同的快取線並具有相同標籤0。指令I4至I7位於位址4至7,且屬於相同的快取線並具有相同標籤1。
圖3是依照本發明一實施例所繪示的微處理器100的指令迴圈快取記憶體140的示意圖。指令迴圈快取記憶體140包括快取陣列(cache array)320、標籤儲存器(tag storage)340、比較器360以及控制器380。快取陣列320耦接至處理器核心120與記憶體160。標籤儲存器340耦接至處理器核心120與快取陣列320。比較器360耦接至快取陣列320與標籤儲存器340。控制器380耦接至處理器核心120、記憶體160、快取陣列320、標籤儲存器340以及比較器360。為求簡化,標籤儲存器340與控制器380的耦接關係未繪示於圖3中。
快取陣列320可以儲存2N 個快取條目(cache entry),其中N為處理器核心120所提供的提取位址其索引的位元數。因此, 在本實施例中,快取陣列320的大小即是一個快取線。當快取線為小時,指令迴圈快取記憶體140也將相對為小。
圖3以列(row)的形式描繪出快取陣列320中的每一個快取條目。各個快取條目包括3個類別,亦即,標籤識別碼(tag identification;tag ID,以下簡稱為標籤ID)322、有效位元(valid bit)324以及指令326。標籤識別碼322用以從儲存於標籤儲存器340的標籤值中選擇其中之一。有效位元324表示包括有效位元324的快取條目為有效或無效。當快取條目的有效位元324被設定時,此快取條目為有效。指令326為之前從記憶體160中提取,並在此時被儲存於快取條目中的指令。快取陣列320輸出快取條目的標籤ID 322,且此快取條目的為處理器核心120所提供的提取位址的索引所對應。換言之,快取條目可以由0編號至2N -1,且快取陣列320可輸出編號與提取位址的索引相符的快取條目的標籤ID 322。
標籤儲存器340儲存2M 個標籤值,其中M為各快取條目的標籤ID 322的位元數。標籤儲存器340中的標籤值由0編號至2M -1。在本實施例中,M為1。處理器核心120藉由迴圈標籤訊號125而提供標籤值,而不是透過前述的提取位址。標籤儲存器340輸出快取陣列320所輸出的標籤ID 322對應的標籤值。換句話說,標籤儲存器340輸出標籤值,且此標籤值其數值與快取陣列320輸出的標籤ID相符。
比較器360對處理器核心120提供的提取位址的標籤以 及標籤儲存器340輸出的標籤值進行按位元比較(bitwise comparison)。快取陣列320將提取位址的索引所對應的快取條目的有效位元324輸出至比較器360。當提取位址的標籤與標籤儲存器340所輸出的標籤值相同,且快取陣列320輸出的有效位元324被設定時,比較器360設立(assert)命中訊號365以表示快取命中。否則,比較器360重置(de-assert)命中訊號365,藉以表示快取未中。
控制器380依據命中訊號365,而將對應於提取位址的指令提供至處理器核心120。儘管在圖3中是以多工器來描述控制器380,但控制器380實際上並不僅限於多工器。以下更詳加說明。
圖4是依照本發明一實施例所繪示的記憶體160中的一種指令迴圈的示意圖。在記憶體160中有5個指令I0-I4。指令I0-I3的位址具有相同的標籤A。指令I4的位址的標籤為A+1。指令I4為反向分支指令,且其分支目標為指令I2。因此,指令迴圈包括3個指令I2-I4。
每當處理器核心120執行反向分支指令而且此反向分支指令被取用(taken)時,處理器核心120會將與反向分支指令相關的至少一個標籤值發送至指令迴圈快取記憶體140。上述與反向分支指令相關的至少一個標籤值可以是一或多個連續的標籤值,並是由反向分支指令的目標位址的標籤開始。在本實施例中,處理器核心120發送2個連續的標籤值,且指令I4的目標位址為I2的提取位址。因此,處理器核心120藉由迴圈標籤訊號125,而將A 和A+1的標籤值發送至指令迴圈快取記憶體140。
圖5是依照本發明一實施例所繪示的一種使用指令迴圈快取記憶體的方法的流程圖。圖5的方法可由指令迴圈快取記憶體140的控制器380來執行。當微處理器100重置時,在步驟505中,控制器380透過清除每一個快取條目的有效位元324,而使所有的快取條目無效。在步驟510中,控制器380接收由處理器核心120所發送的一或多個標籤值,並確認處理器核心120所發送的標籤值是否與儲存於標籤儲存器340中的標籤值不同。當控制器380從處理器核心120所接收的任何一個標籤值與之前儲存於標籤儲存器340中的標籤值不同時,此流程會進入步驟515。否則,此流程將進入步驟520。
在步驟515中,控制器380以從處理器核心120接收到的至少一個標籤來更新標籤儲存器340。當標籤儲存器340有空位可容納從處理器核心120接收到的至少一個標籤值時,控制器380可簡單地藉由將從處理器核心120接收到的至少一個標籤值加入至標籤儲存器340以更新標籤儲存器340。否則,控制器380以從處理器核心120接收到的至少一個標籤值來取代之前儲存於標籤儲存器340的標籤值,並藉由清除每一個快取條目的有效位元324而使所有的快取條目無效,藉以更新標籤儲存器340。之後,流程回到步驟510。
在步驟520中,控制器380確認是否從處理器核心120接收到指令的提取位址。當未收到提取位址時,流程回到步驟 510。而當收到所述的提取位址時,流程進入步驟525。在步驟525中,控制器380確認比較器360是否設立命中訊號365。當命中訊號365未設立時,流程進入步驟535。當命中訊號365被設立時,則在步驟530中,控制器380將提取位址的索引所對應的快取條目的指令326提供至處理器核心120。之後,流程回到步驟510。
在步驟535中,控制器380從記憶體160中提取位於提取位址的指令,並將指令提供至處理器核心120。在步驟540中,控制器380確認提取位址的標籤是否與儲存於標籤儲存器340中的任何一個標籤值相同,且提取位址的索引所對應的快取條目為無效。當步驟540中的確認結果為否時,流程回到步驟510。而當步驟540中的確認結果為是時,則在步驟545中,控制器380將位於提取位址的記憶體160中的指令填入至提取位址的索引所對應的快取條目。此外,控制器380設定標籤ID 322與所述快取條目的有效位元324。之後,流程回到步驟510。
下表一示出微處理器100如何以圖4中的迴圈指令進行快取。以下討論請參照圖3、圖4以及圖5。
表一中的「週期」欄位代表微處理器100的時脈週期。在週期4中,處理器核心120執行反向分支指令I4而且I4被取用。因此,處理器核心120將標籤值A以及A+1發送至指令迴圈快取 記憶體140,且控制器380將標籤值A以及A+1儲存於標籤儲存器340中。處理器核心120在週期7、10、13中重複發送標籤值A以及A+1,而由於相同的標籤值已儲存於標籤儲存器340中,故控制器380可將其忽略。
在週期5至7中,亦即指令迴圈的第2次迭代,仍為快取未中的情況。然而,因為提取位址的標籤與標籤儲存器340中的標籤值相符,控制器380開始以從記憶體160中提取的指令填入快取陣列320。從週期8開始,亦即指令迴圈的第3次迭代,因指令I2至I4已儲存於快取陣列320,故快取命中發生。指令迴圈的第3次以及之後迭代的指令是由指令迴圈快取記憶體140提供,而不是由記憶體160提供。
如表一所示,指令迴圈快取記憶體140的快取功能從指令迴圈的第3次迭代開始。在此狀況中,若指令迴圈僅執行2次迭代,則指令迴圈快取記憶體140將會無用。在本發明的一些其他實施例中,提示指令可提供以實現低迭代次數的指令迴圈的較佳實施例。
圖6是依照本發明一實施例所繪示的一種指令迴圈的示意圖。提示指令「Hint A」被設置於包括2個指令(I0及I1)的指令迴圈之前,其中I1為反向分支指令。在本實施例中,提示指令為條件式分支指令(conditional branch instruction),並具有目標位址與分支條件。提示指令的分支條件總是不成立。舉例來說,提示指令可能是「若暫存器0的值大於暫存器0的值,分支至某 一目標位址」的形式。這是基於相容性的考量,不支援本發明的迴圈指令快取記憶體的微處理器仍然可執行此提示指令,而不會產生任何結果,從而讓微處理器仍能正常運作。
提示指令可由編譯器(compiler)自動加入包括指令迴圈的指令流,或是透過程式設計師(programmer)手動加入。處理器核心120應在其執行提示指令所對應的指令迴圈之前,先執行提示指令。提示指令的目標位址指向對應的指令迴圈。只要相對應的指令迴圈在其目標位址可指向的範圍內,提示指令可被彈性地設置。因此,提示指令可被設置於離指令迴圈較遠處,藉以消除管線延遲(pipeline latency)。
每當處理器核心120提取並辨識提示指令時,處理器核心120將與提示指令相關的標籤值發送至指令迴圈快取記憶體140。在本實施例中,與提示指令相關的標籤值為提示指令其目標位址的標籤。下表二示出微處理器100如何以圖6中的指令迴圈進行快取。
在週期0中,處理器核心120提取並辨識提示指令。因此,處理器核心120將標籤值A發送至指令迴圈快取記憶體140,且控制器380將標籤值A儲存至標籤儲存器340中。在週期1和2中,亦即指令迴圈的第1次迭代,為快取未中的情況。然而,因為提取位址的標籤與標籤儲存器340中的標籤值A相符,控制器380開始將從記憶體160中提取的指令填入快取陣列320。在週期2中,處理器核心120執行反向分支指令I1而且I1被取用。因此,處理器核心120將標籤值A以及A+1發送至指令迴圈快取記憶體140。從第3週期開始,亦即指令迴圈的第2次迭代,因指令I0、I1已儲存於快取陣列320,故快取命中發生。如表二所示,指令迴圈快取記憶體140的快取功能從指令迴圈的第2次迭代開始,且可較表一所示的範例提早一次迭代開始。
在本發明的一些其他實施例中,提示指令並不需要包括目標位址。在這些實施例中,提示指令可以是無操作指令(no-operation instruction)。這是基於相容性的考量,藉以在微處理器無法支援或辨識前述提示指令的情況下,微處理器可不使用迴圈指令快取記憶體來執行此提示指令,且不進行任何動作或產生結果,從而讓微處理器仍能正常運作。不具有目標位址的提示指令應被緊接地設置於其相對應的指令迴圈之前。每當處理器核心120提取並辨識不具有目標位址的提示指令時,處理器核心120仍將與不具有目標位址的提示指令相關的標籤值發送至指令迴圈快取記憶體140。然而,與此提示指令相關的標籤值為對應的指令迴圈的第一個指令的提取位址的標籤,亦即所述提示指令的提取位址的下一個提取位址的標籤。
圖7是依照本發明一實施例所繪示的另一種指令迴圈的示意圖。本實施例提供可實現具有函數呼叫(function call)的指令迴圈的較佳實施例。圖7所示的指令流包括提示指令、指令迴圈以及函數。迴圈的指令的位址具有相同的標籤A,而函數的指令的位址具有相同的標籤B。此迴圈具有兩個指令,第一個指令為呼叫函數,第二個指令則為反向分支指令。
本實施例藉由與指令迴圈相關的提示指令「Hint B」,以使處理器核心120可提前將標籤值發送至指令迴圈快取記憶體140。本實施例中的提示指令為條件式分支指令,並具有分支條件以及目標位址。提示指令的分支條件總是不成立。提示指令的目 標位址指向對應的指令迴圈中被呼叫的函數。處理器核心120應於執行指令迴圈之前先執行提示指令。每當處理器核心120提取並辨識提示指令時,處理器核心120將與提示指令相關的標籤值發送至指令迴圈快取記憶體140。在本實施例中,與提示指令相關的標籤值為在對應的指令迴圈中被呼叫的函數的第一個指令的提取位址的標籤。
當處理器核心120提取並辨識此提示指令時,處理器核心120將標籤值B發送至指令迴圈快取記憶體140。控制器380將標籤值B儲存於標籤儲存器340中。當處理器核心120於第1次迭代中執行指令迴圈時,控制器380從記憶體160中提取迴圈的指令,並將這些指令提供至處理器核心120。由於標籤值A尚未存於標籤儲存器340中,故在第1次迭代中,控制器380不會將迴圈的指令儲存至快取陣列320中。然而,由於標籤值B已存於標籤儲存器340中,故控制器380會將在第1次迭代中被呼叫的函數的指令儲存至快取陣列320中。當處理器核心120在第1次迭代中執行反向分支指令時,處理器核心120將標籤值A發送至指令迴圈快取記憶體140,且控制器380將標籤值A儲存於標籤儲存器340中。因此,控制器380在第2次迭代中將迴圈的指令儲存至快取陣列320中。從此時開始,控制器380直接從快取陣列320將函數與迴圈的指令提供至處理器核心120。
本實施例中的標籤儲存器340儲存兩個標籤值,亦即指令迴圈的標籤值A與函數的標籤值B。因此,快取陣列320可儲 存迴圈的指令與函數的指令。
圖8是依照本發明一實施例所繪示的一種使用指令迴圈快取記憶體140的方法的流程圖。本實施例提供可實現嵌套迴圈(nested loop)的較佳實施例,亦即迴圈在另一個迴圈內的情況。圖8中所示出的方法可由控制器380來執行。本實施例的控制器380與有限狀態機相關,並包括正常狀態(normal state)與內部狀態(inner state)。內部狀態對應於嵌套迴圈。圖8中流程圖的部分步驟與圖5中的流程圖相同。上述的相同步驟在圖5與圖8中有相同的標號,而其討論在此將被省略。以下針對與圖5流程圖不同之處進行描述。
在步驟805中,控制器380進入正常狀態,並透過清除所有快取條目的有效位元324而使每一個快取條目變為無效。在步驟812中,控制器380確認目前狀態是正常狀態或是內部狀態。當控制器380處於內部狀態時,控制器380在步驟818中進入正常狀態,並回到流程的步驟510。當控制器380處於正常狀態時,控制器380在步驟815中進入內部狀態。此外,在步驟815中,控制器380用與步驟515相同的方式更新標籤儲存器340,並於之後回到流程的步驟510。在步驟530之後,控制器380於步驟832中進入內部狀態,並回到流程的步驟510。
圖9是依照本發明一實施例所繪示的相關於控制器380的一種有限狀態機的示意圖。如圖8與圖9所示,最初,在步驟805中,控制器380進入正常狀態。當控制器380接收到內部訊號 (inner signal)時,控制器380從正常狀態進入內部狀態。內部訊號用來表示內部迴圈(inner loop)被執行。在本實施例中,當控制器380從處理器核心120接收到的至少一個標籤值與之前儲存於標籤儲存器340中的每一個標籤值都不同時,在步驟815中,控制器380會設立內部訊號。當比較器360設立命中訊號365時,控制器380也會設立內部訊號。換句話說,當控制器380接收到的標籤值與儲存於標籤儲存器340中的任何一個標籤值相同時,控制器380可設立內部訊號。儘管以上僅列出兩個範例,然應用本實施例者只要可產生如上述的內部訊號,皆可屬於本發明的範疇。
當控制器380從處理器核心120接收到的至少一個標籤值與之前儲存於標籤儲存器340中的每一個標籤值都不同時,在步驟818中,控制器380從內部狀態進入到正常狀態。步驟812和步驟818避免儲存內部指令迴圈的指令的快取條目無效。由於步驟812和步驟818,控制器380為內部狀態時不更新儲存於標籤儲存器340內的標籤值。控制器380只在為正常狀態時更新儲存於標籤儲存器340內的標籤值。
圖10是依照本發明一實施例所繪示的一種指令迴圈的示意圖。圖10中的指令迴圈包括一個嵌套內部迴圈(nested inner loop)並橫跨四個快取線,且這些快取線的標籤分別為A、A+1、A+2以及A+3。指令JB是內部指令迴圈的反向分支指令,而指令JA是外部指令迴圈的反向分支指令。下表三示出微處理器100如 何以圖10中的迴圈指令進行快取。
在週期C22 中,處理器核心120執行反向分支指令JB而且JB被取用。因此,處理器核心120將標籤值A+2與A+3發送至指令迴圈快取記憶體140,且控制器380將標籤值A+2與A+3儲存至標籤儲存器340中。此外,控制器380從正常狀態進入內部狀態。在週期C23 與C24 中,亦即內部指令迴圈的第2次迭代,因為提取位址的標籤與標籤儲存器340中的標籤值相符,控制器380以從記憶體160中提取的指令填入快取陣列320。
在週期C31 中,處理器核心120提取反向分支指令JA,且為快取未中的情況。因為快取條目已填入指令B,故快取條目控制器380不以從記憶體160中提取的指令JA填入快取陣列320。當處理器核心120執行反向分支指令JA而且JA被取用,處理器核心120將標籤值A和A+1發送至指令迴圈快取記憶體140。由於控制器380處於內部狀態,控制器380會忽略所述標籤值並進入正常狀態。因為提取位址的標籤A與標籤儲存器340中的標籤值不同,故週期C32 為快取未中的情況。
在週期C41 至C44 中,內部指令迴圈在第3、4次迭代時被執行。因為提取位址的標籤已儲存於標籤儲存器340中,故此為快取命中的情況。在週期C42 中,因為快取命中,控制器從正常狀態進入內部狀態。
在週期C51 中,因為指令JA並未儲存於快取陣列320中, 故為快取未中的情況。當處理器核心120執行反向分支指令JA而且JA被取用,處理器核心120將標籤值A和A+1發送至指令迴圈快取記憶體140。由於控制器380處於內部狀態,故控制器380會忽略所述的標籤值,並進入正常狀態。因為提取位址的標籤A與儲存於標籤儲存器340的標籤值不同,故在週期C52 時為快取未中的情形。
在本實施例中,最深處迴圈的指令皆被儲存於指令迴圈快取記憶體140中,且因為最深處迴圈最常被執行,故此為最有效率的方式。
圖11是依照本發明另一實施例所繪示的微處理器100的指令迴圈快取記憶體140的示意圖。本實施例提供可實現橫跨多個快取線邊界的迴圈的較佳實施例。本實施例中的指令迴圈快取記憶體140包括快取陣列1120、標籤儲存器1140、比較器1160以及控制器1180。
標籤儲存器1140具有較大的容量,並用以儲存較長的指令迴圈的較多個標籤值。因此,當反向分支指令被執行而且被取用時,處理器核心120可將較多的標籤值發送至指令迴圈快取記憶體140。進一步地,每一個快取條目中的有效位元被合併為相同快取條目的標籤ID。如圖11所示,快取陣列1120中的每一個快取條目包括2個類別,即標籤ID 1122以及指令1126。指令類別1126與圖3中的指令類別326相同。每一個快取條目的標籤ID 1122具有M個位元,而標籤儲存器1140則具有可儲存的2M -1的 標籤值的容量。在本實施例中,M等於2。標籤儲存器1140中的標籤值可從1編號至2M -1。快取條目的標籤ID 1122用來選擇與其相同編號的標籤值。快取陣列1120將快取條目的標籤ID 1122輸出至標籤儲存器1140,其中快取條目是由處理器核心120提供的提取位址的索引所對應。標籤儲存器1140輸出快取陣列1120輸出的標籤ID 1122所對應的標籤值。
當快取陣列1120輸出的標籤ID 1122與預定值(在本實施例為0)相同時,標籤儲存器1140輸出預定的無效標籤值。此無效標籤值是與任何提取位址的標籤皆不同的一個唯一值,使得當標籤儲存器1140輸出無效標籤值時,無快取命中發生。當快取條目的標籤ID 1122的值為對應於無效標籤值的預定值時,代表快取條目無效。因此,當控制器1180需要使一個快取條目無效時,控制器1180可將此快取條目的標籤ID 1122清除為無效標籤值所對應的預定值。
比較器1160對標籤儲存1140輸出的標籤值以及處理器核心120提供的提取位址的標籤進行按位元比較。當提取位址的標籤與標籤儲存器1140所輸出的標籤值相同時,比較器1160設立命中訊號365以表示快取命中。否則,比較器1160重置命中訊號365,藉以表示快取未中。
圖11中關於迴圈快取記憶體140的其他細節與圖3中的迴圈快取記憶體140相同。
圖12是依照本發明一實施例所繪示的一種指令迴圈的示 意圖。圖12中的指令迴圈包括分支目標為指令I2的正向分支(forward branch)指令,以及分支目標為指令I0的反向分支指令。本實施例與圖4中的實施例類似,但有一些不同之處。第一點差異在於標籤儲存器1140可儲存至3個標籤值而非2個標籤值。第二點差異則在於,當處理器核心120執行反向分支指令而且反向分支指令被取用時,處理器核心120將3個連續的標籤值發送至指令迴圈快取記憶體140,而不是2個連續的標籤值。因此,當處理器核心120執行圖12中的反向分支指令而且該反向分支指令被取用時,處理器核心將3個連續的標籤值A、A+1以及A+2發送至迴圈快取記憶體140。藉此,在第2次迭代時,指令迴圈快取記憶體140儲存指令I0、I2、正向分支指令以及反向分支指令。接著,在第3次迭代時,迴圈快取記憶體140可從快取陣列1120而直接提供指令。
綜上所述,本發明實施例的指令迴圈快取記憶體可有效地對指令迴圈的指令進行快取。本發明實施例的指令迴圈快取記憶體可製造成極小尺寸以節省能源和晶片面積。本發明實施例的指令迴圈快取記憶體可應用於具有函數呼叫的指令迴圈、橫跨多個快取線邊界的指令迴圈以及嵌套指令迴圈。此外,本發明實施例的指令迴圈快取記憶體可從指令迴圈的第2次迭代就開始提供指令,所以能快速回應迴圈的執行。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的 精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
100‧‧‧微處理器
120‧‧‧處理器核心
140‧‧‧指令迴圈快取記憶體
160‧‧‧記憶體
125‧‧‧迴圈標籤訊號

Claims (20)

  1. 一種微處理器,包括:一處理器核心,提供一指令流的一提取位址,其中該指令流包括一或多個指令,且其中該提取位址包括一標籤及一索引;以及一指令迴圈快取記憶體,自該處理器核心接收該提取位址,包括:一快取陣列,耦接至該處理器核心,儲存一第一預定數量個快取條目,其中每一上述快取條目包括一標籤識別碼,且其中該快取陣列輸出該提取位址中該索引所對應的該快取條目的該標籤識別碼;以及一標籤儲存器,耦接至該處理器核心以及該快取陣列,經配置用以儲存一第二預定數量個標籤值並輸出該快取陣列輸出的該標籤識別碼所對應的該標籤值,其中該指令迴圈快取記憶體基於該提取位址的該標籤與該標籤儲存器輸出的該標籤值之間的一按位元比較,而決定一快取命中或一快取未中是否發生。
  2. 如申請專利範圍第1項所述的微處理器,其中每當一反向分支指令被取用時,該處理器核心發送與該反向分支指令相關的至少一標籤值至該指令迴圈快取記憶體。
  3. 如申請專利範圍第2項所述的微處理器,其中與該反向分支指令相關的該至少一標籤值為從該反向分支指令的一目標位址的一標籤開始的一或多個連續標籤值。
  4. 如申請專利範圍第1項所述的微處理器,其中每當該處理器核心提取並辨識一提示指令時,該處理器核心發送與該提示指令相關的一標籤值至該指令迴圈快取記憶體。
  5. 如申請專利範圍第4項所述的微處理器,其中該提示指令為一條件式分支指令,該條件式分支指令的分支條件總是不成立,且與該提示指令相關的該標籤值為該條件式分支指令的一目標位址的一標籤。
  6. 如申請專利範圍第5項所述的微處理器,其中該目標位址指向該處理器核心在執行該提示指令之後所執行的一指令迴圈。
  7. 如申請專利範圍第5項所述的微處理器,其中該目標位址指向在一指令迴圈中被呼叫的一函數,而且該處理器核心在執行該提示指令之後執行該指令迴圈。
  8. 如申請專利範圍第4項所述的微處理器,其中該提示指令為一無操作指令,該提示指令被緊接地設置於該處理器核心將執行的一指令迴圈之前,且與該提示指令相關的該標籤值為該指令迴圈的第一個指令的一提取位址的一標籤。
  9. 如申請專利範圍第1項所述的微處理器,其中每一上述快取條目更包括一有效位元,且該指令迴圈快取記憶體更包括:一比較器,耦接至該處理器核心、該標籤儲存器以及該快取陣列,當該提取位址的該標籤與該標籤儲存器輸出的該標籤值相同,且該提取位址中該索引所對應的該快取條目的該有效位元被設定時,設立一命中訊號以表示該快取命中,否則重置該命中訊 號以表示該快取未中。
  10. 如申請專利範圍第1項所述的微處理器,其中當該快取陣列輸出的該標籤識別碼與一預定值相同時,該標籤儲存器輸出一無效標籤值,該無效標籤值為與任何提取位址的該標籤皆不同的一唯一值,且該指令迴圈快取記憶體更包括:一比較器,耦接至該處理器核心以及該標籤儲存器,當該提取位址的該標籤與該標籤儲存器輸出的該標籤值相同時,設立一命中訊號以表示該快取命中,否則重置該命中訊號以表示該快取未中。
  11. 如申請專利範圍第1項所述的微處理器,其中每一上述快取條目更包括一指令,且該指令迴圈快取記憶體更包括:一控制器,耦接至該處理器核心、該快取陣列、該標籤儲存器以及一記憶體,當該快取命中發生時,提供該提取位址中該索引所對應的該快取條目的該指令至該處理器核心,當該快取未中發生時,提供位於該提取位址的該記憶體中的一指令至該處理器核心,當該快取未中發生、該提取位址的該標籤與儲存於該標籤儲存器的標籤值其中之一相同、且該提取位址中該索引所對應的該快取條目為無效時,將位於該提取位址的該記憶體中的該指令填入至該提取位址中該索引所對應的該快取條目。
  12. 如申請專利範圍第11項所述的微處理器,其中當接收自該處理器核心的該標籤值與之前儲存於該標籤儲存器中的每一標籤值不同時,該控制器以接收自該處理器核心的一標籤值更新該 標籤儲存器。
  13. 如申請專利範圍第12項所述的微處理器,其中該控制器藉由將接收自該處理器核心的該標籤值加入至該標籤儲存器,或藉由以接收自該處理器核心的該標籤值來取代之前儲存於該標籤儲存器中的標籤值,並清除每一上述快取條目的該標籤識別碼或一有效位元,藉以更新該標籤儲存器。
  14. 如申請專利範圍第12項所述的微處理器,其中該控制器與包括一正常狀態及一內部狀態的一有限狀態機相關,該控制器在初始時進入該正常狀態,當該控制器為該正常狀態且接收自該處理器核心的該標籤值與之前儲存於該標籤儲存器中的每一標籤值不同時,該控制器以接收自該處理器核心的該標籤值來更新該標籤儲存器,當該控制器為該內部狀態且接收自該處理器核心的該標籤值與先前儲存於該標籤儲存器中的每一標籤值不同時,該控制器進入該正常狀態,當該控制器為該正常狀態並接收一內部訊號時,該控制器進入該內部狀態。
  15. 一種使用指令迴圈快取記憶體的方法,包括:初始時進入一正常狀態,其中該指令迴圈快取記憶體與包括該正常狀態及一內部狀態的一有限狀態機相關;當一目前狀態為該正常狀態且一處理器核心發送至該指令迴圈快取記憶體的一標籤值與之前儲存於該指令迴圈快取記憶體中的每一標籤值不同時,以該標籤值更新該指令迴圈快取記憶體;當該目前狀態為該內部狀態,且該處理器核心發送至該指令 迴圈快取記憶體的該標籤值與之前儲存於該指令迴圈快取記憶體中的每一標籤值不同時,進入該正常狀態;當該目前狀態為該正常狀態時,對應於接收一內部訊號而進入該內部狀態;以及基於由該處理器核心發送至該指令迴圈快取記憶體的一提取位址的一標籤以及儲存於該指令迴圈快取記憶體中的標籤值其中之一之間的一比較,判斷該指令迴圈快取記憶體內是否發生一快取命中或一快取未中。
  16. 如申請專利範圍第15項所述的方法,其中所述更新該指令迴圈快取記憶體的步驟包括:將發送自該處理器核心的該標籤值加入至該指令迴圈快取記憶體,或以發送自該處理器核心的該標籤值取代之前儲存於該指令迴圈快取記憶體中的標籤值。
  17. 一種使用指令迴圈快取記憶體的方法,包括:每當一提示指令被提取並辨識時,發送與該提示指令相關的一標籤值至該指令迴圈快取記憶體,其中該提示指令透過該標籤值而與該提示指令被執行之後將被執行的一指令迴圈相關,且其中基於一指令的一提取位址的一標籤與儲存於該指令迴圈快取記憶體中的標籤值其中之一之間的一比較,該指令迴圈快取記憶體判斷一快取命中或一快取未中是否發生。
  18. 如申請專利範圍第17項所述的方法,其中該提示指令為一條件式分支指令,該條件式分支指令的分支條件總是不成立, 且與該提示指令相關的該標籤值為該條件式分支指令的一目標位址的一標籤。
  19. 如申請專利範圍第18項所述的方法,其中該目標位址指向該指令迴圈或該指令迴圈中將被呼叫的一函數。
  20. 如申請專利範圍第17項所述的方法,其中該提示指令為一無操作指令,該提示指令被緊接地設置於該指令迴圈之前,且與該提示指令相關的該標籤值為該指令迴圈的第一個指令的一提取位址的一標籤。
TW102147204A 2013-09-26 2013-12-19 微處理器及其使用指令迴圈快取記憶體的方法 TWI483186B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/037,395 US9183155B2 (en) 2013-09-26 2013-09-26 Microprocessor and method for using an instruction loop cache thereof

Publications (2)

Publication Number Publication Date
TW201512986A TW201512986A (zh) 2015-04-01
TWI483186B true TWI483186B (zh) 2015-05-01

Family

ID=52692055

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102147204A TWI483186B (zh) 2013-09-26 2013-12-19 微處理器及其使用指令迴圈快取記憶體的方法

Country Status (4)

Country Link
US (1) US9183155B2 (zh)
JP (1) JP5944458B2 (zh)
CN (1) CN104516829B (zh)
TW (1) TWI483186B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632791B2 (en) * 2014-01-21 2017-04-25 Apple Inc. Cache for patterns of instructions with multiple forward control transfers
CN109426650B (zh) * 2017-08-28 2023-07-18 华为技术有限公司 处理器和处理标签的方法
US11176051B2 (en) * 2020-03-13 2021-11-16 Shenzhen GOODIX Technology Co., Ltd. Multi-way cache memory access
CN113900966B (zh) * 2021-11-16 2022-03-25 北京微核芯科技有限公司 一种基于Cache的访存方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1302775A1 (en) * 2001-10-16 2003-04-16 Italtel s.p.a. A clock generation system for a prototyping apparatus
TW200401187A (en) * 2002-07-12 2004-01-16 Nec Corp Fault-tolerant computer system, re-synchronization method thereof and re-synchronization program thereof
US20050097276A1 (en) * 2001-09-28 2005-05-05 Lu Shih-Lien L. Hiding refresh of memory and refresh-hidden memory
TWI233545B (en) * 2002-12-26 2005-06-01 Intel Corp Mechanism for processor power state aware distribution of lowest priority interrupts
US20060190671A1 (en) * 2005-02-23 2006-08-24 Jeddeloh Joseph M Memory device and method having multiple internal data buses and memory bank interleaving

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06243036A (ja) * 1993-02-12 1994-09-02 Hitachi Ltd キャッシュ制御システム
JP3499252B2 (ja) * 1993-03-19 2004-02-23 株式会社ルネサステクノロジ コンパイル装置及びデータ処理装置
US5920890A (en) 1996-11-14 1999-07-06 Motorola, Inc. Distributed tag cache memory system and method for storing data in the same
US5893142A (en) 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor
US6963965B1 (en) 1999-11-30 2005-11-08 Texas Instruments Incorporated Instruction-programmable processor with instruction loop cache
EP1107110B1 (en) 1999-11-30 2006-04-19 Texas Instruments Incorporated Instruction loop buffer
US6732203B2 (en) * 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US7159103B2 (en) * 2003-03-24 2007-01-02 Infineon Technologies Ag Zero-overhead loop operation in microprocessor having instruction buffer
US7130963B2 (en) * 2003-07-16 2006-10-31 International Business Machines Corp. System and method for instruction memory storage and processing based on backwards branch control information
CN102541510B (zh) * 2011-12-27 2014-07-02 中山大学 一种指令缓存系统及其取指方法
CN103019959B (zh) * 2012-11-21 2016-05-04 中国科学院声学研究所 一种指令高速缓冲存储器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050097276A1 (en) * 2001-09-28 2005-05-05 Lu Shih-Lien L. Hiding refresh of memory and refresh-hidden memory
EP1302775A1 (en) * 2001-10-16 2003-04-16 Italtel s.p.a. A clock generation system for a prototyping apparatus
TW200401187A (en) * 2002-07-12 2004-01-16 Nec Corp Fault-tolerant computer system, re-synchronization method thereof and re-synchronization program thereof
TWI233545B (en) * 2002-12-26 2005-06-01 Intel Corp Mechanism for processor power state aware distribution of lowest priority interrupts
US20060190671A1 (en) * 2005-02-23 2006-08-24 Jeddeloh Joseph M Memory device and method having multiple internal data buses and memory bank interleaving

Also Published As

Publication number Publication date
CN104516829A (zh) 2015-04-15
US20150089141A1 (en) 2015-03-26
CN104516829B (zh) 2017-07-21
JP5944458B2 (ja) 2016-07-05
TW201512986A (zh) 2015-04-01
JP2015069649A (ja) 2015-04-13
US9183155B2 (en) 2015-11-10

Similar Documents

Publication Publication Date Title
US9898412B2 (en) Methods, systems and apparatus for predicting the way of a set associative cache
US9875106B2 (en) Computer processor employing instruction block exit prediction
CN100487642C (zh) D缓存缺失预测和调度的方法和装置
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
JP4856100B2 (ja) 非アラインドメモリアクセス予測
JP4843717B2 (ja) 演算処理装置および演算処理装置の制御方法
TWI515567B (zh) 微處理器的轉譯位址快取記憶體
TWI483186B (zh) 微處理器及其使用指令迴圈快取記憶體的方法
JPH02224023A (ja) 命令ストリーム機能を有するプロセサ制御型インターフェイス
KR20070108939A (ko) 포워드 룩킹 브렌치 타겟 어드레스 캐싱
CN101025681A (zh) 最小化未调度d缓存缺失流水线停顿的方法和装置
JP2009545820A (ja) 非シーケンシャル命令アドレスをプリフェッチするための方法および装置
JP2008530714A5 (zh)
US20050120193A1 (en) Context look ahead storage structures
JP2008059057A (ja) 計算機システム及びプロセッサの制御方法
US9465615B2 (en) Method and apparatus for branch prediction
JP2011013864A (ja) 命令制御装置、命令制御方法および演算回路
JP2009116621A (ja) 演算処理装置
JP2003519836A (ja) プロセッサがウエイト状態の間に開始された並列読み出しと直列読み出しを用いてセット・アソシエイティブ・キャッシュを管理する方法
US20180285114A1 (en) Method and Apparatus for Augmentation and Disambiguation of Branch History In Pipelined Branch Predictors
JP5099133B2 (ja) 処理装置
JP3108512B2 (ja) 分岐予測装置
CN106919367B (zh) 侦测自修正程序码的处理器与方法
TWI606393B (zh) 依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法
JP2004038601A (ja) キャッシュメモリ装置