JP6324494B2 - 記憶システムおよびエイリアス・メモリ - Google Patents

記憶システムおよびエイリアス・メモリ Download PDF

Info

Publication number
JP6324494B2
JP6324494B2 JP2016516745A JP2016516745A JP6324494B2 JP 6324494 B2 JP6324494 B2 JP 6324494B2 JP 2016516745 A JP2016516745 A JP 2016516745A JP 2016516745 A JP2016516745 A JP 2016516745A JP 6324494 B2 JP6324494 B2 JP 6324494B2
Authority
JP
Japan
Prior art keywords
memory
block
data
request
alias
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
JP2016516745A
Other languages
English (en)
Other versions
JP2016524228A5 (ja
JP2016524228A (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2016524228A publication Critical patent/JP2016524228A/ja
Publication of JP2016524228A5 publication Critical patent/JP2016524228A5/ja
Application granted granted Critical
Publication of JP6324494B2 publication Critical patent/JP6324494B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/065Replication mechanisms
    • 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/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Description

コンピュータ・システムのメモリは、従前より揮発性および不揮発性メモリに分類されている。揮発性メモリは、そこに格納されたデータを維持するためには電力を必要とする。不揮発性メモリは、給電されないときでも、データを保持することができる。以前より、各々に一定の利点があるので、コンピュータは揮発性および不揮発性双方のメモリを使用している。例えば、揮発性メモリは、通例、不揮発性メモリよりも遙かに高速であるが、不揮発性メモリは、ビット当たりのコストが遙かに少ない場合が多い。不揮発性メモリ技術の進歩により、不揮発性メモリは、停電の間データを保存するという利点を維持しつつ、揮発性メモリと不揮発性メモリとの間の速度のギャップは狭まりつつある。
本明細書において特許請求する主題は、任意の欠点を解決する実施形態にも、以上で説明したような環境においてのみ動作する実施形態にも限定されない。むしろ、この背景は、本明細書において説明する実施形態を実施できる技術分野の一例を例示するために設けられたに過ぎない。
端的に言うと、本明細書において説明する主題の態様は、記憶システムおよびエイリアス・メモリ(aliased memory)に関する。態様において(in aspects)、ファイル・システム・ドライバまたは他のコンポーネントが、メモリの2つのブロック間においてエイリアスを作成する要求をメモリ・コントローラに送ることができる。これらのメモリ・ブロックの内一方は主メモリに使用することができ、これらのメモリ・ブロックの他方は記憶システムに使用することができる。応答して、メモリ・コントローラは、これらのメモリ・ブロック間においてエイリアスを作成することができる。エイリアスが切断される(sever)まで、メモリ・コントローラが主メモリにおけるブロックからのデータを求める要求を受けると、メモリ・コントローラは、記憶システムに使用されるメモリ・ブロックからのデータで応答することができる。また、メモリ・コントローラは、本明細書において説明するように、他のアクションも実現することができる。
本摘要は、詳細な説明において以下で更に説明する主題のいくつかの態様を端的に確認するために設けられている。本摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
「本明細書において説明する主題」という句は、文脈が明らかに他のことを示すのではない限り、詳細な説明において説明される主題を指す。「態様」(aspects)という用語は、「少なくとも1つの態様」と読解されてしかるべきである。詳細な説明において説明される主題の態様を識別することは、特許請求する主題の主要なまたは必須の特徴を識別することを意図するのではない。
以上で説明した態様、および本明細書において説明する主題の他の態様は、一例としてそして限定ではなく、添付図面に例示される。図面において、同様の参照番号は同様のエレメントを示す。
図1は、本明細書において説明する主題の態様を組み込むことができる汎用計算環境の一例を表すブロック図である。 図2は、本明細書において説明する主題の態様にしたがって、不揮発性メモリを概略的に表すブロック図である。 図3は、本明細書において説明する主題の態様にしたがって、図2のメモリ・ブロックのサブブロック間におけるエイリアスの種々の状態を概略的に表すブロック図である。 図4は、本明細書において説明する主題の態様にしたがって構成されたシステムのコンポーネント例を概略的に表すブロック図である。 図5は、本明細書において説明する主題の態様にしたがって、不揮発性メモリを概略的に表すブロック図である。 図6は、本明細書において説明する主題の態様にしたがって構成されたシステムのコンポーネント例を概略的に表すブロック図である。 図7は、本明細書において説明する主題の態様にしたがって、メモリ・コントローラの観点からエイリアスの作成に伴って行うことができるアクション例を概略的に表す流れ図である。 図8は、本明細書において説明する主題の態様にしたがって、メモリ・コントローラの観点からエイリアス・ブロックに対するデータを入手することに伴って行うことができるアクション例を概略的に表す流れ図である。 図9は、本明細書において説明する主題の態様にしたがって、メモリ・コントローラを介してメモリにアクセスするコンポーネントにおいて行うことができるアクション例を示す流れ図である。
定義
本明細書において使用する場合、「含む」という用語およびその変形は、「含むが限定されない」ことを意味する開放端用語として読解されるものとする。「または」という用語は、文脈が明らかに他のことを指示するのではない限り、「および/または」と解読されるものとする。「基づく」という用語は、「少なくとも部分的に基づく」と読解されるものとする。「一実施形態」(one embodiment)および「実施形態」(an embodiment)という用語は、「少なくとも1つの実施形態」と解読されるものとする。「他の実施形態」という用語は、「少なくとも1つの他の実施形態」と読解されるものとする。
本明細書において使用する場合、「a」、「an」、および「the」のような用語は、示される項目またはアクションを1つ以上含むものとする。更に特定すると、請求項においてある項目に言及するときは、一般に、少なくとも1つのそのような項目が存在することを意味し、あるアクションに言及するときは、そのアクションの少なくとも1つのインスタンスが実行されることを意味するものとする。
本明細書では、「第1」、「第2」、「第3」等の用語が使用されることもある。追加のコンテキストがなければ、請求項におけるこれらの用語の使用は、順序を含意することを意図するのではなく、むしろ識別の目的で使用される。例えば、「第1バージョン」および「第2バージョン」という句は、必ずしも、第1バージョンが最初のバージョンであり、第2バージョンよりも前に作成されたことを意味するのではなく、第1バージョンが第2バージョンの前に要求されることもまたは動作することさえも意味しない。むしろ、これらの句は異なるバージョンを識別するために使用される。
見出しは便宜上に過ぎず、所与のトピックについての情報が、そのトピックを示す見出しの章以外で見出されることもある。
明示的および暗示的な他の定義も、以下に含まれる場合もある。
動作環境例
図1は、本明細書において説明する主題の態様を実現することができる、適した計算システム環境100の一例を示す。計算システム環境100は、適した計算環境の一例に過ぎず、本明細書において説明する主題の態様の使用範囲や機能に関して何の限定をも示唆することは意図していない。また、計算環境100が、動作環境例100に示されるコンポーネントの内いずれの1つまたはその組み合わせに関しても、依存性や用件を有するようには決して解釈してはならない。
本明細書において説明する主題の態様は、多数の他の汎用または特殊目的計算システム環境あるいは構成とでも動作する。本明細書において説明する主題の態様との使用に適していると考えられる周知の計算システム、環境、または構成の例には、パーソナル・コンピュータ、ベア・メタル上または仮想マシンとしてのいずれでもよいサーバー・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロコントローラ・ベース・システム、セットトップ・ボックス、プログラマブルおよびプログラマブルでない消費者用電子機器、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、パーソナル・ディジタル・アシスタント(PDA)、ゲーミング・デバイス、プリンタ、セットトップ、メディア・センター、または他のアプライアンスを含むアプライアンス、自動車埋め込み型または取り付け型計算デバイス、他の移動体デバイス、セル・フォン、ワイヤレス・フォン、および有線電話を含む電話デバイス、以上のシステムまたはデバイスの内任意のものを含む分散型計算環境等が含まれる。種々の実施形態は以上のデバイスの内1つ以上に限定されることもあるが、コンピュータという用語は、別段指示されない限り、以上のデバイスを範囲に含むことを意図している。
本明細書において説明する主題の態様は、コンピュータによって実行される、プログラム・モジュールのような、コンピュータ実行可能命令という一般的なコンテキストで説明することができる。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するかまたは特定の抽象データ型を実装する。また、本明細書において説明する主題の態様は、分散型計算環境においても実施することができ、この場合、タスクは、通信ネットワークを介してリンクされたリモート処理デバイスによって実行される。分散型計算環境では、プログラム・モジュールは、メモリ記憶デバイスを含むローカルおよびリモート双方のコンピュータ記憶媒体に配置されてもよい。
あるいはまたは加えて、ここで説明する機能は、少なくとも部分的に、1つ以上のハードウェア論理コンポーネントによって実行することもできる。例えば、そして限定ではなく、使用することができる実例となるタイプのハードウェア論理コンポーネントには、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラム特定集積回路(ASIC)、プログラム特定標準製品(ASSP)、システム・オン・チップ・システム(SOC)、複合プログラマブル論理デバイス(CPLD)等が含まれる。
図1を参照すると、本明細書において説明する主題の態様を実現するためのシステム例は、コンピュータ110の形態とした汎用計算デバイスを含む。コンピュータは、命令を実行することができる任意の電子デバイスを含むことができる。コンピュータ110のコンポーネントは、処理ユニット120、システム・メモリ130、およびシステム・メモリから処理ユニット120までを含む種々のシステム・コンポーネントを結合する1つ以上のシステム・バス(システム・バス121によって代表される)を含むことができる。システム・バス121は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および種々のバス・アーキテクチャの内任意のものを使用するローカル・バスを含む、様々なタイプのバス構造の内任意のものとすることができる。一例として、そして限定ではなく、このようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子規格連合(VESA)ローカル・バス、およびMezzanineバスとしても知られる周辺コンポーネント相互接続(PCI)バス、周辺素子相互接続拡張(PCI−X)バス、高度グラフィクス・ポート(AGP)、およびPCIエクスプレス(PCIe)を含む。
処理ユニット120は、ハードウェア・セキュリティ・デバイス122に接続することができる。セキュリティ・デバイス122は、コンピュータ110の種々の態様の安全性を確保するために使用することができる暗号鍵を格納し、生成することができるとよい。一実施形態では、セキュリティ・デバイス122は、信頼プラットフォーム・モジュール(TPM)チップ、TPMセキュリティ・デバイス等を含むことができる。
コンピュータ110は、通例、種々のコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ110によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性および不揮発性双方の媒体、ならびにリムーバブルおよび非リムーバブル媒体を含む。一例として、そして限定ではなく、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。
コンピュータ記憶媒体は、揮発性および不揮発性の双方の、リムーバブルおよび非リムーバブル媒体を含み、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、または他のデータというような情報の格納のためのいずれかの方法または技術で実現される。コンピュータ記憶媒体は、RAM、ROM、EEPROM、ソリッド・ステート・ストレージ、フラッシュ・メモリまたは他のメモリ技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)、ブルーレイ・ディスク(BD)、または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、または所望の情報を格納するために使用することができそしてコンピュータ110によってアクセスすることができる他のあらゆる媒体を含む。コンピュータ記憶媒体は、通信媒体を含まない。
通信媒体は、通例、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、または他のデータを、搬送波のような変調データ信号または他の移送メカニズムに具体化し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その信号内に情報をエンコードするようにして、その特性の1つ以上が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体と、音響、RF、赤外線、および他のワイヤレス媒体というようなワイヤレス媒体とを含む。以上の内任意のものの組み合わせも、コンピュータ読み取り可能媒体の範囲に含まれてしかるべきである。
システム・メモリ130は、リード・オンリ・メモリ(ROM)131およびランダム・アクセス・メモリ(RAM)132のような、揮発性および/または不揮発性メモリの形態としたコンピュータ記憶媒体を含むこともできる。不揮発性メモリは、ROM131および/またはRAM132の一部または全部と交換されてもよい。例えば、メモリスタ・メモリ(memristor memory)、相変化メモリ(PCM)、または何らかの他のタイプの不揮発性メモリを、ROM131および/またはRAM132の代わりに、またはこれらに加えて使用することができる。
基本入力/出力システム133(BIOS)は、起動中におけるように、コンピュータ110内部にあるエレメント間で情報を転送するのに役立つ基本的なルーチンを含み、通例ROM131に格納される。RAM132は、通例、処理ユニット120によって直ちにアクセス可能なデータおよび/またはプログラム・モジュール、および/または現在処理ユニット120によって処理されているデータおよび/またはプログラム・モジュールを含む。一例として、そして限定ではなく、図1は、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136およびプログラム・データ137を示す。
また、コンピュータ110は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体も含むことができる。一例に過ぎないが、図1は、非リムーバブル、不揮発性磁気媒体に対して読み取りまたは書き込みを行うハード・ディスク・ドライブ141、リムーバブル、不揮発性磁気ディスク152に対して読み取りまたは書き込みを行う磁気ディスク・ドライブ151、およびCD−ROM、DVD、BD、または他の光媒体のようなリムーバブル、不揮発性光ディスク156に対して読み取りまたは書き込みを行う光ディスク・ドライブ155を示す。
一実施態様では、メムリスター・メモリ、相変化メモリ、または何らかの他のタイプの不揮発性メモリを、ハード・ドライブ141の代わりに、またはこれに加えて使用することもできる。
この動作環境例において使用することができる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体には、磁気テープ・カセット、フラッシュ・メモリ・カードおよび他のソリッド・ステート記憶デバイス、ディジタル・バーサタイル・ディスク、他の光ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれる。ハード・ディスク・ドライブ141は、インタフェース140を介してシステム・バス121に接続されればよく、磁気ディスク・ドライブ151および光ディスク・ドライブ155は、インタフェース150のようなリムーバブル不揮発性メモリ用インタフェースによってシステム・バス121に接続されればよい。
以上で論じ図1に示すこれらのドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ110のためのコンピュータ読み取り可能命令、データ構造、プログラム・モジュール、および他のデータの格納を行う。図1では、例えば、ハード・ディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、およびプログラム・データ147を格納することが示される。尚、これらのコンポーネントは、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136、およびプログラム・データ137と同一であること、または異なることもできる。オペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、およびプログラム・データ147は、ここでは、これらが異なるコピーであることを示すために、異なる番号が与えられている。
ユーザーは、キーボード162、および一般にマウス、トラックボール、またはタッチ・パッドと呼ばれるポインティング・デバイス161というような入力デバイスによって、コマンドおよび情報をコンピュータ110に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン(例えば、音声またはその他のオーディオを入力するため)、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナ、タッチ感応画面、書き込みタブレット、カメラ(例えば、ジェスチャーまたは他の視覚入力を入力するため)等を含むことができる。これらおよび他の入力デバイスは、多くの場合、ユーザー入力インタフェース160を介して処理ユニット120に接続される。ユーザー入力インタフェース160は、システム・バスに結合されるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)のような他のインタフェースおよびバス構造によって接続されてもよい。
以上で識別した入力デバイスの内1つ以上の使用によって、自然ユーザー・インタフェース(NUI)を策定することもできる。NUIは、音声認識、タッチおよびスタイラス認識、画面上および画面付近の双方におけるジェスチャー認識、エア・ジェスチャー、頭部および眼球追跡、音声および発話、視覚(vision)、タッチ、ジェスチャー、および機械インテリジェンス等に頼ることができる。ユーザーと対話処理するために採用することができるいくつかのNUI技術の例には、タッチ感応ディスプレイ、音声および発話認識、意図および目標理解、深度カメラ(立体視カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、およびこれらの組み合わせ等)を使用する動きジェスチャー検出、加速度計/ジャイロスコープを使用する動きジェスチャー検出、顔認識、3Dディスプレイ、頭部、眼球、および凝視追跡、没入拡張現実および仮想現実システム、ならびに電界検知電極を使用して脳の活動を検知する技術(EEGおよび関連方法)が含まれる。
更に、モニタ191または他のタイプのディスプレイ・デバイスも、ビデオ・インタフェース190のようなインタフェースを介して、システム・バス121に接続される。モニタに加えて、コンピュータは、スピーカ197およびプリンタ196のような他の周辺出力デバイスも含むことができ、これらは出力周辺インタフェース195を介して接続することができる。
コンピュータ110は、リモート・コンピュータ180のような1つ以上のリモート・コンピュータへの論理接続を使用して、ネットワーク接続環境 (networked environment)において動作することもできる。リモート・コンピュータ180は、パーソナル・コンピュータ、サーバー、ルーター、ネットワークPC、ピア・デバイス、または他の一般的なネットワーク・ノードであってよく、通例、コンピュータ110に関して先に説明したエレメントの多くまたは全部を含むが、図1にはメモリ記憶デバイス181だけが示されている。図1に示す論理接続は、ローカル・エリア・ネットワーク(LAN)171およびワイド・エリア・ネットワーク(WAN)173を含むが、電話ネットワーク、近場(near field)ネットワーク、および他のネットワークを含むこともできる。このようなネットワーキング環境 (networking environment) は、事務所、企業規模のコンピュータ・ネットワーク、イントラネット、およびインターネットでは極普通である。
LANネットワーキング環境において使用される場合、コンピュータ110は、ネットワーク・インタフェースまたはアダプター170を介してLAN171に接続される。WANネットワーキング環境において使用される場合、コンピュータ110は、インターネットのようなWAN173を介して通信を確立するモデム172または他の手段を含めばよい。モデム172は、内蔵型でも外付けでもよく、ユーザー入力インタフェース160または他のしかるべきメカニズムを介してシステム・バス121に接続することができる。ネットワーク接続環境では、コンピュータ110に関して図示したプログラム・モジュール、またはその一部が、リモート・メモリ記憶デバイスに格納されてもよい。一例として、そして限定ではなく、図1は、リモート・アプリケーション・プログラム185を、メモリ・デバイス181上に存在するものとして示す。尚、図示したネットワーク接続は一例であり、コンピュータ間に通信リンクを確立する他の手段を使用してもよいことは認められよう。
不揮発性メモリ
既に述べたように、不揮発メモリにおいて進歩がなされつつある。本明細書において説明する主題の態様によれば、これらの進歩を利用するように、オペレーティング・システムを構築する(structured)ことができる。図2および図5は、本明細書において説明する主題の態様による不揮発性メモリを概略的に表すブロック図である。不揮発性メモリ205は、アドレスによってアクセスすることができるメモリ記憶エレメントのアレイを含むことができる。一実施態様では、不揮発性メモリ205を含むメモリ・デバイスは、メモリ・プリミティブ(memory primitives)を使用してアドレスすることもできる。不揮発性メモリ205にアクセスするために使用されるメモリ・プリミティブは、RAMのような揮発性メモリにアクセスするために使用されるものと同様または同一であってもよい。
高速不揮発メモリがメモリ・バスに取り付けられてもよい。例えば、現在、あるタイプの不揮発性メモリは、RAMよりも2〜4倍遅く動作し、フラッシュ・メモリまたはハード・ディスク・ストレージより2桁速く動作する。これらのタイプの不揮発性メモリは、低レイテンシーおよび高データ転送レートを有することができ、ストレージ・バス(storage bus)に接続されるよりも、メモリ・バスに接続されることによって一層活用することができる(benefit)。
図2に示すように、不揮発性メモリ205は、ファイル・システム領域210およびメモリ領域211に分割することができる。これらの領域の図示するサイズは、例示に過ぎない。一実施態様では、例えば、これらのサイズは、図2に示すサイズから著しく異なってもよい。
更に、不揮発性メモリ205は、1つ以上のサブシステムを使用して実装することもできる。例えば、多数のタイプの不揮発性メモリがシステム上にホストされる場合、あるいは不揮発性メモリの同じまたは異なるタイプの多数のメモリ・ユニットがシステム上にホストされる場合、システムは、不揮発性メモリにアクセスするために多数のサブシステムを含むことができる。
「ファイル・システム」という用語が本明細書において時々使用されるが、この用語は例示に過ぎないこと、そして本明細書における教示は、他のタイプの記憶システムにも適用できることは理解されるはずであろう。記憶システムは、永続的に保存されるデータを編成する1つ以上のハードウェアおよび/またはソフトアウェア・コンポーネントを含むことができる。
ファイル・システム領域210のサイズ、およびメモリ領域211のサイズは、例えば、構成設定動作(configuration operation)の間に、設定または再設定することもできる。構成設定動作は、オペレーティング・システムをインストールする前または後に、メモリ領域のサイズを所望通りに設定または再設定するために行うことができる。オペレーティング・システムは、不揮発性メモリ205の予め定められた位置において構成データを捜すように構成することができる。構成データは、ファイル・システム・データと、他の使用のために利用可能なメモリとの間で、不揮発性メモリをどのように分割すればよいか示すことができる。
メモリ領域211は、不揮発性メモリ205において、コンピュータのために追加の主メモリを設けるために、取り置きされている部分である。このメモリは、コンピュータの任意のRAMまたは他の揮発性メモリの代わりに、またはそれに加えて使用されてもよい。
ファイル・システム領域210は、不揮発性メモリ205において、ファイル・システム・データのために取り置きされている部分である。物理的には、この領域におけるメモリ・エレメントには、メモリ領域211におけるメモリ・エレメントと同じようにアクセスすることができるが、メモリ・ハードウェアと関連しながら動作するファイル・システム・コンポーネントが、以下で更に詳しく説明するように、これらのアクセスに関して一定の規則を強制することもできる。
従前からのファイル・システムでは、ハード・ディスクからのデータのブロックは、主メモリにコピーすることができる。一旦主メモリに入ると、データを変更することができる。ある時点において、変更されたデータのブロックは、主メモリからハード・ディスクに書き込まれる。
本明細書において説明する主題の態様によれば、ファイル・システムは、従前のファイル・システムにおいて発生するコピーの一部を回避するように構成することができる。例えば、図2を参照すると、アプリケーションがブロック215においてデータを得ようとするとしてもよい。ブロック215におけるデータをブロック216におけるメモリにコピーする代わりに、ファイル・システムは、メモリ・ハードウェアがブロック216とブロック215との間においてエイリアスを作成することを要求することができる。エイリアスが作成されると、ブロック216を読み取ろうとする動作は、一定の条件を満たすときを除いて、ブロック215からデータを得ることになる。
エイリアスを作成した後、ブロック216への書き込みは、データをブロック216に書き込ませる。一実施態様では、メモリ・ハードウェアは、ブロック216へのデータの書き込み後の時点まで、ブロック216に書き込まれたデータをブロック215にコピーするのを待つことができる。他の実施態様では、メモリ・ハードウェアは、ブロック216に書き込まれたデータをブロック215にコピーする前に、ファイル・システムからの明示的なコマンドを待つこともできる。これによって、不揮発性メモリ205に対して書き込みが行われるとき、ファイル・システムが一層関与を強めることができる。
一旦ブロック216に対する書き込みが行われたなら、ブロック216からブロック215への1つ以上のエイリアスを断絶する(break)こともできる。例えば、ブロック215は、複数のサブブロックによって実装することもできる。一実施態様では、サブブロックは、不揮発性メモリ205を使用するメモリ・アーキテクチャー上においてアクセスすることができる、小さな固定サイズのメモリとすることができる。一実施態様では、ブロックは1ページのメモリに対応することができ、サブブロックはキャッシュ・ラインに対応することができる。
一実施態様では、ブロック216とブロック215との間においてエイリアスが設定されると、物理的に、ブロック216の各サブブロックと、ブロック215のその対応するサブブロックとの間に、エイリアスを設定することができる。この結果、ブロック216および215のメモリ・エレメント間に複数のエイリアスができる。
一実施態様では、ブロック216の一部に書き込まれるとき、この部分を含むサブブロックを決定することができ、これらのサブブロックに関連付けられたエイリアスを切断する(sever)ことができる。この切断は、ブロック216の後続の読み取りよりも前の任意の時点において行うことができる。ブロック216に対する後続の読み取りを受けたとき、この読み取りに対するデータは、エイリアスが切断されていないブロック215から、そしてエイリアスが切断されたブロック216から引き出される。
他の実施態様では、ブロック215の一部に書き込まれるとき、この部分を含むサブブロックを決定することができ、これらのサブブロックに関連付けられたエイリアスを切断することができる。この切断は、ブロック216の後続の読み取りよりも前の任意の時点において行うことができる。ブロック216に対する後続の読み取りを受けたとき、この読み取りに対するデータは、エイリアスが切断されていないブロック215から、そしてエイリアスが切断されたブロック216を介して引き出される。
ブロック216のサブブロックとブロック215のサブブロックとの間におけるエイリアスの切断と合わせて、更にブロック215のサブブロックにおいてデータを上書きする前に、ブロック215のサブブロックにおけるデータが、ブロック216の対応するサブブロック(またはブロック215のサブブロックにエイリアスされた任意の他のサブブロック)にアクセスしたときに得られるように、これを保存することができる。データの保存は、例えば、ブロック216に割り当てられた位置にデータをコピーすること、データを新たな位置にコピーしこの新たな位置を指し示すようにブロック216のエイリアスを更新すること、データをその現在の位置に保持し、ブロック215への読み取りによって変更後のデータが得られるように、ブロック215に関連付けられたマッピング構造を更新すること等を含むことができる。このビヘイビア(behavior)は、ブロック215のデータが変化したときでも、ブロック216を介して得ることができるデータを不変のまま維持する。
一実施態様では、ブロック215の一部に書き込まれるとき、またはブロック216の一部に書き込まれるとき、先に概要を説明したように、エイリアスは断絶される。他の実施態様では、ブロック216への書き込みに応答して、エイリアスが断絶されるが、ブロック215に対する書き込みに応答して断絶されることはない。他の実施態様では、エイリアスは、ブロック215への書き込みに応答して断絶されるが、ブロック216への書き込みをしようとしても断絶されることはない。特定のシステムに基づく(followed)実施態様は、ハードウェアまたはソフトウェアによって構成可能であっても、ハード・ワイヤ配線されても、またはハード・コード化されても、その他であってもよい。
図3は、本明細書において説明する主題の態様による、図2のメモリ・ブロックのサブブロック間におけるエイリアスの種々の状態を概略的に表すブロック図である。ブロック216とブロック215との間にエイリアスが設定される場合、これによって、ブロック216のサブブロックとブロック215のサブブロックの間に複数のエイリアスを設定することができる。ブロック216にアドレスされるデータのリード要求をこの状態において受けると、ブロック215におけるデータによってこの読み取りは満たされる(satisfy)。
ブロック316は、データがブロック216に書き込まれた後におけるブロック216を表す。具体的には、データは、サブブロック301〜303に書き込まれている。ブロック316を作成するためのデータ書き込みと関連付けて、サブブロック301〜303に対するエイリアスが切断されている。ブロック316にアドレスされる読み取りは、エイリアスが切断されてないブロック215からデータを引き出し、更にエイリアスが切断されたブロック316(例えば、ブロック301〜303)からデータを引き出す。メモリ・コントローラ(例えば、図4のメモリ・コントローラ410)は、存在するあらゆるエイリアスを考慮に入れて、しかるべき位置からデータを引き出すための回路を含むことができる。
図4および図6は、本明細書において説明する主題の態様にしたがって構成されたシステムのコンポーネント例を概略的に表すブロック図である。図4および図6に示すコンポーネントは、例示であり、必要とされるまたは含まれる可能性があるコンポーネントを全て含むことを意味するのではない。更に、コンポーネントの数は、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、他の実施形態では異なる場合もある。ある実施形態では、図4および図6と関連付けて説明するコンポーネントは、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、他のコンポーネント(図示するまたは図示しない)に含まれてもよく、またはサブコンポーネント内に置かれてもよい。ある実施形態では、図4および図6と関連付けて説明するコンポーネントおよび/または機能は、多数のデバイスにわたって分散されてもよい。
キャッシュ415は、不揮発性メモリ205からのデータをキャッシュするメモリ・エレメントを含むことができる。一実施態様では、キャッシュは、ダイナミックRAM(DRAM)、スタティックRAM(SRAM)、あるいは何らかの他のタイプの揮発性または不揮発性メモリを含むことができる。ある実施態様では、キャッシュ415を省略してもよい。ある実施態様では、1レベルよりも多いキャッシュがあってもよい。
メモリ・コントローラ410は、不揮発性メモリ205上のデータにアクセスするための回路を含むことができる。本明細書において使用する場合、アクセスとは、データの読み取り、データの書き込み、データの削除、データの更新、以上の内2つ以上を含む組み合わせ等を含むことができる。一実施態様では、メモリ・コントローラ410は、キャッシュ415のみを使用して、不揮発性メモリ205にアクセスすることができる。言い換えると、この実施態様では、メモリ・コントローラ410が読み取りまたは書き込みを行うときはいつでも、その読み取りまたは書き込みをキャッシュ415に送ることができる。読み取りでは、キャッシュ415がデータを有する場合、キャッシュ415はキャッシュ415からのデータを供給し、キャッシュがデータを有していない場合、不揮発性メモリ205からデータを得て、次いでこのデータを供給することができる。書き込みでは、キャッシュ415は、書き込みデータをキャッシュ415に格納することができ、キャッシュ動作方針にしたがって、そのキャッシュを不揮発性メモリ205にフラッシュする(flush)ことができる。
他の実施態様では、メモリ・コントローラ410は、キャッシュ415のためのコントローラとしても機能することができ、キャッシュ415または不揮発性メモリ205から適宜データを得ることができる。この実施態様では、メモリ・コントローラ410は、キャッシュ415に、キャッシュ動作方針にしたがってデータを不揮発性メモリ205に書き込ませることもできる。
メモリ・コントローラ410は、インタフェースを含むことができ、このインタフェースによって、ファイル・システム・ドライバ405は要求を送りデータを受けることができる。具体的には、このインタフェースは、以下を含む通信を可能にすることができる。
1.不揮発性メモリに対してエイリアスを作成する要求
一実施態様では、メモリ・コントローラ410は、不揮発性メモリ205のメモリのブロックを不揮発性メモリ205の他のメモリのブロックにエイリアスする要求を受けるように構築する(structure)ことができる。要求を受けた後、一実施態様では、メモリ・コントローラ410は、エイリアスされるブロックが2つ以上のサブブロックにおよぶ場合、多数のエイリアスを作成することができる。
他の実施態様では、メモリ・コントローラ410は、エイリアス要求毎に1つのエイリアスだけを作成するのでもよい。この実施態様では、ファイル・システム・ドライバ405は、所与のメモリのブロックに対していくつのエイリアスが必要とされるか判断し、これらのエイリアスの各々を確立するためにメモリ・コントローラ410と通信することが予期されればよい。
2.メモリのブロックを読み取る要求
一実施態様では、メモリ・コントローラ410は、不揮発性メモリ205のメモリのブロックを読み取る要求を受けるように構築することができる。ブロックがエイリアスされたメモリを含む場合、メモリ・コントローラ410は、エイリアスされたデータがエイリアスされたブロック(またはそのキャッシュされた表現)から得られることを確保することができる。ブロックが、エイリアスされないメモリを含む場合、メモリ・コントローラ410は、エイリアスされたデータが、エイリアスされないブロック(またはそのキャッシュされた表現)から得られることを確保することができる。要求されたブロックがエイリアスされたデータおよびエイリアスされないデータの双方を含む場合、メモリ・コントローラ410は、この要求に応答することと併せて、エイリアスされたデータおよびエイリアスされないデータを組み合わせることができる。
3.メモリのブロックに書き込む要求
一実施態様では、メモリ・コントローラ410は、不揮発性メモリ205のメモリのブロックに書き込む要求を受けるように構築することができる。そのメモリのブロックがエイリアスされている場合、メモリ・コントローラ410は、少なくとも、エイリアスされたブロックの読み取りに応答してデータを供給する前に、適宜エイリアスが断絶されることを確保することができる。メモリ・コントローラ410は、書き込みデータを、キャッシュに書き込ませることができる。メモリ・コントローラ410は、キャッシュ動作方針にしたがって、またはファイル・システム・ドライバ405からの明示的なコマンドに応答して、周期的にキャッシュからデータをフラッシュすることができる。
4.不揮発性メモリのブロックを不揮発性メモリの他の位置にコピーする要求
一実施態様では、メモリ・コントローラ410は、ファイル・システム・ドライバ405からのコピー・コマンドを受けるように構築することができる。コピー・コマンドに応答して、メモリ・コントローラ410は、そのブロックを不揮発性メモリ205の他の位置に論理的または物理的にコピーすることができる。ブロックを他の位置に物理的にコピーする場合、そのブロックからデータを読み取り、読み取ったデータを他の位置にコピーすることを伴えばよい。論理的にブロックをコピーする場合、例えば、データをそれがあるところに残すが、新たな位置に要求されたときにこのデータが戻されるように、マッピング・エレメントを変更することを含めばよい。
コピーするメモリの部分がキャッシュ415に入ったままで、不揮発性メモリ205にフラッシュされていない場合、これは種々の方法で処理することができる。例えば、一実施態様では、メモリ・コントローラ410は、そのデータをソース・ブロックにフラッシュしてまたはしないで、キャッシュ415内のデータを宛先ブロックにコピーすることを確保することができる。
他の実施態様では、ファイル・システム・ドライバ405が、コピー・コマンドを発行する前に、このコピーに関与するあらゆるダーティ・キャッシュをフラッシュするように要求することもできる。
5.再起動時に不揮発性メモリ205の一部または全部を消去する(zero)要求
オペレーティング・システムは、RAMを使用することに加えてまたはその代わりに、不揮発性メモリ205の一部を主メモリとして使用することがある。例えば、オペレーティング・システムは、コードおよびデータ構造を図2のメモリ領域211にロードする場合がある。不揮発性メモリ205は停電時にもデータを失わないので、このコードおよびデータは、不揮発性メモリ205をホストするコンピュータを再起動した後であっても残留することができる。再起動時にメモリ領域211にデータを有すると、種々の問題を起こすおそれがある。
一実施態様では、メモリ・コントローラ410は、再起動時消去(zero-on-restart)要求を受けるように構築することができる。応答して、メモリ・コントローラ410は、この要求を示すデータを格納し、再起動時に、論理的または物理的に、不揮発性メモリ205の要求された部分(例えば、メモリ領域211)を消去する(zero out)することができる。要求された部分を論理的に消去する場合、例えば、要求された部分を消去することを合図し(flag)、次いでそのブロックに対する読み取りまたは書き込み要求を受けるまで、ブロックを物理的に消去するのを待つことを伴うのでもよい。再起動後である限り、ファイル・システム・ドライバ405が消去と印されたブロックを要求するとき、システム・ファイル・ドライバ405は、消去ブロック(zeroed block)に対してゼロを受け、この消去機能(zeroing functionality)を設ける任意の実施態様を、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、使用することができる。
一実施態様では、メモリ・コントローラ410は、ブロックの複数の部分を並列に消去するために、ハードウェア並列処理を使用することもできる。このハードウェア並列処理は、多数のメモリ・エレメントを同時に消去することができる1つ以上の回路エレメントを含むことができる。
6.現在エイリアスされているブロックを再エイリアスする要求
不揮発性メモリ205を使用するオペレーティング・システムまたは他のプロセスは、ときとして、不揮発性メモリ205内のブロックを、不揮発性メモリ205内の他の位置に移動させたい場合がある。これは、移動されるメモリがエイリアスに関与する場合、問題を生ずるおそれがある。例えば、図5を参照すると、プロセスが、メモリ・ブロック215におけるデータをブロック505に移動させることを要求するとしてもよい。メモリ・ブロック216は、メモリ・ブロック215を指し示すようにエイリアスされるおそれがある。
エイリアスが新たなブロック505に変更されない場合、メモリ・ブロック215内のデータが変化すると、メモリ・ブロック216内のデータの読み取りは、変化したデータを戻すおそれがある。これは、例えば、ブロック216が変化していないデータ(例えば、ブロック505におけるデータ)にエイリアスし続けることをプログラムが予期する場合、問題を発生するおそれがある。
この問題およびその他の問題に取り組むために、メモリ・コントローラ410は、現在エイリアスされているブロックを再エイリアスする要求を受けるように構築することができる。例えば、一実施態様では、メモリ・コントローラ410は、指定された範囲内のメモリを、他の指定された範囲内のメモリに再エイリアスする要求を受けるように構築することができる。この実施態様では、メモリ・コントローラ410は、最初に指定された範囲を指し示す全てのエイリアスを判定し、これらのエイリアスが第2の指定された範囲を指し示すように再エイリアスすることができる。
他の実施態様では、メモリ・コントローラ410は、特定のエイリアスを新たな位置に再エイリアスする要求を受けるように構築することができる。例えば、図3および図4を参照すると、メモリ・コントローラ410は、ブロック215のサブブロックに対するエイリアスの内1つを再エイリアスする要求を受けるように構築することができる。この実施態様では、ファイル・システムがメモリの一部に対する1組のエイリアスを再エイリアスしようとするとき、ファイル・システム・ドライバ405は、各エイリアスを再エイリアスするコマンドをメモリ・コントローラ410に送ることと併せて、メモリのその部分に対する全てのエイリアスを判定するロジックを含むことができる。
図5に戻り、再エイリアス要求が受け入れられて処理されると、以前はブロック216からブロック215を指し示していたエイリアスを、ブロック216からブロック505に指し示すエイリアスと置き換えることができる。メモリ・コントローラは、「安全」に再エイリアス動作を実行するように構築することができる。この文脈における安全とは、再エイリアス要求の後に受け入れられる他の動作を実行する前に、論理的に再エイリアス動作が実行されることを意味する。一実施態様では、ファイル・システム・ドライバ405が、いずれの1組の動作を使用しても、再エイリアス動作が、それが受け取られたときに関して、順序通りに実行されなかったことを検出できない限り、メモリ・コントローラは、物理的に他の動作を実行することができる。
メモリ・コントローラは、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、他の方法で再エイリアス処理を実現することもできる。例えば、一実施態様では、メモリ・コントローラは、ブロック移動コマンドを受けるように構築することができ、そしてブロックが移動されたとき、そのブロックを指し示すエイリアスを自動的に再エイリアスすることができる。
他の実施態様では、メモリ・コントローラは、ブロック移動コマンドを受けるように構築することができ、更に物理的にブロックを他の位置にコピーすることなく、論理的にブロックを移動させるために、内部マッピング・エレメントを変更することができる。ある実施態様では、このようにブロックを移動させると、再エイリアス処理を実行する必要性をなくすことができる。例えば、あるエイリアスが、マッピング情報には関係なく、ブロックを指し示す場合、そのブロックを移動させるためにマッピング情報が変更されても、このエイリアスはなおもそのブロックを指し示す。
他の実施態様では、メモリ・コントローラは、ブロック移動コマンドによって自動的にトリガーされない再エイリアス・コマンドを受けるように構築することができる。この実施態様では、ファイル・システム・ドライバ405は、ブロックを適宜移動させることを要求することに加えて、明示的に再エイリアス処理を要求することができる。
以上の例は、再エイリアス・コマンドを実行するようにメモリ・コントローラを構成できる方法を全て含むことや、網羅的であることを意図するのではない。本明細書における教示に基づいて、当業者は、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく使用することができる他の実施態様も認めることができよう。
ファイル・システム・ドライバ405は、コマンドを与え、メモリ・コントローラ410から応答を受けるソフトウェアおよび/またはハードウェア・コンポーネントであってもよい。ファイル・システム・ドライバ405は、ファイル・システムの記憶スタックの一部であってもよく、システム・バスまたは他の通信リンクを介してメモリ・コントローラ410と通信することもできる。ファイル・システム・ドライバ405は、ファイル・システムの記憶スタックにインタフェースを設けることができ、このインタフェースは、不揮発性メモリ205が、記憶スタックに利用可能な他のストレージ(例えば、ハード・ディスク、フラッシュ・メモリ、他の不揮発性または揮発性メモリ等)のように現われさせる。
本明細書における例の一部は、不揮発性メモリに関するエイリアスおよびその他のアクションについて説明したが、本明細書における教示は、他のメモリ構成を使用してファイル・システム領域およびメモリ領域が実装される実施態様にも適用することができる。例えば、ファイル・システム領域および/またはメモリ領域は、揮発性、不揮発性、または揮発性および不揮発性メモリの組み合わせで実装することもできる。更に、ファイル・システム領域は、メモリ領域以外のメモリ・タイプ上に実装することもできる。
これらの実施態様では、本明細書における教示を、例えば、揮発性から揮発性メモリへのエイリアス、揮発性から不揮発性メモリへのエイリアス、不揮発性から揮発性メモリへのエイリアス、2つ以上の異なるタイプのエイリアス(例えば、不揮発性から不揮発性へ、揮発性から不揮発性へ等)を有するシステム等にも適用することができる。更に、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、図4のメモリ・コントローラ410のようなメモリ・コントローラが、エイリアスの使用、作成、再エイリアス等を行わせ、更に本明細書において説明した他のアクションを実行させるインタフェースを設けることもできる。
図6に移ると、メモリ・コントローラ605が、インタフェース160および回路例615〜618と共に示されている。一実施形態では、回路が、抵抗器、トランジスター、キャパシター、電圧源、電流源、スイッチ、インダクター等のような物理コンポーネントだけを含むのでもよい。物理コンポーネントの内1つ以上を1つ以上のチップに統合することもできる。他の実施形態では、回路が物理コンポーネントを命令と一緒に含むこともできる。命令は、これらの物理コンポーネントがどのように動作すべきか指示する。命令は、揮発性または不揮発性メモリ内でエンコードすることができる。
メモリ・コントローラ605の回路は、例示であり、必要とされるまたは含まれる可能性がある回路を全て含むことを意図するのではない。更に、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、回路の個数は他の実施形態では異なることもあり得る。ある実施形態では、図6と関連付けて説明した回路は、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、他の回路に含まれても、サブ回路内に置かれてもよい。
インタフェース610は、ファイル・システム・ドライバ405がメモリ・コントローラ605と通信することを可能にする構造を含むことができる。例えば、インタフェース610は、ファイル・システム・ドライバに、要求およびこれらの要求に対する応答をエンコードする電気信号、光信号、または他の信号によって、メモリ・コントローラ605と通信させることができる。また、インタフェース610は、図4と関連付けて示したように、通信を可能にするように構築することもできる。
例えば、インタフェース610は、メモリの記憶システム・ブロックとメモリの主メモリ・ブロックとの間にエイリアスを作成する要求を受けるように構築することができる。メモリの記憶システム・ブロックは、例えば、記憶システムのデータを維持するために使用することができ、例えば、図2のファイル・システム領域210に対応することができる。主メモリ・ブロックは、コンピュータの主メモリに使用することができ、図2のメモリ領域211に対応することができる。
エイリアス回路615は、メモリの記憶システム・ブロックとメモリの主メモリ・ブロックとの間にエイリアスを、ファイル・システム・ドライバによって要求される通りに作成するように構築することができる。既に示したように、これらのメモリ・ブロック間でエイリアスを作成するには、これらのブロックのサブブロック間において複数のエイリアスを作成することを含む場合もある。エイリアス回路615は、更に、サブブロックへの書き込みの要求に応答して、このサブブロックに対するエイリアスを切断するように構築することもできる。一実施態様では、エイリアス回路615は、サブブロックから読み取る要求をサービスする直前まで、このサブブロックに対するエイリアスを切断するのを待つことができる。また、エイリアス回路615は、例えば、エイリアスされたブロックを移動させる要求に応答して、このエイリアスされたブロックを再エイリアスするように構築することもできる。
コピー回路616は、主メモリ・ブロックを新たな位置にコピーする要求に応答するように構築することができる。一実施態様では、コピー回路616は、主メモリ・ブロック内のデータを新たな位置に物理的にコピーすることによって応答することができる。他の実施態様では、コピー回路616は、前述のように、主メモリ・ブロック内にデータを残し、マッピング・エレメントを更新することによって、主メモリ・ブロック内のデータを新たな位置に論理的にコピーすることもできる。
消去回路(zeroing circuit)618は、要求されたメモリの範囲を消去する要求に応答するように構築される。要求されたメモリの範囲は、主メモリに使用されるメモリの一部または全部を含むことができる。一実施態様では、消去回路618は、要求された範囲を消去することを示すことによって、要求されたメモリの範囲を消去することもできる。一実施形態では、消去回路618は、要求された範囲の一部に対する読み取りまたは書き込み要求がメモリ・コントローラ605によって受け取られるまで、この部分を物理的に消去するのを待つことができる。他の実施形態では、消去回路618は、消去と指示されているメモリに対する読み取りに応答して、リード・キャッシュにゼロを入れることもできる。この実施形態では、消去回路618は、実際には物理的に指示された範囲を消去しないが、リード・キャッシュからサービスされるので、メモリに対する読み取りはゼロを戻すことができる。一実施態様では、消去回路は、主メモリをホストするコンピュータの再起動の指示を受ける後まで、メモリを消去する(例えば、物理的または論理的に)のを待つこともできる。
引き出し回路617は、ファイル・システム・ドライバの読み取り要求に応答するように構築することができる。あるエイリアスが切断されている場合、引き出し回路617は、エイリアスが切断されていない記憶システム・ブロックのサブブロックから第1データを得て、エイリアスが切断された主メモリ・ブロックのサブブロックから第2データを得て、次いで第1データおよび第2データを組み合わせて読み取り要求に応答することによって、要求に応答することができる。
一例では、メモリの主メモリ・ブロックは、サブブロックに分割することができるメモリのページを含むことができ、各サブブロックはキャッシュ・ラインに対応する。
図7〜図9は、本明細書において説明する主題の態様にしたがって行うことができるアクション例を概略的に現す流れ図である。説明を簡単にするために、図7〜図9と関連付けて説明する方法は、一連のアクトとして図示し説明することとする。尚、本明細書において説明する主題の態様は、例示されるアクトおよび/またはアクトの順序によって限定されないことは理解され、認められてしかるべきである。一実施形態では、アクトは、以下で説明するような順序で行われる。しかしながら、他の実施形態では、これらのアクトの内2つ以上が、並列にまたは他の順序で行われてもよい。他の実施形態では、これらのアクションの内1つ以上が、本明細書では提示および説明されない他のアクトと共に行われてもよい。更に、本明細書において説明する主題の態様にしたがって方法を実施するために、例示されるアクトの全てが必要ではない場合もある。加えて、方法は、代わりに、一連の相互に関係付けられた状態として、状態図によって、またはイベントとして、表せることは当業者には理解され認められよう。
図7は、本明細書において説明した主題の態様にしたがって、メモリ・コントローラの観点から、エイリアスの作成に伴って行うことができるアクション例を概略的に現す流れ図である。ブロック705において、アクションが開始する。
ブロック710において、エイリアスを作成する要求を受ける。例えば、図6を参照すると、メモリ・コントローラ605が、インタフェース610を介して、メモリのブロックをエイリアスする要求を受けることができる。この要求は、ファイル・システム・ドライバ405から来るのでもよい。この要求は、メモリの記憶システム・ブロックとメモリの主メモリ・ブロックの間におけるエイリアスの作成を要求するのでもよい。
ブロック715において、1つ以上のエイリアスを作成することができる。例えば、図6を参照すると、エイリアス回路615は、メモリの2つのブロック間でエイリアスを作成することができ、および/またはメモリの2つのブロックの対応するサブブロック間でエイリアスを作成することもできる。
ブロック720において、他のアクションがある場合、それを実行することができる。他のアクションには、例えば、メモリ・コントローラに関して本明細書において説明したアクションの内任意のものが含まれる。
図8は、本明細書において説明する主題の態様にしたがって、メモリ・コントローラの観点から、エイリアス・ブロック(aliased block)に対するデータを得ることに伴って行うことができるアクション例を概略的に現す流れ図である。ブロック805において、アクションが開始する。
ブロック810において、エイリアス・ブロックに対する読み取り要求を受ける。例えば、図2および図6を参照すると、メモリ・コントローラ605は、ブロック216におけるデータを読み取る要求を受けることができる。要求は、ファイル・システム・ドライバ405から来るのでもよく、インタフェース610を介して伝達されてもよい。
要求に応答して、該当するブロックまたはサブブロックからデータを得ることができる。例えば、図3および図6を参照すると、ブロック216および215のサブブロック間のエイリアスがいずれも切断されていない場合、引き出し回路617はブロック215からデータを得ることができる。図3に示したようにエイリアスが切断されている場合、引き出し回路617は、エイリアスが切断されていないブロック215のサブブロックから、そしてエイリアスが切断されているサブブロック301、302、および303からデータを得ることができる。
ブロック820において、必要であれば、データを組み合わせる。サブブロックのエイリアスの全てではないが一部が切断されている場合、要求に応答して、異なるブロックに含まれるサブブロックからのデータを組み合わせることができる。例えば、図3および図6を参照すると、ブロック216および215のサブブロック間のエイリアスのいずれも切断されていない場合、引き出し回路617は、メモリの異なるブロックからのサブブロックを組み合わせる必要がないとしてもよく、そうでなければ、引き出し回路617は、サブブロック301、302、および303からのデータを、エイリアスが切断されていないブロック215のサブブロックからのデータと組み合わせることができる。
ブロック825において、要求に応答してデータを供給する。例えば、図6を参照すると、メモリ・コントローラ605は、インタフェース610を介してデータをファイル・システム・ドライバ405に供給することができる。
ブロック830において、他のアクションがある場合、それを実行することができる。
図9は、本明細書において説明する主題の態様にしたがって、メモリ・コントローラを介してメモリにアクセスするコンポーネントにおいて行うことができるアクション例を示す流れ図である。ブロック905において、アクションが開始する。
ブロック910において、エイリアスを作成する要求を送る。例えば、図6を参照すると、ファイル・システム・ドライバ405は、メモリの2つのブロック間でエイリアスを作成する要求を送ることができる。この要求は、インタフェース610を介して、メモリ・コントローラ605に送ることができる。
ブロック915において、エイリアスを作成する要求が送られた後に、エイリアス・データを求める要求を送ることができる。例えば、図2および図6を参照すると、ファイル・システム・ドライバ405は、ブロック216にアドレスされた要求を送ることができる。また、この要求は、インタフェース610を介してメモリ・コントローラ605にも送ることができる。
ブロック920において、要求に応答して、データを受けることができる。例えば、図2および図6を参照すると、以前に送った要求に応答して、ファイル・システム・ドライバ405は、ブロック215から得られたデータを受けることができる。
ブロック925において、他のアクションがあれば、それを実行することができる。
以上の詳細な説明からわかるように、記憶システムおよびエイリアスに関する態様について説明した。本明細書において説明した主題の態様には、種々の変更および代替構造が可能であるが、図面にはそれらの中からある種の実証された実施形態を示し、以上で詳細に説明した。しかしながら、特許請求する主題の態様を、開示した特定の形態に限定する意図はなく、逆に、本発明は、本明細書において説明した主題の種々の態様の主旨および範囲に該当する全ての変更、代替構造、および均等物を包含することは、理解されてしかるべきである。

Claims (18)

  1. メモリ・コントローラであって、
    メモリの記憶システム・ブロックとメモリの主メモリ・ブロックとの間に1つ以上のエイリアスを作成する要求を受けるように構成されたインタフェースであって、前記メモリの記憶システム・ブロックが記憶システム・データを維持するときに使用され、前記メモリの主メモリ・ブロックがコンピュータの主メモリのために使用される、インタフェースと、
    前記メモリの記憶システム・ブロックと前記メモリの主メモリ・ブロックとの間、および前記メモリの記憶システム・ブロックの各サブブロックと前記メモリの主メモリ・ブロックの各対応するサブブロックとの間に、エイリアスを作成するように構成されたエイリアス回路と、
    前記主メモリ・ブロックのデータを求める読み取り要求に応答して、前記エイリアスが切断されない限り、前記記憶システム・ブロックからデータを得るように構成された引き出し回路と、
    を備える、メモリ・コントローラ。
  2. 請求項1記載のメモリ・コントローラにおいて、前記記憶システム・データがファイル・システムのファイル・システム・データを含む、メモリ・コントローラ。
  3. 請求項1記載のメモリ・コントローラにおいて、前記インタフェースが、前記コンピュータ上にホストされたオペレーティング・システムのファイル・システム・ドライバから前記要求を受けるように構成される、メモリ・コントローラ。
  4. 請求項1記載のメモリ・コントローラにおいて、前記メモリの主メモリ・ブロックがメモリのページを含み、前記メモリの主メモリ・ブロックの各サブブロックがキャッシュ・ラインを含む、メモリ・コントローラ。
  5. 請求項1記載のメモリ・コントローラにおいて、前記引き出し回路が、更に、エイリアスが切断されていない前記記憶システム・ブロックのサブブロックから第1データを得る前記読み取り要求に応答して、エイリアスが切断された前記主メモリ・ブロックのサブブロックから第2データを得るように構成され、前記引き出し回路が、更に、前記読み取り要求に応答するために、前記第1データおよび前記第2データを組み合わせるように構成される、メモリ・コントローラ。
  6. 請求項1記載のメモリ・コントローラにおいて、前記エイリアス回路が、更に、前記第1サブブロックに書き込む要求または前記第2サブブロックに書き込む要求に応答して、第1サブブロックから第2サブブロックへのエイリアスを切断するように構成される、メモリ・コントローラ。
  7. 請求項6記載のメモリ・コントローラにおいて、前記エイリアス回路が、更に、前記書き込み要求の後、および前記第1サブブロックからの読み取り要求にサービスする直前に、前記第1サブブロックから前記第2サブブロックへの前記エイリアスを切断するように構成される、メモリ・コントローラ。
  8. 請求項1記載のメモリ・コントローラであって、更に、前記主メモリ・ブロックを新たな位置にコピーする要求に応答するように構成されたコピー回路を含む、メモリ・コントローラ。
  9. 請求項8記載のメモリ・コントローラにおいて、前記コピー回路が、前記主メモリ・ブロック内にデータを残し、前記新たな位置から要求されたときに前記データが戻されるようにマッピング・エレメントを変更することによって、前記主メモリ・ブロックを前記新たな位置にコピーする要求に応答するように構成される、メモリ・コントローラ。
  10. 請求項1記載のメモリ・コントローラであって、更に、前記主メモリの一部または全部を含む要求メモリ範囲を消去する要求に応答するように構成された消去回路を含む、メモリ・コントローラ。
  11. 請求項10記載のメモリ・コントローラにおいて、前記消去回路が、前記要求範囲が消去されたことを示し、その後、前記要求メモリ範囲に関与する読み取り要求に応答して、リード・キャッシュにゼロを入れることによって、前記メモリの要求範囲を消去する要求に応答するように構成される、メモリ・コントローラ。
  12. 請求項10記載のメモリ・コントローラにおいて、前記消去回路が、前記主メモリをホストするコンピュータの再起動の指示を受けた後に、前記メモリの要求範囲を消去することによって、前記メモリの要求範囲を消去する要求に応答するように構成される、メモリ・コントローラ。
  13. 請求項1記載のメモリ・コントローラにおいて、前記エイリアス回路が、更に、エイリアス・ブロックを移動させる要求に応答して、前記エイリアス・ブロックを再エイリアスするように構成される、メモリ・コントローラ。
  14. 請求項1記載のメモリ・コントローラにおいて、前記メモリの主メモリ・ブロックおよび前記記憶システム・ブロックが共に、メモリ・バスに取り付けられた不揮発メモリに含まれる、メモリ・コントローラ。
  15. 少なくとも部分的にコンピュータによって実装される方法であって、
    メモリ・コントローラ・インタフェースにおいて、メモリの記憶システム・ブロックとメモリの主メモリ・ブロックとの間にエイリアスを作成する要求を受けるステップであって、前記メモリの記憶システム・ブロックが記憶システム・データを維持するときに使用され、前記メモリの主メモリ・ブロックがコンピュータの主メモリのために使用される、ステップと、
    前記メモリの記憶システム・ブロックと前記メモリの主メモリ・ブロックとの間、および前記メモリの記憶システム・ブロックと前記メモリの主メモリ・ブロックとにおける各対応するサブブロックの間に、前記エイリアスを作成するステップと、
    データを求める要求に応答して、前記メモリの記憶システム・ブロックから前記データを供給するステップであって、前記要求が、前記メモリの主メモリ・ブロックを示す、ステップと、
    を含む、方法。
  16. 請求項15記載の方法において、前記メモリの記憶システム・ブロックおよび前記メモリの主メモリ・ブロックの一方が不揮発メモリ・デバイスに含まれ、前記メモリの記憶システム・ブロックおよび前記メモリの主メモリ・ブロックの他方が揮発メモリ・デバイスに含まれる、方法。
  17. 請求項15記載の方法であって、更に、
    前記データを求める要求に応答して、エイリアスが切断されていない前記記憶システム・ブロックのサブブロックから第1データを得ると共に、エイリアスが切断された前記主メモリ・ブロックのサブブロックから第2データを得るステップと、
    前記第1データおよび前記第2データを組み合わせて、前記データを求める要求に応答するステップと、
    を含む、方法。
  18. コンピュータ実行可能命令を有するコンピュータ記憶媒体であって、前記命令が実行されると、
    オペレーティング・システムのファイル・システム・ドライバから、要求をメモリ・コントローラのインタフェースに送るアクションであって、前記要求がメモリの第1ブロックとメモリの第2ブロックとの間、および前記第1および第2ブロックの各対応するサブブロックの間における1つ以上のエイリアスの作成を要求し、前記メモリの第1ブロックが記憶システム・データを維持するときに使用され、前記メモリの第2ブロックがコンピュータの主メモリのために使用される、アクションと、
    前記ファイル・システム・ドライバから前記メモリ・コントローラに、データを求める要求を送るアクションであって、前記要求が前記メモリの第1ブロックを示す、アクションと、
    前記データを求める要求に応答して、前記メモリ・コントローラから、前記メモリの第2ブロックからのデータを受けるアクションと、
    を含む、コンピュータ記憶媒体。
JP2016516745A 2013-05-29 2014-05-28 記憶システムおよびエイリアス・メモリ Active JP6324494B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361828636P 2013-05-29 2013-05-29
US61/828,636 2013-05-29
US14/036,298 US9678689B2 (en) 2013-05-29 2013-09-25 Storage systems and aliased memory
US14/036,298 2013-09-25
PCT/US2014/039634 WO2014193862A2 (en) 2013-05-29 2014-05-28 Storage systems and aliased memory

Publications (3)

Publication Number Publication Date
JP2016524228A JP2016524228A (ja) 2016-08-12
JP2016524228A5 JP2016524228A5 (ja) 2017-07-06
JP6324494B2 true JP6324494B2 (ja) 2018-05-16

Family

ID=51986493

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016516745A Active JP6324494B2 (ja) 2013-05-29 2014-05-28 記憶システムおよびエイリアス・メモリ

Country Status (8)

Country Link
US (2) US9678689B2 (ja)
EP (1) EP3005126B1 (ja)
JP (1) JP6324494B2 (ja)
CN (1) CN105339909B (ja)
BR (1) BR112015029108B1 (ja)
ES (1) ES2865575T3 (ja)
RU (1) RU2669008C2 (ja)
WO (1) WO2014193862A2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678689B2 (en) * 2013-05-29 2017-06-13 Microsoft Technology Licensing, Llc Storage systems and aliased memory
US10049052B2 (en) * 2014-10-27 2018-08-14 Nxp Usa, Inc. Device having a cache memory
US9740414B2 (en) * 2015-10-29 2017-08-22 Pure Storage, Inc. Optimizing copy operations
KR20170076878A (ko) * 2015-12-24 2017-07-05 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10210088B2 (en) 2015-12-28 2019-02-19 Nxp Usa, Inc. Computing system with a cache invalidation unit, a cache invalidation unit and a method of operating a cache invalidation unit in a computing system
US11237758B2 (en) * 2016-08-06 2022-02-01 Wolley Inc. Apparatus and method of wear leveling for storage class memory using address cache
US10387304B2 (en) * 2017-12-28 2019-08-20 Intel Corporation Virtual transfer of data between memory and storage domains

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5119290A (en) * 1987-10-02 1992-06-02 Sun Microsystems, Inc. Alias address support
JPH05158782A (ja) * 1991-12-06 1993-06-25 Hitachi Ltd 記憶装置
US6438672B1 (en) * 1999-06-03 2002-08-20 Agere Systems Guardian Corp. Memory aliasing method and apparatus
CN100442393C (zh) * 1999-10-21 2008-12-10 松下电器产业株式会社 半导体存储卡的访问装置、初始化方法和半导体存储卡
US6625725B1 (en) * 1999-12-22 2003-09-23 Intel Corporation Speculative reuse of code regions
GB2372589B (en) * 2001-02-21 2003-01-22 3Com Corp Memory aliasing in a processor system
US7900017B2 (en) * 2002-12-27 2011-03-01 Intel Corporation Mechanism for remapping post virtual machine memory pages
JP2004362464A (ja) * 2003-06-06 2004-12-24 Sony Corp 不揮発メモリを利用したコンピュータシステム
US20050138307A1 (en) * 2003-12-18 2005-06-23 Grimsrud Knut S. Storage performance improvement using data replication on a disk
US20110029723A1 (en) 2004-08-06 2011-02-03 Super Talent Electronics, Inc. Non-Volatile Memory Based Computer Systems
US8417915B2 (en) * 2005-08-05 2013-04-09 Arm Limited Alias management within a virtually indexed and physically tagged cache memory
US7872657B1 (en) * 2006-06-16 2011-01-18 Nvidia Corporation Memory addressing scheme using partition strides
US7747817B2 (en) * 2006-06-28 2010-06-29 Unity Semiconductor Corporation Performing data operations using non-volatile third dimension memory
JP4783229B2 (ja) * 2006-07-19 2011-09-28 パナソニック株式会社 キャッシュメモリシステム
JP2009009665A (ja) * 2007-06-29 2009-01-15 Elpida Memory Inc 半導体記憶装置
US8074034B2 (en) * 2007-07-25 2011-12-06 Agiga Tech Inc. Hybrid nonvolatile ram
US7855916B2 (en) 2007-10-24 2010-12-21 Rao G R Mohan Nonvolatile memory systems with embedded fast read and write memories
US8250282B2 (en) * 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8412987B2 (en) * 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
US20130033957A1 (en) * 2011-08-04 2013-02-07 Spar Food Machinery Manufacturing Co., Ltd. Stirrer having Programmable Stirring Mode Control
US20130275661A1 (en) * 2011-09-30 2013-10-17 Vincent J. Zimmer Platform storage hierarchy with non-volatile random access memory with configurable partitions
KR101692417B1 (ko) * 2011-12-29 2017-01-05 인텔 코포레이션 다이렉트 액세스를 갖는 다중-레벨 메모리
US9552176B2 (en) 2013-04-12 2017-01-24 Microsoft Technology Licensing, Llc Block storage using a hybrid memory device
US9678689B2 (en) * 2013-05-29 2017-06-13 Microsoft Technology Licensing, Llc Storage systems and aliased memory

