JP6395203B2 - データ制御システム、データ制御方法およびデータ制御用プログラム - Google Patents

データ制御システム、データ制御方法およびデータ制御用プログラム Download PDF

Info

Publication number
JP6395203B2
JP6395203B2 JP2013502184A JP2013502184A JP6395203B2 JP 6395203 B2 JP6395203 B2 JP 6395203B2 JP 2013502184 A JP2013502184 A JP 2013502184A JP 2013502184 A JP2013502184 A JP 2013502184A JP 6395203 B2 JP6395203 B2 JP 6395203B2
Authority
JP
Japan
Prior art keywords
data
operation unit
storage
main memory
read
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.)
Expired - Fee Related
Application number
JP2013502184A
Other languages
English (en)
Other versions
JPWO2012117701A1 (ja
Inventor
鈴木 順
順 鈴木
高橋 雅彦
雅彦 高橋
飛鷹 洋一
洋一 飛鷹
輝幸 馬場
輝幸 馬場
隆士 吉川
隆士 吉川
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2012117701A1 publication Critical patent/JPWO2012117701A1/ja
Application granted granted Critical
Publication of JP6395203B2 publication Critical patent/JP6395203B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Description

本発明は、2つのI/O(Input/Output)デバイス間で高速にデータ移動させる制御を行うデータ制御システム、データ制御方法およびデータ制御用プログラムに関する。
特許文献1には、主記憶を介さずにDVD(Digital Versatile Disc)−ROM(Read Only Memory)インタフェースからDVDデコーダへ直接的に動画データを転送できるコンピュータシステムが記載されている。特許文献1に記載されたコンピュータシステムでは、DVDデコーダにI/Oリードトランザクションを開始できるマスタトランザクション制御部を設け、さらに、DVD制御ドライバによってDVDデコーダとDVDインタフェースの両方を制御する。このような構成により、主メモリを経由せず、DVDインタフェースからDVDデコーダに動画データがダイレクトに転送される。
特許文献2には、複数のデバイスに対する複数の入出力コマンドを1回の入出力命令で実行できる計算機システムが記載されている。特許文献2に記載された計算機システムでは、入出力アダプタがCPUからの入出力コマンドを受け取ることで入出力動作を開始する。入出力アダプタは、データ送信の場合に、記憶ユニットから指定されたデータを該当する入出力制御装置に転送し、データ受信の場合に、その入出力制御装置から記憶ユニットの指定エリアにデータを転送する。ここで、入出力制御装置はデータを格納するためのバッファを備えている。
なお、特許文献3には、業務を停止することなくファームウェア置換を行うストレージサブシステムが記載されている。特許文献3に記載されたシステムでは、CPUがメモリ領域にデータキャッシュ領域を確保し、ディスク制御部を制御することにより、論理ディスクからデータを読み出す。そして、CPUは、読み出したデータをメモリ領域のデータキャッシュ領域に格納する。
特開平10−143437号公報 特開平8−44652号公報 特開2009−230484号公報
特許文献1に記載されたコンピュータシステムを利用した一般的なシステムの例を説明する。図15は、特許文献1に記載されたコンピュータシステムを利用した一般的なデータ転送システムの例を示す説明図である。図15に例示するシステムは、CPU1と、メインメモリ3と、DVDデコーダ406と、DVDインタフェース407と、それぞれのデバイスを接続するブリッジ2とを備えている。
DVDデコーダ406と、DVDインタフェース407とは、PCI(Peripheral Component Interconnect )エクスプレスバス501およびPCIエクスプレスバス502により、それぞれブリッジ2に接続されている。
メインメモリ3は、プログラム305を記憶している。プログラム305は、CPU1に読み込まれ、アプリケーション動作部111、オペレーティングシステム動作部112およびDVD制御ドライバ動作部113として動作する。また、アプリケーション111動作部は、動画データの再生を行うプログラムに従って動作する。DVD制御ドライバ動作部113は、DVDデコーダ406と、DVDインタフェース407とを制御する。このような構成を有する一般的なシステムは、次のように動作する。
すなわち、アプリケーション動作部111が動画データの再生要求を行うと、DVD制御ドライバ動作部113は、DVDインタフェース407にデータ転送の準備を指示する。続いて、DVD制御ドライバ動作部113は、DVDインタフェース407から動画データをリードするためのI/OトランザクションをDVDデコーダ406に開始する指示を行う。これにより、動画データがDVDインタフェース407からDVDデコーダ406に直接転送される。
この一般的なシステムでは、DVDインタフェース407からDVDデコーダ406にメインメモリ3を介さず直接データ転送が行われることにより、バストラフィックを削減できる。また、この一般的なシステムでは、ソフトウェアを仲介するデータ転送が行われないため、高速なデータ転送を実現している。
しかし、特許文献1に記載されたシステムの場合、直接データ転送を行う動作に対応していない2つのI/Oデバイスの間では、高速なデータ転送が実現できないという問題がある。すなわち、特許文献1に記載されたシステムのように、PCIエクスプレスバスに接続される2つのI/Oデバイスが直接データ転送を行う場合、I/Oデバイスがその転送処理に対応しなければならないという問題がある。通常、I/Oデバイスは、CPUで動作するデバイスドライバに制御され、メインメモリとの間でのみデータ転送を行うため、2つのI/Oデバイスの間で直接データ転送を行う動作に対応していないからである。
また、特許文献2に記載された計算機システムでは、あるI/Oデバイスから別のI/Oデバイスにデータを移動させる場合、I/Oデバイスの処理を代替させる入出力アダプタのような別デバイスをシステムに導入する必要がある。
そのため、特許文献2に記載された計算機システムのように、直接データ転送を行う動作に対応していないI/Oデバイス間の転送処理においても、オーバヘッドを削減し高速にデータ転送を行えることが望ましい。
そこで、本発明は、直接データ転送を行う動作に対応していない2つのI/Oデバイスの間で高速にデータ転送を行うことができるデータ制御システム、データ制御方法およびデータ制御用プログラムを提供することを目的とする。
本発明によるデータ制御システムは、第一のデバイスから第二のデバイスへのデータ転送制御をカーネルモードで行うCPUと、第一のデバイスから第二のデバイスへ転送されるデータを記憶するメインメモリとを備え、メインメモリが、転送データを記憶する複数のバッファを含み、CPUが、第一のデバイスを制御する第一デバイス制御手段と、第二のデバイスを制御する第二デバイス制御手段と、第一のデバイスから読み取ったデータをメインメモリに記憶させる指示である読み取り指示を第一デバイス制御手段に対して行い、メインメモリに記憶されたデータを第二のデバイスに書き込む指示である書き込み指示を第二デバイス制御手段に対して行うデータ転送制御手段とを含み、データ転送制御手段が、メインメモリにDMAリストを作成し、バッファごとに第一デバイス制御手段に対する読み取り指示を並列に行い、バッファごとに第二デバイス制御手段に対する書き込み指示を並列に行い、第一デバイス制御手段は、DMAリストを用いたDMAによりメインメモリにデータを書き込ませる制御を第一のデバイスに対して行い、第二デバイス制御手段は、DMAリストを用いたDMAにより第一のデバイスによって書き込まれたデータを読ませる制御を前記第二のデバイスに対して行うことを特徴とする。
本発明によるデータ制御方法は、第一のデバイスから第二のデバイスへのデータ転送制御をカーネルモードで行うCPUが、転送データを記憶する複数のバッファを含み、第一のデバイスから第二のデバイスへ転送されるデータを記憶するメインメモリにDMAリストを作成し、CPUが、第一のデバイスから読み取ったデータをメインメモリにおけるバッファごとに記憶させる指示を、自CPUに備えた第一のデバイスを制御する第一デバイス制御手段に対して並列に行い、第一デバイス制御手段が、DMAリストを用いたDMAによりメインメモリにデータを書き込ませる制御を第一のデバイスに対して行い、CPUが、メインメモリにおけるバッファごとに記憶されたデータを第二のデバイスに書き込む指示を、自CPUに備えた第二のデバイスを制御する第二デバイス制御手段に対して並列に行い、第二デバイス制御手段が、DMAリストを用いたDMAにより第一のデバイスによって書き込まれたデータを読ませる制御を第二のデバイスに対して行うことを特徴とする。
本発明によるデータ制御用プログラムは、第一のデバイスから第二のデバイスへのデータ転送制御をカーネルモードで行うCPUおよび第一のデバイスから第二のデバイスへ転送されるデータを記憶するメインメモリを備えたコンピュータに適用されるデータ制御用プログラムであって、コンピュータに、第一のデバイスを制御する第一デバイス制御処理、第二のデバイスを制御する第二デバイス制御処理、および、第一のデバイスから読み取ったデータをメインメモリに記憶させる指示である読み取り指示を第一デバイス制御処理で実行させ、メインメモリに記憶されたデータを第二のデバイスに書き込む指示である書き込み指示を第二デバイス制御処理で実行させるデータ転送制御処理を実行させ、メインメモリは、転送データを記憶する複数のバッファを含み、コンピュータに、データ転送制御処理で、メインメモリにDMAリストを作成させ、バッファごとに第一デバイス制御処理における読み取り指示を並列に行わせ、バッファごとに第二デバイス制御処理における書き込み指示を並列に行わせ、第一デバイス制御処理で、DMAリストを用いたDMAによりメインメモリにデータを書き込ませる制御を第一のデバイスに対して行わせ、第二デバイス制御処理で、DMAリストを用いたDMAにより第一のデバイスによって書き込まれたデータを読ませる制御を第二のデバイスに対して行わせることを特徴とする。
本発明によれば、直接データ転送を行う動作に対応していない2つのI/Oデバイスの間で高速にデータ転送を行うことができる。
本発明の第1の実施形態におけるデータ制御システムの例を示すブロック図である。 I/Oデータ転送ドライバ動作部の例を示すブロック図である。 データメモリの例を示す説明図である。 第1の実施形態におけるデータ制御システムの動作例を示すフローチャートである。 第1の実施形態におけるデータ制御システムの他の動作例を示すフローチャートである。 第1の実施形態におけるデータ制御システムの他の動作例の一部を示すフローチャートである。 本発明の第2の実施形態におけるデータ制御システムの例を示すブロック図である。 I/Oデータ転送ドライバ動作部の例を示すブロック図である。 本発明の第3の実施形態におけるデータ制御システムの例を示すブロック図である。 ストレージコピードライバ動作部の例を示すブロック図である。 第3の実施形態におけるデータ制御システムの動作例を示すフローチャートである。 第3の実施形態におけるデータ制御システムの他の動作例を示すフローチャートである。 第3の実施形態におけるデータ制御システムの他の動作例の一部を示すフローチャートである。 本発明によるデータ制御システムの最小構成の例を示すブロック図である。 一般的なデータ転送システムの例を示す説明図である。
以下、本発明の実施形態を図面を参照して説明する。
実施形態1.
図1は、本発明の第1の実施形態におけるデータ制御システムの例を示すブロック図である。本実施形態におけるデータ制御システムは、CPU1と、メインメモリ3と、第1のI/OデバイスであるI/Oデバイス401と、第2のI/OデバイスであるI/Oデバイス402と、それぞれのI/Oデバイスを接続するブリッジ2とを含む。なお、本実施形態では、I/Oデバイス401からI/Oデバイス402へデータ転送が行われるものとする。
I/Oデバイス401およびI/Oデバイス402は、例えば、SCSI(Small Computer System Interface )やSATA(Serial Advanced Technology Attachment )に代表される規格に従うストレージデバイスや、ネットワークインタフェースなどであり、PCIエクスプレスに準拠するインタフェースを保持するI/Oデバイスである。I/Oデバイス401はPCIエクスプレスバス501を介して、また、I/Oデバイス402はPCIエクスプレスバス502を介して、それぞれブリッジ2に接続される。
メインメモリ3は、I/Oデータ転送メモリ301を含む。I/Oデータ転送メモリ301は、I/Oデバイス401とI/Oデバイス402との間のデータ転送のために使用される。
I/Oデータ転送メモリ301は、I/Oコマンドメモリ3011と、DMAリストメモリ3012と、データメモリ3013とを有する。I/Oコマンドメモリ3011は、I/Oデバイス401とI/Oデバイス402とに発行するI/Oコマンドを記憶する領域である。データメモリ3013は、I/Oデバイス401とI/Oデバイス402との間で転送するデータのバッファ領域である。DMAリストメモリ3012は、I/Oデバイス401およびI/Oデバイス402がデータメモリ3013に対し、DMA(Direct Memory Access)によってデータ通信を行うために、データメモリ3013におけるアドレスをリスト化した情報を記憶する領域である。
また、メインメモリ3は、プログラム302を記憶する。プログラム302は、CPU1に読み込まれ、後述するI/Oデータ転送アプリケーション動作部101と、オペレーティングシステム動作部102と、I/Oデータ転送ドライバ動作部103と、I/Oデバイス401を制御するI/Oデバイスドライバ動作部104と、I/Oデバイス402を制御するI/Oデバイスドライバ動作部105として動作する。
CPU1は、I/Oデータ転送アプリケーション動作部101と、オペレーティングシステム動作部102と、I/Oデータ転送ドライバ動作部103と、I/Oデバイスドライバ動作部104と、I/Oデバイスドライバ動作部105と、I/Oデバイステーブル記憶部114とを含む。
I/Oデバイステーブル記憶部114は、データ転送を行う対象であるI/Oデバイス401とI/Oデバイス402の情報を記憶する。具体的には、I/Oデバイステーブル記憶部114は、I/Oデバイス401およびI/Oデバイス402の名前を、オペレーティングシステム動作部102が保持するI/Oデバイス401およびI/Oデバイス2の管理情報が記憶された位置を示すアドレス(以下、管理情報アドレスと記す。)に対応づけて記憶する。なお、デバイスの管理情報には、例えば、デバイスの属性やアクセスモードなどが含まれる。
I/Oデータ転送アプリケーション動作部101は、I/Oデバイス401とI/Oデバイス402との間のデータ転送要求をI/Oデータ転送ドライバ動作部103に行う。データ転送要求は、例えば、ユーザや他の装置等により指示される。
オペレーティングシステム動作部102は、I/Oデータ転送ドライバ動作部103と、I/Oデバイスドライバ動作部104と、I/Oデバイスドライバ動作部105とを、ドライバソフトウェアとして動作させる。また、オペレーティングシステム動作部102は、デバイス名と管理情報アドレスとを対応づけた情報をI/Oデバイステーブル記憶部114に作成する。オペレーティングシステム動作部102は、例えば、I/Oデバイスが接続されたときに、その接続されたI/Oデバイスのデバイス名と、そのデバイスの管理情報を記憶したアドレスとを対応づけてI/Oデバイステーブル記憶部114に記憶させてもよい。
I/Oデータ転送ドライバ動作部103は、I/Oデバイス401からI/Oデバイス402へのデータ転送制御を行う。図2は、I/Oデータ転送ドライバ動作部103の例を示すブロック図である。本実施形態におけるI/Oデータ転送ドライバ動作部103は、転送制御プログラム動作部1031と、メモリ確保プログラム動作部1032と、メモリ解放プログラム動作部1033と、I/Oデータ処理プログラム動作部1034とを含む。
なお、本実施形態では、オペレーティングシステム動作部102とI/Oデータ転送ドライバ動作部103とが、それぞれ別に実装されている場合を例示している。この実装の一例は、I/Oデータ転送ドライバ動作部103をデバイスドライバとして実装する方式である。この実装により、オペレーティングシステム動作部102への機能追加に伴う変更を小規模に抑えることが可能になる。また、I/Oデータ転送ドライバ動作部103とオペレーティングシステム動作部102とが一体に実装されていてもよい。この場合、1つのソフトウェアとして管理することができるため、開発や管理が容易となる。
転送制御プログラム動作部1031は、I/Oデバイス401およびI/Oデバイス402にI/Oコマンドを発行することで、I/Oデバイス間のデータ転送を行う。転送制御プログラム動作部1031は、CPU1が転送制御用プログラムを読み込むことにより動作する。
メモリ確保プログラム動作部1032は、転送制御プログラム動作部1031から呼び出され、メインメモリ3におけるI/Oデータ転送メモリ301を確保する。メモリ確保プログラム動作部1032は、CPU1がメモリ確保用プログラムを読み込むことにより動作する。
メモリ解放プログラム動作部1033は、転送制御プログラム動作部1031から呼び出され、I/Oデータ転送メモリ301を解放する。メモリ解放プログラム動作部1033は、CPU1がメモリ解放用プログラムを読み込むことにより動作する。
I/Oデータ処理プログラム動作部1034は、転送制御プログラム動作部1031から呼び出され、I/Oデバイス401とI/Oデバイス402との間で転送されるデータに対して処理を行う。I/Oデータ処理プログラム動作部1034は、CPU1がI/Oデータ処理用プログラムを読み込むことにより動作する。
このように、I/Oデータ転送ドライバ動作部103は、転送制御用プログラム、メモリ確保用プログラム、メモリ解放用プログラムおよびI/Oデータ処理用プログラムを読み込み、これらのプログラムに従って動作する。その際、I/Oデータ転送ドライバ動作部103は、CPU1のカーネルモードで動作する。なお、転送制御用プログラム、メモリ確保用プログラム、メモリ解放用プログラムおよびI/Oデータ処理用プログラムを含むプログラムを、データ制御用プログラムと記すこともある。
以下、I/Oデータ転送ドライバ動作部103におけるそれぞれの動作部について詳しく説明する。転送制御プログラム動作部1031は、I/Oデータ転送アプリケーション動作部101からの要求を受け付け、I/Oデバイス401とI/Oデバイス402との間のデータ転送を行う。
具体的には、転送制御プログラム動作部1031は、メモリ確保プログラム動作部1032を呼出し、メインメモリ3にI/Oデータ転送メモリ301を確保する。また、転送制御プログラム動作部1031は、I/Oデバイステーブル記憶部114を参照し、I/Oデバイス401とI/Oデバイス402の名前から、これらのデバイスに対してオペレーティングシステム動作部102が保持する管理情報のアドレスを検索する。
さらに、転送制御プログラム動作部1031は、I/Oデバイス401に対するデータリードコマンドをI/Oコマンドメモリ3011に作成する。また、転送制御プログラム動作部1031は、I/Oデバイス401から読み取る(以下、リードする、と記す。)データの書き込み先であるデータメモリ3013のアドレスリストをDMAリストメモリ3012に作成する。そして、転送制御プログラム動作部1031は、それらのデータ(具体的には、データリードコマンドおよびDMAリスト)をI/Oデバイスドライバ動作部104に渡すことでI/Oリード要求を行う。なお、転送制御プログラム動作部1031は、オペレーティングシステム動作部102が保持する管理情報のアドレスを用いてデータリードコマンドを作成する。
このようにして、転送制御プログラム動作部1031は、I/Oデバイス401から読み取ったデータをデータメモリ3013に記憶させる指示をI/Oデバイスドライバ動作部104に対して行う。
また、転送制御プログラム動作部1031は、必要に応じ、I/Oデバイス401からリードされデータメモリ3013に記憶されたデータに対して、フォーマット変換や圧縮など、予め定められたデータ処理をI/Oデータ処理プログラム動作部1034に要求してもよい。なお、フォーマット変換や圧縮などは、予め定められたデータ処理の例示であり、転送制御プログラム動作部1031が要求するデータ処理は、フォーマット変換や圧縮以外の他のデータ処理であってもよい。
さらに、転送制御プログラム動作部1031は、I/Oデバイス402に対するデータライトコマンドをI/Oコマンドメモリ3011に作成する。また、転送制御プログラム動作部1031は、I/Oデバイス402に書き込む(以下、ライトする、と記す。)データの書き込み先であるデータメモリ3013のアドレスリストをDMAリストメモリ3012に作成する。そして、転送制御プログラム動作部1031は、それらのデータ(具体的には、データライトコマンドおよびDMAリスト)をI/Oデバイスドライバ動作部105に渡すことでI/Oライト要求を行う。なお、転送制御プログラム動作部1031は、オペレーティングシステム動作部102が保持する管理情報のアドレスを用いてデータライトコマンドを作成する。
このようにして、転送制御プログラム動作部1031は、データメモリ3013に記憶されたデータをI/Oデバイス402に書き込む指示をI/Oデバイスドライバ動作部105に対して行う。
以降、転送制御プログラム動作部1031は、I/Oデバイス401からのデータリード処理およびI/Oデバイス402へのデータライト処理の一連の処理を、I/Oデータ転送アプリケーション動作部101に要求された量のデータ転送が完了するまで繰り返す。なお、データリード処理とデータライト処理の間に、I/Oデータ処理プログラム動作部1034が、I/Oデバイス401からリードされたデータに対するデータ処理を行ってもよい。このように、データリード処理とデータライト処理の間(すなわち、データライトが行われる前)にフォーマット変換や圧縮などのデータ処理を行うことで、全体の処理時間を短くすることが可能になる。
また、転送制御プログラム動作部1031は、I/Oデバイス401に対するリード要求やI/Oデバイス402に対するライト要求を多重化して行ってもよい。図3は、データメモリ3013の例を示す説明図である。図3に示す例では、転送制御プログラム動作部1031がデータメモリ3013に複数のバッファ30131を確保したことを示す。
転送制御プログラム動作部1031は、各バッファ30131を利用して、I/Oデバイス401からのデータリード処理およびI/Oデバイス402へのデータライト処理を並行して行う。また、このとき、I/Oデータ処理プログラム動作部1034は、I/Oデバイス401からリードされたデータに対するデータ処理を並行して行ってもよい。この場合も、転送制御プログラム動作部1031は、データ転送量の総和がI/Oデータ転送アプリケーション動作部101から要求されたデータ転送量に達するまでデータリード処理およびデータライト処理を繰り返せばよい。
次に、本実施形態のデータ制御システムの動作を説明する。まず、I/Oデバイス401に対するリード要求やI/Oデバイス402に対するライト要求が多重化して行われない場合の動作を説明する。図4は、本実施形態におけるデータ制御システムの動作例を示すフローチャートである。初めに、I/Oデータ転送アプリケーション動作部101は、I/Oデバイス間のデータ転送をI/Oデータ転送ドライバ動作部103に要求する(ステップA1)。
I/Oデータ転送ドライバ動作部103の転送制御プログラム動作部1031は、データ転送の要求を受け、メモリ確保プログラム動作部1302を呼出し、メモリ確保プログラム動作部1302がメインメモリ3にI/Oデータ転送メモリ301を確保する(ステップA2)。
続いて、転送制御プログラム動作部1031は、I/OコマンドをI/Oコマンドメモリ3011に、DMAリストをDMAリストメモリ3012にそれぞれ作成する。そして、転送制御プログラム動作部1031は、I/Oデバイスドライバ動作部104にそれら(すなわち、I/OリードコマンドおよびDMAリスト)のデータを渡すことでI/Oリード要求を行い、I/Oデバイス401からI/Oデータをリードしてデータメモリ3013にリードしたデータを記憶させる(ステップA3)。
続いて、転送制御プログラム動作部1031は、必要であれば、I/Oデータ処理プログラム動作部1034を呼出し、データメモリ3013に記憶されたデータに対し、フォーマット変換や圧縮などのデータ処理を行う(ステップA4)。
続いて、転送制御プログラム動作部1031は、I/OコマンドをI/Oコマンドメモリ3011に、DMAリストをDMAリストメモリ3012にそれぞれ作成する。そして、転送制御プログラム動作部1031は、I/Oデバイスドライバ動作部105にそれらのデータを渡すことでI/Oライト要求を行い、I/Oデバイス402にデータメモリ3013に記憶されたデータをライトする(ステップA5)。
その後、転送制御プログラム動作部1031は、要求されたデータ量の転送が完了したか否かを判断する(ステップA6)。要求されたデータ量の転送が完了していない場合(ステップA6におけるNo)、I/Oデータ転送ドライバ動作部103は、ステップA3〜ステップA5の処理を繰り返す。一方、要求されたデータ量の転送が完了した場合(ステップA6におけるYes)、転送制御プログラム動作部1031は、メモリ解放プログラム動作部1033を呼出し、メモリ解放プログラム動作部1033がI/Oデータ転送メモリ301を解放する(ステップA7)。このように、I/Oデータ転送ドライバ動作部103は、I/Oデータ転送アプリケーション動作部101から要求されたデータ量の転送処理が完了するまでステップA3〜A5の処理を繰り返す。
次に、I/Oデバイス401に対するリード要求やI/Oデバイス402に対するライト要求が多重化して行われる場合の動作を説明する。図5および図6は、本実施形態におけるデータ制御システムの他の動作例を示すフローチャートである。I/Oデータ転送アプリケーション動作部101がI/Oデバイス間のデータ転送をI/Oデータ転送ドライバ動作部103に要求し、メモリ確保プログラム動作部1302がI/Oデータ転送メモリ301を確保するまでのステップA1〜ステップA2までの処理は、図4に例示する処理と同様である。
転送制御プログラム動作部1031は、データメモリ3013内における複数のバッファ30131にデータを書き込むための複数のI/OリードコマンドをI/Oコマンドメモリ3011に作成する。あわせて、転送制御プログラム動作部1031は、それぞれのI/Oリードコマンドに対応するDMAリストをDMAリストメモリ3012に作成する。そして、転送制御プログラム動作部1031は、I/Oデバイスドライバ動作部104に対し、それら(すなわち、I/OリードコマンドおよびDMAリスト)を用いて複数のI/Oデータのリード要求を行う(図5におけるステップA8)。
その後、転送制御プログラム動作部1031は、発行したI/Oデバイスへの要求が完了するまで待機する。1つのI/O要求の完了後(ステップA9)、転送制御プログラム動作部1031は、完了したI/O要求がリード要求か否かを判断する(ステップA10)。完了したI/O要求がリード要求の場合(ステップA10におけるYes)、転送制御プログラム動作部1031は、I/Oデバイス401からリードしてデータメモリ301上のバッファに記憶させたデータに対し、I/O要求を多重しない場合の動作と同様、ステップA4〜ステップA5の処理を行う。その後、転送制御プログラム動作部1031は、再びI/O要求が完了するまで待機する。
次に、ステップA10において、完了したI/O要求がリード要求でない(すなわち、ライト要求である)場合について説明する。ステップA10において、完了したI/O要求がライト要求の場合(ステップA10におけるNo)、転送制御プログラム動作部1031は、I/Oデバイス401に対してそれまで行ったリード要求により読みとったデータ量が、I/Oデータ転送アプリケーション動作部101から要求されたデータ量に達している否かを判定する(ステップA11)。
要求されたデータ量に達していない場合(ステップA11におけるNo)、転送制御プログラム動作部1031は、I/Oデバイスドライバ動作部104にI/Oリード要求を行い、データメモリ3013にリードしたデータを記憶させるステップA3と同様の処理を行う。その後、転送制御プログラム動作部1031は、再びI/O要求が完了するまで待機する。
一方、ステップA11において、要求されたデータ量に達している場合(ステップA11におけるYes)、転送制御プログラム動作部1031は、I/Oデバイスドライバ動作部105に発行したライト要求が全て完了したか否かを判定する(ステップA12)。ライト要求が全て完了していない場合(ステップA12におけるNo)、転送制御プログラム動作部1031は、再びI/O要求が完了するまで待機する。一方、ライト要求が全て完了した場合(ステップA12におけるYes)、メモリ解放プログラム動作部1033は、I/Oデータ転送メモリ301を解放する(ステップA7)。
本実施形態では、ブリッジ2とI/Oデバイス401、ブリッジ2とI/Oデバイス402とを接続するバスとして、PCIエクスプレスバスを例示した。他にも、PCIバス、PCI−Xバスなど、その他のバスを用いて、ブリッジ2とI/Oデバイス401,402を接続してもよい。同様に、I/Oデバイス401およびI/Oデバイス402が準拠するバスの規格は、PCIであってもよく、PCI−Xであっても良い。
また、本実施形態では、データをリードするI/Oデバイス401とデータをライトするI/Oデバイス402が、それぞれ別のI/Oデバイスである場合を例示して説明した。ただし、I/Oデバイス401とI/Oデバイス402とは、同一のI/Oデバイスであってもよい。このとき、2つのデバイス間のデータ転送が、同一のI/Oデバイス上の異なるモジュール間で行われてもよく、同一のI/Oデバイスにおける同一モジュールの異なるアドレス間で行われてもよい。
以上のように、本実施形態によれば、I/Oデバイス401からI/Oデバイス402へのデータ転送制御をカーネルモードで行うI/Oデータ転送ドライバ動作部103(より詳しくは、転送制御プログラム動作部1031)が、I/Oデバイス401からリードしたデータをデータメモリ3013に記憶させる指示をI/Oデバイスドライバ動作部104に対して行う。そして、I/Oデータ転送ドライバ動作部103(より詳しくは、転送制御プログラム動作部1031)が、データメモリ3013に記憶されたデータをI/Oデバイス402に書き込む指示を、I/Oデバイスドライバ動作部105に対して行う。
すなわち、本実施形態におけるデータ制御システムは、I/Oデータ転送ドライバ動作部103がCPUのカーネルモードで動作し、I/Oデバイスドライバ動作部104を仲介して第1のI/Oデバイス401からリードしたデータを、I/Oデバイスドライバ動作部105を仲介して第2のI/Oデバイス402にライトする。このため、I/Oデバイスの間で直接データを転送する動作に対応していない2つのI/Oデバイスの間で高速にデータの転送を行うことができる。
また、通常のコンピュータシステムのように、データ処理がユーザモードで行われると、データのコピーやコンテキストスイッチなどの処理を行う際、オーバヘッドが発生する。しかし、本実施形態では、データ処理がカーネルモードで行われるため、データの転送を高速に行うことができる。
また、本実施形態におけるデータ制御システムは、I/Oデバイス401からリードしたデータに対し、フォーマット変換や圧縮など、予め定められたデータ処理を行ってから第2のI/Oデバイス402にデータをライトする。このため、転送データに対する処理機能を有しない2つのI/Oデバイスの間で、転送するデータに対して各種の処理を行いながらデータ転送を行うため、全体の処理時間を短くすることができる。
また、第1のI/Oデバイス401に対するリード要求と、第2のI/Oデバイス402に対するライト要求を多重して行ってもよい。このような構成にすることで、I/O要求を多重しない場合と比較して、直接データを転送する動作に対応していない2つのI/Oデバイスの間でさらに高速にデータの転送を行うことができる。
実施形態2.
図7は、本発明の第2の実施形態におけるデータ制御システムの例を示すブロック図である。なお、第1の実施形態と同様の構成については、図1と同一の符号を付し、説明を省略する。本実施形態におけるデータ制御システムは、CPU1と、メインメモリ3と、第1のI/OデバイスであるI/Oデバイス401と、第2のI/OデバイスであるI/Oデバイス402と、I/Oデバイス403と、それぞれのI/Oデバイスを接続するブリッジ2とを含む。すなわち、第2の実施形態におけるデータ制御システムは、I/Oデバイス403を備える点において、第1の実施形態におけるデータ制御システムと異なる。
メインメモリ3は、I/Oデータ転送メモリ301を含む。また、I/Oデータ転送メモリ301は、I/Oコマンドメモリ3011と、DMAリストメモリ3012とを有する。また、I/Oデバイス403は、データメモリ4031を含む。データメモリ4031はコンピュータの物理アドレスにマップされ、データバッファとして、CPU1からデータのリードおよびライトの目的で使用される。すなわち、データメモリ4031は、第1の実施形態におけるデータメモリ3013に相当する。
CPU1は、I/Oデータ転送アプリケーション動作部101と、オペレーティングシステム動作部102と、I/Oデータ転送ドライバ動作部106と、I/Oデバイスドライバ動作部104と、I/Oデバイスドライバ動作部105と、I/Oデバイステーブル記憶部114とを含む。
また、メインメモリ3は、プログラム303を記憶する。プログラム303は、CPU1に読み込まれ、I/Oデータ転送アプリケーション動作部101と、オペレーティングシステム動作部102と、I/Oデータ転送ドライバ動作部106と、I/Oデバイス401を制御するI/Oデバイスドライバ動作部104と、I/Oデバイス402を制御するI/Oデバイスドライバ動作部105として動作する。
I/O転送ドライバ106動作部は、第1の実施形態におけるI/O転送ドライバ103動作部と同様の動作を行う。ただし、I/O転送ドライバ動作部106がI/Oデータ転送のデータバッファとしてデータメモリ4031を用いる点において、第1の実施形態におけるI/O転送ドライバ103動作部と異なる。
図8は、I/Oデータ転送ドライバ動作部106の例を示すブロック図である。本実施形態におけるI/Oデータ転送ドライバ動作部106は、転送制御プログラム動作部1031と、メモリ確保プログラム動作部1061と、メモリ解放プログラム動作部1062と、I/Oデータ処理プログラム動作部1034とを含む。
メモリ確保プログラム動作部1061は、転送制御プログラム動作部1031から呼び出され、データメモリ4031における転送用メモリ領域を確保する。また、メモリ解放プログラム動作部1062は、転送制御プログラム動作部1031から呼び出され、データメモリ4031における転送用メモリ領域を解放する。なお、メモリ確保プログラム動作部1061は、CPU1がメモリ確保用プログラムを読み込むことにより動作する。また、メモリ解放プログラム動作部1062は、CPU1がメモリ解放用プログラムを読み込むことにより動作する。
その他の構成および動作については、第1の実施形態と同様である。
以上のように、本実施形態におけるデータ制御システムでは、I/O転送ドライバ106動作部がI/Oデータの転送を仲介するデータバッファとして第3のI/Oデバイスが保持するメモリ領域(すなわち、データメモリ4031)を用いる。これにより、2つのI/Oデバイス間のデータ転送において、メインメモリ3をデータバッファとして使用する必要がなくなるため、第1の実施形態における効果に加え、メインメモリ資源とメインメモリバス資源の消費を削減できる。
実施形態3.
次に、第3の実施形態について説明する。第3の実施形態におけるデータ制御システムは、第1の実施形態においてデータ転送を行うI/Oデバイスがストレージデバイスになったものである。ここで、ストレージデバイスとは、SCSIやSAS(Serial Attached SCSI)、SATAなどを始めとする、ストレージの規格に準拠するデータ記憶デバイスである。本実施形態では、ストレージコピーの際に行われるデータ転送について詳しく説明する。
図9は、本発明の第3の実施形態におけるデータ制御システムの例を示すブロック図である。なお、第1の実施形態と同様の構成については、図1と同一の符号を付し、説明を省略する。本実施形態におけるデータ制御システムは、CPU1と、メインメモリ3と、第1のストレージデバイスであるストレージデバイス404と、第2のストレージデバイスであるストレージデバイス405と、それぞれのストレージデバイスを接続するブリッジ2とを含む。
CPU1は、ストレージコピーアプリケーション動作部107と、オペレーティングシステム動作部102と、ストレージコピードライバ動作部108と、ストレージデバイスドライバ動作部109と、ストレージデバイスドライバ動作部110と、I/Oデバイステーブル記憶部114とを含む。
すなわち、第3の実施形態におけるストレージコピーアプリケーション動作部107、ストレージコピードライバ動作部108、ストレージデバイスドライバ動作部109、ストレージデバイスドライバ動作部110、ストレージデバイス404およびストレージデバイス405は、それぞれ、第1の実施形態におけるI/Oデータ転送アプリケーション動作部101、I/Oデータ転送ドライバ動作部103、I/Oデバイスドライバ動作部104、I/Oデバイスドライバ動作部105、I/Oデバイス401およびI/Oデバイス402に相当する。
メインメモリ3は、I/Oデータ転送メモリ301を含む。なお、I/Oデータ転送メモリ301の内容は、第1の実施形態と同様である。また、メインメモリ3は、プログラム304を記憶する。プログラム304は、第1の実施形態におけるプログラム302に相当する。プログラム304は、CPU1に読み込まれ、ストレージコピーアプリケーション動作部107と、オペレーティングシステム動作部102と、ストレージコピードライバ動作部108と、ストレージデバイスドライバ動作部109と、ストレージデバイスドライバ動作部110として動作する。
ストレージコピードライバ動作部108は、ストレージデバイス404からストレージデバイス405へのコピー制御を行う。図10は、ストレージコピードライバ動作部108の例を示すブロック図である。本実施形態におけるストレージコピードライバ動作部108は、ストレージコピー制御プログラム動作部1081と、メモリ確保プログラム動作部1032と、メモリ解放プログラム動作部1033とを含む。
ストレージコピー制御プログラム動作部1081は、ストレージデバイス404およびストレージデバイス405にI/Oコマンドを発行することで、ストレージデバイス間のデータコピーを行う。ストレージコピー制御プログラム動作部1081は、CPU1がストレージコピー制御プログラムを読み込むことにより動作する。
なお、メモリ確保プログラム動作部1032およびメモリ解放プログラム動作部1033については、第1の実施形態と同様である。
このように、ストレージコピードライバ動作部108は、ストレージコピー制御プログラム、メモリ確保用プログラムおよびメモリ解放用プログラムを読み込み、これらのプログラムに従って動作する。その際、ストレージコピードライバ動作部108は、CPU1のカーネルモードで動作する。
以下、ストレージコピードライバ動作部108におけるそれぞれの動作部について詳しく説明する。ストレージコピー制御プログラム動作部1081は、ストレージコピーアプリケーション動作部107からの要求を受け付け、ストレージデバイス404とストレージデバイス405との間のデータコピーを行う。
具体的には、ストレージコピー制御プログラム動作部1081は、メモリ確保プログラム動作部1032を呼出し、メインメモリ3にI/Oデータ転送メモリ301を確保する。また、ストレージコピー制御プログラム動作部1081は、I/Oデバイステーブル記憶部114を参照し、ストレージデバイス404とストレージデバイス405の名前から、これらのデバイスに対してオペレーティングシステム動作部102が保持する管理情報のアドレスを検索する。
さらに、ストレージコピー制御プログラム動作部1081は、ストレージデバイス404に対するデータリードコマンドをI/Oコマンドメモリ3011に作成する。また、ストレージコピー制御プログラム動作部1081は、ストレージデバイス404からリードするデータの書き込み先であるデータメモリ3013のアドレスリストをDMAリストメモリ3012に作成する。そして、ストレージコピー制御プログラム動作部1081は、それらのデータ(具体的には、データリードコマンドおよびDMAリスト)をストレージデバイスドライバ動作部109に渡すことでI/Oリード要求を行う。なお、ストレージコピー制御プログラム動作部1081は、オペレーティングシステム動作部102が保持する管理情報のアドレスを用いてデータリードコマンドを作成する。
また、ストレージコピー制御プログラム動作部1081は、ストレージデバイス405に対するデータライトコマンドをI/Oコマンドメモリ3011に作成する。さらに、ストレージコピー制御プログラム動作部1081は、ストレージデバイス405にライトするデータの書き込み先であるデータメモリ3013のアドレスリストをDMAリストメモリ3012に作成する。そして、ストレージコピー制御プログラム動作部1081は、それらのデータ(具体的には、データライトコマンドおよびDMAリスト)をストレージデバイスドライバ動作部110に渡すことでI/Oライト要求を行う。なお、ストレージコピー制御プログラム動作部1081は、オペレーティングシステム動作部102が保持する管理情報のアドレスを用いてデータライトコマンドを作成する。
以降、ストレージコピー制御プログラム動作部1081は、ストレージデバイス404からのデータリード処理およびストレージデバイス405へのデータライト処理の一連の処理を、ストレージコピーアプリケーション動作部107に要求された量のデータ転送が完了するまで繰り返す。
また、ストレージコピー制御プログラム動作部1081は、ストレージデバイス404に対するリード要求やストレージデバイス405に対するライト要求を多重化して行ってもよい。このとき、データメモリ3013は、図3に例示するように、複数のバッファ30131を確保してもよい。
具体的には、ストレージコピー制御プログラム動作部1081は、各バッファ30131を利用して、ストレージデバイス404からのデータリード処理およびストレージデバイス405へのデータライト処理を並行して行う。そして、ストレージコピー制御プログラム動作部1081は、データ転送量の総和がストレージコピーアプリケーション動作部107から要求されたデータ転送量に達するまでデータリード処理およびデータライト処理を繰り返す。
次に、本実施形態のデータ制御システムの動作を説明する。まず、ストレージデバイス404に対するリード要求やストレージデバイス405に対するライト要求が多重化して行われない場合の動作を説明する。図11は、本実施形態におけるデータ制御システムの動作例を示すフローチャートである。初めに、ストレージコピーアプリケーション動作部107は、ストレージデバイス間のデータコピーをストレージコピードライバ動作部108に要求する(ステップB1)。
ストレージコピードライバ動作部108のストレージコピー制御プログラム動作部1081は、データコピーの要求を受け、メモリ確保プログラム動作部1302を呼出し、メモリ確保プログラム動作部1302がメインメモリ3にI/Oデータ転送メモリ301を確保する(ステップB2)。
続いて、ストレージコピー制御プログラム動作部1081は、I/OコマンドをI/Oコマンドメモリ3011に、DMAリストをDMAリストメモリ3012にそれぞれ作成する。そして、ストレージコピー制御プログラム動作部1081は、ストレージデバイスドライバ動作部109にそれら(すなわち、I/OリードコマンドおよびDMAリスト)のデータを渡すことでI/Oリード要求を行い、ストレージデバイス404からI/Oデータをリードしてデータメモリ3013にリードしたデータを記憶させる(ステップB3)。
続いて、ストレージコピー制御プログラム動作部1081は、I/OコマンドをI/Oコマンドメモリ3011に、DMAリストをDMAリストメモリ3012にそれぞれ作成する。そして、ストレージコピー制御プログラム動作部1081は、ストレージデバイスドライバ動作部110にそれらのデータを渡すことでI/Oライト要求を行い、ストレージデバイス405にデータメモリ3013に記憶されたデータをライトする(ステップB4)。
その後、ストレージコピー制御プログラム動作部1081は、要求されたデータ量のコピー処理が完了したか否かを判断する(ステップB5)。要求されたデータ量のコピー処理が完了していない場合(ステップB5におけるNo)、ストレージコピー制御プログラム動作部1081は、ステップB3〜ステップB4の処理を繰り返す。一方、要求されたデータ量のコピー処理が完了した場合(ステップB5におけるYes)、ストレージコピー制御プログラム動作部1081は、メモリ解放プログラム動作部1033を呼出し、メモリ解放プログラム動作部1033がI/Oデータ転送メモリ301を解放する(ステップB6)。このように、ストレージコピー制御プログラム動作部1081は、ストレージコピーアプリケーション動作部107から要求されたデータ量のコピー処理が完了するまでステップB3〜B4の処理を繰り返す。
次に、ストレージデバイス404に対するリード要求やストレージデバイス405に対するライト要求が多重化して行われる場合の動作を説明する。図12および図13は、本実施形態におけるデータ制御システムの他の動作例を示すフローチャートである。ストレージコピーアプリケーション動作部107がストレージデバイス間のデータコピーをストレージコピードライバ動作部108に要求し、メモリ確保プログラム動作部1302がI/Oデータ転送メモリ301を確保するまでのステップB1〜ステップB2までの処理は、図11に例示する処理と同様である。
ストレージコピー制御プログラム動作部1081は、データメモリ3013内における複数のバッファ30131にデータを書き込むための複数のI/OリードコマンドをI/Oコマンドメモリ3011に作成する。あわせて、ストレージコピー制御プログラム動作部1081は、それぞれのI/Oリードコマンドに対応するDMAリストをDMAリストメモリ3012に作成する。そして、ストレージコピー制御プログラム動作部1081は、ストレージデバイスドライバ動作部109に対し、それら(すなわち、I/OリードコマンドおよびDMAリスト)を用いて複数のI/Oデータのリード要求を行う(ステップB7)。
その後、ストレージコピー制御プログラム動作部1081は、発行したストレージデバイスへの要求が完了するまで待機する。1つのI/O要求の完了後(ステップB8)、ストレージコピー制御プログラム動作部1081は、完了したI/O要求がリード要求か否かを判断する(ステップB9)。完了したI/O要求がリード要求の場合(ステップB9におけるYes)、ストレージコピー制御プログラム動作部1081は、ストレージデバイス404からリードしてデータメモリ301上のバッファに記憶させたデータに対し、I/O要求を多重しない場合の動作と同様、ステップB4の処理(すなわち、ストレージデバイス405にデータのライト)を行う。その後、ストレージコピー制御プログラム動作部1081は、再びI/O要求が完了するまで待機する。
次に、ステップB9において、完了したI/O要求がリード要求でない(すなわち、ライト要求である)場合について説明する。ステップB9において、完了したI/O要求がライト要求の場合(ステップB9におけるNo)、ストレージコピー制御プログラム動作部1081は、ストレージデバイス404に対してそれまで行ったリード要求により読みとったデータ量が、ストレージコピーアプリケーション動作部107から要求されたデータ量に達している否かを判定する(ステップB10)。
要求されたデータ量に達していない場合(ステップB10におけるNo)、ストレージコピー制御プログラム動作部1081は、ストレージデバイスドライバ動作部109にI/Oリード要求を行い、データメモリ3013にリードしたデータを記憶させるステップB3と同様の処理を行う。その後、ストレージコピー制御プログラム動作部1081は、再びI/O要求が完了するまで待機する。
一方、ステップB10において、要求されたデータ量に達している場合(ステップB10におけるYes)、ストレージコピー制御プログラム動作部1081は、ストレージデバイスドライバ動作部110に発行したライト要求が全て完了したか否かを判定する(ステップB11)。ライト要求が全て完了していない場合(ステップB11におけるNo)、ストレージコピー制御プログラム動作部1081は、再びI/O要求が完了するまで待機する。一方、ライト要求が全て完了した場合(ステップB11におけるYes)、メモリ解放プログラム動作部1033は、I/Oデータ転送メモリ301を解放する(ステップB6)。
なお、第1の実施形態と同様、ストレージコピー制御プログラム動作部1081は、データコピーの途中に、例えば、フォーマット変換や圧縮など、予め定められたデータ処理を行ってもよい。
以上のように、本実施形態によれば、ストレージデバイス404からストレージデバイス405へのデータコピーを、カーネルモードで行うストレージコピードライバ動作部108(より詳しくは、ストレージコピー制御プログラム動作部1081)が、ストレージデバイス404からリードしたデータをデータメモリ3013に記憶させる指示をストレージデバイスドライバ動作部109に対して行う。そして、ストレージコピードライバ動作部108(より詳しくは、ストレージコピー制御プログラム動作部1081)が、データメモリ3013に記憶されたデータをストレージデバイス405に書き込む指示を、ストレージデバイスドライバ動作部110に対して行う。よって、直接データコピーを行う動作に対応していない2つのストレージデバイスの間で高速にデータコピーを行うことができる。
次に、本発明の最小構成の例を説明する。図14は、本発明によるデータ制御システムの最小構成の例を示すブロック図である。本発明によるデータ制御システムは、第一のデバイス(例えば、I/Oデバイス401)から第二のデバイス(例えば、I/Oデバイス402)へのデータ転送制御をカーネルモードで行うCPU80(例えば、CPU1)と、第一のデバイスから第二のデバイスへ転送されるデータを記憶するメインメモリ90(例えば、メインメモリ3)とを備えている。
CPU80は、第一のデバイスを制御する第一デバイス制御手段81(例えば、I/Oデバイスドライバ動作部104)と、第二のデバイスを制御する第二デバイス制御手段(例えば、I/Oデバイスドライバ動作部105)と、第一のデバイスから読み取ったデータをメインメモリ3に記憶させる指示である読み取り指示を第一デバイス制御手段81に対して行い、メインメモリ3に記憶されたデータを第二のデバイスに書き込む指示である書き込み指示を第二デバイス制御手段82に対して行うデータ転送制御手段83(例えば、I/Oデータ転送ドライバ動作部103)とを含む。
そのような構成により、直接データ転送を行う動作に対応していない2つのI/Oデバイスの間で高速にデータ転送を行うことができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)第一のデバイスから第二のデバイスへのデータ転送制御をカーネルモードで行うCPUと、前記第一のデバイスから第二のデバイスへ転送されるデータを記憶するメインメモリとを備え、前記CPUは、前記第一のデバイスを制御する第一デバイス制御手段と、前記第二のデバイスを制御する第二デバイス制御手段と、前記第一のデバイスから読み取ったデータを前記メインメモリに記憶させる指示である読み取り指示を前記第一デバイス制御手段に対して行い、前記メインメモリに記憶されたデータを前記第二のデバイスに書き込む指示である書き込み指示を前記第二デバイス制御手段に対して行うデータ転送制御手段とを含むことを特徴とするデータ制御システム。
(付記2)データ転送制御手段は、第二のデバイスに書き込む指示を行う前に、メインメモリに記憶されたデータに対して予め定められた処理を行う付記1記載のデータ制御システム。
(付記3)データ転送制御手段は、第一のデバイスから第二のデバイスへのデータ転送要求が行われたときに、要求されたデータ量の転送が完了するまで、第一デバイス制御手段に対する読み取り指示および第二のデバイスに対する書き込み指示を繰り返す付記1または付記2記載のデータ制御システム。
(付記4)メインメモリに、転送されるデータを記憶する領域を確保する領域確保手段と、前記領域を解放する領域解放手段とを備えた付記1から付記3のうちのいずれか1つに記載のデータ制御システム。
(付記5)メインメモリは、読み取り指示を示す読み取り指示コマンドおよび書き込み指示を示す書き込み指示コマンドを記憶する指示コマンド記憶手段と、メインメモリ内における転送データの記憶先を示すリストである記憶先リストを記憶する記憶先リスト記憶手段とを含み、データ転送制御手段は、前記読み取り指示コマンドおよび前記書き込み指示コマンドを作成して前記指示コマンド記憶手段に記憶させ、前記記憶先リストを作成して前記記憶先リスト記憶手段に記憶させ、第一デバイス制御手段は、前記指示コマンド記憶手段に記憶された読み取り指示コマンドおよび記憶先リストに基づいて、第一のデバイスから読み取ったデータを当該記憶先リストが示す記憶先に記憶させ、第二デバイス制御手段は、前記指示コマンド記憶手段に記憶された書き込み指示コマンドおよび記憶先リストに基づいて、当該記憶先リストが示す記憶先から読み取ったデータを第二のデバイスに書き込む付記1から付記4のうちのいずれか1つに記載のデータ制御システム。
(付記6)第一のデバイスおよび第二のデバイスの管理情報が記憶された位置を示すアドレスである管理情報アドレスを、当該第一のデバイスおよび第二のデバイスの名前と対応付けて記憶する管理情報アドレス記憶手段を備え、データ転送制御手段は、前記管理情報アドレスが示す位置に記憶された管理情報に基づいて、読み取り指示コマンドおよび書き込み指示コマンドを作成する付記5記載のデータ制御システム。
(付記7)メインメモリは、転送データを記憶する複数のバッファを含み、データ転送制御手段は、前記バッファごとに第一デバイス制御手段に対する読み取り指示を並列に行い、前記バッファごとに第二デバイス制御手段に対する書き込み指示を並列に行う付記1から付記6のうちのいずれか1つに記載のデータ制御システム。
(付記8)CPUは、第一のストレージデバイスから第二のストレージデバイスへのデータコピー制御をカーネルモードで行い、メインメモリは、前記第一のストレージデバイスから第二のストレージデバイスへコピーされるデータを記憶し、第一デバイス制御手段は、前記第一のストレージデバイスを制御し、第二デバイス制御手段は、前記第二のストレージデバイスを制御する付記1から付記7のうちのいずれか1つに記載のデータ制御システム。
(付記9)第一のデバイスから第二のデバイスへ転送されるデータを記憶する第三のデバイスを備え、データ転送制御手段は、第一のデバイスから読み取ったデータを前記第三のデバイスに記憶させる読み取り指示を第一デバイス制御手段に対して行い、前記第三のデバイスに記憶されたデータを第二のデバイスに書き込む書き込み指示を第二デバイス制御手段に対して行う付記1から付記8のうちのいずれか1つに記載のデータ制御システム。
(付記10)第一のデバイスから第二のデバイスへのデータ転送制御をカーネルモードで行うCPUが、当該第一のデバイスから読み取ったデータをメインメモリに記憶させる指示を、自CPUに備えた当該第一のデバイスを制御する第一デバイス制御手段に対して行い、前記CPUが、前記メインメモリに記憶されたデータを前記第二のデバイスに書き込む指示を、自CPUに備えた当該第二のデバイスを制御する第二デバイス制御手段に対して行うことを特徴とするデータ制御方法。
(付記11)CPUが、第二のデバイスに書き込む指示を行う前に、メインメモリに記憶されたデータに対して予め定められた処理を行う付記10記載のデータ制御方法。
(付記12)CPUが、第一のデバイスから第二のデバイスへのデータ転送要求が行われたときに、要求されたデータ量の転送が完了するまで、第一デバイス制御手段に対する読み取り指示および第二のデバイスに対する書き込み指示を繰り返す付記10または付記11記載のデータ制御方法。
(付記13)CPUが、メインメモリに、転送されるデータを記憶する領域を確保し、CPUが、前記領域を解放する付記10から付記12のうちのいずれか1つに記載のデータ制御方法。
(付記14)CPUが、読み取り指示を示す読み取り指示コマンドおよび書き込み指示を示す書き込み指示コマンドを作成して、メインメモリが備える指示コマンド記憶手段に記憶させ、CPUが、メインメモリ内における転送データの記憶先を示すリストである記憶先リストを作成して、メインメモリが備える記憶先リスト記憶手段に記憶させ、CPUが、前記指示コマンド記憶手段に記憶された読み取り指示コマンドおよび記憶先リストに基づいて、第一のデバイスから読み取ったデータを当該記憶先リストが示す記憶先に記憶させ、CPUが、前記指示コマンド記憶手段に記憶された書き込み指示コマンドおよび記憶先リストに基づいて、当該記憶先リストが示す記憶先から読み取ったデータを第二のデバイスに書き込む付記10から付記13のうちのいずれか1つに記載のデータ制御方法。
(付記15)CPUが、第一のデバイスおよび第二のデバイスの管理情報が記憶された位置を示すアドレスである管理情報アドレスを、当該第一のデバイスおよび第二のデバイスの名前と対応付けて記憶する管理情報アドレス記憶手段を参照し、前記管理情報アドレスが示す位置に記憶された管理情報に基づいて、読み取り指示コマンドおよび書き込み指示コマンドを作成する付記14記載のデータ制御方法。
(付記16)CPUが、メインメモリが備える複数のバッファごとに第一デバイス制御手段に対する読み取り指示を並列に行い、前記バッファごとに第二デバイス制御手段に対する書き込み指示を並列に行う付記10から付記15のうちのいずれか1つに記載のデータ制御方法。
(付記17)第一のストレージデバイスから第二のストレージデバイスへのデータ転送制御をカーネルモードで行うCPUが、当該第一のストレージデバイスから読み取ったデータをメインメモリに記憶させる指示を、第一デバイス制御手段に対して行い、前記CPUが、前記メインメモリに記憶されたデータを前記第二のストレージデバイスに書き込む指示を、第二デバイス制御手段に対して行う付記10から付記16のうちのいずれか1つに記載のデータ制御方法。
(付記18)第一のデバイスから読み取ったデータを、第一のデバイスから第二のデバイスへ転送されるデータを記憶する第三のデバイスに記憶させる読み取り指示を第一デバイス制御手段に対して行い、前記第三のデバイスに記憶されたデータを第二のデバイスに書き込む書き込み指示を第二デバイス制御手段に対して行う
付記10から付記17のうちのいずれか1項に記載のデータ制御システム。
(付記19)第一のデバイスから第二のデバイスへのデータ転送制御をカーネルモードで行うCPUおよび前記第一のデバイスから第二のデバイスへ転送されるデータを記憶するメインメモリを備えたコンピュータに適用されるデータ制御用プログラムであって、前記コンピュータに、前記第一のデバイスを制御する第一デバイス制御処理、前記第二のデバイスを制御する第二デバイス制御処理、および、前記第一のデバイスから読み取ったデータを前記メインメモリに記憶させる指示である読み取り指示を前記第一デバイス制御処理で実行させ、前記メインメモリに記憶されたデータを前記第二のデバイスに書き込む指示である書き込み指示を前記第二デバイス制御処理で実行させるデータ転送制御処理を実行させるためのデータ制御用プログラム。
(付記20)コンピュータに、データ転送制御処理で、第二のデバイスに書き込む指示を行う前に、メインメモリに記憶されたデータに対して予め定められた処理を行わせる付記19記載のデータ制御用プログラム。
(付記21)コンピュータに、データ転送制御処理で、第一のデバイスから第二のデバイスへのデータ転送要求が行われたときに、要求されたデータ量の転送が完了するまで、第一デバイス制御処理における読み取り指示および第二のデバイスにおける書き込み処理を繰り返し実行させる付記19または付記20記載のデータ制御用プログラム。
(付記22)コンピュータに、メインメモリに、転送されるデータを記憶する領域を確保する領域確保処理、および、前記領域を解放する領域解放処理を実行させる付記19から付記21のうちのいずれか1つに記載のデータ制御用プログラム。
(付記23)コンピュータに、データ転送制御処理で、読み取り指示を示す読み取り指示コマンドおよび書き込み指示を示す書き込み指示コマンドを作成させて、メインメモリが備える指示コマンド記憶手段に記憶させ、メインメモリ内における転送データの記憶先を示すリストである記憶先リストを作成させて、メインメモリが備える記憶先リスト記憶手段に記憶させ、第一デバイス制御処理で、前記指示コマンド記憶手段に記憶された読み取り指示コマンドおよび記憶先リストに基づいて、第一のデバイスから読み取ったデータを当該記憶先リストが示す記憶先に記憶させ、第二デバイス制御処理で、前記指示コマンド記憶手段に記憶された書き込み指示コマンドおよび記憶先リストに基づいて、当該記憶先リストが示す記憶先から読み取ったデータを第二のデバイスに書き込ませる付記19から付記22のうちのいずれか1つに記載のデータ制御用プログラム。
(付記24)コンピュータに、データ転送制御処理で、第一のデバイスおよび第二のデバイスの管理情報が記憶された位置を示すアドレスである管理情報アドレスを、当該第一のデバイスおよび第二のデバイスの名前と対応付けて記憶する管理情報アドレス記憶手段が記憶する当該管理情報アドレスが示す位置に記憶された管理情報に基づいて、読み取り指示コマンドおよび書き込み指示コマンドを作成させる付記23記載のデータ制御用プログラム。
(付記25)コンピュータに、データ転送制御処理で、メインメモリが備える複数のバッファごとに第一デバイス制御処理における読み取り指示を並列に実行させ、前記バッファごとに第二デバイス制御処理における書き込み指示を並列に実行させる付記19から付記24のうちのいずれか1つに記載のデータ制御用プログラム。
(付記26)第一のストレージデバイスから第二のストレージデバイスへのデータ転送制御をカーネルモードで行うCPUおよび前記第一のストレージデバイスから第二のストレージデバイスへ転送されるデータを記憶するメインメモリを備えたコンピュータに適用されるデータ制御用プログラムであって、前記コンピュータに、第一デバイス制御処理で、前記第一のストレージデバイスを制御させ、第二デバイス制御処理で、前記第二のストレージデバイスを制御させる付記19から付記25のうちのいずれか1つに記載のデータ制御用プログラム。
(付記27)コンピュータに、データ転送制御処理で、第一のデバイスから読み取ったデータを、第一のデバイスから第二のデバイスへ転送されるデータを記憶する第三のデバイスに記憶させる読み取り指示を第一デバイス制御処理で実行させ、前記第三のデバイスに記憶されたデータを第二のデバイスに書き込む書き込み指示を第二デバイス制御処理で実行させる付記19から付記26のうちのいずれか1つに記載のデータ制御用プログラム。
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2011年3月2日に出願された日本特許出願2011−044951を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、2つのI/Oデバイス間で高速にデータ移動させる制御を行うコンピュータシステムに好適に適用される。また、本発明は、2つのI/Oデバイスの間で転送するデータに対し、処理を行いながら高速にデータ転送を行うコンピュータシステムにも好適に適用される。
1 CPU
2 ブリッジ
3 メインメモリ
101 I/Oデータ転送アプリケーション動作部
102 オペレーティングシステム動作部
103 I/Oデータ転送ドライバ動作部
104,105 I/Oデバイスドライバ動作部
106 I/Oデータ転送ドライバ動作部
107 ストレージコピーアプリケーション動作部
108 ストレージコピードライバ動作部
109,110 ストレージデバイスドライバ動作部
301 I/Oデータ転送メモリ
302,303,304 プログラム
401,402,403 I/Oデバイス
404,405 ストレージデバイス
501,502 PCIエクスプレスバス

