TWI489387B - 微處理器以及預取資料至微處理器的方法 - Google Patents
微處理器以及預取資料至微處理器的方法 Download PDFInfo
- Publication number
- TWI489387B TWI489387B TW102143390A TW102143390A TWI489387B TW I489387 B TWI489387 B TW I489387B TW 102143390 A TW102143390 A TW 102143390A TW 102143390 A TW102143390 A TW 102143390A TW I489387 B TWI489387 B TW I489387B
- Authority
- TW
- Taiwan
- Prior art keywords
- prefetch
- microprocessor
- address
- instruction
- indirect
- Prior art date
Links
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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Description
本發明係關於微處理器,特別是關於微處理器中之預先提取(prefetching)。
美國專利第6,832,296號揭露了適用於x86架構之預取指令(prefetch instruction),上述預取指令利用重複前置碼(REP prefix)將記憶體中之複數條序列快取線(cache lines)預先提取至處理器之快取記憶體中。換言之,處理器之通用暫存器中具有複數條由計數值(count)所指定之序列快取線。然而,程式設計者知道會有想要預先提取記憶體中之非連續快取線的情況,其中非連續快取線代表這些快取線的位置是任意的。若一個程式想要預先提取複數條非連續快取線,則此程式必須包含多個上述美國專利所提及的預取(REP PREFETCH)指令。然而,這會增加程式碼長度(code size)並使得處理器需要執行複數指令而不是單一指令。因此,我們需要一種改良的預取指令用以解決這些問題。
本發明提供一種微處理器,該微處理器包括一指令解碼器。指令解碼器用以解碼一指令集中之複數指令,其中
指令集包括一重複預取間接指令。重複預取間接指令包括複數位址運算元以及一計數值。微處理器使用位址運算元來計算一預取表中之一第一項目之一位址,其中預取表具有複數項目,並且預取表中之各個項目包括一預取位址。計數值用以指定欲被預取之複數快取線的數量,其中快取線之每一者的記憶體位址係由項目中之一者中的預取位址所指定。
本發明提供另一種微處理器,該微處理器係位於具有一系統記憶體之一系統中。微處理器包括一指令解碼器、一計數暫存器以及一控制邏輯電路。指令解碼器用以解碼一預取指令,預取指令指定一計數值與用以指向一表格之一位址,其中計數值表示欲從系統記憶體中預取之複數快取線的數量,並且表格用以儲存快取線之複數記憶體位址。計數暫存器用以儲存一剩餘計數值,剩餘計數值表示欲被預取之快取線的一剩餘數量,其中計數暫存器一開始即具有被指定在預取指令中之計數值。控制邏輯電路耦接至指令解碼器與計數暫存器,控制邏輯電路使用計數暫存器與從表格中所提取之記憶體位址,用以控制微處理器將表格中之快取線的記憶體位址提取至微處理器,並且控制微處理器將系統記憶體中之快取線預取至微處理器之一快取記憶體。
本發明提供另一種預取資料至微處理器的方法,該微處理器係位於具有一系統記憶體之一系統中。上述方法包括解碼一預取指令,預取指令指定一計數值與用以指向一表格之一位址,其中計數值表示欲從系統記憶體中預取之複數快取線的數量,並且表格用以儲存快取線之複數記憶體位址。上述
方法更包括儲存一剩餘計數值,其中剩餘計數值表示欲被預取之快取線的一剩餘數量,並且剩餘計數值之一初始值係為被指定在預取指令中之計數值。上述方法更包括使用剩餘計數值與表格中之記憶體位址,用以將系統記憶體中之快取線預取至微處理器之一快取記憶體。
為讓本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下:
100‧‧‧微處理器
102‧‧‧指令解碼器
104‧‧‧暫存器檔案
106‧‧‧延伸計數暫存器
108‧‧‧初始預取表項目位址
114‧‧‧位址產生器
116、118、146‧‧‧多工器
122‧‧‧預取表項目位址暫存器
124‧‧‧重複預取計數暫存器
126‧‧‧加法器
128‧‧‧遞減器
144‧‧‧控制邏輯電路
154‧‧‧快取記憶體
166‧‧‧回應緩衝器
172‧‧‧匯流排介面單元
186‧‧‧第一預取表項目位址
188‧‧‧重複預取計數值
194‧‧‧預取位址
197‧‧‧第二預取表項目位址
400‧‧‧重複預取指令
404、504‧‧‧運算碼欄位
406‧‧‧ModR/M位元組
500、900‧‧‧重複預取間接指令
508‧‧‧位址運算元
600‧‧‧預取表
602‧‧‧預取位址
604‧‧‧快取線
896‧‧‧延伸來源索引暫存器
899‧‧‧偏移暫存器
902‧‧‧偏移量
1004‧‧‧其他資料
第1圖係為本發明實施例之微處理器的方塊圖;第2圖係為習知技術之奔騰Ⅲ預取指令的方塊圖;第3圖係為習知技術之奔騰Ⅲ字串指令的方塊圖;第4圖係為習知技術之重複預取指令的方塊圖;第5圖係為本發明實施例之重複預取間接指令的方塊圖;第6圖係為本發明實施例之預取表的方塊圖;第7圖係為第1圖中之微處理器執行第5圖中之重複預取間接指令的操作流程圖;第8圖係為本發明另一實施例之微處理器的方塊圖;第9圖係為本發明另一實施例之重複預取間接指令的方塊圖;第10圖係為本發明另一實施例之預取表的方塊圖;第11圖係為第8圖中之微處理器執行第9圖中之重複預取間接指令的操作流程圖。
為了解決上述問題,本發明提供一新的預取指令使得程式設計者能夠在記憶體中建立一預取表(如第6圖之預取表600與第10圖之預取表1000),其中預取表600中之各個項目(entry)用以指定欲被預先提取之快取線的預取位址。此外,本發明所提供之新的預取指令可使程式設計者能夠指定欲被處理器所預先提取之複數條非連續快取線。在本發明中,係以重複預取間接(REP PREFETCH INDIRECT)指令500(參考第5圖)來表示上述新的預取指令。
第1圖係為本發明實施例之微處理器100的方塊圖,此微處理器100能夠執行一重複預取間接指令。由於微處理器100在許多方面與美國專利第6,832,296號之第1圖中的微處理器100(之後簡稱“習知微處理器”)類似,因此本文係以引用方式將“習知微處理器”併入本文中。但值得注意的是,本發明所揭露之微處理器100具有額外特徵一能夠執行重複預取間接指令。以下列出本發明之微處理器100與習知微處理器的差別:
第一,微處理器100以預取表項目位址(Prefetch Table Entry Address;PTEA)暫存器122取代習知微處理器中之重複預取位址(Repeat Prefetch Address;RPA)暫存器122,用以儲存目前所使用之預取表600的項目的位址。因此,預取表項目位址暫存器122提供一第一預取表項目位址186至多工器(MUX)146,而習知微處理器則提供一預取位址。
第二,多工器146被改造用以額外接收來自快取記
憶體154之預取位址194。
第三,多工器116被改造用以額外接收來自快取記憶體154之第二預取表項目位址197。
第四,加法器126被改造用以將第一預取表項目位址186增加一個記憶體位址大小(例如4位元組),而不是增加一條快取線大小。
第2圖係為習知技術之奔騰Ⅲ預取指令的方塊圖。
第3圖係為習知技術之奔騰Ⅲ字串指令的方塊圖。
第4圖係為習知技術之重複預取指令的方塊圖。
第5圖係為本發明實施例之重複預取間接指令REP PREFETCH INDIRECT)500的方塊圖500的格式。重複預取間接指令500在許多方面與第4圖之習知微處理器的重複預取指令400類似。以下將列出本發明之重複預取間接指令500與重複預取指令400的差別之處。重複預取間接指令500之運算碼欄位504的值不同於重複預取指令400之運算碼欄位404的值,使得指令解碼器102能夠區分這兩個指令。在另一實施例中,重複預取間接指令500與重複預取指令400共用相同的運算碼的值,不過重複預取間接指令500包含一額外的前置碼用以與重複預取指令400區別。此外,重複預取間接指令500之位址運算元(address operands)508係用來指定初始之預取表600項目的記憶體位址,而不是指定初始之預取位址。
第6圖係為本發明實施例之預取表REP PREFETCH INDIRECT)600的方塊圖。預取表600包含複數個項目,各個項目包含一預取位址602用以指向記憶體中之快取線604,換言
之,預取位址602係為快取線604之記憶體位址。如第6圖所示,預取表600中的預取位址602係彼此相鄰。因此,第1圖中之加法器126將第一預取表項目位址186增加一個記憶體位址大小,用以指向預取表600中的下一個預取位址602。在另一實施例中(參考第8~11圖),預取表600之預取位址602是非連續(non-sequential)的。
請參考第7圖,第7圖係為第1圖中之微處理器100執行重複預取間接指令500的操作流程圖。流程從步驟702開始。
在步驟702中,指令解碼器102將重複預取間接指令500解碼。流程前進至步驟704。
在步驟704中,位址產生器114產生由重複預取間接指令500中之ModR/M位元組406與位址運算元508所指定的有效位址(初始預取表項目位址)108。初始預取表項目位址108代表預取表600中之第一個項目的記憶體位址。流程前進至步驟706。
在步驟706中,控制邏輯電路144將延伸計數(Extended Count;ECX)暫存器106中之計數值(即欲被預先提取之快取線的數量)複製到重複預取計數(Repeat Prefetch Count;RPC)暫存器124中。此外,位址產生器114將初始預取表項目位址108載入至預取表項目位址暫存器122。計數值係藉由位於重複預取間接指令500之前的一指令載入至延伸計數暫存器106。流程前進至步驟708。
在步驟708中,微處理器100從預取表600中提取由
第一預取表項目位址186所指定之預取位址602。值得注意的是,預取位址602可能已經位於快取記憶體154中。仔細而言,在本實施例中,當微處理器100從預取表600中提取第一個預取位址602時,與第一預取表項目位址186有關的整條快取線會被提取。因此,在提取初始之預取表600的項目中之初始的預取位址602之後,預取表600中的後幾個預取位址602可能會位於快取記憶體154中,而此現象會隨著預取動作之執行而持續。若預取位址602尚未位於快取記憶體154中,則匯流排介面單元172會將系統記憶體中之預取位址602提取至回應緩衝器(response buffer)166,用以依序地將預取位址602引退至快取記憶體154中。在另一實施例中,為了避免使用預取位址602來破壞(pollute)快取記憶體154,預取位址602並沒有被引退至快取記憶體154。相反地,回應緩衝器166(或其他中間儲存(intermediate storage)位置)將此預取位址602提供至多工器146用以完成步驟712到步驟716的動作,當完成步驟712到步驟716後再將預取位址602丟棄(discard)。流程前進至步驟712。
在步驟712中,快取記憶體154查找(look up)於步驟708中所提取之預取位址602,其中快取記憶體154(或回應緩衝器166或其他中間儲存位置)將此預取位址602作為預取位址194用以提供至多工器146。流程前進至判斷步驟714。
在判斷步驟714中,若預取位址194出現於(hits in)快取記憶體154,則流程前進至步驟718。若預取位址194未出現於快取記憶體154,則流程前進至步驟716。
在步驟716中,匯流排介面單元172將系統記憶體
中由預取位址194所指定之快取線604預先提取至回應緩衝器166,回應緩衝器166接著將預先提取之快取線604寫入至快取記憶體154。流程前進至步驟718。
在步驟718中,控制邏輯電路144控制遞減器(decrementer)128與多工器118用以將重複預取計數暫存器124中之數值遞減1。此外,控制邏輯電路144控制加法器126與多工器116用以將預取表項目位址暫存器122中之數值增加一個記憶體位址大小。流程前進至判斷步驟722。
在判斷步驟722中,控制邏輯電路144判斷重複預取計數值188是否為零。若為零,則流程結束;若不為零,則流程回到步驟708用以完成預取下一條快取線604之動作。
雖然第7圖中並未描述關於本發明之微處理器100的其他實施例,但這些實施例以下所描述的特徵,例如在轉譯查詢緩衝器(Translation Lookaside Buffer;TLB)發生遺漏(miss)時停止預取動作,並且在失去仲裁(arbitration)或未到達自由請求緩衝器(free request buffer)之次臨界數量時重新執行預取動作。
請參考第8圖,第8圖係為本發明中微處理器100之另一實施例的方塊圖,此微處理器100能夠執行一重複預取間接指令900。第8圖之微處理器100在許多方面與第1圖之微處理器100類似。然而,第8圖之微處理器100係用以執行第9圖中之重複預取間接指令900。重複預取間接指令900包含一偏移量(offset value)902用以指定各個預取表600的項目之間的距離。偏移量902有助於程式設計者在記憶體中建立如第10圖所
示之預取表1000,其中第10圖中之預取表1000具有非連續位置之預取位址602,相關細節將在以下做進一步說明。
請參考回第8圖,相較於第1圖之微處理器100,第8圖之微處理器100包括一偏移暫存器(offset register)899。偏移暫存器899從暫存器檔案(register file)104之延伸來源索引(Extended Source Index;ESI)暫存器896中接收第9圖之偏移量902,並且將所接收之偏移量902提供至加法器126,使得加法器126將預取表項目位址暫存器122中之數值增加一個偏移量902,以便提供下一個預取表項目位址至預取表項目位址暫存器122。偏移量902係藉由位於重複預取間接指令900之前的一指令載入至延伸來源索引暫存器896。
請參考第11圖,第11圖係為第8圖中之微處理器100執行重複預取間接指令900的操作流程圖。第11圖與第7圖之操作流程圖類似,以下將列出兩者之間的差別。
步驟1106取代了步驟706,並且在步驟1106中,控制邏輯電路144將延伸計數暫存器106中之計數值(即欲被預先提取之快取線的數量)複製到重複預取計數暫存器124中。此外,位址產生器114將初始預取表項目位址108載入至預取表項目位址暫存器122。控制邏輯電路144將偏移量902載入至偏移暫存器899。
步驟1118取代了步驟718,並且在步驟1118中,控制邏輯電路144控制遞減器128與多工器118用以將重複預取計數暫存器124中之數值遞減1。此外,控制邏輯電路144控制加法器126與多工器116用以將預取表項目位址暫存器122中之數
值增加一個偏移量902,而不是增加一個記憶體位址大小。
請參考第10圖,第10圖係為本發明中預取表之REP PREFETCH INDIRECT)之另一實施例的方塊圖。假設預取表1000係為一具有複數區間(buckets)或資料結構之開放式雜湊表(open hash table)。各個區間包含兩個欄位,分別為8位元組雜湊值(對應至第10圖中之“其他資料1004”)與4位元組記憶體位址(對應至第10圖中之“預取位址602”),其中該4位元組記憶體位址係為一雜湊物件指標(hash object pointer)。
雜湊表:
區間[0]:
雜湊值:8位元組
雜湊物件指標:4位元組
區間[1]:
雜湊值:8位元組
雜湊物件指標:4位元組
區間[2]:
雜湊值:8位元組
雜湊物件指標:4位元組
在本實施例中,可利用延伸來源索引暫存器896中之數值8來執行重複預取間接指令900,並且重複預取間接指令900會略過8位元組雜湊值欄位用以提取雜湊物件指標作為預取位址602。現有的程式中普遍具有此類型之資料結構(即使數值大小會變動)。使程式設計者能夠指定偏移量902的優點有助於程式設計者或編譯器使用現有的資料結構(例如雜湊表一預
取表1000),而不需要另外為重複預取間接指令900建立一預取表。
在另一實施例中,程式設計者可在另一個通用暫存器中指定一延遲值(delay value)。若延遲值非為零(non-zero),則微處理器100在執行重複預取間接指令900時會延遲各個預取一快取線604之疊代(iteration),其中延遲量係等於被指定在延遲值中之指令的數量。
本發明雖以各種實施例揭露如上,然其僅為範例參考而非用以限定本發明的範圍,任何熟習此項技藝者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾。舉例而言,可使用軟體來實現本發明所述之裝置與方法的功能、構造、模組化、模擬、描述及/或測試。此目的可透過使用一般程式語言(例如C、C++)、硬體描述語言(包括Verilog或VHDL硬體描述語言等等)、或其他可用的程式來實現。該軟體可被設置在任何電腦可用的媒體,例如半導體、磁碟、光碟(例如CD-ROM、DVD-ROM等等)中。本發明實施例中所述之裝置與方法可被包括在一半導體智慧財產權核心(semiconductor intellectual property core),例如以硬體描述語言(HDL)實現之微處理器核心中,並被轉換為硬體型態的積體電路產品。此外,本發明所描述之裝置與方法可透過結合硬體與軟體的方式來實現。因此,本發明不應該被本文中之任一實施例所限定,而當視後附之申請專利範圍與其等效物所界定者為準。特別是,本發明係實現於一般用途電腦之微處理器裝置中。最後,任何熟知技藝者,在不脫離本發明之精神和範圍內,當可作些
許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
Claims (15)
- 一種微處理器,包括:一指令解碼器,用以解碼一指令集中之複數指令,其中上述指令集包括一重複預取間接指令;以及上述重複預取間接指令,包括:複數位址運算元,上述微處理器使用上述位址運算元來計算一預取表中之一第一項目之一位址,其中上述預取表具有複數項目,並且上述預取表中之各個項目包括一預取位址;一計數值,用以指定欲被預取之複數快取線的數量,其中上述快取線之每一者的記憶體位址係由上述項目中之一者中的上述預取位址所指定;以及一延遲值,其中上述微處理器在執行上述重複預取間接指令時係以一延遲量來延遲各個預取上述快取線中之一者的疊代,其中上述延遲量係等於上述延遲值中所指定之一指令數量。
- 如申請專利範圍第1項所述之微處理器,其中上述預取表中之上述項目係位於複數非連續記憶體位置。
- 如申請專利範圍第1項所述之微處理器,其中上述重複預取間接指令更包括:一偏移量,用以指定上述預取表中之各個項目之間的一距離。
- 如申請專利範圍第3項所述之微處理器,其中上述偏移量係藉由位於上述重複預取間接指令之前的一指令載入至一通 用暫存器。
- 一種預取資料至微處理器的方法,用以預取資料至一微處理器,預取資料至微處理器的方法包括:解碼一重複預取間接指令;以及以回應上述解碼上述重複預取間接指令且如上述重複預取間接指令之指示,預取複數快取線至上述微處理器;其中上述重複預取間接指令包括:複數位址運算元用以計算具有複數項目之一預取表之一第一項目之一位址,其中上述預取表具有複數項目,並且上述預取表中之各個項目包括一預取位址;一計數值,用以指定欲被預取之上述快取線的數量至上述微處理器內,其中上述快取線之每一者的記憶體位址係由上述預取表中之上述項目中之一者中的上述預取位址所指定;以及一延遲值,其中上述預取係以一延遲量來延遲各個預取上述快取線中之一者的疊代,其中上述延遲量係等於上述延遲值中所指定之一指令數量。
- 如申請專利範圍第5項所述之預取資料至微處理器的方法,其中上述重複預取間接指令更包括:一運算碼,上述運算碼與一奔騰Ⅲ預取指令運算碼不同。
- 如申請專利範圍第6項所述之預取資料至微處理器的方法,其中上述重複預取間接指令更包括:一奔騰Ⅲ重複字串指令前置碼,上述奔騰Ⅲ重複字串指令前置碼係位於上述運算碼之前。
- 如申請專利範圍第5項所述之預取資料至微處理器的方法,其中上述重複預取間接指令更包括:一奔騰Ⅲ預取指令運算碼;一奔騰Ⅲ重複字串指令前置碼;以及一第二前置碼,其中上述奔騰Ⅲ重複字串指令前置碼與第二前置碼係位於上述運算碼之前。
- 如申請專利範圍第5項所述之預取資料至微處理器的方法,其中上述重複預取間接指令更包括:一偏移量,用以指定上述預取表中之各個項目之間的一距離。
- 如申請專利範圍第5項所述之預取資料至微處理器的方法,其中上述延遲值係藉由位於上述重複預取間接指令之前的一指令載入至一通用暫存器。
- 一種微處理器,上述微處理器係位於具有一系統記憶體之一系統中,上述微處理器包括:一指令解碼器,用以解碼一預取指令,上述預取指令指定一計數值與用以指向一表格之一位址,其中上述計數值表示欲從上述系統記憶體中預取之複數快取線的數量,並且上述表格用以儲存上述快取線之複數記憶體位址;一計數暫存器,用以儲存一剩餘計數值,上述剩餘計數值表示欲被預取之上述快取線的一剩餘數量,其中上述計數暫存器一開始即具有被指定在上述預取指令中之上述計數值;一控制邏輯電路,耦接至上述指令解碼器與上述計數暫存 器,上述控制邏輯電路使用上述計數暫存器與從上述表格中所提取之上述記憶體位址,用以控制上述微處理器將上述表格中之上述快取線的上述記憶體位址提取至上述微處理器,並且控制上述微處理器將上述系統記憶體中之上述快取線預取至上述微處理器之一快取記憶體;以及一位址暫存器,用以儲存一項目位址,其中上述項目位址指向正被預取之上述快取線中之一者的上述記憶體位址;其中上述預取指令更指定一延遲值,其中上述控制邏輯電路器係以一延遲量來延遲預取上述快取線中之每一者的步驟,其中上述延遲量係等於上述延遲值中所指定之一指令數量。
- 如申請專利範圍第11項所述之微處理器,其中上述控制邏輯電路一開始即將上述預取指令所指定之上述位址載入至上述位址暫存器。
- 如申請專利範圍第11項所述之微處理器,其中上述控制邏輯電路根據預取上述快取線中之每一者來更新位於上述位址暫存器中之上述項目位址。
- 如申請專利範圍第13項所述之微處理器,更包括:一加法器,耦接至上述位址暫存器,用以根據預取上述快取線中之每一者來增加一加數至位址暫存器中之上述項目位址以便產生一總合,其中上述控制邏輯電路使用上述總合來更新上述位址暫存器。
- 如申請專利範圍第14項所述之微處理器,其中上述加數係為一記憶體位址之大小。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US23208409P | 2009-08-07 | 2009-08-07 | |
US12/579,931 US8364902B2 (en) | 2009-08-07 | 2009-10-15 | Microprocessor with repeat prefetch indirect instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201419145A TW201419145A (zh) | 2014-05-16 |
TWI489387B true TWI489387B (zh) | 2015-06-21 |
Family
ID=43535669
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099125572A TWI423128B (zh) | 2009-08-07 | 2010-08-02 | 微處理器以及預取資料至微處理器的方法 |
TW102143390A TWI489387B (zh) | 2009-08-07 | 2010-08-02 | 微處理器以及預取資料至微處理器的方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099125572A TWI423128B (zh) | 2009-08-07 | 2010-08-02 | 微處理器以及預取資料至微處理器的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8364902B2 (zh) |
CN (1) | CN103793202B (zh) |
TW (2) | TWI423128B (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US9916257B2 (en) * | 2011-07-26 | 2018-03-13 | Intel Corporation | Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory |
US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US9792120B2 (en) * | 2013-03-05 | 2017-10-17 | International Business Machines Corporation | Anticipated prefetching for a parent core in a multi-core chip |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
US9600286B2 (en) | 2014-06-30 | 2017-03-21 | International Business Machines Corporation | Latent modification instruction for transactional execution |
US9336047B2 (en) | 2014-06-30 | 2016-05-10 | International Business Machines Corporation | Prefetching of discontiguous storage locations in anticipation of transactional execution |
US9448939B2 (en) | 2014-06-30 | 2016-09-20 | International Business Machines Corporation | Collecting memory operand access characteristics during transactional execution |
US9348643B2 (en) | 2014-06-30 | 2016-05-24 | International Business Machines Corporation | Prefetching of discontiguous storage locations as part of transactional execution |
US9710271B2 (en) | 2014-06-30 | 2017-07-18 | International Business Machines Corporation | Collecting transactional execution characteristics during transactional execution |
US9678749B2 (en) * | 2014-12-22 | 2017-06-13 | Intel Corporation | Instruction and logic for shift-sum multiplier |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
GB2543302B (en) * | 2015-10-14 | 2018-03-21 | Advanced Risc Mach Ltd | Vector load instruction |
CN112084122B (zh) * | 2019-09-30 | 2021-09-28 | 成都海光微电子技术有限公司 | 计算机存储器中对区域预取器的置信度和侵略性控制 |
US11567776B2 (en) | 2020-11-03 | 2023-01-31 | Centaur Technology, Inc. | Branch density detection for prefetcher |
US11740906B2 (en) * | 2021-02-25 | 2023-08-29 | Huawei Technologies Co., Ltd. | Methods and systems for nested stream prefetching for general purpose central processing units |
US11797307B2 (en) * | 2021-06-23 | 2023-10-24 | Arm Limited | Range prefetch instruction |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5958040A (en) * | 1997-05-28 | 1999-09-28 | Digital Equipment Corporation | Adaptive stream buffers |
US6026478A (en) * | 1997-08-01 | 2000-02-15 | Micron Technology, Inc. | Split embedded DRAM processor |
US6119203A (en) * | 1998-08-03 | 2000-09-12 | Motorola, Inc. | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system |
US6490658B1 (en) * | 1997-06-23 | 2002-12-03 | Sun Microsystems, Inc. | Data prefetch technique using prefetch cache, micro-TLB, and history file |
US20030191900A1 (en) * | 2002-04-09 | 2003-10-09 | Ip-First, Llc. | Microprocessor with repeat prefetch instruction |
TWI227402B (en) * | 2002-06-18 | 2005-02-01 | Ip First Llc | Microprocessor and method for performing selective prefetch based on bus activity level |
US20090198948A1 (en) * | 2008-02-01 | 2009-08-06 | Arimilli Ravi K | Techniques for Data Prefetching Using Indirect Addressing |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5542059A (en) * | 1994-01-11 | 1996-07-30 | Exponential Technology, Inc. | Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order |
US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US7194582B1 (en) * | 2003-05-30 | 2007-03-20 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US7500087B2 (en) * | 2004-03-09 | 2009-03-03 | Intel Corporation | Synchronization of parallel processes using speculative execution of synchronization instructions |
US20060136696A1 (en) * | 2004-12-16 | 2006-06-22 | Grayson Brian C | Method and apparatus for address translation |
US7337293B2 (en) * | 2005-02-09 | 2008-02-26 | International Business Machines Corporation | Streaming reads for early processing in a cascaded memory subsystem with buffered memory devices |
US7533242B1 (en) * | 2005-10-31 | 2009-05-12 | Sun Microsystems, Inc. | Prefetch hardware efficiency via prefetch hint instructions |
WO2008110874A1 (en) * | 2007-03-13 | 2008-09-18 | Freescale Semiconductor, Inc. | Device and method for generating cache user initiated pre-fetch requests |
US7949830B2 (en) * | 2007-12-10 | 2011-05-24 | International Business Machines Corporation | System and method for handling data requests |
-
2009
- 2009-10-15 US US12/579,931 patent/US8364902B2/en active Active
-
2010
- 2010-07-30 CN CN201410059110.5A patent/CN103793202B/zh active Active
- 2010-08-02 TW TW099125572A patent/TWI423128B/zh active
- 2010-08-02 TW TW102143390A patent/TWI489387B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5958040A (en) * | 1997-05-28 | 1999-09-28 | Digital Equipment Corporation | Adaptive stream buffers |
US6490658B1 (en) * | 1997-06-23 | 2002-12-03 | Sun Microsystems, Inc. | Data prefetch technique using prefetch cache, micro-TLB, and history file |
US6026478A (en) * | 1997-08-01 | 2000-02-15 | Micron Technology, Inc. | Split embedded DRAM processor |
US6119203A (en) * | 1998-08-03 | 2000-09-12 | Motorola, Inc. | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system |
US20030191900A1 (en) * | 2002-04-09 | 2003-10-09 | Ip-First, Llc. | Microprocessor with repeat prefetch instruction |
TWI227402B (en) * | 2002-06-18 | 2005-02-01 | Ip First Llc | Microprocessor and method for performing selective prefetch based on bus activity level |
US20090198948A1 (en) * | 2008-02-01 | 2009-08-06 | Arimilli Ravi K | Techniques for Data Prefetching Using Indirect Addressing |
Also Published As
Publication number | Publication date |
---|---|
TW201106264A (en) | 2011-02-16 |
TWI423128B (zh) | 2014-01-11 |
US20110035551A1 (en) | 2011-02-10 |
CN103793202B (zh) | 2016-08-31 |
US8364902B2 (en) | 2013-01-29 |
CN103793202A (zh) | 2014-05-14 |
TW201419145A (zh) | 2014-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI489387B (zh) | 微處理器以及預取資料至微處理器的方法 | |
JP7284199B2 (ja) | アルゴリズム整合、機能無効化、または性能制限による後方互換性 | |
TWI531967B (zh) | 微處理器及其執行之方法 | |
TWI428820B (zh) | 執行快速重複載入資料串操作的微處理器 | |
TWI788774B (zh) | 用於記憶體損毀偵測的硬體設備和方法 | |
TWI451334B (zh) | 微處理器及縮短尋訪時間之方法 | |
TWI639952B (zh) | 用於建置及維持在亂序硬體軟體協同設計處理器中具有堆疊同步指令的述詞值之堆疊的方法、設備與非暫態機器可讀媒體 | |
US6321326B1 (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
TWI514275B (zh) | 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法 | |
CN107111550B (zh) | 用于隐藏程序提取的页遗漏转换时延的方法和装置 | |
US20060179266A1 (en) | System and method for generating effective address | |
JP2018060491A (ja) | ローカル分岐デコーダを有するマルチ発行マイクロコードユニットを備えたパイプラインプロセッサ | |
KR20010075258A (ko) | 간접 분기 목적지 산출 방법 | |
JP6687232B2 (ja) | データ投機実行のためのシステム、装置および方法 | |
US6363471B1 (en) | Mechanism for handling 16-bit addressing in a processor | |
US7882325B2 (en) | Method and apparatus for a double width load using a single width load port | |
US20180024930A1 (en) | Processing data based on cache residency | |
JP2021051724A (ja) | デュアル空間パターンプリフェッチャについての装置、方法、およびシステム | |
TWI257572B (en) | Performing repeat string operations | |
JP2017538215A (ja) | 逆分離演算を実行するための命令及びロジック | |
US7984272B2 (en) | Design structure for single hot forward interconnect scheme for delayed execution pipelines | |
CN101882063B (zh) | 微处理器以及预取数据至微处理器的方法 | |
US11604873B1 (en) | Noisy instructions for side-channel attack mitigation | |
Chai et al. | Predictable bytecode cache with prefetch mechanism for a java processor | |
Benham et al. | The IBM PowerPC 970FX, aka G5 Processor |