Also Published As

Publication number Publication date
EP3005126B1 (en) 2021-03-31
WO2014193862A2 (en) 2014-12-04
US9678689B2 (en) 2017-06-13
ES2865575T3 (es) 2021-10-15
JP2016524228A (ja) 2016-08-12
CN105339909B (zh) 2018-08-24
US20140359203A1 (en) 2014-12-04
US20170262207A1 (en) 2017-09-14
CN105339909A (zh) 2016-02-17
US10216437B2 (en) 2019-02-26
RU2015151012A (ru) 2017-06-01
WO2014193862A3 (en) 2015-04-09
BR112015029108A2 (pt) 2017-07-25
BR112015029108B1 (pt) 2022-05-17
EP3005126A2 (en) 2016-04-13
RU2669008C2 (ru) 2018-10-05

Similar Documents

Publication Publication Date Title
JP6324494B2 (ja) 記憶システムおよびエイリアス・メモリ
US10970235B2 (en) Computing system with a nonvolatile storage and operating method thereof
JP6420253B2 (ja) 互換性を保つオフロード・トークン・サイズの拡大
CN107305534B (zh) 同时进行内核模式访问和用户模式访问的方法
US20180173425A1 (en) Method and apparatus for data copy
JP2016522942A (ja) 高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法
US9189426B2 (en) Protected access to virtual memory
KR20190066466A (ko) 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법
WO2012137098A1 (en) Extending cache for an external storage system into individual servers
US11157413B2 (en) Unified in-memory cache
US9563572B2 (en) Migrating buffer for direct memory access in a computer system
CN116034366A (zh) 通过选择性数据移动防止ram访问模式攻击
CN105740413A (zh) Linux平台上使用FUSE的文件移动方法
US8595454B1 (en) System and method for caching mapping information for off-host backups
KR20220127076A (ko) 컨트롤러 및 컨트롤러의 동작 방법
WO2016127807A1 (zh) 多副本写入存储设备的方法及存储设备
CN112764668A (zh) 扩展gpu存储器的方法、电子设备和计算机程序产品
JP2013029911A (ja) 制御装置、制御方法およびストレージ装置
CN111158582A (zh) 存储装置和电子装置
TWI674531B (zh) 資料儲存裝置及操作該資料儲存裝置的方法
US9946656B2 (en) Completion packet return based on eviction or flush
KR20220165128A (ko) 메모리 시스템 및 데이터 처리 시스템
KR20240048323A (ko) 자율 주행 데이터 저장 시스템, 자율 주행 데이터 저장 시스템의 동작 방법, 및 시스템의 동작 방법
KR20200106620A (ko) 데이터 저장 장치 및 시스템
KR20160015784A (ko) 데이터 저장 장치 및 그것의 동작 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170529

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170529

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180410

R150 Certificate of patent or registration of utility model

Ref document number: 6324494

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