Claims (9)

  1. 第一のデバイスから第二のデバイスへのデータ転送制御をカーネルモードで行うCPUと、
    前記第一のデバイスから第二のデバイスへ転送されるデータを記憶するメインメモリとを備え、
    前記メインメモリは、転送データを記憶する複数のバッファを含み、
    前記CPUは、
    前記第一のデバイスを制御する第一デバイス制御手段と、
    前記第二のデバイスを制御する第二デバイス制御手段と、
    前記第一のデバイスから読み取ったデータを前記メインメモリに記憶させる指示である読み取り指示を前記第一デバイス制御手段に対して行い、前記メインメモリに記憶されたデータを前記第二のデバイスに書き込む指示である書き込み指示を前記第二デバイス制御手段に対して行うデータ転送制御手段とを含み、
    前記データ転送制御手段は、前記メインメモリにDMAリストを作成し、前記バッファごとに第一デバイス制御手段に対する読み取り指示を並列に行い、前記バッファごとに第二デバイス制御手段に対する書き込み指示を並列に行い、
    前記第一デバイス制御手段は、前記DMAリストを用いたDMAにより前記メインメモリにデータを書き込ませる制御を前記第一のデバイスに対して行い、
    前記第二デバイス制御手段は、前記DMAリストを用いたDMAにより前記第一のデバイスによって書き込まれたデータを読ませる制御を前記第二のデバイスに対して行う
    ことを特徴とするデータ制御システム。
  2. データ転送制御手段は、第二のデバイスに書き込む指示を行う前に、メインメモリに記憶されたデータに対して予め定められた処理を行う
    請求項1記載のデータ制御システム。
  3. データ転送制御手段は、第一のデバイスから第二のデバイスへのデータ転送要求が行われたときに、要求されたデータ量の転送が完了するまで、第一デバイス制御手段に対する読み取り指示および第二のデバイスに対する書き込み指示を繰り返す
    請求項1または請求項2記載のデータ制御システム。
  4. メインメモリに、転送されるデータを記憶する領域を確保する領域確保手段と、
    前記領域を解放する領域解放手段とを備えた
    請求項1から請求項3のうちのいずれか1項に記載のデータ制御システム。
  5. メインメモリは、
    読み取り指示を示す読み取り指示コマンドおよび書き込み指示を示す書き込み指示コマンドを記憶する指示コマンド記憶手段と、
    メインメモリ内における転送データの記憶先を示すリストである記憶先リストを記憶する記憶先リスト記憶手段とを含み、
    データ転送制御手段は、前記読み取り指示コマンドおよび前記書き込み指示コマンドを作成して前記指示コマンド記憶手段に記憶させ、前記記憶先リストを作成して前記記憶先リスト記憶手段に記憶させ、
    第一デバイス制御手段は、前記指示コマンド記憶手段に記憶された読み取り指示コマンドおよび記憶先リストに基づいて、第一のデバイスから読み取ったデータを当該記憶先リストが示す記憶先に記憶させ、
    第二デバイス制御手段は、前記指示コマンド記憶手段に記憶された書き込み指示コマンドおよび記憶先リストに基づいて、当該記憶先リストが示す記憶先から読み取ったデータを第二のデバイスに書き込む
    請求項1から請求項4のうちのいずれか1項に記載のデータ制御システム。
  6. 第一のデバイスおよび第二のデバイスの管理情報が記憶された位置を示すアドレスである管理情報アドレスを、当該第一のデバイスおよび第二のデバイスの名前と対応付けて記憶する管理情報アドレス記憶手段を備え、
    データ転送制御手段は、前記管理情報アドレスが示す位置に記憶された管理情報に基づいて、読み取り指示コマンドおよび書き込み指示コマンドを作成する
    請求項5記載のデータ制御システム。
  7. CPUは、第一のストレージデバイスから第二のストレージデバイスへのデータコピー制御をカーネルモードで行い、
    メインメモリは、前記第一のストレージデバイスから第二のストレージデバイスへコピーされるデータを記憶し、
    第一デバイス制御手段は、前記第一のストレージデバイスを制御し、
    第二デバイス制御手段は、前記第二のストレージデバイスを制御する
    請求項1から請求項のうちのいずれか1項に記載のデータ制御システム。
  8. 第一のデバイスから第二のデバイスへのデータ転送制御をカーネルモードで行うCPUが、転送データを記憶する複数のバッファを含み、当該第一のデバイスから当該第二のデバイスへ転送されるデータを記憶するメインメモリにDMAリストを作成し、
    前記CPUが、前記第一のデバイスから読み取ったデータをメインメモリにおける前記バッファごとに記憶させる指示を、自CPUに備えた当該第一のデバイスを制御する第一デバイス制御手段に対して並列に行い、
    前記第一デバイス制御手段が、前記DMAリストを用いたDMAにより前記メインメモリにデータを書き込ませる制御を前記第一のデバイスに対して行い、
    前記CPUが、前記メインメモリにおける前記バッファごとに記憶されたデータを前記第二のデバイスに書き込む指示を、自CPUに備えた当該第二のデバイスを制御する第二デバイス制御手段に対して並列に行い、
    前記第二デバイス制御手段が、前記DMAリストを用いたDMAにより前記第一のデバイスによって書き込まれたデータを読ませる制御を前記第二のデバイスに対して行う
    ことを特徴とするデータ制御方法。
  9. 第一のデバイスから第二のデバイスへのデータ転送制御をカーネルモードで行うCPUおよび前記第一のデバイスから第二のデバイスへ転送されるデータを記憶するメインメモリを備えたコンピュータに適用されるデータ制御用プログラムであって、
    前記コンピュータに、
    前記第一のデバイスを制御する第一デバイス制御処理、
    前記第二のデバイスを制御する第二デバイス制御処理、および、
    前記第一のデバイスから読み取ったデータを前記メインメモリに記憶させる指示である読み取り指示を前記第一デバイス制御処理で実行させ、前記メインメモリに記憶されたデータを前記第二のデバイスに書き込む指示である書き込み指示を前記第二デバイス制御処理で実行させるデータ転送制御処理を実行させ、
    前記メインメモリは、転送データを記憶する複数のバッファを含み、
    前記コンピュータに、
    前記データ転送制御処理で、前記メインメモリにDMAリストを作成させ、前記バッファごとに第一デバイス制御処理における読み取り指示を並列に行わせ、前記バッファごとに第二デバイス制御処理における書き込み指示を並列に行わせ、
    前記第一デバイス制御処理で、前記DMAリストを用いたDMAにより前記メインメモリにデータを書き込ませる制御を前記第一のデバイスに対して行わせ、
    前記第二デバイス制御処理で、前記DMAリストを用いたDMAにより前記第一のデバイスによって書き込まれたデータを読ませる制御を前記第二のデバイスに対して行わせる
    ためのデータ制御用プログラム。
