TW202318182A - 置換指令 - Google Patents

置換指令 Download PDF

Info

Publication number
TW202318182A
TW202318182A TW111132230A TW111132230A TW202318182A TW 202318182 A TW202318182 A TW 202318182A TW 111132230 A TW111132230 A TW 111132230A TW 111132230 A TW111132230 A TW 111132230A TW 202318182 A TW202318182 A TW 202318182A
Authority
TW
Taiwan
Prior art keywords
register
permutation
vector
elements
instruction
Prior art date
Application number
TW111132230A
Other languages
English (en)
Inventor
斯里傑許 沙達薩南
迪帕克 馬修
馬克 霍夫曼
傑羅德 史威尼
桑德洛簡 巴拉蘇巴馬尼安
洪峰 董
裕榮 孫
西德米戴 沙達薩迪
Original Assignee
美商高通公司
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 美商高通公司 filed Critical 美商高通公司
Publication of TW202318182A publication Critical patent/TW202318182A/zh

Links

Images

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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30101Special purpose 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register

Abstract

一種設備包括向量暫存器檔案、記憶體和處理器。向量暫存器檔案包括複數個向量暫存器。記憶體被配置為儲存置換指令。處理器被配置為:存取置換指令的週期參數。週期參數指示複數個資料來源的、包含用於置換指令的來源資料的計數。處理器亦被配置為:針對複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行置換指令以進行以下操作:至少部分基於複數個資料來源的計數來選擇複數個資料來源中的資料來源;及基於所選擇的資料來源的對應元件中的值,來填充特定元件。

Description

