JPWO2015155850A1 - 入出力装置及び方法 - Google Patents

入出力装置及び方法 Download PDF

Info

Publication number
JPWO2015155850A1
JPWO2015155850A1 JP2016512526A JP2016512526A JPWO2015155850A1 JP WO2015155850 A1 JPWO2015155850 A1 JP WO2015155850A1 JP 2016512526 A JP2016512526 A JP 2016512526A JP 2016512526 A JP2016512526 A JP 2016512526A JP WO2015155850 A1 JPWO2015155850 A1 JP WO2015155850A1
Authority
JP
Japan
Prior art keywords
transfer
data
instruction
dma
completed
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.)
Pending
Application number
JP2016512526A
Other languages
English (en)
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2015155850A1 publication Critical patent/JPWO2015155850A1/ja
Pending legal-status Critical Current

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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Abstract

入出力装置は、指示部と実行部とを有し、指示部は、メインメモリとバッファメモリとの間における複数のデータブロックの各々についての転送を指示し、実行部は、指示部からの転送指示に係る1のデータブロックについての転送を実行し、転送完了後、その1のデータブロックに係る完了情報を指示部へ通知するにあたり、複数のデータブロックの転送の進捗状況を管理する管理情報に基づいて、複数のデータブロックの全ての転送が完了したか否かを判定し、全ての転送が完了したと判定した場合、全ての転送が完了した旨を示す全完了情報を指示部へ通知する。

Description

