TW201830236A - 組合數個執行單元以運算單一寬純量結果 - Google Patents

組合數個執行單元以運算單一寬純量結果 Download PDF

Info

Publication number
TW201830236A
TW201830236A TW107100724A TW107100724A TW201830236A TW 201830236 A TW201830236 A TW 201830236A TW 107100724 A TW107100724 A TW 107100724A TW 107100724 A TW107100724 A TW 107100724A TW 201830236 A TW201830236 A TW 201830236A
Authority
TW
Taiwan
Prior art keywords
reconfigurable
unit
result
units
intermediate result
Prior art date
Application number
TW107100724A
Other languages
English (en)
Other versions
TWI659360B (zh
Inventor
塞德瑞 里奇丹拿
尼可 賀芙曼
麥可 克蘭
Original Assignee
美商萬國商業機器公司
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 美商萬國商業機器公司 filed Critical 美商萬國商業機器公司
Publication of TW201830236A publication Critical patent/TW201830236A/zh
Application granted granted Critical
Publication of TWI659360B publication Critical patent/TWI659360B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Abstract

一種電路包括可重組態以運算一經組合結果的可重組態單元。該等可重組態單元中之一第一可重組態單元之一第一中間結果與該等可重組態單元中之第二可重組態單元之一第二中間結果交換。該第一可重組態單元利用該第二中間結果來運算該經組合之結果的一第一部分。該等可重組態單元中之該第二可重組態單元利用該第一中間結果運算來該經組合結果之一第二部分。

Description

組合數個執行單元以運算單一寬純量結果
本發明大體上係關於一種處理器算術設計,且更具體而言係關於組合數個執行單元以運算單一寬純量結果。
類似於認知運算,當代晶片/核心設計能夠處理新出現之工作負荷。然而,此等新出現之工作負荷基於受到攻擊之問題而在變化之要求情況下需要大規模運算能力,且運算在大規模短精度數學與高精度數學之間發生變化。當建置「萬能(one size fits all)」單元時,變化之要求向當代晶片/核心設計提供了難題。此等難題包括衝擊以下兩者之間的平衡:將不遞送所要較低精度輸貫量之幾個高精度單位,及將需要軟體額外耗用以進行複雜高精度運算的海量低精度單元。
根據一或多個實施例,提供一種電路。該電路包含可重組態以運算一經組合結果的複數個可重組態單元。該複數個可重組態單元中之一第一可重組態單元的一第一中間結果與該複數個可重組態單元中之一第二可重組態單元的一第二中間結果交換。該複數個可重組態單元中之該第一可重組態單元利用該第二中間結果運算該經組合結果之一第一部分。該複數個可重組態單元中之該第二可重組態單元利用該第一中間結果運算該經組合結果之一第二部分。 根據一或多個實施例,提供一種系統。該系統包含一處理器及一記憶體。該處理器包含可重組態以運算一經組合結果的複數個可重組態單元。該複數個可重組態單元中之一第一可重組態單元的一第一中間結果與該複數個可重組態單元中之一第二可重組態單元的一第二中間結果交換。該複數個可重組態單元中之該第一可重組態單元利用該第二中間結果運算該經組合結果之一第一部分。該複數個可重組態單元中之該第二可重組態單元利用該第一中間結果運算該經組合結果之一第二部分。 根據一或多個實施例,提供一種方法。該方法藉由一處理器實施,該處理器包含可重組態以運算一經組合結果的複數個可重組態單元。該方法包含交換該複數個可重組態單元中之一第一可重組態單元之一第一中間結果與該複數個可重組態單元之一第二可重組態單元之一第二中間結果。該方法包含藉由該複數個可重組態單元中之該第一可重組態單元利用該第二中間結果運算該組合結果之一第一部分;及藉由該複數個可重組態單元中之該第二可重組態單元利用該第一中間結果運算該經組合結果的一第二部分。
一般而言,並行運算為許多演算及/或程序同時進行以解算大型問題的一類型之運算。大型問題之實例包括模型化銀河系、建置並訓練認知運算模型、實施癌症研究演算、呈現三維模擬等。並行運算將大型問題劃分成可接著同時解算之較小演算。基於問題(及演算法),需要低精度算術或高精度算術或者兩者之混合。存在若干不同並行運算形式(例如,當代晶片/核心設計),其每一者具有缺點。 舉例而言,用於行動裝置中之當代晶片上系統大型/小型核心設計在運算能力在矽區域上越發寶貴之處對於高階伺服器晶片為負擔不起的,在該等高階伺服器晶片處,面積亦被關注,此係由於晶片不可超出特定實體大小。可與圖形處理單元介接以提供具有較低精度算術之海量核心的當代高精度核心晶片亦關於相對「距離」(循環中)及此等較低精度核心與當代高精度核心晶片之間的頻寬提供大的效能損失。針對高效能核心晶片之另一方法為試圖使核心上之高精度算術單元的大小最小化以適合儘可能多的核心。此仍不能根本上解決打破高精度算術要求與低精度算術要求之間的平衡之問題。 現轉至本發明之態樣之概述,本文中所揭示之實施例可包括結合單一指令多重資料(SIMD)單元以藉由在SIMD單元之間交換部分結果而運算單一高精度複雜算術運算的系統、方法及/或電腦程式產品(本文中為系統)。SIMD單元包含可對多個資料點同時執行同一運算的多個處理元件。系統之技術效應及益處包括啟用針對超規模市場之高效率小型較低精度區塊之建置,同時仍保持進行高精度複雜算術(如高精度乘法-加法)的能力。系統之技術效應及益處包括藉由管線連接SIMD單元而限制並隱藏任何所得佈線額外耗用及/或延遲的能力。因此,本文中所描述之實施例根源必定在於在系統之處理器中以執行搶先操作以克服具體地出現於處理器算術設計之範圍中的問題(例如,此等問題包括鑒於變化之大規模運算精度要求而在幾個高精度單元與海量低精度單元之間達成平衡)。 現轉至圖1,系統100組合n個小型較低精度x位元單元(SIMD單元120.0 … 120.n-1,其中n為大於零之整數)以藉由交換n個小型較低精度x位元單元之間的部分結果(參見箭頭140)而運算單一高精度複雜算術運算(例如,高達n*x個位元,其中x為大於零的整數)。系統100可用於算術乘法運算及/或乘法-加法運算(亦即,此等運算在乘法情況下區分系統100與SIMD單元之間的簡單進位傳播)。 舉例而言,SIMD單元120.0……120.n-1可重組態以運算x位元寬之數目的多次乘法運算且將2*x位元結果相加在一起以產生經組合之結果。經組合之結果可為具有較高精度之單一寬複雜純量結果,或可為具有較高解析度之單一寬複雜純量結果的一部分。請注意,SIMD單元120.0……120.n-1之組合啟用寬並行(亦即,並非依序)的結果運算。 此外,每一SIMD單元120.0……120.n-1可重組態以將2*x位元累加器結果加至經組合之結果。根據非限制性實施例,四個SIMD單元之群組可提供包含但不限於乘法運算的四個單倍、兩個雙倍或一個四倍精度複雜算術運算的執行。 舉例而言,系統100之SIMD單元120可包含x位單元,其接收(參見箭頭141) n個x位輸入運算元或n*x位輸入運算元(由區塊150表示)。複雜算術運算藉由SIMD單元120對此等運算元執行。 在複雜算術運算期間,SIMD單元120中之每一者交換部分結果(參見箭頭140)。在一非限制性實施例中,當n等於二時,SIMD單元120中之一者(例如,SIMD單元120.0)可執行產生第一中間結果的複雜算術運算之高位序部分;且SIMD單元120中之另一者(例如,SIMD單元120.1)可執行產生第二中間結果之複雜算術運算的低位序部分。 部分結果用以運算最終結果160之每一各別部分,最終結果160可為n*x位純量結果(參見箭頭151)。繼續非限制性實施例,SIMD單元120.0可利用來自SIMD單元120.1之中間結果的部分以產生最終結果160之高位序部分。SIMD單元120.1可利用來自SIMD單元120.0之中間結果的部分以產生最終結果160之低位序部分。低位序部分及高位序部分接著經串接(經組合)以產生最終結果160。 現轉至圖2,描繪根據一或多個實施例之系統100的實施實例。實施實例展示為包含第一算術單元201及第二算術單元202 (例如,二進位浮點算術單元)的系統200,該第一算術單元201及該第二算術單元中之每一者包含乘法-加法算術電路。第一算術單元201及第二算術單元202之乘法-加法算術電路中的每一者分別包含乘法器205及206 (例如總和及進位乘法器)、第一加法器213及214 (例如,合併加法器)、第二加法器217及218、格式器221及222 (例如,正規化器或捨入器)以及多工器225及226。 系統200之操作現關於圖3之程序流程300根據非限制性實例來描述。請注意,雖然程序流程300自第一算術單元201之觀點描述操作,但類似操作在第二算術單元202處並行地發生。 一般而言,資料元素低精度算術區塊(例如,算術單元201及202)中之每一者為低精度算術區塊,從而對SIMD之資料元素中之一者運算結果(多資料元素指令)。來自此等資料元素低精度算術區塊(例如,算術單元201及202)之中間結果經交換並組合以運算高精度資料結果。 程序流程300開始於區塊305處,在該區塊處,系統200越過第一算術單元201接收一組運算元。該組運算元可包括至少三個運算元A、B及C。在此實例中,第一算術單元201管理此等三個運算元A、B及C中之高序位位元。如圖2中所展示,由第一算術單元201接收到AHIGH 、BHIGH 及CHIGH 。請注意,在一非限制性實施例中,若每一運算元A、B及C為2x個位元(例如,128個位元),則高序位位元均勻地分割成x個位元(例如,64個位元)。在區塊310處,系統200之乘法器205分別使該組運算元中之第一運算元(例如,AHIGH )與第二運算元(例如,CHIGH )相乘以產生乘積。如圖2中所展示,乘法器205使AHIGH 與CHIGH 相乘,其呈現第一2x位乘積(例如,128位乘積)及第二2x位乘積。 請注意,在一非限制性實施例中,系統200可相加乘積(例如,第一2x位乘積與第二2x位乘積)以產生一總和。在區塊320處,系統200將「零」位元附加至該組運算元中之第三運算元(例如,BHIGH )以匹配乘積之寬度(並產生經擴展第三運算元)。請注意,附加操作產生第二總和之2x位元數目,且附加操作可發生於第一加法器213(例如,三個輸入及輸出加法器)內。舉例而言,如圖2中所展示,第一加法器213將第一2x位乘積與第二2x位乘積相加以產生第一2x位總和,且第一加法器213相加BHIGH 與「零」位元以產生第二2x位總和。 在區塊325處,系統200相加乘積與經擴展第三運算元以產生中間結果。請注意,中間結果可為2x位元數目。在區塊330處,系統200與第二算術單元202交換中間結果之一部分。舉例而言,如圖2中所展示,第二加法器213將第一2x位元總和與第二2x位元總和相加以產生中間結果。來自第二加法器213之中間結果的部分經提供至第二算術單元202。另外,來自第二加法器214之中間結果的一部分提供至第一算術單元201。以此方式,每一中間結果之數個部分經交換。請注意,圖2描繪來自第一二進位浮點單元201之中間結果的較低位x個位元(例如,64 L;RLow ),其與來自第二二進位浮點單元202之中間結果的較高位x個位元(例如,64 H;RHIGH )交換。以此方式,部分結果(例如,RHIGH 及RLow )用以運算乘法及/或乘法-加法的寬結果。 在區塊335處,系統200相加中間結果的部分與自第二算術單元接收之中間結果的一部分,以產生最終結果之一部分。如圖2中所展示,第二加法器217相加來自第一二進位浮點單元201之中間結果的較高位64個位元(例如,64 H)與來自第二二進位浮點單元202之中間結果的較高位64個位元(例如,64 H;RHIGH )為最終結果。第二加法器217亦可利用來自第二加法器218之進位位元(例如,CLOW )。最終結果接著藉由多工器225多工傳輸,其中正規化中間結果輸出自格式器221以產生最終結果之高序位位元(例如,RESHIGH )。如上文所指出,類似操作在第二算術單元202處正並行地發生,產生最終結果之低序位位元(例如,RESLOW )。 現轉至圖4,描繪根據一或多個實施例之系統100的實施實例。實施實例展示為包含第一算術單元401及第二算術單元402(例如,二進位浮點單元)的系統400。第一算術單元401及第二算術單元402中之每一者分別包含乘法器405及406、第一加法器409及410、第二加法器409及410、格式器421及422及多工器425及426。 在例示性操作中,系統400橫越第一算術單元401及第二算術單元402接收一組運算元。該組運算元可包括一數目402連同運算元A 403a、運算元B 403b、運算元C 403c及運算元D 403d。在此實例中,第一算術單元401管理數目402之高序位位元,且第二算術單元402管理數目402的低序位位元。 如圖4中所展示,運算元A 403a及運算元B 403b藉由系統400之乘法器405相乘,該乘法器使此等雲端自相乘以產生第一乘積。運算元C 403c及運算元D 403d藉由系統400之乘法器406相乘,該乘法器使此等運算元相乘以產生第二乘積。 系統400相加第一乘積以產生第一總和,該第一總和由數目402之高序位位元附加「零」位元產生。另外,系統400相加第二乘積以產生第二總和,該第二總和由數目402之低序位位元前置有「零」位元產生。 系統400利用第一加法器409以相加第一總和與第一乘積以產生第一中間結果。系統400利用第一加法器410相加第二總和與第二乘積以產生第二中間結果。第一中間結果及第二中間結果中之每一者經劃分,使得第一中間結果及第二中間結果之數個部分交換並供應至第二加法器417及418。舉例而言,第一中間結果之低部分可提供至第二二進位浮點單元402,而第一中間結果之高部分可提供至第二加法器417。第二中間結果之高部分可提供至第一二進位浮點單元401,而第二中間結果之低部分可提供至第二加法器418。請注意,第一中間結果及第二中間結果中之每一者可完全提供至格式器421及422。 第二加法器418相加第一中間結果之低部分及第二中間結果之低部分以產生最終結果的低部分。第二最終結果接著由多工器426多工傳輸,其中正規化中間結果輸出自格式器421以產生經組合之結果490之低序位位元。第二加法器417相加第一中間結果之高部分、第二中間結果之進位位元及第二中間結果之高部分以產生最終結果之高部分。第一最終結果接著藉由多工器425多工傳輸,其中正規化中間結果輸出自格式器421以產生經組合之結果490的高序位位元。 圖5描繪根據一或多個實施例之系統500的實例。系統500具有一或多個中央處理單元(CPU) 501a、501b、501c等(統稱為或通常稱為處理器501)。亦被稱作處理電路之處理器501經由系統匯流排502耦接至系統記憶體503及各種其他組件。系統記憶體503可包括唯讀記憶體(ROM) 504及隨機存取記憶體(RAM) 505。ROM 504耦接至系統匯流排502且可包括基本輸入/輸出系統(BIOS),其控制系統500之某些基本功能。RAM為耦接至系統匯流排502以供處理器501使用的讀-寫記憶體。 圖5進一步描繪耦接至系統匯流排502之輸入/輸出(I/O)配接器506及通信配接器507。I/O配接器506可為與硬碟508及/或任何其他類似組件通信的小型電腦系統介面(SCSI)配接器。I/O配接器506及硬碟508在本文中統稱為大容量儲存器510。用於在系統500上執行之軟體511可儲存於大容量儲存器510中。大容量儲存器510為藉由處理器501可讀之有形儲存媒體的實例,其中軟體511作為指令儲存以供處理器501執行以使系統500進行操作,諸如本文中參看圖3所描述。電腦程式產品之實例及此等指令之執行在本文中更詳細地論述。再次參看圖5,通信配接器507互連系統匯流排502與網路512 (該網路可為外部網路),從而使得系統500能夠與其他此類系統通信。顯示器(例如,螢幕、顯示監視器) 515藉由顯示配接器516連接至系統匯流排502,顯示配接器可包括用以改良圖形密集型應用之效能的圖形控制器以及視訊控制器。在一個實施例中,配接器506、507及516可連接至一或多個I/O匯流排,該一或多個I/O匯流排經由中間匯流排橋接器(圖中未示)而連接至系統匯流排502。用於連接周邊裝置(諸如硬碟控制器、網路配接器及圖形配接器)之合適的I/O匯流排通常包括共同協定,諸如周邊組件互連(PCI)。額外輸入/輸出裝置經展示為經由介面配接器520及顯示配接器516連接至系統匯流排502。鍵盤、滑鼠、揚聲器等可經由介面配接器520互連至系統匯流排502,其可包括例如將多個裝置配接器整合至單一積體電路中的超級I/O晶片。 因此,如圖5中所組態,系統500包括呈處理器501之形式的處理能力及包括系統記憶體503及大容量儲存器510之儲存能力、諸如鍵盤及滑鼠之輸入構件,及包括揚聲器及顯示器515之輸出能力。在一個實施例中,系統記憶體503及大容量儲存器510的一部分共同儲存作業系統,諸如來自IBM公司之z/OS或AIX作業系統,以協調展示於圖5中之各種組件的功能。 本發明可為在整合之任何可能技術詳細層級處的系統、方法及/或電腦程式產品。該電腦程式產品可包括一(或多個)電腦可讀儲存媒體,其上具有電腦可讀程式指令以使處理器進行本發明之態樣。 電腦可讀儲存媒體可為有形裝置,其可保留及儲存指令以供指令執行裝置使用。電腦可讀儲存媒體可為(例如但不限於)電子儲存裝置、磁性儲存裝置、光學儲存裝置、電磁儲存裝置、半導體儲存裝置或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶卡、軟性磁碟、機械編碼裝置(諸如其上記錄有指令之凹槽中之打孔卡片或凸起結構)及前述各者之任何合適組合。如本文所使用,不應將電腦可讀儲存媒體本身解釋為暫時性信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纜傳遞之光脈衝),或經由導線傳輸之電信號。 本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別運算/處理裝置或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)下載至外部電腦或外部儲存裝置。網路可包含銅傳輸纜線、光學傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一運算/處理裝置中之網路配接卡或網路介面自網路接收電腦可讀程式指令且轉遞電腦可讀程式指令以用於儲存於各別運算/處理裝置內之電腦可讀儲存媒體中。 用於進行本發明之操作之電腦可讀程式指令可為以一或多種程式設計語言之任何組合撰寫之組譯器指令、指令集架構(ISA)指令、機器指令、機器相關指令、微碼、韌體指令、狀態設定資料、用於積體電路之組態資料,或原始程式碼或物件碼(object code),該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及程序性程式設計語言,諸如「C」程式設計語言或類似程式設計語言。電腦可讀程式指令可整個在使用者電腦上執行、部分在使用者電腦上執行,作為單獨套裝軟體執行,部分在使用者電腦上且部分在遠端電腦上執行,或整個在遠端電腦或伺服器上執行。在後種情形下,遠端電腦可經由任一類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至本端電腦,或可(例如,經由使用網際網路服務提供者之網際網路)連接至外部電腦。在一些實施例中,電子電路(包括例如可程式化邏輯電路、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA))可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路而執行電腦可讀程式指令,以便執行本發明之態樣。 本文參考根據本發明之實施例之方法、設備(系統)及電腦程式產品之流程圖說明及/或方塊圖描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖中之每一區塊,及流程圖說明及/或方塊圖中的區塊之組合。 可將此等電腦可讀程式指令提供至通用電腦、專用電腦或其他可程式化資料處理設備之處理器以產生機器,以使得經由該電腦或其他可程式化資料處理裝置之處理器執行之指令建立用於實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之構件。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,該等指令可指導電腦、可程式化資料處理設備及/或其他裝置以特定方式起作用,使得其中儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施在該一或多個流程圖及/或方塊圖區塊中指定之功能/動作之態樣的指令。 電腦可讀程式指令亦可載入至電腦、其他可程式資料處理設備或其他裝置上,以使一系列操作步驟在該電腦、其他可程式化裝置或其他裝置上執行以產生電腦實施之處理程序,使得在該電腦、其他可程式化設備或其他裝置上執行之指令實施該或該等一或多個流程圖及/或方塊圖區塊中所指定之功能/動作。 諸圖中之流程圖及方塊圖說明根據本發明之各種實施例之系統、方法及電腦程式產品之可能實施之架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示模組、分段或指令之部分,其包含用於實施一或多個所指定之邏輯函數的一或多個可執行指令。在一些替代實施中,區塊中所指出的功能可不按圖式中所指出的次序發生。舉例而言,視所涉及的功能性而定,以連續方式展示的兩個區塊實際上可大體上同時執行,或所述區塊有時可以相反次序執行。亦將注意,可由執行經指定功能或動作或進行專用硬體及電腦指令之組合的基於專用硬體之系統實施方塊圖及/或流程圖說明之每一區塊及方塊圖及/或流程圖說明中之區塊的組合。 本文中所使用之詞僅用於描述特定實施例之目的且並不意欲為限制性的。如本文中所使用,單數形式「一」及「該」意欲亦包括複數形式,除非上下文另有清晰地指示。進一步應瞭解,術語「包含(comprises/comprising)」在用於本說明書中時指定存在所陳述特徵、整數、步驟、操作、元件及/或組件,但不排除存在或添加一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組。 各種實施例之描述已出於說明的目的已經呈現,但不意欲為詳盡的或限於所揭示之實施例。在不脫離所描述實施例之範疇及精神的情況下,許多修改及變化對於一般熟習此項技術者將為顯而易見。本文中所使用之術語經選擇以最佳解釋實施例之原理、實際應用或對市場中發現的技術之技術改良,或致能其他一般熟習此項技術者理解本文所揭示之實施例。
100‧‧‧系統
120.0‧‧‧單一指令多重資料(SIMD)單元
120.n-1‧‧‧單一指令多重資料(SIMD)單元
140‧‧‧箭頭;部分結果
141‧‧‧箭頭;n個x位輸入運算元
150‧‧‧區塊;n*x位輸入運算元
151‧‧‧箭頭;n*x位純量結果
160‧‧‧最終結果
200‧‧‧系統
201‧‧‧第一算術單元
202‧‧‧第二算術單元
205‧‧‧乘法器
206‧‧‧乘法器
213‧‧‧第一加法器
214‧‧‧第一加法器
217‧‧‧第二加法器
218‧‧‧第二加法器
221‧‧‧格式器
222‧‧‧格式器
225‧‧‧多工器
226‧‧‧多工器
300‧‧‧程序流程
305‧‧‧區塊
310‧‧‧區塊
320‧‧‧區塊
325‧‧‧區塊
330‧‧‧區塊
335‧‧‧區塊
400‧‧‧系統
401‧‧‧第一算術單元
402‧‧‧第二算術單元/數目
403a‧‧‧運算元A
403b‧‧‧運算元B
403c‧‧‧運算元C
403d‧‧‧運算元D
405‧‧‧乘法器
406‧‧‧乘法器
409‧‧‧第一加法器
410‧‧‧第一加法器
417‧‧‧第二加法器
418‧‧‧第二加法器
421‧‧‧格式器
422‧‧‧格式器
425‧‧‧多工器
426‧‧‧多工器
490‧‧‧經組合之結果
500‧‧‧系統
501a‧‧‧中央處理單元(CPU)
501b‧‧‧中央處理單元(CPU)
501c‧‧‧中央處理單元(CPU)
502‧‧‧系統匯流排
503‧‧‧系統記憶體
504‧‧‧唯讀記憶體(ROM)
505‧‧‧隨機存取記憶體(RAM)
506‧‧‧輸入/輸出(I/O)配接器
507‧‧‧通信配接器
508‧‧‧硬碟
510‧‧‧大容量儲存器
511‧‧‧軟體
512‧‧‧網路
515‧‧‧顯示器
516‧‧‧顯示配接器
520‧‧‧介面配接器
CLOW‧‧‧進位位元
RHIGH‧‧‧較高位x個位元/部分結果
RLow‧‧‧較低位x個位元/部分結果
RESHIGH‧‧‧最終結果之高序位位元
RESLOW‧‧‧最終結果之低序位位元
在本說明書之結尾處的申請專利範圍中特別地指出且明顯地主張本標的。實施例之前述及其他特徵及優勢在本文中自結合隨附圖式進行的以下詳細描述為顯而易見,其中: 圖1描繪根據一或多個實施例之系統; 圖2描繪根據一或多個實施例之系統的實施實例; 圖3描繪根據一或多個實施例之系統的程序流程; 圖4描繪根據一或多個實施例之系統的實施實例;且 圖5描繪根據一或多個實施例之系統。