置換指令
概括地說,本揭示內容係關於置換指令。
技術進步已經導致了更小並且更強大的計算設備。例如,當前存在小型、輕便並且易於使用者攜帶的各種可攜式個人計算設備(包括諸如行動和智慧型電話的無線電話、平板電腦和膝上型電腦)。該等設備可以經由無線網路來傳送語音和資料封包。此外,許多此種設備併入了附加的功能,諸如數位靜態照相機、數位攝像機、數位記錄器和音訊檔播放機。此外,此種設備可以處理可執行指令,包括可以用於存取網際網路的軟體應用(諸如web瀏覽器應用)。因此,該等設備可以包括很強的計算能力。
此種計算設備通常併入用於對多個資料值(諸如在各個時間擷取的感測器資料)執行相同操作(例如,過濾)的功能。從記憶體中按順序取回每個資料值以執行操作非常耗時,並且可能使某些即時應用不切實際。
根據本揭示內容的一種實施方式,一種設備包括向量暫存器檔案、記憶體和處理器。該向量暫存器檔案包括複數個向量暫存器。該記憶體被配置為儲存置換指令。該處理器被配置為:存取該置換指令的週期參數。該週期參數指示複數個資料來源的、包含用於該置換指令的來源資料的計數。該處理器亦被配置為:針對該複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作:至少部分基於該複數個資料來源的該計數,來選擇該複數個資料來源中的資料來源;及基於所選擇的資料來源的對應元件中的值,來填充該特定元件。
根據本揭示內容的另一實施方式,一種方法包括:在設備處存取置換指令。該方法進一步包括:在該設備處存取該置換指令的週期參數。該週期參數指示複數個向量暫存器中的、包含用於該置換指令的來源資料的向量暫存器的計數。該方法亦包括:針對該複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作:至少部分基於該向量暫存器的計數,來選擇該複數個向量暫存器中的向量暫存器;及基於所選擇的向量暫存器的對應元件中的值,來填充該特定元件。
根據本揭示內容的另一實施方式,一種儲存指令的非暫時性電腦可讀取媒體,當由處理器執行時,該等指令使該處理器存取置換指令的週期參數。該週期參數指示複數個向量暫存器中的、包含用於該置換指令的來源資料的向量暫存器的計數。該等指令在由該處理器執行時,亦使該處理器針對該複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作:至少部分基於該向量暫存器的計數,來選擇該複數個向量暫存器中的向量暫存器;及基於所選擇的向量暫存器的對應元件中的值,來填充該特定元件。
根據本揭示內容的另一實施方式,一種裝置包括:用於存取置換指令的週期參數的構件。該週期參數指示複數個向量暫存器中的、包含用於該置換指令的來源資料的向量暫存器的計數。該裝置亦包括用於針對該複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作的構件:至少部分基於該向量暫存器的計數,來選擇該複數個向量暫存器中的向量暫存器;及基於所選擇的向量暫存器的對應元件中的值,來填充該特定元件。
回顧整個申請案之後,本揭示內容的其他態樣、優點和特徵將變得顯而易見,整個申請案包括以下部分:附圖說明、實施方式和申請專利範圍。
從記憶體中按順序取回多個資料值中的每一個資料值(諸如在各個時間擷取的感測器資料),並對每個取回的資料值執行相同的操作(例如,過濾)可能很耗時,並且可能導致在處理器處的操作的執行速度不令人滿意。揭示了使用向量暫存器來執行置換指令的系統和方法。在一些系統中,經由使用可以用於同時從記憶體載入多個資料值的向量暫存器(例如,源向量暫存器)來獲得改進的速度,並且可以對源向量暫存器的元件並行執行操作(例如,過濾操作)。例如,感測器資料的每第三個資料值將被選擇(例如,過濾)以用於後續處理。在特定實例中,將感測器資料的第0至第31個資料值載入到第一源向量暫存器中,將感測器資料的第32至第63個資料值載入到第二源向量暫存器中,並將感測器資料的第64至第95個資料值載入到第三源向量暫存器中。
在一些情況下,與對來源資料執行操作相關聯的複雜度可以藉由在對資料值執行計算之前、在對資料值執行計算之後,或者在對資料值執行計算之前和之後對來源資料的資料值進行過濾和重新排序,來顯著降低。可以使用置換指令來執行此種對來源資料的過濾和重新排序。例如,置換指令可以在以下各項期間或在準備以下各項時執行:下取樣操作、矩陣轉置或快速傅立葉核心操作。置換指令可以結合暫存器順序向量暫存器和元件順序向量暫存器來使用,以基於藉由暫存器順序向量暫存器指示的暫存器選擇順序,將所選擇的元件從源向量暫存器複製(例如,將資料值從源向量暫存器的所選擇的元件複製)到第一結果向量暫存器,以及基於藉由元件順序向量暫存器指示的元件選擇順序,將元件從第一結果向量暫存器複製(例如,將資料值從第一結果向量暫存器的元件複製)到第二結果向量暫存器。
在一些態樣中,暫存器順序向量暫存器的每個元件儲存用於指示特定源向量暫存器的值。在一個實例中,暫存器順序向量暫存器儲存值0、1、2、0、1、2、0、1、2……,使得暫存器順序向量暫存器的第0、第3、第6等元件中的每一個元件儲存用於指示第一源向量暫存器的值(例如,0),暫存器順序向量暫存器的第1、第4、第7等元件中的每一個元件儲存用於指示第二源向量暫存器的值(例如,1),並且暫存器順序向量暫存器的第2、第5、第8等元件中的每一個元件儲存用於指示第三源向量暫存器的值(例如,2)。儲存在所指示的源暫存器的對應元件中的資料值被複製到第一結果向量暫存器的對應元件。例如,儲存在暫存器順序向量暫存器的第0、第1和第2個元件中的值(例如, 012、0、1、2、0、1、2、......)分別指示第一源向量暫存器、第二源向量暫存器和第三源向量暫存器。(請注意,向一些元件的值施加強調(粗體和底線);提供此種強調僅是為了引起讀者對該等元件的注意,並且不代表該等元件的任何特定屬性或要對該等元件執行任何操作)。
基於暫存器順序向量暫存器,儲存在第一源向量暫存器的第0個元件中的值(例如,感測器資料的第0個資料值)、儲存在第二源向量暫存器的第1個元件中的值(例如,感測器資料的第33個資料值)以及儲存在第三源向量暫存器的第2個元件中的值(例如,感測器資料的第66個資料值)被分別複製到第一結果向量暫存器的第0個元件、第1個元件和第2個元件。
類似地,儲存在暫存器順序向量暫存器的第3、第4和第5個元件中的值(例如,0、1、2、 012、0、1、2、......)分別指示第一源向量暫存器、第二源向量暫存器和第三源向量暫存器。儲存在第一源向量暫存器的第3個元件中的值(例如,感測器資料的第3個資料值)、儲存在第二源向量暫存器的第4個元件中的值(例如,感測器資料的第36個資料值)以及儲存在第三源向量暫存器的第5個元件中的值(例如,感測器資料的第69個資料值)被分別複製到第一結果向量暫存器的第3個元件、第4個元件和第5個元件。以此種方式,儲存在源向量暫存器中的所有感興趣的資料值在第一結果向量暫存器中是交錯的。例如,第一結果向量暫存器包括感測器資料的第0個、第33個、第66個、第3個、第36個、第69個等資料值。
元件順序向量暫存器的每個元件指示第一結果向量暫存器的特定索引。將資料值從第一結果向量暫存器的指示元件複製到第二結果向量暫存器的對應元件。作為實例,基於儲存值 036、9、12、15、18、21、24、27、1、4、7、10、13、16、......的元件順序向量暫存器,儲存在第一結果向量暫存器的第0個元件中的值(例如,感測器資料的第0個資料值)被複製到第二結果向量暫存器的第0個元件,儲存在第一結果向量暫存器的第3個元件中的值(例如,感測器資料的第3個資料值)被複製到第二結果向量暫存器的第1個元件,儲存在第一結果向量暫存器的第6個元件中的值(例如,感測器資料的第6個資料值)被複製到第二結果向量暫存器的第2個元件,等等。例如,將第一結果向量暫存器的來自第一源向量暫存器的所有資料值按順序複製到第二結果向量暫存器。類似地,將來自第二源向量暫存器的所有資料值、接著的來自第三源向量暫存器的所有資料值從第一結果向量暫存器按順序複製到第二結果向量暫存器。第二結果向量暫存器按照從感測器資料的較早資料值到感測器資料的較晚資料值的順序來包括感興趣的資料值。
儲存在源向量暫存器的元件中的資料值可以被並行複製到第一結果向量暫存器,並且隨後從第一結果向量暫存器被並行複製到第二結果向量暫存器。暫存器順序向量暫存器和元件順序向量暫存器中的每一者皆包括與源向量暫存器一樣多的元件。
本文揭示一種置換指令,其包括可以在一些情況下用於指示暫存器選擇順序和元件選擇順序的週期參數(例如,純量參數)。與使用暫存器順序向量暫存器和元件順序向量暫存器的上述實施方式相比,使用純量週期參數來指示暫存器選擇順序和元件選擇順序的技術效果是減少了記憶體使用。
在一些實例中,置換指令亦包括暫存器起始參數。暫存器起始參數指示要用於填充第一結果向量暫存器的初始元件的起始源向量暫存器(例如,第一源向量暫存器)。週期參數指示了包含來源資料(例如,感測器資料)的源向量暫存器的計數(例如,3個源向量暫存器)。
在一些實例中,指令管理器基於起始源向量暫存器(例如,向量暫存器0)和源向量暫存器的計數(例如,3)來決定暫存器選擇順序。例如,暫存器選擇順序從起始源向量暫存器(例如,向量暫存器0)開始,並包括後續源向量暫存器,直至達到源向量暫存器的計數為止(例如,向量暫存器1和向量暫存器2),並且隨後重複,諸如暫存器選擇順序:0、1、2、0、1、2、0、1、2等。因此可以使用週期參數(而不是暫存器順序向量暫存器)來指示順序和重複的暫存器選擇順序。在其他實例中,指令管理器基於將源向量暫存器的計數映射到暫存器選擇順序的暫存器選擇資料,來決定暫存器選擇順序。
在一些實例中,置換指令包括截點參數、步進參數或這二者。截點參數指示將用於填充第二結果向量暫存器的初始元件(例如,第0個元件)的、第一結果向量暫存器的起始元件(例如,第0個元件)。步進參數指示將用於填充第二結果向量暫存器的後續元件的、到第一結果向量暫存器的下一個元件的步進中要包括的元件的計數(例如,3個元件)(亦被稱為「步長」)。該步進在到達第一結果向量暫存器的末尾時回繞,直至第二結果向量暫存器的元件已被填充。
指令管理器基於起始元件(例如,元件0)和要包括在每個步進中的元件的計數(例如,3個元件),來決定元件選擇順序。例如,元件選擇順序從起始元件(例如,元件0)開始,並包括每個步進中的後續元件(例如,0、3、6、9、12、15、18、21、24、27、30、1、4、7、10、13、16、......)。因此,可以使用截點參數、步進參數或這二者(而不是元件順序向量暫存器)來指示均勻步進的元件選擇順序。
在一些態樣中,暫存器起始參數、週期參數、截點參數和步進參數中的每一者對應於可以儲存在純量暫存器中的純量值。相比於使用可以儲存大得多的計數(例如,32)個純量值的向量暫存器(例如,暫存器順序向量暫存器),儲存高達兩個純量值(例如,起始參數、週期參數或這二者)來指示暫存器選擇順序使用更少的記憶體。類似地,相比於使用可以儲存大得多的計數(例如,32)個純量值的向量暫存器(例如,元件順序向量暫存器),儲存高達兩個純量值(例如,截點參數、步進參數或這二者)來指示元件選擇順序使用更少的記憶體。
下文中參考附圖對本揭示內容的特定態樣進行了描述。在本說明書中,公共特徵由公共元件符號標示。如本文中所使用的,各個術語僅用於描述特定實施方式的目的,而並不意欲限制各個實施方式。例如,單數形式「一」、「一個」、和「該」意欲亦包括複數形式,除非上下文另有明確指示。此外,本文描述的一些特徵在一些實施方式中是單數的並且在其他實施方式中是複數的。為了說明,圖11描繪了包括一或多個麥克風(圖11的「麥克風」1190)的設備1100,這表明在一些實施方式中,設備1100包括單個麥克風1190,而在其他實施方式中,設備1100包括多個麥克風1190。
如本文所使用的,術語「包括(comprise)」,「包括有(comprises)」和「包括著(comprising)」可以與「包含(include)」,「包含有(includes)」或「包含著(including)」互換使用。另外,術語「其中」可以與「在其中」互換使用。如本文所使用的,「示例性」指示實例、實施方式及/或態樣,並且不應被解釋為限制或指示偏好或優選實施方式。如本文所使用的,用於修飾諸如結構、部件、操作等元件的序數詞(例如,「第一」、「第二」、「第三」等)本身並不指示元件相對於另一元件的任何優先順序或順序,而僅僅是將元件與具有相同名稱的另一個元件區分開(但用於序數詞)。如本文中所使用的,術語「集合」是指特定元件中的一或多個特定元件,而術語「複數個」是指多個(例如,兩個或兩個以上)特定元件。
如本文所使用的,「耦合」可以包括「通訊地耦合」、「電耦合」或「實體地耦合」,並且亦可以(或者可替代地)包括其任何組合。兩個設備(或元件)可以經由一或多個其他設備、部件、電線、匯流排、網路(例如,有線網路、無線網路或其組合)等直接或間接耦合(例如,通訊耦合、電耦合或實體耦合)。作為說明性、非限制性實例,電耦合的兩個設備(或部件)可以包括在同一設備中或不同的設備中,並且可以經由電子設備、一或多個連接器或電感耦合來連接。在一些實施方式中,通訊耦合的(諸如,以電通訊方式)兩個設備(或部件)可以直接或間接地經由一或多個電線、匯流排、網路等來發送和接收信號(例如,數位信號或類比信號)。如本文中所使用的,「直接耦合」可以包括在沒有中間部件的情況下耦合(例如,通訊耦合、電耦合或實體耦合)的兩個設備。
在本揭示內容中,諸如「決定」、「計算」、「估計」、「移位」、「調整」等的術語可以用於描述如何執行一或多個操作。應當注意,該等術語不應被解釋為限制性的,並且可以利用其他技術來執行類似的操作。另外,如本文所指,「產生」、「計算」、「估計」、「使用」、「選擇」、「存取」和「決定」可以互換使用。例如,「產生」、「計算」、「估計」或「決定」參數(或信號)可以指主動產生、估計、計算或決定參數(或信號),或者可以是指使用、選擇或存取已經(諸如,由另一個部件或設備)產生的參數(或信號)。
參照圖1,圖1圖示設備102的特定說明性態樣的圖100。設備102包括耦合到記憶體132的處理器190。在特定態樣中,記憶體132被配置為儲存置換指令134。在一些實施方式中,可以將置換指令134添加到指令集架構(ISA)。在一些實施方式中,處理器190對應於實現ISA的向量處理器。例如,處理器190被配置為高效地對向量進行操作。在特定態樣中,處理器190被配置為高效地將向量(例如,較大的一維資料陣列)從記憶體132複製到向量暫存器,反之亦然,並且在單指令多資料(SIMD)配置中執行對來自向量暫存器的多個資料值的並行處理,諸如使用多個並行計算通道。
設備102亦包括耦合到處理器190的向量暫存器檔案138。在一些實施方式中,向量暫存器檔案138被集成在處理器190中。向量暫存器檔案138包括複數個向量暫存器142。在一些實例中,複數個向量暫存器142中的每一個向量暫存器包括相同計數的元件(例如,每個向量暫存器的大小被決定為包括32個元件,以保存32個資料值)。儘管複數個向量暫存器142中的每一個向量暫存器在本文的實例中被描述為包括32個元件,但在其他實例中,複數個向量暫存器142中的一或多個向量暫存器可以包括少於32個元件或多於32個元件。
複數個向量暫存器142包括複數個源向量暫存器146,其被配置為儲存要由置換指令134處理的(例如,從記憶體132取回或從另一設備接收的)來源資料。在特定態樣中,複數個源向量暫存器146包括源向量暫存器146A和包括源向量暫存器146N的一或多個附加源向量暫存器146。
複數個向量暫存器142包括複數個置換結果暫存器148,其被配置為儲存對置換指令134的執行的中間結果或最終結果。例如,複數個置換結果暫存器148中的置換結果暫存器148A被配置為儲存置換指令134的中間結果,並且複數個置換結果暫存器148中的置換結果暫存器148B被配置為儲存置換指令134的最終結果。提供包括兩個向量暫存器的複數個置換結果暫存器148作為說明性實例;在其他實例中,複數個置換結果暫存器148可以包括多於兩個向量暫存器。
置換指令134包括操作碼135和以下各項中的一或多項:暫存器起始參數152、週期參數154、截點參數156或步進參數158。操作碼135(例如,操作碼)對應於置換指令134的辨識符。暫存器起始參數152被配置為指示:複數個源向量暫存器146中的一個源向量暫存器(例如,源向量暫存器146A)被指定為起始暫存器162。起始暫存器162(例如,源向量暫存器146A)將用於填充置換結果暫存器148A的初始元件。例如,暫存器起始參數152指示被指定為起始暫存器162的源向量暫存器146(例如,源向量暫存器146A)的索引。週期參數154被配置為指示複數個向量暫存器142中的源向量暫存器146的計數(例如,向量暫存器計數164),該等源向量暫存器146包含要由置換指令134處理的來源資料(例如,感測器資料)。
截點參數156被配置為指示:置換結果暫存器148A中的一個元件被指定為起始元件166。起始元件166將用於填充置換結果暫存器148B的初始元件(例如,第0個元件)。例如,截點參數156指示置換結果暫存器148A的、被指定為起始元件166的元件的索引。步進參數158被配置為指示步進元件計數168,該步進元件計數168對應於置換結果暫存器148A的元件的計數,該置換結果暫存器148A的元件被包括在到用於填充置換結果暫存器148B的後續元件的、置換結果暫存器148A的下一個元件的步進中。
記憶體132被配置為儲存將複數個向量暫存器計數172映射到複數個暫存器選擇順序174的暫存器選擇資料176,如參考圖5進一步描述的。例如,向量暫存器計數172A映射到暫存器選擇順序174A,一或多個附加向量暫存器計數172映射到一或多個附加暫存器選擇順序,向量暫存器計數172N映射到暫存器選擇順序174N,或者其組合中。在特定實施方式中,向量暫存器檔案138中的任何向量暫存器可以用作源向量暫存器,並且暫存器選擇資料176可以包括用於任何數量的向量暫存器計數到暫存器選擇順序的映射。包括在暫存器選擇資料176中的映射的數量(例如,計數)可以匹配或可以不匹配向量暫存器檔案138中的源向量暫存器的數量(例如,計數)。例如,用於源向量暫存器146N的「N」可以代表與用於向量暫存器計數172N的「N」相同或不同的數量。在說明性實例中,向量暫存器計數164指示:向量暫存器檔案138中的三個向量暫存器將用作源向量暫存器,並且暫存器選擇資料176包括用於無限數量的向量暫存器計數的映射。為了說明,暫存器選擇資料176包括用於特定向量暫存器計數的映射,諸如用於1、2、3、4、5、8等,以及用於「任何其他」向量暫存器計數的映射。提供三個源向量暫存器和用於無限數量的向量暫存器計數的映射作為說明性實例,在其他實例中,向量暫存器檔案138的任意數量的向量暫存器可以用作源向量暫存器並且暫存器選擇資料176可以包括用於任意數量的向量暫存器計數的映射。
處理器190包括被配置為執行置換指令134的指令管理器140。在特定態樣中,指令管理器140被配置為執行以下各項中的一或多項:獲取置換指令134;對置換指令134進行解碼以決定起始暫存器162、向量暫存器計數164、起始元件166、步進元件計數168,或者其組合;向複數個源向量暫存器146載入來自記憶體132或另一設備的、用於置換指令134的來源資料;基於起始暫存器162、向量暫存器計數164、起始元件166、步進元件計數168或者其組合,來執行置換指令134;或者將來自置換結果暫存器148B的結果輸出到記憶體132或另一設備。
指令管理器140被配置為:將來自源向量暫存器146的、與特定元件索引相對應的單個元件的值複製到置換結果暫存器148A。換言之,來自多個源向量暫存器的、與相同元件索引相對應的元件的值不被複製到置換結果暫存器148A。為了說明,在一些實施方式中,源向量暫存器146被對準,使得來源資料的第一「列」由儲存在源向量暫存器146的第0個元件中的值形成、來源資料的第二列由儲存在源向量暫存器146的第1個元件中的值形成。來源資料的每一列可以包括用於執行置換指令134的單個感興趣的資料值。
在一些情況下,多個源向量暫存器在與相同索引(例如,「0」)相對應的元件中包括「感興趣的值」(例如,要被包括在結果中的值)。例如,多個感興趣的值被包括在來源資料的同一「列」中。為了說明,感興趣的第一資料值被包括在源向量暫存器146A的、與特定索引(例如,「0」)相對應的元件(例如,第0個元件)中,並且感興趣的第N個資料值被包括在源向量暫存器146N的、與特定索引(例如,「0」)相對應的元件(例如,第0個元件)中。
在一些實施方式中,指令管理器140被配置為:在執行置換指令134之前,對儲存在複數個源向量暫存器146中的來源資料的值進行預處理。預處理可以包括改變儲存在複數個源向量暫存器146中的來源資料的值的位置,使得每個感興趣的資料值被儲存在與不同索引相對應的元件中。例如,指令管理器140被配置為:在執行置換指令134之前執行旋轉指令136,以對儲存在複數個源向量暫存器146中的一或多個源向量暫存器中的值的位置進行旋轉,如參考圖7進一步描述的。為了說明,在執行旋轉指令136之後,感興趣的第N個資料值被儲存在源向量暫存器146N的對應於一索引(例如,「N」)的元件(例如,第N個元件)中,該索引與複數個源向量暫存器146的用於儲存剩餘感興趣值的元件的索引不同。
指令管理器140可以在對置換指令134的執行期間,從源向量暫存器146的、與不同索引相對應的元件複製每個感興趣的值。在一些實施方式中,旋轉指令136和置換指令134被儲存在指令佇列中。指令管理器140回應於決定:在指令佇列中旋轉指令136的位置相對於置換指令134的位置指示出旋轉指令136將在對置換指令134的執行之前執行,來在執行置換指令134之前執行旋轉指令136。
執行置換指令134包括:基於起始暫存器162(例如,由暫存器起始參數152指示)、向量暫存器計數164(例如,由週期參數154指示)、暫存器選擇資料176或者其組合,來決定暫存器選擇順序184,以及基於暫存器選擇順序184來將資料值從複數個源向量暫存器146的元件複製到置換結果暫存器148A的元件。執行置換指令134亦包括:基於起始元件166(例如,由截點參數156指示)、步進元件計數168(例如,由步進參數158指示)或這二者,來決定元件選擇順序186,以及基於元件選擇順序186,來將資料值從置換結果暫存器148A的元件複製到置換結果暫存器148B的元件。
在一些實施方式中,設備102對應於或被包括在各種類型的設備中的一個設備中。在說明性實例中,設備102的一或多個部件(例如,處理器190、記憶體132、向量暫存器檔案138或者其組合)集成在下列各項中的至少一項中:頭戴式受話器設備、手機、平板電腦設備、可穿戴電子設備、聲控揚聲器系統、相機設備、虛擬實境頭戴式受話器、混合現實頭戴式受話器、增強現實頭戴式受話器,或者交通工具。
在操作期間,指令管理器140決定起始暫存器162。在一些實例中,置換指令134包括暫存器起始參數152,並且指令管理器140存取暫存器起始參數152以決定起始暫存器162。為了說明,指令管理器140回應於決定暫存器起始參數152指示源向量暫存器146A的第一源暫存器索引(例如,0),來決定暫存器起始參數152指示:源向量暫存器146A被指定為起始暫存器162。在其他實例中,在置換指令134中不存在暫存器起始參數152,並且指令管理器140回應於決定置換指令134中不存在暫存器起始參數152,來決定與預設源暫存器索引(例如,0)相對應的預設向量暫存器(例如,源向量暫存器146A)將用作起始暫存器162。起始暫存器162將用於填充置換結果暫存器148A的初始元件(例如,第0個元件)。
指令管理器140決定向量暫存器計數164。例如,指令管理器140存取置換指令134的週期參數154,以決定複數個源向量暫存器146的、用於儲存針對置換指令134的來源資料的向量暫存器計數164。
指令管理器140決定起始元件166。在特定態樣中,複數個向量暫存器142中的每一個向量暫存器包括複數個元件(例如,32個元件)。向量暫存器142的每個元件具有元件索引(例如,在0至31之間的值)(例如,基於元件索引可辨識該每個元件)。在一些實例中,置換指令134包括截點參數156,並且指令管理器140存取截點參數156,以決定起始元件166。為了說明,指令管理器140回應於決定截點參數156包括特定元件索引(例如,0),來決定截點參數156指示:置換結果暫存器148A的、具有特定元件索引的特定元件被指定為起始元件166。在其他實例中,在置換指令134中不存在截點參數156,並且指令管理器140回應於決定置換指令134中不存在截點參數156,來決定:置換結果暫存器148A的、與預設元件索引(例如,0)相對應的預設元件(例如,第0個元件)將被用作起始元件166。起始元件166將用於填充置換結果暫存器148B的初始元件(例如,第0個元件)。
指令管理器140決定步進元件計數168。在一些實例中,置換指令134包括步進參數158,並且指令管理器140存取步進參數158,以決定步進元件計數168。步進元件計數168指示要包括在到用於填充置換結果暫存器148B的後續元件的、置換結果暫存器148A的下一元件的步進中的元件的計數。例如,若起始暫存器162對應於置換結果暫存器148A的第0個元件,以填充置換結果暫存器148B的第0個元件,則置換結果暫存器148A的下一個元件對應於置換結果暫存器148A的第0+步進元件計數168個元件,以填充置換結果暫存器148B的第一個元件。在一些實施方式中,週期參數154和步進參數158過載。例如,由置換指令134指示的單個值對應於週期參數154和步進參數158二者。為了說明,步進參數158具有與週期參數154相同的值。在一些實施方式中,置換指令134回應於決定置換指令134中不存在步進參數158,來基於週期參數154決定步進元件計數168。在特定實例中,步進元件計數168基於向量暫存器計數164(例如,與其相同)。
在一些態樣中,具有與向量暫存器計數164相同的值的步進元件計數168對應於將儲存在置換結果暫存器148A中的特定源向量暫存器146的所有值複製到置換結果暫存器148B的一組連續元件,如參考圖2、圖4和圖6進一步描述的。為了說明,儲存在置換結果暫存器148B中的值對應於對儲存在置換結果暫存器148A中的值的置換。在一些態樣中,具有與向量暫存器計數164不同的值的步進元件計數168對應於從儲存在置換結果暫存器148B的非連續元件中的特定源向量146複製的至少一些元件,如參考圖8至圖9進一步描述的。在一些實例中,具有特定值(例如,1)的步進元件計數168對應於將元件從置換結果暫存器148A複製到置換結果暫存器148B而不進行置換,如參考圖8進一步描述的。
指令管理器140基於暫存器選擇資料176來決定與向量暫存器計數164相對應的暫存器選擇順序184,如參考圖5進一步描述的。暫存器選擇順序184指示針對置換結果暫存器148A的元件的暫存器索引。例如,針對置換結果暫存器148A的元件「i」的暫存器索引由暫存器選擇順序184根據起始暫存器162(例如,如藉由暫存器起始參數152所指示的)、向量暫存器計數164(例如,如藉由週期參數154所指示的),或這二者來提供,如參考圖2進一步描述的。暫存器選擇順序184指示與置換結果暫存器148A的每個元件相對應的特定源向量暫存器146。
指令管理器140基於起始元件166和步進元件計數168來決定元件選擇順序186。元件選擇順序186指示置換結果暫存器148A的起始元件166,和置換結果暫存器148A的、與添加到置換結果暫存器148A的先前指示的元件的步進元件計數168相對應的下一個元件。元件選擇順序186在到達置換結果暫存器148A的元件的末尾之後回繞,直至置換結果暫存器148A的每個元件皆被元件選擇順序186指示為止,如參考圖2進一步描述的。例如,元件選擇順序186指示針對置換結果暫存器148B的元件的元件索引,其中「i」對應於置換結果暫存器148B的元件的索引,並且針對置換結果暫存器148B的元件i的元件索引根據起始元件166(例如,如藉由截點參數156所指示的)、步進元件計數168(例如,如藉由步進參數158所指示的)或這二者提供,如參考圖2所描述的。元件選擇順序186指示與置換結果暫存器148B的每個元件相對應的特定元件索引。
指令管理器140基於暫存器選擇順序184來執行置換指令134,以填充置換結果暫存器148A,如參考圖2進一步描述的。例如,對於置換結果暫存器148A的每個特定元件,指令管理器140基於暫存器選擇順序184來選擇複數個源向量暫存器146中的源向量暫存器;及基於源向量暫存器的對應元件來填充特定元件,如參考圖2進一步描述的。
指令管理器140在對置換指令134的執行期間,基於元件選擇順序186來填充置換結果暫存器148B的元件,如參考圖2進一步描述的。例如,指令管理器140針對置換結果暫存器148B的特定元件(例如,i)並且基於元件選擇順序186來選擇置換結果暫存器148A的元件,以及基於置換結果暫存器148A的所選擇的元件來填充置換結果暫存器148B的特定元件,如參考圖2進一步描述的。
置換指令134實現了對來源資料執行操作,而不使用向量暫存器來指定暫存器選擇順序184和元件選擇順序186。在特定態樣中,指令管理器140將來自記憶體132(或另一設備)的來源資料並行載入到複數個源向量暫存器146中的一或多個源向量暫存器。在一些實施方式中,指令管理器140在對置換指令134的執行期間,基於複數個源向量暫存器146的元件來並行地填充置換結果暫存器148A的元件;並且基於對置換結果暫存器148A的元件的值的置換,來並行填充置換結果暫存器148B的元件。
提供從源向量暫存器146複製資料以填充置換結果暫存器148的置換指令134,作為說明性實例。在一些實施方式中,置換指令134可以用於執行類似的操作(如關於從源向量暫存器146複製資料所描述的),以從複數個資料來源複製資料來填充置換結果暫存器148。例如,起始參數(類似於暫存器起始參數152)指示起始資料來源,週期參數154指示資料來源計數,或兩者。指令管理器140可以存取將資料來源計數映射到選擇順序的選擇資料(例如,類似於暫存器選擇資料176)。選擇順序指示對資料來源的選擇順序,以填充置換結果暫存器148A。資料來源可以包括源向量暫存器146、設備102的另一部件、另一設備、另一系統,或者其組合。
參考圖2,圖示執行置換指令134的實例200。例如,圖1的指令管理器140針對儲存在源向量暫存器146A-C中的來源資料執行置換指令134。執行置換指令134包括:基於起始暫存器162(例如,由暫存器起始參數152指示的)和向量暫存器計數164(例如,由週期參數154指示的)來填充置換結果暫存器148A,隨後基於起始元件166(例如,由截點參數156指示的)和步進元件計數168(例如,由步進參數158指示的)來填充置換結果暫存器148B,如下文更詳細描述的。
在實例200中,源向量暫存器146A、源向量暫存器146B和源向量暫存器146C分別儲存資料值i0-i31、j0-j31和k0-k31。源向量暫存器146A、源向量暫存器146B和源向量暫存器146C分別對應於(例如,基於以下項可被唯一標識)第一源暫存器索引(例如,0)、第二源暫存器索引(例如,1)和第三源暫存器索引(例如,2)。週期參數154指示為3的向量暫存器計數164。例如,週期參數154指示:三個源向量暫存器儲存用於置換指令134的來源資料。儘管提供了用於儲存來源資料的三個源向量暫存器作為說明性的非限制性實例,但在其他實例中,少於三個或多於三個的源向量暫存器可以儲存用於置換指令134的來源資料。
指令管理器140基於暫存器選擇資料176來決定與向量暫存器計數164相對應的暫存器選擇順序184,如參考圖5進一步描述的。暫存器選擇順序184指示針對置換結果暫存器148A的元件的暫存器索引,其中「i」對應於置換結果暫存器148A的元件的索引,並且針對置換結果暫存器148A的元件i的暫存器索引由下式提供:((暫存器起始參數152+i)%3),其對應於為3的向量暫存器計數164,其中「%」對應於取模運算元。
在實例200中,暫存器起始參數152具有為0的值,其指示與為0的暫存器索引相對應的起始暫存器162。暫存器選擇順序184指示與置換結果暫存器148A的每個元件相對應的特定源向量暫存器146。在一些實例中,暫存器選擇順序184(例如,0、1、2、0、1、2、0、1、2、...)從起始暫存器162開始,指示複數個源向量暫存器146中的每一個連續源向量暫存器,直至滿足向量暫存器計數164(例如,3個源向量暫存器)為止,並且重複。在其他實例中,暫存器選擇順序184(例如,0、2、4、1、3、0、2、4、1、3......)從起始暫存器162開始,並且包括重複的、與向量暫存器計數164(例如,5個源向量暫存器)相對應的複數個源向量暫存器146的亂序序列,如參考圖6進一步描述的。
在一些實例中,指令管理器140計算與置換結果暫存器148A的每個元件相對應的、暫存器選擇順序184的值(例如,0、1、2、0、1、2、0、1、2、0、1、2、0、1、2、0、1、2、0 、1、2、0、1、2、0、1、2、0、1、2、0、1),並將暫存器選擇順序184的值儲存在暫存器順序向量暫存器中。在該等實例中,可以基於儲存在暫存器順序向量暫存器中的暫存器選擇順序184的值,來並行地填充置換結果暫存器148A的元件。在其他實例中,指令管理器140將暫存器選擇順序184(例如,i%3)儲存為可以用於以下操作的公式或函數:針對置換結果暫存器148A的每個元件,一次一個地決定對應的源向量暫存器,並且一次將暫存器選擇順序184的一個值儲存為純量值。在該等實例中,可以基於暫存器選擇順序184的所儲存的純量值,一次一個元件地順序填充置換結果暫存器148A的元件。
在實例200中,截點參數156具有為0的值,其指示為0的起始元件166;並且步進參數158具有為3的值,其指示為3的步進元件計數168。指令管理器140基於(由截點參數156指示的)起始元件166和(由步進參數158指示的)步進元件計數168,來決定元件選擇順序186。例如,元件選擇順序186指示針對置換結果暫存器148B的元件的元件索引,其中「i」對應於置換結果暫存器148B的元件的索引,並且針對置換結果暫存器148B的元件i的元件索引由下式提供:((截點參數156+步進參數158*i)%32)或(3i%32)。
元件選擇順序186指示與置換結果暫存器148B的每個元件相對應的特定元件索引。在一些實例中,元件選擇順序186(例如,0、3、6、9、12、15、18、21、24、27、30、1、4、7、10、13、16、19、22、25、28、31、2、5、8、11、14、17、20、23、26、29)從起始元件166開始(例如, 0),隨後是3的倍數,直至置換結果暫存器148A的第30個元件為止,並且回繞以基於步進元件計數168來繼續步進經由置換結果暫存器148A的元件。
在一些實例中,指令管理器140計算與置換結果暫存器148B的每個元件相對應的元件選擇順序186的值(例如,0、3、6、9、12、15、18、21、24、27、30、1、4、7、10、13、16、18、22、25、28、31、2、5、8、11、14、17、19、23、26、29),並將元件選擇順序186的值儲存在元件順序向量暫存器中。在該等實例中,可以基於儲存在元件順序向量暫存器中的元件選擇順序186的值,並行地填充置換結果暫存器148B的元件。在其他實例中,指令管理器140將元件選擇順序186(例如,3i%32)儲存為可以用於以下操作的公式或函數:針對置換結果暫存器148B的每個元件,一次一個地決定置換結果暫存器148A的對應元件,並且一次將元件選擇順序186的一個值儲存為純量值。在該等實例中,置換結果暫存器148B的元件可以基於元件選擇順序186的所儲存的純量值,一次一個地順序填充。
指令管理器140基於暫存器選擇順序184,執行置換指令134以填充置換結果暫存器148A。例如,對於置換結果暫存器148A的每個特定元件,指令管理器140基於暫存器選擇順序184(例如,i%3)來選擇複數個源向量暫存器146中的源向量暫存器,並基於源向量暫存器的對應元件來填充特定元件。為了說明,指令管理器140決定:暫存器選擇順序184指示特定暫存器索引(例如,i%3)對應於置換結果暫存器148A的特定元件(例如,具有索引i)。指令管理器140選擇與特定暫存器索引(例如,i%3)相關聯的源向量暫存器146,並將值從所選擇的源向量暫存器146的對應元件(例如,具有索引i)複製到置換結果暫存器148A的特定元件(例如,具有索引i)。
在實例200中,指令管理器140決定:暫存器選擇順序184指示第一暫存器索引(例如,0)對應於置換結果暫存器148A的第0個元件(例如,i=0,i%3=0%3=0)。指令管理器140選擇具有第一暫存器索引(例如,0)的源向量暫存器146A,並將資料值(例如,i0)從源向量暫存器146A的第0個元件複製到置換結果暫存器148A的第0個元件。作為另一實例,指令管理器140決定:暫存器選擇順序184指示第二暫存器索引(例如,1)對應於置換結果暫存器148A的第1個元件(例如,i=1,i%3=1)。指令管理器140選擇具有第二暫存器索引(例如,1)的源向量暫存器146B,並將資料值(例如,j1)從源向量暫存器146B的第1個元件複製到置換結果暫存器148A的第1個元件。類似地,指令管理器140將資料值(例如,k2)從源向量暫存器146C的具有第三暫存器索引(例如,2%3=2)的第2個元件複製到置換結果暫存器148A的第2個元件。指令管理器140將資料值(例如,i3)從源向量暫存器146A的具有第一暫存器索引(例如,3%3=0)的第3個元件複製到置換結果暫存器148A的第3個元件,等等,直至置換結果暫存器148A的所有元件皆被填充為止。儘管為了便於理解,按照順序填充置換結果暫存器148A的每個元件進行了描述,但應當理解,在一些實施方式中,可以並行地而非順序地將一些或所有資料值從源向量暫存器146A-C複製到置換結果暫存器148A中。
指令管理器140在對置換指令134的執行期間,基於元件選擇順序186來填充置換結果暫存器148B的元件。在一些態樣中,元件選擇順序186對應於儲存在置換結果暫存器148A的元件中的資料值的置換。例如,指令管理器140針對置換結果暫存器148B的特定元件(例如,i)並且基於元件選擇順序186,來選擇置換結果暫存器148A的元件(例如,3i%32),並且基於置換結果暫存器148A的所選擇的元件,來填充置換結果暫存器148B的特定元件。為了說明,指令管理器140決定:元件選擇順序186指示特定元件索引(例如,3i%32)對應於置換結果暫存器148B的特定元件(例如,具有索引i)。指令管理器140選擇置換結果暫存器148A的、與特定元件索引(例如,3i%32)相關聯的特定元件,並將資料值從置換結果暫存器148A的所選擇的元件(例如,具有索引3i%32)複製到置換結果暫存器148B的特定的元件(例如,具有索引i)。
指令管理器140決定:元件選擇順序186(例如,i=0,3i%32=0%32=0)指示第一元件索引(例如,0)對應於置換結果暫存器148B的第0個元件。指令管理器140選擇置換結果暫存器148A的、具有第一元件索引(例如,0)的第0個元件,並將資料值(例如,i0)從置換結果暫存器148A的第0個元件複製到置換結果暫存器148B的第0個元件。作為另一實例,指令管理器140決定:元件選擇順序186(例如,i=1,3i%32=3%32=3)指示第二暫存器索引(例如,3)對應於置換結果暫存器148B的第1個元件。指令管理器140選擇置換結果暫存器148A的具有第二暫存器索引(例如,3)的第3個元件,並將資料值(例如,i3)從置換結果暫存器148A的第3個元件複製到置換結果暫存器148B的第1個元件,依此類推,直至置換結果暫存器148B的所有元件皆被填充為止。儘管為了便於理解而按照順序填充置換結果暫存器148B的每個元件進行了描述,但應當理解,在一些實施方式中,可以並行地而非順序地將一些或所有資料值從置換結果暫存器148A複製到置換結果暫存器148B中。置換結果暫存器148B因此包括按順序過濾的資料值(例如,每第三個來源資料值)。
在實例200中,暫存器起始參數152(例如,0)、週期參數154(例如,3)、截點參數156(例如,0)和步進參數158(例如,3)對應於對來源資料執行過濾操作,諸如選擇x[3n],其中「x」對應於來源資料,並且「n」為大於或等於0的整數。例如,選擇x[3n]對應於選擇x[0]、x[3]、x[6]等,或者選擇從第0個資料值開始的每第三個來源資料值,以填充置換結果暫存器148B。在說明性實例中,對於整數n>=0,resultdata[n]=x[3n],其中「resultdata」對應於置換結果暫存器148B(例如,最終結果)。置換結果暫存器148B的特定元件「n」將儲存在來源資料中具有索引「3n」的資料值。例如,resultdata[0]=x[0]、resultdata[1]=x[3]、resultdata[2]=x[6]等。
儘管暫存器選擇順序184被描述為基於暫存器起始參數152和週期參數154(例如,暫存器選擇順序184=(暫存器起始參數152+i)%(週期參數154))作為說明性實例,但在更一般的實例中,暫存器選擇順序184可以被描述為基於起始暫存器162和向量暫存器計數164,諸如:暫存器選擇順序184=(起始暫存器162+i)%(向量暫存器計數164)。類似地,儘管元件選擇順序186被描述為基於截點參數156和步進參數158 (例如,元件選擇順序186=(截點參數156+步進參數158*i)%32),但在更一般的實例中,元件選擇順序186可以被描述為基於起始元件166和步進元件計數168,諸如:元件選擇順序186=(起始元件166+步進元件計數168*i)%32。
置換指令134實現了對來源資料執行操作,而不使用向量暫存器來指定暫存器選擇順序184和元件選擇順序186。在特定態樣中,指令管理器140將來自記憶體132(或另一設備)的來源資料並行載入到複數個源向量暫存器146中的一或多個源向量暫存器。在一些實施方式中,指令管理器140在對置換指令134的執行期間,基於複數個源向量暫存器146的元件,並行地填充置換結果暫存器148A的元件;並且基於對置換結果暫存器148A的元件的值的置換,並行填充置換結果暫存器148B的元件。
在一些實施方式中,指令管理器140在對置換指令134的執行期間,基於複數個源向量暫存器146的元件,串列地填充置換結果暫存器148A的元件。例如,指令管理器140在對置換指令134的執行期間,基於暫存器選擇順序184來選擇源向量暫存器146A,並且基於源向量暫存器146A來填充置換結果暫存器148A的第一元件。在填充置換結果暫存器148A的第一元件之後,指令管理器140基於暫存器選擇順序184來選擇源向量暫存器146B,並且基於源向量暫存器146B來填充置換結果暫存器148A的第二元件,等等。在該等實施方式中,可以一次一個地決定由暫存器選擇順序184(例如,函數或公式)指示為與置換結果暫存器148A的下一個元件相對應的源向量暫存器,以選擇下一個源向量暫存器。可以將下一個所選擇的源向量暫存器的索引儲存為純量值(例如,指示0、1或2中的一者),而不是使用向量暫存器來儲存每個源向量暫存器的、與置換結果暫存器148A的每個元件相對應的索引(例如,指示32個值,例如0、1、2、0、1、2、0、1、2、......)。
在一些實施方式中,指令管理器140在對置換指令134的執行期間,基於對置換結果暫存器148A的元件的值的置換,來串列地填充置換結果暫存器148B的元件。例如,指令管理器140在執行置換指令134期間,基於元件選擇順序186來選擇置換結果暫存器148A的第一元件(例如,第0個元件),並將值(例如,i0)從置換結果暫存器148A的第一元件複製到置換結果暫存器148B的第一元件(例如,第0個元件)。指令管理器140在填充置換結果暫存器148B的第一元件之後,基於元件選擇順序186來選擇置換結果暫存器148A的第二元件(例如,第3個元件),並將值(例如,i3)從置換結果暫存器148A的第二元件(例如,第3個元件)複製到置換結果暫存器148B的第二元件(例如,第1個元件),等等。在該等實施方式中,可以一次一個地決定由元件選擇順序186(例如,函數或公式)指示為與置換結果暫存器148B的下一個元件相對應的下一個元件索引,以選擇置換結果暫存器148A的下一個元件。可以將下一個所選擇的元件的索引儲存為純量值(例如,指示0至31中的一者),而不是使用向量暫存器來儲存置換結果暫存器148A的、與置換結果暫存器148B的每個元件相對應的每個元件的索引(例如,指示32個值,例如0、3、6、9、12、15、18、21、24、......)。
參照圖3,圖3圖示設備102的特定說明性態樣的圖300。指令管理器140被配置為執行置換指令334。與圖1至圖2的置換指令134的單個參數集合相比,置換指令334包括多個參數集合。置換指令334亦包括操作碼335。操作碼335對應於置換指令334的辨識符。
在一些實施方式中,置換指令334包括第一參數集合(例如,暫存器起始參數152A、週期參數154A、截點參數156A、步進參數158A或者其組合)和第二參數集合(例如,暫存器起始參數152B、週期參數154B、截點參數156B、步進參數158B或者其組合)。
圖4描繪了指令管理器140的操作實例400,其說明了針對儲存在源向量暫存器146A-C中的來源資料執行置換指令334的態樣,並且包括:基於暫存器起始參數152A和週期參數154A來填充置換結果暫存器148A,並且基於暫存器起始參數152B和週期參數154B來填充置換結果暫存器148C,隨後基於截點參數156A和步進參數158A來填充置換結果暫存器148B,以及基於截點參數156B和步進參數158B來填充置換結果暫存器148D,如下文更詳細描述的。
在實例400中,暫存器起始參數152A(例如,0)、週期參數154A(例如,3)、截點參數156A(例如,0)和步進參數158A(例如,3)對應於對來源資料執行第一過濾操作,諸如選擇x[3n]或選擇從第0個資料值開始的每第3個來源資料值。暫存器起始參數152B(例如,2)、週期參數154B(例如,3)、截點參數156B(例如,1)和步進參數158B(例如,3)對應於對來源資料執行第二過濾操作,例如選擇x[3n+1],其中「x」對應於來源資料,並且「n」為大於或等於0的整數。例如,選擇x[3n+1]對應於選擇x[1]、x[4]、x[7]等,或者選擇從第1個資料值開始的每第3個來源資料值。
返回到圖3,指令管理器140被配置為:執行置換指令334,以對儲存在複數個源向量暫存器146中的來源資料執行兩個操作(例如,第一過濾操作和第二過濾操作)。例如,指令管理器140被配置為:執行置換指令334,以基於第一參數集合,藉由執行與參考圖1描述的類似操作,在置換結果暫存器148B中產生第一過濾操作的第一最終結果。為了說明,指令管理器140被配置為:決定(例如,由暫存器起始參數152A或預設值指示的)起始暫存器162A,並決定(例如,由週期參數154A指示的)向量暫存器計數164A。指令管理器140被配置為:基於暫存器選擇資料176、起始暫存器162A和向量暫存器計數164A,來決定暫存器選擇順序184A,如參考圖1所描述的。指令管理器140被配置為:在對置換指令334的執行期間,藉由基於暫存器選擇順序184A填充置換結果暫存器148A,來產生第一中間結果,如參考圖1所描述的。例如,如圖4的實例400所示,置換結果暫存器148A亂序地包括每個感興趣的資料值(例如,從第0個資料值開始的每第3個來源資料值)。
指令管理器140被配置為:決定(例如,由截點參數156A或預設值所指示的)起始元件166A,並決定(例如,由步進參數158A、週期參數154A,或預設值所指示的)步進元件計數168A。指令管理器140被配置為:基於起始元件166A和步進元件計數168A,來決定元件選擇順序186A,如參考圖1所描述的。指令管理器140被配置為:在對置換指令334的執行期間,藉由基於元件選擇順序186A來填充置換結果暫存器148B,來產生第一最終結果,如參考圖1所描述的。例如,如圖4的實例400所示,置換結果暫存器148B按順序包括每個感興趣的資料值(例如,從第0個資料值開始的每第3個來源資料值)。
在特定實例中,指令管理器140被配置為:執行置換指令334,以基於第二參數集合,藉由執行與參考圖1描述的類似操作,在置換結果暫存器148D中產生第二過濾操作的第二最終結果。為了說明,指令管理器140被配置為:決定(例如,由暫存器起始參數152B或預設值指示的)起始暫存器162B,並決定(例如,由週期參數154B指示的)向量暫存器計數164B。指令管理器140被配置為:基於暫存器選擇資料176、起始暫存器162B和向量暫存器計數164B,來決定暫存器選擇順序184B,如參考圖1所描述的。指令管理器140被配置為:在對置換指令334的執行期間,藉由基於暫存器選擇順序184B來填充置換結果暫存器148C,來產生第二中間結果,如參考圖1所描述的。例如,如圖4的實例400所示,置換結果暫存器148C亂序地包括每個感興趣的資料值(例如,從第1個資料值開始的每第3個來源資料值)。
指令管理器140被配置為:決定(例如,由截點參數156B或預設值所指示的)起始元件166B,並決定(例如,由步進參數158B、週期參數154B、或預設值所指示的)步進元件計數168B。指令管理器140被配置為:基於起始元件166B和步進元件計數168B來決定元件選擇順序186B,如參考圖1所描述的。指令管理器140被配置為:在對置換指令334的執行期間,藉由基於元件選擇順序186B來填充置換結果暫存器148D,來產生第二最終結果,如參考圖1所描述的。例如,如圖4的實例400所示,置換結果暫存器148D按順序包括每個感興趣的資料值(例如,從第1個資料值開始的每第3個來源資料值)。
提供包括兩個參數集合的置換指令334作為說明性的非限制性實例。在其他實例中,置換指令可以包括多於兩個參數集合,以產生對來源資料執行多於兩個操作的最終結果。
在實例400中,週期參數154B指示與週期參數154A相同的值,因此暫存器選擇順序184B遵循與暫存器選擇順序184A類似的模式(例如,(暫存器起始參數+i)%週期參數))。暫存器選擇順序184B指示與暫存器選擇順序184A不同的值,因為暫存器起始參數152B指示與暫存器起始參數152A指示的值(例如,0)不同的值(例如,2)。在一些實例中,暫存器選擇順序可以遵循不同的模式(例如,而不是(暫存器起始參數+i)%週期參數)),如參考圖5進一步描述的。
參考圖5,圖示暫存器選擇資料176的實例500。暫存器選擇資料176將複數個向量暫存器計數172映射到複數個暫存器選擇順序174。
暫存器選擇資料176指示:向量暫存器計數172A(例如,5)對應於暫存器選擇順序174A,諸如((暫存器起始參數152+2i)%(週期參數154))或((暫存器起始參數152)+2i)%5),其中「i」對應於元件索引,並且暫存器選擇順序174A指示與元件索引i相對應的源暫存器索引。
在一些實例中,多個向量暫存器計數172可以對應於暫存器選擇順序174,該等暫存器選擇順序174對應於相同模式但指示針對相同暫存器起始參數152的不同源暫存器索引值。例如,向量暫存器計數172B(例如,9)對應於暫存器選擇順序174B(例如,(暫存器起始參數152+7i)%9),並且向量暫存器計數172C(例如,15)對應於暫存器選擇順序174C(例如,(暫存器起始參數152+7i)%15)。暫存器選擇順序174B和暫存器選擇順序174C中的每一者對應於相同的暫存器選擇順序模式(例如,(暫存器起始參數152+7i)%週期參數154)。暫存器選擇順序174B和暫存器選擇順序174C指示針對相同暫存器起始參數152的不同源暫存器索引值,因為暫存器選擇順序174B和暫存器選擇順序174C基於由週期參數154指示的不同值。
在一些實例中,多個向量暫存器計數172可以對應於暫存器選擇順序174,該等暫存器選擇順序174對應於相同模式並且指示針對相同暫存器起始參數152的相同源暫存器索引值。例如,向量暫存器計數172N(例如,6、7、10-14,以及大於或等於17)中的每一個向量暫存器計數對應於暫存器選擇順序174N(例如,(暫存器起始參數152+i)%32)。暫存器選擇順序174N針對相同暫存器起始參數152,針對向量暫存器計數172N中的每一個向量暫存器計數指示相同的源暫存器索引值,因為暫存器選擇順序174N獨立於週期參數154。
作為說明性實例,複數個暫存器選擇順序174根據暫存器起始參數152、週期參數154或這二者來描述。在更一般的情況下,可以根據起始暫存器162、向量暫存器計數164或這二者來描述複數個暫存器選擇順序174。
在特定態樣中,暫存器選擇資料176基於以下公式決定。源向量暫存器146中的每一個源向量暫存器包括32個元件。儲存在複數個源向量暫存器146中的來源資料的資料值的來源資料索引對應於:32v+i,其中「v」對應於源暫存器索引,並且「i」對應於其中儲存資料值的元件索引。例如,具有為35的來源資料索引的資料值(例如,第35個來源資料值)被儲存在具有為「1」的源暫存器索引的源向量暫存器146的、具有為「3」的元件索引的元件中(例如,v=1、i=3、32v+i=32+3=35)。用於過濾操作「x[mn]」的每個感興趣的資料值對應於: 32v+i=mn                                 公式1
其中「m」對應於向量暫存器計數164,並且「n」對應於大於或等於0的整數值。公式1可以被重新整理為:mn–32v=i。對於為9的向量暫存器計數164,過濾操作對應於: 9n–32v=i                                公式2
對於為9的向量暫存器計數164,和在複數個源向量暫存器146中的、與為1的元件索引i相對應的來源資料的第1列,過濾操作對應於: 9n–32v=1                                公式3
對於為9的向量暫存器計數164,第0個感興趣的資料值被儲存在源向量暫存器146A的元件0中,第1個感興趣的資料值被儲存在源向量暫存器146A的元件9中,依此類推。對於n=25和v=7,滿足公式3。例如,對於為9的向量暫存器計數164,具有為1的元件索引的感興趣資料值是第25個感興趣的來源資料值(對應於n=25),並且在與為7的源暫存器索引(對應於v=7)相對應的源向量暫存器中。公式3可以被重寫為:
Figure 02_image001
公式4
其中
Figure 02_image003
並且
Figure 02_image005
。將公式4乘以i對應於:
Figure 02_image007
公式5
對於從0到31的所有i值,皆滿足公式5。對於為9的向量暫存器計數164,為0的暫存器起始參數152,以及從0到31的所有i值,暫存器選擇順序174B對應於
Figure 02_image009
,其中
Figure 02_image011
=7。為了說明,暫存器選擇順序174B對應於: (7i)%9                                  公式6
可以類似方式決定針對向量暫存器計數164的其他值的暫存器選擇順序174。
參考圖6,圖示執行圖1的置換指令134的實例600。例如,圖1的指令管理器140在執行置換指令134期間,執行實例600中所示的一或多個操作。在一些實例中,可以在對圖3的置換指令334的執行期間,執行類似的操作。在實例600中,暫存器起始參數152(例如,0)、週期參數154(例如,5)、截點參數156(例如,0)和步進參數158(例如,5)對應於對來源資料執行過濾操作,諸如選擇x[5n],其中「x」對應於來源資料,並且「n」為大於或等於0的整數。例如,選擇x[5n]對應於選擇x[0]、x[5]、x[10]等,或者選擇從第0個資料值開始的每第五個來源資料值。
來源資料儲存在源向量暫存器146A、源向量暫存器146B、源向量暫存器146C、源向量暫存器146D和源向量暫存器146E中。源向量暫存器146A、源向量暫存器146B、源向量暫存器146C、源向量暫存器146D和源向量暫存器146E分別對應於第一源暫存器索引(例如,0)、第二源暫存器索引(例如,1)、第三源暫存器索引(例如,2)、第四源暫存器索引(例如,3)和第五源暫存器索引(例如,4)。
藉由從與非連續源暫存器索引值相對應的源向量暫存器複製元件的值,來填充置換結果暫存器148A。例如,圖1的指令管理器140基於暫存器選擇順序184,將與第一源暫存器索引(例如,0)相對應的源向量暫存器146A的第0個元件的值(例如,i0)複製到置換結果暫存器148A的第0個元件,並將與第三源暫存器索引(例如,2)相對應的源向量暫存器146C的第1個元件的值(例如,k1)複製到置換結果暫存器148A的第1個元件。
截點參數156指示起始元件166(例如,0),並且步進參數158指示步進元件計數168(例如,5)。藉由從置換結果暫存器148A複製值,來填充置換結果暫存器148B,以起始元件166(例如,第0個元件)開始,隨後是具有為步進元件計數168(例如,5)的倍數的元件索引的元件,並且回繞以基於步進元件計數168(例如,5)繼續步進經由置換結果暫存器148A的元件。置換結果暫存器148A因此儲存從第0個來源資料值開始的每第5個來源資料值的順序序列。
參考圖7,圖示在對置換指令134的執行之前,執行旋轉指令136的實例700。在特定態樣中,圖1的指令管理器140在置換指令134執行之前,執行旋轉指令136,以旋轉複數個源向量暫存器146中的一或多個源向量暫存器的值的位置。在一些實例中,指令管理器140可以在對圖3的置換指令334的執行之前,執行旋轉指令136。
在實例700中,置換指令134具有暫存器起始參數152(例如,0)、週期參數154(例如,4)、截點參數156(例如,0)和步進參數158(例如,4),其對應於對來源資料執行過濾操作,諸如選擇x[4n],其中「x」對應於來源資料,並且「n」為大於或等於0的整數。例如,選擇x[4n]對應於選擇x[0]、x[4]、x[8]等,或者選擇從第0個資料值開始的每第四個來源資料值。
來源資料的每列包括針對置換指令134感興趣的多個資料值。本文中使用的「感興趣的資料值」對應於要被包括在執行置換指令的最終結果中的資料值。例如,與相同元件索引(例如,0、4、8、12、16、20、24或28)相對應的複數個源向量暫存器146的元件包括感興趣的資料值。為了說明,源向量暫存器146A、源向量暫存器146B、源向量暫存器146C和源向量暫存器146D中的每一個源向量暫存器的第0個元件包括感興趣的資料值。
指令管理器140執行旋轉指令136,以將儲存在源向量暫存器146B、源向量暫存器146C和源向量暫存器146D中的值的位置分別旋轉1、2和3。在執行旋轉指令136之後,複數個源向量暫存器146中的每一列來源資料包括單個感興趣的資料值。例如,與相同元件索引(例如,0-31)相對應的多個源向量暫存器146的元件中的單個元件包括感興趣的資料值。為了說明,源向量暫存器146A、源向量暫存器146B、源向量暫存器146C和源向量暫存器146D中的單個源向量暫存器的第0個元件包括感興趣的資料值。指令管理器140執行置換指令134,以基於複數個源向量暫存器146中的來源資料來填充置換結果暫存器148A,並基於對置換結果暫存器148A的值的置換,來填充置換結果暫存器148B,如參考圖1所描述的。
圖8至圖9示出對與矩陣轉置相對應的置換指令134的多個執行的實例。圖8描繪了對置換指令134的第一執行在置換結果暫存器148B中產生輸出。圖9描繪了對置換指令134的第二執行在置換結果暫存器148D中產生輸出。在圖9的實例中,置換結果暫存器148B、置換結果暫存器148D、置換結果暫存器148F和置換結果暫存器148G的組合對應於儲存在源向量暫存器146A-D中的矩陣的轉置。
參考圖8,圖示執行置換指令134的實例800。在特定態樣中,圖1的指令管理器140執行置換指令134,以執行複數個源向量暫存器146中的一或多個源向量暫存器的值的矩陣轉置。
在對置換指令134的第一執行中,第一列(例如,第0個列)對應於感興趣的列,並且在來源資料的前一感興趣的列之後的每第四列(例如,對應於向量暫存器計數164)對應於一感興趣的列。感興趣的列中的每一個值對應於感興趣的資料值。類似地,對於對置換指令134的第二執行,第二列(例如,第1個列)對應於感興趣的列,並且在前一感興趣的列之後的每第四列(例如,對應於向量暫存器計數164)對應於一感興趣的列,如參考圖9進一步描述的。
指令管理器140在對置換指令134的執行之前,執行旋轉指令136,如參考圖7所描述的。例如,指令管理器140執行旋轉指令136,以將儲存在源向量暫存器146B、源向量暫存器146C和源向量暫存器146D中的值的位置分別旋轉1、2和3。在執行旋轉指令136之後,複數個源向量暫存器146中的每一列來源資料包括用於對置換指令134的特定執行的單個感興趣的資料值。
指令管理器140在對置換指令134的第一執行期間,基於暫存器起始參數152(例如,0)和週期參數154(例如,4)來填充置換結果暫存器148A,如參考圖1所描述的。例如,針對對置換指令134的第一執行的感興趣的每一列皆包括在置換結果暫存器148A中。指令管理器140在對置換指令134的第一執行期間,基於截點參數156(例如,0)和步進參數158(例如,1)來填充置換結果暫存器148B,如參考圖1所描述的。例如,截點參數156的特定值(例如,0)和步進參數158的特定值(例如,1)對應於將置換結果暫存器148A的元件的值複製到置換結果暫存器148B,而不進行置換。置換結果暫存器148B對應於用於對置換指令134的第一執行的來源資料的每一感興趣列的轉置。例如,置換結果暫存器148B表示包括用於對置換指令134的第一執行的來源資料的每一感興趣列的行。
參考圖9,圖示執行置換指令134的實例900。為了說明,實例900對應於指令管理器140對置換指令134的第二執行,以執行複數個源向量暫存器146中的一或多個源向量暫存器的值的矩陣轉置。
在執行旋轉指令136之後,如參考圖8所描述的,複數個源向量暫存器146中的每一列來源資料包括用於對置換指令134的第二執行的單個感興趣的資料值。
指令管理器140在對置換指令134的第二執行期間,基於暫存器起始參數152(例如,3)和週期參數154(例如,4)來填充置換結果暫存器148C,如參考圖1所描述的。例如,用於對置換指令134的第二執行所感興趣的每一列皆包括在置換結果暫存器148C中。指令管理器140在對置換指令134的第二執行期間,基於截點參數156(例如,1)和步進參數158(例如,1)來填充置換結果暫存器148D,如參考圖1所描述的。置換結果暫存器148D對應於用於對置換指令134的第二執行的來源資料的每一感興趣列的轉置。為了說明,置換結果暫存器148D表示包括用於對置換指令134的第二執行的來源資料的每一感興趣列的行。
在圖9的實例950中,在對置換指令134的多個執行之後,置換結果暫存器148B表示包括用於對置換指令134的第一執行的來源資料的每一感興趣列的第一行,置換結果暫存器148D表示包括用於對置換指令134的第二執行的來源資料的每一感興趣列的第二行,置換結果暫存器148F表示包括用於對置換指令134的第三執行的來源資料的每一感興趣列的第三行,並且置換結果暫存器148G表示包括用於對置換指令134的第四執行的來源資料的每一感興趣列的第四行。第一行、第二行、第三行和第四行的組合對應於源向量暫存器146A-D的來源資料(預旋轉)的矩陣轉置。在一些態樣各種,與對置換指令134的四次調用相比,矩陣轉置可以由對置換指令334的兩次調用來執行。
提供使用置換指令(例如,置換指令134或置換指令334)來執行矩陣轉置作為說明性實例。置換指令可以在執行其他操作期間或準備執行其他操作中使用,諸如下取樣操作、快速傅立葉核心操作或各種其他操作。例如,置換指令可以用於執行過濾,如參考圖2所述,作為下取樣操作(例如,下取樣1/3)的一部分。作為另一實例,作為執行快速傅立葉核心操作的一部分,置換指令可以用於將偶數資料值過濾到一或多個第一置換結果暫存器,並將奇數資料值過濾到一或多個第二置換結果暫存器。
參考圖10,圖示執行置換指令的方法1000的特定實施方式。在特定態樣中,方法1000的一或多個操作由下列各項中的至少一項來執行:圖1的指令管理器140、處理器190、設備102或者其組合。
方法1000包括:在1002處存取置換指令。例如,指令管理器140從指令佇列接收置換指令134,如參考圖1所描述的。
方法1000包括:在1004處,存取置換指令的週期參數。例如,指令管理器140存取置換指令134的週期參數154,如參考圖1所描述的。週期參數154指示複數個源向量暫存器146中的、包含置換指令134的來源資料的向量暫存器計數164。作為另一實例,指令管理器140存取置換指令334的週期參數154A和週期參數154B,如參考圖3所描述的。週期參數154A指示複數個源向量暫存器146的、包含用於在對置換指令334的執行期間填充置換結果暫存器148A和置換結果暫存器148B的來源資料的向量暫存器計數164A。週期參數154B指示複數個源向量暫存器146的、包含用於在對置換指令334的執行期間填充置換結果暫存器148C和置換結果暫存器148D的來源資料的向量暫存器計數164B。
方法1000亦包括:在1006處,針對複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行置換指令以進行以下操作:至少部分基於向量暫存器的計數,來選擇複數個向量暫存器中的向量暫存器;及基於所選擇的向量暫存器的對應元件中的值,來填充特定元件。例如,指令管理器140執行置換指令134,以針對置換結果暫存器148A的每個元件,至少部分基於向量暫存器計數164來選擇複數個源向量暫存器146中的一個源向量暫存器,以及基於在複數個源向量暫存器146中的所選擇的一個源向量暫存器的對應元件中的值,來填充置換結果暫存器148A的特定元件,如參考圖1所描述的。作為另一實例,指令管理器140執行置換指令334,以針對置換結果暫存器148A的每個元件,至少部分基於向量暫存器計數164A來選擇複數個源向量暫存器146中的一個源向量暫存器,以及基於在複數個源向量暫存器146中的所選擇的一個源向量暫存器的對應元件中的值,來填充置換結果暫存器148A的特定元件。指令管理器140執行置換指令334,以針對置換結果暫存器148C的每個元件,至少部分基於向量暫存器計數164B來選擇複數個源向量暫存器146中的一個源向量暫存器,以及基於複數個源向量暫存器146中的所選擇的一個源向量暫存器的對應元件中的值,來填充置換結果暫存器148C的特定元件。
方法1000實現了至少部分基於向量暫存器計數164,針對置換結果暫存器148A的元件來選擇複數個源向量暫存器146中的一個源向量暫存器。與基於用於指示針對置換結果暫存器148A的每個元件的源向量暫存器的向量暫存器來選擇源向量暫存器相比,基於可以被儲存為純量值的向量暫存器計數164來選擇源向量暫存器減少了記憶體使用。
圖10的方法1000可以由現場可程式設計閘陣列(FPGA)設備,特殊應用積體電路(ASIC),諸如中央處理單元(CPU)、數位訊號處理器(DSP)、圖形處理單元(GPU)的處理單元、控制器、另一硬體設備、韌體設備,或者其任意組合來實現。作為實例,圖10的方法1000可以由執行指令的處理器來執行,諸如參考圖11所描述的。
參照圖11,描繪了設備的特定說明性實施方式的方塊圖,並將其整體上標示為1100。在各種實施方式中,設備1100可以具有比圖11所示的更多或更少的部件。在說明性實施方式中,設備1100可以對應於設備102。在說明性實施方式中,設備1100可以執行參考圖1至圖10描述的一或多個操作。
在特定實施方式中,設備1100包括處理器1106(例如,CPU)。設備1100可以包括一或多個附加處理器1110(例如,一或多個DSP、一或多個GPU,或者其組合)。在特定態樣中,圖1的處理器190對應於處理器1106、處理器1110或者其組合。在特定態樣中,處理器1110包括指令管理器140。處理器1110亦可以包括語音和音樂編碼器-解碼器(CODEC)1108,其包括語音譯碼器(「聲碼器」)編碼器1136、聲碼器解碼器1138或這二者。
設備1100可以包括向量暫存器檔案138、記憶體132和CODEC 1134。記憶體132可以包括指令1156,該等指令1156由一或多個附加處理器1110(或處理器1106)可執行以實現參考指令管理器140描述的功能。設備1100可以包括經由收發機1150耦合至天線1152的資料機1148。
設備1100可以包括耦合至顯示控制器1126的顯示器1128。一或多個揚聲器1192、一或多個麥克風1190或其組合可以耦合至CODEC 1134。CODEC 1134可以包括數位類比轉換器(DAC)1102、類比數位轉換器(ADC)1104或這二者。在特定實施方式中,CODEC 1134可以從一或多個麥克風1190接收類比信號,使用類比數位轉換器1104將類比信號轉換為數位信號,並將數位信號提供給語音和音樂轉碼器1108。語音和音樂轉碼器1108可以對數位信號進行處理。在特定實施方式中,語音和音樂轉碼器1108可以向CODEC 1134提供數位信號。CODEC 1134可以使用數位類比轉換器1102來將數位信號轉換為類比信號,並且可以將類比信號提供給一或多個揚聲器1192。
在特定實施方式中,設備1100可以被包括在系統級封裝或片上系統設備1122中。在特定實施方式中,記憶體132、向量暫存器檔案138、處理器1106、處理器1110、顯示控制器1126、CODEC 1134和數據機1148被包括在系統級封裝或片上系統設備1122中。在特定實施方式中,輸入設備1130和電源供應器1144耦合至片上系統設備1122。此外,在特定實施方式中,如圖11中所示,顯示器1128、輸入設備1130、一或多個揚聲器1192、一或多個麥克風1190、天線1152以及電源供應器1144在片上系統設備1122的外部。在特定實施方式中,顯示器1128、輸入設備1130、一或多個揚聲器1192、一或多個麥克風1190、天線1152以及電源供應器1144中的每一者皆可以耦合至片上系統設備1122的部件(諸如介面或控制器)。
設備1100可以包括智慧揚聲器、條形音箱、行動通訊設備、智慧型電話、蜂巢式電話、膝上型電腦、電腦、平板電腦、個人數位助理、顯示設備、電視機、遊戲控制台、音樂播放機、收音機、數位視訊播放機、數位視訊光碟(DVD)播放機、調諧器、相機、導航設備、交通工具、頭戴式受話器、增強現實受話器、混合現實受話器、虛擬實境受話器、飛行器、家庭自動化系統、聲控設備、無線揚聲器和語音啟動設備、可攜式電子設備、汽車、計算設備、通訊設備、物聯網路(IoT)設備、虛擬實境(VR)設備、基地台、行動設備或者其任意組合。
結合所描述的實施方式,一種裝置包括用於存取置換指令的週期參數的構件,週期參數指示複數個向量暫存器中的、包含用於置換指令的來源資料的向量暫存器的計數。例如,用於存取的構件可以對應於以下各項的一或多個部件:圖1的指令管理器140、處理器190、設備102、處理器1106、處理器1110、設備1100、被配置為存取置換指令的週期參數的一或多個其他電路或部件,或者其任意組合。
裝置亦包括用於針對複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行置換指令以進行以下操作的構件:至少部分基於計數來選擇複數個向量暫存器中的向量暫存器;及基於所選擇的向量暫存器的對應元件中的值來填充特定元件。例如,用於執行的構件可以對應於以下各項的一或多個部件:圖1的指令管理器140、處理器190、設備102、處理器1106、處理器1110、設備1100、被配置為存取置換指令的週期參數的一或多個其他電路或部件,或者其任意組合。
在一些實施方式中,非暫時性電腦可讀取媒體(例如,電腦可讀取儲存設備,諸如記憶體132)包括指令(例如,指令1156),該等指令在由一或多個處理器(例如,處理器190、一或多個處理器1110、處理器1106或者其組合)執行時,使一或多個處理器存取置換指令(例如,置換指令134、置換指令334或這二者)的週期參數(例如,週期參數154、週期參數154A、週期參數154B或者其組合)。週期參數指示複數個向量暫存器(例如,複數個源向量暫存器146)的、包含用於置換指令的來源資料的向量暫存器的計數(例如,向量暫存器計數164、向量暫存器計數164A、向量暫存器計數164B,或者其組合)。該等指令在由一或多個處理器執行時,亦使一或多個處理器執行置換指令,以進行以下操作:針對複數個向量暫存器中的第一置換結果暫存器(例如,置換結果暫存器148A、置換結果暫存器148C或這二者)的多個元件中的每一個特定元件,至少部分基於該計數來選擇複數個向量暫存器中的向量暫存器;及基於所選擇的向量暫存器的對應元件中的值,來填充特定元件。
在下文以一組相互關聯的條款對本揭示內容的特定態樣進行了描述:
根據條款1,一種設備包括:向量暫存器檔案,其包括複數個向量暫存器;記憶體,其被配置為儲存置換指令;及處理器,其被配置為:存取該置換指令的週期參數,該週期參數指示複數個資料來源的、包含用於該置換指令的來源資料的計數;及針對該複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作:至少部分基於該複數個資料來源的該計數,來選擇該複數個資料來源中的資料來源;及基於所選擇的資料來源的對應元件中的值,來填充該特定元件。
條款2包括如條款1所述的設備,其中該複數個資料來源包括該複數個向量暫存器中的多個向量暫存器。
條款3包括如條款1或條款2所述的設備,其中該置換指令是在以下各項期間或在準備以下各項時執行的:下取樣操作、矩陣轉置或快速傅立葉核心操作。
條款4包括如條款1至條款3中任意條款所述的設備,其中該處理器進一步被配置為:存取該置換指令的起始參數,該起始參數指示該複數個資料來源中的包含來源資料的特定資料來源,以填充該第一置換結果暫存器的初始元件;及至少部分基於該起始參數,選擇該複數個資料來源中的包含來源資料的元件,以填充該第一置換結果暫存器的剩餘元件。
條款5包括如條款1至條款4中任意條款所述的設備,其中該處理器進一步被配置為:基於該複數個資料來源的該計數來決定選擇順序;及至少部分基於該選擇順序,選擇該複數個資料來源中的包含來源資料的元件,以填充該第一置換結果暫存器的元件。
條款6包括如條款5所述的設備,其中該記憶體被配置為儲存選擇資料,該選擇資料指示與資料來源的計數相對應的資料來源選擇的順序,並且其中該處理器被配置為:基於該選擇資料,決定與該複數個資料來源的該計數相對應的該選擇順序。
條款7包括如條款1至條款6中任意條款所述的設備,其中該處理器進一步被配置為:執行該置換指令,以基於對該第一置換結果暫存器的元件中的值的置換,來填充第二置換結果暫存器的元件。
條款8包括如條款7所述的設備,其中該處理器進一步被配置為:存取截點參數,該截點參數指示該第一置換結果暫存器的特定元件,以填充該第二置換結果暫存器的初始元件;及至少部分基於該截點參數,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
條款9包括如條款7或條款8所述的設備,其中該處理器進一步被配置為:存取該置換指令的步進參數,該步進參數指示元件選擇順序;及至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
條款10包括如條款7至條款9中任意條款所述的設備,其中該處理器進一步被配置為:基於該複數個資料來源的該計數來決定元件選擇順序;及至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
條款11包括如條款1至條款10中任意條款所述的設備,其中該處理器被配置為:在執行該置換指令之前,預處理在該複數個資料來源中的包含來源資料的至少一個資料來源的元件中的值。
條款12包括如條款1至條款11中任意條款所述的設備,其中該處理器被配置為:在執行該置換指令之前,執行旋轉指令,以對該複數個資料來源中的包含來源資料的至少一個資料來源中的值的位置進行旋轉。
條款13包括如條款1至條款12中任意條款所述的設備,其中該置換指令包括第二週期參數,其中該第二週期參數指示第二複數個資料來源的、包含用於該置換指令的來源資料的第二計數,並且其中執行該置換指令包括:基於該第二複數個資料來源的該第二計數,基於該第二複數個資料來源的元件中的值,填充該複數個向量暫存器中的特定置換結果暫存器的元件。
根據條款14,一種方法包括:在設備處存取置換指令;在該設備處存取該置換指令的週期參數,該週期參數指示複數個向量暫存器中的、包含用於該置換指令的來源資料的向量暫存器的計數;及在該設備處,針對該複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作:至少部分基於該向量暫存器的計數,來選擇該複數個向量暫存器中的向量暫存器;及基於所選擇的向量暫存器的對應元件中的值,來填充該特定元件。
條款15包括如條款14所述的方法,進一步包括:在該設備處存取該置換指令的暫存器起始參數,該暫存器起始參數指示該等向量暫存器中的包含來源資料的特定向量暫存器,以填充該第一置換結果暫存器的初始元件;及至少部分基於該暫存器起始參數,選擇該等向量暫存器中的包含來源資料的元件,以填充該第一置換結果暫存器的剩餘元件。
條款16包括如條款14或條款15所述的方法,進一步包括:在該設備處,基於該向量暫存器的計數來決定暫存器選擇順序;及至少部分基於該暫存器選擇順序,選擇該等向量暫存器中的包含來源資料的元件,以填充該第一置換結果暫存器的元件。
條款17包括如條款16所述的方法,進一步包括:基於暫存器選擇資料,決定與該向量暫存器的計數相對應的該暫存器選擇順序,該暫存器選擇資料指示與向量暫存器的計數相對應的暫存器選擇的順序。
條款18包括如條款14至條款17中任意條款所述的方法,其中執行該置換指令包括:基於對該第一置換結果暫存器的該等元件中的值的置換,來填充第二置換結果暫存器的元件。
條款19包括如條款18所述的方法,進一步包括:存取截點參數,該截點參數指示該第一置換結果暫存器的特定元件,以填充該第二置換結果暫存器的初始元件;及至少部分基於該截點參數,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
條款20包括如條款18或條款19所述的方法,進一步包括:存取該置換指令的步進參數,該步進參數指示元件選擇順序;及至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
條款21包括如條款18至條款20中任意條款所述的方法,進一步包括:在該設備處基於該向量暫存器的計數來決定元件選擇順序;及至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
條款22包括如條款14至條款21中任意條款所述的方法,進一步包括:在執行該置換指令之前,預處理在該等向量暫存器中的包含來源資料的至少一個向量暫存器的元件中的值。
條款23包括如條款14至條款22中任意條款所述的方法,進一步包括:在執行該置換指令之前,執行旋轉指令,以對該等向量暫存器中的包含來源資料的至少一個向量暫存器中的值的位置進行旋轉。
根據條款24,一種設備包括:被配置為儲存指令的記憶體;及處理器,其被配置為執行該等指令以執行如條款14至條款23中任意條款所述的方法。
根據條款25,一種儲存指令的非暫時性電腦可讀取媒體,該等指令在由處理器執行時,使該處理器執行如條款14至條款23中任意條款所述的方法。
根據條款26,一種裝置包括用於執行如條款14至條款23中任意條款所述的方法的構件。
根據條款27,一種儲存指令的非暫時性電腦可讀取媒體,該等指令在由處理器執行時,使該處理器:存取置換指令的週期參數,該週期參數指示複數個向量暫存器中的、包含用於該置換指令的來源資料的向量暫存器的計數;及針對該複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作:至少部分基於該向量暫存器的計數,來選擇該複數個向量暫存器中的向量暫存器;及基於所選擇的向量暫存器的對應元件中的值,來填充該特定元件。
條款28包括如條款27所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器:存取該置換指令的暫存器起始參數,該暫存器起始參數指示該向量暫存器中的包含來源資料的特定向量暫存器,以填充該第一置換結果暫存器的初始元件;及至少部分基於該暫存器起始參數,選擇該向量暫存器中的包含來源資料的元件,以填充該第一置換結果暫存器的剩餘元件。
條款29包括如條款27或條款28所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器:基於該向量暫存器的計數來決定暫存器選擇順序;及至少部分基於該暫存器選擇順序,選擇該向量暫存器中的包含來源資料的元件,以填充該第一置換結果暫存器的元件。
條款30包括如條款29所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器進行以下操作:基於暫存器選擇資料,決定與該向量暫存器的計數相對應的該暫存器選擇順序,其中該暫存器選擇資料指示與向量暫存器的計數相對應的暫存器選擇的順序。
條款31包括如條款27至條款30中任意條款所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器執行該置換指令,以基於對該第一置換結果暫存器的元件中的值的置換,來填充第二置換結果暫存器的元件。
條款32包括如條款31所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器:存取截點參數,該截點參數指示該第一置換結果暫存器的特定元件,以填充該第二置換結果暫存器的初始元件;及至少部分基於該截點參數,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
條款33包括如條款31或條款32所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器:存取該置換指令的步進參數,該步進參數指示元件選擇順序;及至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
條款34包括如條款31至條款33中任意條款所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器:基於該向量暫存器的計數決定元件選擇順序;及至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
條款35包括一種裝置,該裝置包括:用於存取置換指令的週期參數的構件,該週期參數指示複數個向量暫存器中的、包含用於該置換指令的來源資料的向量暫存器的計數;及用於針對該複數個向量暫存器中的第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作的構件:至少部分基於該向量暫存器的計數,來選擇該複數個向量暫存器中的向量暫存器;及基於所選擇的向量暫存器的對應元件中的值,來填充該特定元件。
條款36包括如條款35所述的裝置,其中用於存取的構件或用於執行的構件中的至少一者被集成到下列各項中的至少一項:通訊設備、電腦、顯示設備、電視機、遊戲控制台、數位視訊播放機、相機、導航設備、交通工具、頭戴式受話器、增強現實頭戴式受話器、混合現實頭戴式受話器、虛擬實境頭戴式受話器、飛行器、家庭自動化系統、聲控設備、物聯網路(IoT)設備、虛擬實境(VR)設備、基地台或行動設備。
本領域技藝人士亦將明白的是:結合本文揭示的實施方式來描述的各個說明性的邏輯區塊、配置、模組、電路和演算法步驟均可以實現成電子硬體、由處理器執行的電腦軟體或這二者的組合。在上文圍繞各種說明性的部件、方塊、配置、模組、電路和步驟的功能概括地對其進行了描述。至於此種功能是實現為硬體亦是實現為處理器可執行指令,取決於特定的應用和對整個系統所施加的設計約束。本領域技藝人士可以針對每個特定應用,以變通的方式實現所描述的功能,但此種實施方式決策不應解釋為造成對本揭示內容的範圍的背離。
結合本文揭示的實施方式所描述的方法或者演算法的步驟可以直接實現在硬體中、由處理器執行的軟體模組中或者這兩者的組合中。軟體模組可以位於隨機存取記憶體(RAM)、快閃記憶體器、唯讀記憶體(ROM)、可程式設計唯讀記憶體(PROM)、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、暫存器、硬碟、可移除磁碟、壓縮光碟唯讀記憶體(CD-ROM)或本領域中已知的任何其他形式的非暫態儲存媒體中。示例性的儲存媒體耦合到處理器,從而使處理器能夠從該儲存媒體讀取資訊以及向該儲存媒體寫入資訊。可替換地,儲存媒體可以是處理器的組成部分。處理器和儲存媒體可以位於特殊應用積體電路(ASIC)中。該ASIC可以位於計算設備或使用者終端中。或者,處理器和儲存媒體可以作為個別部件位於計算設備或使用者終端中。
為使本領域技藝人士能夠實現或者使用所揭示的態樣,提供了對所揭示的態樣的前述描述。對於本領域技藝人士來說,對該等態樣的各種修改將是顯而易見的,並且,在不脫離本揭示內容的範圍的前提下,可以將本文中定義的原理應用於其他態樣。因此,本揭示內容並不意欲限於本文中圖示的態樣,而是符合與由所附申請專利範圍所定義的原理和新穎性特徵相一致的最廣可能範圍。
100:圖 102:設備 132:記憶體 134:置換指令 135:操作碼 136:旋轉指令 138:向量暫存器檔案 140:指令管理器 142:向量暫存器 146A:源向量暫存器 146B:源向量暫存器 146C:源向量暫存器 146D:源向量暫存器 146E:源向量暫存器 146N:源向量暫存器 148A:置換結果暫存器 148B:置換結果暫存器 148C:置換結果暫存器 148D:置換結果暫存器 148E:置換結果暫存器 148F:置換結果暫存器 148G:置換結果暫存器 152:暫存器起始參數 152A:暫存器起始參數 152B:暫存器起始參數 154:週期參數 154A:週期參數 154B:週期參數 156:截點參數 156A:截點參數 156B:截點參數 158:步進參數 158A:步進參數 158B:步進參數 162:起始暫存器 162A:起始暫存器 162B:起始暫存器 164:向量暫存器計數 164A:向量暫存器計數 164B:向量暫存器計數 166:起始元件 166A:起始元件 166B:起始元件 168:步進元件計數 168A:步進元件計數 168B:步進元件計數 172A:向量暫存器計數 172B:向量暫存器計數 172C:向量暫存器計數 172N:向量暫存器計數 174A:暫存器選擇順序 174B:暫存器選擇順序 174C:暫存器選擇順序 174N:暫存器選擇順序 176:暫存器選擇資料 184:暫存器選擇順序 184A:暫存器選擇順序 184B:暫存器選擇順序 186:元件選擇順序 186A:元件選擇順序 186B:元件選擇順序 190:處理器 200:實例 300:圖 334:置換指令 335:操作碼 400:操作實例 500:實例 600:實例 700:實例 800:實例 900:實例 950:實例 1000:方法 1002:操作 1004:操作 1006:操作 1100:設備 1102:數位類比轉換器(DAC) 1104:類比數位轉換器(ADC) 1106:處理器 1108:語音和音樂編碼器-解碼器(CODEC) 1110:附加處理器 1122:系統級封裝或片上系統設備 1126:顯示控制器 1128:顯示器 1130:輸入設備 1134:CODEC 1136:語音譯碼器(「聲碼器」)編碼器 1138:聲碼器解碼器 1144:電源供應器 1148:數據機 1150:收發機 1152:天線 1156:指令 1190:麥克風 1192:揚聲器
圖1是根據本揭示內容的一些實例的、可操作為執行置換指令的設備的特定說明性態樣的方塊圖。
圖2是根據本揭示內容的一些實例的、由圖1的設備執行置換指令的實例的說明性態樣的圖。
圖3是根據本揭示內容的一些實例的、可操作為執行另一置換指令的圖1的設備的說明性態樣的方塊圖。
圖4是根據本揭示內容的一些實例的、由圖1和圖3的設備執行置換指令的另一實例的說明性態樣的圖。
圖5是根據本揭示內容的一些實例的、在由圖1和圖3的設備執行置換指令期間使用的暫存器選擇資料的實例的說明性態樣的圖。
圖6是根據本揭示內容的一些實例的、由圖1的設備執行置換指令的實例的說明性態樣的圖。
圖7是根據本揭示內容的一些實例的、在由圖1的設備執行置換指令之前,執行旋轉指令的實例的說明性態樣的圖。
圖8是根據本揭示內容的一些實例的、由圖1的設備執行置換指令以執行矩陣轉置的實例的說明性態樣的圖。
圖9是根據本揭示內容的一些實例的、由圖1的設備執行置換指令以執行矩陣轉置的另一實例的說明性態樣的圖。
圖10是根據本揭示內容的一些實例的、一種可以由圖1的設備執行的執行置換指令的方法的特定實施方式的圖。
圖11是根據本揭示內容的一些實例的、可操作為執行置換指令的設備的特定說明性實例的方塊圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
100:圖
102:設備
132:記憶體
134:置換指令
135:操作碼
136:旋轉指令
138:向量暫存器檔案
140:指令管理器
142:向量暫存器
146A:源向量暫存器
146N:源向量暫存器
148A:置換結果暫存器
148B:置換結果暫存器
152:暫存器起始參數
154:週期參數
156:截點參數
158:步進參數
162:起始暫存器
164:向量暫存器計數
166:起始元件
168:步進元件計數
172A:向量暫存器計數
172N:向量暫存器計數
174A:暫存器選擇順序
174N:暫存器選擇順序
184:暫存器選擇順序
186:元件選擇順序

