JP2011022877A - Information processing apparatus and method - Google Patents

Information processing apparatus and method Download PDF

Info

Publication number
JP2011022877A
JP2011022877A JP2009168438A JP2009168438A JP2011022877A JP 2011022877 A JP2011022877 A JP 2011022877A JP 2009168438 A JP2009168438 A JP 2009168438A JP 2009168438 A JP2009168438 A JP 2009168438A JP 2011022877 A JP2011022877 A JP 2011022877A
Authority
JP
Japan
Prior art keywords
decoding
information processing
data
data transfer
common buffer
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
JP2009168438A
Other languages
Japanese (ja)
Inventor
Koji Tsukimori
耕司 月森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2009168438A priority Critical patent/JP2011022877A/en
Publication of JP2011022877A publication Critical patent/JP2011022877A/en
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To shorten a period of time needed for a decode processing as a whole. <P>SOLUTION: When it is determined that a request command of decode (1) is transmitted, a device driver is notified of the decode (1) data are notified. The device driver creates a SGL (Scatter Gather List) for decode (1), creates a common buffer structural body for decode (1), and piles the created common buffer structural body for decode (1) on a queue 71. When the device driver receives a transfer completion notification of the data for decode (1) from decode hardware, it pushes the common buffer structural body for decode (1) from the queue 71. The present invention is applicable to an information processing system for supplying the decode hardware connected with a PCIe slot with the data for decode and performs decode processing. <P>COPYRIGHT: (C)2011,JPO&INPIT

Description

本発明は、情報処理装置および方法に関し、特に、デコード処理全体の時間を短縮することができるようにした情報処理装置および方法に関する。   The present invention relates to an information processing apparatus and method, and more particularly, to an information processing apparatus and method capable of shortening the entire decoding process.

従来、MPEG(Moving Picture Experts Group)と呼ばれる符号化方式により動画像を符号化して得られた符号化ストリームを復号する復号装置がある。規格化されてきたMPEGシリーズの中ではMPEG2が一般的ではあるが、最近では圧縮率を高めたMPEG4や、AVC(Advanced Video Coding)といった圧縮符号化方式も規格化されている。   2. Description of the Related Art Conventionally, there is a decoding device that decodes an encoded stream obtained by encoding a moving image using an encoding method called MPEG (Moving Picture Experts Group). Of the MPEG series that have been standardized, MPEG2 is common, but recently, compression coding schemes such as MPEG4 with an increased compression rate and AVC (Advanced Video Coding) have also been standardized.

このような符号化ストリームを復号する場合、例えば、マイクロコンピュータなど一般的なCPUを用いる方法がある(特許文献1参照)。   When decoding such an encoded stream, for example, there is a method using a general CPU such as a microcomputer (see Patent Document 1).

これに対して、パーソナルコンピュータにおいて符号化ストリームを復号する場合、例えば拡張ボード等によってパーソナルコンピュータに増設された、ハードウエアで構成される復号器(デコードハードウェア)を用いて復号する方法がある。   On the other hand, when a coded stream is decoded in a personal computer, there is a method of decoding using a hardware decoder (decode hardware) added to the personal computer, for example, by an expansion board.

この方法においては、パーソナルコンピュータは、符号化ストリームを復号する必要が生じたときに、その符号化ストリームを復号器に供給する。復号器は、パーソナルコンピュータから符号化ストリームを取得するとそれを復号し、ベースバンドのデータをパーソナルコンピュータに返す。   In this method, the personal computer supplies the encoded stream to the decoder when it becomes necessary to decode the encoded stream. When the decoder acquires the encoded stream from the personal computer, the decoder decodes the encoded stream and returns baseband data to the personal computer.

以上のように、この方法の場合、パーソナルコンピュータと復号器の間でデータやコマンドの転送を行う必要がある。   As described above, in this method, it is necessary to transfer data and commands between the personal computer and the decoder.

図1を参照して、パーソナルコンピュータと復号器とのデータ転送の第1の方法について説明する。なお、図1の例においては、2つのデコード処理が連続で行われる例が示されている。   A first method of data transfer between the personal computer and the decoder will be described with reference to FIG. In the example of FIG. 1, an example in which two decoding processes are performed in succession is shown.

図1の上段には、パーソナルコンピュータ上で動作するアプリケーションの処理が示されている。中段には、パーソナルコンピュータ上のデバイスドライバと復号器間のデータ転送処理が示されている。下段には、復号器の処理が示されている。以下、図面の丸数字は、括弧付き数字で置き換えて説明する。   The upper part of FIG. 1 shows processing of an application that runs on a personal computer. The middle part shows the data transfer process between the device driver on the personal computer and the decoder. The lower part shows the processing of the decoder. In the following description, the circled numbers in the drawings are replaced with numbers in parentheses.

まず、アプリケーション上でデコード(1)要求コマンドが発行されると、デバイスドライバにおいて、パーソナルコンピュータ上の主記憶領域に置かれたデコード(1)用データの管理処理が行われ、復号器に対して、デコード(1)用データ転送が行われる。   First, when a decode (1) request command is issued on the application, the device driver performs a management process of the decode (1) data placed in the main storage area on the personal computer, and Decode (1) data transfer is performed.

デコード(1)用データ転送が終了すると、デバイスドライバから、復号器に対してデコード(1)用データ転送完了通知が行われ、復号器においてデコード(1)処理が開始される。   When the data transfer for decoding (1) ends, the device driver notifies the decoder of the completion of data transfer for decoding (1), and the decoder starts the decoding (1) process.

復号器でのデコード(1)処理が完了すると、データ転送処理として、アプリケーションに対してデコード(1)用結果データ転送が行われる。アプリケーション上では、そのデコード(1)用結果データが取得された後で、次のデコード(2)要求コマンドが発行される。   When the decoding (1) processing in the decoder is completed, decoding (1) result data transfer is performed to the application as data transfer processing. On the application, after the decoding (1) result data is acquired, the next decoding (2) request command is issued.

その後、デコード(1)の処理と同様に、デバイスドライバにおいて、パーソナルコンピュータ上の主記憶領域に置かれたデコード(2)用データの管理処理が行われ、復号器に対してデコード(2)用データ転送が行われる。   After that, in the same way as the process of decoding (1), the device driver performs the management process of the data for decoding (2) placed in the main storage area on the personal computer, and the decoder performs the processing for decoding (2). Data transfer is performed.

デコード(2)用データ転送が終了すると、デバイスドライバから、復号器に対してデコード(2)用データ転送完了通知が行われ、復号器において、デコード(2)処理が開始される。   When the data transfer for decoding (2) is completed, the device driver notifies the decoder of the completion of data transfer for decoding (2), and the decoder starts the decoding (2) process.

復号器でのデコード(2)処理が完了すると、データ転送処理として、アプリケーションに対してデコード(2)用結果データ転送が行われる。   When the decoding (2) processing in the decoder is completed, decoding (2) result data transfer is performed to the application as data transfer processing.

このように、第1の方法においては、復号器によるデコードの完了を待ってから、次のデコード要求が行われる。このため、第1の方法においては、データ転送処理における、デコード(1)用データ転送完了通知を行ってから、次のデコード(2)用データの管理処理を行うまでの時間T1に、タイムラグが生じていた。   As described above, in the first method, after the decoding by the decoder is completed, the next decoding request is made. For this reason, in the first method, there is a time lag at the time T1 from the notification of the completion of the data transfer for decoding (1) in the data transfer processing to the time when the management processing of the data for decoding (2) is performed. It was happening.

この結果、復号器においては、デコード(1)処理を終了してから、デコード(2)処理を開始するまでの時間T2に示されるように、高速で動作するデコード処理を実行する時間間隔が大幅に開いてしまい、全体的なデコード処理時間の短縮を行うことが困難であった。   As a result, in the decoder, as shown in time T2 from the end of the decoding (1) process to the start of the decoding (2) process, the time interval for executing the decoding process that operates at a high speed is greatly increased. It was difficult to reduce the overall decoding processing time.

次に、図2を参照して、パーソナルコンピュータと復号器とのデータ転送の第2の方法について説明する。なお、図2の例においても、図1の例と同様に、2つのデコード処理が連続で行われる例が示されている。   Next, a second method of data transfer between the personal computer and the decoder will be described with reference to FIG. 2 also shows an example in which two decoding processes are performed continuously, as in the example of FIG.

まず、アプリケーション上でデコード(1)要求コマンドが発行されると、デバイスドライバにおいて、パーソナルコンピュータ上の主記憶領域に置かれたデコード(1)用データの管理処理が行われ、復号器に対して、デコード(1)用データ転送が行われる。   First, when a decode (1) request command is issued on the application, the device driver performs a management process of the decode (1) data placed in the main storage area on the personal computer, and Decode (1) data transfer is performed.

このとき、アプリケーション上においては、アプリケーション上に設けられたデコード要求コマンドを複数回実行可能にする機構(コマンドキューイング)により、次のデコード(2)要求コマンドがキューイングされる。   At this time, on the application, the next decode (2) request command is queued by a mechanism (command queuing) that allows the decode request command provided on the application to be executed a plurality of times.

デコード(1)用データ転送が終了すると、デバイスドライバから、復号器に対してデコード(1)用データ転送完了通知が行われ、復号器においてデコード(1)処理が開始される。   When the data transfer for decoding (1) ends, the device driver notifies the decoder of the completion of data transfer for decoding (1), and the decoder starts the decoding (1) process.

また、アプリケーションに対するデコード(1)用データ転送完了通知も行われ、アプリケーション上においては、キューイングされていた次のデコード(2)要求コマンドが、デコード(2)用結果データの取得を待たずに発行される。   In addition, the decode (1) data transfer completion notification to the application is also made, and the next decode (2) request command queued on the application does not wait for acquisition of the result data for decode (2). publish.

これに対応して、デバイスドライバにおいて、パーソナルコンピュータ上の主記憶領域に置かれたデコード(2)用データの管理処理が行われる。   Correspondingly, the device driver performs a management process of data for decoding (2) placed in the main storage area on the personal computer.

一方、復号器でのデコード(1)処理が完了すると、データ転送処理として、パーソナルコンピュータに対してデコード(1)用結果データ転送が行われ、アプリケーション上では、デコード(1)用結果データが取得される。   On the other hand, when the decoding (1) process at the decoder is completed, the decoding (1) result data is transferred to the personal computer as the data transfer process, and the decoding (1) result data is obtained on the application. Is done.

デコード(1)用結果データ転送後、デコード(2)用データの管理処理が終了すると、すぐに、復号器に対して、デコード(2)用データ転送が行われる。   After the decoding (1) result data transfer, when the decoding (2) data management process is completed, the decoding (2) data transfer is performed to the decoder.

デコード(2)用データ転送が終了すると、デバイスドライバから、復号器に対してデコード(2)用データ転送完了通知が行われ、復号器においてデコード(2)処理が開始される。復号器でのデコード(2)処理が完了すると、データ転送処理として、アプリケーションに対してデコード(2)用結果データ転送が行われる。   When the data transfer for decoding (2) is completed, the device driver notifies the decoder of the completion of data transfer for decoding (2), and the decoder starts the decoding (2) process. When the decoding (2) processing in the decoder is completed, decoding (2) result data transfer is performed to the application as data transfer processing.

このように、第2の方法においては、アプリケーションによるデコードコマンドキューイングなどが用いられる。これにより、デコード(1)用結果データ転送の間に、次のデコード(2)要求コマンドによるデコード(2)用データ完了処理を行い、その後、すぐに、デコード(2)用データ転送を開始することが可能になる。しかしながら、先のデコード(1)処理の間には、次のデコード(2)用データ転送を行うことは困難であった。   Thus, in the second method, decode command queuing by an application is used. As a result, during the decode (1) result data transfer, the decode (2) data completion processing is performed by the next decode (2) request command, and then the decode (2) data transfer is started immediately. It becomes possible. However, it is difficult to transfer the next data for decoding (2) during the previous decoding (1) process.

