JP6426838B2 - ストレージシステム、及び、記憶制御方法 - Google Patents

ストレージシステム、及び、記憶制御方法 Download PDF

Info

Publication number
JP6426838B2
JP6426838B2 JP2017517487A JP2017517487A JP6426838B2 JP 6426838 B2 JP6426838 B2 JP 6426838B2 JP 2017517487 A JP2017517487 A JP 2017517487A JP 2017517487 A JP2017517487 A JP 2017517487A JP 6426838 B2 JP6426838 B2 JP 6426838B2
Authority
JP
Japan
Prior art keywords
data
interface device
memory
drive
size
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
JP2017517487A
Other languages
English (en)
Other versions
JPWO2016181464A1 (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.)
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 JPWO2016181464A1 publication Critical patent/JPWO2016181464A1/ja
Application granted granted Critical
Publication of JP6426838B2 publication Critical patent/JP6426838B2/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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • 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/064Management of blocks
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0661Format or protocol conversion 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、概して、記憶制御に関し、例えばストレージシステム及び記憶制御方法の技術に関する。
PCIe(PCI−Express)プロトコルとSAS(Serial Attached SCSI)プロトコルを相互変換するSASアダプタが知られている(特許文献1)。SASアダプタは、プロセッサと記憶ドライブ(例えばHDD(Hard Disk Drive))との間に存在し、記憶ドライブからSASプロトコルに基づいて転送されたデータをPCIeプロトコルに変換して、プロセッサへ転送する。プロセッサは、SASアダプタから転送されたデータを、所定サイズの単位に分割してメモリ(例えばDRAM(Dynamic Random Access Memory))にライトする。
特開2012−133405号公報
プロセッサは、メモリの領域を所定サイズの区画に分割して管理し、その区画の単位でデータをライトする。したがって、新規データの格納先のメモリの区画の一部に既存データが存在する場合、プロセッサは、その区画から区画サイズ分のデータ(既存データを含む)を一旦リードし、そのリードしたデータを更新し(例えば、そのリードしたデータに新規データを追加又は上書きし)、その更新後のデータ(区画サイズ分のデータ)をその区画にライトする、という処理を行う必要がある。この処理を「リード・モディファイ・ライト」という。この処理は、その区画にデータをライトするだけの処理と比べて、時間がかかる。これは、ストレージシステムのスループットの低下を招く。同様の課題は、PCIeとSASに限らず存在し得る。そこで本発明の目的は、ストレージシステムのスループットを向上させることにある。
一実施例に係るストレージシステムは、プロセッサと、所定サイズの区画の単位でアクセスされるメモリと、記憶ドライブと、プロセッサと記憶ドライブの間のデータ通信を仲介するインタフェースデバイスと、を備える。
記憶ドライブは、インタフェースデバイスへ転送する転送データのメモリにおける格納領域と、その格納領域の少なくとも一部が属するメモリにおける区画の所定位置と、の間の大きさに関する値であるオフセット値に基づいて、転送データのサイズを決定し、その決定したサイズの転送データをインタフェースデバイスへ転送する。
インタフェースデバイスは、転送データをパケットに分割してプロセッサへ転送する。
プロセッサは、インタフェースデバイスから転送されたパケットを、区画の単位でメモリに格納する。
本発明によれば、ストレージシステムのスループットを向上させることができる。
ストレージシステムの構成例を示す。 メモリにおけるデータの格納例を示す。 キャッシュラインのサイズをドライブに通知する処理例を示すシーケンスチャートである。 ドライブに対してリードを要求する処理例を示すシーケンスチャートである。 ドライブの処理例を示すフローチャートである。 ドライブからリードされたデータがメモリに格納される処理例を示す。 コマンド管理リストの構成例を示す。 SGL(Scatter Gather List)の構成例を示す。 実行中コマンド管理リスト及びSGLキャッシュの構成例を示す。 SASアダプタの処理例を示すフローチャートである。 ドライブからリードされたデータがSASアダプタを介してメモリに格納される処理例を示すシーケンスチャートである。 ドライブの処理例を示すフローチャートである。 SASアダプタの処理例を示すフローチャートである。 ドライブからリードされたデータがSASアダプタを介してメモリに格納される処理例を示すシーケンスチャートである。
以下、図面を参照しながら、幾つかの実施例を説明する。以下の説明では、「xxxテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。また、以下の説明では、要素の識別情報として、IDが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用することがある。例えば、要素を特に区別しないで説明する場合には、「xxx212」と記載し、個々の要素を区別して説明する場合には、「xxx212a」のように記載することがある。また、以下の説明では、I/O(Input/Output)要求は、ライト要求又はリード要求であり、アクセス要求と呼ばれてもよい。
実施例1は、ドライブ3が、転送データが格納されるメモリ5の区画の状況を考慮して、転送データのサイズを決定する例である。
図1は、実施例1に係るストレージシステム1の構成例を示す。
ストレージシステム1は、ホスト計算機9から、ネットワーク24(又はケーブル)を介してアクセスされる。ネットワーク24の例は、FC―SAN(FibreChannel Storage Area Network)である。ストレージシステム1は、プロセッサ2、メモリ5、HBA(Host Bus Adapter)12、SASアダプタ4、SASエクスパンダ11、ドライブ3を備えてよい。プロセッサ2、メモリ5、HBA12、SASアダプタ4は、双方向通信可能な内部バス21で接続されてよい。内部バス21に接続されている各要素は、PCIeプロトコルによって通信可能であってよい。
HBA12は、ネットワーク24に接続されてよい。HBA12は、ネットワーク24に係るFCプロトコルと内部バス21に係るPCIeプロトコルとを、相互変換する機能を有してよい。
プロセッサ2は、ホスト計算機9とドライブ3との間のデータのやり取りを制御する。プロセッサ2は、ホスト計算機9からHBA12を介してリード要求を受領すると、そのリード要求に対応するデータをドライブ3からリードして、ホスト計算機9に返す。このとき、プロセッサ2は、ドライブ3からリードしたデータを、メモリ5に一時的に格納(キャッシュ)してよい。メモリ5は、ドライブ3よりもI/O性能の高い記憶デバイスであってよい。メモリ3の例は、DRAM(Dynamic Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)である。
ドライブ3は、不揮発性の記憶媒体を有し、その記憶媒体にデータを保持する。ドライブ3は、リードコマンドを受領すると、そのリードコマンドに対応するデータを記憶媒体からリードして返す。ドライブ3は、SASプロトコルによって制御されてよい。ドライブ3の例は、HDD、SSD(Solid State Drive)、フラッシュデバイスである。ドライブ3は、1以上の物理的なドライブによって構成された論理的なドライブであってもよい。また、ドライブ3は、論理的な記憶ボリュームであってもよい。ドライブ3は、複数のドライブで構成されたRAID(Redundant Arrays of Inexpensive Disks)グループであってもよい。なお、実施例におけるドライブ3の処理は、ドライブ3が備えるコントローラによって実行されてよい。また、ドライブ3は、内部にメモリを備えてよい。
SASアダプタ4は、インタフェースデバイスの例である。SASアダプタ4には、双方向通信可能なケーブル28(又はネットワーク)を介して、ドライブ3が接続される。SASアダプタ4には、SASエクスパンダ11を介して、複数のドライブ3が接続されてもよい。SASアダプタ4とドライブ3との間は、SASプロトコルによって通信可能であってよい。また、SASアダプタ4には、上述のとおり、内部バス21を介して、プロセッサ2が接続される。SASアダプタ4とプロセッサ2との間は、PCIeプロトコルによって通信可能であってよい。SASアダプタ4は、PCIeプロトコルとSASプロトコルを相互変換する機能を有してよい。なお、実施例におけるSASアダプタ4の処理は、SASアダプタ4が備えるLSIによって実行されてよい。また、SASアダプタ4は、内部にメモリを備えてよい。
SASアダプタ4は、プロセッサ2からPCIeプロトコルに基づいて発行されたリードコマンドを、SASプロトコルに変換してドライブ3へ転送してよい。また、SASアダプタ4は、ドライブ3からSASプロトコルに基づいて転送されたリードデータを、PCIeプロトコルに変換してプロセッサ2へ転送してよい。プロセッサ2は、この転送されたリードデータをメモリ5に格納してよい。
図2は、メモリ5に対するデータのライト処理の例を示す。
ドライブ3には、セクタの単位でアクセス可能である。本実施例では、512バイトのユーザデータに8バイトのDIF(Data Integrity Field)データが付加された520バイトが、1セクタである場合について説明する。DIFデータの例は、ユーザデータの誤りを検出するためのCRC(Cyclic Redundancy Check)、ユーザデータの取り違えを防ぐためのアドレス情報である。以下、1セクタに格納されているデータを「セクタデータ」という。
メモリ5の領域は、所定サイズの区画に分割して管理される。この所定サイズの区画をキャッシュライン200という。プロセッサ2は、このキャッシュライン200の単位でアクセスする。1つのキャッシュライン200のサイズは、2のべき乗(例えば、64バイト、128バイト)である。本実施例では、1つのキャッシュライン200のサイズが64バイトの場合について説明する。
次に、複数のセクタデータがメモリ5にライトされる場合について、図2を用いて説明する。1個目のセクタデータ210aは、メモリ5において、1〜8段目のキャッシュライン200と、9段目のキャッシュライン200aの内の8バイト分(212a)とにライトされる(図2の斜線部分)。2個目のセクタデータ210bは、9段目のキャッシュライン200aの内の残り56バイト分と、10〜17段目のキャッシュライン200と、18段目のキャッシュライン200bの16バイト分(212b)とにライトされる。
9段目のキャッシュライン200aの内の残り56バイト分にデータをライトする際、プロセッサ2は、9段目のキャッシュライン200aに格納されている全データをリードし、そのリードした全データの内の後半57バイト分を、2個目のセクタデータ210bの先頭から56バイト分のデータに置き換え、その置き換えた全データを9段目のキャッシュライン200aにオーバーライトする、という処理を行う必要がある。すなわち、この場合、プロセッサ2は、キャッシュライン200の単位で、いわゆるリード・モディファイ・ライトを行う必要がある。
したがって、セクタのサイズがキャッシュライン200のサイズの倍数ではない場合、一部のみにデータの格納されたキャッシュライン200が生成される。そして、この一部のみにデータの格納されたキャシュライン200に追加データを格納するためには、プロセッサ2は、リード・モディファイ・ライトを行う必要がある。リード・モディファイ・ライトは、ストレージシステム1のスループットの低下を招くので、できるだけ少ないことが望ましい。本実施例に係るストレージシステム1は、メモリ5におけるこのリード・モディファイ・ライトの発生数を減らすことにより、スループットの向上を図る。
図3は、キャッシュライン200のサイズをドライブ3に通知する処理例を示すシーケンスチャートである。
キャッシュラインサイズ設定コマンド41は、キャッシュライン200のサイズを、ドライブ3へ通知するためのコマンドである。キャッシュラインサイズ設定コマンド41には、オペレーションコード411と、キャッシュラインサイズ412とが含まれてよい。オペレーションコード411は、当該コマンドが「キャッシュラインサイズ設定コマンド」であることを識別するためのコードである。キャッシュラインサイズ412は、キャッシュライン200のサイズを示す値である。図3に示すキャッシュラインサイズ設定コマンド41は、キャッシュラインサイズ412が「40h(64バイト)」であることを示す。
プロセッサ2は、キャッシュラインサイズ設定情報を、SASアダプタ4へ送信する(ステップS11)。このキャッシュラインサイズ設定情報に、キャッシュライン200のサイズが含まれてよい。SASアダプタ4は、プロセッサ3からキャッシュラインサイズ設定情報を受領すると、その情報に対応するキャッシュラインサイズ設定コマンド41を、ドライブ3へ送信する(ステップS12)。
以上の処理により、ドライブ3は、メモリ5のキャッシュライン200のサイズを知ることができる。図3に示す処理は、ストレージシステム1の起動時に実行される初期化処理に含まれてもよい。又は、この処理は、ドライブ3がストレージシステム1に増設された時に実行される所定の処理に含まれてもよい。
なお、SASアダプタ4がキャッシュライン200のサイズを知っている場合、プロセッサ2からSASアダプタ4へ送信されるキャッシュラインサイズ設定情報には、キャッシュライン200のサイズが含まれなくてもよい。
図4は、ドライブ3に対してリードデータを要求する処理例を示すシーケンスチャートである。
リードコマンド42は、ドライブ3に対して、リードデータの転送を指示するコマンドである。リードコマンド42には、オペレーションコード421と、ドライブ番号422と、LBA423と、データ長424と、オフセット値425とが含まれてよい。オペレーションコード421は、当該コマンドが「リードコマンド」であることを識別するためのコードである。ドライブ番号422は、リード対象のドライブ3の番号である。LBA423は、リードデータのセクタの先頭アドレスである。セクタ数424は、リードデータのセクタ数である。すなわち、LBA423からセクタ数424分のセクタデータが、リードデータである。
オフセット値425は、ドライブ3から転送される転送データのメモリ5における格納領域(例えば、バッファ領域)と、その格納領域の少なくとも一部(例えば、バッファ領域の先頭部分)が属する、メモリ5における区画(例えば、キャッシュライン200)の所定位置(例えば、キャッシュライン200の境界)と、の間の大きさに関する値である。オフセット値425は、メモリ5に確保されたバッファ領域の先頭アドレスが、キャッシュライン200の境界(先頭アドレス)からどれだけずれているかを示す値であってよい。図4に示すオフセット値425「08h(8バイト)」の例は、バッファ領域の先頭アドレスが、キャッシュライン200の境界(先頭アドレス)から8バイトずれていることを示す。言い換えると、バッファ領域の先頭アドレスが、「キャッシュラインサイズ(64バイト)×N段目(Nは正の整数)+8バイト」であることを示す。
プロセッサ2は、メモリ5に、リードデータを格納するためのバッファ領域を確保する(ステップS21)。そして、プロセッサ2は、リードコマンド情報をSASアダプタ4へ送信する(ステップS22)。SASアダプタ4は、プロセッサ2からリードコマンド情報を受領すると、その情報に対応するリードコマンド42をドライブ3へ送信する(ステップS23)。このリードコマンド42は、ドライブ番号422に対応するドライブ3へ送信される。このリードコマンド42を受領したドライブ3は、次の図5に示す処理を行う。
図5は、ドライブ3が、リードデータをSASアダプタ4へ転送する処理例を示すフローチャートである。
ドライブ3は、SASアダプタ4からリードコマンド42を受領すると、そのリードコマンド42に基づいて、LBA423からセクタ数424分のデータをリードし、ドライブ3内の所定のバッファメモリに格納する。ドライブ3は、転送待ちの状態となったタイミングで(例えば、バッファメモリに所定量以上のデータが格納されたタイミングで)、SASアダプタ4に対してコネクション要求を送信してよい。これにより、ドライブ3とSASアダプタ4との間に、SASフレームを送信するためのコネクションが形成される。そして、ドライブ3は、次のように、データの送信処理を行ってよい。
ドライブ3は、転送待ちのデータ量(例えば、バッファメモリに格納済みのデータ量)が、SASフレームが取り得る最大長(以下「最大SASフレーム長」という)よりも小さいか否かを判定する(ステップS300)。最大SASフレーム長の例は、1024バイトである。
転送待ちのデータ量が最大SASフレーム長よりも小さい場合(ステップS300:YES)、ドライブ3は、転送待ちのデータを全てSASアダプタ4へ転送し(ステップS301)、処理を終了する。
転送待ちのデータ量が最大SASフレーム長以上の場合(ステップS300:NO)、ドライブ3は、次の処理(ステップS302)を行う。すなわち、ドライブ3は、アライメントずれが発生しているか否かを判定する(ステップS302)。例えば、ドライブ3は、オフセット値425とこれまでに転送済みのデータ量の合計値を算出する。そして、ドライブ3は、その合計値をキャッシュラインサイズ412で除算したときの余りを算出する。ドライブ3は、この余りが「0」の場合、アライメントずれが発生していないと判定し、この余りが「0以外」の場合、アライメントずれが発生していると判定してよい。
アライメントずれが発生していない場合(ステップS302:NO)、ドライブ3は、最大SASフレーム長に相当するデータをバッファメモリから抽出し、その抽出したデータを格納したSASフレームを生成する。そして、ドライブ3は、その生成したSASフレームを、SASアダプタ4へ送信し(ステップS303)、ステップS300に戻る。
アライメントずれが発生している場合(ステップS302:YES)、ドライブ3は、最大SASフレーム長からアライメントずれの分(すなわち、上記で算出した余り)を減算した値に相当するデータを、バッファメモリから抽出し、その抽出したデータを格納したSASフレームを生成する。そして、ドライブ3は、その生成したSASフレームを、SASアダプタ4へ転送し(ステップS304)、ステップS300に戻る。
このように、ドライブ3は、最大SASフレーム長の分のデータを転送可能であっても、必ずしもその全てのデータをSASアダプタ4に転送するのではなく、アライメントずれを考慮して転送するデータ量を決定する。これにより、メモリ5におけるリード・モディファイ・ライトの発生回数を低減させることができる。以下、図6を用いて、この処理の典型例を述べる。
図6は、ドライブ3からリードされたデータがメモリ3に格納される処理の典型例を示す。
プロセッサ2は、メモリ5に、リードデータを格納するためのバッファ領域を確保する。この確保したバッファ領域の先頭が、キャッシュライン200の境界から8バイトずれているとする。そこで、プロセッサ2は、オフセット値「8バイト」を含むリード情報を、SASアダプタ4へ送信する。SASアダプタ4は、このリード情報を受領すると、オフセット値425に「8バイト」をセットしたリードコマンド42を、ドライブ3へ送信する。
ドライブ3は、このリードコマンド42を受領すると、セクタからデータをリードし、ドライブ3内のバッファメモリに格納する。そして、ドライブ3は、例えば、バッファメモリに2600バイト(=520バイト×5セクタ)のデータが格納されたタイミングで、SASアダプタ4に対してコネクション要求を送信する。
ドライブ3は、図5に示す処理に基づいて、バッファメモリからデータを抽出し、SASフレームを生成する。リードコマンド42のオフセット値425が「8バイト」なので(つまり、アライメントずれが発生しているので)、ドライブ3は、最大SASフレーム長(1024バイト)から8バイト分を減算した「1016バイト」分のデータをバッファメモリから抽出し、1個目のSASフレームを生成する。そして、ドライブ3は、その生成した1個目のSASフレームを、SASアダプタ4へ転送する。
1個目のSASフレームを受領したSASアダプタ4は、そのSASフレームのデータ(1016バイト)を、メモリ5のキャッシュライン200のサイズ(64バイト)に適合するパケットに分割する。このとき、メモリ5のバッファ領域の1段目のキャッシュライン200には、先頭から8バイト分のデータが格納済みである。そこで、SASアダプタ4は、1016バイトのデータの先頭から56バイト(=64バイト−8バイト)のデータを含む1個のパケットを生成する。また、SASアダプタ4は、残りの960バイトのデータを、1個当たり256バイトの3個のパケットに分割する。そして、SASアダプタ4は、各パケットをプロセッサ2へ渡す。プロセッサ2は、56バイトを含むパケットを、バッファ領域の1段目のキャッシュライン200にリード・モディファイ・ライトし、256バイトの各パケットをバッファ領域の2〜16段目のキャッシュライン200にライトする。
また、ドライブ3は、バッファメモリから最大SASフレーム長の分のデータ(1024バイト)を抽出し、2個目のSASフレームを生成する。なぜなら、2個目のSASフレームのデータは、メモリ5のキャシュライン200の先頭からライト可能だから(つまり、オフセットが発生しないから)である。そして、ドライブ3は、その生成した2個目のSASフレームを、SASアダプタ4へ送信する。
2個目のSASフレームを受領したSASアダプタ4は、SASフレーム内のデータ(1024バイト)を、1個当たり256バイトの4個のパケットに分割する。そして、SASアダプタ4は、各パケットをプロセッサ2へ渡す。プロセッサ2は、各パケットを、バッファ領域の17〜32段目のキャッシュラインにライトする。
次に、ドライブ3は、バッファメモリから残りのデータ(560バイト)を抽出し、3個目のSASフレームを生成する。そして、ドライブ3は、その生成した3個目のSASフレームを、SASアダプタ4へ転送する。
3個目のSASフレームを受領したSASアダプタ4は、SASフレームのデータ(560バイト)を、1個当たり256バイトの2個のパケットと、残りの48バイトのデータを含む1個のパケットとに分割する。そして、SASアダプタ4は、各パケットをプロセッサ2へ渡す。プロセッサ2は、256バイトの各パケットを、バッファ領域の33〜40段目のキャッシュライン200にライトし、48バイトのデータを含むパケットを、バッファ領域の41段目のキャッシュラインにリード・モディファイ・ライトする。
上述の処理によれば、メモリ5のキャッシュライン200に対してリード・モディファイ・ライトが発生する回数は2回である。
その後、ドライブ3のバッファメモリに、5720バイト(=520バイト×11セクタ)のデータが格納されたとする。この場合、バッファ領域の41段目のキャッシュラインには「48バイト」のアライメントずれが発生しているため、ドライブ3は、「976バイト(=1024バイト−48バイト)」分のデータをバッファメモリから抽出し、1個目のSASフレームを生成する。そして、ドライブ3は、その生成した1個目のSASフレームを、SASアダプタ4へ転送する。
また、ドライブ3は、1024バイトの2〜5個目のSASフレームを、SASアダプタ4へ送信する。最後に、ドライブ3は、648バイトの6個目のSASフレームを、SASアダプタ4へ転送する。これらのSASフレームを受領したSASアダプタ4は、上述同様に分割したパケットをプロセッサ2へ渡す。すなわち、1個目のSASフレームの1個目のパケットサイズは16バイト、6個目のSASフレームの最後のパケットサイズは8バイト、それ以外のパケットサイズは256バイトである。よって、メモリ5のキャッシュラインに対してリード・モディファイ・ライトが発生する回数は、上述同様、2回となる。
仮に、ドライブが、上述のような考慮を行わず、最大SASフレーム長をSASアダプタ4へ送信する場合、次のような処理となってしまう。ドライブ内のバッファメモリに格納された2600バイトのデータについて、ドライブは、1個目及び2個目のSASフレームを1024バイト、3個目のSASフレームを552バイトとする。1個目のSASフレームを受領したSASアダプタは、上述同様、パケットに分割してプロセッサ2へ渡す。この場合、プロセッサ2は、最初及び最後のパケットのキャッシュライン200への格納において、リード・モディファイ・ライトを行う必要がある。2個目、3個目のSASフレームについても同様に、プロセッサ2は、最初及び最後のパケットのキャッシュライン200への格納において、リード・モディファイ・ライトを行う必要がある。すなわち、メモリ5のキャッシュライン200に対してリード・モディファイ・ライトが発生する回数が、6回となる。また、ドライブのバッファメモリに格納された5720バイトのデータについて、ドライブは、1〜5個目のSASフレームを1024バイト、6個目のSASフレームを600バイトとする。この場合、メモリ5のキャッシュラインに対してリード・モディファイ・ライトが発生する回数は、12回となる。
すなわち、図6の例において、従来であれば合計18回(=6回+12回)も発生していたリード・モディファイ・ライトを、本実施例によれば合計4回にまで減らすことができる。本実施例によれば、ドライブ3が、メモリ5におけるキャッシュライン200の境界からのずれを考慮し、1個目のSASフレームのサイズを調整することによって、メモリ5においてリード・モディファイ・ライトが発生する回数を減らすことができる。よって、本実施例によれば、メモリ5のスループットを向上させることができる。
実施例2は、SASアダプタ4が、ドライブ3から転送されたSASフレームのデータの、メモリ5におけるライト先をより高速に特定する例である。なお、実施例1と同様の内容については説明を省略する。
図7は、コマンド管理リスト51の構成例を示す。
コマンド管理リスト51は、SASアダプタ4がドライブ3に送信したコマンドを管理するためのリストである。コマンド管理リスト51は、プロセッサ2上で動作するソフトウェアによって生成され、メモリ5に格納されてよい。コマンド管理リスト51は、SASアダプタ4から参照されてよい。コマンド管理リスト51は、フィールド値として、ドライブ番号511、タグ番号512、コマンド513、LBA514、セクタ数515、SGLアドレス516を有してよい。
ドライブ番号511は、ドライブ3を識別するための番号である。タグ番号512は、1つのドライブ3に複数のコマンドが送信されたときに、各コマンドを識別するための番号である。コマンド513は、ドライブ3へ送信されたコマンドの種別を示す。コマンド513の例は、「リードコマンド」、「ライトコマンド」ある。LBA514は、コマンド513が対象とするセクタの先頭アドレスである。セクタ数515は、コマンド513が対象とするセクタの数である。SGLアドレス516は、SGLの格納先のアドレス(SGLへのポインタに相当)である。SGLの詳細については後述する(図8参照)。
図7に示すコマンド管理リスト51におけるドライブ番号511「0」及びタグ番号512「0」のレコードは、このドライブ番号511「0」のドライブ3に対して、LBA514「12340000h」から「1024セクタ」(515)の分の領域を対象とする「リードコマンド」(513)が発行されており、そのリードデータの格納先に関する情報を有するSGLは、メモリ5上のアドレス「100000h」(516)に格納されていることを示す。
図8は、SGL52の構成例を示す。
SGL52には、メモリ5上のアドレスが格納される。SGL52は、プロセッサ2上で動作するソフトウェアによって生成され、メモリ5に格納されてよい。SGL52は、SASアダプタ4から参照されてよい。図7に示すように、コマンド管理リスト51のレコードのSGLアドレス516が、そのレコードに対応するSGL52の格納先を示す。
SGL52は、フィールド値として、サイズ521、メモリアドレス522を有してよい。サイズ521は、メモリ5上の領域のサイズである。メモリアドレス522は、メモリ5上の格納先/格納元のアドレスである。
図8に示すSGL52は、コマンド513が「リードコマンド」の場合、リードデータの先頭から「66560バイト」(521)分の格納先がメモリアドレス522「12340000h」の領域であり、次の「66560バイト」分の格納先がメモリアドレス522「23450000h」の領域であることを示す。
図8に示すSGL52は、コマンド513が「ライトコマンド」の場合、ライトデータの先頭から「66560バイト」(521)分の格納元がメモリアドレス522「12340000h」の領域であり、次の「66560バイト」分の格納元がメモリアドレス522「23450000h」の領域であることを示す。
図9は、実行中コマンド管理リスト45、及び、SGLキャッシュ46の構成例を示す。
SASアダプタ4は、メモリ5上に格納されている複数のSGL52の内の幾つかを、SGLキャッシュ46として、内部の所定のメモリに保持してよい。SGLキャッシュ46は、フィールド値として、サイズ461、メモリアドレス462を有する。サイズ461、メモリアドレス462は、それぞれ、図8のサイズ521、メモリアドレス522と同様である。
また、SASアダプタ4は、ドライブ3に対して送信済み、且つ、未完了のコマンドに関する情報を、実行中コマンド管理リスト45として、内部の所定のメモリに保持してよい。
実行中コマンド管理リスト45は、フィールド値として、ドライブ番号451、タグ番号452、SGLアドレス453、SGLキャッシュフラグ454を有する。ドライブ番号451、タグ番号452、SGLアドレス453は、それぞれ、図7のドライブ番号511、タグ番号512、SGLアドレス516と同様である。
SGLキャッシュID454は、SASアダプタ4内において保持されているSGLキャッシュ46の識別子である。SGLキャッシュ46が保持されていない場合、SGLキャッシュID454は「NULL」であってよい。
図9に示す実行中コマンドリスト45におけるドライブ番号451「0」及びタグ番号452「1」のレコードは、このドライブ番号451「0」のドライブ3に対して送信されたタグ番号452「1」のコマンドが、未完了であることを示す。さらに、このコマンドに対応するSGLキャッシュ46は、SGLアダプタ4の内部において、SGLキャッシュID454「0」として保持されていることを示す。
図10は、ドライブ3からコネクション要求を受領したSASアダプタ4の処理例を示すフローチャートである。
SASアダプタ4は、ドライブ3からコネクション要求を受領すると、そのコネクション要求からドライブ番号を抽出する(ステップS700)。
そして、SASアダプタ4は、実行中コマンド管理リスト45の中から、その抽出したドライブ番号に適合するレコード(未完了コマンド)を検索する。複数のレコードが発見された場合、SASアダプタ4は、最古に登録されたレコード(最古の未完了コマンド)を選択する(ステップS701)。
SASアダプタ4は、その選択したレコードに含まれるSGLキャッシュID454を参照し、SGLキャッシュ46が保持されているか否かを判定する(ステップS702)。SGLキャッシュ46が保持されている場合(ステップS702:YES)、SASアダプタ4は、本処理を終了する。
SGLキャッシュ46が保持されていない場合(ステップS702:NO)、SASアダプタ4は、その選択したレコードに対応するSGL52をメモリ5から取得し、SGLキャッシュ46として内部に保持する(ステップS703)。そして、SASアダプタ4は、本処理を終了する。
これにより、ドライブ3からコネクション要求を受領したタイミングで、最古の未完了コマンドに対応するSGL52が、SGLキャッシュ46としてSASアダプタ4の内部に保持される。
図11は、ドライブ3からリードされたデータがSASアダプタ4を介してメモリ5に格納される処理例を示すシーケンスチャートである。
図6を用いて説明したように、ドライブ3は、リードコマンド42を受領すると(ステップS33)、記憶媒体からデータをリードし、ドライブ3内のバッファメモリに格納する。
そして、ドライブ3は、SASフレームの転送待ちの状態となったタイミングで、SASアダプタ4に対してコネクション要求を送信する(ステップS34)。このコネクション要求には、このドライブ3のドライブ番号が含まれてよい。
SASアダプタ4は、このコネクション要求を受領すると、このコネクション要求に対する受諾応答を、ドライブ3へ返す(ステップS35)。これにより、ドライブ3とSASアダプタ4との間にコネクションが形成される。
また、SASアダプタ4は、このコネクション要求の受領をトリガーとして、次の処理を行ってよい。すなわち、SASアダプタ4は、図10に示すように、実行中コマンド管理リスト45の中から、このコネクション要求に含まれるドライブ番号に適合する最古の未完了コマンドを検索し、発見した最古の未完了コマンドに対応するSGL52を、SGLキャッシュ46として内部に保持する(ステップS36、S37、S38)。
これにより、SASアダプタ4は、その後にドライブ3から転送されるデータのメモリ4への格納先を、SGLキャッシュ46から知り得る。また、最古の未完了コマンドに対応するSGLキャッシュ46を保持することにより、少ないSGLキャッシュ46で高いキャッシュヒット率を実現できる。よって、データを受信したタイミングでメモリ5からSGL52を取得する場合と比較して、より高速にデータをメモリ5に格納することができる。すなわち、ストレージシステム1のスループットを向上させることができる。
実施例3は、実施例2の変形例である。実施例2との差分について説明する。なお、実施例1又は2と同様の内容については説明を省略する。
図12は、ドライブ3が、SASアダプタ4に対してコネクション要求を送信する処理例を示すフローチャートである。
ドライブ3は、SASフレームの転送待ちの状態となったタイミングで、その転送待ちのSASフレームのタグ番号を特定する(ステップS711)。そして、ドライブ3は、その特定したタグ番号及びドライブ3のドライブ番号を含むコネクション要求を生成し、SASアダプタ4へ送信する(ステップS712)。このコネクション要求に含まれるタグ番号は、その後に転送されるデータをSASアダプタ4に知らせるためのヒント情報の例である。
図13は、ドライブ3からコネクション要求を受領したSASアダプタ4の処理例を示すフローチャートである。
SASアダプタ4は、ドライブ3からコネクション要求を受領すると、そのコネクション要求からドライブ番号及びタグ番号を抽出する(ステップS720)。
そして、SASアダプタ4は、実行中コマンド管理リスト45の中から、その抽出したドライブ番号及びタグ番号に適合するレコード(未完了コマンド)を検索する(ステップS721)。
SASアダプタ4は、その検索によって発見したレコードに含まれるSGLキャッシュID454を参照し、SGLキャッシュ46が保持されているか否かを判定する(ステップS722)。
SGLキャッシュ46が保持されている場合(ステップS722:YES)、SASアダプタ4は、本処理を終了する。
SGLキャッシュ46が保持されていない場合(ステップS722:NO)、SASアダプタ4は、その発見したレコードに対応するSGL52をメモリ5から取得し、SGLキャッシュ46として内部に保持する(ステップS723)。そして、SASアダプタ4は、本処理を終了する。
図14は、ドライブ3からリードされたデータがSASアダプタ4を介してメモリ5に格納される処理例を示すシーケンスチャートである。
図6を用いて説明したように、ドライブ3は、リードコマンド42を受領すると(ステップS43)、記憶媒体からデータをリードし、ドライブ3内のバッファメモリに格納する。
そして、ドライブ3は、SASフレームの転送待ちの状態となったタイミングで、SASアダプタ4に対してコネクション要求を送信する(ステップS44)。このコネクション要求には、このドライブ3のドライブ番号、及び、この転送可能となったSASフレームに関するタグ番号が含まれてよい。
SASアダプタ4は、このコネクション要求の受領をトリガーとして、次の処理を行う。すなわち、SASアダプタ4は、図13に示すように、実行中コマンド管理リスト45の中から、このコネクション要求に含まれるドライブ番号及びタグ番号に適合する未完了コマンドを検索し、発見した未完了コマンドに対応するSGL52を、SGLキャッシュ46として内部に保持する(ステップS46、S47、S48)。
これにより、SASアダプタ4は、その後にドライブ3から転送されるデータのメモリ4への格納先を、SGLキャッシュ46から知ることができる。よって、データを受信したタイミングでメモリ5からSGL52を取得する場合と比較して、より高速にデータをメモリ5に格納することができる。すなわち、メモリ5のスループットを向上させることができる。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、実施例1の内容に、実施例2又は3の内容を組み合わせても良い。また、SASアダプタと記憶ドライブとの間のプロトコルは、SASプロトコル以外であってよい。また、SASアダプタとプロセッサとの間のプロトコルは、PCIeプロトコル以外であってよい。
また、実施例に関する内容は、以下の様に表現することもできる。
(表現1)
プロセッサと、
所定サイズのメモリ区画の単位でアクセスされるメモリと、
記憶ドライブと、
前記プロセッサと前記記憶ドライブの間のデータ通信を仲介するインタフェースデバイスと
を備え、
前記記憶ドライブは、
前記インタフェースデバイスへ転送する転送データの前記メモリにおける格納領域と、その格納領域の少なくとも一部が属する前記メモリにおける区画の所定位置と、の間の大きさに関する値であるオフセット値に基づいて、前記転送データのサイズを決定し、
その決定したサイズの転送データを前記インタフェースデバイスへ転送し、
前記インタフェースデバイスは、前記転送データをパケットに分割して前記プロセッサへ転送し、
前記プロセッサは、前記インタフェースデバイスから転送されたパケットを、前記区画の単位で前記メモリに格納する
ストレージシステム。
(表現2)
前記オフセット値は、前記転送データの前記メモリにおける格納領域の先頭と、その格納領域の先頭が属する前記メモリにおける区画の先頭と、の間の大きさに関する値である
表現1に記載のストレージシステム。
(表現3)
前記オフセット値は、前記インタフェースデバイスから前記記憶ドライブへ発行されるリードコマンドに含まれる
表現1又は2に記載のストレージシステム。
(表現4)
前記転送データのサイズは、前記転送データの取り得る最大サイズから前記オフセット値を減算したサイズである
表現1乃至3の何れか一つに記載のストレージシステム。
(表現5)
前記記憶ドライブは、前記インタフェースデバイスへ転送済みの転送データの量に基づいて、次の転送データに関するオフセット値を算出し、その算出したオフセット値に基づいて、次の転送データのサイズを決定する
表現1乃至4の何れか一つに記載のストレージシステム。
(表現6)
前記記憶ドライブは、
前記インタフェースデバイスへ転送待ちのデータの量が前記転送データの取り得る最大サイズ未満の場合、その転送待ちのデータを全て前記インタフェースデバイスへ転送し、
前記インタフェースデバイスへ転送待ちのデータの量が前記転送データの取り得る最大サイズ以上の場合、前記オフセット値が「0」か否かを判定し、
前記オフセット値が「0」である場合、その転送待ちのデータの内、前記転送データの取り得る最大サイズの分を、前記インタフェースデバイスへ転送し、
前記オフセット値が「0」でない場合、その転送待ちのデータの内、前記転送データの取り得る最大サイズから前記オフセット値を減算したサイズの分を、前記インタフェースデバイスへ転送する
表現1乃至5の何れか一つに記載のストレージシステム。
(表現7)
前記インタフェースデバイスと前記プロセッサとの間のデータ通信は、PCI−Expressの仕様に基づいており、
前記インタフェースデバイスと前記記憶ドライブとの間のデータ通信は、SAS(Serial Attached SCSI)の仕様に基づいており、
前記転送データの取り得る最大サイズは、SASの仕様に基づいて決まる値である
表現1乃至6の何れか一つに記載のストレージシステム。
(表現8)
プロセッサと、
メモリと、
記憶ドライブと、
前記プロセッサと前記記憶ドライブの間のデータ通信を仲介するインタフェースデバイスと
を備え、
前記メモリには、前記インタフェースデバイスが前記記憶ドライブに対して発行したリードコマンドと、当該リードコマンドによってリードされるデータのメモリ内における格納領域と、を対応付けるコマンド管理情報が格納されており、
前記インタフェースデバイスは、前記コマンド管理情報から、前記記憶ドライブに対して発行したリードコマンドの内の未完了のリードコマンドに関する情報が抽出されて生成された、実行中コマンド管理情報を保持し、
前記インタフェースデバイスは、前記実行中コマンド管理情報に基づいて、前記転送データの前記メモリ内における格納領域を特定する
ストレージシステム。
(表現9)
前記インタフェースデバイスは、前記記憶ドライブから前記転送データの転送のためのコネクション要求を受領したタイミングで、前記実行中コマンド管理情報を生成する
表現8に記載のストレージシステム。
(表現10)
前記インタフェースデバイスは、前記コネクション要求の送信元の記憶ドライブに対して発行したリードコマンドの内の未完了のリードコマンドに関連する情報を、前記コマンド管理情報から抽出して、前記実行中コマンド管理情報を生成する
表現8又は9に記載のストレージシステム。
(表現11)
前記インタフェースデバイスは、前記未完了のリードコマンドが複数存在する場合、最古に発行された未完了のリードコマンドに関連する情報を抽出して、前記実行中コマンド管理情報を生成する
表現10に記載のストレージシステム。
(表現12)
前記リードコマンドには、当該リードコマンドと他のリードコマンドを区別するための区別情報が含まれており、
前記コマンド管理情報は、前記リードコマンドと前記区別情報とを更に対応付け、
前記記憶ドライブは、前記転送データに係るリードコマンドの前記区別情報を含むコネクション要求を、前記インタフェースデバイスへ送信し、
前記インタフェースデバイスは、前記区別情報に対応付けられている未完了のリードコマンドに関連する情報を抽出して、前記実行中コマンド管理情報を生成する
表現8又は9に記載のストレージシステム。
(表現13)
記憶ドライブは、
記憶領域からリードデータを取得し、
所定サイズの区画の単位でアクセスされるメモリであって、当該メモリにおける前記リードデータの格納領域と、その格納位置の少なくとも一部が属する前記メモリにおける区画の所定位置と、の間の大きさに関する値であるオフセット値に基づいて、転送データのサイズを決定し、
前記決定したサイズの転送データをインタフェースデバイスへ転送し、
前記インタフェースデバイスは、
前記記憶ドライブから前記転送データを受領すると、当該転送データをパケットに分割してプロセッサへ転送し、
前記プロセッサは、前記インタフェースデバイスから前記パケットを受領すると、当該パケットを、前記区画の単位で前記メモリに格納する
記憶制御方法。
(表現14)
プロセッサと記憶ドライブの間のデータ通信を仲介するインタフェースデバイスは、
メモリに格納されているコマンド管理情報であって、前記インタフェースデバイスが前記記憶ドライブに対して発行したリードコマンドと、当該リードコマンドによってリードされるデータのメモリ内における格納領域と、を対応付けるコマンド管理情報から、前記記憶ドライブに対して発行したリードコマンドの内の未完了のリードコマンドに関する情報を抽出して実行中コマンド管理情報を生成し、その生成した実行中コマンド管理情報を保持し、
前記実行中コマンド管理情報に基づいて、前記転送データの前記メモリ内における格納領域を特定する
記憶制御方法。
1:ストレージシステム 2:プロセッサ 3:ドライブ 4:SASアダプタ 5:メモリ

