TW200413947A - Efficient multiplication of small matrices using SIMD registers - Google Patents

Efficient multiplication of small matrices using SIMD registers Download PDF

Info

Publication number
TW200413947A
TW200413947A TW092131106A TW92131106A TW200413947A TW 200413947 A TW200413947 A TW 200413947A TW 092131106 A TW092131106 A TW 092131106A TW 92131106 A TW92131106 A TW 92131106A TW 200413947 A TW200413947 A TW 200413947A
Authority
TW
Taiwan
Prior art keywords
matrix
item
patent application
scope
row
Prior art date
Application number
TW092131106A
Other languages
English (en)
Other versions
TWI276972B (en
Inventor
William Macy Jr
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW200413947A publication Critical patent/TW200413947A/zh
Application granted granted Critical
Publication of TWI276972B publication Critical patent/TWI276972B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

200413947 (1) 玖、發明說明 【發明所屬之技術領域】 本發明係有關矩陣算術。更明確言之,本發明提供使 用S IM D暫存器之矩陣之有效乘法之例。 【先前技術】 算術操縱普通m XII矩陣爲一般資料處理工作。一 mxn矩陣由m列及^行構成。被乘數矩陣c之大小爲nxm ,及乘數矩陣a爲mxp。結果矩陣b爲nxp。b中之値由c 之各行中之値乘a之各行中之値之乘積之和計算,使用 bij = Σ mCik*akj,其中,第一下標指列及第二下標指行。故 此,由c之列i及a之行j之內乘積計算b之列i及行j 中之一元素之値。乘積m*n*p之總數及相加之總數爲 (m_l)*n*p 〇 爲最佳結果,已使用矩陣乘法實施來執行乘法,加法 ,及資料排序步驟,使用最少之指令數。由於c爲一係數 矩陣及a爲一資料矩陣,故已發展各種技術,此等利用預 儲存c元素之能力,其方式適於有效實施矩陣乘法。然而 ,儲存元素之此彈性不提供給矩陣a之資料。a之資料通 常依邏輯順序儲存,此不知任何資料處理演算法。 矩陣乘法使用於應用程式中,諸如坐標及色變換,造 影演算法,及許多科學計算工作。矩陣乘法爲一計算密集 之運算,此可由微處理器之單指令多資料(SIMD)暫存器協 助執行,此支持普通S IM D矩陣乘法進行,使用s丨M d指 (2) (2)200413947 令來安排資料’並執行矩陣乘法,遵循由矩陣乘法等式指 示之計算順序: bij-Σ mCik*akj 其中: b(x) = c (x)* a(x) 相當於 ----- C〇 ;Q〇. C〇 .. Co a〇 a〇 a〇 a〇 b〇 .,··‘**-·· ·. 一 b〇 b〇 b〇 Ci Cl ' Ci * ai ai .ai ai b! …................... bi bi bi mm .c2 C2 —〇2 * .............-.............. C2 'a?— • a? 32 b2 ; ............................ b2— t>2 b2 C3 C3 Ca C3 I i a3 ; as b3 i —-_' b3 b3 由被乘數矩陣c乘之各列乘乘數矩陣a之各行之內乘 積(點乘積)計算結果矩陣b之元素。b之第一元素爲: b〇〇 = (c〇〇*a〇〇) + (c〇i*ai〇) + (c〇2*a2〇) + (c〇3*a3〇) 此爲c之第一列及a之第一行之乘積及和。 其次 b〇i = (c〇〇*a〇i) + (c〇i*a]]) + (c〇2*a2i) + (c〇3*a3i) 爲c之第一列及a之第二行之乘積及和。繼續計算, 直至完成第一列之結果。使用c之次列計算b之次列,開 始爲: bi〇 = (ci〇*a〇〇) + (cii*a]〇) + (ci2*a2〇) + (ci3*a3〇) 0 由適當改變(x〇R取代加法),同樣用於模組乘法及普 遜乘法。 使用s IM D指令之矩陣乘法之普通實施依乘數矩陣a 之元素儲存於記憶體中之順序儲存其於SIMD暫存器中’ (3) (3)200413947 並依列順序儲存被乘數矩陣c之元素,以c之行數重複各 列。a之各元素依其儲存於記憶體中之順序儲存於暫存器 中。例如,在4行矩陣中,c之第一列之各元素重複4次 ,因爲c有4行。如c之大小小於S1M D暫存器,則來自 c之其他列之元素亦可儲存於SIMD暫存器中。如c之大 小大於S I M D暫存器,則需要額外之暫存器來儲存該列之 資料。 使用SIMD暫存器中所儲存之資料之矩陣乘法由c之 元素乘 a中之元素開始- 其次 ,需計算同一暫存器中相鄰之每一列之乘積之和。如使用 乘-加(M A C )指令,當計算乘法時,計算乘積之一些此等 和。普通計算boo,隨後計算b(H。矩陣C之次列載入於C 値之暫存器中,以計算矩陣b之次列之元素。 在運算中,可需要模組乘積之精確重大之資料重排, 俾此等可計算b之元素(在Galois場算術運算中,由例如 XOR提供加法運算)。而且,如結果並未配入一暫存器中 ,則在其可儲存前,該等結果需在暫存器之間交換。二問 題導致重大計算工作,此影響矩陣乘法進行之速度。
圖1大體顯示一電腦系統1 0,具有一處理器1 2及記 憶系統1 3 (此可爲任何可存取記憶體,包含外部快取記憶 體及內部RAM,及/或處理器內之部份記憶體),用以執行 可由外部提供於軟體中之指令,作爲電腦程式產物並儲存 冬 (4) (4)200413947 於資料儲存單元1 8中。 電腦系統1 〇之處理器1 2亦支持內部記憶暫存器J 4 ,包含單指令多資料(SIMD)暫存器16。暫存器14在意義 上並不限於特定型式之記憶電路。而是,一實施例之暫存 器需能儲存並提供資料,並執行此處所述之功能。在一實 施例,暫存器14包含多媒體暫存器,例如SMID暫存器 1 6用以儲存多媒體資訊。在一實施例,多媒體暫存器各 儲存高至128位元之包裝資料。多媒體暫存器可爲專用之 多媒體暫存器,或用以儲存多媒體資訊及其他資訊之暫存 器。在一實施例,當執行多媒體操作時,多媒體暫存器儲 存多媒體資料,及當執行浮點操作時,儲存浮點資料。 本發明之電腦系統1〇可包含一或更多1/〇(輸入/輸出 )裝置15,包含顯示裝置,諸如監視器。I/O裝置亦可包 含一輸入裝置,諸如鍵盤,及一遊標控制器,諸如滑鼠, 軌跡球,或軌跡墊。而且,I/O裝置亦可包含網路連接器 ,俾該電腦系統10爲本地區網路(LAN)或寬地區網路 (WAN)之一部份,I/O裝置15,聲音記錄及/或回放之裝置 ,諸如聲音數位化器連接至微音器,周以記錄語音辨認用 之聲音輸入。I/O裝置15亦可包含聲音數位化裝置,此 可用以捕聲音影像,硬拷貝裝置,諸如印表機,及CD-ROM裝置。 在一實施例,可由資料儲存單元1 8讀出之電腦程式 產物包含一機器或電腦可讀出之媒體,其上儲有指令,此 可用以規劃(即訂定操作)一電腦(或其他電子裝置),以依 (5) (5)200413947 本發明執行一程序。資料儲存單元1 8之電腦可讀出媒體 包含,但不限於軟碟,光碟,小巧碟,僅讀記憶體(CD_ ROM) ’及磁光碟,僅讀記憶體(R〇M),隨機進出記憶體 (RAM),可抹消可程式僅讀記憶體(EPROM),可電抹消可 程式僅讀記憶體(EEPROM),磁或光卡,快閃記憶體等。 故此’電腦可讀出之媒體包含任何型式之媒體/機器 可讀出之媒體,適於儲存電子指令。而且,本發明亦可作 爲電腦程式產物下載。如此,該程式可自遠處電腦(例如 伺服器)轉移至申請之電腦(例如客戶)。程式可經由具體 表現成載波之資料信號,或經由通訊鏈之其他傳播媒體( 例如數據機,網路連接等)轉移。 電系統1〇可爲通用電腦,具有一處理器,帶有適 當之暫存器結構,或可經構造供特定用途之用,或可爲埋 置之應用程式。在一實施例,本發明之方法具體表現於機 器可執行之指令,著眼於電腦系統之控制操作,且更明確 言之,處理器及暫存器之操作。指令可用以使由指令規劃 之通用或特殊用途處理器執行本發明之步驟。或且,本發 明之步驟可由特定硬體組成件執行,此含有硬線邏輯闱以 執行該等步驟,或由程式電腦組成件及定製之硬體組成件 之任何組合執行。 應明瞭知道本藝之人士使用各種術語及技術來說明通 訊,議定,應用,實施,機構等。一種技術爲以演算法或 數學表示式說明一技術之實施。即是,雖該技術可例如以 在電腦執行程式來實施,但該技術可更宜且簡明地以公式 -8- (6) (6)200413947 ’演算法’或數學表示式來溝通。 故此’精於本藝之人士認識表示A + B = C之一方塊爲 加函數’其在硬體及/或軟體中之實施爲取二輸入(A及B) ’並產生一和輸出(c)。如此,應明瞭使用公式,演算法 ’或數學表示式作說明在至少硬體及/或軟體(諸如電腦系 統’在此’可實作及實施本發明之技術,作爲一實施例) 中具有物理實施例。 圖2顯示用以依本發明乘諸如圖3所示之一矩陣之程 序。如顯示於圖2,資料先由記錄及載入於記憶體(在本 例中’標示如方塊2 1之暫存器)中加以組織,供有效矩陣 乘法之用。被乘數矩陣c之每一對角線載入於不同之暫存 器中。使用位置鄰近右行之矩陣之一拷貝,使具有一元素 在並非底列之最右行之對角線延伸至次列中之元素。一對 角線之次元素在次列中。對角線在暫存器中複製數次,其 次數等於乘數矩陣a之行數。一對角線中之元素數等於c 中之行數。乘數矩陣a之資料依行順序載入於暫存器中, 順序資料儲存於記憶體中。在暫存器中之a之每一行中之 每一相乘及相加元素之間移位一元素(方瑰22)。一行之最 後元素移位或轉動至該行之前方。被乘數矩陣c之對角線 由乘數矩陣a之行(可調整其長度)乘(方塊23),及其乘積 加於乘積之和中,作爲結果矩陣b之行(方塊2 4)。 如a之一行之元素數與c之一行之數不同,則調整來 自SIMD暫存器中之a之一行之元素數,俾等於c之一行 之元素數。決定選擇乘數矩陣a之何元素之一方法爲先相 -9· (7) (7)200413947 互上下堆疊乘數矩陣a之拷貝,俾各行對齊,且一拷貝之 頂列在底列及另一拷貝下方。此有效延伸每一行。由於自 延伸行所取之元素數等於被乘數矩陣c之一對角線中之元 素數。在每一相乘及相加運算後,由向下移位延伸之行一 元素,選擇元素用於其次相乘及相加運算。如一被乘數對 角線之長度大於一乘數行,則選擇一行中之相等値,且如 被乘數對角線之長度小於乘數行,則不選擇一行中之所有 値。 雖以上實例使用內部處理器暫存器,但應明瞭並非恆 需載入內部處理器暫存器,以執行SIMD操作。用於相乘 或其他之運算元可儲存於記憶體中,而非先載入於暫存器 中。一些構造,諸如RISC構造先載入暫存器,但Intel 構造可具有運算兀在記憶體中。使用暫存器及跡憶器運算 兀之比較爲 pmaddwdxmmo5xmml andpmaddwdxmmo?[eax] 如儲存於暫存器eax位址中之資料與xmml中之資料相同 ,則在xmmo中產生相同結果。如暫存器中之代碼用完且 記憶體進出快速,則需要使用記憶體運算元。 圖3顯示依有關圖2 一般討論之程序之模組乘法3 〇 。在本例中,模組乘法爲一 Gal〇is場算術,在此,使用 XOR於相加値,而無進位(例如,二進位相加而無進位, 故 1 + 1 = 0,〇 + 〇 = 〇,0+1 = 1,及 ,且普通由 x〇R 計 算結果)。如顯示於圖3。決定正方矩陣b(x) = c(x)xa(x)之 乘法30。圖4顯示決定暫存器資料載入型樣4〇,用於圖 3所示矩陣之乘法。如見之於圖4之一暫存器排序設計4 〇 -10- (8) (8)200413947 中,用於次步驟之暫存器中之資料爲粗體式。實線指示複 製矩陣之界線。在第一步驟,a之各行由c之對角線乘。 在桌一步驟’a之各行移位,並由c之次對角線乘,如箭 頭所示。 圖5顯不由圖4所不之移位造成暫存器中之資料之順. 序5〇。如有關圖5之時間步驟(A)所見,暫存器依儲存於 記憶體中之順序,保持c之主對角線及矩陣a之資料。在 圖5之時間步驟(B ),由使用一位元組穿梭操作,由轉動 元素貫施移位各彳了。注意a中之各行可上移位,且c中之 選擇對角線可選擇至左方而非右方。 圖6另顯示用以乘4x4矩陣&及c之運算6〇。每一 時間步驟之資料依以上有關圖4及5所述排序。在每一時 間步驟C ’ D ’ E ’及F ’ g十算a及c之模組乘積。乘積由 X OR加於其他步驟之乘積。 以下假碼片段提供矩陣乘法之一實例實施。 (1 )LD0 ADR3,MEM0RY ; C 矩陣對角線 1 (2) LDOADR4?MEMORY ; c 矩陣對角線 2 (3) LDOADR5,MEMORY ; c 矩陣對角線 3 (4) LDOADR65MEMORY ; c 矩陣對角線 4 (5) LD〇ADR7,MEMORY ;資料穿梭型樣 (6) LDOADRO,MEMORY ;自記憶體載入a資料(第一 型樣) (7) M0VER1,R0;拷貝第一資料型樣 (8) MODMULRO,R3 ;由對角線ι(主對角線)乘a資料 -11 - (9) (9)200413947 (9) SHUFFLER1,R7 ;產生第二a資料型樣轉動行 (10) MOVER2,R1 ;拷貝第二a資料型樣 (1 1)M0DMULR1,R4 ;由對角線2乘第二a資料型樣 (12) XORRO,R1 ;力卩第二型樣於第一 (13) SHUFFLER2,R7;產生第三a資料型樣轉動行 (14) M0VER1,R2 ;拷貝第三a資料型樣 (15) MODMULR2,R5 ;由對角線3乘第三a資料型樣 (16) XORRO,R2 ;加第三型樣 (17) SHUFFLER1,R6;產生第四a資料型樣轉動行 (18) M0DMULR1,R6;由對角線4乘第四資料型樣 (19) XORRO,R1 ;力□第四型樣 (20) STOREMEMORY,R〇 ;儲存輸出矩陣 指令9至12表示本方法之基本操作。乘數a矩陣之 各行在指令9中轉動。其結果在指令1 〇中拷貝,因爲此 由指令11中之乘法覆寫,及乘積在指令12中加於乘積之 和中。 非正矩陣亦可接受本發明之程序之一實施例。例如, 考慮圖7之矩陣乘法7 0。在此,被乘數矩陣c之對角線 中之元素數不等於乘數矩陣a之一行中之元素數,及被乘 數矩陣c之對角線大於乘數矩陣a之行。在本例中,3 χ2 矩陣c乘2 X 4矩陣a之模組乘法。圖8說明本例中用以選 擇及排序資料於SIMD中之方法。c之第一對角線爲c〇0, c】】〇,cw。此對角線由a之延伸行之首3値乘。由於&之 行長度僅爲2 ’故a矩陣依順序8 〇相互堆疊,如顯示於 -12- (10) 200413947 圖8,以有效延伸行之長度。觀察此之另一方g 到達一行之未端時,此捲回或轉回至第一値。圖 之第一對角線及a之延伸行之値之資料排列。柱 之a之首3値爲a〇o,a1G,a〇G,故aG()重複。c 線爲c〇i,c】〇’ C21’及a之次fj爲a〗。,a〇〇,aj 一延伸行中向下移位一元素選擇,如顯示於圖8 顯示用以乘矩陣a及c之運算。每一時間步驟之 如以上有關圖7及8所述。在每一時間步驟,言-之模組乘積。各乘責由X 0 R加於其他步驟之乘卷 圖1 〇顯示模組乘法1 0 0,具有被乘數矩陣 短於乘數矩陣a,使用2 X 3矩陣c及3 X 4矩陣丨 於圖1 1,順序選擇1 1 0設定c之第一對角線爲 。此對角線由a之延伸行之首二値a()()及aiG乘· 度爲3,但僅選擇行之二値。圖12顯示暫存器 資料排列1 2 0。有三對暫存器,具有來自矩陣a ’此等相乘一起’因爲矩陣c具有三對角線。僅 行之首2値ac()及a]G儲存於第一暫存器中。在 益中’ c之對角線爲c❶!及c i 2,及由向下移位選 次値。例如,來自第一行之値爲a1()及a2Q。第 器保持第三對角線及a之向下移位之行之次値。 ’來自第一行之値爲a2G及a00。 如所明瞭,圖3 - 1 2之以上說明敘述無需^ (MAC)指令之算術運算。代之者,說明Gaiois場 用模組乘法及X 〇 R於加法。如被乘數之一列及 爲,一旦 9顯示c 意在右方 之次對角 3,此由每 。圖9另 資料順序 •算a及c 【中。 c對角線 l。如顯示 c〇〇及C】] a之行長 中各値之 及c之値 a之第一 次對暫存 擇a中之 三對暫存 在此情形 目乘/累計 算術,使 乘數之一 -13- (11) (11)200413947 行之元素之乘積由與原矩陣元素相同之資料型式表示,則 僅普通算術及Galois場算術間之不同爲用於相加及相乘 之方法。所有型樣保持相同。如結果所需之資料型式在大 小上大於原資料者,則矩陣元素之資料型式在矩陣相乘之 前增加(通常大小加倍)。在此情形,儲存恆定之被乘數矩 陣資料,成爲較大資料型式。例如,儲存位元組大小係數 ’成爲16位兀整數。乘數矩陣之資料型式在圖3_12所示 之rf*算則改變。通常使用SIMD解包操作,以改變資料型 式。此增加是時所需之暫存器數,但否則,圖3 d 2所述 之操作在Galois場或普通算術方面不變。 如可用MAC指令,可如有關以下圖13_15所示進行 矩陣乘法。雖M A C指令可用於任何形式之算術(包括 Galois場算術),但在普通固定點算術之情形,一 MAC電 腦2產生’相加此等乘積,且通常寫入結果,成爲原被乘 數及乘數之大小之二倍之資料型式(普通位元組至16位元 字及16位元字至雙倍32位元字)。在Galois場算術之情 形’ M A C電腦2使用模組乘法產生,使用X 〇 r運算加乘 積’及寫入同資料型式之結果。代表Galois場算術之和 或乘積所需之數元數與代表原資料所需之位元數相同。普 通算術用之MAC大部份見之於所有SIMD指令集(即在 Intel架構指令集中之mad d)。故此,圖13顯示具有正矩 陣之乘法130,並使用適當之MAC指令。如顯示於圖14 ,排序1 4〇以體式指示連續步驟用之暫存器中之資料。實 線指示複製矩陣之界線。注意在正矩陣乘法中,元素爲二 -14- (12) (12)200413947 値,及每一移位爲二値。在正乘法情形中,在矩陣c之一 對角線中之値之數爲矩陣a之一行之二倍’如顯示於圖 1 4 (本實例中排序8値)。複製a矩陣之每一行,如顯示於 圖15a及b之暫存器排序150中。故此,a矩陣之首二行 保持於一暫存器中,及次二行保持於另一暫存器中。正矩 陣乘法之資料排序方法與模組乘法相同’唯在正矩陣情形 ,各元素爲二値。移位二値至次步驟之資料順序,並複製 各乘數行。乘-加運算施加於a及c中之相鄰値。此運算 乘a及c中之値,並相加相鄰之乘積。乘-加結果儲存於 原資料大小之二倍之空間中。例如,在步驟(1 )中,madd 運算計算aG()及coo之乘積及a1G,及CG1之乘積,並相加 二乘積。同樣,,在步驟(2)中,madd運算計算a2〇及c〇2 之乘積及a3G及c〇3之乘積,並相加二乘積。madd運算之 結果相加’以提供矩陣乘法之結果b 〇 〇。 使用1 6位元字及1 2 8位元暫存器之正矩陣乘法之假 碼顯示如下: (1) LOADR5,MEMORY;係數對角線 1 (2) LOADR5,MEMORY;係數對角線 2 (3) LOADR5,MEMORY;資料穿梭型樣 (4) LOADR5,MEMORY ;載入記憶體之資料(第一型樣) (5) MOVER2,RO;拷貝第一資料型樣 (6) UNPACKLDQR0,R0 ;複製資料行 1 及 2 (7) MOVER1,RO;拷貝行 1 及 2 (8) MADDR05R5 ;乘累計 1 及 2 -15- (13) (13)200413947 (9) SHUFFLER1,R7 ;產生第二資料型樣 (10) MADDR1,R6 ;乘累計型樣2行1及2 (1 1)ADDWR0,R1 ;結果行 1 及 2 (12) STOREMEMORY5RO ;儲存結果行 1 及 2 (13) UNPACKHDOR2,R2 ;複製行 3 及 4 (14) MOVER3,R2 ;拷貝行 3 及 4 (15) MADDR2,R5 ;乘累計行 3 及 4 (16) SHUFFLER3,R7 ;產生第二資料型樣 (17) MADDR35R6 ;乘累計型樣2行3及4 (18) ADDWR2,R3 ;結果行 3 及 4 (19) STOREMEMORY,R2 ;儲存結果行3及4由二乘_ 加運算,一穿梭,及乘-加結果之一加法產生每一結果。 結果爲16位元,故16結果需要二128位元暫存器。 雖本發明特別可用於由SIMD指令實施位元組資料之 矩陣乘法,但本發明並不限於此乘法。可使用較大資料型 式,僅需減少一暫存器中可儲存之元素數,且較大之矩陣 具有較多之元素需儲存。如被乘數矩陣c之對角線,或乘 數矩陣a之行並不配合於一 S IM D暫存器中,則此等可延 伸至額外暫存器。在使用較大暫存器之一些情形,一行中 資料之轉動可需要暫存器間交換資料。 如所明瞭,說明書中所提”一實施例”,”一些實施例” ,’’或其他實施例”意爲有關實施例中所述一 ·特定特色,結 構,或特性包含於至少一些實施例中,但並非必需包含於 本發明之所有實施例中。各種顯示’’ 一實施例’’,或’’ 一些 -16- (14) (14)200413947 實施例”並非需均指同一實施例。 如說明書說明”可”或’’能’,包含一組成件,特色,結構 ’或特性,此並非必需包含該特定組成件,特色,結構, 或特性。如說明書或申請專利提及”一 ”元素,此並非意爲 僅一個該元素。如說明書或申請專利提及,,一額外”元素, 此並不排除一個以上之額外元素。 受益於本說明之精於本藝之人士可明瞭在本發明範圍 內可作與以上說明及附圖不同之許多其他改變。故此,包 含其任何增補之以下申請專利界定本發明之範圍。 【圖式簡單說明】 自以下本發明之實施例之詳細說明及附圖,可更完全 明暸本發明,然而,此不應限制本發明於所述之特定實施 例,而是僅供說明及瞭解之用。 圖1槪要顯不支持SIMD暫存器之一計算系統; 圖2爲用以記錄供有效矩陣乘法用之資料之程序; 圖3顯示通類4 X 4模組矩陣乘法; 圖4顯示記錄供暫存器基礎之乘法闱之資料; 圖5顯示依圖4記錄後之暫存器; 圖6顯示依圖4及5記錄後之矩陣乘法; 圖7顯示模組矩陣乘法,在此,被乘數矩陣c之一對 角線中之元素數不等於乘數矩陣之一行中之元素數; 圖8顯示記錄供暫存器基礎之乘法用之資料; 圖9顯示在依圖7及8記錄後之矩陣乘法; -17- (15) 200413947 圖1 〇顯示模組矩陣乘法,在此,被乘數矩陣c對胃 線小於乘數a,使用2x3矩陣C及3x4矩陣a ·, 圖11顯示記錄供暫存器基礎之乘法用之資料; 圖1 2顯示在依據圖1 0及1 1記錄後之矩陣乘法; 圖1 3顯示具有正矩陣之模組矩陣乘法; 圖1 4顯示記錄供暫存器基礎之乘法用之資料;及 圖1 5顯示在依據圖1 3及1 4記錄後之矩陣乘法。 元件對照表 1 〇 :電腦系統 1 2 :處理器 】3 :記憶系統 1 4 :內部記憶暫存器 15 : I/O裝置
1 6 :單指令多資料暫存器 1 8 ··資料儲存單元 -18-

Claims (1)

  1. (1) (1)200413947 拾、申請專利範圍 1 . 一種矩陣乘法方法,包含: 將被乘數矩陣c之每一對角線載入於處理器可存取記 憶體中, 依行順序而將乘數矩陣a載入於處理器可存取記憶體 中, 藉由移位一元素而將乘數矩陣a之每一行的元素移位 入暫存器中’且一行的最後一個元素移位至該行的前方, 及藉由將乘數矩陣a的諸行乘上被乘數矩陣c的對角線, 且爲結果矩陣之各行將其乘積加到乘積的和中。 2·如申請專利範圍第i項所述之方法,其中,處理器 可存取之記憶體爲一 S IM D暫存器。 3 ·如申請專利範圍第2項所述之方法,另包含載入一 對角線於處理器之多個SIMD暫存器中。 4.如申請專利範圍第1項所述之方法,其中,乘數a 矩陣在與被乘數c矩陣之對角線相乘之前,藉由相互上下 堆疊乘數矩陣a之拷貝來調整其長度,俾諸行對齊,且一 拷貝之頂列係在一底列及任何其他拷貝之下,以延伸每一 行。 5 .如申請專利範圍第1項所述之方法,其中,被乘數 矩陣c之對角線較乘數矩陣a之行短。 6 ·如申請專利範圍第1項所述之方法,其中,被乘數 矩陣c之對角線較乘數矩陣a之行長。 7.如申請專利範圍第1項所述之方法,其中,移位該 -19- (2) (2)200413947 等元素另包含依預定順序,以c之一對角線乘上a之各行 ;及移位並以c之次一對角線乘上a之各行。 8 ·如申請專利範圍第1項所述之方法,其中,移位該 等元素另包含使用一位元組穿梭操作來轉動諸元素。 9 ·如申請專利範圍第1項所述之方法,其中,各元素 爲一位元組。 1 〇 ·如申請專利範圍第1項所述之方法,其中,乘諸 對角線另包含MAC運算之應用。 1 1 · 一種包含一儲存媒體之物件,該儲存媒體具有指 令儲存於其上,該物件當由一機器予以執行時將導致: 將被乘數矩陣c之每一對角線載入於處理器可存取記 憶體中, 依行順序而將乘數矩陣a載入於處理器可存取記憶體 中, 藉由移位一元素而將乘數矩陣a的每一行的元素移位 入暫存器中,且一行的最後一個元素移位至該行的前方, 及 錯由將乘數a矩陣的諸行乘上被乘數c矩陣的對角線 且爲結果矩陣之各行將其乘積加到乘積的和中。 1 2·如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,處理器可存取之記憶體 爲一 SIMD暫存器。 1 3 ·如申請專利範圍第1 2項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,載入一對角線於處理器 -20- (3) (3)200413947 之多個SIMD暫存器中。 1 4 .如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,乘數a矩陣在與被乘數 c矩陣之對角線相乘之前,藉由相互上下堆疊乘數矩陣a 之拷貝來調整其長度,俾諸行對齊,且一拷貝之頂列係在 一底列及任何其他拷貝之下,以延伸每一行。 1 5 ·如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,被乘數矩陣c之對角線 較乘數a矩陣之行短。 i 6 •如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,被乘數矩陣c之對角線 較乘數a矩陣之行長。 1 7 ·如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,移位乘法及加法元素另 包含依預定順序,以c之一對角線乘上a之各行;及移位 並以c之次一對角線乘上a之各行。 1 8 ·如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,移位乘法及加法之元素 另包含使用一位元組穿梭操作來轉動諸元素。 1 9 ·如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,乘諸對角線另包含 MAC運算之應用。 2 0 ·如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,各元素爲一位元組。 ►21 - (4) (4)200413947 2 1 . —種矩陣乘法系統,包含: 一處理器,具有暫存器,其將被乘數矩陣c之每一對 角線載入於處理器可存取記憶體中,且依行順序而將乘數 矩陣a載入於處理器可存取記憶體中,及 控制邏輯,藉由移位一元素而將乘數矩陣a之每一行 之相乘及相加元素移位入暫存器中,且一行的最後一個元 素移位至該行的前方,及藉由乘數矩陣a之各行乘上被乘 數矩陣c之各對角線,且爲結果矩陣之各行將其乘積加到 乘積的和中。 22·如申請專利範圍第21項所述之系統,其中,處理 器可存取記憶體爲一SIMD暫存器。 2 3 ·如申請專利範圍第22項所述之系統,另包含載入 '—對角線於處理器之多個S IM D暫存器中。 2 4 ·如申請專利範圍第2 1項所述之系統,其中,乘數 矩陣a在與被乘數矩陣c之對角線相乘之前,藉由相互上 下堆疊乘數矩陣a之拷貝來調整其長度,俾諸行對齊,且 一拷貝之頂列係在一底列係及任何其他拷貝之下,以延伸 每一行。 2 5.如申請專利範圍第21項所述之系統,其中,被乘 數矩陣c之對角線較乘數a矩陣之行短。 2 6.如申請專利範圍第21項所述之系統,其中,被乘 數矩陣c之對角線較乘數a矩陣之行長。 2 7.如申請專利範圍第21項所述之系統,其中’移位 乘法及加法元素之控制邏輯另包含依預定順序’以c之一 •22- (5) (5)200413947 對角線乘上a之各行;及移位並以c之次一對角線乘上a 之各行。 2 8 .如申請專利範圍第2 1項所述之系統,其中,移位 乘法及加法元素之控制邏輯另包含使用一位元組穿梭操作 來轉動各元素。 2 9.如申請專利範圍第21項所述之系統,其中,各元 素爲一位元組。 3 0。如申請專利範圍第2 1項所述之系統,其中,乘諸 對角線另包含MAC運算之應用。 -23 -
