JP7197541B2 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
JP7197541B2
JP7197541B2 JP2020139199A JP2020139199A JP7197541B2 JP 7197541 B2 JP7197541 B2 JP 7197541B2 JP 2020139199 A JP2020139199 A JP 2020139199A JP 2020139199 A JP2020139199 A JP 2020139199A JP 7197541 B2 JP7197541 B2 JP 7197541B2
Authority
JP
Japan
Prior art keywords
data
memory
accelerator
dram
storage device
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.)
Active
Application number
JP2020139199A
Other languages
English (en)
Other versions
JP2021166029A (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
Priority to CN202110122069.1A priority Critical patent/CN113552999A/zh
Priority to US17/172,206 priority patent/US11360669B2/en
Publication of JP2021166029A publication Critical patent/JP2021166029A/ja
Priority to US17/752,923 priority patent/US11625168B2/en
Priority to JP2022199500A priority patent/JP7479441B2/ja
Application granted granted Critical
Publication of JP7197541B2 publication Critical patent/JP7197541B2/ja
Priority to US18/118,249 priority patent/US20230205419A1/en
Active 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • 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/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、ストレージ装置に関し、より具体的には、可逆圧縮により記憶データ量を削減するストレージ装置に関する。
データストレージは、コンピュータシステムの基本的な機能である。多くのコンピュータシステムでは、大量のデータを扱う場合、それをストレージ装置に格納する。ストレージ装置は、データをHDD(Hard Disk Drive)やSSD(Solid State Drive)といった内蔵記憶媒体(記憶ドライブ)に格納し、外部からの命令に応じて、データの書き込みや読み出し処理を行う。データ保持コストは、簡単な定義(ランニングコスト等を考慮しない)において、記憶媒体のビットコスト(記憶媒体価格/記憶媒体容量)と記録データ量の積として算出される。
近年、データ保持コストの削減を目的として、記憶媒体に格納する物理データ量を可逆圧縮アルゴリズムにより削減する技術が広く用いられている。データ量削減機能を有するストレージ装置内では、データを媒体に書き込む前に圧縮処理、データを媒体から読み出した後に伸張処理が行われる。しかし、データの圧縮及び伸張は、負荷が大きい処理であるため、ストレージ装置内のCPU(Central Processing Unit)で実行すると、外部からの命令に応じたデータの書き込みや読み出しの性能が低下する。
例えば、特許文献1には、データの圧縮及び伸張を専用ハードウェアで高速に行うことができるアクセラレータをCPUバス上に搭載し、メモリに保持したデータや、バス上で入出力されるデータの圧縮及び伸張をアクセラレータにオフロードしてCPU負荷を減らす装置が開示されている。
一方、データ量削減機能を有するストレージ装置において、データ保持コストをより多く削減するためには、可逆圧縮で高いデータ削減率を実現する必要がある。その方法の一つとしてデータを大きな単位で圧縮する方法がある。例えば、8kBデータが8個あるとき、それぞれを個別に圧縮するよりも、8個のデータを並べて構成した1個の64kBデータを圧縮すると、データ削減率が高くなる。ストレージ装置で用いる可逆圧縮アルゴリズムは一般にスライド辞書方式であり、圧縮単位が大きいほどより広い辞書探索空間があり、一致文字列を発見できる確率が高まるためである。
米国特許出願公開第2017/0147624号
データの圧縮単位を大きくすることにはデメリットがある。圧縮されて20kBになっている8個の8kBデータ(トータル64kBのデータ)の中から、外部からの命令に応じて1個の8kBデータを読み出したい場合を想定する。ストレージ装置は、記憶媒体から20kBデータをメモリに読み出し、それを伸張して64kBデータをメモリに展開した後、8kBデータを抽出して外部へ出力する必要がある。
特許文献1のようなアクセラレータ接続態様を用いてデータ量削減機能を有するストレージ装置を構成すると、データの圧縮単位を64kBなど大きくした時に、メモリを読み書きするデータ量は、外部へ出力すべきデータ量に対して非常に多くなってしまう。
CPUのメモリ帯域と記憶媒体の転送帯域を比較すると、どちらも年々伝送技術の進歩によって高速化している。これに応じてストレージ装置のデータ読み出し性能も向上している、しかし、記憶媒体の転送帯域に比べてCPUのメモリ帯域の伸び率は鈍化している傾向がある。つまり、データの圧縮単位を大きくすると、ストレージ装置のデータ読み出しにおいて、CPUのメモリ帯域がボトルネックになり、性能向上が妨げられ得る。
本発明の一態様のストレージ装置は、第1メモリと、前記第1メモリにデータを格納し、前記第1メモリからデータを読み出す、処理装置と、前記第1メモリと異なる第2メモリを含むアクセラレータと、を含み、前記アクセラレータは、データを格納する1以上の記憶ドライブに格納されている圧縮データを、前記第2メモリに格納し、前記第2メモリに格納されている圧縮データを伸張して平文データを生成し、前記平文データから、前記処理装置に指定されたデータを抽出し、抽出された前記指定されたデータを前記第1メモリに送信する。
本発明の一態様によれば、可逆圧縮により記憶データ量を削減するストレージ装置の性能を向上することができる。
第1の実施形態のシステムの構成を示す。 第1の実施形態の圧縮伸張アクセラレータの内部構成を示す。 第1の実施形態のデータ圧縮単位の拡張効果を示す。 第1の実施形態の平文データと圧縮データの構造を示す。 第1の実施形態の読み出しデータの抽出例を示す。 比較例のデータ読み出し手続きの概要を示す。 第1の実施形態のデータ読み出し手続きの概要を示す。 第1の実施形態のデータ読み出しの一例において従来との転送量比較を示す。 比較例のデータ読み出し手続きのフローチャートを示す。 第1の実施形態のデータ読み出し手続きの第1のフローチャートを示す。 第1の実施形態のデータ読み出し手続きの第2のフローチャートを示す。 第2の実施形態のシステムの構成を示す。 第3の実施形態のシステムの構成を示す。 第3の実施形態のデータ読み出し手続きの概要を示す。 第3の実施形態のデータ読み出し手続きのフローチャートを示す。 第3の実施形態のデータ読み出しの一例において第1の実施形態との転送量比較を示す。
以下、本発明の実施形態を図面に基づいて詳細に説明する。以下の説明において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、以下に説明する実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
<第1の実施形態>
(1)システム構成
図1を用いて、第1の実施形態に係る可逆圧縮を用いたデータ量削減機能を有するストレージ装置100と、それを含むシステム構成について説明する。複数台のホスト102は、ネットワーク101を経由してストレージ装置100と接続する。それぞれのホスト102は、データを管理するために、ストレージ装置100に対して、ネットワーク101を介してリード要求又はライト要求(I/O要求)等の各種要求を行う。
ストレージ装置100は、可逆圧縮を用いたデータ量削減機能を有する。ストレージ装置100は、同一の機能を有する2台のストレージコントローラ(CTL)110を装置の高信頼化のために搭載し、データを保持する記憶媒体として記憶ドライブ130(単にドライブ130とも呼ぶ)を複数台内蔵するドライブボックス111を搭載している。ドライブボックス111は、ドライブ130及びドライブ130を収容する筐体を含む。本実施形態では、ストレージコントローラ110が2台の例について記すが、本実施形態はこのコントローラ数に限定されるものではない。例えば、ストレージ装置には、ストレージコントローラ110を3台以上搭載してもよい。
ドライブ130は、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶媒体である。なお、本実施形態では、ドライブ130は、HDDやSSDに限定されない。
ストレージコントローラ110は、内部にストレージ装置の各種制御を行うプロセサ(PR)128、メモリコントローラ(MC)129、FE(Front End)スイッチ122、DRAM(Dynamic Random Access Memory)125、フロントエンドインターフェース121(以降FE_I/F121と記す)、バックエンドアダプタ124(以降BE_ADP124と記す)、の各コンポーネントを搭載する。
CPU120は、プロセサ128、メモリコントローラ129、FEスイッチ122を内蔵する半導体チップである。BE_ADP124は、BEスイッチ126とそれに接続されたアクセラレータ123を内蔵する。
DRAM125を除く各コンポーネントは、FEスイッチ122にて相互に接続されている。この相互接続インターフェースの規格は例えばPCI-Expressである。なお、本実施形態では、ストレージコントローラ110内の接続インターフェースがPCI-Expressに限定されない。
DRAM125は第1メモリであり、CPU120のメモリコントローラ129に接続されている。DRAM125に接続された処理装置であるCPU120は、DRAM125にデータを格納し、DRAM125からデータを読み出す。この接続インターフェースが従う規格は例えばDDR4(Double Data Rate 4)である。なお、本実施形態では、DRAM125の接続インターフェースの規格がDDR4に限定されない。
DRAM125は、揮発性記憶媒体であり、ストレージ装置100内においてデータのキャッシュやバッファとして機能する一時的な記憶領域を提供する。揮発性記憶媒体及び不揮発性記憶媒体共に、計算機読み取り可能な非一過性記憶媒体である。
FE_I/F121は、ストレージ装置に各種要求を行う複数のホストと接続するためのインターフェースであり、FC(Fibre Channel)やEthernet等のプロトコルを利用することができる。なお、本実施形態では、FE_I/F121が利用するプロトコルは、FC又はEthernetに限定されない。
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に限定されるものではない。
アクセラレータ123は、本実施形態の特徴的なコンポーネントであり、ストレージコントローラ110にてデータの圧縮及び伸張を高速に行うハードウェアである。アクセラレータ123は、圧縮及び伸張処理をストレージコントローラ110のCPU120に代わって高速に実行するハードウェアである。本実施形態では、アクセラレータ123を1台のストレージコントローラ110につき1台搭載する例を記すが、本実施形態はこの台数に限定されるものではない。例えば、1台のストレージコントローラ110につきアクセラレータ123を2台搭載してもよい。アクセラレータ123の詳細については、図2を用いて後述する。
CPU120やドライブ130は、BEスイッチ126を介してアクセラレータ123と接続し、データ転送を行い、制御情報の受け渡しを行う。
ストレージ装置100は、複数のドライブ130を纏めて一つの記憶領域として管理し、ホスト102にデータを記憶するための領域を提供する。このとき、ドライブ130の一部が故障することによってデータを消失しないように、RAID(Redundant Arrays of Inexpensive Disks)技術による冗長化を行い、データ保障を行う。
ドライブボックス111は、2つのストレージコントローラ110から複数のドライブ130のそれぞれへデータ転送経路を張るための2つのドライブボックススイッチ(以降DB_SW131と記す)を内蔵する。DB_SW131は、複数のドライブ130とCPU120との間のデータ転送経路を束ねる。各ドライブ130は2つのDB_SW131それぞれから転送経路を持つ。これは2つのストレージコントローラ110のいずれかが故障してもデータの読み書きを継続できるようにするためである。なお、本実施形態ではDB_SW131の数は2個に限定されない。
(2)アクセラレータ構成
図2を用いてアクセラレータ123の内部構成について説明する。アクセラレータ123は、内部にデータ処理回路であるFPGA(Field Programmable Gate Array)210とDRAM220を含む。
DRAM220は、DRAM125と同じ揮発性記憶媒体であるが、DRAM125と異なりCPU120に接続されていない第2メモリである。DRAM220は、アクセラレータ123内において、圧縮データや平文データの一時的な記憶領域を提供する。なお、本実施形態では、DRAM220とDRAM125が同じ揮発性記憶媒体であることに限定されない。
FPGA210は、任意の論理回路をプログラマブルにハードウェア実装可能なデバイスである。FPGA210は、その内部に圧縮処理回路216、伸張処理回路217、データ完全性処理回路218、I/Oインターフェース211、DRAMインターフェース212、制御回路214、及びDMAC(Direct Memory Access Controller)回路215を含む。
なお、本実施形態では、FPGA210の代わりに論理回路を固定的にハードウェア実装したASIC(Application Specific Integrated Circuit)を備えてもよい。また、FPGA(又はASIC)210は、1つの半導体チップで構成してもよいし、複数の半導体チップを相互に接続して構成してもよい。また、それぞれの半導体チップに上記の論理回路のどれを実装するかも任意である。
DMAC215は、FPGA210内の圧縮処理回路216、伸張処理回路217、データ完全性処理回路218、I/Oインターフェース211、DRAMインターフェース212、制御回路214を接続する。DMAC215は、コンポーネント間のデータをアドレス又は識別子(ID)によって転送する。図2ではコンポーネントがスター状に接続された様態を記すが、本実施形態では接続がこの様態に限定されるものではない。
圧縮処理回路216は、可逆圧縮アルゴリズムにより平文データを圧縮して圧縮データを生成する論理回路である。圧縮処理回路216は、CPU120のプロセサ128よりも高速に処理することができる。
伸張処理回路217は、可逆圧縮アルゴリズムにより圧縮データを伸張して平文データを生成する論理回路である。伸張処理回路217は、CPU120のプロセサ128よりも高速に処理することができる。
データ完全性処理回路218は、圧縮される平文データにおいて保証コードに含まれるCRC(Cyclic Redundant Code)を生成し、伸張された平文データにおいて保証コードに含まれるCRCを検証してデータが壊れていないかを確認する論理回路である。
I/Oインターフェース211は、外部と接続する論理回路である。I/Oインターフェース211は、外部との間でデータや制御情報を送受信する。I/Oインターフェース211は、圧縮処理時には平文データを受信し、圧縮データを送信する。I/Oインターフェース211は、伸張処理時には圧縮データを受信し、平文データを送信する。
制御回路214は、I/Oインターフェース211と接続し、それを通じて、CPU120からアクセラレータ123に対する処理要求を受信する。また、制御回路214は、DMAC215を制御して、アクセラレータ123内のコンポーネント間のデータ転送及びI/Oインターフェース211を通じたデータ転送を行う。
制御回路214は、CPU120からリード要求を受信した場合、要求パラメタにしたがって、ドライブ130に対してリード命令を発行する(この動作は図9のフローでは行わないが図10のフローで行う)。要求パラメタは、例えば、ドライブ130から読み出す対象データのアドレス、対象データ内での抽出する部分の内部アドレス、抽出した部分の転送先を示す。
DMAC215は、ドライブ130から受信した対象データをDRAM220へ格納する。制御回路214は、圧縮処理回路216、伸張処理回路217、データ完全性処理回路218に対して、対象データについて、それぞれ上記の圧縮処理、伸張処理、保証コード処理を指示し、それらの処理結果をDRAM220に転送させる。
そして、制御回路214は、CPU120から受信した要求パラメタにしたがって、DRAM220上の処理結果データの一部を抽出し、I/Oインターフェース211を通じてDRAM125へ送信する。さらに、制御回路214は、定期的な情報モニタリングや割り込み処理によって、FPGA210の他のコンポーネントにおいて障害が起きていないかを監視する。
DRAMインターフェース212は、FPGA210がDRAM220のデータを読み書きするためのインターフェースである。このインターフェースが従う規格は、例えばDDR4である。なお、本実施形態では、DRAM220の接続インターフェースの規格は、DDR4に限定されない。
DRAMインターフェース212のチャネル数は、ストレージ装置100のリード及びライト性能仕様に基づいて、圧縮データや平文データの内部転送スループット要件を算出し、それに応じて十分な帯域を持つように設計する。すなわち、圧縮データや平文データの転送において、DRAMインターフェース212の帯域がボトルネックにならないように設計する。スループット要件が高いほどチャネル数は多くなる。FPGA210はプログラマブルであるため、CPU120とDRAM125の間の最大チャネル数がCPU120の仕様で固定化されるのに比べて設計自由度が高い。
(3)圧縮単位とデータ構造
図3A及び図3Bを用いて、圧縮単位を拡張する効果、及び、平文データと圧縮データの構造について説明する。図3Aにおいて、8kB平文データ301は、ストレージ装置100が外部からのリード/ライト要求によりホスト102とストレージ装置100との間で転送するデータの最小単位である。これらの8kB平文データを個別に圧縮した場合、平均して8kB平文データ301から例えば46%のデータ量が減る。
一方、64kBデータ303は、上記の8kBデータ301を8個連結して構成したデータである。この64kBデータ303を圧縮した場合、平均して64kB平文データ303から例えば60%のデータ量が減る。このように、圧縮単位を大きくすると圧縮率が向上することが知られている。本実施形態のストレージ装置100は、圧縮単位を従来の8kBよりも大きい64kBとすることで、データ削減率を高めてデータ保持コストを削減することができる。
図3Bは、平文データ301、圧縮データ302(304)のデータ構造を示している。平文データ301は、ホスト102がストレージ装置100に保存する正味のデータであるペイロード311と、それに対応する保証コード312からなる。保証コード312はペイロード311の保存先アドレスやCRCを含む。ストレージコントローラ110は、保証コード312によって保存先アドレスに間違いがないか、データ内容が壊れていないかを検査する。なお、この保存先アドレスはホスト102がリード及びライトするアドレス空間内の位置を識別するアドレスであり、ドライブ130のアドレスではない。
圧縮データ302(304)は、平文データ301を圧縮した結果(または平文データ301を8個並べた平文データ303を圧縮した結果)322、ヘッダ情報321、保証コード323からなる。ヘッダ情報321は圧縮結果322のサイズを含む。保証コード323は圧縮結果322の保存先アドレスやCRCを含む。ストレージコントローラ110は、保証コード323によって保存先アドレスに間違いがないか、データ内容が壊れていないかを検査する。なお、この保存先アドレスは複数のドライブ130で構成されるアドレス空間内の位置をストレージコントローラ110が識別するアドレスである。
アクセラレータ123内のデータ完全性処理回路218は、圧縮及び伸張処理を行う際に、保証コード312や323内のCRCを生成及び検査する。
(4)読み出しデータの抽出
図4を用いて、ストレージコントローラ110がホスト102からのリード要求データを構成する方法について説明する。
ホスト102は、ストレージ装置100に対して、8kB平文データ301をランダムなアドレス順にライトする可能性がある。その場合、ストレージコントローラ110はDRAM125に8kB平文データ301をライト順に8個格納するたびに64kB平文データ303を構成する。
図4は、24個の8kB平文データ301がランダムなアドレス順にライトされ、3個の64kB平文データ303A、303B、303Cが、それぞれ8個の8kB平文データ301からなる組から構成される例を示す。8個の8kB平文データ301からなる組それぞれにおける一つの8kB平文データが、例として、符号301で指示されている。8kB平文データ301を示す矩形内の数字は、ホスト102がリード及びライトするアドレス空間内の位置を識別するアドレスである。ストレージコントローラ110は、3個の64kB平文データを個別に圧縮してドライブ130に保存する。
のちに、ホスト102は、ストレージ装置100に対して8kB平文データ301をシーケンシャルなアドレス順にリードする可能性がある。図4は、3個の8kB平文データ301からなり、アドレスが005、006、007の順であるシーケンシャルな24kB平文データ401をホスト102がリードする例を示す。
図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を構成する。
もし、圧縮単位が8kBであれば、ストレージコントローラ110は3個の8kB平文データ302を圧縮したデータをドライブ130から読み出し、それぞれを伸張する。ストレージコントローラ110は、3個の8kB平文データ301でホスト102が要求するリードデータ401を構成する。
つまり、圧縮単位を拡張すると、上述のようにホスト102がランダムなアドレス順にライトしてからシーケンシャルにリードするアクセスをするような場合に、ストレージコントローラ110は多くのデータをドライブ130から読み出して伸張する必要がある。これによって、ストレージコントローラ110内のデータ転送経路の帯域消費は増えるため、転送帯域がボトルネックになってストレージ装置100の性能が低下する可能性がある。
(5)データ読み出し手続き
図5及び図6を用いて、比較例と本実施形態におけるデータ読み出し手続きについて説明する。図5は、比較例のストレージ装置における、圧縮単位を拡張した時のデータ読み出し手続きを示している。図1に示す本実施形態のストレージ装置100と比較して、FEスイッチ122に接続された圧縮伸張エンジン127が追加されている。また、BE_ADP141は、図1に示すBE_ADP124と異なり、アクセラレータを内蔵していない。圧縮伸張エンジン127は、図1に示すアクセラレータ123と同様に、データの圧縮及び伸張を高速に行うハードウェアであり、プロセサ128の処理指示に応じて、DRAM125からのデータを入力として圧縮又は伸張してDRAM125に出力する。
図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に転送し、それらの伸張を指示する。
圧縮伸張エンジン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を転送する。
CPU120は、そこから3個の8kB平文データを抽出し、ホスト102が要求しているリードデータ(Data_X(401))を、構成してDRAM125に格納する。CPU120は、リードデータ181を、メモリコントローラ129、FE_SW122及びFE_I/F121を経由して、ホスト102に応答する。
図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に転送される。
次に、アクセラレータ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に応答する。
(6)データ読み出しにおける転送量の比較
図7を用いて、比較例と本実施形態におけるデータ読み出しにおいて、ストレージ装置100内を転送するデータの量を比較する。図7の表700は、ストレージ装置100がホスト102のリード要求に応じて図4に示した3個の8kB平文データを応答する場合を例に、ストレージ装置100内部の各コンポーネントを通過するデータの転送方向とデータ量(単位はkB)の一例を示している。
列701はコンポーネント名、列702は転送方向(入力、出力、転送元、又は転送先)を示す。列703は図5に示す比較例のデータ読み出しについて圧縮単位を8kBとした場合の転送データ量を示す。列704は比較例のデータ読み出しについて圧縮単位を64kBに拡張した場合の転送データ量を示す。列705は本実施形態のデータ読み出しについて圧縮単位を64kBに拡張した場合の転送データ量を示す。表700において、一部のセルのデータ量は3つの値の和で表されており、各値は、圧縮単位のデータ(圧縮又は平文データ)のデータサイズを示す。
この例では、アドレス005、006、007の8kB平文データ301は圧縮によって、平均で46%圧縮され、4kB、5kB、4kBになっていると仮定する。また、アドレス005、006、007の8kBデータをそれぞれ含む64kB平文データ303A、303B、303Cは、圧縮によって、平均で60%圧縮され、それぞれ20kB、30kB、26kBになっていると仮定する。
列703が示す比較例のデータの流れを説明する。3個の8kB圧縮データが、ドライブ130から、BE_ADP141、FE_SW122、及びメモリコントローラ129を経由して、DRAM125に格納される(行「1」、「8」、「9」)。3個の8kB圧縮データが、メモリコントローラ129、FE_SW122を経由して、DRAM125から圧縮伸張エンジン127に転送される(行「10」、「11」、「12」)。
伸張された3個の8kB平文データは、圧縮伸張エンジン127から、FE_SW122及びメモリコントローラ129を経由して、DRAM125に転送される(行「13」、「14」、「15」)。3個の8kB平文データから形成されたリードデータが、DRAM125から、メモリコントローラ129、FE_SW122及びFE_I/F121を経由して、ホスト102に転送される(行「18」、「19」)。
次に、列704が示す比較例のデータの流れを説明する。3個の64kB圧縮データが、ドライブ130から、BE_ADP141、FE_SW122、及びメモリコントローラ129を経由して、DRAM125に格納される(行「1」、「8」、「9」)。3個の64kB圧縮データが、メモリコントローラ129、FE_SW122を経由して、DRAM125から圧縮伸張エンジン127に転送される(行「10」、「11」、「12」)。
伸張された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」)。
次に、列705が示す本実施形態のデータの流れを説明する。3個の64kB圧縮データが、BE_ADP124のBE_SW126を経由してアクセラレータ123内のDRAM220に転送される(行「1」、「2」)。3個の64kB圧縮データが、DRAM220からアクセラレータ123内のFPGA210に転送される(行「3」、「4」)。
次に、伸張された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」)。
表700の下から3行目は、アクセラレータ123内のDRAM220に入出力するデータ量の合計を示す。下から2行目は、DRAM125に入出力するデータ量の合計を示す。比較例においては、圧縮単位を拡張すると、列704に示すように、DRAM125に入出力するデータ量が48kBから416kBへと非常に多くなることがわかる。
列705に示すように、本実施形態では、圧縮単位を拡張してもDRAM125に入出力するデータ量は48kBのままである。ただし、DRAM220に入出力するデータ量は368kBである。48+368=416であるため、本実施形態の手続きでもDRAMに入出力するデータ量の合計は従来の手続きと変わらないが、CPU120に接続するDRAM125に入出力するデータ量の増加を抑えることができる。
例えば、3個の8kB平文データ301をホスト102に要求されている時間で応答するには、CPU120が内蔵するメモリコントローラ129のチャネル数で200kB以下のデータ量に抑えることが必要だと仮定する。圧縮単位の拡張で入出力データ量が416kBに多くなってしまうと、DRAM転送がボトルネックとなり、ストレージ装置100のリード性能が落ちることを意味する。
一方、本実施形態では、図2を参照して説明したように、アクセラレータ123はFPGA210がDRAM220を読み書きするインターフェースを持つため、そのチャネル数はプログラマブルに設計できる。例えば、アクセラレータ123内のFPGA210のDRAMインターフェース212が、CPU120が内蔵するメモリコントローラ129の2倍のチャネル数を持つように論理設計すると、400kBのデータ量まで性能低下が起きなくなる。
そのため、圧縮単位の拡張でDRAM220の入出力データ量が368kBになっても、DRAM転送がボトルネックとならず、ストレージ装置100のリード性能が落ちない。FPGAと異なるハードウェア、例えばASICを利用する場合も、CPU120とは独立にDRAM220とのチャネル数を設計できるので、同様の効果を達成できる。
表700の下から1行目は、FE_SW122を経由したDRAM125への入出力データ量の合計を示す。比較例の8kB単位の圧縮では74kBであり、64kB単位の圧縮にすると368kBに増える。本実施形態でのデータ量は48kBであり、比較例より圧縮単位の増加によるデータ量の増加を少なくすることができる。
これは、CPU120内のFE_SW122の帯域消費を抑えられるため、FE_SW122の転送帯域がストレージ装置100のリード性能のボトルネックとなるリスクも減らすことができる。上記例は、三つの圧縮データを伸張した平文データからリードデータを構成するが、読み出される圧縮データ数は、ホスト102からのリード要求による。上述のように、複数の圧縮データをそれぞれ伸張し、部分データを抽出してリードデータを形成する場合、本実施形態は比較例に対してより大きな効果を奏することができる。
(7)データ読み出し手続きのフローチャート
図8、図9、図10を用いて、比較例と本実施形態のデータ読み出し手続きのフローチャートを示す。図8は、比較例のデータ読み出し手続きのフローチャートである。CPU120、圧縮伸張エンジン127、ドライブ130が行う処理を3列に区分けしている。
最初に、CPU120は、ドライブ130に圧縮データのリード命令を発行する(801)。ドライブ130は、リード命令に応じて読み出した圧縮データを、CPU120に接続したDRAM125(図8ではCTLのDRAM)に転送する(802)。CPU120は圧縮データをDRAM125に保持する(803)。
次に、CPU120は圧縮伸張エンジン127に圧縮データを送り、その伸張を要求する(804)。圧縮伸張エンジン127は、伸張要求に応じて圧縮データを伸張する(805)。伸張結果である平文データは、DRAM125に転送される。
CPU120は平文データから、ホスト102からリード要求されているデータ部分を抽出し(806)、それらのデータ部分を用いて、リードデータを形成する(807)。最後に、CPU120は、ホスト102へリードデータを応答する(808)。
図9及び図10は、それぞれ本実施形態のデータ読み出し手続きのフローチャートである。いずれも、CPU120、アクセラレータ123、ドライブ130が行う処理を3列に区分けしている。
ここでは、CPU120からの読み出し指示の発行方法として、2種類の例を示す。図9は、ドライブ130とアクセラレータ123に個別に指示を出す例である。図10は、アクセラレータ123に一括で指示を出す例である。
図9では、最初に、CPU120は、ドライブ130に、圧縮データのリード命令を発行する(901)。リード命令はドライブ130の読み出し開始アドレス及び読み出しサイズ並びにデータ転送先を示すパラメタを含む。
ドライブ130は、ステップ901の要求パラメタにしたがって読み出した64kB圧縮データ304A、340B、304Cを、指定されたアクセラレータ123内のDRAM220(図9ではアクセラレータのDRAM)に転送する(902)。アクセラレータ123は、64kB圧縮データ304をDRAM220に保持する(903)。ドライブ130は、転送完了をCPU120に通知する。
次に、転送完了の通知を受けたCPU120は、アクセラレータ123に、平文データ部分を要求する(904)。この要求は、64kB平文データ303A~303Cそれぞれにおいて、ホスト102へのリード応答に必要なデータ部分の開始アドレス(第2アドレス)及びサイズ、並びに転送先を含む。
アクセラレータ123は、上記要求に応じて、64kB圧縮データ304A、304B、304Cを伸張する(905)。そして、ステップ904の要求パラメタにしたがって、伸張結果である64kB平文データ303A、303B、303Cそれぞれから、データ部分を抽出する(906)。アクセラレータ123は、抽出したデータ部分をCPU120に接続したDRAM125(図9ではCTLのDRAM)に転送する(907)。
CPU120は、それらのデータ部分を用いて、リードデータ401を形成する(908)。最後に、CPU120は、ホスト102へリードデータ401を応答する(909)。上述のように、CPU120は、ドライブ130に圧縮データをDRAM220に送信することを指示し、アクセラレータ123は、CPU120から抽出するデータのアドレスを含む要求を受信し、指定されたデータを平文データから抽出する。上記フローにより、アクセラレータ123の処理を低減して、その回路構成を小さくすることができる。
一方、図10に示すフローでは、最初に、CPU120は、アクセラレータ123に平文データ部分を要求する(1001)。この要求のパラメタは、ドライブ130の読み出し開始アドレス(第1アドレス)及び読み出しサイズ、64kB平文データ303においてホスト102へのリード応答に必要なデータ部分の開始アドレス(第2アドレス)及びサイズ、並びにデータ部分の転送先を含む。
アクセラレータ123は、ステップ1001の要求パラメタにしたがって、ドライブ130に圧縮データのリード命令を発行する(1002)。リード命令は図9を参照して説明した例と同様である。ドライブ130は、リード命令応じて読み出した64kB圧縮データ304A、304B、304Cを、アクセラレータ123内のDRAM220(図10ではアクセラレータのDRAM)に転送する(1003)。アクセラレータ123は64kB圧縮データ304A、304B、304CをDRAM220に保持する(1004)。
次に、アクセラレータ123は、64kB圧縮データ304A、304B、304Cを伸張する(1005)。そして、アクセラレータ123は、ステップ1001の要求パラメタにしたがって、伸張結果である64kB平文データ303A、303B、303Cからホスト102へのリード応答に必要なデータ部分を抽出する(1006)。アクセラレータ123は、抽出した出た部分をCPU120に接続したDRAM125(図10ではCTLのDRAM)に転送する(1007)。
CPU120は、それらのデータ部分を用いて、リードデータ401を形成する(1008)。最後に、CPU120は、ホスト102へリードデータ401を応答する(1009)。上述のように、アクセラレータ123は、CPU120から、ドライブ130に格納されている圧縮データの開始アドレスと、平文データから抽出するデータの開始アドレスと、を含む要求を受信する。アクセラレータ123は、圧縮データの開始アドレスを指定して、ドライブ130に圧縮データをDRMA220に送信することを指示し、指定された開始アドレスに従ってデータを平文データから抽出する。上記フローにより、CPU120の処理を低減して、ストレージ装置の性能を高めることができる。
<第2の実施形態>
図11を用いて、第2の実施形態に係るストレージ装置100とそれを含むシステム構成について説明する。図1で示した第1の実施形態との差分を主に説明する。
第2の実施形態において、アクセラレータ145は、ストレージコントローラ110内には搭載されず、ドライブボックス111内に搭載される。図11の構成例において、2台のアクセラレータ145が一つのドライブボックス111に搭載され、冗長化されている。ストレージコントローラ110は、BE_ADP124の代わりにBE_SW126を搭載する。BE_SW126にはアクセラレータは接続されない。
ドライブボックス111内の2台のDB_SW131は、それぞれ、各ドライブ130と接続するのに加えて、1台のアクセラレータ145と接続する。例えば、1代のBE_SW126が故障しても、稼働を維持できる。第2の実施形態のアクセラレータ145は、第1の実施形態のアクセラレータ123と同じ動作を行う。
第2の実施形態は、ドライブボックス111(ドライブ130)の台数があとから増える場合に有効である。第1の実施形態では、ドライブボックス111の台数が少ない時にはアクセラレータ123の性能が過剰になって無駄なコストがかかり得る。また、ドライブボックス111の台数が多くなると、アクセラレータ123の性能が不足する可能性がある。第2の実施形態は、アクセラレータ145の数がドライブボックス111(ドライブ130)の台数に応じて増えるため、無駄なコストを抑え、アクセラレータの性能不足のリスクを低減できる。
<第3の実施形態>
図12を用いて、第3の実施形態に係るストレージ装置100とそれを含むシステム構成について説明する。なお、図1で示した第1の実施形態との差分を主に説明する。
第3の実施形態において、アクセラレータ146は、ストレージコントローラ110内のBE_SW126ではなく、FE_SW122に接続される。アクセラレータ146は、前述の第1の実施形態におけるアクセラレータ123及び第2の実施形態におけるアクセラレータ145と異なり、ドライブ130から直接データを読み出す機能を持たない。ただし、アクセラレータ146は、図2に示すアクセラレータ123と同様の内部構成である。なお、アクセラレータ146は、BE_SW126に接続されてもよい。
第3の実施形態は、ドライブ130へのアクセス制御をアクセラレータ146で実施する必要がないため、第1及び第2の実施形態と比較し、アクセラレータを非搭載の既存ストレージ装置にアクセラレータを後付けする場合、または図5の比較例で示したストレージ装置の圧縮伸張エンジン127を置き換える場合に有効である。これは、ドライブ130へのアクセス制御を従来通りCPU120で実施するため、アクセラレータ146に実装する機能を少なくできるうえ、アクセラレータ146はドライブ130への直接アクセスが必要ないため、アクセラレータ146の搭載場所の選択肢を多くとれるためである。
(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に転送される。
次に、アクセラレータ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に応答する。
(2)第3の実施形態を含むデータ読み出しにおける転送量の比較
図14を用いて、第3の実施形態におけるデータ読み出しにおいて、ストレージ装置100内を転送するデータの量を比較する。図14の表1400は、ストレージ装置100がホスト102のリード要求に応じて図13に示した3個の8kB平文データを応答する場合を例に、ストレージ装置100内部の各コンポーネントを通過するデータの転送方向とデータ量(単位はkB)の一例を示している。
列1401はコンポーネント名、列1402は転送方向(入力、出力、転送元、又は転送先)を示す。列1403は、図7に示す列704に相当し、比較例のデータ読み出しについて圧縮単位を64kBに拡張した場合の転送データ量を示す。列1404は、図7に示す列705に相当し、第1の実施形態におけるデータ読み出しについて、圧縮単位を64kBに拡張した場合の転送データ量を示す。列1405は、第3の実施形態におけるデータ読み出しについて、圧縮単位を64kBに拡張した場合の転送データ量を示す。表1400において、一部のセルのデータ量は3つの値の和で表されており、各値は、圧縮単位のデータ(圧縮又は平文データ)のデータサイズを示す。なお、図14で示したデータサイズの試算は、図7と同じ条件で実施しており、重複する内容の説明は省略する。
図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」)。
次に、伸張された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」)。
表1400の下から3行目は、アクセラレータ146内のDRAM220に入出力するデータ量の合計を示す。また、下から2行目は、DRAM125に入出力するデータ量の合計を示す。列1404に示す第1の実施形態と、列1405に示す第3の実施形態を比較すると、DRAM220への入出力データ量は同等である。一方、DRAM125への入出力データ量は、第3の実施形態の方が152kB多い。ただし、列1403に示す比較例に対しては、第3の実施形態は、DRAM125への入出力データ量を半分以下(416kBから200kB)に削減できる。
表1400の下から1行目は、CPU120内のFE_SW122を経由したDRAM125への入出力データ量の合計を示す。列1404に示す第1の実施形態と、列1405に示す第3の実施形態を比較すると、第3の実施形態の入出力データ量が、第1の実施形態の入出力データ量より152kB多い。ただし、列1403に示す比較例に対しては、第3の実施形態は、入出力データ量を約半分(368kBから200kB)に削減できる。
以上より、第3の実施形態は、第1及び第2の実施形態に対して効果は劣るものの、DRAM125とCPU120内のFE_SW122の帯域消費を低減できる。このため、これらの帯域がストレージ装置100のリード性能のボトルネックとなっている場合、第3の実施形態をとることにより、ストレージ装置100のリード性能を向上させることができる。
(3)第3の実施形態におけるデータ読み出し手続きのフローチャート
図15を用いて、第3の実施形態におけるデータ読み出し手続きのフローチャートを示す。CPU120、アクセラレータ146、ドライブ130が行う処理を3列に区分けしている。
最初に、CPU120は、ドライブ130に圧縮データのリード命令を発行する(1501)。ドライブ130は、リード命令に応じて読み出した圧縮データを、CPU120に接続したDRAM125(図15ではCTLのDRAM)に転送する(1502)。CPU120は圧縮データをDRAM125に保持する(1503)。
次に、CPU120はアクセラレータ146に圧縮データを送り、平文データ部分を要求する(1504)。この要求は、64kB平文データ303A~303Cそれぞれにおいて、ホスト102へのリード応答に必要なデータ部分の開始アドレス(第2アドレス)及びサイズ、並びに転送先を含む。
アクセラレータ146は、上記要求に応じて、64kB圧縮データ304A、304B、304Cを伸張する(1505)。そして、ステップ1504の要求パラメタにしたがって、伸張結果である64kB平文データ303A、303B、303Cそれぞれから、データ部分を抽出する(1506)。アクセラレータ146は、抽出したデータ部分をCPU120に接続したDRAM125(図15ではCTLのDRAM)に転送する(1507)。
CPU120は、それらのデータ部分を用いて、リードデータ401を形成する(1508)。最後に、CPU120は、ホスト102へリードデータ401を応答する(1509)。上述のように、アクセラレータ146は、CPU120から、圧縮データと、平文データから抽出するデータの開始アドレスと、を含む要求を受信する。アクセラレータ146は、圧縮データをCPU120のDRAM125から読み出し、データを伸張し、指定された開始アドレスに従ってデータを平文データから抽出する。上記フローにより、CPU120の処理を低減して、ストレージ装置の性能を高めることができる。
なお、本発明は、ストレージコントローラ110内のコンポーネントとして図1、11、又は12に示すコンポーネントを持つストレージ装置100に限定されるものではない。例えば、ストレージコントローラ110やドライブボックス111内にデータを暗号化するアクセラレータを搭載したストレージ装置100でもよい。
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
100…ストレージ装置、110…ストレージコントローラ、120…CPU、122…FE_SW、123…アクセラレータ、125、220…DRAM、130…ドライブ