Claims (30)

  1. 一種設備,其包括: 一向量暫存器檔案,其包括複數個向量暫存器; 一記憶體,其被配置為儲存一置換指令;及 一處理器,其被配置為: 存取該置換指令的一週期參數,該週期參數指示複數個資料來源的、包含用於該置換指令的來源資料的一計數;及 針對該複數個向量暫存器中的一第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作: 至少部分基於該複數個資料來源的該計數,來選擇該複數個資料來源中的一資料來源;及 基於所選擇的該資料來源的一對應元件中的一值,來填充該特定元件。
  2. 如請求項1所述的設備,其中該複數個資料來源包括該複數個向量暫存器中的多個向量暫存器。
  3. 如請求項1所述的設備,其中該置換指令是在以下各項期間或在準備以下各項時執行的:一下取樣操作、一矩陣轉置或一快速傅立葉核心操作。
  4. 如請求項1所述的設備,其中該處理器進一步被配置為: 存取該置換指令的一起始參數,該起始參數指示該複數個資料來源中的包含來源資料的一特定資料來源,以填充該第一置換結果暫存器的一初始元件;及 至少部分基於該起始參數,選擇該複數個資料來源中的包含來源資料的元件,以填充該第一置換結果暫存器的剩餘元件。
  5. 如請求項1所述的設備,其中該處理器進一步被配置為: 基於該複數個資料來源的該計數來決定一選擇順序;及 至少部分基於該選擇順序,選擇該複數個資料來源中的包含來源資料的元件,以填充該第一置換結果暫存器的該等元件。
  6. 如請求項5所述的設備,其中該記憶體被配置為儲存選擇資料,該選擇資料指示與資料來源的計數相對應的資料來源選擇的順序,並且其中該處理器被配置為:基於該選擇資料,決定與該複數個資料來源的該計數相對應的該選擇順序。
  7. 如請求項1所述的設備,其中該處理器進一步被配置為:執行該置換指令,以基於對該第一置換結果暫存器的該等元件中的值的一置換,來填充一第二置換結果暫存器的元件。
  8. 如請求項7所述的設備,其中該處理器進一步被配置為: 存取一截點參數,該截點參數指示該第一置換結果暫存器的一特定元件,以填充該第二置換結果暫存器的一初始元件;及 至少部分基於該截點參數,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
  9. 如請求項7所述的設備,其中該處理器進一步被配置為: 存取該置換指令的一步進參數,該步進參數指示一元件選擇順序;及 至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
  10. 如請求項7所述的設備,其中該處理器進一步被配置為: 基於該複數個資料來源的該計數來決定一元件選擇順序;及 至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
  11. 如請求項1所述的設備,其中該處理器被配置為:在執行該置換指令之前,預處理在該複數個資料來源中的包含來源資料的至少一個資料來源的元件中的值。
  12. 如請求項1所述的設備,其中該處理器被配置為:在執行該置換指令之前,執行一旋轉指令,以對該複數個資料來源中的包含來源資料的至少一個資料來源中的值的位置進行旋轉。
  13. 如請求項1所述的設備,其中該置換指令包括一第二週期參數,其中該第二週期參數指示第二複數個資料來源的、包含用於該置換指令的來源資料的一第二計數,並且其中執行該置換指令包括:基於該第二複數個資料來源的該第二計數,基於該第二複數個資料來源的元件中的值,填充該複數個向量暫存器中的一特定置換結果暫存器的元件。
  14. 一種方法,其包括以下步驟: 在一設備處存取一置換指令; 在該設備處存取該置換指令的一週期參數,該週期參數指示複數個向量暫存器中的、包含用於該置換指令的來源資料的向量暫存器的一計數;及 在該設備處,針對該複數個向量暫存器中的一第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作: 至少部分基於該向量暫存器的計數,來選擇該複數個向量暫存器中的一向量暫存器;及 基於所選擇的該向量暫存器的一對應元件中的一值,來填充該特定元件。
  15. 如請求項14所述的方法,進一步包括以下步驟: 在該設備處存取該置換指令的一暫存器起始參數,該起始參數指示該向量暫存器中的包含來源資料的一特定向量暫存器,以填充該第一置換結果暫存器的一初始元件;及 至少部分基於該暫存器起始參數,選擇該向量暫存器中的包含來源資料的元件,以填充該第一置換結果暫存器的剩餘元件。
  16. 如請求項14所述的方法,進一步包括以下步驟: 在該設備處,基於該向量暫存器的計數來決定一暫存器選擇順序;及 至少部分基於該暫存器選擇順序,選擇該等向量暫存器中的包含來源資料的元件,以填充該第一置換結果暫存器的該等元件。
  17. 如請求項16所述的方法,進一步包括以下步驟:基於暫存器選擇資料,決定與該向量暫存器的計數相對應的該暫存器選擇順序,該暫存器選擇資料指示與向量暫存器的計數相對應的暫存器選擇的順序。
  18. 如請求項14所述的方法,其中執行該置換指令包括以下步驟:基於對該第一置換結果暫存器的該等元件中的值的一置換,來填充一第二置換結果暫存器的元件。
  19. 如請求項18所述的方法,進一步包括以下步驟: 存取一截點參數,該截點參數指示該第一置換結果暫存器的一特定元件,以填充該第二置換結果暫存器的一初始元件;及 至少部分基於該截點參數,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
  20. 如請求項18所述的方法,進一步包括以下步驟: 存取該置換指令的一步進參數,該步進參數指示一元件選擇順序;及 至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
  21. 一種儲存指令的非暫時性電腦可讀取媒體,該等指令在由一處理器執行時,使該處理器: 存取一置換指令的一週期參數,該週期參數指示複數個向量暫存器中的、包含用於該置換指令的來源資料的向量暫存器的一計數;及 針對該複數個向量暫存器中的一第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作: 至少部分基於該向量暫存器的計數,來選擇該複數個向量暫存器中的一向量暫存器;及 基於所選擇的該向量暫存器的一對應元件中的一值,來填充該特定元件。
  22. 如請求項21所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器: 存取該置換指令的一暫存器起始參數,該起始參數指示該向量暫存器中的包含來源資料的一特定向量暫存器,以填充該第一置換結果暫存器的一初始元件;及 至少部分基於該暫存器起始參數,選擇該等向量暫存器中的包含來源資料的元件,以填充該第一置換結果暫存器的剩餘元件。
  23. 如請求項21所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器: 基於該向量暫存器的計數來決定一暫存器選擇順序;及 至少部分基於該暫存器選擇順序,選擇該等向量暫存器中的包含來源資料的元件,以填充該第一置換結果暫存器的該等元件。
  24. 如請求項23所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器進行以下操作:基於暫存器選擇資料,決定與該向量暫存器的計數相對應的該暫存器選擇順序,其中該暫存器選擇資料指示與向量暫存器的計數相對應的暫存器選擇的順序。
  25. 如請求項21所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器執行該置換指令,以基於對該第一置換結果暫存器的該等元件中的值的一置換,來填充一第二置換結果暫存器的元件。
  26. 如請求項25所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器: 存取一截點參數,該截點參數指示該第一置換結果暫存器的一特定元件,以填充該第二置換結果暫存器的一初始元件;及 至少部分基於該截點參數,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
  27. 如請求項25所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器: 存取該置換指令的一步進參數,該步進參數指示一元件選擇順序;及 至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
  28. 如請求項25所述的非暫時性電腦可讀取媒體,其中該等指令在由該處理器執行時,使該處理器: 基於該向量暫存器的計數決定一元件選擇順序;及 至少部分基於該元件選擇順序,基於該第一置換結果暫存器的該等元件中的該等值,來填充該第二置換結果暫存器的該等元件。
  29. 一種裝置,其包括: 用於存取一置換指令的一週期參數的構件,該週期參數指示複數個向量暫存器中的、包含用於該置換指令的來源資料的向量暫存器的一計數;及 用於針對該複數個向量暫存器中的一第一置換結果暫存器的多個元件中的每一個特定元件,執行該置換指令以進行以下操作的構件: 至少部分基於該向量暫存器的計數,來選擇該複數個向量暫存器中的一向量暫存器;及 基於所選擇的該向量暫存器的一對應元件中的一值,來填充該特定元件。
  30. 如請求項29所述的裝置,其中該用於存取的構件或用於執行的構件中的至少一者被集成到下列各項中的至少一項:一通訊設備、一電腦、一顯示設備、一電視機、一遊戲控制台、一數位視訊播放機、一相機、一導航設備、一交通工具、一頭戴式受話器、一增強現實頭戴式受話器、一混合現實頭戴式受話器、一虛擬實境頭戴式受話器、一飛行器、一家庭自動化系統、一聲控設備、一物聯網路(IoT)設備、一虛擬實境(VR)設備、一基地台或一行動設備。
TW111132230A 2021-09-24 2022-08-26 置換指令 TW202318182A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/448,816 US11900111B2 (en) 2021-09-24 2021-09-24 Permutation instruction
US17/448,816 2021-09-24

Publications (1)

Publication Number Publication Date
TW202318182A true TW202318182A (zh) 2023-05-01

Family

ID=83438622

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111132230A TW202318182A (zh) 2021-09-24 2022-08-26 置換指令

Country Status (4)

Country Link
US (1) US11900111B2 (zh)
CN (1) CN117940896A (zh)
TW (1) TW202318182A (zh)
WO (1) WO2023049593A1 (zh)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US9529571B2 (en) 2011-10-05 2016-12-27 Telefonaktiebolaget Lm Ericsson (Publ) SIMD memory circuit and methodology to support upsampling, downsampling and transposition
US9639503B2 (en) 2013-03-15 2017-05-02 Qualcomm Incorporated Vector indirect element vertical addressing mode with horizontal permute
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US10467006B2 (en) * 2015-12-20 2019-11-05 Intel Corporation Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor
US10863199B2 (en) * 2018-03-26 2020-12-08 Qualcomm Incorporated Minimization of transform memory and latency via parallel factorizations
US11392378B2 (en) * 2019-07-25 2022-07-19 Arm Limited Executing a set of load operations for a gather-load instruction and controlling handling of another instruction that depends on completion of the gather-load instruction

