TWI230869B - SIMD processor with scalar arithmetic logic units - Google Patents

SIMD processor with scalar arithmetic logic units Download PDF

Info

Publication number
TWI230869B
TWI230869B TW093100869A TW93100869A TWI230869B TW I230869 B TWI230869 B TW I230869B TW 093100869 A TW093100869 A TW 093100869A TW 93100869 A TW93100869 A TW 93100869A TW I230869 B TWI230869 B TW I230869B
Authority
TW
Taiwan
Prior art keywords
scalar
arithmetic logic
vector
unit
logic unit
Prior art date
Application number
TW093100869A
Other languages
English (en)
Other versions
TW200413946A (en
Inventor
Boris Prokopenko
Timour Paltashev
Derek Gladding
Original Assignee
Via Tech 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 Via Tech Inc filed Critical Via Tech Inc
Publication of TW200413946A publication Critical patent/TW200413946A/zh
Application granted granted Critical
Publication of TWI230869B publication Critical patent/TWI230869B/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Description

1230869 五、發明說明(1) 發明所屬之技術領域 本發明有關於圖形向量(vector )處理機,特別有關一 種包括純量(scalar)算術邏輯單元(arithmetic logic units; ALUs)的圖形處理機,可用在處理圖形向量資料。 先前技術
圖形資料可利用幾何(XYZW)資訊或像素值(RGBA)資訊 為成分,以向量形式組合來表示。通常用來處理這些向量 的幾何計算機(geometry engine)會將所有的資訊組合成 分在同一時間處理,因而需要複雜的内部構造,並且資料 輸入與輸出之間也需要較長的時間才能完成圖形資料的處 理。一般幾何計算機是任何現代圖形加速器(g r a p h i c s accelerator )中重要的前端部分。幾何計算機處理資料的 速度會影響圖形加速器結構整體的效率。 最近圖形AP I發展必須要支持特殊指示,並且規定硬 體處理幾何與像素值向量的能力。由於這些高標準實施規 定’現在的圖形計算機(graphics engine)都被實施成能 接收複雜輸入資料與内部資料閃(c r 0 s s b a r s),以平行方 式處理全部向量之組合成分的一個單元。再者,為了達到 這些實施規定,圖形計算機利用額外硬體與額外時間,在 單指令多資料(Single Instruct ion, Multiple Data; SIMD)或多指令多資料(Mult i pie Instruction,Multi pi e
Data; MIMD)的架構中使用多向量單元。因此導致需要槌e 長指令(Very Long Instruction Word; VLIW)的架構,其 中包括複雜的控制與同步單元以支持多線執行 、
1230869
(multithreaded execution)的程式。 請參閱第1圖’第1圖顯示習知技術之向量處理 的資料流程1 0。圖形向量1 2之組合成分X丨、γ i、7 = 輸入至緩衝記憶體14。每一個圖形向量丨2從緩衝記憶^ι4 ,序讀出到向量ALU 16。單一向量ALU 16同一時間平行運 算向量12的每一個組合成分。向量Au 16包括一個執g 殊運作的特殊功能單元18。ALU 16需要大而複雜的内部結 構以便同時執行向量1 2之四個組合成分(即X i、γ i。 以及Wi)的運算。此外,ALU 16的内部協定以及通气1因 運算的平行性質而更複雜。向量ALU 16產生最終輪出向量 20 ’其中包括的組合成分有X〇ut、Y〇ut、z〇ut、以及 Wout。習知的向量處理單元同時處理各向量12的所有組合 成分’因此這樣的向量處理單元之架構為平行(全向量或 橫向)向量成分流。 請參閱第2圖,第2圖顯示習知的向量處理機處理一組 資料的資料途徑圖。第2圖的例子中,”正規化差額”的函 數顯示如下: vector Normalized一Difference(vector VI, vector V2)V1 ->r0.xyzwV2 ->rl.xyzw (xyzw為圖形資料的組合成分) 該函數對應的指令如下: SUB r2, rO,rl//subtraction of all components DP3 r3·x, r2, r2//dot product of 3 components (x,y,z) with result in x_component
1230869 五、發明說明(3) RSQ r3. X, r3,x//reciprocal square root of result in x-component MUL r2, r2, r3.x//scaling all components with RSQ result 請參閱第2圖,其中第一行指令週期(i)將r〇與ri相 減’並產生各組合成分x、y、z、w的輸出向量r2。第二行 指令週期(2)將r2與本身點積(dot product),只有在X組 合成分如r3· X所得到的答案。第三行指令週期(3)中,計 算出r 3 · X的平方根倒數。如第2圖所示,第三行指令週期 (3 )中’只有在向量的χ組合成分上運算。第四行指令週期 (jO中’ r2的組合成分於是按照χ組合成分(即r3· χ)的比例 =整’以產生正規化向量差r2。使用習知技術處理四組的 資料,程式會重複四次,也就是一共會花費執行十六行指 令週期的時間。 習知 量的組合 間成為處 要較大的 理的多位 匯流排, 的向量處 本發 個使用純 處理單元 技術之向量處理單元,由於要同時(平行)處理向 成分’結構必須為非常複雜。也因此潛伏延遲時 f過程中極大的問題。習知的向量處理單元也需 才曰令形式’可以包括控制向量組合成分選路及處 元。習知的向量處理單元並需要複雜的輸入資料 以^持圖形API所需要的功能。最後,使用習知 理單元的硬體或軟體必須要偵查資料相依性。 明針對上述習知的向量處理單元的缺點,提供一 量ALU的向量處理單元。本發明提供的SIMD純量 ,因此會比習知的單元更小而簡單。本發明更因
1230869 五、發明說明(4) 提供一種系統,系統的指令組比習知 簡單,並降低所需的潛伏延遲時間。㈣里處理單元更 發明内容 有鐘於此,本發明提供S IMD純量處理單;^ 兩個由多成分組合而成的向量。s丨MD純量處地理至少 f少-個可運作的純量算術邏輯單元,從輸::更包括 2收向量的組合成分。純量算術邏輯單元=緩衝器 ! ϊ ΐ i執行函數運作,以判斷結果。simd純量::ί組 ι括輸出轉換器,可從算術邏輯單 ^70 aUel vector c〇mponent flow)。 S I MD純量處理單元更包括與純量 訊的特殊功能單元。特4〗ί邏輯早70相互通 仃某些特殊運算,俜纯詈笪 欣刀上執 SIMD純詈卢^ H里异術邏輯早70無法做到的運算。 輯單元接:Jri。括多工器’多工器從各純量算術邏 C成☆’並為特殊功能單元選擇-個組 口咸刀執仃特殊運算。 常向量會有i個組合成分,純量處理單元於是會包 '個純量算術邏輯單元(scalar arithmetic 1〇仏“ u^nts,SCU)。每一個純量算術邏輯單元係一個連接至另 遲至3令傳送至第一個純量算術邏輯單元後會先被延 雄f被傳送至隨後的純量算術邏 術邏輯單元至少有一平凡母1U也里异 個連接的純量算:存$ ’以延遲傳給下-里异術邏輯早兀的指令。下一個純量算術邏輯
1230869 五、發明說明(5) 單元的位址與控制訊號也可因此被延遲。 次純量算術邏輯單元更包括一個為要運算向量組合成分 的貝料路徑區’以及一個運算資料路徑區的控制與位址模 組。純量算術邏輯單元也可包括至少一個延遲共用資料至 下個連接的純量算術邏輯單元的資料延遲暫存器。
依照本發明提供一種方法,以SIMD純量處理單元,處 理至J兩個由多成分組合而成的向量。本發明之方法最初 1 =輸入資料緩衝器,先將向量的組合成分從平行向量成 为^重新排列成連續向量成分流(sequential vect〇r component f l〇w)。接著,以一各自的純量算術邏輯單元 Ab二_個向篁組合成分的運算,並產生運算結果。特殊功 :::土可在組合成分上執行運算。最後運算結果的各組 、:“會被輸出至轉換器,以重新排列成平行向量成分 按 純量處 可被連 元。純 資料路 組合成 區。依 括一個 量組合 路徑區 照本發 理單元 續連接 量算術 徑區。 分到下 據本發 暫存器 成分。 的位址 明提供的 上處理向 到另一個 邏輯單元 純量算術 一個連接 明,純量 ,用來延 純量算術 與控制模 量組合成 向量處理 有一個執 邏輯單元 的純量算 算術邏輯 遲每個通 邏輯單元 組。純量 邏輯單元, 分。各純量 單元的純量 行向量組合 更有一個延 術邏輯單元 單元的延遲 過純量算術 更包括一個 可用在SIMD 算術邏輯單元 算術邏輯單 成分之運算的 遲發佈向量的 的延遲暫存器 暫存器區可包 邏輯單元的向 用來控制資料 算術邏輯單元的一個位址
1230869 五、發明說明(6) _ 與控制延遲暫存器可延遲傳位址與控制訊號 的純量算術邏輯單元所需要的時間。純旦瞀下個連接 可包括-個共用資料延遲暫存器,用來::2單元更 至資料路徑區的時間。 寻&用資料 依照本發明,可提似聽處理單元,用 X、y、z、w組合成分的向量。各個χ、y、ζ έ人栝 有多個值。SIMD處理單元有一個正交存取記合成分都 (orthogonal access memory),將各也人土、八
量成分流排列成連續向量成分流處中理T 算術邏輯單元,分別用來執行;正 = 殊功能單元’與這排純量算術邏輯單元相;更 =殊=此早兀執行從其中一個純量算術邏輯單元傳 理ΐ:更if 送回原本的純量算術邏輯單元。SIM“ ===將從純量處理機得到的結果,*新排列成 實施方式 爽妒Γ之目的只在於解釋本發明之最佳實施例,並非用 ^ 發明。第3圖描述依據本發明建造的SI MD向量處 =。圖形向量12輸人至SIMD處理單元3〇的輸人資料緩 資二雄i使圖形向量1 2可被重新安排成適當的順序。輸入 〆緩衝器32具體來說是四組正交存取記憶體,可將組合 0608-l〇426twf(ni);S3U〇2_〇〇〇2;KAREN.ptd 第11頁 1230869 五、發明說明(7) *--- 成刀以j縯(垂直)向量成分流的方式輸出。如同第3圖所 :,向量的組合成分被重新排列而使每一個向量的χ組合 ^分同時被輸出。因此,分量向量(component VeCt〇r)33 的組合成分會是被同時輸出的XI、X2、X3、以及X4。接著 ^向量的Y組合成分(即Υ1、Υ2、Υ3、γ4)會同時被輸出。 =樣的輸出程序也同樣會發生在2以及w組合成分上。藉由 ^種輸出程序,向量被輸入資料緩衝器3 流轉換成連續向量成分流。 氚' 分量向量(comP〇nent vector)33接著會被輸入至純量 处理機42,純量處理機42中有一排四個純量 34a〜34d,以及一個特殊功能單元(Special Functi〇n U曰nit; SFU)36。每一個ALU 34a〜34d與SFU 36都為分量向 量(component vector)33的組合成分執行運算。分量向量 (component vector)33 的組合成分會被純量ALU 34a~34d 以平行方式處理,下面會有較詳細的說明。純量處理機42 產生一個純量輸出向量40,並將此純量輪出向量4〇輸入至 一個輸出正父轉換器3 8。純量輸出向量4 〇必須被重新排 列,才可產生輸出向量20。轉換器38是一個垂直暫存器, 有能力同時處理向量12的所有組合成分。為了產生輸出向 量20,轉換器38會將純量處理機12輸出的向量組合成分重 新排列至正確的平行向量成分流。輸出正交轉換器38的運 作在本發明申請人的另一份專利,,同步定期正交資料轉換 器π說明書中有更詳細的解說。 請參閱第4圖,此圖顯示純量處理機42的實體組織。
第12頁 1230869 五、發明說明(8) 處理機42有四個一樣的純量ALU(SCU)34a〜34d以及一個特 殊功能單元36。每一個純量ALU 34a〜34d都有四個輸入 10〜13,以及四個輸出〇〇〜〇3。每一個純量ALU 34a〜34d也 有一個記憶體位址輸入MA、一個共用資料輸入C、一個記 憶體位址輸出M0、以及一個共用資料輸出c〇。每一個純量 ALU 34a〜34d更有一個轉送輸出FWD,與一個特殊功能單元 輸入SC。 每個分量向量((:〇叩〇1^111:¥6(:1:〇1')33中各有1^位元的 組合成分,會分別輸入至純量ALU 34a〜34d輸入10〜13的其 中特定的一個輸入。例如,分量向量(c〇mp〇nent vect〇r) φ 33包括X組合成分(即Χ1、Χ2、χ3、χ4),第一個χ組合成分 (即XI)的Μ位元先被輸入至純量ALlI 34a的10。同樣地,第 二個X組合成分(即X2)的Μ位元被輸入至第二個純量alu 34b的II,第三個χ組合成分(即Χ3)的μ位元被輸入至第三 個純量ALU 34c的I 2,第四個χ組合成分(即χ4)的丛位元被 輸入至第四個純量ALU 34d的13。每一個純量alu 34a〜34d 剩下的輸入會連接到純量ALU 34a〜3 4d的一個輸出。例 如,第一個純量ALU 34a中,輸出00被連接至輸入13,輸 出02被連接至輸入II,輸出03被連接至輸入12。輸出〇1是 最終的輸出,用來產生純量ALU輸出向量4〇的第一個乂組合籲 成分。依照第4圖所示,其他純量ALU 34b〜34d也會將各自 剩下來的輸出連接至各自的其他輪入。各純量ALU 34a〜34d個別將輸入1〇〜13以及輸出〇〇〜〇3連接,這樣的方 式使各純篁ALU依據第5圖的指示圖中每一個指示週期作個
1230869 五、發明說明(9) 別運作。純量ALU 34b在輸出02產生純量ALU輸出向量40的 第一個組合成分,同樣地,純量A L U 3 4 c在輸出〇 3產生純 量ALU輸出向量40的第三個組合成分,純量alu 34d在輸出 00產生純量ALU輸出向量40的第四個組合成分。 這裡補充前面的敘述,每一個純量ALU 34a〜34d的轉 送輸出FWD連接於一個多工器44。多工器44的輸出連接到 SFU 36,SFU 36是用來運算特殊的功能,例如i/χ、 1/sqrt、sqrt、l〇g、exp、等等。SFU 36的輸出連接到每 一個純量ALU 34a〜34d的SC輸入。當純量ALU 34a〜34d執行 到無法運算的指令時,SFU 36會幫忙執行運算,並將運算 結果傳回到適當的純量ALU 34a〜34d。 每一個純量ALU 34a〜34d的輸入MA用來接收位址與控 制訊號。在經過一段適當的延遲時間後,每一個純量A L U 3 4a〜34d的輸出M0轉送這些位址與控制訊號到下一個純量 ALU 34a〜34d。適當的延遲使得每一個接下來的純量ALU 34a〜34d可以在正確的週期處理指令,以支持分量向量 (component vector)33的平行處理方式。同樣地,從記憶 體傳來共用資料的Μ位元會輸入至每一個純量ALU 34a〜34d 的輸入C,並在適當的一段延遲時間後,藉由輸出c〇轉送 到下一個純量A L ϋ 3 4 a〜3 4 d。位址與控制訊號因此會從一 個純量ALU 34到另一個純量ALU 34,間隔適當的延遲時 間,一個接著一個的發佈。輸入資料(向量組合成分)直 接分發到各純量ALU 34 —個合適的輸入丨〇〜丨3,因此提供 處理隨後的時鐘週期所需要的延遲時間。如第4圖所示,
0608-10426twf(nl);S3U02-0002;KAREN.ptd 第 14 頁 1230869 、發明說明(10) ,置處理機42只有三種單元:純量ALU 34a〜34d、特殊功能 單元(SFU) 36、以及多工器44,因此在實施上是非常簡單 的。
請參閱第4、5、6圖,其中包括一個純量處理機4 2以 及指令週期計時的例子。在第一個指令執行週期(丨)中, 第一個純量ALU 34a在第一個純量ALU 34a的輸入10接收到 第一個組合成分33a,並對第一個組合成分33a作運算。第 ~個純量ALU 34 a從微碼(mi croc ode)單元接收控制與位址 資料,並從記憶體接收共用資料。參閱第6圖,控制與共 用資料在控制與共用延遲暫存器68與70中被延遲一個指令 執行週期,並以連續順序轉送至下一個純量ALU 34b,以 在下一個指令執行週期作運算。同樣地,純量單元34b、 3 4 c、以及3 4 d會用相同的方法,彼此依序延遲並轉送對應 的控制與共用資料。相反的,如第4圖所示,輸入向量成 分資料33b將被傳送到第二個純量ALU 34b的輸入II。如第 4與第6圖所示,輸入向量成分資料33b會被暫存器72延 遲’直到下一個指令週期,然後再從〇 1轉送至同一個純量 ALU 34b的輸入10。其他的純量ALU 34c以及34d會分別從
輸入12、13接收此輸入資料,為各向量組合成分Me、33d 提供所需的延遲時間。 在第二個指令執行週期(2)中,第二個純量ALU 34b對 第一組合成分3 3 b作運算,並在延遲後將控制與共用資料 轉送至第三個純量ALU 34c。當第二純量ALU 34b在作運算 的同一時間’第一個純量ALU 34a的輸出,與其他向量輸
0608-104261wf(η1);S3U02-0002;KAREN.p td 第15頁 1230869
入向量組合成分33c、33d將會被純量ALU 34a、34c、及 3 4d的内部延遲暫存器延遲。同樣地,在第三個指令週期 (3)中’第三個純量ALU 34c在其他訊號被延遲的時候,對 第三組合成分33c作運算。在第四個指令週期(4)中,第四 個純量ALU 3 4d在其他訊號被延遲的時候,對第四組合成 分33d作運真。由此所見’各純量alu 34a〜34d分別對向量 的一個組合成分作相同指令的運算,只不過是發生在不同 的時間。延遲輸入及輸出向量組合成分的内部延遲暫存器 在最終的處理週期會將輸出資料對齊,使得每週期提供的 執行指令可以產生正確的運算結果。 ^ 藉由在每個指令週期延遲訊號,以及交錯各純量 34a〜34d的運算,可以只利用一個特殊功能單元來執行純 量運算。如第5圖所示,各純量ALU 34a〜34d的輸出更可跳 至多工器44的輸入(即第4圖所示的Fwd輸出)。藉由跳過延 遲程序’ SFU 36可以在適當的執行指令週期執行其特殊功 能。SFU 36的輸出會輸入至各純量AU 34a〜34d的輸入 SC。就這一點,純量處理機42可以只使用單個SFU 36作 殊運算。 ' 請參閱第6圖’第6圖顯示各純量ALU 34a〜34d的内部 結構。各純篁ALU 34的構造並不取決於該純量aLu 34在處 理機42中的位置。埠連接的差別是由處理機34中純量 34的位置規定的。純量ALU 34有資料路徑區46,包括7χ4 多工器48。7x4多工器48其中一個輸入為埠1〇。了以多工器 48的其他輸入為共用資料、從内部暫存器檔案8〇來的已登
1230869 五、發明說明(12) 記資料、寫回暫存器62、累加器64、以及負載 ^料^區46更包括乘法器5〇,與多工㈣的兩個輸連 f。乘法器50也與7x4多工器48的其中一個輸出連:。出連 法器50的另一個輸入與乘法累加器(Multipiy
AcCUmulat〇r; MACC)60的輸出連接。乘法器5〇的輸 =器52的輸出與加法器54的輸入連接。加法器54:輸“ 連接至乘法累加器60以及進位傳播加法器(Carq 、
Propagation Adder; CPA)56。乘法器5〇、加法器54盥 56,成ALU 34的算術計算單元。⑽56的輸出㈣接至 回(Wnte Back; ffB)暫存器62,產生輸出〇〇,以及將暫= W2連接至7x4多工器48的輸入與暫存器檔案8〇。 資料路徑區46更包括第二個2χ1多工器58,多工器“ 2巧二與CPA 56的輸出訊號,以及從特殊功元 的資料訊號SC連接。多工罘沾於山& #、丄Μ ^ ^ w 器64的輸出接者被輸進累加器暫 存器ACCxT 64,累加暫存器64中運作的每一個引線 thread)。累加器暫存器64的輸出被連接於多工器μ 的輸入。 σ純量ALU 34更包括暫存器區66,包括延遲與處理暫存 器更具體來說’暫存器66有位址與控制延遲暫存器68與 ^用二貝料延遲暫存器7〇 ’用來提供位址/控制訊號提供所 需要的延遲時μ,並如先前第5圖的描述,用作共用資料 訊號的延遲。冑存器區66也包括負載暫存器(L〇ad Register; LR)7 8,從7x4多工器48載計算出的結果。暫存 器區66也有三個輸入延遲暫存器72、74、及76,如第5圖 第17頁 0608-10426twf(nl);S3U02-0002;KAREN.ptd 1230869 、發明說明(13) ~ 中所示,這些輸入延遲暫存器是用來延遲輸入訊號η、 、及 13 〇 請參閱第6圖,在記憶體區79中,純量ALU 3乜有一個 暫時的SR AM記憶體80 ’大小為N乘Μ個位元,為7χ4多工器 48提供讀出輸出訊號RD0與RD1。記憶體80被控制區84的控 制與位址模組82所控制,從埠ΜΑ接收位址與控制資料,以 產生適合的位址與控制訊號到多工器4 8、乘法器5 〇、及多 工器52,以及累加器64與負載暫存器78。 下文與第7 a〜7 b圖為本發明之指令週期的範例。這些指令 的功能與之前所述之第2圖範例相同,為,,正規化差額”的 函數。
Vector Normal ized_Di fference(vector VI,vector V2) VI ->r0.xyzw=r0[0], rO[l], r0[2], r0[3] V2 ->rl.xyzw=rl[0], rl[l], rl[2], rl[3] (x,y,z,w-圖形資料向量的組合成本,r[〇-3]為分別的 純量) 對於此函數在純量處理機30中對應的指令為: Repl(j<3)SUBR2[j], rO[j], rl[j]//subtraction of all components
Repl(j<3)MAC Null, r2[j], r2[j]//dot product of all components with result in x-component, implements as multiply-accumulate RSQ ACC, FWD//rec iprocal square root of result
0608-104261wf(n1);S3U02-0002;KAREN.p t d 第18頁 1230869 五、發明說明(14)
in x-component forwarded to Special Function Unit, paired with MAC rzL J」,Aiu//scai ing
Repl(j<3)MUL r2[j], r2[j], _ all components with the RSQ result (Repl( j<3)為相同指令的複製前置) 第7a〜7b圖顯示每一個純量alU 34a〜34d執行先前描述的函 數vector Normalized—Difference(vector VI, vector
V2)的運算。在第一行指令週期(1)中,第一個純量ALU 34a將第一個x組合成分執行減法。之後在第二個指令週期 (j)中,純量ALU 34a將第二個y組合成分執行減法。在第 三個指令週期(3)中,純量ALU 34a將第三個z組合成分執 行減法。在第四個指令週期(4)的一開始,純量AU 3“利 用乘法累加運算,開始將所有組合成分執行點乘。在第四 個指令週期⑷巾,“且合成分會被乘。在第五個指令週期 )中,y組合成分會被乘,以及在第六個指令週期(6) 中,z組合成分會被乘,以計算出點乘的結果。 七個指令週期(7 )中,點乘结果會祐鏟译丨 36,P如ρΛ 會被轉送到特殊功能單元 U:執,平方根倒數(rsq)。如同先前所描述的,特 殊功此早兀36用來執行ALU 34a無法運算的 ^ ^ ^ log^ :元36執行RSQ運算時,純量ALU 3“保 ;=力: J將計算出的運算結果放入累加器(Acc)中 狀八 7週期(8)中,累加器(ACC)的結果與 / 才曰 按照比例放大。同樣地,在第九個指令週^
1230869
器的結果與y組合成分相乘,以及在第十個指令週期(丨〇 )
中,累加器的結果與z組合成分相乘。如此,第一純量 34a的結果在第十個指令週期就會計算好,也就是純量alu 34會有九個指令週期忙碌,只有一個指令週期是閒置的。 第二、第三、及第四個純量ALU 34b、34c、34d分別在延 遲過後,對一個向量組合成分執行與第一個純量uu 3 “ 相同的指令。如第7a〜7b圖所示,第二個純量AUj 34b在延 遲一個指令週期後,執行與第一個純量ALU 34a相同的指 ^於第二組的組合成分。第三個純量ALU 34c在第二個純 篁ALU 3 4b執行指令之後的一個指令週期開始運算,而第 四個純量ALU 34d在第三個純量Alu 34c執行指令之後的一 個指令週期開始運算。
藉由將每一個ALU 34a〜34d執行指令的時間依序延遲 個週期,在純量處理機4 2中,只使用一個特殊功能單元 36是可行的。如第7a〜7b圖所示的函數運算中,第七個指 令週期(7),特殊功能單元36會為第第一個純量uu 3“的 指令引線計算平方根倒數(RSQ)。而在第八個指令週期(8) 中^特殊功能單元36會為第二個純量ALu 34b的指令引線 計算平方根倒數(RSQ)。第三個純量ALU 34c的平方根倒數 (RSQ)會在第九個指令週期(9)被計算,第四個純量Ru 3 4 d的平方根倒數(r s q )則會在第十個指令週期(1 〇 )被計 SIMD純量處理單元30可以與每一個純量AU 3“〜34d 同時處理四組圖案資料。如第7a〜7b圖所示。與習知的圖
1230869 五、發明說明(16) 形處理機需要十六指令週期比 ^ 需十三個指令週期(事實 70整的執行運算總共只 ALU 34a〜34d只用了九個指令週期2週=)。每個純量 週期時間㈣用特殊功能單元36。運异’並在一個指令的 令週期,,可得到-組圖形資料二:ίϊΓί十t指 量的尺)寸广舉===的效率隨 ---- 週期。乂督使用“口處理機之架構所需的十六個 ηΐΓΖΪ供基本純量AU 34a〜34d,在SIMD模式下可 二這樣的架構可藉由高密度微碼增強效能以 =化基本指彳。此外’本發明因簡化編輯程序以及減少 才曰々個數,可提供比習知技術較低負擔的多引線支持硬 體熟知此技藝之人士除了可以將該純量處理機42應用為 圖形處理機,更可應用在處理其他環境種類上。 热習此技藝者’更可對本發明做額外的修改及改進, 像是以多於四個ALU 34處理各種更大的向量。也就是說 ALU 34的個數可被變更,以提供更大的效率。上述實施例 中描述的特定元件組合只代表本發明某種實施並非用以限 疋在本發明精神與範圍内另外的實施裝置,因此本發明之 保護範圍當視後附之申請專利範圍所界定者為準。
1230869 圖式簡單說明 為了讓本發明之上述和其他特徵能更明顯易懂,下面 附圖示以作詳細說明: 第1圖為習知向量處理單元的資料流程圖; 第2圖為習知向量處理單元處理一組資料的路徑表示 圖; 第3圖為本發明之向量SIMD處理單元; 第4圖為本發明之純量S I MD處理機的實體組織圖; 第5圖為使用本發明之向量S I MD處理單元的指令計時 圖, 第6圖為第4圖之純量算術與邏輯單元(SCU)的内部結 構的電路圖; 第7a〜7b圖為本發明之向量處理單元處理一組資料的 路徑表示圖。 符號說明 1 0〜習知技術之向量處理機單元的資料流程; 1 2〜圖形向量; 1 4〜輸入緩衝記憶體; 16〜向量ALU ; 1 8〜特殊功能單元; 2 0〜輸出向量; 30〜SIMD處理單元; 32〜輸入資料緩衝器; 33 〜 分量向量(component vector);
0608-10426twf(η1);S3U02-0002;KAREN·ptd 第22頁 1230869 圖式簡單說明 34a〜34d〜純量ALU 1〜4 ; 3 6〜特殊功能單元; 38〜輸出正交轉換器; 40〜純量輸出向量; 4 2〜純量處理機; 44〜多工器; 4 6〜資料路徑區; 48〜7x4多工器; 5 0〜乘法器;
52〜多工器; 54〜加法器; 5 6〜進位傳播加法器(C P A ); 58〜2x1多工器; 6 0〜乘法累加器; 62〜寫回暫存器; 64〜累加暫存器; 66〜暫存器區;
68 、 70 、 72 、 74 、 76 〜暫存器; 78〜負載暫存器; 7 9〜記憶體區; 80〜暫存器檔案; 8 2〜控制與位址模組; 8 4〜控制區。
0608-104261w f(η1);S3U02-0002;KAREN.ρ t d 第23頁

Claims (1)

1230869 六、申請專利範圍 1· 一種SIMD純量處理單元,用來處理至少兩個包括多 個組合成分的向量,該s丨MD純量處理單元包括: 一輸入資料緩衝器,將該等向量的該等組合成分重新 組合,從一平行向量成分流排成/連續向量成分流; 至少一個純量算術邏輯單元,從該輸入資料緩衝器接 收該等向量的該等組合成分,該純量算術邏輯單元對該等 向量的該等組合成分執行一運算,以測定一結果;以及 一輸出轉換器,從該純量算術邏輯單元接收該結果, 該輸出轉換器將該結果的該等組合成分從新組合,從該連 續向量成分流排成該平行向量成分流。 2 ·如申請專利範圍第1項所述之純量處理單元,更包 括一特殊功能單元,與該純量算術邏輯單元互相通訊,該 特殊功能單元用在對該等向量組合成分執行運算。 3 ·如申請專利範圍第2項所述之純量處理單元,更包 括一多工器,從該純量算術邏輯單元接收複數向量組合成 分,並選擇一組合成分給該特殊功能單元處理。 4.如申請專利範圍第1項所述之純量處理單元,其中 包括i個純量算術邏輯單元,各向量有i個組合成分。 5 ·如申請專利範圍第4項所述之純量處理單元,其中 該等純量算術邏輯單元以一連續結構連接,各純量算術邏 輯單元從前一個純量算術邏輯單元被延遲一指令後執行運 算。 6 ·如申請專利範圍第5項所述之純量處理單元,其中 各純量算術邏輯單元為隨後的一純量算術邏輯單元設定延
0608-10426twf(nl);S3U02-0002;KAREN.ptd 第24頁 1230869
至少 一連續結 一資 算;以及 一個指令 構連接的 料路徑區 一控制與位址 8 ·如申請專利 各純量算術邏輯單 遲傳送資料至下一 9 · 一種處理至 法’包括一SIMD純 器、至少一個純量 方法包括以下步驟 純量算術邏輯單元。 固以 ’對該等向量的該等組合成分執行運 模組,操作該資料路徑區。 範圍第7項所述之純量處理單元,其中 元更包括至少一個資料延遲暫存澠, 個連續連接的純量算術邏輯單元。^ 少兩個包括多個組合成分的向量的方 量處理單元,其中有一輸入資料緩衝 算術邏輯單元、以及一輸出轉換器,該 々(1)利用該輸入資料緩衝器,重新組合該等向量的該 等組合成分’從一平行向量成分流排成一連續向量成分 流; (2 )利用一特定的純量算術邏輯單元,將從該輸入資 料緩衝器接收的每一個組合成分,分別執行一運算,以產 生一結果;以及 (3 )利用一輸出轉換器,將該結果的該等組合成分從 新組合成該平行向量成分流。 1 0 ·如申請專利範圍第9項所述之處理方法,其中該
0608-10426twf(nl);S3U02-0002;KAREN.ptd 第25頁 1230869 特殊功能單元,以及步 對各組合成分執行 該 邏輯單 用該多 給該特 殊 六、申請專利範圍 SIMD純量處理單 更包〗括利ctr元 1 ·如申凊專利範 S—IMD純量處理單元更包括一 几接收複數向量組合成分, 工器選擇從該純量算術邏輯 功能單元運算。 1 2 ·如申凊專利範圍第9 純量算術邏輯單元以一連續 方式連接,以及該方法更包 術邏輯單元。 1 3 ·如申請專利範圍第9 純量算術邏輯單元彼此連續 複數向量組合成分至下一個 元。 驟(2) 運算。 0項所述之處理方法,其° 多工器,從各純量算術中 以及步驟(2)更包括利 單元計算的該結果, 項所述之處理方法,其_ 位址、控制與資料訊號八Λ等 括延遲一指令至隨後的布的 无的一個算 項所述之處理方法,其中上 連接,以及該方法更包括该等 連續連接著的複數算術邏輯^ 曰μ 1 4 ·如申請專利範圍第9項所述之處理方法,其 里算術邏輯單το包括一資料路徑區,並且步驟更包 使用該路徑資料區執行該運算。 曰μ 1 5 ·如申凊專利範圍第9項所述之處理方法,其中各純 置算術邏輯單元有一控制與位址模組,並且步驟(2 )更包 括利用該控制與位址模組控制該資料路徑區的該運算。 16· —種SIMD純量處理單元,用來處理複數向量的複 數組合成分,該SIMD純量處理單元包括: 一種轉換該等向量的該等組合成分的裝置,從一平行
1230869 向量f分流重新排成—連續向量成分流; 人〇、γ ί ^以該連續向量成分流排列的該等向量之該等組 •、 心弁的裝置’並產生複數向量組合成分的一結 、、種將该結果從該連續向量成分流轉換為一平行向量 成分流的裝置。 1 7 ·如申請專利範圍第1 6項所述之s IMD純量處理單 元,其中:
轉換該等向量的該等組合成分,從一平行向量成分流 重新排成了連續向量成分流的裝置為一輸入資料緩衝器; 對該等向量之該等組合成分執行運算的裝置為至少一 個純量算術邏輯單元;以及 f複,組合成分的該結果從該連續向量成分流轉換為 該平订向量成分流的襞置為一正交轉換器。 、1 8 · —曰種給一純量處理單元的算術邏輯單元,用來處 理複數向量成&,該算術邏輯單^可與另-算術邏輯單处元 連接成連續結構,該算術邏輯單元包括: 負料路桉區,執行該等向量成分的運算;以及
一資料延遲暫存器區,延遲該等向量成分傳至 以一連續結構連接的算術邏輯單元。 1 9 ·如申請專利範圍第1 8項所述之算術邏輯單元, 包括一位址與控制模組,用在該資料路徑區的控制。, 20 ·如申請專利範圍第1 9項所述之算術邏輯單元 包括一位址與控制延遲暫存器,用來延遲位址與控制訊1虎
0608-104261wf(η1);S3U02-0002;KAREN.p t d
1230869 六、申請專利範圍 的計時。 2 1 ·如申請專利範圍第2 〇項所述之算術邏輯單元,更 包括一共用資料延遲暫存器,用來延遲遞送共用資料至接 下來算術邏輯單元的該資料路徑區。 ^ 、 算術邏輯單元,其 在通過該純量算術 2 2 ·如申請專利範圍第2 1項所述之 中該延遲暫存區包括一延遲暫存器,用 邏輯單元的向量成分之輸入或輸出。 23· —種SIMD純量處理單元,用來處理一包括X、、 z、與Z的組合成分的向量,每一個該等χ、y、=、x鱼^且合 成分中有多個值,該純量處理單元包括· ^ 口 -正交存取記憶體’用來將各成分 合’從-平行向量成分流排成一連續向量成分:董新,、且 一純量處理機,與該正交存取記憶體相2相 該純量處理機包括: 祁通Λ ^ .....〜|〜 分州1异術邏輯單元用 來執行一運算於從該正交存取記憶體傳來的該成分 值上,並產生一結果;以及 U 一特殊功能單元,與該組純量算術邏輯單元 互相通訊,該特殊功能單元在從一純量算術邏輯 的結果執行一運算,並將該結果傳回該算術邏輯單元;以 及 單元相速互相 元傳來的該結 一輸出正交轉換器,與該純量處理 通訊,該輸出正交轉換器將從該純量處理單 果重新組合成一平行向量成分流。
TW093100869A 2003-01-29 2004-01-14 SIMD processor with scalar arithmetic logic units TWI230869B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/354,795 US7146486B1 (en) 2003-01-29 2003-01-29 SIMD processor with scalar arithmetic logic units

Publications (2)

Publication Number Publication Date
TW200413946A TW200413946A (en) 2004-08-01
TWI230869B true TWI230869B (en) 2005-04-11

Family

ID=32907589

Family Applications (1)

Application Number Title Priority Date Filing Date
TW093100869A TWI230869B (en) 2003-01-29 2004-01-14 SIMD processor with scalar arithmetic logic units

Country Status (3)

Country Link
US (1) US7146486B1 (zh)
CN (1) CN1272705C (zh)
TW (1) TWI230869B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
TWI470543B (zh) * 2011-12-19 2015-01-21 Intel Corp 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令
TWI483185B (zh) * 2011-12-23 2015-05-01 Intel Corp 具三個純量項之超級乘加(超級乘加(super MADD))指令
TWI597620B (zh) * 2007-12-28 2017-09-01 英特爾股份有限公司 提供通用gf(256)simd密碼算術功能的指令與邏輯
TWI626587B (zh) * 2015-10-08 2018-06-11 上海兆芯集成電路有限公司 選擇性將啓動函數輸出或累加器値寫回神經記憶體之神經處理單元

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383427B2 (en) * 2004-04-22 2008-06-03 Sony Computer Entertainment Inc. Multi-scalar extension for SIMD instruction set processors
US8024549B2 (en) * 2005-03-04 2011-09-20 Mtekvision Co., Ltd. Two-dimensional processor array of processing elements
US8024394B2 (en) * 2006-02-06 2011-09-20 Via Technologies, Inc. Dual mode floating point multiply accumulate unit
ATE479470T1 (de) * 2006-07-12 2010-09-15 Procter & Gamble Auf gelnetzwerk-emulgatoren basierende verdickersysteme für haarfärbe und haaraufhellungszusammensetzungen
US8996846B2 (en) 2007-09-27 2015-03-31 Nvidia Corporation System, method and computer program product for performing a scan operation
US8264484B1 (en) 2007-10-29 2012-09-11 Nvidia Corporation System, method, and computer program product for organizing a plurality of rays utilizing a bounding volume
US8284188B1 (en) 2007-10-29 2012-10-09 Nvidia Corporation Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects
US8065288B1 (en) * 2007-11-09 2011-11-22 Nvidia Corporation System, method, and computer program product for testing a query against multiple sets of objects utilizing a single instruction multiple data (SIMD) processing architecture
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
US20090138680A1 (en) * 2007-11-28 2009-05-28 Johnson Timothy J Vector atomic memory operations
US8243083B1 (en) 2007-12-04 2012-08-14 Nvidia Corporation System, method, and computer program product for converting a scan algorithm to a segmented scan algorithm in an operator-independent manner
US8773422B1 (en) 2007-12-04 2014-07-08 Nvidia Corporation System, method, and computer program product for grouping linearly ordered primitives
US20190377580A1 (en) * 2008-10-15 2019-12-12 Hyperion Core Inc. Execution of instructions based on processor and data availability
EP2366144B1 (en) 2008-10-15 2015-09-30 Hyperion Core, Inc. Sequential processor comprising an alu array
US8321492B1 (en) 2008-12-11 2012-11-27 Nvidia Corporation System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm
US9164770B2 (en) * 2009-10-23 2015-10-20 Mindspeed Technologies, Inc. Automatic control of multiple arithmetic/logic SIMD units
EP2674855B1 (en) * 2012-06-14 2016-11-23 Telefonaktiebolaget LM Ericsson (publ) An element selection unit and a method therein
US9019284B2 (en) 2012-12-20 2015-04-28 Nvidia Corporation Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline
US9123128B2 (en) * 2012-12-21 2015-09-01 Nvidia Corporation Graphics processing unit employing a standard processing unit and a method of constructing a graphics processing unit
CN111857822B (zh) * 2016-08-05 2024-04-05 中科寒武纪科技股份有限公司 一种运算装置及其操作方法
US10997116B2 (en) * 2019-08-06 2021-05-04 Microsoft Technology Licensing, Llc Tensor-based hardware accelerator including a scalar-processing unit

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4524455A (en) * 1981-06-01 1985-06-18 Environmental Research Inst. Of Michigan Pipeline processor
US4739474A (en) * 1983-03-10 1988-04-19 Martin Marietta Corporation Geometric-arithmetic parallel processor
US5179714A (en) * 1988-10-07 1993-01-12 Martin Marietta Corporation Parallel bit serial data processor
US5642444A (en) * 1994-07-28 1997-06-24 Univ North Carolina Specialized image processing system architecture and method for image data arrays

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
TWI597620B (zh) * 2007-12-28 2017-09-01 英特爾股份有限公司 提供通用gf(256)simd密碼算術功能的指令與邏輯
TWI470543B (zh) * 2011-12-19 2015-01-21 Intel Corp 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令
TWI483185B (zh) * 2011-12-23 2015-05-01 Intel Corp 具三個純量項之超級乘加(超級乘加(super MADD))指令
TWI626587B (zh) * 2015-10-08 2018-06-11 上海兆芯集成電路有限公司 選擇性將啓動函數輸出或累加器値寫回神經記憶體之神經處理單元

Also Published As

Publication number Publication date
CN1272705C (zh) 2006-08-30
CN1519704A (zh) 2004-08-11
US7146486B1 (en) 2006-12-05
TW200413946A (en) 2004-08-01

Similar Documents

Publication Publication Date Title
TWI230869B (en) SIMD processor with scalar arithmetic logic units
JP7444936B2 (ja) 低レイテンシ行列乗算ユニット
US11163720B2 (en) Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US8049760B2 (en) System and method for vector computations in arithmetic logic units (ALUs)
US9015354B2 (en) Efficient complex multiplication and fast fourier transform (FFT) implementation on the ManArray architecture
US8024394B2 (en) Dual mode floating point multiply accumulate unit
JPH05508499A (ja) 特殊目的ブール演算装置のための方法およびその装置
US20090049113A1 (en) Method and Apparatus for Implementing a Multiple Operand Vector Floating Point Summation to Scalar Function
JPH0635877A (ja) アレイ・プロセッサ
Lant et al. Toward FPGA-based HPC: Advancing interconnect technologies
US8977835B2 (en) Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency
WO2023065701A1 (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
Lee et al. NP-CGRA: Extending CGRAs for efficient processing of light-weight deep neural networks
JPH08329261A (ja) パラメータ曲線発生器
CN112074810B (zh) 并行处理设备
JP2010117806A (ja) 半導体装置、および、半導体装置によるデータ処理方法
JP7136343B2 (ja) データ処理システム、方法、およびプログラム
WO2007099950A1 (ja) 高速pe間データ再配置機能を有するプロセッサアレイシステム
JPWO2009110497A1 (ja) Simd型プロセッサアレイシステム及びそのデータ転送方法
WO2022001454A1 (zh) 集成计算装置、集成电路芯片、板卡和计算方法
JP2009059187A (ja) マイクロプロセッサおよびデータ処理方法
JP3708072B2 (ja) 半導体演算装置
Hafdi Mixed-precision architecture for flexible neural network accelerators
Eleyat et al. Implementation of a linear programming solver on the Cell BE processor
JPH03116327A (ja) 乗算方式

Legal Events

Date Code Title Description
MK4A Expiration of patent term of an invention patent