TWI507982B - 向量算術縮減 - Google Patents

向量算術縮減 Download PDF

Info

Publication number
TWI507982B
TWI507982B TW103127139A TW103127139A TWI507982B TW I507982 B TWI507982 B TW I507982B TW 103127139 A TW103127139 A TW 103127139A TW 103127139 A TW103127139 A TW 103127139A TW I507982 B TWI507982 B TW I507982B
Authority
TW
Taiwan
Prior art keywords
output
vector
elements
input
instruction
Prior art date
Application number
TW103127139A
Other languages
English (en)
Other versions
TW201519090A (zh
Inventor
Ajay Anant Ingle
Marc Murray Hoffman
Deepak Mathew
Mao Zeng
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of TW201519090A publication Critical patent/TW201519090A/zh
Application granted granted Critical
Publication of TWI507982B publication Critical patent/TWI507982B/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/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/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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

向量算術縮減
本發明大體上係關於向量算術縮減。
技術之進步已帶來較小且較強大之計算器件。舉例而言,當前存在多種攜帶型個人計算器件,包括無線計算器件,諸如,攜帶型無線電話、個人數位助理(PDA)、平板電腦及傳呼器件,其體積小、重量輕且易於由使用者攜帶。許多此等計算器件包括併入於其中之其他器件。舉例而言,無線電話亦可包括數位靜態相機、數位視訊攝影機、數位記錄器及音訊檔案播放器。又,此等計算器件可處理可執行指令,包括軟體應用程式,諸如可用於存取網際網路之網頁瀏覽器應用程式,及利用靜態相機或視訊攝影機並提供多媒體播放功能性的多媒體應用程式。
許多此等計算器件包括用於處理無線傳輸,及與大量重複計算相關聯之其他活動的向量處理器。向量處理器執行指令,該等指令對可配置為一維陣列或向量之多個輸入執行運算。執行向量指令使得能夠對多個輸入執行特定運算。舉例而言,執行習知之向量加法縮減指令會基於多個輸入計算單一總和值。其他運算(諸如,積分函數及累積式密度函數)除了使用一或多個部分總和(例如,多個輸入中之不到全部輸入的一或多個總和)外亦可使用單一總和。為了產生並輸出一或多個部分總和,執行多個向量指令。相比於執行單一向量加法縮減 指令以產生並輸出單一總和,執行多個向量指令習知地增加記憶體使用率及功率消耗。
揭示一種執行一累積式向量算術縮減指令之方法。可在處理器處執行該累積式向量算術縮減指令,以使得能夠對輸入向量執行多個漸進式算術運算(諸如,漸進式加法運算)。該輸入向量可包括以一依序次序儲存之複數個輸入元素。執行該累積式向量算術縮減指令可帶來具有多個輸出元素之一輸出向量。每一輸出元素可係基於將該算術運算應用於該輸入向量之一對應輸入元素及該輸入向量之任何依序先前輸入元素的一結果。因此,該多個輸出值可對應於該複數個輸入元素之多個部分總和,以及所有該複數個輸入元素之一總和。可遮蔽該等輸入元素或該等輸出元素中之至少一者,以防止一或多個輸入元素包括於該累積式向量算術縮減運算中,或防止一或多個輸出元素儲存一累積式向量算術縮減結果。
可基於一分段式向量算術縮減指令之一區段分組大小選擇性地組態一縮減樹以執行一分段式向量算術縮減指令。該縮減樹可包括配置成多個列之複數個加法器。可基於該區段分組大小,選擇性地啟用多個列中之一或多個加法器,且可由該等經選擇性地啟用之加法器產生多個輸出值。藉由對一或多個群組之輸入執行算術(例如,加法)運算,可同時產生該多個輸出值。每一群組可具有由該等經選擇性地啟用之加法器造成的區段分組大小。因此,一單一縮減樹可經組態以執行多個區段向量算術縮減指令,其中每一指令具有一不同區段分組大小。
在一特定實施例中,一種方法包括在一處理器處執行一向量指令。該向量指令包括一包括複數個元素之向量輸入。執行該向量指令包括將該複數個元素中之一第一元素提供為一第一輸出。執行該向量 指令進一步包括對該複數個元素中之該第一元素及一第二元素執行一第一算術運算,以提供一第二輸出。執行該向量指令進一步包括將該第一輸出及該第二輸出儲存於一輸出向量中。
在另一特定實施例中,一種裝置包括一包括一縮減樹之處理器。在識別包括複數個元素之一向量輸入的一向量指令之執行期間,該縮減樹經組態以將該複數個元素中之一第一元素提供為一第一輸出元素。該縮減樹進一步經組態以對該複數個元素中之該第一元素及一第二元素執行一第一算術運算,以提供一第二輸出元素。該縮減樹進一步經組態以將該第一輸出元素及該第二輸出元素儲存於一輸出向量中。
在另一特定實施例中,一種裝置包括用於將複數個元素中之一第一元素提供為一第一輸出之構件。一向量指令指示包括該複數個元素之一向量輸入。該裝置進一步包括用於基於該複數個元素之該第一元素及一第二元素產生一第二輸出之構件。該裝置進一步包括用於將該第一輸出及該第二輸出儲存於一輸出向量中之構件。
在另一特定實施例中,一種非暫時性電腦可讀媒體包括在由一處理器執行時,使得該處理器進行如下操作之指令:將複數個元素中之一第一元素提供為一第一輸出元素;對該複數個元素中之該第一元素及一第二元素執行一算術運算,以提供一第二輸出;及將該第一輸出及該第二輸出儲存於一輸出向量中。該複數個元素包括於由一向量指令所指示之一向量輸入中。
在另一特定實施例中,一種裝置包括一縮減樹,其包括複數個輸入、複數個加法器及複數個輸出。一處理器經組態以在包括一第一區段分組大小之一第一指令的執行期間,及包括一第二區段分組大小之一第二指令的執行期間使用該縮減樹。該縮減樹經組態以同時產生多個輸出元素。
在另一特定實施例中,一種方法包括在一處理器處接收包括一區段分組大小之一向量指令。該處理器包括一縮減樹。該縮減樹包括複數個輸入、複數個算術運算單元及複數個輸出。該方法進一步包括判定該區段分組大小。該方法進一步包括基於該區段分組大小,使用該縮減樹執行該向量指令,以同時產生該複數個輸出。該縮減樹可經選擇性地組態以用於與多個不同區段分組大小一起使用。
在又一特定實施例中,一種方法包括執行一包括複數個輸入元素之向量指令。執行該向量指令包括分組該複數個輸入元素之一第一子集,以形成輸入元素之一第一集合。執行該向量指令進一步包括分組該複數個輸入元素之一第二子集,以形成輸入元素之一第二集合。執行該向量指令進一步包括對該第一集合之輸入元素執行一第一算術運算,並對該第二集合之輸入元素執行一第二算術運算。執行該向量指令進一步包括旋轉一輸出暫存器上之內容,及在旋轉該輸出暫存器之該等內容之後,將該第一算術運算之第一結果及該第二算術運算之第二結果***至該輸出暫存器中。
由該等所揭示實施例中之至少一者所提供的一特定優勢為經組態以在一單一累積式向量算術縮減指令之執行期間產生多個部分結果之一縮減樹。相比於執行多個向量指令以產生一類似輸出,執行該單一累積式向量算術縮減指令可使用記憶體中之較少空間,且可降低功率消耗。由該等所揭示實施例中之至少一者所提供的另一特定優勢為可經組態以在具有一第一區段分組大小之一第一指令的執行期間及具有一第二分組大小之一第二指令的執行期間使用一單一縮減樹的一處理器。相比於在具有不同區段分組大小之多個指令的執行期間使用多個縮減樹,使用該單一縮減樹可降低該處理器之晶片面積及功率消耗。
本發明之其他態樣、優勢及特徵將在審閱包括以下章節之整個 申請案之後變得顯而易見:【圖式簡單說明】、【實施方式】及【申請專利範圍】。
100‧‧‧執行向量指令之說明性程序
101‧‧‧累積式向量算術縮減指令
102‧‧‧元素
104‧‧‧第一元素(s0)
106‧‧‧第二元素(s1)
108‧‧‧第三元素(s2)
110‧‧‧第N元素(s(N-1))
112‧‧‧第一輸出元素
114‧‧‧第二輸出元素
116‧‧‧第三輸出元素
118‧‧‧第N輸出元素
120‧‧‧輸出向量
122‧‧‧輸入向量
180‧‧‧指令名稱
182‧‧‧第一欄位(Vu)
184‧‧‧第二欄位(Vd)
186‧‧‧第三欄位(Q)
188‧‧‧第四欄位(Op)
190‧‧‧第五欄位(sc32)
192‧‧‧第六欄位(sat)
200‧‧‧經組態以執行向量指令之系統
202‧‧‧處理器
204‧‧‧算術邏輯單元(ALU)
206‧‧‧縮減樹
208‧‧‧旋轉單元
210‧‧‧控制邏輯
212‧‧‧多工器
220‧‧‧向量指令
280‧‧‧旋轉向量
300‧‧‧縮減樹
302‧‧‧第一輸入元素
304‧‧‧第二輸入元素
306‧‧‧第一輸出元素
308‧‧‧第二輸出元素
312‧‧‧第一列
320‧‧‧第一加法器
321‧‧‧第二加法器
322‧‧‧第一子加法器
324‧‧‧第二子加法器
326‧‧‧第三子加法器
328‧‧‧第四子加法器
330‧‧‧第一輸入子元素(s0)
332‧‧‧第二輸入子元素(s1)
334‧‧‧第三輸入子元素(s2)
336‧‧‧第四子元素(s3)
338‧‧‧第五輸入子元素(s4)
340‧‧‧第六輸入子元素(s5)
342‧‧‧第七輸入子元素(s6)
344‧‧‧第八輸入子元素(s7)
366‧‧‧第一輸出子元素(d0)
368‧‧‧第二輸出子元素(d1)
370‧‧‧第三輸出子元素(d2)
372‧‧‧第四輸出子元素(d3)
374‧‧‧第五輸出子元素(d4)
376‧‧‧第六輸出子元素(d5)
378‧‧‧第七輸出子元素(d6)
380‧‧‧第八輸出子元素(d7)
400‧‧‧縮減樹
402‧‧‧第三加法器
404‧‧‧第四加法器
406‧‧‧第五加法器
408‧‧‧第六加法器
410‧‧‧第三輸入元素
412‧‧‧第四輸入元素
414‧‧‧第二列
422‧‧‧第三輸出元素
424‧‧‧第四輸出元素
500‧‧‧縮減樹
502‧‧‧輸入元素(s0-s15)
504‧‧‧加法器
506‧‧‧輸出元素(d0-d15)
512‧‧‧第一列
514‧‧‧第二列
516‧‧‧第三列
518‧‧‧第四列
600‧‧‧縮減樹
608‧‧‧第二輸出元素
610‧‧‧輸出向量
614‧‧‧第二列
616‧‧‧第三列
618‧‧‧第三加法器
619‧‧‧第四加法器
625‧‧‧第五子加法器
627‧‧‧第六子加法器
629‧‧‧第七子加法器
700‧‧‧縮減樹
702‧‧‧第一輸入元素(s0)
706‧‧‧第一輸出元素(d0)
712‧‧‧第一加法器
720‧‧‧第一多工器
724‧‧‧第二多工器
730‧‧‧第一飽和邏輯電路
732‧‧‧第一加法器輸入
734‧‧‧第二加法器輸入
744‧‧‧第一控制信號
746‧‧‧第二控制信號
800‧‧‧縮減樹
802‧‧‧輸入元素(s0-s15)
804‧‧‧加法器
806‧‧‧輸出元素(d0-d15)
812‧‧‧第一列
814‧‧‧第二列
816‧‧‧第三列
818‧‧‧第四列
820‧‧‧輸出向量
822‧‧‧輸入向量
830‧‧‧第一路徑
832‧‧‧路徑
834‧‧‧路徑
836‧‧‧路徑
840‧‧‧第二路徑
842‧‧‧路徑
844‧‧‧第三路徑
850‧‧‧第一加法器
852‧‧‧第二加法器
854‧‧‧第三加法器
856‧‧‧第四加法器
900‧‧‧執行向量指令之特定說明性程序
901‧‧‧分段式向量算術縮減指令
902‧‧‧輸入元素
904‧‧‧第一集合之輸入元素
906‧‧‧第二集合之輸入元素
910‧‧‧輸入暫存器
916‧‧‧第一輸出元素
918‧‧‧第二輸出元素
920‧‧‧輸出暫存器
922‧‧‧先前元素
924‧‧‧輸出元素
980‧‧‧指令名稱
982‧‧‧第一欄位(Vu)
984‧‧‧第二欄位(Vd)
986‧‧‧第三欄位(Q)
988‧‧‧第四欄位(Op)
990‧‧‧第五欄位(s2)
992‧‧‧第六欄位(sc32)
994‧‧‧第七欄位(sat)
1000‧‧‧執行旋轉分段式向量算術縮減指令之特定說明性程序
1001‧‧‧旋轉分段式向量算術縮減指令
1016‧‧‧第一輸出元素
1018‧‧‧第二輸出元素
1024‧‧‧輸出元素
1080‧‧‧指令名稱
1082‧‧‧第一欄位(Vu)
1084‧‧‧第二欄位(Vd)
1086‧‧‧第三欄位(Q)
1088‧‧‧第四欄位(Op)
1090‧‧‧第五欄位(s2)
1092‧‧‧第六欄位(sc32)
1094‧‧‧第七欄位(sat)
1096‧‧‧第八欄位(rot)
1100‧‧‧執行具有遮蔽的累積式向量算術縮減指令的第一說明性實施例
1101‧‧‧執行包括遮蔽之累積式向量算術指令的第二說明性實施例
1126‧‧‧經遮蔽輸出向量
1130‧‧‧遮罩
1200‧‧‧執行累積式向量算術縮減指令之方法
1300‧‧‧使用縮減樹執行向量指令之方法
1400‧‧‧執行旋轉分段式向量算術縮減指令之方法
1500‧‧‧器件
1510‧‧‧數位信號處理器(DSP)
1522‧‧‧系統級封裝或系統單晶片器件
1526‧‧‧顯示器控制器
1528‧‧‧顯示器
1530‧‧‧輸入器件
1532‧‧‧記憶體
1534‧‧‧編碼器/解碼器(編碼解碼器)
1536‧‧‧揚聲器
1538‧‧‧麥克風
1540‧‧‧無線介面
1542‧‧‧天線
1544‧‧‧電源供應器
1560‧‧‧電腦可執行指令
1562‧‧‧累積式向量算術縮減指令
1564‧‧‧分段式向量算術縮減指令
1568‧‧‧攝影機介面
1570‧‧‧視訊攝影機
1580‧‧‧縮減樹
圖1為執行累積式向量算術縮減指令之說明性程序的圖式;圖2為用以執行向量指令之系統的說明性實施例之方塊圖;圖3至圖6為縮減樹之說明性實施例的方塊圖;圖7為縮減樹之一部分的說明性實施例之方塊圖;圖8為縮減樹之另一說明性實施例的方塊圖;圖9為執行分段式向量算術縮減指令之說明性程序的圖式;圖10為執行旋轉分段式向量算術縮減指令之說明性程序的圖式;圖11A至圖11B為執行包括遮罩之累積式向量算術縮減指令的說明性程序之圖式;圖12為執行第一累積式向量算術縮減指令之方法的說明性實施例之流程圖;圖13為使用縮減樹執行向量指令之方法的說明性實施例之流程圖;圖14為執行旋轉分段式向量算術縮減指令之方法的說明性實施例之流程圖;及圖15為包括縮減樹之攜帶型器件的方塊圖。
參看圖1,揭示執行向量指令之說明性程序的圖式,且大體上將其指定為100。向量指令可包括累積式向量算術縮減指令,諸如說明性累積式向量算術縮減指令101。累積式向量算術縮減指令101可執行於處理器處,諸如管線式向量處理器,如參考圖2所描述。處理器可接收包括複數個元素102之輸入向量122。處理器可處理輸入向量122 並產生輸出向量120。輸出向量120(例如,儲存於輸出向量120中之多個輸出元素)可係基於累積式向量算術縮減指令101。舉例而言,執行累積式向量算術縮減指令101可藉由將複數個元素102中之特定元素加至在輸入向量122之依序次序上在順序上在特定元素之前的複數個元素102中之一或多個其他元素(例如,相加可為累積的)而產生特定輸出。
複數個元素102(例如,輸入向量122)及輸出向量120可包括N個元素,其中N為大於一之整數。複數個元素102可包括第一元素104(s0)、第二元素106(s1)、第三元素108(s2)及第N元素110(s(N-1))。可以依序次序儲存複數個元素102,諸如「s0、s1、s2、......s(N-1)」,其中s0為第一依序元素且s(N-1)為按照依序次序的最後依序元素。儘管展示四個元素,但複數個元素102中之元素數目(例如,N)可多於或少於四個。在特定實施例中,在執行累積式向量算術縮減指令101之前,使用輸入向量122執行向量置換指令,來以依序次序配置複數個元素102。
執行累積式向量算術縮減指令101可產生儲存於輸出向量120中之多個輸出元素(例如,多個輸出值)。輸出向量120可具有與輸入向量122相同數目(例如,N)之元素。執行累積式向量算術縮減指令101可包括提供N個輸出元素。N個輸出元素可儲存於輸出向量120中。舉例而言,第一輸出元素112、第二輸出元素114、第三輸出元素116及第N輸出元素118可儲存於輸出向量120中。輸出元素112至118可同時儲存於輸出向量120中。舉例而言,在處理器的執行累積式向量算術縮減指令101之單一執行循環期間,第一輸出元素112及第二輸出元素114可儲存於輸出向量120中。
多個輸出元素112至118(例如,N個輸出元素)中之每一輸出元素可係基於對複數個元素102中之一或多個元素所執行的算術運算(例 如,加法運算)。在使用以特定依序次序「s0、s1、s2、......s(N-1)」定序之複數個元素102執行累積式向量算術縮減指令101之後,第一輸出元素112可等於s0、第二輸出元素114可等於s0+s1、第三輸出元素116可等於s0+s1+s2,且第N輸出元素118可等於複數個元素102中之每一元素的總和(s0+s1+......+s(N-1))。舉例而言,執行累積式向量算術縮減指令101可包括將第一元素104提供(例如,產生)為第一輸出元素112,並將第一元素104相加至第二元素106以提供(例如,產生)第二輸出元素114。第一輸出元素112及第二輸出元素114可儲存於輸出向量120之不同輸出元素中。執行累積式向量算術縮減指令101可進一步包括將第一元素104及第二元素106相加至第三元素108,以提供第三輸出元素116,並將第三輸出元素116儲存於輸出向量120中。執行累積式向量算術縮減指令101可進一步包括將複數個元素102中之元素中之每一者相加,以提供第N輸出元素118,並將第N輸出元素118儲存於輸出向量120中。
如圖1中所說明,累積式向量算術縮減指令101可包括指令名稱180(vrcadd)(例如,作業碼)。累積式向量算術縮減指令101亦可包括一或多個欄位,諸如第一欄位182(Vu)、第二欄位184(Vd)、第三欄位186(Q)、第四欄位188(Op)、第五欄位190(sc32)及第六欄位192(sat)。 儲存於第一欄位182中之第一值可指示用於在累積式向量算術縮減指令101之執行期間使用的輸入向量122(例如,向量Vu),且儲存於第二欄位184中之第二值可指示用於在累積式向量算術縮減指令101之執行期間使用的輸出向量120(例如,向量Vd)。儲存於第三欄位186中之第三值可指示遮罩(例如,遮罩Q),諸如參考圖11A至圖11B進一步詳細描述;儲存於第四欄位188中之第四值可指示運算向量(例如,運算向量Op);儲存於第五欄位190中之第五值可指示輸入值類型,諸如參考圖3至圖4進一步詳細描述;且儲存於第六欄位192中之第六值可指示 是否要在累積式向量算術縮減期間執行飽和,如參考圖7所描述。
儘管已描述加法運算,但累積式向量算術縮減指令101並不限於僅執行加法運算。舉例而言,累積式向量算術縮減指令101可指示待對複數個元素102執行之一或多個算術運算。一或多個算術運算可包括加法運算、減法運算或其組合。舉例而言,可使用一或多個加法運算、使用一或多個減法運算,或使用一或多個加法運算及一或多個減法運算之組合執行算術縮減。可由特定欄位(例如,特定參數)(諸如,第四欄位188)中之值指示一或多個算術運算。舉例而言,第四欄位188可包括指向儲存運算向量(例如,指示一或多個算術運算之向量)之記憶體中的位置或指向儲存運算向量之暫存器的指標。運算向量之每一元素可指示在累積式向量算術縮減指令101之執行期間將要對複數個元素102之對應元素執行的特定運算(例如,加法運算或減法運算)。當一或多個算術運算中之至少一者為減法運算時,可在產生多個輸出元素之前對複數個元素102中之一或多個元素求補。舉例而言,在提供第一輸出元素112及第二輸出元素114之前(例如,在產生多個輸出元素之前),可基於累積式向量算術縮減指令101(例如,基於儲存於第四欄位188中之第四值)對複數個元素102中之一或多個元素求補。
在運算期間,處理器可接收累積式向量算術縮減指令101。處理器可使用複數個元素102執行累積式向量算術縮減指令,以產生多個輸出元素並將其儲存於輸出向量120中。多個輸出元素可表示累積式向量算術縮減運算之多個部分結果。
相比於在多個向量指令之執行期間產生多個部分結果,累積式向量算術縮減指令101可藉由在單一向量指令之執行期間產生多個部分結果(例如,多個輸出元素112至118)而提供儲存及功率消耗益處。舉例而言,相比於在多個向量指令之執行期間產生多個部分結果,在 單一向量指令之執行期間產生多個部分結果可使用記憶體或暫存器集中之較少儲存區,且可降低處理器之功率消耗。
圖2為經組態以執行向量指令之系統200的實施例之方塊圖。系統200可包括經組態以接收向量指令220及輸入向量122並提供輸出向量120之處理器202。向量指令220可為圖1之累積式向量算術縮減指令101。替代性地,作為說明性非限制性實例,向量指令220可為分段式向量算術縮減指令(諸如參考圖9所描述)或旋轉分段式向量算術縮減指令(諸如參考圖10所描述)。
處理器202可包括算術邏輯單元(ALU)204及控制邏輯210。ALU 204可包括縮減樹206及旋轉單元208。ALU 204可經組態以接收輸入向量122,並使用縮減樹206對輸入向量122執行一或多個算術運算。縮減樹206可提供輸出向量120。可將輸出向量120提供至由向量指令220所識別之位置,諸如暫存器或在記憶體中之位置。舉例而言,可將輸出向量120提供至基於向量指令220之特定欄位(例如,圖1之第二欄位184)的位置。
ALU 204及縮減樹206可為執行管線之部分。舉例而言,處理器202可為包括一或多個管線之管線式向量處理器。縮減樹206可包括於一或多個管線中。縮減樹206可具有基於(輸入向量122之)輸入元素之數目的數目個級(例如,級深度)。縮減樹206之級數目可對應於輸入元素數目之以二為底之對數。舉例而言,當輸入元素數目為三十二時,縮減樹206可具有五級。縮減樹206可包括配置成一或多個列之複數個算術運算單元。縮減樹206之每一級可對應於縮減樹206之一列算術運算單元。
控制邏輯210可經組態以基於向量指令220(例如,圖1之累積式向量算術縮減指令101)選擇(例如,選擇性地啟用)縮減樹206之複數個加法器中的一或多個加法器,如參考圖3至圖7所描述。選擇性地啟用一 或多個算術運算單元可使得縮減樹206提供(例如,產生)用於***至輸出向量120中之一或多個輸出元素。
旋轉單元208可經組態以接收旋轉向量280,並基於向量指令220選擇性地旋轉旋轉向量280,如參考圖10進一步所描述。旋轉單元208可經組態以在將一或多個輸出元素***(例如,儲存)於輸出向量120中之前,旋轉旋轉向量280。舉例而言,旋轉單元208可與縮減樹206基於輸入向量122產生一或多個輸出元素平行地旋轉旋轉向量280。可將經旋轉旋轉向量及一或多個輸出元素提供至多工器212,以用於***至輸出向量120中(例如,產生輸出向量120)。舉例而言,當輸入向量122及旋轉向量280各自包括十六個元素,且向量指令220的執行使用縮減樹206產生八個輸出元素時,多工器212可選擇該八個輸出元素及來自經旋轉旋轉向量的八個經旋轉元素以用於***至輸出向量120中。可基於具有其他大小之輸入向量122及/或旋轉向量280,或基於產生不同數目之輸出元素的向量指令220之執行來選取其他選擇。在替代性實施例中,旋轉向量280可為輸入向量122,且可將來自輸入向量122之複數個輸入元素提供至旋轉單元208及縮減樹206。
作為說明性實例,旋轉單元208可為旋轉器或筒向量移位器。旋轉向量280可包括複數個先前元素(例如,由於執行先前的向量指令所產生之多個元素)。可由向量指令220識別旋轉向量280。舉例而言,旋轉向量280可儲存於由向量指令220中之欄位識別的位置(諸如,暫存器或在記憶體中之位置)中。在特定實施例中,與旋轉向量280相關聯之第一位置相同於與輸出向量120相關聯之第二位置。舉例而言,向量指令220可將特定暫存器識別為輸出向量120,且可將特定暫存器之先前所儲存元素(例如,內容)用作旋轉向量280。特定暫存器處之先前所儲存值可為先前向量算術縮減指令之結果。在另一實施例中,與旋轉向量280相關聯之第一位置相同於與輸入向量122相關聯之第三 位置。在其他實施例中,可由儲存於向量指令220之另一欄位中的另一值(例如,由儲存於不同於輸出向量120的欄位中之不同值)識別旋轉向量280,或可基於向量指令220之指令名稱(例如,作業碼)預定該旋轉向量。
在運算期間,處理器202可經組態以接收並執行向量指令220,以使用縮減樹206對輸入向量122執行向量算術縮減(例如,累積式向量算術縮減或分段式向量算術縮減)。縮減樹206可對輸入向量122執行向量算術縮減,以同時產生多個結果(例如,在處理器202之單一執行循環期間)。在向量指令220之執行期間,由縮減樹206所產生之多個結果可儲存於輸出向量120中。
相比於在多個向量指令之執行期間產生多個部分結果之其他系統,系統200可藉由在單一向量指令(例如,向量指令220)之執行期間產生多個部分結果(例如,多個結果)而提供儲存及功率消耗上的改良。
參看圖3,揭示縮減樹300之第一說明性實施例的方塊圖。舉例而言,縮減樹300可包括圖2之縮減樹206。縮減樹300可用於執行累積式向量算術指令,諸如圖1之累積式向量算術指令101或圖2之向量指令220。縮減樹300可經組態以接收儲存於輸入向量122中之複數個輸入元素(包括第一輸入元素302及第二輸入元素304),並提供(例如,產生)待儲存於輸出向量120中之複數個輸出元素。輸出向量120可包括第一輸出元素306及第二輸出元素308。
複數個輸入元素中之每一輸入元素及複數個輸出元素中之每一輸出元素可包括一或多個子元素。舉例而言,第一輸入元素302可包括第一複數個輸入子元素330至336(s0至s3),諸如第一輸入子元素330(s0)、第二輸入子元素332(s1)、第三輸入子元素334(s2)及第四子元素336(s3)。第二輸入元素304可包括第二複數個輸入子元素338至 344(s4至s7),諸如第五輸入子元素338(s4)、第六輸入子元素340(s5)、第七輸入子元素342(s6)及第八輸入子元素344(s7)。另外,第一輸出元素306可包括第一複數個輸出子元素366至372(d0至d3),諸如第一輸出子元素366(d0)、第二輸出子元素368(d1)、第三輸出子元素370(d2)及第四輸出子元素372(d3)。第二輸出元素308可包括第二複數個輸出子元素374至380(d4至d7),諸如第五輸出子元素374(d4)、第六輸出子元素376(d5)、第七輸出子元素378(d6)及第八輸出子元素380(d7)。每一輸入元素及輸出元素可具有相同大小(例如,相同數目個位元)。另外,每一輸入子元素可具有相同於每一輸出子元素之大小(例如,相同數目個位元)。舉例而言,每一輸入元素(例如,第一輸入元素302)及每一輸出元素可為六十四個位元,且可包括四個十六位元子元素(例如,輸入子元素330至336)。在替代性實施例中,輸入子元素330至344中之每一者為個別輸入元素,且輸出子元素366至380中之每一者為個別輸出元素,使得輸入向量122包括複數個輸入元素330至344,且輸出向量120包括複數個輸出元素366至380。
縮減樹300可包括複數個算術運算單元。在特定實施例中,複數個算術運算單元可為複數個加法器,包括第一加法器320及第二加法器321。在其他實施例中,複數個算術運算單元可包括減法器或加法器及減法器之組合。複數個加法器可包括(例如,配置成)一或多列之加法器。舉例而言,複數個加法器可包括(例如,配置成)第一列312。儘管描繪為包括單一列,但複數個加法器可包括一個以上列。
可基於所接收累積式向量算術縮減指令,選擇性地啟用複數個加法器中之一或多個加法器,如參考圖7所描述。未經選擇性地啟用之加法器(在圖3中由陰影所說明,諸如第二加法器321)可經組態以輸出加法器處所接收之特定輸入(例如,將零值加至特定輸入),如參考圖7所描述。舉例而言,第二加法器321可經組態以接收第一輸入元素 302,並輸出待儲存於輸出向量120中之第一輸入元素302。選擇性地啟用之加法器(在圖3中由未加陰影之加法器說明,諸如第一加法器320)可經組態以執行加法運算。舉例而言,第一加法器320可基於第一輸入元素302及第二輸入元素304執行加法運算。第一加法器320可產生等於第一輸入元素302與第二輸入元素304之總和的加法器輸出。 可將加法器輸出提供為待儲存於輸出向量120中之輸出元素(例如,第二輸出元素308)。經由選擇性啟用,複數個加法器可產生(例如,提供)儲存於輸出向量120中之複數個輸出元素。
複數個輸入元素可具有由累積式向量算術縮減指令(例如,由儲存於圖1之累積式向量算術縮減指令101之第五欄位190中的值)指示的輸入類型。輸入類型可識別實數、虛數或複數(例如,實數及虛數之組合),且可另外與元素大小相關聯。當輸入類型為實數時,複數個元素中之每一子元素可表示實數值。當輸入類型為虛數時,元素中之每一子元素可表示虛數值。當輸入類型為複數時,對於每一元素,至少一子元素可表示實數值且至少一其他子元素可表示虛數值。因此,縮減樹300可支援多個不同輸入類型,諸如六十四位元實數、六十四位元虛數、三十二位元實數、三十二位元虛數、十六位元實數、十六位元虛數、三十二位元複數、十六位元複數、一或多個其他輸入類型,或其任何組合。
舉例而言,當輸入類型為十六位元複數時,每一輸入元素302及304可為六十四個位元,每一輸入子元素s0、s2、s4及s6可表示十六位元實數值,且每一輸入子元素s1、s3、s5及s7可表示十六位元虛數值。因此,每一六十四位元輸入元素可與兩個十六位元複數輸入子元素(例如,第一對s0及s1,及第二對s2及s3)相關聯。作為另一實例,當輸入類型識別三十二位元複數時,每一輸入元素302及304可為六十四個位元,第一對輸入子元素s0及s1以及第二對輸入子元素s4及s5可 表示三十二位元實數值,且第三對輸入子元素s2及s3以及第四對輸入子元素s6及s7可表示三十二位元虛數值。因此,每一六十四位元輸入元素可與一個三十二位元複數輸入子元素(例如,第一對輸入子元素s0及s1以及第二對輸入子元素s2及s3,或第三對輸入子元素s4及s5以及第四對輸入子元素s6及s7)相關聯。在每一實例中,複數個輸出元素可包括與輸入元素類似類型之輸出元素及輸出子元素(例如,輸出元素可具有由輸入類型所識別之類型)。
複數個加法器中之每一加法器可包括多個子加法器。舉例而言,第一加法器320可包括第一子加法器322、第二子加法器324、第三子加法器326及第四子加法器328。在特定實施例中,第一加法器320為經分割以執行四個十六位元加法運算之六十四位元加法器(例如,每一子加法器322至328表示第一加法器320之一分割)。在替代性實施例中,每一子加法器322至328為十六位元加法器,且第一加法器320表示四個十六位元加法器之一個群組。複數個加法器中之每一加法器可具有類似於第一加法器320之組態(例如,第二加法器321可包括四個子加法器)。儘管描述六十四位元加法器及十六位元子加法器,但可使用其他大小之加法器及子加法器,(諸如)基於輸入向量122之輸入元素的大小的加法器及子加法器。
每一加法器可經組態以經由多個子加法器以交插方式執行多個加法運算。舉例而言,第一加法器320可經組態以使用第一子加法器322將第一輸入子元素330(s0)與第五輸入子元素338(s4)相加、使用第二子加法器324將第二輸入子元素332(s1)與第六輸入子元素340(s5)相加、使用第三子加法器326將第三輸入子元素334(s2)與第七輸入子元素342(s6)相加,及使用第四子加法器328將第四輸入子元素336(s3)與第八輸入子元素344(s7)相加。因此,縮減樹300可經組態以使用第一輸入元素302及第二輸入元素304逐子元素地以交插方式執行累積式向 量算術縮減運算。逐子元素地執行交插式加法可使得縮減樹能夠對具有不同資料類型(例如,實數、虛數或複數)之子元素執行加法運算。
可將複數個加法器中之底部列(例如,第一列312)的多個加法器輸出提供為輸出元素(例如,輸出元素306及308)並儲存於輸出向量120中。舉例而言,可將第二加法器321之每一子加法器的每一輸出提供為第一輸出元素306之對應輸出子元素,且可將第一加法器320之每一子加法器322至328的每一輸出提供為第二輸出元素308之對應輸出子元素。多個輸出元素306及308(例如,多個輸出子元素366至380)可表示累積式向量算術縮減之多個部分結果。
執行所接收的累積式向量算術縮減指令可產生具有由累積式向量算術縮減指令所識別之輸入類型的累積式向量算術縮減指令之多個部分結果。舉例而言,當累積式向量算術縮減指令與複數運算相關聯(例如,指示複數運算),且輸入類型為十六位元複數(例如,輸入子元素s0、s2、s4及s6表示實數值且輸入子元素s1、s3、s5及s7表示虛數值)時,執行累積式向量算術縮減指令可包括產生第一輸出元素306之第一實數子元素(例如,第一輸出子元素366(d0)),及第一輸出元素306之第一虛數子元素(例如,第二輸出子元素368(d1))。執行累積式向量算術縮減指令可進一步包括產生第二輸出元素308之第二實數子元素(例如,第五輸出子元素374(d4)),及第二輸出元素308之第二虛數子元素(例如,第六輸出子元素376(d5))。因此,當輸入類型識別輸入元素302及304為複數時,輸出元素306及308可為複數。
在運算期間,縮減樹300可用於執行所接收累積式向量算術縮減指令。在執行累積式向量算術縮減指令期間,可基於累積式向量算術縮減指令,選擇性地啟用複數個加法器中之一或多個加法器,以產生包括輸出元素306及308(例如,包括多個輸出子元素366至380(d0至d7))之多個輸出元素。舉例而言,可選擇性地完全或至少部分啟用第 一加法器320(例如,可基於累積式向量算術縮減指令,選擇性地啟用子加法器322至328中之一或多者)。在累積式向量算術縮減指令之執行期間,可將複數個加法器之一或多個輸出提供為用於儲存於輸出向量120中之輸出元素306及308(例如,多個輸出子元素366至380(d0至d7))。
參看圖4,揭示縮減樹400之第二說明性實施例的方塊圖。可在執行累積式向量算術縮減指令(諸如,圖1之累積式向量算術縮減指令101或圖2之向量指令220)期間使用縮減樹400。作為說明性非限制性實例,縮減樹400可包括圖2之縮減樹206或圖3之縮減樹300。舉例而言,縮減樹400可說明圖3之縮減樹300的擴展,以支援輸入向量122具有四個輸入元素之實施例。縮減樹400可包括複數個加法器,包括第一加法器320、第二加法器321及加法器402至408,該等加法器經組態以基於累積式向量算術縮減指令而被選擇性地啟用以產生輸出向量120。儘管圖4說明複數個加法器,但縮減樹400可包括複數個其他算術運算單元。
輸入向量122可包括第一輸入元素302、第二輸入元素304、第三輸入元素410及第四輸入元素412。每一輸入元素可包括複數個輸入子元素。舉例而言,第一輸入元素302可包括輸入子元素s0至s3、第二輸入元素304可包括輸入子元素s4至s7、第三輸入元素410可包括輸入子元素s8至s11,且第四輸入元素412可包括輸入子元素s12至s15。輸出向量120可包括四個輸出元素。舉例而言,輸出向量120可包括第一輸出元素306、第二輸出元素308、第三輸出元素422及第四輸出元素424。每一輸出元素可包括複數個輸出子元素。舉例而言,第一輸出元素306可包括輸出子元素d0至d3、第二輸出元素308可包括輸出子元素d4至d7、第三輸出元素422可包括輸出子元素d8至d11,且第四輸出元素424可包括輸出子元素d12至d15。
複數個加法器可包括(例如,配置成)複數個列,諸如第一列312及第二列414。儘管展示了兩列,但在其他實施例中,(諸如)基於輸入向量122中之輸入元素的數目,複數個加法器可包括較多列或較少列。儘管將每一列312、414說明為具有四個加法器,但在其他實施例中,(諸如)基於輸入向量122中之輸入元素的數目,每一列可具有大於四個或小於四個加法器。加法器402至408中之每一者可包括四個子加法器,如參考圖3之加法器320及321所描述。
可基於所接收累積式向量算術縮減指令,選擇性地啟用複數個加法器中之一或多個加法器,如參考圖7所描述。未被選擇性地啟用之加法器(在圖4中由陰影所說明,諸如第二加法器321及第三加法器402)可經組態以輸出在加法器處所接收之特定輸入(例如,將零值加至特定輸入),如關於圖7所描述。舉例而言,第二加法器321可經組態以接收第一輸入元素302,並將第一輸入元素302輸出至第二列414中之加法器。選擇性地啟用之加法器(在圖4中由未加陰影之加法器說明,諸如第一加法器320、第四加法器404、第五加法器406及第六加法器408)可經組態以執行加法運算。舉例而言,第一加法器320可基於第一輸入元素302及第二輸入元素304執行加法運算,且第四加法器404可經組態以基於第三輸入元素410及第四輸入元素412執行加法運算。第五加法器406可基於第一加法器320之第一加法器輸出及第三加法器402之第二加法器輸出(例如,第三輸入元素410之值)執行加法運算,且第六加法器408可基於第一加法器輸出及第四加法器404之第三加法器輸出執行加法運算。
可將用於第二列414之加法器輸出提供為待儲存於輸出向量120中之多個輸出元素(例如,輸出元素306、308、422及424)。經由選擇性啟用,複數個加法器可產生(例如,提供)儲存於輸出向量120中之複數個輸出元素。輸出元素306、308、422及424(例如,輸出子元素 d0至d15)可表示累積式向量算術縮減之一或多個部分產物。舉例而言,第一輸出元素306可為第一輸入元素302,第二輸出元素308可為第一輸入元素302與第二輸入元素304之總和,第三輸出元素422可為第一輸入元素302、第二輸入元素304及第三輸入元素410之總和,且第四輸出元素424可為第一輸入元素302、第二輸入元素304、第三輸入元素410及第四輸入元素412之總和。可逐子元素地產生輸出元素306、308、422及424,其中以交插方式執行加法運算以產生輸出子元素d0至d15,如參考圖3所解釋。舉例而言,輸出子元素d8可等於輸入子元素s0、s4及s8之總和,且輸出子元素d12可等於輸入子元素s0、s4、s8及s12之總和。可以類似方式產生每一輸出子元素。
儘管圖4說明單一縮減樹400(例如,縮減網路),但在其他實施例中,縮減樹400可邏輯地分割成以交插方式運算之複數個累積式平行縮減網路。舉例而言,在替代性實施例中,每一累積式縮減網路可包括每一加法器之特定子加法器(例如,第一累積式縮減網路可包括每一加法器之對應第一子加法器)。每一累積式縮減網路可與其他累積式縮減網路平行地進行運算,且來自每一累積式縮減網路之結果可儲存於輸出向量120中。舉例而言,縮減樹400可邏輯地分割成四個十六位元累積式縮減網路。在另一實例中,縮減樹400可邏輯地分割成兩個三十二位元累積式縮減網路。
在運算期間,縮減樹400可用於執行所接收累積式向量算術縮減指令。在執行累積式向量算術縮減指令期間,可基於累積式向量算術縮減指令選擇性地啟用複數個加法器中之一或多個加法器,以產生多個輸出元素306、308、422及424。在累積式向量算術縮減指令之執行期間,多個輸出元素306、308、422及424可儲存於輸出向量120中。
參看圖5,揭示縮減樹500之第三說明性實施例的方塊圖。可在累積式向量算術指令(諸如,圖1之累積式向量算術縮減指令101或圖2 之向量指令220)之執行期間使用縮減樹500。作為說明性非限制性實例,縮減樹500可包括圖2之縮減樹206、圖3之縮減樹300或圖4之縮減樹400。縮減樹500可經組態以接收儲存於輸入向量122中之複數個輸入元素502,並提供(例如,產生)待儲存於輸出向量120中之複數個輸出元素506。
縮減樹500可包括複數個輸入元素502、複數個加法器504及複數個輸出元素506。儘管圖5說明複數個加法器504,但縮減樹500可包括複數個其他算術運算單元。複數個輸入元素502可包括輸入向量122之輸入元素s0至s15。複數個輸出元素506可包括輸出向量120之輸出元素d0至d15。複數個輸入元素502(s0至s15)可以依序次序(諸如「s0、s1、s2......s15」)定序,其中s0為按照依序次序之第一依序元素且s15為最後依序元素。複數個輸出元素506(d0至d15)可配置成類似依序次序「d0、d1、d2......d15」。
複數個輸入元素502之每一輸入元素可具有相同大小。舉例而言,複數個輸入元素502之每一輸入元素可為六十四個位元。複數個輸出元素506之每一輸出元素亦可具有相同大小。舉例而言,複數個輸出元素506之每一輸出元素可為六十四個位元。在特定實施例中,每一輸入元素可具有相同於每一輸出元素之大小(例如,六十四個位元)。輸入元素之數目可等於輸出元素之數目。舉例而言,輸入向量122可具有十六個輸入元素,且輸出向量120可具有十六個輸出元素。元素之數目及大小係說明性的;輸入元素及輸出元素可具有不同於所說明的其他大小,且向量(例如,輸入向量122及輸出向量120)可具有不同於所說明的其他大小(例如,其他數目之元素)。儘管未說明,但每一輸入元素可包括多個輸入子元素(例如,四個輸入子元素),且每一輸出元素可包括四個輸出子元素,如參考圖3至圖4所描述。基於由累積式向量算術縮減指令所指示之類型,每一輸入元素及每一輸出元 素可為實數、虛數或複數,諸如關於圖3至圖4所描述。
複數個加法器504可配置成多個列之加法器,包括第一列512、第二列514、第三列516及第四列518。儘管說明了四個列之加法器,但在其他實施例中,(諸如)基於輸入元素及輸出元素之數目,縮減樹500可包括(例如,配置成)少於四列或四列以上。複數個加法器504中之每一加法器可具有相同大小。舉例而言,複數個加法器504中之每一加法器可為六十四位元加法器。儘管未展示,但複數個加法器504中之每一加法器可包括複數個子加法器,且可經組態以逐子元素地以交插方式執行加法運算,諸如參考圖3至圖4所描述。
可將每一加法器輸出提供至下一列上之相同行中的加法器,且亦可如圖5中所展示地將其路由至其他加法器,以使得縮減樹500能夠產生多個輸出元素506(d0至d15)。舉例而言,可將第一列512之第一加法器(例如,輸入元素s1下方的第一列512之加法器)的輸出路由至第二列514之第二加法器(例如,輸入元素s2下方的第二列514之加法器),及第二列514之第三加法器(例如,輸入元素s3下方的第二列514之加法器)。可將第三加法器之輸出路由至第三列516之第四加法器、第三列516之第五加法器、第三列516之第六加法器及第三列516之第七加法器(例如,分別為在輸入元素s4至s7下方的第三列516之加法器)。另外,可將第七加法器之輸出路由至第四列518之八個加法器(例如,輸入元素s8至s15下方的第四列518之加法器)。
可基於累積式向量算術縮減指令,選擇性地啟用複數個加法器504中之一或多個加法器。舉例而言,可由控制邏輯(未展示)(諸如,圖2之控制邏輯210)選擇性地啟用一或多個加法器(如由圖5之未加陰影加法器所說明)。未經啟用之一或多個加法器(如由圖5之加陰影加法器所展示)可經組態以輸出所接收輸入(例如,將零值加至特定輸入),如參考圖7所描述。
縮減樹500可經組態以基於多個輸入元素s0至s15及累積式向量算術縮減指令同時產生多個輸出元素d0至d15。舉例而言,縮減樹500可經組態以將第一輸入元素s0提供為第一輸出元素d0,將第一輸入元素s0相加至第二輸入元素s1以提供第二輸出元素d1,及將第一輸出元素d0及第二輸出元素d1儲存於輸出向量120中。縮減樹500可經組態以將第一元素s0及第二元素s1相加至第三元素s2以提供第三輸出元素d2。另外,縮減樹500可經組態以藉由產生每一輸入元素s0至s15之總和而產生輸出元素d15。可以類似方式將輸出元素d3至d14產生為部分累積總和。
在運算期間,縮減樹500可用於執行所接收的累積式向量算術縮減指令。在累積式向量算術縮減指令之執行期間,縮減樹500可自輸入向量122接收複數個輸入元素502。在累積式向量算術縮減指令之執行期間,可選擇性地啟用複數個加法器504中之多個加法器,以提供(例如,產生)多個輸出元素d0至d15,且可將多個輸出元素d0至d15儲存於輸出向量120中。
參看圖6,揭示縮減樹600之第四說明性實施例的方塊圖。可在執行累積式向量算術縮減指令(諸如,圖1之累積式向量算術縮減指令101或圖2之向量指令220)期間使用縮減樹600。縮減樹600可包括圖2之縮減樹206、圖3之縮減樹300、圖4之縮減樹400、圖5之縮減樹500或其組合。縮減樹600可經組態以基於累積式向量算術縮減指令自輸入向量122接收多個輸入元素,並產生輸出向量610之多個輸出元素。儘管圖6說明複數個加法器,但縮減樹600可包括複數個其他算術運算單元。
縮減樹600可自輸入向量122接收多個輸入元素,包括第一輸入元素302及第二輸入元素304。第一輸入元素302可包括輸入子元素s0至s3,且第二輸入元素304可包括輸入子元素s4至s7。輸入元素及輸 入子元素可具有由累積式向量算術縮減指令所指示之大小。舉例而言,輸入元素302及304可為六十四個位元,且輸入子元素s0至s7可為十六個位元。輸出向量610可包括第一輸出元素306及第二輸出元素608。第一輸出元素306可包括輸出元素d0至d3,且第二輸出元素608可包括輸出元素d4至d7。輸出元素及輸出子元素可具有由累積式向量算術縮減指令所指示之大小。舉例而言,輸出元素306及608可為六十四個位元,且輸出子元素d0至d7可為十六個位元。儘管描述為包括兩個元素,但輸入向量122及輸出向量610可包括任何數目之元素(例如,任何數目之子元素),且可具有不同於六十四個位元之其他大小。
縮減樹600可包括經組態以基於累積式向量算術縮減指令而被選擇性地啟用以產生輸出向量610之複數個加法器,包括第一加法器320、第二加法器321、第三加法器618及第四加法器619。複數個加法器可包括(例如,配置成)複數個列,其包括第一列312、第二列614及第三列616。複數個加法器中之每一加法器可包括複數個子加法器。舉例而言,複數個加法器中之每一加法器可為六十四位元加法器,且可包括四個十六位元子加法器。可基於累積式向量算術縮減指令,選擇性地啟用複數個加法器中之一或多個加法器。舉例而言,可如參考圖3所描述地選擇性地啟用第一加法器320(例如,子加法器322至328)。
第二列614中之第三加法器618可包括經組態以將第一子加法器322之輸出與第三子加法器326之輸出相加的第五子加法器625。第三加法器618亦可包括經組態以將第二子加法器324之輸出與第四子加法器328之輸出相加的第六子加法器627。藉由將子加法器輸出相加,第三加法器618可基於子加法器322、324、326及328之輸出應用算術縮減以產生子加法器625及627之兩個經縮減輸出。類似地,第三列616 之第四加法器619可基於子加法器625及627之輸出,使用第七子加法器629應用算術縮減以產生額外經縮減值。因此,第二輸出元素608可包括基於複數個輸入子元素s0至s7之十六位元縮減值,以及其他部分值。舉例而言,輸出子元素d4可等於輸入子元素s0與輸入子元素s4之總和,輸出子元素d5可等於輸入子元素s1與輸入子元素s5之總和,輸出子元素d6可等於輸入子元素s0、s2、s4及s6之總和,且輸出子元素d7可等於輸入子元素s0至s7之總和。
在運算期間,縮減樹600可用於執行累積式向量算術縮減指令。 在累積式向量算術縮減指令之執行期間,可基於累積式向量算術縮減指令選擇性地啟用複數個加法器中之一或多個加法器,以產生用於儲存於輸出向量610中之多個輸出元素306及608(例如,多個輸出子元素d0至d7)。
參看圖7,揭示縮減樹700之一部分的說明性實施例之方塊圖。 縮減樹700之該部分可為圖2之縮減樹206、圖3之縮減樹300、圖4之縮減樹400、圖5之縮減樹500或圖6之縮減樹600的一部分。可在執行向量指令(諸如,圖1之累積式向量算術縮減指令101、圖2之向量指令220、參考圖9所描述之分段式向量算術縮減指令901,或參考圖10所描述之旋轉分段式向量算術縮減指令1001)期間使用縮減樹700之該部分。縮減樹700之該部分可經組態以基於向量指令自輸入向量接收第一輸入元素702(s0),並產生用於儲存於輸出向量中之第一輸出元素706(d0)。
縮減樹700之該部分可包括第一多工器720,該第一多工器720耦接至第一加法器712且經組態以將第一輸入元素702(s0)接收為第一mux輸入且將零輸入(例如,具有等於邏輯零之值的輸入)接收為第二mux輸入。儘管說明第一加法器712,但在其他實施例中,縮減樹700之該部分可包括不同算術運算單元(例如,減法單元)。第一多工器 720可經組態以自控制邏輯(諸如,圖2之控制邏輯210)接收第一控制信號744。第一多工器720可經組態以基於第一控制信號744在第一mux輸入與第二mux輸入之間選擇,以將mux輸出提供為第一加法器712之第一加法器輸入732。舉例而言,當第一控制信號744為特定值時,第一多工器720可將第一輸入元素702作為第一加法器輸入732提供至第一加法器712。當第一控制值744為不同值時,第一多工器720可將零輸入作為第一加法器輸入732提供至第一加法器712。因此,控制邏輯(例如,藉由設定第一控制信號744)可經組態以基於向量指令而啟用複數個加法器之子集以接收零輸入(例如,等於邏輯零之值)。
縮減樹700之該部分可包括第一飽和邏輯電路730,該第一飽和邏輯電路730耦接至第一加法器712且經組態以使第一加法器712之輸出飽和。使第一加法器712之輸出飽和可防止第一加法器712之輸出超過最大值或降至最小值以下。第一飽和邏輯電路730可經組態以基於第一加法器712之輸出而輸出經飽和輸出(例如,值)。舉例而言,當第一加法器712之輸出介於最小值與最大值之間時,經飽和輸出可具有等於第一加法器712之輸出的值。當第一加法器712之輸出超過最大值時,經飽和輸出可具有最大值之值,且當第一加法器712之輸出值小於最小值時,經飽和輸出可具有最小值之值。
縮減樹700之部分可包括耦接至第一飽和邏輯電路730之第二多工器724。第二多工器724可經組態以將第一飽和邏輯電路730之經飽和輸出接收為第三mux輸入,及將第一多工器720之輸出接收為第四mux輸入。第二多工器724可經組態以基於第二控制信號746在第三mux輸入與第四mux輸入之間選擇,以將mux輸出提供為待儲存於輸出向量中之第一輸出元素706。當第二控制信號746為特定值時,第二多工器724可略過第一加法器712(例如,將第四mux輸入提供為mux輸出)。當並未略過第一加法器712時,第一加法器712將第一加法器輸 入732與第二加法器輸入734相加。第二加法器輸入734可為自另一加法器之輸出所接收的值、零值或某其他值。藉由選擇第四mux輸入,第二多工器724可略過使用第一加法器輸入732及第二加法器輸入734之加法運算的執行,且可將第一多工器720之輸出提供為mux輸出。因此,控制邏輯可經組態以基於向量指令略過第一加法器712。在替代性實施例中,可藉由停用時脈輸入(未展示)略過第一加法器712。
儘管僅展示一個輸入元素,但縮減樹700之部分可對任何數目之輸入元素進行操作。舉例而言,縮減樹700之部分可包括額外電路(例如,多工器、加法器、飽和邏輯電路及連接器),以對具有一個以上輸入元素之輸入向量進行操作。舉例而言,縮減樹700之部分可包括額外列之加法器,其中每一額外加法器包括對應第一多工器、飽和邏輯電路及第三多工器。可由來自控制邏輯之額外控制信號控制額外電路及加法器。因此,縮減樹700之部分可包括於圖3至圖6之縮減樹300至600中之每一者中。
在向量指令之執行期間,縮減樹700之部分可經組態以接收第一輸入元素702,並產生用於儲存於輸出向量中之第一輸出元素706。第一多工器720可基於第一控制信號744,將零輸入提供至第一加法器712。第一飽和邏輯電路730可飽和第一加法器712之輸出。第二多工器724可基於第二控制信號746略過第一加法器712。
參看圖8,揭示縮減樹800之第五說明性實施例的方塊圖。縮減樹800可包括圖2之縮減樹206、圖3至圖6之縮減樹300至600中之一或多者(如本文中進一步所描述)、圖7之縮減樹700之部分或其任何組合。可在執行分段式向量算術縮減指令(諸如,參考圖9所描述之分段式向量算術縮減指令901,或參考圖10所描述之旋轉分段式向量算術縮減指令1001)期間使用縮減樹800。可基於包括於分段式向量算術縮減指令中之區段分組大小選擇性地組態縮減樹800以使得能夠執行向 量指令。區段分組大小可與複數個輸入元素802之一或多個群組的大小相關聯。舉例而言,執行分段式向量算術縮減指令可包括將複數個輸入元素802分組成具有區段分組大小之一或多個群組,之後對一或多個群組執行一或多個分段式向量算術縮減運算。縮減樹800可經組態以啟用各自具有不同區段分組大小之複數個分段式向量算術縮減指令的執行。舉例而言,縮減樹800可經組態以啟用具有為二之區段分組大小的第一分段式向量算術縮減指令及具有為四之區段分組大小的第二分段式向量算術縮減指令之執行。儘管描述了為二及四之區段分組大小,但縮減樹800可支援其他區段分組大小。
縮減樹800可包括複數個輸入元素802(例如,複數個輸入元素s0至s15)、複數個加法器804,及經組態以輸出多個輸出元素806(d0至d15)之複數個輸出(例如,底部列之複數個加法器輸出)。儘管圖8說明複數個加法器804,但在其他實施例中縮減樹800可包括複數個其他算術運算單元。處理器(諸如,圖2之處理器210)可經組態以在包括第一區段分組大小之第一分段式向量算術縮減指令之執行期間及包括第二區段分組大小之第二分段式向量算術縮減指令之執行期間使用縮減樹800。縮減樹800可經組態以同時產生多個輸出元素806(d0至d15)。舉例而言,可在與第一分段式向量算術縮減指令之執行相關聯的單一處理器執行循環期間產生多個輸出元素806(d0至d15)。
縮減樹800可經組態以自輸入向量822接收複數個輸入元素802(s0至s15)。縮減樹800可經組態以產生待儲存於輸出向量820中之多個輸出元素806(d0至d15)。複數個輸入元素802(s0至s15)可以依序次序(諸如「s0、s1、s2......s15」)定序,其中s0為按照依序次序之第一依序元素且s15為最後依序元素。複數個輸出元素806(d0至d15)可以類似依序次序(諸如「d0、d1、d2......d15」)定序,其中d0為第一依序元素且d15為最後依序元素。
縮減樹800可具有相同於輸出元素之輸入元素數目,且每一輸入元素可具有相同於每一輸出元素之大小。舉例而言,輸入向量822可包括十六個六十四位元輸入元素,且輸出向量820可包括十六個六十四位元輸出元素。儘管未展示,但每一輸入元素可包括複數個十六位元輸入子元素,且每一輸出元素可包括複數個十六位元輸出子元素,諸如參考圖3至圖4所描述。複數個輸入元素及複數個輸出元素可表示實數值、虛數值或其組合。在特定實施例中,當輸入類型為複數時,複數個輸入元素中之每一輸入元素可包括對應實數部分及對應虛數部分。可藉由以交插方式對一或多個實數部分執行第一算術運算,並對一或多個虛數部分執行第二算術運算而產生每一輸出元素,諸如參考圖3至圖4所描述。
儘管描述六十四位元元素及十六位元子元素,但每一輸入元素及每一輸出元素可具有除了六十四個位元之外的大小,且每一輸入子元素及每一輸出子元素可具有除了十六個位元之外的大小。
複數個加法器804可配置成多個列之加法器,如所展示。複數個加法器804可包括(例如,配置成)第一列812、第二列814、第三列816及第四列818。儘管說明四列加法器,但(諸如)基於輸入元素之數目及輸出元素之數目,縮減樹800可替代地包括(例如,配置成)少於四列或多於四列。複數個加法器804中之每一加法器可具有相同大小。舉例而言,複數個加法器804中之每一加法器可為六十四位元加法器。儘管未展示,但複數個加法器804中之每一加法器可包括複數個子加法器,且可經組態以逐子元素地以交插方式執行加法運算,諸如參考圖3至圖4所描述。
可經由複數個路徑830至844(如由圖8中之虛線路徑所展示)選擇性地路由來自一或多列之加法器的一或多個加法器輸出,以使得縮減樹800能夠產生多個輸出元素806(d0至d15)。舉例而言,可經由第一 路徑830將由第一加法器850所產生之第一值提供至第二加法器852、可經由第二路徑840將由第二加法器852所產生之第二值提供至第三加法器854,且可藉由第三路徑844將由第三加法器854所產生之第三值提供至第四加法器856。可經由路徑832至836及842在一或多個加法器之間類似地提供其他值。可基於分段式向量算術縮減指令之區段分組大小,選擇性地啟用複數個路徑830至844中之每一路徑。舉例而言,基於分段式算術縮減指令(例如,基於區段分組大小),可藉由將由第一加法器850所產生之第一值選擇為至第二加法器852之加法器輸入而啟用第一路徑830,且可藉由將零輸入選擇為第二加法器852之加法器輸入而停用第一路徑830。複數個加法器804中之一或多個加法器可具有經組態以選擇加法器輸入之對應多工器(未展示),諸如,參考圖7所描述的自零輸入及由對應路徑所提供之值中選擇加法器輸入的第一多工器720。對應多工器可基於控制信號啟用對應路徑(例如,選擇由對應路徑所提供之輸入)或停用對應路徑(例如,選擇零輸入),如參考圖7所描述。
處理器可包括經組態以基於分段式向量算術縮減指令之區段分組大小,選擇性地組態縮減樹800之控制邏輯(諸如,圖2之控制邏輯210)。選擇性地組態縮減樹800可包括基於區段分組大小選擇性地啟用一或多個加法器(由圖8中之一或多個未加陰影加法器所說明)及選擇對應加法器輸入。舉例而言,控制邏輯可經組態以在第一分段式向量算術縮減指令之執行期間,基於第一區段分組大小選擇性地啟用複數個加法器804之第一子集並選擇加法器輸入之對應第一子集(例如,縮減樹800可經組態為第一組態),及在第二分段式向量算術縮減指令之執行期間,基於第二區段分組大小選擇性地啟用複數個加法器804之第二子集並選擇加法器輸入之對應第二子集(例如,縮減樹800可經組態為第二組態)。縮減樹800之特定組態可與啟用加法器之特定子集 並選擇加法器輸入之特定子集相關聯。控制邏輯可使用一或多個控制信號選擇性地啟用複數個加法器804之特定子集並選擇加法器輸入之對應子集(例如,選擇性地啟用複數個路徑830至844之特定子集),如參考圖7所描述。舉例而言,當區段分組大小為二時,可停用複數個路徑830至844中之每一者(例如,對於與複數個路徑830至844中之每一者相關聯的每一加法器輸入可選擇零值),且僅可啟用第一列812中之未加陰影加法器。當區段分組大小為四時,僅可啟用路徑之第一子集(830至836)及列812至814中之未加陰影加法器。當區段分組大小為八時,僅可啟用路徑之第二子集(830至842)及列812至816中之未加陰影加法器。當區段分組大小為十六時,可啟用所有複數個路徑830至844及列812至818之所有未加陰影加法器。因此,控制邏輯可經組態以基於區段分組大小選擇性地啟用加法器之子集及路徑之子集(例如,選擇對應加法器輸入之子集)。
藉由選擇性地啟用複數個加法器804中之一或多個加法器,並選擇一或多個對應加法器輸入,縮減樹800可經組態以基於複數個輸入元素802(s0至s15)及包括於分段式向量算術縮減指令(例如,第一分段式向量算術縮減指令或第二分段式向量算術縮減指令)中之區段分組大小而同時產生多個輸出元素806(d0至d15)。舉例而言,當區段分組大小為二時,縮減樹800可產生(例如,提供)等於s0+s1之第一輸出元素d1、等於s2+s3之第二輸出元素d3、等於s4+s5之第三輸出元素d5、等於s6+s7之第四輸出元素d7、等於s8+s9之第五輸出元素d9、等於s10+s11之第六輸出元素d11、等於s12+s13之第七輸出元素d13及等於s14+s15之第八輸出元素d15。當區段分組大小為四時,縮減樹800可產生等於s0+s1+s2+s3之第二輸出元素d3、等於s4+s5+s6+s7之第四輸出元素d7、等於s8+s9+s10+s11之第六輸出元素d11及等於s12-s13+s14+s15之第八輸出元素d15。當區段分組大小為八時,縮減樹 800可產生等於s0+s1+s2+s3+s4+s5+s6+s7之第四輸出元素d7,及等於s8+s9+s10+s11+s12-s13+s14+s15之第八輸出元素d15。當區段分組大小為十六時,縮減樹800可產生等於每一輸入元素s0至s15之總和的第八輸出元素d15。因此,基於區段分組大小,縮減樹800可經組態以選擇性地啟用多個列812至818之一或多個加法器並選擇一或多個對應加法器輸入,以同時產生多個輸出元素806。
在運算期間,縮減樹800可用於執行分段式向量算術縮減指令。 在分段式向量算術縮減指令之執行期間,縮減樹800可自輸入向量822接收複數個輸入元素802(s0至s15)。舉例而言,在第一分段式向量算術縮減指令之執行期間,可將複數個輸入元素802(s0至s15)分組成具有第一區段分組大小之一或多個第一群組,及在第二分段式向量算術縮減指令之執行期間,可將該複數個輸入元素分組成具有第二分組大小之一或多個第二群組。在分段式向量算術縮減指令之執行期間,可使用複數個輸出(例如,第四列818之複數個加法器輸出),選擇性地啟用複數個加法器804中之一或多個加法器以產生多個輸出元素806(d0至d15),且可將多個輸出元素806(d0至d15)儲存於輸出向量820中。
縮減樹800使得能夠使用單一縮減樹執行具有第一區段分組大小之第一分段式向量算術縮減指令,及具有第二區段分組大小之第二分段式向量算術縮減指令。相比於包括用於在具有不同區段分組大小之多個指令的執行期間使用之多個縮減樹的處理器,使用單一縮減樹可使得能夠減少器件大小及功率消耗。
參看圖9,揭示執行向量指令之特定說明性程序的圖式,且將其大體上指定為900。向量指令可包括一分段式向量算術縮減指令,諸如一說明性分段式向量算術縮減指令901。分段式向量算術縮減指令901可執行於處理器(諸如,圖2之處理器202)處,該處理器包括縮減 樹,諸如圖2之縮減樹206、圖3至圖6之縮減樹300至600中之一或多者、圖7之縮減樹700的部分、圖8之縮減樹800,或其任何組合。處理器可接收包括儲存於一輸入暫存器910中之複數個輸入元素902的輸入向量。處理器可處理複數個輸入元素902,並同時產生一輸出暫存器920之多個輸出元素924(例如,內容)。
多個輸出元素924可係基於分段式向量算術縮減指令901。舉例而言,藉由基於分段式向量算術縮減指令901之區段分組大小將複數個輸入元素902中之一特定輸入元素加至複數個輸入元素902中之一或多個其他輸入元素,執行分段式向量算術縮減指令901可產生一特定輸出元素。
輸入暫存器910可包括複數個輸入元素902。舉例而言,複數個輸入元素902(例如,輸入向量)可包括N個元素,其中N為大於一之整數。複數個輸入元素902可包括輸入元素s0至s(N-1)。複數個輸入元素902可以依序次序(諸如「s0、s1、s2......s(N-1)」)儲存,其中s0為第一依序輸入元素且s(N-1)為最後依序輸入元素。儘管展示五個輸入元素,但複數個輸入元素902之數目(例如,N)可包括多於五個元素或少於五個元素。
在執行分段式向量算術縮減指令901之前,輸出暫存器920可包括多個先前元素922。多個先前元素922可包括先前元素d0至d(N-1)。多個先前元素922可包括於另一向量(諸如,圖2之旋轉向量280)或不同向量中。多個先前元素922可儲存於由分段式向量算術縮減指令901所識別之位置中,諸如另一暫存器或在記憶體中之一位置。多個先前元素可包括於分段式向量算術縮減指令901中,或可由儲存於分段式向量算術縮減指令901之欄位或參數中的值(諸如,由指標)指示。在執行分段式向量算術縮減指令之前,可按照依序次序儲存多個先前元素922。舉例而言,可按照特定依序次序「d0、d1、d2、d3......d(N- 1)」(例如,d0為第一依序先前元素且d(N-1)為最後的依序先前元素)儲存多個先前元素922。
程序900說明具有為二之說明性區段分組大小的分段式向量算術縮減指令901之執行。執行分段式向量算術縮減指令可包括將複數個輸入元素902分組成多個群組,諸如第一集合之輸入元素904及第二集合之輸入元素906。可對第一集合之輸入元素904執行第一算術(例如,加法)運算,以產生等於s0+s1之第一結果,且可對第二集合之輸入元素906執行第二算術(例如,加法)運算,以產生等於s2+s3之第二結果。可將第一結果(s0+s1)***至輸出暫存器920之第一輸出元素916中,且可將第二結果(s2+s3)***至輸出暫存器920之第二輸出元素918中。當所產生之結果數目小於輸出暫存器920中之輸出元素數目時,複數個先前元素922中之一或多個先前元素可保留於輸出暫存器920中(例如,可未經覆寫)。舉例而言,當將第一輸出元素916及第二輸出元素918***至輸出暫存器920中時,複數個輸出元素可包括複數個輸出元素924中之先前元素d0及d2。當分段式向量算術縮減指令901之區段分組大小為不同大小時,複數個輸入元素902可經分組成不同集合之輸入元素,且可產生不同結果。
如圖9中所說明,分段式向量算術縮減指令901可包括描繪為名稱vraddw之指令名稱980(例如,作業碼)。分段式向量算術縮減指令901亦可包括第一欄位982(Vu)、第二欄位984(Vd)、第三欄位986(Q)、第四欄位988(Op)、第五欄位990(s2)、第六欄位992(sc32)及第七欄位994(sat)。儲存於第一欄位982中之第一值可指示如儲存於輸入暫存器910中之輸入向量。在替代性實施例中,儲存於第一欄位982中之第一值可指示一對輸入向量(例如,向量Vu及額外向量Vv),其中該對向量之第一向量(例如,Vu)與實數相關聯,且該對向量之第二向量(例如,Vv)與虛數相關聯。第二欄位984中之第二值可指示用於在 分段式向量算術縮減指令901之執行期間使用的儲存在輸出暫存器920中之輸出向量。儲存於第三欄位986中之第三值可指示遮罩(例如,遮罩Q),諸如參考圖11A至圖11B所描述;儲存於第四欄位988中之第四值可指示運算向量(例如,運算向量Op);儲存於第五欄位990中之第五值可指示區段分組大小(例如,「s2」可指示為二之區段分組大小);儲存於第六欄位992中之第六值可指示輸入值之類型(例如,「sc32」可指示三十二位元複數輸入類型);且儲存於第七欄位994中之第七值可指示是否將在分段式向量算術縮減指令之執行期間進行飽和。儘管描述七個欄位,但分段式向量算術縮減指令可包括較多欄位或較少欄位。
儘管已描述加法運算,但分段式向量算術縮減指令901並不限於僅執行加法運算。舉例而言,分段式向量算術縮減指令901可指示待對複數個輸入元素902執行之一或多個算術運算。一或多個算術運算可包括加法運算及減法運算。可由特定欄位(例如,特定參數)(諸如,第四欄位988)中之值指示一或多個算術運算。舉例而言,第四欄位988可包括指向儲存運算向量(例如,指示一或多個算術運算之向量)之記憶體中的位置或指向儲存運算向量之暫存器的指標。運算向量之每一元素可指示待在分段式向量算術縮減指令901之執行期間對複數個輸入元素902中之對應元素執行的特定運算(例如,加法運算或減法運算)。舉例而言,執行分段式向量算術縮減指令可包括基於區段分組大小將複數個輸入元素902分組成一或多個輸入群組,並對一或多個輸入群組執行一或多個算術運算以產生多個輸出元素924。當一或多個算術運算中之至少一者為減法運算時,可在產生多個輸出元素924之前,對複數個輸入元素902中之一或多個元素求補。
在運算期間,處理器可接收分段式向量算術縮減指令901。處理器可使用複數個輸入元素902執行分段式向量算術縮減指令901,以產 生多個輸出元素924並將其儲存於輸出暫存器920中。多個輸出元素924可表示基於將複數個輸入元素902分組成一或多個輸入元素群組的結果,該分組係基於分段式向量算術縮減指令901之區段分組大小。
藉由基於分段式向量算術縮減指令901之區段分組大小產生多個輸出元素924,分段式向量算術縮減指令901使得能夠使用單一縮減樹執行具有不同區段分組大小之多個分段式向量算術縮減指令。相比於包括用於在具有不同區段分組大小之多個指令的執行期間使用之多個縮減樹的處理器,使用單一縮減樹可使得能夠減少器件大小及功率消耗。
參看圖10,揭示執行旋轉分段式向量算術縮減指令之特定說明性程序的圖式,且將其大體上指定為1000。旋轉分段式向量算術縮減指令可為單一向量指令,且可包括說明性旋轉分段式向量算術縮減指令1001。旋轉分段式向量算術縮減指令1001可執行於處理器(諸如,圖2之處理器202)處,該處理器包括縮減樹,諸如圖2之縮減樹206、圖3至圖6之縮減樹300至600中之一或多者、圖7之縮減樹700的部分、圖8之縮減樹800或其任何組合。處理器可接收包括儲存於輸入暫存器910中之複數個輸入元素902的輸入向量。處理器可處理複數個輸入元素902,並同時產生輸出暫存器920之多個輸出元素1024(例如,內容)。
旋轉分段式向量算術縮減指令1001可包括描繪為名稱vraddw之指令名稱1080(例如,作業碼)。旋轉分段式向量算術縮減指令1001亦可包括第一欄位1082(Vu)、第二欄位1084(Vd)、第三欄位1086(Q)、第四欄位1088(Op)、第五欄位1090(s2)、第六欄位1092(sc32)、第七欄位1094(sat)及第八欄位1096(rot)。儘管說明八個欄位,但旋轉分段式向量算術縮減指令1001可包括較多欄位或較少欄位。欄位1082至1094可對應於圖9之分段式向量算術縮減指令901之欄位。儲存於第八欄位 1096中之值可指示是否將發生旋轉。舉例而言,儲存於第八欄位1096中之值可指示待發生之旋轉的方向及大小。旋轉可具有等於一個輸入元素之大小的旋轉量(例如,六十四個位元),且可為向左。在其他實施例中,儲存於第八欄位1096中之值可指示旋轉之其他大小及方向。作為另一實例,儲存於第八欄位1096中之值可指示不發生旋轉(例如,旋轉分段式向量算術縮減指令1001可類似於圖9之分段式向量算術縮減指令901進行操作)。在特定實施例中,儲存於第九欄位中之值(未展示)可指示在將算術運算之結果儲存於輸出暫存器920中之前,是否將覆寫(例如,設定為等於零)輸出暫存器920中之複數個先前元素922(例如,內容)。在替代性實施例中,儲存於不同欄位(例如,第八欄位1096)中之值可指示是否將覆寫輸出暫存器920中之複數個先前元素922。
可根據分段式向量算術縮減指令901之執行加上旋轉步驟而進行旋轉分段式向量算術縮減指令1001之執行。舉例而言,旋轉分段式向量算術縮減指令1001之執行可包括在產生算術運算之結果之前,判定是否旋轉輸出暫存器920中之複數個先前元素922。回應於關於要旋轉複數個先前元素922之第一判定(例如,基於儲存於第八欄位1096中之值),可按由第八欄位1096指示之旋轉量旋轉輸出暫存器920中之複數個先前元素922(例如,內容)。舉例而言,當旋轉量為六十四個位元且方向為向右時,可將複數個先前元素922向右旋轉一個先前元素。因此,在旋轉分段式向量算術縮減指令1001之執行期間(例如,在產生結果並將其儲存於輸出暫存器920中之前),輸出暫存器920之第一依序元素可儲存d(N-1),輸出暫存器920之第二依序元素可儲存d(0),輸出暫存器920之第三依序元素可儲存d(1),且輸出暫存器920之最後依序元素可儲存d(N-2)。作為另一實例,當方向為向左時,可按旋轉量將複數個先前元素922向左旋轉。回應於關於不要旋轉複數個先前 元素922的第二判定(例如,基於儲存於第八欄位1096中之值),可將複數個先前元素922維持為先前依序次序(例如,d(0)......d(N-1))。舉例而言,當儲存於第八欄位1096中之值為零值或空值時(例如,當第八欄位1096並不包括於旋轉分段式向量算術縮減指令1001中時),可不旋轉複數個先前元素922。因此,可基於旋轉分段式向量算術縮減指令1001,選擇性地(例如,視情況)旋轉複數個先前元素922。
執行旋轉分段式向量算術縮減指令1001亦可包括判定是否要覆寫複數個先前元素922。舉例而言,可基於旋轉分段式向量算術縮減指令1001(例如,基於儲存於第九欄位中之值),將複數個先前元素922中之並未由算術運算之結果替換的每一元素設定為零值(例如,覆寫)。可由縮減樹中兩輸入皆接收零值之對應加法器(如由圖8之第一列加法器812中的輸入元素s0下方之加法器所說明)將特定先前元素設定為零值。在其他實施例中,可將複數個先前元素922設定為(例如,覆寫為)不同值。
在已旋轉輸出暫存器920中之複數個先前元素922之後,可基於複數個輸入元素902產生算術運算結果,並將結果***至輸出暫存器920中。旋轉分段式向量算術縮減指令1001之執行可包括將複數個輸入元素902分組成多個群組,諸如第一集合之輸入元素904及第二集合之輸入元素906。可對第一集合之輸入元素904執行第一算術(例如,加法)運算以產生第一結果s0+s1,且可對第二集合之輸入元素906執行第二算術(例如,加法)運算以產生第二結果s2+s3。可將第一結果(s0+s1)***至輸出暫存器920之第一輸出元素1016中,且可將第二結果(s2+s3)***至輸出暫存器920之第二輸出元素1018中。第一輸出元素1016及第二輸出元素1018可為輸出暫存器920之不同輸出元素。
第一集合之輸入元素904中之輸入元素的第一數目及第二集合之輸入元素906中之輸入元素的第二數目可係基於由旋轉分段式向量算 術縮減指令1001所識別之區段分組大小。舉例而言,元素之第一數目與元素之第二數目可相同。當所產生結果之數目小於輸出暫存器920中之輸出元素數目時,複數個先前元素922中之一或多個經旋轉先前元素(或當在產生結果之前覆寫複數個先前元素922時,為一或多個零值)可保留於輸出暫存器920中(例如,可未經覆寫)。舉例而言,當將第一輸出元素1016及第二輸出元素1018***至輸出暫存器920中時,複數個輸出元素可包括複數個輸出元素1024中之經旋轉先前元素d(N-1)及d1。當分段式向量算術縮減指令1001之區段分組大小為不同大小時,複數個輸入元素902可經分組成不同集合之輸入元素,且可產生不同結果。
在運算期間,處理器可接收旋轉分段式向量算術縮減指令1001。處理器可使用複數個輸入元素902執行旋轉分段式向量算術縮減指令1001,以產生多個輸出元素1024並將其儲存於輸出暫存器920中。可基於旋轉分段式向量算術縮減指令1001,選擇性地旋轉輸出暫存器之內容(例如,複數個先前元素922),且可基於基於區段分組大小而分組成一或多個輸入元素群組的複數個輸入元素902產生結果,且可將結果***至輸出暫存器920中。
參看圖11A,揭示執行具有遮蔽的累積式向量算術縮減指令的第一說明性實施例之圖式,且將其大體上指定為1100。在說明性非限制性實例中,累積式向量算術縮減指令可為圖1之累積式向量算術縮減指令101。累積式向量算術縮減指令可識別遮罩1130(例如,向量遮罩)。如參考圖1所解釋,遮罩1130可由儲存於累積式向量算術縮減指令101之第三欄位186(Q)中的值指示。舉例而言,遮罩1130可包括於累積式向量算術縮減指令中,或可由包括於指令中之指標指示,其中指標指向儲存有遮罩1130之資料結構中的位置或暫存器。可基於遮罩1130之對應元素等於零,遮蔽複數個元素102之個別值(例如,元 素)(例如,作為零值提供至用於產生一或多個輸出元素之縮減樹)。替代性地,可基於遮罩1130之元素等於一而遮蔽該等值。
在累積式向量算術縮減指令之執行期間,可在將第一元素104提供為第一輸出元素112之前,將遮罩1130應用於複數個元素102。應用遮罩1130可包括取決於遮罩1130之對應遮罩值,為複數個元素102中之特定元素提供零值。如所展示,在將遮罩1130應用於複數個元素102之前,輸入向量122包括元素s0、s1、s2及s(N-1)。在應用遮罩1130之後,複數個元素102包括s0、零(基於遮罩1130之對應元素等於零,其被提供以代替s1)、s2及s(N-1)。在另一實施例中,將遮罩1130應用於複數個元素可包括修改輸入向量122中之複數個元素102中之一或多個元素的值。在將遮罩1130應用於複數個元素102之後,可如參考圖1所解釋地進行累積式向量算術縮減指令之執行。因此,輸出向量120可包括等於s0之第一輸出元素112、等於0+s0(例如,s0)之第二輸出元素114、等於s2+s0之第三輸出元素116,及等於s0+s2+......+s(N-1)之第N輸出元素118。
參看圖11B,揭示執行包括遮蔽之累積式向量算術指令的第二說明性實施例之圖式,且將其大體上指定為1101。執行累積式向量算術縮減指令可包括將遮罩1130應用於輸出向量120。
在累積式向量算術縮減指令之執行期間,可將遮罩1130應用於輸出向量120以產生經遮蔽輸出向量1126。如所展示地應用遮罩1130可帶來具有元素s0、零、s0+s1+s2,及s0+s1+s2+......+s(N-1)之經遮蔽輸出向量1126。儘管圖11B展示在將輸出元素儲存於輸出向量120中之後應用遮罩1130,但可在填入輸出向量120之前將遮罩1130應用於算術運算之結果。舉例而言,可基於遮罩1130防止將一或多個輸出(例如,s0+s1)儲存於輸出向量120中,使得並不覆寫輸出向量120中之先前值。在特定實施例中,輸出向量120及經遮蔽輸出向量1126可儲存 於相同位置處,諸如相同暫存器處。
另外,亦可將圖11A至圖11B中所展示之遮蔽以類似方式應用於圖9之分段式向量算術縮減指令901,或圖10之旋轉分段式向量算術縮減指令1001。舉例而言,在分段式向量算術縮減指令901之執行期間,可在分組複數個元素102之前將遮罩1130應用於複數個元素102。作為另一實例,在旋轉分段式向量算術縮減指令1001之執行期間,可在旋轉儲存有輸出向量120之輸出暫存器的內容之後(例如,在旋轉輸出向量120之內容之後),將遮罩1130應用於輸出向量120。
參看圖12,說明執行累積式向量算術縮減指令之方法1200的說明性實施例之流程圖。累積式向量算術縮減指令可為圖1之累積式向量算術縮減指令101,或圖2之向量指令220。在特定實施例中,可由圖2之處理器202執行方法1200。
在1202處,可在處理器處執行向量指令。向量指令可為圖1之累積式向量算術縮減指令101。向量指令可包括包括複數個輸入元素之向量輸入。舉例而言,向量輸入可為圖1至圖6之輸入向量122。向量輸入可包括圖1之複數個輸入元素102。複數個輸入元素(例如,向量輸入)可按依序次序儲存。可由向量指令識別向量輸入。舉例而言,可由儲存於特定欄位(例如,參數)(諸如圖1之向量算術縮減指令101之第三欄位184)中之值識別向量輸入。
在1204處,可將複數個輸入元素中之第一輸入元素提供為第一輸出元素。第一輸入元素可為圖1之第一元素104(s0),且第一輸出元素可為圖1之第一輸出元素112(s0)。舉例而言,可藉由將零輸入(例如,等於邏輯零之值)加至第一輸入元素將第一輸入元素提供(例如,產生)為第一輸出元素。可基於來自包括於處理器中之控制邏輯的控制信號,加上零輸入,諸如參考圖7所描述。
在1206處,可對複數個輸入元素中之第一輸入元素及第二輸入 元素執行第一算術運算,以提供(例如,產生)第二輸出元素。舉例而言,第一算術運算可為加法運算。在其他實施例中,第一算術運算可為減法運算。第二輸入元素可為圖1之第二元素106(s1),且第二輸出元素可為圖1之第二輸出元素114(s0+s1)。舉例而言,可將等於第一輸入元素與第二輸入元素之總和的值產生(例如,提供)為第二輸出元素。每一輸入元素及每一輸出元素可包括複數個子元素,且可逐子元素地以交插方式執行加法,諸如參考圖3至圖4所描述。
在1208處,可將第一輸出元素及第二輸出元素儲存於輸出向量中。輸出向量可為圖1至圖6之輸出向量120。舉例而言,可將第一輸出元素(例如,等於第一輸入元素之值)及第二輸出元素(例如,等於第一輸入元素與第二輸入元素之總和的值)儲存於輸出向量之不同輸出元素中,如圖1中所展示。
可以此方式產生額外輸出元素。舉例而言,可對複數個輸入元素中之第一輸入元素、第二輸入元素及第三輸入元素執行第二算術運算,以產生(例如,提供)第三輸出元素。因此,可藉由對複數個輸入元素中之特定元素及複數個元素中之在依序次序上在順序上在特定輸入元素之前的一或多個其他輸入元素執行特定算術運算而產生特定輸出元素。
根據方法1200,可產生多個輸出元素(例如,第一輸出元素及第二輸出元素),且該等輸出元素可表示累積式向量算術縮減之多個部分結果。相比於在多個向量指令之執行期間產生多個部分結果,藉由在單一向量指令之執行期間產生多個部分結果,方法1200可提供儲存及功率消耗方面的改良。
參看圖13,說明使用縮減樹執行向量指令之方法1300的說明性實施例之流程圖。向量指令可為圖2之向量指令220,或圖9之分段式向量算術縮減指令901。在特定實施例中,可由圖2之處理器202執行 方法1300。
在1302處,可在處理器處接收包括區段分組大小之向量指令。舉例而言,向量指令可為具有由第五欄位990所指示之區段分組大小的圖9之分段式向量算術縮減指令901。處理器可包括縮減樹。縮減樹可包括圖2之縮減樹206、圖3至圖6之縮減樹300至600、圖7之縮減樹700的部分、圖8之縮減樹800或其任何組合。縮減樹可包括複數個輸入、複數個算術運算單元,及複數個輸出。舉例而言,作為說明性實例,複數個輸入可為圖8之複數個輸入元素802,或圖9之複數個輸入元素902;複數個算術運算單元可為圖8之複數個加法器804;且複數個輸出可為圖8之多個輸出元素806,或圖9之多個輸出元素924。
在1304處,可判定區段分組大小。舉例而言,可基於向量指令之特定欄位(諸如,圖9之第五欄位990),判定區段分組大小。在向量指令之執行期間,區段分組大小可指示與複數個輸入元素相關聯之一或多個群組的大小。
在1306處,可基於區段分組大小,使用縮減樹執行向量指令以同時產生複數個輸出。舉例而言,執行向量指令可包括將複數個輸入元素分組成具有區段分組大小之一或多個群組,並對一或多個群組執行一或多個算術運算以產生複數個輸出。可基於向量縮減指令,在處理器之單一處理循環期間產生複數個輸出。
縮減樹可係可選擇性地組態的,以用於與多個不同區段分組大小一起使用。舉例而言,縮減樹之組態可與特定區段分組大小相關聯。縮減樹之組態可與啟用算術運算單元之特定子集及選擇算術運算單元輸入之特定子集(例如,所啟用的路徑之特定子集)相關聯,諸如圖8之複數個加法器804及複數個路徑830至844之子集。在判定向量指令中之區段分組大小之後,處理器可判定縮減樹是否經組態以用於與該區段分組大小一起使用(例如,縮減樹是否處於與區段分組大小相 關聯之特定組態)。回應於判定縮減樹並未經組態以用於與區段分組大小一起使用,可基於區段分組大小變更縮減樹之組態。舉例而言,基於區段分組大小,可啟用複數個算術運算單元中之一或多個算術運算單元,且可選擇一或多個算術運算單元輸入。回應於判定縮減樹經組態以用於與區段分組大小一起使用,可使用縮減樹執行向量指令。舉例而言,當縮減樹已經組態處於與區段分組大小相關聯之特定組態時,可無需在執行向量指令之前變更縮減樹。
根據方法1300,縮減樹可係可選擇性地組態的,以用於與具有不同區段分組大小之多個指令一起使用。相比於包括用於在執行具有不同區段分組大小之多個指令期間使用之多個縮減樹的處理器,使用單一縮減樹可使得能夠減少器件大小及功率消耗。
參看圖14,說明執行旋轉分段式向量算術縮減指令之方法1400的說明性實施例之流程圖。旋轉分段式向量算術縮減指令可為圖2之向量指令220,或圖10之旋轉分段式向量算術縮減指令1001。在特定實施例中,可由圖2之處理器202執行方法1400。
在1402處,可執行包括複數個輸入元素之向量指令。舉例而言,向量指令可為旋轉分段式向量算術縮減指令1001,且複數個輸入元素可為圖10之複數個輸入元素902。
在1404處,可分組複數個輸入元素之第一子集,以形成第一集合之輸入元素。舉例而言,第一集合之輸入元素可為圖10之第一集合之輸入元素904。可基於包括於旋轉分段式向量算術縮減指令中之區段分組大小,分組複數個輸入元素之第一子集,以形成第一集合之輸入元素。舉例而言,可由旋轉分段式向量算術縮減指令之特定欄位(例如,參數)(諸如圖10之旋轉分段式向量算術縮減指令1001之第五欄位1090)識別區段分組大小。
在1406處,可分組複數個輸入元素之第二子集,以形成第二集 合之輸入元素。舉例而言,第二集合之輸入元素可為圖10之第二集合之輸入元素906。可基於包括於旋轉分段式向量算術縮減指令中之區段分組大小,分組複數個輸入元素之第二子集,以形成第二集合之輸入元素。在特定實施例中,輸入元素的第一集合之大小可與輸入元素的第二集合之大小相同。在替代性實施例中,輸入元素的第一集合之大小及輸入元素的第二集合之大小可為不同大小。
在1408處,可對第一集合之輸入元素執行第一算術運算。舉例而言,可對第一集合之輸入元素執行第一加法運算。在特定實施例中,可由運算向量指示第一算術運算。可由儲存於旋轉分段式向量算術縮減指令之特定欄位(例如,參數)(諸如圖10之旋轉分段式向量算術縮減指令1001之第四欄位1088)中的值指示運算向量。
在1410處,可對第二集合之輸入元素執行第二算術運算。舉例而言,可對第二集合之輸入元素執行第二加法運算。在特定實施例中,可由運算向量指示第二算術運算。
在1412處,可旋轉輸出暫存器之內容。舉例而言,輸出暫存器可為圖10之輸出暫存器1020,且可含有複數個先前元素(例如,內容),諸如圖10之複數個先前元素922。可由儲存於旋轉分段式向量算術縮減指令之特定欄位(例如,參數)(諸如圖10之旋轉分段式向量算術縮減指令1001之第二欄位1084)中的值識別輸出暫存器。作為說明性實例,複數個先前元素可為由先前所執行向量指令所產生之結果,或可為複數個空值。在特定實施例中,複數個先前元素可為先前所執行旋轉分段式向量算術縮減指令之結果。旋轉輸出暫存器之內容可包括基於儲存於旋轉分段式向量算術縮減指令之特定欄位(例如,參數)(諸如,圖10之旋轉分段式向量算術縮減指令1001之第八欄位1096(例如,旋轉欄位))中的值,選擇性地(例如,視情況)旋轉輸出暫存器之內容。舉例而言,儲存於旋轉欄位中之值可指示旋轉之大小及旋轉之 方向,且可按該旋轉之大小並在該旋轉方向上旋轉輸出暫存器之內容。可基於旋轉分段式向量算術縮減指令之特定欄位,覆寫(例如,設定為等於零值)輸出暫存器之內容。
在1414處,在旋轉輸出暫存器之內容之後,可將第一算術運算之第一結果及第二算術運算之第二結果***至輸出暫存器中。舉例而言,可將第一結果***至輸出暫存器之第一輸出元素中,且可將第二結果***至輸出暫存器之第二輸出元素中。第一輸出元素可為圖10之第一輸出元素1016,且第二輸出元素可為圖10之第二輸出元素1018。第一結果及第二結果可覆寫先前儲存於輸出暫存器中(並在1412處經旋轉)之值。
根據方法1400,對於多個區段分組大小,可經由使用單一縮減樹執行單一向量指令來執行旋轉及分段式向量算術縮減。相比於包括用於在執行具有不同區段分組大小之多個指令期間使用之多個縮減樹的處理器,使用單一縮減樹可使得能夠減少器件大小及功率消耗。
參看圖15,描繪包括縮減樹1580之器件(例如,通信器件)之特定說明性實施例的方塊圖,該縮減樹用於執行累積式向量算術縮減指令1562及分段式向量算術縮減指令1564,且將該器件大體上指定為1500。作為說明性實例,縮減樹1580可包括圖2之縮減樹206、圖3至圖6之縮減樹300至600、圖7之縮減樹700的部分,或圖8之縮減樹800。器件1500可為無線電子器件,且可包括耦接至記憶體1532之處理器,諸如,數位信號處理器(DSP)1510。
處理器1510可經組態以執行儲存於記憶體1532(例如,電腦可讀儲存媒體)中之電腦可執行指令1560(例如,一或多個指令之程式)。指令1560可包括累積式向量算術縮減指令1562,及/或分段式向量算術縮減指令1564。累積式向量算術縮減指令1562可為圖1之累積式向量算術縮減指令101,或圖2之向量指令220。分段式向量算術縮減指令 1564可為圖2之向量指令220,圖9之分段式向量算術縮減指令901,或圖10之旋轉分段式向量算術縮減指令1001。
攝影機介面1568耦接至處理器1510,且亦耦接至攝影機(諸如,視訊攝影機1570)。顯示器控制器1526耦接至處理器1510,及顯示器1528。編碼器/解碼器(編碼解碼器)1534亦可耦接至處理器1510。揚聲器1536及麥克風1538可耦接至編碼解碼器1534。無線介面1540可耦接至處理器1510及天線1542,使得可將經由天線1542及無線介面1540所接收之無線資料提供至處理器1510。
在特定實施例中,處理器1510可經組態以執行儲存於非暫時性電腦可讀媒體(諸如,記憶體1532)處之電腦可執行指令1560,該等指令可執行以使得電腦(諸如,處理器1510)將複數個元素中之第一元素提供為第一輸出元素。電腦可執行指令1560可包括累積式向量算術縮減指令1562。複數個元素可為圖1之複數個元素102,且可儲存於輸入向量(諸如圖1至圖6之輸入向量122)中。可進一步由電腦執行電腦可執行指令1560,以對複數個元素中之第一元素及第二元素執行算術運算,以提供第二輸出。可進一步由電腦執行電腦可執行指令1560,以將第一輸出及第二輸出儲存於輸出向量中。輸出向量可為圖1至圖6之輸出向量120。
在特定實施例中,處理器1510可經組態以執行儲存於非暫時性電腦可讀媒體(諸如,記憶體1532)處之電腦可執行指令1560,可執行該等指令以使得電腦(諸如,處理器1510)接收包括區段分組大小之向量指令。向量指令可為分段式向量算術縮減指令1564。可進一步執行電腦可執行指令1560以判定區段分組大小。可進一步執行電腦可執行指令1560以基於區段分組大小使用縮減樹執行向量指令來同時產生複數個輸出。作為說明性實例,縮減樹可包括圖2之縮減樹206、圖3至圖6之縮減樹300至600、圖7之縮減樹700的部分,或圖8之縮減樹 800。縮減樹可包括複數個輸入、複數個算術運算單元,及複數個輸出。縮減樹可係可選擇性地組態的,以用於與多個不同區段分組大小一起使用。
在特定實施例中,處理器1510、顯示器控制器1526、記憶體1532、編碼解碼器1534、無線介面1540及攝影機介面1568包括於系統級封裝或系統單晶片器件1522中。在特定實施例中,輸入器件1530及電源供應器1544耦接至系統單晶片器件1522。此外,在特定實施例中,如圖15中所說明,顯示器1528、輸入器件1530、揚聲器1536、麥克風1538、天線1542、視訊攝影機1570及電源供應器1544在系統單晶片器件1522外部。然而,顯示器1528、輸入器件1530、揚聲器1536、麥克風1538、天線1542、視訊攝影機1570及電源供應器1544中之每一者可耦接至系統單晶片器件1522之組件(諸如,介面或控制器)。
可由場可程式化閘陣列(FPGA)器件、特殊應用積體電路(ASIC)、諸如中央處理單元(CPU)之處理單元、數位信號處理器(DSP)、控制器、另一硬體器件、韌體器件或其任何組合實施圖12至圖14之方法1200至1400。作為一實例,可由執行儲存於記憶體1532中之指令的處理器起始圖12之方法1200、圖13之方法1300、圖14之方法1400或其任何組合,如關於圖15所描述。
結合所描述實施例中之一或多者,揭示可包括用於將複數個元素中之第一元素提供為第一輸出之構件的裝置。用於提供之構件可包括縮減樹之一或多個加法器,諸如圖2之縮減樹206、圖3至圖6之縮減樹300至600、圖7之縮減樹700的部分、圖8之縮減樹800、經組態以將第一元素提供為第一輸出之一或多個其他器件或電路,或其任何組合。裝置可進一步包括用於基於複數個元素中之第一元素及第二元素產生第二輸出之構件。用於產生之構件可包括縮減樹之一或多個加法器,諸如圖2之縮減樹206、圖3至圖6之縮減樹300至600、圖7之縮減 樹700的部分、圖8之縮減樹800、經組態以基於第一元素及第二元素產生第二輸出之一或多個其他器件或電路,或其任何組合。裝置可進一步包括用於將第一輸出及第二輸出儲存於輸出向量中之構件。用於儲存之構件可包括圖2之縮減樹206、圖3至圖6之縮減樹300至600、圖7之縮減樹700的部分、圖8之縮減樹800、經組態以將輸出儲存於輸出向量中之一或多個其他器件或電路,或其任何組合。
裝置亦可包括用於飽和第二輸出之構件。用於飽和第二輸出之構件可包括圖7之第一飽和邏輯電路730或第二飽和邏輯電路732、經組態以飽和輸出之一或多個其他器件或電路,或其任何組合。
結合所描述實施例中之一或多者,揭示可包括用於基於向量指令同時產生複數個輸出之構件的裝置。用於同時產生之構件可包括圖2之縮減樹206、圖3至圖6之縮減樹300至600、圖7之縮減樹700的部分、圖8之縮減樹800、經組態以基於向量指令同時產生複數個輸出之一或多個其他器件或電路,或其任何組合。可由處理器在包括第一區段分組大小之第一指令的執行期間及包括第二區段分組大小之第二指令的執行期間使用用於同時產生之構件。
所揭示實施例中之一或多者可實施於可包括機頂盒、娛樂單元、導航器件、通信器件、個人數位助理(PDA)、固定位置資料單元、行動位置資料單元、行動電話、蜂巢式電話、電腦、攜帶型電腦、平板電腦、桌上型電腦、監視器、電腦監視器、電視、調諧器、無線電、衛星無線電、音樂播放器、數位音樂播放器、攜帶型音樂播放器、視訊播放器、數位視訊播放器、數位視訊光碟(DVD)播放器、攜帶型數位視訊播放器或其組合之系統或裝置(諸如器件1500)中。作為另一說明性非限制性實例,系統或裝置可包括遠端單元,諸如行動電話、手持式個人通信系統(PCS)單元、諸如個人資料助理之攜帶型資料單元、具備全球定位系統(GPS)功能之器件、導航器件、諸如儀 錶讀取設備之固定位置資料單元,或儲存或擷取資料或電腦指令之任何其他器件,或其任何組合。儘管圖1至圖15中之一或多者可說明根據本發明之教示的系統、裝置及/或方法,但本發明並不限於此等所說明系統、裝置及/或方法。本發明之實施例可適於用於包括積體電路(包括記憶體及晶片上電路)之任何器件中。
所揭示實施例中之一或多者可實施於可包括通信器件、固定位置資料單元、行動位置資料單元、行動電話、蜂巢式電話、電腦、平板電腦、攜帶型電腦、或桌上型電腦之系統或裝置(諸如,器件1500)中。另外,器件1500可包括機頂盒、娛樂單元、導航器件、個人數位助理(PDA)、監視器、電腦監視器、電視、調諧器、無線電、衛星無線電、音樂播放器、數位音樂播放器、攜帶型音樂播放器、視訊播放器、數位視訊播放器、數位視訊光碟(DVD)播放器、攜帶型數位視訊播放器、儲存或擷取資料或電腦指令之任何其他器件,或其組合。作為另一說明性非限制性實例,系統或裝置可包括遠端單元,諸如行動電話、手持式個人通信系統(PCS)單元、諸如個人資料助理之攜帶型資料單元、具備全球定位系統(GPS)功能之器件、導航器件、諸如儀錶讀取設備之固定位置資料單元,或儲存或擷取資料或電腦指令之任何其他器件,或其任何組合。
儘管圖1至圖15中之一或多者可說明根據本發明之教示的系統、裝置及/或方法,但本發明並不限於此等所說明系統、裝置及/或方法。本發明之實施例可適於用於包括積體電路(包括記憶體、處理器及晶片上電路)之任何器件中。
熟習此項技術者將進一步瞭解,可將結合本文中所揭示之實施例所描述的各種說明性邏輯區塊、組態、模組、電路及演算法步驟實施為電子硬體、由處理器所執行之電腦軟體,或兩者之組合。上文大體在功能性方面描述各種說明性組件、區塊、組態、模組、電路及步 驟。此功能性是實施為硬體還是執行軟體取決於特定應用及強加於整個系統上的設計約束。對於每一特定應用而言,熟習此項技術者可以變化之方式實施所描述之功能性,但不應將此等實施決策解釋為導致脫離本發明之範疇。
結合本文中所揭示之實施例而描述之方法或演算法的步驟可直接體現於硬體中、由處理器執行之軟體模組中,或兩者之組合中。軟體模組可駐留於隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可抹除可程式化唯讀記憶體(EPROM)、電可抹除可程式化唯讀記憶體(EEPROM)、暫存器、硬碟、抽取式磁碟、光碟唯讀記憶體(CD-ROM)或此項技術中已知的任何其他形式之儲存媒體中。例示性非暫時性(例如,有形)儲存媒體耦接至處理器,使得處理器可自儲存媒體讀取資訊並將資訊寫入至儲存媒體。在替代例中,儲存媒體可整合至處理器。處理器及儲存媒體可駐留於特殊應用積體電路(ASIC)中。ASIC可駐留於計算器件或使用者終端機中。在替代例中,處理器及儲存媒體可作為離散組件駐留於計算器件或使用者終端機中。
提供所揭示實施例之先前描述以使熟習此項技術者能夠製作或使用所揭示之實施例。對於熟習此項技術者而言,此等實施例之各種修改將易於顯而易見,且在不脫離本發明之範疇的情況下,本文中所界定之原理可應用於其他實施例。因此,本發明並不意欲限於本文中所展示之實施例,而應符合可能與如由以下申請專利範圍所界定之原理及新穎特徵相一致的最廣泛範疇。
120‧‧‧輸出向量
122‧‧‧輸入向量
200‧‧‧系統
202‧‧‧處理器
204‧‧‧算術邏輯單元(ALU)
206‧‧‧縮減樹
208‧‧‧旋轉單元
210‧‧‧控制邏輯
212‧‧‧多工器
220‧‧‧向量指令
280‧‧‧旋轉向量

Claims (47)

  1. 一種方法,其包含:在一處理器處執行一向量指令,其中該向量指令包含包括複數個元素之一向量輸入,且其中執行該向量指令包含:將該複數個元素中之一第一元素提供為一第一輸出;對該複數個元素中之該第一元素及一第二元素執行一第一算術運算,以提供一第二輸出;及將該第一輸出及該第二輸出儲存於一輸出向量中。
  2. 如請求項1之方法,其中執行該向量指令進一步包含:對該複數個元素中之該第一元素、該第二元素及一第三元素執行一第二算術運算,以提供一第三輸出;及將該第三輸出儲存於該輸出向量中。
  3. 如請求項1之方法,其中執行該向量指令進一步包含將多個輸出中之每一者儲存於該輸出向量之不同輸出元素中,且其中該等多個輸出包括該第一輸出及該第二輸出。
  4. 如請求項1之方法,其中執行該向量指令進一步包含在該處理器之一單一執行循環期間將該第一輸出及該第二輸出儲存於該輸出向量中。
  5. 如請求項1之方法,其中以一依序次序儲存該複數個元素,其中執行該向量指令進一步包含對該複數個元素中之一特定元素及該複數個元素中之一或多個其他元素執行一第二算術運算以產生一特定輸出,其中該一或多個其他元素在該依序次序上在順序上在該特定元素之前。
  6. 如請求項5之方法,其中該向量輸入之一第一大小與該輸出向量之一第二大小相同。
  7. 如請求項6之方法,其中N個輸出中之一第N輸出等於該複數個元素中之每一元素的一總和。
  8. 如請求項1之方法,其中執行該向量指令進一步包含在將該第一元素提供為該第一輸出之前將一遮罩應用於該複數個元素。
  9. 如請求項8之方法,其中執行該向量指令包括產生包括該第一輸出及該第二輸出之複數個輸出,且其中應用該遮罩包含取決於該遮罩之一對應遮罩值為該複數個元素中之一特定元素提供一零值以用於產生該複數個輸出。
  10. 如請求項8之方法,其中由該向量指令識別該遮罩。
  11. 如請求項1之方法,其中執行該向量指令進一步包含將一遮罩應用於該輸出向量。
  12. 如請求項11之方法,其中執行該向量指令進一步包含基於該遮罩防止將一或多個輸出儲存於該輸出向量中。
  13. 如請求項1之方法,其中當該向量指令與一複數運算相關聯時,執行該向量指令進一步包含:產生該第一輸出之一第一實數子元素及該第一輸出之一第一虛數子元素;及產生該第二輸出之一第二實數子元素及該第二輸出之一第二虛數子元素。
  14. 一種裝置,其包含:一處理器,其包含一縮減樹,其中在識別包括複數個元素之一向量輸入的一向量指令之執行期間,該縮減樹經組態以:將該複數個元素中之一第一元素提供為一第一輸出元素;對該複數個元素中之該第一元素及一第二元素執行一第一算術運算,以提供一第二輸出元素;及將該第一輸出元素及該第二輸出元素儲存於一輸出向量 中。
  15. 如請求項14之裝置,其中該縮減樹包含複數個算術運算單元、複數個輸入及複數個輸出,且其中該縮減樹經組態以對該複數個元素中之該第一元素、該第二元素及一第三元素執行一第二算術運算單元,以提供一第三輸出元素。
  16. 如請求項15之裝置,其中該複數個算術運算單元中之一特定算術運算單元耦接至經組態以飽和該特定算術運算單元之一輸出的一飽和邏輯電路。
  17. 如請求項15之裝置,其中該處理器進一步包含經組態以基於該向量指令選擇性地啟用該複數個算術運算單元中之一或多個算術運算單元的控制邏輯,且其中經由該一或多個算術運算單元提供該第一輸出元素及該第二輸出元素。
  18. 如請求項17之裝置,其中該控制邏輯經組態以基於該向量指令啟用該複數個算術運算單元之一子集以接收一零輸入,該零輸入具有等於一邏輯零之一邏輯值。
  19. 如請求項17之裝置,其中該控制邏輯經組態以基於該向量指令略過該複數個算術運算單元中之至少一算術運算單元。
  20. 如請求項14之裝置,其中該縮減樹被邏輯地分割成以一交插方式運算之複數個累積式平行縮減網路,且其中該複數個累積式平行縮減網路包括兩個三十二位元累積式縮減網路,或四個十六位元累積式縮減網路。
  21. 一種裝置,其包含:用於將複數個元素中之一第一元素提供為一第一輸出之構件,其中一向量指令指示包括該複數個元素之一向量輸入;用於基於該複數個元素中之該第一元素及一第二元素產生一第二輸出之構件;及 用於將該第一輸出及該第二輸出儲存於一輸出向量中之構件。
  22. 如請求項21之裝置,其進一步包含用於飽和該第二輸出之構件,該用於飽和之構件耦接至該用於產生之構件。
  23. 一種非暫時性電腦可讀媒體,其包含在由一處理器執行時使得該處理器進行如下操作之指令:將複數個元素中之一第一元素提供為一第一輸出元素,該複數個元素包括於一向量指令之一向量輸入中;對該複數個元素中之該第一元素及一第二元素執行一算術運算,以提供一第二輸出;及將該第一輸出及該第二輸出儲存於一輸出向量中。
  24. 如請求項23之非暫時性電腦可讀媒體,其中可進一步執行該等指令以使得處理器基於該向量指令在使用該複數個元素中之一或多個元素來提供該第一輸出及該第二輸出之前,對該一或多個元素求補。
  25. 一種裝置,其包含:一縮減樹,其包含複數個輸入、複數個算術運算單元及複數個輸出,其中一處理器經組態以在包括一第一區段分組大小之一第一指令的執行期間及包括一第二區段分組大小之一第二指令的執行期間使用該縮減樹,且其中該縮減樹經組態以同時產生多個輸出元素。
  26. 如請求項25之裝置,其中該複數個算術運算單元包含複數個加法器。
  27. 如請求項25之裝置,其進一步包含經組態以進行如下操作之控制邏輯:在該第一指令之執行期間,基於該第一區段分組大小,選擇 性地啟用該複數個算術運算單元之一第一子集;及在該第二指令之執行期間,基於該第二區段分組大小,選擇性地啟用該複數個算術運算單元之一第二子集。
  28. 如請求項25之裝置,其中該縮減樹包括於該處理器之一算術邏輯單元(ALU)中,且其中該縮減樹具有基於該複數個輸入中之輸入的一數目的級之一數目。
  29. 如請求項28之裝置,其中該複數個算術運算單元包括多個列之算術運算單元,且其中該多個列之算術運算單元中之每一列與包括於該處理器中之一管線的一對應級相關聯。
  30. 如請求項28之裝置,其中該縮減樹之級的該數目等於輸入之該數目的一以二為底之對數。
  31. 如請求項25之裝置,其進一步包含經組態以在將該多個輸出元素儲存於該輸出向量中之前旋轉一輸出向量之一旋轉單元,其中該旋轉單元包含一旋轉器或一筒向量移位器。
  32. 如請求項25之裝置,其進一步包含一或多個飽和電路,其中該一或多個飽和電路中之一特定飽和電路經組態以自一特定算術運算單元接收一特定輸出,並基於該特定輸出輸出一經飽和值。
  33. 如請求項25之裝置,其中該縮減樹經組態以在一累積式向量算術指令之執行期間,使用多個累積式算術運算同時產生該多個輸出元素。
  34. 一種方法,其包含:在一處理器處接收包括一區段分組大小之一向量指令,其中該處理器包含一縮減樹,且其中該縮減樹包括複數個輸入、複數個算術運算單元及複數個輸出;判定該區段分組大小;及 基於該區段分組大小,使用該縮減樹執行該向量指令,以同時產生該複數個輸出,其中該縮減樹可經選擇性地組態以用於與多個不同區段分組大小一起使用。
  35. 如請求項34之方法,其進一步包含:判定該縮減樹是否經組態以用於與該區段分組大小一起使用;及回應於判定該縮減樹未經組態以用於與該區段分組大小一起使用,基於該區段分組大小變更組態。
  36. 如請求項35之方法,其進一步包含:判定該縮減樹是否經組態以用於與該區段分組大小一起使用;及回應於判定該縮減樹經組態以用於與該區段分組大小一起使用,使用該縮減樹執行該第一向量指令。
  37. 如請求項34之方法,其中執行該向量指令包含:將該複數個輸入分組成具有該區段分組大小之一或多個群組;及對該一或多個群組執行一或多個算術運算,以產生該複數個輸出,其中該向量指令指示該一或多個算術運算。
  38. 如請求項37之方法,其中該複數個輸入中之每一輸入包括一對應實數部分及一對應虛數部分,且其中藉由以一交插方式對一或多個實數部分執行一第一算術運算並對一或多個虛數部分執行一第二算術運算,產生該複數個輸出中之每一輸出元素。
  39. 如請求項34之方法,其中該複數個輸入及該複數個輸出表示實數值、虛數值或其一組合。
  40. 一種方法,其包含:執行包括複數個輸入元素之一向量指令,其中執行該向量指 令包含:分組該複數個輸入元素之一第一子集以形成輸入元素之一第一集合;分組該複數個輸入元素之一第二子集以形成輸入元素之一第二集合;對該第一集合之輸入元素執行一第一算術運算;對該第二集合之輸入元素執行一第二算術運算;旋轉一輸出暫存器之內容;及在旋轉該輸出暫存器之該等內容之後,將該第一算術運算之第一結果及該第二算術運算之第二結果***至該輸出暫存器中。
  41. 如請求項40之方法,其中該向量指令為一單一向量指令,其中該複數個輸入中之每一者儲存於一輸入向量中,且其中同時產生該等第一結果及該等第二結果。
  42. 如請求項40之方法,其中將該等第一結果及該等第二結果***至該輸出暫存器中包含覆寫該輸出暫存器之對應內容,且其中旋轉該輸出暫存器之該等內容包含基於該向量指令而選擇性地旋轉該輸出暫存器之該等內容。
  43. 如請求項40之方法,其中該第一集合之輸入元素中之元素的一第一數目及該第二集合之輸入元素中之元素的一第二數目係基於由該向量指令所識別之一區段分組大小。
  44. 如請求項43之方法,其中元素之該第一數目相同於元素之該第二數目。
  45. 如請求項40之方法,其中將該等第一結果***至該輸出暫存器之一第一輸出元素中,其中將該等第二結果***至該輸出暫存器之一第二輸出元素中,且其中該第一輸出元素及該第二輸出 元素為該輸出暫存器之不同輸出元素。
  46. 如請求項40之方法,其中執行該向量指令進一步包含在分組該複數個輸入元素之前將一遮罩應用於該複數個輸入元素。
  47. 如請求項40之方法,其中執行該向量指令進一步包含在旋轉該等內容之後將一遮罩應用於該輸出暫存器。
TW103127139A 2013-08-14 2014-08-07 向量算術縮減 TWI507982B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/967,191 US20150052330A1 (en) 2013-08-14 2013-08-14 Vector arithmetic reduction

Publications (2)

Publication Number Publication Date
TW201519090A TW201519090A (zh) 2015-05-16
TWI507982B true TWI507982B (zh) 2015-11-11

Family

ID=51492424

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103127139A TWI507982B (zh) 2013-08-14 2014-08-07 向量算術縮減

Country Status (6)

Country Link
US (1) US20150052330A1 (zh)
EP (1) EP3033670B1 (zh)
JP (1) JP2016530631A (zh)
CN (1) CN105453028B (zh)
TW (1) TWI507982B (zh)
WO (1) WO2015023465A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678715B2 (en) * 2014-10-30 2017-06-13 Arm Limited Multi-element comparison and multi-element addition
US20160179530A1 (en) * 2014-12-23 2016-06-23 Elmoustapha Ould-Ahmed-Vall Instruction and logic to perform a vector saturated doubleword/quadword add
US10296342B2 (en) 2016-07-02 2019-05-21 Intel Corporation Systems, apparatuses, and methods for cumulative summation
US10466967B2 (en) * 2016-07-29 2019-11-05 Qualcomm Incorporated System and method for piecewise linear approximation
US10108581B1 (en) 2017-04-03 2018-10-23 Google Llc Vector reduction processor
US10331445B2 (en) * 2017-05-24 2019-06-25 Microsoft Technology Licensing, Llc Multifunction vector processor circuits
GB2574817B (en) * 2018-06-18 2021-01-06 Advanced Risc Mach Ltd Data processing systems
US11294670B2 (en) * 2019-03-27 2022-04-05 Intel Corporation Method and apparatus for performing reduction operations on a plurality of associated data element values
CN110807521B (zh) * 2019-10-29 2022-06-24 中昊芯英(杭州)科技有限公司 支持向量运算的处理装置、芯片、电子设备和方法
GB2601466A (en) * 2020-02-10 2022-06-08 Xmos Ltd Rotating accumulator
US20240004647A1 (en) * 2022-07-01 2024-01-04 Andes Technology Corporation Vector processor with vector and element reduction method

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192384B1 (en) * 1998-09-14 2001-02-20 The Board Of Trustees Of The Leland Stanford Junior University System and method for performing compound vector operations
US6295597B1 (en) * 1998-08-11 2001-09-25 Cray, Inc. Apparatus and method for improved vector processing to support extended-length integer arithmetic
TWI221562B (en) * 2002-12-12 2004-10-01 Chung Shan Inst Of Science C6x_VSP-C6x vector signal processor
TWI234738B (en) * 2002-06-28 2005-06-21 Motorola Inc Re-configurable streaming vector processor
US7159100B2 (en) * 1997-10-09 2007-01-02 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
TW201237743A (en) * 2010-09-24 2012-09-16 Intel Corp Functional unit for vector integer multiply add instruction
TW201243715A (en) * 2011-04-01 2012-11-01 Intel Corp Vector friendly instruction format and execution thereof
TW201331829A (zh) * 2011-12-22 2013-08-01 Intel Corp 用於呈現各別複數之複數共軛根之向量指令

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4996661A (en) * 1988-10-05 1991-02-26 United Technologies Corporation Single chip complex floating point numeric processor
US5542074A (en) * 1992-10-22 1996-07-30 Maspar Computer Corporation Parallel processor system with highly flexible local control capability, including selective inversion of instruction signal and control of bit shift amount
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
US6058473A (en) * 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US5727229A (en) * 1996-02-05 1998-03-10 Motorola, Inc. Method and apparatus for moving data in a parallel processor
US6542918B1 (en) * 1996-06-21 2003-04-01 Ramot At Tel Aviv University Ltd. Prefix sums and an application thereof
US5845112A (en) * 1997-03-06 1998-12-01 Samsung Electronics Co., Ltd. Method for performing dead-zone quantization in a single processor instruction
US6418529B1 (en) * 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US7395302B2 (en) * 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US6324638B1 (en) * 1999-03-31 2001-11-27 International Business Machines Corporation Processor having vector processing capability and method for executing a vector instruction in a processor
US7624138B2 (en) * 2001-10-29 2009-11-24 Intel Corporation Method and apparatus for efficient integer transform
US6920545B2 (en) * 2002-01-17 2005-07-19 Raytheon Company Reconfigurable processor with alternately interconnected arithmetic and memory nodes of crossbar switched cluster
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7051186B2 (en) * 2002-08-29 2006-05-23 International Business Machines Corporation Selective bypassing of a multi-port register file
US7293056B2 (en) * 2002-12-18 2007-11-06 Intel Corporation Variable width, at least six-way addition/accumulation instructions
US20040193847A1 (en) * 2003-03-31 2004-09-30 Lee Ruby B. Intra-register subword-add instructions
US7593978B2 (en) * 2003-05-09 2009-09-22 Sandbridge Technologies, Inc. Processor reduction unit for accumulation of multiple operands with or without saturation
TW200504592A (en) * 2003-07-24 2005-02-01 Ind Tech Res Inst Reconfigurable apparatus with high hardware efficiency
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
DE102006027181B4 (de) * 2006-06-12 2010-10-14 Universität Augsburg Prozessor mit internem Raster von Ausführungseinheiten
US8429384B2 (en) * 2006-07-11 2013-04-23 Harman International Industries, Incorporated Interleaved hardware multithreading processor architecture
US7725518B1 (en) * 2007-08-08 2010-05-25 Nvidia Corporation Work-efficient parallel prefix sum algorithm for graphics processing units
US8996846B2 (en) * 2007-09-27 2015-03-31 Nvidia Corporation System, method and computer program product for performing a scan operation
US8661226B2 (en) * 2007-11-15 2014-02-25 Nvidia Corporation System, method, and computer program product for performing a scan operation on a sequence of single-bit values using a parallel processor architecture
US7895419B2 (en) * 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
WO2009144683A1 (en) * 2008-05-30 2009-12-03 Nxp B.V. Method for vector processing
US8209525B2 (en) * 2008-08-15 2012-06-26 Apple Inc. Method and apparatus for executing program code
US9176735B2 (en) * 2008-11-28 2015-11-03 Intel Corporation Digital signal processor having instruction set with one or more non-linear complex functions
US8595467B2 (en) * 2009-12-29 2013-11-26 International Business Machines Corporation Floating point collect and operate
US8868885B2 (en) * 2010-11-18 2014-10-21 Ceva D.S.P. Ltd. On-the-fly permutation of vector elements for executing successive elemental instructions
US9760372B2 (en) * 2011-09-01 2017-09-12 Hewlett Packard Enterprise Development Lp Parallel processing in plural processors with result register each performing associative operation on respective column data
WO2013095631A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing a butterfly horizontal and cross add or substract in response to a single instruction
CN104081337B (zh) * 2011-12-23 2017-11-07 英特尔公司 用于响应于单个指令来执行横向部分求和的***、装置和方法
US9823924B2 (en) * 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
JP6079433B2 (ja) * 2013-05-23 2017-02-15 富士通株式会社 移動平均処理プログラム、及びプロセッサ

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7159100B2 (en) * 1997-10-09 2007-01-02 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6295597B1 (en) * 1998-08-11 2001-09-25 Cray, Inc. Apparatus and method for improved vector processing to support extended-length integer arithmetic
US6192384B1 (en) * 1998-09-14 2001-02-20 The Board Of Trustees Of The Leland Stanford Junior University System and method for performing compound vector operations
TWI234738B (en) * 2002-06-28 2005-06-21 Motorola Inc Re-configurable streaming vector processor
TWI221562B (en) * 2002-12-12 2004-10-01 Chung Shan Inst Of Science C6x_VSP-C6x vector signal processor
TW201237743A (en) * 2010-09-24 2012-09-16 Intel Corp Functional unit for vector integer multiply add instruction
TW201243715A (en) * 2011-04-01 2012-11-01 Intel Corp Vector friendly instruction format and execution thereof
TW201331829A (zh) * 2011-12-22 2013-08-01 Intel Corp 用於呈現各別複數之複數共軛根之向量指令

Also Published As

Publication number Publication date
CN105453028B (zh) 2019-04-09
EP3033670B1 (en) 2019-11-06
WO2015023465A1 (en) 2015-02-19
CN105453028A (zh) 2016-03-30
TW201519090A (zh) 2015-05-16
EP3033670A1 (en) 2016-06-22
JP2016530631A (ja) 2016-09-29
US20150052330A1 (en) 2015-02-19

Similar Documents

Publication Publication Date Title
TWI507982B (zh) 向量算術縮減
US9342479B2 (en) Systems and methods of data extraction in a vector processor
JP2019521445A (ja) Simdアーキテクチャにおけるレーンのシャッフルのためのシャッフラー回路
US11372804B2 (en) System and method of loading and replication of sub-vector values
JP2018521423A5 (zh)
US9256434B2 (en) Generalized bit manipulation instructions for a computer processor
CN107873091B (zh) 用于滑动窗口运算的方法和设备
CN109478199B (zh) 分段线性逼近的***及方法
WO2019067934A1 (en) SYSTEM AND METHOD FOR PROCESSING CHARACTERISTIC DESCRIPTOR
CN109690956B (zh) 电子设备和用于电子设备的方法
US9336579B2 (en) System and method of performing multi-level integration
US20100138463A1 (en) Digital Signal Processor Having Instruction Set With One Or More Non-Linear Functions Using Reduced Look-Up Table
US20130086366A1 (en) Register File with Embedded Shift and Parallel Write Capability

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees