TW201805802A - 一種運算裝置及其操作方法 - Google Patents
一種運算裝置及其操作方法 Download PDFInfo
- Publication number
- TW201805802A TW201805802A TW106126469A TW106126469A TW201805802A TW 201805802 A TW201805802 A TW 201805802A TW 106126469 A TW106126469 A TW 106126469A TW 106126469 A TW106126469 A TW 106126469A TW 201805802 A TW201805802 A TW 201805802A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- instruction
- module
- unit
- scale
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 239000013598 vector Substances 0.000 claims abstract description 87
- 230000003139 buffering effect Effects 0.000 claims abstract description 3
- 238000004364 calculation method Methods 0.000 claims description 30
- 230000008569 process Effects 0.000 claims description 15
- 229910052704 radon Inorganic materials 0.000 claims 1
- SYUHGPGVQRZVTB-UHFFFAOYSA-N radon atom Chemical compound [Rn] SYUHGPGVQRZVTB-UHFFFAOYSA-N 0.000 claims 1
- 101100112673 Rattus norvegicus Ccnd2 gene Proteins 0.000 description 16
- 238000010586 diagram Methods 0.000 description 9
- 238000013500 data storage Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Apparatus For Radiation Diagnosis (AREA)
- Complex Calculations (AREA)
Abstract
一種運算裝置及其操作方法,裝置包括指令模塊、數據模塊及運算模塊,指令模塊對指令進行操作,包括指令緩存、指令處理、判斷依賴關係等,數據模塊對數據進行操作,包括從內存中讀出或寫入數據和向運算模塊輸入運算數據等,運算模塊用於根據指令對數據進行相關運算。本發明能夠在執行指令時,根據待運算數據的長度和運算模塊的規模進行相應調整,提升了包含大量向量計算任務的執行性能,具有指令結構簡潔、數據運算靈活高效等優點。
Description
本發明屬於計算機領域,具體涉及一種運算裝置及其操作方法。
隨著大數據時代的來臨,與向量運算的相關應用也日益增加,參與運算的數據量不斷增大,數據規格和維度不斷擴增,運算形式也逐漸增多,一方面,運算單元的規模難以隨著數據量的大幅度提升而大幅度擴大,這就使得運算時如何調控運算數據提出了要求;另一方面,這些運算不再局限於在統一規格的數據間進行,而是有很大一部分運算是不同規格或不同維度的數據間進行,這就為運算裝置的靈活性提出了更高的要求。
在現有技術中,一種進行向量運算的已知方案是使用通用處理器(central processing unit,CPU)或圖形處理器(graphics processing unit,GPU),然而,這種方法或者因其結構更適應於標量運算,進行向量運算時效率較低;或者,因其片上緩存太小,無法滿足高效完成大規模向量運算的要求。在另一種現有技術中,使用專門定制的向量運算裝置來進行向量計算,即使用定制的存儲單元和處理單元進行向量運算。然而,目前已有的專用向量運算裝置受限於寄存器堆,只能支持相同長度的向量運算,靈活性不足。
除此之外,上述裝置對應的指令集,只能執行相同長度的數據的運算,且受限於存儲器的規模和運算單元的規模。對於不同長度的數據和不滿足運算單元規模的數據,一種方式是採用多條指令對數據進行依次調用,另一種方式是採用循環指令的方式進行反復調用。這不僅使得指令集的結構複雜,指令隊列冗長,且執行效率低下,而且運行時限制多、靈活性差,無法為大規模的向量運算提供便利。
本發明的目的在於,提供一種運算裝置及其操作方法,用於根據指令高效靈活地執行相同規模或不同規模的數據的運算,解決了當前越來越多的算法包含大量相同規模或不同規模數據的運算問題,降低了運算單元規模。
本發明提供一種運算裝置,裝置包括指令模塊、數據模塊和運算模塊,其中:
指令模塊用於緩存指令,並向數據模塊及運算模塊提供指令;
數據模塊用於根據指令模塊中的指令,向運算模塊提供運算數據;
運算模塊用於根據指令模塊中的指令及數據模塊提供的運算數據,進行運算。
進一步,指令模塊包括指令緩存單元、指令處理單元、依賴關係處理單元、存儲隊列單元,其中:
指令緩存單元用於存儲待執行的指令,指令處理單元用於從指令緩存單元獲取指令,並對該指令進行處理,依賴關係處理單元用於判斷該指令與前一正在執行的指令是否訪問相同的數據:
如果是,依賴關係處理單元將該指令存放至所述存儲隊列單元,待前一正在執行的指令執行完畢後,再將該指令提供給運算模塊;
否則,直接將該指令提供給運算模塊。
進一步,指令處理單元包括:
取指部分,用於從指令緩存單元中獲取指令;
譯碼部分,用於對獲取的指令進行譯碼;
指令隊列部分,用於對譯碼後的指令進行順序存儲。
進一步,數據模塊包括數據I/O單元和數據暫存單元,其中,數據I/O單元用於直接從內存中讀取運算數據,數據暫存單元用於存儲運算數據,並對該運算數據進行調整後,提供至運算模塊。
進一步,數據暫存單元用於對運算數據進行調整後,提供至運算模塊,包括:
當參與運算的兩個運算數據長度均小於等於運算模塊的運算規模時,數據暫存單元直接將該兩個運算數據提供至運算模塊;
當參與運算的兩個運算數據長度均大於運算模塊的運算規模時,將每個運算數據拆分為多個長度均小於等於所述運算規模的子運算數據,並將該子運算數據分多次提供至所述運算模塊;
當參與運算的兩個運算數據中,一個運算數據長度大於運算模塊的運算規模,另一個運算數據長度小於等於運算模塊的運算規模時,將長度大於運算規模的運算數據拆分為多個長度均小於等於運算規模的子運算數據,並將該多個子運算數據和長度小於等於運算規模的運算數據分多次提供至所述運算模塊。
進一步,運算數據為向量,運算模塊用於執行向量邏輯運算或向量四則運算。
本發明還提供一種運算裝置的操作方法,方法包括:
S1,緩存指令於指令模塊中;
S2,將指令模塊中的指令提供至數據模塊,數據模塊根據該指令向運算模塊提供運算數據;
S3,將指令模塊中的指令提供至運算模塊,運算模塊根據該指令及運數據模塊提供的運算數據,進行運算。
進一步,指令模塊包括指令緩存單元、指令處理單元、依賴關係處理單元、存儲隊列單元,所述步驟S1包括:
S11,在指令緩存單元存儲待執行的指令;
S12,指令處理單元從指令緩存單元獲取指令,並對該指令進行處理;
S13,依賴關係處理單元判斷該指令與前一正在執行的指令是否訪問相同的數據,如果是,依賴關係處理單元將該指令存放至所述存儲隊列單元,待前一正在執行的指令執行完畢後,再將該指令提供給運算模塊,否則,直接將該指令提供給運算模塊。
進一步,指令處理單元包括取指部分、譯碼部分和指令隊列部分,其中,步驟S12包括:
S121,取指部分從指令緩存單元中獲取指令;
S122,譯碼部分對獲取的指令進行譯碼;
S123,指令隊列部分對譯碼後的指令進行順序存儲。
進一步,數據模塊包括數據I/O單元和數據暫存單元,其中,步驟S2包括:
S21,數據I/O單元直接從內存中讀取運算數據,並存儲於數據暫存單元;
S22,數據暫存單元對存儲的運算數據進行調整後,提供至運算模塊。
進一步,步驟S22包括:
當參與運算的兩個運算數據長度均小於等於運算模塊的運算規模時,數據暫存單元直接將該兩個運算數據提供至運算模塊;
當參與運算的兩個運算數據長度均大於運算模塊的運算規模時,將每個運算數據拆分為多個長度均小於等於所述運算規模的子運算數據,並將該子運算數據分多次提供至所述運算模塊;
當參與運算的兩個運算數據中,一個運算數據長度大於運算模塊的運算規模,另一個運算數據長度小於等於運算模塊的運算規模時,將長度大於運算規模的運算數據拆分為多個長度均小於等於運算規模的子運算數據,並將該多個子運算數據和長度小於等於運算規模的運算數據分多次提供至所述運算模塊。
進一步,運算數據為向量,運算模塊用於執行向量邏輯運算或向量四則運算。
本發明提供的運算裝置及其操作方法,能夠在僅發送一條指令的情況下,將運算數據從內存中讀取後暫存在數據暫存單元上,數據暫存單元根據運算數據的長度,對運算數據進行調整後提供至運算模塊,從而能夠支持不同長度數據的運算,降低了運算單元規模。另外,本發明採用依賴關係處理單元解決數據存儲中的相關性問題,從而提升了包含大量計算任務的執行性能。而且,本發明採用的指令具有精簡的格式,使得指令集結構簡單、使用方便、支持靈活的數據長度和運算規模。
為使本發明的目的、技術方案和優點更加清楚明白,以下結合具體實施例,並參照圖式,對本發明進一步詳細說明。
本發明可以應用於以下(包括但不限於)場景中:數據處理、機器人、電腦、打印機、掃描儀、電話、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、雲端服務器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備等各類電子產品;飛機、輪船、車輛等各類交通工具;電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機等各類家用電器;以及包括核磁共振儀、超音波、心電圖儀等各類醫療設備。
圖1是本發明提供的運算裝置的結構示意圖,如圖1所示,裝置包括指令模塊10、數據模塊20和運算模塊30。指令模塊10用於緩存指令,並向數據模塊20及運算模塊30提供指令。指令模塊10中的指令控制數據模塊20的數據流的方向,數據模塊20的數據會影響指令模塊10中對依賴關係的處理,同時,指令模塊10中的指令控制運算模塊30的具體運算,運算模塊30的運算是否完成會控制指令模塊10是否讀取新的指令;數據模塊20為運算模塊30提供具體的運算數據,運算模塊30會將運算結果送回數據模塊20進行保存。
圖2是本發明提供的裝置的指令模塊的示意圖。如圖2所示,指令模塊10包括指令緩存單元11、指令處理單元12、依賴關係處理單元13和存儲隊列單元14。其中,指令處理單元12又分為三個部分:取指部分121、譯碼部分122和指令隊列部分123。指令緩存單元11用於在指令執行過程中緩存該指令,當一條指令執行完之後,如果該指令同時也是指令緩存單元11中未被提交指令中最早的一條指令,該指令將被提交,一旦提交,該條指令進行的操作對裝置狀態的改變將無法撤銷。取指部分121用於從指令緩存單元11中取出下一條將要執行的指令,並將該指令傳給譯碼部分122;譯碼部分122用於對指令進行譯碼,並將譯碼後指令傳給指令隊列123;指令隊列部分123用於對譯碼後的指令進行順序存儲。依賴關係處理單元13用於處理當前指令與前一條指令可能存在的數據依賴關係,例如,在從數據模塊20中訪問數據時,前後指令可能會訪問同一塊存儲空間中的數據,如果前一條指令未執行完畢,就對該數據進行操作的話,會影響該數據的一致性,從而導致運算結果的正確性。因此,當前指令如果被依賴關係處理單元13檢測到與之前的指令的數據存在依賴關係,該指令必須在存儲隊列單元14內等待至依賴關係被消除,其中,存儲隊列單元14是一個有序隊列,與之前指令在數據上有依賴關係的指令被存儲在該隊列內直至依賴關係被消除。
圖3是本發明中數據模塊的結構示意圖。如圖3所示,數據模塊20由兩部分組成,即數據I/O單元21和數據暫存單元22。數據I/O單元21用於與內存進行交互,即能夠直接從內存中讀取數據或直接將數據寫入內存中。數據暫存單元22由高速暫存存儲器(Scratchpad Memory)組成,其中該存儲器可以通過各種不同存儲器件((靜態隨機存取存儲器(static random access memory,SRAM)、增強動態隨機存取存儲器(enhanced dynamic random access memory,eDRAM)、動態隨機存取存儲器(Dynamic Random Access Memory,DRAM)、憶阻器、3D-DRAM或非易失存儲等)實現。數據暫存單元22能夠存儲不同大小的運算數據,如各種規模的向量數據。數據I/O單元21根據指令將必要的運算數據讀取出來,並暫存在數據暫存單元22上,由於採用高速暫存存儲器,從而使得可以存儲不同長度的運算數據,同時,在運算過程中,數據暫存單元22可以根據運算單元30的規模和運算數據的長度,對運算數據進行調整後,提供至運算模塊30。
具體地,當參與運算的兩個運算數據長度均小於等於運算模塊的運算規模時,數據暫存單元22直接將該兩個運算數據提供至運算模塊30。舉例來說,運算單元30是的運算規模是一次性處理兩組向量的運算,每組向量包括4個元素,如(A1,A2,A3,A4)和(B1,B2,B3,B4)之間的運算是該運算單元30的運算規模;兩個運算數據均是小於4個元素的向量,如(A1,A2,A3)和(B1,B2),此時,可直接將(A1,A2,A3)和(B1,B2)提供至運算模塊30進行運算。
當參與運算的兩個運算數據長度均大於運算模塊的運算規模時,數據暫存單元22將每個運算數據拆分為多個長度均小於等於運算規模的子運算數據,並將該子運算數據分多次提供至運算模塊。舉例來說,運算單元30的運算規模是一次性可處理兩組向量運算的運算規模,其中每組向量包括4個元素,如(A1,A2,A3,A4)和(B1,B2,B3,B4)之間的運算是該運算單元30的運算規模;兩個運算數據均大於運算規模,如(A1,A2,A3,A4,A5)和(B1,B2,B3,B4,B5),此時,可將(A1,A2,A3,A4,A5)拆分為D1(A1,A2,A3,A4)和D2(A5),將(B1,B2,B3,B4,B5)拆分為d1(B1,B2,B3,B4)和d2(B5),然後分兩次提供至運算單元30中,其中,第一次提供D1(A1,A2,A3,A4)和d1(B1,B2,B3,B4)進行運算,第二次提供D2(A5)和d2(B5)。上述例子是將大於運算規模的運算數據均拆分為2段,每次提供相應段的子運算數據。在兩個運算數據的拆分的段數不一致時,例如,第一個運算數據拆分為3段,表示為D1、D2、D3,第二個運算數據拆分為2段,表示為d1和d2,則分3次向運算單元提供第一個運算數據D1、D2、D3,並且這3次需要循環提供第二個運算數據d1和d2,即第一次提供D1和d1,第二次提供D2和d2,第三次提供D3和d1,又比如,第一個運算數據拆分為5段,表示為D1、D2、D3、D4、D5,第二個運算數據拆分為3段,表示為d1、d2和d3,則分5次向運算單元提供運算數據,即第一次提供D1和d1,第二次提供D2和d2,第三次提供D3和d3,第四次提供D4和d1,第五次提供D5和d2。
當參與運算的兩個運算數據中,一個運算數據長度大於運算模塊的運算規模,另一個運算數據長度小於等於運算模塊的運算規模時,將長度大於運算規模的運算數據拆分為多個長度均小於等於運算規模的子運算數據,並將該多個子運算數據和長度小於等於運算規模的運算數據分多次提供至所述運算模塊。簡要舉例來說,第一個運算數據長度大於運算規模,拆分為3段D1、D2和D3,第二個運算數據小於等於運算規模,無需拆分,表示為d,則分3次向運算單元提供第一、第二運算數據,即第一次提供D1和d,第二次提供D2和d,第三次提供D3和d。
總的來說,數據暫存單元22對運算數據的調整是指,當運算數據長度不大於運算單元的運算規模時,可以通過該存儲器直接將待運算的數據送入運算單元30中;否則,每一次運算,將符合運算單元30運算規模的數據送入運算單元30中,運算完畢或者該批數據進入下一級流水線之後,該存儲器向運算單元30中送入新一批符合運算單元30運算規模的數據進行運算。另外,當兩個待運算的數據長度相同時,則直接或拆分後送入運算單元30中進行運算;否則,長度較大的數據分段後按順序讀取,長度較小的數據分段後循環讀取,直至運算結束。
圖4是本發明提供的裝置的運算模塊的結構示意圖。如圖4所示,運算模塊由若干種不同的運算部件組成,如向量加法部件、向量減法部件、向量邏輯與部件、向量點積部件等等。每種部件有若干個。利用這些運算部件,運算模塊能夠支持多種向量運算。
圖5是本發明中支持不同長度運算數據的指令的方法流程圖。執行該指令的過程包括:
S1,指令處理單元12中的取指部分121從指令緩存單元11中取出一條向量運算指令,並將該指令送往指令處理單元中的譯碼部分122。
S2,譯碼部分122對指令進行譯碼,將指令根據自定義的指令規則拆分為操作碼和各個不同的操作域。這裡採用的自定義的指令規則是指令包含操作碼和至少一個操作域,操作碼定義向量運算的類型,操作域中保存待運算的數據值、數據存儲的地址、數據的長度或是運算結果保存地址等,具體操作域的含義根據操作碼的不同而不同。而後,將該運算指令送往指令隊列部分123。
S3,在指令隊列部分123中,根據該指令的操作碼和操作域獲取待運算的數據,送往依賴關係處理單元13對數據依賴關係進行分析和判斷。
S4,在依賴關係處理單元14中,分析該指令與前面的尚未執行結束的指令在數據上是否存在依賴關係。若無依賴關係,則無需等待,否則將該條指令存儲在存儲隊列單元中,等待至其與前面的未執行結束的指令在數據上不再存在依賴關係為止。將指令送往運算單元30。
S5,當指令送往運算單元30準備運算時,數據模塊20中的數據暫存單元22根據數據的長度和運算單元30的規模對數據進行調整,即當向量長度不大於運算單元30的運算規模時,可以直接將待運算的向量送入運算單元30中;否則,每一次運算,將符合運算單元30運算規模的數據送入運算單元30中,運算完畢後,向運算單元30中送入新一批符合運算規模的數據進行運算,直至運算結束。當兩個待運算的向量長度相同時,則直接送入運算單元中進行運算;否則,長度較大的向量按順序讀取,長度較小的向量循環讀取,直至運算結束。若待運算的向量同時需要根據運算單元規模進行調整,又需要對長度進行調整,則保證長度較大的向量按順序讀取,長度較小的向量循環讀取的順序,依次讀取符合運算規模的數據即可。
S6,運算完成後,將結果寫回至數據暫存單元22中的指定地址,同時提交指令緩存單元11中的該指令。
為使該過程更加清楚明白,以下提供一具體實施例,並參照圖式,對本流程進一步詳細說明。
實施例一
本實施例描述了採用運算裝置進行向量間與運算的具體過程,首先,本實施例中向量間與運算指令格式為:
假定寄存器每個地址能夠存儲16位數據,運算單元內包含4個間與運算器,每個運算器可以同時執行16位數據的間與運算。以運算指令VAV 00001 01000 01001 01000 10001為例,該指令表示向量0和向量1執行VAV運算,即向量間與運算。具體的,向量間與運算的過程包括:
S1,指令處理單元11中的取指部分121從指令緩存單元11中取出一條向量運算指令,即VAV 00001 01000 01001 01000 10001,並將該指令送往指令處理單元12中的譯碼部分122。
S2,譯碼部分122對指令進行譯碼,得到該指令操作碼VAV,表示執行向量間與運算,有五個操作域,分別表示待運算向量vin0的起始地址和長度,向量vin1的起始地址和長度、運算結果的存儲地址,將該運算指令送往指令隊列部分123。
S3,在指令隊列部分123中,根據該指令的操作碼和操作域獲取待運算的數據。該指令操作碼為VAV,即執行向量間與邏輯運算,由操作域1、2、3、4處獲得待運算的數據地址和數據長度,即向量vin0的起始地址00001、向量vin0的長度01000、向量vin1的起始地址01001、向量vin1的長度01000。即向量vin0從地址為00001處開始,讀取長度為8個地址長度的數據,即地址為00001~01000的數據;向量vin1從地址為01001處開始,同樣,也讀取長度為8個地址長度的數據。而後,送往依賴關係處理單元13對數據依賴關係進行分析和判斷。
S4,在依賴關係處理單元123中,分析該指令與前面的尚未執行結束的指令在數據上是否存在依賴關係。若無依賴關係,則無需等待,否則將該條指令存儲在存儲隊列單元14中,等待至其與前面的未執行結束的指令在數據上不再存在依賴關係為止。將指令送往運算單元30。
S5,數據模塊20中數據I/O單元21事先從外部的內存中獲取數據,並將獲取的數據存儲於數據暫存單元22。當指令送往運算單元30準備運算時,數據暫存單元22根據指令所指示的數據地址,找到相應的數據並提供至運算單元30,在提供前,數據暫存單元22根據數據的長度和運算單元30的運算規模對數據進行調整。這裡,運算單元30一次只能夠處理4組16位向量的間與運算,所以,第一次送入運算單元30的數據為vin0所指的前4個地址長度的數據和vin1所指的前4個地址長度的數據,即地址為00001~00100和01001~01100的數據進行運算。待運算完畢,載入vin0和vin1各自的後4個地址長度的數據進行運算,即地址為00101~01000和01101~10000的數據進行間與運算。
S6,運算完成後,將結果寫回至數據暫存單元22中的指定地址10001處,同時提交指令緩存單元中的該向量間與邏輯指令。
實施例二
本實施例描述了採用運算裝置進行向量加法運算的具體過程,首先,本實施例,定義向量加法運算指令格式為:
假定寄存器每個地址能夠存儲16位數據,運算單元內包含4個加法運算器,每個運算器可以同時執行16位數據的加法運算。VA 00001 01000 01001 00010 10001為例,該指令表示向量0和向量1執行VA運算,即向量加法運算。運算裝置執行該向量加法指令的過程包括:
S1,指令處理單元12中的取指部分121從指令緩存單元11中取出一條向量運算指令,即VA 00001 01000 01001 00010 10001,並將該指令送往指令處理單元中的譯碼部分12。
S2,譯碼部分12對指令進行譯碼,得到該指令操作碼VA,表示執行向量加法運算,有五個操作域,分別表示待運算向量vin0的起始地址和長度,向量vin1的起始地址和長度、運算結果的存儲地址,將該運算指令送往指令隊列部分123。
S3,在指令隊列部分123中,根據該指令的操作碼和操作域獲取待運算的數據。該指令操作碼為VA,即執行向量加法運算,由操作域1、2、3、4處獲得待運算的數據地址和數據長度,即向量vin0的起始地址00001、向量vin0的長度01000、向量vin1的起始地址01001、向量vin1的長度00010。即向量vin0從地址為00001處開始,讀取長度為8個地址長度的數據,即地址為00001~01000的數據;向量vin1從地址為01001處開始,讀取長度為2個地址長度的數據。而後,送往依賴關係處理單元13對數據依賴關係進行分析和判斷。
S4,在依賴關係處理單元13中,分析該指令與前面的尚未執行結束的指令在數據上是否存在依賴關係。若無依賴關係,則無需等待,否則將該條指令存儲在存儲隊列單元中,等待至其與前面的未執行結束的指令在數據上不再存在依賴關係為止。將指令送往運算單元。
S5,依賴關係不存在後,該條向量加法指令被送往運算單元30。運算單元30根據所需數據的地址和長度從數據暫存單元22中取出需要的向量,然後在運算單元中完成加法運算。這裡,因為運算單元30一次只能夠處理4組16位向量的加法運算,所以不能一次將所有數據全部發送至運算單元進行運算,而是需要分多次進行。又因為vin0和vin1長度不同,vin1長度較短,故運算時,需要循環讀取vin1的數據。如圖6所示,第一次送入運算單元30的數據為vin0所指的前4個地址長度的數據和vin1所指的2個地址長度的數據,即發送的數據為地址為00001~00100和01001~01010的數據,其中進行運算的數據的對應關係為:地址為00001處的數據與地址為01001處的數據進行加法運算、地址為00010處的數據與地址為01010處的數據進行加法運算、地址為00011處的數據與地址為01001處的數據進行加法運算、地址為00100處的數據與地址為01010處的數據進行加法運算。待運算完畢,第二次送入運算單元30的數據為vin0所指的後4個地址長度的數據和vin1所指的2個地址長度的數據,即地址為00101~01000和01001~01010的數據進行加法運算,運算時的對應關係為地址為00101處的數據與地址為01001處數據進行加法運算、地址為00110處的數據與地址為01010處的數據進行加法運算、地址為00111處內的數據與地址為01001處的數據進行加法運算、地址為01000 處的數據與地址為01010處的數據進行加法運算。
S6,運算完成後,將結果寫回至數據暫存單元22中的指定地址10001處,同時提交指令緩存單元11中的該向量加法指令。
以上所述的具體實施例,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施例而已,並不用於限制本發明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
10‧‧‧指令模塊
11‧‧‧指令緩存單元
12‧‧‧指令處理單元
121‧‧‧取指部分
122‧‧‧譯碼部分
123‧‧‧指令隊列部分
13‧‧‧依賴關係處理單元
14‧‧‧存儲隊列單元
20‧‧‧數據模塊
21‧‧‧數據I/O單元
22‧‧‧數據暫存單元
30‧‧‧運算模塊
S1、S2、S3、S4、S5、S6‧‧‧步驟
Vin0、Vin1‧‧‧向量
11‧‧‧指令緩存單元
12‧‧‧指令處理單元
121‧‧‧取指部分
122‧‧‧譯碼部分
123‧‧‧指令隊列部分
13‧‧‧依賴關係處理單元
14‧‧‧存儲隊列單元
20‧‧‧數據模塊
21‧‧‧數據I/O單元
22‧‧‧數據暫存單元
30‧‧‧運算模塊
S1、S2、S3、S4、S5、S6‧‧‧步驟
Vin0、Vin1‧‧‧向量
圖1是本發明提供的運算裝置的結構示意圖。
圖2是本發明中指令模塊的結構示意圖。
圖3是本發明中數據模塊的結構示意圖。
圖4是本發明中運算模塊的結構示意圖。
圖5是本發明中支持不同長度運算數據的指令的方法流程圖。
圖6是本發明實施例提供的不同長度運算向量進行運算時,循環讀取較短向量進行運算的運算關係示意圖。
10‧‧‧指令模塊
20‧‧‧數據模塊
30‧‧‧運算模塊
Claims (12)
- 一種運算裝置,其中,裝置包括ㄧ指令模塊、ㄧ數據模塊和ㄧ運算模塊,其中: 所述指令模塊用於緩存ㄧ指令,並向所述數據模塊及所述運算模塊提供所述指令; 所述數據模塊用於根據所述指令模塊中的所述指令,向所述運算模塊提供ㄧ運算數據;以及 所述運算模塊用於根據所述指令模塊中的所述指令及所述數據模塊提供的所述運算數據,進行運算。
- 根據申請專利範圍第1項所述的運算裝置,其中,所述指令模塊包括ㄧ指令緩存單元、ㄧ指令處理單元、ㄧ依賴關係處理單元、ㄧ存儲隊列單元,其中: 所述指令緩存單元用於存儲待執行的所述指令,所述指令處理單元用於從所述指令緩存單元獲取所述指令,並對所述指令進行處理,所述依賴關係處理單元用於判斷所述指令與前一正在執行的指令是否訪問相同的數據: 如果是,所述依賴關係處理單元將所述指令存放至所述存儲隊列單元,待前一正在執行的指令執行完畢後,再將所述指令提供給所述運算模塊;以及 否則,直接將所述指令提供給所述運算模塊。
- 根據申請專利範圍第2項所述的運算裝置,其中,所述指令處理單元包括: ㄧ取指部分,用於從所述指令緩存單元中獲取所述指令; ㄧ譯碼部分,用於對獲取的所述指令進行譯碼;以及 ㄧ指令隊列部分,用於對譯碼後的所述指令進行順序存儲。
- 根據申請專利範圍第1項所述的運算裝置,其中,所述數據模塊包括ㄧ數據I/O單元和ㄧ數據暫存單元,其中,所述數據I/O單元用於直接從內存中讀取所述運算數據,所述數據暫存單元用於存儲所述運算數據,並對所述運算數據進行調整後,提供至所述運算模塊。
- 根據申請專利範圍第4項所述的運算裝置,其中,所述數據暫存單元用於對所述運算數據進行調整後,提供至所述運算模塊,包括: 當參與運算的兩個所述運算數據長度均小於等於所述運算模塊的ㄧ運算規模時,所述數據暫存單元直接將兩個所述運算數據提供至所述運算模塊; 當參與運算的兩個所述運算數據長度均大於所述運算模塊的所述運算規模時,將每個所述運算數據拆分為多個長度均小於等於所述運算規模的ㄧ子運算數據,並將所述子運算數據分多次提供至所述運算模塊;以及 當參與運算的兩個所述運算數據中,一個所述運算數據長度大於所述運算模塊的所述運算規模,另一個所述運算數據長度小於等於所述運算模塊的所述運算規模時,將長度大於所述運算規模的所述運算數據拆分為多個長度均小於等於所述運算規模的所述子運算數據,並將多個所述子運算數據和長度小於等於所述運算規模的所述運算數據分多次提供至所述運算模塊。
- 根據申請專利範圍第1項所述的運算裝置,其中,所述運算數據為向量,所述運算模塊用於執行向量邏輯運算或向量四則運算。
- 一種運算裝置的操作方法,所述運算裝置為申請專利範圍第1-6任意一項所述的運算裝置,其中,方法包括: S1,緩存ㄧ指令於ㄧ指令模塊中; S2,將所述指令模塊中的所述指令提供至ㄧ數據模塊,所述數據模塊根據所述指令向ㄧ運算模塊提供ㄧ運算數據;以及 S3,將所述指令模塊中的所述指令提供至所述運算模塊,所述運算模塊根據所述指令及所述數據模塊提供的所述運算數據,進行運算。
- 根據申請專利範圍第7項所述的運算裝置的操作方法,其中,所述指令模塊包括ㄧ指令緩存單元、ㄧ指令處理單元、ㄧ依賴關係處理單元、ㄧ存儲隊列單元,所述步驟S1包括: S11,在所述指令緩存單元存儲待執行的所述指令; S12,所述指令處理單元從所述指令緩存單元獲取所述指令,並對所述指令進行處理;以及 S13,所述依賴關係處理單元判斷所述指令與前一正在執行的指令是否訪問相同的數據,如果是,所述依賴關係處理單元將所述指令存放至所述存儲隊列單元,待前一正在執行的指令執行完畢後,再將所述指令提供給所述運算模塊,否則,直接將所述指令提供給所述運算模塊。
- 根據申請專利範圍第8項所述的運算裝置的操作方法,其中,所述指令處理單元包括ㄧ取指部分、ㄧ譯碼部分和ㄧ指令隊列部分,其中,所述步驟S12包括: S121,所述取指部分從所述指令緩存單元中獲取所述指令; S122,所述譯碼部分對獲取的所述指令進行譯碼;以及 S123,所述指令隊列部分對譯碼後的所述指令進行順序存儲。
- 根據申請專利範圍第7項所述的運算裝置的操作方法,其中,所述數據模塊包括ㄧ數據I/O單元和ㄧ數據暫存單元,其中,所述步驟S2包括: S21,所述數據I/O單元直接從內存中讀取所述運算數據,並存儲於所述數據暫存單元;以及 S22,所述數據暫存單元對存儲的所述運算數據進行調整後,提供至所述運算模塊。
- 根據申請專利範圍第10項所述的運算裝置的操作方法,其中,所述步驟S22包括: 當參與運算的兩個所述運算數據長度均小於等於所述運算模塊的ㄧ運算規模時,所述數據暫存單元直接將兩個所述運算數據提供至所述運算模塊; 當參與運算的兩個所述運算數據長度均大於所述運算模塊的所述運算規模時,將每個所述運算數據拆分為多個長度均小於等於所述運算規模的ㄧ子運算數據,並將所述子運算數據分多次提供至所述運算模塊;以及 當參與運算的兩個所述運算數據中,一個所述運算數據長度大於所述運算模塊的所述運算規模,另一個所述運算數據長度小於等於所述運算模塊的所述運算規模時,將長度大於所述運算規模的所述運算數據拆分為多個長度均小於等於所述運算規模的所述子運算數據,並將多個所述子運算數據和長度小於等於所述運算規模的所述運算數據分多次提供至所述運算模塊。
- 根據申請專利範圍第7項所述的運算裝置的操作方法,其中,所述運算數據為向量,所述運算模塊用於執行向量邏輯運算或向量四則運算。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610640115.6 | 2016-08-05 | ||
??201610640115.6 | 2016-08-05 | ||
CN201610640115.6A CN107688466B (zh) | 2016-08-05 | 2016-08-05 | 一种运算装置及其操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201805802A true TW201805802A (zh) | 2018-02-16 |
TWI752068B TWI752068B (zh) | 2022-01-11 |
Family
ID=61072478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106126469A TWI752068B (zh) | 2016-08-05 | 2017-08-04 | 一種運算裝置及其操作方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20190235871A1 (zh) |
EP (1) | EP3495947B1 (zh) |
KR (1) | KR102467544B1 (zh) |
CN (3) | CN112214244A (zh) |
TW (1) | TWI752068B (zh) |
WO (1) | WO2018024094A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258646B (zh) * | 2018-11-30 | 2023-06-13 | 上海寒武纪信息科技有限公司 | 指令拆解方法、处理器、指令拆解装置及存储介质 |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4135242A (en) * | 1977-11-07 | 1979-01-16 | Ncr Corporation | Method and processor having bit-addressable scratch pad memory |
JPS5994173A (ja) * | 1982-11-19 | 1984-05-30 | Hitachi Ltd | ベクトル・インデツクス生成方式 |
NL9400607A (nl) * | 1994-04-15 | 1995-11-01 | Arcobel Graphics Bv | Dataverwerkingscircuit, vermenigvuldigingseenheid met pijplijn, ALU en schuifregistereenheid ten gebruike bij een dataverwerkingscircuit. |
US6088783A (en) * | 1996-02-16 | 2000-07-11 | Morton; Steven G | DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word |
JP3525209B2 (ja) * | 1996-04-05 | 2004-05-10 | 株式会社 沖マイクロデザイン | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 |
WO2000017788A1 (en) * | 1998-09-22 | 2000-03-30 | Vectorlog | Devices and techniques for logical processing |
JP3779540B2 (ja) * | 2000-11-08 | 2006-05-31 | 株式会社ルネサステクノロジ | 複数レジスタ指定が可能なsimd演算方式 |
AU2002338616A1 (en) * | 2001-02-06 | 2002-10-28 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US6901422B1 (en) * | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
US6922716B2 (en) * | 2001-07-13 | 2005-07-26 | Motorola, Inc. | Method and apparatus for vector processing |
CN1142484C (zh) * | 2001-11-28 | 2004-03-17 | 中国人民解放军国防科学技术大学 | 微处理器向量处理方法 |
JP3886870B2 (ja) * | 2002-09-06 | 2007-02-28 | 株式会社ルネサステクノロジ | データ処理装置 |
FI118654B (fi) * | 2002-11-06 | 2008-01-31 | Nokia Corp | Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite |
US7146486B1 (en) * | 2003-01-29 | 2006-12-05 | S3 Graphics Co., Ltd. | SIMD processor with scalar arithmetic logic units |
CN100545804C (zh) * | 2003-08-18 | 2009-09-30 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微控制器及其指令集的实现方法 |
CN1277182C (zh) * | 2003-09-04 | 2006-09-27 | 台达电子工业股份有限公司 | 具有辅助处理单元的可编程逻辑控制器 |
JP4349265B2 (ja) * | 2004-11-22 | 2009-10-21 | ソニー株式会社 | プロセッサ |
US7594102B2 (en) * | 2004-12-15 | 2009-09-22 | Stmicroelectronics, Inc. | Method and apparatus for vector execution on a scalar machine |
US20070283129A1 (en) * | 2005-12-28 | 2007-12-06 | Stephan Jourdan | Vector length tracking mechanism |
KR100859185B1 (ko) * | 2006-05-18 | 2008-09-18 | 학교법인 영광학원 | 유한체 GF(2m)상의 곱셈기 |
CN100470571C (zh) * | 2006-08-23 | 2009-03-18 | 北京同方微电子有限公司 | 一种用于密码学运算的微处理器内核装置 |
US8667250B2 (en) * | 2007-12-26 | 2014-03-04 | Intel Corporation | Methods, apparatus, and instructions for converting vector data |
JP5481793B2 (ja) * | 2008-03-21 | 2014-04-23 | 富士通株式会社 | 演算処理装置および同装置の制御方法 |
US20100115234A1 (en) * | 2008-10-31 | 2010-05-06 | Cray Inc. | Configurable vector length computer processor |
CN101399553B (zh) * | 2008-11-12 | 2012-03-14 | 清华大学 | 一种可在线编程的准循环ldpc码编码器装置 |
CN101826142B (zh) * | 2010-04-19 | 2011-11-09 | 中国人民解放军信息工程大学 | 一种可重构椭圆曲线密码处理器 |
US8645669B2 (en) * | 2010-05-05 | 2014-02-04 | International Business Machines Corporation | Cracking destructively overlapping operands in variable length instructions |
CN101986265B (zh) * | 2010-10-29 | 2013-09-25 | 浙江大学 | 一种基于Atom处理器的指令并行分发方法 |
CN102799800B (zh) * | 2011-05-23 | 2015-03-04 | 中国科学院计算技术研究所 | 一种安全加密协处理器及无线传感器网络节点芯片 |
CN102253919A (zh) * | 2011-05-25 | 2011-11-23 | 中国石油集团川庆钻探工程有限公司 | 基于gpu和cpu协同运算的并行数值模拟方法和*** |
CN102262525B (zh) * | 2011-08-29 | 2014-11-19 | 孙瑞玮 | 基于矢量运算的矢量浮点运算装置及方法 |
US8572131B2 (en) * | 2011-12-08 | 2013-10-29 | Oracle International Corporation | Techniques for more efficient usage of memory-to-CPU bandwidth |
CN102495719B (zh) * | 2011-12-15 | 2014-09-24 | 中国科学院自动化研究所 | 一种向量浮点运算装置及方法 |
CN102750133B (zh) * | 2012-06-20 | 2014-07-30 | 中国电子科技集团公司第五十八研究所 | 支持simd的32位三发射的数字信号处理器 |
CN103699360B (zh) * | 2012-09-27 | 2016-09-21 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
CN103778069B (zh) * | 2012-10-18 | 2017-09-08 | 深圳市中兴微电子技术有限公司 | 高速缓冲存储器的高速缓存块长度调整方法及装置 |
US9557993B2 (en) * | 2012-10-23 | 2017-01-31 | Analog Devices Global | Processor architecture and method for simplifying programming single instruction, multiple data within a register |
CN107577614B (zh) * | 2013-06-29 | 2020-10-16 | 华为技术有限公司 | 数据写入方法及内存*** |
CN104375993B (zh) * | 2013-08-12 | 2018-02-02 | 阿里巴巴集团控股有限公司 | 一种数据处理的方法及装置 |
CN103440227B (zh) * | 2013-08-30 | 2016-06-22 | 广州天宁信息技术有限公司 | 一种支持并行运行算法的数据处理方法及装置 |
US10331583B2 (en) * | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
CN104636397B (zh) * | 2013-11-15 | 2018-04-20 | 阿里巴巴集团控股有限公司 | 用于分布式计算的资源分配方法、计算加速方法以及装置 |
US10768930B2 (en) * | 2014-02-12 | 2020-09-08 | MIPS Tech, LLC | Processor supporting arithmetic instructions with branch on overflow and methods |
US10452971B2 (en) * | 2015-06-29 | 2019-10-22 | Microsoft Technology Licensing, Llc | Deep neural network partitioning on servers |
WO2017031630A1 (zh) * | 2015-08-21 | 2017-03-02 | 中国科学院自动化研究所 | 基于参数量化的深度卷积神经网络的加速与压缩方法 |
US10482372B2 (en) * | 2015-12-23 | 2019-11-19 | Intel Corporation | Interconnection scheme for reconfigurable neuromorphic hardware |
CN107636640B (zh) * | 2016-01-30 | 2021-11-23 | 慧与发展有限责任合伙企业 | 点积引擎、忆阻器点积引擎以及用于计算点积的方法 |
-
2016
- 2016-08-05 CN CN202011180419.1A patent/CN112214244A/zh active Pending
- 2016-08-05 CN CN201610640115.6A patent/CN107688466B/zh active Active
- 2016-08-05 CN CN202010616922.0A patent/CN111857822B/zh active Active
-
2017
- 2017-07-17 KR KR1020187034254A patent/KR102467544B1/ko active IP Right Grant
- 2017-07-17 WO PCT/CN2017/093161 patent/WO2018024094A1/zh unknown
- 2017-07-17 EP EP17836276.0A patent/EP3495947B1/en active Active
- 2017-08-04 TW TW106126469A patent/TWI752068B/zh active
-
2019
- 2019-02-05 US US16/268,479 patent/US20190235871A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN107688466A (zh) | 2018-02-13 |
CN112214244A (zh) | 2021-01-12 |
EP3495947A4 (en) | 2020-05-20 |
CN107688466B (zh) | 2020-11-03 |
EP3495947A1 (en) | 2019-06-12 |
US20190235871A1 (en) | 2019-08-01 |
TWI752068B (zh) | 2022-01-11 |
KR20190032282A (ko) | 2019-03-27 |
WO2018024094A1 (zh) | 2018-02-08 |
CN111857822A (zh) | 2020-10-30 |
EP3495947B1 (en) | 2022-03-30 |
KR102467544B1 (ko) | 2022-11-16 |
CN111857822B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
WO2017185396A1 (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
WO2017185384A1 (zh) | 一种用于执行向量循环移位运算的装置和方法 | |
CN111651205B (zh) | 一种用于执行向量内积运算的装置和方法 | |
WO2017185392A1 (zh) | 一种用于执行向量四则运算的装置和方法 | |
WO2017185395A1 (zh) | 一种用于执行向量比较运算的装置和方法 | |
CN111651206B (zh) | 一种用于执行向量外积运算的装置和方法 | |
WO2017185385A1 (zh) | 一种用于执行向量合并运算的装置和方法 | |
WO2017185404A1 (zh) | 一种用于执行向量逻辑运算的装置及方法 | |
WO2017185390A1 (zh) | 一种用于执行向量超越函数运算的装置和方法 | |
WO2017185419A1 (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
WO2017185388A1 (zh) | 一种用于生成服从一定分布的随机向量的装置和方法 | |
TWI752068B (zh) | 一種運算裝置及其操作方法 | |
CN115437603B (zh) | 用于生成随机数的方法及其相关产品 |