JP7495191B2 - I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え - Google Patents

I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え Download PDF

Info

Publication number
JP7495191B2
JP7495191B2 JP2022515916A JP2022515916A JP7495191B2 JP 7495191 B2 JP7495191 B2 JP 7495191B2 JP 2022515916 A JP2022515916 A JP 2022515916A JP 2022515916 A JP2022515916 A JP 2022515916A JP 7495191 B2 JP7495191 B2 JP 7495191B2
Authority
JP
Japan
Prior art keywords
memory
data transfer
transfer technique
request
cache
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
JP2022515916A
Other languages
English (en)
Other versions
JP2022547684A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022547684A publication Critical patent/JP2022547684A/ja
Application granted granted Critical
Publication of JP7495191B2 publication Critical patent/JP7495191B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • 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/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]

Landscapes

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

Description

本発明は、ストレージ・システムにおけるI/O性能を最適化するためのメモリ・コピー技術およびメモリ・マッピング技術間を動的に切り替えるためのシステムおよび方法に関する。
ペリフェラル・コンポーネント・インターコネクト(PCI)ホスト・ブリッジは、データ処理システム内においてプロセッサと入出力(I/O)サブシステムとの間の通信を可能とすることができる。PCIホスト・ブリッジは、プロセッサおよびI/Oサブシステム間で読み書きデータを転送できるようにデータ・バッファリング能力を提供する。I/Oサブシステムは、PCIバスに接続されたPCIデバイスのグループであってもよい。PCIバス上のPCIデバイスが、ダイレクト・メモリ・アクセス(DMA)を介して、システムメモリに読み取りまたは書き込みコマンドを発すると、PCIホスト・ブリッジは、DMAのPCIアドレスを、システムメモリのシステムメモリ・アドレスに翻訳する。
PCIバス上の各PCIデバイスは、システムメモリ内に常駐する対応の翻訳制御エントリ(TCE)テーブルと関連付けられ得る。TCEテーブルは、PCIアドレスからシステムメモリ・アドレスへのTCE翻訳を実行するために利用され得る。DMAの読み取りまたは書き込み動作に応答して、対応のTCEテーブルが、TCE変換を提供するためにPCIホスト・ブリッジによって読み取られる。
IBM(登録商標)DS8000(登録商標)エンタープライズ・ストレージ・システムのようなストレージ・システムにおいては、ストレージ・システムによって処理される各I/Oは、ストレージ・システムのキャッシュ・メモリを1回以上マッピングすることを必要とする。例えば、キャッシュ・メモリへの読み取りヒットは、ホストアダプタがDMAを介してキャッシュ・メモリを読み取ることができるようにTCEマッピングを作成することを必要とする。このTCEマッピングは、DMAが完了した後にアンマップされる。読み取りミスの場合には、2つのTCEマッピング、ストレージ・ドライブから読み取りデータを検索するためにキャッシュ・メモリおよびデバイスアダプタの間の1つのマッピング、および、読み取りデータをホストシステムに戻すためのキャッシュ・メモリおよびホストアダプタの間の第2のマッピング、が必要である。DMAが完了した後、TCEマッピングは、アンマップされ得る。IBMおよびDS/8000は、世界中の多くの管轄に登録されている、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。
以上の観点から、IBM(登録商標)DS8000(登録商標)エンタープライズ・ストレージ・システムのようなストレージ・システム内でデータを転送するための代替のデータ転送技術が必要とされる。さらに、IBM(登録商標)DS8000(登録商標)エンタープライズ・ストレージ・システムのようなストレージ・システムにおいてI/O性能を最適化するために、いくつかのデータ転送技術を動的に切り替えるためのシステムおよび方法が必要とされる。
よって、上記課題を解決することが当該技術分野において求められている。
第1の側面から見ると、本発明は、I/O性能を向上させるためにメモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送技術間を動的に切り替えるための方法を提供し、本方法は、I/O要求を受信するステップと、メモリ・コピー・データ転送技術を使用してI/O要求を実行するコストを計算するステップであって、メモリ・コピー・データ転送技術は、I/O要求に関連付けられたキャッシュ・セグメントを、キャッシュ・メモリから、永続的にマッピングされたメモリにコピーし、ここで、永続的にマッピングされたメモリは、バス・アドレス・ウィンドウに永続的にマッピングされる、計算するステップと、メモリ・マッピング・データ転送技術を用いてI/O要求を実行するコストを計算するステップであって、メモリ・マッピング・データ転送技術は、I/O要求に関連付けられたキャッシュ・セグメントを、キャッシュ・メモリから、バス・アドレス・ウィンドウに一時的にマッピングする、計算するステップと、メモリ・コピー・データ転送技術を用いることの方が、メモリ・マッピング・データ転送技術を用いることよりもコストが低い場合に、メモリ・コピー・データ転送技術を使用して、I/O要求に関連付けられたキャッシュ・セグメントを転送するステップと、メモリ・マッピング・データ転送技術を用いることの方が、メモリ・コピー・データ転送技術を用いることよりもコストが低い場合に、メモリ・マッピング・データ転送技術を用いてI/O要求に関連付けられたキャッシュ・セグメントを転送するステップとを含む。
さらなる側面から見ると、本発明は、I/O性能を向上させるためにメモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送技術間を動的に切り替えるためのシステムが提供され、本システムは、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに接続され、少なくとも1つのプロセッサ上での実行のための命令を格納するメモリとを含み、命令は、少なくとも1つのプロセッサに、I/O要求を受信することと、メモリ・コピー・データ転送技術を使用してI/O要求を実行するコストを計算することであって、メモリ・コピー・データ転送技術は、I/O要求に関連付けられたキャッシュ・セグメントを、キャッシュ・メモリから、永続的にマッピングされたメモリにコピーし、永続的にマッピングされたメモリは、バス・アドレス・ウィンドウに永続的にマッピングされる、コストを計算することと、メモリ・マッピング・データ転送技術を用いてI/O要求を実行するコストを計算することであって、メモリ・マッピング・データ転送技術は、I/O要求に関連付けられたキャッシュ・セグメントを、キャッシュ・メモリから、バス・アドレス・ウィンドウに一時的にマッピングする、コストを計算すること、メモリ・コピー・データ転送技術を用いることの方が、メモリ・マッピング・データ転送技術を用いることよりもコストが低い場合に、メモリ・コピー・データ転送技術を使用して、I/O要求に関連付けられたキャッシュ・セグメントを転送することと、メモリ・マッピング・データ転送技術を用いることの方が、メモリ・コピー・データ転送技術を用いることよりもコストが低い場合に、メモリ・マッピング・データ転送技術を用いてI/O要求に関連付けられたキャッシュ・セグメントを転送することとを実行させる。
さらなる側面から見ると、本発明は、I/O性能を向上させるためにメモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送技術間を動的に切り替えるためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、本発明の方法のステップを実行するための処理回路による実行のための命令を格納するコンピュータ可読記憶媒体を含む。
さらなる側面から見ると、本発明は、コンピュータ可読媒体に格納され、デジタル・コンピュータの内部メモリに読み込み可能なコンピュータ・プログラムを提供し、コンピュータ・プログラムは、プログラムがコンピュータ上で実行されたとき、本発明の方法のステップを実行するためのソフトウェア・コード部分を含む。
さらなる側面から見ると、本発明は、I/O性能を向上させるためにメモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送技術間を動的に切り替えるためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品は、具体化されたコンピュータ・プログラム・コードを有するコンピュータ可読記憶媒体を含み、コンピュータ・プログラム・コードは、少なくとも1つのプロセッサによって実行されたとき、I/O要求を受信することと、メモリ・コピー・データ転送技術を使用してI/O要求を実行するコストを計算することであって、メモリ・コピー・データ転送技術は、I/O要求に関連付けられたキャッシュ・セグメントを、キャッシュ・メモリから、永続的にマッピングされたメモリにコピーし、永続的にマッピングされたメモリは、バス・アドレス・ウィンドウに永続的にマッピングされる、計算することと、メモリ・マッピング・データ転送技術を用いてI/O要求を実行するコストを計算するステップであって、メモリ・マッピング・データ転送技術は、I/O要求に関連付けられたキャッシュ・セグメントを、キャッシュ・メモリから、バス・アドレス・ウィンドウに一時的にマッピングする、計算することと、メモリ・コピー・データ転送技術を用いることの方が、メモリ・マッピング・データ転送技術を用いることよりもコストが低い場合に、メモリ・コピー・データ転送技術を使用して、I/O要求に関連付けられたキャッシュ・セグメントを転送することと、メモリ・マッピング・データ転送技術を用いることの方が、メモリ・コピー・データ転送技術を用いることよりもコストが低い場合に、メモリ・マッピング・データ転送技術を用いてI/O要求に関連付けられたキャッシュ・セグメントを転送することとを実行するように構成される。
本発明は、現在の最先端に応答して、特に、現在利用可能なシステムおよび方法ではまだ完全に解決されていない技術分野における問題および必要性に応答して開発されたものである。したがって、本発明の実施形態は、メモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送技術間を動的に切り替えてI/O性能を向上させるために開発されたものである。本発明の特徴および利点は、以下の説明および特許請求の範囲からより十分に明らかになるか、または、以下に述べる本発明の実践によって学習され得る。
上記と一貫して、I/O性能を向上させるためにメモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送技術間を動的に切り替えるための方法が開示される。本方法は、I/O要求を受信し、メモリ・コピー・データ転送技術を使用してI/O要求を実行するコストを計算する。メモリ・コピー・データ転送技術は、I/O要求に関連付けられたキャッシュ・セグメントを、キャッシュ・メモリから、永続的にマッピングされたメモリにコピーし、この永続的にマッピングされたメモリは、バス・アドレス・ウィンドウに永続的にマッピングされる。本方法は、メモリ・マッピング・データ転送技術を用いてI/O要求を実行するコストを計算する。メモリ・マッピング・データ転送技術は、I/O要求に関連付けられたキャッシュ・セグメントを、キャッシュ・メモリから、バス・アドレス・ウィンドウに一時的にマッピングする。本方法は、いずれの一方のコストが低いかに応じて、メモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送技術のうちの1つを使用してI/O要求に関連付けられたキャッシュ・セグメントを転送する。
対応するシステムおよびコンピュータ・プログラム製品がまた開示され、かつ、特許請求される。
本発明の利点を容易に理解するために、添付の図面に示された特定の実施形態を参照することによって、上記で簡単に説明した本発明のより具体的な説明を行う。これらの図面は、本発明の典型的な実施形態のみを示し、したがって、本発明の範囲を限定するものと見なされるべきではないことを理解し、本発明は、以下の添付の図面を用いて、追加の具体性および詳細とともに記載および説明される。
図1は、本発明によるシステムおよび方法を実装することができるネットワーク環境の一例を示す高レベルブロック図である。 図2は、図1のネットワーク環境において使用するためのストレージ・システムの一実施形態を示す高レベルブロック図である。 図3は、メモリ・マッピング・データ転送技術の一例を示す高レベルブロック図である。 図4は、メモリ・コピー・データ転送技術の一例を示す高レベルブロック図である。 図5は、特定のI/O要求についていずれのデータ転送技術を用いるかを決定する方法の一実施形態を示すフロー図である。 図6は、メモリ・マッピング・データ転送技術で使用するために割り当てられる“マッピング”ウィンドウおよびメモリ・コピー・データ転送技術で使用するために割り当てられる“コピー”ウィンドウを示す高レベルブロック図である。 図7は、I/O要求を処理するときの効率化を促進するために“マッピング”ウィンドウの数および“コピー”ウィンドウの数を動的に調整することを示す高レベルブロック図である。 図8は、メモリ・マッピング・データ転送技術に関連して使用される“マッピング”ウィンドウの数およびメモリ・コピー・データ転送技術に関連して使用される“コピー”ウィンドウの数を動的に最適化する方法の一実施形態を示すフロー図である。 図9は、メモリ・マッピング・データ転送技術に関連して使用される“マッピング”ウィンドウの数およびメモリ・コピー・データ転送技術に関連して使用される“コピー”ウィンドウの数を動的に最適化する方法の別の実施形態を示すフロー図である。 図10は、メモリ・マッピング・データ転送技術またはメモリ・コピー・データ転送技術のいずれを利用してI/O要求を処理するかを決定するための方法の一実施形態を示すフロー図である。
本発明の構成要素は、本明細書の図面に一般的に記載され、図示されているように、多岐にわたる異なる構成にて配置され設計されてもよいことが容易に理解されよう。よって、図面に示されるような、本発明の実施形態の以下のより詳細な説明は、特許請求されるように本発明の範囲を限定することを意図するものではなく、本発明に従った目下企図される実施形態のいくつかの例を単に表すものに過ぎない。目下説明する実施形態は、同様の部分が同様の符番で示されている図面を参照することによって、最もよく理解されるであろう。
本発明は、システム、方法もしくはコンピュータ・プログラム製品またはこれらの組み合わせとして実装されてもよい。コンピュータ・プログラム製品は、プロセッサに本発明の側面を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数または複数を含む。)を含んでもよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持し格納する有形のデバイスであってよい。コンピュータ可読ストレージ媒体は、例えば、これに限定されるものではないが、電子的ストレージ・システム、磁気ストレージ・システム、光学ストレージ・システム、電磁気ストレージ・システム、半導体ストレージ・システムまたは上記の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のより具体的な非網羅的なリストとしては、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能プログラマブル・リード・オンリー・メモリ(EPROMまたはフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリースティック、フロッピー(登録商標)ディスク、パンチカードまたは記録された命令を有する溝内の隆起構造のような機械的エンコードされたデバイス、および上記の任意の適切な組み合わせが含まれる。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波、自由伝搬する電磁波、導波路または他の伝送媒体を伝搬する電磁波(たとえば、ファイバ光ケーブルを通過する光パルス)または、ワイヤを通して伝送される電気信号のような、それ自体が一時的な信号として解釈されるものではない。
本明細書で説明されるコンピュータ可読プログラム命令は、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはこれらの組み合わせといったネットワークを介して、コンピュータ可読ストレージ媒体からそれぞれのコンピュータ/処理デバイスに、または、外部コンピュータまたは外部ストレージ・システムにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジサーバまたはこれらの組み合わせを含んでもよい。各コンピュータ/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、1以上のプログラミング言語の任意の組み合わせで書かれたソース・コードあるいはオブジェクト・コードであってよく、1以上のプログラミング言語は、Smalltalk(登録商標)、C++またはこれらに類するもなどのオブジェクト指向言語、Cプログラミング言語または類似のプログラミング言語などの従来型の手続型言語を含む。
コンピュータ可読プログラム命令は、スタンド・アローンのソフトウェア・パッケージとして、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上かつ部分的に遠隔のコンピュータ上で、または、完全に遠隔のコンピュータまたはサーバ上で実行されてもよい。後者のシナリオでは、遠隔のコンピュータは、ユーザのコンピュータに、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じて接続されてもよく、あるいは接続は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを通じて)外部コンピュータになされてもよい。いくつかの実施形態においては、電気的回路は、本発明の側面を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、電気的回路を個別化することによって、コンピュータ可読プログラム命令を実行してもよく、この電気的回路は、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む。
本発明の側面は、本明細書において、本発明の実施形態に従った方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、説明される可能性がある。フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されてもよいことが理解されよう。
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、特定用途コンピュータのプロセッサまたは他のプログラマブル・データ処理装置に提供され、コンピュータのプロセッサまたは他のプログラマブル・データ処理装置を介して実行される命令が、フローチャート図もしくはブロックまたはその両方のブロックまたは複数のブロックにおいて特定される機能/作用を実装するための手段を作成するように、マシンを生成する。これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置もしくは他のデバイスまたはこれらの組み合わせに特定のやり方で機能するよう指示できるコンピュータ可読ストレージ媒体に格納され、それに格納された命令を有するコンピュータ可読ストレージ媒体に、フローチャートもしくはブロックまたはその両方のブロックまたは複数のブロックで特定される機能/作用の側面を実装する命令を含む製品が含まれるようにする。
コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに読み込まれ、コンピュータ、他のプログラマブル・データ処理装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータ、他のプログラマブル・データ処理装置または他のデバイス上で実行される命令が、フローチャートもしくはブロックまたはその両方のブロックまたは複数のブロックで特定される機能/作用の側面を実装するように、コンピュータ実装処理を生成することもできる。
図1を参照すると、ネットワーク環境100の一例が示される。ネットワーク環境100は、本発明によるシステムおよび方法を実装することができる環境の一例を示すために提示される。ネットワーク環境100は、限定ではなく例として提示される。実際、本明細書で開示されるシステムおよび方法は、示されるネットワーク環境100に加えて、多岐にわたる異なるネットワーク環境に対して適用可能である可能性がある。
図示されるように、ネットワーク環境100は、ネットワーク104によって相互接続された1以上のコンピュータ102,106を含む。ネットワーク104は、例えば、ローカル・エリア・ネットワーク(LAN)104、ワイド・エリア・ネットワーク(WAN)104、インターネット104、イントラネット104などを含んでもよい。ある実施形態においては、コンピュータ102,106は、クライアント・コンピュータ102およびサーバ・コンピュータ106(本明細書では“ホスト”106または"ホストシステム106とも参照される。)の両方を含んでもよい。概して、クライアント・コンピュータ102は、通信セッションを開始し、一方、サーバ・コンピュータ106は、クライアント・コンピュータ102からの要求を待機し、これに応答する。ある実施形態においては、コンピュータ102もしくはサーバ106またはこれらの両方は、1以上の内部または外部の直付け型のストレージ・システム112(例えば、ハード・ストレージ・ドライブ、ソリッド・ステート・ドライブ、テープ・ドライブなどのアレイ)に接続されてもよい。これらのコンピュータ102,106および直付け型ストレージ・システム112は、ATA、SATA、SCSI、SAS、Fibre Channelなどのプロトコルを用いて通信してもよい。
ネットワーク環境100は、ある実施形態においては、ストレージエリア・ネットワーク(SAN)108または(例えば、ネットワーク取り付け型ストレージを使用する場合は)LAN108のような、サーバ106の背後にストレージ・ネットワーク108を含んでもよい。ネットワーク108は、ハード・ディスク・ドライブまたはソリッド・ステート・ドライブのアレイ110a、テープ・ライブラリ110b、個別のハード・ディスク・ドライブ110cまたはソリッド・ステート・ドライブ110c、テープ・ドライブ110d、CD-ROMライブラリなどの1以上のストレージ・システム110にサーバ106を接続してもよい。ストレージ・システム110にアクセスするために、ホストシステム106は、ホスト106上の1以上のポートからストレージ・システム110上の1以上のポートへ物理的接続を介して通信することができる。接続は、スイッチ、ファブリック、直接接続などを介してもよい。ある実施形態においては、サーバ106およびストレージ・システム110は、FibreChannel(FC)またはiSCSIなどのネットワーキング標準を使用して通信することができる。
図2を参照すると、ハード・ディスク・ドライブ24もしくはソリッド・ステート・ドライブ204またはこれらの両方のアレイを含むストレージ・システム110aの一例が示される。本発明によるシステムおよび方法がストレージ・システム110a内で実装され得るため、このようなストレージ・システム110aの内部コンポーネントが示されている。図示するように、ストレージ・システム110aは、ストレージ・コントローラ200と、1以上のスイッチ202と、ハード・ディスク・ドライブ204もしくはソリッド・ステート・ドライブ(例えば、フラッシュ・メモリベースのドライブ204)またはこれらの組み合わせのような1以上のストレージ・ドライブ204とを含む。ストレージ・コントローラ200は、1以上のホストシステム106(例えば、z/OS(登録商標)、z/VM(登録商標)など)などのオペレーティング・システムを動作させるオープンシステムもしくはメインフレームサーバまたはこれらの両方106)が1以上のストレージ・ドライブ204におけるデータにアクセスすることを可能とする。z/OSおよびz/VMは、世界中の多くの管轄に登録されている、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。
選択された実施形態においては、ストレージ・コントローラ200は、1以上のサーバ206a,206bを含む。ストレージ・コントローラ200は、ストレージ・コントローラ200をそれぞれホストシステム106およびストレージ・ドライブ204に接続するためのホストアダプタ208およびデバイスアダプタ210を含んでもよい。複数のサーバ206a,206bは、接続されたホストシステム206にデータが常に利用可能であることを保証するための冗長性を提供してもよい。これにより、一方のサーバ206aが故障した場合に、他方のサーバ206bが、故障したサーバ206aに対するI/O負荷をピックアップし、ホストシステム106とストレージ・ドライブ204との間でI/Oが継続できるようにする。この処理は、”フェイルオーバ”と参照され得る。
選択された実施形態においては、各サーバ206は、1以上のプロセッサ212およびメモリ214を含む。メモリ214は、揮発性メモリ(例えば、RAM)および不揮発性メモリ(例えば、ROM、EPROM、EEPROM、ハード・ディスク、フラッシュメモリなど)を含んでもよい。揮発性および不揮発性メモリは、ある実施形態においては、プロセッサ上で実行され、ストレージ・ドライブ204内のデータにアクセスするために使用されるソフトウェア・モジュールを格納してもよい。これらのソフトウェア・モジュールは、ストレージ・ドライブ204内の論理ボリュームに対する全ての読み書き要求を管理してもよい。
ある実施形態においては、メモリ214は、DRAMキャッシュ216などのキャッシュ216を含む。ホスト106(例えば、オープンシステムまたはメインフレームサーバ)が、キャッシュ216に常駐していないデータの読み出し動作を実行するときはいつも、読み出しを実行するサーバ206は、ストレージ・ドライブ204からデータをフェッチし、再び必要になった場合に備えて、それをキャッシュ216に保存することができる。ホストシステム206によってデータが再度要求されると、サーバ206は、ストレージ・ドライブ204からデータをフェッチする代わりに、キャッシュ216からデータをフェッチし、これによって時間およびリソースの両方を節約する。同様に、ホストシステム106が書き込みを行う場合、書き込み要求を受信したサーバ206は、変更されたデータをキャッシュ216に格納し、後の時点で、変更されたデータをストレージ・ドライブ204にデステージするようにしてもよい。
図2に示すものと同様のアーキテクチャを有するストレージ・システム110aの一例は、IBM(登録商標)DS8000(登録商標)エンタープライズ・ストレージ・システムである。DS8000(登録商標)は、連続動作をサポートするように設計されたディスクおよびソリッド・ステート・ストレージを提供する高性能で大容量のストレージ・コントローラである。それにもかかわらず、本明細書に開示される技術は、IBM(登録商標)DS8000(登録商標)エンタープライズ・ストレージ・システム110aに限定されるものではなく、システム110に関連する、製造業者、製品名またはコンポーネントまたはコンポーネント名には関係なく、任意の同等または類似のストレージ・システム110において実装されてもよい。本発明の1以上の実施形態から利益を得ることができる任意のストレージ・システムが、本発明の範囲内にあると考えられる。したがって、IBM(登録商標)DS8000(登録商標)は、限定ではなくただ例としてのみ提示される。
図3を参照すると、概して、ペリフェラル・コンポーネント・インターコネクト(PCI)ホスト・ブリッジは、データ処理システム内でプロセッサと入出力(I/O)サブシステムとの間の通信を可能とし得る。PCIホスト・ブリッジは、読み書きデータをプロセッサおよびI/Oサブシステム間で転送することを可能にするデータ・バッファリング能力を提供する。I/Oサブシステムは、PCIバスに接続されたPCIデバイス(ホストアダプタもしくはデバイスアダプタまたはこれらの両方)のグループであってもよい。PCIバス上のPCIデバイスが、ダイレクト・メモリ・アクセス(DMA)を介してシステムメモリに読み取りまたは書き込みコマンドを発すると、PCIホスト・ブリッジは、DMAのPCIアドレスを、システムメモリのシステムメモリ・アドレスに翻訳することができる。
PCIバス上の各PCIデバイスは、システムメモリ214内に常駐する、対応の翻訳制御エントリ(TCE)マッピング302と関連付けられ得る。TCEマッピング302は、PCIアドレスからシステムメモリ・アドレスへのTCE翻訳を実行するために利用され得る。DMAの読み取りまたは書き込み動作に応答して、対応のTCEマッピングが、TCE変換を提供するためにPCIホスト・ブリッジによって読み取られる。
IBM(登録商標)DS8000(登録商標)エンタープライズ・ストレージ・システムのようなストレージ・システムにおいては、ストレージ・システムによって処理される各I/Oは、ストレージ・システム110のキャッシュ・メモリ216を1回以上マッピングすることを必要とする。例えば、キャッシュ・メモリ216への読み取りヒットは、ホストアダプタ208がDMAを介してキャッシュ・メモリ216を読み取ることができるようにTCEマッピング302を作成することを必要とする。このTCEマッピング302は、DMAが完了した後にアンマップされる。読み取りミスの場合には、2つのTCEマッピング、ストレージ・ドライブ204から読み取りデータを検索するためのキャッシュ・メモリ216およびデバイスアダプタ210の間の1つのマッピング302、および、読み取りデータをホストシステム106に戻すためのキャッシュ・メモリ216およびホストアダプタ208の間の第2のマッピング302、が必要である。DMAが完了した後、TCEマッピング302は、アンマップされてもよい。
TCEマッピングおよびアンマッピングは、特に高いI/Oレートでは、時間的な点でコストがかかる可能性がある。TCEマッピングの必要性を回避する1つの方法は、キャッシュ・メモリ216のある部分を、永続的にマッピングされたままに維持する(すなわち、専用の永続的にマッピングされたメモリを使用する)ことである。I/Oが到着すると、要求されたデータが、キャッシュ・メモリ216からこの永続的にマッピングされたメモリ400にコピーされてもよい。次いで、TCEマッピング/アンマッピングを行う必要なく、この永続的にマッピングされたメモリ400からDMAが発生し得る。この技術は、TCEマッピング/アンマッピングを行うコスト(必要な時間)を除去するが、一のメモリ位置から他のメモリ位置へデータをコピーするためのコスト(例えば必要な時間)を導入する。このコストは、2つのメモリ位置の互いに相対的な場所に依存する可能性がある。場合によっては、コストは、TCEマッピング/アンマッピングを実行するよりも少ない可能性があるが、他の場合は、永続的にマッピングされたメモリ400にデータをコピーするより少ない可能性がある。
以上の観点から、IBM(登録商標)DS8000(登録商標)エンタープライズ・ストレージ・システムのようなストレージ・システムにおいて、I/O性能を最適化するために、メモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送間を動的に切り替えるシステムおよび方法が必要とされる。理想的には、関与するI/O動作に応じて、このようなシステムおよび方法は、最も効率的なデータ転送技術(つまり、メモリ・コピーおよびメモリ・マッピング)を利用することになる。
図3は、TCEマッピングなどのメモリ・マッピング・データ転送技術の一例を示す高レベルブロック図である。図示するように、キャッシュ216は、1以上のキャッシュ・セグメント300、例えば、4キロバイトのセグメント300を含んでもよい。ある実施形態においては、”トラック”のようなデータ要素が、例えば17個のキャッシュ・セグメント300のような複数のキャッシュ・セグメント300から構成されてもよい。したがって、トラックが4キロバイトの17個のキャッシュ・セグメント300から構成される場合、トラックは、68キロバイトのデータを包含し得る。多くの場合、トラックに関連するキャッシュ・セグメント300は、キャッシュ216内で連続していなくてもよい。すなわち、トラックのキャッシュ・セグメント300は、キャッシュ216内の異なる位置に散発的またはランダムに配置されてもよい。よって、キャッシュ216内のトラック(すなわち、キャッシュ・セグメント300の連続したシーケンス)を読み書きするために、トラックは、対応するキャッシュ・セグメント300にマッピングされる必要がある。ある実施形態においては、マッピング302(例えば、TCEマッピング302)は、トラックに関連付けられたキャッシュ・セグメント300をバス・アドレス・ウィンドウ304にマッピングし、ホストアダプタ208もしくはデバイスアダプタ210またはこれらの両方がDMAを介してキャッシュ216からまたはキャッシュ216へトラックを転送することができるようにしてもよい。ある実施形態においては、マッピング302は、図3に示すように、トラック内に配置された順序でキャッシュ・セグメント300を順序付けすることができる。
図4は、メモリ・コピー・データ転送技術の一例を示す高レベルブロック図である。図示されているように、メモリ・コピー・データ転送技術は、キャッシュ・セグメント300をバス・アドレス・ウィンドウ304にマッピングする代わりに、まず、データ要素(例えば、トラック)に関連付けられたキャッシュ・セグメント300を、永続的にマッピングされたメモリ400にコピーすることができる。永続的にマッピングされたメモリ400は、キャッシュ216と同一のメモリ214(例えば、メモリチップ)にまたは異なるメモリ214(例えば、メモリチップ)に常駐してもよい。したがって、キャッシュ216から、永続的にマッピングされたメモリ400へのキャッシュ・セグメント300のコピーは、いくらかのコストを有し、その大きさは、キャッシュ216および永続的にマッピングされたメモリ400の位置およびそれらの間でデータをコピーするのに必要な時間に応じて変化する。ある実施形態においては、コピーされたキャッシュ・セグメント300は、それらがトラック内に存在するのと同じやり方で、永続的にマッピングされたメモリ400内で順序付けられ、それによって、ホストアダプタ208もしくはデバイスアダプタ210またはこれらの両方によってDMAを介して転送することができる、キャッシュ・セグメント300の連続した順序のグループを提供する。
図5を参照すると、特定のI/O要求に対していずれのデータ転送技術を使用するかを決定するための方法500の一実施形態を示すフロー図が示されている。この方法500は、ストレージ・システム110によってI/O要求が受信される毎に実行されてもよい。図示のように、方法500は、最初にI/O要求を受信する(502)。方法500は、次に、図3に記載されたメモリ・マッピング・データ転送技術のようなメモリ・マッピング・データ転送技術を使用してI/O要求を実行することに関連するコストを計算する(504)。ある実施形態においては、過去の統計を分析して、特定のデータのトラックをマップまたはアンマップするのにどれくらいの長さとなるかを決定することによってコストが計算されてもよい(504)。
次に、方法500は、図4に関連して記述されたメモリ・コピー・データ転送技術のようなメモリ・コピー・データ転送技術を使用してI/O要求を実行するコストを計算する(506)。ある実施形態においては、メモリ・コピー・データ転送技術を使用することに関連するコストは、永続的にマッピングされたメモリ400にコピーするキャッシュ・セグメント300の数を決定することによって計算される。ある実施形態においては、メモリ・コピー・データ転送技術は、データのフルトラック未満のデータをコピーするために使用され得るが、メモリ・マッピング・データ転送技術は、キャッシュ・セグメント300のフルトラックをマッピングする必要がある。よって、メモリ・コピー・データ転送技術は、より小さい転送(例えば、データのフルトラック未満)で、メモリ・マッピング・データ転送技術よりも効率的である可能性がある。メモリ・コピー・データ転送技術に関連するコストは、また、キャッシュ216および永続的にマッピングされたメモリ400の相対的な位置に依存する可能性がある。キャッシュ216および永続的にマッピングされたメモリ400が例えば同一メモリチップ上に位置する場合、データをコピーする時間が短くなるので、コストがより低くなる。一方、キャッシュ216および永続的にマッピングされたメモリ400が異なるメモリチップ上に位置する場合には、データをコピーするのに要する時間が長くなるので、コストがより高くなる。
方法500は、次いで、メモリ・マッピング・データ転送技術のコストを、メモリ・コピー・データ転送技術のコストと比較する(508)。メモリ・マッピング・データ転送技術のコストがより大きい場合、方法500は、可能であれば、メモリ・コピー・データ転送技術を使用して、I/O要求に関連するデータをキャッシュ216へ/からホストアダプタ208もしくはデバイスアダプタ210またはこれらの両方に転送することができる。一方、メモリ・コピー・データ転送技術のコストがより大きい場合、方法500は、可能であれば、メモリ・マッピング・データ転送技術を使用して、I/O要求に関連するデータをキャッシュ216へ/からホストアダプタ208もしくはデバイスアダプタ210またはこれらの両方に転送することができる。図10に関連してより詳細に説明されるように、メモリ・マッピング・データ転送技術またはメモリ・コピー・データ転送技術のいずれかの使用は、”マッピング”ウィンドウまたは”コピー”ウィンドウがデータを転送するために利用可能であるかどうかに依存する可能性がある。図5のステップ510およびステップ512を実行する方法のより詳細な実施形態が、図10に関連して説明される。
図6を参照すると、ある実施形態においては、指定数の”マッピング”ウィンドウ600がメモリ・マッピング・データ転送技術を使用してデータを転送するために割り当てられ得て、指定数の”コピー”ウィンドウ602が、メモリ・コピー・データ転送技術を使用してデータを転送するために割り当てられ得る。各”マッピング”ウィンドウは、メモリ・マッピング・データ転送技術を使用してデータを転送するためのバス・アドレス・ウィンドウ304を提供することができ、各”コピー”ウィンドウは、メモリ・コピー・データ転送技術を使用してデータを転送するためのバス・アドレス・ウィンドウ304を提供することができる。先に述べたように、バス・アドレス・ウィンドウ304は、ホストアダプタ208もしくはデバイスアダプタ210またはこれらの両方に、アドレスバス上の一定量の連続したストレージ空間(例えば、トラック)を読み書きする手段を提供することができる。
例えば、最初、合計2000個のウィンドウがデータを転送するために割り当てられ、これらの2000個のウィンドウのうち、1000個は、”マッピング”ウィンドウであり、他の1000個は”コピー”ウィンドウであると仮定する。”マッピング”ウィンドウは、メモリ・マッピング・データ転送技術がより効率的であるとみなされるI/O要求をサービスするために使用されてもよく、”コピー・ウィンドウ”は、メモリ・コピー・データ転送技術がより効率的であるとみなされるI/O要求をサービスするために使用されてもよい。ある数の”コピー”ウィンドウおよび”マッピング”ウィンドウが最初にデータを転送するために割り当てられる場合、本発明によるシステムおよび方法は、入ってくるI/O要求に従って各データ転送技術に割り当てられるそれぞれのウィンドウの数を動的に調整することができる。例えば、メモリ・コピー・データ転送技術を使用するように識別された入力I/O要求をサービスするのに十分ではない”コピー”ウィンドウが利用可能である場合、図7に示すように、全ウィンドウのうちのより多くが”コピー”ウィンドウ602に割り当てられ、全ウィンドウのうちのより少なくが”マッピング”ウィンドウ600に割り当てられてもよい。このようにして、入ってくるI/O要求に対応して”コピー”ウィンドウの数および”マッピング”ウィンドウの数が動的に変更されてもよい。
図8を参照すると、ウィンドウを割り当て、かつ、ウィンドウの割り当てを動的に変更するための方法800の一実施形態が示されている。図示するように、方法800は、最初に、メモリ・コピー・データ転送技術に関連して使用される第1の数の”コピー”ウィンドウと、メモリ・マッピング・データ転送技術に関連して使用される第2の数の”マッピング”ウィンドウとを割り当てる(802)。ある実施形態においては、ウィンドウを割り当てることは、ある量のメモリ214を割り当ててウィンドウを実装することを含んでもよい。例えば、2ギガバイトのメモリ214が、メモリ・マッピング・データ転送技術に関連するマッピング302に割り当てられた1ギガバイトと、メモリ・コピー・データ転送技術に関連付けられた永続的にマッピングされたメモリ400に割り当てられた1ギガバイトとでウィンドウに割り当てられてもよい。
他の実施形態においては、割り当ては、全ウィンドウのある割合が”マッピング”ウィンドウであり、全ウィンドウの残りの割合が”コピー・ウィンドウ”であるとして総ウィンドウ数を含むことができる。ある実施形態においては、ウィンドウの総数またはウィンドウに割り当てられたメモリ214の総量が固定される。他の実施形態においては、ウィンドウの総数またはウィンドウに割り当てられたメモリ214の総量は、必要に応じて調整される。ウィンドウの最初の割り当ては、どれだけ多く必要かについての見積もりまたは推測に基づいてもよいし、または、過去に受信されたI/Oのタイプのような統計データに基づいてもよい。
第1の数の”コピー”ウィンドウおよび第2の数の”マッピング”ウィンドウが割り当てられると、方法800は、可能であれば、I/O要求を処理するために最も効率的なデータ転送技術を使用して、一定期間にわたりI/O要求を処理する(804)。すなわち、メモリ・マッピング・データ転送技術がI/O要求を処理するより効率的であるとみなされる場合、方法800は、理想的には、メモリ・マッピング・データ転送技術および関連する”マッピング”ウィンドウを利用してI/O要求を処理する。同様に、メモリ・コピー・データ転送技術がI/O要求を処理するのがより効率的であるとみなされる場合、方法800は、理想的には、メモリ・コピー・データ転送技術および関連する"コピー・ウィンドウ"を利用してI/O要求を処理する。
I/O要求を処理する間、方法800は、メモリ・コピー・データ転送技術が理想的には利用されるが、関連する"コピー・ウィンドウ"の不足のために利用できなかった回数を追跡する(806)。同様に、方法800は、メモリ・マッピング・データ転送技術が理想的に利用されるが、関連付けられた”マッピング”ウィンドウの不足のめに利用できなかった回数を追跡する(808)。各タイプのウィンドウが利用できなかった回数に基づいて、方法800は、”コピー”ウィンドウおよび”マッピング”ウィンドウの割り当てを動的に変更する(例えば、”マッピング”ウィンドウの数に対する相対的な”コピー”ウィンドウの数を変更する、または”コピー”ウィンドウもしくは”マッピング”ウィンドウまたはこれらの両方の数を増加または減少する。)。これは、あるタイプのウィンドウが必要であるが利用できない回数を最小化することを目標に実行することができる。
図9を参照すると、ウィンドウを割り当て、かつ、ウィンドウの割り当てを動的に変更するための方法900の別の実施形態が示される。図示されるように、方法900は、最初、メモリ・コピー・データ転送技術に関連して使用される第1の数の”コピー”ウィンドウと、メモリ・マッピング・データ転送技術と関連して使用される第2の数の”マッピング”ウィンドウとを割り当てる。第1の数の”コピー”ウィンドウおよび第2の数の”マッピング”ウィンドウが割り当てられると、方法900は、可能であれば、I/O要求を処理するために最も効率的なデータ転送技術を使用して、ある期間にわたりI/O要求を処理する(904)。
I/O要求が処理される間、方法900は、あるタイプのデータであるI/O要求の割合を追跡する(906)。例えば、方法900は、I/O要求のうちのどれだけの割合が順次I/O要求、大きなランダムI/O要求および小さなランダムI/O要求であるかを追跡することができる(906)。順次I/O要求および大きなランダムI/O要求は、典型的には、フルトラック・アクセスであり、よって、メモリ・マッピング・データ転送技術を使用してより効率的に処理することができる。小さなランダムI/O要求は、対照的に、フルトラック未満のアクセスを含み、よって、メモリ・コピー・データ転送技術を使用してより効率的に処理することができる。上記で説明したように、メモリ・コピー・データ転送技術は、フルトラック未満のデータをコピーするために使用され得るが、メモリ・マッピング・データ転送技術は、キャッシュ・セグメント300のフルトラックをマッピングする必要がある。
各タイプであるI/O要求の割合に従って、方法900は、入ってくるI/O要求の組成およびタイプに適合するように、”コピー”ウィンドウの数および”マッピング”ウィンドウの数を動的に調整することができる。これにより、各入ってくるI/O要求について、可能な限り効率的なデータ転送技術が選択され、使用され得る。
図10は、I/O要求を処理するためにメモリ・マッピング・データ転送またはメモリ・コピー・データ転送技術を利用するかどうかを決定する方法1000の一実施形態を示すフロー図である。ある実施形態においては、この方法1000は、図5に示すステップ510,512に代替して使用される。図示するように、方法1000は、最初、受信されたI/O要求に対して、メモリ・コピー・データ転送技術を使用する方が、メモリ・マッピング・データ転送技術を使用するよりも低コストかどうかを決定する(1002)。もしそうであれば、方法1000は、”コピー”ウィンドウの利用可能な数が閾値(例えば、100)未満であり、かつ、”マッピング”ウィンドウの利用可能な数が閾値を超える(例えば、100)であり、かつ、メモリ・コピー・データ転送技術を使用することと、メモリ・マッピング・データ転送技術を使用することとの間のコスト差が、閾値(例えば、5マイクロ秒)以下であるかを判定する。これらの条件が満たされた場合、方法1000は、メモリ・マッピング・データ転送技術を使用して、I/O要求に関連するデータを転送する(1004)。本質的に、このステップ1004は、”コピー”ウィンドウが不足し、”マッピング”ウィンドウは不足しておらず、データ転送技術間のコスト差が大きすぎではない場合、メモリ・マッピング・データ転送技術を使用してI/O要求に関連するデータを転送する。そうでなければ、方法1000は、次のステップ1006へ進められる。
ステップ1006において、”コピー”ウィンドウが利用可能ではなく、少なくとも1つの”マッピング”ウィンドウが利用可能である場合、方法1000は、メモリ・コピー・データ転送技術を使用することと、メモリ・マッピング・データ転送技術を使用することとのコスト差にかかわらず、メモリ・マッピング・データ転送技術を使用してI/O要求に関連するデータを転送する。本質的に、このステップ1006は、メモリ・コピー・データ転送技術を使用することがより効率的であろう場合であっても、それが利用可能な唯一のオプションである場合は、メモリ・マッピング・データ転送技術を使用して、I/O要求に関連するデータを転送する。そうでなければ、方法1000は、次のステップ1008へ進められる。
ステップ1008において、”コピー”ウィンドウが利用可能ではなく”マッピング”ウィンドウ”が利用可能ではない場合は、方法1000は、次の利用可能なウィンドウ(”コピー”ウィンドウまたは”マッピング”ウィンドウ)を待ち(1008)、対応するデータ転送技術と共にこのウィンドウを使用して、I/O要求に関連するデータを転送する。これは、メモリ・コピー・データ転送技術を使用することと、メモリ・マッピング・データ転送技術を使用することとの間のコスト差に関係なく実行される。そうでなければ、方法1000は、次のステップ1010に進む。ステップ1010においては、方法1000は、”コピー”ウィンドウが利用可能であり、メモリ・コピー・データ転送技術を使用することが、メモリ・マッピング・データ転送技術を使用することもコストがかからないので、メモリ・コピー・データ転送技術を使用してI/O要求に関連するデータを転送する。
ステップ1002において、メモリ・コピー・データ転送技術が、メモリ・マッピング・データ転送技術よりも低コストではない(メモリ・マッピング・データ転送技術がメモリ・コピー・データ転送技術よりも低コストであることを意味する)場合は、方法1000は、ステップ1012へ進められる。方法1000は、ステップ1012において、”マッピング”ウィンドウの利用可能な数が閾値(例えば、100)を下回り、かつ、”コピー”ウィンドウの利用可能な数が閾値(例えば、100)を超え、かつ、メモリ・マッピング・データ転送技術を使用することと、メモリ・コピー・データ転送技術を使用することとの間のコスト差が、閾値(例えば、5マイクロ秒)未満であるかどうかを判定する。これらの条件が満たされる場合、方法1000は、メモリ・コピー・データ転送技術を使用してI/O要求に関連するデータを転送する(1012)。本質的に、このステップ1012は、”マッピング”ウィンドウが不足しており、”コピー”ウィンドウが不足しておらず、データ転送技術間のコスト差が大きすぎない場合は、メモリ・コピー・データ転送技術を使用して、I/O要求に関連するデータを転送する。そうでなければ、方法1000は、次のステップ1014に進む。
ステップ1014において、”マッピング”ウィンドウが利用可能ではないが、少なくとも1つの”コピー”ウィンドウが利用可能である場合、方法1000は、メモリ・マッピング・データ転送技術を使用することと、メモリ・コピー・データ転送技術を使用することとの間のコスト差に関係なく、メモリ・コピー・データ転送技術を使用してI/O要求に関連するデータを転送する(1014)。本質的に、このステップ1014は、メモリ・マッピング・データ転送技術を使用することがより効率的であろう場合であっても、利用可能な唯一のオプションであれば、メモリ・コピー・データ転送技術を使用してI/O要求に関連付けられたデータを転送する。そうでなければ、方法1000は、次のステップ1016に進む。
ステップ1016において、”マッピング”ウィンドウまたは”コピー”ウィンドウが利用可能でない場合、方法1000は、次の利用可能なウィンドウ(”コピー”ウィンドウまたは”マッピング”ウィンドウ)を待ち(1016)、対応するデータ転送技術と共にこのウィンドウを使用してデータを転送する。これは、メモリ・マッピング・データ転送技術とメモリ・コピー・データ転送技術との間のコスト差に関係なく実行される。そうでなければ、方法1000は、次のステップ1018に進む。ステップ1018においては、方法1000は、”マッピング”ウィンドウが利用可能であり、メモリ・マッピング・データ転送技術を使用することの方がメモリ・コピー・データ転送技術を使用するよりもコストがかからないので、メモリ・マッピング・データ転送・データ転送技術を使用してI/O要求に関連するデータを転送する。
図面におけるフローチャート図もしくはブロック図またはこれらの両方は、本発明の種々の実施形態に従ったシステム、方法およびコンピュータ使用可能媒体の可能な実装のアーキテクチャ、機能性および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための1以上の実行可能な命令を含む、モジュール、セグメントまたはコードの部分を表す可能性がある。いくつかの代替の実装では、ブロックにおいて言及された機能は、図面に示された順序から外れて生じる可能性があることに留意されたい。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されてもよく、あるいは、複数のブロックは、関与する機能性に応じて逆の順序で実行されてもよい。ブロック図もしくはフローチャート図またはその両方の各ブロックおよびブロック図もしくはフローチャート図またはその両方の複数のブロックの組み合わせが、特定の機能または作用、または、特別な目的のハードウェアおよびコンピュータ命令の組み合わせを実行する特定目的ハードウェアベースのシステムによって実装されてもよいことに留意されたい。

Claims (15)

  1. I/O性能を向上させるためにメモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送技術間を動的に切り替える方法であって、コンピュータが、
    I/O要求を受信するステップと、
    メモリ・コピー・データ転送技術を使用して前記I/O要求を実行するコストを計算するステップであって、前記メモリ・コピー・データ転送技術は、前記I/O要求に関連付けられたキャッシュ・セグメントを、キャッシュ・メモリから、永続的にマッピングされたメモリにコピーし、前記永続的にマッピングされたメモリは、バス・アドレス・ウィンドウに永続的にマッピングされる、計算するステップと、
    メモリ・マッピング・データ転送技術を用いて前記I/O要求を実行するコストを計算するステップであって、前記メモリ・マッピング・データ転送技術は、前記I/O要求に関連付けられたキャッシュ・セグメントを、前記キャッシュ・メモリから、前記バス・アドレス・ウィンドウに一時的にマッピングする、計算するステップと、
    前記メモリ・コピー・データ転送技術を用いることの方が、前記メモリ・マッピング・データ転送技術を用いることよりもコストが低い場合に、前記メモリ・コピー・データ転送技術を使用して、前記I/O要求に関連付けられたキャッシュ・セグメントを転送するステップと、
    前記メモリ・マッピング・データ転送技術を用いることの方が、前記メモリ・コピー・データ転送技術を用いることよりもコストが低い場合に、前記メモリ・マッピング・データ転送技術を用いて前記I/O要求に関連付けられたキャッシュ・セグメントを転送するステップと
    を実行する、方法。
  2. 前記バス・アドレス・ウィンドウは、ペリフェラル・コンポーネント・インターコネクト(PCI)バス・アドレス・ウィンドウである、請求項1に記載の方法。
  3. 前記メモリ・コピー・データ転送技術を使用してI/O要求を実行するコストを計算するステップは、前記永続的にマッピングされたメモリにコピーするキャッシュ・セグメントの数を計算するステップを含む、請求項1または2に記載の方法。
  4. 前記メモリ・コピー・データ転送技術を使用してI/O要求を実行するコストを計算するステップは、前記キャッシュ・メモリおよび前記永続的にマッピングされたメモリ間のコピー・レイテンシを決定するステップを含む、請求項1~3のいずれか1項に記載の方法。
  5. 前記キャッシュ・メモリおよび前記永続的にマッピングされたメモリ間の前記コピー・レイテンシを決定するステップは、前記キャッシュ・メモリおよび前記永続的にマッピングされたメモリの位置を決定するステップを含む、請求項4に記載の方法。
  6. 前記メモリ・マッピング・データ転送技術を用いてI/O要求を実行するコストを計算するステップは、前記キャッシュ・メモリから前記バス・アドレス・ウィンドウへ前記I/O要求に関連付けられたキャッシュ・セグメントのマップおよびアンマップの少なくとも1つを行うのに必要な時間量を見積もるステップを含む、請求項1~5のいずれか1項に記載の方法。
  7. 前記キャッシュ・セグメントが前記キャッシュ・メモリにおいてすべて連続しているわけではない、請求項1~6のいずれか1項に記載の方法。
  8. I/O性能を向上させるためにメモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送技術間を動的に切り替えるためのコンピュータ・プログラムであって、前記コンピュータに請求項1~7のいずれか一項に記載の方法を実行させる、コンピュータ・プログラム。
  9. 請求項1~7のいずれか一項に記載の方法を前記コンピュータに実行させるコンピュータ・プログラムを記録したコンピュータ読み取り可能な記録媒体。
  10. I/O性能を向上させるためにメモリ・コピー・データ転送技術およびメモリ・マッピング・データ転送技術間を動的に切り替えるシステムであって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに接続され、前記少なくとも1つのプロセッサ上での実行のための命令を格納するメモリと
    を含み、前記命令は、前記少なくとも1つのプロセッサに、
    I/O要求を受信することと、
    メモリ・コピー・データ転送技術を使用して前記I/O要求を実行するコストを計算することであって、前記メモリ・コピー・データ転送技術は、前記I/O要求に関連付けられたキャッシュ・セグメントを、キャッシュ・メモリから、永続的にマッピングされたメモリにコピーし、前記永続的にマッピングされたメモリは、バス・アドレス・ウィンドウに永続的にマッピングされる、前記コストを計算することと、
    メモリ・マッピング・データ転送技術を用いてI/O要求を実行するコストを計算することであって、前記メモリ・マッピング・データ転送技術は、前記I/O要求に関連付けられたキャッシュ・セグメントを、前記キャッシュ・メモリから、前記バス・アドレス・ウィンドウに一時的にマッピングする、前記コストを計算することと、
    前記メモリ・コピー・データ転送技術を用いることの方が、前記メモリ・マッピング・データ転送技術を用いることよりもコストが低い場合に、前記メモリ・コピー・データ転送技術を使用して、前記I/O要求に関連付けられたキャッシュ・セグメントを転送することと、
    前記メモリ・マッピング・データ転送技術を用いることの方が、前記メモリ・コピー・データ転送技術を用いることよりもコストが低い場合に、前記メモリ・マッピング・データ転送技術を用いて前記I/O要求に関連付けられたキャッシュ・セグメントを転送することと
    を実行させる、システム。
  11. 前記バス・アドレス・ウィンドウは、ペリフェラル・コンポーネント・インターコネクト(PCI)バス・アドレス・ウィンドウである、請求項10に記載のシステム。
  12. 前記メモリ・コピー・データ転送技術を使用してI/O要求を実行するコストを計算することは、前記永続的にマッピングされたメモリにコピーするキャッシュ・セグメントの数を計算することを含む、請求項10または11に記載のシステム。
  13. 前記メモリ・コピー・データ転送技術を使用してI/O要求を実行するコストを計算することは、前記キャッシュ・メモリおよび前記永続的にマッピングされたメモリ間のコピー・レイテンシを決定することを含む、請求項10~12のいずれか1項に記載のシステム。
  14. 前記キャッシュ・メモリおよび前記永続的にマッピングされたメモリ間の前記コピー・レイテンシを決定することは、前記キャッシュ・メモリおよび前記永続的にマッピングされたメモリの位置を決定することを含む、請求項13に記載のシステム。
  15. 前記メモリ・マッピング・データ転送技術を用いてI/O要求を実行するコストを計算することは、前記キャッシュ・メモリから前記バス・アドレス・ウィンドウへ前記I/O要求に関連付けられたキャッシュ・セグメントのマップおよびアンマップの少なくとも1つを行うのに必要な時間量を見積もることを含む、請求項10~14のいずれか1項に記載のシステム。
JP2022515916A 2019-09-11 2020-09-03 I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え Active JP7495191B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/567,747 2019-09-11
US16/567,747 US11016692B2 (en) 2019-09-11 2019-09-11 Dynamically switching between memory copy and memory mapping to optimize I/O performance
PCT/IB2020/058197 WO2021048709A1 (en) 2019-09-11 2020-09-03 Dynamically switching between memory copy and memory mapping to optimize 1/o performance

Publications (2)

Publication Number Publication Date
JP2022547684A JP2022547684A (ja) 2022-11-15
JP7495191B2 true JP7495191B2 (ja) 2024-06-04

Family

ID=74849768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022515916A Active JP7495191B2 (ja) 2019-09-11 2020-09-03 I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え

Country Status (6)

Country Link
US (1) US11016692B2 (ja)
JP (1) JP7495191B2 (ja)
CN (1) CN114127699B (ja)
DE (1) DE112020003721T5 (ja)
GB (1) GB2602404B (ja)
WO (1) WO2021048709A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11860773B2 (en) * 2022-02-03 2024-01-02 Micron Technology, Inc. Memory access statistics monitoring

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007079715A (ja) 2005-09-12 2007-03-29 Fuji Xerox Co Ltd データ転送方法、プログラムおよび装置
JP2013539098A (ja) 2010-08-04 2013-10-17 インターナショナル・ビジネス・マシーンズ・コーポレーション I/oメッセージの影響を受ける1つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6931457B2 (en) * 2002-07-24 2005-08-16 Intel Corporation Method, system, and program for controlling multiple storage devices
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7685330B2 (en) * 2006-03-09 2010-03-23 International Business Machines Corporation Method for efficient determination of memory copy versus registration in direct access environments
KR20090102789A (ko) 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
US9432298B1 (en) 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US8719523B2 (en) * 2011-10-03 2014-05-06 International Business Machines Corporation Maintaining multiple target copies
US8799588B2 (en) * 2012-02-08 2014-08-05 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US8943251B2 (en) * 2012-05-14 2015-01-27 Infineon Technologies Austria Ag System and method for processing device with differentiated execution mode
US10268583B2 (en) 2012-10-22 2019-04-23 Intel Corporation High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier
US8966132B2 (en) * 2012-11-16 2015-02-24 International Business Machines Corporation Determining a mapping mode for a DMA data transfer
US9430163B1 (en) * 2015-12-15 2016-08-30 International Business Machines Corporation Implementing synchronization for remote disk mirroring
US10318417B2 (en) * 2017-03-31 2019-06-11 Intel Corporation Persistent caching of memory-side cache content
CN109522102B (zh) * 2018-09-11 2022-12-02 华中科技大学 一种基于i/o调度的多任务外存模式图处理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007079715A (ja) 2005-09-12 2007-03-29 Fuji Xerox Co Ltd データ転送方法、プログラムおよび装置
JP2013539098A (ja) 2010-08-04 2013-10-17 インターナショナル・ビジネス・マシーンズ・コーポレーション I/oメッセージの影響を受ける1つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システム

Also Published As

Publication number Publication date
JP2022547684A (ja) 2022-11-15
GB2602404A (en) 2022-06-29
CN114127699B (zh) 2024-06-25
US11016692B2 (en) 2021-05-25
CN114127699A (zh) 2022-03-01
GB202203249D0 (en) 2022-04-20
DE112020003721T5 (de) 2022-05-25
US20210072918A1 (en) 2021-03-11
GB2602404B (en) 2022-11-09
WO2021048709A1 (en) 2021-03-18

Similar Documents

Publication Publication Date Title
US10698818B2 (en) Storage controller caching using symmetric storage class memory devices
US9304901B2 (en) System and method for handling I/O write requests
US8782335B2 (en) Latency reduction associated with a response to a request in a storage system
US10459652B2 (en) Evacuating blades in a storage array that includes a plurality of blades
JP7116381B2 (ja) クラウド・ベースのランクを使用するデータの動的再配置
US10721304B2 (en) Storage system using cloud storage as a rank
JP2019516149A (ja) 複数のストレージ装置を含むストレージアレイ内のデータの移行
US9542284B2 (en) Buffered automated flash controller connected directly to processor memory bus
US8799573B2 (en) Storage system and its logical unit management method
US10310740B2 (en) Aligning memory access operations to a geometry of a storage device
US8713257B2 (en) Method and system for shared high speed cache in SAS switches
JP7495191B2 (ja) I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え
US11010080B2 (en) Layout based memory writes
US10942857B1 (en) Dynamically adjusting a number of memory copy and memory mapping windows to optimize I/O performance
US11157199B1 (en) Multi-mode address mapping management
JP2023523144A (ja) フルストライド・デステージのためのプリエンプティブ・ステージング
US11163475B2 (en) Block input/output (I/O) accesses in the presence of a storage class memory
WO2016209957A1 (en) Aligning memory access operations to a geometry of a storage device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220315

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220518

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20220330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240419

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20240509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240521

R150 Certificate of patent or registration of utility model

Ref document number: 7495191

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150