Claims (12)

  1. プロセッサと、
    所定サイズの区画の単位でアクセスされるメモリと、
    記憶ドライブと、
    前記プロセッサと前記記憶ドライブの間のデータ通信を仲介するインタフェースデバイスと
    を備え、
    前記記憶ドライブは、
    前記インタフェースデバイスへ転送する転送データの前記メモリにおける格納領域と、その格納領域の少なくとも一部が属する前記メモリにおける区画の所定位置と、の間の大きさに関する値であるオフセット値に基づいて、前記転送データのサイズを決定し、
    その決定したサイズの転送データを前記インタフェースデバイスへ転送し、
    前記インタフェースデバイスは、前記転送データをパケットに分割して前記プロセッサへ転送し、
    前記プロセッサは、前記インタフェースデバイスから転送されたパケットを、前記区画の単位で前記メモリに格納する
    ストレージシステム。
  2. 前記オフセット値は、前記転送データの前記メモリにおける格納領域の先頭と、その格納領域の先頭が属する前記メモリにおける区画の先頭と、の間の大きさに関する値である
    請求項1に記載のストレージシステム。
  3. 前記オフセット値は、前記インタフェースデバイスから前記記憶ドライブへ発行されるリードコマンドに含まれる
    請求項1に記載のストレージシステム。
  4. 前記転送データのサイズは、前記転送データの取り得る最大サイズから前記オフセット値を減算したサイズである
    請求項2に記載のストレージシステム。
  5. 前記記憶ドライブは、前記インタフェースデバイスへ転送済みの転送データの量に基づいて、次の転送データに関するオフセット値を算出し、その算出したオフセット値に基づいて、次の転送データのサイズを決定する
    請求項2に記載のストレージシステム。
  6. 前記記憶ドライブは、
    前記インタフェースデバイスへ転送待ちのデータの量が前記転送データの取り得る最大サイズ未満の場合、その転送待ちのデータを全て前記インタフェースデバイスへ転送し、
    前記インタフェースデバイスへ転送待ちのデータの量が前記転送データの取り得る最大サイズ以上の場合、前記オフセット値が「0」か否かを判定し、
    前記オフセット値が「0」である場合、その転送待ちのデータの内、前記転送データの取り得る最大サイズの分を、前記インタフェースデバイスへ転送し、
    前記オフセット値が「0」でない場合、その転送待ちのデータの内、前記転送データの取り得る最大サイズから前記オフセット値を減算したサイズの分を、前記インタフェースデバイスへ転送する
    請求項4に記載のストレージシステム。
  7. 前記インタフェースデバイスと前記プロセッサとの間のデータ通信は、PCI−Expressの仕様に基づいており、
    前記インタフェースデバイスと前記記憶ドライブとの間のデータ通信は、SAS(Serial Attached SCSI)の仕様に基づいており、
    前記転送データの取り得る最大サイズは、SASの仕様に基づいて決まる値である
    請求項4に記載のストレージシステム。
  8. 前記メモリには、前記インタフェースデバイスが前記記憶ドライブに対して発行したリードコマンドと、当該リードコマンドによってリードされるデータのメモリ内における格納領域と、を対応付けるコマンド管理情報が格納されており、
    前記インタフェースデバイスは、前記コマンド管理情報から、前記記憶ドライブに対して発行したリードコマンドの内の未完了のリードコマンドに関する情報が抽出されて生成された、実行中コマンド管理情報を保持し、
    前記インタフェースデバイスは、前記実行中コマンド管理情報に基づいて、前記転送データの前記メモリ内における格納領域を特定し、
    前記インタフェースデバイスは、前記記憶ドライブから前記転送データの転送のためのコネクション要求を受領したタイミングで、前記実行中コマンド管理情報を生成する
    請求項1に記載のストレージシステム。
  9. 前記インタフェースデバイスは、前記コネクション要求の送信元の記憶ドライブに対して発行したリードコマンドの内の未完了のリードコマンドに関連する情報を、前記コマンド管理情報から抽出して、前記実行中コマンド管理情報を生成する
    請求項に記載のストレージシステム。
  10. 前記インタフェースデバイスは、前記未完了のリードコマンドが複数存在する場合、最古に発行された未完了のリードコマンドに関連する情報を抽出して、前記実行中コマンド管理情報を生成する
    請求項に記載のストレージシステム。
  11. 前記リードコマンドには、当該リードコマンドと他のリードコマンドを区別するための区別情報が含まれており、
    前記コマンド管理情報は、前記リードコマンドと前記区別情報とを更に対応付け、
    前記記憶ドライブは、前記転送データに係るリードコマンドの前記区別情報を含むコネクション要求を、前記インタフェースデバイスへ送信し、
    前記インタフェースデバイスは、前記区別情報に対応付けられている未完了のリードコマンドに関連する情報を抽出して、前記実行中コマンド管理情報を生成する
    請求項に記載のストレージシステム。
  12. 記憶ドライブは、
    記憶領域からリードデータを取得し、
    所定サイズの区画の単位でアクセスされるメモリであって、当該メモリにおける前記リードデータの格納領域と、その格納領域の少なくとも一部が属する前記メモリにおける区画の所定位置と、の間の大きさに関する値であるオフセット値に基づいて、転送データのサイズを決定し、
    前記決定したサイズの転送データをインタフェースデバイスへ転送し、
    前記インタフェースデバイスは、
    前記記憶ドライブから前記転送データを受領すると、当該転送データをパケットに分割してプロセッサへ転送し、
    前記プロセッサは、前記インタフェースデバイスから前記パケットを受領すると、当該パケットを、前記区画の単位で前記メモリに格納する
    記憶制御方法。
