分級循環(huán)指令的制作方法
【專利摘要】本公開涉及分級循環(huán)指令。循環(huán)指令被分析,并基于它們之間的依賴性和可用的機器資源而被分配有級數。循環(huán)指令基于它們的級數被選擇性地執(zhí)行,從而消除了對明確的循環(huán)構造和析構指令的需要。在單指令多數據機器上,每個指令的最后實例可以根據原始循環(huán)的迭代數而在處理元件或矢量元件的子集上執(zhí)行。
【專利說明】分級循環(huán)指令
【技術領域】
[0001]本發(fā)明的實施例總體上涉及硬件并行性(hardware parallelism)的有效使用,更特別地,涉及循環(huán)展開以及軟件流水線技術。
【背景技術】
[0002]編譯器獲取高級通用語言(諸如C、C++或Java)編寫的計算機源代碼并且將其轉換成低級機器特定的對象代碼。針對簡單的單核處理器編譯代碼可包括相對直接地將高級指令一對一地轉換成低級指令。例如,訪問C++類中的數據可被編譯成地址算法和存儲器訪問機器級指令。
[0003]然而,針對具有多個功能單元或支持矢量處理的處理器編譯代碼可能更復雜得多。一般目標是通過使每個核(和/或每個處理器、執(zhí)行單元以及流水線,這根據給定設備的具體硬件而言)盡可能地忙碌來盡可能快地運行所編譯的程序。然而,該目標要求原始以串行/序列寫成的指令被編譯為并行地運行,并非所有指令能夠同時執(zhí)行。例如,如果用于第二指令的輸入取決于第一指令的結果,那么第一指令和第二指令不能并行運行;第二指令必須等候第一指令完成。
[0004]“智能”編譯器識別能夠并行運行的指令并且創(chuàng)建被剪裁來并行運行的機器代碼(明確地說,諸如針對超長指令字VLIW處理器產生的代碼,或者含蓄地說,針對超標量(superscalar)處理器產生的代碼)??刹⑿谢樾蔚膬蓚€大類包括(i)表現(xiàn)出指令級并行性的指令和(ii)表現(xiàn)出數據級并行性的指令。指令級并行性指的是兩個或更多指令對彼此的輸出沒有依賴性且因此可以被并行地計算。數據級并行性指的是對數據的集合(即,矢量)執(zhí)行操作,其中對集合成員的單獨操作不依賴于涉及其它成員的操作。例如,為了將兩個矩陣加在一起,矩陣元素的數據級并行性可以用于并行地運行元素相加指令中的一些或全部,因為元素級別的相加操作是獨立的。
[0005]編譯器實現(xiàn)指令級和數據級并行性的一個途徑是利用源代碼中編寫的循環(huán)(例如,for和while循環(huán))。循環(huán)的兩次或更多次迭代可以并行地執(zhí)行(即“矢量化”,其利用數據級并行性)和/或循環(huán)的連續(xù)迭代可以部分地重疊(即“軟件流水線技術”,其利用指令級并行性)。用于軟件流水線技術的一種有用的算法是“模數調度”。關于矢量化,for循環(huán)(例如)可調用十次迭代;如果每次迭代中運行的指令獨立于其它迭代的那些指令,并且如果編譯器可訪問例如五個處理元件,那么編譯器可創(chuàng)建并行地在五個處理元件的每個處執(zhí)行循環(huán)的兩次迭代的匯編代碼。關于軟件流水線技術,例如,如果循環(huán)包括兩個指令,但是第一指令不依賴于前一迭代的第二指令的結果,則循環(huán)的下一迭代的第一指令可被調度為與循環(huán)的當前迭代的仍在執(zhí)行的第二指令并行地運行。
[0006]矢量化和軟件流水線技術的一個缺點是它們增大了所執(zhí)行的代碼的大小。矢量化需要應付循環(huán)的余數大小的最終迭代的代碼(例如,如果循環(huán)需要十一次迭代且五個處理元件可用,那么最后的迭代僅使用處理元件之一)。這種“部分填充的”最終迭代可能不僅僅是效率低的問題;許多大規(guī)模處理器陣列被調諧成期望穩(wěn)定的有效數據流,個體處理元件可能不那么容易被關閉。軟件流水線技術在可運行一組有效率的核心指令(循環(huán)內核(loopkernel))之前需要構造指令(set-up instruction)(循環(huán)序言(loop prolog))來準備硬件環(huán)境,在運行之后還需要開銷指令(overhead instruction)(循環(huán)尾言(loop epilog))來析構循環(huán)并且整理硬件環(huán)境以用于進一步的指令。在許多情況下,該附加的開銷代碼可能大于循環(huán)內核代碼本身,并且在具有有限的指令高速緩存或緩存容量的處理器上,可能降低性能。另一缺點是對具有可變迭代次數(稱為循環(huán)的“行程計數”)的循環(huán)的處理較差;因為在編譯時不能知曉行程計數,所以在運行時需要行程計數的各種測試,由此增大了程序的運行時間(尤其是在最終行程計數表現(xiàn)為小的時候)。
[0007]試圖解決這些缺點的已有系統(tǒng)僅可產生進一步的缺點。例如,一些處理器(例如,矢量處理器)實施一種方法,該方法在循環(huán)的最后迭代中選擇性地禁用個別處理元件。然而,在循環(huán)的最后迭代中禁用處理元件與軟件流水線技術不合,流水線技術使來自循環(huán)內核中的各迭代的指令重疊。另一些系統(tǒng)通過將循環(huán)指令儲存在固定大小的緩存中并且發(fā)布特殊循環(huán)指令來表達循環(huán)的構造、析構和穩(wěn)定狀態(tài),但是這些系統(tǒng)不僅限制了循環(huán)內核的大小(基于固定緩存的大小),而且還不能處理更復雜的循環(huán)(諸如需要寄存器重命名的那些循環(huán))。還有另一些系統(tǒng)使用一組復雜的旋轉硬件寄存器來處理復雜的循環(huán),但是這些寄存器從處理器的其它部分占據了寶貴的占用面積。因此,存在對更有效地執(zhí)行任意大小和復雜度的循環(huán)內核的方法的需要。
【發(fā)明內容】
[0008]總體上,這里描述的系統(tǒng)和方法的各方面提供一種編譯器和硬件機構以允許構造和析構軟件流水線化的、矢量化的循環(huán)而不需要軟件序言和尾言。本發(fā)明的實施例減小了代碼大小并且,在未知行程計數的情況下,改善了所得代碼的性能。循環(huán)代碼被分析,每個指令被分配反映執(zhí)行的總體順序的級數;具體而言,每個指令可被分配多個時間上有序的“級”之一,每個級具有反映其在執(zhí)行順序中的位置的“級數”。當循環(huán)被執(zhí)行時,其中的指令基于它們的級數被選擇性地執(zhí)行。
[0009]在一方面,通過計算機處理器來執(zhí)行循環(huán)的方法包括將循環(huán)的循環(huán)內核指令加載到計算機處理器的存儲器中(其中每個循環(huán)內核指令具有與其相關聯(lián)的級數)。級閾值在循環(huán)的每次迭代期間確定,循環(huán)序言通過基于級閾值和級數執(zhí)行循環(huán)內核指令的子集來執(zhí)行。循環(huán)內核通過重復地執(zhí)行循環(huán)內核指令來執(zhí)行,循環(huán)尾言通過基于級閾值和級數執(zhí)行循環(huán)內核指令的第二組子集來執(zhí)行。
[0010]計算機處理器可以是標量處理器,其中循環(huán)內核指令包括具有指令級并行性或多周期潛伏(latency)的指令,和/或循環(huán)內核指令被軟件流水線化。級數可以根據展開的循環(huán)內核的每個副本而被調整。循環(huán)指令的最后執(zhí)行可以在比循環(huán)的較早迭代更少的處理元件或矢量元件上運行。更少的處理或矢量元件可以根據控制每個處理或矢量元件的掩碼位來選擇。包括與級閾值相關的信息的循環(huán)構造指令可以被接收,循環(huán)構造指令可包括總循環(huán)計數、執(zhí)行循環(huán)指令時使用的處理元件數量、級計數或循環(huán)展開因子。執(zhí)行循環(huán)尾言、循環(huán)內核和循環(huán)序言可包括在計算機處理器中將指令級數與級閾值相比較。
[0011]在另一方面,用于執(zhí)行計算機可執(zhí)行循環(huán)指令的系統(tǒng)包括序列器,其用于接收包括循環(huán)信息的循環(huán)構造指令。一個或更多寄存器存儲與級閾值相關的數據(該數據從循環(huán)信息獲得)。處理元件(i)通過基于級閾值和與循環(huán)內核指令相關聯(lián)的級數執(zhí)行所接收的循環(huán)內核指令的子集來執(zhí)行循環(huán)序言,(ii)通過重復地執(zhí)行循環(huán)內核指令來執(zhí)行循環(huán)內核,并且(i i i )通過基于級閾值和級數執(zhí)行循環(huán)內核指令的第二組子集來執(zhí)行循環(huán)尾言。
[0012]寄存器可包括級掩碼或級閾值寄存器。至少一個附加處理元件可執(zhí)行循環(huán)內核指令,或者矢量指令可并行處理多數據元素。在指令的最后執(zhí)行期間,可以僅處理元件或矢量元件的子集執(zhí)行循環(huán)內核指令。掩碼寄存器可存儲與執(zhí)行最后迭代中的循環(huán)內核指令相關的信息。循環(huán)信息可包括總循環(huán)計數、執(zhí)行循環(huán)指令時使用的處理元件的數量、級計數或循環(huán)展開因子。循環(huán)計數寄存器可存儲循環(huán)計數,其可以從總循環(huán)計數除以執(zhí)行循環(huán)指令的處理元件數獲得并根據級計數而被調整且根據循環(huán)展開因子而被舍入。
[0013]這些和其它目的以及這里公開的本發(fā)明的優(yōu)點和特征將通過參照下面的描述、附圖以及權利要求書而變得更加顯然。此外將理解,這里描述的各實施例的特征并不相互排斥,而是能以各種組合和置換的方式存在。
【專利附圖】
【附圖說明】
[0014]在圖中,貫穿不同視圖,相似的附圖標記一般指示相同的部件。在下面的描述中,參照下面的附圖描述了本發(fā)明的各種實施例,附圖中:
[0015]圖1是流程圖,示出根據本發(fā)明一實施例用級信息注釋循環(huán)指令的方法;
[0016]圖2是框圖,示出根據本發(fā)明一實施例的分級循環(huán)的執(zhí)行;
[0017]圖3是框圖,示出根據本發(fā)明一實施例的部分展開分級循環(huán)的執(zhí)行;
[0018]圖4是框圖,示出根據本發(fā)明一實施例的要求延遲開始的部分展開分級循環(huán)的執(zhí)行;
[0019]圖5是框圖,示出根據本發(fā)明一實施例的在多個處理元件上運行的分級循環(huán)的執(zhí)行;
[0020]圖6是根據本發(fā)明一實施例的用于用級數注釋循環(huán)指令的系統(tǒng)的框圖;
[0021]圖7是根據本發(fā)明一實施例的用于執(zhí)行分級循環(huán)指令的系統(tǒng)的框圖;
[0022]圖8是根據本發(fā)明一實施例的用于執(zhí)行分級循環(huán)指令的方法的流程圖。
【具體實施方式】
[0023]這里描述在具有多個處理元件或功能單元的計算機系統(tǒng)上通過用附加信息標注循環(huán)內核指令或循環(huán)指令的分組來運行循環(huán)的方法和系統(tǒng)的各種實施例,所述附加信息涉及哪些信息應被執(zhí)行和按什么順序執(zhí)行從而以有效率的方式構造和析構循環(huán)內核。當處理器接收指令時,它分析標簽信息并基于標簽信息來在執(zhí)行循環(huán)內核之前和之后執(zhí)行某些循環(huán)內核指令,由此消除了對明確的循環(huán)構造/析構指令的需要。例如,編譯器可以用[0]標簽標注循環(huán)中的某些指令,用[I]標簽標注另一些指令,用[2]標簽標注再另一些指令;很一般地,如下面將更詳細論述的那樣,標注的分組內的指令表現(xiàn)出指令級并行性,更高編號的標注分組中的指令可以依賴于更低編號的分組中的指令的輸出。在循環(huán)的第一迭代中,處理器可執(zhí)行(并行地)用[0]標注的指令,在第二迭代中,執(zhí)行用[0]或[I]標注的指令,在第三和后續(xù)迭代中,執(zhí)行所有指令(即,用[O]、[I]或[2]標注的指令)。在循環(huán)的倒數第二迭代中,處理器可僅執(zhí)行用[I]或[2]標注的指令,在循環(huán)的最后迭代中,僅執(zhí)行用[2]標注的指令。如下面更詳細說明的那樣,這個簡單示例可以擴展到更復雜的循環(huán)和/或處理器架構。
[0024]為了說明,將首先定義循環(huán)的若干一般屬性或性質。用于傳統(tǒng)循環(huán)的代碼包括循環(huán)構造指令(即,循環(huán)序言)、循環(huán)內核和循環(huán)析構指令(即,循環(huán)尾言)。根據本發(fā)明一實施例執(zhí)行的循環(huán)包括在其執(zhí)行的開端處的其中并非所有循環(huán)指令被執(zhí)行的一個或更多迭代、其中所有循環(huán)指令都執(zhí)行的一個或更多迭代(即,循環(huán)的執(zhí)行的“穩(wěn)定狀態(tài)”部分)、以及最后在循環(huán)的執(zhí)行末尾處的其中并非所有循環(huán)指令都執(zhí)行的一個或更多迭代。在一實施例中,在循環(huán)的執(zhí)行的開端和末尾處的迭代為循環(huán)的穩(wěn)定狀態(tài)部分提供構造和析構功能,而不需要明確的額外指令來這樣做。
[0025]流水線化循環(huán)內的每個連續(xù)循環(huán)迭代的起點之間的周期(cycle)總數稱為開始間隔(initiation interval),其也是穩(wěn)定狀態(tài)循環(huán)內核中的指令行數。當以該穩(wěn)定狀態(tài)執(zhí)行時,在每個(開始間隔)周期,新的迭代開始,同時更早開始的迭代結束其執(zhí)行。開始間隔短于完成未流水線化循環(huán)的迭代所用的周期總數,因為原始循環(huán)的多個迭代已經被重疊,允許循環(huán)的稍后的迭代在稍早的迭代已經完成之前開始。例如,如果開始間隔為2,并且完成迭代所需的周期總數為6,那么迭代n、n+l和n+2將在同一時間都在運行。
[0026]循環(huán)中的指令被賦予“級數”,其依賴于從循環(huán)迭代開始起已經過去的開始間隔的倍數。在以上例子中,未流水線化循環(huán)中的頭兩個指令行屬于第一級,指令行三和四屬于第二級,而指令行五和六屬于第三級。級的總數稱為級計數;在該示例中,級計數為三。在循環(huán)內核的穩(wěn)定狀態(tài),迭代n在執(zhí)行最后級(在該例子中,第三級)中的指令,迭代n+1在執(zhí)行倒數第二級(在該例子中,第二級),以此類推。在該例子中,迭代n+2通過執(zhí)行第一級中的指令來開始執(zhí)行。
[0027]在本發(fā)明一實施例中,級數用于標注循環(huán)內核中的指令。屬于第一級的指令用[0]標注,屬于第二級的指令用[I]標注,以此類推。
[0028]更小的開始間隔給出更有效率的循環(huán)內核。有助于降低開始間隔的因素包括處理器上可用的更大數量的功能單元以及指令之間更小數量的數據依賴性。小的開始間隔一般還增大產生用于循環(huán)的代碼所需的級計數,如果必須產生明確的循環(huán)序言和尾言的話,這又導致更大的代碼膨脹。在循環(huán)到達穩(wěn)定狀態(tài)之前運行所需的級數為級計數減一(即,級計數-1);在循環(huán)到達穩(wěn)定狀態(tài)之前運行所需的周期數因此為(級計數-1) X (開始間隔)。在本發(fā)明一實施例中,用于該開銷的代碼膨脹被去除。
[0029]展開循環(huán)指的是將一些或全部循環(huán)指令重寫為更大數量的非循環(huán)指令。迭代六次的兩指令for循環(huán)例如可通過重寫為十二個普通(非循環(huán))指令而被完全展開。作為另一例子,該for循環(huán)可通過重寫為每個迭代具有更多指令但是具有更少的總迭代(例如,重寫為迭代三次的四指令for循環(huán))而被部分地展開。如果循環(huán)最初被寫為具有奇數次迭代(例如,迭代五次的兩指令for循環(huán)),則該部分展開技術可包括在循環(huán)外的初始(或最后)指令集(例如,兩個指令加上迭代兩次的四指令for循環(huán))。
[0030]循環(huán)展開可在循環(huán)包含其結果長時間存續(xù)(S卩,需要保持可用)的指令時用于便于軟件流水線化。因為在流水線化內核中的每個(開始間隔)周期都有新迭代開始,所以指令的結果在其定義之后的(開始間隔)周期不能再被使用,因為在該使用達成之前該結果將被后續(xù)迭代中的指令副本覆寫或“破壞”。這個問題可以通過將循環(huán)內核展開來得到解決。展開循環(huán)當然將會引入長壽命指令的另一副本到循環(huán)內核中,為了避免該指令覆寫長壽命值,它被給予了重命名的寄存器以將其值存儲在該寄存器中(以避免破壞更早指令的結果)。利用以上定義的項之一,循環(huán)內核可被展開,如果循環(huán)的開始間隔(即,循環(huán)的“長度”)短于循環(huán)中的指令之一的壽命的話。所需的展開水平是開始間隔被超出多遠的函數,且被稱為循環(huán)展開因子。如果無需展開,那么循環(huán)展開因子為一;如果需要循環(huán)內核的兩個副本,那么循環(huán)展開因子為二,以此類推。
[0031]循環(huán)的另一屬性是其迭代計數是固定的還是可變的。如果是固定的,那么編譯器可以通過(例如)測試迭代計數是奇數還是偶數(如上所述,這可能影響部分展開循環(huán))來更容易地調度其執(zhí)行并且相應地產生代碼。然而,如果迭代計數可變(例如,迭代從I至X的for循環(huán)),那么編譯器不能斷定迭代計數是奇數還是偶數。
[0032]現(xiàn)在參照本發(fā)明的實施例,圖1示出用于編譯用于循環(huán)的代碼的方法100。在第一步驟102中,確定循環(huán)指令中的指令依賴性(例如,對指令級并行性或數據級并行性的障礙)。在第二步驟104中,與開始間隔一起產生循環(huán)的未流水線化版本,其服從這些依賴性,從而在每個(開始間隔)周期,新迭代可以開始并與當前執(zhí)行的迭代重疊,而不超越機器上可用的并行資源。在第三步驟106,確定循環(huán)的循環(huán)展開因子(例如,基于循環(huán)的開始間隔和循環(huán)指令的壽命)。在第四步驟108中,確定循環(huán)的迭代數量(例如,未知或已知,如果已知,則為奇數還是偶數)。在第五步驟110中,至少部分地基于依賴性以及硬件上可用的并行性,向循環(huán)中的指令分配級數。
[0033]在一實施例中,給定循環(huán)的指令之間具有依賴性,但是循環(huán)的展開因子為一(SP,不需要展開),而且循環(huán)的迭代數量已知。在該實施例中,編譯器用流水線信息(即,級數)標注每個循環(huán)指令。該信息可以為三或四比特二進制數的形式,但是本發(fā)明不限于任何特定的信息表示。級數可以保持在指令內,將其自身編碼,或者可以由另一機構指定,諸如并行數據結構。
[0034]執(zhí)行期間,循環(huán)的運行最終到達穩(wěn)定狀態(tài),在該狀態(tài)中每個循環(huán)指令在每個迭代中被執(zhí)行,但是在到達穩(wěn)定狀態(tài)之前,僅循環(huán)指令的子集在每個迭代中被執(zhí)行,首先執(zhí)行獨立指令,接著可能是可能依賴于那些首先執(zhí)行的指令的中間指令,接著是可能依賴于首先和中間指令的指令,以此類推,直到所有指令被執(zhí)行。在循環(huán)的最后幾次迭代中,首先開始執(zhí)行的指令停止執(zhí)行,稍后增加的依賴性指令繼續(xù)執(zhí)行,直到所有指令已經執(zhí)行了它們的所表示的次數。
[0035]語義上,指令通過相對于級閾值測試它們的級數而被執(zhí)行,級閾值在每次迭代中可能改變。在循環(huán)構造部分,如果指令的級數小于或等于級閾值,則指令被執(zhí)行;在循環(huán)析構部分,如果指令的級數大于或等于級閾值,則指令被執(zhí)行。級閾值在循環(huán)構造和析構部分期間在每次迭代都遞增;級閾值在循環(huán)構造部分中被初始化為其最低值,在循環(huán)析構部分中被初始化為其次低值。級閾值在循環(huán)的穩(wěn)定狀態(tài)部分中保持恒定。在一實施例中,級閾值的遞增量等于循環(huán)展開因子,如下面將更詳細地描述的那樣。本領域技術人員將理解,有許多方式來在硬件中實現(xiàn)這種語義(semantics),本發(fā)明不局限于使用級閾值。實現(xiàn)相同結果的其它途徑可以是使用掩碼寄存器,其可以在開始循環(huán)內核的下一次迭代時移位,或者使用從循環(huán)行程計數、級計數和展開因子的值獲得的其它狀態(tài)。這里僅為了清楚說明而對級閾值進行論述。[0036]如圖2所示,示例200可輔助描述本發(fā)明的該實施例。雖然示例200包括一組具體的指令和依賴性,但是本發(fā)明不是僅限于該配置,示例200僅意味著示范。在該示例中,循環(huán)執(zhí)行三次迭代且包括五個指令a、b、C、d和e。沖突存在于指令a和c之間(即,指令c依賴于指令a的輸出和/或硬件禁止它們同時執(zhí)行)。類似地,指令d和e由于另一沖突而不能與指令a、b或c同時運行?;谶@些依賴性,編譯器向指令a和b分配級[0],向指令c分配級[I],向指令d和e分配級[2]。
[0037]循環(huán)內核的開始間隔也可以被確定。如上所述,開始間隔是執(zhí)行流水線化的循環(huán)內核的一次迭代所用的周期數。在該示例中,假設硬件能夠在第一周期中執(zhí)行指令a、c和d,在第二周期中執(zhí)行指令b和e。開始間隔因此是二,因為花費兩個周期來執(zhí)行所有的循環(huán)
指令。例如:
[0038]
【權利要求】
1.一種通過計算機處理器來執(zhí)行循環(huán)的方法,該方法包括: 將該循環(huán)的循環(huán)內核指令加載到該計算機處理器的存儲器中,每個循環(huán)內核指令具有與之相關聯(lián)的級數; 確定該循環(huán)的每個迭代期間的級閾值; 通過基于該級閾值和級數執(zhí)行該循環(huán)內核指令的子集來執(zhí)行循環(huán)序言; 通過重復地執(zhí)行該循環(huán)內核指令來執(zhí)行循環(huán)內核;以及 通過基于該級閾值和級數執(zhí)行該循環(huán)內核指令的第二組子集來執(zhí)行循環(huán)尾言。
2.權利要求1的方法,其中,該計算機處理器是標量處理器,其中該循環(huán)內核指令包括具有指令級并行性或多周期潛伏的指令,其中該循環(huán)內核指令被軟件流水線化。
3.權利要求1的方法,其中,該級數根據展開的循環(huán)內核的每個副本而被調節(jié)。
4.權利要求1的方法,其中,循環(huán)指令的最后執(zhí)行比循環(huán)的更早迭代在更少的處理元件或矢量元件上運行。
5.權利要求4的方法,其中,所述更少的處理元件或矢量元件根據控制每個處理元件或矢量元件的掩碼比特而被選擇。
6.權利要求1的方法,還包括接收循環(huán)構造指令,該循環(huán)構造指令包括與級閾值相關的信息。
7.權利要求6的方法,其中,所述循環(huán)構造指令包括總循環(huán)計數、執(zhí)行循環(huán)指令時使用的處理元件的數目、級計數或循環(huán)展開因子。
8.權利要求1的方法,其中,執(zhí)行所述循環(huán)尾言、循環(huán)內核和循環(huán)序言包括在所述計算機處理器中將指令級數與級閾值進行比較。
9.一種用于執(zhí)行計算機可執(zhí)行的循環(huán)指令的系統(tǒng),該系統(tǒng)包括: 序列器,用于接收包括循環(huán)信息的循環(huán)構造指令; 一個或更多寄存器,用于存儲與級閾值相關的數據,該數據從所述循環(huán)信息導出;以及 處理元件,用于(i)通過基于級閾值和與循環(huán)內核指令相關聯(lián)的級數執(zhí)行所接收的循環(huán)內核指令的子集來執(zhí)行循環(huán)序言,(ii)通過重復地執(zhí)行循環(huán)內核指令來執(zhí)行循環(huán)內核,以及(iii)通過基于級閾值和級數執(zhí)行循環(huán)內核指令的第二組子集來執(zhí)行循環(huán)尾言。
10.權利要求9的系統(tǒng),其中,該寄存器包括級掩碼或級閾值寄存器。
11.權利要求9的系統(tǒng),還包括至少一個附加的處理元件以用于執(zhí)行循環(huán)內核指令或矢量指令從而并行地處理多個數據元素。
12.權利要求11的系統(tǒng),其中,在指令的最后執(zhí)行期間,僅所述處理元件或矢量元件的子集執(zhí)行循環(huán)內核指令。
13.權利要求12的系統(tǒng),其中,掩碼寄存器存儲與在最后迭代中執(zhí)行循環(huán)內核執(zhí)行相關的彳目息。
14.權利要求9的系統(tǒng),其中,所述循環(huán)信息包括總循環(huán)計數、執(zhí)行循環(huán)指令時使用的處理元件的數目、級計數或循環(huán)展開因子。
15.權利要求9的系統(tǒng),還包括循環(huán)計數寄存器以用于存儲循環(huán)計數。
16.權利要求15的系統(tǒng),其中,該循環(huán)計數從總循環(huán)計數除以執(zhí)行循環(huán)指令時使用的處理元件的數目導出,根據級計數被調節(jié),并根據循環(huán)展開因子而被舍入。
【文檔編號】G06F9/30GK103530088SQ201310268022
【公開日】2014年1月22日 申請日期:2013年6月28日 優(yōu)先權日:2012年6月29日
【發(fā)明者】M·G·佩爾金斯, A·J·希格哈姆 申請人:美國亞德諾半導體公司