Claims (20)

  1. 一種電路,其包含: 複數個可重組態單元,其可重組態以運算一經組合之結果, 其中該複數個可重組態單元中之一第一可重組態單元的一第一中間結果與該複數個可重組態單元中之一第二可重組態單元的一第二中間結果交換, 其中該複數個可重組態單元中之該第一可重組態單元利用該第二中間結果運算該經組合之結果的一第一部分, 其中該複數個可重組態單元中之該第二可重組態單元利用該第一中間結果運算該經組合之結果的一第二部分。
  2. 如請求項1之電路,其中每一可重組態單元可重組態以運算一個別結果。
  3. 如請求項1之電路,其中每一可重組態單元包含可重組態低精度算術單元。
  4. 如請求項3之電路,其中每一可重組態單元包含一乘法-加法算術電路。
  5. 如請求項4之電路,其中該乘法-加法算術電路包含一乘法器、一第一加法器、一格式器及一第二加法器。
  6. 如請求項1之電路,其中該第一中間結果與該第二中間結果之該交換包含:提供來自該第一可重組態單元之x 個高位元,及來自該第二可重組態單元之x個低位元。
  7. 如請求項1之電路,其中該複數個可重組態單元可重組態以運算x 個位元數目之多次相乘並將2*x 個位元結果相加在一起以產生該經組合之結果。
  8. 如請求項8之電路,其中每一可重組態單元可重組態以將一2*x位元累加器結果加至該經組合之結果。
  9. 如請求項1之電路,其中該複數個可重組態單元中之四個可重組態單元的一群組提供四個單倍、兩個雙倍或一個四倍精度複雜算術運算之執行,該複雜算術運算包含一乘法運算及一加法運算。
  10. 一種包含一處理器及一記憶體之系統,該處理器包含: 複數個可重組態單元,其可重組態以運算一經組合之結果, 其中該複數個可重組態單元中之一第一可重組態單元的一第一中間結果與該複數個可重組態單元中之一第二可重組態單元的一第二中間結果交換, 其中該複數個可重組態單元中之該第一可重組態單元利用該第二中間結果運算該經組合之結果的一第一部分, 其中該複數個可重組態單元中之該第二可重組態單元利用該第一中間結果運算該經組合結果之一第二部分。
  11. 如請求項10之系統,其中每一可重組態單元可重組態以運算一個別結果。
  12. 如請求項11之系統,其中每一可重組態單元包含可重組態低精度算術單元。
  13. 如請求項12之系統,其中每一可重組態單元包含一乘法-加法算術電路。
  14. 如請求項13之系統,其中該乘法-加法算術電路包含一乘法器、一第一加法器、一格式器及一第二加法器。
  15. 如請求項10之系統,其中該第一中間結果與該第二中間結果之該交換包含:提供來自該第一可重組態單元之x 個高位元,及來自該第二可重組態單元之x個低位元。
  16. 如請求項10之系統,其中該複數個可重組態單元可重組態以運算x 位元數目之多次相乘並將2*x 位元結果相加在一起以產生該經組合之結果。
  17. 如請求項16之系統,其中每一可重組態單元可重組態以將一2*x位元累加器結果加至該經組合之結果。
  18. 一種藉由一處理器實施之方法,該處理器包含複數個可重組態單元,該複數個可重組態單元可重組態以運算一經組合之結果,該方法包含: 交換該複數個可重組態單元中之一第一可重組態單元的一第一中間結果與該複數個可重組態單元中之一第二可重組態單元的一第二中間結果; 藉由該複數個可重組態單元中之該第一可重組態單元利用該第二中間結果運算該經組合之結果的一第一部分;及 藉由該複數個可重組態單元中之該第二可重組態單元利用該第一中間結果運算該經組合之結果的一第二部分。
  19. 如請求項18之方法,其中每一可重組態單元可重組態以運算一個別結果。
  20. 如請求項19之方法,其中每一可重組態單元包含可重組態低精度算術單元。
TW107100724A 2017-01-23 2018-01-09 用於組合數個執行單元以運算單一寬純量結果之電路、系統和方法 TWI659360B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/412,429 2017-01-23
US15/412,429 US10275391B2 (en) 2017-01-23 2017-01-23 Combining of several execution units to compute a single wide scalar result

Publications (2)

Publication Number Publication Date
TW201830236A true TW201830236A (zh) 2018-08-16
TWI659360B TWI659360B (zh) 2019-05-11

Family

ID=62906484

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107100724A TWI659360B (zh) 2017-01-23 2018-01-09 用於組合數個執行單元以運算單一寬純量結果之電路、系統和方法

Country Status (7)

Country Link
US (1) US10275391B2 (zh)
JP (1) JP6979076B2 (zh)
CN (1) CN110199255B (zh)
DE (1) DE112018000138B4 (zh)
GB (1) GB2573685B (zh)
TW (1) TWI659360B (zh)
WO (1) WO2018134694A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269651B2 (en) 2019-09-10 2022-03-08 International Business Machines Corporation Reusing adjacent SIMD unit for fast wide result generation

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4612628A (en) * 1983-02-14 1986-09-16 Data General Corp. Floating-point unit constructed of identical modules
JPH0724811Y2 (ja) * 1988-12-15 1995-06-05 横河電機株式会社 デジタルフィルタ
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US7062526B1 (en) 2000-02-18 2006-06-13 Texas Instruments Incorporated Microprocessor with rounding multiply instructions
JP3542342B2 (ja) * 2001-09-14 2004-07-14 独立行政法人 科学技術振興機構 半導体演算装置
US8683184B1 (en) * 2004-11-15 2014-03-25 Nvidia Corporation Multi context execution on a video processor
CN100555212C (zh) * 2007-07-18 2009-10-28 中国科学院计算技术研究所 一种浮点乘加器及其乘法csa压缩树的进位校验装置
US8106914B2 (en) 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US8682639B2 (en) 2010-09-21 2014-03-25 Texas Instruments Incorporated Dedicated memory window for emulation address
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
FR2974645A1 (fr) * 2011-04-28 2012-11-02 Kalray Operateur de multiplication et addition fusionnees a precision mixte
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
JP6064435B2 (ja) 2012-08-21 2017-01-25 富士通株式会社 演算回路、演算処理装置、及び除算方法
WO2014116712A1 (en) * 2013-01-22 2014-07-31 Samplify Systems, Inc. Data compression and decompression using simd instructions
US9189200B1 (en) * 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9256433B2 (en) 2013-03-15 2016-02-09 Intel Corporation Systems and methods for move elimination with bypass multiple instantiation table
US9489197B2 (en) 2013-07-09 2016-11-08 Texas Instruments Incorporated Highly efficient different precision complex multiply accumulate to enhance chip rate functionality in DSSS cellular systems
RU2016134918A (ru) * 2014-03-27 2018-03-01 Интел Корпорейшн Логика обработки и способ диспетчеризации команд от многочисленных нитей
US9467279B2 (en) * 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US20160179470A1 (en) 2014-12-23 2016-06-23 Shay Gueron Method and apparatus for performing big-integer arithmetic operations
US20160188327A1 (en) * 2014-12-24 2016-06-30 Elmoustapha Ould-Ahmed-Vall Apparatus and method for fused multiply-multiply instructions
CN105652660B (zh) * 2016-01-07 2018-11-30 北京北广科技股份有限公司 一种基于单片机的获取分频频率控制字的方法
US10007487B1 (en) * 2016-06-30 2018-06-26 Altera Corporation Double-precision floating-point operation

