(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-19
(45)【発行日】2022-12-27
(54)【発明の名称】ストレージ装置
(51)【国際特許分類】
G06F 3/06 20060101AFI20221220BHJP
G06F 13/10 20060101ALI20221220BHJP
G06F 13/12 20060101ALI20221220BHJP
【FI】
G06F3/06 301W
G06F3/06 302E
G06F13/10 340A
G06F13/12 330A
(21)【出願番号】P 2020139199
(22)【出願日】2020-08-20
【審査請求日】2021-05-14
(31)【優先権主張番号】P 2020066145
(32)【優先日】2020-04-01
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】鶴谷 昌弘
(72)【発明者】
【氏名】水島 永雅
(72)【発明者】
【氏名】吉原 朋宏
(72)【発明者】
【氏名】島田 健太郎
【審査官】田名網 忠雄
(56)【参考文献】
【文献】国際公開第2018/179243(WO,A1)
【文献】特開2018-037069(JP,A)
【文献】国際公開第2015/181902(WO,A1)
【文献】国際公開第2015/145647(WO,A1)
【文献】国際公開第2016/194199(WO,A1)
【文献】特表2018-530055(JP,A)
【文献】米国特許出願公開第2018/0152733(US,A1)
【文献】米国特許出願公開第2018/0024743(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 13/10-13/14
(57)【特許請求の範囲】
【請求項1】
ストレージ装置であって、
第1メモリと、
前記第1メモリにデータを格納し、前記第1メモリからデータを読み出す、処理装置と、
前記第1メモリと異なる第2メモリを含むアクセラレータと、を含み、
前記処理装置は、
1以上の記憶ドライブに圧縮データを送信することを指示し、
前記アクセラレータに、指定データのアドレスを含む要求を送信し、
前記アクセラレータは、
前記処理装置から前記指定データのアドレスを含む要求を受信し、
前記1以上の記憶ドライブによって送信された圧縮データを
前記第2メモリに格納し、
前記第2メモリに格納された前記圧縮データを伸張して平文データを生成し
て前記第2メモリに格納し、
前記アドレスに応じて、
前記第2メモリに格納された前記平文データから、
その一部である前記指定データを抽出し、
抽出された前記指定データを前記第1メモリに送信する、ストレージ装置。
【請求項2】
請求項1に記載のストレージ装置であって、
前記アクセラレータは、前記1以上の記憶ドライブから前記第1メモリを介することなく転送された前記圧縮データを、前記第2メモリに格納する、ストレージ装置。
【請求項3】
請求項1に記載のストレージ装置であって、
前記アクセラレータは、前記1以上の記憶ドライブから前記第1メモリを介して転送された前記圧縮データを、前記第2メモリに格納する、ストレージ装置。
【請求項4】
請求項1に記載のストレージ装置であって、
前記1以上の記憶ドライブを含む複数の記憶ドライブと、前記複数の記憶ドライブと前記処理装置との間のデータ転送経路を束ねるスイッチを含むドライブボックスを含み、
前記アクセラレータは、前記ドライブボックスにおいて前記スイッチに接続されている、ストレージ装置。
【請求項5】
請求項1に記載のストレージ装置であって、
前記アクセラレータは、
前記1以上の記憶ドライブに格納されている複数の圧縮データを、前記第2メモリに格納し、
前記複数の圧縮データそれぞれから、平文データを生成し、
前記平文データそれぞれから前記処理装置に指定されたデータを抽出し、
前記処理装置は、抽出された前記指定されたデータをまとめてリードデータを形成して、ホストに応答する、ストレージ装置。
【請求項6】
ストレージ装置により実行される方法であって、
前記ストレージ装置は、
第1メモリと、
前記第1メモリにデータを格納し、前記第1メモリからデータを読み出す処理装置と、
前記第1メモリと異なる第2メモリを含むアクセラレータと、を含み、
前記方法は、
前記処理装置が、
1以上の記憶ドライブに圧縮データを送信することを指示し、
前記アクセラレータに、指定データのアドレスを含む要求を送信し、
前記アクセラレータが、
前記処理装置から前記指定データのアドレスを含む要求を受信し、
前記1以上の記憶ドライブによって送信された圧縮データを
前記第2メモリに格納し、
前記第2メモリに格納された前記圧縮データを伸張して平文データを生成し
て前記第2メモリに格納し、
前記アドレスに応じて、
前記第2メモリに格納された前記平文データから、
その一部である前記指定データを抽出し、
抽出された前記指定データを前記第1メモリに送信する、方法。
【請求項7】
請求項6に記載の方法であって、
前記アクセラレータが、
前記1以上の記憶ドライブに格納されている複数の圧縮データを、前記第2メモリに格納し、
前記複数の圧縮データそれぞれから、平文データを生成し、
前記平文データそれぞれから前記処理装置に指定されたデータを抽出し、
前記処理装置が、抽出された前記指定されたデータをまとめてリードデータを形成して、ホストに応答する、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ装置に関し、より具体的には、可逆圧縮により記憶データ量を削減するストレージ装置に関する。
【背景技術】
【0002】
データストレージは、コンピュータシステムの基本的な機能である。多くのコンピュータシステムでは、大量のデータを扱う場合、それをストレージ装置に格納する。ストレージ装置は、データをHDD(Hard Disk Drive)やSSD(Solid State Drive)といった内蔵記憶媒体(記憶ドライブ)に格納し、外部からの命令に応じて、データの書き込みや読み出し処理を行う。データ保持コストは、簡単な定義(ランニングコスト等を考慮しない)において、記憶媒体のビットコスト(記憶媒体価格/記憶媒体容量)と記録データ量の積として算出される。
【0003】
近年、データ保持コストの削減を目的として、記憶媒体に格納する物理データ量を可逆圧縮アルゴリズムにより削減する技術が広く用いられている。データ量削減機能を有するストレージ装置内では、データを媒体に書き込む前に圧縮処理、データを媒体から読み出した後に伸張処理が行われる。しかし、データの圧縮及び伸張は、負荷が大きい処理であるため、ストレージ装置内のCPU(Central Processing Unit)で実行すると、外部からの命令に応じたデータの書き込みや読み出しの性能が低下する。
【0004】
例えば、特許文献1には、データの圧縮及び伸張を専用ハードウェアで高速に行うことができるアクセラレータをCPUバス上に搭載し、メモリに保持したデータや、バス上で入出力されるデータの圧縮及び伸張をアクセラレータにオフロードしてCPU負荷を減らす装置が開示されている。
【0005】
一方、データ量削減機能を有するストレージ装置において、データ保持コストをより多く削減するためには、可逆圧縮で高いデータ削減率を実現する必要がある。その方法の一つとしてデータを大きな単位で圧縮する方法がある。例えば、8kBデータが8個あるとき、それぞれを個別に圧縮するよりも、8個のデータを並べて構成した1個の64kBデータを圧縮すると、データ削減率が高くなる。ストレージ装置で用いる可逆圧縮アルゴリズムは一般にスライド辞書方式であり、圧縮単位が大きいほどより広い辞書探索空間があり、一致文字列を発見できる確率が高まるためである。
【先行技術文献】
【特許文献】
【0006】
【文献】米国特許出願公開第2017/0147624号
【発明の概要】
【発明が解決しようとする課題】
【0007】
データの圧縮単位を大きくすることにはデメリットがある。圧縮されて20kBになっている8個の8kBデータ(トータル64kBのデータ)の中から、外部からの命令に応じて1個の8kBデータを読み出したい場合を想定する。ストレージ装置は、記憶媒体から20kBデータをメモリに読み出し、それを伸張して64kBデータをメモリに展開した後、8kBデータを抽出して外部へ出力する必要がある。
【0008】
特許文献1のようなアクセラレータ接続態様を用いてデータ量削減機能を有するストレージ装置を構成すると、データの圧縮単位を64kBなど大きくした時に、メモリを読み書きするデータ量は、外部へ出力すべきデータ量に対して非常に多くなってしまう。
【0009】
CPUのメモリ帯域と記憶媒体の転送帯域を比較すると、どちらも年々伝送技術の進歩によって高速化している。これに応じてストレージ装置のデータ読み出し性能も向上している、しかし、記憶媒体の転送帯域に比べてCPUのメモリ帯域の伸び率は鈍化している傾向がある。つまり、データの圧縮単位を大きくすると、ストレージ装置のデータ読み出しにおいて、CPUのメモリ帯域がボトルネックになり、性能向上が妨げられ得る。
【課題を解決するための手段】
【0010】
本発明の一態様のストレージ装置は、第1メモリと、前記第1メモリにデータを格納し、前記第1メモリからデータを読み出す、処理装置と、前記第1メモリと異なる第2メモリを含むアクセラレータと、を含み、前記アクセラレータは、データを格納する1以上の記憶ドライブに格納されている圧縮データを、前記第2メモリに格納し、前記第2メモリに格納されている圧縮データを伸張して平文データを生成し、前記平文データから、前記処理装置に指定されたデータを抽出し、抽出された前記指定されたデータを前記第1メモリに送信する。
【発明の効果】
【0011】
本発明の一態様によれば、可逆圧縮により記憶データ量を削減するストレージ装置の性能を向上することができる。
【図面の簡単な説明】
【0012】
【
図2】第1の実施形態の圧縮伸張アクセラレータの内部構成を示す。
【
図3A】第1の実施形態のデータ圧縮単位の拡張効果を示す。
【
図3B】第1の実施形態の平文データと圧縮データの構造を示す。
【
図4】第1の実施形態の読み出しデータの抽出例を示す。
【
図5】比較例のデータ読み出し手続きの概要を示す。
【
図6】第1の実施形態のデータ読み出し手続きの概要を示す。
【
図7】第1の実施形態のデータ読み出しの一例において従来との転送量比較を示す。
【
図8】比較例のデータ読み出し手続きのフローチャートを示す。
【
図9】第1の実施形態のデータ読み出し手続きの第1のフローチャートを示す。
【
図10】第1の実施形態のデータ読み出し手続きの第2のフローチャートを示す。
【
図13】第3の実施形態のデータ読み出し手続きの概要を示す。
【
図14】第3の実施形態のデータ読み出し手続きのフローチャートを示す。
【
図15】第3の実施形態のデータ読み出しの一例において第1の実施形態との転送量比較を示す。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態を図面に基づいて詳細に説明する。以下の説明において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、以下に説明する実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
【0014】
<第1の実施形態>
(1)システム構成
図1を用いて、第1の実施形態に係る可逆圧縮を用いたデータ量削減機能を有するストレージ装置100と、それを含むシステム構成について説明する。複数台のホスト102は、ネットワーク101を経由してストレージ装置100と接続する。それぞれのホスト102は、データを管理するために、ストレージ装置100に対して、ネットワーク101を介してリード要求又はライト要求(I/O要求)等の各種要求を行う。
【0015】
ストレージ装置100は、可逆圧縮を用いたデータ量削減機能を有する。ストレージ装置100は、同一の機能を有する2台のストレージコントローラ(CTL)110を装置の高信頼化のために搭載し、データを保持する記憶媒体として記憶ドライブ130(単にドライブ130とも呼ぶ)を複数台内蔵するドライブボックス111を搭載している。ドライブボックス111は、ドライブ130及びドライブ130を収容する筐体を含む。本実施形態では、ストレージコントローラ110が2台の例について記すが、本実施形態はこのコントローラ数に限定されるものではない。例えば、ストレージ装置には、ストレージコントローラ110を3台以上搭載してもよい。
【0016】
ドライブ130は、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶媒体である。なお、本実施形態では、ドライブ130は、HDDやSSDに限定されない。
【0017】
ストレージコントローラ110は、内部にストレージ装置の各種制御を行うプロセサ(PR)128、メモリコントローラ(MC)129、FE(Front End)スイッチ122、DRAM(Dynamic Random Access Memory)125、フロントエンドインターフェース121(以降FE_I/F121と記す)、バックエンドアダプタ124(以降BE_ADP124と記す)、の各コンポーネントを搭載する。
【0018】
CPU120は、プロセサ128、メモリコントローラ129、FEスイッチ122を内蔵する半導体チップである。BE_ADP124は、BEスイッチ126とそれに接続されたアクセラレータ123を内蔵する。
【0019】
DRAM125を除く各コンポーネントは、FEスイッチ122にて相互に接続されている。この相互接続インターフェースの規格は例えばPCI-Expressである。なお、本実施形態では、ストレージコントローラ110内の接続インターフェースがPCI-Expressに限定されない。
【0020】
DRAM125は第1メモリであり、CPU120のメモリコントローラ129に接続されている。DRAM125に接続された処理装置であるCPU120は、DRAM125にデータを格納し、DRAM125からデータを読み出す。この接続インターフェースが従う規格は例えばDDR4(Double Data Rate 4)である。なお、本実施形態では、DRAM125の接続インターフェースの規格がDDR4に限定されない。
【0021】
DRAM125は、揮発性記憶媒体であり、ストレージ装置100内においてデータのキャッシュやバッファとして機能する一時的な記憶領域を提供する。揮発性記憶媒体及び不揮発性記憶媒体共に、計算機読み取り可能な非一過性記憶媒体である。
【0022】
FE_I/F121は、ストレージ装置に各種要求を行う複数のホストと接続するためのインターフェースであり、FC(Fibre Channel)やEthernet等のプロトコルを利用することができる。なお、本実施形態では、FE_I/F121が利用するプロトコルは、FC又はEthernetに限定されない。
【0023】
BE_ADP124は、ストレージ装置100に搭載される複数のドライブ130を含むドライブボックス111と接続する為のインターフェースである。BE_ADP124は、ドライブボックス111にデータを書き込みドライブボックス111からデータを読み出すためのインターフェースである。BE_ADP124は、SAS(Serial Attached SCSI)、SATA(Serial ATA)、NVMe(NVM Express)等のプロトコルを利用する。本実施形態では、BE_ADP124が利用するプロトコルは、SAS、SATA、NVMeに限定されるものではない。
【0024】
アクセラレータ123は、本実施形態の特徴的なコンポーネントであり、ストレージコントローラ110にてデータの圧縮及び伸張を高速に行うハードウェアである。アクセラレータ123は、圧縮及び伸張処理をストレージコントローラ110のCPU120に代わって高速に実行するハードウェアである。本実施形態では、アクセラレータ123を1台のストレージコントローラ110につき1台搭載する例を記すが、本実施形態はこの台数に限定されるものではない。例えば、1台のストレージコントローラ110につきアクセラレータ123を2台搭載してもよい。アクセラレータ123の詳細については、
図2を用いて後述する。
【0025】
CPU120やドライブ130は、BEスイッチ126を介してアクセラレータ123と接続し、データ転送を行い、制御情報の受け渡しを行う。
【0026】
ストレージ装置100は、複数のドライブ130を纏めて一つの記憶領域として管理し、ホスト102にデータを記憶するための領域を提供する。このとき、ドライブ130の一部が故障することによってデータを消失しないように、RAID(Redundant Arrays of Inexpensive Disks)技術による冗長化を行い、データ保障を行う。
【0027】
ドライブボックス111は、2つのストレージコントローラ110から複数のドライブ130のそれぞれへデータ転送経路を張るための2つのドライブボックススイッチ(以降DB_SW131と記す)を内蔵する。DB_SW131は、複数のドライブ130とCPU120との間のデータ転送経路を束ねる。各ドライブ130は2つのDB_SW131それぞれから転送経路を持つ。これは2つのストレージコントローラ110のいずれかが故障してもデータの読み書きを継続できるようにするためである。なお、本実施形態ではDB_SW131の数は2個に限定されない。
【0028】
(2)アクセラレータ構成
図2を用いてアクセラレータ123の内部構成について説明する。アクセラレータ123は、内部にデータ処理回路であるFPGA(Field Programmable Gate Array)210とDRAM220を含む。
【0029】
DRAM220は、DRAM125と同じ揮発性記憶媒体であるが、DRAM125と異なりCPU120に接続されていない第2メモリである。DRAM220は、アクセラレータ123内において、圧縮データや平文データの一時的な記憶領域を提供する。なお、本実施形態では、DRAM220とDRAM125が同じ揮発性記憶媒体であることに限定されない。
【0030】
FPGA210は、任意の論理回路をプログラマブルにハードウェア実装可能なデバイスである。FPGA210は、その内部に圧縮処理回路216、伸張処理回路217、データ完全性処理回路218、I/Oインターフェース211、DRAMインターフェース212、制御回路214、及びDMAC(Direct Memory Access Controller)回路215を含む。
【0031】
なお、本実施形態では、FPGA210の代わりに論理回路を固定的にハードウェア実装したASIC(Application Specific Integrated Circuit)を備えてもよい。また、FPGA(又はASIC)210は、1つの半導体チップで構成してもよいし、複数の半導体チップを相互に接続して構成してもよい。また、それぞれの半導体チップに上記の論理回路のどれを実装するかも任意である。
【0032】
DMAC215は、FPGA210内の圧縮処理回路216、伸張処理回路217、データ完全性処理回路218、I/Oインターフェース211、DRAMインターフェース212、制御回路214を接続する。DMAC215は、コンポーネント間のデータをアドレス又は識別子(ID)によって転送する。
図2ではコンポーネントがスター状に接続された様態を記すが、本実施形態では接続がこの様態に限定されるものではない。
【0033】
圧縮処理回路216は、可逆圧縮アルゴリズムにより平文データを圧縮して圧縮データを生成する論理回路である。圧縮処理回路216は、CPU120のプロセサ128よりも高速に処理することができる。
【0034】
伸張処理回路217は、可逆圧縮アルゴリズムにより圧縮データを伸張して平文データを生成する論理回路である。伸張処理回路217は、CPU120のプロセサ128よりも高速に処理することができる。
【0035】
データ完全性処理回路218は、圧縮される平文データにおいて保証コードに含まれるCRC(Cyclic Redundant Code)を生成し、伸張された平文データにおいて保証コードに含まれるCRCを検証してデータが壊れていないかを確認する論理回路である。
【0036】
I/Oインターフェース211は、外部と接続する論理回路である。I/Oインターフェース211は、外部との間でデータや制御情報を送受信する。I/Oインターフェース211は、圧縮処理時には平文データを受信し、圧縮データを送信する。I/Oインターフェース211は、伸張処理時には圧縮データを受信し、平文データを送信する。
【0037】
制御回路214は、I/Oインターフェース211と接続し、それを通じて、CPU120からアクセラレータ123に対する処理要求を受信する。また、制御回路214は、DMAC215を制御して、アクセラレータ123内のコンポーネント間のデータ転送及びI/Oインターフェース211を通じたデータ転送を行う。
【0038】
制御回路214は、CPU120からリード要求を受信した場合、要求パラメタにしたがって、ドライブ130に対してリード命令を発行する(この動作は
図9のフローでは行わないが
図10のフローで行う)。要求パラメタは、例えば、ドライブ130から読み出す対象データのアドレス、対象データ内での抽出する部分の内部アドレス、抽出した部分の転送先を示す。
【0039】
DMAC215は、ドライブ130から受信した対象データをDRAM220へ格納する。制御回路214は、圧縮処理回路216、伸張処理回路217、データ完全性処理回路218に対して、対象データについて、それぞれ上記の圧縮処理、伸張処理、保証コード処理を指示し、それらの処理結果をDRAM220に転送させる。
【0040】
そして、制御回路214は、CPU120から受信した要求パラメタにしたがって、DRAM220上の処理結果データの一部を抽出し、I/Oインターフェース211を通じてDRAM125へ送信する。さらに、制御回路214は、定期的な情報モニタリングや割り込み処理によって、FPGA210の他のコンポーネントにおいて障害が起きていないかを監視する。
【0041】
DRAMインターフェース212は、FPGA210がDRAM220のデータを読み書きするためのインターフェースである。このインターフェースが従う規格は、例えばDDR4である。なお、本実施形態では、DRAM220の接続インターフェースの規格は、DDR4に限定されない。
【0042】
DRAMインターフェース212のチャネル数は、ストレージ装置100のリード及びライト性能仕様に基づいて、圧縮データや平文データの内部転送スループット要件を算出し、それに応じて十分な帯域を持つように設計する。すなわち、圧縮データや平文データの転送において、DRAMインターフェース212の帯域がボトルネックにならないように設計する。スループット要件が高いほどチャネル数は多くなる。FPGA210はプログラマブルであるため、CPU120とDRAM125の間の最大チャネル数がCPU120の仕様で固定化されるのに比べて設計自由度が高い。
【0043】
(3)圧縮単位とデータ構造
図3A及び
図3Bを用いて、圧縮単位を拡張する効果、及び、平文データと圧縮データの構造について説明する。
図3Aにおいて、8kB平文データ301は、ストレージ装置100が外部からのリード/ライト要求によりホスト102とストレージ装置100との間で転送するデータの最小単位である。これらの8kB平文データを個別に圧縮した場合、平均して8kB平文データ301から例えば46%のデータ量が減る。
【0044】
一方、64kBデータ303は、上記の8kBデータ301を8個連結して構成したデータである。この64kBデータ303を圧縮した場合、平均して64kB平文データ303から例えば60%のデータ量が減る。このように、圧縮単位を大きくすると圧縮率が向上することが知られている。本実施形態のストレージ装置100は、圧縮単位を従来の8kBよりも大きい64kBとすることで、データ削減率を高めてデータ保持コストを削減することができる。
【0045】
図3Bは、平文データ301、圧縮データ302(304)のデータ構造を示している。平文データ301は、ホスト102がストレージ装置100に保存する正味のデータであるペイロード311と、それに対応する保証コード312からなる。保証コード312はペイロード311の保存先アドレスやCRCを含む。ストレージコントローラ110は、保証コード312によって保存先アドレスに間違いがないか、データ内容が壊れていないかを検査する。なお、この保存先アドレスはホスト102がリード及びライトするアドレス空間内の位置を識別するアドレスであり、ドライブ130のアドレスではない。
【0046】
圧縮データ302(304)は、平文データ301を圧縮した結果(または平文データ301を8個並べた平文データ303を圧縮した結果)322、ヘッダ情報321、保証コード323からなる。ヘッダ情報321は圧縮結果322のサイズを含む。保証コード323は圧縮結果322の保存先アドレスやCRCを含む。ストレージコントローラ110は、保証コード323によって保存先アドレスに間違いがないか、データ内容が壊れていないかを検査する。なお、この保存先アドレスは複数のドライブ130で構成されるアドレス空間内の位置をストレージコントローラ110が識別するアドレスである。
【0047】
アクセラレータ123内のデータ完全性処理回路218は、圧縮及び伸張処理を行う際に、保証コード312や323内のCRCを生成及び検査する。
【0048】
(4)読み出しデータの抽出
図4を用いて、ストレージコントローラ110がホスト102からのリード要求データを構成する方法について説明する。
【0049】
ホスト102は、ストレージ装置100に対して、8kB平文データ301をランダムなアドレス順にライトする可能性がある。その場合、ストレージコントローラ110はDRAM125に8kB平文データ301をライト順に8個格納するたびに64kB平文データ303を構成する。
【0050】
図4は、24個の8kB平文データ301がランダムなアドレス順にライトされ、3個の64kB平文データ303A、303B、303Cが、それぞれ8個の8kB平文データ301からなる組から構成される例を示す。8個の8kB平文データ301からなる組それぞれにおける一つの8kB平文データが、例として、符号301で指示されている。8kB平文データ301を示す矩形内の数字は、ホスト102がリード及びライトするアドレス空間内の位置を識別するアドレスである。ストレージコントローラ110は、3個の64kB平文データを個別に圧縮してドライブ130に保存する。
【0051】
のちに、ホスト102は、ストレージ装置100に対して8kB平文データ301をシーケンシャルなアドレス順にリードする可能性がある。
図4は、3個の8kB平文データ301からなり、アドレスが005、006、007の順であるシーケンシャルな24kB平文データ401をホスト102がリードする例を示す。
【0052】
図4の例において、ストレージコントローラ110は、3個の64kB平文データ303A、303B、303Cそれぞれを圧縮した3個の64kB圧縮データ304をドライブ130から読み出す。ストレージコントローラ110は、3個の64kB圧縮データ304それぞれを伸張し、3個の64kB平文データ303A、303B、303Cを復元する。ストレージコントローラ110は、それらから、アドレスが005、006、007である3個の8kB平文データ301を抽出し、ホスト102が要求するリードデータ401を構成する。
【0053】
もし、圧縮単位が8kBであれば、ストレージコントローラ110は3個の8kB平文データ302を圧縮したデータをドライブ130から読み出し、それぞれを伸張する。ストレージコントローラ110は、3個の8kB平文データ301でホスト102が要求するリードデータ401を構成する。
【0054】
つまり、圧縮単位を拡張すると、上述のようにホスト102がランダムなアドレス順にライトしてからシーケンシャルにリードするアクセスをするような場合に、ストレージコントローラ110は多くのデータをドライブ130から読み出して伸張する必要がある。これによって、ストレージコントローラ110内のデータ転送経路の帯域消費は増えるため、転送帯域がボトルネックになってストレージ装置100の性能が低下する可能性がある。
【0055】
(5)データ読み出し手続き
図5及び
図6を用いて、比較例と本実施形態におけるデータ読み出し手続きについて説明する。
図5は、比較例のストレージ装置における、圧縮単位を拡張した時のデータ読み出し手続きを示している。
図1に示す本実施形態のストレージ装置100と比較して、FEスイッチ122に接続された圧縮伸張エンジン127が追加されている。また、BE_ADP141は、
図1に示すBE_ADP124と異なり、アクセラレータを内蔵していない。圧縮伸張エンジン127は、
図1に示すアクセラレータ123と同様に、データの圧縮及び伸張を高速に行うハードウェアであり、プロセサ128の処理指示に応じて、DRAM125からのデータを入力として圧縮又は伸張してDRAM125に出力する。
【0056】
図5において、CPU120は、ドライブ130から3個の64kB圧縮データ(Comp_A(304A)、Comp_B(304B)、Comp_C(304C))を、BE_ADP141、FE_SW122、メモリコントローラ129を経由して、DRAM125に読み出す。次に、CPU120は、メモリコントローラ129、FE_SW122を経由して3個の64kB圧縮データ304A、304B、304Cを、DRAM125から圧縮伸張エンジン127に転送し、それらの伸張を指示する。
【0057】
圧縮伸張エンジン127は、3個の64kB圧縮データ304A、304B、304Cを伸長して、3個の64kB平文データ(Plain_A(303A)、Plain_B(303B)、Plain_C(303C))を生成する。圧縮伸張エンジン127は、FE_SW122及びメモリコントローラ129を経由して、DRAM125に3個の64kB平文データ303A、303B、303Cを転送する。
【0058】
CPU120は、そこから3個の8kB平文データを抽出し、ホスト102が要求しているリードデータ(Data_X(401))を、構成してDRAM125に格納する。CPU120は、リードデータ181を、メモリコントローラ129、FE_SW122及びFE_I/F121を経由して、ホスト102に応答する。
【0059】
図6は、本実施形態で圧縮単位を拡張した時のデータ読み出し手続きを示している。CPU120は、ドライブ130から、3個の64kB圧縮データ(Comp_A(304A)、Comp_B(304B)、Comp_C(304C))を、BE_ADP124のBE_SW126を経由してアクセラレータ123内のDRAM220に読み出す。このように、ドライブ130に格納されている圧縮データ304A、304B、304Cは、DRMA125を介することなく、DRAM220に転送される。
【0060】
次に、アクセラレータ123は、3個の64kB圧縮データ304A、304B、304Cを伸張し、DRAM220に3個の64kB平文データ(Plain_A(303A)、Plain_B(303B)、Plain_C(303C))を保持する。アクセラレータ123は、3個の64kB平文データ303A、303B、303Cから、指定された3個の8kB平文データを抽出し、FE_SW122及びメモリコントローラ129を経由してDRAM125に転送する。CPU120は、3個の8kB平文データからホスト102が要求しているリードデータ(Data_X(401))を構成して、FE_SW122及びFE_I/F121を経由してホスト102に応答する。
【0061】
(6)データ読み出しにおける転送量の比較
図7を用いて、比較例と本実施形態におけるデータ読み出しにおいて、ストレージ装置100内を転送するデータの量を比較する。
図7の表700は、ストレージ装置100がホスト102のリード要求に応じて
図4に示した3個の8kB平文データを応答する場合を例に、ストレージ装置100内部の各コンポーネントを通過するデータの転送方向とデータ量(単位はkB)の一例を示している。
【0062】
列701はコンポーネント名、列702は転送方向(入力、出力、転送元、又は転送先)を示す。列703は
図5に示す比較例のデータ読み出しについて圧縮単位を8kBとした場合の転送データ量を示す。列704は比較例のデータ読み出しについて圧縮単位を64kBに拡張した場合の転送データ量を示す。列705は本実施形態のデータ読み出しについて圧縮単位を64kBに拡張した場合の転送データ量を示す。表700において、一部のセルのデータ量は3つの値の和で表されており、各値は、圧縮単位のデータ(圧縮又は平文データ)のデータサイズを示す。
【0063】
この例では、アドレス005、006、007の8kB平文データ301は圧縮によって、平均で46%圧縮され、4kB、5kB、4kBになっていると仮定する。また、アドレス005、006、007の8kBデータをそれぞれ含む64kB平文データ303A、303B、303Cは、圧縮によって、平均で60%圧縮され、それぞれ20kB、30kB、26kBになっていると仮定する。
【0064】
列703が示す比較例のデータの流れを説明する。3個の8kB圧縮データが、ドライブ130から、BE_ADP141、FE_SW122、及びメモリコントローラ129を経由して、DRAM125に格納される(行「1」、「8」、「9」)。3個の8kB圧縮データが、メモリコントローラ129、FE_SW122を経由して、DRAM125から圧縮伸張エンジン127に転送される(行「10」、「11」、「12」)。
【0065】
伸張された3個の8kB平文データは、圧縮伸張エンジン127から、FE_SW122及びメモリコントローラ129を経由して、DRAM125に転送される(行「13」、「14」、「15」)。3個の8kB平文データから形成されたリードデータが、DRAM125から、メモリコントローラ129、FE_SW122及びFE_I/F121を経由して、ホスト102に転送される(行「18」、「19」)。
【0066】
次に、列704が示す比較例のデータの流れを説明する。3個の64kB圧縮データが、ドライブ130から、BE_ADP141、FE_SW122、及びメモリコントローラ129を経由して、DRAM125に格納される(行「1」、「8」、「9」)。3個の64kB圧縮データが、メモリコントローラ129、FE_SW122を経由して、DRAM125から圧縮伸張エンジン127に転送される(行「10」、「11」、「12」)。
【0067】
伸張された3個の64kB平文データは、圧縮伸張エンジン127から、FE_SW122及びメモリコントローラ129を経由して、DRAM125に転送される(行「13」、「14」、「15」)。3個の64kB平文データから、3個の4kB平文データが抽出されて、リードデータが構成される(行「16」、「17」)。形成されたリードデータが、DRAM125から、メモリコントローラ129、FE_SW122及びFE_I/F121を経由して、ホスト102に転送される(行「18」、「19」)。
【0068】
次に、列705が示す本実施形態のデータの流れを説明する。3個の64kB圧縮データが、BE_ADP124のBE_SW126を経由してアクセラレータ123内のDRAM220に転送される(行「1」、「2」)。3個の64kB圧縮データが、DRAM220からアクセラレータ123内のFPGA210に転送される(行「3」、「4」)。
【0069】
次に、伸張された3個の64kB平文データが、FPGA210からアクセラレータ123内のDRAM220に転送される(行「5」、「6」)。3個の64kB平文データから抽出された3個の8kB平文データが、DRAM220から、FE_SW122及びメモリコントローラ129を経由してDRAM125に転送される(行「7」、「8」、「15」)。DRAM125からCPU120に転送された3個の8kB平文データからリードデータが構成され(行「18」)、FE_SW122及びFE_I/F121を経由して、ホスト102に転送される(行「19」)。
【0070】
表700の下から3行目は、アクセラレータ123内のDRAM220に入出力するデータ量の合計を示す。下から2行目は、DRAM125に入出力するデータ量の合計を示す。比較例においては、圧縮単位を拡張すると、列704に示すように、DRAM125に入出力するデータ量が48kBから416kBへと非常に多くなることがわかる。
【0071】
列705に示すように、本実施形態では、圧縮単位を拡張してもDRAM125に入出力するデータ量は48kBのままである。ただし、DRAM220に入出力するデータ量は368kBである。48+368=416であるため、本実施形態の手続きでもDRAMに入出力するデータ量の合計は従来の手続きと変わらないが、CPU120に接続するDRAM125に入出力するデータ量の増加を抑えることができる。
【0072】
例えば、3個の8kB平文データ301をホスト102に要求されている時間で応答するには、CPU120が内蔵するメモリコントローラ129のチャネル数で200kB以下のデータ量に抑えることが必要だと仮定する。圧縮単位の拡張で入出力データ量が416kBに多くなってしまうと、DRAM転送がボトルネックとなり、ストレージ装置100のリード性能が落ちることを意味する。
【0073】
一方、本実施形態では、
図2を参照して説明したように、アクセラレータ123はFPGA210がDRAM220を読み書きするインターフェースを持つため、そのチャネル数はプログラマブルに設計できる。例えば、アクセラレータ123内のFPGA210のDRAMインターフェース212が、CPU120が内蔵するメモリコントローラ129の2倍のチャネル数を持つように論理設計すると、400kBのデータ量まで性能低下が起きなくなる。
【0074】
そのため、圧縮単位の拡張でDRAM220の入出力データ量が368kBになっても、DRAM転送がボトルネックとならず、ストレージ装置100のリード性能が落ちない。FPGAと異なるハードウェア、例えばASICを利用する場合も、CPU120とは独立にDRAM220とのチャネル数を設計できるので、同様の効果を達成できる。
【0075】
表700の下から1行目は、FE_SW122を経由したDRAM125への入出力データ量の合計を示す。比較例の8kB単位の圧縮では74kBであり、64kB単位の圧縮にすると368kBに増える。本実施形態でのデータ量は48kBであり、比較例より圧縮単位の増加によるデータ量の増加を少なくすることができる。
【0076】
これは、CPU120内のFE_SW122の帯域消費を抑えられるため、FE_SW122の転送帯域がストレージ装置100のリード性能のボトルネックとなるリスクも減らすことができる。上記例は、三つの圧縮データを伸張した平文データからリードデータを構成するが、読み出される圧縮データ数は、ホスト102からのリード要求による。上述のように、複数の圧縮データをそれぞれ伸張し、部分データを抽出してリードデータを形成する場合、本実施形態は比較例に対してより大きな効果を奏することができる。
【0077】
(7)データ読み出し手続きのフローチャート
図8、
図9、
図10を用いて、比較例と本実施形態のデータ読み出し手続きのフローチャートを示す。
図8は、比較例のデータ読み出し手続きのフローチャートである。CPU120、圧縮伸張エンジン127、ドライブ130が行う処理を3列に区分けしている。
【0078】
最初に、CPU120は、ドライブ130に圧縮データのリード命令を発行する(801)。ドライブ130は、リード命令に応じて読み出した圧縮データを、CPU120に接続したDRAM125(
図8ではCTLのDRAM)に転送する(802)。CPU120は圧縮データをDRAM125に保持する(803)。
【0079】
次に、CPU120は圧縮伸張エンジン127に圧縮データを送り、その伸張を要求する(804)。圧縮伸張エンジン127は、伸張要求に応じて圧縮データを伸張する(805)。伸張結果である平文データは、DRAM125に転送される。
【0080】
CPU120は平文データから、ホスト102からリード要求されているデータ部分を抽出し(806)、それらのデータ部分を用いて、リードデータを形成する(807)。最後に、CPU120は、ホスト102へリードデータを応答する(808)。
【0081】
図9及び
図10は、それぞれ本実施形態のデータ読み出し手続きのフローチャートである。いずれも、CPU120、アクセラレータ123、ドライブ130が行う処理を3列に区分けしている。
【0082】
ここでは、CPU120からの読み出し指示の発行方法として、2種類の例を示す。
図9は、ドライブ130とアクセラレータ123に個別に指示を出す例である。
図10は、アクセラレータ123に一括で指示を出す例である。
【0083】
図9では、最初に、CPU120は、ドライブ130に、圧縮データのリード命令を発行する(901)。リード命令はドライブ130の読み出し開始アドレス及び読み出しサイズ並びにデータ転送先を示すパラメタを含む。
【0084】
ドライブ130は、ステップ901の要求パラメタにしたがって読み出した64kB圧縮データ304A、340B、304Cを、指定されたアクセラレータ123内のDRAM220(
図9ではアクセラレータのDRAM)に転送する(902)。アクセラレータ123は、64kB圧縮データ304をDRAM220に保持する(903)。ドライブ130は、転送完了をCPU120に通知する。
【0085】
次に、転送完了の通知を受けたCPU120は、アクセラレータ123に、平文データ部分を要求する(904)。この要求は、64kB平文データ303A~303Cそれぞれにおいて、ホスト102へのリード応答に必要なデータ部分の開始アドレス(第2アドレス)及びサイズ、並びに転送先を含む。
【0086】
アクセラレータ123は、上記要求に応じて、64kB圧縮データ304A、304B、304Cを伸張する(905)。そして、ステップ904の要求パラメタにしたがって、伸張結果である64kB平文データ303A、303B、303Cそれぞれから、データ部分を抽出する(906)。アクセラレータ123は、抽出したデータ部分をCPU120に接続したDRAM125(
図9ではCTLのDRAM)に転送する(907)。
【0087】
CPU120は、それらのデータ部分を用いて、リードデータ401を形成する(908)。最後に、CPU120は、ホスト102へリードデータ401を応答する(909)。上述のように、CPU120は、ドライブ130に圧縮データをDRAM220に送信することを指示し、アクセラレータ123は、CPU120から抽出するデータのアドレスを含む要求を受信し、指定されたデータを平文データから抽出する。上記フローにより、アクセラレータ123の処理を低減して、その回路構成を小さくすることができる。
【0088】
一方、
図10に示すフローでは、最初に、CPU120は、アクセラレータ123に平文データ部分を要求する(1001)。この要求のパラメタは、ドライブ130の読み出し開始アドレス(第1アドレス)及び読み出しサイズ、64kB平文データ303においてホスト102へのリード応答に必要なデータ部分の開始アドレス(第2アドレス)及びサイズ、並びにデータ部分の転送先を含む。
【0089】
アクセラレータ123は、ステップ1001の要求パラメタにしたがって、ドライブ130に圧縮データのリード命令を発行する(1002)。リード命令は
図9を参照して説明した例と同様である。ドライブ130は、リード命令応じて読み出した64kB圧縮データ304A、304B、304Cを、アクセラレータ123内のDRAM220(
図10ではアクセラレータのDRAM)に転送する(1003)。アクセラレータ123は64kB圧縮データ304A、304B、304CをDRAM220に保持する(1004)。
【0090】
次に、アクセラレータ123は、64kB圧縮データ304A、304B、304Cを伸張する(1005)。そして、アクセラレータ123は、ステップ1001の要求パラメタにしたがって、伸張結果である64kB平文データ303A、303B、303Cからホスト102へのリード応答に必要なデータ部分を抽出する(1006)。アクセラレータ123は、抽出した出た部分をCPU120に接続したDRAM125(
図10ではCTLのDRAM)に転送する(1007)。
【0091】
CPU120は、それらのデータ部分を用いて、リードデータ401を形成する(1008)。最後に、CPU120は、ホスト102へリードデータ401を応答する(1009)。上述のように、アクセラレータ123は、CPU120から、ドライブ130に格納されている圧縮データの開始アドレスと、平文データから抽出するデータの開始アドレスと、を含む要求を受信する。アクセラレータ123は、圧縮データの開始アドレスを指定して、ドライブ130に圧縮データをDRMA220に送信することを指示し、指定された開始アドレスに従ってデータを平文データから抽出する。上記フローにより、CPU120の処理を低減して、ストレージ装置の性能を高めることができる。
【0092】
<第2の実施形態>
図11を用いて、第2の実施形態に係るストレージ装置100とそれを含むシステム構成について説明する。
図1で示した第1の実施形態との差分を主に説明する。
【0093】
第2の実施形態において、アクセラレータ145は、ストレージコントローラ110内には搭載されず、ドライブボックス111内に搭載される。
図11の構成例において、2台のアクセラレータ145が一つのドライブボックス111に搭載され、冗長化されている。ストレージコントローラ110は、BE_ADP124の代わりにBE_SW126を搭載する。BE_SW126にはアクセラレータは接続されない。
【0094】
ドライブボックス111内の2台のDB_SW131は、それぞれ、各ドライブ130と接続するのに加えて、1台のアクセラレータ145と接続する。例えば、1代のBE_SW126が故障しても、稼働を維持できる。第2の実施形態のアクセラレータ145は、第1の実施形態のアクセラレータ123と同じ動作を行う。
【0095】
第2の実施形態は、ドライブボックス111(ドライブ130)の台数があとから増える場合に有効である。第1の実施形態では、ドライブボックス111の台数が少ない時にはアクセラレータ123の性能が過剰になって無駄なコストがかかり得る。また、ドライブボックス111の台数が多くなると、アクセラレータ123の性能が不足する可能性がある。第2の実施形態は、アクセラレータ145の数がドライブボックス111(ドライブ130)の台数に応じて増えるため、無駄なコストを抑え、アクセラレータの性能不足のリスクを低減できる。
【0096】
<第3の実施形態>
図12を用いて、第3の実施形態に係るストレージ装置100とそれを含むシステム構成について説明する。なお、
図1で示した第1の実施形態との差分を主に説明する。
【0097】
第3の実施形態において、アクセラレータ146は、ストレージコントローラ110内のBE_SW126ではなく、FE_SW122に接続される。アクセラレータ146は、前述の第1の実施形態におけるアクセラレータ123及び第2の実施形態におけるアクセラレータ145と異なり、ドライブ130から直接データを読み出す機能を持たない。ただし、アクセラレータ146は、
図2に示すアクセラレータ123と同様の内部構成である。なお、アクセラレータ146は、BE_SW126に接続されてもよい。
【0098】
第3の実施形態は、ドライブ130へのアクセス制御をアクセラレータ146で実施する必要がないため、第1及び第2の実施形態と比較し、アクセラレータを非搭載の既存ストレージ装置にアクセラレータを後付けする場合、または
図5の比較例で示したストレージ装置の圧縮伸張エンジン127を置き換える場合に有効である。これは、ドライブ130へのアクセス制御を従来通りCPU120で実施するため、アクセラレータ146に実装する機能を少なくできるうえ、アクセラレータ146はドライブ130への直接アクセスが必要ないため、アクセラレータ146の搭載場所の選択肢を多くとれるためである。
【0099】
(1)第3の実施形態におけるデータ読み出し手続き
図13を用いて、第3の実施形態におけるデータ読み出し手続きについて説明する。
図13は、第3の実施形態で圧縮単位を拡張した時のデータ読み出し手続きを示している。CPU120は、ドライブ130から3個の64kB圧縮データ(Comp_A(304A)、Comp_B(304B)、Comp_C(304C))を、BE_ADP141、FE_SW122、及びメモリコントローラ129を経由して、DRAM125に読み出す。次に、CPU120は、メモリコントローラ129、FE_SW122を経由して3個の64kB圧縮データ304A、304B、304Cを、DRAM125からアクセラレータ146に転送し、それらの伸張を指示する。このように、ドライブ130に格納されている圧縮データ304A、304B、304Cは、DRMA125を介して、DRAM220に転送される。
【0100】
次に、アクセラレータ146は、3個の64kB圧縮データ304A、304B、304Cを伸張し、DRAM220に3個の64kB平文データPlain_A(303A)、Plain_B(303B)、Plain_C(303C)を保持する。アクセラレータ146は、3個の64kB平文データ303A、303B、303Cから、指定された3個の8kB平文データを抽出し、FE_SW122及びメモリコントローラ129を経由してDRAM125に転送する。CPU120は、3個の8kB平文データからホスト102が要求しているリードデータData_X(401)を構成して、FE_SW122及びFE_I/F121を経由してホスト102に応答する。
【0101】
(2)第3の実施形態を含むデータ読み出しにおける転送量の比較
図14を用いて、第3の実施形態におけるデータ読み出しにおいて、ストレージ装置100内を転送するデータの量を比較する。
図14の表1400は、ストレージ装置100がホスト102のリード要求に応じて
図13に示した3個の8kB平文データを応答する場合を例に、ストレージ装置100内部の各コンポーネントを通過するデータの転送方向とデータ量(単位はkB)の一例を示している。
【0102】
列1401はコンポーネント名、列1402は転送方向(入力、出力、転送元、又は転送先)を示す。列1403は、
図7に示す列704に相当し、比較例のデータ読み出しについて圧縮単位を64kBに拡張した場合の転送データ量を示す。列1404は、
図7に示す列705に相当し、第1の実施形態におけるデータ読み出しについて、圧縮単位を64kBに拡張した場合の転送データ量を示す。列1405は、第3の実施形態におけるデータ読み出しについて、圧縮単位を64kBに拡張した場合の転送データ量を示す。表1400において、一部のセルのデータ量は3つの値の和で表されており、各値は、圧縮単位のデータ(圧縮又は平文データ)のデータサイズを示す。なお、
図14で示したデータサイズの試算は、
図7と同じ条件で実施しており、重複する内容の説明は省略する。
【0103】
図13及び14を参照して、列1405が示す第3の実施形態におけるデータの流れを説明する。3個の64kB圧縮データ304A、304B、304Cが、ドライブ130から、BE_ADP141、FE_SW122、及びメモリコントローラ129を経由して、DRAM125に格納される(行「1」、「A」、「B」)。3個の64kB圧縮データ304A、304B、304Cが、メモリコントローラ129、FE_SW122を経由して、DRAM125からアクセラレータ146に転送される(行「C」、「D」、「2」)。3個の64kB圧縮データ304A、304B、304Cが、DRAM220からアクセラレータ123内のFPGA210に転送される(行「3」、「4」)。
【0104】
次に、伸張された3個の64kB平文データ303A、303B、303Cが、FPGA210からアクセラレータ123内のDRAM220に転送される(行「5」、「6」)。3個の64kB平文データ303A、303B、303Cから抽出された3個の8kB平文データが、DRAM220から、FE_SW122及びメモリコントローラ129を経由してDRAM125に転送される(行「7」、「8」、「15」)。DRAM125からCPU120に転送された3個の8kB平文データからリードデータ401が構成され(行「18」)、FE_SW122及びFE_I/F121を経由して、ホスト102に転送される(行「19」)。
【0105】
表1400の下から3行目は、アクセラレータ146内のDRAM220に入出力するデータ量の合計を示す。また、下から2行目は、DRAM125に入出力するデータ量の合計を示す。列1404に示す第1の実施形態と、列1405に示す第3の実施形態を比較すると、DRAM220への入出力データ量は同等である。一方、DRAM125への入出力データ量は、第3の実施形態の方が152kB多い。ただし、列1403に示す比較例に対しては、第3の実施形態は、DRAM125への入出力データ量を半分以下(416kBから200kB)に削減できる。
【0106】
表1400の下から1行目は、CPU120内のFE_SW122を経由したDRAM125への入出力データ量の合計を示す。列1404に示す第1の実施形態と、列1405に示す第3の実施形態を比較すると、第3の実施形態の入出力データ量が、第1の実施形態の入出力データ量より152kB多い。ただし、列1403に示す比較例に対しては、第3の実施形態は、入出力データ量を約半分(368kBから200kB)に削減できる。
【0107】
以上より、第3の実施形態は、第1及び第2の実施形態に対して効果は劣るものの、DRAM125とCPU120内のFE_SW122の帯域消費を低減できる。このため、これらの帯域がストレージ装置100のリード性能のボトルネックとなっている場合、第3の実施形態をとることにより、ストレージ装置100のリード性能を向上させることができる。
【0108】
(3)第3の実施形態におけるデータ読み出し手続きのフローチャート
図15を用いて、第3の実施形態におけるデータ読み出し手続きのフローチャートを示す。CPU120、アクセラレータ146、ドライブ130が行う処理を3列に区分けしている。
【0109】
最初に、CPU120は、ドライブ130に圧縮データのリード命令を発行する(1501)。ドライブ130は、リード命令に応じて読み出した圧縮データを、CPU120に接続したDRAM125(
図15ではCTLのDRAM)に転送する(1502)。CPU120は圧縮データをDRAM125に保持する(1503)。
【0110】
次に、CPU120はアクセラレータ146に圧縮データを送り、平文データ部分を要求する(1504)。この要求は、64kB平文データ303A~303Cそれぞれにおいて、ホスト102へのリード応答に必要なデータ部分の開始アドレス(第2アドレス)及びサイズ、並びに転送先を含む。
【0111】
アクセラレータ146は、上記要求に応じて、64kB圧縮データ304A、304B、304Cを伸張する(1505)。そして、ステップ1504の要求パラメタにしたがって、伸張結果である64kB平文データ303A、303B、303Cそれぞれから、データ部分を抽出する(1506)。アクセラレータ146は、抽出したデータ部分をCPU120に接続したDRAM125(
図15ではCTLのDRAM)に転送する(1507)。
【0112】
CPU120は、それらのデータ部分を用いて、リードデータ401を形成する(1508)。最後に、CPU120は、ホスト102へリードデータ401を応答する(1509)。上述のように、アクセラレータ146は、CPU120から、圧縮データと、平文データから抽出するデータの開始アドレスと、を含む要求を受信する。アクセラレータ146は、圧縮データをCPU120のDRAM125から読み出し、データを伸張し、指定された開始アドレスに従ってデータを平文データから抽出する。上記フローにより、CPU120の処理を低減して、ストレージ装置の性能を高めることができる。
【0113】
なお、本発明は、ストレージコントローラ110内のコンポーネントとして
図1、11、又は12に示すコンポーネントを持つストレージ装置100に限定されるものではない。例えば、ストレージコントローラ110やドライブボックス111内にデータを暗号化するアクセラレータを搭載したストレージ装置100でもよい。
【0114】
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0115】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
【0116】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0117】
100…ストレージ装置、110…ストレージコントローラ、120…CPU、122…FE_SW、123…アクセラレータ、125、220…DRAM、130…ドライブ