JP2017517487A 2015-05-11 2015-05-11 ストレージシステム、及び、記憶制御方法 Expired - Fee Related JP6426838B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/063507 WO2016181464A1 (ja) 2015-05-11 2015-05-11 ストレージシステム、及び、記憶制御方法

Publications (2)

Publication Number Publication Date
JPWO2016181464A1 JPWO2016181464A1 (ja) 2017-12-07
JP6426838B2 true JP6426838B2 (ja) 2018-11-21

Family

ID=57248955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017517487A Expired - Fee Related JP6426838B2 (ja) 2015-05-11 2015-05-11 ストレージシステム、及び、記憶制御方法

Country Status (3)

Country Link
US (1) US20180052632A1 (ja)
JP (1) JP6426838B2 (ja)
WO (1) WO2016181464A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI702499B (zh) * 2018-08-20 2020-08-21 慧榮科技股份有限公司 儲存裝置及快取區定址方法
US11416435B2 (en) * 2019-09-03 2022-08-16 Pensando Systems Inc. Flexible datapath offload chaining
JP6997235B2 (ja) * 2020-02-19 2022-01-17 株式会社日立製作所 データ転送システム
CN112783462B (zh) * 2021-01-19 2024-06-11 昆山联滔电子有限公司 一种数据传输的控制方法及装置
US11954341B2 (en) * 2022-05-05 2024-04-09 Seagate Technology Llc External storage of internal drive management data
CN116628670B (zh) * 2023-05-18 2024-03-22 荣耀终端有限公司 权限设置方法和电子设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4373255B2 (ja) * 2004-03-23 2009-11-25 富士通株式会社 ダイレクトメモリアクセス制御装置および方法
JP2007206766A (ja) * 2006-01-31 2007-08-16 Fujitsu Ltd データストレージシステム、データストレージ制御装置及びその障害箇所診断方法。
US20080235484A1 (en) * 2007-03-22 2008-09-25 Uri Tal Method and System for Host Memory Alignment