JP2013502184A 2011-03-02 2012-02-23 データ制御システム、データ制御方法およびデータ制御用プログラム Expired - Fee Related JP6395203B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011044951 2011-03-02
JP2011044951 2011-03-02
PCT/JP2012/001229 WO2012117701A1 (ja) 2011-03-02 2012-02-23 データ制御システム、データ制御方法およびデータ制御用プログラム

Publications (2)

Publication Number Publication Date
JPWO2012117701A1 JPWO2012117701A1 (ja) 2014-07-07
JP6395203B2 true JP6395203B2 (ja) 2018-09-26

Family

ID=46757646

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013502184A Expired - Fee Related JP6395203B2 (ja) 2011-03-02 2012-02-23 データ制御システム、データ制御方法およびデータ制御用プログラム

Country Status (6)

Country Link
US (1) US9280498B2 (ja)
EP (1) EP2682870B1 (ja)
JP (1) JP6395203B2 (ja)
CN (1) CN103370697B (ja)
BR (1) BR112013020341B1 (ja)
WO (1) WO2012117701A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6810962B2 (ja) * 2017-03-30 2021-01-13 株式会社アクセル データ処理装置、データ転送装置、データ処理方法、及びデータ転送プログラム

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6459446A (en) * 1987-08-31 1989-03-07 Toshiba Corp Information processing system
JPS6476343A (en) * 1987-09-18 1989-03-22 Fujitsu Ltd Cache memory control system
JPH05151137A (ja) * 1991-11-29 1993-06-18 Nec Corp 電子計算機装置
JP3515142B2 (ja) * 1992-06-11 2004-04-05 セイコーエプソン株式会社 データ転送制御装置
JPH0785308A (ja) * 1993-07-02 1995-03-31 Sony Corp 画像表示方法
FR2717921B1 (fr) * 1994-03-24 1996-06-21 Texas Instruments France Dispositif de gestion de conflit d'accès entre un CPU et des mémoires.
JP2901882B2 (ja) 1994-07-26 1999-06-07 株式会社日立製作所 計算機システムおよび入出力命令の発行方法
JPH08106443A (ja) * 1994-10-05 1996-04-23 Hitachi Ltd データ処理システム及び並列コンピュータ
EP0732659B1 (en) 1995-03-17 2001-08-08 LSI Logic Corporation Controlling (n+i) I/O channels with (n) data managers in a homogeneous software programming environment
JPH10143437A (ja) 1996-11-14 1998-05-29 Toshiba Corp コンピュータシステムおよび動画像転送方法
US6016515A (en) * 1997-04-04 2000-01-18 Microsoft Corporation Method, computer program product, and data structure for validating creation of and routing messages to file object
US6330623B1 (en) * 1999-01-08 2001-12-11 Vlsi Technology, Inc. System and method for maximizing DMA transfers of arbitrarily aligned data
JP2001159956A (ja) * 1999-12-01 2001-06-12 Hitachi Ltd ディスクアクセス制御方法および装置
JP2002262099A (ja) * 2001-02-27 2002-09-13 Canon Inc 画像処理装置及び画像処理装置用dmaコントローラ
US7020724B2 (en) * 2001-09-28 2006-03-28 Intel Corporation Enhanced power reduction capabilities for streaming direct memory access engine
US7240350B1 (en) * 2002-01-07 2007-07-03 Slt Logic, Llc System and method for providing communications to processes
AU2003211268A1 (en) * 2002-02-15 2003-09-04 Science Park Corporation Individual authentication method using input characteristic of input apparatus by network, program thereof, and recording medium containing the program
US7130933B2 (en) * 2002-07-24 2006-10-31 Intel Corporation Method, system, and program for handling input/output commands
US7406481B2 (en) * 2002-12-17 2008-07-29 Oracle International Corporation Using direct memory access for performing database operations between two or more machines
KR100630052B1 (ko) * 2004-01-26 2006-09-27 삼성전자주식회사 실시간 전송 프로토콜 데이터의 전송을 위한 처리 시스템 및 방법
US20050256977A1 (en) * 2004-05-14 2005-11-17 Dehaemer Eric J Integrated circuit having processor and switch capabilities
JP2006287715A (ja) * 2005-04-01 2006-10-19 Seiko Epson Corp 画像処理コントローラ及び電子機器
US8046506B2 (en) 2006-03-21 2011-10-25 Mediatek Inc. FIFO system and operating method thereof
JP4895394B2 (ja) * 2007-11-16 2012-03-14 株式会社リコー 画像処理装置
JP2009230484A (ja) 2008-03-24 2009-10-08 Nec Corp ストレージサブシステム、ストレージシステム、ファームウェア置換方法、及びプログラム
US8327040B2 (en) * 2009-01-26 2012-12-04 Micron Technology, Inc. Host controller
JP5293283B2 (ja) * 2009-03-09 2013-09-18 株式会社リコー 半導体集積回路及びメモリアクセス制御方法
US8352689B2 (en) * 2009-11-30 2013-01-08 Lsi Corporation Command tag checking in a multi-initiator media controller architecture
US8296478B2 (en) * 2010-06-24 2012-10-23 Hitachi, Ltd. Data transfer system and data transfer method

