WO2020114283A1 - 数据处理方法及装置 - Google Patents

数据处理方法及装置 Download PDF

Info

Publication number
WO2020114283A1
WO2020114283A1 PCT/CN2019/121056 CN2019121056W WO2020114283A1 WO 2020114283 A1 WO2020114283 A1 WO 2020114283A1 CN 2019121056 W CN2019121056 W CN 2019121056W WO 2020114283 A1 WO2020114283 A1 WO 2020114283A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
compressed
compression
circuit
decompression
Prior art date
Application number
PCT/CN2019/121056
Other languages
English (en)
French (fr)
Inventor
王秉睿
梁军
刘少礼
何皓源
韩栋
曾洪博
Original Assignee
上海寒武纪信息科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CN201811496253.7A external-priority patent/CN111290697B/zh
Priority claimed from CN201811497071.1A external-priority patent/CN111294057A/zh
Priority claimed from CN201811496258.XA external-priority patent/CN111290698B/zh
Priority claimed from CN201811496284.2A external-priority patent/CN111294056B/zh
Priority claimed from CN201811580866.9A external-priority patent/CN111353592B/zh
Priority claimed from CN201811581483.3A external-priority patent/CN111353593A/zh
Priority claimed from CN201811581510.7A external-priority patent/CN111353594B/zh
Priority claimed from CN201811607224.3A external-priority patent/CN111384958B/zh
Priority claimed from CN201811609579.6A external-priority patent/CN111385580A/zh
Priority claimed from CN201811620288.7A external-priority patent/CN111384969B/zh
Priority claimed from CN201811620302.3A external-priority patent/CN111382849B/zh
Priority claimed from CN201811625704.2A external-priority patent/CN111382853B/zh
Priority claimed from CN201811628184.0A external-priority patent/CN111384968B/zh
Priority claimed from CN201811622492.2A external-priority patent/CN111381874B/zh
Priority claimed from CN201811628206.3A external-priority patent/CN111384964B/zh
Priority claimed from CN201811628198.2A external-priority patent/CN111384962B/zh
Priority claimed from CN201811625524.4A external-priority patent/CN111384961B/zh
Priority claimed from CN201811628201.0A external-priority patent/CN111384963B/zh
Priority claimed from CN201811625442.XA external-priority patent/CN111384966B/zh
Priority claimed from CN201811628258.0A external-priority patent/CN111382856B/zh
Priority claimed from CN201811623531.0A external-priority patent/CN111384960B/zh
Priority claimed from CN201811625654.8A external-priority patent/CN111384967B/zh
Priority claimed from CN201811625000.5A external-priority patent/CN111381878A/zh
Priority claimed from CN201811628203.XA external-priority patent/CN111382855B/zh
Priority claimed from CN201811628245.3A external-priority patent/CN111384965B/zh
Priority claimed from CN201811625579.5A external-priority patent/CN111382852B/zh
Priority claimed from CN201811623225.7A external-priority patent/CN111381876B/zh
Priority claimed from CN201811623548.6A external-priority patent/CN111381877B/zh
Application filed by 上海寒武纪信息科技有限公司 filed Critical 上海寒武纪信息科技有限公司
Publication of WO2020114283A1 publication Critical patent/WO2020114283A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Definitions

  • the application number is 201811623531.0, the name is "decoding method, processor, decoding device, and storage medium”. If you applied on December 28, 2018, the application number is 201811620302.3, and the name is “data compression” Method, processor, data compression device and storage medium", applied on December 28, 2018, the application number is 201811625524.4, the name is “data compression and decompression device and data compression method", applied on December 28, 2018 , The application number is 201811628245.3, the name is “data compression and decompression device and data decompression method", applied on December 28, 2018, the application number is 201811628203.X, the name is “data processing device, method, chip and electronic equipment” , Applied on December 28, 2018, the application number is 201811625000.5, the name is “data processing device, method, chip and electronic equipment", applied on December 28, 2018, the application number is 201811628258.0, the name is “data Processing device, method, chip and electronic equipment", applied on December 28, 2018, the application number is 201 811625579.5, titled "Data Processing Device,
  • the application number is 201811628184.0, the name is “data compression and decompression device and data decompression” Method", applied on December 28, 2018, the application number is 201811628206.3, the name is “data compression and decompression device and data compression method”, applied on December 28, 2018, the application number is 201811628201.0, the name is “data “Compression and decompression device and data decompression method”, applied on December 28, 2018, the application number is 201811623225.7, the name is “transmission instruction decoding method, data movement method, decoder and data access device", in 2018 For the application on December 28, the application number is 201811622492.2, the name is “compression instruction decoding method, data processing method, decoder, and data processing device", and the application was applied on December 28, 2018, the application number is 201811623548.6, the name “Decompression instruction decoding method, data processing method, decoder and data processing device", applied on December 27, 2018, the application number is 201811607224.3, the name is “data compression device and related products", in 2018 The priority of the Chinese patent application with the
  • This application relates to the field of information technology, and in particular to a data processing method and device.
  • AI artificial intelligence
  • data processing devices can perform arithmetic processing on a large amount of data after compression to reduce the amount of data, reduce storage space, and improve transmission, storage, and processing efficiency.
  • the data size after partial compression may be larger than the original data size before compression, which results in a large amount of operation for compression processing; in addition, the data processing device may also store a large number of data streams for data exchange during operation processing
  • the existing data processing device cannot store data in a compressed format, resulting in low versatility of the data processing device.
  • a data compression method including:
  • each data block of the data to be compressed to obtain a data header and a data body corresponding to each data block, wherein each data header includes a corresponding data body start address and data length, and The data body includes the encoded data of the corresponding data block before compression;
  • a header segment of compressed data is obtained according to each of the obtained data headers, a data segment of compressed data is obtained according to each of the obtained data bodies, and compressed data is obtained according to the header segment of the compressed data and the data segment of the compressed data.
  • the dividing the data to be compressed into multiple data blocks according to the characteristics of the data to be compressed includes:
  • the data to be compressed is divided into multiple data blocks according to one or more of the total data size of the data to be compressed, the distribution characteristics of the data, and the importance of the data.
  • the importance of the data is determined according to the frequency of occurrence of the data and the size of the data.
  • the dividing the data to be compressed into multiple data blocks according to the characteristics of the data to be compressed includes: dividing the data to be compressed into multiple data blocks according to a preset value.
  • the header segment of compressed data is obtained according to each of the obtained data headers
  • the data segment of compressed data is obtained according to each of the obtained data bodies
  • the header segment of the compressed data and the Compressed data is obtained from compressed data segments, including:
  • the header segment of compressed data is obtained according to each of the obtained data headers
  • the data segment of compressed data is obtained according to each of the obtained data bodies
  • the header segment of the compressed data and the Compressed data is obtained from compressed data segments, including:
  • the first preset placement format includes: one-dimensional compact, two-dimensional compact, or any dimension compact.
  • An encoding circuit includes a data division circuit and a compression and decompression circuit connected to each other,
  • the data dividing circuit is configured to divide the data to be compressed into multiple data blocks according to the characteristics of the data to be compressed;
  • a compression and decompression circuit is used to compress each data block of the data to be compressed to obtain a data header and a data body corresponding to each data block, wherein each of the data headers includes a start address of the corresponding data body 3.
  • Data length, the data body includes the encoded data of the corresponding data block before compression; the header segment of the compressed data is obtained according to each of the obtained data headers, and the data segment of the compressed data is obtained according to each of the obtained data bodies, according to Compressed data is obtained from the header section of the compressed data and the data section of the compressed data.
  • An arithmetic device comprising: a master arithmetic unit and a plurality of slave arithmetic units connected to the master arithmetic unit, the master arithmetic unit and the plurality of slave arithmetic units are provided with the above-mentioned coding circuits,
  • the master computing unit is configured to receive input data, and use the above-mentioned data compression method to compress the input data in blocks to obtain compressed data, and transmit the obtained compressed data to the slave computing unit;
  • the plurality of slave operation units are used to decompress the compressed data to obtain decompressed data, and use the decompressed data to perform multiplication operations to obtain an intermediate result, and transmit the intermediate result to the master operation unit;
  • the main operation unit is also used to perform accumulation and activation operations using the intermediate results to obtain operation results.
  • it further includes a branch operation unit, the master operation unit is connected to one or more branch operation units, and the branch operation unit is connected to one or more slave operation units,
  • the branch computing unit is used to forward data between the master computing unit and the slave computing unit.
  • the above data compression method, coding circuit and operation device first divide the data to be compressed into blocks, and then compress each data block into blocks to obtain a data header and a data body corresponding to each data block, and then according to the obtained data
  • the data header and data body corresponding to the block obtain the header segment and the data segment of the compressed data, and then the compressed data.
  • the data to be compressed is compressed in blocks to achieve the purpose of compressing each data block in parallel to improve the compression efficiency.
  • a data decompression method including:
  • the compressed data includes a header segment and a data segment corresponding to the header segment, the header segment includes a plurality of data headers, the data segment includes a plurality of data bodies corresponding to the data header, the data The header includes the start address and data length of the corresponding data body, and the data body includes the encoded data of the corresponding data block before compression;
  • the data block to be decompressed includes a data header and a corresponding data body;
  • the second preset placement format is obtained according to the positional relationship between the data blocks included in the compressed data before compression.
  • the compressed data is decomposed to obtain multiple data blocks to be decompressed, including:
  • the data head and the data body include an identification bit identifying the correspondence relationship, the data head and the data body in each data block to be decompressed are determined according to the value of the identification bit.
  • the preset compression and decompression algorithm includes: any one or a combination of Huffman coding, run-length coding, and LZ77.
  • a data decompression method including:
  • the compressed data includes a header segment and a data segment corresponding to the header segment, the header segment includes a plurality of data headers, the data segment includes a plurality of data bodies corresponding to the data header, the data The header includes the start address and data length of the corresponding data body, and the data body includes the encoded data of the corresponding data block before compression;
  • the data block to be decompressed includes a data header and a corresponding data body;
  • the grouping the obtained plurality of data blocks to be decompressed according to the number of encoding circuits to obtain a plurality of data groups to be decompressed includes:
  • the compressed data is decomposed to obtain multiple data blocks to be decompressed, including:
  • the data head and the data body include an identification bit identifying the correspondence relationship, the data head and the data body in each data block to be decompressed are determined according to the value of the identification bit.
  • the second preset placement format is obtained according to the positional relationship between the data blocks included in the compressed data before compression.
  • the arrangement format of each data body in the data segment of the compressed data is one-dimensional compact, two-dimensional compact, or compact in any dimension.
  • An encoding circuit includes: a data division circuit and a compression and decompression circuit connected to each other,
  • the data dividing circuit is used to obtain compressed data, the compressed data includes a header segment and a data segment with the header segment, the header segment includes a plurality of data headers, and the data segment includes a plurality of data headers
  • the data header includes the start address and data length of the corresponding data body
  • the data body includes the encoded data of the corresponding data block before compression
  • the compressed data is decomposed to obtain multiple data blocks to be decompressed
  • the data block to be decompressed includes a data header and a corresponding data body;
  • the compression and decompression circuit is used to decompress each data block to be decompressed using a preset compression and decompression algorithm to obtain a decompressed data block; and place the decompressed data block according to a second preset placement format to obtain decompressed data.
  • the above data decompression method and encoding circuit first decompose the compressed data to obtain the data block to be decompressed containing the corresponding data head and data body, and then decompress each data block to be decompressed using the traditional decompression method to obtain the decompressed data block, and finally Decompress the data block to obtain the decompressed data.
  • the method converts the compressed data including the header section and the data section into data that can be decompressed by the traditional decompression method, and the implementation is simple.
  • the method also decompresses the compressed data in blocks, which can realize parallel decompression and improve the decompression efficiency.
  • a data compression method including:
  • each data block in each of the to-be-compressed data Compress each data block in each of the to-be-compressed data to obtain a data header and a data body corresponding to each data block in each of the to-be-compressed data, where each of the data headers includes the corresponding data body Starting address and data length, the data body contains the encoded data of the corresponding data block before compression;
  • the header section of the compressed data is obtained according to all the obtained data headers
  • the data section of the compressed data is obtained according to all the obtained data bodies
  • the compressed data is obtained according to the header section of the compressed data and the data section of the compressed data.
  • the dividing the data to be operated into multiple groups according to the number of coding circuits to obtain multiple data to be compressed includes:
  • the data to be operated is divided into m groups, where m is an integer multiple of n.
  • each of the plurality of data to be compressed is divided into a plurality of data blocks according to the characteristics of the data to be compressed, including:
  • the data to be compressed is divided into multiple data blocks according to one or more of the total data size, data distribution characteristics, and the importance of the data.
  • the importance of the data is determined according to the frequency of occurrence of the data and the size of the data.
  • the dividing each of the plurality of data to be compressed into multiple data blocks according to the characteristics of the data to be compressed includes:
  • the header segment of the compressed data is obtained according to all the obtained data headers
  • the data segment of the compressed data is obtained according to all the obtained data bodies
  • the header segment and the compressed data of the compressed data are obtained
  • the compressed data of the data segment includes:
  • the header segment of the compressed data is obtained according to all the obtained data headers
  • the data segment of the compressed data is obtained according to all the obtained data bodies
  • the header segment and the compressed data of the compressed data are obtained
  • the compressed data of the data segment includes:
  • the first preset placement format includes: one-dimensional compact, two-dimensional compact, or any dimension compact.
  • An encoding circuit, a data division circuit and a compression and decompression circuit connected to each other,
  • the data dividing circuit is used to divide the data to be operated into multiple groups according to the number of coding circuits to obtain multiple data to be compressed; according to the characteristics of the data to be compressed, each of the multiple data to be compressed The data to be compressed is divided into multiple data blocks;
  • the compression and decompression circuit is configured to compress each data block in each of the data to be compressed to obtain a data header and a data body corresponding to each data block in each of the data to be compressed, wherein each of the The data header includes the start address and data length of the corresponding data body, and the data body includes the encoded data of the corresponding data block before compression; the header section of the compressed data is obtained from all the obtained data headers, and the The data body obtains the data segment of the compressed data, and obtains the compressed data according to the header segment of the compressed data and the data segment of the compressed data.
  • An arithmetic device characterized in that it includes a master arithmetic unit and a plurality of slave arithmetic units connected to the master arithmetic unit, and the encoding circuit is provided on the master arithmetic unit and the plurality of slave arithmetic units,
  • the master computing unit is configured to receive input data and compress the input data using the above-mentioned data compression method to obtain multiple compressed data; and send the obtained compressed data to multiple slave computing units;
  • the multiple slave operation units are used to decompress the received compressed data to obtain decompressed data, and use the decompressed data to perform multiplication operations to obtain an intermediate result, and transmit the intermediate result to the master operation unit;
  • the main operation unit is also used to perform accumulation and activation operations using the intermediate results to obtain operation results.
  • the above data compression method, encoding circuit and arithmetic device first group the data to be compressed according to the number of encoding circuits, then divide the data to be compressed according to the characteristics of the data, then compress each data block in blocks, and according to the obtained
  • the data header and data body corresponding to the data block obtain the header segment and the data segment of the compressed data, and then obtain the compressed data.
  • This method achieves the purpose of compressing each data block in parallel to improve the compression efficiency by grouping and compressing the data to be compressed in blocks.
  • a data access method includes:
  • read and write parameters and obtain read and write control instructions according to the read and write parameters, where the read and write parameters include: read and write start address, step size, read and write operations, and the number of single read and write blocks;
  • read and write control instructions read and write data to be accessed.
  • a data processing method including:
  • a data access circuit including interconnected read-write control circuit, read-write circuit and memory,
  • the read-write control circuit is used to divide the data to be accessed into multiple data blocks, and place each data block in the data to be accessed according to a preset format
  • the memory is used to store each data block in the data to be accessed arranged in a preset format
  • the read-write control circuit is also used to generate read-write parameters and obtain read-write control instructions according to the read-write parameters, wherein the read-write parameters include: read-write start address, step size, read-write operation times and single Number of read and write blocks;
  • the read-write circuit is used to read and write the data to be accessed according to the read-write control instruction.
  • An arithmetic device includes a master arithmetic unit and a plurality of slave arithmetic units, the plurality of slave arithmetic units are respectively connected to the master arithmetic unit, and the master arithmetic unit is provided with the above data access circuit,
  • the master computing unit is used to read the input data using the data access method described above, perform pre-processing on the input data, and transfer data with the plurality of slave computing units;
  • the plurality of slave operation units configured to perform intermediate operations in parallel using data transmitted from the master operation unit to obtain a plurality of intermediate results, and transmit the plurality of intermediate results to the master operation unit;
  • the master computing unit is also used to perform subsequent processing on multiple intermediate results transmitted from the computing unit.
  • the above-mentioned data access method, data processing method, data access circuit and arithmetic device generate the data block in the data to be accessed purposely by generating read-write parameters. It is possible to realize that it is not necessary to access the data blocks in the stored data according to the storage order, and in the data access method in the above embodiment, the access parameters according to the two-dimensional manner are realized by introducing the access parameters such as the step size and the number of single read and write blocks Data, which provides great convenience for processing data with two-dimensional similarity such as natural images and feature maps.
  • a data processing method is applied to a processor.
  • the method includes the following steps:
  • the neural network is retrained until the forward operation result meets the preset requirement.
  • the method further includes the following steps:
  • the forward operation result meets the preset requirement.
  • retraining the neural network until the forward operation result meets the preset requirement includes:
  • the step of calculating the loss function according to the forward operation result and the preset target operation result includes:
  • the loss function is calculated according to the decompressed forward operation result and the preset target operation result.
  • the step of retraining the neural network until the result of the forward operation meets the preset requirement includes:
  • the step of calculating the loss function according to the forward operation result and the preset target operation result includes:
  • the loss function is determined according to the convergence result and the target operation result.
  • the processor includes at least two processing circuits, and at least two of the processing circuits include a master processing circuit and a slave processing circuit; the forward operation is performed according to the second input data to obtain The steps of the forward calculation result include:
  • the master processing circuit performs lossy compression coding on the weight data of the second input data, and transmits the weight data in a compressed state to each of the slave processing circuits;
  • Each of the slave processing circuits respectively decompresses the received weight data in a compressed state, and performs a forward operation according to the decompressed weight data to obtain a first intermediate result, and converts the first The intermediate result is subjected to lossy compression coding and then transmitted to the main processing circuit;
  • the main processing circuit decompresses the first intermediate result transmitted from each of the slave processing circuits, and obtains the forward operation result according to the decompressed first intermediate result.
  • the method further includes the following steps:
  • the main processing circuit calculates a loss function according to the forward operation result and a preset target operation result
  • the main processing circuit determines that the value of the loss function is greater than or equal to a preset target accuracy, it is determined that the forward operation result does not meet the preset requirement;
  • the main processing circuit determines that the value of the loss function is less than the preset target accuracy, it is determined that the forward operation result meets the preset requirement.
  • retraining the neural network until the forward operation result meets the preset requirement includes:
  • the main processing circuit determines that the value of the loss function is greater than or equal to the target accuracy, the main processing circuit performs lossy compression encoding on the loss function, and encodes The loss function in the compressed state is transmitted to each of the slave processing circuits;
  • Each of the slave processing circuits respectively decompresses the received loss function in a compressed state, and performs a reverse operation according to the decompressed loss function to obtain a second intermediate result, and converts the second intermediate result After lossy compression coding, it is transmitted to the main processing circuit;
  • the main processing circuit decompresses each second intermediate result transmitted from the processing circuit, and obtains the gradient value according to the decompressed second intermediate result;
  • the main processing circuit updates the weight data of the second input data according to the gradient value, and then returns to the main processing circuit to perform lossy compression on the weight data of the second input data and to compress The weight data of the state is transmitted to each step of the secondary processing circuit until the value of the loss function is less than the preset target accuracy.
  • the method further includes the following steps:
  • the step of performing lossy compression coding on the third input data to obtain the first input data includes:
  • the lossy compression coding includes one or more of predictive coding, pulse code modulation, interpolation, extrapolation, transform coding, subband coding, hybrid coding, vector quantization, and fractal coding The combination.
  • a data processing device includes:
  • An obtaining module obtaining first input data of the neural network, wherein the first input data is data in a compressed state obtained after lossy compression coding;
  • a decompression module configured to decompress the first input data to obtain second input data of the neural network
  • the training module is configured to perform a forward operation according to the second input data to obtain a forward operation result; if the forward operation result does not meet the preset requirements, retrain the neural network until the positive The calculation result meets the preset requirements.
  • a processor including:
  • the read-write circuit is used to obtain the first input data of the neural network, wherein the first input data is data in a compressed state obtained after lossy compression coding;
  • a decompression circuit the decompression circuit is connected to the read-write circuit, and used to decompress the first input data to obtain the second input data of the neural network;
  • An operation circuit the operation circuit is connected to the decompression circuit, and is used to perform a forward operation according to the second input data to obtain a forward operation result; if the forward operation result does not meet the preset requirements, The neural network performs retraining until the forward operation result meets the preset requirements.
  • the arithmetic circuit is also used to:
  • the arithmetic circuit when it is determined that the forward operation result does not meet the preset requirement, the arithmetic circuit retrains the neural network until the forward operation result meets the preset requirement,
  • the arithmetic circuit is used for:
  • the arithmetic circuit is used to perform a forward operation according to the second input data to obtain a forward operation result until the value of the loss function is less than the preset target accuracy.
  • the processor further includes a compression circuit, the compression circuit is connected to the arithmetic circuit and the read-write circuit;
  • the compression circuit is used to perform lossy compression coding on the forward operation result
  • the decompression circuit is also used to decompress the lossy compression encoded forward operation result
  • the operation circuit is also used to calculate a loss function according to the decompressed forward operation result and the preset target operation result.
  • the operation circuit is further used to perform a reverse operation according to the loss function to obtain a gradient value when the value of the loss function is greater than or equal to a preset target accuracy;
  • the compression circuit is also used to perform lossy compression coding on the gradient value
  • the decompression circuit is also used to decompress the gradient value after the lossy compression coding
  • the arithmetic circuit is also used to update the weight data of the neural network according to the gradient value obtained after the decompression;
  • the compression circuit is also used to perform lossy compression coding on the weight data
  • the decompression circuit is also used to decompress the lossy compression encoded weight data
  • the arithmetic circuit is used to perform a forward operation according to the second input data to obtain a forward operation result until the value of the loss function is less than the preset target accuracy.
  • the arithmetic circuit includes a master processing circuit and at least one slave processing circuit, each of the slave processing circuits is connected to the master processing circuit; a third compression circuit is provided on the master processing circuit And a third decompression circuit; each of the slave processing circuits is provided with a fourth decompression circuit and a fourth compression circuit;
  • the third compression circuit is used to perform lossy compression coding on the weight data of the second input data, and transmit the weight data in a compressed state to each of the fourth decompression circuits;
  • Each of the fourth decompression circuits is used to decompress the received weight data in a compressed state
  • Each of the slave processing circuits is used to perform a forward operation according to the decompressed weight data to obtain a first intermediate result, and each of the fourth compression circuits is used to perform a corresponding operation on the corresponding first intermediate result.
  • Lossy compression coding
  • the third decompression circuit is used to decompress each first intermediate result transmitted from the processing circuit, and the main processing circuit is used to obtain the forward operation result according to the decompressed first intermediate result.
  • the main processing circuit is further used to calculate a loss function according to the forward operation result and a preset target operation result;
  • the main processing circuit determines that the value of the loss function is greater than or equal to a preset target accuracy, it is determined that the forward operation result does not meet the preset requirement;
  • the main processing circuit determines that the value of the loss function is less than the preset target accuracy, it is determined that the forward operation result meets the preset requirement.
  • the third compression circuit when the main processing circuit determines that the value of the loss function is greater than or equal to the target accuracy, the third compression circuit is further used to perform lossy compression encoding on the loss function, and Transmitting the loss function in the compressed state obtained after the lossy compression encoding to each of the fourth decompression circuits;
  • Each of the fourth decompression circuits is used to decompress the received loss function in a compressed state
  • Each of the slave processing circuits is used to perform a reverse operation according to the decompressed loss function to obtain a second intermediate result
  • Each of the fourth compression circuits is used to transmit the second intermediate result to lossy compression coding and then transmitted to the third decompression circuit; the third decompression circuit is also used to Decompress the second intermediate result;
  • the main processing circuit is further used to obtain the gradient value according to the decompressed second intermediate result
  • the main processing circuit updates the weight data of the second input data according to the gradient value, and thereafter, the main processing circuit is used to perform lossy compression on the weight data of the second input data, and the The weight data of the compressed state is transmitted to each of the slave processing circuits until the value of the loss function is less than the preset target accuracy.
  • the compression circuit, the third compression circuit, and the fourth compression circuit of the processor each include a first compression ratio determination module and at least one compression module, and each of the compression modules is arranged in parallel. Each of the compression modules is connected to the first compression ratio determination module;
  • the first compression rate determining module is used to determine a target compression rate according to the preset target accuracy, and select a target compression module from at least one of the compression modules according to the target compression rate;
  • Each compression module is used to perform lossy compression coding according to different compression rates.
  • the decompression circuit, the third decompression circuit, and the fourth decompression circuit of the processor all include a second compression ratio determination module and at least one decompression module, at least one of the decompression modules is provided in parallel, each The decompression modules are all connected to the second compression ratio determination module;
  • the second compression ratio determining module is used to select a target decompression module from at least one of the decompression modules according to the target compression ratio;
  • Each decompression module is used to decompress data with different compression ratios.
  • the lossy compression coding includes one or more of predictive coding, pulse code modulation, interpolation, extrapolation, transform coding, subband coding, hybrid coding, vector quantization, and fractal coding The combination.
  • a computer-readable storage medium on which a computer program is stored characterized in that when the computer program is executed by a processor, the steps of the method described in any one of the above are implemented.
  • the above data processing method, device, processor and storage medium obtain the first input data in a compressed state obtained after lossy compression, and decompress the first input data, and according to the second obtained after decompression
  • the input data is subjected to a forward operation.
  • the neural network can be retrained until the forward operation result of the neural network meets the preset requirements.
  • the second input data retrains the neural network to reduce the data access overhead during neural network processing, which can improve the performance of the processor.
  • the neural network can be retrained to compensate for the accuracy of the lossy compression encoding. Ensure the accuracy of the retrained neural network, so that the reliability and accuracy of the operation can be guaranteed.
  • a data processing method is applied to a processor.
  • the method includes the following steps:
  • the neural network is trained until the forward operation result meets the preset requirement.
  • the method further includes the following steps:
  • the forward operation result meets the preset requirement.
  • the step of training the neural network until the forward operation result meets the preset requirement includes:
  • the step of calculating the loss function according to the forward operation result and the preset target operation result includes:
  • the loss function is calculated according to the decompressed forward operation result and the preset target operation result.
  • the step of training the neural network until the forward operation result meets the preset requirement includes:
  • the step of calculating the loss function according to the forward operation result and the preset target operation result includes:
  • the loss function is determined according to the convergence result and the target operation result.
  • the processor includes at least two processing circuits, and at least two of the processing circuits include a master processing circuit and a slave processing circuit; the forward operation is performed according to the second input data to obtain The steps of the forward calculation result include:
  • the master processing circuit performs lossy compression coding on the weight data of the second input data, and transmits the weight data in a compressed state to each of the slave processing circuits;
  • Each of the slave processing circuits respectively decompresses the received weight data in a compressed state, and performs a forward operation according to the decompressed weight data to obtain a first intermediate result, and converts the first The intermediate result is subjected to lossy compression coding and then transmitted to the main processing circuit;
  • the main processing circuit decompresses the first intermediate result transmitted from each of the slave processing circuits, and obtains the forward operation result according to the decompressed first intermediate result.
  • the method further includes the following steps:
  • the main processing circuit calculates a loss function according to the forward operation result and a preset target operation result
  • the main processing circuit determines that the value of the loss function is greater than or equal to a preset target accuracy, it is determined that the forward operation result does not meet the preset requirement;
  • the main processing circuit determines that the value of the loss function is less than the preset target precision, it is determined that the forward operation result meets the preset requirement.
  • the neural network is trained until the forward operation result meets the preset requirement, including:
  • the main processing circuit determines that the value of the loss function is greater than or equal to the target accuracy, the main processing circuit performs lossy compression encoding on the loss function, and encodes The loss function in the compressed state is transmitted to each of the slave processing circuits;
  • Each of the slave processing circuits respectively decompresses the received loss function in a compressed state, and performs a reverse operation according to the decompressed loss function to obtain a second intermediate result, and converts the second intermediate result After lossy compression coding, it is transmitted to the main processing circuit;
  • the main processing circuit decompresses each second intermediate result transmitted from the processing circuit, and obtains the gradient value according to the decompressed second intermediate result;
  • the main processing circuit updates the weight data of the second input data according to the gradient value, and then returns to the main processing circuit to perform lossy compression on the weight data of the second input data and to compress The weight data of the state is transmitted to each of the steps of the secondary processing circuit until the value of the loss function is less than the preset target accuracy.
  • the method further includes the following steps:
  • the step of performing lossy compression coding on the third input data to obtain the first input data includes:
  • the lossy compression coding includes one or more of predictive coding, pulse code modulation, interpolation, extrapolation, transform coding, subband coding, hybrid coding, vector quantization, and fractal coding The combination.
  • a data processing device includes:
  • An obtaining module obtaining first input data of the neural network, wherein the first input data is data in a compressed state obtained after lossy compression coding;
  • a decompression module configured to decompress the first input data to obtain second input data of the neural network
  • a training module configured to perform a forward operation according to the second input data to obtain a forward operation result; if the forward operation result does not meet the preset requirements, train the neural network until the forward direction The operation result meets the preset requirements.
  • a processor including:
  • the read-write circuit is used to obtain the first input data of the neural network, wherein the first input data is data in a compressed state obtained after lossy compression coding;
  • a decompression circuit is connected to the read-write circuit, and is used to decompress the first input data to obtain second input data of the neural network;
  • An arithmetic circuit the arithmetic circuit is connected to the decompression circuit, and is used to perform a forward operation according to the second input data to obtain a forward operation result; if the forward operation result does not meet the preset requirements, The neural network performs training until the forward calculation result meets the preset requirements.
  • the arithmetic circuit is also used to:
  • the neural network when the arithmetic circuit determines that the forward operation result does not meet the preset demand, the neural network is trained until the forward operation result satisfies the preset demand.
  • the arithmetic circuit is used to:
  • the arithmetic circuit is used to perform a forward operation according to the second input data to obtain a forward operation result until the value of the loss function is less than the preset target accuracy.
  • the processor further includes a compression circuit, the compression circuit is connected to the arithmetic circuit and the read-write circuit;
  • the compression circuit is used to perform lossy compression coding on the forward operation result
  • the decompression circuit is also used to decompress the lossy compression encoded forward operation result
  • the operation circuit is also used to calculate a loss function according to the decompressed forward operation result and the preset target operation result.
  • the operation circuit is further used to perform a reverse operation according to the loss function to obtain a gradient value when the value of the loss function is greater than or equal to a preset target accuracy;
  • the compression circuit is also used to perform lossy compression coding on the gradient value
  • the decompression circuit is also used to decompress the gradient value after the lossy compression coding
  • the arithmetic circuit is also used to update the weight data of the neural network according to the gradient value obtained after the decompression;
  • the compression circuit is also used to perform lossy compression coding on the weight data
  • the decompression circuit is also used to decompress the lossy compression encoded weight data
  • the arithmetic circuit is used to perform a forward operation according to the second input data to obtain a forward operation result until the value of the loss function is less than the preset target accuracy.
  • the arithmetic circuit includes a master processing circuit and at least one slave processing circuit, each of the slave processing circuits is connected to the master processing circuit; a third compression circuit is provided on the master processing circuit And a third decompression circuit; each of the slave processing circuits is provided with a fourth decompression circuit and a fourth compression circuit;
  • the third compression circuit is used to perform lossy compression coding on the weight data of the second input data, and transmit the weight data in a compressed state to each of the fourth decompression circuits;
  • Each of the fourth decompression circuits is used to decompress the received weight data in a compressed state
  • Each of the slave processing circuits is used to perform a forward operation according to the decompressed weight data to obtain a first intermediate result, and each of the fourth compression circuits is used to perform a corresponding operation on the corresponding first intermediate result.
  • Lossy compression coding
  • the third decompression circuit is used to decompress each first intermediate result transmitted from the processing circuit, and the main processing circuit is used to obtain the forward operation result according to the decompressed first intermediate result.
  • the main processing circuit is further used to calculate a loss function according to the forward operation result and a preset target operation result;
  • the main processing circuit determines that the value of the loss function is greater than or equal to a preset target accuracy, it is determined that the forward operation result does not meet the preset requirement;
  • the main processing circuit determines that the value of the loss function is less than the preset target precision, it is determined that the forward operation result meets the preset requirement.
  • the third compression circuit when the main processing circuit determines that the value of the loss function is greater than or equal to the target accuracy, the third compression circuit is further used to perform lossy compression encoding on the loss function, and Transmitting the loss function in the compressed state obtained after the lossy compression encoding to each of the fourth decompression circuits;
  • Each of the fourth decompression circuits is used to decompress the received loss function in a compressed state
  • Each of the slave processing circuits is used to perform a reverse operation according to the decompressed loss function to obtain a second intermediate result
  • Each of the fourth compression circuits is used to transmit the second intermediate result to lossy compression coding and then transmitted to the third decompression circuit; the third decompression circuit is also used to Decompress the second intermediate result;
  • the main processing circuit is further used to obtain the gradient value according to the decompressed second intermediate result
  • the main processing circuit updates the weight data of the second input data according to the gradient value, and thereafter, the main processing circuit is used to perform lossy compression on the weight data of the second input data, and the The weight data of the compressed state is transmitted to each of the slave processing circuits until the value of the loss function is less than the preset target accuracy.
  • the compression circuit, the third compression circuit, and the fourth compression circuit of the processor each include a first compression ratio determination module and at least one compression module, and each of the compression modules is arranged in parallel. Each of the compression modules is connected to the first compression ratio determination module;
  • the first compression rate determining module is used to determine a target compression rate according to the preset target accuracy, and select a target compression module from at least one of the compression modules according to the target compression rate;
  • Each compression module is used to perform lossy compression coding according to different compression rates.
  • the decompression circuit, the third decompression circuit, and the fourth decompression circuit of the processor all include a second compression ratio determination module and at least one decompression module, at least one of the decompression modules is provided in parallel, each The decompression modules are all connected to the second compression ratio determination module;
  • the second compression ratio determining module is used to select a target decompression module from at least one of the decompression modules according to the target compression ratio;
  • Each decompression module is used to decompress data with different compression ratios.
  • the lossy compression coding includes one or more of predictive coding, pulse code modulation, interpolation, extrapolation, transform coding, subband coding, hybrid coding, vector quantization, and fractal coding The combination.
  • a computer-readable storage medium on which a computer program is stored characterized in that when the computer program is executed by a processor, the steps of the method described in any one of the above are implemented.
  • the above data processing method, device, processor and storage medium obtain the first input data in a compressed state obtained after lossy compression, and decompress the first input data, and according to the second obtained after decompression
  • the input data is subjected to a forward operation.
  • the neural network can be trained until the forward operation result of the neural network meets the preset requirements.
  • Two input data are used to train the neural network to reduce the data access overhead during the neural network processing, which can improve the performance of the processor.
  • the neural network can be trained to compensate for the impact of lossy compression coding on the accuracy, to ensure that after training The accuracy of the neural network can ensure the reliability and accuracy of the operation.
  • a data processing method includes the following steps:
  • the first processor performs forward operation according to the acquired input data of the neural network to obtain the first forward operation result
  • the first processor determines that the first forward operation result does not meet the preset requirements, the first processor performs lossy compression encoding on the input data, and encodes the lossy compression encoded
  • the input data is transferred to the second processor;
  • the second processor decompresses the lossy compression encoded input data, and trains or retrains the neural network according to the lossy compression encoded input data until the second processor obtains The second forward calculation result meets the preset requirement.
  • the method further includes the following steps:
  • the first processor obtains a first loss function according to the first forward operation result and a preset target operation result
  • the first processor determines that the first forward operation result meets the preset demand
  • the first processor determines that the first forward operation result does not meet the preset requirement.
  • the second processor trains or retrains the neural network according to the input data after the lossy compression coding, until the second forward operation result obtained by the second processor
  • the steps to meet the preset requirements include:
  • the second processor performs a forward operation according to the lossy compression-coded input data to obtain a second forward operation result
  • the second processor determines a second loss function according to the second forward operation result
  • the second processor updates the weight data of the lossy compression encoded input data according to the gradient value to obtain the updated weight data, and then returns to the second processor according to the lossy compression
  • the step of the first processor performing lossy compression encoding on the input data and transmitting the lossy compression encoded input data to the second processor includes:
  • the first processor determines a target compression rate according to the preset target accuracy
  • the first processor performs lossy compression coding on the input data and the first loss function according to the target compression ratio, obtains interactive data, and transmits the interactive data to the second processor.
  • the second processor decompresses the lossy compression-encoded input data, and performs training or retraining according to the lossy compression-encoded input data until the second
  • the step of the second forward operation result obtained by the processor satisfying the preset requirement includes:
  • the second processor decompresses the interactive data transmitted by the first processor
  • the second processor performs a reverse operation on the neural network according to the value of the first loss function obtained after decompression to obtain a gradient value
  • the second processor updates the weight data in the input data according to the gradient value to obtain the updated weight data
  • the second processor trains or retrains the neural network according to the updated weight data until the second forward operation result obtained by the second processor meets the preset requirement.
  • the second processor trains or retrains the neural network according to the updated weight data until the second forward operation result obtained by the second processor satisfies all
  • the steps described in the preset requirements also include the following steps:
  • the second processor performs a forward operation on the neural network according to the updated weight data to obtain a second forward operation result
  • the second processor determines a second loss function according to the second forward operation result
  • the second processor When the value of the second loss function is greater than or equal to the preset target precision, the second processor reverses the neural network according to the value of the second loss function Operate to get the gradient value;
  • the step of the second processor determining the second loss function according to the second forward operation result includes:
  • the second processor decompresses the second forward operation result after performing lossy compression encoding on the second forward operation result
  • the second processor determines the second loss function according to the decompressed second forward operation result.
  • the second processor updates the weight data of the lossy compression-encoded input data according to the gradient value to obtain the updated weight data, and then, the second processor
  • the step of performing a forward operation according to the lossy compression-encoded input data to obtain a second forward operation result includes:
  • the second processor performs lossy compression coding on the gradient value, then decompresses the gradient value after the lossy compression coding, and updates the weight data according to the gradient value obtained after the decompression, Obtain updated weight data;
  • the second processor performs lossy compression encoding on the weight data, and then decompresses the lossy compression encoded weight data;
  • the second processor performs forward operation according to the decompressed weight data to obtain a second forward operation result.
  • the second processor includes at least two processing circuits, at least two of the processing circuits include a master processing circuit and a slave processing circuit; after the second processor encodes the lossy compression The input data is decompressed, and training or retraining is performed according to the lossy compression-encoded input data, until the second forward operation result obtained by the second processor meets the preset requirements, including:
  • the main processing circuit decompresses the input data after the lossy compression coding to obtain input neuron data and weight data of the neural network;
  • the master processing circuit performs lossy compression coding on the weight data, and transmits the weight data in a compressed state to each of the slave processing circuits;
  • Each of the slave processing circuits separately decompresses the received weight data in a compressed state, and performs a forward operation on the neural network according to the decompressed weight data to obtain a first intermediate result, Sending the first intermediate result to the main processing circuit after lossy compression encoding;
  • the main processing circuit decompresses each first intermediate result transmitted from the processing circuit, and obtains the second forward operation result according to the decompressed first intermediate result;
  • the main processing circuit calculates a second loss function according to the second forward operation result and a preset target operation result
  • the main processing circuit determines that the value of the second loss function is less than a preset target precision, it is determined that the second forward operation result meets the preset requirement.
  • the method further includes the following steps:
  • the main processing circuit determines that the value of the second loss function is greater than or equal to the target accuracy, the main processing circuit performs lossy compression encoding on the second loss function and encodes the lossy compression encoding
  • the second loss function in the compressed state obtained later is transmitted to each of the slave processing circuits;
  • Each of the slave processing circuits respectively decompresses the received second loss function in a compressed state, and performs a reverse operation on the neural network according to the decompressed second loss function to obtain a second intermediate As a result, the second intermediate result is subjected to lossy compression coding and then transmitted to the main processing circuit;
  • the main processing circuit decompresses each second intermediate result transmitted from the processing circuit, and obtains the gradient value according to the decompressed second intermediate result;
  • the main processing circuit updates the weight data of the neural network according to the gradient value to obtain the updated weight data, and then returns to the main processing circuit to perform lossy compression coding on the weight data, and The weight data in the compressed state is transmitted to each step of the slave processing circuit.
  • the main processing circuit decompresses the lossy compression encoded input data to obtain the input neuron data and weight data of the neural network, further comprising:
  • the master processing circuit acquires interactive data, and transmits the interactive data to each slave processing circuit;
  • Each of the slave processing circuits separately decompresses the interactive data, and performs a reverse operation on the neural network according to the value of the first loss function obtained after decompression, obtains intermediate calculation results, and performs lossy encoding on the intermediate calculation results After transmission to the main processing circuit;
  • the main processing circuit calculates and obtains the gradient value according to the intermediate calculation result, and updates the weight data in the input data according to the gradient value to obtain the updated weight data.
  • the method further includes:
  • the second processor When determining that the second forward operation result meets the preset requirement, the second processor performs lossy compression encoding on the current weight data of the neural network, and encodes the lossy compression encoded neural network The current weight data is transmitted to the first processor.
  • the lossy compression coding includes one or more of predictive coding, pulse code modulation, interpolation, extrapolation, transform coding, subband coding, hybrid coding, vector quantization, and fractal coding The combination.
  • a computer system including a first processor and a second processor connected to the first processor;
  • the first processor is configured to perform a forward operation according to the obtained input data to obtain a first forward operation result, where the input data is data obtained after lossy compression encoding; and when determining the first forward direction If the operation result does not meet the preset requirements, perform lossy compression encoding on the input data, and transmit the lossy compression encoded input data to the second processor;
  • the second processor decompresses the input data after the lossy compression encoding, and trains or retrains the neural network according to the input data after the lossy compression encoding until the second processing
  • the second forward operation result obtained by the device meets the preset requirement.
  • the first processor includes:
  • a first arithmetic circuit configured to obtain a first loss function according to the first forward calculation result and a preset target calculation result; when the value of the first loss function is less than a preset target accuracy, determine The first forward operation result meets the preset requirement; when the value of the first loss function is greater than or equal to the preset target accuracy, it is determined that the first forward operation result does not meet the preset demand;
  • a first compression circuit the first compression circuit is connected to the first arithmetic circuit, and the first compression circuit is used to, according to the preset when the first forward operation result does not meet the preset demand To determine the target compression rate, and perform lossy compression encoding on the input data according to the target compression rate;
  • a first read-write circuit the first read-write circuit is connected to the first compression circuit, and is used for transmitting the input data to a second processor.
  • the second processor includes:
  • a second decompression circuit configured to decompress the lossy compression-encoded input data transmitted by the first processor
  • a second operation circuit configured to perform a forward operation based on the input data after the lossy compression encoding, obtain a second forward operation result, and determine a second loss function according to the second forward operation result;
  • the value of the second loss function is greater than or equal to the preset target accuracy, and the reverse operation is performed according to the second loss function to obtain a gradient value; and the weight value of the input data after lossy compression encoding is updated according to the gradient value Data to obtain the updated weight data; after that, the second operation circuit is used to perform a forward operation according to the input data after the lossy compression encoding to obtain a second forward operation result until the first The two forward operation results meet the preset requirements.
  • the first processor includes a first compression circuit, a first arithmetic circuit, and a first read-write circuit
  • the second processor includes a second decompression circuit and a second arithmetic circuit
  • the first operation circuit is used to obtain a first loss function according to the first forward operation result and a preset target operation result;
  • the first compression circuit is used to determine a target compression rate according to a preset target accuracy, and perform lossy compression coding on the input data and the first loss function according to the target compression rate to obtain interactive data;
  • the first read-write circuit is used to transmit the interactive data to the second processor
  • the second decompression circuit is used to decompress the interactive data transmitted by the first processor
  • the second operation circuit is configured to perform an inverse operation on the neural network according to the value of the first loss function obtained after decompression, obtain a gradient value, and update the weight value in the input data according to the gradient value Data to obtain updated weight data; and train or retrain the neural network according to the updated weight data until the second forward operation result obtained by the second processor meets the Set requirements.
  • the second operation circuit is used to train or retrain the neural network according to the updated weight data until the second forward operation result obtained by the second processor
  • the second arithmetic circuit is used to:
  • the processor updates the weight data of the input data according to the gradient value, and obtains the updated weight data until the second forward operation result of the neural network meets the preset requirement.
  • the second processor further includes a second compression circuit, and the second compression circuit is connected to the second arithmetic circuit;
  • the second compression circuit is used to perform lossy compression coding on the second forward operation result
  • the second decompression circuit is also used to decompress the second forward operation result after lossy compression encoding
  • the second operation circuit is also used to determine the second loss function according to the decompressed second forward operation result.
  • the second compression circuit is further used to perform lossy compression coding on the gradient value
  • the second decompression circuit is also used to decompress the gradient value after the lossy compression coding
  • the second arithmetic circuit is further configured to update the weight data according to the gradient value obtained after the decompression, and obtain the updated weight data;
  • the second compression circuit is also used to perform lossy compression encoding on the weight data
  • the second decompression circuit is also used to decompress the lossy compression encoded weight data
  • the second operation circuit is also used to perform a forward operation according to the decompressed weight data to obtain a second forward operation result.
  • the second arithmetic circuit includes a master processing circuit and a slave processing circuit; the master processing circuit is provided with a third compression circuit and a third decompression circuit, and the slave processing circuit is provided with a fourth Compression circuit and fourth decompression circuit;
  • the third compression circuit is used to perform lossy compression encoding on the weight data, and transmit the weight data in a compressed state to each of the fourth decompression circuits;
  • Each of the fourth decompression circuits is used to decompress the received weight data in a compressed state
  • Each of the slave processing circuits is configured to perform a forward operation on the neural network according to the decompressed weight data to obtain a first intermediate result
  • Each of the fourth compression circuits is used to transmit the first intermediate result to the third decompression circuit after lossy compression encoding
  • the third decompression circuit is used to decompress each first intermediate result transmitted from the processing circuit, and the main processing circuit is used to obtain the second forward operation result according to the decompressed first intermediate result ;
  • the main processing circuit is further configured to calculate a second loss function according to the second forward operation result and the preset target operation result;
  • the main processing circuit determines that the value of the second loss function is less than a preset target accuracy, it is determined that the second forward operation result meets the preset requirement.
  • the third compression circuit is further used to perform lossy compression coding on the second loss function when the value of the second loss function is greater than or equal to the target accuracy, and Transmitting the second loss function in the compressed state obtained after the lossy compression encoding to each of the fourth decompression circuits;
  • Each of the fourth decompression circuits decompresses the received second loss function in a compressed state
  • Each of the slave processing circuits is configured to perform a reverse operation on the neural network according to the decompressed second loss function to obtain a second intermediate result;
  • Each of the fourth compression circuits is used to perform lossy compression encoding on the second intermediate result and transmit it to the third decompression circuit;
  • the third decompression circuit is also used to decompress each second intermediate result transmitted from the processing circuit, and the main processing circuit is also used to obtain the gradient value according to the decompressed second intermediate result;
  • the main processing circuit is also used to update the weight data of the neural network according to the gradient value to obtain the updated weight data. After that, the main processing circuit is used to perform lossy compression on the weight data Encode and transfer the weight data in a compressed state to each of the slave processing circuits.
  • the second processor further includes a second read-write circuit
  • the second compression circuit is also used to perform lossy compression coding on the current weight data of the neural network when the second forward operation result meets the preset requirement;
  • the second read-write circuit is used to transmit the current weight data of the neural network after lossy compression coding to the first processor.
  • the lossy compression coding includes one or more of predictive coding, pulse code modulation, interpolation, extrapolation, transform coding, subband coding, hybrid coding, vector quantization, and fractal coding The combination.
  • the first compression circuit of the first processor, the second compression circuit of the second processor, the third compression circuit, and the fourth compression circuit all include a first compression ratio A determination module and at least one compression module, each of the compression modules is arranged in parallel, and each of the compression modules is connected to the first compression ratio determination module;
  • the first compression rate determining module is used to determine a target compression rate according to the preset target accuracy, and select a target compression module from at least one of the compression modules according to the target compression rate;
  • Each compression module is used to perform lossy compression coding according to different compression rates.
  • the first decompression circuit of the first processor, the second decompression circuit of the second processor, the third decompression circuit, and the fourth decompression circuit all include a second compression ratio determination module And at least one decompression module, at least one of the decompression modules is arranged in parallel, and each of the decompression modules is connected to the second compression ratio determination module;
  • the second compression ratio determining module is used to select a target decompression module from at least one of the decompression modules according to the target compression ratio;
  • Each decompression module is used to decompress data with different compression ratios.
  • a computer-readable storage medium on which a computer program is stored characterized in that when the computer program is executed by a processor, the steps of the method described in any one of the above are implemented.
  • the above data processing method, computer system and storage medium, through the terminal and the cloud server in a coordinated manner, and realize the neural network training or retraining process on the cloud server, can reduce the terminal's calculation; at the same time, between the terminal and the cloud server
  • the transmitted data are all obtained after lossy compression encoding, which can reduce the data access overhead and improve the performance of the computer system.
  • a data encoding method includes:
  • the code length of the Huffman code of each symbol in the data to be coded is taken as the code length of each symbol in the data to be coded;
  • the encoding code length of the current symbol is the same as the encoding code length of the symbol of the last sorted value, add 1 to the encoding value of the symbol of the last sorted value to obtain the encoded value of the current symbol; if the encoding of the current symbol The code length is different from the coding code length of the symbol of the last sorted value, and then the code value of the symbol of the previous sorted value is added to the value obtained by 1 and the mantissa 0 is added to obtain the coded value of the current symbol;
  • the data to be encoded is encoded according to the encoding value of the symbol corresponding to each symbol.
  • the acquiring the encoding value of the symbol corresponding to each symbol in the data to be encoded and encoding the data to be encoded includes:
  • the code length boundary table and the code length basic value table of the data to be coded according to the code length and sorting value of each symbol in the data to be coded include:
  • a basic value of each code length is obtained according to each of the maximum ranking values and the coding value corresponding to each maximum ranking value, and the code length basic value table is obtained according to the basic value of each coding code length.
  • using the maximum ranking value to construct the code length boundary table includes:
  • the method further includes:
  • the initial sorting value of the symbol sequence table is 0.
  • each of the maximum ranking values and the encoding value corresponding to each of the maximum ranking values including:
  • the coding value corresponding to each of the maximum sorting values is subtracted from the sorting value to obtain a basic value for each coding code length.
  • using the symbol sequence table, the code length table, the code length boundary table, and the code length basic value table to encode each symbol in the data to be encoded includes:
  • the code value of the current symbol is obtained according to the initial code value of the current symbol and the code length of the current symbol.
  • the initial encoding value of the current symbol is obtained, including:
  • the sorting value of the current symbol in the symbol sequence table is added to the basic value of the current symbol to obtain the initial encoding value of the current symbol.
  • the method further includes:
  • the value 0 corresponding to the code length of the code is used as the code value of the symbol with the smallest sort value in the symbol sequence table.
  • a data decoding method includes:
  • each symbol and the encoded value includes:
  • code length of the current symbol is the same as the code length of the symbol of the previous sort value, add 1 to the code value of the symbol of the previous sort value to obtain the code value of the current symbol; if the code length of the current symbol is equal to The code length of the symbol of the last sorted value is different, and then the value obtained by adding 1 to the code value of the symbol of the previous rank is added to the mantissa of 0 to obtain the code value of the current symbol.
  • the above data encoding method can achieve the following beneficial effects: the average length of the encoding result obtained by encoding data encoded in this method is short; in addition, the data encoding method obtains the encoding value of each symbol by adding 1 or adding 1 to complement the mantissa of 0 In the process of determining the code value corresponding to the symbol, there are rules to follow, the operation is simple, and the travel rate is low.
  • a data decoding method includes:
  • code length of the current symbol is the same as the code length of the symbol of the previous sort value, add 1 to the code value of the symbol of the previous sort value to obtain the code value of the current symbol; if the code length of the current symbol is equal to The code length of the symbol of the last sorted value is different, then the value obtained by adding 1 to the code value of the symbol of the previous rank is added to the mantissa of 0 to obtain the code value of the current symbol;
  • decoding the data to be decoded according to the correspondence between the symbols and the encoded values includes:
  • a code value range table and a code length basic value table are obtained, including:
  • the basic value of each coding code length is obtained according to the coding value in the coding value range table and the corresponding sorting value, and the code length basic value table is obtained according to the basic value of each coding code length.
  • the coding value range table is constructed using the coding values of the symbols of each of the maximum ranking values, including:
  • the code values in the code value range table are arranged in ascending order to obtain the code value range table.
  • the method further includes:
  • the initial sorting value of the symbol sequence table is 0.
  • the basic values of various coding code lengths are obtained according to the coding values of the symbols with the largest sorting values of the coding code lengths and the corresponding sorting values, and according to the basic worth of the various coding code lengths To the code length basic value table, including:
  • the value obtained by subtracting the corresponding sort value from the encoding value in the encoding value range table is used as the basic value of various encoding code lengths.
  • using the symbol sequence table, the code length table, the code value range table, and the code length basic value table to decode each code value in the data to be decoded includes:
  • the symbol corresponding to the current coding value is obtained according to the sorted value and the symbol sequence table.
  • obtaining the ranking value of the current coding value according to the initial coding value and the basic value of the current coding value includes:
  • the difference between the initial code value of the current code value and the base value is used as the sort value of the current code value.
  • the method further includes:
  • the value 0 corresponding to the code length of the code is used as the code value of the symbol with the smallest sort value in the symbol sequence table.
  • a data decoding method includes:
  • each symbol and the encoded value includes:
  • code length of the current symbol is the same as the code length of the symbol of the previous sort value, add 1 to the code value of the symbol of the previous sort value to obtain the code value of the current symbol; if the code length of the current symbol is equal to The code length of the symbol of the last sorted value is different, and then the value obtained by adding 1 to the code value of the symbol of the previous rank is added to the mantissa of 0 to obtain the code value of the current symbol.
  • the above data decoding method can achieve the following beneficial effects:
  • the code value of each symbol is obtained by adding 1 or adding 1 to the mantissa of 0.
  • the process of determining the code value corresponding to the symbol is regular, simple operation, and a business trip The rate is low.
  • An encoding method includes:
  • the method further includes:
  • first preset If the number of consecutively arranged first preset numbers is greater than the run-length threshold, then according to the data bit width of the first preset number, the first preset that is greater than the run-length threshold and arranged in the first place Character encoding for numbers;
  • the run length encode the other first preset number after the first preset number that is greater than the run length threshold and arranged in the first place to obtain the run length and write it into the target code .
  • the method further includes:
  • the first preset digit is character-encoded according to the data bit width of the first preset digit.
  • the method further includes:
  • the run bit width encode the other first preset number after the first digit in the input data to obtain the run length and write it into the target code.
  • the method further includes:
  • the first preset number after character encoding and the run length after the first preset number after character encoding are replaced.
  • a processor including an arithmetic unit, a storage unit disposed adjacent to the arithmetic unit, and a controller unit, the controller unit being connected between the arithmetic unit and the storage unit;
  • the operation unit includes an encoding module, the encoding module is used to encode the first preset number in the input data according to the run bit width to obtain the run length and write it into the target encoding; wherein, the run length is used to indicate The number of the first preset number;
  • the storage unit is used to store original data and encoded data, and perform data transmission with the controller unit and the arithmetic unit;
  • the controller unit is used to obtain input data and calculation instructions, and send a plurality of calculation instructions and input data obtained by parsing the calculation instructions to the calculation unit.
  • the encoding module includes a control signal interface, a buffer, multiple registers, a configuration module, and an output module;
  • control signal interface is used to realize the connection and data transmission between the encoding module and the controller unit;
  • the cache is respectively connected to a register and the configuration module adjacent to the cache, and is used to store input data, the first preset character, and the first preset character code;
  • the multiple registers are used to store the execution results of the multi-stage pipeline
  • the configuration module is configured to encode the first preset character to obtain a first preset character code, and store the first preset character code in the cache;
  • the output module is used to store and output coded data.
  • the arithmetic unit includes a master processing circuit and at least one slave processing circuit, at least one of the slave processing circuits is connected to the master processing circuit;
  • the encoding module is disposed in the master processing circuit and each of the slave processing circuits.
  • An encoding device comprising:
  • Input data acquisition module for acquiring input data
  • the run length obtaining module is used to encode the first preset number in the input data according to the run length to obtain the run length and write it into the target code; wherein, the run length is used to represent the first preset number number.
  • a computer-readable storage medium on which a computer program is stored characterized in that, when the computer program is executed by a processor, the steps of the above encoding method are realized.
  • the first preset number in the data to be encoded is run-length encoded according to the run-length in the first-stage pipeline.
  • the stage pipeline which replaces the output data obtained by the run-length encoding with preset characters, can compress a large number of consecutive preset numbers, saving bandwidth resources; at the same time, using the preset characters and the two-stage pipeline to perform the encoding operation can further improve The efficiency of data compression.
  • a decoding method includes:
  • the data bit width and the run bit width identify the encoded data to obtain character encoding and run length
  • the identifying the encoded data according to the data bit width and the run bit width to obtain the character encoding and run length includes:
  • the character string is recognized as a character encoding; if the data length of the character string is equal to the run bit width, the character string is recognized For the tour.
  • a decoding method includes:
  • identifying the preset character code by determining whether the character code includes an additional character check digit includes:
  • the method further includes:
  • the decoded data is forwarded and operated in the operation unit, and the operation includes multiplication operation, accumulation operation, and activation operation.
  • a processor including an arithmetic unit, a storage unit disposed adjacent to the arithmetic unit, and a controller unit, the controller unit being connected to the arithmetic unit and the storage unit;
  • the arithmetic unit includes a decoding module, the decoding module is used to identify the encoded data, obtain the character encoding and run length, and expand the run length according to the data bit width to obtain the first preset number;
  • the storage unit is used to store original data and encoded data, and perform data transmission with the controller unit and the arithmetic unit;
  • the controller unit is used to obtain input data and calculation instructions, and send a plurality of calculation instructions and input data obtained by parsing the calculation instructions to the calculation unit.
  • the decoding module includes a control signal interface, a buffer, multiple registers, and an output module;
  • control signal interface is used to realize the connection and data transmission between the decoding module and the controller unit;
  • the buffer is connected to a register provided adjacent to the buffer and used for storing the encoded data
  • the multiple registers are used to store the execution results of the multi-stage pipeline
  • the output module is used to store and output the decoded data.
  • the arithmetic unit includes a master processing circuit and at least one slave processing circuit, at least one of the slave processing circuits is connected to the master processing circuit;
  • the decoding module is disposed in the master processing circuit and each of the slave processing circuits.
  • a decoding device includes:
  • Coded data acquisition module used to obtain coded data
  • the coded data recognition module is used for recognizing the coded data according to the data bit width and the run length, to obtain the character code and run length;
  • the first preset number obtaining module is configured to expand the run length according to the data bit width to obtain a first preset number.
  • a decoding device includes:
  • Coded data acquisition module used to obtain coded data
  • a coded data recognition module used for recognizing the coded data to obtain a character code and a preset character code, wherein the preset character code includes a first preset character code and a second preset character code;
  • the preset character code expansion module is used to expand the preset character code according to the data bit width to obtain a first preset number character code and a run threshold, wherein the run threshold is arranged in the first After the character encoding of the preset number;
  • a run-length threshold expansion module configured to expand the run-length threshold according to the data bit width to obtain a plurality of the first preset numbers arranged consecutively, wherein the number of the first preset numbers and the run-length The number of the first preset numbers indicated by the threshold is the same.
  • a computer-readable storage medium on which a computer program is stored characterized in that, when the computer program is executed by a processor, the steps of the above-described decoding method are realized.
  • the above decoding method, processor, decoding device and storage medium by setting a decoding module in the arithmetic unit, at the first stage pipeline, according to the data bit width, expand the preset character encoding to obtain a first preset number of characters Encoding and run threshold, in the second stage pipeline, the run threshold is expanded according to the data bit width to obtain multiple first preset numbers arranged consecutively, so as to ensure the accuracy of the operation under the premise of data compression; at the same time, use
  • the two-stage pipeline performs decoding operations, which can further improve the efficiency of data decompression.
  • a data compression method includes:
  • the inserting the first preset character into the current code stream includes:
  • the first preset character code is inserted into the output module of the current code stream.
  • the method further includes:
  • the output data in the output module of each code stream occupies the storage capacity, the data in a plurality of the output modules are uniformly output.
  • the method further includes:
  • Additional character bits are set for real data having the same numerical value as the first preset character.
  • a processor including an arithmetic unit, a storage unit disposed adjacent to the arithmetic unit, and a controller unit, the controller unit being connected between the arithmetic unit and the storage unit;
  • the operation unit includes a data compression module, the data compression module is used if the difference between the number of characters processed in the current code stream and the minimum number of characters processed in multiple code streams is greater than or equal to the current code stream When it is determined that the pipeline will deadlock, insert the first preset character into the current code stream;
  • the storage unit is used to store original data and encoded data, and perform data transmission with the controller unit and the arithmetic unit;
  • the controller unit is used to obtain input data and calculation instructions, and send a plurality of calculation instructions and input data obtained by parsing the calculation instructions to the calculation unit.
  • the data compression module includes a control signal interface, a buffer, multiple registers, an accumulation module, a configuration module, and an output module;
  • control signal interface is used to realize the connection and data transmission between the data compression module and the controller unit;
  • the cache is respectively connected to a register, a configuration module and an output module which are adjacent to the cache, and is used to store input data, intermediate data, the first preset character, the second preset character and the first A preset character encoding;
  • the multiple registers are used to store the execution results of the multi-stage pipeline
  • the accumulation module is connected to a register provided adjacent to the accumulation module, and is used to store the number of characters that have been processed by the current code stream;
  • the configuration module is configured to encode the first preset character, obtain the first preset character code, and store the first preset character code in the cache;
  • the output module is used to store and output the output data of the current code stream.
  • the arithmetic unit includes a master processing circuit and at least one slave processing circuit, at least one of the slave processing circuits is connected to the master processing circuit;
  • the data compression module is disposed in the master processing circuit and each of the slave processing circuits.
  • a data compression device includes:
  • the first obtaining module is used to obtain the pipeline level of the current code stream and the number of characters processed by the current code stream;
  • the second acquisition module is used to acquire the minimum number of characters that have been processed in multiple code streams
  • a preset character insertion module if the difference between the number of characters processed by the current code stream and the minimum number of characters processed in the multiple code streams is greater than or equal to the number of pipeline stages of the current code stream To determine that a deadlock occurs in the pipeline, and insert a first preset character into the current code stream.
  • the above data compression method, processor, data compression device, and storage medium determine whether the pipeline will occur based on the current code stream's pipeline stages, the number of characters that have been processed in the current code stream, and the minimum number of characters that have been processed in multiple code streams Deadlock. If a deadlock occurs in the pipeline, insert the first preset character into the output module of the current codestream, so as to ensure that the output data code length of multiple codestreams is the same, and avoid the excessive compression speed difference of multiple codestreams. The resulting deadlock phenomenon.
  • a data compression and decompression device the device includes a control circuit and a compression and decompression circuit, the control circuit is connected to the compression and decompression circuit,
  • the control circuit is used to obtain a compression control instruction according to the start address and data length of the data to be compressed in the data unit, wherein the input data includes at least one data unit, and the data unit includes the data to be compressed and the uncompressed data;
  • the compression and decompression circuit is used for obtaining the data to be compressed according to the compression control instruction, and compressing the data to be compressed to obtain compressed data.
  • control circuit is specifically configured to determine the size of the data unit according to the number of the compression and decompression circuits, determine the data reading window according to the size of the data unit, and obtain the reading according to the data reading window Write control instructions;
  • the compression and decompression circuit is also used to read a data unit from the input data according to the read-write control instruction.
  • the compression and decompression circuit includes a first read and write circuit, a first memory, and a compression and decompression component, the first read and write circuit is connected to the control circuit and the first memory, the compression The decompression component is respectively connected to the control circuit and the first memory,
  • the first read-write circuit is used to read a data unit from the input data according to the read-write control instruction and write the data unit to the first memory;
  • the control circuit is further used to obtain a compression control instruction according to the start address and data length of the data to be compressed in the data unit stored in the first memory;
  • the compression and decompression component is configured to compress the data to be compressed in the data unit according to the compression control instruction.
  • the device further includes an uncompressed data path and a second read-write circuit, the uncompressed data path is connected to the first memory, the second read-write circuit and the control circuit, and The first memory is connected,
  • the control circuit is also used to obtain a write control instruction according to the uncompressed data in the data unit;
  • the second read-write circuit is used to write out the uncompressed data from the non-compressed data path according to the write-out control instruction.
  • the device further includes a second memory, the second memory is respectively connected to the control circuit and the compression and decompression circuit,
  • the second memory is used to store the input data in data blocks.
  • control circuit is specifically configured to obtain read and write parameters according to the first edge and the second edge, and obtain read and write control instructions according to the read and write parameters, wherein the first edge is the data Reading the edge of the window, the second edge is the edge of the read-write window where the non-integral data block is located outside the read-write window;
  • the first read-write circuit is specifically used to read the data unit in the data reading window according to the read-write control instruction, and write the data unit in the storage format in the second memory according to the data unit In the first memory, the complete data block in the data unit is data to be compressed, and the non-integral data block in the data unit is non-compressed data.
  • control circuit is specifically configured to determine the start address and the data length according to the start address and the data length of the complete data block in the data unit in the first memory.
  • control circuit is specifically configured to obtain the write-out control instruction according to the non-integral data block in the data unit in the first memory.
  • each of the compression and decompression circuits are specifically used for parallelly compressing the data to be compressed in the corresponding data unit in whole blocks to obtain multiple compressed data, wherein each of the compression The data includes a data header and a data body, where the data header includes the start address and data length of the corresponding data body, and the data body includes the encoded data of the corresponding data block;
  • the control circuit is further used to obtain a write control instruction, wherein the write control instruction is used to control the second read-write circuit to write each data header according to the position of the corresponding data block in the input data Into the second memory, and write each data body and uncompressed data to the second memory according to a preset format.
  • a data compression method includes:
  • a compression control instruction is obtained according to the start address and data length of the data to be compressed in the data unit, wherein the input data includes at least one data unit, and the data unit includes the data to be compressed and the uncompressed data;
  • the method further includes:
  • the data unit is read from the input data according to the read-write control instruction.
  • the method further includes:
  • the method further includes: storing the input data in data blocks.
  • the data reading window is determined according to the size of the data unit, and the read and write control instruction is obtained according to the data reading window, including:
  • the method after reading the data unit from the input data according to the read-write control instruction, the method further includes:
  • control circuit is further used to obtain a write control instruction according to the uncompressed data in the data unit, including:
  • the write control instruction is obtained.
  • the compressing the data to be compressed in the data unit according to the compression control instruction to obtain compressed data includes:
  • each of the compressed data includes a data header and a data body, and the data header includes the start address of the corresponding data body 3.
  • Data length, the data body includes the encoded data after the corresponding data block is compressed;
  • the above data compression and decompression device and data compression method obtain a compression control instruction according to the start address and data length of the data to be compressed in the input data through the control circuit, and then compress the data to be compressed based on the compression control instruction, the method provides A method to select part of the complete data for compression to improve the flexibility of data compression.
  • a data compression and decompression device the device includes a control circuit and a compression and decompression circuit, the control circuit is connected to the compression and decompression circuit,
  • the control circuit is used to obtain a decompression control command according to the start address and length of the compressed data in the data to be decompressed, wherein the data to be decompressed includes compressed data and non-compressed data;
  • the compression and decompression circuit is used to decompress the compressed data in the data to be decompressed according to the decompression control command.
  • control circuit is further used to obtain a read and write control command for each compression and decompression circuit according to the number of compression and decompression circuits;
  • Each of the compression and decompression circuits is configured to read data to be decompressed from data to be calculated according to the read-write control command, wherein the data to be calculated includes at least one data to be decompressed.
  • the compression and decompression circuit includes a first read and write circuit, a first memory, and a compression and decompression component, the first read and write circuit is connected to the control circuit and the first memory, the compression The decompression component is respectively connected to the control circuit and the first memory,
  • the first read-write circuit is used to read data to be decompressed from the data to be calculated according to the read-write control instruction, and write the data to be decompressed into the first memory;
  • the control circuit is further configured to obtain a decompression control instruction according to the start address and data length of the compressed data in the data to be decompressed stored in the first memory;
  • the compression and decompression component is configured to compress the compressed data in the data to be decompressed according to the decompression control instruction.
  • the device further includes an uncompressed data path and a second read-write circuit, the uncompressed data path is connected to the first memory, the second read-write circuit and the control circuit, and The first memory is connected,
  • the control circuit is further used to obtain a write control instruction according to the uncompressed data of the data to be decompressed in the first memory;
  • the second read-write circuit is used to write out the uncompressed data from the non-compressed data path according to the write-out control instruction.
  • the device further includes a second memory, the second memory is respectively connected to the control circuit and the compression and decompression circuit,
  • the second memory is used to store the data to be calculated, wherein the data to be calculated includes a header segment and a data segment, the header segment includes multiple data headers, and the data segment includes multiple data bodies and uncompressed data
  • the data header includes the start address and data length of the corresponding data body or uncompressed data
  • the data body includes the compressed encoded data of the corresponding data block.
  • control circuit is specifically used to obtain the starting address and data length of the corresponding data body and uncompressed data in the current data to be decompressed according to the data header in the current data to be decompressed, and according to the current
  • a decompressing control command is obtained from the starting address and data length of the data body in the data to be decompressed, and a write control command is obtained according to the starting address and data length of the uncompressed data in the current to be decompressed data
  • the compression and decompression component is specifically configured to decompress the data body in the current data to be decompressed according to the decompression control command to obtain decompressed data.
  • control circuit is further used to obtain a direction parameter of the data writing window corresponding to the current data to be decompressed, and obtain a write control command according to the direction parameter;
  • the second read-write circuit is also used to write the decompressed data of the data body in the current data to be decompressed according to the write control command into the storage space corresponding to the data write window on the second memory, and Write the uncompressed data in the current data to be decompressed into the storage space corresponding to the data writing window through the uncompressed data channel.
  • a data decompression method includes:
  • the method further includes:
  • the method further includes:
  • the method further includes,
  • the method further includes:
  • the data to be calculated includes a header segment and a data segment
  • the header segment includes multiple data headers
  • the data segment includes multiple data Volume and non-compressed data
  • the data header includes the corresponding data volume or the start address and data length of the uncompressed data
  • the data volume includes compressed encoded data of the corresponding data block.
  • decompressing the compressed data in the data to be decompressed according to the decompression control command includes:
  • obtaining the write control instruction according to the uncompressed data of the data to be decompressed includes:
  • the write control command is obtained according to the starting address and data length of the uncompressed data in the current data to be decompressed.
  • the direction parameter of the data writing window corresponding to the current data to be decompressed is obtained, and the write control command is obtained according to the direction parameter;
  • the device can decompress data to be decompressed that contains both compressed data and uncompressed data.
  • the data processing device includes a storage circuit and a direct memory access circuit.
  • the direct memory access circuit includes a direct memory storage module, and the direct memory storage module includes : Header data analysis unit and tail data buffer unit; the first output terminal of the header data analysis unit and the first output terminal of the tail data buffer unit are both connected to the input terminal of the storage circuit, the storage circuit Is connected to the first input terminal of the header data analysis unit and the first input terminal of the tail data buffer unit, and the second output terminal of the header data analysis unit is connected to the first input terminal of the tail data buffer unit Two input connections;
  • the storage circuit is used to input data to the direct memory access circuit, and input the data storage processing parameters to the header data analysis unit and the tail data buffer unit, the header The data parsing unit is used to read the first part of the data to be stored from the first cache module according to the data storage processing parameter and write the first part of the data into the second cache module; the header The data parsing unit is also used to parse the first part of data to obtain the information in the first part of the data, and the tail data buffer unit is used to store processing parameters according to the data and the information in the first part of the data, from the first A cache module reads the second part of the data to be stored, and writes the second part of the data into the second cache module.
  • the data processing device further includes a control circuit and an arithmetic circuit
  • the control circuit is used to input the data storage processing parameters to the storage circuit, and is also used to obtain calculation instructions and parse the calculation
  • the instruction obtains a plurality of operation instructions, and inputs the plurality of operation instructions into the operation circuit
  • the operation circuit includes a master processing unit and a slave processing unit.
  • the header data parsing unit is specifically configured to read the header data in the data to be stored from the first cache module according to the data storage processing parameters and convert the header data Write to the second cache module, at the same time, analyze the header data part to obtain the information contained in the header data
  • the tail data cache unit is specifically used to store processing parameters and the header data according to the data Information contained in, read tail data in the data to be stored from the first cache module, and write the tail data into the second cache module.
  • the direct memory storage module further includes a header data counting unit and an address accumulation unit.
  • the header data counting unit is used to record the number of the first portion of data stored each time to obtain the accumulated data
  • the number of the first part of the data and according to the data storage processing parameter, determine to complete the storage operation and stop the storage operation
  • the address accumulation unit is used to accumulate the number of the first part of the data and the data Store the processing parameters and calculate the start address and target address of the first part of the data during the next storage operation.
  • the third output of the header data analysis unit is connected to the input of the header data counting unit, and the fourth output of the header data analysis unit is connected to the first of the address accumulation unit
  • the input terminal is connected
  • the output terminal of the header data counting unit is connected to the second input terminal of the address accumulation unit
  • the output terminal of the address accumulation unit is connected to the second input terminal of the header data analysis unit.
  • the direct memory storage module in the above device includes a header data parsing unit and a tail data buffer unit, through which the compressed data can be stored, and the data to be stored can be stored according to the target according to the received data storage processing parameters Stored in distributed form, thereby improving the versatility of data processing devices.
  • a data processing method includes:
  • the first part of the data to be processed includes reading the header data in the data to be processed in the first cache module.
  • the parsing the first part of the data according to the data storage processing parameters to obtain the information in the first part of the data includes: according to the data storage and processing parameters, the first part of the data Perform analysis to obtain the information contained in the header data in the data to be processed.
  • the reading the second part of the data to be processed based on the information in the first part of the data includes: reading the second part of the data according to the information contained in the header data in the first part of the data Tail data in the data to be processed.
  • the writing the first part of the data and the second part of the data into the second cache module according to the data storage processing parameter includes: according to the data storage processing parameter The tail data of the data and the information of the header data write the first part of the data and the second part of the data into the second cache module.
  • the method further includes:
  • the method further includes:
  • the start address and the target address of the header data in the first part of data are calculated when the next storage operation is performed;
  • start address and the target address of the first part of data continue to execute the first part of the data to be processed in the receiving first buffer module.
  • the above data processing method can achieve the following beneficial effects: the method can write compressed format data from the first cache module to the second cache module, and store the stored data according to the target distribution form, thereby improving the data processing device Versatility.
  • a data processing device for performing machine learning calculations includes a processing circuit and a control circuit, a first input terminal of the processing circuit is connected to a first output terminal of the control circuit ;
  • the processing circuit includes a decompression module;
  • control circuit is used to parse the decompression processing instructions to obtain decompression processing parameters, and input the decompression processing parameters to the decompression module;
  • the decompression module is used to perform decompression processing on the data to be decompressed input to the decompression module according to the decompression processing parameters, and obtain the data information in the decoded data; the decompression module is also used to according to the data information, When the data to be decompressed satisfies the condition for triggering the decompression bypass, the data to be decompressed is used as the target decompression data.
  • the decompression module is further configured to decompress the to-be-decompressed data when it is determined that the to-be-decompressed data does not satisfy the condition for triggering the decompression bypass according to the information in the decoded data deal with.
  • the data processing device further includes a storage circuit, the storage circuit is used to store original data, the control circuit is used to obtain a calculation instruction, and parse the calculation instruction to obtain a plurality of calculation instructions, A plurality of the operation instructions are input into the decompression module.
  • the first output of the storage circuit is connected to the second input of the processing circuit, the second output of the storage circuit is connected to the input of the control circuit, and the storage The first input terminal of the circuit is connected to the output terminal of the processing circuit, and the second input terminal of the storage circuit is connected to the second output terminal of the control circuit.
  • the decompression module includes a decompression processing unit and a selector, and the output terminal of the decompression processing unit is connected to the input terminal of the selector;
  • the decompression processing unit is used to perform decompression processing on the decompressed data according to the decompression processing parameters to obtain information in the decoded data, and determine whether the data to be decompressed satisfies the trigger decompression according to the information of the decoded data If the condition of the bypass is not met, subsequent decompression processing is performed on the data to be decompressed.
  • the selector is used to determine whether to receive the data to be decompressed based on the received logic judgment signal, or whether the decompression processing unit should
  • the decompressed data is decompressed data obtained after subsequent decompressing processing, and is output as target decompressed data.
  • the above data processing device can decompress the data to be decompressed according to the decompression processing parameters input by the control circuit through the decompression module. If the data to be decompressed meets the conditions for triggering the decompression bypass, the decompression module can directly use the data to be decompressed as a target The output of decompressed data does not require subsequent decompression processing of the decompressed data, which can improve the accuracy of decompression. In addition, the data processing device can effectively save the operation amount and storage overhead of the decompression module, thereby improving the operation efficiency of the data processing device.
  • the method includes:
  • the condition for triggering the decompression bypass includes a signal corresponding to the compression flag bit contained in the data to be processed, indicating that The said to-be-processed is obtained without using specific compression algorithm
  • the data to be processed is used as the target decompression data.
  • the processing parameters include decompression processing parameters.
  • the decompressing the to-be-processed data according to the processing parameter to obtain information of the decoded data includes: decompressing the to-be-processed data according to the decompression processing parameter to obtain The information of the decoded data.
  • the method further includes: if the data to be processed does not satisfy the triggering decompression bypass When the condition is, the data to be processed is used as the target decompression data.
  • the method further includes: performing parallel arithmetic processing on the target decompressed data through a processing circuit.
  • This method can save the calculation amount of the decompression processing of the data processing device and the storage overhead of the data processing device, and can further process the data to be processed in parallel to obtain the target decompressed data, which effectively improves Decompression efficiency; in addition, the method can also directly use the data to be processed as the target decompression data to ensure that the decompressed data has a higher accuracy of decompression compared to the corresponding original data.
  • a data processing device for performing machine learning calculations includes a block compression circuit and a main processing circuit, a first output terminal of the block compression circuit and the main processing circuit The first input terminal is connected;
  • the block compression circuit is used to block the received original data, and the block data is compressed, and the main processing circuit is used to group the received compressed data. .
  • the data processing device further includes a slave processing circuit, a storage circuit, and a control circuit; the slave processing circuit is used to perform accumulation operation and inner product operation on the received packet data, and the storage circuit uses To store the original data, the control circuit is used to obtain calculation instructions, and parse the calculation instructions to obtain a plurality of operation instructions, and input the plurality of operation instructions to the block compression circuit and the main processing circuit.
  • the first input terminal of the block compression circuit is connected to the first output terminal of the storage circuit, and the second input terminal of the block compression circuit is connected to the first output of the control circuit Terminal, the second output of the block compression circuit is connected to the first input of the storage circuit, and the third input of the block compression circuit is connected to the output of the main processing circuit;
  • the control The second output of the circuit is connected to the second input of the main processing circuit, the second output of the storage circuit is connected to the input of the control circuit, and the third output of the control circuit is connected to the The second input terminal of the storage circuit is connected, the first output terminal of the master processing circuit is connected to the input terminal of the slave processing circuit, and the output terminal of the slave processing circuit is connected to the third input terminal of the master processing circuit .
  • the block compression circuit includes a block unit and a compression unit, an output terminal of the block unit is connected to an input terminal of the compression unit; wherein, the block unit is used for receiving The original data is subjected to block processing to obtain block-divided data, and the compression unit is used to perform compression processing on the block-divided data.
  • the main processing circuit includes a packet forwarding module, the packet forwarding module is configured to receive the compressed data and packet processing parameters, and perform packet processing on the compressed data according to the packet processing parameters.
  • the above data processing device which can perform block processing on the data by a separate and simple logic hardware circuit (ie, block compression circuit) before performing calculation on the original data, and then perform compression processing to obtain compressed data, and then from the processing
  • the circuit can perform different arithmetic processing on the compressed data, and can reduce the data bandwidth between the master processing circuit and the slave processing circuit in the data processing device.
  • a data processing method includes:
  • the processing parameters include block processing parameters, packet processing parameters, and compression processing parameters.
  • the processing the data to be processed according to the processing parameters into blocks to obtain the divided data includes: processing the data to be processed according to the processing parameters to perform processing according to the blocks to obtain the divided data The data after the block.
  • the compressing the divided data according to the processing parameters to obtain compressed data includes: compressing the divided data according to the compression processing parameters to obtain compression data.
  • the method further includes: grouping the compressed data according to the processing parameters, Get grouped data.
  • the grouping the compressed data according to the processing parameters to obtain grouped data of different operation processing includes: grouping the compressed data according to the grouping processing parameters to obtain the grouped data.
  • the grouping the compressed data according to the grouping processing parameter to obtain the grouped data further includes: performing parallel operation processing on the grouped data by a slave processing circuit.
  • this method can block and compress the data to be processed through a separate and simple logic hardware circuit, which can effectively reduce the data processing device between the main processing circuit and the slave processing circuit Data bandwidth.
  • the data processing device includes a decompression circuit, a main processing circuit, and a control circuit; the first input terminal of the decompression circuit and the first of the control circuit An output terminal is connected, the first input terminal of the main processing circuit is connected to the second output terminal of the control circuit, and the output terminal of the decompression circuit is connected to the second input terminal of the main processing circuit;
  • the control circuit is used for parsing arithmetic processing instructions to obtain decompression processing parameters, and inputting the decompression processing parameters to the decompression circuit, the decompression circuit is used to receive data to be decompressed, and obtain data to be decompressed according to the decompression processing parameters According to the information and the decompression processing parameters, decompress the data to be decompressed to obtain decompressed data, and the main processing circuit is configured to group the received decompressed data according to the processing parameters.
  • the data processing device further includes a slave processing circuit, a storage circuit, and a control circuit
  • the slave processing circuit is used to perform accumulation operation and inner product operation on the received packet data
  • the storage circuit further For storing raw data
  • the control circuit is used to obtain calculation instructions, parse the calculation instructions to obtain a plurality of operation instructions, and input the plurality of operation instructions to the decompression circuit and the main processing circuit.
  • the second input terminal of the decompression circuit is connected to the output terminal of the storage circuit, and the first output terminal of the decompression circuit is connected to the input terminal of the storage circuit;
  • the main processing circuit Is connected to the input of the slave processing circuit, the output of the slave processing circuit is connected to the third input of the master processing circuit, and the second input of the storage circuit is connected to the control
  • the third output terminal of the circuit is connected, and the second output terminal of the storage circuit is connected to the input terminal of the control circuit.
  • the decompression circuit is specifically configured to receive the data to be decompressed, obtain the information contained in the header data in the data to be decompressed according to the decompression processing parameters, and according to the data contained in the header data in the data to be decompressed Information and the decompression processing parameters, decompressing the data to be decompressed to obtain decompressed data.
  • the main processing circuit includes a packet forwarding module
  • the packet forwarding module is configured to receive the decompressed data input by the decompression circuit and the packet processing parameters input by the control circuit, and according to the The grouping processing parameter performs grouping processing on the decompressed data.
  • the above data processing device can achieve the following beneficial effects: the device can decompress the decompressed data to obtain block data through a separate and simple logic hardware circuit (ie, decompression circuit), and then the block data can be processed differently from the processing circuit Operation processing, this process can reduce the data bandwidth between the main processing circuit and the slave processing circuit in the data processing device.
  • a separate and simple logic hardware circuit ie, decompression circuit
  • a data processing method includes:
  • Grouping the decompressed data according to processing parameters to obtain grouped data Grouping the decompressed data according to processing parameters to obtain grouped data.
  • obtaining the information in the data to be processed according to the decompression processing parameter includes obtaining the header data included in the data to be processed according to the decompression processing parameter.
  • the decompressing the to-be-processed data according to the information in the to-be-processed data and the decompression processing parameters to obtain decompressed data includes: according to a header included in the to-be-processed data The data and the decompression processing parameters perform decompression processing on the data to be processed to obtain decompressed data.
  • the grouping the decompressed data according to the processing parameters to obtain grouped data includes: grouping the decompressed data according to the grouping processing parameters to obtain grouped data.
  • the method further includes: performing parallel operation processing on the grouped data by using a slave processing circuit.
  • this method can decompress the data to be processed through a separate and simple logic hardware circuit, which can effectively reduce the data bandwidth between the main processing circuit and the slave processing circuit in the data processing device .
  • a data compression and decompression device includes: n compression and decompression operation execution components, and each of the compression and decompression operation execution components includes an input FIFO memory, at least one compression and decompression operation execution component, and an output FIFO memory, and the input FIFO memory and all The plurality of compression operation execution components are connected in series between the output FIFO memories, where n is a positive integer,
  • Each of the input FIFO memories is used to perform a synchronization operation on the received data stream, and transmit the data stream after the synchronization operation to the connected compression operation execution unit;
  • At least one compression and decompression operation execution component connected in series in each of the compression and decompression operation execution components, for sequentially performing a corresponding compression sub-operation on the received input data to obtain the compression encoding value of each data stream;
  • Each of the output FIFO memories is used to receive the compression code value sent by the connected compression and decompression operation execution unit, and output the compressed code value after the synchronization operation.
  • a data compression method includes:
  • n data streams perform synchronization operation on the n data streams, and compress the n data streams after the synchronization operation in parallel to obtain n compressed encoding values, where n is a positive integer;
  • this method can compress n input data streams in parallel, and FIFO memory is provided at both the input and output ends, to the input data stream and the output compression encoding result Synchronous operations are performed to ensure that the multiple data streams of the data to be compressed are compressed in parallel, or when the compressed data is decompressed, the output result is accurate.
  • a data processing device for performing machine learning calculations includes a processing circuit and a control circuit, and a first input terminal of the processing circuit is connected to an output terminal of the control circuit.
  • the processing circuit includes a block compression module;
  • control circuit is used to parse data processing instructions to obtain data processing parameters, and input the processing parameters to the block compression module; the block compression module is used to receive the received data based on the processing parameters The original data is processed into blocks to obtain block data, and the block data is compressed to obtain the information of the encoded data; the block compression module is also used to judge the data based on the information of the encoded data. If the block data meets the condition for triggering the compression bypass, the block data is used as the target compressed data.
  • the block compression module is further used to determine whether the block data does not satisfy the condition for triggering the compression bypass according to the information of the encoded data, and then continue to perform the block data Compression processing.
  • the data processing device further includes a storage circuit and a control circuit, the storage circuit is used to store original data, the control circuit is used to obtain a calculation instruction, and parse the calculation instruction to obtain multiple operations Instruction, input a plurality of the operation instructions into the block compression module.
  • the first output of the storage circuit is connected to the second input of the processing circuit, the second output of the storage circuit is connected to the input of the control circuit, and the storage The first input terminal of the circuit is connected to the output terminal of the processing circuit, and the second input terminal of the storage circuit is connected to the second output terminal of the control circuit.
  • the block compression module includes a block processing unit, a compression processing unit and a selector, a first output terminal of the block processing unit is connected to an input terminal of the compression processing unit, the The output terminal of the compression processing unit is connected to the first input terminal of the selector, and the second output terminal of the block processing unit is connected to the second input terminal of the selector;
  • the block processing unit is used to block process the received original data to obtain block data
  • the compression processing unit is used to perform compression process on the block data to obtain information of the encoded data
  • the selector is used to The received logic judgment signal determines whether the received block data output by the block processing unit is the compressed data obtained by the compression processing unit performing subsequent compression processing on the block data, and is output as the target compressed data.
  • the above-mentioned data processing device can perform block processing on the original data through the block compression module to obtain the block data, and use the compression algorithm to compress the block data. If the block data meets the conditions for triggering the compression bypass, then The block compression module can output the block data as the target compressed data, without subsequent compression processing on the block data, this process can effectively save the calculation amount of the block compression module compression processing.
  • a data processing method includes:
  • the block data determines whether the block data meets the condition for triggering the compression bypass, wherein the condition for processing the compression bypass includes that the size of the data to be processed is smaller than the size of the encoded data;
  • the block data is used as target compressed data.
  • the processing parameters include block processing parameters and compression processing parameters.
  • the block-processing the to-be-processed data according to processing parameters to obtain block data includes: performing block-processing on the to-be-processed data according to block processing parameters to obtain block data .
  • the compressing the block data according to the processing parameters to obtain information in the encoded data includes: compressing the data to be processed according to the compression processing parameters to obtain Encode the information in the data.
  • the method further includes: if not satisfied, using a compression algorithm to divide the block data The block data is subjected to subsequent compression processing to obtain target compressed data.
  • the method further includes: performing parallel arithmetic processing on the target compressed data through a processing circuit.
  • the above data processing method can effectively save the calculation amount of compression processing.
  • a data compression and decompression device includes a data division circuit and n compression and decompression operation execution components, wherein each of the compression operation execution components includes an input FIFO memory, a plurality of compression operation execution components, and an output FIFO memory, the The plurality of compression operation execution components are connected in series between the input FIFO memory and the output FIFO memory, and the data division circuit is connected to the input FIFO memory, where n is a positive integer,
  • the data dividing circuit is used to divide the compressed data into multiple data streams
  • Each of the input FIFO memories is used to perform a synchronization operation on the received data stream, and transmit the data stream after the synchronization operation to the connected compression operation execution unit;
  • the multiple compression operation execution components connected in series in each of the compression operation execution components are used to sequentially perform a corresponding decompression sub-operation on the received input data to obtain decompression results of each data stream;
  • Each of the output FIFO memories is used to receive the decompression result sent by the connected compression and decompression operation execution unit, and output the received decompression result after performing a synchronous operation.
  • a data decompression method includes:
  • n data streams perform synchronization operation on the n data streams, and decompress the n data streams after the synchronization operation in parallel to obtain n decompression sub-results, where n is a positive integer;
  • the above data compression and decompression device and data decompression method can decompress n input data streams in parallel, and FIFO memory is provided at both the input and output ends, and the input data stream and the output decompression result are synchronized to ensure parallel treatment.
  • the output result is accurate.
  • a data compression and decompression device includes: a data shuffling operation execution component, n compression and decompression operation execution components, each of the compression and decompression operation execution components includes an input FIFO memory, at least one compression and decompression operation execution component, and an output FIFO memory,
  • the plurality of compression operation execution units are connected in series between the input FIFO memory and the output FIFO memory, and the data shuffling operation execution unit is connected to the input FIFO memory, where n is a positive integer,
  • the data shuffling operation execution component is configured to shuffle the original data stream after receiving the data shuffling signal to obtain a data stream;
  • Each of the input FIFO memories is used to perform a synchronization operation on the received data stream, and transmit the data stream after the synchronization operation to the connected compression operation execution unit;
  • At least one compression and decompression operation execution component connected in series in each of the compression and decompression operation execution components, in turn, performs corresponding compression sub-operations on the received input data to obtain compression encoding values of each data stream;
  • Each of the output FIFO memories is used to receive the compression code value sent by the connected compression and decompression operation execution unit, and output the compressed code value after the synchronization operation.
  • a data compression method includes:
  • the obtained n original data streams and after receiving the data shuffling signal, perform shuffling on the subsequent data in the n original data streams to obtain n data streams, in which the subsequent data Data in each of the original data streams that have not been acquired after receiving the data shuffling signal;
  • n is a positive integer
  • the above data compression and decompression device and data compression method can realize the shuffling of the input original data stream, which can overcome the compression and decompression caused by the data in the original data stream of each compression and decompression operation execution component when the compression efficiency varies greatly.
  • the execution time of operation execution components varies greatly, reducing the problem of data compression efficiency.
  • a data compression and decompression device includes a data division circuit, a data shuffling operation execution component, and n compression and decompression operation execution components, wherein each of the compression operation execution components includes an input FIFO memory, a plurality of compression operation execution components, and An output FIFO memory, the plurality of compression operation execution parts are connected in series between the input FIFO memory and the output FIFO memory, the data division circuit, the data shuffling operation execution part, and the input FIFO memory are serially connected in sequence Then, where n is a positive integer,
  • the data division circuit is used to divide the compressed data into multiple original data streams
  • the data shuffling operation execution component is configured to shuffle the original data stream after receiving the data shuffling signal to obtain a data stream;
  • Each of the input FIFO memories is used to perform a synchronization operation on the received data stream, and transmit the data stream after the synchronization operation to the connected compression operation execution unit;
  • the plurality of compression operation execution components connected in series in each of the compression operation execution components sequentially perform corresponding decompression sub-operations on the received input data to obtain decompression results of each data stream;
  • Each of the output FIFO memories is used to receive the decompression result sent by the connected compression and decompression operation execution unit, and output the received decompression result after performing a synchronous operation.
  • a data decompression method includes:
  • the obtained n original data streams and after receiving the data shuffling signal, perform shuffling on the subsequent data in the n original data streams to obtain n data streams, in which the subsequent data Data in each of the original data streams that have not been acquired after receiving the data shuffling signal;
  • n is a positive integer
  • the above data compression and decompression device and data decompression method can realize the shuffling of the input original data stream, which can overcome the compression and decompression caused by the data in the original data stream of each compression and decompression operation execution component when the decompression efficiency varies greatly.
  • the execution time of operation execution components varies greatly, reducing the problem of data decompression efficiency.
  • a transmission instruction decoding method includes:
  • the source data and preset parameters of the data header in the transfer instruction and configure the first operation of the transfer instruction according to the source data of the data header and the preset parameters to obtain the first of the first operation Operand, wherein the first operation is used to read the target data header and the target data body in the compressed data according to the first operand, the compressed data includes multiple data headers and multiple data bodies, so The data header stores the corresponding start address and data length of the data body, the data body contains the compressed encoding value of the compressed data, and the first operand includes an immediate number or a register number;
  • the acquired instruction is parsed, and the instruction is determined to be a transmission instruction according to the instruction type and instruction type in the instruction.
  • the first operation is used to read the target data header in the compressed data from the first storage device according to the first operand, Then obtain the target data volume corresponding to the target data header according to the starting address and the data length in the target data header, wherein the first storage device is an off-chip storage device;
  • the first operation is used to read the target data header in the compressed data from the second storage device according to the first operand, and then according to the target data header The starting address and the data length in, to obtain the target data volume corresponding to the target data header, wherein the second storage device is an on-chip storage device.
  • the original address of the target data header in the first operand is obtained according to the source address and source address offset of the data header in the transfer instruction
  • the first operation of the transfer instruction is configured according to the number of data header lines in the transfer instruction, the source line feed distance, the number of single-line data headers, and preset parameters to obtain the The first operand, wherein the preset parameters include the number of target data header lines and the number of single-line target data headers.
  • the original address and quantity of the target data body in the first operand are obtained according to the original address and quantity in the target data header in the first operand;
  • the first operation of the transfer instruction is configured using the original address and number of the target data body.
  • the destination address and the destination address offset of the target data header in the second operand are obtained according to the destination address and the destination address offset of the data header in the transfer instruction
  • a data movement method includes:
  • the target data header in the compressed data is read from the first storage device according to the first operand, and then according to the target Obtaining the target data body corresponding to the target data header from the starting address and data length in the data header, wherein the first storage device is an off-chip storage device;
  • the target data header in the compressed data is read from the second storage device according to the first operand, and then according to the starting address and data in the target data header Length, to obtain the target data volume corresponding to the target data header, wherein the second storage device is an on-chip storage device.
  • the target data header in the compressed data is read according to the original address of the data header in the first operand and a preset parameter, where the preset parameter includes the number of the target data header.
  • the target data header in the read compressed data is written to the point pointed to by the second operand The storage device, and then, according to the relative positions of the target data head and the target data body in the storage device pointed to by the first operand, write the target data body correspondingly to the storage pointed to by the second operand Device.
  • a decoder including: a first configuration unit and a second configuration unit, the first configuration unit being connected to the second configuration unit;
  • the first configuration unit is configured to obtain source data and preset parameters of the data header in the transfer instruction, and configure the first operation of the transfer instruction according to the source data of the data header and the preset parameters, Obtain the first operand of the first operation, wherein the first operation is used to read the target data header and the target data body in the compressed data according to the first operand, and the compressed data includes multiple A data header and a plurality of data bodies, the data header stores the corresponding start address and data length of the data body, the data body contains a compressed encoding value of the compressed data, and the first operand includes an immediate Number or register number;
  • the second configuration unit is configured to obtain the target data of the data header in the transfer instruction, and perform the second operation of the transfer instruction according to the target data of the data header and the target data header and target data body Configuring to obtain a second operand of the second operation, wherein the second operation is used to write the obtained compressed data according to the second operand, and the second operand includes an immediate or Register number.
  • a data access device includes: a configuration unit, a data read-write unit and a direct memory access unit, the configuration unit through the data read-write unit and the direct memory access unit, the direct memory access unit Connected to the data reading and writing unit, wherein the configuration unit includes a first configuration unit and a second configuration unit;
  • the data read-write unit receives the first operand and the second operand sent by the configuration unit, and sends the first operand and the second operand to the direct memory access unit;
  • the direct memory access unit is used to complete the reading operation of the target data header and the target data body in the compressed data and the writing of the acquired compressed data according to the first operand and the second operand ⁇ Out operation.
  • the above transmission instruction decoding method, data movement method, decoder and data access device analyze the transmission instruction, configure the first operation of the transmission instruction according to the source data of the data header and the preset parameters, and obtain the first
  • the first operand of the operation configures the second operation of the transfer instruction according to the destination data of the data header and the target data header and the target data body to obtain the second operand of the second operation, according to the first operand and the second operation
  • Complete the first operation and the second operation realize the analysis of the transmission instructions, and can support the movement of compressed data.
  • a method for processing data in a compressed format is realized.
  • a method for decoding compressed instructions includes:
  • the first operand includes an immediate number or a register number
  • the compressed data includes multiple data headers and multiple data bodies, and the corresponding start address and data length of the data body are stored in the data header, and the data body includes the compression The compression code value of the data.
  • the obtained instruction is parsed, and the instruction is determined to be a compressed instruction according to the instruction type and instruction type in the instruction.
  • the first operation is used to read the original data from the first storage device according to the first operand, wherein
  • the first storage device is an off-chip storage device
  • the first operation is used to read the original data from a second storage device according to the first operand, where the second storage device is a chip Internal storage device.
  • the original address of the original data in the first operand is obtained according to the source address of the original data in the compression instruction and the line feed distance;
  • the first operation of the compressed instruction is configured according to the original address to obtain the first operand of the first operation.
  • the first operation of the compression instruction is configured according to the number of lines in the block of the data block and the number of single lines in the block to obtain the first operand of the first operation, wherein, The first operation is used to divide the original data into a plurality of data blocks according to the number of rows within the block and the number of single rows within the block in the first operand.
  • the second operation of the compression instruction is configured according to the run-length encoded source data in the compression instruction to obtain the second operand of the second operation, wherein the second operation It is used to select whether to use run-length encoding for compression according to the source data of run-length encoding in the second operand.
  • the second operation of the compression instruction is configured to obtain the second operand of the second operation, wherein the second operation is used According to the shuffling source data in the second operand, whether to perform data shuffling before the compression operation is selected.
  • the first operation of the compression instruction is configured to obtain the first operand of the first operation, wherein the first operation is used to According to the first operand, perform a non-block reading of the original data.
  • the target address of the data header in the third operand is obtained according to the destination address and address offset of the data header in the compression instruction
  • the third operation of the compression instruction is configured according to the target address of the data header to obtain the third operand of the third operation.
  • the third operation of the compression instruction is configured according to the number of data header lines, line feed distance, and number of single-line data headers in the compression instruction, to obtain the third operand of the third operation, wherein, the third operation writes the data header in the compressed data according to the number of rows of the data header in the third operand, the line feed distance, and the number of data headers in a single row.
  • the third operation of the compression instruction is configured using the placement mode parameter in the compression instruction to obtain the third operand of the third operation, and the third operation is based on the The placement mode parameter in the third operand writes the data body in the compressed data.
  • the target address and data length of the data body in the third operand are obtained according to the starting address and data length in the data header in the third operand;
  • the third operation of the compressed instruction is configured using the target address and data length of the data body.
  • a data processing method includes:
  • the compressed data includes A plurality of data heads and a plurality of data bodies
  • the data head stores the corresponding start address and data length of the data body
  • the data body contains the compressed encoding value of the compressed data
  • the third Operands include immediate numbers or register numbers.
  • the original data is read from the first storage device according to the first operand, wherein the first storage device is a slice External storage
  • the original data is read from a second storage device according to the first operand, where the second storage device is an on-chip storage device.
  • the original data is read according to the source address of the original data and the line feed distance in the first operand.
  • the read raw data is divided into multiple data blocks according to the number of rows within the block and the number of single rows within the block in the first operand.
  • the data block is sent to the storage device pointed to by the second operation data according to the source data of the run-length encoding in the second operand, and then whether to use run-length encoding for compression is selected.
  • the data header in the compressed data is written to the storage device pointed to by the third operand, and then, according to The placement mode parameters of the data head and the data body in the third operand are correspondingly written into the storage device pointed to by the third operand.
  • a decoder includes: a first configuration unit, a second configuration unit, and a third configuration unit, the first configuration unit is connected to the second configuration unit, and the first configuration unit passes the The second configuration unit is connected to the third configuration unit;
  • the first configuration unit is configured to obtain the source data of the original data in the compression instruction, and configure the first operation of the compression instruction according to the source data of the original data to obtain the first operation of the first operation Number, wherein the first operation is used to read the original data according to the first operand and divide the original data into multiple data blocks, and the first operand includes an immediate number or a register number;
  • the second configuration unit is configured to obtain the source data of the compression operation in the compression instruction, and configure the second operation of the compression instruction according to the source data of the compression operation to obtain the second operation Two operands, wherein the second operation is used to compress the data block according to the second operand;
  • the third configuration unit is configured to obtain the destination data of the data header in the compression instruction, and configure the third operation of the compression instruction according to the destination data of the data header to obtain the third operation Three operands, wherein the third operation is used to write out the data header in the compressed data according to the third operand, and then write out the data header according to the correspondence between the data header and the data body Data body, the third operand includes an immediate number or a register number, the compressed data includes multiple data headers and multiple data bodies, and the corresponding start address and data length of the data body are stored in the data header , The data body contains the compressed encoding value of the compressed data.
  • a data processing device includes a configuration unit, a data reading and writing unit, and a compression and decompression unit.
  • the configuration unit is connected to the compression and decompression unit, and the configuration unit is connected to the data reading and writing unit.
  • the compression and decompression unit is connected to the data read-write unit, wherein the configuration unit includes a first configuration unit, a second configuration unit, and a third configuration unit;
  • the data reading and writing unit receives the first operand and the third operand sent by the configuration unit, sends the second operation data to the compression and decompression unit, and according to the first operand, from the Reading the original data from the storage device pointed to by the first operand, and dividing the original data into pairs of data blocks;
  • the compression and decompression unit receives the second operand sent by the configuration unit, and performs data compression on the data block according to the second operand to obtain compressed data, where the compressed data includes multiple data Header and multiple data bodies;
  • the data read-write unit is further used to write the data header in the compressed data to the storage device pointed to by the third operand according to the third operand, and then according to the data header and the data body The corresponding relationship is written out the data body.
  • the above compression instruction decoding method, data processing method, decoder and data processing device analyze the compression instruction and configure the first operation of the compression instruction according to the source data of the original data to obtain the first operation of the first operation
  • the second operation of the compression instruction is configured according to the source data of the compression operation to obtain the second operand of the second operation
  • the third operation of the compression instruction is configured according to the destination data of the data header to obtain the third operation
  • Three operands, complete the first operation, the second operation and the third operation according to the first operand, the second operand and the third operand, realize the analysis of the compression instruction can compress the original data into a specific format, realize A data processing method for compressing original data into a specific format
  • a decoding method for decompression instructions includes:
  • the block includes a plurality of data headers and a plurality of data bodies.
  • the data header stores the corresponding start address and data length of the data body, and the data body contains the compressed encoding value of the compressed data.
  • Four operands include immediate data or register number;
  • the obtained instruction is parsed, and the instruction is determined to be a decompression instruction according to the instruction type and instruction type in the instruction.
  • the fourth operation is used to read the data block of the compressed data from the first storage device according to the fourth operand, wherein,
  • the first storage device is an off-chip storage device
  • the fourth operation is used to read a data block of compressed data from a second storage device according to the fourth operand, where the second storage device is On-chip storage device.
  • the original address of the data header in the fourth operand is obtained according to the source address and address offset of the data header in the decompression instruction
  • the fourth operation of the decompression instruction is configured according to the number of lines of the data header in the decompression instruction, the line feed distance, and the number of data headers in a single line, to obtain the fourth operand of the fourth operation, wherein, the fourth operation is used to read the data block according to the number of rows of the data header in the fourth operand, the line feed distance, and the number of data headers in a single row.
  • the original address and data length of the data body in the fourth operand are obtained according to the starting address and data length in the data header in the fourth operand;
  • the fourth operation of the decompression instruction is configured using the original address and data length of the data body.
  • the target address of the decompressed data in the fifth operand is obtained according to the destination address of the decompressed data in the decompressing instruction
  • the fifth operation of the decompression instruction is configured according to the target address of the decompression data to obtain the fifth operand of the fifth operation.
  • a data processing method includes:
  • the fourth operand is an immediate number
  • the data block of the compressed data is read from the first storage device according to the fourth operand, and the read The data block is sent out, wherein the first storage device is an off-chip storage device;
  • the fourth operand is a register number, read the data block of the compressed data from the second storage device according to the fourth operand, and send the read data block, where,
  • the second storage device is an on-chip storage device.
  • the data block of the compressed data includes multiple data heads and multiple Data volume.
  • the data block of the compressed data is read according to the number of rows of the data header in the fourth operand, the line feed distance, and the number of data headers in a single row.
  • the obtained decompressed data is written to the storage device pointed to by the fifth operand.
  • a decoder including: a first configuration unit and a second configuration unit, the first configuration unit being connected to the second configuration unit;
  • the first configuration unit is configured to obtain the number of lines within a block and the number of single lines within a block of the data block in the decompression instruction, and according to the number of lines within a block and the number of single lines within the block to the fourth of the decompression instruction
  • the operation is configured to obtain a fourth operand of the fourth operation, wherein the fourth operation is used to read a data block of compressed data according to the fourth operand, and convert the read data block
  • the data block of the compressed data includes multiple data headers and multiple data bodies, and the data header stores the corresponding start address and data length of the data body, and the data body includes the compression
  • the compressed encoding value of the data, the fourth operand includes an immediate number or a register number;
  • the second configuration unit is configured to obtain the target data of the decompressed data in the decompressed command, and configure the fifth operation of the decompressed command according to the target data of the decompressed data to obtain the fifth of the fifth operation Operand, wherein the fifth operation is used to write the obtained decompressed data according to the fifth operand, and the fifth operand includes an immediate number or a register number.
  • a data processing device includes a configuration unit, a data reading and writing unit, and a compression and decompression unit.
  • the configuration unit is connected to the compression and decompression unit, and the configuration unit is connected to the data reading and writing unit.
  • the compression and decompression unit is connected to the data reading and writing unit, wherein the configuration unit includes a first configuration unit and a second configuration unit;
  • the data read-write unit receives the fourth operand and the fifth operand sent by the configuration unit, and reads the data block of the compressed data from the storage device pointed to by the fourth operand according to the fourth operand And send the compressed data block to the compression and decompression unit;
  • the compression and decompression unit receives the compressed data block, and decompresses the compressed data block to obtain decompressed data;
  • the data read-write unit is also used to write the decompressed data to the storage device pointed to by the fifth operand according to the fifth operand.
  • the above decompression instruction decoding method, data processing method, decoder and data processing device analyze the decompression instruction and configure the fourth operation of the decompression instruction to obtain the fourth operand of the fourth operation.
  • the fifth operation is configured to obtain the fifth operand of the fifth operation, and the fourth operation and the fifth operation are completed according to the fourth operand and the fifth operand, which realizes the analysis of the decompression instruction and can convert the compressed data in a specific format
  • Decompression is implemented to implement a method of processing compressed data in a specific format.
  • a data compression device includes: at least one compression pipeline, each compression pipeline includes at least two stages of pipeline compression data unit, the pipeline compression data unit includes: encoding circuit, selection circuit and bypass channel ; Among them, the encoding method of the encoding circuit in the pipeline compressed data unit at each stage is different; the output end of the encoding circuit is connected to the input end of the selection circuit in the pipeline compression data unit of the same stage on the current compression pipeline; The output end of the selection circuit is respectively connected to one end of the bypass channel in the next-stage pipeline compression data unit on the current compression pipeline and the coding circuit in the next-stage pipeline compression data unit on the current compression pipeline. The input end of the bypass channel is connected, and the other end of the bypass channel is connected to the input end of the selection circuit in the next-stage pipeline compression data unit on the current compression pipeline; the compression pipeline is used to realize multi-level input data Compression processing; the selection circuit is used to determine the input data output to the encoding circuit in the next-stage pipeline compression data unit according to the input control signal.
  • a computing device for performing machine learning calculations includes an arithmetic unit and a control unit; the arithmetic unit includes: a master processing circuit and a plurality of slave processing circuits; the master processing circuit includes : The data compression device according to the first aspect above, and a master arithmetic circuit; the slave processing circuit includes: the data compression device according to the first aspect above, and a slave arithmetic circuit;
  • the control unit is configured to acquire original data, operation instructions, and control instructions, and send the original data, operation instructions, and control instructions to the main processing circuit;
  • the master processing circuit is configured to perform compression processing on the original data and transfer data and operation instructions with the plurality of slave processing circuits;
  • the plurality of slave processing circuits are configured to execute intermediate operations in parallel based on data transmitted from the master processing circuit and operation instructions to obtain a plurality of intermediate results, perform compression processing on the plurality of intermediate results, and then transmit them to the master Processing circuit
  • the main processing circuit is also used to perform subsequent processing on the intermediate result after compression processing to obtain a calculation result.
  • a machine learning chip includes the above computing device.
  • a chip packaging structure includes the above machine learning chip.
  • a board card including the above-mentioned chip packaging structure.
  • An electronic device includes the above-mentioned board.
  • the data compression device can flexibly configure the corresponding encoding method to compress the input data according to the actual application requirements, thereby improving the data compression efficiency; in addition, the above data compression device includes at least one compression Pipelining can achieve simultaneous compression processing of multiple input parallel data. Therefore, the data compression device proposed in this application can further increase the speed of parallel processing of data.
  • a data decompression device includes at least one decompression pipeline, and each decompression pipeline includes at least two-stage flow hydrolysis pressure data unit, the flow hydrolysis pressure data unit includes: decoding circuit, selection circuit and bypass Channel; wherein, the decoding method of the decoding circuit in the stream hydrolyzed data unit at each stage is different; the output of the decoding circuit is connected to the input of the selection circuit in the stream hydrolyzed data unit of the same stage on the current decompression pipeline ; The output of the selection circuit is respectively connected to one end of the bypass channel in the next stage hydrolyzed pressure data unit on the current decompression pipeline and the next stage hydrolyzed pressure data unit on the current decompression pipeline. The input terminal of the decoding circuit is connected, and the other end of the bypass channel is connected to the input terminal of the selection circuit in the next-stage hydrolyzed data unit on the current decompression pipeline;
  • the decompression pipeline is used to realize multi-level decompression processing of input data
  • the selection circuit is used to determine the input data to be output to the decoding circuit in the next-stage flow hydrolysis pressure data unit according to the input control signal.
  • a computing device for performing machine learning calculations includes an arithmetic unit and a control unit;
  • the arithmetic unit includes: a master processing circuit and a plurality of slave processing circuits;
  • the master processing circuit includes : The above-mentioned data decompression device, and the master operation circuit;
  • the slave processing circuit includes: the above-mentioned data decompression device, and the slave operation circuit;
  • the control unit is configured to acquire original data, operation instructions, and control instructions, and send the original data, operation instructions, and control instructions to the main processing circuit;
  • the master processing circuit is configured to perform compression processing on the original data and transfer data and operation instructions with the plurality of slave processing circuits;
  • the plurality of slave processing circuits are used to perform decompression processing on the data transmitted by the master processing circuit, and perform intermediate operations in parallel according to the decompressed data and operation instructions to obtain a plurality of intermediate results, and convert the Multiple intermediate results are sent to the main processing circuit.
  • a machine learning chip includes the above computing device.
  • the data decompression device can flexibly configure the corresponding decoding method to decompress the input compressed data according to the compression method used to compress the data, thereby improving the accuracy of understanding compression; in addition, the above data decompression Since the device includes at least one decompression pipeline, it can realize simultaneous decompression processing on multiple input parallel data. Therefore, the data decompression device proposed in this application can further increase the speed of parallel processing of data.
  • the machine learning computing device includes one or more of the above data processing devices; the machine learning computing device is used to obtain data to be calculated and control information from other processing devices and execute Designated machine learning operations, and transfer the execution results to other processing devices through the I/O interface;
  • the data processing devices may be linked and transmitted data through a specific structure
  • a plurality of the data processing devices interconnect and transmit data through the PCIE bus to support larger-scale machine learning operations; a plurality of the data processing devices share the same control system or have their own control systems; The data processing devices share memory or have their own memories; the interconnection method of multiple data processing devices is any interconnection topology.
  • the combined processing device includes the machine learning processing device as described above, a general interconnection interface, and other processing devices; the machine learning computing device interacts with the other processing devices described above to complete together User-specified operations; the combined processing device may further include storage devices respectively connected to the machine learning computing device and the other processing device for storing the machine learning computing device and the other processing device data.
  • the neural network chip includes the data processing device described above, the machine learning computing device described above, or the combined processing device described above.
  • a neural network chip packaging structure provided by an embodiment of the present application.
  • the neural network chip packaging structure includes the neural network chip described above.
  • a board card provided by an embodiment of the present application includes the neural network chip packaging structure described above.
  • An embodiment of the present application provides an electronic device including the neural network chip described above or the board described above.
  • a chip provided by an embodiment of the present application includes at least one data processing device according to any one of the above.
  • An electronic device provided by an embodiment of the present application includes the chip as described above.
  • Fig. 1 is a schematic structural diagram showing a result of placing multiple data blocks according to an exemplary embodiment
  • Fig. 2 is a schematic structural diagram of a computing device according to another exemplary embodiment
  • Fig. 3 is a schematic structural diagram of a computing device distributed in an array according to an exemplary embodiment
  • Fig. 4 is a schematic diagram of a specific structure of an arithmetic device according to an exemplary embodiment
  • Fig. 5 is a schematic structural diagram of an encoding circuit according to an exemplary embodiment
  • Fig. 6 is a schematic structural diagram of another computing device according to another exemplary embodiment
  • FIG. 7 is a schematic structural diagram of another computing device distributed in an array according to an exemplary embodiment
  • Fig. 8 is a schematic diagram of a specific structure of another computing device according to an exemplary embodiment
  • Fig. 9 is a flowchart of a data compression method according to an exemplary embodiment
  • Fig. 10 is a specific flowchart of a data compression method according to an exemplary embodiment
  • Fig. 11 is a flowchart of a method for decompressing data according to an exemplary embodiment
  • Fig. 12 is a schematic structural diagram of a data access circuit according to an exemplary embodiment
  • Fig. 13 is a flowchart of a data access method according to an exemplary embodiment
  • Fig. 14 is a schematic structural diagram of another computing device according to an exemplary embodiment
  • Fig. 15 is a flowchart showing a data processing method according to an exemplary embodiment
  • Fig. 16 is a schematic structural diagram of another computing device distributed in an array according to an exemplary embodiment
  • Fig. 17 is a schematic diagram of a specific structure of another computing device according to an exemplary embodiment
  • Fig. 18 is a schematic structural diagram of another encoding circuit according to an exemplary embodiment
  • Fig. 19 is a schematic structural diagram of another computing device according to an exemplary embodiment.
  • Fig. 20 is a flow chart showing another data processing method according to an exemplary embodiment
  • 21 is a schematic structural diagram of another computing device distributed in an array according to an exemplary embodiment
  • Fig. 22 is a schematic diagram showing a specific structure of another computing device according to an exemplary embodiment
  • Fig. 23 is a flowchart illustrating another data compression method according to an exemplary embodiment
  • Fig. 24 is a specific flowchart of another data compression method according to an exemplary embodiment
  • Fig. 25 is a flow chart showing another data processing method according to an exemplary embodiment
  • Fig. 26 is a flow chart showing a method for decompressing data according to an exemplary embodiment
  • Fig. 27 is a flowchart illustrating another data decompression method according to an exemplary embodiment
  • Fig. 28 is a specific flowchart of another data decompression method according to an exemplary embodiment
  • Fig. 29 is a schematic structural diagram of a processor according to an exemplary embodiment
  • Fig. 30 is a schematic structural diagram of a computer system according to an exemplary embodiment
  • Fig. 31 is a schematic structural diagram of an arithmetic circuit according to an exemplary embodiment
  • Fig. 32 is a schematic structural diagram of another arithmetic circuit according to an exemplary embodiment
  • Fig. 33 is a flowchart of a data processing method according to an exemplary embodiment
  • Fig. 34 is a schematic structural diagram of a data processing apparatus according to an exemplary embodiment
  • Fig. 35 is a schematic structural diagram of a computer system according to an exemplary embodiment
  • Fig. 36 is a schematic structural diagram of an arithmetic circuit according to an exemplary embodiment
  • Fig. 37 is a schematic structural diagram of another arithmetic circuit according to an exemplary embodiment.
  • Fig. 38 is a flowchart of a data processing method according to an exemplary embodiment
  • Fig. 39 is a flowchart showing another data processing method according to an exemplary embodiment
  • Fig. 40 is a flow chart showing a data encoding method according to an exemplary embodiment
  • Fig. 41 is a schematic structural diagram of a Huffman tree obtained by an encoding circuit according to an exemplary embodiment
  • Fig. 42 is a schematic structural diagram of a symbol sequence table obtained by an encoding circuit according to an exemplary embodiment
  • Fig. 43 is a specific flowchart of a data encoding method according to an exemplary embodiment
  • Fig. 44 is a flowchart of another data encoding method according to an exemplary embodiment
  • Fig. 45 is a schematic structural diagram of a processor according to an exemplary embodiment
  • Fig. 46 is a schematic structural diagram of another processor according to an exemplary embodiment
  • Fig. 47 is a schematic structural diagram of another processor according to an exemplary embodiment.
  • Fig. 48 is a schematic structural diagram of another processor according to an exemplary embodiment
  • Fig. 49 is a flowchart showing an encoding method according to an exemplary embodiment
  • Fig. 50 is a flowchart illustrating a decoding method according to an exemplary embodiment
  • Fig. 51 is a flowchart illustrating another decoding method according to an exemplary embodiment
  • Fig. 52 is a schematic structural diagram of a processor according to an exemplary embodiment
  • Fig. 53 is a schematic structural diagram of another processor according to an exemplary embodiment
  • Fig. 54 is a schematic structural diagram of another processor according to an exemplary embodiment
  • Fig. 55 is a schematic structural diagram of another processor according to an exemplary embodiment
  • Fig. 56 is a flowchart showing an encoding method according to an exemplary embodiment
  • Fig. 57 is a schematic structural diagram of a data compression device according to an exemplary embodiment
  • Fig. 58 is a schematic structural diagram of another data compression apparatus according to an exemplary embodiment
  • Fig. 59 is a schematic structural diagram of another data compression apparatus according to an exemplary embodiment.
  • Fig. 60 is a schematic structural diagram of another data compression apparatus according to an exemplary embodiment
  • Fig. 61 is a schematic structural diagram of another data compression apparatus according to an exemplary embodiment
  • Fig. 62 is a flowchart of a data compression method according to an exemplary embodiment
  • Fig. 63 is a specific flowchart of a data compression method according to an exemplary embodiment
  • Fig. 64 is a schematic diagram of a data structure according to an exemplary embodiment
  • Fig. 65 is a flow chart showing a method for decompressing data according to an exemplary embodiment
  • Fig. 66 is a schematic structural diagram of data to be calculated according to an exemplary embodiment
  • Fig. 67 is a schematic diagram showing a decompression result obtained according to an exemplary embodiment
  • Fig. 68 is a schematic structural diagram of a data processing apparatus according to an exemplary embodiment
  • Fig. 69 is a schematic structural diagram of a data processing apparatus according to an exemplary embodiment
  • Fig. 70 is a flow chart showing a data processing method according to an exemplary embodiment
  • Fig. 71 is a schematic structural diagram of a data processing apparatus according to an exemplary embodiment
  • Fig. 72 is a flow chart showing another data processing method according to an exemplary embodiment
  • Fig. 73 is a schematic structural diagram of a data processing apparatus according to an exemplary embodiment
  • Fig. 74 is a schematic flowchart of obtaining compressed data according to an exemplary embodiment
  • Fig. 75 is a flow chart showing another data processing method according to an exemplary embodiment
  • Fig. 76 is a schematic structural diagram of a data processing apparatus according to an exemplary embodiment
  • Fig. 77 is a schematic diagram showing a specific structure of decompressing compressed data to obtain decompressed data according to an exemplary embodiment
  • Fig. 78 is a flowchart of another data processing method according to an exemplary embodiment
  • Fig. 79 is a specific structural schematic diagram of a data processing apparatus according to an exemplary embodiment
  • Fig. 80 is a flow chart showing another data processing method according to an exemplary embodiment
  • Fig. 81 is a schematic structural diagram of a data compression and decompression device according to an exemplary embodiment
  • Fig. 82 is a schematic structural diagram of a data compression and decompression device according to an exemplary embodiment
  • Fig. 83 is a schematic diagram of a specific structure of a compression and decompression operation execution component according to an exemplary embodiment
  • Fig. 84 is a specific structural schematic diagram of a data compression and decompression device according to an exemplary embodiment
  • Fig. 85 is a schematic structural diagram of a compression and decompression execution component according to an exemplary embodiment
  • Fig. 86 is a schematic structural diagram of a Huffman tree obtained by a control circuit according to an exemplary embodiment
  • Fig. 87 is a schematic structural diagram of another compression and decompression execution component according to an exemplary embodiment
  • Fig. 88 is a schematic structural diagram of another compression and decompression execution component according to an exemplary embodiment
  • Fig. 89 is a specific structural schematic diagram of a compression and decompression execution component according to an exemplary embodiment
  • Fig. 90 is a flow chart showing a method for data compression according to an exemplary embodiment
  • Fig. 91 is a schematic diagram showing a specific structure of a data processing device according to an exemplary embodiment
  • Fig. 92 is a schematic structural diagram of another data processing apparatus according to an exemplary embodiment.
  • Fig. 93 is a flowchart of a method for decoding a compressed instruction according to an exemplary embodiment
  • Fig. 94 is a schematic structural diagram of a data compression apparatus according to an exemplary embodiment
  • Fig. 95 is a schematic structural diagram of a data compression apparatus according to an exemplary embodiment
  • Fig. 96 is a schematic structural diagram of another data compression apparatus according to an exemplary embodiment.
  • Fig. 97 is a schematic structural diagram of another data compression apparatus according to an exemplary embodiment.
  • Fig. 98 is a schematic structural diagram of another data compression apparatus according to an exemplary embodiment.
  • Fig. 99 is a schematic structural diagram of a computing device according to an exemplary embodiment
  • Fig. 100 is a schematic diagram of a specific structure of a computing device according to an exemplary embodiment

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请提供一种数据处理方法及装置,该装置可以根据接收到的数据存储处理参数,并将待存储数据按照目标分布形式存放,提高了数据处理装置的通用性;另外,该数据处理装置中的分块压缩模块还能够有效节省压缩处理的运算量。

Description

数据处理方法及装置
相关申请的交叉引用
本申请的相关申请分别要求于2018年12月7日申请的201811496253.7,申请号为,名称为“数据压缩方法、编码电路和运算装置”,于2018年12月7日申请的,申请号为201811496284.2,名称为“数据解压方法和编码电路”,于2018年12月7日申请的,申请号为201811497071.1,名称为“数据压缩方法、编码电路和运算装置”,于2018年12月7日申请的,申请号为201811496258.X,名称为“数据存取方法、数据处理方法、数据存取电路和运算装置”,于2018年12月24日申请的,申请号为201811581483.3,名称为“数据处理方法、装置、处理器和存储介质”,于2018年12月24日申请的,申请号为201811581510.7,名称为“数据处理方法、装置、处理器和存储介质”,于2018年12月24日申请的,申请号为201811580866.9,名称为“数据处理方法、计算机系统及存储介质”,于2018年12月28日申请的,申请号为201811625654.8,名称为“数据编码方法”,于2018年12月28日申请的,申请号为201811625442.X,名称为“数据解码方法”,于2018年12月28日申请的,申请号为201811620288.7,名称为“编码方法、处理器、编码装置及存储介质”,于2018年12月28日申请的,申请号为201811623531.0,名称为“解码方法、处理器、解码装置及存储介质”,于2018年12月28日申请的,申请号为201811620302.3,名称为“数据压缩方法、处理器、数据压缩装置及存储介质”,于2018年12月28日申请的,申请号为201811625524.4,名称为“数据压缩解压装置和数据压缩方法”,于2018年12月28日申请的,申请号为201811628245.3,名称为“数据压缩解压装置和数据解压方法”,于2018年12月28日申请的,申请号为201811628203.X,名称为“数据处理装置、方法、芯片及电子设备”,于2018年12月28日申请的,申请号为201811625000.5,名称为“数据处理装置、方法、芯片及电子设备”,于2018年12月28日申请的,申请号为201811628258.0,名称为“数据处理装置、方法、芯片及电子设备”,于2018年12月28日申请的,申请号为201811625579.5,名称为“数据处理装置、方法、芯片及电子设备”,于2018年12月28日申请的,申请号为201811628198.2,名称为“数据压缩解压装置和数据压缩方法”,于2018年12月28日申请的,申请号为201811625704.2,名称为“数据处理装置、方法、芯片及电子设备”,于2018年12月28日申请的,申请号为201811628184.0,名称为“数据压缩解压装置和数据解压方法”,于2018年12月28日申请的,申请号为201811628206.3,名称为“数据压缩解压装置和数据压缩方法”,于2018年12月28日申请的,申请号为201811628201.0,名称为“数据压缩解压装置和数据解压方法”,于2018年12月28日申请的,申请号为201811623225.7,名称为“传送指令译码方法、数据移动方法、译码器及数据存取装置”,于2018年12月28日申请的,申请号为201811622492.2,名称为“压缩指令译码方法、数据处理方法、译码器及数据处理装置”,于2018年12月28日申请的,申请号为201811623548.6,名称为“解压指令译码方法、数据处理方法、译码器及数据处理装置”, 于2018年12月27日申请的,申请号为201811607224.3,名称为“数据压缩装置及相关产品”,于2018年12月27日申请的,申请号为201811609579.6,名称为“数据解压装置及相关产品”的中国专利申请的优先权,在此将其全文引入作为参考。
技术领域
本申请涉及信息技术领域,具体涉及一种数据处理方法及装置。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于高性能数字处理装置的要求也越来越高。神经网络算法作为智能芯片广泛应用的算法之一,通常需要对大量的数据进行不同的运算处理,并在运算处理过程中或运算处理结束后将数据流存储。
目前,数据处理装置可以对大量数据压缩后进行运算处理,以缩减数据量,减少存储空间,提高传输、存储和处理效率。但是,部分压缩后的数据大小可能会大于压缩前的原始数据大小,从而导致压缩处理的运算量较大;另外,数据处理装置还可以对大量的数据流进行存储,以供运算处理时交换数据,而现有的数据处理装置并不能对压缩格式的数据进行存储,导致数据处理装置的通用性较低。
发明内容
一种数据压缩方法,包括:
根据待压缩数据的特征将所述待压缩数据划分为多个数据块;
将所述待压缩数据的各个数据块进行压缩,得到与每一数据块对应的数据头和数据体,其中,每一所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包括压缩前对应的数据块的编码数据;
根据得到的各个所述数据头得到压缩数据的头段,根据得到的各个所述数据体得到压缩数据的数据段,根据所述压缩数据的头段和所述压缩数据的数据段得到压缩数据。
在其中一个实施例中,所述根据待压缩数据的特征将所述待压缩数据划分为多个数据块,包括:
根据所述待压缩数据的数据总大小、数据的分布特征以及数据的重要程度中的一个或多个,将待压缩数据划分为多个数据块。
在其中一个实施例中,所述数据的重要程度根据数据的出现频率、数据大小确定。
在其中一个实施例中,所述根据待压缩数据的特征将所述待压缩数据划分为多个数据块,包括:根据预设值将待压缩数据划分为多个数据块。
在其中一个实施例中,所述根据得到的各个所述数据头得到压缩数据的头段,根据得到的各个所述数据体得到压缩数据的数据段,根据所述压缩数据的头段和所述压缩数据的数据段得到压缩数据,包括:
使用标识位标识各个所述数据块对应的数据头和数据体的对应关系;
将各个包含标识位的所述数据头组合得到压缩数据的头段,将各个包含标识位的所述数据体组合得到压缩数据的数据段,将所述压缩数据的头段和所述压缩数据的数据段组合得到压缩数据。
在其中一个实施例中,所述根据得到的各个所述数据头得到压缩数据的头段,根据得到的各个所述数据体得到压缩数据的数据段,根据所述压缩数据的头段和所述压缩数据的数据段得到压缩数据,包括:
根据所述待压缩数据中各个数据块之间的位置关系得到对应的数据头的摆放格式;
根据数据头的摆放格式摆放各个所述数据块对应的数据头得到压缩数据的头段,根据第一预设摆放格式摆放各个所述数据块对应的数据体得到压缩数据的数据段,将所述压缩数据的头段和所述压缩数据的数据段组合得到压缩数据。
在其中一个实施例中,所述第一预设摆放格式包括:一维紧密、二维紧密或者任一维度的紧密。
一种编码电路,包括相互连接的数据分割电路和压缩解压电路,
所述数据分割电路,用于根据待压缩数据的特征将所述待压缩数据划分为多个数据块;
压缩解压电路,用于将所述待压缩数据的各个数据块进行压缩,得到与每一数据块对应的数据头和数据体,其中,每一所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包括压缩前对应的数据块的编码数据;根据得到的各个所述数据头得到压缩数据的头段,根据得到的各个所述数据体得到压缩数据的数据段,根据所述压缩数据的头段和所述压缩数据的数据段得到压缩数据。
一种运算装置,包括:主运算单元和与所述主运算单元连接的多个从运算单元,所述主运算单元和所述多个从运算单元上设置有上述编码电路,
所述主运算单元,用于接收输入数据,并使用上述的数据压缩方法分块压缩所述输入数据得到压缩数据,并将得到的压缩数据传送至从运算单元;
所述多个从运算单元,用于解压所述压缩数据得到解压数据,并使用所述解压数据进行乘法运算,得到中间结果,并将所述中间结果传送至主运算单元;
所述主运算单元,还用于使用所述中间结果进行累法和激活运算,得到运算结果。
在其中一个实施例中,还包括分支运算单元,所述主运算单元与一个或多个所述分支运算单元连接,所述分支运算单元与一个或多个所述从运算单元连接,
所述分支运算单元,用于转发主运算单元与从运算单元之间的数据。
上述数据压缩方法、编码电路和运算装置,首先将待压缩数据进行分块,之后分块压缩各个数据块,得到与各个数据块一一对应的数据头与数据体,之后根据得到的与各个数据块对应的数据头和数据体得到压缩数据的头段和数据段,进而得到压缩数据。该方法通过将待压缩数据分块压缩,实现并行压缩各个数据块提高压缩效率的目的。
一种数据解压方法,包括:
获取压缩数据,所述压缩数据包括头段和与所述头段数据段,所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体,所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包括压缩前对应的数据块的编码数据;
将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体;
使用预设的压缩解压算法解压各个待解压数据块,得到解压数据块;
根据第二预设摆放格式摆放解压数据块,得到解压数据。
在其中一个实施例中,所述第二预设摆放格式根据压缩数据压缩前包含的数据块之间的位置关系得到。
在其中一个实施例中,将压缩数据进行分解,得到多个待解压数据块,包括:
若数据头和数据体中包含标识对应关系的标识位,则根据所述标识位的数值,确定各个待解压数据块中的数据头和数据体。
在其中一个实施例中,所述预设的压缩解压算法包括:哈夫曼编码、游程编码、LZ77中的任一一种或几种的组合。
一种数据解压方法,包括:
获取压缩数据,所述压缩数据包括头段和与所述头段数据段,所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体,所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包括压缩前对应的数据块的编码数据;
将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体;
根据编码电路的数量将得到的多个待解压数据块分组,得到多个待解压数据组;
将得到的待解压数据组分发至多个编码电路,编码电路按照预设的压缩解压算法解压接收的待解压数据组中的待解压数据块,得到多个解压数据块;
根据第二预设摆放格式摆放解压数据块,得到解压数据。
在其中一个实施例中,所述根据编码电路的数量将得到的多个待解压数据块分组,得到多个待解压数据组,包括:
若所述编码电路的数量为n,则将多个待解压数据块划分为m组,其中,m为n的整数倍。
在其中一个实施例中,将压缩数据进行分解,得到多个待解压数据块,包括:
若数据头和数据体中包含标识对应关系的标识位,则根据所述标识位的数值,确定各个待解压数据块中的数据头和数据体。
在其中一个实施例中,所述第二预设摆放格式根据压缩数据压缩前包含的数据块之间的位置关系得到。
在其中一个实施例中,所述压缩数据的数据段中各个数据体的摆放格式为一维紧密、二维紧密或者任一维度的紧密。
一种编码电路,包括:相互连接的数据分割电路和压缩解压电路,
所述数据分割电路,用于获取压缩数据,所述压缩数据包括头段和与所述头段数据段,所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体,所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包括压缩前对应的数据块的编码数据;将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体;
所述压缩解压电路,用于使用预设的压缩解压算法解压各个待解压数据块,得到解压数据块;根据第二预设摆放格式摆放解压数据块,得到解压数据。
上述数据解压方法和编码电路,首先将压缩数据进行分解,得到包含对应的数据头和数据体的待解压数据块,之后在使用传统的解压方法解压各个待解压数据块得到解压数据块,最后根据解压数据块得到解压数据。该方法将包含头段和数据段的压缩数据转化为传统解压方法可解压的数据,实施简单。该方法还分块解压压缩的数据,可以实现并行解压,提高解压效率。
一种数据压缩方法,包括:
根据编码电路的数量将待运算数据划分为多个组,得到多个待压缩数据;
根据所述待压缩数据的特征分别将所述多个待压缩数据中的各个待压缩数据划分为多个数据块;
将各个所述待压缩数据中的各个数据块分别进行压缩,得到各个所述待压缩数据中每一数据块对应的数据头和数据体,其中,每一所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包含压缩前对应的数据块的编码数据;
根据得到的所有的所述数据头得到压缩数据的头段,根据得到的所有的所述数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。
在其中一个实施例中,所述根据编码电路的数量将待运算数据划分为多个组,得到多个待压缩数据,包括:
若所述编码电路的数量为n,则将待运算数据划分为m组,其中,m为n的整数倍。
在其中一个实施例中,根据所述待压缩数据的特征分别将所述多个待压缩数据中的各个待压缩数据划分为多个数据块,包括:
根据数据总大小、数据分布特征以及数据的重要程度中的一个或多个,将待压缩数据划分为多个数据块。
在其中一个实施例中,所述数据的重要程度根据数据的出现频率、数据大小确定。
在其中一个实施例中,所述根据所述待压缩数据的特征分别将所述多个待压缩数据中的各个待压缩数据划分为多个数据块,包括:
根据经验值将待压缩数据划分为多个数据块。
在其中一个实施例中,所述根据得到的所有的所述数据头得到压缩数据的头段,根据得到的所有的所述数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据 段得到压缩数据,包括:
使用标识位标识各个数据块对应的数据头和数据体的对应关系;
将包含标识位的各个数据头组合得到压缩数据的头段,将包含标识位的各个数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段分别组合得到压缩数据。
在其中一个实施例中,所述根据得到的所有的所述数据头得到压缩数据的头段,根据得到的所有的所述数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据,包括:
根据各个所述待压缩数据之间的位置关系,以及各个所述待压缩数据中每一数据块与其他数据块之间的位置关系,得到各个所述数据头的摆放格式;
根据得到的所述数据头的摆放格式摆放各个所述数据头,得到压缩数据的头段;根据第一预设摆放格式摆放各个所述数据体,得到压缩数据的数据段,将所述压缩数据的头段和所述压缩数据的数据段组合得到压缩数据。
在其中一个实施例中,所述第一预设摆放格式包括:一维紧密、二维紧密或者任一维度的紧密。
一种编码电路,相互连接的数据分割电路和压缩解压电路,
所述数据分割电路,用于根据编码电路的数量将待运算数据划分为多个组,得到多个待压缩数据;根据所述待压缩数据的特征分别将所述多个待压缩数据中的各个待压缩数据划分为多个数据块;
所述压缩解压电路,用于将各个所述待压缩数据中的各个数据块分别进行压缩,得到各个所述待压缩数据中每一数据块对应的数据头和数据体,其中,每一所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包含压缩前对应的数据块的编码数据;根据得到的所有的所述数据头得到压缩数据的头段,根据得到的所有的所述数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。
一种运算装置,其特征在于,包括:主运算单元和与所述主运算单元连接的多个从运算单元,所述主运算单元和所述多个从运算单元上设置有上述编码电路,
所述主运算单元,用于接收输入数据,并使用上述数据压缩方法将该输入数据进行压缩,得到多个压缩数据;以及将得到的压缩数据发送至多个从运算单元;
所述多个从运算单元,用于解压接收的压缩数据,得到解压数据,并使用该解压数据进行乘法运算,得到中间结果,并将该中间结果传送至主运算单元;
所述主运算单元,还用于使用该中间结果进行累法和激活运算,得到运算结果。
上述数据压缩方法、编码电路和运算装置,首先根据编码电路的数量将待压缩数据进行分组,然后根据数据的特征将待压缩数据分块,之后分块压缩各个数据块,并根据得到的与各个数据块对应的数据头和数据体得到压缩数据的头段和数据段,进而得到压缩数据。该方法通过将待压缩数据分组并分块压缩,实现并行压缩各个数据块提高压缩效率的目的。
一种数据存取方法,所述方法包括:
将待存取数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块;
获取读写参数,并根据所述读写参数得到读写控制指令,其中,所述读写参数包括:读写起始地址、步长、读写操作次数以及单次读写块数;
根据读写控制指令,对待存取数据进行读写操作。
一种数据处理方法,包括:
使用上述的数据存取方法获取待运算数据;
将获取的待运算数据广播或分发并进行运算,得到中间结果;
对中间结果进行后续处理,得到运算结果。
一种数据存取电路,包括互相连接的读写控制电路、读写电路和存储器,
所述读写控制电路用于将待存取数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块;
所述存储器用于存储按照预设格式摆放的所述待存取数据中各个数据块;
述读写控制电路还用于生成读写参数,并根据所述读写参数得到读写控制指令,其中,所述读写参数包括:读写起始地址、步长、读写操作次数以及单次读写块数;
所述读写电路,用于根据读写控制指令,对待存取数据进行读写操作。
一种运算装置,包括主运算单元和多个从运算单元,所述多个从运算单元分别与所述主运算单元连接,所述主运算单元上设置有上述的数据存取电路,
所述主运算单元,用于使用上述的数据存取方法读取输入数据,并对所述输入数据执行前序处理,以及与所述多个从运算单元之间传输数据;
所述多个从运算单元,用于使用从主运算单元传输的数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主运算单元;
所述主运算单元,还用于对从运算单元传输来的多个中间结果进行后续处理。
上述数据存取方法、数据处理方法、数据存取电路和运算装置,通过生成读写参数,有目的的获取待存取数据中的数据块。可以实现不必按照存储顺序访问存储的数据中的数据块,且上述实施例中的数据存取方法中通过引入步长和单次读写块数这些存取参数,实现了按照二维方式访问存储的数据,这为处理自然图像、特征图等具有二维相似性的数据提供了极大地便利。
一种数据处理方法,应用于处理器中,所述方法包括如下步骤:
获取神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
根据所述第二输入数据进行正向运算,获得正向运算结果;
若所述正向运算结果不满足预设需求,则对所述神经网络进行重训练,直至所述正向运算结果满足预设需求。
在其中一个实施例中,所述方法还包括如下步骤:
根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;若所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,若所述正向运算结果不满足预设需求,对所述神经网络进行重训练,直至所述正向运算结果满足预设需求的步骤,包括:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
根据所述梯度值更新所述神经网络的权值数据,之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。
在其中一个实施例中,所述的根据所述正向运算结果与预设的目标运算结果,计算损失函数的步骤,包括:
对所述正向运算结果进行有损压缩编码后再对所述正向运算结果进行解压缩;
根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。
在其中一个实施例中,若所述正向运算结果不满足预设需求,对所述神经网络进行重训练,直至所述正向运算结果满足预设需求的步骤,包括:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
对所述梯度值进行有损压缩编码后再对所述有损压缩编码后的梯度值进行解压缩,根据所述解压缩后获得的梯度值更新所述权值数据;
对所述权值数据进行有损压缩编码后再对所述有损压缩编码后的权值数据进行解压缩;之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。
在其中一个实施例中,所述的根据所述正向运算结果与预设的目标运算结果,计算损失函数的步骤,包括:
将所述正向运算结果与预设的训练数据集进行正向运算,获得收敛结果;
根据所述收敛结果与所述目标运算结果,确定所述损失函数。
在其中一个实施例中,所述处理器包含至少两个处理电路,至少两个所述处理电路包括主处理电路和从处理电路;所述的根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,包括:
所述主处理电路将所述第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的权值数据进行解压缩,并根 据解压缩后的所述权值数据进行正向运算得到第一中间结果,将所述第一中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得所述正向运算结果。
在其中一个实施例中,所述方法还包括如下步骤:
所述主处理电路根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述主处理电路确定所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;
若所述主处理电路确定所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,若所述正向运算结果不满足预设需求,则对所述神经网络进行重训练,直至所述正向运算结果满足预设需求,包括:
所述主处理电路在确定所述损失函数的值大于或等于所述目标精度时,所述主处理电路对所述损失函数进行有损压缩编码,并将所述有损压缩编码后获得的处于压缩状态的损失函数传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的损失函数进行解压缩,并根据解压缩后的所述损失函数进行反向运算得到第二中间结果,将所述第二中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第二中间结果进行解压缩,并根据解压缩后的第二中间结果获得所述梯度值;
所述主处理电路根据所述梯度值更新所述第二输入数据的权值数据,之后,返回所述主处理电路将所述第二输入数据的权值数据进行有损压缩,并将处于压缩状态的权值数据传送至各个所述从处理电路的步骤,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述方法还包括如下步骤:
获取所述神经网络的第三输入数据;
对所述第三输入数据进行有损压缩编码,获得所述第一输入数据。
在其中一个实施例中,对所述第三输入数据进行有损压缩编码,获得所述第一输入数据的步骤,包括:
根据预设的目标精度获得目标压缩率;
根据所述目标压缩率对所述第三输入数据进行有损压缩编码,获得所述第一输入数据。
在其中一个实施例中,所述有损压缩编码包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。
一种数据处理装置,所述装置包括:
获取模块,获取所述神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压模块,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
训练模块,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行重训练,直至所述正向运算结果满足预设需求。
一种处理器,包括:
读写电路,用于获取神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压电路,所述解压电路与所述读写电路连接,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
运算电路,所述运算电路连接所述解压电路,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行重训练,直至所述正向运算结果满足预设需求。
在其中一个实施例中,所述运算电路还用于:
根据所述正向运算结果与预设的目标运算结果,计算损失函数;
在所述损失函数的值大于或等于预设的目标精度时,则确定所述正向运算结果不满足所述预设需求;在所述损失函数的值小于所述预设的目标精度时,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,所述运算电路在确定所述正向运算结果不满足所述预设需求时,对所述神经网络进行重训练,直至所述正向运算结果满足预设需求时,所述运算电路用于:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数对进行反向运算,获得梯度值;
根据所述梯度值更新所述神经网络的权值,获得更新后的输入数据;
之后,所述运算电路用于根据所述第二输入数据进行正向运算,获得正向运算结果,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述处理器还包括压缩电路,所述压缩电路连接所述运算电路和所述读写电路;
所述压缩电路用于对所述正向运算结果进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的正向运算结果进行解压缩;
所述运算电路还用于根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。
在其中一个实施例中,所述运算电路还用于在所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
所述压缩电路还用于对所述梯度值进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的梯度值进行解压缩;
所述运算电路还用于根据所述解压缩后获得的梯度值更新所述神经网络的权值数据;
所述压缩电路还用于对所述权值数据进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的权值数据进行解压缩;
之后,所述运算电路用于根据所述第二输入数据进行正向运算,获得正向运算结果,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述运算电路包括主处理电路和至少一个从处理电路,每个所述从处理电路均连接至所述主处理电路;所述主处理电路上设置有第三压缩电路和第三解压电路;各个所述从处理电路上设置有第四解压电路和第四压缩电路;
所述第三压缩电路用于将所述第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述第四解压电路;
各个所述第四解压电路分别用于对接收到的所述处于压缩状态的权值数据进行解压缩;
各个所述从处理电路分别用于根据解压缩后的所述权值数据进行正向运算得到第一中间结果,各个所述第四压缩电路分别用于对相应的所述第一中间结果进行有损压缩编码;
所述第三解压电路用于对各个所述从处理电路传送的第一中间结果进行解压缩,所述主处理电路用于根据解压缩后的第一中间结果获得所述正向运算结果。
在其中一个实施例中,所述主处理电路还用于根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述主处理电路确定所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;
若所述主处理电路确定所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,在所述主处理电路确定所述损失函数的值大于或等于所述目标精度时,所述第三压缩电路还用于对所述损失函数进行有损压缩编码,并将所述有损压缩编码后获得的处于压缩状态的损失函数传送至各个所述第四解压电路;
各个所述第四解压电路分别用于对接收到的所述处于压缩状态的损失函数进行解压缩;
各个所述从处理电路分别用于根据解压缩后的所述损失函数进行反向运算得到第二中间结果;
各个所述第四压缩电路分别用于将所述第二中间结果进行有损压缩编码后传送至所述第三解压电路;所述第三解压电路还用于对各个所述从处理电路传送的第二中间结果进行解压缩;
所述主处理电路还用于根据解压缩后的第二中间结果获得所述梯度值;
所述主处理电路根据所述梯度值更新所述第二输入数据的权值数据,之后,所述主处理电路用于将所述第二输入数据的权值数据进行有损压缩,并将处于压缩状态的权值数据传送至各个所述从处理电路,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述处理器的压缩电路、所述第三压缩电路和所述第四压缩电路均包括第一压缩率确定模块和至少一个压缩模块,各个所述压缩模块并联设置,各个所述压缩模块均连接至所述第一压缩率确定模块;
所述第一压缩率确定模块用于根据所述预设的目标精度确定目标压缩率,并根据所述目标压缩率从至少一个所述压缩模块中选定目标压缩模块;
各个压缩模块分别用于按照不同的压缩率进行有损压缩编码。
在其中一个实施例中,所述处理器的解压电路、所述第三解压电路和第四解压电路均包括第二压缩率确定模块以及至少一个解压模块,至少一个所述解压模块并联设置,各个所述解压模块均连接至所述第二压缩率确定模块;
所述第二压缩率确定模块用于根据所述目标压缩率从至少一个所述解压模块中选定目标解压模块;
各个所述解压模块分别用于解压不同压缩率的数据。
在其中一个实施例中,所述有损压缩编码包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
上述数据处理方法、装置、处理器及存储介质,通过获取有损压缩后获得的处于压缩状态的第一输入数据,并对该第一输入数据进行解压缩,并根据解压缩后获得的第二输入数据进行正向运算,在正向运算结果不满足预设需求时,可以对该神经网络进行重训练,直至该神经网络的正向运算结果满足预设需求,本申请中通过解压缩后的第二输入数据对神经网络进行重训练,降低神经网络处理过程中数据的访存开销,从而可以提高处理器的性能,同时可以通过对神经网络进行重训练弥补有损压缩编码对精度的影响,保证重训练后的神经网络的精度,从而可以保证运算的可靠性及准确性。
一种数据处理方法,应用于处理器中,所述方法包括如下步骤:
获取神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
根据所述第二输入数据进行正向运算,获得正向运算结果;
若所述正向运算结果不满足预设需求,则对所述神经网络进行训练,直至所述正向运算结果满足预设需求。
在其中一个实施例中,所述方法还包括如下步骤:
根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;若所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,若所述正向运算结果不满足预设需求,对所述神经网络进行训练,直至所述正向运算结果满足预设需求的步骤,包括:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
根据所述梯度值更新所述神经网络的权值数据,之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。
在其中一个实施例中,所述的根据所述正向运算结果与预设的目标运算结果,计算损失函数的步骤,包括:
对所述正向运算结果进行有损压缩编码后再对所述正向运算结果进行解压缩;
根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。
在其中一个实施例中,若所述正向运算结果不满足预设需求,对所述神经网络进行训练,直至所述正向运算结果满足预设需求的步骤,包括:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
对所述梯度值进行有损压缩编码后再对所述有损压缩编码后的梯度值进行解压缩,根据所述解压缩后获得的梯度值更新所述权值数据;
对所述权值数据进行有损压缩编码后再对所述有损压缩编码后的权值数据进行解压缩;之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。
在其中一个实施例中,所述的根据所述正向运算结果与预设的目标运算结果,计算损失函数的步骤,包括:
将所述正向运算结果与预设的训练数据集进行正向运算,获得收敛结果;
根据所述收敛结果与所述目标运算结果,确定所述损失函数。
在其中一个实施例中,所述处理器包含至少两个处理电路,至少两个所述处理电路包括主处理电路和从处理电路;所述的根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,包括:
所述主处理电路将所述第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的权值数据进行解压缩,并根据解压缩后的所述权值数据进行正向运算得到第一中间结果,将所述第一中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得所述正向运算结果。
在其中一个实施例中,所述方法还包括如下步骤:
所述主处理电路根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述主处理电路确定所述损失函数的值大于或等于预设的目标精度,则确定所述正 向运算结果不满足所述预设需求;
若所述主处理电路确定所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,若所述正向运算结果不满足预设需求,则对所述神经网络进行训练,直至所述正向运算结果满足预设需求,包括:
所述主处理电路在确定所述损失函数的值大于或等于所述目标精度时,所述主处理电路对所述损失函数进行有损压缩编码,并将所述有损压缩编码后获得的处于压缩状态的损失函数传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的损失函数进行解压缩,并根据解压缩后的所述损失函数进行反向运算得到第二中间结果,将所述第二中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第二中间结果进行解压缩,并根据解压缩后的第二中间结果获得所述梯度值;
所述主处理电路根据所述梯度值更新所述第二输入数据的权值数据,之后,返回所述主处理电路将所述第二输入数据的权值数据进行有损压缩,并将处于压缩状态的权值数据传送至各个所述从处理电路的步骤,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述方法还包括如下步骤:
获取所述神经网络的第三输入数据;
对所述第三输入数据进行有损压缩编码,获得所述第一输入数据。
在其中一个实施例中,对所述第三输入数据进行有损压缩编码,获得所述第一输入数据的步骤,包括:
根据预设的目标精度获得目标压缩率;
根据所述目标压缩率对所述第三输入数据进行有损压缩编码,获得所述第一输入数据。
在其中一个实施例中,所述有损压缩编码包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。
一种数据处理装置,所述装置包括:
获取模块,获取所述神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压模块,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
训练模块,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行训练,直至所述正向运算结果满足预设需求。
一种处理器,包括:
读写电路,用于获取神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压电路,所述解压电路与所述读写电路连接,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
运算电路,所述运算电路连接所述解压电路,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行训练,直至所述正向运算结果满足预设需求。
在其中一个实施例中,所述运算电路还用于:
根据所述正向运算结果与预设的目标运算结果,计算损失函数;
在所述损失函数的值大于或等于预设的目标精度时,则确定所述正向运算结果不满足所述预设需求;在所述损失函数的值小于所述预设的目标精度时,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,所述运算电路在确定所述正向运算结果不满足所述预设需求时,对所述神经网络进行训练,直至所述正向运算结果满足预设需求时,所述运算电路用于:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数对进行反向运算,获得梯度值;
根据所述梯度值更新所述神经网络的权值,获得更新后的输入数据;
之后,所述运算电路用于根据所述第二输入数据进行正向运算,获得正向运算结果,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述处理器还包括压缩电路,所述压缩电路连接所述运算电路和所述读写电路;
所述压缩电路用于对所述正向运算结果进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的正向运算结果进行解压缩;
所述运算电路还用于根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。
在其中一个实施例中,所述运算电路还用于在所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
所述压缩电路还用于对所述梯度值进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的梯度值进行解压缩;
所述运算电路还用于根据所述解压缩后获得的梯度值更新所述神经网络的权值数据;
所述压缩电路还用于对所述权值数据进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的权值数据进行解压缩;
之后,所述运算电路用于根据所述第二输入数据进行正向运算,获得正向运算结果,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述运算电路包括主处理电路和至少一个从处理电路,每个所述从处理电路均连接至所述主处理电路;所述主处理电路上设置有第三压缩电路和第三解压电路;各个所述从处理电路上设置有第四解压电路和第四压缩电路;
所述第三压缩电路用于将所述第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述第四解压电路;
各个所述第四解压电路分别用于对接收到的所述处于压缩状态的权值数据进行解压缩;
各个所述从处理电路分别用于根据解压缩后的所述权值数据进行正向运算得到第一中间结果,各个所述第四压缩电路分别用于对相应的所述第一中间结果进行有损压缩编码;
所述第三解压电路用于对各个所述从处理电路传送的第一中间结果进行解压缩,所述主处理电路用于根据解压缩后的第一中间结果获得所述正向运算结果。
在其中一个实施例中,所述主处理电路还用于根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述主处理电路确定所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;
若所述主处理电路确定所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,在所述主处理电路确定所述损失函数的值大于或等于所述目标精度时,所述第三压缩电路还用于对所述损失函数进行有损压缩编码,并将所述有损压缩编码后获得的处于压缩状态的损失函数传送至各个所述第四解压电路;
各个所述第四解压电路分别用于对接收到的所述处于压缩状态的损失函数进行解压缩;
各个所述从处理电路分别用于根据解压缩后的所述损失函数进行反向运算得到第二中间结果;
各个所述第四压缩电路分别用于将所述第二中间结果进行有损压缩编码后传送至所述第三解压电路;所述第三解压电路还用于对各个所述从处理电路传送的第二中间结果进行解压缩;
所述主处理电路还用于根据解压缩后的第二中间结果获得所述梯度值;
所述主处理电路根据所述梯度值更新所述第二输入数据的权值数据,之后,所述主处理电路用于将所述第二输入数据的权值数据进行有损压缩,并将处于压缩状态的权值数据传送至各个所述从处理电路,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述处理器的压缩电路、所述第三压缩电路和所述第四压缩电路均包括第一压缩率确定模块和至少一个压缩模块,各个所述压缩模块并联设置,各个所述压缩模块均连接至所述第一压缩率确定模块;
所述第一压缩率确定模块用于根据所述预设的目标精度确定目标压缩率,并根据所述目标压缩率从至少一个所述压缩模块中选定目标压缩模块;
各个压缩模块分别用于按照不同的压缩率进行有损压缩编码。
在其中一个实施例中,所述处理器的解压电路、所述第三解压电路和第四解压电路均 包括第二压缩率确定模块以及至少一个解压模块,至少一个所述解压模块并联设置,各个所述解压模块均连接至所述第二压缩率确定模块;
所述第二压缩率确定模块用于根据所述目标压缩率从至少一个所述解压模块中选定目标解压模块;
各个所述解压模块分别用于解压不同压缩率的数据。
在其中一个实施例中,所述有损压缩编码包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
上述数据处理方法、装置、处理器及存储介质,通过获取有损压缩后获得的处于压缩状态的第一输入数据,并对该第一输入数据进行解压缩,并根据解压缩后获得的第二输入数据进行正向运算,在正向运算结果不满足预设需求时,可以对该神经网络进行训练,直至该神经网络的正向运算结果满足预设需求,本申请中通过解压缩后的第二输入数据对神经网络进行训练,降低神经网络处理过程中数据的访存开销,从而可以提高处理器的性能,同时可以通过对神经网络进行训练弥补有损压缩编码对精度的影响,保证训练后的神经网络的精度,从而可以保证运算的可靠性及准确性。
一种数据处理方法,所述方法包括如下步骤:
第一处理器根据获取的神经网络的输入数据进行正向运算,获得第一正向运算结果;
若所述第一处理器确定所述第一正向运算结果不满足预设需求,则所述第一处理器对所述输入数据进行有损压缩编码,并将所述有损压缩编码后的输入数据传送至第二处理器;
所述第二处理器对所述有损压缩编码的输入数据进行解压缩,并根据所述有损压缩编码的输入数据对所述神经网络进行训练或重训练,直至所述第二处理器获得的第二正向运算结果满足所述预设需求。
在其中一个实施例中,所述方法还包括如下步骤:
所述第一处理器根据所述第一正向运算结果与预设的目标运算结果,获得第一损失函数;
若所述第一损失函数的值小于预设的目标精度,则所述第一处理器确定所述第一正向运算结果满足所述预设需求;
若所述第一损失函数的值大于或等于所述预设的目标精度,则所述第一处理器确定所述第一正向运算结果不满足所述预设需求。
在其中一个实施例中,所述第二处理器根据所述有损压缩编码后的输入数据对所述神经网络进行训练或重训练,直至所述第二处理器获得的第二正向运算结果满足所述预设需求的步骤,包括:
所述第二处理器根据所述有损压缩编码的输入数据进行正向运算,获得第二正向运算 结果;
所述第二处理器根据所述第二正向运算结果确定第二损失函数;
若所述第二损失函数的值大于或等于预设的目标精度,则根据所述第二损失函数进行反向运算,获得梯度值;
所述第二处理器根据所述梯度值更新所述有损压缩编码后的输入数据的权值数据,获得更新后的权值数据,之后,返回所述第二处理器根据所述有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果的步骤,直至所述第二正向运算结果满足所述预设需求。
在其中一个实施例中,所述第一处理器对所述输入数据进行有损压缩编码,并将所述有损压缩编码的输入数据传送至第二处理器的步骤,包括:
所述第一处理器根据所述预设的目标精度确定目标压缩率;
所述第一处理器根据所述目标压缩率对所述输入数据以及所述第一损失函数进行有损压缩编码,获得交互数据,并将所述交互数据传送至所述第二处理器。
在其中一个实施例中,所述第二处理器对所述有损压缩编码后的输入数据进行解压缩,并根据所述有损压缩编码的输入数据进行训练或重训练,直至所述第二处理器获得的第二正向运算结果满足所述预设需求的步骤,包括:
所述第二处理器对所述第一处理器传送的交互数据进行解压缩;
所述第二处理器根据解压缩后获得的所述第一损失函数的值对所述神经网络进行反向运算,获得梯度值;
所述第二处理器根据所述梯度值更新所述输入数据中的权值数据,获得更新后的权值数据;
所述第二处理器根据所述更新后的权值数据对所述神经网络进行训练或重训练,直至所述第二处理器获得的第二正向运算结果满足所述预设需求。
在其中一个实施例中,所述第二处理器根据所述更新后的权值数据对所述神经网络进行训练或重训练,直至所述第二处理器获得的第二正向运算结果满足所述预设需求的步骤,还包括如下步骤:
所述第二处理器根据所述更新后的权值数据对所述神经网络进行正向运算,获得第二正向运算结果;
所述第二处理器根据所述第二正向运算结果确定第二损失函数;
所述第二处理器在所述第二损失函数的值大于或等于所述预设的目标精度时,所述第二处理器根据所述第二损失函数的值对所述神经网络进行反向运算,获得梯度值;
之后返回所述第二处理器根据所述梯度值更新所述输入数据的权值数据,获得更新后的权值数据的步骤,直至所述神经网络的第二正向运算结果满足所述预设需求。
在其中一个实施例中,所述第二处理器根据所述第二正向运算结果确定第二损失函数的步骤,包括:
所述第二处理器对所述第二正向运算结果进行有损压缩编码后在对所述第二正向运 算结果进行解压缩;
所述第二处理器根据解压缩后的第二正向运算结果确定所述第二损失函数。
在其中一个实施例中,所述第二处理器根据所述梯度值更新所述有损压缩编码后的输入数据的权值数据,获得更新后的权值数据,之后,所述第二处理器根据所述有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果的步骤,包括:
所述第二处理器对所述梯度值进行有损压缩编码后再对所述有损压缩编码后的梯度值进行解压缩,根据所述解压缩后获得的梯度值更新所述权值数据,获得更新后的权值数据;
所述第二处理器对所述权值数据进行有损压缩编码后再对所述有损压缩编码后的权值数据进行解压缩;
所述第二处理器根据解压缩后的所述权值数据进行正向运算,获得第二正向运算结果。
在其中一个实施例中,所述第二处理器包含至少两个处理电路,至少两个所述处理电路包括主处理电路和从处理电路;所述第二处理器对所述有损压缩编码后的输入数据进行解压缩,并根据所述有损压缩编码的输入数据进行训练或重训练,直至所述第二处理器获得的第二正向运算结果满足所述预设需求的步骤,包括:
所述主处理电路对所述有损压缩编码后的输入数据进行解压缩,获得所述神经网络的输入神经元数据和权值数据;
所述主处理电路对所述权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的权值数据进行解压缩,并根据解压缩后的所述权值数据对所述神经网络进行正向运算得到第一中间结果,将所述第一中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得所述第二正向运算结果;
所述主处理电路根据所述第二正向运算结果与预设的目标运算结果,计算第二损失函数;
若所述主处理电路确定所述第二损失函数的值小于预设的目标精度,则确定所述第二正向运算结果满足所述预设需求。
在其中一个实施例中,所述方法还包括如下步骤:
所述主处理电路在确定所述第二损失函数的值大于或等于所述目标精度时,所述主处理电路对所述第二损失函数进行有损压缩编码,并将所述有损压缩编码后获得的处于压缩状态的第二损失函数传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的第二损失函数进行解压缩,并根据解压缩后的所述第二损失函数对所述神经网络进行反向运算得到第二中间结果,将所述第二中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第二中间结果进行解压缩,并根据解压缩后的第二中间结果获得所述梯度值;
所述主处理电路根据所述梯度值更新所述神经网络的权值数据,获得更新后的权值数据,之后,返回所述主处理电路对所述权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述从处理电路的步骤。
在其中一个实施例中,所述主处理电路对所述有损压缩编码后的输入数据进行解压缩,获得所述神经网络的输入神经元数据和权值数据的步骤,还包括:
所述主处理电路获取交互数据,并将交互数据传送至各个从处理电路;
各个所述从处理电路分别对该交互数据进行解压缩,并根据解压缩后获得的第一损失函数的值对神经网络进行反向运算,获得中间计算结果,并将中间计算结果进行有损编码后传送至主处理电路;
所述主处理电路根据中间计算结果计算获得梯度值,并根据梯度值更新输入数据中的权值数据,获得更新后的权值数据。
在其中一个实施例中,所述方法还包括:
所述第二处理器在确定所述第二正向运算结果满足所述预设需求时,对所述神经网络的当前权值数据进行有损压缩编码,并将有损压缩编码后的神经网络的当前权值数据传送至所述第一处理器。
在其中一个实施例中,所述有损压缩编码包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。
一种计算机系统,包括第一处理器和与所述第一处理器连接的第二处理器;
所述第一处理器用于根据获取的输入数据进行正向运算,获得第一正向运算结果,其中,所述输入数据为有损压缩编码后获得的数据;并在确定所述第一正向运算结果不满足预设需求,对所述输入数据进行有损压缩编码,并将所述有损压缩编码后的输入数据传送至第二处理器;
所述第二处理器对所述有损压缩编码后的输入数据进行解压缩,并根据所述有损压缩编码后的输入数据对所述神经网络进行训练或重训练,直至所述第二处理器获得的第二正向运算结果满足所述预设需求。
在其中一个实施例中,所述第一处理器包括:
第一运算电路,用于根据所述第一正向运算结果与预设的目标运算结果,获得第一损失函数;在所述第一损失函数的值小于预设的目标精度时,则确定所述第一正向运算结果满足所述预设需求;在所述第一损失函数的值大于或等于所述预设的目标精度,则确定所述第一正向运算结果不满足所述预设需求;
第一压缩电路,所述第一压缩电路连接所述第一运算电路,所述第一压缩电路用于在所述第一正向运算结果不满足所述预设需求时,根据所述预设的目标精度确定目标压缩率,并根据所述目标压缩率对所述输入数据进行有损压缩编码;以及
第一读写电路,所述第一读写电路连接所述第一压缩电路,用于将所述输入数据传送 至第二处理器。
在其中一个实施例中,所述第二处理器包括:
第二解压电路,用于对所述第一处理器传送的所述有损压缩编码后的输入数据进行解压缩;
第二运算电路,用于根据所述有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果,根据所述第二正向运算结果确定第二损失函数;在所述第二损失函数的值大于或等于预设的目标精度,根据所述第二损失函数进行反向运算,获得梯度值;并根据所述梯度值更新所述有损压缩编码后的输入数据的权值数据,获得更新后的权值数据;之后,所述第二运算电路用于根据所述有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果的步骤,直至所述第二正向运算结果满足所述预设需求。
在其中一个实施例中,所述第一处理器包括第一压缩电路、第一运算电路和第一读写电路,所述第二处理器包括第二解压电路和第二运算电路;
所述第一运算电路用于根据所述第一正向运算结果与预设的目标运算结果,获得第一损失函数;
所述第一压缩电路用于根据预设的目标精度确定目标压缩率,并根据所述目标压缩率对所述输入数据以及所述第一损失函数进行有损压缩编码,获得交互数据;
所述第一读写电路用于将所述交互数据传送至所述第二处理器;
所述第二解压电路用于对所述第一处理器传送的交互数据进行解压缩;
所述第二运算电路用于根据解压缩后获得的所述第一损失函数的值对所述神经网络进行反向运算,获得梯度值,根据所述梯度值更新所述输入数据中的权值数据,获得更新后的权值数据;并根据所述更新后的权值数据对所述神经网络进行训练或重训练,直至所述第二处理器获得的第二正向运算结果满足所述预设需求。
在其中一个实施例中,所述第二运算电路用于根据所述更新后的权值数据对所述神经网络进行训练或重训练,直至所述第二处理器获得的第二正向运算结果满足所述预设需求时,所述第二运算电路用于:
根据所述更新后的权值数据对所述神经网络进行正向运算,获得第二正向运算结果;
根据所述第二正向运算结果和所述预设的目标运算结果,获得第二损失函数;
在所述第二损失函数的值大于或等于所述预设的目标精度时,根据所述第二损失函数的值对所述神经网络进行反向运算,获得梯度值,之后返回所述第二处理器根据所述梯度值更新所述输入数据的权值数据,获得更新后的权值数据的步骤,直至所述神经网络的第二正向运算结果满足所述预设需求。
在其中一个实施例中,所述第二处理器还包括第二压缩电路,所述第二压缩电路连接所述第二运算电路;
所述第二压缩电路用于对所述第二正向运算结果进行有损压缩编码;
所述第二解压电路还用于对有损压缩编码后的所述第二正向运算结果进行解压缩;
所述第二运算电路还用于根据解压缩后的第二正向运算结果确定所述第二损失函数。
在其中一个实施例中,所述第二压缩电路还用于对所述梯度值进行有损压缩编码;
所述第二解压电路还用于对所述有损压缩编码后的梯度值进行解压缩;
所述第二运算电路还用于根据所述解压缩后获得的梯度值更新所述权值数据,获得更新后的权值数据;
所述第二压缩电路还用于对所述权值数据进行有损压缩编码;
所述第二解压电路还用于对所述有损压缩编码后的权值数据进行解压缩;
所述第二运算电路还用于根据解压缩后的所述权值数据进行正向运算,获得第二正向运算结果。
在其中一个实施例中,所述第二运算电路包括主处理电路和从处理电路;所述主处理电路上设置有第三压缩电路和第三解压电路,所述从处理电路上设置有第四压缩电路和第四解压电路;
所述第三压缩电路用于对权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述第四解压电路;
各个所述第四解压电路分别用于对接收到的所述处于压缩状态的权值数据进行解压缩;
各个所述从处理电路用于根据解压缩后的所述权值数据对所述神经网络进行正向运算得到第一中间结果;
各个所述第四压缩电路用于将所述第一中间结果进行有损压缩编码后传送至所述第三解压电路;
所述第三解压电路用于对各个所述从处理电路传送的第一中间结果进行解压缩,所述主处理电路用于根据解压缩后的第一中间结果获得所述第二正向运算结果;
所述主处理电路还用于根据所述第二正向运算结果与预设的目标运算结果,计算第二损失函数;
若所述主处理电路确定所述第二损失函数的值小于预设的目标精度,则确定所述第二正向运算结果满足所述预设需求。
在其中一个实施例中,所述第三压缩电路还用于在所述第二损失函数的值大于或等于所述目标精度时,对所述第二损失函数进行有损压缩编码,并将所述有损压缩编码后获得的处于压缩状态的第二损失函数传送至各个所述第四解压电路;
各个所述第四解压电路分别对接收到的所述处于压缩状态的第二损失函数进行解压缩;
各个所述从处理电路用于根据解压缩后的所述第二损失函数对所述神经网络进行反向运算得到第二中间结果;
各个所述第四压缩电路用于将所述第二中间结果进行有损压缩编码后传送至所述第三解压电路;
所述第三解压电路还用于对各个所述从处理电路传送的第二中间结果进行解压缩,所述主处理电路还用于根据解压缩后的第二中间结果获得所述梯度值;
所述主处理电路还用于根据所述梯度值更新所述神经网络的权值数据,获得更新后的权值数据,之后,所述主处理电路用于对所述权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述从处理电路。
在其中一个实施例中,所述第二处理器还包括第二读写电路;
所述第二压缩电路还用于在所述第二正向运算结果满足所述预设需求时,对所述神经网络的当前权值数据进行有损压缩编码;
所述第二读写电路用于将有损压缩编码后的神经网络的当前权值数据传送至所述第一处理器。
在其中一个实施例中,所述有损压缩编码包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。
在其中一个实施例中,所述第一处理器的第一压缩电路、所述第二处理器的第二压缩电路、所述第三压缩电路和所述第四压缩电路均包括第一压缩率确定模块和至少一个压缩模块,各个所述压缩模块并联设置,各个所述压缩模块均连接至所述第一压缩率确定模块;
所述第一压缩率确定模块用于根据所述预设的目标精度确定目标压缩率,并根据所述目标压缩率从至少一个所述压缩模块中选定目标压缩模块;
各个压缩模块分别用于按照不同的压缩率进行有损压缩编码。
在其中一个实施例中,所述第一处理器的第一解压电路、所述第二处理器的第二解压电路、所述第三解压电路和第四解压电路均包括第二压缩率确定模块以及至少一个解压模块,至少一个所述解压模块并联设置,各个所述解压模块均连接至所述第二压缩率确定模块;
所述第二压缩率确定模块用于根据所述目标压缩率从至少一个所述解压模块中选定目标解压模块;
各个所述解压模块分别用于解压不同压缩率的数据。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
上述数据处理方法、计算机系统和存储介质,通过终端与云端服务器协同的方式,并在云端服务器实现对神经网络的训练或重训练过程,可以降低终端的运算量;同时,终端和云端服务器之间的传送的数据均为有损压缩编码后获得数据,从而可以减少数据的访存开销,提高该计算机系统的性能。
一种数据编码方法,所述方法包括:
将待编码数据中各个符号的哈夫曼编码的码长,作为待编码数据中各个符号的编码码长;
根据待编码数据中各个符号的出现频率,降序排列所述待编码数据中的各个所述符号,得到各个所述符号的排序值;
若当前符号的编码码长与上一排序值的符号的编码码长相同,则将所述上一排序值的 符号的编码值加1,得到所述当前符号的编码值;若当前符号的编码码长与上一排序值的符号的编码码长不同,则将所述上一排序值的符号的编码值加1得到的数值后并补充尾数0,得到所述当前符号的编码值;
根据各个符号对应的符号的编码值,对所述待编码数据进行编码。
在其中一个实施例中,所述获取待编码数据中各个符号对应的符号的编码值,对应所述待编码数据进行编码,包括:
将待编码数据中各个符号按照出现频率降序排列,得到各个符号的排序值,并根据所述各个符号的排序值得到符号序列表;
根据所述待编码数据中各个符号的编码码长得到码长表;
根据所述待编码数据中各个符号的编码码长和排序值,得到待编码数据的码长边界表以及码长基础值表;
使用所述符号序列表、所述码长表、所述码长边界表以及所述码长基础值表,对所述待编码数据中各个符号进行编码。
在其中一个实施例中,根据所述待编码数据中各个符号的编码码长和排序值,得到待编码数据的码长边界表以及码长基础值表,包括:
查找所述符号序列表中每种编码码长的最大排序值的符号,并使用所述最大排序值构建所述码长边界表;
根据各个所述最大排序值以及与各个所述最大排序值对应的编码值,得到每种编码码长的基础值,根据所述每种编码码长的基础值得到所述码长基础值表。
在其中一个实施例中,使用所述最大排序值构建所述码长边界表,包括:
将码长边界表中的各个最大排序值升序排列,得到所述码长边界表。
在其中一个实施例中,所述方法还包括:
升序排列所述码长表中的各种编码码长,并使用序号依次标识降序排列的所述码长表中的各种编码码长;
升序排列所述码长边界表中的各个最大排序值,并使用与所述码长表对应的序号依次标识降序排列的所述码长边界表中的各个最大排序值;
升序排列所述码长基础值表中的各个基础值,并使用与所述码长表对应的序号依次标识降序排列的所述码长基础值表中的各个基础值。
在其中一个实施例中,所述符号序列表的初始排序值为0。
在其中一个实施例中,根据各个所述最大排序值以及与各个所述最大排序值对应的编码值,包括:
将各个所述最大排序值对应的编码值减去排序值,得到每种编码码长的基础值。
在其中一个实施例中,使用所述符号序列表、所述码长表、所述码长边界表以及所述码长基础值表,对所述待编码数据中各个符号进行编码,包括:
根据当前符号在所述符号序列表中的排序值、所述码长边界表以及所述码长表,确定所述当前符号的编码码长;
根据所述当前符号的编码码长和所述码长基础值表,得到所述当前符号的基础值;
根据所述当前符号在所述符号序列表中的排序值和所述当前符号的基础值,得到所述当前符号的初始编码值;
根据所述当前符号的初始编码值和所述当前符号的编码码长,得到所述当前符号的编码值。
在其中一个实施例中,根据所述当前符号在所述符号序列表中的排序值和所述当前符号的基础值,得到所述当前符号的初始编码值,包括:
将当前符号的在所述符号序列表中的排序值与所述当前符号的基础值相加,得到当前符号的初始编码值。
在其中一个实施例中,所述方法还包括:
将对应编码码长的0值作为所述符号序列表中排序值最小的符号的编码值。
一种数据解码方法,所述方法包括:
获取各个符号与编码值的对应关系;
根据所述各个符号与编码值的对应关系,对待解码数据进行解码;
其中,所述各个符号与编码值的对应关系,包括:
将各个符号哈夫曼编码的码长,作为各个符号的编码码长;
根据所述各个符号的出现频率,降序排列各个所述符号,得到各个所述符号的排序值;
若当前符号的码长与上一排序值的符号的编码码长相同,则将所述上一排序值的符号的编码值加1得到所述当前符号的编码值;若当前符号的编码长度与上一排序值的符号的编码码长不同,则将所述上一位次的符号的编码值加1得到的数值补充尾数0得到所述当前符号的编码值。
上述数据编码方法,可以实现以下有益效果:该方法进行编码的数据得到的编码结果平均长度较短;另外,本数据编码方法,通过加1或者加1补尾数0的方式得到各个符号的编码值,在确定符号对应的编码值的过程有规律可循,操作简单,出差率低。
一种数据解码方法,所述方法包括:
将各个符号哈夫曼编码的码长,作为各个符号的编码码长;
根据各个符号的出现频率,降序排列各个所述符号,得到各个所述符号的排序值;
若当前符号的码长与上一排序值的符号的编码码长相同,则将所述上一排序值的符号的编码值加1得到所述当前符号的编码值;若当前符号的编码长度与上一排序值的符号的编码码长不同,则将所述上一位次的符号的编码值加1得到的数值补充尾数0得到所述当前符号的编码值;
在其中一个实施例中,根据所述各个符号与编码值的对应关系,对待解码数据进行解码,包括:
将所述各个符号按照出现频率降序排列,得到各个所述符号的排序值,并根据各个所述符号的排序值得到符号序列表;
根据各个所述符号的编码码长得到码长表;
根据所述各个符号的编码码长、编码值和排序值,得到编码值范围表以及码长基础值表;
使用所述符号序列表、所述码长表、所述编码值范围表以及所述码长基础值表,对所述待解码数据中各个编码值进行解码。
在其中一个实施例中,根据所述各个符号的编码码长和编码值,得到编码值范围表以及码长基础值表,包括:
查找所述符号序列表中每种编码码长的最大排序值的符号;
使用各个所述最大排序值的符号的编码值构建所述编码值范围表;
根据所述编码值范围表中的编码值和对应的排序值,得到每种编码码长的基础值,根据所述每种编码码长的基础值得到所述码长基础值表。
在其中一个实施例中,使用各个所述最大排序值的符号的编码值构建所述编码值范围表,包括:
将编码值范围表中的编码值升序排列,得到所述编码值范围表。
在其中一个实施例中,所述方法还包括:
升序排列所述码长表中的各种编码码长,并使用序号依次标识降序排列的所述各种编码码长;
升序排列所述编码值范围表中的各个编码值,并使用与所述码长表对应的序号依次标识降序排列的所述编码值范围表中的各个编码值;
升序排列所述码长基础值表中的各个基础值,并使用与所述码长表对应的序号依次标识降序排列的所述码长基础值表中的各个基础值。
在其中一个实施例中,所述符号序列表的初始排序值为0。
在其中一个实施例中,根据各种所述编码码长排序值最大的符号的编码值和对应的排序值,得到各种编码码长的基础值,根据所述各种编码码长的基础值得到所述码长基础值表,包括:
将所述编码值范围表中的编码值减去对应的排序值得到的数值,作为各种编码码长的基础值。
在其中一个实施例中,使用所述符号序列表、所述码长表、所述编码值范围表以及所述码长基础值表,对所述待解码数据中各个编码值进行解码,包括:
查找所述编码值范围表中不小于当前编码值的最小编码值;
根据所述编码值范围表中不小于当前编码值的最小的编码值和所述码长表得到所述当前编码值的编码码长;
根据所述当前编码值和所述码长得到所述当前编码值的初始编码值;
根据所述当前编码值的码长,确定所述当前编码值的基础值;
根据所述当前编码值的初始编码值和基础值得到当前编码值的排序值;
根据所述排序值和所述符号序列表得到所述当前编码值对应的符号。
在其中一个实施例中,根据所述当前编码值的初始编码值和基础值得到当前编码值的排序值,包括:
将当前编码值的初始编码值与基础值的差值,作为当前编码值的排序值。
在其中一个实施例中,所述方法还包括:
将对应编码码长的0值作为所述符号序列表中排序值最小的符号的编码值。
一种数据解码方法,所述方法包括:
获取各个符号与编码值的对应关系;
根据所述各个符号与编码值的对应关系,对待解码数据进行解码;
其中,所述各个符号与编码值的对应关系,包括:
将各个符号哈夫曼编码的码长,作为各个符号的编码码长;
根据所述各个符号的出现频率,降序排列各个所述符号,得到各个所述符号的排序值;
若当前符号的码长与上一排序值的符号的编码码长相同,则将所述上一排序值的符号的编码值加1得到所述当前符号的编码值;若当前符号的编码长度与上一排序值的符号的编码码长不同,则将所述上一位次的符号的编码值加1得到的数值补充尾数0得到所述当前符号的编码值。
上述数据解码方法,可以实现以下有益效果:该方法,通过加1或者加1补尾数0的方式得到各个符号的编码值,在确定符号对应的编码值的过程有规律可循,操作简单,出差率低。
一种编码方法,所述方法包括:
获取输入数据;
根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示连续排列的所述第一预设数字的数目。
在其中一个实施例中,所述方法还包括:
若连续排列的所述第一预设数字的数目大于所述游程阈值,则根据所述第一预设数字的数据位宽,将大于所述游程阈值后排列在首位的所述第一预设数字进行字符编码;
根据所述游程位宽,对大于所述游程阈值后排列在首位的所述第一预设数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
在其中一个实施例中,所述方法还包括:
若所述输入数据的首位数字为所述第一预设数字,则根据所述第一预设数字的数据位宽,将所述第一预设数字进行字符编码。
在其中一个实施例中,所述方法还包括:
根据所述游程位宽,对所述输入数据中位于所述首位数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
在其中一个实施例中,所述方法还包括:
利用第一预设字符,对字符编码后的所述第一预设数字以及字符编码后的所述第一预 设数字之后的游程进行替换。
一种处理器,所述处理器包括运算单元、与所述运算单元邻近设置的存储单元以及控制器单元,所述控制器单元连接于所述运算单元与所述存储单元之间;
其中,所述运算单元包括编码模块,所述编码模块用于根据游程位宽对输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示所述第一预设数字的数目;
所述存储单元用于存储原始数据以及编码后的数据,并与所述控制器单元以及所述运算单元之间进行数据传输;
所述控制器单元用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及所述输入数据发送至所述运算单元。
在其中一个实施例中,所述编码模块包括控制信号接口、缓存、多个寄存器、配置模块以及输出模块;
其中,所述控制信号接口用于实现所述编码模块与所述控制器单元之间的连接以及数据传输;
所述缓存分别与所述缓存邻近设置的寄存器以及所述配置模块连接,用于存储输入数据、所述第一预设字符以及第一预设字符编码;
所述多个寄存器用于存储多级流水线的执行结果;
所述配置模块用于对所述第一预设字符进行编码,得到第一预设字符编码,并将所述第一预设字符编码存储至所述缓存中;
所述输出模块用于存储并输出编码数据。
在其中一个实施例中,所述运算单元包括主处理电路和至少一个从处理电路,至少一个所述从处理电路均连接至所述主处理电路;
所述编码模块设置于所述主处理电路以及每一所述从处理电路中。
一种编码装置,所述装置包括:
输入数据获取模块,用于获取输入数据;
游程获取模块,用于根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示所述第一预设数字的数目。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述编码方法的步骤。
上述编码方法、处理器、编码装置及存储介质,通过在运算单元中设置编码模块,在第一级流水线根据游程位宽,将待编码数据中的第一预设数字进行游程编码,在第二级流水线,用预设字符替换游程编码得到的输出数据,能够对大量连续出现的预设数字进行数据压缩,节省了带宽资源;同时,利用预设字符和两级流水线执行编码操作,能够进一步提高数据压缩的效率。
一种解码方法,所述方法包括:
获取编码数据;
根据数据位宽和游程位宽,对所述编码数据进行识别,得到字符编码及游程;
将所述游程按照所述数据位宽进行展开,得到第一预设数字。
在其中一个实施例中,所述根据数据位宽和游程位宽,对所述编码数据进行识别,得到字符编码及游程,包括:
获取所述编码数据中字符串的数据长度;
若所述字符串的数据长度与所述数据位宽相等,则将所述字符串识别为字符编码;若所述字符串的数据长度与所述游程位宽相等,则将所述字符串识别为游程。
一种解码方法,所述方法包括:
获取编码数据;
对所述编码数据进行识别,得到字符编码及预设字符编码,其中,所述预设字符编码包括第一预设字符编码及第二预设字符编码;
根据数据位宽,将所述预设字符编码进行展开,得到一个第一预设数字的字符编码以及游程阈值,其中,所述游程阈值排列在所述第一预设数字的字符编码之后;
将所述游程阈值按照所述数据位宽进行展开,得到多个连续排列的所述第一预设数字,其中,所述第一预设数字的数目与所述游程阈值表示的所述第一预设数字的数目相同。
在其中一个实施例中,所述若所述编码数据中包括多个数值相同的字符编码,则通过判断所述字符编码是否包括附加字符校验位来识别所述预设字符编码,包括:
获取所述字符编码的数据长度;
将所述字符编码的数据长度与所述数据位宽进行比较;
若所述字符编码的数据长度与所述数据位宽相等,则判断所述字符编码中没有设置所述附加字符校验位;
将没有设置所述附加字符校验位的字符编码识别为所述预设字符编码。
在其中一个实施例中,所述方法还包括:
将解码后的数据在运算单元中进行转发和运算,所述运算包括乘法运算、累加运算以及激活运算。
一种处理器,所述处理器包括运算单元、与所述运算单元邻近设置的存储单元以及控制器单元,所述控制器单元连接于所述运算单元与所述存储单元;
其中,所述运算单元包括解码模块,所述解码模块用于识别编码数据,得到字符编码及游程,并将所述游程按照数据位宽进行展开,得到第一预设数字;
所述存储单元用于存储原始数据以及编码后的数据,并与所述控制器单元以及所述运算单元之间进行数据传输;
所述控制器单元用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及所述输入数据发送至所述运算单元。
在其中一个实施例中,所述解码模块包括控制信号接口、缓存、多个寄存器以及输出模块;
其中,所述控制信号接口用于实现所述解码模块与所述控制器单元之间的连接以及数据传输;
所述缓存与所述缓存邻近设置的寄存器连接,用于存储所述编码数据;
所述多个寄存器用于存储多级流水线的执行结果;
所述输出模块用于存储并输出解码后的数据。
在其中一个实施例中,所述运算单元包括主处理电路和至少一个从处理电路,至少一个所述从处理电路均连接至所述主处理电路;
所述解码模块设置于所述主处理电路以及每一所述从处理电路中。
一种解码装置,所述装置包括:
编码数据获取模块,用于获取编码数据;
编码数据识别模块,用于根据数据位宽和游程位宽,对所述编码数据进行识别,得到字符编码及游程;
第一预设数字获取模块,用于将所述游程按照所述数据位宽进行展开,得到第一预设数字。
一种解码装置,所述装置包括:
编码数据获取模块,用于获取编码数据;
编码数据识别模块,用于对所述编码数据进行识别,得到字符编码及预设字符编码,其中,所述预设字符编码包括第一预设字符编码及第二预设字符编码;
预设字符编码展开模块,用于根据数据位宽,将所述预设字符编码进行展开,得到一个第一预设数字的字符编码以及游程阈值,其中,所述游程阈值排列在所述第一预设数字的字符编码之后;
游程阈值展开模块,用于将所述游程阈值按照所述数据位宽进行展开,得到多个连续排列的所述第一预设数字,其中,所述第一预设数字的数目与所述游程阈值表示的所述第一预设数字的数目相同。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述解码方法的步骤。
上述解码方法、处理器、解码装置及存储介质,通过在运算单元中设置解码模块,在第一级流水线,根据数据位宽,将预设字符编码进行展开,得到一个第一预设数字的字符编码以及游程阈值,在第二级流水线,将该游程阈值按照该数据位宽进行展开,得到多个连续排列的第一预设数字,从而在数据压缩的前提下保证运算正确性;同时,利用两级流水线执行解码操作,能够进一步提高数据解压缩的效率。
一种数据压缩方法,所述方法包括:
获取当前码流的流水线级数以及当前码流已经处理的字符数量;
获取多个码流中已经处理的最小字符数量;
若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之 间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
在其中一个实施例中,所述向所述当前码流中插入第一预设字符,包括:
在配置单元中对所述第一预设字符进行编码,得到第一预设字符编码;
当流水线发生死锁时,在所述当前码流的输出模块中插入所述第一预设字符编码。
在其中一个实施例中,所述方法还包括:
获取多个码流中输出模块的存储容量,其中,所述多个码流中每一码流的输出模块的存储容量一致;
当所述每一码流的输出模块中的输出数据均占满所述存储容量时,将多个所述输出模块中的数据统一进行输出。
在其中一个实施例中,所述方法还包括:
为与所述第一预设字符数值相同的真实数据设置附加字符位。
一种处理器,所述处理器包括运算单元、与所述运算单元邻近设置的存储单元以及控制器单元,所述控制器单元连接于所述运算单元与所述存储单元之间;
其中,所述运算单元包括数据压缩模块,所述数据压缩模块用于若当前码流已经处理的字符数量与多个码流中已经处理的最小字符数量之间的差值大于或等于当前码流的流水线级数时,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符;
所述存储单元用于存储原始数据以及编码后的数据,并与所述控制器单元以及所述运算单元之间进行数据传输;
所述控制器单元用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及所述输入数据发送至所述运算单元。
在其中一个实施例中,所述数据压缩模块包括控制信号接口、缓存、多个寄存器、累加模块、配置模块以及输出模块;
其中,所述控制信号接口用于实现所述数据压缩模块与所述控制器单元之间的连接以及数据传输;
所述缓存分别与所述缓存邻近设置的寄存器、所述配置模块以及所述输出模块连接,用于存储输入数据、中间数据、所述第一预设字符、所述第二预设字符以及第一预设字符编码;
所述多个寄存器,用于存储多级流水线的执行结果;
所述累加模块与所述累加模块邻近设置的寄存器连接,用于存储所述当前码流已经处理的字符数量;
所述配置模块用于对所述第一预设字符进行编码,得到所述第一预设字符编码,并将所述第一预设字符编码存储至所述缓存中;
所述输出模块用于存储并输出所述当前码流的输出数据。
在其中一个实施例中,所述运算单元包括主处理电路和至少一个从处理电路,至少一个所述从处理电路均连接至所述主处理电路;
所述数据压缩模块设置于所述主处理电路以及每一所述从处理电路中。
一种数据压缩装置,所述装置包括:
第一获取模块,用于获取当前码流的流水线级数以及当前码流已经处理的字符数量;
第二获取模块,用于获取多个码流中已经处理的最小字符数量;
预设字符插入模块,用于若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据压缩方法的步骤。
上述数据压缩方法、处理器、数据压缩装置及存储介质,根据当前码流的流水线级数、当前码流已经处理的字符数量以及多个码流中已经处理的最小字符数量,判断流水线是否会发生死锁,若流水线会发生死锁,则向当前码流的输出模块中插入第一预设字符,从而保证多个码流的输出数据码长相同,避免了多个码流压缩速度差异过大而导致的死锁现象。
一种数据压缩解压装置,所述装置包括,控制电路和压缩解压电路,所述控制电路与所述压缩解压电路连接,
所述控制电路用于根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据;
所述压缩解压电路用于根据所述压缩控制指令获取所述待压缩数据,并对所述待压缩数据进行压缩得到压缩数据。
在其中一个实施例中,所述控制电路具体用于根据所述压缩解压电路的数量确定所述数据单元的大小,根据所述数据单元的大小确定数据读取窗口,根据数据读取窗口得到读写控制指令;
所述压缩解压电路还用于根据所述读写控制指令从所述输入数据中读取数据单元。
在其中一个实施例中,所述压缩解压电路包括第一读写电路、第一存储器以及压缩解压部件,所述第一读写电路与所述控制电路和所述第一存储器连接,所述压缩解压部件分别与所述控制电路和所述第一存储器连接,
所述第一读写电路用于根据所述读写控制指令从所述输入数据中读取数据单元,并将所述数据单元写入所述第一存储器;
所述控制电路还用于根据所述第一存储器存储的所述数据单元中的待压缩数据的起始地址和数据长度得到压缩控制指令;
所述压缩解压部件,用于根据所述压缩控制指令对所述数据单元中的待压缩数据进行压缩。
在其中一个实施例中,所述装置还包括非压缩数据通路以及第二读写电路,所述非压 缩数据通路与所述第一存储器连接,所述第二读写电路与所述控制电路以及所述第一存储器连接,
所述控制电路还用于根据所述数据单元中的非压缩数据得到写出控制指令;
所述第二读写电路用于根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。
在其中一个实施例中,所述装置还包括第二存储器,所述第二存储器分别与所述控制电路和所述压缩解压电路连接,
所述第二存储器用于将所述输入数据分数据块存储。
在其中一个实施例中,所述控制电路具体用于根据第一边沿与第二边沿得到读写参数,根据所述读写参数得到读写控制指令,其中,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述读写窗口中非整数据块位于所述读写窗口之外的边沿;
所述第一读写电路具体用于根据所述读写控制指令读取所述数据读取窗口中的数据单元,并按照所述数据单元在第二存储器中存储格式将所述数据单元写入所述第一存储器,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
在其中一个实施例中,所述控制电路具体用于根据所述第一存储器中的数据单元中的完整数据块的起始地址和数据长度确定所述起始地址和所述数据长度。
在其中一个实施例中,所述控制电路具体用于根据所述第一存储器中的所述数据单元中非整数据块,得到所述写出控制指令。
在其中一个实施例中,各个所述压缩解压电路中的压缩部件,具体用于并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块的编码数据;
所述控制电路,还用于得到写入控制指令,其中,所述写入控制指令用于控制所述第二读写电路将各个数据头按照对应的数据块在所述输入数据中的位置写入第二存储器,以及将各个数据体以及非压缩数据按照预设格式写入第二存储器。
一种数据压缩方法,所述方法包括:
根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据;
按照所述压缩控制指令将所述数据单元中的待压缩数据进行压缩,得到压缩数据。
在其中一个实施例中,所述方法还包括:
根据所述压缩解压电路的数量确定所述数据单元的大小,根据所述数据单元的大小确定数据读取窗口,根据数据读取窗口得到读写控制指令;
根据所述读写控制指令从所述输入数据中读取数据单元。
在其中一个实施例中,所述方法还包括:
根据所述数据单元中的非压缩数据得到写出控制指令;
根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。
在其中一个实施例中,所述方法还包括:将所述输入数据分数据块存储。
在其中一个实施例中,所述根据所述数据单元的大小确定数据读取窗口,根据数据读取窗口得到读写控制指令,包括:
根据第一边沿与第二边沿得到读写参数,根据所述读写参数得到读写控制指令,其中,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述读写窗口中非整数据块位于所述读写窗口之外的边沿。
在其中一个实施例中,在根据所述读写控制指令从所述输入数据中读取数据单元,之后还包括:
按照所述数据单元读取前的存储格式将所述数据单元写入第一预设存储位置,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
在其中一个实施例中,所述控制电路还用于根据所述数据单元中的非压缩数据得到写出控制指令,包括:
根据的所述数据单元中非整数据块,得到所述写出控制指令。
在其中一个实施例中,所述按照所述压缩控制指令将所述数据单元中的待压缩数据进行压缩,得到压缩数据,包括:
并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块压缩后的编码数据;
将各个数据头按照对应的数据块在所述输入数据中的位置写入第二预设存储位置,以及将各个数据体以及非压缩数据按照预设格式写入第二预设存储位置。
上述数据压缩解压装置和数据压缩方法,通过控制电路根据输入数据中的待压缩数据的起始地址和数据长度得到压缩控制指令,之后在基于该压缩控制指令对待压缩数据进行压缩,该方法提供了一种选择完整数据中的部分数据进行压缩的方法,提高数据压缩的灵活性。
一种数据压缩解压装置,所述装置包括,控制电路和压缩解压电路,所述控制电路与所述压缩解压电路连接,
所述控制电路用于根据待解压数据中压缩数据的起始地址和长度得到解压控制命令,其中,所述待解压数据包含压缩数据和非压缩数据;
所述压缩解压电路用于根据所述解压控制命令解压所述待解压数据中的压缩数据。
在其中一个实施例中,所述控制电路还用于根据压缩解压电路的数量得到每一压缩解压电路的读写控制命令;
各个所述压缩解压电路用于根据所述读写控制命令从待运算数据中读取待解压数据,其中,所述待运算数据包含至少一个待解压数据。
在其中一个实施例中,所述压缩解压电路包括第一读写电路、第一存储器以及压缩解压部件,所述第一读写电路与所述控制电路和所述第一存储器连接,所述压缩解压部件分别与所述控制电路和所述第一存储器连接,
所述第一读写电路用于根据所述读写控制指令从所述待运算数据中读取待解压数据,并将所述待解压数据写入所述第一存储器;
所述控制电路还用于根据所述第一存储器存储的所述待解压数据中的压缩数据的起始地址和数据长度得到解压控制指令;
所述压缩解压部件,用于根据所述解压控制指令对所述待解压数据中的压缩数据进行压缩。
在其中一个实施例中,所述装置还包括非压缩数据通路以及第二读写电路,所述非压缩数据通路与所述第一存储器连接,所述第二读写电路与所述控制电路以及所述第一存储器连接,
所述控制电路还用于根据所述第一存储器中待解压数据的非压缩数据得到写出控制指令;
所述第二读写电路用于根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。
在其中一个实施例中,所述装置还包括第二存储器,所述第二存储器分别与所述控制电路和所述压缩解压电路连接,
所述第二存储器用于存储所述待运算数据,其中,所述待运算数据包含头段和数据段,所述头段包含多个数据头,所述数据段包含多个数据体和非压缩数据,所述数据头包含对应的数据体或非压缩数据的起始地址和数据长度,所述数据体包含对应的数据块的压缩编码数据。
在其中一个实施例中,所述控制电路具体用于根据当前待解压数据中的数据头,得到当前待解压数据中对应的数据体和非压缩数据的起始地址和数据长度,根据所述当前待解压数据中的数据体的起始地址和数据长度得到解压控制命令,以及根据所述当前待解压数据中的非压缩数据的起始地址和数据长度得到写出控制命令;
所述压缩解压部件具体用于根据所述解压控制命令解压所述当前待解压数据中的数据体,得到解压数据。
在其中一个实施例中,所述控制电路还用于获取与所述当前待解压数据对应的数据写入窗口的方向参数,并根据所述方向参数得到写入控制命令;
所述第二读写电路还用于根据所述写入控制命令将所述当前待解压数据中数据体的解压数据,写入第二存储器上与所述数据写入窗口对应的存储空间,以及通过非压缩数据通道将所述当前待解压数据中非压缩数据写入所述数据写入窗口对应的存储空间。
一种数据解压方法,所述方法包括:
根据待解压数据中压缩数据的起始地址和长度得到解压控制命令,其中,所述待解压数据包含压缩数据和非压缩数据;
根据所述解压控制命令解压所述待解压数据中的压缩数据。
在其中一个实施例中,所述方法还包括:
根据压缩解压电路的数量得到读写控制命令;
根据所述读写控制命令从待运算数据中获取待解压数据。
在其中一个实施例中,所述方法还包括:
所述待运算数据中读取待解压数据后将所述待解压数据写入所述压缩解压电路的第一存储器。
在其中一个实施例中,所述方法还包括,
根据所述待解压数据的非压缩数据得到写出控制指令;
根据所述写出控制指令将所述非压缩数据从非压缩数据通路写出。
在其中一个实施例中,所述方法还包括:
获取待运算数据,并将所述待运算数据存储至第二存储器,其中,所述待运算数据包含头段和数据段,所述头段包含多个数据头,所述数据段包含多个数据体和非压缩数据,所述数据头包含对应的数据体或非压缩数据的起始地址和数据长度,所述数据体包含对应的数据块的压缩编码数据。
在其中一个实施例中,根据所述解压控制命令解压所述待解压数据中的压缩数据,包括:
根据当前待解压数据中的数据头,得到当前待解压数据中对应的数据体的起始地址和数据长度;
根据所述当前待解压数据中的数据体的起始地址和数据长度得到解压控制命令;
根据所述解压控制命令解压所述当前待解压数据中的数据体,得到解压数据。
在其中一个实施例中,根据所述待解压数据的非压缩数据得到写出控制指令,包括:
根据当前待解压数据中的数据头,得到当前待解压数据中对应的非压缩数据的起始地址和数据长度;
根据所述当前待解压数据中的非压缩数据的起始地址和数据长度得到写出控制命令。
在其中一个实施例中,获取与所述当前待解压数据对应的数据写入窗口的方向参数,并根据所述方向参数得到写入控制命令;
根据所述写入控制命令将所述当前待解压数据中数据体的解压数据,写入第二存储器上与所述数据写入窗口对应的存储空间,以及通过非压缩数据通道将所述当前待解压数据中非压缩数据写入所述数据写入窗口对应的存储空间。
上述实施例中的数据压缩解压装置和数据解压方法,该装置可以对同时包含压缩数据和非压缩数据的待解压数据的进行解压。
一种数据处理装置,所述数据处理装置用于执行机器学习计算,该数据处理装置包括:存储电路以及直接内存访问电路,该直接内存访问电路包括直接内存存储模块,所述直接内存存储模块包括:首部数据解析单元以及尾部数据缓存单元;所述首部数据解析单元的 第一输出端和所述尾部数据缓存单元的第一输出端,均与所述存储电路的输入端连接,所述存储电路的输出端与所述首部数据解析单元的第一输入端,以及所述尾部数据缓存单元的第一输入端连接,所述首部数据解析单元的第二输出端与所述尾部数据缓存单元的第二输入端连接;
在其中一个实施例中,所述存储电路用于对所述直接内存访问电路输入数据,并向所述首部数据解析单元以及所述尾部数据缓存单元,输入所述数据存储处理参数,所述首部数据解析单元用于根据所述数据存储处理参数,从第一缓存模块中读取所述待存储数据中的第一部分数据,并将所述第一部分数据写入第二缓存模块中;所述首部数据解析单元还用于解析所述第一部分数据得到所述第一部分数据中的信息,所述尾部数据缓存单元用于根据所述数据存储处理参数,以及所述第一部分数据中的信息,从第一缓存模块中读取所述待存储数据中的第二部分数据,并将所述第二部分数据写入第二缓存模块中。
在其中一个实施例中,所述数据处理装置还包括控制电路以及运算电路,所述控制电路用于向存储电路输入所述数据存储处理参数,并且还用于获取计算指令,并解析所述计算指令得到多个运算指令,将多个所述运算指令输入至所述运算电路中,所述运算电路包括主处理单元以及从处理单元。
在其中一个实施例中,所述首部数据解析单元具体用于根据所述数据存储处理参数,从所述第一缓存模块中读取所述待存储数据中的首部数据,并将所述首部数据写入所述第二缓存模块中,同时,解析所述首部数据部分得到所述首部数据中包含的信息,所述尾部数据缓存单元具体用于根据所述数据存储处理参数,以及所述首部数据中包含的信息,从所述第一缓存模块中读取所述待存储数据中的尾部数据,并将所述尾部数据写入所述第二缓存模块中。
在其中一个实施例中,所述直接内存存储模块还包括首部数据计数单元以及地址累加单元,所述首部数据计数单元用于记录每一次存储的所述第一部分数据的个数,得到累计的所述第一部分数据的个数,并根据所述数据存储处理参数,确定完成存储操作并停止所述存储操作,所述地址累加单元用于根据累计的所述第一部分数据的个数以及所述数据存储处理参数,计算下一次存储操作时,第一部分数据的起始地址和目标地址。
在其中一个实施例中,所述首部数据解析单元的第三输出端与所述首部数据计数单元的输入端连接,所述首部数据解析单元的第四输出端与所述地址累加单元的第一输入端连接,所述首部数据计数单元的输出端与所述地址累加单元的第二输入端连接,所述地址累加单元的输出端与所述首部数据解析单元的第二输入端连接。
上述装置中的直接内存存储模块包括,首部数据解析单元和尾部数据缓存单元,通过这两个单元可以对压缩格式的数据进行存储,并根据接收到的数据存储处理参数,将待存储数据按照目标分布形式存放,从而提高数据处理装置的通用性。
一种数据处理方法,所述方法包括:
读取第一缓存模块中,待处理数据中的第一部分数据;
根据数据存储处理参数,对所述第一部分数据进行解析,得到所述第一部分数据中的 信息;
根据第一部分数据中的所述信息,读取所述待处理数据中的第二部分数据;
根据所述数据存储处理参数,将所述第一部分数据以及所述第二部分数据,写入第二缓存模块中。
在其中一个实施例中,所述读取第一缓存模块中,待处理数据中的第一部分数据,包括:读取第一缓存模块中待处理数据中的首部数据。
在其中一个实施例中,所述根据数据存储处理参数,对所述第一部分数据进行解析,得到所述第一部分数据中的信息,包括:根据所述数据存储处理参数,对所述第一部分数据进行解析,得到所述待处理数据中首部数据包含的信息。
在其中一个实施例中,所述根据第一部分数据中的所述信息,读取所述待处理数据中的第二部分数据,包括:根据第一部分数据中首部数据包含的信息,读取所述待处理数据中的尾部数据。
在其中一个实施例中,所述根据所述数据存储处理参数,将所述第一部分数据以及所述第二部分数据,写入第二缓存模块中,包括:根据所述数据存储处理参数中包含的尾部数据,以及首部数据的信息,将所述第一部分数据以及所述第二部分数据,写入第二缓存模块中。
在其中一个实施例中,所述方法还包括:
获取所述第一部分数据的个数;
根据第一部分数据的所述个数以及所述数据存储处理参数,判断待处理数据是否已完成存储操作;
若已完成存储操作,则停止存储操作。
在其中一个实施例中,所述根据第一部分数据的所述个数以及所述数据存储处理参数,判断待处理数据是否已完成存储操作的步骤之后,还包括:
若未完成存储操作,则计算下一次存储操作时,所述第一部分数据中首部数据的起始地址以及目标地址;
根据所述第一部分数据的起始地址以及目标地址,继续执行所述接收第一缓存模块中,待处理数据中的第一部分数据。
上述数据处理方法,可以实现以下有益效果:该方法可以将压缩格式的数据从第一缓存模块中,写入第二缓存模块中,并将存储的数据按照目标分布形式存放,从而提高数据处理装置的通用性。
一种数据处理装置,所述数据处理装置用于执行机器学习计算;所述数据处理装置包括处理电路以及控制电路,所述处理电路的第一输入端与所述控制电路的第一输出端连接;所述处理电路包括解压模块;
其中,所述控制电路用于解析解压处理的指令得到解压处理参数,并将所述解压处理参数输入至所述解压模块;
所述解压模块用于根据所述解压处理参数,对输入所述解压模块的待解压数据进行解压处理,并得到已解码数据中的数据信息;所述解压模块还用于根据所述数据信息,在所述待解压数据满足触发解压旁路的条件时,将所述待解压数据作为目标解压数据。
在其中一个实施例中,所述解压模块还用于根据已解码数据中的所述信息,判断所述待解压数据不满足触发解压旁路的条件时,则继续对所述待解压数据进行解压处理。
在其中一个实施例中,所述数据处理装置还包括存储电路,所述存储电路用于存储原始数据,所述控制电路用于获取计算指令,并解析所述计算指令得到多个运算指令,将多个所述运算指令输入至所述解压模块中。
在其中一个实施例中,所述存储电路的第一输出端与所述处理电路的第二输入端连接,所述存储电路的第二输出端与所述控制电路的输入端连接,所述存储电路的第一输入端与所述处理电路的输出端连接,所述存储电路的第二输入端与所述控制电路的第二输出端连接。
在其中一个实施例中,所述解压模块分别包括解压处理单元以及选择器,所述解压处理单元的输出端与所述选择器的输入端连接;
其中,所述解压处理单元用于根据所述解压处理参数,对待解压数据进行解压处理,得到已解码数据中的信息,根据已解码数据的所述信息,判断所述待解压数据是否满足触发解压旁路的条件,若不满足,则对所述待解压数据进行后续解压处理,所述选择器用于根据接收到的逻辑判断信号确定,接收所述待解压数据,还是解压处理单元对所述待解压数据进行后续解压处理后得到的解压数据,作为目标解压数据并输出。
上述数据处理装置通过解压模块可以根据控制电路输入的解压处理参数,对待解压数据进行解压处理,若待解压数据满足触发解压旁路的条件时,则解压模块可以直接将该待解压数据,作为目标解压数据输出,不需要对待解压数据进行后续解压处理,从而可以提高解压的正确率;另外,数据处理装置能够有效节省解压模块的运算量以及存储开销,从而提高数据处理装置的运算效率。
上述一种数据处理方法,所述方法包括:
接收待处理数据;
根据所述处理参数对所述待处理数据进行解压处理,得到已解码数据的信息;
根据已解码数据的所述信息,判断所述待处理数据是否满足触发解压旁路的条件,其中,所述触发解压旁路的条件包括待处理数据中包含的压缩标志位对应的信号,表示所述待处理是未采用具体的压缩算法处理得到的;
若满足,则将所述待处理数据作为目标解压数据。
在其中一个实施例中,所述处理参数包括解压处理参数。
在其中一个实施例中,所述根据所述处理参数对所述待处理数据进行解压处理,得到已解码数据的信息,包括:根据所述解压处理参数对所述待处理数据进行解压处理,得到已解码数据的所述信息。
在其中一个实施例中,所述在根据已解码数据的所述信息,判断所述待处理数据是否 满足触发解压旁路的条件之后,还包括:若所述待处理数据不满足触发解压旁路的条件时,则将所述待处理数据作为目标解压数据。
在其中一个实施例中,所述将所述待处理数据作为目标解压数据的步骤之后,还包括:通过处理电路对所述目标解压数据进行并行运算处理。
上述数据处理方法,可以实现以下有益效果:该方法能够节省数据处理装置进行解压处理的运算量以及数据处理装置的存储开销,进而还可以对待处理数据进行并行处理,得到目标解压数据,有效提高了解压效率;另外,该方法还可以直接将待处理数据作为目标解压数据,以保证解压后的数据与对应的原始数据相比,解压的正确率较高。
一种数据处理装置,所述数据处理装置用于执行机器学习计算,所述数据处理装置包括分块压缩电路以及主处理电路,所述分块压缩电路的第一输出端与所述主处理电路的第一输入端连接;
其中,所述分块压缩电路用于对接收到的原始数据进行分块处理,并对分块后的数据进行压缩处理,所述主处理电路用于对接收到的所述压缩数据进行分组处理。
在其中一个实施例中,所述数据处理装置还包括从处理电路、存储电路以及控制电路;所述从处理电路用于对接收到的分组数据进行累加运算以及内积运算,所述存储电路用于存储原始数据,所述控制电路用于获取计算指令,并解析所述计算指令得到多个运算指令,将多个所述运算指令输入至所述分块压缩电路以及所述主处理电路中。
在其中一个实施例中,所述分块压缩电路的第一输入端与所述存储电路的第一输出端连接,所述分块压缩电路的第二输入端与所述控制电路的第一输出端连接,所述分块压缩电路的第二输出端与所述存储电路的第一输入端连接,所处分块压缩电路的第三输入端与所述主处理电路的输出端连接;所述控制电路的第二输出端与所述主处理电路的第二输入端连接,所述存储电路的第二输出端与所述控制电路的输入端连接,所述控制电路的第三输出端与所述存储电路的第二输入端连接,所述主处理电路的第一输出端与所述从处理电路的输入端连接,所述从处理电路的输出端与所述主处理电路的第三输入端连接。
在其中一个实施例中,所述分块压缩电路包括分块单元以及压缩单元,所述分块单元输出端与所述压缩单元的输入端连接;其中,所述分块单元用于对接收到的所述原始数据进行分块处理,得到分块后的数据,所述压缩单元用于对分块后的所述数据进行压缩处理。
在其中一个实施例中,所述主处理电路包括分组转发模块,所述分组转发模块用于接收所述压缩数据以及分组处理参数,并根据所述分组处理参数对所述压缩数据进行分组处理。
上述数据处理装置,该装置能够在对原始数据进行运算前,通过单独且逻辑简单的硬件电路(即分块压缩电路)对数据进行分块处理后,再进行压缩处理得到压缩数据,进而从处理电路可以对压缩数据进行不同的运算处理,可以降低数据处理装置中主处理电路与从处理电路之间的数据带宽。
一种数据处理方法,所述方法包括:
接收待处理的数据;
根据处理参数对待处理的所述数据进行分块处理,得到分块后的数据;
根据所述处理参数对分块后的所述数据进行压缩处理,得到压缩数据。
在其中一个实施例中,所述处理参数包括分块处理参数,分组处理参数以及压缩处理参数。
在其中一个实施例中,所述根据处理参数对待处理的所述数据进行分块处理,得到分块后的数据,包括:根据分块处理参数对待处理的所述数据进行分块处理,得到分块后的数据。
在其中一个实施例中,所述根据所述处理参数对分块后的所述数据进行压缩处理,得到压缩数据,包括:根据压缩处理参数对分块后的所述数据进行压缩处理,得到压缩数据。
在其中一个实施例中,在根据所述处理参数对分块后的所述数据进行压缩处理,得到压缩数据之后,所述方法还包括:根据所述处理参数对所述压缩数据进行分组处理,得到分组数据。
在其中一个实施例中,所述根据所述处理参数对所述压缩数据进行分组处理,得到不同运算处理的分组数据,包括:根据分组处理参数对所述压缩数据进行分组处理,得到分组数据。
在其中一个实施例中,所述根据分组处理参数对所述压缩数据进行分组处理,得到分组数据之后,还包括:通过从处理电路对所述分组数据进行并行运算处理。
上述数据处理方法,可以实现以下有益效果:该方法可以通过单独且逻辑简单的硬件电路对待处理的数据进行分块以及压缩处理,从而可以有效降低数据处理装置中主处理电路与从处理电路之间的数据带宽。
一种数据处理装置,所述数据处理装置用于执行机器学习计算,所述数据处理装置包括解压电路、主处理电路以及控制电路;所述解压电路的第一输入端与所述控制电路的第一输出端连接,所述主处理电路的第一输入端与所述控制电路的第二输出端连接,所述解压电路的输出端与所述主处理电路的第二输入端连接;其中,所述控制电路用于解析运算处理指令得到解压处理参数,并将所述解压处理参数输入至所述解压电路,所述解压电路用于接收待解压数据,根据所述解压处理参数获取待解压数据中的信息,并根据所述信息以及所述解压处理参数,对所述待解压数据进行解压处理得到解压数据,所述主处理电路用于根据处理参数对接收到的所述解压数据进行分组处理。
在其中一个实施例中,所述数据处理装置还包括从处理电路、存储电路以及控制电路,所述从处理电路用于对接收到的分组数据进行累加运算以及内积运算,所述存储电路还用于存储原始数据,所述控制电路用于获取计算指令,并解析所述计算指令得到多个运算指令,将多个所述运算指令输入至所述解压电路以及所述主处理电路中。
在其中一个实施例中,所述解压电路的第二输入端与所述存储电路的输出端连接,所述解压电路的第一输出端与所述存储电路的输入端连接;所述主处理电路的第二输出端与 所述从处理电路的输入端连接,所述从处理电路的输出端与所述主处理电路的第三输入端连接,所述存储电路的第二输入端与所述控制电路的第三输出端连接,所述存储电路的第二输出端与所述控制电路的输入端连接。
在其中一个实施例中,所述解压电路具体用于接收所述待解压数据,根据所述解压处理参数获取待解压数据中首部数据包含的信息,并根据待解压数据中首部数据包含的所述信息以及所述解压处理参数,对所述待解压数据进行解压处理得到解压数据。
在其中一个实施例中,所述主处理电路包括分组转发模块,所述分组转发模块用于接收所述解压电路输入的所述解压数据,以及所述控制电路输入的分组处理参数,并根据所述分组处理参数对所述解压数据进行分组处理。
上述数据处理装置,可以实现以下有益效果:该装置可以通过单独且逻辑简单的硬件电路(即解压电路)对待解压数据进行解压处理得到分块数据,进而从处理电路可以对分块数据进行不同的运算处理,该过程可以降低数据处理装置中主处理电路与从处理电路之间的数据带宽。
一种数据处理方法,所述方法包括:
接收待处理数据以及解压处理参数;
根据所述解压处理参数,获取所述待处理数据中的信息;
根据所述解压处理参数以及待处理数据中的所述信息,对所述待处理数据进行解压处理,得到解压数据;
根据处理参数对所述解压数据进行分组处理,得到分组数据。
在其中一个实施例,根据所述解压处理参数,获取所述待处理数据中的信息,包括:根据所述解压处理参数,获取所述待处理数据中包含的首部数据。
在其中一个实施例,所述根据待处理数据中的所述信息以及所述解压处理参数,对所述待处理数据进行解压处理,得到解压数据,包括:根据所述待处理数据中包含的首部数据以及所述解压处理参数,对所述待处理数据进行解压处理,得到解压数据。
在其中一个实施例,所述根据处理参数对所述解压数据进行分组处理,得到分组数据,包括:根据分组处理参数对所述解压数据进行分组处理,得到分组数据。
在其中一个实施例,在根据分组处理参数对所述解压数据进行分组处理,得到分组数据的步骤之后,还包括:通过从处理电路对所述分组数据进行并行运算处理。
上述数据处理方法,可以实现以下有益效果:该方法可以通过单独且逻辑简单的硬件电路对待处理的数据进行解压处理,从而可以有效降低数据处理装置中主处理电路与从处理电路之间的数据带宽。
一种数据压缩解压装置,包括:n个压缩解压操作执行组件,每一所述压缩解压操作执行组件包括输入FIFO存储器、至少一个压缩解压操作执行部件以及输出FIFO存储器,所述输入FIFO存储器与所述输出FIFO存储器之间串接所述多个压缩操作执行部件,其中,n为正整数,
各个所述输入FIFO存储器用于对接收的数据流执行同步操作,并将同步操作之后的数据流传输至连接的压缩操作执行部件;
各个所述压缩解压操作执行组件中串接的至少一个压缩解压操作执行部件,用于依次对接收的输入数据执行对应的压缩子操作,得到各个数据流的压缩编码值;
各个所述输出FIFO存储器用于接收连接的压缩解压操作执行部件发送的压缩编码值,并将接收的所述压缩编码值进行同步操作后输出。
一种数据压缩方法,所述方法包括:
将待压缩数据分割为多个数据流;
获取n个数据流,对所述n个数据流进行同步操作,并将同步操作后的所述n个数据流并行压缩,得到n个压缩编码值,其中,n为正整数;
对所述n个压缩编码值进行同步操作,并将同步操作后的所述n个压缩编码值,按照各个数据流在待压缩数据中的顺序和/或位置写出接收压缩编码值;
重复执行所述获取n个数据流至写出所述n个压缩编码值的步骤,直至单次输出压缩编码值的数量小于n,之后终止获取数据流。
上述数据压缩解压装置和数据压缩方法,可以实现以下有益效果:该方法可以并行压缩n个输入的数据流,且在输入和输出端均设置FIFO存储器,对输入的数据流以及输出的压缩编码结果均进行同步操作,保证了并行对待压缩数据的多个数据流进行压缩,或者对压缩数据进行解压时,输出的结果准确。
一种数据处理装置,所述数据处理装置用于执行机器学习计算;所述数据处理装置包括处理电路以及控制电路,所述处理电路的第一输入端与所述控制电路的输出端连接,所述处理电路包括分块压缩模块;
其中,所述控制电路用于解析数据处理指令得到数据的处理参数,并将所述处理参数输入至所述分块压缩模块;所述分块压缩模块用于根据所述处理参数,对接收到的原始数据进行分块处理得到分块数据,并对所述分块数据进行压缩处理,得到已编码数据的信息;所述分块压缩模块还用于根据已编码数据的所述信息,判断所述分块数据满足触发压缩旁路的条件,则将所述分块数据作为目标压缩数据。
在其中一个实施例中,所述分块压缩模块还用于根据已编码数据的所述信息,判断所述分块数据不满足触发压缩旁路的条件时,则继续对所述分块数据进行压缩处理。
在其中一个实施例中,所述数据处理装置还包括存储电路以及控制电路,所述存储电路用于存储原始数据,所述控制电路用于获取计算指令,并解析所述计算指令得到多个运算指令,将多个所述运算指令输入至所述分块压缩模块中。
在其中一个实施例中,所述存储电路的第一输出端与所述处理电路的第二输入端连接,所述存储电路的第二输出端与所述控制电路的输入端连接,所述存储电路的第一输入端与所述处理电路的输出端连接,所述存储电路的第二输入端与所述控制电路的第二输出端连接。
在其中一个实施例中,所述分块压缩模块包括分块处理单元、压缩处理单元以及选择器,所述分块处理单元的第一输出端与所述压缩处理单元的输入端连接,所述压缩处理单元的输出端与所述选择器的第一输入端连接,所述分块处理单元的第二输出端与所述选择器的第二输入端连接;
其中,所述分块处理单元用于对接收到的所述原始数据进行分块处理得到分块数据,所述压缩处理单元用于对所述分块数据进行压缩处理,得到已编码数据的信息,根据已编码数据的所述信息,判断所述分块数据是否满足触发压缩旁路的条件,若不满足,则对所述分块数据进行后续压缩处理得到压缩数据,所述选择器用于根据接收到的逻辑判断信号确定,接收分块处理单元输出的所述分块数据,还是压缩处理单元对所述分块数据进行后续压缩处理后得到的压缩数据,作为目标压缩数据并输出。
上述数据处理装置通过分块压缩模块可以对原始数据,先进行分块处理得到分块数据,并采用压缩算法对分块数据进行压缩处理,若分块数据满足触发压缩旁路的条件时,则分块压缩模块可以将该分块数据作为目标压缩数据输出,不需要对分块数据进行后续压缩处理,该过程能够有效节省分块压缩模块压缩处理的运算量。
一种数据处理方法,所述方法包括:
接收待处理数据;
根据处理参数对所述待处理数据进行分块处理,得到分块数据;
根据所述处理参数对所述分块数据进行压缩处理,得到已编码数据中的信息;
根据已编码数据中的所述信息,判断所述分块数据是否满足触发压缩旁路的条件,其中,所述处理压缩旁路的条件包括所述待处理数据的大小小于已编码数据的大小;
若满足,则将所述分块数据作为目标压缩数据。
在其中一个实施例中,所述处理参数包括分块处理参数以及压缩处理参数。
在其中一个实施例中,所述根据处理参数对所述待处理数据进行分块处理,得到分块数据,包括:根据分块处理参数对所述待处理数据进行分块处理,得到分块数据。
在其中一个实施例中,所述根据所述处理参数对所述分块数据进行压缩处理,得到已编码数据中的信息,包括:根据压缩处理参数对所述待处理数据进行压缩处理,得到已编码数据中的信息。
在其中一个实施例中,所述根据已编码数据中的所述信息,判断所述分块数据是否满足触发压缩旁路的条件之后,还包括:若不满足,则采用压缩算法对所述分块数据进行后续压缩处理,得到目标压缩数据。
在其中一个实施例中,所述得到目标压缩数据的步骤之后,还包括:通过处理电路对所述目标压缩数据进行并行运算处理。
上述数据处理方法可以有效节省压缩处理的运算量。
一种数据压缩解压装置,包括:数据分割电路,以及n个压缩解压操作执行组件,其中,每一所述压缩操作执行组件包括输入FIFO存储器、多个压缩操作执行部件以及输出 FIFO存储器,所述输入FIFO存储器与所述输出FIFO存储器之间串接所述多个压缩操作执行部件,所述数据分割电路连接所述输入FIFO存储器,其中,n为正整数,
所述数据分割电路用于将压缩数据分割为多个数据流;
各个所述输入FIFO存储器用于对接收的数据流执行同步操作,并将同步操作之后的数据流传输至连接的压缩操作执行部件;
各个所述压缩操作执行组件中串接的所述多个压缩操作执行部件,用于依次对接收的输入数据执行对应的解压子操作,得到各个数据流的解压结果;
各个所述输出FIFO存储器用于接收连接的压缩解压操作执行部件发送的解压结果,并将接收的所述解压结果进行同步操作后输出。
一种数据解压方法,所述方法包括:
将压缩数据分割为多个数据流;
获取n个数据流,对所述n个数据流进行同步操作,并将同步操作后的所述n个数据流并行解压,得到n个解压子结果,其中,n为正整数;
对所述n个解压数字进行同步操作,并将同步操作后的所述n个解压子结果,按照各个数据流在待压缩数据中的顺序和/或位置写出解压子结果;
重复执行所述获取n个数据流至写出所述n个解压子结果的步骤,直至单次解压子结果的数量小于n,之后终止获取数据流。
上述数据压缩解压装置和数据解压方法,可以并行解压n个输入的数据流,且在输入和输出端均设置FIFO存储器,对输入的数据流以及输出的解压结果均进行同步操作,保证了并行对待压缩数据的多个数据流进行压缩,或者对压缩数据进行解压时,输出的结果准确。
一种数据压缩解压装置,包括:数据混洗操作执行部件,n个压缩解压操作执行组件,每一所述压缩解压操作执行组件包括输入FIFO存储器、至少一个压缩解压操作执行部件以及输出FIFO存储器,所述输入FIFO存储器与所述输出FIFO存储器之间串接所述多个压缩操作执行部件,所述数据混洗操作执行部件连接所述输入FIFO存储器,其中,n为正整数,
所述数据混洗操作执行部件,用于接收数据混洗信号后,对通过的原始数据流进行混洗,得到数据流;
各个所述输入FIFO存储器用于对接收的数据流执行同步操作,并将同步操作之后的数据流传输至连接的压缩操作执行部件;
各个所述压缩解压操作执行组件中串接的至少一个压缩解压操作执行部件,依次对接收的输入数据执行对应的压缩子操作,得到各个数据流的压缩编码值;
各个所述输出FIFO存储器用于接收连接的压缩解压操作执行部件发送的压缩编码值,并将接收的所述压缩编码值进行同步操作后输出。
一种数据压缩方法,所述方法包括:
将待压缩数据分割为多个原始数据流;
获取的n个所述原始数据流,并在接收数据混洗信号后,对所述n个所述原始数据流中后段数据进行混洗,得到n个数据流,其中,所述后段数据为接收数据混洗信号之后还未获取到的各个所述原始数据流中的数据;
对所述n个数据流进行同步操作,并将同步操作后的所述n个数据流并行压缩,得到n个压缩编码结果,其中,n为正整数;
对所述n个压缩编码结果进行同步操作,并将同步操作后的所述n个压缩编码结果,按照各个数据流在待压缩数据中的顺序和/或位置写出接收压缩编码结果;
重复执行所述获取n个数据流至写出所述n个压缩编码结果的步骤,直至单次输出压缩编码的数量小于n,之后终止获取数据流。
上述数据压缩解压装置和数据压缩方法,可以实现对输入的原始数据流进行混洗,可以克服各个压缩解压操作执行组件的原始数据流中的数据在压缩效率差异较大时,造成的各个压缩解压操作执行组件执行时间差异大,降低数据压缩效率的问题。
一种数据压缩解压装置,包括:数据分割电路、数据混洗操作执行部件以及n个压缩解压操作执行组件,其中,每一所述压缩操作执行组件包括输入FIFO存储器、多个压缩操作执行部件以及输出FIFO存储器,所述输入FIFO存储器与所述输出FIFO存储器之间串接所述多个压缩操作执行部件,所述数据分割电路、所述数据混洗操作执行部件以及所述输入FIFO存储器依次串接,其中,n为正整数,
所述数据分割电路用于将压缩数据分割为多个原始数据流;
所述数据混洗操作执行部件,用于接收数据混洗信号后,对通过的原始数据流进行混洗,得到数据流;
各个所述输入FIFO存储器用于对接收的数据流执行同步操作,并将同步操作之后的数据流传输至连接的压缩操作执行部件;
各个所述压缩操作执行组件中串接的所述多个压缩操作执行部件,依次对接收的输入数据执行对应的解压子操作,得到各个数据流的解压结果;
各个所述输出FIFO存储器用于接收连接的压缩解压操作执行部件发送的解压结果,并将接收的所述解压结果进行同步操作后输出。
一种数据解压方法,所述方法包括:
将压缩数据分割为多个原始数据流;
获取的n个所述原始数据流,并在接收数据混洗信号后,对所述n个所述原始数据流中后段数据进行混洗,得到n个数据流,其中,所述后段数据为接收数据混洗信号之后还未获取到的各个所述原始数据流中的数据;
对所述n个数据流进行同步操作,并将同步操作后的所述n个数据流并行解压,得到n个解压子结果,其中,n为正整数;
对所述n个解压数字进行同步操作,并将同步操作后的所述n个解压子结果,按照各 个数据流在待压缩数据中的顺序和/或位置写出解压子结果;
重复执行所述获取n个数据流至写出所述n个解压子结果的步骤,直至单次解压子结果的数量小于n,之后终止获取数据流。
上述数据压缩解压装置、数据解压方法,可以实现对输入的原始数据流进行混洗,可以克服各个压缩解压操作执行组件的原始数据流中的数据在解压效率差异较大时,造成的各个压缩解压操作执行组件执行时间差异大,降低数据解压效率的问题。
一种传送指令译码方法,所述方法包括:
获取传送指令中数据头的源数据和预设参数,并根据所述数据头的源数据和所述预设参数对所述传送指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数,读取压缩数据中的目标数据头和目标数据体,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值,所述第一操作数包括立即数或寄存器号;
获取所述传送指令中数据头的目的数据,并根据所述数据头的目的数据以及所述目标数据头和目标数据体对所述传送指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数,写出所述获取的压缩数据,所述第二操作数包括立即数或寄存器号。
在其中一个实施例中,对获取的指令进行解析,并根据所述指令中的指令类别和指令类型确定所述指令为传送指令。
在其中一个实施例中,若所述第一操作数为立即数,则所述第一操作用于根据所述第一操作数,从第一存储装置中读取压缩数据中的目标数据头,然后根据所述目标数据头中的起始地址和数据长度,获取与所述目标数据头对应的目标数据体,其中,所述第一存储装置为片外存储装置;
若所述第一操作数为寄存器号,则所述第一操作用于根据所述第一操作数,从第二存储装置中读取压缩数据中的目标数据头,然后根据所述目标数据头中的起始地址和数据长度,获取与所述目标数据头对应的目标数据体,其中,所述第二存储装置为片内存储装置。
在其中一个实施例中,根据所述传送指令中数据头的源地址和源地址偏移,得到所述第一操作数中目标数据头的原始地址;
根据所述原始地址和所述预设参数对所述传送指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述预设参数包括所述目标数据头的数量。
在其中一个实施例中,根据所述传送指令中数据头的行数、源换行距离、单行数据头数量以及预设参数对所述传送指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述预设参数包括目标数据头的行数和单行目标数据头数量。
在其中一个实施例中,根据所述第一操作数中的目标数据头中的原始地址和数量,得到所述第一操作数中的目标数据体的原始地址和数量;
使用所述目标数据体的原始地址和数量对所述传送指令的第一操作进行配置。
在其中一个实施例中,根据所述传送指令中的数据头的目的地址和目的地址偏移,得到所述第二操作数中的所述目标数据头的目的地址和目的地址偏移;
根据所述目标数据头的目的地址和目的地址偏移对所述传送指令的第二操作进行配置,得到所述第二操作的第二操作数。
一种数据移动方法,所述方法包括:
获取传送指令,并对所述传送指令进行解析,得到所述传送指令的第一操作数和第二操作数;
从所述第一操作数指向的存储装置中读取压缩数据中的目标数据头和目标数据体,其中,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储所述对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值,所述第一操作数包括立即数或寄存器号;
将读取的所述压缩数据中的目标数据头和目标数据体写入所述第二操作数指向的存储装置,其中,所述第二操作数包括立即数或寄存器号。
在其中一个实施例中,若所述第一操作数为立即数,则根据所述第一操作数,从第一存储装置中读取所述压缩数据中的目标数据头,然后根据所述目标数据头中的起始地址和数据长度,获取与所述目标数据头对应的目标数据体,其中,所述第一存储装置为片外存储装置;
若所述第一操作数为寄存器号,则根据所述第一操作数,从第二存储装置中读取压缩数据中的目标数据头,然后根据所述目标数据头中的起始地址和数据长度,获取与所述目标数据头对应的目标数据体,其中,所述第二存储装置为片内存储装置。
在其中一个实施例中,根据所述第一操作数中数据头的原始地址和预设参数读取压缩数据中的目标数据头,其中,所述预设参数包括所述目标数据头的数量。
在其中一个实施例中,根据所述第一操作数中数据头的行数、源换行距离、单行数据头数量以及所述预设参数中目标数据头的行数和单行目标数据头数量读取压缩数据中的目标数据头。
在其中一个实施例中,根据所述第二操作数中所述目标数据头的目的地址和目的地址偏移,将读取的所述压缩数据中的目标数据头写入第二操作数指向的存储装置,然后,根据所述目标数据头和目标数据体在所述第一操作数指向的存储装置中的相对位置,将所述目标数据体对应写入所述入第二操作数指向的存储装置。
一种译码器,所述译码器包括:第一配置单元和第二配置单元,所述第一配置单元连接所述第二配置单元;
所述第一配置单元,用于获取传送指令中数据头的源数据和预设参数,并根据所述数据头的源数据和所述预设参数对所述传送指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数,读取压缩数据中的目标数据头和目标数据体,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储对应的 所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值,所述第一操作数包括立即数或寄存器号;
所述第二配置单元,用于获取所述传送指令中数据头的目的数据,并根据所述数据头的目的数据以及所述目标数据头和目标数据体对所述传送指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数,写出所述获取的压缩数据,所述第二操作数包括立即数或寄存器号。
一种数据存取装置,所述装置包括:配置单元、数据读写单元和直接内存访问单元,所述配置单元通过所述数据读写单元与所述直接内存访问单元,所述直接内存访问单元连接所述数据读写单元,其中,所述配置单元包括第一配置单元和第二配置单元;
所述数据读写单元接收所述配置单元发送的第一操作数及第二操作数,并将所述第一操作数以及所述第二操作数发送给所述直接内存访问单元;
所述直接内存访问单元用于根据所述第一操作数以及所述第二操作数,完成所述压缩数据中的目标数据头和目标数据体的读取操作以及所述获取的压缩数据的写出操作。
上述传送指令译码方法、数据移动方法、译码器及数据存取装置,通过对传送指令进行解析,根据数据头的源数据和预设参数对传送指令的第一操作进行配置,得到第一操作的第一操作数,根据数据头的目的数据以及目标数据头和目标数据体对传送指令的第二操作进行配置,得到第二操作的第二操作数,根据第一操作数以及第二操作数完成第一操作以及第二操作,实现了对传送指令的解析,能够支持压缩数据进行移动。实现了对压缩格式的数据进行处理的方法。
一种压缩指令的译码方法,所述方法包括:
获取压缩指令中原始数据的源数据,并根据所述原始数据的源数据对所述压缩指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数读取所述原始数据,将所述原始数据划分为多个数据块,所述第一操作数包括立即数或寄存器号;
获取所述压缩指令中压缩操作的源数据,并根据所述压缩操作的源数据对所述压缩指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数,对所述数据块进行压缩;
获取所述压缩指令中数据头的目的数据,并根据所述数据头的目的数据对所述压缩指令的第三操作进行配置,得到所述第三操作的第三操作数,其中,所述第三操作用于根据所述第三操作数,写出压缩数据中的所述数据头,然后根据所述数据头与数据体之间的对应关系写出所述数据体,所述第三操作数包括立即数或寄存器号,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值。
在其中一个实施例中,对获取的指令进行解析,并根据所述指令中的指令类别和指令类型确定所述指令为压缩指令。
在其中一个实施例中,若所述第一操作数为立即数,则所述第一操作用于根据所述第一操作数,从第一存储装置中读取所述原始数据,其中,所述第一存储装置为片外存储装置;
若所述第一操作数为寄存器号,则所述第一操作用于根据所述第一操作数,从第二存储装置中读取所述原始数据,其中,所述第二存储装置为片内存储装置。
在其中一个实施例中,根据所述压缩指令中原始数据的源地址以及换行距离,得到所述第一操作数中所述原始数据的原始地址;
根据所述原始地址对所述压缩指令的第一操作进行配置,得到所述第一操作的第一操作数。
在其中一个实施例中,根据所述压缩指令中数据块的块内行数以及块内单行数量对所述压缩指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数中的数据块的块内行数以及块内单行数量,将所述原始数据划分为多个数据块。
在其中一个实施例中,根据所述压缩指令中游程编码的源数据,对所述压缩指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数中的游程编码的源数据,选择是否使用游程编码进行压缩。
在其中一个实施例中,根据所述压缩指令中混洗源数据,对所述压缩指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数中的混洗源数据,选择是否在压缩操作之前进行数据混洗。
在其中一个实施例中,根据所述压缩指令中的窗口参数,对所述压缩指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数,对所述原始数据进行非整块读取。
在其中一个实施例中,根据所述压缩指令中的数据头的目的地址和地址偏移,得到所述第三操作数中的所述数据头的目标地址;
根据所述数据头的目标地址对所述压缩指令的第三操作进行配置,得到所述第三操作的第三操作数。
在其中一个实施例中,根据所述压缩指令中数据头的行数、换行距离、单行数据头数量对所述压缩指令的第三操作进行配置,得到所述第三操作的第三操作数,其中,所述第三操作根据所述第三操作数中的数据头的行数、换行距离、单行数据头数量,写出压缩数据中的所述数据头。
在其中一个实施例中,使用所述压缩指令中摆放模式参数,对所述压缩指令的第三操作进行配置,得到所述第三操作的第三操作数,所述第三操作根据所述第三操作数中的摆放模式参数写出所述压缩数据中的数据体。
在其中一个实施例中,根据所述第三操作数中的数据头中的起始地址和数据长度,得到所述第三操作数中的数据体的目标地址和数据长度;
使用所述数据体的目标地址和数据长度对所述压缩指令的第三操作进行配置。
一种数据处理方法,所述方法包括:
获取压缩指令,并对所述压缩指令进行解析,得到所述压缩指令的第一操作数、第二操作数和第三操作数;
从所述第一操作数指向的存储装置中读取原始数据,并将所述原始数据划分为多个数据块,所述第一操作数包括立即数或寄存器号;
根据所述第二操作数将所述数据块进行压缩,得到压缩数据;
将所述压缩数据中的数据头写入所述第三操作数据指向的存储装置,然后根据所述数据头与数据体之间的对应关系写出所述数据体,其中,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储所述对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值,所述第三操作数包括立即数或寄存器号。
在其中一个实施例中,若所述第一操作数为立即数,则根据所述第一操作数,从第一存储装置中读取所述原始数据,其中,所述第一存储装置为片外存储装置;
若所述第一操作数为寄存器号,则根据所述第一操作数,从第二存储装置中读取所述原始数据,其中,所述第二存储装置为片内存储装置。
在其中一个实施例中,根据所述第一操作数中所述原始数据的源地址以及换行距离读取所述原始数据。
在其中一个实施例中,根据所述第一操作数中数据块的块内行数以及块内单行数量,将读取的所述原始数据划分为多个数据块。
在其中一个实施例中,根据所述第二操作数中的游程编码的源数据,将所述数据块发送到所述第二操作数据指向的存储装置,然后选择是否使用游程编码进行压缩。
在其中一个实施例中,根据所述第三操作数中的数据头的目的地址和地址偏移,将所述压缩数据中的数据头写入第三操作数指向的存储装置,然后,根据所述第三操作数中的所述数据头和数据体的摆放模式参数,将所述数据体对应写入所述入第三操作数指向的存储装置。
一种译码器,所述译码器包括:第一配置单元、第二配置单元以及第三配置单元,所述第一配置单元连接所述第二配置单元,所述第一配置单元通过所述第二配置单元与所述第三配置单元连接;
所述第一配置单元,用于获取压缩指令中原始数据的源数据,并根据所述原始数据的源数据对所述压缩指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数读取所述原始数据,将所述原始数据划分为多个数据块,所述第一操作数包括立即数或寄存器号;
所述第二配置单元,用于获取所述压缩指令中压缩操作的源数据,并根据所述压缩操作的源数据对所述压缩指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数,对所述数据块进行压缩;
所述第三配置单元,用于获取所述压缩指令中数据头的目的数据,并根据所述数据头的目的数据对所述压缩指令的第三操作进行配置,得到所述第三操作的第三操作数,其中, 所述第三操作用于根据所述第三操作数,写出压缩数据中的所述数据头,然后根据所述数据头与数据体之间的对应关系写出所述数据体,所述第三操作数包括立即数或寄存器号,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值。
一种数据处理装置,所述数据处理装置包括配置单元、数据读写单元以及压缩解压单元,所述配置单元与所述压缩解压单元连接,所述配置单元与所述数据读写单元连接,所述压缩解压单元连接所述数据读写单元,其中,所述配置单元包括第一配置单元、第二配置单元以及第三配置单元;
所述数据读写单元接收所述配置单元发送的第一操作数以及第三操作数,将所述第二操作数据发送到所述压缩解压单元,并根据所述第一操作数,从所述第一操作数指向的存储装置中读取原始数据,并将所述原始数据划分为对个数据块;
所述压缩解压单元接收所述配置单元发送的所述第二操作数,并根据所述第二操作数对所述数据块进行数据压缩,得到压缩数据,其中,所述压缩数据包括多个数据头和多个数据体;
所述数据读写单元还用于根据所述第三操作数,将所述压缩数据中的数据头写入所述第三操作数指向的存储装置,然后根据所述数据头与数据体之间的对应关系写出所述数据体。
上述压缩指令译码方法、数据处理方法、译码器及数据处理装置,通过对压缩指令进行解析,根据原始数据的源数据对压缩指令的第一操作进行配置,得到第一操作的第一操作数,根据压缩操作的源数据对压缩指令的第二操作进行配置,得到第二操作的第二操作数,根据数据头的目的数据对压缩指令的第三操作进行配置,得到第三操作的第三操作数,根据第一操作数、第二操作数和第三操作数完成第一操作、第二操作以及第三操作,实现了对压缩指令的解析,能够将原始数据压缩成特定格式,实现了对原始数据压缩成特定格式的数据处理的方法。
一种解压指令的译码方法,所述方法包括:
获取所述解压指令中数据块的块内行数以及块内单行数量,并根据所述数据块的块内行数以及块内单行数量对所述解压指令的第四操作进行配置,得到所述第四操作的第四操作数,其中,所述第四操作用于根据所述第四操作数,读取压缩数据的数据块,以及将所述读取的数据块发送出去,所述压缩数据的数据块中包括多个数据头和多个数据体,所述数据头中存储对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值,所述第四操作数包括立即数或寄存器号;
获取所述解压指令中解压数据的目的数据,并根据所述解压数据的目的数据对所述解压指令的第五操作进行配置,得到所述第五操作的第五操作数,其中,所述第五操作用于根据所述第五操作数,写出所述得到的解压数据,所述第五操作数包括立即数或寄存器号。
在其中一个实施例中,对获取的指令进行解析,并根据所述指令中的指令类别和指令 类型确定所述指令为解压指令。
在其中一个实施例中,若所述第四操作数为立即数,则所述第四操作用于根据所述第四操作数,从第一存储装置中读取压缩数据的数据块,其中,所述第一存储装置为片外存储装置;
若所述第四操作数为寄存器号,则所述第四操作用于根据所述第四操作数,从第二存储装置中读取压缩数据的数据块,其中,所述第二存储装置为片内存储装置。
在其中一个实施例中,根据所述解压指令中数据头的源地址和地址偏移,得到所述第四操作数中数据头的原始地址;
根据所述原始地址对所述解压指令的第四操作进行配置,得到所述第四操作的第四操作数,其中,所述第四操作用于根据所述第四操作数中的数据头的源地址和地址偏移,读取所述数据块。
在其中一个实施例中,根据所述解压指令中数据头的行数、换行距离以及单行数据头数量对所述解压指令的第四操作进行配置,得到所述第四操作的第四操作数,其中,所述第四操作用于根据所述第四操作数中的数据头的行数、换行距离以及单行数据头数量,读取所述数据块。
在其中一个实施例中,根据所述第四操作数中数据头中的起始地址和数据长度,得到所述第四操作数中的数据体的原始地址和数据长度;
使用所述数据体的原始地址和数据长度对所述解压指令的第四操作进行配置。
在其中一个实施例中,根据所述解压指令中的解压数据的目的地址,得到所述第五操作数中的解压数据的目标地址;
根据所述解压数据的目标地址对所述解压指令的第五操作进行配置,得到所述第五操作的第五操作数。
一种数据处理方法,所述方法包括:
获取解压指令,并对所述解压指令进行解析,得到所述解压指令的第四操作数和第五操作数;
从所述第四操作数指向的存储装置中读取压缩数据的数据块,以及将所述读取的数据块发送出去,所述第四操作数包括立即数或寄存器号;
将读取的所述压缩数据的数据块进行解压缩,得到解压数据;
将所述解压数据写入所述第五操作数据指向的存储装置,其中,所述第五操作数包括立即数或寄存器号。
在其中一个实施例中,若所述第四操作数为立即数,则根据所述第四操作数,从第一存储装置中读取所述压缩数据的数据块,以及将所述读取的数据块发送出去,其中,所述第一存储装置为片外存储装置;
若所述第四操作数为寄存器号,则根据所述第四操作数,从第二存储装置中读取所述压缩数据的数据块,以及将所述读取的数据块发送出去,其中,所述第二存储装置为片内存储装置。
在其中一个实施例中,根据所述第四操作数中数据头的源地址和地址偏移,读取压缩数据的数据块,其中,所述压缩数据的数据块中包括多个数据头和多个数据体。
在其中一个实施例中,根据所述第四操作数中数据头的行数、换行距离以及单行数据头数量,读取所述压缩数据的数据块。
在其中一个实施例中,根据所述第五操作数中的解压数据的目的地址,将得到的所述解压数据写入第五操作数指向的存储装置。
一种译码器,所述译码器包括:第一配置单元以及第二配置单元,所述第一配置单元连接所述第二配置单元;
所述第一配置单元,用于获取所述解压指令中数据块的块内行数以及块内单行数量,并根据所述数据块的块内行数以及块内单行数量对所述解压指令的第四操作进行配置,得到所述第四操作的第四操作数,其中,所述第四操作用于根据所述第四操作数,读取压缩数据的数据块,以及将所述读取的数据块发送出去,所述压缩数据的数据块中包括多个数据头和多个数据体,所述数据头中存储对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值,所述第四操作数包括立即数或寄存器号;
所述第二配置单元,用于获取所解压指令中解压数据的目的数据,并根据所述解压数据的目的数据对所述解压指令的第五操作进行配置,得到所述第五操作的第五操作数,其中,所述第五操作用于根据所述第五操作数,写出所述得到的解压数据,所述第五操作数包括立即数或寄存器号。
一种数据处理装置,所述数据处理装置包括配置单元、数据读写单元以及压缩解压单元,所述配置单元与所述压缩解压单元连接,所述配置单元与所述数据读写单元连接,所述压缩解压单元连接所述数据读写单元,其中,所述配置单元包括第一配置单元和第二配置单元;
所述数据读写单元接收所述配置单元发送的第四操作数以及第五操作数,根据所述第四操作数,从所述第四操作数指向的存储装置中读取压缩数据的数据块,并将所述压缩数据的数据块发送到所述压缩解压单元;
所述压缩解压单元接收所述压缩数据的数据块,并对所述压缩数据的数据块进行解压缩,得到解压数据;
所述数据读写单元还用于根据所述第五操作数,将所述解压数据写入所述第五操作数指向的存储装置。
上述解压指令译码方法、数据处理方法、译码器及数据处理装置,通过对解压指令进行解析,对解压指令的第四操作进行配置,得到第四操作的第四操作数,对解压指令的第五操作进行配置,得到第五操作的第五操作数,根据第四操作数和第五操作数完成第四操作以及第五操作,实现了对解压指令的解析,能够将特定格式的压缩数据进行解压缩,实现了对特定格式的压缩数据处理的方法。
一种数据压缩装置,所述数据压缩装置包括:至少一条压缩流水线,所述每条压缩流 水线包括至少两级流水压缩数据单元,所述流水压缩数据单元包括:编码电路、选择电路以及旁路通道;其中,各级的所述流水压缩数据单元中的编码电路的编码方式不同;所述编码电路的输出端与当前压缩流水线上的同级流水压缩数据单元中的选择电路的输入端连接;所述选择电路的输出端分别与所述当前压缩流水线上的下一级流水压缩数据单元中的所述旁路通道的一端和所述当前压缩流水线上的下一级流水压缩数据单元中的编码电路的输入端连接,所述旁路通道的另一端与所述当前压缩流水线上的下一级流水压缩数据单元中的选择电路的输入端连接;所述压缩流水线用于实现对输入数据的多级压缩处理;所述选择电路用于根据输入的控制信号确定输出给下一级流水压缩数据单元中的编码电路的输入数据。
一种计算装置,所述计算装置用于执行机器学习计算,所述计算装置包括运算单元以及控制单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:上述第一方面所述的数据压缩装置,以及主运算电路;所述从处理电路包括:上述第一方面所述的数据压缩装置,以及从运算电路;
所述控制单元,用于获取原始数据、运算指令以及控制指令,并将所述原始数据、所述运算指令和控制指令发送给所述主处理电路;
所述主处理电路,用于对所述原始数据执行压缩处理,以及与所述多个从处理电路之间传输数据和运算指令;
所述多个从处理电路,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并对所述多个中间结果进行压缩处理后传输给所述主处理电路;
所述主处理电路,还用于对压缩处理后的中间结果执行后续处理,得到计算结果。
一种机器学习芯片,该机器学习芯片包括上述的计算装置。
一种芯片封装结构,该芯片封装结构包括上述的机器学习芯片。
一种板卡,该板卡包括上述的芯片封装结构。
一种电子设备,该电子设备包括上述的板卡。
上述数据压缩装置及相关产品,数据压缩装置可以根据实际应用需求,灵活配置相应的编码方式对输入的数据进行压缩处理,从而提高了数据压缩效率;另外,上述数据压缩装置因为包括了至少一条压缩流水线,可以实现对多个输入的并行数据进行同时压缩处理,因此,本申请提出的数据压缩装置还可以进一步的提高使并行处理数据的速度。
一种数据解压装置,所述数据解压装置包括至少一条解压缩流水线,所述每条解压缩流水线包括至少两级流水解压数据单元,所述流水解压数据单元包括:解码电路、选择电路以及旁路通道;其中,各级的所述流水解压数据单元中的解码电路的解码方式不同;所述解码电路的输出端与当前解压缩流水线上的同级流水解压数据单元中的选择电路的输入端连接;所述选择电路的输出端分别与所述当前解压缩流水线上的下一级流水解压数据单元中的旁路通道的一端和所述当前解压缩流水线上的下一级流水解压数据单元中的解 码电路的输入端连接,所述旁路通道的另一端与所述当前解压缩流水线上的下一级流水解压数据单元中的选择电路的输入端连接;
所述解压缩流水线用于实现对输入数据的多级解压缩处理;
所述选择电路用于根据输入的控制信号确定输出给下一级流水解压数据单元中的解码电路的输入数据。
一种计算装置,所述计算装置用于执行机器学习计算,所述计算装置包括运算单元以及控制单元;所述运算单元包括:一个主处理电路和多个从处理电路;所述主处理电路包括:上述的数据解压装置,以及主运算电路;所述从处理电路包括:上述的数据解压装置,以及从运算电路;
所述控制单元,用于获取原始数据、运算指令以及控制指令,并将所述原始数据、所述运算指令和控制指令发送给所述主处理电路;
所述主处理电路,用于对所述原始数据执行压缩处理,以及与所述多个从处理电路之间传输数据和运算指令;
所述多个从处理电路,用于对所述主处理电路传输的数据进行解压缩处理,以及依据解压缩处理后的数据和运算指令并行执行中间运算,得到多个中间结果,并将所述多个中间结果发送给所述主处理电路。
一种机器学习芯片,该机器学习芯片包括上述的计算装置。
上述数据解压装置及相关产品,数据解压装置可以根据压缩数据时采用的压缩方式,灵活配置相应的解码方式对输入的压缩数据进行解压缩处理,从而提高了解压缩的准确性;另外,上述数据解压装置因为包括了至少一条解压缩流水线,可以实现对多个输入的并行数据进行同时解压缩处理,因此,本申请提出的数据解压装置还可以进一步的提高并行处理数据的速度。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个上述数据处理装置;该机器学习运算装置用于从其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其它处理装置;
当所述机器学习运算装置包含多个所述数据处理装置时,所述多个所述数据处理装置间可以通过特定的结构进行链接并传输数据;
其中,多个所述数据处理装置通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理装置共享同一控制系统或拥有各自的控制系统;多个所述数据处理装置共享内存或者拥有各自的内存;多个所述数据处理装置的互联方式是任意互联拓扑。
本申请实施例提供的一种组合处理装置,该组合处理装置包括如所述的机器学习处理装置、通用互联接口,和其它处理装置;该机器学习运算装置与上述其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其它处理装置连接,用于保存所述机器学习运算装置和所述 其它处理装置的数据。
本申请实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的数据处理装置、上述所述的机器学习运算装置或者上述所述的组合处理装置。
本申请实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。
本申请实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。
本申请实施例提供的一种芯片,包括至少一个如上述任一项所述的数据处理装置。
本申请实施例提供的一种电子设备,包括如所述的芯片。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据一示例性实施例示出的一种多个数据块摆放结果的结构示意图;
图2是根据另一示例性实施例示出的一种运算装置的结构示意图;
图3是根据一示例性实施例示出的一种呈阵列分布的运算装置的结构示意图;
图4是根据一示例性实施例示出的一种运算装置的具体结构示意图;
图5是根据一示例性实施例示出的一种编码电路的结构示意图;
图6是根据另一示例性实施例示出的另一种运算装置的结构示意图;
图7是根据一示例性实施例示出的另一种呈阵列分布的运算装置的结构示意图;
图8是根据一示例性实施例示出的另一种运算装置的具体结构示意图;
图9是根据一示例性实施例示出的一种数据压缩方法的流程图;
图10是根据一示例性实施例示出的一种数据压缩方法的具体流程图;
图11是根据一示例性实施例示出的一种数据解压方法的流程图;
图12是根据一示例性实施例示出的一种数据存取电路的结构示意图;
图13是根据一示例性实施例示出的一种数据存取方法的流程图;
图14是根据一示例性实施例示出的另一种运算装置的结构示意图;
图15是根据一示例性实施例示出的一种数据处理方法的流程图;
图16是根据一示例性实施例示出的另一种呈阵列分布的运算装置的结构示意图;
图17是根据一示例性实施例示出的另一种运算装置的具体结构示意图;
图18是根据一示例性实施例示出的另一种编码电路的结构示意图;
图19是根据一示例性实施例示出的另一种运算装置的结构示意图;
图20是根据一示例性实施例示出的另一种数据处理方法的流程图;
图21是根据一示例性实施例示出的另一种呈阵列分布的运算装置的结构示意图;
图22是根据一示例性实施例示出的另一种运算装置的具体结构示意图;
图23是根据一示例性实施例示出的另一种数据压缩方法的流程图;
图24是根据一示例性实施例示出的另一种数据压缩方法的具体流程图;
图25是根据一示例性实施例示出的另一种数据处理方法的流程图;
图26是根据一示例性实施例示出的一种数据解压方法的流程图;
图27是根据一示例性实施例示出的另一种数据解压方法的流程图;
图28是根据一示例性实施例示出的另一种数据解压方法的具体流程图;
图29是根据一示例性实施例示出的一种处理器的结构示意图;
图30是根据一示例性实施例示出的一种计算机系统的结构示意图;
图31是根据一示例性实施例示出的一种运算电路的结构示意图;
图32是根据一示例性实施例示出的另一种运算电路的结构示意图;
图33是根据一示例性实施例示出的一种数据处理方法的流程图;
图34是根据一示例性实施例示出的一种数据处理装置的结构示意图;
图35是根据一示例性实施例示出的一种计算机系统的结构示意图;
图36是根据一示例性实施例示出的一种运算电路的结构示意图;
图37是根据一示例性实施例示出的另一种运算电路的结构示意图;
图38是根据一示例性实施例示出的一种数据处理方法的流程图;
图39是根据一示例性实施例示出的另一种数据处理方法的流程图;
图40是根据一示例性实施例示出的一种数据编码方法的流程图;
图41是根据一示例性实施例示出的一种编码电路得到哈夫曼树的结构示意图;
图42是根据一示例性实施例示出的一种编码电路得到符号序列表的结构示意图;
图43是根据一示例性实施例示出的一种数据编码方法的具体流程图;
图44是根据一示例性实施例示出的另一种数据编码方法的流程图;
图45是根据一示例性实施例示出的一种处理器的结构示意图;
图46是根据一示例性实施例示出的另一种处理器的结构示意图;
图47是根据一示例性实施例示出的另一种处理器的结构示意图;
图48是根据一示例性实施例示出的另一种处理器的结构示意图;
图49是根据一示例性实施例示出的一种编码方法的流程图;
图50是根据一示例性实施例示出的一种解码方法的流程图;
图51是根据一示例性实施例示出的另一种解码方法的流程图;
图52是根据一示例性实施例示出的一种处理器的结构示意图;
图53是根据一示例性实施例示出的另一种处理器的结构示意图;
图54是根据一示例性实施例示出的另一种处理器的结构示意图;
图55是根据一示例性实施例示出的另一种处理器的结构示意图;
图56是根据一示例性实施例示出的一种编码方法的流程图;
图57是根据一示例性实施例示出的一种数据压缩装置的结构示意图;
图58是根据一示例性实施例示出的另一种数据压缩装置的结构示意图;
图59是根据一示例性实施例示出的另一种数据压缩装置的结构示意图;
图60是根据一示例性实施例示出的另一种数据压缩装置的结构示意图;
图61是根据一示例性实施例示出的另一种数据压缩装置的结构示意图;
图62是根据一示例性实施例示出的一种数据压缩方法的流程图;
图63是根据一示例性实施例示出的一种数据压缩方法的具体流程图;
图64是根据一示例性实施例示出的一种数据结构的示意图;
图65是根据一示例性实施例示出的一种数据解压方法的流程图;
图66是根据一示例性实施例示出的一种待运算数据的结构示意图;
图67是根据一示例性实施例示出的一种得到的解压结果的示意图;
图68是根据一示例性实施例示出的一种数据处理装置的结构示意图;
图69是根据一示例性实施例示出的一种数据处理装置的结构示意图;
图70是根据一示例性实施例示出的一种数据处理方法的流程图;
图71是根据一示例性实施例示出的一种数据处理装置的结构示意图;
图72是根据一示例性实施例示出的另一种数据处理方法的流程图;
图73是根据一示例性实施例示出的一种数据处理装置的结构示意图;
图74是根据一示例性实施例示出的一种获取压缩数据的流程示意图;
图75是根据一示例性实施例示出的另一种数据处理方法的流程图;
图76是根据一示例性实施例示出的一种数据处理装置的结构示意图;
图77是根据一示例性实施例示出的一种对压缩数据进行解压得到解压数据的具体结构示意图;
图78是根据一示例性实施例示出的另一种数据处理方法的流程图;
图79是根据一示例性实施例示出的一种数据处理装置的具体结构示意图;
图80是根据一示例性实施例示出的另一种数据处理方法的流程图;
图81是根据一示例性实施例示出的一种数据压缩解压装置的结构示意图;
图82是根据一示例性实施例示出的一种数据压缩解压装置的结构示意图;
图83是根据一示例性实施例示出的一种压缩解压操作执行组件的具体结构示意图;
图84是根据一示例性实施例示出的一种数据压缩解压装置的具体结构示意图;
图85是根据一示例性实施例示出的一种压缩解压执行组件的结构示意图;
图86是根据一示例性实施例示出的一种控制电路得到的哈夫曼树的结构示意图;
图87是根据一示例性实施例示出的另一种压缩解压执行组件的结构示意图;
图88是根据一示例性实施例示出的另一种压缩解压执行组件的结构示意图;
图89是根据一示例性实施例示出的一种压缩解压执行组件的具体结构示意图;
图90是根据一示例性实施例示出的一种数据压缩方法的流程图;
图91是根据一示例性实施例示出的一种数据处理装置的具体结构示意图;
图92是根据一示例性实施例示出的另一种数据处理装置的结构示意图;
图93是根据一示例性实施例示出的一种压缩指令的译码方法的流程图;
图94是根据一示例性实施例示出的一种数据压缩装置的结构示意图;
图95是根据一示例性实施例示出的一种数据压缩装置的结构示意图;
图96是根据一示例性实施例示出的另一种数据压缩装置的结构示意图;
图97是根据一示例性实施例示出的另一种数据压缩装置的结构示意图;
图98是根据一示例性实施例示出的另一种数据压缩装置的结构示意图;
图99是根据一示例性实施例示出的一种计算装置的结构示意图;
图100是根据一示例性实施例示出的一种计算装置的具体结构示意图;
图101是根据一示例性实施例示出的一种数据解压装置的结构示意图;
图102是根据一示例性实施例示出的一种数据解压装置的结构示意图;
图103是根据另一示例性实施例示出的一种数据解压装置的结构示意图;
图104是根据一示例性实施例示出的一种数据解压装置的具体结构示意图;
图105是根据一示例性实施例示出的一种数据解压装置的具体结构示意图;
图106是根据一示例性实施例示出的一种计算装置的结构示意图;
图107是根据一示例性实施例示出的一种计算装置的具体结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
1、数据压缩方法、数据解压方法、编码电路和运算装置
在其中一个实施例中,提出了一种数据存取电路1-100,该数据存取电路包括互相连接的读写控制电路1-110、读写电路1-120和存储器1-130。其中,该读写控制电路1-110用于生成数据读写参数,并根据数据读写参数生成读写控制指令。该读写控制指令用于控制读写电路1-120完成特定的读写操作。具体地,读写控制电路1-110生成的数据读写参数包括:读写起始地址、步长、读写操作次数以及单次读写块数。该存储器1-130用于存储待存取数据。该待存取数据可被划分为多个数据块,该多个数据块可以以一维紧密或二维紧密的形式存储于存储器1-130中。
可选地,在将待存取数据分块时,可以考虑该待存取数据的数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中数据的重要程度可以根据该数据的出现频率、数据大小等等特征来确定。可选地,在将待存取数据分块时,还可以参考预设值。可选地,存储器1-130中的数据可以为输入数据、中间数据等等。
在其中一个实施例中,提出了一种数据存取方法,该数据存取方法被上述实施例中的数据存取电路执行,该方法具体包括:
步骤S1-101:将待存取数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块。
其中,数据块按照预设格式摆放是指将各个数据块按照预设格式存取于存取介质的相应位置。该预设格式可以为一维紧密、二维紧密或者其他维度的紧密。具体地,读写控制电路1-110将待存取数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块。进一步地,读写控制电路1-110在将待存取数据划分为多个数据块,并按照预设格式摆放后,得到该待存取数据中各个数据块的存储参数。待存取数据中各个数据块的存储参数包括起始地址、块序列号、行号等等。该存储参数用于对待存取数据进行读写操作。其中,数据块的块序列号可以用于区分不同的数据块。可选地,可以使用数字对数据块进行编号。
例如:假设待存取数据被划分为多个数据块并按照预设格式摆放,摆放结果如图1所示。此时,该待存取数据被划分为9个数据块,可以使用0-8这9个数值按照从上到下,从左到右的顺序为各个数据块配置块序列号。使用0-2这3个数值按照从上到下的顺序配置各个数据块的行号。
步骤S1-102:获取读写参数,并根据该读写参数得到读写控制指令。其中,该读写参数包括:读写起始地址、步长读写操作以及单次读写块数。进一步地,步长为相邻两次读写操作的起始数据块的块序列号差值。读写操作次数为读写电路1-120执行读写操作的次数。单次读写块数为读写电路1-120每次读写的数据块的数量。可选地,该读写参数还可以包括读写操作次数,该读写操作次数可以根据预读写的数据块总数以及单次读写块数得到。其中,与读写的数据块总数可以根据实际需求设定。可选地,预读写的数据块总数为读写参数中单次读写块数的整数倍。
具体地,读写控制电路1-110获取读写参数,并根据该读写参数得到读写控制指令。例如待存取数据被划分数据块后,摆放格式如图1中所示,假设读写控制电路1-110预读取该待存取数据中的块序列号为4、5、7、8数据块。此时,获取的读写参数中,读写起始地址可以为块序列号为4的数据块的起始地址address A,步长为3,单次读写块数为2。由于,本示例中预读写的数据块总数大于单次读写块数,因此,该示例中可以设置读写操作次数为2。
步骤S1-103:根据读写控制指令,对待存取数据进行读写操作。
具体地,数据存取电路的读写电路1-120根据读写控制指令,对待存取数据进行读写操作。数据存取电路的读写电路1-120根据读写控制指令和待存储数据的存储参数,确定每次读写操作的目标数据块和目标数据块的读写操作次序,按照读写操作次序读写操作对应的目标数据块。参照图3,读写电路1-120的读写电路1-120根据对待存取数据进行读写操作具体包括:读写电路1-120的读写电路1-120首先以待存取数据中块序列号为4的数据块的起始地址address A作为第一次读写操作的起始地址,以块序列号为4和5的数据块作为第一读写操作的目标数据块。之后,按照读写参数中设置的步长3得到第二次读写操作的起始地址:待存取数据中块序列号为7的数据块的起始地址address B,以块序列号为7和8的数据块作为第二读写操作的目标数据块。第一次读写块序列号为4和5的数据块;第二次读写块序列号为7和8的数据块。
上述实施例中的数据存取方法,通过读写参数,能够根据不同需求,获取待存取数据中的数据块,从而可以实现不必按照存储顺序访问存储的数据中的数据块,且上述实施例中的数据存取方法中通过引入步长和单次读写块数这些存取参数,实现了按照二维方式访问存储的数据,这为处理自然图像、特征图等具有二维相似性的数据提供了极大地便利。
预设值
上述实施例中的数据存取电路可以被设置任一具有数据存取需求的集群、处理器或者运算单元中。现以该数据存取电路被应用于运算装置中为例,说明该数据存取电路在数据运算中的应用。
如图2所示,在本申请的其中一个实施例中提出了一种运算装置1-10,包括主运算单元1-300和多个从运算单元1-400。多个从运算单元1-400分别与主运算单元1-300连接。具体地,主运算单元1-300可以用于对输入数据执行前序处理,以及与多个从运算单元1-400之间传输数据。具体地,多个从运算单元1-400用于使用从主运算单元1-300传输的数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主运算单元1-300。主运算单元1-300还用于对从运算单元1-400传输来的多个中间结果进行后续处理。进一步地,该主运算单元1-300还设有上述实施例中的数据存取电路1-100。该数据存取电路用于数据的存取。可选地,运算装置根据主运算单元1-300与从运算单元1-400功能的区别,在硬件层面上设置主运算单元1-300和从运算单元1-400,也可以在设置多个相同的运算单元,在实际处理数据过程中,从该多个相同的运算单元中指定主运算单元1-300和从运算单元1-400。
在其中一个实施例中,提出了一种数据处理方法,该数据处理方法可以被运算装置1-10执行,进行数据处理。该方法具体包括:
步骤S1-201:运算装置的主运算单元使用上述任一实施例中的数据存取方法获取待运算数据。
具体地,运算装置1-10的运主算单元使用上述实施例中的方法获取待运算数据。更具体地,数据存取电路首先将待输入数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块。之后,数据存取电路获取读写参数,并根据该读写参数得到读写控制指令。最后,数据存取电路根据读写控制指令,对待存取数据进行读写操作。读写操作得到的数据即为待运算数据。可选地,该待运算数据包括:神经元矩阵和/或权值矩阵。
步骤S1-202:主运算单元将获取的待运算数据广播或分发至从运算单元,以使所述从运算单元使用获取的待运算数据进行运算,得到中间结果,并将该中间结果发送至主运算单元。可选地,该中间结果可以为从运算单元执行完某次乘法运算后的输出结果。
步骤S1-203:主运算单元接收该中间结果后,进行后续处理,得到运算结果。
可选地,主运算单元1-300接收该中间结果后,进行后续处理可以包括:使用该中间结果进行累加和激活运算得到运算结果。可选地,若该运算结果为最终的运算结果,则运算装置1-10可以终止上述数据处理流程。若该运算结果不是最终的运算结果,则运算装置1-10可以使用该运算结果进行下一阶段的运算。
在其中一个实施例中,如图3所示,运算装置1-10的多个从运算单元1-400呈阵列分布;每个从运算单元1-400与相邻的其他从运算单元1-400连接,主运算单元1-300连接多个从运算单元1-400中的k个从运算单元1-400,该k个从运算单元1-400为:第1行的n个从运算单元1-400、第m行的n个从运算单元1-400以及第1列的m个从运算单元1-400。需要说明的是,如图6所示,的K个从运算单元1-400仅包括第1行的n个从运算单元1-400、第m行的n个从运算单元1-400以及第1列的m个从运算单元1-400,即该k个从运算单元1-400为多个从运算单元1-400中直接与主运算单元1-300连接的从运算单元1-400。具体地,该K个从运算单元1-400,用于在主运算单元1-300以及多个从运算单元1-400之间转发数据。
进一步地,该主运算单元1-300可以包括激活运算电路、加法运算电路以及上述实施例中的数据存取电路。其中,激活运算电路,用于执行主运算单元1-300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;数据存取电路主要用于是使用上述实施例中的数据存取方法向主运算单元1-300搬运待运算数据。具体地,从运算单元1-400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该从运算单元1-400还可以包括加法运算电路,用于执行加法运算或累加运算。可选地,该从运算单元1-400还包括转发电路,用于将乘积结果转发至主运算单元1-300。
在本实施例中,步骤S1-202(主从运算单元传送数据)包括:
步骤S1-2021a:主运算单元通过K个从运算单元将获取的待运算数据广播或分发至从运算单元。
步骤S1-2022a:从运算单元根据相应的运算指令使用待运算数据进行乘法或加法运算,得到中间结果。
步骤S1-2023a:从运算单元通过K个从运算单元将得到的中间结果发送至从运算单元。
在另外一个实施例中,如图4所示,运算装置1-10还可以包括分支运算单元1-500,主运算单元1-300与一个或多个分支运算单元1-500连接,分支运算单元1-500与一个或多个从运算单元1-400连接。
具体地,该分支运算单元1-500,用于转发主运算单元1-300与从运算单元1-400之间的数据。该主运算单元1-300可以包括激活运算电路、加法运算电路以及上述实施例中的数据存取电路。其中,激活运算电路,用于执行主运算单元1-300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;数据存取电路主要用于是使用上述实施例中的数据存取方法向主运算单元1-300搬运待运算数据。具体地,从运算单元1-400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该从运算单元1-400还可以包括加法运算电路,用于执行加法运算或累加运算。可选地,该从运算单元1-400还包括转发电路,用于将乘积结果转发至主运算单元1-300。
在本实施例中,步骤S1-202(主从运算单元传送数据)包括:
步骤S1-2021b:主运算单元通过分支运算单元将获取的待运算数据广播或分发至从运算单元。
步骤S1-2022b:从运算单元根据相应的运算指令使用待运算数据进行乘法或加法运算,得到中间结果。
步骤S1-2023b:从运算单元通过分支运算单元将得到的中间结果发送至从运算单元。
在其中一个实施例中,如图5所示,还提出了一种编码电路1-200。该编码电路包括数据分割电路1-210以及压缩解压电路1-220。该数据分割电路1-210与压缩解压电路1-220连接。其中,该数据分割电路1-210可以按照预设规则将待压缩数据进行分割。可选地,该数据分割电路1-210可以根据数据的特征将数据划分为多个数据块。该压缩解压电路1-220用于使用预设的编码方式压缩或解压数据。可选地,该编码电路可以被设置在集群中的各个设备上,用于将集群中各个设备之间传输的数据进行压缩。这样可以降低集群中各个设备传输数据的带宽要求。可选地,该编码电路也可以被设置于包含多个处理器的计算机设备的处理器上。该编码电路也还可以被设置于运算装置的运算单元上或者其他有数据传输需求的各个装置、部件上。
在其中一个实施例中,提出了一种数据压缩方法,该数据压缩方法被上述实施例中的编码电路1-200上,该方法包括:
步骤S1-301,根据待压缩数据的特征将待压缩数据划分为多个数据块。
具体地,编码电路1-200的数据分割电路1-210根据待压缩数据的特征将待压缩数据划分为多个数据块。可选地,该待压缩数据的特征可以包括数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中数据的重要程度可以根据该数据出现的频率、数据大小等等特征来确定。可选地,在将待压缩数据划分为多个数据块时还可以考虑预设值。可选地,在将待压缩数据划分为多个数据块之前,筛除待压缩数据中的“0”值。
步骤S1-302,将待压缩数据的各个数据块分别进行压缩,得到与每一数据块对应的数据头和数据体。其中,每一数据头包括对应的数据体的起始地址、数据长度等信息。可选地,该数据头还可以包括对应关系标识。可选地,数据体包括压缩前对应的数据块的编码数据。可选地,编码电路的压缩解压电路1-220可以使用Huffman(哈夫曼)编码、游程编码、LZ77以及它们的任意组合等等方式对各个数据块进行压缩。可选地,在压缩解压电路1-220使用哈夫曼编码、游程编码、LZ77以及它们的任意组合等等方式对各个数据块进行压缩之前,根据选择的压缩算法对待处理数据进行预处理。例如,使用哈夫曼编码对各个数据块进行压缩时,需待压缩数据进行排序处理,得到哈夫曼树,之后基于该哈夫曼树压缩各个数据块。
步骤S1-303,根据得到的各个数据头得到压缩数据的头段,根据得到的各个数据体得到压缩数据的数据段,根据该压缩数据的头段和该压缩数据的数据段得到压缩数据。
具体地,编码电路1-200的压缩解压电路1-220根据得到的各个数据头得到压缩数据的头段,根据得到的各个数据体得到压缩数据的数据段,根据该压缩数据的头段和该压缩数据的数据段得到压缩数据。
上述实施例中的数据压缩方法,首先将待压缩数据进行分块,之后分块压缩各个数据块,得到与各个数据块一一对应的数据头与数据体,之后根据得到的与各个数据块对应的 数据头和数据体得到压缩数据的头段和数据段,进而得到压缩数据。该方法通过将待压缩数据分块压缩,实现并行压缩各个数据块提高压缩效率的目的
在其中一个实施例中,步骤S1-303包括:
步骤S1-3031a:使用标识位标识各个数据块对应的数据头和数据体的对应关系。具体地,编码电路1-200的压缩解压电路1-220使用标识位标识各个数据块对应的数据头和数据体的对应关系。
步骤S1-3032a:将各个包含标识位的数据头组合得到压缩数据的头段,将各个包含标识位的数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
在另外一个实施例中,步骤S1-303包括:
步骤S1-3031b:根据待压缩数据中各个数据块之间的位置关系得到对应的数据头的摆放格式。
具体地,编码电路1-200的压缩解压电路1-220根据待压缩数据中各个数据块之间的位置关系得到对应的数据头的摆放格式。可选地,该数据头的摆放格式可以为,按照各个数据头对应的数据块与其他数据块之间的位置关系,摆放每一数据块对应的数据头。
步骤S1-3032b:根据数据头的摆放格式摆放各个数据块对应的数据头得到压缩数据的头段,根据第一预设摆放格式摆放各个数据块对应的数据体得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
具体地,编码电路1-200的压缩解压电路1-220根据数据头的摆放格式摆放各个数据块对应的数据头得到压缩数据的头段,根据第一预设摆放格式摆放各个数据块对应的数据体得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
可选地,压缩解压电路1-220将得到的压缩数据的头段与压缩数据的数据体拼接得到压缩数据。可选地,第一预设摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,可以通过设置标识位的标识压缩数据的数据段中各个数据体与压缩数据的头段中各个数据头的对应关系。
可选地,该待压缩数据可以为集群中各个设备之间需传输的数据,可以为多个处理器之间需传输的数据,还可以为运算装置中各个运算单元之间需传输的数据。例如运算装置需获取的输入数据。下面以运算装置中各个运算单元中需传输的数据为例,具体说明上述实施例中的数据压缩方法的应用。
在其中一个实施例中,如图6所示,提出了另一种运算装置1-20,该运算装置1-20包括相互连接主运算单元1-300和多个从运算单元1-400。该主运算单元1-300和多个从运算单元1-400上设置有上述实施例中的编码电路。具体地,主运算单元1-300用于对输入数据执行前序处理,以及与多个从运算单元1-400之间传输数据。具体地,多个从运算单元1-400用于使用从主运算单元1-300传输的数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主运算单元1-300。主运算单元1-300还用于对从运算单元1-400传输来的多个中间结果进行后续处理。
作为其中一个实施例,提出了一种数据处理方法,该方法被上述运算装置1-20执行,具体包括:
步骤S1-401,主运算单元接收输入数据,并使用上述实施例中的数据压缩方法分块压缩该输入数据得到压缩数据。
具体地,主运算单元1-300的编码电路1-200根据输入数据的特征。将输入数据划分为多个数据块。之后编码电路1-200将待压缩数据的各个数据块进行压缩,得到与每一数据块对应的数据头和数据体。最后,编码电路1-200根据得到的各个数据头得到压缩数据的头段,根据得到的各个数据体得到压缩数据的数据段,根据该压缩数据的头段和该压缩数据的数据段得到压缩数据。
步骤S1-402,主运算单元将得到的压缩数据传送至从运算单元。
步骤S1-403,从运算单元接收该压缩数据后,解压该压缩数据得到解压数据。
步骤S1-404,从运算单元使用该解压数据进行乘法运算,得到中间结果,并将该中间结果传送至主运算单元。
步骤S1-405,主运算单元的使用该中间结果进行累法和激活运算,得到运算结果。
可选地,若该运算结果为最终的运算结果,则运算装置1-20可以终止上述数据处理流程。若该运算结果不是最终的运算结果,则运算装置1-20可以使用该运算结果进行下一阶段的运算。
上述实施例中的运算装置将输入数据进行压缩后再传送至从运算单元1-400可以降低运算单元之间数据传输的带宽要求。
在其中一个实施例中,如图16所示,运算装置1-20的多个从运算单元1-400呈阵列分布;每个从运算单元1-400与相邻的其他从运算单元1-400连接,主运算单元1-300连接多个从运算单元1-400中的k个从运算单元1-400,该k个从运算单元1-400为:第1行的n个从运算单元1-400、第m行的n个从运算单元1-400以及第1列的m个从运算单元1-400。需要说明的是,如图16所示的K个从运算单元1-400仅包括第1行的n个从运算单元1-400、第m行的n个从运算单元1-400以及第1列的m个从运算单元1-400,即该k个从运算单元1-400为多个从运算单元1-400中直接与主运算单元1-300连接的从运算单元1-400。具体地,该K个从运算单元1-400,用于在主运算单元1-300以及多个从运算单元1-400之间转发数据。
进一步地,该主运算单元1-300可以包括激活运算电路、加法运算电路以及上述实施例中的编码电路。其中,激活运算电路,用于执行主运算单元1-300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;编码电路主要用于是使用上述实施例中的数据压缩方法对数据进行压缩。具体地,从运算单元1-400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该从运算单元1-400还可以包括加法运算电路,用于执行加法运算或累加运算。可选地,该从运算单元1-400还包括转发电路,用于将乘积结果转发至主运算单元1-300。
在本实施例中,步骤S1-402包括:主运算单元通过K个从运算单元0将得到的压缩 数据广播或分发至从运算单元。
在本实施例中,步骤S1-404包括:从运算单元通过K个从运算单元将得到的中间结果传送至主运算单元。
在另外一个实施例中,如图8所示,运算装置1-20还可以包括分支运算单元1-500,主运算单元1-300与一个或多个分支运算单元1-500连接,分支运算单元1-500与一个或多个从运算单元1-400连接。
具体地,该分支运算单元1-500,用于转发主运算单元1-300与从运算单元1-400之间的数据。该主运算单元1-300可以包括激活运算电路、加法运算电路以及上述实施例中的编码电路。其中,激活运算电路,用于执行主运算单元1-300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;编码电路主要用于是使用上述实施例中的数据压缩方法压缩数据。具体地,从运算单元1-400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该从运算单元1-400还可以包括加法运算电路,用于执行加法运算或累加运算。
在本实施例中,步骤S1-402包括:主运算单元通过分支运算单元将得到的压缩数据广播或分发至从运算单元。
在本实施例中,步骤S1-404包括:从运算单元通过分支运算单元将得到的中间结果传送至主运算单元。
在其中一个实施例中,还提出了一种神经网络运算方法。该神经网络运算方法可被上述实施例中的运算装置1-20执行,该运算装置1-20通过分支运算单元1-500转发主运算单元1-300与从运算单元1-400之间的数据,该方法包括:
步骤S1-501,主运算单元获取广播数据和分发数据,并将分发数据分割为a个子数据。可选地,广播数据可以为神经元数据或者权值等等数据,其中a为正整数。可选地,分发数据可以为神经元数据或者权值等等数据。
步骤S1-502,主运算单元使用上述实施例中的数据压缩方法,将广播数据和分发子数据分别分块进行压缩,得到广播压缩数据和a个分发压缩数据。
具体地,主运算单元的编码电路使用上述实施例中的数据压缩方法,将广播数据和分发子数据分别分块进行压缩,得到广播压缩数据和a个分发压缩数据。具体地,编码电路首先根据广播数据的特征将该广播数据划分为多个数据块,之后编码电路将该广播数据的多个数据块中的各个数据块进行压缩,得到与广播数据的每一数据块对应的数据头和数据体。最后编码电路根据得到的各个数据头得到广播压缩数据的头段,根据得到的各个数据体得到广播压缩数据的数据段,根据该广播压缩数据的头段和该广播压缩数据的数据段得到广播压缩数据。具体地,编码电路使用上述实施例中的数据压缩方法分别各个压缩分发子数据,得到a个分发压缩数据。进一步地,编码电路根据分发数据的特征,将a个子数据中某一分发子数据划分为多个数据块。之后编码电路将该某一分发子数据的多个数据块中的各个数据块进行压缩,得到与该某一分发子数据的每一数据块对应的分发数据头和分发数据体。最后编码电路根据得到的各个分发数据头得到分发压缩数据的头段,根据得到 的各个分发数据体得到分发压缩数据的数据段,根据该分发压缩数据的头段和该分发压缩数据的数据段得到分发压缩数据。上述数据压缩方法,能够通过压缩该a个子数据中的各个子数据,得到a个分发压缩数据。
步骤S1-503,主运算单元将得到的a个分发压缩数据分发至a个从运算单元,将得到的广播压缩数据广播至该a个从运算单元。
可选地,主运算单元1-300通过分支运算单元1-500将得到的a个分发压缩数据分发至a个从运算单元1-400,通过分支运算单元1-500将得到的广播压缩数据广播至该a个从运算单元1-400。可选地,若分支运算单元1-500连接的从运算单元1-400的数量大于等于a,则主运算单元1-300可以通过一个或多个分支运算单元1-500将得到的a个分发压缩数据分发至a个从运算单元1-400,通过一个或多个分支运算单元1-500将得到的广播压缩数据广播至该a个从运算单元1-400。可选地,若分支运算单元1-500连接的从运算单元1-400的数量小于a,则主运算单元1-300可以通过多个分支运算单元1-500将得到的a个分发压缩数据分发至a个从运算单元1-400,通过多个分支运算单元1-500将得到的广播压缩数据广播至该a个从运算单元1-400。
可选地,主运算单元1-300通过与主运算单元1-300连接的k个从运算单元1-400将得到的a个分发压缩数据分发至a个从运算单元1-400,通过与主运算单元1-300连接的k个从运算单元1-400将得到的广播压缩数据广播至该a个从运算单元1-400。
需要说明的是,在具体应用过程中,使用与主运算单元1-300连接的k个从运算单元1-400还分支运算单元1-500进行主运算单元1-300以及多个从运算单元1-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S1-504,各个从运算单元解压该广播压缩数据和对应分发压缩数据得到广播解压数据和分发解压数据。具体地,从运算单元的编码电路解压该广播压缩数据和对应分发压缩数据得到广播解压数据和分发解压数据。
步骤S1-505,各个从运算单元使用对应的广播解压数据和分发解压数据进行运算,得到中间结果。可选地,可以使用从运算单元的身份信息标识各个从运算单元得到的中间结果。
步骤S1-506,a个从运算单元分别将得到的中间结果发送给主运算单元。
可选地,a个从运算单元1-400分别将得到的中间结果通过分支电路发送给主运算单元1-300。可选地,a个从运算单元1-400分别将得到的中间结果通过与主运算单元1-300连接的k个从运算单元1-400发送给主运算单元1-300。
需要说明的是,在具体应用过程中,使用与主运算单元1-300连接的k个从运算单元1-400还分支运算单元1-500进行主运算单元1-300以及多个从运算单元1-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S1-507,主运算单元使用该a个从运算单元的中间结果进行运算,得到运算结果。
本实施例提出的神经网络运算方法,首先将广播数据和分发数据压缩后,再进行广播或分发,可以有效的降低运算装置在进行神经网络运算时的带宽要求,提高了各个运算单 元之间的数据传输效率。
现以神经网络运算中的全连接运算为例具体说明上述神经网络运算过程,该全连接运算为执行的y=f(wx+b)的运算过程,其中,x为神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,该激活函数可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。此处将神经元矩阵作为广播数据,权值矩阵作为分发数据,具体运算过程包括:
步骤S1-601,主运算单元将权值矩阵划w分为a权值子矩阵。
步骤S1-602,主运算单元使用上述实施例中的数据压缩方法,将神经元矩阵x进行压缩,得到神经元压缩数据,主运算单元使用上述实施例中的数据压缩方法,将a权值子矩阵分别进行压缩,得到a个权值子矩阵压缩数据。
步骤S1-603,主运算单元将得到的a个权值子矩阵压缩数据分发至a个从运算单元,将得到的神经元压缩数据广播至该a个从运算单元。
步骤S1-604,各个从运算单元的编码电路解压该神经元压缩数据和对应权值压缩数据得到神经元解压数据和权值解压数据。
步骤S1-605,各个从运算单元分别执行权值解压数据与神经元解压数据的乘法运算和累加运算,得到a个中间结果,各个从运算单元分别将得到的中间结果发送至主运算单元。
步骤S1-606,主运算单元根据该a个中间结果得到最终的运算结果。具体地,主运算单元1-300首先将该个中间结果排序得到wx的运算结果,之后将该运算结果执行偏置b的运算,最后通过主运算单元的激活电路执行激活操作得到最终的运算结果y。
本实施例中运算装置在进行全连接运算时,首先将分发的权值子矩阵和广播的神经元矩阵进行压缩后,再分发或广播数据,可以提高主运算单元1-300与从运算单元1-400之间的数据传输效率,降低神经网络运算过程中主运算单元1-300与从运算单元1-400之间数据传输的带宽要求。
在其中一个实施例中,如图9所示,提出了另一种数据压缩方法,该数据压缩方法可以被上述实施例中的编码电路1-200执行,该方法包括:
步骤S1-701,根据编码电路的数量将待运算数据划分为多个组,得到多个待压缩数据。
具体地,编码电路的数据分割电路1-210根据编码电路的数量将待运算数据划分为多个组,得到多个待压缩数据。可选地,该编码电路可以设置在集群中的设备上,该编码电路也可以设置计算机设备的处理器上。该编码电路还可以设置在运算装置的运算单元上。可选地,将待运算数据划分的组的数量为编码电路的数量的整数倍。
步骤S1-702,根据待压缩数据的特征分别将多个待压缩数据中的各个待压缩数据划分为多个数据块。
具体地,编码电路的数据分割电路1-210根据待压缩数据的特征分别将多个待压缩数据中的各个待压缩数据划分为多个数据块。可选地,该待压缩数据的特征可以包括数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中数据的重要程度可以根据该数据出现的频率、数据大小等等特征来确定。可选地,在将待压缩数据划分为多个数据块时还可以考虑预设值。可选地,在将待压缩数据划分为多个数据块之前,筛除待压 缩数据中的“0”值。
步骤S1-703,将各个待压缩数据中的各个数据块分别进行压缩,得到各个待压缩数据中每一数据块对应的数据头和数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含压缩前对应的数据块的编码数据。可选地,可选地,编码电路的压缩解压电路1-220可以使用哈夫曼编码、游程编码、LZ77以及它们的任意组合等等方式对各个数据块进行压缩。可选地,在压缩解压电路1-220使用哈夫曼编码、游程编码、LZ77以及它们的任意组合等等方式对各个数据块进行压缩之前,根据选择的压缩算法对待处理数据进行预处理。例如,使用哈夫曼编码对各个数据块进行压缩时,需待压缩数据进行排序处理,得到哈夫曼树,之后基于该哈夫曼树压缩各个数据块。
步骤S1-704,根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。
具体地,编码电路1-200的压缩解压电路1-220根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。
上述实施例中的数据压缩方法,首先根据编码电路的数量将待压缩数据进行分组,然后根据数据的特征将待压缩数据分块,之后分块压缩各个数据块,得到与各个数据块一一对应的数据头与数据体,之后根据得到的与各个数据块对应的数据头和数据体得到压缩数据的头段和数据段,进而得到压缩数据。该方法通过将待压缩数据分组并分块压缩,实现并行压缩各个数据块提高压缩效率的目的。
在其中一个实施例中,步骤S704包括:
步骤S1-7041a:使用标识位标识各个数据块对应的数据头和数据体的对应关系。具体地,编码电路1-200的压缩解压电路1-220使用标识位标识各个数据块对应的数据头和数据体的对应关系。
步骤S1-7042a:将包含标识位的各个数据头组合得到压缩数据的头段,将包含标识位的各个数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段分别组合得到压缩数据。
具体地,编码电路1-200的压缩解压电路1-220将包含标识位的各个数据头组合得到压缩数据的头段,将包含标识位的各个数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段分别组合得到压缩数据。
在另外一个实施例中,步骤S1-704包括:
步骤S1-7041b:根据各个待压缩数据之间的位置关系,以及各个待压缩数据中每一数据块与其他数据块之间的位置关系,得到各个数据头的摆放格式。
具体地,编码电路1-200的压缩解压电路1-220根据各个待压缩数据之间的位置关系,以及各个待压缩数据中每一数据块与其他数据块之间的位置关系,得到各个数据头的摆放格式。可选地,各个数据头的摆放格式可以为,与对应的数据块在待运算数据中的位置一致。该位置一致是指对应的数据块所处的待运算数据中各个数据块之间的相对位置一致, 以及对应的数据块所处的待运算数据与其他待运算数据的相对位置也一致。
步骤S1-7042b:根据得到的数据头的摆放格式摆放各个数据头,得到压缩数据的头段;根据第一预设摆放格式摆放各个数据体,得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
具体地,编码电路1-200的压缩解压电路1-220根据得到的数据头的摆放格式摆放各个数据头,得到压缩数据的头段;根据第一预设摆放格式摆放各个数据体,得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
可选地,压缩解压电路1-220将得到的各个压缩数据的头段与对应的各个压缩数据的数据体拼接得到各个压缩数据。可选地,各个压缩数据的数据段中数据体的第一预设摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,可以通过设置标识位的标识压缩数据的数据段中各个数据体与压缩数据的头段中各个数据头的对应关系。
可选地,该待压缩数据可以为集群中各个设备之间需传输的数据,可以为多个处理器之间需传输的数据,还可以为运算装置中各个运算单元之间需传输的数据。例如运算装置需获取的输入数据。下面以运算装置中各个运算单元中需传输的数据为例,具体说明上述实施例中的数据压缩方法的具体压缩过程和应用。
作为其中一个实施例,如图10所示,提出了一种数据压缩方法,该方法被上述运算装置1-20执行,具体包括:
步骤S1-801,主运算单元接收输入数据,并使用上述实施例中的数据压缩方法将该输入数据进行压缩,得到多个压缩数据。
具体地,主运算单元1-300的编码电路接收输入数据后,按照从运算单元1-400的数量将输入数据进行分组。应当清楚的是,该从运算单元1-400的数量为执行数据压缩操作的从运算单元1-400的数量。
步骤S1-802,主运算单元将得到的多个待压缩数据分发至多个从运算单元。
可选地,主运算单元1-300可以在得到的多个压缩数据中增加从运算单元1-400身份标识,并根据该身份标识分发待压缩数据。
步骤S1-803,各个从运算单元的编码电路根据接收的待压缩数据的特征将待压缩数据分块,得到待压缩数据的多个数据块。
步骤S1-804,各个从运算单元的编码电路将得到的多个数据块进行压缩,得到各个待压缩数据中每一数据块对应的数据头和数据体。
步骤S1-805,各个从运算单元将得到的数据头与数据体发送至主处理电路。主处理电路根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。
可选地,主运算单元1-300的编码电路1-200使用标识位标识各个数据块对应的数据头和数据体的对应关系。之后,主运算单元1-300的编码电路将包含标识位的各个数据头组合得到压缩数据的头段,将包含标识位的各个数据体组合得到压缩数据的数据段,将压 缩数据的头段和压缩数据的数据段分别组合得到压缩数据。
可选地,主运算单元1-300的编码电路1-200首先根据各个待压缩数据之间的位置关系,以及各个待压缩数据中每一数据块与其他数据块之间的位置关系,得到各个数据头的摆放格式。之后,主运算单元1-300的编码电路1-200根据得到的数据头的摆放格式摆放各个数据头,得到压缩数据的头段;根据第一预设摆放格式摆放各个数据体,得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
本实施例中的数据压缩方法,可以并行对输入数据进行分组压缩,提高了数据压缩效率。
作为其中一个实施例,提出了另一种数据处理方法,该方法被上述运算装置1-20执行,具体包括:
步骤S1-901,主运算单元接收输入数据,并使用上述实施例中的数据压缩方法将该输入数据进行压缩,得到多个压缩数据。
具体地,主运算单元1-300的编码电路接收输入数据后,按照从运算单元1-400的数量将输入数据进行分组,得到多个待压缩数据。主运算单元1-300将得到的多个待压缩数据分发至多个从处理单元并行分块压缩得到多个数据头与数据体。从处理单元将得到的多个数据头与数据体发送至主处理电路,主处理电路根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。
步骤S1-902,主运算单元将得到的压缩数据发送至多个从运算单元。
可选地,主运算单元1-300通过分支运算单元1-500将得到的压缩数据发送至多个从运算单元1-400。可选地,主运算单元1-300通过与主运算单元1-300连接的k个从运算单元1-400将得到的压缩数据发送至多个从运算单元1-400。需要说明的是,在具体应用过程中,使用与主运算单元1-300连接的k个从运算单元1-400还是分支运算单元1-500进行主运算单元1-300以及多个从运算单元1-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S1-903,多个从运算单元中的编码电路解压接收的压缩数据,得到解压数据。
步骤S1-904,各个从运算单元的乘法运算单元使用该解压数据进行乘法运算,得到中间结果,并将该中间结果传送至主运算单元。
可选地,从运算单元1-400通过分支运算单元1-500将得到的中间结果发送至主运算单元1-300。可选地,各个从运算单元1-400通过与主运算单元1-300连接的k个从运算单元1-400将得到的中间结果发送至主运算单元1-300。需要说明的是,在具体应用过程中,使用与主运算单元1-300连接的k个从运算单元1-400还分支运算单元1-500进行主运算单元1-300以及多个从运算单元1-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S1-905,主运算单元的使用该中间结果进行累法和激活运算,得到运算结果。
可选地,若该运算结果为最终的运算结果,则运算装置1-20可以终止上述数据处理流 程。若该运算结果不是最终的运算结果,则运算装置1-20可以使用该运算结果进行下一阶段的运算。
上述实施例中的运算装置将输入数据进行压缩后再传送至从运算单元1-400可以降低运算单元之间数据传输的带宽要求。
在其中一个实施例中,还提出了一种神经网络运算方法。该神经网络运算方法可被上述实施例中的运算装置1-20执行,该运算装置1-20通过分支运算单元1-500转发主运算单元1-300与从运算单元1-400之间的数据,该方法包括:
步骤S1-1001,主运算单元获取广播数据和分发数据,并将分发数据分割为a个子数据。可选地,广播数据可以为神经元数据或者权值等等数据。可选地,分发数据可以为神经元数据或者权值等等数据。
步骤S1-1002,运算装置使用上述任一实施例中的数据压缩方法,将广播数据和分发子数据分别压缩,得到广播压缩数据和a个分发压缩数据。
具体地,运算装置1-20主运算单元1-300使用上述实施例中的数据压缩方法,将广播数据进行压缩,得到广播压缩数据。进一步地,主运算单元1-300的编码电路根据从运算单元1-400的数量将广播数据划分为多个组,得到多个待压缩数据。主运算单元1-300将多个待压缩数据分发至多个从运算单元1-400。多个从运算单元1-400中各个从运算单元1-400对接收的待压缩数据进行分块压缩,得到多个数据头和数据体。多个从运算单元1-400将得到的数据头和数据体发送至主处理单元。主处理单元根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到广播压缩数据。同理处理a个子数据,得到a个分发压缩数据。
步骤S1-1003,主运算单元将得到的a个分发压缩数据分发至a个从运算单元,将得到的广播压缩数据广播至该a个从运算单元。
具体地,主运算单元1-300通过分支运算单元1-500将得到的a个分发压缩数据分发至a个从运算单元1-400,主运算单元1-300通过分支运算单元1-500将得到的广播压缩数据广播至该a个从运算单元1-400。可选地,主运算单元1-300通过与主运算单元1-300连接的k个从运算单元1-400将得到的a个分发压缩数据分发至a个从运算单元1-400,主运算单元1-300通过与主运算单元1-300连接的k个从运算单元1-400将得到的广播压缩数据广播至该a个从运算单元1-400。
步骤S1-1004,各个从运算单元的编码电路解压该广播压缩数据和对应分发压缩数据得到广播解压数据和分发解压数据。
步骤S1-1005,各个从运算单元1-400使用对应的广播解压数据和分发解压数据进行运算,得到中间结果,并将得到的中间结果发送主处理单元。
步骤S1-1006,主运算单元1-300使用接收的中间结果进行运算,得到运算结果。
本实施例中的神经网路的运算方法数据压缩效率高,对运算装置的数据传输的带宽要求低。
现以神经网络运算中的全连接运算为例具体说明上述神经网络运算过程,该全连接运 算为执行的y=f(wx+b)的运算过程,其中,x为神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,该激活函数可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。此处将神经元矩阵作为广播数据,权值矩阵作为分发数据,具体运算过程包括:
步骤S1-1101,主运算单元将权值矩阵划w分为n权值子矩阵。
步骤S1-1102,主运算单元的压缩解压电路使用上述实施例中的数据压缩方法,将神经元矩阵x和n个权值子矩阵分别进行压缩,得到神经元压缩数据和a个子矩阵压缩数据。
步骤S1-1103,主运算单元将得到的a个子矩阵压缩数据分发至a个从运算单元,将得到的神经元压缩数据广播至该a个从运算单元。
步骤S1-1104,各个从运算单元的编码电路解压该神经元压缩数据和对应权值压缩数据得到神经元解压数据和权值解压数据。
步骤S1-1105,各个从运算单元将得到的中间结果发送给主运算单元。
步骤S1106,主运算单元根据接收的中间结果得到最终的运算结果。具体地,主运算单元1-300首先将接收的a个中间结果排序得到wx的运算结果,之后将该运算结果执行偏置b的运算,最后通过主运算单元1-300的激活电路执行激活操作得到最终的运算结果y。
在其中一个实施例中,提出了一种数据解压方法,该数据压缩方法可以被上述实施例中的编码电路执行,用于解压上述数据压缩方法得到的压缩数据,该方法包括:
步骤S1-1201,获取压缩数据,所述压缩数据包括头段和与所述头段数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。
具体地,编码电路获取压缩数据,其中,所述压缩数据包括头段和数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含压缩前对应的数据块的编码数据。
可选地,压缩数据的数据段中各个数据体的摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,压缩数据的头段中的各个数据头按照该压缩数据压缩前包含的多个数据块之间的相对位置对应摆放。
步骤S1-1202,将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。
具体地,编码电路的数据分割电路1-210将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。
可选地,若数据头和数据体中包含标识对应关系的标识位,则根据所述标识位的数值,确定各个待解压数据块中的数据头和数据体。
步骤S1-1203,使用预设的压缩解压算法解压各个待解压数据块,得到解压数据块。
具体地,编码电路的压缩解压电路1-220使用预设的压缩解压算法解压各个待解压数据块,得到解压数据块。可选地,压缩解压电路1-220可以使用哈夫曼编码、游程编码、LZ77以及它们的任意组合等等方式对各个数据块进行解压。需要说明的是,压缩数据进行解压的编码方法与得到该压缩数据使用的编码方法需一致。
步骤S1-1204,根据第二预设摆放格式摆放解压数据块,得到解压数据。
可选地,该第二预设摆放格式可以根据压缩数据压缩前的数据得到。进一步地,该第二预设摆放格式可以根据压缩数据压缩前包含的数据块之间的位置关系得到。
本实施例中的数据解压方法,首先将压缩数据进行分解,得到包含对应的数据头和数据体的待解压数据块,之后在使用传统的解压方法解压各个待解压数据块得到解压数据块,最后根据解压数据块得到解压数据。该方法将包含头段和数据段的压缩数据转化为传统解压方法可解压的数据,实施简单。该方法还分块解压压缩的数据,可以实现并行解压,提高解压效率。
在其中一个实施例中,提出了另一种数据解压方法,用于解压上述数据压缩方法得到的压缩数据,该方法包括:
步骤S1-1301,获取压缩数据,所述压缩数据包括头段和与所述头段数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。
具体地,编码电路1-200获取压缩数据,其中,所述压缩数据包括头段和数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含压缩前对应的数据块的编码数据。
可选地,压缩数据的数据段中各个数据体的摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,压缩数据的头段中的各个数据头按照该压缩数据压缩前包含的多个数据块之间的相对位置对应摆放。
步骤S1-1302,将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。
具体地,编码电路1-200的数据分割电路将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。
步骤S1-1303,根据编码电路的数量将得到的多个待解压数据块分组,得到多个待解压数据组。
步骤S1-1304,将得到的待解压数据组分发至多个编码电路,编码电路按照预设的压缩解压算法解压接收的待解压数据组中的待解压数据块,得到多个解压数据块。
步骤S1-1305,根据第二预设摆放格式摆放解压数据块,得到解压数据。
本实施例中的数据解压方法,首先将压缩数据进行分解,得到包含对应的数据头和数据体的待解压数据块,之后将待解压数据块按照编码电路的数量分组后,再使用传统的解压方法解压各个待解压数据块得到解压数据块,最后根据解压数据块得到解压数据。该方法将包含头段和数据段的压缩数据转化为传统解压方法可解压的数据,实施简单。该方法还分块解压压缩的数据,可以实现并行解压,提高解压效率。
下面以运算装置1-20如何执行上述数据解压方法的步骤为例,具体说明上述数据解压方法,如图11所示,该数据解压方法包括:
步骤S1-1401:主运算单元获取压缩数据,所述压缩数据包括头段和与所述头段数据 段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。
步骤S1-1402:主运算单元的编码电路将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。
步骤S1-1403:主运算单元的编码电路根据从运算单元的数量将得到的多个待解压数据块分组,得到多个待解压数据组。
步骤S1-1404:主运算单元将多个待解压数据组分发至多个从处理单元。
可选地,主运算单元1-300通过分支运算单元1-500将得到的多个待解压数据组发送至多个从运算单元1-400。可选地,主运算单元1-300通过与主运算单元1-300连接的k个从运算单元1-400将得到的多个待解压数据组发送至多个从运算单元1-400。需要说明的是,在具体应用过程中,使用与主运算单元1-300连接的k个从运算单元1-400还是分支运算单元1-500进行主运算单元1-300以及多个从运算单元1-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S1-1405:各个从处理单元编码电路按照预设的压缩解压算法解压接收的待解压数据组中的待解压数据块,得到多个解压数据块。
步骤S1-1406:各个从处理单元将得到的多个解压数据块发送至主处理电路。
可选地,从运算单元1-400通过分支运算单元1-500将得到的多个解压数据块发送至主运算单元1-300。可选地,各个从运算单元1-400通过与主运算单元1-300连接的k个从运算单元1-400将得到的多个解压数据块发送至主运算单元1-300。需要说明的是,在具体应用过程中,使用与主运算单元1-300连接的k个从运算单元1-400还分支运算单元1-500进行主运算单元1-300以及多个从运算单元1-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S1-1407:根据第二预设摆放格式摆放解压数据块,得到解压数据。可选地,该第二预设摆放格式可以根据压缩数据压缩前的数据得到。进一步地,该第二预设摆放格式可以根据压缩数据压缩前包含的数据块之间的位置关系得到。
上述实施例中的数据解压方法,使用多个从处理电路并行解压压缩数据,提高了数据解压效率。
2、数据压缩方法、数据存取方法、数据处理方法、数据存取电路、编码电路和运算装置
在其中一个实施例中,如图12所示,提出了一种数据存取电路2-100,该数据存取电路包括互相连接的读写控制电路2-110、读写电路2-120和存储器2-130。其中,该读写控制电路2-110用于生成数据读写参数,并根据数据读写参数生成读写控制指令。该读写控制指令用于控制读写电路2-120完成特定的读写操作。具体地,读写控制电路2-110生成的数据读写参数包括:读写起始地址、步长、读写操作次数以及单次读写块数。该存储器2-130用于存储待存取数据。该待存取数据可被划分为多个数据块,该多个数据块可以以一维紧密或二维紧密的形式存储于存储器2-130中。
可选地,在将待存取数据分块时,可以考虑该待存取数据的数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中数据的重要程度可以根据该数据的出现频率、数据大小等等特征来确定。可选地,在将待存取数据分块时,还可以参考预设值。可选地,存储器2-130中的数据可以为输入数据、中间数据等等。
在其中一个实施例中,如图13所示,提出了一种数据存取方法,该数据存取方法被上述实施例中的数据存取电路执行,该方法具体包括:
步骤S2-101:将待存取数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块。
其中,数据块按照预设格式摆放是指将各个数据块按照预设格式存取于存取介质的相应位置。该预设格式可以为一维紧密、二维紧密或者其他维度的紧密。具体地,读写控制电路2-110将待存取数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块。进一步地,读写控制电路2-110在将待存取数据划分为多个数据块,并按照预设格式摆放后,得到该待存取数据中各个数据块的存储参数。待存取数据中各个数据块的存储参数包括起始地址、块序列号、行号等等。该存储参数用于对待存取数据进行读写操作。其中,数据块的块序列号可以用于区分不同的数据块。可选地,可以使用数字对数据块进行编号。
例如:假设待存取数据被划分为多个数据块并按照预设格式摆放,摆放结果如图3所示。此时,该待存取数据被划分为9个数据块,可以使用0-8这9个数值按照从上到下,从左到右的顺序为各个数据块配置块序列号。使用0-2这3个数值按照从上到下的顺序配置各个数据块的行号。
步骤S2-102:获取读写参数,并根据该读写参数得到读写控制指令。其中,该读写参数包括:读写起始地址、步长读写操作以及单次读写块数。进一步地,步长为相邻两次读写操作的起始数据块的块序列号差值。读写操作次数为读写电路2-120执行读写操作的次数。单次读写块数为读写电路2-120每次读写的数据块的数量。可选地,该读写参数还可以包括读写操作次数,该读写操作次数可以根据预读写的数据块总数以及单次读写块数得到。其中,与读写的数据块总数可以根据实际需求设定。可选地,预读写的数据块总数为读写参数中单次读写块数的整数倍。
具体地,读写控制电路2-110获取读写参数,并根据该读写参数得到读写控制指令。例如待存取数据被划分数据块后,摆放格式如图3中所示,假设读写控制电路2-110预读取该待存取数据中的块序列号为4、5、7、8数据块。此时,获取的读写参数中,读写起始地址可以为块序列号为4的数据块的起始地址address A,步长为3,单次读写块数为2。由于,本示例中预读写的数据块总数大于单次读写块数,因此,该示例中可以设置读写操作次数为2。
步骤S2-103:根据读写控制指令,对待存取数据进行读写操作。
具体地,数据存取电路的读写电路2-120根据读写控制指令,对待存取数据进行读写操作。数据存取电路的读写电路2-120根据读写控制指令和待存储数据的存储参数,确定 每次读写操作的目标数据块和目标数据块的读写操作次序,按照读写操作次序读写操作对应的目标数据块。参照图3,读写电路2-120的读写电路2-120根据对待存取数据进行读写操作具体包括:读写电路2-120的读写电路2-120首先以待存取数据中块序列号为4的数据块的起始地址address A作为第一次读写操作的起始地址,以块序列号为4和5的数据块作为第一读写操作的目标数据块。之后,按照读写参数中设置的步长3得到第二次读写操作的起始地址:待存取数据中块序列号为7的数据块的起始地址address B,以块序列号为7和8的数据块作为第二读写操作的目标数据块。第一次读写块序列号为4和5的数据块;第二次读写块序列号为7和8的数据块。
上述实施例中的数据存取方法,通过读写参数,能够根据不同需求,获取待存取数据中的数据块,从而可以实现不必按照存储顺序访问存储的数据中的数据块,且上述实施例中的数据存取方法中通过引入步长和单次读写块数这些存取参数,实现了按照二维方式访问存储的数据,这为处理自然图像、特征图等具有二维相似性的数据提供了极大地便利。
预设值
上述实施例中的数据存取电路可以被设置任一具有数据存取需求的集群、处理器或者运算单元中。现以该数据存取电路被应用于运算装置中为例,说明该数据存取电路在数据运算中的应用。
如图14所示,在本申请的其中一个实施例中提出了一种运算装置2-10,包括主运算单元2-300和多个主运算单元2-400。多个主运算单元2-400分别与主运算单元2-300连接。具体地,主运算单元2-300可以用于对输入数据执行前序处理,以及与多个主运算单元2-400之间传输数据。具体地,多个主运算单元2-400用于使用从主运算单元2-300传输的数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主运算单元2-300。主运算单元2-300还用于对主运算单元2-400传输来的多个中间结果进行后续处理。进一步地,该主运算单元2-300还设有上述实施例中的数据存取电路2-100。该数据存取电路用于数据的存取。可选地,运算装置根据主运算单元2-300与主运算单元2-400功能的区别,在硬件层面上设置主运算单元2-300和主运算单元2-400,也可以在设置多个相同的运算单元,在实际处理数据过程中,从该多个相同的运算单元中指定主运算单元2-300和主运算单元2-400。
在其中一个实施例中,如图15所示,提出了一种数据处理方法,该数据处理方法可以被运算装置2-10执行,进行数据处理。该方法具体包括:
步骤S2-201:运算装置的主运算单元使用上述任一实施例中的数据存取方法获取待运算数据。
具体地,运算装置2-10的运主算单元使用上述实施例中的方法获取待运算数据。更具体地,数据存取电路首先将待输入数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块。之后,数据存取电路获取读写参数,并根据该读写参数得到读写控制指令。最后,数据存取电路根据读写控制指令,对待存取数据进行读写操作。读写操作得到的数据即为待运算数据。可选地,该待运算数据包括:神经元矩阵和/或权值矩阵。
步骤S2-202:主运算单元将获取的待运算数据广播或分发至从运算单元,以使所述从运算单元使用获取的待运算数据进行运算,得到中间结果,并将该中间结果发送至主运算单元。可选地,该中间结果可以为从运算单元执行完某次乘法运算后的输出结果。
步骤S2-203:主运算单元接收该中间结果后,进行后续处理,得到运算结果。
可选地,主运算单元2-300接收该中间结果后,进行后续处理可以包括:使用该中间结果进行累加和激活运算得到运算结果。可选地,若该运算结果为最终的运算结果,则运算装置2-10可以终止上述数据处理流程。若该运算结果不是最终的运算结果,则运算装置2-10可以使用该运算结果进行下一阶段的运算。
在其中一个实施例中,如图16所示,运算装置2-10的多个主运算单元2-400呈阵列分布;每个主运算单元2-400与相邻的其他主运算单元2-400连接,主运算单元2-300连接多个主运算单元2-400中的k个主运算单元2-400,该k个主运算单元2-400为:第1行的n个主运算单元2-400、第m行的n个主运算单元2-400以及第1列的m个主运算单元2-400。需要说明的是,如图6所示,的K个主运算单元2-400仅包括第1行的n个主运算单元2-400、第m行的n个主运算单元2-400以及第1列的m个主运算单元2-400,即该k个主运算单元2-400为多个主运算单元2-400中直接与主运算单元2-300连接的主运算单元2-400。具体地,该K个主运算单元2-400,用于在主运算单元2-300以及多个主运算单元2-400之间转发数据。
进一步地,该主运算单元2-300可以包括激活运算电路、加法运算电路以及上述实施例中的数据存取电路。其中,激活运算电路,用于执行主运算单元2-300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;数据存取电路主要用于是使用上述实施例中的数据存取方法向主运算单元2-300搬运待运算数据。具体地,主运算单元2-400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该主运算单元2-400还可以包括加法运算电路,用于执行加法运算或累加运算。可选地,该主运算单元2-400还包括转发电路,用于将乘积结果转发至主运算单元2-300。
在本实施例中,步骤S2-202(主从运算单元传送数据)包括:
步骤S2-2021a:主运算单元通过K个从运算单元将获取的待运算数据广播或分发至从运算单元。
步骤S2-2022a:从运算单元根据相应的运算指令使用待运算数据进行乘法或加法运算,得到中间结果。
步骤S2-2023a:从运算单元通过K个从运算单元将得到的中间结果发送至从运算单元。
在另外一个实施例中,如图17所示,运算装置2-10还可以包括分支运算单元2-500,主运算单元2-300与一个或多个分支运算单元2-500连接,分支运算单元2-500与一个或多个主运算单元2-400连接。
具体地,该分支运算单元2-500,用于转发主运算单元2-300与主运算单元2-400之间的数据。该主运算单元2-300可以包括激活运算电路、加法运算电路以及上述实施例中的数据存取电路。其中,激活运算电路,用于执行主运算单元2-300内数据的激活运算;加 法运算电路,用于执行加法运算或累加运算;数据存取电路主要用于是使用上述实施例中的数据存取方法向主运算单元2-300搬运待运算数据。具体地,主运算单元2-400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该主运算单元2-400还可以包括加法运算电路,用于执行加法运算或累加运算。可选地,该主运算单元2-400还包括转发电路,用于将乘积结果转发至主运算单元2-300。
在本实施例中,步骤S2-202(主从运算单元传送数据)包括:
步骤S2-2021b:主运算单元通过分支运算单元将获取的待运算数据广播或分发至从运算单元。
步骤S2-2022b:从运算单元根据相应的运算指令使用待运算数据进行乘法或加法运算,得到中间结果。
步骤S2-2023b:从运算单元通过分支运算单元将得到的中间结果发送至从运算单元。
在其中一个实施例中,如图18所示,还提出了一种编码电路2-200。该编码电路包括数据分割电路2-210以及压缩解压电路2-220。该数据分割电路2-210与压缩解压电路2-220连接。其中,该数据分割电路2-210可以按照预设规则将待压缩数据进行分割。可选地,该数据分割电路2-210可以根据数据的特征将数据划分为多个数据块。该压缩解压电路2-220用于使用预设的编码方式压缩或解压数据。可选地,该编码电路可以被设置在集群中的各个设备上,用于将集群中各个设备之间传输的数据进行压缩。这样可以降低集群中各个设备传输数据的带宽要求。可选地,该编码电路也可以被设置于包含多个处理器的计算机设备的处理器上。该编码电路也还可以被设置于运算装置的运算单元上或者其他有数据传输需求的各个装置、部件上。
在其中一个实施例中,如图18所述,提出了一种数据压缩方法,该数据压缩方法被上述实施例中的编码电路2-200上,该方法包括:
步骤S2-301,根据待压缩数据的特征将待压缩数据划分为多个数据块。
具体地,编码电路2-200的数据分割电路2-210根据待压缩数据的特征将待压缩数据划分为多个数据块。可选地,该待压缩数据的特征可以包括数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中数据的重要程度可以根据该数据出现的频率、数据大小等等特征来确定。可选地,在将待压缩数据划分为多个数据块时还可以考虑预设值。可选地,在将待压缩数据划分为多个数据块之前,筛除待压缩数据中的“0”值。
步骤S2-302,将待压缩数据的各个数据块分别进行压缩,得到与每一数据块对应的数据头和数据体。其中,每一数据头包括对应的数据体的起始地址、数据长度等信息。可选地,该数据头还可以包括对应关系标识。可选地,数据体包括压缩前对应的数据块的编码数据。可选地,编码电路的压缩解压电路2-220可以使用Huffman(哈夫曼)编码、游程编码、LZ77以及它们的任意组合等等方式对各个数据块进行压缩。可选地,在压缩解压电路2-220使用哈夫曼编码、游程编码、LZ77以及它们的任意组合等等方式对各个数据块进行压缩之前,根据选择的压缩算法对待处理数据进行预处理。例如,使用哈夫曼编码对各个数据块进行压缩时,需待压缩数据进行排序处理,得到哈夫曼树,之后基于该哈夫曼树 压缩各个数据块。
步骤S2-303,根据得到的各个数据头得到压缩数据的头段,根据得到的各个数据体得到压缩数据的数据段,根据该压缩数据的头段和该压缩数据的数据段得到压缩数据。
具体地,编码电路2-200的压缩解压电路2-220根据得到的各个数据头得到压缩数据的头段,根据得到的各个数据体得到压缩数据的数据段,根据该压缩数据的头段和该压缩数据的数据段得到压缩数据。
上述实施例中的数据压缩方法,首先将待压缩数据进行分块,之后分块压缩各个数据块,得到与各个数据块一一对应的数据头与数据体,之后根据得到的与各个数据块对应的数据头和数据体得到压缩数据的头段和数据段,进而得到压缩数据。该方法通过将待压缩数据分块压缩,实现并行压缩各个数据块提高压缩效率的目的
在其中一个实施例中,步骤S2-303包括:
步骤S2-3031a:使用标识位标识各个数据块对应的数据头和数据体的对应关系。具体地,编码电路2-200的压缩解压电路2-220使用标识位标识各个数据块对应的数据头和数据体的对应关系。
步骤S2-3032a:将各个包含标识位的数据头组合得到压缩数据的头段,将各个包含标识位的数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
在另外一个实施例中,步骤S2-303包括:
步骤S2-3031b:根据待压缩数据中各个数据块之间的位置关系得到对应的数据头的摆放格式。
具体地,编码电路2-200的压缩解压电路2-220根据待压缩数据中各个数据块之间的位置关系得到对应的数据头的摆放格式。可选地,该数据头的摆放格式可以为,按照各个数据头对应的数据块与其他数据块之间的位置关系,摆放每一数据块对应的数据头。
步骤S2-3032b:根据数据头的摆放格式摆放各个数据块对应的数据头得到压缩数据的头段,根据第一预设摆放格式摆放各个数据块对应的数据体得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
具体地,编码电路2-200的压缩解压电路2-220根据数据头的摆放格式摆放各个数据块对应的数据头得到压缩数据的头段,根据第一预设摆放格式摆放各个数据块对应的数据体得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
可选地,压缩解压电路2-220将得到的压缩数据的头段与压缩数据的数据体拼接得到压缩数据。可选地,第一预设摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,可以通过设置标识位的标识压缩数据的数据段中各个数据体与压缩数据的头段中各个数据头的对应关系。
可选地,该待压缩数据可以为集群中各个设备之间需传输的数据,可以为多个处理器之间需传输的数据,还可以为运算装置中各个运算单元之间需传输的数据。例如运算装置需获取的输入数据。下面以运算装置中各个运算单元中需传输的数据为例,具体说明上述 实施例中的数据压缩方法的应用。
在其中一个实施例中,如图19所示,提出了另一种运算装置2-20,该运算装置2-20包括相互连接主运算单元2-300和多个主运算单元2-400。该主运算单元2-300和多个主运算单元2-400上设置有上述实施例中的编码电路。具体地,主运算单元2-300用于对输入数据执行前序处理,以及与多个主运算单元2-400之间传输数据。具体地,多个主运算单元2-400用于使用从主运算单元2-300传输的数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主运算单元2-300。主运算单元2-300还用于对主运算单元2-400传输来的多个中间结果进行后续处理。
作为其中一个实施例,如图20所示,提出了一种数据处理方法,该方法被上述运算装置2-20执行,具体包括:
步骤S2-401,主运算单元接收输入数据,并使用上述实施例中的数据压缩方法分块压缩该输入数据得到压缩数据。
具体地,主运算单元2-300的编码电路2-200根据输入数据的特征。将输入数据划分为多个数据块。之后编码电路2-200将待压缩数据的各个数据块进行压缩,得到与每一数据块对应的数据头和数据体。最后,编码电路2-200根据得到的各个数据头得到压缩数据的头段,根据得到的各个数据体得到压缩数据的数据段,根据该压缩数据的头段和该压缩数据的数据段得到压缩数据。
步骤S2-402,主运算单元将得到的压缩数据传送至从运算单元。
步骤S2-403,从运算单元接收该压缩数据后,解压该压缩数据得到解压数据。
步骤S2-404,从运算单元使用该解压数据进行乘法运算,得到中间结果,并将该中间结果传送至主运算单元。
步骤S2-405,主运算单元的使用该中间结果进行累法和激活运算,得到运算结果。
可选地,若该运算结果为最终的运算结果,则运算装置2-20可以终止上述数据处理流程。若该运算结果不是最终的运算结果,则运算装置2-20可以使用该运算结果进行下一阶段的运算。
上述实施例中的运算装置将输入数据进行压缩后再传送至主运算单元2-400可以降低运算单元之间数据传输的带宽要求。
在其中一个实施例中,如图21所示,运算装置2-20的多个主运算单元2-400呈阵列分布;每个主运算单元2-400与相邻的其他主运算单元2-400连接,主运算单元2-300连接多个主运算单元2-400中的k个主运算单元2-400,该k个主运算单元2-400为:第1行的n个主运算单元2-400、第m行的n个主运算单元2-400以及第1列的m个主运算单元2-400。需要说明的是,如图21所示,的K个主运算单元2-400仅包括第1行的n个主运算单元2-400、第m行的n个主运算单元2-400以及第1列的m个主运算单元2-400,即该k个主运算单元2-400为多个主运算单元2-400中直接与主运算单元2-300连接的主运算单元2-400。具体地,该K个主运算单元2-400,用于在主运算单元2-300以及多个主运算单元2-400之间转发数据。
进一步地,该主运算单元2-300可以包括激活运算电路、加法运算电路以及上述实施例中的编码电路。其中,激活运算电路,用于执行主运算单元2-300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;编码电路主要用于是使用上述实施例中的数据压缩方法对数据进行压缩。具体地,主运算单元2-400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该主运算单元2-400还可以包括加法运算电路,用于执行加法运算或累加运算。可选地,该主运算单元2-400还包括转发电路,用于将乘积结果转发至主运算单元2-300。
在本实施例中,步骤S2-402包括:主运算单元通过K个从运算单元0将得到的压缩数据广播或分发至从运算单元。
在本实施例中,步骤S2-404包括:从运算单元通过K个从运算单元将得到的中间结果传送至主运算单元。
在另外一个实施例中,如图22所示,运算装置2-20还可以包括分支运算单元2-500,主运算单元2-300与一个或多个分支运算单元2-500连接,分支运算单元2-500与一个或多个主运算单元2-400连接。
具体地,该分支运算单元2-500,用于转发主运算单元2-300与主运算单元2-400之间的数据。该主运算单元2-300可以包括激活运算电路、加法运算电路以及上述实施例中的编码电路。其中,激活运算电路,用于执行主运算单元2-300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;编码电路主要用于是使用上述实施例中的数据压缩方法压缩数据。具体地,主运算单元2-400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该主运算单元2-400还可以包括加法运算电路,用于执行加法运算或累加运算。
在本实施例中,步骤S2-402包括:主运算单元通过分支运算单元将得到的压缩数据广播或分发至从运算单元。
在本实施例中,步骤S2-404包括:从运算单元通过分支运算单元将得到的中间结果传送至主运算单元。
在其中一个实施例中,还提出了一种神经网络运算方法。该神经网络运算方法可被上述实施例中的运算装置2-20执行,该运算装置2-20通过分支运算单元2-500转发主运算单元2-300与主运算单元2-400之间的数据,该方法包括:
步骤S2-501,主运算单元获取广播数据和分发数据,并将分发数据分割为a个子数据。可选地,广播数据可以为神经元数据或者权值等等数据,其中a为正整数。可选地,分发数据可以为神经元数据或者权值等等数据。
步骤S2-502,主运算单元使用上述实施例中的数据压缩方法,将广播数据和分发子数据分别分块进行压缩,得到广播压缩数据和a个分发压缩数据。
具体地,主运算单元的编码电路使用上述实施例中的数据压缩方法,将广播数据和分发子数据分别分块进行压缩,得到广播压缩数据和a个分发压缩数据。具体地,编码电路首先根据广播数据的特征将该广播数据划分为多个数据块,之后编码电路将该广播数据的 多个数据块中的各个数据块进行压缩,得到与广播数据的每一数据块对应的数据头和数据体。最后编码电路根据得到的各个数据头得到广播压缩数据的头段,根据得到的各个数据体得到广播压缩数据的数据段,根据该广播压缩数据的头段和该广播压缩数据的数据段得到广播压缩数据。具体地,编码电路使用上述实施例中的数据压缩方法分别各个压缩分发子数据,得到a个分发压缩数据。进一步地,编码电路根据分发数据的特征,将a个子数据中某一分发子数据划分为多个数据块。之后编码电路将该某一分发子数据的多个数据块中的各个数据块进行压缩,得到与该某一分发子数据的每一数据块对应的分发数据头和分发数据体。最后编码电路根据得到的各个分发数据头得到分发压缩数据的头段,根据得到的各个分发数据体得到分发压缩数据的数据段,根据该分发压缩数据的头段和该分发压缩数据的数据段得到分发压缩数据。上述数据压缩方法,能够通过压缩该a个子数据中的各个子数据,得到a个分发压缩数据。
步骤S2-503,主运算单元将得到的a个分发压缩数据分发至a个从运算单元,将得到的广播压缩数据广播至该a个从运算单元。
可选地,主运算单元2-300通过分支运算单元2-500将得到的a个分发压缩数据分发至a个主运算单元2-400,通过分支运算单元2-500将得到的广播压缩数据广播至该a个主运算单元2-400。可选地,若分支运算单元2-500连接的主运算单元2-400的数量大于等于a,则主运算单元2-300可以通过一个或多个分支运算单元2-500将得到的a个分发压缩数据分发至a个主运算单元2-400,通过一个或多个分支运算单元2-500将得到的广播压缩数据广播至该a个主运算单元2-400。可选地,若分支运算单元2-500连接的主运算单元2-400的数量小于a,则主运算单元2-300可以通过多个分支运算单元2-500将得到的a个分发压缩数据分发至a个主运算单元2-400,通过多个分支运算单元2-500将得到的广播压缩数据广播至该a个主运算单元2-400。
可选地,主运算单元2-300通过与主运算单元2-300连接的k个主运算单元2-400将得到的a个分发压缩数据分发至a个主运算单元2-400,通过与主运算单元2-300连接的k个主运算单元2-400将得到的广播压缩数据广播至该a个主运算单元2-400。
需要说明的是,在具体应用过程中,使用与主运算单元2-300连接的k个主运算单元2-400还分支运算单元2-500进行主运算单元2-300以及多个主运算单元2-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S2-504,各个从运算单元解压该广播压缩数据和对应分发压缩数据得到广播解压数据和分发解压数据。具体地,从运算单元的编码电路解压该广播压缩数据和对应分发压缩数据得到广播解压数据和分发解压数据。
步骤S2-505,各个从运算单元使用对应的广播解压数据和分发解压数据进行运算,得到中间结果。可选地,可以使用从运算单元的身份信息标识各个从运算单元得到的中间结果。
步骤S2-506,a个从运算单元分别将得到的中间结果发送给主运算单元。
可选地,a个主运算单元2-400分别将得到的中间结果通过分支电路发送给主运算单 元2-300。可选地,a个主运算单元2-400分别将得到的中间结果通过与主运算单元2-300连接的k个主运算单元2-400发送给主运算单元2-300。
需要说明的是,在具体应用过程中,使用与主运算单元2-300连接的k个主运算单元2-400还分支运算单元2-500进行主运算单元2-300以及多个主运算单元2-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S2-507,主运算单元使用该a个从运算单元的中间结果进行运算,得到运算结果。
本实施例提出的神经网络运算方法,首先将广播数据和分发数据压缩后,再进行广播或分发,可以有效的降低运算装置在进行神经网络运算时的带宽要求,提高了各个运算单元之间的数据传输效率。
现以神经网络运算中的全连接运算为例具体说明上述神经网络运算过程,该全连接运算为执行的y=f(wx+b)的运算过程,其中,x为神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,该激活函数可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。此处将神经元矩阵作为广播数据,权值矩阵作为分发数据,具体运算过程包括:
步骤S2-601,主运算单元将权值矩阵划w分为a权值子矩阵。
步骤S602,主运算单元使用上述实施例中的数据压缩方法,将神经元矩阵x进行压缩,得到神经元压缩数据,主运算单元使用上述实施例中的数据压缩方法,将a权值子矩阵分别进行压缩,得到a个权值子矩阵压缩数据。
步骤S2-603,主运算单元将得到的a个权值子矩阵压缩数据分发至a个从运算单元,将得到的神经元压缩数据广播至该a个从运算单元。
步骤S2-604,各个从运算单元的编码电路解压该神经元压缩数据和对应权值压缩数据得到神经元解压数据和权值解压数据。
步骤S2-605,各个从运算单元分别执行权值解压数据与神经元解压数据的乘法运算和累加运算,得到a个中间结果,各个从运算单元分别将得到的中间结果发送至主运算单元。
步骤S2-606,主运算单元根据该a个中间结果得到最终的运算结果。具体地,主运算单元2-300首先将该个中间结果排序得到wx的运算结果,之后将该运算结果执行偏置b的运算,最后通过主运算单元2-300的激活电路执行激活操作得到最终的运算结果y。
本实施例中运算装置在进行全连接运算时,首先将分发的权值子矩阵和广播的神经元矩阵进行压缩后,再分发或广播数据,可以提高主运算单元2-300与主运算单元2-400之间的数据传输效率,降低神经网络运算过程中主运算单元2-300与主运算单元2-400之间数据传输的带宽要求。
在其中一个实施例中,如图23所示,提出了另一种数据压缩方法,该数据压缩方法可以被上述实施例中的编码电路2-200执行,该方法包括:
步骤S2-701,根据编码电路的数量将待运算数据划分为多个组,得到多个待压缩数据。
具体地,编码电路的数据分割电路2-210根据编码电路的数量将待运算数据划分为多个组,得到多个待压缩数据。可选地,该编码电路可以设置在集群中的设备上,该编码电路也可以设置计算机设备的处理器上。该编码电路还可以设置在运算装置的运算单元上。 可选地,将待运算数据划分的组的数量为编码电路的数量的整数倍。
步骤S2-702,根据待压缩数据的特征分别将多个待压缩数据中的各个待压缩数据划分为多个数据块。
具体地,编码电路的数据分割电路2-210根据待压缩数据的特征分别将多个待压缩数据中的各个待压缩数据划分为多个数据块。可选地,该待压缩数据的特征可以包括数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中数据的重要程度可以根据该数据出现的频率、数据大小等等特征来确定。可选地,在将待压缩数据划分为多个数据块时还可以考虑预设值。可选地,在将待压缩数据划分为多个数据块之前,筛除待压缩数据中的“0”值。
步骤S2-703,将各个待压缩数据中的各个数据块分别进行压缩,得到各个待压缩数据中每一数据块对应的数据头和数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含压缩前对应的数据块的编码数据。可选地,可选地,编码电路的压缩解压电路2-220可以使用哈夫曼编码、游程编码、LZ77以及它们的任意组合等等方式对各个数据块进行压缩。可选地,在压缩解压电路2-220使用哈夫曼编码、游程编码、LZ77以及它们的任意组合等等方式对各个数据块进行压缩之前,根据选择的压缩算法对待处理数据进行预处理。例如,使用哈夫曼编码对各个数据块进行压缩时,需待压缩数据进行排序处理,得到哈夫曼树,之后基于该哈夫曼树压缩各个数据块。
步骤S2-704,根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。
具体地,编码电路2-200的压缩解压电路2-220根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。
上述实施例中的数据压缩方法,首先根据编码电路的数量将待压缩数据进行分组,然后根据数据的特征将待压缩数据分块,之后分块压缩各个数据块,得到与各个数据块一一对应的数据头与数据体,之后根据得到的与各个数据块对应的数据头和数据体得到压缩数据的头段和数据段,进而得到压缩数据。该方法通过将待压缩数据分组并分块压缩,实现并行压缩各个数据块提高压缩效率的目的。
在其中一个实施例中,步骤S2-704包括:
步骤S2-7041a:使用标识位标识各个数据块对应的数据头和数据体的对应关系。具体地,编码电路2-200的压缩解压电路2-220使用标识位标识各个数据块对应的数据头和数据体的对应关系。
步骤S2-7042a:将包含标识位的各个数据头组合得到压缩数据的头段,将包含标识位的各个数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段分别组合得到压缩数据。
具体地,编码电路2-200的压缩解压电路2-220将包含标识位的各个数据头组合得到压缩数据的头段,将包含标识位的各个数据体组合得到压缩数据的数据段,将压缩数据的 头段和压缩数据的数据段分别组合得到压缩数据。
在另外一个实施例中,步骤S2-704包括:
步骤S2-7041b:根据各个待压缩数据之间的位置关系,以及各个待压缩数据中每一数据块与其他数据块之间的位置关系,得到各个数据头的摆放格式。
具体地,编码电路2-200的压缩解压电路2-220根据各个待压缩数据之间的位置关系,以及各个待压缩数据中每一数据块与其他数据块之间的位置关系,得到各个数据头的摆放格式。可选地,各个数据头的摆放格式可以为,与对应的数据块在待运算数据中的位置一致。该位置一致是指对应的数据块所处的待运算数据中各个数据块之间的相对位置一致,以及对应的数据块所处的待运算数据与其他待运算数据的相对位置也一致。
步骤S2-7042b:根据得到的数据头的摆放格式摆放各个数据头,得到压缩数据的头段;根据第一预设摆放格式摆放各个数据体,得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
具体地,编码电路2-200的压缩解压电路2-220根据得到的数据头的摆放格式摆放各个数据头,得到压缩数据的头段;根据第一预设摆放格式摆放各个数据体,得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
可选地,压缩解压电路2-220将得到的各个压缩数据的头段与对应的各个压缩数据的数据体拼接得到各个压缩数据。可选地,各个压缩数据的数据段中数据体的第一预设摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,可以通过设置标识位的标识压缩数据的数据段中各个数据体与压缩数据的头段中各个数据头的对应关系。
可选地,该待压缩数据可以为集群中各个设备之间需传输的数据,可以为多个处理器之间需传输的数据,还可以为运算装置中各个运算单元之间需传输的数据。例如运算装置需获取的输入数据。下面以运算装置中各个运算单元中需传输的数据为例,具体说明上述实施例中的数据压缩方法的具体压缩过程和应用。
作为其中一个实施例,如图24所示,提出了一种数据压缩方法,该方法被上述运算装置2-20执行,具体包括:
步骤S2-801,主运算单元接收输入数据,并使用上述实施例中的数据压缩方法将该输入数据进行压缩,得到多个压缩数据。
具体地,主运算单元2-300的编码电路接收输入数据后,按照主运算单元2-400的数量将输入数据进行分组。应当清楚的是,该主运算单元2-400的数量为执行数据压缩操作的主运算单元2-400的数量。
步骤S2-802,主运算单元将得到的多个待压缩数据分发至多个从运算单元。
可选地,主运算单元2-300可以在得到的多个压缩数据中增加主运算单元2-400身份标识,并根据该身份标识分发待压缩数据。
步骤S2-803,各个从运算单元的编码电路根据接收的待压缩数据的特征将待压缩数据分块,得到待压缩数据的多个数据块。
步骤S2-804,各个从运算单元的编码电路将得到的多个数据块进行压缩,得到各个待压缩数据中每一数据块对应的数据头和数据体。
步骤S2-805,各个从运算单元将得到的数据头与数据体发送至主处理电路。主处理电路根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。
可选地,主运算单元2-300的编码电路2-200使用标识位标识各个数据块对应的数据头和数据体的对应关系。之后,主运算单元2-300的编码电路将包含标识位的各个数据头组合得到压缩数据的头段,将包含标识位的各个数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段分别组合得到压缩数据。
可选地,主运算单元2-300的编码电路2-200首先根据各个待压缩数据之间的位置关系,以及各个待压缩数据中每一数据块与其他数据块之间的位置关系,得到各个数据头的摆放格式。之后,主运算单元2-300的编码电路2-200根据得到的数据头的摆放格式摆放各个数据头,得到压缩数据的头段;根据第一预设摆放格式摆放各个数据体,得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。
本实施例中的数据压缩方法,可以并行对输入数据进行分组压缩,提高了数据压缩效率。
作为其中一个实施例,如图25所示,提出了另一种数据处理方法,该方法被上述运算装置2-20执行,具体包括:
步骤S2-901,主运算单元接收输入数据,并使用上述实施例中的数据压缩方法将该输入数据进行压缩,得到多个压缩数据。
具体地,主运算单元2-300的编码电路接收输入数据后,按照主运算单元2-400的数量将输入数据进行分组,得到多个待压缩数据。主运算单元2-300将得到的多个待压缩数据分发至多个从处理单元并行分块压缩得到多个数据头与数据体。从处理单元将得到的多个数据头与数据体发送至主处理电路,主处理电路根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。
步骤S2-902,主运算单元将得到的压缩数据发送至多个从运算单元。
可选地,主运算单元2-300通过分支运算单元2-500将得到的压缩数据发送至多个主运算单元2-400。可选地,主运算单元2-300通过与主运算单元2-300连接的k个主运算单元2-400将得到的压缩数据发送至多个主运算单元2-400。需要说明的是,在具体应用过程中,使用与主运算单元2-300连接的k个主运算单元2-400还是分支运算单元2-500进行主运算单元2-300以及多个主运算单元2-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S2-903,多个从运算单元中的编码电路解压接收的压缩数据,得到解压数据。
步骤S2-904,各个从运算单元的乘法运算单元使用该解压数据进行乘法运算,得到中间结果,并将该中间结果传送至主运算单元。
可选地,主运算单元2-400通过分支运算单元2-500将得到的中间结果发送至主运算单元2-300。可选地,各个主运算单元2-400通过与主运算单元2-300连接的k个主运算单元2-400将得到的中间结果发送至主运算单元2-300。需要说明的是,在具体应用过程中,使用与主运算单元2-300连接的k个主运算单元2-400还分支运算单元2-500进行主运算单元2-300以及多个主运算单元2-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S2-905,主运算单元的使用该中间结果进行累法和激活运算,得到运算结果。
可选地,若该运算结果为最终的运算结果,则运算装置2-20可以终止上述数据处理流程。若该运算结果不是最终的运算结果,则运算装置2-20可以使用该运算结果进行下一阶段的运算。
上述实施例中的运算装置将输入数据进行压缩后再传送至主运算单元2-400可以降低运算单元之间数据传输的带宽要求。
在其中一个实施例中,还提出了一种神经网络运算方法。该神经网络运算方法可被上述实施例中的运算装置2-20执行,该运算装置2-20通过分支运算单元2-500转发主运算单元2-300与主运算单元2-400之间的数据,该方法包括:
步骤S2-1001,主运算单元获取广播数据和分发数据,并将分发数据分割为a个子数据。可选地,广播数据可以为神经元数据或者权值等等数据。可选地,分发数据可以为神经元数据或者权值等等数据。
步骤S2-1002,运算装置使用上述任一实施例中的数据压缩方法,将广播数据和分发子数据分别压缩,得到广播压缩数据和a个分发压缩数据。
具体地,运算装置2-20主运算单元2-300使用上述实施例中的数据压缩方法,将广播数据进行压缩,得到广播压缩数据。进一步地,主运算单元2-300的编码电路根据主运算单元2-400的数量将广播数据划分为多个组,得到多个待压缩数据。主运算单元2-300将多个待压缩数据分发至多个主运算单元2-400。多个主运算单元2-400中各个主运算单元2-400对接收的待压缩数据进行分块压缩,得到多个数据头和数据体。多个主运算单元2-400将得到的数据头和数据体发送至主处理单元。主处理单元根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到广播压缩数据。同理处理a个子数据,得到a个分发压缩数据。
步骤S2-1003,主运算单元将得到的a个分发压缩数据分发至a个从运算单元,将得到的广播压缩数据广播至该a个从运算单元。
具体地,主运算单元2-300通过分支运算单元2-500将得到的a个分发压缩数据分发至a个主运算单元2-400,主运算单元2-300通过分支运算单元2-500将得到的广播压缩数据广播至该a个主运算单元2-400。可选地,主运算单元2-300通过与主运算单元2-300连接的k个主运算单元2-400将得到的a个分发压缩数据分发至a个主运算单元2-400,主运算单元2-300通过与主运算单元2-300连接的k个主运算单元2-400将得到的广播压缩数据广播至该a个主运算单元2-400。
步骤S2-1004,各个从运算单元的编码电路解压该广播压缩数据和对应分发压缩数据得到广播解压数据和分发解压数据。
步骤S2-1005,各个主运算单元2-400使用对应的广播解压数据和分发解压数据进行运算,得到中间结果,并将得到的中间结果发送主处理单元。
步骤S2-1006,主运算单元2-300使用接收的中间结果进行运算,得到运算结果。
本实施例中的神经网路的运算方法数据压缩效率高,对运算装置的数据传输的带宽要求低。
现以神经网络运算中的全连接运算为例具体说明上述神经网络运算过程,该全连接运算为执行的y=f(wx+b)的运算过程,其中,x为神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,该激活函数可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。此处将神经元矩阵作为广播数据,权值矩阵作为分发数据,具体运算过程包括:
步骤S2-1101,主运算单元将权值矩阵划w分为n权值子矩阵。
步骤S2-1102,主运算单元的压缩解压电路使用上述实施例中的数据压缩方法,将神经元矩阵x和n个权值子矩阵分别进行压缩,得到神经元压缩数据和a个子矩阵压缩数据。
步骤S2-1103,主运算单元将得到的a个子矩阵压缩数据分发至a个从运算单元,将得到的神经元压缩数据广播至该a个从运算单元。
步骤S2-1104,各个从运算单元的编码电路解压该神经元压缩数据和对应权值压缩数据得到神经元解压数据和权值解压数据。
步骤S2-1105,各个从运算单元将得到的中间结果发送给主运算单元。
步骤S2-1106,主运算单元根据接收的中间结果得到最终的运算结果。具体地,主运算单元2-300首先将接收的a个中间结果排序得到wx的运算结果,之后将该运算结果执行偏置b的运算,最后通过主运算单元2-300的激活电路执行激活操作得到最终的运算结果y。
在其中一个实施例中,如图26所示,提出了一种数据解压方法,该数据压缩方法可以被上述实施例中的编码电路执行,用于解压上述数据压缩方法得到的压缩数据,该方法包括:
步骤S2-1201,获取压缩数据,所述压缩数据包括头段和与所述头段数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。
具体地,编码电路获取压缩数据,其中,所述压缩数据包括头段和数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含压缩前对应的数据块的编码数据。
可选地,压缩数据的数据段中各个数据体的摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,压缩数据的头段中的各个数据头按照该压缩数据压缩前包含的多个数据块之间的相对位置对应摆放。
步骤S2-1202,将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。
具体地,编码电路的数据分割电路2-210将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。
可选地,若数据头和数据体中包含标识对应关系的标识位,则根据所述标识位的数值,确定各个待解压数据块中的数据头和数据体。
步骤S2-1203,使用预设的压缩解压算法解压各个待解压数据块,得到解压数据块。
具体地,编码电路的压缩解压电路2-220使用预设的压缩解压算法解压各个待解压数据块,得到解压数据块。可选地,压缩解压电路2-220可以使用哈夫曼编码、游程编码、LZ77以及它们的任意组合等等方式对各个数据块进行解压。需要说明的是,压缩数据进行解压的编码方法与得到该压缩数据使用的编码方法需一致。
步骤S2-1204,根据第二预设摆放格式摆放解压数据块,得到解压数据。
可选地,该第二预设摆放格式可以根据压缩数据压缩前的数据得到。进一步地,该第二预设摆放格式可以根据压缩数据压缩前包含的数据块之间的位置关系得到。
本实施例中的数据解压方法,首先将压缩数据进行分解,得到包含对应的数据头和数据体的待解压数据块,之后在使用传统的解压方法解压各个待解压数据块得到解压数据块,最后根据解压数据块得到解压数据。该方法将包含头段和数据段的压缩数据转化为传统解压方法可解压的数据,实施简单。该方法还分块解压压缩的数据,可以实现并行解压,提高解压效率。
在其中一个实施例中,如图27所示,提出了另一种数据解压方法,用于解压上述数据压缩方法得到的压缩数据,该方法包括:
步骤S2-1301,获取压缩数据,所述压缩数据包括头段和与所述头段数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。
具体地,编码电路2-200获取压缩数据,其中,所述压缩数据包括头段和数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含压缩前对应的数据块的编码数据。
可选地,压缩数据的数据段中各个数据体的摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,压缩数据的头段中的各个数据头按照该压缩数据压缩前包含的多个数据块之间的相对位置对应摆放。
步骤S2-1302,将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。
具体地,编码电路2-200的数据分割电路将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。
步骤S2-1303,根据编码电路的数量将得到的多个待解压数据块分组,得到多个待解压数据组。
步骤S2-1304,将得到的待解压数据组分发至多个编码电路,编码电路按照预设的压缩解压算法解压接收的待解压数据组中的待解压数据块,得到多个解压数据块。
步骤S2-1305,根据第二预设摆放格式摆放解压数据块,得到解压数据。
本实施例中的数据解压方法,首先将压缩数据进行分解,得到包含对应的数据头和数据体的待解压数据块,之后将待解压数据块按照编码电路的数量分组后,再使用传统的解压方法解压各个待解压数据块得到解压数据块,最后根据解压数据块得到解压数据。该方法将包含头段和数据段的压缩数据转化为传统解压方法可解压的数据,实施简单。该方法还分块解压压缩的数据,可以实现并行解压,提高解压效率。
下面以运算装置2-20如何执行上述数据解压方法的步骤为例,具体说明上述数据解压方法,如图28所示,该数据解压方法包括:
步骤S2-1401:主运算单元获取压缩数据,所述压缩数据包括头段和与所述头段数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。
步骤S2-1402:主运算单元的编码电路将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。
步骤S2-1403:主运算单元的编码电路根据从运算单元的数量将得到的多个待解压数据块分组,得到多个待解压数据组。
步骤S2-1404:主运算单元将多个待解压数据组分发至多个从处理单元。
可选地,主运算单元2-300通过分支运算单元2-500将得到的多个待解压数据组发送至多个主运算单元2-400。可选地,主运算单元2-300通过与主运算单元2-300连接的k个主运算单元2-400将得到的多个待解压数据组发送至多个主运算单元2-400。需要说明的是,在具体应用过程中,使用与主运算单元2-300连接的k个主运算单元2-400还是分支运算单元2-500进行主运算单元2-300以及多个主运算单元2-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S2-1405:各个从处理单元编码电路按照预设的压缩解压算法解压接收的待解压数据组中的待解压数据块,得到多个解压数据块。
步骤S2-1406:各个从处理单元将得到的多个解压数据块发送至主处理电路。
可选地,主运算单元2-400通过分支运算单元2-500将得到的多个解压数据块发送至主运算单元2-300。可选地,各个主运算单元2-400通过与主运算单元2-300连接的k个主运算单元2-400将得到的多个解压数据块发送至主运算单元2-300。需要说明的是,在具体应用过程中,使用与主运算单元2-300连接的k个主运算单元2-400还分支运算单元2-500进行主运算单元2-300以及多个主运算单元2-400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。
步骤S2-1407:根据第二预设摆放格式摆放解压数据块,得到解压数据。可选地,该第二预设摆放格式可以根据压缩数据压缩前的数据得到。进一步地,该第二预设摆放格式可以根据压缩数据压缩前包含的数据块之间的位置关系得到。
上述实施例中的数据解压方法,使用多个从处理电路并行解压压缩数据,提高了数据解压效率。
3、数据处理方法、装置、处理器和存储介质
一种数据处理方法,可以应用于如图29所示的处理器或图30所示的计算机系统中。其中,图30所示的计算机系统包括第一处理器3-100和第二处理器3-200,该第一处理器3-100和第二处理器3-200均可以采用图29所示的处理器的结构。第一处理器3-100连接第二处理器3-200,第一处理器3-100与第二处理器3-200能够进行数据通信。其中,第一处理器3-100可以设置在终端上,该终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,第二处理器3-200可以设置于服务器上,如本地服务器或云端服务器等,进一步地,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现,此处不做具体限定。
可选地,该第一处理器3-100和第二处理器3-200均可以包括运算电路。如图30所示,当该数据处理方法单独应用于第一处理器时,上述运算电路可以是第一处理器3-100中的第一运算电路3-110,当该数据处理方法单独应用于第二处理器时,上述运算电路可以是第二处理器3-200的第二运算电路3-210。该第一运算电路3-110或第二运算电路3-210能够根据运算指令和神经网络的输入数据(其中,输入数据包括输入神经元数据和权值数据等等)实现神经网络的相关运算。例如,该运算电路可以根据正向运算指令和/或反向运算指令实现神经网络的正向运算和反向运算,从而实现对神经网络的训练或重训练。当然,在其他实施例中,该运算电路还可以实现卷积运算指令等其他神经网络运算指令等,此处不做具体限定。
具体地,第一运算电路3-110或第二运算电路3-210可以用于根据输入数据对神经网络进行正向运算,获得正向运算结果。具体地,上述运算电路可以用于根据该神经网络的输入神经元数据和权值数据,进行一系列的线性运算和激活运算,从输入层开始,一层层的向后计算,直至完成输出层的运算,得到输出结果,该输出层的输出结果即为正向运算结果。进一步地,该运算电路可以根据正向运算结果与预设的目标运算结果,计算损失函数。其中,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。
更进一步地,第一运算电路3-110或第二运算电路3-210可以确定损失函数的值是否大于或等于预设的目标精度,并在损失函数的值大于或等于目标精度时,根据损失函数对神经网络进行反向运算,获得梯度值。具体地,该梯度值可以是神经网络的各层对应的梯度值的集合。运算电路可以用于计算损失函数对各个权值数据的偏导数,获得各层的梯度值。
再进一步地,第一运算电路3-110或第二运算电路3-210可以用于根据梯度值更新神经网络的权值数据,获得更新后的权值数据。具体地,第一运算电路3-110或第二运算电路3-210可以用于根据梯度下降算法(如随机梯度下降算法或批量梯度下降算法)实现权值数据的更新,具体地,第一运算电路3-110或第二运算电路3-210可以根据上述的梯度值和预设的学习率(该学习率可以是预设的固定值,也可以是随机递减的)计算获得浮动值,并根据该神经网络更新前的权值和该浮动值计算获得更新后的权值数据。例如,该更 新后的权值数据可以等于更新前的权值数据减去上述的浮动值。当然,在其他实施例中,该权值数据的更新过程还可以采用其他能够实现相似功能的算法,此处仅以举例说明,并不用于限定本申请的范围。之后,第一运算电路3-110或第二运算电路3-210可以返回根据输入数据对神经网络进行正向运算,获得正向运算结果的步骤,直至正向运算结果满足预设需求。当该正向运算结果满足预设需求时,则表明完成该神经网络的训练或重训练。
可选地,当处理器根据正向运算结果确定的损失函数的值大于或等于预设的目标精度时,则处理器可以确定该正向运算结果不满足预设需求。当处理器根据正向运算结果确定的损失函数的值小于预设的目标精度时,则处理器可以确定该正向运算结果满足预设需求。可选地,该预设的目标精度可以根据运算类型及精度或先验知识等获得,且该预设的目标精度可以预先存储于处理器中。
可选地,该神经网络可以是未经训练的神经网络,其对应的权值数据可以是随机数,这样,通过运算电路对该神经网络进行正向运算和/或反向运算,使得该神经网络的正向运算结果在预设的范围内,从而实现对该神经网路的训练。可选地,该神经网络为处于收敛状态的神经网络,该处于收敛状态的神经网络的权值数据为一组确定数值。这样,通过运算电路对该神经网络进行正向运算和/或反向运算,从而实现对神经网络的重训练,使得重训练后获得的神经网络满足当前应用场景的需求。其中,该重训练后获得的损失函数的值一般小于该重训练前的损失函数的值。可选地,系统可以预先设置该神经网络的目标精度,并根据该目标精度确定上述预设的范围。
可选地,如图29所示,每个处理器上均可以设置有解压电路和压缩电路,该压缩电路和解压电路均连接至该处理器上的运算电路,其中,压缩电路可以用于对处理器的输入数据和/或输出数据进行有损压缩编码,解压电路用于对处理器获得的处于压缩状态的数据进行解压缩。例如,处理器上的压缩电路可以对其接收到的输入数据进行有损压缩编码,以降低数据量,之后,解压电路可以对该处于压缩状态的数据进行解压缩,运算电路可以根据该解压缩后的数据进行正向运算和/或反向运算。进一步地,该处理器上的压缩电路可以根据神经网络的精度确定数据的目标压缩率,并根据该目标压缩率对处理器的输出数据进行有损压缩编码。
可选地,压缩电路可以对其接收到的第三输入数据进行有损压缩编码,获得第一输入数据,该第三输入数据可以是神经网络的未经有损压缩编码的输入数据。之后,解压电路可以对该处于压缩状态的第一输入数据进行解压缩,获得第二输入数据,运算电路可以根据该第二输入数据进行有损压缩编码。进一步地,压缩电路还可以对运算电路获得的正向运算结果进行有损压缩编码,解压电路还可以对该有损压缩编码后的正向运算电路进行解压缩,之后,运算电路根据该解压缩后的正向运算结果计算损失函数,并根据该损失函数进行反向运算,获得梯度值。
更进一步地,压缩电路可以对上述的梯度值进行有损压缩编码,解压电路可以对有损压缩后的梯度值进行解压缩,运算电路可以根据解压缩后的梯度值更新权值数据。又进一步地,压缩电路还可以对更新后的权值数据进行有损压缩编码,解压电路可以对有损压缩 后的权值数据进行解压缩,之后运算电路可以根据该解压缩的权值数据获得更新的第二输入数据,并根据该第二输入进行正向运算,循环往复,直至运算电路确定损失函数的值小于预设的目标精度。
可选地,压缩电路可以根据预设的目标精度确定目标压缩率,并根据目标压缩率对各个输入数据、正向运算结果、梯度值及权值数据等数据进行有损压缩。同理,解压电路可以根据上述的目标压缩率对其接收的各种处于压缩状态的数据进行解压缩。
可选地,如图30所示,该处理器可以是第一处理器3-100或第二处理器3-200。该第一处理器3-100上均可以设置有第一压缩电路3-120和第一解压电路3-140,第一压缩电路4-120和第一解压电路3-140均连接至第一运算电路3-110。该第二处理器3-200上可以设置有第二压缩电路3-220和第二解压电路3-240,第二压缩电路3-220和第二解压电路3-240均可以连接至第二运算电路3-210。此时,当前处理器接收到的输入数据可以是与其连接的其他处理器经有损压缩编码后的、处于压缩状态的数据。
例如,当第一处理器3-100需要向第二处理器3-200传送数据时,如神经网络的输入数据,第一处理器3-100可以首先通过其上设置的第一压缩电路3-120对该数据进行有损压缩编码,并将有损压缩编码后的数据传送至第二处理器3-200。第二处理器3-200可以通过其上设置的第二解压电路3-240对该有损编码后的数据进行解压缩,之后第二运算电路3-210能够根据解压缩后获得的数据进行相应的运算。同理,当第二处理器3-200需要向和第一处理器3-100传送数据时,第二处理器3-200可以首先通过其上设置的第二压缩电路3-220对该数据进行有损压缩编码,并将有损压缩编码后的数据传送至第一处理器3-100。第一处理器3-100可以通过其上设置的第一解压电路3-140对该有损编码后的数据进行解压缩,之后,第一运算电路3-110能够根据解压缩后获得的数据进行相应的运算。
本申请实施例中,通过有损压缩编码的方式对数据进行压缩,可以提高数据的压缩率,降低访存数据占用的带宽,从而降低处理器之间的访存开销,提高处理器的数据访存速度及效率,进而提升处理器的处理效率。可选地,该有损压缩编码可以包括预测编码(如点线性预测等)、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合等等,此处仅用于举例说明,并不用于限定本申请的范围。事实上,其他可以实现相似功能的有损压缩编码方式同样适用于本申请的数据处理方法。应当清楚的是,有损压缩是指通过减少数据量来提高压缩率的压缩方法,其在压缩过程中会损失一定的信息,解压缩后的数据与原始数据不同但非常接近。
传统技术中,一般是通过对神经网络进行剪枝及稀疏处理,之后再通过哈夫曼编码(Huffman Coding)实现对神经网络的压缩。本领域技术人员可以理解的是,哈夫曼编码属于无损压缩的方式。可见,传统技术中是通过稀疏算法来减少数据量,并结合无损压缩的方式实现数据的压缩。相较于传统技术,本申请实施例中采用的有损压缩编码的方式减少了处理器的数据运算量,提高了压缩效率。
可选地,各个处理器上的运算电路可以采用图31-32所示的运算电路3-300。具体地,上述第一运算电路3-110或第二运算电路3-210均可以采用图31-32所示的运算电路3-300。 该运算电路4-300可以包括至少两个处理电路,该至少两个处理电路可以分别标记为主处理电路3-310和至少一个从处理电路3-320,其中,至少一个从处理电路3-320均连接至主处理电路3-310。主处理电路3-310用于对输入数据以及主处理电路3-310与所述多个从处理电路3-320之间的传输数据及运算指令进行前序处理,各个从处理电路3-320分别用于依据主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主处理电路3-310。主处理电路3-310还用于对多个中间结果执行后续处理得到运算指令的计算结果,该计算结果可以具体为神经网络运算的输出神经元数据等。本申请实施例中,上述运算指令可以是正向运算指令和/或反向运算指令。
进一步地,主处理电路3-310上可以设置有第三压缩电路3-311和第三解压电路3-312,各个从处理电路3-320上可以设置有第四压缩电路3-321和第四解压电路3-322。本申请实施例中,通过在主处理电路和从处理电路相应的设置解压电路和压缩电路,可以实现运算过程中的梯度数据、权值数据等中间计算结果的压缩和解压缩,降低各个处理电路之间传输数据的数据量大小,减少各个处理电路之间的访存开销,从而进一步提高处理器的性能。
可选地,在神经网络训练或重训练的过程中,第一运算电路3-110或第二运算电路3-210可以首先执行正向运算。具体地,主处理电路3-310上的第三压缩电路3-311用于将第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路上的第四解压电路3-322;各个第四解压电路3-322分别用于对接收到的处于压缩状态的权值数据进行解压缩,之后各个从处理电路3-320分别用于根据解压缩后的权值数据进行正向运算得到第一中间结果,第四压缩电路3-321用于分别对相应的第一中间结果进行有损压缩编码。第三解压电路3-312用于对各个从处理电路3-320传送的第一中间结果进行解压缩,主处理电路3-310用于根据解压缩后的第一中间结果获得正向运算结果。其中,第一中间结果可以是各个从处理电路对应的正向运算的正向运算结果。该正向运算的过程具体可参见上文中的描述。
进一步地,主处理电路3-310还可以用于根据该正向运算结果和预设的目标运算结果,计算获得损失函数。其中,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。例如,该损失函数可以是正向运算结果与预设的目标运算结果的均方差函数,该损失函数的值可以是正向运算结果与预设的目标运算结果的均方差的绝对值。可选地,主处理电路可以将该正向运算结果与预设的训练数据集及进行正向运算,获得收敛结果,并根据该收敛结果与预设的目标运算结果确定损失函数。其中,损失函数可以是收敛结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。例如,损失函数可以是收敛结果与预设的目标运算结果的均方差函数,主处理电路3-310可以将该收敛结果与预设的目标运算结果的均方差作为损失函数的值,或者,将该收敛结果与预设的目标运算结果的均方差的绝对值作为损失函数的值。
主处理电路3-310还可以进一步确定该损失函数的值是否小于预设的目标精度,若损失函数的值小于预设的目标精度,则说明完成该神经网络的训练或重训练。进一步地,主处理电路的第三压缩电路3-311可以对该神经网络的训练或重训练的结果进行有损压缩编 码,并将有损压缩编码后的该神经网络的训练或重训练的结果传送至第一处理器3-100或第二处理器3-200外部。
若主处理电路3-310确定损失函数的值大于或等于预设的目标精度,则主处理电路的第三压缩电路3-311可以对该损失函数进行有损压缩编码,并将有损压缩后的损失函数发送至各个从处理电路3-320,各个从处理电路的第四解压电路3-322可以对其接收到的损失函数进行解压缩,之后,各个从处理电路3-320可以根据解压缩后获得的损失函数执行反向运算。具体地,主处理电路3-310在确定损失函数大于或等于目标精度时,第三压缩电路3-311对损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的损失函数传送至各个第四解压电路3-322;各个第四解压电路3-322分别用于对接收到的处于压缩状态的损失函数进行解压缩;各个从处理电路3-320分别用于根据解压缩后的损失函数对神经网络进行反向运算得到第二中间结果;各个第四压缩电路3-321分别用于将第二中间结果进行有损压缩编码后传送至第三解压电路3-312;第三解压电路3-312用于对各个从处理电路传送的第二中间结果进行解压缩;主处理电路3-310还用于根据解压缩后的第二中间结果获得梯度值。其中,第二中间结果可以是各个从处理电路执行反向运算获得梯度值。该反向运算的具体执行过程可参见上文的描述。
更进一步地,主处理电路3-310可以根据上述的梯度值更新神经网络的权值数据,之后,主处理电路的第三压缩电路3-311可以对该更新后的第二输入数据进行有损压缩编码,并将该更新后的第二输入数据传送至各个从处理电路的第四解压电路3-322,各个从处理电路3-320可以对更新后的第二输入数据进行解压缩,并根据更新后的第二输入数据重复执行上述正向运算和反向运算,直至该损失函数的值小于预设的目标精度。
可选地,各个处理器上与运算电路连接的压缩电路(第一压缩电路3-120、第二压缩电路3-220)以及各运算电路内部设置的第三压缩电路3-311和第四压缩电路3-321均包括第一压缩率确定模块3-410和至少一个压缩模块3-420,各个压缩模块3-420并联设置,各个压缩模块3-420均连接至第一压缩率确定模块3-410。各个压缩模块3-420分别用于按照不同的压缩率进行有损压缩编码,第一压缩率确定模块3-410用于根据预设的目标精度确定目标压缩率,并根据目标压缩率从至少一个压缩模块3-420中选定目标压缩模块3-420;该目标压缩模块3-420的压缩率可以等于目标压缩率。
可选地,第一压缩率确定模块3-410可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,第一处理器3-100可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。本申请实施例中,通过设置不同压缩率的压缩模块3-420,可以根据神经网络的不同精度调整压缩率,从而可以在满足精度需求的情况下,提高压缩率。
可选地,各个处理器上设置的与运算电路连接的解压电路(第一解压电路3-140、第二解压电路3-240)以及各个运算电路内部设置的第三解压电路3-312和第四解压电路3-322均可以包括第二压缩率确定模块3-510以及至少一个解压模块3-520,至少一个解压 模块3-520并联设置,各个解压模块3-520均连接至第二压缩率确定模块3-510。各个解压模块4-520分别用于解压不同压缩率的数据,第二压缩率确定模块3-510用于根据目标压缩率从至少一个解压模块3-520中选定目标解压模块3-520。本申请实施例中,通过设置不同的解压模块3-520,可以根据不同的压缩率选通不同的硬件解压模块3-520,保证解压后数据的可靠性,从而可以保证运算的可靠性和准确性。
可选地,如图29所示,各个处理器还可以包括读写电路。如图30所示,该第一处理器3-100可以包括第一读写电路3-130,该第二处理器3-200可以包括第二读写电路4-230。该第一读写电路3-130或第二读写电路3-230用于获取神经网络的第一输入数据以及其他数据。本申请实施例中,该读写电路可以是I/O电路。进一步地,该第一处理器3-100或第二存储器还可以包括片上存储电路,该片上存储电路可以包括缓存和寄存器等,此处不做具体限定。
作为进一步地改进,各个处理器(如第一处理器3-100或第二处理器3-200)上还可以设置有用于实现无损压缩的第五压缩电路。该第五压缩电路可以与该运算电路连接,该第五压缩电路也可以设置在主处理电路和各个从处理电路上。相应地,该第一处理器3-100或第二处理器3-200的解压电路还可以设置有用于实现无损解压缩的第五解压电路,该第五解压电路可以与上述的运算电路连接,该第五解压电路也可以设置在主处理电路和各个从处理电路上。进一步地,该第一处理器3-100或第二处理器3-200上还可以包括压缩选择电路,用于根据运算指令选定有损压缩的方式实现数据压缩,或根据运算指令选定无损压缩的方式实现数据压缩。
在一个实施例中,第一处理器3-100可以设置在终端上,第二处理器3-200可以设置在云端服务器上,通过终端和云端服务器交互协同的方式实现对神经网络的训练或重训练。例如,终端的第一处理器3-100可以获得一具有一定精度的神经网络,该神经网络处于收敛状态,并判断该神经网络的正向运算结果是否满足该终端的预设需求,当该神经网络的正向运算结果不满足终端的预设需求时,终端的第一处理器3-100可以对该神经网络进行有损压缩编码,并将有损压缩编码后的神经网络发送至云端服务器进行重训练。云端服务器的第二处理器3-200可以根据该有损压缩编码后的神经网络进行重训练,并对重训练好的神经网络进行有损压缩编码,并将该重训练后的神经网络数据(可以包括输入神经元数据和权值数据)回传给终端。从而使得重训练后的神经网络能够满足终端的预设需求,以便终端能够应用该重训练好的神经网络实现相应的运算。
当然,该终端的第一处理器3-100也可以获得一未经训练的神经网络,该未经训练的神经网络的权值数据可以是随机数。此时,终端可以对该神经网络进行有损压缩编码,并将有损压缩编码后的神经网络发送至云端服务器进行训练。最后,云端服务器可以根据有损压缩编码后的神经网络进行训练,并对训练好的神经网络进行有损压缩编码,并将该训练后的神经网络回传给终端。从而使得训练后的神经网络能够满足终端的需求,以便终端能够应用该训练好的神经网络实现相应的运算。
本申请实施例中,通过终端与云端服务器协同的方式,并在云端服务器实现对神经网 络的训练或重训练过程,可以降低终端的运算量。同时,终端和云端服务器之间的传送的数据均为有损压缩编码后获得数据,从而可以减少数据的访存开销,提高该计算机系统的性能。
具体地,第一处理器3-100可以用于根据获取的神经网络的输入数据进行正向运算,获得正向运算结果,并在神经网络的正向运算结果不满足预设需求时,对输入数据进行有损压缩编码,并将有损压缩编码后的输入数据传送至第二处理器。其中,该神经网络的输入数据可以是该神经网络的第三输入数据,也可以是是有损压缩编码后处于压缩状态后的第一输入数据,也可以是有损压缩编码后处于解压状态的第二输入数据,上述的神经网络的输入数据可以包括神经元数据和权值数据。当第一处理器接收到的输入数据为上述第一输入数据时,第一处理器3-100的第一解压电路3-140可以首先对该数据进行解压缩,获得第二输入数据,之后,第一运算电路3-110再根据解压缩状态的第二输入数据进行运算。
具体地,第一运算电路3-110用于根据输入数据进行正向运算,获得第一正向运算结果,根据第一正向运算结果与预设的目标运算结果,获得第一损失函数。若第一运算电路3-110确定第一损失函数的值小于预设的目标精度,则确定神经网络的正向运算结果满足终端的预设需求。若第一运算电路3-110确定第一损失函数的值大于或等于预设的目标精度,则确定神经网络的正向运算结果不满足终端的预设需求。
可选地,当第一运算电路3-110确定正向运算结果不满足终端的预设需求时,与第一运算电路3-110连接的第一压缩电路3-120可以用于对输入数据进行有损压缩编码,并将该处于压缩状态的输入数据传送至云端服务器。具体地,第一压缩电路3-120可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,第一处理器可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。本申请实施例中,通过神经网络的目标精度确定目标压缩率,可以在确保精度的前提下,尽可能的提高压缩率,以减小数据访存带来的带宽开销。
该云端服务器可以对第二处理器3-200可以对其接收到的输入数据进行解压缩,并根据解压后的输入数据对神经网络进行训练或重训练,直至该神经网络的第二正向运算结果满足终端的预设需求。具体地,第二解压电路3-240可以用于对第一处理器传送的输入数据进行解压缩,获得有损压缩后的该神经网络的输入神经元数据及权值数据。第二运算电路3-210可以用于根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果,并根据该第二正向运算结果和预设的目标运算结果确定第二损失函数。若第二损失函数的值大于或等于预设的目标精度,则第二运算电路3-210用于根据第二损失函数进行反向运算,获得梯度值,并根据梯度值更新权值数据,获得更新后的权值数据。之后,第二运算电路3-210继续用于根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果,直至第二正向运算结果满足终端的预设需求。可选地,该正向运算和反向运算的具体过程可参见上文的描述。
可选地,当第一运算电路3-110确定正向运算结果不满足终端的预设需求时,与第一运算电路3-110连接的第一压缩电路3-120可以用于对第二输入数据及第一损失函数进行有损压缩编码,获得交互数据;第一读写电路3-130可以用于将交互数据传送至第二处理器3-200。其中,该交互数据可以包括神经网络的输入神经元数据、权值数据及损失函数等中间结果数据。即当该神经网络的正向运算结果不满足终端的预设需求时,此时需要将该神经网络发送至云端服务器进行训练或重训练。本申请实施例中,通过对终端和云端服务器之间的交互数据进行有损压缩编码,能够减小数据访存的开销。
可选地,第一处理器3-100的第一压缩电路3-120可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对上述交互数据进行有损压缩。具体地,第一压缩电路3-120可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,第一处理器可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。本申请实施例中,通过神经网络的目标精度确定目标压缩率,可以在确保精度的前提下,尽可能的提高压缩率,以减小数据访存带来的带宽开销。
进一步地,该云端服务器的第二处理器3-200可以对其接收的交互数据进行解压缩,并根据该交互数据对神经网络进行训练或重训练,直至该神经网络的第二正向运算结果满足终端的预设需求。具体地,第二解压电路3-240可以用于对第一处理器传送的交互数据进行解压缩,获得有损压缩后的该神经网络的输入神经元数据、权值数据及第一损失函数等中间结果数据。第二运算电路3-210可以用于根据解压缩后获得的第一损失函数的值对神经网络进行反向运算,获得梯度值,根据梯度值更新输入数据中的权值数据,获得更新后的权值数据,根据更新后的权值数据对神经网络进行正向运算,获得第二正向运算结果;根据第二正向运算结果和预设的目标运算结果,获得第二损失函数;在第二损失函数的值大于或等于预设的目标精度时,根据第二损失函数的值对神经网络进行反向运算,获得梯度值,之后返回第二处理器根据梯度值更新输入数据的权值数据,获得更新后的权值数据的步骤,直至第二损失函数的值小于预设的目标精度。
可选地,第二处理器上的第二压缩电路还可以对上述训练或重训练过程中的第二正向运算结果、梯度值及权值数据等进行有损压缩编码。第二处理器上的第二解压电路还可以对上述有损压缩编码后的数据进行解压缩。例如,第二压缩电路可以对第二正向运算结果进行有损压缩编码,第二解压电路可以对上述有损压缩后的第二正向运算结果进行解压缩,第二运算电路可以根据解压缩的第二正向运算结果确定第二损失函数。再如,第二压缩电路可以对梯度值进行有损压缩编码,第二解压电路可以对上述有损压缩后的梯度值进行解压缩,并根据解压缩后的梯度值获得更新后的权值数据。又如,第二压缩电路可以对权值数据进行有损压缩编码,第二解压电路可以对上述有损压缩后的权值数据进行解压缩,之后,第二运算电路3-210继续用于根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果,直至第二正向运算结果满足终端的预设需求。本申请实施例中的 第二压缩电路和第二解压电路的工作原理与上述实施例的压缩电路和解压电路的工作原理基本一致,具体可参见上文中的描述。
在一个实施例中,该第二处理器3-200的运算电路3-210可以采用如图31-32所示的运算电路3-300,该运算电路的主处理电路3-310上设置有第三压缩电路3-311和第三解压电路4-312,从处理电路3-320上设置有第四压缩电路3-321和第四解压电路3-322,具体结构可参见上文的描述。
当该云端服务器的第二处理器3-200对该神经网络进行训练或重训练时,第三压缩电路3-311可以用于对输入数据中的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个第四解压电路3-322,其中,本申请实施例中的权值数据可以是输入数据中包含的原始权值数据,也可以是根据第一处理器获得的第一损失函数更新后的权值数据。当该权值数据为根据第一损失函数更新后的权值数据时,上述对权值数据进行有损压缩编码之前,主处理电路3-310的第三压缩电路3-311可以用于对解压缩后获得的第一损失函数进行有损压缩编码,并将有损压缩后的第一损失函数传送至各个从处理电路的第四解压电路3-322。各个从处理电路3-320可以根据第一损失函数的值对神经网络进行反向运算,获得梯度值。进一步地,各个从处理电路3-320的第四压缩电路可以将该梯度值进行有损压缩编码,并将该有损压缩编码后的梯度值传送至主处理电路3-310。主处理电路3-310的第三解压电路3-312可以对各个从处理电路3-320传送的梯度值进行解压缩,之后主处理电路3-310可以根据各个从处理电路传送的梯度值确定该神经网络的各层的梯度值,并根据该神经网络的各层的梯度值更新第二输入数据中的权值数据,获得更新后的权值数据。
当第三压缩电路3-311将处于压缩状态的权值数据传送至各个第四解压电路3-322之后,各个第四解压电路3-322分别对接收到的处于压缩状态的权值数据进行解压缩;各个从处理电路3-320用于根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果;各个第四压缩电路3-321用于将第一中间结果进行有损压缩编码后传送至第三解压电路3-312;第三解压电路3-312用于对各个从处理电路传送的第一中间结果进行解压缩,主处理电路3-310用于根据解压缩后的第一中间结果获得第二正向运算结果。
第三压缩电路3-311还用于在第二损失函数的值大于或等于目标精度时,对第二损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的第二损失函数传送至各个第四解压电路3-322。各个第四解压电路3-322分别对接收到的处于压缩状态的第二损失函数进行解压缩,各个从处理电路3-320用于根据解压缩后的第二损失函数对神经网络进行反向运算得到第二中间结果。各个第四压缩电路3-322用于将第二中间结果进行有损压缩编码后传送至第三解压电路3-312。第三解压电路3-312还用于对各个从处理电路3-320传送的第二中间结果进行解压缩,主处理电路3-310还用于根据解压缩后的第二中间结果获得梯度值,之后主处理电路可以根据该神经网络的各层的梯度值更新第二输入数据中的权值数据,获得更新后的权值数据。之后,第三压缩电路3-311可以用于对输入数据中的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个第四解压电路 3-322,循环重复执行上述步骤,直至神经网络的第二正向运算结果满足终端的预设需求。
本申请实施例中,云端服务器的第二处理器3-200对神经网络的训练或重训练的过程与上述处理器对神经网络的训练或重训练过程基本一致,具体过程可参见上文的描述,此处不再赘述。
可选地,云端服务器的第二处理器3-200在确定神经网络的第二正向运算结果满足终端的预设需求时,可以确定该神经网络已经训练或重训练完毕,此时,第二处理器3-200可以对神经网络进行有损压缩编码,并将有损压缩编码后的神经网络传送至第一处理器。本申请实施例中,对神经网络进行有损压缩编码,可以是对训练或重训练完毕的神经网络的权值数据进行有损压缩编码的过程。
可选地,该终端的第一处理器的运算电路3-110也可以采用如图31-32所示的运算电路3-300。此时,当终端的第一处理器3-100根据输入数据进行正向运算时,第三压缩电路3-311可以用于对输入数据中的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个第四解压电路3-322,各个第四解压电路3-322分别对接收到的处于压缩状态的权值数据进行解压缩;各个从处理电路3-320用于根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果;各个第四压缩电路3-321用于将第一中间结果进行有损压缩编码后传送至第三解压电路3-312;第三解压电路3-312用于对各个从处理电路传送的第一中间结果进行解压缩,主处理电路3-310用于根据解压缩后的第一中间结果获得第一正向运算结果。进一步地,该第一运算电路的主处理电路可以根据该第一正向运算结果确定第一损失函数,并确定该第一损失函数的值是否满足终端的预设需求。
如图33所示,本申请提供了一种数据处理方法,该数据处理方法可以应用于上述的第一处理器或第二处理器中,通过对数据进行有损压缩编码,从而减少数据量,降低访存的开销,提高处理器的性能。具体地,上述方法包括如下步骤:
S3-100、获取神经网络的第一输入数据,其中,第一输入数据为有损压缩编码后获得的处于压缩状态的数据。
具体地,第一运算电路3-110或第二运算电路3-210可以获取处于压缩状态的、经过有损压缩编码获得的第一输入数据,该第一输入数据包括神经网络的输入神经元数据和权值数据。可选地,该神经网络可以是处于收敛状态的神经网络,该神经网络也可以是未经训练的神经网络,该未经训练的神经网络的权值可以为随机数。
可选地,第一处理器3-100或第二处理器3-200可以通过直接读取处于经过有损压缩编码获得的第一输入数据,可以减少数据的数据量,从而减少数据访存的开销。可选地,第一处理器3-100或第二处理器3-200还可以获得未经压缩的第三输入数据,该第三输入数据的信息量大于上述的第一输入数据的信息量。进一步地,该第一处理器3-100或第二处理器3-200可以对上述第三输入数据进行有损压缩编码,获得上述的第一输入数据。
S3-200、对第一输入数据进行解压缩,获得神经网络的第二输入数据;
具体地,第一运算电路3-110或第二运算电路3-210可以对其获取的第一输入数据进行解压缩,获得神经网络的第二输入数据。其中,该第二输入数据为处于解压状态的数据, 该第二输入数据也包括输入神经元数据和权值数据。可选地,该第二输入数据与压缩前的第一输入数据不同但非常接近,该第二输入数据所包含的信息量小于压缩前的第一输入数据所包含的信息量。
S3-300、根据第二输入数据进行正向运算,获得正向运算结果;
具体地,第一运算电路3-110或第二运算电路3-210可以根据该神经网络的输入神经元数据和权值数据,进行一系列的线性运算和激活运算,从输入层开始,一层层的向后计算,直至完成输出层的运算,得到输出结果,该输出层的输出结果即为正向运算结果。可选地,对于多层神经网络,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将处理器中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值,直至完成输出层的运算。
S3-400、若该正向运算结果不满足预设需求,则对神经网络进行训练或重训练,直至该正向运算结果满足预设需求。
具体地,若该正向运算结果不满足预设需求,第一运算电路3-110或第二运算电路3-210可以根据该处于解压状态的第二输入数据对神经网络进行训练或重训练,直至该神经网络的正向运算结果满足预设需求。可选地,该神经网络的训练过程或重训练过程可以通过对该神经网络执行正向运算和/或反向运算实现,该神经网络的训练过程或重训练过程具体可参见下文的描述。
本申请的数据处理方法,通过对神经网络的输入数据进行有损压缩编码,可以通过减小输入数据的数据量,降低神经网络处理过程中数据的访存开销,从而可以提高处理器的性能;进一步地,处理器可以根据对该第一输入数据进行解压缩,并根据解压缩后获得的第二输入数据对神经网络进行训练或重训练,使得该神经网络的正向运算结果满足预设需求,即可以通过对神经网络进行训练或重训练弥补有损压缩编码对精度的影响,从而可以保证运算的可靠性及准确性。
可选地,上述方法还可以包括如下步骤:
S3-500、判断正向运算结果是否满足预设需求;
若上述正向运算结果不满足预设需求,则执行上述步骤S3-400,对神经网络进行训练或重训练,直至该正向运算结果满足预设需求。若正向运算结果满足预设需求,则表明该神经网络训练或重训练完毕。进一步地,处理器可以根据对该训练或重训练完毕的神经网络进行有损压缩编码,并将该有损压缩编码后的神经网络传送至对应的终端,以便于终端根据该神经网络进行相应的运算。可选地,处理器还可以直接应用该训练或重训练完毕的神经网络进行相应的运算。
可选地,,上述步骤S3-500还可以包括如下步骤:
S3-510、根据正向运算结果与预设的目标运算结果,计算损失函数。
可选地,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。进一步地,第一运算电路3-110或第二运算电路3-210的 运算电路可以确定该损失函数的值。例如,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数,第一运算电路3-110或第二运算电路3-210可以计算正向运算结果与预设的目标运算结果的均方差,并将该均方差的绝对值作为上述的损失函数的值。
可选地,在另一个实施例中,第一运算电路3-110或第二运算电路3-210还可以将上述获得的正向运算结果与预设的训练数据集进行正向运算,获得收敛结果,并根据该收敛结果与目标运算结果确定损失函数。其中,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。进一步地,第一运算电路3-110或第二运算电路3-210的运算电路可以确定该损失函数的值。例如,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数,第一运算电路3-110或第二运算电路3-210可以计算上述的收敛结果与目标运算结果之间的均方差,并将该均方差的绝对值作为损失函数的值。
S3-520、第一运算电路3-110或第二运算电路3-210判断损失函数的值是否大于或等于预设的目标精度;
若损失函数的值大于或等于目标精度,则确定正向运算结果不满足预设需求。若损失函数的值小于目标精度,则确定正向运算结果满足预设需求。
进一步地,上述步骤S3-510还可以包括如下步骤:
S3-501、对所述正向运算结果进行有损压缩编码后再对所述正向运算结果进行解压缩。
具体地,每当处理器执行完成一次正向运算,处理器上的压缩电路可以对该正向运算结果进行有损压缩编码,以降低数据量,从而可以进一步降低数据访存开销。之后,处理器上的解压电路可以对该有损压缩后的正向运算结果进行解压缩,以便处理器可以根据该解压缩后的数据执行相应的运算。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该正向运算结果进行有损压缩。
S3-502、根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。具体地,该计算损失函数的具体过程可参见上述步骤S3-510的描述。
可选地,当损失函数的值大于或等于目标精度时,即当正向运算结果不满足预设需求时,则对神经网络进行训练或重训练,即上述步骤S3-400可以包括如下步骤:
S3-410、根据损失函数对神经网络进行反向运算,获得梯度值。
具体地,第一运算电路3-110或第二运算电路3-210可以计算损失函数对各个权值数据的偏导数,获得各层的梯度值。在多层神经网络的反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
进一步地,上述步骤S3-410还可以包括:
对损失函数进行有损压缩编码后再对损失函数进行解压缩;具体地,每当处理器完成一次正向运算,处理器还可以对该正向运算获得的损失函数进行有损压缩编码,之后在对该有损压缩后的损失函数进行解压缩,以便根据解压缩后的损失函数进行相应的运算。可 选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该损失函数进行有损压缩。
根据解压缩后的损失函数对神经网络进行反向运算,获得梯度值。具体地,该获得梯度值的过程可参见上述步骤S3-410中的描述。
S3-420、根据梯度值更新神经网络的权值数据,之后返回步骤S3-300,根据第二输入数据进行正向运算,获得正向运算结果的步骤,重复执行上述步骤S3-300、步骤S3-500及步骤S3-400,直至损失函数的值小于预设的目标精度。
可选地,第一运算电路3-110或第二运算电路3-210可以根据梯度下降算法(如随机梯度下降算法或批量梯度下降算法)实现权值数据的更新,具体地,第一运算电路3-110或第二运算电路3-210可以根据上述的梯度值和预设的学习率(该学习率可以是预设的固定值,也可以是随机递减的)计算获得浮动值,并根据该神经网络更新前的权值和该浮动值计算获得更新后的权值数据。例如,该更新后的权值数据可以等于更新前的权值数据减去上述的浮动值。当然,在其他实施例中,该权值数据的更新过程还可以采用其他能够实现相似功能的算法,此处仅以举例说明,并不用于限定本申请的范围。
进一步地,上述步骤S3-420可以包括:
S3-401、对所述梯度值进行有损压缩编码后再对所述有损压缩编码后的梯度值进行解压缩;
具体地,每当处理器完成一次反向运算,处理器可以对反向运算获得的梯度值进行有损压缩编码,以降低数据量,进一步降低数据访存开销。之后,处理器可以对有损压缩后的梯度值进行解压缩,以便根据解压缩后的梯度值更新权值数据。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该梯度值进行有损压缩。
S3-402、根据所述解压缩后获得的梯度值更新所述权值数据。具体地,该更新权值的步骤与上述S3-420中的记载基本一致,具体可参见上文。
更进一步地,上述步骤S3-420还可以包括:
S3-403、对所述权值数据进行有损压缩编码后再对所述有损压缩编码后的权值数据进行解压缩;具体地,每当处理器完成一次权值数据的更新操作,处理器可以对更新后的权值数据进行有损压缩编码,以进一步降低数据量。之后,处理器可以对该有损压缩后的权值数据进行解压缩。之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该权值数据进行有损压缩。
若确定损失函数的值小于预设的目标精度,则表明该神经网络训练或重训练完毕。进一步地,处理器可以根据对该训练或重训练完毕的神经网络进行有损压缩编码,并将该有损压缩编码后的神经网络传送至对应的终端,以便于终端根据该神经网络进行相应的运算。可选地,处理器还可以直接应用该训练或重训练完毕的神经网络进行相应的运算。
在一个实施例中,上述第一运算电路3-110或第二运算电路3-210包含至少两个处理电路,至少两个处理电路包括主处理电路和从处理电路;上述方法可以包括:
S3-311、主处理电路对第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路。
具体地,主处理电路可以将输入神经元数据确定为广播数据,并将输入神经元数据广播给各个从处理电路。同时,主处理电路可以将权值数据确定为分发数据,并将分发数据分配成多个数据块,将至少一个数据块进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路。本申请实施例中,通过对权值数据进行有损压缩,并将有损压缩后的权值数据传送至各个从处理电路,可以减少处理器的片上访存开销,进一步提高处理器的性能。
S3-312、各个从处理电路分别对接收到的处于压缩状态的权值数据进行解压缩,并根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果,将第一中间结果进行有损压缩编码后传送至主处理电路。
具体地,各个从处理电路可以分别对接收到的处于压缩状态的权值数据进行解压缩,并根据解压缩后的权值数据和广播获得的输入神经元数据,对神经网络进行正向运算得到第一中间结果。其中,该第一中间结果可以是各个从处理电路对应的正向运算的正向运算结果,该正向运算结果可以是神经网络的输出神经元数据。进一步地,各个从处理电路可以对其对应的第一中间结果进行有损压缩编码,并将有损压缩编码后数据传送至主处理电路。本申请实施例中,通过各个从处理电路对第一中间结果进行有损压缩,并将有损压缩后的第一中间结果传送至主处理电路,可以减少处理器的片上访存开销,进一步提高处理器的性能。
S3-313、主处理电路对各个从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得正向运算结果。
具体地,主处理器电路可以对其接收的各个第一中间结果分别进行解压缩,并将各个第一中间结果进行排序得到综合运算结果,并对该综合运算结果执行偏置运算及激活运算得到正向运算结果。
进一步地,上述方法可以包括如下步骤:
S3-511、主处理电路可以根据该正向运算结果与预设的目标运算结果,确定损失函数。具体地,主处理电路确定损失函数的步骤,与上述步骤S3-510的过程一致,具体可参见上文的描述,此处不再赘述。
S3-521、主处理电路判断该损失函数的值是否大于或等于目标精度。
若主处理电路确定损失函数的值小于目标精度,则表明该神经网络已经达到收敛状态,结束该神经网络的训练或重训练。
若主处理电路确定损失函数的值大于或等于目标精度,则执行步骤S3-522,主处理电路对损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的损失函数传送至各个从处理电路。各个从处理电路可以根据损失函数对神经网络进行反向运算,通过反向运算对该神经网络的权值数据进行更新,并根据更新后的权值数据对该神经网络进行进一步地的训练或重训练。具体地,上述步骤S3-400可以包括:
S3-411、各个从处理电路分别对接收到的处于压缩状态的损失函数进行解压缩,并根据解压缩后的损失函数对神经网络进行反向运算得到第二中间结果,将第二中间结果进行有损压缩编码后传送至主处理电路。
具体地,各个从处理电路可以分别对接收到的损失函数进行解压缩,并根据解压缩后的损失函数对神经网络进行反向运算得到第二中间结果,其中,该第二中间结果可以是各个从处理电路反向运算获得的梯度值。进一步地,各个从处理电路可以对该其计算获得的梯度值进行有损压缩编码,并将有损压缩编码后的梯度值传送至主处理电路。本申请实施例中,通过各个从处理电路对第二中间结果进行有损压缩,并将有损压缩后的第二中间结果传送至主处理电路,可以减少处理器的片上访存开销,进一步提高处理器的性能。
S3-412、主处理电路对各个从处理电路传送的第二中间结果进行解压缩,并根据解压缩后的第二中间结果获得梯度值。
具体地,主处理电路可以对各个从处理电路传送的第二中间结果进行解压缩,并对解压缩后的各个第二中间结果进行排序,获得该神经网络的梯度值。可选地,该神经网络的梯度值可以是神经网络的各个层的梯度值的集合。
S3-421、主处理电路根据梯度值更新神经网络的权值数据,获得更新后的第二输入数据,之后,返回步骤S3-311,主处理电路将第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路的步骤。
具体地,上述步骤S3-421中,主处理电路根据梯度值更新神经网络的权值数据的步骤,与上述步骤S3-420的具体实现过程一致,具体可参见上文中的描述。
可选地,在上述步骤S3-100之前,上述方法还包括如下步骤:
获取神经网络的第三输入数据,该第三输入数据包括神经元数据和权值数据,该第三输入数据为未经有损压缩的数据;
对该第三输入数据进行有损压缩编码,获得第一输入数据。
进一步地,对该第三输入数据进行有损压缩编码,获得第一输入数据的步骤,还可以包括:
根据预设的目标精度获得目标压缩率;
根据目标压缩率,对神经网络的第三输入数据进行有损压缩编码,获得处于压缩状态的第一输入数据。
可选地,处理器可以根据其接收到的第三输入数据,对该原始数据进行有损压缩编码,从而通过有损压缩降低数据量。具体地,处理器可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,处理器可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率,并根据该目标压缩率对其接收到的第三输入数据进行有损压缩编码。
可选地,可以通过其中一个处理器对其第三输入数据进行有损压缩编码,并将有损压缩编码后的第一输入数据传送至另一处理器上进行运算等操作。例如,第一处理器可以根 据预设的目标精度确定目标压缩率,将第三输入数据进行有损压缩编码,并将有损压缩编码后的第一输入数据传送至第二处理器,该第二处理器可以是终端或云端服务器上的处理器,此处不做具体限定。第二处理器可以获得该第一输入数据的压缩率,并根据该第一输入数据的压缩率对该第一输入数据进行解压缩,从而获得第二输入数据。进一步地,该第二处理器可以根据第二输入数据对神经网络进行训练或重训练,直至神经网络的正向运算结果满足预设需求。
进一步地,当处理器的运算电路存在两个以上的处理电路时,该主处理电路可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对第二输入数据及损失函数等进行有损压缩编码。相应地,主处理电路还可以根据该目标压缩率对其接收的第一中间结果和第二中间结果等进行解压缩。可选地,各个从处理电路可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对第一中间结果和第二中间结果等数据进行有损压缩编码。相应地,各个从处理电路还可以根据该目标压缩率对其接收的输入数据及损失函数等进行解压缩。可选地,该预设的目标精度与目标压缩率之间的预设对应关系。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,主处理电路或从处理电路等可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。
可选地,上述任一实施例中采用的有损压缩编码可以包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。应当清楚的是,此处仅用以举例说明,并不构成对本申请的实质性限定,其他能够实现相同功能的有损压缩方式同样适用于本申请。
在一个实施例中,如图34所示,一种数据处理装置,所述装置包括:
获取模块,获取所述神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压模块,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
训练模块,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行重训练或训练,直至所述正向运算结果满足预设需求。
关于数据处理装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一实施例所述的方法的步骤。具体地,当该计算机程序被处理器执行时,可以实现如下步骤:
获取所述神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
根据所述第二输入数据进行正向运算,获得正向运算结果;
若所述正向运算结果不满足预设需求,则对所述神经网络进行重训练或训练,直至所述正向运算结果满足预设需求。
4、数据处理方法、计算机系统及存储介质
本实施例提供了一种数据处理方法,可以应用于如图29所示的处理器或图35所示的计算机系统中。其中,图35所示的计算机系统包括第一处理器4-100和第二处理器4-200,该第一处理器4-100和第二处理器4-200均可以采用图29所示的处理器的结构。第一处理器4-100连接第二处理器4-200,第一处理器4-100与第二处理器4-200能够进行数据通信。其中,第一处理器4-100可以设置在终端上,该终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,第二处理器4-200可以设置于服务器上,如本地服务器或云端服务器等,进一步地,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现,此处不做具体限定。
可选地,该第一处理器4-100和第二处理器4-200均可以包括运算电路。如图35所示,当该数据处理方法单独应用于第一处理器时,上述运算电路可以是第一处理器4-100中的第一运算电路4-110,当该数据处理方法单独应用于第二处理器时,上述运算电路可以是第二处理器4-200的第二运算电路4-210。该第一运算电路4-110或第二运算电路4-210能够根据运算指令和神经网络的输入数据(其中,输入数据包括输入神经元数据和权值数据等等)实现神经网络的相关运算。例如,该运算电路可以根据正向运算指令和/或反向运算指令实现神经网络的正向运算和反向运算,从而实现对神经网络的训练或重训练。当然,在其他实施例中,该运算电路还可以实现卷积运算指令等其他神经网络运算指令等,此处不做具体限定。
具体地,第一运算电路4-110或第二运算电路4-210可以用于根据输入数据对神经网络进行正向运算,获得正向运算结果。具体地,上述运算电路可以用于根据该神经网络的输入神经元数据和权值数据,进行一系列的线性运算和激活运算,从输入层开始,一层层的向后计算,直至完成输出层的运算,得到输出结果,该输出层的输出结果即为正向运算结果。进一步地,该运算电路可以根据正向运算结果与预设的目标运算结果,计算损失函数。其中,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。
更进一步地,第一运算电路4-110或第二运算电路4-210可以确定损失函数的值是否大于或等于预设的目标精度,并在损失函数的值大于或等于目标精度时,根据损失函数对神经网络进行反向运算,获得梯度值。具体地,该梯度值可以是神经网络的各层对应的梯度值的集合。运算电路可以用于计算损失函数对各个权值数据的偏导数,获得各层的梯度值。
再进一步地,第一运算电路4-110或第二运算电路4-210可以用于根据梯度值更新神 经网络的权值数据,获得更新后的权值数据。具体地,第一运算电路4-110或第二运算电路4-210可以用于根据梯度下降算法(如随机梯度下降算法或批量梯度下降算法)实现权值数据的更新,具体地,第一运算电路4-110或第二运算电路4-210可以根据上述的梯度值和预设的学习率(该学习率可以是预设的固定值,也可以是随机递减的)计算获得浮动值,并根据该神经网络更新前的权值和该浮动值计算获得更新后的权值数据。例如,该更新后的权值数据可以等于更新前的权值数据减去上述的浮动值。当然,在其他实施例中,该权值数据的更新过程还可以采用其他能够实现相似功能的算法,此处仅以举例说明,并不用于限定本申请的范围。之后,第一运算电路4-110或第二运算电路4-210可以返回根据输入数据对神经网络进行正向运算,获得正向运算结果的步骤,直至正向运算结果满足预设需求。当该正向运算结果满足预设需求时,则表明完成该神经网络的训练或重训练。
可选地,当处理器根据正向运算结果确定的损失函数的值大于或等于预设的目标精度时,则处理器可以确定该正向运算结果不满足预设需求。当处理器根据正向运算结果确定的损失函数的值小于预设的目标精度时,则处理器可以确定该正向运算结果满足预设需求。可选地,该预设的目标精度可以根据运算类型及精度或先验知识等获得,且该预设的目标精度可以预先存储于处理器中。
可选地,该神经网络可以是未经训练的神经网络,其对应的权值数据可以是随机数,这样,通过运算电路对该神经网络进行正向运算和/或反向运算,使得该神经网络的正向运算结果在预设的范围内,从而实现对该神经网路的训练。可选地,该神经网络还可以是具有一定精度的神经网络,即该神经网络为处于收敛状态的神经网络,该处于收敛状态的神经网络的权值数据为一组确定数值。这样,通过运算电路对该神经网络进行正向运算和/或反向运算,使得该神经网络的精度在预设的范围内,从而实现对神经网络的重训练,使得重训练后获得的神经网络满足当前应用场景的需求。其中,该重训练后获得的损失函数的值一般小于该重训练前的损失函数的值。可选地,系统可以预先设置该神经网络的目标精度,并根据该目标精度确定上述预设的范围。
可选地,如图29所示,每个处理器上均可以设置有解压电路和压缩电路,该压缩电路和解压电路均连接至该处理器上的运算电路,其中,压缩电路可以用于对处理器的输入数据和/或输出数据进行有损压缩编码,解压电路用于对处理器获得的处于压缩状态的数据进行解压缩。例如,处理器上的压缩电路可以对其接收到的输入数据进行有损压缩编码,以降低数据量,之后,解压电路可以对该处于压缩状态的数据进行解压缩,运算电路可以根据该解压缩后的数据进行正向运算和/或反向运算。进一步地,该处理器上的压缩电路可以根据神经网络的精度确定数据的目标压缩率,并根据该目标压缩率对处理器的输出数据进行有损压缩编码。
可选地,压缩电路可以对其接收到的第三输入数据进行有损压缩编码,获得第一输入数据,该第三输入数据可以是神经网络的未经有损压缩编码的输入数据。之后,解压电路可以对该处于压缩状态的第一输入数据进行解压缩,获得第二输入数据,运算电路可以根据该第二输入数据进行有损压缩编码。进一步地,压缩电路还可以对运算电路获得的正向 运算结果进行有损压缩编码,解压电路还可以对该有损压缩编码后的正向运算电路进行解压缩,之后,运算电路根据该解压缩后的正向运算结果计算损失函数,并根据该损失函数进行反向运算,获得梯度值。
更进一步地,压缩电路可以对上述的梯度值进行有损压缩编码,解压电路可以对有损压缩后的梯度值进行解压缩,运算电路可以根据解压缩后的梯度值更新权值数据。又进一步地,压缩电路还可以对更新后的权值数据进行有损压缩编码,解压电路可以对有损压缩后的权值数据进行解压缩,之后运算电路可以根据该解压缩的权值数据获得更新的第二输入数据,并根据该第二输入进行正向运算,循环往复,直至运算电路确定损失函数的值小于预设的目标精度。
可选地,压缩电路可以根据预设的目标精度确定目标压缩率,并根据目标压缩率对各个输入数据、正向运算结果、梯度值及权值数据等数据进行有损压缩。同理,解压电路可以根据上述的目标压缩率对其接收的各种处于压缩状态的数据进行解压缩。
可选地,如图35所示,该处理器可以是第一处理器4-100或第二处理器4-200。该第一处理器4-100上均可以设置有第一压缩电路4-120和第一解压电路4-140,第一压缩电路4-120和第一解压电路4-140均连接至第一运算电路4-110。该第二处理器4-200上可以设置有第二压缩电路4-220和第二解压电路4-240,第二压缩电路4-220和第二解压电路4-240均可以连接至第二运算电路4-210。此时,当前处理器接收到的输入数据可以是与其连接的其他处理器经有损压缩编码后的、处于压缩状态的数据。
例如,当第一处理器4-100需要向第二处理器4-200传送数据时,如神经网络的输入数据,第一处理器4-100可以首先通过其上设置的第一压缩电路4-120对该数据进行有损压缩编码,并将有损压缩编码后的数据传送至第二处理器4-200。第二处理器4-200可以通过其上设置的第二解压电路4-240对该有损编码后的数据进行解压缩,之后第二运算电路4-210能够根据解压缩后获得的数据进行相应的运算。同理,当第二处理器4-200需要向和第一处理器4-100传送数据时,第二处理器4-200可以首先通过其上设置的第二压缩电路4-220对该数据进行有损压缩编码,并将有损压缩编码后的数据传送至第一处理器4-100。第一处理器4-100可以通过其上设置的第一解压电路4-140对该有损编码后的数据进行解压缩,之后,第一运算电路4-110能够根据解压缩后获得的数据进行相应的运算。
本申请实施例中,通过有损压缩编码的方式对数据进行压缩,可以提高数据的压缩率,降低访存数据占用的带宽,从而降低处理器之间的访存开销,提高处理器的数据访存速度及效率,进而提升处理器的处理效率。可选地,该有损压缩编码可以包括预测编码(如点线性预测等)、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合等等,此处仅用于举例说明,并不用于限定本申请的范围。事实上,其他可以实现相似功能的有损压缩编码方式同样适用于本申请的数据处理方法。应当清楚的是,有损压缩是指通过减少数据量来提高压缩率的压缩方法,其在压缩过程中会损失一定的信息,解压缩后的数据与原始数据不同但非常接近。
传统技术中,一般是通过对神经网络进行剪枝及稀疏处理,之后再通过哈夫曼编码 (Huffman Coding)实现对神经网络的压缩。本领域技术人员可以理解的是,哈夫曼编码属于无损压缩的方式。可见,传统技术中是通过稀疏算法来减少数据量,并结合无损压缩的方式实现数据的压缩。相较于传统技术,本申请实施例中采用的有损压缩编码的方式减少了处理器的数据运算量,提高了压缩效率。
可选地,各个处理器上的运算电路可以采用图36-37所示的运算电路4-300。具体地,上述第一运算电路4-110或第二运算电路4-210均可以采用图36-37所示的运算电路4-300。该运算电路4-300可以包括至少两个处理电路,该至少两个处理电路可以分别标记为主处理电路4-310和至少一个从处理电路4-320,其中,至少一个从处理电路4-320均连接至主处理电路4-310。主处理电路4-310用于对输入数据以及主处理电路4-310与所述多个从处理电路4-320之间的传输数据及运算指令进行前序处理,各个从处理电路4-320分别用于依据主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主处理电路4-310。主处理电路4-310还用于对多个中间结果执行后续处理得到运算指令的计算结果,该计算结果可以具体为神经网络运算的输出神经元数据等。本申请实施例中,上述运算指令可以是正向运算指令和/或反向运算指令。
进一步地,主处理电路4-310上可以设置有第三压缩电路4-311和第三解压电路4-312,各个从处理电路4-320上可以设置有第四压缩电路4-321和第四解压电路4-322。本申请实施例中,通过在主处理电路和从处理电路相应的设置解压电路和压缩电路,可以实现运算过程中的梯度数据、权值数据等中间计算结果的压缩和解压缩,降低各个处理电路之间传输数据的数据量大小,减少各个处理电路之间的访存开销,从而进一步提高处理器的性能。
可选地,在神经网络训练或重训练的过程中,第一运算电路4-110或第二运算电路4-210可以首先执行正向运算。具体地,主处理电路4-310上的第三压缩电路4-311用于将第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路上的第四解压电路4-322;各个第四解压电路4-322分别用于对接收到的处于压缩状态的权值数据进行解压缩,之后各个从处理电路4-320分别用于根据解压缩后的权值数据进行正向运算得到第一中间结果,第四压缩电路4-321用于分别对相应的第一中间结果进行有损压缩编码。第三解压电路4-312用于对各个从处理电路4-320传送的第一中间结果进行解压缩,主处理电路4-310用于根据解压缩后的第一中间结果获得正向运算结果。其中,第一中间结果可以是各个从处理电路对应的正向运算的正向运算结果。该正向运算的过程具体可参见上文中的描述。
进一步地,主处理电路4-310还可以用于根据该正向运算结果和预设的目标运算结果,计算获得损失函数。其中,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。例如,该损失函数可以是正向运算结果与预设的目标运算结果的均方差函数,该损失函数的值可以是正向运算结果与预设的目标运算结果的均方差的绝对值。可选地,主处理电路可以将该正向运算结果与预设的训练数据集及进行正向运算,获得收敛结果,并根据该收敛结果与预设的目标运算结果确定损失函数。其中,损失函数可以是收敛结果与预设的目标运算结果的均方差函数、交叉熵函数或其他 自定义的损失函数。例如,损失函数可以是收敛结果与预设的目标运算结果的均方差函数,主处理电路4-310可以将该收敛结果与预设的目标运算结果的均方差作为损失函数的值,或者,将该收敛结果与预设的目标运算结果的均方差的绝对值作为损失函数的值。
主处理电路4-310还可以进一步确定该损失函数的值是否小于预设的目标精度,若损失函数的值小于预设的目标精度,则说明完成该神经网络的训练或重训练。进一步地,主处理电路的第三压缩电路4-311可以对该神经网络的训练或重训练的结果进行有损压缩编码,并将有损压缩编码后的该神经网络的训练或重训练的结果传送至第一处理器4-100或第二处理器4-200外部。
若主处理电路4-310确定损失函数的值大于或等于预设的目标精度,则主处理电路的第三压缩电路4-311可以对该损失函数进行有损压缩编码,并将有损压缩后的损失函数发送至各个从处理电路4-320,各个从处理电路的第四解压电路4-322可以对其接收到的损失函数进行解压缩,之后,各个从处理电路4-320可以根据解压缩后获得的损失函数执行反向运算。具体地,主处理电路4-310在确定损失函数大于或等于目标精度时,第三压缩电路4-311对损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的损失函数传送至各个第四解压电路4-322;各个第四解压电路4-322分别用于对接收到的处于压缩状态的损失函数进行解压缩;各个从处理电路4-320分别用于根据解压缩后的损失函数对神经网络进行反向运算得到第二中间结果;各个第四压缩电路4-321分别用于将第二中间结果进行有损压缩编码后传送至第三解压电路4-312;第三解压电路4-312用于对各个从处理电路传送的第二中间结果进行解压缩;主处理电路4-310还用于根据解压缩后的第二中间结果获得梯度值。其中,第二中间结果可以是各个从处理电路执行反向运算获得梯度值。该反向运算的具体执行过程可参见上文的描述。
更进一步地,主处理电路4-310可以根据上述的梯度值更新神经网络的权值数据,之后,主处理电路的第三压缩电路4-311可以对该更新后的第二输入数据进行有损压缩编码,并将该更新后的第二输入数据传送至各个从处理电路的第四解压电路4-322,各个从处理电路4-320可以对更新后的第二输入数据进行解压缩,并根据更新后的第二输入数据重复执行上述正向运算和反向运算,直至该损失函数的值小于预设的目标精度。
可选地,各个处理器上与运算电路连接的压缩电路(第一压缩电路4-120、第二压缩电路4-220)以及各运算电路内部设置的第三压缩电路4-311和第四压缩电路4-321均包括第一压缩率确定模块4-410和至少一个压缩模块4-420,各个压缩模块4-420并联设置,各个压缩模块4-420均连接至第一压缩率确定模块4-410。各个压缩模块4-420分别用于按照不同的压缩率进行有损压缩编码,第一压缩率确定模块4-410用于根据预设的目标精度确定目标压缩率,并根据目标压缩率从至少一个压缩模块4-420中选定目标压缩模块4-420;该目标压缩模块4-420的压缩率可以等于目标压缩率。
可选地,第一压缩率确定模块4-410可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射 表,此时,第一处理器4-100可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。本申请实施例中,通过设置不同压缩率的压缩模块4-420,可以根据神经网络的不同精度调整压缩率,从而可以在满足精度需求的情况下,提高压缩率。
可选地,各个处理器上设置的与运算电路连接的解压电路(第一解压电路4-140、第二解压电路4-240)以及各个运算电路内部设置的第三解压电路4-312和第四解压电路4-322均可以包括第二压缩率确定模块4-510以及至少一个解压模块4-520,至少一个解压模块4-520并联设置,各个解压模块4-520均连接至第二压缩率确定模块4-510。各个解压模块4-520分别用于解压不同压缩率的数据,第二压缩率确定模块4-510用于根据目标压缩率从至少一个解压模块4-520中选定目标解压模块4-520。本申请实施例中,通过设置不同的解压模块4-520,可以根据不同的压缩率选通不同的硬件解压模块4-520,保证解压后数据的可靠性,从而可以保证运算的可靠性和准确性。
可选地,如图29所示,各个处理器还可以包括读写电路。如图35所示,该第一处理器4-100可以包括第一读写电路4-130,该第二处理器4-200可以包括第二读写电路4-230。该第一读写电路4-130或第二读写电路4-230用于获取神经网络的第一输入数据以及其他数据。本申请实施例中,该读写电路可以是I/O电路。进一步地,该第一处理器4-100或第二存储器还可以包括片上存储电路,该片上存储电路可以包括缓存和寄存器等,此处不做具体限定。
作为进一步地改进,各个处理器(如第一处理器4-100或第二处理器4-200)上还可以设置有用于实现无损压缩的第五压缩电路。该第五压缩电路可以与该运算电路连接,该第五压缩电路也可以设置在主处理电路和各个从处理电路上。相应地,该第一处理器4-100或第二处理器4-200的解压电路还可以设置有用于实现无损解压缩的第五解压电路,该第五解压电路可以与上述的运算电路连接,该第五解压电路也可以设置在主处理电路和各个从处理电路上。进一步地,该第一处理器4-100或第二处理器4-200上还可以包括压缩选择电路,用于根据运算指令选定有损压缩的方式实现数据压缩,或根据运算指令选定无损压缩的方式实现数据压缩。
在一个实施例中,第一处理器4-100可以设置在终端上,第二处理器4-200可以设置在云端服务器上,通过终端和云端服务器交互协同的方式实现对神经网络的训练或重训练。例如,终端的第一处理器4-100可以获得一具有一定精度的神经网络,该神经网络处于收敛状态,并判断该神经网络的正向运算结果是否满足该终端的预设需求,当该神经网络的正向运算结果不满足终端的预设需求时,终端的第一处理器4-100可以对该神经网络进行有损压缩编码,并将有损压缩编码后的神经网络发送至云端服务器进行重训练。云端服务器的第二处理器4-200可以根据该有损压缩编码后的神经网络进行重训练,并对重训练好的神经网络进行有损压缩编码,并将该重训练后的神经网络数据(可以包括输入神经元数据和权值数据)回传给终端。从而使得重训练后的神经网络能够满足终端的预设需求,以便终端能够应用该重训练好的神经网络实现相应的运算。
当然,该终端的第一处理器4-100也可以获得一未经训练的神经网络,该未经训练的 神经网络的权值数据可以是随机数。此时,终端可以对该神经网络进行有损压缩编码,并将有损压缩编码后的神经网络发送至云端服务器进行训练。最后,云端服务器可以根据有损压缩编码后的神经网络进行训练,并对训练好的神经网络进行有损压缩编码,并将该训练后的神经网络回传给终端。从而使得训练后的神经网络能够满足终端的需求,以便终端能够应用该训练好的神经网络实现相应的运算。
本申请实施例中,通过终端与云端服务器协同的方式,并在云端服务器实现对神经网络的训练或重训练过程,可以降低终端的运算量。同时,终端和云端服务器之间的传送的数据均为有损压缩编码后获得数据,从而可以减少数据的访存开销,提高该计算机系统的性能。
具体地,第一处理器4-100可以用于根据获取的神经网络的输入数据进行正向运算,获得正向运算结果,并在神经网络的正向运算结果不满足预设需求时,对输入数据进行有损压缩编码,并将有损压缩编码后的输入数据传送至第二处理器。其中,该神经网络的输入数据可以是该神经网络的原始输入数据,也可以是是有损压缩编码后处于压缩状态后的第一输入数据,也可以是有损压缩编码后处于解压状态的第二输入数据,上述的神经网络的输入数据可以包括神经元数据和权值数据。当第一处理器接收到的输入数据为上述第一输入数据时,第一处理器4-100的第一解压电路4-140可以首先对该数据进行解压缩,获得第二输入数据,之后,第一运算电路4-110再根据解压缩状态的第二输入数据进行运算。
具体地,第一运算电路4-110用于根据输入数据进行正向运算,获得第一正向运算结果,根据第一正向运算结果与预设的目标运算结果,获得第一损失函数。若第一运算电路4-110确定第一损失函数的值小于预设的目标精度,则确定神经网络的正向运算结果满足终端的预设需求。若第一运算电路4-110确定第一损失函数的值大于或等于预设的目标精度,则确定神经网络的正向运算结果不满足终端的预设需求。
可选地,当第一运算电路4-110确定正向运算结果不满足终端的预设需求时,与第一运算电路4-110连接的第一压缩电路4-120可以用于对输入数据进行有损压缩编码,并将该处于压缩状态的输入数据传送至云端服务器。具体地,第一压缩电路4-120可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,第一处理器可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。本申请实施例中,通过神经网络的目标精度确定目标压缩率,可以在确保精度的前提下,尽可能的提高压缩率,以减小数据访存带来的带宽开销。
该云端服务器可以对第二处理器4-200可以对其接收到的输入数据进行解压缩,并根据解压后的输入数据对神经网络进行训练或重训练,直至该神经网络的第二正向运算结果满足终端的预设需求。具体地,第二解压电路4-240可以用于对第一处理器传送的输入数据进行解压缩,获得有损压缩后的该神经网络的输入神经元数据及权值数据。第二运算电路4-210可以用于根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果, 并根据该第二正向运算结果和预设的目标运算结果确定第二损失函数。若第二损失函数的值大于或等于预设的目标精度,则第二运算电路4-210用于根据第二损失函数进行反向运算,获得梯度值,并根据梯度值更新权值数据,获得更新后的权值数据。之后,第二运算电路4-210继续用于根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果,直至第二正向运算结果满足终端的预设需求。可选地,该正向运算和反向运算的具体过程可参见上文的描述。
可选地,当第一运算电路4-110确定正向运算结果不满足终端的预设需求时,与第一运算电路4-110连接的第一压缩电路4-120可以用于对第二输入数据及第一损失函数进行有损压缩编码,获得交互数据;第一读写电路4-130可以用于将交互数据传送至第二处理器4-200。其中,该交互数据可以包括神经网络的输入神经元数据、权值数据及损失函数等中间结果数据。即当该神经网络的正向运算结果不满足终端的预设需求时,此时需要将该神经网络发送至云端服务器进行训练或重训练。本申请实施例中,通过对终端和云端服务器之间的交互数据进行有损压缩编码,能够减小数据访存的开销。
可选地,第一处理器4-100的第一压缩电路4-120可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对上述交互数据进行有损压缩。具体地,第一压缩电路4-120可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,第一处理器可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。本申请实施例中,通过神经网络的目标精度确定目标压缩率,可以在确保精度的前提下,尽可能的提高压缩率,以减小数据访存带来的带宽开销。
进一步地,该云端服务器的第二处理器4-200可以对其接收的交互数据进行解压缩,并根据该交互数据对神经网络进行训练或重训练,直至该神经网络的第二正向运算结果满足终端的预设需求。具体地,第二解压电路4-240可以用于对第一处理器传送的交互数据进行解压缩,获得有损压缩后的该神经网络的输入神经元数据、权值数据及第一损失函数等中间结果数据。第二运算电路4-210可以用于根据解压缩后获得的第一损失函数的值对神经网络进行反向运算,获得梯度值,根据梯度值更新输入数据中的权值数据,获得更新后的权值数据,根据更新后的权值数据对神经网络进行正向运算,获得第二正向运算结果;根据第二正向运算结果和预设的目标运算结果,获得第二损失函数;在第二损失函数的值大于或等于预设的目标精度时,根据第二损失函数的值对神经网络进行反向运算,获得梯度值,之后返回第二处理器根据梯度值更新输入数据的权值数据,获得更新后的权值数据的步骤,直至第二损失函数的值小于预设的目标精度。
可选地,第二处理器上的第二压缩电路还可以对上述训练或重训练过程中的第二正向运算结果、梯度值及权值数据等进行有损压缩编码。第二处理器上的第二解压电路还可以对上述有损压缩编码后的数据进行解压缩。例如,第二压缩电路可以对第二正向运算结果进行有损压缩编码,第二解压电路可以对上述有损压缩后的第二正向运算结果进行解压 缩,第二运算电路可以根据解压缩的第二正向运算结果确定第二损失函数。再如,第二压缩电路可以对梯度值进行有损压缩编码,第二解压电路可以对上述有损压缩后的梯度值进行解压缩,并根据解压缩后的梯度值获得更新后的权值数据。又如,第二压缩电路可以对权值数据进行有损压缩编码,第二解压电路可以对上述有损压缩后的权值数据进行解压缩,之后,第二运算电路4-210继续用于根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果,直至第二正向运算结果满足终端的预设需求。本申请实施例中的第二压缩电路和第二解压电路的工作原理与上述实施例的压缩电路和解压电路的工作原理基本一致,具体可参见上文中的描述。
在一个实施例中,该第二处理器4-200的运算电路210可以采用如图37-38所示的运算电路4-300,该运算电路的主处理电路4-310上设置有第三压缩电路4-311和第三解压电路4-312,从处理电路4-320上设置有第四压缩电路4-321和第四解压电路4-322,具体结构可参见上文的描述。
当该云端服务器的第二处理器4-200对该神经网络进行训练或重训练时,第三压缩电路4-311可以用于对输入数据中的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个第四解压电路4-322,其中,本申请实施例中的权值数据可以是输入数据中包含的原始权值数据,也可以是根据第一处理器获得的第一损失函数更新后的权值数据。当该权值数据为根据第一损失函数更新后的权值数据时,上述对权值数据进行有损压缩编码之前,主处理电路4-310的第三压缩电路4-311可以用于对解压缩后获得的第一损失函数进行有损压缩编码,并将有损压缩后的第一损失函数传送至各个从处理电路的第四解压电路4-322。各个从处理电路4-320可以根据第一损失函数的值对神经网络进行反向运算,获得梯度值。进一步地,各个从处理电路4-320的第四压缩电路可以将该梯度值进行有损压缩编码,并将该有损压缩编码后的梯度值传送至主处理电路4-310。主处理电路4-310的第三解压电路4-312可以对各个从处理电路4-320传送的梯度值进行解压缩,之后主处理电路4-310可以根据各个从处理电路传送的梯度值确定该神经网络的各层的梯度值,并根据该神经网络的各层的梯度值更新第二输入数据中的权值数据,获得更新后的权值数据。
当第三压缩电路4-311将处于压缩状态的权值数据传送至各个第四解压电路4-322之后,各个第四解压电路4-322分别对接收到的处于压缩状态的权值数据进行解压缩;各个从处理电路4-320用于根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果;各个第四压缩电路4-321用于将第一中间结果进行有损压缩编码后传送至第三解压电路4-312;第三解压电路4-312用于对各个从处理电路传送的第一中间结果进行解压缩,主处理电路4-310用于根据解压缩后的第一中间结果获得第二正向运算结果。
第三压缩电路4-311还用于在第二损失函数的值大于或等于目标精度时,对第二损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的第二损失函数传送至各个第四解压电路4-322。各个第四解压电路4-322分别对接收到的处于压缩状态的第二损失函数进行解压缩,各个从处理电路4-320用于根据解压缩后的第二损失函数对神经网络 进行反向运算得到第二中间结果。各个第四压缩电路322用于将第二中间结果进行有损压缩编码后传送至第三解压电路4-312。第三解压电路4-312还用于对各个从处理电路4-320传送的第二中间结果进行解压缩,主处理电路4-310还用于根据解压缩后的第二中间结果获得梯度值,之后主处理电路可以根据该神经网络的各层的梯度值更新第二输入数据中的权值数据,获得更新后的权值数据。之后,第三压缩电路4-311可以用于对输入数据中的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个第四解压电路4-322,循环重复执行上述步骤,直至神经网络的第二正向运算结果满足终端的预设需求。
本申请实施例中,云端服务器的第二处理器4-200对神经网络的训练或重训练的过程与上述处理器对神经网络的训练或重训练过程基本一致,具体过程可参见上文的描述,此处不再赘述。
可选地,云端服务器的第二处理器4-200在确定神经网络的第二正向运算结果满足终端的预设需求时,可以确定该神经网络已经训练或重训练完毕,此时,第二处理器4-200可以对神经网络进行有损压缩编码,并将有损压缩编码后的神经网络传送至第一处理器。本申请实施例中,对神经网络进行有损压缩编码,可以是对训练或重训练完毕的神经网络的权值数据进行有损压缩编码的过程。
可选地,该终端的第一处理器的运算电路4-110也可以采用如图36-37所示的运算电路4-300。此时,当终端的第一处理器4-100根据输入数据进行正向运算时,第三压缩电路4-311可以用于对输入数据中的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个第四解压电路4-322,各个第四解压电路4-322分别对接收到的处于压缩状态的权值数据进行解压缩;各个从处理电路4-320用于根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果;各个第四压缩电路4-321用于将第一中间结果进行有损压缩编码后传送至第三解压电路4-312;第三解压电路4-312用于对各个从处理电路传送的第一中间结果进行解压缩,主处理电路4-310用于根据解压缩后的第一中间结果获得第一正向运算结果。进一步地,该第一运算电路的主处理电路可以根据该第一正向运算结果确定第一损失函数,并确定该第一损失函数的值是否满足终端的预设需求。
如图38所示,本申请提供了一种数据处理方法,该数据处理方法可以应用于上述的第一处理器或第二处理器中,通过对数据进行有损压缩编码,从而减少数据量,降低访存的开销,提高处理器的性能。具体地,上述方法包括如下步骤:
S4-100、获取神经网络的第一输入数据,其中,第一输入数据为有损压缩编码后获得的处于压缩状态的数据。
具体地,第一运算电路4-110或第二运算电路4-210可以获取处于压缩状态的、经过有损压缩编码获得的第一输入数据,该第一输入数据包括神经网络的输入神经元数据和权值数据。可选地,该神经网络可以是处于收敛状态的神经网络,该神经网络也可以是未经训练的神经网络,该未经训练的神经网络的权值可以为随机数。
可选地,第一处理器4-100或第二处理器4-200可以通过直接读取处于经过有损压缩编码获得的第一输入数据,可以减少数据的数据量,从而减少数据访存的开销。可选地, 第一处理器4-100或第二处理器4-200还可以获得未经压缩的原始输入数据,该原始输入数据的信息量大于上述的第一输入数据的信息量。进一步地,该第一处理器4-100或第二处理器4-200可以对上述原始输入数据进行有损压缩编码,获得上述的第一输入数据。
S4-200、对第一输入数据进行解压缩,获得神经网络的第二输入数据;
具体地,第一运算电路4-110或第二运算电路4-210可以对其获取的第一输入数据进行解压缩,获得神经网络的第二输入数据。其中,该第二输入数据为处于解压状态的数据,该第二输入数据也包括输入神经元数据和权值数据。可选地,该第二输入数据与压缩前的第一输入数据不同但非常接近,该第二输入数据所包含的信息量小于压缩前的第一输入数据所包含的信息量。
S4-300、根据第二输入数据进行正向运算,获得正向运算结果;
具体地,第一运算电路4-110或第二运算电路4-210可以根据该神经网络的输入神经元数据和权值数据,进行一系列的线性运算和激活运算,从输入层开始,一层层的向后计算,直至完成输出层的运算,得到输出结果,该输出层的输出结果即为正向运算结果。可选地,对于多层神经网络,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将处理器中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值,直至完成输出层的运算。
S4-400、若该正向运算结果不满足预设需求,则对神经网络进行训练或重训练,直至该正向运算结果满足预设需求。
具体地,若该正向运算结果不满足预设需求,第一运算电路4-110或第二运算电路4-210可以根据该处于解压状态的第二输入数据对神经网络进行训练或重训练,直至该神经网络的正向运算结果满足预设需求。可选地,该神经网络的训练过程或重训练过程可以通过对该神经网络执行正向运算和/或反向运算实现,该神经网络的训练过程或重训练过程具体可参见下文的描述。
本申请的数据处理方法,通过对神经网络的输入数据进行有损压缩编码,可以通过减小输入数据的数据量,降低神经网络处理过程中数据的访存开销,从而可以提高处理器的性能;进一步地,处理器可以根据对该第一输入数据进行解压缩,并根据解压缩后获得的第二输入数据对神经网络进行训练或重训练,使得该神经网络的正向运算结果满足预设需求,即可以通过对神经网络进行训练或重训练弥补有损压缩编码对精度的影响,从而可以保证运算的可靠性及准确性。
可选地,上述方法还可以包括如下步骤:
S4-500、判断正向运算结果是否满足预设需求;
若上述正向运算结果不满足预设需求,则执行上述步骤S4-400,对神经网络进行训练或重训练,直至该正向运算结果满足预设需求。若正向运算结果满足预设需求,则表明该神经网络训练或重训练完毕。进一步地,处理器可以根据对该训练或重训练完毕的神经网络进行有损压缩编码,并将该有损压缩编码后的神经网络传送至对应的终端,以便于终端 根据该神经网络进行相应的运算。可选地,处理器还可以直接应用该训练或重训练完毕的神经网络进行相应的运算。
可选地,上述步骤S4-500还可以包括如下步骤:
S4-510、根据正向运算结果与预设的目标运算结果,计算损失函数。
可选地,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。进一步地,第一运算电路4-110或第二运算电路4-210的运算电路可以确定该损失函数的值。例如,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数,第一运算电路4-110或第二运算电路4-210可以计算正向运算结果与预设的目标运算结果的均方差,并将该均方差的绝对值作为上述的损失函数的值。
可选地,在另一个实施例中,第一运算电路4-110或第二运算电路4-210还可以将上述获得的正向运算结果与预设的训练数据集进行正向运算,获得收敛结果,并根据该收敛结果与目标运算结果确定损失函数。其中,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。进一步地,第一运算电路4-110或第二运算电路4-210的运算电路可以确定该损失函数的值。例如,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数,第一运算电路4-110或第二运算电路4-210可以计算上述的收敛结果与目标运算结果之间的均方差,并将该均方差的绝对值作为损失函数的值。
S4-520、第一运算电路4-110或第二运算电路4-210判断损失函数的值是否大于或等于预设的目标精度;
若损失函数的值大于或等于目标精度,则确定正向运算结果不满足预设需求。若损失函数的值小于目标精度,则确定正向运算结果满足预设需求。
进一步地,上述步骤S4-510还可以包括如下步骤:
S4-501、对所述正向运算结果进行有损压缩编码后再对所述正向运算结果进行解压缩。
具体地,每当处理器执行完成一次正向运算,处理器上的压缩电路可以对该正向运算结果进行有损压缩编码,以降低数据量,从而可以进一步降低数据访存开销。之后,处理器上的解压电路可以对该有损压缩后的正向运算结果进行解压缩,以便处理器可以根据该解压缩后的数据执行相应的运算。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该正向运算结果进行有损压缩。
S4-502、根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。具体地,该计算损失函数的具体过程可参见上述步骤S4-510的描述。
可选地,当损失函数的值大于或等于目标精度时,即当正向运算结果不满足预设需求时,则对神经网络进行训练或重训练,即上述步骤S4-400可以包括如下步骤:
S4-410、根据损失函数对神经网络进行反向运算,获得梯度值。
具体地,第一运算电路4-110或第二运算电路4-210可以计算损失函数对各个权值数据的偏导数,获得各层的梯度值。在多层神经网络的反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下 一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
进一步地,上述步骤S4-410还可以包括:
对损失函数进行有损压缩编码后再对损失函数进行解压缩;具体地,每当处理器完成一次正向运算,处理器还可以对该正向运算获得的损失函数进行有损压缩编码,之后在对该有损压缩后的损失函数进行解压缩,以便根据解压缩后的损失函数进行相应的运算。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该损失函数进行有损压缩。
根据解压缩后的损失函数对神经网络进行反向运算,获得梯度值。具体地,该获得梯度值的过程可参见上述步骤S4-410中的描述。
S4-420、根据梯度值更新神经网络的权值数据,之后,返回步骤S4-300,根据第二输入数据进行正向运算,获得正向运算结果的步骤,重复执行上述步骤S4-300、步骤S4-500及步骤S4-400,直至损失函数的值小于预设的目标精度。
可选地,第一运算电路4-110或第二运算电路4-210可以根据梯度下降算法(如随机梯度下降算法或批量梯度下降算法)实现权值数据的更新,具体地,第一运算电路4-110或第二运算电路4-210可以根据上述的梯度值和预设的学习率(该学习率可以是预设的固定值,也可以是随机递减的)计算获得浮动值,并根据该神经网络更新前的权值和该浮动值计算获得更新后的权值数据。例如,该更新后的权值数据可以等于更新前的权值数据减去上述的浮动值。当然,在其他实施例中,该权值数据的更新过程还可以采用其他能够实现相似功能的算法,此处仅以举例说明,并不用于限定本申请的范围。
进一步地,上述步骤S4-420可以包括:
S4-401、对所述梯度值进行有损压缩编码后再对所述有损压缩编码后的梯度值进行解压缩;
具体地,每当处理器完成一次反向运算,处理器可以对反向运算获得的梯度值进行有损压缩编码,以降低数据量,进一步降低数据访存开销。之后,处理器可以对有损压缩后的梯度值进行解压缩,以便根据解压缩后的梯度值更新权值数据。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该梯度值进行有损压缩。
S4-402、根据所述解压缩后获得的梯度值更新所述权值数据。具体地,该更新权值的步骤与上述S4-420中的记载基本一致,具体可参见上文。
更进一步地,上述步骤S4-420还可以包括:
S4-403、对所述权值数据进行有损压缩编码后再对所述有损压缩编码后的权值数据进行解压缩;具体地,每当处理器完成一次权值数据的更新操作,处理器可以对更新后的权值数据进行有损压缩编码,以进一步降低数据量。之后,处理器可以对该有损压缩后的权值数据进行解压缩。之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该权值数据进行有损压缩。
若确定损失函数的值小于预设的目标精度,则表明该神经网络训练或重训练完毕。进一步地,处理器可以根据对该训练或重训练完毕的神经网络进行有损压缩编码,并将该有损压缩编码后的神经网络传送至对应的终端,以便于终端根据该神经网络进行相应的运算。可选地,处理器还可以直接应用该训练或重训练完毕的神经网络进行相应的运算。
在一个实施例中,上述第一运算电路4-110或第二运算电路4-210包含至少两个处理电路,至少两个处理电路包括主处理电路和从处理电路;上述方法可以包括:
S4-311、主处理电路对第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路。
具体地,主处理电路可以将输入神经元数据确定为广播数据,并将输入神经元数据广播给各个从处理电路。同时,主处理电路可以将权值数据确定为分发数据,并将分发数据分配成多个数据块,将至少一个数据块进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路。本申请实施例中,通过对权值数据进行有损压缩,并将有损压缩后的权值数据传送至各个从处理电路,可以减少处理器的片上访存开销,进一步提高处理器的性能。
S4-312、各个从处理电路分别对接收到的处于压缩状态的权值数据进行解压缩,并根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果,将第一中间结果进行有损压缩编码后传送至主处理电路。
具体地,各个从处理电路可以分别对接收到的处于压缩状态的权值数据进行解压缩,并根据解压缩后的权值数据和广播获得的输入神经元数据,对神经网络进行正向运算得到第一中间结果。其中,该第一中间结果可以是各个从处理电路对应的正向运算的正向运算结果,该正向运算结果可以是神经网络的输出神经元数据。进一步地,各个从处理电路可以对其对应的第一中间结果进行有损压缩编码,并将有损压缩编码后数据传送至主处理电路。本申请实施例中,通过各个从处理电路对第一中间结果进行有损压缩,并将有损压缩后的第一中间结果传送至主处理电路,可以减少处理器的片上访存开销,进一步提高处理器的性能。
S4-313、主处理电路对各个从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得正向运算结果。
具体地,主处理器电路可以对其接收的各个第一中间结果分别进行解压缩,并将各个第一中间结果进行排序得到综合运算结果,并对该综合运算结果执行偏置运算及激活运算得到正向运算结果。
进一步地,上述方法可以包括如下步骤:
S4-511、主处理电路可以根据该正向运算结果与预设的目标运算结果,确定损失函数。具体地,主处理电路确定损失函数的步骤,与上述步骤S4-510的过程一致,具体可参见上文的描述,此处不再赘述。
S4-521、主处理电路判断该损失函数的值是否大于或等于目标精度。
若主处理电路确定损失函数的值小于目标精度,则表明该神经网络已经达到收敛状 态,结束该神经网络的训练或重训练。
若主处理电路确定损失函数的值大于或等于目标精度,则执行步骤S4-522,主处理电路对损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的损失函数传送至各个从处理电路。各个从处理电路可以根据损失函数对神经网络进行反向运算,通过反向运算对该神经网络的权值数据进行更新,并根据更新后的权值数据对该神经网络进行进一步地的训练或重训练。具体地,上述步骤S4-400可以包括:
S4-411、各个从处理电路分别对接收到的处于压缩状态的损失函数进行解压缩,并根据解压缩后的损失函数对神经网络进行反向运算得到第二中间结果,将第二中间结果进行有损压缩编码后传送至主处理电路。
具体地,各个从处理电路可以分别对接收到的损失函数进行解压缩,并根据解压缩后的损失函数对神经网络进行反向运算得到第二中间结果,其中,该第二中间结果可以是各个从处理电路反向运算获得的梯度值。进一步地,各个从处理电路可以对该其计算获得的梯度值进行有损压缩编码,并将有损压缩编码后的梯度值传送至主处理电路。本申请实施例中,通过各个从处理电路对第二中间结果进行有损压缩,并将有损压缩后的第二中间结果传送至主处理电路,可以减少处理器的片上访存开销,进一步提高处理器的性能。
S4-412、主处理电路对各个从处理电路传送的第二中间结果进行解压缩,并根据解压缩后的第二中间结果获得梯度值。
具体地,主处理电路可以对各个从处理电路传送的第二中间结果进行解压缩,并对解压缩后的各个第二中间结果进行排序,获得该神经网络的梯度值。可选地,该神经网络的梯度值可以是神经网络的各个层的梯度值的集合。
S4-421、主处理电路根据梯度值更新神经网络的权值数据,获得更新后的第二输入数据,之后,返回步骤S4-311,主处理电路将第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路的步骤。
具体地,上述步骤S4-421中,主处理电路根据梯度值更新神经网络的权值数据的步骤,与上述步骤S4-420的具体实现过程一致,具体可参见上文中的描述。
可选地,在上述步骤S4-100之前,上述方法还包括如下步骤:
获取神经网络的原始输入数据,该原始输入数据包括神经元数据和权值数据,该原始输入数据为未经有损压缩的数据;
对该原始输入数据进行有损压缩编码,获得第一输入数据。进一步地,对该原始输入数据进行有损压缩编码,获得第一输入数据的步骤,还可以包括:
根据预设的目标精度获得目标压缩率;
根据目标压缩率,对神经网络的原始输入数据进行有损压缩编码,获得处于压缩状态的第一输入数据。
可选地,处理器可以根据其接收到的原始输入数据,对该原始数据进行有损压缩编码,从而通过有损压缩降低数据量。具体地,处理器可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是 预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,处理器可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率,并根据该目标压缩率对其接收到的原始输入数据进行有损压缩编码。
可选地,可以通过其中一个处理器对其原始输入数据进行有损压缩编码,并将有损压缩编码后的第一输入数据传送至另一处理器上进行运算等操作。例如,第一处理器可以根据预设的目标精度确定目标压缩率,将原始输入数据进行有损压缩编码,并将有损压缩编码后的第一输入数据传送至第二处理器,该第二处理器可以是终端或云端服务器上的处理器,此处不做具体限定。第二处理器可以获得该第一输入数据的压缩率,并根据该第一输入数据的压缩率对该第一输入数据进行解压缩,从而获得第二输入数据。进一步地,该第二处理器可以根据第二输入数据对神经网络进行训练或重训练,直至神经网络的正向运算结果满足预设需求。
进一步地,当处理器的运算电路存在两个以上的处理电路时,该主处理电路可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对第二输入数据及损失函数等进行有损压缩编码。相应地,主处理电路还可以根据该目标压缩率对其接收的第一中间结果和第二中间结果等进行解压缩。可选地,各个从处理电路可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对第一中间结果和第二中间结果等数据进行有损压缩编码。相应地,各个从处理电路还可以根据该目标压缩率对其接收的输入数据及损失函数等进行解压缩。可选地,该预设的目标精度与目标压缩率之间的预设对应关系。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,主处理电路或从处理电路等可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。
可选地,上述任一实施例中采用的有损压缩编码可以包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。应当清楚的是,此处仅用以举例说明,并不构成对本申请的实质性限定,其他能够实现相同功能的有损压缩方式同样适用于本申请。
在一个实施例中,一种数据处理装置,所述装置包括:
获取模块,获取所述神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压模块,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
训练模块,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行重训练或训练,直至所述正向运算结果满足预设需求。
关于数据处理装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,第一处理器4-100可以设置在终端上,第二处理器4-200可以设置在云端服务器上,通过终端和云端服务器交互协同的方式实现对神经网络的训练或重训练。例如,终端的第一处理器4-100可以获得一处于收敛状态的神经网络,并对该神经网络执行正向运算,判断该神经网络的第一正向运算结果是否满足该终端的需求,当该神经网络的第一正向运算结果不满足终端的预设需求时,终端的第一处理器4-100可以对该神经网络的输入数据进行有损压缩编码,并将有损压缩编码后的神经网络的输入数据发送至云端服务器,以对该神经网络进行重训练。云端服务器的第二处理器4-200可以根据该有损压缩编码后的输入数据对该神经网络进行重训练,并对重训练好的神经网络进行有损压缩编码,并将该重训练后的神经网络回传给终端。从而使得重训练后的神经网络的精度能够满足终端的需求,以便终端能够应用该重训练好的神经网络实现相应的运算。
当然,该终端的第一处理器4-100也可以获得一未经训练的神经网络,该未经训练的神经网络的权值数据可以是随机数。此时,终端可以对该神经网络的输入数据进行有损压缩编码,并将有损压缩编码后的神经网络的输入数据发送至云端服务器。最后,云端服务器可以根据有损压缩编码后的神经网络进行训练,并对训练好的神经网络进行有损压缩编码,并将该训练后的神经网络回传给终端。从而使得训练后的神经网络的精度能够满足终端的需求,以便终端能够应用该训练好的神经网络实现相应的运算。
本申请实施例中,通过终端与云端服务器协同的方式,并在云端服务器实现对神经网络的训练或重训练过程,可以降低终端的运算量。同时,终端和云端服务器之间的传送的数据均为有损压缩编码后获得数据,从而可以减少数据的访存开销,提高该计算机系统的性能。
具体地,如图39所示,本申请实施例还提供了一种数据处理方法,该数据处理方法能够用于终端和云端服务器形成的计算机系统中。上述方法可以包括如下步骤:
S4-600、第一处理器根据获取的输入数据进行正向运算,获得第一正向运算结果。
可选地,该神经网络的输入数据可以是该神经网络的原始输入数据,也可以是是有损压缩编码后处于压缩状态后的第一输入数据,也可以是有损压缩编码后处于解压状态的第二输入数据,上述的神经网络的输入数据可以包括神经元数据和权值数据。当该输入数据为处于压缩状态的第一输入数据时,第一处理器还可以首先对该第一输入数据进行解压缩,获得第二输入数据,之后,根据解压缩之后的第二输入数据进行正向运算,获得第一正向运算结果。
S4-700、若第一处理器确定所述第一正向运算结果不满足预设需求,则第一处理器对输入数据进行有损压缩编码,并将有损压缩编码后的输入数据传送至第二处理器;其中,该输入数据包括输入神经元数据和权值数据。
S4-800、第二处理器对有损压缩编码后的输入数据进行解压缩,并根据有损压缩编码后的输入数据对神经网络进行训练或重训练,直至第二处理器获得的第二正向运算结果满足预设需求。
具体地,该第二处理器可以根据解压缩后的输入数据,对神经网络进行训练(此处的 训练可以是指对未经训练的神经网络的训练,也可以是指对处于收敛状态的神经网络的重训练),直至该神经网络的第二正向运算结果满足预设需求。可选地,该第二处理器对神经网络的训练或重训练过程与上述步骤S4-400的执行过程基本一致。
若第一处理器确定该第一正向运算结果满足终端的预设需求,此时,第一处理器可以直接应用该神经网络实现相关的运算。
可选地,第一处理器可以该第一正向运算获得的损失函数的值确定该第一正向运算结果是否满足终端的预设需求。具体地,上述方法还包括:
S4-610、第一处理器根据第一正向运算结果与预设的目标运算结果,获得第一损失函数;
可选地,上述步骤S4-610可以包括如下步骤:
第一处理器上的第一压缩电路可以对第一正向运算结果进行有损压缩编码,进一步地,第一压缩电路可以确定目标压缩率,并根据目标压缩率对第一正向运算结果进行有损压缩编码。之后,第一处理器上的第一解压电路可以对有损压缩后的第一正向运算结果进行解压缩,并根据解压缩后的第一正向运算结果确定第一损失函数。该确定第一损失函数的过程与上述步骤S4-510类似。
S4-620、第一处理器判断该第一损失函数的值是否小于预设的目标精度;
若第一损失函数的值大于或等于预设的目标精度,则执行步骤S621,确定该第一正向运算结果不满足终端的预设需求;若第一损失函数的值小于预设的目标精度,则确定该第一正向运算结果不满足终端的预设需求。其中,该预设的目标精度可以根据第一处理器的实际需求确定,也可以根据先验知识确定,此处不做具体限定。
可选地,上述神经网络可以是处于收敛状态的神经网络,也可以是未经训练的神经网络,该未经训练的神经网络的权值数据为随机数。当该神经网络为未经训练的神经网络时,第一处理器还可以不执行上述正向运算过程,直接将该神经网络的输入神经元数据及权值数据进行有损压缩后传送至第二处理器。
在一个实施例中,当第一处理器确定该第一正向运算结果不满足预设需求时,则可以该神经网络的输入数据进行有损压缩编码,并将该有损压缩编码后的输入数据传送至第二处理器上进行训练或重训练。具体地,上述步骤S4-800可以包括如下步骤:
S4-822、第二处理器根据有损压缩编码的输入数据进行正向运算,获得第二正向运算结果;
S4-823、第二处理器根据第二正向运算结果确定第二损失函数;
S4-824、第二处理器判断第二损失函数的值是否小于预设的目标精度;
若第二损失函数的值大于或等于预设的目标精度,则执行如下步骤:
S4-825、第二处理器根据第二损失函数进行反向运算,获得梯度值;
S4-826、第二处理器根据梯度值更新有损压缩编码后的输入数据的权值数据,获得更新后的权值数据,之后,返回上述步骤S4-822,第二处理器根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果的步骤,直至第二正向运算结果满足预设需求。
若第二损失函数的值小于预设的目标精度,表明该第二正向运算结果满足终端的预设需求,完成该神经网络的训练或重训练。
本申请实施例中,上述步骤S4-822~步骤S4-826的执行过程,与上述实施例中的步骤S4-300、步骤S4-500及步骤S4-400的执行过程类似,具体可参见上文中的描述。
在另一个实施例中,上述步骤S4-700可以包括步骤S4-710,第一处理器对输入数据以及第一损失函数进行有损压缩编码,获得交互数据,并将交互数据传送至第二处理器。这样,第二处理器可以根据其获取的交互数据进行反向运算,而无需通过重复执行一次正向运算确定神经网络的精度,减小了运算量,提高神经网络的训练或重训练的效率。
进一步地,上述步骤S4-800可以包括:
S4-801、第二处理器对第一处理器传送的交互数据进行解压缩;
S4-802、第二处理器根据解压缩后获得的第一损失函数的值对神经网络进行反向运算,获得梯度值;
S4-803、第二处理器根据梯度值更新输入数据中的权值数据,获得更新后的权值数据;
S4-804、第二处理器根据更新后的权值数据对神经网络进行正向运算,获得第二正向运算结果;
S4-805、第二处理器根据第二正向运算结果和预设的目标运算结果,获得第二损失函数;
S4-806,第二处理器判断第二损失函数的值是否小于预设的目标精度;
第二处理器在第二损失函数的值大于或等于预设的目标精度时,执行步骤S4-807,第二处理器根据第二损失函数的值对神经网络进行反向运算,获得梯度值,之后返回步骤S4-803,第二处理器根据梯度值更新输入数据的权值数据,获得更新后的权值数据的步骤,直至第二损失函数的值小于预设的目标精度。
本申请实施例中,步骤S4-801~步骤S4-807中对神经网络的正向运算及反向运算的过程,与上述实施例中的步骤S4-300~步骤S4-500的执行过程类似,具体可参见上文中的描述。
可选地,上述步骤S4-823或步骤S4-805还可以包括:
第二处理器对所述第二正向运算结果进行有损压缩编码后在对所述第二正向运算结果进行解压缩。具体地,每当第二处理器完成一次正向运算,则第二处理器可以对其获得的第二正向运算结果进行有损压缩编码,以减少数据量,降低数据访存开销。进一步地,第二处理器可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对第二正向运算结果进行有损压缩编码。之后,第二处理器可以对该有损压缩后的第二正向运算结果进行解压缩,以根据解压缩的数据进行相应的运算。
第二处理器根据解压缩后的第二正向运算结果确定第二损失函数。具体地,第二损失函数的确定方式与上文中损失函数的确定方式一致。
可选地,上述步骤S4-826或S4-803还可以包括:
第二处理器对所述梯度值进行有损压缩编码后再对所述有损压缩编码后的梯度值进 行解压缩,根据所述解压缩后获得的梯度值更新所述权值数据,获得更新后的权值数据。
具体地,第二处理器每完成一次反向运算,则第二处理器可以对反向运算获得的梯度值进行有损压缩编码。进一步地,第二处理器可以确定目标压缩率,并根据目标压缩率对该梯度值进行有损压缩编码。之后,第二处理器可以对该梯度值进行解压缩,以便根据该解压缩后的梯度值更新权值数据。
可选地,上述步骤S4-822或S4-804还可以包括:
第二处理器对所述权值数据进行有损压缩编码后再对所述有损压缩编码后的权值数据进行解压缩;之后返回第二处理器根据解压缩后的所述权值数据进行正向运算,获得第二正向运算结果。具体地,每当完成一次权值数据的更新,则第二处理器可以对权值数据进行有损压缩编码。之后,第二处理器可以对有损压缩编码后的权值数据进行解压缩,并根据该解压缩的权值数据再次进行正向运算,直至第二正向运算结果满足终端的预设需求。
在一个实施例中,第二处理器包含至少两个处理电路,至少两个处理电路包括主处理电路和从处理电路;上述步骤S4-800可以包括:
S4-814、主处理电路对权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路。可选地,该权值数据可以是输入数据中包含的初始权值数据,也可以是根据第一损失函数更新后的权值数据。
S4-815、各个从处理电路分别对接收到的处于压缩状态的权值数据进行解压缩,并根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果,将第一中间结果进行有损压缩编码后传送至主处理电路。
S4-816、主处理电路对各个从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得正向运算结果。
S4-817、主处理电路根据该正向运算结果和预设的目标运算结果计算第二损失函数。
S4-818、主处理电路判断第二损失函数的值是否大于或等于预设的目标精度。
若主处理电路在确定第二损失函数的值大于或等于目标精度时,则执行步骤S819、主处理电路对第二损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的第二损失函数传送至各个从处理电路。
S4-820、各个从处理电路分别对接收到的处于压缩状态的第二损失函数进行解压缩,并根据解压缩后的第二损失函数对神经网络进行反向运算得到第二中间结果,将第二中间结果进行有损压缩编码后传送至主处理电路。
S4-821、主处理电路对各个从处理电路传送的第二中间结果进行解压缩,并根据解压缩后的第二中间结果获得梯度值,并根据梯度值更新输入数据中的权值数据,获得更新后的权值数据。之后,返回步骤S4-814,主处理电路将输入数据的权值数据进行有损压缩,并将处于压缩状态的权值数据传送至各个从处理电路的步骤。
可选地,当该权值数据为根据第一损失函数更新后的权值数据时,在上述步骤S4-814之前,还可以包括如下步骤:
S4-811、主处理电路获取交互数据,并将交互数据传送至各个从处理电路;具体地,主处理电路可以将交互数据分为多块,并向各个从处理电路发送至少一块交互数据。
S4-812、各个从处理电路分别对该交互数据进行解压缩,并根据解压缩后获得的第一损失函数的值对神经网络进行反向运算,获得中间计算结果,并将中间计算结果进行有损编码后传送至主处理电路。该中间计算结果可以是各个从处理电路执行反向运算获得的各层的梯度值。
S4-813、主处理电路可以根据上述中间计算结果计算获得梯度值,并根据梯度值更新输入数据中的权值数据,获得更新后的权值数据。
本申请实施例中,步骤S4-813~步骤S4-821中对神经网络的正向运算及反向运算的过程。
进一步地,上述方法还包括:
第二处理器在确定神经网络的精度小于预设的目标精度时,对神经网络进行有损压缩编码,并将有损压缩编码后的神经网络传送至第一处理器。本申请实施例中,对神经网络进行有损压缩编码,可以是对训练或重训练完毕的神经网络的权值数据进行有损压缩编码的过程。
5、数据编码方法、数据解码方法
本申请的其中一种实施例中提出了运算装置5-100的结构框图,该运算装置包括主运算单元5-110以及与主运算单元连接的多个从运算单元5-120。其中,主运算单元5-110以及各个从运算单元5-120上设置有编码电路5-130。具体地,该主运算单元用于对输入数据执行前序处理,以及与多个从运算单元之间传输数据。具体地,多个从运算单元5-120用于使用从主运算单元5-110传输的数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主运算单元5-110。主运算单元5-110还用于对从运算单元5-120传输来的多个中间结果进行后续处理。具体地,该编码电路5-130可以使用本申请提出的数据编码方法对数据进行编码(压缩);以及使用本申请提出的数据解码方法对数据进行解码(解压缩)。
在其中一个实施例中,该运算装置的多个从运算单元5-120呈阵列分布;每个从运算单元5-120与相邻的其他从运算单元5-120连接,主运算单元5-110连接多个从运算单元5-120中的k个从运算单元5-120,该k个从运算单元5-120为:第1行的n个从运算单元5-120、第m行的n个从运算单元5-120以及第1列的m个从运算单元5-120。需要说明的是,K个从运算单元5-120仅包括第1行的n个从运算单元5-120、第m行的n个从运算单元5-120以及第1列的m个从运算单元5-120,即该k个从运算单元5-120为多个从运算单元5-120中直接与主运算单元5-110连接的从运算单元5-120。具体地,该K个从运算单元5-120,用于在主运算单元5-110以及多个从运算单元5-120之间转发数据。
进一步地,该主运算单元5-110还包括激活运算电路、加法运算电路。其中,激活运算电路,用于执行主运算单元5-110内数据的激活运算;加法运算电路,用于执行加法运 算或累加运算。具体地,从运算单元5-120还包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该从运算单元5-120还可以包括加法运算电路,用于执行加法运算或累加运算。
在另一个可选地实施例中,该运算装置还可以包括分支运算单元5-140,主运算单元5-110与一个或多个分支运算单元5-140连接,分支运算单元5-140与一个或多个从运算单元5-120连接。
具体地,该分支运算单元5-140,用于转发主运算单元5-110与从运算单元5-120之间的数据。该主运算单元5-110还可以包括激活运算电路、加法运算电路。其中,激活运算电路,用于执行主运算单元5-110内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;数据存取电路主要用于是使用上述实施例中的数据存取方法向主运算单元5-110搬运待运算数据。具体地,从运算单元5-120还包括乘法运算电路,该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该从运算单元5-120还可以包括加法运算电路,用于执行加法运算或累加运算。
如图40所示,为本申请的其中一个实施例提出的一种数据编码方法的步骤流程图,该方法具体包括:
步骤S5-410,将待编码数据中各个符号的哈夫曼编码的码长,作为待编码数据中各个符号的编码码长。
本数据编码方法中各个符号的编码码长与哈夫曼编码一致。具体地,编码电路5-130将待编码数据中各个符号的哈夫曼编码的码长,作为待编码数据中各个符号的编码码长。
可选地,该编码电路5-130可以首先根据待编码数据中各个符号的出现概率得到对应的哈夫曼树。之后,再根据各个符号在该哈夫曼树中对应的叶子结点到根结点的路径长度,得到待编码数据中各个符号的编码码长。在一示例中:待编码数据中包括的符号:μ1、μ2、μ3、μ4、μ5,对应的出现概率为:0.4、0.1、0.2、0.2、0.1。控制电路5-110根据待编码数据中各个符号的出现概率得到的哈夫曼树如图41所示。μ1、μ2、μ3、μ4、μ5对应的叶子结点到根据结点的路径长度分别为2、3、2、2、3,由于哈夫曼树中各个叶子结点到根结点的路径长度对应哈夫曼编码的编码码长,因此,编码电路5-130在该示例中得到的μ1、μ2、μ3、μ4、μ5对应的编码码长分别为2、3、2、2、3。
可选地,该编码电路5-130也可以直接待编码数据中各个符号的哈夫曼编码的编码码长,得到待编码数据中各个符号的编码码长。承接上述示例,根据上述μ1、μ2、μ3、μ4、μ5的出现概率构建的哈夫曼树,得到的哈夫曼编码(约定哈夫曼树中指向左子树的分支表示“0”,指向右子树的分支表示“1”)分别为:00、010、10、11、011。由于本数据编码方法中各个符号的编码码长与哈夫曼编码一致,若编码电路5-130可以直接待编码数据中各个符号的哈夫曼编码,则可以该编码直接得到各个符号的编码码长。
步骤S5-420,根据待编码数据中各个符号的出现频率,降序排列所述待编码数据中的各个所述符号,得到各个所述符号的排序值。
具体地,编码电路5-130根据待编码数据中各个符号的出现频率,降序排列所述待编 码数据中的各个所述符号,得到各个所述符号的排序值。可选地,该排序值的初始值为0。例如:待编码数据中包括的符号:μ1、μ2、μ3、μ4、μ5,对应的出现概率为:0.4、0.1、0.2、0.2、0.1。各个符号的排序值对应为:0、4、2、3、5。
步骤S5-430,若当前符号的编码码长与上一排序值的符号的编码码长相同,则将所述上一排序值的符号的编码值加1得到所述当前符号的编码值;若当前符号的编码码长与上一排序值的符号的编码码长不同,则将所述上一排序值的符号的编码值加1得到的数值补充尾数0得到所述当前符号的编码值。
具体地,若当前符号的编码码长与上一排序值的符号的编码码长相同,编码电路5-130将所述上一排序值的符号的编码值加1得到所述当前符号的编码值。若当前符号的编码码长与上一排序值的符号的编码码长不同,编码电路5-130将所述上一排序值的符号的编码值加1得到的数值补充尾数0得到所述当前符号的编码值。更具体地,在对数据进行编码时,编码电路5-130首先比较当前符号与上一排序值的符号的编码码长是否相同,若相同则通过在上一排序值的符号的编码值基础上加1得到当前符号的编码值。若前符号与上一排序值的符号的编码码长不相同,则首先将上一排序值的符号的编码值加1,之后再在上一排序值的符号的编码值加1得到的数值基础上补一尾数“0”,得到当前符号的编码值。编码电路5-130根据各个符号的排序值和编码码长,得到各个符号的编码值。
进一步地,将对应编码码长的0值作为所述符号序列表中排序值最小的符号的编码值。具体地,编码电路5-130将对应编码码长的0值作为所述符号序列表中排序值最小的符号的编码值。例如,符号序列表中排序值最小的符号的编码码长为2比特,则将“00”作为该符号的编码值。例如:承接上述示例,例如,μ3的排序值为1,其上一排序值0对应的符号为μ1,设定μ1的编码值为“00”,在“00”基础上加1,得到μ3的编码值“01”。μ2的排序值为3,其上一排序值2对应的符号为μ4,设定μ4的编码值为“10”,在“10”基础上加1,得到数值“11”,之后,在“11”基础上补尾数“0”,得到μ2的编码值则为“110”。设定μ1编码值为“00”,同理可得,μ3、μ4、μ2、μ5编码值分别为01、10、110、111。
步骤S5-440,根据各个符号对应的符号的编码值,对所述待编码数据进行编码。
具体地,编码电路5-130根据各个符号对应的符号的编码值,对应所述待编码数据进行编码。例如:承接上述示例,假设待编码数据“μ3μ4μ2μ5μ3μ1μ2”,编码电路5-130对各个符号进行编码得到的结果为“0110110,1110100110”。
本实施例中的数据编码方法,首先根据各个符号哈夫曼编码确定各个符号的编码码长,之后再基于该编码码长通过加1或者加1补尾数0的方式得到各个符号的编码值。最后,使用各个符号的编码值对待编码数据中各个符号进行编码。本实施的数据编码方法对待编码数据进行编码时,各个符号的编码值的编码码长与哈夫曼编码一致,因此,该数据编码方法进行编码的数据得到的编码结果平均长度较短。本实施例的数据编码方法,通过加1或者加1补尾数0的方式得到各个符号的编码值,在确定符号对应的编码值的过程有规律可循,操作简单,出差率低。
在其中一个实施例中,步骤S5-440包括:
步骤S5-441,将待编码数据中各个符号按照出现频率降序排列,得到各个符号的排序值,并根据所述各个符号的排序值得到符号序列表。
具体地,编码电路5-130将待编码数据中各个符号按照出现频率降序排列,得到各个符号的排序值,并根据所述各个符号的排序值得到符号序列表。可选地,所述符号序列表的初始排序值为0。例如:待编码数据中包括的符号:μ1、μ2、μ3、μ4、μ5,对应的出现概率为:0.4、0.1、0.2、0.2、0.1。该示例中,编码电路5-130将μ1、μ2、μ3、μ4、μ5按照出现频率降序排列,得到各个符号的排序值为:0、4、2、3、5;得到的符号序列表如图42所示。
步骤S5-442,根据所述待编码数据中各个符号的编码码长得到码长表。
具体地,编码电路5-130根据所述待编码数据中各个符号的编码码长得到码长表。该码长表包含至少一种编码码长。例如,承接上述示例,μ1、μ2、μ3、μ4、μ5的编码值,包含两种编码码长2比特和3比特,编码电路5-130在该示例中得到的码长表为[2,3]。可选地,升序排列该码长表中的各种编码码长。可选地,还可以使用序号依次标识码长表中的各种编码码长。例如,可以使用0-1,分别标识码长表中的2,3。
步骤S5-443,根据所述待编码数据中各个符号的编码码长和排序值,得到待编码数据的码长边界表以及码长基础值表。
其中,码长边界表包含每种编码码长的符号中排序值最大的符号的编码值。码长基础值表包含每种编码码长的基础值。具体地,编码电路5-130根据所述待编码数据中各个符号的编码码长和排序值,得到待编码数据的码长边界表以及码长基础值表。更具体地,编码电路5-130首先查找所述符号序列表中每种编码码长的最大排序值的符号,并使用所述最大排序值构建所述码长边界表,其中,最大排序值是各种编码码长的符号的排序值的最大值。进一步地,将码长边界表中的各个最大排序值升序排列,得到所述码长边界表。编码电路5-130还可以根据各个所述最大排序值以及与各个所述最大排序值对应的编码值,得到每种编码码长的基础值,根据所述每种编码码长的基础值得到所述码长基础值表。进一步地,将各个所述最大排序值对应的编码值减去排序值,得到每种编码码长的基础值。
例如:上述示例中μ4编码码长为2比特的符号中最大排序值的符号,其排序值为2,μ5编码码长为3比特的符号中最大排序值的符号,其排序值为4。编码电路5-130将2、4升序排列,得到的码长边界表为[2,4]。上述示例中μ4为编码码长为2比特的符号中最大排序值的符号,其排序值为2,其编码值为10(二进制,对应十进制的数值2),因此,该示例中编码电路5-130得到的编码码长为2比特的基础值为0;μ5为编码码长为3比特的符号中最大排序值的符号,其排序值为4,其编码值为111(二进制,对应十进制的数值7),因此,该示例中编码电路5-130得到的编码码长为4比特的基础值为3。编码电路5-130在该示例中得到的码长基础值表为[0,3]。
步骤S5-444,使用所述符号序列表、所述码长表、码长边界表以及码长基础值表,对所述待编码数据中各个符号进行编码。
具体地,编码电路5-130使用所述符号序列表、所述待编码数据的码长表、码长边界 表以及码长基础值表,对所述待编码数据中各个符号进行编码。可选地,编码电路5-130首先根据符号序列表确定待编码数据中各个符号的排序值。之后,编码电路5-130根据各个符号的排序值确定各个符号的编码码长,之后根据编码码长和确定各个符号的基础值。在编码电路5-130确定符号的基础值后,根据该基础值和符号对应的符号的排序值得到初始编码值。最后,编码电路5-130根据各个符号对应的符号的排序值确定各个符号的编码码长,并根据各个符号的编码码长和初始编码值得到各个符号的编码值。
例如,承接上述示例,使用的符号序列表如图42所示;使用的码长边界表为[2,4],其中,该码长边界表中排序值2为编码码长2比特的边界,排序值4为编码码长3比特的边界;使用的码长基础值表为[0,3],其中,码长基础值表中基础值0为编码码长2比特的基础值,基础值3为编码码长3比特的基础值。若对待编码数据中符号μ3编码,首先根据上述的符号序列表、码长边界表以及码长基础值表得到的μ3的排序值为2,编码码长为2,基础值为0,之后,根据基础值0和排序值2得到的初始编码值为2。该符号μ3的编码码长为2,因此,编码电路在该示例中得到的符号μ3的编码值为10。
本实施例中提出的编码方法,使用基于各个符号的编码值构建的符号序列表、码长边界表以及码长基础值表,对待编码数据中各个符号进行编码,由于本实施例中各个符号的编码值是具有“同编码码长符号的编码值根据符号排序进行加1操作得到,不同编码码长符号的编码值根据符号排序进行加1补尾数0操作得到”,因此,可以基于此规律将原哈夫曼编码中的查表(编码值对照表)操作,转换为查符号序列表结合简单运算,由于符号序列表的数据量远小于编码值对照表的数据量,且转换的运算仅包含比较与加法运算,因此,容易被拆分成多个并行运算,因此,该数据编码方法编码效率高。
在其中一个实施例中,如图43所示,上述编码方法还包括:
步骤S5-450,升序排列所述码长表中的各种编码码长,并使用序号依次标识降序排列的所述码长表中的各种编码码长。
具体地,编码电路5-130升序排列所述码长表中的各种编码码长,并使用序号依次标识降序排列的所述码长表中的各种编码码长。例如:码长表[2,3],升序排列各种编码码长;使用0标识编码码长2比特;使用1标识编码码长3比特。
步骤S5-460,升序排列所述码长边界表中的各个排序值,并使用与所述码长表对应的序号依次标识降序排列的所述码长边界表中的各个排序值。
具体地,编码电路5-130升序排列所述码长边界表中的各个排序值,并使用与所述码长表对应的序号依次标识降序排列的所述码长边界表中的各个排序值。例如:码长边界表中[2,4],升序排列排序值。使用0标识排序值2;使用1标识排序值4。
步骤S5-470,升序排列所述码长基础值表中的各个基础值,并使用与所述码长表对应的序号依次标识降序排列的所述码长基础值表中的各个基础值。
具体地,编码电路5-130升序排列所述码长基础值表中的各个基础值,并使用与所述码长表对应的序号依次标识降序排列的所述码长基础值表中的各个基础值。例如:码长基础值表[0,3],升序排列。
本实施例通过统一设置码长表、码长边界表以及码长基础值表中数值的序号,使后续数据编码时容易根据确定的信息(例如码长),确定其他的信息,提高数据处理效率。
在其中一个实施例中,步骤S5-444包括,
步骤S5-4441,根据当前符号在所述符号序列表中的排序值、所述码长表以及所述码长边界表,确定所述当前符号的编码码长。
具体地,编码电路5-130根据当前符号在所述符号序列表中的排序值、所述码长表以及所述码长边界表,确定所述当前符号的编码码长。可选地,编码电路5-130首先访问述码长边界表,确定码长边界表中排序值不小于当前符号的最小的排序值,之后根据该码长边界表中排序值不小于当前符号的最小的排序值和码长表确定当前符号的编码码长。可选地,若码长表中各个码长标识了序号,且码长边界表中各个排序值也标识了序号,那么编码电路5-130在确定码长边界表中排序值不小于当前符号的最小的排序值后,根据确定的码长边界表中排序值不小于当前符号的最小的排序值的序号,确定码长表中对应的编码码长。
例如:码长边界表[2,4],μ3在符号序列表中的排序值为1,编码电路访问该码长边界表,确定不小于该排序值1的最小的排序值为2。在码长边界表中排序值2的序号为0,根据该序号0,在码长表[2,3]中查找序号为0的编码码长,确定μ3的编码码长为2。
步骤S5-4442,根据所述当前符号的编码码长和所述码长基础值表,得到所述当前符号的基础值。
具体地,编码电路5-130根据所述当前符号的编码码长和所述码长基础值表,得到所述当前符号的基础值。可选地,编码电路5-130首先访问述码长边界表,确定码长边界表中排序值不小于当前符号的最小的排序值,之后根据该码长边界表中排序值不小于当前符号的最小的排序值和码长表确定当前符号的编码码长。最后,根据编码码长与码长基础值中各个基础值之间对应关系,确定当前符号的基础值。可选地,若码长表,码长边界表以及码长基础值表中各个数据标识了序号,则编码电路5-130编码电路5-130在确定码长边界表中排序值不小于当前符号的最小的排序值后,根据确定的码长边界表中排序值不小于当前符号的最小的排序值的序号,确定码长基础值表中对应的基础值。
例如:码长边界表[2,4],μ3在符号序列表中的排序值为1,编码电路访问该码长边界表,确定不小于该排序值1的最小的排序值为2。在码长边界表中排序值2的序号为0,根据该序号0,在码长基础值表[0,3]中查找序号为0的基础值,确定μ3的基础值为0。
步骤S5-4443,根据所述当前符号在所述符号序列表中的排序值和所述当前符号的基础值,得到所述当前符号的初始编码值。
具体地,编码电路5-130根据所述当前符号在所述符号序列表中的排序值和所述当前符号的基础值,得到所述当前符号的初始编码值。可选地,编码电路5-130将当前符号的在所述符号序列表中的排序值与所述当前符号的基础值相加,得到当前符号的初始编码值。
例如,承接上述示例,确定μ3的基础值为0,排序值为1,则得到μ3的初始编码值为 1。
步骤S5-4444,根据所述当前符号的初始编码值和所述当前符号的编码码长,得到所述当前符号的编码值。
具体地,编码电路5-130根据所述当前符号的初始编码值和所述当前符号的编码码长,得到所述当前符号的编码值。
例如,承接上述示例,得到μ3的初始编码值为1,码长为2,得到μ3编码值为01。
本实施例中的编码方法,通过查询符号序列表得到符号的排序值,之后根据该排序值确定当前符号的码长与基础值,根据基础值与排序值得到初始编码值,最后根据码长与初始编码值得到符号的编码值,该方法,查表操作数据访问量小,执行的运算操作运算简单,因此,可以提高数据编码效率。
下面以上述数据编码方法应用于上述实施例中的运算装置执行的运算过程为例,具体说明上述实施例中的数据编码方法的应用。
其中一个实施例提出的数据处理方法,该方法被上述运算装置5-100执行,具体包括:
步骤S5-610,主运算单元接收输入数据,并使用上述实施例中的任一数据编码方法编码该输入数据得到编码数据。
具体地,主运算单元5-110的编码电路5-130使用上述实施例中的任一数据编码方法编码该输入数据得到编码数据。进一步地,编码电路5-130首先访问符号序列表,得到输入数据中的当前符号的排序值;之后根据当前符号在所述符号序列表中的排序值、所述码长表以及所述码长边界表,确定所述当前符号的编码码长;根据所述当前符号的编码码长和所述码长基础值表,得到所述当前符号的基础值;根据所述当前符号在所述符号序列表中的排序值和所述当前符号的基础值,得到所述当前符号的初始编码值;根据所述当前符号的初始编码值和所述当前符号的编码码长,得到所述当前符号的编码值。循环执行上述数据编码的步骤,得到输入数据中其他符号的编码值以对输入数据进行编码。
步骤S5-620,主运算单元将得到的编码数据传送至从运算单元。
可选地,若运算装置为图36所示的结构时,主运算单元可以通过与主运算单元连接的k个从运算单元,将编码数据传送至从运算单元。可选地,若运算装置为图36所示的结构时,主运算单元可以通过分支运算单元将编码数据传送至从运算单元。
步骤S5-630,从运算单元的编码电路接收该编码数据后,对该编码数据进行解码得到解码数据。
步骤S5-640,从运算单元使用该解码数据进行乘法运算,得到中间结果,并将该中间结果传送至主运算单元。可选地,从运算单元也可以先应用上述任一实施例在的数据编码方法编码该中间结果,之后再将编码后的中间结果传送至主运算单元。可选地,若运算装置为图36所示的结构时,从运算单元可以通过与主运算单元连接的k个从运算单元,将中间结果传送至主运算单元。可选地,若运算装置为图36所示的结构时,从运算单元可以通过分支运算单元将中间结果传送至从运算单元。
步骤S5-650,主运算单元的使用该中间结果进行累法和激活运算,得到运算结果。可 选地,若从运算单元传送的为编码的中间结果,主运算单元的编码电路需先将该编码后的中间结果解码,之后再进行累法和激活运算,得到运算结果。
可选地,若该运算结果为最终的运算结果,则运算装置5-100可以终止上述数据处理流程。若该运算结果不是最终的运算结果,则运算装置5-100可以使用该运算结果进行下一阶段的运算。
上述实施例中的运算装置将输入数据进行编码后再传送至从运算单元可以降低运算单元之间数据传输的带宽要求。
如图44所示,在本申请的另一个实施例提出的一种数据解码方法,该解码方法可以解码使用上述任一实施例中的数据编码方法得到的编码数据,该数据解码方法具体包括:
步骤S5-510,将各个符号哈夫曼编码的码长,作为各个符号的编码码长。
需要说明的是,本方法得到的各个符号与编码值的对应关系中各个符号的码长与哈夫曼编码一致。具体地,编码电路5-130将原始数据中各个符号哈夫曼编码的码长,作为各个符号的编码码长。
可选地,该编码电路5-130可以首先根据各个符号的出现概率得到对应的哈夫曼树。之后,再根据各个符号在该哈夫曼树中对应的叶子结点到根结点的路径长度,得到各个符号(μ1、μ2、μ3、μ4、μ5)的编码码长。在一示例中,符号:μ1、μ2、μ3、μ4、μ5,对应的出现概率为:0.4、0.1、0.2、0.2、0.1。编码电路5-130根据μ1、μ2、μ3、μ4、μ5的出现概率得到的哈夫曼树如图41所示。μ1、μ2、μ3、μ4、μ5对应的叶子结点到根据结点的路径长度分别为2、3、2、2、3,由于哈夫曼树中各个叶子结点到根结点的路径长度对应哈夫曼编码的码长,因此,编码电路5-130在该示例中得到的μ1、μ2、μ3、μ4、μ5对应的编码码长分别为2、3、2、2、3。
可选地,该编码电路5-130也可以直接获取各个符号的哈夫曼编码的码长,得到各个符号的码长。承接上述示例,根据上述μ1、μ2、μ3、μ4、μ5的出现概率构建的哈夫曼树,得到的哈夫曼编码(约定哈夫曼树中指向左子树的分支表示“0”,指向右子树的分支表示“1”)分别为:00、010、10、11、011。由于本方法中各个符号的编码码长与哈夫曼编码一致,若编码电路5-130可以直接待编码数据中各个符号的哈夫曼编码,则可以该编码直接得到各个符号的编码码长。
步骤S5-520,根据各个符号的出现频率,降序排列各个所述符号,得到各个所述符号的排序值。
具体地,编码电路5-130根据各个符号的出现频率,降序排列各个所述符号,得到各个所述符号的排序值。可选地,该排序值的初始值为0。例如:原始数据包含符号:μ1、μ2、μ3、μ4、μ5,对应的出现概率为:0.4、0.1、0.2、0.2、0.1。根据该出现概率降序排列各个符号,得到的各个符号的排序值对应为:0、3、1、2、4。
步骤S5-530,若当前符号的码长与上一排序值的符号的编码码长相同,则将所述上一排序值的符号的编码值加1得到所述当前符号的编码值;若当前符号的编码长度与上一排序值的符号的编码码长不同,则将所述上一位次的符号的编码值加1得到的数值补充尾数 0得到所述当前符号的编码值。
具体地,若当前符号的码长与上一排序值的符号的编码码长相同,编码电路5-130将所述上一排序值的符号的编码值加1得到所述当前符号的编码值。若当前符号的码长与上一排序值的符号的编码码长不同,编码电路5-130将所述上一位次的符号的编码值加1得到的数值补充尾数0,得到所述当前符号的编码值。更具体地,在对数据进行编码时,编码电路5-130首先比较当前符号与上一排序值的符号的编码码长是否相同,若相同,则在上一排序值的符号的编码值基础上加1得到当前符号的编码值。若当前符号与上一排序值的符号的编码码长不同,则首先将上一排序值的符号的编码值加1,之后再在上一位次的符号的编码值加1得到的数值基础上补一尾数“0”,得到当前符号的编码值。编码电路5-130应用上述方法得到各个符号的编码值,即得到了各个符号与编码值的对应关系。
例如:承接上述示例,例如,μ3的排序值为1,其上一排序值0对应的符号为μ1,设定μ1的编码值为“00”,在“00”基础上加1,得到μ3的编码值“01”。μ2的排序值为3,其上一排序值2对应的符号为μ4,设定μ4的编码值为“10”,在“10”基础上加1,得到数值“11”,之后,在“11”基础上补尾数“0”,得到μ2的编码值则为“110”。设定μ1编码值为“00”,同理可得,μ3、μ4、μ2、μ5编码值分别为01、10、110、111。在该示例中,编码电路5-130得到的各个符号与编码值的对应关系为:μ1对应00;μ2对应110;μ3对应01;μ4对应10;μ5对应111。
需要说明的是,由于数据使用的编码规则与解码规则需要对应,因此,本实施例中解码方法得到的各个符号对应的编码值与上述实施例中的数据编码方法中得到的各个符号对应的编码值均相同。
步骤S5-540,根据各个编码值对应的符号,对待解码数据进行解码。
其中,该待解码数据为编码数据。具体地,编码电路5-130根据各个编码值对应的符号,对待解码数据进行解码。可选地,若上述步骤S5-510-S5-530得到的各个符号对应的编码值以关系表的格式进行存储,则编码电路5-130通过查询该关系表对待解码的数据进行解码。可选地,若基于上述步骤S5-510-S5-530得到的各个符号与对应的编码值,得到了符号序列表、码长表、编码值范围表以及码长基础值表,则编码电路5-130首先获取预先存储的符号序列表、码长表、编码值范围表以及码长基础值表,之后再根据该符号序列表、码长表、编码值范围表以及码长基础值表确定原始数据中各个符号与编码值的对应关系。
本实施例中的数据解码方法,根据各个符号哈夫曼编码确定各个符号的编码码长,之后再基于该编码码长通过加1或者加1补尾数0的方式得到各个符号的编码值,即得到了各个符号与编码值的对应关系。最后,使用该各个符号与编码值的对应关系对待解码数据进行解码。由于本实施例的各个符号与编码值的对应关系是根据各个符号的排序值,通过加1或者加1补尾数0的方式得到,因此,该方法在确定符号对应的编码值的过程有规律可循,操作简单,出差率低。
在其中一个实施例中,步骤S5-540包括:
步骤S5-541,将所述各个符号按照出现频率降序排列,得到各个符号的排序值,并根据所述各个符号的排序值得到符号序列表。
具体地,编码电路5-130将各个符号按照出现频率降序排列,得到各个符号的排序值,并根据所述各个符号的排序值得到符号序列表。可选地,所述符号序列表的初始排序值为0。例如:待编码数据中包括的符号:μ1、μ2、μ3、μ4、μ5,对应的出现概率为:0.4、0.1、0.2、0.2、0.1。该示例中,编码电路5-130将μ1、μ2、μ3、μ4、μ5按照出现频率降序排列,得到各个符号的排序值为:0、4、2、3、5;得到的符号序列表如图42所示。
步骤S5-542,根据所述各个符号的编码码长得到码长表。
具体地,编码电路5-130根据各个符号的编码码长得到码长表。该码长表包含至少一种编码码长。例如,承接上述示例,μ1、μ2、μ3、μ4、μ5的编码值,包含两种编码码长2比特和3比特,编码电路5-130在该示例中得到的码长表为[2,3]。可选地,升序排列该码长表中的各种编码码长。可选地,还可以使用序号依次标识码长表中的各种编码码长。例如,可以使用0-1,分别标识码长表中的2,3。
步骤S5-543,根据所述各个符号的编码码长、编码值和排序值,得到编码值范围表以及码长基础值表。
其中,编码值范围表包含每种编码码长的编码值中的最大编码值。码长基础值表包含每种编码码长的基础值。具体地,编码电路5-130根据所述各个符号的编码码长、编码值和排序值,得到编码值范围表以及码长基础值表。更具体地,编码电路5-130首先查找所述符号序列表中每种编码码长的最大排序值的符号,之后使用各个所述最大排序值的符号的编码值构建所述编码值范围表。进一步地,将编码值范围表中的编码值升序排列,得到所述编码值范围表。编码电路5-130还可以根据所述编码值范围表中的编码值和对应的排序值,得到每种编码码长的基础值,根据所述每种编码码长的基础值得到所述码长基础值表。进一步地,将所述编码值范围表中的编码值减去对应的排序值得到的数值,作为各种编码码长的基础值。
例如:上述示例中,10(二进制)编码码长为2比特的编码值中的最大编码值,111(二进制)编码码长为3比特的编码值中的最大编码值。编码电路5-130将10、111升序排列,得到的编码值范围表[10,111]。可选地,可以将上述二进制数值转换为十进制数值,此时得到的编码值范围表为[2,7]。上述示例中μ4为编码码长为2比特的符号中最大排序值的符号,其排序值为2,其编码值为10(二进制,对应十进制的数值2),因此,该示例中编码电路5-130得到的编码码长为2比特的基础值为0(运算过程:2-2);μ5为编码码长为3比特的符号中的最大排序值的符号,其排序值为4,其编码值为111(二进制,对应十进制的数值7),因此,该示例中编码电路5-130得到的编码码长为4比特的基础值为3(运算过程:7-3)。编码电路5-130在该示例中得到的码长基础值表为[0,3]。
步骤S5-544,使用所述符号序列表、所述码长表、编码值范围表以及码长基础值表,对所述待解码数据中各个编码值进行解码。
具体地,编码电路5-130使用所述符号序列表、所述码长表、编码值范围表以及码长 基础值表,对所述待解码数据中各个编码值进行解码。可选地,编码电路5-130首先根据编码值范围表确定待解码数据中各个编码值的码长和基础值,之后根据码长确定各个编码值对应的基础值,根据编码值和对应的基础值得到各个编码值的排序值,最后根据排序值得到各个编码值对应的符号,即实现对待解码数据中各个编码值的解码。
例如,承接上述示例,使用的符号序列表如图42所示;使用的编码值范围表为[2,7],其中,该编码值范围表中编码值2为编码码长2的最大编码值,编码值7为编码码长3的最大编码值;使用的码长基础值表为[0,3],其中,码长基础值表中基础值0为编码码长2比特的基础值,基础值3为编码码长3比特的基础值。设定对待解码数据中编码值01解码。编码电路5-130首先根据编码值范围表确定编码值范围表中不小于当前编码值的最小编码值,得到的结果为0,码长为2。之后,根据码长确定基础值为0。得到的排序值为编码值减去基础值:1。最后,查询符号序列表,得到排序值为1的符号为μ3。
本实施例中提出的编码方法,使用基于各个符号的编码值构建的符号序列表、编码值范围表以及码长基础值表,对待解码数据中各个编码值进行解码,由于本实施例中各个符号的编码值是具有“同编码码长符号的编码值根据符号排序进行加1操作得到,不同编码码长符号的编码值根据符号排序进行加1补尾数0操作得到”,因此,可以基于此规律将原哈夫曼解码中的查表(编码值对照表)操作,转换为查符号序列表结合简单运算,由于符号序列表的数据量远小于编码值对照表的数据量,且转换的运算仅包含比较与加法运算,因此,容易被拆分成多个并行运算,因此,该数据解码方法解码效率高。
在其中一个实施例中,上述解码方法还包括:
步骤S5-550,升序排列所述码长表中的各种编码码长,并使用序号依次标识降序排列的所述各种编码码长。
具体地,编码电路5-130升序排列所述码长表中的各种编码码长,并使用序号依次标识降序排列的所述各种编码码长。例如:码长表[2,3],升序排列各种编码码长;使用0标识编码码长2比特;使用1标识编码码长3比特。
步骤S5-560,升序排列所述编码值范围表中的各个编码值,并使用与所述码长表对应的序号依次标识降序排列的所述编码值范围表中的各个编码值。
具体地,编码电路5-130升序排列所述编码值范围表中的各个编码值,并使用与所述码长表对应的序号依次标识降序排列的所述编码值范围表中的各个编码值。例如:码长边界表中[2,4],升序排列排序值。使用0标识排序值2;使用1标识排序值4。
步骤S570,升序排列所述码长基础值表中的各个基础值,并使用与所述码长表对应的序号依次标识降序排列的所述码长基础值表中的各个基础值。
具体地,编码电路5-130升序排列所述码长基础值表中的各个基础值,并使用与所述码长表对应的序号依次标识降序排列的所述码长基础值表中的各个基础值。例如:码长基础值表[0,3],升序排列。
本实施例通过统一设置码长表、基础值范围表以及码长基础值表中数值的序号,使后续数据编码时容易根据确定的信息(例如码长),确定其他的信息,提高数据处理效率。
在其中一个实施例中,步骤S5-544包括,
步骤S5-5441,查找所述编码值范围表中不小于当前编码值的最小编码值。
具体地,编码电路5-130查找所述编码值范围表中不小于当前编码值的最小编码值。例如:编码值范围表[2,7],编码值01(对应十进制数值1),该编码值范围表中不小于该编码值01的最小编码值为2。可选地,若编码值范围表中各个编码值标识了序号,那么编码电路5-130得到的序号为0。
步骤S5-5442,根据所述编码值范围表中不小于当前编码值的最小的编码值和所述码长表得到所述当前编码值的编码码长。
具体地,编码电路5-130根据所述编码值范围表中不小于当前编码值的最小的编码值和所述码长表得到所述当前编码值的编码码长。可选地,若码长表中各个码长标识了序号,编码电路5-130可以使用该不小于当前编码值的最小的编码值在编码值范围表中的序号查找该码长表中对应的编码码长,并将该编码码长即为当前编码值的编码码长。
步骤S5-5443,根据所述当前编码值和所述码长得到所述当前编码值的初始编码值。
具体地,编码电路5-130根据所述当前编码值和所述码长得到所述当前编码值的初始编码值。
例如:当前编码值为01,编码码长为2,则得到的初始编码值为1。
步骤S5-5444,根据所述当前编码值的码长,确定所述当前编码值的基础值。
具体地,编码电路5-130根据所述当前编码值的码长,确定所述当前编码值的基础值。可选地,若码长基础值表中各个基础值标识了序号,编码电路5-130可根据当前编码值的编码码长的序号确定当前编码值的基础值。可选地,编码电路5-130也可根据确定的编码值范围表中不小于当前编码值的最小的编码值的序号确定当前编码值的基础值。
步骤S5-5445,根据所述当前编码值的初始编码值和基础值得到当前编码值的排序值。
具体地,编码电路5-130根据所述当前编码值的初始编码值和基础值得到当前编码值的排序值。可选地,将当前编码值的初始编码值与对应的基础值的差值作为当前编码值对应的排序值。
例如,承接上述示例,得到01的初始编码值为1,基础值为0,得到排序值为1。
步骤S5-5446,根据所述排序值和所述符号序列表得到所述当前编码值对应的符号。
具体地,编码电路5-130根据所述排序值和所述符号序列表得到所述当前编码值对应的符号。
例如,承接上述示例,符号序列表如图42所示,得到排序值1对应的符号为μ3。
本实施例中的编码方法,通过访问编码值范围表,确定编码值的码长与基础值,之后根据编码值的初始编码值与基础值,得到编码值对应的排序值,最后根据排序值,确定编码值对应的符号。该方法,查表操作数据访问量小,执行的运算操作运算简单,因此,可以提高数据解码效率。
下面以上述数据编码方法应用于上述实施例中的运算装置执行的运算过程为例,具体说明上述实施例中的数据解码方法的应用。
其中一个实施例提出的数据处理方法,该方法被上述运算装置5-100执行,具体包括:
步骤S5-710,主运算单元接收输入数据,并使用上述实施例中的任一数据编码方法编码该输入数据得到编码数据。
具体地,主运算单元5-110的编码电路5-130使用上述实施例中的任一数据编码方法编码该输入数据得到编码数据。进一步地,编码电路5-130首先访问符号序列表,得到当前符号的排序值;之后根据当前符号在所述符号序列表中的排序值、所述码长表以及所述码长边界表,确定所述当前符号的编码码长;根据所述当前符号的编码码长和所述码长基础值表,得到所述当前符号的基础值;根据所述当前符号在所述符号序列表中的排序值和所述当前符号的基础值,得到所述当前符号的初始编码值;根据所述当前符号的初始编码值和所述当前符号的编码码长,得到所述当前符号的编码值。循环执行上述数据编码的步骤,得到输入数据中其他符号的编码值以对输入数据进行编码。
步骤S5-720,主运算单元将得到的编码数据传送至从运算单元。
可选地,若运算装置为图36所示的结构时,主运算单元可以通过与主运算单元连接的k个从运算单元,将编码数据传送至从运算单元。可选地,若运算装置为图36所示的结构时,主运算单元可以通过分支运算单元将编码数据传送至从运算单元。
步骤S5-730,从运算单元的编码电路接收该编码数据后,对该编码数据进行解码得到解码数据。
具体地,从运算单元的编码电路5-130在接收编码数据后,首先访问编码值范围表,查找所述编码值范围表中不小于当前编码值的最大编码值;然后,根据所述不小于当前编码值的最大编码值和所述码长表得到所述当前编码值的编码码长;根据所述当前编码值和所述码长得到所述当前编码值的初始编码值;根据所述当前编码值的码长,确定所述当前编码值的基础值;之后,根据所述当前编码值的初始编码值和基础值得到当前编码值的排序值;最后,根据所述排序值和所述符号序列表得到所述当前编码值对应的符号。循环执行上述数据解码的步骤,得到编码数据中其他编码值对应的符号以对编码数据进行解码。
步骤S5-740,从运算单元使用该解码数据进行乘法运算,得到中间结果,并将该中间结果传送至主运算单元。可选地,从运算单元也可以先应用上述任一实施例在的数据编码方法编码该中间结果,之后再将编码后的中间结果传送至主运算单元。可选地,若运算装置为图36所示的结构时,从运算单元可以通过与主运算单元连接的k个从运算单元,将中间结果传送至主运算单元。可选地,若运算装置为图36所示的结构时,从运算单元可以通过分支运算单元将中间结果传送至从运算单元。
步骤S5-750,主运算单元的使用该中间结果进行累法和激活运算,得到运算结果。可选地,若从运算单元传送的为编码的中间结果,主运算单元的编码电路需先将该编码后的中间结果解码,之后再进行累法和激活运算,得到运算结果。
可选地,若该运算结果为最终的运算结果,则运算装置5-100可以终止上述数据处理流程。若该运算结果不是最终的运算结果,则运算装置5-100可以使用该运算结果进行下一阶段的运算。
上述实施例中的运算装置将输入数据进行编码后再传送至从运算单元,从运算单元使用与编码方法对应的解码方法对接收的数据进行解码,之后再进行运算,这可以降低运算单元之间数据传输的带宽要求。
6、编码方法、解码方法、处理器、编码装置、解码装置及存储介质
本申请提供了一种编码方法,可以应用于如图45所示的处理器6-1000中。该处理器6-1000包括运算单元6-12、与运算单元6-12邻近设置的存储单元6-10以及控制器单元6-11,控制器单元6-11连接于运算单元6-12与存储单元6-10之间。其中,运算单元6-12包括编码模块6-1001,该编码模块6-1001用于根据游程位宽对输入数据中的第一预设数字进行编码,得到游程,其中,游程用于表示所述第一预设数字的数目。
具体地,编码模块6-1001可以根据输入数据中第一预设数字的出现频率,设定游程位宽。进一步,编码模块6-1001可以用游程来代替输入数据中连续排列的多个第一预设数字。需要说明的是,游程所能表示的连续排列的第一预设数字的数目不能超过游程阈值。
其中,存储单元6-10用于存储原始数据以及编码后的数据,并与控制器单元6-11以及运算单元6-12之间进行数据传输。
具体地,该存储单元6-10可以是设置在处理器6-1000内部的缓存器和/或寄存器。该存储单元6-10可以是非易失性存储器或易失性存储器,此处不做具体限定。存储单元6-10与控制器单元6-11以及运算单元6-12之间传输的数据形式可以为原始数据,也可以为编码后的数据。
其中,控制器单元6-11用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及输入数据发送至运算单元6-12。
具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
具体地,控制器单元6-11对获取到的计算指令进行解析,得到多个运算指令。进一步,控制器单元6-11将解析得到的多个运算指令以及获取到的输入数据发送至运算单元6-12。
上述处理器中,通过在运算单元中设置编码模块,对输入数据中的第一预设数字进行游程编码,从而实现了对输入数据的数据压缩,节省了带宽资源。
在其中一个实施例中,编码模块6-1001还用于根据所述第一预设数字的数据位宽,将大于游程阈值后排列在首位的所述第一预设数字进行字符编码;并根据所述游程位宽,对大于所述游程阈值后排列在首位的所述第一预设数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
其中,编码模块可以根据设定的游程位宽,得到游程阈值,例如:设定游程位宽为2bit,则游程最多能表示连续排列的三个第一预设数字,即游程阈值为3。
具体地,编码模块6-1001获取连续排列的第一预设数字的数目,并将获取到的连续排 列的第一预设数字的数目与游程阈值进行比较,若连续排列的第一预设数字的数目大于游程阈值,则游程编码停止,并将大于游程阈值后排列的首位第一预设数字作为第二预设数字看待,按照预先设定的第一预设数字的数据位宽进行字符编码。进一步,编码模块6-1001用游程代替大于游程阈值后排列的首位第一预设数字之后的其他第一预设数字。
在其中一个实施例中,编码模块6-1001还用于若所述输入数据的首位数字为所述第一预设数字,则根据所述第一预设数字的数据位宽,将所述第一预设数字进行字符编码;并根据所述游程位宽,对所述输入数据中位于所述首位数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
具体地,若输入数据中排列在首位的数据是第一预设数字,则编码模块6-1001将首位排列的该第一预设数字作为第二预设数字看待,按照预先设定的第一预设数字的数据位宽进行字符编码。进一步,若首位排列的第一预设数字之后还排列有第一预设数字,则编码模块6-1001用游程代替首位排列的第一预设数字之后的其他第一预设数字。
上述处理器中,根据游程位宽,对不同形式排列的第一预设数字进行游程编码,从而实现了多种情况下的数据压缩,实现了数据编码的多样性以及兼容性。
在其中一个实施例中,编码模块6-1001还用于利用第一预设字符,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换。
其中,若游程达到游程阈值,则编码模块6-1001选取出现频率较少的数据作为第一预设字符。具体地,当连续排列的第一预设数字的数目大于游程阈值,且首位排列的第一预设数字之后连续排列的第一预设数字的数目达到游程阈值时,在第二级流水线,将首位排列的字符编码后的第一预设数字以及其后连续排列的多个第一预设数字的游程用第一预设字符代替,从而进一步实现数据压缩。
上述处理器中,通过设置两级流水线执行编码操作,能够进一步实现数据压缩,从而提高了游程编码的效率
在其中一个实施例中,编码模块6-1001还用于若所述目标编码中存在与所述第一预设字符值相同的字符编码,则为与所述第一预设字符数值相同的字符编码设置附加字符校验位。
具体地,可以为与该第一预设字符数值相同的字符编码增加一个附加字符校验位,也可以增加多个附加字符校验位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符校验位,并将该附加字符校验位设置在字符串的最末位。
上述处理器中,通过为与第一预设字符数值相同的字符编码设置附加字符校验位,能够将第一预设字符和与第一预设字符数值相同的字符编码进行区分,从而解决了第一预设字符的定义冲突问题。
在其中一个实施例中,编码模块6-1001还用于用第二预设字符对所述第一预设字符进行替换;若所述目标编码中存在与所述第二预设字符值相同的字符编码,则为与所述第二预设字符数值相同的字符编码设置附加字符校验位。
具体地,选取出现频率更少的数据作为第二预设字符,编码模块用该第二预设字符对 第一预设字符进行替换。可以为与该第二预设字符数值相同的字符编码增加一个附加字符校验位,也可以增加多个附加字符校验位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符校验位,并将该附加字符校验位设置在字符串的最末位。
上述处理器中,通过第二预设字符对第一预设字符进行替换,并为与第二预设字符数值相同的字符编码设置附加字符校验位,能够将第二预设字符和与第二预设字符数值相同的字符编码进行区分,从而解决了第二预设字符的定义冲突问题;同时,通过选取出现频率更少的第二预设字符进行区分,能够进一步减少处理器的额外负担。
在其中一个实施例中,如图46所示,提供了一种处理器6-2000,该处理器6-2000包括运算单元6-12、与运算单元6-12邻近设置的存储单元6-10以及控制器单元6-11,控制器单元6-11连接于运算单元6-12与存储单元6-10之间。其中,运算单元6-12包括编码模块6-2001,该编码模块6-2001包括控制信号接口6-2002、缓存6-2003、多个寄存器6-2004、配置模块6-2005以及输出模块6-2006。
其中,控制信号接口6-2002作为外部输入的硬件接口,用于实现编码模块6-2001与控制器单元6-11之间的连接以及数据传输。
其中,缓存6-2003分别与缓存6-2003邻近设置的寄存器6-2004、配置模块6-2005以及输出模块6-2006连接,用于存储输入数据、第一预设字符、第二预设字符以及第一预设字符编码。
作为一种可选的实施方式,缓存6-2003包括输入数据缓存6-20031、以及预设字符缓存6-20032,预设字符缓存6-20032包括第一预设字符缓存6-20033、第二预设字符缓存6-20034以及第一预设字符编码缓存6-20035;
其中,输入数据缓存6-20031用于存储输入该编码模块6-2001中的待编码数据;第一预设字符缓存6-20033用于存储第一预设字符;第二预设字符缓存6-20034用于存储第二预设字符;第一预设字符编码缓存6-20035用于存储将第一预设字符进行编码得到的第一预设字符编码。
其中,多个寄存器6-2004,用于存储多级流水线的执行结果。
具体地,每一级流水线对应一个寄存器6-2004,寄存器6-2004用于存储与其对应的那一级流水线执行数据编码后得到的中间编码结果。
其中,配置模块6-2005用于对第一预设字符进行编码,得到第一预设字符编码,并将第一预设字符编码存储至缓存6-2003中。
其中,输出模块6-2006用于存储并输出编码数据。
具体地,输出模块6-2006可以存储当前码流已经编码完成的数据,并将编码后的数据输出至运算单元6-12中参与转发和运算。
上述处理器中,通过对编码模块进行改进,通过为每一级流水线设置段间寄存器,能够存储各级流水线执行过程中的中间编码结果;通过在配置模块中对第一预设字符提前进行编码并存储在缓存中,当字符定义冲突需要进行替换时,直接用缓存中存储的第一预设字符编码进行字符替换,从而省去了重复编码的过程。
本申请提供的解码方法,可以应用于如图47所示的处理器6-3000中。该处理器6-3000包括运算单元6-12、与运算单元6-12邻近设置的存储单元6-10以及控制器单元6-11,控制器单元6-11连接于运算单元6-12与存储单元6-10之间。其中,运算单元6-12包括解码模块6-3001,该解码模块6-3001用于将编码数据中的游程按照数据位宽进行字符编码,得到第一预设数字。
具体地,解码模块6-3001可以将编码数字中的游程按照设定的数据位宽进行字符编码,得到一个或多个连续排列的第一预设数字。需要说明的是,通过解码模块6-3001解码得到的第一预设数字的数目与游程表示的所述第一预设数字的数目相同。
其中,存储单元6-10用于存储原始数据以及编码后的数据,并与控制器单元6-11以及运算单元6-12之间进行数据传输。
具体地,该存储单元6-10可以是设置在处理器6-3000内部的缓存器和/或寄存器。该存储单元6-10可以是非易失性存储器或易失性存储器,此处不做具体限定。存储单元6-10与控制器单元6-11以及运算单元6-12之间传输的数据形式可以为原始数据,也可以为编码后的数据。
其中,控制器单元6-11用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及输入数据发送至运算单元6-12。
具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
具体地,控制器单元6-11对获取到的计算指令进行解析,得到多个运算指令。进一步,控制器单元6-11将解析得到的多个运算指令以及获取到的输入数据发送至运算单元6-12。
上述处理器中,通过在运算单元中设置解码模块,对游程编码过的数据进行字符编码,恢复为原始数据参与运算,从而在数据压缩的前提下保证运算正确性。
在其中一个实施例中,解码模块6-3001还用于识别所述编码数据,得到字符编码及预设字符编码,并根据所述数据位宽,将所述预设字符编码进行展开,得到一个所述第一预设数字的字符编码以及游程阈值;将所述游程阈值按照所述数据位宽进行展开,得到多个连续排列的所述第一预设数字。
具体地,在第一级流水线,解码模块6-3001用排列在前的一个第一预设数字的字符编码以及其后排列的游程阈值来代替编码数据中的第一预设字符和/或第二预设字符。进一步,在第二级流水线,解码模块6-3001用多个连续排列的第一预设数字来代替排列在第一预设数字的字符编码之后的游程阈值。
上述处理器中,通过设置两级流水线执行解码操作,提高了解码的效率。
在其中一个实施例中,解码模块6-3001还用于若所述编码数据中包括多个数值相同的字符编码,则通过判断所述字符编码是否包括附加字符校验位来识别所述预设字符编码。
具体地,解码模块6-3001将字符编码的数据长度与设定的数据位宽进行比较,字符编 码的数据长度与设定的数据位宽相等,则判断该字符编码中没有设置附加字符校验位,将没有设置附加字符校验位的字符编码识别为预设字符编码。
在其中一个实施例中,如图48所示,提供了一种处理器6-4000,该处理器6-4000包括运算单元6-12、与运算单元6-12邻近设置的存储单元6-10以及控制器单元6-11,控制器单元6-11连接于运算单元6-12与存储单元6-10之间。其中,运算单元6-12包括解码模块6-4001,该解码模块6-4001包括控制信号接口6-4002、缓存6-4003、多个寄存器6-4004以及输出模块6-4005。
其中,控制信号接口6-4002作为外部输入的硬件接口,用于实现解码模块6-4001与控制器单元6-11之间的连接以及数据传输。
其中,缓存6-4003与其邻近设置的寄存器6-4004以及输出模块6-4005连接,用于存储编码数据。
其中,多个寄存器6-4004,用于存储多级流水线的执行结果。
具体地,每一级流水线对应一个寄存器6-4004,寄存器6-4004用于存储与其对应的那一级流水线执行数据编码后得到的中间编码结果。
其中,输出模块6-4005用于存储并输出解码后的数据。
具体地,输出模块6-4005可以存储当前码流已经解码完成的数据,并将解码后的数据输出至运算单元6-12中参与转发和运算。
上述处理器中,通过对解码模块进行改进,通过为每一级流水线设置段间寄存器,能够存储各级流水线执行过程中的中间编码结果;通过多级流水线并行执行解码操作,从而进一步提高解码效率。
在其中一个实施例中,运算单元6-12包括主处理电路6-101和至少一个从处理电路6-102,至少一个从处理电路6-102均连接至主处理电路6-101,主处理电路6-101与分支处理电路6-103(一个或多个)连接,分支处理电路6-103与一个或多个从处理电路6-102连接。
其中,分支处理电路6-103用于执行转发主处理电路6-101与从处理电路6-102之间的数据或指令。主处理电路6-101用于与存储单元6-10之间进行原始数据及编码数据的数据传输。主处理电路6-101包括编码模块6-1001,该编码模块6-1001用于利用两级流水线对原始数据进行游程编码,并将编码后的数据通过数据I/O单元6-203广播发送至从一个或多个从处理电路6-102进行矩阵乘法运算。从处理电路6-1002包括编码模块6-1001,该编码模块6-1001用于对乘法运算的运算结果进行游程编码,并将编码后的数据发送至主处理电路6-101进行累加和激活运算。
在其中一个实施例中,从处理电路6-1002还包括解码模块6-3001,该解码模块6-3001用于利用两级流水线,对从处理电路6-102接收到的编码数据进行解码,并将解码后的数据发送至从处理电路6-102中参与矩阵乘法运算。主处理电路6-101还包括解码模块6-3001,该解码模块6-3001用于利用两级流水线,对主处理电路6-101接收到的编码后的运算结果进行解码,并将解码后的数据发送至主处理电路6-101中参与累加和激活运算。
在其中一个实施例中,处理器还可以包括控制器电路6-11,该控制器电路6-11包括:指令存储单元6-110、指令处理单元6-111和存储队列单元6-113。
其中,指令存储单元6-110,用于存储人工神经网络运算关联的计算指令。
指令处理单元6-111,用于对计算指令解析得到多个运算指令。
存储队列单元6-113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令和/或计算指令。
作为一种可选的实施方式,主处理电路6-101还可以包括:转换处理电路6-1110、激活处理电路6-1111、加法处理电路6-1112中的一种或任意组合;
转换处理电路6-1110,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路6-1111,用于执行主处理电路内数据的激活运算;
加法处理电路6-1112,用于执行加法运算或累加运算。
所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
在一个实施例中,当接收到编码指令后,处理器6-1000或处理器6-2000可执行如图49所示的编码方法,包括以下步骤:
步骤6-202,获取输入数据。
其中,输入数据指的是原始数据,即待编码数据。具体地,处理器从存储单元中获取待编码数据,并将获取到的待编码数据发送至运算单元的编码模块中。
步骤6-204,根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示连续排列的所述第一预设数字的数目。
其中,游程位宽指的是游程在总线上所占用的数据长度。第一预设数字一般用来指代输入数据中出现频率较高的数字,例如:稀疏化神经网络中,稀疏数据模型中会出现大量 连续排列的的零值,因此,将零值作为第一预设数字进行编码。
具体地,处理器中的编码模块可以用游程来代替输入数据中的第一预设数字,例如:稀疏化神经网络中,输入数据为{1,0,0,0,2,0,3,0,0},设定游程位宽为2bit,第一预设数字为0,按照8bit的数据位宽对该输入数据进行编码。
输入数据为:1, 0,0,0,2, 0,3, 0,0
编码结果为:00000001, 11,00000010, 01,00000011, 10
其中,用游程11表示输入数据中连续排列的三个0;用游程01表示输入数据中的一个0;用游程10表示输入数据中连续排列的两个0。
上述编码方法中,通过将待编码数据中的第一预设数字进行游程编码,并用游程表示连续排列的第一预设数字的数目,能够对大量连续出现的第一预设数字进行数据压缩,节省了带宽资源。
作为一个可选的实施方式,如图49所示的编码方法中还包括以下步骤:
步骤6-302,对所述输入数据进行统计,得到所述第一预设数字的出现频率。
例如:稀疏化神经网络中,通过统计待编码数据发现80%的0都是连续3个或3个以下出现,也就是说,很少出现3个以上的0连续出现的情况。
步骤6-304,根据所述第一预设数字的出现频率,设定所述游程位宽。
具体地,根据步骤6-302中统计的第一预设数字0的出现频率,设定游程位宽。优选的,可以将游程位宽设定为2bit。
在其中一个实施例中,步骤6-204具体包括以下步骤:
步骤6-2042,将所述输入数据拆分为第二预设数字和所述第一预设数字。
其中,第二预设数字包括除第一预设数字以外的其他数字,一般用来指代输入数据中除了出现频率较高的数字以外的其他数字,例如:稀疏化神经网络中,一般将稀疏数据模型中的零值作为第一预设数字,将稀疏数据模型中的非零值作为第二预设数字。
步骤6-2044,根据所述游程位宽,得到游程阈值。
其中,游程阈值指的是游程最多能够表示的连续排列的的第一预设数字的数目。具体地,处理器中的编码模块可以根据设定的游程位宽,得到游程阈值,例如:设定游程位宽为2bit,则游程最多能表示连续排列的三个第一预设数字,即游程阈值为3。
步骤6-2046,若所述第二预设数字后连续排列的所述第一预设数字的数目小于或等于所述游程阈值,则将所述第二预设数字后连续排列的多个所述第一预设数字进行编码,得到所述游程。
具体地,处理器中的编码模块获取第二预设数字后连续排列的第一预设数字的数目,并将获取到的第二预设数字后连续排列的第一预设数字的数目与游程阈值进行比较,判断第二预设数字后连续排列的第一预设数字的数目是否小于或等于游程阈值,若第二预设数字后连续排列的第一预设数字的数目小于或等于游程阈值,则用游程代替第二预设数字后连续排列的多个第一预设数字,从而实现对第二预设数字后连续排列的多个第一预设数字的数据压缩。编码模块首先获取到第二预设数字1后面连续排列着三个第一预设数字0, 而游程位宽为2bit的游程最多能表示连续排列的三个第一预设数字,即游程阈值为3,那么,可以用游程11来代替第二预设数字1后面连续排列的三个第一预设数字0。
在其中一个实施例中,提供了另一种编码方法,包括以下步骤:
步骤6-402,若连续排列的所述第一预设数字的数目大于所述游程阈值,则根据所述第一预设数字的数据位宽,将大于所述游程阈值后排列在首位的所述第一预设数字进行字符编码。
其中,可以根据处理器的需求提前设定第一预设数字的数据位宽。可选的,可以将第一预设数字设定为8bit的数据位宽,也可以设定为16bit的数据位宽,此处不做具体限定。
具体地,处理器中的编码模块获取连续排列的第一预设数字的数目,并将获取到的连续排列的第一预设数字的数目与游程阈值进行比较,判断连续排列的第一预设数字的数目是否大于游程阈值,若连续排列的第一预设数字的数目大于游程阈值,则游程编码停止,并将大于游程阈值后排列的首位第一预设数字作为第二预设数字看待,按照预先设定的第一预设数字的数据位宽进行字符编码。
步骤6-404,根据所述游程位宽,对大于所述游程阈值后排列在首位的所述第一预设数字之后的其他所述第一预设数字进行编码,得到所述游程。
具体地,用游程代替大于游程阈值后排列的首位第一预设数字之后的其他第一预设数字,从而实现对大于游程阈值后排列的首位第一预设数字之后的多个第一预设数字的数据压缩。
举例说明,稀疏化神经网络中,输入数据为{1,0,0,0,0,2,0,3,0,0},设定游程位宽为2bit,第一预设数字为0,则其他非零值1、2和3均为第二预设数字,第一预设数字以及第二预设数字的数据位宽均为8bit,对该输入数据进行编码。
输入数据为:1, 00,0,0,2, 0,3, 0,0
编码结果为:00000001, 0000000011,00000010, 01,00000011, 10
编码模块首先获取到连续排列着四个第一预设数字0,而游程位宽为2bit的游程最多能表示连续排列的三个第一预设数字,即游程阈值为3,那么,将排列在首位的第一预设数字0按照8bit的数据位宽字符编码,并将其后连续排列的三个第一预设数字0进行编码,即用游程11来代替其后连续排列的三个第一预设数字0。
在其中一个实施例中,提供了另一种编码方法,包括:若所述输入数据的首位数字为所述第一预设数字,则根据所述第一预设数字的数据位宽,将所述第一预设数字进行字符编码。
具体地,若输入数据中排列在首位的数据是第一预设数字,则根据数字+游程的编码规则,不能用游程将该第一预设数字进行替换,应将首位排列的该第一预设数字作为第二预设数字看待,按照预先设定的第一预设数字的数据位宽进行字符编码。
举例说明,稀疏化神经网络中,输入数据为{0,1,0,0,2,0,3,0,0},设定游程位宽为2bit,第一预设数字为0,则其他非零值1、2和3均为第二预设数字,第一预设数字以及第二预设数字的数据位宽均为8bit,对该输入数据进行编码。
输入数据为: 0,1, 0,0,2, 0,3, 0,0
编码结果为:00000000, 0000000110,00000010, 01,00000011, 10
编码模块将首位排列的第一预设数字0按照8bit的数据位宽字符编码,并将其他第一预设数字以及第二预设数字按照如图49所示的编码方法进行编码。
作为一种可选的实施方式,若首位排列的第一预设数字之后还排列有第一预设数字,则根据所述游程位宽,对所述输入数据中首位排列的所述第一预设数字之后的其他所述第一预设数字进行编码,得到所述游程。
具体地,用游程代替首位排列的第一预设数字之后的其他第一预设数字,从而实现对首位排列的第一预设数字之后的其他第一预设数字的数据压缩。
举例说明,稀疏化神经网络中,输入数据为{0,0,0,0,2,0,3,0,0},设定游程位宽为2bit,第一预设数字为0,则其他非零值1、2和3均为第二预设数字,第一预设数字以及第二预设数字的数据位宽均为8bit,对该输入数据进行编码。
输入数据为: 0, 0,0,0,2, 0,3, 0,0
编码结果为:00000000, 11,00000010, 01,00000011, 10
编码模块将首位排列的第一预设数字0按照8bit的数据位宽字符编码,将其后连续排列的三个第一预设数字0进行编码,即用游程11来代替其后连续排列的三个第一预设数字0,并将其他第一预设数字以及第二预设数字按照上述编码方法进行编码。
上述编码方法中,根据游程位宽,对不同形式排列的第一预设数字进行游程编码,从而实现了多种情况下的数据压缩,实现了数据编码的多样性以及兼容性。
在其中一个实施例中,提供了另一种编码方法,包括:利用第一预设字符,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换。
其中,选取出现频率较少的数据按照第一预设字符的数据位宽进行字符编码,并将字符编码后的字符作为第一预设字符。例如:选取出现频率较少的数据64按照第一预设字符的数据位宽8bit进行字符编码,得到01000000,将01000000作为第一预设字符。
作为一种可选的实施方式,当连续排列的第一预设数字的数目大于游程阈值,且首位排列的第一预设数字之后连续排列的第一预设数字的数目达到游程阈值时,在第二级流水线,将首位排列的字符编码后的第一预设数字以及代替其后连续排列的多个第一预设数字的游程用第一预设字符代替,从而进一步实现数据压缩。
在其中一个实施例中,该编码方法还包括以下步骤:
步骤6-502,获取第一预设字符编码,其中,所述第一预设字符编码为在配置模块中对所述第一预设字符进行编码后得到的字符编码。
具体地,选取出现频率较少的数据作为第一预设字符(zero literal),编码模块中的配置模块将第一预设字符(zero literal)提前进行编码,得到第一预设字符编码(zero code)。
步骤6-504,利用所述第一预设字符编码,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换。
具体地,将步骤6-502中的第一预设字符编码(zero code)替换字符编码后的第一预 设数字,以及字符编码后的第一预设数字后的游程。
举例说明,
输入数据为:1, 00,0,0,2, 0,3, 0,0
编码结果为:00000001, 0000000011,00000010, 01,00000011, 10
第二级编码结果为:00000001, 01000000,00000010, 01,00000011, 10
在第二级流水线,选取出现频率较少的数据64作为第一预设字符(zero literal),对第一预设字符64提前进行编码,得到第一预设字符编码01000000,用第一预设字符编码01000000对首位排列的字符编码后的第一预设数字00000000以及用于表示其后连续出现的三个第一预设数字0的游程11进行代替。
上述编码方法中,通过设置两级流水线执行编码操作,能够进一步实现数据压缩,从而提高了游程编码的效率;同时,通过将第一预设字符提前进行编码,从而省去了重复编码的过程。
在其中一个实施例中,提供了另一种编码方法,包括:为与所述第一预设字符数值相同的字符编码设置附加字符校验位。
其中,编码模块可以为与该第一预设字符数值相同的字符编码增加一个附加字符校验位,也可以增加多个附加字符校验位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符校验位,并将该附加字符校验位设置在字符串的最末位。可以将该附加字符校验位的字符设置为0或1,并将该字符编码连同附加字符一起输出至运算单元参与运算。
举例说明,选取出现频率较少的数据64作为第一预设字符(zero literal),编码模块将预设字符64提前进行编码,得到第一预设字符编码(zero code)01000000。若出现数值为64的字符编码,为了将该字符编码与第一预设字符进行区分,编码模块为与该字符编码01000000增加一个附加字符校验位,即增加1bit,并将增加的附加字符校验位设置为0,则输出的数据为01000000 0,输出的数据长度为9bit。
上述编码方法中,通过为与第一预设字符数值相同的字符编码设置附加字符校验位,能够将第一预设字符和与第一预设字符数值相同的字符编码进行区分,从而解决了第一预设字符的定义冲突问题。
在其中一个实施例中,提供了另一种编码方法,包括:用第二预设字符对第一预设字符进行替换;若所述目标编码中存在与所述第二预设字符值相同的字符编码,则为与第二预设字符数值相同的字符编码设置附加字符校验位。
具体地,选取出现频率更少的数据作为第二预设字符,编码模块用该第二预设字符对第一预设字符进行替换。可以为与该第二预设字符数值相同的字符编码增加一个附加字符校验位,也可以增加多个附加字符校验位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符校验位,并将该附加字符校验位设置在字符串的最末位。
举例说明,若出现数值为64的字符编码,为了将该字符编码与第一预设字符进行区分,选取出现频率更少的数据128作为第二预设字符(zero extra),编码模块用第二预设 字符128将数值为64的字符编码进行替换。进一步,若出现数值为128的字符编码,为了将该字符编码与第二预设字符进行区分,编码模块为数值为128的字符编码10000000增加一个附加字符校验位,即增加1bit,并将增加的附加字符校验位设置为1,则输出的数据为100000001,输出的数据长度为9bit。
上述编码方法中,通过第二预设字符对第一预设字符进行替换,并为与第二预设字符数值相同的字符编码设置附加字符校验位,能够将第二预设字符和与第二预设字符数值相同的字符编码进行区分,从而解决了第二预设字符的定义冲突问题;同时,通过选取出现频率更少的第二预设字符进行区分,能够进一步减少处理器的额外负担。
在一个实施例中,当接收到解码指令后,处理器6-3000或处理器6-4000可执行如图50所示的解码方法,包括以下步骤:
步骤6-602,获取编码数据。
具体地,处理器获取经过编码模块进行游程编码后的数据。
步骤6-604,根据数据位宽和游程位宽,对所述编码数据进行识别,得到字符编码及游程。
其中,游程位宽指的是游程在总线上所占用的数据长度。处理器可以根据需求提前设定数据位宽。可选的,可以设定8bit的数据位宽,也可以设定16bit的数据位宽,此处不做具体限定。字符编码指的是数据的另一种形式,例如:十进制的数据可以经过编码得到二进制的字符编码。游程用于表示编码数据中第一预设数字的数目。
具体地,处理器获取编码数据的数据长度,并将获取到的编码数据的数据长度与设定的数据位宽和游程位宽进行比较,从而从该编码数据中识别出字符编码和游程。例如:设定数据位宽为8bit,游程位宽为2bit,若获取到的编码数据的数据长度为8bit,则将该编码数据识别为字符编码;若获取到的编码数据的数据长度为2bit,则将该编码数据识别为游程。
步骤6-606,将所述游程按照数据位宽进行字符编码,得到第一预设数字。
其中,第一预设数字一般用来指代输入数据中出现频率较高的数字,例如:稀疏化神经网络中,稀疏数据模型中会出现大量连续排列的的零值,因此,将零值作为第一预设数字。
具体地,处理器中解码模块将编码数字中的游程按照设定的数据位宽进行字符编码,得到一个或多个连续排列的第一预设数字。
上述解码方法中,通过对游程编码过的数据进行字符编码,恢复为原始数据参与运算,从而在数据压缩的前提下保证运算正确性。
在其中一个实施例中,步骤6-604具体包括以下步骤:
步骤6-6042,获取所述编码数据中字符串的数据长度。
其中,编码数据中包括多个字符串,解码装置获取编码数据中每一字符串的数据长度,根据每一字符串的数据长度,对该字符串进行识别。
步骤6-6044,若所述字符串的数据长度与所述数据位宽相等,则将所述字符串识别为 字符编码;若所述字符串的数据长度与所述游程位宽相等,则将所述字符串识别为游程。
具体地,解码装置根据步骤6-604中设定的数据位宽和游程位宽,判断字符串的数据长度与数据位宽是否相等,若该字符串的数据长度与该数据位宽相等,则将该字符串识别为字符编码。进一步,判断字符串的数据长度与游程位宽是否相等,若该字符串的数据长度与该游程位宽相等,则将该字符串识别为游程。
在其中一个实施例中,步骤6-606具体包括:
将所述游程按照所述数据位宽进行字符编码,得到一个所述第一预设数字。
或将所述游程按照所述数据位宽进行字符编码,得到多个连续排列的所述第一预设数字。
其中,所述多个连续排列的所述第一预设数字中,所述第一预设数字的数目与所述游程表示的所述第一预设数字的数目相同。
举例说明,
编码数据为:00000001, 11,00000010, 01,00000011, 10
解码结果为:1, 0,0,0,2, 0,3, 0,0
设定数据位宽为8bit,第一预设数字为0,通过步骤6-6044将编码数据中的游程11字符编码为三个连续排列的第一预设数字0;通过步骤6-6042将编码数据中的游程01字符编码为一个第一预设数字0;通过步骤6-6044将编码数据中的游程10字符编码为两个连续排列的第一预设数字0。
在一个实施例中,当接收到解码指令后,处理器6-3000或处理器6-4000可执行如图51所示的解码方法,包括以下步骤:
步骤6-702,获取编码数据。
具体地,处理器获取经过编码模块进行游程编码后的数据。
步骤6-704,对所述编码数据进行识别,得到字符编码及预设字符编码,其中,所述预设字符编码包括第一预设字符编码及第二预设字符编码。
其中,字符编码即预设字符编码均指的是数据的另一种形式,例如:十进制的数据可以经过编码得到二进制的字符编码。第一预设字符和第二预设字符指的是出现频率较少的数据,例如:数据64可以作为第一预设字符使用;数据128可以作为第二预设字符使用。
作为一种可选的实施方式,若所述编码数据中包括多个数值相同的字符编码,则通过判断所述字符编码是否包括附加字符校验位来识别所述预设字符编码。
步骤6-706,根据数据位宽,将所述预设字符编码进行展开,得到一个第一预设数字的字符编码以及游程阈值,其中,所述游程阈值排列在所述第一预设数字的字符编码之后。
其中,处理器可以根据需求提前设定数据位宽。可选的,可以设定8bit的数据位宽,也可以设定16bit的数据位宽,此处不做具体限定。第一预设数字一般用来指代输入数据中出现频率较高的数字,例如:稀疏化神经网络中,稀疏数据模型中会出现大量连续排列的的零值,因此,将零值作为第一预设数字。游程阈值指的是游程最多能够表示的连续排列的的第一预设数字的数目。
具体地,在第一级流水线,处理器中的解码装置用排列在前的一个第一预设数字的字符编码以及其后排列的游程阈值来代替编码数据中的第一预设字符和/或第二预设字符。
步骤6-708,将所述游程阈值按照所述数据位宽进行展开,得到多个连续排列的所述第一预设数字,其中,所述第一预设数字的数目与所述游程阈值表示的所述第一预设数字的数目相同。
其中,处理器可以根据需求提前设定数据位宽。可选的,可以设定8bit的数据位宽,也可以设定16bit的数据位宽,此处不做具体限定。游程用于表示编码数据中第一预设数字的数目。
具体地,在第二级流水线,处理器中的解码装置用多个连续排列的第一预设数字来代替排列在第一预设数字之后的游程阈值。
举例说明,
编码数据为:00000001, 01000000,00000010, 01,00000011, 10
第一级解码结果为:00000001, 0000000011,00000010, 01,00000011, 10
第二级解码结果为:1, 00,0,0,2, 0,3, 0,0
设定数据位宽为8bit,第一预设数字为0,在第一级流水线,将编码数据中的第一预设字符01000000进行字符编码,得到一个第一预设数字0以及排列在该第一预设数字0之后的游程阈值11;在第二级流水线,将游程阈值11字符编码为三个连续排列的第一预设数字0;将编码数据中的游程01字符编码为一个第一预设数字0;将编码数据中的游程10字符编码为两个连续排列的第一预设数字0。
上述解码方法中,通过设置两级流水线,能够提高解码的效率。
在其中一个实施例中,步骤6-704具体包括以下步骤:
步骤6-7042,获取所述编码数据中字符串的值。
其中,编码数据中包括多个字符串,解码装置获取编码数据中每一字符串的数据值,根据每一字符串的数据值,对该字符串进行识别。
步骤6-7044,若所述字符串的值与编码时使用的预设字符的值不同,则将所述字符串识别为字符编码;若所述字符串的值与编码时使用的预设字符的值相同,则将所述字符串识别为预设字符编码。
具体地,解码装置根据如图49所示的编码方法中设定的预设字符的值,判断字符串的值与编码时使用的预设字符的值是否相等,若该字符串的值与编码时使用的预设字符的值不相等,则将该字符串识别为字符编码;若该字符串的值与编码时使用的预设字符的值相等,则将该字符串识别为预设字符编码。
在其中一个实施例中,步骤6-704还包括:若所述编码数据中包括多个数值相同的字符编码,则通过判断所述字符编码是否包括附加字符校验位来识别所述预设字符编码。
作为一种可选的实施方式,具体包括以下步骤:
步骤6-7042a,获取所述字符编码的数据长度。
具体地,处理器中的解码装置获取多个数值相同的字符编码其中一个字符编码的数据 长度。
步骤6-7044b,将所述字符编码的数据长度与所述数据位宽进行比较。
具体地,处理器中的解码装置将步骤6-7042中获取到的字符编码的数据长度与设定的数据位宽进行比较,判断步骤6-7042中获取到的字符编码的数据长度与设定的数据位宽是否相等。
步骤6-7046c,若所述字符编码的数据长度与所述数据位宽相等,则判断所述字符编码中没有设置所述附加字符校验位。
例如:若设定的数据位宽为8bit,获取到的字符编码的数据长度为8bit,获取到的字符编码的数据长度与设定的数据位宽相等,则判断获取到的字符编码中没有设置附加字符校验位;若获取到的字符编码的数据长度为9bit,获取到的字符编码的数据长度大于设定的数据位宽,则判断获取到的字符编码中设置有1bit的附加字符校验位。
步骤6-7048d,将没有设置所述附加字符校验位的字符编码识别为所述预设字符编码。
具体地,若步骤6-7046c中判断获取到的字符编码中没有设置附加字符校验位,则将该字符编码识别为预设字符编码。
在其中一个实施例中,将该解码方法应用到处理器中,包括:将解码后的数据在运算单元中进行转发和运算,所述运算包括乘法运算、累加运算以及激活运算。
作为一种可选的实施方式,具体包括以下步骤:
步骤6-802,若解码后的数据中包括设置有所述附加字符校验位的字符编码,则删除所述附加字符校验位。
其中,该字符编码可以包括一个附加字符校验位,也可以包括多个附加字符校验位,此处不做具体限定。基于节约带宽的考虑,优选为设置一个附加字符校验位,并将该附加字符校验位设置在该字符编码的最末位。可以将该附加字符校验位的字符设置为0或1。
需要说明的是,附加字符校验位只是用来区分真实数据和与真实数据数值相同的预设字符,并不作为有效数据使用,因此,在解码后的数据参与运算之前,需要先将该附加字符校验位删除。
步骤6-804,将删除所述附加字符校验位的字符编码在所述运算单元中进行转发和运算。
具体地,处理器中的主处理电路可以将编码后的数据发送至从处理电路,从处理电路将接收到的编码数据进行解码,并将解码后的数据执行乘法运算,得到多个中间运算结果。进一步,从处理电路将乘法运算得到的多个中间运算结果分别进行编码,并将编码后的多个中间运算结果发送至主处理电路,主处理电路将接收到的编码数据进行解码,并将解码后的数据执行累加和激活运算,得到多个中间运算结果。进一步,主处理电路将累加和激活运算得到的多个中间运算结果分别进行编码,并将编码后的多个中间运算结果发送至存储单元进行存储。
在一个实施例中,提供了一种编码装置,包括:输入数据获取模块901以及游程获取模块6-902,其中:
输入数据获取模块6-901,用于获取输入数据;
游程获取模块6-902,用于根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示所述第一预设数字的数目。
在一个实施例中,提供了一种解码装置,包括:编码数据获取模块6-1001、编码数据识别模块6-1002以及第一预设数字获取模块6-1003,其中:
编码数据获取模块6-1001,用于获取编码数据;
编码数据识别模块6-1002,用于根据数据位宽和游程位宽,对所述编码数据进行识别,得到字符编码及游程。
第一预设数字获取模块6-1003,用于将所述游程按照所述数据位宽进行展开,得到第一预设数字。
在一个实施例中,提供了一种解码装置,包括:编码数据获取模块6-1101、编码数据识别模块6-1102、预设字符编码展开模块6-1103以及游程阈值展开模块6-1104,其中:
编码数据获取模块6-1101,用于获取编码数据;
编码数据识别模块6-1102,用于对所述编码数据进行识别,得到字符编码及预设字符编码,其中,所述预设字符编码包括第一预设字符编码及第二预设字符编码;
预设字符编码展开模块6-1103,用于根据数据位宽,将所述预设字符编码进行展开,得到一个第一预设数字的字符编码以及游程阈值,其中,所述游程阈值排列在所述第一预设数字的字符编码之后;
游程阈值展开模块6-1104,用于将所述游程阈值按照所述数据位宽进行展开,得到多个连续排列的所述第一预设数字的字符编码,其中,所述第一预设数字的数目与所述游程阈值表示的所述第一预设数字的数目相同。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取输入数据;
根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示连续排列的所述第一预设数字的数目。
在一个实施例中,提供了另一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取编码数据;
根据数据位宽和游程位宽,对所述编码数据进行识别,得到字符编码及游程;
将所述游程按照所述数据位宽进行展开,得到第一预设数字。
在一个实施例中,提供了另一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取编码数据;
对所述编码数据进行识别,得到字符编码及预设字符编码,其中,所述预设字符编码包括第一预设字符编码及第二预设字符编码;
根据数据位宽,将所述预设字符编码进行展开,得到一个第一预设数字的字符编码以及游程阈值,其中,所述游程阈值排列在所述第一预设数字的字符编码之后;
将所述游程阈值按照所述数据位宽进行展开,得到多个连续排列的所述第一预设数字,其中,所述第一预设数字的数目与所述游程阈值表示的所述第一预设数字的数目相同。
7、数据压缩方法、处理器、数据压缩装置及存储介质
本申请提供的一种数据压缩方法,可以应用于如图52所示的处理器7-1000中。该处理器7-1000包括运算单元7-12、与运算单元7-12邻近设置的存储单元7-10以及控制器单元7-11,控制器单元7-11连接于运算单元7-12与存储单元7-10之间。其中,运算单元7-12包括数据压缩模块7-1001,该数据压缩模块7-1001用于根据当前码流的流水线级数、当前码流已经处理的字符数量以及多个码流中已经处理的最小字符数量,判断是否会发生死锁。
具体地,数据压缩模块7-1001先获取当前码流的流水线级数,当前码流可以为2级流水线,也可以为3级流水线或多级流水线,此处不做具体限定。数据压缩模块7-1001通过每完成一次字符处理后进行字符数量累加,从而获取当前码流已经处理的字符数量。在多个码流并行进行数据压缩的过程中,数据压缩模块7-1001获取每个码流已经处理的字符数量,并从中获取多个码流中已经处理的最小字符数量。
进一步,数据压缩模块7-1001通过公式(1)判断数据压缩进程是否会发生死锁:
P current-P min≥stagenum    (1)
其中,P current表示当前码流已经处理的字符数量;P min表示多个码流中已经处理的最小字符数量;stagenum表示当前码流的流水线级数。
也就是说,若当前码流已经处理的字符数量与多个码流中已经处理的最小字符数量之间的差值大于或等于当前码流的流水线级数时,则判断数据压缩进程会发生死锁。
其中,该数据压缩模块7-1001用于当发生死锁时,向当前码流中插入第一预设字符。
具体地,选取出现频率较少的数据作为第一预设字符。当数据压缩模块7-1001判断数据压缩进程发生死锁时,则将选取的第一预设字符插入当前码流的输出模块中。由于第一预设字符的码长很大,插入第一预设字符的输出模块中的数据量肯定能占满该输出模块的存储容量。
作为一种可选的实施方式,数据压缩模块7-1001可以将选取的第一预设字符提前进行编码,得到第一预设字符编码,当数据压缩进程发生死锁时,直接将第一预设字符编码写入输出模块中。
具体地,可以选取出现频率较少的数据65作为第一预设字符(fake literal),数据压缩模块7-1001将第一预设字符65提前进行编码,得到第一预设字符编码(fake code)01000001,将第一预设字符编码01000001写入当前码流的输出模块中。
其中,存储单元7-10用于存储原始数据以及编码后的数据,并与控制器单元7-11以及运算单元7-12之间进行数据传输。
具体地,该存储单元7-10可以是设置在处理器7-1000内部的缓存器和/或寄存器。该存储单元7-10可以是非易失性存储器或易失性存储器,此处不做具体限定。存储单元7-10与控制器单元7-11以及运算单元7-12之间传输的数据形式可以为原始数据,也可以为编码后的数据。
其中,控制器单元7-11用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及输入数据发送至运算单元7-12。
具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
具体地,控制器单元7-11对获取到的计算指令进行解析,得到多个运算指令。进一步,控制器单元7-11将解析得到的多个运算指令以及获取到的输入数据发送至运算单元7-12。
上述处理器中,实现了多个码流并行进行数据压缩;通过数据压缩模块根据当前码流的流水线级数、当前码流已经处理的字符数量以及多个码流中已经处理的最小字符数量,判断数据压缩进程是否会发生死锁,当发生死锁时,向输出数据长度较短的码流插入第一预设字符,从而避免多个码流并行压缩过程中压缩速度差异过大,进而彻底解决了死锁现象;同时,通过将预设字符提前编码为预设字符编码,省去了重复编码的过程,从而减小了进程死锁造成的损失。
在其中一个实施例中,数据压缩模块7-1001还用于为与第一预设字符数值相同的真实数据设置附加字符位。
具体地,数据压缩模块7-1001可以为与该第一预设字符数值相同的真实数据增加一个附加字符位,也可以增加多个附加字符位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符位,并将该附加字符位设置在字符串的最末位。例如:选取出现频率较少的数据65作为第一预设字符(fake literal),数据压缩模块7-1001将预设字符65提前进行编码,得到第一预设字符编码(fake code)01000001。若出现数值为65的真实数据,为了将该真实数据与第一预设字符进行区分,数据压缩模块7-1001为与该真实数据01000001增加一个附加字符位,即增加1bit,并将增加的附加字符位设置为0,则输出的数据为01000001 0,输出的数据长度为9bit。
上述处理器中,通过为与第一预设字符数值相同的真实数据设置附加字符位,能够将第一预设字符和与第一预设字符数值相同的真实数据进行区分,从而解决了第一预设字符的定义冲突问题。
在其中一个实施例中,数据压缩模块7-1001还用于用第二预设字符对第一预设字符进行替换,并为与第二预设字符数值相同的真实数据设置附加字符位。
具体地,选取出现频率更少的数据作为第二预设字符,数据压缩模块7-1001用该第二预设字符对第一预设字符进行替换。可以为与该第二预设字符数值相同的真实数据增加一个附加字符位,也可以增加多个附加字符位,此处不做具体限定。基于节约带宽的考虑, 优选为增加一个附加字符位,并将该附加字符位设置在字符串的最末位。例如:若出现数值为65的真实数据,为了将该真实数据与第一预设字符进行区分,选取出现频率更少的数据129作为第二预设字符(fake extra),数据压缩模块7-1001用第二预设字符129将数值为65的真实数据进行替换。进一步,若出现数值为129的真实数据,为了将该真实数据与第二预设字符进行区分,数据压缩模块7-1001为数值为129的真实数据10000001增加一个附加字符位,即增加1bit,并将增加的附加字符位设置为1,则输出的数据为100000011,输出的数据长度为9bit。
上述处理器中,通过第二预设字符对第一预设字符进行替换,并为与第二预设字符数值相同的真实数据设置附加字符位,能够将第二预设字符和与第二预设字符数值相同的真实数据进行区分,从而解决了第二预设字符的定义冲突问题;同时,通过选取出现频率更少的第二预设字符进行区分,能够进一步减少处理器的额外负担。
在其中一个实施例中,如图53所示,提供了一种处理器7-2000,该处理器7-2000包括运算单元7-12、与运算单元7-12邻近设置的存储单元7-10以及控制器单元7-11,控制器单元7-11连接于运算单元7-12与存储单元7-10之间。其中,运算单元7-12包括数据压缩模块7-2001,该数据压缩模块7-2001包括控制信号接口7-2002、缓存7-2003、多个寄存器7-2004、累加模块7-2005、配置模块7-2006以及输出模块7-2007。
其中,控制信号接口7-2002作为外部输入的硬件接口,用于实现数据压缩模块7-2001与控制器单元7-11之间的连接以及数据传输。
其中,缓存7-2003分别与缓存7-2003邻近设置的寄存器7-2004、配置模块7-2006以及输出模块7-2007连接,用于存储输入数据、中间数据、第一预设字符、第二预设字符以及第一预设字符编码。
作为一种可选的实施方式,缓存7-2003包括输入数据缓存7-20031、中间数据缓存7-20032以及预设字符缓存7-20033,预设字符缓存7-20033包括第一预设字符缓存7-20034、第二预设字符缓存7-20035以及第一预设字符编码缓存7-20036;
其中,输入数据缓存7-20031用于存储输入该数据压缩模块7-2001中的待编码数据;中间数据缓存7-20032用于存储各级流水线执行编码过程中得到的中间结果;第一预设字符缓存7-20034用于存储第一预设字符;第二预设字符缓存7-20035用于存储第二预设字符;第一预设字符编码缓存7-20036用于存储将第一预设字符进行编码得到的第一预设字符编码。
其中,多个寄存器7-2004,用于存储多级流水线的执行结果。
具体地,每一级流水线对应一个寄存器7-2004,寄存器7-2004用于存储与其对应的那一级流水线执行数据编码后得到的中间编码结果。当前码流对输入数据完成数据编码后,在累加模块7-2005中进行一次数量累加,即将累加模块7-2005中的计数器加1,代表当前码流已经完成了一个数据的编码过程。
其中,累加模块7-2005与其邻近设置的寄存器7-2004连接,用于存储当前码流已经处理的字符数量。
具体地,获取累加模块7-2005中计数器的数目,可以得到当前码流已经完成编码的数据数目。进一步,多个码流并行进行数据压缩的过程中,通过获取每一码流的累加模块7-2005中的计数器数目,可以得到每一码流已经完成编码的数据数目,通过将多个码流已经完成编码的数据数目进行比较,得到多个码流中已经完成编码的最小数据数目。
其中,配置模块7-2006用于对第一预设字符进行编码,得到第一预设字符编码,并将第一预设字符编码存储至缓存7-2003中。
具体地,可以选取出现频率较少的数据65作为第一预设字符(fake literal),,配置模块7-2006将第一预设字符65提前进行编码,得到第一预设字符编码(fake code)01000001,将第一预设字符编码01000001存储至缓存7-2003中。
其中,输出模块7-2007用于存储并输出当前码流的输出数据。
具体地,输出模块7-2007可以存储当前码流已经编码完成的数据。当输出模块7-2007中存储的输出数据未占满输出模块7-2007的存储容量时,输出模块7-2007也可以存储第一预设字符或第一预设字符编码。
作为一种可选的实施方式,当多个码流中每一码流的输出模块7-2007中的输出数据均占满输出模块7-2007的存储容量时,将多个输出模块7-2007中的数据统一进行输出。
上述处理器中,通过对数据压缩模块进行改进,通过为每一级流水线设置段间寄存器,能够存储各级流水线执行过程中的中间编码结果;通过设置累加模块对多个码流已经完成编码的字符数量进行记录,从而判断压缩进程是否会产生死锁,是否需要向输出模块中插入第一预设字符;通过在配置模块中对第一预设字符提前进行编码并存储在缓存中,当发生死锁时,直接将缓存中存储的第一预设字符编码写入输出模块中,从而省去了重复编码的过程,实现了减少进程死锁造成的损失的效果。
在其中一个实施例中,请参阅图54,将本申请提供的数据压缩方法应用于如图53所示的处理器7-2000中。多个码流(stream 1至stream n)并行进行数据压缩,输出模块7-2007的存储容量为8bit,其中,每一个stream均为三级流水线。
需要说明的是,多个码流(stream)并行进行数据压缩时,为了保证数据存储格式的一致性,所有stream的输入和输出都是同步进行的,也就是说,同时向多个stream输入数据,通过各级流水线进行数据编码,将编码后的输出数据存储在输出模块中,所有stream的输出模块统一进行数据输出。
其中,输出模块7-2007优选为先入先出双口存储器(First Input First Output,FIFO)。FIFO的规则是检测到第一级流水线全空才进行输入,检测到最后一级流水线全非空才进行输出,也就是说,当每个stream的输出模块中的输出数据均占满该输出模块的存储容量时,将多个输出模块中的数据统一进行输出。中间各级流水线可以独立进行,只有在前一级空或后一级满的情况下,进程会产生死锁,从而导致阻塞等待。
向当前码流stream 1中输入8bit的数据,该输入数据通过stream 1的第一级流水线stage1、第二级流水线stage2以及第三级流水线stage3逐级进行编码。需要说明的是,在数据压缩进程无堵塞的情况下,每个时钟周期(即每拍)数据向下一级流水线前进一步。 最终通过编码得到1bit输出数据,并在第四拍将该1bit输出数据存储在stream 1的输出模块FIFO中。同时,另一码流stream n与stream 1并行执行数据压缩,stream n中也输入8bit的数据,该输入数据通过stream n的第一级流水线stage1、第二级流水线stage2以及第三级流水线stage3逐级进行编码,最终通过编码得到16bit输出数据,并在第四拍将该16bit输出数据存储在streamn的输出模块FIFO中。此时,第五拍之后stream n的输出模块FIFO已经被占满,stream n完成了两个数据的压缩。但是,第五拍之后stream 1只完成了两个数据的压缩,因此,stream 1的输出模块FIFO中只有2bit的数据存储,并未占满stream 1的输出模块,并不足以输出8bit的数据。因此,stream n开始阻塞,需等待其他stream的输出模块FIFO中均占满8bit的输出数据时才能进行数据输出,此时,所有stream都无法进行数据输入,也无法进行数据输出。由于输入数据填满stream 1的所有流水级共用了三拍,在第三拍之后的五拍,每拍输出一个编码得到的1bit数据至输出模块FIFO中,因此,在第八拍之后,stream 1中输入的所有数据都处理完毕,但输出模块FIFO中只存储有5bit的输出数据,仍未占满8bit的输出模块FIFO,而由于stream n处于阻塞等待,无法获取输入数据,因此,整个数据压缩进程进入死锁状态。
用上述公式对该实施例中的死锁状态进行判定,若当前码流为stream 1,当前码流已经处理的字符数量P current为5,所有stream中stream n只完成了两个数据的数据编码,故多个码流中已经处理的最小字符数量P min为2,当前码流的流水线级数stagenum为3,根据上述公式进行判断,得到当前码流stream 1已经处理的字符数量与多个码流中已经处理的最小字符数量之间的差值大于或等于当前码流stream 1的流水线级数,则判断数据压缩进程会发生死锁。
进一步,由于所有stream的输出模块需要统一进行数据输出,而stream 1的输出模块FIFO中的数据长度并未占满该输出模块FIFO的存储容量,因此,向stream 1的输出模块FIFO中插入第一预设字符。
选取出现频率较少的数据65作为第一预设字符(fake literal),将第一预设字符65提前进行编码,得到第一预设字符编码(fake code)01000001,将第一预设字符编码01000001写入stream 1的输出模块FIFO中。此时,stream 1的输出模块FIFO中的数据长度为13bit,已经占满该输出模块FIFO的存储容量8bit。同理,若stream 2的输出模块FIFO中的数据长度也未占满8bit,则继续将第一预设字符编码01000001写入stream 2的输出模块FIFO中。以此类推,直到所有stream的输出模块FIFO中的输出数据均占满8bit时,将多个输出模块FIFO中的数据统一进行输出。
在其中一个实施例中,如图55所示,提供了一种处理器7-3000,该处理器7-3000包括运算单元7-12、与运算单元7-12邻近设置的存储单元7-10以及控制器单元7-11,控制器单元7-11连接于运算单元7-12与存储单元7-10之间。其中,运算单元7-12包括数据压缩模块7-1001以及数据解压模块7-1002,其中,数据压缩模块7-1001的具体功能与处理器7-1000中数据压缩模块7-1001的功能一致,此处不再赘述;数据解压模块7-1002用于对编码数据进行解码,若解码后的数据中包括第一预设字符或第一预设字符编码,则将第 一预设字符或第一预设字符编码删除。
具体地,数据解压模块7-1002进行数据解压的过程中,若得到出现频率较少的第一预设字符或第一预设字符编码,则将解压出来的第一预设字符或第一预设字符编码直接删除,不作为有效数据使用。
上述处理器中,数据解压模块将解压出来的第一预设字符或第一预设字符编码直接删除,不作为有效数据使用,从而在数据压缩的前提下保证运算的正确性。
在其中一个实施例中,运算单元7-12包括主处理电路7-101和至少一个从处理电路7-102,至少一个从处理电路7-102均连接至主处理电路7-101,主处理电路7-101与分支处理电路7-103(一个或多个)连接,分支处理电路7-103与一个或多个从处理电路7-102连接。
其中,分支处理电路7-103用于执行转发主处理电路7-101与从处理电路7-102之间的数据或指令。主处理电路7-101用于与存储单元7-10之间进行原始数据及编码数据的数据传输。主处理电路7-101包括数据压缩模块7-1001,该数据压缩模块7-1001用于实现多个码流的并行数据压缩,并将压缩后的数据通过数据I/O单元7-203广播发送至从一个或多个从处理电路7-102进行矩阵乘法运算。从处理电路7-1002包括数据压缩模块7-1001,该编码装置7-1001用于对乘法运算的运算结果进行多个码流的并行数据压缩,并将压缩后的数据发送至主处理电路7-101进行累加和激活运算。
在其中一个实施例中,从处理电路7-1002还包括数据解压模块7-1002,该数据解压模块7-1002用于实现多个码流的并行数据解压,并将解压后的数据发送至从处理电路7-102中参与矩阵乘法运算。主处理电路7-101还包括数据解压模块7-1002,该数据解压模块7-1002用于利用多级流水线,对主处理电路7-101接收到的压缩后的运算结果进行并行数据解压,并将解压后的数据发送至主处理电路7-101中参与累加和激活运算。
在其中一个实施例中,处理器还可以包括控制器电路7-11,该控制器电路7-11包括:指令存储单元7-110、指令处理单元7-111和存储队列单元7-113。
其中,指令存储单元7-110,用于存储人工神经网络运算关联的计算指令。
指令处理单元7-111,用于对计算指令解析得到多个运算指令。
存储队列单元7-113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令和/或计算指令。
作为一种可选的实施方式,主处理电路7-101还可以包括:转换处理电路7-1110、激活处理电路7-1111、加法处理电路7-1112中的一种或任意组合;
转换处理电路7-1110,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路7-1111,用于执行主处理电路内数据的激活运算;
加法处理电路7-1112,用于执行加法运算或累加运算。
所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
在一个实施例中,当接收到数据压缩指令后,处理器7-1000、处理器7-2000或处理器7-3000可执行如图56所示的编码方法,包括以下步骤:
步骤7-202,获取当前码流的流水线级数以及当前码流已经处理的字符数量。
其中,当前码流的流水线级数用于表示当前码流经过多级流水线执行数据压缩。当前码流已经处理的字符数量指的是当前码流已经完成数据压缩的字符数量。具体地,处理器中的数据压缩模块可以获取当前码流的流水线级数以及当前码流已经处理的字符数量。
步骤7-204,获取多个码流中已经处理的最小字符数量。
其中,多个码流中已经处理的最小字符数量指的是多个码流已经完成数据压缩的字符数量中的最小字符数量。具体地,处理器中的数据压缩模块可以获取每个码流已经处理的字符数量,并从中获取多个码流中已经处理的最小字符数量。
步骤7-206,若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
其中,多个码流并行执行数据压缩的过程中,所有码流的输入和输出都是同步进行的,但压缩进程中无法输出且无法输入时,多个码流的压缩进程会发生死锁。第一预设字符指的是出现频率较少的数据,例如:可以选取出现频率较少的数据65作为第一预设字符。
具体地,数据压缩模块通过公式(1)判断数据压缩进程是否会发生死锁:
P current-P min≥stagenum    (1)
其中,P current表示当前码流已经处理的字符数量;P min表示多个码流中已经处理的最小字符数量;stagenum表示当前码流的流水线级数。
进一步,若流水线会发生死锁,意味着当前码流的输出码长不够,不足以进行输出,则数据压缩模块将第一预设字符插入当前码流的输出模块中,从而保证当前码流的输出码长能够满足输出要求。
上述数据压缩方法中,根据当前码流的流水线级数、当前码流已经处理的字符数量以及多个码流中已经处理的最小字符数量,判断流水线是否会发生死锁,若流水线会发生死锁,则向当前码流的输出模块中插入第一预设字符,从而保证多个码流的输出数据码长相同,避免了多个码流压缩速度差异过大而导致的死锁现象。
在其中一个实施例中,该数据压缩方法还包括:所述当前码流每完成一次字符处理后,在累加模块中进行字符数量累加。
作为一种可选的实施方式,具体包括以下步骤:
步骤7-302,对输入数据进行编码,得到第一中间编码结果。
其中,编码包括哈夫曼编码以及游程编码中的至少一种。具体地,请参阅图54,以stream1为例,将缓存中的输入数据输入至第一级流水线stage1,在stage1中对该输入数据进行编码,得到第一中间编码结果。
步骤7-304,将所述第一中间编码结果输入下一级流水线,对所述第一中间编码结果进行再次编码,得到第二中间编码结果。
具体地,将步骤7-302中得到的第一中间编码结果输入至第二级流水线stage2,在stage2中对该第一中间编码结果进行再次编码,得到第二中间编码结果。
步骤7-306,在最后一级流水线完成所述输入数据在所述当前码流中的数据编码,并在所述累加模块中进行一次字符数量累加。
其中,累加模块用于存储当前码流已经处理的字符数量。具体地,将步骤7-304中得到的第二中间编码结果输入至第三级流水线stage3,由于stream 1为三级流水线的码流,stage3为stream 1的最后一级流水线,因此,在stage3中对该第二中间编码结果进行再次编码,即在stage3完成了该输入数据在当前码流stream 1中的数据编码。进一步,当前码流完成输入数据的数据编码后,即完成了一次字符处理,在累加模块的计数器中进行一次字符数量累加,通过获取累加模块中的字符数量,得到当前码流已经处理的字符数量。
在其中一个实施例中,步骤7-204具体包括以下步骤:
步骤7-2042,所述多个码流中的每一码流每完成一次字符处理后,在所述每一码流对应的累加模块中进行字符数量累加。
请参阅步骤7-302至步骤7-306实现每一码流的字符数据累加。
步骤7-2044,获取多个所述每一码流对应的累加模块中的字符数量。
具体地,请继续参阅图54,获取stream 1至stream n中的N个累加模块的计数器值,得到N个字符数量。
步骤7-2046,对多个所述每一码流对应的累加模块中的字符数量进行对比,得到所述多个码流中已经处理的最小字符数量。
具体地,将步骤7-2044中获取到的N个字符数量进行对比,得到最小值,即得到多个码流中已经处理的最小字符数量。
上述数据压缩方法中,通过在累加模块中对多个码流已经完成编码的字符数量进行记录,从而得到当前码流已经处理的字符数量以及多个码流中已经处理的最小字符数量,进 而能够判断压缩进程是否会产生死锁,是否需要向输出模块中插入第一预设字符。
在其中一个实施例中,步骤7-206具体包括以下步骤:
步骤7-2062,在配置模块中对所述第一预设字符进行编码,得到第一预设字符编码。
具体地,在配置模块中对第一预设字符进行编码,得到第一预设字符编码,并将该第一预设字符编码存储至缓存中。
步骤7-2064,当流水线发生死锁时,在所述当前码流的输出模块中插入所述第一预设字符编码。
具体地,当流水线发生死锁时,数据压缩模块将缓存中的第一预设字符编码直接插入当前码流的输出模块中,从而省去了重复编码的过程,实现了减少进程死锁造成的损失的效果。
在其中一个实施例中,该数据压缩方法还包括:
步骤7-402,获取多个码流中输出模块的存储容量,其中,所述多个码流中每一码流的输出模块的存储容量一致。
其中,输出模块优选为先入先出双口存储器(First Input First Output,FIFO)。
步骤7-404,当所述每一码流的输出模块中的输出数据均占满所述存储容量时,将多个所述输出模块中的数据统一进行输出。
具体地,当每个码流的输出模块中的输出数据均占满该输出模块的存储容量时,将多个输出模块中的数据统一进行输出。中间各级流水线可以独立进行,只有在前一级空或后一级满的情况下,进程会产生死锁,从而导致阻塞等待。
在其中一个实施例中,该数据压缩方法还包括:为与所述第一预设字符数值相同的真实数据设置附加字符位。
具体地,数据压缩模块可以为与该第一预设字符数值相同的真实数据增加一个附加字符位,也可以增加多个附加字符位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符位,并将该附加字符位设置在字符串的最末位,从而将第一预设字符和与第一预设字符数值相同的真实数据进行区分,能够解决第一预设字符的定义冲突问题。
在其中一个实施例中,该数据压缩方法还包括:
步骤7-502,用第二预设字符对所述第一预设字符进行替换。
具体地,数据压缩模块可以选取出现频率更少的数据作为第二预设字符,并用该第二预设字符对第一预设字符进行替换。
步骤7-504,为与所述第二预设字符数值相同的真实数据设置附加字符位。
具体地,数据压缩模块可以为与该第二预设字符数值相同的真实数据增加一个附加字符位,也可以增加多个附加字符位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符位,并将该附加字符位设置在字符串的最末位,从而解决了第二预设字符的定义冲突问题,能够进一步减少处理器的额外负担。
在其中一个实施例中,该数据压缩方法还包括:
步骤7-602,获取编码数据,并对所述编码数据进行解码,得到第一输出数据。
具体地,将缓存中的编码数据发送至数据解压模块进行解压,得到解压后的数据,即第一输出数据。
步骤7-604,若所述第一输出数据中包括所述第一预设字符或所述第一预设字符编码,则将所述第一预设字符或所述第一预设字符编码删除,得到第二输出数据。
具体地,数据解压模块进行数据解压的过程中,若得到出现频率较少的第一预设字符或第一预设字符编码,则将解压出来的第一预设字符或第一预设字符编码直接删除,不作为有效数据使用,从而在数据压缩的前提下保证运算的正确性。
在一个实施例中,提供了一种数据压缩装置,包括:第一获取模块7-701、第二获取模块7-702以及预设字符插入模块7-703,其中:
第一获取模块7-701,用于获取当前码流的流水线级数以及当前码流已经处理的字符数量;
第二获取模块7-702,用于获取多个码流中已经处理的最小字符数量;
预设字符插入模块7-703,用于若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取当前码流的流水线级数以及当前码流已经处理的字符数量;
获取多个码流中已经处理的最小字符数量;
若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
应当清楚的是,本申请实施例中的计算机程序被处理器执行时实现的步骤,与上述实施例中的方法的各个步骤的执行过程一致,具体可参见上文的描述,此处不再赘述。
8、数据压缩解压装置和数据压缩方法
如图57-图61所示,为本申请在其中一个实施例中提出的数据压缩解压装置8-100的结构框图,该数据压缩解压装置8-100包括:控制电路8-110和压缩解压电路8-120。该控制电路8-110与压缩解压电路8-120连接。其中,
控制电路8-110用于根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据。压缩解压电路8-120用于根据所述压缩控制指令获取所述待压缩数据,并对所述待压缩数据进行压缩得到压缩数据。
本实施例中的数据压缩解压装置,通过控制电路根据输入数据中的待压缩数据的起始地址和数据长度得到压缩控制指令,之后在基于该压缩控制指令对待压缩数据进行压缩,该方法提供了一种选择完整数据中的部分数据进行压缩的方法,提高数据压缩的灵活性。
在其中一个实施例中,数据压缩解压装置8-100中的压缩解压电路8-120可以为多个,每一压缩解压电路8-120均连接至控制电路8-110。其中,该控制电路8-110将得到压缩控制指令发送至各个压缩解压电路8-120,各个压缩解压电路8-120根据接收的压缩控制指令对接收的数据单元中的待压缩数据进行压缩。其中,各个压缩解压电路8-120接收的数据单元组成输入数据。进一步地,控制电路8-110可以用于根据压缩解压电路8-120的数量确定所述数据单元的大小,并根据所述数据单元的大小以及预设的方向参数确定数据读取窗口,根据数据读取窗口得到读写控制指令;压缩解压电路8-120还可以用于根据所述读写控制指令从所述输入数据中读取数据单元。
进一步地,如图58所示,该压缩解压电路8-120可以包括:第一读写电路8-121、第一存储器8-122以及压缩解压部件8-123。其中,第一读写电路8-121与控制电路8-110以及所述第一存储器8-122连接,所述压缩解压部件8-123分别与所述控制电路8-110和所述第一存储器8-123连接。
其中,第一读写电路8-121用于根据所述读写控制指令从所述输入数据中读取数据单元,并将所述数据单元写入所述第一存储器8-122;所述控制电路8-110还用于根据所述第一存储器8-122存储的所述数据单元中的待压缩数据的起始地址和数据长度得到压缩控制指令;所述压缩解压部件8-123,用于根据所述压缩控制指令对所述数据单元中的待压缩数据进行压缩。
在其中一个实施例中,如图59-图60所示,该数据压缩解压装置8-100还包括非压缩数据通路8-130以及第二读写电路8-140,该非压缩数据通路8-130与第一存储器8-123与连接。该第二读写电路8-140与所述控制电路以及所述第一存储器连接。
其中,非压缩数据通路8-130用于所述非压缩数据的传输。具体地,第二读写电路8-140根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。具体地,控制电路8-110还用于根据数据单元中的非压缩数据得到写出控制指令;第二读写电路8-140用于根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。可选地,该各个压缩解压电路8-120可以共用同一非压缩数据通路8-130(图59)。可选地,各个压缩解压电路8-120也可以独立设置一非压缩数据通路8-130(图60)。
进一步地,如图61所示,该数据压缩解压装置8-100还包括第二存储器8-150。该第二存储器8-150与第二读写电路8-140连接。该第二存储器8-150可以用于存储输入数据。可选地,该第二存储器8-150还可以与第二读写电路8-140以及压缩解压电路的压缩解压部件8-123连接。该第二存储器还可以用于存储第二读写电路8-140通过非压缩数据通路8-130写出的数据单元中的非压缩数据,以及压缩解压部件8-123输出的压缩数据。可选地,第二存储器8-150按照预设格式存储压缩数据以及非压缩数据。可选地,该预设格式可以根据输入数据进行设置。例如,可以预设按照各个数据单元在输入数据中的位置存储各个数据单元对应的压缩数据和非压缩数据。可选地,在按照各个数据单元在输入数据中的位置存储各个数据单元对应的压缩数据和非压缩数据的基础上,还可以按照各个数据单元中待压缩数据与非压缩数据的位置关系,对应存储各个压缩数据和非压缩数据。
在其中一个实施例中,可以将输入数据分块存储于第二存储器8-150中。其中,数据块可以根据数据压缩解压电路中的压缩解压部件8-123的单次压缩解压能力确定。可选地,可以根据压缩解压部件执行一次压缩解压可以压缩或解压的最大字节数衡量压缩解压部件单次压缩解压能力。可选地,可以将数据块按照预设格式摆放于第二存储器中。应当清楚的是数据块按照预设格式摆放是指将各个数据块按照预设格式存取于存取介质(例如第二存储器)的相应位置。该预设格式可以为一维紧密、二维紧密或者其他维度的紧密。
可选地,可以根据输入数据的特征将输入数据划分为多个数据块。可选地,该输入数据的特征可以包括数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中,数据的重要程度可以根据该数据出现的频率、数据大小等等特征来确定。可选地,在将输入数据划分为多个数据块时还可以考虑预设值,该预设值可以根据经验或者大数据分析获得。可选地,在将输入数据划分为多个数据块之前,可以筛除压缩数据中的“0”值。
可选地,在将输入数据划分为多个数据块,并按照预设格式摆放后,得到该输入数据中各个数据块的存储参数。输入数据中各个数据块的存储参数包括起始地址、块序列号、行号等等。该存储参数可以用于对输入数据进行读写操作。其中,数据块的块序列号可以用于区分不同的数据块。可选地,可以使用数字对数据块进行编号。
进一步地,数据压缩解压装置8-100可以对输入数据中的数据块进行整块压缩。具体地,控制电路8-110根据输入数据中待压缩的数据块的起始地址,以及数据块的数据长度,得到压缩控制指令。压缩解压电路8-120根据该压缩控制指令对应获取待压缩的数据块并对该数据块进行整块压缩,得到压缩数据。该压缩数据包括数据头和数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含数据块被压缩后的编码数据。可选地,得到的压缩数据被写入第二存储器。可选地,可以将得到的数据头按照对应的数据块在输入数据中的位置存储于第二存储器中。可选地,可以按照预设格式将数据体存储于第二存储器中。该预设格式可以为一维紧密、二维紧密或者其他维度的紧密。
可选地,该输入数据中不需要被压缩的数据块(非压缩数据),可以通过非压缩数据通路写出。具体地,控制电路8-110根据输入数据中不需要被压缩的数据块的起始地址以及数据长度,得到写出控制指令。第二读写电路8-140根据该写出控制指令将不需要被压缩的数据块从所述非压缩数据通路写出。可选地,第二读写电路8-140将不需要被压缩的数据块从所述非压缩数据通路写出至第二存储器。进一步地,将不需要被压缩的数据块与得到的数据体存储于第二存储器8-150上的同一预设存储区域。
本实施例中的数据压缩方法,通过对输入数据中需要压缩的数据块进行整块压缩,得到与各个需要压缩的数据块一一对应的数据头与数据体,即得到与每一数据块对应的压缩数据,将不需要压缩的数据块从非压缩数据通路写出,因此该方法实现了将输入数据中的部分数据进行分块压缩,提高了数据压缩效率。
但是在实际应用过程中,分数据块存储的输入数据中的数据块的大小,可能被划分的过大,或者划分的数据块的数量与压缩解压电路的数量不是整数倍,因此,无法很好的并行压缩各个需压缩的数据块。本申请提出的数据压缩解压装置可以很好的解决上述输入数 据的数据块划分不合理的情形。下面以上述实施例中的数据压缩解压装置8-100如何实现划分的数据块的数量与压缩解压电路的数量不是整数倍的输入数据中的部分数据为例,具体说明上述数据压缩解压装置8-100在输入数据在分块存储的情形下如何实现并行压缩。
在其中一个实施例中,控制电路8-110可以用于根据第一边沿与第二边沿得到读写参数,根据所述读写参数得到读写控制指令,其中,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述读写窗口中非整数据块位于所述读写窗口之外的边沿。压缩解压电路8-120第一读写电路8-121具体用于根据所述读写控制指令读取所述数据读取窗口中的数据单元,并按照所述数据单元在第二存储器中存储格式将所述数据单元写入所述第一存储器,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
进一步地,由于数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。因此,控制电路8-110可以用于根据所述第一存储器8-150中的数据单元中的完整数据块的起始地址和数据长度确定所述起始地址和所述数据长度。更进一步地,控制电路8-110具体用于根据所述第一存储器中的所述数据单元中非整数据块,得到所述写出控制指令。
具体地,数据压缩解压装置8-100的各个所述压缩解压电路8-120中的压缩部件可以用于并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块的编码数据。控制电路8-110,还可以用于得到写入控制指令,其中,所述写入控制指令用于控制所述第二读写电路将各个数据头按照对应的数据块在所述输入数据中的位置写入第二存储器,以及将各个数据体以及非压缩数据按照预设格式写入第二存储器。
本实施例中的数据压缩解压装置,通过压缩解压电路的数量确定所述数据单元的大小,根据所述数据单元的大小确定数据读取窗口,通过数据读取窗口获取各个压缩解压电路将处理的数据单元,即本实施向各个数据压缩解压电路分发哪些数据是通过设置数据读取窗口实现的,因此,在根据压缩解压电路的数量确定所述数据单元的大小的前提下,该方法可以将输入数据均分值各个压缩解压电路,进而实现输入数据的压缩并行。
基于同样的发明构思,如图62所示,本申请还提出了一种数据压缩方法,该种数据压缩方法被上述实施例中的数据压缩解压装置8-100执行,具体包括如下步骤:
步骤S8-610,根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据。
具体地,控制电路8-110根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据。
步骤S8-620,按照所述压缩控制指令将所述数据单元中的待压缩数据进行压缩,得到压缩数据。
具体地,压缩解压电路8-120按照所述压缩控制指令将所述数据单元中的待压缩数据进行压缩,得到压缩数据。可选地,压缩解压电路对待压缩数据进行压缩时,使用的数据压缩的算法可以是哈夫曼编码、游程编码、LZ77以及它们的任意组合等。
在其中一个实施例中,如图63所示,上述数据压缩方法还包括:
步骤S8-630,根据所述压缩解压电路的数量确定所述数据单元的大小,根据所述数据单元的大小以及预设的方向参数确定数据读取窗口,根据数据读取窗口得到读写控制指令。
具体地,控制电路8-110根据所述压缩解压电路的数量确定所述数据单元的大小,根据所述数据单元的大小确定数据读取窗口,根据数据读取窗口得到读写控制指令。具体地,数据读取窗口的大小等于输入数据的大小与压缩解压电路的数量的比值。可选地,可以通过设置窗口参数来设置数据读取窗口读取哪一位置的输入数据。可选地,该窗口参数可以包含四个方向参数,例如将各个方向的参数设定为:top(上)、bottom(下)、left(左)、right(右)。该四个方向参数可以根据数据读取窗口的边沿与预设的参照边沿之间的字节数来确定。例如,设定压缩解压电路的数量为4个,设定预设的参照边沿为到达输入数据占用的存取区域的边沿。输入数据包含5行,每行包含60个字节。此时,数据读取窗口(虚线框)的窗口参数可以为top=0、bottom=3、left=0、right=30。
步骤S8-640,根据所述读写控制指令从所述输入数据中读取数据单元。
具体地,压缩解压电路8-120的第一读写电路8-121根据所述读写控制指令从所述输入数据中读取数据单元。进一步地,第一读写电路8-121在读取数据单元后,将该数据单元写入该压缩解压电路的第一存储器8-122中。
在其中一个实施例中,所述数据压缩方法还包括:
步骤S8-650,根据所述数据单元中的非压缩数据得到写出控制指令。
其中,非压缩数据为输入数据中无需压缩的数据。具体地,控制电路8-110根据所述数据单元中的非压缩数据得到写出控制指令。
步骤S8-660,根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。
具体地,第二读写电路根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。可选地,将非压缩数据写出至第二存储器8-150。
在其中一个实施例中,第二存储器中的存储的输入数据包含多个数据块。可选地,在将输入数据划分为多个数据块时,可以根据输入数据的特征将输入数据划分为多个数据块。可选地,该输入数据的特征可以包括数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中,数据的重要程度可以根据该数据出现的频率、数据大小等等特征来确定。可选地,在将输入数据划分为多个数据块时还可以考虑预设值,该预设值可以根据经验或者大数据分析获得。可选地,在将输入数据划分为多个数据块之前,可以筛除压缩数据中的“0”值。
可选地,在将输入数据划分为多个数据块,并按照预设格式摆放后,得到该输入数据中各个数据块的存储参数。输入数据中各个数据块的存储参数包括起始地址、块序列号、 行号等等。该存储参数可以用于对输入数据进行读写操作。其中,数据块的块序列号可以用于区分不同的数据块。可选地,可以使用数字对数据块进行编号。
在其中一个实施例中,若第二存储器中的输入数据分数据块进行存储,则步骤S630包括:根据第一边沿与第二边沿得到读写参数,根据所述读写参数得到读写控制指令,其中,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述读写窗口中非整数据块位于所述读写窗口之外的边沿。
具体地,控制电路8-110根据第一边沿与第二边沿得到读写参数,根据所述读写参数得到读写控制指令,其中,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述读写窗口中非整数据块位于所述读写窗口之外的边沿。
例如,第二存储器中的输入数据如图64所示,该输入数据包含9个数据块,各个数据块的块序列号依次为0-8;图64中的虚线框数据读取窗口。该示例中,第一边沿为该虚线框的四个边沿,第二边沿为块序列号为1、3、4的数据块的边沿。
进一步地,控制电路8-110可以根据第一边沿与第二边沿之间的字节数得到窗口参数,之后再根据窗口参数,得到对应的读写参数。例如,承接上例,图64中每一数据块包含20个字节,每个数据块包含4行数据。该示例中,控制器110得到的数据读取窗口A的窗口参数可以为top=0、bottom=2、left=0、right=10。控制器根据窗口参数top=0、bottom=2、left=0、right=10,得到读写参数,该读写参数中起始地址可以为块序列号为0的数据块的起始地址,读取写参数中的数据长度可以为30个字节,读取写参数中的单次读取行数可以为6行,读取写参数中的读写次数可以为1次。应当清楚的是,读写参数也可以为其他数值,仅需保证基于该参数得到的读写控制指令可以准确的读取数据读取窗口中的数据。
在其中一个实施例中,在步骤S8-630之后还包括:按照所述数据单元读取前的存储格式将所述数据单元写入第一预设存储位置,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
具体地,压缩解压电路8-120的第一读写电路8-121按照所述数据单元读取前的存储格式将所述数据单元写入第一预设存储位置,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
进一步地,在压缩解压电路8-120的第一读写电路8-121按照所述数据单元读取前的存储格式将所述数据单元写入第一预设存储位置后,控制电路8-110可以根据该数据单元中的完整数据块和非整数据块得到压缩控制指令和写出控制指令。具体地,控制电路8-110首先根据所述第一存储器8-122中的数据单元中的完整数据块的起始地址和数据长度确定压缩控制指令中的起始地址和数据长度。之后,根据该起始地址和数据长度得到第一读写电路的读写控制指令。具体地,控制电路8-110根据所述第一存储器中的所述数据单元中非整数据块,得到所述写出控制指令。
在其中一个实施例中,若第一存储器中的数据单元中完整数据块为待压缩数据,非完整数据块为非压缩数据,步骤S8-620包括:
步骤S8-621,并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块压缩后的编码数据。
具体地,各个所述压缩解压电路中的压缩部件8-123并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块压缩后的编码数据。
例如,假设数据压缩解压装置8-100包含4个压缩解压电路8-120。使用0-3标识不同的压缩解压电路。每一压缩解压电路的第一读写电路通过数据读取窗口确定读取如图64所示的输入数据的一个数据单元,应当清楚的是,4个压缩解压电路读取的为不同的数据单元。在各个第一读写电路读取数据单元后,将读取的数据单元写入对应的第一存储器。设定,编号为0的压缩解压电路获取的数据单元为A;编号为1的压缩解压电路获取的数据单元为B;编号为20的压缩解压电路获取的数据单元为C;编号为3的压缩解压电路获取的数据单元为D。
4个压缩解压电路的压缩解压部件分别从对应的第一存储器中获取数据单元中的待压缩数据并进行整块压缩,得到多个压缩数据。具体地,编号为0的压缩解压电路获取块序列号为0的数据块,并进行压缩,得到包含数据头和数据体的压缩数据,数据头为head 0,数据体为data 0;编号为1的压缩解压电路获取块序列号为2的数据块,并进行压缩,得到包含数据头和数据体的压缩数据,数据头为head 2,数据体为data2;编号为3的压缩解压电路获取块序列号为6的数据块,并进行压缩,得到包含数据头和数据体的压缩数据,数据头为head 6,数据体为data6;编号为3的压缩解压电路获取块序列号为8的数据块,并进行压缩,得到包含数据头和数据体的压缩数据,数据头为head 8,数据体为data 8。
步骤S8-622,将各个数据头按照对应的数据块在所述输入数据中的位置写入第二预设存储位置,以及将各个数据体和非压缩数据按照预设格式写入第二预设存储位置。
具体地,控制电路8-110生成写入控制指令,控制第二读写电路将各个数据头按照对应的数据块在所述输入数据中的位置写入第二存储器,以及将各个数据体以及非压缩数据按照预设格式写入第二存储器。
承接上例,例如预设格式为二维紧密存储各个数据体以及非压缩数据,得到写入第二存储器中数据头、数据体以及非压缩数据。应当清楚的是,二维紧密摆放的各行的data和非压缩数据需对齐。无法对齐时使用NA补齐,NA可以为0值。其中,headA中包含head0和数据单元A中的非压缩数据的数据头;head B中包含head 2和数据单元B中的非压缩数据的数据头;head C中包含head 6和数据单元C中的非压缩数据的数据头;head D中包含head 8和数据单元D中的非压缩数据的数据头。
本实施例的数据压缩方法,各个压缩解压模块可以通过设置的数据读取窗口对应获取数据单元,并行对获取的数据单元中的待压缩数据进行压缩,并将非压缩数据通过非压缩数据通道写出,该方法可以有目的的选择输入数据进行并行压缩,数据压缩的可控性和效 率高。
9、数据压缩解压装置和数据解压方法
如图57-图61所示,为本申请在另一个实施例中提出的数据压缩解压装置8-100的结构框图,该数据压缩解压装置8-100包括:控制电路8-110和压缩解压电路8-120。该控制电路8-110与压缩解压电路8-120连接。其中,
控制电路8-110用于根据待解压数据中压缩数据的起始地址和长度得到解压控制命令,其中,所述待解压数据包含压缩数据和非压缩数据。压缩解压电路8-120用于根据所述解压控制命令解压所述待解压数据中的压缩数据。
本实施例中的数据压缩解压装置,其控制电路根据待解压数据中压缩数据的起始地址和长度得到解压控制命令,之后在基于该解压控制指令对读取的待解压数据在的压缩数据进行解压,该装置可以对同时包含压缩数据和非压缩数据的待解压数据的进行解压。
在其中一个实施例中,数据压缩解压装置8-100中的压缩解压电路8-120可以为多个,每一压缩解压电路8-120均连接至控制电路8-110。其中,该控制电路8-110将得到解压控制指令发送至各个压缩解压电路8-120,各个压缩解压电路8-120根据接收的解压控制指令对接收的待运算数据中的待解压数据中的压缩数据进行解压。其中,各个压缩解压电路8-120接收的待解压数据组成待运算数据。进一步地,控制电路8-110可以用于根据压缩解压电路的数量得到每一压缩解压电路8-120的读写控制命令。
各个压缩解压电路8-120还可以用于根据所述读写控制指令从所述待运算数据中读取待解压数据。
本实施例中的数据压缩解压装置和数据解压方法,根据压缩解压电路的数量得到每一压缩解压电路的读写控制命令,各个压缩解压电路用于根据所述读写控制命令从待运算数据中读取待解压数据,其中,所述待运算数据包含至少一个待解压数据,之后各个解压电路即可并行处理待解压数据,数据处理效率高。
进一步地,如图58所示,该压缩解压电路8-120可以包括:第一读写电路8-121、第一存储器8-122以及压缩解压部件8-123。其中,第一读写电路8-121与控制电路8-110以及所述第一存储器8-122连接,所述压缩解压部件8-123分别与所述控制电路8-110和所述第一存储器8-123连接。
其中,第一读写电路8-121用于根据从待运算数据中读取待解压数据,并将所述待解压数据写入所述第一存储器8-122;所述控制电路8-110还用于根据所述第一存储器8-122存储的所述待解压数据中的压缩数据的起始地址和数据长度得到解压控制指令;所述压缩解压部件8-123,用于根据所述解压控制指令对所述待解压数据中的压缩数据进行解压。
在其中一个实施例中,如图59-图60所示,该数据压缩解压装置8-100还包括非压缩数据通路8-130以及第二读写电路8-140,该非压缩数据通路8-130与第一存储器8-123与连接。该第二读写电路8-140与所述控制电路以及所述第一存储器连接。
其中,非压缩数据通路8-130用于所述非压缩数据的传输。具体地,第二读写电路8-140 根据所述写出控制指令将所述第一存储器上待解压数据中的非压缩数据从所述非压缩数据通路写出。具体地,控制电路8-110还用于根据待解压数据中的的非压缩数据得到写出控制指令;第二读写电路8-140用于根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。可选地,该各个压缩解压电路8-120可以共用同一非压缩数据通路8-130(图59)。可选地,各个压缩解压电路8-120也可以独立设置一非压缩数据通路8-130(图60)。
进一步地,如图61所示,该数据压缩解压装置8-100还包括第二存储器8-150。该第二存储器8-150与第二读写电路8-140连接。该第二存储器8-150可以用于存储待运算数据。可选地,所述待运算数据包含头段和数据段,所述头段包含多个数据头,所述数据段包含多个数据体和非压缩数据,所述数据头包含对应的数据体或非压缩数据的起始地址和数据长度,所述数据体包含对应的数据块的压缩编码数据。
可选地,该第二存储器8-150还可以与第二读写电路8-140以及压缩解压电路的压缩解压部件8-123连接。该第二存储器还可以用于存储第二读写电路8-140通过非压缩数据通路8-130写出的待解压数据中的非压缩数据,以及压缩解压部件8-123输出的解压数据。可选地,第二存储器8-150按照预设格式解压数据以及非压缩数据。可选地,该预设格式可以根据待运算数据压缩前的存储格式进行设置。
在其中一个实施例中,在待运算数据包含头段和数据段时,控制电路8-110具体用于根据当前待解压数据中的数据头,得到当前待解压数据中对应的数据体和非压缩数据的起始地址和数据长度,根据所述当前待解压数据中的数据体的起始地址和数据长度得到解压控制命令,以及根据所述当前待解压数据中的非压缩数据的起始地址和数据长度得到写出控制命令。压缩解压部件8-123具体用于根据所述解压控制命令解压所述当前待解压数据中的数据体,得到解压数据。
进一步地,控制电路8-110还用于获取与所述当前待解压数据对应的数据写入窗口的方向参数,并根据所述方向参数得到写入控制命令。该方向参数与各个压缩解压电路读取的输入数据中的数据单元的大小以及位置相关。其中,输入数据被非整压缩后得到与待运算数据。该数据单元中包含的完整数据块为待压缩数据,非整数据块为非压缩数据。输入数据被非整压缩的具体方式可以包括:首先,控制电路8-110根据压缩解压电路8-120的数量确定所述数据单元的大小,并根据所述数据单元的大小确定数据读取窗口,根据数据读取窗口得到读写控制指令;压缩解压电路8-120根据所述读写控制指令从所述输入数据中读取数据单元。之后,控制电路8-110根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据。压缩解压电路8-120根据所述压缩控制指令获取所述待压缩数据,并对所述待压缩数据进行压缩得到压缩数据,该压缩数据被存储于第二存储器的预设存储空间。最后,控制电路8-110还用于根据数据单元中的非压缩数据得到写出控制指令;第二读写电路8-140用于根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出至第二存储器的预设存储空间。第二存储器上预设存储空间的数据即为待运算数据。
具体地,第二读写电路8-140还用于根据所述写入控制命令将所述当前待解压数据中数据体的解压数据,写入第二存储器上与所述数据写入窗口对应的存储空间,以及通过非压缩数据通道将所述当前待解压数据中非压缩数据写入所述数据写入窗口对应的存储空间。应当清楚的是,数据读取窗口与对应的数据写入窗口使用的方向参数一致。
基于同样的发明构思,如图65所示,本申请还提出了一种数据解压方法,该种数据解压方法被上述实施例中的数据压缩解压装置8-100执行,具体包括如下步骤:
步骤S9-610,根据待解压数据中压缩数据的起始地址和长度得到解压控制命令,其中,所述待解压数据包含压缩数据和非压缩数据。
具体地,控制电路8-110根据待解压数据中压缩数据的起始地址和长度得到解压控制命令,其中,所述待解压数据包含压缩数据和非压缩数据。
步骤S9-620,根据所述解压控制命令解压所述待解压数据中的压缩数据。
具体地,压缩解压电路8-120根据所述解压控制命令解压所述待解压数据中的压缩数据。可选地,压缩解压电路对待压缩数据进行压缩时,使用的数据压缩算法可以是哈夫曼编码、游程编码、LZ77以及它们的任意组合等。应当清楚的是,压缩解压电路8-120选择使用的解压算法需与得到待运算数据使用的压缩算法对应,例如,使用Huffman算法对输入数据进行压缩得到待运算数据,则在解压该通过Huffman算法得到的待运算数据时也需要使用对应的Huffman算法,该过程中对输入数据进行压缩得到待运算数据,与对待运算数据解压得到解压数据互为逆过程。
在其中一个实施例中,上述数据压缩方法还包括:
步骤S9-630,根据压缩解压电路的数量得到读写控制命令。
具体地,控制电路8-110根据压缩解压电路的数量得到读写控制命令。进一步地,一般来说控制电路将待运算数据中同一压缩解压电路得到的待压缩数据分发至一个压缩解压电路进行解压。即使用了几个压缩解压电路进行数据压缩得到待运算数据,在对待运算数据进行解压时需要同一数量的压缩解压电路。
步骤S9-640,根据所述读写控制命令从待运算数据中获取待解压数据。
具体地,压缩解压电路8-120的第一读写电路8-121根据所述读写控制命令从待运算数据中获取待解压数据。进一步地,第一读写电路8-121在读取待解压数据后,将该待解压数据写入该压缩解压电路的第一存储器8-122中。
在其中一个实施例中,所述数据压缩方法还包括:
步骤S9-650,根据所述待解压数据的非压缩数据得到写出控制指令。
其中,非压缩数据为待运算数据中无需解压的数据。具体地,控制电路8-110根据所述待解压数据的非压缩数据得到写出控制指令。
步骤S9-660,根据所述写出控制指令将所述非压缩数据从非压缩数据通路写出。
具体地,第二读写电路根据所述写出控制指令将所述非压缩数据从非压缩数据通路写出。可选地,将非压缩数据写出至第二存储器8-150。
在其中一个实施例中,上述数据解压方法,还可以包括:获取待运算数据,并将所述 待运算数据存储至第二存储器,其中,所述待运算数据结构如图66所示,包含头段(head)和数据段(data),所述头段包含多个数据头,所述数据段包含多个数据体和非压缩数据,所述数据头包含对应的数据体或非压缩数据的起始地址和数据长度,所述数据体包含对应的数据块的压缩编码数据。其中,headA中包含head 0和数据单元A中的非压缩数据的数据头;headB中包含head 2和数据单元B中的非压缩数据的数据头;head C中包含head 6和数据单元C中的非压缩数据的数据头;head D中包含head 8和数据单元D中的非压缩数据的数据头。
具体地,压缩解压电路8-120的第一读写电路8-121获取待运算数据,并将所述待运算数据存储至第二存储器,其中,所述待运算数据包含头段和数据段,所述头段包含多个数据头,所述数据段包含多个数据体和非压缩数据,所述数据头包含对应的数据体或非压缩数据的起始地址和数据长度,所述数据体包含对应的数据块的压缩编码数据。
在其中一个实施例中,若第一存储器中的待运算数据数据头和数据体,步骤S9-620包括:
步骤9-S621,根据当前待解压数据中的数据头,得到当前待解压数据中对应的数据体的起始地址和数据长度;根据所述当前待解压数据中的数据体的起始地址和数据长度得到解压控制命令。
具体地,控制电路8-110根据当前待解压数据中的数据头,得到当前待解压数据中对应的数据体的起始地址和数据长度;根据所述当前待解压数据中的数据体的起始地址和数据长度得到解压控制命令。
步骤S9-622,根据所述解压控制命令解压所述当前待解压数据中的数据体,得到解压数据。
具体地,压缩解压电路8-120的压缩解压部件8-123根据所述解压控制命令解压所述当前待解压数据中的数据体,得到解压数据。
进一步地,步骤S9-650包括:
S9-651,根据当前待解压数据中的数据头,得到当前待解压数据中对应的非压缩数据的起始地址和数据长度。
具体地,控制电路8-110根据当前待解压数据中的数据头,得到当前待解压数据中对应的非压缩数据的起始地址和数据长度。
S9-652,根据所述当前待解压数据中的非压缩数据的起始地址和数据长度得到写出控制命令。
具体地,压缩解压电路8-120根据所述当前待解压数据中的非压缩数据的起始地址和数据长度得到写出控制命令。
在其中一个实施例中,上述数据解压方法还包括:
S9-670,获取与所述当前待解压数据对应的数据写入窗口的方向参数,并根据所述方向参数得到写入控制命令。
具体地,控制电路8-110获取与所述当前待解压数据对应的数据写入窗口的方向参数, 并根据所述方向参数得到写入控制命令。可选地,该窗口参数可以包含四个方向参数,例如将各个方向的参数设定为:top(上)、bottom(下)、left(左)、right(右)。该四个方向参数该与各个压缩解压电路读取的输入数据中的数据单元的大小以及位置相关。其中,输入数据被非整压缩后得到与待运算数据。该数据单元中包含的完整数据块为待压缩数据,非整数据块为非压缩数据。
例如,压缩解压电路读取数据单元的数据读取窗口的窗口参数可以为top=0、bottom=3、left=0、right=30。则该数据写入窗口的方向参数也可以为top=0、bottom=3、left=0、right=30。
S9-680,根据所述写入控制命令将所述当前待解压数据中数据体的解压数据,写入第二存储器上与所述数据写入窗口对应的存储空间,以及通过非压缩数据通道将所述当前待解压数据中非压缩数据写入所述数据写入窗口对应的存储空间。
具体地,第二读写电路根据所述写入控制命令将所述当前待解压数据中数据体的解压数据,写入第二存储器上与所述数据写入窗口对应的存储空间,以及通过非压缩数据通道将所述当前待解压数据中非压缩数据写入所述数据写入窗口对应的存储空间。承接上例,将当前待解压数据写入第二存储器的得到的解压结果如图67所示。
本实施例的数据解压方法,可以对包含头段和数据段的待运算数据进行解压,所述头段包含多个数据头,所述数据段包含多个数据体和非压缩数据,所述数据头包含对应的数据体或非压缩数据的起始地址和数据长度,所述数据体包含对应的数据块的压缩编码数据。
10、数据处理装置、方法、芯片及电子设备
如图68所示为一实施例提供的一种数据处理装置的结构示意图。如图68所示,该数据处理装置用于执行机器学习计算;所述数据处理装置包括存储电路10-11以及直接内存访问电路10-12,该直接内存访问电路10-12包括直接内存存储模块10-121,所述直接内存存储模块10-121包括:首部数据解析单元10-1211以及尾部数据缓存单元10-1212;所述首部数据解析单元10-1211的第一输出端和所述尾部数据缓存单元10-1212的第一输出端,均与所述存储电路10-11的输入端连接,所述存储电路10-11的输出端与所述首部数据解析单元10-1211的第一输入端,以及所述尾部数据缓存单元10-1212的第一输入端连接,所述首部数据解析单元10-1211的第二输出端与所述尾部数据缓存单元10-1212的第二输入端连接。
其中,所述存储电路10-11用于向所述直接内存访问电路10-12输入待存储数据,并向所述首部数据解析单元10-1211以及所述尾部数据缓存单元10-1212,输入所述数据存储处理参数,所述首部数据解析单元10-1211用于根据所述数据存储处理参数,从第一缓存模块10-111中读取所述待存储数据中的第一部分数据,并将所述第一部分数据写入第二缓存模块10-112中;所述首部数据解析单元还用于解析所述第一部分数据得到所述第一部分数据中的信息,所述尾部数据缓存单元10-1212用于根据所述数据存储处理参数,以及所 述第一部分数据中的信息,从第一缓存模块10-111中读取所述待存储数据中的第二部分数据,并将所述第二部分数据写入第二缓存模块10-112中。
可选的,所述机器学习计算包括:人工神经网络运算。可选的,如图69所示,所述数据处理装置还包括控制电路10-13以及运算电路10-14,所述控制电路10-13用于向存储电路10-11输入所述数据存储处理参数,并且还用于获取计算指令,并解析所述计算指令得到多个运算指令,将多个所述运算指令输入至所述运算电路10-14中,其中,所述运算电路10-14包括主处理单元10-141以及从处理单元10-142。
可选的,所述首部数据解析单元10-1211具体用于根据所述数据存储处理参数,从所述第一缓存模块10-111中读取所述待存储数据中的首部数据,并将所述首部数据写入所述第二缓存模块10-112中,同时,解析所述首部数据得到所述首部数据中包含的信息,所述尾部数据缓存单元10-1212具体用于根据所述数据存储处理参数,以及所述首部数据中包含的信息,从所述第一缓存模块10-111中读取所述待存储数据中的尾部数据,并将所述尾部数据写入所述第二缓存模块10-112中。
具体的,数据处理装置中的首部数据解析单元10-1211可以从存储电路10-11中的第一缓存模块10-111,读取待存储数据的首部数据,并可以接收存储电路10-11输入的数据存储处理参数,同时,首部数据解析单元10-1211可以将读取的待存储数据的首部数据,写入存储电路10-11中的第二缓存模块10-112。可选的,待存储数据中的第一部分数据可以为待存储数据中的首部数据,待存储数据中的第二部分数据可以为待存储数据中的尾部数据。
可选的,数据处理装置每一次可以存储一个待存储数据,并且该待存储数据可以为压缩格式的数据,其中,压缩格式的数据可以包括首部数据和尾部数据两部分,该尾部数据中可包含压缩的具体数据;首部数据中的信息可以包括尾部数据的大小,尾部数据的起始地址,以及尾部数据的分布形式等信息。可选的,上述尾部数据的分布形式可以为一维紧密型,二维紧密型,三维紧密型,还可以为其它任意维度紧密型。
示例性的,若尾部数据中可以包含多个压缩格式的数据,一个压缩格式的数据后连续相接下一个压缩格式的数据,依次类推,形成包含连续分布的多个压缩格式的数据,该种分布形式可以为一维紧密型;多个压缩格式数据的分布形式也可以是固定位宽大小,例如可以为8比特位宽的矩阵分布形式。若第一个压缩格式的数据为6比特位宽的数据“010100”,第二个压缩格式数据可以为6比特位宽的数据“101101”,则第二个压缩格式数据的高2位数值“10”可以连续相接在第一个压缩数据后,即“01010010”这8个数值均位于同一行,第二个压缩格式数据的低4位数值“1101”可以分布于第二行,然后相连第三个压缩数据,依次类推,每一行存储的数值位数是固定的,多余的数值可以分布于下一行,该种分布形式可以称为二维紧密型。另外,多个压缩格式数据的分布形式还可以为多个固定大小的矩阵分布,例如可以为8位*8位的多个矩阵分布形式。若第一个压缩格式的数据为6比特位宽的数据“010100”,第二个压缩格式数据可以为6比特位宽的数据“101101”,则第二个压缩格式数据的高2位数值“10”可以连续相接第一个压缩格式的数据,即 “01010010”这8个数值位于同一行,第二个压缩格式数据的低4位数值“1101”可以分布于第二行,然后相连第三个压缩数据,依次类推,每一行存储的数值位数是固定的,多余的数值可以分布于下一行,当压缩格式的数据将第一个固定大小的矩阵框分布完后,可以继续将压缩格式的数据分布于第二个固定大小的矩阵框,依次类推,直到将所有压缩格式的数据全部分布完为止,该种分布形式可以称为三维紧密型。
需要说明的是,数据存储处理参数可以包括首部数据的起始地址,首部数据的目标地址,首部数据的大小以及尾部数据的目标分布形式等信息。可选的,首部数据解析单元10-1211可以根据首部数据的起始地址,以及首部数据的大小,读取第一缓存模块10-111中待存储数据的首部数据,并根据首部数据的目标地址,将待存储数据中的首部数据,写入存储电路10-11中的第二缓存模块10-112中;另外,首部数据解析单元10-1211还可以解析首部数据,得到首部数据中包含的信息,将首部数据中包含的信息输入至尾部数据缓存单元10-1212,尾部数据缓存单元10-1212根据首部数据包含的信息,读取第一缓存模块10-111中待存储数据的尾部数据,并根据数据存储处理参数中尾部数据的目标分布形式,将待存储数据中的尾部数据,写入存储电路10-11中的第二缓存模块10-112。可选的,上述首部数据的起始地址可以表征待存储数据的首部数据,在第一缓存模块分布的初始格式中,每一行第一个待存储数据的起始地址,与上一行最后一个待存储数据的终止地址之间的间隔地址。可选的,上述首部数据的目标地址可以表征待存储数据的首部数据,在第二缓存模块分布的目标格式中,每一行第一个待存储数据的起始地址,与上一行最后一个待存储数据的终止地址之间的间隔地址。
在本实施例中,待存储数据中尾部数据的目标分布形式,可以与第一缓存模块10-111中,存放的待存储数据中尾部数据的分布形式相同,此外,若待存储数据中首部数据的起始地址,与待存储数据中首部数据的目标地址相等时,则第一缓存模块10-111中,待存储数据中首部数据的分布形式,可以与写入第二缓存模块10-112中,待存储数据中首部数据的分布形式相同,若第一缓存模块和第二缓存模块10-112中,待存储数据中首部数据的分布形式不相同,则直接内存访问电路10-12可以将一维紧密型的首部数据,转换成二维紧密型的首部数据,或者将二维紧密型的首部数据,转换成三维紧密型的首部数据,转换的维度在本实施例中并不做任何限定。
可选的,存储电路10-11可以将存储的数据输入至运算电路10-14中,进行不同的运算处理。可选的,上述控制电路10-13还可以对接收到的数据存储指令进行解析,得到数据存储处理参数。
另外,继续参见图69,上述数据处理装置中的存储电路10-11可以包括:寄存器、缓存中任意组合。缓存可以存储输入数据,寄存器可以存储输入数据中标量数据,缓存可以包括高速暂存缓存。可选的,控制电路10-13可以包括:指令缓存单元10-131、指令处理单元10-132以及存储队列单元10-133,其中,指令缓存单元10-131可以存储人工神经网络运算关联的计算指令,指令处理单元10-132可以对计算指令解析得到多个运算指令,存储队列单元10-133可以存储指令队列,该指令队列可以包括:按该队列的前后顺序待执行 的多个运算指令或计算指令。
可选的,上述控制电路10-13还可以包括依赖关系处理单元10-134,该依赖关系处理单元10-134用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元。
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
本实施例提供的一种数据处理装置,该装置中的直接内存存储模块包括,首部数据解析单元和尾部数据缓存单元,通过这两个单元可以对压缩格式的数据进行存储,并根据接收到的数据存储处理参数,将待存储数据按照目标分布形式存放,从而提高数据处理装置的通用性。
如图69所示为另一个实施例提供的一种数据处理装置中直接内存存储模块的具体结构示意图,该直接内存存储模块10-121还包括首部数据计数单元10-1213以及地址累加单元10-1214,所述首部数据计数单元10-1213用于记录每一次存储的所述第一部分数据的个数,得到累计的所述第一部分数据的个数,并根据所述数据存储处理参数,确定完成存储操作并停止所述存储操作,所述地址累加单元10-1214用于根据累计的所述第一部分数据的个数以及所述数据存储处理参数,计算下一次存储操作时,第一部分数据的起始地址和目标地址。
其中,所述首部数据解析单元10-1211的第三输出端与所述首部数据计数单元10-1213的输入端连接,所述首部数据解析单元10-1211的第四输出端与所述地址累加单元10-1214的第一输入端连接,所述首部数据计数单元10-1213的输出端与所述地址累加单元10-1214的第二输入端连接,所述地址累加单元10-1214的输出端与所述首部数据解析单元10-1211的第二输入端连接。
具体的,首部数据计数单元10-1213可以每一次存储操作时,累加记录所存储数据的首部数据个数,得到累计的首部数据个数,并根据数据存储处理参数,确定已完成存储操作,并停止存储操作,其中,上述数据存储处理参数可以包括数据存储指令解析得到的存储数据的目标总个数。其中,每一次存储操作,首部数据解析单元10-1211可以将解析得到的尾部数据的大小,输入至首部数据计数单元10-1213中进行累加记录,可以得到多次存储操作的待存储数据的个数。可选的,上述首部数据的个数可以等于待存储数据的个数。
可选的,当累加记录首部数据的个数等于存储数据的目标总个数时,首部数据计数单元10-1213可以确定已完成存储操作,此时,数据处理装置可以停止存储操作;否则,首 部数据计数单元10-1213确定未完成存储操作,此时,地址累加单元10-1214可以接收到的首部数据计数单元10-1213输入的逻辑判断信号,并且可以将计算得到的首部数据的起始地址以及目标地址,输入至首部数据解析单元10-1211中,继续对剩余的待存储数据进行存储操作。
可选的,上述逻辑判断信号可以为高电平信号1和低电平信号0,其中,1表示首部数据计数单元10-1213确定已完成存储操作,0表示首部数据计数单元10-1213确定未完成存储操作。
可选的,地址累积单元10-1214可以根据接收到的逻辑判断信号,确定是否需要继续计算下一次存储操作时,首部数据的起始地址和目标地址,若地址累积单元10-1214接收到的低电平信号0,则需要继续计算下一次存储操作时,首部数据的起始地址和目标地址,否则,不需要计算。
可选的,地址累加单元10-1214可以根据上一次存储操作时,待处理数据中首部数据的个数,每一个待处理数据中首部数据的大小以及待处理数据中首部数据的起始地址,计算下一次存储操作时,首部数据的起始地址和目标地址,其中,首部数据的起始地址可以表征执行下一次存储操作时,待存储数据在第一缓存模块10-111中,首部数据的起始地址。
可选的,下一次存储操作时,首部数据的起始地址可以等于上一次存储的数据中首部数据的个数与每一个首部数据的大小的乘积,与上一次存储操作的起始地址之和;同时,下一次存储操作时,首部数据的目标地址可以等于上一次存储的数据中首部数据的个数与每一个首部数据的大小的乘积,与上一次存储操作的目的地址之和。
本实施例提供的一种数据处理装置,该装置中的直接内存访问电路包括首部数据计数单元,地址累加单元,以及首部数据解析单元和尾部数据缓存单元,可以对大批量压缩格式的数据进行存储操作,并将待存储数据按照目标分布形式存放,从而提高数据处理装置的通用性。
图70为一实施例提供的数据处理方法的流程示意图,该方法可以通过图68所示的数据处理装置进行处理,本实施例涉及的是对数据进行解压的过程。如图70所示,该方法包括:
S10-101、读取第一缓存模块中,待处理数据中的第一部分数据。
可选的,上述S10-101中读取第一缓存模块中,待处理数据中的第一部分数据,包括:读取第一缓存模块中待处理数据中的首部数据。
具体的,数据处理装置中的直接内存存储模块,可以接收存储电路中第一缓存模块中,待处理数据中的第一部分数据。其中,待处理数据可以为压缩格式的数据。可选的,第一缓存模块可以为存储电路中的子模块。可选的,压缩格式的数据可以包括首部数据以及尾部数据两部分。可选的,上述第一部分数据可以为待处理数据中的首部数据。
S10-102、根据数据存储处理参数,对所述第一部分数据进行解析,得到所述第一部分数据中的信息。
可选的,上述S10-102中根据数据存储处理参数,对所述第一部分数据进行解析,得 到所述第一部分数据中的信息,包括:根据所述数据存储处理参数,对所述第一部分数据进行解析,得到所述待处理数据中首部数据包含的信息。
具体的,上述第一部分数据中的信息可以包括首部数据以及尾部数据,其中,首部数据中包含了尾部数据的信息,尾部数据包含了具体压缩的数据。可选的,上述数据存储处理参数可以包括待存储数据的首部数据的起始地址,首部数据的目标地址,首部数据的大小以及尾部数据的目标分布形式等信息,并且数据处理装置可以根据数据存储处理参数,获取待处理数据中的首部数据,从而获取首部数据中包含的信息。可选的,数据处理装置可以根据首部数据的起始地址,以及首部数据的大小,对待处理数据中的首部数据进行解析,得到待处理数据中首部数据包含的信息,其中,首部数据包含的信息可以为尾部数据的大小,尾部数据的分布类型以及尾部数据的起始地址等信息。
S10-103、根据第一部分数据中的所述信息,读取所述待处理数据中的第二部分数据。
具体的,数据处理装置可以根据待处理数据中首部数据包含的信息,读取待处理数据中的第二部分数据,并将该第二部分数据存放于直接内存存储模块中的尾部数据缓存单元中。可选的,上述第二部分数据可以为待处理数据中的尾部数据。
S10-104、根据所述数据存储处理参数,将所述第一部分数据以及所述第二部分数据,写入第二缓存模块中。
可选的,上述S10-104中根据所述数据存储处理参数,将所述第一部分数据以及所述第二部分数据,写入第二缓存模块中,包括:根据所述数据存储处理参数中包含的尾部数据,以及首部数据的信息,将所述第一部分数据以及所述第二部分数据,写入第二缓存模块中。
具体的,数据处理装置可以根据数据存储处理参数中包含的尾部数据的目标分布形式,以及首部数据的目标地址,将第一部分数据和第二部分数据,均写入第二缓存模块中。可选的,第二缓存模块可以为存储电路中的子模块。
本实施例中提供的一种数据处理方法,接收第一缓存模块中,待处理数据中的第一部分数据,根据数据存储处理参数,对所述第一部分数据进行解析,得到所述第一部分数据中的信息,根据第一部分数据中的所述信息,读取所述待处理数据中的第二部分数据,根据所述数据存储处理参数,将所述第一部分数据以及所述第二部分数据,写入第二缓存模块中,该方法可以将压缩格式的数据从第一缓存模块中,写入第二缓存模块中,并将存储的数据按照目标分布形式存放,从而提高数据处理装置的通用性。
在其中一个实施例中,在上述S10-103中根据第一部分数据中的所述信息,读取所述待处理数据中的第二部分数据,包括:根据第一部分数据中首部数据包含的信息,读取所述待处理数据中的尾部数据。
具体的,数据处理装置可以根据第一部分数据中包含的尾部数据的大小,尾部数据的分布类型以及尾部数据的起始地址,从第一缓存模块中读取待处理数据中的尾部数据。
本实施例中提供的一种数据处理方法,根据待处理数据中首部数据包含的信息,读取所述待处理数据中的尾部数据,进而根据数据存储处理参数,将待处理数据写入第二缓存 模块中,并将存储的数据按照目标分布形式存放,从而提高数据处理装置的通用性。
另一实施例提供的数据处理方法,上述S10-101中接收第一缓存模块中,待处理数据中的第一部分数据之后,所述方法还包括:
S10-105、获取所述第一部分数据的个数。
具体的,每一次存储操作,数据处理装置可以获取待处理数据中首部数据的个数。可选的,首部数据的个数可以等于待处理数据中尾部数据的个数。
S10-106、根据第一部分数据的所述个数以及所述数据存储处理参数,判断待处理数据是否已完成存储操作。
具体的,数据处理装置可以根据第一部分数据的个数,以及数据存储处理参数中存储数据的目标总个数,判断待处理数据是否已完成存储操作。
S10-107、若已完成存储操作,则停止存储操作。
可选的,如果数据处理装置中的首部数据解析单元判断第一部分数据的个数,可以等于存储数据的目标总个数时,则表明数据处理装置已完成存储操作,此时,可以停止存储操作。
在上述S10-106中根据第一部分数据的所述个数以及所述数据存储处理参数,判断待处理数据是否已完成存储操作的步骤之后,还包括:
S10-108、若未完成存储操作,则计算下一次存储操作时,所述第一部分数据中首部数据的起始地址以及目标地址。
可选的,如果数据处理装置中的首部数据解析单元判断待处理数据的个数,可以小于存储数据的目标总个数时,则表明数据处理装置未完成存储操作,此时,数据处理装置中的地址累加单元,可以根据上一次存储操作时,待处理数据中首部数据的个数,每一个待处理数据中首部数据的大小以及待处理数据中首部数据的起始地址,计算下一次存储操作时,首部数据的起始地址和目标地址。其中,下一次存储操作时,首部数据的起始地址可以等于上一次存储的数据中首部数据的个数与每一个首部数据的大小的乘积,与上一次存储操作的起始地址之和;同时,下一次存储操作时,首部数据的目标地址可以等于上一次存储的数据中首部数据的个数与每一个首部数据的大小的乘积,与上一次存储操作的目的地址之和。可选的,每一次存储操作,待处理数据中首部数据的起始地址以及目标地址均可以不相同,也就是说,每一次存储操作时,待处理数据中首部数据的起始地址以及目标地址均需要采用上述方法不断更新。
S10-109、根据所述第一部分数据的起始地址以及目标地址,继续执行所述接收第一缓存模块中,待处理数据中的第一部分数据。
具体的,若未完成存储操作,则数据处理装置可以根据获得的待处理数据中首部数据的起始地址以及目标地址,继续执行S10-101的步骤,此时,数据处理装置是针对下一组待处理数据进行存储处理的。
本实施例中提供的一种数据处理方法,如果数据处理装置未完成存储操作,则数据处理装置可以根据获得的,待处理数据中首部数据的起始地址以及目标地址,继续执行存储 操作,从而可以对大批量压缩格式的数据进行存储操作,并将待存储数据按照目标分布形式存放,以提高数据处理装置的通用性。
另一实施例提供的一种数据处理装置。该数据处理装置用于执行机器学习计算;所述数据处理装置包括处理电路10-11a以及控制电路10-12a,所述处理电路10-11a的第一输入端与所述控制电路10-12a的第一输出端连接,所述处理电路10-11a包括解压模块10-111a;其中,所述控制电路10-12a用于解析解压处理的指令得到解压处理参数,并将所述解压处理参数输入至所述解压模块10-111a,所述解压模块10-111a用于根据所述解压处理参数对待解压数据进行解压处理,并得到已解码数据中的信息;所述解压模块还用于根据所述数据信息,在所述待解压数据满足触发解压旁路的条件时,将所述待解压数据作为目标解压数据。
可选的,所述解压模块10-111a还用于根据已解码数据中的所述信息,判断所述待解压数据不满足触发解压旁路的条件时,则继续对所述待解压数据进行解压处理。
可选的,所述机器学习计算包括:人工神经网络运算。可选的,如图71所示,所述数据处理装置还包括存储电路10-13a,所述存储电路10-13a用于存储原始数据,所述控制电路10-12a用于获取计算指令,并解析所述计算指令得到多个运算指令,将多个所述运算指令输入至所述处理电路10-11a中。
其中,所述存储电路10-13a的第一输出端与所述处理电路10-11a的第二输入端连接,所述存储电路10-13a的第二输出端与所述控制电路10-12a的输入端连接,所述存储电路10-13a的第一输入端与所述处理电路10-11a的输出端连接,所述存储电路10-13a的第二输入端与所述控制电路10-12a的第二输出端连接。
具体的,数据处理装置中的处理电路10-11a通过解压模块10-111a,可以采用具体的解压算法对接收到的待解压数据进行解压处理,在解压过程中可以获得已解码数据中的信息,根据该信息判断待解压数据是否满足触发解压旁路的条件,若满足,则待解压数据可以退出解压处理过程,解压模块10-111a可以将待解压数据,作为对应的目标解压数据直接输出;若解压模块10-111a根据获得的已解码数据中的信息,判断待解压数据不满足触发解压旁路的条件时,则解压模块10-111a可以继续采用具体的解压算法,对待解压数据进行后续解压处理;也就是说,在解压模块10-111a获得已解码数据中的信息时,解压处理过程已经执行一部分了,当解压模块10-111a根据已解码数据中的信息,判断待解压数据不满足触发解压旁路的条件时,则解压模块10-111a可以对待解压数据执行剩余的解压处理过程。其中,剩余的解压处理过程可以称为上述所指的后续解压处理。另外,解压模块10-111a得到目标解压数据后,处理电路10-11a还可以对这些解压数据进行不同的并行运算处理。可选的,待解压数据可以为压缩格式的数据,该压缩格式的数据可以包括首部数据和尾部数据两部分,该尾部数据包含的信息可以为压缩的具体数据,首部数据包含的信息可以包括压缩数据的长度、压缩标志位以及尾部数据地址等信息。可选的,上述处理电路10-11a可以包括主处理电路和/或从处理电路,若处理电路中包括主处理电路和从处理电路时,从处理电路可以为多个。其中,主处理电路和从处理电路中均包含解压模块 10-111a,并且通过解压模块10-111a均可以对待解压数据进行解压处理。
可选的,处理电路10-11a中的解压模块10-111a可以接收存储电路10-13a输出的待解压数据,并且还可以接收控制电路10-12a输入的解压处理参数。可选的,解压模块10-111a可以根据接收到的解压处理参数,对待解压数据进行解压处理。可选的,上述解压处理参数可以包括待解压数据中的首部数据地址,解压的数据长度以及解压算法所需的参数等。可选的,上述解压算法所需的参数可以包括哈夫曼解码表,游程解码表,基于字典的解码表以及解压算法等等。一般,解压模块10-111a可以根据解压算法所需的参数,采用对应的解压算法对待解压数据进行解压处理,得到待解压数据中的尾部数据包含的信息,以及首部数据包含的信息,即尾部数据包含的信息可以为压缩的具体数据,首部数据包含的信息可以包括压缩数据的长度、压缩标志位以及尾部数据地址等信息。可选的,数据处理装置可以包括多个处理电路10-11a,图71中只示出了一个处理电路10-11a。可选的,控制电路10-12a可以接收解压处理的指令,并解析该指令得到解压处理参数,并将解压处理参数输入至解压模块10-111a。可选的,上述待解压数据中的首部数据包含的压缩标志位,可以表征该待解压数据是通过具体的压缩算法进行处理得到的,还是该待解压数据是未进行具体的压缩处理直接得到的,同时,该压缩标志位可以包括两种信号,分别用0和1表示,0可以表示采用具体的压缩算法处理后得到的该待解压数据,1可以表示未进行具体的压缩处理直接得到的该待解压数据。
此外,若根据已解码数据中的信息,判断待解压数据满足触发解压旁路的条件时,则解压模块10-111a不需要采用任何解压算法,直接可以将待解压数据作为目标解压数据输出,同时,若根据已解码数据中的信息,判断待解压数据不满足触发解压旁路的条件时,则解压模块10-111a需要继续采用具体的解压算法,对待解压数据进行后续解压处理。可选的,触发解压旁路的条件可以为待解压数据中的首部数据包含的压缩标志位信号,对应表征该待解压数据是未进行具体的压缩处理得到的。
需要说明的是,处理电路10-11a中的解压模块10-111a可以根据控制电路10-12a输入的解压处理参数,对该待解压数据采用具体的解压算法进行解压处理,得到对应的目标解压数据。可选的,解压模块10-111a可以对待解压数据进行并行处理。可选的,每一个待解压数据可以得到一个目标解压数据。可选的,目标解压数据可以为待解压数据未进行压缩处理前的分块数据。可选的,上述压缩标志位可以表征该目标解压数据是通过完整的解压算法进行处理得到的,还是未进行具体的压缩处理直接得到目标解压数据,还可以理解为,该压缩标志位可以包括两种信号,分别为低电平信号0和高电平信号1表示,0可以表示该待解压数据是通过完整的解压算法进行处理得到的,1可以表示该待解压数据是未进行具体的压缩处理直接得到的。可选的,上述待解压数据中尾部数据的分布类型可以为一维紧密型,二维紧密型,三维紧密型,还可以为其它任意维度紧密型。
示例性的,若待解压数据中的尾部数据包含多个数据,一个数据后连续相接下一个数据,依次类推,连续分布多个数据,该种分布形式可以称为一维紧密型;若多个数据分布的形式是固定位宽大小,即可以为8比特位宽的矩阵分布形式,若第一个数据为6比特位 宽的数据“010100”,第二个压缩格式数据可以为6比特位宽的数据“101101”,则第二个压缩格式数据的高2位数值“10”可以连续相接第一个数据后,即“01010010”这8个数值位于同一行,第二个数据的低4位数值“1101”可以分布于第二行,然后相连第三个数据,依次类推,每一行存储的数值位数是固定的,多余的数值可以分布于下一行,该种分布形式可以称为二维紧密型;若多个数据分布的形式可以为多个固定大小的矩阵分布,即分别可以为8位*8位的多个矩阵分布形式,若第一个数据为6比特位宽的数据“101101”,第二个压缩格式数据可以为6比特位宽的数据“101101”,则第二个压缩格式数据的高2位数值“10”可以连续相接第一个数据后,即“01010010”这8个数值位于同一行,第二个数据的低4位数值“1101”可以分布于第二行,然后相连第三个数据,依次类推,每一行存储的数值位数是固定的,多余的数值可以分布于下一行,当数据将第一个固定大小的矩阵框分布完后,可以继续将数据分布于第二个固定大小的矩阵框,依次类推,直到将所有数据全部分布完为止,该种分布形式可以称为三维紧密型。
可选的,若处理电路10-11a中包含主处理电路以及从处理电路,则主处理电路中的解压模块10-111a可以将目标解压数据输入至从处理电路,通过从处理电路对目标解压数据进行后续的不同并行运算处理,还可以将目标解压数据返回至存储电路10-13a写入外部存储,等待后续读入。可选的,若处理电路10-11a中只包含多个从处理电路,则每个从处理电路中的解压模块10-111a均可以对目标解压数据进行后续运算处理。
另外,继续参见图71,上述数据处理装置还可以包括直接内存访问单元。可选的,上述数据处理装置中的存储电路10-13a可以包括:寄存器、缓存中任意组合。缓存可以存储输入数据,寄存器可以存储输入数据中标量数据,缓存可以包括高速暂存缓存。可选的,控制电路10-12a可以包括:指令缓存单元10-121a、指令处理单元10-122a以及存储队列单元10-123a,其中,指令缓存单元10-121a可以存储人工神经网络运算关联的计算指令,指令处理单元10-122a可以对计算指令解析得到多个运算指令,存储队列单元10-123a可以存储指令队列,该指令队列可以包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
可选的,上述控制电路10-12a还可以包括依赖关系处理单元10-124a,该依赖关系处理单元10-124a用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元。
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
本实施例提供的一种数据处理装置,该装置包括处理电路以及控制电路,处理电路解压模块,解压模块可以根据控制电路输入的解压处理参数,对待解压数据进行解压处理,若待解压数据满足触发解压旁路的条件时,则解压模块可以直接将该待解压数据,作为目标解压数据输出,不需要对待解压数据进行后续解压处理,从而可以提高解压的正确率;另外,数据处理装置能够有效节省解压模块的运算量以及存储开销,从而提高数据处理装置的运算效率。
如图71所示为另一个实施例提供的一种数据处理装置中处理电路的具体结构示意图,其中,处理电路中的所述解压模块10-111a包括解压处理单元10-1111a以及选择器10-1112a,所述解压处理单元10-1111a的输出端与所述选择器10-1112a的输入端连接。其中,所述解压处理单元10-1111a用于根据所述解压处理参数,对待解压数据进行解压处理,得到已解码数据中的信息,根据已解码数据的所述信息,判断所述待解压数据是否满足触发解压旁路的条件,若不满足,则对所述待解压数据进行后续解压处理,所述选择器10-1112a用于根据接收到的逻辑判断信号确定,接收所述待解压数据,还是解压处理单元10-1111a对所述待解压数据进行后续解压处理后得到的解压数据,作为目标解压数据并输出。
具体的,解压模块10-111a对待解压数据进行解压处理时,可以默认将待解压数据先输入至解压处理单元10-1111a进行解压处理,解压处理过程执行一部分后,可以得到已解码数据中的信息,解压处理单元10-1111a可以根据该信息判断该待解压数据是否满足触发解压旁路的条件,根据判断结果可以向选择器10-1112a输入一个逻辑判断信号,选择器10-1112a根据接收到的逻辑判断信号确定,解压模块10-111a可以接收待解压数据,作为目标解压数据,还是解压处理单元10-1111a可以继续采用具体的解压算法,对待解压数据进行后续解压处理后得到解压结果,接收解压处理单元10-1111a输出的解压结果,作为目标解压数据输出。可选的,逻辑判断信号可以包括两种,分别表示满足触发解压旁路的条件以及不满触发解压旁路的条件。其中,若选择器10-1112a接收到的信号表示,满足触发解压旁路的条件时,则选择器10-1112a可以直接接收待解压数据,作为目标解压数据输出;若选择器10-1112a接收到的信号表示,不满足触发解压旁路的条件时,则选择器10-1112a可以接收解压处理单元10-1111a继续采用具体的解压算法,对待解压数据进行后续解压处理后得到解压结果,作为目标解压数据输出。可选的,上述解压算法可以包括哈夫曼解码、游程解码以及基于字典的解码算法等。可选的,第解压模块10-111a可以对多个待解压数据进行并行解码处理。可选的,上述解码处理也可以称为解压处理。可选的,选择器10-1112a可以为二路选择器。
以哈夫曼解码算法为例可以对解压算法进行说明,若解压模块10-111a中的解压处理单元10-1111a采用哈夫曼解码算法对一个待解压数据进行解压处理,并且解压模块10-111a可以根据接收到的解压处理参数中,得知具体的解压算法为哈夫曼解码算法。若此时解压处理单元10-1111a只对一个待解压数据进行解压处理,根据解压处理参数中的哈夫曼解码表,以及实际已知的待解压数据中尾部数据的起始地址,从待解压数据的尾部数据中查找 解压数据,另外,解压处理单元10-1111a在进行查找处理前,还可以根据哈夫曼解码表得到待解压数据中的首部数据包含的信息,即待解压数据中的尾部数据对应的压缩标志位信号,其中,解压数据可以为原始数据进行压缩处理前得到的分块数据。可选的,若解压处理单元10-1111a接收到的压缩标志位信号,可以表征该待解压数据是未进行压缩处理直接得到的,则该待解压数据可以不再继续进行后续查找处理(即后续解压处理),退出解压处理过程,此时,解压模块10-111a可以通过选择器10-1112a,直接接收待解压数据,作为目标解压数据输出;若解压处理单元10-1111a接收到的压缩标志位信号,可以表征该待解压数据是通过具体的压缩算法进行压缩处理得到的,则该待解压数据可以继续进行后续查找处理(即后续解压处理),此时,解压处理单元10-1111a可以将后续解压处理接收的解压结果,输入至选择器10-1112a中,选择器10-1112a将该解压结果作为目标解压数据并输出。
本实施例提供的一种数据处理装置,解压模块中包括的解压旁路单元以及解压处理单元,若满足触发解压旁路条件的待解压数据可以直接通过解压旁路单元输出作为解压后的数据,此时可以不需要对该待解压数据进行解压处理,进一步节省了解压模块的运算量以及存储开销,从而节省数据处理装置的运算量以及存储开销,并且解压模块可以对多个待解压数据采用并行方式进行解压处理,有效的提高了解压的效率;另外,数据处理装置还可以将待解压数据直接作为解压数据,以保证解压数据与对应的原始数据相比,解压的正确率较高。
图72为一实施例提供的数据处理方法的流程示意图,该方法可以通过图71所示的数据处理装置进行处理,本实施例涉及的是对数据进行解压的过程。如图72所示,该方法包括:
S10-101a、接收待处理数据。
具体的,数据处理装置中的处理电路通过解压模块可以接收存储电路输入的待处理数据。其中,待处理数据格式可以与压缩后的数据格式一致。
S10-102a、根据所述处理参数对所述待处理数据进行解压处理,得到已解码数据的信息。
可选的,所述处理参数可以包括解压处理参数。
可选的,所述根据所述处理参数对所述待处理数据进行解压处理,得到已解码数据的信息,包括:根据所述解压处理参数对所述待处理数据进行解压处理,得到已解码数据的所述信息。
具体的,上述解压处理参数可以包括压缩格式数据的首部数据地址,解压的数据长度以及解压算法所需的参数等。可选的,上述解压处理参数可以是解压模块通过接收控制电路解析得到的,还可以是解压模块预先存储的。可选的,数据处理装置中的解压模块,可以根据接收到的解压处理参数对待解压数据进行解压处理,得到已解码数据的信息。在本实施例中,解压模块根据具体的压缩算法可以对待解压数据执行一部分解压处理过程,就可以得到已解码数据的信息。可选的,上述已解码数据的信息可以等于待解压数据中首部 数据包含的信息,即压缩标志位信号。
S10-103a、根据已解码数据的所述信息,判断所述待处理数据是否满足触发解压旁路的条件,其中,所述触发解压旁路的条件包括待处理数据中包含的压缩标志位对应的信号,表示所述待处理是未采用具体的压缩算法处理得到的。
具体的,触发解压旁路的条件可以为待解压数据中的首部数据包含的压缩标志位对应的信号,表示该待解压数据是未进行具体的压缩处理得到的。
S10-104a、若满足,则将所述待处理数据作为目标解压数据。
具体的,如果待处理数据满足触发解压旁路的条件时,解压模块可以将待处理数据作为目标解压数据直接输出。可选的,解压模块均可以对多个待处理数据进行并行解码处理,得到多个目标解压数据。
本实施例提供的一种数据处理方法,接收待处理数据,根据已解码数据的所述信息,判断所述待处理数据是否满足触发解压旁路的条件,若满足,则将所述待处理数据作为目标解压数据,该方法节省了数据处理装置进行解压处理的运算量以及数据处理装置的存储开销,进而还可以对待处理数据进行并行处理,得到目标解压数据,有效提高了解压效率;另外,该方法还可以直接将待处理数据作为目标解压数据,以保证解压后的数据与对应的原始数据相比,解压的正确率较高。
在其中一个实施例中,上述S10-103a在根据已解码数据的所述信息,判断所述待处理数据是否满足触发解压旁路的条件之后,还包括:若所述待处理数据不满足触发解压旁路的条件时,则将所述待处理数据作为目标解压数据。
可选的,所述将所述待处理数据作为目标解压数据的步骤之后,还包括:通过处理电路对所述目标解压数据进行并行运算处理。
具体的,如果待处理数据不满足触发解压旁路的条件时,解压模块可以通过解压处理单元,继续采用具体的解压算法对该待处理数据进行后续解压处理,得到解压结果,并将该解压结果作为目标解压数据。可选的,上述解压处理参数可以包括对待处理数据进行解压的具体解压算法,该解压算法可以为哈夫曼解码,游程解码以及基于字典的解码算法等。可选的,上述解压处理参数可以是解压模块,接收控制电路解析解压运算的指令得到的解压处理参数,还可以是解压模块预先存储的解压处理参数。可选的,上述运算处理可以包括向量累加运算,向量内积运算,向量比较运算以及矩阵转置处理等。
需要说明的是,处理电路中的解压模块可以根据解压处理参数,对待解压数据进行解压处理后得到已解码数据的信息,若根据已解码数据的信息,判断待处理数据满足触发解压旁路的条件时,则解压模块可以直接将待解压数据作为目标解压数据,否则解压模块需要对待解压数据进行后续解压处理后得到解压数据,将该解压数据作为目标解压数据,处理电路可以对目标解压数据进行不同的运算处理得到运算结果,并且处理电路可以对运算结果进行一些后续运算处理,并将后续运算处理的结果返回至分块压缩电路,最后分块压缩电路可以对后续运算处理的结果进行分块处理以及压缩处理后,将压缩后的结果发送至存储电路,存储电路还可以对压缩后的结果进行下一阶段的运算处理。可选的,处理电路 可以对目标压缩数据进行解压以及乘法运算,后续处理可以包括解压以及乘法运算等。
另外,处理电路中的解压模块可以根据解压处理参数,对待解压数据进行解压处理,得到目标解压数据,并且处理电路可以对目标解压数据进行不同类型的运算处理得到运算结果,并且处理电路可以将该不同类型的运算结果返回至存储电路,存储电路还可以对该目标解压数据进行下一阶段的运算处理。可选的,处理电路可以对目标解压数据进行累加以及激活运算,上述不同类型的运算结果可以包括累加以及激活运算等。
本实施例提供的一种数据处理方法,若所述待处理数据不满足触发解压旁路的条件时,则继续采用解压算法对所述待处理数据进行后续解压处理,得到目标解压数据,否则,可以将待处理数据直接作为目标解压数据输出,此时,不需要对待解压数据继续进行后续解压处理,进而能够节省解压处理的运算量以及数据处理装置的存储开销。
另一实施例提供的一种数据处理装置。该数据处理装置用于执行机器学习计算;所述数据处理装置包括分块压缩电路10-11b以及主处理电路10-12b;所述分块压缩电路10-11b的第一输出端与所述主处理电路10-12b的第一输入端连接。其中,所述分块压缩电路10-11b用于对接收到的原始数据进行分块处理,并对分块后的数据进行压缩处理,得到压缩数据,所述主处理电路10-12b用于对接收到的所述压缩数据进行分组处理。
可选的,所述机器学习计算包括:人工神经网络运算。可选的,如图73所示,所述数据处理装置还包括从处理电路10-13b、存储电路10-14b以及控制电路10-15b,所述从处理电路10-13b用于对接收到的分组数据进行累加运算以及内积运算,所述存储电路10-14b用于存储原始数据,所述控制电路10-14b用于获取计算指令,并解析所述计算指令得到多个运算指令,将多个所述运算指令输入至至所述分块压缩电路10-11b以及所述主处理电路10-12b中。
可选的,所述分块压缩电路10-11b的第一输入端与所述存储电路10-14b的第一输出端连接,所述分块压缩电路10-11b的第二输入端与所述控制电路10-15b的第一输出端连接,所述分块压缩电路10-11b的第二输出端与所述存储电路10-14b的第一输入端连接,所处分块压缩电路10-11b的第三输入端与所述主处理电路10-12b的输出端连接。所述控制电路10-15b的第二输出端与所述主处理电路10-12b的第二输入端连接,所述存储电路10-14b的第二输出端与所述控制电路10-15b的输入端连接,所述控制电路10-15b的第三输出端与所述存储电路10-14b的第二输入端连接,所述主处理电路10-12b的第一输出端与所述从处理电路10-13b的输入端连接,所述从处理电路10-13b的输出端与所述主处理电路10-12b的第三输入端连接。
可选的,所述分块压缩电路10-11b包括分块单元10-111b以及压缩单元10-112b,所述分块单元10-111b输出端与所述压缩单元10-112b的输入端连接。其中,所述分块单元10-111b用于对接收到的所述原始数据进行分块处理,得到分块后的数据,所述压缩单元10-112b用于对分块后的所述数据进行压缩处理。
具体的,数据处理装置中的分块压缩电路10-11b可以通过分块单元10-111b先对接收到的数据进行分块处理,并通过压缩单元10-112b对分块处理后的数据进行压缩处理,然 后将这些压缩后的数据输入至主处理电路10-12b,主处理电路10-12b对接收到的压缩数据再进行分组,可以得到多组分组数据。可选的,分块压缩电路10-11b可以接收存储电路10-14b输出的原始数据,并且分块压缩电路10-11b可以接收控制电路10-15b输入的分块处理参数,以及压缩处理参数。可选的,上述分块处理参数可以包括分块的大小,分块的行数和列数等。可选的,上述压缩处理参数可以包括对分块数据进行压缩的具体压缩算法,该压缩算法可以为哈夫曼编码,游程编码以及基于字典的压缩算法等。可选的,原始数据的格式可以为压缩后数据的格式,还可以为其它格式的数据。可选的,数据处理装置可以包括多个从处理电路10-13b。可选的,控制电路10-15b可以接收分块和压缩等处理的指令,并解析所述指令得到分块和压缩等处理的参数,并将所述参数输入至所述分块压缩电路10-11b以及所述主处理电路10-12b中。
需要说明的是,分块压缩电路10-11b可以根据控制电路10-15b输入的分块以及压缩参数,对存储电路10-14b输入的原始数据,先进行分块处理得到多个分块数据,再对多个分块数据分别进行压缩处理得到对应数量的压缩数据,也就是说每一个分块数据可以得到一个压缩数据,其中,压缩数据可以包括两部分,分别为首部数据和尾部数据,该尾部数据包含的信息可以为压缩后的具体数据,首部数据包含的信息可以包括数据块的大小,该数据块应用的压缩算法以及尾部数据的起始地址等信息。可选的,压缩数据中的尾部数据的分布类型可以为一维紧密型,二维紧密型,三维紧密型,还可以为其它任意维度紧密型。
示例性的,若尾部数据中包含多个压缩数据,一个压缩数据后连续相接下一个压缩数据,依次类推,连续分布多个压缩数据,该种分布形式可以为一维紧密型;若多个压缩数据分布的形式是固定位宽大小,即可以为8比特位宽的矩阵分布形式,并且第一个压缩数据为6比特位宽的数据“010100”,第二个压缩格式数据可以为6比特位宽的数据“101101”,则第二个压缩格式数据的高2位数值“10”可以连续相接第一个压缩数据后,即“01010010”这8个数值位于同一行,第二个压缩数据的低4位数值“1101”可以分布于第二行,然后相连第三个压缩数据,依次类推,每一行存储的数值位数是固定的,多余的数值可以分布于下一行,该种分布形式可以称为二维紧密型;若多个压缩数据分布的形式可以为多个固定大小的矩阵分布,即分别可以为8位*8位的多个矩阵分布形式,若第一个压缩数据为6比特位宽的数据“010100”,第二个压缩格式数据可以为6比特位宽的数据“101101”,则第二个压缩格式数据的高2位数值“10”可以连续相接第一个压缩数据后,即“01010010”这8个数值位于同一行,第二个压缩数据的低4位数值“1101”可以分布于第二行,然后相连第三个压缩数据,依次类推,每一行存储的数值位数是固定的,多余的数值可以分布于下一行,当压缩后的数据将第一个固定大小的矩阵框分布完后,可以继续将压缩后的数据分布于第二个固定大小的矩阵框,依次类推,直到将所有压缩后的数据全部分布完为止,该种分布形式可以称为三维紧密型。
可选的,分块压缩电路10-11b可以将压缩数据输入至主处理电路10-12b进行后续的不同运算处理,还可以将压缩数据返回至存储电路10-14b写入外部存储,等待后续读入。可选的,上述控制电路10-15b还可以对接收到的分组指令进行解析,得到分组处理参数。
另外,继续参见图73,上述数据处理装置还可以包括直接内存访问单元。可选的,上述数据处理装置中的存储电路10-14b可以包括:寄存器以及缓存中任意组合。缓存可以存储输入数据,寄存器可以存储输入数据中标量数据,缓存可以包括高速暂存缓存。可选的,控制电路10-15b可以包括:指令缓存单元10-151b、指令处理单元10-152b以及存储队列单元10-153b,其中,指令缓存单元10-151b可以存储人工神经网络运算关联的计算指令,指令处理单元10-152b可以对计算指令解析得到多个运算指令,存储队列单元10-153b可以存储指令队列,该指令队列可以包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
可选的,上述控制电路10-15b还可以包括依赖关系处理单元10-154b,该依赖关系处理单元10-154b用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元。
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
本实施例提供的一种数据处理装置,该装置包括主处理电路以及分块压缩电路,在对原始数据进行运算前,该装置可以通过单独且逻辑简单的硬件电路(即分块压缩电路)对数据进行分块处理后,再进行压缩处理得到压缩数据,进而从处理电路可以对压缩后的数据进行不同的运算处理,该过程可以降低数据处理装置中主处理电路与从处理电路之间的数据带宽。
如图73所示为另一个实施例提供的一种数据处理装置中主从处理电路的具体结构示意图,其中,数据处理装置包括所述主处理电路10-12b,该主处理电路10-12b包括分组转发模块10-121b,所述分组转发模块10-121b用于接收所述压缩数据以及分组处理参数,并根据所述分组处理参数对所述压缩数据进行分组处理。
具体的,主处理电路10-12b可以接收分块压缩电路10-11b输入的压缩数据,还可以接收控制电路10-15b输入的分组处理参数。可选的,分组处理参数可以包括分组的数量以及分组的方法等信息,该分组的方法可以为基于步长的划分法,随机划分法以及聚类划分法等等。可选的,分块压缩电路10-11b可以根据压缩数据的具体分布以及功耗、面积、压缩率等实际需求,确定神经网络中一般采用基于步长的划分方式对压缩数据进行分组处理。可选的,基于步长的划分方式可以表征为,根据数据的特性按照固定大小的矩形框对数据进行划分,该特性可以为空间相似性,稀疏性或者满足具体的概率分布,还可以为其它特性,对此本实施例不做任何限定。可选的,具体的概率分布可以为高斯分布,还可以 为其它概率分布。
需要说明的是,主处理电路10-12b可以对接收到的压缩数据的尾部数据进行分组处理得到多组分组数据,并通过多个从处理电路10-13b对多组分组数据进行并行运算处理。
示例性的,参见图74所示,若原始数据为二维数据,并且分块压缩电路10-11b对原始数据进行分块处理后得到8个分块数据,可以表示为数据块0,数据块1,数据块2,数据块3,数据块4,数据块5,数据块6,数据块7,并对这8个数据块进行压缩后可以得到8个压缩数据,其中,每一个数据块进行压缩处理可以得到一个压缩数据,即数据块0进行压缩处理可以得到一个压缩数据,该压缩数据包括首部(head)数据0以及尾部(data)数据0,依次类推,其它数据块也可以得到对应的压缩数据,并将这8个压缩数据进行分组处理,可以得到两组压缩数据,即group1和group2,最后数据处理装置可以将这两组压缩数据分别发送至两个从处理单元进行并行运算处理。
本实施例提供的一种数据处理装置,该装置中的主处理电路包括分组转发模块,通过分组转发模块可以对压缩后的数据进行分组处理,得到多组分组数据,并将多组分组数据发送至多个从处理单元,对多组分组数据进行并行运算处理,从而提高数据处理装置的运算效率;另外,数据处理装置还可以根据不同的特性对压缩数据进行分组,能够到达最优的带宽效率。
图75为一实施例提供的数据处理方法的流程示意图,该方法可以通过图73所示的数据处理装置进行处理,本实施例涉及的是对数据进行压缩处理的过程。如图75所示,该方法包括:
S10-101b、接收待处理的数据。
具体的,数据处理装置中分块压缩电路可以接收存储电路输入的待处理数据。其中,待处理的数据格式可以与压缩后的数据格式一致,还可以与压缩后的数据格式不一致。
可选的,所述处理参数可以包括分块处理参数,分组处理参数以及压缩处理参数。
S10-102b、根据处理参数对待处理的所述数据进行分块处理,得到分块后的数据。
可选的,所述根据处理参数对待处理的所述数据进行分块处理,得到分块后的数据,包括:根据分块处理参数对待处理的所述数据进行分块处理,得到分块后的数据。
具体的,上述分块处理参数可以包括分块的大小,分块的行数和列数等信息。可选的,上述分块处理参数可以是分块压缩电路通过接收控制电路解析得到的,还可以是分块压缩电路预先存储。可选的,数据处理装置中的分块压缩电路可以根据分块处理参数对待处理的数据进行分块处理,得到分块后的数据。
S10-103b、根据所述处理参数对分块后的所述数据进行压缩处理,得到压缩数据。
可选的,所述根据所述处理参数对分块后的所述数据进行压缩处理,得到压缩数据,包括:根据压缩处理参数对分块后的所述数据进行压缩处理,得到压缩数据。
具体的,上述压缩处理参数可以包括对分块数据进行压缩的具体压缩算法,该压缩算法可以为哈夫曼编码,游程编码以及基于字典的压缩算法等。可选的,数据处理装置中的分块压缩电路可以根据接收到的压缩处理参数对待处理的数据进行压缩处理,得到压缩数 据。
本实施例提供的一种数据处理方法,接收待处理的数据以及处理参数,根据所述处理参数对待处理的所述数据进行分块处理,得到分块后的数据,根据所述处理参数对分块后的所述数据进行压缩处理,得到压缩数据,该方法可以通过单独且逻辑简单的硬件电路对待处理的数据进行分块以及压缩处理,从而可以有效降低数据处理装置中主处理电路与从处理电路之间的数据带宽。
另一实施例提供的数据处理方法,该方法在根据所述处理参数对分块后的所述数据进行压缩处理,得到压缩数据的步骤之后,还包括:根据所述处理参数对所述压缩数据进行分组处理,得到分组数据。
可选的,所述根据所述处理参数对所述压缩数据进行分组处理,得到不同运算处理的分组数据,包括:根据分组处理参数对所述压缩数据进行分组处理,得到分组数据。
可选的,所述根据分组处理参数对所述压缩数据进行分组处理,得到分组数据的步骤之后,还包括:通过从处理电路对所述分组数据进行并行运算处理。
具体的,上述分组处理参数可以包括分组的数量以及分组的方法等信息,该分组的方法可以为基于步长的划分法,随机划分法以及聚类划分法等等。可选的,分块压缩电路可以根据压缩数据的具体分布以及功耗、面积、压缩率等实际需求,确定神经网络中一般采用基于步长的划分方式对压缩数据进行分组处理。可选的,分块压缩电路可以根据接收到的分组处理参数对压缩数据进行分组处理,得到多组分组数据,并将这多组分组数据发送至多个从处理电路,该多组从处理电路可以对多组分组数据进行并行运算处理。可选的,上述运算处理可以包括向量累加运算,向量内积运算,向量比较运算以及矩阵转置处理等。
需要说明的是,主处理电路中的分组转发模块可以根据分组处理参数将压缩数据进行分组处理,得到多组分组数据,并可以将多组分组数据并行发送给多个从处理电路中,其中,每组分组数据可以发送给一个从处理电路。此外,从处理电路可以对接收到的每组分组数据进行解压处理,得到解压后的数据,再对解压后的数据进行不同的运算处理得到运算结果,并可以将该运算结果返回至主处理电路,主处理电路还可以对该运算结果进行一些后续运算处理,并将后续运算处理的结果返回至分块压缩电路,最后分块压缩电路可以对后续运算处理的结果进行分块处理以及压缩处理后,将压缩后的结果发送至存储电路,存储电路还可以对压缩后的结果进行下一阶段的运算处理。
另外,若从处理电路可以对解压后的数据乘法运算,则可以将乘法运算的结果返回至主处理电路,并且上述主处理电路可以对该乘法运算结果进行一些后续处理,该后续处理可以包括累加以及激活运算处理。
本实施例提供的一种数据处理方法,数据处理装置还可以根据处理参数对压缩数据进行分组处理,得到多组分组数据,并将分组后的多组分组数据输入至多个从处理电路,从而通过多个从处理电路对待处理数据进行并行运算处理,以提高数据处理装置的运算效率;另外,该方法还可以根据不同的特性对压缩数据进行分组,能够到达最优的带宽效率。
另一实施例提供的一种数据处理装置。该数据处理装置用于执行机器学习计算;所述 数据处理装置包括解压电路10-11c、主处理电路10-12c以及控制电路10-13c;所述解压电路10-11c的第一输入端与所述控制电路10-13c的第一输出端连接,所述主处理电路10-12c的第一输入端与所述控制电路10-13c的第二输出端连接,所述解压电路10-11c的第一输出端与所述主处理电路10-12c的第二输入端连接。其中,所述控制电路10-13c用于解析运算处理指令得到解压处理参数,并将所述解压处理参数输入至所述解压电路10-11c,所述解压电路10-11c用于接收待解压数据,根据所述解压处理参数获取待解压数据中的信息,并根据所述信息以及所述解压处理参数,对所述待解压数据进行解压处理得到解压数据,所述主处理电路10-12c用于根据处理参数对接收到的所述解压数据进行分组处理。
可选的,所述机器学习计算包括:人工神经网络运算。可选的,如图76所示,所述数据处理装置还包括从处理电路10-14c以及存储电路10-15c,所述从处理电路10-14c用于对接收到的分组数据进行累加运算以及内积运算,所述存储电路10-15c用于存储原始数据;所述控制电路10-13c还用于获取计算指令,并解析所述计算指令得到多个运算指令,将多个所述运算指令输入至所述解压电路10-11c以及所述主处理电路10-12c中。
可选的,所述解压电路10-11c的第二输入端与所述存储电路10-15c的第一输出端连接,所述解压电路10-11c的第一输出端与所述存储电路10-15c的第一输入端连接。所述主处理电路10-12c的第二输出端与所述从处理电路10-14c的输入端连接,所述从处理电路10-14c的输出端与所述主处理电路10-12c的第三输入端连接,所述存储电路10-15c的第二输入端与所述控制电路10-13c的第三输出端连接,所述存储电路10-15c的第二输出端与所述控制电路10-13c的输入端连接。
可选的,所述解压电路10-11c具体用于接收所述待解压数据,根据所述解压处理参数获取待解压数据中首部数据包含的信息,并根据待解压数据中首部数据包含的所述信息以及所述解压处理参数,对所述待解压数据进行解压处理得到解压数据。
具体的,数据处理装置中的解压电路10-11c可以接收存储电路10-15c输入的待解压数据,以及控制电路10-13c输入的解压处理参数,并根据解压处理参数获取待解压数据中的信息,根据待解压数据中的信息以及解压处理参数,对待解压数据进行解压处理得到解压数据,并将这些解压数据输入至主处理电路10-12c,主处理电路10-12c可以接收控制电路10-13c输入的处理参数,并根据处理参数对接收到的解压数据再进行分组处理,可以得到多组分组数据。可选的,主处理电路10-12c可以接收控制电路10-13c输入的处理参数,该处理参数可以包括分组处理参数。可选的,待解压数据可以为压缩格式的数据,该压缩格式的数据可以包括两部分,分别为首部数据和尾部数据,该尾部数据包含的信息可以为压缩的具体数据,首部数据包含的信息可以包括数据块的大小以及尾部数据的起始地址等信息。可选的,上述解压处理参数可以包括压缩格式数据中尾部数据的起始地址,尾部数据的长度以及解压所需的参数等。可选的,上述解压所需的参数可以包括哈夫曼解码表,游程解码表以及基于字典的解码表等等。一般,解压电路10-11c可以根据待解压数据中的信息以及解压所需的参数,对待解压数据进行解压处理,得到解压数据,也就是待解压数据中的尾部数据,该尾部数据可以为分块数据,即为解压数据。可选的,解压数据可以为 分块数据,也就是待解压数据未进行压缩处理前的数据。
需要说明的是,数据处理装置可以包括多个从处理电路10-14c。可选的,控制电路10-13c可以接收解压运算指令,该指令可以是存储电路10-15c输入的,该控制电路10-13c还可以解析运算指令得到解压处理参数,并将解压处理参数输入至主处理电路10-12c。可选的,解压电路10-11c可以接收控制电路10-13c输入解压处理参数,对存储电路10-15c输入的待解压数据,进行解压处理得到对应数量的分块数据,也就是说,每一个待解压数据可以得到一个分块数据。可选的,压缩格式数据中的尾部数据的分布类型可以为一维紧密型,二维紧密型,三维紧密型,还可以为其它任意维度紧密型。
示例性的,若尾部数据中包含多个压缩格式的数据,一个压缩格式的数据后连续相接下一个压缩格式的数据,依次类推,连续分布多个压缩格式的数据,该种分布形式可以为一维紧密型;若多个压缩格式的数据分布的形式是固定位宽大小,即可以为8比特位宽的矩阵分布形式,并且第一个压缩格式的数据为6比特位宽的数据“010100”,第二个压缩格式数据可以为6比特位宽的数据“101101”,则第二个压缩格式数据的高2位数值“10”可以连续相接第一个压缩数据后,即“01010010”这8个数值位于同一行,第二个压缩格式的数据的低4位数值“1101”可以分布于第二行,然后相连第三个压缩数据,依次类推,每一行存储的数值位数是固定的,多余的数值可以分布于下一行,该种分布形式可以称为二维紧密型;若多个压缩格式的数据分布的形式可以为多个固定大小的矩阵分布,即分别可以为8位*8位的多个矩阵分布形式,若第一个压缩格式的数据为6比特位宽的数据“010100”,第二个压缩格式数据可以为6比特位宽的数据“101101”,则第二个压缩格式数据的高2位数值“10”可以连续相接第一个压缩格式的数据后,即“01010010”这8个数值位于同一行,第二个压缩格式的数据的低4位数值“1101”分布于第二行,然后相连第三个压缩数据,依次类推,每一行存储的数值位数是固定的,多余的数值可以分布于下一行,当压缩格式的数据将第一个固定大小的矩阵框分布完后,可以继续将压缩格式的数据分布于第二个固定大小的矩阵框,依次类推,直到将所有压缩格式的数据全部分布完为止,该种分布形式可以称为三维紧密型。
可选的,解压电路10-11c可以将解压数据输入至主处理电路10-12c进行后续的不同运算处理,还可以将解压数据返回至存储电路10-15c写入外部存储,等待后续读入。可选的,上述控制电路10-13c还可以对接收到的分组指令进行解析,得到分组处理参数。
另外,继续参见图76,上述数据处理装置还可以包括直接内存访问单元。可选的,上述数据处理装置中的存储电路10-15c可以包括:寄存器、缓存中任意组合。缓存可以存储输入数据,寄存器可以存储输入数据中标量数据,缓存可以包括高速暂存缓存。可选的,控制电路10-13c可以包括:指令缓存单元10-131c、指令处理单元10-132c以及存储队列单元10-133c,其中,指令缓存单元10-131c可以存储人工神经网络运算关联的计算指令,指令处理单元10-132c可以对计算指令解析得到多个运算指令,存储队列单元10-133c可以存储指令队列,该指令队列可以包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
可选的,上述控制电路10-13c还可以包括依赖关系处理单元10-134c,该依赖关系处理单元10-134c用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元。
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
本实施例提供的一种数据处理装置,该装置包括主处理电路以及解压电路,在对待解压数据进行不同的运算处理前,该装置可以通过单独且逻辑简单的硬件电路(即解压电路),根据解压处理参数对待解压数据进行解压处理得到解压数据,进而从处理电路可以对解压数据进行不同的运算处理,该过程可以降低数据处理装置中主处理电路与从处理电路之间的数据带宽。
如图76所示为另一个实施例提供的一种数据处理装置中主从处理电路的具体结构示意图,其中,数据处理装置包括所述主处理电路10-12c,该主处理电路10-12c包括分组转发模块10-121c,所述分组转发模块10-121c用于接收所述解压电路10-11c输入的所述解压数据,以及所述控制电路10-13c输入的分组处理参数,并根据所述分组处理参数对所述解压数据进行分组处理。
具体的,主处理电路10-12c可以接收解压电路10-11c输入的解压数据,还可以接收控制电路10-13c输入的分组处理参数。可选的,分组处理参数可以包括分组的数量以及分组的方法等信息,该分组的方法可以为基于步长的划分法,随机划分法以及聚类划分法等等。可选的,解压电路10-11c可以根据分块数据的具体分布以及功耗、面积、压缩率等实际需求,确定神经网络中一般采用基于步长的划分方式对解压数据进行分组处理。可选的,基于步长的划分方式可以表征为,根据数据的特性按照固定大小的矩形框对数据进行划分,该特性可以为空间相似性,稀疏性或者满足具体的概率分布,还可以为其它特性,对此本实施例不做任何限定。可选的,具体的概率分布可以为高斯分布,还可以为其它概率分布。
需要说明的是,主处理电路10-12c可以对接收到的解压数据进行分组处理得到多组分组数据,并通过多个从处理电路10-14c对多组分组数据进行并行运算处理。
示例性的,参见图77所示,若待解压数据为二维数据,并且解压电路10-11c对8个待解压数据进行解压处理后得到8个解压数据,即8个分块数据,可以表示为数据块0,数据块1,数据块2,数据块3,数据块4,数据块5,数据块6,数据块7,并对这8个数据块进行分组处理后可以得到两组分组数据,其中,每一个待解压数据进行解压处理可以 得到一个解压数据,即待解压数据0进行解压处理可以得到一个解压数据0,该待解压数据0包括首部(head)数据0以及尾部(data)数据0,依次类推,其它待解压数据也可以得到对应的解压数据,并将这8个解压数据进行分组处理,可以得到两组分组数据,即group1和group2,最后数据处理装置可以将这两组分组数据分别发送至两个从处理单元进行并行运算处理。
本实施例提供的一种数据处理装置,该装置中的主处理电路包括分组转发模块,通过分组转发模块可以对解压数据进行分组处理,得到多组分组数据,并将多组分组数据发送至多个从处理单元,对多组分组数据进行并行运算处理,从而提高数据处理装置的运算效率;另外,数据处理装置还可以根据不同的特性对解压数据进行分组,能够到达最优的带宽效率。
图78为一实施例提供的数据处理方法的流程示意图,该方法可以通过图76所示的数据处理装置进行处理,本实施例涉及的是对数据进行解压的过程。如图78所示,该方法包括:
S10-101c、接收待处理数据。
具体的,数据处理装置中的解压电路可以接收存储电路输入的待处理数据。其中,待处理的数据格式可以为压缩格式的数据。
S10-102c、根据解压处理参数,获取所述待处理数据中的信息。
可选的,上述S10-102c中根据解压处理参数,获取所述待处理数据中的信息包括:根据所述解压处理参数,获取所述待处理数据中首部数据包含的信息。
具体的,上述解压处理参数可以包括压缩格式数据中尾部数据的起始地址,尾部数据的长度以及解压所需的参数等。可选的,数据处理装置中的解压电路可以根据解压处理参数包含的待处理参数中首部数据的地址,以及首部数据的大小,获取待处理数据中对应首部数据中包含的尾部数据的地址,以及尾部数据的大小。可选的,上述解压处理参数可以是解压电路预先存储的。
S10-103c、根据所述解压处理参数以及待处理数据中的所述信息,对所述待处理数据进行解压处理,得到解压数据。
可选的,所述根据待处理数据中的所述信息以及所述解压处理参数,对所述待处理数据进行解压处理,得到解压数据,包括:根据所述待处理数据中首部数据包含的信息以及所述解压处理参数,对所述待处理数据进行解压处理,得到解压数据。
具体的,数据处理装置中的解压电路可以根据接收到的解压处理参数包含的解压所需的参数,以及待处理数据中对应首部数据中,包含的尾部数据的地址和尾部数据的大小,提取解压数据。可选的,解压数据可以为待解压数据在压缩处理前得到的分块数据。可选的,上述解压所需的参数可以为哈夫曼解码表,游程解码表或基于字典的解码表等等。可选的,解压电路可以根据尾部数据的地址和尾部数据的大小,按照解压所需的参数中解码表中数据的顺序,查找正确分布的分块数据。
S10-104c、根据处理参数对所述解压数据进行分组处理,得到分组数据。
具体的,上述处理参数可以包括分组处理参数以及分块处理参数等等。可选的,上述处理参数可以是分组转发模块预先存储的。
本实施例提供的一种数据处理方法,数据处理装置接收待处理数据以及解压处理参数,根据所述解压处理参数,获取所述待处理数据中的信息,根据所述解压处理参数以及待处理数据中的所述信息,对所述待处理数据进行解压处理,得到解压数据,根据处理参数对所述解压数据进行分组处理,得到分组数据,并将分组后的多组分组数据输入至多个从处理电路,从而通过多个从处理电路对待处理数据可以进行并行运算处理,以提高数据处理装置的运算效率;另外,该方法还可以根据不同的特性对压缩数据进行分组,能够到达最优的带宽效率。
在其中一个实施例中,所述处理参数可以包括分组处理参数,所述根据所述处理参数对所述解压数据进行分组处理,得到分组数据,包括:根据分组处理参数对所述解压数据进行分组处理,得到分组数据。
可选的,所述根据分组处理参数对所述解压数据进行分组处理,得到分组数据的步骤之后,还包括:通过从处理电路对所述分组数据进行并行运算处理。
具体的,上述分组处理参数可以包括分组的数量以及分组的方法等信息,该分组的方法可以为基于步长的划分法,随机划分法以及聚类划分法等等。可选的,分组转发模块可以根据解压数据的具体分布以及功耗、面积、压缩率等实际需求,确定神经网络中一般采用基于步长的划分方式对解压数据进行分组处理。可选的,分组转发模块可以根据接收到的分组处理参数对解压数据进行分组处理,得到多组分组数据,并将这多组分组数据发送至多个从处理电路,该多组从处理电路可以对多组分组数据进行并行运算处理。可选的,上述不同运算处理可以包括向量累加运算,向量内积运算,向量比较运算以及矩阵转置处理等。另外,分组处理参数还可以是分组转发模块预先存储的分组处理参数。
需要说明的是,主处理电路中的分组转发模块可以根据分组处理参数将解压数据进行分组处理,得到多组分组数据,并可以将多组分组数据并行发送给多个从处理电路中,其中,每组分组数据可以发送给一个从处理电路,多个从处理电路可以对多组分组数据进行并行运算处理得到运算结果,并可以将该运算结果返回至主处理电路,主处理电路还可以对该运算结果进行一些后续运算处理,并将后续运算处理的结果返回至分块压缩电路,最后分块压缩电路可以对后续运算处理的结果进行分块处理以及压缩处理后,将压缩后的结果发送至存储电路,存储电路还可以对压缩后的结果进行下一阶段的运算处理。
另外,若从处理电路可以对解压数据进行乘法运算,则可以将乘法运算的结果返回至主处理电路,并且上述主处理电路可以对该乘法运算结果进行一些后续处理,该后续处理可以包括累加以及激活运算处理。
本实施例提供的一种数据处理方法,数据处理装置还可以根据处理参数对解压数据进行分组处理,得到多组分组数据,并将分组后的多组分组数据输入至多个从处理电路,从而通过多个从处理电路对待处理数据可以进行并行运算处理,以提高数据处理装置的运算效率;另外,该方法还可以根据不同的特性对压缩数据进行分组,能够到达最优的带宽效 率。
另一实施例提供的一种数据处理装置。该数据处理装置用于执行机器学习计算;所述数据处理装置包括处理电路10-11d以及控制电路10-12d,所述处理电路10-11d的第一输入端与所述控制电路10-12d的第一输出端连接,所述处理电路10-11d包括分块压缩模块10-111d;其中,所述控制电路10-12d用于解析数据处理指令得到数据的处理参数,并将所述处理参数输入至所述分块压缩模块;所述分块压缩模块10-111d用于根据所述处理参数,对接收到的原始数据进行分块处理得到分块数据,并对所述分块数据进行压缩处理,得到已编码数据的信息;所述分块压缩模块10-111d还用于根据已编码数据的所述信息,判断所述分块数据满足触发压缩旁路的条件,则将所述分块数据作为目标压缩数据。
可选的,所述分块压缩模块10-111d还用于所述分块数据不满足触发压缩旁路的条件时,则继续对所述分块数据进行压缩处理。
可选的,所述机器学习计算包括:人工神经网络运算。可选的,如图79所示,所述数据处理装置还包括存储电路10-13d,所述存储电路10-13d用于存储原始数据,所述控制电路10-12d用于获取计算指令,并解析所述计算指令得到多个运算指令,将多个所述运算指令输入至所述处理电路10-11d中。
其中,所述存储电路10-13d的第一输出端与所述处理电路10-11d的第二输入端连接,所述存储电路10-13d的第二输出端与所述控制电路10-12d的输入端连接,所述存储电路10-13d的第一输入端与所述处理电路10-11d的输出端连接,所述存储电路10-13d的第二输入端与所述控制电路10-12d的第二输出端连接。
具体的,数据处理装置中的处理电路10-11d可以通过分块压缩模块10-111d,对接收到的原始数据进行分块处理后得到分块数据,并采用具体的压缩算法对分块数据进行压缩处理,在压缩过程中可以获得已编码数据的信息,根据该信息判断分块数据是否满足触发压缩旁路的条件,若满足,则分块数据可以退出压缩处理过程,分块压缩模块10-111d可以将分块数据,作为对应的目标压缩数据直接输出;若分块压缩模块10-111d根据获得的已编码数据的信息,判断分块数据不满足触发压缩旁路的条件时,则分块压缩模块10-111d可以采用具体的压缩算法对分块数据继续进行后续压缩处理;也就是说,在分块压缩模块10-111d获得已编码数据中的信息时,压缩处理过程已经执行一部分了,当分块压缩模块10-111d根据分块数据中的信息,判断分块数据不满足触发压缩旁路的条件时,则分块压缩模块10-111d可以对分块数据执行剩余的压缩处理过程。其中,剩余的压缩处理过程可以称为上述所指的后续压缩处理。另外,分块压缩模块10-111d得到目标压缩数据后,处理电路10-11d还可以对这些压缩数据进行不同的并行运算处理。可选的,上述已编码数据的信息可以为已编码数据的长度或大小。可选的,上述处理电路10-11d可以包括主处理电路和/或从处理电路,若处理电路中包括主处理电路和从处理电路时,从处理电路可以为多个。其中,主处理电路和从处理电路中均包含分块压缩模块10-111d,并且通过分块压缩模块10-111d均可以对原始数据进行分块处理以及压缩处理。
可选的,处理电路10-11d中的分块压缩模块10-111d可以接收存储电路10-13d输出的 原始数据,并且分块压缩模块10-111d还可以接收控制电路10-12d输入的处理参数,其中,处理参数包括分块处理参数以及压缩处理参数。可选的,分块压缩模块10-111d可以根据分块处理参数,对原始数据进行分块处理得到分块数据,并根据接收到的压缩处理参数对分块数据进行压缩处理。可选的,上述分块处理参数可以包括分块的大小,分块的行数和列数等。可选的,上述压缩处理参数可以包括对分块数据进行压缩处理的具体压缩算法。可选的,原始数据的格式可以是压缩后数据的格式,还可以是未压缩数据的格式。可选的,数据处理装置可以包括多个处理电路10-11d。可选的,控制电路10-12d可以接收分块和压缩等处理的指令,并解析指令得到分块和压缩等处理的参数,并将参数输入至处理电路10-11d中的分块压缩模块10-111d。
此外,若根据已编码数据的信息,判断出待压缩数据(即分块数据)满足触发压缩旁路的条件时,则分块压缩模块10-111d不需要采用任何压缩算法,继续对待压缩数据进行后续压缩处理,直接可以将待压缩数据作为目标压缩数据输出,同时,若根据已编码数据中的信息,判断出待压缩数据不满足触发压缩旁路的条件时,则分块压缩模块10-111d需要采用具体的压缩算法,对待压缩数据进行后续压缩处理。可选的,触发压缩旁路的条件可以为待压缩数据的大小小于已编码数据的大小。
需要说明的是,处理电路10-11d中的分块压缩模块10-111d可以根据控制电路14输入的压缩处理参数,对该分块数据采用具体的压缩算法进行压缩处理得到对应的目标压缩数据。可选的,分块压缩模块10-111d可以对分块数据进行并行处理。可选的,每一个分块数据可以得到一个目标压缩数据,其中,目标压缩数据可以包括两部分,分别为首部数据和尾部数据,该尾部数据包含的信息可以为压缩的具体数据,首部数据包含的信息可以包括尾部数据的长度、该数据块应用的压缩算法、尾部数据的起始地址以及压缩标志位等信息。可选的,上述压缩标志位可以表征该目标压缩数据是通过完整的压缩算法进行处理得到的,还是未进行具体的压缩处理直接得到目标压缩数据的,还可以理解为,该压缩标志位可以包括两种信号,分别为低电平信号0和高电平信号1表示,0可以表示该压缩数据是通过完整的压缩算法进行处理得到的,1可以表示该压缩数据是通过分块数据直接得到的。可选的,上述压缩数据中尾部数据的分布类型可以为一维紧密型,二维紧密型,三维紧密型,还可以为其它任意维度紧密型。
示例性的,若压缩数据中的尾部数据中包含多个数据,一个数据后连续相接下一个数据,依次类推,连续分布多个数据,该种分布形式可以称为一维紧密型;若多个数据分布的形式是固定位宽大小,例如可以为8比特位宽的矩阵分布形式,若第一个数据为6比特位宽的数据“010100”,则第二个数据可以为6比特位宽的数据“101101”,则第二个压缩格式数据的高2位数值“10”可以连续相接第一个数据后,即“01010010”这8个数值位于同一行,第二个数据的低4位数值“1101”可以分布于第二行,然后相连第三个数据,依次类推,每一行存储的数值位数是固定的,多余的数值可以分布于下一行,该种分布形式可以称为二维紧密型;若多个数据分布的形式可以为多个固定大小的矩阵分布,例如可以为8位*8位的多个矩阵分布形式。若第一个数据为6比特位宽的数据“010100”,则第二个数据可以 为6比特位宽的数据“101101”,则第二个压缩格式数据的高2位数值“10”可以连续相接第一个压缩格式的数据,即“01010010”这8个数值位于同一行,第二个压缩格式数据的低4位数值“1101”可以分布于第二行,然后相连第三个数据,依次类推,每一行存储的数值位数是固定的,多余的数值可以分布于下一行,当数据将第一个固定大小的矩阵框分布完后,可以继续将数据分布于第二个固定大小的矩阵框,依次类推,直到将所有数据全部分布完为止,该种分布形式可以称为三维紧密型。
可选的,若处理电路10-11d中包含主处理电路以及从处理电路,则主处理电路中的分块压缩模块10-111d可以将目标压缩数据输入至从处理电路,通过从处理电路对目标压缩数据进行后续的不同并行运算处理,还可以将目标压缩数据返回至存储电路10-13d写入外部存储,等待后续读入。可选的,若处理电路10-11d中只包含多个从处理电路,则每个从处理电路中的分块压缩模块10-111d均可以对目标压缩数据进行后续运算处理。
另外,继续参见图79,上述数据处理装置还可以包括直接内存访问单元。可选的,上述数据处理装置中的存储电路10-13d可以包括:寄存器、缓存中任意组合。缓存可以存储输入数据,寄存器可以存储输入数据中标量数据,缓存可以包括高速暂存缓存。可选的,控制电路10-12d可以包括:指令缓存单元10-121d、指令处理单元10-122d以及存储队列单元10-123d,其中,指令缓存单元10-121d可以存储人工神经网络运算关联的计算指令,指令处理单元10-122d可以对计算指令解析得到多个运算指令,存储队列单元10-123d可以存储指令队列,该指令队列可以包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
可选的,上述控制电路10-12d还可以包括依赖关系处理单元10-124d,该依赖关系处理单元10-124d用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元。
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
本实施例提供的一种数据处理装置,该装置包括处理电路以及控制电路,处理电路包括分块压缩模块,分块压缩模块可以对原始数据,先进行分块处理得到分块数据,并采用压缩算法对分块数据进行压缩处理,若分块数据满足触发压缩旁路的条件时,则分块压缩模块可以将该分块数据作为目标压缩数据输出,不需要对分块数据进行后续压缩处理,该过程能够有效节省分块压缩模块的运算量以及存储开销,从而提高数据处理装置的运算效率;另外,数据处理装置还可以对多个分块数据采用并行方式进行压缩处理,有效的提高 了压缩的效率。
如图79所示为另一个实施例提供的一种数据处理装置中处理电路的具体结构示意图,其中,处理电路中的所述分块压缩模块10-111d包括分块处理单元10-1111d、压缩处理单元10-1112d以及选择器10-1113d,所述分块处理单元10-1111d的第一输出端与所述压缩处理单元10-1112d的输入端连接,所述压缩处理单元10-1112d的输出端与所述选择器10-1113d的第一输入端连接,所述分块处理单元10-1111d的第二输出端与所述选择器10-1113d的第二输入端连接。其中,所述分块处理单元10-1111d用于对接收到的所述原始数据进行分块处理得到分块数据,所述压缩处理单元10-1112d用于对所述分块数据进行压缩处理,得到所述已编码数据的信息,根据已编码数据的所述信息,判断所述分块数据是否满足触发压缩旁路的条件,若不满足,则对所述分块数据进行后续压缩处理得到压缩数据,所述选择器10-1113d用于根据接收到的逻辑判断信号确定,接收分块处理单元10-1111d输出的所述分块数据,还是压缩处理单元10-1112d对所述分块数据进行后续压缩处理后得到的压缩数据,作为目标压缩数据并输出。
具体的,分块压缩模块10-111d对分块数据进行压缩处理时,可以默认将分块数据先输入至压缩处理单元10-1112d进行压缩处理,压缩处理过程执行一部分后,可以得到该分块数据中的信息,压缩处理单元10-1112d可以根据该信息判断该分块数据是否满足触发压缩旁路的条件,根据判断结果可以向选择器10-1113d输入一个逻辑判断信号,选择器10-1113d根据接收到的逻辑判断信号确定,分块压缩模块10-111d可以直接接收分块处理单元10-1111d输出的分块数据,作为目标压缩数据输出,还是压缩处理单元10-1112d可以继续采用具体的压缩算法,对分块数据进行后续压缩处理后得到压缩结果,接收压缩处理单元10-1112d输出的该压缩结果,作为目标压缩数据输出。可选的,逻辑判断信号可以包括两种,分别表示满足触发压缩旁路的条件以及不满触发压缩旁路的条件。其中,若选择器10-1113d接收到的信号表示,满足触发压缩旁路的条件时,则选择器10-1113d可以直接接收分块处理单元10-1111d输出的分块数据,作为目标压缩数据输出;若选择器10-1113d接收到的信号表示,不满足触发压缩旁路的条件时,则选择器10-1113d可以直接压缩处理单元10-1112d继续采用具体的压缩算法,对分块数据进行后续压缩处理后得到压缩结果,作为目标压缩数据输出。可选的,上述压缩算法可以包括哈夫曼编码,游程编码以及基于字典的压缩算法等。可选的,分块压缩模块10-111d可以对分块处理后的多个分块数据进行并行编码处理,但是,每个分块中的数据可以进行串行编码处理。可选的,上述编码处理也可以称为压缩处理。可选的,选择器10-1113d可以为二路选择器。
以哈夫曼编码算法为例可以对压缩算法进行说明,分块压缩模块10-111d中的分块处理单元10-1111d可以根据接收到的分块处理参数,对接收到的原始数据进行分块处理得到多个分块数据,将分块数据输入至压缩处理单元10-1112d,并且分块压缩模块10-111d接收到的压缩处理参数中得知具体的压缩算法为哈夫曼编码算法。若此时压缩处理单元10-1112d只对一个分块数据进行压缩处理,首先按照出现频率对该分块数据进行排序,最常见的数据排在首位,得到排序后的一个数列,压缩处理单元10-1112d根据排序后的该数 列建立对应的哈夫曼树,并根据实际已知的数据起始地址在哈夫曼树中查找压缩数据的尾部数据,另外,压缩处理单元10-1112d在进行查找处理前,还可以根据哈夫曼树得到压缩数据中首部数据包含的信息,即分块数据中每个数据的大小、该数据块应用的压缩算法以及压缩标志位等信息。可选的,压缩处理单元10-1112d对分块数据中的其中一个数据进行压缩处理时,处理该数据中的一个数值会将标记数据大小的数值加1,当记录的数值大于对应的分块数据的大小时,则该分块数据可以不再进行后续查找处理(即后续压缩处理),退出压缩处理过程,此时,分块压缩模块10-111d可以通过选择器10-1113d,直接接收分块处理单元10-1111d输出的该分块数据,作为目标压缩数据并输出;当记录的数值小于对应的分块数据的大小时,则该分块数据可以继续进行后续查找处理(即后续压缩处理),此时,压缩处理单元10-1112d可以将后续压缩处理结束后的压缩结果输入至选择器10-1113d中,选择器10-1113d将该压缩结果作为目标压缩数据并输出。
本实施例提供的一种数据处理装置,分块压缩模块中包括的分块处理单元、压缩处理单元以及选择器,通过分块处理单元可以对接收到的原始数据进行分块处理,得到分块数据,并通过压缩处理单元对分块数据进行压缩处理,得到已编码数据的信息,并根据已编码数据的信息判断该分块数据是否满足触发压缩旁路条件,若满足,则选择器可以直接接收分块处理单元得到的该分块数据作为目标压缩数据,否则,压缩处理单元还需要对分块数据进行后续压缩处理得到压缩结果,选择器可以将该压缩结果作为目标压缩数据,该过程可以直接将分块数据作为目标压缩结果输出,能够有效节省分块压缩模块的运算量以及存储开销,从而提高数据处理装置的运算效率;另外,数据处理装置中的分块压缩模块可以对多个分块数据采用并行方式进行压缩处理,有效的提高了压缩的效率。
图80为一实施例提供的数据处理方法的流程示意图,该方法可以通过图79所示的数据处理装置进行处理,本实施例涉及的是对数据进行压缩的过程。如图80所示,该方法包括:
S10-101d、接收待处理数据。
具体的,数据处理装置中的处理电路通过分块压缩电路可以接收存储电路输入的待处理数据。其中,待处理数据格式可以与压缩后的数据格式一致,还可以与压缩后的数据格式不一致。可选的,上述处理电路可以包括主处理电路和/或从处理电路,其中,主处理电路可以为一个,从处理电路可以为多个。
可选的,所述处理参数可以包括分块处理参数以及压缩处理参数。
S10-102d、根据处理参数对所述待处理数据进行分块处理,得到分块数据。
可选的,所述根据处理参数对所述待处理数据进行分块处理,得到分块数据,包括:根据分块处理参数对所述待处理数据进行分块处理,得到分块数据。
具体的,上述分块处理参数可以包括分块的大小,分块的行数和列数等信息。可选的,上述分块处理参数可以是分块压缩模块通过接收控制电路解析得到的,还可以是分块压缩模块预先存储的。可选的,数据处理装置中的分块压缩模块可以根据接收到的分块处理参数对待处理数据进行分块处理,得到分块数据。
S10-103d、根据所述处理参数对所述分块数据进行压缩处理,得到已编码数据的信息。
可选的,所述根据所述处理参数对所述分块数据进行压缩处理,得到已编码数据的信息,包括:根据压缩处理参数对所述待处理数据进行压缩处理,得到已编码数据的所述信息。
具体的,上述压缩处理参数可以包括对分块数据进行压缩处理的具体压缩算法。可选的,上述压缩处理参数可以是分块压缩模块,通过接收控制电路解析得到的,还可以是分块压缩模块预先存储的。可选的,数据处理装置中的分块压缩模块,可以根据接收到的压缩处理参数对分块数据进行压缩处理,得到已编码数据的信息。在本实施例中,分块压缩模块根据具体的压缩算法,可以对分块数据执行一部分压缩处理过程,就可以得到已编码数据的信息。可选的,上述已编码数据的信息可以等于已编码数据的长度或大小。
S10-104d、根据已编码数据的所述信息,判断所述分块数据是否满足触发压缩旁路的条件,其中,所述处理压缩旁路的条件包括所述待处理数据的大小小于已编码数据的大小。
S10-105d、若满足,则将所述分块数据作为目标压缩数据。
具体的,如果分块数据满足触发压缩旁路的条件时,分块压缩模块可以直接将分块数据作为目标压缩数据输出。可选的,分块压缩模块可以对多个分块数据进行并行处理,得到多个目标压缩数据。
本实施例提供的一种数据处理方法,接收待处理数据,根据处理参数对所述待处理数据进行分块处理,得到分块数据,根据所述处理参数对所述分块数据进行压缩处理,得到已编码数据的信息,根据已编码数据的所述信息,判断所述分块数据是否满足触发压缩旁路的条件,若满足,则将所述分块数据作为目标压缩数据,该方法有效节省了数据处理装置压缩处理的运算量以及数据处理装置的存储开销;另外,该方法还可以对分块数据进行并行处理,得到目标压缩数据,有效提高了压缩效率。
在其中一个实施例中,上述S10-104d在根据已编码数据中的所述信息,判断所述分块数据是否满足触发压缩旁路的条件之后,还包括:若不满足,则采用压缩算法对所述分块数据进行后续压缩处理,得到目标压缩数据。
可选的,所述得到目标压缩数据的步骤之后,还包括:通过处理电路对所述目标压缩数据进行并行运算处理。
具体的,如果分块数据不满足触发压缩旁路的条件时,分块压缩模块可以采用具体的压缩算法,对该分块数据进行后续压缩处理后得到压缩结果,将该压缩结果可以作为目标压缩数据。可选的,上述压缩算法可以为哈夫曼编码,游程编码以及基于字典的压缩算法等。可选的,上述运算处理可以包括向量累加运算,向量内积运算,向量比较运算以及矩阵转置处理等。
需要说明的是,处理电路中的分块压缩模块可以根据分块处理参数以及压缩处理参数,对分块数据进行分块处理后得到分块数据,并对分块数据进行压缩处理,得到目标压缩数据,其中,若分块数据满足触发压缩旁路的条件时,则分块压缩模块可以直接将该分块数据作为目标压缩数据,否则,分块压缩模块需要对分块数据进行后续压缩处理后得到 压缩数据,将该压缩数据作为目标压缩数据,处理电路可以对目标压缩数据进行不同的运算处理得到运算结果,并且处理电路还可以对该运算结果进行一些后续运算处理,并将后续运算处理的结果返回至分块压缩电路,最后分块压缩电路可以对后续运算处理的结果,进行分块处理以及压缩处理后,将压缩后的结果发送至存储电路,存储电路还可以对压缩后的结果进行下一阶段的运算处理。可选的,处理电路可以对目标压缩数据进行解压以及乘法运算,后续处理可以包括解压以及乘法运算等。
另外,处理电路中的分块压缩模块,可以根据分块处理参数以及压缩处理参数,对分块数据进行分块处理后得到分块数据,并对分块数据进行压缩处理,得到目标压缩数据,处理电路可以对目标压缩数据进行不同类型的运算处理得到运算结果,并且处理电路可以将该不同类型的运算结果返回至存储电路,存储电路还可以对该目标压缩数据进行下一阶段的运算处理。可选的,处理电路可以对目标压缩数据进行解压、累加以及激活运算,上述不同类型的运算结果可以包括解压、累加以及激活运算等。
本实施例提供的一种数据处理方法,若分块数据不满足触发压缩旁路的条件时,则分块压缩模块需要采用压缩算法对分块数据,继续进行后续压缩处理后得到压缩数据,并将该压缩数据作为目标压缩数据,否则,分块压缩模块可以不需要对该分块数据进行后续压缩处理,直接将该分块数据作为目标压缩数据,该方法能够节省数据处理装置压缩处理的运算量,以及数据处理装置的存储开销。
11、数据压缩解压装置、数据压缩方法以及数据解压方法
本申请其中一个实施例中的数据压缩解压装置11-100的结构框图,图81中数据压缩解压装置11-100,包括:n个压缩解压操作执行组件11-110,每一所述压缩解压操作执行组件包括输入FIFO存储器11-111、至少一个压缩解压操作执行部件11-112以及输出FIFO存储器11-113,所述输入FIFO存储器11-111与所述输出FIFO存储器11-113之间串接所述多个压缩操作执行部件11-112,其中,n为正整数。
其中,各个所述输入FIFO存储器11-111用于对接收的数据流执行同步操作,并将同步操作之后的数据流传输至连接的压缩操作执行部件;各个所述压缩解压操作执行组件11-110中串接的至少一个压缩解压操作执行部件11-112,依次对接收的输入数据执行对应的压缩子操作,得到各个数据流的压缩编码结果;各个所述输出FIFO存储器用于接收连接的压缩解压操作执行部件发送的压缩编码结果,并将接收的所述压缩编码结果进行同步操作后输出。进一步地,输出FIFO存储器按照各个数据流在待压缩数据中的顺序和/或位置写出接收压缩编码结果。应当清楚的是,数据流中的数据为待压缩的数据。
可选地,该数据压缩解压装置11-100还可以包括数据分割电路11-120,用于对输入的数据进行分割,得到多个数据流。可选地,输入数据可以为待压缩数据或压缩数据。可选地,数据分割电路11-120分割得到的数据流的大小可以为1024kb,或者其他设定大小。
进一步地,该数据压缩解压装置11-100还可以对压缩数据进行解压。
具体地,数据分割电路11-120将压缩数据分割为多个数据流,之后各个所述输入FIFO 存储器11-111对接收的数据流执行同步操作,并将同步操作之后的数据流传输至连接的压缩操作执行部件,各个所述压缩操作执行组件11-110中串接的所述多个压缩操作执行部件11-112,依次对接收的输入数据执行对应的解压子操作,得到各个数据流的解压结果,各个所述输出FIFO存储器11-113用于接收连接的压缩解压操作执行部件发送的解压结果,并将接收的所述解压结果进行同步操作后输出。
本实施例中的数据压缩解压装置,可以并行压缩或解压n个输入的数据流,且在输入和输出端均设置FIFO存储器,对输入的数据流以及输出的压缩编码结果或者解压结果均进行同步操作,保证了并行对待压缩数据的多个数据流进行压缩,或者对压缩数据进行解压时,输出的结果准确。
可选地,可以根据输入FIFO存储器11-111的面积以及执行的数据处理的类型设置输入位宽,其中,所述输入位宽为输入FIFO存储器单次获取数据的字节数。执行的数据处理的类型包括压缩数据或解压数据。例如,在进行数据压缩时,输入FIFO存储器的输入位宽可以为64kb等数值。在进行数据解压时,输入FIFO存储器的输入位宽可以为16kb等数值。可选地,可以根据输出FIFO存储器11-113的面积以及执行的数据处理的类型设置输出位宽,其中,所述输入位宽为输出FIFO存储器单次输出数据的字节数。例如,在进行数据压缩时,输出FIFO存储器的位宽16kb等数值。在进行数据压缩时,输出FIFO存储器的输入位宽可以为64kb等数值。
在其中一个实施例中,上述输入FIFO存储器11-111、压缩解压操作执行部件11-112以及输出FIFO存储器11-113上均设置结束信号发射器,该结束信号发射器用于发射结束信号。
具体地,在数据压缩解压装置11-100进行数据压缩或解压时,若n个压缩解压操作执行组件中,存在未输入数据流的压缩解压操作执行组件,则该未输入数据流的压缩解压操作执行组件的输入FIFO存储器上的结束信号发射器发射结束信号至其连接的压缩解压操作执行部件,接收到结束信号的压缩解压操作执行部件通过其安装的结束信号发射器将结束信号向后传递,直至将该结束信号传送至输出FIFO存储器,该未输入数据流的压缩解压操作执行组件的输出FIFO存储器通过其安装的结束信号发射器输出结束信号,此时,数据压缩解压装置11-100会终止当前执行的压缩或解压过程。
本实施例中的数据压缩解压装置根据某一压缩解压操作执行组件在压缩或解压过程中在无数据流的输入时,触发设置的结束信号发射器发射结束信号进而控制数据的压缩或解压进程,避免了数据压缩或解压过程在结束时因需补齐输入数据而造成的额外开销。
在其中一个实施例中,如图82所示,数据压缩解压装置11-100还可以包括数据混洗操作执行部件11-140。该数据混洗操作执行部件11-140连接压缩解压操作执行组件11-110的输入FIFO存储器11-111。该数据混洗操作执行部件11-140,用于接收数据混洗信号后,对通过的原始数据流进行混洗,得到数据流。可选地,该原始数据流可以来自待压缩数据,或者压缩数据。
可选地,该数据混洗操作执行部件11-140按照预设规则,对所述n个所述原始数据流 中后段数据进行混洗,得到n个数据流,其中,所述预设规则包括:相邻m个数据流进行混洗,或者,跳过k个数据流进行混洗,所述m为正整数,所述k为正整数。
例如,n=16,设置m=4,使用序号0-15区分各个压缩解压操作执行组件11-110,在输入原始数据流的过程中进行1次数据混洗操作。此时,数据混洗操作执行部件11-140在接收对应的数据混洗信号后,对相邻的四个压缩解压操作执行组件11-110的原始数据流进行数据混洗,即对序号为0-3压缩解压操作执行组件进行数据混洗;对4-7压缩解压操作执行组件进行数据混洗;对8-11压缩解压操作执行组件进行数据混洗;对12-15压缩解压操作执行组件进行数据混洗。
例如,n=16,设置k=4,使用序号0-15区分各个压缩解压操作执行组件11-110,同样使用序号0-15区分原始数据流,在输入原始数据流的过程中进行3次数据混洗操作。此时,数据混洗操作执行部件11-140在接收对应的数据混洗信号后,跳过四个压缩解压操作执行组件11-110的原始数据流进行数据混洗,此时,序号0压缩解压操作执行组件11-110得到的最终的数据流包含4段子数据流,依次为序号为0、4、8、12的数据流中对应子数据流。
应当清楚的是,若未原始数据流未执行数据混洗操作,则输入FIFO中的原始数据流即为后续操作中的数据流。
本实施例中的数据压缩解压装置可以实现对输入的原始数据流进行混洗,可以克服各个压缩解压操作执行组件的原始数据流中的数据在压缩或解压效率差异较大时,造成的各个压缩解压操作执行组件执行时间差异大,降低数据压缩或解压效率的问题。
在其中一个实施例中,如图83所示,数据压缩解压装置11-100的各个所述压缩解压操作执行组件11-110中相邻的两个压缩解压操作执行部件11-112之间串接一存储器11-115,
所述相邻的两个压缩解压操作执行部件之间串接一存储器11-115,用于存储对应的所述相邻的两个压缩解压操作执行部件中在前的压缩解压操作执行部件的输出结果。
具体地,压缩解压操作执行组件11-110中相邻的两个压缩解压操作执行部件11-112中在后的压缩解压操作执行部件,获取连接的存储器11-115中的输出结果作为输入数据执行对应的压缩或解压子操作。应当清楚的是,该输出结果为在前的压缩解压操作执行部件的输出结果。
本实施例中的通过在相邻的两个压缩解压操作执行部件之间串接一存储器,使得各个压缩解压操作执行组件中各个压缩解压操作执行部件的输出结果单独存储,保证了各个压缩解压操作执行组件处理的数据流的执行结果的准确性。
在其中一个实施例中,如图84所示,数据压缩解压装置11-100还可以包括控制电路11-130,该控制电路11-130分别连接所述数据分割电路11-120和所述压缩操作执行组件11-110。具体地,控制电路11-130用于控制数据分割电路11-120执行分割操作。其中,控制电路11-130用于控制数据分割电路11-120对输入的待压缩数据或压缩数据按照预设数据大小执行分割操作。可选地预设数据大小可以为1024kb等数值。可选地,控制电路11-130 还可以用于控制压缩解压操作执行组件11-110执行压缩操作,所述压缩操作包含至少一个压缩子操作。可选地,控制电路11-130还可以用于控制压缩解压操作执行组件11-110执行解压操作,所述解压操作包含至少一个解压子操作。
在其中一个实施例中,在进行数据压缩时,如图85所述,数据压缩解压装置11-100的各个压缩解压操作执行组件11-110中串接的压缩解压操作执行部件11-112,包括:依次串接的查询操作执行部件11-1121、比较操作执行部件11-1122以及加法操作执行部件11-1123,所述加法操作执行部件11-1123连接所述输出FIFO存储器11-113。可选地,该比较操作执行部件11-1122还可以连接输入FIFO存储器11-111。可选地,该查询操作执行部件11-1121还可以连接,输出FIFO存储器11-113。
本实施例的数据压缩解压装置11-100可以根据接收的控制信号,控制输入的数据流进入压缩解压操作执行组件中各个压缩解压操作执行部件的顺序。例如,在进行数据压缩时,数据流流向为:查询操作执行部件11-1121→比较操作执行部件11-1122→加法操作执行部件11-1123。相应地,据解压时,数据流流向为:比较操作执行部件11-1122→加法操作执行部件11-1123→查询操作执行部件11-1121。
可选地,若该数据压缩解压装置11-100仅为了实现数据压缩或解压的单一操作,在进行数据压缩时各个压缩解压操作执行组件11-110的串接次序为:依次串接查询操作执行部件11-1121、比较操作执行部件11-1122以及加法操作执行部件11-1123。在进行数据解压时各个压缩解压操作执行组件11-110的串接次序为:依次串接比较操作执行部件11-1122、加法操作执行部件11-1123以及查询操作执行部件11-1121。
查询操作执行部件11-1121,用于依次获取所述数据流中每一数字在预设的符号序列表中的排序值,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
比较操作执行部件11-1122,用于访问预设的码长边界表,根据所述数据流中每一数字在所述符号序列表中的排序值、预设的码长表,依次确定所述数据流中每一数字的编码码长,其中,所述码长边界表包含多种编码码长,以及每一所述编码码长的数字的最大排序值,所述码长表包含预设的多种编码码长。
加法操作执行部件11-1123,用于根据预设的码长基础值表以及数据流中每一数字的编码码长,依次得到所述数据流中每一数字的基础值,将所述数据流中每一数字的排序值与对应的基础值相加得到所述每一数字的初始编码值,之后将各个初始编码值按照对应的编码码长进行转换,得到所述数据流中各个数字的压缩编码值,其中,所述码长基础值表包括每一所述编码码长的基础值。
可选地,比较操作执行部件11-1122,具体用于查找码长边界表中排序值不小于当前数字的最小的排序值,根据所述码长边界表中排序值不小于当前数字的最小的排序值和所述码长表确定当前符号的编码码长。
本实施例中的数据压缩解压装置11-100可以通过依次串接的查询操作执行部件、比较操作执行部件以及加法操作执行部件,依次执行查询、比较以及加法操作,替换传统的查 表操作对待压缩数据进行压缩编码,由于本实施例中,使用的符号序列表、码长边界表、码长表以及码长基础值表中的数据量小,因此,该数据压缩解压装置11-100可以高效的进行数据压缩。由于该数据压缩方法得到的压缩数据的压缩效率与传统的哈夫曼编码基本一致,为方便表达,在下文提及该数据压缩方法时使用“改进的哈夫曼编码”表示该数据压缩方法。
可选地,上述实施例中的符号序列表,可以根据如下步骤进行设定:
根据待压缩数据中各个数字的出现概率,降序排列所述待压缩数字中的各个数字,得到各个所述数字的排序值,使用各个所述数字以及对应的排序值构建符号序列表。
可选地,上述实施例中的码长表,可以根据如下步骤进行设定:
首先,将待压缩数据中各个数字的哈夫曼编码的码长,将其作为待压缩数据中各个数字的编码码长。可选地,可以首先根据待压缩数据中各个数字的出现概率得到对应的哈夫曼树。之后,再根据各个数字在该哈夫曼树中对应的叶子结点到根结点的路径长度,得到待压缩数据中各个数字的编码码长。在一示例中:待压缩数据中包括的数字:10、20、30、40、50,对应的出现概率为:0.4、0.1、0.2、0.2、0.1。控制电路110根据待压缩数据中各个数字的出现概率得到的哈夫曼树如图86所示。由该图86可得,10、20、30、40、50对应的叶子结点到根据结点的路径长度分别为2、3、2、2、3,由于哈夫曼树中各个叶子结点到根结点的路径长度对应哈夫曼编码的编码码长,因此,编码电路130在该示例中得到的10、20、30、40、50对应的编码码长分别为2、3、2、2、3。可选地,还可以直接待压缩数据中各个数字的哈夫曼编码的编码码长,得到待压缩数据中各个数字的编码码长。承接上述示例,根据上述10、20、30、40、50的出现概率构建的哈夫曼树,得到的哈夫曼编码(约定哈夫曼树中指向左子树的分支表示“0”,指向右子树的分支表示“1”)分别为:00、010、10、11、011。应当清楚的是本实施例进行压缩编码时各个数字的编码码长与哈夫曼编码一致。
之后,统计待压缩数据中各个数字的编码码长的种类,待压缩数据中所有种类的编码码长组成码长表。可选地,将码长表中的编码码长升序排列,并使用序号依次标识升序排列的各个编码码长。
可选地,上述实施例中的码长边界表,可以根据如下步骤进行设定:
首先,获取符号序列表以及符号序列表中各数字的编码码长。之后,查找符号序列表中每种编码码长对应的最大排序值,并使用这些最大排序值构建所述码长边界表,其中,最大排序值是各种编码码长的数字的排序值的最大值。进一步地,将码长边界表中的各个最大排序值升序排列,得到所述码长边界表。更进一步的,使用与码长表对应的序号标识升序排列的码长边界表中的各个排序值。
可选地,上述实施例中的码长基础值表,可以根据如下步骤进行设定:
将码长边界表中各个最大排序值对应的编码值减去排序值,得到每种编码码长的基础值。可选地,升序排列码长基础值表中的各个基础值,并使用与码长表对应的序号标识升序排列的码长基础值表中的各个基础值。
进一步地,待压缩数据中各个数字的编码值通过下述步骤设置:
依次访问码长序列表中的数字,若当前数字的编码码长与上一排序值的数字的编码码长相同,则将所述上一排序值的数字的编码值加1得到所述当前数字的编码值;若当前数字的编码码长与上一排序值的数字的编码码长不同,则将所述上一排序值的数字的编码值加1得到的数值补充尾数0得到所述当前数字的编码值。循环执行上述设置编码值的步骤,直至得到符号序列表中最后一个数字的编码值。
例如:上述示例中,40编码码长为2比特的数字中最大排序值的数字,其排序值为2,50编码码长为3比特的数字中最大排序值的数字,其排序值为4。将2、4升序排列,得到的码长边界表为[2,4]。上述示例中,40为编码码长为2比特的数字中最大排序值的数字,其排序值为2,其编码值为10(二进制,对应十进制的数值2),因此,该示例中可以得到的编码码长为2比特的基础值为0;50为编码码长为3比特的数字中最大排序值的数字,其排序值为4,其编码值为111(二进制,对应十进制的数值7),因此,该示例中可以得到的编码码长为4比特的基础值为3。编码电路130在该示例中得到的码长基础值表为[0,3]。
相应地,在进行数据解压时,如图85所示的数据压缩解压装置11-100的查询操作执行部件11-1121,可以用于依次获取所述数据流中每一数字在预设的符号序列表中的排序值,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
其比较操作执行部件11-1122,可以用于访问预设的编码值范围表和预设的码长表,依次得到输入的数据流中各编码值的码长,其中,所述编码值范围表包含多种编码码长的最大编码值,所述码长编码包含所述多种编码码长。
加法操作执行部件11-1123,可以用于依次获取数据流中每一编码值的有效值作为各所述编码值的初始编码值,并根据所述数据流中每一编码值的编码码长以及预设的码长基础值表得到所述数据流中每一编码值的基础值,将所述数据流中每一编码值的初始编码值与基础值的差值作为所述数据流中各个编码值的排序值,其中,所述码长基础值表包含每一所述编码码长的基础值。
其查询操作执行部件11-1121,可以用于根据所述数据流中每一编码值的排序值,在预设的符号序列表中查询,得到与数据流中每一编码值对应的数字,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
本实施例中的数据压缩解压装置11-100可以通过依次串接的比较操作执行部件、加法操作执行部件以及查询操作执行部件,依次执行比较、加法以及查询、操作,替换传统的查表操作对压缩数据进行解码,由于本实施例中,使用的符号序列表、编码值范围表、码长表以及码长基础值表中的数据量小,进行的加法运算,运算速度快,因此,该数据压缩解压装置11-100可以高效的进行数据压缩。
本实施例中的使用的符号序列表、码长表以及码长基础值表的与数据压缩过程一致,其具体设置方式可以参见上述实施例,在此不再做详述。
可选地,编码值范围表可以通过下述方式进行设置:
获取符号序列表中各个数字的编码值;查找所述符号序列表中每种编码码长的最大编码值,之后使用这些最大编码值构建编码值范围表。进一步地,升序排列编码值范围表中的编码值。可选地,使用与码长表对应的符号表示升序排列的编码值范围表中的编码值。
本实施中的设置的各个数字的编码值的方法,由于通过简单的加1或者加1补尾数0的操作,实施简单,出错概率低,且规律性强,容易被转化为上述的查表结合加法的格式获取数字的编码值的数据编码实现形式,利于提高数据压缩的效率和准确性。
在其中一个实施例中,如图87所示,数据压缩解压装置11-100的各个压缩解压操作执行组件11-110中串接的压缩解压操作执行部件11-112,包括:与连接输入FIFO存储器的游程编码执行部件11-1124。进一步地,该游程编码执行部件11-1124还可以连接输出FIFO存储器。
在其中一个可选地实施例中,在进行数据压缩时,如图87所示的数据压缩解压装置11-100中的游程编码执行部件11-1124,用于根据预设的游程位宽,以及输入的数据流中的指定数字和其他数字,分割所述输入的数据流,得到数据组;对所述数据组中除起始数字之外的其他数字进行游程编码,得到所述数据组的游程,以及将所述数据组的起始数字按照预设数值位宽进行转换得到各数据组中起始数字的编码值;将所述数据组中起始数字的编码值与游程作为所述数据组的编码值,并按照所述数据组在所述输入的数据流中的次序写出所述数据组的编码值。
例如,输入的数据流为{0,0,0,0,2,0,3,0,0},设定游程位宽为2bit,指定数字为0,预设数值位宽为8bit。
数据流分割结果为: 0,0,0,0,2,0,3,0,0。编码结果为: 00000000,11, 00000010,01, 00000011,10。其中,游程11表示输入数据中连续排列的三个0;用游程01表示输入数据中的一个0;用游程10表示输入数据中连续排列的两个0。
应当清楚的是,游程编码执行部件11-1124可以每分割出一个数据组即对该数据组起始数字按照预设数值位宽进行转换,以及对该数据组的指定数字进行游程编码,当然,可选的游程编码执行部件11-1124可以对数据流分割完成得到所有的数据组后,再对该数据组起始数字按照预设数值位宽进行转换,以及对数据组的指定数字进行游程编码。其可以根据需求灵活选择,本实施例不作具体限定。
本实施例的数据压缩解压装置通过将待压缩数据中的指定数字进行游程编码,并用使用游程表示连续排列的指定数字,该方法能够对大量连续出现的数字进行数据压缩,有效节省带宽资源。
在其中一个可选地实施例中,在进行数据解压时,如图87所示的数据压缩解压装置11-100中的游程编码执行部件11-1124,还可以用于根据数据流中的游程,得到解压数组,将所述解压数组中除游程以外的数字进行转化,得到所述解压数组有效数字,将所述解压数组中的游程解码为指定数字,将所述解压数组的有效数字和指定数字作为所述解压数组的解压数字。
例如,输入的数据流为:00000000,11,00000010,01,00000011,10。其中,游程11表示输入数据中连续排列的三个0;用游程01表示输入数据中的一个0;用游程10表示输入数据中连续排列的两个0。
数据流分割结果为: 00000000,11, 00000010,01, 00000011,10。得到的解压结果为:0,0,0,0,2,0,3,0,0。
本实施例的数据压缩解压装置通过将待压缩数据中的指定数字进行游程编码,并用使用游程表示连续排列的指定数字,该方法能够对大量连续出现的数字进行数据压缩,有效节省带宽资源。
在其中一个实施中,在进行数据压缩时,如图88所示,数据压缩解压装置11-100的各个压缩解压操作执行组件11-110中串接的压缩解压操作执行部件11-112,还可以包括:设置于所述游程编码执行部件与所述输出FIFO存储器之间的替换操作执行部件11-1125。可选地,该替换操作执行部件11-1125还可以连接输出FIFO存储器。
具体地,在数据压缩解压装置11-100进行数据压缩时,该替换操作执行部件11-1125用于使用预设数字,替换起始值为所述指定数字且游程为最大值的数据组的编码值。应当清楚的是,在指定数字为确定数字,且游程位宽确定时指定数字且游程为最大值的数据组的编码值,为确定的数字加游程的组合。即替换操作执行部件11-1125实际是使用预设数字替换得到的游程编码中固定的数字加游程的组合。
例如:承接上述示例,得到的游程编码结果: 00000000,11, 00000010,01, 00000011,10,预设使用01000000(二进制数字,对应十进制的64)替换起始值为所述指定数字且游程为最大值的数据组的编码值。本示例中,替换操作执行部件11-1125实际是使用01000000替换上述游程编码结果中的 00000000,11
具体地,在数据压缩解压装置11-100进行数据解压,且得到的时,该替换操作执行部件11-1125用于根据所述编码值范围表中不小于当前编码值的最小的编码值和预设的码长表得到所述当前编码值的编码码长。应当清楚的是,在指定数字为确定数字,且游程位宽确定时指定数字且游程为最大值的数据组的编码值,为确定的数字加游程的组合。即替换操作执行部件11-1125实际是使用预设数字替换得到的游程编码中固定的数字加游程的组合。
例如:承接上述示例,在对游程编码结果使用预设数字进行替换操作之后得到的结果为: 01000000, 00000010,01, 00000011,10。在对其进行解压时,需先将预设数字 01000000替换 00000000,11。得到游程编码的压缩编码结果 00000000,11, 00000010,01, 00000011, 10。之后在使用游程编码对该结果进行解码,得到解压数据。使用游程编码对该结果进行解码的具体过程可参见上述游程解码的实施例,在此不再做详述。
本实施例的数据压缩解压装置在对指定数字进行游程编码得到压缩编码结果的基础上,进一步使用预设数字替换该压缩编码结果中固定的数字加游程的组合,由于游程编码得到压缩编码结果中存在大量的这一数字加游程的组合,每被替换一次,该压缩编码结果即可减少游程位宽个字节,因此该方案可以更加有效的节省带宽资源。
在其中一个实施例中,如图89所示,数据压缩解压装置11-100的各个压缩解压操作执行组件11-110中串接的压缩解压操作执行部件11-112,可以包括:依次串接的依次串接的游程编码执行部件11-1124、替换操作执行部件11-1125、查询操作执行部件11-1121、比较操作执行部件11-1122以及加法操作执行部件11-1123,所述加法操作执行部件连接所述输出FIFO存储器。可选地,该替换操作执行部件11-1125可以连接输入FIFO存储器11-111。可选地,该游程编码执行部件11-1124还可以连接比较操作执行部件11-1122。可选地,该查询操作执行部件11-1121还可以连接输出FIFO存储器11-130。
本实施例的数据压缩解压装置11-100可以根据接收的控制信号,控制输入的数据流进入压缩解压操作执行组件中各个压缩解压操作执行部件的顺序。例如,在进行数据压缩时,数据流流向为:游程编码执行部件11-1124→替换操作执行部件11-1125→查询操作执行部件11-1121→比较操作执行部件11-1122→加法操作执行部件11-1123。相应地,据解压时,数据流流向为:替换操作执行部件11-1125→游程编码执行部件11-1124→比较操作执行部件11-1122→加法操作执行部件11-1123→查询操作执行部件11-1121。
应当清楚的是,若该装置仅为了实现数据压缩或解压的单一操作,则在进行数据压缩时,该数据压缩解压装置11-100的各个压缩解压操作执行组件11-110中游程编码执行部件11-1124、替换操作执行部件11-1125、查询操作执行部件11-1121、比较操作执行部件11-1122以及加法操作执行部件11-1123的串接关系为:依次串接的依次串接的游程编码执行部件11-1124、替换操作执行部件11-1125、查询操作执行部件11-1121、比较操作执行部件11-1122以及加法操作执行部件11-1123。在进行数据解压时,该数据压缩解压装置11-100的各个压缩解压操作执行组件11-110中游程编码执行部件11-1124、替换操作执行部件11-1125、查询操作执行部件11-1121、比较操作执行部件11-1122以及加法操作执行部件11-1123的串接关系为:替换操作执行部件11-1125、游程编码执行部件11-1124、比较操作执行部件11-1122、加法操作执行部件11-1123以及查询操作执行部件11-1121。
进一步地,图89所示数据压缩解压装置11-100,还可以根据实际需求选择是否设置替换操作执行部件11-1125。若不设置操作执行部件11-1125,则图89中的游程编码执行部件11-1124需设置与输入FIFO存储器11-111与查询操作执行部件11-1121之间,以实现相应的数据压缩操作。进一步地,该游程编码执行部件11-1124还可以连接比较操作执行部件11-1122,以实现对应的数据解压操作。
进一步地,图89所示数据压缩解压装置11-100中的查询操作执行部件11-1121、比较操作执行部件11-1122均可以连接至输入FIFO存储器11-111。该装置中的游程编码执行部件11-1124、替换操作执行部件11-1125也均可以连接至输出FIFO存储器11-113。此时,数据压缩解压装置11-100可以根据接收的控制信号,选择接收的数据流在进行压缩或解压时执行的具体子操作。
例如,该装置需进行游程加替换并结合改进的哈夫曼编码时,数据压缩解压装置11-100按照游程编码执行部件11-1124→替换操作执行部件11-1125→查询操作执行部件11-1121→比较操作执行部件11-1122→加法操作执行部件11-1123的次序对接收的数据流 进行处理。具体地,数据压缩解压装置11-100进行游程加替换并结合改进的哈夫曼编码进行数据压缩时,各个压缩解压操作执行部件具体用于:
游程编码执行部件11-1124,用于根据预设的游程位宽,以及输入的数据流中的指定数字和其他数字,分割所述输入的数据流,得到数据组;对所述数据组中除起始数字之外的其他数字进行游程编码,得到所述数据组的游程,以及将所述数据组的起始数字按照预设数值位宽进行转换得到各数据组中起始数字的编码值;将所述数据组中起始数字的编码值与游程作为所述数据组的编码值,按照所述数据组在所述输入的数据流中的次序写出所述数据组的编码值。
替换操作执行部件11-1125,用于获取所述数据组的编码值,并使用预设数字,替换起始值为所述指定数字且游程为最大值的数据组的编码值,得到所述数据流的替换编码。
查询操作执行部件11-1121,用于获取所述数据流的替换编码,并依次获取所述数据流的替换编码中每一数字在预设的符号序列表中的排序值,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
比较操作执行部件11-1122,用于访问预设的码长边界表,根据所述数据流的替换编码中每一数字在所述符号序列表中的排序值、预设的码长表,依次确定各个所述数字的编码码长,其中,所述码长边界表包含多种编码码长,以及每一所述编码码长的数字的最大排序值,所述码长表包含预设的多种编码码长。
加法操作执行部件11-1123,用于根据预设的码长基础值表以及数据流的替换编码中每一数字的编码码长,依次得到所述数据流的替换编码中每一数字的基础值,将所述数据流的替换编码中每一数字的排序值与对应的基础值相加得到所述替换编码中每一数字初始编码值,之后将所述初始编码值按照对应的编码码长进行转换,得到替换编码中每一数字的压缩编码值,其中,所述码长基础值表包括每一所述编码码长的基础值。
相应地,该装置需进行游程加替换并结合改进的哈夫曼解码时,数据压缩解压装置11-100按照替换操作执行部件11-1125→游程编码执行部件11-1124→比较操作执行部件11-1122→加法操作执行部件11-1123→查询操作执行部件11-1121的次序对接收的数据流进行处理。具体地,数据压缩解压装置11-100进行游程加替换并结合改进的哈夫曼编码进行数据解压时,各个压缩解压操作执行部件具体用于:
替换操作执行部件11-1125,用于使用指定数字和预设游程替换所述数据流中的预设数字,所述预设游程为预设的游程位宽对应的最大数值。
游程编码执行部件11-1124,用于根据获取数据中的游程,得到解压数组,将所述解压数组中除游程以外的数字进行转化,得到所述解压数组有效数字,将所述解压数组中的游程解码为指定数字,将所述解压数组的有效数字和指定数字作为所述数据流的中间编码结果,所述中间编码结果包含多个中间编码值。
比较操作执行部件11-1122,用于获取所述中间编码结果,并访问预设的编码值范围表和预设的码长表,依次得到所述中间编码结果中每一中间编码值的码长,其中,所述编码值范围表包含多种编码码长的最大编码值,所述码长编码包含所述多种编码码长。
加法操作执行部件11-1123,用于依次获取中间编码结果中每一中间编码值的有效值作为各所述中间编码值的初始编码值,并根据所述中间编码结果中每一中间编码值的编码码长以及预设的码长基础值表得到所述中间编码结果中每一中间编码值的基础值,将所述中间编码结果中每一中间编码值的初始编码值与基础值的差值作为所述中间编码结果中各个中间编码值的排序值,其中,所述码长基础值表包含每一所述编码码长的基础值。
查询操作执行部件11-1121,用于根据所述中间编码结果中每一编码值的排序值,在预设的符号序列表中查询,得到与中间编码结果中每一编码值对应的数字,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
例如,该装置需仅进行游程编码实现数据压缩,数据压缩解压装置11-100可以控制数据流进入游程编码执行部件11-1124执行相关操作后,直接将得到的压缩编码数据发送至输出FIFO存储器。
相应地,该装置需仅进行游程编码实现数据解压,数据压缩解压装置11-100可以控制数据流进入游程编码执行部件11-1124执行相关操作后,直接将得到的解压数据发送至输出FIFO存储器。
需要说明的是,上述进行游程加替换并结合改进的哈夫曼编码进行数据压缩,以及仅进行游程编码仅为本实施的数据压缩解压装置可以实现的两种数据压缩的具体方式,该装置还可以基于用户的需求,灵活的将该装置在不同的压缩解压执行部件进行结合,实现多样的数据压缩方案,具体实现形式,可以在灵活选择压缩解压执行部件的基础上,参见上述实施例中的内容,即可得出具体的数据压缩方案,在此不再做详述。
本实施例中的数据压缩装置,可以根据不同的需求,通过控制不同的压缩解压操作执行部件执行相应的压缩子操作,实现不同的数据压缩方案。
基于同样的发明构思,如图90所示,本申请还提出了一种数据压缩方法,该数据压缩方法,被应用于上述数据压缩解压装置,该方法具体包括:
步骤S11-101,将待压缩数据分割为多个数据流。
具体地,数据分割电路11-120将待压缩数据分割为多个数据流。可选地,该数据流的大小可以为1024kb。可选地,可以根据待压缩数据的大小以及数据压缩解压装置11-100中压缩解压执行组件11-110的数量确定数据流的大小。
步骤S11-102,获取n个数据流,对所述n个数据流进行同步操作,并将同步操作后的所述n个数据流并行压缩,得到n个压缩编码结果,其中,n为正整数。
具体地,获取n个数据流,并将该n个数据流输入数据压缩解压装置11-100的n个压缩解压执行组件11-110中,在进行同步操作后,并行执行压缩操作,得到n个压缩编码结果。更具体地,获取n个数据流,并将该n个数据流输入每一压缩解压执行组件11-110的输入FIFO存储器11-111,该输入FIFO存储器11-111对接收的数据流进行同步操作后,将同步操作后的所述n个数据流发送至其连接的压缩解压操作执行部件,各个压缩解压操作执行部件依次执行相应的压缩子操作后,得到的n个压缩编码结果。
步骤S11-103,对所述n个压缩编码进行同步操作,并将同步操作后的所述n个压缩 编码结果,按照各个数据流在待压缩数据中的顺序和/或位置写出接收压缩编码结果。
具体地,得到n个压缩编码值的压缩解压操作执行部件,将其得到的压缩编码结果传输至其连接的输出FIFO存储器,各个输出FIFO存储器对接收的压缩编码结果进行同步操作后,按照各个数据流在待压缩数据中的顺序和/或位置写出接收压缩编码结果。
重复执行步骤S11-101--S11-103,直至单次输出压缩编码结果的数量小于n。之后执行步骤S11-104,终止获取数据流。
具体地,若某次数据压缩解压装置11-100的n个压缩解压执行组件11-110输出的压缩编码结果的数量小于n,终止获取数据流。
相应地,本申请还提出了一种数据解压方法,该数据解压方法,也被应用于上述数据压缩解压装置,该方法具体包括:
S11-201,将压缩数据分割为多个数据流。
具体地,数据分割电路11-120将压缩数据分割为多个数据流。可选地,该数据流的大小可以为1024kb。可选地,可以根据压缩数据的大小以及数据压缩解压装置11-100中压缩解压执行组件11-110的数量确定数据流的大小。
S11-202,获取n个数据流,对所述n个数据流进行同步操作,并将同步操作后的所述n个数据流并行解压,得到n个解压子结果,其中,n为正整数。
具体地,获取n个数据流,并将该n个数据流输入数据压缩解压装置11-100的n个压缩解压执行组件11-110中,在进行同步操作后,并行执行压缩操作,得到n个解压子结果。更具体地,获取n个数据流,并将该n个数据流输入每一压缩解压执行组件11-110的输入FIFO存储器11-111,该输入FIFO存储器11-111对接收的数据流进行同步操作后,将同步操作后的所述n个数据流发送至其连接的压缩解压操作执行部件,各个压缩解压操作执行部件依次执行相应的解压子操作后,得到的n个解压子结果。
S11-203,对所述n个解压数字进行同步操作,并将同步操作后的所述n个解压子结果,按照各个数据流在待压缩数据中的顺序和/或位置写出解压子结果。
具体地,得到n个解压子结果的压缩解压操作执行部件,将其得到的解压子结果传输至其连接的输出FIFO存储器,各个输出FIFO存储器对接收的解压子结果进行同步操作后,按照各个数据流在压缩数据中的顺序和/或位置写出接收解压子结果。
重复执行所述获取n个数据流至写出所述n个解压子结果的步骤,直至单次解压子结果的数量小于n,之后执行S11-204,终止获取数据流。
具体地,若某次数据压缩解压装置11-100的n个压缩解压执行组件11-110输出的解压子结果的数量小于n,终止获取数据流。
本实施例的数据压缩方法,可以并行压缩或解压n个输入的数据流,且在输入和输出端均设置FIFO存储器,对输入的数据流以及输出的压缩编码值或者解压结果均进行同步操作,保证了并行对待压缩数据的多个数据流进行压缩,或者对压缩数据进行解压时,输出的结果准确。
作为其中一个实施例,在进行数据压缩时,在步骤S102之前,还包括:
步骤S11-105,获取的n个所述原始数据流,并在接收数据混洗信号后,对所述n个所述原始数据流中后段数据进行混洗,得到n个数据流,其中,所述后段数据为接收数据混洗信号之后还未获取到的各个所述原始数据流中的数据。
需要说明的是,本实施例中将数据分割电路分割待压缩数据得到的数据流称之为原始数据流,从输入FIFO存储器中输出的数据流称之为数据流。具体地,数据压缩解压装置11-100的数据混洗操作执行部件11-140在接收数据混洗信号后,对所述n个所述原始数据流中后段数据进行混洗,得到n个数据流。
同理,在进行数据解压时,在步骤S11-202之前,也可以包括该步骤S11-105。此时将数据分割电路分割压缩数据得到的数据流称之为原始数据流。
进一步地,步骤S11-105可以包括:按照预设规则,对所述n个所述原始数据流中后段数据进行混洗,得到n个数据流,其中,所述预设规则包括:相邻m个数据流进行混洗,或者,跳过k个数据流进行混洗,所述m为正整数,m小于等于n,所述k为正整数,m小于n。
具体地,数据混洗操作执行部件11-140按照预设规则,对所述n个所述原始数据流中后段数据进行混洗,得到n个数据流。
本实施例可以通过对数据流混洗,克服各个压缩解压操作执行组件的原始数据流中的数据在压缩效率差异较大时,造成的各个压缩解压操作执行组件执行时间差异大,降低数据压缩效率的问题。
在其中一个实施例中,上述数据压缩方法或者数据解压方法还可以包括:若获取的所述原始数据流和/或所述数据流的数量小于n,则输出结束信号。该结束信号用于终止获取数据流。
具体地,在数据压缩解压装置11-100进行数据压缩或解压时,若n个压缩解压操作执行组件中,存在未输入数据流的压缩解压操作执行组件,则该未输入数据流的压缩解压操作执行组件的输入FIFO存储器上的结束信号发射器发射结束信号至其连接的压缩解压操作执行部件,接收到结束信号的压缩解压操作执行部件通过其安装的结束信号发射器将结束信号向后传递,直至将该结束信号传送至输出FIFO存储器,该未输入数据流的压缩解压操作执行组件的输出FIFO存储器通过其安装的结束信号发射器输出结束信号,此时,数据压缩解压装置11-100会终止当前执行的压缩或解压过程。
在其中一个实施例中,步骤S11-102可以包括:
S11-1021a,依次获取所述数据流中数字在预设的符号序列表中的排序值,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
具体地,查询操作执行部件11-1121依次获取所述数据流中每一数字在预设的符号序列表中的排序值,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
S11-1022a,访问预设的码长边界表,根据所述数据流中每一数字在所述符号序列表中的排序值、预设的码长表,依次确定所述数据流中每一数字的编码码长,其中,所述码长 边界表包含多种编码码长,以及每一所述编码码长的数字的最大排序值,所述码长表包含预设的多种编码码长。
具体地,比较操作执行部件11-1122,用于访问预设的码长边界表,根据所述数据流中每一数字在所述符号序列表中的排序值、预设的码长表,依次确定所述数据流中每一数字的编码码长,其中,所述码长边界表包含多种编码码长,以及每一所述编码码长的数字的最大排序值,所述码长表包含预设的多种编码码长。
进一步地,比较操作执行部件11-1122首先查找码长边界表中排序值不小于当前数字的最小的排序值;之后根据所述码长边界表中排序值不小于当前数字的最小的排序值和所述码长表确定当前符号的编码码长。
S11-1023a,根据预设的码长基础值表以及数据流中各个数字的编码码长,依次得到所述数据流中各个数字的基础值,其中,所述码长基础值表包括每一所述编码码长的基础值。将所述数据流中每一数字的排序值与对应的基础值相加得到所述每一数字的初始编码值,之后将各个初始编码值按照对应的编码码长进行转换,得到所述数据流中各个数字的压缩编码值。
具体地,加法操作执行部件11-1123根据预设的码长基础值表以及数据流中每一数字的编码码长,依次得到所述数据流中每一数字的基础值,将所述数据流中每一数字的排序值与对应的基础值相加得到所述每一数字的初始编码值,之后将各个初始编码值按照对应的编码码长进行转换,得到所述数据流中各个数字的压缩编码值,其中,所述码长基础值表包括每一所述编码码长的基础值。
相应地,在其中一个实施例中,通过上述数据压缩方法得到的压缩数据进行解压时,步骤S11-202可以包括:
S11-2021a,访问预设的编码值范围表和预设的码长表,依次得到输入的数据流中各编码值的码长,其中,所述编码值范围表包含多种编码码长的最大编码值,所述码长编码包含所述多种编码码长。
具体地,比较操作执行部件11-1122访问预设的编码值范围表和预设的码长表,依次得到输入的数据流中各编码值的码长,其中,所述编码值范围表包含多种编码码长的最大编码值,所述码长编码包含所述多种编码码长。
进一步地,根据所述编码值范围表中不小于当前编码值的最小的编码值和预设的码长表得到所述当前编码值的编码码长。
具体地,比较操作执行部件11-1122根据所述编码值范围表中不小于当前编码值的最小的编码值和预设的码长表得到所述当前编码值的编码码长。
S11-2022a,依次获取数据流中每一编码值的有效值作为各所述编码值的初始编码值,并根据所述数据流中每一编码值的编码码长以及预设的码长基础值表得到所述数据流中每一编码值的基础值,将所述数据流中每一编码值的初始编码值与基础值的差值作为所述数据流中各个编码值的排序值,其中,所述码长基础值表包含每一所述编码码长的基础值。
具体地,加法操作执行部件11-1123依次获取数据流中每一编码值的有效值作为各所 述编码值的初始编码值,并根据所述数据流中每一编码值的编码码长以及预设的码长基础值表得到所述数据流中每一编码值的基础值,将所述数据流中每一编码值的初始编码值与基础值的差值作为所述数据流中各个编码值的排序值,其中,所述码长基础值表包含每一所述编码码长的基础值。
S11-2023a,根据所述数据流中每一编码值的排序值,在预设的符号序列表中查询,得到与数据流中每一编码值对应的数字,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
具体地,查询操作执行部件11-1121根据所述数据流中每一编码值的排序值,在预设的符号序列表中查询,得到与数据流中每一编码值对应的数字,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
本实施例中数据压缩方法或解压方法,使用的符号序列表、码长边界表/编码值范围表、码长表以及码长基础值表中的数据量小,因此,使用这些数据量小的表进行数据压缩或解压数据处理效率高。
在另一个实施例中,步骤S11-102也可以包括:
S11-1021b,根据预设的游程位宽,以及输入的数据流中的指定数字和其他数字,分割所述输入的数据流,得到数据组。
S11-1022b,对所述数据组中除起始数字之外的其他数字进行游程编码,得到所述数据组的游程。
S11-1023b,将所述数据组的起始数字按照预设数值位宽进行转换得到各数据组中起始数字的编码值。
S11-1024b,将所述数据组中起始数字的编码值与游程作为所述数据组的编码值,并按照所述数据组在所述输入的数据流中的次序写出所述数据组的编码值。
具体地,游程编码执行部件11-1124根据预设的游程位宽,以及输入的数据流中的指定数字和其他数字,分割所述输入的数据流,得到数据组;对所述数据组中除起始数字之外的其他数字进行游程编码,得到所述数据组的游程,以及将所述数据组的起始数字按照预设数值位宽进行转换得到各数据组中起始数字的编码值;将所述数据组中起始数字的编码值与游程作为所述数据组的编码值,并按照所述数据组在所述输入的数据流中的次序写出所述数据组的编码值。
相应地,在其中一个实施例中,上述数据压缩方法得到的压缩数据进行解压时,步骤S11-202可以包括:
S11-2021b,根据获取数据流中的游程,得到解压数组。
S11-2022b,将所述解压数组中除游程以外的数字进行转化,得到所述解压数组有效数字,将所述解压数组中的游程解码为指定数字;将所述解压数组的有效数字和指定数字作为所述解压数组的解压数字。
S11-2023b,按照所述解压数组在所述数据流中的次序依次写出所述解压数组的解压数字。
具体地,游程编码执行部件11-1124根据数据流中的游程,得到解压数组,将所述解压数组中除游程以外的数字进行转化,得到所述解压数组有效数字,将所述解压数组中的游程解码为指定数字,将所述解压数组的有效数字和指定数字作为所述解压数组的解压数字。
本实施例的数据压缩方法,对指定数字进行游程编码,并用使用游程表示连续排列的指定数字,该方法能够对大量连续出现的数字进行数据压缩,有效节省带宽资源。
在另一个实施例中,步骤S11-1024b之后,所述方法还包括:
S11-1025b,使用预设数值,替换起始值为所述指定数字且游程为最大值的数据组的编码值。
具体地,替换操作执行部件11-1125使用预设数字,替换起始值为所述指定数字且游程为最大值的数据组的编码值。应当清楚的是,在指定数字为确定数字,且游程位宽确定时指定数字且游程为最大值的数据组的编码值,为确定的数字加游程的组合。即替换操作执行部件11-1125实际是使用预设数字替换得到的游程编码中固定的数字加游程的组合。
例如:得到的游程编码结果: 00000000,11, 00000010,01, 00000011,10,预设使用01000000(二进制数字,对应十进制的64)替换起始值为所述指定数字且游程为最大值的数据组的编码值。本示例中,替换操作执行部件11-1125实际是使用01000000替换上述游程编码结果中的 00000000,11
相应地,在其中一个实施例中,上述数据压缩方法得到的压缩数据进行解压时,在步骤S11-2021b之前可以包括:
S11-2024b,使用指定数字和预设游程替换所述数据流中的预设数字,所述预设游程为预设的游程位宽对应的最大数值。
具体地,替换操作执行部件11-1125根据所述编码值范围表中不小于当前编码值的最小的编码值和预设的码长表得到所述当前编码值的编码码长。应当清楚的是,在指定数字为确定数字,且游程位宽确定时指定数字且游程为最大值的数据组的编码值,为确定的数字加游程的组合。即替换操作执行部件11-1125实际是使用预设数字替换得到的游程编码中固定的数字加游程的组合。
例如:承接上述示例,在对游程编码结果使用预设数字进行替换操作之后得到的结果为: 01000000, 00000010,01, 00000011,10。在对其进行解压时,需先将预设数字 01000000替换 00000000,11。得到游程编码的压缩编码结果 00000000,11, 00000010,01, 00000011, 10。之后在使用游程编码对该结果进行解码,得到解压数据。使用游程编码对该结果进行解码的具体过程可参见上述游程解码的实施例,在此不再做详述。
本实施例的数据压缩方法,对指定数字进行游程编码得到压缩编码结果的基础上,进一步使用预设数字替换该压缩编码结果中固定的数字加游程的组合,由于游程编码得到压缩编码结果中存在大量的这一数字加游程的组合,每被替换一次,该压缩编码结果即可减少游程位宽个字节,因此该方案可以更加有效的节省带宽资源。
在一个实施例中,步骤S11-102也可以包括:
S11-1021c,根据预设的游程位宽,以及输入的数据流中的指定数字和其他数字,分割所述输入的数据流,得到数据组;对所述数据组中除起始数字之外的其他数字进行游程编码,得到所述数据组的游程,以及将所述数据组的起始数字按照预设数值位宽进行二进制转换得到各数据组中起始数字的编码值;将所述数据组中起始数字的编码值与游程作为所述数据组的编码值,按照所述数据组在所述输入的数据流中的次序写出所述数据组的编码值。
具体地,游程编码执行部件11-1124根据预设的游程位宽,以及输入的数据流中的指定数字和其他数字,分割所述输入的数据流,得到数据组;对所述数据组中除起始数字之外的其他数字进行游程编码,得到所述数据组的游程,以及将所述数据组的起始数字按照预设数值位宽进行转换得到各数据组中起始数字的编码值;将所述数据组中起始数字的编码值与游程作为所述数据组的编码值,按照所述数据组在所述输入的数据流中的次序写出所述数据组的编码值。
S11-1022c,获取所述数据组的编码值,并使用预设数值,替换起始值为所述指定数字且游程为最大值的数据组的编码值,得到所述数据流的替换编码。
具体地,替换操作执行部件11-1125获取所述数据组的编码值,并使用预设数字,替换起始值为所述指定数字且游程为最大值的数据组的编码值,得到所述数据流的替换编码。
S11-1023c,获取所述数据流的替换编码,并依次获取所述数据流的替换编码中每一数字在预设的符号序列表中的排序值,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
具体地,查询操作执行部件11-1121获取所述数据流的替换编码,并依次获取所述数据流的替换编码中每一数字在预设的符号序列表中的排序值,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
S11-1024c,访问预设的码长边界表,根据所述数据流的替换编码中每一数字在所述符号序列表中的排序值、预设的码长表,依次确定各个所述数字的编码码长,其中,所述码长边界表包含多种编码码长,以及每一所述编码码长的数字的最大排序值,所述码长表包含预设的多种编码码长。
具体地,比较操作执行部件11-1122访问预设的码长边界表,根据所述数据流的替换编码中每一数字在所述符号序列表中的排序值、预设的码长表,依次确定各个所述数字的编码码长,其中,所述码长边界表包含多种编码码长,以及每一所述编码码长的数字的最大排序值,所述码长表包含预设的多种编码码长。
S11-1025c,根据预设的码长基础值表以及数据流的替换编码中每一数字的编码码长,依次得到所述数据流的替换编码中每一数字的基础值,将所述数据流的替换编码中每一数字的排序值与对应的基础值相加得到所述替换编码中每一数字初始编码值,之后将所述初始编码值按照对应的编码码长进行转换,得到替换编码中每一数字的压缩编码值,其中,所述码长基础值表包括每一所述编码码长的基础值。
具体地,加法操作执行部件11-1123根据预设的码长基础值表以及数据流的替换编码中每一数字的编码码长,依次得到所述数据流的替换编码中每一数字的基础值,将所述数据流的替换编码中每一数字的排序值与对应的基础值相加得到所述替换编码中每一数字初始编码值,之后将所述初始编码值按照对应的编码码长进行转换,得到替换编码中每一数字的压缩编码值,其中,所述码长基础值表包括每一所述编码码长的基础值。
相应地,在其中一个实施例中,上述数据压缩方法得到的压缩数据进行解压时,步骤S11-202可以包括:
S11-2021c,使用指定数字和预设游程替换所述数据流中的预设数字,所述预设游程为预设的游程位宽对应的最大数值。
具体地,替换操作执行部件11-1125使用指定数字和预设游程替换所述数据流中的预设数字,所述预设游程为预设的游程位宽对应的最大数值。
S11-2022c,根据获取数据中的游程,得到解压数组,将所述解压数组中除游程以外的数字进行转化,得到所述解压数组有效数字,将所述解压数组中的游程解码为指定数字,将所述解压数组的有效数字和指定数字作为所述数据流的中间编码结果,所述中间编码结果包含多个中间编码值。
具体地,游程编码执行部件11-1124根据获取数据中的游程,得到解压数组,将所述解压数组中除游程以外的数字进行转化,得到所述解压数组有效数字,将所述解压数组中的游程解码为指定数字,将所述解压数组的有效数字和指定数字作为所述数据流的中间编码结果,所述中间编码结果包含多个中间编码值。
S11-2023c,访问预设的编码值范围表和预设的码长表,依次得到所述中间编码结果中每一中间编码值的码长,其中,所述编码值范围表包含多种编码码长的最大编码值,所述码长编码包含所述多种编码码长。
具体地,比较操作执行部件11-1122获取所述中间编码结果,并访问预设的编码值范围表和预设的码长表,依次得到所述中间编码结果中每一中间编码值的码长,其中,所述编码值范围表包含多种编码码长的最大编码值,所述码长编码包含所述多种编码码长。
S11-2024c,依次获取中间编码结果中每一中间编码值的有效值作为各所述中间编码值的初始编码值,并根据所述中间编码结果中每一中间编码值的编码码长以及预设的码长基础值表得到所述中间编码结果中每一中间编码值的基础值,将所述中间编码结果中每一中间编码值的初始编码值与基础值的差值作为所述中间编码结果中各个中间编码值的排序值,其中,所述码长基础值表包含每一所述编码码长的基础值。
具体地,加法操作执行部件11-1123依次获取中间编码结果中每一中间编码值的有效值作为各所述中间编码值的初始编码值,并根据所述中间编码结果中每一中间编码值的编码码长以及预设的码长基础值表得到所述中间编码结果中每一中间编码值的基础值,将所述中间编码结果中每一中间编码值的初始编码值与基础值的差值作为所述中间编码结果中各个中间编码值的排序值,其中,所述码长基础值表包含每一所述编码码长的基础值。
S11-2025c,根据所述中间编码结果中每一编码值的排序值,在预设的符号序列表中查 询,得到与中间编码结果中每一编码值对应的数字,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
具体地,查询操作执行部件11-1121根据所述中间编码结果中每一编码值的排序值,在预设的符号序列表中查询,得到与中间编码结果中每一编码值对应的数字,其中,所述符号序列表包含多个数字,以及基于所述多个数字的出现概率得到的各个数字的排序值。
本实施例的数据压缩方法,结合使用了游程编码结合数字替换以及改进的哈夫曼编码,该方法可以结合上述几种编码及操作的优点,数据压缩效率高。
12、传送指令译码方法、数据移动方法、译码器及数据存取装置
本申请其中一个实施例提供了一种传送指令译码方法,可以应用于译码器12-1000中,所述译码器12-1000包括第一配置单元12-101和第二配置单元12-102。其中,第一配置单元12-101与第二配置单元12-102连接。该传送指令可以实现压缩数据的存取移动,该压缩数据可以为特定格式的数据,该压缩数据可以包括多个数据头和多个数据体,该数据头中存储对应的数据体的起始地址和数据长度,该数据体包含压缩数据的压缩编码值。该传送指令可以通过对数据头进行存取移动,进而实现对数据体的存取移动。
具体地,第一配置单元12-101,用于对传送指令的第一操作进行配置,得到第一操作的第一操作数。第二配置单元12-102,用于对传送指令的第二操作进行配置,得到第二操作的第二操作数。
可选地,第一配置单元12-101通过配置得到第一操作的第一操作数,第一操作表示为根据第一操作数,读取压缩数据中的目标数据头和目标数据体。其中,压缩数据包括多个数据头和多个数据体,数据头中存储对应的数据体的起始地址和数据长度,数据体包含压缩数据的压缩编码值。
第二配置单元12-102通过配置得到第二操作的第二操作数,第二操作表示为根据第二操作数,写出获取的压缩数据,即将获取到的目标数据头和目标数据体写出。
其中,第一操作数可以表示为读取压缩数据中目标数据头的时候,目标数据头的原始地址,可选地,第一操作数可以为立即数或寄存器号。第二操作数可以表示为写回压缩数据中目标数据头的时候,目标数据头的目标地址,可选地,第二操作数可以为立即数或寄存器号。
可选地,请一并参阅图91,处理器12-2000中的控制器单元12-11可以作为该译码器12-1000,其中,控制器单元12-11与处理器12-12连接,该处理器12-12包括:一个主处理电路和多个从处理电路;
控制器单元12-11,用于获取输入数据以及计算指令;在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令。
控制器单元12-11,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
主处理电路12-121,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路12-122,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路12-121,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
可选地,该控制器单元12-11可以包括:指令缓存单元12-110、指令处理单元12-111和存储队列单元12-113。
其中,指令缓存单元12-110,用于存储人工神经网络运算关联的计算指令。
指令处理单元12-111,用于对计算指令解析得到多个运算指令。
存储队列单元12-113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
可选地,第一配置单元12-101与第二配置单元12-102可以设置在指令处理单元12-111中,指令处理单元12-111从指令缓存单元12-110中获取指令,并对获取的指令进行解析,以及通过第一配置单元12-101与第二配置单元12-102对第一操作以及第二操作进行配置。
可选的,该控制器单元12-11还可以包括:
所述依赖关系处理单元12-112,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该指令可以是传送指令,该指令的指令格式可以如下表所示:
Figure PCTCN2019121056-appb-000001
其中,指令类别Name用于确定指令的类别(指令的类别可以包括COMP类指令和其他指令,其中,COMP类为16),即指令类别用于确定运算指令是否为COMP类指令。指令类型Type用于确定COMP类指令的类型,COMP类指令的类型用于表明该指令实现 何种功能,例如,当指令类型Type为3时,表示该指令为传送指令。数据头目的地址Head dst addr以及数据头目的地址偏移Head dst offset用于表示要写回的目标数据头的目标地址。数据头源地址Head src addr、数据头源地址偏移Head src offset、数据头的行数Seg num、数据头源换行距离Head src stride和单行数据头数量Head num,这些指令域用于表示要读取的目标数据头的原始地址。
进一步地,该指令的指令格式还可以包括各指令域的标志位,例如:用于标识数据头目的地址Head dst addr是立即数还是寄存器号的标志位Head dst addr reg en,具体地,Head dst addr reg en为1时,表示数据头目的地址Head dst addr是寄存器号,即表示数据头目的地址Head dst addr来自寄存器,Head dst addr reg en为0时,表示数据头目的地址Head dst addr是立即数。
还有用于标识数据头目的地址偏移Head dst offset是立即数还是寄存器号的标志位Head dst offset reg en,具体地,Head dst offset reg en为1时,表示数据头目的地址偏移Head dst offset是寄存器号,即表示数据头目的地址偏移Head dst offset来自寄存器,Head dst offset reg en为0时,表示数据头目的地址偏移Head dst offset是立即数。
还有用于标识数据头源地址Head src addr是立即数还是寄存器号的标志位Head src addr reg en,具体地,Head src addr reg en为1时,表示数据头源地址Head src addr是寄存器号,即表示数据头源地址Head src addr来自寄存器,Head src addr reg en为0时,表示数据头源地址Head src addr是立即数。
同样地,还有用于标识数据头源换行距离Head src stride是立即数还是寄存器号的标志位Head src stride reg en,标识数据头源地址偏移Head src offset是立即数还是寄存器号的标志位Head src offset reg en,标识数据头行数Seg num是立即数还是寄存器号的标志位Seg num reg en,标识单行数据头数量Head num是立即数还是寄存器号的标志位Head num reg en。具体地,当这些标志位为1时,表示各指令域为寄存器号,来自寄存器,当这些标志位为0时,表示各指令域为立即数。
本申请还提出了一种传送指令应用的装置,即数据存取装置12-3000,可以包括配置单元12-100,数据读写单元12-200以及直接内存访问单元12-300。其中,配置单元12-100连接数据读写单元12-200,配置单元12-100通过数据读写单元12-200与直接内存访问单元12-300连接。
可选地,第一配置单元12-101以及第二配置单元12-102可以封装为一个配置单元12-100。
配置单元12-100通过配置第一操作得到第一操作数以及配置第二操作得到第二操作数,并将第一操作数和第二操作数发送给数据读写单元12-200。数据读写单元12-200接收到配置单元12-100发送的第一操作数和第二操作数后,将第一操作数和第二操作数发送给直接内存访问单元12-300。直接内存访问单元12-300根据第一操作数以及第二操作数,完成压缩数据中的目标数据头和目标数据体的读取操作以及获取的压缩数据的写出操作。即根据第一操作数,从第一操作数指向的存储装置中读取压缩数据中的目标数据头和目标数 据体。以及根据第二操作数,将读取的压缩数据中的目标数据头和目标数据体写入第二操作数指向的存储装置。
可选地,存储装置可以包括第一存储装置12-13,也可以包括第二存储装置12-201。该第一存储装置12-13可以是设置在处理器外部的存储装置。该第二存储装置12-201可以是设置在处理器12-1000内部的缓存器和/或寄存器。该第一存储装置12-13及第二存储装置12-201也可以是非易失性存储器或易失性存储器,此处不做具体限定。该数据读写单元12-200可以是I/O电路。
在一个实施例中,提供了一种传送指令译码方法,以该方法应用于上述译码器为例进行说明,包括以下步骤:
S12-200,获取传送指令中数据头的源数据和预设参数,并根据数据头的源数据和预设参数对传送指令的第一操作进行配置,得到第一操作的第一操作数。
其中,数据头的源数据表示目标数据头的原始地址,预设参数包括要获取的目标数据头的数量。第一操作用于读取压缩数据中的目标数据头和目标数据体。压缩数据中包括多个数据头和多个数据体,数据头与数据体存在有一定的对应关系,数据头中存储对应的数据体的起始地址和数据长度,数据体包含压缩数据的压缩编码值。第一操作数可以为立即数或寄存器号。
具体地,第一配置单元12-101获取传送指令中数据头的源数据和预设参数,并根据获取的数据头的源数据和预设参数对传送指令的第一操作进行配置,得到第一操作的第一操作数,即获取到目标数据头的原始地址。
S12-300,获取传送指令中数据头的目的数据,并根据数据头的目的数据以及目标数据头和目标数据体对传送指令的第二操作进行配置,得到第二操作的第二操作数。
其中,数据头的目的数据表示目标数据头的目标地址,即将获取的目标数据头写回到目标地址对应的位置。第二操作用于写出获取的压缩数据。第二操作数包括立即数或寄存器号。
具体地,第二配置单元12-102获取传送指令中数据头的目的数据,并根据数据头的目的数据以及目标数据头和目标数据体对传送指令的第二操作进行配置,得到第二操作的第二操作数,即获取到目标数据头的目标地址。
上述传送指令译码方法中,通过对第一操作进行配置,得到第一操作的第一操作数,第一操作表示用于根据第一操作数进行压缩数据的读取操作,以及通过对第二操作进行配置,得到第二操作数的第二操作数,第二操作表示用于根据第二操作数进行压缩数据的写回操作。通过对传送指令进行解析,得到相应的操作,实现对传送指令的解析,同时该指令支持移动压缩数据的操作。
在其中一个实施例中,所述方法还可以包括以下步骤:
S12-100,对获取的指令进行解析,并根据指令中的指令类别和指令类型确定指令为传送指令。
其中,如上表所示,指令类别Name用于确定指令的类别(指令的类别可以包括COMP 类指令和其他指令,其中,COMP类为16),即指令类别用于确定运算指令是否为COMP类指令。指令类型Type用于确定COMP类指令的类型,COMP类指令的类型用于表明该指令实现何种功能,例如,当指令类型Type为3时,表示该指令为传送指令。
具体地,指令处理单元12-111对获取的指令进行解析,根据指令类别Name以及指令类型Type进行区分,当指令类型Type为3时,表示该指令为传送指令。
可选地,指令处理单元12-111可以通过指令缓存单元12-110获取指令,然后指令处理单元12-111中的第一配置单元12-101与第二配置单元12-102进行配置。
在其中一个实施例中,第一操作数可以包括立即数或寄存器号,判断第一操作数是否为立即数,当判断第一操作数为立即数时,执行步骤S400,此时第一操作用于根据第一操作数,从第一存储装置中读取压缩数据中的目标数据头,然后根据目标数据头中的起始地址和数据长度,获取与目标数据头对应的目标数据体。
其中,第一存储装置12-13可以是片外存储装置。
具体地,当第一操作数为立即数时,第一操作用于从第一操作数指向的第一存储装置12-13中相对应的位置,读取压缩数据中的目标数据头,然后根据得到的目标数据头中的起始地址以及数据长度,去获取与目标数据头相对应的目标数据体。
当判断第一操作数为寄存器号时,执行步骤S12-500,第一操作用于根据第一操作数,从第二存储装置中读取压缩数据中的目标数据头,然后根据目标数据头中的起始地址和数据长度,获取与目标数据头对应的目标数据体。
其中,第二存储装置12-201可以是片内存储装置。
具体地,当第一操作数为寄存器号时,第一操作用于从第一操作数指向的第二存储装置12-201中相对应的位置,读取压缩数据中的目标数据头,然后根据得到的目标数据头中的起始地址以及数据长度,去获取与目标数据头相对应的目标数据体。
本实施例的方法通过对片外和片内地址进行读取压缩数据,适应不同应用场景下对指令的需求,增强了指令应用的完备性。
在其中一个实施例中,对第一操作进行配置的过程可以包括以下步骤:
S12-210,根据传送指令中数据头的源地址和源地址偏移,得到第一操作数中目标数据头的原始地址。
具体地,第一配置单元12-101获取到传送指令中数据头的源地址和源地址偏移,然后根据数据头的源地址和源地址偏移,得到第一操作数中目标数据头的原始地址。通过获取到数据头的源地址以及源地址偏移,得到目标数据头的原始地址,该原始地址用于存储目标数据头。
S12-220,根据原始地址和预设参数对传送指令的第一操作进行配置,得到第一操作的第一操作数。
其中,预设参数包括要读取的目标数据头的数量。
具体地,第一配置单元12-101得到目标数据头的原始地址后,然后根据原始地址以及预设参数,对传送指令的第一操作进行配置,得到第一操作的第一操作数。该原始地址用 于存储目标数据头,该预设参数包括目标数据头的数量,则根据目标数据头的存储地址以及数量进行配置,得到第一操作数,可根据第一操作数进行目标数据头的读取。
S12-230,根据传送指令中数据头的行数、源换行距离、单行数据头数量以及预设参数对传送指令的第一操作进行配置,得到第一操作的第一操作数。
其中,预设参数包括目标数据头的行数和单行目标数据头数量。
具体地,第一配置单元12-101获取到传送指令中数据头的行数、源换行距离、单行数据头数量后,然后根据数据头的行数、源换行距离、单行数据头数量以及预设参数进行配置,得到第一操作数。该第一操作数用于确定要读取的目标数据头的原始地址,行数以及单行数量。
S12-240,根据第一操作数中的目标数据头中的原始地址和数量,得到第一操作数中的目标数据体的原始地址和数量。
具体地,第一操作数中包括目标数据头的原始地址以及目标数据头的数量,以及数据头与数据体存在一定的对应关系,数据头中存储对应的所述数据体的起始地址和数据长度,第一配置单元12-101根据目标数据头的原始地址以及数量,得到目标数据体的原始地址和数量。
S12-250,使用目标数据体的原始地址和数量对传送指令的第一操作进行配置。
具体地,第一配置单元12-101获取到目标数据体的原始地址和数量,然后根据目标数据体的原始地址和数量,对传送指令的第一操作进行配置,第一操作用于依据目标数据体的原始地址和数量,进行目标数据体的读取。
本实施例中通过对第一操作中的数据头的数量和行数进行配置,使得读取的目标数据头的位置更加准确。
在其中一个实施例中,对第二操作进行配置的过程可以包括以下步骤:
S12-310,根据传送指令中的数据头的目的地址和目的地址偏移,得到第二操作数中的目标数据头的目的地址和目的地址偏移。
具体地,第二配置单元12-102获取到传送指令中的数据头的目的地址和目的地址偏移,然后根据数据头的目的地址和目的地址偏移,得到目标数据头的目的地址和目的地址偏移。目标数据头的目的地址和目的地址偏移用于表示目标数据头要写回的目标地址,即目标数据头的目的地址和目的地址偏移用于存储写回的目标数据头。
S12-320,根据目标数据头的目的地址和目的地址偏移对传送指令的第二操作进行配置,得到第二操作的第二操作数。
具体地,第二配置单元12-102得到目标数据头的目的地址和目的地址偏移后,根据目标数据头的目的地址和目的地址偏移对传送指令的第二操作进行配置,得到第二操作的第二操作数,该第二操作数用于表示目标数据头的目的地址和目的地址偏移,即该第二操作数用于表示目标数据头要写回的目标地址,即目标数据头的目的地址和目的地址偏移用于存储写回的目标数据头。
本实施的方法通过对目标数据头的目的地址以及目的地址偏移进行配置,使得写回的 目标数据头的地址更加准确。
本申请还提出了一种数据移动方法,以该方法应用于上述存取装置为例,可以包括以下步骤:
S12-600,获取传送指令,并对传送指令进行解析,得到传送指令的第一操作数和第二操作数。
其中,第一操作数可以包括立即数或寄存器号,第二操作数可以包括立即数或寄存器号
具体地,配置单元12-100获取到传送指令,并对传送指令进行解析,获得到传送指令的第一操作数以及第二操作数。
S12-700,从第一操作数指向的存储装置中读取压缩数据中的目标数据头和目标数据体。
其中,该存储装置可以为第一存储装置12-13或者第二存储装置12-201。压缩数据包括多个数据头和多个数据体,数据头中存储对应的数据体的起始地址和数据长度,数据体包含压缩数据的压缩编码值。
具体地,配置单元12-100得到第一操作数以及第二操作数后,将第一操作数和第二操作数发送到数据读写单元12-200,数据读写单元12-200接收到第一操作数后,发送到直接内存访问单元12-300,然后直接内存访问单元12-300根据第一操作数,从第一操作数指向的存储装置中读取压缩数据中的目标数据头和目标数据体。
S12-800,将读取的压缩数据中的目标数据头和目标数据体写入第二操作数指向的存储装置。
其中,该存储装置可以为第一存储装置12-13或者第二存储装置12-201。
具体地,配置单元12-100得到第一操作数以及第二操作数后,将第一操作数和第二操作数发送到数据读写单元12-200,数据读写单元12-200接收到第一操作数后,发送到直接内存访问单元12-300,然后直接内存访问单元12-300根据第二操作数,将读取的压缩数据中的目标数据头和目标数据体写入第二操作数指向的存储装置。
上述方法通过根据解析得到的第一操作数和第二操作数,将压缩数据进行存取移动,支持压缩格式的数据进行移动操作,提高了指令的功能,完善了设备的功能性。
在其中一个实施例中,上述步骤S12-700可以包括以下步骤:
判断第一操作数是否为立即数,当判断第一操作数为立即数时,执行步骤S12-710,根据第一操作数,从第一存储装置中读取压缩数据中的目标数据头,然后根据目标数据头中的起始地址和数据长度,获取与目标数据头对应的目标数据体。
其中,第一存储装置12-13为片外存储装置。
具体地,当第一操作数为立即数时,直接内存访问单元12-300根据第一操作数,在第一存储装置12-13中,根据第一操作数指向的位置读取压缩数据中的目标数据头,然后根据数据头与数据体的对应关系,以及读取的目标数据头中的起始地址和数据长度,获取与目标数据头对应的目标数据体。
当判断第一操作数为寄存器号时,执行步骤S12-720,根据第一操作数,从第二存储装置中读取压缩数据中的目标数据头,然后根据目标数据头中的起始地址和数据长度,获取与目标数据头对应的目标数据体。
其中,第二存储装置12-201为片内存储装置。
具体地,当第一操作数为寄存器号时,直接内存访问单元12-300根据第一操作数,在第二存储装置12-201中,根据第一操作数指向的位置读取压缩数据中的目标数据头,然后根据数据头与数据体的对应关系,以及读取的目标数据头中的起始地址和数据长度,获取与目标数据头对应的目标数据体。
本实施例的方法通过对片外和片内地址进行读取压缩数据,适应不同应用场景下对指令的需求,增强了指令应用的完备性。
在其中一个实施例中,直接内存访问单元12-300可以根据第一操作数中数据头的原始地址和预设参数,从第一操作数指向的位置读取压缩数据中的目标数据头。其中,预设参数可以包括目标数据头的数量。
在其中一个实施例中,直接内存访问单元12-300根据第一操作数中数据头的行数、源换行距离、单行数据头数量以及预设参数中目标数据头的行数和单行目标数据头数量,从第一操作数指向的位置读取压缩数据中的目标数据头。
可以通过根据目标数据头的数量、行数和单行数量,准确地确定出要读取的目标数据头的数量以及位置。
在其中一个实施例中,直接内存访问单元12-300根据第二操作数中目标数据头的目的地址和目的地址偏移,将读取的压缩数据中的目标数据头写入第二操作数指向的存储装置,然后,根据目标数据头和目标数据体在第一操作数指向的存储装置中的相对位置,将目标数据体对应写入第二操作数指向的存储装置。
可以通过根据目标数据头的目的地址和目的地址偏移,准确地确定出获取的目标数据头要写回的位置。
在一个实施例中,提供了一种计算机设备,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种传送指令译码方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取传送指令中数据头的源数据和预设参数,并根据数据头的源数据和预设参数对传 送指令的第一操作进行配置,得到第一操作的第一操作数。具体地,第一配置单元12-101获取传送指令中数据头的源数据和预设参数,并根据获取的数据头的源数据和预设参数对传送指令的第一操作进行配置,得到第一操作的第一操作数,即获取到目标数据头的原始地址。
获取传送指令中数据头的目的数据,并根据数据头的目的数据以及目标数据头和目标数据体对传送指令的第二操作进行配置,得到第二操作的第二操作数。具体地,第二配置单元12-102获取传送指令中数据头的目的数据,并根据数据头的目的数据以及目标数据头和目标数据体对传送指令的第二操作进行配置,得到第二操作的第二操作数,即获取到目标数据头的目标地址。
13、压缩指令译码方法、解压指令译码方法、数据处理方法、译码器及数据处理装置
本申请提供的指令译码方法,可以应用于译码器13-1000中,所述译码器13-1000包括第一配置单元13-101和第二配置单元13-102。其中,第一配置单元13-101与第二配置单元13-102连接,第一配置单元13-101通过第二配置单元13-102与第三配置单元13-103连接。
可选地,该指令可以为压缩指令或解压指令。其中,压缩指令可以对原始数据进行压缩,将原始数据划分为数据块,并对获取的数据块中的原始数据进行压缩,获取压缩数据,该压缩数据可以分为多个数据块,可以包含多个数据头和数据体,该数据头可以包含多个数据体,该数据头中存储对应的数据体的起始地址和数据长度,该数据体可以包含对应的压缩编码数据。解压指令可以对上述压缩数据进行解压,该压缩数据可以分为多个数据块,可以包含多个数据头和数据体,该数据头可以包含多个数据体,该数据头中存储对应的数据体的起始地址和数据长度,该数据体可以包含对应的压缩编码数据。
具体地,第一配置单元13-101,用于对压缩指令的第一操作进行配置,得到第一操作的第一操作数。也用于解压指令的第四操作进行配置,得到所述第四操作的第四操作数。
第二配置单元13-102,用于对压缩指令的第二操作进行配置,得到第二操作的第二操作数。也用于对解压指令的第五操作进行配置,得到第五操作的第五操作数。
第三配置单元13-103,用于对压缩指令的第三操作进行配置,得到第三操作的第三操作数。
其中,第一操作数可以表示为读取原始数据的时候,原始数据的存储地址,可选地,第一操作数可以为立即数或寄存器号。第二操作数可以表示为将原始数据进行压缩的标识。第三操作数可以表示为将压缩数据中的数据头写回时,数据头的目的存储地址,可选地,第三操作数可以为立即数或寄存器号。第四操作数可以表示为读取压缩数据的数据块的时候,数据块的原始存储地址,可选地,第四操作数可以为立即数或寄存器号。第五操作数可以表示为将解压数据写回时,解压数据的目的存储地址,可选地,第五操作数可以为立即数或寄存器号。
举例说明,在一个可选的技术方案中,主运算处理电路中的控制器单元可以包括主指 令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该指令可以是压缩指令,该指令的指令格式可以如下表2所示:
Figure PCTCN2019121056-appb-000002
Figure PCTCN2019121056-appb-000003
其中,指令类别Name用于确定指令的类别(指令的类别可以包括COMP类指令和其他指令,其中,COMP类为16),即指令类别用于确定运算指令是否为COMP类指令。指令类型Type用于确定COMP类指令的类型,COMP类指令的类型用于表明该指令实现何种功能,例如,当指令类型Type为1时,表示该指令为压缩指令。数据头目的地址Head addr、数据头地址偏移Head offset、数据头的行数Head seg num、数据头换行距离Head stride和单行数据头数量Head num用于表示要写回的数据头的目标地址。原始数据源地址Data addr和原始数据换行距离Data stride这些指令域用于表示要读取的原始数据的原始地址。
进一步地,该压缩指令的指令格式还可以包括:配置表地址Config addr,用于存储压 缩格式下的数据的编码值。
更进一步地,该压缩指令的指令格式还可以包括各指令域的标志位,例如:用于表示摆放模式参数的标志位Packing en,具体地,当Packing en为1时,表示压缩数据的摆放模式Packing模式。还有用于表示压缩模式的标志位Compress en,具体地,当Compress en为1时,表示开启压缩操作。还有用于表示游程编码的标志位,具体地,当Run length en为1时,表示开启游程编码。还有用于表示混洗的标志位Shuffle en,具体地,当Shuffle en为1时,表示开启混洗。
还有用于标识数据头目的地址Head addr是立即数还是寄存器号的标志位Head addr reg en,具体地,Head addr reg en为1时,表示数据头目的地址Head addr是寄存器号,即表示数据头目的地址Head addr来自寄存器,Head addr reg en为0时,表示数据头目的地址Head addr是立即数。
还有用于标识数据头地址偏移Head offset是立即数还是寄存器号的标志位Head offset reg en,具体地,Head offset reg en为1时,表示数据头地址偏移Head offset是寄存器号,即表示数据头地址偏移Head offset来自寄存器,Head offset reg en为0时,表示数据头地址偏移Head offset是立即数。
还有用于标识原始数据源地址Data addr是立即数还是寄存器号的标志位Data addr reg en,具体地,Data addr reg en为1时,表示原始数据源地址Data addr是寄存器号,即原始数据源地址Data addr来自寄存器,Data addr reg en为0时,表示原始数据源地址Data addr是立即数。
还有用于标识数据块的块内行数Block seg num是立即数还是寄存器号的标志位Block seg num reg en,具体地,Block seg num reg en为1时,表示数据块的块内行数Block seg num是寄存器号,即数据块的块内行数Block seg num来自寄存器,Block seg num reg en为0时,表示数据块的块内行数Block seg num是立即数。
以及用于标识数据块的块内单行数量Block size是立即数还是寄存器号的标志位Block size reg en,具体地,Block size reg en为1时,表示数据块的块内单行数量Block size是寄存器号,即数据块的块内单行数量Block size来自寄存器,Block size reg en为0时,表示数据块的块内单行数量Block size是立即数。
同样地,还有用于标识数据头换行距离Head stride是立即数还是寄存器号的标志位Head stride reg en,标识原始数据换行距离Data stride是立即数还是寄存器号的标志位Data stride reg en,标识数据头行数Head seg num是立即数还是寄存器号的标志位Head seg num reg en,标识单行数据头数量Head num是立即数还是寄存器号的标志位Head num reg en。具体地,当这些标志位为1时,表示各指令域为寄存器号,来自寄存器,当这些标志位为0时,表示各指令域为立即数。
在一种可选方案中,该指令可以是解压指令,该指令的指令格式可以如下表3所示:
Figure PCTCN2019121056-appb-000004
Figure PCTCN2019121056-appb-000005
Figure PCTCN2019121056-appb-000006
其中,指令类别Name用于确定指令的类别(指令的类别可以包括COMP类指令和其他指令,其中,COMP类为16),即指令类别用于确定运算指令是否为COMP类指令。指令类型Type用于确定COMP类指令的类型,COMP类指令的类型用于表明该指令实现何种功能,例如,当指令类型Type为2时,表示该指令为解压指令。解压数据的目的地址Data addr用于表示要写回的解压数据的目标地址。数据头源地址Head addr、数据头地址偏移Head addr、数据头的行数Head seg num、数据头换行距离Head stride和单行数据头数量Head num,这些指令域用于表示要读取的目标数据头的原始地址。
进一步地,该解压指令的指令格式还可以包括:配置表地址Config addr,用于存储压缩格式下的数据的编码值。
更进一步地,该解压指令的指令格式还可以包括各指令域的标志位,例如:用于标识解压数据的目的地址Data addr是立即数还是寄存器号的标志位Data addr reg en,具体地,Data addr reg en为1时,表示解压数据的目的地址Data addr是寄存器号,即表示解压数据的目的地址Data addr来自寄存器,Data addr reg en为0时,表示解压数据的目的地址Data addr是立即数。
还有用于标识数据头源地址Head addr是立即数还是寄存器号的标志位Head addr reg en,具体地,Head addr reg en为1时,表示数据头源地址Head addr是寄存器号,即数据头源地址Head addr来自寄存器,Head addr reg en为0时,表示数据头源地址Head addr是立即数。
还有用于标识数据头地址偏移Head offset是立即数还是寄存器号的标志位Head offset reg en,具体地,Head offset reg en为1时,表示数据头地址偏移Head offset是寄存器号,即表示数据头地址偏移Head offset来自寄存器,Head offset reg en为0时,表示数据头地址偏移Head offset是立即数。
同样地,还有用于标识数据头换行距离Head stride是立即数还是寄存器号的标志位Head stride reg en,标识原始数据换行距离Data stride是立即数还是寄存器号的标志位Data stride reg en,标识数据头行数Head seg num是立即数还是寄存器号的标志位Head seg num reg en,标识单行数据头数量Head num是立即数还是寄存器号的标志位Head num reg en。具体地,当这些标志位为1时,表示各指令域为寄存器号,来自寄存器,当这些标志位为0时,表示各指令域为立即数。
请一并参阅图92,本申请还提出了一种指令应用的装置,即数据处理装置13-3000,可以包括配置单元13-100,数据读写单元13-200以及压缩解压单元13-300。其中,配置单元13-100连接数据读写单元13-200,配置单元13-100与直接内存访问单元13-300连接,压缩解压单元13-300与数据读写单元13-200连接。
可选地,第一配置单元13-101、第二配置单元13-102以及第三配置单元13-103可以封装为一个配置单元13-100。
配置单元13-100通过配置第一操作得到第一操作数、配置第二操作得到第二操作数、第三操作得到第三操作数、第四操作得到第四操作数以及第五操作得到第五操作数,并将第一操作数、第三操作数、第四操作数以及第五操作数发送给数据读写单元13-200。
数据读写单元13-200接收到配置单元13-100发送的操作数后,根据第一操作数,从第一操作数指向的存储装置中读取原始数据,并将所述原始数据划分为对个数据块。根据第三操作数,将压缩数据中的数据头写入第三操作数指向的存储装置,然后根据数据头与数据体之间的对应关系写出数据体。根据第四操作数,从第四操作数指向的存储装置中读取压缩数据的数据块,并将压缩数据的数据块发送到压缩解压单元13-300。根据第五操作数,将解压数据写入第五操作数指向的存储装置。
压缩解压单元13-300接收配置单元13-100发送的第二操作数,并根据第二操作数对数据块进行数据压缩,得到压缩数据。此外,压缩解压单元13-300接收到压缩数据的数据块后,也能够对压缩数据的数据块进行解压缩,得到解压数据。
可选地,存储装置可以包括第一存储装置13-13,也可以包括第二存储装置13-201。该第一存储装置13-13可以是设置在处理器外部的存储装置。该第二存储装置13-201可以是设置在处理器13-1000内部的缓存器和/或寄存器。该第一存储装置13-13及第二存储装置13-201也可以是非易失性存储器或易失性存储器,此处不做具体限定。该数据读写单元13-200可以是I/O电路。
可选地,压缩解压单元13-300可以设置在运算单元13-12中。
在一个实施例中,如图93所示,提供了一种压缩指令的译码方法,以该方法应用于上述译码器为例进行说明,包括以下步骤:
S13-200,获取压缩指令中原始数据的源数据,并根据原始数据的源数据对压缩指令的第一操作进行配置,得到第一操作的第一操作数。
其中,原始数据的源数据表示原始数据的原始地址。第一操作用于根据所述第一操作数读取所述原始数据,将所述原始数据划分为多个数据块。第一操作数可以为立即数或寄存器号。
具体地,第一配置单元13-101获取压缩指令中原始数据的源数据,并根据获取的压缩指令中原始数据的源数据对压缩指令的第一操作进行配置,得到第一操作的第一操作数,即获取到原始数据的原始地址。
S13-300,获取压缩指令中压缩操作的源数据,并根据压缩操作的源数据对压缩指令的第二操作进行配置,得到第二操作的第二操作数。
其中,压缩操作的源数据通过压缩模式的标志位表示,即当压缩模式的标志位为1时,表示开启压缩。第二操作用于根据第二操作数,对数据块进行压缩。
具体地,第二配置单元13-102获取压缩指令中压缩操作的源数据,并根据获取的压缩操作的源数据对压缩指令的第二操作进行配置,得到第二操作的第二操作数。
S13-400,获取压缩指令中数据头的目的数据,并根据数据头的目的数据对压缩指令的第三操作进行配置,得到第三操作的第三操作数。
其中,数据头的目的数据表示数据头的目标地址,即将获得的数据头写到目标地址对应的位置。第三操作用于根据第三操作数,写出压缩数据中的数据头,然后根据数据头与数据体之间的对应关系写出数据体。第三操作数包括立即数或寄存器号。压缩操作得到的压缩数据包括多个数据头和多个数据体,数据头中存储对应的数据体的起始地址和数据长度,数据体包含压缩数据的压缩编码值。
具体地,第三配置单元13-103获取压缩指令中数据头的目的数据,并根据获取的数据头的目的数据对压缩指令的第三操作进行配置,得到第三操作的第三操作数。
上述压缩指令的译码方法中,通过对第一操作进行配置,得到第一操作的第一操作数,第一操作表示用于根据第一操作数进行原始数据的读取操作,通过对第二操作进行配置,得到第二操作数的第二操作数,第二操作表示用于根据第二操作数进行原始数据的压缩操作,以及通过对第三操作进行配置,得到第三操作数的第三操作数,第三操作表示用于根据第三操作数进行压缩数据中数据头的写回操作。通过对压缩指令进行解析,得到相应的操作,实现对压缩指令的解析,同时该指令能够得到特定格式的压缩数据。
在其中一个实施例中,请继续参阅图93,所述方法还可以包括以下步骤:
S13-100,对获取的指令进行解析,并根据指令中的指令类别和指令类型确定指令为压缩指令。
其中,如上表2所示,指令类别Name用于确定指令的类别(指令的类别可以包括COMP类指令和其他指令,其中,COMP类为16),即指令类别用于确定运算指令是否为COMP类指令。指令类型Type用于确定COMP类指令的类型,COMP类指令的类型用于表明该指令实现何种功能,例如,当指令类型Type为1时,表示该指令为压缩指令。
具体地,指令处理单元13-111对获取的指令进行解析,根据指令类别Name以及指令类型Type进行区分,当指令类型Type为1时,表示该指令为压缩指令。
可选地,指令处理单元13-111可以通过指令缓存单元13-110获取指令,然后指令处理单元13-111中的第一配置单元13-101、第二配置单元13-102与第三配置单元13-103进行配置。
在其中一个实施例中,第一操作数可以包括立即数或寄存器号,判断第一操作数是否为立即数,当判断第一操作数为立即数时,执行步骤S500,此时第一操作用于根据第一操作数,从第一存储装置中读取原始数据。
其中,第一存储装置13-13可以是片外存储装置。
具体地,当第一操作数为立即数时,第一操作用于从第一操作数指向的第一存储装置13-13中相对应的位置,读取原始数据。
当判断第一操作数为寄存器号时,执行步骤S600,第一操作用于根据第一操作数,从第二存储装置中读取原始数据。
其中,第二存储装置13-201可以是片内存储装置。
具体地,当第一操作数为寄存器号时,第一操作用于从第一操作数指向的第二存储装置13-201中相对应的位置,读取原始数据。
本实施例的方法通过对片外和片内地址进行读取原始数据,适应不同应用场景下对指令的需求,增强了指令应用的完备性。
在其中一个实施例中,对第一操作进行配置的过程可以包括以下步骤:
S13-210,根据压缩指令中原始数据的源地址以及换行距离,得到第一操作数中原始数据的原始地址。
具体地,第一配置单元13-101获取到压缩指令中原始数据的源地址以及换行距离,然后根据原始数据的源地址以及换行距离,得到第一操作数中原始数据的原始地址。通过获取到原始数据的源地址以及换行距离,得到原始数据的原始地址,该原始地址用于存储原始数据。
S13-220,根据原始地址对压缩指令的第一操作进行配置,得到第一操作的第一操作数。
具体地,第一配置单元13-101得到原始数据的原始地址后,然后根据原始地址,对压缩指令的第一操作进行配置,得到第一操作的第一操作数。该原始地址用于存储原始数据,则根据原始数据的存储地址进行配置,得到第一操作数,可根据第一操作数进行原始数据的读取。
S13-230,根据压缩指令中数据块的块内行数以及块内单行数量对压缩指令的第一操作进行配置,得到第一操作的第一操作数。
具体地,第一配置单元13-101获取到压缩指令中数据块的块内行数以及块内单行数量后,然后根据数据块的块内行数以及块内单行数量进行配置,得到第一操作数。该第一操作数用于确定数据块的块内行数以及块内单行数量,该第一操作用于根据第一操作数中的数据块的块内行数以及块内单行数量,将原始数据划分为多个数据块。
本实施例中通过对第一操作中的原始数据进行配置,使得读取的原始数据头的位置更加准确。
在其中一个实施例中,第一配置单元13-101可以根据压缩指令中的窗口参数,对压缩指令的第一操作进行配置,得到第一操作的第一操作数。其中,窗口参数可以包括四个方向的方向参数,例如将各个方向的参数按照表1设定为:非整块top值Top(上)、非整块Bottom值Bottom(下)、非整块Left值Left(左)、非整块Right值Right(右)。可以根据四个方向的方向参数对原始数据进行窗口读取。第一操作用于根据第一操作数,对原始数据进行非整块读取。
在其中一个实施例中,对第二操作进行配置的过程可以包括以下步骤:
S13-310,根据压缩指令中游程编码的源数据,对压缩指令的第二操作进行配置,得到第二操作的第二操作数。
具体地,第二配置单元13-102获取到压缩指令中游程编码的源数据,然后根据游程编码的源数据,得到第二操作的第二操作数。第二操作用于根据第二操作数中的游程编码的源数据,选择是否使用游程编码进行压缩。
S13-320,根据压缩指令中混洗源数据,对压缩指令的第二操作进行配置,得到第二操作的第二操作数。
具体地,第二配置单元13-102获取到压缩指令中混洗源数据,根据混洗源数据对传送指令的第二操作进行配置,得到第二操作的第二操作数,该第二操作数用于表示是否在压缩操作之前进行数据混洗移。第二操作用于根据第二操作数中的混洗源数据,选择是否在压缩操作之前进行数据混洗。
本实施的方法通过对压缩操作进行配置,使得对数据块的压缩更加多样化。
在其中一个实施例中,对第三操作进行配置的过程可以包括以下步骤:
S13-410,根据压缩指令中的数据头的目的地址和地址偏移,得到第三操作数中的数据头的目标地址。
具体地,第三配置单元13-103获取到压缩指令中的数据头的目的地址和地址偏移,然后根据数据头的目的地址和地址偏移,得到数据头的目标地址。数据头的目标地址用于表示数据头要写回的目标地址,即标数据头的目标地址用于存储写回的数据头。
S13-420,根据数据头的目标地址对压缩指令的第三操作进行配置,得到第三操作的第三操作数。
具体地,第三配置单元13-103得到数据头的目标地址后,根据数据头的目标地址对压缩指令的第三操作进行配置,得到第三操作的第三操作数,该第三操作数用于表示数据头的目标地址,即该第三操作数用于表示数据头要写回的目标地址,即数据头的目标地址用于存储写回的数据头。
S13-430,根据压缩指令中数据头的行数、换行距离以及单行数据头数量对压缩指令的第三操作进行配置,得到第三操作的第三操作数。
具体地,第三配置单元13-103获取到压缩指令中数据头的行数、换行距离以及单行数据头数量后,然后根据数据头的行数、换行距离以及单行数据头数量进行配置,得到第三操作数。该第三操作数用于确定要写回的数据头的目标地址,行数以及单行数量。
S13-440,使用压缩指令中摆放模式参数,对压缩指令的第三操作进行配置,得到第三操作的第三操作数。
具体地,第三配置单元13-103根据压缩指令中摆放模式参数,对压缩指令的第三操作进行配置,得到第三操作的第三操作数。该第三操作数用于确定要写回的数据头的摆放模式。
S13-450,根据第三操作数中的数据头中的起始地址和数据长度,得到第三操作数中的数据体的目标地址和数据长度。
具体地,第三操作数中包括数据头的目标地址以及数据头的数量,以及数据头与数据体存在一定的对应关系,数据头中存储对应的数据体的起始地址和数据长度,第三配置单元13-103根据数据头的目标地址以及数量,得到数据体的目标地址和数量。
S13-460,使用数据体的目标地址和数据长度对压缩指令的第三操作进行配置。
具体地,第三配置单元13-103获取到数据体的目标地址和数量,然后根据数据体的目标地址和数量,对压缩指令的第三操作进行配置,第三操作用于依据数据体的目标地址和数量,进行数据体的写出操作。
本实施例中通过对第三操作中的数据头的数量和行数进行配置,使得写出的数据头的位置更加准确。
本申请还提出了一种数据处理方法,以该方法应用于上述数据处理装置为例,可以包括以下步骤:
S13-700,获取压缩指令,并对压缩指令进行解析,得到压缩指令的第一操作数、第二操作数和第三操作数。
其中,第一操作数可以包括立即数或寄存器号,第三操作数可以包括立即数或寄存器号
具体地,配置单元13-100获取到压缩指令,并对压缩指令进行解析,获得到压缩指令的第一操作数、第二操作数和第三操作数。
S13-800,从第一操作数指向的存储装置中读取原始数据,并将原始数据划分为多个数据块。
其中,该存储装置可以为第一存储装置13-13或者第二存储装置13-201。
具体地,配置单元13-100得到第一操作数后,将第一操作数发送到数据读写单元13-200,数据读写单元13-200接收到第一操作数后,根据第一操作数,从第一操作数指向的存储装置中读取原始数据,并将原始数据划分为多个数据块。
S13-900,根据第二操作数将数据块进行压缩,得到压缩数据。
具体地,配置单元13-100得到第二操作数后,将第二操作数发送到压缩解压单元13-300,压缩解压单元13-300接收到第二操作数后,根据第二操作数,将得到的数据块进行压缩,得到压缩数据。
S13-1000,将压缩数据中的数据头写入第三操作数据指向的存储装置,然后根据数据头与数据体之间的对应关系写出数据体。
其中,该存储装置可以为第一存储装置13-13或者第二存储装置13-201。
具体地,配置单元13-100得到第三操作数后,将第三操作数发送到数据读写单元13-200,数据读写单元13-200接收到第三操作数后,根据第三操作数,将压缩数据中的数据头写入第三操作数据指向的存储装置,然后根据数据头与数据体之间的对应关系写出数据体。
上述方法通过根据解析得到的第一操作数、第二操作数和第三操作数,将原始数据进行压缩,得到压缩数据,并将压缩数据中的数据头写出,然后根据数据头与数据体之间的对应关系写出数据体,能够得到特定格式的压缩数据,提高了指令的功能,完善了设备的功能性。
在其中一个实施例中,上述步骤S13-800可以包括以下步骤:
判断第一操作数是否为立即数,当判断第一操作数为立即数时,执行步骤S810,根据第一操作数,从第一存储装置中读取原始数据。
其中,第一存储装置13-13为片外存储装置。
具体地,当第一操作数为立即数时,数据读写单元13-200根据第一操作数,在第一存 储装置13-13中,根据第一操作数指向的位置读取原始数据。
当判断第一操作数为寄存器号时,执行步骤S13-820,根据第一操作数,从第二存储装置中读取原始数据。
其中,第二存储装置13-201为片内存储装置。
具体地,当第一操作数为寄存器号时,数据读写单元13-200根据第一操作数,在第二存储装置13-201中,根据第一操作数指向的位置读取原始数据。
本实施例的方法通过对片外和片内地址进行读取原始数据,适应不同应用场景下对指令的需求,增强了指令应用的完备性。
在其中一个实施例中,数据读写单元13-200可以根据第一操作数中原始数据的源地址以及换行距离,从第一操作数指向的位置读取原始数据。
在其中一个实施例中,数据读写单元13-200根据第一操作数中数据块的块内行数以及块内单行数量,将读取的原始数据划分为多个数据块。
在其中一个实施例中,压缩解压单元13-300根据第二操作数中的游程编码的源数据,将数据块发送到第二操作数据指向的存储装置,然后选择是否使用游程编码进行压缩。
在其中一个实施例中,数据读写单元13-200根据第三操作数中的数据头的目的地址和地址偏移,将压缩数据中的数据头写入第三操作数指向的存储装置,然后,根据第三操作数中的数据头和数据体的摆放模式参数,将数据体对应写入第三操作数指向的存储装置中。
通过对数据头和数据体的摆放模式参数进行配置,使得数据体以及数据头写出位置更加准确。
在一个实施例中,提供了一种解压指令译码方法,以该方法应用于上述译码器为例进行说明,包括以下步骤:
S13-1200,获取压缩指令中数据块的块内行数以及块内单行数量,并根据数据块的块内行数以及块内单行数量对压缩指令的第四操作进行配置,得到第四操作的第四操作数。
其中,第四操作用于根据第四操作数读取压缩数据的数据块,以及将读取的数据块发送出去。压缩数据的数据块中包括多个数据头和多个数据体,数据头与数据体存在有一定的对应关系,数据头中存储对应的数据体的起始地址和数据长度,数据体包含压缩数据的压缩编码值。第四操作数可以为立即数或寄存器号。
具体地,第一配置单元13-101获取压缩指令中数据块的块内行数以及块内单行数量,并根据获取的数据块的块内行数以及块内单行数量对压缩指令的第四操作进行配置,得到第四操作的第四操作数。
S13-1300,获取解压指令中解压数据的目的数据,并根据解压数据的目的数据对解压指令的第五操作进行配置,得到第五操作的第五操作数。
其中,解压数据的目的数据表示解压数据的目标地址,即将解压数据写回到目标地址对应的位置。第五操作用于写出获取的解压数据。第五操作数包括立即数或寄存器号。
具体地,第二配置单元13-102获取解压指令中解压数据的目的数据,并根据解压数据的目的数据对解压指令的第五操作进行配置,得到第五操作的第五操作数,即获取到解压数据的目标地址。
上述解压指令译码方法中,通过对第四操作进行配置,得到第四操作的第四操作数,第四操作表示用于根据第四操作数进行压缩数据的数据块的读取操作,以及通过对第五操作进行配置,得到第五操作数的第五操作数,第五操作表示用于根据第五操作数进行解压数据的写回操作。通过对解压指令进行解析,得到相应的操作,实现对解压指令的解析,支持特定格式的压缩数据的解压缩。
在其中一个实施例中,所述方法还可以包括以下步骤:
S13-1100,对获取的指令进行解析,并根据指令中的指令类别和指令类型确定指令为解压指令。
其中,如上表2所示,指令类别Name用于确定指令的类别(指令的类别可以包括COMP类指令和其他指令,其中,COMP类为16),即指令类别用于确定运算指令是否为COMP类指令。指令类型Type用于确定COMP类指令的类型,COMP类指令的类型用于表明该指令实现何种功能,例如,当指令类型Type为2时,表示该指令为解压指令。
具体地,指令处理单元13-111对获取的指令进行解析,根据指令类别Name以及指令类型Type进行区分,当指令类型Type为2时,表示该指令为解压指令。
可选地,指令处理单元13-111可以通过指令缓存单元13-110获取指令,然后指令处理单元13-111中的第一配置单元13-101与第二配置单元13-102进行配置。
在其中一个实施例中,第四操作数可以包括立即数或寄存器号,判断第四操作数是否为立即数,当判断第四操作数为立即数时,执行步骤S13-1400,此时第四操作用于根据第四操作数,从第一存储装置中读取压缩数据的数据块。
其中,第一存储装置13-13可以是片外存储装置。
具体地,当第四操作数为立即数时,第四操作用于从第四操作数指向的第一存储装置13-13中相对应的位置,读取压缩数据的数据块。
当判断第四操作数为寄存器号时,执行步骤S13-1500,第四操作用于根据第四操作数,从第二存储装置中读取压缩数据的数据块。
其中,第二存储装置13-201可以是片内存储装置。
具体地,当第四操作数为寄存器号时,第四操作用于从第四操作数指向的第二存储装置13-201中相对应的位置,读取压缩数据的数据块。
本实施例的方法通过对片外和片内地址进行读取压缩数据的数据块,适应不同应用场景下对指令的需求,增强了指令应用的完备性。
在其中一个实施例中,对第四操作进行配置的过程可以包括以下步骤:
S13-1210,根据解压指令中数据头的源地址和地址偏移,得到第四操作数中数据头的原始地址。
具体地,第一配置单元13-101获取到解压指令中数据头的源地址和地址偏移,然后根 据数据头的源地址和地址偏移,得到第四操作数中数据头的原始地址。通过获取到数据头的源地址以及地址偏移,得到数据头的原始地址,该原始地址用于存储数据头。
S13-1220,根据原始地址对压缩指令的第四操作进行配置,得到第四操作的第四操作数。
具体地,第一配置单元13-101得到数据头的原始地址后,然后根据原始地址,对压缩指令的第四操作进行配置,得到第四操作的第四操作数。该原始地址用于存储数据头,则根据数据头的存储地址进行配置,得到第四操作数,可根据第四操作数进行数据头的读取。
S13-1230,根据解压指令中数据头的行数、换行距离以及单行数据头数量对解压指令的第四操作进行配置,得到第四操作的第四操作数。
具体地,第一配置单元13-101获取到解压指令中数据头的行数、换行距离以及单行数据头数量后,然后根据数据头的行数、换行距离以及单行数据头数量进行配置,得到第四操作数。该第四操作数用于确定要读取的数据头的原始地址,行数以及单行数量。
S13-1240,根据第四操作数中数据头中的起始地址和数据长度,得到第四操作数中的数据体的原始地址和数据长度。
具体地,第四操作数中包括数据头的原始地址以及数据长度,以及数据头与数据体存在一定的对应关系,数据头中存储对应的数据体的起始地址和数据长度,第一配置单元13-101根据数据头的原始地址以及数据长度,得到数据体的原始地址和数据长度。
S13-1250,使用数据体的原始地址和数据长度对解压指令的第四操作进行配置。
具体地,第一配置单元13-101获取到数据体的原始地址和数据长,然后根据数据体的原始地址和数据长度,对解压指令的第四操作进行配置,第四操作用于依据数据体的原始地址和数据长度,进行数据体的读取。
本实施例中通过对第四操作中的数据头的数量和行数进行配置,使得读取的数据头的位置更加准确。
在其中一个实施例中,对第五操作进行配置的过程可以包括以下步骤:
S13-1310,根据解压指令中的解压数据的目的地址,得到第五操作数中的解压数据的目标地址。
具体地,第二配置单元13-102获取到解压指令中的解压数据的目的地址,然后根据解压数据的目的地址,得到解压数据的目标地址。解压数据的目标地址用于表示解压数据要写回的目标地址,即解压数据的目标地址用于存储写回的解压数据。
S13-1320,根据解压数据的目标地址对解压指令的第五操作进行配置,得到第五操作的第五操作数。
具体地,第二配置单元13-102得到解压数据的目标地址后,根据解压数据的目标地址解压指令的第五操作进行配置,得到第五操作的第五操作数,该第五操作数用于表示解压数据的目标地址,即该第五操作数用于表示解压数据要写回的目标地址,即解压数据的目标地址用于存储写回的解压数据。
本实施的方法通过对解压数据的目标地址进行配置,使得写回的解压数据的地址更加 准确。
本申请还提出了一种数据处理方法,以该方法应用于上述数据处理装置为例,可以包括以下步骤:
S13-1600,获取解压指令,并对解压指令进行解析,得到解压指令的第四操作数和第五操作数。
其中,第四操作数可以包括立即数或寄存器号,第五操作数可以包括立即数或寄存器号
具体地,配置单元13-100获取到解压指令,并对解压指令进行解析,获得到解压指令的第四操作数以及第五操作数。
S13-1700,从第四操作数指向的存储装置中读取压缩数据的数据块,以及将读取的数据块发送出去。
其中,该存储装置可以为第一存储装置13-13或者第二存储装置13-201。压缩数据的数据块包括多个数据头和多个数据体,数据头中存储对应的数据体的起始地址和数据长度,数据体包含压缩数据的压缩编码值。
具体地,配置单元13-100得到第四操作数后,将第四操作数发送到数据读写单元13-200,数据读写单元13-200接收到第四操作数后,根据第四操作数,从第四操作数指向的存储装置中读取压缩数据的数据块。
S13-1800,将读取的压缩数据的数据块进行解压缩,得到解压数据。
具体地,压缩解压单元13-300接收到读取的压缩数据的数据块后,将读取的压缩数据的数据块进行解压缩,得到解压数据。
S13-1900,将解压数据写入第五操作数据指向的存储装置。
其中,该存储装置可以为第一存储装置13-13或者第二存储装置13-201。
具体地,配置单元13-100得到第五操作数后,将第五操作数发送到数据读写单元13-200,数据读写单元13-200接收到第五操作数后,根据第五操作数,将解压数据写入第五操作数指向的存储装置。
上述方法通过根据解析得到的第四操作数和第五操作数,将压缩数据的数据块进行解压缩,支持特定压缩格式的数据进行解压缩处理,提高了指令的功能,完善了设备的功能性。
在其中一个实施例中,上述步骤S13-1700可以包括以下步骤:
判断第四操作数是否为立即数,当判断第四操作数为立即数时,执行步骤S13-1710,根据第四操作数,从第一存储装置中读取压缩数据的数据块,以及将读取的数据块发送出去。
其中,第一存储装置13-13为片外存储装置。
具体地,当第四操作数为立即数时,数据读写单元13-200根据第四操作数,在第一存储装置13-13中,根据第四操作数指向的位置读取压缩数据的数据块,以及将读取的数据块发送出去。
当判断第四操作数为寄存器号时,执行步骤S13-1720,根据第四操作数,从第二存储装置中读取压缩数据的数据块,以及将读取的数据块发送出去。
其中,第二存储装置13-201为片内存储装置。
具体地,当第四操作数为寄存器号时,数据读写单元13-200根据第四操作数,在第二存储装置13-201中,根据第四操作数指向的位置读取压缩数据的数据块,以及将读取的数据块发送出去。
本实施例的方法通过对片外和片内地址进行读取压缩数据的数据块,适应不同应用场景下对指令的需求,增强了指令应用的完备性。
在其中一个实施例中,数据读写单元13-200可以根据第四操作数中数据头的源地址和地址偏移,读取压缩数据的数据块。其中,压缩数据的数据块中包括多个数据头和多个数据体。
在其中一个实施例中,数据读写单元13-200根据第四操作数中数据头的行数、换行距离以及单行数据头数量,读取压缩数据的数据块。
可以通过根据数据头的源地址、地址偏移、行数和单行数量等,准确地确定出要读取的数据头的数量以及位置。
在其中一个实施例中,数据读写单元13-200根据第五操作数中的解压数据的目的地址,将得到的解压数据写入第五操作数指向的存储装置。
可以通过根据解压数据的目的地址,准确地确定出解压数据要写回的位置。
在一个实施例中,提供了一种计算机设备,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种传送指令译码方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取压缩指令中原始数据的源数据,并根据原始数据的源数据对压缩指令的第一操作进行配置,得到第一操作的第一操作数。具体地,第一配置单元13-101获取压缩指令中原始数据的源数据,并根据获取的压缩指令中原始数据的源数据对压缩指令的第一操作进行配置,得到第一操作的第一操作数,即获取到原始数据的原始地址。
获取压缩指令中压缩操作的源数据,并根据压缩操作的源数据对压缩指令的第二操作进行配置,得到第二操作的第二操作数。具体地,第二配置单元13-102获取压缩指令中压缩操作的源数据,并根据获取的压缩操作的源数据对压缩指令的第二操作进行配置,得到 第二操作的第二操作数。
获取压缩指令中数据头的目的数据,并根据数据头的目的数据对压缩指令的第三操作进行配置,得到第三操作的第三操作数。具体地,第三配置单元13-103获取压缩指令中数据头的目的数据,并根据获取的数据头的目的数据对压缩指令的第三操作进行配置,得到第三操作的第三操作数。
应当清楚的是,本申请实施例中的计算机程序被处理器执行时实现的步骤,与上述实施例中的方法的各个步骤的执行过程一致,具体可参见上文的描述,此处不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取压缩指令中数据块的块内行数以及块内单行数量,并根据数据块的块内行数以及块内单行数量对压缩指令的第四操作进行配置,得到第四操作的第四操作数。具体地,第一配置单元13-101获取压缩指令中数据块的块内行数以及块内单行数量,并根据获取的数据块的块内行数以及块内单行数量对压缩指令的第四操作进行配置,得到第四操作的第四操作数。
获取解压指令中解压数据的目的数据,并根据解压数据的目的数据对解压指令的第五操作进行配置,得到第五操作的第五操作数。具体地,第二配置单元13-102获取解压指令中解压数据的目的数据,并根据解压数据的目的数据对解压指令的第五操作进行配置,得到第五操作的第五操作数,即获取到解压数据的目标地址。
14、数据压缩装置及相关产品
图94为一个实施例提供的一种数据压缩装置的示意图。该数据压缩装置用于实现对其接收到的数据进行压缩处理操作。如图94所示,该数据压缩装置包括:至少一条压缩流水线(图中为14-01、14-02、14-03···),每条压缩流水线包括至少两级流水压缩数据单元(图中为14-10、14-11、14-12···);各级的流水压缩数据单元包括:编码电路(图中为14-100、14-110、14-120···)、选择电路(图中为14-101、14-111、14-121···)以及旁路通道(图中为14-102、14-112、14-122··),其中,各级的流水压缩数据单元中的编码电路的编码方式不同;编码电路的输出端与当前压缩流水线上的同级流水压缩数据单元中的选择电路的输入端连接;选择电路的输出端分别与当前压缩流水线上的下一级流水压缩数据单元中的旁路通道的一端和当前压缩流水线上的下一级流水压缩数据单元中的编码电路的输入端连接,旁路通道的另一端与当前压缩流水线上的下一级流水压缩数据单元中的选择电路的输入端连接;上述压缩流水线用于实现对输入数据的多级压缩处理;
上述选择电路用于根据输入的控制信号确定输出给下一级流水压缩数据单元中的编码电路的输入数据。
需要说明的是,图94所示的数据压缩装置的结构为一种可选的方案,其应用环境为:当数据压缩装置同时接收到多个数据,并需要同时对该多个数据进行数据压缩时,该数据压缩装置可以包括多条并列的压缩流水线,实现对输入的多个数据进行同时压缩处理,且 每条压缩流水线上可以包括多级流水压缩数据单元,每条压缩流水线上的各级流水压缩数据单元之间可以设置为先后级联关系,实现对数据的多级压缩处理。本实施例中,多条并列的压缩流水线上的多级流水压缩数据单元可以用于对不同的输入数据进行同时压缩处理操作,并在每条压缩流水线的输出端输出压缩处理后的结果,这种数据压缩装置可以适用于并行传输数据的应用场景,可以提高并行处理数据的速度。
可选的,图94所示的数据压缩装置中还可以只包括一条压缩流水线,用于实现对输入的单个数据进行多级压缩处理,这种数据压缩装置可以适用于串行传输数据的应用场景。下述实施例将以这种数据压缩装置的结构进行说明。
在上述的数据压缩装置中,上述编码电路用于采用预设的编码方式对输入的数据进行压缩处理,并输出压缩处理后的数据。其中的编码方式可以包括多种编码方式,用户可以根据实际应用需求选取相应的编码方式,即相应的编码电路,实现对数据的压缩处理。而在本实施例中,各级的流水压缩数据单元中的编码电路的编码方式不同,因此,本申请提出的数据压缩装置可以根据应用需求选择不同的编码电路对输入数据进行压缩处理。例如,图中的编码电路14-100、编码电路14-110、编码电路14-120等所采用的编码方式都不相同,用户可以根据实际需求,只选用编码电路14-100,或者只选用编码电路14-110,也可以同时选用编码电路14-100和编码电路14-110。
可选的,上述旁路通道是一种实现物理上直接连接的硬件线路,其可以是一种bypass,可选的,也可以是一种导通电路。本实施例中的旁路通道14-112直接连通上一级的选择电路14-101和本级的选择电路14-111,将上一级的选择电路14-101的输出数据传输给本级的选择电路14-111。
可选的,上述选择电路可以是一种2选1的选择器,其可以包括两个数据输入端口、一个控制信号输入端口以及一个数据输出端口,该选择器可以具体用于根据控制信号输入端口接收到的控制信号,选通两个数据输入端口中的一个端口,使该选择器的数据输出端口可以输出其中一个数据输入端口上接收到的数据。其中的控制信号可以是一种选通信号,用于对选择电路的两个数据输入端口进行选通操作。其可以是一种高低电平信号,例如,高电平信号1,和低电平信号0,假设,选择电路有1#端口和0#端口的两个数据输入端口,而1#端口与高电平信号1对应,0#端口与低电平信号0对应,则高电平信号1可以控制选择电路选通1#端口上的数据进行输出,低电平信号0可以控制选择电路选通0#端口上的数据进行输出。
在实际应用中,每级的流水压缩数据单元均可以通过控制上述选择电路,选择是否采用本级的流水压缩数据单元中的编码电路对上一级的选择电路输出的数据进行压缩处理,若采用本级压缩处理,则通过控制信号控制本级的流水压缩数据单元中的选择电路输出的是经过编码电路压缩后的数据,若不采用本级压缩处理,则通过控制信号控制本级的流水压缩数据单元中的选择电路输出的是旁路通道上传输的数据。
例如,以图94所示的数据压缩装置中的一条压缩流水线14-01的结构进行举例说明,图中的第一级的流水压缩数据单元14-10中的编码电路14-100,采用相应的编码方式,对 获取到的原始数据进行压缩处理,并将压缩处理后的结果发送给本级的选择电路14-101的1#端口。同时,本级的选择电路14-101的0#端口可以接收原始数据。当本级的选择电路14-101接收到一个的用于选通1#端口的控制信号时,该选择电路14-101输出1#端口上的数据,即本级的编码电路14-100输出的压缩数据;相应的,当选择电路14-101接收到一个的用于选通0#端口的控制信号时,该选择电路14-101输出0#端口上的数据,即原始数据;当第一级的流水压缩数据单元14-10完成相应的操作后,会将本级输出的数据分别发送给第二级的流水压缩数据单元14-11中的编码电路14-110和旁路通道14-112。以此类推,当需要哪个编码电路对数据进行压缩处理时,通过控制信号控制该级的选择电路输出编码电路的输出数据即可。由上述过程可知,该数据压缩装置最终输出的压缩数据,可以是经过所有级的编码电路(例如,图中为14-100、14-110、14-120···)进行压缩处理后输出的压缩数据,也可以是经过部分级的编码电路(例如,图中为14-100和14-110)进行压缩处理后输出的压缩数据,还可以是不经过任何一级的编码电路输出的原始数据。
上述实施例提供的一种数据压缩装置,包括:至少一条压缩流水线,所述每条压缩流水线包括至少两级流水压缩数据单元;而流水压缩数据单元包括:编码电路、选择电路以及旁路通道,其中,各级的流水压缩数据单元中的编码电路的编码方式不同;编码电路的输出端与当前压缩流水线上的同级流水压缩数据单元中的选择电路的输入端连接;选择电路的输出端分别与当前压缩流水线上的下一级流水压缩数据单元中的旁路通道的一端和当前压缩流水线上的下一级流水压缩数据单元中的编码电路的输入端连接,旁路通道的另一端与当前压缩流水线上的下一级流水压缩数据单元中的选择电路的输入端连接;上述压缩流水线用于实现对输入数据的多级压缩处理;上述选择电路用于根据输入的控制信号确定输出给下一级流水压缩数据单元中的编码电路的输入数据。在上述数据压缩过程中,由于数据压缩装置中的每条压缩流水线上包括至少两级流水压缩数据单元,且各级流水压缩数据单元中的编码电路的编码方式不同,所以,上述数据压缩装置可以实现对输入的数据进行多次压缩处理,极大的缩减了数据量,同时,各级流水压缩数据单元中的选择电路可以通过设置不同的控制信号,选择是否输出各编码电路输出的数据,实现了对多个编码电路的组合,并采用组合后的编码电路对输入的数据进行压缩处理,使本申请提出的数据压缩装置可以根据实际应用需求,灵活配置相应的编码方式对输入的数据进行压缩处理,从而提高了数据压缩效率。
另外,上述数据压缩装置因为包括了至少一条压缩流水线,可以实现对多个输入的并行数据进行同时压缩处理,因此,本申请提出的数据压缩装置还可以进一步的提高并行处理数据的速度。
图95为一个实施例提供的一种数据压缩装置的示意图。如图95所示,上述数据压缩装置还包括控制单元14-13,该控制单元14-13与选择电路(图中为14-101、14-111、14-121···)的输入端连接。其中,控制单元14-13用于输出控制信号。
可选的,控制单元14-13可以是一种输出高低电平信号的控制器,具体的,控制单元14-13可以根据用户输入的指令生成相应的高低电平信号,再将该高低电平信号发送给与 之连接的选择电路;可选的,控制单元14-13也可以接收其它电路发送的控制信号,并对接收到的控制信号进行译码处理,生成相应的高低电平信号,再将该高低电平信号发送给与之连接的选择电路。
本实施例中,数据压缩装置可以通过控制单元14-13和各流水压缩数据单元(图中为14-10、14-11、14-12···)中的选择电路(图中为14-101、14-111、14-121···),实现灵活配置不同的编码电路(图中为14-100、14-110、14-120···),使数据压缩装置可以根据实际应用需求,选用合适的编码电路对输入的原始数据进行压缩处理,并得到压缩数据。
示例性说明上述的配置过程,如图96所示,图中的数据压缩装置包括三个流水压缩数据单元,分别是流水压缩数据单元a、流水压缩数据单元b和流水压缩数据单元c,且控制单元D分别与选择电路a、选择电路b、选择电路c连接。其中控制单元D发送高低电平的控制信号。当控制单元D向选择电路a发送高电平信号(1)、控制单元D向选择电路b发送低电平信号(0)、以及控制单元D向选择电路c发送高电平信号(1)时,则图中的编码电路a输出的数据被选择电路a选择输出,且编码电路c输出的数据被选择电路c选择输出,因此,图中的数据压缩装置将采用编码电路a和编码电路c的组合对输入的数据进行先后压缩处理。由此可见,不同的控制信号对应不同的编码方式,用户可以根据实际应用需求,通过输入不同的控制信号,灵活配置编码电路,对输入的数据进行压缩处理。
图97为一个实施例提供的一种数据压缩装置的示意图。如图97所示,该数据压缩装置还包括存储单元15-14-14,该存储单元15-14-14分别与第一级流水压缩数据单元中的编码电路14-100和选择电路14-101的输入端连接;且该存储单元15-14-14用于存储原始数据。
其中,原始数据为需要进行压缩处理的数据,该原始数据可以预先存储在存储单元15-14-14中。存储单元15-14-14对应的硬件电路可以是一种寄存器,也可以是缓存,或者是内存RAM,本实施例对此不做限制。
本实施例中,第一级流水压缩数据单元14-10中的编码电路14-100可以从存储单元15-14-14中获取到原始数据,并同时采用相应的编码方式,对该原始数据进行压缩处理,得到压缩处理后的数据,然后将压缩处理后的数据发送到选择电路14-101的一个1#数据输入端口,另外,选择电路14-101的0#数据输入端口上接收到的数据可以为存储单元15-14-14中的原始数据。在这种应用场景下,第一级流水压缩数据单元14-10中的选择电路14-101的输出端口输出的数据根据控制信号的不同,可以是原始数据,也可以是本级的编码电路14-100输出的压缩处理后的数据。例如,当控制信号为高低电平信号时,可以选择的一种方案是:高电平信号控制选择电路14-101输出压缩处理后的数据,低电平信号控制选择电路14-101输出原始数据。
可选的,上述各流水压缩数据单元中的编码电路的编码方式可以为游程编码、哈夫曼编码、LZ77编码以及JPEG编码中的至少一种。可选的,编码电路的编码方式也可以为其它能够对数据进行压缩编码的方式。
可选的,若上述流水压缩数据单元中的编码电路的编码方式为哈夫曼编码,则该流水压缩数据单元中的编码电路可以包括:地址查表电路和压缩数据查表电路;其中,地址查表电路的输入端与上一级流水压缩数据单元中的选择电路的输出端连接,地址查表电路的输出端与压缩数据查表电路的输入端连接;压缩数据查表电路的输出端与同级流水压缩数据单元中的选择电路的输入端连接。
其中,上述地址查表电路用于输出上一级流水压缩数据单元中的选择电路输出的数据对应的地址。具体的,地址查表电路中存储有地址列表,且该地址列表中记录了多个地址。压缩数据查表电路用于输出地址查表电路输出的地址对应的压缩数据。具体的,压缩数据查表电路中存储有压缩数据列表,且该压缩数据列表中记录了多个压缩数据以及对应的多个地址。
本实施例中,当地址查表电路接收到上一级流水压缩数据单元中的选择电路输出的数据时,可选的,地址查表电路可以根据接收该数据的顺序,依次从地址列表中查找对应的地址,并将查找到的地址输出给压缩数据查表电路。当压缩数据查表电路接收到上述地址时,可以查找压缩数据列表,并根据该地址查找压缩数据列表中与该地址对应的压缩数据,并将查找到的压缩数据输出给与之连接的选择电路。
在一个实施例中,本申请还提供了一种基于游程编码和哈夫曼编码电路的数据压缩装置。该数据压缩装置将游程编码方式和哈夫曼编码方式进行组合,实现对原始数据进行压缩处理。对于该压缩处理过程,下述实施例将结合图98所示的数据压缩装置的结构示意图给出具体的解释说明。
示例性说明,如图98所示。该数据压缩装置包括流水压缩数据单元A和流水压缩数据单元B,且流水压缩数据单元A中的编码电路为游程编码电路,流水压缩数据单元B中的编码电路为哈夫曼编码电路,且该哈夫曼编码电路又包括地址查表电路和压缩数据查表电路。本实施例中,当该数据压缩装置需要对原始数据进行压缩处理时,游程编码电路将接收到的原始数据进行压缩处理,并输出压缩处理后的数据A给选择电路A,此时,当控制信号A为0时,选择电路A输出原始数据,当控制信号A为1时,选择电路A输出数据A;然后,选择电路A再将输出的数据(原始数据或数据A)分别发送给与之连接的地址查表电路,地址查表电路再根据数据A查找地址列表上的地址,并输出数据A对应的地址A给压缩数据查表电路,压缩数据查表电路根据地址A查找压缩数据列表中与地址A对应的压缩数据,得到压缩数据B,并将压缩数据B发送给与之连接的选择电路B,此时,当控制信号A为0或1,且控制信号B为1时,选择电路B输出压缩数据B,当控制信号A为1,且控制信号B为0时,选择电路B输出数据A,当控制信号A为0,且控制信号B为0时,选择电路B输出原始数据。综上,上述的数据压缩装置可以通过设置控制信号A和控制信号B,实现对原始数据的四种处理操作,一种是只采用哈夫曼编码方式对原始数据进行压缩处理操作,一种是只采用游程编码方式对原始数据进行压缩处理操作,一种是采用游程编码和哈夫曼编码的级联方式对原始数据进行压缩处理操作,一种是直接输出原始数据,不对原始数据做压缩处理操作。
上述所有实施例中所述的数据压缩装置,均可以应用在不同的场景中,例如,其可以应用在所有需要进行数据传输的系统中,也可以应用在所有需要进行数据处理的系统中。接下来介绍一种计算装置,该计算装置包含上述任一种实施例所述的数据压缩装置。
图99为一个实施例提供的一种计算装置的示意图,该计算装置用于执行机器学习计算,如图99所示,该计算装置包括运算单元14-20以及控制单元14-21;其中的运算单元14-20包括:一个主处理电路14-201和多个从处理电路14-202;主处理电路14-201包括:数据压缩装置14-2011,以及主运算电路14-2012;从处理电路14-202包括:数据压缩装置14-2021,以及从运算电路14-2022;
上述控制单元14-21用于获取原始数据、运算指令以及控制指令,并将原始数据、运算指令和控制指令发送给主处理电路14-201;
上述主处理电路14-201用于对原始数据执行压缩处理,以及与多个从处理电路14-202之间传输数据和运算指令;多个从处理电路14-202,用于依据从主处理电路14-201传输的数据以及运算指令并行执行中间运算得到多个中间结果,并对多个中间结果进行压缩处理后传输给主处理电路14-201;
基于上述应用,主处理电路14-201还用于对压缩处理后的中间结果执行后续处理,得到计算结果。
本实施例中,数据压缩装置应用于运算单元14-20中,实现了运算单元14-20中的主处理电路14-201与从处理电路14-202之间的数据交互。具体的数据交互过程为:当主处理电路14-201从控制单元14-21中获取到原始数据时,数据压缩装置14-2011对该原始数据进行压缩处理,得到压缩处理后的数据,再将该压缩处理后的数据发送给从处理电路14-202;从处理电路14-202中的从运算电路14-2022对接收到的数据进行运算(例如,乘积运算),得到中间结果,然后将该中间结果发送给数据压缩装置14-2021进行压缩处理,得到压缩后的中间结果,并将该压缩后的中间结果发送给主处理电路14-201,主处理电路14-201中的主运算电路14-2012再对接收到的中间结果进行运算(例如,累加和运算或激活运算),得到计算结果,再将该计算结果发送给数据压缩装置14-2011,使数据压缩装置14-2011对目标运算结果进行压缩,得到压缩后的计算结果。
可选的,如图100所述的计算装置的结构示意图,上述计算装置还可以包括存储单元14-22,且该存储单元14-22与主处理电路14-201连接,基于这种应用,主处理电路14-201还用于将上述计算结果发送给存储单元14-22。
本实施例中,主处理电路14-201可以直接从存储单元14-22中获取原始数据,再对该原始数据做相应的处理。而主处理电路14-201在执行完相应的运算操作,得到最终的计算结果后,可以再将该计算结果发送给存储单元14-22进行存储,以便其它电路使用。需要说明的是,这里的计算结果可以是经过数据压缩装置14-2011压缩处理后的计算结果,可选的,也可以是未经过数据压缩装置14-2011压缩处理后的计算结果。
上述实施例所述的计算装置在执行机器学习运算的过程中,由于该计算装置包括本申请提出的数据压缩装置,而该数据压缩装置因其可以大大的缩减数据量,且压缩效率较高, 因此,使上述计算装置在执行机器学习运算,对数据进行传输和处理时,提高了数据的传输效率,从而提高了计算装置的运算速率。
15、数据解压装置及相关产品
图101为一个实施例提供的一种数据解压装置的示意图。该数据解压装置用于实现对其接收到的压缩数据进行解压缩处理操作。如图101所示,该数据解压装置包括:至少一条解压缩流水线(图中为15-01、15-02、15-03···),每条解压缩流水线包括至少两级流水解压数据单元(图中为15-10、15-11、15-12···);各级的流水解压数据单元包括:解码电路(图中为15-100、15-110、15-120···)、选择电路(图中为15-101、15-111、15-121···)以及旁路通道(图中为15-102、15-112、15-122··),其中,各级的流水解压数据单元中的解码电路的解码方式不同;解码电路的输出端与当前解压缩流水线上的同级流水解压数据单元中的选择电路的输入端连接;选择电路的输出端分别与所述当前解压缩流水线上的下一级流水解压数据单元中的旁路通道的一端和所述当前解压缩流水线上的下一级流水解压数据单元中的解码电路的输入端连接,旁路通道的另一端与所述当前解压缩流水线上的下一级流水解压数据单元中的选择电路的输入端连接;上述解压缩流水线用于实现对输入数据的多级解压缩处理;上述选择电路用于根据输入的控制信号确定输出给下一级流水解压数据单元中的解码电路的输入数据。
需要说明的是,图101所示的结构为一种可选的方案,其应用环境为:当数据解压装置同时接收到多个数据,并需要同时对该多个数据进行数据解压缩时,该数据解压装置可以包括多条并列的解压缩流水线,实现对输入的多个数据进行同时解压缩处理,且每条解压缩流水线上可以包括多级流水解压数据单元,每条解压缩流水线上的各级流水解压数据单元之间可以设置为先后级联关系,实现对数据的多级解压缩处理。本实施例中,多条并列的解压缩流水线上的多级流水解压数据单元可以用于对不同的输入数据进行同时解压缩处理操作,并在每条解压缩流水线的输出端输出解压缩处理后的结果,这种数据解压装置可以适用于并行传输数据的应用场景,可以提高并行处理数据的速度。
可选的,图101所示的数据解压装置中还可以只包括一条解压缩流水线,用于实现对输入的单个数据进行多级解压缩处理,这种数据解压装置可以适用于串行传输数据的应用场景。下述实施例将以这种数据解压装置的结构进行说明。
在上述的数据解压装置中,上述解码电路用于采用预设的解码方式对输入的数据进行解压缩处理,并输出解压缩处理后的数据。其中的解码方式可以包括多种解码方式,用户可以根据实际应用需求选取相应的解码方式,即相应的解码电路,实现对数据的解压缩处理。而在本实施例中,各级的流水解压数据单元中的解码电路的解码方式不同,因此,本申请提出的数据解压装置可以根据应用需求选择不同的解码电路对已经压缩后的数据进行解压缩处理。例如,图中的解码电路15-100、解码电路15-110、解码电路15-120等所采用的解码方式都不相同,用户可以根据实际需求,只选用解码电路15-100,或者只选用解码电路15-110,也可以同时选用解码电路15-100和解码电路15-110。
可选的,上述旁路通道是一种实现物理上直接连接的硬件线路,其可以是一种bypass,可选的,也可以是一种导通电路。本实施例中的旁路通道15-112直接连通上一级的选择电路15-101和本级的选择电路15-111,将上一级的选择电路15-101的输出数据传输给本级的选择电路15-111。
可选的,上述选择电路可以是一种2选1的选择器,其可以包括两个数据输入端口、一个控制信号输入端口以及一个数据输出端口,该选择器可以具体用于根据控制信号输入端口接收到的控制信号,选通两个数据输入端口中的一个端口,使该选择器的数据输出端口可以输出其中一个数据输入端口上接收到的数据。其中的控制信号可以是一种选通信号,用于对选择电路的两个数据输入端口进行选通操作。其可以是一种高低电平信号,例如,高电平信号1,和低电平信号0,假设,选择电路有1#端口和0#端口的两个数据输入端口,而1#端口与高电平信号1对应,0#端口与低电平信号0对应,则高电平信号1可以控制选择电路选通1#端口上的数据进行输出,低电平信号0可以控制选择电路选通0#端口上的数据进行输出。
在实际应用中,每级的流水解压数据单元均可以通过控制上述选择电路,选择是否采用本级的流水解压数据单元中的解码电路对上一级的选择电路输出的数据进行解压缩处理,若采用本级解压缩处理,则通过控制信号控制本级的流水解压数据单元中的选择电路输出的是经过解码电路解压缩后的数据,若不采用本级解压缩处理,则通过控制信号控制本级的流水解压数据单元中的选择电路输出的是旁路通道上传输的数据。
例如,以图101所示的数据解压装置中的一条解压缩流水线15-01的结构进行举例说明,图中的第一级的流水解压数据单元15-10中的解码电路15-100,采用相应的解码方式,对获取到的压缩数据进行解压缩处理,并将解压缩处理后的结果发送给本级的选择电路15-101的1#端口。同时,本级的选择电路15-101的0#端口可以接收压缩数据。当本级的选择电路15-101接收到一个用于选通1#端口的控制信号时,该选择电路15-101输出1#端口上的数据,即本级的解码电路15-100输出的解压缩数据;相应的,当选择电路15-101接收到一个用于选通0#端口的控制信号时,该选择电路15-101输出0#端口上的数据,即压缩数据;当第一级的流水解压数据单元15-10完成相应的操作后,会将本级输出的数据分别发送给第二级的流水解压数据单元15-11中的解码电路15-110和旁路通道15-112。以此类推,当需要哪个解码电路对数据进行解压缩处理时,通过控制信号控制该级的选择电路输出解码电路的输出数据即可。由上述过程可知,该数据解压装置最终输出的解压缩数据,可以是经过所有级的解码电路(例如,图中为15-100、15-110、15-120···)进行解压缩处理后输出的解压缩数据,也可以是经过部分级的解码电路(例如,图中为15-100和15-110)进行解压缩处理后输出的解压缩数据,还可以是不经过任何一级的解码电路输出的压缩数据。
可选的,当数据解压装置需要对接收到的多个压缩数据进行解压缩处理时,如图101所示,数据解压装置可以包括多组并列的流水解压数据单元,每组中的流水解压数据单元之间可以设置为先后级联关系。本实施例中,多组并列的流水解压数据单元可以用于对不 同的输入压缩数据进行同时解压缩处理操作,并输出解压缩处理后的结果,这种数据解压装置适用于并行传输数据的应用场景,可以提高并行处理数据的速度。
上述实施例提供的一种数据解压装置,可以实现对经过多级不同压缩方式压缩处理后的数据进行多级解压缩的处理,同时,各级流水解压数据单元中的选择电路可以通过设置不同的控制信号,选择是否输出各解码电路输出的数据,实现了对多个解码电路的组合,并采用组合后的解码电路对输入的数据进行解压缩处理,使本申请提出的数据解压装置可以根据压缩数据时采用的压缩方式,灵活配置相应的解码方式对输入的压缩数据进行解压缩处理,从而提高了解压准确性。
另外,上述数据解压装置因为包括了至少一条解压缩流水线,可以实现对多个输入的并行数据进行同时解压缩处理,因此,本申请提出的数据解压装置还可以进一步的提高并行处理数据的速度。
图102为一个实施例提供的一种数据解压装置的示意图。如图102所示,上述数据解压装置还包括控制单元15-13,该控制单元15-13与选择电路(图中为15-101、15-111、15-121···)的输入端连接。其中,控制单元15-13用于输出控制信号。
可选的,控制单元15-13可以是一种输出高低电平信号的控制器,具体的,控制单元15-13可以根据用户输入的指令生成相应的高低电平信号,再将该高低电平信号发送给与之连接的选择电路;可选的,控制单元15-13也可以接收其它电路发送的控制信号,并对接收到的控制信号进行译码处理,生成相应的高低电平信号,再将该高低电平信号发送给与之连接的选择电路。
本实施例中,数据解压装置可以通过控制单元15-13和各流水解压数据单元(图中为15-10、15-11、15-12···)中的选择电路(图中为15-101、15-111、15-121···),实现灵活配置不同的解码电路(图中为15-100、15-110、15-120···),使数据解压装置可以根据实际应用需求,选用合适的解码电路对输入的压缩数据进行解压缩处理,并得到解压缩数据。
示例性说明上述的配置过程,如图103所示,图中的数据解压装置包括三个流水解压数据单元,分别是流水解压数据单元a、流水解压数据单元b和流水解压数据单元c,且控制单元D分别与选择电路a、选择电路b、选择电路c连接。其中控制单元D发送高低电平的控制信号。当控制单元D向选择电路a发送高电平信号(1)、控制单元D向选择电路b发送低电平信号(0)、以及控制单元D向选择电路c发送高电平信号(1)时,则图中的解码电路a输出的数据被选择电路a选择输出,且解码电路c输出的数据被选择电路c选择输出,因此,图中的数据解压装置将采用解码电路a和解码电路c的组合对输入的压缩数据进行先后解压缩处理。由此可见,不同的控制信号对应不同的解码方式,用户可以根据实际应用需求,通过输入不同的控制信号,灵活配置解码电路,对输入的压缩数据进行解压缩处理。
图104为一个实施例提供的一种数据解压装置的示意图。如图104所示,该数据解压装置还包括存储单元15-14,该存储单元15-14分别与第一级流水解压数据单元中的解码电路15-100和选择电路15-101的输入端连接;且该存储单元15-14用于存储需要解压缩的 压缩数据。
其中,压缩数据可以预先存储在存储单元15-14中。存储单元15-14对应的硬件电路可以是一种寄存器,也可以是缓存,或者是内存RAM,本实施例对此不做限制。
本实施例中,第一级流水解压数据单元15-10中的解码电路15-100可以从存储单元15-14中获取到压缩数据,并同时采用相应的解码方式,对该压缩数据进行解压缩处理,得到解压缩处理后的数据,然后将解压缩处理后的数据发送到选择电路15-101的一个1#数据输入端口,另外,选择电路15-101的0#数据输入端口上接收到的数据可以为存储单元15-14中的压缩数据。在这种应用场景下,第一级流水解压数据单元15-10中的选择电路15-101的输出端口输出的数据根据控制信号的不同,可以是压缩数据,也可以是本级的解码电路15-100输出的解压缩处理后的数据。例如,当控制信号为高低电平信号时,可以选择的一种方案是:高电平信号控制选择电路15-101输出解压缩处理后的数据,低电平信号控制选择电路15-101输出压缩数据。
可选的,上述各流水解压数据单元中的解码电路的解码方式可以为游程解码、哈夫曼解码、LZ77解码以及JPEG解码中的至少一种。可选的,解码电路的解码方式也可以为其它能够对数据进行解压缩编码的方式。
可选的,若上述流水解压数据单元中的解码电路的解码方式为哈夫曼解码,则该流水解压数据单元中的解码电路可以包括:地址查表电路和解压缩数据查表电路;其中,地址查表电路的输入端与上一级流水解压数据单元中的选择电路的输出端连接,地址查表电路的输出端与解压缩数据查表电路的输入端连接;解压缩数据查表电路的输出端与同级流水解压数据单元中的选择电路的输入端连接。
其中,上述地址查表电路用于输出上一级流水解压数据单元中的选择电路输出的数据对应的地址。具体的,地址查表电路中存储有地址列表,且该地址列表中记录了多个地址。解压缩数据查表电路用于输出地址查表电路输出的地址对应的解压缩数据。具体的,解压缩数据查表电路中存储有解压缩数据列表,且该解压缩数据列表中记录了多个解压缩数据以及对应的多个地址。
本实施例中,当地址查表电路接收到上一级流水解压数据单元中的选择电路输出的数据时,可选的,地址查表电路可以根据接收该数据的顺序,依次从地址列表中查找对应的地址,并将查找到的地址输出给解压缩数据查表电路。当解压缩数据查表电路接收到上述地址时,可以查找解压缩数据列表,并根据该地址查找解压缩数据列表中与该地址对应的解压缩数据,并将查找到的解压缩数据输出给与之连接的选择电路。
在一个实施例中,本申请还提供了一种基于游程解码和哈夫曼解码电路的数据解压装置。该数据解压装置将游程解码方式和哈夫曼解码方式进行组合,实现对压缩数据进行解压缩处理。其中的压缩数据可以是先经过游程编码进行压缩处理,再经过哈夫曼编码进行压缩处理后的数据,可选的,该压缩数据也可以是只经过游程编码和哈夫曼编码中的任一种编码方式进行压缩处理后的数据。对于该数据解压装置的解压缩处理过程,下述实施例将结合图105所示的数据解压装置的结构示意图给出具体的解释说明。
示例性说明,如图105所示。该数据解压装置包括流水解压数据单元A和流水解压数据单元B,且流水解压数据单元A中的解码电路为哈夫曼解码电路,且该哈夫曼解码电路又包括地址查表电路和解压缩数据查表电路,而流水解压数据单元B中的解码电路为游程解码电路。本实施例中,当该数据解压装置需要对压缩数据(例如,该压缩数据为先经过游程编码,后经过哈夫曼编码后的压缩数据)进行解压缩处理时,该数据解压装置需要先后采用哈夫曼解码电路和游程解码电路对该压缩数据进行解压缩处理。具体过程为:图中的地址查表电路根据接收到的压缩数据查找地址列表上的地址,并输出该压缩数据对应的地址A给解压缩数据查表电路,解压缩数据查表电路根据地址A查找解压缩数据列表中与地址A对应的解压缩数据,得到解压缩数据A,并输出解压缩数据A给选择电路A,此时,当控制信号A为0时,选择电路A输出压缩数据,当控制信号A为1时,选择电路A输出解压缩数据A;然后,选择电路A再将输出的数据(压缩数据或解压缩数据A)分别发送给与之连接的游程解码电路和旁路通道B,游程解码电路将接收到的数据进行解压缩处理,得到解压缩数据B,并输出解压缩数据B给选择电路B,此时,当控制信号A为0或1,且控制信号B为1时,选择电路B输出解压缩数据B,当控制信号A为1,且控制信号B为0时,选择电路B输出解压缩数据A,当控制信号A为0,且控制信号B为0时,选择电路B输出压缩数据。综上,上述的数据解压装置可以通过设置控制信号A和控制信号B,实现对压缩数据的四种处理操作,一种是只采用哈夫曼解码电路对压缩数据进行解压缩处理操作,一种是只采用游程解码电路对压缩数据进行解压缩处理操作,一种是采用哈夫曼解码电路和游程解码电路的级联方式对压缩数据进行解压缩处理操作,一种是直接输出压缩数据,不对压缩数据做解压缩处理操作。
上述所有实施例中所述的数据解压装置,均可以应用在不同的场景中,例如,其可以应用在所有需要进行数据传输的系统中,也可以应用在所有需要进行数据处理的系统中。接下来介绍一种计算装置,该计算装置包含上述任一种实施例所述的数据解压装置。
图106为一个实施例提供的一种计算装置的示意图,该计算装置用于执行机器学习计算,如图106所示,该计算装置包括运算单元15-20以及控制单元15-21;其中的运算单元15-20包括:一个主处理电路15-201和多个从处理电路15-202;主处理电路15-201包括:数据解压装置15-2011,以及主运算电路15-2012;从处理电路15-202包括:数据解压装置15-2021,以及从运算电路15-2022;
上述控制单元15-21用于获取原始数据、运算指令以及控制指令,并将原始数据、运算指令和控制指令发送给主处理电路15-201;
上述主处理电路15-201用于对原始数据执行压缩处理,以及与多个从处理电路15-202之间传输数据和运算指令;
多个从处理电路15-202,用于对所述主处理电路15-201传输的数据进行解压缩处理,以及依据解压缩处理后的数据和运算指令并行执行中间运算,得到多个中间结果,并将所述多个中间结果发送给所述主处理电路15-201;
基于上述应用,主处理电路15-201还用于对所述多个中间结果进行解压缩处理,并对 解压缩处理后的多个中间结果执行后序处理,得到计算结果。
本实施例中,数据解压装置应用于运算单元15-20中,实现了运算单元15-20中的主处理电路15-201与从处理电路15-202之间的数据交互。具体的数据交互过程为:当主处理电路15-201从控制单元15-21中获取到原始数据,并对该原始数据进行压缩,同时将压缩后的压缩数据发送给从处理电路15-202时,从处理电路中的数据解压装置15-2021对该压缩数据进行解压缩处理,得到解压缩处理后的数据,再通过从运算电路15-2022对该解压缩处理后的数据进行运算(例如,乘积运算),得到中间结果,然后将该中间结果进行压缩,再发送给主处理电路15-201,使数据解压装置15-2021对该中间结果进行解压缩处理,并通过主运算电路15-2012对解压缩处理后的中间结果进行运算(例如,累加和运算或激活运算),得到计算结果。
可选的,如图107所述的计算装置的结构示意图,上述计算装置还可以包括存储单元15-22,且该存储单元15-22与主处理电路15-201连接,基于这种应用,主处理电路15-201还用于将上述计算结果发送给存储单元15-22。
本实施例中,主处理电路15-201可以直接从存储单元15-22中获取原始数据,再对该原始数据做相应的处理。而主处理电路15-201在执行完相应的运算操作,得到最终的计算结果后,可以再将该计算结果发送给存储单元15-22进行存储,以便其它电路使用。需要说明的是,这里的计算结果可以是经过数据解压装置15-2011解压缩处理后的计算结果,可选的,也可以是未经过数据解压装置15-2011解压缩处理后的计算结果。
上述实施例所述的计算装置在执行机器学习运算的过程中,由于该计算装置包括本申请提出的数据解压装置,而该数据解压装置因其可以灵活配置解码电路,使该数据解压装置的解压准确度较高。因此,进一步的使上述计算装置在执行机器学习运算,对数据进行传输和处理时,提高了数据的传输准确性。

Claims (10)

  1. 一种数据压缩方法,其特征在于,包括:
    根据待压缩数据的特征将所述待压缩数据划分为多个数据块;
    将所述待压缩数据的各个数据块进行压缩,得到与每一数据块对应的数据头和数据体,其中,每一所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包括压缩前对应的数据块的编码数据;
    根据得到的各个所述数据头得到压缩数据的头段,根据得到的各个所述数据体得到压缩数据的数据段,根据所述压缩数据的头段和所述压缩数据的数据段得到压缩数据。
  2. 根据权利要求1所述的方法,其特征在于,所述根据待压缩数据的特征将所述待压缩数据划分为多个数据块,包括:
    根据所述待压缩数据的数据总大小、数据的分布特征以及数据的重要程度中的一个或多个,将待压缩数据划分为多个数据块。
  3. 根据权利要求2所述的方法,其特征在于,所述数据的重要程度根据数据的出现频率、数据大小确定。
  4. 根据权利要求1所述的方法,其特征在于,所述根据待压缩数据的特征将所述待压缩数据划分为多个数据块,包括:
    根据预设值将待压缩数据划分为多个数据块。
  5. 根据权利要求1所述的方法,其特征在于,所述根据得到的各个所述数据头得到压缩数据的头段,根据得到的各个所述数据体得到压缩数据的数据段,根据所述压缩数据的头段和所述压缩数据的数据段得到压缩数据,包括:
    使用标识位标识各个所述数据块对应的数据头和数据体的对应关系;
    将各个包含标识位的所述数据头组合得到压缩数据的头段,将各个包含标识位的所述数据体组合得到压缩数据的数据段,将所述压缩数据的头段和所述压缩数据的数据段组合得到压缩数据。
  6. 根据权利要求1所述的方法,其特征在于,所述根据得到的各个所述数据头得到压缩数据的头段,根据得到的各个所述数据体得到压缩数据的数据段,根据所述压缩数据的头段和所述压缩数据的数据段得到压缩数据,包括:
    根据所述待压缩数据中各个数据块之间的位置关系得到对应的数据头的摆放格式;
    根据数据头的摆放格式摆放各个所述数据块对应的数据头得到压缩数据的头段,根据第一预设摆放格式摆放各个所述数据块对应的数据体得到压缩数据的数据段,将所述压缩数据的头段和所述压缩数据的数据段组合得到压缩数据。
  7. 根据权利要求6所述的方法,其特征在于,所述第一预设摆放格式包括:一维紧密、二维紧密或者任一维度的紧密。
  8. 一种编码电路,其特征在于,包括相互连接的数据分割电路和压缩解压电路,
    所述数据分割电路,用于根据待压缩数据的特征将所述待压缩数据划分为多个数据 块;
    压缩解压电路,用于将所述待压缩数据的各个数据块进行压缩,得到与每一数据块对应的数据头和数据体,其中,每一所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包括压缩前对应的数据块的编码数据;根据得到的各个所述数据头得到压缩数据的头段,根据得到的各个所述数据体得到压缩数据的数据段,根据所述压缩数据的头段和所述压缩数据的数据段得到压缩数据。
  9. 一种运算装置,其特征在于,包括:主运算单元和与所述主运算单元连接的多个从运算单元,所述主运算单元和所述多个从运算单元上设置有权利要求8所述编码电路,
    所述主运算单元,用于接收输入数据,并使用权利要求1-7任一项所述的数据压缩方法分块压缩所述输入数据得到压缩数据,并将得到的压缩数据传送至从运算单元;
    所述多个从运算单元,用于解压所述压缩数据得到解压数据,并使用所述解压数据进行乘法运算,得到中间结果,并将所述中间结果传送至主运算单元;
    所述主运算单元,还用于使用所述中间结果进行累法和激活运算,得到运算结果。
  10. 根据权利要求9所述的运算装置,其特征在于,还包括分支运算单元,所述主运算单元与一个或多个所述分支运算单元连接,所述分支运算单元与一个或多个所述从运算单元连接,
    所述分支运算单元,用于转发主运算单元与从运算单元之间的数据。
PCT/CN2019/121056 2018-12-07 2019-11-26 数据处理方法及装置 WO2020114283A1 (zh)

Applications Claiming Priority (56)

Application Number Priority Date Filing Date Title
CN201811496284.2 2018-12-07
CN201811496253.7A CN111290697B (zh) 2018-12-07 2018-12-07 数据压缩方法、编码电路和运算装置
CN201811497071.1A CN111294057A (zh) 2018-12-07 2018-12-07 数据压缩方法、编码电路和运算装置
CN201811496258.XA CN111290698B (zh) 2018-12-07 2018-12-07 数据存取方法、数据处理方法、数据存取电路和运算装置
CN201811497071.1 2018-12-07
CN201811496284.2A CN111294056B (zh) 2018-12-07 2018-12-07 数据解压方法和编码电路
CN201811496258.X 2018-12-07
CN201811496253.7 2018-12-07
CN201811580866.9 2018-12-24
CN201811581510.7 2018-12-24
CN201811580866.9A CN111353592B (zh) 2018-12-24 2018-12-24 数据处理方法、计算机系统及存储介质
CN201811581483.3 2018-12-24
CN201811581483.3A CN111353593A (zh) 2018-12-24 2018-12-24 数据处理方法、装置、处理器和存储介质
CN201811581510.7A CN111353594B (zh) 2018-12-24 2018-12-24 数据处理方法、装置、处理器和存储介质
CN201811609579.6 2018-12-27
CN201811607224.3 2018-12-27
CN201811607224.3A CN111384958B (zh) 2018-12-27 2018-12-27 数据压缩装置及相关产品
CN201811609579.6A CN111385580A (zh) 2018-12-27 2018-12-27 数据解压装置及相关产品
CN201811623548.6 2018-12-28
CN201811625704.2A CN111382853B (zh) 2018-12-28 2018-12-28 数据处理装置、方法、芯片及电子设备
CN201811628184.0A CN111384968B (zh) 2018-12-28 2018-12-28 数据压缩解压装置和数据解压方法
CN201811622492.2A CN111381874B (zh) 2018-12-28 2018-12-28 Compress指令译码方法、数据处理方法、译码器及数据处理装置
CN201811628245.3 2018-12-28
CN201811620288.7A CN111384969B (zh) 2018-12-28 2018-12-28 编码方法、处理器、编码装置及存储介质
CN201811625654.8 2018-12-28
CN201811623225.7 2018-12-28
CN201811622492.2 2018-12-28
CN201811620288.7 2018-12-28
CN201811628198.2A CN111384962B (zh) 2018-12-28 2018-12-28 数据压缩解压装置和数据压缩方法
CN201811628203.X 2018-12-28
CN201811625579.5 2018-12-28
CN201811623531.0 2018-12-28
CN201811625524.4A CN111384961B (zh) 2018-12-28 2018-12-28 数据压缩解压装置和数据压缩方法
CN201811628201.0A CN111384963B (zh) 2018-12-28 2018-12-28 数据压缩解压装置和数据解压方法
CN201811625442.XA CN111384966B (zh) 2018-12-28 2018-12-28 数据解码方法
CN201811628258.0A CN111382856B (zh) 2018-12-28 2018-12-28 数据处理装置、方法、芯片及电子设备
CN201811625704.2 2018-12-28
CN201811620302.3A CN111382849B (zh) 2018-12-28 2018-12-28 数据压缩方法、处理器、数据压缩装置及存储介质
CN201811625654.8A CN111384967B (zh) 2018-12-28 2018-12-28 数据编码方法
CN201811625000.5A CN111381878A (zh) 2018-12-28 2018-12-28 数据处理装置、方法、芯片及电子设备
CN201811628203.XA CN111382855B (zh) 2018-12-28 2018-12-28 数据处理装置、方法、芯片及电子设备
CN201811628258.0 2018-12-28
CN201811628201.0 2018-12-28
CN201811625000.5 2018-12-28
CN201811628245.3A CN111384965B (zh) 2018-12-28 2018-12-28 数据压缩解压装置和数据解压方法
CN201811625524.4 2018-12-28
CN201811628184.0 2018-12-28
CN201811625579.5A CN111382852B (zh) 2018-12-28 2018-12-28 数据处理装置、方法、芯片及电子设备
CN201811628206.3 2018-12-28
CN201811623225.7A CN111381876B (zh) 2018-12-28 2018-12-28 move指令译码方法、数据移动方法、译码器及数据存取装置
CN201811620302.3 2018-12-28
CN201811623548.6A CN111381877B (zh) 2018-12-28 2018-12-28 Decompress指令译码方法、数据处理方法、译码器及数据处理装置
CN201811625442.X 2018-12-28
CN201811623531.0A CN111384960B (zh) 2018-12-28 2018-12-28 解码方法、处理器、解码装置及存储介质
CN201811628206.3A CN111384964B (zh) 2018-12-28 2018-12-28 数据压缩解压装置和数据压缩方法
CN201811628198.2 2018-12-28

Publications (1)

Publication Number Publication Date
WO2020114283A1 true WO2020114283A1 (zh) 2020-06-11

Family

ID=70975175

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/121056 WO2020114283A1 (zh) 2018-12-07 2019-11-26 数据处理方法及装置

Country Status (1)

Country Link
WO (1) WO2020114283A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022038414A1 (en) * 2020-08-21 2022-02-24 Mobileye Vision Technologies Ltd. Systems and methods for decompressing neural network coefficients
US20230169148A1 (en) * 2021-11-30 2023-06-01 International Business Machines Corporation Providing reduced training data for training a machine learning model

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060171597A1 (en) * 2005-01-28 2006-08-03 Sony Computer Entertainment Inc. Method and apparatus for compressing a stream of video data
CN103384884A (zh) * 2012-12-11 2013-11-06 华为技术有限公司 一种文件压缩方法、文件解压缩方法、装置及服务器
CN104753540A (zh) * 2015-03-05 2015-07-01 华为技术有限公司 数据压缩方法、数据解压方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060171597A1 (en) * 2005-01-28 2006-08-03 Sony Computer Entertainment Inc. Method and apparatus for compressing a stream of video data
CN103384884A (zh) * 2012-12-11 2013-11-06 华为技术有限公司 一种文件压缩方法、文件解压缩方法、装置及服务器
CN104753540A (zh) * 2015-03-05 2015-07-01 华为技术有限公司 数据压缩方法、数据解压方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022038414A1 (en) * 2020-08-21 2022-02-24 Mobileye Vision Technologies Ltd. Systems and methods for decompressing neural network coefficients
US20230169148A1 (en) * 2021-11-30 2023-06-01 International Business Machines Corporation Providing reduced training data for training a machine learning model
US11853392B2 (en) * 2021-11-30 2023-12-26 International Business Machines Corporation Providing reduced training data for training a machine learning model

Similar Documents

Publication Publication Date Title
US10915450B2 (en) Methods and systems for padding data received by a state machine engine
US20210274225A1 (en) Methods and apparatuses for encoding and decoding a bytestream
CN104283567B (zh) 一种名称数据的压缩、解压缩方法及设备
WO2019041833A1 (zh) 一种用于深度神经网络的压缩装置
CN101771879B (zh) 基于cabac的并行归一化编码实现电路及编码方法
CN105120293A (zh) 基于cpu和gpu的图像协同解码方法及装置
WO2020114283A1 (zh) 数据处理方法及装置
US9479194B2 (en) Data compression apparatus and data decompression apparatus
CN114697654B (zh) 一种神经网络量化压缩方法及系统
CN114697672B (zh) 基于游程全零编码的神经网络量化压缩方法及系统
CN108886367A (zh) 用于压缩和解压缩数据的方法、设备和系统
JP4443165B2 (ja) 画像圧縮装置及び画像圧縮方法
US8406538B2 (en) Image processing apparatus and image processing method
CN105791832B (zh) 数据编码方法和数据解码方法及其系统
US11424761B2 (en) Multiple symbol decoder
KR20210053791A (ko) 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치
TWI745697B (zh) 用於神經網路參數的運算系統及其壓縮方法
CN108829930A (zh) 三维数字化工艺设计mbd模型的轻量化方法
CN103491375B (zh) 基于binDCT算法的JPEG压缩系统
CN113902097A (zh) 针对稀疏化cnn神经网络模型的游程编码加速器及方法
CN103152567A (zh) 一种任意阶数指数哥伦布编码器及其方法
CN206712982U (zh) 一种用于VLSI设计的Huffman编码系统
CN114697673B (zh) 基于流间数据混洗的神经网络量化压缩方法及系统
Balevic et al. Using arithmetic coding for reduction of resulting simulation data size on massively parallel GPGPUs
CN114640357B (zh) 数据编码方法、设备及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19894361

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 02/09/2021)

122 Ep: pct application non-entry in european phase

Ref document number: 19894361

Country of ref document: EP

Kind code of ref document: A1