IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロン テクノロジー, インク.の特許一覧

特許7445368プロセッサによるメモリアクセスのための存続時間
<>
  • 特許-プロセッサによるメモリアクセスのための存続時間 図1
  • 特許-プロセッサによるメモリアクセスのための存続時間 図2
  • 特許-プロセッサによるメモリアクセスのための存続時間 図3
  • 特許-プロセッサによるメモリアクセスのための存続時間 図4
  • 特許-プロセッサによるメモリアクセスのための存続時間 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-28
(45)【発行日】2024-03-07
(54)【発明の名称】プロセッサによるメモリアクセスのための存続時間
(51)【国際特許分類】
   G06F 13/14 20060101AFI20240229BHJP
   G06F 12/06 20060101ALI20240229BHJP
   G06F 13/10 20060101ALI20240229BHJP
   G06F 11/14 20060101ALI20240229BHJP
【FI】
G06F13/14 330C
G06F12/06 550A
G06F13/10 330C
G06F11/14 610
【請求項の数】 17
(21)【出願番号】P 2022528937
(86)(22)【出願日】2020-11-10
(65)【公表番号】
(43)【公表日】2023-01-26
(86)【国際出願番号】 US2020059843
(87)【国際公開番号】W WO2021101757
(87)【国際公開日】2021-05-27
【審査請求日】2022-07-15
(31)【優先権主張番号】16/688,245
(32)【優先日】2019-11-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】エノ ジャスティン エム.
【審査官】松平 英
(56)【参考文献】
【文献】米国特許第08321627(US,B1)
【文献】特開2008-021314(JP,A)
【文献】特開2019-175292(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
11/14
12/00-12/128
13/00-13/18
(57)【特許請求の範囲】
【請求項1】
方法であって、
持続時間を指定するパラメータをプロセッサに格納することと、
前記プロセッサによって、メモリアドレスからアイテムをロードするコマンドをメモリシステムに送信することであって、前記メモリシステムが、メモリアクセスに対してそれぞれ異なる待ち時間を有する複数の構成要素を含み、前記構成要素の一部からのアイテムの取り出しに、前記パラメータで特定された前記持続時間よりも長い期間を要する、ことと、
前記プロセッサによって、前記メモリシステムが、前記コマンドへの応答として、前記持続時間内に前記メモリアドレスから前記プロセッサに前記アイテムを提供できないと判断することと、
前記メモリシステムが、前記持続時間内に前記メモリアドレスから前記プロセッサに前記アイテムを提供できないと判断したことに応えて、前記プロセッサによって、前記プロセッサでの前記コマンドの処理を終了することであって、前記終了することが、前記コマンドを中止する信号を前記メモリシステムに送信することを含む、こと
を含
前記コマンドを中止する前記信号に応えて、前記メモリシステムが、前記複数の構成要素のうちの第1の構成要素から前記複数の構成要素のうちの第2の構成要素に前記アイテムを再配置し、前記第2の構成要素が前記第1の構成要素よりも短い待ち時間を有する、前記方法。
【請求項2】
前記構成要素が、ダイナミックランダムアクセスメモリ、不揮発性ランダムアクセスメモリ、及びフラッシュメモリを含む、請求項に記載の方法。
【請求項3】
前記コマンドを中止する前記信号に基づいて、前記メモリシステムが、前記アイテムに対する所望の待ち時間を特定し、前記所望の待ち時間に基づいて前記第2の構成要素を選択し、前記第2の構成要素に前記メモリアドレスを再マッピングする、請求項に記載の方法。
【請求項4】
前記プロセッサによって、前記コマンドを中止する前記信号に続く少なくとも所定の期間の後に、前記メモリアドレスから前記アイテムをロードする前記コマンドを前記メモリシステムに再送すること、をさらに含み、前記所定の期間が、前記メモリシステムが前記第1の構成要素から前記第2の構成要素に前記メモリアドレスを再マッピングするための期間よりも長くなるように構成される、請求項に記載の方法。
【請求項5】
前記プロセッサによって、前記信号と前記コマンドの前記再送との間の期間中に、前記コマンドに関連付けられたリソースを解放することと、
前記解放されたリソースを使用して前記プロセッサによって、前記コマンドに関連付けられていない1つまたは複数の操作を実行することと
をさらに含む、請求項に記載の方法。
【請求項6】
前記メモリアドレスが第1のメモリアドレスであり、前記方法が、
前記プロセッサによって、前記信号の前記送信と前記コマンドの前記再送との間に、前記第1のメモリアドレスとは異なる第2のメモリアドレスから第2のアイテムをロードする第2のコマンドを前記メモリシステムに送信すること
をさらに含む、請求項に記載の方法。
【請求項7】
方法であって、
メモリシステムによって、メモリアドレスからアイテムをロードするコマンドをプロセッサから受信することであって、前記メモリシステムが、メモリアクセスに対するそれぞれ異なる待ち時間を有する複数の構成要素を含み、前記メモリシステムが、前記複数の構成要素のうちの第1の構成要素に前記メモリアドレスをマッピングする、前記受信することと、
前記メモリシステムによって、前記第1の構成要素でホストされる前記メモリアドレスから前記アイテムを取り出すことであって、前記プロセッサが、持続時間を指定するパラメータを格納し、前記メモリシステムが前記持続時間内に前記メモリアドレスから前記プロセッサに前記アイテムを提供できないと判断したことに応えて、前記コマンドを中止する信号を生成する、前記取り出すことと、
前記メモリシステムによって、前記プロセッサから前記コマンドを中止する信号を受信することと、
前記メモリシステムによって、前記コマンドを中止する前記信号に応えて、前記複数の構成要素のうちの第2の構成要素に前記アイテムを格納することであって、前記第2の構成要素が、前記第1の構成要素よりも短いメモリアクセス待ち時間を有する、前記格納することと
を含む、前記方法。
【請求項8】
前記プロセッサからの前記コマンドの前記受信と前記コマンドを中止する前記プロセッサからの前記信号の前記受信との間のタイムギャップに基づいて、前記メモリシステムによって前記第2の構成要素を選択することをさらに含む、請求項に記載の方法。
【請求項9】
前記構成要素が、ダイナミックランダムアクセスメモリ、不揮発性ランダムアクセスメモリ、及びフラッシュメモリを含む、請求項に記載の方法。
【請求項10】
前記コマンドを中止する前記信号に応えて、前記メモリシステムによって、前記第1の構成要素の前記メモリアドレスのホスティングから前記第2の構成要素の前記メモリアドレスのホスティングへ変更することをさらに含む、請求項に記載の方法。
【請求項11】
前記第1の構成要素の前記メモリアドレスの前記ホスティングの前記第2の構成要素の前記メモリアドレスの前記ホスティングへの前記変更が、
前記メモリシステムによって、前記コマンドを中止する前記信号に基づいて前記アイテムに対する所望の待ち時間を特定することと、
前記メモリシステムによって、前記所望の待ち時間に基づいて前記第2の構成要素を選択することと、
前記メモリシステムによって、前記第2の構成要素に前記メモリアドレスを再マッピングすることと
を含む、請求項10に記載の方法。
【請求項12】
前記メモリシステムによって、前記第2の構成要素での前記アイテムの前記格納の後に、前記メモリアドレスから前記アイテムをロードするための、前記プロセッサから再送された前記コマンドを受信することと、
前記プロセッサから再送された前記コマンドに応えて、前記メモリシステムによって、前記コマンドの前記受信と前記コマンドを中止する前記信号の前記受信との間のタイムギャップよりも短い期間内に前記第2の構成要素から前記アイテムを提供することと
をさらに含む、請求項に記載の方法。
【請求項13】
前記メモリアドレスが第1のメモリアドレスであり、前記方法が、
前記メモリシステムによって、前記第1のメモリアドレスとは異なる第2のメモリアドレスから第2のアイテムをロードするための、前記プロセッサから送信される第2のコマンドを受信することであって、前記第2のコマンドが前記信号の前記送信と前記コマンドの前記再送との間に受信される、前記受信することと、
前記メモリシステムによって、前記第2のメモリアドレスから前記プロセッサに前記第2のアイテムを提供することと
をさらに含む、請求項12に記載の方法。
【請求項14】
前記第2のメモリアドレスから前記プロセッサへの前記第2のアイテムの前記提供が、前記第2の構成要素への前記アイテムの前記格納と少なくとも部分的に同時である、請求項13に記載の方法。
【請求項15】
続時間を指定するパラメータを格納するように構成されたレジスタ、命令を実行するように構成された複数の実行ユニットと、メモリコントローラと、を有するプロセッサと、
メモリアクセスに対するそれぞれ異なる待ち時間を有する複数の構成要素を有するメモリシステムと、
前記メモリシステムと前記メモリコントローラとの間で結合されたメモリバスであって、前記プロセッサがアイテムをロードする命令を実行するとき、前記メモリコントローラが、メモリアドレスからアイテムをロードするコマンドを前記メモリシステムに送信する、前記メモリバスと
を備えるシステムであって
前記メモリシステムが、前記コマンドへの応答として、前記持続時間内に前記メモリアドレスから前記プロセッサに前記アイテムを提供できないと判断したことに応えて、前記プロセッサが、前記命令の実行を中止するように構成され、前記メモリコントローラが、前記メモリバスを介して、前記コマンドを中止する信号を送信するように構成され、
前記コマンドを中止する前記信号に応えて、前記メモリシステムが、前記複数の構成要素のうちの第1の構成要素での前記メモリアドレスのホスティングを、前記複数の構成要素のうちの第2の構成要素での前記メモリアドレスのホスティングに変更するように構成され、前記第2の構成要素が前記第1の構成要素よりも短いメモリアクセス待ち時間を有する、
前記システム。
【請求項16】
前記複数の構成要素が、ダイナミックランダムアクセスメモリ、不揮発性ランダムアクセスメモリ、及びフラッシュメモリを含む、請求項15に記載のシステム。
【請求項17】
前記第2の構成要素が、前記メモリシステムでの前記コマンドの受信と、前記コマンドを中止する前記信号の前記メモリシステムでの受信との間のタイムギャップに基づいて選択される、請求項16に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、2019年11月19日に出願され、「TIME TO LIVE FOR MEMORY ACCESS BY PROCESSORS」と題され、その開示全体が参照により本明細書に組み込まれる米国特許出願公開第16/688,245号に対する優先権を主張する。
【0002】
本明細書に開示される少なくともいくつかの実施形態は、一般にプロセッサ及びメモリシステムに関し、より具体的にはプロセッサによるメモリアクセスのための存続時間に関するが、これに限定されない。
【背景技術】
【0003】
メモリサブシステムは、データを格納する1つまたは複数のメモリ構成要素を含むことができる。メモリサブシステムは、ソリッドステートドライブ(SSD)またはハードディスクドライブ(HDD)などのデータストレージシステムであり得る。メモリサブシステムは、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SODIMM)、または不揮発性デュアルインラインメモリモジュール(NVDIMM)などのメモリモジュールであり得る。メモリ構成要素は、例えば、不揮発性メモリ構成要素及び揮発性メモリ構成要素であり得る。メモリ構成要素の例には、メモリ集積回路が含まれる。一部のメモリ集積回路は揮発性であり、格納されたデータを維持するために電力を必要とする。一部のメモリ集積回路は不揮発性であり、電源が入っていない場合でも格納されたデータを保持できる。不揮発性メモリの例は、フラッシュメモリ、読み取り専用メモリ(ROM)、プログラム可能読み取り専用メモリ(PROM)、消去可能プログラム可能読み取り専用メモリ(EPROM)、及び電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)のメモリなどを含む。揮発性メモリの例は、ダイナミックランダムアクセスメモリ(DRAM)及びスタティックランダムアクセスメモリ(SRAM)を含む。一般に、ホストシステムは、メモリサブシステムを利用して、メモリ構成要素にデータを格納し、メモリ構成要素からデータを取り出すことができる。
【0004】
例えば、コンピュータは、ホストシステム、及びホストシステムに接続された1つまたは複数のメモリサブシステムを含むことができる。ホストシステムは、データ及び命令を格納及び/または取り出すために1つまたは複数のメモリサブシステムと通信する中央処理装置(CPU)を有することができる。コンピュータの命令は、オペレーティングシステム、デバイスドライバ、及びアプリケーションプログラムを含むことができる。オペレーティングシステムは、コンピュータ内のリソースを管理し、メモリ割り当て及びリソースのタイムシェアリングなどのアプリケーションプログラムに共通のサービスを提供する。デバイスドライバは、コンピュータ内の特定のタイプのデバイスを操作または制御し、オペレーティングシステムは、デバイスドライバを使用して、そのタイプのデバイスによって提供されるリソース及び/またはサービスを提供する。コンピュータシステムの中央処理装置(CPU)は、オペレーティングシステム及びデバイスドライバを実行して、アプリケーションプログラムにサービス及び/またはリソースを提供することができる。中央処理装置(CPU)は、サービス及び/またはリソースを使用するアプリケーションプログラムを実行することができる。例えば、コンピュータシステムのあるタイプのアプリケーションを実装するアプリケーションプログラムは、中央処理装置(CPU)に、メモリサブシステムのメモリ構成要素にデータを格納し、メモリ構成要素からデータを取り出すように指示できる。
【0005】
ホストシステムは、NVMエクスプレス(NVMe)とも呼ばれる不揮発性メモリホストコントローラインターフェース仕様(NVMHCI)などの事前定義された通信プロトコルに従ってメモリサブシステムと通信することができ、NVMeは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIエクスプレスまたはPCIe)バスを介して不揮発性メモリにアクセスするための論理デバイスインターフェースプロトコルを指定する。この通信プロトコルに従って、ホストシステムは、異なるタイプのコマンドをメモリサブシステムに送信することができ、メモリサブシステムはコマンドを実行し、コマンドに対する応答を提供することができる。一部のコマンドは、コマンドに指定されたアドレスにデータアイテムを格納するように、または読み取りコマンド及び書き込みコマンドなどのコマンドに指定されたアドレスからデータアイテムを取り出すようにメモリサブシステムに指示する。ネームスペースを管理するコマンド、ネームスペースをアタッチするコマンド、入力/出力の提出待ち行列または完了待ち行列を作成するコマンド、入力/出力の提出待ち行列または完了待ち行列を削除するコマンド、ファームウェア管理のコマンドなどの一部のコマンドは、メモリサブシステムのインフラストラクチャ及び/または管理タスクを管理する。
【0006】
実施形態を、添付の図面の図において、限定ではなく一例として例示する。同様の参照は、同様の要素を示している。
【図面の簡単な説明】
【0007】
図1】メモリサブシステムにアクセスするための存続時間を制御するプロセッサを有するシステムを示す。
図2】プロセッサがメモリサブシステムからデータをロードするための存続時間を実装する方法を示す。
図3】プロセッサがメモリサブシステムからデータをロードするための存続時間を実装する方法を示す。
図4】存続時間技術を実装することができる例示的なコンピューティングシステムを示す。
図5】本開示の実施形態が動作することができる例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0008】
本開示の少なくともいくつかの態様は、プロセッサがメモリデバイスからデータをロードするための存続時間を対象とする。
【0009】
例えば、プロセッサメモリシステムからデータをロードするための所望の存続時間を示すためのパラメータを、プロセッサに格納することができる。プロセッサが、メモリアドレスからアイテムをロードするロードコマンドをメモリシステムに送信した後、特にメモリシステムが、メモリアクセスで異なる待ち時間を有する複数のメモリ構成要素を有するとき、メモリシステムは、パラメータで指定された所望の存続時間内にメモリアドレスからデータをプロセッサに提供できる場合もあれば、できない場合もある。プロセッサが、メモリシステムが存続時間パラメータで指定された持続時間内にメモリアドレスからプロセッサにアイテムを提供できないと判断した場合、プロセッサは、低速のメモリ構成要素でのロード操作の完了を待機しなければならない代わりに、プロセッサでのコマンドのその処理を終了し、コマンドを中止する信号をメモリシステムに送信することができる。
【0010】
一部の実装では、コマンドを中止する信号によって、メモリシステムは、メモリアドレスのデータホスティングを調整する。例えば、メモリアドレスは、メモリシステム内の低速のメモリ構成要素から高速のメモリ構成要素に移動することができる。例えば、ロードコマンドに指定されたメモリアドレスのデータアイテムは、低速のメモリ構成要素から高速のメモリ構成要素に移動することができ、メモリアドレスは、低速のメモリ構成要素から高速のメモリ構成要素に再マッピングすることができる。例えば、ロードコマンドに指定されたメモリアドレスのデータアイテムは、低速のメモリ構成要素から取り出し、高速のメモリ構成要素にキャッシュすることができる。メモリシステムが、異なるアクセス速度の2層を超えるメモリ構成要素を有するとき、メモリシステムは、プロセッサの存続期間を示す、ロードコマンドとコマンドを中止する信号との間のタイムギャップに基づいて、メモリアドレスをホストするための高速のメモリ構成要素を選択できる。高速のメモリ構成要素は、プロセッサの所望の存続時間を満たすために選択できる。コマンドを中止する信号に続き、メモリシステムがメモリアドレスのデータホスティングを調整するために十分な少なくとも所定の期間の後に、プロセッサは、メモリアドレスからアイテムをロードするコマンドをメモリシステムに再送することができる。メモリシステムは、プロセッサの所望の存続時間を満たすためにメモリアドレスのデータホスティングを調整したので、メモリシステムはいまプロセッサの所望の存続時間内にメモリアドレスからプロセッサにデータを提供することができる。コマンドを中止する信号とコマンドの再送との間に、プロセッサはコマンドに関連付けられたリソースを解放することができ、その結果、解放されたリソースは他の操作を実行するために使用できる。
【0011】
例えば、メモリシステムは、異なるメモリアクセス測度を有するNANDフラッシュ、NVRAM、及びDRAMを有することができる。メモリシステムがより低速のメモリ(例えば、NANDフラッシュ)にメモリアドレスをマッピングし、プロセッサが、存続時間パラメータに従ってロードコマンドを中止した場合、メモリシステムは、より低速のメモリ(例えば、NANDフラッシュ)からより高速のメモリ(例えば、DRAM、NVRAM)にアイテム及びメモリアドレスを再配置することができ、その結果、プロセッサがロードコマンドを再送すると、メモリシステムは、プロセッサの所望の存続時間内にメモリアドレスからアイテムを提供することができる。
【0012】
任意選択で、コマンドを中止する信号とコマンドの再送との間に、プロセッサは、メモリシステムから他のアイテムをロードするために他のコマンドをメモリシステムに送信することができる。存続時間要件を伴うそのようなメモリロード操作は、プロセッサに、過度な時間待機する必要なく、特定の重要ではないデータの処理を(例えば、一時的に)任意選択で省略または延期する柔軟性を提供する。代わりに、要求されたデータの処理が必要または(例えば、最小の遅延で)望ましいとき、プロセッサは、任意選択で存続時間パラメータを緩和できる。
【0013】
この手法は、プロセッサが、異なる速度を有するメモリにアクセスする際のリソースの使用の効率を向上させることができる。
【0014】
図1は、メモリサブシステム110からデータをロードするために、プロセッサ100に存続時間パラメータ109を格納するレジスタ101を有するシステムを示す。図1では、メモリサブシステム110は、ダイナミックランダムアクセスメモリ(DRAM)117、不揮発性ランダムアクセスメモリ(NVRAM)119、及び/またはNANDフラッシュメモリ(111)などの異なるタイプのメモリを有する。メモリシステム110の異なるタイプのメモリは、メモリアドレスを指定するロードコマンド107を使用してアドレス指定することができる。一部の実装では、存続時間パラメータ/要件109は、プロセッサ100(例えば、システムオンチップ(SoC)または中央処理装置(CPU))に格納/指定される。例えば、レジスタ101は、存続時間パラメータ/要件109を格納するために使用することができ、レジスタ101の内容は、メモリサブシステム110からプロセッサ100に指定されたメモリアドレスにあるデータを提供する際にメモリサブシステム110にどのくらい多くの時間があるのかの存続時間要件109を調整するために更新できる。
【0015】
例えば、プロセッサ100は、命令、オペランド、及び結果を保持するために1つまたは複数のレジスタを有することができる。プロセッサ100は、命令セットに定義された事前定義の操作を実行するために1つまたは複数の実行ユニット(例えば、103)をさらに有することができる。ロード命令の実行に応えて、プロセッサ100のメモリコントローラ105は、ロードコマンド107を生成し、ロードコマンドをメモリサブシステム110に送信することができる。それに応じて、メモリサブシステム110は、メモリ構成要素(例えば、117、119、111)の1つからデータを取り出し、メモリバス113を介してプロセッサ100にデータを提供する。
【0016】
例えば、ロードコマンドのメモリアドレスは、メモリサブシステム110によって低速のメモリ(例えば、NANDフラッシュ111)に最初にマッピングすることができる。所望の存続時間109は、低速のメモリ(例えば、NANDフラッシュ111)からデータを取り出すために必要とされる時間よりも短い可能性がある。したがって、メモリサブシステム110がメモリバス113を介してメモリコントローラ105にデータを提供できる前に、プロセッサ100は、メモリサブシステム110が、プロセッサの存続時間109内にデータを利用可能にすることができなかったと判断する。それに応じて、プロセッサ100は、命令及び/またはロードコマンドの実行を中止することができる。例えば、メモリコントローラ105は、メモリバス113を介して、コマンド107の実行を中止する信号をメモリサブシステム110に送信することができる。
【0017】
一部の実装では、プロセッサ100からコマンド107を中止する信号を受信したことに応えて、メモリサブシステム110は、より低速のメモリ(例えば、NANDフラッシュ111)でのメモリアドレスのホスティングを、より高速のメモリ(例えば、DRAM117、NVRAM119)でのメモリアドレスのホスティングに変更するように構成できる。好ましくは、より高速のメモリ(例えば、DRAM117、NVRAM119)は、より低速のメモリ(例えば、NANDフラッシュ111)よりも短いメモリアクセス待ち時間を有し、ロードコマンド107とコマンド107を中止する信号との間のタイムギャップによって示される存続時間109を満たすことができる。
【0018】
例えば、中止信号によって、メモリサブシステム110は、より低速のメモリ(例えば、NANDフラッシュ111)からのデータのロードを完了し、メモリバス113を介してメモリコントローラ105にデータを提供する代わりに、より高速のメモリ(例えば、DRAM117、NVRAM119)にロードされたデータを格納することができる(例えば、より高速のメモリにデータをバッファリングするために、より高速のメモリにデータをキャッシュするために、またはより低速のメモリからより高速のメモリにメモリアドレスのページをスワップすることによってより高速のメモリにメモリアドレスを再マッピングするために)。
【0019】
例えば、コマンド107を中止する信号に基づいて、メモリサブシステム110は、アイテムの所望の待ち時間を特定し、所望の待ち時間に基づいてより高速の構成要素(例えば、DRAM107、NVRAM109)を選択し、より高速の構成要素(例えば、DRAM107、NVRAM109)にメモリアドレスを再マッピングすることができる。
【0020】
一部の実装では、メモリサブシステム110は、プロセッサ100の現在の存続時間109を示す、コマンド107の受信とコマンド107を中止する信号の受信との間のタイムギャップに基づいて、より高速の構成要素(例えば、DRAM117、NVRAM119)を選択できる。
【0021】
より高速の構成要素(例えば、DRAM117、NVRAM119)は、メモリアドレスをホストまたはキャッシュするために選択することができ、その結果、より高速のメモリ構成要素(例えば、DRAM117、NVRAM119)へのデータアイテムの格納後に、メモリサブシステム110は、同じメモリアドレスからアイテムをロードするための、プロセッサ100によって再送されたコマンド107を受信すると、メモリサブシステム110は、コマンド107の以前の受信と以前に送信されたコマンド107を中止する信号の受信との間のタイムギャップよりも短い期間内に、より高速の構成要素からアイテムを提供することができる。
【0022】
メモリサブシステム110で実行されるためにプロセッサ100の存続時間109よりも長い時間がかかるロードコマンド107が中止されると、プロセッサ100は、他の命令の実行のために関連するリソース(例えば、メモリコントローラ105)を解放することができる。例えば、メモリコントローラ105は、別のロード命令の実行中に、メモリサブシステム110のために第2のコマンドを生成するために使用することができ、メモリサブシステム110は、第2のメモリアドレスから第2のアイテムをロードするための、プロセッサ100から送信される第2のコマンドを受信することができる。第2のメモリアドレスからプロセッサ100に第2のアイテムを提供する第2のコマンドの実行後、プロセッサは、以前に中止された第1のコマンドを再送することができ、第2のコマンドは、第1のコマンドを中止する信号の送信と、第1のコマンドの再送との間に、メモリサブシステム110で受信され実行されることができる。
【0023】
任意選択で、メモリサブシステム110が、存続時間109に相当する持続時間内にメモリアドレスからプロセッサ100にアイテムを提供できないとき、プロセッサ100は、データ/命令が重要ではない場合にメモリアドレスでのデータ/命令の処理を任意選択で延期できる。したがって、プロセッサは、メモリサブシステム110が、存続時間109に従ってデータ/命令を利用可能にするための準備を行う可能性があることを期待して、一定期間後にロードコマンド107を再発行できる。例えば、メモリサブシステム110は、メモリサブシステム110内のメモリユニットの物理メモリアドレスにメモリアドレスをマッピングするメモリアドレスマップをバッファリング、キャッシュ、及び/または変更することによって準備を行うことができる。
【0024】
図2及び図3は、プロセッサがメモリサブシステムからデータをロードするための存続時間を実装する方法を示す。例えば、図2及び図3の方法は、図1のシステムにおいて、及び一般に処理ロジックによって実行することができ、処理ロジックは、ハードウェア(例えば、処理装置、回路、専用論理、プログラム可能論理、マイクロコード、デバイスのハードウェア、集積回路)、ソフトウェア(例えば、処理装置で実行するもしくは実行される命令)、またはそれらの組み合わせを含むことができる。特定のシーケンスまたは順序で示されているが、別段の指定がない限り、プロセスの順序は変更することができる。したがって、図示された実施形態は例としてのみ理解されるべきであり、図示されたプロセスは異なる順序で実行することができ、いくつかのプロセスは並行して実行することができる。さらに、様々な実施形態では、1つまたは複数のプロセスを省略することができる。したがって、すべての実施形態ですべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
【0025】
ブロック201で、プロセッサ100は、持続時間を指定する存続時間パラメータ109を格納することができる。例えば、存続時間パラメータ109は、プロセッサ100のレジスタ101に格納することができる。
【0026】
ブロック203で、プロセッサ100は、メモリアドレスからアイテムをロードするコマンド107をメモリサブシステム110に送信することができる。例えば、プロセッサ100は、命令、オペランド、及び結果を保持するためにレジスタを有することができる。一部の実装では、プロセッサ100は、命令セットに定義された事前定義の操作を実行するために実行ユニット103を有することができる。レジスタのロード命令が実行されると、メモリコントローラ105は、ロード命令の論理アドレスを物理メモリアドレスに変換して、ロードコマンド107を生成することができる。メモリコントローラ105は、メモリバス113を介してメモリサブシステム110にロードコマンド107を送信し、メモリバス113の事前定義の通信プロトコルに従って、メモリバス113からの応答を待機する。
【0027】
ブロック205で、プロセッサ100は、メモリシステム110が、コマンド107への応答として、持続時間内にメモリアドレスからプロセッサにアイテムを提供できないと判断することができる。例えば、メモリアドレスは、メモリシステム110の複数のメモリ構成要素117~111の中のメモリ構成要素(例えば、117119、または111)にマッピングすることができる。データのメモリアドレスが、現在、高速タイプのメモリデバイス(例えば、DRAM117NVRAM119)にマッピングされている場合、データは持続時間内にプロセッサ1000に提供することができる。しかしながら、データのメモリアドレスが、現在、低速タイプのメモリデバイス(例えば、NANDフラッシュ111)にある場合、メモリサブシステム110は、持続時間内にプロセッサにデータを提供できない可能性がある。
【0028】
ブロック207で、プロセッサ110が、メモリアドレスを介して特定されたアイテムをプロセッサに提供することに、プロセッサのパラメータ109に指定された持続時間よりも長くかかると判断すると、プロセッサ100は、プロセッサでのコマンドの処理を終了することができる。例えば、プロセッサ100が、指定された時間でデータを利用可能にすることができないと判断すると、プロセッサ100は操作を終了することができる。
【0029】
プロセッサ100が、メモリアドレス103を介して特定されたアイテムをプロセッサに提供することに持続時間よりも長くかかると判断した後、図3のブロック301で、プロセッサ100は、コマンド107を中止する信号をメモリサブシステム110に送信することができる。
【0030】
ブロック303で、プロセッサ100は、信号とコマンドの再送との間の期間中に、コマンド107からリソース(例えば、メモリコントローラ)を解放することができる。
【0031】
ブロック305で、プロセッサ100は、上記の解放されたリソースを使用して、コマンド107に関連付けられていない1つまたは複数の操作を実行することができる。例えば、プロセッサ100は、メモリサブシステム110の高速メモリ(例えば、117または119)でホストされるデータアイテムをロードする1つまたは複数の命令を含む、さらなる命令を実行することができる。
【0032】
例えば、中止されたコマンドは、第1のメモリアドレスからデータを取り出すための第1のコマンドである。ブロック307で、プロセッサ100は、任意選択で、第1のメモリアドレスとは異なる第2のメモリアドレスから第2のアイテムをロードする第2のコマンドをメモリシステムに送信することができる。このようにして、プロセッサは、低速のメモリでのロード操作(例えば、第1のコマンド)の完了を待機しなければならない代わりに、他の操作(例えば、第2のコマンド)を処理することができる。
【0033】
ブロック309で、プロセッサ100は、コマンドを中止する信号に続く少なくとも所定の期間の後に、メモリアドレスからアイテムをロードするコマンドをメモリシステムに再送することができる。一部の実装では、所定の期間は、メモリシステムが第1の構成要素から第2の構成要素にメモリアドレスを再マッピングするための期間よりも長くなるように構成される。
【0034】
図4は、存続時間技術を実装することができる例示的なコンピューティングシステムを示す。例えば、図1の存続時間要件109は、メモリサブシステム410がロードコマンド107を受信するのと、メモリサブシステム410がロードコマンド107に指定されたメモリアドレスで取り出されたデータを提供するのとの間の期間に、プロセッサ420内で課すことができる。
【0035】
一般に、メモリサブシステムは、「メモリデバイス」と呼ばれる場合もある。メモリサブシステムの一例は、メモリバスを介して中央処理装置(CPU)に接続されているメモリモジュールである。メモリモジュールの例は、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、または不揮発性デュアルインラインメモリモジュール(NVDIMM)などを含む。
【0036】
メモリサブシステムの別の例は、周辺機器の相互接続(例えば、入力/出力バス、ストレージエリアネットワーク)を介して中央処理装置(CPU)に接続されているデータメモリ/システムである。メモリの例は、ソリッドステートドライブ(SSD)、フラッシュドライブ、ユニバーサルシリアルバス(USB)フラッシュドライブ、及びハードディスクドライブ(HDD)を含む。
【0037】
いくつかの実施形態では、メモリサブシステムは、メモリ機能とストレージ機能の両方を提供するハイブリッドメモリ/ストレージサブシステムである。一般に、ホストシステムは、1つまたは複数のメモリ構成要素を含むメモリサブシステムを利用することができる。ホストシステムは、メモリサブシステムに格納されるデータを提供することができ、メモリサブシステムからのデータの取り出しを要求することができる。
【0038】
メモリサブシステム410は、メディアユニット/メモリ構成要素409A~409Nなどの媒体を含むことができる。一般に、メディアユニット/メモリ構成要素409A~409Nは、揮発性メモリ構成要素、不揮発性メモリ構成要素、またはこのようなものの組み合わせであり得る。メディアユニット/メモリ構成要素409A~409Nのそれぞれは、他のメディアユニット/メモリ構成要素409A~409Nの操作とは関係なく、新しいデータを格納する、記録する、プログラムする、書き込む、またはコミットするための操作を実行することができる。したがって、メディアユニット/メモリ構成要素409A~409Nは、書き込みコマンドを実行する際に並行して使用することができる。いくつかの実施形態では、メモリサブシステムは、ストレージシステムである。ストレージシステムの例は、ソリッドステートドライブ(SSD)である。いくつかの実施形態では、メモリサブシステム410はメモリモジュールである。メモリモジュールの例は、DIMM、NVDIMM、及びNVDIMM-Pを含む。いくつかの実施形態では、メモリサブシステム410は、ハイブリッドメモリ/ストレージサブシステムである。一般に、コンピューティング環境は、メモリサブシステム410を使用するホストシステム420を含むことができる。例えば、ホストシステム420は、メモリサブシステム410にデータを書き込み、メモリサブシステム410からデータを読み取ることができる。
【0039】
ホストシステム420は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイスなどのコンピューティングデバイス、またはメモリ及び処理装置を含むそのようなコンピューティングデバイスであり得る。ホストシステム420がメモリサブシステム410からデータを読み取る、またはメモリサブシステム410にデータを書き込むことができるように、ホストシステム420はメモリサブシステム410を含む、またはメモリサブシステム410に結合することができる。ホストシステム420は、物理ホストインターフェースを介してメモリサブシステム410に結合することができる。本明細書で使用する場合、「結合する」とは、概して、構成要素間の接続を指し、これは、電気、光、磁気などの接続を含む、有線であろうと無線であろうと、間接的な通信接続または直接的な通信接続(例えば、介入構成要素無し)であり得る。物理ホストインターフェースの例は、シリアルアドバンストテクノロジーアタッチメント(SATA)インターフェース、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、ファイバーチャネル、シリアルアタッチドSCSI(SAS)、ダブルデータレート(DDR)メモリバスなどを含むが、これらに限定されない。物理ホストインターフェースを使用して、ホストシステム420とメモリサブシステム410の間でデータを送信することができる。ホストシステム420は、メモリサブシステム410がPCIeインターフェースによってホストシステム420と結合されているときに、NVMエクスプレス(NVMe)インターフェースをさらに利用して、メモリ構成要素409A~409Nにアクセスすることができる。物理ホストインターフェースは、メモリサブシステム410とホストシステム420との間で制御信号、アドレス信号、データ信号、及び他の信号を渡すためのインターフェースを提供することができる。図4は、例としてメモリサブシステム410を示している。一般に、ホストシステム420は、同じ通信接続、複数の別個の通信接続、及び/または通信接続の組み合わせを介して、複数のメモリサブシステムにアクセスすることができる。
【0040】
ホストシステム420は、処理装置418及びコントローラ416を含む。ホストシステム420の処理装置418は、例えば、マイクロプロセッサ、中央処理装置(CPU)、プロセッサの処理コア、実行ユニットなどであり得る。いくつかの例では、コントローラ416は、メモリコントローラ、メモリ管理ユニット、及び/またはイニシエータと呼ばれる場合がある。一例では、コントローラ416は、ホストシステム420とメモリサブシステム410との間で結合されたバスを介した通信を制御する。
【0041】
一般に、コントローラ416は、メモリ構成要素409A~409Nへの所望のアクセスのために、コマンドまたは要求をメモリサブシステム410に送信することができる。コントローラ416は、メモリサブシステム410と通信するためのインターフェース回路をさらに含むことができる。インターフェース回路は、メモリサブシステム410から受信した応答をホストシステム420のための情報に変換することができる。
【0042】
ホストシステム420のコントローラ416は、メモリサブシステム410のコントローラ415と通信して、メモリ構成要素409A~409Nでのデータの読み取り、データの書き込み、またはデータの消去などの操作及び他のそのような操作を実行することができる。いくつかの例では、コントローラ416は、処理装置418の同じパッケージ内に統合される。他の例では、コントローラ416は、処理装置418のパッケージとは別個である。コントローラ416及び/または処理装置418は、1つまたは複数の集積回路及び/または個別の構成要素、バッファメモリ、キャッシュメモリ、またはそれらの組み合わせなどのハードウェアを含むことができる。コントローラ416及び/または処理装置418は、マイクロコントローラ、特殊目的の論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、または別の適切なプロセッサであり得る。
【0043】
一般に、メディアユニット/メモリ構成要素409A~409Nは、様々な異なるタイプの不揮発性メモリ構成要素及び/または揮発性メモリ構成要素の任意の組み合わせを含むことができる。不揮発性メモリ構成要素の例は、否定論理積(NAND)タイプのフラッシュメモリを含む。メモリ構成要素409A~409Nのそれぞれは、シングルレベルセル(SLC)またはマルチレベルセル(MLC)(例えば、トリプルレベルセル(TLC)またはクワッドレベルセル(QLC))などのメモリセルの1つまたは複数のアレイを含むことができる。いくつかの実施形態では、特定のメモリ構成要素は、メモリセルのSLC部分とMLC部分の両方を含むことができる。メモリセルのそれぞれは、ホストタシステム420によって使用されるデータの1つまたは複数のビット(例えば、データブロック)を格納することができる。NANDタイプのフラッシュメモリなどの不揮発性メモリ構成要素が説明されているが、メモリ構成要素409A~409Nは、揮発性メモリなどの他の任意のタイプのメモリに基づく場合がある。いくつかの実施形態では、メモリ構成要素409A~409Nは、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、同期ダイナミックランダムアクセスメモリ(SDRAM)、位相変化メモリ(PCM)、磁気ランダムアクセスメモリ(MRAM)、スピン注入磁化反転(STT)MRAM、強誘電体ランダムアクセスメモリ(FeTRAM)、強誘電体RAM(FeRAM)、導電性ブリッジRAM(CBRAM)、抵抗性ランダムアクセスメモリ(RRAM)、酸化物ベースのRRAM(OxRAM)、否定論理和(NOR)フラッシュメモリ、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)、ナノワイヤベースの不揮発性メモリ、メモリスタ技術を組み込んだメモリ、及び不揮発性メモリセルのクロスポイントアレイであり得るが、これらに限定されない。不揮発性メモリのクロスポイントアレイは、スタック可能なクロスグリッドデータアクセスアレイと組み合わせて、バルク抵抗の変化に基づいてビットストレージを実行することができる。さらに、多くのフラッシュベースのメモリとは対照的に、クロスポイント不揮発性メモリは、不揮発性メモリセルを事前に消去せずに不揮発性メモリセルをプログラムできるインプレース書き込み操作を実行することができる。さらに、メモリ構成要素409A~409Nのメモリセルは、データを格納するために使用されるメモリ構成要素のユニットを参照することができるメモリページまたはデータブロックとしてグループ化することができる。
【0044】
メモリサブシステム110のコントローラ415は、メモリ構成要素409A~409Nと通信して、メモリ構成要素409A~409Nでのデータの読み取り、データの書き込み、またはデータの消去などの操作及び他のそのような操作を実行することができる(例えば、コントローラ416によってコマンドバスでスケジュールされたコマンドに応えて)。コントローラ415は、1つまたは複数の集積回路及び/または個別の構成要素、バッファメモリ、またはそれらの組み合わせなどのハードウェアを含むことができる。コントローラ415は、マイクロコントローラ、特殊目的の論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、または別の適切なプロセッサであり得る。コントローラ415は、ローカルメモリ419に格納された命令を実行するように構成された処理装置417(プロセッサ)を含むことができる。図示の例では、コントローラ415のローカルメモリ419は、様々なプロセス、操作、論理フロー、及びメモリサブシステム410とホストシステム420との間の通信の処理を含む、メモリサブシステム410の操作を制御するルーチンを実行するための命令を格納するように構成された埋め込みメモリを含む。いくつかの実施形態では、ローカルメモリ419は、メモリポインタ、フェッチされたデータなどを格納するメモリレジスタを含むことができる。ローカルメモリ419はまた、マイクロコードを格納するための読み取り専用メモリ(ROM)を含むことができる。図4の例示的なメモリサブシステム410は、コントローラ415を含むとして示されているが、本開示の別の実施形態では、メモリサブシステム410は、コントローラ415を含まなくてもよく、代わりに、外部制御(例えば、外部ホストによって、またはメモリサブシステムとは別個のプロセッサまたはコントローラによって提供される)に依存する場合がある。
【0045】
一般に、コントローラ415は、ホストシステム420からコマンドまたは操作を受信することができ、コマンドまたは操作を、メモリ構成要素109A~409Nへの所望のアクセスを達成するための命令または適切なコマンドに変換することができる。コントローラ415は、ウェアレベリング操作、ガベージコレクション操作、エラー検出及びエラー訂正コード(ECC)操作、暗号化操作、キャッシュ操作、及び論理ブロックアドレスと物理ブロックアドレスとの間のアドレス変換などの他の操作を担うことができ、これらは、メモリ構成要素409A~409Nに関連付けられている。コントローラ415は、物理ホストインターフェースを介してホストシステム420と通信するためのホストインターフェース回路をさらに含むことができる。ホストトインターフェース回路は、ホストシステムから受信したコマンドをメモリ構成要素409A~409Nにアクセスするコマンド命令に変換し、メモリ構成要素409A~409Nに関連付けられた応答をホストシステム420のための情報に変換することができる。
【0046】
メモリサブシステム410はまた、図示されていない追加の回路または構成要素を含むことができる。いくつかの実施形態では、メモリサブシステム110は、キャッシュまたはバッファ(例えば、DRAMまたはSRAM)、及びコントローラ415からアドレスを受信し、アドレスをデコードしてメモリ構成要素409A~409Nにアクセスできるアドレス回路(例えば、行デコーダと列デコーダ)を含むことができる。
【0047】
図5は、コンピュータシステム500の例示的なマシンを示しており、その中で、マシンに、本明細書で説明される方法のいずれか1つまたは複数を実行させるための命令のセットを実行することができる。
【0048】
例えば、存続時間要件を実装するように構成された、及び/または存続時間要件に従って応答を実装するように構成された操作の少なくともいくつかは、データ転送マネージャ513として格納された命令を使用して、実装することができる。
【0049】
いくつかの実施形態では、コンピュータシステム500は、プロセッサ(例えば、図5のプロセッサ502)を含む、それに結合される、もしくはそれを利用するホストシステム(例えば、図4のホストシステム420)に対応する場合がある、またはデータ転送マネージャ513の操作を実行するために使用することができる(例えば、図1図4を参照して説明した操作を実行する命令を実行するために)。代替の実施形態では、マシンを、LAN、イントラネット、エキストラネット、及び/またはインターネット内の他のマシンに接続する(例えば、ネットワーク接続する)ことができる。マシンは、クライアントサーバネットワーク環境内のサーバまたはクライアントマシンの機能で、ピアツーピア(または分散)ネットワーク環境内のピアマシンとして、またはクラウドコンピューティングインフラストラクチャまたは環境内のサーバまたはクライアントマシンとして動作することができる。
【0050】
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンによって講じられる処置を指定する命令のセットを(連続してまたは別の方法で)実行できる任意のマシンであり得る。さらに、単一のマシンが示されているが、用語「マシン」はまた、本明細書で説明される方法の任意の1つまたは複数を実行するために、個々でまたは共同して命令の1つのセット(または複数のセット)を実行するマシンの任意の集まりを含むと解釈されるものとする。
【0051】
例示的なコンピュータシステム500は、処理装置502、メインメモリ504(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、例えばシンクロナスDRAM(SDRAM)またはラムバスDRAM(RDRAM)、スタティックランダムアクセスメモリ(SRAM)など)、及びデータストレージシステム518を含んでおり、これらは、(複数のバスを含む場合がある)バス530を介して互いに通信する。
【0052】
処理装置502は、マイクロプロセッサ、中央処理装置などの1つまたは複数の汎用処理装置を表す。より具体的には、処理装置は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実装するプロセッサ、または命令セットの組み合わせを実装するプロセッサとすることができる。処理装置502はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つまたは複数の専用処理装置であってもよい。処理装置502は、本明細書で説明される操作及びステップを遂行するための命令526を実行するように構成される。コンピュータシステム500は、ネットワーク520を介して通信するためのネットワークインターフェースデバイス508をさらに含むことができる。
【0053】
データストレージシステム518は、本明細書で説明される方法または機能のいずれか1つまたは複数を具現化する1つまたは複数の命令セット526またはソフトウェアが格納されたマシン可読記憶媒体524(コンピュータ可読媒体としても知られている)を含むことができる。命令526はまた、マシン可読記憶媒体を構成するコンピュータシステム500、メインメモリ504、及び処理装置502がそれを実行する間に、メインメモリ504内及び/または処理装置502内に完全にまたは少なくとも部分的に存在することができる。マシン可読記憶媒体524、データストレージシステム518、及び/またはメインメモリ504は、図のメモリサブシステム410に対応する場合がある。
【0054】
一実施形態では、命令526は、データ転送マネージャ513に対応する機能を実装する命令を含む(図1図4を参照して説明された操作を実行するための命令を実行するために)。マシン可読記憶媒体524は、単一の媒体であると例示的な実施形態で示されているが、用語「マシン可読記憶媒体」は、1つまたは複数の命令のセットを格納する単一の媒体または複数の媒体を含むと解釈されるべきである。用語「マシン可読記憶媒体」はまた、マシンが実行するための命令のセットを格納またはエンコードすることができ、本開示の方法のいずれか1つまたは複数をマシンに行わせる任意の媒体を含むと解釈されるものとする。したがって、用語「マシン可読記憶媒体」は、ソリッドステートメモリ、光学媒体、及び磁気媒体を含むが、これらに限定されないと解釈されるものとする。
【0055】
先行する詳細な説明の一部は、アルゴリズム及びコンピュータメモリ内のデータビットに対する操作の記号表現の観点から提示されている。このようなアルゴリズムの説明及び表現は、その働きの趣旨を当業者に最も効果的に伝えるためにデータ処理技術において当業者が用いる方法である。アルゴリズムはここでは、及び全般的に、望ましい結果に至る自己矛盾のない動作順序であると考えられる。動作は、物理量の物理的な操作を必要とするものである。通常、必ずしもではないが、これらの量は格納し、組み合わせ、比較し、及び他の方法で操作することができる電気または磁気信号という形を取る。主に共通使用の理由により、これらの信号をビット、値、要素、シンボル、文字、用語、数などと称することが、時によって好都合であることが分かっている。
【0056】
しかし、これら及び同様の用語はすべて、適切な物理量に対応付けられるべきであり、これらの量に適用される好都合な標示にすぎないことを認識しておくべきである。本開示は、コンピュータシステムのレジスタ及びメモリ内で物理(電子)量として表されるデータを操作し、コンピュータシステムのメモリまたはレジスタまたはそのような情報ストレージシステム内で同様に物理量として表される他のデータに変換する、コンピュータシステム、または類似した電子コンピューティングデバイスの動作及びプロセスを参照することができる。
【0057】
本開示はまた、本明細書の操作を実行するための装置に関する。この装置は、使用目的に対して特別に構成することもできるし、またはコンピュータに格納されたコンピュータプログラムによって選択的に起動または再構成される汎用コンピュータを含むこともできる。そのようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD-ROM、及び光磁気ディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光カードを含む任意のタイプのディスク、またはそれぞれがコンピュータシステムバスに結合される電子命令の格納に適した任意のタイプの媒体であるが、これらに限定されないコンピュータ可読記憶媒体に格納することができる。
【0058】
本明細書で示したアルゴリズム及び表示は、何らかの特定のコンピュータまたは他の装置に本来的に関するものではない。様々な汎用システムを、本明細書での教示に従ってプログラムによって用いることもできるし、または本方法を行うためにより専用の装置を構築することが好都合であることが分かる可能性もある。種々のこれらのシステムの構造は、以下の説明で述べるように現れる。加えて、本開示は何らかの特定のプログラミング言語に関して説明されていない。本明細書で説明したような本開示の教示を実施するために、種々のプログラミング言語を使用できることを理解されたい。
【0059】
本開示を、本開示に従ってプロセスを実行するようにコンピュータシステム(または他の電子装置)をプログラミングするために使用できる命令が格納されたマシン可読媒体を含むことができる、コンピュータプログラム製品またはソフトウェアとして示すことができる。マシン可読媒体は、マシン(例えば、コンピュータ)によって可読な形式で情報を格納するための任意のメカニズムを含む。いくつかの実施形態では、マシン可読(例えば、コンピュータ可読)媒体は、読み取り専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ構成要素などのマシン(例えば、コンピュータ)可読記憶媒体を含む。
【0060】
本明細書では、様々な機能及び操作は、説明を簡略化するために、コンピュータ命令によって実行される、またはコンピュータ命令によって引き起こされるとして説明される。しかしながら、当業者は、そのような表現が意味することは、機能が、1つまたは複数のコントローラまたはマイクロプロセッサなどのプロセッサによるコンピュータ命令の実行から生じることであることを認識するであろう。あるいは、または組み合わせて、機能及び操作は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのソフトウェア命令の有無にかかわらず、特殊目的の回路を使用して実装することができる。実施形態は、ソフトウェア命令なしで、またはソフトウェア命令と組み合わせて、ハードワイヤード回路を使用して実装することができる。したがって、技術は、ハードウェア回路及びソフトウェアの任意の特定の組み合わせにも、データ処理システムによって実行される命令のための任意の特定のソースにも、限定されない。
【0061】
上述の明細書では、本開示の実施形態は、その特定の例示的な実施形態を参照して説明されてきた。しかしながら、特許請求の範囲に記載される本開示のより広範の趣旨及び範囲から逸脱することなく、様々な修正形態及び変更を本明細書に加えることができることは明らかである。したがって、明細書及び図面は限定的な意味ではなく例示的な意味で考慮されるべきである。
図1
図2
図3
図4
図5