Also Published As

Publication number Publication date
BR112013020341A2 (pt) 2017-11-14
WO2012117701A1 (ja) 2012-09-07
US20130346643A1 (en) 2013-12-26
CN103370697B (zh) 2016-09-07
EP2682870A4 (en) 2015-02-25
BR112013020341B1 (pt) 2021-06-08
CN103370697A (zh) 2013-10-23
JPWO2012117701A1 (ja) 2014-07-07
US9280498B2 (en) 2016-03-08
EP2682870B1 (en) 2016-11-02
EP2682870A1 (en) 2014-01-08

Similar Documents

Publication Publication Date Title
USRE48736E1 (en) Memory system having high data transfer efficiency and host controller
JP4472617B2 (ja) Raidシステム、raidコントローラ及びそのリビルド/コピーバック処理方法
US8627040B2 (en) Processor-bus-connected flash storage paging device using a virtual memory mapping table and page faults
TW200846910A (en) Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
WO2018176911A1 (zh) 一种虚拟磁盘文件格式转换方法和装置
US20080235477A1 (en) Coherent data mover
JP2007094994A (ja) Raidシステム及びそのリビルド/コピーバック処理方法
US20060136779A1 (en) Object-based storage device with low process load and control method thereof
CN103678201B (zh) 具有逻辑设备能力的pci express切换器
JP2010009290A (ja) ストレージシステム,コピー制御方法およびコピー制御部
WO2015039582A1 (zh) 一种虚拟资源分配方法及装置
WO2018139223A1 (ja) 情報処理装置,制御プログラムおよび情報処理方法
JP6395203B2 (ja) データ制御システム、データ制御方法およびデータ制御用プログラム
JP2014048835A (ja) 情報処理装置、領域解放制御プログラム、および領域解放制御方法
JP2007102436A (ja) ストレージ制御装置およびストレージ制御方法
JP2006268753A (ja) Dma回路及びコンピュータシステム
JP4924970B2 (ja) データ処理システム
WO2012140813A1 (ja) データ転送装置
US11669268B2 (en) Information processing apparatus and control method therefor
US11782615B2 (en) Information processing system, non-transitory computer-readable recording medium having stored therein storage controlling program, and storage controller
JP5520462B2 (ja) メモリ管理サーバ、方法及びプログラム
JP2015215641A (ja) 情報処理装置,エミュレーションプログラム,及びエミュレーション方法
JP2007265143A (ja) 情報処理方法、情報処理システム、情報処理装置、マルチプロセッサ、情報処理プログラム及び情報処理プログラムを記憶したコンピュータ読み取り可能な記憶媒体
JP5228935B2 (ja) 補助記憶装置
JPWO2019216130A1 (ja) システム、データ処理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170106

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170912

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170913

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170925

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20171102

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180823

R150 Certificate of patent or registration of utility model

Ref document number: 6395203

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees