JP2013235464A - 計算機及び計算機における入出力制御方法 - Google Patents

計算機及び計算機における入出力制御方法 Download PDF

Info

Publication number
JP2013235464A
JP2013235464A JP2012108104A JP2012108104A JP2013235464A JP 2013235464 A JP2013235464 A JP 2013235464A JP 2012108104 A JP2012108104 A JP 2012108104A JP 2012108104 A JP2012108104 A JP 2012108104A JP 2013235464 A JP2013235464 A JP 2013235464A
Authority
JP
Japan
Prior art keywords
queue
hba
data
dequeued
driver
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.)
Granted
Application number
JP2012108104A
Other languages
English (en)
Other versions
JP5847013B2 (ja
Inventor
Takashi Maruyama
貴史 丸山
Megumi Hasegawa
恵 長谷川
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
Priority to JP2012108104A priority Critical patent/JP5847013B2/ja
Priority to EP13165911.2A priority patent/EP2662777A3/en
Priority to US13/875,420 priority patent/US8799530B2/en
Publication of JP2013235464A publication Critical patent/JP2013235464A/ja
Application granted granted Critical
Publication of JP5847013B2 publication Critical patent/JP5847013B2/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/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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3802Harddisk connected to a computer port

Abstract

【課題】 HBAによりデータの送受信処理を行う際、HBA−F/Wは、PCIeバスを通じて計算機上の主記憶装置に対してアクセスする。しかし、アクセス速度は、HBA内部で行われる処理速度やHBAドライバから主記憶装置へのアクセスする速度と比較して、非常に遅い。ゆえに、HBAのデータの送受信処理では、PCIeバス自体がボトルネックとなる。
【解決手段】 I/Oキューへデータのエンキュー及びデキューの処理を行うためのキュー番号を、HBAドライバは主記憶装置で管理し、HBA−F/WはHBA内部の記憶領域で管理する。また、主記憶装置上に有する、HBA上の記憶領域がマッピングされたMMIO領域を利用して、HBAドライバがHBA−F/WにI/Oキューのエンキュー済みキュー番号もしくはデキュー済みキュー番号を通知することで、PCIeバスを経由するアクセス回数を削減する。
【選択図】 図1

Description

本発明は、I/O装置との間でデータの送受信を制御するHBAを備える計算機に関する。
近年、計算機システム上で処理されるデータ量は増加の一途をたどっており、膨大なデータを高速に処理することが、必要となっている。それに伴い、計算機とI/O装置との間の通信速度のさらなる高速化が、必要とされている。また、I/O装置とのデータ送受信を制御する計算機の高速化も、必要である。
オープンシステムにおける計算機では、計算機内部のCPUや主記憶装置との接続に、PCI−SIGにて策定されたPeripheral Compornent Interconnect(PCI)バスを使用するHost Bus Adapter(HBA)が広く用いられている。さらに、PCIバスに代わり、より高速化されたPCI Express(R)バス(PCIeバス)を使用するHBAも広く用いられている。
特開2008−102928号公報
HBAがI/O装置との間でデータの送受信を行う際、HBAは、PCIeバスを通って計算機上の主記憶装置に対してアクセスを行う必要がある。しかし、PCIeバスを経由したアクセスは、HBA上で動作するファームウェア(HBA−F/W)のHBA内の記憶領域へのアクセスやHBAドライバの主記憶装置へのアクセスと比較して、非常に低速である。ゆえに、PCIeバスに接続されたHBAがデータ送受信処理を行う際、PCIeバスへのアクセスが、性能を低下させる要因の1つとなる。
まず、従来の計算機における入出力制御方法について図6を用いて説明し、図7、図8を用いて図6の計算機で発生する課題を説明する。
図6は、従来の計算機1110における入出力制御方法の一例を示している。図6を用いて、I/O装置1113から送信されたデータをHBA1106が受信した場合に、アプリケーション1101へ受信データを渡す処理について、説明する。
OS(オペレーティングシステム)1100上では、HBA1106の制御を行うHBAドライバ1102が動作する。HBA1106では、HBA1106の制御、I/O装置1113とのデータ送受信制御や主記憶装置1103へのアクセス制御を行うHBA−F/W1107が動作している。HBA1106には、記憶領域1108も搭載されている。
HBAドライバ1102とHBA−F/W1107とは、主記憶装置1103上に存在するI/O応答キュー1114を使用して、I/O装置1103から受信したデータを、HBAから主記憶装置1103上へ転送する。I/O応答キュー1114は、受信データに1つのエントリが割当てられ、同時に複数データ受信を可能とするためにI/O応答キュー1114は複数のエントリで構成される。その複数のエントリで構成されるI/O応答キュー1114のエンキュー位置は、R_In_Queue#1121で示し、デキュー位置はR_Out_Queue#1122で示す。
また、HBAドライバ1102とHBA−F/W1107とは、主記憶装置1103上に存在するI/O起動キュー1115を使用して、主記憶装置1103から送信するデータを、HBAからI/O装置1113へ転送する。I/O起動キュー1115は、送信データに1つのエントリが割当てられ、同時に複数データの送信を可能とするためにI/O起動キュー1115は複数のエントリで構成される。その複数のエントリで構成されるI/O起動キュー1115のエンキュー位置は、S_In_Queue#1123で示し、デキュー位置はS_Out_Queue#1124で示す。
エンキュー、デキューは、先頭エントリから順番に実行する。最終エントリまでのエンキュー、デキューが完了した時には、先頭エントリからエンキュー、デキューを実行する。
さて、HBA1106がI/O装置1113から送信されたデータを受信すると、HBA−F/W1107は、PCIeバス1105を通じて主記憶装置1103にアクセスし、前記R_In_Queue#1121及び前記R_Out_Queue#1122を読込み、I/O応答キュー1114のエンキュー位置を確認する。その後、HBA−F/W1107は、PCIeバス1105を通して主記憶装置1103にアクセスし、確認したI/O応答キュー1114が示すエントリへデータをエンキューし、更にPCIeバス1105を通して主記憶装置1103にアクセスし、前記R_In_Queue#1121を次のエントリを示す値に更新する。
その後、HBAドライバ1102は、HBA−F/W1107からデータをエンキューしたことを通知されると、主記憶装置1103にアクセスし、前記R_In_Queue#1121及び前記R_Out_Queue#1122を読み込んで、I/O応答キュー1114からデキューすべきデータの格納場所をチェックする。そして、HBAドライバ1102は、チェックした格納場所からデキューを行い、前記R_Out_Queue#1122を次のエントリを示す値に更新する。
HBAドライバ1102が、デキューしたデータをアプリケーション1101に渡すことで、I/O装置1113から受信したデータの処理が完了する。
また、HBAドライバ1102がOS1100からデータの送信要求を受けると、主記憶装置1103にアクセスし、前記S_In_Queue#1123及び前記S_Out_Queue#1124を読込み、I/O起動キュー1115のエンキュー位置を確認する。その後、HBAドライバ1102は、主記憶装置1103にアクセスし、確認したI/O起動キュー1115が示すエントリへデータをエンキューし、更に主記憶装置1103にアクセスし、前記S_In_Queue#1123を次のエントリを示す値に更新する。
その後、HBA−F/W1107は、HBAドライバ1102からデータをエンキューしたことを通知されると、PCIeバス1105を通して主記憶装置1103にアクセスし、前記S_In_Queue#1123及び前記S_Out_Queue#1124を読み込んで、I/O起動キュー1115からデキューすべきデータの格納場所をチェックする。そして、HBA−F/W1107は、PCIeバス1105を通してチェックした格納場所からデキューを行い、前記S_Out_Queue#1124を次のエントリを示す値に更新する。
HBA−F/W1107が、デキューしたデータをI/O装置1113に対して送信することで、OS1100から要求されたデータの送信処理が完了する。
図7は、従来の計算機1110において、I/O装置1113からデータを受信した際の、I/O応答キューの制御についての動作フローを示している。I/O装置1113からHBA1106がデータを受信する場合を例として、図7により、従来の計算機1110でI/O応答キューの制御を行う際に発生する課題について、説明する。
まず、HBA−F/W1107は、I/O装置1113からデータを受信したことを認識すると(500)、主記憶装置1103からR_In_Queue#1121とR_Out_Queue#1122を読み込む(501)。501の処理は、HBA−F/W1107が、PCIeバス1105を通じて、主記憶装置1103にアクセスする必要がある。
次に、HBA−F/W1107は、前記R_Out_Queue#1122と前記R_In_Queue#1121からI/O応答キュー1114のエンキュー可否をチェックし、エンキュー不可であると判断した場合、エンキュー可となるまでエンキューを保留する(502)。
502でエンキュー可と判断したら、HBA−F/W1107は、前記R_In_Queue#1121が示す主記憶装置1103のエントリに対して、受信したデータを書き込み(503)、前記R_In_Queue#1121を次のエントリを示す値に更新し、主記憶装置1103に更新したR_In_Queue#1121の値を書き込む(504)。501の処理と同様に、503及び504の処理においてもHBA−F/W1107はPCIeバス1105を通じて主記憶装置1103にアクセスする必要がある。
次に、HBA−F/W1107は、HBAドライバ1102に対してI/O応答キュー1114にエンキューした事を通知するために、割込み処理を行う(505)。
割込みを受けたHBAドライバ1102は、主記憶装置1103からHBA−F/W1107が更新したR_In_Queue#1121及び前記R_Out_Queue#1122を読み込み(506)、前記R_Out_Queue#1122が示すI/O応答キュー1114のエントリからデータを読み込む(507)。
次に、HBAドライバ1102は、前記R_Out_Queue#1122を次のエントリを示す値に更新し、主記憶装置1103に更新したR_Out_Queue#1122の値を書き込む(508)。
HBAドライバ1102は、更新したR_Out_Queue#1122の値がR_In_Queue#1121の値に等しくなるまで507及び508の処理を繰り返す(509)。
このように、従来の計算機1110では、データの受信処理を行うたび、HBA−F/W1107はI/O応答キュー1114へデータをエンキューする他に、R_In_Queue#1121とR_Out_Queue#1122の読み込み、書き込みのためにPCIeバス1105を経由して主記憶装置1103に繰り返しアクセスする必要がある。
図8は、従来の計算機1110において、HBA1106からデータを送信する際の、I/O起動キューの制御についての動作フローを示している。HBA1106からI/O装置1113へデータを送信する場合を例として、図8により、従来の計算機1110でI/O起動キューの制御を行う際に発生する課題について、説明する。
まず、HBAドライバ1102は、OS1100からデータの送信要求を受けたことを認識すると(510)、主記憶装置1103からS_In_Queue#1123とS_Out_Queue#1124を読み込む(511)。
次に、HBAドライバ1102は、前記S_Out_Queue#1124と前記S_In_Queue#1123からI/O起動キュー1115のエンキュー可否をチェックし、エンキュー不可であると判断した場合、エンキュー可となるまでエンキューを保留する(512)。
512でエンキュー可と判断したら、HBAドライバ1102は、前記S_In_Queue#1123が示す主記憶装置1103のエントリに対して、送信するデータを書き込み(513)、前記S_In_Queue#1123を次のエントリを示す値に更新し、主記憶装置1103に更新したS_In_Queue#1123の値を書き込む(514)。
次に、HBAドライバ1102は、HBA−F/W1107に対してI/O起動キュー1115にエンキューした事を通知する処理を行う(515)。
通知を受けたHBA−F/W1107は、主記憶装置1103からHBAドライバ1102が更新したS_In_Queue#1123及び前記S_Out_Queue#1124を読み込み(516)、前記S_Out_Queue#1124が示すI/O起動キュー1115のエントリからデータを読み込む(517)。516及び517の処理は、HBA−F/W1107が、PCIeバス1105を通じて、主記憶装置1103にアクセスする必要がある。
次に、HBA−F/W1107は、前記S_Out_Queue#1124を次のエントリを示す値に更新し、主記憶装置1103に更新したS_Out_Queue#1124の値を書き込む(518)。516及び517の処理と同様に、518の処理においてもHBA−F/W1107はPCIeバス1105を通じて主記憶装置1103にアクセスする必要がある。
HBA−F/W1107は、更新したS_Out_Queue#1124の値がS_In_Queue#1123の値に等しくなるまで517及び518の処理を繰り返す(519)。最後にHBA−F/W1107は、I/O装置1113へ主記憶装置1103から読み込んだデータを送信する。
このように、従来の計算機1110では、データの送信処理を行うたび、HBA−F/W1107はI/O起動キュー1115へデータをエンキューする他に、S_In_Queue#1123とS_Out_Queue#1124の読み込み、書き込みのためにPCIeバス1105を経由して主記憶装置1103に繰り返しアクセスする必要がある。
上述のPCIeバス1105を経由するアクセスを行う処理は、経由する経路等が多いため、HBA1106内部で行われHBA1106内部で完結する処理やHBAドライバ1102がホストブリッジ1112のみを介して主記憶装置1103にアクセスする処理と比較して、処理時間が長い。このため、この処理が繰り返し発生することが、従来の計算機1110の性能のボトルネックとなっており、課題である。
前記特許文献1には、「キュー・データ構造およびキュー・データ構造に関連する事前変換済みアドレスを使用して入出力装置またはエンドポイントと通信するための装置および方法を提供する」と記載されている(要約参照)。つまり本方式では、PCIバスに接続されたデバイスが、PCIバスを通じてDirect Memory Access(DMA)を行う際に必要となるアドレス変換を効率化し、DMAの実行速度を向上させることができる。しかし、PCIバスを経由するアクセス自体を削減するものではなく、依然として、PCIバスを経由するアクセスを行う処理がPCIバスに接続されたデバイスの処理性能のボトルネックとなる問題点がある。
上述の課題を解決するために、本発明に係る計算機及びその入出力方法は、CPUと、ブリッジを介してCPUに接続する主記憶部と、ブリッジに接続するPCIeバスを介してCPU及び主記憶部に接続し、I/O装置とデータの送受信を行うホストバスアダプタ(HBA)とを備える計算機における入出力制御方法であって、HBAは、HBAファームウエアと、記憶領域とを有し、CPUは、OSと、OS上で動作しHBAを制御するHBAドライバを実行し、主記憶部は、データがエンキュー又はデキューされるI/Oキュー、I/Oキューからエンキュー又はデキューされるデータのキュー番号を管理する管理キューと、HBAの記憶領域がマッピングされたMemory Mapped I/O(MMIO)領域とを有する。HBAドライバは、管理キューが更新されると、更新された管理キューの管理情報を、MMIO領域に書き込み、OSは、MMIO領域に書き込まれた管理情報を、主記憶部のMMIO領域に対応するHBAの記憶領域に書き込む。
本発明によれば、HBAとCPU及び主記憶装置の間でデータの送受信処理を行う際にMMIO領域を利用するので、従来に比べてPCIeバスを経由するアクセス回数が削減されるので、HBAで行うデータの送受信の処理性能を向上することが可能となる。
本実施例の計算機システムの構成図。 本実施例のI/O装置と計算機との間のデータ送受信の流れを示した計算機システムの構成図。 本実施例の計算機上の主記憶装置とHBA上の記憶領域との対応を示す図。 本実施例の計算機システムにおけるI/O応答キューの制御フロー。 本実施例の計算機システムにおけるI/O起動キューの制御フロー。 従来の計算機システムの構成図。 従来の計算機システムにおけるI/O応答キューの制御フロー。 従来の計算機システムにおけるI/O起動キューの制御フロー。
以下、本発明を適用した計算機システムについて、図面を用いて説明する。本実施例では、HBAを用いてデータの送受信処理を行う際のPCIeバスを経由するアクセス回数を削減する計算機の例を説明する。
PCIeバスに、HBA106を接続した計算機システムを、図2に示す。計算機110内のCPU111及び主記憶装置103は、ホストブリッジ112によりPCIeバス105を通じてHBA106と接続する。計算機110は、HBA106を介してI/O装置113と接続する。HBA106は、I/O装置113との間で使用する接続プロトコルに応じてデータを送受信する。
HBA106では、HBA106の制御、I/O装置113とのデータ送受信制御や主記憶装置103へのアクセス制御を行うファームウェア(HBA−F/W107)が動作している。
計算機110では、OS(オペレーティングシステム)100が動作しており、OS100上では、I/O装置113へデータを書き込んだりI/O装置113からデータを読み込んだりするアプリケーション101や、HBA106の制御を行うHBAドライバ102が動作している。
主記憶装置103上には、I/OキューとしてI/O起動キュー120及びI/O応答キュー114が存在する。I/O起動キュー120には、HBA106から送信するためのデータが格納される。I/O応答キュー114には、HBA106が受信したデータが格納される。
ここで、I/O装置113から送られたデータを、計算機110で受信する動作について、説明する。
まず、HBA106がデータを受信すると、HBA−F/W107は、受信したデータを、I/O応答キュー114にPCIeバス105を通してエンキューする(202)。その後、HBA−F/W107は、I/O応答キュー114をエンキューした事を、HBAドライバ102に通知する(211)。
それをトリガとして、HBAドライバ102は、I/O応答キュー114からデータをデキューし、アプリケーション101に渡す(203)。データの送受信を行う場合、以上の処理を、計算機にて実施する。
次に、計算機110からI/O装置113へ、データを送信する動作について説明する。
アプリケーション101が、生成したデータのI/O装置113への書き込みを指示する。すると、OS100は、HBAドライバ102に、I/O装置113への書き込み指示を行う。
HBAドライバ102は、HBA106にI/O装置113へのデータ転送指示を行うために、I/O起動キュー120にデータを格納(エンキュー)する(200)。その後、HBAドライバ102は、I/O起動キュー120にエンキューした事を、HBA−F/W107に通知する(210)。
それをトリガとして、HBA−F/W107は、PCIeバス105を通じてI/O起動キュー120からデータを取り出し(デキュー)、デキューしたデータをI/O装置113に対して送信する(201)。HBA106から送信するデータは、HBA106とI/O装置113の間の接続プロトコルに応じて送受信に必要な情報を付加して、I/O装置113に対し送信される。
図1は、図2を詳細化したものであり、本発明を適用した計算機110の構成及び制御方法を示している。
HBA106では、HBA内部の記憶領域108を持ち、HBA106の制御、I/O装置113とのデータの送受信を行う。その制御のため、記憶領域108へのアクセス及びPCIeバス105を通じてHBAドライバ102との通信や主記憶装置103へのアクセスを行うHBA−F/W107が、動作する。
主記憶装置103には、HBA106の内部情報でありHBA106を制御するための情報が、MMIO(Memory Mapped I/O)104としてマッピングされ、HBA内部の記憶領域108上の特定の領域109についても、主記憶装置103上にマッピングされる。主記憶装置103及びHBA内部の記憶領域108の使用方法については、図3を用いて詳細を説明する。
図3は、計算機110上の主記憶装置103と、HBA106内部の記憶領域108との対応を示している。
主記憶装置103は、I/O応答キュー114、I/O起動キュー120、HBAドライバ102がI/O応答キュー114から次にデキューするキュー番号を管理するために使用するdrv_Out_Queue#115、I/O起動キュー120に次にエンキューするキュー番号を管理するために使用するdrv_In_Queue#121、HBA内部の記憶領域108上の特定の領域109がマッピングされる領域であるMMIO104を保持する。なお、キュー番号とは、データが格納されている主記憶装置103上のエントリの番号を意味する。
HBA内部の記憶領域108は、HBA−F/W107がI/O応答キュー114に次にエンキューするキュー番号を管理するために使用するfw_R_In_Queue#118、HBAドライバ102がI/O応答キュー114からのデキュー済み番号をHBA−F/W107に通知するOut_Free_Q#117、Out_Free_Q#117によりHBAドライバ102からHBA−F/W107に通知されたI/O応答キュー114からのデキュー済み番号をHBA−F/W107が管理するために使用するfw_R_Out_Queue#119を保持する。
また、HBA内部の記憶領域108は、HBA−F/W107がI/O起動キュー120から次にデキューするキュー番号を管理するために使用するfw_S_Out_Queue#124、HBAドライバ102がI/O起動キュー120へのエンキュー済み番号をHBA−F/W107に通知するIn_Free_Q#125、In_Free_Q#125によりHBAドライバ102からHBA−F/W107に通知されたI/O起動キュー120へのエンキュー済み番号をHBA−F/W107が管理するために使用するfw_S_In_Queue#123を保持する。
I/O応答キュー114、I/O起動キュー120の各エントリには、Queue情報として、該当エントリの有効、無効を示すVビットが用意されている。Vビットが有効を示す場合、そのエントリは、まだデキューされていないデータが格納されていることを示し、新たにデータをエンキューすることはできない。Vビットが無効を示す場合、そのエントリがデキュー済みであることを示し、新たにデータをエンキューすることが可能である。
HBAドライバ102は、I/O応答キュー114からデータをデキューする際、Vビットを参照することで、HBA−F/W107がI/O応答キュー114のいずれのエントリまでデータをエンキュー済みであるか知ることができる。同様に、I/O起動キュー120へデータをエンキューする際、Vビットを参照することで、HBA−F/W107がI/O起動キュー120のいずれのエントリまでデータをデキュー済みであるか知ることができる。
また、例えば、I/O応答キュー114、I/O起動キュー120がデータを格納するエントリを256個持っていたとすると、前記drv_Out_Queue#115、前記fw_R_In_Queue#118、前記fw_R_Out_Queue#119には、I/O応答キュー114が持つ0〜255のいずれかのエントリを示す番号が格納され、前記drv_In_Queue#121、前記fw_S_In_Queue#123、前記fw_S_Out_Queue#124には、I/O起動キュー120が持つ0〜255のいずれかのエントリを示す番号が格納される。データは、番号0のエントリから順番に数字の大きいエントリに、エンキューもしくはデキューされる。番号255のエントリの次は巡回し、再び番号0のエントリに、エンキューもしくはデキューが行われる。
HBAドライバ102がMMIO104へデータを書き込むと、MMIO104に書き込まれたデータは、OS100により、HBA内部の記憶領域108上の特定の領域109に、書き込まれる。すなわち、HBAドライバ102により主記憶装置103の一部(MMIO104)へ書き込まれた情報は、OS100のアシストにより、HBA106内部の記憶領域108上の特定の領域109へ、コピーされる。つまり、HBAドライバ102は、主記憶装置103のMMIO104に書き込みを行うことで、あたかもHBA106内部の記憶領域108に書き込んでいるかのように、動作することが可能となる。
よって、本実施例のHBA−F/W107は、HBAドライバ102が書き込んだ主記憶装置103上のデータを読み込みたい場合、MMIO104にマッピングされているHBA内部の記憶領域108上の特定の領域109にアクセスすることでデータの取得が可能となり、PCIeバス105を通じて主記憶装置103へアクセスし読み込む処理を行なう必要がない。
例えば、I/O装置113から送られたデータを計算機110で受信する動作において、HBAドライバ102が前記drv_Out_Queue#115を更新した際に、更新した値をHBA−F/W107に伝えたい場合、HBAドライバ102は、drv_Out_Queue#115の1つ前のエントリを示す値を、HBA内部の記憶領域108上のOut_Free_Q#117と対応するMMIO104中のOut_Free_Q#116に書き込む。
HBA内部の記憶領域108上のOut_Free_Q#117と対応するMMIO104中のOut_Free_Q#116に、drv_Out_Queue#115の1つ前のエントリを示す値を書き込む理由は、次の通りである。後述する310の時点でのdrv_Out_Queue#115を+1しているため、後述する312の時点でのdrv_Out_Queue#115が示す値は、HBAドライバが次にデキューを行うエントリの番号である。すなわち、HBAドライバが最後にデキューを行ったエントリの番号は、後述する312の時点でのdrv_Out_Queue#115から−1した値である。そこで、Out_Free_Q#116に対し、1つ前のエントリを示す値を書き込む。
すると、前記Out_Free_Q#116に書き込んだ値がOS100により、HBA内部の記憶領域108上の特定の領域109中のOut_Free_Q#117に書き込まれる。よって、HBA−F/W107、は前記Out_Free_Q#117を読み込むことで、HBAドライバ102が更新したdrv_Out_Queue#115の値を取得することができる。
ここで、drv_Out_Queue#115は、Free_Q#117を経由して、fw_R_Out_Queue#119に書き込まれる。そして、fw_R_Out_Queue#119が示す値と、fw_R_In_Queue#118+1が示す値とを比較し、I/O応答キューがFULL状態(空きエントリがない状態)でないことを確認する。空きがあることを確認することで、初めてHBA−F/W107は、I/O応答キューにエンキューできる。
fw_R_In_Queue#118は、HBA−F/W107が最後にエンキューしたI/O応答キュー114のエントリの番号を示す。fw_R_Out_Queue#119は、HBAドライバ102が最後にデキューしたエントリの番号を示す。
後述する302でチェックしている「fw_R_In_Queue#+1=fw_R_Out_Queue#?」とは、HBAドライバ102のデキューが遅れ、HBA−F/W107がHBAドライバ102がデキューする予定のエントリの手前までエンキューしてしまっているかどうか(I/O応答キューがFULL状態であるか)をチェックしていることである。
同様に、計算機110からI/O装置113へデータを送信する動作において、HBAドライバ102が前記drv_In_Queue#121を更新した際に、更新した値をHBA−F/W107に伝えたい場合、HBAドライバ102は、drv_In_Queue#121の1つ前のエントリを示す値を、HBA内部の記憶領域108上のIn_Free_Q#125と対応するMMIO104中のIn_Free_Q#122に書き込む。
すると、前記In_Free_Q#122に書き込んだ値がOS100により、HBA内部の記憶領域108上の特定の領域109中のIn_Free_Q#125に書き込まれる。よって、HBA−F/W107は、前記In_Free_Q#125を読み込むことで、HBAドライバ102が更新したdrv_In_Queue#121の値を取得することができる。
fw_S_In_Queue#123は、HBAドライバ102が最後にエンキューしたI/O起動キューのエントリ番号を示す。fw_S_Out_Queue#124は、HBA−F/W107が最後にI/O起動キューからデキューした、エントリの番号を示す。
後述する332で「fw_S_Out_Queue#=fw_S_In_Queue#+1となるまで・・処理を繰り返す」とは、これらの値を参照することで、I/O起動キュー120にデキューすべきデータが残っているかをチェックしていることである。
このように、本発明を適用した計算機110では、従来にようにHBAドライバ1102及びHBA−F/W1107の両方が主記憶装置1103にアクセスして主記憶装置上でI/Oキューの管理を一元的に実行するのではなく、HBAドライバ102は主記憶装置103上でI/Oキューの管理を独自に行い、HBA−F/W107はHBA106上に存在する記憶領域108でI/Oキューの管理を独自に行う。また、HBAドライバ102とHBA−F/W107との間で、I/Oキューの管理を行うための情報をやりとりする際、MMIO104を利用する。以上の構成により、本発明を適用した計算機110では、HBA106を用いてデータの送信制御を行う際、従来の方式と比較してHBA−F/W107がPCIeバスを通じて主記憶装置103にアクセスする処理を削減でき、計算機110の性能を向上させることが可能である。
以下、データ受信時とデータ送信時とについて、詳細に説明する。
<データ受信時>
図4は、計算機110において、I/O応答キューの制御を行う際の動作フローを示している。図4を用いて、HBAがI/O装置からデータを受信した場合について説明する。
まず、HBA−F/W107は、データを受信したことを認識すると(300)、HBA内部の記憶領域108からOut_Free_Q#117を読みこむことでHBAドライバ102がI/O応答キュー114からHBAドライバ102が最後にデキューしたエントリのキュー番号の値を取得し、その値をHBA−F/W107が管理するfw_R_Out_Queue#119に書き込む(301)。
次に、HBA−F/W107はfw_R_Out_Queue#119とfw_R_In_Queue#118をチェックして、fw_R_Out_Queue#119がfw_R_In_Queue#118の次のエントリを示す場合、エンキュー不可であると判断し、エンキュー可となるまでエンキューを保留する(302)。
302でエンキュー可と判断したら、fw_R_In_Queue#118が示すI/O応答キュー114のエントリに対して受信したデータを書き込み、前記エントリのQueue情報のVビットを、有効を示す値に変更する(303)。
次に、HBA−F/W107は、fw_R_In_Queue#118を次のエントリを示す値に更新し、HBA内部の記憶領域108に更新したfw_R_In_Queue#118の値を書き込み(304)、HBAドライバ102に対して割込み処理を行う(305)。
なお、300〜304までの処理は、図2の202に対応する。305の処理は、図2の211に対応する。
なお、割り込み305(211)は、HBAドライバ102とHBA−F/W107とでPCIeバスを経由する処理であるが、HBA−F/W107からHBAドライバ102への通知を行うだけであり、いわゆるメモリへのアクセスとは異なる。したがって、割り込み305で処理されるデータ量は、メモリへのアクセスで処理されるデータ量に比べて、非常に小さなものである。したがって、割り込み305は、PCIeバスを経由する処理であっても、データの送受信の処理性能には影響を与えるものではない。 割込みを受けたHBAドライバ102は、drv_Out_Queue#115が示す主記憶装置103のエントリのQueue情報を読み込み(306)、読み込んだVビットの値をチェックする(307)。
前記Vビットが無効を示す値であれば、HBAドライバ102は次の割込みが行われるまで待機状態に移る。前記Vビットが有効を示す値であれば、drv_Out_Queue#115が示す主記憶装置103のエントリからデータを読み込む(308)。
308での読み込みが完了したら、drv_Out_Queue#115が示す主記憶装置103のエントリのQueue情報のVビットに無効を示す値を書き込み(309)、drv_Out_Queue#115を次のエントリが示す値に更新し、主記憶装置103に更新したdrv_Out_Queue#115の値を書き込む(310)。
306〜310の処理を307の処理においてVビットのチェックで無効を示す値を検出するまで繰り返す(311)。
次に、HBAドライバ102は、主記憶装置103のMMIO104中のOut_Free_Q#116にdrv_Out_Queue#115が示すエントリの1つ前のエントリを示す値を書き込む。これにより、HBA内部の記憶領域108中のOut_Free_Q#117の値は、最後にHBAドライバ102がI/O応答キュー114からデキューしたキュー番号に更新される(312)。306〜312までの処理が図2の203に対応する。
上記に説明した通り、本発明では従来の方式と比較し、HBA106を用いてデータの送受信制御を行う際、HBA−F/W107がPCIeバスを通じて主記憶装置103にアクセスする処理を削減でき、計算機110の性能を向上させることが可能である。本発明を用いることによる性能向上の効果を、本実施例に係る図4の動作フロー及び従来技術の図7の動作フローを用いて、説明する。
HBA−F/W107、1107がPCIeバス105、1105を経由して主記憶装置103、1103に対して読み込みもしくは書き込みを行う処理1回に要する時間を、Time_Aとする。この処理は、PCIeバス105、1105を含め、経由する経路が多くTAT(Turn Around Time)が大きい。一般に、Time_Aの処理時間は、数マイクロ秒程度である。
HBA−F/W107がHBA106内部の記憶領域108に対して読み込みもしくは書き込みを行う処理1回に要する時間を、Time_Bとする。この処理は、HBA106内部で完結する処理であり、TATが小さい。一般に、Time_Bの処理時間は、数ナノ秒程度である。
HBAドライバ102、1102が主記憶装置103、1103に対して読み込みもしくは書き込みを行う処理1回に要する時間をTime_Cとする。この処理は、ホストブリッジ112のみを経由する処理であり、TATが小さい。一般に、Time_Cの処理時間は、数ナノ秒程度である。
1つの受信データに対して一連の処理を行うために要する時間は、実施例の計算機110でI/O応答キューの制御を行う場合、Time_A(303)×1+Time_B(301読み、301書き、304)×3+Time_C×4(306,308,309,310)となる。一方、1つの受信データに対して一連の処理を行うために要する時間は、従来の計算機1110でI/O応答キューの制御を行う場合、Time_A(501,503,504)×3+Time_C(506,507,508)×3となる。
上述のように、Time_Aは、Time_B及びTime_Cに比べて、約1000倍も値が大きい。このため、Time_Aに係る処理は、処理時間が長いため、ボトルネックとなる。
本発明を適用した計算機110では、従来の計算機1110に比べると、受信処理に要する時間のうち「Time_A×2」を削減可能である。より具体的には、Time_A=1000ns(1us)、Time_B=1ns、Time_C=1nsであると仮定すると、従来の方式ではTime_A×3+Time_C×3=1000ns×3+1ns×3=3003nsであるのに対し、実施例の計算機110ではTime_A×1+Time_B×3+Time_C×4=1000ns×1+1ns×3+1ns×4=1007nsとなる。つまり、実施例の処理時間は、従来の方式に比べて約1/3に削減できる。
したがって、本発明を適用した計算機110では、HBAで行うデータの受信処理にかかる時間を従来に比べて約1/3に削減でき、入出力制御装置の性能を向上することができる。
<データ送信時>
図5は、計算機110において、I/O起動キューの制御を行う際の動作フローを示している。図5を用いて、HBAからI/O装置へデータを送信した場合について説明する。
まず、HBAドライバ102は、OS100からデータの送信要求を受けたことを認識すると(320)、drv_In_Queue#121が示す主記憶装置103のエントリのQueue情報を読み込み(321)、読み込んだVビットの値をチェックする(322)。
前記Vビットが有効を示す値であれば、HBAドライバ102は待機状態に移る。前記Vビットが無効を示す値であれば、drv_In_Queue#121が示す主記憶装置103のエントリへデータを書き込むと同時に、前記Vビットに有効を示す値を書き込む(323)。
drv_In_Queue#121を次のエントリが示す値に更新し、主記憶装置103に更新したdrv_In_Queue#121の値を書き込む(324)。
さらに送信するデータがあれば、321〜324の処理を繰り返す。ただし、322の処理においてVビットのチェックで有効を示す値を検出したら、その時点で繰り返しを停止する(311)。
次に、HBAドライバ102は、主記憶装置103のMMIO104中のIn_Free_Q#122にdrv_In_Queue#121が示すエントリの1つ前のエントリを示す値を書き込む。これにより、HBA内部の記憶領域108中のIn_Free_Q#125の値は、最後にHBAドライバ102がI/O起動キュー120へエンキューしたキュー番号に更新される(326)。320〜326までの処理が図2の200に対応する。
その後、HBAドライバ102は、HBA−F/W107に対してI/O起動キュー120にエンキューした事を通知する処理を行う(327)。327の処理が図2の210に対応する。
通知を受けたHBA−F/W107は、HBA内部の記憶領域108からIn_Free_Q#125を読みこむことでHBAドライバ102がI/O起動キュー120からHBAドライバ102が最後にエンキューしたエントリのキュー番号の値を取得し、その値をHBA−F/W107が管理するfw_S_In_Queue#123に書き込む(328)。
次に、HBA−F/W107は、fw_S_Out_Queue#124が示すI/O起動キュー120のエントリから送信するデータを読み込む(329)。
329での読み込みが完了したら、fw_S_Out_Queue#124が示す主記憶装置103のエントリのQueue情報のVビットに有効を示す値を書き込み(330)、fw_S_Out_Queue#124を次のエントリを示す値に更新し、HBA内部の記憶領域108に更新したfw_S_Out_Queue#124の値を書き込む(331)。
HBA−F/W107はfw_S_Out_Queue#124がfw_S_In_Queue#123の次のエントリを示す状態になるまで、329〜331の処理を繰り返す(332)。最後にHBA−F/W107は、I/O装置113へ主記憶装置103から読み込んだデータを送信する(333)。328〜333までの処理が図2の201に対応する。
1つの送信データに対して一連の処理を行うために要する時間は、実施例の計算機110でI/O起動キューの制御を行う場合、Time_A(329、330)×2+Time_B(328読み、328書き、331)×3+Time_C(321、323、324)×3となる。一方、1つの送信データに対して一連の処理を行うために要する時間は、従来の計算機1110でI/O起動キューの制御を行う場合、Time_A(516、517、518)×3+Time_C(511、513、514)×3となる。
上述のように、Time_Aは、Time_B及びTime_Cに比べて、約1000倍も値が大きい。このため、Time_Aに係る処理は、処理時間が長いため、ボトルネックとなる。
本発明を適用した計算機110では、従来の計算機1110に比べると、送信処理に要する時間のうち「Time_A×1」を削減可能である。より具体的には、Time_A=1000ns(1us)、Time_B=1ns、Time_C=1nsであると仮定すると、従来の方式ではTime_A×3+Time_C×3=1000ns×3+1ns×3=3003nsであるのに対し、実施例の計算機110ではTime_A×2+Time_B×3+Time_C×3=1000ns×2+1ns×3+1ns×3=2006nsとなる。つまり、実施例の処理時間は、従来の方式に比べて約2/3に削減できる。
したがって、本発明を適用した計算機110では、HBAで行うデータの送信処理にかかる時間を従来に比べて約2/3に削減でき、入出力制御装置の性能を向上することができる。
100 OS(オペレーティングシステム)
101 データの送受信を行うアプリケーション
102 HBA(Host Bus Adapter)ドライバ
103 主記憶装置
104 MMIO(Memory Mapped I/O)
105 PCIeバス
106 HBA(Host Bus Adapter)
107 HBA−F/W(HBA上で動作するファームウェア)
108 HBA内部の記憶領域
109 主記憶装置上のMMIOにマッピングされるHBA内部の記憶領域上の領域
110 計算機
111 CPU
112 ホストブリッジ
113 I/O装置
114 I/O応答キュー
115 drv_Out_Queue#
116 Out_Free_Q#
117 In_Free_Q#
118 fw_In_Queue#
119 fw_Out_Queue#
120 I/O起動キュー
121 従来手法でのI/O応答キューの次にエンキューするキュー番号In_Queue#
122 従来手法でのI/O応答キューの次にデキューするキュー番号Out_Queue#

Claims (15)

  1. CPUと、ブリッジを介して前記CPUに接続する主記憶部と、前記ブリッジに接続するPCIeバスを介して前記CPU及び前記主記憶部に接続し、I/O装置とデータの送受信を行うホストバスアダプタ(HBA)とを備える計算機における入出力制御方法であって、
    前記HBAは、HBAファームウエアと、記憶領域とを有し、
    前記CPUは、OSと、前記OS上で動作し前記HBAを制御するHBAドライバを実行し、
    前記主記憶部は、前記データがエンキュー又はデキューされるI/Oキューと、前記I/Oキューからエンキュー又はデキューされる前記データのキュー番号を管理する管理キューと、前記HBAの記憶領域がマッピングされたMemory Mapped I/O(MMIO)領域とを有し、
    前記HBAドライバは、前記管理キューが更新されると、更新された管理キューの管理情報を、前記MMIO領域に書き込み、
    前記OSは、前記MMIO領域に書き込まれた前記管理情報を、前記主記憶部のMMIO領域に対応する前記HBAの記憶領域に書き込む、
    ことを特徴とする入出力制御方法。
  2. 前記HBAドライバは、前記管理キューが更新されると、更新された管理キューの1つ前のキュー番号を管理情報として、前記MMIO領域に書き込むことを特徴とする請求項1記載の入出力制御方法。
  3. 前記I/Oキューは、I/O起動キューまたはI/O応答キューのうち、少なくともいずれか一方であることを特徴とする請求項1記載の入出力制御方法。
  4. 前記計算機が前記I/O装置からデータを受信する場合、
    前記I/Oキューは、I/O応答キューであり、
    前記HBAファームウエアは、
    前記PCIeバスを経由して、前記I/O装置から受信した受信データを、前記I/O応答キューにエンキューし、
    前記PCIeバスを経由して、前記受信データのエンキューを、前記HBAドライバに通知し、
    前記通知を受信した前記HBAドライバは、
    前記受信データを、前記I/O応答キューからデキューし、
    前記デキューした前記受信データを、前記OS上で動作するアプリケーションに送信する
    ことを特徴とする請求項3記載の入出力制御方法。
  5. 前記HBAドライバは、
    前記I/O応答キューから前記受信データをデキューすると、
    前記管理キューを、デキューされた前記受信データのキュー番号の次の番号に更新し、
    前記更新された管理キューの1つ前のキュー番号を管理情報として、前記MMIO領域に書き込み、
    前記OSは、
    前記MMIO領域に書き込まれた前記管理情報を、前記MMIO領域に対応する前記HBAの記憶領域に書き込む
    ことを特徴とする請求項4記載の入出力制御方法。
  6. 前記HBAの記憶領域は、
    前記OSにより、前記管理情報を書き込まれるOut_Free_Qと、
    前記HBAファームウエアが次にエンキューするI/O応答キューのキュー番号を管理するfw_R_In_Queueと、
    前記HBAドライバから前記HBAファームウエアに通知されたI/O応答キューからのデキュー済み番号を管理するfw_R_Out_Queueとを有し、
    前記HBAファームウエアは、
    前記Out_Free_Qに書き込まれた前記管理情報を参照し、
    前記参照した管理情報を、前記fw_R_Out_Queueに書き込み、
    前記fw_R_In_Queueが示すキュー番号と、前記fw_R_Out_Queueが示すキュー番号とを比較し、両者が一致しない場合に、fw_R_In_Queueが示すI/O応答キューのキュー番号に、前記受信データをエンキューする
    ことを特徴とする請求項5記載の入出力制御方法。
  7. 前記I/O応答キューは、前記I/O応答キューのエントリの有効、無効を示す識別子を有し、
    前記識別子が有効を示す場合、前記エントリは、受信データがデキューされていないことを示し、
    前記識別子が無効を示す場合、前記エントリは、受信データがデキューされていることを示す
    ことを特徴とする請求項6記載の入出力制御方法。
  8. 前記計算機が前記I/O装置へデータを送信する場合、
    前記I/Oキューは、I/O起動キューであり、
    前記HBAドライバは、
    前記I/O装置へ送信する送信データを、前記OS上で動作するアプリケーションから受信し、
    前記送信データを、前記I/O起動キューにエンキューし、
    前記PCIeバスを経由して、前記送信データのエンキューを、前記HBAファームウエアに通知し、
    前記通知を受信した前記HBAファームウエアは、
    前記PCIeバスを経由して、前記送信データを、前記I/O起動キューからデキューし、
    前記デキューした前記送信データを、前記I/O装置へ送信する
    ことを特徴とする請求項3記載の入出力制御方法。
  9. 前記HBAドライバは、
    前記I/O起動キューに前記送信データをエンキューすると、
    前記管理キューを、デキューされた前記送信データのキュー番号の次の番号に更新し、
    前記更新された管理キューの1つ前のキュー番号を管理情報として、前記MMIO領域に書き込み、
    前記OSは、
    前記MMIO領域に書き込まれた前記管理情報を、前記MMIO領域に対応する前記HBAの記憶領域に書き込む
    ことを特徴とする請求項8記載の入出力制御方法。
  10. 前記HBAの記憶領域は、
    前記OSにより、前記管理情報を書き込まれるIn_Free_Qと、
    HBAドライバからHBAファームウエアに通知されたI/O起動キューへのエンキュー済み番号をHBAファームウエアが管理するfw_S_In_Queueと、
    I/O起動キューから次にデキューするキュー番号を管理するfw_S_Out_Queueとを有し、
    前記HBAファームウエアは、
    前記In_Free_Qに書き込まれた前記管理情報を参照し、
    前記参照した管理情報を、前記fw_S_In_Queueに書き込み、
    前記fw_S_Out_Queueが示すキュー番号に対応する前記I/O起動キューのエントリから、前記送信データをデキューし、
    前記fw_S_Out_Queueが示すキュー番号と前記fw_S_In_Queueが示すキュー番号とを比較し、前記fw_S_Out_Queueが前記fw_S_In_Queueの次のキュー番号を示すまで、前記I/O起動キューから前記送信データをデキューする処理を繰り返す
    ことを特徴とする請求項9記載の入出力制御方法。
  11. 前記I/O起動キューは、前記I/O起動キューのエントリの有効、無効を示す識別子を有し、
    前記識別子が有効を示す場合、前記エントリは、送信データがデキューされていないことを示し、
    前記識別子が無効を示す場合、前記エントリは、送信データがデキューされていることを示す
    ことを特徴とする請求項10記載の入出力制御方法。
  12. HBAファームウエアと、記憶領域とを有し、I/O装置とデータの送受信を行うホストバスアダプタ(HBA)と、
    OSと、前記OS上で動作し前記HBAを制御するHBAドライバとを実行するCPUと、
    前記データがエンキュー又はデキューされるI/Oキューと、前記I/Oキューからエンキュー又はデキューされる前記データのキュー番号を管理する管理キューと、前記HBAの記憶領域がマッピングされたMemory Mapped I/O(MMIO)領域とを有し、ブリッジを介して前記CPUに接続する主記憶部と、
    前記CPU及び前記主記憶部と前記HBAとを、前記ブリッジを介して接続するPCIeバスとを備え、
    前記HBAドライバは、前記管理キューが更新されると、更新された管理キューの管理情報を、前記MMIO領域に書き込み、
    前記OSは、前記MMIO領域に書き込まれた前記管理情報を、前記主記憶部のMMIO領域に対応する前記HBAの記憶領域に書き込む、
    ことを特徴とする計算機。
  13. 前記HBAドライバは、前記管理キューが更新されると、更新された管理キューの1つ前のキュー番号を管理情報として、前記MMIO領域に書き込むことを特徴とする請求項12記載の計算機。
  14. 前記計算機が前記I/O装置からデータを受信する場合、
    前記I/Oキューは、I/O応答キューであり、
    前記HBAファームウエアは、
    前記PCIeバスを経由して、前記I/O装置から受信した受信データを、前記I/O応答キューにエンキューし、
    前記PCIeバスを経由して、前記受信データのエンキューを、前記HBAドライバに通知し、
    前記通知を受信した前記HBAドライバは、
    前記受信データを、前記I/O応答キューからデキューし、
    前記デキューした前記受信データを、前記OS上で動作するアプリケーションに送信する
    ことを特徴とする請求項13記載の計算機。
  15. 前記計算機が前記I/O装置へデータを送信する場合、
    前記I/Oキューは、I/O起動キューであり、
    前記HBAドライバは、
    前記I/O装置へ送信する送信データを、前記OS上で動作するアプリケーションから受信し、
    前記送信データを、前記I/O起動キューにエンキューし、
    前記PCIeバスを経由して、前記送信データのエンキューを、前記HBAファームウエアに通知し、
    前記通知を受信した前記HBAファームウエアは、
    前記PCIeバスを経由して、前記送信データを、前記I/O起動キューからデキューし、
    前記デキューした前記送信データを、前記I/O装置へ送信する
    ことを特徴とする請求項13記載の計算機。
JP2012108104A 2012-05-10 2012-05-10 計算機及び計算機における入出力制御方法 Expired - Fee Related JP5847013B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012108104A JP5847013B2 (ja) 2012-05-10 2012-05-10 計算機及び計算機における入出力制御方法
EP13165911.2A EP2662777A3 (en) 2012-05-10 2013-04-30 Computer and input/output control method of computer
US13/875,420 US8799530B2 (en) 2012-05-10 2013-05-02 Data processing system with a host bus adapter (HBA) running on a PCIe bus that manages the number enqueues or dequeues of data in order to reduce bottleneck

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012108104A JP5847013B2 (ja) 2012-05-10 2012-05-10 計算機及び計算機における入出力制御方法

Publications (2)

Publication Number Publication Date
JP2013235464A true JP2013235464A (ja) 2013-11-21
JP5847013B2 JP5847013B2 (ja) 2016-01-20

Family

ID=48193164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012108104A Expired - Fee Related JP5847013B2 (ja) 2012-05-10 2012-05-10 計算機及び計算機における入出力制御方法

Country Status (3)

Country Link
US (1) US8799530B2 (ja)
EP (1) EP2662777A3 (ja)
JP (1) JP5847013B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020524840A (ja) * 2017-06-16 2020-08-20 アリババ グループ ホウルディング リミテッド ハードウェア仮想化のための方法及び装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116800692B (zh) * 2023-08-28 2023-11-21 芯潮流(珠海)科技有限公司 活动队列的调度方法、装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04241541A (ja) * 1991-01-14 1992-08-28 Hitachi Ltd 通信制御装置
US5983292A (en) * 1997-10-15 1999-11-09 International Business Machines Corporation Message transport mechanisms and methods
JP2003501746A (ja) * 1999-06-09 2003-01-14 クロジック コーポレーション ホスト・システムとホスト・アダプタとの間でi/oブロックを自動的に転送するための方法および装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918028A (en) * 1997-07-08 1999-06-29 Motorola, Inc. Apparatus and method for smart host bus adapter for personal computer cards
US7149823B2 (en) * 2003-08-29 2006-12-12 Emulex Corporation System and method for direct memory access from host without processor intervention wherein automatic access to memory during host start up does not occur
JP4333370B2 (ja) * 2004-01-08 2009-09-16 株式会社日立製作所 データ処理システム
US7590817B2 (en) 2006-10-17 2009-09-15 International Business Machines Corporation Communicating with an I/O device using a queue data structure and pre-translated addresses
US7821973B2 (en) * 2006-10-24 2010-10-26 Hewlett-Packard Development Company, L.P. Sharing of host bus adapter context
JP2008158710A (ja) * 2006-12-22 2008-07-10 Hitachi Ltd 計算機システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04241541A (ja) * 1991-01-14 1992-08-28 Hitachi Ltd 通信制御装置
US5983292A (en) * 1997-10-15 1999-11-09 International Business Machines Corporation Message transport mechanisms and methods
JP2003501746A (ja) * 1999-06-09 2003-01-14 クロジック コーポレーション ホスト・システムとホスト・アダプタとの間でi/oブロックを自動的に転送するための方法および装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020524840A (ja) * 2017-06-16 2020-08-20 アリババ グループ ホウルディング リミテッド ハードウェア仮想化のための方法及び装置
US11467978B2 (en) 2017-06-16 2022-10-11 Alibaba Group Holding Limited Method and apparatus for hardware virtualization
JP7220163B2 (ja) 2017-06-16 2023-02-09 アリババ グループ ホウルディング リミテッド ハードウェア仮想化のための方法及び装置

Also Published As

Publication number Publication date
US8799530B2 (en) 2014-08-05
US20130304949A1 (en) 2013-11-14
JP5847013B2 (ja) 2016-01-20
EP2662777A2 (en) 2013-11-13
EP2662777A3 (en) 2016-06-01

Similar Documents

Publication Publication Date Title
US11755527B2 (en) Techniques for command validation for access to a storage device by a remote client
US9557922B2 (en) System and method for peer-to-peer PCIe storage transfers
US10423568B2 (en) Apparatus and method for transferring data and commands in a memory management environment
CN107992436B (zh) 一种NVMe数据读写方法及NVMe设备
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
KR101934519B1 (ko) 저장 장치 및 그것의 데이터 전송 방법
US8949486B1 (en) Direct memory access to storage devices
US20150261434A1 (en) Storage system and server
US8032686B2 (en) Protocol translation in a data storage system
US20120278575A1 (en) Method and Computer Program Product For Exchanging Message Data In A Distributed Computer System
CN112416250A (zh) 基于NVMe的固态硬盘的命令处理方法及相关设备
JP5847013B2 (ja) 計算機及び計算機における入出力制御方法
US10733118B2 (en) Computer system, communication device, and storage control method with DMA transfer of data
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
US8996772B1 (en) Host communication device and method with data transfer scheduler
US10977201B1 (en) Per IO direct memory access redirection
US9110856B2 (en) Interface control apparatus, data storage apparatus and method for interface control
KR20200143922A (ko) 메모리 카드 및 이를 이용한 데이터 처리 방법
CN110399322B (zh) 一种数据传输方法及乒乓dma架构
US10482044B2 (en) Computer, device control system, and device control method for direct memory access
JP2008059195A (ja) インタフェース方法及びデータ処理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150324

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150525

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151027

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151124

R151 Written notification of patent or utility model registration

Ref document number: 5847013

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees