TW201823972A - 向量產生指令 - Google Patents

向量產生指令 Download PDF

Info

Publication number
TW201823972A
TW201823972A TW106139279A TW106139279A TW201823972A TW 201823972 A TW201823972 A TW 201823972A TW 106139279 A TW106139279 A TW 106139279A TW 106139279 A TW106139279 A TW 106139279A TW 201823972 A TW201823972 A TW 201823972A
Authority
TW
Taiwan
Prior art keywords
vector
instruction
value
circuit system
scalar
Prior art date
Application number
TW106139279A
Other languages
English (en)
Other versions
TWI770079B (zh
Inventor
弗朗索瓦克里斯多福雅客 波特曼
湯瑪士克里斯多夫 格羅卡特
尼爾 伯吉斯
Original Assignee
英商Arm股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW201823972A publication Critical patent/TW201823972A/zh
Application granted granted Critical
Publication of TWI770079B publication Critical patent/TWI770079B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3555Indexed addressing using scaling, e.g. multiplication of index

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)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供一種設備及方法以用於實施向量處理操作。特定而言,此設備具有處理電路系統以實施向量處理操作,並具有指令解碼器以解碼向量指令,以控制處理電路系統以實施由向量指令規定的向量處理操作。此指令解碼器可回應於識別純量啟動值及繞回控制資訊的向量產生指令,以控制處理電路系統以產生包含複數個元素的向量。特定而言,此處理電路系統經排列以產生此向量,以使得複數個元素之第一元素視純量啟動值而定,及複數個元素的值遵循規則進行序列,此序列受約束以根據需求繞回,以確保每一值處於利用此繞回控制資訊決定之一邊界內。向量產生指令可用於多種情況,一特定使用情況可為在記憶體內實施循環定址模式,其中向量產生指令可與關連向量記憶體存取指令耦合。此種方法可移除對在記憶體存取路徑內提供額外邏輯以支援此種循環定址的需求。

Description