Also Published As

Publication number Publication date
GB2573685A (en) 2019-11-13
US20180210859A1 (en) 2018-07-26
GB2573685B (en) 2020-04-22
CN110199255A (zh) 2019-09-03
TWI659360B (zh) 2019-05-11
JP6979076B2 (ja) 2021-12-08
WO2018134694A1 (en) 2018-07-26
DE112018000138B4 (de) 2022-03-24
CN110199255B (zh) 2022-10-28
JP2020507154A (ja) 2020-03-05
US10275391B2 (en) 2019-04-30
DE112018000138T5 (de) 2019-07-11
GB201910346D0 (en) 2019-09-04

Similar Documents

Publication Publication Date Title
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
TWI529613B (zh) 一種用於可降低浮點運算功率之電腦實施方法及算術子系統
US9600235B2 (en) Technique for performing arbitrary width integer arithmetic operations using fixed width elements
US10592208B2 (en) Very low precision floating point representation for deep learning acceleration
JP3940542B2 (ja) データプロセッサ及びデータ処理システム
BRPI0708284A2 (pt) processador de ponto flutuante com exigências de potência reduzida para sub-precisão selecionável
US20170192752A1 (en) Partial stochastic rounding that includes sticky and guard bits
JP2015505998A (ja) 大きな浮動小数点値と小さな浮動小数点値の両方を使用した算術演算の実行
JP2012069116A (ja) ベクトル浮動小数点引数削減
US11620105B2 (en) Hybrid floating point representation for deep learning acceleration
US20200042321A1 (en) Low power back-to-back wake up and issue for paired issue queue in a microprocessor
US10140090B2 (en) Computing and summing up multiple products in a single multiplier
JP7129138B2 (ja) 16ビット浮動小数点乗算器を用いた行列と行列の乗算による複数精度整数乗算器
TWI659360B (zh) 用於組合數個執行單元以運算單一寬純量結果之電路、系統和方法
US10613861B2 (en) Programmable linear feedback shift register
JP2006039790A (ja) ブロードキャスト型並列処理のための演算処理装置
US9141337B2 (en) Floating point multiply accumulator multi-precision mantissa aligner
JP2022024080A (ja) ニューラルネットワークの積和演算方法及び装置
US8924447B2 (en) Double precision approximation of a single precision operation
US20230100785A1 (en) Priority encoder-based techniques for computing the minimum or the maximum of multiple values
US20230195414A1 (en) Arithmetic processing apparatus and arithmetic processing method
CN102713835B (zh) 快速无分支向量除法计算
Srivastava et al. Design of 16-Bit ALU with Booths Multiplier Using Radix-4 and Its FPGA Implementation
TW202338601A (zh) 執行指令以將輸入值從一種資料格式轉換為另一種資料格式之硬體裝置
Holmgren et al. Lattice QCD clusters at Fermilab