WO2011121136A1 - Dispositif de traitement permettant d'extraire un ensemble de données d'un mot de données, circuit électronique et procédé d'extraction de données correspondants - Google Patents

Dispositif de traitement permettant d'extraire un ensemble de données d'un mot de données, circuit électronique et procédé d'extraction de données correspondants Download PDF

Info

Publication number
WO2011121136A1
WO2011121136A1 PCT/EP2011/055217 EP2011055217W WO2011121136A1 WO 2011121136 A1 WO2011121136 A1 WO 2011121136A1 EP 2011055217 W EP2011055217 W EP 2011055217W WO 2011121136 A1 WO2011121136 A1 WO 2011121136A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
word
register
size
shift means
Prior art date
Application number
PCT/EP2011/055217
Other languages
English (en)
Inventor
Nicolas Siret
Jean-François Nezan
Mickaël RAULET
Aimad Rathay
Original Assignee
Lead Tech Design
Institut National Des Sciences Appliquees De Rennes
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lead Tech Design, Institut National Des Sciences Appliquees De Rennes filed Critical Lead Tech Design
Publication of WO2011121136A1 publication Critical patent/WO2011121136A1/fr

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Definitions

  • Processing device for extracting a data set from a data word, electronic circuit and corresponding data extraction method
  • the field of the invention is that of the parsing of data flow ("parsing" in English).
  • Syntactic processing involves extracting a set of data from a data stream.
  • the invention applies in particular, but not exclusively, to the extraction of data from a multimedia bitstream, and finds particular applications in the field of multimedia content decoding.
  • Such an extraction makes it possible, for example, to extract a set (or block) of characteristic data ("features" in English) from a video stream.
  • Characteristic data are data that define the content of the video carried by the stream.
  • the size of the characteristic data block to be extracted and the position of this block in the stream is defined by the standard according to which the stream is compressed.
  • multimedia content means a bit stream of audio, video, images, communication, etc.
  • a digital image typically comprises rectangular blocks of pixels (also called macroblocks), these blocks being divided into rows and columns. Each rectangular block has a width of w pixels and a height of h pixels.
  • the images are cut into either 16x16 pixel blocks or 16x32 block (MBAFF mode).
  • the coding or decoding of an image consists of treating all of its blocks, sequentially line by line, from left to right on the same line, and from top to bottom of a line to another.
  • the invention applies in particular, but not exclusively, to the decoding of a video sequence formed of successive images conforming to a compression / decompression standard such as, for example, the MPEG-4 Video standard, defined in the document "ISO / IEC FDIS 23002-4: 2009, Information technology - MPEG video technologies - Part 4" standardization.
  • a compression / decompression standard such as, for example, the MPEG-4 Video standard, defined in the document "ISO / IEC FDIS 23002-4: 2009, Information technology - MPEG video technologies - Part 4" standardization.
  • the present invention can be applied in all cases where there is a context for extracting characteristic data from a data stream.
  • a first type of known architecture is based on the combined use of a processor and a coprocessor.
  • the processor has a role of master processing unit, it is responsible for the overall control of the application, as well as a number of decision and calculation tasks.
  • the coprocessor has a role of slave processing unit, it is used by the processor for the most complex calculations.
  • This first type of known architecture has the disadvantage of being bulky and expensive.
  • a second type of known architecture relies on the use of a specialized integrated circuit for a specific application (or "ASIC" for "Application- Specifîc Integrated Circuit”).
  • An ASIC has the advantage of being optimized for a given application.
  • this second known architecture is powerful, it has the disadvantage of being non-scalable. Thus, in the case where an ASIC has been developed to extract characteristic data from a flow conforming to a given standard, if that standard evolves, then ⁇ ASIC might no longer be suitable.
  • a third type of known architecture relies on the use of a digital signal processor (or “DSP” for "Digital Signal Processor”).
  • DSP digital signal processor
  • a DSP has the advantage of being programmable.
  • energy consumption is significant compared to the first and second architectures mentioned above.
  • ASIP Application Specifies Integrated Processor
  • ASIPs are processors using a programmable gate array (or “FPGA” for “Field Programmable Gate Array” in English) or an ASIC, and offer both reduced energy consumption and possibilities. devolution. To date, it has been found that there is no ASIP dedicated to extracting characteristic data from a data stream.
  • the processor 1 comprises a controller 10 in charge of managing all the decoding processes.
  • the controller 10 decodes an instruction stored in a RAM 11 to identify, from data stored in a data memory ("Data Memory”), a set of data to be processed by an arithmetic logic unit 12 (or “ALU”). for "Arithmetic Logic Unit”).
  • the controller 10 controls a memory access manager 14 ("Memory Access") to recover in the data memory 15 the set of data to be processed.
  • This set of data to be processed includes characteristic data to extract.
  • the memory access manager 14 transfers the data to be processed into first and second registers included in a block of registers 13.
  • the ALU 12 processes the data contained in the first and second registers according to processing instructions stored in the memory. RAM 11.
  • the ALU 12 extracts the characteristic data from the data to be processed.
  • ALU 12 stores the extracted characteristic data in the first register.
  • the memory access manager 14 transfers the characteristic data of the first register to the data memory 15. The characteristic data are then decoded.
  • FIG. 2 presents the steps of an exemplary algorithm for decoding a video stream implemented by the processor 1 (described with reference to FIG. 1). After an initialization step (100), for each image carried by the video stream, the processor performs steps 101 to 104 described below.
  • the processor performs a first extraction step (101) from the video stream of a first set of characteristic data ("start-code”) for defining the processing to be performed on the image.
  • the processor then performs a second extraction step (102) from the video stream of a second set of characteristic data ("Video Object Layer”) in particular to define the size and type of coding of the image in progress. treatment.
  • the processor performs a third extraction step (103) from the video stream of a third set of characteristic data ("Video Object Plane”) for defining the macroblocks of the image.
  • the processor decodes the image from the extracted characteristic data.
  • FIG. 4 illustrates an example of evolution of the contents of the first and second registers of the processor.
  • Such an extraction algorithm is programmed in software. This algorithm is stored, for example, in a RAM external to the processor.
  • each register is 32 bits. Of course, in other architectures these registers may have different sizes.
  • the first register 131 comprises a first byte 31, a second byte 32, a third byte 33 and a fourth byte 34.
  • the second register 132 comprises a first byte 35, a second byte 36 , a third byte 37 and a fourth byte 38.
  • the first 131 and second 132 registers are empty (all bits are set to "0").
  • step 301 the memory access manager 14 transfers first data D1 to be processed (previously identified by the controller 10) from the data memory 15 to the fourth byte 34 of the first register 131.
  • step 302 a 24-bit left shift is made of the contents of the first register 131. In this way, the first byte 31 of the first register 131 comprises the first data D1 to be processed.
  • step 303 the memory access manager 14 transfers second data D2 to be processed (previously identified by the controller 10) from the data memory 15 to the fourth byte 38 of the second register 132.
  • step 304 a 16-bit left shift is made of the contents of the second register 132.
  • the second byte 36 of the second register 132 includes the second data D2 to be processed.
  • step 305 the ALU 12 performs an OR logic operation between the first 131 and second 132 registers.
  • the result of this logic operation is stored in the first register 131.
  • the first byte 31 of the first register 131 comprises the first data D1 to be processed
  • the second byte 32 of the first register 131 comprises the second data. D2 to treat.
  • step 306 the memory access manager 14 transfers third data D3 to be processed (previously identified by the controller 10) from the data memory 15 to the fourth byte 38 of the second register 132.
  • step 307 an 8-bit left shift is made of the contents of the second register 132.
  • the third byte 37 of the second register 132 includes the third data D3 to be processed.
  • step 308 the ALU 12 performs an OR logic operation between the first 131 and second 132 registers.
  • the result of this logic operation is stored in the first register 131.
  • the first byte 31 of the first register 131 comprises the first data D1 to be processed
  • the second byte 32 of the first register 131 comprises the second data D2. to be processed
  • the third byte 33 of the first register 131 comprises the third data D3 to be processed.
  • step 309 the memory access manager 14 transfers fourth data D4 to be processed (previously identified by the controller 10) from the data memory 15 to the fourth byte 38 of the second register 132.
  • step 310 the ALU 12 performs an OR logic operation between the first 131 and second 132 registers.
  • the result of this logical operation is stored in the first register 131.
  • the first byte 31 of the first register 131 comprises the first data D1 to be processed
  • the second byte 32 of the first register 131 comprises the second data D2 to be processed
  • the third byte 33 of the first first register 131 comprises the third data D3 to be processed
  • the fourth byte 34 of the first register 131 comprises the fourth data D4 to be processed.
  • the characteristic data to be extracted are the data D3.
  • step 311 all the bits of the second register 132 are initialized with the value "1".
  • step 312 the processor obtains the position of the characteristic data block to be extracted from the data word D1, D2, D3 and D4 (contained in the first register 131). Then, at this same step 312, the content of the second register 132 is shifted to the right by a number of bit (s) determined as a function of the position of the characteristic data block to be extracted.
  • the position of the characteristic data block to be extracted is defined by the standard according to which the stream is compressed. In the remainder of the description, it is assumed by way of example that the beginning of the data block to be extracted is 16 bits from the beginning of the data word (that is to say from the beginning of the first word). byte of the first register 131). In the example illustrated in FIG.
  • step 313 the ALU 12 performs an "AND" type logical operation between the first 131 and second 132 registers.
  • the result of this logic operation is stored in the first register 131.
  • the bits of the first 31 and second 32 bytes of the first register 131 are at "0”
  • the third byte 33 of the first register 131 comprises the third data D3
  • the fourth byte 34 of the first register 131 comprises the fourth data D4.
  • the processor obtains the size of the characteristic data block to be extracted.
  • the content of the first register 131 is shifted to the right by a number of bit (s) determined as a function of the size of the characteristic data block.
  • the size of the characteristic data block is defined by the standard according to which the stream is compressed. In the remainder of the description, it is assumed by way of example that the size of the characteristic data block is 8 bits.
  • the content of the first register 131 is shifted 8 bits to the right. In this way, the bits of the first 31, second 32 and third 33 bytes of the first register 131 are at "0", and the fourth byte 34 the first register 131 comprises the third data D3.
  • These third data D3 constitute the result of the extraction algorithm.
  • step 315 the memory access manager 14 transfers the extracted third data D3 to a storage area provided for this purpose in the data memory 15.
  • the major disadvantage related to the execution by a processor of a software-programmed extraction algorithm lies in the fact that this execution consumes a large number of clock cycles (and therefore increased power consumption). This is in particular due to the fact that the memory access manager 14 performs a large number of transfer operations and that the ALU 12 performs a large number of offsets and logical operations.
  • the invention in at least one embodiment, is intended in particular to overcome these various disadvantages of the state of the art.
  • an objective is to provide a technique for extracting data from a data stream, in a minimum of cycles, while minimizing energy consumption.
  • At least one embodiment of the invention also aims to provide such a technique that is simple to implement and inexpensive.
  • Another objective of at least one embodiment of the invention is to provide such a technique that is suitable for extracting characteristic data from a multimedia stream.
  • a complementary objective of at least one embodiment of the invention is to provide such a technique for optimizing the decoding performance of an MPEG-4 decoder.
  • a processing device for extracting a set of data from a data word, the device comprising an arithmetic and logical unit.
  • the arithmetic and logic unit is such that it comprises extraction means making it possible to process an extraction instruction whose operands are: said data word, position information relating to the position of the data set in said data word and information of size relative to the size of the data set, said extracting means comprising:
  • said extracting means for obtaining the data set by shifting the data word, based on said position and size information.
  • a new hardware block (extraction means) dedicated to the extraction of data.
  • This new hardware block gives the arithmetic and logic unit the ability to process a new instruction whose operands are: the data word, position information and size information.
  • the arithmetic and logic unit upon receipt of this instruction, is capable of synchronously (rather than sequentially) receiving the data word, the position information and the size information.
  • the arithmetic and logic unit is therefore able to extract the dataset quickly and efficiently, since it has all the parameters (position and size) relating to the offset operations to be performed on the data word.
  • the extraction means comprise:
  • first shift means o having two inputs, respectively receiving the data word and said position information
  • bits of the intermediate word which results from the shift operation performed at the first offset level (first shift means) are organized in a predetermined orientation before being transmitted to the second shift level (second shift means). . Imposing a bit orientation from the first offset level makes the data extraction reliable.
  • said predetermined orientation is of the high order word type at the head.
  • the extraction means comprise a local register having:
  • the device comprises an operand register comprising:
  • said data word comes from a multimedia stream.
  • the processing device is suitable for extracting characteristic data from a multimedia stream, for example an MPEG-4 video stream.
  • said device is a processor.
  • an electronic circuit comprising the aforementioned treatment device.
  • a method of extraction by a processing device of a set of data of a data word comprising an arithmetic and logical unit.
  • the arithmetic and logic unit is such that it performs steps of: obtaining an extraction instruction whose operands are: said data word, a position information relating to the position of the data set in said word data and information of size relative to the size of the data set;
  • said step of obtaining the data set comprises steps of: obtaining an intermediate word, wherein the data is arranged in a predetermined orientation, by shifting said data word by a given offset value from said position information and in a predetermined direction according to said orientation;
  • FIG. 2 commented in relation to the prior art, presents a flowchart of an algorithm for decoding a video stream, implemented by the processor of FIG. 1;
  • FIG. 3 commented in relation to the prior art, presents a flowchart of a data extraction algorithm implemented by the processor of FIG. 1;
  • FIG. 4 commented on in relation with the prior art, illustrates an example of the evolution of register contents included in the processor of FIG. 1;
  • FIG. 5 illustrates an exemplary architecture of a processor according to a particular embodiment of the invention
  • FIG. 6 represents a flowchart of a data extraction algorithm according to a particular embodiment of the invention, implemented by the processor of FIG. 5;
  • FIG. 7 illustrates an example of the evolution of register contents included in the processor of FIG. 5;
  • FIG. 8 illustrates an example of a data memory according to one particular embodiment of the invention
  • FIG. 9 illustrates the number of clock cycles consumed by a processor according to a particular embodiment of the invention.
  • FIG. 10 illustrates the number of images displayed in one second by a processor according to a particular embodiment of the invention.
  • the invention relates to a processing device (referenced 500 in FIG. 5) dedicated to the extraction of data from a data word. It is proposed to modify the architecture of an arithmetic and logic unit (referenced 50 in FIG. 5), by adding an instruction dedicated to the extraction of data. This dedicated instruction is implemented in hardware form. It relies on the use of offset means and a local register implemented in the arithmetic and logical unit. This architecture allows the arithmetic and logical unit to avoid performing a large number of offsets and logical operations. Note that this modified arithmetic and logic unit can replace the arithmetic and logic unit (referenced 12 in FIG. 1) of a conventional processor, such as that described in FIG. 1. In this case, the processor becomes an ASIP processor. dedicated to extracting data. In addition, the invention proposes to modify the memory architecture of the processor to allow non-aligned access to the memory. In this way, the word containing the data to be extracted can be read in a minimum of clock cycles.
  • a processor also called processing device
  • FIG. 1 A processor (also called processing device) according to a particular embodiment of the invention will now be described with reference to FIG.
  • the processor 500 comprises:
  • this first register 501 in charge, at first, storing data to be processed (data word) containing the characteristic data to be extracted and, secondly, storing the extracted characteristic data.
  • this first register 501 corresponds to the first register 131 of FIG. 1;
  • this second register 502 in charge of storing position and size information relating to the characteristic data to be extracted.
  • this second register 502 corresponds to the second register 132 of Figure 1;
  • this third register 51 which is used to load the size information into the second register 502.
  • this third register 51 is included in the register block 13 of FIG. 1; an arithmetic and logic unit 50 comprising extraction means 504 according to a particular embodiment of the invention.
  • the extraction means 504 comprise:
  • the operands of this extraction statement are: the data word, the position information, and the size information.
  • the extraction means 504 are activated on receipt of this extraction instruction.
  • the extraction means 504 make it possible to obtain the characteristic data, by shifting the data to be processed, as a function of the position and size information obtained.
  • the extraction means 504 comprise:
  • first shift means 53 in charge of performing a shift to the left of the contents of the first register 501, a number of bit (s) determined according to the position of the characteristic data block to be extracted; a local register 52 in charge of receiving the set of data (bits) resulting from the shift made by the first shift means 53; second shift means 54 in charge of performing a right shift of the contents of the local register 52, a number of bit (s) determined according to the size of the characteristic data block to extract.
  • the position and size information of the characteristic data block to be extracted are stored in the second register 502.
  • the first shift means 53 are configured such that, after having left-shifted the contents of the first register 501, they transfer the set of resulting bits. this shift towards the local register 52, ensuring that the bits of the set are ordered according to an orientation of the high-endian word type (or "big-endian" in English).
  • the size of the local register 52 is determined according to the size of the data to be processed (itself a function of the architecture of the processor).
  • FIG. 6 represents a flowchart of a data extraction algorithm according to a particular embodiment of the invention, implemented by the processor 500 comprising the arithmetic and logic unit (ALU) 50.
  • FIG. example of evolution of the contents of the first 501, second 502 and third 51 registers and the local register 52.
  • the first 501, second 502 and third 51 registers are empty (all bits are set to "0").
  • step 601 the processor obtains the position of the characteristic data block to be extracted.
  • the "position” data is defined by the standard according to which the stream is compressed. In a particular embodiment, this data "position” is loaded into a data memory during initialization (600). The processor obtains the data "position” by reading it in the data memory. For example, it is assumed that the data "position” is coded on 4 bits. Then, at this same step 601, this data "position” is transferred in the fourth byte 524 of the second register 502.
  • step 602 a left shift of 4 bits of the contents of the second register 502 is carried out.
  • step 603 the processor obtains the size of the characteristic data block to extract.
  • the "size” data is defined by the standard according to which the stream is compressed. In a particular embodiment, this "size” data is loaded in a data memory during initialization (600). The processor obtains the data “size” by reading it in the data memory. By way of example, it is assumed that the data "size” is coded on 4 bits. Then, at this same step 603, this data "size” is stored in the fourth byte 534 of the third register 51.
  • step 604 the ALU 50 performs an OR logic operation between the second 502 and third 51 registers.
  • the result of this logic operation is stored in the second register 502.
  • the fourth byte 524 of the second register 502 includes the "position" (4-bit) and "size" (4-bit) data.
  • a memory access manager (not shown) transfers first D 1, second D 2, third D 3 and fourth D 4 data to be processed (previously identified by a controller (not shown)) from a data memory ( numbered 80 in Figure 8) to the first 511, second 512, third 513 and fourth 514 bytes of the first register 501, respectively.
  • the first register 501 contains a data word D1, D2, D3 and D4. This data word includes characteristic data to extract. Note that the memory access manager, the controller and the data memory are included in the processor 500.
  • the characteristic data to be extracted are the data D3.
  • the invention is of course not limited to this particular case.
  • the characteristic data to be extracted are formed by part of the data D3 and D4.
  • step 606 the first 53 and second 54 shift means are activated.
  • Steps 610 to 613 described below relate to the activation step 606.
  • steps 610 to 613 are performed in a single clock cycle.
  • the first byte 511 of the first register 501 comprises the third data D3 and the second byte.
  • 512 of the first register 501 includes the fourth data D4, and the bits of the third 513 and fourth 514 bytes of the first register 501 have a value "0".
  • step 611 the first shift means 53 transfers to the local register 52 the set of bits resulting from the shift made in step 610, ensuring that the bits of the set are ordered in an orientation of the "big-endian" type.
  • the first byte 541 of the local register 52 comprises the third data D3 and the second byte 542 of the local register 52 comprises the fourth data D4.
  • step 613 the second shift means 54 transfers to the first register 501 the set of bits resulting from the shift performed in step 612.
  • step 614 the memory access manager (not shown) of the processor 500 transfers the extracted characteristic data D3 to a storage area provided for this purpose in the data memory (numbered 80 in FIG. 500 processor.
  • the invention is not limited to the embodiment mentioned above.
  • the implementation of a "little-endian" orientation can also be considered.
  • the skilled person can modify the first shift means 53 so that they rearrange the flow data in a "big endian” orientation in the local register 52, and the second shift means 54 so that they rearrange the extraction result in a "little endian” orientation after the shift.
  • the memory architecture of the processor has been modified to allow non-aligned accesses.
  • first memory the data memory is divided into two memories, hereinafter referred to as first memory and second memory.
  • the address to be read at each cycle is calculated in each of the first and second memories. These addresses are defined by the three least significant bits of the desired address. Then, the output word is constructed based on the output data of the first and second memories.
  • the data of the first memory and the second memory are read, and the output word is composed of the last three output bytes of the first memory and the first output byte of the second memory.
  • the data of the first memory (address N + 1) and of the second memory (address N) are read, and the output word is composed of the last three bytes of output of the first memory and the first output byte of the second memory;
  • the write memory is modified so that it only writes 8-bit data (bytes).
  • each sub-memory is modified.
  • a sub-memory is selected when it receives a "write” write command and a "byte enable” command.
  • a sub-memory is selected when a logic signal "1" arrives on the common line of "write” and a logic signal "1" arrives on its line of "byte enable".
  • FIG. 8 illustrates an example of a data memory 80 according to one particular embodiment of the invention.
  • the memory access manager (not shown) of the processor 500 is able to read the word containing the data to be extracted. using conventional aligned access.
  • the memory access manager is able to read the data D1, D2, D3 and D4 (forming the word) at the address line 0x03, into a clock cycle.
  • the memory access manager (not shown) of the processor 500 is also able to read the word containing the data to be extracted using a non-aligned access.
  • the memory access manager is able to read the data D1 and D2 at the address line 0x06, and the data D3 and D4 at the address line 0x07, in a clock cycle.
  • This modified memory architecture contributes to the improvement of the performances of the processor (in terms of consumption of clock cycles), since it makes it possible to consume only one clock cycle to extract data. stored in two different address lines, whereas a conventional memory architecture (aligned access) would consume two.
  • FIGS. 9 and 10 the performances of an aRDAC processor (developed and marketed by the company Lead Tech Design, co-applicant of the present patent application) implementing a programmed data extraction algorithm are presented in relation with FIGS. in any software (described in FIG. 3), and the performances of an aRDAC processor in which the arithmetic and logic unit 50 according to the invention is implemented. These performances were obtained as part of a characteristic data extraction of an MPEG-4 video stream.
  • Figure 9 illustrates the number of clock cycles consumed.
  • the curve referenced 91 illustrates the number of clock cycles consumed by an aRDAC processor implementing a data extraction algorithm programmed in any software.
  • the curve referenced 92 illustrates the number of clock cycles consumed by an aRDAC processor in which is implemented the arithmetic and logic unit 50 according to the invention, during the first use of the extraction means 504 according to the invention. During this first use the first 501, second 502 and third 51 registers are initialized (step 600 of Figure 6).
  • the curve referenced 93 illustrates the number of clock cycles consumed by an aRDAC processor in which the arithmetic and logic unit 50 according to the invention is implemented, during the use (s) following the first use.
  • the aRDAC processor implementing the data extraction algorithm programmed in any software consumes 65 clock cycles.
  • the aRDAC processor in which the arithmetic and logic unit 50 is implemented according to the invention, and implement the data extraction algorithm described in FIG. 6, consumes 16 clock cycles at the first use. .
  • the aRDAC processor in which is implemented the arithmetic and logic unit 50 according to the invention, and implement the data extraction algorithm described in FIG. Figure 6, consumes 12 clock cycles (the registers having already been initialized during the first use).
  • Figure 10 illustrates the number of images displayed per second.
  • the curve referenced 93 illustrates the number of images displayed in one second by an aRDAC processor implementing a data extraction algorithm programmed into any software
  • the curve referenced 92 illustrates the number of images displayed in one second by a aRDAC processor in which is implemented the arithmetic and logic unit 50 according to the invention.
  • the aRDAC processor implementing the data extraction algorithm programmed in any software has a display capacity of 13 frames per second.
  • the aRDAC processor in which the arithmetic and logic unit 50 is implemented according to the invention, and implement the data extraction algorithm described in FIG. 6, has a display capacity of 16 images per second. second.
  • the gain is of the order of 25%, ie 3 frames per second more.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Il est proposé un dispositif de traitement (500) permettant d'extraire un ensemble de données d'un mot de données (D1, D2, D3, D4), le dispositif comprenant une unité arithmétique et logique (50). L'unité arithmétique et logique (50) est telle qu'elle comprend des moyens d'extraction (504) permettant de traiter une instruction d'extraction dont les opérandes sont : le mot de données, une information de position relative à la position de l'ensemble de données dans le mot de données et une information de taille relative à la taille de l'ensemble de données, les moyens d'extraction (504) comprenant : -une première entrée (E1) recevant le mot de données; -une deuxième entrée (E2) recevant l'information de position et l'information de taille; -une troisième entrée (E3) recevant l'instruction d'extraction, les moyens d'extraction (504) permettant d'obtenir l'ensemble de données par décalage du mot de données, en fonction des informations de position et de taille.

Description

Dispositif de traitement permettant d'extraire un ensemble de données d'un mot de données, circuit électronique et procédé d'extraction de données correspondants
1. DOMAINE DE L'INVENTION
Le domaine de l'invention est celui du traitement syntaxique de flux de données (« parsing » en anglais). Un traitement syntaxique consiste à extraire un ensemble de données d'un flux de données.
L'invention s'applique notamment, mais non exclusivement, à l'extraction de données d'un flux binaire multimédia, et trouve notamment des applications dans le domaine du décodage de contenus multimédia. Une telle extraction permet, par exemple, d'extraire un ensemble (ou bloc) de données caractéristiques (« features » en anglais) d'un flux vidéo. On entend par données caractéristiques des données permettant de définir le contenu de la vidéo transportée par le flux. Généralement, la taille du bloc de données caractéristiques à extraire et la position de ce bloc dans le flux est définie par la norme selon laquelle le flux est compressé.
On note que, dans toute la suite du document, on entend par contenu multimédia un flux binaire de type audio, vidéo, images, communication, etc.
Typiquement, une image numérique comprend des blocs rectangulaires de pixels (aussi appelés macro-blocs), ces blocs étant répartis en lignes et en colonnes. Chaque bloc rectangulaire possède une largeur de w pixels et une hauteur de h pixels. Dans le standard H.264/AVC (ITU-T H.264, ISO/IEC 14496-10), par exemple, les images sont découpées soit en blocs de 16x16 pixels, soit en blocs de 16x32 (mode MBAFF).
Traditionnellement, le codage ou décodage d'une image consiste à traiter l'ensemble de ses blocs, séquentiellement ligne par ligne, de gauche à droite sur une même ligne, et de haut en bas d'une ligne à l'autre.
L'invention s'applique notamment, mais non exclusivement, au décodage d'une séquence vidéo formée d'images successives conforme à une norme de compression/décompression telle que, par exemple, la norme MPEG-4 Video, définie dans le document de normalisation « ISO/IEC FDIS 23002-4: 2009, Information technology - MPEG video technologies - Part 4 ». D'une façon générale, la présente invention peut s'appliquer dans tous les cas où il existe un contexte d'extraction de données caractéristiques d'un flux de données.
2. ARRIÈRE-PLAN TECHNOLOGIQUE
Dans l'état de la technique, il existe plusieurs types d'architectures qui permettent d'effectuer des opérations d'extraction de données caractéristiques d'un flux de données.
Un premier type d'architecture connu repose sur l'utilisation combinée d'un processeur et d'un coprocesseur. De manière générale, le processeur a un rôle d'unité de traitement maître, il est chargé du contrôle global de l'application, ainsi que d'un certain nombre de tâches de décision et de calcul. Le coprocesseur a un rôle d'unité de traitement esclave, il est utilisé par le processeur pour les calculs les plus complexes.
Ce premier type d'architecture connu présente l'inconvénient d'être encombrant et coûteux.
De plus, il est nécessaire de modifier le code logiciel du processeur pour tirer profit des fonctionnalités du coprocesseur.
A noter par ailleurs que dans un tel schéma processeur/coprocesseur, la communication de données entre processeur et coprocesseur peut prendre un temps non négligeable, ce qui nuit à la performance globale du système.
Un deuxième type d'architecture connu repose sur l'utilisation d'un circuit intégré spécialisé pour une application spécifique (ou « ASIC » pour « Application- Specifîc Integrated Circuit » en anglais). Un ASIC présente l'avantage d'être optimisé pour une application donnée. Bien que cette deuxième architecture connue soit performante, elle présente l'inconvénient d'être non évolutive. Ainsi, dans le cas où un ASIC a été développé pour extraire des données caractéristiques d'un flux conforme à une norme donnée, si cette norme évolue, alors Γ ASIC pourrait ne plus être adapté.
Un troisième type d'architecture connu repose sur l'utilisation d'un processeur de signal numérique (ou « DSP » pour « Digital Signal Processor » en anglais). Un DSP présente l'avantage d'être programmable. Cependant, sa consommation d'énergie est importante par rapport aux première et deuxième architectures précités.
Un quatrième type d'architecture connu repose sur l'utilisation d'un processeur dont le jeu d'instructions est adapté à une application spécifique (ou « ASIP » pour « Application Spécifie Integrated Processor » en anglais). Les ASIP sont des processeurs utilisant comme technologie d'implantation un réseau de portes programmables (ou « FPGA » pour « Field-Programmable Gâte Array » en anglais) ou un ASIC, et offrent à la fois une consommation d'énergie réduite et des possibilités d'évolution. A ce jour, il a été constaté qu'il n'existe aucun ASIP dédié à l'extraction de données caractéristiques d'un flux de données.
On décrit ci-dessous la problématique existant dans le cas d'un décodage par un processeur de type DSP d'une séquence vidéo formée d'images successives. L'invention ne se limite bien sûr pas à ce cas particulier d'application, mais présente un intérêt pour toute technique de décodage de contenus multimédia devant faire face à une problématique proche ou similaire.
On présente, en relation avec la figure 1, un exemple d'architecture classique d'un processeur.
Le processeur 1 comprend un contrôleur 10 en charge de gérer l'ensemble des traitements de décodage. Le contrôleur 10 décode une instruction stockée dans une mémoire RAM 11 pour identifier, parmi des données stockées dans une mémoire de données 15 (« Data Memory »), un ensemble de données à traiter par une unité arithmétique et logique 12 (ou « ALU » pour « Arithmetic Logic Unit » en anglais). Le contrôleur 10 commande un gestionnaire d'accès mémoire 14 (« Memory Access ») pour récupérer dans la mémoire de données 15 l'ensemble de données à traiter. Cet ensemble de données à traiter comprend des données caractéristiques à extraire. Ensuite, le gestionnaire d'accès mémoire 14 transfère les données à traiter dans des premier et deuxième registres compris dans un bloc de registres 13. L'ALU 12 traite les données contenues dans les premier et deuxième registres selon des instructions de traitement stockées dans la mémoire RAM 11. Ainsi, l'ALU 12 extrait les données caractéristiques depuis les données à traiter. L'ALU 12 enregistre les données caractéristiques extraites dans le premier registre. Le gestionnaire d'accès mémoire 14 transfère les données caractéristiques du premier registre vers la mémoire de données 15. Les données caractéristiques sont ensuite décodées.
La figure 2 présente les étapes d'un exemple d'algorithme de décodage d'un flux vidéo mis en œuvre par le processeur 1 (décrit en relation avec la figure 1). Après une étape d'initialisation (100), pour chaque image transportée par le flux vidéo, le processeur effectue les étapes 101 à 104 décrites ci-après.
Le processeur effectue une première étape d'extraction (101) depuis le flux vidéo d'un premier ensemble de données caractéristiques (« start-code ») permettant de définir le traitement à réaliser sur l'image. Le processeur effectue ensuite une deuxième étape d'extraction (102) depuis le flux vidéo d'un deuxième ensemble de données caractéristiques (« Video Object Layer ») permettant notamment de définir la taille et le type de codage de l'image en cours de traitement. Puis, le processeur effectue une troisième étape d'extraction (103) depuis le flux vidéo d'un troisième ensemble de données caractéristiques (« Video Object Plane ») permettant de définir les macro-blocs de l'image. Enfin, le processeur décode l'image à partir des données caractéristiques extraites.
On présente maintenant, en relation avec la figure 3, les étapes d'un exemple d'algorithme d'extraction de données mis en œuvre par le processeur 1 pendant chacune des première (101), deuxième (102) et troisième (E103) étapes d'extractions. La figure 4 illustre un exemple d'évolution des contenus des premier et deuxième registres du processeur.
Généralement, un tel algorithme d'extraction est programmé en logiciel. Cet algorithme est stocké, par exemple, dans une mémoire RAM externe au processeur.
Dans la suite de la description, on suppose à titre d'exemple que la taille de chaque registre est de 32 bits. Bien entendu, dans d'autres architectures ces registres peuvent avoir des tailles différentes.
Comme illustré dans l'exemple de la figure 4, le premier registre 131 comprend un premier octet 31, un deuxième octet 32, un troisième octet 33 et un quatrième octet 34. Le deuxième registre 132 comprend un premier octet 35, un deuxième octet 36, un troisième octet 37 et un quatrième octet 38.
Après une étape d'initialisation (300), les premier 131 et deuxième 132 registres sont vides (tous les bits sont mis à « 0 »).
A l'étape 301, le gestionnaire d'accès mémoire 14 transfère des premières données Dl à traiter (préalablement identifiées par le contrôleur 10) depuis la mémoire de données 15 vers le quatrième octet 34 du premier registre 131. A l'étape 302, il est procédé à un décalage à gauche de 24 bits du contenu du premier registre 131. De cette façon, le premier octet 31 du premier registre 131 comprend les premières données Dl à traiter.
A l'étape 303, le gestionnaire d'accès mémoire 14 transfère des deuxièmes données D2 à traiter (préalablement identifiées par le contrôleur 10) depuis la mémoire de données 15 vers le quatrième octet 38 du deuxième registre 132.
A l'étape 304, il est procédé à un décalage à gauche de 16 bits du contenu du deuxième registre 132. De cette façon, le deuxième octet 36 du deuxième registre 132 comprend les deuxièmes données D2 à traiter.
A l'étape 305, l'ALU 12 effectue une opération logique de type « OU » entre les premier 131 et deuxième 132 registres. Le résultat de cette opération logique est stocké dans le premier registre 131. Comme illustré sur la figure 4, le premier octet 31 du premier registre 131 comprend les premières données Dl à traiter, et le deuxième octet 32 du premier registre 131 comprend les deuxièmes données D2 à traiter.
A l'étape 306, le gestionnaire d'accès mémoire 14 transfère des troisièmes données D3 à traiter (préalablement identifiées par le contrôleur 10) depuis la mémoire de données 15 vers le quatrième octet 38 du deuxième registre 132.
A l'étape 307, il est procédé à un décalage à gauche de 8 bits du contenu du deuxième registre 132. De cette façon, le troisième octet 37 du deuxième registre 132 comprend les troisièmes données D3 à traiter.
A l'étape 308, l'ALU 12 effectue une opération logique de type « OU » entre les premier 131 et deuxième 132 registres. Le résultat de cette opération logique est stocké dans le premier registre 131. Comme illustré sur la figure 4, le premier octet 31 du premier registre 131 comprend les premières données Dl à traiter, le deuxième octet 32 du premier registre 131 comprend les deuxièmes données D2 à traiter, et le troisième octet 33 du premier registre 131 comprend les troisièmes données D3 à traiter.
A l'étape 309, le gestionnaire d'accès mémoire 14 transfère des quatrièmes données D4 à traiter (préalablement identifiées par le contrôleur 10) depuis la mémoire de données 15 vers le quatrième octet 38 du deuxième registre 132.
A l'étape 310, l'ALU 12 effectue une opération logique de type « OU » entre les premier 131 et deuxième 132 registres. Le résultat de cette opération logique est stocké dans le premier registre 131. Comme illustré sur la figure 4, le premier octet 31 du premier registre 131 comprend les premières données Dl à traiter, le deuxième octet 32 du premier registre 131 comprend les deuxièmes données D2 à traiter, le troisième octet 33 du premier registre 131 comprend les troisièmes données D3 à traiter, et le quatrième octet 34 du premier registre 131 comprend les quatrièmes données D4 à traiter. Ainsi, à cette étape 310, on obtient un mot binaire (ou mot de données) de 32 bits.
Dans la suite de la description, on suppose à titre d'exemple que les données caractéristiques à extraire sont les données D3.
A l'étape 311, tous les bits du deuxième registre 132 sont initialisés avec la valeur « 1 ».
A l'étape 312, le processeur obtient la position du bloc de données caractéristiques qui doit être extrait du mot de données Dl, D2, D3 et D4 (contenu dans le premier registre 131). Puis, à cette même étape 312, il est procédé à un décalage à droite du contenu du deuxième registre 132, d'un nombre de bit(s) déterminé en fonction de la position du bloc de données caractéristiques à extraire. Comme indiqué ci-dessus, la position du bloc de données caractéristiques à extraire est définie par la norme selon laquelle le flux est compressé. Dans la suite de la description, on suppose à titre d'exemple que le début du bloc de données à extraire se situe à 16 bits à compter du début du mot de données (c'est-à-dire à compter du début du premier octet du premier registre 131). Dans l'exemple illustré par la figure 4, il est donc procédé à un décalage à droite de 16 bits du contenu du deuxième registre 132. De cette façon, les bits des premier 35 et deuxième 36 octets du deuxième registre 132 ont une valeur « 0 » et les bits des troisième 37 et quatrième 38 octets du deuxième registre 132 ont une valeur « 1 ».
A l'étape 313, l'ALU 12 effectue une opération logique de type « ET » entre les premier 131 et deuxième 132 registres. Le résultat de cette opération logique est stocké dans le premier registre 131. Comme illustré sur la figure 4, les bits des premier 31 et deuxième 32 octets du premier registre 131 sont à « 0 », le troisième octet 33 du premier registre 131 comprend les troisièmes données D3, et le quatrième octet 34 du premier registre 131 comprend les quatrièmes données D4. A l'étape 314, le processeur obtient la taille du bloc de données caractéristiques qui doit être extrait. Puis, à cette même étape 314, il est procédé à un décalage à droite du contenu du premier registre 131, d'un nombre de bit(s) déterminé en fonction de la taille du bloc de données caractéristiques. Comme indiqué ci-dessus, la taille du bloc de données caractéristiques est définie par la norme selon laquelle le flux est compressé. Dans la suite de la description, on suppose à titre d'exemple que la taille du bloc de données caractéristiques est de 8 bits. Il est donc procédé à un décalage à droite de 8 bits du contenu du premier registre 131. De cette façon, les bits des premier 31, deuxième 32 et troisième 33 octets du premier registre 131 sont à « 0 », et le quatrième octet 34 du premier registre 131 comprend les troisièmes données D3. Ces troisièmes données D3 constituent le résultat de l'algorithme d'extraction.
A l'étape 315, le gestionnaire d'accès mémoire 14 transfère les troisièmes données D3 extraites vers une zone de stockage prévue à cet effet dans la mémoire de données 15.
L'inconvénient majeur lié à l'exécution par un processeur d'un algorithme d'extraction programmé en logiciel réside dans le fait que cette exécution consomme un nombre important de cycles d'horloge (et donc une consommation d'énergie accrue). Ceci est notamment dû au fait que le gestionnaire d'accès mémoire 14 effectue un nombre important d'opérations de transfert et que l'ALU 12 effectue un nombre important de décalages et d'opérations logiques.
3. OBJECTIFS DE L'INVENTION
L'invention, dans au moins un mode de réalisation, a notamment pour objectif de pallier ces différents inconvénients de l'état de la technique.
Plus précisément, dans au moins un mode de réalisation de l'invention, un objectif est de fournir une technique permettant, d'extraire des données d'un flux de données, en un minimum de cycles, tout en minimisant la consommation d'énergie.
Au moins un mode de réalisation de l'invention a également pour objectif de fournir une telle technique qui soit simple à mettre en œuvre et peu coûteuse.
Un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui soit adaptée à l'extraction de données caractéristiques d'un flux multimédia. Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique permettant d'optimiser les performances de décodage d'un décodeur MPEG-4.
4. EXPOSÉ DE L'INVENTION
Dans un mode de réalisation particulier de l'invention, il est proposé un dispositif de traitement permettant d'extraire un ensemble de données d'un mot de données, le dispositif comprenant une unité arithmétique et logique. L'unité arithmétique et logique est telle qu'elle comprend des moyens d'extraction permettant de traiter une instruction d'extraction dont les opérandes sont : ledit mot de données, une information de position relative à la position de l'ensemble de données dans ledit mot de données et une information de taille relative à la taille de l'ensemble de données, lesdits moyens d'extraction comprenant :
une première entrée recevant ledit mot de données ;
une deuxième entrée recevant ladite information de position et ladite information de taille ;
une troisième entrée recevant ladite instruction d'extraction,
lesdits moyens d'extraction permettant d'obtenir l'ensemble de données par décalage du mot de données, en fonction desdites informations de position et de taille.
Ainsi, il est proposé d'implémenter dans une unité arithmétique et logique un nouveau bloc matériel (moyens d'extraction) dédié à l'extraction de données. Ce nouveau bloc matériel confère à l'unité arithmétique et logique la capacité de traiter une nouvelle instruction dont les opérandes sont : le mot de données, une information de position et une information de taille. Ainsi, sur réception de cette instruction, l'unité arithmétique et logique est capable de recevoir de manière synchrone (et non plus séquentielle) le mot de données, l'information de position et l'information de taille. L'unité arithmétique et logique est donc capable d'extraire rapidement et efficacement l'ensemble de données, puisqu'il dispose de tous les paramètres (position et taille) relatifs aux opérations de décalage à effectuer sur le mot de données.
De façon avantageuse, les moyens d'extraction comprennent :
des premiers moyens de décalage : o possédant deux entrées, recevant respectivement le mot de données et ladite information de position ;
o délivrant en sortie un mot intermédiaire dans lequel les données sont organisées selon une orientation prédéterminée, le mot intermédiaire étant obtenu par le décalage dudit mot de données d'une valeur de décalage déterminée à partir de ladite information de position et suivant une direction prédéterminée fonction de ladite orientation ;
des seconds moyens de décalage :
o possédant deux entrées, recevant respectivement ladite information de taille et le mot intermédiaire ;
o délivrant en sortie l'ensemble de données, ledit ensemble de données étant obtenu par le décalage du mot intermédiaire d'une valeur de décalage déterminée à partir de ladite information de taille et suivant une direction inverse à ladite direction prédéterminée.
Ainsi, il est proposé de mettre en œuvre deux niveaux de décalage permettent de traiter respectivement l'information de position et l'information de taille. Ceci permet une mise en œuvre simple et peu coûteuse des décalages (et donc de l'extraction).
Les bits du mot intermédiaire, qui résulte de l'opération de décalage effectuée au premier niveau de décalage (premiers moyens de décalage), sont organisés selon une orientation prédéterminée avant d'être transmis vers le deuxième niveau de décalage (deuxièmes moyens de décalage). Le fait d'imposer une orientation des bits dès le premier niveau de décalage permet de fiabiliser l'extraction de données.
Dans un mode de réalisation préférentiel, ladite orientation prédéterminée est du type mot de poids fort en tête.
Avantageusement, les moyens d'extraction comprennent un registre local possédant :
une entrée connectée à la sortie des premiers moyens de décalage ;
une sortie connectée à l'une des entrées des seconds moyens de décalage, de sorte que les premiers moyens de décalage peuvent transférer le mot intermédiaire dans le registre local, et les seconds moyens de décalage peuvent lire le mot intermédiaire contenu dans le registre local. Ainsi, la mise en œuvre reste simple et peu coûteuse.
Dans un mode de réalisation préférentiel, le dispositif comprend un registre opérande comprenant :
une première zone de stockage contenant ladite information de position, ladite première zone de stockage étant connectée à l'une des entrées des premiers moyens de décalage, de sorte que les premiers moyens de décalage peuvent lire ladite information de position contenue dans ladite première zone de stockage ; une deuxième zone de stockage contenant ladite information de taille, ladite deuxième zone de stockage étant connectée à l'une des entrées desdits seconds moyens de décalage, de sorte que les seconds moyens de décalage peuvent lire ladite information de taille contenue dans ladite deuxième zone de stockage. Selon une caractéristique avantageuse, ledit mot de données est issu d'un flux multimédia.
Ainsi, le dispositif de traitement selon l'invention est adapté à l'extraction de données caractéristiques d'un flux multimédia, par exemple, un flux vidéo MPEG-4.
De façon avantageuse, ledit dispositif est un processeur.
Ainsi, il est proposé un processeur ASIP dédié à l'extraction de données.
Dans un mode de réalisation particulier de l'invention, il est proposé un circuit électronique comprenant le dispositif de traitement précité.
Dans un mode de réalisation particulier de l'invention, il est proposé un procédé d'extraction par un dispositif de traitement d'un ensemble de données d'un mot de données, le dispositif comprenant une unité arithmétique et logique.
L'unité arithmétique et logique est telle qu'elle effectue des étapes consistant à : obtenir une instruction d'extraction dont les opérandes sont : ledit mot de données, une information de position relative à la position de l'ensemble de données dans ledit mot de données et une information de taille relative à la taille de l'ensemble de données ;
obtenir l'ensemble de données par décalage du mot de données obtenu, en fonction desdites informations de position et de taille obtenues.
De façon avantageuse, ladite étape consistant à obtenir l'ensemble de données comprend des étapes consistant à : obtenir un mot intermédiaire, dans lequel les données sont organisées selon une orientation prédéterminée, par décalage dudit mot de données d'une valeur de décalage déterminée à partir de ladite information de position et suivant une direction prédéterminée fonction de ladite orientation ;
- obtenir l'ensemble de données par décalage du mot intermédiaire d'une valeur de décalage déterminée à partir de ladite information de taille et suivant une direction inverse à ladite direction prédéterminée.
5. LISTE DES FIGURES
D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif, et des dessins annexés, dans lesquels :
• la figure 1, commentée en relation avec l'art antérieur, illustre un exemple d'architecture classique d'un processeur ;
• la figure 2, commentée en relation avec l'art antérieur, présente un organigramme d'un algorithme de décodage d'un flux vidéo, mis en œuvre par le processeur de la figure 1 ;
• la figure 3, commentée en relation avec l'art antérieur, présente un organigramme d'un algorithme d'extraction de données, mis en œuvre par le processeur de la figure 1 ;
· la figure 4, commentée en relation avec l'art antérieur, illustre un exemple d'évolution de contenu de registres compris dans le processeur de la figure 1 ;
• la figure 5 illustre un exemple d'architecture d'un processeur selon un mode de réalisation particulier de l'invention ;
• la figure 6 représente un organigramme d'un algorithme d'extraction de données selon un mode de réalisation particulier de l'invention, mis en œuvre par le processeur de la figure 5 ;
• la figure 7 illustre un exemple d'évolution de contenu de registres compris dans le processeur de la figure 5 ;
• la figure 8 illustre un exemple d'une mémoire de données selon un mode de réalisation particulier de l'invention ; • la figure 9 illustre le nombre de cycles d'horloge consommés par un processeur selon un mode de réalisation particulier de l'invention ; et
• la figure 10 illustre le nombre d'images affichées en une seconde par un processeur selon un mode de réalisation particulier de l'invention.
6. DESCRIPTION DÉTAILLÉE
L'invention concerne un dispositif de traitement (référencé 500 sur la figure 5) dédié à l'extraction de données d'un mot de données. Il est proposé de modifier l'architecture d'une unité arithmétique et logique (référencée 50 sur la figure 5), en lui ajoutant une instruction dédiée à l'extraction de données. Cette instruction dédiée est implémentée sous forme matérielle. Elle repose sur l'utilisation de moyens de décalage et d'un registre local implémentés dans l'unité arithmétique et logique. Cette architecture permet à l'unité arithmétique et logique d'éviter d'effectuer un nombre important de décalages et d'opérations logiques. On note que cette unité arithmétique et logique modifiée peut remplacer l'unité arithmétique et logique (référencée 12 sur la figure 1) d'un processeur classique, tel que celui décrit à la figure 1. Dans ce cas, le processeur devient un processeur ASIP dédié à l'extraction de données. De plus, l'invention propose de modifier l'architecture mémoire du processeur pour permettre des accès non alignés à la mémoire. De cette façon, le mot contenant les données à extraire peut être lu en un minimum de cycles d'horloge.
On décrit désormais en relation avec la figure 5 un processeur (aussi appelé dispositif de traitement) selon un mode de réalisation particulier de l'invention.
Dans ce mode de réalisation particulier, le processeur 500 comprend :
un premier registre 501 en charge, dans un premier temps, de stocker des données à traiter (mot de données) contenant les données caractéristiques à extraire et, dans un deuxième temps, de stocker les données caractéristiques extraites. Dans un mode de réalisation particulier, ce premier registre 501 correspond au premier registre 131 de la figure 1 ;
un deuxième registre 502 en charge de stocker des informations de position et de taille relatives aux données caractéristiques à extraire. Dans un mode de réalisation particulier, ce deuxième registre 502 correspond au deuxième registre 132 de la figure 1 ;
un troisième registre 51 qui est utilisé pour charger l'information de taille dans le deuxième registre 502. Dans un mode de réalisation particulier, ce troisième registre 51 est compris dans le bloc de registres 13 de la figure 1 ; une unité arithmétique et logique 50 comprenant des moyens d'extraction 504 selon un mode de réalisation particulier de l'invention.
Les moyens d'extraction 504 comprennent :
une première entrée El, via laquelle les données à traiter sont reçues ;
une deuxième entrée E2, via laquelle les informations de position et de taille sont reçues ;
une troisième entrée E3, via laquelle une instruction d'extraction est reçue. Les opérandes de cette instruction d' extraction sont : le mot de données , l'information de position et l'information de taille. Les moyens d'extraction 504 sont activés sur réception de cette instruction d'extraction.
Ainsi, les moyens d'extraction 504 selon l'invention permettent d'obtenir les données caractéristiques, en décalant les données à traiter, en fonction des informations de position et de taille obtenues.
Plus précisément, dans ce mode de réalisation particulier, les moyens d'extraction 504 comprennent :
des premiers moyens de décalage 53 en charge d'effectuer un décalage à gauche du contenu du premier registre 501, d'un nombre de bit(s) déterminé en fonction de la position du bloc de données caractéristiques à extraire ; un registre local 52 en charge de recevoir l'ensemble de données (bits) résultant du décalage effectué par les premiers moyens de décalage 53 ; des seconds moyens de décalage 54 en charge d'effectuer un décalage à droite du contenu du registre local 52, d'un nombre de bit(s) déterminé en fonction de la taille du bloc de données caractéristiques à extraire. Dans le mode de réalisation particulier de la figure 5, les informations de position et de taille du bloc de données caractéristiques à extraire sont stockées dans le deuxième registre 502.
On note que, dans le mode de réalisation particulier de la figure 5, les premiers moyens de décalage 53 sont configurés de telle sorte que, après avoir effectué le décalage à gauche du contenu du premier registre 501, ils transfèrent l'ensemble de bits résultant de ce décalage vers le registre local 52, en veillant à ce que les bits de l'ensemble soient ordonnés selon une orientation du type mot de poids fort en tête (ou « big-endian » en anglais).
On note également que la taille du registre local 52 est déterminée en fonction de la taille des données à traiter (elle-même fonction de l'architecture du processeur).
La figure 6 représente un organigramme d'un algorithme d'extraction de données selon un mode de réalisation particulier de l'invention, mis en œuvre par le processeur 500 comprenant l'unité arithmétique et logique (ALU) 50. La figure 7 illustre un exemple d'évolution des contenus des premier 501 , deuxième 502 et troisième 51 registres et du registre local 52.
Après une étape d'initialisation (600), les premier 501, deuxième 502 et troisième 51 registres sont vides (tous les bits sont mis à « 0 »).
A l'étape 601, le processeur obtient la position du bloc de données caractéristiques à extraire. La donnée « position » est définie par la norme selon laquelle le flux est compressé. Dans un mode de réalisation particulier, cette donnée « position » est chargée dans une mémoire de données lors de l'initialisation (600). Le processeur obtient la donnée « position » en lisant celle-ci dans la mémoire de données. A titre d'exemple, on suppose que la donnée « position » est codée sur 4 bits. Ensuite, à cette même étape 601, cette donnée « position » est transférée dans le quatrième octet 524 du deuxième registre 502.
A l'étape 602, il est procédé à un décalage à gauche de 4 bits du contenu du deuxième registre 502.
A l'étape 603, le processeur obtient la taille du bloc de données caractéristiques à extraire. La donnée « taille » est définie par la norme selon laquelle le flux est compressé. Dans un mode de réalisation particulier, cette donnée « taille » est chargée dans une mémoire de données lors de l'initialisation (600). Le processeur obtient la donnée « taille » en lisant celle-ci dans la mémoire de données. A titre d'exemple, on suppose que la donnée « taille » est codée sur 4 bits. Ensuite, à cette même étape 603, cette donnée « taille » est stockée dans le quatrième octet 534 du troisième registre 51.
A l'étape 604, l'ALU 50 effectue une opération logique de type « OU » entre les deuxième 502 et troisième 51 registres. Le résultat de cette opération logique est stocké dans le deuxième registre 502. Comme illustré sur la figure 7, le quatrième octet 524 du deuxième registre 502 comprend les données « position » (de 4 bits) et « taille » (de 4 bits).
A l'étape 605, un gestionnaire d'accès mémoire (non représenté) transfère des premières D l , deuxièmes D2, troisièmes D3 et quatrièmes D4 données à traiter (préalablement identifiées par un contrôleur (non représenté)) depuis une mémoire de données (numérotée 80 sur la figure 8) vers les premier 511, deuxième 512, troisième 513 et quatrième 514 octets du premier registre 501, respectivement. Ainsi, le premier registre 501 contient un mot de données Dl, D2, D3 et D4. Ce mot de données comprend des données caractéristiques à extraire. On note que le gestionnaire d'accès mémoire, le contrôleur et la mémoire de données sont compris dans le processeur 500.
Dans la suite de la description, on suppose à titre d'exemple que les données caractéristiques à extraire sont les données D3. L'invention ne se limite bien sûr pas à ce cas particulier. Dans un autre mode de réalisation, les données caractéristiques à extraire sont formées par une partie des données D3 et D4.
A l'étape 606, les premiers 53 et seconds 54 moyens de décalage sont activés.
Les étapes 610 à 613 décrites ci-après sont relatives à l'étape d'activation 606.
On note que grâce à l'implémentation matérielle des premiers 53 et seconds 54 moyens de décalage, et du registre local 52, les étapes 610 à 613 sont effectuées en un seul cycle d'horloge.
A l'étape 610, les premiers moyens de décalage 53 effectuent un décalage à gauche du contenu du premier registre 501, en fonction de la donnée « position » stockée dans le quatrième octet 524 du deuxième registre 502. On suppose à titre d'exemple que le début du bloc de données à extraire se situe à 16 bits à compter du début du mot de données (c'est-à-dire à compter du début du premier octet du premier registre 501). On note que le nombre de bits à décaler est donné par la différence entre la taille du premier registre 501 (32 bits) et la valeur de la donnée « position » (16 bits), soit 32 - 16 =16 bits à décaler. Dans l'exemple illustré par la figure 7, il est donc procédé à un décalage à gauche de 16 bits du contenu du premier registre 501. De cette façon, le premier octet 511 du premier registre 501 comprend les troisièmes données D3 et le deuxième octet 512 du premier registre 501 comprend les quatrièmes données D4, et les bits des troisième 513 et quatrième 514 octets du premier registre 501 ont une valeur « 0 ».
A l'étape 611, les premiers moyens de décalage 53 transfèrent vers le registre local 52 l'ensemble de bits résultant du décalage effectué à l'étape 610, en veillant à ce que les bits de l'ensemble soient ordonnés selon une orientation du type « big-endian ». Ainsi, comme illustré sur la figure 7, le premier octet 541 du registre local 52 comprend les troisièmes données D3 et le deuxième octet 542 du registre local 52 comprend les quatrièmes données D4.
A l'étape 612, les seconds moyens de décalage 54 effectuent un décalage à droite du contenu du registre local 52, en fonction de la donnée « taille » stockée dans le quatrième octet 524 du deuxième registre 502. On suppose à titre d'exemple que la taille du bloc de données caractéristiques est de 8 bits. On note que le nombre de bits à décaler est donné par la différence entre la taille du registre local 52 (32 bits) et la taille du bloc de données caractéristiques, soit 32 - 8 =24 bits à décaler. Dans l'exemple illustré par la figure 7, il est donc procédé à un décalage à droite de 24 bits du contenu du registre local 52. De cette façon, le quatrième octet 544 du registre local 52 comprend les troisièmes données D3. Les bits des premier 541, deuxième 542 et troisième 543 octets sont à zéro.
Ensuite, à l'étape 613, les seconds moyens de décalage 54 transfèrent vers le premier registre 501 l'ensemble de bits résultant du décalage effectué à l'étape 612.
Enfin, à l'étape 614, le gestionnaire d'accès mémoire (non représenté) du processeur 500 transfère les données caractéristiques D3 extraites vers une zone de stockage prévue à cet effet dans la mémoire de données (numérotée 80 sur la figure 8) du processeur 500. Bien entendu, l'invention n'est pas limitée à l'exemple de réalisation mentionné ci-dessus. La mise en œuvre d'une orientation du type « little-endian » (« mot de poids faible en tête » en français) peut également être envisagée. Pour cela, l'homme du métier pourra modifier les premiers moyens de décalage 53 de sorte à ce qu'ils réorganisent les données du flux selon une orientation du type « big endian » dans le registre local 52, et les seconds moyens de décalage 54 de sorte à ce qu'ils réorganisent le résultat d'extraction selon une orientation du type « little endian » après le décalage.
Dans un mode de réalisation particulier de l'invention, l'architecture mémoire du processeur a été modifiée pour permettre des accès non-alignés.
On décrit ci-après un exemple de réalisation d'une architecture mémoire à accès non-alignés.
Tout d'abord, la mémoire de données est divisée en deux mémoires, appelées ci- après première mémoire et deuxième mémoire.
Ensuite, il est procédé au calcul de l'adresse à lire à chaque cycle dans chacune des première et deuxième mémoires. Ces adresses sont définies par les trois bits de poids faibles de l'adresse désirée. Puis, on construit le mot de sortie en fonction des données de sortie des première et deuxième mémoires.
Par exemple :
à l'adresse 0(« xxxOOO ») on ne lit que la première mémoire, et le mot de sortie est composé des données de l'adresse 0 ;
à l'adresse 1 (« xxxOOl ») on lit les données de la première mémoire et de la deuxième mémoire, et le mot de sortie est composé des trois derniers octets de sortie de la première mémoire et du premier octet de sortie de la deuxième mémoire ;
à l'adresse 2 (« xxxOlO ») on lit les données de la première mémoire et de la deuxième mémoire, et le mot de sortie est composé des deux derniers octets de sortie de la première mémoire et des deux premiers octets de sortie de la deuxième mémoire ;
à l'adresse 3 (« xxxOl 1 ») on lit les données de la première mémoire et de la deuxième mémoire, et le mot de sortie est composé du dernier octet de sortie de la première mémoire et des trois premiers octets de sortie de la deuxième mémoire ; à l'adresse 4 (« xxxlOO ») on ne lit que les données de la deuxième mémoire, et le mot de sortie est composé des données de sortie de la deuxième mémoire ;
à l'adresse 5 (« xxxlOl ») on lit les données de la première mémoire (adresse N+l) et de la deuxième mémoire (adresse N), et le mot de sortie est composé des trois derniers octets de sortie de la première mémoire et du premier octet de sortie de la deuxième mémoire ;
à l'adresse 6 (« xxxl 10 ») on lit les données de la première mémoire (adresse N+l) et de la deuxième mémoire (adresse N), et le mot de sortie est composé des deux derniers octets de sortie de la deuxième mémoire et des deux premiers octets de sortie de la deuxième mémoire ;
à l'adresse 7 (« xxxl 1 1 ») on lit les données de la première mémoire (adresse N+l) et de la deuxième mémoire (adresse N), et le mot de sortie est composé du dernier octet de sortie de la deuxième mémoire et des trois premiers octets de sortie de la deuxième mémoire.
Et ainsi de suite pour les différentes adresses.
Puis, il est procédé à la modification de la mémoire en écriture pour qu'elle n'écrive que des données de 8 bits (octets). Pour cela, on sépare chacune des première et deuxième mémoires (8 * 4 = 32 bits) précitées en 4 sous-mémoires. On note que cela est invisible du point de vue de la lecture.
Enfin, il est procédé à la modification de la commande d'écriture de chaque sous-mémoire. Une sous-mémoire est sélectionnée lorsqu'elle reçoit un ordre d'écriture « write » et un ordre de « byte enable ». Ainsi une sous-mémoire est sélectionnée lorsqu'un signal logique « 1 » arrive sur la ligne commune de « write » et qu'un signal logique « 1 » arrive sur sa ligne de « byte enable ».
On note que l'architecture mémoire des processeurs classiques est réalisée de sorte à ne pouvoir lire ou écrire qu'une ligne d'adresse en un cycle d'horloge.
La figure 8 illustre un exemple d'une mémoire de données 80 selon un mode de réalisation particulier de l'invention.
Selon ce mode de réalisation particulier, le gestionnaire d'accès mémoire (non représenté) du processeur 500 est capable de lire le mot contenant les données à extraire en utilisant un accès aligné classique. Dans l'exemple illustré, le gestionnaire d'accès mémoire est capable de lire les données Dl, D2, D3 et D4 (formant le mot) à la ligne d'adresse 0x03, en un cycle d'horloge.
Selon ce mode de réalisation particulier, le gestionnaire d'accès mémoire (non représenté) du processeur 500 est capable en outre de lire le mot contenant les données à extraire en utilisant un accès non-aligné. Dans l'exemple illustré, le gestionnaire d'accès mémoire est capable de lire les données Dl et D2 à la ligne d'adresse 0x06, et les données D3 et D4 à la ligne d'adresse 0x07, en un cycle d'horloge.
Cette architecture mémoire modifiée (accès non-alignés) contribue à l'amélioration des performances du processeur (en termes de consommation de cycles d'horloge), puisqu'elle permet de ne consommer qu'un seul cycle d'horloge pour extraire des données stockées stockée dans deux lignes d'adresses différentes, alors qu'une architecture mémoire classique (accès alignés) en consommerait deux.
On présente en relation avec les figures 9 et 10, les performances d'un processeur aRDAC (développé et commercialisé par la société Lead Tech Design, co- déposant de la présente demande de brevet) mettant en œuvre un algorithme d'extraction de données programmé en tout logiciel (décrit à la figure 3), et les performances d'un processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention. Ces performances ont été obtenues dans le cadre d'une extraction de données caractéristiques d'un flux vidéo MPEG-4.
La figure 9 illustre le nombre de cycles d'horloge consommés. La courbe référencée 91 illustre le nombre de cycles d'horloge consommés par un processeur aRDAC mettant en œuvre un algorithme d'extraction de données programmé en tout logiciel. La courbe référencée 92 illustre le nombre de cycles d'horloge consommés par un processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention, lors de la première utilisation des moyens d'extraction 504 selon l'invention. Lors de cette première utilisation les premier 501, deuxième 502 et troisième 51 registres sont initialisés (étape 600 de la figure 6). La courbe référencée 93 illustre le nombre de cycles d'horloge consommés par un processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention, lors de la ou des utilisation(s) suivant la première utilisation. Le processeur aRDAC mettant en œuvre l'algorithme d'extraction de données programmé en tout logiciel consomme 65 cycles d'horloge. En revanche, le processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention, et mettent en œuvre l'algorithme d'extraction de données décrit à la figure 6, consomme 16 cycles d'horloge à la première utilisation. Puis, lors de la ou des utilisation(s) suivant la première utilisation, le processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention, et mettent en œuvre l'algorithme d'extraction de données décrit à la figure 6, consomme 12 cycles d'horloge (les registres ayant déjà été initialisés lors de la première utilisation).
La figure 10 illustre le nombre d'images affichées par seconde. La courbe référencée 93 illustre le nombre d'images affichées en une seconde par un processeur aRDAC mettant en œuvre un algorithme d'extraction de données programmé en tout logiciel, et la courbe référencée 92 illustre le nombre d'images affichées en une seconde par un processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention. Le processeur aRDAC mettant en œuvre l'algorithme d'extraction de données programmé en tout logiciel a une capacité d'affichage de 13 images par seconde. En revanche, le processeur aRDAC dans lequel est implémentée l'unité arithmétique et logique 50 selon l'invention, et mettent en œuvre l'algorithme d'extraction de données décrit à la figure 6, a une capacité d'affichage de 16 images par seconde.
Ainsi, pour une résolution CIF (pour « Common Intermediate Format » en anglais), le gain est de l'ordre de 25%, soit 3 images par seconde de plus.
Bien entendu, l'invention n'est pas limitée aux exemples de réalisation mentionnés ci-dessus. On a décrit une architecture de processeur 32 bits, mais bien sûr la même approche s'applique à tout autre architecture de processeur.

Claims

REVENDICATIONS
1. Dispositif de traitement (500) permettant d'extraire un ensemble de données d'un mot de données (Dl, D2, D3, D4), le dispositif comprenant une unité arithmétique et logique (50),
caractérisé en ce que l'unité arithmétique et logique (50) comprend des moyens d'extraction (504) permettant de traiter une instruction d'extraction dont les opérandes sont : ledit mot de données, une information de position relative à la position de l'ensemble de données dans ledit mot de données et une information de taille relative à la taille de l'ensemble de données, lesdits moyens d'extraction (504) comprenant :
- une première entrée (El) recevant ledit mot de données ;
une deuxième entrée (E2) recevant ladite information de position et ladite information de taille ;
une troisième entrée (E3) recevant ladite instruction d'extraction,
lesdits moyens d'extraction (504) permettant d'obtenir l'ensemble de données par décalage du mot de données, en fonction desdites informations de position et de taille.
2. Dispositif selon la revendication 1, caractérisé en ce que les moyens d'extraction (504) comprennent :
des premiers moyens de décalage (53) :
o possédant deux entrées, recevant respectivement le mot de données et ladite information de position ;
o délivrant en sortie un mot intermédiaire dans lequel les données sont organisées selon une orientation prédéterminée, le mot intermédiaire étant obtenu par le décalage dudit mot de données d'une valeur de décalage déterminée à partir de ladite information de position et suivant une direction prédéterminée fonction de ladite orientation ;
des seconds moyens de décalage (54) :
o possédant deux entrées, recevant respectivement ladite information de taille et le mot intermédiaire ;
o délivrant en sortie l'ensemble de données, ledit ensemble de données étant obtenu par le décalage du mot intermédiaire d'une valeur de décalage déterminée à partir de ladite information de taille et suivant une direction inverse à ladite direction prédéterminée.
3. Dispositif selon la revendication 2, caractérisé en ce que ladite orientation prédéterminée est du type mot de poids fort en tête.
4. Dispositif selon l'une quelconque des revendications 2 et 3, caractérisé en ce que les moyens d'extraction (504) comprennent un registre local (52) possédant :
une entrée connectée à la sortie des premiers moyens de décalage (53) ;
une sortie connectée à l'une des entrées des seconds moyens de décalage (54), de sorte que les premiers moyens de décalage (53) peuvent transférer le mot intermédiaire dans le registre local (52), et les seconds moyens de décalage (54) peuvent lire le mot intermédiaire contenu dans le registre local (52).
5. Dispositif selon l'une quelconque des revendications 2 à 4, caractérisé en ce qu'il comprend un registre opérande (502) comprenant :
une première zone de stockage contenant ladite information de position, ladite première zone de stockage étant connectée à l'une des entrées des premiers moyens de décalage (53), de sorte que les premiers moyens de décalage (53) peuvent lire ladite information de position contenue dans ladite première zone de stockage ;
une deuxième zone de stockage contenant ladite information de taille, ladite deuxième zone de stockage étant connectée à l'une des entrées desdits seconds moyens de décalage (54), de sorte que les seconds moyens de décalage (54) peuvent lire ladite information de taille contenue dans ladite deuxième zone de stockage.
6. Dispositif selon l'une quelconque des revendications 1 à 5, caractérisé en ce que ledit mot de données est issu d'un flux multimédia.
7. Dispositif selon l'une quelconque des revendications 1 à 6, caractérisé en ce que ledit dispositif est un processeur.
8. Circuit électronique, caractérisé en ce qu'il comprend un dispositif de traitement selon l'une quelconque des revendications 1 à 7.
9. Procédé d'extraction par un dispositif de traitement (500) d'un ensemble de données d'un mot de données (Dl, D2, D3, D4), le dispositif comprenant une unité arithmétique et logique (50),
caractérisé en ce que l'unité arithmétique et logique effectue des étapes consistant à : obtenir (606) une instruction d'extraction dont les opérandes sont : ledit mot de données, une information de position relative à la position de l'ensemble de données dans ledit mot de données et une information de taille relative à la taille de l'ensemble de données ;
obtenir (610, 61 1 , 612, 613) l'ensemble de données par décalage du mot de données obtenu, en fonction desdites informations de position et de taille obtenues.
10. Procédé selon la revendication 9, caractérisé en ce que ladite étape consistant à obtenir l'ensemble de données comprend des étapes consistant à :
obtenir (610, 611) un mot intermédiaire, dans lequel les données sont organisées selon une orientation prédéterminée, par décalage dudit mot de données d'une valeur de décalage déterminée à partir de ladite information de position et suivant une direction prédéterminée fonction de ladite orientation ;
obtenir (612, 613) l ' ens emb le de donné es p ar dé calage du mot intermédiaire d'une valeur de décalage déterminée à partir de ladite information de taille et suivant une direction inverse à ladite direction prédéterminée.
PCT/EP2011/055217 2010-04-02 2011-04-04 Dispositif de traitement permettant d'extraire un ensemble de données d'un mot de données, circuit électronique et procédé d'extraction de données correspondants WO2011121136A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1052542 2010-04-02
FR1052542A FR2958429B1 (fr) 2010-04-02 2010-04-02 Dispositif de traitement permettant d'extraire un ensemble de donnees d'un mot de donnees, circuit electronique et procede d'extraction de donnees correspondants

Publications (1)

Publication Number Publication Date
WO2011121136A1 true WO2011121136A1 (fr) 2011-10-06

Family

ID=43003425

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2011/055217 WO2011121136A1 (fr) 2010-04-02 2011-04-04 Dispositif de traitement permettant d'extraire un ensemble de données d'un mot de données, circuit électronique et procédé d'extraction de données correspondants

Country Status (2)

Country Link
FR (1) FR2958429B1 (fr)
WO (1) WO2011121136A1 (fr)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0814614A2 (fr) * 1996-06-19 1997-12-29 Hewlett-Packard Company Décodeur Huffman à haut débit
US5986588A (en) * 1996-12-24 1999-11-16 Lg Electronics, Inc. Bit stream parsing apparatus for audio decoder using normalizing and denormalizing barrel shifters
US20040021591A1 (en) * 2002-05-22 2004-02-05 Satoshi Maruya Processor, encoder, decoder, and electronic apparatus
US20050168362A1 (en) * 2004-01-29 2005-08-04 Matsushita Electric Industrial Co., Ltd. Variable length decoding device and variable length decoding method and reproducing system
WO2008034094A2 (fr) * 2006-09-15 2008-03-20 Nemochips, Inc. Processeur entropique de décodage

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0814614A2 (fr) * 1996-06-19 1997-12-29 Hewlett-Packard Company Décodeur Huffman à haut débit
US5986588A (en) * 1996-12-24 1999-11-16 Lg Electronics, Inc. Bit stream parsing apparatus for audio decoder using normalizing and denormalizing barrel shifters
US20040021591A1 (en) * 2002-05-22 2004-02-05 Satoshi Maruya Processor, encoder, decoder, and electronic apparatus
US20050168362A1 (en) * 2004-01-29 2005-08-04 Matsushita Electric Industrial Co., Ltd. Variable length decoding device and variable length decoding method and reproducing system
WO2008034094A2 (fr) * 2006-09-15 2008-03-20 Nemochips, Inc. Processeur entropique de décodage

Also Published As

Publication number Publication date
FR2958429B1 (fr) 2012-11-30
FR2958429A1 (fr) 2011-10-07

Similar Documents

Publication Publication Date Title
US20190320194A1 (en) Virtual frame buffer system and method
FR2782592A1 (fr) Dispositif et procede de compression de donnees d'images recues a partir d'un capteur d'images a configuration bayer, et systeme utilisant ce dispositif
EP1619589A1 (fr) Procédé de programmation d'un contrôleur de DMA dans un système sur puce et système sur puce associé
WO2007051808A1 (fr) Procede de gestion de polices de caracteres a l'interieur de scenes multimedia, programme d'ordinateur et terminal correspondants
WO2006120664A3 (fr) Systeme et procédé de traitement de données
CN109840879B (zh) 图像渲染方法、装置、计算机存储介质及终端
US20170070238A1 (en) Method for lossless data compression / depression and device thereof
CN109819317A (zh) 一种视频处理方法、装置、终端和存储介质
CN108093293A (zh) 一种视频渲染方法及系统
CN106254877A (zh) 视频处理系统
CN101431632A (zh) 一种电视机图片保存和开机画面显示方法、系统及电视机
US9020282B2 (en) Coder based partial image storage and retrieval
US20180352245A1 (en) Methods and apparatus for multi-encoder processing of high resolution content
WO2011121136A1 (fr) Dispositif de traitement permettant d'extraire un ensemble de données d'un mot de données, circuit électronique et procédé d'extraction de données correspondants
FR2823050A1 (fr) Dispositif implementant conjointement un post-traitement et un decodage de donnees
TWI423682B (zh) 影像處理方法
CN104012078B (zh) 图像数据的感知无损压缩以减少存储器带宽和存储
EP3147811B1 (fr) Stockage et lecture d'un code d'authentification de message dans une mémoire externe
KR101811774B1 (ko) 그래픽 처리 장치 및 방법
EP3158749B1 (fr) Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants
EP3423978A1 (fr) Procede de d'affichage d'une animation lors de la phase de demarrage d'un dispositif electronique et dispositif electronique associe
WO2020169781A1 (fr) Procédé permettant de dissimuler des données dans une image ou un flux vidéo à l'intérieur d'une chaîne de compression
EP3716086A1 (fr) Accès direct en mémoire
EP0680015B1 (fr) Dispositif d'alimentation en pixels d'une série d'opérateurs d'un circuit de compression d'images mobiles
CN109769129A (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: 11711921

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11711921

Country of ref document: EP

Kind code of ref document: A1