向量產生指令
本技術係關於資料處理領域。更特定而言,係關於向量指令的處理。
一些資料處理系統支援向量指令的處理,此等向量指令之指令源運算元或結果值是包括多個元素之向量。藉由回應於單個指令而支援數個不同元素的處理,可改良碼密度且降低指令擷取及解碼的額外負擔。待處理的資料值陣列可藉由以下方式更高效地處理:將資料值載入向量運算元的各別元素,及使用單個向量指令一次處理若干元素之資料值。
至少一些實例提供一種設備,此設備包含:處理電路系統,用以實施向量處理操作;及指令解碼器,用以解碼向量指令以控制處理電路系統,以實施由此向量指令規定的向量處理操作;其中此指令解碼器可回應於識別純量啟動值且繞回控制資訊的向量產生指令,以控制處理電路系統以產生包含複數個元素的向量,此處理電路系統經排列以產生向量,以使得該複數個元素中之第一元素視純量啟動值而定,且複數個元素的值遵循規則進行序列,此序列受約束以按需繞回,以確保每一值處於利用繞回控制資訊決定之邊界內。
至少一些實例提供一操作設備的方法,此設備具有:處理電路系統,用以實施向量處理操作;及指令解碼器,用以解碼向量指令以控制處理電路系統,以實施由此向量指令規定的向量處理操作;此方法包含:解碼一向量產生指令,此指令識別純量啟動值及繞回控制資訊;及可回應於該解碼,控制處理電路系統以產生包含複數個元素的向量,此處理電路系統產生向量以使得該複數個元素中之第一元素視純量啟動值而定,且複數個元素的值遵循規則進行序列,此序列受約束以按需繞回,以確保每一值處於利用繞回控制資訊決定之邊界內。
至少一些實例提供一設備,此設備包含:處理構件,用於實施向量處理操作;及指令解碼器構件,用於解碼向量指令以控制處理構件,以實施由此向量指令規定的向量處理操作;指令解碼器構件,用於回應於識別純量啟動值及繞回控制資訊的向量產生指令,而控制處理構件,以產生包含複數個元素的向量,此處理構件用於產生向量,以使得該複數個元素中之第一元素視純量啟動值而定,且複數個元素的值遵循規則進行序列,此序列受約束以按需繞回,以確保每一值處於利用繞回控制資訊決定之邊界內。
至少一些實例提供一虛擬機電腦程式,此電腦程式包含程式指令,此等程式指令用以控制主機資料處理設備以提供指令執行環境,此環境對應於上文論述之設備。
亦可提供儲存虛擬機電腦程式之電腦可讀取儲存媒體。此儲存媒體可為非暫時性儲存媒體。
在參考附圖論述實施例之前,提供下列實施例描述。
大多數現用的數位信號處理器(Digital Signal Processor; DSP)支援某種形式之記憶體循環(有時亦稱作模數)定址模式。此種特徵十分有用,因為其移除對用於實施邊界檢查的演算法的需求,且允許其他最佳化。
一示例性用途情形是FIR過濾器。此為常見數位信號處理操作,此操作從前N個結果之加權和而產生新結果。利用線性記憶體排列,每當新樣品區塊需要處理時,便需要存取先前結果。此舉可藉由以下方式完成:將最後N個結果複製至線性緩衝器開始處,並從此處開始處理。然而,當使用循環記憶體時,不再需要此種複製步驟,因為在舊結果處即可簡單開始此處理,且在到達結束時繞回返回緩衝器開始處。因此,循環緩衝器賦能此種操作以更有效的方式得以實施。
用於支援向記憶體循環定址模式的一個已知方法是在處理器與記憶體之間路徑中所提供的位址產生單元(address generation unit; AGU)內提供額外邏輯。然而,在可藉由將多個資料值載入向量運算元之各個元素中,及以每次數個元素之方式處理資料值來增加處理效率的向量處理系統中,記憶體存取路徑可成為顯著的時序約束,且因此難以在此路徑內持續額外邏輯以支援循環定址模式操作。因此,將需要提供一改進機制,以用於在向量處理系統內支援記憶體循環定址。
依據一個實施例,提供一種設備,此設備具有處理電路系統以實施向量處理操作,並具有指令解碼器以解碼向量指令,以控制處理電路系統以實施由向量指令規定的向量處理操作。此指令解碼器可回應於識別純量啟動值及繞回控制資訊的向量產生指令,以控制處理電路系統以產生包含複數個元素的向量。處理電路系統經排列以產生向量,以使得第一元素視純量啟動值而定,及複數個元素的值遵循受約束之規則進行序列以按需繞回,以確保每一值處於從繞回控制資訊決定之邊界內。
使用此種向量產生指令提供極有效的機制以用於產生元素向量,此向量隨後可用作後續記憶體存取指令之輸入運算元,用以直接在記憶體內實施循環定址,無需在記憶體存取路徑內提供額外邏輯以支援此種循環定址。藉由在單獨指令的整個使用中實施循環定址模式,此為循環定址的使用及系統內可用的循環緩衝器數目及大小提供大量靈活性。
依據所述實施例的向量產生指令,向量運算元無需作為向量產生指令之輸入,相反地,元素之整個輸出向量是參考繞回控制資訊,利用輸入純量啟動值而產生的,此繞回控制資訊用以決定從純量啟動值產生的規則進行序列是否及何時需要繞回,以確保此序列中之每一值處於從此繞回控制資訊決定之邊界內。
有眾多指定純量啟動值之方式,但在一個實施例中,向量產生指令規定提供純量啟動值之第一純量暫存器。此提供關於純量啟動值之規格之大量靈活性。此外,藉由避免需要為指令規定輸入向量,此可減輕在設備內使用向量暫存器之約束,在此情況下,向量暫存器往往是需要最佳使用之稀有資源。
當使用所述實施例之向量產生指令時,向量暫存器之利用可進一步最佳化,因為向量產生指令可與意欲消耗由此向量產生指令所產生之元素的向量的此指令緊密耦接,因此確保藉由此向量產生指令產生的元素的向量僅需保留相對較短時期,直至後續指令消耗此元素之向量以作為源運算元為止。
有可在向量產生指令內識別繞回控制資訊之眾多方式。例如,可藉由使用一或更多個立即值進行規定,但在一個實施例中參考暫存器內容而規定。在此情況下,繞回控制資訊可在向量暫存器內規定,但在一個實施例中則藉由又一純量暫存器之內容而規定。
此繞回控制資訊用以決定邊界,當產生規則進行序列時,此等邊界內之值需要保留。當繞回控制資訊可提供充足資訊以賦能第一及第二邊界得以決定時,在一個實施例中,處理電路系統使用繞回控制資訊以決定第一邊界,而第二邊界是預定的。例如,在一個實施例中,第二邊界可能是零值。在此實施例中,繞回控制資訊可提供用以決定第一邊界的大小指示。大小指示可具有多種形式。例如,此指令可用以識別藉由第一及第二邊界定義的緩衝器大小,由此賦能處理電路系統能夠決定規則進行序列將需要繞回之點,從而確保每一值都保留於具有此規定緩衝器大小之緩衝器所定義的邊界內。或者,大小指示可用以識別繞回點指示器,以便更直接地識別規則進行序列中之值,此規則進行序列原本致使此值繞回向邏輯零值(對於規則遞增序列而言),或識別此值,值等於零時繞回此值(對於規則遞減序列而言)。
在一個實施例中,可預定規則進行序列中每一值之間的差。然而,在一替代性實施例中,向量產生指令識別一調整量,此量用以決定規則進行序列中相鄰元素值之間的差。藉由賦能此調整量在向量產生指令內得以規定,此針對向量產生而提供顯著改良之靈活性,此等向量隨後適合用於實施循環定址。例如,調整量可能各有不同,以慮及記憶體中待存取之資料值大小,由此賦能待產生的元素向量可易於用以決定待存取之資料值的位址。
在一個實施例中,藉由向量產生指令產生之元素的向量可用以直接規定待存取之記憶體位址。然而,在一個實施例中,相反,元素向量規定偏移,此等偏移隨後與基址組合以便識別待存取的實際記憶體位址。藉由產生一偏移向量,此提供進一步增強之靈活性,因為相同向量基本上可用以識別記憶體中多個不同循環緩衝器,方式僅為組合偏移向量與不同的基址。循環緩衝器數目之僅有限制是可用以儲存此種向量偏移之向量數目。此外,緩衝器基本上可經排列以便按需重疊。
藉由使用此元素向量以規定來自基底暫存器之偏移,並且藉由允許此調整量按需改變,上述方法可用以在記憶體中定義循環緩衝器,此等循環緩衝器基本上可具有任何大小(在一個實施例中,大小受約束為調整量的倍數),及處於記憶體中任何位置。由此,此舉在使用循環緩衝器時提供大量靈活性。
若需要,可對向量產生指令施加多種約束。例如,藉由將從繞回控制資訊決定之緩衝器大小約束為調整量的倍數,此可在執行向量產生指令時簡化產生元素向量所需的電路系統。在一個實施例中,純量啟動值亦可受約束為調整量的倍數。藉由使用此種約束,可在執行向量產生指令時,在用以產生元素向量的電路系統中賦能顯著簡化。特定而言,偵測繞回點所必需之組件可藉由使用同等檢查電路系統而得以實施,而非需要偵測大於或小於條件之電路系統。
進一步而言,若需要,則緩衝器大小可經約束以便限制在產生向量時可能遇到的潛在繞回點數目。例如,在一個實施例中,緩衝器大小受約束以超過藉由用向量中之元素數目乘以調整量而決定之大小值。憑藉此約束,可確保向量內將出現至多僅一個繞回。
在一個實施例中,解碼器電路系統回應於向量產生指令而控制處理電路系統以產生該向量,以使得複數個元素的值遵循規則遞增序列,此序列受約束以根據需求繞回,以確保每一值處於利用此繞回控制資訊決定之邊界內。然而,或者,解碼器電路系統可回應於向量產生指令而控制處理電路系統以產生該向量,以使得複數個元素的值遵循規則遞減序列,此序列受約束以根據需求繞回,以確保每一值處於由此繞回控制資訊決定之邊界內。藉由提供可檢查何時遇到如繞回控制資訊所定義之上邊界或下邊界的電路系統,可能產生某種向量,此等向量之元素遵循正增量序列或負增量序列,以使得彼等向量可用以識別在任一方向「行走」之循環緩衝器。在一個實施例中,可定義向量產生指令之兩個不同變體,一者導致產生規則遞增序列,此序列受約束以根據需求繞回,而另一者用以產生規則遞減序列,此序列受約束以根據需求繞回。
所述實施例之向量產生指令可用於多種情況。然而,如前文所論述,一特定使用情況可為在記憶體內實施循環定址模式,其中此向量產生指令可與關連之向量記憶體存取指令耦合。特定而言,在一個實施例中,解碼器電路系統可回應於向量記憶體存取指令以控制處理電路系統,以在記憶體中由輸入位址向量運算元決定之位址處存取複數個資料值,此輸入位址向量運算元包含複數個位址元素。在此種排列中,設備可經排列以執行一指令序列,此序列包含前文提及之向量產生指令及關連的向量記憶體存取指令,此關連的向量記憶體存取指令將向量產生指令所產生的向量識別為輸入位址向量運算元。藉由此種方法,此確保在記憶體內的循環緩衝器內存取複數個資料值。
在一個特定實施例中,關連的向量記憶體存取指令識別一基址,此基址提供循環緩衝器的起始位址,及輸入位址向量運算元將位址偏移向量指定為複數個位址元素,此向量將與此基址組合以便識別待存取之每一位址。如前文所論述,此種方法針對循環緩衝器在記憶體內之位置提供顯著靈活性,因為循環緩衝器的位置由基址而決定,由向量產生指令產生的元素向量隨後用以識別一序列,在此序列中,資料值在參照此基址而得以識別的循環緩衝器內被存取。
在一個實施例中,向量指令的執行可被分為被稱作「差拍」之部分,每一差拍對應於具有預定大小之向量中一部分的處理。差拍是向量指令之原子部分,其經完全執行,或完全不執行,但無法部分執行。向量中在一個差拍中處理的部分的大小可由架構定義,且可為向量之任意部分。
在一個此種實施例中,回應於一給定向量指令,處理電路系統經配置以實施複數個處理差拍,每一差拍對應於向量值的一段,且處理電路系統經配置以支援重疊執行該向量產生指令及該關聯向量記憶體存取指令,其中關連向量記憶體存取指令的第一差拍子集與向量產生指令的第二差拍子集同時實施。藉由賦能向量產生指令與關連向量記憶體存取指令的重疊執行,此可提供顯著的效能改進。
儘管向量產生指令在產生元素向量時允許繞回行為,但在一個實施例中,可有選擇地去能此繞回行為。特定而言,在一個實施例中,指令解碼器可回應於當解碼此向量產生指令時偵測到的規定條件,以去能處理電路系統對繞回控制資訊的使用,使得處理電路系統經排列以產生向量,以使得該複數個元素中之第一元素視純量啟動值而定,而複數個元素的值遵循規則進行序列,不受任何繞回約束。因此,在遇到規定條件之後,向量產生指令可用以產生一向量,此向量之元素遵循規則進行序列,無論是規則遞增序列還是規則遞減序列皆可。此在使用向量產生指令時提供額外靈活性。
規定條件可採取各種形式,但在一個實施例中,當預備值用以識別向量產生指令內之繞回控制資訊時,偵測到規定條件。因此,此有效識別此繞回控制資訊為無效。預備值可採取各種形式。例如,在一個實施例中,此預備值可為不被允許之立即值,而在一替代性實施例中,此預備值可採取被識別以用於繞回控制資訊的預定暫存器之形式,此預定暫存器是無法有效用以提供繞回控制資訊的暫存器。
在一個實施例中,純量啟動值及繞回控制資訊皆是参考此設備提供的一組純量暫存器內的純量暫存器而在向量產生指令內識別的。在一個特定實施例中,為了在執行指令時縮短對所需資訊的存取時間,用以識別純量啟動值及繞回控制資訊的純量暫存器的選擇受到約束。例如,在一個實施例中,用以識別純量啟動值及繞回控制資訊之第一及第二純量暫存器的規格分別受約束,以使得第一純量暫存器選自該組純量暫存器中之第一組純量暫存器,此第一組純量暫存器與選出第二純量暫存器的該組純量暫存器中之第二組暫存器不重疊。藉由以此方式約束第一及第二純量暫存器的選擇,用以存取純量暫存器集之存取電路系統可經排列以便:賦能利用更少讀取埠同時存取第一及第二純量暫存器的內容,或使暫存器檔案得以分為兩個獨立記憶庫,從而在硬體及可能在面積方面以更低成本產生對兩個暫存器的存取。
在一個實施例中,處理電路系統可經控制,藉由迭代地執行一步驟序列以產生複數個元素中之每一元素,以產生向量產生指令所需的向量。然而,在一替代性實施例中,此過程可以經並行化以便賦能並行產生多個元素,從而提高效能。特定而言,在一個實施例中,處理電路系統包含加法器電路系統,此加法器電路系統使用源於純量啟動值及規則進行調整值序列的輸入值,為該向量產生複數個候選元素;並包含修改電路系統,此修改電路系統從每一候選元素產生一輸出元素,以用於包含在該向量內。對於每一候選元素而言,修改電路系統經排列以決定是否存在一繞回條件,及在存在該繞回條件時基於繞回控制資訊來執行一算術運算以修改此候選元素,以便產生輸出元素,及另外使用此未修改候選元素作為輸出元素。
藉由此種方法,可並行實施多個計算。實際上,若需要,加法器電路系統及修改電路系統可經排列以便賦能並行產生全部向量元素。或者,可使用大小較小的加法器電路系統及修改電路系統,從而允許並行決定多個元素,並且經由加法器電路系統及修改電路系統實施額外迭代以計算向量所需的任何剩餘元素。
在一個特定實施例中,解碼器電路系統回應於向量產生指令而控制處理電路系統以產生向量,以使得複數個元素之值遵循受約束以根據需求繞回的規則遞減序列,以確保每一值處於從此繞回控制資訊決定之邊界內,及加法器電路系統包含一單獨加法器區塊,以藉由從輸入值中減去調整值中之關連一者來產生每一候選元素。來自每一加法器區塊的進位輸出信號用以決定關連的候選元素是否存在繞回條件。因此,在此種實施例中,修改電路系統可顯著簡化,因為可從來自每一加法器區塊的進位輸出信號直接推斷出繞回條件是否存在的決定。此避免需要將更複雜之比較電路系統包括在修改電路系統內,以偵測繞回條件存在之時間。
在一個實施例中,在向量產生指令的執行導致產生其中遵循規則遞增序列的複數個元素再次受約束以根據需求繞回之向量時,可採用類似原理。特定而言,在一個實施例中,藉由從純量啟動值中減去源於繞回控制資訊的上邊界值,來從純量啟動值導出輸入值。加法器電路系統包含一單獨加法器區塊,以藉由向輸入值添加調整值中之關連一者而產生每一候選元素,且來自每一加法器區塊之進位輸出信號用以決定此關連候選元素是否存在繞回條件。
因此,在此實施例中,輸入值藉由實施從純量啟動值減去上邊界值的初始減法而得以修改。藉由實施此初始減法,當加法器電路系統隨後用以向輸入值添加調整值中之關連一者時,來自每一加法器區塊之進位輸出信號可再次用以決定是否存在繞回條件。存在繞回條件時,修改電路系統將隨後修改候選元素。因此,藉由適當調整輸入值,可保持藉由使用進位輸出信號而得以賦能之修改電路系統之簡化,即使在產生規則遞增序列時亦如此。
在一個實施例中,繞回條件存在時,修改電路系統經排列以實施向候選元素添加源於繞回控制資訊的上邊界值的加法作為該算術運算以便產生輸出元素。因此,在處理電路系統產生規則遞增序列或規則遞減序列的兩種情形中,修改電路系統均可以同一方式排列,以便在設置進位輸出信號時,向關連候選元素添加源於繞回控制資訊的上邊界值。
現將藉由參考圖式而描述特定實施例。
第1圖示意地圖示一資料處理設備2之實例,此資料處理設備支援向量指令之處理。將理解,此圖是便於說明之簡圖,及實際上此設備可具有眾多元件,為簡明起見,第1圖中未圖示此等元件。設備2包括處理電路系統4以用於回應於指令解碼器6解碼的指令而執行資料處理。程式指令係擷取自記憶體系統8且藉由指令解碼器解碼以產生控制信號,此等控制信號控制處理電路系統4以按架構定義的方式處理指令。例如,解碼器6可解譯已解碼指令的操作碼及指令的任何額外控制欄位以產生控制信號,此等控制信號使得處理電路系統4激活適當的硬體單元以實施諸如算術運算、載入/儲存操作或邏輯運算之操作。此設備具有一組純量暫存器10及一組向量暫存器12。其亦可具有其他暫存器(未圖示)以用於儲存用以配置處理電路系統之操作的控制資訊。回應於算術或邏輯指令,處理電路系統一般從暫存器10、12讀取源運算元,並將指令結果寫回暫存器10、12。回應於載入/儲存指令,資料值經由處理電路系統4內的載入/儲存單元18在暫存器10、12及記憶體系統8之間轉移。記憶體系統8可包括一或更多級快取記憶體及主記憶體。
純量暫存器集10包含數個純量暫存器以用於儲存純量值,此等純量值包含單個資料元素。指令解碼器6與處理電路系統4支援的一些指令可為純量指令,此等純量指令處理從純量暫存器10讀取的純量運算元以產生純量結果,此純量結果被寫回純量暫存器。
向量暫存器集12包括數個向量暫存器,每一向量暫存器經排列以儲存一向量值,此值包含多個元素。回應於向量指令,指令解碼器6可控制處理電路系統4以對讀取自向量暫存器12中之一者的向量運算元之各個元素實施數個向量處理路徑,以產生將被寫入純量暫存器10的純量結果,或將被寫入向量暫存器12的又一向量結果。一些向量指令可從一或更多個純量運算元產生一向量結果,或可對純量暫存器檔案中之純量運算元執行額外的純量運算,及對讀取自向量暫存器檔案12的向量運算元執行向量處理路徑。因此,一些指令可為混合純量向量指令,此等指令的一或更多個源暫存器及指令之目的地暫存器中之至少一者是向量暫存器12,及一或更多個源暫存器與此目的地暫存器中之另一者是純量暫存器10。
向量指令亦可包括向量載入/儲存指令,此等指令使得資料值在向量暫存器12與記憶體系統8中之位置之間轉移。載入/儲存指令可包括連續的載入/儲存指令,此等指令在記憶體中的位置對應於連續的位址範圍,或可包括分散/聚集類型的向量載入/儲存指令,此等指令規定數個離散位址,並控制處理電路系統4以將來自彼等位址中每一位址的資料載入向量暫存器的各個元素,或將來自向量暫存器各個元素的資料儲存至離散位址。
處理電路系統4可支援具有各種不同資料元素大小的向量的處理。例如,128位元向量暫存器12可被分割為十六個8位元資料元素、八個16位元資料元素、四個32位元資料元素或兩個64位元資料元素。控制暫存器可用以規定當前正在使用的資料元素大小,或替代地此可為待執行的給定向量指令之參數。
處理電路系統4可包括數個不同的硬體區塊以用於處理不同類別的指令。例如,與記憶體系統8交互之載入/儲存指令可由專用載入/儲存單元18處理,而算術或邏輯指令可由算術邏輯單元(arithmetic logic unit; ALU)處理。算術邏輯單元自身可進一步分割為乘法累積單元(multiply accumulate unit; MAC)以用於實施涉及乘法的運算,及分割為又一單元以用於處理另一種算術邏輯單元運算。亦可提供浮點單元以用於處理浮點指令。與向量指令相比,不涉及任何向量處理的純粹純量指令亦可藉由單獨的硬體區塊處理,或重新使用相同的硬體區塊。
將參考剩餘圖式更詳細地論述,依據一個實施例,處理電路系統4內提供向量產生電路系統16,此處理電路系統16經排列以實施向量產生指令所需的操作,此向量產生指令可包括在由設備2執行的指令序列內。向量產生電路系統16可在處理電路系統4內包含專用區塊,或可包括在諸如算術邏輯單元之其他電路區塊中之一者內。
依據本案所述的一些實施例,可定義一新類型向量產生指令,此指令識別純量啟動值及繞回控制資訊。當此種指令由指令解碼器6解碼時,控制信號被發送至處理電路系統4以使得向量產生電路系統16產生包含複數個元素之一向量,此產生之向量則一般儲存在向量暫存器12中之一者內。向量產生電路系統16經排列以產生向量,以使得此向量中之第一元素視純量啟動值而定,及複數個元素的值則遵循受約束以根據需求繞回之規則進行序列,以確保每一值處於從此繞回控制資訊決定之邊界內。規則進行序列可為規則遞增序列或規則遞減序列,及在一個實施例中,規定向量產生指令之不同變體以用於增大及遞減序列。
元素之此種產生向量可用於多種情況。然而,此種向量極為有用之一個特定使用情況是作為前文提及之向量聚集/分散載入/儲存指令的輸入運算元。特定而言,在一個實施例中,由向量產生指令產生之向量可用作偏移向量以作為使得聚集/分散操作得以實施之此種向量載入/儲存指令的輸入運算元。此種指令一般亦接收規定基址之純量輸入,且偏移向量隨後用以產生參考此基址在記憶體中存取的位址中之每一者。儘管此種向量載入或儲存指令可用以存取記憶體內的任意一組位址,當使用由上述向量產生指令產生的偏移向量時,此賦能位於記憶體內之循環緩衝器內的一位址序列得以識別。因此,此機制提供極高效的技術以用於在記憶體中使用循環定址模式,而無需在記憶體存取路徑中添加額外的電路系統,且由此避免此種額外電路系統將引入此路徑內的潛在效能影響。此在向量處理系統中提供顯著的益處,在此系統中,記憶體存取路徑往往是系統內之關鍵時序路徑。
第1圖中亦圖示,若需要,可提供差拍控制電路系統20以控制指令解碼器6及處理電路系統4之操作。特定而言,在一些實施例中,向量指令的執行可被分為稱作「差拍」之部分,其中每一差拍對應於具有預定大小之向量中一部分的處理。如下文參考第8圖及第9圖更詳細地論述,此可允許向量指令之重疊執行,從而提高效能。
第2圖是示意地說明上文論述之類型的向量產生指令內可提供的欄位之圖。特定而言,指令50可包括第一欄位52,此欄位規定指令之操作碼。此可用以識別此指令是向量產生指令,且亦可用以識別不同的指令變體,如遞增或遞減變體。在一個特定實施例中,向量產生指令之遞增變體被視作向量遞增及繞回複製(vector increment and wrap duplicate; VIWDUP)指令,而遞減版本被視作向量遞減及繞回複製(vector decrement and wrap duplicate; VDWDUP)指令。「複製」引用僅意欲識別:為每一向量元素決定的值源於純量種值,在此情況下每一元素的實際值為先前元素值之遞增或遞減版本,其中初始元素值源於純量種值。
在一個實施例中,指令內提供大小資訊欄位53以識別向量內之資料值大小。特定而言,在處理電路系統允許不同大小的資料值於向量內得以處理的情況下,此種欄位可用以識別當前指令所涉及之特定資料值大小。在替代性實施例中,可能不需要此種大小資訊,因為可預定資料值大小。
目的地向量暫存器欄位54識別向量暫存器(例如第2圖中被稱作暫存器Qd),藉由執行此指令而產生的元素向量將被寫入此向量暫存器。欄位55提供一純量啟動值,在一個實施例中,此純量啟動值參考純量暫存器中之一者而得以識別(在第2圖之實例中,此純量暫存器被稱作純量暫存器Rn)。
亦提供繞回控制資訊欄位56以識別繞回資訊,此繞回資訊用以識別邊界,亦即值的規則遞增序列或規則遞減序列將需要繞回時所在之點。在一個特定實施例中,繞回控制資訊用以決定第一邊界,及第二邊界是預定的。更特定而言,在一個實施例中,第二邊界假設為零值。在此種實施例中,繞回控制資訊可例如提供大小資訊(在本案中被稱作緩衝器大小或「BUFSIZE」),且若已知第二邊界經預定,則此賦能識別第一邊界值。繞回控制資訊能夠被規定為指令內一立即值,或反之可參考暫存器而得以識別,此暫存器為純量暫存器10中之一者或向量暫存器12中之一者。在一個實施例中,繞回控制資訊由又一純量暫存器規定,且在第2圖之實例中,此被稱作純量暫存器Rm。
在一個實施例中,經受向量處理之資料值可具有預定大小,但在替代性實施例中,資料值大小可有所不同,以使得在執行一些指令時,假設資料值具有第一大小,而當執行其他指令時,假設資料值具有不同大小。在支援不同資料值大小的實施例中,向量產生指令50可包括調整量欄位57,在一個實施例中,此欄位可經規定為立即值,但此欄位可以替代地由暫存器內容來規定。當執行指令時,調整量將決定每一元素在規則進行序列內的增減之量。如前述,在一個實施例中,向量產生指令所產生之向量將用作後續向量載入或儲存指令的位址偏移向量,由此,調整量可根據將由此後續向量載入或儲存指令存取之資料值的大小而設置。例如,在一個實施例中,如若隨後將被存取之資料值為位元組大小資料值,則調整量將設置為一;如若資料值為16位元實體,則調整量將設置為二;且如若資料值為32位元實體,則調整量將設置為四。
參考第3圖之特定實例更詳細地說明在執行向量產生指令時的元素向量產生之方式。在此實例中,假設向量產生指令是VIWDUP指令,亦即遞增變體。如第3圖所示,邏輯緩衝器70經識別具有第二邊界及第一邊界,此第二邊界假設具有零值,此第一邊界參考緩衝器大小80而識別。純量啟動值75識別此邏輯緩衝器內的一特定點,此點用作起始值。在第3圖中說明的實例中,緩衝器大小假設為16,亦即16位元組,並且假設向量長度為128位元。緩衝器大小已選擇為相對小的值以僅用於說明,因為此有助於說明第3圖中圖示的三個實例中每一實例的操作中之繞回行為。實際上,緩衝器大小可顯著更大,使得當產生任何特定向量執行個體時繞回的出現次數將減少。
在實例一中說明,假設調整量設置為一,亦即指示關連資料值大小為8位元,且純量啟動值設置為九,此導致實例一中圖示的向量之產生,實例一包含十六個項,每個8位大小資料值具有一個項。可見,向量內的元素遵循規則遞增序列,但在此值原本將遞增至第一邊界值的點處繞回,在此點處,序列歸零,隨後增大。
實例二圖示調整量被設置為二之情況,亦即識別關連資料值大小為16位元。假設在此情況下此純量啟動值為十,且此導致產生第3圖中圖示具有八個元素之向量,128位元向量內的每個16位元大小資料值具有一個元素。再一次,繞回點將在此值原本將遞增至第一邊界值的位置出現,但隨後被繞回回到邏輯零值。
實例三圖示一實例,其中調整量設置為四,指示此資料值大小為32位元。在此實例中,初始純量啟動值為八,及此導致第3圖中圖示的元素向量之產生,其中向量內有四個元素,128位元向量內的每個32位元資料值均有一個元素。再一次,可見繞回出現在適當的點。
利用具體指令以產生此類型向量在記憶體中的循環緩衝器規格方面提供大量靈活性。原則上,此種循環緩衝器可以具有任何大小,並且處於記憶體內任何位置,及實際上若需要,可定義在記憶體位址空間內重疊的多個緩衝器。
在一個實施例中,可向緩衝器大小及純量啟動值之規格施加數個約束,以便簡化實施向量產生操作所需的電路系統。例如,在一個實施例中,緩衝器大小可受約束為調整量之倍數。此外,若需要,純量啟動值可受約束為調整量之倍數。此兩個約束可見用於第3圖中說明的三個實例中。藉由使用此種約束,在至少一些實施例中,用以偵測繞回點所需之電路系統可藉由使用同等檢查電路系統而得以實施,而非需要偵測大於或小於條件之電路系統。
在執行VIWDUP或VDWDUP指令時實施的功能可說明如下: vrWDUP.<size> Qd, Rn, Rm, #imm imm限制為{1,2,4,8} offset = Rn; // Rn規定當前偏移 bufsize = Rm; // Rm規定緩衝器大小(單位:位元組) for e = 0 ... N Qd[e] = offset; offset = offset + imm; if offset == bufsize ^ offset = 0; Rn = offset; VDWDUP.<size> Qd, Rn, Rm, #imm imm限制為{1,2,4,8} offset = Rn; // Rn規定當前偏移 bufsize = Rm; // Rm規定緩衝器大小(單位:位元組) for e = 0 ... N Qd[e] = offset; if offset == 0 ^ offset = bufsize - imm; else ^ offset = offset - imm; Rn = offset;
上述功能參考第4圖之流程圖而進行更詳細的論述。在步驟100,執行一具有繞回函數之向量產生指令,隨後在步驟105中讀取純量暫存器Rn以獲得初始偏差,亦即純量啟動值。此外,在步驟110,讀取純量暫存器Rm以獲得緩衝器大小資訊。此後,在步驟115,變數「e」設置等於零,隨後在步驟120中,結果向量暫存器內的第e個元素設置等於當前偏移值。後續實施步驟視所執行的向量產生指令是遞增版本還是遞減版本而定。
如若在步驟125決定其為遞增版本,則在步驟130中,偏移以立即值(亦即調整量)遞增,隨後在步驟135中,決定偏移目前是否等於緩衝器大小。若如此,則進行至步驟145之前,在步驟140中將偏移重設至零,而如若不是,則過程直接進行至步驟145。在步驟145中,決定e值是否已達到最大值,此視具有預定長度之向量內的資料值數目而定(從資料值大小而決定)。如若e並未達到最大值,則在過程返回步驟120之前,e先在步驟150中遞增。
如若在步驟125中決定正在執行之指令是遞減版本,則在步驟155中決定偏移目前是否等於零。如若等於零,則偏移在步驟160中經調整至一值,此值等於用緩衝器大小減去立即值。然而,如若在步驟155中未決定等於零,則在步驟165中,偏移以立即值遞減。在步驟160或165之後,過程繼續進行至步驟145。
一旦在步驟145中決定e已達到其最大值,則向量的全部元素將已產生,且因此,結果向量Qd將包含所需的複數個元素。隨後,過程繼續進行至步驟170,在步驟170中,在一個實施例中,更新暫存器Rn內之偏移值。步驟170是可選的,但在向量產生指令將迭代執行時可用,例如在迴路主體內,因為在下一迭代中,暫存器Rn將已包含此下一迭代的適當啟動值。
作為第4圖中圖示之方法的備選方案,在一些實施例中,純量暫存器Rn可在每一迭代期間更新。因此,在此實施例中,框170可被視作位於始於步驟145的「否」路徑內。在決定e等於其最大值的最終迭代之後,過程將遵循「是」路徑,及將再次根據第4圖中圖示程序更新暫存器Rn之內容。
儘管在一個實施例中,源暫存器Rm規定緩衝器大小,但在一替代性實施例中,可藉由提供等於用緩衝器大小減去立即值的一值來直接規定繞回點值。在此種排列中,VIWDUP指令的前文所述功能變為如下所示: vrWDUP.<size> Qd, Rn, Rm, #imm imm 限制為{1,2,4,8} offset = Rn; // Rn規定當前偏移 wrap = Rm; // Rm規定緩衝器大小(單位:位元組)- imm for e = 0 ... N Qd[e] = offset; if offset == wrap ^ offset = 0; else offset = offset + imm; Rn = offset;
此方法可能減少硬體需求,且將賦能與偏移遞增並行地實施決定是否繞回。
VDWDUP指令的對應功能如下所示: VDWDUP.<size> Qd, Rn, Rm, #imm imm限制為{1,2,4,8} offset = Rn; // Rn規定當前偏移 wrap = Rm; // Rm規定緩衝器大小(單位:位元組)- imm for e = 0 ... N Qd[e] = offset; if offset == 0 ^ offset = wrap; else ^ offset = offset - imm; Rn = offset;
第5圖說明以上述方式產生的元素向量可如何被用作向量記憶體存取指令的輸入運算元。特定而言,在第5圖之實例中,假設向量記憶體存取指令是向量載入指令,此指令經排列以從記憶體中由位址偏移向量Qm規定的位置實施資料值聚集。隨後,所得資料值作為元素儲存在結果向量Qd內。純量暫存器Rn在記憶體中包含基址,此基址與偏移向量組合以識別待存取的個別位址。與向量產生指令一樣,向量存取指令可包括大小欄位以識別正在處理的資料值的大小。
儘管此種向量載入指令可用以從記憶體中任意位址聚集資料值,當向量源暫存器Qm經設置為藉由執行VIWDUP或VDWDUP指令而產生的向量時,將理解,存取的位址實際上對應於記憶體內的循環緩衝器。因此,若考慮以下情況:例如藉由先前VIWDUP指令而產生的元素向量如第5圖中元素200所示,亦即與前文論述之第3圖的實例三中之結果相同,其中向量長度為128位元且資料值為32位資料值,則如第5圖所示,循環緩衝器將在記憶體位址空間內被存取,此循環緩衝器之起始位置視暫存器Rn內提供的純量值而定。因此,如若純量值具有第一值205,則循環緩衝器採取元素210所圖示之形式,而若在另一個實例中純量值具有值215,則循環緩衝器由元素220圖示。因此,此方法在循環緩衝器定義於記憶體位址空間內的位址提供大量靈活性。當使用偏移向量200時,從有關循環緩衝器中擷取資料,並將其儲存在結果向量暫存器Qd內以採取第5圖中圖示的形式225。
儘管如前文參考第4圖所論述,當執行VIWDUP或者VDWDUP指令時實施的功能可作為迭代序列而實施,在此情況下每一迭代中產生向量的一個元素,但在一些實施例中,向量產生電路系統可經排列以賦能並行產生多個元素。
第6圖是方塊圖,此圖說明向量產生電路系統之一個此種排列。在此實例中,提供加法器電路系統250,此加法器電路系統在一個實施例中可包含複數個單獨加法器區塊,每一加法器區塊經排列以產生輸出向量的一候選元素。隨後,提供修改電路系統260,此修改電路系統具有對應於每一加法器區塊的單獨修改區塊,每一修改區塊依據是否偵測到候選元素的值的繞回條件選擇性地修改由對應加法器區塊輸出的此候選元素。加法器電路系統接收純量啟動值250,及多個立即值倍數。修改電路系統260接收繞回控制資訊。
在一個實施例中,加法器電路系統250和關連的修改電路系統260可包含充足區塊以賦能並行計算向量的全部元素的值。或者,對至少一些資料值大小而言,加法器電路系統及修改電路系統可能不具有充足的區塊以並行計算全部元素的值,但可將全部元素的值計算為經由加法器電路系統及修改電路系統兩次或兩次以上之結果。
在第6圖中圖示的實例中,假設向量具有M個元素,且加法器電路系統250及修改電路系統250可並行產生向量之全部元素。
第7A圖說明當處理VIWDUP指令(亦即此指令之遞增版本)時使用的第6圖之向量產生電路系統16的一示例性形式。在此情況下的加法器電路系統包含一加法器區塊300、302、304、306序列,每個加法器區塊具有關連的立即值倍數及當前偏移(亦即純量啟動值)。將理解,所需加法器區塊數目(假設將並行產生向量之全部元素)視資料值大小而定。在前文參考第3圖論述的三個實例中,將明白,將產生的向量將具有四個元素、八個元素或十六個元素,這取決於資料值大小(及假設向量長度為128位元),由此,序列中之最終加法器306將接收對應於立即值三倍、立即值七倍或者立即值十五倍的第二輸入。
在一個實施例中,可提供單個向量產生電路,此電路具有十六個加法器區塊及十六個修改區塊,且在並非全部區塊都為必需的情況中,可以關閉某些區塊。因此,當產生具有四個元素的向量時,將需要激活區塊中僅四分之一,當產生具有八個元素的向量時,將需要激活一半區塊,且當產生具有十六個元素的向量時,將激活全部區塊。
隨後,每一加法器區塊300向當前偏移添加規定倍數的立即值,以便產生一候選元素,此候選元素作為一個輸入被轉送至修改電路系統260內的關連比較區塊310、312、314、316。在此示例性實施例中,前往每一比較區塊的另一輸入是緩衝器大小值。每一比較區塊由此決定來自關連加法器區塊的輸出是大於還是等於緩衝器大小。此外,其亦計算相當於用接收自關連加法器區塊的輸入減去緩衝器大小的值(在第7A圖中表示為「a-b」)。隨後,每一多工器電路320、322、324、326接收來自關連加法器區塊的輸出及來自關連修改區塊的「a-b」輸出,並且依據比較區塊實施的比較之輸出而經控制。因此,如若決定加法器之輸出並非大於或等於緩衝器大小,則來自加法器的輸出從關連多工器中輸出,而如若決定來自加法器的輸出大於或等於緩衝器大小,則來自修改區塊的輸出從多工器中輸出,亦即對應於用關連加法器區塊輸出的值減去緩衝器大小的輸出。
第7B圖中圖示在一個實施例中可用以實施VDWDUP指令所需操作之電路系統實例。此外,提供一系列加法器區塊330、332、334、336,且此等區塊再次接收當前偏移作為一個輸入,及接收立即值倍數而作為另一個輸入。然而,在此實例中,接收的此倍數是立即值之負倍數,使得加法器實施用當前偏移值減去此立即值倍數的減法。來自加法器區塊的輸出被轉送至修改電路系統上,及此外,進位輸出信號亦傳播至修改電路系統上。在此實例中,修改電路系統無需包括比較區塊,但反之可包括更多加法器區塊340、342、344、346,此等區塊接收來自關連加法器區塊330、332、334、336的輸出作為一個輸入,及接收緩衝器大小資訊作為第二輸入。更多加法器區塊中之每一者隨後向來自加法器區塊的輸出添加緩衝器大小值,並將此值作為第二輸入提供至關連多工器350、352、354、356,每一多工器的第一輸入是來自加法器電路系統250之加法器區塊330、332、334、336之輸出。若來自加法器區塊330、332、334、336中任一者的輸出是負值,則進位位元將指示此情況,且此可由此用以控制多工器,以使得在進位位元指示負值時,多工器選擇來自關連修改電路區塊340、342、344、346的輸出,而非來自加法器區塊330、332、334、336的原始輸出。
從第7A圖與第7B圖之比較可見,實施VDWDUP指令時使用的電路系統可利用來自加法器的進位信號而顯著簡化,從而避免對比較電路系統的需求。第7C圖說明當實施VIWDUP指令時可用的電路系統之備選排列,此排列亦賦能進位信號得以使用,從而避免比較電路。如第7C圖所示,加法器區塊360、362、364、366中之每一者根據第7A圖之示例性電路系統接收當前偏移與立即值倍數,但此外亦接收第三輸入「-BufSize」。因而,此有效地使得加法器在開始時用當前偏移減去緩衝器大小,且因此,來自加法器的一些輸出將可能為負,此將經由進位位元信號而指示。組件370、372、374、376對應於第7B圖之組件340、342、344、346。對於任何負輸出,關連的多工器380、382、384、386將選擇來自組件370、372、374、376的調整輸出,而非來自加法器區塊360、362、364、366的原始輸出。
因此,當採用第7C圖之電路系統時,VIWDUP指令之執行可極高效地實施,以便並行產生向量元素,且無需對比電路。藉由使用一排全加法器以將三個輸入「減少」至兩個加數以輸入進位傳播加法器,添加三個數字而非兩個數字在加法器360、362、364、366內易於適應。
而且,應注意,同一電路系統可用以實施VDWDUP操作,僅將「-BufSize」輸入設置為零並安排減去而非加上立即值的倍數即可。
在諸如數位信號處理(digital signal processing; DSP)之一些應用中,可能有大約相等數目的算術邏輯單元及載入/儲存指令,及因此一些諸如乘法累積單元之大型區塊可閑置達較長時間。在執行資源隨著向量路徑數目縮放以獲取更大效能時,此低效率可能在向量架構上情況加劇。在更小處理器上(例如單次發出,依序核心),可能禁止完全超過尺寸範圍的向量管線的面積額外負擔。使面積影響最小化,同時使可用執行資源的利用率更佳的一個方法是重疊執行指令,如第8圖所示。在此實例中,三個向量指令包括一載入指令VLDR、乘法指令VMUL及移位指令VSHR,此等指令全部可同時執行,即使此等指令之間有資料相依性。此是因為VMUL的元素1僅取決於Q1之元素1,而非整個Q1暫存器,因此VMUL的執行可在VLDR的執行已結束之前開始。藉由允許指令重疊,如乘法器之昂貴區塊可保持活動達更長時間。
因此,可能需要賦能微架構實施方式以重疊向量指令的執行。然而,如若架構假定有固定指令重疊量,則儘管此可在微架構實施方式實際上匹配架構採用的指令重疊量時提供高效率,但其可在按比例縮放至不同微架構時導致問題,此等微架構使用不同的重疊或完全不重疊。
相反,架構可支援各種不同的重疊,如第9圖的實例所示。向量指令的執行被分為被稱作「差拍」之部分,每一差拍對應於具有預定大小之向量中一部分的處理。差拍是向量指令之原子部分,其完全執行,或完全不執行,但無法部分執行。向量中在一個差拍中處理的部分的大小可由架構定義,且可為向量之任意部分。在第9圖之實例中,差拍定義為對應於向量寬度四分之一的處理,以使得每一向量指令有四個差拍。顯然,此僅為一個實例,及其他架構可使用不同的差拍數目,例如兩個或八個。向量中對應於一個差拍的部分可與正在處理的向量之元素大小相同,大於或小於此元素大小。因此,即使元素大小根據不同實施方式而不同,或在運行時於不同指令之間不同,差拍是向量處理的某一固定寬度。如若正在處理的向量中在一個差拍中之部分包括多個元素,則進位信號可在各別元素之間的邊界處去能,以確保每一元素獨立處理。如若向量在一個差拍中處理之部分僅對應於一元素的部分,且硬體不充足,無法並行計算數個差拍,則在一個處理差拍期間產生的進位輸出可輸入作為向隨後一處理差拍之進位輸入,以使得此兩個差拍的結果共同形成一元素。
如第9圖所示,處理電路4之不同的微架構實施方式可在抽象架構時鐘的一次「嘀嗒」中執行不同數目個差拍。此時,一次「嘀嗒」對應於架構狀態前進單元(例如在簡單架構上,每一次嘀嗒可對應於更新關連於執行指令之全部架構狀態的實例,包括更新程式計數器以指向下一指令)。熟習此項技術者將理解,諸如管線化之已知微架構技術可意謂著單次嘀嗒可需要多個時鐘週期以在硬體級別執行,而實際上硬體級別的單個時鐘週期可處理多個指令的多個部分。然而,此種微架構技術在軟體中卻是不可見的,因為嘀嗒在架構級別是原子級的。為簡明起見,在本揭示案之進一步描述期間忽略此種微架構。
如第9圖的下方實例中所示,一些實施方式可藉由提供充足的硬體資源以用於在一次嘀嗒內並行處理所有差拍,而將向量指令的四個差拍全部安排在同一次嘀嗒中。此可適用於更高效能的實施方式。在此情況下,架構級別在指令之間不需要任何重疊,因為整個指令可在一次嘀嗒中完成。
另一方面,面積效率更高的實施方式可提供更窄的處理單元,此等單元每次嘀嗒僅可處理兩個差拍,且如第9圖的中間實例中所示,指令執行可與第二向量指令的第一及第二差拍重疊,此第一及第二差拍與第一指令的第三或第四差拍同時執行,在此情況下,彼等指令在處理電路系統內的不同執行單元上執行(例如在第9圖中,第一指令是提供向量產生電路系統的單元內執行的向量遞增與繞回指令,及第二指令是藉由使用載入/儲存單元執行的載入指令)。
又一更具能效/面積效率的實施方式可提供硬體單元,此等硬體單元更窄,且每次僅能處理一個差拍,而在此情況下,每一次嘀嗒可處理一個差拍,指令執行藉由兩個差拍而重疊及交疊,如第9圖的頂部實例所示。
將理解,第9圖中圖示的重疊僅為一些實例,其他實施方式亦有可能。例如,處理電路系統4之一些實施方式可支援在同一嘀嗒中並行雙重發出多個指令,以使得有更大的指令處理量。在此情況下,在一個循環中一起開始的兩個或兩個以上向量指令可具有一些與在下一循環開始的兩個或兩個以上向量指令重疊的差拍。
改變不同實施方式的重疊量以按比例縮放至不同的效能點亦是如此,向量指令之間的重疊量亦可在運行時於程式內的不同向量指令執行個體之間變更。因此,處理電路系統4及指令解碼器6可參考差拍控制電路系統20,如第1圖所示,此差拍控制電路系統20用以控制相對於先前指令而執行給定指令的時序。此給予微架構選擇不在某些更難以實施或取決於指令可用資源的拐角情況下重疊指令的自由。例如,如若有給定類型的背對背指令(例如乘法累積),此等指令需要相同資源且所有可用的乘法累積單元或ALU資源皆正在被另一指令使用,則可能沒有充足的空閑資源以開始執行下一指令,因此,第二指令並非重疊,而是可能等到第一指令已完成時才發出。
因此,從第9圖之上述描述可見在向量產生指令與關連記憶體存取指令如何執行方面存在大量靈活性,但此等指令可緊密耦合以使向量記憶體存取指令相對快速地消耗向量產生指令產生的向量。此可十分實用,因為向量暫存器數目一般為稀少資源,且因此由於由向量產生指令產生的向量無須長期保留在向量暫存器內,此可釋放向量暫存器資源。向量產生指令自身的形式亦協助實現此益處,因為無需向量運算元用作向量產生指令的源運算元,反之,向量產生指令從立即值或者純量暫存器取得其輸入。
在一些實施例中,向量產生指令提供的繞回功能可有選擇地去能,且此以實例方式參考第10圖之流程圖得以說明。特定而言,在步驟400中,執行向量產生指令,且在步驟405中,決定純量暫存器Rm(亦即規定繞回控制資訊之暫存器)是否設置為預備值。例如,此等純量暫存器中一或更多者可能並非有效純量暫存器,無法規定此種繞回控制資訊,且因此,藉由將暫存器Rm設置為彼等暫存器之一,此識別此繞回功能將被去能。在一個特定實例中,此可藉由將程式計數器暫存器規定為暫存器Rm來實現。如若暫存器Rm不規定預備值,則如步驟410所指出,過程照常繼續,例如實施前文所述的第4圖之過程。然而,如若暫存器Rm是預備值,則在步驟415中去能繞回,且在步驟420中向量產生電路系統藉由使用偏移與立即(亦即調整量)值來產生值的遞增或遞減序列,但不受任何繞回約束。此可在使用VIWDUP與VDWDUP指令時提供額外靈活性(此等指令在繞回去能變體中可被稱作VIDUP與VDDUP指令)。
更多效能和效率過程可藉由約束純量暫存器Rm與Rn之規格而實現。特定而言,如若一個純量暫存器受約束以處於第一組純量暫存器內,此第一組純量暫存器未與選出另一純量暫存器的純量暫存器組重疊,則可藉由使用純量暫存器檔案10之讀取存取電路系統同時存取兩個暫存器的內容,所用讀取埠少於未以此方式約束暫存器情況下所需,或暫存器檔案分為兩個獨立記憶庫。第11圖中示意地說明此點,在此圖中,兩個組為偶數與奇數暫存器。因此,全部偶數暫存器R0 455、R2 465等等處於一個組內,及全部奇數暫存器R1 460、R3 470等等處於內又一組內。如若純量啟動值受約束以由彼等組中之一組內的暫存器所規定,儘管繞回控制資訊由另一組內的暫存器所規定,則如第11圖中讀取存取電路系統450所示,有可能使用來自多工器475與480的輸出來經由單個讀取埠存取奇數暫存器與偶數暫存器的內容。此舉藉由分接彼等值,隨後將其輸入最終多工器485來實現,最終多工器485仍允許讀取單個暫存器輸出(如需要)。
儘管在第11圖中針對偶數暫存器組與奇數暫存器組來說明實例,但更一般而言,可藉由約束規定偏移的暫存器與規定緩衝器大小的暫存器實現相同優勢,此偏移與此緩衝器大小來自於純量暫存器集中不重疊的部分。
以下是一示例性代碼序列,此序列說明上文論述之建議指令可如何用以高效地允許循環記憶體的使用: MOV r8, #0 MOV r9, #0 MOV r10, #0 WLSTP.32 Ir, %[loops], looplEnd looplStart: VLDRW.32 q0, [%[srcCoeff]], 0x10 VIWDUP.32 q7, r10, %[circ buff size], 0x4 VLDRW.32 q1, [%[srcSamplesCircular], q7] VMLALZA.S32 r9, r8, q0, q1 LE lr, loop1Start loop1End:
前三個移動指令用以初始化純量暫存器r8、r9與r10的內容為邏輯零值,且WLSTP指令隨後設置迴路,將迴路數目儲存在鏈接暫存器中。VLDRW指令則從純量暫存器(指示為「srcCoeff」)中指定之位址執行資料連續載入,並將所得資料值儲存在向量暫存器q0中,此指令亦在純量暫存器中遞增位址。VIWDUP指令如前文所論述,操作以產生偏移向量,此偏移向量儲存在向量暫存器q7內。因為資料值大小是32位元,則立即值是四。後續VLDRW指令使用向量暫存器q7的內容及源暫存器(被稱作「srcSamplesCircular」)中規定的基址以在記憶體中存取資料值,此等資料值隨後儲存在向量暫存器q1內。隨後執行向量乘法累積操作,其中q0中每一元素乘以q1中之對應元素,隨後在暫存器r8及r9內保留的純量值內累積。此過程繼續經由多個迴路迭代,直至已實施所需的迴路次數。
如前文所論述,可執行一類向量記憶體存取操作以在記憶體中從位址向量運算元所決定的位址處存取複數個資料值,此位址向量運算元包含複數個位址元素。儘管位址向量運算元可直接規定待存取之單個位址,但位址向量運算元往往規定偏移向量,此偏移向量與基址組合以便識別待存取之位址。此種操作允許在任意記憶體位置存取資料,且往往在從記憶體中的位址將資料載入向量之單個元素內時被稱作聚集操作,或在將來自向量的單個元素儲存至識別的位址位置中時被稱作分散操作。
由於此種分散或聚集操作中涉及的位址可為任意的事實,此種操作之處理一般需要串行化多種存取請求,以使得一系列獨立載入或儲存操作得以實施。在存取實際上為任意的情況下,此為合理且必需的。然而,已認識到存在數目不斷增多的情況,其中使用了此種分散或聚集類型的記憶體存取操作,但至少一些待存取位址實際上是連續的,因此,可經由對記憶體中連續位址的單次存取來存取多個資料值。此情況的一個特定實例是當使用前文所述向量遞增及繞回或向量遞減及繞回指令以產生偏移向量,且此等偏移向量隨後將用於執行聚集或分散操作的時候,因為除了達到繞回點的位置以外,位址將為連續的。
然而,在向量處理系統中,對記憶體之存取路徑往往是關鍵時序路徑,且因此,在記憶體存取路徑內提供電路系統,以在將處理向量記憶體存取操作時分析位址是不實際的。
如將參考剩餘圖式所述,某些實施例可提供一機制以用於緩解此問題。第12圖示意地說明一示例性實施例,此實施例包括意欲在某些位址序列將為連續的情況下進行識別的組件,由此協助載入/儲存單元減少在此種情況下需要的存取次數。如第12圖與第1圖之比較可見,第12圖說明設備2’,此設備2’基本上為第1圖之設備2,但具有一些額外組件。特定而言,處理電路系統4’包括第1圖之處理電路系統4內提供的全部組件,但此外亦具有旗標設置電路系統500,此電路系統可經排列以設置關於以下之旗標資訊:決定所產生以用於儲存在向量暫存器12中之一者內的一向量包含複數個滿足規定連續條件的元素。旗標設置電路系統產生的旗標資訊可儲存在各種位置。例如,可提供與旗標設置電路系統關聯的旗標資訊儲存器505,以用於儲存旗標資訊。或者,旗標資訊儲存器510可藉由提供數個與每一向量暫存器關聯的額外位元而有效地包括在向量暫存器檔案12內,以捕獲必要的旗標資訊。
如若對於特定向量暫存器而言,旗標設置電路系統500設置旗標資訊以識別此向量暫存器中至少一部分具有某種元素,此種元素的值滿足規定的連續條件,則當載入/儲存單元隨後藉由使用參考此暫存器而規定的偏移向量執行聚集或分散操作時,可利用此旗標資訊以決定哪些位址元素是連續的,由此可能減少對記憶體系統8所需的存取次數,以便實施聚集或分散操作。在旗標資訊未設置的情況下,則載入/儲存單元將以標準方式處理聚集或分散操作。此可涉及需要載入/儲存單元18將每一個位址元素視為識別不連續的位址,由此針對每一位址元素實施單獨的存取。或者,記憶體存取路徑內可提供其他組件,以設法至少部分地最佳化存取。在提供此種額外電路系統的程度上,其可與此處所述的旗標資訊機制一起使用。
旗標設置電路系統500設法決定存在或沒有的規定連續條件可採取各種形式,但在一個實施例中,向量中需要至少一元素子集以具有遵循規則進行序列的值。隨後,旗標資訊經設置以便賦能處理電路系統以決定向量中哪些元素具有遵循規則進行序列的值。
第13A圖說明依據一個實施例可在旗標資訊儲存器505內提供的條目。在此實例中,提供多個條目,每一條目具有暫存器ID欄位515以識別此條目所涉及之暫存器,及具有有效的旗標欄位517,此欄位包含一或更多個有效的旗標。在一個實施例中,單個有效旗標可結合整個向量而使用,及僅在向量中全部元素都遵循規則進行序列時將才設置。或者,有效旗標欄位517內可提供多個有效旗標,每一旗標與向量的不同部分關連,及依據此關連部分是否包含遵循規則進行序列的元素而設置。如若需要,亦可捕獲額外資訊以識別規則進行序列是否在多個部分之間延伸。因此,舉例而言,如若有四個關於向量中四個部分的有效旗標,且此等有效旗標指示部分2及部分3包含遵循規則進行序列的元素,則旗標資訊可額外捕獲(如若要求)部分3中之規則進行序列是否為部分2中規則進行序列的非中斷連續體。
所尋找的規則進行序列可採取各種形式,但在一個實施例中,規則進行序列使得連續記憶體位址將由遵循規則進行序列的值所產生,前提是彼等值在記憶體存取操作中用作位址元素。如前文所論述,可能僅支援單個資料值大小,由此,規則進行序列將在慮及資料值大小的情況下涉及識別連續位址的值。然而,在替代性實施例中,可支援多個不同資料值大小,且在此情況中,每一條目內可提供一大小欄位519以識別旗標資訊所涉及之資料值的大小。特定而言,將理解,當資料值具有一個大小時,一值序列可用以表示連續位址,但如若資料值具有不同大小,則同一值序列將未必表示連續的位址。
作為另一個實例,系統可能支援多個資料值大小,但所述實施例的旗標設置機制僅針對具有特定大小的資料值而實施。例如,當正在處理的資料值是具有位元組大小的資料值時,可能決定實施此旗標設置技術,然而當資料值具有任何更大大小時則並不實施此旗標設置技術。在此種情況中,可能不需要大小資訊欄位519。
同樣地,使用旗標設置技術可能僅限於一或更多個特定向量暫存器,且旗標資訊儲存器中每一條目可直接關連於一特定的暫存器。在此情況下,可能不一定提供暫存器識別符欄位515。
在又一替代性實施例中,僅可保留單個暫存器的旗標資訊,特定而言,以向上次使用的向量提供旗標資訊。在此種實施例中,如若代碼結構組成方式使得記憶體存取指令前緊挨的指令產生元素向量,此等元素能夠表示連續的偏移,則實施方式僅檢查同一向量是否被用作記憶體存取指令的偏移暫存器,並隨後相應地讀取旗標資訊。此外,此避免任何對在旗標資訊內捕獲暫存器識別符內的需求。
第13B圖說明一替代性旗標資訊儲存器510的一示例性排列,此旗標資訊儲存器與向量暫存器檔案12的向量暫存器組合提供。對於每一向量暫存器520,可提供一對應有效旗標欄位522以儲存一或更多個關連於此暫存器的有效旗標。如若需要,亦可提供大小資訊欄位524。憑藉此種方法,每一向量暫存器的有效旗標資訊可同時保留在向量暫存器檔案12中。
第14圖是一流程圖,此圖說明當執行向量記憶體存取操作時如何使用旗標資訊。在步驟550中,決定將執行一向量記憶體存取操作。特定而言,在一個實施例中,此時載入/儲存單元18決定其具有要執行之一向量記憶體聚集或分散操作。對於固有地識別記憶體中連續位址的其他類型的向量載入或儲存指令,無需旗標資訊,且彼等存取可利用位址的已知連續特性,以標準方式處理。然而,如前文提及,對於分散或聚集類型的操作而言,此等指令可能是記憶體中任意位址,但存在與用以提供位址偏移資訊的向量暫存器相關聯的旗標資訊可賦能載入/儲存單元以決定是否有任何位址元素實際上涉及連續位址,且使用此資訊以潛在地減少所需存取次數。
因此,在步驟555中,決定旗標資訊是否與向量暫存器關連,此向量暫存器提供位址向量運算元,在一個實施例中,此位址向量運算元係位址偏移的向量,此等位址偏移隨後與基址組合以便識別待存取的位址。如若旗標資訊與此向量暫存器關連,則在步驟560中,旗標資訊由載入/儲存單元18在決定為存取資料值而對記憶體的所需存取次數時使用。然而,否則,過程進行至步驟565,此時以標準方式執行聚集或分散操作,以便存取資料值。
第15A圖至第15C圖說明作為輸入提供至向量載入指令的偏移值之多個實例,此向量載入指令規定向量聚集操作。在此實例中,假設向量載入指令正在將四個32位元資料值載入128位元目的地暫存器Qd,偏移資訊在源向量暫存器Qm內提供,及基址在純量暫存器Rn中規定。在第15A圖中圖示的實例中,假設偏移570的向量提供一值規則遞增序列,此規則遞增序列可用於產生四個32位元資料值的連續位址。又在此實例中,假設旗標資訊572具有單個有效旗標,此旗標經設置以識別規則進行序列涉及整個向量寬度。大小資訊欄位亦經設置以識別採用資料大小為32位元,且暫存器ID欄位經設置以識別旗標資訊涉及暫存器Qm。因為向量載入指令正在32位元數量上操作,因此當涉及旗標資訊時,決定此大小資訊匹配,且暫存器ID匹配源暫存器Qm。因為設置有效旗標,因此載入/儲存單元已知全部位址元素遵循規則進行序列,此規則進行序列將使得記憶體中之連續位址在與基址組合時得以識別。
載入/儲存單元18使用資訊的方式將取決於數個因素,包括記憶體存取可用頻寬。例如,如若支援64位記憶體存取頻寬,則基於第15A圖中圖示資訊,載入/儲存單元可實施兩個64位元存取,每一存取指向兩個連續的位址,由此賦能每一次存取擷取兩個資料值。如若反之,支援128位元記憶體存取頻寬,則載入/儲存單元18可實施一個128位元存取,此存取指向四個連續位址,以便經由單個存取擷取全部四個資料值。
第15B圖說明一第二實例,其中旗標資訊在有效旗標欄位內具有兩個有效旗標,且因此旗標資訊針對特定的示例性元素574向量而採取形式576。由此,在此實例中,如若支援至少一64位元記憶體存取,載入/儲存單元可發出單個存取,以便擷取前兩個資料值。隨後,一般將需要進行單獨的存取以獲得第三資料值及第四資料值。
一旦設置了兩個有效旗標,則歸因於源向量暫存器Qm的下半部及上半部包含遵循所需進行序列的元素,可選擇性地捕獲一些額外資訊以識別此兩半之間是否存在連續性。例如,如若Qm容納元素20、16、4、0,則會設置兩個有效旗標,但將不設置此額外資訊,而如若Qm容納值12、8、4、0,則設置兩個有效旗標,且此外將設置此又一旗標以識別此兩半之間的連續性。此操作在某些情況下有用。例如,如若記憶體存取路徑具有一128位元之頻寬,則此額外資訊可用以決定是否需要發出兩個64位元連續存取,或是否可發出單個128位元連續存取。
第15C圖說明又一實例,其中偏移之源向量採取形式580,及旗標資訊採取形式582。在此實例中,旗標資訊欄位未簡單包含一系列旗標,而是提供充足資訊以識別此等元素中哪些元素表示連續位址。在此實例中,向量中前三個元素具有所需圖案,且旗標欄位內可捕獲資訊。將理解,此資訊可以多個方式捕獲。例如,可識別連續體中之起始元素及結束元素,或可識別連續序列的起始元素,及隨後為連續的數個元素。
在一個實施例中,旗標設置電路系統500可經排列以在出現一或更多個規定事件時使旗標資訊無效。特定而言,在一個實施例中,如第16A圖所示,如若步驟600中決定發生異常,則在步驟605中使旗標資訊無效。由此,異常形成規定事件中之一者,此事件導致旗標資訊無效。
第16B圖說明規定事件之另一實例,在此情況下,此規定事件是當處理電路系統寫入關連有旗標資訊的向量暫存器時的情況。給定已發生寫入操作,旗標資訊無法再假設為精確,且因此而無效。在步驟610中,決定當前指令是否寫入向量暫存器,且如若決定寫入,則在步驟615中決定有效旗標資訊是否儲存用於此向量暫存器。如若如此,則在步驟620中使用於此向量暫存器的旗標資訊無效。隨後,在步驟625中執行指令。如若沒有遵循步驟610或者步驟615的路徑,則過程直接進行至步驟625以執行指令,及保留任何旗標資訊。
藉由排列由於發生此種事件而將無效的旗標資訊,此意謂著此旗標資訊無須在架構上可見,因此不需要保存及從異常回復。此簡化了旗標設置機制之實施方式。
有數個機制可用以觸發旗標設置電路系統500以產生旗標資訊以用於元素向量。第17圖說明一個示例性排列,其中旗標設置電路系統在執行前文所述VIWDUP或VDWDUP指令中之一者之後被觸發。特定而言,如若在步驟650中決定執行此等指令中之一者,則在步驟655中儘管向量產生電路系統16執行此指令,此向量產生電路系統向旗標設置電路系統500提供資訊以識別所產生的向量內是否發生繞回,及如若發生繞回,則提供資訊以識別此繞回在向量內出現的位置。
在步驟660,旗標設置電路系統隨後分析此資訊及相應地針對有關暫存器而設置此旗標資訊。特定而言,如若不出現繞回,則已知對於為此VIWDUP或VDWDUP指令識別的資料值大小而言,如若此向量作為輸入被用於涉及同一資料值大小的後續聚集或分散操作,元素向量將表示連續位址,及因此可設置一或更多個有效的旗標。同樣地,如若有一繞回點,仍可決定向量內哪些元素表示連續的位址,及可由此設置旗標資訊。在此種情況中,將取決於旗標資訊特性及粒度,此旗標資訊針對是否有任何有效旗標可經設置以識別向量中至少部分而產生,此等部分包含涉及連續位址的元素。
第18圖說明替代第17圖之方法,或聯合第17圖之方法可用以調用旗標設置電路系統500的另一機制。在步驟665,決定是否存在新指令以用於解碼,如存在,則解碼電路系統在步驟670中決定此指令之執行是否將產生一向量,此向量之元素具有遵循規則進行序列的值。例如,可能有某些指令在執行時已知將產生規則進行序列,此規則進行序列可用以針對特定的資料值大小而表示連續位址的位址偏移。若在步驟670中進行此種決定,則在步驟675中,解碼器電路系統向旗標設置電路系統發送控制信號,以在此指令隨後在處理電路系統4’內執行時,使旗標設置電路系統為有關向量暫存器設置旗標資訊。此外,在步驟680中,產生控制信號以使處理電路系統在流程返回步驟665之前執行指令所需的操作。如若在步驟670中,決定指令之執行將無法保證產生一向量,此向量之元素具有遵循規則進行序列的值,則過程直接進行至步驟680,繞過步驟675。
第19圖說明替代或聯合第17圖及第18圖論述的機制可用以調用旗標設置電路系統的又一機制。在此實例中,在步驟685中決定向量是否已從記憶體中載入。當決定向量已經從記憶體載入向量暫存器中之一者時,則可在步驟690中調用旗標設置電路系統內之比較電路系統,以分析向量元素以識別是否至少一元素子集具有遵循規則進行序列的值(此可針對各種可能的不同資料值大小進行分析)。隨後,旗標資訊可按照旗標設置電路系統實施的分析結果而相應地經設置。將理解,第19圖中識別的比較操作可藉由不處於記憶體關鍵存取路徑上的電路系統執行,及在系統操作的方便點處執行,此將不會影響處理電路系統之效能。一旦已經產生旗標資訊,則如若此向量隨後在聚集或分散操作中用作位址偏移之輸入向量,可以參考此旗標資訊以便潛在地減少處理聚集或分散操作時對記憶體的所需存取次數。
以下碼序列說明旗標設置機制可如何提高效能的實例: VIWDUP.8 q7, r0, r2, #1 // q0 = [0,1,2.,15] VLDRW.8 q1, [%[basePtr], q7]
VIWDUP指令之執行產生單調遞增向量值,僅有極少情況下發生此繞回。在一個示例性實施方式中,旗標設置電路系統可為每一字(亦即32位元)設置一旗標,表明此字內全部元素均單調遞增。當隨後執行向量載入指令時,可讀取此等旗標,及並非正規處理聚集載入,而是在此等旗標指示連續元素的所有位置即可發出連續載入。
第20圖圖示可使用的一虛擬機實施方式。儘管前文描述之實施例利用操作支援相關技術的特定處理硬體的設備及方法而實施本發明,但亦有可能提供硬體裝置的所謂虛擬機實施方式。此等虛擬機實施方式在主機處理器750上運行,此主機處理器運行主機作業系統740,此主機作業系統支援虛擬機程式730。通常,需要大型強力處理器以提供以合理速度執行的虛擬機實施方式,但此種方法在某些環境中可能合理,如在需要運行另一處理器之本端碼以獲得相容性或出於再使用原因。虛擬機程式730向客程式720提供虛擬硬體介面,此介面與將由實際硬體提供的硬體介面相同,此實際硬體是藉由虛擬機程式730模型化的裝置。由此,程式指令(包括上述彼等用以控制記憶體存取的指令)可藉由使用虛擬機程式730而在客程式720內執行,以模型化指令與虛擬機硬體的交互。客程式720可為裸金屬程式,或可為以與主機作業系統740運行虛擬機應用程式730的相似方式運行應用程式的客作業系統。亦將理解,有不同類型的虛擬機,及在一些類型中,虛擬機直接在主機硬體750上運行,無需主機作業系統740。
在本申請案中,詞語「經配置以…」用以意謂著設備元件具有一配置,此配置能夠執行所定義的操作。在此上下文中,「配置」意謂著硬體或軟體的排列或互連方式。例如,設備可具有專用硬體,此硬體提供定義的操作,或處理器或其他處理裝置可經程式化以執行此功能。「經配置以」並非暗示此設備元件為了提供所定義的操作而需要以任何方式變更。
儘管本文已參考附圖詳細描述本發明的說明性實施例,但將理解,本發明並非限定於彼等精確實施例,及熟習此項技術者在不背離本發明範疇及精神的前提下可對本發明進行多種變更、新增及修改,本發明範疇及精神由所附專利申請範圍所定義。例如,在不背離本發明範疇的前提下,可利用獨立請求項特徵產生從屬申請項的多種特徵組合。
2‧‧‧資料處理設備
2'‧‧‧資料處理設備
4‧‧‧處理電路系統
4'‧‧‧處理電路系統
6‧‧‧指示解碼器
8‧‧‧記憶體系統
10‧‧‧純量暫存器
12‧‧‧向量暫存器
16‧‧‧處理電路系統
18‧‧‧載入/儲存單元
20‧‧‧差拍控制電路系統
50‧‧‧指令
52‧‧‧第一欄位
53‧‧‧大小資訊欄位
54‧‧‧目的地向量暫存器欄位
55‧‧‧欄位
56‧‧‧包覆控制資訊欄位
57‧‧‧調整量欄位
70‧‧‧邏輯緩衝器
75‧‧‧純量啟動值
80‧‧‧緩衝器大小
100‧‧‧步驟
105‧‧‧步驟
110‧‧‧步驟
115‧‧‧步驟
120‧‧‧步驟
125‧‧‧步驟
130‧‧‧步驟
135‧‧‧步驟
140‧‧‧步驟
145‧‧‧步驟
150‧‧‧步驟
155‧‧‧步驟
160‧‧‧步驟
165‧‧‧步驟
170‧‧‧步驟
200‧‧‧元素
205‧‧‧第一值
210‧‧‧元素
215‧‧‧值
220‧‧‧元素
225‧‧‧形式
250‧‧‧加法器電路系統
260‧‧‧修改電路系統
300‧‧‧加法器區塊
302‧‧‧加法器區塊
304‧‧‧加法器區塊
306‧‧‧加法器區塊
312‧‧‧關連比較區塊
314‧‧‧關連比較區塊
316‧‧‧關連比較區塊
320‧‧‧多工器電路
322‧‧‧多工器電路
324‧‧‧多工器電路
326‧‧‧多工器電路
330‧‧‧加法器區塊
332‧‧‧加法器區塊
334‧‧‧加法器區塊
336‧‧‧加法器區塊
340‧‧‧加法器區塊
342‧‧‧加法器區塊
344‧‧‧加法器區塊
346‧‧‧加法器區塊
350‧‧‧關連多工器
352‧‧‧關連多工器
354‧‧‧關連多工器
356‧‧‧關連多工器
362‧‧‧加法器區塊
364‧‧‧加法器區塊
366‧‧‧加法器區塊
370‧‧‧組件
372‧‧‧組件
374‧‧‧組件
376‧‧‧組件
380‧‧‧關連多工器
382‧‧‧關連多工器
384‧‧‧關連多工器
386‧‧‧關連多工器
400‧‧‧步驟
405‧‧‧步驟
410‧‧‧步驟
415‧‧‧步驟
420‧‧‧步驟
450‧‧‧讀取存取電路系統
455‧‧‧偶數暫存器
460‧‧‧奇數暫存器
465‧‧‧偶數暫存器
470‧‧‧奇數暫存器
475‧‧‧多工器
480‧‧‧多工器
485‧‧‧多工器
500‧‧‧標記設置電路系統
505‧‧‧標記資訊儲存器
510‧‧‧標記資訊儲存器
515‧‧‧暫存器ID欄位
517‧‧‧有效的標記欄位
519‧‧‧大小欄位
520‧‧‧向量暫存器
522‧‧‧有效標記欄位
524‧‧‧大小資訊欄位
550‧‧‧步驟
555‧‧‧步驟
560‧‧‧步驟
565‧‧‧步驟
570‧‧‧偏移
572‧‧‧標記資訊
574‧‧‧示例性元素
576‧‧‧形式
580‧‧‧形式
582‧‧‧形式
600‧‧‧步驟
605‧‧‧步驟
610‧‧‧步驟
615‧‧‧步驟
620‧‧‧步驟
625‧‧‧步驟
650‧‧‧步驟
655‧‧‧步驟
660‧‧‧步驟
665‧‧‧步驟
670‧‧‧步驟
675‧‧‧步驟
680‧‧‧步驟
685‧‧‧步驟
690‧‧‧步驟
720‧‧‧客程式
730‧‧‧虛擬機程式
740‧‧‧主機作業系統
750‧‧‧主機處理器
本技術將僅以舉例方式,參考如附圖中所圖示的本案實施例進行進一步描述,在此等附圖中:
第1圖是依據一個實施例之一設備的方塊圖;
第2圖示意地說明依據一個實施例在向量產生指令內提供之欄位;
第3圖示意地說明依據一個實施例可經產生以用於向量產生指令之特定實例的元素向量;
第4圖是一流程圖,說明依據一個實施例當執行向量產生指令時所實施的處理;
第5圖示意地說明依據一個實施例,藉由向量產生指令產生之向量可如何用作對向量存取指令之輸入,以識別記憶體位址空間內的循環緩衝器;
第6圖是一方塊圖,更詳細地說明依據一個實施例之第1圖的向量產生電路系統的排列;
第7A圖至第7C圖示意地說明依據三個示例性實施例之第6圖的加法器電路系統及修改電路系統的排列;
第8圖圖示向量指令的重疊執行實例;
第9圖圖示在不同的處理器實施方式之間或在不同的指令執行個體間在運行時於連續向量指令之間的重疊量縮放的三個實例;
第10圖是一流程圖,此圖示意地說明依據一個實施例,可如何有選擇地去能向量產生指令之繞回功能;
第11圖示意地說明依據一個實施例之可與一組純量暫存器關聯使用之讀取存取電路系統的排列;
第12圖是依據又一實施例之一設備的方塊圖;
第13A圖及第13B圖說明依據所述實施例的第12圖中圖示之旗標資訊儲存器的兩個示例性排列;
第14圖是一流程圖,此圖說明依據一個實施例當執行向量記憶體存取操作時可如何使用旗標資訊;
第15A圖至第15C圖說明可用於所述實施例中之旗標資訊的不同示例性排列;
第16A圖及第16B圖是流程圖,指示依據一個實施例之可致使旗標資訊無效的規定事件;
第17圖至第19圖是流程圖,此等圖式說明依據所述實施例之可用以填充旗標資訊的不同機制;及
第20圖圖示可使用的虛擬機實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無

