JP6202756B2 - 支援型コヒーレント共有メモリ - Google Patents

支援型コヒーレント共有メモリ Download PDF

Info

Publication number
JP6202756B2
JP6202756B2 JP2014229936A JP2014229936A JP6202756B2 JP 6202756 B2 JP6202756 B2 JP 6202756B2 JP 2014229936 A JP2014229936 A JP 2014229936A JP 2014229936 A JP2014229936 A JP 2014229936A JP 6202756 B2 JP6202756 B2 JP 6202756B2
Authority
JP
Japan
Prior art keywords
memory
memory controller
fabric
node
global
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
JP2014229936A
Other languages
English (en)
Other versions
JP2015127949A (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2015127949A publication Critical patent/JP2015127949A/ja
Application granted granted Critical
Publication of JP6202756B2 publication Critical patent/JP6202756B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2087Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • G06F11/2092Techniques of failing over between control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本開示は、概して、マルチノードシステムに関する。より具体的には、本開示は、マルチノードシステム内の共有メモリに関する。
マルチノードシステムは、複数のノードを含み得る。その種のシステムは、これらに限定されないが、ネットワーク、ラックサーバシステム、ブレードサーバ、及びその類のものを含む。場合によって、各ノードは、ノードの中のプロセッシング又は入出力(I/O)デバイスの間のハードウェアキャッシュコヒーレンシを有する1又は複数のラックの実質的な部分をスパンする大規模な対称型マルチプロセッシング(SMP)ノードであり得る。キャッシュコヒーレンシの結果として、大規模なSMPシステムは、任意の計算デバイスによるメモリロードストアセマンティクスを通じて直接的にアクセス可能なアプリケーションデータを格納するために、大きなメモリ設置面積を有するが、複数のコンピューティングデバイスの間のきめの細かい負荷バランシングの問題を解決するために、十分な計算リソースを利用できる。そのシステムは、複数のノードが粗粒子レベルで複数のタスクを調整できる、複数のより小さいSMPシステムから構成される疎結合(LC)システムであり得る。
以下の詳細な説明は、開示された主題の多数の目的及び特徴の特定の例を含む添付の図面を参照することによって、よりよく理解されてよい。
複数のマルチノードシステムモデルのブロック図である。 部分的にコヒーレントなシステムの例である。 グローバルメモリマップの例である。 複数のクラスタにわたるコヒーレント共有メモリのためのプロセスフロー図である。 プールされた複数のメモリリソースにアクセスし得るノード500のブロック図である。
本開示及び図面を通して、同様のコンポーネント及び特徴を言及するために、同一の数字が使用される。100番台の数字は、最初に図1に表れる特徴を参照し、200番台の数字は、最初に図2に表れる特徴を参照し、他も同様である。
SMPシステムは、単一のフォールトドメインを含み、システムの任意のコンポーネント又はソフトウェアのピースにおけるフォールトがシステム全体を機能しなくさせる。例えば、SMPノードが機能しない場合、SMPノードを含むシステム全体が機能しない。逆に、LCシステムは、独立した複数のフォールトドメインを通じて、任意のコンポーネント又はソフトウェアのピースの故障を封じ込めるものである。したがって、LCシステムの中の影響を受けるサーバ又はコンポーネントはクラッシュし得るが、他のサーバ又はコンポーネントは、故障が発生していないかのように動作し続ける。しかし、LCシステムの中のメモリは、ロード/ストアセマンティクスを通じて共有されない。むしろ、複数のメッセージは、LCシステムの中でのメモリ共有を達成するために、I/Oドライバを通じて送信される。メモリ共有を可能にするI/Oドライバの使用は、複数のI/Oドライバに関連するより高いレイテンシのために、複数のSMPシステムに比べて、LCシステムのパフォーマンスを低下させ得る。
ここで説明される複数の実施形態は、複数のクラスタにわたるコヒーレント共有メモリに関する。複数の実施形態において、ファブリックメモリコントローラは、1又は複数のノードに結合される。ファブリックメモリコントローラは、ロードストアセマンティクスを用いて、各ノード内の複数のメモリモジュールへのアクセスを管理する。各ノード上のメモリモジュールは、各ノードの共有メモリ領域内に含まれる。複数の共有メモリ領域は、ノードが機能しないときでさえ、アクセス可能である。さらに、ファブリックメモリコントローラは、グローバルメモリを管理し、複数のノードの各共有メモリ領域は、ファブリックメモリコントローラによってグローバルメモリにマッピングされてよい。結果として、キャッシュ可能なグローバルメモリが提供される。キャッシュ可能なグローバルメモリは、各ノード又はクラスタの独立した複数のフォールトドメインを維持しながら、複数のノード及び複数のクラスタをわたってデータ整合性を供給できる。さらに、各クラスタがその別個のフォールトドメインを維持しながら、グローバルメモリは、ローカルメモリのようなロードストアセマンティクスを用いて、アクセス可能かつキャッシュ可能である。さらに、共有メモリは、信頼性、可用性、及び保守性(RAS)機能性を提供でき、全てのRAID(Redundant Array of Independent Disks)スキームを含む。本技術は、高密度ラックスケールアーキテクチャ(RSA)とともに使用されてもよい。
複数の実施形態において、各ノードは、1又は複数のプロセッシングデバイス(例えば、複数のCPU)、キャッシュ可能又はキャッシュ不可能な及び揮発性又は不揮発性のメモリ、並びに1つのBIOSイメージ又は1つのオペレーティングシステム/仮想マシンモニタイメージを実行する1又は複数のI/Oデバイスを含む。このように、各ノードは、封じ込められるフォールトドメインである。ノードの中の任意のハードウェアコンポーネントにおける又はノード上で実行するソフトウェアの中における任意の故障は、最悪のケースで、そのノードを停止させるだけである。
下記の説明及び請求項において、用語「結合」及び「接続」は、それらの派生語とともに使用され得る。これらの用語は、互いに対して同義語であることを意図するものではないことが理解されるべきである。むしろ、特定の複数の実施形態において、「接続」は、2又はより多い要素が互いに直接的な物理的又は電気的なコンタクト状態にあることを示すために使用されてよい。「結合」は、2又はより多い要素が直接的な物理的又は電気的なコンタクト状態にあることを意味してよい。しかし、「結合」は、2又はより多い要素が互いに直接的なコンタクト状態にないが、依然として互いに協働又は作用することを意味してもよい。しかし、用語「疎結合」は、独立した複数のフォールトドメインを有するシステムに言及する。結果として、用語「結合」の使用は、疎結合システムとして知られているものを変更又は修正しない。
いくつかの実施形態は、ハードウェア、ファームウェア、及びソフトウェアのうちの1つ又は組み合わせで実装されてよい。いくつかの実施形態は、ここで説明される複数のオペレーションを実行するコンピューティングプラットフォームによって読み取られて実行され得る、機械可読媒体上に格納された複数の命令として実装されてもよい。機械可読媒体は、例えばコンピュータのような機械によって可読な形で情報を格納又は送信するための任意のメカニズムを含んでよい。例えば、機械可読媒体は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光学ストレージ媒体、複数のフラッシュメモリデバイスなどを含んでよい。
実施形態は、実装又は例である。本明細書における「実施形態」、「一実施形態」、「いくつかの実施形態」、「様々な実施形態」、又は「他の実施形態」という言及は、その複数の実施形態に関連して説明された特定の特徴、構造、又は特性が、本発明の全ての実施形態ではなく、少なくともいくつかの実地形態に含まれることを意味する。「実施形態」、「一実施形態」、又は「いくつかの実施形態」の様々な出現は、必ずしも全て同一の実施形態に関することでない。ある実施形態の要素又は態様は、他の実施形態の要素又は態様に組み合わされることができる。
ここで説明及び示される全てのコンポーネント、特徴、構造、特性などは、特定の実施形態又は複数の実施形態に含まれる必要があるとは限らない。例えば、コンポーネント、特徴、構造、又は特性が含まれ「てよい」、「るかもしれない」、「ることができる」、又は「得る」と本明細書が述べる場合、その特定のコンポーネント、特徴、構造、又は特性は、含まれることが必要とされない。本明細書又は請求項が「一の」又は「ある」要素と言及する場合、それは、その要素が1つだけあることを意味しない。本明細書又は請求項が、「追加の」要素と言及する場合、それは、その追加の要素が1より多くあることを除外しない。
いくつかの実施形態は特定の実装を参照して説明されるが、いくつかの実施形態に従って、他の実装が可能であるということに注意すべきである。さらに、図面に示され及び/又はここで説明される回路要素又は他の特徴の配置及び/又は順序は、示された及び説明された特定の方法で配置される必要はない。いくつかの実施形態に従って、多くの他の配置が可能である。
図に示される各システムにおいて、表される複数の要素が異なる及び/又は同様であり得ることを示唆するために、場合によって、複数の要素が同一の参照番号又は異なる参照番号をそれぞれ有してよい。しかし、要素は、異なる実装を有し、ここで示され又は説明されるシステムのいくつか又は全てと連携するために十分に柔軟性があってよい。図に示される様々な要素は、同一でも又は異なっていてもよい。どの1つが第1の要素と称され、どれが第2の要素と呼ばれるかは任意である。
図1は、複数のマルチノードシステムモデルのブロック図100である。複数のマルチノードシステムモデルは、部分的にコヒーレントなシステム102、SMPシステム104、及びLCシステム106を含む。数個のサーバが各システムの中に示されるが、各システムは、1つのサーバと見なされてよい。SMPシステム104において、各ノード108は、ノードコントローラ(NC)110に接続される。NC110は、各ノード108がスケールインターコネクト112に接続することを可能にする。スケールインターコネクト112は、SMPシステム104の各NC110の間の通信を可能にするために使用されてよい。したがって、SMPシステム104は、共有メモリを有するノードコントローラ型である。SMPシステムは、完全にコヒーレントであり、高速分散ロックマネージャを含む。しかし、SMPシステム104は、単一のフォールトドメインである。言い換えれば、任意のノード108又はノードコントローラ110の中で発生する単一のフォールトは、システム全体が機能しなくなる、クラッシュする、又は利用不可能になる原因となる。
LCシステム106において、各ノード114は、ネットワークインターフェースカード(NIC)116に接続される。場合によって、NIC116は、インフィニバンドホストバスアダプタ(IBHBA)のようなリモートダイレクトメモリアクセス(RDMA)可能なイーサネット(登録商標)デバイス又は他のI/Oコントローラである。NIC116は、各ノード114がRDMAインターコネクト118に接続することを可能にする。RDMAインターコネクト118は、LCシステム106にわたってメモリ共有を可能にするために、各NIC116がメッセージを送信することを可能にする。したがって、LCシステム106は、独立した複数のフォールトドメインを含む。しかし、メモリは、LCシステム106において共有されない。さらに、LCシステム106にわたって負荷のバランスをとることは難しく、LCシステム106は、分散ロックマネージャの拡張性を有する。
部分的にコヒーレントなシステム102は、複数の強化型ノードコントローラ(eNC)122のうちの1つにそれぞれ接続された複数のノード120を含む。各eNC122は、そのそれぞれのノード120をスケールインターコネクト124に接続する。部分的にコヒーレントなシステム102は、独立した複数のフォールトドメインで、マルチノードシステムにわたってメモリを共有する。部分的にコヒーレントなシステム102は、以下に説明されるようなソフトウェア支援の使用を通じて、部分的にコヒーレントである。さらに、部分的にコヒーレントなシステム102は、高速分散ロックマネージャを含む。
図2は、部分的にコヒーレントなシステム102の例である。部分的にコヒーレントなシステム102は、ノード202及びノード204を含む。ノード202は、ファブリックメモリコントローラ(FMC)206を含み、ノード204は、FMC208を含む。さらに、ノード202は、ノードメモリ214及びローカルメモリ218を含む。ノード204は、ノードメモリ216及びローカルメモリ220を含む。各FMC206及び208は、図2に示されるようなそれらのそれぞれのノードを有する別個のコンポーネントであってよい。いくつかの実施形態において、FMC206及び208は、マルチノードシステムの各ノード内で(複数の)CPUに統合されてよい。したがって、いくつかの実施形態において、FMC206は、ノード202のCPU210A及びCPU210Bに統合されてよく、FMC208は、ノード204のCPU212A及びCPU212Bに統合されてよい。CPU210A、210B、212A、及び212Bは、SMI3と同様の(システムメモリマップのための)メモリセマンティクスの組み合わせであるPLM(プラッツマウス)プロトコル、及びブロックタイプメモリアクセスのための(PCIeのような)I/Oプロトコルを用いて、グローバルメモリにそれぞれアクセスする。グローバルメモリは、ノードメモリ214及びノードメモリ216を含む。複数の実施形態において、グローバルメモリは、共有メモリ又はブロックメモリとしてアクセスされてよい。グローバルメモリは、複数の領域に分割されてよい。さらに、FMC206及びFMC208は、フォールト分離境界207A及びフォールト分離境界207Bをそれぞれ実装し、グローバルメモリは、そのローカルノードがダウンしたときでさえ、他の複数のノードによってアクセスされることができる。
プラッツマウス(PLM)リンクは、各CPUをFMCに接続するために使用されてよい。したがって、ノード202は、CPU210A及びCPU210BをFMC206に接続するために、複数のPLMリンク222のペアを含む。同様に、ノード204は、CPU212A及びCPU212BをFMC208に接続するために、複数のPLMリンク224のペアを含む。PLMリンク226A及びPLMリンク226Bは、ノード202及びノード204をスイッチ228にそれぞれ接続するために使用されてもよい。各PLMリンクは、SMI3のような随意的なディレクトリ情報を有するメモリセマンティクス、及びPeripheral Component Interconnect Express(PCIe)プロトコルのようなロードストア機能性を有するI/Oプロトコルの両方をサポートできる。複数の実施形態において、複数のピンの共通セットを用いてメモリセマンティクス及びI/Oプロトコルをサポートできる任意のリンクが、ノードをSMCに接続するために使用されることができる。さらに、複数のピンの共通セットを用いてメモリセマンティクス及びI/Oプロトコルをサポートできる任意のリンクが、CPUをFMCに接続するために使用されることができる。さらに、複数のPLMリンクは、PCIeアーキテクチャの物理レイヤを用いて実装されてよい。
グローバルメモリは、スイッチ228を介してアクセスされてよい。スイッチ228は、マルチノードシステム内の複数のノードの複数のFMCを接続するために使用されてよい。場合によって、スイッチ228は、ストームレイク(STL)スイッチ、スイッチとして使用される他のFMC、又はダイレクトアタッチメカニズムであってよい。スイッチは、1又は複数のノードの間のグローバルデータの要求を送るために使用されてよい。いずれにしても、スイッチ228は、グローバルメモリをわたって低レイテンシメッセージセマンティクスを送信するために使用される。複数の実施形態において、複数のFMCは、複数のPLMリンクを直接的に用いて又は他のFMCスイッチを通じて、互いに接続される。さらに、複数の実施形態において、複数のFMCは、STLスイッチを通じて、STLのようなネットワーキングスタックを超えてPLMプロトコルをトンネリングすることによって接続されてよい。
スイッチ及び複数のPLMリンクを介して接続された複数のノードの複数のFMCの結果として、グローバルメモリは、共有され、ロードストアセマンティクスを介してアクセスされることができる。ノードにローカルな計算について、ノードは、これらの計算のために、それ自身の予約されたメモリにアクセスしてよい。複数のノード上に存在するグローバルメモリは、同一の特性のメモリを有してよく、各ノードは、このメモリ上で複数のオペレーションを実行できる。さらに、複数のノードは、複数のポリシを通じてグローバルメモリの特定の複数のピースに割り当てられることができ、複数のポリシは、各ノード又は複数のノードの複数のFMCを接続するスイッチによって保持されてよい。
RMDAを通じてメッセージを送信することに代えて、ロードストアセマンティクスは、FMCを通じて複数のノードの間で通信するために使用される。各FMCは、フォールト分離境界を実装し、ノードの複数のCPUが機能しなくなったとしても、各ノードのグローバルメモリは、FMCを通じてアクセスされてよい。上述のとおり、共有メモリは、STLネットワーキングスタック又はPLMリンクを通じてアクセス可能であってよい。複数のノードの各FMCは、ロード/ストアセマンティクスを用いて、複数のノードの間で複数のメッセージを送信してよいが、複数のノードのトラフィックを妨害しない。
FMCの複数のフォールト分離境界は、様々な技術を用いて実装されてよい。いくつかの実施形態において、ハードウェアは、各CPUが同一のノード及びシステム内で他の複数のCPUから独立することを保証するために使用されてよい。このように、独立した複数のCPUの故障は、他の複数のCPUのオペレーションに影響しない。他の複数の実施形態において、CPUの故障は、他の複数のCPUが機能しなくなる原因になり得るが、機能しないノード内のグローバルメモリは、ノードは、他の複数のノードの処理に影響することなく機能しないことができるように、電力が供給されてアクティブであってよく、機能しないノードのメモリは、アクセス可能に維持される。
図3は、グローバルメモリマップ300の例である。グローバルメモリマップ300は、複数のノードにわたるグローバルメモリへのアクセスを調整するために、ルータ又はスイッチとして動作する1又は複数のFMCによって見られるものとして示される。グローバルメモリマップの複数の部分は、ノード302及びノード304上に格納されてよい。グローバルメモリは、複数の共有メモリ領域306に分割されてよい。グローバルメモリは、図2に示されるようなFMCによって管理されてよい。したがって、グローバルメモリの各ノード302及びノード304は、FMCによって、グローバルメモリマップ300によって示されるようにグローバルメモリにマッピングされる。具体的には、ノード302の共有メモリ領域308は、1からnの範囲の任意の数の共有メモリ領域を含んでよい。ノード304の共有メモリ領域310は、1からpの範囲の他の数の共有メモリ領域を含んでよい。そして、グローバルメモリは、1からnの範囲の共有メモリ領域308、及び1からpの範囲の共有メモリ領域310を含む。各共有メモリ領域は、1つのFMCに物理的に取り付けられてよく、又は複数のFMCにわたってストライプされてよい。さらに、メモリ領域のサイズは、可変又は固定であってよい。複数の実施形態において、各領域は、ページレベルの粒度に維持されてよく、メモリ領域全体は、メモリ管理スキームの一部として、ページ化されることができる。図2に示されるように、各ノードは、FMCによってアクセス可能でなく、グローバルメモリマップ300によって表されないローカルメモリを含んでよい。グローバルクラスタメモリマップ300は、ローカルコヒーレントメモリ領域314及びローカルコヒーレントメモリ領域316を、ロードストアファブリックを通じてアクセス可能でない各個々のノードのプライベートメモリとして認識する部分312を含む。
ローカルコヒーレントメモリ領域314及び316は、メッセージ領域として使用されてよい。したがって、ローカルコヒーレントメモリ領域314及び316のそれぞれは、メッセージ領域318及びメッセージ領域320をそれぞれ含む。ローカルのメッセージ領域318及びメッセージ領域320は、複数のノードにわたってメモリを共有するために、スイッチ又はルータとして動作するFMCによって直接的にアクセス可能でないが、FMCは、メッセージ領域322に間接的にアクセスしてよい。
共有メモリ領域308及び共有メモリ領域310は、グローバルクラスタメモリマップ300として、同一のアドレスレンジを有する複数のノードのそれぞれに認識可能である。各共有メモリ領域は、複数のノードの各セットに対する異なる複数のアクセス権を有してよい。複数のアクセス権は、複数のポリシのセットに基づいてよい。さらに、各共有メモリ領域のアドレスレンジ及び任意の複数のアクセス権は、複数のレンジレジスタのセットによって強制される。場合によって、複数の領域が(複数の)FMCにおける複数の(スーパー)ページである場合に、各共有メモリ領域のアドレスレンジ及び複数のアクセス権は、メモリに存在するページテーブルによって実装されてよい。ノードが複数の適切なアクセス権を有する場合、グローバルメモリは、任意のノードにおいてキャッシュ可能である。しかし、グローバルメモリを管理する1又は複数のFMCは、複数のノードの間に、ハードウェアベースのキャッシュコヒーレンシメカニズムを強制しなくてよい。代わりに、データコヒーレンシは、複数のノード上で実行するソフトウェアによって強制される。
メッセージ領域318及びメッセージ領域320は、ノード302及びノード304にわたるデータコヒーレンシを保証するために使用されることができる。各ノードは、メモリの特定の部分へのアクセスを有する他の複数のノードにメッセージをブロードキャストでき、メモリのその特定の部分のステータスに関する情報を要求できる。例えば、第1のノードは、メモリの特定の領域に属するデータを有する場合、メモリのその領域に属するデータを有する任意のノードがメモリのその領域をアップデートすることを要求できる。メモリのその領域を有する任意のノードは、メッセージに応答でき、メモリのその領域が更新されて置き換えられたことを、要求している第1のノードに通知できる。場合によって、グローバルメモリにアクセスするためのメッセージの送信は、ダイレクトメモリアクセスであるソフトウェアベースのハンドシェイクであり、データへアクセスするためにI/Oスタックを使用しない。
グローバルメモリは、グローバルメモリの中のデータを取り出してアップデートできる複数のノード上の配置を含むことができ、複数のノードの間にハンドシェイクを用いるメモリのクラスタリングモデルが存在する。さらに、複数のFMCは、各ノードに対する複数の適切なアクセス権を保証でき、故障している任意のノードのデータへのアクセスを提供できる。このアクセスは、ロード/ストアセマンティクス及びハードウェアを用いて、I/Oソフトウェアスタックの遅延なしに生じる。さらに、メモリは、ブロックアクセスではなく、直線的に、バイト毎に、フラットメモリのようにアクセスされることができる。場合によって、複数の共有メモリ領域は、キャッシュ可能である。さらに、場合によって、複数のメッセージ領域は、複数のノード上に格納されたデータに関する複数のメッセージを送信するために複数のFMCを用いることに代えて、複数のノードの間でデータを送信するために使用されることができる。
図4は、複数のクラスタにわたるコヒーレント共有メモリのためのプロセスフロー図400である。ブロック402において、キャッシュ可能なグローバルメモリがビルドされる。場合によって、キャッシュ可能なグローバルメモリは、複数のクラスタにわたる複数の共有メモリ領域を用いることが可能にされ、複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である。ブロック404において、データコヒーレンシは、ソフトウェア支援メカニズムを用いて、複数のクラスタにわたって保証される。ブロック406において、独立した複数のフォールトドメインは、ファブリックメモリコントローラの使用を通じて、各クラスタに対して維持される。
いくつかの実施形態において、ファブリックメモリコントローラは、マルチノードシステムにわたる信頼性、可用性、及び保守性(RAS)の特徴を可能にするために使用される。企業向けであるために、FMCは、他の複数のFMCにわたるRAIDの様々な形式のようなメモリの複製をサポートする。このように、FMC又はその関連するグローバルメモリがダウンした場合に、複製されたメモリのコンテンツを再構成する能力が、利用可能である。複製は、K−aryl複製であってよく、全ての書き込みは、(k−1)の追加のコピーに複製される。アドレスマップレンジレジスタ(又はページテーブル)は、(複数の)バックアップロケーションとともに、プライマリロケーションを格納する。複数のRAIDスキームについては、ホストFMCは、他の複数のアドレス、及び共にRAIDされた複数のFMCを保持する。プライマリロケーションをホストするFMCは、(複数の)バックアップロケーションをホストする(複数の)FMCのそれぞれにおける書き込みを複製する。RAIDされた複数の構成については、ホストするFMCは、パリティを格納する複数のRAIDロケーションに、排他的論理和の情報を送信する。
書き込み場合、書き込まれたアドレスロケーションに対するプライマリであるFMCは、複数のバックアップロケーションに複数の書き込みを送信する。いくつかの実施形態において、FMCは、パリティを格納する(複数の)FMCに対するRAID排他的論理和ロケーションに複数の書き込みを送信する。複数のバックアップFMCは、プライマリFMCに書き込み完了を送信し返す。複数の書き込みが行われたとしても、全ての書き込みが完了するまで、書き込みは、プライマリFMCにおいて完了されたと見なされない。プライマリFMCは、それが書き込みを送信する他の(複数の)FMCのそれぞれに対するタイマを保持する。完了が各宛先FMCから受信されない場合、プライマリFMCは、タイムアウトしてよい。さらに、プライマリFMCは、別のパスを用いてトランザクションをやり直すことを試してよく、及び/又は必要な回復動作を行うためにシステムソフトウェアに通知する。
複製が利用可能な場合、読み取りは、プライマリFMC又はバックアップFMCのいずれかによって提供されてよい。読み取り要求を生成するノードに付随するFMCは、タイマを保持する。タイムアウトによって完了が受信されない場合、それは、いくつかの予め定められた回数の間、同一のFMC又はバックアップFMCへの別のパスを試みてよい。それでもトランザクションがタイムアウトする場合、それは、データの返信を壊してよい。FMCは、必要な修正動作を行う又は単にエラーを記録するために、タイムアウトエラーをシステムソフトウェアに報告してもよい。複数の実施形態において、FMC又はFMCに付随するメモリモジュールが機能しない場合、コンテンツは、空きの容量を有する他のFMCに転送されることができ、その結果、複数のレンジレジスタ(又は複数のページテーブルエントリ)が更新される。
図5は、プールされた複数のメモリリソースにアクセスし得るノード500のブロック図である。ノード500は、例えば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、サーバ、又はブレードサーバなどであってよい。ノード500は、高密度ラックスケールアーキテクチャ(RSA)内のノードであってもよい。いくつかの例において、ノードは、マルチノードシステムをわたって他のノードに通信できる任意のデバイスである。したがって、いくつかの例において、マルチノードシステムは、複数のノードのネットワークであり、各ノードは、ネットワークにわたって通信できる任意のデバイスである。さらに、いくつかの例において、マルチノードは、ラックサーバシステムにおけるサーバである。
ノード500は、格納された複数の命令を実行するように構成された中央処理ユニット(CPU)502を含んでよい。CPU502は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、又は任意の数の他の構成であることができる。場合によって、CPU502及びノード500の他の複数のコンポーネントは、システムオンチップ(SOC)として実装されてよい。さらに、ノード500は、1つより多いCPU502を含んでよい。CPU502によって実行される複数の命令は、複数のノードにわたって複数のメモリリソースをプールすることを可能にするために使用されてよい。
ノード500は、グラフィックスプロセッシングユニット(GPU)504を含んでもよい。示されるように、CPU502は、バス506を通じてGPU504に接続されてよい。しかし、いくつかの実施形態において、CPU502及びGPU504は、同一のダイ上に位置付けられる。GPU504は、ノード500内で任意の数のグラフィックオペレーションを実行するために構成されてよい。例えば、GPU504は、ノード500のユーザに対して表示させるために、複数のグラフィックスイメージ、複数のグラフィックスフレーム、複数のビデオ、又はその類のものを描画又は操るように構成されてよい。しかし、場合によって、ノード500は、GPU504を含まない。
CPU502は、バス506を通じてCPU入出力(I/O)に接続されてもよい。複数の実施形態において、CPUI/O508は、CPU502がマルチノードシステムにおいてプールされたメモリにアクセスできるように使用される。CPU502は、ノード500内の専用のメモリを含まずに、プールされたメモリにアクセスできる。さらに、CPUI/O508は、トランスミッションコントロールプロトコル及びインターネットプロトコル(TCP/IP)並びにインフィニバンド(IB)のような複数のネットワークプロトコル及び通信を使用せずに、マルチノードシステム内にプールされたメモリにアクセスできる。複数の実施形態において、プラッツマウス(PLM)リンク510のようなリンクは、シリアルリンク上で実行するメモリセマンティクスベースの複数のプロトコルを用いて、各ノードを共有メモリコントローラに接続するために使用される。Peripheral Component Interconnect Express(PCIe)リンク512は、CPU502をネットワークに接続するために使用されてよい。
CPU502は、バス506を通じて、ノード500を1又は複数のI/Oデバイス516に接続するように構成された入出力(I/O)デバイスインターフェース514に接続されてもよい。複数のI/Oデバイス516は、例えば、キーボード及びポインティングデバイスを含んでよく、ポインティングデバイスは、タッチパッド又はタッチスクリーンなどを含んでよい。複数のI/Oデバイス516は、ノード500の複数のビルトインコンポーネントであってよく、又はノード500に外部接続された複数のデバイスであってよい。CPU502は、バス506を通じて、ノード500を複数のディスプレイデバイス520に接続するように構成されたディスプレイインターフェース518にリンクされてもよい。複数のディスプレイデバイス520は、ノード500のビルトインコンポーネントであるディスプレイスクリーンを含んでよい。複数のディスプレイデバイス520は、ノード500に外部接続されたコンピュータモニタ、テレビ、又はプロジェクタなどを含んでもよい。
図5のブロック図は、ノード500が図5に示された複数のコンポーネントの全てを含むことを示すことを意図するものではない。さらに、ノード500は、詳細な特定の実装に応じて、図5に示されない任意の数の追加のコンポーネントを含んでよい。さらに、ノード500は、図5に示されたものより少ないコンポーネントを含んでよい。例えば、ノード500は、GPU504、I/Oデバイスインターフェース514、又はディスプレイインターフェース518を含まなくてよい。
本技術は、独立した複数のフォールトドメインを維持しながら、キャッシュ可能なグローバルメモリを利用可能にする。グローバルメモリは、異なる複数のノード(例えば、データベース)の間の複数の共有データ構造体を格納するために使用されることができ、複数のノードの間の高速通信のために使用されることもできる。共有メモリが永続性である(すなわち、不揮発性メモリ(NVM)の中にある)場合、データがすでにメモリの中にあるので、計画された又は計画されていないノードのダウンタイムの後の複数のレジュームオペレーション、及び複数のノードの間の複数のタスクの移行のための時間は、非常に速くなる。さらに、データ整合性がソフトウェアによって強制されるので、ノードが機能しない場合から回復するためのチェックポイントを確立するために使用されることができる修正されたキャッシュ可能なデータの明確な引き渡しがある。
本技術は、また、メモリ及びストレージレベルの弾力性を可能にするためにRASの複数の特徴を提供する。さらに、いくつかの実施形態において、メモリは、ストレージの代替であってよい。メモリが不揮発性メモリである場合、データベースの複数の部分がディスク又はソリッドステートドライブ(SSD)からアップロードされないように、データベース全体は、メモリからマッピングされてよい。このように、データベースにアクセスする時間は減少される。場合によって、次の世代の不揮発性メモリは、ストレージを代替できるがメモリタイプのセマンティクスを用いてアクセスされる大きい容量を有する。さらに、本技術で説明された不揮発性メモリは、ストレージと同一の弾力性を維持する。不揮発性メモリは、何度も複製されることができる。このように、任意のRAIDスキームは、高いレベルの信頼性及びフォールトアイソレーションを提供するために実装されることができる。
複数のクラスタにわたるコヒーレント共有メモリのための装置が、ここで提供される。装置は、ファブリックメモリコントローラ、1又は複数のノード、及びグローバルメモリを含む。ファブリックメモリコントローラは、ノードの故障にさえも応えて、各共有メモリ領域がロードストアセマンティクスを用いてアクセス可能になるように、各ノードの共有メモリ領域へのアクセスを管理する。各共有メモリ領域は、ファブリックメモリコントローラによってグローバルメモリにマッピングされる。
ファブリックメモリコントローラは、1又は複数のノード内に位置付けられてよい。さらに、ロードストアセマンティクスは、1又は複数のノードの間の通信を可能にする。ファブリックメモリコントローラは、1又は複数のノードのステータスに関連してグローバルメモリがアクセス可能になるように、メモリ複製をサポートしてもよい。さらに、ファブリックメモリコントローラは、グローバルメモリの任意の部分が故障の場合に再構成されることができるように、グローバルメモリにわたる全てのRAIDスキームをサポートしてよい。装置は、バックアップファブリックメモリコントローラを含んでよく、バックアップファブリックメモリコントローラは、第1のファブリックメモリコントローラの故障の場合に使用される。ファブリックメモリコントローラの故障に応じて、機能しないファブリックメモリコントローラのコンテンツは、他のファブリックメモリコントローラに転送されてよい。さらに、ファブリックメモリコントローラに付随するメモリモジュールの故障に応じて、機能しないメモリモジュールのコンテンツは、他のファブリックメモリコントローラ又はメモリモジュールに転送されてよい。
支援型コヒーレント共有メモリシステムが、ここで説明される。システムは、部分的にコヒーレントなメモリ及びファブリックメモリコントローラを含む。部分的にコヒーレントなメモリは、複数のクラスタからの複数の共有メモリ領域を含み、各クラスタの独立したフォールトドメインは、維持され、ファブリックメモリコントローラは、ロードストアセマンティクスを通じた部分的にコヒーレントなメモリへのアクセスを可能にする。
複数の共有メモリ領域は、プラッツマウスリンク、ネットワーキングスタック、I/Oスタック、又はそれらの任意の組み合わせを通じてアクセスされてよい。さらに、複数のクラスタは、複数の共有メモリ領域に格納されたデータにアクセスし、複数の共有メモリ領域からのデータをローカルキャッシュにローカルにキャッシュできる。部分的にコヒーレントなメモリの複数のクラスタは、1又は複数の強化型ネットワーキングインターフェースコントローラを用いて接続されてよい。さらに、各ノードは、他の複数のノードによって直接的にアクセス可能でないローカルメモリを維持できる。共有メモリ領域は、集中させられてよく、各クラスタの独立したフォールトドメインは、ファブリックメモリコントローラによって実装されたフォールト分離境界を通じて維持されてよい。
複数のクラスタにわたるコヒーレント共有メモリの方法が、ここで説明される。方法は、複数のクラスタにわたる複数の共有メモリ領域を用いたキャッシュ可能なグローバルメモリを利用可能にする段階を含み、複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である。方法は、また、ソフトウェア支援メカニズムを用いて、複数のクラスタにわたるデータコヒーレンシを保証する段階を含む。さらに、方法は、ファブリックメモリコントローラの使用を通じて、各クラスタに対する独立した複数のフォールトドメインを維持する段階を含む。
ファブリックメモリコントローラは、複数のクラスタを通じて分散されてよい。さらに、ロードストアセマンティクスは、各クラスタが他のクラスタと直接的に通信することを可能にする。さらに、フォールト分離境界は、各クラスタに対する独立した複数のフォールトドメインを可能にしてよい。
前述の説明において、開示された主題の様々な態様が説明された。説明のために、特定の数、システム、及び構成が、主題の完全な理解を提供すべく説明された。しかし、本開示を利用できる当業者にとって、主題が特定の詳細なしで実施され得ることが明らかである。他の例では、周知の特徴、コンポーネント、又はモジュールは、開示された主題をわかりにくくしないように、省略され、単純化され、組み合わせられ、又は分離された。
開示された主題の様々な実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせで実装されてよく、命令、関数、プロシージャ、データ構造体、ロジック、アプリケーションプログラム、シミュレーション、エミュレーション、及び設計のファブリケーションのための設計表現又は形式のような、機械によってアクセスされたときに、その機械にタスクを実行させ、抽象データ型又は低レベルハードウェアコンテキストを定義させ、又は結果を生成させるプログラムコードの参照によって又はと併用して説明されてよい。
シミュレーションのために、プログラムコードは、設計されたハードウェアに期待される実行方法のモデルを本質的に提供するハードウェア記述言語又は他の機能記述言語を用いてハードウェアを表してよい。プログラムコードは、アセンブリ言語若しくは機械語、又はコンパイル及び/又はインタプリタされ得るデータであってよい。さらに、どのような形にしても動作を起こすこと又は結果をもたらすことをソフトウェアと言うことは、技術的によくあることである。そのような表現は、プロセッサに動作を実行させ又は結果を生成させるプロセッシングシステムによるプログラムコードの実行を述べることの簡潔な表現の方法にすぎない。
プログラムコードは、例えば、ソリッドステートメモリ、ハードドライブ、フロッピー(登録商標)ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、デジタル多用途ディスク(DVD)などを含むストレージデバイス及び/又は関連する機械可読又は機械アクセス可能媒体のような揮発性及び/又は不揮発性メモリ、並びに機械アクセス可能生物学状態保存ストレージのようなより珍しい媒体に格納されてよい。機械可読媒体は、アンテナ、光ファイバ、通信インターフェースなどのような機械によって可読な形で、情報を格納、送信、又は受信するための任意の有形のメカニズムを含んでよい。プログラムコードは、パケット、シリアルデータ、パラレルデータなどの形で送信されてよく、圧縮又は暗号化された形式で使用されてよい。
プログラムコードは、プロセッサ、プロセッサによって可読な揮発性及び/又は不揮発性メモリ、少なくとも1つの入力デバイス、及び/又は1又は複数の出力デバイスをそれぞれ含む、可動又は固定のコンピュータ、パーソナルデジタルアシスタント、セットトップボックス、携帯電話、及びページャ、並びに他の電子デバイスのようなプログラム可能な機械上で実行するプログラムに実装されてよい。プログラムコードは、開示された実施形態を実行し、出力情報を生成するために、入力デバイスを用いて入力されたデータに適用されてよい。出力情報は、1又は複数の出力デバイスに適用されてよい。当業者は、開示された主題の実施形態が、マルチプロセッサ又はマルチコアプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ、及び仮想的に任意のデバイスに組み込まれ得る普及した又は小型のコンピュータ又はプロセッサを含む様々なコンピュータシステム構成で実施され得ることを理解してよい。開示された主題の実施形態は、また、分散型コンピューティング環境で実施され得、タスクは、通信ネットワークを通じてリンクされたリモートプロセッシングデバイスによって実行され得る。
オペレーションは、順次的なプロセスとして説明されてよいが、オペレーションのいくつかは、実際には、並行に、同時に、及び/又は分散環境で、並びにシングル又はマルチプロセッサマシンによるアクセスのためにローカルに及び/又はリモートに格納されたプログラムコードで実行されてよい。さらに、いくつかの実施形態において、オペレーションの順序は、開示された主題の意図から逸脱しない範囲で、再配置されてよい。プログラムコードは、組み込まれたコントローラによって又はそれと併用して使用されてよい。
例示の実施形態を参照して開示された主題が説明されたが、この説明は、限定する意味で解釈されることを意図するものではない。例示の複数の実施形態の様々な修正、及び当開示された主題に付随することが業者にとって明かな主題の他の実施形態は、開示された主題の範囲内にあると考えられる。
[項目1]
複数のクラスタにわたるコヒーレント共有メモリのための装置であって、
ファブリックメモリコントローラと、
1又は複数のノードと、
グローバルメモリと
を備え、
前記ファブリックメモリコントローラは、前記ノードの故障にさえも応えて、各共有メモリ領域がロードストアセマンティクスを用いてアクセス可能になるように、各ノードの共有メモリ領域へのアクセスを管理し、
各共有メモリ領域は、前記ファブリックメモリコントローラによって前記グローバルメモリにマッピングされる装置。
[項目2]
前記ファブリックメモリコントローラは、前記1又は複数のノード内に位置付けられる項目1に記載の装置。
[項目3]
前記ロードストアセマンティクスは、前記1又は複数のノードの間の通信を可能にする項目1又は2に記載の装置。
[項目4]
前記ファブリックメモリコントローラは、前記グローバルメモリが前記1又は複数のノードのステータスに関連してアクセス可能になるように、メモリ複製をサポートする項目1から3のいずれか一項に記載の装置。
[項目5]
前記ファブリックメモリコントローラは、前記グローバルメモリの任意の部分が故障の場合に再構成されることができるように、前記グローバルメモリにわたる全てのRAIDスキームをサポートする項目1から4のいずれか一項に記載の装置。
[項目6]
前記装置は、バックアップファブリックメモリコントローラを含み、
前記バックアップファブリックメモリコントローラは、第1の前記ファブリックメモリコントローラの故障の場合に使用される項目1から5のいずれか一項に記載の装置。
[項目7]
前記ファブリックメモリコントローラの故障に応じて、機能しない前記ファブリックメモリコントローラのコンテンツは、他のファブリックメモリコントローラに転送される項目1から6のいずれか一項に記載の装置。
[項目8]
前記ファブリックメモリコントローラに付随するメモリモジュールの故障に応じて、機能しない前記メモリモジュールのコンテンツは、他のファブリックメモリコントローラ又はメモリモジュールに転送される項目1から7のいずれか一項に記載の装置。
[項目9]
支援型コヒーレント共有メモリのためのシステムであって、
部分的にコヒーレントなメモリと、
ファブリックメモリコントローラと
を備え、
前記部分的にコヒーレントなメモリは、複数のクラスタからの複数の共有メモリ領域を含み、各クラスタの独立したフォールトドメインは、維持され、
前記ファブリックメモリコントローラは、ロードストアセマンティクスを通じた前記部分的にコヒーレントなメモリへのアクセスを可能にするシステム。
[項目10]
前記複数の共有メモリ領域は、プラッツマウスリンク、ネットワーキングスタック、I/Oスタック、又はそれらの任意の組み合わせを通じてアクセスされる項目9に記載のシステム。
[項目11]
前記複数のクラスタは、前記複数の共有メモリ領域に格納されたデータにアクセスし、前記複数の共有メモリ領域からの前記データをローカルキャッシュにローカルにキャッシュする項目9又は10に記載のシステム。
[項目12]
前記部分的にコヒーレントなメモリの前記複数のクラスタは、1又は複数の強化型ネットワーキングインターフェースコントローラを用いて接続される項目9から11のいずれか一項に記載のシステム。
[項目13]
複数のクラスタにわたるコヒーレント共有メモリの方法であって、
複数のクラスタにわたる複数の共有メモリ領域を用いたキャッシュ可能なグローバルメモリを利用可能にする段階であって、前記複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である段階と、
ソフトウェア支援メカニズムを用いて、前記複数のクラスタにわたるデータコヒーレンシを保証する段階と、
ファブリックメモリコントローラの使用を通じて、各クラスタに対する独立した複数のフォールトドメインを維持する段階と
を備える方法。
[項目14]
前記ファブリックメモリコントローラは、前記複数のクラスタを通じて分散される項目13に記載の方法。
[項目15]
前記ロードストアセマンティクスは、各クラスタが他のクラスタと直接的に通信することを可能にする項目13又は14に記載の方法。
[項目16]
フォールト分離境界は、各クラスタに対する前記独立した複数のフォールトドメインを可能にする項目13から15のいずれか一項に記載の方法。
[項目17]
複数のクラスタにわたるコヒーレント共有メモリのための装置であって、
ロードストアセマンティクスを用いて、クラスタの各ノードの複数のメモリモジュールへのアクセスを管理する手段と、
前記複数のメモリモジュールの複数の共有メモリ領域をグローバルメモリにマッピングする手段と
を備える装置。
[項目18]
複数のメモリモジュールへのアクセスを管理する前記手段は、前記ノード内に位置付けられる項目17に記載の装置。
[項目19]
前記ロードストアセマンティクスは、1又は複数のノードの間の通信を可能にする項目17又は18に記載の装置。
[項目20]
前記グローバルメモリが前記ノードのステータスにかかわらずアクセス可能になるように、メモリ複製を可能にする手段
を備える項目17から19のいずれか一項に記載の装置。
[項目21]
前記グローバルメモリの任意の部分が故障の場合に再構成されることができるように、前記グローバルメモリにわたる全てのRAIDスキームのための手段
を備える項目17から20のいずれか一項に記載の装置。
[項目22]
複数のクラスタにわたる複数の共有メモリ領域を用いたキャッシュ可能なグローバルメモリを利用可能にする手順であって、前記複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である手順と、
ソフトウェア支援メカニズムを用いて、前記複数のクラスタにわたるデータコヒーレンシを保証する手順と、
ファブリックメモリコントローラの使用を通じて、各クラスタに対する独立した複数のフォールトドメインを維持する手順と
をコンピュータに実行させるためのプログラム。
[項目23]
前記ファブリックメモリコントローラは、前記複数のクラスタを通じて分散される項目22に記載のプログラム。
[項目24]
前記ロードストアセマンティクスは、各クラスタが他のクラスタと直接的に通信することを可能にする項目22又は23に記載のプログラム。
[項目25]
フォールト分離境界は、各クラスタに対する前記独立した複数のフォールトドメインを可能にする項目22から24のいずれか一項に記載のプログラム。

Claims (13)

  1. 複数のノードにわたるコヒーレント共有メモリのための装置であって、
    第1ノード及び第2ノードを有する前記複数のノードを備え、
    前記第1ノードは、
    第1CPUと、
    第1グローバルメモリと、
    第1共有メモリ領域を前記第1グローバルメモリにマッピングする第1ファブリックメモリコントローラと
    を含み、
    前記第2ノードは、
    第2CPUと、
    第2グローバルメモリと、
    第2共有メモリ領域を前記第2グローバルメモリにマッピングする第2ファブリックメモリコントローラと
    を含み、
    前記第1ファブリックメモリコントローラは、前記第1CPUが故障した場合であっても、ロードストアセマンティクスを用いて前記第1共有メモリ領域へのアクセスが可能となるように、前記第1グローバルメモリへのアクセスを管理し、
    前記第2ファブリックメモリコントローラは、前記第2CPUが故障した場合であっても、ロードストアセマンティクスを用いて前記第2共有メモリ領域へのアクセスが可能となるように、前記第2グローバルメモリへのアクセスを管理し、
    プライマリファブリックメモリコントローラとして動作する前記第1ファブリックメモリコントローラは、書き込みを行う場合、バックアップファブリックメモリコントローラとして動作する前記第2ファブリックメモリコントローラが前記書き込みを複製すべく、前記書き込みを前記第2ファブリックメモリコントローラに送信し、
    前記第2ファブリックメモリコントローラは、前記書き込みの完了を前記第1ファブリックメモリコントローラに送信し、
    前記書き込みが行われたとしても、書き込みが完了するまで、前記書き込みは、前記第1ファブリックメモリコントローラにおいて完了したものと見なされず、
    前記第2ファブリックメモリコントローラは、前記第1ファブリックメモリコントローラの故障の場合に使用される、装置。
  2. 前記第1ファブリックメモリコントローラは、
    前記第2ファブリックメモリコントローラから前記書き込みの完了を受信するまでのタイマを設定し、前記第2ファブリックメモリコントローラから前記書き込みの完了を受信しない場合、タイムアウトする、請求項1に記載の装置。
  3. 前記ロードストアセマンティクスは、ノード間の通信を可能にする請求項1又は2に記載の装置。
  4. 前記第1ファブリックメモリコントローラ及び前記第2ファブリックメモリコントローラは、前記第1グローバルメモリ又は前記第2グローバルメモリの任意の部分が故障の場合に再構成されることができるように、前記第1グローバルメモリ及び前記第2グローバルメモリにわたるRAIDスキームをサポートする請求項1から3のいずれか一項に記載の装置。
  5. 前記第1ファブリックメモリコントローラ又は前記第2ファブリックメモリコントローラの故障に応じて、機能しない前記第1ファブリックメモリコントローラ又は前記第2ファブリックメモリコントローラに付随するメモリモジュールのコンテンツは、他のファブリックメモリコントローラに転送される請求項1から4のいずれか一項に記載の装置。
  6. 前記第1ファブリックメモリコントローラ又は前記第2ファブリックメモリコントローラに付随するメモリモジュールの故障に応じて、機能しない前記メモリモジュールのコンテンツは、他のファブリックメモリコントローラ又はメモリモジュールに転送される請求項1から5のいずれか一項に記載の装置。
  7. 前記第1共有メモリ領域及び前記第2共有メモリ領域は、プラッツマウスリンク、ネットワーキングスタック、I/Oスタック、又はそれらの任意の組み合わせを通じてアクセスされる請求項1から6のいずれか一項に記載の装置。
  8. 前記第1ノード及び前記第2ノードは、前記第1共有メモリ領域及び前記第2共有メモリ領域に格納されたデータにアクセスし、前記第1共有メモリ領域及び前記第2共有メモリ領域からの前記データをローカルキャッシュにローカルにキャッシュする請求項1から7のいずれか一項に記載の装置。
  9. 第1CPU、第1グローバルメモリ及び第1ファブリックメモリコントローラを含む第1ノードと、第2CPU、第2グローバルメモリ及び第2ファブリックメモリコントローラを含む第2ノードとを有する複数のノードにわたるコヒーレント共有メモリの方法であって、
    前記第1ファブリックメモリコントローラが、第1共有メモリ領域を前記第1グローバルメモリにマッピングすることで、キャッシュ可能な前記第1グローバルメモリを利用可能にする段階と、
    前記第2ファブリックメモリコントローラが、第2共有メモリ領域を前記第2グローバルメモリにマッピングすることで、キャッシュ可能な前記第2グローバルメモリを利用可能にする段階と、
    ソフトウェア支援メカニズムを用いて、前記複数のノードにわたるデータコヒーレンシを保証する段階と、
    前記第1ファブリックメモリコントローラ及び前記第2ファブリックメモリコントローラの使用を通じて、各ノードに対する独立した複数のフォールトドメインを維持する段階
    備え、
    前記第1グローバルメモリを利用可能にする段階は、
    前記第1ファブリックメモリコントローラが、前記第1CPUが故障した場合であっても、ロードストアセマンティクスを用いて前記第1共有メモリ領域へのアクセスが可能となるように、前記第1グローバルメモリへのアクセスを管理する段階を含み、
    前記第2グローバルメモリを利用可能にする段階は、
    前記第2ファブリックメモリコントローラが、前記第2CPUが故障した場合であっても、ロードストアセマンティクスを用いて前記第2共有メモリ領域へのアクセスが可能となるように、前記第2グローバルメモリへのアクセスを管理する段階を含み、
    前記方法は、
    書き込みを行う場合、プライマリファブリックメモリコントローラとして動作する前記第1ファブリックメモリコントローラにより、バックアップファブリックメモリコントローラとして動作する前記第2ファブリックメモリコントローラが前記書き込みを複製すべく、前記書き込みを前記第2ファブリックメモリコントローラに送信し、前記第2ファブリックメモリコントローラから前記第1ファブリックメモリコントローラに前記書き込みの完了を送信する段階であって、前記書き込みが行われたとしても、書き込みが完了するまで、前記書き込みは、前記第1ファブリックメモリコントローラにおいて完了したものと見なされない、段階と、
    前記第1ファブリックメモリコントローラの故障の場合に前記第2ファブリックメモリコントローラを使用する段階と
    を更に備える方法。
  10. 前記ロードストアセマンティクスは、各ノードが他のノードと直接的に通信することを可能にする請求項9に記載の方法。
  11. フォールト分離境界は、各ノードに対する前記独立した複数のフォールトドメインを可能にする請求項9又は10に記載の方法。
  12. コンピュータに、請求項9から11のいずれか一項に記載の方法を実行させるためのプログラム。
  13. 請求項12に記載のプログラムを格納するコンピュータ可読記憶媒体。
JP2014229936A 2013-12-27 2014-11-12 支援型コヒーレント共有メモリ Active JP6202756B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/142,726 US9372752B2 (en) 2013-12-27 2013-12-27 Assisted coherent shared memory
US14/142,726 2013-12-27

Publications (2)

Publication Number Publication Date
JP2015127949A JP2015127949A (ja) 2015-07-09
JP6202756B2 true JP6202756B2 (ja) 2017-09-27

Family

ID=53372168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014229936A Active JP6202756B2 (ja) 2013-12-27 2014-11-12 支援型コヒーレント共有メモリ

Country Status (4)

Country Link
US (2) US9372752B2 (ja)
JP (1) JP6202756B2 (ja)
CN (1) CN104750658B (ja)
DE (1) DE102014117465B4 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7255790B2 (ja) 2018-06-15 2023-04-11 三菱重工業株式会社 半導体装置

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367398B1 (en) * 2014-03-28 2016-06-14 Emc Corporation Backing up journal data to a memory of another node
WO2016118607A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Distributed index for fault tolerant object memory fabric
WO2016118615A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Object memory data flow instruction execution
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US9851906B2 (en) * 2015-06-16 2017-12-26 Vmware, Inc. Virtual machine data placement in a virtualized computing environment
JP6495779B2 (ja) * 2015-08-11 2019-04-03 日本電信電話株式会社 演算処理管理方法及び演算装置
US20170078367A1 (en) * 2015-09-10 2017-03-16 Lightfleet Corporation Packet-flow message-distribution system
US11240334B2 (en) * 2015-10-01 2022-02-01 TidalScale, Inc. Network attached memory using selective resource migration
US10241676B2 (en) 2015-12-08 2019-03-26 Ultrata, Llc Memory fabric software implementation
US10235063B2 (en) * 2015-12-08 2019-03-19 Ultrata, Llc Memory fabric operations and coherency using fault tolerant objects
WO2017100281A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
EP3387548B1 (en) 2015-12-08 2023-08-02 Ultrata LLC Memory fabric operations and coherency using fault tolerant objects
CN106874138A (zh) * 2015-12-11 2017-06-20 成都华为技术有限公司 一种业务节点的分配方法及装置
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US11126564B2 (en) 2016-01-12 2021-09-21 Hewlett Packard Enterprise Development Lp Partially coherent memory transfer
WO2017134795A1 (ja) * 2016-02-04 2017-08-10 株式会社日立製作所 ストレージシステム及びキャッシュ制御方法
US10101934B1 (en) 2016-03-24 2018-10-16 Emc Corporation Memory allocation balancing for storage systems
US10324782B1 (en) 2016-03-24 2019-06-18 Emc Corporation Hiccup management in a storage array
US9857990B1 (en) 2016-03-24 2018-01-02 EMC IP Holding Company LLC Fast startup for modular storage systems
US10705907B1 (en) 2016-03-24 2020-07-07 EMC IP Holding Company LLC Data protection in a heterogeneous random access storage array
US9921997B2 (en) * 2016-04-01 2018-03-20 Intel Corporation Mechanism for PCIE cable topology discovery in a rack scale architecture environment
WO2017192917A1 (en) * 2016-05-04 2017-11-09 Pure Storage, Inc. Storage cluster
US10162770B2 (en) 2016-06-30 2018-12-25 Intel Corporation Virtual machine migration in rack scale systems
JP6745174B2 (ja) 2016-09-09 2020-08-26 株式会社日立産機システム コントローラ及びコントロール管理システム
US10042762B2 (en) * 2016-09-14 2018-08-07 Advanced Micro Devices, Inc. Light-weight cache coherence for data processors with limited data sharing
US10223008B1 (en) 2016-09-30 2019-03-05 EMC IP Holding Company LLC Storage array sizing for compressed applications
US10152371B1 (en) 2016-09-30 2018-12-11 EMC IP Holding Company LLC End-to-end data protection for distributed storage
US10255172B1 (en) 2016-09-30 2019-04-09 EMC IP Holding Company LLC Controlled testing using code error injection
US10375038B2 (en) 2016-11-30 2019-08-06 International Business Machines Corporation Symmetric multiprocessing management
CN108153622B (zh) * 2016-12-06 2021-08-31 华为技术有限公司 一种故障处理的方法、装置和设备
US10628057B2 (en) 2017-03-28 2020-04-21 Hewlett Packard Enterprise Development Lp Capability based locking and access of shared persistent memory
US10423530B2 (en) 2017-05-08 2019-09-24 Hewlett Packard Enterprise Development Lp Partial cache coherence
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
CN107888657B (zh) * 2017-10-11 2020-11-06 上海交通大学 低延迟分布式存储系统
US10394490B2 (en) * 2017-10-23 2019-08-27 Weka.IO Ltd. Flash registry with write leveling
US11175927B2 (en) 2017-11-14 2021-11-16 TidalScale, Inc. Fast boot
US10922178B2 (en) 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
US10970213B2 (en) * 2019-04-30 2021-04-06 Hewlett Packard Enterprise Development Lp Selective disabling of hardware-based cache coherency and enforcement of software-based cache coherency
US10970169B2 (en) * 2019-06-27 2021-04-06 General Electric Company Data configuration management system for an engine
US11086739B2 (en) * 2019-08-29 2021-08-10 EMC IP Holding Company LLC System comprising non-volatile memory device and one or more persistent memory devices in respective fault domains

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5384657A (en) * 1976-12-30 1978-07-26 Fujitsu Ltd Multiprocessor system
JPH0233649A (ja) * 1988-07-25 1990-02-02 Matsushita Electric Ind Co Ltd マルチマスタプロセッサ装置
JP3489157B2 (ja) 1993-11-26 2004-01-19 株式会社日立製作所 分散共有メモリシステムおよび計算機
US5893144A (en) * 1995-12-22 1999-04-06 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US5896492A (en) * 1996-10-28 1999-04-20 Sun Microsystems, Inc. Maintaining data coherency between a primary memory controller and a backup memory controller
US6449699B2 (en) * 1999-03-29 2002-09-10 International Business Machines Corporation Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
JP3351469B2 (ja) 1999-11-17 2002-11-25 エヌイーシーコンピュータテクノ株式会社 情報処理システム及びそれに用いるデータコピーを伴う障害処理方式
JP4249622B2 (ja) * 2001-09-21 2009-04-02 ヒューレット・パッカード・カンパニー 共有ストレージを備えたマルチノード環境のためのシステムおよび方法
US6959372B1 (en) * 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
TW591526B (en) * 2002-04-09 2004-06-11 Via Tech Inc Data maintenance method of DSM system
US7035974B2 (en) * 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US7003645B2 (en) * 2002-12-18 2006-02-21 International Business Machines Corporation Use of a storage medium as a communications network for liveness determination in a high-availability cluster
US7386687B2 (en) * 2005-01-07 2008-06-10 Sony Computer Entertainment Inc. Methods and apparatus for managing a shared memory in a multi-processor system
US7353336B2 (en) 2005-03-09 2008-04-01 Hewlett-Packard Development Company, L.P. External RAID-enabling cache
US7949766B2 (en) * 2005-06-22 2011-05-24 Cisco Technology, Inc. Offload stack for network, block and file input and output
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US7882479B2 (en) * 2007-06-06 2011-02-01 International Business Machines Corporation Method and apparatus for implementing redundant memory access using multiple controllers on the same bank of memory
US7840730B2 (en) * 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
US8452846B2 (en) * 2010-08-12 2013-05-28 Talari Networks Incorporated Adaptive private network asynchronous distributed shared memory services
US8868848B2 (en) * 2009-12-21 2014-10-21 Intel Corporation Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform
US9112887B2 (en) * 2010-11-19 2015-08-18 Toshiba Corporation Mirroring solution in cloud storage environment
US9448940B2 (en) * 2011-10-28 2016-09-20 The Regents Of The University Of California Multiple core computer processor with globally-accessible local memories
JP5590022B2 (ja) 2011-12-28 2014-09-17 富士通株式会社 情報処理装置、制御方法および制御プログラム
US9842025B2 (en) * 2012-01-16 2017-12-12 International Business Machines Corporation Efficient state tracking for clusters

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7255790B2 (ja) 2018-06-15 2023-04-11 三菱重工業株式会社 半導体装置

Also Published As

Publication number Publication date
US20150186215A1 (en) 2015-07-02
JP2015127949A (ja) 2015-07-09
CN104750658B (zh) 2018-09-11
US9372752B2 (en) 2016-06-21
DE102014117465B4 (de) 2021-05-06
US20170052860A1 (en) 2017-02-23
DE102014117465A1 (de) 2015-07-02
US10229024B2 (en) 2019-03-12
CN104750658A (zh) 2015-07-01

Similar Documents

Publication Publication Date Title
JP6202756B2 (ja) 支援型コヒーレント共有メモリ
KR102204751B1 (ko) 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜
JP6067230B2 (ja) 観測可能クライアント側メモリアクセスを用いる高性能データストレージ
CN102033715B (zh) 在本地代理的存储器镜像和迁移
US10146632B2 (en) Efficient mechanism to replicate data for multiple controllers
Angel et al. Disaggregation and the application
US20150222705A1 (en) Large-scale data storage and delivery system
US20210064234A1 (en) Systems, devices, and methods for implementing in-memory computing
CN103870435A (zh) 服务器及数据访问方法
CN104636182A (zh) 一种操作数据处理系统的方法、数据处理系统和处理器
US20210271420A1 (en) Method and apparatus for performing data access management of all flash array server
WO2021012169A1 (zh) 一种提高存储系统可靠性的方法和相关装置
Al Maruf et al. Memory disaggregation: advances and open challenges
US10503416B1 (en) Flash memory complex with a replication interface to replicate data to another flash memory complex of a data processing system
WO2024051292A1 (zh) 数据处理系统、内存镜像方法、装置和计算设备
CN116774911A (zh) 内存管理方法和装置
US10496284B1 (en) Software-implemented flash translation layer policies in a data processing system
WO2016122602A1 (en) Systems and methods for sharing non-volatile memory between multiple access models
US11366618B2 (en) All flash array server and control method thereof
US11216348B2 (en) All flash array server and control method thereof
KR20190048456A (ko) 컴퓨팅 디바이스 및 그것의 동작방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160816

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170718

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170828

R150 Certificate of patent or registration of utility model

Ref document number: 6202756

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250