この結果、第2の方法の復号器においても、デコード(1)処理を終了してから、デコード(2)処理を開始するまでの時間T3に示されるように、デコード処理を実行する時間間隔が大幅に開いてしまい、全体的なデコード処理時間の短縮が難しかった。   As a result, also in the decoder of the second method, the time interval for executing the decoding process is as shown by time T3 from the end of the decoding (1) process to the start of the decoding (2) process. It opened greatly and it was difficult to shorten the overall decoding process time.

さらに、パーソナルコンピュータと復号器とのデータ転送の第3の方法を説明する。復号器上に搭載されるDMAC(Direct Memory Access Controller)は、1つのデータ転送方向(DMA ChannelまたはDMA Adapterと称する)に対し、RxとTxといった個別の制御レジスタを有している。   Further, a third method of data transfer between the personal computer and the decoder will be described. A direct memory access controller (DMAC) mounted on the decoder has individual control registers such as Rx and Tx for one data transfer direction (referred to as DMA channel or DMA adapter).

DMA上の各制御レジスタは、1方向のデータ転送中は、その方向におけるデータ転送が不可能であるが、逆方向のデータ転送は可能である。第3の方法においては、その制御レジスタで、1回のデータ転送要求につき、1つのSGL(Scatter Gather List)が作成され、コモンバッファへのコピーが行われてから、データ転送が行われる。   Each control register on the DMA cannot transfer data in one direction during data transfer in one direction, but can transfer data in the reverse direction. In the third method, one SGL (Scatter Gather List) is created for each data transfer request in the control register, data is copied to the common buffer, and then data transfer is performed.

すなわち、第3の方法においては、デバイスドライバがアプリケーションからデータ要求を受信後に、データ転送に必要となるデータ管理処理(SGLの作成とコモンバッファへのコピー)を行っていた。この結果、データ転送のための前処理に要する時間がボトルネックとなっていた。   That is, in the third method, after the device driver receives a data request from an application, data management processing (SGL creation and copying to a common buffer) necessary for data transfer is performed. As a result, the time required for preprocessing for data transfer has become a bottleneck.

特開2008−85615号公報JP 2008-85615 A

以上のように、従来においては、復号器のデコードがいくら高速化されても、データ転送時間がボトルネックとなり、全体的なデコード処理時間の短縮を行うことが困難であった。したがって、デコード処理全体の高速化の効果を得ることが困難であった。   As described above, conventionally, even if the decoding speed of the decoder is increased, the data transfer time becomes a bottleneck, and it is difficult to reduce the entire decoding processing time. Therefore, it is difficult to obtain the effect of speeding up the entire decoding process.

本発明はこのような状況に鑑みてなされたものであり、デコード処理全体の時間を短縮することができるようにするものである。   The present invention has been made in view of such a situation, and makes it possible to shorten the time of the entire decoding process.

本発明の一側面の情報処理装置は、他の情報処理装置が行う所定の処理に対して発行される要求コマンドに対応して、必要な主記憶上のデータの管理リストを作成し、前記管理リストを含む、仮想メモリ空間と物理メモリ空間の関連付けがなされたコモンバッファ構造体をキューに積む管理情報作成手段と、前記管理情報作成手段により前記キューに積まれた前記コモンバッファ構造体を用いて、前記他の情報処理装置に対して、データ転送を行い、それに対応して前記他の情報処理装置から送られてくる前記データ転送の完了通知を受けた場合、前記キューから、前記データ転送に対応する前記コモンバッファ構造体を解放するとともに、前記キューに積まれた次の前記コモンバッファ構造体を用いて、前記他の情報処理装置に対して、次のデータ転送を行う。   An information processing apparatus according to an aspect of the present invention creates a management list of necessary data in main memory in response to a request command issued for a predetermined process performed by another information processing apparatus, and A management information creating unit that loads a common buffer structure associated with a virtual memory space and a physical memory space in a queue, including a list, and the common buffer structure stacked in the queue by the management information creating unit When the data transfer is performed to the other information processing apparatus and the data transfer completion notification sent from the other information processing apparatus is received correspondingly, the data transfer is performed from the queue to the data transfer. The corresponding common buffer structure is released, and the next common buffer structure stacked in the queue is used for the next information processing apparatus. And performs data transfer.

前記管理情報作成手段は、前記他の情報処理装置が行うデコード処理に対して発行されるデコード要求コマンド毎に、前記管理リストを作成し、前記コモンバッファ構造体をキューに積むことができる。   The management information creating means can create the management list for each decode request command issued for a decoding process performed by the other information processing apparatus, and load the common buffer structure in a queue.

前記データ転送手段は、前記他の情報処理装置に対する前記次のデータ転送を、前記他の情報処理装置の一方のレジスタにより行い、前記他の情報処理装置からの、前記他の情報処理装置において前記所定の処理がなされた結果データの転送を、前記他の情報処理装置の他方のレジスタにより行うことができる。   The data transfer means performs the next data transfer to the other information processing apparatus using one register of the other information processing apparatus, and the other information processing apparatus receives the data from the other information processing apparatus. Transfer of the result data that has been subjected to the predetermined processing can be performed by the other register of the other information processing apparatus.

本発明の一側面の情報処理方法は、情報処理装置が、他の情報処理装置が行う所定の処理に対して発行される要求コマンドに対応して、必要な主記憶上のデータの管理リストを作成し、前記管理リストを含む、仮想メモリ空間と物理メモリ空間の関連付けがなされたコモンバッファ構造体をキューに積み、前記キューに積まれた前記コモンバッファ構造体を用いて、前記他の情報処理装置に対して、データ転送を行い、それに対応して前記他の情報処理装置から送られてくる前記データ転送の完了通知を受けた場合、前記キューから、前記データ転送に対応する前記コモンバッファ構造体を解放するとともに、前記キューに積まれた次の前記コモンバッファ構造体を用いて、前記他の情報処理装置に対して、次のデータ転送を行うステップを含む。   According to an information processing method of one aspect of the present invention, an information processing apparatus displays a management list of necessary data in main memory in response to a request command issued for a predetermined process performed by another information processing apparatus. A common buffer structure that is created and includes the management list and associated with a virtual memory space and a physical memory space is stacked in a queue, and the other information processing is performed using the common buffer structure stacked in the queue. The common buffer structure corresponding to the data transfer from the queue when the data transfer is performed to the device and the completion notification of the data transfer sent from the other information processing device correspondingly is received. Releasing the body and performing the next data transfer to the other information processing apparatus using the next common buffer structure stacked in the queue. No.

本発明の一側面においては、他の情報処理装置が行う所定の処理に対して発行される要求コマンドに対応して、必要な主記憶上のデータの管理リストが作成され、前記管理リストを含む、仮想メモリ空間と物理メモリ空間の関連付けがなされたコモンバッファ構造体がキューに積まれる。そして、前記キューに積まれた前記コモンバッファ構造体を用いて、前記他の情報処理装置に対して、データ転送が行われ、それに対応して前記他の情報処理装置から送られてくる前記データ転送の完了通知を受けた場合、前記キューから、前記データ転送に対応する前記コモンバッファ構造体が解放され、前記キューに積まれた次の前記コモンバッファ構造体を用いて、前記他の情報処理装置に対して、次のデータ転送が行われる。   In one aspect of the present invention, a management list of necessary data on the main memory is created in response to a request command issued for a predetermined process performed by another information processing apparatus, and includes the management list The common buffer structure in which the virtual memory space and the physical memory space are associated with each other is stacked in the queue. Then, using the common buffer structure stacked in the queue, the data is transferred to the other information processing apparatus, and the data sent from the other information processing apparatus correspondingly When the transfer completion notification is received, the common buffer structure corresponding to the data transfer is released from the queue, and the other information processing is performed using the next common buffer structure loaded in the queue. The next data transfer is performed to the device.

本発明によれば、デコード処理全体の時間を短縮することができる。   According to the present invention, the entire decoding process can be shortened.

従来のデバイスドライバと復号器間のデータ転送の例を説明する図である。It is a figure explaining the example of the data transfer between the conventional device driver and a decoder. 従来のデバイスドライバと復号器間のデータ転送の他の例を説明する図である。It is a figure explaining the other example of the data transfer between the conventional device driver and a decoder. 本発明を適用した情報処理システムの構成例を示すブロック図である。It is a block diagram which shows the structural example of the information processing system to which this invention is applied. 図2のパーソナルコンピュータにおけるモジュール構成例を示すブロック図である。FIG. 3 is a block diagram illustrating a module configuration example in the personal computer of FIG. 2. メモリアーキテクチャを説明する図である。It is a figure explaining a memory architecture. SGLを用いたDMA処理を説明するフローチャートである。It is a flowchart explaining the DMA processing using SGL. SGLのキューイング処理を説明するフローチャートである。It is a flowchart explaining the queuing process of SGL. SGLのキューイング処理を説明する図である。It is a figure explaining the queuing process of SGL. 図3の情報処理システムのデコード処理を説明するフローチャートである。It is a flowchart explaining the decoding process of the information processing system of FIG. 図3の情報処理システムのデコード処理を説明するフローチャートである。It is a flowchart explaining the decoding process of the information processing system of FIG. 図3の情報処理システムによる効果を説明する図である。It is a figure explaining the effect by the information processing system of FIG. コンピュータのハードウエアの構成例を示すブロック図である。It is a block diagram which shows the structural example of the hardware of a computer.

[ハードウエアの構成例]
図3は、本発明を適用した情報処理システムの一実施形態の構成例を示すブロック図である。
[Hardware configuration example]
FIG. 3 is a block diagram showing a configuration example of an embodiment of an information processing system to which the present invention is applied.

図3に示される情報処理システムは、パーソナルコンピュータ12が、デコード用データ(圧縮ビデオデータ)を、図示せぬPCIe(PCI express)スロットに接続される復号ハードウエア11に供給してデコード処理させ、デコード結果データ(非圧縮ビデオデータ)を取得するシステムである。   In the information processing system shown in FIG. 3, the personal computer 12 supplies decoding data (compressed video data) to decoding hardware 11 connected to a PCIe (PCI express) slot (not shown) for decoding processing. This is a system for acquiring decoding result data (uncompressed video data).

デコード用データは、例えば、MPEG(Moving Picture Experts Group)2、MPEG4、またはAVC(Advanced Video Coding)などの圧縮符号化方式で圧縮符号化されている。   The decoding data is compressed and encoded by a compression encoding method such as MPEG (Moving Picture Experts Group) 2, MPEG4, or AVC (Advanced Video Coding).

復号ハードウエア11は、PCIeボード、あるいはカセット型のPCIeハードウエアユニットなどで構成される。復号ハードウエア11は、デコード部21、CPU(Central Processing Unit)22、DMA (Direct Memory Access)コントローラ23、およびメモリ24を含むように構成される。   The decoding hardware 11 includes a PCIe board or a cassette type PCIe hardware unit. The decoding hardware 11 is configured to include a decoding unit 21, a CPU (Central Processing Unit) 22, a DMA (Direct Memory Access) controller 23, and a memory 24.

デコード部21は、デコードIC(Integrated Circuit)などで構成される。デコード部21は、CPU22上で動作するファームウエア31の制御のもと、メモリ24に記憶されたデコード用データを、上述した圧縮符号化方式に対応する方式でデコードし、デコード結果データをメモリ24に記憶させる。   The decoding unit 21 includes a decoding IC (Integrated Circuit) or the like. The decoding unit 21 decodes the decoding data stored in the memory 24 under the control of the firmware 31 operating on the CPU 22 by a method corresponding to the above-described compression encoding method, and the decoding result data is stored in the memory 24. Remember me.

CPU22上には、専用ソフトウエアであるファームウエア31が動作している。ファームウエア31は、パーソナルコンピュータ12からのデコード要求コマンドを受信し、デコード部21の制御を行う。   On the CPU 22, firmware 31 that is dedicated software is operating. The firmware 31 receives a decoding request command from the personal computer 12 and controls the decoding unit 21.

DMAコントローラ23は、パーソナルコンピュータ12と復号ハードウエア11間のデータ転送を制御する。DMAコントローラ23は、パーソナルコンピュータ12から、メモリ24へのデータ転送を行う制御レジスタであるRxレジスタ41と、メモリ24から、パーソナルコンピュータ12へのデータ転送を行う制御レジスタであるTxレジスタ42を有している。   The DMA controller 23 controls data transfer between the personal computer 12 and the decoding hardware 11. The DMA controller 23 has an Rx register 41 that is a control register for transferring data from the personal computer 12 to the memory 24, and a Tx register 42 that is a control register for transferring data from the memory 24 to the personal computer 12. ing.

Rxレジスタ41とTxレジスタ42は、1つずつDMAコントローラ23に搭載されているため、1方向のデータ転送中は、逆方向へのデータ転送は可能であるが、同じ方向へのデータ転送が不可能である。例えば、パーソナルコンピュータ12から、メモリ24へのデータ転送中は、Rxレジスタ41が使用中であるので、逆方向のTxレジスタ42を使用することはできるが、Rxレジスタ41での次のデータ転送はできない。   Since the Rx register 41 and the Tx register 42 are mounted on the DMA controller 23 one by one, data transfer in the reverse direction is possible during data transfer in one direction, but data transfer in the same direction is not possible. Is possible. For example, since the Rx register 41 is in use during data transfer from the personal computer 12 to the memory 24, the reverse Tx register 42 can be used, but the next data transfer in the Rx register 41 is Can not.

メモリ24は、DMAコントローラ23の制御により、パーソナルコンピュータ12と復号ハードウエア11の間でデータのハンドリングを行う。また、メモリ24は、デコード部21との間で、圧縮または非圧縮データのハンドリングが可能である。   The memory 24 handles data between the personal computer 12 and the decoding hardware 11 under the control of the DMA controller 23. The memory 24 can handle compressed or uncompressed data with the decoding unit 21.

パーソナルコンピュータ12は、ユーザによる図示せぬ入力部の操作に応じて、デコード要求コマンドを発行し、ファームウエア31に対して送信する。パーソナルコンピュータ12は、デコード用データを、Rxレジスタ41を介して、メモリ24に送信し、メモリ24のデコード結果データを、Txレジスタ42を介して受信する。   The personal computer 12 issues a decode request command and transmits it to the firmware 31 in response to an operation of an input unit (not shown) by the user. The personal computer 12 transmits the decoding data to the memory 24 via the Rx register 41 and receives the decoding result data of the memory 24 via the Tx register 42.

なお、パーソナルコンピュータ12はパーソナルコンピュータで構成されるが、それに限らない。   The personal computer 12 is a personal computer, but is not limited thereto.

[パーソナルコンピュータのモジュール構成例]
図4は、パーソナルコンピュータにおけるモジュール構成例を示している。
[Personal computer module configuration example]
FIG. 4 shows a module configuration example in a personal computer.

図4の例においては、パーソナルコンピュータ12の図示せぬCPU上で動作する、ユーザモードレイヤ(User Mode Layer)、カーネルモードレイヤ(Kernel Mode Layer) 、およびハードウエアレイヤ(Hardware Layer)のすべてのモジュールが示されている。なお、それらのモジュールのうち、本発明に関するモジュールは実線で示されており、それ以外については点線で示されている。したがって、図4の例においては、本発明に関するモジュールのみ符号を付して、デコード結果作成までの流れのみ説明する。   In the example of FIG. 4, all modules of a user mode layer (User Mode Layer), a kernel mode layer (Kernel Mode Layer), and a hardware layer (Hardware Layer) that operate on a CPU (not shown) of the personal computer 12. It is shown. Of these modules, the modules related to the present invention are indicated by solid lines, and the others are indicated by dotted lines. Therefore, in the example of FIG. 4, only the modules related to the present invention are denoted by reference numerals, and only the flow up to the creation of the decoding result will be described.

ユーザモードレイヤは、アプリケーションレイヤ(Application Layer)とアプリケーションインタフェースレイヤ(API Layer)で構成される。アプリケーションインタフェースレイヤは、さらに、アプリケーションインタフェース(Application Interface)と、ドライバアクセスインタフェース(Driver Access Interface)により構成されている。   The user mode layer includes an application layer (Application Layer) and an application interface layer (API Layer). The application interface layer is further configured by an application interface and a driver access interface.

また、カーネルモードレイヤは、ウインドウズエグザクティブサービス(Windows Executive Service)で構成される。ウインドウズエグザクティブサービスは、OSであるウインドウズシステムサービス(Windows System Services)と、OS上で動作するI/Oマネージャ(I/O Manager)54やメモリマネージャ(Memory Manager)57などの各モジュールで構成されている。   The kernel mode layer is composed of a Windows Executive Service. The Windows Executive Service consists of Windows System Services, which is an OS, and modules such as an I / O Manager (I / O Manager) 54 and a memory manager (Memory Manager) 57 that run on the OS. ing.

ハードウエアレイヤは、図3の復号ハードウエア11で構成されている。   The hardware layer is composed of the decoding hardware 11 shown in FIG.

アプリケーションレイヤにおける編集アプリケーション(Editing Application)51は、GUI(Graphical User Interface)機能を有している。編集アプリケーション51は、GUI機能を介して入力されるユーザの操作に応じて、アプリケーションインタフェース(のApplicationIF.dll)52に対してデコード要求コマンドを発行する。なお、編集アプリケーションを例に説明するが、もちろん、他のアプリケーションでもよい。   An editing application 51 in the application layer has a GUI (Graphical User Interface) function. The editing application 51 issues a decode request command to the application interface (ApplicationIF.dll) 52 in accordance with a user operation input via the GUI function. Although an editing application will be described as an example, of course, other applications may be used.

アプリケーションインタフェース52は、I/Oマネージャ54のファイルシステムドライバ(File System Driver)56に対し、パーソナルコンピュータ12上に搭載される、図示せぬ補助記憶装置(HDD)より、デコードを必要とする圧縮ビデオデータを取得する。アプリケーションインタフェース52は、OS上のメモリマネージャ57により、取得した圧縮ビデオデータを、図示せぬ主記憶装置(システムメモリ)(以下、主記憶とも称する)にコピーする。   The application interface 52 is a compressed video that requires decoding from an auxiliary storage device (HDD) (not shown) mounted on the personal computer 12 with respect to the file system driver 56 of the I / O manager 54. Get the data. The application interface 52 uses the memory manager 57 on the OS to copy the acquired compressed video data to a main storage device (system memory) (hereinafter also referred to as main memory) (not shown).

アプリケーションインタフェース52は、また、ドライバアクセスインタフェース(のDriverIF.dll)53に、システムメモリ上にコピーされたデータのアドレスとデコード要求コマンドを発行する。ドライバアクセスインタフェース53は、I/Oマネージャ54を構成するモジュールの1つであるデバイスドライバ(Device Driver)55に対し、システムメモリ上にコピーされたデータのアドレスとデコード要求コマンドを発行する。   The application interface 52 also issues to the driver access interface (DriverIF.dll) 53 the address of the data copied on the system memory and a decode request command. The driver access interface 53 issues an address of data copied to the system memory and a decode request command to a device driver 55 which is one of the modules constituting the I / O manager 54.

デバイスドライバ55は、OS上で動作するI/Oマネージャ54に、主記憶上にコピーされたデータの管理リスト(Scatter Gather List:SGL)を作成する。デバイスドライバ55は、SGLの作成後、DMAの制御が可能である合間を見て、DMAにより、データ転送処理要求をDMAコントローラ23に対して行う。また、デバイスドライバ55は、メモリ24への圧縮ビデオデータの転送後、すぐに、CMD I/F Accessにより、ファームウエア31に対してデコード要求コマンドを発行する。   The device driver 55 creates a management list (Scatter Gather List: SGL) of data copied on the main memory in the I / O manager 54 operating on the OS. After creating the SGL, the device driver 55 makes a data transfer processing request to the DMA controller 23 by DMA while looking at the interval during which DMA control is possible. The device driver 55 issues a decode request command to the firmware 31 by CMD I / F Access immediately after the compressed video data is transferred to the memory 24.

DMAコントローラ23は、デバイスドライバ55から通知されたパーソナルコンピュータ12上の主記憶のアドレス(物理アドレス)が格納されるSGLを利用し、圧縮ビデオデータを、復号ハードウエア11のメモリ24に転送する。   The DMA controller 23 uses the SGL that stores the address (physical address) of the main memory on the personal computer 12 notified from the device driver 55 to transfer the compressed video data to the memory 24 of the decoding hardware 11.

ファームウエア31は、デコード部21に対し、デコード処理を要求する。デコード部21は、メモリ24上から圧縮ビデオデータを読み取って、デコード処理を行い、結果として得られる非圧縮ビデオデータをメモリ24に書き込む。   The firmware 31 requests the decoding unit 21 to perform decoding processing. The decoding unit 21 reads the compressed video data from the memory 24, performs a decoding process, and writes the resulting uncompressed video data to the memory 24.

[メモリアーキテクチャの説明]
まず、図5を参照して、パーソナルコンピュータにおけるメモリアーキテクチャについて説明する。
[Description of memory architecture]
First, a memory architecture in a personal computer will be described with reference to FIG.

図5の例においては、一番左に、仮想メモリ空間における仮想メモリアドレス「0x00000000」乃至「0x7FFFFFFF」のユーザ空間および仮想メモリアドレス「0x80000000」乃至「0xFFFFFFFF」のシステム空間が示されている。その右側には、仮想メモリ空間におけるシステム空間の詳細が示されている。システム空間の詳細の右側の上部には、システム空間における仮想アドレス「0x88C25EA8」から始まる領域に含まれるコモンバッファ構造体の詳細が示されている。   In the example of FIG. 5, the user space of virtual memory addresses “0x00000000” to “0x7FFFFFFF” and the system space of virtual memory addresses “0x80000000” to “0xFFFFFFFF” in the virtual memory space are shown on the leftmost side. On the right side, details of the system space in the virtual memory space are shown. In the upper right part of the details of the system space, details of the common buffer structure included in the area starting from the virtual address “0x88C25EA8” in the system space are shown.

コモンバッファ構造体の詳細の下部には、システム空間における仮想アドレス「0xA1B33200」乃至「0xA1B31FF」に配置されるSGL実体の詳細が示されている。さらに、その右側には、物理メモリ空間上の、SGLが含まれるコモンバッファと、データバッファが示されており、一番右側には、コモンバッファMDLの詳細が示されている。   Below the details of the common buffer structure, details of the SGL entity arranged at virtual addresses “0xA1B33200” to “0xA1B31FF” in the system space are shown. Furthermore, on the right side, a common buffer including a SGL and a data buffer on the physical memory space are shown, and on the right side, details of the common buffer MDL are shown.

物理メモリ空間上のアドレスは、パーソナルコンピュータ12に接続される復号ハードウエア11からアクセス可能となっている。物理メモリ空間は、OSのカーネル内で動作するデバイスドライバ55からアドレスを取得することは可能である。しかしながら、デバイスドライバ55は、物理メモリ空間への直接制御を行うことはできず、デバイスドライバ55も、編集アプリケーション51と同様に、仮想メモリ空間上のアドレスを使用して、物理メモリ空間の制御を行う。   The address on the physical memory space can be accessed from the decoding hardware 11 connected to the personal computer 12. The physical memory space can acquire an address from the device driver 55 operating in the OS kernel. However, the device driver 55 cannot directly control the physical memory space, and the device driver 55 also uses the address in the virtual memory space to control the physical memory space, like the editing application 51. Do.

ここで、デバイスドライバ55からの物理メモリ空間のアドレス取得とは、次のように行われる。すなわち、OS内のI/Oマネージャ54で管理されるMemory Descriptor List(MDL)が、物理メモリ空間アドレスと仮想メモリ空間アドレスの関連付けをリスト化している。したがって、デバイスドライバ55は、MDLの中身を見ることで、どの物理メモリ空間アドレスが仮想メモリ空間にマッピングされているのかを理解することができる。   Here, the acquisition of the physical memory space address from the device driver 55 is performed as follows. That is, the Memory Descriptor List (MDL) managed by the I / O manager 54 in the OS lists associations between physical memory space addresses and virtual memory space addresses. Therefore, the device driver 55 can understand which physical memory space address is mapped to the virtual memory space by looking at the contents of the MDL.

[SGLを用いたDMA処理の説明]
このようなアーキテクチャを踏まえ、図6のフローチャートを参照して、本発明に関するデータ転送方法として用いられるSGLを用いた一般的なDMA処理について説明する。なお、図6の処理に沿って、図5に示されたメモリアーキテクチャも適宜参照される。
[Description of DMA processing using SGL]
Based on such an architecture, a general DMA process using SGL used as a data transfer method according to the present invention will be described with reference to the flowchart of FIG. Note that the memory architecture shown in FIG. 5 is also referred to as appropriate along the processing of FIG.

図6のステップS1において、編集アプリケーション51は、主記憶へデータを格納するためのデータバッファを、仮想メモリ空間のユーザ空間に配置(アロケート)する。これにより、図5のA1に示されるように、仮想メモリ空間のユーザ空間の「0x013A0000」乃至「0x01B9FFFF」の仮想メモリアドレスに、8Mbytesのデータバッファが配置される。   In step S1 in FIG. 6, the editing application 51 arranges (allocates) a data buffer for storing data in the main memory in the user space of the virtual memory space. As a result, as shown by A1 in FIG. 5, an 8 Mbytes data buffer is arranged at virtual memory addresses “0x013A0000” to “0x01B9FFFF” in the user space of the virtual memory space.

ステップS2において、OS内のメモリマネージャ57は、仮想メモリ空間のユーザ空間に配置されたデータバッファを、主記憶上の物理メモリ空間に最小4KBytes単位で分散して配置する。これにより、図5のA2に示されるように、主記憶の物理メモリ空間には、データバッファが、データバッファ1乃至Xとして分散されて配置される。   In step S2, the memory manager 57 in the OS distributes and arranges data buffers arranged in the user space of the virtual memory space in the physical memory space on the main memory in units of a minimum of 4 KBytes. Thereby, as shown by A2 in FIG. 5, data buffers are distributed and arranged as data buffers 1 to X in the physical memory space of the main memory.

デバイスドライバ55は、ステップS3において、I/Oマネージャ54に対し、分散されたデータバッファの各バッファポインタ(物理メモリ空間アドレス)とバッファサイズを格納したリストであるSGLの作成を要求する。これに対応して、I/Oマネージャ54により、図5のA3に示されるように、各8Bytesのデータバッファ1ポインタ、データバッファ1サイズ、…、データバッファXポインタ、データバッファXサイズからなるSGLが作成される。   In step S3, the device driver 55 requests the I / O manager 54 to create an SGL that is a list storing the buffer pointers (physical memory space addresses) of the distributed data buffers and buffer sizes. Correspondingly, as shown in A3 of FIG. 5, the I / O manager 54 performs SGL including a data buffer 1 pointer, a data buffer 1 size,..., A data buffer X pointer, and a data buffer X size of 8 bytes each. Is created.

ステップS4において、I/Oマネージャ54は、SGLがデバイスドライバ55からアクセス可能となるように、SGLの実体を仮想メモリ空間(のシステム空間)上に書き込む。これにより、図5のA4に示されるように、仮想メモリ空間のシステム空間の「0xA1B33200」乃至「0xA1B3B1FF」の仮想メモリアドレスに、最大32KbytesのSGL実体が配置される。   In step S4, the I / O manager 54 writes the SGL entity on the virtual memory space (its system space) so that the SGL can be accessed from the device driver 55. As a result, as shown in A4 of FIG. 5, an SGL entity of 32 Kbytes at the maximum is arranged at virtual memory addresses “0xA1B33200” to “0xA1B3B1FF” in the system space of the virtual memory space.

ここで、このSGLには、ハードウエアからアクセス可能な物理メモリ空間アドレスが格納されているものの、ステップS4において仮想メモリ空間に書き込まれていることから、SGLを復号ハードウエア11から参照することができない。SGLを参照可能とするために、物理メモリ空間上にコモンバッファと呼ばれるパーソナルコンピュータ12と復号ハードウエア11との両者で参照可能なバッファを作成する必要がある。   Here, although the physical memory space address accessible from the hardware is stored in this SGL, it is written in the virtual memory space in step S4, so that the SGL can be referred to from the decoding hardware 11. Can not. In order to be able to refer to the SGL, it is necessary to create a buffer that can be referred to by both the personal computer 12 and the decoding hardware 11 called a common buffer in the physical memory space.

ステップS5において、デバイスドライバ55は、コモンバッファ作成のための構造体を用意し、仮想メモリ空間上の「0x88C25EA8」に配置する。コモンバッファ構造体は、図5のA5に示されるように、DMAアダプタポインタ、コモンバッファ実体の仮想アドレス(0x89F72000)、およびコモンバッファMDLアドレス(0x88C2D020)により構成される。   In step S5, the device driver 55 prepares a structure for creating a common buffer and places it in “0x88C25EA8” in the virtual memory space. The common buffer structure includes a DMA adapter pointer, a virtual address of the common buffer entity (0x89F72000), and a common buffer MDL address (0x88C2D020), as indicated by A5 in FIG.

デバイスドライバ55は、ステップS6において、コモンバッファを、主記憶上に連続領域として確保するように作成する。これにより、図6のA6に示されるように、主記憶上の物理メモリ空間の物理アドレス「0x09A00000」乃至「0x09A7FFFF」の連続領域に、SGLバッファ1乃至128が作成される。   In step S6, the device driver 55 creates the common buffer so as to secure it as a continuous area on the main memory. As a result, as indicated by A6 in FIG. 6, SGL buffers 1 to 128 are created in a continuous area of physical addresses “0x09A00000” to “0x09A7FFFF” of the physical memory space on the main memory.

そして、デバイスドライバ55は、ステップS7において、コモンバッファにおける仮想メモリ空間と物理メモリ空間の関連付けのためのMDLを作成する。これにより、図6のA7に示されるように、SGLバッファ1乃至128を指し示すポインタまたはアドレスであるバッファ1ポインタ乃至バッファ128ポインタで構成されるコモンバッファMDLが作成される。このコモンバッファMDLは、コモンバッファ構造体に含まれるコモンバッファMDLアドレス「0x88C2D020」(システム空間内)に配置される。   In step S7, the device driver 55 creates an MDL for associating the virtual memory space and the physical memory space in the common buffer. As a result, as shown at A7 in FIG. 6, a common buffer MDL composed of a pointer indicating the SGL buffers 1 to 128 or a buffer 1 pointer to a buffer 128 pointer which is an address is created. The common buffer MDL is arranged at a common buffer MDL address “0x88C2D020” (in the system space) included in the common buffer structure.

このように、コモンバッファは、連続したアドレッシングであり、かつ、物理メモリ空間上に配置されることから、復号ハードウエア11は、容易にコモンバッファ内のデータを参照することができる。   As described above, since the common buffer has continuous addressing and is arranged in the physical memory space, the decoding hardware 11 can easily refer to the data in the common buffer.

ステップS8において、デバイスドライバ55は、ステップS4において仮想メモリ空間に配置されたSGLを、コモンバッファ実体にコピーを行う。ただし、デバイスドライバ55は、仮想メモリ空間への制御しか許されていないため、コピー時のアドレスとして、仮想メモリ空間アドレスを使用する。なお、コモンバッファが仮想メモリ空間へデータコピーされることで、物理メモリ空間上のアドレスにも同様のデータが配置されることになる。   In step S8, the device driver 55 copies the SGL arranged in the virtual memory space in step S4 to the common buffer entity. However, since the device driver 55 is only allowed to control the virtual memory space, the device driver 55 uses the virtual memory space address as the address at the time of copying. Note that when the common buffer is copied to the virtual memory space, similar data is also arranged at an address in the physical memory space.

すなわち、SGL実体(A4)が、図5のA8に示されるように、システム空間における仮想メモリアドレス「0x89F72000」乃至「0x8A771FFF」のコモンバッファ実体(512Kbytes)にコピーされる。コモンバッファ構造体(A5)を参照することで、SGL実体(A4)は、コモンバッファ実体の仮想アドレスに対応する、物理メモリ空間上のコモンバッファ(A6)にも配置される。   That is, the SGL entity (A4) is copied to the common buffer entity (512 Kbytes) of the virtual memory addresses “0x89F72000” to “0x8A771FFF” in the system space, as indicated by A8 in FIG. By referring to the common buffer structure (A5), the SGL entity (A4) is also arranged in the common buffer (A6) in the physical memory space corresponding to the virtual address of the common buffer entity.

そこで、ステップS9において、デバイスドライバ55は、図5のA9に示される、物理メモリ空間上のコモンバッファの物理アドレス「0x09A00000」乃至「0x09A7FFFF」を、復号ハードウエア11のDMAコントローラ23に通知する。これにより、DMAコントローラ23は、SGL内の物理メモリ空間上に置かれたアプリケーションデータバッファの中身を参照することが可能となる。   Therefore, in step S9, the device driver 55 notifies the DMA controller 23 of the decoding hardware 11 of the physical addresses “0x09A00000” to “0x09A7FFFF” of the common buffer in the physical memory space shown by A9 in FIG. As a result, the DMA controller 23 can refer to the contents of the application data buffer placed in the physical memory space in the SGL.

ステップS10において、DMAコントローラ23は、これらの物理アドレス(A9)を使用して、復号ハードウエア11内のメモリ24へのデータ転送を行う。   In step S10, the DMA controller 23 performs data transfer to the memory 24 in the decoding hardware 11 using these physical addresses (A9).

以上が、一般的なDMAの制御処理である。これに対して、本発明においては、次に説明するように、この制御処理中のコモンバッファへのSGLの格納(ステップS8)を、デコード要求コマンドが発行されたタイミングで行うことを特徴としている。また、本発明においては、コマンドが連続して発行された場合には、複数のコモンバッファの作成を行い、かつ、コモンバッファ構造体をキューイングすることにより、DMAのための準備を予め行うことを特徴としている。   The above is a general DMA control process. On the other hand, the present invention is characterized in that the SGL is stored in the common buffer (step S8) during the control process at the timing when the decode request command is issued, as will be described below. . In the present invention, when a command is issued continuously, a plurality of common buffers are created, and a common buffer structure is queued to prepare for DMA in advance. It is characterized by.

[SGLのキューイング処理の説明]
次に、図7のフローチャートを参照して、SGLのキューイング処理について説明する。この処理は、デバイスドライバ55によりデータ(スレッド)毎に行われる処理である。なお、図7の処理に沿って、図8も適宜参照される。以下、図面の丸数字は、括弧付き数字で置き換えて説明する。
[Description of SGL queuing]
Next, SGL queuing processing will be described with reference to the flowchart of FIG. This process is performed for each data (thread) by the device driver 55. Note that FIG. 8 is also referred to as appropriate along the processing of FIG. In the following description, the circled numbers in the drawings are replaced with numbers in parentheses.

図8の例においては、左側から、編集アプリケーション51の処理、デバイスドライバ55の処理、復号ハードウエア11の処理が示されており、デバイスドライバ55の処理に示されるキュー71は、例えばI/Oマネージャ54に内蔵される。   In the example of FIG. 8, the process of the editing application 51, the process of the device driver 55, and the process of the decryption hardware 11 are shown from the left side. The queue 71 shown in the process of the device driver 55 is, for example, an I / O Built in the manager 54.

デバイスドライバ55は、スレッド1として(以下、デバイスドライバ55(スレッド1)と称する)、ステップS21において、編集アプリケーション51から、デコード要求コマンドが送信されるまで待機している。ステップS21において、編集アプリケーション51から、デコード(1)の要求コマンドが送信されたと判定されると、図8に示されるように、デバイスドライバ55(スレッド1)にデコード(1)用データが通知され、処理は、ステップS22に進む。   The device driver 55 is waiting as a thread 1 (hereinafter referred to as a device driver 55 (thread 1)) until a decoding request command is transmitted from the editing application 51 in step S21. If it is determined in step S21 that the decode application (1) request command has been transmitted from the editing application 51, the device driver 55 (thread 1) is notified of the decode (1) data as shown in FIG. The process proceeds to step S22.

すなわち、編集アプリケーション51から、デコード(1)の要求コマンドが送信されると、デコードに必要とするデータのアドレスがドライバアクセスインタフェース53からデバイスドライバ55(スレッド1)に通知される。これにより、デバイスドライバ55においては、SGLの作成が可能となる。   That is, when a decoding (1) request command is transmitted from the editing application 51, the address of data required for decoding is notified from the driver access interface 53 to the device driver 55 (thread 1). As a result, the device driver 55 can create an SGL.

デバイスドライバ55(スレッド1)は、ステップS22において、図8に示されるように、デコード(1)用SGLを作成するとともに、ステップS23において、SGLをコモンバッファへのコピーを行うため、デコード(1)用のコモンバッファ構造体を作成する。図6を参照して上述したように、これにより、デコード(1)用のSGL、すなわち、デコード(1)用データが格納されたデコード(1)用のコモンバッファ構造体が作成される。   In step S22, the device driver 55 (thread 1) creates an SGL for decoding (1) as shown in FIG. 8, and in step S23, the device driver 55 (thread 1) decodes (1 Create a common buffer structure for). As described above with reference to FIG. 6, the SGL for decoding (1), that is, the common buffer structure for decoding (1) storing the data for decoding (1) is created.

デバイスドライバ55(スレッド1)は、ステップS24において、作成したデコード(1)用のコモンバッファ構造体をキュー71に積む(キューイングする)。   In step S24, the device driver 55 (thread 1) loads (queues) the created common buffer structure for decoding (1) in the queue 71.

デコード(2)の場合も同様である。すなわち、編集アプリケーション51から、ステップS21において、デコード要求コマンドが送信されたと判定され、図8のデコード(2)用データが通知される。これに対応して、デバイスドライバ55は、スレッド2として、(以下、デバイスドライバ55(スレッド2)と称する)、図8に示されるように、ステップS22において、デコード(2)用SGLを作成する。そして、デバイスドライバ55(スレッド2)は、ステップS23において、デコード(2)用のコモンバッファ構造体を作成する。これにより、デコード(2)用のSGL、すなわち、デコード(2)用データが格納されたデコード(2)用のコモンバッファ構造体が作成される。   The same applies to the case of decoding (2). That is, it is determined from the editing application 51 that a decode request command has been transmitted in step S21, and the decode (2) data in FIG. 8 is notified. In response to this, the device driver 55 creates the SGL for decoding (2) in step S22 as thread 2 (hereinafter referred to as device driver 55 (thread 2)), as shown in FIG. . In step S23, the device driver 55 (thread 2) creates a common buffer structure for decoding (2). As a result, an SGL for decoding (2), that is, a common buffer structure for decoding (2) in which data for decoding (2) is stored is created.

デバイスドライバ55(スレッド2)は、ステップS24において、作成したデコード(2)用のコモンバッファ構造体をキュー71に積む。これにより、キュー71には、デコード(1)用のコモンバッファ構造体の上に、デコード(2)用のコモンバッファ構造体が積まれる。   In step S24, the device driver 55 (thread 2) loads the created common buffer structure for decoding (2) in the queue 71. As a result, the common buffer structure for decoding (2) is stacked on the queue 71 on the common buffer structure for decoding (1).

なお、復号ハードウエア11がコモンバッファ内のSGLによる物理メモリ空間アドレスを参照している可能性があるので、デバイスドライバ55(スレッド1)は、ステップS25において、デコード(1)用データの転送完了通知を受け取るまで、待機している。その間、デコード(1)用のコモンバッファ構造体は、キュー71の中に保持される。   Since there is a possibility that the decoding hardware 11 refers to the physical memory space address by SGL in the common buffer, the device driver 55 (thread 1) completes the transfer of the data for decoding (1) in step S25. Waiting for notification. Meanwhile, the common buffer structure for decoding (1) is held in the queue 71.

ステップS25において、先のデコード(1)用データの転送完了通知が復号ハードウエア11から受け取ったと判定されると、デバイスドライバ55(スレッド1)は、SGLの参照がないものとして、処理は、ステップS26に進む。デバイスドライバ55(スレッド1)は、ステップS26において、デコード(1)用のコモンバッファ構造体を、図8のキュー71からプッシュして(追い出して)、デコード(1)用のコモンバッファ構造体の解放(=コモンバッファ自体の解放)を行う。   If it is determined in step S25 that the previous transfer completion notification of the data for decoding (1) has been received from the decoding hardware 11, the device driver 55 (thread 1) assumes that there is no SGL reference, and the process proceeds to step S25. Proceed to S26. In step S26, the device driver 55 (thread 1) pushes (ejects) the common buffer structure for decoding (1) from the queue 71 in FIG. 8, and sets the common buffer structure for decoding (1). Release (= release the common buffer itself).

次に、デコード(3)の場合も同様に、編集アプリケーション51から、ステップS21において、デコード要求コマンドが送信されたと判定され、図8のデコード(3)用データが通知される。これに対応して、デバイスドライバ55は、スレッド3として(以下、デバイスドライバ55(スレッド3)と称する)、図8に示されるように、ステップS22において、デコード(3)用SGLを作成する。そして、デバイスドライバ55(スレッド3)は、ステップS23において、デコード(3)用のコモンバッファ構造体を作成する。図6を参照して上述したように、これにより、デコード(3)用のSGL、すなわち、デコード(3)用データが格納されたデコード(2)用のコモンバッファ構造体が作成される。   Next, in the case of decoding (3) as well, the editing application 51 determines in step S21 that a decoding request command has been transmitted, and notifies the decoding (3) data in FIG. Correspondingly, the device driver 55 creates the decoding (3) SGL as the thread 3 (hereinafter referred to as the device driver 55 (thread 3)) in step S22 as shown in FIG. In step S23, the device driver 55 (thread 3) creates a common buffer structure for decoding (3). As described above with reference to FIG. 6, the SGL for decoding (3), that is, the common buffer structure for decoding (2) storing the data for decoding (3) is thereby created.

デバイスドライバ55(スレッド3)は、ステップS24において、作成したデコード(3)用のコモンバッファ構造体をキュー71に積む。これにより、キュー71には、デコード(1)用のコモンバッファ構造体の上に、デコード(3)用のコモンバッファ構造体が積まれる。   The device driver 55 (thread 3) loads the created common buffer structure for decoding (3) in the queue 71 in step S24. As a result, the common buffer structure for decoding (3) is stacked on the queue 71 on the common buffer structure for decoding (1).

以降、図8の例においては、図示が省略されているが、次のデコード(2)用データの転送完了通知が復号ハードウエア11から受信され、デコード(2)用データおよびデコード(3)用データについても、デコード(1)用データの場合と同様の処理が繰り返される。   Thereafter, although not shown in the example of FIG. 8, a notification of completion of transfer of the next data for decoding (2) is received from the decoding hardware 11, and the data for decoding (2) and the data for decoding (3) are received. For data, the same processing as in the case of decoding (1) data is repeated.

すなわち、デバイスドライバ55(スレッド2または3)は、ステップS25において、デコード(2)または(3)用データの転送完了通知を受け取るまで待機している。   That is, the device driver 55 (thread 2 or 3) waits until receiving a transfer completion notification of the data for decoding (2) or (3) in step S25.

ステップS25において、デコード(2)または(3)用データの転送完了通知が復号ハードウエア11から受け取ったと判定されると、デバイスドライバ55(スレッド2または3)は、SGLの参照がないものとして、処理は、ステップS26に進む。そして、ステップS26において、デコード(2)または(3)用のコモンバッファ構造体が、図8のキュー71からプッシュされて、デコード(1)用のコモンバッファ構造体の解放(=コモンバッファ自体の解放)が行われる。   If it is determined in step S25 that the transfer completion notification of the data for decoding (2) or (3) has been received from the decoding hardware 11, the device driver 55 (thread 2 or 3) assumes that there is no SGL reference. The process proceeds to step S26. In step S26, the common buffer structure for decoding (2) or (3) is pushed from the queue 71 in FIG. 8 to release the common buffer structure for decoding (1) (= the common buffer itself). Release).

[デコード処理の説明]
次に、図9および図10のフローチャートを参照して、図3の情報処理システムによるデコード処理について説明する。
[Description of decoding process]
Next, decoding processing by the information processing system in FIG. 3 will be described with reference to the flowcharts in FIGS. 9 and 10.

編集アプリケーション51は、ステップS51において、デバイスドライバ55に対して、デコード(1)用要求を行い、ステップS52において、デバイスドライバ55に対して、デコード(2)用要求を行う。すなわち、編集アプリケーション51は、連続してデコード要求コマンドの発行を行う。   In step S51, the editing application 51 makes a request for decoding (1) to the device driver 55, and makes a request for decoding (2) to the device driver 55 in step S52. That is, the editing application 51 issues decode request commands continuously.

デコード(1)用要求に対応して、デバイスドライバ55は、スレッド1として(以下、デバイスドライバ55(スレッド1)と称する)、ステップS71において、I/Oマネージャ54に対して、デコード(1)用SGL作成要求を行う。これに対応して、I/Oマネージャ54は、ステップS91において、デコード(1)用SGL作成を行い、その完了をデバイスドライバ55(スレッド1)に通知する。   In response to the request for decoding (1), the device driver 55 performs the decoding (1) to the I / O manager 54 in step S71 as thread 1 (hereinafter referred to as device driver 55 (thread 1)). For SGL creation. In response to this, the I / O manager 54 creates the SGL for decoding (1) in step S91 and notifies the device driver 55 (thread 1) of the completion.

一方、デコード(2)用要求に対応して、デバイスドライバ55は、スレッド2として(以下、デバイスドライバ55(スレッド2)と称する)、ステップS111において、I/Oマネージャ54に対して、デコード(2)用SGL作成要求を行う。これに対応して、I/Oマネージャ54は、ステップS92において、デコード(2)用SGL作成を行い、その完了をデバイスドライバ55(スレッド2)に通知する。   On the other hand, in response to the request for decoding (2), the device driver 55 is referred to as thread 2 (hereinafter referred to as device driver 55 (thread 2)), and in step S111, the device driver 55 performs decoding ( 2) Make an SGL creation request. In response to this, the I / O manager 54 creates the SGL for decoding (2) in step S92, and notifies the device driver 55 (thread 2) of the completion.

デコード(1)用SGL作成完了通知を受けると、デバイスドライバ55(スレッド1)は、ステップS72において、I/Oマネージャ54に対して、デコード(1)用コモンバッファ作成要求を行う。これに対応して、I/Oマネージャ54は、ステップS93において、デコード(1)用コモンバッファ作成を行い、その完了をデバイスドライバ55(スレッド1)に通知する。   Upon receipt of the decode (1) SGL creation completion notification, the device driver 55 (thread 1) issues a decode (1) common buffer creation request to the I / O manager 54 in step S72. In response to this, the I / O manager 54 creates a common buffer for decoding (1) in step S93, and notifies the device driver 55 (thread 1) of the completion.

デコード(2)用SGL作成完了通知を受けると、デバイスドライバ55(スレッド2)は、ステップS112において、I/Oマネージャ54に対して、デコード(2)用コモンバッファ作成要求を行う。これに対応して、I/Oマネージャ54は、ステップS94において、デコード(2)用コモンバッファ作成を行い、その完了をデバイスドライバ55(スレッド2)に通知する。   Upon receipt of the decode (2) SGL creation completion notification, the device driver 55 (thread 2) issues a decode (2) common buffer creation request to the I / O manager 54 in step S112. In response to this, the I / O manager 54 creates a common buffer for decoding (2) in step S94, and notifies the device driver 55 (thread 2) of the completion.

デコード(1)用コモンバッファ作成完了通知を受けると、デバイスドライバ55(スレッド1)は、ステップS73において、I/Oマネージャ54に対して、デコード(1)用SGLのコモンバッファコピー要求を行う。これに対応して、I/Oマネージャ54は、ステップS95において、デコード(1)用SGLコピーを行い、その完了をデバイスドライバ55(スレッド1)に通知する。   Upon receiving the completion notification of the creation of the common buffer for decoding (1), the device driver 55 (thread 1) makes a common buffer copy request for the SGL for decoding (1) to the I / O manager 54 in step S73. In response to this, in step S95, the I / O manager 54 performs the SGL copy for decoding (1) and notifies the device driver 55 (thread 1) of the completion.

デコード(2)用コモンバッファ作成完了通知を受けると、デバイスドライバ55(スレッド2)は、ステップS113において、I/Oマネージャ54に対して、デコード(2)用SGLのコモンバッファコピー要求を行う。これに対応して、I/Oマネージャ54は、ステップS96において、デコード(2)用SGLコピーを行い、その完了をデバイスドライバ55(スレッド2)に通知する。   Upon receiving the completion notification of the creation of the common buffer for decoding (2), the device driver 55 (thread 2) makes a common buffer copy request for the SGL for decoding (2) to the I / O manager 54 in step S113. In response to this, the I / O manager 54 performs the SGL copy for decoding (2) in step S96, and notifies the device driver 55 (thread 2) of the completion.

デコード(1)用SGLコピー完了通知を受けると、デバイスドライバ55(スレッド1)は、ステップS74において、I/Oマネージャ54に対して、デコード(1)用コモンバッファ構造体キューイング要求を行う。これに対応して、I/Oマネージャ54は、ステップS97において、キュー71に、デコード(1)用キューイングを行い、その完了をデバイスドライバ55(スレッド1)に通知する。   Upon receipt of the decode (1) SGL copy completion notification, the device driver 55 (thread 1) issues a decode (1) common buffer structure queuing request to the I / O manager 54 in step S74. In response to this, in step S97, the I / O manager 54 performs decoding (1) queuing in the queue 71 and notifies the device driver 55 (thread 1) of the completion.

デコード(2)用SGLコピー完了通知を受けると、デバイスドライバ(スレッド2)は、ステップS114において、I/Oマネージャ54に対して、デコード(2)用コモンバッファ構造体キューイング要求を行う。これに対応して、I/Oマネージャ54は、ステップS98において、キュー71に、デコード(2)用キューイングを行い、その完了をデバイスドライバ55(スレッド2)に通知する。   Upon receipt of the decode (2) SGL copy completion notification, the device driver (thread 2) issues a decode (2) common buffer structure queuing request to the I / O manager 54 in step S114. In response to this, in step S98, the I / O manager 54 performs decoding (2) queuing in the queue 71 and notifies the device driver 55 (thread 2) of the completion.

デコード(1)用キューイング完了通知を受けると、デバイスドライバ55(スレッド1)は、即時に、ステップS75において、DMAコントローラ23に対して、デコード(1)用データDMAを実行する。具体的には、デバイスドライバ55(スレッド1)は、キュー71に積まれたコモンバッファ構造体を用い、コモンバッファ構造体を参照して、デコード(1)用データDMAの実行を、DMAコントローラ23のRxレジスタ41に仕掛ける。   Upon receiving the decoding (1) queuing completion notification, the device driver 55 (thread 1) immediately executes the decoding (1) data DMA to the DMA controller 23 in step S75. Specifically, the device driver 55 (thread 1) uses the common buffer structure stacked in the queue 71, refers to the common buffer structure, and executes the decoding (1) data DMA. The Rx register 41 is set.

また、それとほぼ同時に、デバイスドライバ55(スレッド1)は、ステップS76において、デコード(1)実行コマンドをファームウエア31に対して発行する。   At almost the same time, the device driver 55 (thread 1) issues a decode (1) execution command to the firmware 31 in step S76.

DMAコントローラ23は、デバイスドライバ55(スレッド1)からのDMAの実行に対して、Rxレジスタ41を用いて、メモリ24へのデコード(1)用データ転送を行う。デコード(1)用データ転送が完了すると、DMAコントローラ23は、ステップS131において、Rxレジスタ41でのデータ転送完了を、デバイスドライバ55(スレッド1およびスレッド2)に通知する。   In response to execution of DMA from the device driver 55 (thread 1), the DMA controller 23 uses the Rx register 41 to transfer data for decoding (1) to the memory 24. When the data transfer for decoding (1) is completed, the DMA controller 23 notifies the device driver 55 (thread 1 and thread 2) of the completion of data transfer in the Rx register 41 in step S131.

図10の例においては図示されないが、Rxレジスタ41でのデータ転送完了に対応して、デバイスドライバ55(スレッド1)は、キュー71から、デコード(1)用のコモンバッファ構造体をプッシュする(図7のステップS26)。   Although not shown in the example of FIG. 10, the device driver 55 (thread 1) pushes the common buffer structure for decoding (1) from the queue 71 in response to the completion of the data transfer in the Rx register 41 ( Step S26 in FIG.

また、Rxレジスタ41でのデータ転送完了を受けると、Rxレジスタ41における次のDMA実行が可能になるため、デバイスドライバ55(スレッド2)は、ステップS115において、DMAコントローラ23に対して、デコード(2)用データDMAを実行する。具体的には、デバイスドライバ55(スレッド2)は、キュー71に積まれたコモンバッファ構造体を用い、コモンバッファ構造体を参照して、デコード(2)用データDMAの実行を、DMAコントローラ23のRxレジスタ41に仕掛ける。   Further, when the completion of data transfer in the Rx register 41 is received, the next DMA execution in the Rx register 41 becomes possible. Therefore, in step S115, the device driver 55 (thread 2) decodes ( 2) Execute the data DMA. Specifically, the device driver 55 (thread 2) uses the common buffer structure stacked in the queue 71 and refers to the common buffer structure to execute the data DMA for decoding (2). The Rx register 41 is set.

DMAコントローラ23は、デバイスドライバ55(スレッド2)からのDMAの実行に対して、Rxレジスタ41を用いて、メモリ24へのデコード(2)用データ転送を行う。デコード(2)用データ転送が完了すると、DMAコントローラ23は、ステップS132において、Rxレジスタ41でのデータ転送完了を、デバイスドライバ55(スレッド1およびスレッド2)に通知する。   In response to execution of DMA from the device driver 55 (thread 2), the DMA controller 23 uses the Rx register 41 to transfer data for decoding (2) to the memory 24. When the data transfer for decoding (2) is completed, the DMA controller 23 notifies the device driver 55 (thread 1 and thread 2) of the completion of data transfer in the Rx register 41 in step S132.

図10の例においては図示されないが、Rxレジスタ41でのデータ転送完了に対応して、デバイスドライバ55(スレッド2)は、キュー71から、デコード(2)用のコモンバッファ構造体をプッシュする(図7のステップS26)。   Although not shown in the example of FIG. 10, the device driver 55 (thread 2) pushes a common buffer structure for decoding (2) from the queue 71 in response to the completion of data transfer in the Rx register 41 ( Step S26 in FIG.

一方、ファームウエア31は、デバイスドライバ55(スレッド1)からのデコード(1)実行コマンドを受信すると、ステップS151において、デコード部21にデコード(1)処理を実行させる。デコード部21は、メモリ24のデコード(1)用データを読み出し、デコードして、デコードしたデータを、再度メモリ24に書き込む。デコード部21がデコード(1)処理を完了すると、ファームウエア31は、ステップS152において、デコード(1)処理完了を、デバイスドライバ55(スレッド1およびスレッド2)並びに編集アプリケーション51に通知する。   On the other hand, when receiving the decode (1) execution command from the device driver 55 (thread 1), the firmware 31 causes the decode unit 21 to execute the decode (1) process in step S151. The decoding unit 21 reads and decodes the decoding (1) data in the memory 24 and writes the decoded data in the memory 24 again. When the decoding unit 21 completes the decoding (1) process, the firmware 31 notifies the device driver 55 (thread 1 and thread 2) and the editing application 51 of the completion of the decoding (1) process in step S152.

デコード(1)処理完了通知を受けると、デバイスドライバ55(スレッド2)は、ステップS116において、デコード(2)実行コマンドをファームウエア31に対して発行する。デバイスドライバ55(スレッド2)からのデコード(2)実行コマンドを受信すると、ファームウエア31は、ステップS153において、デコード部21にデコード(2)処理を実行させる。   Upon receiving the decode (1) process completion notification, the device driver 55 (thread 2) issues a decode (2) execution command to the firmware 31 in step S116. When receiving the decode (2) execution command from the device driver 55 (thread 2), the firmware 31 causes the decode unit 21 to execute the decode (2) process in step S153.

一方、デコード(1)処理完了通知を受けると、編集アプリケーション51は、ステップS53において、デバイスドライバ55(スレッド1)に対して、デコード(1)用結果取得要求を行う。   On the other hand, when receiving the notification of completion of the decoding (1) process, the editing application 51 issues a decoding (1) result acquisition request to the device driver 55 (thread 1) in step S53.

これに対応して、デバイスドライバ55(スレッド1)は、ステップS77において、DMAコントローラ23に対して、デコード(1)用結果データ取得DMAを実行する。具体的には、デバイスドライバ55(スレッド1)は、デコード(1)用結果データ取得DMAの実行を、DMAコントローラ23のTxレジスタ42に仕掛ける。   In response to this, the device driver 55 (thread 1) executes the decoding (1) result data acquisition DMA to the DMA controller 23 in step S77. Specifically, the device driver 55 (thread 1) sets the execution of the decode (1) result data acquisition DMA in the Tx register 42 of the DMA controller 23.

なお、Txレジスタ42の場合も、DMA実行の前(点線に示される)に、Rxレジスタ41の場合と同様に、デバイスドライバ55(スレッド1)およびI/Oマネージャ54間で行われるSGL作成およびコモンバッファ構造体のキューイングを行うようにしてもよい。すなわち、ステップS77の処理の前にも、ステップS71乃至S74と、それに対応するステップS91,S93,S95,S97と同様の処理を行うことが可能である。   In the case of the Tx register 42, the SGL creation performed between the device driver 55 (thread 1) and the I / O manager 54 is also performed before the DMA execution (indicated by the dotted line), as in the case of the Rx register 41. You may make it perform queuing of a common buffer structure. That is, it is possible to perform the same processes as steps S71 to S74 and the corresponding steps S91, S93, S95, and S97 before the process of step S77.

DMAコントローラ23は、デバイスドライバ55(スレッド1)からのDMAの実行に対して、Txレジスタ42を用いて、デバイスドライバ55(スレッド1)に対して、メモリ24からのデコード(1)用結果データ転送を行う。デコード(1)用結果データ転送が完了すると、DMAコントローラ23は、ステップS133において、Txレジスタ42での結果データ転送完了を、デバイスドライバ55(スレッド1およびスレッド2)に通知する。   The DMA controller 23 uses the Tx register 42 to execute DMA from the device driver 55 (thread 1), and uses the Tx register 42 to decode (1) result data from the memory 24. Perform the transfer. When the decoding (1) result data transfer is completed, the DMA controller 23 notifies the device driver 55 (thread 1 and thread 2) of the completion of the result data transfer in the Tx register 42 in step S133.

結果データ転送完了をDMAコントローラ23から受けると、デバイスドライバ55(スレッド1)は、ステップS78において、編集アプリケーション51に対して、デコード(1)用結果データを供給する。これにより、編集アプリケーション51においては、デコード(1)用結果データが取得される。   When the result data transfer completion is received from the DMA controller 23, the device driver 55 (thread 1) supplies the result data for decoding (1) to the editing application 51 in step S78. Thereby, in the editing application 51, the result data for decoding (1) is acquired.

また、ステップS153において、デコード部21は、メモリ24のデコード(2)用データを読み出し、デコードして、デコードしたデータを、再度メモリ24に書き込む。デコード部21がデコード(2)処理を完了すると、ファームウエア31は、ステップS154において、デコード(2)処理完了を、デバイスドライバ55(スレッド1およびスレッド2)並びに編集アプリケーション51に通知する。   In step S153, the decoding unit 21 reads and decodes the decoding (2) data in the memory 24, and writes the decoded data in the memory 24 again. When the decoding unit 21 completes the decoding (2) process, the firmware 31 notifies the device driver 55 (thread 1 and thread 2) and the editing application 51 of the completion of the decoding (2) process in step S154.

このデコード(2)処理完了通知を受けると、編集アプリケーション51は、ステップS54において、デバイスドライバ55(スレッド2)に対して、デコード(2)用結果取得要求を行う。   Upon receiving this decoding (2) processing completion notification, the editing application 51 makes a decoding (2) result acquisition request to the device driver 55 (thread 2) in step S54.

これに対応して、デバイスドライバ55(スレッド2)は、ステップS117において、DMAコントローラ23に対して、デコード(2)用結果データ取得DMAを実行する。具体的には、デバイスドライバ55(スレッド2)は、デコード(2)用結果データ取得DMAの実行を、DMAコントローラ23のTxレジスタ42に仕掛ける。   In response to this, the device driver 55 (thread 2) executes the decoding (2) result data acquisition DMA to the DMA controller 23 in step S117. Specifically, the device driver 55 (thread 2) sets the Tx register 42 of the DMA controller 23 to execute the decode (2) result data acquisition DMA.

なお、Txレジスタ42の場合も、DMA実行の前(点線に示される)に、Rxレジスタ41の場合と同様に、デバイスドライバ55(スレッド2)およびI/Oマネージャ54間で行われるSGL作成およびコモンバッファ構造体のキューイングを行うようにしてもよい。すなわち、ステップS77の処理の前にも、ステップS111乃至S114と、それに対応するステップS92,S94,S96,S98と同様の処理を行うことが可能である。   In the case of the Tx register 42 as well, the SGL creation and the I / O manager 54 performed between the device driver 55 (thread 2) and the I / O manager 54 are performed in the same manner as in the case of the Rx register 41 before DMA execution (indicated by a dotted line) You may make it perform queuing of a common buffer structure. That is, it is possible to perform the same processes as steps S111 to S114 and the corresponding steps S92, S94, S96, and S98 before the process of step S77.

DMAコントローラ23は、デバイスドライバ55(スレッド2)からのDMAの実行に対して、Txレジスタ42を用いて、デバイスドライバ55(スレッド2)に対して、メモリ24からのデコード(2)用結果データ転送を行う。デコード(2)用結果データ転送が完了すると、DMAコントローラ23は、ステップS134において、Txレジスタ42での結果データ転送完了を、デバイスドライバ55(スレッド1およびスレッド2)に通知する。   For the DMA execution from the device driver 55 (thread 2), the DMA controller 23 uses the Tx register 42 to perform the decoding (2) result data from the memory 24 to the device driver 55 (thread 2). Perform the transfer. When the decoding (2) result data transfer is completed, the DMA controller 23 notifies the device driver 55 (thread 1 and thread 2) of the completion of the result data transfer in the Tx register 42 in step S134.

結果データ転送完了をDMAコントローラ23から受けると、デバイスドライバ55(スレッド2)は、ステップS118において、編集アプリケーション51に対して、デコード(2)用結果データを供給する。これにより、編集アプリケーション51においては、デコード(2)用結果データが取得される。   When the result data transfer completion is received from the DMA controller 23, the device driver 55 (thread 2) supplies the result data for decoding (2) to the editing application 51 in step S118. As a result, the editing application 51 acquires the result data for decoding (2).

なお、図9および図10の例においては、デコード(1)用データ転送準備と並行して、デコード(2)用データ転送準備を行う例を説明したが、処理の例はこれに限らない。例えば、デコード(1)用データ転送準備が完了され、デコード(1)用データが転送されている間に、デコード(2)用データ転送準備を行うことも可能である。   In the example of FIGS. 9 and 10, the example in which the data transfer preparation for decoding (2) is performed in parallel with the data transfer preparation for decoding (1) has been described, but the processing example is not limited to this. For example, the decode (2) data transfer preparation can be performed while the decode (1) data transfer preparation is completed and the decode (1) data is being transferred.

以上のように、編集アプリケーション51からのデコード要求毎に、SGLを作成し、コモンバッファ構造体自体をキューイングするようにしたので、復号ハードウエア11がデコード処理を行っている間に次のデコード用データを、メモリに転送することができる。   As described above, since the SGL is created and the common buffer structure itself is queued for each decoding request from the editing application 51, the next decoding is performed while the decoding hardware 11 is performing the decoding process. Data can be transferred to the memory.

なお、アプリケーションでのキューイング機構の利用は、図2を参照して上述したように、主に実行コマンドをキューイングすることが一般的である。これに対して、本発明においては、DMAを実行するためのメモリ管理データ(コモンバッファ構造体)をキューイングすることを特徴としている。   Note that the use of a queuing mechanism in an application is generally performed mainly by queuing an execution command as described above with reference to FIG. On the other hand, the present invention is characterized by queuing memory management data (common buffer structure) for executing DMA.

すなわち、予め用意されたDMA実行用データのキューイングを行い、かつ、そのデータをデバイスドライバ内で管理することにより、復号ハードウエアからの実行トリガを受けると、即時に次のコマンド実行を行わせることが可能になる。これにより、図11に示されるような効果を得ることができる。   In other words, the DMA execution data prepared in advance is queued and the data is managed in the device driver, so that when the execution trigger is received from the decoding hardware, the next command is immediately executed. It becomes possible. Thereby, the effect as shown in FIG. 11 can be obtained.

[情報処理システムによる効果の説明]
次に、図11を参照して、パーソナルコンピュータ12と復号ハードウエア11とのデータ転送による効果について説明する。なお、図11の例においては、2つのデコード処理が連続で行われる例が示されている。
[Explanation of information processing system effects]
Next, with reference to FIG. 11, the effect of data transfer between the personal computer 12 and the decryption hardware 11 will be described. In the example of FIG. 11, an example in which two decoding processes are performed in succession is shown.

また、図11の例において、上段には、パーソナルコンピュータ12上で動作する編集アプリケーション51の処理が示されている。中段には、パーソナルコンピュータ12上のデバイスドライバ55と、復号ハードウエア11間のデータ転送処理が示されている。下段には、復号ハードウエア11の処理が示されている。   In the example of FIG. 11, the upper part shows processing of the editing application 51 operating on the personal computer 12. In the middle part, data transfer processing between the device driver 55 on the personal computer 12 and the decryption hardware 11 is shown. In the lower part, processing of the decoding hardware 11 is shown.

まず、編集アプリケーション51上でデコード(1)要求コマンドが発行されると、データ転送処理として、パーソナルコンピュータ12上の主記憶領域に置かれたデコード(1)用データの管理処理が行われる。その後、DMAコントローラ23のRxレジスタ41でのデコード(1)用データ転送が行われる。このデータ転送には、上述したSGLを用いたパケットDMA処理が使用される。   First, when a decode (1) request command is issued on the editing application 51, a management process of data for decoding (1) placed in the main storage area on the personal computer 12 is performed as a data transfer process. Thereafter, data transfer for decoding (1) is performed in the Rx register 41 of the DMA controller 23. For this data transfer, the above-described packet DMA processing using SGL is used.

編集アプリケーション51上では、デバイスドライバ55の処理を並列化(図9におけるスレッド処理化)することにより、デコード(1)要求コマンドの発行後、すぐにデコード(2)要求コマンドが発行される。これにより、データ転送処理として、デコード(1)用データ転送と並行して、パーソナルコンピュータ12上の主記憶領域に置かれたデコード(2)用データの管理処理を行うことができる。   On the editing application 51, by parallelizing the processing of the device driver 55 (thread processing in FIG. 9), the decode (2) request command is issued immediately after the decode (1) request command is issued. Thereby, as the data transfer processing, the management processing of the data for decoding (2) placed in the main storage area on the personal computer 12 can be performed in parallel with the data transfer for decoding (1).

デコード(1)用データ転送が完了すると、デコード(1)用データ転送の完了通知がデバイスドライバ55に通知されるとともに、復号ハードウエア11においては、デコード(1)処理が実行される。   When the decoding (1) data transfer is completed, the device driver 55 is notified of the completion of the decoding (1) data transfer, and the decoding hardware 11 executes the decoding (1) process.

デコード(2)用データの管理処理においては、SGL(すなわち、コモンバッファ構造体)のキューイングが行われている。これにより、デコード(1)用データ転送の完了通知がデバイスドライバ55で受信されると、即座に、DMAコントローラ23のRxレジスタ41でのデコード(2)用データ転送を行うことができる。   In the data management process for decoding (2), queuing of SGL (that is, common buffer structure) is performed. Accordingly, when the device driver 55 receives the completion notification of the data transfer for decoding (1), the data transfer for decoding (2) in the Rx register 41 of the DMA controller 23 can be performed immediately.

また、DMAコントローラ23のRxレジスタ41とTxレジスタ42は、独立した制御が可能である。これにより、デコード(2)用データ転送中に、復号ハードウエア11におけるデコード(1)処理が終了したとしても、DMAコントローラ23のTxレジスタ42でのデコード(1)用結果データを転送することができる。   Further, the Rx register 41 and the Tx register 42 of the DMA controller 23 can be controlled independently. Thus, even if the decoding (1) process in the decoding hardware 11 is completed during the decoding (2) data transfer, the decoding (1) result data in the Tx register 42 of the DMA controller 23 can be transferred. it can.

さらに、デコード(1)用結果データ転送中に、デコード(2)用データ転送が完了し、編集アプリケーション51においては、デコード(1)結果が取得されるとともに、そのデコード(2)用データ転送完了が、デバイスドライバ55に対して通知される。   Further, during the decoding (1) result data transfer, the decoding (2) data transfer is completed, and the editing application 51 obtains the decoding (1) result and completes the decoding (2) data transfer. Is notified to the device driver 55.

復号ハードウエア11においては、デコード(2)処理が実行され、DMAコントローラ23のTxレジスタ42でのデコード(2)用結果データが転送され、編集アプリケーション51においては、デコード(2)結果が取得される。   In the decoding hardware 11, the decoding (2) process is executed, the decoding (2) result data in the Tx register 42 of the DMA controller 23 is transferred, and the editing application 51 acquires the decoding (2) result. The

図3の情報処理システムにおいては、データ転送のためのパーソナルコンピュータ12の主記憶管理処理を行うことができるデバイスドライバ55において、データ転送管理を行うようにしたので、このようなデータ転送のパイプライン化を図ることができる。   In the information processing system of FIG. 3, since data transfer management is performed in the device driver 55 that can perform main memory management processing of the personal computer 12 for data transfer, such a data transfer pipeline is used. Can be achieved.

すなわち、デコード(1)処理を行っている間にデコード(2)用データ転送を行うことができるので、デコード用データ転送の効率が上がる。これにより、時間T11に示されるように、デコード(1)処理を終了してから、デコード(2)処理を開始するまでの復号ハードウエア11におけるデコード処理実行間隔が、従来(図1および図2)に比して短縮される。   That is, since the decoding (2) data transfer can be performed while the decoding (1) process is being performed, the efficiency of the decoding data transfer is increased. As a result, as shown at time T11, the decoding process execution interval in the decoding hardware 11 from the end of the decoding (1) process to the start of the decoding (2) process is conventional (FIGS. 1 and 2). ).

その結果、編集アプリケーション51側からみた全体的な復号ハードウエア11におけるデコード処理時間を高速化することができる。   As a result, it is possible to speed up the decoding processing time in the entire decoding hardware 11 as viewed from the editing application 51 side.

また、デバイスドライバ55内での処理となるので、編集アプリケーション51へのデータ転送完了通知などのオーバヘッドを生じることがなくなるため、処理時間の短縮化を図ることができる。   Further, since processing is performed within the device driver 55, overhead such as notification of completion of data transfer to the editing application 51 does not occur, so that processing time can be shortened.

以上のように、本発明においては、アプリケーションからのデコード要求コマンドに対応して、データ転送時にパケットDMAで使用されるSGLが複数作成される。デバイスドライバにより、作成されたSGLがコモンバッファへ構築され、そのコモンバッファ構造体がキューイングされる。そして、データ転送完了が通知されると、デバイスドライバにより、作成されたコモンバッファ構造体が即座に次のデータ転送に利用される。   As described above, in the present invention, a plurality of SGLs used in the packet DMA at the time of data transfer are created in response to the decode request command from the application. The created SGL is built into the common buffer by the device driver, and the common buffer structure is queued. When the completion of data transfer is notified, the created common buffer structure is immediately used for the next data transfer by the device driver.

これにより、復号ハードウエア上のメモリへ転送するデータの転送効率が向上され、デコード処理が高速化される。   Thereby, the transfer efficiency of the data transferred to the memory on the decoding hardware is improved, and the decoding process is speeded up.

また、デバイスドライバにおいて、データ転送用のデータ管理処理がパイプライン処理により逐次実行することができる。これにより、処理のオーバヘッドが削減される。   In the device driver, data management processing for data transfer can be sequentially executed by pipeline processing. This reduces processing overhead.

なお、上記説明においては、2つのデコード処理が連続で行われる例を説明したが、2つに限らず、本発明は、複数のデコード処理に適用することができる。   In the above description, an example in which two decoding processes are performed continuously has been described. However, the present invention is not limited to two, and the present invention can be applied to a plurality of decoding processes.

また、上記説明においては、デコードを復号ハードウエアに行わせる例を説明したが、ハードウエアに行わせる処理は、デコードに限らず、エンコードであってもよいし、その他の処理であってもよい。例えば、パーソナルコンピュータで行うには演算能力を必要とするような重い処理を、接続されるハードウエアに行わせることにも本発明を適用することができる。   In the above description, the example in which decoding is performed by the decoding hardware has been described. However, the processing to be performed by the hardware is not limited to decoding, and may be encoding or other processing. . For example, the present invention can also be applied to causing the connected hardware to perform heavy processing that requires computing power to be performed by a personal computer.

また、パーソナルコンピュータとハードウエアのインタフェースは、PCIeに限らず、他のインタフェースであってもよい。   Further, the interface between the personal computer and the hardware is not limited to PCIe, but may be another interface.

上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。   The series of processes described above can be executed by hardware or can be executed by software. When a series of processing is executed by software, a program constituting the software is installed in the computer. Here, the computer includes a computer incorporated in dedicated hardware, a general-purpose personal computer capable of executing various functions by installing various programs, and the like.

図12は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。すなわち、図3のパーソナルコンピュータ12は、図12に示すように構成される。   FIG. 12 is a block diagram showing an example of the hardware configuration of a computer that executes the above-described series of processing by a program. That is, the personal computer 12 of FIG. 3 is configured as shown in FIG.

コンピュータにおいて、CPU(Central Processing Unit)301、ROM(Read Only Memory)302、RAM(Random Access Memory)303は、バス304により相互に接続されている。   In a computer, a central processing unit (CPU) 301, a read only memory (ROM) 302, and a random access memory (RAM) 303 are connected to each other via a bus 304.

バス304には、さらに、入出力インタフェース305が接続されている。入出力インタフェース305には、入力部306、出力部307、記憶部308、通信部309、およびドライブ310が接続されている。   An input / output interface 305 is further connected to the bus 304. An input unit 306, an output unit 307, a storage unit 308, a communication unit 309, and a drive 310 are connected to the input / output interface 305.

入力部306は、キーボード、マウス、マイクロフォンなどよりなる。出力部307は、ディスプレイ、スピーカなどよりなる。記憶部308は、ハードディスクや不揮発性のメモリなどよりなる。通信部309は、ネットワークインタフェースなどよりなる。ドライブ310は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア311を駆動する。   The input unit 306 includes a keyboard, a mouse, a microphone, and the like. The output unit 307 includes a display, a speaker, and the like. The storage unit 308 includes a hard disk, a nonvolatile memory, and the like. The communication unit 309 includes a network interface and the like. The drive 310 drives a removable medium 311 such as a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory.

以上のように構成されるコンピュータでは、CPU301が、例えば、記憶部308に記憶されているプログラムを入出力インタフェース305およびバス304を介してRAM303にロードして実行することにより、上述した一連の処理が行われる。   In the computer configured as described above, the CPU 301 loads the program stored in the storage unit 308 to the RAM 303 via the input / output interface 305 and the bus 304 and executes the program, for example. Is done.

コンピュータ(CPU301)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア311に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供することができる。   The program executed by the computer (CPU 301) can be provided by being recorded on a removable medium 311 as a package medium or the like, for example. The program can be provided via a wired or wireless transmission medium such as a local area network, the Internet, or digital broadcasting.

コンピュータでは、プログラムは、リムーバブルメディア311をドライブ310に装着することにより、入出力インタフェース305を介して、記憶部308にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部309で受信し、記憶部308にインストールすることができる。その他、プログラムは、ROM302や記憶部308に、あらかじめインストールしておくことができる。   In the computer, the program can be installed in the storage unit 308 via the input / output interface 305 by attaching the removable medium 311 to the drive 310. Further, the program can be received by the communication unit 309 via a wired or wireless transmission medium and installed in the storage unit 308. In addition, the program can be installed in advance in the ROM 302 or the storage unit 308.

なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。   The program executed by the computer may be a program that is processed in time series in the order described in this specification, or in parallel or at a necessary timing such as when a call is made. It may be a program for processing.

本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。   The embodiments of the present invention are not limited to the above-described embodiments, and various modifications can be made without departing from the scope of the present invention.

11 復号ハードウエア, 12 パーソナルコンピュータ, 22 CPU, 23 DMAコントローラ, 24 メモリ, 31 ファームウエア, 41 Rx レジスタ, 42 Tx レジスタ, 51 編集アプリケーション, 54 I/Oマネージャ, 55 デバイスドライバ, 56 ファイルシステムドライバ, 57 メモリマネージャ, 71 キュー   11 Decoding hardware, 12 Personal computer, 22 CPU, 23 DMA controller, 24 Memory, 31 Firmware, 41 Rx register, 42 Tx register, 51 Editing application, 54 I / O manager, 55 Device driver, 56 File system driver, 57 memory manager, 71 queue

Claims (4)

他の情報処理装置が行う所定の処理に対して発行される要求コマンドに対応して、必要な主記憶上のデータの管理リストを作成し、前記管理リストを含む、仮想メモリ空間と物理メモリ空間の関連付けがなされたコモンバッファ構造体をキューに積む管理情報作成手段と、
前記管理情報作成手段により前記キューに積まれた前記コモンバッファ構造体を用いて、前記他の情報処理装置に対して、データ転送を行い、それに対応して前記他の情報処理装置から送られてくる前記データ転送の完了通知を受けた場合、前記キューから、前記データ転送に対応する前記コモンバッファ構造体を解放するとともに、前記キューに積まれた次の前記コモンバッファ構造体を用いて、前記他の情報処理装置に対して、次のデータ転送を行う
情報処理装置。
A virtual memory space and a physical memory space including a management list of necessary data on the main memory, corresponding to a request command issued for a predetermined process performed by another information processing apparatus, and including the management list Management information creation means for placing a common buffer structure associated with each other in a queue;
Using the common buffer structure stacked in the queue by the management information creating means, data is transferred to the other information processing apparatus, and the corresponding information is sent from the other information processing apparatus. When the completion notification of the data transfer is received, the common buffer structure corresponding to the data transfer is released from the queue, and the next common buffer structure loaded in the queue is used, An information processing apparatus that performs the next data transfer to another information processing apparatus.
前記管理情報作成手段は、前記他の情報処理装置が行うデコード処理に対して発行されるデコード要求コマンド毎に、前記管理リストを作成し、前記コモンバッファ構造体をキューに積む
請求項1に記載の情報処理装置。
The management information creation unit creates the management list for each decode request command issued for a decoding process performed by the other information processing apparatus, and loads the common buffer structure in a queue. Information processing device.
前記データ転送手段は、前記他の情報処理装置に対する前記次のデータ転送を、前記他の情報処理装置の一方のレジスタにより行い、前記他の情報処理装置からの、前記他の情報処理装置において前記所定の処理がなされた結果データの転送を、前記他の情報処理装置の他方のレジスタにより行う
請求項1に記載の情報処理装置。
The data transfer means performs the next data transfer to the other information processing apparatus using one register of the other information processing apparatus, and the other information processing apparatus receives the data from the other information processing apparatus. The information processing apparatus according to claim 1, wherein the result data subjected to the predetermined processing is transferred by the other register of the other information processing apparatus.
情報処理装置が、
他の情報処理装置が行う所定の処理に対して発行される要求コマンドに対応して、必要な主記憶上のデータの管理リストを作成し、前記管理リストを含む、仮想メモリ空間と物理メモリ空間の関連付けがなされたコモンバッファ構造体をキューに積み、
前記キューに積まれた前記コモンバッファ構造体を用いて、前記他の情報処理装置に対して、データ転送を行い、それに対応して前記他の情報処理装置から送られてくる前記データ転送の完了通知を受けた場合、前記キューから、前記データ転送に対応する前記コモンバッファ構造体を解放するとともに、前記キューに積まれた次の前記コモンバッファ構造体を用いて、前記他の情報処理装置に対して、次のデータ転送を行う
ステップを含む情報処理方法。
Information processing device
A virtual memory space and a physical memory space including a management list of necessary data on the main memory, corresponding to a request command issued for a predetermined process performed by another information processing apparatus, and including the management list Queue the common buffer structure associated with
Using the common buffer structure loaded in the queue, data transfer is performed to the other information processing apparatus, and the data transfer sent from the other information processing apparatus corresponding thereto is completed. When the notification is received, the common buffer structure corresponding to the data transfer is released from the queue, and the next information processing apparatus uses the next common buffer structure stacked in the queue. An information processing method including a step of performing next data transfer.
JP2009168438A 2009-07-17 2009-07-17 Information processing apparatus and method Withdrawn JP2011022877A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009168438A JP2011022877A (en) 2009-07-17 2009-07-17 Information processing apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009168438A JP2011022877A (en) 2009-07-17 2009-07-17 Information processing apparatus and method

Publications (1)

Publication Number Publication Date
JP2011022877A true JP2011022877A (en) 2011-02-03

Family

ID=43632886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009168438A Withdrawn JP2011022877A (en) 2009-07-17 2009-07-17 Information processing apparatus and method

Country Status (1)

Country Link
JP (1) JP2011022877A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304938B2 (en) 2012-11-26 2016-04-05 Samsung Electronics Co., Ltd. Storage device and data transferring method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304938B2 (en) 2012-11-26 2016-04-05 Samsung Electronics Co., Ltd. Storage device and data transferring method thereof

Similar Documents

Publication Publication Date Title
TWI269168B (en) Image signal processor, method of processing image signals, machine-readable medium having stored thereon instructions and image processor system
US9086916B2 (en) Architecture for efficient computation of heterogeneous workloads
JP2005202767A (en) Processor system, dma control circuit, dma control method, control method for dma controller, image processing method, and image processing circuit
EP2593862A1 (en) Out-of-order command execution in a multimedia processor
US20220236911A1 (en) Data streaming for computational storage
US8522254B2 (en) Programmable integrated processor blocks
US10671401B1 (en) Memory hierarchy to transfer vector data for operators of a directed acyclic graph
US9690720B2 (en) Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
JP2013005452A (en) Configurable buffer allocation for multi-format video processing
KR20150076207A (en) Scalable compute fabric
US10437601B2 (en) Centralized memory management for multiple device streams
JP2006259898A (en) I/o controller, signal processing system and data transferring method
JP2008186345A (en) Data processing method and data processing apparatus
US20200364163A1 (en) Dynamic performance enhancement for block i/o devices
US7861012B2 (en) Data transmitting device and data transmitting method
TW202107408A (en) Methods and apparatus for wave slot management
TWI567652B (en) Delivering real time interrupts with an advanced programmable interrupt controller
JP2011022877A (en) Information processing apparatus and method
US8928927B2 (en) Image forming apparatus that buffers data in a storage device and reduces delays in process
JP2010198138A (en) Data transfer device, data transfer control method, data transfer control program, and recording medium
US20220012201A1 (en) Scatter and Gather Streaming Data through a Circular FIFO
CN110764710B (en) Low-delay high-IOPS data access method and storage system
US20220416997A1 (en) Handling unaligned transactions for inline encryption
US11010318B2 (en) Method and apparatus for efficient and flexible direct memory access
US20230289229A1 (en) Confidential computing extensions for highly scalable accelerators

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20121002