TW092131106A 2002-12-20 2003-11-06 Efficient multiplication of small matrices using SIMD registers TWI276972B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/327,445 US20040122887A1 (en) 2002-12-20 2002-12-20 Efficient multiplication of small matrices using SIMD registers

Publications (2)

Publication Number Publication Date
TW200413947A true TW200413947A (en) 2004-08-01
TWI276972B TWI276972B (en) 2007-03-21

Family

ID=32594254

Family Applications (1)

Application Number Title Priority Date Filing Date
TW092131106A TWI276972B (en) 2002-12-20 2003-11-06 Efficient multiplication of small matrices using SIMD registers

Country Status (7)

Country Link
US (1) US20040122887A1 (zh)
CN (1) CN1774709A (zh)
AU (1) AU2003291170A1 (zh)
DE (1) DE10393918T5 (zh)
GB (1) GB2410108B (zh)
TW (1) TWI276972B (zh)
WO (1) WO2004061705A2 (zh)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071405A1 (en) * 2003-09-29 2005-03-31 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using level 3 prefetching for kernel routines
US8966223B2 (en) * 2005-05-05 2015-02-24 Icera, Inc. Apparatus and method for configurable processing
CN101449256B (zh) 2006-04-12 2013-12-25 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
US7844352B2 (en) * 2006-10-20 2010-11-30 Lehigh University Iterative matrix processor based implementation of real-time model predictive control
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US8489825B2 (en) * 2007-04-16 2013-07-16 St-Ericsson Sa Method of storing data, method of loading data and signal processor
US8533251B2 (en) 2008-05-23 2013-09-10 International Business Machines Corporation Optimized corner turns for local storage and bandwidth reduction
US8250130B2 (en) * 2008-05-30 2012-08-21 International Business Machines Corporation Reducing bandwidth requirements for matrix multiplication
CN103250131B (zh) 2010-09-17 2015-12-16 索夫特机械公司 包括用于早期远分支预测的影子缓存的单周期多分支预测
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101638225B1 (ko) 2011-03-25 2016-07-08 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
WO2012162188A2 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
CN102446160B (zh) * 2011-09-06 2015-02-18 中国人民解放军国防科学技术大学 面向双精度simd部件的矩阵乘实现方法
EP2783280B1 (en) 2011-11-22 2019-09-11 Intel Corporation An accelerated code optimizer for a multiengine microprocessor
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
CN103975302B (zh) * 2011-12-22 2017-10-27 英特尔公司 矩阵乘法累加指令
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
KR20150130510A (ko) 2013-03-15 2015-11-23 소프트 머신즈, 인크. 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9384168B2 (en) 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US9426434B1 (en) 2014-04-21 2016-08-23 Ambarella, Inc. Two-dimensional transformation with minimum buffering
US20170046153A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Simd multiply and horizontal reduce operations
US9870341B2 (en) * 2016-03-18 2018-01-16 Qualcomm Incorporated Memory reduction method for fixed point matrix multiply
US10997275B2 (en) 2016-03-23 2021-05-04 Gsi Technology Inc. In memory matrix multiplication and its usage in neural networks
CN111090467B (zh) * 2016-04-26 2025-05-27 中科寒武纪科技股份有限公司 一种用于执行矩阵乘运算的装置和方法
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
JP6786948B2 (ja) * 2016-08-12 2020-11-18 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20180113840A1 (en) * 2016-10-25 2018-04-26 Wisconsin Alumni Research Foundation Matrix Processor with Localized Memory
US10528321B2 (en) 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
US10489480B2 (en) * 2017-01-22 2019-11-26 Gsi Technology Inc. Sparse matrix multiplication in associative memory device
US10817587B2 (en) * 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
DE102018110607A1 (de) * 2017-05-08 2018-11-08 Nvidia Corporation Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen
EP3800563B1 (en) 2017-05-17 2024-01-24 Google LLC Low latency matrix multiply unit
GB2563878B (en) * 2017-06-28 2019-11-20 Advanced Risc Mach Ltd Register-based matrix multiplication
US10534838B2 (en) * 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US10346163B2 (en) * 2017-11-01 2019-07-09 Apple Inc. Matrix computation engine
CN109871236B (zh) * 2017-12-01 2025-05-06 超威半导体公司 具有低功率并行矩阵乘法流水线的流处理器
US11093580B2 (en) * 2018-10-31 2021-08-17 Advanced Micro Devices, Inc. Matrix multiplier with submatrix sequencing
FR3090932B1 (fr) * 2018-12-20 2022-05-27 Kalray Système de multiplication de matrices par blocs
KR102703432B1 (ko) * 2018-12-31 2024-09-06 삼성전자주식회사 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치
US10872038B1 (en) * 2019-09-30 2020-12-22 Facebook, Inc. Memory organization for matrix processing
CN110780849B (zh) * 2019-10-29 2021-11-30 中昊芯英(杭州)科技有限公司 矩阵处理方法、装置、设备及计算机可读存储介质
CN113536220A (zh) * 2020-04-21 2021-10-22 中科寒武纪科技股份有限公司 运算方法、处理器及相关产品
CN112433760B (zh) * 2020-11-27 2022-09-23 海光信息技术股份有限公司 数据排序方法和数据排序电路
CN114090956B (zh) * 2021-11-18 2024-05-10 深圳市比昂芯科技有限公司 一种矩阵数据处理方法、装置、设备及存储介质
CN114398593A (zh) * 2022-01-04 2022-04-26 平头哥(杭州)半导体有限公司 向量矩阵乘法加速方法、单元、加速单元和片上系统
CN115186815B (zh) * 2022-08-01 2025-07-11 上海壁仞科技股份有限公司 数据处理方法及装置、电子装置和介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5170370A (en) * 1989-11-17 1992-12-08 Cray Research, Inc. Vector bit-matrix multiply functional unit
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
JP2003242133A (ja) * 2002-02-19 2003-08-29 Matsushita Electric Ind Co Ltd 行列演算装置
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method

Also Published As

Publication number Publication date
WO2004061705A2 (en) 2004-07-22
CN1774709A (zh) 2006-05-17
HK1074504A1 (zh) 2005-11-11
AU2003291170A1 (en) 2004-07-29
GB0508682D0 (en) 2005-06-08
TWI276972B (en) 2007-03-21
WO2004061705A3 (en) 2005-08-11
GB2410108A (en) 2005-07-20
US20040122887A1 (en) 2004-06-24
DE10393918T5 (de) 2006-03-16
GB2410108B (en) 2006-09-13

Similar Documents

Publication Publication Date Title
TW200413947A (en) Efficient multiplication of small matrices using SIMD registers
CN111859273B (zh) 矩阵乘法器
US8239438B2 (en) Method and apparatus for implementing a multiple operand vector floating point summation to scalar function
CN100461093C (zh) 在分组数据上执行乘-加运算的方法、处理器、设备和系统
JP3750820B2 (ja) パック・データの乗加算演算を実行する装置
CN1534458B (zh) 对分组数据进行操作的方法和装置
US20030084082A1 (en) Apparatus and method for efficient filtering and convolution of content data
JP2018055677A (ja) 外積累算演算のためのプロセッサおよび方法
US20090158013A1 (en) Method and Apparatus Implementing a Minimal Area Consumption Multiple Addend Floating Point Summation Function in a Vector Microprocessor
US8356160B2 (en) Pipelined multiple operand minimum and maximum function
WO1999048025A2 (en) Data processing device and method of computing the cosine transform of a matrix
TW202011184A (zh) 能夠在處理器之指令集結構中提供複合指令之裝置
WO2014101632A1 (zh) 一种基于蒙哥马利模乘的数据处理方法
US12200101B2 (en) Semi-custom accelerator device for bootstrappable fully homomorphic encryption
JPS58146969A (ja) インデツクス限定連続演算ベクトルプロセツサ
Chapman Comparison of modular arithmetic algorithms on GPUs
US9582473B1 (en) Instruction set to enable efficient implementation of fixed point fast fourier transform (FFT) algorithms
Buell et al. A multiprecise integer arithmetic package
US20080228845A1 (en) Apparatus for calculating an n-point discrete fourier transform by utilizing cooley-tukey algorithm
KR20060133446A (ko) 메모리의 판독 및 기록방법, 메모리 제어방법과, 그것을이용한 연산장치
Bos et al. Topics in computational number theory inspired by Peter L. Montgomery
CN111221500B (zh) 大规模并行关联乘法器-累加器
CN119249049A (zh) 一种执行fft的方法、处理器、电子设备及存储介质
JP2007004542A (ja) 半導体信号処理装置
JP3709291B2 (ja) 高速複素フーリエ変換方法及び装置

Legal Events

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