Claims (23)

  1. 一種設備,包括: 處理電路系統,用於實施向量處理操作;及 一指令解碼器,用以解碼向量指令以控制該處理電路系統以實施由該等向量指令規定的該等向量處理操作; 其中該指令解碼器回應於識別一純量啟動值及繞回控制資訊的一向量產生指令,以控制該處理電路系統以產生一向量,該向量包含複數個元素,該處理電路系統經排列以產生該向量,以使得該複數個元素中之該第一元素視該純量啟動值而定,及該複數個元素之該等值遵循一規則進行序列,該規則進行序列受約束以根據需求繞回以確保每一值處於從該繞回控制資訊決定之邊界內。
  2. 如請求項1中所述之設備,其中: 該向量產生指令規定一第一純量暫存器,該純量暫存器提供該純量啟動值。
  3. 如請求項1中所述之設備,其中該繞回控制資訊參考一立即值及一暫存器中之一者而在該向量產生指令內識別。
  4. 如請求項1中所述之設備,其中該處理電路系統經排列以使用該繞回控制資訊以決定一第一邊界,及一第二邊界是預定的。
  5. 如請求項4中所述之設備,其中該繞回控制資訊提供一大小指示,該大小指示用以決定該第一邊界,及該第二邊界是一零值。
  6. 如請求項1中所述之設備,其中該向量產生指令識別一調整量,該調整量用以決定該規則進行序列中相鄰元素值之間的一差異。
  7. 如請求項6中所述之設備,其中該向量產生指令受約束以滿足該等以下條件中至少一者: - 從該繞回控制資訊而決定的一緩衝器大小是該調整量之一倍數; - 該純量啟動值是該調整量之一倍數; - 該緩衝器大小超過一大小值,該大小值藉由用該向量中之該元素數目乘以該調整量而決定。
  8. 如請求項1中所述之設備,其中該處理電路系統由該解碼器電路系統回應於該向量產生指令而控制,以產生該向量,以使得該複數個元素之該等值遵循一規則遞增序列,該序列受約束以根據需求繞回,以確保每一值處於從此繞回控制資訊決定之該等邊界內。
  9. 如請求項1中所述之設備,其中該處理電路系統由該解碼器電路系統回應於該向量產生指令而控制,以產生該向量,以使得該複數個元素之該等值遵循一規則遞減序列,該序列受約束以根據需求繞回,以確保每一值處於從此繞回控制資訊決定之該等邊界內。
  10. 如請求項1中所述之設備,其中: 該解碼器電路系統回應於一向量記憶體存取指令以控制該處理電路系統,以在記憶體中由一輸入位址向量運算元決定之位址處存取複數個資料值,該輸入位址向量運算元包含複數個位址元素;及 該設備經排列以執行一指令序列,該指令序列包含該向量產生指令及一關連向量記憶體存取指令,該關連向量記憶體存取指令將由該向量產生指令產生的該向量識別為該輸入位址,以使得該複數個資料值在該記憶體內的一循環緩衝器內被存取。
  11. 如請求項10中所述之設備,其中該關連的向量記憶體存取指令識別一基址,該基址提供該循環緩衝器的一起始位址,及該輸入位址向量運算元將一位址偏移向量指定為該複數個位址元素,該向量將與該基址組合以便識別待存取之每一位址。
  12. 如請求項10中所述之設備,其中: 回應於一給定向量指令,該處理電路系統經配置以實施複數個處理差拍,每一差拍對應於一向量值之一段;及 該處理電路系統經配置以支援重疊執行該向量產生指令及該關連向量記憶體存取指令,其中該關連向量記憶體存取指令的一第一差拍子集與該向量產生指令之一第二差拍子集並行實施。
  13. 如請求項1中所述之設備,其中該指令解碼器回應於當解碼該向量產生指令時偵測到的一規定條件,去能該處理電路系統對該繞回控制資訊的使用,使得該處理電路系統經排列以產生該向量,以使得該複數個元素中之該第一元素視該純量啟動值而定,而該複數個元素的該等值遵循該規則進行序列,不受任何繞回約束。
  14. 如請求項13中所述之設備,其中該規定條件包含一預備值,該值用以識別該繞回控制資訊。
  15. 如請求項1中所述之設備,進一步包含: 一組純量暫存器; 其中該向量產生指令規定一第一純量暫存器及一第二純量暫存器,該第一純量暫存器提供該純量啟動值,該第二純量暫存器識別該繞回控制資訊,及該第一及該第二純量暫存器之規格受約束以使得該第一純量暫存器選自該組中之一第一組純量暫存器,該第一組與選出該第二純量暫存器的該組中之一第二暫存器組不重疊。
  16. 如請求項1中所述之設備,其中: 該處理電路系統包含一加法器電路系統,以藉由使用源於該純量啟動值及一規則進行調整值序列的一輸入值而產生複數個候選元素以用於該向量;及 一修改電路系統,用以從每一候選元素中產生一輸出元素以用於包含在該向量內,對於每一候選元素而言,該修改電路系統經排列以決定是否存在一繞回條件,及在存在該繞回條件時執行一算術運算以基於該繞回控制資訊修改該候選元素,以便產生該輸出元素,及在其他情況下則使用該未修改候選元素作為該輸出元素。
  17. 如請求項16中所述之設備,其中: 該處理電路系統由該解碼器電路系統回應於該向量產生指令而控制,以產生該向量,以使得該複數個元素之該等值遵循一規則遞減序列,該序列受約束以根據需求繞回,以確保每一值處於從此繞回控制資訊決定之該等邊界內;及 該加法器電路系統包含一單獨加法器區塊,以藉由用該輸入值減去該等調整值中之一關連者而產生每一候選元素,且來自每一加法器區塊之一進位輸出信號用以決定該關連候選元素是否存在該繞回條件。
  18. 如請求項16中所述之設備,其中: 該處理電路系統由該解碼器電路系統回應於該向量產生指令而控制,以產生該向量,以使得該複數個元素之該等值遵循一規則遞增序列,該序列受約束以根據需求繞回,以確保每一值處於從此繞回控制資訊決定之該等邊界內; 藉由從該純量啟動值中減去源於該繞回控制資訊的一上邊界值而從該等起始位址得出該輸入值;及 該加法器電路系統包含一單獨加法器區塊,以藉由向該輸入值添加該等調整值中之一關連者而產生每一候選元素,且來自每一加法器區塊之一進位輸出信號用以決定該關連候選元素是否存在該繞回條件。
  19. 如請求項16中所述之設備,其中該修改電路系統經排列以在該繞回條件存在時,實施向該候選元素添加源於該繞回控制資訊的一上邊界值的一加法作為該算術運算,以便產生該輸出元素。
  20. 一種操作一設備之方法,該設備具有處理電路系統以實施向量處理操作,並具有一指令解碼器以解碼向量指令以控制該處理電路系統以實施由該等向量指令規定的該等向量處理操作,該方法包含以下步驟: 解碼一向量產生指令,該向量產生指令識別一純量啟動值及繞回控制資訊;及 回應於該解碼,控制該處理電路系統以產生一向量,該向量包含複數個元素,該處理電路系統產生該向量,以使得該複數個元素中之該第一元素視該純量啟動值而定,及該複數個元素之該等值遵循一規則進行序列,該規則進行序列受約束以根據需求繞回以確保每一值處於從該繞回控制資訊決定之邊界內。
  21. 一種設備,包括: 處理構件,用於實施向量處理操作;及 指令解碼器構件,用於解碼向量指令以控制該處理構件以實施由該等向量指令規定的該等向量處理操作; 該指令解碼器構件回應於一識別一純量啟動值及繞回控制資訊的一向量產生指令,以控制該處理構件以產生一向量,該向量包含複數個元素,該處理構件用於產生該向量以使得該複數個元素中之該第一元素視該純量啟動值而定,及該複數個元素之該等值遵循一規則進行序列,該規則進行序列受約束以根據需求繞回以確保每一值處於從該繞回控制資訊決定之邊界內。
  22. 一種虛擬機電腦程式,包含程式指令以控制一主機資料處理設備以提供一指令執行環境,該環境對應於根據請求項1所述之該設備。
  23. 一種電腦可讀取儲存媒體,該媒體儲存根據請求項22所述之虛擬機電腦程式。