本発明は、概して、データの入出力の技術に関する。
計算機が通信ネットワークを介してストレージ装置などにアクセスする場合、計算機内のバス通信に係るプロトコルと、通信ネットワークに係るプロトコルとが異なり得る。このような異なるプロトコルを変換する入出力装置の一つとしてHBA(Host Bus Adapter)が知られている(特許文献1)。
特開2012−150623号公報
通常、通信ネットワークに係るプロトコルに従う1フレームのサイズは、バス通信に係るプロトコルに従う1データブロックのサイズよりも大きい。そこで、HBAは、計算機のメインメモリに格納されている複数のデータブロックを1フレームに格納して通信ネットワークに送信し、又は、通信ネットワークから受信した1フレームから複数のデータブロックを抽出して計算機のメインメモリに格納する。このとき、HBAは、計算機のメインメモリと、フレームが格納されるバッファメモリとの間でデータ転送を行う。
計算機内のバス通信及び通信ネットワークの高速化に伴い、HBAに関する処理の高速化が求められているところ、上述のデータ転送も高速化する必要がある。
そこで、本発明の目的は、入出力装置の処理を高速化することにある。また、本発明の別の目的は、計算機内のメインメモリと、入出力装置内のバッファメモリとの間のデータ転送を高速化することにある。
一実施形態に係る入出力装置は、指示部と実行部とを有する。指示部は、メインメモリに格納されているデータを複数のデータブロックに分割してバッファメモリへ転送する場合、又は、バッファメモリに格納されているデータを複数のデータブロックに分割してメインメモリへ転送する場合、複数のデータブロックの各々のデータブロックについての転送を指示する。実行部は、指示部からの転送指示に係るデータブロックについての転送を実行し、転送完了後、このデータブロックの転送が完了した旨を示す完了情報を指示部へ通知する。さらに、実行部は、複数のデータブロックの転送の進捗状況を管理する転送管理情報に基づいて、複数のデータブロックの全ての転送が完了したか否かを判定し、全ての転送が完了したと判定した場合、その複数のデータブロックの全ての転送が完了した旨を示す全完了情報を指示部へ通知する。
入出力装置は、入出力データを変換する変換アダプタ、若しくは、他のネットワーク機器又はストレージ機器とホスト計算機とを接続するホストバスアダプタなどであってもよい。
本発明によれば、入出力装置の処理を高速化することができる。また、本発明によれば、計算機内のメインメモリと、入出力装置内のバッファメモリとの間のデータ転送を高速化することができる。
一実施例に係る計算機の構成例を示す。 一比較例に係るHBAがフレームを送信する処理を示すシーケンスチャートである。 一比較例に係るHBAがフレームを受信する処理を示すシーケンスチャートである。 送信バッファ管理テーブルの構成例を示す。 受信バッファ管理テーブルの構成例を示す。 送信データ管理テーブルの構成例を示す。 受信データ管理テーブルの構成例を示す。 HBAからストレージ装置へフレームを送信する処理例を表すシーケンスチャートである。 HBAがストレージ装置からフレームを受信する処理例を表すシーケンスチャートである。
以下、実施形態を説明する。なお、以後の説明では、「×××テーブル」等の表現にて情報を説明することがあるが、これら情報はテーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「×××テーブル」等について「×××情報」と呼ぶことがある。また、各情報の内容を説明する際に、「番号」、「名称」という表現の識別情報が採用されるが、他種の識別情報が使用されてよい。
図1は、本実施例に係る計算機10の構成例を示す。
計算機10は、CPU(Central Processing Unit)11と、メインメモリ13と、ホストブリッジ112と、PCIe(PCI Express)バス105と、HBA106とを有する。ホストブリッジ112には、CPU11とメインメモリ13とPCIeバス105とが接続されている。内部バスの一種であるPCIeバス105には、HBA106とホストブリッジ112とが接続されている。HBA106とストレージ装置113とは、通信ネットワークの一種であるSAN(Storage Area Network)で接続されている。すなわち、HBA106は、計算機10を、Fibre Channelに接続するためのデバイスである。
HBA106は、LSI104と記憶デバイス108とを有し、計算機10内のPCIeバス105を伝送するデータと、SANを伝送するデータと、を制御する。LSI104ではFW107が実行され、HBA106の有する様々な機能が実現される。
HBA106は、PCIeに係るプロトコルに従ってメインメモリ13からデータブロックをリードし、そのデータブロックをSANに係るプロトコルに従うフレームに変換し、そのフレームをストレージ装置113へ送信する機能を有する。このとき、HBA106は、メインメモリ13からリードしたデータブロックをいったん記憶デバイス108内の送信バッファ109に格納し、SANに係るプロトコルに従うフレームに変換する。
HBA106は、ストレージ装置113からSANに係るプロトコルに従うフレームを受信し、そのフレームをPCIeに係るプロトコルに従うデータブロックに変換し、そのデータブロックをメインメモリ13にライトする機能を有する。このとき、HBA106は、ストレージ装置113から受信したフレームをいったん記憶デバイス108内の受信バッファ110に格納し、PCIeに係るプロトコルに従うデータブロックに変換する。
計算機10内のCPU11では、OS(Operating System)100が実行される。OS100上では、アプリケーションプログラム101と、HBAドライバ102とが実行される。
アプリケーションプログラム101がストレージ装置113へデータを送信する場合、OS100は、送信データをメインメモリ13に格納する。そして、HBAドライバ102は、HBA106に対して、メインメモリ13に格納されている送信データを送信バッファ109へDMA(Direct Memory Access)転送する旨指示する。HBA106は、その指示を受けて、上述のように、メインメモリ13から送信データを構成する複数のデータブロックをリードし、そのデータブロックを送信バッファ109へDMA転送する。
アプリケーションプログラム101がストレージ装置113からデータを受信する場合、HBAドライバ102は、HBA106に対して、受信バッファ110のフレームに格納されている受信データをメインメモリ13へDMA転送する旨指示する。HBA106は、その指示を受けて、上述のように、受信バッファ110から受信データを構成する複数のデータブロックをリードし、そのリードしたデータブロックをメインメモリ13へDMA転送する。そして、OS100は、メインメモリ13に転送された受信データを、アプリケーションプログラム101に提供する。
以下、HBA106において、DMA転送を指示する機能を「指示部201」、DMA転送を実行する機能を「実行部202」と表現して説明する。指示部201は、LSI104のFW107又はLSI104の所定の論理回路によって実現されてよい。実行部202の機能は、LSI104は、LSI104のFW107又はLSI104の所定の論理回路によって実現されてよい。
以下、本実施例の特徴を理解し易くするため、まず、図2を参照しながら一比較例に係るHBAにおけるフレーム送信時の処理を説明し、また、図3を参照しながら一比較例に係るHBAにおけるフレーム受信時の処理を説明する。
図2は、一比較例に係るHBAにおけるフレーム送信時の処理を示すシーケンスチャートである。
指示部は、実行部に対して、送信バッファの確保を要求する(S400)。
送信バッファの確保要求を受けた実行部は、未使用の送信バッファの1つを確保する(S401)。ここで、実行部は、送信バッファ番号「0」の送信バッファ(「送信バッファ#0」と表現する)を確保したとする。実行部は、送信バッファ#0の確保完了を指示部へ通知する(S402)。
送信バッファ#0の確保完了の通知を受けた指示部は、送信用のフレームヘッダを生成する。そして、指示部は、その生成した送信用のフレームヘッダを、送信バッファ番号#0にライトする(S403)。送信用のフレームヘッダには、送信元のアドレス及び宛先のアドレスなどが含まれている。
指示部は、実行部に対して、1回目のDMA転送に係るデータブロック情報を通知する(S404)。このデータブロック情報には、例えば、1回目のDMA転送に係る、データブロックのサイズ、データブロックのリード先となるメインメモリのアドレス(「リード先メモリアドレス」という)、及び、データブロックのライト先となる送信バッファ番号(ここでは「0」となる)などが含まれる。
そして、指示部は、実行部に対して、S404で通知したデータブロック情報に基づくDMA転送を指示する(S405)。
S405のDMA転送の指示を受けた実行部は、DMAエンジンを用いて、S404で通知されたデータブロック情報に基づくDMA転送を実行する(S406)。つまり、DMAエンジンは、データブロック情報に含まれるリード先メモリアドレスから、データブロックのサイズ分のデータブロックをリードし、そのデータブロックを送信バッファ#0へライトする。このDMA転送の完了後、実行部は、指示部に対して、DMA転送完了を通知する(S407)。
DMA転送完了の通知を受けた指示部は、フレームに格納する送信データのサイズから、S406によりDMA転送したデータブロックのサイズ(S404で通知したデータブロックのサイズ)を減算し、残りのデータのサイズを算出する。そして、指示部は、「残りのデータのサイズ≦0」であるか否かを判定する(S408)。つまり、DMA転送すべきデータブロックが残っているか否かを判定する。
「残りのデータのサイズ>0」である場合(S408:NO)、指示部は、実行部に対して、2回目のDMA転送に係るデータブロック情報を通知する(S409)。このデータブロック情報には、2回目のDMA転送に係る、データブロックのサイズ、リード先メモリアドレス、及び送信バッファ番号「0」が含まれる。
そして、指示部は、実行部に対して、S409で通知したデータブロック情報に基づくDMA転送を指示する(S410)。
S410のDMA転送の指示を受けた実行部は、DMAエンジンを用いて、S409で通知されたデータブロック情報に基づくDMA転送を実行する(S412)。このDMA転送の完了後、実行部は、指示部に、DMA転送完了を通知する(S413)。
DMA転送完了通知を受けた指示部は、上記の残りのデータのサイズから、S410によりDMA転送したデータブロックのサイズ(S409で通知したデータブロックのサイズ)を減算し、新たに残りのデータのサイズを算出する。そして、指示部201は、S408と同様、「残りのデータのサイズ≦0」であるか否かを判定する(S414)。
「残りのデータのサイズ≦0」である場合(S414:YES)、指示部は、実行部に対して、送信バッファ#0におけるフレームの送信を指示する(S415)。フレームの送信指示を受けた実行部は、送信バッファ#0に格納されたフレームヘッダ及び複数のデータブロックを含むフレームを、ストレージ装置113へ送信する(S416)。
このようにして一比較例に係るHBAは、メインメモリの送信データからフレームを構成し、そのフレームをストレージ装置へ送信する。
図3は、一比較例に係るHBAにおけるフレーム受信時の処理を示すシーケンスチャートである。
実行部は、ストレージ装置からフレームを受信すると、フレームを受信した旨及びそのフレームを格納した受信バッファの受信バッファ番号を、指示部へ通知する(S500)。ここで、実行部は、受信バッファ番号「1」の受信バッファ(「受信バッファ#1」と表現する)にフレームを格納したとする。
フレームの受信通知を受けた指示部は、受信バッファ#1からフレームヘッダをリードする(S501)。そして、指示部は、このリードしたフレームヘッダの情報に基づき、1回目のDMA転送に係るデータブロック情報を生成する。このデータブロック情報には、1回目のDMA転送に係る、データブロックのサイズ、データブロックのライト先となるメインメモリのアドレス(「ライト先メモリアドレス」という)、データブロックのリード先となる受信バッファ番号(ここでは「1」となる)が含まれる。
指示部は、実行部に対して、この1回目のDMA転送に係るデータブロック情報を通知する(S502)。そして、指示部は、実行部に対して、S502で通知したデータブロック情報に基づくDMA転送を指示する(S503)。
S503のDMA転送の指示を受けた実行部は、DMAエンジンを用いて、S502で通知されたデータブロック情報に基づくDMA転送を実行する(S504)。つまり、DMAエンジンは、受信バッファ#1から、データブロックのサイズ分のデータブロックをリードし、そのデータブロックをメインメモリのライト先メモリアドレスへライトする。このDMA転送の完了後、実行部は、指示部に対して、DMA転送完了を通知する(S505)。
DMA転送完了の通知を受けた指示部は、フレームに格納されている受信データのサイズから、S504によりDMA転送したデータブロックのサイズ(S502で通知したデータブロックのサイズ)を減算し、残りのデータのサイズを算出する。そして、指示部は、「残りのデータのサイズ≦0」であるか否かを判定する(S506)。つまり、DMA転送すべきデータブロックが残っているか否かを判定する。
「残りのデータのサイズ>0」である場合(S506:NO)、指示部は、実行部に対して、2回目のDMA転送に係るデータブロック情報を通知する(S507)。このデータブロック情報には、2回目のDMA転送に係る、データブロックのサイズ、ライト先メモリアドレス、及び受信バッファ番号「1」が含まれる。
そして、指示部は、実行部に対して、S507で通知したデータブロック情報に基づくDMA転送を指示する(S508)。
S508のDMA転送の指示を受けた実行部は、DMAエンジンを用いて、S507で通知されたデータブロック情報に基づくDMA転送を実行する(S509)。このDMA転送の完了後、実行部は、指示部に対して、DMA転送完了を通知する(S510)。
DMA転送完了の通知を受けた指示部は、上記の残りの受信データのサイズから、S509によりDMA転送したデータブロックのサイズ(S507で通知したデータブロックのサイズ)を減算し、新たに残りのデータのサイズを算出する。そして、指示部は、S506と同様、「残りのデータのサイズ≦0」であるか否かを判定する(S511)。
「残りのデータのサイズ≦0」である場合(S511:YES)、指示部は、実行部に対して、受信バッファ#1の解放を指示する(S512)。受信バッファ#1の解放指示を受けた実行部は、受信バッファ#1を解放する(S513)。
このようにして一比較例に係るHBAは、受信したフレームから受信データを抽出し、メインメモリに格納する。
図2に示す一比較例に係るHBAの場合、指示部は、DMA転送を指示した後(S405)、DMA転送完了の通知を受けてから(S407)、次のDMA転送を指示する(S410)。すなわち、HBAは、1つのDMA転送が完了するまで、次のDMA転送を実行することができない。したがって、フレームに格納すべき送信データを1回のDMA転送で送信バッファへ転送できない場合(つまり、複数回のDMA転送が必要な場合)、指示部において待ち時間が発生してしまう。これは、HBAの性能低下につながる。
図3に示す一比較例に係るHBAの場合も同様に、指示部は、DMA転送を指示した後(S503)、DMA転送完了の通知を受けてから(S505)、次のDMA転送を指示する(S508)。すなわち、HBAは、1つのDMA転送が完了するまで、次のDMA転送を実行することができない。したがって、フレームから抽出すべき受信データを1回のDMA転送でメインメモリへ転送できない場合(つまり、複数回のDMA転送が必要な場合)、指示部において待ち時間が発生してしまう。これも、HBAの性能低下につながる。
以下、このような課題を解決するHBA106の実施例について、図面を参照しながら説明する。
HBA106は、送信バッファ管理テーブル300と、受信バッファ管理テーブル320と、送信データ管理テーブル340と、受信データ管理テーブル360とを有する。これらのテーブルは、記憶デバイス108に保持されてもよいし、LSI104のレジスタとして保持されてもよい。HBA106は、記憶デバイス108に、複数の送信バッファ109及び複数の受信バッファ110を有する。
図4は、送信バッファ管理テーブル300の構成例を示す。
送信バッファ管理テーブル300は、送信バッファ109に関する情報を有する送信バッファ情報を、レコードとして管理する。送信バッファ管理テーブル300は、送信バッファ番号のフィールド301と、最終指示フラグのフィールド302と、DMAステータスのフィールド303と、を有する。
送信バッファ番号のフィールド301には、送信バッファ109を識別する番号が格納される。
最終指示フラグのフィールド302には、送信バッファ番号に係る送信バッファ109に対する最終のDMA転送の指示を受けたか否かを示すフラグが格納される。例えば、最終のDMA転送の指示を受ける前のフラグを「未」とし、最終のDMA転送の指示を受けた後のフラグを「済」とする。
DMAステータスのフィールド303は、DMAチャネル毎のフィールド304を有する。DMAチャネルのフィールド304には、そのDMAチャネルを用いて実行されるDMA転送の進捗状況に関する情報が格納される。例えば、DMAチャネルのフィールド304には、そのDMAチャネルを用いて実行されるDMA転送が、複数回のDMA転送の内の何番目に該当するのかを示す番号、及びそのDMA転送が完了したか否かを示すフラグが格納される。例えば、DMA転送が完了する前のフラグを「未」とし、DMA転送が完了した後のフラグを「済」とする。
送信バッファ管理テーブル300におけるレコード310aは、送信バッファ#0に対するDMA転送は、最終のDMA転送指示を受けた後の状態であり(フィールド302)、DMAチャネル「0」(「DMA#0」と表現する)を用いた1番目のDMA転送(「DMA#0転送」と表現する)及び2番目のDMA#1転送の何れも完了していることを表す(フィールド304)。
送信バッファ管理テーブル300におけるレコード310bは、送信バッファ#1に対するDMA転送は、最終のDMA転送指示を受ける前の状態であり(フィールド302参照)、1番目のDMA#1転送は完了しているが、2番目のDMA#2転送及び3番目のDMA#3転送は何れも未完了であることを表す(フィールド304)。
すなわち、送信バッファ管理テーブル300は、複数の送信バッファの各々について、その送信バッファに対するDMA転送に使用されている複数のDMAチャネルと、その使用されている複数のDMAチャネルのそれぞれにおけるDMA転送の進捗状況と、を管理するための情報を有する。さらに、送信バッファ管理テーブル300は、その送信バッファに対する最終のDMA転送指示を実行部202が受けたか否かを管理するための情報を有してもよい。
図5は、受信バッファ管理テーブル320の構成例を示す。
受信バッファ管理テーブル320は、受信バッファ110に関する情報を有する受信バッファ情報を、レコードとして管理する。受信バッファ管理テーブル320は、受信バッファ番号のフィールド321と、最終指示フラグのフィールド322と、DMAステータスのフィールド323と、を有する。
受信バッファ番号のフィールド321には、受信バッファ110を識別する番号が格納される。
最終指示フラグのフィールド322には、受信バッファ番号に係る受信バッファ110に対する最終のDMA転送の指示を受けたか否かを示すフラグが格納される。例えば、最終のDMA転送の指示を受ける前のフラグを「未」とし、最終のDMA転送の指示を受けた後のフラグを「済」とする。
DMAステータスのフィールド323及びDMAチャネルのフィールド324には、図4におけるDMAステータスのフィールド303及びDMAチャネルのフィールド304と同様の情報が格納される。
受信バッファ管理テーブル320におけるレコード330aは、受信バッファ#1に対するDMA転送は、最終のDMA転送指示を受けた後の状態であり(フィールド322)、1番目のDMA#0転送及び2番目のDMA#1転送は完了しているが、3番目のDMA#2転送は未完了であることを表す(フィールド324)。
すなわち、受信バッファ管理テーブル320は、複数の受信バッファの各々について、その受信バッファからのDMA転送に使用されている複数のDMAチャネルと、その使用されている複数のDMAチャネルのそれぞれにおけるDMA転送の進捗状況と、を管理するための情報を有する。さらに、受信バッファ管理テーブル320は、その受信バッファからの最終のDMA転送指示を実行部202が受けたか否かを管理するための情報を有してもよい。
図6は、送信データ管理テーブル340の構成例を示す。
送信データ管理テーブル340は、送信データに関する情報を有する送信データ情報を、レコードとして管理する。送信データ管理テーブル340は、送信データ番号のフィールド341と、データサイズのフィールド342と、メモリアドレスのフィールド343と、送信バッファ番号のフィールド344と、完了フラグのフィールド345と、フレーム送信用情報のフィールド346とを有する。
送信データ番号のフィールド341には、送信データを識別する番号が格納される。ここで、送信データは、フレームに格納されるべき全てのデータブロックの集合体を意味する。
データサイズのフィールド342には、送信データのサイズが格納される。すなわち、このデータサイズは、フレームに格納されるべき全てのデータブロックの集合体のサイズである。
メモリアドレスのフィールド343には、送信データが格納されているメインメモリ13の先頭アドレスが格納される。
送信バッファ番号のフィールド344には、送信バッファ109を識別する送信バッファ番号が格納される。この送信バッファ番号と、送信バッファ管理テーブル300の送信バッファ番号のフィールド301に格納される送信バッファ番号とは対応関係を有する。
完了フラグのフィールド345には、送信データの送信バッファ109への格納が全て完了したか否かを示す完了フラグが格納される。例えば、完了フラグが「済」の場合、送信データの送信バッファ109への格納が全て完了したことを示し、完了フラグが「未」の場合、送信データの送信バッファ109への格納が未完了であることを示す。
フレーム送信用情報のフィールド346には、送信用のフレームヘッダの生成に用いられるフレーム送信用情報が格納される。例えば、フレーム送信用情報は、SASに係るプロトコルに従う宛先ポートID及び送信元ポートIDなどを有する。
送信データ管理テーブル340におけるレコード350は、送信データ番号「S0」に対応する送信データ(「送信データS0」と表現する)は、メインメモリ13の先頭アドレス「0x00200000」から「1024Byte」の領域に格納されていることを表す(フィールド341、342、343)。そして、レコード350は、この送信データS0が、送信バッファ#0(フィールド344)に全て格納済み(フィールド345)であることを表す。また、レコード350は、この送信データS0が、フレームに格納されて宛先B(フィールド346)へ送信されることを表す。
図7は、受信データ管理テーブル360の構成例を示す。
受信データ管理テーブル360は、受信データに関する情報を有する受信データ情報を、レコードとして管理する。受信データ管理テーブル360は、受信データ番号のフィールド361と、データサイズのフィールド362と、メモリアドレスのフィールド363と、受信バッファ番号のフィールド364と、完了フラグのフィールド365と、フレーム受信用情報のフィールド366とを有する。
受信データ番号のフィールド361には、受信したフレームに格納されている受信データを識別する番号が格納される。ここで、受信データは、フレームに格納されている全てのデータブロックの集合体を意味する。
データサイズのフィールド362には、受信データのサイズが格納される。
メモリアドレスのフィールド363には、受信データの格納先となるメインメモリ13の先頭アドレスが格納される。
受信バッファ番号のフィールド364には、受信バッファ110を識別する受信バッファ番号が格納される。この受信バッファ番号は、受信バッファ管理テーブル320の受信バッファ番号のフィールド321の受信バッファ番号と対応関係を有する。
完了フラグのフィールド365には、受信データのメインメモリ13への格納が全て完了したか否かを示す完了フラグが格納される。例えば、完了フラグが「済」の場合、受信データのメインメモリ13への格納が全て完了したことを示し、完了フラグが「未」の場合、受信データのメインメモリ13への格納が未完了であることを示す。
フレーム受信用情報のフィールド366には、受信したフレームヘッダから取得したフレーム受信用情報が格納される。例えば、フレーム受信用情報は、上記のフレーム送信用情報と同様、SASに係るプロトコルに従う宛先ポートID及び送信元ポートのIDなどを有する。
受信データ管理テーブル360におけるレコード370は、受信データ番号「R0」に対応する受信データ(「受信データR0」と表現する)は、データサイズが「256Byte」であり、メインメモリ13の先頭アドレス「0x00200000」からライトされるべきものであることを表す。そして、レコード370は、この受信データR0は、送信元B(フィールド366)から受信したものであり、受信バッファ#0(フィールド364)に格納されていることを表す。そして、レコード370は、この受信データR0は、全てメインメモリ13に格納済み(フィールド365)であることを表す。
図8は、本実施例に係るHBA106からストレージ装置113へフレームを送信する処理例を表すシーケンスチャートである。以下、送信データ管理テーブル340における送信データS0を、フレームに格納して送信する処理について説明する。
指示部201は、実行部202に対して、送信バッファ109の確保を要求する(S200)。
送信バッファ109の確保要求を受けた実行部202は、未使用の送信バッファ109の1つを確保する(S201)。ここでは、実行部202は、送信バッファ#0を確保したとする。実行部202は、指示部201に対して、送信バッファ#0の確保完了を通知する(S202)。この完了通知には、確保した送信バッファ番号が含まれてよい。実行部202は、送信バッファ管理テーブル300において、送信バッファ#0のレコードにおける最終指示フラグを「未」に変更する(S203)。
送信バッファ#0の確保完了の通知を受けた指示部201は、送信データ管理テーブル340において、送信データS0に係るレコード350から、フレーム送信用情報を取得する。指示部201は、その取得したフレーム送信用情報に基づき、送信用のフレームヘッダを生成する。指示部201は、その生成した送信用のフレームヘッダを、送信バッファ#0にライトする(S204)。
指示部201は、送信データ管理テーブル340において、送信データS0に係るレコード350から、データサイズ、メモリアドレス及び送信バッファ番号を取得する。指示部201は、この取得したデータサイズ、メモリアドレス及び送信バッファ番号に基づき、1番目のDMA転送に係るデータブロック情報を生成する。指示部201は、この1番目のDMA転送に係るデータブロック情報を、実行部202へ通知する(S205)。このデータブロック情報には、1番目のDMA転送に係るデータブロックのサイズと、メインメモリ13におけるそのデータブロックのリード先の先頭アドレスと、そのデータブロックの転送先の送信バッファ番号とが含まれてよい。
指示部201は、初回、フレームに格納する送信データのデータサイズ(フィールド342)から、S205で通知したデータブロックのサイズを減算し、残りのデータのサイズを算出する。指示部201は、「残りのデータのサイズ≦0」であるか否かを判定する(S206)。つまり、指示部201は、この1番目のDMA転送の指示が最終となるか否かを判定する。
「残りのデータのサイズ>0」である場合、すなわち、このDMA転送指示が最終でない場合(S206:NO)、指示部201は、実行部202に対して、このDMA転送の指示が最終で或る旨を示す最終フラグを含めずにDMA転送を指示する(S207)。この後もDMA転送指示が続くからである。なお、このDMA転送指示は、S205で通知した1番目のデータブロック情報に対応するものである。
指示部201は、2番目のDMA転送に係るデータブロック情報を生成し、実行部202へ通知する(S208)。このデータブロック情報には、2番目のDMA転送に係るデータブロックのサイズと、メインメモリ13におけるそのデータブロックのリード先の先頭アドレスと、そのデータブロックの転送先の送信バッファ番号とが含まれてよい。
指示部201は、S206において算出した残りのデータのサイズから、S208で通知したデータブロックのサイズを減算し、新たに残りのデータのサイズを算出する。指示部201は、S206と同様、「残りのデータのサイズ≦0」であるか否かを判定する(S209)。つまり、この2番目のDMA転送の指示が最終となるか否かを判定する。
「残りのデータのサイズ≦0」である場合、すなわち、このDMA転送指示が最終である場合(S209:YES)、指示部201は、実行部202に対して、最終フラグを含めてDMA転送を指示する(S210)。このDMA転送指示が最終となるからである。なお、このDMA転送指示は、S208で通知した2番目のデータブロック情報に対応するものである。
一方、実行部202は、S207で1番目のDMA転送指示を受けると、S205で通知されたデータブロック情報に基づき、送信バッファ管理テーブル300から、送信バッファ#0のレコード310aを見つける。実行部202は、未使用のDMAチャネルを確保する。例えば、実行部202は、DMA#0を確保する。実行部202は、送信バッファ#0のレコード310aのDMA#0を「1(未)」に変更する。
実行部202は、DMA#0を用いて、S205で通知されたデータブロック情報に基づくDMA転送を実行する(S230)。すなわち、DMAエンジンは、メインメモリ13の1番目のデータブロックを、DMA#0を通じて、送信バッファ#0へ転送する。このDMA#0を用いたDMA転送を「DMA#0転送」と表現する。
DMA#0転送完了後、実行部202は、送信バッファ管理テーブル300において、送信バッファ#0のレコード310aのDMA#0を「1(済)」に変更する。
実行部202は、送信バッファ管理テーブル300の送信バッファ#0のレコード310aにおいて、最終指示フラグが「済」であり、且つ、使用されているDMAチャネル(DMA#0)の何れもが「済」であるか否かを判定する(S231)。
例えば、最終指示フラグが「未」の場合(S231:NO)、実行部202は、指示部201に対して、フレームに格納すべき全てのデータブロックのDMA転送が完了した旨を示す全完了フラグを含めずにDMA転送完了を通知する(S232)。なお、このDMA転送完了通知は、S207の1番目のDMA転送指示に対する完了を表すものである。
上記S230〜S232の処理と並行して、実行部202は、以下のS241〜S244の処理を行う。
実行部202は、S210で2番目のDMA転送指示を受けると、このDMA転送指示に最終フラグが含まれていることを認識する。そこで、実行部202は、送信バッファ管理テーブル300において、送信バッファ#0のレコード310aの最終指示フラグを「済」に変更する(S241)。
実行部202は、S208で通知されたデータブロック情報に基づき、送信バッファ管理テーブル300から、送信バッファ#0のレコード310aを見つける。実行部202は、未使用のDMAチャネルを確保する。ここで、DMA#0は使用済みであるので、実行部202は、例えば、DMA#1を確保する。実行部202は、送信バッファ管理テーブル300において、送信バッファ#0のレコード310aのDMA#1を「2(未)」に変更する。
実行部202は、DMA#1を用いて、S208で通知されたデータブロック情報に基づくDMA転送を実行する(S242)。すなわち、DMAエンジンは、メインメモリ13の2番目のデータブロックを、DMA#1を通じて、送信バッファ#0へ転送する。このDMA#1を用いたDMA転送を「DMA#1転送」と表現する。
DMA#1転送完了後、実行部202は、送信バッファ管理テーブル300において、送信バッファ#0のレコード310aのDMA#1を「2(済)」に変更する。
実行部202は、送信バッファ管理テーブル300の送信バッファ#0のレコード310aにおいて、最終指示フラグが「済」であり、且つ、使用されているDMAチャネル(DMA#0及びDMA#1)の何れもが「済」であるか否かを判定する(S243)。
例えば、最終指示フラグ、DMA#0及びDMA#1の何れもが「済」である場合(S243:YES)、実行部202は、指示部201に対して、全完了フラグを含めてDMA転送完了を通知する(S244)。なお、このDMA転送完了通知は、S210のDMA転送指示に対する完了を表すものである。
指示部201は、全完了フラグを含むDMA転送完了の通知を受けると、送信データ管理テーブル340から、送信データS0のレコード350を見つける。そして、指示部201は、そのレコード350の完了フラグを「済」に変更する。
指示部201は、実行部202に対して、送信バッファ#0に格納されているフレームの送信を指示する(S250)。フレームの送信指示を受けた実行部202は、送信バッファ#0に格納されたフレームヘッダ及びデータブロックを含むフレームを、ストレージ装置113へ送信する(S251)。
以上の処理によれば、HBA106は、複数のデータブロックを並行して、メインメモリ13から送信バッファ109へDMA転送することができる。すなわち、図2に示す一比較例に係るHBAと比較して、図8に示す本実施例に係るHBAは、DMA転送を指示した後に、そのDMA転送指示に対応するDMA転送完了通知を待つことなく、次のDMA転送を指示することができる。よって、図2に示す一比較例に係るHBAと比較して、図8に示す本実施例に係るHBA106は、短時間でDMA転送を完了し、フレームを送信することができる。
なお、図8の処理において、S205の通知処理とS206の判定処理との実行順序を入れ替えてもよい。S208とS209についても同様である。また、指示部201は、最終フラグを最終のDMA転送指示(S210)とは別に通知してもよい。また、指示部201は、最終のデータブロック情報の通知(S208)に最終フラグを含めてもよい。また、実行部202は、全完了フラグを最終のDMA転送完了通知(S244)とは別に通知してもよい。
図9は、本実施例に係るHBA106がストレージ装置113からフレームを受信する処理例を表すシーケンスチャートである。以下、受信データ管理テーブル360における受信データR0を、フレームから抽出する処理について説明する。
実行部202は、フレームを受信すると、フレームを受信した旨及びそのフレームを格納した受信バッファ110の受信バッファ番号を、指示部201へ通知する(S300)。ここでは、実行部202は、受信バッファ#1にフレームを格納したとする。
実行部202は、受信バッファ管理テーブル320において、受信バッファ#1のレコード330aの最終指示フラグを「未」に変更する(S301)。
フレームの受信通知を受けた指示部201は、受信バッファ#1からフレームヘッダをリードする(S302)。フレームヘッダには、例えば、受信データのデータサイズ、フレームの送信元ポートID及び宛先ポートIDなどが含まれている。指示部201は、受信バッファ#1の受信データの格納先となるメインメモリ13のアドレスを決定する。そして、指示部201は、これらの情報に基づき、受信データ管理テーブル360に、受信データR0のレコード370を登録する。
指示部201は、受信データ管理テーブル360において、受信データR0に係るレコード370から、データサイズ、メモリアドレス及び受信バッファ番号を取得する。指示部201は、この取得したデータサイズ及びメモリアドレスに基づき、1番目のDMA転送に係るデータブロック情報を生成する。指示部201は、この1番目のDMA転送に係るデータブロック情報を、実行部202へ通知する(S303)。このデータブロック情報には、1番目のデータブロックのサイズと、メインメモリ13におけるデータブロックのライト先の先頭アドレスと、そのデータブロックの転送元の受信バッファ番号とが含まれてよい。
指示部201は、初回、フレームに格納されている受信データのデータサイズ(フィールド362)から、S303で通知したデータブロックのサイズを減算し、残りのデータのサイズを算出する。指示部201は、「残りのデータのサイズ≦0」であるか否かを判定する(S304)。つまり、この1番目のDMA転送の指示が最終となるか否かを判定する。
「残りのデータのサイズ>0」である場合、すなわち、このDMA転送の指示が最終でない場合(S304:NO)、指示部201は、実行部202に対して、最終フラグを含めずにDMA転送を指示する(S305)。なお、このDMA転送指示は、S303で通知した1番目のデータブロック情報に対応するものである。
指示部201は、2番目のDMA転送に係るデータブロック情報を、実行部202へ通知する(S306)。このデータブロック情報には、2番目のDMA転送に係るデータブロックのサイズと、メインメモリ13におけるそのデータブロックのライト先の先頭アドレスと、そのデータブロックの転送先の送信バッファ番号とが含まれてよい。
指示部201は、S304において算出した残りのデータのサイズから、S306で通知したデータブロックのサイズを減算し、新たに残りのデータのサイズを算出する。指示部201は、S304と同様、「残りのデータのサイズ≦0」であるか否かを判定する(S307)。つまり、この2番目のDMA転送の指示が最終となるか否かを判定する。
「残りのデータのサイズ≦0」である場合、すなわち、このDMA転送指示が最終である場合(S307:YES)、指示部201は、実行部202に対して、最終フラグを含めてDMA転送を指示する(S308)。なお、このDMA転送指示は、S306で通知した2番目のデータブロック情報に対応するものである。
一方、実行部202は、S305で1番目のDMA転送指示を受けると、S303で通知されたデータブロック情報に基づき、受信バッファ管理テーブル320から、受信バッファ#1のレコード330aを見つける。実行部202は、未使用のDMAチャネルを確保する。例えば、実行部202は、DMA#0を確保する。実行部202は、受信バッファ#1のレコード330aのDMA#0を「1(未)」に変更する。
実行部202は、DMA#0を用いて、S303で通知されたデータブロック情報に基づくDMA#0転送を実行する(S330)。すなわち、DMAエンジンは、受信バッファ#1の1番目のデータブロックを、DMA#0を通じて、メインメモリ13へ転送する。
DMA#0転送完了後、実行部202は、受信バッファ管理テーブル320において、受信バッファ#1のレコード330aを「1(済)」に変更する。
実行部202は、受信バッファ管理テーブル320の受信バッファ#1のレコード330aにおいて、最終指示フラグが「済」であり、且つ、使用されているDMAチャネル(DMA#0)の何れもが「済」であるか否かを判定する(S331)。
例えば、最終指示フラグが「未」の場合(S331:NO)、実行部202は、指示部201に対して、全完了フラグを含めずにDMA転送完了を通知する(S332)。なお、このDMA転送完了通知は、S305の1番目のDMA転送指示に対する完了を表すものである。
上記S330〜S332の処理と並行して、実行部202は、以下のS341〜S344の処理を行う。
実行部202は、S308で2番目のDMA転送指示を受けると、このDMA転送指示に最終フラグが含まれていることを認識する。そこで、実行部202は、受信バッファ管理テーブル320において、受信バッファ#1のレコード330aの最終指示フラグを「済」に変更する(S341)。
実行部202は、S306で通知されたデータブロック情報に基づき、受信バッファ管理テーブル320から、受信バッファ#1のレコード330aを見つける。実行部202は、未使用のDMAチャネルを確保する。ここで、DMA#0は使用済みであるので、実行部202は、例えば、DMA#1を確保する。実行部202は、受信バッファ管理テーブル320において、受信バッファ#1のレコード330aのDMA#1を「2(未)」に変更する。
実行部202は、DMA#1を用いて、S306で通知されたデータブロック情報に基づくDMA#1転送を実行する(S342)。すなわち、DMAエンジンは、受信バッファ#1の2番目のデータブロックを、DMA#1を通じて、メインメモリ13へ転送する。
DMA#1転送完了後、実行部202は、受信バッファ管理テーブル320において、受信バッファ#1のレコード330aのDMA#1を「2(済)」に変更する。
実行部202は、受信バッファ管理テーブル320の受信バッファ#1のレコード330aにおいて、最終指示フラグが「済」であり、且つ、使用されているDMAチャネル(DMA#0及びDMA#1)の何れもが「済」であるか否かを判定する(S343)。
例えば、最終指示フラグ、DMA#0及びDMA#1の何れもが「済」である場合(S343:YES)、実行部202は、指示部201に対して、全完了フラグを含めてDMA転送完了を通知する(S344)。なお、このDMA転送完了通知は、S308のDMA転送指示に対する完了を表すものである。
指示部201は、全完了フラグを含むDMA転送完了の通知を受けると、受信データ管理テーブル360から、受信データR0のレコード370を見つける。そして、指示部201は、そのレコード370の完了フラグを「済」に変更する。
指示部201は、実行部202に対して、受信バッファ#1の解放を指示する(S350)。受信バッファ#1の解放指示を受けた実行部202は、受信バッファ#1を解放する(S351)。
以上の処理によれば、HBA106は、複数のデータブロックを並行して、受信バッファ110からメインメモリ13へDMA転送することができる。すなわち、図3に示す一比較例に係るHBAと比較して、図9に示す本実施例に係るHBA106は、DMA転送を指示した後に、そのDMA転送指示に対応するDMA転送完了通知を待つことなく、次のDMA転送を指示することができる。よって、図3に示す一比較例に係るHBAと比較して、図9に示す本実施例に係るHBA106は、短時間でDMA転送を完了し、受信バッファ110を解放することができる。
なお、図9の処理において、S303の通知処理とS204の判定処理との実行順序を入れ替えてもよい。S306とS307についても同様である。また、指示部201は、最終フラグを最終のDMA転送指示(S308)とは別に通知してもよい。また、指示部201は、最終のデータブロック情報の通知(S306)に最終フラグを含めてもよい。また、実行部202は、全完了フラグを最終のDMA転送完了通知(S344)とは別に通知してもよい。
上述した実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
例えば、HBA106は、計算機10を、SCSI(Small Computer System Interface)、SATA(Serial ATA)、IDE(Integrated Drive Electronics)、Ethernet(登録商標)、FireWire、又はUSB(Universal Serial Bus)などに接続するためのデバイスであってもよい。
10:計算機 11:CPU 13:メインメモリ 105:PCI Expressバス 112:ホストブリッジ 106:HBA(Host Bus Adapter) 104:LSI 107:FW(FirmWare) 108:記憶デバイス 109:送信バッファ 110:受信バッファ 113:ストレージ装置 121:SAS(Serial Attached SCSI)



Claims (9)

  1. メインメモリに格納されているデータを複数のデータブロックに分割してバッファメモリへ転送する場合、又は、バッファメモリに格納されているデータを複数のデータブロックに分割してメインメモリへ転送する場合、前記複数のデータブロックの各々のデータブロックについての転送を指示する指示部と、
    前記指示部からの転送指示に係る前記データブロックについての転送を実行し、転送完了後、前記データブロックの転送が完了した旨を示す完了情報を前記指示部へ通知する実行部と、を有し、
    前記実行部は、前記複数のデータブロックの転送の進捗状況を管理する管理情報に基づいて、前記複数のデータブロックの全ての転送が完了したか否かを判定し、全ての転送が完了したと判定した場合、前記複数のデータブロックの全ての転送が完了した旨を示す全完了情報を前記指示部へ通知する、
    を有する入出力装置。
  2. 前記指示部は、前記複数のデータブロックの内の第1のデータブロックに係る転送指示に対応する前記完了情報の通知を待つことなく、前記複数のデータブロックの内の第2のデータブロックについての転送を指示する
    請求項1に記載の入出力装置。
  3. 前記指示部は、前記複数のデータブロックの内の最終のデータブロックについての転送を指示するにあたり、その指示に最終である旨を表す最終情報を含め、
    前記管理情報は、前記実行部が指示を受けた前記複数のデータブロックの各々の転送が完了したか否か、及び、前記最終情報を受けたか否かを管理するものであり、
    前記実行部は、前記管理情報において、転送指示された全ての転送が完了しており、且つ、前記最終情報を受けている場合、全ての転送が完了したと判定する
    請求項2に記載の入出力装置。
  4. 前記指示部は、前記メインメモリに格納されているデータを複数のデータブロックに分割して前記バッファメモリへ転送する場合、前記全完了情報の通知を受けた後、前記バッファメモリへ転送された前記複数のデータブロックから構成されるデータについての送信を指示する
    請求項2に記載の入出力装置。
  5. 前記指示部は、前記バッファメモリに格納されているデータを複数のデータブロックに分割して前記メインメモリへ転送する場合、前記全完了情報の通知を受けた後、前記バッファメモリについての解放を指示する
    請求項2に記載の入出力装置。
  6. 前記全完了情報は、前記完了情報に含まれて前記指示部へ通知される
    請求項2に記載の入出力装置。
  7. 複数のバッファメモリを有する場合、前記完了情報は、1のバッファメモリに係る全てのデータブロックの転送が完了した旨を示すものである
    請求項2に記載の入出力装置。
  8. 前記メインメモリから前記バッファメモリへ、又は、前記バッファメモリから前記メインメモリへのデータブロックの転送は、DMA(Direct Memory Access)転送であり、
    前記第1のデータブロックと前記第2のデータブロックとは、異なるDMAチャネルを用いて転送される
    請求項2に記載の入出力装置。
  9. メインメモリに格納されているデータを複数のデータブロックに分割してバッファメモリへ転送する場合、又は、バッファメモリに格納されているデータを複数のデータブロックに分割してメインメモリへ転送する場合における入出力方法であって、
    前記複数のデータブロックの内の1のデータブロックの転送指示を受け、前記1のデータブロックについての転送を実行し、
    転送完了後、前記1のデータブロックの転送が完了した旨を示す完了情報を前記転送指示の指示元へ通知するにあたり、前記複数のデータブロックの転送の進捗状況を管理する管理情報に基づいて前記複数のデータブロックの全ての転送が完了したか否かを判定し、全ての転送が完了したと判定した場合、前記複数のデータブロックの全ての転送が完了した旨を示す全完了情報を前記転送指示の指示元へ通知する
    入出力方法。


JP2016512526A 2014-04-09 2014-04-09 入出力装置及び方法 Pending JPWO2015155850A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/060273 WO2015155850A1 (ja) 2014-04-09 2014-04-09 入出力装置及び方法

Publications (1)

Publication Number Publication Date
JPWO2015155850A1 true JPWO2015155850A1 (ja) 2017-04-13

Family

ID=54287452

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016512526A Pending JPWO2015155850A1 (ja) 2014-04-09 2014-04-09 入出力装置及び方法

Country Status (3)

Country Link
US (1) US10013372B2 (ja)
JP (1) JPWO2015155850A1 (ja)
WO (1) WO2015155850A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5547701B2 (ja) * 2011-09-21 2014-07-16 日立オートモティブシステムズ株式会社 自動車用電子制御装置
US11495195B2 (en) * 2020-07-31 2022-11-08 Alphascale Technologies, Inc. Apparatus and method for data transfer in display images unto LED panels
US11620968B2 (en) 2020-07-31 2023-04-04 Alphascale Technologies, Inc. Apparatus and method for displaying images unto LED panels

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004287654A (ja) * 2003-03-20 2004-10-14 Ricoh Co Ltd Dma転送装置
JP2006313478A (ja) * 2005-05-09 2006-11-16 Toshiba Corp データ転送装置及び半導体集積回路装置
JP2007233522A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd Dmaデータ転送装置及びdmaデータ転送方法
JP2008146546A (ja) * 2006-12-13 2008-06-26 Fujitsu Ltd 監視装置、半導体集積回路、および監視方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2539058B2 (ja) * 1989-03-30 1996-10-02 三菱電機株式会社 デ―タプロセッサ
US5276836A (en) * 1991-01-10 1994-01-04 Hitachi, Ltd. Data processing device with common memory connecting mechanism
JP3263362B2 (ja) * 1998-06-05 2002-03-04 三菱電機株式会社 データ処理装置
JP2004227501A (ja) * 2003-01-27 2004-08-12 Yamaha Corp データ転送制御装置および方法
JP2009048298A (ja) * 2007-08-15 2009-03-05 Sony Corp 情報処理装置、情報処理方法、当該情報処理方法を実行するためのプログラム及び当該プログラムを記録した媒体、並びにdmaコントローラ、dma転送方法、当該dma転送方法を実行するためのプログラム及び当該プログラムを記録した媒体
JP5637873B2 (ja) 2011-01-19 2014-12-10 株式会社日立製作所 計算機システムおよびpciカードのhba識別子引き継ぎ方式

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004287654A (ja) * 2003-03-20 2004-10-14 Ricoh Co Ltd Dma転送装置
JP2006313478A (ja) * 2005-05-09 2006-11-16 Toshiba Corp データ転送装置及び半導体集積回路装置
JP2007233522A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd Dmaデータ転送装置及びdmaデータ転送方法
JP2008146546A (ja) * 2006-12-13 2008-06-26 Fujitsu Ltd 監視装置、半導体集積回路、および監視方法

Also Published As

Publication number Publication date
WO2015155850A1 (ja) 2015-10-15
US20170097911A1 (en) 2017-04-06
US10013372B2 (en) 2018-07-03

Similar Documents

Publication Publication Date Title
US9557922B2 (en) System and method for peer-to-peer PCIe storage transfers
WO2020000483A1 (zh) 数据处理的方法和存储系统
CN114443529B (zh) 内存直接访问架构、系统、方法、电子设备和介质
CN111427808A (zh) 用于管理存储设备和主机单元之间的通信的系统和方法
WO2017000822A1 (zh) 一种直接内存访问的传输控制方法及装置
EP3159802B1 (en) Sharing method and device for pcie i/o device and interconnection system
WO2020000482A1 (zh) 一种基于NVMe的数据读取方法、装置及系统
WO2015155850A1 (ja) 入出力装置及び方法
US10097658B2 (en) Traffic control of packet transfer
JP2016045899A (ja) データ転送制御装置
JP2014179066A (ja) ストレージ制御装置、ストレージシステム、およびストレージ制御方法
WO2017072868A1 (ja) ストレージ装置
JP2017156924A (ja) 情報処理装置、データ転送装置、データ転送装置の制御方法、及びプログラム
CN105022707B (zh) 接口单元装置
JP5908416B2 (ja) インターフェース制御装置、データ記憶装置及びインターフェース制御方法
JP2014167818A (ja) データ転送装置およびデータ転送方法
JP5847013B2 (ja) 計算機及び計算機における入出力制御方法
JP5101195B2 (ja) インタフェースコントローラ
JP2014048810A (ja) ホストシステム、ストレージデバイス、および通信方法
US9134920B2 (en) Storage apparatus and command control method
TW201738730A (zh) 資料儲存裝置、其控制單元及其任務排序方法
JPWO2015155997A1 (ja) 設定装置、制御装置、設定方法及びネットワークスイッチ
TWI452471B (zh) 用於通用序列匯流排裝置的全雙工控制器與其方法
JP6384359B2 (ja) 分散共有メモリを有する情報処理装置、方法、および、プログラム
US20190012282A1 (en) Information processing system, information processing device, and control method of information processing system

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170704

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170829

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171212