TW200413947A - Efficient multiplication of small matrices using SIMD registers - Google Patents
Efficient multiplication of small matrices using SIMD registers Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix 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)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 -
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)
| 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)
| 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 |
-
2002
- 2002-12-20 US US10/327,445 patent/US20040122887A1/en not_active Abandoned
-
2003
- 2003-11-06 TW TW092131106A patent/TWI276972B/zh not_active IP Right Cessation
- 2003-11-21 CN CNA2003801070957A patent/CN1774709A/zh active Pending
- 2003-11-21 WO PCT/US2003/037564 patent/WO2004061705A2/en not_active Ceased
- 2003-11-21 DE DE10393918T patent/DE10393918T5/de not_active Ceased
- 2003-11-21 GB GB0508682A patent/GB2410108B/en not_active Expired - Fee Related
- 2003-11-21 AU AU2003291170A patent/AU2003291170A1/en not_active Abandoned
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 |