TWI738744B - 用於程式迴圈控制的設備、方法及電腦程式產品 - Google Patents
用於程式迴圈控制的設備、方法及電腦程式產品 Download PDFInfo
- Publication number
- TWI738744B TWI738744B TW106109249A TW106109249A TWI738744B TW I738744 B TWI738744 B TW I738744B TW 106109249 A TW106109249 A TW 106109249A TW 106109249 A TW106109249 A TW 106109249A TW I738744 B TWI738744 B TW I738744B
- Authority
- TW
- Taiwan
- Prior art keywords
- loop
- instruction
- program
- branch
- control
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 56
- 238000004590 computer program Methods 0.000 title claims 3
- 238000012545 processing Methods 0.000 claims abstract description 186
- 239000013598 vector Substances 0.000 claims description 97
- 230000004044 response Effects 0.000 claims description 22
- 238000004321 preservation Methods 0.000 claims description 21
- 208000011580 syndromic disease Diseases 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 9
- 230000000694 effects Effects 0.000 claims description 6
- 230000005055 memory storage Effects 0.000 claims description 6
- 230000001629 suppression Effects 0.000 claims description 4
- 208000024891 symptom Diseases 0.000 claims 1
- 230000008569 process Effects 0.000 description 40
- 230000006399 behavior Effects 0.000 description 37
- 230000001960 triggered effect Effects 0.000 description 13
- 102100024348 Beta-adducin Human genes 0.000 description 10
- 101000689619 Homo sapiens Beta-adducin Proteins 0.000 description 10
- 230000009471 action Effects 0.000 description 8
- 230000005856 abnormality Effects 0.000 description 7
- 238000007792 addition Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/324—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- 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/3842—Speculative 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種資料處理系統提供用於在程式迴圈本體之結束處規定該程式迴圈本體之開始指令之位址的迴圈結束指令。迴圈控制電路系統(1000)用以使用由該迴圈結束指令提供之迴圈控制資料控制在第二及隨後通過該程式迴圈本體時重複執行該程式迴圈本體而不需要每次通過時明確執行該迴圈結束指令。
Description
本揭示係關於資料處理系統。更特定言之,本揭示係關於在資料處理系統中之程式迴圈控制。
已知提供具有程式指令之資料處理系統以支援程式迴圈執行。例如,已知提供支援重複程式指令之資料處理系統。此等重複程式指令用來規定應複數次執行/遍歷的一或更多個指令之後續序列,隨後程式執行進行至超過彼序列外。此舉提供迴圈行為。
本揭示之至少一些示例實施例提供用於處理資料之設備,其包含:處理電路系統,用以執行由程式指令規定之處理操作;指令解碼器,用以解碼該等程式指令以產生控制信號來控制該處理電路系統執行該等處理操作;其中該指令解碼器包含迴圈結束指令解碼電路系統,用以在程式迴圈本體結束時解碼迴圈結束指令以產生控制信號來控制該處理電路系統儲存迴圈控制資料,進而決定是否需要額外迴圈迭代,並且若需要額外迴圈迭代,則分支至該程式迴圈本體之開始指令;並且進一步包含
迴圈控制電路系統,當啟用時用以決定是否需要額外迴圈迭代,並且若需要額外迴圈迭代,則在控制該迴圈控制資料下,控制該處理電路系統以執行由在該迴圈結束指令之前且不包括該迴圈結束指令的該程式迴圈本體之程式指令規定的處理操作;其中每次遍歷該程式迴圈本體時更新迴圈計數值,以執行由該程式迴圈本體規定之該等處理操作,該迴圈計數器值指示剩餘待執行之迴圈迭代之數量;其中該迴圈計數器係由數個向量元件更新,該等向量元件已由該程式迴圈本體之該遍歷處理。
本揭示之至少一些示例實施例提供一種處理資料之方法,其包含:執行由程式指令規定之處理操作;解碼該等程式指令以產生控制信號來控制該等處理操作之該執行;其中該解碼包含在程式迴圈本體結束時解碼迴圈結束指令以產生控制信號來控制迴圈控制資料之儲存,決定是否需要額外迴圈迭代,並且若需要額外迴圈迭代,則分支至該程式迴圈本體之開始指令;以及進一步包含當啟用時,決定是否需要額外迴圈迭代,並且若需要額外迴圈迭代,則在控制該迴圈控制資料下,控制由在該迴圈結束指令之前且不包括該迴圈結束指令的該程式迴圈本體之程式指令規定的處理操作之該執行;
其中每次遍歷該程式迴圈本體時更新迴圈計數值,以執行由該程式迴圈本體規定之該等處理操作,該迴圈計數器值指示剩餘待執行之迴圈迭代之數量;其中該迴圈計數器係由數個向量元件更新,該等向量元件已由該程式迴圈本體之該遍歷處理。
本揭示之至少一些示例實施例提供用於處理資料之設備,其包含:處理電路系統,用以執行由程式指令規定之處理操作;指令解碼器,用以解碼該等程式指令以產生控制信號來控制該處理電路系統執行該等處理操作;其中該指令解碼器包含迴圈結束指令解碼電路系統以在程式迴圈本體結束時解碼迴圈結束指令來規定指示該程式迴圈本體之開始指令之記憶體位址的參數並用以產生控制信號以控制該處理電路系統來決定是否需要額外迴圈迭代,並且若需要額外迴圈迭代,則分支至該開始指令;以及該指令解碼器包含迴圈開始指令解碼電路系統以解碼在該程式迴圈本體之該開始指令之前的迴圈開始指令以產生控制信號來控制該處理電路系統儲存指示將執行該程式迴圈本體之次數的迴圈計數值;其中回應於該迴圈開始指令,當將執行該程式迴圈本體零次時,該迴圈開始指令解碼電路系統經配置以控制該處理電路系統分支至在該迴圈結束指令之後的指令或用以抑制該程式迴圈本體之指令之效應。
100:資料處理設備
102:記憶體
104:擷取單元
106:指令解碼器
108:浮點處理電路系統
110:浮點暫存器
112:乘法器
114:移位器
116:加法器
117:整數暫存器
118:分支預測器
119:分支單位
120:控制信號
122:分支將來指令解碼電路系統
123:迴圈結束指令解碼電路系統
124:分支控制電路系統
125:迴圈開始指令解碼電路系統
130:分支控制資料快取記憶體
200:分支將來指令BF
201:分支將來指令
202:分支將來指令
203:分支將來指令
204:分支將來指令
205:分支將來指令
206:分支將來指令
207:分支指令
208:分支將來指令
209:分支將來指令
210:條件分支將來指令
211:分支將來指令
252:可程式化分支點資料
254:分支目標位址
256:位元數量
500:應用程式
501:步驟
502:步驟
503:步驟
504:步驟
505:步驟
506:步驟
510:虛擬機程式
520:主機作業系統
530:主機處理器
1000:迴圈/分支控制電路系統系統
1002:擷取級
1004:迴圈/分支控制快取記憶體
1006:指令快取記憶體
1008:許可檢查電路系統
1110:浮點控制暫存器
2000:步驟
2002:步驟
2003:步驟
2004:步驟
2005:步驟
2006:步驟
2008:步驟
2010:步驟
2012:步驟
2013:步驟
2014:步驟
2016:步驟
2018:步驟
2020:步驟
2022:步驟
2024:步驟
2026:步驟
2028:步驟
2030:步驟
2032:步驟
2034:步驟
2036:步驟
2038:步驟
2040:步驟
2042:步驟
2044:步驟
2046:步驟
2048:步驟
2050:步驟
示例實施例現將參考附圖僅以實例之方式描述,其中:第1圖示意地說明資料處理設備;第2A圖示意地說明分支將來指令;第2B圖示意地說明包括分支將來指令之程式指令之序列;第2C圖示意地說明具有指示預定指令之可程式化參數之不同實施方式的數個分支將來指令;第2D圖示意地說明具有可程式化分支目標位址之不同實施方式的數個分支將來指令;第3A圖示意地說明包括通過處理管線進行之分支將來指令的程式指令之序列;第3B圖示意地說明包括分支將來指令之指令序列之程式流;第3C圖示意地說明包括分支將來及鏈路指令之指令序列之程式流;第4圖示意地說明分支將來處理之方法;第5圖示意地說明包括回應於資料失效之過程的分支將來處理之另一方法。
第5A圖說明處理條件分支將來指令之實例;第5B圖說明處理對應於相反條件之一對條件分支將來指令之實例;第6圖示意地說明零負擔迴圈行為;
第7圖示意地說明當執行第6圖之零負擔迴圈行為之後的指令時的處理管線級內容;第8圖示意地說明包括迴圈/分支控制電路系統系統以控制零負擔迴圈行為及分支將來指令行為之處理管線;第9圖說明可如何在程式計數器值與迴圈控制資料欄位之間進行比較以識別程式執行中之一點,於此點應執行分支至迴圈開始位置;第10A圖係示意地說明迴圈開始程式指令之行為的流程圖;第10B圖示意地說明迴圈開始指令之實施方式;第11圖係示意地說明迴圈結束程式指令之行為的流程圖;第12圖係示意地說明當作為零負擔迴圈行為之部分執行程式迴圈本體時迴圈控制電路系統動作的流程圖;第13圖係示意地說明在程式迴圈本體中控制指令執行以提供預測,藉以在藉由預測控制該程式迴圈本體之給定迭代期間向量指令可在具有特定活動向量元件之多個向量元件上操作的流程圖;第14A圖至第14E圖圖示執行非預測及預測迴圈之實例;以及第15圖示意地說明虛擬機實施方式。
本揭示意識到分支指令可導致減少效能之處理延遲。為解決此問題,本揭示提供了分支將來指令解碼電路系統以解碼分支將來指令。該分支將來指令包括與分支目標位址相關之可程式化參數。該分支目標位址對應於可藉由分支後之處理電路系統處理的程式指令。該分支將來指令亦包括額外可程式化分支點資料參數,該參數指示在程式指令序列中該分支將來指令之後的預定指令。藉由在分支將來指令中包括額外可程式化分支點資料參數,該處理電路系統可在該分支點之前準備分支至分支目標位址。由此,當到達分支點時,可避免或減少處理延遲。
第1圖示意地說明耦接至記憶體102之資料處理設備100的實例。記憶體102儲存程式指令及運算元資料。指令藉由擷取單元104擷取,並藉由指令解碼器106解碼以產生控制信號120來控制處理電路系統。處理電路系統可包括用於在接收自或儲存至記憶體102之浮點運算元上執行資料處理操作的浮點處理電路系統108及浮點暫存器110。處理電路系統亦包括用於在接收自或儲存至記憶體102之整數運算元上執行資料處理操作的乘法器112、移位器114、加法器116及整數暫存器117。
由擷取單元擷取之一些指令可係分支指令,該等分支指令將處理從遵循程式指令之當前序列分支至儲存於從分支目標位址開始之記憶體位址處的程式指令。為了調節分支指令,資料處理設備100包括可將程式流重定
向至分支目標位址之分支單位119。為加速分支指令之處理,資料處理設備100可包括分支預測器118。分支預測器118儲存狀態資料,並基於該狀態資料預測是否將採取分支指令。分支單元119亦可由迴圈控制資料控制以支援/提供零負擔迴圈行為(替代或加上其他迴圈控制電路系統),如本文將進一步描述。分支預測器118亦可填充有迴圈控制,如本文將進一步描述。
第2A圖示意地說明分支將來指令BF 200之實例。分支將來指令200包括指示分支目標位址254之可程式化參數、提供可程式化分支點資料252之可程式化參數、及將該指令識別為分支將來指令的編碼位元258。分支點資料252指示在待由資料處理設備處理之程式指令之序列中分支將來指令BF之後的預定指令。分支目標位址254指示指令之位置,當該程式流到達預定指令時處理應分支至該位置。可保留數個位元(x 256)用於其他參數。
返回第1圖,該資料處理設備包括分支將來指令解碼電路系統122,該分支將來指令解碼電路系統用於回應於藉由匹配分支將來編碼位元258識別一指令係分支將來以解碼分支將來指令(諸如第2A圖所示之彼等)。在解碼該分支將來指令時,分支將來指令解碼電路系統122控制該處理電路系統以將分支目標位址資料及指示該預定指令之分支點資料儲存在分支控制資料快取記憶體130中。藉由此方式儲存資料,資料處理設備100可具
有從處理程式指令之正常序列分支可何時發生之提前指示及目標位址,該分支將該程式執行點引導至該目標位址。由此,當該程式流到達由分支將來指令指示之預定指令時,該分支可發生處理之延遲減少或無延遲。該資料處理設備亦包括迴圈結束指令解碼電路系統123及預測之迴圈開始指令解碼電路系統125(其亦用作非預測之迴圈開始指令解碼電路系統)以控制該處理電路系統回應於迴圈結束指令DLE及迴圈開始指令DLS(P),如下文將進一步描述。
分支控制資料快取記憶體130可將對應於分支點之資料儲存為位元之適當子集,該等位元指示從在指令之開始儲存位址之間有所區分的記憶體儲存位址之位元之最低有效位元結束開始的預定指令之記憶體儲存位址。為決定程式流何時到達預定指令,此等位元可與指示程式計數器之值相比較(例如,參看下文所述之第9圖)、與指示下一指令擷取位址之值相比較、或與指示資料處理設備100之處理活動之值相比較。
第2B圖圖示程式代碼,該程式代碼包括分支將來指令BF、及程式指令(ADD1、ADD2、及BX)之序列,該等指令可由資料處理設備100處理。當程式流以上文所述之方式到達預定指令BX時,分支將來指令BF最初將資料處理設備100設置為分支至目標位址。在解碼該分支將來指令之後,資料處理設備100將繼續處理包括ADD1及ADD2之程式指令序列。一旦資料處理設備100
已經處理了ADD2,儲存在快取記憶體130中之分支點資料指示將發生分支。此外,分支控制資料快取記憶體130亦儲存對應於將分支至之指令位址的對應分支目標資料。因此,從對應於分支目標資料的分支目標指令開始分支至處理程式指令可發生而不導致處理延遲或將引入處理管線中的氣泡(未使用之時槽)。
第2C圖說明可程式化分支點資料參數之不同實例,該參數指示相對於第2B圖所示之指令序列的預定指令。在第2C圖之分支將來指令201中,該分支點資料包含指示分支指令BX之位址的資料。第1圖所示之分支控制電路系統124可將指示BX之位址的資料匹配至對應於正擷取之下一指令的值。隨後,當決定該程式流已到達分支指令BX時,分支控制電路系統124觸發分支至由分支將來指令201之分支目標指示的指令。
該分支點資料可替代地係指示指令ADD2之資料,如第2C圖之分支將來指令202所示。由此,以與分支將來指令201相同之方式,當該程式流已擷取ADD2並到達BX時,分支控制電路系統124觸發分支至該分支目標。
第2C圖之分支將來指令203圖示分支點資料,該分支點資料包括從分支將來指令BF至在第2B圖中之預定指令BX之位址偏移。在第2B圖之實例中,ADD1及ADD2係32位元指令。由此,8位元組之位址偏移指示預定指令BX。
第2C圖之分支將來指令204圖示指示剩餘指令計數之分支點資料。該剩餘指令計數指示在到達預定指令之前待在該分支將來指令之後執行之指令數量。在第2B圖之實例中,此對應於ADD1及ADD2。因此,在此實例中的剩餘指令計數係+2。
第2C圖之分支將來指令205圖示指示在到達預定指令之前剩餘待處理之數個程式儲存位置的剩餘大小資料。若指令ADD及ADD2係分別為32位元及16位元之可變長度指令,則它們的總大小應係6位元組並因此剩餘大小值係6。
第2C圖之分支將來指令211圖示分支點資料,該分支點資料包括從分支將來指令BF至在第2B圖中之預定指令BX之位址偏移。在第2B圖之實例中,ADD1及ADD2係32位元指令。由此,位址偏移係8位元組,然而值4用來指示預定指令BX,因為將全部指令對準至少2位元組邊界並由此並非必需值8之最低有效位元才能唯一地識別預定指令之位址。
第2D圖圖示具有與分支目標位址相關之可程式化參數之不同實施方式的分支將來指令之一些其他實例。如第2D圖之分支將來指令206所示,該分支目標可由暫存器說明符<Rm>指示,該暫存器說明符藉由處理電路系統規定儲存該指令將分支至的記憶體位址的暫存器位置。
第2D圖之分支指令207圖示另一實例,其中該分支目標由立即偏移值<imm>指示,該立即偏移值藉由從相對於分支將來指令之記憶體位址之點的偏移指示將分支至的指令之位址。
第2D圖之分支將來指令208及分支將來指令209圖示亦包括鏈路說明符之分支將來指令之實例。該鏈路說明符控制該處理電路系統將返回位址儲存在鏈路暫存器LR中。當該程式流完成開始於分支目標之程式指令的處理並到達返回指令時,將額外分支執行至儲存在鏈路暫存器中之位址。由此,一旦已經處理於分支目標之程式指令,處理可返回至程式指令之原始流。在其他實例中,可將返回位址儲存於在儲存區域中的任何位址,該儲存區域由應用至堆疊點暫存器之預定偏移規定。
第2D圖亦圖示條件分支將來指令210。條件分支將來指令210包括一些條件代碼:op{cond}。當處理該條件分支將來指令時,該分支將來指令解碼器決定是否已滿足該等條件代碼,並根據此決定處理該條件分支將來指令。
第3A圖說明指令序列,該指令序列包括通過第1圖之資料處理設備100之處理管線(簡單三級管線:擷取、解碼及執行)進行的分支將來指令。在循環0中,將指令I1送入處理管線之擷取級。在循環1中,將第2B圖所示之指令序列之第一指令送入該管線中,即,分支將來指令BF。指令I1亦進行至在此循環中之解碼級。在循
環2中,將加法指令ADD1送入該管線中,並解碼分支將來指令BF。在解碼分支將來指令BF時,分支將來指令解碼電路系統122獲取指示在程式指令之序列中分支將來指令BF之後的預定指令的分支點資料及可儲存在分支控制資料快取記憶體130中的分支目標資料。在此情形中,該分支點資料指示另一分支指令BX。
在循環3中,將另一指令(ADD2)送入處理管線中。分支控制電路系統124識別了程式指令之序列已到達該預定指令,且應觸發從分支目標位址開始分支至處理程式指令。由此,在下一循環(循環4)中,將來自於分支目標位址處之程式指令的第一指令I1BT送入處理管線中。相似地,在循環5及循環6中,將兩個其他指令I2BT及I3BT送入處理管線中。
第3B圖說明當處理第3A圖之指令時資料處理設備100之程式流。可以看到,首先由該資料處理設備處理包括I1、BF、ADD1及ADD2之指令之第一序列。歸因於分支將來指令BF,ADD2之處理指示分支應發生在從分支目標位址開始之程式指令之另一序列。此另一序列包括分支目標指令I1BT、I2BT及I3BT。可在第3B圖中看到,該程式流分支離開包括分支將來指令之程式指令之第一序列,並處理該等分支目標指令。I1BT、I2BT及I3BT可係算術及邏輯指令、導致執行記憶體操作的資料處置指令、或任何其他類型指令。
如第3B圖所示,分支將來指令BF導致緊接著繞過分支指令BX之ADD2指令之後的分支。分支指令BX可包括在程式指令序列中,該程式指令用於儲存在分支控制資料快取記憶體130中之分支將來狀態資料在分支將來指令BF與BX之間失效的事件。例如,在下列事件中:重置該處理電路系統;迴圈控制電路系統或迴圈結束指令決定不需要包含該分支將來指令之程式迴圈之額外迭代;進入異常;異常尾鏈,藉以處理從處理當前異常直接進行至處理下一異常而不恢復在當前異常之前的狀態;執行大於預定立即目標位址範圍的分支指令;執行分支指令;迴圈開始指令;從異常返回;執行導致該資料處理設備之指令快取記憶體失效的指令;執行去能快取該控制資料之指令;執行去能分支預測之指令;該處理電路系統決定在程式迴圈本體中之分支指向不在迴圈開始指令與迴圈結束指令之間的位址;在操作之安全模式與操作之非安全模式之間切換;以及一或更多個實施方式定義之條件;對應於分支將來指令的任何儲存之分支點資料可失效。因此,執行由該分支將來指令指示之分支不再係可行的。由此,分支指令BX作為備份包括在序列程式指令中以分支至目標位址。然而,在正常情況下,將不處理分支指令BX。
第3C圖示意地說明包括分支將來及鏈路指令BFL之程式指令序列。BFL指令導致分支至子常用程式函數:當到達指令MUL時。BFL指令亦導致返回位址值
儲存至鏈路暫存器LR中,該返回位址值指示當已執行該子常用程式函數時所返回之CMP指令之位址。在一些實施例中,BFL指令可將返回位址值儲存至鏈路暫存器LR中。在其他實施例中,BFL指令可將鏈路指示符旗標儲存在分支控制資料快取記憶體130中,且若設定該鏈路指示符旗標,則當觸發分支至該分支目標位址時,分支控制電路系統124可將返回位址值儲存至鏈路暫存器LR。
第4圖圖示一種用於分支將來處理之方法之實例。在步驟401中,解碼分支將來指令。該分支將來指令包括分別指示分支目標位址之可程式化參數及指示在程式指令序列中該分支將來指令之後之預定指令的分支點資料。該方法隨後進行至步驟402,此處決定該程式指令序列是否已到達該預定指令。當決定該程式指令序列已到達該預定指令時,該方法進行至步驟403,此處觸發從該分支目標位址分支至程式指令處理。
第5圖圖示一種用於分支將來處理之方法之另一實例。在步驟501中,解碼分支將來指令。如先前所述,該分支將來指令包括分支目標位址及指示在程式指令之該序列中該分支將來指令之後的預定指令的分支點資料。在步驟502中,將分支點資料及分支目標位址儲存在迴圈/分支控制快取記憶體中。在具有鏈路指令之分支將來情形中,該返回位址亦可利用鏈路暫存器LR儲存,在替代實施例中,具有鏈路指令之分支將來將導致儲存鏈路指示符旗標。處理隨後進行至步驟503,此處監控正在處
理之程式指令序列是否到達該預定指令。若尚未到達預定指令,則在步驟504中檢查該分支目標位址及該分支點資料是否已失效。在於步驟504之失效事件中,處理移動至步驟506,此處忽視該分支將來指令,且正常程式流前進。然而,若決定該資料仍係有效,則處理返回步驟503。當決定已到達該預定指令時,處理進行至步驟505,此處觸發從該分支目標位址開始分支至程式指令處理。在步驟502中儲存鏈路指示符旗標之實施例中,該處理電路系統應檢查以查看在步驟505中是否設定此旗標,且在決定已設定該旗標時,將該返回位址儲存在鏈路暫存器LR中。
第5A圖圖示指令之實例序列以說明可隨著條件分支將來指令出現之問題及用於解決此問題之技術。若滿足對應條件(例如,相等EQ),則指令之序列包括用於分支至某些目標位址之條件分支BEQ。包括規定與分支BEQ相同之條件EQ且亦規定參數「func」的對應條件分支將來指令BFCSEL,該參數「func」指示該分支目標位址及用於識別該位址BP之分支點資料BP,應僅在位址BP之前進行該分支。因此,若滿足EQ條件,當僅在點BP之前處理到達該指令ADD2時,將觸發分支至分支目標指令I1BT。正常情況下,若不滿足與條件分支相關之條件,則不應進行分支且替代地程式流順序地繼續。吾人將期望分支將來指令BF以相似方式作用,使得若不滿足針對分支將來指令BFCSEL之條件,則在ADD2指令
之後,不應分支至分支目標位址「func」,而是應執行於分支點BP處在指令ADD2之後的下一指令。
然而,在ADD2之後的指令係對應於分支將來指令BFCSEL之條件分支BEQ,並且由於已知針對分支將來指令BFCSEL而言不滿足EQ條件,分支BEQ將亦不滿足其條件。因此,當不滿足該條件時,存在引入該處理管線中之兩種「浪費」指令(分支將來指令BFCSEL及分支指令BEQ),該等指令佔據擷取/解碼/發佈/執行時槽而不觸發任何實際處理操作(失敗分支實質上表現為無操作(no-operation;NOP)指令)。因此,儘管在通過分支條件之情形中包括分支將來指令BFCSEL可改良效能,但當未通過該條件時,包括分支將來指令BFCSEL實際上導致效能損失,因為現在存在兩種浪費指令(分支將來指令BFCSEL及分支BEQ),而非不包括分支將來指令BFCSEL時的一個浪費指令(分支BEQ)。此舉使得針對編譯器而言難以決定包括分支將來指令BFCSEL是否係合理的-決定是否如此操作或可不取決於滿足該條件之機率,該機率可係資料依賴的並且可於編譯時間非常難以預測。
第5A圖圖示可如何解決此問題。除條件代碼EQ、分支點資訊BP及目標位址資訊「func」之外,條件分支將來指令BFCSEL亦可規定分支旁路參數「end」,該參數指示分支旁路指令I2之位址,該分支旁路指令係與分支將來指令BFCSEL相關之在隨後分支指
令BEQX之後的指令。若滿足與分支將來指令BFCSEL相關之條件,則分支將來指令解碼電路系統122控制該處理電路系統以與上文所論述者相同之方式將分支目標位址資料及指示恰在點BP前之預定指令ADD2之分支點資料儲存在分支控制資料快取記憶體130中。另一方面,若不滿足與分支將來指令BFCSEL相關之條件,分支將來指令解碼電路系統122控制該處理電路系統以將識別分支點BP之分支控制資料及分支旁路指令儲存在分支控制資料快取記憶體130中。因此,當處理到達分支點BP時,若不滿足該條件,則不是順序進行至下一指令BEQ,分支控制電路系統124觸發分支至分支旁路指令I2。
此舉意謂無論是否滿足與條件分支將來指令相關之條件,未到達分支指令BEQ本身,除非在到達分支點BP之前該分支控制資料失效。因此,不存在由引入分支將來指令BFCSEL導致之損失,因為無論滿足還是不滿足該條件且無論該分支將來指令是否包括在內,與分支控制相關之指令時槽之數量仍係1。因此,此舉意謂編譯器可使用分支將來指令而無需評估包括該分支將來指令是否能夠引入效能損失,並且由此使分支將來指令利用率更為可能使得當實際執行程式代碼時,可更經常地達成於分支點處減少分支延遲之效能益處。
分支旁路參數「end」可以各種方式在條件分支指令中編碼,或可係隱含的並因此可完全不需要編碼。例如,「end」位址可在暫存器中規定或作為立即值,並
且可規定為絕對值或相對於分支將來指令本身BFCSEL之程式計數器位址來規定。然而,實務上,由於分支旁路指令I2將通常僅遵循來自分支點BP之數個指令,可更有效地將該分支旁路參數編碼為相對於分支點處之預定指令ADD2之位址規定的位址,進而減少編碼該分支旁路參數所需之位元數量。一些實施例可允許分支點BP規定在分支指令BEQ之前任意數量的指令。例如,此舉可允許控制指令,諸如用於評估與當從該分支點以及分支本身分支時將繞過之分支BEQ相關之條件的比較指令。在此情形中,該分支旁路參數可係規定該分支旁路指令相對於預定指令於分支點處偏移某一位址步距值之數倍的二進制數值(例如,2或4位元組)。
然而,其他實施例可假設分支點BP係緊接在分支BX之前的指令ADD2且分支旁路指令I2係緊接在該分支之後的指令,因此在ADD2與I2之間存在一個指令。若全部分支指令具有某些固定指令長度,則在於分支點BP處之指令ADD2與分支旁路指令I2之位址之間的偏移可分開某一已知偏移量,並且因此在該分支將來指令中可完全不需要編碼分支旁路參數「end」。
另一方面,即使假設分支指令BX係於分支點BP處分開分支旁路指令I2與指令ADD2的唯一指令,一些實施方式可支援可變指令長度並因此插入分支指令BEQ可具有數個指令長度之一。在此情形中,在條件分支將來指令BFCSEL中旁路參數「end」可藉由規定隨
後分支指令BEQ之長度來識別該分支旁路指令而不需要擷取並決定分支指令BEQ之長度,例如,若針對該分支指令而言存在兩種可能指令長度(例如,16位元或32位元),則該旁路參數「end」可由1-位元旗標表示。
第5B圖圖示指令之另一示例序列,其圖示使用對應於相反條件之一對分支將來指令BFCSEL。程式在程式流中相對常見地需要「fork」,若滿足條件,則需要分支至第一段代碼,且若不滿足條件(例如,用於處置if-then-else構造),則需要分支至第二段代碼。因此,該程式指令序列可包括對應於相反條件(例如,相等EQ及不相等NE)的一對分支指令BEQ及BNQ。為了在處置該等分支時減少延遲,對應條件分支將來指令BFCSEL可分別包括相反條件EQ及NE。因此,無論是否滿足EQ或NE條件,應使用分支至「func1」或「func2」之一者。
若該對分支將來指令之第一者BFCSEL EQ未通過其條件,則分支將來指令解碼電路系統122控制該處理電路系統將分支控制資料儲存在分支控制資料快取記憶體130中,該分支控制資料規定於如上文所論述之旁路位址「end」處的分支旁路指令。第二分支將來指令BFCSEL NE將隨後通過其條件,並因此不在到達第一分支點BP時分支至「end」,所需程式流實際上需要於分支點BP處分支至函數「func2」。因此,若當分支控制資料快取記憶體130已含有回應於較早分支將來指令
設定之有效分支控制資料時分支將來指令通過其條件,則分支將來指令解碼器電路系統122控制該處理電路系統重寫先前設定之分支控制資料。
然而,若該對分支將來指令之第一者BFCSEL EQ通過其條件,則當處理到達該分支點BP時,將資料儲存至分支控制資料快取記憶體130中以控制分支至分支目標位址「func1」。然而,該對分支將來指令之第二者BFCSEL NE將未通過其條件並且將一般將設定在分支控制資料快取記憶體130中之資料以指示於分支點BP處分支至分支旁路位址「end」。然而,重寫先前設定之分支控制資料在此情形中將導致錯誤結果,因為分支至在分支點BP之後於位址「end」處之指令I2將導致不執行兩個函數「func1」及「func2」之任一者。為防止此情況,若當分支控制資料快取記憶體130已含有回應於較早分支將來指令設定之有效分支控制資料集時分支將來指令未通過其條件,則分支將來指令解碼器電路系統122控制該處理電路系統將先前設定之分支控制資料保留在分支控制資料快取記憶體130中。
總而言之,「條件真」分支將來指令重寫回應於先前分支將來指令設定之有效分支控制資料,但「條件假」分支將來指令不重寫回應於先前分支將來指令設定之有效分支控制資料。甚至當在程式流控制中需要「fork」時,此舉確保可正確的使用分支將來指令,其中該程式取決於條件結果分支至兩個替代函數之一。
第6圖示意地說明零負擔之程式迴圈行為。應瞭解零負擔之程式迴圈行為不意謂不存在與支援迴圈行為相關之負擔,而是減少此負擔,諸如,例如,藉由需要迴圈控制程式指令以在第一次通過程式迴圈本體期間佔用在程式執行管線中之時槽,隨後通過得以控制而不需要分開執行彼等迴圈控制程式指令。
程式流正常地線性進行直至遇到程式分支。在第6圖所說明之實例中,程式流通過指令Ix以到達迴圈開始指令DLS[P]。此迴圈開始指令DLS[P]可呈現預測及非預測行為二者。若包含在迴圈開始指令DLS[P]之後之指令I0、I1、I2、I3之程式迴圈本體將作為向量程式迴圈本體執行,其中針對每次通過該程式迴圈本體處理多個向量元件,則該迴圈開始指令將規定待用於預測之向量元件大小。當此待使用之向量元件大小係小於下層處理系統之最大資料路徑寬度時,則此指示多個向量元件將在每次通過該程式迴圈本體時處理。相反地,若規定之向量元件大小等於最大資料路徑寬度,或不規定資料元件大小,則此指示處理將以純量方式探求,藉以針對每次通過該程式迴圈本體處理一個元件。當在一次通過該程式迴圈本體期間處理複數個向量元件時,可認為此通過對應於針對由在通過該程式迴圈本體期間處理之向量元件數量給出之複數個迭代而言已執行該程式迴圈本體。例如,待執行之程式可需要處理八個元件,即,程式迴圈本體之八個迭代。此舉可藉由兩次通過該程式迴圈本體達成,各次通過在對
應於迴圈之四個迭代的與各次通過該程式迴圈本體並行之四個元件上執行所需處理。在其他實施例中,在八次通過該迴圈期間(各次對應於一個迭代),可分開處理該等元件。
應瞭解,在典型向量實施方式中,效能增加藉由在通過該程式迴圈本體期間並行處理該等向量元件達成。然而,一些實施例可犧牲並行執行之能力以藉由順序執行不同向量元件來降低硬體負擔/複雜性,儘管從程式設計師之觀點,其等似乎對應於單一並行向量處理指令。
在利用複數個向量元件進行向量處理之情形中,該等不同向量元件係在向量處理之不同通道中處理,且可對此等通道各者執行預測。於一個位準,該預測可用於在給出針對相關元件位元寬度可用之資料通道之可用數量情況下,匹配執行之處理與在每次通過該程式迴圈本體期間處理之向量元件之數量。例如,若該處理將在七個向量元件上執行且該向量元件大小使得四個向量元件可在每次通過該程式迴圈本體期間處理,則該全部處理可藉由執行一次通過該程式迴圈本體(其中並行處理四個向量元件)接著最後通過該迴圈本體(其中並行處理三個元件且歸因於在該程式迴圈本體中預測該程式指令而在其操作中抑制該向量處理之一個通道)達成。
此預測匹配通過該程式迴圈本體之迭代數量與該處理之資料路徑寬度及向量元件大小。出於關於正在執行之計算的其他原因,例如,由該等程式指令所規定,
該預測可添加至額外預測,該預測用以抑制在給出通過該程式迴圈本體期間在該等處理通道中之處理。兩個此等形式之預測可結合以提供向量元件在通過程式迴圈本體之執行時對該等向量元件之全部預測。
返回第6圖,迴圈開始指令具有與其相關之參數,該參數規定將執行程式迴圈本體之次數(若不執行向量化,對應於純量迴圈迭代之數量),此由儲存在暫存器Rn中之由DLS(P)指令複製至暫存器LR之值指示。暫存器LR可係亦用作鏈路暫存器以儲存在程式呼叫返回時將使用之返回位址的暫存器,並且由此可期望在執行DLS(P)指令之前將此鏈路暫存器之內容保存至程式堆疊。迴圈開始指令DLS(P)亦具有相關參數「loopend」,該參數指示零負擔迴圈之結束之程式位址並且係緊接著迴圈結束指令DLE之指令。
在迴圈開始指令DLS(P)之後,發現一或更多個程式指令,例如,I0、I1、I2、I3,該等程式指令形成程式迴圈本體。應瞭解,程式迴圈本體可係短且簡單或長且複雜(例如,可含有額外迴圈或分支)並且可在一些情況中僅包含單一指令。實務上,短程式迴圈本體成比例更多地從使用零負擔迴圈獲益,因為若程式迴圈本體本身長度較短,則在各次通過程式迴圈本體時執行習知迴圈控制指令之負擔係較大的。
於程式迴圈本體之結束處存在迴圈結束指令DLE。此迴圈結束指令DLE將迴圈開始參數用作控制其
行為之參數,該迴圈開始參數規定在迴圈開始指令DLS[P]之後該指令之記憶體位址。DLE指令檢查儲存在暫存器LR中之值,該值指示剩餘待執行之迭代之數量。當已執行最後通過該程式迴圈本體時,處理進行至執行在該迴圈結束指令DLE之後的該程式指令,即指令Iz。此舉可藉由直接分支至指令Iz或藉由首先執行DLE指令作為NOP並隨後執行Iz來完成。
第6圖之右手部分示意地說明在何次通過該程式迴圈本體期間執行何指令。在首次通過該程式迴圈本體時,執行迴圈開始指令DLS[P]及迴圈結束指令DLE二者。在執行迴圈開始指令及迴圈結束指令二者之後,設置迴圈控制資料並由該系統硬體儲存該迴圈控制資料。當允許此迴圈行為不受中斷地進行時,此舉允許隨後通過待執行之程式迴圈本體而無需分開執行迴圈開始指令DLS[P]或迴圈結束指令DLE。此在第6圖之右手部分中由追蹤執行之程式指令的實線及指示程式流之跳轉/分支的虛線指示。如圖所示,於最後通過該程式迴圈本體之結束處,該程式執行點可從程式迴圈本體之最後指令I3跳轉至在迴圈結束指令之後的指令Iz而不執行迴圈結束指令DLE。在其他實施例中,由於到該點時該鏈路暫存器LR儲存指示已執行該程式迴圈本體之全部所需迭代的一值,該程式流可通過該迴圈結束指令DLE,其中其動作僅被抑制。
於程式迴圈本體之結束處迴圈結束指令DLE之位置及其在設置並儲存迴圈控制資料方面之動作具有以下結果:若該通過程式迴圈本體被中斷且迴圈控制資料失效,諸如歸因於出現異常,則當繼續進行藉由該程式迴圈本體之處理時,可再次執行迴圈結束指令DLE以恢復必需迴圈控制資料。更特定言之,在出現異常時不需要保留該迴圈控制資料(微架構狀態),而是將維持鏈路暫存器值LR(架構狀態),該值指示已執行了多少次該程式迴圈本體迭代。當執行在通過該程式迴圈本體部分處繼續進行時,則將再次執行迴圈結束指令(儘管若中斷尚未出現,應抑制其執行)並將用以恢復該迴圈控制資料,使得在隨後通過該程式迴圈本體時,繼續進行零負擔迴圈行為並且在此等隨後通過時可避免執行迴圈結束指令。
如上文所提及,當在零負擔迴圈處理期間出現異常/中斷時,控制零負擔迴圈行為之迴圈控制資料可失效。在至少一些情況中,當繼續進行該處理時,其他事件亦可觸發迴圈控制資料失效,該迴圈控制資料隨後恢復。可導致迴圈控制資料失效之事件實例包括:重置該處理電路系統;該迴圈控制電路系統或該迴圈結束指令識別不需要該程式迴圈本體之額外迭代;進入異常;異常尾鏈,藉以處理從處理當前異常直接進行至處理下一異常而不恢復在當前異常之前的狀態;執行具有大於預定立即目標位址範圍之分支指令;從異常返回;執行導致設備之指令快取記憶體失效之指令;執行去能高速緩衝該迴圈控制資料
之指令;執行去能分支預測器或分支預測(經修改之分支預測器可部分用於滿足該迴圈控制電路系統之規則)之指令;該處理電路系統決定在該程式迴圈本體中之分支靶向不在該程式迴圈本體之開始指令與迴圈結束指令之間的位址;在操作之安全模式與操作之非安全模式之間切換;以及特定實施方式可用以使該迴圈控制資料失效之一或更多個實施方式定義之條件。
第7圖示意地說明當執行第6圖所說明之示例零負擔程式迴圈行為時處理管線之各個處理級之內容。在此實例中,該處理管線含有六個級,即擷取、解碼、及執行。第6圖所說明之程式指令被提供/擷取至此處理管線。如圖所示,首次通過該程式迴圈本體包括執行迴圈開始指令DLS[P]及迴圈結束指令DLE二者。因此,存在在首次通過時執行之六個指令(DLS(P)、I0、I1、I2、I3及DLE)。在隨後三次通過該程式迴圈本體時,不需要執行迴圈開始指令DLS[P]及迴圈結束指令DLE且替代地在迴圈控制資料控制下操作之迴圈控制電路系統可用以追蹤通過已執行之程式迴圈本體之數量、識別何時已將在該程式迴圈本體中之最後指令置於該擷取級中及當分支返回該程式迴圈本體之開始指令時用以識別待使用之分支點。在此實例中,指令I0係該程式迴圈本體之開始指令且指令I3係在該程式迴圈本體中之最終/最後指令。在各次零負擔通過該程式迴圈時,四個程式指令(I0、I1、I2及I3)流過該處理管線。在第四次通過該程式迴圈本
體時執行最後指令I3之後,儲存在鏈路暫存器LR中之迴圈迭代計數器指示已執行全部所需迭代並且由此當到達最後指令I3時,該迴圈控制電路系統將不觸發返回開始指令I0之分支,而是替代地將觸發分支至緊接著迴圈結束指令DLE之指令Iz。在其他實施例中,該迴圈控制電路系統不觸發分支至指令Iz,而是替代地允許程式流繼續至DLE。由於所儲存之迭代計數器係將指示不需要更多迭代之鏈路暫存器LR,該DLE指令將不執行任何操作且程式流將在指令Iz上繼續。在一些實施例中,此途徑將更容易實施,且由於當到達迴圈結束時僅執行一個其他DLE指令,該效能影響可係最小。
第8圖示意地說明與指令管線之擷取級1002相關的迴圈/分支控制電路系統系統1000之一個實例之形式及操作。該迴圈/分支控制電路系統系統至少部分由儲存在迴圈/分支控制快取記憶體1004中之迴圈/分支控制資料控制。應瞭解,可使用相同或相似電路系統控制其他處所述之零負擔迴圈行為及分支將來行為。例如,當該系統處於其中未設定DoLoop旗標(其指示零負擔迴圈行為係活動的)並且仍將該迴圈/分支控制資料旗標為有效的狀態時,分支將來行為可使用該迴圈控制資料(或與其相似之資料)及迴圈/分支控制電路系統系統1000支援。
返回第8圖及其在控制零負擔迴圈行為方面之用途,作為迴圈結束指令DLE之結果,將迴圈控制資料載入迴圈控制快取記憶體1004。該迴圈結束指令係由
第1圖所說明之迴圈結束解碼電路系統123來解碼。亦可藉由執行分支將來指令BF將資料載入此快取記憶體1004中,該分支將來指令使用第1圖所說明之分支將來指令解碼電路系統122來解碼。
迴圈控制快取記憶體1004可在一些實施例中重新使用儲存區,該儲存區亦用作故障症候群暫存器或在出現故障時儲存故障症候群資料之暫存器。此等暫存器可具有至少一個與其相關之有效位元fv,該有效位元指示儲存在其中之任何資料是否係有效故障症候群資料。當相關暫存器替代地儲存迴圈控制資料或分支將來資料時,迴圈/分支控制電路系統系統1000及迴圈開始與迴圈結束指令之動作可用以將與故障症候群資料相關之此故障暫存器有效位元fv設定為無效狀態。在一些實施例中,可能認為保留故障症候群資料更為有效,其允許零負擔迴圈行為進行並且由此若任何假症候群暫存器儲存故障症候群資料(由故障暫存器有效位元fv指示),則迴圈結束指令之解碼不允許重寫此有效故障症候群資料並且零負擔迴圈行為將被抑制(儘管迴圈開始及迴圈結束指令之存在仍將確保由其明確執行來執行正確數量之程式迴圈本體迭代)。
出於診斷/分析目的,迴圈控制電路系統1000亦產生追蹤輸出以用來形成追蹤資料。儘管已經避免執行該迴圈結束指令並且在首次通過該程式迴圈本體之後零負擔迴圈操作期間尚未明確(分開地)發生,當執行零負
擔迴圈時,迴圈控制電路系統在執行此指令時或在迴圈/分支控制電路系統系統1000之控制下控制分支返回該開始指令時產生對應於執行迴圈結束指令DLE之追蹤輸出。儘管迴圈結束指令尚未明確/分開地執行,提供包括指示對應於迴圈結束指令執行之事件的追蹤資料之追蹤輸出,當執行診斷及分析操作時在習知意義上使該追蹤輸出較為容易遵循並理解。
儲存在迴圈控制快取記憶體1004中之迴圈控制資料可具有各種形式並包括不同類型之用於控制該零負擔迴圈行為及該分支將來行為之資料。特定言之,該迴圈控制資料可例如包括以下中一或更多個:迴圈開始資料,指示開始指令之位址(直接或經由具有從該位址至開始指令之預定偏移的位址指示此位址);迴圈開始偏移位址,指示在立即進行至迴圈結束指令之程式迴圈本體之最後指令與該程式迴圈本體之開始指令之間的距離;迴圈結束資料,指示立即進行至迴圈結束指令的程式迴圈本體之最後指令之位址;迴圈剩餘指令資料,指示在到達立即進行至迴圈結束指令的程式迴圈本體之最後指令之前剩餘待處理之指令之數量;迴圈剩餘大小資料,指示在到達立即進行至迴圈結束指令的程式迴圈本體之最後指令之前儲存剩餘待處理之程式指令的程式儲存記憶體位置之數量;以及迴圈控制有效資料v,指示該迴圈控制資料係有效的,例如,尚未發生如先前所述之失效事件。
在一些示例實施例中,迴圈控制快取記憶體1004可含有多個條目,使得可同時支援多個操作。在迴圈控制快取記憶體1004中之此等條目各者進一步具有與其相關之有效位元v,該有效位元指示其是否係當前儲存之有效迴圈控制資料。針對該迴圈控制資料而言,在出現上文所述之各種失效事件之一時可清除此有效位元v以指示失效。在此示例實施例中,說明迴圈控制快取記憶體1004具有兩個條目。此舉允許同時支援零負擔迴圈及分支將來行為二者。在其他實施例中,足夠用於僅單一條目之儲存可提供在迴圈控制快取記憶體1004中並由此可於給定時間支援僅零負擔迴圈行為或分支將來行為之一者。應瞭解,迴圈控制快取記憶體1004亦用作分支控制快取記憶體。相同雙函數亦由迴圈控制電路系統1000提供。
如第8圖所說明,迴圈控制電路系統1000用以監控與從指令快取記憶體1006載入擷取級1002中的程式指令I相關之記憶體位址。當所載入之程式指令位址匹配(或具有預定關係,例如,有預定偏移)由儲存在迴圈控制快取記憶體104中之迴圈控制資料指示為在零負擔迴圈之程式迴圈本體中之最後指令的該程式指令之位址時,迴圈控制電路系統1000決定是否存在待由系統穿過該程式迴圈本體執行的剩餘通過(由在鏈路暫存器LR中之值指示),並且若存在此等剩餘通過,則觸發分支至該程式迴圈本體之開始指令。以此方式,在儲存在迴圈控
制快取記憶體1004中之迴圈控制資料之控制下作用的迴圈控制電路系統1000能夠決定是否需要額外迴圈迭代,並且若需要額外迴圈迭代(針對待處理之給定元件通過該程式迴圈本體),則控制該處理電路系統(執行由該處理管線執行之指令的指令管線及系統之其他元件)以執行由該程式指令規定之處理操作或在迴圈結束指令之前的程式迴圈本體,但不包括該迴圈結束指令(在除第一次通過外通過該程式迴圈本體時其本身不需要分開執行,經受尚未發生之迴圈控制資料之失效事件)。
第9圖示意地說明迴圈控制電路系統1000之一個示例形式可如何使用該迴圈控制資料之一部分以與取決於與待由擷取級1002擷取之下一指令(可不係指令記憶體位址本身,例如,可具有自其之固定偏移)相關的當前程式計數器值之資料相比較以決定是否需要分支至該程式迴圈本體之開始指令。更特定言之,該迴圈控制資料可包括位元之適當子集,該等位元指示迴圈結束指令之記憶體儲存位址。例如,該迴圈控制資料可包括從正常32位元之位元2延伸至位元x的位元欄位、對應於記憶體儲存位置之位元組定址之記憶體位址。此與在與待由擷取級1002提供擷取之下一指令相關之記憶體位址中的對應位元位置相比較。在此示例實施例中程式指令係32位元程式指令,該指令在位元組定址之記憶體位址空間中對準使得至少兩個有效位元1:0係不變的,並由此不需要經受比較以識別分支至迴圈開始位址之需要。應瞭解,第9圖
之實例僅係一種方式,以此方式迴圈控制電路系統1000可識別在正在被擷取至擷取級1002中的程式迴圈本體中之最後指令並且由識別分支至迴圈開始位址之需要,即,分支至該程式迴圈本體之開始指令。執行分支之此需要可以額外方式達成,諸如計數通過該程式迴圈本體進行擷取之指令數量、計數通過擷取該程式迴圈本體指令之儲存位置數量(此技術可適用於採用可變長度指令之實施例)、或其他技術。
第10A圖係示意地說明在解碼迴圈開始指令時之行為的流程圖。於步驟2000,處理等到迴圈開始指令DLS(P)由迴圈開始指令解碼器電路系統解碼。步驟2002決定儲存在由參數Rn規定之暫存器中的迭代計數是否等於零。若該迭代計數等於零,則此指示不需要通過(迭代)該程式迴圈本體且處理進行至步驟2004,於此步驟執行分支至迴圈結束指令DLE之後的指令或利用抑制遇到之指令各者遍歷該程式迴圈本體,諸如藉由抑制寫回及來自彼等指令之其他副效應。
若於步驟2002決定該迭代計數不係零,則處理進行至步驟2003,於此步驟決定於步驟2000解碼之指令是否係所預測之迴圈開始指令DLSP。若是,則處理直接進行至步驟2006。若否,則步驟2005將元件大小設定為在處理再次進行至步驟2006之前的全部向量大小,於步驟2006產生指示可在一次通過該程式迴圈本體中處理之向量元件之最大數量的值Nmax。在其他實施例中,計
算Nmax不必作為DLS(P)指令之部分進行,例如,該計算可作為在如第13圖所說明之DoLoop中處理的指令之部分完成。此值Nmax取決於與由迴圈開始指令規定之向量元件大小相比處理管線之處理電路系統之資料寬度。在整個執行零負擔迴圈行為中Nmax值係靜態,並且因此所產生之值不必明確儲存,而是如需要且當需要時僅用以控制該向量行為。
步驟2008用以設定旗標,該旗標指示DoLoop狀態係有效的且該系統當前正在處理DoLoop(即,零負擔迴圈行為係活動的),亦將該迴圈迭代計數複製至鏈路暫存器LR,其中該計數將由該迴圈控制電路系統使用。處理隨後進行至步驟2010,於此步驟預先擷取並執行程式迴圈本體之開始指令。
第10B圖示意地說明迴圈開始指令DLS(P)。這包括將該指令識別為DLS(P)指令之作業碼欄位ENC。參數欄位亦包括在內以規定含有該迭代計數Rn之暫存器(待轉移至鏈路暫存器LR)、其中定位該迴圈結束指令之指示符(可以各種方式規定為規定先前所述之分支目標位址之BF)、及元件大小值。若將該元件大小值設定為該資料路徑之全部向量大小,則該指令將被處理為非預測,即,DLS指令。若該元件大小小於,則此指示該迴圈應使用規定之向量大小的元件來向量化並作為預測之迴圈開始指令處理。
向量元件大小VE寬度儲存在浮點控制資料暫存器中,當浮點資料值係可存取時該暫存器係可存取的並且當浮點資料值係不可存取時該暫存器係不可存取的。當該浮點資料值係可存取時,從該迴圈開始指令解碼之向量元件大小VE寬度儲存在浮點控制資料暫存器中並控制在資料路徑中之向量化。若該迴圈開始指令係非預測的,則將該向量元件大小設定為向量暫存器寬度VR寬度。
當浮點資料值係不可存取時,例如,浮點狀態尚未經初始化,嘗試從浮點控制資料暫存器讀取VE寬度返回了獨立於當前儲存在該浮點控制暫存器(亦不可存取)中之任何VE寬度值之VR寬度值。若部分通過迴圈執行使該浮點值可存取(初始化),則將保存任何現存浮點狀態(例如,藉由惰性狀態保存機制)並將初始化新的浮點狀態,包括將儲存在浮點控制資料暫存器中之VE寬度值初始化為VR寬度(針對特定實施方式硬連線)。因此未改變在該迴路中之向量化。
第11圖係示意地說明在解碼迴圈結束指令DLE時之動作的流程圖。於步驟2012處,處理等到迴圈結束指令DLE由迴圈結束指令解碼器解碼。步驟2014隨後決定當前是否設定DoLoop旗標。若當前不設定DoLoop旗標,則此指示零迴圈行為當前不係活動的且處理進行至步驟2013,於此步驟抑制迴圈結束指令之執行,諸如藉由將其處理為非操作指令(no-operation instruction;NOP)。
若於步驟2014決定設定了DoLoop旗標,則步驟2018用以將迴圈控制資料儲存至迴圈控制快取記憶體1004中。此迴圈控制資料可包括例如指示開始指令之指令位址的資料、對應於DLE指令之記憶體儲存位址之位元的最低有效位元之欄位(不包括固定指令對準導致的任何不變位元)及指示該迴圈控制資料係有效的有效位元。亦可如先前描述儲存迴圈控制資料之其他形式。
步驟2020決定當前迭代計數是否小於或等於先前回應於DLS(P)迴圈開始指令產生之Nmax值。若迭代計數小於或等於Nmax值,則此指示已到達迴圈結束指令之當前通過該程式迴圈本體係最後需要之通過該程式迴圈本體並由此處理進行至步驟2016。若於步驟2020決定該迭代計數不小於或等於Nmax值,則處理進行至步驟2022,於此步驟該迭代計數遞減了Nmax。
步驟2024隨後執行分支至該程式迴圈本體之開始指令。
第12圖係示意地說明迴圈控制電路系統1000之動作的流程圖。於步驟2026,迴圈控制電路系統1000決定是否該迴圈控制資料當前標記為有效。若將該迴圈控制資料當前旗標為有效,則處理進行至步驟2028,此處決定提供至管線(即,擷取至擷取級1002)之最新指令是否係由匹配該迴圈控制資料之待擷取的下一指令之位址指示的在該程式迴圈本體中之最終指令。若偵測到在該程式迴圈本體中擷取此最終指令,則處理進行
至步驟2030,於此步驟決定該迭代計數是否當前小於或等於值Nmax。若該迭代計數小於或等於值Nmax,則處理進行至步驟2032,於此步驟清除DoLoop旗標並清除迴圈控制資料有效位元v。這指示完成了零負擔迴圈行為。針對零負擔迴圈行為實例,隨後完成迴圈控制電路系統1000之處理。該迴圈結束指令將隨後如關於第11圖所論述來處理,例如,圍繞此迴圈結束指令DLE分支。
若於步驟2030決定當前迭代計數(追蹤通過該程式迴圈本體之數量)係不小於或等於值Nmax,則步驟2034用以使該迭代計數遞減了Nmax。步驟2036隨後分支至該程式迴圈本體之開始指令並開始下次通過該程式迴圈本體。
第13圖係示意地說明在零負擔程式迴圈本體中控制指令執行之流程圖,且特定言之,此控制可如何包含預測。步驟2038決定是否存在待執行之指令。步驟2040隨後決定是否設定DoLoop旗標,該旗標指示此執行發生在零負擔迴圈程式迴圈本體中。若未設定DoLoop旗標,則指令處理於步驟2050正常進行。若於步驟2040決定設定了DoLoop旗標,則步驟2042決定Nmax值是否大於剩餘之迭代計數。若Nmax值不大於剩餘之迭代計數,則步驟2044將用於待執行之程式指令的活動通道之數量設定為Nmax。由於可在待於步驟2048執行之指令中編碼的額外預測或在步驟2048或2050中執行之先前指令,活動通道之此數量可在實務上降低。若於步驟2042
決定Nmax值大於剩餘之迭代計數,則步驟2046將用於指令之活動通道之數量設定為剩餘之迭代計數值。當不存在需要在此等通道中處理的向量元件時,此舉避免處理通道之活動使用。步驟2048隨後使用設定數量之活動通道於步驟2038執行識別為需要執行的指令。
該指令之向量化效能可取決於正在執行之指令類型。更特定言之,達成由經選擇之活動通道數量指示之預測的方式可取決於正在執行之指令之性質及相關系統之資料路徑之性質變化。例如,預測可藉由抑制寫回資料通道(例如,位元組啟用)應用,該預測已經由將資料預測為非所需來指示。在此情形中,當產生預測值時所應用之元件大小可與由處理指令應用之元件大小不同。因此抑制於較小元件大小之寫回可導致僅部分單一算術操作,諸如寫回加法。在不能容易分割指令之情形中,所應用之預測可於位元組位準規定,但取決於僅一個位元組預測值(諸如用以預測執行之資料處理之全部字組的最低有效位元組)實施。
如上文所論述,迴圈控制電路系統1000可取決於儲存在預定狀態暫存器中之控制參數來控制該迴圈計數器之更新,該控制參數指示待回應於該程式迴圈本體之一個向量指令而處理的數個向量元件。例如,該控制參數可係指示由該迴圈處理之一個向量元件之大小的VE寬度,其允許決定每個迴圈迭代處理之元件數量,使得該迴圈計數器可藉由遍歷該迴圈本體處理之數個向量元件在
各個迭代時更新。注意到VE寬度係針對處理該迴圈所定義之一個向量元件之大小。亦可將單獨之向量元件大小IVE寬度規定為在該迴圈中向量指令之參數之一,該參數通常匹配針對迴圈整體規定之VE寬度,但不需要相同。允許針對迴圈整體規定之獨立元件大小及在該迴圈中之指令可用於支援其中在該迴圈中待處理之一個「元件」實際上含有經分配至向量指令之不同向量元件的多個組件之情形。例如,複數可具有實數及虛數部分,並且可支援複數算術向量指令,該指令假設一或更多個數字之實數及虛數部分經分配給交替向量元件。在此情形中,即使個別向量指令規定32位元元件,例如,該迴圈整體可認為一個「元件」具有64位元,因為其包含實數及虛數部分二者。因此,本文所提及之VE寬度指由迴圈控制電路系統所見之向量元件大小,其不需與該迴圈中向量指令使用之實際元件大小相同。
該迴圈尾部預測以屏蔽(Nmax-迴圈計數)在該迴圈之最後迭代時的向量通道亦可取決於儲存在預定狀態暫存器中之參數。例如,該迴圈尾部預測可取決於指示是否需要預測之旗標,並且當需要預測時,在最後迭代時執行之活動通道之數量可獲自儲存在預定狀態暫存器中之VE寬度(與儲存在鏈路暫存器中之迴圈計數器「迴圈計數」相結合)。在迴圈結束處,正應用之任何迴圈尾部預測可藉由在預定狀態暫存器中重置該旗標而去能,使得在該迴圈之後之向量指令將無需尾部預測而操作。或
者,是否需要預測可直接由迴圈計數及VE寬度決定,使得可不需要明確預測旗標。在本文中,迴圈尾部預測係指功能,其中,當Nve/Nmax不等於整數時,其中Nve係在該程式迴圈本體之數個迭代期間待處理的向量元件(大小為VE寬度)之總數量及Nmax係在該程式迴圈本體之一個迭代中待處理之向量元件(再次具有大小VE寬度)之最大數量,迴圈控制電路系統1000在一或更多個該迭代期間至少部分抑制在一或更多個該向量處理通道中之處理使得在該等迭代期間處理之向量元件之總數係Nve。儘管下文實例描述了其中將迴圈尾部預測應用至最後迴圈迭代之情形,但其他實施方式亦可在較早迴圈迭代中應用該迴圈尾部預測以給出相同結果。注意到具有大小VE寬度之一個元件之預測可需要針對在該迴圈中之個別向量指令屏蔽之超過一個具有大小IVE寬度之元件,在如上文所論述其中VE寬度>IVE寬度之情形中。
然而,該預定狀態暫存器可係並非始終可存取之暫存器。例如,該預定狀態暫存器可係與浮點上下文資料相關之暫存器,例如,浮點控制暫存器1110(參看第8圖),其係第1圖所示之浮點暫存器110之一。為減少需要在上下文切換時保存之狀態量,不需要浮點操作之處理預設係未分配浮點狀態,並且儲存在控制暫存器中之浮點狀態可存取性旗標(或惰性狀態保存狀態旗標)可指示該浮點上下文是否對當前過程可存取。在上下文切換時,若該狀態可存取性旗標指示該浮點上下文當前不可存取,
則該浮點上下文不需要保存至記憶體。回應於需要浮點上下文之指令,當該浮點上下文當前不可存取時,執行惰性狀態保存操作以將儲存在浮點暫存器中之任何先前上下文資料保存至記憶體,並隨後使該等浮點上下文暫存器對當前過程可存取及更新狀態可存取性旗標以指示該浮點上下文現在係可存取的。
預定狀態暫存器不可存取之另一情況係若已經定義去能當前特權級別或過程存取該暫存器之存取許可。例如,一些系統可提供許可檢查電路系統1008(參看第8圖)以檢查用於控制對暫存器之特定子集(包括該預定狀態暫存器(例如,浮點暫存器))之存取的存取許可資料,並用以當偵測到存取違反該存取許可資料之暫存器之子集之一時,觸發故障條件。該故障可觸發作業系統檢查該存取許可且若需要將當前儲存在暫存器中之特權資料保存至記憶體使得在改變該存取許可以使暫存器子集對觸發該故障之過程/優先等級可存取並將處理返回至非特權過程之前,該特權資料可從觸發該故障之非特權過程隱藏。
即使使該浮點上下文於該迴圈之開始處可存取以用於設置所需向量元件寬度VE寬度,不能假設該浮點上下文將於該迴圈之結束處仍係可存取,因為在導致當前過程之上下文失效的迴圈期間可出現異常,並且在該異常之後恢復該過程上下文時,該浮點上下文將直到其實際上為與恢復之過程相關之指令所需時才恢復。
因此,於迴圈之結束處,儲存用於控制迴圈計數遞減及/或迴圈尾部預測之參數的預定狀態暫存器可係不可存取的。為能夠重置該迴圈尾部預測資訊,吾人期望提供用於在迴圈之結束處觸發惰性狀態保存或故障條件的功能以允許該預定狀態暫存器變得可存取。然而,此途徑可能有問題,因為觸發惰性狀態保存操作或來自迴圈控制電路系統1000之故障條件而不由指令觸發通常非所欲,因為用於處置故障或狀態保存之架構機制可假設此等操作於特定指令位址觸發。為改良效能,可較佳地省略在該迴圈之最後迭代時一起執行該迴圈結束指令(使得當該迴圈控制資料係有效時回應於偵測到不需要額外迴圈迭代,該迴圈控制電路系統經配置以控制該處理電路系統繼續來自在該迴圈結束指令之後的指令之程式執行)。回應於在迴圈結束指令之前或之後的指令觸發該故障條件或狀態保存可能不適當。因此,於迴圈結束處不存在用於觸發惰性狀態保存或當需要時使浮點上下文可存取之故障條件的適當指令。此外,迴圈控制電路系統1000可與可通常不具有用於觸發暫存器存取之路徑的指令管線之擷取級相關,因此就電路面積而言允許該擷取級觸發狀態保存可能係困難且昂貴的。
這些問題可藉由回應於迴圈結束指令替代地觸發惰性狀態保存操作或故障條件來解決,該迴圈結束指令可在該迴圈之第一迭代時或於其中發生異常之迭代結束處執行(由於異常將使得該迴圈控制資料失效,該迴圈
結束指令將於彼迭代之結束處再次執行)。因此,回應於該迴圈結束指令,當包括預定狀態暫存器之暫存器子集不可存取時,該迴圈結束指令解碼電路系統可產生狀態保存控制信號以觸發保存至儲存在暫存器之該子集中的狀態資料之記憶體中並且使得暫存器之該子集可存取。藉由回應於迴圈結束指令而非在完成該迴圈時觸發該狀態保存操作,不一定於最後迴圈迭代之結束處執行該迴圈結束指令,僅僅由於預防萬一浮點狀態已變得不可存取,允許改良效能。類似地,萬一該存取許可資料禁止存取至包括預定狀態暫存器之暫存器子集,回應於該迴圈結束指令,該迴圈結束指令解碼電路系統可產生控制信號以觸發存取至暫存器子集。因此,若存取當前未由許可檢查電路系統1008允許,將於執行該迴圈結束指令時產生故障,一旦已將任何敏感資料保存至記憶體且在暫存器之彼子集中失效,允許該作業系統進入以授權必需許可。回應於迴圈結束指令之此等操作亦確保迴圈控制電路系統1000可存取用於控制迴圈計數器之遞減的VE寬度參數。
於該迴圈之最後迭代之結束處,回應於偵測到在該程式迴圈本體之迭代之後不需要額外迴圈迭代,該迴圈控制電路系統去能在該一或更多個該向量處理通道中處理之抑制。例如,該迴圈控制電路系統可取決於儲存在預定狀態暫存器中之控制參數來控制在一或更多個該向量處理通道中處理之抑制,並且回應於偵測在該程式迴圈本體之迭代之後不需要額外迴圈迭代,迴圈控制電路系統
1000可決定該預定狀態暫存器是否係可存取的,且當決定該預定狀態暫存器係可存取的時,藉由更新儲存在該預定狀態暫存器中之控制參數產生用於去能在一或更多個該向量處理通道中處理之抑制的預測去能控制信號。當決定該預定狀態暫存器係不可存取的時,迴圈控制電路系統1000抑制預測去能控制信號之產生。
亦即,當該預定狀態暫存器已係可存取的時,迴圈控制電路系統1000僅重置在該預定狀態暫存器中之參數以去能迴圈尾部預測。當該預定狀態暫存器不可存取時,將遇到該迴圈結束指令,因為可導致該暫存器變得不可存取之事件(例如,異常、故障、或上下文切換)亦將使來自迴圈控制快取記憶體1004之迴圈控制資料失效。因此,不需要迴圈控制電路系統1000來觸發惰性狀態保存或故障觸發操作-若於該迴圈之結束處需要,則此將替代地回應於該迴圈結束指令由迴圈結束指令解碼電路系統123觸發。
出於上文給出之原因,該迴圈結束指令觸發檢查儲存規定該元件寬度資訊及迴圈尾部預測控制之控制參數之預定狀態暫存器是否可存取係非常有用的,並且若該暫存器係不可存取的,則觸發故障條件或惰性狀態保存。當所需之預定狀態暫存器係不可存取的時,一些實施方式可通常回應於迴圈結束指令觸發此狀態保存或故障條件。
然而,實務上並非全部迴圈需要於迴圈尾部之預測通道。例如,若該迴圈將使用具有等於該暫存器寬度之元件大小的純量指令或向量指令處理,則每個迭代僅處理一個元件並且因此元件之全部數量通常係該向量長度之確切倍數。因此,在此等迴圈上,不需要對VE寬度或迴圈尾部預測控制參數之存取。針對非預測迴圈而言為避免導致觸發惰性狀態保存或故障條件之效能成本,提供迴圈開始及結束指令之兩個版本:
‧DLS:非預測之迴圈開始指令:規定迴圈結束位址「loopend」及迭代數量rN,而不規定向量元件大小,並因此不改變在浮點控制暫存器中VE寬度參數。VE寬度係預設等於在一個向量暫存器VR寬度中之位元數量。
‧DLSP:預測之迴圈開始指令:規定該迴圈結束位址「loopend」及迭代數量rN,並且亦規定指示向量指令之元件寬度VE寬度的「size」參數。將該元件寬度儲存至該浮點控制暫存器中。若該浮點上下文還不可存取,則DLSP指令觸發惰性狀態保存操作以將先前浮點上下文保存至記憶體,並在將元件寬度儲存至該浮點控制暫存器之前,使該浮點上下文對該當前過程不可存取。
‧DLE:非預測之迴圈結束指令:在DLS指令之後使用。若當該浮點上下文係不可存取時執行,則該迴圈結束指令解碼電路系統不觸發將浮點上下文保存至記憶體之任何惰性狀態。
‧DLEP:預測之迴圈結束指令;在DLSP指令之後使用。若當該浮點上下文不可存取時執行,則該迴圈結束指令解碼電路系統產生控制信號以觸發將浮點上下文保存至記憶體,並且使該浮點上下文可存取。DLEP指令亦觸發對該等浮點上下文暫存器之一(例如,儲存VE寬度之浮點控制暫存器)之存取以確保若針對當前過程/特權等級而言不允許存取浮點上下文,故障條件由存取許可檢查電路系統1008觸發。
於該迴圈之各個迭代之結束處,該迴圈控制電路系統使該迴圈計數器遞減了在彼迭代中處理之元件數量,其源自從該浮點控制暫存器讀取之VE寬度。因此,針對非預測之迴圈,VE寬度=VR寬度,因此針對各個迭代,該迴圈計數器遞減了1。針對預測之迴圈,每個迭代處理之元件數量係VR寬度/VE寬度(針對給定硬體實施方式而言VR寬度可係固定的,因此可不需要在控制暫存器中明確指示)。
藉由提供該迴圈結束指令之兩個版本,則即使異常在通過預測迴圈中途時發生,仍使得該上下文資料得以清空且在從異常返回之後浮點上下文變得不可再次對當前過程可存取,因此此舉將亦使該迴圈控制資料失效,預測之迴圈結束指令將於該迴圈之結束處執行,並且因此若需要則可觸發該惰性狀態保存操作或故障條件以再次使該浮點上下文可存取。然而,針對非預測之迴圈,觸發該惰性狀態保存操作或故障條件之負擔可藉由使用非預
測之迴圈結束指令避免。因此,總而言之,取決於該迴圈結束指令係第一類型迴圈結束指令還是第二類型迴圈結束指令,該迴圈結束指令解碼電路系統可選擇是否產生該狀態保存控制信號。類似地,是否回應於迴圈結束指令觸發存取包括預定狀態暫存器之暫存器子集可取決於該迴圈結束指令係第一類型還是第二類型迴圈結束指令。
第14A圖至第14E圖圖示非預測及預測迴圈之執行實例以說明上文所述之特徵。
第14A圖圖示非預測迴圈之實例,其中在執行該迴圈期間不發生異常。該非預測之迴圈開始指令DLS於迴圈之開始處執行以設置該迴圈結束位址及待執行之迭代數量。由於此係非預測之迴圈開始指令,在浮點控制暫存器中元件寬度VE寬度參數保持不改變。若當前過程還無法存取浮點上下文,則不需要存取並且因此不觸發惰性狀態保存操作或故障條件。於第一迴圈迭代之結束處,執行非預測之迴圈結束指令DLE以設置用於控制隨後迭代之迴圈開始位址,並且再次不需要存取浮點控制暫存器,因此即使浮點上下文可存取性旗標指示該浮點上下文當前不可存取,不觸發惰性狀態保存操作或故障條件。在該迴圈之隨後迭代時,不執行迴圈開始及迴圈結束指令且程式流進行通過該程式迴圈本體之多個迭代。於各個迭代之結束處,由於浮點上下文係不可存取的,迴圈控制電路系統1000不存取該浮點控制暫存器並假設VE寬度=VR寬度,即,每個向量之元件數量係1,並且因此使該迴圈計數器
遞減了1。在最後迭代時,不應用向量迴圈預測,並且在偵測到不要額外迭代時,迴圈控制電路系統1000控制程式流從在迴圈結束指令DLE之前的指令跳轉至在DLE之後的指令,跳過迴圈結束指令並繼續在該迴圈之後的隨後指令處理。
第14B圖圖示預測之迴圈之實例,其中在執行迴圈期間不發生異常。此時該迴圈開始指令係預測之迴圈開始指令DLSP並且因此除設置規定迴圈結束位址之迴圈控制資料及待執行之迭代數量之外,該迴圈開始指令解碼電路系統亦觸發基於由DLSP指令規定之「size」參數在浮點控制暫存器中規定的向量元件寬度VE寬度之更新。因此,若該浮點上下文還不可存取,觸發惰性狀態保存操作或故障條件以使該上下文可存取,使得可更新VE寬度。於第一迴圈迭代之結束處,執行預測之迴圈結束指令DLEP以設置該迴圈開始位址。該迴圈結束指令解碼電路系統從該狀態可存取性旗標偵測到該浮點上下文已可存取,因此不需要惰性狀態保存,且回應於迴圈結束指令DLEP觸發之對浮點控制暫存器之存取不觸發故障。隨後執行該迴圈之隨後迭代而不執行迴圈開始/結束指令。在該迴圈之各個迭代時,迴圈控制電路系統1000基於從浮點控制暫存器讀取之VE寬度決定在迭代中處理之元件數量,並且使該迴圈計數器遞減了元件之所決定數量。在該迴圈之最後迭代時,若如由迴圈計數器指示的待處理之剩餘元件數量小於待由一個向量指令處理之元件數量,迴圈
控制電路系統1000將預測應用至非必須向量通道,及待屏蔽之向量部分由VE寬度及迴圈計數器決定。於最後迭代之結束處,迴圈控制電路系統1000偵測到不需要額外迭代並且因此跳過DLEP指令。由於該浮點上下文已可存取,將在浮點控制暫存器中VE寬度欄位重置為向量暫存器之寬度以針對隨後向量指令去能迴圈尾部預測,並且不需要惰性狀態保存或故障條件。
第14C圖圖示當在該迴圈期間發生異常時非預測迴圈之實例。非預測之迴圈開始及迴圈結束指令DLS、DLE以與第14A圖所述之相同方式執行,並且如第14A圖所述在迴圈之各個迭代時該迴圈計數器遞減了1。異常發生在第三迭代時,其觸發了中斷執行緒上下文之狀態保存。若指示該浮點上下文為可存取,則狀態保存包括保存浮點上下文,而若該浮點上下文係不可存取的,則該狀態保存保存了整數上下文資料而非浮點上下文資料。在從該異常返回時,恢復整數狀態資料並且該浮點上下文資料最初係不可存取的。設定惰性狀態保留旗標以指示惰性狀態保留係活動的,使得若該迴圈之任何隨後指令需要浮點上下文資料,則此將觸發浮點上下文之惰性狀態恢復。若未遇到需要浮點上下文資料之指令,則當到達該迴圈結束指令DLE時,該浮點上下文仍將係不可存取的。由於在出現異常時該迴圈控制資料先前失效,執行迴圈結束指令DLE以重置該迴圈控制資料。由於此係非預測之迴圈結束指令DLE,該迴圈結束指令不觸發惰性狀態保
存至或存取該浮點控制暫存器,即使該浮點上下文係不可存取的。在恢復該迴圈控制資料之後,該迴圈之隨後迭代以與第14A圖相同之方式繼續,並以與第14A圖相同之方式處置該迴圈之最後迭代。因此,當無待處理之剩餘迭代時跳過DLE指令,並且因此在最後迭代時不觸發惰性狀態保留或故障條件,即使該浮點上下文係不可存取的。若自從自異常返回之後仍未清除該惰性狀態保留旗標,則其保持活動並因此在迴圈之後需要浮點上下文之下一指令將觸發惰性狀態保存。此外,若自從自異常返回之後仍未清除該惰性狀態保留旗標,則該迴圈控制電路系統不嘗試將在浮點控制暫存器中之VE寬度重置為向量暫存器之寬度。
第14D圖圖示當在迴圈期間出現異常時預測迴圈之實例。在第一迭代時,預測迴圈開始/結束指令DLSP及DLEP以與第14B圖相同之方式執行。異常出現在迴圈之第三迭代時。此舉觸發了上下文切換至異常處置器或另一執行緒並再次返回,其以與第14C圖相同之方式處置。然而,針對預測迴圈,在返回至具有設定為活動之惰性狀態保留旗標(狀態可存取性旗標)之迴圈本體指令時,解碼預測之迴圈結束指令DLEP觸發了該惰性狀態保存操作(若在該迴圈本體中無較早指令需要浮點上下文)並且亦觸發了存取該浮點控制暫存器使得若針對該當前過程之存取許可不允許存取浮點暫存器,則可產生故障條件以觸發該作業系統授權所需許可。因此,在遇到預測之
迴圈結束指令之後,該浮點上下文變得可用並且因此可能讀取用於控制迴圈計數器更新之VE寬度參數及存取在迴圈之最終迭代時用於控制預測之迴圈尾部預測參數。若在迴圈期間出現超過一個異常,則以與第14D圖所示之一者相似之方式處置各個異常。在最後迴圈迭代時,應用迴圈尾部預測以控制屏蔽未使用之向量通道來確保在該迴圈中處理之元件總數量匹配由迴圈開始指令規定之數量。於最後迴圈迭代之結束處,迴圈控制電路系統1000偵測到該惰性狀態保存旗標係無效的並且因此浮點上下文已可存取,並因此將在浮點控制暫存器中之VE寬度重置為向量暫存器之寬度以去能抑制處理在迴圈期間預測之彼等向量通道。
第14E圖圖示預測迴圈之實例,其中異常發生在迴圈之最後迭代時。在第一迭代時,迴圈開始/結束指令DLSP及DLEP以與第14B圖或第14D圖相同之方式處置,並且亦以相同方式處置在各個迭代時迴圈計數器之遞減。然而,於點*2處,異常發生在最後迭代時,這觸發上下文切換。將先前浮點上下文(包括預測元件寬度VE寬度)保存至記憶體並隨後處理該異常。在從異常返回時,恢復與運行該迴圈之執行緒相關之整數上下文,但未恢復浮點上下文並因此將惰性狀態保存旗標設定為活動。在此實例中,在從異常返回之後執行之第一指令係不需要浮點狀態之純量指令SI1並且因此不觸發惰性狀態保存。儘管在浮點控制暫存器中預測元件寬度VE寬度係不可存
取的,但由於該指令係純量指令這樣沒關係,因此不需要預測。當於點*3處遇到第一向量指令VI2時,認為此係需要浮點上下文之指令(除了需要來自浮點控制暫存器之預測元件寬度VE寬度之外,在一些架構中,該等向量暫存器可與浮點暫存器重疊並且因此當惰性狀態保存旗標係活動時執行向量指令無論如何均可導致惰性狀態保留發生以使該等向量暫存器可存取)。由於該延遲狀態保存旗標係活動的,向量指令VI2觸發了惰性狀態保存操作,該操作使浮點上下文可存取並允許恢復VE寬度使得針對該迴圈之最後迭代之剩餘部分再次啟用預測。
在一些實施例中,該惰性狀態保留過程只是保留了在該等暫存器中之浮點上下文並且不恢復與觸發惰性狀態保留之執行緒相關的浮點上下文。在此等實施例中,該作業系統配置存取許可使得除觸發惰性狀態保留之外,嘗試存取浮點狀態亦觸發了故障,該作業系統可回應於該故障並恢復與觸發了該故障之執行緒相關的浮點上下文。
第15圖示意地說明在一些示例實施例中適用於實施本文所述之技術的虛擬機實施例。儘管前文描述之實施例根據用於操作支援相關技術之具體處理硬體的設備及方法來實施本發明,但亦有可能提供硬體元件的所謂虛擬機實施方式。該等虛擬機實施方式在主機處理器530上運行,該主機處理器530運行支援虛擬機程式510的主機作業系統520。通常,需要大型高效處理器以提供按合
理速度執行的虛擬機實施方式,但此方法在某些環境中可為合理的,諸如當需要運行另一處理器本端的代碼以獲得相容性時,或出於再使用之原因。虛擬機程式510向應用程式500提供應用程式介面,該介面與將由實際硬體提供的應用程式介面相同,該實際硬體是藉由虛擬機程式510模型化的元件。由此,程式指令(包括上述對記憶體存取的控制)可藉由使用虛擬機程式510而在應用程式500內執行,以模型化指令與虛擬機硬體的交互。
儘管已在本文中參考隨附圖式詳細描述了說明性實施例,但應理解,申請專利範圍不限於彼等精確實施例,且熟習此項技術者可在本發明中實現各種變化、添加及修改,而不偏離隨附申請專利範圍之範疇及精神。例如,附屬項之特徵可與獨立項之特徵進行各種組合。
Claims (26)
- 一種用於處理資料之設備,其包含:處理電路系統,用以執行由程式指令規定之處理操作;一指令解碼器,用以解碼該等程式指令以產生控制信號來控制該處理電路系統執行該等處理操作;其中該指令解碼器包含迴圈結束指令解碼電路系統,用以在一程式迴圈本體之一結束時解碼一迴圈結束指令以產生控制信號來控制該處理電路系統儲存迴圈控制資料,進而決定是否需要額外迴圈迭代,並且若需要額外迴圈迭代,則分支至該程式迴圈本體之一開始指令;並且進一步包含迴圈控制電路系統,當啟用時用以決定是否需要額外迴圈迭代,並且若需要額外迴圈迭代,則在該迴圈控制資料之控制下,控制該處理電路系統執行由在該迴圈結束指令之前且不包括該迴圈結束指令的該程式迴圈本體之程式指令規定的處理操作;並且該指令解碼器包含迴圈開始指令解碼電路系統,用以解碼規定一迴圈結束位址的一循環開始指令,該迴圈結束位址識別在該迴圈結束指令之後的一指令,以產生控制信號以控制該處理電路系統,來儲存指示將執行該程式迴圈本體的次數的一迴圈計數值,並且確 定該迴圈計數值是否指示將執行該程式迴圈本體的該次數為零;並且當該程式迴圈本體要被執行零次時,該指令解碼器經配置以控制該處理電路系統,來分支至在該迴圈結束指令之後的該指令或抑制該程式迴圈本體的指令的效應。
- 如請求項1所述之設備,包含一迴圈控制快取記憶體以儲存該迴圈控制資料。
- 如請求項1所述之設備,包含一分支預測器並將該迴圈控制資料提供至該分支預測器並且該分支預測器使用該迴圈控制資料以引導程式流使得處理電路系統執行由在該迴圈結束指令之前並且不包括該迴圈結束指令的該程式迴圈本體之程式指令規定之該等處理操作。
- 如請求項1所述之設備,其中該迴圈控制資料之失效去能該迴圈控制電路系統使得在額外執行該程式迴圈時,再次執行該迴圈結束指令並且再次儲存該迴圈控制資料以重新啟用該迴圈控制電路系統。
- 如請求項4所述之設備,其中在出現以下一或多個時使該迴圈控制資料失效:重置該處理電路系統;該迴圈控制電路系統或該迴圈結束指令決定不需要 該程式迴圈本體之額外迭代;進入一異常;異常尾鏈,藉以處理從處理一當前異常直接進行至處理一下一異常而不恢復在該當前異常之前的狀態;執行具有大於一預定立即目標位址範圍之一分支指令;從一異常返回;執行導致該設備之一指令快取記憶體失效之一指令;執行去能快取該迴圈控制資料之一指令;執行去能分支預測之一指令;執行一分支將來指令;該處理電路系統決定在該程式迴圈本體中之一分支靶向不在該開始指令與該迴圈結束指令之間的一位址;在操作之一安全模式與操作之一非安全模式之間的一切換;以及一或更多個實施方式定義之條件。
- 如請求項1所述之設備,其中該迴圈控制資料包括以下一或更多個:迴圈開始資料,其指示該開始指令之一位址;迴圈開始位址偏移資料,其指示在緊接在該迴圈結 束指令之前的該程式迴圈本體之一最終指令與該程式迴圈本體之該開始指令之間的該距離;迴圈結束資料,其指示緊接在該迴圈結束指令之前的該程式迴圈本體之一最終指令之一位址;迴圈剩餘指令資料,其指示在到達緊接在該迴圈結束指令之前的該程式迴圈本體之一最終指令之前剩餘待處理之指令之數量;迴圈剩餘大小資料,其指示在到達緊接在該迴圈結束指令之前的該程式迴圈本體之一最終指令之前剩餘待處理之程式儲存記憶體位置之數量;以及迴圈控制有效資料。
- 如請求項6所述之設備,其中該迴圈結束資料包括指示該最終指令之一記憶體儲存位址的位元之一適當子集。
- 如請求項1所述之設備,包含至少一個故障症候群暫存器以在發生故障時儲存故障症候群資料,其中將該迴圈控制資料儲存在該至少一個故障症候群暫存器中。
- 如請求項8所述之設備,其中該至少一個故障症候群暫存器具有至少一個相關有效位元,該有效位元指示儲存在其中之任何資料是否係有效故障症候群資料,且當該至少一個故障症候群暫存器儲存該迴 圈控制資料時,該迴圈控制電路系統將該至少一個相關有效位元設定為一無效狀態。
- 如請求項8所述之設備,其中該至少一個故障症候群暫存器具有至少一個相關有效位元,該有效位元指示儲存在其中之任何資料是否係有效故障症候群資料,其中若該至少一個相關有效位元之至少一者係處於該有效狀態,則該迴圈結束指令解碼電路系統不控制該處理電路系統儲存該迴圈控制資料。
- 如請求項1所述之設備,其中每次遍歷該程式迴圈本體時更新迴圈計數值,以執行由該程式迴圈本體規定之該等處理操作,該迴圈計數值指示待執行之剩餘迴圈迭代之數量;其中該迴圈計數值係由數個向量元件更新,該等向量元件已由該程式迴圈本體之該遍歷處理。
- 如請求項1所述之設備,其中由該迴圈控制電路系統控制之分支至該開始指令控制產生對應於該迴圈結束指令之執行的追蹤資料。
- 如請求項1所述之設備,其中該迴圈控制電路系統經配置以取決於儲存在一預定狀態暫存器中之一控制參數,來控制該迴圈計數值之更新,該控制參數指示待回應於該程式迴圈本體之一個向量指令而處理的數個向量元件。
- 如請求項1所述之設備,其中該處理電路系統包含預測迴圈控制電路系統以當Nve/Nmax不等於一整數時操作以至少部分在一或更多個該等迭代期間抑制在一或更多個該向量處理通道中處理使得在該等迭代期間處理之向量元件之一總數係Nve,其中Nve係在該程式迴圈本體之數個迭代期間待處理之向量元件之一總數並且Nmax係回應於該程式迴圈本體之一個向量指令而處理之向量元件之一最大數量。
- 如請求項14所述之設備,其中回應於偵測到在該程式迴圈本體之一迭代之後不需要額外迴圈迭代,該迴圈控制電路系統經配置以去能在該一或更多個該等向量處理通道中處理之該抑制。
- 如請求項14所述之設備,其中該迴圈控制電路系統經配置以取決於儲存在一預定狀態暫存器中之一控制參數控制在該一或更多個該等向量處理通道中處理之該抑制。
- 如請求項16所述之設備,其中回應於偵測到在該程式迴圈本體之一迭代之後不需要額外迴圈迭代,該迴圈控制電路系統經配置以決定該預定狀態暫存器是否係可存取,並且當決定該預定狀態暫存器為可存取時,藉由更新儲存在該預定狀態暫存器中之該控制參數來產生用於去能在該一或更多個該等向量處 理通道中處理之該抑制的預測去能控制信號。
- 如請求項17所述之設備,其中回應於偵測到在該程式迴圈本體之一迭代之後不需要額外迴圈迭代,當決定該預定狀態暫存器為不可存取時,該迴圈控制電路系統經配置以抑制該等預測去能控制信號之產生。
- 如請求項13所述之設備,其中當包括該預定狀態暫存器的暫存器之一子集係不可存取時回應於該迴圈結束指令,該迴圈結束指令解碼電路系統經配置以產生狀態保存控制信號來觸發將儲存在暫存器之該子集中的狀態資料保存至記憶體並且使暫存器之該子集可存取。
- 如請求項19所述之設備,其中該迴圈結束指令解碼電路系統經配置以取決於該迴圈結束指令係一第一類型迴圈結束指令還是一第二類型迴圈結束指令來選擇是否產生該等狀態保存控制信號。
- 如請求項19所述之設備,其中該迴圈結束指令解碼電路系統經配置以取決於儲存在一控制暫存器中之一狀態可存取性旗標來決定暫存器之該子集是否係可存取。
- 如請求項19所述之設備,包含許可檢查電路系統以檢查用於控制存取暫存器之該子集的存取許 可資料,並且當偵測到違反該存取許可資料的對暫存器之該子集之一存取時用以觸發一故障條件:回應於該迴圈結束指令,該迴圈結束指令解碼電路系統經配置以產生存取觸發控制信號來觸發對暫存器之該子集的一存取。
- 如請求項22所述之設備,其中該迴圈結束指令解碼電路系統經配置以取決於該迴圈結束指令係一第一類型迴圈結束指令還是一第二類型迴圈結束指令來選擇是否產生該等存取觸發控制信號。
- 如請求項1所述之設備,其中回應於偵測到當該迴圈控制資料係有效時不需要額外迴圈迭代,該迴圈控制電路系統經配置以控制該處理電路系統從在該迴圈結束指令之後的一指令繼續程式執行。
- 一種處理資料之方法,其包含以下步驟:執行由程式指令規定之處理操作;解碼該等程式指令以產生控制信號來控制該等處理操作之該執行;其中該解碼之步驟包含以下步驟:在一程式迴圈本體之一結束時解碼一迴圈結束指令以產生控制信號來控制迴圈控制資料之儲存,決定是否需要額外迴圈迭代,並且若需要額外迴圈迭代,則分支至該程式迴圈本體之一開始指令;以及進一步包含以下步驟 當啟用時,決定是否需要額外迴圈迭代,並且若需要額外迴圈迭代,則在該迴圈控制資料之控制下,控制由在該迴圈結束指令之前且不包括該迴圈結束指令的該程式迴圈本體之程式指令規定的處理操作之該執行;並且該指令之步驟包含以下步驟:解碼規定一迴圈結束位址的一循環開始指令,該迴圈結束位址識別在該迴圈結束指令之後的一指令,以產生控制信號以控制處理電路系統,來儲存指示將執行該程式迴圈本體的次數的一迴圈計數值,並且確定該迴圈計數值是否指示將執行該程式迴圈本體的該次數為零;並且當將執行該程式迴圈本體零次時,控制該處理電路系統,來分支至在該迴圈結束指令之後的該指令或抑制該程式迴圈本體的指令的效應。
- 一種以非暫時形式儲存用於控制一電腦之一電腦程式的電腦程式產品,以提供根據如請求項25所述之方法操作之一虛擬機執行環境。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1604946.2 | 2016-03-23 | ||
GB1604946.2A GB2548603B (en) | 2016-03-23 | 2016-03-23 | Program loop control |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201737066A TW201737066A (zh) | 2017-10-16 |
TWI738744B true TWI738744B (zh) | 2021-09-11 |
Family
ID=55968776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106109249A TWI738744B (zh) | 2016-03-23 | 2017-03-21 | 用於程式迴圈控制的設備、方法及電腦程式產品 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10747536B2 (zh) |
EP (1) | EP3433725B1 (zh) |
JP (1) | JP7011594B2 (zh) |
KR (1) | KR102353628B1 (zh) |
CN (1) | CN108780396B (zh) |
GB (1) | GB2548603B (zh) |
IL (1) | IL261342B (zh) |
TW (1) | TWI738744B (zh) |
WO (1) | WO2017163039A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595210B (zh) | 2018-04-09 | 2021-12-10 | 杭州中天微系统有限公司 | 实现零开销循环的处理器 |
CN109656641B (zh) * | 2018-11-06 | 2021-03-02 | 极芯通讯技术(南京)有限公司 | 一种多层循环程序的运行系统和方法 |
US11029960B2 (en) * | 2018-12-07 | 2021-06-08 | Intel Corporation | Apparatus and method for widened SIMD execution within a constrained register file |
CN110134441B (zh) * | 2019-05-23 | 2020-11-10 | 苏州浪潮智能科技有限公司 | Risc-v分支预测方法、装置、电子设备及存储介质 |
WO2021035006A1 (en) * | 2019-08-20 | 2021-02-25 | Northrop Grumman Systems Corporation | Simd controller and simd predication scheme |
US11442739B2 (en) * | 2019-09-16 | 2022-09-13 | International Business Machines Carporation | Exception handling |
US11243766B2 (en) * | 2019-09-25 | 2022-02-08 | Intel Corporation | Flexible instruction set disabling |
CN111522584B (zh) * | 2020-04-10 | 2023-10-31 | 深圳优矽科技有限公司 | 一种硬件循环加速处理器及其执行的硬件循环加速方法 |
CN111782273B (zh) * | 2020-07-16 | 2022-07-26 | 中国人民解放军国防科技大学 | 一种提高重复程序执行性能的软硬件协同缓存装置 |
US11182160B1 (en) * | 2020-11-24 | 2021-11-23 | Nxp Usa, Inc. | Generating source and destination addresses for repeated accelerator instruction |
US11989554B2 (en) * | 2020-12-23 | 2024-05-21 | Intel Corporation | Processing pipeline with zero loop overhead |
CN112835624A (zh) * | 2021-02-18 | 2021-05-25 | 中国科学院自动化研究所 | 指令字处理器及零开销循环处理方法、电子设备及介质 |
CN112817664B (zh) * | 2021-04-19 | 2021-07-16 | 北京燧原智能科技有限公司 | 一种数据处理系统、方法及芯片 |
US11663013B2 (en) | 2021-08-24 | 2023-05-30 | International Business Machines Corporation | Dependency skipping execution |
CN114895966A (zh) * | 2022-06-10 | 2022-08-12 | 江苏华创微系统有限公司 | 通过bypass电路提升loop分支预测算法准确率的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002084451A2 (en) | 2001-02-06 | 2002-10-24 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US20040193858A1 (en) * | 2003-03-24 | 2004-09-30 | Infineon Technologies North America Corp. | Zero-overhead loop operation in microprocessor having instruction buffer |
TW201015431A (en) * | 2008-06-27 | 2010-04-16 | Qualcomm Inc | Loop control system and method |
US20120166765A1 (en) * | 2008-08-15 | 2012-06-28 | Apple Inc. | Predicting branches for vector partitioning loops when processing vector instructions |
TWI506552B (zh) * | 2014-09-29 | 2015-11-01 | Via Alliance Semiconductor Co Ltd | 迴圈預測器指導的迴圈緩衝器 |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3551895A (en) | 1968-01-15 | 1970-12-29 | Ibm | Look-ahead branch detection system |
JPS62156738A (ja) * | 1985-12-27 | 1987-07-11 | Matsushita Electric Ind Co Ltd | プログラム制御装置 |
JPS6353643A (ja) * | 1986-08-23 | 1988-03-07 | Nec Corp | 命令制御装置 |
US5251303A (en) * | 1989-01-13 | 1993-10-05 | International Business Machines Corporation | System for DMA block data transfer based on linked control blocks |
US5101484A (en) * | 1989-02-14 | 1992-03-31 | Intel Corporation | Method and apparatus for implementing an iterative program loop by comparing the loop decrement with the loop value |
JPH0748183B2 (ja) * | 1989-09-28 | 1995-05-24 | 横河電機株式会社 | トレース回路 |
US5388841A (en) | 1992-01-30 | 1995-02-14 | A/N Inc. | External memory system having programmable graphics processor for use in a video game system or the like |
JPH05225077A (ja) * | 1992-02-17 | 1993-09-03 | Shikoku Nippon Denki Software Kk | Eccを保持したメモリ制御回路のハードエラー検出方式 |
JPH0827715B2 (ja) * | 1993-03-03 | 1996-03-21 | 日本電気株式会社 | 記憶装置 |
JP2931890B2 (ja) | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
US5742804A (en) | 1996-07-24 | 1998-04-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Instruction prefetch mechanism utilizing a branch predict instruction |
US6092188A (en) | 1997-12-23 | 2000-07-18 | Intel Corporation | Processor and instruction set with predict instructions |
US6304963B1 (en) | 1998-05-14 | 2001-10-16 | Arm Limited | Handling exceptions occuring during processing of vector instructions |
TW455814B (en) | 1998-08-06 | 2001-09-21 | Intel Corp | Software directed target address cache and target address register |
US6611910B2 (en) | 1998-10-12 | 2003-08-26 | Idea Corporation | Method for processing branch operations |
JP3113646B2 (ja) | 1999-03-29 | 2000-12-04 | 三洋電機株式会社 | 携帯型電子機器の充電装置 |
US6308322B1 (en) | 1999-04-06 | 2001-10-23 | Hewlett-Packard Company | Method and apparatus for reduction of indirect branch instruction overhead through use of target address hints |
US6523110B1 (en) | 1999-07-23 | 2003-02-18 | International Business Machines Corporation | Decoupled fetch-execute engine with static branch prediction support |
US6629238B1 (en) * | 1999-12-29 | 2003-09-30 | Intel Corporation | Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration |
JP2006508447A (ja) * | 2002-11-28 | 2006-03-09 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | データ・プロセッサ用ループ制御回路 |
GB2409064B (en) | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing in parallel a data processing operation on data elements |
US20050223202A1 (en) | 2004-03-31 | 2005-10-06 | Intel Corporation | Branch prediction in a pipelined processor |
US7272704B1 (en) * | 2004-05-13 | 2007-09-18 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | Hardware looping mechanism and method for efficient execution of discontinuity instructions |
US20060190710A1 (en) * | 2005-02-24 | 2006-08-24 | Bohuslav Rychlik | Suppressing update of a branch history register by loop-ending branches |
JP5225077B2 (ja) | 2005-05-23 | 2013-07-03 | クラフト・フーズ・グローバル・ブランズ・エルエルシー | 中心充填チューインガム組成物 |
US7565514B2 (en) | 2006-04-28 | 2009-07-21 | Freescale Semiconductor, Inc. | Parallel condition code generation for SIMD operations |
US7991985B2 (en) | 2006-12-22 | 2011-08-02 | Broadcom Corporation | System and method for implementing and utilizing a zero overhead loop |
DE602007005790D1 (de) | 2007-06-26 | 2010-05-20 | Ericsson Telefon Ab L M | Datenverarbeitungseinheit für Anweisungen in geschachtelten Schleifen |
US7937574B2 (en) * | 2007-07-17 | 2011-05-03 | Advanced Micro Devices, Inc. | Precise counter hardware for microcode loops |
JP4526560B2 (ja) | 2007-12-05 | 2010-08-18 | 日本テキサス・インスツルメンツ株式会社 | プロセッサおよび信号処理方法 |
US8271832B2 (en) * | 2008-08-15 | 2012-09-18 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
US7900025B2 (en) | 2008-10-14 | 2011-03-01 | International Business Machines Corporation | Floating point only SIMD instruction set architecture including compare, select, Boolean, and alignment operations |
US20100122066A1 (en) * | 2008-11-12 | 2010-05-13 | Freescale Semiconductor, Inc. | Instruction method for facilitating efficient coding and instruction fetch of loop construct |
NL2002799C2 (en) | 2009-04-24 | 2010-10-26 | Univ Delft Tech | Data structure, method and system for address lookup. |
GB2471067B (en) | 2009-06-12 | 2011-11-30 | Graeme Roy Smith | Shared resource multi-thread array processor |
GB2471138B (en) | 2009-06-19 | 2014-08-13 | Advanced Risc Mach Ltd | Handling integer and floating point registers during a context switch |
JP5692089B2 (ja) | 2009-11-24 | 2015-04-01 | 日本電気株式会社 | プロセッサ、プロセッサによるループ回数制御方法 |
US20110280314A1 (en) | 2010-05-12 | 2011-11-17 | Texas Instruments Incorporated | Slice encoding and decoding processors, circuits, devices, systems and processes |
CN104115113B (zh) | 2011-12-14 | 2018-06-05 | 英特尔公司 | 用于循环剩余掩码指令的系统、装置和方法 |
US9557999B2 (en) * | 2012-06-15 | 2017-01-31 | Apple Inc. | Loop buffer learning |
US9244677B2 (en) | 2012-09-28 | 2016-01-26 | Intel Corporation | Loop vectorization methods and apparatus |
CN104603755B (zh) | 2012-09-28 | 2017-11-14 | 英特尔公司 | 循环向量化方法和设备 |
US9557993B2 (en) | 2012-10-23 | 2017-01-31 | Analog Devices Global | Processor architecture and method for simplifying programming single instruction, multiple data within a register |
US9459871B2 (en) | 2012-12-31 | 2016-10-04 | Intel Corporation | System of improved loop detection and execution |
US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US9329870B2 (en) | 2013-02-13 | 2016-05-03 | International Business Machines Corporation | Extensible execution unit interface architecture with multiple decode logic and multiple execution units |
JP6353643B2 (ja) | 2013-09-26 | 2018-07-04 | 矢崎総業株式会社 | 車両用表示装置 |
US9430245B2 (en) | 2014-03-28 | 2016-08-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size |
US9798542B2 (en) * | 2014-04-25 | 2017-10-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Zero overhead looping by a decoder generating and enqueuing a branch instruction |
GB2548604B (en) * | 2016-03-23 | 2018-03-21 | Advanced Risc Mach Ltd | Branch instruction |
GB2548602B (en) * | 2016-03-23 | 2019-10-23 | Advanced Risc Mach Ltd | Program loop control |
JP6314195B2 (ja) | 2016-10-20 | 2018-04-18 | 住友電工プリントサーキット株式会社 | プリント配線板及び該プリント配線板の製造方法 |
US20180349144A1 (en) * | 2017-06-06 | 2018-12-06 | Intel Corporation | Method and apparatus for branch prediction utilizing primary and secondary branch predictors |
-
2016
- 2016-03-23 GB GB1604946.2A patent/GB2548603B/en active Active
-
2017
- 2017-03-21 JP JP2018548903A patent/JP7011594B2/ja active Active
- 2017-03-21 TW TW106109249A patent/TWI738744B/zh active
- 2017-03-21 WO PCT/GB2017/050775 patent/WO2017163039A1/en active Application Filing
- 2017-03-21 EP EP17713413.7A patent/EP3433725B1/en active Active
- 2017-03-21 KR KR1020187029668A patent/KR102353628B1/ko active IP Right Grant
- 2017-03-21 US US16/080,736 patent/US10747536B2/en active Active
- 2017-03-21 CN CN201780017789.3A patent/CN108780396B/zh active Active
-
2018
- 2018-08-23 IL IL261342A patent/IL261342B/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002084451A2 (en) | 2001-02-06 | 2002-10-24 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US20040193858A1 (en) * | 2003-03-24 | 2004-09-30 | Infineon Technologies North America Corp. | Zero-overhead loop operation in microprocessor having instruction buffer |
TW201015431A (en) * | 2008-06-27 | 2010-04-16 | Qualcomm Inc | Loop control system and method |
US20120166765A1 (en) * | 2008-08-15 | 2012-06-28 | Apple Inc. | Predicting branches for vector partitioning loops when processing vector instructions |
TWI506552B (zh) * | 2014-09-29 | 2015-11-01 | Via Alliance Semiconductor Co Ltd | 迴圈預測器指導的迴圈緩衝器 |
Also Published As
Publication number | Publication date |
---|---|
TW201737066A (zh) | 2017-10-16 |
GB201604946D0 (en) | 2016-05-04 |
US20190095209A1 (en) | 2019-03-28 |
GB2548603A (en) | 2017-09-27 |
IL261342B (en) | 2020-09-30 |
CN108780396B (zh) | 2023-03-03 |
KR20180126002A (ko) | 2018-11-26 |
IL261342A (en) | 2018-10-31 |
GB2548603B (en) | 2018-09-26 |
CN108780396A (zh) | 2018-11-09 |
KR102353628B1 (ko) | 2022-01-20 |
EP3433725A1 (en) | 2019-01-30 |
EP3433725B1 (en) | 2021-03-03 |
WO2017163039A1 (en) | 2017-09-28 |
JP2019509575A (ja) | 2019-04-04 |
US10747536B2 (en) | 2020-08-18 |
JP7011594B2 (ja) | 2022-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI738744B (zh) | 用於程式迴圈控制的設備、方法及電腦程式產品 | |
TWI746529B (zh) | 分支指令 | |
TWI749000B (zh) | 程式迴圈控制 | |
TW201439904A (zh) | 在提前執行中管理潛在無效結果 | |
US20210109755A1 (en) | Branch target variant of branch-with-link instruction |