TW106139279A 2016-12-22 2017-11-14 向量產生指令 TWI770079B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1621965.1 2016-12-22
GB1621965.1A GB2558220B (en) 2016-12-22 2016-12-22 Vector generating instruction
??1621965.1 2016-12-22

Publications (2)

Publication Number Publication Date
TW201823972A true TW201823972A (zh) 2018-07-01
TWI770079B TWI770079B (zh) 2022-07-11

Family

ID=58360452

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106139279A TWI770079B (zh) 2016-12-22 2017-11-14 向量產生指令

Country Status (9)

Country Link
US (1) US11714641B2 (zh)
EP (1) EP3559803B1 (zh)
JP (1) JP7048612B2 (zh)
KR (1) KR102458467B1 (zh)
CN (1) CN110073332B (zh)
GB (1) GB2558220B (zh)
IL (1) IL267038B (zh)
TW (1) TWI770079B (zh)
WO (1) WO2018115807A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7141401B2 (ja) * 2017-08-24 2022-09-22 ソニーセミコンダクタソリューションズ株式会社 プロセッサおよび情報処理システム
US11126691B1 (en) 2020-06-23 2021-09-21 Arm Limited Apparatus and method for generating a vector of elements with a wrapping constraint

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4819152A (en) * 1985-04-05 1989-04-04 Raytheon Company Method and apparatus for addressing a memory by array transformations
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US6397318B1 (en) * 1998-04-02 2002-05-28 Cirrus Logic, Inc. Address generator for a circular buffer
US6760830B2 (en) 2000-12-29 2004-07-06 Intel Corporation Modulo addressing
US6604169B2 (en) * 2001-06-01 2003-08-05 Microchip Technology Incorporated Modulo addressing based on absolute offset
US7610466B2 (en) * 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US8051226B2 (en) * 2008-06-13 2011-11-01 Freescale Semiconductor, Inc. Circular buffer support in a single instruction multiple data (SIMD) data processor
US8793472B2 (en) * 2008-08-15 2014-07-29 Apple Inc. Vector index instruction for generating a result vector with incremental values based on a start value and an increment value
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
GB2464292A (en) 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
US9552206B2 (en) 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US9519617B2 (en) * 2011-07-14 2016-12-13 Texas Instruments Incorporated Processor with instruction variable data distribution
WO2013095580A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
US9268569B2 (en) 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9378065B2 (en) 2013-03-15 2016-06-28 Advanced Elemental Technologies, Inc. Purposeful computing
EP3690641B1 (en) 2013-05-24 2024-02-21 Coherent Logix Incorporated Processor having multiple parallel address generation units
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US9507601B2 (en) 2014-02-19 2016-11-29 Mediatek Inc. Apparatus for mutual-transposition of scalar and vector data sets and related method
US9898292B2 (en) 2015-02-25 2018-02-20 Mireplica Technology, Llc Hardware instruction generation unit for specialized processors

