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

Efficient multiplication of small matrices using SIMD registers Download PDF

Info

Publication number
TWI276972B
TWI276972B TW092131106A TW92131106A TWI276972B TW I276972 B TWI276972 B TW I276972B TW 092131106 A TW092131106 A TW 092131106A TW 92131106 A TW92131106 A TW 92131106A TW I276972 B TWI276972 B TW I276972B
Authority
TW
Taiwan
Prior art keywords
matrix
diagonal
multiplier
row
multiplicand
Prior art date
Application number
TW092131106A
Other languages
English (en)
Other versions
TW200413947A (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; CALCULATING OR 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; CALCULATING OR 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

1276972 (1) 玖、發明說明 【發明所屬之技術領域】 本發明係有關矩陣算術。更明確言之,本發明提供使 用SIMD暫存器之矩陣之有效乘法之例。 【先前技術】 習知mxn矩陣之算術操縱爲一般資料處理工作。一 mxn矩陣係由m列及n行所構成。被乘數矩陣c之大小爲 nxm,及乘數矩陣a爲mXp。b的最終大小爲nxp。b中之 値係自c之各行中之値乘上a之各行中之値之乘積的和所 計算出,使用 bij= Σ ::Cik*akj,其中,第一個下標指列及 第二個下標指行。因此,由c之列i及a之行j之內乘積 來計算b之列i及行j中之一元素之値。乘積m * n * p之總 數及相加之總數爲(m-l)*n*p。 爲了最佳結果,已使用矩陣乘法實施以最少之指令數 來執行乘法、加法、及資料排序步驟。由於c爲一係數矩 陣及a爲一資料矩陣,故已發展各種技術,此等技術利用 預儲存c元素之能力,以適合於有效實施之矩陣乘法的方 式。然而,此儲存元素之彈性並不提供給矩陣a之資料。 a之資料通常依邏輯順序而被儲存,其並未察覺任何資料 處理演算法。 矩陣乘法被使用於諸如坐標及色變換、成像演算法、 及許多科學計算工作等應用中。矩陣乘法爲一計算密集之 運算,該運算可藉由微處理器之單一指令多重資料(SIMD) Ϊ276972
ι存器來予以t肋助貫施,s亥微處理器支援習知的sIMD矩 陣乘法,其係藉由使用S IMD指令來排列資料,並實行矩 陣乘法,按照由矩陣乘法等式所指示之計算順序來進行: bij=I ^Cik*akj 其中: b(x)=c(x)*a(x) 相當於 bn bo bo bi •·..................... .一bi··. bi bi bj ................ I b2 b2 t>2 ! ba ba b3 c〇 Ca. c〇; —Co : Cl Ci、 Cl 〇2 c2 c? · c2 C3 c3 c3 〇3 a〇 a〇 a〇 a〇 ai ai .ai ai a2 a2 a? :a2 a? I a3 as a3
從被乘數矩陣c之各列乘以乘數矩陣a之各行之內乘 積(點乘積)而計算出結果矩陣b之元素。b之第一個元素 爲: b〇0 = (c〇〇*a〇〇) + (c〇i*a1〇) + (c〇2*a2〇) + (c〇3*a3〇)
其爲C之第一列與a之第一行之乘積及和。 其次 b〇i=(C〇〇*a〇i) + (C〇i*aii) + (C〇2*a2l) + (C〇3*a3l) 爲再次C之第一列與a之第二行之乘積及和。繼續計 算,直至完成第一列之結果爲止。使用c之次一列來計算 b之次一列,開始爲: bl〇 = (Ci〇*a〇〇) + (Cii*ai〇) + (Cl2*a2〇) + (c13 a3〇) 由適當改變(XOR取代加法),同樣的型樣可用於模組 乘法及習知乘法。 -5 - 1276972 (3) 使用S IMD指令之矩陣乘法之習知實施依乘數矩陣a 之元素儲存於記憶體中之順序而儲存乘數矩陣a之元素於 SIMD暫存器中,並依列順序來儲存被乘數矩陣c之元素 於SIMD暫存器中,而以c之行數重複各列。a之諸元素 依其儲存於記憶體中之順序而被儲存於暫存器中。例如’ 在4行矩陣中,c之第一列之諸元素重複4次,因爲c有 4行。如果c之大小小於SIMD暫存器,則來自c之其他 列之元素亦可儲存於S IMD暫存器中。如果c之大小大於 S IMD暫存器,則將會需要額外之暫存器來儲存該列之資 料。 使用SIMD暫存器中所儲存之資料之結果的矩陣乘法 係藉由將c之元素乘以 a中之元素來開始, c01*a1()...C〇3*a3〇。其次,必需計算在同一暫存器中彼此相 鄰之每一列之乘積的和。如果使用相乘-累加(MAC)指令 ,當計算乘法時,計算這些乘積之和的一部分。典型上, 計算bo。,隨後計算。將矩陣c之次一列載入於具有c 値之暫存器中,以計算矩陣b之次一列之元素。 雖要求正確,但在運算中,可能需要模組乘積之重要 資料重新排序,俾使他們可計算b之元素(在G a 1 〇 i s場算 術運算中,由X〇R提供例如加法運算)。而且,假如結果 並不適配於一暫存器中’則在該等結果可被儲存之前,先 將該等結果在暫存器之間做交換。此二問題導致明顯的計 算額外工作,其影響矩陣乘法處理之速度。 (4) 1276972 【發明內容及實施方式】 圖1大體例舉一計算系統1 0,具有一處理器1 2及記 憶系統1 3 (其可爲任何可存取記億體,包含外部快取記憶 體及外部RAM,及/或部份在處理器內之記憶體),用以執 行指令,而該等指令可由外部提供於軟體中作爲電腦程式 產品,並儲存於資料儲存單元18中。 計算系統10之處理器12亦支援內部記憶體暫存器 14,包含單一指令多重資料(SIMD)暫存器16。暫存器14 在意義上並不限於特定型式之記億體電路。而是,一實施 例之暫存器需要有儲存並提供資料,並實施此處所述之功 能的能力。在一實施例中,暫存器14包含多媒體暫存器 ,例如,用以儲存多媒體資訊之SMID暫存器16。在一實 施例中,多媒體暫存器各自儲存多至1 28位元之壓縮資料 。多媒體暫存器可爲專用之多媒體暫存器,或用以儲存多 媒體資訊及其他資訊之暫存器。在一實施例中,當實施多 媒體操作時,多媒體暫存器儲存多媒體資料,及當實施浮 點操作時,儲存浮點資料。 本發明之電腦系統1〇可包含一或多個1/〇(輸入/輸出 )裝置15,包含顯示裝置,諸如監視器。I/O裝置亦可包 含一輸入裝置,諸如鍵盤、及一游標控制器,諸如滑鼠、 軌跡球、或觸控板。此外,I/O裝置亦可包含網路連接器 ,俾使該電腦系統1〇爲區域網路(LAN)或廣域網路(WAN) 、:[/0裝置15、聲音記錄及/或播放用之裝置,諸如連接 至微音器之聲音數位化器’用以記錄語音辨認用之聲音輸 -7- (5) 1276972 入的一部份。I/O裝置1 5亦可包含可用來捕捉視頻影像 之聲音數位化裝置、硬拷貝裝置(諸如印表機)及CD- ‘ ROM裝置。 在一實施例中,可由資料儲存單元1 8讀取之電腦程 ~ 式產品可包含一具有指令儲存於其上之機器或電腦可讀取 , 媒體’該等指令可被用來程式規劃(亦即定義其操作)電腦 (或其他電子裝置),以依據本發明來實施一程序。資料儲 存單元1 8之電腦可讀取媒體包含,但不限於軟碟、光碟 鲁 、小型光碟、唯讀記憶體(CD-ROMs)、及磁光碟、唯讀記 憶體(ROMs)、隨機存取記憶體(RAMs)、可拭除可程式規 劃唯讀記憶體(EPROMs)、可電拭除可程式規劃唯讀記憶 體(EEPROMs)、磁或光學卡、快閃言己憶體等。 因此,電腦可讀取媒體包含任何型式之適於儲存電子 指令的媒體/機器可讀取媒體。而且,本發明亦可作爲電 腦程式產品來下載。因而,該程式可自遠端電腦(例如伺 服器)轉移至請求電腦(例如客戶)。程式可經由具體化成 φ 載波之資料信號,或經由通訊鏈結之其他傳播媒體(例如 數據機、網路連接等)而轉移。 計算系統10可爲具有一帶有適當之暫存器結構的處 — 理器之通用電腦,或可被組構以供專用或內建應用程式之 用。在一實施例中,本發明之方法被具體化於與電腦系統 之控制操作,且更明確言之,處理器及暫存器之操作有關 的機器可執行指令。指令可用以致使程式規劃有該等指令 之通用或專用處理器來實施本發明之步驟。替換地,本發 -8 - 1276972 (6) 明之步驟可藉由特定的硬體組成件來予以實施,此特定的 硬體組成件含有硬連線邏輯用以實施該等步驟,或藉由程 ~ 式規劃之電腦組成件及定製之硬體組成件的任何組合來予 以實施。 _ 應明瞭知道本技藝之人士使用各種術語及技術來說明 - 通訊、協定、應用、實施、機構等。一種如此之技術爲以 演算法或數學表示式方式之技術之實施的說明。即是,雖 該技術可例如被實施爲執行碼於電腦上,但該技術的表式 鲁 可被更適切且簡潔地表達或溝通爲公式、演算法、或數學 表示式。 因此,習於本藝之人士將會把表示A + B=C之一方塊 認定爲加法函數,其在硬體及/或軟體上之實施將採取二 輸入(A及B),並產生一和輸出(C)。因此,應明瞭使用公 式、演算法、或數學表示式作爲敘述將成爲具有在至少硬 體及/或軟體(諸如電腦系統,其中,本發明之技術可被實 行以及被實施作爲一實施例)中的實際實施例。 鲁 圖2提出用於依據本發明之諸如圖3所例舉之一矩陣 乘法的程序。如顯示於圖2,資料首先藉由重新排序及載 入於記憶體(在本例中,標示爲方塊2 1之暫存器)中來加 以組織’以供有效的矩陣乘法之用。被乘數矩陣c之每一 對角線被載入於不同之暫存器中。使用位在相鄰於右行之 矩陣的拷貝,具有一最右一行之並非在底列中之元素的那 些對角線係延伸至次一列中之元素。對角線之次一元素係 在次一列中。對角線在(諸)暫存器中被複製數次,其次 -9 - 1276972 (7) 數等於乘數矩陣a之行數。對角線中之元素的數目等於c 中之行數。乘數矩陣a之資料依行順序而被載入於(諸) 暫存器中,順序資料係儲存於記憶體中。在暫存器中之a 之每一行中的每一相乘及相加元素之間係移位一個元素( 方塊22)。一行之最後一個元素係移位或轉動至該行的前 SI °被乘數矩陣c之對角線係乘以乘數矩陣a之行(在長 度上可能已做調整)乘(方塊23),且其乘積被加到乘積之 和中’以供結果矩陣b之諸行用(方塊24)。 如果a之一行之元素的數目與c之一行的數目不同, 則調整來自SIMD暫存器中之a之一行之元素的數目,俾 等於c之一行之元素的數目。決定選擇乘數矩陣a之那一 些元;素的一個方法爲首先堆疊乘數矩陣a之拷貝於彼此的 頂部’俾諸行對齊,且使得一拷貝之頂列在底列及另一 拷貝下方。這有效地延伸每一行。由於自經延伸之行所取 出之元素的數目等於被乘數矩陣c之對角線中之元素的數 目。在每一乘法及加法運算後,藉由移位經延伸之行向下 一元素來選擇用於其次一乘法及加運算的元素。如果一被 乘數對角線之長度大於一乘數行,則將從一行中選擇出相 等的値,且如果被乘數對角線之長度小於乘數行,則並非 一行中之所有的値都將被選擇到。 雖以上實例使用內部處理器暫存器,但應明瞭並非恆 需載入內部處理器暫存器,以執行SIMD操作。用於乘法 或其他之運算元可儲存於記憶體中,而非先載入於暫存器 中。一些架構,諸如RISC架構先載入暫存器,但Intel 1276972 (8) 架構可具有在記憶體中之運算元。暫存器及記憶體運算元 之使用的比較爲 pmaddwd xmmo,xmml and pmaddwd xmmo, [eax] 如果儲存於暫存器eax中之位址中的資料與xmml中 之資料相同,則上面那些在xmmo中產生相同的結果。如 果暫存器中之碼用完且記憶體存取快速,則需要使用記憶 體運算元。 圖3顯示依據一般針對圖2所討論之程序之模組式乘 法30。在本例中,模組式乘法爲一 Galois場算術,其中 ,使用XOR來做値相加,而無進位(例如,二進位加法而 無進位,使得1 + 1= 0,〇 + 〇 = 〇,0 + 1 = 1,及1+0 = 1 ’且具有 通常由XOR所計算的結果)。如顯示於圖3,決定正則方 陣13(1)=以14&(\)之乘法30。圖4例舉用於圖3所示矩陣 之乘法之暫存器資料載入型樣40的決定。如見之於圖4 之暫存器排序槪示40中,用於次一步驟之暫存器中之資 料爲呈粗體式。實線表示複製矩陣之界線。在第一步驟, a之諸行係乘以c之對角線。在第二步驟,a之諸行係移 位,並乘以c之次一對角線,如箭頭所示。 圖5例舉由圖4所示之移位所造成之暫存器中之資料 之順序50。如有關圖5之時間步驟(A)所見,暫存器依儲 存於記憶體中之順序而保持c之主對角線及矩陣a之資料 。在圖5之時間步驟(B ),暫存器保持所移位之對角線及 -11 - 1276972 (9) 行,移位行係藉由使用一位元組置換操作而轉動元素來f 以實施。注意a中之諸行可向上移位,且c中之選擇對角 - 線可被選擇至左方而非右方。 圖6另顯不用以乘4x4矩陣a及c之運算60。每一 · 時間步驟之資料依如同以上有關圖4及5所述來做排序。 . 在每一時間步驟C,D,E,及F,計算a及c之模組乘積 。乘積係以XOR而被加到其他步驟之乘積。 以下假碼片段提供矩陣乘法之一實例實施。 春 (1) LOAD R3,MEMORY ; c 矩陣對角線 1 (2) LOAD R4,MEM0RY ; c 矩陣對角線 2 (3) LOAD R5,MEM0RY ; c 矩陣對角線 3 (4) L0AD R6,MEMORY ; c 矩陣對角線 4 (5) LOAD R7,MEMORY ;資料置換型樣 (6) LOAD RO,MEMORY ;自記憶體載入a資料(第一型 樣) (7) MOVE R1,R0 ;拷貝第一資料型樣 φ (8) MODMUL R0,R3 ;以對角線丨(主對角線)乘a資料 (9) SHUFFLER1,R7,產生第二a資料型樣轉動行 (10) MOVE R2,R1 ;拷貝第二a資料型樣 · (1 l)MODMUL R1,R4 ;以對角線2乘第二&資料型樣 (12) XOR R0,R1 ;將第二型樣力日到於第一 (13) SHUFFLE R2,R7 ;產生第三a資料型樣轉動行 (14) MOVE R1,R2 ;拷貝第三a資料型樣 (15) MODMUL R2,R5 ;由對角線3乘第三a資料型樣 -12- (10) 1276972 (16) XOR R0,R2 ;加第三型樣 (17) SHUFFLE R1,R6 ;產生第四&資料型樣轉動行 (18) MODMULRl,R6;以對角線4乘第四資料型樣 (19) XOR R0,R1 ;加第四型樣 (20) STOR EMEMORY,R〇 ;儲存輸出矩陣
指令9至12代表本方法之基本運算。乘數&矩陣之 諸行在指令9中轉動。其結果在指令1 〇中拷貝,因爲其 係藉由指令11中之乘法而被覆寫,及乘積在指令12中被 加到乘積之和中。 非正則矩陣亦可受到本發明之程序之一實施例。例如 ,考慮圖7之矩陣乘法70,其中,被乘數矩陣c之對角 線中之元素的數目不等於乘數矩陣a之一行中之元素的數 目,且被乘數矩陣c之對角線大於乘數矩陣a之行。在本 例中,3x2矩陣c乘以2x4矩陣a之模組式乘法。圖8說
明本例中用以選擇及排序SIMD暫存器中之資料的方法。 c之第一個對角線爲coo,c11Q,c2Q。此對角線係乘以a之 延伸行之首3値。由於a之行長度僅爲2 ’故a矩陣依順 序80而相互堆疊於彼此之上,如顯示於圖8 ’以有效延 伸行之長度。觀察此之另一方法爲,一旦到達一行之未端 時,此捲回或轉回至第一値。圖9顯示C之第一個對角線 及a 値爲 c 1 〇 5 之延伸行之値之資料排列90。注意a在右邊之首3 a00,a1(),a。。,故a〇〇重複。c之次一對角線爲c01 ’ c21,及a之次一行爲ai〇,a〇o,ho,其係藉由每一 延伸行中向下移位一元素選擇,如顯示於圖8。圖9另例 -13 - (11) 1276972 舉用以乘矩陣a及c之運算。每一時間步驟之畜料順序 90係如以上有關圖7及8所述。在每一時間步驟,計算a 及c之模組式乘積。乘積係以x〇r而被加到其他步驟之 乘積中。 圖1〇顯示使用2x3矩陣c及3x4矩陣a之模組式乘 〆 法1 00,具有被乘數矩陣C之對角線短於乘數矩陣a。如 顯示於圖1 1,順序選擇1 10設定c之第一個對角線爲c00 及!。此對角線係乘以a之延伸行之首二値aQ()及aiQ。a 之行長度爲3,但僅選擇行a之二値。圖12顯示暫存器 中各値之資料排列1 20。有三對暫存器,具有來自矩陣a 及c之値,該等値相乘在一起,因爲矩陣c具有三個對角 線。僅a之第一行之首2値aG()及a χ 〇㈤儲存於第一暫存器 中。在次一對暫存器中,c之對角線爲C()1及Cl2,藉由向 下移位來選擇來自a中之次些値。例如,來自第一行之値 爲a1G及a2G。第三對暫存器保持第三個對角線及a之向下 移位之行之次些値。在此情況下,來自第一行之値爲a20 及 a〇〇 ° 如所明暸,圖3-12之以上說明敘述無需相乘/累加 (M A C )指令之算術運算。代之者,說明g a 1 〇 i s場算術,其 使用模組式乘法及用於加法之X Ο R。如果被乘數之一列 及乘數之一行之元素之乘積的和係藉由與原矩陣元素相同 之資料型式來予以表示,則在習知算術與Galois場算術 間之唯一的不同爲用於加法及乘法之方法。所有的型樣保 持相同。假如結果所需之資料型式在大小上大於原始資料 -14- (12) 1276972 之資料型式,則矩陣元素之資料型式在矩陣相乘之前增加 (通常大小加倍)。在此情況下,儲存恆定之被乘數矩陣資 料做爲較大的資料型式。例如,儲存位元組大小的係數爲 1 6位元的整數。乘數矩陣之資料型式在圖3 -1 2所示之計 _ 算前改變。通常使用S IMD解壓縮操作來改變資料型式。 · 這將會增加那時所需之暫存器的數目,但否則,針對 Galois場或習知算術,圖3-12所述之操作不變。 如果可用M A C指令,則可進行矩陣乘法,如用有關 修 以下圖13-15所示者。雖MAC指令可用於任何形式之算 術(包括Galois場算術),但在習知定點算術之情況中,一 MAC計算2乘積,相加這些乘積,且通常寫入結果成爲 原始被乘數及乘數之大小的二倍之資料型式(典型爲位元 組至16位元字及16位元字至雙倍32位元字)。在Galois 場算術之情形,MAC使用模組式乘法而計算2積積,使 用XOR運算來相加該等乘積,及寫入相同資料型式之結 果。代表Galois場算術之和或乘積所需之位元的數目與 φ 代表原始資料所需之位元的數目相同。習知算術用之 MACs大部份見之於所有SIMD指令集(亦即,在Intel架 構指令集中之madd)中。因此,圖13顯示具有正則矩陣 之乘法130,並使用適當之MAC指令。如顯示於圖14, 排序140以粗體型式表示連續步驟用之暫存器中之資料。 實線表示複製矩陣之界線。注意在正則矩陣乘法中,元素 爲兩個値,且每一移位爲兩個値。在正則乘法情況中,在 矩陣c之對角線中之値的數目爲矩陣a之一行的二倍,如 -15- (13) 1276972 顯示於圖1 4 (本實例中排序有8個値)。複製a矩陣之每一 行,如顯示於圖15a及b之暫存器排序I50中。因此’使 a矩陣之首二行保持於一暫存器中,及次一订保丨寸於另一 暫存器中。正則矩陣乘法用之資料排序的方法與模組式乘 法用之資料排序的方法相同,除了在正則矩陣情況中’諸 元素爲兩個値,對次一步驟之資料順序的移位爲兩個値’ 並複製乘數之行。施加乘-加運算於a及c中之相鄰値。 此運算乘上a及c中之値,並加上相鄰之乘積。乘-加結 果係儲存於原始資料之二倍大小之空間中。例如’在步驟 (1)中,madd運算計算a。。及cG〇之乘積和a1G及C(n之乘 積,並使此二乘積相加。同樣地,,在步驟(2)中,madd 運算計算a2〇及CG2之乘積和a3G及CG3之乘積,並使此二 乘積相加。madd運算之結果相加,以提供矩陣乘法之結 果 b 〇 〇。 使用16位元字及128位元暫存器之正則矩陣乘法用 之假碼係例舉如下: (1) LOAD R5,MEMORY ;係數對角線 i (2) LO AD R5, MEMORY ;係數對角線 2 (3) LOAD R5,MEMORY ;資料置換型樣 (4) LO AD R5, MEMORY;自記憶體載入資料(第一型樣) (5) MOVE R2,RO ;拷貝第一資料型樣 (6) UNPACKLDQ R0,R0 ;複製資料行 i 及 2 (7) MOVE R1,R0 ;拷貝行 1 及 2 (8) MADD RO,R5 ;乘累力□ 1 及 2 1276972 (14) (9) SHUFFLE R1,R7 ;產生第二資料型樣 (10) MADDR1,R6;乘累加型樣2行1及2 (11) ADDW RO,Rl ;結果行 1 及 2 (12) STORE MEMORY,RO ;儲存結果行 1 及 2 (13) UNPACKHDQ R2,R2 ;複製行 3 及 4 (14) MOVE R3,R2 ;拷貝行 3 及 4 (15) MADD R2,R5 ;乘累加行 3 及 4 (16) SHUFFLE R3,R7 ;產生第二資料型樣 (17) MADD R3,R6 ;乘累加型樣2行3及4 (18) ADDW R2,R3 ;結果行 3 及 4 (19) STORE MEMORY,R2 ;儲存結果行 3 及 4 每一結果係藉由兩個乘-加運算、一置換、及該乘-加 結果之一加法來予以產生。結果爲1 6位元,故1 6個結果 需要兩個128位元暫存器。 雖本發明特別有用於以S IMD指令所實施之位元組資 料之矩陣的乘法,但本發明並不限於如此之乘法。可使用 較大的資料型式,僅需減少一暫存器中可儲存之元素的數 目’且較大之矩陣具有需儲存之較多的元素。如果被乘數 矩陣c之對角線,或乘數矩陣a之行並不配合於一 SIMD 暫存器中,則它們可延伸至額外暫存器。在使用較大暫存 器之一些情況中,一行中資料之轉動可能需要交換資料於 暫存器之間。 如所明瞭,說明書中所提” 一實施例,’,” 一些實施例” ,”或其他實施例”意爲有關實施例中所述一特定特色,結 -17- (15) 1276972 構,或特性包含於至少一些實施例中,但並非必需包含於 本發明之所有實施例中。各種顯示”一實施例”,或”一些 實施例”並非需均指同一實施例。 如說明書說明”可”或”能”包含一組成件,特色,結構 ~ ,或特性,此並非必需包含該特定組成件,特色,結構, ’ 或特性。如說明書或申請專利提及”一 ”元素,此並非意爲 僅一個該元素。如說明書或申請專利提及”一額外”元素, 此並不排除一個以上之額外元素。 ® 受益於本說明之精於本藝之人士可明瞭在本發明範圍 內可作與以上說明及附圖不同之許多其他改變。故此,包 含其任何增補之以下申請專利界定本發明之範圍。 【圖式簡單說明】 自以下本發明之實施例之詳細說明及附圖,可更完全 明瞭本發明,然而,此不應限制本發明於所述之特定實施 例,而是僅供說明及瞭解之用。 φ 圖1槪要例舉一支援SIMD暫存器之計算系統; 圖2爲用以記錄供有效矩陣乘法用之資料之程序; 圖3例舉一般4x4模組式矩陣乘法; . 圖4例舉記錄供以暫存器爲基礎之乘法用之資料; 圖5例舉依據圖4重新排序後之暫存器; 圖6例舉依據圖4及5重新排序後之矩陣乘法; 圖7例舉模組式矩陣乘法,其中,被乘數矩陣◦之對 角線中之元素的數目不等於乘數矩陣之一行中之元素的數 -18- 1276972 (16) g ; * 圖8例舉供以暫存器爲基礎之乘法用之資料的重新排 序; 圖9例舉在依據圖7及8重新排序後之矩陣乘法; - 圖10例舉使用2x3矩陣c及3x4矩陣a之模組式矩 . 陣乘法,其中,被乘數矩陣c之對角線小於乘數a ; 圖1 1例舉供以暫存器爲基礎之乘法用之資料的重新 排序; 圖1 2例舉在依據圖1 〇及1 i重新排序後之矩陣乘法 圖1 3例舉具有正則矩陣之模組式矩陣乘法; 圖1 4例舉供以暫存器爲基礎之乘法用之資料的重新 排序;及 圖1 5例舉在依據圖1 3及1 4重新排序後之矩陣乘法 〇 元件對照表 1 0 :計算系統 · 1 2 :處理器 - 13 · g己彳思系統 14 :內部記憶體暫存器 15 : I/O裝置 16 :單一指令多重資料(SIMD )暫存器 1 8 :資料儲存單元 -19-

Claims (1)

  1. (1) 1276972 拾、申請專利範圍 1 · 一種矩陣乘法方法,包含: 將被乘數矩陣C之每一對角線載入於處理器可存取記 憶體中, 依行順序而將乘數矩陣a載入於處理器可存取記憶體 中, 藉由移位一元素而將乘數矩陣a之每一行的元素移位 入暫存器中’且一行的最後一個元素移位至該行的前頭, 及藉由將乘數矩陣a的諸行乘上被乘數矩陣c的諸對角線 ’且將其乘積加到乘積的和中以供結果矩陣之諸行用。 2 ·如申請專利範圍第1項所述之方法,其中,該處理 器可存取記憶體爲一 SIMD暫存器。 3 ·如申請專利範圍第2項所述之方法,另包含載入一 對角線於處理器之多個SIMD暫存器中。 4 ·如申請專利範圍第1項所述之方法,其中,乘數a 矩陣在與被乘數c矩陣之對角線相乘之前,藉由堆疊乘數 矩陣a之拷貝於彼此之頂部上來調整其長度,俾諸行對齊 ,且一拷貝之頂列係在一底列及任何其他拷貝之下’以延 伸每一行。 5 ·如申請專利範圍第1項所述之方法,其中,被乘數 矩陣c之對角線較乘數矩陣a之行短。 6·如申請專利範圍第1項所述之方法,其中’被乘數 矩陣c之對角線較乘數矩陣a之行長。 7.如申請專利範圍第1項所述之方法,其中,移位該 1276972 (2) 等元素另包含依預定順序,以c之一對角線乘上a之諸行 ;及移位並以c之次一對角線乘上a之諸行。 8 ·如申請專利範圍第1項所述之方法,其中,移位該 等元素另包含使用一位元組置換操作來轉動諸元素。 ‘ 9·如申請專利範圍第1項所述之方法,其中,各元素 - 爲一位元組。 1 0 ·如申請專利範圍第1項所述之方法,其中,乘諸 對角線另包含MAC運算之應用。 φ 1 1 · 一種包含一儲存媒體之物件,該儲存媒體具有指 令儲存於其上,該等指令當由一機器來予以執行時將導致 將被乘數矩陣c之每一對角線載入於處理器可存取記 憶體中, 依行順序而將乘數矩陣a載入於處理器可存取記憶體 中, 藉由移位一元素而將乘數矩陣a的每一行的元素移位 φ 入暫存器中,且一行的最後一個元素移位至該行的前頭, 及 藉由將乘數a矩陣的諸行乘上被乘數c矩陣的諸對角 線且將其乘積加到乘積的和中以供結果矩陣之諸行用。 12.如申請專利範圍第11項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,該處理器可存取記憶體 爲一 SIMD暫存器。 13·如申請專利範圍第12項所述之包含具有指令儲存 -21 - 1276972 (3) 於其上之儲存媒體的物件’其中’載入一對角線於處理器 之多個SIMD暫存器中。 14.如申請專利範圍第11項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,乘數a矩陣在與被乘數 ' c矩陣之對角線相乘之前’藉由堆疊乘數矩陣a之拷貝於 - 彼此之頂部上來調整其長度’俾諸行對齊’且一拷貝之頂 列係在一底列及任何其他拷貝之下,以延伸每一行。 1 5 .如申請專利範圍第1 1項所述之包含具有指令儲存 · 於其上之儲存媒體的物件,其中,被乘數矩陣c之對角線 較乘數a矩陣之行短。 1 6 .如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,被乘數矩陣c之對角線 較乘數a矩陣之行長。 1 7 ·如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,移位乘法及加法元素另 包含依預定順序,以c之一對角線乘上a之諸行;及移位 φ 並以c之次一對角線乘上a之諸行。 1 8 ·如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,移位乘法及加法之元素 另包含使用一位元組置換操作來轉動諸元素。 1 9 ·如申請專利範圍第1 1項所述之包含具有指令儲存 於其上之儲存媒體的物件,其中,乘諸對角線另包含 MAC運算之應用。 20·如申請專利範圍第1 1項所述之包含具有指令儲存 -22· (4) 1276972 於其上之儲存媒體的物件,其中,各元素爲一位元組。 2 1 _ —種矩陣乘法系統,包含: 一處理器,具有暫存器,該等暫存器將被乘數矩陣c 之每一對角線載入於處理器可存取記憶體中,且依行順序 而將乘數矩陣a載入於處理器可存取記憶體中,及 控制邏輯,藉由移位一元素而將乘數矩陣a之每一行 之相乘及相加元素移位入暫存器中,且一行的最後一個元 素移位至該行的前頭,及藉由乘數矩陣a之諸行乘上被乘 數矩陣c之諸對角線,且將其乘積加到乘積的和中以供結 果矩陣之諸行用。 22.如申請專利範圍第21項所述之系統,其中,該處 理器可存取記憶體爲一 SIMD暫存器。 23 .如申請專利範圍第22項所述之系統,另包含載入 一對角線於處理器之多個SIMD暫存器中。 24·如申請專利範圍第21項所述之系統,其中,乘數 矩陣a在與被乘數矩陣c之對角線相乘之前,藉由堆疊乘 數矩陣a之拷貝於彼此之頂部上來調整其長度,俾諸行對 齊,且一拷貝之頂列係在一底列係及任何其他拷貝之下, 以延伸每一行。 2 5 ·如申請專利範圍第2 1項所述之系統,其中,被乘 數矩陣c之對角線較乘數a矩陣之行短。 2 6 ·如申請專利範圍第2 1項所述之系統,其中,被乘 數矩陣c之對角線較乘數a矩陣之行長。 2 7 ·如申請專利範圍第2 1項所述之系統,其中,移位 -23- 1276972 (5) 乘法及加法元素之控制邏輯另包含依預定順序,以c之一 對角線乘上a之諸行;及移位並以c之次一對角線乘上a 之諸彳了。 2 8 ·如申請專利範圍第2 1項所述之系統’其中’移位 $法及加法元素之控制邏輯另包含使用一位元組置換操作 來轉動各元素。 29·如申請專利範圍第21項所述之系統,其中,各元 素爲一位元組。 30·如申請專利範圍第21項所述之系統,其中,乘諸 對角線另包含MAC運算之應用。 1276972 附件3 第 921311Q6 號專利申請案 中文圖式替換頁 民國95年10月23日修正
    1276972 SI \ ? 9 s r^lr食:
    i c? S i M rj «η «? J5 C? <? c? 暑 孑 m ce c? c? 2 m c? <n <n c? cd fn CS iff oR + Λ | r 4k A,, s . o O jn i c? «? 3 ci 3 c? o m ed cJ tn c? c? i? 3 <n C? J w, rv £ J to β j n E 1276972 柒、指定代表圖: (一) 、本案指定代表圖為:第L圖 (二) 、本代表圖之元件代表符號簡單說明: 10 計 算 系 統 12 處 理 器 13 記 憶 系 統 14 內 部 記 憶 體 暫 存 器 15 I/O裝置 16 單 一 指 令 多 重 資 料(SIMD )暫存器 18 資 料 儲 存 單 元
    捌、本案若有化學式時,請揭示最能顯示發明特徵的化學 式:
    •3-
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 TW200413947A (en) 2004-08-01
TWI276972B true 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 (8)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671268B2 (en) 2005-05-05 2014-03-11 Icera, Inc. Apparatus and method for configurable processing

Families Citing this family (54)

* 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
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
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
WO2008126041A1 (en) * 2007-04-16 2008-10-23 Nxp B.V. 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
WO2012037491A2 (en) 2010-09-17 2012-03-22 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
EP2710480B1 (en) 2011-05-20 2018-06-20 Intel Corporation An interconnect structure to support the execution of instruction sequences by a plurality of engines
CN102446160B (zh) * 2011-09-06 2015-02-18 中国人民解放军国防科学技术大学 面向双精度simd部件的矩阵乘实现方法
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
IN2014CN03678A (zh) 2011-11-22 2015-09-25 Soft Machines Inc
US9960917B2 (en) * 2011-12-22 2018-05-01 Intel Corporation Matrix multiply accumulate instruction
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register 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
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
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
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
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction 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
CN109074845B (zh) * 2016-03-23 2023-07-14 Gsi 科技公司 存储器内矩阵乘法及其在神经网络中的使用
CN107315574B (zh) * 2016-04-26 2021-01-01 安徽寒武纪信息科技有限公司 一种用于执行矩阵乘运算的装置和方法
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
BR112019022916A2 (pt) 2017-05-17 2020-05-26 Google Llc Unidade de multiplicação de matrizes de baixa latência
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
CN109871236A (zh) * 2017-12-01 2019-06-11 超威半导体公司 具有低功率并行矩阵乘法流水线的流处理器
US11093580B2 (en) * 2018-10-31 2021-08-17 Advanced Micro Devices, Inc. Matrix multiplier with submatrix sequencing
KR20200082617A (ko) * 2018-12-31 2020-07-08 삼성전자주식회사 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치
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 深圳市比昂芯科技有限公司 一种矩阵数据处理方法、装置、设备及存储介质

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671268B2 (en) 2005-05-05 2014-03-11 Icera, Inc. Apparatus and method for configurable processing

Also Published As

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

Similar Documents

Publication Publication Date Title
TWI276972B (en) Efficient multiplication of small matrices using SIMD registers
US8984043B2 (en) Multiplying and adding matrices
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
JP4750157B2 (ja) データを右方向平行シフトマージする方法及び装置
US6385634B1 (en) Method for performing multiply-add operations on packed data
EP1302848B1 (en) A microprocessor having a multiply operation
JP7454377B2 (ja) データ処理装置における拡大算術計算
CN114391135A (zh) 用于对连续分配数据执行存储器内处理操作的方法及相关存储器装置和系统
JP2020533691A (ja) Simd命令を用いた効率的な直接畳み込み
US20020010730A1 (en) Accelerated montgomery exponentiation using plural multipliers
US20030084082A1 (en) Apparatus and method for efficient filtering and convolution of content data
TWI325571B (en) Systems and methods of indexed load and store operations in a dual-mode computer processor
JP2001527673A (ja) モントゴメリー乗算に基づくモジュラ乗算及び累乗の改善された装置と方法
JP2009169935A (ja) 並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータプログラム製品
BR9612911B1 (pt) aparelho e mÉtodo para realizar operaÇÕes multiplicaÇço-adiÇço em dados em pacote.
US20120131308A1 (en) System, device, and method for on-the-fly permutations of vector memories for executing intra-vector operations
JP4349265B2 (ja) プロセッサ
JP2020508512A (ja) データ処理装置における乗累算
TWI780116B (zh) 用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器的向量逐元素操作
WO2014101632A1 (zh) 一种基于蒙哥马利模乘的数据处理方法
TWI243332B (en) Registers for 2-D matrix processing
JP2011141823A (ja) データ処理装置および並列演算装置
Shahbahrami et al. Matrix register file and extended subwords: two techniques for embedded media processors
JP7020555B2 (ja) 情報処理装置、情報処理方法、及びプログラム
TWI773783B (zh) 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體

Legal Events

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