Encoding Data Arrays
By reordering data bits to match the optimized format for the encoder, the graphics processing system addresses high storage and bandwidth challenges, improving encoding throughput and reducing resource demands.
Patent Information
- Application Number
- JP2021044836
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-03-18
- Filing Date
- 2021-03-18
- Publication Date
- 2025-01-20
- Estimated Expiration
- 2041-03-18
AI Technical Summary
Existing graphics processing systems face high storage and bandwidth requirements due to the need to handle uncompressed data, which is particularly challenging for mobile and handheld devices with limited resources.
Implementing a data encoder in the graphics processing system that reorders data bits to match the format optimized for the encoder, allowing efficient encoding and decoding of data packets, thereby reducing storage and transmission needs.
This approach enhances encoding throughput and reduces storage requirements by ensuring the encoding pipeline is fully utilized, leading to faster and more efficient data processing.
Smart Images

Figure 0007617778000001 
Figure 0007617778000002 
Figure 0007617778000003
Abstract
Description
[Background technology]
[0001] The technology described herein relates to data processing systems, such as graphics processing systems, and in particular to the operation of data encoders (circuits) for encoding data in such data processing systems.
[0002] Graphics processing operations may be performed by a graphics processor (graphics processing unit (GPU)), which typically processes data in an uncompressed form. When such operations produce a particular output (e.g., a frame), the output data may then be written to a (e.g., frame) buffer, for example in main memory, for storage before further processing (e.g., display of the frame).
[0003] Storing and accessing uncompressed data during use may impose relatively high storage and / or bandwidth requirements on the graphics processing device (or conversely, may lead to a loss of performance if such requirements are not met). This is particularly important for mobile and handheld devices that perform graphics processing, as such devices are inherently limited in their, e.g., storage, bandwidth, and power resources and capabilities.
[0004] To reduce the amount of data that needs to be transferred to and from memory during graphics processing operations, as well as the associated power costs of moving such data back and forth, the data may be compressed, for example, before being written to memory. This allows the data to be stored in a compressed (encoded) format. When the data is needed for further processing, the compressed data is then read from memory and decoded so that it is in a format suitable for further graphics processing operations.
[0005] Thus, to facilitate this operation, a suitable data encoder may be included in the graphics processing system, for example disposed between the graphics processor and a memory system in which the compressed data is stored. There are various examples of encoding schemes, including, for example, those described in U.S. Pat. No. 8,542,939 (Arm Limited), by which such graphics (or other) data may be suitably encoded. Thus, the data encoder may typically include one or more codecs, each operable, for example, to perform its (different) preferred encoding scheme. For example, one codec may be configured to perform a preferred variable rate compression scheme, and another codec configured to perform an alternative, for example fixed rate compression scheme.
[0006] Although examples in the context of graphics processing are given above, similar considerations also apply to various other examples of data processing where it is desirable to reduce the amount of data required to store and / or transmit a particular piece of information, and there are various other examples of situations in which such data encoding may be employed.
[0007] Nonetheless, applicants believe that there remains room for improvement to such encoding operations in data processing systems. [Brief description of the drawings]
[0008] Various embodiments of the technology described herein will now be described, by way of example only, with reference to the accompanying drawings, in which: [Figure 1] 1 illustrates an exemplary graphics processing system in which the techniques described herein may be implemented. [Diagram 2] 2 illustrates in greater detail components of an exemplary graphics processing system in which the techniques described herein may be implemented. [Diagram 3] 2 illustrates one embodiment of a data encoder in more detail. [Figure 4]2 illustrates a schematic diagram of an example encoding process according to one embodiment of the technology described herein. [Diagram 5] 10 illustrates a schematic diagram of an example of a decoding process according to an embodiment of the technology described herein. [Figure 6] 1 illustrates an example of a first data bit interleaving scheme according to one embodiment of the technology described herein. [Figure 7] 1 illustrates an example of a second data bit interleaving scheme according to one embodiment of the technology described herein. [Figure 8] 13 illustrates an example of a third data bit interleaving scheme according to one embodiment of the technology described herein. [Figure 9] 1 illustrates an example of a fourth data bit interleaving scheme according to one embodiment of the technology described herein.Like reference numerals are used for like elements and features in the drawings where appropriate. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0009] A first embodiment of the technology described herein includes a method of operating a data processing system when processing an array of data elements, comprising: The data processing system a data encoder operable to perform a first encoding scheme configured to process data sets arranged in a first data format, the first data format representing elements of an array of data elements using a first arrangement of bits, the data encoder operable to encode one or more data sets provided in the first data format as encoded data packets using the first encoding scheme; The method is: receiving a plurality of data sets in a second, different data format for encoding by the data encoder, the second data format representing elements of the array of data elements using a second, different arrangement of bits, each of the data sets received in the second data format thus including a respective sequence of bits representing an associated element of the array of data elements in the second format; reordering bits of at least some of the received data sets in the second data format to map bits of at least some of the received data sets in the second data format to a first constellation of bits associated with the first data format, thereby generating one or more data sets in the first data format from the received data sets in the second data format; The data encoder processes the generated data sets in the first data format using the first encoding scheme, thereby encoding the multiple data sets received in the second data format as one or more encoded data packets using the first encoding scheme.
[0010] A second embodiment of the technology described herein includes a data processing system for processing an array of data elements, comprising: The data processing system a data encoder configured to perform a first encoding scheme configured to process data sets arranged in a first data format, the first data format representing elements of an array of data elements using a first arrangement of bits, the data encoder configured to encode one or more data sets provided in the first data format as encoded data packets using the first encoding scheme; and a data conditioning circuit associated with the data encoder configured to: permute at least some bits of a plurality of data sets having a second different data format representing elements of the array of data elements using a second different arrangement of bits to map at least some bits of the plurality of data sets in the second data format to the first arrangement of bits associated with the first data format, thereby generating one or more data sets in the first data format from the plurality of data sets in the second data format; and provide the generated data sets in the first data format to the data encoder for processing.
[0011] The technology described herein relates to the operation of a data encoder within a data processing system configured to encode data into an encoded (e.g., in one embodiment, compressed) form, e.g., to reduce storage and / or transmission requirements of the data. Thus, data generated and / or required during a data processing operation may first be passed to a data encoder, which then performs the desired encoding of the data before the encoded data is then written out, e.g., to a memory system (which may be main memory or other storage (e.g., cache) in a memory hierarchy), transmitted to another processing unit, etc.
[0012] Specifically, in the techniques described herein, a data set received by a data encoder in one data format is "conditioned" into another, different data format (e.g., by appropriately reordering its bits), e.g., to facilitate improved encoding throughput, and in one embodiment, to encode the data more efficiently, as described further below.
[0013] In this regard, the techniques described herein recognize that a data encoder is typically configured to (optimally) process data in a first predefined format (or multiple predefined formats, e.g., the data encoder is operable in multiple different encoding modes). For example, a data encoder typically includes one or more codecs, e.g., each operable to perform (different) encoding schemes, each encoding scheme designed for use with a particular data format. Thus, a data encoder may (typically) be designed to optimally process data in data units ("data sets") having a particular size (number of bits) associated with a particular data format, depending on the encoding scheme being used.
[0014] Thus, in the techniques described herein, each data element in an array of data elements is associated with a data set that represents the data value of the data element, and this data may be stored in a number of different data formats, for example using different arrangements (and numbers) of bits to represent the data value of the data element in question.
[0015] For example, in one embodiment, the array of data elements represents image data, and thus the data elements may represent individual pixels in an image (although various other arrangements are possible, and the elements may generally represent any sub-unit of an image). In that case, in one embodiment, the data sets processed in the techniques described herein represent individual pixels, with each pixel having an associated data set including data representing (for example) a color value (e.g., RGB(A) component values, if the pixel data is stored in RGB(A) pixel format) of that pixel.
[0016] There are various different formats for storing pixel data. For example, a pixel can be represented using an "RXGYBZAW" pixel format, where X bits are used to represent the red (R) channel, Y bits are used to represent the green (G) channel, Z bits are used to represent the blue (B) channel, and W bits are used to represent the alpha (A, "transparency") channel. Typical examples of this pixel format include R8G8B8 pixel format (using 24 bits per pixel), R8G8B8A8 (using 32 bits per pixel), R5G6B5 (using 16 bits per pixel), etc.
[0017] Other pixel formats exist that may represent image data using different color spaces, including, for example, the YUV format.
[0018] Thus, a data encoder is pre-configured to (optimally) process data elements (e.g., pixels) of a particular format (e.g., size), and a data set representing data elements of this format (size) is the largest component that can pass through the encoding pipeline. For example, a processing channel of a data encoder may be designed such that it can (exactly) process a data set representing one data element (e.g., pixel) of that format (size) in a single cycle (such that a data encoder can process "N" data elements (e.g., pixels) of that format (size) if there are "N" parallel processing channels), thus determining the maximum encoding (e.g., pixel) throughput.
[0019] Thus, in an embodiment, the data encoder is configured to process "N" data elements of the first data format (i.e., the data set representing it) in a single processing cycle, which is the maximum number of data elements that can be processed in a single cycle (such that the encoding throughput is constrained by the number of data elements that can be processed in a single cycle).
[0020] Thus, applicants have recognized that the encoding throughput and performance for encoding a particular amount of data (e.g., a single memory page, cache line, etc.) may depend on the data format in which the data is received by the data encoder. For example, a 256-byte cache line in R5G6B5 format contains 128 pixels, but in R8G8B8A8 format it contains 64 pixels, and in R16G16B16A16 it contains only 32 pixels. Thus, if a data encoder has a maximum throughput of 16 pixels per cycle, it will take 8 cycles to encode a cache line in R5G6B5 format, whereas it will take 4 cycles to encode in R8G8B8A8 format, and only 2 cycles for R16G16B16A16.
[0021] However, data generated during use by the data processing system may be generated and provided for encoding by the data encoder in a second, different data format (e.g., if the data is generated using a different pixel format, as described above). For example, depending on the application generating the data to be encoded, the data set received for encoding by the encoder may be received in a different data format, for example having a different number and arrangement of bits that the encoder is designed to process.
[0022] For example, the data encoder may be designed to process pixels in R8G8B8A8 (32-bit) format, but the pixel data is received to be encoded in R5G6B5 (16-bit) format. As another example, the data encoder may be designed to process pixels in R8G8B8A8 format, but the pixel data is generated during use in a YUV pixel format. During use, data may be generated and provided to the data encoder in a range of different formats.
[0023] To operate effectively within a data processing system, a data encoder generally needs to be able to process all data (e.g., pixel) formats that may be generated by the data processing system during use. However, designing a data encoder that can efficiently process all possible data formats that may need to be encoded by the data processing system would increase the complexity (and therefore area) of the data encoder and thus may be impractical.
[0024] Applicants further recognize that while it may still be possible for the data encoder to process data in a format having a different (smaller) size than the size of the data elements the data encoder is configured to process, for example, by padding the data set with zeros, this may not be the most efficient use of encoding resources, as the encoding throughput is still constrained by the number of data elements (e.g., pixels) that can be processed in a single processing cycle, and if the size of the data elements does not match the data encoder, the encoding pipeline will therefore be underutilized.
[0025] Accordingly, embodiments of the techniques described herein use bit reordering, including bit interleaving, i.e., a method of rearranging pixel data by shuffling the bits of a received data packet to better match the bit arrangement used for the format for which the data encoder was designed, thereby providing a more efficient use of available encoding resources, e.g., by ensuring that the encoding pipeline is better, and in one embodiment, fully utilized.
[0026] Moreover, it is an advantage of the techniques described herein that this can be achieved by suitable permutation of bits (alone), for example, without requiring additional hardware complexity in a data encoder.
[0027] This also means that data can be encoded in a single common format (i.e., the data format for which the data encoder is designed) regardless of the data format in which it was originally generated / received, for example to provide a more consistent encoding process.
[0028] For example, if multiple data elements are received in a format that is smaller (i.e. uses fewer bits) than the size of the data elements that the encoder is configured to process (although each of the received data elements will typically be the same size as each other, this need not be the case and the techniques described herein could in principle also be used to process multiple different data formats simultaneously), then some or all of the bits of the data elements can be appropriately reshuffled to map the bits of the received data elements into whatever data format is arranged in the bit arrangement used for the target data format that the encoder is configured to process.
[0029] The multiple data elements may then be processed together by a data encoder, for example in a single processing step, as one or more "pseudo" data elements of the larger size that the encoder is configured to process.
[0030] For example, if an encoder is configured to process, for example, R8G8B8A8 (32-bit) pixels, such that, for example, each processing channel of the data encoder is operable to process one 32-bit pixel in a single processing cycle, but the input data is provided in the form of an R5G6B5 (16-bit) pixel by appropriate permutation of bits, it is possible to effectively combine two of the pixels defined in the R5G6B5 (16-bit) format together into one single pixel in the R8G8B8A8 (32-bit) representation. The two pixels in the R5G6B5 (16-bit) format can then be processed together in one processing cycle as a single "pseudo" pixel in the R8G8B8A8 (32-bit) format (thereby effectively halving the number of processing cycles required).
[0031] Corresponding techniques can be used to properly map arbitrary size pixels to a desired arrangement of pixels for processing by a data encoder.
[0032] Thus, in an embodiment, the second data format represents associated data elements (e.g., pixels) using fewer bits than are used to represent the corresponding elements in the first data format that the data encoder is configured to process. Thus, in one embodiment, the reordering includes combining, for example, two or more data sets in the second data format, representing two or more corresponding data elements, into one or more data sets in the first data format, and in one embodiment, into a single data set in the first data format. The data set(s) in the first data format generated by this reordering thereby effectively represent "pseudo" data elements in the first data format. Thus, the data sets representing the "pseudo" data elements in the first data format may be processed (are processed) by the data encoder using the first encoding scheme associated with the first format.
[0033] In the techniques described herein, a data set representing data elements in a second format is thereby "conditioned" into a data set representing "pseudo" data elements in a first format. It will be appreciated that while pseudo data elements are not generated in the first data format and therefore the arrangement of bits cannot directly represent the actual data value of a particular data element, a data set in the first data format representing the pseudo data elements instead includes data associated with the multiple data elements represented by the data set received in the second format, but this data is now arranged according to the first data format for processing reasons.
[0034] Once the data has been adjusted into a data set in the first data format, the data set in the first data format (i.e., representing pseudo data elements in the first data format) may then be processed accordingly, e.g., by a data encoder, e.g., using the first encoding scheme, in the same manner as would be done for data originally provided in the first data format. That is, it will be appreciated that following bit reordering to generate the pseudo data elements in the first data format, the pseudo data elements in the first data format may then, in one embodiment, be passed to an encoding pipeline to be encoded in exactly the same manner as the "real" data elements in the first data format.
[0035] In other words, the techniques described herein, rather than attempting to process the data in the format received by the encoder, which may be relatively inefficient, the techniques described herein further recognize that if the data to be encoded has a size smaller than the size of the data packets the encoder is configured to process, some or all of the received data sets can be combined into a larger data set that matches the size of the data elements the encoder is configured to process.
[0036] In this way, encoding throughput can be increased by matching the size of data elements provided to the data encoder with the maximum size of a data element that the data encoder can process in a single cycle, thereby ensuring that the encoding pipeline is better or more fully utilized by filling it with the largest data units it can process, such that fewer processing cycles are required to encode a particular amount of data (and thus increasing encoding speed).
[0037] Bit reordering can, in some cases, help reduce storage requirements. For example, by combining multiple data elements into a single larger "pseudo" data element, the total number of data elements can be reduced, thereby reducing the amount of data that needs to be stored. For example, if an encoding scheme generates associated data for each data element, for example in the form of a header, reducing the number of data elements reduces the number of associated headers, and therefore reduces storage requirements.
[0038] Bit reordering also opens up further possibilities for enhancing the encoding itself (i.e., to provide more efficient encoding, e.g. with higher compression ratios, as well as to improve encoding throughput in the manner described above).
[0039] For example, various examples of encoding schemes exist that attempt to improve the encoding by exploiting the (expected) properties of the data array, for example by taking advantage of the (expected) spatial locality of the data array (e.g., in the case of image data, regions of an image (e.g., pixels) that are close to each other may be expected to have a similar appearance, and this information may be used to facilitate the encoding).
[0040] For example, many encoding schemes encode data using difference values, so by grouping data values with similar values together so that the difference between the values can be smaller (or even zero), the amount of data needed to store the differences can be reduced.
[0041] One example of such an encoding scheme is that described in US Pat. No. 8,542,939 (Arm Limited), and in an embodiment the data encoder is operable to perform this type of encoding scheme.
[0042] In one embodiment, bit reordering is thus performed to further exploit such expected data similarities, e.g., in one embodiment based on data locality, e.g., such that bits representing data elements that are expected to have similar data values are rearranged in the set of data in the first data format such that the arrangement of the bits is arranged in a manner that facilitates encoding data values that are expected to have similar values, e.g., due to spatial locality.
[0043] Thus, in an embodiment, bit reordering is performed based on expected similarities in the data, e.g., such that data values that are expected to be similar are arranged in a manner that provides better compression.
[0044] It will be understood that the arrangement of bits that makes it "best" to encode may depend on the encoding scheme, however, in at least some embodiments, the reordering may involve placing bits together whose data values are expected to be similar (particularly if the encoding encodes differences between values) since this may make it easier to encode.
[0045] As discussed further below, various embodiments are contemplated in this regard.
[0046] For example, bit reordering may be performed to group the most significant bits together and / or to group at least the significant bits together. This may be done for different components of a single data element, or for components from different data elements, to group the most significant bits and / or at least the significant bits together.
[0047] For example, if the data elements represent individual pixels, e.g., pixels in an RGBA pixel format, it is expected that there will be less variation in data values between the most significant bits of different components than exists between the most significant bit and the least significant bit of a single component, and sorting can be performed based on this expected similarity.
[0048] Thus, bits from different components (e.g., RGBA components) of the same pixel may be interleaved so as to group the most significant bits together for each component (and / or to group the least significant bits of each component together).
[0049] As another example, bit reordering may include grouping together bits from the same component from different data elements. Again, less variation in the data values of a single component between different data elements may be expected than exists between the data values of different components for a single data element.
[0050] In an embodiment, a combination of these techniques may be performed, for example for different components from different data elements, such that bits may be interleaved with the most significant bits and grouped together.
[0051] As yet another example, bits can be reordered to move data values of data elements that are (physically) close to one another in an array of data elements together. For example, a use case for this is when, for example, pixels in YUV format are encoded in RGB format. It may then be desirable to encode, for example, a 2x2 block of pixels in YUV format as multiple RGB pixels. In that case, bits representing the YUV components may be reordered within the block to effectively group together RGB sets of data pixels that are physically closer to one another in the YUV array, as these would generally be expected to have more similar data values.
[0052] Of course, other arrangements are possible depending on the data being processed and / or the encoding scheme used.
[0053] Applicants also recognize that in some cases, the received data elements may be larger than the size of the data elements that the encoder was designed to process, in which case, rather than combining the data of multiple data elements into a larger data element for processing, the data set for one or more of the larger sized data elements(s) may be split into smaller sized data sets, e.g., representing multiple pseudo data elements of the target, which are then processed accordingly.
[0054] For example, if a data encoder is designed to process pixels in R8G8B8A8 (32-bit) format, but the data to be encoded is received in R16G16B16A16 (64-bit) format, the 64-bit pixel may be split into two smaller 32-bit "pseudo" pixels for processing in R8G8B8A8 format.
[0055] Thus, in an embodiment, the step of reordering bits of at least some of the received plurality of data sets in the second data format to map at least some of the bits of the received plurality of data sets in the second data format to the first arrangement of bits associated with the first data format comprises reordering bits of the one or more data sets received in the second data format into the plurality of data sets in the first data format, thereby generating the plurality of data sets in the first data format from the one or more data sets in the second data format.
[0056] Various optimizations are possible in this regard, for example in a manner similar to that described above, to take advantage of expected data similarity, for example, in one embodiment, when a data set received in the second data format is partitioned based on spatial locality within the data, this is done in a manner that takes advantage of expected data similarity, for example, such that the most significant bits or similar components are grouped together for processing.
[0057] For example, an R16G16B16A16 pixel may be split into multiple smaller pixels in such a way that all of the bits representing the red (R) components are grouped together, such as in a single set of data in the target data format. As another example, the most significant bits from each component may be placed into a single data set in the target data format and processed together.
[0058] As noted above, the array(s) of data elements in one embodiment represent a spatial distribution of values. That is, the array(s) of data elements in one embodiment represent a set of data values distributed in a spatial domain. As such, each data element may be represented by a set of data values of the data elements associated with a particular location in the spatial distribution. Thus, in an embodiment, the array(s) of data elements may correspond (respectively) to an array of data locations. In an embodiment, the array(s) of data elements or locations may correspond to all or a portion of a desired (e.g., image) output, such as a still image or a video frame (e.g., for display). That is, the array(s) of data elements in one embodiment include an array(s) of image data, i.e., data that can be used to generate an image for display. Thus, the array of data in an embodiment may correspond to a single still image to be encoded. In other embodiments, the array of data may correspond to a video frame of a stream of video frames to be encoded.
[0059] Although the embodiments relate to a data array or arrays including image and / or video data, other examples of data array arrangements are possible if desired, and in general the array or arrays of data elements may include any data array that may be suitably or desirably encoded in accordance with the techniques described herein.
[0060] Indeed, in any of the embodiments described herein, the array or arrays of data elements may take any desired suitable form.
[0061] For example, in general, there may be any desired and suitable correspondence between data elements or locations and the desired output. For example, each data element or location in the array(s) may correspond to a pixel or group of pixels in the desired output, although of course other configurations are possible.
[0062] The array or arrays of data elements may be of any desired suitable size or shape in terms of data elements or positions, but in one embodiment are rectangular (including square).
[0063] The data elements may also have any desired suitable format, for example to represent image data values (eg, color values).
[0064] In any of the embodiments described herein, the array(s) of data elements may be provided in any desired suitable manner. An embodiment may include generating (at least some or all of) the data elements of the array(s). An embodiment may also, or instead, include reading (at least some or all of) the data elements of the array(s), for example from a memory.
[0065] The data elements of the array(s) may be generated in any desired suitable manner. In an embodiment, the data elements of the array may be generated by a camera, such as a video camera. In other embodiments, generating the data elements of the array may include a rendering process. The rendering process may include deriving data values represented by the data elements of the array (e.g., by rasterizing primitives to generate graphic fragments and / or by rendering the graphic fragments). A graphics processor (graphics processing pipeline) may be used to generate the data elements of the array. The graphics processing pipeline may include any suitable desired processing stages that a graphics pipeline and processor may include, such as a vertex shader, a rasterization stage (rasterizer), a rendering stage (renderer), etc., to generate the data elements of the array.
[0066] Typically, data elements of a data array(s) may be encoded as "blocks" of data elements, e.g., on a block-by-block basis. For example, an array(s) of data elements may be divided into multiple blocks that are encoded on a block-by-block basis. Thus, any reference herein to processing or encoding a data array or data elements of a data array should be considered to include, and typically involve, processing or encoding blocks of such data elements. A "block" may generally include an N×M (N×N in one embodiment) array of data elements.
[0067] Thus, in one embodiment, when encoding an array of data elements, for example representing an entire frame (image), the array of data elements is divided into a number of blocks, and then each block is encoded to provide a corresponding set of encoded data packets. That is, each block of data elements in a larger array of data elements is, in one embodiment, encoded (compressed) as an encoded data packet (whereby the encoded data packet may thus typically include data representing multiple data elements, e.g., multiple data elements in a block of data elements). Thus, in one embodiment, the encoded data array includes blocks of data elements from the entire larger data array (which, in one embodiment, is repeated for each of the multiple blocks that make up the entire data array). The data packets for each of the blocks may then be suitably combined, in a particular order, into an encoded data stream that includes data for the entire array of data elements.
[0068] The data elements may, for example, comprise difference values compared to a reference frame or block, but more often the encoding scheme is used to encode raw data and the data elements may therefore represent (raw) pixel values.
[0069] The encoding may be performed in any suitable manner, depending on the data encoding circuitry and / or the configuration of the data to be encoded.
[0070] For example, as noted above, the data encoder may be operable to perform an encoding scheme such as that described in U.S. Patent No. 8,542,939 (Arm Limited), however, other encoding schemes may be used as desired.
[0071] The data encoder may be configured to determine how (and whether) to reorder the bits in the manner described above. For example, it may be pre-determined that any data received in a particular (second) data format should be reordered into a target (first) data format. Thus, the data encoder may include circuitry for ascertaining the data format of the received data for encoding and then selecting an appropriate reordering scheme based on the data format. Alternatively, the reordering scheme may be specified, for example, by a suitable driver.
[0072] In this regard, various arrangements are possible.
[0073] In the techniques described herein, data may be encoded and then stored and / or transmitted in its encoded form, e.g., to reduce memory and / or bandwidth requirements.
[0074] If the encoded data needs to be subsequently used, for example by a data processor, the encoded data therefore needs to be suitably decoded (e.g., restored) to reconstruct the original data (or at least a representation thereof, for example if lossy encoding is used).
[0075] Thus, the data processing system may also include a data decoder (which may be the same component as the data encoder or may be a separate component) configured to decode the encoded data packets.
[0076] In general, a decoder is operable to decode encoded data to recover the original source data (e.g., an image) that was encoded and then use (e.g., display) this data as desired. Thus, once the encoded data has been decoded, the decoder may then be configured to use the decoded data to display or output for display the resulting data.
[0077] Thus, in an embodiment, when the data that has been encoded as an encoded data packet is subsequently used in the manner of the techniques described herein, the encoded data is passed to a data decoder, where the encoded data packet is decoded accordingly.
[0078] The techniques described herein also extend to corresponding methods and apparatus for decoding data that encodes the data array itself (e.g., encoded according to the techniques described herein).
[0079] The decoding process essentially works inversely to the encoding of the techniques described herein.
[0080] For example, the decoder, in one embodiment, is configured to decode data in the first data format, e.g., by implementing a decoding scheme that reverses the first encoding scheme, and thus the decoder can (initially) decode encoded data packets into one or more decoded data sets in the first data format.
[0081] To reconstruct the original data, i.e., into the original second data format, the decoder, in one embodiment, is (similarly) associated with data conditioning circuitry similar to that described above with respect to the data encoder, but is configured to permute bits of the decoded data set in the first data format to map the bits to a second arrangement of bits associated with the second data format, thereby generating one or more data sets in the second data format (representing the original data in the encoded second data format) from the decoded data set in the first data format.
[0082] It should be understood that the reordering performed during decoding should be the inverse of the reordering performed during encoding.
[0083] To facilitate this operation, the decoder may be provided with information to identify the bit reordering performed during encoding. This information may be suitably included as part of or along with the encoded data packet, for example to enable the decoder to identify when decoding has occurred. For example, this information may be provided as metadata, e.g., in a suitable header, or as sideband information.
[0084] If such information is provided, the decoder can then use such information to identify that and how the bits have been permuted, and can then perform the appropriate unpermutation operation to reconstruct the original data array in the second data format.
[0085] However, other configurations are possible. For example, as described above, pre-determined reordering may be performed based on a fixed mapping, such that data received in a particular (second) data format is always reordered into the target (first) data format, and the decoder may be aware of such fixed mapping. Or, the reordering scheme may be specified, for example, by a suitable driver.
[0086] Another embodiment of the techniques described herein includes a method of operating a data processing system when processing an array of data elements, comprising: The data processing system a data decoder operable to perform a first decoding scheme configured to decode one or more encoded data packets into one or more data sets arranged in a first data format, the first data format representing elements of an array of data elements using a first arrangement of bits; The method is: receiving an encoded data packet for decoding by a data decoder; processing the encoded data packets using the first decoding scheme by a data decoder to thereby generate one or more decoded data sets in the first data format; reordering bits of the decoded data set in the first data format into a second, different arrangement of bits associated with a second, different data format, the second data format using the second arrangement of bits to represent elements of the array of data elements, thereby generating one or more data sets in the second data format from the data set decoded in the first data format; Includes.
[0087] A further embodiment of the techniques described herein includes a data processing system for processing an array of data elements, comprising: The data processing system a data decoder operable to perform a first decoding scheme configured to decode one or more encoded data packets into one or more data sets arranged in a first data format, the first data format representing elements of an array of data elements using a first arrangement of bits; a data conditioning circuit associated with the data decoder and configured to permute bits of at least some of the decoded data sets in a first data format from the data decoder to map the bits to a second, different arrangement of bits associated with a second, different data format, the second data format representing elements of the array of data elements using a second arrangement of bits, thereby generating one or more data sets in the second data format from the data sets in the first data format; Equipped with.
[0088] As will be appreciated from the above, the techniques described herein are implemented in one embodiment in a graphics processing system that includes a memory system, a cache system, and a graphics processor (graphics processing unit (GPU)). Data for performing graphics processing operations (e.g., generating rendering output (e.g., a displayed image)) is stored in a memory of the memory system in one embodiment.
[0089] The graphics processor, in one embodiment, is arranged to trigger the fetching of necessary data from memory and its storage in the cache system, in the manner described above. The graphics processor then, in one embodiment, reads the necessary data from the cache system to perform the graphics processing operation (e.g., generating a rendering output), e.g., in the manner described above. The output from the graphics processing operation (e.g., the rendering output), once generated in this manner, is then written back to the memory system via the cache system and, in one embodiment, is displayed on a display of an electronic device, such as, for example, a phone, tablet, television, computer screen, etc.
[0090] A graphics processor (graphics processing unit) can, and in one embodiment does, implement and execute a graphics processing pipeline that performs graphics processing operations.
[0091] The graphics processing pipeline may include any one or more, and in one embodiment all, of the processing stages that a graphics processing pipeline may typically include, a primitive setup stage, a rasterizer, a renderer, etc. (in one embodiment in the form of a programmable fragment shader (shader core)).
[0092] In one embodiment, the graphics processor (processing pipeline) also includes one or more programmable shading stages, such as one or more, and in one embodiment all of, a vertex shading stage, a hull shader, a tessellation stage (e.g., where tessellation is performed by executing a shader program), a region (evaluation) shading stage (shader), a geometry shading stage (shader), and a fragment shader.
[0093] The graphics processor (processing pipeline) may also include any other suitable desired processing stages, which may include a depth (or depth and stencil) tester(s), a blender, a tile buffer or buffers, a write unit, etc.
[0094] The techniques described herein may be used in and with any suitable desired graphics processing system and processor.
[0095] As an example, the techniques described herein may be used in conjunction with a tile renderer (tile-based graphics processing system). Thus, in one embodiment, the graphics processor (processing pipeline) is a tile-based graphics processor (processing pipeline). Of course, other configurations are possible.
[0096] In general, however, the encoding / decoding processes described herein in any embodiment may be performed within the context of any desired suitable data processing system.
[0097] In one embodiment, various functions of the techniques described herein are performed on a single data (e.g., image) processing platform that provides and / or uses an array of data elements.
[0098] For example, the encoding and decoding devices described above may be provided as part of an image and / or video processing system, which typically includes a camera, such as a digital camera, a mobile phone, or a tablet.
[0099] The data processing apparatus described herein in any embodiment may comprise, be or form part of a system on a chip (SoC).
[0100] In one embodiment, the data processing system and / or processor also comprises and / or communicates with one or more memories and / or memory devices that store data and / or software for performing the processes described herein. The data processing system and / or processor may also communicate with a host microprocessor and / or with a display to display images based on data generated by the processor (processing pipeline).
[0101] A memory referred to herein may be any desired suitable memory of or for a data processing apparatus. The memory may be external to the data processing apparatus, for example a video processor and / or a system on chip (SoC). The memory may be, for example, a main system memory.
[0102] The encoding / decoding device of the techniques described herein may be part of an overall data processing system that includes, for example, a host (e.g., central) processor. The host processor may, for example, execute applications that require data processing by the encoding / decoding device. The host processor may send appropriate commands and data to the encoding / decoding device to control it to perform data encoding / decoding operations and to generate and / or use outputs required by applications executing on the host processor. To facilitate this, the host processor may execute drivers for the encoding / decoding device.
[0103] The techniques described herein may be implemented in any suitable system, such as a suitably configured microprocessor-based system, hi some embodiments, the techniques described herein are implemented in a computer and / or microprocessor-based system.
[0104] The various functions of the techniques described herein may be performed in any desired suitable manner. For example, the functions of the techniques described herein may be implemented in hardware or software, as desired. Thus, for example, the various functional elements and stages of the techniques described herein may comprise suitable processor(s), controller(s), functional units, circuits / circuitry, processing logic, microprocessor configurations, etc., which are operable to perform various functions, etc., such as appropriately dedicated hardware elements (processing circuits / circuitry) and / or programmable hardware elements (processing circuits / circuitry) that can be programmed to operate in a desired manner.
[0105] It should also be noted herein that, as will be appreciated by those skilled in the art, various functions, etc. of the techniques described herein may be replicated and / or performed in parallel on a given processor. Similarly, various processing stages may share processing circuitry / circuitry, etc., if desired.
[0106] Additionally, any one or more or all of the processing stages of the techniques described herein may be embodied as processing stage circuits / circuitry, e.g., in the form of one or more fixed function units (hardware) (processing circuits / circuitry) and / or in the form of programmable processing circuits / circuitry that can be programmed to perform desired operations. Similarly, any one or more of the processing stages and processing stage circuits / circuitry of the techniques described herein may be provided as separate circuit elements to any one or more of the other processing stages or processing stage circuits / circuitry, and / or any one or more or all of the processing stages and processing stage circuits / circuitry may be formed at least in part from a shared processing circuit / circuitry.
[0107] It will also be understood by those skilled in the art that all of the described embodiments of the technology described herein may include any one or more or all of the features described herein, as appropriate.
[0108] The methods according to the techniques described herein can be implemented at least in part using software, e.g. computer programs. Viewed from further embodiments, the techniques described herein therefore provide computer software specifically adapted to perform the methods described herein when installed on a data processor, computer program elements comprising computer software code portions for performing the methods described herein when the program elements are executed on a data processor, and computer programs comprising code adapted to perform all steps of the method(s) described herein when the program is executed on a data processing system. The data processing system may be a microprocessor, a programmable FPGA (Field Programmable Gate Array), etc.
[0109] The techniques described herein also extend to a computer software carrier containing software which, when used to operate a graphics processor, a renderer or other system comprising a data processor, causes the data processor, the renderer or other system in conjunction with the data processor, the renderer or system to perform the method steps of the techniques described herein. Such a computer software carrier may be a physical storage medium such as a ROM chip, a CD ROM, a RAM, a flash memory or a disk, or it may be a signal such as an electronic signal via wire, an optical signal or a wireless signal such as a satellite.
[0110] It will be further appreciated that not all steps of the methods of the techniques described herein need be performed by computer software, and thus from a broader embodiment, the techniques described herein provide computer software, and such software installed on a computer software carrier for performing at least one of the steps of the methods presented herein.
[0111] Thus, the technology described herein may be suitably embodied as a computer program product for use with a computer system. Such implementation may include a set of computer readable instructions fixed on a tangible, non-transitory medium, such as a computer readable medium, for example, a diskette, a CD ROM, a ROM, a RAM, a flash memory, or a hard disk. It may also include a set of computer readable instructions that can be transmitted to a computer system via a modem or other interface device, over a tangible medium, including but not limited to optical or analog communication lines, or intangibly using wireless techniques, including but not limited to microwave, infrared, or other transmission techniques. The set of computer readable instructions embodies all or part of the functionality previously described herein.
[0112] Those skilled in the art will appreciate that such computer readable instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Furthermore, such instructions can be stored using any present or future memory technology, including but not limited to semiconductor, magnetic, or optical, or transmitted using any present or future communications technology, including but not limited to optical, infrared, or microwave. It is contemplated that such computer program products may be distributed as a removable medium with accompanying printed or electronic documentation, e.g., off-the-shelf software, preloaded into a computer system, for example, on a system ROM or fixed disk, or distributed over a network, e.g., the Internet or World Wide Web, from a server or electronic bulletin board.
[0113] Several embodiments of the techniques described herein will now be described in the context of a graphics processing system.
[0114] FIG. 1 illustrates an exemplary graphics processing system in which the techniques and embodiments described herein may be implemented.
[0115] The exemplary graphics processing system shown in Figure 1 comprises a host processor including a central processing unit (CPU) 1, a graphics processor (graphics processing unit (GPU)) 10, a video codec 2, a display controller 3, and a memory controller 4. As shown in Figure 1, these units communicate via an interconnect 5 and have access to an off-chip memory system (memory) 6. In this system, the GPU 10, video codec 2, and / or CPU 1 generate frames (images) to be displayed, and then the display controller 3 provides the frames to a display 7 for display.
[0116] In using the system, an application 8, such as a game running on a host processor (CPU) 1, requires the display of frames, for example, on a display 7. To do this, the application 8 sends appropriate commands and data to a driver 9 for a graphics processing unit 10 running on the CPU 1. The driver 9 then generates the appropriate commands and data to cause the graphics processing unit 10 to render the appropriate frames for display and store those frames in an appropriate frame buffer, for example in main memory 6. The display controller 3 then reads those frames into a display buffer, from which it reads the data for display on the display panel of the display 7.
[0117] As part of this processing, graphics processor 10 reads data such as textures, geometry to be rendered, etc. from memory 6, processes the data, and then returns the data to memory 6 (e.g. in the form of processed textures and / or frames to be displayed) where it can be further read from memory, for example by display controller 3, for display on display 7, e.g. as described above. Data therefore needs to be transferred to and from graphics processor 10 (in particular to and from the processing cores of graphics processor 10) and to and from memory 6.
[0118] To facilitate this, and to reduce the amount of data that needs to be transferred to and from memory during graphics processing operations, the data may be stored in memory in a compressed form.
[0119] Since the graphics processor 10 has to operate on (and generates) data in uncompressed form, this therefore means that data stored in memory in compressed form must first be decompressed before being processed by the graphics processor 10. Correspondingly, data generated by the graphics processor 10 must first be compressed before being (finally) stored in the memory 6.
[0120] The present embodiment is particularly directed to improved techniques for performing such compression and decompression of data between memory 6 and graphics processor 10.
[0121] 2 illustrates, generally and in more detail, the elements of a graphics processing system relevant to the operation of the present embodiment, in particular the transfer of data in compressed form between memory system 6 and graphics processor 10. As will be appreciated by those skilled in the art, there may be other elements, such as systems, not shown in FIG.
[0122] 2 shows a memory system 6 and a graphics processor 10. As shown in FIG. 2, between the memory system 6 and the graphics processor 10 is a cache system 20 operable to transfer data from the memory system 6 to the graphics processor 10 (specifically, to a processing core (shader core) 25 of the graphics processor 10) and, conversely, to transfer data generated by the processing core 25 of the graphics processor 10 back to the memory 6.
[0123] As shown in FIG. 2, in this embodiment, data is transferred from memory system 6 to cache system 20 and then from cache system 20 to shader core 25 and vice versa.
[0124] To facilitate processing of compressed data from memory system 6 (and to return compressed data to memory system 6) when required, cache system 20 is associated with a data encoder / decoder 22, which in this embodiment is located between cache system 20 and memory system 6 (although of course other configurations are possible), as shown in FIG.
[0125] As discussed further below, the data encoder 22 is operable to decompress data received from the memory system 6 and store the data in uncompressed form within the cache system 20 for use by the graphics processor's shader cores 25, and conversely, to compress data that is removed from the cache system 20 before writing the data back to the memory system 6. The operation of the data encoder 22 is described in more detail below.
[0126] Figure 3 illustrates one embodiment of the data encoder / decoder 22 in this embodiment. As shown in Figure 3, the data encoder (and each data encoder) includes a respective read unit (circuit) 60 and write unit (circuit) 61 operable to read data from and write data to the cache system and memory system, respectively. The data encoder / decoder 22 also includes a suitable control unit (circuit) 62 that receives read and write requests from the shader cores and cache controller, and controls the data encoder / decoder 22 to respond appropriately to those requests as appropriate.
[0127] As shown in FIG. 3, the data encoder / decoder 22 also includes one or more codecs 63, 64 and a set of data buffers 65 for temporarily storing data in the data encoder / decoder 22 while the data is being processed and / or while the data is waiting to be written to a cache or memory system.
[0128] The data encoder / decoder 22 may, for example, include any desired number of codecs, each operable to perform a different encoding (compression) scheme. For example, one codec may be configured to perform a suitable variable rate compression scheme, while another codec is configured to perform an alternative, e.g., fixed rate compression scheme.
[0129] Of course, other configurations are possible.
[0130] Codecs are typically each designed to operate with a particular pixel format or set of pixel formats. For example, the data encoder / decoder 22 may be designed to be able to process "N" pixels represented using a particular pixel format during a processing cycle.
[0131] However, in use, data may need to be encoded by the data encoder / decoder 22 in a variety of different pixel formats that may not match the pixel format or formats for which the data encoder / decoder 22 is designed.
[0132] For example, during memory page compression, fixed size memory pages (eg, 256 bytes) of different pixel formats may need to be compressed.
[0133] It will be appreciated that the number of pixels in a memory page block will vary depending on the pixel format.
[0134] For example, if a 256 byte memory page is represented using an R5G6B5 pixel format, the memory page will contain 128 pixels, whereas if an R8G8B8A8 pixel format is used, a 256 byte memory page will only contain 64 pixels.
[0135] It may be desirable or necessary to encode memory page blocks in a unified compressed format (i.e., in whatever format the data encoder is designed to operate in). However, if data must be directly encoded in a compressed format different from its pixel format, this may result in less efficient compression.
[0136] The present embodiment relates to how pixel data is processed by the data encoder / decoder 22. Specifically, encoding efficiency is improved by interleaving component bits when encoding a pixel buffer using an encoding scheme configured to compress the pixels in a particular compression format that differs from the pixel format in which the data is generated / received for encoding.
[0137] 4 illustrates an encoding operation according to this embodiment. In the illustrated encoding operation, input pixel data is received in a particular pixel format (step 40). The input pixel data is then passed to suitable data conditioning circuitry which buffers the input pixel data and reorders the bits of the received pixels (step 42) to generate an interleaved pixel data set in a different pixel format that matches the pixel format that the data encoder / decoder 22 is configured to process (step 43).
[0138] An interleave control is performed (step 41) to control how the bits are permuted. For example, this permutation may be pre-determined based on the pixel format of the input pixel data and the target pixel format. In that case, the permutation may be performed according to a fixed mapping. However, of course, other configurations are possible. For example, the permutation may be configured by software.
[0139] The data encoder / decoder 22 then encodes the interleaved pixels (step 44) and outputs compressed pixel data based on the encoding (step 45).
[0140] 5 then illustrates the decoding operation according to this embodiment. The decoding operation is essentially the inverse of the encoding operation described above.
[0141] Thus, the compressed data is input to the data encoder / decoder 22 (step 50) and then decoded (step 51) to generate a pixel data set in an interleaved pixel format (step 52). The interleaved pixel data is then buffered and de-interleaved (step 54) to generate pixel data for output in the original pixel format (step 55).
[0142] The reordering performed during decoding is the reverse of that performed during encoding. To facilitate this, information identifying the reordering (i.e., the interleave control in step 41 of Figure 4) may be provided to the data encoder / decoder 22 along with the compressed data that enables the data encoder / decoder 22 to determine how to reorder the bits to reconstruct the data in the desired original data format (step 53).
[0143] By reordering the pixels in this manner, it is possible to match the input pixels to a pixel size that the data encoder / decoder 22 is optimized for processing, thus increasing encoding throughput.
[0144] For example, the encoding itself may be made more efficient by exploiting expected data similarity based on data locality within the input pixel data.
[0145] In this regard, various examples are envisioned, as shown in FIGS.
[0146] Fig. 6 shows an example of a first bit interleaving method in which bits from different components of the same pixel are interleaved to provide better compression. Specifically, as shown in Fig. 6, the bits of a pixel received in R5G6B5 pixel format (where the components of blue channels B[0], ..., B[4] are included in bit positions 0, ..., 4, respectively, the components of green channels G[0], ..., G[5] are included in bit positions 5, ..., 10, respectively, and the components of red channels R[0], ..., R[4] are included in bit positions 11, ..., 15, respectively) are reordered in such a manner that the most significant bits of the various components (RGB) of the pixel received in R5G6B5 pixel format are grouped together (in Fig. 6, the most significant bits G[5], R[4], G[4], B[4] are included in bit positions 11-15, etc., respectively) on the basis that it is expected that the most significant bits have similar data values and this may facilitate compression, and are reordered into a single component R16 pixel format.
[0147] FIG. 7 shows an example of another bit interleaving method in which bits from the same component of different pixels are interleaved. For example, in FIG. 7, two R4G4B4A4 pixels are combined together into one R8G8B8A8 pixel for encoding. To facilitate encoding, the same component bits (of the RGB components) of two different pixels are grouped together, such that all of the red component bits of the different pixels are grouped together. (Note that for simplicity, FIG. 7 only shows bit positions 8-31.)
[0148] Again, there may be expected data similarities between different components, which may help provide better compression.
[0149] In both the examples of Figures 6 and 7, two or more smaller pixels are combined together to obtain a larger pixel for processing. However, it may be the case that the input pixel format is larger than the desired encoded pixel format. In that case, the larger pixel may be split into multiple smaller pixels of the target size, as shown in Figure 8.
[0150] For example, if an input pixel in R16G16B16A16 format is desired to be encoded in R8G8B8A8 format, then each 16-bit component of the input pixel may be split into two 8-bit component portions, as shown in Figure 8. Again, this is preferably done such that the most significant bits are grouped together, similar to the example of Figure 6.
[0151] Figure 9 shows another example where input pixels in YUV format are rearranged into RGB format for encoding. For example, Figure 9 shows an example of two 2x2 input blocks in YUV420 format to be encoded as R4G4B4 pixels. In this example, the order of the 2x2 blocks is such that components Y0Y1Y2Y3 share a chroma value U0V0, whereas components Y4Y5Y6Y7 share a chroma value U1V1. Then, the two 2x2 blocks are shuffled inside so that the Y0Y1Y2Y3 component maps to the red channel of the R4G4B4 pixel, while the Y4Y5Y6Y7 map to the blue channel.
[0152] This helps to ensure that the original pixels in YUV format (i.e. the first pixel with components Y0Y1Y2Y3 and the second pixel with components Y4Y5Y6Y7) are mapped to the same RGB components which may be expected to provide better compression (this is because the Y0Y1Y2Y3 component values mapped to the R channel have similar data values and are therefore expected to compress well).
[0153] Although the present embodiment has been described above in the context of encoding data as it is being written to a memory system from a cache system in order to store the data in the memory system in a compressed format, it will be understood that the techniques described herein may be used in any other instances in which it is desirable to compress data, for example, as it is being written to storage or transmitted.
[0154] Furthermore, although the present embodiment has been described above with specific reference to a graphics processor in a graphics processing system, Applicants have recognised that use of a data encoder in the manner of the present embodiment described above is useful not only in the context of a graphics processor, but in other data processing configurations and systems.
[0155] The foregoing detailed description has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the technology described herein to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. The described embodiments have been selected to best explain the principles of the technology described herein and its practical application, so that those skilled in the art can best utilize the technology described herein with various modifications suited to the particular applications contemplated in the various embodiments. It is intended that the scope be defined by the claims appended hereto.
Claims
1. 1. A method of operating a data processing system when processing an array of data elements, comprising the steps of: The data processing system a data encoder operable to perform a first encoding scheme configured to process data sets arranged in a first data format, the first data format representing elements of an array of data elements using a first arrangement of bits, the data encoder therefore operable to encode one or more data sets provided in the first data format as encoded data packets using the first encoding scheme; The method receiving a plurality of data sets in different second data formats for encoding by the data encoder, the second data formats using second different arrangements of bits to represent elements of an array of data elements, each of the received data sets in the second data format thus including a respective sequence of bits for representing an associated element of the array of data elements in the second data format; and reordering bits of at least some of the received data sets in the second data format to map the bits of at least some of the received data sets in the second data format to a first arrangement of the bits associated with the first data format, thereby generating one or more data sets in the first data format from the received data sets in the second data format; the data encoder processes the generated data sets in the first data format using the first encoding scheme, thereby encoding the received multiple data sets in the second data format as one or more encoded data packets associated with the first data format; Reordering bits of at least some of the received data sets in the second data format to map the bits of at least some of the received data sets in the second data format to a first arrangement of the bits associated with the first data format, combining together multiple data sets in the second data format representing multiple data elements into a single data set for processing as a single data element in the first data format; and splitting a data set in the second data format representing a data element into multiple data sets for processing as multiple data elements in the first data format; The method includes at least one of the following:
2. 2. The method of claim 1, wherein reordering bits of at least some of the received data sets in the second data format to map the bits of at least some of the received data sets in the second data format to a first arrangement of the bits associated with the first data format comprises combining together multiple data sets in the second data format representing multiple data elements into a single data set in the first data format for processing as a single data element.
3. 2. The method of claim 1 , wherein reordering bits of at least some of the received data sets in the second data format to the mapping of the bits of at least some of the received data sets in the second data format to a first arrangement of the bits associated with the first data format comprises splitting a data set in the second data format representing a data element into multiple data sets in the first data format for processing as multiple data elements.
4. 4. The method of claim 1, wherein the reordering of the bits of at least some of the received data sets in the second data format is performed based on expected data similarity.
5. The reordering of the bits may involve rearranging most significant bits for components of a single data element and / or components of different data elements in the first data format. The method of claim 4 , wherein the method is performed to align the generated data sets together.
6. 6. The method of claim 4 or 5, wherein the reordering of the bits is performed so as to place bits representing particular components of one or more data elements together in the generated data set in the first data format.
7. The method of claim 1 , wherein the array of data elements represents a spatial distribution of values.
8. The method of claim 7 , wherein the array of data elements represents image data, and the data sets represent individual pixels within the array of image data.
9. 9. The method of claim 1, wherein information is provided to identify the permutations of the bits used to generate the one or more data sets in the first data format processed by the data encoder for use in decoding the encoded data packets.
10. 1. A method of operating a data processing system when processing an array of data elements, comprising the steps of: the data processing system includes a data decoder operable to perform a first decoding scheme configured to decode one or more encoded data packets into one or more data sets arranged in a first data format, the first data format using a first arrangement of bits to represent elements of an array of data elements; The method receiving an encoded data packet for decoding by the data decoder; the data decoder processes the encoded data packets using the first decoding scheme to thereby generate one or more decoded data sets in the first data format; and rearranging bits of the decoded data set in the first data format into a second, different arrangement of bits associated with a different, second data format, the second data format using the second arrangement of bits to represent elements of an array of data elements, thereby generating one or more data sets in the second data format from the decoded data set in the first data format; Including, Reordering the bits of the decoded data set in the first data format into the second different arrangement of bits associated with the second different data format includes: combining together multiple data sets in the first data format that are decoded as multiple data elements into a single data set representing a single data element in the second data format; and splitting a data set in the first data format that is decoded as a data element into multiple data sets representing multiple data elements in the second data format; The method includes at least one of the following:
11. 1. A data processing system for processing an array of data elements, comprising: The data processing system includes: a data encoder configured to perform a first encoding scheme configured to process data sets arranged in a first data format, the first data format using a first arrangement of bits to represent elements of an array of data elements, the data encoder therefore being configured to encode one or more data sets provided in the first data format as encoded data packets using the first encoding scheme; a data conditioning circuit associated with the data encoder, the data conditioning circuit being configured to permute bits of at least some of a plurality of data sets having a different second data format, the data sets representing elements of an array of data elements representing a spatial distribution of values, using a second different arrangement of bits to permute bits of at least some of the plurality of data sets in the second data format a data conditioning circuit configured to map at least some of the bits to a first arrangement of the bits associated with the first data format, thereby generating one or more data sets in the first data format from the plurality of data sets in the second data format, and provide the generated data sets in the first data format to the data encoder for processing; Equipped with The data adjustment circuit includes: combining together multiple data sets in the second data format representing multiple data elements into a single data set in the first data format for processing as a single data element; and Splitting a data set in the second data format representing a single data element into multiple data sets in the first data format for processing as multiple data elements.
13. A data processing system configured to perform at least one of the following:
12. 12. The system of claim 11, wherein the reordering of the bits of the at least some of the received data sets in the second data format by the data conditioning circuitry is performed based on expected data similarity.
13. The system of claim 12 , wherein the reordering of the bits by the data conditioning circuitry is performed to place together most significant bits for components of a single data element and / or components of different data elements.
14. 14. A system according to claim 12 or 13, wherein the reordering of the bits by the data conditioning circuitry is performed so as to place together bits which represent particular components of one or more data elements.
15. 15. The system of claim 11, wherein the array of data elements represents a spatial distribution of values.
16. 16. The system of claim 15, wherein the array of data elements represents image data, and the data sets represent individual pixels within the array of image data.
17. 17. The system of claim 11, wherein information is provided to identify the permutations of the bits used to generate the one or more data sets in the first data format processed by the data encoder for use in decoding the encoded data packets.
18. 1. A data processing system for processing an array of data elements, comprising: The data processing system includes: a data decoder operable to perform a first decoding scheme configured to decode one or more encoded data packets into one or more data sets arranged in a first data format, the first data format using a first arrangement of bits to represent elements of an array of data elements; a data conditioning circuit associated with the data decoder and configured to permute bits of at least some of the decoded data sets in the first data format from the data decoder to map the bits to a second, different, constellation of bits associated with a different, second data format, the second data format using the second constellation of bits to map a spatial distribution of values; a data conditioning circuit for generating one or more data sets in the second data format from the data set in the first data format; and Equipped with The data adjustment circuit includes: combining together multiple data sets in the first data format that are decoded as multiple data elements into a single data set representing a single data element in the second data format; and splitting a data set in the first data format that is decoded as a data element into multiple data sets representing multiple data elements in the second data format; 13. A data processing system configured to perform at least one of the following:
19. A non-transitory computer readable storage medium storing software code which, when executed on a data processor, performs the method of any one of claims 1 to 10 to operate a data processing system when processing an array of data elements.
20. A method of operating a data processing system when processing an array of data elements, comprising the steps of: The data processing system a data encoder operable to perform a first encoding scheme configured to process data sets arranged in a first data format, the first data format representing elements of an array of data elements using a first arrangement of bits, the data encoder therefore operable to encode one or more data sets provided in the first data format as encoded data packets using the first encoding scheme; The method receiving a plurality of data sets in different second data formats for encoding by the data encoder, the second data formats using second different arrangements of bits to represent elements of an array of data elements, each of the received data sets in the second data format thus including a respective sequence of bits for representing an associated element of the array of data elements in the second data format; and reordering bits of at least some of the received data sets in the second data format to map the bits of at least some of the received data sets in the second data format to a first arrangement of the bits associated with the first data format, thereby generating one or more data sets in the first data format from the received data sets in the second data format; the data encoder processes the generated data sets in the first data format using the first encoding scheme, thereby encoding the received multiple data sets in the second data format as one or more encoded data packets associated with the first data format; wherein the reordering of the bits is performed such as to place most significant bits for components of a single data element and / or components of different data elements together in the generated data set in the first data format.
21. A method of operating a data processing system when processing an array of data elements, comprising the steps of: The data processing system a data encoder operable to perform a first encoding scheme configured to process data sets arranged in a first data format, the first data format representing elements of an array of data elements using a first arrangement of bits, the data encoder therefore operable to encode one or more data sets provided in the first data format as encoded data packets using the first encoding scheme; The method receiving a plurality of data sets in different second data formats for encoding by the data encoder, the second data formats using second different arrangements of bits to represent elements of an array of data elements, each of the received data sets in the second data format thus including a respective sequence of bits for representing an associated element of the array of data elements in the second data format; and reordering bits of at least some of the received data sets in the second data format to map the bits of at least some of the received data sets in the second data format to a first arrangement of the bits associated with the first data format, thereby generating one or more data sets in the first data format from the received data sets in the second data format; the data encoder processes the generated data sets in the first data format using the first encoding scheme, thereby encoding the received multiple data sets in the second data format as one or more encoded data packets associated with the first data format; The method of claim 1, wherein the reordering of the bits is performed such as to place bits representing particular components of a plurality of data elements together in the generated data set in the first data format.
Citation Information
Patent Citations
Apparatus, method and program for data processing
JP2004194155A
Image compression method,image compression device, image expanding device, and program
JP2005295307A