Also Published As

Publication number Publication date
IL267038A (en) 2019-07-31
EP3559803A1 (en) 2019-10-30
TWI770079B (zh) 2022-07-11
CN110073332A (zh) 2019-07-30
EP3559803B1 (en) 2021-05-12
GB201621965D0 (en) 2017-02-08
JP7048612B2 (ja) 2022-04-05
KR102458467B1 (ko) 2022-10-25
JP2020502669A (ja) 2020-01-23
GB2558220B (en) 2019-05-15
CN110073332B (zh) 2023-03-07
US20190369995A1 (en) 2019-12-05
US11714641B2 (en) 2023-08-01
GB2558220A (en) 2018-07-11
WO2018115807A1 (en) 2018-06-28
KR20190094195A (ko) 2019-08-12
IL267038B (en) 2021-07-29

Similar Documents

Publication Publication Date Title
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
TWI764966B (zh) 用於控制矢量記憶體存取之資料處理裝置及方法
US10628155B2 (en) Complex multiply instruction
US20150026444A1 (en) Compiler-control Method for Load Speculation In a Statically Scheduled Microprocessor
JP2011096254A (ja) 乗累算演算を実行するための装置および方法
TWI613590B (zh) 處理器流水線中的靈活的指令執行
TWI770079B (zh) 向量產生指令
US8055883B2 (en) Pipe scheduling for pipelines based on destination register number
TWI756212B (zh) 處理向量指令
WO2023148467A1 (en) Technique for performing memory access operations
JP2861234B2 (ja) 命令処理装置
JP2005134987A (ja) パイプライン演算処理装置