TWI773783B - 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體 - Google Patents

用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體 Download PDF

Info

Publication number
TWI773783B
TWI773783B TW107122441A TW107122441A TWI773783B TW I773783 B TWI773783 B TW I773783B TW 107122441 A TW107122441 A TW 107122441A TW 107122441 A TW107122441 A TW 107122441A TW I773783 B TWI773783 B TW I773783B
Authority
TW
Taiwan
Prior art keywords
complex
data items
data
components
real
Prior art date
Application number
TW107122441A
Other languages
English (en)
Other versions
TW201908964A (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 TW201908964A publication Critical patent/TW201908964A/zh
Application granted granted Critical
Publication of TWI773783B publication Critical patent/TWI773783B/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/3001Arithmetic instructions
    • 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/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4806Computations with complex numbers
    • G06F7/4812Complex multiplication

Abstract

提供了設備、方法、程式及複數處理指令,以支援對輸入資料向量的向量處理運算,該等輸入資料向量包括在該等輸入資料向量中的相應位置處的多個輸入資料項。響應於指令,從第一源暫存器中的交替位置提取至少一個第一組資料項,並且從第二源暫存器中的交替位置提取至少一個第二組資料項,其中在第一源暫存器和第二源暫存器中的連續資料項包括相應組複數的交替實部和虛部。使用兩組資料項作為運算元,來產生結果組複數分量,並且該結果組複數分量是應用於兩組複數的複數運算的複數結果的實部和虛部中之一者。將該結果組複數分量應用於目的暫存器。

Description

用於基於暫存器的複數處理的設備、方法、積體電路、電腦 程式及電腦可讀取儲存媒體
本揭露係關於一種資料處理設備。更具體而言,其係關於在資料處理設備中執行複數運算。
可能需要資料處理設備在各種情況下執行複數計算。一些資料處理系統支援向量指令的處理,其中由向量處理指令來指定的源運算元或結果值是包括多個資料項的向量,該多個資料項要並行執行指定的資料處理運算。複數的兩部結構(即,其實部和虛部)意味著提供可以向量化方式執行複數運算的資料處理系統並非是微不足道的。
在一個示例實施例中,有一種設備,包括:指令解碼器電路系統,用以解碼指令;及資料處理電路系統,用以將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量,該等輸入資料向量包括在該等輸入資料向量中的相應位置處的多個輸入資料項,其中該指令解碼器電路系統是響應於指定一複數運算、一第一源暫存 器、一第二源暫存器及一目的暫存器的一複數處理指令,來產生控制信號,以控制該資料處理電路系統進行以下操作:從該第一源暫存器中的交替位置提取至少一個第一組資料項,其中在該第一源暫存器中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源暫存器中的交替位置提取至少一個第二組資料項,其中在該第二源暫存器中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的暫存器。
在另一示例實施例中,有一種操作一資料處理設備的方法,包括以下步驟:解碼指令;將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量,該等輸入資料向量包括在該等輸入資料向量中的相應位置處的多個輸入資料項;響應於指定一複數運算、一第一源暫存器、一第二源暫存器及一目的暫存器的一複數處理指令,來產生控制信號,以控制該資料處理設備的資料處理電路系統進行以下操作:從該第一源暫存器中的交替位置提取至少一個第一組資料項,其中在該第一源暫存器中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源暫存器中的交替位置提取至少一個第二組資料項,其中在該第二源暫存器中的連續資料項包括一第二組 複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的暫存器。
在另一示例實施例中,有一種設備,包括:用於解碼指令的構件;用於將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量的構件,該等輸入資料向量包括在該等輸入資料向量中的相應位置處的多個輸入資料項;用於響應於指定一複數運算、一第一源暫存器、一第二源暫存器及一目的暫存器的一複數處理指令,來產生控制信號的構件,以控制在資料處理設備中的用於資料處理的構件進行以下操作:從該第一源暫存器中的交替位置提取至少一個第一組資料項,其中在該第一源暫存器中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源暫存器中的交替位置提取至少一個第二組資料項,其中在該第二源暫存器中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的暫存器。
在另一示例實施例中,有一種用於控制一主機資料處理設備以提供一指令執行環境的電腦程式,包括: 指令解碼程式邏輯,用以解碼指令;及資料處理程式邏輯,用以將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量結構,該等輸入資料向量結構包括在該輸入資料向量結構中的相應位置處的多個輸入資料項,其中該指令解碼程式邏輯是響應於指定一複數運算、一第一源資料結構、一第二源資料結構及一目的資料結構的一複數處理指令,來產生控制信號,以控制該資料處理程式邏輯進行以下操作:從該第一源資料結構中的交替位置提取至少一個第一組資料項,其中在該第一源資料結構中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源資料結構中的交替位置提取至少一個第二組資料項,其中在該第二源資料結構中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的資料結構。
10:資料處理設備
12:處理電路系統
14:記憶體
16:取出電路系統
18:指令解碼器電路系統
20:暫存器
22:加載/儲存單元
30:乘法單元
32:加法單元
36:乘法單元
38:加法單元
40:乘法單元
42:加法單元
50:點積單元
52:加法電路系統
54:乘法單元
56:累加(加法)單元
60:加法單元
100:步驟
102:步驟
104:步驟
106:步驟
108:步驟
110:步驟
112:步驟
114:步驟
116:步驟
700:目標代碼
710:模擬器程式
720:主機作業系統
730:主機處理器
S1:源暫存器
S2:源暫存器
Z:目的暫存器
Za:暫存器
Zb:暫存器
Zc:暫存器
Zd:暫存器
Ze:暫存器
Zf:暫存器
Zg
Zs1:源暫存器
Zs2:源暫存器
Zds3:目的暫存器
Zn:源暫存器
Zm:源暫存器
Zda:目的暫存器
Zdb:目的暫存器
將僅經由舉例的方式,並參考如附圖所示的本技術的實施例,來進一步描述本技術,其中:圖1示意性圖示在一個實施例中的資料處理設備;圖2示意性圖示在一個實施例中的執行非加寬複數運算的資料處理電路系統; 圖3示意性圖示在一個實施例中的執行加寬複數運算的資料處理電路系統;圖4示意性圖示在一個實施例中的在複數運算之前進行複製運算的資料處理電路系統;圖5圖示在響應於四種帶符號乘法複數指令的實施例中的資料處理電路系統的運算;圖6圖示在使用諸如圖5中所示的複數指令之後,使用縮小移位運算,以產生最終組的向量化複數;圖7A-7D示意性圖示在一個實施例中的響應於四種不同類型的複數點積指令的資料處理電路系統;圖8示出在使用諸如圖7A-7D中所示的複數點積指令之後,在一個實施例中執行的一系列運算,以返回到初始資料精度;圖9A-9D示意性圖示在一個實施例中的響應於四種不同類型的非加寬複數點積指令的資料處理電路系統;圖10示出在一個實施例中執行的一系列運算,以便在執行諸如圖9A-9D所示的指令之後,返回到初始資料精度;圖11A和11B示意性圖示在一個實施例中用以支援複數加法指令的資料處理電路系統,該等指令進一步包括換位參數;圖12示出在一個實施例中的響應於四個相應換位參數而執行的一組四個換位; 圖13示出當執行一個實施例的方法時所採取的一系列步驟;及圖14示意性示出在一個實施例中提供模擬器實現的系統之部件。
至少一些實施例提供了一種設備,包括:指令解碼器電路系統,用以解碼指令;及資料處理電路系統,用以將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量,該等輸入資料向量包括在該等輸入資料向量中的相應位置處的多個輸入資料項,其中該指令解碼器電路系統是響應於指定一複數運算、一第一源暫存器、一第二源暫存器及一目的暫存器的一複數處理指令,來產生控制信號,以控制該資料處理電路系統進行以下操作:從該第一源暫存器中的交替位置提取至少一個第一組資料項,其中在該第一源暫存器中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源暫存器中的交替位置提取至少一個第二組資料項,其中在該第二源暫存器中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的暫存器。
可能需要現代資料處理系統在各種情況下進行複數算術計算,例如在數位通信、雷達系統及光學系統中,僅舉幾個例子。此外,能夠以向量化方式處理資料(即,將由單個指令所並行指定的資料處理運算應用於在資料向量內的多個資料項)的資料處理系統可以在處理量和處理效率方面帶來優勢。然而,由於數種原因,將向量處理技術應用於複數資料並非是微不足道的。首先,複數的固有結構(實數和虛數分量)意味著必須將資料處理系統配置以正確處理在向量中的一更大組資料項內的每個單獨的複數資料項的這些相應部分,並且此外輸入資料的向量化性質增加了對能將兩組複數的相應分量在給定複數運算中匯集在一起的方式的進一步限制。本技術提供了一種方法,其中資料處理電路系統從在每個源暫存器中的交替位置提取一組資料項,也就是說,在認識到源暫存器保存一組連續資料項的地方,此處那些資料項目在一組複數的實數分量和虛數分量之間交替,並且將實數分量和虛數分量配對,以形成單獨的複數。因此,資料處理電路系統因此能夠例如從源暫存器拉出實數分量(儘管應注意的是,在其他示例中,其可同樣地提取虛數分量作為替代或補充)。因此,資料處理電路系統然後可以將所需的複數運算應用於從相應源暫存器提取的分量,以產生結果組複數分量,其中該結果組複數分量是複數運算的複數結果的一組實數分量或虛部。注意到,這不是要排除也產生的另一組複數分量(即,可產生一組複數的實部和虛部兩者), 但是在一些實施例中,僅產生一個或另一個。然後將結果組複數分量應用於在複數處理指令中所指定的目的暫存器,其中此應用可以採用多種形式。例如,可將結果組簡單儲存在目的暫存器中,或者可將結果組用目的暫存器的現有內容來累加(藉由各種數學方法)。
如上所述,結果組複數分量可取決於所定義的特定複數處理指令而變化,但是在一些實施例中,結果組複數分量是複數結果的一組實數分量。同樣,在其他實施例中,結果組複數分量是複數結果的一組虛數分量。
可將響應於複數處理指令而由資料處理電路系統所產生的結果組複數分量以各種方式應用於目的暫存器,但是在一些實施例中,資料處理電路系統是響應於控制信號,來將結果組複數分量應用於目的暫存器中的連續位置中。因此,在結果組複數分量是複數運算的複數結果的實部和虛部之一者的情況,這意味著目的暫存器的內容與第一和第二源暫存器的內容是格式不同(即,在第一和第二源暫存器保存一組複數的連續對實數和虛數分量的情況),目的暫存器僅保存連續實數分量或連續虛數分量。這使得能界定大量的複數運算,但仍然能夠在向量處理配置內處理結果。
事實上,在一些這樣的實施例中,結果組複數分量的每個複數分量皆比第一和第二組資料項的每個資料項更寬。因此,對結果組複數分量的分量的此擴大意味著儘管在向量處理環境內運算,結果組複數分量的精度仍 可更佳地保留,否則其可能需要對結果組的複數分量進行顯著截斷,以便使它們適合進入它們相應的向量處理通道。因此應理解的是,本技術提供了一種方法,其中例如結果組複數的實數分量和虛數分量可由兩個單獨的指令來確定,而之後有機會將這些分量重新組合為一連續組實數和虛數複數對。
儘管如此,儘管在上述的一些實施例中,資料處理電路系統可以將結果組複數分量應用於目的暫存器中的連續位置中,但是在一些實施例中,資料處理電路系統產生結果組複數實數分量和相應的結果組複數虛數分量,而然後可將這些在它們的應用中交錯到目的暫存器,從而得到連續的實數和虛數分量對(形成一連續組複數)。因此,在一些實施例中,資料處理電路系統是響應於控制信號,以將結果組複數分量應用於與另一結果組複數分量交錯的目的暫存器中的交替位置中,其中當結果組複數分量是複數結果的一組實數分量時,另一結果組複數分量是複數結果的一組虛數分量,及其中當結果組複數分量是複數結果的一組虛數分量時,另一結果組複數分量是複數結果的一組實數分量。
可將資料處理電路系統從在第一和第二源暫存器中的它們相應交替位置提取第一組資料項和第二組資料項的方式不同地界定,並且實際上在一些實施例中可不同地對其控制,例如在一些實施例中,複數處理指令進一步指定是否從在第一源暫存器中的奇數位置或偶數位 置提取第一組資料項,及其中複數處理指令進一步指定是否從在第二源暫存器中的奇數位置或偶數位置提取第二組資料項。「奇數」和「偶數」位置在本文還可以稱為「底部」和「頂部」位置。
在提取第一和第二組資料項以便執行複數運算之前,還可以進一步將資料處理應用於第一源暫存器和第二源暫存器中之至少一者,並且在一些實施例中,複數處理指令進一步指定用於第一源暫存器和第二源暫存器中之至少一者的複製索引,及其中資料處理電路系統是進一步響應於控制信號,以將由複製索引所指示的一源組複數複製在第一源暫存器和第二源暫存器中之至少該者中。因此,對第一和第二源暫存器中之至少一者的「索引」使得程式員能夠識別保存在相應暫存器中的資料子集,而然後可再現該子集,使得對第一和第二資料組的提取然後使用所再現的該子集。例如,取決於所界定的索引的性質,複製索引可指定向量暫存器的預定部分的兩半中之一個,而然後該複製使得該指定的一半被複製到在每個預定部分的另一半中。僅舉一個特定示例,在將複製索引應用於向量暫存器的單元長度是128位元並且複製索引指定此單元的上半部分的情況,並且在本技術已經使用該128位元空間來儲存四個連續的32位元複數分量(即,兩個64位元複數)的情況,則複製將導致所識別的64位元複數被複製到該128位元單元內的相鄰64位元空間中。該運算跨向量暫存器的整個寬度重複。
雖然上面示例給出了正在執行的單個複製,但是在一些實施例中,對一源組複數的複製包括多於對一源組複數的單個複製。例如,在複製索引指定向量的給定單元的四分之一的情況,則可將該四分之一複製三次,以便填充整個單元。除了上面的128位元單元的示例,但是在複數分量每個都是16位元的示例中,那麼這將導致所識別的32位元複數(16位元實數和16位元虛數分量)被複製到該128位元單元上的其他三個32位元部分。可將這樣的「索引」應用於本文所述的任何指令。
雖然在一些實施例中從第一源暫存器提取僅單個組資料項(表示在第一源暫存器中的一組複數的一組實數分量或一組虛數分量),但是在一些實施例中,提取實數和虛數分量兩者。因此,在這些實施例中,從第一源暫存器提取的至少一個第一組資料項包括第一組資料項和第三組資料項,其中當第一組資料項是第一組複數的實數分量時,第三組資料項是第一組複數的虛數分量,並且當第一組資料項是第一組複數的虛數分量時,第三組資料項是第一組複數的實數分量,及其中資料處理電路系統是進一步響應於控制信號,來進一步使用第三組資料項作為運算元,來產生結果組複數分量。因此,資料處理電路系統然後具有第一組複數的實數和虛數分量兩者,以參與複數運算,此適用於所界定的特定複數處理指令(及因此的複數運算)。
同樣在一些實施例中,從第二源暫存器提取的至少一個第二組資料項包括第二組資料項和第四組資料項,其中當第二組資料項是第二組複數的實數分量時,第四組資料項是第二組複數的虛數分量,並且當第二組資料項是第二組複數的虛數分量時,第四組資料項是第二組複數的實數分量,及其中資料處理電路系統是進一步響應於控制信號,來進一步使用第四組資料項作為運算元,來產生結果組複數分量。
複數運算可採取各種形式,但是在一些實施例中,複數運算是複數點積運算,及其中資料處理電路系統包括累加電路系統,該累加電路系統響應於控制信號,來從第一組複數的實數和虛數分量對中之一組對與第二組複數的實數和虛數分量對中之一組對的部分乘積累加結果組複數分量。在一些實施例中,複數運算包括複數乘法運算。在一些實施例中,複數運算是複數加法運算。在一些實施例中,複數運算是複數減法運算。
本技術進一步提供了,可在複數運算之前,執行對第一和第二組複數中之一個或兩個的分量的額外操縱,因為已經發現到,這使得能特別有效地確定所需的複數結果,否則其可能例如需要預先執行額外指令,以便操縱第一和第二源暫存器中之至少一者的內容。因此,一些實施例提供了複數處理指令進一步指定換位參數,並且資料處理電路系統是響應於控制信號,以在對第一和第二組 複數應用複數運算之前,對第一和第二組複數中之至少一者應用換位運算。
可將應用於第一和第二組複數中之至少一者的該換位運算不同地界定。其可稱為「旋轉」,並且實際上在一些情況下可對應於在複數平面上圍繞原點表示的複數的旋轉,但是本技術不限於對應於這種「真正」旋轉的換位,並且在一些實施例中,換位運算包括以下項目中之至少一者:在至少一個第一組複數和第二組複數中,用虛數分量代替實數分量;用實數分量代替虛數分量;交換實數和虛數分量;取反實數分量;及取反虛數分量。
可以各種方式提供換位參數,但是在一些實施例中,複數處理指令將換位參數指定為立即值。儘管如上所述,換位並不總是直接對應於在複數平面上的真正旋轉,但是換位參數有時在本文稱為「旋轉值」,並且在一些實施例中,可採用一組四個值中之一個,其(類似於複數平面旋轉示例)可標記為0、90、180、及270,參考在複數平面上旋轉四分之一圈的旋轉角度。
如上所述,可以各種方式將結果組複數分量應用於目的暫存器,但是在一些實施例中,將結果組複數分量應用於目的暫存器包括將結果組複數分量儲存在目的暫存器中。在其他實施例中,將結果組複數分量應用於目的暫存器包括:將結果組複數分量與目的暫存器的內容進行累加。
雖然可將目的暫存器指定為與第一和第二源暫存器兩者不同的暫存器,但是在一些實施例中,可界定「破壞性」運算,其中目的暫存器是第一源暫存器和第二源暫存器中之一者。
資料處理電路系統處理對於界定為保存結果值的儲存器而該結果值變得太大的情況的方式可採取各種形式。例如,該值可以環繞(即,超過最大值返回到0),而在一些實施例中,複數運算是飽和運算(即,換句話說,超過最大值,結果被保存為該最大值)。
至少一些實施例提供了一種操作一資料處理設備的方法,包括以下步驟:解碼指令;將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量,該等輸入資料向量包括在該等輸入資料向量中的相應位置處的多個輸入資料項;響應於指定一複數運算、一第一源暫存器、一第二源暫存器及一目的暫存器的一複數處理指令,來產生控制信號,以控制該資料處理設備的資料處理電路系統進行以下操作:從該第一源暫存器中的交替位置提取至少一個第一組資料項,其中在該第一源暫存器中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源暫存器中的交替位置提取至少一個第二組資料項,其中在該第二源暫存器中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複 數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的暫存器。
至少一些實施例提供了一種設備,包括:用於解碼指令的構件;用於將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量的構件,該等輸入資料向量包括在該等輸入資料向量中的相應位置處的多個輸入資料項;用於響應於指定一複數運算、一第一源暫存器、一第二源暫存器及一目的暫存器的一複數處理指令,來產生控制信號的構件,以控制在資料處理設備中的用於資料處理的構件進行以下操作:從該第一源暫存器中的交替位置提取至少一個第一組資料項,其中在該第一源暫存器中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源暫存器中的交替位置提取至少一個第二組資料項,其中在該第二源暫存器中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的暫存器。
至少一些實施例提供了一種用於控制一主機資料處理設備以提供一指令執行環境的電腦程式,包括:指令解碼程式邏輯,用以解碼指令;及資料處理程式邏輯,用以將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量結構,該等輸入資料向量結構包括在該 輸入資料向量結構中的相應位置處的多個輸入資料項,其中該指令解碼程式邏輯是響應於指定一複數運算、一第一源資料結構、一第二源資料結構及一目的資料結構的一複數處理指令,來產生控制信號,以控制該資料處理程式邏輯進行以下操作:從該第一源資料結構中的交替位置提取至少一個第一組資料項,其中在該第一源資料結構中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源資料結構中的交替位置提取至少一個第二組資料項,其中在該第二源資料結構中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的資料結構。
至少一些實施例提供了一種以非暫時方式儲存根據上述的電腦程式實施例的電腦程式的電腦可讀取儲存媒體
現在參考附圖描述一些特定實施例。
圖1示意性圖示可實施本技術的各種示例的資料處理設備10。該設備包括資料處理電路系統12,其響應於其執行的一系列指令,來對資料項執行資料處理運算。從資料處理設備可以存取的記憶體14擷取該等指令,並且以本領域具有通常知識者熟悉的方式,為此提供了取出電路系統16。此外,將由取出電路系統16所擷取 的指令傳送到指令解碼器電路系統18,該指令解碼器電路系統18產生控制信號,將該控制信號安排來控制處理電路系統12以及一組暫存器20和加載/儲存單元22的配置和運算的各種態樣。大體上,資料處理電路系統12可以管線式方式進行佈置,但是其具體內容與本技術無關。本領域具有通常知識者將熟悉圖1所代表的一般配置,並且為了簡潔的目的,在本文省略其進一步的詳細描述。如在圖1中可見的每個暫存器20包括用於多個資料元件的儲存器,使得處理電路系統可以將資料處理運算應用於指定暫存器內的指定資料元件,或者可以將資料處理運算應用於指定暫存器內的一指定群資料元件(「向量」)。特別地,所示的資料處理設備涉及向量化資料處理運算的執行,並且具體涉及與保存在暫存器20中的資料元件相關的複數處理指令的執行,其進一步的解釋將在下文參考一些特定實施例更詳細地進行。將資料處理電路系統12在執行指令時所需的資料值以及作為那些資料處理指令的結果而產生的資料值經由加載/儲存單元22寫入記憶體14或從記憶體14讀取。還要注意的是,大體上,在圖1中的記憶體14可被視為其上可儲存本技術的指令的計算機可讀取儲存媒體的示例,典型地為處理電路系統然後執行的一預界定系列指令(「程式」)的一部分。然而,處理電路系統可從各種不同的源來存取這樣的程式,諸如在RAM中、在ROM中、經由網路介面等等。本揭露描述了處理電路系統12可執行的各種新穎指令並且下面的附圖 提供了對這些指令的性質的進一步解釋、在資料處理電路系統中用於支援那些指令的執行的變化等等。
圖2示意性圖示一種資料處理電路系統,以便在一個實施例中支援複數乘法指令。在該圖的下部分可見,複數乘法指令CMUL指定第一源暫存器S1、第二源暫存器S2及目的暫存器Z。此外,在此實施例中,複數乘法指令進一步指定所涉及的複數分量的資料大小,即具有指示這些是32位元值的「.s」的額外說明。響應於此指令(或者如將從圖1的上文描述理解的那樣,嚴格來說,響應於由解碼電路系統18響應於指令所產生的控制信號),資料處理電路系統從第一源暫存器S1和第二源暫存器S2兩者提取一組實數複數分量和一組虛數複數分量,這些分量中之每一者是32位元值。如由在圖2中標註源暫存器S1和S2的內容的示例分量所見,每個源暫存器的內容是一系列複數分量對,即實數和虛數分量。在源暫存器中的資料的此結構是有用的,因為複數是儲存在一起,無論是在暫存器中還是在它們從中加載的記憶體位置中,這意味著與加載和解交錯運算以從記憶體加載單獨的實數和虛數分量相關的複雜度並非必要。此外,提供所示指令和支援它的資料處理電路系統意味著可直接處理在每個源暫存器中的交錯的實數和虛數分量,使得能使用連續的加載和儲存指令,來將這些組值帶入暫存器中並且將它們返回到記憶體,增加了實施方式的便利性並且支援改善的效能。在圖2所示的複數乘法指令的特定示例中,顯示了 一組乘法單元30,其從第一和第二源暫存器接收相應的一對輸入。應注意的是,儘管在圖中僅顯示和明確標記了在每個源暫存器中和在目的暫存器中的一組四個分量,但是本技術提供了可以跨向量暫存器的整個寬度來複製此處理(如由圖的左側和右側的虛線所指示)。由乘法單元30所執行的乘法運算的結果向加法單元32提供一對輸入,注意到,在兩個情況中,將加法單元的輸入中之一者在被應用於該加法單元之前取反(即,實施減法)。然後將加法單元32的結果儲存於結果暫存器Z中的相應位置中。在此示例中,在指定了32位元值的情況,由加法單元32所產生的一組結果值分別是32位元值。
圖2的CMUL指令所屬的由本技術所提供的一示例組指令是非加寬指令,其為:‧CMUL:具有旋轉的複數乘法;‧CMLA:具有旋轉的複數乘法累加;‧SQRDCMULH:具有選轉的帶符號飽和捨去加倍複數乘法,給回高半部分;及‧SQRDCMLAH:具有選轉的帶符號飽和捨去加倍複數乘法累加,給回高半部分。
圖3示意性圖示在一個實施例中的另一複數處理指令,圖示了與圖2的示例的一些顯著差異。在此示例中,指令命名SQDMLALBT對應於「帶符號加倍乘法加上長的底部頂部」。如在圖3中可見,關於提供來支援此指令的資料處理電路系統,一組四個乘法單元36從第 一和第二源暫存器接收輸入,其中該指令再次指定(「s」)為應從每個指令提取一組「單個」32位元值。注意到,此指令的「底部頂部」特徵指示了要從第一源暫存器zs1提取對分量的下半部分,並且要從第二源暫存器zs2提取該對分量的上半部分。在這些對之間的乘法運算的結果是其將一個輸入提取到一組加法單元38,該等加法單元將此組值加到從目的暫存器zd提取的值,即這是累加運算。此外,注意到,該指令將在目的暫存器中的分量的大小指定為「d」,即64位元值。換句話說,此運算是加寬運算。作為所示指令的結果,在源暫存器zs1與源暫存器zs2中的一組複數之間產生乘法結果的一組虛數分量,並且將該組虛數分量累加在目的暫存器zd中,允許相對於輸入分量來加寬結果分量,從而保留精度。如在圖2的例子般,儘管在圖中僅明確顯示了從每個源暫存器提取並且在目的暫存器中累加的一組四個分量,但是本技術提供了可跨向量暫存器的整個寬度來複製此處理(如由圖的左側和右側的虛線和省略號所指示)。
由圖3的SQDMLALBT指令所屬的本技術提供的一示例組指令,其為加寬指令,該等加寬指令指定加上/減去底部/頂部底部/頂部(其中底部和頂部指的是所存取的複數的下半部分和上半部分,即每個複數的實部和虛部),其為:‧SQDMLALB:帶符號乘法加上長的底部底部;‧SQDMLSLB:帶符號乘法減去長的底部底部; ‧SQDMLALT:帶符號乘法加上長的頂部頂部;‧SQDMLSLT:帶符號乘法減去長的頂部頂部;‧SQDMLALBT:帶符號乘法加上長的底部頂部;及‧SQDMLSLBT:帶符號乘法減去長的底部頂部。
注意到,這些都是「MLA」(乘法加上-又名乘法累加)指令,還提供了「MUL」版本(即,純乘法版本),例如用於累加過程的第一次迭代,其中不應該累加目的暫存器的任何預先存在的內容。對於這些,只需要將在上面列表中的「MLA」替換為「MUL」。
圖4示意性圖示了提供以支援根據本技術的另一示例指令的一個實施例中的資料處理電路系統,即複數乘法累加指令。在圖4中特別注意的是,第二源暫存器zs2的複製索引(「[1]」)的額外說明。如圖所示,在將所支援的處理的向量化性質應用於128位元顆粒中的情況(即,在這些128位元顆粒中而跨向量暫存器的寬度重複所示的處理),及在指令指定了輸入分量大小為單個(即,32位元)的情況,複製索引的說明為「1」指示了應該將由128位元顆粒的上半部分中的一對32位元值所表示的複數複製到下半部分中。注意到,在其他示例中,例如如若指令要在相同的128位元顆粒內指定「半個」(即,16位元)值,則顆粒的內容將代表兩倍的複數(即,將有八個16位元值),並且此複製索引將導致該組中的(四個中之)第二複數被複製到其他三個中。然而,考慮到圖4所示的特定示例,在複製之後,從第一和第二源暫存器提 取的分量向乘法單元40提供一對輸入,其實際上可以是與圖2中所示的單元30相同的乘法單元。類似地,一對乘法單元40的結果向加法單元42提供輸入。如在圖2的例子般,注意到,加法單元42中之兩個具有取反的其輸入之一個,但是與圖2的示例相反,在圖4的示例中的指令是累加運算,所以保存在目的暫存器中的相應分量的現有內容向加法單元42提供額外輸入。因此產生的結果值形成目的暫存器zds3的相應分量的新內容。注意到,這不是一個加寬指令,即結果分量與輸入分量的大小相同,而因此,在此指令的動作之後,目的暫存器的內容是一組複數的一組交錯的實數和虛數分量,即與兩個源暫存器具有相同的格式。如在圖2和圖3的例子般,儘管在圖中僅明確示出了從每個源暫存器提取並且在目的暫存器中累加的一組四個分量,但是本技術提供了可跨向量暫存器的整個寬度複製此處理(如由圖的左側和右側的虛線和省略號所指示)。
圖5圖示了在一些實施例中的另一組指令的運算。這些皆可視為加寬指令,其產生一組連續的實數複數分量(在第一指令的示例中)或一組連續的虛數分量(在所示的第三和第四指令的示例中)。還注意到,每個指令指定了要處理的資料元件的大小以及所產生的結果資料元件的大小(如上文針對圖2-4所述),儘管本文的特定大小在圖中是通用的,例如<Zda>.<T>和<Zn><Tb>。可見到,在圖5的符號中,在處理結束時,所產生的實數 和虛數結果已經解交錯,並且目的暫存器Zda包含所有實數結果及目的暫存器Zdb包含所有虛數結果。轉到圖6,然後可使用縮小移位運算,來重新排序來自暫存器Za和Zb的資料,以便在目的暫存器Zc中產生所示的結果組複數分量,其中這些是原始源暫存器Zn和Zm的連續複數格式(圖5),而因此不需要進一步重新佈置資料。因此可將此組結果複數在連續儲存操作中儲存回記憶體。如在前面圖的例子般,儘管在圖5和圖6中僅明確示出了從每個源暫存器提取並且在目的暫存器中累加的一組四個分量,但是本技術提供了可跨向量暫存器的整個寬度複製此處理。
例如,利用這些乘法加上/減去底部/頂部底部/頂部指令的一示例程式系列指令(1)可以是:示例代碼系列(1):
Figure 107122441-A0305-02-0025-2
除上述的乘法指令外,本技術還提供了各種複數點積指令,其中一些在圖7A-7B的示例實施例中示出,連同提供來支援它們的資料處理電路系統一起。在支援這種複數點積運算的第一種方法中,如圖7A-7D所示,單獨地計算結果值的實部和虛部。因此,這允許了所示出的一組指令對結果資料產生加寬效果,其可在圖7A-7D的示例中見到,將資料精度擴展四倍,即其中輸入複數分量(實數和虛數)是每個16位元值,而結果值是64位元值。每個點積單元50從相應的一組四個輸入分量計算出部分乘積,該相應的一組四個輸入分量來自從每個源暫存器取得的一對複數的相應實數和虛數分量。注意到,在一些情況(標記為「-1」)中,將給定輸入取反。因此所產生的部分乘積將由加法電路系統52來累加。還如這些圖中所示,這些運算是累加運算,其中目的暫存器的相應部分的現有內容形成對產生最終結果的加法單元的進一步輸入。因此,在圖7A-7D中所示的運算的簡要概述中,CDOTRE累加兩個複數乘法的實部、CDOTIM累加兩個複數乘法的虛部、CCDOTRE累加兩個共軛複數乘法的實部、及CCDOTIM累加兩個共軛複數乘法的的虛部。
在使用這些指令中之兩個(取決於是否執行「常規」複數乘法或共軛複數乘法)之後,為了返回到初始資料精度,可以執行一系列運算,諸如圖8所示。可見到,在暫存器Za、Zb、Zc及Zd中的實數和虛數分量受 限於縮小移位運算,以便將兩組相應的實數和虛數分量交錯到目的暫存器Ze和Zf中,而然後執行另一縮小移位運算,以進一步減少分量大小(並且返回到原始源暫存器的分量大小),並且交錯實數和虛數分量,以將最終複數結果提供到一個寄存器中。如在前面圖的例子般,可跨向量暫存器的整個寬度複製在圖7A-7D和8中明確示出的電路系統和處理。
可藉由考慮以下兩個示例代碼系列(2)和(3),來理解本技術的益處,該兩個示例代碼系列表示與根據使用諸如圖7A-7D中所圖示的指令的本技術所採取的方法相比較的這種複數點積處理的先前技術實施方式。可見到,本技術的CDOT指令允許了資料處理電路系統的計算處理量的顯著改進(2倍),而同時增加了累加淨空(用於16位元輸入的64位元累加器,即4倍)。
示例先前技術代碼系列(複數點積的ARM®NEONTM實施方式)(2):
Figure 107122441-A0305-02-0027-3
Figure 107122441-A0305-02-0028-4
根據本技術的示例代碼系列(針對使用CDOT的複數點積)(3):
Figure 107122441-A0305-02-0028-5
Figure 107122441-A0305-02-0029-6
本技術還提供了支援複數點積運算的一種替代方法,而現在將參考圖9A-9D和圖10來討論。在本文中,與上文討論的複數點積指令相反,資料擴展僅為2倍,並且如在圖9A-9D的示例中可見,點積指令的結果仍然交錯在結果暫存器中(即,交替的實數和虛數分量)。在此方法中,如在圖9A-9D中可見,在來自相應源暫存器的提取分量上的初始組運算僅是由乘法單元54所執行的乘法運算。如在圖7A-7D的示例般,注意到,將某些輸入取反。還注意到,在圖9A-9D的示例中,僅界定了一個指令,即SQRDCDOT,但是在四個示例中所示的對 於此指令的四個不同反應導因於在指令中的額外參數的使用(即,# 0、# 90、# 180及# 270),其表示換位,即指示組合每個源暫存器的相應實數和虛數分量的特定方式。藉由類似於複數平面中的複數的旋轉,這些在本文中通俗地稱為「旋轉」,儘管重要的是要理解到,執行的換位普遍不嚴格對應於複數平面中的旋轉。可參考圖12進一步理解,其中針對「旋轉值」的四個不同值從第一和第二源暫存器取得的分量的對應使用,其中可見到,用於第二源暫存器的換位事實上對應於藉由以旋轉參數值給定的角度的旋轉而在所表示的複數的複數平面上的旋轉,然而對於應用於第一源暫存器的例子中的換位並不是這種情況,而因此一般認為這些換位並非嚴格是在複數平面上的旋轉。乘法單元54的結果將一對第一輸入提供到圖9A-9D中所示的累加(加法)單元56,其具有提供另一輸入(即,用於累加)的目的暫存器的相應部分的現有內容。雖然根據此方法來產生實數和虛數分量,以產生複數點積結果,但是這仍然是加寬運算,其具有所產生的實數和虛數分量是實數和虛數輸入分量的大小的兩倍。如在上述的第一種方法般,使用圖9A-9D的SQRDCDOT指令的指令然後可接著進行一對縮小移位運算,如在圖10可見,以將資料返回到初始資料精度並且將實數和虛數結果交錯在一個目的暫存器中而實數和虛數分量在另一目的暫存器中,以在單個目的暫存器中產生單一組複數分量,其具有形成複數值的交錯的實數和虛數分量。如在前面圖 的例子般,可跨向量暫存器的整個寬度複製在圖9A-9D和10中明確示出的電路系統和處理。
如現在所述,上述的「旋轉值」還可以有用地應用於本文所述的許多其他複數處理指令。例如,複數加法指令可在以破壞性方式來將一對元件加到第一源向量的對應元件之前,將在第二源向量中的複數旋轉90度或270度(當以極座標表示考慮時)。
複數乘法加上指令執行運算元的轉換以允許,藉由結合指令中之兩個,來建立對複數的乘法加上運算。所執行的轉換如下:(1)將在第二源向量中的複數在乘上第一源向量的複製實數分量之前旋轉0度或180度(以極座標形式考慮時)。(2)將在第二源向量中的複數在乘上第一源向量的複製虛數分量之前旋轉90度或270度(以極座標形式考慮時)。然後將結果乘積加到目的和被加數向量的對應分量。使用這些轉換,可有利地結合兩個指令。例如,如若我們考慮以下系列:SQRDCMLAH Zda.S,Zn.S,Zm.S,#A
SQRDCMLAH Zda.S,Zn.S,Zm.S,#B
然後A和B的有意義的結合是:A=0,B=90。在此例子中,將在Zn和Zm中的複數的兩個向量相乘,並且將乘積加到在Zda中的複數。
A=0,B=270。在此例子中,將在Zn中的共軛複數乘上在Zm中的複數,並且將乘積加到在Zda中的複數。
A=180,B=270。在此例子中,將在Zn和Zm中的複數的兩個向量相乘,並且將在Zda中的複數減去乘積。
A=180,B=90。在此例子中,將在Zn中的共軛複數乘上在Zm中的複數,並且將在Zda中的複數減去乘積。
如上所述,加寬複數定點指令解交錯複數值的實數和虛數分量,而同時對其進行處理,以便產生具有比輸入值更高數值精度的複數結果的分量(即,它們是「加寬」)。因此,這些指令與處理每個複數的實數和虛數分量在一起的其他複數指令顯著不同,使得複數結果的兩個分量都被寫入在目的地的相鄰元件。當產生複數乘法加上的結果的加寬分量時,以下指令是有用的:‧SQDMLALBT:加寬虛數值;‧SQDMLSLT:加寬實數值;‧SQDMLALB:加寬共軛實數值;及‧SQDMLSLBT:加寬共軛虛數值。
定點複數點積指令將源向量劃界成一對例如8位元或16位元帶符號整數複數。在每一對中,將在第一源向量中的複數值乘上在第二源向量中的對應複數值,並 且將結果的加寬乘積相加且加到例如累加器的32位元或64位元元件,其與在第一源向量中的一對複數重疊。
除了提供基本點積乘積功能之外,這些指令解交錯複數值。因此,源向量包含複數的交錯的實數和虛數分量,但是目的向量保存一獨佔組寬的實數或寬的虛數分量。對這些指令使用旋轉值: 如若旋轉為0,則結果將是包含複數點積運算的實數分量的向量。
如若旋轉為90,則結果將是包含複數點積運算的虛數分量的向量。
如若旋轉為180,則結果將是包含共軛複數點積運算的實數分量的向量。
如若旋轉為270,則結果將是包含共軛複數點積運算的虛數分量的向量。
帶符號/無符號整數複數點積指令將源向量劃界成一對例如8位元或16位元帶符號/無符號整數複數。在每一對內,將在第一源向量中的複數值乘上在第二源向量中的對應複數值,並且將結果的加寬乘積相加並且加到例如累加器的32位元或64位元元件(目的元件),其與在第一源向量中的一對複數對齊。
在執行乘法步驟之前,基於旋轉參數,來轉換從被乘數源向量讀取的值。取決於立即旋轉值,將源複數之部分的無、一個或兩個部分置換及/或取反。對這些指令使用旋轉值: 如若旋轉為0,則將來自第二源的複數的奇數分量取反,並且目的向量包含複數點積運算的實數分量。
如若旋轉為90,則交換來自第二源的複數的實部和虛部,並且目的向量包含複數點積運算的虛數分量。
如若旋轉為180,則沒有應用的轉換,並且目的向量包含共軛複數點積運算的實數分量。
如若旋轉為270,則將來自第二源的複數的偶數分量取反,然後交換從第二源導出的結果向量的實部和虛部,並且目的向量包含共軛複數點積運算的虛數分量。
在一些實施例中,複數運算可以是各種複數加法(即,包括複數減法),並且在圖11A和圖11B中示意性圖示了支援其中一些的資料處理電路系統。再次利用上述的「旋轉值」,而在圖11A的示例中使用# 90的值並且在圖11B的示例中使用# 270的值。注意到,如圖所示,這些旋轉值(一組四個)實際上是建議以2位元值表示,其中在這些示例中,00對應於# 90並且01對應於# 270。
圖11A和11B所示的示例代表了提供來支援複數加法指令的資料處理電路系統,其在一個示例指令組中被界定為SQCADD或UQADD(即,飽和複數加法指令的帶符號或無符號變體),其中飽和意味著在結果的每個分量中的結果值不會環繞,而是會以預定的最大值飽和。因此,加法單元60從輸入源暫存器的相應實數和虛數分量取得輸入,並且(注意到,將一些輸入取反)將它們相 加,以產生在目的暫存器中所交錯的實數和虛數分量。使用不同的旋轉參數值,可以實現對組合第一和第二源暫存器中的複數的實數和虛數分量的全部所需置換。如在前面圖的例子般,可跨向量暫存器的整個寬度複製在圖11A和11B中明確示出的電路系統和處理。
在進一步示例中,SUBLTB和ADDLBT指令對交錯的實數和虛數部分進行運算,並且是加寬指令。給定複數X和Y時,這些指令在產生複數加法(X+jY)或(X-jY)的結果的加寬分量時是有用的:ADDLBT:當計算(X+jY)時,加寬虛數值
SUBLBT:當計算(X+jY)時,加寬實數值
SUBLTB:當計算(X-jY)時,加寬虛數值
ADDLBT:當計算(X-jY)時,加寬實數值
圖13示出了在執行一個實施例的方法時所採取的一系列步驟。可以認為該流程開始於步驟100,其中將所接收的一系列指令中的下一個指令解碼。然後在步驟102確定此是否為本技術的複數指令。如若不是,則流程經由步驟104繼續,其中適當地繼續這些指令,而這不是本揭露的關注處。流程然後返回到步驟100,以解碼下一個指令。然而,當此為一複數指令時,流程繼續到步驟106,其中取決於所遇到的複數指令的特定類型,從第一源暫存器提取實數及/或虛數分量,並且在步驟108,從第二源暫存器提取實數及/或虛數分量。應注意的是,步驟106和108的提取典型將並行執行,而為了清楚起見在 圖13中僅以此連續的方式描述。然後在步驟110,使用這些提取的分量,來執行複數運算。步驟112確定是否此為交錯結果。當它是,則流程經由步驟114繼續,其中將實數和虛數結果分量在它們的應用中交錯於目的暫存器中,並且當它不是,則此流程經由步驟116繼續,其中將交錯結果然後是一組實數結果分量或一組虛數結果分量應用於指定的目的暫存器。無論經由任何路徑,流程然後返回到步驟100,以供待解碼的下一個指令。
圖14圖示了可使用的一種模擬器實施方式。雖然前述的實施例在用於操作支援相關技術的特定處理硬體的設備和方法方面實施了本發明,但是還可以提供經由使用電腦程式所實施的根據本文所述的實施例的指令執行環境。這種電腦程式通常稱為模擬器,只要它們提供硬體架構的基於軟體的實施方式。模擬器電腦程式的種類包括仿真器、虛擬機器、模型、及包括動態二進制翻譯器的二進制翻譯器。典型地,模擬器實施方式可以在主機處理器730上執行,可選地執行支援模擬器程式710的主機作業系統720。在一些佈置中,在硬體與所提供的指令執行環境(及/或在相同主機處理器上提供的多個不同的指令執行環境)之間可以存在多層模擬。歷史上,需要功能強大的處理器來提供以合理的速度執行的模擬器實施方式,但是這種方法在某些情況下可能是合理的,諸如當出於相容性或再使用的原因而希望將本地代碼執行於另一處理器時。例如,模擬器實施方式可對指令執行環境提供 主機處理器硬體不支援的額外功能,或者提供與不同硬體架構典型相關的指令執行環境。在Robert Bedichek於Winter 1990 USENIX Conference所發表的「Some Efficient Architecture Simulation Techniques」(第53-63頁)中給了對模擬的概述。
就參考特定硬體構造或特徵而先前已描述的實施例而言,在模擬的實施例中,可由合適的軟體構造或特徵,來提供等效功能。例如,可將特定電路系統在模擬的實施例中實施為電腦程式邏輯。類似地,可將諸如暫存器或快閃記憶體的記憶體硬體在模擬的實施例中實施為軟體資料結構。在主機硬體(例如,主機處理器730)上存在在前述實施例中所參考的一或更多個硬體元件的佈置中,一些模擬的實施例可在適當的情況下使用主機硬體。
可將模擬器程式710儲存於電腦可讀取儲存媒體(其可以是非暫態媒體)上,並且對目標代碼700提供程式介面(指令執行環境),其與由模擬器程式710所建模的硬體架構的應用程式介面相同。因此,可使用模擬器程式710,來從指令執行環境內執行包括上述的複數處理指令的目標代碼700的程式指令,使得實際上不具有上述的設備的硬體特徵的主機電腦730可以模擬這些特徵。
簡言之,提供了總體的設備、方法、程式和複數處理指令,以支援對輸入資料向量的向量處理運算,該等輸入資料向量包括在輸入資料向量中的相應位置的多個輸入資料項。響應於指令,從第一源暫存器中的交替位 置提取至少一個第一組資料項,並且從第二源暫存器中的交替位置提取至少一個第二組資料項,其中在第一和第二源暫存器中的連續資料項包括相應組複數的交替實數和虛數分量。使用兩組資料項作為運算元,來產生結果組複數分量,並且該結果組複數分量是應用於該兩組複數的複數運算的複數結果的實部和虛部中之一者。將該結果組複數分量應用於目的暫存器。
在本案中,詞語「經配置以...」用於表示設備的元件具有能夠執行所界定的運算的配置。在此上下文中,「配置」指的是硬體或軟體的互連的佈置或方式。例如,設備可具有提供所界定的運算的專用硬體,或者處理器或其他處理裝置可經程式化以執行功能。「經配置以」並非意味著設備元件需要以任何方式改變,以便提供所界定的運算。
儘管已經參考附圖在本文中詳細描述了說明性實施例,但是應理解的是,本發明不限於那些精確的實施例,並且本領域具有通常知識者可在不偏離由所附專利申請範圍所界定的本發明的範疇和精神的情況下,在其中實現各種改變、添加及修改。例如,在不偏離本發明的範疇的情況下,可對獨立請求項的特徵進行對附屬請求項的特徵的各種結合。
30:乘法單元
32:加法單元
S1:源暫存器
S2:源暫存器
Z:目的暫存器

Claims (23)

  1. 一種用於資料處理的設備,包括:指令解碼器電路系統,用以解碼指令;及資料處理電路系統,用以將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量,該等輸入資料向量包括在該等輸入資料向量中的相應位置處的多個輸入資料項,其中該指令解碼器電路系統是響應於指定一複數運算、一第一源暫存器、一第二源暫存器及一目的暫存器的一複數處理指令,來產生控制信號,以控制該資料處理電路系統進行以下操作:從該第一源暫存器中的交替位置提取至少一個第一組資料項,其中在該第一源暫存器中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源暫存器中的交替位置提取至少一個第二組資料項,其中在該第二源暫存器中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的暫存器; 其中該資料處理電路系統是響應於該等控制信號,來將該結果組複數分量應用於該目的暫存器中的連續位置中。
  2. 如請求項1所述之設備,其中該結果組複數分量是該複數結果的一組實數分量。
  3. 如請求項1所述之設備,其中該結果組複數分量是該複數結果的一組虛數分量。
  4. 如請求項1所述之設備,其中該結果組複數分量的每個複數分量比該第一組資料項和該第二組資料項的每個資料項更寬。
  5. 如請求項1所述之設備,其中該複數處理指令進一步指定是否要從該第一源暫存器中的奇數位置或偶數位置提取該第一組資料項,及其中該複數處理指令進一步指定是否要從該第二源暫存器中的奇數位置或偶數位置提取該第二組資料項。
  6. 如請求項1所述之設備,其中該複數處理指令進一步指定用於該第一源暫存器和該第二源暫存器中之至少一者的一複製索引,及其中該資料處理電路系統是進一步響應於該等控制信號,來複製由該第一源暫存器和該第二源暫存器中之該至少一者中的該複製索引所指示的一源組複數。
  7. 如請求項6所述之設備,其中對該源組複數 的複製包括多於對該源組複數的單個複製。
  8. 如請求項1所述之設備,其中從該第一源暫存器提取的該至少一個第一組資料項包括該第一組資料項和一第三組資料項,其中當該第一組資料項是該第一組複數的實數分量時,該第三組資料項是該第一組複數的虛數分量,並且當該第一組資料項是該第一組複數的虛數分量時,該第三組資料項是該第一組複數的實數分量,及其中該資料處理電路系統是進一步響應於該等控制信號,來進一步使用該第三組資料項作為運算元,來產生該結果組複數分量。
  9. 如請求項1所述之設備,其中從該第二源暫存器提取的該至少一個第二組資料項包括該第二組資料項和一第四組資料項,其中當該第二組資料項是該第二組複數的實數分量時,該第四組資料項是該第二組複數的虛數分量,並且當該第二組資料項是該第二組複數的虛數分量時,該第四組資料項是該第二組複數的實數分量,及其中該資料處理電路系統是進一步響應於該等控制信號,來進一步使用該第四組資料項作為運算元,來產生該結果組複數分量。
  10. 如請求項8所述之設備,其中該複數運算 是一複數點積運算,及其中該資料處理電路系統包括累加電路系統,該累加電路系統是響應於該等控制信號,來累加來自該第一組複數的一組對實數和虛數分量對與該第二組複數的一組對實數和虛數分量對的部分乘積的該結果組複數分量。
  11. 如請求項1所述之設備,其中該複數運算包括一複數乘法運算。
  12. 如請求項1所述之設備,其中該複數運算是一複數加法運算或一複數減法運算。
  13. 如請求項1所述之設備,其中該複數處理指令進一步指定一換位參數,並且該資料處理電路系統是響應於該等控制信號,來在將該複數運算應用於該第一組複數和該第二組複數之前,對該第一複數和該第二組複數中之至少一者應用一換位運算。
  14. 如請求項13所述之設備,其中該換位運算包括以下項目中之至少一者:在至少一個該第一組複數和該第二組複數中,用虛數分量代替實數分量;用實數分量代替虛數分量;交換實數和虛數分量;取反實數分量;及取反虛數分量。
  15. 如請求項13所述之設備,其中該複數處理指令將該換位參數指定為一立即值。
  16. 如請求項1所述之設備,其中將該結果組複數分量應用於該目的暫存器包括將該結果組複數分量儲存在該目的暫存器中。
  17. 如請求項1所述之設備,其中將該結果組複數分量應用於該目的暫存器包括將該結果組複數分量與該目的暫存器的內容進行累加。
  18. 如請求項1所述之設備,其中該目的暫存器是該第一源暫存器和該第二源暫存器中之一者。
  19. 如請求項1所述之設備,其中該複數運算是一飽和運算。
  20. 一種操作一資料處理設備的方法,包括以下步驟:解碼指令;將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量,該等輸入資料向量包括在該等輸入資料向量中的相應位置處的多個輸入資料項;響應於指定一複數運算、一第一源暫存器、一第二源暫存器及一目的暫存器的一複數處理指令,來產生控制信號,以控制該資料處理設備的資料處理電路系統進行以下操作: 從該第一源暫存器中的交替位置提取至少一個第一組資料項,其中在該第一源暫存器中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源暫存器中的交替位置提取至少一個第二組資料項,其中在該第二源暫存器中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的暫存器;其中該結果組複數分量被應用於該目的暫存器中的連續位置中。
  21. 一種用於資料處理的積體電路,包括:用於解碼指令的構件;用於將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量的構件,該等輸入資料向量包括在該等輸入資料向量中的相應位置處的多個輸入資料項;用於響應於指定一複數運算、一第一源暫存器、一第二源暫存器及一目的暫存器的一複數處理指令,來產生控制信號的構件,以控制在資料處理設備中的用 於資料處理的構件進行以下操作:從該第一源暫存器中的交替位置提取至少一個第一組資料項,其中在該第一源暫存器中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源暫存器中的交替位置提取至少一個第二組資料項,其中在該第二源暫存器中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的暫存器;其中該用於將向量處理運算選擇性地應用的構件是響應於該等控制信號,來將該結果組複數分量應用於該目的暫存器中的連續位置中。
  22. 一種用於控制一主機資料處理設備以提供一指令執行環境的電腦程式,包括:指令解碼程式邏輯,用以解碼指令;及資料處理程式邏輯,用以將由該等指令所指定的向量處理運算選擇性地應用於輸入資料向量結構,該等輸入資料向量結構包括在該輸入資料向量結構中的相應位置處的多個輸入資料項, 其中該指令解碼程式邏輯是響應於指定一複數運算、一第一源資料結構、一第二源資料結構及一目的資料結構的一複數處理指令,來產生控制信號,以控制該資料處理程式邏輯進行以下操作:從該第一源資料結構中的交替位置提取至少一個第一組資料項,其中在該第一源資料結構中的連續資料項包括一第一組複數的交替實數和虛數分量;從該第二源資料結構中的交替位置提取至少一個第二組資料項,其中在該第二源資料結構中的連續資料項包括一第二組複數的交替實數和虛數分量;使用該第一組資料項和該第二組資料項作為運算元,來產生一結果組複數分量,其中該結果組複數分量是應用於該第一組複數和該第二組複數的該複數運算的一複數結果的一實部和一虛部中之一者;及將該結果組複數分量應用於該目的資料結構;其中該資料處理程式邏輯是響應於該等控制信號,來將該結果組複數分量應用於該目的資料結構中的連續位置中。
  23. 一種以非暫時方式儲存根據請求項22所述之電腦程式的電腦可讀取儲存媒體。
TW107122441A 2017-07-20 2018-06-29 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體 TWI773783B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1711700.3 2017-07-20
GB1711700.3A GB2564696B (en) 2017-07-20 2017-07-20 Register-based complex number processing
??1711700.3 2017-07-20

Publications (2)

Publication Number Publication Date
TW201908964A TW201908964A (zh) 2019-03-01
TWI773783B true TWI773783B (zh) 2022-08-11

Family

ID=59771743

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107122441A TWI773783B (zh) 2017-07-20 2018-06-29 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體

Country Status (9)

Country Link
US (1) US11210090B2 (zh)
EP (1) EP3655851B1 (zh)
JP (1) JP7343473B2 (zh)
KR (1) KR102586259B1 (zh)
CN (1) CN110914800B (zh)
GB (1) GB2564696B (zh)
IL (1) IL271635B2 (zh)
TW (1) TWI773783B (zh)
WO (1) WO2019016507A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2564696B (en) 2017-07-20 2020-02-05 Advanced Risc Mach Ltd Register-based complex number processing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193185A1 (en) * 2003-10-02 2005-09-01 Broadcom Corporation Processor execution unit for complex operations
TW200532452A (en) * 2003-12-09 2005-10-01 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US20100106944A1 (en) * 2004-07-13 2010-04-29 Arm Limited Data processing apparatus and method for performing rearrangement operations

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579253A (en) 1994-09-02 1996-11-26 Lee; Ruby B. Computer multiply instruction with a subresult selection option
US6839728B2 (en) 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7660840B2 (en) * 2003-09-29 2010-02-09 Broadcom Corporation Method, system, and computer program product for executing SIMD instruction for flexible FFT butterfly
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
US20070198815A1 (en) 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit
JP2009048532A (ja) * 2007-08-22 2009-03-05 Nec Electronics Corp マイクロプロセッサ
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
CN101825998B (zh) * 2010-01-22 2012-09-05 龙芯中科技术有限公司 向量复数乘法运算的处理方法及相应的装置
US20120166511A1 (en) * 2010-12-22 2012-06-28 Hiremath Chetan D System, apparatus, and method for improved efficiency of execution in signal processing algorithms
KR20120077164A (ko) * 2010-12-30 2012-07-10 삼성전자주식회사 Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법
CN102937967B (zh) * 2012-10-11 2018-02-27 南京中兴新软件有限责任公司 数据冗余实现方法及装置
CN103873522B (zh) * 2012-12-14 2018-07-06 联想(北京)有限公司 一种电子设备及应用于电子设备的文件分块方法
US9880845B2 (en) * 2013-11-15 2018-01-30 Qualcomm Incorporated Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods
US20170177359A1 (en) 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Lane-Based Strided Scatter Operations
US20170177362A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Adjoining data element pairwise swap processors, methods, systems, and instructions
GB2548908B (en) * 2016-04-01 2019-01-30 Advanced Risc Mach Ltd Complex multiply instruction
US11023231B2 (en) * 2016-10-01 2021-06-01 Intel Corporation Systems and methods for executing a fused multiply-add instruction for complex numbers
GB2564696B (en) 2017-07-20 2020-02-05 Advanced Risc Mach Ltd Register-based complex number processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193185A1 (en) * 2003-10-02 2005-09-01 Broadcom Corporation Processor execution unit for complex operations
TW200532452A (en) * 2003-12-09 2005-10-01 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US20100106944A1 (en) * 2004-07-13 2010-04-29 Arm Limited Data processing apparatus and method for performing rearrangement operations

Also Published As

Publication number Publication date
CN110914800B (zh) 2023-12-05
IL271635B1 (en) 2023-10-01
US11210090B2 (en) 2021-12-28
TW201908964A (zh) 2019-03-01
GB2564696A (en) 2019-01-23
EP3655851B1 (en) 2022-12-14
IL271635B2 (en) 2024-02-01
JP7343473B2 (ja) 2023-09-12
KR102586259B1 (ko) 2023-10-10
CN110914800A (zh) 2020-03-24
GB2564696B (en) 2020-02-05
KR20200026992A (ko) 2020-03-11
GB201711700D0 (en) 2017-09-06
EP3655851A1 (en) 2020-05-27
JP2020527795A (ja) 2020-09-10
IL271635A (en) 2020-02-27
US20210026628A1 (en) 2021-01-28
WO2019016507A1 (en) 2019-01-24

Similar Documents

Publication Publication Date Title
JP7454377B2 (ja) データ処理装置における拡大算術計算
JP7253492B2 (ja) データ処理装置における乗累算
JP7148526B2 (ja) データ処理装置におけるベクトルによる要素演算
JP4349265B2 (ja) プロセッサ
EP3329363B1 (en) Vector arithmethic instruction
TWI773783B (zh) 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體
US11093243B2 (en) Vector interleaving in a data processing apparatus
JP7324754B2 (ja) ベクトル・キャリー付き加算命令
TW202305588A (zh) 用於向量組合指令之處理設備、方法、及電腦程式