Claims (7)

  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メモリに格納し、
    前記複数の圧縮データそれぞれから、平文データを生成し、
    前記平文データそれぞれから前記処理装置に指定されたデータを抽出し、
    前記処理装置が、抽出された前記指定されたデータをまとめてリードデータを形成して、ホストに応答する、方法。
JP2020139199A 2020-04-01 2020-08-20 ストレージ装置 Active JP7197541B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202110122069.1A CN113552999A (zh) 2020-04-01 2021-01-26 存储装置
US17/172,206 US11360669B2 (en) 2020-04-01 2021-02-10 Storage device accelerator providing aggregation of divided plaintext data
US17/752,923 US11625168B2 (en) 2020-04-01 2022-05-25 Storage device accelerator providing aggregation of divided plaintext data read
JP2022199500A JP7479441B2 (ja) 2020-04-01 2022-12-14 ストレージ装置
US18/118,249 US20230205419A1 (en) 2020-04-01 2023-03-07 Storage device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020066145 2020-04-01
JP2020066145 2020-04-01

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022199500A Division JP7479441B2 (ja) 2020-04-01 2022-12-14 ストレージ装置

Publications (2)

Publication Number Publication Date
JP2021166029A JP2021166029A (ja) 2021-10-14
JP7197541B2 true JP7197541B2 (ja) 2022-12-27

