JP6997235B2 - データ転送システム - Google Patents

データ転送システム Download PDF

Info

Publication number
JP6997235B2
JP6997235B2 JP2020026671A JP2020026671A JP6997235B2 JP 6997235 B2 JP6997235 B2 JP 6997235B2 JP 2020026671 A JP2020026671 A JP 2020026671A JP 2020026671 A JP2020026671 A JP 2020026671A JP 6997235 B2 JP6997235 B2 JP 6997235B2
Authority
JP
Japan
Prior art keywords
data
memory
transfer
address
rmw
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
JP2020026671A
Other languages
English (en)
Other versions
JP2021131732A (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 JP2020026671A priority Critical patent/JP6997235B2/ja
Priority to US17/016,911 priority patent/US11226915B2/en
Publication of JP2021131732A publication Critical patent/JP2021131732A/ja
Application granted granted Critical
Publication of JP6997235B2 publication Critical patent/JP6997235B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1004Compatibility, e.g. with legacy hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/303In peripheral interface, e.g. I/O adapter or channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data

Description

本発明は、概して、I/O(Input/Output)デバイスから出力されたデータを転送する技術に関する。
I/Oデバイスから出力されたデータのサイズが、当該データの転送先メモリの単位領域のサイズと異なる場合、リードモディファイライト(以下、RMW)が行われる。RMWは、ライト先の単位領域からデータを読み出すことと、当該データの一部をライト対象のデータにモディファイすることと、当該モディファイ後のデータをライト先の単位領域にライトすることとを含む。
RMWの発生回数が多いと、データ転送性能が悪化する。
RMWの発生回数を減らすためのデータ転送技術として、例えば、特許文献1に開示の技術が知られている。特許文献1によれば、転送するデータのサイズがメモリへのライトデータ幅の整数倍と異なる場合に、DMAコントローラが、ダミーデータを追加して転送することで、転送するデータ全体のサイズをデータ幅単位とする。
特開2005-182538号公報
特許文献1の技術によれば、第1のライト対象データに第1のダミーデータが追加された第1のデータ全体がメモリにDMA転送されて、次の第2のライト対象データに第2のダミーデータが追加された第2のデータ全体がメモリにDMA転送された場合、第1のライト対象データの転送先アドレスと第2のライト対象データの転送先アドレスとの関係によっては、第1のライト対象データの一部が第2のダミーデータによって破壊(上書き)されてしまうおそれがある。
この問題を回避するためには、特許文献1の技術によれば、転送モードを、ダミーデータの追加転送を行う第1の転送モードから、ダミーデータの追加転送を行わない第2の転送モードに切り替えておく方法が考えられる。しかし、転送モードの切替えは、モードレジスタを前提にしたスタティックな切替えである。このため、特許文献1に開示の技術は、実用性が低い。
また、複数のI/Oデバイスのベンダがマルチベンダであることで、品質リスクの軽減が期待される。具体的には、例えば、或るベンダのI/Oデバイスの不良率が高い場合、当該或るベンダのI/Oデバイスへの依存度を下げて、別のベンダのI/Oデバイスへの依存度を上げることで、品質を維持することが期待される。このような理由から、システムにおいてマルチベンダの複数のI/Oデバイスが採用され得る。I/Oデバイスのベンダが異なっていれば、I/Oデバイスのデータ転送特性が異なり得る。特許文献1の技術によれば、I/Oデバイス毎にDMAコントローラが必要である。このため、各DMAコントローラは、いずれのベンダのI/Oデバイスに対応するかが考慮された専用機でなければならない。また、I/Oデバイスが増えればDMAコントローラが増えるため、部品点数が増大する。これらの理由からも、特許文献1に開示の技術は実用性が低い。
データ転送システムが、一つ又は複数のI/Oデバイスと、第1メモリアドレスのアドレス空間を提供する第1のメモリと、キャッシュライン(第1のメモリの単位領域)の単位で第1のメモリにデータをライトするプロセッサと、第2メモリアドレスのアドレス空間を提供する第2のメモリと、データをDMA(Direct Memory Access)転送するDMAコントローラとを備える。プロセッサが、キャッシュラインの一部がライト先であるキャッシュラインサイズ未満のデータについては、RMW(当該キャッシュラインの全域からキャッシュラインサイズのデータをリードすることと、当該キャッシュラインサイズのデータの一部を当該キャッシュラインサイズ未満のデータにモディファイすることと、当該モディファイ後のキャッシュラインサイズのデータを当該キャッシュラインにライトすることとを含んだ処理)を行うようになっている。プロセッサが、一つ又は複数のI/Oデバイスのうちデータの出力元であるソースI/Oデバイスに対し、ソースI/Oデバイスから出力対象のデータを第2のメモリに転送することを指定した第1の転送指示を送信する。DMAコントローラが、第1の転送指示に応答してソースI/Oデバイスから第2のメモリに転送された出力対象のデータを、第2のメモリから第1のメモリに当該出力対象のデータを転送することを指定した第2の転送指示に応答して、RMWの発生回数が最小となる一つ又は複数の転送単位サイズで、第2のメモリから第1のメモリに転送する。
本発明によれば、ダミーデータを追加すること無しに、かつ、マルチベンダの複数のI/Oデバイスが備えられてもI/Oデバイス毎にDMAコントローラを備えること無しに、システム全体においてRMWの発生回数を低減することができる。
比較例に係るシステム全体の構成を示す。 比較例に係るデータ転送(CPUから主記憶メモリへのデータ転送)の一例を示す。 第1の実施形態に係るシステム全体の構成を示す。 第1の実施形態に係るデータ転送(CPUから主記憶メモリへのデータ転送)の一例を示す。 メモリ空間マップの構成例を示す。 第1の実施形態に係るデータ転送全体の流れを示す。 データ転送全体でのプロトコル及びパラメータの詳細を示す。 第2の実施形態に係るシステム全体の構成を示す。 第3の実施形態に係るデータ転送全体の流れを示す。
以下の説明では、「通信インターフェース装置」は、一つ以上の通信インターフェースデバイスでよい。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ」は、一つ以上のメモリデバイスでよい。
また、以下の説明では、「記憶デバイス」は、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号を使用することがある。
また、以下の説明では、I/Oデバイスとして、記憶デバイスを例に取り、データ転送システムとして、ストレージシステムを例に取る。
図1は、比較例に係るシステム全体の構成を示す。図2は、比較例に係るデータ転送(CPUから主記憶メモリへのデータ転送)の一例を示す。
ストレージシステム110が、複数のSSD111と、複数のSSD111に対するデータのI/Oを制御するストレージコントローラ112とを有する。ストレージコントローラ112は、ホストシステム101からのリード要求に応答して、リード要求に従うデータを一つ以上のSSD111からリードし、リードされたデータをホストシステム101に返す。
複数のSSD111は、例えば、ベンダの異なる(つまりマルチベンダの)複数のSSD111A~111Cを含む。SSD111A~111Cのデータ転送特性が異なっている。以下、便宜上、SSD111Aのベンダを「ベンダA」と言い、SSD111Bのベンダを「ベンダB」と言い、SSD111Cのベンダを「ベンダC」と言う。
ストレージコントローラ112は、ホストシステム101が接続されるHBA121と、複数のSSD111が接続されるPCIe-SW122と、主記憶メモリ123と、HBA121、PCIe-SW122及び主記憶メモリ123に接続されるCPU124とを有する。ストレージコントローラ112において、HBA121、PCIe-SW122、主記憶メモリ123及びCPU124は、PCIeバス(図示せず)に接続されている。ストレージコントローラ112において、データは、PCIeバスを経由して転送される。
CPU124は、リード元のSSD111からリード対象のデータを主記憶メモリ123にリード(転送)することを指定した転送指示(リード指示)を、リード元のSSD111に送信する。当該転送指示は、転送元のアドレス範囲(例えば、先頭アドレスとデータサイズ)と転送先のアドレスといったパラメータを持つ。当該転送指示に応答して、リード元のSSD111が、当該転送元のアドレス範囲にあるデータを転送先アドレスが属する主記憶メモリ123に転送する。SSD111から出力されたデータは、PCIe-SW122を経由して主記憶メモリ123に転送される。主記憶メモリ123として採用されるメモリは、典型的には、DRAM(Dynamic Random Access Memory)のような揮発性メモリであるが、揮発性メモリに代えて又は加えて不揮発性メモリが採用されてもよい。
主記憶メモリ123の単位領域であるキャッシュラインがCPU124により管理される。主記憶メモリ123には、キャッシュライン単位でデータがライトされる。キャッシュラインは、複数のサブブロック(サブ単位領域の一例)で構成されている。図2が示す例によれば、一つの行が、キャッシュラインに相当する。キャッシュラインは、八つのサブブロックから構成されている。一つのサブブロックのサイズを8byteとすると、一つのキャッシュラインは、64byteである。
キャッシュラインにライトされるデータの先頭と末尾が当該キャッシュラインの開始と終了のアドレスに一致している場合、RMW無しに当該データが当該キャッシュラインにライトされる。一方、キャッシュラインにライトされるデータの先頭が当該キャッシュラインの開始アドレスに一致しない、または、当該データの末尾が当該キャッシュラインの終了アドレスに一致しない場合(つまり、キャッシュラインの一部がライト先の場合)、キャッシュラインサイズ未満である当該データについて、RMWが発生する。すなわち、CPU124が、当該キャッシュラインの全域からキャッシュラインサイズのデータをリードし、当該キャッシュラインサイズのデータの一部を当該キャッシュラインサイズ未満のデータにモディファイし、当該モディファイ後のキャッシュラインサイズのデータを当該キャッシュラインにライトする。
図示しないが、ベンダCのSSD111Cのデータ転送特性において、データの転送単位サイズが、キャッシュラインの整数倍であるとする。例えば、SSD111Cの連続したアドレス範囲から1560byteのデータが転送されたとする。当該データの転送先のアドレスが、キャッシュラインの開始アドレスであり、且つ、1560byteのデータが、キャッシュラインサイズの整数倍の単位で転送されたとする。この場合、末尾の24byteのデータを除く1536byteは、キャッシュラインサイズ64byteの整数倍(正確には24倍)であるため、RMWは、末尾の24byteのデータについてのみ生じると考えられる。
しかし、全てのベンダのSSD111のデータ転送特性において、データの転送単位サイズが、キャッシュラインの整数倍であるとは限らない。例えば、図1に示す通り、ベンダAのSSD111Aの連続したアドレス範囲から1560byteのデータが転送され、転送単位サイズが、520byteであるとする。すなわち、一回目のデータ転送で520byteのデータ10Aが転送され、二回目のデータ転送で次の520byteのデータ10Bが転送され、三回目のデータ転送で最後の520byteのデータ10Cが転送される。この場合、図2が示すように、データ10A~10Cの各々の転送においてRMWが発生し、結果として、合計五回のRMWが発生する。具体的には、一回目のRMWは、データ10Aの転送において、末尾の8byteのデータについて発生し、二回目のRMWは、データ10Bの転送において、先頭の56byteのデータについて発生し、結果として、これらの8byteのデータと56byteのデータのライト先のキャッシュラインについて計二回のRMWが発生する。同様に、三回目のRMWは、データ10Bの転送において、末尾の16byteのデータについて発生し、四回目のRMWは、データ10Cの転送において、先頭の48byteのデータについて発生し、結果として、これらの16byteのデータと48byteのデータのライト先のキャッシュラインについて計二回のRMWが発生する。最後に、五回目のRMWは、データ10Cの転送において、末尾の24byteのデータについて発生する。
以上の通り、比較例によれば、SSD111のデータ転送特性によって、キャッシュラインずれ(データの先頭がキャッシュラインの開始アドレスに一致しない、または、データの末尾がキャッシュラインの終了アドレスに一致しない)が多く発生し、結果として、多くのRMWが発生し得る。
また、複数のSSD111がマルチベンダのSSD111A~111Cを含む場合、SSD11A~111Cのデータ転送特性によって、キャッシュラインずれの発生頻度、言い換えれば、RMWの発生頻度が異なる。結果として、複数のSSD111においてキャッシュラインずれの発生頻度が高いデータ転送特性を持つSSD111が比較的多かったり、そのようなSSD111がリード元となる頻度が高かったりすると、ストレージシステム110のスループットが低下することになる。
そこで、本発明の第1の実施形態では、ストレージシステムに、データ転送特性の違いを吸収し転送単位サイズを最適化するアクセラレータが搭載される。以下、第1の実施形態を説明する。なお、以下の説明では、図1及び図2に記載の要素と同一の要素には同一の参照符号を付し、説明を省略又は簡略する。
[第1の実施形態]
図3は、第1の実施形態に係るシステム全体の構成を示す。図4は、第1の実施形態に係るデータ転送(CPUから主記憶メモリへのデータ転送)の一例を示す。
PCIe-SW122に、アクセラレータ260が接続される。アクセラレータ260は、アクセラレータメモリ261と、DMAコントローラ(以下、DMAC)262とを備える。アクセラレータメモリ261として採用されるメモリは、典型的には、揮発性メモリであるが、揮発性メモリに代えて又は加えて、不揮発性メモリが採用されてもよい。また、アクセラレータメモリ261は、第2のメモリの一例であるが、第2のメモリは、アクセラレータ260の外に存在してもよい(例えば、DMAC262がアクセラレータ260それ自体であってもよい)。第2のメモリは、例えば、アクセラレータ260の外付けのDDR(Double Data Rate)メモリでもよいし、ASIC又はFPGA内のSRAM(Static Random Access Memory)又はHBM(High Bandwidth Memory)でもよい。
第1の実施形態では、SSD111Aからアクセラレータメモリ261を経由して主記憶メモリ123へデータが転送される。SSD111Aからアクセラレータメモリ261へのデータ転送は、SSD111Aのデータ転送特性に従う転送単位サイズで、SSD111Aにより行われ、アクセラレータメモリ261から主記憶メモリ123へのデータ転送は、RMWの発生回数が最小となるデータ転送特性に従う転送単位サイズで、DMAC262により行われる。
具体的には、例えば、SSD111Aの連続したアドレス範囲から1560byteのデータが転送される場合、SSD111Aからアクセラレータメモリ261には、当該1560byteのデータとして、520byte(SSD111Aのデータ転送特性に従う転送単位サイズ)のデータ10A~10Cが転送される。その後、アクセラレータメモリ261から主記憶メモリ123(第1のメモリの一例)へ、当該1560byteのデータとして、512byteのデータ11A~11Cと、24byteのデータ11Dとが転送される。結果として、図4が示すように、データ11A~11CについてはそれぞれRMWが発生することなく主記憶メモリ123にライトされ、末尾の24byteのデータについてのみRWMが発生する。
このように、第1の実施形態では、アクセラレータ260が介在する2段階転送が採用される。すなわち、アクセラレータ260は、転送元のSSD111のデータ転送特性に従う転送単位サイズで転送された出力対象のデータをアクセラレータメモリ261で一旦保持し、その後に、RMWの発生回数を最小にする最適な転送単位サイズで、DMAC262により、アクセラレータメモリ261から当該出力対象のデータを主記憶メモリ123に転送する。別の言い方をすれば、アクセラレータ260は、SSD111のデータ転送特性の違いをアクセラレータメモリ261で吸収し、RMWの発生回数を最小にする最適なデータ転送特性でアクセラレータメモリ261からデータを主記憶メモリ123に転送する。
第1の実施形態によれば、ダミーデータを追加すること無しに、かつ、マルチベンダの複数のSSD111A~111Cが備えられてもSSD111毎にDMAC262を備えること無しに、SSD111間のデータ転送特性のバラつきを吸収し、ストレージシステム110全体においてRMWの発生回数を低減する(別の言い方をすれば、キャッシュラインずれによる性能低下ポンテンシャルを低減する)ことができる。
また、第1の実施形態によれば、アクセラレータ260がSSD111間のデータ転送特性のバラつきを吸収するので、SSD111のデータ転送特性を考慮する必要が無くなる。SSD111のマルチベンダ化が容易であり、且つ、選択肢としてのベンダを増やすことができる。また、アクセラレータメモリ261及びDMAC262は、複数のSSD111に共通とされてよい。これにより、マルチベンダの複数のSSD111A~111Cが備えられても、SSD111毎にDMAC262を備える必要が無い。
なお、アクセラレータメモリ261から主記憶メモリ123へのデータ転送は、DMA転送であるが、主記憶メモリ123のライト先のアドレスであるアクセスアドレスとデータの転送単位サイズからCPU224がRMWの要否を判定できる。RMWが必要とCPU224が判定した場合に、RMWがCPU224により行われる。
また、第1の実施形態に係るデータ転送は、同一のPCIeバスに接続されている全デバイスに共用されるメモリ空間マップに、アクセラレータメモリ261がマッピングされることで実現することができる。図5が示す例によれば、メモリ空間マップ500は、主記憶メモリ123が提供するアドレス空間(第1メモリアドレスのアドレス空間の一例)がマッピングされた範囲である主記憶メモリ範囲511の他に、アクセラレータメモリ261が提供するアドレス空間(第2メモリアドレスのアドレス空間の一例)がマッピングされた範囲であるアクセラレータメモリ範囲512を有する。PCIeバスに接続されているCPU224が、メモリ空間マップ500を参照し、アクセラレータメモリ261のアドレスを、転送先アドレスや転送元アドレスとして転送指示において指定することができる。このように複数のデバイス間でメモリ空間を共有することができれば、デバイス間のデータ転送で使用されるプロトコルは、PCIeプロトコルに代えて、別のプロトコルであってもよい。すなわち、CPU224が主記憶メモリ123のアドレスとアクセラレータメモリ261のアドレスの両方を認識(管理)可能なプロトコルを採用することができる。PCIe-SW122(デバイスインターフェース装置の一例)と、SSD111(I/Oデバイスの一例)との間のプロトコルは、CPU224が主記憶メモリ123のアドレスとアクセラレータメモリ261のアドレスの両方を認識可能なプロトコルでなくてもよい。例えば、SSD111は、NVMeプロトコルに従い通信するI/Oデバイスの一例であるが、NVMeプロトコル以外のプロトコル、例えば、SAS(Serial Attached SCSI)プロトコルに従い通信するデバイスでもよい。PCIe-SW122に代えて、他種のデバイスインターフェース装置、例えば、SASコントローラが採用されてもよい。
図6は、第1の実施形態に係るデータ転送全体(SSD111から主記憶メモリ123へのデータ転送)の流れを示す。図7は、当該データ転送全体でのプロトコル及びパラメータの詳細を示す。なお、図6及び図7を参照した説明では、一つのSSD111を例に取る(以下、図6及び図7を参照した説明において、「ソースSSD111」と言う)。
CPU224が、第1の転送指示をソースSSD111に送信する(S601)。第1の転送指示は、ソースSSD111から出力対象のデータをアクセラレータメモリ261に転送することを指定した転送指示である。第1の転送指示は、例えばNVMeプロトコルに従い送信される。また、第1の転送指示には、ソースアドレス、デスティネーションアドレス及び転送サイズが転送パラメータとして指定される。ソースアドレスは、ソースSSD111のアドレスPである。デスティネーションアドレスは、アクセラレータメモリ261のアドレスQである。転送サイズは、出力対象(転送対象)のデータのサイズRである。
ソースSSD111は、第1の転送指示を受信する。ソースSSD111は、第1の転送指示に応答して、ソースSSD111のデータ転送特性に従う転送単位サイズで、出力対象のデータを、アドレスP(ソースSSD111のアドレス(第1の転送指示で指定されたソースアドレス))からアドレスQ(アクセラレータメモリ261のアドレス(第1の転送指示で指定されたデスティネーションアドレス))へ転送する(S602)。S602のデータ転送は、PCIeプロトコルに従い行われる。
ソースSSD111は、出力対象のデータを全て転送し終えた場合、第1の転送指示に対する応答として、完了をCPU224に返す(S603)。
CPU224は、第1の転送指示に対する応答として完了をソースSSD111から受信することで、ソースSSD111が出力対象のデータをアクセラレータメモリ261に転送し終えたことを認識できる。CPU224は、完了を受信した場合、第2の転送指示をDMAC262に送信する(S604)。第2の転送指示は、当該出力対象のデータをアクセラレータメモリ261から主記憶メモリ123に転送することを指定した転送指示である。第2の転送指示は、例えばローカルの(任意の)プロトコルに従い送信されてよい。また、第2の転送指示にも、ソースアドレス、デスティネーションアドレス及び転送サイズが転送パラメータとして指定される。ソースアドレスは、アドレスQ(アクセラレータメモリ261のアドレス(ソースSSD111からのデータの転送先とされたアドレス))である。デスティネーションアドレスは、主記憶メモリ123のアドレスMである。転送サイズは、出力対象のデータのサイズRである。
DMAC262は、第2の転送指示を受信する。DMAC262は、第2の転送指示に応答して、アドレスQ(アクセラレータメモリ261のアドレス(第2の転送指示で指定されたソースアドレス))からサイズRのデータをリードする(S605)。DMAC262は、当該データの一つ又は複数の転送単位サイズ(RMWの発生回数を最小にする一つ又は複数の転送単位サイズ)を決定する(S606)。DMAC262は、当該データを、決定した一つ又は複数の転送単位サイズで、アドレスM(主記憶メモリ123のアドレス(第2の転送指示で指定されたデスティネーションアドレス))に転送する(S607)。
DMAC262は、当該データの全ての転送が完了した場合、第2の転送指示に対する応答として、完了をCPU224に返す(S608)。CPU224は、第2の転送指示に対する応答として完了をDMAC262から受信することで、DMAC262が出力対象のデータを主記憶メモリ123に転送し終えたことを認識できる。
以上のデータ転送全体の流れによれば、CPU224が、S601で送信した第1の転送指示に応答したデータ転送を完了したことの通知をソースSSD111から受信した場合、DMAC212に、第2の転送指示を送信する。このようにして、1段階目のデータ転送(ソースSSD111からアクセラレータメモリ261へのデータ転送)が完了した場合に、次の2段階目のデータ転送(アクセラレータメモリ261から主記憶メモリ123へのデータ転送)を開始することができる。
また、以上のデータ転送全体の流れによれば、第1の転送指示は、出力対象のデータのソースアドレスとしてソースSSD111が属するアドレスPを指定しデスティネーションアドレスとしてアクセラレータメモリ261のアドレスQを指定した転送指示である。第2の転送指示は、ソースアドレスとしてアドレスQを指定しデスティネーションアドレスとして主記憶メモリ123のアドレスMを指定した転送指示である。このようにして、2段階のデータ転送を実現することができる。
なお、S606で決定された一つ又は複数の転送単位サイズ(RMWの発生回数が最小となる一つ又は複数の転送単位サイズ)は、部分先頭サイズと、部分末尾サイズと、一つ以上の最適サイズとのうちの少なくとも一つで構成される。各々の転送単位サイズの詳細は、下記の通りである。
・「部分先頭サイズ」は、出力対象のデータの先頭アドレス(主記憶メモリ123における転送先(ライト先)の先頭アドレス(例えば、アドレスM))がキャッシュラインの開始アドレスと一致しない場合に採用される転送単位サイズであり、部分先頭データのサイズである。「部分先頭データ」は、出力対象のデータの先頭アドレスから当該キャッシュラインの終了アドレス分のデータである。部分先頭データのサイズは、キャッシュラインサイズ未満である。
・「部分末尾サイズ」は、出力対象のデータの末尾アドレス(主記憶メモリ123における転送先(ライト先)の末尾アドレス)がキャッシュラインの終了アドレスと一致しない場合に採用される転送単位サイズであり、部分末尾データのサイズである。「部分末尾データ」は、出力対象のデータの末尾アドレスから当該キャッシュラインの開始アドレス分のデータである。部分末尾データのサイズは、キャッシュラインサイズ未満である。
・「一つ以上の最適サイズ」の各々は、出力対象のデータのうち部分先頭データ及び部分末尾データを除く少なくとも一部のデータのサイズであり、キャッシュラインサイズのN倍(Nは自然数)のサイズである。
このように、出力対象のデータのうち、主要データ(部分先頭データ及び部分末尾データのいずれかに該当するデータ以外のデータ)は、最適サイズを転送単位サイズとして転送される。このため、RMWは、部分先頭データ及び部分末尾データのいずれかに該当するデータについて発生し、当該データ以外のデータである主要データについて発生しない。結果として、RMWの発生回数が最小に抑えられる。
なお、例えば、Nの値としては、最適サイズが少なくなる(例えば、最適サイズが一つとなる)、言い換えれば、転送回数が少なるような値が採用されてもよい。
[第2の実施形態]
第2の実施形態を説明する。その際、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については説明を省略又は簡略する。
図8は、第2の実施形態に係るシステム全体の構成を示す。
アクセラレータ260が、PCIe-SW122に代えて、CPU224に接続される。この場合、例えばSSD111Aから出力されたデータは、PCIe-SW122及びCPU124を経由してアクセラレータ260に転送される。このように、第2の実施形態に係る構成によれば、第1の実施形態に係る構成と異なり、1段階目のデータ転送において転送されるデータが、PCIe-SW122に加えてCPU224を経由することになる。一方、第1の実施形態に係る構成によれば、1段階目のデータ転送において転送されるデータは、PCIe-SW122を経由するがCPU224を経由しない。このため、第1の実施形態に係る構成の方が、CPU224内のデータ流量が少ない点で好ましい。なお、アクセラレータ260は、ストレージシステム210においてPCIeでの通信が可能なデバイスのうちのいずれのデバイス(例えば、HBA121)に接続されてもよいし、PCIeでの通信が可能なデバイスのうちのいずれのデバイス(例えば、図示のようにPCIe-SW122)に含まれていてもよい。
また、2段階転送とするか1段階転送とするかが、転送元のSSD111のデータ転送特性がDMAC262のデータ転送特性と同じか否かに応じて、予め決められていてもよい。具体的には、例えば、下記の通りでよい。これにより、性能低下をより低減することが期待される。
・DMAC262のデータ転送特性と異なるデータ転送特性を持つSSD111Aについては、2段階転送が採用される。すなわち、ソースSSD111がSSD111Aであれば、CPU224は、SSD111Aに対する第1の転送指示において、デスティネーションアドレスとしてアクセラレータメモリ261のアドレスを指定する。
・DMAC262のデータ転送特性と同じデータ転送特性を持つSSD111Cについては、1段階転送が採用される。すなわち、ソースSSD111がSSD111Cであれば、CPU224は、SSD111Cに対する第1の転送指示において、デスティネーションアドレスとして主記憶メモリ123のアドレスを指定する。
[第3の実施形態]
第3の実施形態を説明する。その際、第1及び第2の実施形態との相違点を主に説明し、第1及び第2の実施形態との共通点については説明を省略又は簡略する。
図9は、第3の実施形態に係るデータ転送全体の流れを示す。
第3の実施形態によれば、CPU224に代えてCPU924が採用され、SSD111に代えてSSD911が採用される。第2の転送指示は、SSD911により送信される。
具体的には、例えば、CPU924が、ソースSSD911に第1の転送指示を送信する(S701)。当該第1の転送指示は、ソースSSD911からアクセラレータメモリ261に出力対象のデータを転送することに加えて、アクセラレータメモリ261から主記憶メモリ123に出力対象のデータを転送することの指示、つまり、2段階のデータ転送の指示でよい。例えば、当該第1の転送指示は、ソースアドレス及びデスティネーションアドレスとして、第1のアドレスセット(1段階目のデータ転送用のソースアドレス及びデスティネーションアドレス)と、第2のアドレスセット(2段階目のデータ転送用のソースアドレス及びデスティネーションアドレス)とを含んでよい。
ソースSSD911が、当該第1の転送指示に応答して、第1のアドレスセットに従い、ソースSSD911からアクセラレータメモリ261に出力対象のデータを転送する(S702)。
ソースSSD911が、S702のデータ転送を完了した場合、第2の転送指示をDMAC262に送信する(S703)。当該第2の転送指示は、上述の第2のアドレスセットを含む。当該第2の転送指示をDMAC262が受信した場合、S605~S607と同じ処理が行われる(S704~S706)。
DMAC262は、S706を完了した場合、第2の転送指示に対する応答として、完了をソースSSD911に返す(S707)。本実施形態では、第2の転送指示の送信元がソースSSD911のため、完了応答は、ソースSSD911に返る。
ソースSSD911は、第2の転送指示に対する応答として完了をDMAC262から受信した場合に、第1の転送指示に対する応答として、完了をCPU924に返す(S708)。
第3の実施形態によれば、2段階のデータ転送においてCPU924が関わる処理は、第1の実施形態より少ないため、CPU924の負荷軽減が期待できる。
以上、幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
210:ストレージシステム 260:アクセラレータ 261:アクセラレータメモリ 262:DMAコントローラ

Claims (10)

  1. 一つ又は複数のI/O(Input/Output)デバイスと、
    第1メモリアドレスのアドレス空間を提供する第1のメモリと、
    前記第1のメモリの単位領域であるキャッシュラインの単位で前記第1のメモリにデータをライトするプロセッサと、
    第2メモリアドレスのアドレス空間を提供する第2のメモリと、
    データをDMA(Direct Memory Access)転送するDMAコントローラと
    を備え、
    前記プロセッサが、キャッシュラインの一部がライト先であるキャッシュラインサイズ未満のデータについては、当該キャッシュラインの全域からキャッシュラインサイズのデータをリードすることと、当該キャッシュラインサイズのデータの一部を当該キャッシュラインサイズ未満のデータにモディファイすることと、当該モディファイ後のキャッシュラインサイズのデータを当該キャッシュラインにライトすることとを含んだRMW(リードモディファイライト)を行うようになっており、
    前記プロセッサが、前記一つ又は複数のI/Oデバイスのうちデータの出力元であるソースI/Oデバイスに対し、前記ソースI/Oデバイスから出力対象のデータを前記第2のメモリに転送することを指定した第1の転送指示を送信し、
    前記DMAコントローラが、前記第1の転送指示に応答して前記ソースI/Oデバイスから前記第2のメモリに転送された出力対象のデータを、前記第2のメモリから前記第1のメモリに当該出力対象のデータを転送することを指定した第2の転送指示に応答して、RMWの発生回数が最小となる一つ又は複数の転送単位サイズで、前記第2のメモリから前記第1のメモリ転送
    前記第1のメモリにデータをライトするようになっている前記プロセッサが、前記第2のメモリから前記第1のメモリへ前記DMAコントローラにより転送されたデータであり前記一つ又は複数の転送単位サイズの各々の転送単位サイズのデータについて、当該データのライト先の第1メモリアドレスと、当該転送単位サイズとから、RMWの要否を判定し、RMWが必要と判定した場合に当該データをRMWにより前記第1のメモリにライトし、RMWが不要と判定した場合に当該データをRMW無しに前記第1のメモリにライトする、
    データ転送システム。
  2. 前記第2のメモリ及び前記DMAコントローラは、前記複数のI/Oデバイスに共通である、
    請求項1に記載のデータ転送システム。
  3. 前記複数のI/Oデバイスは、転送単位サイズを含むデータ転送特性が異なるマルチベンダの複数のI/Oデバイスであり、
    前記ソースI/Oデバイスが、前記DMAコントローラのデータ転送特性と異なるデータ転送特性を持つI/Oデバイスであれば、当該I/Oデバイスに対し、前記プロセッサは、前記第1の転送指示において、転送先として前記第2のメモリを指定し、
    前記ソースI/Oデバイスが、前記DMAコントローラのデータ転送特性と同じデータ転送特性を持つ第I/Oデバイスであれば、当該I/Oデバイスに対し、前記プロセッサは、前記第1の転送指示において、転送先として前記第1のメモリを指定する、
    請求項2に記載のデータ転送システム。
  4. 前記出力対象のデータについて、RMWの発生回数が最小となる一つ又は複数の転送単位サイズは、部分先頭サイズと、部分末尾サイズと、一つ以上の最適サイズとのうちの少なくとも一つで構成され、
    前記部分先頭サイズは、前記出力対象のデータの先頭第1メモリアドレスがキャッシュラインの開始第1メモリアドレスと一致しない場合に前記一つ又は複数の転送単位サイズに含まれる転送単位サイズであって、部分先頭データのサイズであり、当該部分先頭データは、前記出力対象のデータの先頭第1メモリアドレスから当該キャッシュラインの終了第1メモリアドレス分のデータであり、
    前記部分末尾サイズは、前記出力対象のデータの末尾第1メモリアドレスがキャッシュラインの終了第1メモリアドレスと一致しない場合に前記一つ又は複数の転送単位サイズに含まれる転送単位サイズであって、部分末尾データのサイズであり、当該部分末尾データは、前記出力対象のデータの末尾第1メモリアドレスから当該キャッシュラインの開始第1メモリアドレス分のデータであり、
    前記一つ以上の最適サイズの各々は、前記出力対象のデータのうち前記部分先頭データ及び前記部分末尾データを除く少なくとも一部のデータのサイズであり、キャッシュラインサイズのN倍(Nは自然数)のサイズである、
    請求項1に記載のデータ転送システム。
  5. 前記第1の転送指示は、前記出力対象のデータのソースアドレスとして前記ソースI/Oデバイスが属するアドレスを指定しデスティネーションアドレスとして第1の第2メモリアドレスを指定した転送指示であり、
    前記第2の転送指示は、ソースアドレスとして前記第1の第2メモリアドレスを指定しデスティネーションアドレスとして第1の第1メモリアドレスを指定した転送指示である、
    請求項1に記載のデータ転送システム。
  6. 前記プロセッサが、前記第1の転送指示に応答したデータ転送を完了したことの通知を前記ソースI/Oデバイスから受信した場合、前記DMAコントローラに、前記第2の転送指示を送信する、
    請求項1に記載のデータ転送システム。
  7. 前記第1のメモリ及び前記第2のメモリが属するバスを有し、
    前記バスに属するデバイスが共有するアドレス空間に、前記第1のメモリのアドレス空間に加えて、前記第2のメモリのアドレス空間がマッピングされている、
    請求項1に記載のデータ転送システム。
  8. 前記複数のI/Oデバイスが接続されるデバイスインターフェース装置を更に有し、
    前記第2のメモリ及び前記DMAコントローラは、前記デバイスインターフェース装置に接続されており、
    前記ソースI/Oデバイスから前記第2のメモリに転送される前記出力対象のデータは、前記デバイスインターフェース装置を経由し、前記プロセッサを経由しない、
    請求項1に記載のデータ転送システム。
  9. 単位領域であるキャッシュラインの単位でデータがライトされる第1のメモリへデータを転送することを支援するアクセラレータが行うデータ転送方法であって、
    第2のメモリに出力対象のデータを転送することを指定した第1の転送指示に応答してI/Oデバイスから出力され当該第2のメモリにライトされた当該出力対象のデータを前記第2のメモリから前記第1のメモリに転送することを指定した第2の転送指示を受信するステップと
    前記第2の転送指示に応答して、前記第1のメモリに対してプロセッサによるRMW(リードモディファイライト)が発生する回数が最小となる一つ又は複数の転送単位サイズで、前記出力対象のデータを前記第2のメモリから前記第1のメモリ転送するステップと
    を有し
    前記第1のメモリにデータをライトするようになっている前記プロセッサが、前記第2のメモリから前記第1のメモリへ前記アクセラレータにおけるDMAコントローラにより転送されたデータであり前記一つ又は複数の転送単位サイズの各々の転送単位サイズのデータについて、当該データのライト先の第1メモリアドレスと、当該転送単位サイズとから、RMWの要否を判定し、RMWが必要と判定した場合に当該データをRMWにより前記第1のメモリにライトし、RMWが不要と判定した場合に当該データをRMW無しに前記第1のメモリにライトする、
    データ転送方法。
  10. 単位領域であるキャッシュラインの単位でデータがライトされる第1のメモリへデータを転送することを支援するアクセラレータであって、
    第2のメモリと、
    データをDMA(Direct Memory Access)転送するDMAコントローラと
    を備え、
    前記第2のメモリが、前記第2のメモリに出力対象のデータを転送することを指定した第1の転送指示に応答してI/Oデバイスから出力された出力対象のデータを当該I/Oデバイスから受信し、
    前記DMAコントローラが、前記第2のメモリから前記第1のメモリに前記出力対象のデータを転送することを指定した第2の転送指示に応答して、前記第1のメモリに対してプロセッサによるRMW(リードモディファイライト)が発生する回数が最小となる一つ又は複数の転送単位サイズで、前記出力対象のデータを前記第2のメモリから前記第1のメモリ転送
    前記第1のメモリにデータをライトするようになっている前記プロセッサが、前記第2のメモリから前記第1のメモリへ前記DMAコントローラにより転送されたデータであり前記一つ又は複数の転送単位サイズの各々の転送単位サイズのデータについて、当該データのライト先の第1メモリアドレスと、当該転送単位サイズとから、RMWの要否を判定し、RMWが必要と判定した場合に当該データをRMWにより前記第1のメモリにライトし、RMWが不要と判定した場合に当該データをRMW無しに前記第1のメモリにライトする、
    アクセラレータ。
JP2020026671A 2020-02-19 2020-02-19 データ転送システム Active JP6997235B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020026671A JP6997235B2 (ja) 2020-02-19 2020-02-19 データ転送システム
US17/016,911 US11226915B2 (en) 2020-02-19 2020-09-10 Data transfer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020026671A JP6997235B2 (ja) 2020-02-19 2020-02-19 データ転送システム

Publications (2)

Publication Number Publication Date
JP2021131732A JP2021131732A (ja) 2021-09-09
JP6997235B2 true JP6997235B2 (ja) 2022-01-17

Family

ID=77272705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020026671A Active JP6997235B2 (ja) 2020-02-19 2020-02-19 データ転送システム

Country Status (2)

Country Link
US (1) US11226915B2 (ja)
JP (1) JP6997235B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113836050A (zh) * 2021-09-30 2021-12-24 龙芯中科技术股份有限公司 访存控制方法、装置、设备及可读存储介质
CN117529704A (zh) * 2022-05-18 2024-02-06 深圳市韶音科技有限公司 一种信号传输控制系统
CN115114103B (zh) * 2022-08-23 2023-01-06 摩尔线程智能科技(北京)有限责任公司 直接存储器访问数据传输的测试方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016181464A1 (ja) 2015-05-11 2016-11-17 株式会社日立製作所 ストレージシステム、及び、記憶制御方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4525780A (en) * 1981-05-22 1985-06-25 Data General Corporation Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information
US6957368B2 (en) * 2002-01-23 2005-10-18 Medtronic Emergency Response Systems, Inc. Hazard mitigation in medical device
JP2007501473A (ja) * 2003-05-26 2007-01-25 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ メインメモリとストレージ装置との間のデータ転送を行うための方法及び装置
JP2005182538A (ja) 2003-12-19 2005-07-07 Toshiba Corp データ転送装置
EP1569126B1 (en) * 2004-02-27 2007-01-03 Freescale Semiconductor, Inc. Universal serial bus transmitter
US8521963B1 (en) * 2009-09-21 2013-08-27 Tilera Corporation Managing cache coherence
US8713294B2 (en) * 2009-11-13 2014-04-29 International Business Machines Corporation Heap/stack guard pages using a wakeup unit
WO2013028854A1 (en) * 2011-08-24 2013-02-28 Rambus Inc. Methods and systems for mapping a peripheral function onto a legacy memory interface
US9224187B2 (en) * 2013-09-27 2015-12-29 Apple Inc. Wavefront order to scan order synchronization
US20150281126A1 (en) * 2014-03-31 2015-10-01 Plx Technology, Inc. METHODS AND APPARATUS FOR A HIGH PERFORMANCE MESSAGING ENGINE INTEGRATED WITHIN A PCIe SWITCH
US9535850B1 (en) * 2015-01-28 2017-01-03 Google Inc. System and method for efficient DMA transfers
EP3535625B1 (en) * 2016-12-07 2021-02-24 Arilou Information Security Technologies Ltd. System and method for using signal waveform analysis for detecting a change in a wired network
US10146691B2 (en) * 2016-12-09 2018-12-04 Intel Corporation System and method for performing partial cache line writes without fill-reads or byte enables
US10466906B2 (en) * 2017-12-19 2019-11-05 Western Digital Technologies, Inc. Accessing non-volatile memory express controller memory manager
GB2569604B (en) * 2017-12-21 2020-06-03 Advanced Risc Mach Ltd Controlling reading and writing of data streams in data processing systems
US10768970B2 (en) * 2017-12-29 2020-09-08 Virtual Instruments Corporation System and method of flow source discovery
US10409524B1 (en) * 2018-04-25 2019-09-10 Advanced Micro Devices, Inc. Dynamic memory traffic optimization in multi-client systems
US11044099B2 (en) * 2018-12-28 2021-06-22 Intel Corporation Technologies for providing certified telemetry data indicative of resources utilizations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016181464A1 (ja) 2015-05-11 2016-11-17 株式会社日立製作所 ストレージシステム、及び、記憶制御方法

Also Published As

Publication number Publication date
US20210255977A1 (en) 2021-08-19
JP2021131732A (ja) 2021-09-09
US11226915B2 (en) 2022-01-18

Similar Documents

Publication Publication Date Title
JP6997235B2 (ja) データ転送システム
US6748486B2 (en) Method, system, and data structures for superimposing data records in a first data format to memory in a second data format
US8136015B2 (en) Data storage apparatus and data storage method
US7917690B2 (en) Method of controlling card-shaped memory device
CA2589360A1 (en) Memory system with sector buffers
JP4884721B2 (ja) 記憶装置のフォーマットを不要としたストレージシステム及び記憶制御方法
CN112912851B (zh) 用于寻址的系统和方法、以及媒体控制器
JP6426838B2 (ja) ストレージシステム、及び、記憶制御方法
US20030120836A1 (en) Memory system
TW201945930A (zh) 使用標準化資料儲存及擷取協定的用於資料編碼及解碼之方法及設備
JP6649989B2 (ja) ストレージシステム及びその制御方法
US11816336B2 (en) Storage system and control method thereof
US11740799B2 (en) Storage system and input and output control method
US6513142B1 (en) System and method for detecting of unchanged parity data
US11880592B2 (en) Memory system adjusting packet size and method
US20060277326A1 (en) Data transfer system and method
CN214376421U (zh) Ftl加速器及控制部件
US20040078517A1 (en) Disk array device, method for controlling the disk array device and storage system
JP4431492B2 (ja) 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット
JP7242928B2 (ja) ストレージシステム及び入出力制御方法
US11200172B2 (en) Storage system and method of controlling storage system
EP4276634A1 (en) Storage device, computing device including storage device and memory device, and operating method of computing device
JP6704127B2 (ja) 情報処理装置
WO2022109975A1 (zh) 存储芯片、存储设备及其访问方法
CN114691550A (zh) 压缩的ftl表及其加速器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210914

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211110

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211216

R150 Certificate of patent or registration of utility model

Ref document number: 6997235

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150