The application relates generally to data processing, and, more particularly, to a buffer architecture for data organization.
Data storage is relevant to a number of different applications. One exemplary application relates to a decoding operation. In particular, a number of different components may be used to perform different parts of the decoding operation. Data is typically transferred between such components using different types of data buffers. Moreover, these different components may output and process the data in different types of formats.
Embodiments of the invention may be best understood by referring to the following description and accompanying drawing that illustrate such embodiments. The numbering scheme for the Figures included herein is such that the leading number for a given reference number in a Figure is associated with the number of the Figure. For example, a system 100 can be located in
Embodiments of the invention are described in reference to a video decoding operation. However, embodiments are not so limited. Embodiments may be used in any of a number of different applications (encoding operations, etc.). In particular, embodiments may be used in any application wherein different components exchange data through some type of data storage/storage medium.
The data storage and logic 114A-114N may include different types of machine-readable medium. For example, the machine-readable medium may be volatile media (e.g., random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.). The machine-readable medium may be different types of RAM (e.g., Synchronous Dynamic RAM (SDRAM), DRAM, Double Data Rate (DDR)-SDRAM, etc.).
The variable length decoder 102 is coupled to receive a compressed bit stream 112. In some embodiments, the compressed bit stream may be encoded data that is coded based on any of a number of different decoding standards. Examples of the different coding standards include Motion Picture Experts Group (MPEG)-2, MPEG-4, Windows Media (WM)-9, etc. For more information regarding various MPEG-2 standards, please refer to “International Organization for Standardization (ISO)/International Electrotechnical Commission (IEC) 13818-2:2000 Information Technology—Generic Coding of Moving Pictures and Associated Audio Information: Video” and related amendments. For more information regarding various MPEG-4 standards, please refer to “ISO/IEC 14496 Coding of Audio-Visual Objects—Part 2: Video” and related amendments. A more detailed description of the packets 114 and the generation thereof by the variable length decoder 102 is set forth below.
The variable length decoder 102 may generate macroblock packets 130 based on the compressed bit stream 112. The variable length decoder 102 is coupled to store the macroblock packets 130 into the data storage and logic 114A.
The run level decoder 104 is coupled to receive the macroblock packets 130 from the data storage and logic 114A. The run level decoder 104 may generate coefficient data 132 based on the macroblock packets 130. The run level decoder 104 is coupled to store the coefficient data 132 into the data storage and logic 114B. The DCT logic 106 is coupled to receive the coefficient data 132 from the data storage and logic 114B. The DCT logic 106 may generate pixels 134 based on the coefficient data 132. For example, the DCT logic 106 may generate pixels for I-frames or residues for the P-frames. The DCT logic 106 is coupled to store the pixels 134 into the data storage and logic 114C.
The motion compensation logic 108 is coupled to receive the pixels 134 from the data storage and logic 114C and to receive reference pixels 140. The motion compensation logic 108 may generate pel data 136 based on the pixels 134 and the reference pixels 140. The motion compensation logic 108 is coupled to store the pel data 136 into the data storage and logic 114N. The deblock filter 112 is coupled to receive the pel data 136 from the data storage and logic 114N. The deblock filter 112 may generate pel output 122 based on the pel data 136.
A more detailed description of the data storage and logic 114 is now set forth. In particular,
The data storage and logic 114 includes a pattern memory 224, a data buffer A 226 and a data buffer B 228. The pattern memory 224, the data buffer A 226 and the data buffer B 228 may be different types of machine-readable medium (as described above). The pattern memory 224, the data buffer A 226 and the data buffer B 228 may be part of a same or different machine-readable mediums. The port A control logic 220 and the port B control logic 222 may control the reading and writing of data from and to the data buffer A 226 and the data buffer B 228.
Through the command channel A 202 and the data channel A 204, the port A control logic 220 may be coupled to a first data processor component. Through the command channel B 206 and the data channel B 204, the port B control logic 222 may be coupled to a second data processor component. In particular, the first data processor component may output data, wherein the port A control logic 220 stores such data in the data buffer A 226 or the data buffer B 228. The port B control logic 222 may retrieve this data for further processing by the second data processor component.
In some embodiments, the operations of the port A control logic 220 and the port B control logic 222 may be based on a ping-pong type operation. The port A control logic 220 may write data into either the data buffer A 226 or the data buffer B 228, while the port B control logic 222 may be reading data from the other one. In other words, in some embodiments, data cannot be read from the data buffer A 226 and the data buffer B 228 while data is being written thereto.
Referring back to
The port A control logic 220 may store the data into the data buffer A 226 and the data buffer B 228 using a number of different organization types. For example, in some embodiments, the data buffer A 226 and the data buffer 228 may be partitioned into any of a number of different blocks. The port A control logic 220 may store data into the different blocks in different order. Examples of the type of order may be row wise, column wise, zigzag, random, etc. In some embodiments, the port A control logic 220 may store the data into the data buffer A 226 or the data buffer B 228 based the patterns stored in the pattern memory 224. In some embodiments, the port A control logic 220 may receive data from a first data processor component, which is of a first data organization. For example, the data may be in a native format for the first processor component. The port A control logic 220 may rearrange the received data such that the data is stored in a second data organization. For example, the data may be rearranged to be stored in a native format for the second processor component. Accordingly, the port B control logic 222 may retrieve the data (which is in a native format for the second data processor component) for processing by the second data processor component. Therefore, neither the first data processor component nor the second data processor component needs to rearrange the data prior to processing by the second processor component. A more detailed description of different data organizations is set forth below in conjunction with
The data storage and logic 114 includes a control logic 314 that is coupled to read data from registers 310 and registers 312. The registers 310 may be representative of the command channel A 202 and the data channel A 204. The registers 312 may be representative of the command channel B 206 and the data channel B 208. The port A control logic 220 is coupled to read data from the registers 310. The port B control logic 220 is coupled to write data to the registers 312. Returning to
A first output of the control logic 314 is coupled to a first input of the port A control logic 220. A second output of the control logic 314 is coupled to a first input of the port B control logic 222. A first output of the port A control logic 220 is coupled to an input of a multiplexer 302. A first output of the multiplexer 302 is coupled to an input of the data buffer A 226, and a second output of the multiplexer 302 is coupled an input of the data buffer B 228. An output of the data buffer A 226 is coupled to a first input of a multiplexer 304. An output of the data buffer B 228 is coupled to a second input of the multiplexer 304. An output of the multiplexer 304 is coupled to a second input of the port B control logic 222.
A second output of the port A control logic 220 is coupled to a first input of a multiplexer 306. A second output of the port B control logic 222 is coupled to a second input of the multiplexer 306. An output of the multiplexer 306 is coupled to an input of the pattern memory 224. An output of the pattern memory 224 is coupled to an input of a multiplexer 308. A first output of the multiplexer 308 is coupled to a second input of the port A control logic 220. A second output of the multiplexer 308 is coupled to a second input of the port B control logic 222.
The port A control logic 220 and the port B control logic 222 may write and read to the pattern memory 224 through the multiplexer 306 and the multiplexer 308, respectively. For example, the port A control logic 220 or the port B control logic 222 may read the pattern stored in the pattern memory 224 to determine how to write to and read data from the data buffer A 226 and the data buffer B 228. Moreover, the port A control logic 220 or the port B control logic 222 may store a pattern in the pattern memory 224. The port A control logic 220 may write to the data buffer A 226 and the data buffer B 228 through the multiplexer 302. The port A control logic 222 may read from the data buffer A 226 and the data buffer B 228 through the multiplexer 304.
The control logic 314 may control the operations of the port A control logic 220 and the port B control logic 222. For example, the control logic 314 may cause the port A control logic 220 to write to the data buffer 226 based on the pattern stored in the pattern memory 224 for a given time period. The control logic 314 may cause the port B control logic 222 to read from the data buffer 228 in a given order for the same time period. A more detailed description of the operations of the data storage and logic 114 is set forth below in conjunction with
While illustrated such that port A is the write port and port B is the read port, embodiments are not so limited. For example, the port A may be the read port and port B may be the write port. Moreover, in some embodiments, the port A and the port B may be read/write ports. Accordingly, the arrows in
While illustrated to include a data storage and logic with two ports, embodiments are not so limited. In some embodiments, the system 100 may include a lesser or greater number of the data storage and logic 114. For example, the system 100 may include only one of the data storage and logic 114, which includes ports for the different data processor components. Accordingly, referring to
Embodiments are not limited to the data organizations shown in
At block 502, the data storage and logic 114 receives data that is of a first data organization from a first data processor component. For example, with reference to
At block 504, (based on commands received on command channel 202/206 (see
At block 506, upon determining that the first data organization is different from the native data organization, (based on commands received on command channel 202/206 (see
At block 508, upon determining that the native data organization is based on a pattern that is stored in the pattern memory 224, the data storage and logic 114 retrieves the pattern from the pattern memory 224. With reference to
At block 510, the data storage and logic 114 rearranges the data into the native data organization using the pattern that is stored in the pattern memory 224. With reference to
At block 512, the data storage and logic 114 rearranges the data into the native data organization without using the pattern that is stored in the pattern memory 224. With reference to
At block 514, the data storage and logic 114 stores the data into the data buffer A 226 or the data buffer B 228 for subsequent retrieval by the next processor component. As described above, with reference to
At block 516, the data storage and logic 114 retrieves the data from the data buffer A 226 or the data buffer B 228 for subsequent processing by the next processor component. With reference to
Accordingly, as described, some embodiments allow for the logic that is part of the data storage to receive and rearrange the data into an organization that is native to the next processor component to process the data. Therefore, the next processor component may not be required to rearrange data that is not in accordance with a given order or type of data organization.
The data storage and logic described herein may operate in a number of different environments, according to some embodiments used to execute such operations is now described. In particular,
The image processor 602 is coupled to memories 604A-604B. In some embodiments, the memories 604A-604B are different types of random access memory (RAM). For example, the memories 604A-604B are double data rate (DDR) Synchronous Dynamic RAM (SDRAM).
The image processor 602 is coupled to a bus 614, which in some embodiments, may be a Peripheral Component Interface (PCI) bus. The system 600 also includes a memory 606, a host processor 608, a number of input/output (I/O) interfaces 610 and a network interface 612. The host processor 608 is coupled to the memory 606. The memory 606 may be different types of RAM (e.g., Synchronous Dynamic RAM (SDRAM), DRAM, DDR-SDRAM, etc.), while in some embodiments, the host processor 608 may be different types of general purpose processors. The I/O interface 610 provides an interface to I/O devices or peripheral components for the system 600. The I/O interface 610 may comprise any suitable interface controllers to provide for any suitable communication link to different components of the system 600. The I/O interface 610 for some embodiments provides suitable arbitration and buffering for one of a number of interfaces.
For some embodiments, the I/O interface 610 provides an interface to one or more suitable integrated drive electronics (IDE) drives, such as a hard disk drive (HDD) or compact disc read only memory (CD ROM) drive for example, to store data and/or instructions, for example, one or more suitable universal serial bus (USB) devices through one or more USB ports, an audio coder/decoder (codec), and a modem codec. The I/O interface 610 for some embodiments also provides an interface to a keyboard, a mouse, one or more suitable devices, such as a printer for example, through one or more ports. The network interface 612 provides an interface to one or more remote devices over one of a number of communication networks (the Internet, an Intranet network, an Ethernet-based network, etc.).
The host processor 608, the I/O interfaces 610 and the network interface 612 are coupled together with the image processor 602 through the bus 614. Instructions executing within the host processor 608 may configure the image processor 602 for different types of image processing. For example, the host processor 608 may configure the different components of the image processor 602 for decoding operations therein. Such configuration may include the types of data organization to be input and output from the data storage and logic 114 (of
In the description, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, well-known circuits, structures and techniques have not been shown in detail in order not to obscure the understanding of this description. Numerous specific details such as logic implementations, opcodes, ways of describing operands, resource partitioning/sharing/duplication implementations, types and interrelationships of system components, and logic partitioning/integration choices are set forth in order to provide a more thorough understanding of the inventive subject matter. It will be appreciated, however, by one skilled in the art that embodiments of the invention may be practiced without such specific details. In other instances, control structures, gate level circuits and full software instruction sequences have not been shown in detail in order not to obscure the embodiments of the invention. Those of ordinary skill in the art, with the included descriptions will be able to implement appropriate functionality without undue experimentation.
References in the specification to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Embodiments of the invention include features, methods or processes that may be embodied within machine-executable instructions provided by a machine-readable medium. A machine-readable medium includes any mechanism that provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, a network device, a personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.). In an exemplary embodiment, a machine-readable medium includes volatile and/or non-volatile media (e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.), as well as electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.)).
Such instructions are utilized to cause a general-purpose or special-purpose processor, programmed with the instructions, to perform methods or processes of the embodiments of the invention. Alternatively, the features or operations of embodiments of the invention are performed by specific hardware components that contain hard-wired logic for performing the operations, or by any combination of programmed data processing components and specific hardware components. Embodiments of the invention include software, data processing hardware, data processing system-implemented methods, and various processing operations, further described herein.
A number of figures show block diagrams of systems and apparatus for a buffer architecture for data organization, in accordance with some embodiments of the invention. A figure shows a flow diagram illustrating operations for a buffer architecture for data organization, in accordance with some embodiments of the invention. The operations of the flow diagram have been described with reference to the systems/apparatus shown in the block diagrams. However, it should be understood that the operations of the flow diagram could be performed by embodiments of systems and apparatus other than those discussed with reference to the block diagrams, and embodiments discussed with reference to the systems/apparatus could perform operations different than those discussed with reference to the flow diagram.
In view of the wide variety of permutations to the embodiments described herein, this detailed description is intended to be illustrative only, and should not be taken as limiting the scope of the inventive subject matter. What is claimed, therefore, are all such modifications as may come within the scope and spirit of the following claims and equivalents thereto. Therefore, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.