Also Published As

Publication number Publication date
US20230102564A1 (en) 2023-03-30
WO2023049593A1 (en) 2023-03-30
CN117940896A (zh) 2024-04-26
US11900111B2 (en) 2024-02-13

Similar Documents

Publication Publication Date Title
EP3026549B1 (en) Systems and methods of data extraction in a vector processor
CN111656367A (zh) 神经网络加速器的系统和体系结构
JP6571752B2 (ja) ベクトルレジスタファイルにおいてデータインデックス方式アキュムレータを使用するベクトルプロセッサによるスカラ演算の並列化、関連する回路、方法およびコンピュータ可読媒体
US8989242B2 (en) Encoding/decoding processor and wireless communication apparatus
CN111461311A (zh) 基于众核处理器的卷积神经网络运算加速方法及装置
EP3033670A1 (en) Vector accumulation method and apparatus
CN109360154A (zh) 一种卷积神经网络生成方法及图像的超分辨率方法
CN113313247B (zh) 基于数据流架构的稀疏神经网络的运算方法
US20210241070A1 (en) Hybrid convolution operation
CN110780921A (zh) 数据处理方法和装置、存储介质及电子装置
TW201947392A (zh) 子向量數值之加載及複製之系統及方法
TW202318182A (zh) 置換指令
CN112639839A (zh) 神经网络的运算装置及其控制方法
KR20240065083A (ko) 순열 명령
CN109389213A (zh) 存储装置及方法、数据处理装置及方法、电子装置
TW202318225A (zh) 適用於基數-3蝶形計算的指令
CN110737473A (zh) 数据处理方法及装置、终端、存储介质
JP2005117582A5 (zh)
WO2022057459A1 (zh) 一种基于Tensorcore处理int4数据类型的方法、系统、设备及介质
US11669273B2 (en) Memory access management
JP2023513608A (ja) アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム
JP2013517576A5 (zh)
TW202349231A (zh) 對向量輸入進行旋轉的系統與方法
JP4388643B2 (ja) マルチチャンネル信号処理装置
CN113258902A (zh) 一种处理器、滤波方法及相关设备