TWI511077B - 下一指令類型欄位 - Google Patents
下一指令類型欄位 Download PDFInfo
- Publication number
- TWI511077B TWI511077B TW100133041A TW100133041A TWI511077B TW I511077 B TWI511077 B TW I511077B TW 100133041 A TW100133041 A TW 100133041A TW 100133041 A TW100133041 A TW 100133041A TW I511077 B TWI511077 B TW I511077B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- program
- processing
- type field
- current
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 3
- 206010029897 Obsessive thoughts Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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
-
- 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Image Processing (AREA)
- Variable-Direction Aerials And Aerial Arrays (AREA)
Description
本發明係關於資料處理系統之領域。更特定言之,本發明係關於如何在資料處理系統中指定欲執行的下一指令。
已知提供用以執行程式指令序列的資料處理系統,程式指令序列來自用於執行的程式指令線程(thread)。在此種系統中,可使用指令預先擷取(prefetching)電路系統與分支(branch)預測電路系統,以預先擷取欲執行的指令,並在遭遇分支時預測執行流向,使得在分支指令被判定之前,可提供欲執行的新指令給處理管線。這些措施有效的使深處理管線被以高效率支持並利用。然而,就電路面積、電路複雜度、功率消耗以及花費而言,相關於這些機制的成本日漸顯著。
亦已知提供同時執行多重程式線程的資料處理系統。此種系統的範例為繪圖處理單元,其中(例如)可平行執行一百個以上的程式線程,每一個程式線程對應至正處理之繪圖影像的不同部分。對於此種系統而言,用於指令預先擷取與分支預測的已知機制表現不佳。在尋求對大量個別線程預先擷取指令以及對此大量程式線程預測分支行為時,相關於這些機制的成本是不具優勢的。然而,單純地等待直到正執行之程式指令完成,且隨後擷取下一指令,帶來顯著的預先擷取潛時(latency)。隨著執行大量平行線程之系統的更廣泛地被使用,且除了繪圖處理之外被應用至更為一般用途的處理(其中預先擷取潛時變得更明顯),此缺點亦變得更為顯著。
本發明的第一態樣提供用於回應一或多個程式指令之線程而處理資料的裝置,該裝置包含:資料處理電路系統,該資料處理電路系統經組態以回應於在程式指令之線程中的當前程式指令,而執行由該當前程式指令所指定的當前資料處理作業,其中該當前程式指令包含下一指令類型欄位,該下一指令類型欄位指定在該線程中欲執行之下一程式指令的類型。
本技術提供在當前程式指令中的下一指令類型欄位。此與本發明領域中的技術成見背道而行,該技術成見尋求減少程式指令的尺寸。考慮此技術成見,將認知到在當前程式指令中提供下一指令類型欄位,以及提供下一程式指令自身,代表程式中的冗餘(redundancy),因為下一程式指令自身亦將指定下一程式指令的類型。然而,本技術認知到,可利用當前程式指令中之下一指令類型欄位的額外程式尺寸成本,來提供數個實際優點。
資料處理電路系統可在下一指令類型欄位的控制之下,執行一或多個處理作業。此允許當前程式指令起始相關於下一指令的處理作業,否則當前程式指令將需要等到下一程式指令(例如)被擷取及解碼。
在一些具體實施例中,回應於下一指令類型欄位而被執行的處理部分,可在從儲存在此下一程式指令中的記憶體擷取了所有下一程式指令之前(或甚至開始擷取之前)被進行。
本技術在包含複數個處理管線的系統之領域中具有特定效用。在複數個處理管線可全為相同的同時,在許多具體實施例中,將提供複數個不同類型的處理管線,其中每一不同類型的處理管線經組態以執行不同一類型(或多類型)的處理作業。作為範例,複數個處理管線可包含下列之一或多者:算術管線、載入/儲存管線以及變形管線(texturing pipeline)。
在包含複數個處理管線的系統的背景中,在下一指令類型欄位的控制之下執行的下一程式指令的處理部分,可包含選擇下一處理管線,下一程式指令係導向下一處理管線而執行。因此(例如),下一指令類型欄位可用以控制排程(scheduling)電路系統,排程電路系統將下一程式指令排程至適當的下一處理管線。作為範例,算術指令可被導向算術管線,載入/儲存指令可被導向載入/儲存管線且變形指令可被導向變形管線。
在由當前處理管線執行當前程式指令的期間,下一處理管線(下一指令類型欄位將下一程式指令導向下一處理管線),可為與當前處理管線相同的處理管線,或為與當前處理管線不同的處理管線。
每一處理管線可具有相關的佇列電路系統,佇列電路系統被提供以儲存欲由此管線執行的程式指令佇列。在此種系統中,當前處理管線可由下一指令類型欄位控制,以觸發將下一程式指令加入與下一指令類型欄位匹配之佇列。
將下一程式指令加入此種佇列,可方便地回應於當前程式指令被從當前處理管線拉出而執行,據此,只要一個程式指令拉出,用於此線程的另一程式指令即被加入至欲執行的指令佇列。因為來自大量不同的線程的程式指令將同時在不同管線中的不同管線階段經受處理,藉由等待直到線程的當前程式指令在此線程的下一程式指令被放入執行佇列之前被拉出,總體資料處理量(throughput)並未顯著地減少。因為來自不同線程的程式指令將已在硬體中被執行,保持了高層級的硬體利用率與效率。
可由下一指令類型欄位控制之處理的部份的另一範例,包含將相關於下一程式指令的一或多個狀態變數,發送(routing)至下一處理管線。以此方式,若線程在管線之間轉移,則憑藉由當前程式指令中的下一指令類型欄位所提供之較早的轉移指示,相關於此線程的狀態變數將更快速地在新管線中成為可用。
可由下一指令類型欄位控制之處理的部份的其他範例,包含將下一程式指令之預先解碼(pre-decoding)、下一程式指令之預先擷取(pre-fetching)以及下一程式指令之分派(dispatching)。
當前程式指令可具有相關的當前程式計數器值。從此當前程式計數器值的最低有效位元位置延伸的此當前程式計數器值的部分,可用以儲存指示下一指令類型欄位的值。在具有相對大之經對準程式指令的系統中,此程式計數器之低次序部分通常未被使用。
在此種系統中,程式計數器值可由邏輯OR作業導出,該邏輯OR作業結合在儲存當前程式指令之記憶體中的記憶體位址,以及對準記憶體位址之最低有效位元端的下一指令類型欄位。
將認知到,在可於執行單一的程式指令線程的系統中使用本技術的同時,在執行複數個線程時本技術特別地有用。
在下一指令類型欄位被定位於程式指令中的固定且經預定位置中時,本技術的實施被簡化。
程式指令的線程將不會無限地執行,且因此在下一指令類型欄位的一個值,為指示線程由當前指令終止的終止類型之具體實施例中,可方便地支持在線程終止時欲執行之對作業的控制。
在本發明領域中具有通常知識者將認知到,當前程式指令的一個類型可為非直接分支作業。對於此種非直接分支指令,指向儲存下一程式指令之記憶體位址的指標,係由下一非直接分支指令自身計算出。在下一程式指令的類型可為已知並編碼在非直接分支指令的下一指令類型欄位中的同時,可藉由結合與下一指令類型欄位計算出的位址,形成用於非直接分支指令的目標位址,藉以允許基於由非直接分支指令計算出以作為目標位址的指標,再利用用於基於程式計數器值控制處理部分的機制。
如前述,下一指令類型欄位與下一程式指令一起表示存在於線程的程式指令中之一定程度的冗餘資訊。可藉由偵測在下一指令類型欄位與下一程式指令之間的任何不匹配,來利用此冗餘,以產生指示這些項目有至少一者為損壞的異常(exception)。以此方式,可達成對於指令之資料損壞之一定程度的保護。
在下一指令類型欄位的控制之下執行的處理,通常將在下一程式指令之解碼發生之前被執行。因此,下一指令類型欄位可提供一種方式來至少部分地解決潛時,否則將存在相關於需等待直到下一程式指令的完整擷取、發出與解碼完成的潛時。
將認知到,本技術大體上係應用至資料處理裝置的領域,諸如一般目的處理器、數位訊號處理器與類似者。然而,本技術特別地適合其中處理裝置包含繪圖處理單元,且一或多個線程包含複數個繪圖處理線程的系統。這些高度平行之多重線程系統係不適合傳統的指令預先擷取機制與分支預測機制,並可從使用當前程式指令中的下一指令類型欄位獲取顯著的利益。
本發明之另一態樣提供用於回應程式指令的一或多個線程而處理資料的裝置,該裝置包含:資料處理構件,用於執行當前資料處理作業,當前資料處理作業由在程式指令之線程中的當前程式指令指定,其中該當前程式指令包含下一指令類型欄位,下一指令類型欄位指定在該線程中欲執行之下一程式指令的類型。
本發明之另一態樣提供回應程式指令的一或多個線程而處理資料的方法,該方法包含以下步驟:回應於在程式指令之線程中的當前程式指令,執行由該當前程式指令指定的當前資料處理作業,其中該當前程式指令包含下一指令類型欄位,下一指令類型欄位指定在該線程中欲執行的下一程式指令的類型。
本發明之另一態樣提供一種電腦程式產品,電腦程式產品具有非暫態性(non-transitory)形式,並儲存用於控制資料處理裝置以回應於一或多個程式指令之線程而執行資料處理的電腦程式,其中該電腦程式包含程式指令之線程的當前程式指令,該當前程式指令包含下一指令類型欄位,下一指令類型欄位指定在該線程中欲執行的下一程式指令的類型。
本發明之另一態樣提供一種虛擬機器,包含電腦,電腦執行程式以提供如前述用以處理資料的裝置的虛擬機器實施。將認知到,處理裝置的虛擬化變得更實際,且因此本技術的一種實施類型為虛擬機器實施,其中由電腦程式控制一般用途處理器以作為如前述討論之處理裝置。
本發明之上述與其他的目標、特徵與優點,在連同附加圖式,閱讀下文之示例性具體實施例之實施方式之後將為顯然。
第1圖示意圖示說明資料處理系統2,資料處理系統2包含連接至記憶體6的晶片上系統積體電路4。晶片上系統積體電路4包含一般用途處理器核心8、繪圖處理單元10、晶片上系統快取記憶體12與記憶體控制器14,全部經由系統匯流排16鏈結。記憶體控制器14提供對記憶體6的存取。記憶體6儲存由一般用途處理器8執行之一般用途程式18、由繪圖處理單元10執行之繪圖程式20,以及用於以一般用途核心8操縱之一般用途資料22與用於以繪圖處理單元10操縱之繪圖資料24。
繪圖處理單元10包含複數個繪圖處理單元核心26,複數個繪圖處理單元核心26之每一者在每一核心中與在核心之間平行執行多重線程的程式指令。這些繪圖處理單元核心26之每一者可包含多重處理管線,且這些處理管線之每一者可在處理管線的指令管線之不同階段中,執行來自不同程式線程的程式指令。因此,在任意給定時間處,正由繪圖處理單元10執行之程式線程總數可為高,例如超過一百。
繪圖處理單元核心26之每一者具有相關於自身的第一級快取28,以供自身使用。繪圖處理單元核心26亦共享第二級快取30,第二級快取30被提供為繪圖處理單元10的部分。將認知到,為了提升效能,繪圖處理單元10可包含大量的進一步本地快取與資料儲存庫。為了清晰起見,第1圖省略這些細節。
第2圖示意圖示說明可由繪圖處理單元10平行執行的複數個程式指令線程。在此範例中有N+1個程式指令線程平行執行。線程0包含X+1個程式指令。線程0的這些程式指令以迴圈方式被執行,直到滿足終止條件。在本發明領域中具有通常知識者將認知到,通常相同程式的許多實例可被平行執行如個別線程,且每一線程在繪圖影像的不同區域上執行相同的操縱。在此情況下,不同的程式線程可具有相同的定位於程式線程中之程式指令的數量。欲執行之不同的程式線程亦可能使用不同的碼且用於不同的目的。此種線程亦可平行執行。作為範例,可有一組線程執行算術作業(例如頂點旋轉)並有一組線程在像素值上執行變形作業。
第3圖示意圖示說明當前程式指令32。當前程式指令32在第一位元組中包含四位元當前指令類型欄位34與四位元下一指令類型欄位36。當前指令類型欄位34編碼對應至當前指令32的指令類型,例如當前指令32為算術指令、載入/儲存指令、變形指令、分支指令或類似者。下一指令類型欄位36編碼此相同類型資訊,但係關於接續在正執行之程式指令線程中之當前程式指令32之後的下一程式指令。下一指令類型欄位36提升當前程式指令32的尺寸,但提供在下一程式指令被解碼之前,或在下一程式指令被擷取之前,執行相關於此下一程式指令的處理的部分的可能性。此可減少相關於下一程式指令之擷取與解碼的潛時。
第4圖示意圖示說明繪圖處理單元核心26。繪圖處理單元核心26包含複數個處理管線,複數個處理管線包含第一算術與分支管線38、第二算術與分支管線40、載入/儲存與變數管線42與變形管線44。這些不同的處理管線38、40、42、44為不同的類型,並執行不同類型的處理作業。算術與分支管線38、40之每一者執行算術與分支處理作業。載入/儲存與變數管線42執行相關於對記憶體6之載入與儲存的處理作業,以及相關於可為固定或可程式之變數的作業。變形管線44執行變形像素處理作業,變形像素處理作業利用儲存在繪圖資料24中的變形資料,繪圖資料24如為著色器(shader)程式所使用而在正產生之繪圖影像中產生像素值。
處理管線38、40、42、44之每一者具有相關的指令佇列46、48、50、52,處理管線38、40、42、44欲執行之程式指令被放置於指令佇列46、48、50、52中,指令佇列46、48、50、52將指令佇列46、48、50、52的請求排入處理管線38、40、42、44中。排程電路系統54負責將程式指令加入個別的指令佇列46、48、50、52。因此,排程電路系統54選擇欲放入程式指令之適當的處理管線38、40、42、44。變形指令必須放入指令佇列52,載入/儲存指令與相關於變數的指令必須放入指令佇列50。算術指令與分支指令必須放入指令佇列46或48之一者。
在新線程第一次被執行時,此線程的第一指令將需要由排程電路系統54至少部分地解碼,以決定此第一指令需被放入指令佇列46、48、50、52的哪一者中。或者,可在導向新線程中的第一指令的指標的最低有效位元中,編碼此第一指令的類型,如下文進一步描述。一旦程式線程的第一程式指令已被執行並到達適當的處理管線38、40、42、44中的引退階段,則可使用相關於此當前程式指令的下一指令類型欄位36來控制排程電路54,以將下一程式指令排程入與當前程式指令的下一指令類型欄位36匹配(亦即,指定)的指令佇列46、48、50、52。若第一程式指令為算術指令,且第二程式指令亦為算術指令,則下一指令類型欄位36將指示第二程式指令需被放入與第一程式指令相同的指令佇列(此避免需要轉移線程狀態變數(資料)至另一算術管線)。然而,由於在此線程中需要執行不同類型的程式指令,程式線程亦可能在處理管線38、40、42、44之間轉移。因此,線程的第一部分可為算術指令,一或多個變形指令接續算術指令。在程式線程轉移時,如由最後的算術指令中的下一指令類型欄位36所指示,相關於線程的線程狀態變數,亦可從算術與分支管線38、40之相關的一者轉移至變形管線44。線程狀態變數可包含程式計數器值、線程識別符、相關於線程之描述符與類似者。線程轉移至的處理管線44可需要此線程狀態。此線程狀態變數之轉移可由在最後的程式指令中的下一指令類型欄位控制,最後的程式指令在先前處理管線38、40上執行,且因此可於欲在新處理管線44上執行之第一程式指令實際被擷取或解碼之前起始。
將認知到,係基於下一指令類型欄位36執行排程電路系統54的控制。作為使用大型經對準指令的結果,下一指令類型欄位36可藉由使用程式計數器值未使用的最低有效位元,以方便的方式儲存在指令管線38、40、42、44中,程式計數器值係相關於處理管線38、40、42、44中每一階段處的每一程式指令。由於在此範例實施例中的程式指令長度為128位元的倍數,程式計數器PC[3:0]的最低有效四位元將為未使用(程式指令係為128位元對準於記憶體6中),且因此在程式計數器值中的此位元空間可被方便地使用來儲存下一指令類型欄位36,下一指令類型欄位36相關於對應至此程式計數器值PC的當前程式指令。因此,如第4圖所圖示說明,在當前程式指令到達處理管線38、40、42、44終端,且被從管線拉出時,在此階段可將程式計數器值PC[3:0]的最低有效位元部分供應至排程電路系統54,以指示下一程式指令的類型,且因此指示指令佇列46、48、50、52接收此下一指令。
亦可在沿著當前程式指令通過處理管線38、40、42、44進行的其他點使用下一指令類型欄位36,以控制相關於下一程式指令的處理的部分。以此方式控制之下一程式指令的處理的部分,可包含下列之一或多者:預先解碼下一程式指令、預先擷取下一程式指令以及分派下一程式指令。其他對於下一程式指令之處理的部分的可能性,亦將顯然於在本發明中具有通常知識者,且係包含於本技術中。
繪圖處理單元核心26亦包含暫存器檔案56。暫存器檔案56包含由不同處理管線38、40、42、44使用的暫存器,暫存器係用於資料值之管線內部(intra-pipeline)操縱,以及在不同的處理管線38、40、42、44之間的資料值傳輸。
第5圖示意圖示說明相關於當前程式指令32的記憶體位址58(藉由將當前指令長度加入當前指令的記憶體位址,可用以導向下一指令)如何可經受關於記憶體位址58的最低有效四位元與下一指令類型欄位36的邏輯OR作業,以產生程式計數器值60,程式計數器值60與當前程式指令32一同儲存,且隨著當前程式指令32沿著當前程式指令32的處理管線38、40、42、44進行而伴隨當前程式指令32。由於程式指令的長度為128位元的倍數,且以128位元對準在記憶體6中,記憶體位址58的最低有效四位元為未使用,且因此可使用此邏輯OR作業填充下一指令類型欄位36。在當前指令從當前指令的處理管線引退時,此程式計數器值可直接地由排程電路系統54使用,以將下一指令導向適當的指令佇列46、48、50、54,並起始從記憶體系統擷取下一指令。
第6圖為示意圖示說明由排程電路系統54執行之管線選擇的流程圖。在步驟62,程式計數器值60的最低有效四位元被讀取(可在當前程式指令引退時由處理階段38、40、42、44之一者的終端供應程式計數器值60)。在步驟64,由PC[3:0]表示的下一指令類型欄位被與終止碼比較,以決定當前程式指令32是否為程式線程中的最後一個程式指令。若當前程式指令32為程式線程中的最後一個,則對於此線程的管線的選擇終止(此選擇將由用於新線程的個別處理來控制)。若線程不終止,則在步驟66,使用PC[3:0]值選擇下一程式指令欲發至的管線。在此階段第6圖之流程圖繼續描述關於在步驟66放入所選擇管線的下一程式指令,而執行的處理。在步驟68,此程式指令被解碼。隨後在步驟70,將程式計數器增加與經解碼指令的長度匹配的量。同時可執行在第5圖中圖示說明之邏輯OR作業,以將下一指令類型欄位36放入剛產生的經增加程式計數器值的最低有效四位元位置。因此,程式計數器值導向下一程式指令的記憶體位址,而程式計數器的最低有效四位元指示此下一指令的類型。可從來自在第3圖中圖示說明之位元位置的指令,讀取下一指令類型欄位36。對於所有指令,這些位元位置為固定且經預定,且因此被輕易地識別。
步驟72決定在步驟68的指令解碼器是否為非直接分支指令。非直接分支指令(若識別出)在步驟74進行,以將在步驟70產生的程式計數器值替換為由分支指令計算出的程式計數器值,作為對於此分支指令的目標位址,且在最低有效四位元中包含下一指令類型欄位36。在步驟72或步驟74之後,處理在指令從相關處理管線38、40、42、44拉出時進行至步驟62。
第7圖為示意圖示說明當在所解碼的指令與來自先前指令之下一指令類型欄位之間發生了不匹配時,產生異常的流程圖。步驟76解碼指令。步驟78比較從對此指令解碼而導出的指令類型,與由用於此指令的下一指令類型欄位(從線程中的先前指令讀出)指示的指令類型。若由這些不同的機制識別的類型不匹配,則處理進行至步驟80,在步驟80產生指示發生了指令類型不匹配的異常。此對下一指令類型欄位36或程式指令32自身的損壞(或兩者的損壞,而此兩損壞不匹配)提供了一定程度的抗性。若未有不匹配,則步驟82執行指令。
第8圖圖示說明可由下一指令類型欄位36表示之不同的指令類型。存在對應於欲由載入/儲存管線42執行之指令的一種類型。存在欲由變形管線44執行的至少一種指令類型。存在對應於欲由算術與分支管線38、40之一者執行之不同長度的程式指令的多重指令類型。亦存在對應於欲由算術與分支管線38、40之一者執行之非直接分支的指令類型。剩餘之可由下一指令類型欄位36之四位元表示之可能的編碼為未使用。將認知到,下一指令類型欄位36之不同的四位元圖樣,可由任意不同的方式分配,以表示不同類型的指令。
第9圖圖示說明可使用的虛擬機器實施。在較先描述之具體實施例以操作特定處理硬體(支援所關注之技術)的裝置與方法來實施本發明的同時,亦可能提供所謂的硬體裝置的虛擬機器實施。這些虛擬機器實施在主硬體530上運行,主硬體530運行支援虛擬機器程式510的主作業系統520。通常需要大型強力處理器來提供以執行於可接受之速度的虛擬機器實施,但此種做法在某些環境下可被調整,諸如於存在為了相容性或再使用之理由而運行專有於另一處理器的碼時。虛擬機器程式510提供應用程式介面至應用程式500,應用程式介面與由真實硬體提供的應用程式介面相同,真實硬體為由虛擬機器程式510構型的裝置。因此,程式指令(包含於先前描述之記憶體存取的控制)可從應用程式500中執行,使用虛擬機器程式510以構型程式指令與虛擬機器硬體的互動。
雖然在此已參照附加圖式詳細描述了本發明的示例性具體實施例,必須瞭解本發明並不限於彼等精確的具體實施例,必須瞭解本發明並不限於彼等精確的具體實施例,且在本發明領域中具有通常知識者可進行各種改變與修改,而不脫離如附加申請專利範圍所界定之本發明的範圍與精神。
2‧‧‧資料處理系統
4‧‧‧晶片上系統積體電路
6‧‧‧記憶體
8‧‧‧一般用途處理器核心
10‧‧‧繪圖處理單元
12‧‧‧晶片上系統快取記憶體
14‧‧‧記憶體控制器
16‧‧‧系統匯流排
18‧‧‧一般用途程式
20‧‧‧繪圖程式
22‧‧‧一般用途資料
24‧‧‧繪圖資料
26‧‧‧繪圖處理單元核心
28‧‧‧第一級快取
30‧‧‧第二級快取
32‧‧‧當前程式指令
34‧‧‧當前指令類型欄位
36‧‧‧下一指令類型欄位
38‧‧‧第一算術與分支管線
40‧‧‧第二算術與分支管線
42‧‧‧載入/儲存與變數管線
44‧‧‧變形管線
46‧‧‧指令佇列
48‧‧‧指令佇列
50‧‧‧指令佇列
52‧‧‧指令佇列
54‧‧‧排程電路系統
56‧‧‧暫存器檔案
58‧‧‧記憶體位址
60‧‧‧程式計數器值
62-74‧‧‧步驟
76-82‧‧‧步驟
500‧‧‧應用程式
510‧‧‧虛擬機器程式
520‧‧‧主作業系統
530‧‧‧主硬體
第1圖示意圖示說明包含繪圖處理單元的處理裝置,繪圖處理單元利用在當前程式指令中的下一指令類型欄位;
第2圖示意圖示說明平行執行的多重程式線程;
第3圖示意圖示說明在當前程式指令中的下一指令類型欄位;
第4圖示意圖示說明繪圖處理單元核心;
第5圖示意圖示說明結合儲存當前程式指令之記憶體位址與下一指令類型欄位,以產生程式計數器值;
第6圖為示意圖示說明選擇處理管線的流程圖;
第7圖為示意圖示說明相關於不匹配異常產生之處理的流程圖;
第8圖圖示用以代表不同種類的下一程式指令之不同種類的下一指令類型欄位的範例;以及
第9圖示意圖示說明用於提供本技術之虛擬機器類型實施的裝置。
32...當前程式指令
34...當前指令類型欄位
36...下一指令類型欄位
Claims (32)
- 一種用於回應一或多個程式指令之線程而處理資料的裝置,該裝置包含:資料處理電路系統,該資料處理電路系統經組態以回應於在一程式指令之線程中的一當前程式指令,而執行由該當前程式指令所指定的一當前資料處理作業,其中該當前程式指令包含一下一指令類型欄位,該下一指令類型欄位指定在該線程中欲執行之一下一程式指令的一類型。
- 如請求項第1項所述之裝置,其中該資料處理電路系統在該下一指令類型欄位的控制之下執行一或多個處理作業,該一或多個處理作業形成該下一程式指令的一處理部分。
- 如請求項第2項所述之裝置,其中係於已從儲存該下一程式指令之一記憶體擷取所有該下一程式指令之前,執行該處理部分。
- 如請求項第2項所述之裝置,其中該處理電路系統包含複數個處理管線。
- 如請求項第4項所述之裝置,其中該複數個處理管線包含複數個不同種類的處理管線,該等不同種類的處理管線之每一者經組態以執行一不同種類的處理作業。
- 如請求項第4項所述之裝置,其中該複數個處理管線包含下列之一或多者:一算數管線,該算數管線經組態以執行算數處理作業;一載入/儲存管線,該載入/儲存管線經組態以執行載入/儲存處理作業;以及一變形管線,該變形管線經組態以執行像素變形處理作業。
- 如請求項第4項所述之裝置,其中該下一程式指令的該處理部分包含從該複數個處理管線選擇一下一處理管線,該下一程式指令係導向該下一處理管線以執行。
- 如請求項第7項所述之裝置,包含排程電路系統,該排程電路系統經組態以回應於該下一指令類型欄位,而排程該下一程式指令,以由該下一處理管線執行。
- 如請求項第8項所述之裝置,其中該下一處理管線為下列之一者: 與該當前處理管線相同之該複數個處理管線之一者;以及與該當前處理管線不同之該複數個處理管線之一者。
- 如請求項第8項所述之裝置,其中該下一處理管線包含佇列電路系統,該佇列電路系統經組態以儲存欲由該下一處理管線執行的一程式指令之佇列,該當前處理管線在該下一指令類型欄位控制之下,將該下一程式指令加入該佇列。
- 如請求項第10項所述之裝置,其中係回應於該當前程式指令被從該當前處理管線拉出,而將該下一程式指令加入該佇列。
- 如請求項第7項所述之裝置,其中該處理部分包含將相關於該下一程式指令的一或多個狀態變數,發送至該下一處理管線。
- 如請求項第2項所述之裝置,其中該處理部分包含下列之一或多者:預先解碼(pre-decoding)該下一程式指令;預先擷取(pre-fetching)該下一程式指令;以及分派(dispatching)該下一程式指令。
- 如請求項第1項所述之裝置,其中隨著該處理電路系統執行該當前資料處理作業,相關於該當前程式指令的一當前程式計數器值被儲存,且從該當前程式計數器值的一最低有效位元位置延伸的一部分儲存指示該下一指令類型欄位的一值。
- 如請求項第14項所述之裝置,其中將儲存該當前程式指令之一記憶體中的一記憶體位址,與對準該記憶體位址之一最低有效位元端的該下一指令類型欄位進行邏輯OR作業,以形成該當前程式計數器值。
- 如請求項第1項所述之裝置,其中該一或多個線程包含複數個線程。
- 如請求項第1項所述之裝置,其中該下一指令類型欄位係定位於該程式指令之線程的程式指令中的一固定且經預定位置中。
- 如請求項第1項所述之裝置,其中該下一指令類型欄位的一個值為一終止類型,該終止類型指示該線程被終止。
- 如請求項第1項所述之裝置,其中在該當前程式指令為一非直接分支指令時,使用該下一指令類型欄位以形 成儲存該下一程式指令之該非直接分支之一目標記憶體位址的部份。
- 如請求項第1項所述之裝置,其中該處理電路係回應於該下一指令類型欄位與該下一程式指令之間的一不匹配,而產生指示該下一指令類型欄位與該下一程式指令之至少一者中之損壞的一異常(exception)。
- 如請求項第2項所述之裝置,其中在該處理的該部分已被執行之後,發生該下一程式指令的完整解碼。
- 如請求項第1項所述之裝置,其中該處理電路系統包含一繪圖處理單元,且該一或多個線程包含複數個平行繪圖處理線程。
- 如請求項第1項所述之裝置,其中該下一指令類型欄位為冗餘資訊,由於該下一程式指令亦會指定由該下一指令類型欄位所指定的該類型,而該當前資料處理作業係獨立於該下一指令類型欄位。
- 一種用於回應一或多個程式指令之線程而處理資料的裝置,該裝置包含: 資料處理電路構件,用以執行由在一程式指令之線程中的一當前程式指令所指定的一當前資料處理作業,其中該當前程式指令包含一下一指令類型欄位,該下一指令類型欄位指定在該線程中欲執行之一下一程式指令的一類型。
- 如請求項第24項所述之裝置,其中該下一指令類型欄位為冗餘資訊,由於該下一程式指令亦會指定由該下一指令類型欄位所指定的該類型,而該當前資料處理作業係獨立於該下一指令類型欄位。
- 一種回應一或多個程式指令之線程而處理資料的方法,該方法包含以下步驟:回應於在一程式指令之線程中的一當前程式指令,而執行由該當前程式指令所指定的一當前資料處理作業,其中該當前程式指令包含一下一指令類型欄位,該下一指令類型欄位指定在該線程中欲執行之一下一程式指令的一類型。
- 如請求項第26項所述之方法,其中該下一指令類型欄位為冗餘資訊,由於該下一程式指令亦會指定由該下一 指令類型欄位所指定的該類型,而該當前資料處理作業係獨立於該下一指令類型欄位。
- 一種電腦程式產品,該電腦程式產品具有一非暫態性(non-transitory)形式,並儲存用於控制一資料處理裝置以回應於一或多個程式指令之線程而執行資料處理的一電腦程式,其中該電腦程式包含一程式指令之線程的一當前程式指令,該當前程式指令包含一下一指令類型欄位,該下一指令類型欄位指定在該線程中欲執行的一下一程式指令的一類型。
- 如請求項第28項所述之電腦程式產品,其中該下一指令類型欄位為冗餘資訊,由於該下一程式指令亦會指定由該下一指令類型欄位所指定的該類型,而該當前資料處理作業係獨立於該下一指令類型欄位。
- 如請求項第28項所述之電腦程式產品,其中該線程包含複數個程式指令,且該線程中的所有該等程式指令包含一下一程式類型欄位。
- 一種虛擬機器,該虛擬機器包含電腦,該電腦執行一程式以提供如請求項第1項所述之用於處理資料的裝置。
- 如請求項第31項所述之虛擬機器,其中該下一指令類型欄位為冗餘資訊,由於該下一程式指令亦會指定由該下一指令類型欄位所指定的該類型,而該當前資料處理作業係獨立於該下一指令類型欄位。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1016072.9A GB2483903A (en) | 2010-09-24 | 2010-09-24 | Instruction which specifies the type of the next instruction to be executed |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201224991A TW201224991A (en) | 2012-06-16 |
TWI511077B true TWI511077B (zh) | 2015-12-01 |
Family
ID=43127900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100133041A TWI511077B (zh) | 2010-09-24 | 2011-09-14 | 下一指令類型欄位 |
Country Status (10)
Country | Link |
---|---|
US (1) | US9977675B2 (zh) |
EP (1) | EP2585906B1 (zh) |
JP (1) | JP5712295B2 (zh) |
KR (1) | KR101849110B1 (zh) |
CN (1) | CN103119555B (zh) |
GB (1) | GB2483903A (zh) |
IL (1) | IL224507A (zh) |
MY (1) | MY168248A (zh) |
TW (1) | TWI511077B (zh) |
WO (1) | WO2012038713A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981807B (zh) * | 2012-11-08 | 2015-06-24 | 北京大学 | 一种基于cuda并行环境的gpu程序优化方法 |
KR102301937B1 (ko) * | 2014-12-22 | 2021-09-15 | 삼성전자주식회사 | 가상 머신 환경에서의 입출력 방법 |
CN106227507B (zh) * | 2016-07-11 | 2019-10-18 | 北京深鉴智能科技有限公司 | 计算系统及其控制器 |
CN108874445A (zh) * | 2017-10-30 | 2018-11-23 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行向量点积指令的方法 |
EP3588280B1 (en) * | 2018-06-25 | 2021-09-08 | ARM Limited | Handling load-exclusive instructions in apparatus having support for transactional memory |
US11907126B2 (en) * | 2020-09-25 | 2024-02-20 | Advanced Micro Devices, Inc. | Processor with multiple op cache pipelines |
US11803391B2 (en) * | 2020-10-20 | 2023-10-31 | Micron Technology, Inc. | Self-scheduling threads in a programmable atomic unit |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4953078A (en) * | 1987-10-28 | 1990-08-28 | Digital Equipment Corporation | Apparatus and method for multi-threaded program execution in a microcoded data processing system |
JPH0628187A (ja) * | 1992-07-10 | 1994-02-04 | Nec Corp | データロード方法及びそれを用いた演算プロセッサ |
EP0652509A1 (en) * | 1993-11-05 | 1995-05-10 | Intergraph Corporation | Instruction cache associative cross-bar switch |
JPH11296381A (ja) * | 1998-04-08 | 1999-10-29 | Matsushita Electric Ind Co Ltd | 仮想マシン及びコンパイラ |
WO2001016710A1 (fr) * | 1999-08-30 | 2001-03-08 | Ip Flex Inc. | Processeur de donnees |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63234322A (ja) * | 1987-03-23 | 1988-09-29 | Toshiba Corp | プロセツサ |
JP2609618B2 (ja) * | 1987-08-13 | 1997-05-14 | 株式会社東芝 | データ処理装置 |
JPH05346854A (ja) * | 1992-04-16 | 1993-12-27 | Fuji Electric Co Ltd | 演算処理装置 |
US5933629A (en) | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for detecting microbranches early |
DE69840406D1 (de) * | 1998-10-06 | 2009-02-12 | Texas Instruments Inc | Überprüfung von Befehlsparallelismus |
US6742110B2 (en) * | 1998-10-06 | 2004-05-25 | Texas Instruments Incorporated | Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution |
WO2001025900A1 (en) * | 1999-10-06 | 2001-04-12 | Cradle Technologies | Risc processor using register codes for expanded instruction set |
US8327175B2 (en) * | 2005-07-07 | 2012-12-04 | Samsung Electronics Co., Ltd. | Data processing systems and methods of operating the same in which memory blocks are selectively activated in fetching program instructions |
US20100217937A1 (en) * | 2009-02-20 | 2010-08-26 | Arm Limited | Data processing apparatus and method |
-
2010
- 2010-09-24 GB GB1016072.9A patent/GB2483903A/en not_active Withdrawn
-
2011
- 2011-08-24 CN CN201180045065.2A patent/CN103119555B/zh active Active
- 2011-08-24 WO PCT/GB2011/051589 patent/WO2012038713A1/en active Application Filing
- 2011-08-24 EP EP11752622.8A patent/EP2585906B1/en active Active
- 2011-08-24 KR KR1020137005861A patent/KR101849110B1/ko active IP Right Grant
- 2011-08-24 MY MYPI2013700237A patent/MY168248A/en unknown
- 2011-08-24 JP JP2013529706A patent/JP5712295B2/ja active Active
- 2011-09-01 US US13/137,657 patent/US9977675B2/en active Active
- 2011-09-14 TW TW100133041A patent/TWI511077B/zh active
-
2013
- 2013-01-30 IL IL224507A patent/IL224507A/en active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4953078A (en) * | 1987-10-28 | 1990-08-28 | Digital Equipment Corporation | Apparatus and method for multi-threaded program execution in a microcoded data processing system |
JPH0628187A (ja) * | 1992-07-10 | 1994-02-04 | Nec Corp | データロード方法及びそれを用いた演算プロセッサ |
EP0652509A1 (en) * | 1993-11-05 | 1995-05-10 | Intergraph Corporation | Instruction cache associative cross-bar switch |
JPH11296381A (ja) * | 1998-04-08 | 1999-10-29 | Matsushita Electric Ind Co Ltd | 仮想マシン及びコンパイラ |
WO2001016710A1 (fr) * | 1999-08-30 | 2001-03-08 | Ip Flex Inc. | Processeur de donnees |
US6904514B1 (en) * | 1999-08-30 | 2005-06-07 | Ipflex Inc. | Data processor |
Also Published As
Publication number | Publication date |
---|---|
CN103119555B (zh) | 2016-10-12 |
KR101849110B1 (ko) | 2018-04-16 |
CN103119555A (zh) | 2013-05-22 |
KR20130108547A (ko) | 2013-10-04 |
GB2483903A (en) | 2012-03-28 |
EP2585906A1 (en) | 2013-05-01 |
IL224507A (en) | 2015-07-30 |
JP2013542500A (ja) | 2013-11-21 |
WO2012038713A1 (en) | 2012-03-29 |
EP2585906B1 (en) | 2018-09-19 |
JP5712295B2 (ja) | 2015-05-07 |
GB201016072D0 (en) | 2010-11-10 |
MY168248A (en) | 2018-10-16 |
US9977675B2 (en) | 2018-05-22 |
US20120079243A1 (en) | 2012-03-29 |
TW201224991A (en) | 2012-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI511077B (zh) | 下一指令類型欄位 | |
KR102271986B1 (ko) | 다수의 마이크로 오퍼레이션에 대응한 복합 프로그램 명령어의 디코딩 | |
JP3842129B2 (ja) | データ処理装置およびその制御方法 | |
TWI514267B (zh) | 用於多股亂序處理器中之指令排程的方法及裝置與系統 | |
US9632788B2 (en) | Buffering instructions of a single branch, backwards short loop within a virtual loop buffer | |
KR101594502B1 (ko) | 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 | |
US20090113192A1 (en) | Design structure for improving efficiency of short loop instruction fetch | |
JP5941488B2 (ja) | 条件付きショート前方分岐の計算的に等価な述語付き命令への変換 | |
TW201346567A (zh) | 結構存取處理器、方法、系統及指令 | |
CN114253606A (zh) | 用于早期流水线重定向的指令集架构和微架构 | |
JP6073392B2 (ja) | 命令としてデータ値を評価するシステムおよび方法 | |
US20220035635A1 (en) | Processor with multiple execution pipelines | |
TWI770079B (zh) | 向量產生指令 | |
US7730288B2 (en) | Method and apparatus for multiple load instruction execution | |
CN110554887A (zh) | 间接存储器提取器 | |
WO2022066559A1 (en) | Processor with multiple fetch and decode pipelines | |
TWI752068B (zh) | 一種運算裝置及其操作方法 | |
JP4560705B2 (ja) | データ処理装置の制御方法 | |
US20230198548A1 (en) | Apparatus and method for constant detection during compress operations | |
KR20000010200A (ko) | 명령어 디코딩 경로를 줄인 명령어 디코딩 장치 | |
JP2001175470A (ja) | データ処理装置 |