Family

ID=78022177

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020139199A Active JP7197541B2 (ja) 2020-04-01 2020-08-20 ストレージ装置

Country Status (2)

Country Link
JP (1) JP7197541B2 (ja)
CN (1) CN113552999A (ja)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015145647A1 (ja) 2014-03-27 2015-10-01 株式会社日立製作所 ストレージ装置とデータ処理方法及びストレージシステム
WO2015181902A1 (ja) 2014-05-28 2015-12-03 株式会社日立製作所 計算機システムおよび計算機システム制御方法
WO2016194199A1 (ja) 2015-06-04 2016-12-08 株式会社日立製作所 ストレージ装置
US20180024743A1 (en) 2016-07-20 2018-01-25 Western Digital Technologies, Inc. Dual-ported pci express-based storage cartridge including single-ported storage controllers
JP2018037069A (ja) 2016-08-29 2018-03-08 株式会社 ビーアイマトリックスBi Matrix Co.,Ltd レポートの重要度を分析するメタデータ基盤のオンライン分析処理システム
US20180152733A1 (en) 2016-11-30 2018-05-31 Hewlett Packard Enterprise Development Lp Methods and systems for efficiently reading a data block from a data seglet with compressed data blocks
WO2018179243A1 (ja) 2017-03-30 2018-10-04 株式会社日立製作所 情報処理装置及び方法
JP2018530055A (ja) 2015-09-03 2018-10-11 クアルコム,インコーポレイテッド ハードウェア加速ストレージ圧縮

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6175896B1 (en) * 1997-10-06 2001-01-16 Intel Corporation Microprocessor system and method for increasing memory Bandwidth for data transfers between a cache and main memory utilizing data compression
US6275588B1 (en) * 1998-11-12 2001-08-14 I-Data International A/S Apparatus and method for performing and controlling encryption/decryption for data to be transmitted on local area network
US6819271B2 (en) * 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6822589B1 (en) * 1999-01-29 2004-11-23 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US7129860B2 (en) * 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US20030191876A1 (en) * 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US6724391B1 (en) * 2000-06-30 2004-04-20 Intel Corporation Mechanism for implementing Z-compression transparently
US10572824B2 (en) * 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
JP2005051479A (ja) * 2003-07-28 2005-02-24 Dainippon Printing Co Ltd 時限暗号化/復号システム
JP4371127B2 (ja) * 2006-07-14 2009-11-25 ソニー株式会社 再生装置、再生方法、プログラム
JP2012221333A (ja) * 2011-04-12 2012-11-12 Sony Corp メモリ管理装置、メモリ管理方法、および、制御プログラム
JP5969914B2 (ja) * 2012-12-20 2016-08-17 株式会社日立情報通信エンジニアリング 動画像圧縮伸張装置
WO2015019484A1 (ja) * 2013-08-09 2015-02-12 株式会社日立製作所 データ圧縮装置およびデータ伸張装置
WO2015075837A1 (ja) * 2013-11-25 2015-05-28 株式会社日立製作所 ストレージ装置及びその制御方法
DE112013006655T5 (de) * 2013-12-12 2015-11-19 Hitachi, Ltd. Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung
US9448745B2 (en) * 2014-03-13 2016-09-20 NXGN Data, Inc. Configurable read-modify-write engine and method for operating the same in a solid state drive
WO2015162755A1 (ja) * 2014-04-24 2015-10-29 株式会社日立製作所 データを圧縮して格納するストレージ装置
US9990298B2 (en) * 2014-05-12 2018-06-05 Western Digital Technologies, Inc System and method for caching solid state device read request results
CN107250991B (zh) * 2015-02-13 2020-08-28 谷歌有限责任公司 透明硬件辅助存储器解压缩
US10338820B2 (en) * 2016-06-07 2019-07-02 Nvidia Corporation Architecture and algorithms for data compression
KR102611638B1 (ko) * 2016-09-27 2023-12-08 삼성전자주식회사 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템
JP2019080291A (ja) * 2017-10-27 2019-05-23 ルネサスエレクトロニクス株式会社 データ処理装置及びデータ処理方法
US10936404B2 (en) * 2018-06-30 2021-03-02 Intel Corporation Technologies for error detection in compressed data streams

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015145647A1 (ja) 2014-03-27 2015-10-01 株式会社日立製作所 ストレージ装置とデータ処理方法及びストレージシステム
WO2015181902A1 (ja) 2014-05-28 2015-12-03 株式会社日立製作所 計算機システムおよび計算機システム制御方法
WO2016194199A1 (ja) 2015-06-04 2016-12-08 株式会社日立製作所 ストレージ装置
JP2018530055A (ja) 2015-09-03 2018-10-11 クアルコム,インコーポレイテッド ハードウェア加速ストレージ圧縮
US20180024743A1 (en) 2016-07-20 2018-01-25 Western Digital Technologies, Inc. Dual-ported pci express-based storage cartridge including single-ported storage controllers
JP2018037069A (ja) 2016-08-29 2018-03-08 株式会社 ビーアイマトリックスBi Matrix Co.,Ltd レポートの重要度を分析するメタデータ基盤のオンライン分析処理システム
US20180152733A1 (en) 2016-11-30 2018-05-31 Hewlett Packard Enterprise Development Lp Methods and systems for efficiently reading a data block from a data seglet with compressed data blocks
WO2018179243A1 (ja) 2017-03-30 2018-10-04 株式会社日立製作所 情報処理装置及び方法

