TWI756616B - 處理器電路以及資料處理方法 - Google Patents
處理器電路以及資料處理方法 Download PDFInfo
- Publication number
- TWI756616B TWI756616B TW109101262A TW109101262A TWI756616B TW I756616 B TWI756616 B TW I756616B TW 109101262 A TW109101262 A TW 109101262A TW 109101262 A TW109101262 A TW 109101262A TW I756616 B TWI756616 B TW I756616B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- load
- data
- address
- command
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims description 18
- 238000000034 method Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 10
- 101150060298 add2 gene Proteins 0.000 description 8
- 238000001514 detection method Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一種處理器電路,其包含指令解碼單元、指令偵測器、位址產生器以及資料緩衝器。該指令解碼單元用以解碼載入指令以產生解碼結果。該指令偵測器耦接於該指令解碼單元,用以偵測該載入指令是否處於載入使用情境。該位址產生器耦接於該指令解碼單元,用以根據該解碼結果產生該載入指令所要求的第一位址。該資料緩衝器耦接於該指令偵測器以及該位址產生器,用以於該指令偵測器偵測出該載入指令處於該載入使用情境時,儲存該位址產生器所產生的該第一位址,以及根據該第一位址儲存該載入指令所要求的資料。
Description
本揭示內容係關於資料處理技術,尤指一種可減少載入指令所涉及的載入使用停滯的處理器電路及資料處理方法。
為了減少從較低速之記憶體存取資料或指令的時間,現今的中央處理單元均採用快取(cache)機制。藉由適當的設計,快取機制通常可在幾個時脈週期內獲得所需的資料或指令,大幅提升系統性能。然而,在中央處理單元依序處理載入指令及加法指令的情形下,當該加法指令所需的資料係為該載入指令欲讀取的資料時,由於從區域記憶體(或快取記憶體,諸如靜態隨機存取記憶體(static random access memory,SRAM))存取該欲讀取的資料需要一段時間,因此,中央處理單元仍需等待幾個時脈週期才能執行該加法指令。也就是說,現有採用快取機制的中央處理單元仍會發生載入使用(load-use)停滯(stall)的問題。
有鑑於此,本揭示的實施例提供一種可減少載入指令所涉及的管線停滯的問題,不論此載入指令是快取命中(hit)或是快取失誤(miss)。
本揭示的某些實施例包含一種處理器電路。該處理器電路
包含一指令解碼單元、一指令偵測器、一位址產生器以及一資料緩衝器。該指令解碼單元用以解碼一載入指令以產生一解碼結果。該指令偵測器耦接於該指令解碼單元,用以偵測該載入指令是否處於一載入使用情境。該位址產生器耦接於該指令解碼單元,用以根據該解碼結果產生該載入指令所要求的一第一位址。該資料緩衝器耦接於該指令偵測器以及該位址產生器,用以於該指令偵測器偵測出該載入指令處於該載入使用情境時,儲存該位址產生器所產生的該第一位址,以及根據該第一位址儲存該載入指令所要求的資料。
本揭示的某些實施例包含一種資料處理方法。該資料處理方法包含以下步驟:接收一載入指令,並偵測該載入指令是否處於一載入使用情境;對該載入指令進行解碼以產生一解碼結果;根據該解碼結果產生該載入指令所要求的一第一位址;當偵測出該載入指令處於該載入使用情境時,將該第一位址儲存於一資料緩衝器;以及根據該第一位址將該載入指令所要求的資料儲存於該資料緩衝器。
100、200:處理器電路
122:指令解碼單元
124:指令偵測器
136:位址產生器
138:資料緩衝器
180:記憶體
201~204:管線暫存器
232:執行單元
233:算術邏輯單元
234:乘法累加單元
240:記憶體
252:暫存器檔案
254:匯流排介面單元
260:外部記憶體
410:儲存空間
420:控制電路
422:比較電路
423:緩衝器
424:選擇電路
426:邏輯電路
428:控制器
502~514、602~640、802~810:步驟
800:資料處理方法
IF:指令擷取階段
ID:指令解碼階段
EX:執行階段
MEM:記憶體存取階段
WB:寫回階段
ibuf0~ibuf6:儲存單元
E(0)~E(N-1):入口
V:有效位元域
L:鎖定位元域
TG:標籤域
DA:資料域
INS:指令串流
LWI:載入指令
MAI:記憶體存取指令
I0~I6:指令
lub_d、MD、MD1、MD2:資料
lub_instr:指示訊號
lub_dv:有效訊號
lub_h:命中訊號
addr:位址
RR:讀取請求
DR、DR’:解碼結果
CC0~CC8:時脈週期
搭配附隨圖式來閱讀下文的實施方式,可清楚地理解本揭示的多種態樣。應注意到,根據本領域的標準慣例,圖式中的各種特徵並不一定是按比例進行繪製的。事實上,為了能夠清楚地描述,可任意放大或縮小某些特徵的尺寸。
圖1是依據本揭示某些實施例之一處理器電路的功能方塊示意圖。
圖2是圖1所示之處理器電路之一實施方式的示意圖。
圖3是圖2所示之指令偵測器所涉及的指令偵測操作之一實施方式的示意圖。
圖4是圖2所示之資料緩衝器之一實施方式的示意圖。
圖5繪示了圖2所示之處理器電路所涉及之用以處理記憶體存取指令的資料處理方法的一實施例的流程圖。
圖6繪示了圖2所示之處理器電路所涉及之用以處理記憶體存取指令的資料處理方法的另一實施例的流程圖。
圖7繪示了圖4所示之儲存空間於連續多個時脈週期中各自儲存的資訊的示意圖。
圖8是依據本揭示的資料處理方法的一實施例的流程圖。
以下揭示內容提供了多種實施方式或例示,其能用以實現本揭示內容的不同特徵。下文所述之元件與配置的具體例子係用以簡化本揭示內容。當可想見,這些敘述僅為例示,其本意並非用於限制本揭示內容。舉例來說,若將一元件描述為與另一元件「連接(connected to)」或「耦接(coupled to)」,則兩者可直接連接或耦接,或兩者之間可能出現其他中間(intervening)元件。
此外,本揭示內容可能會在多個實施例中重複使用元件符號和/或標號。此種重複使用乃是基於簡潔與清楚的目的,其本身不代表所討論的不同實施例和/或組態之間的關係。再者,當可理解,本揭示的實施例提供了許多可應用的概念,其可廣泛地實施於各種特定場合。以下所討論的實施例僅供說明的目的,並非用來限制本揭示的範圍。
藉由提早準備一待處理指令所需的資料,本揭示的資料處理方案可減少/避免因為執行該待處理指令所造成的載入使用停滯。例如,在處理依序處理載入指令及加法指令的情形下,本揭示的資料處理方
案可提早準備該加法指令所需的資料(包含該載入指令所要求的資料),而無需等待該載入指令的執行結果回傳,即可成功地執行該加法指令。進一步的說明如下。
圖1是依據本揭示某些實施例之一處理器電路100的功能方塊示意圖。處理器電路100可用來減少/避免因為執行一指令串流(instruction stream)之中某一或某些指令所造成的載入使用停滯。處理器電路100可包含(但不限於)一指令解碼單元122、一指令偵測器124、一位址產生器136以及一資料緩衝器138。指令解碼單元122用以解碼一指令串流INS之中彼此接續的複數個指令,並可依序輸出該複數個指令各自的解碼結果。例如,指令解碼單元122可對指令串流INS之中的一載入指令LWI進行解碼,以產生一解碼結果DR。又例如,指令解碼單元122可對指令串流INS之中其他的指令(諸如儲存指令或運算指令)進行解碼,以產生相應的解碼結果。
指令偵測器124耦接於指令解碼單元122,用以偵測指令串流INS之中是否包含處於一載入使用情境的一個或多個載入指令,其中當一載入指令處於該載入使用情境時,該載入指令可能會造成載入使用停滯。例如,指令偵測器124可接收暫存於指令解碼單元122的指令串流INS,進而對指令串流INS進行偵測。又例如,指令偵測器124可無需透過指令偵測單元122,而直接接收指令串流INS以進行偵測。
於此實施例中,處於該載入使用情境的載入指令可包含一載入使用指令(load-use instruction),其可能會導致在執行後續指令時產生載入使用停滯。例如,當指令偵測器124偵測出載入指令LWI係為一載入使用指令時,這代表了若處理器電路100使用載入指令LWI的執行結
果來執行指令串流INS之中位於載入指令LWI之後的一指令,將會造成載入使用停滯。於此實施例中,指令偵測器124可判斷出使用載入指令LWI的執行結果來執行該指令是否會發生載入使用資料危障(load-use data hazard)。當判斷出使用載入指令LWI的執行結果來執行該指令會發生載入使用資料危障時,指令偵測器124可偵測出載入指令LWI係為一載入使用指令。
此外,指令偵測器124可輸出一指示訊號lu_instr,其可指示出指令解碼單元122當前所處理的指令,是否為一個處於該載入使用情境的載入指令。例如,在指令解碼單元122當前所處理的指令是載入指令LWI的情形下,指示訊號lu_instr可指示出載入指令LWI是否為一載入使用指令。
位址產生器136耦接於指令解碼單元122,用以根據各指令的解碼結果產生該指令所涉及的位址。舉例來說,位址產生器136可根據載入指令LWI的解碼結果DR產生位址addr,作為載入指令LWI所要求的位址。
資料緩衝器138耦接於指令偵測器124以及位址產生器136,用以於指令偵測器124偵測出一載入指令可能會造成載入使用停滯時,儲存位址產生器136所產生的該載入指令所要求的位址,並根據該載入指令所要求的位址來儲存該載入指令所要求的資料。於此實施例中,當指令偵測器124偵測出載入指令LWI係為一載入使用指令時,資料緩衝器138可儲存位址產生器136所產生的位址addr,以及根據位址addr儲存資料lub_d,作為載入指令LWI所要求的資料。
舉例來說,在載入指令LWI所要求的資料尚未儲存於資料
緩衝器138的情形下,資料緩衝器138可發出一讀取請求RR至一記憶體180,以讀取記憶體180中位址addr所指向的資料MD,作為載入指令LWI所要求的資料。在某些實施例中,記憶體180可以是處理器電路100的區域記憶體或快取記憶體。在某些實施例中,記憶體180可以是外接於處理器電路100的外部記憶體或輔助記憶體。
值得注意的是,在處理器電路100需要使用載入指令LWI所要求的資料來執行一待處理指令的情形下,由於資料緩衝器138可儲存載入指令LWI所要求的資料(諸如資料lub_d),因此,指令解碼單元122可從資料緩衝器138取得資料lub_d以供處理器電路100執行該待處理指令,而無需等待記憶體180(諸如快取記憶體或外部記憶體)回傳載入指令LWI的執行結果,故可減少/避免因為載入使用停滯。
為方便說明,以下採用具有管線架構的處理器電路來說明本揭示的資料處理方案。然而,本揭示並不以此為限。將本揭示的資料處理方案應用於其他需要先前指令的執行結果以執行後續指令的電路架構,均遵循本揭示的精神而落入本揭示的範疇。
圖2是圖1所示之處理器電路100之一實施方式的示意圖。為便於理解,處理器電路200可實施為具有一管線架構的管線處理器,其中該管線架構可包含五個管線階段,其可分別由一指令擷取階段(instruction fetch stage)IF、一指令解碼階段(instruction decode stage)ID、一執行階段(execution stage)EX、一記憶體存取階段(memory access stage)MEM以及一寫回階段(write back stage)WB來實施。然而,這並非用來限制本揭示的內容。在某些實施例中,這五個管線階段可由指令擷取階段、指令解碼階段、運算元擷取階段(operand
fetch stage)、執行階段以及寫回階段來實施。在某些實施例中,處理器電路200可採用具有大於或小於五個管線階段的管線架構。這些設計上的相關變化均遵循本揭示的精神。
於此實施例中,處理器電路200可包含圖1所示之指令解碼單元122、指令偵測器124、位址產生器136以及資料緩衝器138。指令解碼單元122與指令偵測器124可位於同一管線階段(諸如指令解碼階段ID),而位址產生器136與資料緩衝器138可位於同一管線階段(諸如執行階段EX),以減少/避免管線停滯的問題。相關的說明請容後再敘。
此外,處理器電路200還可包含(但不限於)多個管線暫存器(pipeline register)201~204、一指令擷取單元210、一執行單元232、一記憶體240、一暫存器檔案(register file,RF)252以及一匯流排介面單元(bus interface unit,BIU)254。由於管線暫存器201位於指令擷取階段IF與指令解碼階段ID之間,故可稱作指令擷取/指令解碼暫存器(IF/ID register)。相似地,管線暫存器202、管線暫存器203以及管線暫存器204可分別稱作指令擷取/執行暫存器(ID/EX register)、執行/記憶體存取暫存器(EX/MEM register)以及記憶體存取/寫回暫存器(MEM/WB register)。
指令擷取單元210位於指令擷取階段IF,用以儲存指令串流INS,並根據程式計數器(program counter)(圖2未示)提供的位址,將指令串流INS之中相對應的指令儲存至管線暫存器201。
執行單元232位於執行階段EX,用以根據管線暫存器202所提供之一指令的解碼結果來執行該指令,以及將該指令的執行結果儲存於管線暫存器203,其中該指令的解碼結果可包含用於執行該指令所需的位
址與資料。於此實施例中,執行單元232可包含(但不限於)一算術邏輯單元(arithmetic logic unit,ALU)233及一乘法累加單元(multiplier-accumulator unit,MAC)234。
記憶體240位於記憶體存取階段MEM,並可作為圖1所示之記憶體180之一實施方式。例如,記憶體240可實施為處理器電路200的快取記憶體。於此實施例中,記憶體240用以根據管線暫存器203所提供之指令執行結果來進行記憶體存取操作。例如,於寫入操作中,記憶體240可根據該指令執行結果將資料儲存於位址addr所指向的位置。又例如,於讀取操作中,記憶體240可根據該指令執行結果輸出位址addr所指向的資料MD1。
暫存器檔案252與匯流排介面單元254均可位於寫回階段WB。暫存器檔案252用以儲存管線暫存器204所暫存之來自記憶體240的資料。匯流排介面單元254可作為處理器電路200與一外部記憶體260之間的資料傳輸介面。在某些實施例中,暫存器檔案252另可用來儲存欲寫入至外部記憶體260的資料,或用來儲存從外部記憶體260讀取的資料MD2。
請連同圖2參閱圖3。圖3是圖2所示之指令偵測器124所涉及的指令偵測操作之一實施方式的示意圖。於此實施例中,指令偵測器124可接收指令串流INS中先後傳送至指令解碼單元122的多個指令I0~I6,並將多個指令I0~I6分別暫存於指令偵測器124之中的多個儲存單元ibuf0~ibuf6。為方便說明,多個指令I0~I6可分別由載入指令load、加法指令add、載入指令load、加法指令add、減法指令sub、載入指令load以及左移邏輯指令sll來實施。指令偵測器124可對多個指令I0~I6執行解
碼操作,以偵測一載入指令(諸如指令I0、指令I2或指令I5)是否為一載入使用指令。
舉例來說,在指令I0所要求的資料(記憶體240中位址[r8]所指向的資料)從記憶體240載入至暫存器r0(位於指令解碼單元122中;圖2未示)之前,執行於指令I0之後的指令I1(加法指令add)就會進入執行階段EX,而需要使用暫存器r0的資料。因此,指令偵測器124可偵測出指令I0係為處於一載入使用情境的一載入使用指令。此外,當指令I0進入執行階段EX時,指令偵測器124可輸出具有一第一訊號位準(諸如高邏輯位準)的指示訊號lu_instr,表示指令I0係為一載入使用指令。
相似地,對於指令I5來說,在指令I5所要求的資料(記憶體240中位址[r9]所指向的資料)從記憶體240載入至暫存器r2(位於指令解碼單元122中;圖2未示)之前,執行於指令I5之後的指令I6(左移邏輯指令sll)就會進入執行階段EX,而需要使用暫存器r2的資料。因此,指令偵測器124可偵測出指令I5係為一載入使用指令。
對於指令I2來說,雖然執行於指令I2之後的指令I4所需的資料(指令解碼單元122之中暫存器r1儲存的資料)來自指令I2所要求的資料(記憶體240中位址[r9]所指向的資料),不過,由於在指令I4進入執行階段EX之前,指令I2所要求的資料已從記憶體240載入至暫存器r1,因此,指令偵測器124可偵測出指令I5並非一載入使用指令,並輸出具有一第二訊號位準(諸如低邏輯位準)的指示訊號lu_instr。
值得注意的是,圖3所示之指令種類、順序及個數只是方便說明的目的,並非用來作為本揭示的限制。由於所屬領域中具有通常知識者應可瞭解圖3所示之多個指令I0~I6的操作,故各指令的進一步說明在
此便不在贅述。
基於上述指令偵測操作,指令偵測器124可在指令解碼階段ID中偵測出載入指令LWI是否為一載入使用指令。舉例來說,在載入指令LWI是由指令I0或指令I5來實施的情形下,當載入指令LWI進入指令解碼階段ID時,指令偵測器124可偵測出載入指令LWI係為一載入使用指令,並輸出具有該第一訊號位準的指示訊號lu_instr。此外,在載入指令LWI是由指令I2來實施的情形下,當載入指令LWI進入指令解碼階段ID時,指令偵測器124可偵測出載入指令LWI並非一載入使用指令,而輸出具有該第二訊號位準的指示訊號lu_instr。
在指令偵測器124偵測出載入指令LWI是一載入使用指令之後,載入指令LWI所要求的資料可由資料緩衝器138在下一管線階段(執行階段EX)提供給指令解碼單元122。因此,在載入指令LWI的下一個指令需要馬上使用載入指令LWI所要求的資料的情形下,該下一個指令所需的資料可在該下一個指令處於指令解碼階段ID時即已就緒。
請連同圖2參閱圖4。圖4是圖2所示之資料緩衝器138之一實施方式的示意圖。資料緩衝器138可包含(但不限於)一儲存空間410以及一控制電路420。儲存空間410可採用正反器(圖4未示)作為儲存單元,以實現單時脈週期的資料存取。於此實施例中,儲存空間410可包含N個入口(entry)E(0)~E(N-1),其分別對應於N個索引值idx(0)~idx(N-1),N為大於1之正整數。各入口可包含(但不限於)一有效位元域V、一鎖定位元域L、一標籤域TG以及一資料域DA。有效位元域V可表示是否有資訊存入該入口。N個入口E(0)~E(N-1)於有效位元域V的內容可分別表示為有效位元V(0)~V(N-1)。鎖定位元域L可表示該入口是否被鎖
定,以保護該入口所儲存的資訊不被修改。N個入口E(0)~E(N-1)於鎖定位元域L的內容可分別表示為鎖定位元L(0)~L(N-1)。標籤域TG可用來識別該入口之資料域DA所儲存的資料。例如,標籤域TG可指示出該入口所儲存的資料於記憶體240(或外部記憶體260)中的位址。N個入口E(0)~E(N-1)於標籤域TG的內容可分別表示為標籤TG(0)~TG(N-1)。N個入口E(0)~E(N-1)於資料域DA的內容可分別表示為資料DA(0)~DA(N-1)。
控制電路420包含(但不限於)一比較電路422、一緩衝器423、一選擇電路424、一邏輯電路426以及一控制器428。比較電路422用以將位址addr與標籤TG(0)~TG(N-1)分別作比較,以產生一命中訊號lub_h。舉例來說,當位址addr與標籤TG(0)~TG(N-1)其中之一相匹配時,命中訊號lub_h可具有一訊號位準(諸如高邏輯位準);當位址addr未與標籤TG(0)~TG(N-1)之中任一標籤相匹配時,命中訊號lub_h可具有另一訊號位準(諸如低邏輯位準)。於此實施例中,當命中訊號lub_h指示出位址addr與標籤TG(i)(i為小於N之自然數)相匹配時,比較電路422可將命中訊號lub_h以及標籤TG(i)相對應之有效位元V(i)與鎖定位元L(i)儲存至緩衝器423。
選擇電路424可根據命中訊號lub_h輸出資料DA(0)~DA(N-1)其中之一。例如,當命中訊號lub_h指示出位址addr與標籤TG(i)(i為小於N之自然數)相匹配時,選擇電路424可輸出標籤TG(i)相對應之資料DA(i),作為資料lub_d。
邏輯電路426可輸出一有效訊號lub_dv,以指示出資料lub_d是否是有效/可用的。舉例來說,在命中訊號lub_h指示出位址addr與標籤TG(i)(i為小於N之自然數)相匹配的情形下,當有效位元V(i)指
示出有資訊儲存於入口E(i),且鎖定位元L(i)指示出入口E(i)未被鎖定時,有效訊號lub_dv可輸出具有一訊號位準(諸如高邏輯位準),表示資料lub_d是有效/可用的。當有效訊號lub_dv指示出資料lub_d是有效/可用時,指令解碼單元122可從資料緩衝器138取得載入指令LWI所要求的資料(資料lub_d),減少/避免載入使用停滯的問題。
控制器428用以根據指示訊號lu_instr選擇性地存取儲存空間410。舉例來說,當指示訊號lu_instr指示出載入指令LWI係為一載入使用指令時,控制器428可根據位址addr存取儲存空間410之一入口,進而更新該入口之有效位元域V、鎖定位元域L、標籤域TG與資料域DA至少其一。當指示訊號lu_instr指示出載入指令LWI並非一載入使用指令時,控制器428可不更改儲存空間410所儲存的資訊。也就是說,儲存空間410可以只儲存與載入使用指令相關的資訊。
值得注意的是,於操作中,控制電路420可以使儲存空間410所儲存的資訊與記憶體240所儲存的資訊(或外部記憶體260所儲存的資訊)維持一致。舉例來說,當處理器電路200用以處理一記憶體存取指令MAI時,指令解碼單元122用以解碼記憶體存取指令MAI以產生一解碼結果DR’。記憶體存取指令MAI可包含(但不限於)用來將資料寫入記憶體的儲存指令,以及用來讀取記憶體所儲存之資料的載入指令。此外,位址產生器136用以根據解碼結果DR’產生位址addr,其可為記憶體存取指令MAI所要求的位址。控制電路420可檢查位址addr是否已儲存於儲存空間410。當位址addr已儲存於儲存空間410時,控制電路420可將儲存空間410中位址addr所指向的資料,更新為記憶體存取指令MAI所要求的資料。因此,指令解碼單元122直接從資料緩衝器134所取得的資料,係與
儲存於記憶體(記憶體240或外部記憶體260)的資料一致。
圖5繪示了圖2所示之處理器電路200所涉及之用以處理記憶體存取指令MAI的資料處理方法的一實施例的流程圖。於此實施例中,圖2所示之處理器電路200所包含的資料緩衝器138可採用圖4所示之架構來執行相關的操作。此外,記憶體存取指令MAI可由一儲存指令來實施。
請一併參閱圖2、圖4與圖5,於步驟502中,執行階段EX可開始執行該儲存指令。該儲存指令用以將一寫入資料儲存於記憶體240,其中該寫入資料係儲存於指令解碼單元122之暫存器。於步驟504中,位址產生器136可根據該儲存指令的解碼結果產生位址addr,亦即該儲存指令所要求的位址。位址產生器136可將位址addr輸出至資料緩衝器138。
於步驟506中,比較電路422可將位址addr與標籤TG(0)~TG(N-1)作比較,以檢查位址addr是否已儲存於儲存空間410。若檢查出addr已儲存於儲存空間410(例如,命中訊號lub_h具有低邏輯位準),執行步驟508。若檢查出位址addr並未儲存於儲存空間410(例如,命中訊號lub_h具有高邏輯位準),執行步驟512。
於步驟508中,控制器428可將儲存空間410中位址addr所指向的入口的資料域DA更新為該寫入資料。舉例來說,當位址addr與標籤TG(i)相匹配時,控制器428可將入口E(i)之資料DA(i)更新為該寫入資料。
於步驟510中,控制器428可根據置換策略(replacement policy)更新N個入口E(0)~E(N-1)的存取順序。舉例來說,控制器428可採用最近最少使用(least recently used,LRU)之置換策略。因此,控制器428可將最近一次存取的入口E(i)設定為最常使用的入口。在某些實
施例中,控制器428可採用非最近使用(not most recently used,NMRU)之置換策略、隨機置換策略或其他置換策略。在控制器428採用隨機置換策略的某些實施例中,可省略步驟510。
於步驟512中,執行階段EX可經由管線暫存器203發送一儲存請求至記憶體240,其中該儲存請求包含該寫入資料與位址產生器136所產生之位址addr。若記憶體240之中包含與位址addr相匹配的位址,則記憶體240可將該寫入資料儲存於記憶體240之中。若當記憶體240之中不具有與位址addr相匹配的位址時,該儲存請求可經由匯流排介面單元254傳送至外部記憶體260,以將該寫入資料儲存於外部記憶體260中位址addr所指向的儲存位置。於步驟514中,結束該儲存指令。
圖6繪示了圖2所示之處理器電路200所涉及之用以處理記憶體存取指令MAI的資料處理方法的另一實施例的流程圖。於此實施例中,圖2所示之處理器電路200所包含的資料緩衝器138可採用圖4所示之架構來執行相關的操作。此外,記憶體存取指令MAI可由一載入指令來實施。
請一併參閱圖2、圖4與圖6,於步驟602中,執行階段EX可開始執行該載入指令。該載入指令用以將一讀取資料載入至指令解碼單元122之暫存器。於步驟604中,位址產生器136可根據該載入指令的解碼結果產生位址addr,亦即該載入指令所要求的位址。位址產生器136可將位址addr輸出至資料緩衝器138。
於步驟606中,比較電路422可將位址addr與標籤TG(0)~TG(N-1)作比較,以檢查位址addr是否已儲存於儲存空間410。若檢查出addr已儲存於儲存空間410,則執行步驟608;反之,執行步驟616。
於步驟608中,控制器428可檢查位址addr所指向的入口是否有被鎖定。舉例來說,在位址addr與標籤TG(i)相匹配的情形下,控制器428可檢查入口E(i)之有效位元域L是否具有一位元型樣,以判斷入口E(i)是否被鎖定。若判斷出入口E(i)未被鎖定,執行步驟610;反之,執行步驟614。於此實施例中,當入口E(i)之鎖定位元L(i)的位元值等於0時,控制器428可判斷入口E(i)未被鎖定;當入口E(i)之鎖定位元L(i)的位元值等於1時,控制器428可判斷入口E(i)被鎖定。
於步驟610中,控制器428可根據一置換策略更新N個入口E(0)~E(N-1)的存取順序。舉例來說,控制器428可採用最近最少使用之置換策略。因此,控制器428可將最近一次存取的入口E(i)設定為最常使用的入口。在某些實施例中,控制器428可採用非最近使用之置換策略、隨機置換策略或其他置換策略。在控制器428採用隨機置換策略的某些實施例中,可省略步驟610。
於步驟612中,選擇電路424可將入口E(i)之資料DA(i)作為資料lub_d,使資料緩衝器138可將資料lub_d回傳給管線核心,諸如指令解碼單元122。此外,邏輯電路426可輸出具有一訊號位準(諸如高邏輯位準)之有效訊號lub_dv,以指示出資料lub_d是有效/可用的。
於步驟614中,資料緩衝器138可發送讀取請求RR至記憶體240,以讀取記憶體240中位址addr所指向的資料,其中該讀取請求包含位址addr。
於步驟616中,控制器428可根據指示訊號lu_instr判斷該載入指令是否為一載入使用指令。若是,執行步驟618;反之,執行步驟614。
於步驟618中,控制器428可根據一置換策略,選擇N個入口E(0)~E(N-1)其中的一個入口,以將位址addr儲存於該入口之標籤域TG。於此實施例中,控制器428可採用最近最少使用之置換策略,將位址addr儲存於最近最少使用的入口E(i)的標籤域TG。在某些實施例中,控制器428也可採用其他置換策略來儲存位址addr。
於步驟620中,控制器428可設定入口E(i)之有效位元域V的內容,表示入口E(i)已有資訊存入。舉例來說,控制器428可將有效位元V(i)的位元值設為「1」。此外,由於該載入指令所要求的資料尚未儲存於入口E(i)之資料域DA,控制器428可將入口E(i)之鎖定位元域L設定為一位元型樣,以保護入口E(i)所儲存的資訊不被不同於該載入指令的其他指令修改。於此實施例中,控制器428可將鎖定位元L(i)的位元值設為「1」。
於步驟622中,記憶體240可根據該讀取請求檢查記憶體240之中是否有儲存該載入指令所要求的資料。若檢查出記憶體240之中儲存該載入指令所要求的資料,執行步驟624;反之,執行步驟626。舉例來說,若檢查出記憶體240之中包含與位址addr相匹配的位址,則可判斷記憶體240之中有儲存該載入指令所要求的資料。
於步驟624中,記憶體240可將記憶體240之中位址addr所指向的資料MD1回傳給管線核心,諸如指令解碼單元122。資料MD1作為該載入指令所要求的資料。
於步驟626中,資料緩衝器138可發送經由匯流排介面單元254發出讀取請求RR至外部記憶體260,以讀取外部記憶體260中位址addr所指向的資料MD2,其中資料MD2作為該載入指令所要求的資料。
於步驟628中,控制器428可根據指示訊號lu_instr判斷是否要更新儲存空間410所儲存的資訊。若判斷出需要更新儲存空間410所儲存的資訊,執行步驟630;反之,執行步驟640。舉例來說,當指示訊號lu_instr具有一訊號位準(諸如高邏輯位準)時,控制器428可判斷需要更新儲存空間410所儲存的資訊。
於步驟630中,控制器428可將入口E(i)之資料域DA更新為記憶體240所回傳的資料MD1。於步驟632中,由於位址addr與該載入指令所要求的資料均儲存至入口E(i),因此,控制器428可將入口E(i)之鎖定位元域L設定為另一位元型樣,以允許入口E(i)所儲存的資訊被修改。於此實施例中,控制器428可將鎖定位元L(i)的位元值設為0。
於步驟634中,控制器428可根據指示訊號lu_instr判斷是否要更新儲存空間410所儲存的資訊。若判斷出需要更新儲存空間410所儲存的資訊,執行步驟636;反之,執行步驟640。舉例來說,當指示訊號lu_instr具有一訊號位準(諸如高邏輯位準)時,控制器428可判斷需要更新儲存空間410所儲存的資訊。
於步驟636中,控制器428可將入口E(i)之資料域DA更新為外部記憶體260所回傳的資料MD2。於步驟638中,由於位址addr與該載入指令所要求的資料均儲存至入口E(i),因此,控制器428可將入口E(i)之鎖定位元域L設定為另一位元型樣,以允許入口E(i)所儲存的資訊被修改。於此實施例中,控制器428可將鎖定位元L(i)的位元值設為0。步驟640中,結束該載入指令。
為了便於理解本揭示的內容,下文以資料緩衝器因應連續多個指令而執行的操作的實施方式,來說明本揭示所提供的資料處理方
案。圖7繪示了圖4所示之儲存空間410於連續多個時脈週期C0~C8中各自儲存的資訊的示意圖。於此實施例中,儲存空間410可包含4個入口E(0)~E(3)(即N等於4)以儲存執行指令所需的資訊。此外,各入口之標籤域TG與資料域DA的內容均可由16進位(亦即,「0x」)來表示。
請一併參閱圖2、圖4與圖7,當時脈週期CC0開始時,儲存空間410之中對應於索引值idx(0)的入口E(0)已儲存了位址0x2000以及資料0xaa。此外,入口E(0)之有效位元域V與鎖定位元域L分別設為「1」與「0」。
於時脈週期CC0中,載入指令load1進入執行階段EX,乘法指令mull進入指令解碼階段ID,其中執行乘法指令mull不會用到載入指令load1的目的暫存器所儲存的資料。位址產生器136根據載入指令load1的解碼結果產生載入指令load1所要求的位址0x3000(即位址addr)。此外,載入指令load1係為一載入使用指令。因此,資料緩衝器138可接收位址0x3000以及具有高邏輯位準的指示訊號lu_instr。
由於位址0x3000尚未儲存於儲存空間410之中,因此,比較電路422可產生具有低邏輯位準的命中訊號lub_h。控制器428可根據置換策略選擇入口E(1),以將位址addr儲存於入口E(1)之標籤域TG。此外,控制器428可將入口E(1)之有效位元域V與鎖定位元域L設為「1」。在某些實施例中,時脈週期CC0所涉及的操作可由圖6所示之複數個步驟602、604、606、616、618、620來實施。
接下來,當時脈週期CC0之後的時脈週期CC1開始時,儲存空間410之中入口E(1)已儲存了位址0x3000,且入口E(1)之有效位元域V與鎖定位元域L均設為「1」。於時脈週期CC1中,載入指令load1進入
記憶體存取階段MEM,乘法指令mull進入執行階段EX,以及另一載入指令load2進入指令解碼階段ID。控制器428可接收記憶體240所回傳的資料MD1,其係為記憶體240之中位址0x3000所指向的資料0xbb。因此,控制器428可將入口E(1)之資料域DA設為資料0xbb,並且將入口E(1)之鎖定位元域L設為「0」。在某些實施例中,時脈週期CC1所涉及的操作可由圖6所示之複數個步驟614、622、624、628、630、632來實施。
於時脈週期CC1之後的時脈週期CC2中,乘法指令mull進入記憶體存取階段MEM,載入指令load2進入執行階段EX,以及加法指令add2進入指令解碼階段ID。位址產生器136根據載入指令load2的解碼結果產生載入指令load2所要求的位址0x3000(即位址addr)。載入指令load2係為一載入使用指令,其中執行加法指令add2需使用載入指令load2的目的暫存器所儲存的資料。
由於載入指令load2所要求的位址0x3000已儲存於入口E(1),因此,比較電路422可產生具有高邏輯位準的命中訊號lub_h。邏輯電路426可輸出具有高邏輯位準之有效訊號lub_dv。選擇電路424可將儲存於入口E(1)之資料0xbb作為資料lub_d,使資料緩衝器138可將載入指令load2所要求的資料0xbb回傳給指令解碼單元122。因此,加法指令add2所需的資料0xbb在加法指令add2進入執行階段EX之前即已就緒。在某些實施例中,時脈週期CC2所涉及的操作可由圖6所示之複數個步驟604、606、608、610、612來實施。
於時脈週期CC2之後的時脈週期CC3中,載入指令load2進入記憶體存取階段MEM,加法指令add2進入執行階段EX,以及另一載入指令load3進入指令解碼階段ID。由於加法指令add2所需的資料0xbb已就
緒,處理器電路200可成功地執行加法指令add2。
於時脈週期CC3之後的時脈週期CC4中,加法指令add2進入記憶體存取階段MEM,載入指令load3進入執行階段EX,以及另一載入指令load4進入指令解碼階段ID。位址產生器136根據載入指令load3的解碼結果產生載入指令load3所要求的位址0x4000。此外,載入指令load3係為一載入使用指令。因此,資料緩衝器138可接收位址0x4000以及具有高邏輯位準的指示訊號lu_instr。
由於位址0x4000尚未儲存於儲存空間410之中,因此,比較電路422可產生具有低邏輯位準的命中訊號lub_h。控制器428可根據置換策略選擇入口E(2),以將位址addr儲存於入口E(2)之標籤域TG。此外,控制器428可將入口E(2)之有效位元域V與鎖定位元域L設為「1」。在某些實施例中,時脈週期CC4所涉及的操作可由圖6所示之複數個步驟602、604、606、616、618、620來實施。
於時脈週期CC4之後的時脈週期CC5中,載入指令load3進入記憶體存取階段MEM,載入指令load4進入執行階段EX,以及邏輯左移指令sll進入指令解碼階段ID。位址產生器136根據載入指令load4的解碼結果產生載入指令load4所要求的位址0x4000。此外,載入指令load4係為一載入使用指令。因此,資料緩衝器138可接收位址0x4000以及具有高邏輯位準的指示訊號lu_instr。此外,控制器428可接收記憶體240所回傳的資料MD1,其係為載入指令load3所要求的資料0xcc。
由於載入指令load4所要求的位址0x4000已儲存於入口E(2),因此,比較電路422可產生具有高邏輯位準的命中訊號lub_h。值得注意的是,在控制器428將入口E(2)之資料域DA設為資料0xcc之前,由於
入口E(2)之鎖定位元域L仍是「1」,因此,有效訊號lub_dv仍具有低邏輯位準,代表載入指令load4所要求的資料尚未就緒。在入口E(2)之資料域DA設為資料0xcc之後,控制器428可將入口E(2)之鎖定位元域L設為「0」,並將入口E(2)所儲存之資料0xcc提供給指令解碼單元122。藉由鎖定位元域L,處理器電路200可確保載入指令load4於執行階段EX所載入的資料是載入指令load3所要求的資料。在某些實施例中,時脈週期CC5所涉及的操作可由圖6所示之複數個步驟604、606、608、610、612來實施。
於時脈週期CC5之後的時脈週期CC6中,載入指令load4進入記憶體存取階段MEM,邏輯左移指令sll進入執行階段EX,以及儲存指令store1進入指令解碼階段ID。
於時脈週期CC6之後的時脈週期CC7中,邏輯左移指令sll進入記憶體存取階段MEM,儲存指令store1進入執行階段EX,以及加法指令add4進入指令解碼階段ID。儲存指令store1用以將寫入資料0xdd儲存於記憶體240中,其中位址產生器136根據儲存指令store1的解碼結果產生儲存指令store1所要求的位址0x2000。由於儲存指令store1所要求的位址0x2000已儲存於入口E(0),因此,比較電路422可產生具有高邏輯位準的命中訊號lub_h。此外,控制器428可將入口E(0)之資料域DA更新為寫入資料0xdd。在某些實施例中,時脈週期CC7所涉及的操作可由圖5所示之複數個步驟502、504、506、508、510來實施。
於時脈週期CC7之後的時脈週期CC8中,儲存指令store1進入記憶體存取階段MEM,以及加法指令add4進入執行階段EX。記憶體240可將寫入資料0xdd儲存於記憶體240中位址0x2000所指向的儲存位
置。
由於所屬領域中的通常知識者在閱讀圖1~圖6相關的段落說明之後,應可瞭解圖7所示之各時脈週期中的操作細節,因此進一步的說明在此便不再贅述。
本揭示所提供之資料處理方案可歸納於圖8。圖8是依據本揭示的資料處理方法的一實施例的流程圖。以下基於圖2所示的處理器電路200來說明資料處理方法800。然而,所屬技術領域中具有通常知識者當可理解,資料處理方法800可用於控制圖1所示之處理器電路100而不致於悖離本揭示內容之範圍。此外,在某些實施方式中,亦可於資料處理方法800執行其他操作。在某些實施方式中,可利用不同的順序或不同操作來進行資料處理方法800。
於步驟802中,接收一載入指令,並偵測該載入指令是否處於一載入使用情境。例如,指令偵測器124可偵測載入指令LWI是否為一載入使用指令。在某些實施例中,指令偵測器124可判斷使用載入指令LWI的執行結果來執行一指令是否會發生載入使用資料危障,進而偵測出載入指令LWI是否為一載入使用指令,其中該指令係執行於載入指令LWI之後。
於步驟804中,對該載入指令進行解碼以產生一解碼結果。例如,指令解碼單元122可對載入指令LWI進行解碼以產生解碼結果DR。
於步驟806中,根據該解碼結果產生該載入指令所要求的一位址。例如,位址產生器136可根據解碼結果DR產生載入指令LWI所要求的位址addr。
於步驟808中,當偵測出該載入指令處於該載入使用情境
時,將該位址儲存於一資料緩衝器。例如,當指令偵測器124偵測出載入指令LWI係為該載入使用指令時,資料緩衝器138可儲存位址addr。
於步驟810中,根據該位址將該載入指令所要求的資料儲存於該資料緩衝器。例如,資料緩衝器138可根據位址addr儲存載入指令LWI所要求的資料。
由於所屬技術領域中具有通常知識者在閱讀上述對應於圖1~圖7的相關段落內容之後,當可理解資料處理方法800的每一操作,因此,為求簡潔起見,進一步的說明在此便不再贅述。
上文的敘述簡要地提出了本揭示某些實施例之特徵,而使得本揭示所屬技術領域具有通常知識者可更全面地理解本揭示的多種態樣。本揭示所屬技術領域具有通常知識者當可明瞭,其可輕易地利用本揭示作為基礎,來設計或更動其他製程與結構,以實現與此處所述之實施方式相同的目的和/或達到相同的優點。本揭示所屬技術領域具有通常知識者應當明白,這些均等的實施方式仍屬於本揭示之精神與範圍,且其可進行各種變更、替代與更動,而不會悖離本揭示之精神與範圍。
100:處理器電路
122:指令解碼單元
124:指令偵測器
136:位址產生器
138:資料緩衝器
180:記憶體
INS:指令串流
LWI:載入指令
lub_d、MD:資料
addr:位址
RR:讀取請求
DR:解碼結果
Claims (10)
- 一種處理器電路,包含:一指令解碼單元,用以解碼一載入指令以產生一解碼結果;一指令偵測器,耦接於該指令解碼單元,用以偵測該載入指令是否處於一載入使用情境,以產生一指示訊號;一位址產生器,耦接於該指令解碼單元,用以根據該解碼結果產生該載入指令所要求的一第一位址;以及一資料緩衝器,耦接於該指令偵測器以及該位址產生器,用以根據該指令訊號選擇性地儲存該位址產生器所產生的該第一位址;其中當該指令訊號指示出該載入指令處於該載入使用情境時,該資料緩衝器用以儲存該位址產生器所產生的該第一位址,以及根據該第一位址儲存該載入指令所要求的資料。
- 如請求項1所述的處理器電路,其中該處理器電路具有一管線架構,該指令解碼單元與該指令偵測器位於該管線架構的指令解碼階段,以及該位址產生器與該資料緩衝器位於該管線架構的執行階段。
- 如請求項1所述的處理器電路,其中該指令偵測器用以接收該載入指令以及在該載入指令之後執行的一指令,並判斷使用該載入指令的執行結果來執行該指令是否會發生載入使用資料危障;當判斷出使用該載入指令的執行結果來執行該指令會發生載入使用資料危障時,該指令偵測器偵測出該載入指令處於該載入使用情境。
- 如請求項1所述的處理器電路,其中該資料緩衝器另將該載入指令所要求的資料提供給該指令解碼單元。
- 如請求項1所述的處理器電路,另包含:一快取記憶體,耦接該資料緩衝器,其中該資料緩衝器用以發出一讀取請求至該快取記憶體,以讀取該快取記憶體中該第一位址所指向的資料,作為該載入指令所要求的資料。
- 如請求項1所述的處理器電路,另包含:一匯流排介面單元,耦接於該資料緩衝器與一外部記憶體之間,其中該資料緩衝器用以經由該匯流排介面單元發出一讀取請求至該外部記憶體,以讀取該外部記憶體中該第一位址所指向的資料,作為該載入指令所要求的資料。
- 如請求項1所述的處理器電路,其中當該處理器電路用以處理一記憶體存取指令時,該指令解碼單元用以解碼該記憶體存取指令以產生另一解碼結果,該位址產生器用以根據該另一解碼結果產生該記憶體存取指令所要求的一第二位址,以及該資料緩衝器用以檢查該第二位址是否已儲存於該資料緩衝器;當該第二位址已儲存於該資料緩衝器時,該資料緩衝器用以將該資料緩衝器中該第二位址所指向的資料,更新為該記憶體存取指令所要求的資料。
- 如請求項7所述的處理器電路,其中該記憶體存取指令是另一載入指令或一儲存指令。
- 如請求項1所述的處理器電路,其中該資料緩衝器包含:一儲存空間,包含複數個入口,其中該第一位址及該載入指令所要求的資料係儲存於該複數個入口其中的一入口;以及一控制電路,耦接於該儲存空間,其中在該第一位址儲存於該入口之後,以及在該載入指令所要求的資料儲存於該入口之前,該控制電路用以將該入口之一鎖定位元域設定為一位元型樣,以保護該入口所儲存的資訊不被不同於該載入指令的其他指令修改。
- 一種資料處理方法,包含:接收一載入指令,並偵測該載入指令是否處於一載入使用情境,以產生一指示訊號;對該載入指令進行解碼以產生一解碼結果;根據該解碼結果產生該載入指令所要求的一第一位址;根據該指令訊號選擇性地儲存所產生的該第一位址,其中當該指令訊號指示出該載入指令處於該載入使用情境時,將該第一位址儲存於一資料緩衝器;以及當該指令訊號指示出該載入指令處於該載入使用情境時,根據該第一位址將該載入指令所要求的資料儲存於該資料緩衝器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109101262A TWI756616B (zh) | 2020-01-14 | 2020-01-14 | 處理器電路以及資料處理方法 |
US16/868,361 US11385894B2 (en) | 2020-01-14 | 2020-05-06 | Processor circuit and data processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109101262A TWI756616B (zh) | 2020-01-14 | 2020-01-14 | 處理器電路以及資料處理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202127241A TW202127241A (zh) | 2021-07-16 |
TWI756616B true TWI756616B (zh) | 2022-03-01 |
Family
ID=76763314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109101262A TWI756616B (zh) | 2020-01-14 | 2020-01-14 | 處理器電路以及資料處理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11385894B2 (zh) |
TW (1) | TWI756616B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115344244A (zh) * | 2021-05-14 | 2022-11-15 | 瑞昱半导体股份有限公司 | 处理程序语言函数的装置及方法 |
TWI774474B (zh) * | 2021-07-15 | 2022-08-11 | 瑞昱半導體股份有限公司 | 處理器電路以及資料處理方法 |
WO2023220099A1 (en) * | 2022-05-11 | 2023-11-16 | Ascenium, Inc. | Parallel processing of multiple loops with loads and stores |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120883A1 (en) * | 2001-11-26 | 2003-06-26 | Farrall Glenn Ashley | Electronic processing device and method of pipelining in such a device |
US20090240919A1 (en) * | 2008-03-19 | 2009-09-24 | International Business Machines Corporation | Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass |
US8065505B2 (en) * | 2007-08-16 | 2011-11-22 | Texas Instruments Incorporated | Stall-free pipelined cache for statically scheduled and dispatched execution |
TWI435267B (zh) * | 2011-01-28 | 2014-04-21 | Realtek Semiconductor Corp | 處理器電路及讀取資料的方法 |
TWI509509B (zh) * | 2009-01-16 | 2015-11-21 | Realtek Semiconductor Corp | 資料儲存方法與應用其之處理器 |
TW201810046A (zh) * | 2016-09-13 | 2018-03-16 | 晶心科技股份有限公司 | 用於存取快取記憶體的方法與裝置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5209933B2 (ja) * | 2007-10-19 | 2013-06-12 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
US10102142B2 (en) * | 2012-12-26 | 2018-10-16 | Nvidia Corporation | Virtual address based memory reordering |
US20170371659A1 (en) * | 2016-06-23 | 2017-12-28 | Microsoft Technology Licensing, Llc | Load-store queue for block-based processor |
-
2020
- 2020-01-14 TW TW109101262A patent/TWI756616B/zh active
- 2020-05-06 US US16/868,361 patent/US11385894B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120883A1 (en) * | 2001-11-26 | 2003-06-26 | Farrall Glenn Ashley | Electronic processing device and method of pipelining in such a device |
US8065505B2 (en) * | 2007-08-16 | 2011-11-22 | Texas Instruments Incorporated | Stall-free pipelined cache for statically scheduled and dispatched execution |
US20090240919A1 (en) * | 2008-03-19 | 2009-09-24 | International Business Machines Corporation | Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass |
TWI509509B (zh) * | 2009-01-16 | 2015-11-21 | Realtek Semiconductor Corp | 資料儲存方法與應用其之處理器 |
TWI435267B (zh) * | 2011-01-28 | 2014-04-21 | Realtek Semiconductor Corp | 處理器電路及讀取資料的方法 |
TW201810046A (zh) * | 2016-09-13 | 2018-03-16 | 晶心科技股份有限公司 | 用於存取快取記憶體的方法與裝置 |
Also Published As
Publication number | Publication date |
---|---|
US11385894B2 (en) | 2022-07-12 |
US20210216322A1 (en) | 2021-07-15 |
TW202127241A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI756616B (zh) | 處理器電路以及資料處理方法 | |
US8301849B2 (en) | Transactional memory in out-of-order processors with XABORT having immediate argument | |
TWI525539B (zh) | 用於同步化simd向量的方法,處理器,及系統 | |
US6321326B1 (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
US5446850A (en) | Cross-cache-line compounding algorithm for scism processors | |
US8499123B1 (en) | Multi-stage pipeline for cache access | |
US8954681B1 (en) | Multi-stage command processing pipeline and method for shared cache access | |
US7155574B2 (en) | Look ahead LRU array update scheme to minimize clobber in sequentially accessed memory | |
US9052910B2 (en) | Efficiency of short loop instruction fetch | |
JP2011513843A (ja) | 実行装置内のデータ転送のシステムおよび方法 | |
KR20190051036A (ko) | 벡터 명령들에 대한 요소간 어드레스 해저드들의 처리 | |
US10817300B2 (en) | Managing commit order for an external instruction relative to two unissued queued instructions | |
WO1995022103A1 (en) | Microprocessor access control unit with fetch address queue | |
US11599359B2 (en) | Methods and systems for utilizing a master-shadow physical register file based on verified activation | |
JP5669734B2 (ja) | 効果的なロードキュー・スヌーピング | |
CN113157631A (zh) | 处理器电路以及数据处理方法 | |
TWI774474B (zh) | 處理器電路以及資料處理方法 | |
WO2017112359A1 (en) | Method and apparatus for loop-invariant instruction detection and elimination | |
EP0415351A2 (en) | Data processor for processing instruction after conditional branch instruction at high speed | |
US6954848B2 (en) | Marking in history table instructions slowable/delayable for subsequent executions when result is not used immediately | |
JP3767521B2 (ja) | キャッシュフィル制御方法及びcpu | |
CN115686624A (zh) | 处理器电路以及数据处理方法 | |
CN111475010B (zh) | 管线式处理器及节电方法 | |
US11604873B1 (en) | Noisy instructions for side-channel attack mitigation | |
US20220179654A1 (en) | Method and apparatus for comparing predicted load value with masked load value |