(58)【調査した分野】(Int.Cl.,DB名)
メモリインターフェース及び不揮発性メモリの間におけるバスを介して、前記メモリインターフェースから前記バスを介して前記不揮発性メモリに要求が送信されていることを示す指示を、不揮発性メモリで取得する段階、
前記バスを介して前記不揮発性メモリで、読み取られるデータを含む前記不揮発性メモリにおける位置を識別するアドレスを含む前記要求を、取得する段階、
前記アドレスに基づいて読み取られる、前記不揮発性メモリにおける位置を前記不揮発性メモリで識別する段階、
前記不揮発性メモリにおける前記位置からデータを読み取り、
前記不揮発性メモリが前記メモリインターフェースに情報を送信する準備できたことを示す指示を、前記バスを介して前記不揮発性メモリから前記メモリインターフェースに送信する段階、
前記バスの所有権が前記不揮発性メモリに対して許可され済みという指示を、前記バスを介して前記メモリインターフェースから取得する段階、及び、
前記データを含む前記情報を、前記バスを介して、前記不揮発性メモリから前記メモリインターフェースに送信する段階、
を備える
方法。
前記バスから前記情報を取得する準備をすべく前記メモリインターフェースによって用いられるプリアンブルを、前記バスを介して前記メモリインターフェースに送信する段階、
をさらに備える
請求項11から13の何れか一項に記載の方法。
メモリインターフェース及び不揮発性メモリの間におけるバスを介して取得される、要求が前記メモリインターフェースによって前記不揮発性メモリに送信されているという指示を取得する段階、
前記バスを介して、アドレスを含む前記要求を取得する段階、
前記バスを介して取得される、前記メモリインターフェースから書き込まれるデータを取得する段階、
前記不揮発性メモリにおける、前記アドレスに基づいて書き込まれる位置を識別する段階、
前記データを前記不揮発性メモリにおける前記識別される位置に書き込む段階、
前記不揮発性メモリから前記メモリインターフェースに送信される、前記不揮発性メモリが応答を送信する準備できたという指示を送信する段階、
前記バスの所有権が前記不揮発性メモリに対して許可され済みという指示を、前記バスを介して取得する段階、及び、
前記バスを介して、前記不揮発性メモリから前記メモリインターフェースに前記応答を送信する段階、
を備える
方法。
前記バスから前記応答を取得する準備をすべく、前記メモリインターフェースによって用いられるプリアンブルを、前記バスを介して前記メモリインターフェースに送信する段階、
をさらに備える
請求項19に記載の方法。
前記インターフェースは、さらに、前記バスから前記要求を取得する準備をすべく、前記不揮発性メモリによって用いられるプリアンブルを、前記バスを介して前記不揮発性メモリに送信する、
請求項23に記載の装置。
【発明を実施するための形態】
【0003】
以下の詳細な説明は、複数の添付の図面を参照する。複数の異なる図面における複数の同一の参照番号は、複数の同一または類似のエレメントを識別し得る。また、以下の詳細な説明は、本発明を限定するものではない。コンピューティングデバイスは、当該コンピューティングデバイスが情報(例えば、データ、複数のコンピュータ実行可能命令)を格納するのに用い得るストレージを含んでよい。ストレージは、揮発性及び/または不揮発性であってよい。揮発性ストレージは、電力がコンピューティングデバイスから落とされた後に失われ得る情報を格納するのに用いられてよい。不揮発性ストレージは、コンピューティングデバイスへの電力が失われた後に存続(持続)する情報を格納するのに用いられてよい。
【0004】
例えば、コンピューティングデバイスは、中央処理ユニット(CPU)及びストレージを含んでよい。ストレージは、例えば、揮発性メモリと不揮発性メモリ(NVM)を含んでよい。揮発性メモリは、コンピューティングデバイスから電力が落とされた後に失われ得る情報用のストレージを提供してよい。一方、NVMは、コンピューティングデバイスから電力が落とされた後に持続する情報用のストレージを提供してよい。CPUは、コンピューティングデバイスに対して電力が回復された後に持続される情報をNVMから取り戻し得る。ストレージは、情報を格納するのに用いられ得る1つまたは複数のメモリデバイスを含んでよい。メモリデバイスは、メモリデバイスにおいて情報を格納するのに用いられ得る1つまたは複数のメモリセルを含み得る1つまたは複数のアレイを備えてよい。
【0005】
メモリセルは、アドレスに関連付けられてよい。当該アドレスは、メモリセルを識別するのに用いられてよい。情報は、当該アドレスを用いて、メモリセルに書き込まれ及び/またはメモリセルから読み取られ得る。例えば、メモリデバイスにおけるメモリセルは、特定のアドレス(例えば、0x100)に関連付けられ得る。書き込みトランザクションは、当該アドレスと、メモリセルに書き込まれるデータとを特定し得る。アドレスは、メモリセルを識別するのに用いられてよく、データは、それが識別された後に当該メモリセルに書き込まれてよい。
【0006】
ストレージは、当該ストレージを含むデバイスに対してコマンドを発行することによって、アクセス(例えば、読み取り、書き込み)され得る。コマンドは、バスを介してデバイスに伝達され得るトランザクションの一部であってよい。当該コマンドに関連付けられるデータはまた、バスを介して伝達されてもよい。バスは、デバイスに対してコマンド及び/またはデータを伝達用の複数の提供(例えば、複数のワイヤ)を含んでよい。
【0007】
例えば、コンピューティングデバイスは、CPUとNVMを含んでよい。CPUは、バスを介してNVMに連結されてよい。バスは、CPUとNVMとの間でコマンド及び/またはデータを伝達するのに用いられてよい。バスは、例えば、コマンド及び/またはデータを伝達するのに用いられ得る1つまたは複数のワイヤを含み得るポイントツーポイントバスであってよい。
【0008】
ストレージは、1つまたは複数のストレージモジュールを含んでよい。ストレージモジュールは、ストレージに含まれる1つまたは複数のメモリデバイスを含んでよい。複数のストレージモジュールの複数の例は、限定されないが、複数のデュアルインラインメモリモジュール(DIMM)、複数のセキュアデジタル(SD)カード、複数のマルチメディアカード(MMC)、複数のコンパクトフラッシュ(登録商標)(CF)カード、複数のメモリスティック、及び複数の単一インラインメモリモジュール(SIMM)を含んでよい。本明細書において説明される複数の技術は、コンピューティングデバイスにおいて実装されてよい。本明細書において説明される複数の技術を実装する複数のコンピューティングデバイスの複数の例は、限定されないが、複数のスマートフォーン、複数のタブレット、複数のウルトラブック、複数のラップトップ、複数のメインフレーム、複数のサーバ、及び複数のデスクトップコンピュータを含んでよい。
【0009】
図1は、本明細書において説明される様々な技術を実装し得るコンピューティングデバイス100の一例のブロック図を示す。
図1を参照すれば、コンピューティングデバイス100は、例えば、揮発性メモリ120、処理ロジック130、ホストコントローラ(HC)140、及び不揮発性メモリ150のような、様々なコンポーネントを含んでよい。
【0010】
図1はコンピューティングデバイス100の例示的実施形態を示すことに留意されたい。コンピューティングデバイス100の複数の他の実施形態は、
図1に示されている複数のコンポーネントより多くのコンポーネントまたはより少ないコンポーネントを含んでよい。さらに、複数のコンポーネントは、
図1に示されているものと異なって配置されてよい。例えば、コンピューティングデバイス100の実施形態は、インターネットのようなネットワークと通信を行うのに用いられ得る通信インターフェースを含んでよい。また、コンピューティングデバイス100の他の複数の実施形態に含まれる様々なコンポーネントによって実行される複数の機能は、本明細書において説明されるものと異なる複数のコンポーネント中に分散されてよいことに留意されたい。
【0011】
揮発性メモリ120は、コンピューティングデバイス100用のストレージを提供してよい。ストレージは、例えば、データ及び/または複数のコンピュータ実行可能命令のような情報を格納するのに用いられてよい。ストレージは、例えば、コンピューティングデバイス100用のキャッシュメモリ(例えば、レベル‐2(L2)キャッシュ)を実装し得る高速ストレージであってよい。揮発性メモリ120は、例えば、情報を格納するのに用いられ得る複数のメモリデバイスのような1つまたは複数のデバイスを含んでよい。
【0012】
不揮発性メモリ150はまた、コンピューティングデバイス100用のストレージを提供してもよい。ストレージは、例えば、より遅くてよく、揮発性メモリ120より高いストレージ容量を有してよい。ストレージは、情報を格納するのに用いられてよい。情報は、不揮発性メモリ150に含まれる1つまたは複数のデバイス上で格納されてよい。デバイスは、例えば、1つまたは複数のメモリデバイスを含んでよい。
【0013】
揮発性メモリデバイスは、電力がメモリデバイスから落とされた場合にメモリデバイスに格納されている情報を失われ得るメモリデバイスであってよい。不揮発性メモリデバイスは、電力がメモリデバイスから落とされた場合にメモリデバイスに格納されている情報を保持し得るメモリデバイスであってよい。複数のメモリデバイスの複数の例は、複数のダイナミックRAM(DRAM)デバイス、複数のフラッシュメモリデバイス、複数のスタティックRAM(SRAM)デバイス、複数のゼロキャパシタRAM(ZRAM)デバイス、複数のツイントランジスタRAM(TTRAM)デバイス、複数のリードオンリメモリ(ROM)デバイス、複数の強誘電体トランジスタRAM(FeTRAM)デバイス、複数の磁気抵抗RAM(MRAM)デバイス、複数の3次元(3D)クロスポイントメモリデバイス(例えば、複数の相変化メモリ(PCM)デバイス)、複数のナノワイヤベースデバイス、複数の抵抗RAM(RRAM(登録商標))デバイス、複数のシリアル電気的消去可能プログラマブルROM(SEEPROM)デバイス、複数のスピントランスファトルク(STT)MRAMデバイス、及び複数のシリアルフラッシュデバイスを含む。
【0014】
処理ロジック130は、情報を解釈、実行、及び/またはそうでなければ処理をするロジックを含んでよい。情報は、例えば、揮発性メモリ120及び/または不揮発性メモリ150に格納されてよい。情報は、例えば、データ及び/または複数のコンピュータ実行可能命令を含んでよい。
【0015】
処理ロジック130は、様々な異種ハードウェアを含んでよい。例えば、ハードウェアは、1つまたは複数のプロセッサ、複数のマイクロプロセッサ、複数のフィールドプログラマブルゲートアレイ(FPGA)、複数の特定用途向け命令セットプロセッサ(ASEP)、複数の特定用途向け集積回路(ASIC)、複数のコンプレックスプログラマブルロジックデバイス(CPLD)、複数のグラフィックス処理ユニット(GPU)、及び/または、例えば、情報を解釈、実行、操作、及び/またはそうでなければ処理をする複数の他の種類の処理ロジック、のいくつかの組み合わせを含んでよい。処理ロジック130は、単一のコアまたは複数のコアを備えてよい。バス160、170,180及び190は、ポイントツーポイントバスであってよい。バス160、170,180及び190は、複数のコンポーネントの間で様々な信号を搬送するのに用いられ得る複数の導電体(例えば、複数のワイヤ)を含んでよい。複数の信号は、例えば、複数の制御信号及び/またはデータを含んでよい。例えば、バス190は、不揮発性メモリインターフェース(NMI)146と不揮発性メモリ150との間で複数の信号を搬送するのに用いられ得る複数のワイヤを含み得るポイントツーポイントバスであってよい。複数の信号は、様々な制御信号及びデータを含んでよい。複数の信号は、複数の個別のワイヤによって搬送され得る。例えば、第1ワイヤは、NMI146と不揮発性メモリとの間で要求及びデータ情報を搬送するのに用いられてよい。第2ワイヤは、当該要求及びデータ情報を取得(例えば、読み取り、受信)するのに用いられえるストローブ情報を搬送するのに用いられ得る。第3ワイヤは、不揮発性メモリ150が、不揮発性メモリ150からNMI146になどの情報を伝達すべく、第1及び第2ワイヤの所有権を許可され済みか否かを示すのに用いられてよい。HC140は、情報がコンピューティングデバイス100における様々なコンポーネントの間で伝達されることを可能にし得るロジックを含んでよい。当該複数のコンポーネントは、例えば、揮発性メモリ120、処理ロジック130及び/または不揮発性メモリ150を含んでよい。情報は、複数のコンポーネントをHC140に連結するバス160,170,180、及び190を介して、当該複数のコンポーネントの間で伝達され得る。
【0016】
HC140は、コンピューティングデバイス100における様々なコンポーネントの間で複数のインターフェースとして用いられ得るロジックを含んでよい。複数のインターフェースは、情報が複数のコンポーネントの間で交換(例えば、伝達)されることを可能にし得る。複数のインターフェースは、例えば、揮発性メモリインターフェース(VMI)142とNMI146を含んでよい。VMI142は、処理ロジック130を揮発性メモリ120とインターフェースするのに用いられてよい。NMI146は、処理ロジック130を不揮発性メモリ150とインターフェースするのに用いられてよい。
【0017】
VMI142は、バス160と170を介して揮発性メモリ120と処理ロジック130との間で情報が通信(例えば、伝達)されることを可能にし得るロジックを含んでよい。具体的には、VMI142は、バス160を介してVMI142と揮発性メモリ120との間で情報が通信されることを可能にし得るロジックを含んでよい。さらに、VMI142は、バス170を介して処理ロジック130とVMI142との間で情報が通信されることを可能にし得るロジックを含んでよい。情報は、例えば、複数のコマンド及び/またはデータを含んでよい。VMI142に含まれ得るロジックの複数の例は、複数のステートマシン、複数のバストランシーバ、複数のレジスタ、及び/または他のロジックを含んでよい。
【0018】
NMI146は、バス180と190を介して不揮発性メモリ150と処理ロジック130との間で情報が通信されることを可能にし得るロジックを含んでよい。具体的には、NMI146は、バス180を介してNMI146と処理ロジック130との間で情報を通信するのに用いられ得るロジックを含んでよい。さらに、NMI146は、バス190を介して不揮発性メモリ150とNMI146との間で情報を通信するのに用いられ得るロジックを含んでよい。NMI146に含まれ得るロジックは、例えば、複数のステートマシン、複数のバストランシーバ、複数のレジスタ、及び/または他のロジックを含んでよい。
【0019】
情報は、例えば、複数の要求及び/またはデータを含んでよい。複数の要求は、コマンド情報(例えば、読み取りコマンド、書き込みコマンド)及び/またはアドレス情報(例えば、読み取られるアドレス、書き込まれるアドレス)を含んでよい。情報は、複数のトランザクションを用いて通信されてよい。
【0020】
トランザクションは、バスを介して2つのエンティティの間で情報を通信するのに用いられ得る。例えば、情報は、複数のトランザクションを用いてバス190を介してNMI146と不揮発性メモリ150との間で通信され得る。トランザクションを用いて通信される情報は、例えば、要求、データ、及び/または応答情報を含んでよい。
【0021】
トランザクションは、特定の種類のものであってよい。例えば、トランザクションは、書き込みトランザクションまたは読み取りトランザクションであってよい。書き込みトランザクションは、例えば、不揮発性メモリ150にのように、ストレージに情報を書き込むのに用いられてよい。読み取りトランザクションは、例えば、不揮発性メモリ150からのように、ストレージから情報を読み取るのに用いられてよい。トランザクションは、多数の段階を含んでよい。例えば、トランザクションは、要求段階、データ段階、及び/または応答段階を含んでよい。段階は、当該段階中に複数のエンティティの間で伝達され得る複数の特定の種類の情報に伴われてよい。例えば、要求段階中にコマンド及び/またはアドレス情報は、当該複数のエンティティの間で伝達され得る。
【0022】
図2は、バス190のようなバスを介し、NMI146と不揮発性メモリ150のような複数のエンティティの間で伝達され得る、読み取りトランザクションと書き込みトランザクションに関連付けられ得る複数の例示的段階を示す。
図2を参照すれば、参照番号220は、(1)タイムラインと(2)読み取りトランザクション中に伝達され得る情報を含む。参照番号260は、(1)タイムラインと(2)書き込みトランザクションに関連付けられ得る複数の段階で伝達され得る情報を含む。
【0023】
読み取りトランザクションは、要求段階、データ段階、及び応答段階を含んでよい。要求段階は、時間230aで発生し得る。要求段階は、バスを介して複数のエンティティの間で要求240aを伝達することを含み得る。要求240aは、例えば、プリアンブル、コマンド、及び/またはアドレスを含んでよい。コマンドは、実行される動作(本例においては読み取り動作)を識別し得る。アドレスは、読み取られる位置を識別し得る。
【0024】
プリアンブルは、要求240aを取得する準備するのに用いられてよい。準備は、例えば、プリアンブルを用いてバスから要求240aを取得すべく整備することを含んでよい。プリアンブルは、当該整備を実行するのに用いられ得る複数のビットの所定のシーケンスを含んでよい。
【0025】
例えば、複数のエンティティがNMI146と不揮発性メモリ150を含み、バスがバス190を含むことを仮定する。要求段階中に、要求240aは、バス190を介してNMI146から不揮発性メモリ150に送信され得る。要求240aは、プリアンブル、コマンド、及びアドレスを含んでよい。プリアンブルは、バス190からコマンドとアドレスを受信する準備をすべく、不揮発性メモリ150によって用いられ得る複数のビットの所定のシーケンスを含んでよい。コマンドは、不揮発性メモリ150によって実行される読み取り動作を識別し得る。アドレスは、読み取られる、不揮発性メモリ150における位置を識別し得る。データ段階は、要求段階の後に開始し得る。データ段階は、エンティティが要求を処理し得る時間230bを含んでよい。例えば、データ段階中に、不揮発性メモリ150は、上述の要求を処理し得る。ここで、処理は、例えば、アドレスによって識別される位置で不揮発性メモリ150からデータ240bを読み取ることを含んでよい。
【0026】
データ段階はまた、複数のエンティティの間でデータ240bが伝達される時間230cを含んでもよい。例えば、データ240bを読み取った後に、データ240bは、バス190を介して不揮発性メモリ150からNMI146に伝達され得る。時間230dでは、要求は、応答段階に入り得る。応答段階は、要求に対して応答240cを送信することを含んでよい。応答240cは、要求が処理され済みという指示を提供し得る。応答240cは、応答240cを取得する準備するのに用いられ得るプリアンブルに先行されてよい。プリアンブルは、応答240cを取得する準備するのに用いられ得る。準備は、例えば、プリアンブルを用いてバスから応答240cを取得すべく整備することを含んでよい。プリアンブルは、当該整備を実行するのに用いられ得る複数のビットの所定のシーケンスを含んでよい。
【0027】
例えば、応答段階中に、応答240cとプリアンブルは、バス190を介して不揮発性メモリ150からNMI146に送信され得る。応答240cは、要求が不揮発性メモリ150によって処理され済みという指示をNMI146に対して提供し得る。応答240cは、例えば、読み取り要求に関連付けられ得るステータスを含んでよい。ステータスは、不揮発性メモリ150で実行される読み取り動作が成功に実行されたか否かを示してよい。応答240cは、プリアンブルに先行されてよい。NMI146は、バス190から応答240cを受信する準備すべく、プリアンブルを用いてよい。準備は、上において説明されたように、整備を含んでよい。
【0028】
次に参照番号260を参照すれば、書き込みトランザクションはまた、要求段階、データ段階、及び応答段階を含んでもよい。時間270aでは、要求段階は、要求280aを含んでよい。要求280aは、例えば、プリアンブル、コマンド、及び/またはアドレスを含んでよい。プリアンブルは、コマンド及び/またはアドレスを受信するのに用いられてよい。コマンドは、書き込みオペレーションが実行されることを示してよく、アドレスは、データが書き込まれる位置を識別し得る。
【0029】
例えば、複数のエンティティがNMI146と不揮発性メモリ150を含み、バスがバス190を含むことを仮定する。要求段階中に、要求280aは、バス190を介してNMI146から不揮発性メモリ150に送信され得る。要求280aは、プリアンブル、コマンド、及びアドレスを含んでよい。プリアンブルは、コマンドとアドレスを受信する準備すべく、不揮発性メモリ150によって用いられてよい。準備は、上において説明されたように、整備を含んでよい。コマンドは、不揮発性メモリ150によって実行される書き込みオペレーションを識別し得る。アドレスは、書き込まれる、不揮発性メモリ150における位置を識別し得る。データ段階は、要求段階の後に発生してよい。データ段階中に、書き込まれるデータ280bは、時間270bで示されるように、複数のエンティティの間で伝達され得る。また、データ段階中に、時間270cでは、データは、例えば、要求280aにおいて識別される位置に書き込まれ得る。例えば、データ段階中に、データ280bは、バス190を介してNMI146から不揮発性メモリ150に伝達され得る。データ280bを受信した後、不揮発性メモリ150は、要求280aに含まれるアドレスを用いて識別され得る、不揮発性メモリ150における位置にデータを書き込んでよい。応答段階は、時間270dで示されるようなデータ段階に続いてよい。応答段階中に、応答280cは、複数のエンティティの間で伝達され得る。応答280cは、例えば、書き込み要求に関連付けられるステータスを含んでよい。ステータスは、例えば、書き込み要求が成功に完了されたか否かを示してよい。
【0030】
例えば、不揮発性メモリ150は、書き込みオペレーションが成功したか否かを示し得るステータスを含み得る応答280cを生成してよい。応答段階中に、不揮発性メモリ150は、バス190を介してNMI146に応答280cを伝達し得る。
【0031】
様々な信号は、バス190を介してNMI146と不揮発性メモリ150との間で伝達され得る。バス190は、接続バス(例えば、ポイントツーポイントバス)であってよく、複数の信号のそれぞれは、例えば、バス190に含まれ得る複数の個別の接続(例えば、複数の導電性ワイヤ、複数の光学接続)上で搬送されてよい。複数の信号は、例えば、以下の表にリストされている複数の信号を含んでよい。
【0033】
上の表は、NMI146と不揮発性メモリ150との間で伝達され得る複数の信号の複数の例を提供することに留意されたい。複数の他の信号はまた、例えば、バス190を介して、NMI146と不揮発性メモリ150との間で伝達されてもよい。これらの複数の信号は、例えば、NMI146及び/または不揮発性メモリ150の動作をリセットするのに用いられ得る信号、インピーダンスキャリブレーション用の参照を提供し得る信号、及び/または、例えば、バス190を介して伝達される情報のエラー検知及び/または訂正を提供し得る複数のチェックビット信号を含んでよい。なお、複数の他の信号は、例えば、電力管理用に用いられ得る複数の信号を含んでよい。例えば、低電力状態に入るように不揮発性メモリ150に指示すべく、NMI146によって用いられ得る信号は、含まれ得る。例えば、低電力状態から出るように不揮発性メモリ150に指示すべく、NMI146によって用いられ得る別の信号は、含まれ得る。
【0034】
バス190を介して複数の信号を搬送する複数のワイヤは、例えば、不揮発性メモリ150及び/またはNMI146の状態に基づき複数の特定の信号を搬送すべく再利用され得ることに留意されたい。例えば、ACT及びRRDYを搬送する複数のワイヤは、上に説明されたように、不揮発性メモリ150に関連付けられる電力状態を管理用に再利用されてよい。
【0035】
不揮発性メモリ150とNMI146との間で伝達される複数の信号は、トランザクション中に様々な指示を提供すべく、様々な時間でアサートされ得、デアサートされ得る。
図3は、例えば、NMI146と不揮発性メモリ150の間で、読み取りトランザクション中に複数の信号の動作例のタイミングダイアグラム300を示す。複数の信号は、バス190を介して不揮発性メモリ150とNMI146との間で伝達されてよい。
【0036】
図3を参照すれば、時間330aは、読み取りトランザクションの前に複数の信号の状態を表し得る。具体的には、時間330aでは、上述のACT、RGRANT、RQRDY、及びRRDY信号はデアサートされ得る。さらに、ダイアグラム300における複数の破線によって示されるように、上述のDQとDQSは、高インピーダンス状態にあってよい。
【0037】
時間330bでは、NMI146は、NMI146が送信する要求を有することを不揮発性メモリ150に対して示すべく、ACT信号をアサートしてよい。ACTをアサートすることは、読み取りトランザクションの要求段階に入り済みのことを示してよい。不揮発性メモリ150は、ACTがアサートされたことを検知し得、DQS上で要求に関連付けられるプリアンブルを受信する準備し得る。時間330cでは、NMI146は、DQS上でプリアンブルを伝達し始め得る。不揮発性メモリ150は、プリアンブルを受信してNMI146から要求を受信する準備をし得る。準備は、上において説明されたように、整備を含んでよい。
【0038】
時間330d及び330eでは、NMI146は、DQ上で要求を伝達し得る。さらに、NMI146は、不揮発性メモリ150がDQから要求を取得するのに用い得るストローブ信号をDQS上で提供し得る。不揮発性メモリ150は、ストローブ信号を取得し得、時間330d及び330e中にDQから要求を取得すべく、当該ストローブ信号を用い得る。
【0039】
時間330eでは、NMI146は、RQRDYをデアサートし得る。不揮発性メモリ150は、NMI146がRQRDYをデアサートし済みのことを検知し得、DQから要求を取得することを中断し得る。さらに、時間330f及び330gでは、NMI146は、DQS上でポストアンブルを不揮発性メモリ150に伝達してよい。不揮発性メモリ150は、ポストアンブルを取得し得、要求段階から出たことを判断し得る。
【0040】
時間330hでは、不揮発性メモリ150は、要求を処理してよい。ここで、処理することは、要求が読み取り要求と判断することと、当該要求において識別される位置で不揮発性メモリ150からデータを読み取ることとを含んでよい。
【0041】
データが読み取られた後、不揮発性メモリ150は、時間330iで示されたように、不揮発性メモリ150がNMI146に情報を送信する準備ができたことをNMI146に示すべく、RRDYをアサートしてよい。情報は、例えば、不揮発性メモリ150から読み取られたデータを含んでよい。ここで、RRDYをアサートすることは、読み取りトランザクションのデータ段階に入ることを示してよい。
【0042】
NMI146は、RRDYがアサートされ済みのことを判断してよく、時間330jで示されるように、DQの所有権が許可され済みという指示を不揮発性メモリ150に送信すべく、RGRANTをアサートし得る。
【0043】
RGRANTがアサートされ済みのことを検知し、アサートされたRGRANTに基づいて不揮発性メモリ150がDQの所有権を許可され済みということを判断した後に、不揮発性メモリ150は、時間330kで示されるように、DQS上でプリアンブルを伝達し始めてよい。NMI146は、プリアンブルを取得してDQ上でデータを受信する準備し得る。準備は、上において説明されたように、整備を含んでよい。時間330m及び330nでは、不揮発性メモリ150は、データ及び関連付けられるストローブ情報をそれぞれ、DQとDQS上に伝達し得る。NMI146は、DQからデータを取得すべく、ストローブ情報を用いてよい。
【0044】
時間330oでは、不揮発性メモリ150は、データ段階から出たことと、読み取りトランザクションの応答段階に入ったこととを示すべく、RRDYをデアサートしてよい。RRDYをデアサートした後、不揮発性メモリ150は、DQ上で応答情報を伝達してよい。応答情報は、例えば、要求に関連付けられるステータスを含んでよい。ステータスは、例えば、要求が不揮発性メモリ150によって成功に処理されたか否かを示してよい。NMI146は、DQから応答情報を取得して応答情報を処理し得る。ここで、処理することは、例えば、要求が不揮発性メモリ150によって成功に処理されたか否かを判断することを含んでよい。
【0045】
時間330o及び330pでは、不揮発性メモリ150は、DQS上でポストアンブルを伝達してよい。NMI146は、ポストアンブルを取得して応答段階から出たことを判断し得る。応答段階から出たことを判断した後、NMI146は、時間330qで示したように、RGRANT信号をデアサートしてよい。
図4は、例えば、NMI146と不揮発性メモリ150の間で、書き込みトランザクション中に複数の信号の動作例のタイミングダイアグラム400を示す。複数の信号は、バス190を介してNMI146と不揮発性メモリ150との間で伝達されてよい。
図4を参照すれば、時間430aは、書き込みトランザクションの前に複数の信号の状態を表してよい。具体的には、時間430aでは、上述のACT、RGRANT、RQRDY、及びRRDY信号は、デアサートされてよい。さらに、上述のDQとDQSは、ダイアグラム400における複数の破線によって示されるように、高インピーダンス状態にあってよい。時間430bでは、NMI146は、NMI146が送信する要求を有することを不揮発性メモリ150に対して示すべく、ACT信号をアサートしてよい。ACTをアサートすることは、書き込みトランザクションの要求段階に入り済みということを示してよい。不揮発性メモリ150は、ACTがアサートされたことを検知してDQS上で要求に関連付けられるプリアンブルを取得する準備し得る。時間430cでは、NMI146は、DQS上でプリアンブルを伝達し始めてよい。不揮発性メモリ150は、プリアンブルを取得してNMI146から要求を取得する準備してよい。準備することは、上において説明されたように、プリアンブルを用いて整備することを含んでよい。
【0046】
時間430d及び430eでは、NMI146は、DQ上で要求を伝達してよい。要求は、コマンドとアドレスを含んでよい。コマンドは、書き込み要求として要求を識別し得、アドレスは、データと共に書き込まれる、不揮発性メモリ150における位置を識別し得る。NMI146は、不揮発性メモリ150がDQから要求を取得するのに用い得るストローブ信号をDQS上で提供してよい。不揮発性メモリ150は、ストローブ信号を受信して時間430d及び430e中にDQから要求を取得すべく、当該ストローブ信号を用いてよい。
【0047】
時間430fでは、NMI146は、RQRDYをデアサートしてよい。不揮発性メモリ150は、NMI146がRQRDYをデアサートし済みのことを検知してDQから要求を取得することを中断してよい。RQRDYは、要求がNMI146によってDQ上で伝達されている時間にアサートされてよく、DQが要求情報を含まない場合に一時にデアサートされることに留意されたい。不揮発性メモリ150は、DQがもはやアサートされていないことを検知して書き込みトランザクションの要求段階から出たこととトランザクションがデータ段階に入っていることを判断し得る。また、時間430fでは、NMI146は、DQ上でデータを伝達してよい。不揮発性メモリ150は、NMI146によってDQS上で提供され得るストローブを用いてDQからデータを取得し得る。データは、不揮発性メモリ150に書き込まれるデータを含んでよい。時間430gでは、NMI146は、DQ上にデータを伝達することを完了し得る。時間430gでは、NMI146は、NMI146がもはやDQの所有権を有しないことを示し得るACTをデアサートしてよい。ACTをデアサートした後、時間430g及び430hで示すように、NMI146は、DQS上でポストアンブルを伝達し得る。不揮発性メモリ150は、ポストアンブルを取得して書き込みトランザクションのデータ段階から出たことを判断し得る。
【0048】
時間430jでは、不揮発性メモリ150は、要求によって特定されるアドレスによって識別され得る、不揮発性メモリ150における位置にデータを書き込み得る。その後、時間430kでは、不揮発性メモリ150は、不揮発性メモリ150が応答を送信する準備できたことをNMI146に対して示すべく、RRDYをアサートしてよい。この時点では、書き込みトランザクションは、応答段階に入り得る。
【0049】
NMI146は、RRDYがアサートされことを検知してよく、時間430mでは、RGRANTをアサートすることによって不揮発性メモリ150に対してDQの所有権を許可し得る。不揮発性メモリ150は、RGRANTがアサートされることを検知して不揮発性メモリ150がDQの所有権を許可され済みのことを判断してよい。時間430n及び430oでは、不揮発性メモリ150は、DQS上でプリアンブルを伝達してよい。NMI146は、プリアンブルを取得してDQ上で応答を取得する準備し得る。準備することは、上において説明されたように、整備することを含んでよい。時間430pでは、不揮発性メモリ150は、DQ上で応答を伝達してよい。さらに、時間430qでは、不揮発性メモリ150は、DQ上で(ダイアグラム400に「P」として示される)パディング情報を送信してよい。パディング情報は、応答を特定の長さ(例えば、特定の数のバイト)に「パッドアウト」するのに用いられてよい。
【0050】
NMI146は、DQ上で応答とパディング情報を取得すべく、不揮発性メモリ150によってDQS上に提供される複数のストローブを用いてよい。NMI146は、応答を処理してよい。ここで、処理することは、例えば、要求が成功に実行されることを応答が示したか否かを判断することを含んでよい。
【0051】
時間430q及び430rでは、不揮発性メモリ150は、DQS上でポストアンブルを送信してよい。NMI146は、ポストアンブルを受信して書き込みトランザクションの応答段階から出ていたことを判断し得る。その後、時間430sでは、NMI146は、不揮発性メモリ150がもはやDQの所有権を有しないことを示すべく、RGRANTをデアサートし得る。
【0052】
コンピューティングデバイス100(
図1)において、NMI146は、不揮発性メモリ150に対するホストとして見なされてよく、不揮発性メモリ150は、NMI146のクライアントとして見なされてよい。この関係は、例えば、エンティティがDQの所有権を制御し得ることに基づいて確立されてよい。上において説明されたように、NMI146は、最初に所有権を要求することなく、DQの所有権を取り得る。一方、不揮発性メモリ150は、RRDYをアサートしてDQの所有権を要求し、不揮発性メモリ150がDQの所有権を取る前にNMI146が所有権を許可するまで待つ。NMI146はどのエンティティがDQの所有権を有することを制御することが言える。従って、この動作に基づき、NMI146は、NMI146のクライアントである不揮発性メモリ150のホストと言える。
【0053】
バス190を介してNMI146と不揮発性メモリ150との間の通信は、プロトコルに従ってよい。プロトコルは、1つまたは複数の規則の対象であってよい。例えば、プロトコルは、以下の複数の規則のうちの1つまたは複数の対象であってよい。
【0054】
1)不揮発性メモリ150によるRRDYアサーションは、デアサートされているような、不揮発性メモリ150によってサンプリングされるRGRANTに依存してよい。
【0055】
2)NMI146によるRGRANTアサーションは、ACTと共にアサートされているような、NMI146によってサンプリングされるRRDYとデアサートされているRQRDYに依存してよい。最小アサーション期間は、NMI146に関連付けられるクロック(NMIクロック)の事前に決定された数のクロックサイクルであってよい。例えば、NMI146は、NMIクロックの2つのクロックサイクルのうちの最小値においてRGRANTをアサートしてよい。
【0056】
3)不揮発性メモリ150は、不揮発性メモリ150に関連付けられるクロック(不揮発性メモリクロック)の事前に決定された数のクロックサイクルにおいてRGRANTアサーションをサンプリングした後にDQS上でプリアンブルを送信し始めてよい。例えば、不揮発性メモリ150は、不揮発性メモリクロックのうちの1つのクロックサイクルにおいてRGRANTアサーションをサンプリングした後にDQS上でプリアンブルを送信し始めてよい。
【0057】
4)RGRANTは、RRDYがデアサートされる前にNMI146によってデアサートされてよい。代替的に、RGRANTは、NMI146が、RRDYがデアサートされ済みのことを検知した後に、デアサートされてよい。
【0058】
5)RRDYデアサーションは、トランザクションが完了した後に、またはトランザクションが完了する前にバス所有権を回復するNMI146に応答して、発生し得る。
【0059】
6)NMI146は、事前に決定された数のNMIクロックサイクル(例えば、1つのNMIクロックサイクル)において、デアサートされているようなRRDYをサンプリングした後に、DQS上でプリアンブルを送信し始めてよい。プリアンブルが送信された後に事前に決定された時間において、NMI146は、DQ上で情報を送信し始めてよい。
【0060】
7)RGRANTが不揮発性メモリ150によってデアサートされたようにサンプリングされた後、RRDYは、不揮発性メモリ150によってデアサートされてよい。さらに、不揮発性メモリ150は、DQとDQS上で情報を送信することを終了してよい。情報の送信は、情報に関連付けられる特定の境界(例えば、64バイトの境界)上で終了され得る。RRDYのデアサーションは、例えば、不揮発性メモリ150によって送信の終了を示してよい。
【0061】
8)RQRDYアサーションは、DQ上でNMI146によって送信される情報をエンベロープしてよい。例えば、RQRDYアサーションは、読み取りトランザクションにおいてNMI146によってDQ上で送信されるコマンド情報をエンベロープしてよい。
【0062】
9)RQRDYは、事前に決定された期間(例えば、2つのNMIクロック)においてデアサートされてよい。複数の要求段階が連続している場合、RQRDYは、アサートされたままで当該複数の段階の間ではデアサートされなくてよい。
【0063】
10)NMI146は、読み取りトランザクションの要求段階が完了され済みの後、及び/または、書き込みトランザクションのデータ段階の後に、DQ及び/またはDQSをトライステートしてよい。
【0064】
11)ACTアサーションは、RGRANTとデアサートされているRRDYに依存してよい。
【0065】
12)ACTのデアサーションは、事前に決定される数のNMIクロックサイクルの後に発生し得る。例えば、ACTのデアサーションは、NMIクロックのうちの1つのクロックサイクルの後に発生し得る。
【0066】
図5A―Bは、例えば、NMI146のようなホストによって実行され得る読み取りトランザクションに関連付けられる複数の動作例のフロー図を示す。
図5Aを参照すれば、ブロック510では、ホストが送信する要求を有するという指示はクライアントに送信されてよい。例えば、ホストがNMI146で、クライアントが不揮発性メモリ150であることを仮定する。ブロック510では、NMI146は、不揮発性メモリ150に対してNMI146が不揮発性メモリ150に送信する要求を有することを示すべく、ACTをアサートしてよい。
【0067】
ブロック520では、読み取り要求がバスを介して送信されていることを示す指示は、クライアントに送信される。例えば、NMI146は、読み取り要求がDQ上で不揮発性メモリ150に送信されていることを不揮発性メモリ150に対して示すべく、RQRDYをアサートしてよい。ブロック530では、読み取り要求は、バスを介してクライアントに送信されてよい。例えば、NMI146は、DQを介して不揮発性メモリ150に読み取り要求を送信してよい。
【0068】
ブロック540では、クライアントが情報を送信する準備できたという指示は、取得され得る。例えば、不揮発性メモリ150は、読み取り要求を受信して読み取り要求を処理してよい。処理することは、例えば、読み取り要求に含まれ得るアドレスに基づいて識別され得る、不揮発性メモリ150における位置からデータを読み取ることを含んでよい。データが読み取られた後に、不揮発性メモリ150は、不揮発性メモリ150がNMI146にデータを送信する準備できたことを示すべく、RRDYをアサートしてよい。ブロック550(
図5B)では、クライアントがバスの所有権を有するという指示は、送信されてよい。例えば、NMI146は、不揮発性メモリ150がDQの所有権を有することを不揮発性メモリ150に対して示すべく、RGRANTをアサートしてよい。ブロック560では、クライアントからの情報は、バスを介して取得されてよい。例えば、RGRANTがアサートされ済みのことを検知した後に、不揮発性メモリ150は、DQを介してNMI146にデータを送信し始めてよく、NMI146は、例えば、不揮発性メモリ150によってDQS上で送信されるストローブ信号を用いてDQからデータを読み取って良い。さらに、不揮発性メモリ150は、DQを介してNMI146に応答情報を伝達してよく、NMI146は、上において説明されたように、DQから応答情報を読み取ってよい。
【0069】
ブロック570では、情報がもはやバスを介してクライアントからホストに送信されていないという指示は、クライアントから取得されてよい。例えば、応答情報を送信した後に、不揮発性メモリ150は、DQS上でポストアンブルを送信してよい。ポストアンブルは、情報がもはや不揮発性メモリ150によってDQ上で送信されていないことを示してよい。
【0070】
ブロック580では、クライアントがもはやバスの所有権を有しないことを示す指示は送信されてよい。例えば、NMI146は、不揮発性メモリ150がもはやDQの所有権を有していないことを不揮発性メモリ150に対して示すべく、RGRANTをデアサートしてよい。
【0071】
図6A―Bは、クライアントによって実行され得る読み取りトランザクションに関連付けられる複数の動作例のフロー図を示す。
図6Aを参照すれば、ブロック610では、ホストがクライアントに送信する要求を有するという指示は、ホストから取得されてよい。例えば、ホストがNMI146で、クライアントが不揮発性メモリ150であることを仮定する。ブロック610では、NMI146は、NMI146が不揮発性メモリ150に送信する要求を有することを示すべく、ACTをアサートしてよい。不揮発性メモリ150は、ACTがアサートされたことを検知してNMI146が不揮発性メモリ150に送信する要求を有することを判断してよい。ブロック620では、読み取り要求がバス上で送信されているという指示は、ホストから取得されてよい。例えば、NMI146は、読み取り要求がNMI146によってDQバス上で送信されていることを不揮発性メモリ150に対して示すべく、RQRDYをアサートしてよい。ブロック630では、読み取り要求は、バスを介してホストから取得される。例えば、不揮発性メモリ150は、例えば、NMI146によってDQS上で送信されるストローブ信号を用いて、DQから読み取り要求を読み取ってよい。
【0072】
ブロック640では、データは、読み取り要求に基づいて読み取られてよい。例えば、読み取り要求はアドレスを含んでよい。不揮発性メモリ150は、データを含む不揮発性メモリ150における位置を識別すべく、アドレスを用いてよい。不揮発性メモリ150は、不揮発性メモリ150における識別された位置からデータを読み取ってよい。
【0073】
ブロック650(
図6B)では、クライアントが情報を送信する準備できたという指示は、送信されてよい。例えば、不揮発性メモリ150からデータを読み取った後、不揮発性メモリ150は、RRDYをアサートしてよい。NMI146は、RRDYがアサートされ済みのことを検知して不揮発性メモリ150が要求されるデータを送信する準備できたことを判断してよい。ブロック660では、クライアントがバスの所有権を有するという指示は取得されてよく、情報はバスを介してホストに送信されてよい。例えば、NMI146は、上において説明されたように、RGRANTを用いて、不揮発性メモリ150に対してDQの所有権を許可してよい。不揮発性メモリ150が、自身がDQの所有権を有することを判断した後、不揮発性メモリ150は、上において説明されたように、DQを介してNMI146にデータを送信してよい。
【0074】
ブロック670では、情報がもはや送信されていないという指示は、バス上で送信される。例えば、不揮発性メモリ150は、情報がもはやDQ上で送信されていないことを示すべく、DQSを介してNMI146にポストアンブルを送信してよい。ブロック680では、クライアントがもはやバスの所有権を有しないことを示す指示は、ホストから取得されてよい。例えば、NMI146は、不揮発性メモリ150がもはやDQの所有権を有していないことを不揮発性メモリ150に対して示すべく、RGRANTをデアサートしてよい。
【0075】
図7A―Bは、ホストによって実行され得る書き込みトランザクションに関連付けられる複数の動作例のフロー図を示す。
図7Aを参照して、ブロック710では、ホストが送信する要求を有するという指示は、送信されてよい。例えば、ホストがNMI146で、クライアントが不揮発性メモリ150であることを仮定する。ブロック710では、NMI146は、NMI146が不揮発性メモリ150に送信する要求を有することを不揮発性メモリ150に対して示すべく、ACTをアサートしてよい。不揮発性メモリ150は、ACTがアサートされたことを検知してNMI146が送信する要求を有することを判断してよい。
【0076】
ブロック720では、要求がバスを介して送信されているという指示は、送信される。例えば、NMI146は、要求がQD上で送信されていることを不揮発性メモリ150に対して示すべく、RQRDYをアサートしてよい。ブロック730では、要求と書き込まれる情報は、バスを介して送信される。例えば、RQRDYをアサートした後、NMI146は、QDを介して不揮発性メモリ150に要求を送信してよい。要求が送信された後、NMI146は、RQRDYをデアサートしてよい。NMI146は、そうして、QDを介して書き込まれるデータを不揮発性メモリ150に送信する。
【0077】
ブロック740では、応答がクライアントからホストに送信する準備できたということを示し得る指示は、取得され得る。例えば、不揮発性メモリ150にデータを書き込んだ後、不揮発性メモリ150は、NMI146に応答を送信するようにQDへのアクセスを要求すべく、RRDYをアサートしてよい。NMI146は、RRDYがアサートされたことを検知して不揮発性メモリ150が応答を送信する準備できたことを判断してよい。
【0078】
ブロック750(
図7B)では、クライアントがバスの所有権を許可され済みのことを示す指示は、クライアントに送信されてよい。例えば、RRDYがアサートされたことを検知した後、NMI146は、不揮発性メモリ150に対してバスの所有権を許可すべく、RGRANTをアサートし得る。
【0079】
ブロック760では、応答は、バスを介して取得されてよい。例えば、不揮発性メモリ150は、RGRANTがアサートされたことを検知してNMI146が不揮発性メモリ150に対してQDの所有権を許可したことを判断してよい。不揮発性メモリ150は、QDを介してNMI146に応答を送信してよい。NMI146は、上に説明されたように、QDから応答を受信してよい。ブロック770では、応答がもはやバス上で送信されていないという指示は、取得されてよい。例えば、応答を送信した後、不揮発性メモリ150は、QDS上でポストアンブルを送信してよい。NMI146は、ポストアンブルを検知して応答がもはやバス上で送信されていないことを判断してよい。ブロック780では、クライアントがもはやバスの所有権を有しないという指示は、送信されてよい。例えば、NMI146は、不揮発性メモリ150がもはやDQの所有権を有しないことを不揮発性メモリ150に対して示すべく、RGRANTをデアサートしてよい。
【0080】
図8A―Bは、クライアントによって実行され得る書き込みトランザクションに関連付けられる複数の動作例のフロー図を示す。
図8Aを参照すれば、ブロック810では、ホストが送信する要求を有するという指示は、取得されてよい。例えば、ホストがNMI146でクライアントが不揮発性メモリ150であることを仮定する。NMI146は、NMI146が送信する要求を有することを示すべく、ACTをアサートしてよい。不揮発性メモリ150は、ACTがアサートされたことを検知してNMI146が送信する要求を有することを判断してよい。
【0081】
ブロック820では、書き込み要求がバスを介して送信されているという指示は、取得されてよく、ブロック830では、書き込み要求とデータは、取得されてよい。例えば、NMI146は、DQ上で要求が送信されていることを示すべく、RQRDYをアサートしてよい。不揮発性メモリ150は、上において説明されたように、RQRDYがアサートされたことを検知してDQから要求を読み取ってよい。NMI146は、例えば、要求のコマンド部分が送信され済みで要求のデータ部分がQD上で送信されていることを示すべく、RQRDYをデアサートしてよい。不揮発性メモリ150は、上において説明されたように、RQRDYがデアサートされ済みのことを検知してDQからデータを読み取ってよい。
【0082】
ブロック840では、データは、不揮発性メモリに書き込まれる。例えば、要求を取得した後、不揮発性メモリ150は、要求を処理してよい。ここで、処理することは、要求が書き込み要求であることを判断することを含んでよい。不揮発性メモリ150はまた、要求に含まれ得るアドレスに基づいて書き込まれる、不揮発性メモリ150における位置を識別してもよい。DQからデータを読み取った後、不揮発性メモリ150は、データを不揮発性メモリ150における識別された位置に書き込んでよい。
【0083】
ブロック850(
図8B)では、書き込み要求に対する応答が送信される準備できたということを示す指示は、送信されてよい。例えば、不揮発性メモリ150は、不揮発性メモリ150がDQを介して送信する応答を有することを示すべく、RRDYをアサートしてよい。NMI146は、RRDYがアサートされ済みのことを検知して不揮発性メモリ150が送信する応答を有することを判断してよい。ブロック860では、クライアントに対してバスの所有権が許可され済みのことを示し得る指示は、取得されてよい。さらに、ブロック860では、応答は、クライアントによってホストに送信されてよい。例えば、NMI146が、不揮発性メモリ150が送信する応答を有することを判断した後、NMI146は、不揮発性メモリ150に対してDQの所有権を許可すべく、RGRANTをアサートしてよい。不揮発性メモリ150は、RGRANTがアサートされ済みのことを検知して不揮発性メモリ150がDQの所有権を有することを判断してよい。この判断をした後に、不揮発性メモリ150は、上に説明されたように、DQを介してNMI146に応答を送信してよい。
【0084】
ブロック870では、応答がもはやバス上で送信されていないという指示は、送信されてよい。例えば、不揮発性メモリ150は、応答がもはやDQ上で送信されていないことを示すべく、DQS上でポストアンブルを送信してよい。
【0085】
ブロック880では、バスの所有権がもはやクライアントに対して許可されていないことを示す指示は、取得され得る。例えば、NMI146は、不揮発性メモリ150がもはやDQの所有権を有しないことを不揮発性メモリ150に対して示すべく、RGRANTをデアサートしてよい。不揮発性メモリ150は、RGRANTがもはやアサートされていないことを検知して不揮発性メモリ150がもはやDQの所有権を有しないことを判断してよい。
【0086】
図9は、本明細書において説明されている複数の技術を実装し得るコンピューティングデバイス900の別の例示的実施形態のブロック図を示す。
図9を参照すれば、コンピューティングデバイス900は、例えば、ロジック920、一次記憶装置930、二次記憶装置950、1つまたは複数の入力デバイス960、1つまたは複数の出力デバイス970、及び/またはより1つまたは複数の通信インターフェース980のような、様々なコンポーネントを含んでよい。
図9は、コンピューティングデバイス900の例示的実施形態を示すことに留意されたい。コンピューティングデバイス900の複数の他の実施形態は、
図9に示されている複数のコンポーネントより多くのコンポーネントまたはより少ないコンポーネントを含んでよい。さらに、複数のコンポーネントは、
図9に示されているものと異なって配置されてよい。例えば、コンピューティングデバイス900の実施形態において、二次記憶装置950は、「クラウド」ストレージを提供するリモートサイトにおいて含まれ得る。当該サイトは、例えば、インターネットのような通信ネットワークを介して、コンピューティングデバイス900へアクセス可能であってよい。通信インターフェース980は、コンピューティングデバイス900を通信ネットワークとインターフェースするのに用いられてよい。
【0087】
また、コンピューティングデバイス900の複数の他の実施形態に含まれる様々なコンポーネントによって提供される複数の特徴は、本明細書において説明されているものと異なる複数のコンポーネント中に分散されてよいことに留意されたい。コンピューティングデバイス900は、コンピューティングデバイス900における複数のコンポーネント中の通信を可能にし得る入力/出力(I/O)バス910を含んでよい。複数のコンポーネントは、例えば、ロジック920、二次記憶装置950、1つまたは複数の入力デバイス960、1つまたは複数の出力デバイス970、及び/または1つまたは複数の通信インターフェース980を含んでよい。通信は、例えば、I/Oバス910を介して複数の制御信号及び/またはデータを複数のコンポーネントの間で伝達することを伴ってよい。I/Oバス910を実装するのに用いられ得る複数のI/Oバスは、例えば、シリアルATアタッチメント(SATA)、周辺構成要素相互接続(PCI)、PCIエクスプレス(PCI−e)、ユニバーサルシリアルバス(USB)、スモールコンピュータシステムインターフェース(SCSI)、シリアルアタッチドSCSI(SAS)、またはいくつかの他のI/Oバスを含んでよい。
【0088】
複数の入力デバイス960は、情報をコンピューティングデバイス900に入力するのに用いられ得る1つまたは複数のデバイスを含んでよい。複数のデバイスは、例えば、キーボード、コンピュータマウス、マイク、カメラ、トラックボール、ジャイロスコープ式デバイス(例えば、ジャイロスコープ)、ミニマウス、タッチパッド、スタイラス、グラフィックスタブレット、タッチスクリーン、(アイソトニックまたはアイソメトリック)ジョイスティック、ポインティングスティック、加速度計、パームマウス、フットマウス、パック、眼球制御デバイス、フィンガーマウス、ライトペン、光射銃、ニューラルデバイス、目追跡デバイス、ステアリングホイール、ヨーク、ジョグダイヤル、スペースボール、方向性パッド、ダンスパッド、ソープマウス、ハプティックデバイス、触覚装置、マルチポイント入力デバイス、分離ポインティングデバイス、及び/またはいくつかの他の入力デバイスを含んでよい。
【0089】
情報は、例えば、コンピュータマウスのようなポインティングデバイスを用いて、コンピューティングデバイス900に入力され得る空間的(例えば、連続的、多次元の)データを含んでよい。情報はまた、例えば、キーボードを用いて入力され得るテキストのような複数の他の形態のデータを含んでもよい。
【0090】
複数の出力デバイス970は、コンピューティングデバイス900から情報を出力し得る1つまたは複数のデバイスを含んでよい。複数のデバイスは、例えば、陰極線管(CRT)、プラズマディスプレイデバイス、発光ダイオード(LED)ディスプレイデバイス、液晶ディスプレイ(LCD)デバイス、真空蛍光ディスプレイ(VFD)デバイス、表面伝導型電子放出ディスプレイ(SED)デバイス、電界放出ディスプレイ(FED)デバイス、ハプティックデバイス、触覚装置、プリンタ、スピーカ、ビデオプロジェクタ、ボリューメトリックディスプレイデバイス、プロッタ、タッチスクリーン、及び/またはいくつかの他の出力デバイスを含んでよい。
【0091】
複数の出力デバイス970は、例えば、ロジック920によって、コンピューティングデバイス900から情報を出力すべく指示されてよい。出力デバイス970上で情報を出力することは、例えば、出力デバイス970上において情報を提示(例えば、表示、印刷)することを含んでよい。情報は、例えば、テキスト、複数のグラフィカルユーザインターフェース(GUI)エレメント(例えば、複数のウィンドウ、複数のウィジェット、及び/または複数の他のGUIエレメント)、オーディオ(例えば、音楽、複数の音声)、及び/または複数の出力デバイス970によって出力され得る他の情報を含んでよい。
【0092】
複数の通信インターフェース980は、コンピューティングデバイス900を、例えば、1つまたは複数の通信ネットワークとインターフェースするロジックを含んでよく、コンピューティングデバイス900に、複数の通信ネットワークに連結されている1つまたは複数のエンティティ(例えば、複数のノード)と通信を行わせることを可能にし得る。複数の通信ネットワークは、例えば、インターネット、複数の広域ネットワーク(WAN)、複数のローカルエリアネットワーク(LAN)、3G及び/または4G(例えば、4Gロングタームエボリューション(LTE))ネットワークを含んでよい。
【0093】
複数の通信インターフェース980は、コンピューティングデバイス900に、複数の通信ネットワークに連結されている複数のエンティティと通信を行わせることを可能にし得る、1つまたは複数の、トランシーバのような機構を含んでよい。複数の通信インターフェース980の複数の例は、内蔵型ネットワークアダプタ、ネットワークインターフェースカード(NIC)、パーソナルコンピュータメモリカードインタナショナルアソシエーション(PCMCIA)ネットワークカード、カードバスネットワークアダプタ、無線ネットワークアダプタ、ユニバーサルシリアルバス(USB)ネットワークアダプタ、モデム、及び/またはコンピューティングデバイス100を通信ネットワークとインターフェースするのに適した他のデバイスを含んでよい。
【0094】
一次記憶装置930及び/または二次記憶装置950は、例えば、上において説明された複数のストレージモジュールのような1つまたは複数のストレージモジュールを含んでよい。コンピューティングデバイス900は、一次記憶装置930に格納されている情報をロジック920と一次記憶装置930との間で伝達されることを可能にし得るメモリバス990を含んでよい。情報は、例えば、複数のコンピュータ実行可能命令及び/またはロジック920によって実行、操作及び/またはそうでなければ処理され得るデータを含んでよい。一次記憶装置930は、メモリバス990を介してロジック920へアクセス可能であってよい。一次記憶装置930は、情報を格納し得る有形で非一時的なストレージであってよい。情報は、複数のコンピュータ実行可能命令、及び/または、オペレーティングシステム(OS)932及びアプリケーション(APP)934またはそれらの複数の部分を実装し得るデータを含んでよい。情報は、ロジック920によって実行、翻訳、操作、及び/またはそうでなければ処理され得る。一次記憶装置930は、情報を格納し得る1つまたは複数のメモリデバイスを用いて実装されてよい。複数のメモリデバイスは、上において説明されたような複数の揮発性及び/または不揮発性メモリデバイスを含んでよい。
【0095】
OS932は、例えば、(1)APP934の1つまたは複数の部分をロジック920上で実行(例えば、ロジック920によって実行)するようにスケジューリングし、(2)一次記憶装置930を管理し、及び(3)コンピューティングデバイス900における様々なコンポーネント(例えば、複数の入力デバイス960、複数の出力デバイス970、複数の通信インターフェース980、二次記憶装置950)とこれらの複数のコンポーネントによって受信され及び/または送信される情報へのアクセスを制御することを含み得る様々な従来のオペレーティングシステム機能を実装し得る従来のオペレーティングシステムであってよい。
【0096】
OS932を実装するのに用いられ得る複数のオペレーティングシステムの複数の例は、Linux(登録商標)オペレーティングシステム、マイクロソフト ウィンドウズ(登録商標)オペレーティングシステム、シンビアンオペレーティングシステム、Mac OSオペレーティングシステム、及びアンドロイドオペレーティングシステムを含んでよい。用いられ得るLinux(登録商標)オペレーティングシステムの配信は、ノースカロライナ州ローリーに所在のレッドハットコーポレーションから入手可能なレッドハットLinux(登録商標)である。用いられ得るマイクロソフト ウィンドウズ(登録商標)オペレーティングシステムの複数のバージョンは、ワシントン州レドモンドに所在のマイクロソフト社から入手可能な、マイクロソフト ウィンドウズ(登録商標)モバイル、マイクロソフト ウィンドウズ(登録商標)8、マイクロソフト ウィンドウズ(登録商標)7、マイクロソフト ウィンドウズ(登録商標)ビスタ、及びマイクロソフト ウィンドウズ(登録商標)XPオペレーティングシステムを含む。シンビアンオペレーティングシステムは、アイルランドのダブリンに所在のアクセンチュアPLCから入手可能である。Mac OSオペレーティングシステムは、カリフォルニア州クパチーノに所在のアップル社から入手可能である。アンドロイドオペレーティングシステムは、カリフォルニア州メンローパークに所在のグーグル社から入手可能である。
【0097】
APP934は、コンピューティングデバイス900上においてOS932の制御下実行し得るソフトウェアアプリケーションであってよい。APP934及び/またはOS932は、二次記憶装置950において情報を格納することを伴い得る複数のトランザクションを処理用の複数の提供を含んでよい。これらの複数の提供は、データ及び/またはAPP934及び/またはOS932に含まれる複数のコンピュータ実行可能命令を用いて実装されてよい。二次記憶装置950は、コンピューティングデバイス900用の情報を格納し得る有形で非一時的なストレージであってよい。情報は、例えば、複数のコンピュータ実行可能命令及び/またはデータを含んでよい。情報は、ロジック920によって実行、翻訳、操作、及び/またはそうでなければ処理されてよい。二次記憶装置は、情報を格納し得る1つまたは複数のストレージデバイス952を含んでよい。複数のストレージデバイス952は、I/Oバス910を介してロジック920へのアクセス可能であってよい。複数のストレージデバイス952は、揮発性または不揮発性であってよい。複数のストレージデバイス952の複数の例は、複数の磁気ディスクドライブ、複数の光学ディスクドライブ、複数のランダムアクセスメモリ(RAM)ディスクドライブ、複数のフラッシュドライブ、複数の固体ディスク(SSD)、及び/または複数のハイブリッドドライブを含んでよい。情報は、複数のストレージデバイス952に含まれる1つまたは複数の有形で非一時的なコンピュータ可読メディア上で格納されてよい。複数のストレージデバイスに含まれ得る有形で非一時的なコンピュータ可読メディアの複数の例は、複数の磁気ディスク、複数の光学ディスク、複数の揮発性メモリデバイス、及び/または複数の不揮発性メモリデバイスを含んでよい。
【0098】
ロジック920は、情報を解釈、実行、及び/またはそうでなければ処理する処理ロジック(PL)922を含んでよい。情報は、一次記憶装置930及び/または二次記憶装置950に格納され得る情報を含んでよい。さらに、情報は、1つまたは複数の、入力デバイス960及び/または通信インターフェース980によって、取得(例えば、読み取り、受信)され得る情報を含んでよい。PL922は、様々な異種ハードウェアを含んでよい。例えば、ハードウェアは、1つまたは複数のプロセッサ、複数のマイクロプロセッサ、複数のフィールドプログラマブルゲートアレイ(FPGA)、複数の特定用途向け命令セットプロセッサ(ASIP)、複数の特定用途向け集積回路(ASIC)、複数のコンプレックスプログラマブルロジックデバイス(CPLD)、複数のグラフィックス処理ユニット(GPU)、及び/または、例えば、情報を解釈、実行、操作、及び/またはそうでなければ処理する複数の他の種類の処理ロジック、のいくつかの組み合わせを含んでよい。ロジック920は、単一のコアまたは複数のコアを備えてよい。
【0099】
ロジック920はまた、処理ロジックを一次記憶装置930とインターフェースするインターフェースロジック(IL)924を含んでもよい。IL924は、バス990を介して一次記憶装置930とロジック920との間で伝達されうる情報を伝達用の複数の提供を含んでよい。情報は、上において説明された複数の技術のような様々な技術を利用して伝達されてよい。例えば、実施形態において、一次記憶装置930は、バス990を介してロジック920へアクセス可能であってよい不揮発性メモリを含んでよい。IL924は、上において説明された複数の技術のような様々な技術を用いて、バス990を介して一次記憶装置930に含まれる不揮発性メモリとPL922との間で情報を通信するのに用いられ得るロジックを含んでよい。IL924に含まれ得るロジックは、例えば、複数のステートマシン、複数のバストランシーバ、複数のレジスタ、及び/または、不揮発性メモリとPL922との間で情報を伝達することを可能にすべく用いられ得る他のロジックを含んでよい。情報は、例えば、上において説明されたような複数の要求及び/またはデータを含んでよい。前の複数の実施形態の説明は、図示と説明を提供することを意図されるが、包括的なものまたは本発明を開示された緻密な形態に限定するものを意図されない。複数の変更及び複数の変形は、上述の教示内容を鑑みて適用可能であり、また、本発明の実施より得ることができる。例えば、一連の複数の動作が
図5A―B、6A―B、7A―B及び8A―Bに関連して上において説明された一方で、複数の動作の順序は、複数の他の実装において変更されてよい。さらに、複数の非依存性の動作は、並行して実行されてよい。
【0100】
また、「ユーザ」という用語は、異なって記述されていない限り、本明細書において用いられたように、例えば、コンピューティングデバイス(例えば、固定コンピューティングデバイス、モバイルコンピューティングデバイス)またはコンピューティングデバイスのユーザを含むように広く解釈されることを意図される。
【0101】
本明細書において説明されている1つまたは複数の実施形態がソフトウェア及び/またはハードウェアの多くの異なる形態で実装されてよいことは明らかであろう。本明細書において説明された複数の実施形態を実装するのに用いられるソフトウェアコード及び/または専用ハードウェアは、本発明を限定するものではない。従って、複数の実施形態の処理及び動作は、特定のソフトウェアコード及び/または専用ハードウェアを参照することなく説明され、当業者が本明細書における説明に基づいてソフトウェア及び/またはハードウェアを設計して複数の実施形態を実装できることは理解されるであろう。さらに、本発明の複数の特定の特徴は、例えば、処理ロジック130または処理ロジック922のような処理ロジックによって実行され得る複数のコンピュータ実行可能命令を用いて実装されてよい。複数のコンピュータ実行可能命令は、1つまたは複数の非一時的で有形のコンピュータ可読ストレージメディア上において格納され得る。メディアは、揮発性または不揮発性であってよく、例えば、DRAM、SRAM、複数のフラッシュメモリ、複数のリムーバブルディスク、複数の固定型ディスク、及びその他を含んでよい。
【0102】
本明細書において用いられているエレメント、動作または命令は、特に明示的に説明されない限り、本発明に重大または不可欠であると解釈されるものではない。また、本明細書において用いられているように、「a」という冠詞は、1つまたは複数のアイテムを意図される。1つのアイテムのみを意図する場合は、「1つ」という用語または類似の言語が用いられる。さらに、「基づく」という表現は、明示的に異なって記述されない限り、「少なくとも部分的に基づく」を意味することを意図される。
【0103】
本発明は上において開示された複数の特定の実施形態に限定されないが、本発明は以下の添付の特許請求の範囲の範囲内における任意及び全ての複数の特定の実施形態及び同等のものを含みうることを意図される。