Also Published As

Publication number Publication date
WO2016181464A1 (ja) 2016-11-17
JPWO2016181464A1 (ja) 2017-12-07
US20180052632A1 (en) 2018-02-22

Similar Documents

Publication Publication Date Title
JP6426838B2 (ja) ストレージシステム、及び、記憶制御方法
US10853274B2 (en) Primary data storage system with data tiering
US20210117083A1 (en) Primary Data Storage System with Quality of Service
US8583839B2 (en) Context processing for multiple active write commands in a media controller architecture
US20200019516A1 (en) Primary Data Storage System with Staged Deduplication
JP4740763B2 (ja) ストレージシステム及びストレージコントローラ
US9423984B2 (en) Storage apparatus and control method thereof
US20120221809A1 (en) Storage apparatus and data processing method of the same
JP6649989B2 (ja) ストレージシステム及びその制御方法
US20080222500A1 (en) Data relay apparatus, data relay method and data relay integrated circuit
US8327043B2 (en) Buffer management device which manages buffer transfer, storage apparatus comprising the same device, and buffer management method
JP4394533B2 (ja) ディスクアレイシステム
JP2023027970A (ja) メモリシステム
JP2005346426A (ja) データ共有ディスク装置
JP4285202B2 (ja) 複合計算機システムおよび複合i/oシステム
JP4466530B2 (ja) ディスクアレイ装置及び論理アドレス制御方法並びにプログラム
JP2007048319A (ja) 複合計算機システムおよび複合i/oシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170810

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180406

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: 20181002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181025

R150 Certificate of patent or registration of utility model

Ref document number: 6426838

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees