JP2006003981A - 情報処理装置および方法、記録媒体、並びにプログラム - Google Patents
情報処理装置および方法、記録媒体、並びにプログラム Download PDFInfo
- Publication number
- JP2006003981A JP2006003981A JP2004177121A JP2004177121A JP2006003981A JP 2006003981 A JP2006003981 A JP 2006003981A JP 2004177121 A JP2004177121 A JP 2004177121A JP 2004177121 A JP2004177121 A JP 2004177121A JP 2006003981 A JP2006003981 A JP 2006003981A
- Authority
- JP
- Japan
- Prior art keywords
- dma
- dmac
- data
- controller
- input
- 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
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
【課題】既存の機能を有効に利用し、簡単な方法で、割り込み処理によるオーバヘッドを低減させるようにする。
【解決手段】 データの入力または出力を制御する入出力デバイスコントローラ141−1および141−2が設けられ、データを入力するかまたは出力するデバイスを備えるパーソナルコンピュータ100において、DMAコントローラ142−1および142−2により、デバイスによるデータのDMA(Direct Memory Access)転送が制御され、DMACマネージメントコントローラ151により、メインプロセッサ111から取得したデバイスに対するDMA転送の命令を基に、DMAコントローラ142−1および142−2にデバイスが制御され、さらにそのデータのDMA転送が制御される。本発明は、AV(Audio Visual)機器に適用することができる。
【選択図】図5
【解決手段】 データの入力または出力を制御する入出力デバイスコントローラ141−1および141−2が設けられ、データを入力するかまたは出力するデバイスを備えるパーソナルコンピュータ100において、DMAコントローラ142−1および142−2により、デバイスによるデータのDMA(Direct Memory Access)転送が制御され、DMACマネージメントコントローラ151により、メインプロセッサ111から取得したデバイスに対するDMA転送の命令を基に、DMAコントローラ142−1および142−2にデバイスが制御され、さらにそのデータのDMA転送が制御される。本発明は、AV(Audio Visual)機器に適用することができる。
【選択図】図5
Description
本発明は、情報処理装置および方法、記録媒体、並びにプログラムに関し、特に、割り込み処理によるオーバーヘッドを低減することができるようにした情報処理装置および方法、記録媒体、並びにプログラムに関する。
従来、パーソナルコンピュータ(以下、PCと称する)における、CPU(Central Processing Unit)などのプロセッサ(以下、メインプロセッサとも称する)およびドライブやキーボードなどのデータを入力するかまたは出力する入出力デバイス(周辺装置)との間で、データが送受信される場合、データ転送方式としてPIO(Program I/O(Input/Output))転送やDMA(Direct Memory Access)転送が用いられている。
図1は、データ転送方式として、DMA転送方式が適用されている従来のPC1の構成の例を示すブロック図である。PC1の全体を制御するメインプロセッサ11およびRAM(Random Access Memory)などからなるメインメモリ12が、バス21を介して相互に接続されている。また、メインプロセッサ11は、メインメモリ12にロードされたプログラムに従って各種の処理を実行する。バス21は、バス31とも接続されている。
入出力デバイスコントローラ41−1および入出力デバイスコントローラ41−2は、バス31を介して相互に接続されている。
入出力デバイスコントローラ41−1および入出力デバイスコントローラ41−2は、それぞれ、図示せぬハードディスクドライブやDVD(Digital Versatile Disk)ドライブなどのデータを入力するかまたは出力する入出力デバイスを制御する。
また、入出力デバイスコントローラ41−1には、DMAC(Direct Memory Access Controller)42−1が含まれ、入出力デバイスコントローラ41−2にはDMAC42−2が含まれている。DMAC42−1は、入出力デバイスコントローラ41−1に制御される、図示せぬ入出力デバイスによるデータのDMA転送を制御する。DMAC42−2は、入出力デバイスコントローラ41−2に制御される、図示せぬ入出力デバイスによるデータのDMA転送を制御する。
以下、入出力デバイスコントローラ41−1および入出力デバイスコントローラ41−2を個々に区別する必要がないとき、単に、入出力デバイスコントローラ41と称する。また、同様に、DMAC42−1およびDMAC42−2を個々に区別する必要がないとき、単に、DMAC42と称する。
図2は、PC1における、ソフトウェアの構成の例を示すブロック図である。図2で示されるように、PC1は、オペレーティングシステム(以下、OSと称する)81、デバイスドライバ82−1、およびデバイスドライバ82−2を実行する。
図2における、OS81は、OSの中核部分として、OSの基本機能を提供する、カーネルである。
デバイスドライバ82−1は、入出力デバイスコントローラ41−1を動作させるためのプログラムである。デバイスドライバ82−2は、入出力デバイスコントローラ41−2を動作させるためのプログラムである。OS81は、デバイスドライバ82−1を介し、入出力デバイスコントローラ41−1を制御し、デバイスドライバ82−2を介し、入出力デバイスコントローラ41−2を制御する。
以下、デバイスドライバ82−1およびデバイスドライバ82−2を、個々に区別する必要がない場合、単にデバイスドライバ82と称する。
図3および図4は、PC1における、従来のDMA転送の処理を説明するフローチャートである。ステップS1において、OS81およびデバイスドライバ82−1を実行するメインプロセッサ11は、入出力デバイスコントローラ41−1のDMAC42−1に、データをDMA転送させるための所定のコマンド(以下、DMAコマンドと称する)を書き込む。
ステップS61において、メインプロセッサ11からのDMAコマンドの書き込みを待機している状態にある、入出力デバイスコントローラ41−1のDMAC42−1は、ステップS1の処理により書き込まれたDMAコマンドを受け付ける。DMAC42−1は、DMAコマンドがメインプロセッサ11により書き込まれることで、起動する。
ステップS62において、DMAC42−1は、書き込まれたDMAコマンドを基に、入出力デバイスコントローラ41−1を制御し、所定のデータをDMA転送させる。例えば、入出力デバイスコントローラ41−1が制御する図示せぬデバイスから、メインメモリ12に、データがDMA転送される。
ステップS63において、DMAC42−1は、ステップS62の処理によりデータのDMA転送が完了したか否かを判定する。ステップS63において、DMA転送が完了していないと判定された場合、手続きは、ステップS62に戻り、データのDMA転送が繰り返される。例えば、ステップS62における、デバイスから、メインメモリ12へのデータのDMA転送が完了するまで繰り返し実行される。
ステップS63において、データのDMA転送が完了したと判定された場合、ステップS64に進み、DMAC42−1は、メインプロセッサ11に対して、データのDMA転送の完了に対応した割り込み処理の実行を要求する、割り込み信号を出力する。
ステップS64の処理の後、手続きは、ステップS61に戻り、上述した処理が実行される。
ステップS2において、OS81を実行するメインプロセッサ11は、メインタスクの処理を行う。すなわち、上述した入出力デバイスコントローラ41−1のDMAC42−1による、ステップS61乃至ステップS64の処理が実行される一方で、メインタスクの処理が実行される。
ステップS3において、OS81を実行するメインプロセッサ11は、DMAC42−1によるステップS64の処理により出力された割り込み(割り込み信号)を受け付ける。
実際は、ステップS64の処理により割り込み信号がメインプロセッサ11に供給され、またその割り込み信号が有効である場合、メインプロセッサ11で現在処理中の命令が終了するのを待って、割り込みが受け付けられる。
ステップS4において、OS81を実行するメインプロセッサ11は、ステップS3の処理により、DMAC42−1からの割り込み信号を受け付けたので、処理中のメインタスクのデータ(プログラムカウンタやスタックポインタなどに記憶されている内容)を退避させる。すなわち、例えば、メインメモリ12の所定の領域または図示せぬ外部ストレージに、処理中のメインタスクのデータを退避(記憶(記録))させる。
ステップS5において、メインプロセッサ11は、ステップS3の処理により受け付けた割り込みに対応する、割り込み処理を行う。
ステップS5の割り込み処理が終了すると、図4のステップS6において、OS81およびデバイスドライバ82−2を実行するメインプロセッサ11は、入出力デバイスコントローラ41−2のDMAC42−2に所定のDMAコマンドを書き込む。
ステップS81において、メインプロセッサ11からのDMAコマンドの書き込みを待機している状態にある、入出力デバイスコントローラ41−2のDMAC42−2は、ステップS6の処理により書き込まれたDMAコマンドを受け付ける。DMAC42−2は、DMAコマンドがメインプロセッサ11により書き込まれることで、起動する。
ステップS82において、DMAC42−2は、書き込まれたDMAコマンドを基に、入出力デバイスコントローラ41−2を制御し、所定のデータをDMA転送させる。例えば、入出力デバイスコントローラ41−2が制御する図示せぬデバイスから、メインメモリ12に対して、データがDMA転送される。
ステップS83において、DMAC42−2は、ステップS82の処理によりデータのDMA転送が完了したか否かを判定する。ステップS83において、DMA転送が完了していないと判定された場合、手続きは、ステップS82に戻り、データのDMA転送が繰り返される。例えば、ステップS82における、デバイスからメインメモリ12へのデータのDMA転送が完了するまで繰り返し実行される。
ステップS83において、データのDMA転送が完了したと判定された場合、ステップS84に進み、DMAC42−2は、メインプロセッサ11に対して、データのDMA転送の完了に対応した割り込み処理の実行を要求する、割り込み信号を出力する。
ステップS84の処理の後、手続きは、ステップS81に戻り、上述した処理が実行される。
ステップS7において、OS81を実行するメインプロセッサ11は、ステップS4の処理において退避させたデータを読み出す。例えば、メインメモリ12に、処理中のデータを退避(記憶)させていた場合、メインプロセッサ11は、メインメモリ12より、退避させていたデータをメインメモリ12のプログラムを実行するための領域に読み出す。
ステップS8において、OS81を実行するメインプロセッサ11は、メインタスクの処理を行う。すなわち、上述した入出力デバイスコントローラ41−2のDMAC42−2による、ステップS81乃至ステップS84の処理が実行される一方で、メインタスクの処理が実行される。
ステップS9において、OS81を実行するメインプロセッサ11は、DMAC42−2によるステップS84の処理により出力された割り込み(割り込み信号)を受け付ける。
ステップS10において、OS81を実行するメインプロセッサ11は、ステップS9の処理により、DMAC42−2からの割り込み信号を受け付けたので、処理中のメインタスクのデータを退避させる。例えば、メインメモリ12の所定の領域または図示せぬ外部ストレージに、処理中のメインタスクのデータを退避(記憶(記録))させる。
ステップS11において、OS81を実行するメインプロセッサ11は、ステップS9の処理により受け付けた割り込みに対応する、割り込み処理を行う。
ステップS11の割り込み処理が終了すると、ステップS12において、OS81を実行するメインプロセッサ11は、ステップS10の処理において退避させたデータを読み出す。例えば、メインメモリ12に、処理中のデータを退避(記憶)させていた場合、メインプロセッサ11は、メインメモリ12より、退避させていたデータをメインメモリ12のプログラムを実行するための領域に読み出す。
ステップS13において、メインプロセッサ11は、メインタスクの処理を行い、処理は終了する。
以上のように、通常、入出力デバイスコントローラ41のDMAC42による、データのDMA転送においては、1回のデータのDMA転送が完了する毎に、メインプロセッサ11において割り込み処理が発生していた。例えば、図1の破線の矢印で示されるように、DMAC42が2つ存在し、それぞれが制御するデバイスにDMA転送を実行させた場合、2回のデータのDMA転送により、メインプロセッサ11においては、2回の割り込み処理が発生していた。
また、上述したように、メインプロセッサ11は、割り込み(割り込み信号)の通知を受け取る毎に現在実行中のメインタスクの処理を中断し、割り込み処理を実行しなければならない。このとき、メインタスクの処理から割込み処理への切り替えは、現在処理中のメインタスクの処理を中断した時点で、処理中のデータを外部メモリ(メインメモリ12)または外部ストレージに退避、記憶(記録)させるため、大きなオーバーヘッドが発生していた。この場合、オーバーヘッドとして、メインプロセッサ11の負荷が発生し(メインプロセッサ11が処理を実行し)、メインメモリ12の所定の領域が占有される。すなわち、PC1のリソースがオーバーヘッドとして使用されることになる。
さらに、例えば、AV(Audio Visual)機器においては、入出力デバイスコントローラが扱うデータはAVストリームデータであり、通常、複数存在し、それぞれから連続的にDMA転送で、データの転送を行わなければならない。
AV機器におけるメインプロセッサは、入出力デバイスコントローラからのDMA転送が完了した場合、割込み処理において、次のDMACの設定および起動を行う必要がある。このため、AV機器においては、たとえ、メインプロセッサの処理能力が高い場合でも、入出力デバイスコントローラからの割込み処理の頻度、割合が共に高くなると、メインプロセッサにおけるメインタスクの処理能力は低下してしまう。この処理能力の低下は、メインプロセッサ、外部メモリ(メインメモリ)間のデータの転送量の軽減のために、入出力デバイスコントローラの近くにローカルメモリを配置したとしても防ぐことはできない。
メモリへのデータの転送を減らす技術として、例えば、特許文献1には、主プロセッサ、メモリ、および複数の入出力デバイス(入出力コントローラ)間においてデータの転送を行う、主プロセッサとは独立した入出力プロセッサを設ける技術が開示されている。
特開平2−284252号公報
特許文献1に記載の技術における、入出力プロセッサは、入出力デバイス(入出力コントローラ)からの転送の要求を調停し、入出力デバイスコントローラのDMACの代わりに、外部メモリとの間で、DMA転送を行うことを目的としたプロセッサであり、これにより、入出力デバイスのDMACの開発の削減が効果として挙げられている。
しかしながら、現在、入出力デバイスコントローラの多くは、すでにDMACを内蔵している。例えば、一般的には、PCI(Peripheral Component Interconnect)デバイスであれば、バスマスタの機能を有するDMACが内蔵されている。
また、汎用のバス、例えば、PCIバスにおいては、GNT/REQ機構のような、バスアービトレーションの機能も実装されている。
さらに、PCIデバイスにおいては、PCIデバイス側のDMAC(バスマスタ機能)を利用しなければ、PCIデバイス側からのバースト転送をすることはできなくなり、バスの転送帯域は低下してしまう。
また、図2で示されるように、既存の入出力デバイスコントローラ41に対するデバイスドライバ82も、すでに存在している。
特許文献1に記載の入出力プロセッサによる方法で、既存の入出力デバイスコントローラ、例えば、PCIデバイスを使用する場合には、ハードウェアおよびソフトウェアの両面での再設計が必要となってしまう。したがって、入出力プロセッサによる方法においては、今までの組み込み技術には有効であるが、汎用のPCや汎用のPCの技術を応用したアーキテクチャ技術、例えば、CELLのアーキテクチャには該当しない。
以上のように、既存の機能を有効に利用せず、未使用とすることは、有益ではないという課題があった。
本発明は、このような状況に鑑みてなされたものであり、既存の機能を有効に利用し、簡単な方法で、割り込み処理によるオーバーヘッドを低減させることができるようにするものである。
本発明の情報処理装置は、データ入出力制御手段に設けられ、デバイスによるデータのDMA(Direct Memory Access)転送を制御するDMAコントローラと、プロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御するコントローラ制御手段とを含むことを特徴とする。
コントローラ制御手段は、複数のデバイスに対する、複数の命令を基に、複数のデバイスのそれぞれのデータ入出力制御手段にそれぞれ設けられている、DMAコントローラを制御するようにすることができる。
コントローラ制御手段は、DMAコントローラからの割り込み処理の要求を受け付けて、その割り込み処理を実行するようにすることができる。
コントローラ制御手段は、プロセッサから取得したデバイスに対するDMA転送の命令に応じたデータのDMA転送が完了した場合、プロセッサに割り込み処理を要求するようにすることができる。
本発明の情報処理方法は、メインプロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する、制御手段により実行される制御ステップを含むことを特徴とする。
本発明の記録媒体のプログラムは、メインプロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する、制御手段により実行される制御ステップを含むことを特徴とする。
本発明のプログラムは、メインプロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する制御ステップをコンピュータに実行させる。
本発明の情報処理装置においては、データ入出力制御手段に設けられ、デバイスによるデータのDMA(Direct Memory Access)転送が制御され、プロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラが制御される。
本発明の情報処理方法、記録媒体、およびプログラムにおいては、メインプロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラが制御される。
本発明によれば、データを転送することができる。また、各デバイスの既存の機能を有効に利用し、簡単な方法で、割り込み処理によるオーバーヘッドを低減させることができる。
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
請求項1に記載の情報処理装置は、データの入力または出力を制御するデータ入出力制御手段(例えば、図5の入出力デバイスコントローラ141−1)が設けられているデバイスであって、データを入力するかまたは出力するデバイスを備える情報処理装置(例えば、図5のパーソナルコンピュータ100)において、データ入出力制御手段に設けられ、デバイスによるデータのDMA(Direct Memory Access)転送を制御するDMAコントローラ(例えば、図5のDMAC142−1)と、プロセッサ(例えば、図5のメインプロセッサ111)から取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御するコントローラ制御手段(例えば、図5のDMACマネジメントコントローラ151)とを含むことを特徴とする。
請求項2に記載の情報処理装置は、コントローラ制御手段が、複数のデバイスに対する、複数の命令(例えば、図5のDMAコマンドリスト152)を基に、複数のデバイスのそれぞれのデータ入出力制御手段にそれぞれ設けられている、DMAコントローラを制御するようにすることができる。
請求項3に記載の情報処理装置は、コントローラ制御手段が、DMAコントローラからの割り込み処理の要求を受け付けて(例えば、図7のステップS133)、その割り込み処理を実行する(例えば、図7のステップS134)ようにすることができる。
請求項4に記載の情報処理装置は、コントローラ制御手段は、プロセッサから取得したデバイスに対するDMA転送の命令(例えば、図5のDMAコマンドリスト152)に応じたデータのDMA転送が完了した場合、プロセッサに割り込み処理を要求する(例えば、図8のステップS138)ようにすることができる。
請求項5に記載の情報処理方法は、データの入力または出力を制御し、DMA(Direct Memory Access)転送を制御するDMAコントローラ(例えば、図5のDMAC142−1)を含むデータ入出力制御手段(例えば、図5の入出力デバイスコントローラ141−1)が設けられているデバイスであって、データを入力するかまたは出力するデバイスと、メインプロセッサ(例えば、図5のメインプロセッサ111)とは別にデバイスを制御する制御手段(例えば、図5のDMACマネジメントコントローラ151)とを備える情報処理装置(例えば、図5のパーソナルコンピュータ100)の情報処理方法であって、メインプロセッサから取得したデバイスに対するDMA転送の命令(例えば、図5のDMAコマンドリスト152)を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する、制御手段により実行される制御ステップ(例えば、図7のステップS132)を含むことを特徴とする。
請求項6に記載の記録媒体のプログラムは、データの入力または出力を制御し、DMA(Direct Memory Access)転送を制御するDMAコントローラ(例えば、図5のDMAC142−1)を含むデータ入出力制御手段(例えば、図5の入出力デバイスコントローラ141−1)が設けられているデバイスであって、データを入力するかまたは出力するデバイスと、メインプロセッサ(例えば、図5のメインプロセッサ111)とは別にデバイスを制御する制御手段(例えば、図5のDMACマネジメントコントローラ151)とを備える情報処理装置(例えば、図5のパーソナルコンピュータ100)の情報処理用のプログラムであって、メインプロセッサから取得したデバイスに対するDMA転送の命令(例えば、図5のDMAコマンドリスト152)を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する、制御手段により実行される制御ステップ(例えば、図7のステップS132)を含むことを特徴とする。
請求項7に記載のプログラムは、データの入力または出力を制御し、DMA(Direct Memory Access)転送を制御するDMAコントローラ(例えば、図5のDMAC142−1)を含むデータ入出力制御手段(例えば、図5の入出力デバイスコントローラ141−1)が設けられているデバイスであって、データを入力するかまたは出力するデバイスと、メインプロセッサ(例えば、図5のメインプロセッサ111)とを備える情報処理装置(例えば、図5のパーソナルコンピュータ100)に設けられる、メインプロセッサとは別にデバイスを制御するコンピュータ(例えば、図5のDMACマネジメントコントローラ151)に、情報処理を行わせるプログラムであって、メインプロセッサから取得したデバイスに対するDMA転送の命令(例えば、図5のDMAコマンドリスト152)を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する制御ステップ(例えば、図7のステップS132)を実行させる。
以下に、本発明の実施の形態について図面を参照して説明する。
図5は、本発明を適用したPC100の構成の例を示すブロック図である。PC100の全体を制御するメインプロセッサ111およびRAM(Random Access Memory)などからなるメインメモリ112は、バス121を介して相互に接続されている。メインプロセッサ111は、メインメモリ112にロードされたプログラムに従って各種の処理を実行する。また、バス121は、バス131とも接続されている。
入出力デバイスコントローラ141−1、入出力デバイスコントローラ141−2、DMACマネジメントコントローラ151、およびドライブ153が、バス131を介して相互に接続されている。
入出力デバイスコントローラ141−1および入出力デバイスコントローラ141−2は、それぞれ、図示せぬハードディスクドライブ、DVDドライブなどの光ディスクドライブ、または半導体メモリカードなどのデータを入力するかまたは出力する入出力デバイスを制御する。
また、入出力デバイスコントローラ141−1には、DMAC142−1が含まれ、入出力デバイスコントローラ141−2には、DMAC142−2が含まれている。DMAC142−1は、入出力デバイスコントローラ141−1に制御される、図示せぬ入出力デバイスによるデータのDMA転送を制御する。DMAC142−2は、入出力デバイスコントローラ141−2に制御される、図示せぬ入出力デバイスによるデータのDMA転送を制御する。
以下、入出力デバイスコントローラ141−1および入出力デバイスコントローラ141−2を個々に区別する必要がないとき、単に、入出力デバイスコントローラ141と称する。また、同様に、DMAC142−1およびDMAC142−2を個々に区別する必要がないとき、単に、DMAC142と称する。
なお、ドライブは、着脱可能としてもよく、また、ドライブの記録媒体は、着脱可能とすることができる。また、以下、ドライブが2つの場合を例に説明するが、ドライブの数は、本発明を限定するものではなく、任意の数のドライブを設けることができる。
DMACマネジメントコントローラ151は、DMAC142によるデータのDMA転送を制御する。DMACマネジメントコントローラ151には、メインプロセッサ111により生成され、DMA転送のためのDMAコマンドが複数含まれるDMAコマンドリスト152が登録(設定)される。換言すれば、DMACマネジメントコントローラ151は、メインプロセッサ111により生成された、DMA転送のための複数のDMAコマンドからなるDMAコマンドリスト152を取得する。
DMACマネジメントコントローラ151は、登録(設定)されたDMAコマンドリスト152を基に、DMAC142によるデータのDMA転送を制御する。DMAコマンドリスト152の詳細は、図9を参照して後述する。
なお、入出力デバイスコントローラ141からの割り込み信号線は、バス131を介し、DMACマネジメントコントローラ151に接続される。また、DMACマネジメントコントローラ151からの割り込み信号線は、バス121およびバス131を介し、メインプロセッサ111に接続される。より具体的には、バス121が準拠する規格およびバス131が準拠する規格に準じて、割り込み信号線は、DMACマネジメントコントローラ151とメインプロセッサ111とを接続する。
なお、DMAC142は、バス121およびバス131の固有の機構を用いてアービトレーションを行う。例えば、バス131がPCIバスである場合、DMAC142は、PCIバスであるバス131に直接接続される。この場合、PCIバスコントローラである入出力デバイスコントローラ141の割り込み信号線(PCI割り込み通知信号線INT)は、DMACマネジメントコントローラ151に接続され、入出力デバイスコントローラ141の他の信号線は、PCIバスであるバス131に接続される。
言い換えれば、入出力デバイスコントローラ141に制御されるデバイス信号線のうち、PCI割り込み通知信号線INT以外の信号線が相互に接続される。アービトレーションに必要なREQおよびGNTの信号線が相互に接続されるので、PCIバスであるバス131に接続されるデバイスにおいてPCIバスアービトレーションが実行される。
このようにすると、入出力デバイスコントローラ141からの割り込み信号(割り込み要求)は、メインプロセッサ111に直接供給されない(入出力デバイスコントローラ141が、メインプロセッサ111に直接割り込み要求がなされない)。メインプロセッサ111への割り込み要求は、DMACマネジメントコントローラ151を介してなされる。
ドライブ153には、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア154が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じてメインメモリ112に読み出されるか、またはDMACマネジメントコントローラ151に供給される。
図6は、PC100における、ソフトウェアの構成の例を示すブロック図である。PC100のメインプロセッサ111は、OS181、デバイスドライバ182−1、デバイスドライバ182−2、およびDMACマネジメントコントローラドライバ183を実行する。
図6における、OS181は、OSの中核部分として、例えば、ハードウェア(入出力デバイスコントローラ141)の管理、タスクの管理、割り込みの管理、およびメモリ(メインメモリ112)の割り当ての管理などのOSの基本機能を提供するカーネルである。
デバイスドライバ182−1は、入出力デバイスコントローラ141−1により制御されるデバイスを動作させるためのプログラムである。デバイスドライバ182−1は、入出力デバイスコントローラ141−1にデバイスの動作を指示したり、入出力デバイスコントローラ141−1により制御されるデバイスの状態を取得したりする。
デバイスドライバ182−2は、入出力デバイスコントローラ141−2により制御されるデバイスを動作させるためのプログラムである。デバイスドライバ182−2は、入出力デバイスコントローラ141−2にデバイスの動作を指示したり、入出力デバイスコントローラ141−2により制御されるデバイスの状態を取得したりする。
以下、デバイスドライバ182−1およびデバイスドライバ182−2を、個々に区別する必要がない場合、単にデバイスドライバ182と称する。
DMACマネジメントコントローラドライバ183は、DMACマネジメントコントローラ151用のデバイスドライバであり、DMACマネジメントコントローラ151を制御するためのプログラムである。より具体的には、DMACマネジメントコントローラドライバ183は、DMACマネジメントコントローラ151に動作を指示したり、DMACマネジメントコントローラ151の状態を取得したりする。
また、DMACマネジメントコントローラドライバ183は、入出力デバイスコントローラ141のデバイスドライバ182からの、入出力デバイスコントローラ141のDMAC142へのアクセス要求を受け取り記録する。DMACマネジメントコントローラドライバ183は、所定の期間毎に、記録された入出力デバイスコントローラ141のデバイスドライバ182からの、入出力デバイスコントローラ141のDMAC142へのアクセス要求を基に、後述するDMAコマンドリスト152を生成する。DMACマネジメントコントローラドライバ183は、生成したDMAコマンドリスト152をDMACマネジメントコントローラ151に設定する。
DMACマネジメントコントローラドライバ183は、DMACマネジメントコントローラ151に設定したDMAコマンドリスト152に基づくDMA転送の処理が終了した場合、DMACマネジメントコントローラ151からの割り込み処理の要求を受け付ける。この場合、DMACマネジメントコントローラドライバ183は、割り込み処理の要求を受け付けた旨をデバイスドライバ182−1またはデバイスドライバ182−2に通知する。すると、この通知を受けたデバイスドライバ182−1またはデバイスドライバ182−2は、割り込み処理の要求に応じた割り込み処理を実行する。
このようにすることで、メインプロセッサ111への割り込み処理の要求の回数をより少なくすることができる。その結果、割り込み処理に伴うオーバーヘッドの増加による、メインプロセッサ111の実質的な処理能力の低下を軽減することができる。
OS181は、デバイスドライバ182−1およびDMACマネジメントコントローラドライバ183を介し、入出力デバイスコントローラ141−1を制御し、デバイスドライバ182−2およびDMACマネジメントコントローラドライバ183を介し、入出力デバイスコントローラ141−2を制御する。
また、OS181は、デバイスドライバ182−1またはデバイスドライバ182−2、およびDMACマネジメントコントローラドライバ183を介し、DMACマネジメントコントローラ151を制御する。
図7および図8は、PC100における、DMA転送の処理を説明するフローチャートである。なお、DMACマネジメントコントローラ151は、専用のハードウェアから構成するようにしても良く、制御プログラムを実行することにより、以下に説明する処理を実行するようにしても良い。ステップS101において、OS181を実行するメインプロセッサ111は、DMAコマンドリスト152を生成する。
図9は、DMAコマンドリスト152の例を示す図である。DMAコマンドリスト152には、DMAC142にデータのDMA転送を実行させるためのコマンド(DMAコマンド)が含まれている。DMAコマンドは、DMA転送を実行させるデバイスを特定するデバイス特定情報、DMA転送によるデータの転送元を示す転送元情報、DMA転送によるデータの転送先を示す転送先情報、およびDMA転送されるデータのデータ量を示すデータ量情報を含む。例えば、図9で示されるように、DMAコマンドは、“DID,SRS ADR,DEST ADR,SIZE”と記述される。
図9で示されるDMAコマンドのDID(Device Identification)は、DMA転送を実行させるデバイスを特定するデバイス特定情報の一例であり、入出力デバイスコントローラ141−1によって制御される入出力デバイスの識別子(割り込み番号)である。
図9で示されるDMAコマンドのSRS ADR(Source Address)は、DMA転送によるデータの転送元を示す転送元情報の一例である。また、図9で示されるDMAコマンドのDEST ADR(Destination Address)は、DMA転送によるデータの転送先を示す転送先情報の一例である。図9で示されるDMAコマンドのSIZE(Transfer Size)は、DMA転送されるデータのデータ量を示すデータ量情報の一例である。
例えば、DMAC142−1が設けられている入出力デバイスコントローラ141−1に制御されるデバイスからメインメモリ112にデータを転送する場合、DMAコマンドのDIDには、入出力デバイスコントローラ141−1に制御されるデバイスの識別子(割り込み番号)が配置され、DMAコマンドのSRS ADRには、データの転送元であるデバイスにおける記録空間のアドレスが配置され、DMAコマンドのDEST ADRには、データの転送先であるメインメモリ112の記憶空間のアドレスが配置され、そして、DMAコマンドのSIZEには、DMAC142−1が設けられている入出力デバイスコントローラ141−1に制御されるデバイスからメインメモリ112にDMA転送されるデータのデータ量(サイズ)が配置される。
また、例えば、メインメモリ112からDMAC142−2が設けられている入出力デバイスコントローラ141−2に制御されるデバイスにデータを転送する場合、DMAコマンドのDIDには、入出力デバイスコントローラ141−2に制御されるデバイスの識別子(割り込み番号)が配置され、DMAコマンドのSRS ADRには、データの転送元であるメインメモリ112の記憶空間のアドレスが配置され、DMAコマンドのDEST ADRには、データの転送先であるデバイスにおける記録空間のアドレスが配置され、そして、DMAコマンドのSIZEには、メインメモリ112からDMAC142−2が設けられている入出力デバイスコントローラ141−2に制御されるデバイスにDMA転送されるデータのデータ量(サイズ)が配置される。
図9で示されるDMAコマンドリスト152における“notify”は、DMACマネジメントコントローラ151に、メインプロセッサ111宛てに、DMAコマンドリスト152により指示されたDMA転送の処理が完了したことを通知させるコマンドである。DMA転送の処理が完了したことを通知するDMAコマンドリスト完了通知は、メインプロセッサ111に対する割り込み処理の要求でもある。
なお、DMAコマンドリスト152に含まれるDMAコマンドの表記方法は、SpecCに準じる。
ステップS102において、OS181、デバイスドライバ182、およびDMACマネジメントコントローラ151を実行するメインプロセッサ111は、ステップS101の処理により生成したDMAコマンドリスト152をDMACマネジメントコントローラ151に登録(設定)する。すなわち、DMACマネジメントコントローラ151を実行するメインプロセッサ111は、バス121およびバス131を介して、DMAコマンドリスト152をDMACマネジメントコントローラ151に供給する。
ステップS131において、メインプロセッサ111からのDMAコマンドリスト152の登録を待機している状態にある、DMACマネジメントコントローラ151は、ステップS102の処理により送信されてきた、DMAコマンドリスト152を受け付ける。DMACマネジメントコントローラ151は、バス121およびバス131を介して、メインプロセッサ111から送信されてきたDMAコマンドリスト152を受信(取得)して、取得したDMAコマンドリスト152をその内部に記憶する。
DMACマネジメントコントローラ151は、DMAコマンドリスト152を取得すると、取得したDMAコマンドリスト152に記述されているDMAコマンドに従って、DMAC142−1およびDMAC142−2を制御し、DMAC142−1またはDMAC142−2に、データのDMA転送を制御させる。
以下、DMAコマンドリスト152に入出力デバイスコントローラ141−1(に制御されるデバイス)に対するDMAコマンドおよび入出力デバイスコントローラ141−2(に制御されるデバイス)に対するDMAコマンドが記述されている場合を例に、説明する。
ステップS132において、DMACマネジメントコントローラ151は、ステップS131の処理で受け付けた(登録された)DMAコマンドリスト152を基に、入出力デバイスドライバコントローラ141−1のDMAC142−1に、図9で示される入出力ドライバコントローラ141−1のDMAコマンド“DID,SRS ADR,DEST ADR,SIZE”を書き込む。すなわち、例えば、DMACマネジメントコントローラ151は、取得して内部に記憶されているDMAコマンドリスト152から、先頭から順にDMAコマンドを読み出すので、ステップS132において、DMACマネジメントコントローラ151は、内部に記憶されているDMAコマンドリスト152の先頭のDMAコマンドを読み出す。読み出したDMAコマンドのデバイス特定情報が入出力デバイスコントローラ141−1によって制御されるデバイスを特定するものである場合、DMACマネジメントコントローラ151は、入出力デバイスコントローラ141−1のDMAC142−1に、読み出したDMAコマンドを書き込む。
ステップS161において、DMACマネジメントコントローラ151からのDMAコマンドの書き込みを待機している状態にある、入出力デバイスコントローラ141−1のDMAC142−1は、ステップS132の処理により書き込まれたDMAコマンドを受け付ける。DMAC142−1は、DMAコマンドがDMACマネジメントコントローラ151により書き込まれることで、起動する。
ステップS162において、DMAC142−1は、書き込まれたDMAコマンドを基に、入出力デバイスコントローラ141−1を制御することで、入出力デバイスコントローラ141−1に制御されるデバイスを制御し、デバイスに所定のデータをDMA転送させる。例えば、入出力デバイスコントローラ141−1が制御する図示せぬデバイスから、メインメモリ112にデータがDMA転送される。
例えば、DMAC142−1は、DMAコマンドに記述されている、DMA転送によるデータの転送元を示す転送元情報、DMA転送によるデータの転送先を示す転送先情報、およびDMA転送されるデータのデータ量を示すデータ量情報を基に、入出力デバイスコントローラ141−1に制御されるデバイスにデータをDMA転送させる。より具体的には、DMAコマンドの転送元情報が、入出力デバイスコントローラ141−1に制御されるデバイスにおける記録空間のアドレスを示し、DMAコマンドの転送先情報が、メインメモリ112の記憶空間のアドレスを示す場合、DMAC142−1は、入出力デバイスコントローラ141−1に制御されるデバイスに、そのデバイスからメインメモリ112に(デバイスのアドレスで特定されるデータをメインメモリ112のアドレスで特定される領域に)DMA転送させる。
ステップS163において、DMAC142−1は、ステップS162の処理によりデータのDMA転送が完了したか否かを判定する。すなわち、DMAC142−1は、DMAコマンドのデータ量情報に記述されたデータ量のデータがステップS162の処理によりDMA転送されたか否かを判定する。
ステップS163において、DMA転送が完了していないと判定された場合、手続きは、ステップS162に戻り、データの転送が繰り返される。例えば、ステップS162における、デバイスからメインメモリ112へのデータのDMA転送が完了するまで繰り返し実行される。
ステップS163において、DMA転送が完了したと判定された場合、ステップS164に進み、DMAC142−1は、図5の破線の矢印で示されるように、DMACマネジメントコントローラ151に割り込み処理を要求する割り込み信号を、DMACマネジメントコントローラ151に出力する。
入出力デバイスコントローラ141の割り込み信号線は、上述したように、DMACマネジメントコントローラ151に接続されているため、入出力デバイスコントローラ141からのDMA転送が完了したことを示す割り込み信号(割り込み通知)は、メインプロセッサ111には通知されず、DMACマネジメントコントローラ151に通知される。
ステップS164の処理の後、手続きは、ステップS161に戻り、入出力デバイスコントローラ141−1のDMAC142−1は、DMACマネジメントコントローラ151からのDMAコマンドの書き込みを待機している状態に戻り、上述した処理が繰り返される。
ステップS133において、DMACマネジメントコントローラ151は、ステップS164の処理により出力された割り込み信号(割り込み)(割り込み処理の要求)を受け付ける。
ステップS134において、DMACマネジメントコントローラ151は、ステップS133の処理により受け付けた割り込みに対応する、割り込み処理を行う。例えば、DMACマネジメントコントローラ151は、DMAC142−1から割り込み処理の要求を受けたことを記憶する。
図8のステップS135において、DMACマネジメントコントローラ151は、ステップS131の処理で受け付けた(登録された)DMAコマンドリスト152を基に、入出力デバイスドライバコントローラ141−2のDMAC142−2に、図9で示される入出力ドライバコントローラ141−2のDMAコマンド“DID,SRS ADR,DEST ADR,SIZE”を書き込む。
例えば、ステップS135において、DMACマネジメントコントローラ151は、内部に記憶されているDMAコマンドリスト152の先頭から2番目のDMAコマンドを読み出す。読み出したDMAコマンドのデバイス特定情報が入出力デバイスコントローラ141−2によって制御されるデバイスを特定するものである場合、DMACマネジメントコントローラ151は、入出力デバイスコントローラ141−2のDMAC142−2に読み出したDMAコマンドを書き込む。
ステップS181において、DMACマネジメントコントローラ151からのDMAコマンドの書き込みを待機している状態にある、入出力デバイスコントローラ141−2のDMAC142−2は、ステップS135の処理により書き込まれたDMAコマンドを受け付ける。DMAC142−2は、DMAコマンドがDMACマネジメントコントローラ151により書き込まれることで、起動する。
ステップS182において、DMAC142−2は、書き込まれたDMAコマンドを基に、入出力デバイスコントローラ141−2を制御することで、入出力デバイスコントローラ141−2に制御されるデバイスを制御し、デバイスに所定のデータをDMA転送させる。例えば、入出力デバイスコントローラ141−2が制御する図示せぬデバイスから、メインメモリ112にデータがDMA転送される。
例えば、DMAC142−2は、DMAコマンドに記述されている、DMA転送によるデータの転送元を示す転送元情報、DMA転送によるデータの転送先を示す転送先情報、およびDMA転送されるデータのデータ量を示すデータ量情報を基に、入出力デバイスコントローラ141−2に制御されるデバイスにデータをDMA転送させる。より具体的には、DMAコマンドの転送元情報が、入出力デバイスコントローラ141−2に制御されるデバイスにおける記録空間のアドレスを示し、DMAコマンドの転送先情報が、メインメモリ112の記憶空間のアドレスを示す場合、DMAC142−2は、入出力デバイスコントローラ141−2に制御されるデバイスに、そのデバイスからメインメモリ112に(デバイスのアドレスで特定されるデータをメインメモリ112のアドレスで特定される領域に)DMA転送させる。
なお、例えば、DMAコマンドの転送元情報が、メインメモリ112の記憶空間のアドレスを示し、DMAコマンドの転送先情報が、入出力デバイスコントローラ141−2に制御されるデバイスにおける記録空間のアドレスを示す場合、DMAC142−2は、入出力デバイスコントローラ141−2に制御されるデバイスに、メインメモリ112からそのデバイスに(メインメモリ112のアドレスで特定される領域に記憶されているデータをデバイスのアドレスで特定される領域に)DMA転送させる。
ステップS183において、DMAC142−2は、ステップS182の処理によりデータのDMA転送が完了したか否かを判定する。すなわち、DMAC142−2は、DMAコマンドのデータ量情報に記述されたデータ量のデータがステップS182の処理によりDMA転送されたか否かを判定する。
ステップS183において、DMA転送が完了していないと判定された場合、手続きは、ステップS182に戻り、データの転送が繰り返される。例えば、ステップS182における、デバイスからメインメモリ112へのデータのDMA転送が完了するまで繰り返し実行される。
ステップS183において、DMA転送が完了したと判定された場合、ステップS184に進み、DMAC142−2は、図5の破線の矢印で示されるように、DMACマネジメントコントローラ151に割り込み処理を要求する割り込み信号を、DMACマネジメントコントローラ151に出力する。
ステップS184の処理の後、手続きは、ステップS181に戻り、入出力デバイスコントローラ141−2のDMAC142−2は、DMACマネジメントコントローラ151からのDMAコマンドの書き込みを待機している状態に戻り、上述した処理が繰り返される。
ステップS136において、DMACマネジメントコントローラ151は、ステップS184の処理により出力された割り込み(割り込み信号)(割り込み処理の要求)を受け付ける。
ステップS137において、DMACマネジメントコントローラ151は、ステップS136の処理により受け付けた割り込みに応じた、割り込み処理を行う。例えば、DMACマネジメントコントローラ151は、DMAC142−2から割り込み処理の要求を受けたことを記憶する。
ステップS138において、DMACマネジメントコントローラ151は、メインプロセッサ111により登録(設定)されたDMAコマンドリスト152(におけるDMAコマンド)で指示された処理が完了したことを示す割り込み信号をメインプロセッサ111に出力する。
例えば、ステップS138において、DMACマネジメントコントローラ151は、内部に記憶されているDMAコマンドリスト152の先頭から3番目のDMAコマンドを読み出す。DMAコマンドが“notify”である場合、DMACマネジメントコントローラ151は、メインプロセッサ111に、割り込み処理の要求として、DMAコマンドリスト152により指示されたDMA転送の処理が完了したことを通知する(割り込み信号を出力する)。
ここで、上述したように、バス121およびバス131を介して、DMACマネジメントコントローラ151からの割り込みを通知する割り込み信号が、メインプロセッサ111に接続されているので、DMACマネジメントコントローラ151は、メインプロセッサ111に割り込みの発生を通知することができる(割り込みの処理を要求することができる)。
図7のステップS103において、OS181を実行するメインプロセッサ111は、メインタスクの処理を行う。すなわち、上述したDMAマネジメントコントローラ151によるステップS131乃至ステップS138の処理、入出力デバイスコントローラ141−1のDMAC142−1によるステップS161乃至ステップS164の処理、および入出力デバイスコントローラ141−2のDMAC142−2によるステップS181乃至ステップS184の処理が実行される一方で、メインタスクの処理が実行される。
ステップS104において、OS181、デバイスドライバ182、およびDMACマネジメントコントローラドライバ183を実行するメインプロセッサ111は、ステップS138の処理により出力された割り込み(割り込み信号)を受け付ける。
以上のように、入出力デバイスコントローラ141からの割り込み信号は直接メインプロセッサ111に通知されず、DMACマネジメントコントローラ151を介して行われることになる。
メインプロセッサ111は、複数の入出力デバイスコントローラ141のDMAC142に対する一連の指示を、バス121およびバス132を介し、DMACマネジメントコントローラ151に対して、DMAコマンドリスト152を登録することで、DMACマネジメントコントローラ151の起動が行われる。従って、メインプロセッサ111にとっては、入出力デバイスコントローラ141へのDMA設定、起動と同じ手順を用いて、DMACマネジメントコントローラ151に対してDMAコマンドリスト152の登録(設定)および起動を行うことができる。
また、メインプロセッサ111は、DMACマネジメントコントローラ151に対してDMAコマンドリスト152を設定した以降は、メインタスクの処理を実行し続けることができる。
このとき、DMACマネジメントコントローラ151は、DMAコマンドリスト152を基に、個々の入出力デバイスコントローラ141のDMAC142を設定および起動させることになるため、入出力デバイスコントローラ141にとっては、あたかもメインプロセッサ111からDMAC142への設定および起動を行われているかのように、DMACマネジメントコントローラ151からDMAC142への設定および起動が行われることになる。すなわち、既存の入出力デバイスコントローラ141のDMAC142を有している機能はそのまま使用されることが可能である。例えば、入出力デバイスコントローラ141が対象とする入出力装置用途に特化した固有機能を有していた場合、その固有機能の実行を制限することにはならない。
既存の技術(例えばPCIバスの仕様)を基に、入出力デバイスコントローラ141のDMAC142はメインメモリ112との間で設定されたDMA転送を行い、DMA転送が終了した時点において、DMA転送が完了したことを示す割り込み信号(割り込み通知)がアサートされる。
なお、以上の説明においては、DMACマネジメントコントローラ151によって、DMAコマンドリスト152を基に、DMAC142−1およびDMAC142−2における、設定および起動が行われるように説明したが、DMAC142に対するDMAコマンドの数は、特に限定されず、DMACマネジメントコントローラ151は、DMAコマンドリスト152に含まれている全て(複数)のDMAコマンドが終了するまで、ステップS161乃至ステップS164またはステップS181乃至ステップS184の処理と同様の処理が繰り返し実行される。
ステップS105において、OS181を実行するメインプロセッサ111は、ステップS104の処理により、DMACマネジメントコントローラ151からの割り込み信号を受け付けたので、処理中のメインタスクのデータ(プログラムカウンタやスタックポインタなどの記憶されている内容)を退避させる。例えば、メインメモリ112の所定の領域または図示せぬ外部ストレージに、処理中のメインタスクのデータを退避(記憶(記録))させる。
ステップS106において、OS181を実行するメインプロセッサ111は、ステップS104の処理により受け付けた割り込みに対応する、割り込み処理を行う。すなわち、メインプロセッサ111は、図7のステップS101の処理により生成したDMAコマンドリスト152に応じた割り込み処理を実行する。
なお、実際には、DMACマネジメントコントローラ151からDMAコマンドリスト152のDMAコマンドにより指示された処理が完了したことを示す割り込み信号(割り込みの通知)を受け付けたメインプロセッサ111は、現在処理中のメインタスクを一端停止し、停止時の状況情報をメモリメモリ112(または図示せぬ外部ストレージ)に退避、記憶させ、割込み処理ルーチンを起動し、DMACマネジメントコントローラ151から割り込み信号に対応する割込み処理を行う。
一般的には割込み要因が確認され、DMACマネジメントコントローラ151からのDMAコマンドリスト152により指示された処理が完了したことを示す割り込み(割り込み信号)であることが認識されると、次のDMAコマンドリスト152がDMACマネジメントコントローラ151に対して設定される。
ステップS106の割り込み処理が終了すると、ステップS107において、OS181を実行するメインプロセッサ111は、ステップS105の処理において退避させたデータを読み出す。例えば、メインメモリ112に、処理中のデータを退避(記憶)させていた場合、メインプロセッサ111は、メインメモリ112より、退避させていたデータをメインメモリ112のプログラムを実行するための領域に読み出す。
ステップS108において、メインプロセッサ111は、メインタスクの処理を行い、処理は終了する。
このように、メインプロセッサ111は、入出力デバイスコントローラ141からのデータの転送が完了する毎に、割込み処理を行う必要がなくなる。したがって、例えば、PC100がAV機器である場合、複数の入出力デバイスコントローラ141のそれぞれが扱う、AVストリームデータが連続的にDMA転送される毎に、割り込み処理を行うことがなくなり、割り込み処理による、処理中のメインタスクのデータをメインメモリ112や図示せぬ外部ストレージに退避させることにより、発生するオーバーヘッドを低減することができる。
DMACマネジメントコントローラ151のハードウェアとしての実装方法は、メインプロセッサ111ではなく、一般的にサウスブリッジと呼ばれるコンパニオンチップ側に実装することも可能である。サウスブリッジに実装した場合、メインプロセッサ111はそのまま使用できる。
また、汎用のバス(例えば、PCIバス)に接続される複数の入出力デバイスコントローラ141のみに対して適用することも可能である。この場合、サウスブリッジの変更も必要とせず、DMACマネジメントコントローラ151単体で、または、バスブリッジや入出力デバイスコントローラ141に内蔵することも可能である。
ソフトウェアとしての実装方法として、図6で示されるように、既存の入出力デバイスコントローラ141用のデバイスドライバ182の下位にDMACマネジメントコントローラ151用のデバイスドライバ(DMACマネジメントコントローラドライバ183)を用いることを実装方法として説明したが、これにより、既存の入出力デバイスコントローラ141用のデバイスドライバ182の変更が必要な箇所は下位のDMACマネジメントコントローラ151用のデバイスドライバ(DMACマネジメントコントローラドライバ183)とのインタフェースに限定されるため、変更作業量は少なくて済む。
メインプロセッサ111は、一定期間毎にDMACマネジメントコントローラ151用のデバイスドライバに記録された複数の入出力デバイスコントローラ141のDMAC142への指示をまとめてDMAコマンドリスト152を生成し、DMACマネジメントコントローラ151に、DMAコマンドリスト152を設定する。例えば、メインプロセッサ111の割込み処理による処理能力低下を軽減するためには、DMACマネジメントコントローラ151からのDMAコマンドリスト152に含まれるDMAコマンドの完了による割込み処理において、それぞれの入出力デバイスコントローラ141用のデバイスドライバ182の処理をまとめて行うという実装方法も有効である。
以上のように、処理能力の高いメインプロセッサ111において、相対的に処理割合が高くなる入出力デバイスコントローラ141による割込み処理による切り替え時間を短縮することができる。
既存の入出力デバイスコントローラ(例えばPCIデバイス)141のDMAC142、および汎用のバス(例えばPCIバス)の、例えば、アービトレーション機構などの機構をそのまま使用することができる。また、例えば、各デバイスが固有の機能を有している場合、その固有の機能の実行を制限しない。
また、メインプロセッサやサウスブリッジなどの既存のデバイス、およびそれに伴うソフトウェアの資産をそのまま使用できる実装の形態を実現することができる。
既存のデバイスにおいて、大部分を流用したままで、一部のバスに特化した実装の方法も可能である。この場合、例えば、入出力デバイスとのデータ転送が最も多いバスのみに対し、そのバスの仕様に準じたDMACマネジメントコントローラ151を実装すればよい。
次に、図10乃至図17を参照して、DMACマネジメントコントローラ151へのDMAコマンドリスト152の設定例、すなわち、DMAコマンドリスト152の処理の型として、“遂次処理”、“並列処理”、“パイプライン処理”、および“パイプライン処理と並列処理とを組み合わせた処理”の例を説明する。
なお、以下、図10、図12、図14、および図16で示されるステートマシン(動作X1、動作X2、動作X3、および動作X4)並びに図11、図13、図15、および図17のDMAコマンドの表記方法は、SpecCに準じる。
図10は、DMAコマンドリスト152による逐次処理を説明する図である。図10で示される動作X1においては、DMAコマンドA1、DMAコマンドA2、およびDMAコマンドA3により逐次処理が実行される。
図11は、DMAコマンドA1、DMAコマンドA2、およびDMAコマンドA3による、逐次処理におけるDMAコマンドリスト152の例を示す図である。
以下、図11を参照し、図10で示される動作X1を説明する。動作X1においては、DMAコマンドリスト152のDMAコマンドA1である“DID,SRS ADR,DEST ADR,SIZE”を基に、所定のデバイスのDMAC142の設定および起動が行われ、DMAコマンドA1に指示されるDMA転送の処理が実行される。そのデバイスによる、データのDMA転送の完了の通知(そのデバイスからの割り込み信号)を待ち、DMAコマンドA1に指示されるDMA転送の処理が完了すると、次に、DMAコマンドA2である“DID,SRS ADR,DEST ADR,SIZE”を基に、別のデバイスのDMAC142の設定および起動を行い、DMAコマンドA2に指示されるDMA転送の処理が実行される。
さらに、そのDMA転送の完了を待ち、DMAコマンドA2に指示されるDMA転送の処理が完了すると、さらに、DMAコマンドA3である“DID,SRS ADR,DEST ADR,SIZE”を基に、さらに別のデバイスのDMAC142の設定および起動を行い、DMAコマンドA3に指示されるDMA転送の処理が実行される。
その後、DMAコマンドA3によるDMA転送の完了の通知に受けて、DMACマネジメントコントローラ151はメインプロセッサ111にDMAコマンドリスト152に含まれるDMAコマンドの完了の通知(notify)を送信し、図11で示されるDMAコマンドリスト152の処理を完了する。
このように、逐次処理においては、DMA転送が順に実行される。すなわち、逐次処理においては、その前に実行されたDMA転送の完了を待って、次のDMA転送が実行される。
図12は、DMAコマンドリスト152による並列処理を説明する図である。図12で示される動作X2においては、DMAコマンドA11、DMAコマンドB11、およびDMAコマンドC11により並列処理が実行される。すなわち、DMAコマンドA11、DMAコマンドB11、およびDMAコマンドC11のコマンドが同時に実行される。
図13は、DMAコマンドA11、DMAコマンドB11、およびDMAコマンドC11による、並列処理におけるDMAコマンドリスト152の例を示す図である。なお、図13で示される“par”は、並列処理を示している。
以下、図13を参照し、図12で示される動作X2を説明する。動作X2においては、DMAコマンドA11である“DID,SRS ADR,DEST ADR,SIZE”、DMAコマンドB11である“DID,SRS ADR,DEST ADR,SIZE”、およびDMAコマンドC11である“DID,SRS ADR,DEST ADR,SIZE”により並列処理が実行される。すなわち、デバイスのDMAC142によるDMA転送の実行が並列に、かつ、それぞれが非同期で実行される。
なお、図12で示される例においては、メインプロセッサ111に対する、DMAコマンドリスト152に含まれるDMAコマンドの完了の通知(notify)は行われない。
図14は、DMAコマンドリスト152によるパイプライン処理を説明する図である。図14で示される動作X3においては、DMAコマンドA21、DMAコマンドB21、およびDMAコマンドC21によりパイプライン処理が実行される。それぞれのDMAコマンドの実行はオーバーラップされ、並列に実行される。
図15は、DMAコマンドA21、DMAコマンドB21、およびDMAコマンドC21による、パイプライン処理におけるDMAコマンドリスト152の例を示す図である。なお、図15で示される“pipe”は、パイプライン処理を示している。
以下、図15を参照し、図14で示される動作X3を説明する。動作X3においては、最初に、DMAコマンドA21である“DID,SRS ADR,DEST ADR,SIZE”を基に、所定のデバイスのDMAC142の設定および起動が行われる。そのデバイスからのDMA転送の完了の通知により、DMAコマンドA21およびDMAコマンドB21である“DID,SRS ADR,DEST ADR,SIZE”を基に、DMAC142の設定および起動が実行される。このとき、DMAコマンドA21は、繰り返し実行される。
DMAコマンドB21のDMA転送の完了の通知により、この時点で、DMAコマンドA21による、DMA転送の完了が通知されている場合、DMAコマンドB21およびDMAコマンドC21である“DID,SRS ADR,DEST ADR,SIZE”を基に、複数のデバイスのDMAC142の設定および起動が実行される。このとき、DMAコマンドA21によるDMA転送の完了が通知されていない場合、DMAコマンドC21を基に、DMAC142の設定および起動が行われ、DMAコマンドA21によるDMA転送の完了の通知を待って、DMAコマンドB21を基に、DMAC142の設定および起動が実行される。
DMAコマンドB21を基に、DMAC142の設定および起動が実行されるには、DMAコマンドA21によるDMA転送の完了およびDMAコマンドB21によるDMA転送の完了の両方が通知されている必要がある。
なお、動作X3におけるパイプライン処理の3段目のDMAコマンドC21のDMA転送の完了の通知により、DMACマネジメントコントローラ151は、メインプロセッサ111にDMAコマンドリスト152の完了の通知(notify)を行う。パイプライン処理においては、エンドレスループの動作となるため、図15で示されるDMAコマンドリスト152の処理が継続される(繰り返し実行される)。
図16は、DMAコマンドリスト152によるパイプライン処理と並列処理とを組み合わせた処理を説明する図である。図16で示される動作X4においては、DMAコマンドA31、DMAコマンドB31-1およびDMAコマンドB31-2、並びにDMAコマンドC31によりパイプライン処理が実行され、動作X4の2段目でDMAコマンドB31-1およびDMAコマンドB31-2により並列処理が実行される。
図17は、DMAコマンドA31、DMAコマンドB31-1およびDMAコマンドB31-2、DMAコマンドC31による、パイプライン処理と並列処理とを組み合わせた処理におけるDMAコマンドリスト152の例を示す図である。なお、図17で示される“pipe”は、パイプライン処理を示し、“par”は、並列処理を示している。
以下、図17を参照し、図16で示される動作X4を説明する。動作X4においては、最初に、DMAコマンドA31である“DID,SRS ADR,DEST ADR,SIZE”を基に、所定のデバイスのDMAC142の設定および起動が行われる。そのデバイスからのDMA転送の完了の通知により、DMAコマンドA31、DMAコマンドB31-1である“DID,SRS ADR,DEST ADR,SIZE”およびDMAコマンドB31-2である“DID,SRS ADR,DEST ADR,SIZE”を基に、DMAC142の設定および起動が実行される。このとき、DMAコマンドA31は、繰り返し実行される。
DMAコマンドB31-1およびDMAコマンドB31-2の両方のDMA転送の完了の通知により、この時点で、DMAコマンドA31による、DMA転送の完了が通知されている場合、DMAコマンドB31-1およびDMAコマンドB31-2、並びにDMAコマンドC31である“DID,SRS ADR,DEST ADR,SIZE”を基に、複数のデバイスのDMAC142の設定および起動が実行される。このとき、DMAコマンドA31によるDMA転送の完了が通知されていない場合、DMAコマンドC31を基に、DMAC142の設定および起動が行われ、DMAコマンドA31によるDMA転送の完了の通知を待って、DMAコマンドB31-1およびDMAコマンドB31-2を基に、DMAC142の設定および起動が実行される。
DMAコマンドB31-1およびDMAコマンドB31-2を基に、DMAC142の設定および起動が実行されるには、DMAコマンドA31によるDMA転送の完了、DMAコマンドB31-1およびDMAコマンドB31-2によるDMA転送の完了の両方が通知されている必要がある。
なお、動作X4におけるパイプライン処理の3段目のDMAコマンドC21のDMA転送の完了の通知により、DMACマネジメントコントローラ151は、メインプロセッサ111にDMAコマンドリスト152の完了の通知(notify)を行う。パイプライン処理においては、エンドレスループの動作となるため、図17で示されるDMAコマンドリスト152の処理が継続される(繰り返し実行される)。
本発明が適用される情報処理装置の実施の形態は、図5に示されるPC100に限定されず、記録媒体の記録および読み出しの制御が可能な情報処理装置であれば構わない。具体的には、例えば、PDA(Personal Digital Assistants)、携帯電話機、または、デジタル電化製品(例えば、ハードディスク録画装置)等様々な実施の形態が可能である。
このように、データのDMA転送を行うことができるようにした場合、大量のデータをメモリなどに高速で転送することができる。DMAコントローラデータ入出力制御手段に設けられ、デバイスによるデータのDMA(Direct Memory Access)転送を制御し、コントローラ制御手段が、プロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御するようにした場合には、割り込み処理によるオーバーヘッドを低減することができる。
この記録媒体は、図5で示されるリムーバブルメディア154のように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disk Read-Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)(商標)を含む)、若しくは半導体メモリなどよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM(Read Only Memory)もしくはハードディスクなどで構成される。
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくても、並列的あるいは個別に実行される処理を含むものである。
100 パーソナルコンピュータ, 111 メインプロセッサ, 112 メインメモリ, 141−1および141−2 入出力デバイスコントローラ, 142−1および142−2 DMAC, 151 DMACマネジメントコントローラ, 152 DMAコマンドリスト, 154 リムーバブルメディア, 183 DMACマネジメントコントローラドライバ
Claims (7)
- データの入力または出力を制御するデータ入出力制御手段が設けられているデバイスであって、前記データを入力するかまたは出力するデバイスを備える情報処理装置において、
前記データ入出力制御手段に設けられ、前記デバイスによる前記データのDMA(Direct Memory Access)転送を制御するDMAコントローラと、
プロセッサから取得した前記デバイスに対するDMA転送の命令を基に、前記DMAコントローラに前記デバイスによる前記データのDMA転送を制御させるように前記DMAコントローラを制御するコントローラ制御手段と
を含むことを特徴とする情報処理装置。 - 前記コントローラ制御手段は、複数の前記デバイスに対する、複数の前記命令を基に、複数の前記デバイスのそれぞれの前記データ入出力制御手段にそれぞれ設けられている、前記DMAコントローラを制御する
ことを特徴とする請求項1に記載の情報処理装置。 - 前記コントローラ制御手段は、前記DMAコントローラからの割り込み処理の要求を受け付けて、その割り込み処理を実行する
ことを特徴とする請求項1に記載の情報処理装置。 - 前記コントローラ制御手段は、前記プロセッサから取得した前記デバイスに対するDMA転送の命令に応じた前記データのDMA転送が完了した場合、前記プロセッサに割り込み処理を要求する
ことを特徴とする請求項3に記載の情報処理装置。 - データの入力または出力を制御し、DMA(Direct Memory Access)転送を制御するDMAコントローラを含むデータ入出力制御手段が設けられているデバイスであって、前記データを入力するかまたは出力するデバイスと、メインプロセッサとは別に前記デバイスを制御する制御手段とを備える情報処理装置の情報処理方法において、
前記メインプロセッサから取得した前記デバイスに対するDMA転送の命令を基に、前記DMAコントローラに前記デバイスによる前記データのDMA転送を制御させるように前記DMAコントローラを制御する、前記制御手段により実行される制御ステップを含む
ことを特徴とする情報処理方法。 - データの入力または出力を制御し、DMA(Direct Memory Access)転送を制御するDMAコントローラを含むデータ入出力制御手段が設けられているデバイスであって、前記データを入力するかまたは出力するデバイスと、メインプロセッサとは別に前記デバイスを制御する制御手段とを備える情報処理装置の情報処理用のプログラムにおいて、
前記メインプロセッサから取得した前記デバイスに対するDMA転送の命令を基に、前記DMAコントローラに前記デバイスによる前記データのDMA転送を制御させるように前記DMAコントローラを制御する、前記制御手段により実行される制御ステップを含む
ことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。 - データの入力または出力を制御し、DMA(Direct Memory Access)転送を制御するDMAコントローラを含むデータ入出力制御手段が設けられているデバイスであって、前記データを入力するかまたは出力するデバイスと、メインプロセッサとを備える情報処理装置に設けられている、前記メインプロセッサとは別に前記デバイスを制御するコンピュータに、情報処理を行わせるプログラムにおいて、
前記メインプロセッサから取得した前記デバイスに対するDMA転送の命令を基に、前記DMAコントローラに前記デバイスによる前記データのDMA転送を制御させるように前記DMAコントローラを制御する制御ステップを含む
ことを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004177121A JP2006003981A (ja) | 2004-06-15 | 2004-06-15 | 情報処理装置および方法、記録媒体、並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004177121A JP2006003981A (ja) | 2004-06-15 | 2004-06-15 | 情報処理装置および方法、記録媒体、並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006003981A true JP2006003981A (ja) | 2006-01-05 |
Family
ID=35772355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004177121A Withdrawn JP2006003981A (ja) | 2004-06-15 | 2004-06-15 | 情報処理装置および方法、記録媒体、並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006003981A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007188357A (ja) * | 2006-01-13 | 2007-07-26 | Fujitsu Ltd | データ転送装置 |
JP2007299116A (ja) * | 2006-04-28 | 2007-11-15 | Fuji Xerox Co Ltd | 画像処理装置 |
JP2014089758A (ja) * | 2010-09-21 | 2014-05-15 | Mitsubishi Electric Corp | データ読出装置 |
CN104717433A (zh) * | 2015-03-27 | 2015-06-17 | 电子科技大学 | 一种用于视频流信号处理系统的分布式传输装置 |
-
2004
- 2004-06-15 JP JP2004177121A patent/JP2006003981A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007188357A (ja) * | 2006-01-13 | 2007-07-26 | Fujitsu Ltd | データ転送装置 |
JP2007299116A (ja) * | 2006-04-28 | 2007-11-15 | Fuji Xerox Co Ltd | 画像処理装置 |
JP4687553B2 (ja) * | 2006-04-28 | 2011-05-25 | 富士ゼロックス株式会社 | 画像処理装置 |
JP2014089758A (ja) * | 2010-09-21 | 2014-05-15 | Mitsubishi Electric Corp | データ読出装置 |
CN104717433A (zh) * | 2015-03-27 | 2015-06-17 | 电子科技大学 | 一种用于视频流信号处理系统的分布式传输装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1889165B1 (en) | Method for delivering interrupts to user mode drivers | |
JP6486485B2 (ja) | 車載制御装置 | |
US6928502B2 (en) | Method and apparatus for processing interrupts at dynamically selectable prioritization levels | |
CN114328350B (zh) | 一种基于axi总线的通讯方法、装置以及介质 | |
US20050172287A1 (en) | Bus management techniques | |
JP2006003981A (ja) | 情報処理装置および方法、記録媒体、並びにプログラム | |
JP2004078683A (ja) | コンピュータシステムおよび共有メモリ制御方法 | |
JP2004537809A (ja) | システムオンチップ設計用の効率的な割り込みシステム | |
JP2005258509A (ja) | ストレージ装置 | |
JP2007141155A (ja) | マルチコアプロセッサにおけるマルチコア制御方法 | |
US20040128417A1 (en) | CPU contained LSI | |
WO2019188175A1 (ja) | デッドロック回避方法、デッドロック回避装置 | |
JP2008158699A (ja) | プロセッサ | |
JP5644197B2 (ja) | コンピュータシステムおよび割込要求処理方法 | |
US7272680B2 (en) | Method of transferring data between computer peripherals | |
JPH023217B2 (ja) | ||
JP2009258936A (ja) | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム | |
JPH09218859A (ja) | マルチプロセッサ制御システム | |
JP2003186666A (ja) | マイクロコンピュータおよびdma制御回路 | |
JPS61136159A (ja) | シングルチツプマイクロコンピユ−タ | |
JP2006023808A (ja) | データ転送装置及びデータ転送方法 | |
JP2010039975A (ja) | Usbホストシステム、データ転送方法および映像音声処理システム | |
JP2004021713A (ja) | 半導体記憶装置 | |
JPS6143369A (ja) | マルチプロセツサシステム | |
JP2018120484A (ja) | Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム |
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: 20070904 |