Also Published As

Publication number Publication date
JP2021166029A (ja) 2021-10-14
CN113552999A (zh) 2021-10-26

Similar Documents

Publication Publication Date Title
US9465561B2 (en) Storage system and storage control method
US8136015B2 (en) Data storage apparatus and data storage method
US7937542B2 (en) Storage controller and storage control method for accessing storage devices in sub-block units
US11837319B2 (en) Multi-port memory device and a method of using the same
US10102060B2 (en) Storage apparatus and data control method of storing data with an error correction code
US10678443B2 (en) Method and system for high-density converged storage via memory bus
US20210278998A1 (en) Architecture and design of a storage device controller for hyperscale infrastructure
US20110314235A1 (en) Data storage device and write method thereof
US10084484B2 (en) Storage control apparatus and non-transitory computer-readable storage medium storing computer program
JP6997235B2 (ja) データ転送システム
US10802958B2 (en) Storage device, its controlling method, and storage system having the storage device
JP7197541B2 (ja) ストレージ装置
US11816336B2 (en) Storage system and control method thereof
JP7479441B2 (ja) ストレージ装置
US10437478B1 (en) Replication based on a differential multiple write command
US11853582B2 (en) Storage system
KR20150050332A (ko) 내부 디스크 드라이브 데이터 압축을 위한 시스템 및 방법
CN114968849B (zh) 提高编程缓存利用率的方法及其设备
US11782603B2 (en) Optimized communicaton in storage system
US20240143200A1 (en) Reducing energy comsumption of self-managed dram modules
US11481125B2 (en) Storage device and storage system performing offloaded tasks from host
JP2024044792A (ja) メモリシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221102

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221215

R150 Certificate of patent or registration of utility model

Ref document number: 7197541

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150