TWI840550B - 多通道資料包裝器及多通道資料解包裝器 - Google Patents
多通道資料包裝器及多通道資料解包裝器 Download PDFInfo
- Publication number
- TWI840550B TWI840550B TW109112724A TW109112724A TWI840550B TW I840550 B TWI840550 B TW I840550B TW 109112724 A TW109112724 A TW 109112724A TW 109112724 A TW109112724 A TW 109112724A TW I840550 B TWI840550 B TW I840550B
- Authority
- TW
- Taiwan
- Prior art keywords
- row
- multiplexer
- data
- multiplexers
- bit
- Prior art date
Links
- 238000007906 compression Methods 0.000 description 76
- 230000006835 compression Effects 0.000 description 76
- 235000019580 granularity Nutrition 0.000 description 46
- 238000001994 activation Methods 0.000 description 41
- 230000004913 activation Effects 0.000 description 40
- 238000000034 method Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 34
- 238000012856 packing Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 238000013527 convolutional neural network Methods 0.000 description 12
- 230000006837 decompression Effects 0.000 description 12
- 238000004590 computer program Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000013144 data compression Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000017105 transposition Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 241001442055 Vipera berus Species 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 102100022769 POC1 centriolar protein homolog B Human genes 0.000 description 2
- 101710125069 POC1 centriolar protein homolog B Proteins 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 1
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- 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/30018—Bit or string 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/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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6023—Parallelization
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/02—Channels characterised by the type of signal
- H04L5/023—Multiplexing of multicarrier modulation signals
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Neurology (AREA)
- Computer Security & Cryptography (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一種多通道資料包裝器包括多個二輸入多工器以及控制
器。所述多個二輸入多工器被佈置成2N列及N行,其中N是大於1的整數。第一行中的多工器的每一輸入接收2N個通道的位元串流中的相應位元串流。每一相應位元串流包括基於所述位元串流中的資料的位元串流長度。最末行中的多工器輸出2N個通道的包裝位元串流,所述2N個通道的包裝位元串流各自具有相同的位元串流長度。控制器控制所述多個多工器,使得最末行中的多工器輸出2N個通道的位元串流,所述2N個通道的位元串流各自具有所述相同的位元串流長度。
Description
本文中所揭露的標的是有關於多通道資料系統。更具體而言,本文中所揭露的標的是有關於能夠平行地對多通道位元串流進行壓縮及解壓縮的系統。
神經推理加速器硬體(Neural inference accelerator hardware)可以平行方式(例如,16個並行通路)儲存及擷取例如自激活函數輸出的權重及特徵映射等資料。所儲存及擷取的資料可具有諸多零,所述零可被且應被壓縮以降低動態隨機存取記憶體(dynamic random access memory,DRAM)及靜態隨機存取記憶體(static random access memory,SRAM)中的讀取及寫入功率以及儲存大小。已知的壓縮及解壓縮資料演算法(例如,霍夫曼(Huffman)、字典參照式(dictionary-based)、ZIP、遊程長度編碼(run-length encoding)、哥倫布賴斯(Golomb Rice)等)通常是串列處理,且一次處置僅一個資料位元串流。
示例性實施例提供一種多通道資料包裝器,所述多通道
資料包裝器可包括多個二輸入多工器以及控制器。所述多個二輸入多工器可被佈置成2N列及N行,其中N是大於1的整數,其中所述多個二輸入多工器中位於所述N行中的第一行中的每一多工器的每一輸入可接收2N個通道的位元串流中的相應位元串流,其中所述相應位元串流可包括基於所述相應位元串流中的資料的位元串流長度,且其中所述多個二輸入多工器中位於所述N行中的最末行中的多工器輸出2N個通道的包裝位元串流,所述2N個通道的包裝位元串流可各自具有相同的位元串流長度。所述控制器可控制所述多個二輸入多工器,使得所述多個二輸入多工器中位於所述N行中的所述最末行中的所述多工器輸出所述2N個通道的包裝位元串流,所述2N個通道的包裝位元串流各自具有所述相同的位元串流長度。在一個實施例中,N=3,且所述多個二輸入多工器可被佈置成8列及3行,所述多個二輸入多工器中位於所述N行中的所述第一行中的多工器的輸出可在所述2N列中的相同列中耦合至所述多個二輸入多工器中位於所述N行中的第二行中的多工器的輸入,且所述多個二輸入多工器中位於所述N行中的所述第二行中的所述多工器的輸出可在所述2N列中的所述相同列中耦合至所述多個二輸入多工器中位於所述N行中的第三行中的多工器的輸入,所述多個二輸入多工器中位於所述N行中的一個行中的一個多工器可與所述多個二輸入多工器中位於所述N行中的相同行中的另一多工器分組於一起,以形成所述多個二輸入多工器中位於所述N行中的所述一個行中的多對多工器中的一者,所述
多個二輸入多工器中位於所述N行中的所述一個行中的所述多對多工器中的每一對多工器可對應於所述多個二輸入多工器中位於所述N行中的另一行中的一對多工器,所述多個二輸入多工器中位於所述N行中的所述第一行中的一對多工器中的第一多工器及第二多工器的輸出可進一步耦合至所述多個二輸入多工器中位於所述N行中的所述第二行中的對應的一對多工器中的第一多工器及第二多工器的相應輸入,且所述多個二輸入多工器中位於所述N行中的所述第二行中的所述對應的一對多工器中的所述第一多工器及所述第二多工器的輸出可進一步耦合至所述多個二輸入多工器中位於所述N行中的所述第三行中的對應的一對多工器中的第一多工器及第二多工器的相應輸入。在另一實施例中,由所述多個二輸入多工器中位於所述N行中的所述第一行中的所述多工器接收的每一位元串流可包括零位元遮罩部分及非零資料部分。位元串流的所述零位元遮罩部分可指示所述位元串流中零值的位置。
示例性實施例提供一種多通道資料包裝器,所述多通道資料包裝器可包括多個二輸入多工器,所述多個二輸入多工器可被佈置成8列及3行。所述多個二輸入多工器中位於所述3行中的第一行中的多工器的輸出可在所述8列中的相同列中耦合至所述多個二輸入多工器中位於所述3行中的第二行中的多工器的輸入,且所述多個二輸入多工器中位於所述3行中的所述第二行中的所述多工器的輸出可在所述8列中的所述相同列中耦合至所述
多個二輸入多工器中位於所述3行中的第三行中的多工器的輸入。所述多個二輸入多工器中位於所述3行中的一個行中的一個多工器可與所述多個二輸入多工器中位於所述3行中的所述一個行中的另一多工器分組於一起,以形成所述多個二輸入多工器中位於所述3行中的所述一個行中的多對多工器中的一者。所述多個二輸入多工器中位於所述3行中的所述一個行中的所述多對多工器中的每一對多工器可對應於所述多個二輸入多工器中位於所述3行中的另一行中的一對多工器。所述多個二輸入多工器中位於所述3行中的所述第一行中的一對多工器中的第一多工器及第二多工器的輸出可進一步耦合至所述多個二輸入多工器中位於所述3行中的所述第二行中的對應的一對多工器中的第一多工器及第二多工器的相應輸入,且所述多個二輸入多工器中位於所述3行中的所述第二行中的所述對應的一對多工器中的所述第一多工器及所述第二多工器的輸出可進一步耦合至所述多個二輸入多工器中位於所述3行中的所述第三行中的對應的一對多工器中的第一多工器及第二多工器的相應輸入。在一個實施例中,所述3行中的所述第一行中的每一多工器的每一輸入可接收8個通道的位元串流中的對應位元串流,所述對應位元串流可包括基於所述對應位元串流中的資料的位元串流長度,且所述多個二輸入多工器中位於所述3行中的所述第三行中的多工器可輸出8個通道的包裝位元串流,其中所述8個通道的包裝位元串流中的每一包裝位元串流具有相同的位元串流長度。在另一實施例中,由所述多個二輸
入多工器中位於所述3行中的所述第一行中的所述多工器接收的每一位元串流可包括零位元遮罩部分及非零資料部分,其中位元串流的所述零位元遮罩部分指示所述位元串流中零值的位置。
示例性實施例提供一種多通道資料解包裝器,所述多通道資料解包裝器可包括多個二輸入多工器以及控制器。所述多個二輸入多工器可被佈置成2N列及N行,其中N是大於1的整數,其中所述多個二輸入多工器中位於所述N行中的第一行中的每一多工器的每一輸入可接收2N個通道的包裝位元串流中的相應包裝位元串流,其中所述相應包裝位元串流可包括相同的位元串流長度,且其中所述多個二輸入多工器中位於所述N行中的最末行中的多工器可輸出2N個通道的解包裝位元串流,所述2N個通道的解包裝位元串流各自具有與所述位元串流的解包裝資料對應的位元串流長度。所述控制器可控制所述多個二輸入多工器,使得所述N行中的所述最末行中的所述多工器輸出所述2N個通道的解包裝位元串流,其中所述2N個通道的解包裝位元串流中的每一解包裝位元串流具有與所述每一位元串流的解包裝資料對應的所述位元串流長度。在一個實施例中,由所述多個二輸入多工器中位於所述N行中的所述第一行中的多工器接收的每一包裝位元串流可包括零位元遮罩部分及非零資料部分。
100:多通道資料包裝器
101、101'、1110、1201、1401:蝶形混洗器
102、2110:控制器
103、1111:資料壓縮器
104:多工器模組/多工器模組組件/多工器
104'、631:多工器
10400-10472、110:多工器
111:移位暫存器
201、202、203、204、205、206、207、208、402、403、404、209、1005、1301、1302、1303、1304、1305、1306、1307、1308、1309:參考標號
301:示例性區塊/集合/權重/權重集合
302:多通道位元串流/經零位元遮罩(ZBM)壓縮的多通道位元串流/壓縮資料/包裝串流
303:部分/零位元遮罩部分
304:壓縮資料部分
305、306、307:多通道位元串流
400:解包裝器/資料解包裝器
401:位元解包裝器
501:資料區塊
502:串流長度部分
503:壓縮資料部分
600:電路/壓縮電路/零折疊資料壓縮器及包裝器電路/零折疊資料壓縮器及包裝電路
601:零值移除器/電路/零值移除器電路
602、1702:非零值包裝器
603、1703:記憶體寫入仲裁器
604、1704:零位元遮罩產生器
605、1705:遮罩包裝器
606:列指針產生器
610:資料串流/輸入/位元串流
611、1211:輸出
612、DATA_WR_PACKED[127:0]:包裝資料
613:位元遮罩/位元遮罩資料/零位元遮罩資料
614、804、804a、804b、1004、DATA_WR_ROWPTR[127:0]:列指針資料
620、2130:記憶體
621:區/空間/記憶體區/非零值資料區/記憶體區域/壓縮資料儲存區域
622:區/空間/中繼資料區/記憶體區域
630、630':零折疊移位器
700:電路
801:未壓縮資料/未壓縮畫素資料
802:壓縮資料/壓縮畫素資料
803:零位元遮罩資料
803a、803b:遮罩資料
900:電路/壓縮電路/解包裝器及解壓縮器電路/解包裝及解壓縮器電路
901:模組/記憶體讀取仲裁器
902:模組/非零值解包裝器
903:模組/零值插入器
904:模組/遮罩解包裝器
1001:陣列/畫素陣列/張量/資料張量
1002:壓縮資料
1003、DATA_WR_MASK[127:0]:位元遮罩資料
1006:視窗
1010:方法
1011、1012、1013、1014、1015、1016、1017、1018、1019、1020、1021、1022、1023、1024:步驟
1100:電路/處理系統/稀疏資料處理系統
1101:記憶體/SRAM
1102、1801:記憶體讀取仲裁器
1103:快取/雙埠快取
1104:快取控制器
1105:零擴展移位器/第一零擴展移位器
1106:零擴展移位器/第二零擴展移位器
1107:FIFO佇列/雙埠FIFO佇列
1108:預看稀疏性控制器
1109:乘法器單元陣列(MUA)
1112:記憶體控制器
1120:乘法器電路/單元/乘法器單元
1121:乘法器
1122:第一輸入多工器
1123:第二輸入多工器
1124:輸出多工器
1150:多工器模組組件/多工器模組
1151:多工器/第一多工器
1152:多工器/第二多工器
1160:偽隨機產生器
1200:電路/壓縮器電路/通道平行壓縮器電路/零折疊資料壓縮器及包裝電路
1202:FIFO佇列
1210:位元組串流資料/位元組串流/輸入
1212:非零值資料/經壓縮及包裝的資料
1220:電路/零值移除器
1400:電路/解壓縮器電路/解包裝器及解壓縮器電路
1420:電路/零值插入器
1500:曲線圖
1501:壓縮粒度/半位元組壓縮粒度
1502:壓縮粒度/一位元組壓縮粒度
1503:壓縮粒度/兩位元組壓縮粒度
1504、1505、1506:層範圍
1700、1900:電路/壓縮電路
1701:零值移除器
1800、2000:電路/解壓縮電路
1802:非零值解包裝器
1803:零值插入器
1903:匯流排傳輸FIFO及仲裁器
2001:匯流排接收FIFO佇列
2100:電子裝置
2120:輸入/輸出裝置
2140:介面/無線介面
2150:匯流排
ADDR_WR、ADDR_WR_MASK[ ]、ADDR_WR_PACKED[ ]、ADDR_WR_ROWPTR[ ]、data_valid、mask_valid、pop_mask、pop_packed、pop_rowptr、QUEUE_LEN_MASK[2:0]、QUEUE_LEN_PACKED[2:0]、QUEUE_LEN_ROWPTR[2:0]:訊號
a、b:輸入
a0、a1、b0、b1、P0...1,0、P0...3,1、P4...7,1、P2...3,0、P4...5,0、P4...7,1、P6...7,0、P0...7,2:集合
BUS_DATA[127:0]:經壓縮的包裝資料/零位元遮罩資料
DATA_WR[127:0]:資料
I[0]-I[15]、O[0]-O[15]、z[0]-z[15]:向量
Lane0[3:0]-Lane15[3:0]、Lane0[7:4]-Lane15[7:4]、Lane0[7:0]-Lane15[7:0]:通路
NIB0[3:0]-NIB31[3:0]:輸入
Pix0-Pix3:畫素
S0...1,0、S0...3,1、S0...7,2、S2...3,0、S4...5,0、S4...7,1、S6...7,0、x0..7,0..3、s0,0-s0,15、s1,0-s1,15、s2,0-s2,15、s3,0-s3,15、x0,0-x7,0、x0,1-x7,1、x0,2-x7,2、x0,3-x7,3、:控制訊號
s、s[0][0]-s[0][15]、s[1][0]-s[1][15]、s[2][0]-s[2][15]、s[3][0]-s[3][15]:選擇訊號
STRO[3:0]-STR31[3:0]、STRO[7:0]-STR15[7:0]:資料串流/位元組串流
x:控制輸入
圖1A繪示根據本文中所揭露標的的多通道資料包裝器的一
個示例性實施例的方塊圖。
圖1B繪示根據本文中所揭露標的的蝶形混洗器(butterfly shuffler)的示例性實施例的方塊圖。
圖1C繪示根據本文中所揭露標的的蝶形混洗器的一個示例性實施例的方塊圖。
圖1D繪示根據本文中所揭露標的的蝶形混洗器的另一示例性實施例的方塊圖。
圖2A至圖2C概念性地繪示根據本文中所揭露標的,為不同位元串流長度的八個示例性位元串流遞迴地包裝成各自具有相等的位元串流長度的八個位元串流。
圖3A繪示根據本文中所揭露標的的涉及原始8位元資料(例如8×8權重集合)的示例性區塊的資料包裝的另一例子。
圖3B繪示根據本文中所揭露標的的來自蝶形混洗器的第一行的多通道輸出。
圖3C繪示根據本文中所揭露標的的來自蝶形混洗器的第二行的多通道輸出。
圖3D繪示根據本文中所揭露標的的來自蝶形混洗器的第三行的多通道輸出。
圖4示出根據本文中所揭露標的的示例性資料解包裝器的方塊圖。
圖5繪示根據本文中所揭露標的的包括串流長度部分及壓縮資料部分的資料區塊。
圖6A繪示根據本文中所揭露標的的提供對包裝資料的隨機存取的示例性實施例零折疊資料壓縮器及包裝器電路(zero-collapsing data compressor and packer circuit)的方塊圖。
圖6B繪示利用由圖6A所示零折疊資料壓縮器及包裝器電路提供的對包裝資料的隨機存取的示例性資料壓縮。
圖6C繪示根據本文中所揭露標的的使用零折疊移位器的零值移除器的示例性實施例的方塊圖。
圖6D繪示根據本文中所揭露標的的使用零折疊移位器的零值移除器的示例性替代實施例的方塊圖。
圖6E繪示根據本文中所揭露標的的其中所有通道接收非零值的零折疊移位器的示例性實施例。
圖6F繪示根據本文中所揭露標的的其中一個通道(通道12)接收零值輸入的零折疊移位器的示例性實施例。
圖6G至圖6J分別繪示根據本文中所揭露標的的針對其中通道漸進地接收更多零值的其他更高級情形的零折疊移位器的示例性實施例。
圖7示出根據本文中所揭露標的的可用於自位元串流移除零值的示例性電路的方塊圖。
圖8A及圖8B分別繪示未壓縮資料以及根據本文中所揭露標的的利用由圖6A所示零折疊資料壓縮器及包裝器電路提供的對包裝資料的隨機存取的資料壓縮的另一例子。
圖9繪示根據本文中所揭露標的的解包裝器及解壓縮器電路
的示例性實施例的方塊圖。
圖10A至圖10B繪示根據本文中所揭露標的的由圖6A所示零折疊資料壓縮器及包裝器電路以及圖9所示解包裝及解壓縮器電路提供的包裝資料隨機存取能力的示例性細節。
圖10C是根據本文中所揭露標的的使用由圖6A所示零折疊資料壓縮器及包裝器電路提供的包裝資料隨機存取能力來存取圖10A及10B中所繪示壓縮資料的方法的示例性實施例的流程圖。
圖10D繪示根據本文中所揭露標的,圖10C所示方法自畫素陣列讀出視窗(window)。
圖11A繪示根據本文中所揭露標的的利用蝶形混洗器來對稀疏資料進行均質化的稀疏資料處理系統的實施例的示例性方塊圖。
圖11B繪示根據本文中所揭露標的的蝶形資料路徑多工器的示例性實施例。
圖11C繪示根據本文中所揭露標的的16通道蝶形資料路徑的示例性實施例。
圖11D繪示根據本文中所揭露標的的具有控制資料路徑排列的偽隨機產生器的16通道蝶形資料路徑的示例性實施例。
圖12A繪示根據本文中所揭露標的的提供對包裝資料的隨機存取的示例性實施例通道平行壓縮器電路的方塊圖。
圖12B繪示利用由圖12A所示通道平行壓縮器電路提供的對包裝資料的隨機存取的示例性通道平行資料壓縮。
圖13A至圖13C概念性地繪示根據本文中所揭露標的,為不同位元組串流長度的八個示例性位元組串流遞迴地包裝成各自具有相等的位元組串流長度的八個位元組串流。
圖14繪示根據本文中所揭露標的的解包裝器及解壓縮器電路的示例性實施例的方塊圖。
圖15示出通常可用的示例性卷積神經網路(convolutional neural network,CNN)的三種不同壓縮粒度的壓縮比(compression ratio)的曲線圖。
圖16A繪示根據本文中所揭露標的的用於8位元資料單元(即位元組)的逐通道置換技術(channel-wise transposition technique)。
圖16B繪示根據本文中所揭露標的的用於16位元資料的置換技術。
圖17繪示根據本文中所揭露標的的可提供半位元組壓縮粒度(nibble compression granularity)的壓縮電路的示例性實施例的方塊圖。
圖18繪示根據本文中所揭露標的的可與圖17所示壓縮電路一起使用的解壓縮電路的示例性實施例的方塊圖。
圖19繪示根據本文中所揭露標的的可提供半位元組壓縮粒度且可用於經由匯流排傳輸壓縮資料的壓縮電路的示例性實施例的方塊圖。
圖20繪示根據本文中所揭露標的的可提供半位元組壓縮粒
度且可用於經由匯流排接收壓縮資料的解壓縮電路的示例性實施例的方塊圖。
圖21繪示包括使用根據本文中所揭露標的的蝶形混洗器的資料壓縮器及/或資料解壓縮器的電子裝置。
在以下詳細說明中,闡述眾多具體細節來提供對本揭露的透徹理解。然而,熟習此項技術者應理解,無需該些具體細節亦可實踐所揭露的各個態樣。在其他情形中,未詳細闡述眾所習知的方法、程序、組件及電路,以免使本文中所揭露的標的模糊不清。
本說明書通篇中所提及的「一個實施例(one embodiment)」或「實施例(an embodiment)」意指結合所述實施例所闡述的特定特徵、結構或特性可包含於本文中所揭露的至少一個實施例中。因此,在本說明書通篇中各處出現的片語「在一個實施例中(in one embodiment)」或「在實施例中(in an embodiment)」或者「根據一個實施例(according to one embodiment)」(或具有相似含義的其他片語)可能未必均指同一實施例。此外,在一或多個實施例中,特定特徵、結構或特性可採用任何適合的方式進行組合。就此而言,本文中所使用的詞「示例性(exemplary)」意指「用作例子、實例或例示」。本文被闡述為「示例性」的任何實施例不應被視為與其他實施例相較必定是較佳的或有利的。此外,根據本文中的論述的上下文而定,單數
用語可包括對應的複數形式且複數用語可包括對應的單數形式。相似地,帶連字符的用語(例如,「二維(two-dimensional)」、「預定(pre-determined)」、「畫素專有(pixel-specific)」等)偶爾可與對應的未帶連字符的版本(例如,「二維(two dimensional)」、「預定(predetermined)」、「畫素專有(pixel specific)」等)可互換地使用,且大寫詞條(例如,「計數器時脈(Counter Clock)」、「列選擇(Row Select)」、「PIXOUT」等)可與對應的非大寫版本(例如,「計數器時脈(counter clock)」、「列選擇(row select)」、「pixout」等)可互換地使用。此種偶爾的可互換使用不應被視為彼此不一致。
更應注意,本文中所示及所論述的各個圖(包括組件圖)僅是出於例示目的,而並非按比例繪製。相似地,示出各種波形及時序圖僅是用於例示目的。舉例而言,為清晰起見,可相對於其他元件誇大元件中的一些元件的尺寸。此外,在適當情況下,在各個圖中重複使用參考編號來指示對應的元件及/或類似元件。
本文中所使用的術語僅是用於闡述一些示例性實施例的目的,而非旨在限制所主張的標的。除非上下文另外清楚地指明,否則本文中所使用的單數形式「一(a、an)」及「所述(the)」旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。本文
中所使用的用語「第一(first)」、「第二(second)」等被用作位於所述用語後面的名詞的標籤,且除非明確定義,否則所述用語並不暗示任何類型的次序(例如,空間、時間、邏輯等)。此外,在二或更多個圖中可使用相同的參考編號來指代具有相同或相似的功能性的部件、組件、區塊、電路、單元或模組。然而,此種用法僅是為了使例示簡潔且易於論述起見;所述用法並不暗示此類組件或單元的構造細節或架構細節在所有實施例中是相同的或者此類通常提及的部件/模組是實施本文中所揭露示例性實施例中的一些的唯一方式。
應理解,當將元件或層稱為位於另一元件或層上、「連接至」或「耦合至」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接或耦合至所述另一元件或層,或者可存在中間元件或層。對比之下,當將元件稱為「直接位於」另一元件或層上、「直接連接至」或「直接耦合至」另一元件或層時,不存在中間元件或層。在通篇中,相同的編號指代相同的元件。本文中所使用的用語「及/或」包括相關聯列舉項中的一或多者的任意及所有組合。
除非另外定義,否則本文中所使用的所有用語(包括技術及科學用語)的含義均與本標的所屬技術中具有通常知識者所通常理解的含義相同。更應理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非在本文中明確定義,否則不應將其解釋為具有
理想化或過於正式的意義。
本文中所使用的用語「模組」是指被配置成結合模組提供本文中所述功能性的軟體、韌體及/或硬體的任何組合。軟體可被實施為軟體封裝、碼及/或指令集或指令,且在本文中所述任何實施方案中所使用的用語「硬體」可例如以單獨形式或以任何組合的形式包括硬佈線電路系統、可程式化電路系統、狀態機電路系統及/或儲存由可程式化電路系統執行的指令的韌體。模組可共同地或各別地實施為形成較大系統(例如但不限於積體電路(integrated circuit,IC)、系統晶片(system on-chip,SoC)等等)一部分的電路系統。本文中所揭露的各種組件及/或功能區塊可被實施為可包括軟體、韌體及/或硬體的模組,所述軟體、韌體及/或硬體結合所述各種組件及/或功能區塊來提供本文中所述的功能性。
本文中所揭露的標的提供一種壓縮及解壓縮系統及技術,所述壓縮及解壓縮系統及技術可平行地處理諸多通道(例如,8或16),且亦可為硬體友好的(即,具有小的矽面積及低的操作功率)。另外,本文中所揭露的標的提供一種可縮放多工器電路或模組(在本文中稱為「蝶形混洗器」),所述可縮放多工器電路或模組出於包括以平行方式對資料進行包裝及解包裝的目的而高效地對資料進行排列。在一種操作模式中,蝶形混洗器對多個通道的位元串流進行包裝,使得所有通道具有相等的位元長度或位元數目。在另一種操作模式中,蝶形混洗器對相等長度位元串流或
通道進行解包裝,以重新形成原始位元串流。對於在八(8)個通道的位元串流上進行操作的系統,蝶形混洗器包括可靈活地將位元串流中的位元排列或重新佈置成另一位元串流的24個2至1多工器(2-to-1 multiplexer)。對於在16個通道的位元串流上進行操作的系統,蝶形混洗器包括可靈活地將位元串流中的位元排列或重新佈置成另一位元串流的64個2對1多工器。本文中所揭露的蝶形混洗器不是縱橫多工器配置(full cross-bar multiplexer configuration)。縱橫配置具有大的面積O(N2),其中N是資料通路的數目。相比之下,蝶形混洗器的面積是O(N*log(N)),其中N是資料通路的數目。
本文中所揭露的標的的一個實施例提供一種「零折疊」資料壓縮器及資料包裝器,所述「零折疊」資料壓縮器及資料包裝器可使用蝶形混洗器且提供對包裝資料的隨機存取,使得可隨機地存取包裝資料的任何部分,其中「零折疊」指代自未壓縮資料移除零以獲得壓縮資料的能力。另一實施例提供一種解包裝器及解壓縮器,所述解包裝器及解壓縮器可用於使用由零折疊資料壓縮器及資料包裝器提供的隨機存取能力來對包裝資料進行解包裝及解壓縮。
本文中所揭露的標的的又一實施例可提供一種蝶形混洗器,所述蝶形混洗器可對稀疏資料進行均質化,以使資料的稀疏性更加均勻。蝶形混洗器可用於排列(即,重新佈置)稀疏資料的資料值,且藉此對稀疏資料進行均質化,使得非零值叢(clump)
更均勻地展佈於稀疏資料中。
本文中所揭露的標的的又一實施例可提供一種通道平行壓縮器及資料包裝器,所述通道平行壓縮器及資料包裝器可使用蝶形混洗器且提供對包裝資料的隨機存取。通道平行解包裝器及解壓縮器可用於使用由通道平行壓縮器及資料包裝器提供的隨機存取能力來對包裝資料進行解包裝及解壓縮。
不同的壓縮粒度亦可與本文中所揭露的各種資料壓縮器一起使用。使用蝶形混洗器的資料壓縮器的一個實施例可為壓縮資料提供半位元組壓縮粒度。使用蝶形混洗器的資料壓縮器的另一實施例可為壓縮資料提供位元組壓縮粒度。使用蝶形混洗器的資料壓縮器的又一實施例可為壓縮資料提供多位元組壓縮粒度。
圖1A繪示根據本文中所揭露標的的多通道資料包裝器100的一個示例性實施例的方塊圖。多通道資料包裝器100可包括蝶形混洗器101、控制器102及資料壓縮器103。資料壓縮器103可接收8個位元組串流,並將每一位元組串流壓縮成一個位元串流。每一輸入位元組串流與所有其他輸入位元組串流平行且獨立地被壓縮。壓縮演算法可為將位元組串流壓縮成位元串流的任何已知演算法。蝶形混洗器101可接收通常具有不同的位元串流長度的所得的8個通道的位元串流,且在控制器102的控制下,可排列8個通道的位元串流,使得每一輸出串流具有相同的位元串流長度,且可被視為單一位元組串流。在一個實施例中,資料壓
縮器103可接收所述8個通道的位元串流,且自每一位元串流移除零值,以為每一位元串流通道提供壓縮位元串流。資料壓縮器103亦可為每一位元串流通道產生零位元遮罩(zero-bit-mask,ZBM)(圖1A中未示出)。蝶形混洗器101、控制器102及/或資料壓縮器103可實施為電路及/或模組。蝶形混洗器101可包括多工器模組組件104或「多工器」,所述多工器模組組件104或「多工器」可實施為具有使用移位暫存器111進行緩衝的輸出的多工器110,如圖1B中所繪示。在一些實施例中,移位暫存器111可為可選的。
圖1C繪示根據本文中所揭露標的的蝶形混洗器101的一個示例性實施例的方塊圖。蝶形混洗器101可包括佈置成8列(R=0至R=7)及3行(C=0至C=2)的陣列的24個2對18位元多工器104。蝶形混洗器101可接收通常具有不同的位元串流長度的8個通道的位元串流。作為另一選擇,多工器104可佈置成3列及8行的陣列,其中每一相應行接收所述8個通道的位元串流中的一者。
參照圖1C中所繪示的佈置,行C=0中位於一列中的多工器的輸出可連接至行C=1中位於相同列中的對應多工器的輸入。相似地,行1中位於一列中的多工器的輸出可連接至行C=2中位於相同列中的對應多工器的輸入。舉例而言,多工器10400的輸出連接至多工器10401的輸入,且多工器10401的輸出連接至多工器10402的輸入。
另外,行C=0中的多工器10400及多工器10410的輸出可進一步分別耦合至行C=1中的多工器10421及多工器10431的輸入。行0中的多工器10420及多工器10430的輸出可進一步分別耦合至行C=1中的多工器10401及多工器10411的輸入。行0中的多工器10440及多工器10450的輸出可進一步分別耦合至行C=1中的多工器10461及多工器10471的輸入。行0中的多工器10460及多工器10470的輸出可進一步分別耦合至行C=1中的多工器10441及多工器10451的輸入。
行1中的多工器10401及多工器10411的輸出可進一步分別耦合至行C=2中的多工器10442及多工器10452的輸入。行C=1中的多工器10421及多工器10431的輸出可進一步分別耦合至行2中的多工器10462及多工器10472的輸入。行C=1中的多工器10441及多工器10451的輸出可進一步分別耦合至行C=2中的多工器10402及多工器10412的輸入。行C=1中的多工器10461及多工器10471的輸出可進一步分別耦合至行C=2中的多工器10422及多工器10432的輸入。
行C=0中的每一多工器的一個輸入可接收位元串流。舉例而言,多工器10400可接收位元串流0,且多工器10410可接收位元串流1。多工器10400與多工器10410是成對的,因此位元串流0亦可被輸入至多工器10410,且位元串流1可被輸入至多工器10400。相似地,位元串流2及位元串流3可被輸入至多工器10420與多工器10430二者。位元串流4及位元串流5可被輸入至多工器
10440與多工器10450二者。位元串流6及位元串流7可被輸入至多工器10460與多工器10470二者。亦可使用為較大位元寬度(即位元組)的位元串流。
一般而言,具有2K個輸入的蝶形混洗器包括2K列及K行的2至1多工器,其中K是大於1的整數,且可如以下般進行構造。每一行C中的多工器可被分組成邏輯連續的集合,其中每一集合具有大小2C+1,且其中C=0,1...K。更具體而言,行C=0(即,圖1C中最左側的行)中的多工器可以集合進行分組,其中行C=0中的每一集合具有大小2C+1=2。因此,多工器10400及10410形成集合P0...1,0。多工器10420及10430形成集合P2...3,0。多工器10440及10450形成集合P4...5,0。多工器10460及10470形成集合P6...7,0。集合P0...1,0接收分別連接至多工器10400及10410的位元串流0及1。相似地,集合P2...3,0接收位元串流2及3。集合P4...5,0接收位元串流4及5;等等。
行C=0中的每一集合可自控制器102(圖1A)接收控制訊號,例如S0...1,0。若控制訊號被解除有效狀態(de-asserted),則連接至控制訊號的多工器集合選擇輸入位元串流,使得每一輸入位元串流通過所述集合中的多工器以保持於相同列中。若控制訊號被設置為有效狀態(asserted),則連接至控制訊號的多工器集合選擇輸入位元串流,使得輸入位元串流被輸出至多工器集合中的另一列,從而使列號被調換。
舉例而言,在圖1C中,考慮集合P0...1,0,將控制訊號
S0...1,0解除有效狀態會使輸入位元串流0(即,列0行0中的位元串流)在相同列0中輸出至行1,且輸入位元串流1(即,列1行0中的位元串流)在相同列1中輸出至行1。將控制訊號S0...1,0設置為有效狀態會使輸入位元串流0及輸入位元串流1在其輸出至行1時調換列。即,輸入至列0行0的位元串流被輸出至列1行1,且輸入至列1行0的位元串流被輸出至列0行1。其他多工器集合以相同的方式響應其相應的控制訊號。
行C=1(即,圖1C中自左側數第二行)中的多工器可以集合進行分組,其中每一集合具有大小2C+1=4。舉例而言,多工器10401、10411、10421及10431形成集合P0...3,1且多工器10441、10451、10461及10471形成集合P4...7,1。行C=1中的每一多工器集合自前一行C=0中的兩個多工器集合接收輸入。一般而言,行C+1中的每一多工器集合自前一行C中的兩個多工器集合接收輸入。
行1中的集合P0...3,1可接收控制訊號S0...3,1。若控制訊號S0...3,1被解除有效狀態,則集合P0...3,1中的每一多工器用於將來自前一行中的相應集合的輸入傳遞至下一行C=2,使得資料保持於相同列中。舉例而言,參照集合P0...3,1,多工器10401、10411、10421及10431的輸出分別等於多工器10400、10410、10420及10430的輸出。相似地,對於集合P4...7,1,若S4...7,1被解除有效狀態,則多工器10441、10451、10461及10471的輸出分別等於多工器10440、10450、10460及10470的輸出。
若控制訊號S0...3,1被設置為有效狀態,則集合P0...3,1中的多工器用於調換相關聯的輸入集合。具體而言,參照集合P0...3,1,多工器10401、10411、10421及10431的輸出分別等於多工器10420、10430、10400及10410的輸出。相似地,對於集合P4...7,1,若S4...7,1被設置為有效狀態,則多工器10441、10451、10461及10471的輸出分別等於多工器10460、10470、10440及10450的輸出。
一般而言,若控制訊號S在行C=1中被解除有效狀態,則由控制訊號S控制的相關聯的多工器集合用於傳遞與所述多工器集合相關聯的所述兩個輸入集合的輸出,而不調換所述兩個相關聯的輸入集合,即所述兩個相關聯的輸入集合的輸出保持於相同列中。然而,若控制訊號S在行C=1中被設置為有效狀態,則由控制訊號S控制的相關聯的多工器集合用於傳遞與所述多工器集合相關聯的彼此調換的所述兩個輸入集合的輸出。
行C=2...(K-1)中的多工器連接可按照與以上針於行1所述的規則相同的規則來構造。對於圖1C中所繪示的包括僅三行多工器的特定實施例,行C=2的多工器被分組成具有大小2C+1=23=8的一個邏輯集合P0...7,2。控制訊號Si...j,k可由邏輯電路使用隨後的功能/操作說明基於位元串流長度來產生。
圖1D繪示根據本文中所揭露標的的蝶形混洗器101'的另一示例性實施例的方塊圖。蝶形混洗器101'可包括佈置成16列(R=0至R=15)及4行(C=0至C=3)的陣列的64個2對18位元多工器104'。蝶形混洗器101'的第一行C=0的多工器104'
可接收一般具有不同的位元串流長度的16個通道的位元串流。蝶形混洗器101'可被控制成使得行C=3的多工器104'輸出16個通道的位元串流,所述16個通道的位元串流各自具有相同的位元串流長度。除圖1D中的蝶形混洗器101'接收16個輸入且提供16個輸出之外,蝶形混洗器101'以與圖1C中所繪示的蝶形混洗器101基本上相同的方式進行操作。圖1D中的控制訊號Si...j,k已被省略。
重新參照圖1A,資料壓縮器103接收未壓縮(即原始)資料區塊,並使用例如任何已知的壓縮演算法將每一位元組串流各別地壓縮成相應的位元通路,所述壓縮演算法接受一位元串流作為輸入並產生另一位元串流作為輸出。由於每一位元通路被各別地壓縮(即獨立於其他位元通路),因此輸出位元串流的長度可自在各個位元通路之間有所變化。舉例而言,資料壓縮器103可將8通道×32位元組長的原始資料區塊壓縮成為各種長度的八個位元串流,並輸出經壓縮的所述八個位元串流,如圖2A中的201處所繪示。由於位元串流平行地自資料壓縮器103定時輸出時,因此具有有效壓縮位元的每一位元串流在201處被繪示為矩形,其中位元串流4是所有八個通路中最長的,且位元串流3是最短的。對應地,當蝶形混洗器101開始平行地接收所述八個壓縮串流時,首先(即在第一時脈週期期間),僅通路4中的位元包含有效資料。除通路4中的位元為有效的之外,在隨後的時脈週期期間,通路0中的位元亦將在某一點處變為有效。最終,所有八個位元通路中的所有位元變為有效,此對應於201處的串流的尾部
(即最左側)部分。
圖2A至圖2C概念性地繪示根據本文中所揭露標的,為不同位元串流長度的八個示例性位元串流遞迴地包裝成各自具有相等的位元串流長度的八個位元串流。在201處繪示的所述八個示例性位元串流0-7一般具有不同的位元串流長度,且將所述八個示例性位元串流0-7輸入至例如圖1C中的蝶形混洗器101的多工器10400至10470。將位元串流0-7配對或分組成與輸入多工器的配對方式對應的四個對。
在圖2A中的202處,藉由蝶形混洗器101透過控制成對中的多工器而將每一對中為較長位元串流長度的前導部分(leading portion)或頭部(head)重新定位或重新定向成所述對中的較短位元串流的部分,使得位元串流對具有相等的位元串流長度。舉例而言,藉由行C=0的多工器將位元串流0的部分重新定向以成為位元串流1的部分。相似地,將位元串流2的部分重新定向以成為位元串流3的部分。將位元串流4的部分重新定向至位元串流5,且將位元串流7的部分重新定向成位元串流6的部分。在位元串流對的位元串流長度差是奇數個位元的情況下,可向所述兩個位元串流中的較短者添加虛設位元(dummy bit)或填充位元(filler bit)。在203處繪示在對內具有相等位元串流長度的位元串流對,且自行C=0的多工器輸出所述位元串流對。在203處指示的灰色區表示位元串流的已被重新定向以成為另一位元串流的部分的部分。可藉由蝶形混洗器101的行C=0產生203
處的所得串流。可使用多工器模組104的時脈賦能輸入來防止移位暫存器以無效位元進行計時,同時保持經緩衝的資料直至是時候開始將經緩衝的資料移出為止。此外,在蝶形包裝開始之前,應知曉每一壓縮資料區塊的位元串流長度。
在圖2B中的204處,將在對內具有相等位元串流長度的位元串流對輸入至蝶形混洗器101的第二行(行C=1)中的多工器10401至10471。進一步將位元串流對配對或分組成與蝶形混洗器101的第二行中的多工器的配對方式對應的兩個成對的對。
在205處,藉由控制第二行的多工器而將位元串流對中的位元串流中具有較長位元串流長度的每一者的部分重新定位或重新定向以分別成為所述位元串流對中具有較短位元串流長度的部分。舉例而言,藉由第二行的多工器將第一成對的對(成對的對1)中的位元串流中的每一者的部分重新定向以分別成為所述第一成對的對中位元串流中的較短位元串流的部分。相似地,藉由第二行的多工器將第二成對的對(成對的對2)中的位元串流中的每一者的部分重新定向以分別成為所述第二成對的對中位元串流中的較短位元串流的部分。在206處繪示在成對的對內具有相等位元串流長度的成對的位元串流對。可藉由蝶形混洗器101的行C=1產生206處的所得串流。
在圖2C中的207處,將具有相等位元串流長度的成對的位元串流對輸入至蝶形混洗器101的第三行(行C=2)中的多工器10402至10472。進一步將成對的對的位元串流配對或分組成
與蝶形混洗器101的第三行中的多工器的配對方式對應的成對的四個一組(quad)的位元串流。
在208處,藉由控制蝶形混洗器101的第三行的多工器,將成對的對(四個一組)中的位元串流中具有較長位元串流長度的每一者的部分重新定位或重新定向以分別成為位元串流的成對的對(四個一組)中的具有較短位元串流長度的部分。舉例而言,藉由第三行的多工器將第一個四個一組的位元串流中的每一者的部分重新定向以分別成為第二個四個一組的位元串流中的較短位元串流的部分。在209處繪示現在具有相等位元串流長度的位元串流。可藉由蝶形混洗器101的行C=2產生209處的所得串流。
圖3A繪示根據本文中所揭露標的的涉及原始8位元資料(例如8×8權重集合)的示例性區塊301的資料包裝的另一例子。權重集合301可包括零值及非零值。資料壓縮器103(圖1A)可壓縮權重集合301以移除零值,並提供例如經零位元遮罩(Zero Bit Mask,ZBM)壓縮的多通道位元串流302,其中通道對應於由8×8權重集合的列。在另一實施例中,示例性區塊301可為自激活函數輸出的特徵映射值集合。
多通道位元串流302的每一通道可包括前八個位元中的零位元遮罩部分303以及壓縮資料部分304。在一個實施例中,零位元遮罩部分303中的非零位元表示集合301的非零值。對應地,壓縮資料部分304包含權重301,除已省略等於零的權重值之外,權重301的序列次序不變。每一通道的位元串流長度將一般與其
他經ZBM壓縮的通道不同。若壓縮資料302是儲存於記憶體中,例如儲存於揮發性記憶體或非揮發性記憶體中,則不同通道的不相等位元串流長度可能浪費記憶體空間。可使用蝶形混洗器101來包裝資料以使不同通道的位元串流長度相等。資料壓縮器103(圖1A)的邏輯可使用零位元遮罩來計算每一位元串流的長度,且使用控制器102來控制經由蝶形混洗器101的路徑。
在圖3B中,將多通道位元串流302輸入至蝶形混洗器101。自蝶形混洗器101的第一行多工器輸出多通道位元串流305。
即,與結合圖2A所述者相似,在控制器102(圖1A)的控制下,將每一對通道中為較長位元串流長度的部分重新定位或重新定向成所述對中為較短位元串流的部分,使得每一位元串流對具有相等位元串流長度。
在圖3C中,與結合圖2B所述者相似,將多通道位元串流305輸入至蝶形混洗器101的第二行中的多工器,且輸出多通道位元串流306。在圖3D中,與結合圖2C所述者相似,將多通道位元串流306輸入至蝶形混洗器101的第三行中的多工器,且輸出多通道位元串流307。已使用蝶形混洗器101將多通道位元串流307的通道中的所有者包裝成相等的長度,且可將由多通道位元串流307表示的資料區塊高效地儲存於記憶體(無論是揮發性的還是非揮發性的)中,而不浪費空間。注意,作為此例子的一般概念,將在由蝶形混洗器101處理之後剩餘的通道的前八個位元中的零位元遮罩部分303以及壓縮資料部分304一起儲存。
不再使用具有由移位暫存器111緩衝的輸出的多工器104,而是可單獨使用多工器110(而不使用移位暫存器111)來減小電路面積及功率。更具體而言,圖2A至圖2B及圖3A至圖3B中所繪示的每一步驟可藉由將位元串流緩衝至臨時記憶體中、應用使用蝶形混洗器101的排列以及將經排列的串流保存回臨時記憶體中來達成。對應地,可能需要將此種處理進行三遍來包裝資料,其中每一遍次對應於圖2A至圖2B以及圖3A至圖3B中的一個步驟。
對包裝資料進行解包裝以相反的方式進行操作。可將零位元遮罩定位成首先位於每一包裝通道中,因此可使用零位元遮罩來對零位元遮罩之後的經包裝的非零資料進行解包裝。更具體而言,對包裝串流進行解包裝涉及首先確定原始串流的長度(其在包裝區塊開始時可容易自零位元遮罩部分303獲得),然後當對(或成對的對,或者成對的成對的對)內的串流長度進行比較以確定哪一串流的哪一頭部欲截斷並附加至哪一串流時,再現包裝期間實行的計算。此時,確定或計算串流長度之間的差,除以二以確定欲截斷並附加的頭部的長度,並可選地填補(padding)以避免在除法之後具有小數部分。所述計算提供指向每一截斷並附加的頭部可在儲存器中位於何處的在包裝串流中的偏移量(offset)。在解包裝期間,可控制蝶形混洗器101在通道之間調換回截斷的頭部,以恢復原始串流。注意,多工器可能需要暫存資料,且可能需要暫停較短通道中的位元串流流(bit stream flow),
同時將頭部自較短通道重新附加至所述頭部的原始串流。
圖4繪示根據本文中所揭露標的的示例性資料解包裝器400的方塊圖。資料解包裝器400可包括位元解包裝器401、蝶形混洗器101及控制器(圖4中未示出;參見例如圖1A中的控制器102)。
位元解包裝器401接收經包裝的非零資料區塊作為多通道訊號。在一個實施例中,圖4中所繪示的解包裝器400可被配置用於8個通道的包裝資料。位元解包裝器401的每一通道可包括獨立於位元解包裝器401的其他通道進行操作的兩個8位元暫存器及八個8:11位元多工器。包裝資料可為n位元整數。舉例而言,對於n=5,在每一通道中,包裝資料可為int5或uint5類型。
然而,電腦系統中的解包裝資料通常具有為一個位元組(即int8或uint8)的粒度。在此種情形中,5位元資料可在解包裝之前變換(填補)成8位元資料。作為例子,包裝資料可為402處所繪示的5位元無符號資料。在此例子中,位元解包裝器401將三個零位元添加至每一包裝資料位元組的最高有效位元(most significant bit,MSB),以在403處形成8位元位元組的無符號資料。
位元解包裝器401的輸出(其包括用於每一通道的8位元零位元遮罩)被輸入至遞迴通道解包裝器,所述遞迴通道解包裝器可為圖1C中的蝶形混洗器101。在此特定例子中,蝶形多工器的每一通道具有為一個位元組而不是如早先所論述的一個位元
的寬度。控制器(即,控制器102)使用每一通道的零位元遮罩來控制經由蝶形混洗器101的資料路徑,以在404處形成經解包裝的多通道8位元資料(即,權重、特徵映射值等)。
在替代實施例中,不再使用具有固定位元長度且其中零被跳過的經編碼資料,而是可將本文中所揭露的標的擴展至具有提供可變位元寬度的資料長度的編碼技術。舉例而言,若使用哥倫布賴斯編碼或使用稀疏指數哥倫布賴斯編碼(Sparse Exponential Golomb Rice coding)對資料進行預壓縮,則可以指示串流的長度及當以經解包裝的形式儲存時的全串流長度的資料部分來代替零位元遮罩部分303(圖3A)。圖5繪示根據本文中所揭露標的的包括串流長度部分502及壓縮資料部分503的資料區塊501。對壓縮串流進行包裝可如本文中所揭露般實行。串流長度位元寬度應被選擇成適應盡可能長的可變長度序列。
在替代實施例中,可使用本文中所揭露的蝶形混洗器對輸出特徵映射及/或來自激活函數的輸出進行混洗(同時儲存亦經預混洗的權重),以在可自激活函數輸出的通路上展開(即,平衡)零值,從而如本文中他處所述更佳地利用乘法器。
圖6A繪示根據本文中所揭露標的的提供對包裝資料的隨機存取的示例性實施例零折疊資料壓縮器及包裝器電路600的方塊圖。圖6B繪示利用由零折疊資料壓縮器及包裝器電路600提供的對包裝資料的隨機存取的示例性資料壓縮。
參照圖6A及圖6B二者,電路600可包括零值移除器
601、非零值包裝器602、記憶體寫入仲裁器603、零位元遮罩產生器604、遮罩包裝器605及列指針產生器606。形成電路600的各種組件(包括作為整體的電路600)可被實施為一或多個電路及/或一或多個模組。
零值移除器601可接收例如資料串流610的16個通路(即,Lane0[7:0]-Lane15[7:0])或通道。資料串流610的每一通路可包括未壓縮的非零值資料及零值資料的8位元(一位元組)值。資料串流610可被細分成組,每一組具有為16位元組的長度,使得包裝電路600對16位元組×16通路大小的資料區塊進行操作。
示例性非零值資料在圖6A及圖6B中由交叉影線或陰影指示,且零值資料由「0」指示。在一個實施例中,8位元值可對應於畫素資料。零值移除器601可被配置成自每一資料串流610移除零值資料。零值移除器601輸出16個資料串流STR0[7:0]-STR15[7:0],其中相應的資料串流被移除零位元組值。
圖6C繪示根據本文中所揭露標的使用零折疊移位器630的零值移除器601(圖6A)的示例性實施例的方塊圖。零折疊移位器630的一個目的是自輸入向量移除零。舉例而言,若輸入向量由具有值{0x01,0x02,0x00,0x04,0x05,0x06,0x07}的位元組形成,則零折疊移位器630將此輸入向量變換為具有位元組值{0x01,0x02,0x04,0x05,0x06,0x07,0x00}的輸出向量。注意,第三位置(自左側計數)中的零值被取出(「折疊」),位置4、5、6及7中的非零值全部向左側移位一個位置,且零值位元組自第三
位置移動至向量在位置8處的末端。
在另一例子中,具有值{0x01,0x02,0x00,0x04,0x05,0x00,0x00,0x08}的輸入向量由零折疊移位器630變換為具有值{0x01,0x02,0x04,0x05,0x08,0x00,0x00,0x00}的輸出向量。此處,輸入向量中的位置3、6及7處的零被「折疊」並移動至輸出向量中的位置6、7及8。其餘的非零元素根據需要向左移位,以在保持非零元素的次序的條件下用「折疊」零來填充留下的空隙。
在又一例子中,若輸入值均不為零,則輸出將與輸入相同。
如前所述,零折疊移位器630的一個目的是使得能夠在記憶體620(圖6A)中僅儲存非零值,同時使用零位元遮罩來追蹤零值的原始位置,從而可以無損方式對壓縮資料(即,已被移除零值的資料)進行解壓縮。
考慮被輸入至零折疊移位器630的具有m個值的向量I[m-1..0][n-1..0]。所有m個值的位元寬度n是相同的,且被選擇成與欲處理的資料的位元寬度匹配。舉例而言,在一個示例性實施例中,所述值可被設置為m=16及n=8,從而使得I[15..0][7..0]。
令零折疊移位器630的輸出為具有m個值的向量O,O[m-1..0][n-1..0]。向量I及向量O二者具有相同的長度m,且向量I及向量O的所有元素具有相同的位元寬度n。
具有m=2N個輸入(通道)的零折疊移位器630可被實施為多級互連網路,其可包括伴隨有控制邏輯的多工器631(僅指示其中的一個多工器631)的矩陣。更具體而言,在一個實施例中,
具有m=2N個輸入(通道)的零折疊移位器630可包括被組織成m行(通道)及N列的2:1多工器631的矩陣,如圖6C中所繪示。
為使闡釋清晰起見,m可為N的冪,其中N是自然數,例如N=4。具有不等於2的冪的輸入數目m的零折疊移位器630可使用具有k個輸入的零折疊移位器630'來等效地表示,其中k=2N>m且其中未使用的I[k..m-1]輸入被設置為零且未使用的輸出O[k..m-1]保持斷開連接,如圖6D中所繪示。
控制邏輯可包括零位元遮罩產生器604(例如,如圖6A中所繪示)以及用於多工器矩陣中的每一多工器的選擇訊號的產生器(未示出)。零位元遮罩產生器604可檢查每一輸入通道以判斷通道的值是否等於零。零位元遮罩產生器604輸出一位元訊號的向量Z[0..m-1],其中每一高態動作訊號(active-high signal)指示對應輸入通道的值等於零。隨後,選擇訊號產生器邏輯將Z[0..m-1]轉換成用於多工器矩陣中的所有多工器631的選擇訊號s的控制值,如下文所更詳細地闡述。
選擇訊號s可定義為矩陣s[row][channel]的形狀,其中row=0..N-1,channel=0..m-1。參照圖6C,s[0][0]位於左上角,且s[3][15]位於右下角。對來自Z[0..m-1]的選擇訊號s[row][channel]的確定如下進行。
最初,將所有多工器選擇訊號設置為零,即,s[0..N-1][0..m-1]:=0。亦將零值通道的計數nz_ch初始化為等於零,即nz_ch:=0。接下來,將多工器選擇訊號s[row][col]配置成
恰當地將值自非零輸入通道路由至輸出通道。為此,自通道ch:=0開始對通道進行迭代,同時保持零值通道的計數nz_ch。作為記述的方式,應注意,針對矩陣位置設置多工器選擇訊號s[row][col]:=x等效於以Verilog記法編寫的s[row][ch][0..n-1]:=n{x},即被複製至為n的寬度的位元x的值。因此,為簡潔起見,本文中將在合適的情形中使用記法s[row][col]:=x來取代s[row][ch][0..n-1]:=n{x}。
若I[ch]!=0,則遞增nz_ch計數,將nz_ch的當前值轉換為二進制記法nz_ch_bin[0..N-1],將當前多工器選擇通道初始化為ch_current:=ch,且自row=0開始對nz_ch_bin[0..N-1]進行迭代。
迭代循環首先設置s[row][ch_current]:=nz_ch_bin[row],然後檢查是否為nz_ch_bin[row]==1。參照圖6C或圖6D,若確定條件為真,則藉由設置ch_current:=ch_current-2row,在多工器選擇矩陣s中在側向上(在水平方向上)沿循自對應於s[row][ch_current]的多工器的輸出開始的配線至左側。若條件為假,即若s[row][ch]==0,則將nz_ch計數遞增,且將多工器選擇訊號配置成輸出O[m-nz_ch]:=0,如下文所詳細闡述。
舉例而言,考慮ch_z:=m-nz_ch。在圖6D所示示例性實施例中,可藉由以下方式達成設置O[ch_z]:=0:將ch_z解碼成z[0..m-1][0..n-1],使得z[0..ch_z-1][0..n-1]:=0,z[ch_z..m-1][0..n-1]:=1,且應用逐位元邏輯「及(and)」O[0..m-1][0..n-1]:=s[N-1][0..m-1][0..n-1]
AND!z_and[0..m-1][0..n-1]。
在圖6C中所繪示的示例性實施例中,不再添加AND閘以零化(zero out)零折疊移位器630的輸出,而是可使用現有的多工器矩陣來零化所關心的輸出。具體而言,若(nz_ch==m),則不做任何事情(即,所有通道輸入為零),否則如下對列N-1...0進行迭代。若ch_z≧m,則計算完成,否則設置選擇訊號s[row][ch_z]:=1(其中row是當前列號),且檢查多工器s[row][ch_z]的零值是否經由側向連接被接收。零值檢查包括設置lateral_distance:=2row(即,此列中以通道表達的側向連接的長度),隨後設置ch_z:=m-lateral_distance,即,可經由側向連接將零傳遞至選擇訊號s[row][ch_z]的通道的數目。若ch≧ch_z,則計算結束;否則,若(ch_z+lateral_distance<m),則設置ch_z:=ch_z+lateral_distance,即,若存在側向連接(自多工器s[row][ch_z+lateral_distance]至s[row][ch_z]),則沿循該連接以在下一迭代中配置s[row][ch_z+lateral_distance]的多工器選擇訊號。
圖6E繪示其中零折疊移位器630的所有通道接收非零值的情況。在此種情形中,所有多工器選擇訊號s[row][ch]:=0,且零折疊移位器630的輸出O[0..m-1][0..n-1]與輸入I[0..m-1][0..n-1]相同。在圖6E至圖6J中,具有相對較重的線權重的訊號路徑指示特定輸入值經由零折疊移位器630到達輸出的路徑。
圖6F繪示其中通道12接收零值輸入而其餘通道接收非零值輸入(即,I[12][0..n-1]==0)的情況。遵循上述多工器選擇
演算法,將s[0..N-1][0..m-1]:=0初始化。接下來,將多工器631配置成正確地輸出非零值。具體而言,自通道ch:=0開始對通道進行迭代,同時保持零值通道的計數nz_ch。當到達接收零(I[12]==0)的通道ch==12時,將nz_ch自0遞增至nz_ch:=1,將nz_ch轉換為二進制記法nz_ch_bin[0..N-1]:=1000b,將當前多工器選擇通道ch_current:=12初始化,且自row=0開始對nz_ch_bin[0..N-1]==1000b進行迭代。
迭代循環包括設置s[row][ch_current]:=nz_ch_bin[row]。
由於nz_ch_bin[0]==1b,因此I[0][12]:=1b。由於nz_ch_bin[0]==1b,因此在側向上沿循自多工器s[row][ch_current]開始的多工器選擇矩陣s(即,由選擇訊號s[row][ch_current]控制的多工器的輸出配線,如圖6F中所示)至左側而到達s[row][ch_current-2row](即,自選擇訊號s[0][12]至選擇訊號s[0][12-20]==s[0][11]),從而設置ch_current:=ch_current-2row==12-20==11。在位元向量nz_ch_bin[1..N-1]中對其餘列1..3進行迭代以產生所有零,即nz_ch_bin[1..N-1==000b。因此,在此步驟中不再改變多工器選擇訊號。
在通道ch==12處,亦將多工器選擇訊號配置成自通道ch_z:=(m-nz_ch)==16-1==15輸出零。在圖6D所示實施例中,o[m-nz_ch][0..n-1]:=0,即,z[16-1][0..7]:=0。在圖6C所示實施例中,如下對列3..0進行迭代。對於row:=4,判斷是否為ch≧m(其為假(否則計算將停止)),設置[row][ch_z]:=1(即,
s[3][15]:=1),且實行檢查以判斷多工器s[3][15]是否未經由側向連接接收到零輸入。列3中的側向連接長度等於lateral_distance:=23==8個通道。若對於多工器訊號s[3][15]存在側向連接,則多工器訊號s[3][15]將自多工器訊號s[row-1][ch_z+lateral_distance]接收該零值,即,s[3-1][15+8]==s[2][23]。由於行23超過總行數n==16,因此不存在多工器訊號s[2][23]。因此,對其餘的列2、1及0繼續進行迭代。列2、1及0的側向連接長度等於2row,即4、2及1。在所有該些情形中,由於(ch_z+4)>n,(ch_z+2)>n且(ch_z+l)>n,即(15+4)>15,(15+2)>15且(15+1)>15,因此不存在側向連接。因此,計算完成。
圖6G至圖6J繪示當通道漸進地接收更多零值時的其他更高級情形。
圖7繪示根據本文中所揭露標的的可用於自位元串流移除零值的示例性電路700的方塊圖。電路700可包括佈置成16列(R=0至R=15)及4行(C=0至C=3)的陣列的64個2對18位元多工器631。如圖7中所示,多工器631的輸入被配置成接收n=8個位元。在行C=0中,列R=15中的多工器631的所述兩個輸入中的一者被連接成接收8位元0值作為輸入。在行C=1中,列R=14及R=15中的多工器的所述兩個輸入中的一者被連接成接收8位元0值作為輸入。在行C=2中,列R=12至R=15中的多工器的所述兩個輸入中的一者被連接成接收8位元0值作為輸入。最後,在行C=3中,列R=8至R=15中的多工器的所
述兩個輸入中的一者被連接成接收8位元0值作為輸入。形成電路700的各種組件(包括作為整體的電路700)可被實施為一或多個電路及/或一或多個模組。控制多工器631的選擇訊號已被省略。
第一行C=0中的多工器631接收所述16個資料串流中的相應資料串流的8位元值。第一行的多工器被控制成使得非零值向列R=0移位,以代替在R=0方向上與所述非零值相鄰的列中等於0的值。即,檢測輸入至相應多工器631的資料串流的值,且若值被檢測為零,則相鄰列中的非零值可進行移位以代替被檢測為零的值。
重新參照圖6A,在611處指示針對示例性輸入610的零值移除器601的示例性輸出。一般而言,在已移除零值之後,相應的資料串流可具有不同的長度。在612處繪示非零值包裝器602接收不同長度的資料串流STR0[7:0]-STR15[7:0],並產生其中不同長度的資料串流已經級聯的包裝資料DATA_WR_PACKED[127:0]。
在一個實施例中,非零值包裝器602可包括蝶形混洗器,例如圖1C中的蝶形混洗器101。經級聯的資料可保持於非零值包裝器602內的先入先出(first-in,first out,FIFO)佇列中,以供最終儲存於記憶體620中。
零位元遮罩產生器604可耦合至位元串流的所述16個通路Lane0[7:0]-Lane15[7:0]中的每一者。零位元遮罩產生器604為每一通路產生位元遮罩,所述位元遮罩指示例如對應位元串流的
16位元組組中的零值的位置。即,零位元遮罩產生器604為每一通路Lane0[7:0]-Lane15[7:0]中的每一16位元組組產生位元遮罩613。位元遮罩中的一個位元對應於16通路×16位元組資料區塊中的一個位元組,從而使位元遮罩本身的長度為256位元。在替代實施例中,由零位元遮罩產生器604產生的位元遮罩可被產生以用於位元串流的與16位元組值組大小不同的值組。由零位元遮罩產生器604產生的遮罩中的資訊可用於控制零值移除器601及非零值包裝器602的操作。遮罩包裝器605接收位元遮罩資料613且可將位元遮罩資料級聯以供儲存。為與記憶體620的輸入寬度匹配,遮罩包裝器605亦將經級聯的位元遮罩資料分割成16位元組字元以供儲存為DATA_WR_MASK[127:0]。位元遮罩資料613可保持於遮罩包裝器605內的FIFO佇列中。
列指針產生器606亦可接收零位元遮罩資料且可追蹤非零值計數以產生列指針資料,如614處所指示的DATA_WR_POWPTR[127:0]。列指針是指向張量內的每一平面列中的第一畫素的在記憶體620中的偏移量。舉例而言,層激活的張量可具有64×128×32位元組的大小,其中64×128對應於層平面大小(即高度及寬度),且32對應於該層中的深度通道數目。
在此例子中,可存在64個列指針,每列一個,其中每一列指針包含在儲存於記憶體620中的壓縮資料中的偏移量。列指針資料614可保持於列指針產生器606內的FIFO佇列中。儲存於記憶體620中的壓縮資料可使用位元遮罩資料613及列指針資料614來隨機
存取。
記憶體寫入仲裁器603接收DATA_WR_PACKED[127:0]、DATA_WR_MASK[127:0]及DATA_WR_ROWPTR[127:0],並對將相應資料寫入記憶體620進行仲裁。記憶體620可為揮發性記憶體及/或非揮發性記憶體,且可包括用於非零值資料(其大小可有所變化)的區或空間621以及用於零位元遮罩資料及列指針資料的中繼資料的區或空間622。記憶體寫入仲裁器603亦可自非零值包裝器602接收ADDR_WR_PACKED[ ]訊號及QUEUE_LEN_PACKED[2:0]訊號,自遮罩包裝器605接收ADDR_WR_MASK[ ]訊號及QUEUE_LEN_MASK[127:0]訊號,以及自列指針產生器606接收ADDR_WR_ROWPTR[ ]訊號及QUEUE_LEN_ROWPTR[2:0]。記憶體寫入仲裁器603基於QUEUE_LEN_PACKED[2:0]訊號、QUEUE_LEN_MASK[2:0]訊號及QUEUE_LEN_ROWPTR[2:0]訊號的值來確定什麼特定資料被寫入記憶體620以及該資料何時被寫入記憶體620。舉例而言,記憶體寫入仲裁器603可選擇與具有最大值的QUEUE_LEN訊號對應的資料,所述最大值例如指示相關聯的FIFO佇列包含最多的準備好儲存至記憶體620中的資料。為寫入操作而選擇寫入記憶體620的資料量可受到記憶體620的埠寬度所限制。在一個實施例中,寫入操作可包括16個位元組。在另一實施例中,寫入操作可包括8個位元組。資料作為DATA_WR[127:0]寫入記憶體620而到達由具有由寫入賦能(write enable,WE)訊號提供的時序的ADDR_WR
訊號所指示的位置。
記憶體寫入仲裁器603可使用ADDR_WR_PACKED[ ]訊號來確定記憶體620內用於非零值資料的區621中寫入包裝資料的位置。相似地,ADDR_WR_MASK[ ]訊號及ADDR_WR_ROWPTR[ ]訊號可用於確定記憶體620內的中繼資料區622中寫入零位元遮罩資料及列指針資料的位置。記憶體寫入仲裁器603可結合將該資料寫入記憶體620的仲裁器一起將提取訊號(即,pop_packed訊號、pop_mask訊號或pop_rowptr訊號)發送至FIFO佇列中的一者,使得可自FIFO佇列移除該資料。記憶體寫入仲裁器603亦可包括忙碌訊號輸出(busy signal output)以控制正經由通路Lane0[7:0]-Lane15[7:0]輸入的資料量。
圖8A及圖8B分別繪示未壓縮資料801以及根據本文中所揭露標的的利用由零折疊資料壓縮器及包裝電路600提供的對壓縮資料的隨機存取的資料壓縮的另一例子。在圖8A中,未壓縮資料801可表示8位元畫素資料,其中每一畫素包括16個位元組的資料,且一列畫素包括四個畫素。具有零值的畫素由「0」指示,且具有非零資料的畫素由列號、畫素號及通路號指示。零折疊資料壓縮器及包裝電路600的所述16個通路各自接收未壓縮畫素資料的一個位元組。舉例而言,通路0接收畫素0(Pix0)的未壓縮資料的位元組0。通路1接收Pix0的未壓縮資料的位元組1,等等。因此,圖8A中所繪示的未壓縮畫素資料可對應於圖6A及圖6B中的位元串流610。
圖8B繪示未壓縮資料801已由零折疊資料壓縮器及包裝電路600壓縮以形成壓縮資料802。壓縮畫素資料802可對應於包裝資料612。在803處指示與壓縮畫素資料802對應的零位元遮罩資料。對於每16個位元組的未壓縮畫素資料,零位元遮罩資料803包括兩個位元組的遮罩資料。舉例而言,遮罩資料803a對應於畫素Pix0的所述16個位元組的未壓縮資料。相似地,遮罩資料803b對應於畫素Pix1的所述16個位元組的未壓縮資料,等等。在804處指示對應於壓縮畫素資料802的列指針資料。對於每16個位元組的未壓縮畫素資料801,列指針資料804包括兩個位元組的列指針資料。舉例而言,列指針資料804a對應於畫素Pix0的所述16個位元組的未壓縮資料。列指針資料804b對應於畫素Pix1的所述16個位元組的未壓縮資料,等等。
圖9示出根據本文中所揭露標的的解包裝器及解壓縮器電路900的示例性實施例的方塊圖。電路900藉由使用列指針資料614及零位元遮罩資料613對記憶體區621中的非零值資料進行解包裝而大體上以與圖6A所示零折疊資料壓縮器及包裝電路600相反的方式進行操作。電路900可包括記憶體讀取仲裁器901、非零值解包裝器902、零值插入器903及遮罩解包裝器904。形成電路900的各種組件(包括作為整體的電路900)可被實施為一或多個電路及/或一或多個模組。
記憶體讀取仲裁器901自記憶體620讀取非零值資料、列指針資料及位元遮罩資料。非零值解包裝器902基於位元遮罩
資料對包裝資料進行解包裝。零值插入器903亦基於位元遮罩資料將零值插入解包裝資料中。若電路600的非零值包裝器602包括蝶形混洗器(例如蝶形混洗器101),則非零值解包裝器902亦可包括對應的蝶形混洗器以對資料進行解包裝。
圖10A至圖10B繪示根據本文中所揭露標的的由零折疊資料壓縮器及包裝電路600以及解包裝及解壓縮器電路900提供的壓縮資料隨機存取能力的示例性細節。在圖10A中,在1001處繪示35×35畫素陣列。為方便起見,僅指示畫素0-2、35-37及70-72。在1002處,將畫素陣列1001的壓縮畫素資料繪示為儲存於例如圖6A中的記憶體620的非零值資料區621中。畫素陣列1001的位元遮罩資料1003及列指針資料1004可儲存於例如記憶體620的中繼資料區622中。
畫素陣列1001的前三列的列指針資料在1005處擴展。每一列指針包括兩個位元組的資料,其中前十個位元可提供在非零值資料區621中畫素陣列1001中的列的第一畫素的列或胞元(cell)的位址。接下來的四個位元可提供在畫素陣列1001中的列的第一畫素的胞元中的偏移量。最末兩個位元可能未被使用。舉例而言,在圖10B中,陣列1001的列1處的畫素35的列指針資料的前十個位元指向非零值資料區621中畫素陣列1001的第六列或胞元。接下來的四個位元指向在畫素35的胞元中的偏移量。最末兩個位元未被使用。
圖10C是根據本文中所揭露標的的使用由零折疊資料壓
縮器及包裝電路600提供的包裝壓縮資料隨機存取能力來存取壓縮資料1002內的視窗1006(例如,在圖10D中)的方法1010的流程圖。方法1010開始於1011處。在1012處,相對於大小為H×W×D的畫素陣列1001對h×w×d視窗進行定位,其中h及w指代視窗平面高度及寬度,H及W指代畫素陣列平面高度及寬度,且視窗1006內的深度通道數目d與張量1001的深度通道數目相同,即d=D。在1013處,將平面索引c及r初始化,將視窗在資料張量1001內的位置指示為平面行及列索引。更具體而言,c及r指代視窗1006內左上畫素的位置。
在1014處,存取列r處的畫素的列指針資料。步驟1015檢查在由在1014處擷取的列指針所指定的開始列與視窗1006的開始行之間是否存在畫素。由於不需要前導畫素,因此應跳過前導畫素的擷取及解壓縮。當存在任何前導畫素時,步驟1017及1018更新列指針以認定前導畫素。更具體而言,在1017處,方法1010擷取列r行0...c-1中的畫素的位元遮罩。步驟1018對所擷取的位元遮罩中的零數目n進行計數,以獲得前導畫素在非零值資料區621中所佔用的位元組數目(包含非零值)。步驟1019將列指針r增加偏移量n以計算記憶體620開始位置,即記憶體620位址及在其中儲存列r及行c的壓縮資料的SRAM字元內的位元組偏移量。
在記憶體620位址floor((r*W+c)*D/b)+Abit_mask及記憶體620字元內的位元組偏移量mod((r*W+c)*D,b)處開始包
含與(r,c)處的畫素對應的位元遮罩,其中b是以位元組為單位的SRAM字元大小且Abit_mask是在記憶體620中儲存位元遮罩中繼資料的開始位址。
在不存在欲跳過的前導畫素的情形中,步驟1016將位元組數目n設置為跳至零,並前進至步驟1019。步驟1020自記憶體區域621擷取列r中的畫素c...c+w-1的壓縮畫素資料以及來自記憶體區域622的相關聯位元遮罩資料。步驟1021使用相關聯位元遮罩對所擷取的畫素資料進行解壓縮並將其輸出。步驟1022將列索引r遞增,且過程自步驟1014重複,直至已提取來自整個視窗1006的資料為止,且步驟1023打破循環以結束方法1010的執行。
在視窗1006內的深度通道數目d小於張量1001內的深度通道數目D(即,d<D)的情形中,可藉由跳過未使用的深度通道的輸出來修改方法1010。在必須使用不同於一的垂直及/或水平步幅(stride)來擷取視窗1006內的資料的情形中,可以與如上所述跳過前導畫素相似的方式來抑制對未使用的畫素的擷取及輸出。
圖10D繪示根據本文中所揭露標的,方法1010自35×35畫素陣列1001中擷取3×4資料視窗1006。對於此例子,視窗座標(row0,col0)為(0,3)。為方便起見,僅指示畫素陣列1001的畫素0-6、35-41及70-76。最初,方法1010擷取列0的列指針。所擷取的值指向畫素0的位置。隨後,方法1010藉由提取與畫素0、1、2及3相關聯的位元遮罩來跳過不需要的前導畫素0...3,藉由
對該些位元遮罩中的零位元進行計數來計算畫素0...3在壓縮資料儲存區域621中所佔用的位元組數目,並將指針增加所計算的位元組的數目(例如指向畫素4)。記憶體列指針可包括字元位址及在所述字元中的偏移量。存取位於記憶體620內偏移量Abyte處的位元組對應於存取在記憶體字元內偏移量mod(Abyte,s)處的記憶體位址floor(Abyte/s),其中s是以位元組為單位的SRAM字元寬度。
在針對畫素4計算壓縮資料在記憶體區域621中的位置(即,畫素4的位址及其在記憶體字元內的偏移量)之後,方法1010提取畫素4...6的壓縮資料,提取畫素4...6的位元遮罩資料,對兩者加以組合以對壓縮資料進行解壓縮,藉由重新插入零值位元組來使壓縮資料膨脹(inflate),並輸出解壓縮結果。此過程對於列1再重複一次,且對於列2再重複一次,從而完成自畫素陣列1001擷取視窗1006。
蝶形混洗器亦可用於對稀疏資料進行均質化。可能存在稀疏資料(例如與神經網路的特徵映射及權重相關聯的資料)可能包括叢聚於一起的非零值的情況。即,資料可為非均質稀疏資料。在此種情況中,可藉由例如將輸入特徵映射(input feature map,IFM)值或自激活函數輸出的值與權重值平行相乘來平行處理稀疏資料的系統的乘法器中的諸多乘法器可空閒(其中至少一個運算元等於0),而小的乘法器組可提供所述相乘中的大部分,從而導致瓶頸狀況(bottleneck condition)。本文中所使用的用語「激活
值(或資料)」意指自激活函數輸出的值。此外,本文中所使用的用語「輸入特徵映射值(或資料)」與「激活值(或資料)」可互換地使用。蝶形混洗器可用於混洗(排列)IFM值及/或權重值,以使稀疏資料更為均質,且因此使乘法器更均勻地得到利用。
圖11A繪示根據本文中所揭露標的的利用蝶形混洗器來對稀疏資料進行均質化的稀疏資料處理系統1100的實施例的示例性方塊圖。在一個實施例中,如在2019年6月19日提出申請、標題為「神經處理器(NEURAL PROCESSOR)」(’610申請案)、序列號為16/446,610的美國專利申請案中所更詳細地闡述,稀疏資料處理系統1100可將IFM值與權重值平行相乘以平行地產生輸出特徵映射(OFM)值,以便計算卷積以及向量與矩陣乘法(vector-by-matrix multiplication),所述美國專利申請案的全部內容併入本案供參考。處理系統1100可包括記憶體1101、記憶體讀取仲裁器1102、雙埠快取1103、快取控制器1104、第一零擴展移位器1105、第二零擴展移位器1106、雙埠FIFO佇列1107、預看稀疏性控制器1108、乘法器單元陣列(multiplier unit array,MUA)1109、蝶形混洗器1110、資料壓縮器1111及記憶體控制器1112。形成電路1100的各種組件(包括作為整體的電路1100)可被實施為一或多個電路及/或一或多個模組。
記憶體1101可儲存用於一或多個輸出特徵映射的IFM值。由於輸出特徵映射通常用作神經網路模型中下一層的輸入特徵映射,因此可將輸出特徵映射稱作輸入特徵映射。記憶體1101可為
揮發性記憶體及/或非揮發性記憶體。在一個實施例中,記憶體1101可對應於圖6A中所繪示的記憶體620,且IFM值可如本文中他處所述包括經包裝及壓縮的非零值、零位元遮罩資料及列指針資料。記憶體1101的輸出可被輸入至記憶體讀取仲裁器1102。記憶體讀取仲裁器1102可在概念上對應於圖9中所示的模組901。記憶體讀取仲裁器1102的輸出(包括IFM壓縮資料、位元遮罩及可選的列指針)可被輸入至快取1103。快取1103、零擴展移位器1105及1106以及FIFO佇列1107可全部放置於乘法器單元陣列1109附近。
快取控制器1104可控制IFM值的接收與IFM值向第一零擴展移位器1105及第二零擴展移位器1106的輸出二者。第一輸入特徵映射的IFM值的一個集合可被輸出至第一零擴展移位器1105,且第二輸入特徵映射的IFM值的另一集合可被輸出至第二零擴展移位器1106。零擴展移位器1105及1106可被配置成基於包括於IFM值內的零位元遮罩資料將零值添加回IFM值中。所得的擴展IFM資料可為稀疏資料。零擴展移位器1105及1106各自可在概念上對應於圖9中的模組902、903及904。
在擴展之後,IFM值被輸入至雙埠FIFO佇列1107,雙埠FIFO佇列1107在’610申請案中亦被稱作IFM緩衝器。多達兩個IFM畫素可被解包裝、膨脹及同時輸入至雙埠FIFO佇列。快取控制器1104控制雙埠快取1103的輸出,使得FIFO佇列1107保持等待處理的畫素隊行(在’610申請案中被稱作IFM片(slice))。
畫素可屬於相同的IFM且可根據乘法器單元陣列1109的處理次序進行排隊,如’610申請案中所更詳細地闡述。更具體而言,在’610申請案中揭露的基線實施例控制FIFO佇列1107(IFM緩衝器)以避免向乘法器單元陣列1109發送零值激活。在每一通路中,當將要發送至乘法器單元陣列1109用於計算的激活碰巧具有零值時,FIFO佇列(IFM緩衝器)1107可嘗試尋找並發送非零激活值而不是零值激活。尋找非零激活可包括檢查在相同通路中排隊的下一激活的值以及檢查相鄰通路(即,在當前通路上方的一個通路及在當前通路下方的一個通道)中的激活的值。若找到非零值激活,則可將該激活無序地發送至乘法器單元陣列1109,而不是發送零值激活。然後,乘法器單元陣列1109將正確的權重應用於取代用非零值激活,並使用額外的加法器樹來正確地計算所期望的點乘積,如在’610申請案中所更詳細地闡述。與’610申請案的基線實施例不同,圖11A所示實施例可將對非零值激活的搜索限制為僅在相同通路內(即,不對一個通路進行向上及向下的旁視搜索),以減小電路面積及功率。然而,圖11A中的FIFO佇列(IFM緩衝器)1107向乘法器單元陣列1109提供兩個激活廣播通路集合,其中第一激活通路集合廣播當前排隊的值(IFM片),而第二激活通路集合廣播下一排隊的值,即在基線實施例中將在下一時脈週期中廣播的值。
乘法器單元陣列1109可包括佈置成例如16列及8行的乘法器電路1120的陣列。每一乘法器電路1120可包括乘法器1121、
第一輸入多工器1122、第二輸入多工器1123及輸出多工器1124。第一輸入多工器1122可被配置成自雙埠FIFO佇列(IFM緩衝器)1107接收兩個IFM值。舉例而言,位於列0行0處的乘法器1121的第一輸入多工器可接收通道0的IFM資料及通道0的下一IFM資料。第二輸入多工器1123可被配置成自本地權重暫存器文檔(本文中未顯示,但在’610申請案中更詳細地闡述)接收兩個權重值。舉例而言,位於列0行0處的乘法器1121的第二輸入多工器1123可接收權重0及權重1的權重資料。
預看稀疏性控制器1108評價在雙埠FIFO佇列1107中的通路中排隊的IFM值,且控制第一輸入多工器1122將輸入至第一輸入多工器1122的非零IFM值選擇為第一運算元。另一預看稀疏性控制器(未示出)查看已在本地權重暫存器檔案(未示出)的通路中排隊的權重值,且控制第二輸入多工器1123將輸入至第二輸入多工器1123的非零值權重選擇為第二運算元,即若權重是零或該通路中的激活是零,則跳過乘法。
乘法器1121產生輸入至乘法器1121的所述兩個非零運算元的乘積。輸出多工器1124被控制成基於由預看稀疏性控制器向第一輸入多工器1122及第二輸入多工器1123提供的控制來為由乘法器1121產生的乘積選擇適當的加法器樹(未示出)。雙埠FIFO佇列1107、預看稀疏性控制器1108及乘法器單元陣列1109的操作的其他細節可在其全文併入本案供參考的’610申請案中找到。
乘法器單元陣列1109的OFM輸出被輸入至蝶形混洗器1110。乘法器單元陣列1109的OFM輸出可為非均質稀疏資料。即,在稀疏資料中可能存在非零值叢。蝶形混洗器1110可混洗資料以產生均質稀疏資料。即,自乘法器單元陣列1109的所述8個行輸出的每一相應OFM被輸入至蝶形混洗器1110的對應輸入,蝶形混洗器1110可如圖11B及圖11C中所繪示般進行配置。注意,與圖1A至圖1B中的蝶形混洗器不同,圖11C中的蝶形混洗器的較少的控制輸入被捆綁於一起,從而使得能夠達成更多排列方式。
蝶形混洗器1110可包括多個多工器模組組件1150,所述多個多工器模組組件1150在圖11B中被繪示為包括第一多工器1151及第二多工器1152。每一多工器1151及1152包括各自接收n個位元的兩個輸入。n個位元構成的集合a0被輸入至多工器1151的「a」輸入,且n個位元構成的集合a1被輸入至多工器1151的「b」輸入。n個位元構成的集合b0被輸入至多工器1152的「b」輸入,且n個位元構成的集合b1被輸入至多工器1152的「a」輸入。控制輸入「x」被輸入至多工器1151及1152二者。
圖11C繪示根據本文中所揭露標的的蝶形混洗器1110的一個示例性實施例的方塊圖。蝶形混洗器1110可包括佈置成8列(R=0至R=7)及4行(C=0至C=3)的陣列且如所示般連接的32個2對18位元多工器模組1150。每一相應的多工器模組1150可接收控制訊號x0..7,0..3。
蝶形混洗器1110可被控制成逐個值地混洗資料。若自乘法器單元陣列1109輸出的OFM資料為8位元資料,則蝶形混洗器1110的多工器模組1150可被控制成混洗所述8位元資料。
即,與OFM資料的單一值相關聯的位元在所述值被混洗時被保持於一起。舉例而言,若OFM資料為16位元資料,則蝶形混洗器1110的多工器被控制成混洗所述16位元資料,然後,蝶形混洗器1110可被配置成相似於圖1D中所繪示的蝶形混洗器。如圖11D中所繪示,蝶形混洗器1110的多工器可由偽隨機產生器1160以隨機或偽隨機方式控制,以對OFM資料進行均質化。
如’610申請案中所述,在對MUA 1109輸出的混洗由偽隨機值產生器控制的情況下,必須相應地離線地對下一層權重進行預混洗,以與應用於輸出激活的偽隨機混洗序列匹配,使得在下一層計算期間,IFM值正確地對應於欲與預加載至乘法器單元陣列1109中的權重一起應用的相關聯權重。
蝶形混洗器1110的OFM輸出可被輸入至資料壓縮器1111,資料壓縮器1111可對應於圖6A中所繪示的壓縮器。資料壓縮器1111的OFM輸出可儲存於記憶體1101中。在一個實施例中,蝶形混洗器1110的OFM輸出可被輸入至圖6A中所繪示的零折疊資料壓縮器及包裝電路600,以藉由移除零值並包裝資料來壓縮資料,以便儲存於記憶體1101(或者確切而言,記憶體620)中。圖11A中的實施例與’610申請案中所揭露的基線實施例之間的差異可由若干種考慮因素激起。首先,考慮SRAM 1101及/或
IFM遞送組構(delivery fabric)的頻寬可能受到限制的情形。更具體而言,一些層中的IFM值可具有高的稀疏性(例如高達90%)而使得IFM必須被快若干倍地(即,1/(100%-90%)=10x)擷取,以便向MUA 1109提供足夠的非零激活以防止乘法器1121空閒。
經由IFM組構擷取以及傳輸壓縮的(與未壓縮的相反)IFM可有助於增加乘法器利用率。在儲存及傳輸壓縮的IFM是不可用的或者IFM擷取的速率仍然不足以保持高的乘數器利用率的情形中,乘法器單元1120可被配置成藉由對每一IFM輸入片計算若干個OFM片結果來產生相較於’610申請案而言更多的OFM值,即如在’610申請案中所闡述般有效地進行OFM週期工作(OFM cycling)。
參照圖11A,第二種考慮因素可為除激活稀疏性之外利用權重稀疏性,即當欲由乘法器1121相乘的激活或權重(或二者)具有零值時,跳過乘法以及實行該些乘法的時間。更具體而言,每一乘法器單元1120可檢查欲與在第一激活通路集合之上廣播的激活相乘的權重是否為零,若所述權重為零,則該乘法器單元可作為替代繼續取在第二激活通路集合之上廣播的「下一」激活並將其與相關聯權重相乘。
以此種無序方式將激活與權重相乘可能導致乘法器單元1120中的一些乘法器單元1120超前於其他乘法器單元1120而運行。因此,乘法器單元的輸出可能需要被重新同步,使得每一乘法器單元行中的各別乘積被存在於每一乘法器單元行中的加法
器樹正確地縮減成點乘積。重新同步乘法器單元1120輸出的一種方式可涉及添加小輸出FIFO佇列。重新同步乘法器單元1120輸出的另一種方式可為使大大超前於其他乘法器單元1120而運行(即,由於稀疏性的波動)的乘法器單元1120閒置,同時例如使用蝶形混洗器1110以偽隨機方式在每一OFM片內排列輸出結果來使IFM均勻稀疏。
注意,在零權重乘法以及實行乘法的時間二者均被跳過的情況下,因此剩餘的欲實行的乘法的數目可減少。在IFM達到固定速率的情況下,乘法器1121的利用率將因此降低,此乃因乘法器1121可能由於在藉由跳過涉及零權重的乘法而釋放的時間期間沒有更多的非零IFM值要處理而變得空閒。乘法器利用率的此種降低可藉由增加IFM SRAM及IFM遞送組構頻寬來逆轉。
如早先所提及,當稀疏性在通路之間以及IFM片之間波動時,特別是當IFM頻寬不足以保持對乘法器單元1120的高的利用率時,一些乘法器單元1120可超前於其他乘法器單元1120而運行,其中FIFO佇列1107充當IFM緩衝器,從而在每一通路中發送當前及下一非零激活,使得超前於其他行(單元1120)而運行的乘法器陣列行(或具有輸出FIFO佇列的各別乘法器單元1120)可繼續計算下一OFM片,而不是等待所述其他行。每一乘法器陣列行可在繼續至下一IFM片之前計算例如2個OFM片。對每一IFM片計算多於一個OFM片(OFM週期工作)對應地需要較小的IFM頻寬以保持乘法器1121得到利用。
圖12A繪示根據本文中所揭露標的的提供對包裝資料的隨機寫入存取的示例性實施例通道平行壓縮器電路1200的方塊圖。圖12B繪示利用由零折疊資料壓縮器及包裝電路1200提供的對壓縮資料的隨機存取的示例性通道平行資料壓縮。
壓縮器電路1200相似於圖6A中所繪示的零折疊資料壓縮器及包裝電路600,不同之處如下。非零值包裝器602在壓縮器電路1200中由蝶形混洗器1201及FIFO佇列1202代替。電路1200可包括零值移除器601、蝶形混洗器1201、FIFO佇列1202、記憶體寫入仲裁器603、零位元遮罩產生器604、遮罩包裝器605及列指針產生器606。零值移除器電路601被電路1220代替,使得在原先電路601沿通路索引維度自每一IFM片各別地移除(折疊)零的情況下,電路1220沿時間序列索引維度自如由相關聯通路所接收的每一通道串流各別地移除(折疊)零。電路1220沿時間序列索引維度移除零可藉由將FIFO緩衝器與每一輸入通路串聯放置來實施,使得當且僅當值不為零時,所述值得以被寫入通道FIFO佇列中。形成電路1200的各種組件(包括作為整體的電路1200)可被實施為一或多個電路及/或一或多個模組。電路1200的操作相似於電路600的操作,且結合電路600闡述操作的諸多細節。
參照圖12A及圖12B,零值移除器601可接收位元組串流資料1210的16個通路(即,Lane0[7:0]-Lane15[7:0])或通道。位元組串流資料1210的每一通路可包括16個位元組的未壓縮非零值資料及零值資料。非零值資料由交叉影線或陰影指示,且零
值資料由「0」指示。在一個實施例中,所述16個位元組的資料可對應於畫素資料。
如上所述,零值移除器1220可被配置成自每一位元組串流1210移除零值資料。零值移除器1220輸出16個位元組串流STR0[7:0]-STR15[7:0],其中相應的位元組串流被移除零值。在圖12A中的1211處針對示例性輸入1210繪示零值移除器1220的輸出。一般而言,在已移除零值之後,相應的位元組串流可具有不同的長度。如圖13A至圖13B中所繪示,蝶形混洗器1201接收不同長度的位元組串流STR0[7:0]-STR15[7:0],並產生其中不同長度的位元組串流經級聯的包裝資料。
圖13A至圖13C概念性地繪示根據本文中所揭露標的,為不同位元組串流長度的八個示例性位元組串流遞迴地包裝成各自具有相等的位元組串流長度的八個位元組串流。儘管此例子說明8通路位元組串流,然而16通路位元組串流以相似的方式進行操作。此外,此例子說明以為一個位元組而不是如先前在圖2A至圖2C中所述的一個位元的粒度(即,輸入位元寬度)進行操作的蝶形混洗器。參照圖1C、圖12A及圖13A至圖13B,在1301處繪示的所述八個示例性位元組串流0-7通常具有不同的位元組串流長度,且將所述八個示例性位元組串流0-7輸入至例如(且為方便起見)蝶形混洗器101的多工器10400至10470。可將圖12A中的蝶形混洗器1201配置成相似於圖1C中的蝶形混洗器101。不同的位元組串流由不同的交叉影線繪示。將位元組串流0-7配
對或分組成對應於輸入多工器的配對方式的四個對。
在圖13A中的1302處,藉由蝶形混洗器1201透過控制對中的多工器而將每一對中為較長位元組串流長度的部分或頭部重新定位或重新定向成所述對中的較短位元組串流的部分,使得位元組串流對具有相等的位元組串流長度。舉例而言,藉由行C=0的多工器將位元組串流0的部分重新定向以成為位元組串流1的部分。相似地,將位元組串流2的部分重新定向以成為位元組串流3的部分。將位元組串流4的部分重新定向至位元組串流5,且將位元組串流7的部分重新定向成位元組串流6的部分。在位元組串流對的位元組串流長度差是奇數個位元組的情況下,可向所述兩個位元組串流中的較短者添加虛設位元組或填充位元組。
在1303處繪示在對內具有相等位元組串流長度的位元組串流對,且自行C=0的多工器輸出所述位元組串流對。在1303處指示的不同交叉影線區表示位元組串流的已被重新定向以成為另一位元組串流的部分的部分。
在圖13B中的1304處,將在對內具有相等位元組串流長度的位元組串流對輸入至蝶形混洗器1201的第二行(行C=1)中的多工器10401至10471。進一步將位元組串流對配對或分組成與蝶形混洗器1201的第二行中的多工器的配對方式對應的兩個成對的對。
在1305處,藉由控制第二行的多工器而將位元組串流對中的位元組串流中具有較長位元組串流長度的每一者的部分重
新定位或重新定向以分別成為所述位元組串流對中具有較短位元組串流長度的部分。舉例而言,藉由第二行的多工器將第一成對的對(成對的對1)中的位元組串流中的每一者的部分重新定向以分別成為所述第一成對的對中位元組串流中的較短位元組串流的部分。相似地,藉由第二行的多工器將第二成對的對(成對的對2)中的位元組串流中的每一者的部分重新定向以分別成為所述第二成對的對中位元組串流中的較短位元組串流的部分。在1306處繪示在成對的對內具有相等位元組串流長度的成對的位元組串流對。
在圖13C中的1307處,將具有相等位元組串流長度的成對的對的位元組串流輸入至蝶形混洗器1201的第三行(行C=2)中的多工器10402至10472。進一步將成對的對的位元組串流配對或分組成與蝶形混洗器101的第三行中的多工器的配對方式對應的成對的四個一組的位元組串流。
在1308處,藉由控制蝶形混洗器101的第三行的多工器,將所述成對的四個一組的位元組串流中的位元組串流中具有較長位元組串流長度的每一者的部分重新定位或重新定向以分別成為所述成對的四個一組的位元組串流中具有較短位元組串流長度的部分。舉例而言,藉由第三行的多工器將所述成對的四個一組組中的位元組串流中的每一者的部分重新定向以分別成為所述成對的四個一組的位元組串流中的較短位元組串流的部分。在1309處繪示現在具有相等位元組串流長度的位元組串流。
記憶體寫入仲裁器603、零位元遮罩產生器604、遮罩包裝器605及列指針產生器606以與結合圖6A中所繪示的零折疊資料壓縮器及包裝電路600所述者相似的方式進行操作,且將不在此處進行闡述。
重新參照圖12A及圖12B,蝶形混洗器1201的輸出被輸入至FIFO佇列1202。在1212處針對示例性輸入1210繪示FIFO佇列1202的輸出。當FIFO佇列1202進行填充時,且當遮罩包裝器605及列指針產生器606中的FIFO佇列進行填充時,記憶體寫入仲裁器603將資料寫入記憶體620中的相應區。非零值資料1212已藉由蝶形混洗器1201進行佈置,使得經壓縮及包裝的資料1212被以逐行佈置的方式儲存。零位元遮罩資料613及列指針資料614如早先所述般進行儲存。更具體而言,零位元遮罩資料不被儲存為早先在圖3A中說明的包裝串流302的部分303。
圖14繪示根據本文中所揭露標的的解包裝器及解壓縮器電路1400的示例性實施例的方塊圖。解包裝器及解壓縮器電路1400與圖9中所繪示的解包裝器及解壓縮器電路900相似,不同之處如下。非零值解包裝器902在解壓縮器電路1400中由蝶形混洗器1401代替。零值插入器903被電路1420代替,以便沿時間串流索引維度向每一通道串流中進行膨脹(重新插入零)。形成電路1400的各種組件(包括作為整體的電路1400)可被實施為一或多個電路及/或一或多個模組。
電路1400藉由使用列指針資料614及零位元遮罩資料
613對記憶體620的記憶體區621中的非零值資料進行解包裝而大體上以與圖12A所示通道平行壓縮器電路1200相反的方式進行操作。電路1400可包括記憶體讀取仲裁器901、蝶形混洗器1401、零值插入器1420及遮罩解包裝器904。記憶體讀取仲裁器901自記憶體620讀取非零值資料、列指針資料及位元遮罩資料。非零值解包裝器902基於位元遮罩資料對包裝資料進行解包裝。零值插入器1420亦基於位元遮罩資料將零值插入解包裝資料中。
先前闡述的實施例可使用零位元遮罩技術以使用零位元遮罩的一個位元對零值進行編碼。即,先前闡述的實施例使用開銷(overhead)為每一位元遮罩位元一個資料單元的壓縮技術。
當使用8位元資料單元(即,位元組)時,壓縮技術的開銷是每一個位元組的未壓縮資料一個位元遮罩位元。根據本文中所揭露的標的,亦可使用不同的壓縮粒度。舉例而言,激活及/或權重資料可主要具有小的絕對值。若例如基於半位元組(即,4位元資料單元)使壓縮粒度更精細,則由於激活及/或權重資料的諸多最高有效半位元組(most significant nibble,MSN)可能為零,因此激活及/或權重資料在此種粒度水準上可能變得甚至更稀疏,即使對於非零激活及權重亦是如此。可使用基於每位元半位元組的壓縮粒度的資料壓縮來減少壓縮遮罩開銷。作為另一選擇,可將較粗略的壓縮粒度用於極為稀疏的資料以減少壓縮遮罩開銷。即,可使用每位元遮罩兩位元組的開銷來減少壓縮遮罩開銷。
圖15示出對於例如谷歌(Google)的Inception第3版
卷積神經網路(CNN)等通常可用的示例性CNN的三種不同壓縮粒度1501-1503的壓縮比的曲線圖1500,CNN的權重被量化為int8,且激活被量化為uint8資料類型。示例性CNN的層數沿曲線圖1500的橫座標示出,且激活的壓縮比沿曲線圖1500的縱座標以百分比示出。縱座標的標度可能使壓縮比的差異難以在各個地方看出,因此在多個地方指示不同壓縮粒度1501-1503的壓縮比。其他示例性CNN可為不同的壓縮粒度提供相似的壓縮比。
在1501處指示示例性逐通道半位元組壓縮粒度的壓縮比。用於逐通道半位元組壓縮粒度的零位元遮罩對每半位元組使用一個位元遮罩位元。在1502處指示利用置換技術的逐通道一位元組壓縮粒度的壓縮比。用於一位元組壓縮粒度的零位元遮罩對每位元組的未壓縮資料使用一個位元遮罩位元。資料的資料單元可為8位元資料的位元組。用於一位元組壓縮粒度的置換技術進行操作以將當前資料單元(例如位元組)及下一逐通道資料單元(例如位元組)的最高有效半位元組置換成一起處於相同的資料單元(例如位元組)中,然後將當前資料單元及下一逐通道資料單元的最低有效半位元組(least-significant nibble)置換成處於下一資料單元中。
如圖17中所繪示,可藉由將每一新進位元組分割成兩個半位元組(上半位元組及下半位元組)且隨後對半位元組而不是位元組進行操作而將圖6A中所繪示的模組修改為使用半位元組級的粒度來壓縮資料。相似地,可藉由將每一新進位元組合併
至16位元單元中且隨後對16位元單元而不是位元組進行操作而將圖6A中所繪示的模組修改為使用兩位元組粒度來壓縮資料。亦可使用包括2位元、4位元組等等在內的其他粒度。
圖16A繪示根據本文中所揭露標的的用於8位元資料單元(即位元組)的逐通道置換技術。在通路0中,原始的8位元資料可包括0x02 0x07 0x08 0x0A...。在置換之後,通路0的8位元資料現在可被佈置為0x00 0x27 0x00 0x8A...,其中位元組對0x02及0x07的最高有效半位元組0x0及0x0二者形成位元組0x00,且最低有效半位元組0x2及0x7二者形成位元組0x27。在圖16A中的其他通路中發生相似的置換,即取每一新進位元組對並重新佈置其半位元組以將最高有效半位元組編接於一起且將最低有效半位元組編接於一起。圖16B繪示根據本文中所揭露標的的用於16位元資料的置換技術。在通路0中,原始16位元資料可包括0x02 0x07 0x08 0x0A...。在置換之後,通路0的16位元資料現在可被佈置為0x00 0x00 0x27 0x8A,即將每一對新進16位元值分割成位元組,隨後將最高有效位元組編接於一起且將最低有效位元組編接於一起。在圖16B中的其他通路中發生相似的置換。可使用的另一種置換技術是交叉通道置換(cross-channel transposition),其中相鄰通道中的資料單元的部分彼此置換,此與在每一通路中獨立於其他通路編接最高有效(或最低有效)半位元組(或位元組)相反。
在圖15中,在1502處指示利用置換技術的每通道的兩
位元組壓縮粒度的壓縮比。用於所述兩位元組壓縮粒度的置換技術進行操作以將兩個當前資料單元及接下來的逐通道的兩個資料單元的最高有效半位元組置換成一起處於相同的兩個資料單元中,隨後將所述兩個當前資料單元及接下來的兩個逐通道資料單元的最低有效半位元組置換成處於接下來的兩個資料單元中。
如可自曲線圖1500看出,較之於其他兩種壓縮粒度,半位元組壓縮粒度1501一般朝向示例性CNN的在1504處指示的開始至中間層提供更大的壓縮比。激活及/或權重一般在示例性CNN的此種層範圍內具有中等稀疏性。具體而言,當除具有中等稀疏性的激活之外的激活具有絕對量值小的值(即,在位元組(例如,uint8)的最高半位元組等於零的同時,可在該位元組的最低半位元組中進行編碼的值1...15)時,半位元組粒度壓縮的表現尤其良好。
自CNN的在圖15中的1505處指示的中間層至末端層,一位元組壓縮粒度1502一般提供最佳壓縮比。在示例性CNN的此種層範圍內,相較於層範圍1504內的資料,激活及權重資料一般具有增加的稀疏性。在CNN的在1506處指示的稀疏性最大的末端層中,兩位元組壓縮粒度1503一般提供最佳壓縮比。因此,對壓縮粒度的選擇可使CNN的給定層及/或給定層範圍的壓縮比以及權重核(weight kernel)最佳化。
圖17繪示根據本文中所揭露標的的可提供半位元組壓縮粒度的壓縮電路1700的示例性實施例的方塊圖。壓縮電路1700
相似於圖6A中所繪示的壓縮電路600,且以大體上相同的方式進行操作。不同之處在於,零值移除器1701、非零值包裝器1702、記憶體寫入仲裁器1703及零位元遮罩產生器1704可被配置成對半位元組而不是位元組進行操作。當需要隨機存取時,可使用列指針產生器。圖17繪示不需要隨機存取的情形,所產生的列指針被省略。其他實施例可被配置成對作為壓縮粒度的位元組及/或作為壓縮粒度的多個位元組進行操作。形成電路1700的各種組件(包括作為整體的電路1700)可被實施為一或多個電路及/或一或多個模組。
表1的最左側行示出可在第一時脈週期處輸入至電路1700的零值移除器1701的示例性資料集合。中間行示出零值移除器1701的基於示例性輸入資料集合而被輸入至非零值包裝器1702的輸出。表1的最右側行示出針對示例性輸入資料集合,在第二時脈週期處零值移除器1701的輸出。下表中的「X」表示「不理會(do not care)」值。
針對示例性輸入資料自零位元遮罩產生器1704輸出的零位元遮罩是0111 1101 1110 0001 1100 0100 1000 0111,其中「1」表示零值。表2的左側行示出非零值包裝器1702及遮罩包裝器1705的FIFO佇列中將針於表1所示示例性資料輸入自記憶體寫入仲裁器1703輸出的包裝資料及零位元遮罩資料。表2的左側行中的「X」表示FIFO佇列正在填充,但尚未填滿。表2的右側行示出在將記憶體寫入仲裁器1703的FIFO佇列中的資料寫入記憶體620之前(即,所述資料尚未被寫入記憶體620)的記憶體620的內容。
表3的最左側行示出在第二時脈週期處輸入至電路1700的零值移除器1701的下一示例性資料。中間行是來自零值移除器1701的被輸入至非零值包裝器1702的輸出。表3的最右側行示出在第三時脈週期處零值移除器1701的輸出。
針對示例性輸入資料自零位元遮罩產生器1704輸出的零位元遮罩是1000 0010 0001 1110 0011 1011 0000 0000。表4的左側行示出將針對表3所示示例性資料輸入自非零值包裝器1702及遮罩包裝器1705的相應FIFO佇列輸出至記憶體寫入仲裁器1703的包裝資料及零位元遮罩資料。表4的右側行示出記憶體620的內容。
表5的最左側行示出在第三時脈週期處輸入至電路1700的零值移除器1701的下一示例性資料。中間行是零值移除器1701的被輸入至非零值包裝器1702的輸出。表5的最右側行示出在第四時脈週期處零值移除器1701的輸出。
針對示例性輸入資料自零位元遮罩產生器1704輸出的零位元遮罩是0010 0111 0011 0000 0100 1100 0100 0010。表6的左側行示出將針對表5所示示例性資料輸入自非零值包裝器1702及遮罩包裝器1705的相應FIFO佇列輸出至記憶體寫入仲裁器
1703的包裝資料及零位元遮罩資料。右側行示出記憶體620的內容。
表7的最左側行示出在第四時脈週期處輸入至電路1700的零值移除器1701的示例性資料集合。中間行是零值移除器1701的被輸入至非零值包裝器1702的輸出。表7的最右側行示出在第五時脈週期處零值移除器1701的輸出。
針對示例性輸入資料自零位元遮罩產生器1704輸出的零位元遮罩是0110 1000 0000 0000 1100 0100 1100 0001。表8的左側行闡述將針對表7所示示例性資料輸入自非零值包裝器1702及遮罩包裝器1705的相應FIFO佇列輸出至記憶體寫入仲裁器1703的包裝資料及零位元遮罩資料。右側行示出記憶體620的內容。
圖18繪示根據本文中所揭露標的的可與壓縮電路1700一起使用的解壓縮電路1800的示例性實施例的方塊圖。解壓縮電路1800相似於圖9中所繪示的壓縮電路900,且以大體上相同的方式進行操作。不同之處在於,非零值解包裝器1802及零值插入器1803可被配置成對半位元組而不是位元組進行操作。另一不同之處在於,在此特定例子中,移除直接記憶體存取,且省略列指針模組。形成電路1800的各種組件(包括作為整體的電路1800)可被實施為一或多個電路及/或一或多個模組。
實行對儲存於記憶體620中的包裝資料的隨機存取的替代方法可利用控制邏輯(未示出),所述控制邏輯可在資料被壓縮時對零位元遮罩中的零位元進行計數,且可形成在未壓縮資料中提供偏移量以偏移至壓縮資料(即,儲存於記憶體620中)的查找表。即,偏移量X處的未壓縮資料已被儲存於物理位址Y處。在一個實施例中,查找表粒度可基於邏輯偏移量表項(例如0x0000、0x0040、0x0080等)以提供每一表項0x0040的步長(step)。可使用其他步長。作為另一選擇,若將需要稍後讀取的位址是預先已知的,則可基於該些位址來設置表項。在又一替代實施例中,表結構可被配置成類似於樹結構。相對較小的步長一般將增加表大小,因此可基於可用記憶體來選擇步長大小(step size)。為擷
取任意邏輯偏移量X處的資料,可在查找表中尋找對應於X的物理位址Y。若所述表不包含確切的Y(X),則尋找Xp及Yp,使得Xp緊接在X之前。然後讀取位元遮罩以確定Y(X),並自記憶體620讀取Y(X)。表9示出示例性查找表。
本文中所揭露的各種實施例可用於對資料進行壓縮及解壓縮以經由匯流排傳輸,而不是儲存至記憶體及自記憶體擷取。圖19繪示根據本文中所揭露標的的可提供半位元組壓縮粒度且可用於經由匯流排傳輸壓縮資料的壓縮電路1900的示例性實施例的方塊圖。壓縮電路1900相似於圖17中所繪示的壓縮電路1700,且以大體上相同的方式進行操作。不同之處在於,匯流排傳輸FIFO及仲裁器1903代替記憶體寫入仲裁器1703。除輸出經壓縮的包裝資料之外,匯流排傳輸FIFO及仲裁器1903亦輸出data_valid訊號及mask_valid訊號。當正在被傳輸的BUS_DATA是經壓縮的包裝資料時,data_valid訊號是現用的,且當正在被傳輸的BUS_DATA是零位元遮罩資料時,mask_valid訊號是現用的。當無資料正在經由匯流排傳輸時,data_valid訊號與mask_valid訊號二者均為非有效的。否則,壓縮電路1900以與壓縮電路1700相同的方式進行操作。形成電路1900的各種組件(包括作為整體的
電路1900)可被實施為一或多個電路及/或一或多個模組。
圖20繪示根據本文中所揭露標的的可提供半位元組壓縮粒度且可用於經由匯流排接收壓縮資料的解壓縮電路2000的示例性實施例的方塊圖。解壓縮電路2000相似於圖18中所繪示的解壓縮電路1800,且以大體上相同的方式進行操作。不同之處在於,匯流排接收FIFO佇列2001代替記憶體讀取仲裁器1801。當正在被接收的BUS_DATA是經壓縮的包裝資料時,data_valid訊號是現用的,且當正在被接收的BUS_DATA是零位元遮罩資料時,mask_valid訊號是現用的。當無資料正在經由匯流排被接收時,data_valid訊號與mask_valid訊號二者均是非現用的。否則,解壓縮電路2000以與解壓縮電路1800相同的方式進行操作。形成電路2000的各種組件(包括作為整體的電路2000)可被實施為一或多個電路及/或一或多個模組。
圖21繪示可包括使用根據本文中所揭露標的的蝶形混洗器的資料壓縮器及/或資料解壓縮器的電子裝置2100。電子裝置2100可用於但不限於計算裝置、個人數位助理(personal digital assistant,PDA)、膝上型電腦、行動電腦、網路平板電腦(web tablet)、無線電話、蜂巢式電話、智慧型電話、數位音樂播放機或者有線或無線電子裝置。電子裝置2100可包括藉由匯流排2150彼此耦合的控制器2110、輸入/輸出裝置2120(例如但不限於小鍵盤、鍵盤、顯示器、觸摸式螢幕顯示器、照相機及/或影像感測器)、記憶體2130及介面2140。控制器2110可包括例如至少一個微處理器、
至少一個數位訊號處理、至少一個微控制器等。記憶體2130可被配置成儲存欲由控制器2110使用的命令碼或者使用者資料。
電子裝置2100及電子裝置2100的各種系統組件可包括使用根據本文中所揭露標的的蝶形混洗器的資料壓縮器及/或資料解壓縮器。介面2140可被配置成包括無線介面,所述無線介面被配置成使用射頻(RF)訊號向無線通訊網路傳輸資料或自無線通訊網路接收資料。無線介面2140可包括例如天線、無線收發機等等。電子裝置2100亦可用於通訊系統的通訊介面協定中,例如但不限於分碼多重存取(Code Division Multiple Access,CDMA)、全球行動通訊系統(Global System for Mobile Communications,GSM)、北美數位通訊(North American Digital Communications,NADC)、擴展式分時多重存取(Extended Time Division Multiple Access,E-TDMA)、寬頻CDMA(Wideband CDMA,WCDMA)、CDMA2000、無線保真(Wi-Fi)、城市Wi-Fi(Municipal Wi-Fi,Muni Wi-Fi)、藍芽、數位增強型無線電訊(Digital Enhanced Cordless Telecommunications,DECT)、無線通用串列匯流排(Wireless Universal Serial Bus)(無線USB(Wireless USB))、具有無縫切換的快速低潛時存取正交分頻多工(Fast low-latency access with seamless handoff Orthogonal Frequency Division Multiplexing,Flash-OFDM)、電氣及電子工程師學會(Institute of Electrical and Electronic Engineers,IEEE)802.20、通用封包無線服務(General Packet Radio Serviee,GPRS)、埃博斯特(iBurst)、
無線寬頻(Wireless Broadband,WiBro)、全球互通微波存取(WiMAX)、高級WiMAX(WiMAX-Advanced)、通用行動電訊服務-分時雙工(Universal Mobile Telecommunication Service-Time Division Duplex,UMTS-TDD)、高速封包存取(High Speed Packet Access,HSPA)、演進資料最佳化(Evolution Data Optimized,EVDO)、高級長期演進(Long Term Evolution-Advanced)(高級LTE(LTE-Advanced))、多通道多點分佈服務(Multichannel Multipoint Distribution Service,MMDS)等。
在本說明書中闡述的標的及操作的實施例可在數位電子電路系統中實施,或者在電腦軟體、韌體或硬體(包括在本說明書中揭露的結構及其等效結構)中或者以其中的一或多者的組合實施。本說明書中闡述的標的的實施例可被實施為一或多個電腦程式(即,電腦程式指令的一或多個模組),所述一或多個電腦程式編碼於電腦儲存媒體上以便由資料處理設備執行或控制資料處理設備的操作。作為另一選擇或另外,程式指令可編碼於人工產生的傳播訊號上,所述人工產生的傳播訊號為例如被產生以對用於傳輸至適合的接收器設備的資訊進行編碼以便由資料處理設備執行的由機器產生的電性訊號、光學訊號或電磁訊號。電腦儲存媒體可為電腦可讀取儲存裝置、電腦可讀取儲存基板、隨機或串列存取記憶體陣列或裝置或者其組合,或者可包括於電腦可讀取儲存裝置、電腦可讀取儲存基板、隨機或串列存取記憶體陣列或裝置或者其組合中。此外,儘管電腦儲存媒體不是傳播訊號,
然而電腦儲存媒體可為編碼於人工產生的傳播訊號中的電腦程式指令的來源(source)或目的地(destination)。電腦儲存媒體亦可為一或多個單獨的物理組件或媒體(例如,多個光碟(compact disc,CD)、碟片(disk)或其他儲存裝置),或者可包括於所述一或多個單獨的物理組件或媒體(例如,多個CD、碟片或其他儲存裝置)中。
本說明書中闡述的操作可被實施為由資料處理設備對儲存於一或多個電腦可讀取儲存裝置上的資料或自其他來源接收的資料實行的操作。用語「資料處理設備」囊括用於處理資料的所有種類的設備、裝置及機器,包括例如可程式化處理器、電腦、系統晶片或者前述中的多者(或組合)。所述設備可包括專用邏輯電路系統,例如現場可程式化閘陣列(field programmable gate array,FPGA)或應用專用積體電路(application-specific integrated circuit,ASIC)。所述設備可除硬體之外亦包括為電腦程式創建執行環境的碼,例如構成處理器韌體、協定堆疊、資料庫管理系統、作業系統、跨平台運行時間環境、虛擬機或其組合的碼。所述設備及執行環境可達成各種不同的計算模型基礎架構,例如網路服務、分佈式計算及網格式計算基礎架構。
電腦程式(亦稱為程式、軟體、軟體應用、腳本或碼)可以包括編譯或解譯語言、宣告性語言或程序性語言在內的任何形式的程式化語言來編寫,且電腦程式可以任何形式來部署,包括作為獨立程式或作為模組、組件、次常式、對象或適合於在計
算環境中使用的其他單元。電腦程式可但無需對應於檔案系統中的檔案。程式可儲存於檔案的保持其他程式或資料(例如,儲存於標示語言文件中的一或多個腳本)的一部分中、專用於所述及的所述程式的單一檔案中或者多個協調的檔案(例如,儲存一或多個模組、子程式或碼部分的檔案)中。電腦程式可被部署成在位於一個站點(site)處的一個電腦上或在分佈於多個站點上並藉由通訊網路互連的多個電腦上執行。
本說明書中闡述的過程及邏輯流程可由一或多個可程式化處理器來實行,所述一或多個可程式化處理器執行一或多個電腦程式,以藉由對輸入資料進行操作並產生輸出來實行動作。舉例而言,適合於執行電腦程式的處理器包括通用微處理器與專用微處理器二者以及任何種類的數位電腦的任何一或多個處理器。一般而言,處理器可自唯讀記憶體或隨機存取記憶體或兩者接收指令及資料。電腦的基本元件是用於根據指令實行動作的處理器以及用於儲存指令及資料的一或多個記憶體裝置。一般而言,電腦亦將包括用於儲存資料的一或多個巨量儲存裝置(例如磁碟、磁光碟或光碟),或者被操作地耦合以自所述一或多個巨量儲存裝置接收資料或向所述一或多個巨量儲存裝置傳送資料或者進行兩者。然而,電腦不必具有此種裝置。此外,電腦可嵌置於例如(舉幾個例子)行動電話、個人數位助理(PDA)、行動音訊或視訊播放機、遊戲主控台(game console)、全球定位系統(Global Positioning System,GPS)接收器或可攜式儲存裝置(例如,通用
串列匯流排(USB)快閃驅動器)等另一裝置中。適合於儲存電腦程式指令及資料的裝置包括所有形式的非揮發性記憶體、媒體及記憶體裝置,包括例如:半導體記憶體裝置,例如可抹除可程式化唯讀記憶體(EPROM)、電子可抹除可程式化唯讀記憶體(EEPROM)及快閃記憶體裝置;磁碟,例如內部硬碟或可移除式碟片(removable disk);磁光碟;以及光碟唯讀記憶體(CD-ROM)及數位多功能光碟唯讀記憶體(DVD-ROM)碟片。處理器及記憶體可藉由專用邏輯電路系統來補充或包含於專用邏輯電路系統中。
為提供與使用者的交互,本說明書中闡述的標的的實施例可在電腦上實施,所述電腦具有例如陰極射線管(cathode ray tube,CRT)或液晶顯示器(liquid crystal display,LCD)監視器等用於向使用者顯示資訊的顯示裝置以及可被使用者用於向電腦提供輸入的鍵盤及指針裝置(例如鼠標或軌跡球)。亦可使用其他種類的裝置來提供與使用者的交互;舉例而言,提供至使用者的回饋可為任何形式的感覺回饋,例如視覺回饋、聽覺回饋或觸覺回饋;且來自使用者的輸入可以包括聲響、語音或觸覺輸入在內的任何形式接收。
本說明書中闡述的標的的實施例可在計算系統中實施,所述計算系統包括後端組件,例如作為資料伺服器;或者包括中間體組件,例如應用伺服器;或者包括前端組件,例如具有圖形使用者介面或網路瀏覽器的使用者電腦,使用者可經由圖形使用
者介面或網路瀏覽器與本說明書中闡述的標的的實施方案進行交互;或者一或多個此種後端組件、中間體組件或前端組件的任何組合。系統的組件可藉由任何數位資料通訊形式或媒體(例如,通訊網路)來互連。通訊網路的例子包括區域網路(local area network,LAN)及廣域網路(wide area network,WAN)、網間網路(inter-network)(例如,網際網路)及點對點網路(peer-to-peer networks)(例如,特定點對點網路(ad hoc peer-to-peer networks))。
計算系統可包括使用者及伺服器。使用者與伺服器一般彼此遠離,且通常經由通訊網路進行交互。使用者與伺服器的關係是憑藉在相應的電腦上運行且彼此具有使用者-伺服器關係的電腦程式而產生。儘管本說明書包含諸多具體的實施細節,然而該些實施細節不應被視為對任何發明的範圍或可主張的範圍的限制,而應被視為對特定發明的特定實施例的專有特徵的說明。本說明書中在單獨的實施例的上下文中闡述的某些特徵亦可在單一實施例中以組合方式實施。相反,在單一實施例的上下文中闡述的各種特徵亦可在多個實施例中單獨地實施或以任何適合的子組合來實施。此外,儘管上文可將特徵闡述為在某些組合中起作用且甚至最初如此主張,然而在一些情形中,可自所主張的組合中去除來自所述組合的一或多個特徵,且所主張的組合可針對子組合或子組合的變型。
因此,已闡述本標的的特定實施例。其他實施例亦處於
以下申請專利範圍的範圍內。在一些情形中,在申請專利範圍中闡述的動作可以不同的次序實行,且仍然會達成所期望的結果。相似地,儘管在圖式中以特定次序繪示操作,然而此不應被理解為要求以所示的特定次序或以順序次序實行此種操作或者要求實行所有所示操作以達成所期望的結果。在某些情況中,多任務及平行處理可為有利的。此外,上述實施例中的各種系統組件的分離不應被理解為在所有實施例中均需要此種分離,且應理解,所闡述的程式組件及系統一般可一起整合於單一軟體產品中或者被封裝至多個軟體產品中。
如熟習此項技術者將認識到,可在廣大範圍的應用中對本文中所述創新概念進行修改及變化。因此,所主張標的的範圍不應僅限於以上所論述的任何具體示例性教示內容,而是由以下申請專利範圍來界定。
100:多通道資料包裝器
101:蝶形混洗器
102:控制器
103:資料壓縮器
104:多工器模組/多工器模組組件/多工器
Claims (20)
- 一種多通道資料包裝器,包括:佈置成2N列及N行的多個2對1多工器,其中N是大於1的整數,位於第一行中的每一多工器的每一輸入接收2N個通道的位元串流中的相應位元串流,所述相應位元串流包括基於所述相應位元串流中的資料的位元串流長度,且位於最末行中的多工器輸出2N個通道的包裝位元串流,所述2N個通道的包裝位元串流各自具有相同的位元串流長度;以及控制器,控制所述多個2對1多工器,使得位於所述最末行中的所述多工器輸出所述2N個通道的包裝位元串流,所述2N個通道的包裝位元串流各自具有所述相同的位元串流長度。
- 如請求項1所述的多通道資料包裝器,其中N=3,且所述多個2對1多工器被佈置成8列及3行,其中位於所述第一行中的多工器的輸出耦合至位於相同列的第二行中的多工器的輸入,且位於所述第二行中的所述多工器的輸出耦合至位於所述相同列的第三行中的多工器的輸入,其中位於一個行中的一個多工器與位於相同行中的另一多工器分組於一起,以形成位於所述一個行中的多對多工器中的一者,位於所述一個行中的每一對多工器對應於位於另一行中的一對多工器,其中位於所述第一行中的一對多工器中的第一多工器及第二多工器的輸出更耦合至位於所述第二行中的對應的一對多工器中 的第一多工器及第二多工器的相應輸入,且其中位於所述第二行中的所述對應的一對多工器中的所述第一多工器及所述第二多工器的輸出更耦合至位於所述第三行中的對應的一對多工器中的第一多工器及第二多工器的相應輸入。
- 如請求項2所述的多通道資料包裝器,其中由位於所述第一行中的所述多工器接收的每一位元串流包括零位元遮罩部分及非零資料部分。
- 如請求項3所述的多通道資料包裝器,其中位元串流的所述零位元遮罩部分指示所述位元串流中零值的位置。
- 如請求項1所述的多通道資料包裝器,其中位於所述第一行中的所述每一多工器的所述每一輸入進一步接收2N個通道的包裝位元串流中的相應包裝位元串流,所述相應包裝位元串流包括相同的位元串流長度,且其中所述控制器進一步控制所述多個2對1多工器,使得位於所述最末行中的所述多工器輸出2N個通道的解包裝位元串流,其中每一解包裝位元串流具有與所述每一解包裝位元串流的解包裝資料對應的位元串流長度。
- 如請求項5所述的多通道資料包裝器,其中N=3或N=4。
- 如請求項5所述的多通道資料包裝器,其中由位於所述第一行中的多工器接收的包裝位元串流包括零位元遮罩部分及非零資料部分。
- 一種多通道資料包裝器,包括:佈置成8列及3行的多個2對1多工器,位於第一行中的多工器的輸出耦合至位於相同列的第二行中的多工器的輸入,且位於所述第二行中的所述多工器的輸出耦合至位於所述相同列的第三行中的多工器的輸入,位於一個行中的一個多工器與位於所述一個行中的另一多工器分組於一起,以形成位於所述一個行中的多對多工器中的一者,位於所述一個行中的每一對多工器對應於位於另一行中的一對多工器,位於所述第一行中的一對多工器中的第一多工器及第二多工器的輸出更耦合至位於所述第二行中的對應的一對多工器中的第一多工器及第二多工器的相應輸入,且位於所述第二行中的所述對應的一對多工器中的所述第一多工器及所述第二多工器的輸出更耦合至位於所述第三行中的對應的一對多工器中的第一多工器及第二多工器的相應輸入。
- 如請求項8所述的多通道資料包裝器,其中所述第一行中的每一多工器的每一輸入接收8個通道的位元串流中的對應位元串流,其中所述對應位元串流包括基於所述對應位元串流中的資料的位元串流長度,且其中位於所述第三行中的多工器輸出8個通道的包裝位元串流,其中每一包裝位元串流具有相同的位元串流長度。
- 如請求項8所述的多通道資料包裝器,其中由位於所述第一行中的所述多工器接收的每一位元串流包括零位元遮罩部分及非零資料部分,位元串流的所述零位元遮罩部分指示所述位元串流中零值的位置。
- 如請求項10所述的多通道資料包裝器,更包括控制器,所述控制器控制所述多個2對1多工器,使得位於所述第三行中的多工器輸出8個通道的位元串流,所述8個通道的位元串流各自具有相同的位元串流長度。
- 如請求項8所述的多通道資料包裝器,其中位於所述第一行中的所述多工器的每一輸入進一步接收8個通道的包裝位元串流中的相應包裝位元串流,其中所述相應包裝位元串流包括相同的位元串流長度,且其中位於所述第三行中的多工器輸出8個通道的解包裝位元串流,其中每一通道具有與所述每一通道的解包裝資料對應的位元串流長度。
- 如請求項12所述的多通道資料包裝器,更包括控制器,所述控制器控制所述多個2對1多工器,使得位於所述第三行中的所述多工器輸出所述8個通道的解包裝位元串流。
- 如請求項12所述的多通道資料包裝器,其中由位於所述第一行中的所述多工器接收的每一包裝位元串流包括零位元遮罩部分及非零資料部分。
- 一種多通道資料解包裝器,包括: 佈置成2N列及N行的多個2對1多工器,其中N是大於1的整數,位於第一行中的每一多工器的每一輸入接收2N個通道的包裝位元串流中的相應包裝位元串流,所述相應包裝位元串流包括相同的位元串流長度,且位於最末行中的多工器輸出2N個通道的解包裝位元串流,所述2N個通道的解包裝位元串流各自具有與相應解包裝位元串流的解包裝資料對應的位元串流長度;以及控制器,控制所述多個2對1多工器,使得所述最末行中的所述多工器輸出所述2N個通道的解包裝位元串流,其中每一解包裝位元串流具有與所述每一解包裝位元串流的解包裝資料對應的所述位元串流長度。
- 如請求項15所述的多通道資料解包裝器,其中位於所述第一行中的多工器接收的每一包裝位元串流包括零位元遮罩部分及非零資料部分。
- 如請求項15所述的多通道資料解包裝器,其中N=3,且所述多個2對1多工器被佈置成8列及3行,其中位於所述第一行中的多工器的輸出耦合至位於相同列的第二行中的多工器的輸入,且位於所述第二行中的所述多工器的輸出耦合至位於所述相同列的第三行中的多工器的輸入,其中位於一個行中的一個多工器與位於相同行中的另一多工器分組於一起,以形成位於所述一個行中的多對多工器中的一者,位於所述一個行中的每一對多工器對應於位於另一行中的一對多工器, 其中位於所述第一行中的一對多工器中的第一多工器及第二多工器的輸出更耦合至位於所述第二行中的對應的一對多工器中的第一多工器及第二多工器的相應輸入,且其中位於所述第二行中的所述對應的一對多工器中的所述第一多工器及所述第二多工器的輸出更耦合至位於所述第三行中的對應的一對多工器中的第一多工器及第二多工器的相應輸入。
- 如請求項17所述的多通道資料解包裝器,其中位於所述第一行中的所述每一多工器的所述每一輸入更接收8個通道的第二位元串流中的相應第二位元串流,其中所述相應第二位元串流包括基於所述相應第二位元串流中的資料的位元串流長度,且其中所述控制器進一步控制所述多個2對1多工器,使得位於所述第三行中的多工器輸出8個通道的包裝位元串流,其中每一包裝位元串流具有相同的位元串流長度。
- 如請求項18所述的多通道資料解包裝器,其中位於所述第一行中的所述多工器接收的每一第二位元串流包括零位元遮罩部分及非零資料部分。
- 如請求項19所述的多通道資料解包裝器,其中第二位元串流的所述零位元遮罩部分指示所述第二位元串流中零值的位置。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962835496P | 2019-04-17 | 2019-04-17 | |
US62/835,496 | 2019-04-17 | ||
US201962841819P | 2019-05-01 | 2019-05-01 | |
US62/841,819 | 2019-05-01 | ||
US16/842,662 US11671111B2 (en) | 2019-04-17 | 2020-04-07 | Hardware channel-parallel data compression/decompression |
US16/842,662 | 2020-04-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202112075A TW202112075A (zh) | 2021-03-16 |
TWI840550B true TWI840550B (zh) | 2024-05-01 |
Family
ID=70295028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109112724A TWI840550B (zh) | 2019-04-17 | 2020-04-16 | 多通道資料包裝器及多通道資料解包裝器 |
Country Status (5)
Country | Link |
---|---|
US (6) | US11671111B2 (zh) |
EP (1) | EP3726733A1 (zh) |
KR (1) | KR20200122253A (zh) |
CN (1) | CN111835703B (zh) |
TW (1) | TWI840550B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
CN109993274B (zh) * | 2017-12-29 | 2021-01-12 | 深圳云天励飞技术有限公司 | 人工智能计算装置及相关产品 |
US12099912B2 (en) | 2018-06-22 | 2024-09-24 | Samsung Electronics Co., Ltd. | Neural processor |
US11671111B2 (en) | 2019-04-17 | 2023-06-06 | Samsung Electronics Co., Ltd. | Hardware channel-parallel data compression/decompression |
US11211944B2 (en) | 2019-04-17 | 2021-12-28 | Samsung Electronics Co., Ltd. | Mixed-precision compression with random access |
US11630770B2 (en) * | 2019-07-11 | 2023-04-18 | Meta Platforms Technologies, Llc | Systems and methods for reading and writing sparse data in a neural network accelerator |
US20220066776A1 (en) * | 2020-08-25 | 2022-03-03 | Infineon Technologies Ag | Accelerating processor based artificial neural network computation |
US20220164637A1 (en) * | 2020-11-20 | 2022-05-26 | Natural Intelligence Systems, Inc. | Neural Processing Units (NPUs) and Computational Systems Employing the Same |
US11328209B1 (en) | 2021-06-02 | 2022-05-10 | SambaNova Systems, Inc. | Dual cycle tensor dropout in a neural network |
US11256987B1 (en) * | 2021-06-02 | 2022-02-22 | SambaNova Systems, Inc. | Memory efficient dropout, with reordering of dropout mask elements |
FR3124636B1 (fr) * | 2021-06-25 | 2024-04-26 | Commissariat Energie Atomique | Circuit de mémorisation de données parcimonieuses |
US11940907B2 (en) * | 2021-06-25 | 2024-03-26 | Intel Corporation | Methods and apparatus for sparse tensor storage for neural network accelerators |
JP2023007760A (ja) | 2021-07-02 | 2023-01-19 | キオクシア株式会社 | 圧縮装置及び伸張装置 |
CN113743582B (zh) * | 2021-08-06 | 2023-11-17 | 北京邮电大学 | 基于栈混洗的新型通道混洗方法和装置 |
CN113838505A (zh) * | 2021-08-26 | 2021-12-24 | 季华实验室 | 一种基于cam的内存条目计数电路及内存装置 |
US11848689B2 (en) * | 2022-03-04 | 2023-12-19 | Microsoft Technology Licensing, Llc | Method and apparatus for compression multiplexing for sparse computations |
US20240086392A1 (en) * | 2022-09-14 | 2024-03-14 | Sap Se | Consistency checks for compressed data |
CN115333544B (zh) * | 2022-10-13 | 2023-01-31 | 上海登临科技有限公司 | 一种数据解压缩电路及其方法、芯片及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040260914A1 (en) * | 2003-06-23 | 2004-12-23 | Corey Gee | Data packet arithmetic logic devices and methods |
US20130275839A1 (en) * | 2008-08-13 | 2013-10-17 | Infineon Technologies Ag | Programmable Error Correction Capability for BCH Codes |
US20140075233A1 (en) * | 2012-09-10 | 2014-03-13 | Texas Instruments Incorporated | Customizable Backup And Restore From Nonvolatile Logic Array |
Family Cites Families (91)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5285403A (en) | 1989-12-29 | 1994-02-08 | U.S. Philips Corporation | Arithmetic processing module to be associated with a microprocessor central processing unit |
US5446916A (en) | 1993-03-26 | 1995-08-29 | Gi Corporation | Variable length codeword packer |
US5768629A (en) | 1993-06-24 | 1998-06-16 | Discovision Associates | Token-based adaptive video processing arrangement |
US5499382A (en) | 1993-09-20 | 1996-03-12 | Nusinov; Eugene B. | Circuit and method of bit-packing and bit-unpacking using a barrel shifter |
US5805913A (en) | 1993-11-30 | 1998-09-08 | Texas Instruments Incorporated | Arithmetic logic unit with conditional register source selection |
US5509129A (en) | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
US6016538A (en) | 1993-11-30 | 2000-01-18 | Texas Instruments Incorporated | Method, apparatus and system forming the sum of data in plural equal sections of a single data word |
US6058473A (en) | 1993-11-30 | 2000-05-02 | Texas Instruments Incorporated | Memory store from a register pair conditional upon a selected status bit |
US6055204A (en) * | 1997-04-29 | 2000-04-25 | Texas Instruments Incorporated | Circuits, systems, and methods for re-mapping memory column redundancy |
US6259456B1 (en) | 1997-04-30 | 2001-07-10 | Canon Kabushiki Kaisha | Data normalization techniques |
US5857035A (en) | 1997-05-19 | 1999-01-05 | Hewlett-Packard Company | Arithmetic coding compressor for encoding multiple bit values |
US6084568A (en) * | 1997-11-13 | 2000-07-04 | S3 Incorporated | System and methods for both 2-tap and 3-tap flicker filtering of non-interlaced computer graphics to interlaced lines for television display |
US6490357B1 (en) | 1998-08-28 | 2002-12-03 | Qualcomm Incorporated | Method and apparatus for generating encryption stream ciphers |
US6195026B1 (en) | 1998-09-14 | 2001-02-27 | Intel Corporation | MMX optimized data packing methodology for zero run length and variable length entropy encoding |
CN100391122C (zh) | 1999-07-08 | 2008-05-28 | 三星电子株式会社 | 移动通信系统中用于控制速率匹配的去复用器和复用器的设备和方法 |
US7174047B2 (en) | 2002-03-29 | 2007-02-06 | Matsushita Electric Industrial Co., Ltd. | Single-instruction multiple-data (SIMD)-based algorithms for processing video data |
US7202872B2 (en) | 2003-10-29 | 2007-04-10 | Via Technologies, Inc. | Apparatus for compressing data in a bit stream or bit pattern |
US8223966B2 (en) | 2006-05-10 | 2012-07-17 | Mediatek Inc. | Multiple stream decrypting and decoding systems and related methods thereof |
US7898550B2 (en) | 2006-06-09 | 2011-03-01 | Via Technologies, Inc. | System and method for memory bandwidth compressor |
US8069377B2 (en) * | 2006-06-26 | 2011-11-29 | Micron Technology, Inc. | Integrated circuit having memory array including ECC and column redundancy and method of operating the same |
US8194750B2 (en) | 2006-10-16 | 2012-06-05 | Samsung Electronics Co., Ltd. | System and method for digital communication having a circulant bit interleaver for equal error protection (EEP) and unequal error protection (UEP) |
US8285766B2 (en) * | 2007-05-23 | 2012-10-09 | The Trustees Of Princeton University | Microprocessor shifter circuits utilizing butterfly and inverse butterfly routing circuits, and control circuits therefor |
EP2234315B1 (en) * | 2009-03-27 | 2018-02-14 | Sony Corporation | Division of bit streams to produce spatial paths for multicarrier transmission |
KR102242390B1 (ko) * | 2013-04-08 | 2021-04-20 | 삼성전자주식회사 | 송신 장치, 그의 인터리빙 방법, 수신 장치 및 그의 디인터리빙 방법 |
CN104426630B (zh) * | 2013-08-30 | 2018-04-03 | 中国科学院上海高等研究院 | 一种比特交织编码调制方法及系统 |
US20150161927A1 (en) | 2013-12-05 | 2015-06-11 | Innolux Corporation | Driving apparatus with 1:2 mux for 2-column inversion scheme |
US9978014B2 (en) | 2013-12-18 | 2018-05-22 | Intel Corporation | Reconfigurable processing unit |
US11100420B2 (en) | 2014-06-30 | 2021-08-24 | Amazon Technologies, Inc. | Input processing for machine learning |
US9785565B2 (en) | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
US10216520B2 (en) * | 2014-10-06 | 2019-02-26 | Via Technologies, Inc. | Compressing instruction queue for a microprocessor |
US9418458B2 (en) | 2015-01-05 | 2016-08-16 | Superfish Ltd. | Graph image representation from convolutional neural networks |
US10049322B2 (en) | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
US9805303B2 (en) | 2015-05-21 | 2017-10-31 | Google Inc. | Rotating data for neural network computations |
US9747546B2 (en) | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10438117B1 (en) | 2015-05-21 | 2019-10-08 | Google Llc | Computing convolutions using a neural network processor |
US20160358069A1 (en) | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
EP3104309B1 (en) | 2015-06-10 | 2020-04-01 | Samsung Electronics Co., Ltd. | Spiking neural network with reduced memory access and reduced in-network bandwidth consumption |
US11244225B2 (en) | 2015-07-10 | 2022-02-08 | Samsung Electronics Co., Ltd. | Neural network processor configurable using macro instructions |
US10585848B2 (en) | 2015-10-08 | 2020-03-10 | Via Alliance Semiconductor Co., Ltd. | Processor with hybrid coprocessor/execution unit neural network unit |
EP3705994B1 (en) | 2015-10-28 | 2023-10-04 | Google LLC | Processing computational graphs |
US9904874B2 (en) | 2015-11-05 | 2018-02-27 | Microsoft Technology Licensing, Llc | Hardware-efficient deep convolutional neural networks |
WO2017129325A1 (en) | 2016-01-29 | 2017-08-03 | Fotonation Limited | A convolutional neural network |
NL2016285B1 (en) | 2016-02-19 | 2017-09-20 | Scyfer B V | Device and method for generating a group equivariant convolutional neural network. |
FR3050846B1 (fr) | 2016-04-27 | 2019-05-03 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Dispositif et procede de distribution de donnees de convolution d'un reseau de neurones convolutionnel |
US11055063B2 (en) | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
EP3455684B1 (en) | 2016-05-09 | 2024-07-17 | Strong Force Iot Portfolio 2016, LLC | Methods and systems for the industrial internet of things |
JP6890615B2 (ja) | 2016-05-26 | 2021-06-18 | タータン エーアイ リミテッド | ディープニューラルネットワークについての加速器 |
CN105913823A (zh) | 2016-06-23 | 2016-08-31 | 武汉华星光电技术有限公司 | 高解析度解复用器驱动电路 |
KR20180012439A (ko) | 2016-07-27 | 2018-02-06 | 삼성전자주식회사 | 회선 신경망에서 가속기 및 이의 동작 방법 |
US10528864B2 (en) | 2016-08-11 | 2020-01-07 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US10802992B2 (en) | 2016-08-12 | 2020-10-13 | Xilinx Technology Beijing Limited | Combining CPU and special accelerator for implementing an artificial neural network |
US10621486B2 (en) | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
US10489680B2 (en) | 2016-10-04 | 2019-11-26 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
US9940534B1 (en) | 2016-10-10 | 2018-04-10 | Gyrfalcon Technology, Inc. | Digital integrated circuit for extracting features out of an input image based on cellular neural networks |
US9959498B1 (en) | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
US11003985B2 (en) | 2016-11-07 | 2021-05-11 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
KR102706985B1 (ko) | 2016-11-09 | 2024-09-13 | 삼성전자주식회사 | 인공 신경망의 연산 처리 경로 관리 방법 |
US10733505B2 (en) | 2016-11-10 | 2020-08-04 | Google Llc | Performing kernel striding in hardware |
US20180150256A1 (en) | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US20180181864A1 (en) | 2016-12-27 | 2018-06-28 | Texas Instruments Incorporated | Sparsified Training of Convolutional Neural Networks |
US10521488B1 (en) | 2016-12-30 | 2019-12-31 | X Development Llc | Dynamic partitioning |
US12118451B2 (en) | 2017-01-04 | 2024-10-15 | Stmicroelectronics S.R.L. | Deep convolutional network heterogeneous architecture |
CN106685887B (zh) * | 2017-01-12 | 2020-04-07 | 重庆邮电大学 | 一种用于fpga的ufmc发射机的频域实现方法 |
US10096134B2 (en) | 2017-02-01 | 2018-10-09 | Nvidia Corporation | Data compaction and memory bandwidth reduction for sparse neural networks |
JP6794854B2 (ja) | 2017-02-02 | 2020-12-02 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10067509B1 (en) | 2017-03-10 | 2018-09-04 | TuSimple | System and method for occluding contour detection |
US10387298B2 (en) | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
US10860760B2 (en) | 2017-04-21 | 2020-12-08 | Intel Corporation | Systems and methods for implementing learned parameter systems on a programmable integrated circuit |
US10409614B2 (en) | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
US10410098B2 (en) | 2017-04-24 | 2019-09-10 | Intel Corporation | Compute optimizations for neural networks |
US10706147B1 (en) | 2017-05-19 | 2020-07-07 | Amazon Technologies, Inc. | Mitigating side-channel attacks via shared cache |
US10990648B2 (en) | 2017-08-07 | 2021-04-27 | Intel Corporation | System and method for an optimized winograd convolution accelerator |
US10600147B2 (en) | 2017-08-22 | 2020-03-24 | Intel Corporation | Efficient memory layout for enabling smart data compression in machine learning environments |
US10699160B2 (en) | 2017-08-23 | 2020-06-30 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
US11803377B2 (en) | 2017-09-08 | 2023-10-31 | Oracle International Corporation | Efficient direct convolution using SIMD instructions |
US20190087713A1 (en) | 2017-09-21 | 2019-03-21 | Qualcomm Incorporated | Compression of sparse deep convolutional network weights |
EP3460724A1 (en) | 2017-09-22 | 2019-03-27 | Kabushiki Kaisha Toshiba | Operation device and operation system |
US10366322B2 (en) | 2017-10-06 | 2019-07-30 | DeepCube LTD. | System and method for compact and efficient sparse neural networks |
IL299565B2 (en) | 2017-10-16 | 2024-07-01 | Illumina Inc | Classifies pathogenic variants using a recurrent neural network |
GB2560600B (en) | 2017-11-06 | 2020-03-04 | Imagination Tech Ltd | Nueral Network Hardware |
EP3480747A1 (en) | 2017-11-06 | 2019-05-08 | Imagination Technologies Limited | Single plane filters |
US10721114B2 (en) | 2017-11-23 | 2020-07-21 | Huawei Technologies Co., Ltd. | Method and system for symbol sequence generation and transmission for non-orthogonal multiple access transmission |
US11010658B2 (en) | 2017-12-22 | 2021-05-18 | Intel Corporation | System and method for learning the structure of deep convolutional neural networks |
EP3506084B1 (en) | 2017-12-28 | 2020-09-23 | IMEC vzw | System and method for tunable precision of dot-product engine |
US10459876B2 (en) | 2018-01-31 | 2019-10-29 | Amazon Technologies, Inc. | Performing concurrent operations in a processing element |
US11205115B1 (en) | 2018-04-20 | 2021-12-21 | Perceive Corporation | Neural network inference circuit |
US20210125046A1 (en) | 2018-05-08 | 2021-04-29 | The Governing Council Of The University Of Toronto | Neural network processing element |
US12099912B2 (en) | 2018-06-22 | 2024-09-24 | Samsung Electronics Co., Ltd. | Neural processor |
US20200210517A1 (en) | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
US11671111B2 (en) | 2019-04-17 | 2023-06-06 | Samsung Electronics Co., Ltd. | Hardware channel-parallel data compression/decompression |
US20210011732A1 (en) | 2019-07-09 | 2021-01-14 | MemryX Inc. | Matrix Data Reuse Techniques in Processing Systems |
-
2020
- 2020-04-07 US US16/842,662 patent/US11671111B2/en active Active
- 2020-04-13 US US16/847,631 patent/US11146283B2/en active Active
- 2020-04-13 US US16/847,645 patent/US11152952B2/en active Active
- 2020-04-13 US US16/847,642 patent/US11664819B2/en active Active
- 2020-04-16 CN CN202010298622.2A patent/CN111835703B/zh active Active
- 2020-04-16 KR KR1020200046184A patent/KR20200122253A/ko not_active Application Discontinuation
- 2020-04-16 TW TW109112724A patent/TWI840550B/zh active
- 2020-04-17 EP EP20170105.9A patent/EP3726733A1/en not_active Withdrawn
-
2021
- 2021-09-02 US US17/465,841 patent/US11716095B2/en active Active
-
2022
- 2022-10-19 US US17/969,671 patent/US12015429B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040260914A1 (en) * | 2003-06-23 | 2004-12-23 | Corey Gee | Data packet arithmetic logic devices and methods |
TW200509612A (en) * | 2003-06-23 | 2005-03-01 | Intel Corp | Data packet arithmetic logic devices and methods |
US20130275839A1 (en) * | 2008-08-13 | 2013-10-17 | Infineon Technologies Ag | Programmable Error Correction Capability for BCH Codes |
US20140075233A1 (en) * | 2012-09-10 | 2014-03-13 | Texas Instruments Incorporated | Customizable Backup And Restore From Nonvolatile Logic Array |
Also Published As
Publication number | Publication date |
---|---|
US20200336153A1 (en) | 2020-10-22 |
US12015429B2 (en) | 2024-06-18 |
US20200336273A1 (en) | 2020-10-22 |
US11716095B2 (en) | 2023-08-01 |
CN111835703A (zh) | 2020-10-27 |
EP3726733A1 (en) | 2020-10-21 |
US20200336272A1 (en) | 2020-10-22 |
US20200336154A1 (en) | 2020-10-22 |
KR20200122253A (ko) | 2020-10-27 |
US20210399740A1 (en) | 2021-12-23 |
US11664819B2 (en) | 2023-05-30 |
TW202112075A (zh) | 2021-03-16 |
US11146283B2 (en) | 2021-10-12 |
US20230047025A1 (en) | 2023-02-16 |
US11671111B2 (en) | 2023-06-06 |
US11152952B2 (en) | 2021-10-19 |
CN111835703B (zh) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI840550B (zh) | 多通道資料包裝器及多通道資料解包裝器 | |
US11211944B2 (en) | Mixed-precision compression with random access | |
US10051285B2 (en) | Data compression using spatial decorrelation | |
EP3468200B1 (en) | Data compression | |
US9413387B2 (en) | Data compression using entropy encoding | |
JP6647340B2 (ja) | 改善されたファイルの圧縮及び暗号化 | |
CN118249816A (zh) | 数据处理方法、装置、众核芯片和存储介质 |