This application claims the benefit, under 35 U.S.C. 119, of European Patent application no. 05106000.2 filed 1 Jul. 2005.
The invention relates to a method and an apparatus for managing memory accesses for an AV decoder, in particular for managing the demultiplexing and data handling involved in decoding and playing back multi-component AV bitstreams.
AV data are binary data read out from storage media like CD-ROM, VCD, S-VCD, DVD or BD or received through a transmission channel, which contain segments destined for a set of one or more component decoders, like Audio, Video, or Sub-picture. In an AV playback device, data are arriving from the source (storage media or transmission channel) at a first data rate which may be time-varying, near-constant or constant-in-sections; they are typically fed to a buffer memory in order to compensate for the different instantaneous or short-term data rates of the data source and the data destination (the component decoders).
In case of optical media readout, the buffer memory is sometimes called track buffer or mechanical buffer; here it also serves to bridge those time intervals when the incoming data stream is interrupted. Such interruption happens whenever the optical pickup is being sent to a different location on the media to jump to a different target address. It also happens, in the form of being sent back a few tracks, as part of buffer control in cases of low data consumption, e.g. when decoding low-activity passages of video and/or audio signal.
Conventionally, data are organised in sectors of often constant length, and sectors contain pieces of payload. Very commonly, the payload of each sector is implicitly guaranteed to be destined to one component decoder only.
In many known AV decoders, data segments are re-copied from the track buffer into individual decoder bit buffers associated with the component decoders. Conceptually, the task of delivering each data segment to the component detector it is destined for is a demultiplexing task. In state of the art devices, sectors are read into memory and then the decoder payload of the sectors is copied to the appropriate decoder bit buffers. From each of the decoder bit buffers, the associated decoder receives its input, and will often copy the data in turn to an internal working memory used during the decoding proper.
EP 0917147 A describes a method and apparatus for improved controlling of a track buffer, where an input data stream is written to a data buffer and is controlled in such a way that at least one output data stream derived from the input data stream is forwarded to an associated data decoder by means of a chained list generated by a software demultiplexer. The track buffer TB and the decoder bit buffers are mapped into the same physical memory, and the component decoders directly process the data that were initially written to the track buffer, using a chained list technique. In this way re-copying data from the track buffer TB into the decoder bit buffers can be avoided.
The known method and apparatus can be seen to have the disadvantage that although they avoid copy operations from track buffer to decoder bit buffers, still a copy operation has to be performed when data are accepted from a decoder bit buffer into a decoder internal working memory which prior art component decoders require. Decoder internal working memory is necessary because efficient compression algorithms employ reference data that are derived from previously processed data, like pieces of previously decoded signal or of a predicted signal derived therefrom. Such reference data are typically held in the decoder internal memory, and prior art component decoders expect this memory at addresses which either are fixed or can only be changed occasionally as part of a decoder setup procedure.
First reading data into memory and later on copying the same data into dedicated decoder memory areas summarises into a big required memory access bandwidth and hence instrument hardware cost. A problem to be solved by the invention hence is to improve the memory management to that respect.
The invention achieves this by making it possible to avoid altogether any data copying or data moving inside the memory, after data have once been written into it.
An apparatus according to the invention is connected to a memory device that covers or is addressable in an address space. The apparatus has two or more decoders and receives and decodes a data stream organised in sectors which contain payload portions individually destined for one of the decoders. At least one of the decoders generates decoder read and/or write addresses from within a predetermined subset of the address space, and in that way requests data to be written to or read from memory. According to the invention, the apparatus writes each sector of the data stream into the memory device at most once, it has an address translator which translates the decoder addresses into translated addresses which are not confined to be from within the predetermined subset. The apparatus uses the translated addresses for accessing the memory device. The advantage is that in exchange for a moderate additional hardware, namely the address translator, repeated writing and re-writing of identical data is avoided, hence memory bandwidth requirement is drastically reduced.
Advantageously, the address translator of the apparatus receives, for sectors as they are being received one after the other, a particular destination information describing the destination of the payload portions of the sectors and particular memory addresses under which the received sectors have been stored in the memory; it further receives a second kind of memory addresses, namely addresses of those data that selected ones of the decoders request to access; it translates the memory addresses of the second kind into a third kind of memory addresses using the destination informations and the first memory addresses of the sectors received so far; and it provides this third kind of memory addresses so that the requesting decoder can access the requested data in the memory. It is of advantage that the described mechanism is actually not limited to decoders requesting to read data from memory; it can also be used to realise requests where decoders want to write or modify the memory data at certain locations. Such modifications occur, for example, during video dcoding, when a reconstructed picture is being calculated as the additive superposition of a predicted picture and a decoded prediction error.
Advantageously, the address translator of the apparatus comprises a set of address translation units, each associated to one of the decoders. Each address translation unit receives, as memory addresses of a first kind, addresses of those received sectors that are destined for the decoder associated to the address translation unit, and it receives, as memory addresses of a second kind, addresses that the associated decoder requests to access. With these data, the address translation unit translates the memory addresses of the second kind into memory addresses of a third kind, namely addresses under which the associated decoder can really access the data it requests. This structure has the advantage of being regular, hence it can easily be designed and scaled to different decoder configurations.
Advantageously, also, each of the described address translation units comprises a set of address translation stages each having an input and an output respectively connected in parallel. Each of the address translation stages, in turn, comprises local memory means for an address range and for an address offset, an address comparator which checks whether or not an input address present at the input is within the address range, an adder to add the address offset to the input address, and a gate that passes the addition result to the output of the address translation stage if the check is true. This structure has the advantage that it consists of mostly simple gate logic that is apt to be implemented in a way not causing additional clock delays.
Memory accesses are managed in such an apparatus, according to the invention, in that the data of received sectors are stored into memory under a first memory address; the first memory address and the destination information of the received sector is provided to address translation means; when one of the decoders requests data from a second memory address, the second memory address is forwarded to the address translation means; in the address translating means, the second memory address is translated into a third memory address; the requested data is retrieved from the memory using the third memory address and is transferred to the decoder. This method advantageously allows to continue using conventional decoder designs which expect their working memory at a fixed subset of the overall address space, while the true memory accesses take place in an arbitrary, scattered subset of the overall address space, flexibly adapting itself to any order or arrangement in which incoming sectors may have been written to memory.
Advantageously, when the address translation means comprises a set of address translation units each associated to one of the decoders, in the step of providing, the first memory address is provided to the address translation unit associated with the decoder of the received sector; in the step of forwarding, the second memory address is forwarded to the address translation unit associated with the decoder which requested the data, and the step of translating is performed in the address translation unit associated with the decoder which requested the data. This has the advantage of breaking up the overall computations into a set of basic and simple data manipulations.
Also, it is of advantage, if for translating, the second memory address is compared to a set of address ranges, and the third memory address is calculated from the second memory address using an address offset associated with that address range in which the second memory address is.
In this case, when one of the decoders requests data from a linear sequence of second memory addresses starting with a start memory address and ending with an end memory address, the step of translating advantageously comprises substeps of comparing the start memory address to the set of address ranges; of calculating a translated start memory address from the start memory address using the address offset associated with that address range in which the start memory address is; of calculating, if the end memory address also is in the address range, a translated end memory address from the end memory address using the address offset, and retrieving the requested data from the memory means using the translated start memory address and the translated end memory address; and of retrieving, if the end memory address is outside the address range, a part of the requested data from the memory means using the translated start memory address and the address range and repeating the substeps with a modified start memory address.
With other words, in the present invention a dedicated memory management is proposed, which while avoiding data copying within RAM altogether, nevertheless provides to the decoders a linear address space to work upon. Realisations of the proposed memory management are described, which constitute small separate pieces of address conversion logic, which easily fit in between conventional approaches for data read-in and for decoder IC cores.
Exemplary embodiments of the invention are illustrated in the drawings and are explained in more detail in the following description. The explanations use an example where the data destinations are individual component decoders of an AV decoder or player. However, it is obvious to the expert in the field, that the principles of the invention can also be used in systems where the data destinations are any other data consuming or data accessing units or sub-units. In this sense, the term “decoders” in the following shall be understood to encompass “data sink”, “data destination” or “data accessor” in general.
In the figures:
It must be noted that the sequence of sectors S1-S6 shown in
In
Whenever the file manager 401 receives an incoming sector of the sector stream 404, it retrieves 402 from the sector buffer space map 403 an address WA indicating a free space or a no longer used space in the sector buffer 405 that is ready to receive new data. The file manager 401 then writes 410 the sector into the sector buffer 405 at addresses starting from the address WA, marks the address WA in the sector buffer space map 403 as no longer free, and indicates 406 to the demultiplexer 407 the availability of a new sector as well as the address WA used for storing it. The demultiplexer 407, using the address WA, inspects the new sector in the sector buffer 405, and extracts or otherwise generates a payload position information PPI and a destination information DI both of which it forwards 409 to the memory controller 411. The memory controller 411, using the destination information DI, forwards 415 the payload position information PPI to that one among the payload maps 412, 413, 414 that is associated with the destination of the payload.
From then on, whenever a decoder DA, DB, DC sends 416, 417, 418 a data request to the memory controller 411, the memory controller 411, using the payload map 412, 413, 414 associated to the requesting decoder DA, DB, DC, delivers 422 requested data RD to the requesting decoder DA, DB, DC or allows the requesting decoder DA, DB, DC a write access to the requested data RD.
It has been described above, how incoming sectors are written into the sector buffer at a free sector address WA which thereupon is marked as no longer free. Correspondingly, as soon as a sector is known to be no longer needed by any of the decoders, its address WA is marked in the sector buffer space map 403 as free. This fast and simple operation is enough to guarantee that the memory at address WA will sooner or later be used again, i.e. overwritten, to receive a new incoming sector.
In the context of AV data decoding, depending on the data being presented, on user's choice and on apparatus settings, payload data destined for certain ones of the decoders DA, DB, DC may be known beforehand to be not needed during an ongoing playback. The most typical example of this are the unselected audio channels in a multi audio context. If that is the case, it will typically be the demultiplexer 407 which will recognise the pertaining sectors and exclude them from any further processing. Alternatively, in order to avoid the sector buffer being filled with garbage as much and as early as possible, one may as well implement this capability into the file manager 401, which in that case needs an at least basic demultiplexing capability of its own. Therefore any processing steps given in this description are to be understood to involve many, but not necessarily all sectors or parts of payload within a data stream.
The implementation has a file manager 501 which is connected 502 to a memory management unit 506 and has an input to receive a sector stream 404. The memory management unit 506 is connected 503 to the sector buffer space map 403, it has a data output 505 connected to the sector buffer 405 and it has a control output 504 connected to the demultiplexer 407. The control output 409 of the demultiplexer 407 is connected to the memory management unit 506.
In this case, whenever the file manager 501 receives an incoming sector of the sector stream 404, it forwards 502 it to the memory management unit 506. The memory management unit 506 then retrieves 503 from the sector buffer space map 403 the address WA, writes 505 the sector into the sector buffer 405 at address WA, and indicates 504 to the demultiplexer 407 the availability of a new sector as well as the address WA used for storing it. The demultiplexer 407 forwards 409 the payload position information PPI and the destination information DI to the memory management unit 506. The memory management unit 506, using the destination information DI, forwards 415 the payload position information PPI to that one among the payload maps 412, 413, 414 that is associated to the destination of the payload. The remaining elements or processing steps are identical to those described for
Whenever an incoming sector has been received and written into the sector buffer, the memory controller 607, using a destination information DI, forwards 608, 609, 610 the payload position information PPI to that one among the address translation units 601, 602, 603 that is associated with the destination of the payload. Of course, alternatively to each of the address translation units 601, 602, 603 being individually connected to the memory controller 607, a bus-like connection can also be used. In that case, the memory controller 607 must put onto the bus not only the payload position information PPI, but also the destination information DI or an equivalent identifier of some kind, allowing the relevant address translation unit 601, 602, 603 to react and to retrieve the PPI from the bus. The decoders DA, DB, DC send 611, 612, 613 all data requests to their associated address translation units 601, 602, 603, which translate the requested data address and send the resulting translated data requests TDR to the memory controller 607. The memory controller 607, using the translated data requests TDR, read accesses 423 the sector buffer (not shown) and delivers 422 requested data RD to the requesting decoder DA, DB, DC. Correspondingly, for servicing a write access request, the memory controller 607 receives 422 requested data RD from the requesting decoder DA, DB, DC, and, using the translated data requests TDR, stores 423 the data to the sector buffer (not shown).
When an incoming sector destined for decoder DA has been received, the control logic 701 receives the pertaining payload position information PPI through its input 608, forwards 705, 706, 707 it to one of the inactive address translation stages 702, 703, 704, to locally store the payload position information, and sets that address translation stage into the active state.
Data requests received 611 from decoder DA, are internally forwarded 708 in parallel to all address translation stages 702, 703, 704. Depending on in which of the linear subsets the requested data address falls, one of the active ones of the address translation stages 702, 703, 704 will then translate the requested data address and will output 604 the resulting translated data request TDR.
With other words, the invention describes apparatus and method for receiving and decoding a multiplexed data stream 404 organised in sectors S1-S6, Sn containing payload portions 205 individually destined for one of two or more decoders DA, DB, DC. The apparatus is connected to a memory device 405 addressable in an address space 101, 201. At least one of the decoders DA, DB, DC generates read and/or write addresses 416-418, 611-613 from within a predetermined address range that is a true subset of the address space 101, 201. For avoiding additional meory accesses caused by moving data already contained in the memory 405 into the decoder address range, the apparatus has an address translator 411, 506, 601, 602, 603 which translates the decoder addresses 416-418, 611-613 into translated addresses TDR, 604, 605, 606 and uses the translated addresses for accessing 423 the memory device 405.
Number | Date | Country | Kind |
---|---|---|---|
051 06 000 | Jul 2005 | DE | national |
Number | Name | Date | Kind |
---|---|---|---|
5463751 | Yonezawa et al. | Oct 1995 | A |
5687342 | Kass | Nov 1997 | A |
6385712 | Campbell | May 2002 | B1 |
6813735 | Kurihara et al. | Nov 2004 | B1 |
7336682 | Singh | Feb 2008 | B2 |
20020196718 | Okazaki et al. | Dec 2002 | A1 |
20050226115 | Okazaki et al. | Oct 2005 | A1 |
Number | Date | Country |
---|---|---|
0 710 029 | May 1996 | EP |
Number | Date | Country | |
---|---|---|---|
20070016753 A1 | Jan 2007 | US |