(58)【調査した分野】(Int.Cl.,DB名)
デジタルネットワークバス(104)を経由してバスコントローラ(102)から遠隔デバイス(106)でコマンドを受信することであって、前記遠隔デバイス(106)が、複数のロケーションのデータを記憶するように構成された不揮発性メモリ(502)であって、ベースメモリ(502a)及び拡張メモリ(502b)を含む不揮発性メモリ(502)と、対応する複数のロケーションに前記不揮発性メモリ(502)の前記複数のロケーションのイメージを記憶するように構成された揮発性シャドウメモリ(504)であって、前記ベースメモリ(502a)のイメージを記憶するように構成されたベースシャドウメモリ(504a)及び前記拡張メモリ(502b)の選択可能なサブセットのイメージのみを記憶するように構成された拡張シャドウメモリ(504b)を含む揮発性シャドウメモリ(504)とを含む、受信することと、
前記コマンドの受信に応答して、前記デジタルネットワークバス(104)からのデータを前記不揮発性メモリ(502)中のロケーションに書き込むことであって、前記揮発性シャドウメモリ(504)中の前記対応するロケーションに前記データを書き込むことと、その後に前記揮発性シャドウメモリ(504)の前記対応するロケーションから前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むこととを含む、書き込むことと
を含む、方法。
前記揮発性シャドウメモリ(504)から前記不揮発性メモリ(502)に書込みサイクルを遂行することであって、前記揮発性シャドウメモリ(504)中の前記対応するロケーションから前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むことを含む、書込みサイクルを遂行することをさらに含み、
前記書込みサイクルが、前記不揮発性メモリ(502)中の前記ロケーションの保護ステータスまたは非保護ステータスを検査することをさらに含み、前記ロケーションが非保護ロケーションである事例でのみ、前記データが、前記不揮発性メモリ(502)中の前記ロケーションに書き込まれる、請求項1に記載の方法。
前記検査することと書き込むこととを含む前記書込みサイクルが、前記不揮発性メモリ(502)の前記ロケーションの各々に対して遂行され、前記書込みサイクルのために前記揮発性シャドウメモリ(504)が、前記揮発性シャドウメモリ(504)の対応するロケーションにイメージを記憶するように構成される、請求項3に記載の方法。
前記揮発性シャドウメモリ(504)から前記不揮発性メモリ(502)に書込みサイクルを遂行することであって、前記揮発性シャドウメモリ(504)中の前記対応するロケーションから前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むことを含み、前記揮発性シャドウメモリ(504)中の前記対応するロケーションの前記データが第2のデータである、書込みサイクルを遂行することをさらに含み、
前記書込みサイクルが、前記不揮発性メモリ(502)中の前記ロケーションから第1のデータを読み出すことと、前記第1のデータと前記第2のデータを比較することとをさらに含み、前記第1のデータが前記第2のデータと異なる事例でのみ、前記第2のデータが、前記不揮発性メモリ(502)中の前記ロケーションに書き込まれる、請求項1に記載の方法。
前記読み出すことと、比較することと、書き込むこととを含む前記書込みサイクルが、前記不揮発性メモリの前記ロケーションの各々に対して遂行され、前記書込みサイクルのために前記揮発性シャドウメモリが、前記揮発性シャドウメモリの対応するロケーションにイメージを記憶するように構成される、請求項6に記載の方法。
【発明を実施するための形態】
【0014】
ここで、本開示のいくつかの実施については、これ以降添付の図面を参照してより十分に説明され、本開示の全てではないがいくつかの実施が示される。実際には、本開示の種々の実施については、多くの異なる形状で実現することができ、本明細書に明記された実施に限定されると解釈されるべきではなく、むしろ、本開示が、徹底かつ完成されていること、また本開示の範囲を当業者に十分に伝えるように、これらの例示的実施が、提供される。本開示の例示的実施によれば、用語「データ」「コンテンツ」「情報」および同様の用語は、送信、受信、操作、翻訳、記憶などができるデータを互換的に参照するように使用されうる。同様の参照番号は、全体を通して同様の要素を参照する。
【0015】
始めに、本開示の例示的実施は、いずれのタイプのネットワークシステムでも使用されうることが重要である。ネットワークシステムは、航空機、宇宙機、車両、建築物、工場または任意の他のパッケージ、構造もしくは環境の中に常在することができる。例として、システム、ネットワークデバイスおよび方法は、回転翼航空機に常在するネットワークシステムで実施することができ、このネットワークは、共通のネットワークバスに接続されたバスコントローラおよび1つまたは複数の遠隔デバイスなどのネットワークデバイスを含む。遠隔デバイスの各々には、航空機の種々の構成部品に関わる性能、ステータスなどを判断するために、共通のネットワークを経由してバスコントローラと通信するように構成された、トランスデューサ(例えば、センサ、アクチュエータ)、サブシステムなどの1つまたは複数の周辺装置が含まれるか、さもなければ結合されうる。トランスデューサは、例えば航空機の主ロータシステムの歪み、加速度、および圧力を監視するためのセンサを含んでもよい。
【0016】
本開示の例示的実施は、自動車などの車両のネットワークシステムでも実施することができ、このネットワークシステムは、車両の異なる構成部品に接続された周辺装置を含む。例えば、周辺装置には、いくつか挙げれば、スロットルの位置、油圧、水温、トランスミッション液圧、シート位置、アンチロックブレーキシステム、サスペンション、受動的安全システムおよびステアリングシステム、を監視するためのセンサが含まれうる。他の例では、周辺装置には、バスコントローラからのコマンドに応答して特定の機能を遂行するためのアクチュエータが含まれうる。自動車の用途では、例えば、周辺装置には、いくつか挙げれば、スロットルの位置、アンチロックブレーキシステム、サスペンション、受動的安全システムおよびアクティブサスペンションシステムを制御するためのアクチュエータが含まれうる。
【0017】
さらに、周辺装置には、音声または映像ソースが含まれうる。例えば、周辺装置には、ラジオ受信機、テープカセットプレーヤ、CDプレーヤ、MP3プレーヤ、携帯電話受信機、または、いくつかの事例ではストリーム音声信号を含む音声信号をネットワークバスに供給するための他の音声ソースが含まれうる。これに対応して、周辺装置には、音声信号をネットワークバスから受信するため、また対応する音声出力を供給するための、スピーカ、ヘッドフォンジャックなどが含まれうる。同様に、周辺装置には、テレビジョン受像機、映像カセットプレーヤ、DVDプレーヤ、または、ストリーム映像信号を含む映像信号をネットワークバスに供給するための他の映像ソースが含まれうる。これに対応して、周辺装置には、映像信号を受信するため、また映像信号に基づいてイメージを表示するための映像モニタなどが含まれうる。
【0018】
本開示の例示的実施が、任意の特定のプロトコルおよびネットワーク構造に基づいてよいことも理解されよう。一例では、システム、ネットワークデバイスおよび方法が、前述の米国特許第6,708,239号および米国特許出願公開第2002/0112070号で説明された、プロトコルおよびネットワーク構造に基づくことができる。他の関連資料には、米国特許第6,938,106号、第7,082,485号、第7,096,285号、第7,111,100号、第7,174,402号、第7,277,970号、第7,346,719号、第7,552,256号、第7,581,031号、第7,630,431号および第7,894,562号が含まれる。
【0019】
前述のプロトコルおよびネットワーク構造は、多くの従来型のデジタルネットワークに勝る多くの利点をもたらすことができる。背景の段落で解説した通り、以前の多くのデジタルネットワークは、各ネットワークデバイスが比較的高水準のプロセッサを有することが要求される複雑なプロトコルに従って動作する。これは、次にはネットワークデバイスのコストを増す恐れがある。さらに、高水準のプロトコルにより、バス上で伝送されうるデータサンプル数を厳しく制約しうるオーバーヘッドがバス上のメッセージに導かれる可能性がある。これらのネットワークはまた、一般に、取得および制御ともにサポートしておらず、典型的に、比較的短い長さに及ぶネットワークをサポートするだけである。さらに、これらのネットワークは、典型的に、ネットワークデバイスインターフェースがかさばり、ネットワークのデータレートが遅く、および/またはネットワークデバイスのカウントが低い。加えて、デジタルネットワークを含む多くのコンピュータシステムが、時間決定性の方式で動作せず、したがって、正確なタイミングで反復しまたは翻訳され実行されるような、ネットワーク構成部品へのトリガコマンドをスケジュールする能力に欠ける。
【0020】
これらの欠点に照らして、前述の米国特許第6,708,239号および米国特許出願公開第2002/0112070号のデジタルネットワーク構造およびプロトコルは、より複雑でないデバイスの実施を可能にする低水準の命令セットを使用する。このネットワーク構造およびプロトコルは、データレートの増大を可能にし、正確なタイミングのデータ取得またはネットワークバス上の他の活動を可能にするコマンド構造を使用することもできる。
【0021】
本開示の例示的実施は、様々なネットワークアーキテクチャに基づくことができるが、例示的実施の機能は、先のネットワーク構造およびプロトコルの既存のコマンド構造に付加されうる。すなわち、本開示の種々の例は、米国特許第6,708,239号および米国特許出願公開第2002/0112070号のデジタルネットワーク構造およびプロトコルに基づくことができる。具体的には、以下で説明するコマンドは、このプロトコルと同じまたは同様の構造を用いて実施することができ、また通信構造は、同じまたは同様とすることができる。
【0022】
図1を参照すると、本開示の例示的実施が実施されうる概略的なネットワークシステムが示されている。具体的には、
図1は、ホストコンピュータまたはバスコントローラ102を有するネットワークシステム100、ネットワークバス104および1つまたは複数の遠隔デバイス106(例として2つ示す)を示し、これらは各々、センサ、アクチュエータなど(例として5つ示す)の1つまたは複数の周辺装置108を含むか、さもなければ結合されうる。この構成では、バスコントローラは、ネットワークシステムの構成および制御を提供することができる。個々の遠隔デバイスは、バス上の遠隔デバイスを一意に定義する割り当てられた識別子またはアドレスを含むことができる。一例では、各遠隔デバイスが、その1つまたは複数の周辺装置に対してそれぞれ1つまたは複数のデータチャネルを含むことができ、各データチャネルは、各データチャネルを経由して個別の通信を可能にするように個別にアドレス指定されうる。
【0023】
オペレーション中に、バスコントローラ102は、ネットワークバス104を経由して1つまたは複数の遠隔デバイス106にアドレス指定したコマンドを送ることができる。アドレス(複数可)によってそれぞれ指定された遠隔デバイス(複数可)またはそれらの周辺装置(複数可)は、コマンドに関連する活動を遂行し、送られるべきネットワークバス上にデータを置くことによって、バスコントローラと1つまたは複数の他の遠隔デバイスのどちらかに応答することができる。加えてまたはあるいは、例えば、遠隔デバイス(複数可)は、センサなどの周辺装置の着信データ測定を開始することによってトリガコマンドなどのコマンドに応答し、またはアクチュエータなどの周辺装置の出力へ値を移動することができる。
【0024】
いくつかの例では、遠隔デバイス106は、信号調節を提供することができ、周辺装置をバスコントローラ102とインターフェース接続するために組込み式のデバイスインターフェースを含むことができる。いくつかの例では、このデバイスインターフェース(ネットワークデバイスインターフェース、NDIと呼ばれることもある)は、そうでなければバスコントローラと直接通信できないような周辺装置と共に使用されうる。デバイスインターフェースは、バスコントローラからのコマンド、および、センサまたは動作中のアクチュエータからのデータの受信など、バスコントローラからのコマンドおよびデータに基づく制御信号調節を受信し翻訳することができる。
【0025】
上で示唆したように、種々の例では、ネットワークシステム100は、バスコントローラ102および/または遠隔デバイス106など、より複雑でないネットワークデバイスを可能にするような低水準の命令セットを使用するデータプロトコルと併せて動作することができる。これにより、コントローラがネットワークバス104を渡って一度に1つまたは複数の遠隔デバイスと通信することが可能となりうる。プロトコルが簡単になったため、ネットワークデバイスが、高水準のプロセッサを必要としない可能性もある。代わりに、種々の例で、ネットワークデバイスは、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)などの低水準プロセッサとして実施されうるハードウェアベースのステートマシンを含むことができる。種々の例でマイクロコントローラまたはプロセッサの代わりにステートマシンを使用することによって、例示的実施は、多くのプロセスの同時遂行を可能にすることができ、ネットワークデバイスの時間決定性および高速性能を補助する。
【0026】
バスコントローラ102が、共通のネットワークバス104を経由して、遠隔デバイス106に接続することができるので、バスコントローラは、ネットワークシステム100を制御するための、各遠隔デバイスまたはその周辺装置への専用の接続を必要としない可能性がある。代わりにバスコントローラは、遠隔デバイスおよびその周辺装置を、割り当て、制御するために、アドレッシングスキームを使用することができる。ネットワークシステムを操作するために、各遠隔デバイスまたは遠隔デバイスの各チャネルに対して、1つまたは複数の論理アドレス、グローバルアドレスおよび/またはグループアドレスを含む、1つまたは複数のアドレスを割り当てることができる。種々の例では、1つまたは複数のこれらの論理アドレス、グループアドレスおよび/またはグローバルアドレスは、各遠隔デバイスに関連するユニバーサルユニーク識別子(UUID)を使用するプロセスに従って決定されうる。UUIDコードは、各遠隔デバイスに固有の80ビットコードであり、デバイスが製造された場所および日付に基づく。1つのこうした方法の例については、前述の米国特許出願公開第2002/0112070号を参照されたい。
【0027】
論理アドレスは、単一の遠隔デバイス106または遠隔デバイスの単一のデータチャネルによって認識することができ、バスコントローラ102が、この論理アドレスを、コマンド(またはリクエスト)を特定のネットワークデバイス/チャネルに向けるために使用することができる。他方でグローバルアドレスは、全ての遠隔デバイスによって認識することができ、バスコントローラが、このグローバルアドレスを、全ての遠隔デバイスを汎用的に初期化またはリセットするなど、汎用データおよびコマンドを交換するために使用することができる。グループアドレスは、ネットワーク上の遠隔デバイスの特定のグループによって認識することができ、バスコントローラが、このグループアドレスを、グループデータおよびコマンドを交換するために使用することができる。例えば、グループアドレススキームにより、バスコントローラが種々のサンプルレートで遠隔デバイスのグループ用の時間決定性トリガをセットアップすることが可能となる。別の例では、グループアドレススキームにより、遠隔デバイスのグループが、バスコントローラから禁止することなくネットワークバス104上のピアツーピア通信を確立することが可能となる。
【0028】
図2に、本開示の種々の例示的実施において、
図1に示す遠隔デバイス106に対応することができる、遠隔デバイス200の概略的なブロック図を示す。示されるように、遠隔デバイスは、1つまたは複数の周辺装置のデータチャネル204に結合されかつこれを定義するデバイスインターフェース202(例えば、ASIC、FPGA)を含むことができる。デバイスインターフェースは、本開示の例示的実施に従って機能を遂行するための種々の構成部品を含むことができる。例えば、デバイスインターフェースは、デバイスインターフェースをデータチャネルにそれぞれ接続させることができ、ポート制御論理によってそれぞれ制御されうる、シリアルポートまたはパラレルポートなどのポートを含むことができる。デバイスインターフェースは、種々のタイプの揮発性メモリを含むことができ、これらの揮発性メモリのうち少なくともいくつかが、1つまたは複数のデータレジスタ、データレジスタのスタックなどからなりうる。デバイスインターフェースは、種々の他のレジスタ(例えば、スタック深さレジスタ、ステータスレジスタ、デバイスインベントリレジスタ、コンフィグレーションレジスタ、チャネルサービスレジスタ、パッケージ定義レジスタ)、マルチプレクサ(例えば、データセレクトマルチプレクサ、出力データマルチプレクサ)、デコーダ(例えば、アドレスデコーダ、コマンドデコーダ)、制御論理なども含むことができる。さらに、デバイスインターフェースのいくつかの適した構成部品に関する詳細は、前述の米国特許第6,708,239号で見出されうる。
【0029】
示されるように、デバイスインターフェース202は、回路206をそれぞれ介してデータチャネル204に結合されうる。各データチャネル用に、この回路が、1つまたは複数の増幅器、フィルタ、減衰器など、周辺装置へのまたは周辺装置からのアナログ信号を調整するように構成された信号調整デバイス208を含むことができる。この回路は、適切なアナログ−デジタル変換器(ADC)および/またはデジタル−アナログ変換器(DAC)210も含むことができる。一例では、ADCは、デバイスインターフェース202とセンサとの間に接続することができ、デバイスインターフェースへの入力用に、センサチャネルからのアナログ信号をデジタルデータに変換するように構成されうる。同様に、例えば、DACは、デバイスインターフェースとアクチュエータとの間に接続することができ、アクチュエータチャネルへの入力用に、デバイスインターフェースからのデジタルデータをアナログ信号に変換するように構成されうる。いくつかのセンサまたはアクチュエータが、デジタル信号を生成しまたは直接受け取ることができ、その結果、回路がADCまたはDACを必要としなくてもよい可能性がある。
【0030】
デバイスインターフェース202は、
図1のネットワークバス104などのネットワークバスに接続することができ、
図1のバスコントローラ102などのバスコントローラと通信することができるように接続されうる。これに関して、遠隔デバイスは、バスコントローラにデータを送信するように構成された送信機212と、および/またはバスコントローラからコマンドおよびデータを受信するように構成された受信機214とを含むことができる。遠隔デバイス200は、ネットワークが同期モードで操作される事例では、バスコントローラから選択的な同期クロック信号を受信するように構成された第2の受信機216も含むことができる。同じく、遠隔デバイスは、同期モードまたは非同期モードでネットワークのオペレーションをサポートすることができる、局部発振器218を含むことができる。さらになお遠隔デバイスは、不揮発性メモリ220を含むことができる。デバイスインターフェースに結合されるように示したが、デバイスインターフェースの異なる実施では、代わりに、1つまたは複数の受信機、送信機、局部発振器、メモリデバイスなどを集積化することができる。
【0031】
図3は、一例示的実施による方法300での種々のオペレーションを示す図であり、遠隔デバイス106(例えば、遠隔デバイス200)が、センサおよび/またはアクチュエータなどの周辺装置を含むかさもなければ結合されうる。ブロック302に示すように、この方法は、バスコントローラ102がネットワークバス104を渡って遠隔デバイスにコマンドおよびデータをデジタル的に送ることを含むことができ、コマンドおよびデータは、遠隔デバイスの1つまたは複数のデータチャネルに対して指定されうる。ブロック304に示すように、コマンドおよびデータは、データプロトコルを使用してネットワークを渡って送信されてよく、遠隔デバイスが、データプロトコルの構造を使用してデータおよびコマンドを受信および翻訳をすることができる。
【0032】
一例では、コマンドワードは、同期部、メッセージ本体およびパリティビットを含むことができるメッセージに反映されうる。メッセージ本体は、コマンドのアドレス指定用のアドレスフィールドと、遂行するべきコマンドまたはオペレーションを明示するためのオペレーションコード(オペコード:opcode)フィールドとを含むことができる。一例では、構造上、メッセージが複数ビットを含むことができ、この複数ビットの各々は、ロー−ハイ遷移によって定義されるバイナリ「0」、およびハイ−ロー遷移によって定義されるバイナリ「1」などの、第1と第2の状態との間の遷移によって定義される値を有する。ブロック306に示すように、遠隔デバイス106は、コマンドおよびデータが、これら遠隔デバイスの任意のデータチャネルに対して指定されているかどうかを判断することができ、もしそうならば、ブロック308に示すように、遠隔デバイスがそれぞれ、(センサならば)指定されたデータチャネルからデータを取得するか、(アクチュエータならば)変換を遂行するためにデータチャネルにコマンドを出すことができる。ブロック310に示すように、センサチャネルから取り出したアナログデータは、デジタルデータに変換され、次いでデータプロトコルに従って適正なフォーマットに変換されうる。また、ブロック312に示すように、いずれの適切なデジタルデータもコントローラに送信されうる。
【0033】
図2に示唆したように、遠隔デバイス106は、種々のタイプの揮発性および不揮発性メモリを含むことができる。
図4に、遠隔デバイス402のメモリアーキテクチャ400を示し、種々の例で、遠隔デバイス402は、
図2の遠隔デバイス200に対応することができる。一般に、遠隔デバイスは、チャネルベースメモリとデバイスベースメモリとを含むことができる。
【0034】
図4に示すように、例えば、遠隔デバイス402は、各チャネル用の1つまたは複数のタイプの揮発性メモリなどのチャネルベースメモリを含むことができる。このチャネルベースメモリは、例えば、先入れ先出し(FIFO)メモリ404、および/またはテーブルメモリ406などのランダムアクセスメモリ(RAM)、コンフィギュレーションメモリ408などを含むことができる。遠隔デバイスは、不揮発性メモリを用いたデバイス記憶メモリ410などのデバイスベースメモリも含むことができ、選択的に、デバイスコンフィギュレーションメモリ412などの揮発性RAMをさらに含むことができる。一例では、揮発性メモリは、デバイスインターフェース202によって、データレジスタ(複数可)またはデータレジスタのスタック(複数可)中で実施されてよく、不揮発性デバイス記憶メモリは、不揮発性メモリ218に対応することができる。
【0035】
FIFOメモリ404は、先入れ先出しでアクセス可能とすることができ、それによって、メモリにそれぞれ置かれた第1の値は、FIFOメモリ404から取り出した第1の値とすることができる。チャネルのテーブルメモリ406およびコンフィギュレーションメモリ408は、チャネルの論理アドレスをそれぞれ使用して、アクセス可能とすることができ、図示した例では、チャネルごとに0000hでスタートすることができる。また、デバイス記憶メモリ410およびデバイスコンフィギュレーションメモリ412は、遠隔デバイス402内の任意のチャネルアドレスを使用してアクセス可能とすることができ、アドレス指定可能なチャネルベースのテーブルメモリおよびコンフィギュレーションメモリと同様に、アドレス指定可能なデバイスベースメモリは、0000hでスタートすることができる。すなわち、より概括的には、アドレス指定可能なチャネルベースメモリは、チャネルごとに同じ値を有し、アドレス指定可能なデバイスベースのメモリがスタートすることができるアドレスと同じ値を有する、アドレスでスタートすることができる。
【0036】
簡単に言うと、FIFOメモリ404およびテーブルメモリ406は、リアルタイムデータストリーミング(本明細書で定義される「リアルタイム」は「準リアルタイム」を含む)のためにバッファに入れる、データ取得などの種々の目的のために使用されうる。FIFOメモリは、構成のためにも使用されうる。デバイス記憶メモリ410は、情報を記憶するものとしてよい。デバイスコンフィギュレーションメモリ412およびコンフィギュレーションメモリ408は、遠隔デバイス402内の揮発性デバイスおよびチャネルセットアップのためのものとしてよく、デバイス記憶メモリからポピュレートされるか、さもなければロードされうる。次いで、種々の例示的実施では、デバイス記憶メモリおよびほとんどのコンフィギュレーションメモリは、リアルタイムデータ取得および制御モードで使用されるものでない。
【0037】
FIFOメモリ404は、周辺装置へのまたは周辺装置からのデータのストリーミングを可能にし、種々の例では周辺装置データ取得または制御チャネルとネットワークバス(例えばバス104)との間の「ステージングエリア」を提供することができる。各FIFOメモリは、in−FIFO404aとout−FIFO404bとを含むことができ、in−バッファ404cをさらに含むことができる。in−FIFOは、周辺装置とネットワークバスとの間のデータをバッファに入れることができ、一方out−FIFOは、ネットワークバスと周辺装置との間のデータをバッファに入れることができる。種々の例では、in−FIFOかout−FIFOのどちらかまたは両方が、データが周辺装置からそれぞれまたは周辺装置へそれぞれ転送される間に、FIFOからそれぞれ読み出しまたはFIFOの中へそれぞれ受信されうるように、デュアルポートとすることができる。種々の例では、in−FIFOかout−FIFOのどちらかまたは両方が、直接モードでまたはバッファモードで動作するように構成可能としてもよい。
【0038】
直接モードでは、in−バッファ404aは、周辺装置から直接データを得ることができる。一例では、データが、in−バッファ404cの中へ受信され、適切なコマンドを介して、取り出す準備ができたin−FIFOへと直接渡すことができる。直接モードのout−FIFO404bは、バスからデータを受け取り、このデータを直ちに周辺装置に転送することができる。バッファモードでは、in−FIFO404aおよびin−バッファ404cは、個別に活動することができる。周辺装置から受信したデータは、in−バッファに持ち込まれそこへ記憶されうる。次いでデータは、適切なコマンドで、in−バッファからin−FIFOへ移動することができる。バッファモードのout−FIFOは、バスからのデータを記憶し、コマンドでout−FIFOから周辺装置へデータを移動させることができる。
【0039】
FIFOメモリ404と同様に、個々のチャネルは、アドレス指定可能な方式で記憶された情報を包含するテーブルメモリ406を装備することができる。このメモリは、本来揮発性であり、多数の論理アドレスの値が動的に変化してもよい用途で使用されうる。種々の例では、このテーブルメモリは、カレントバリューテーブル(current value table:CVT)と呼ばれうる。このデータは、同期でまたは非同期でアップデートされうる。テーブルメモリ内に記憶されたメッセージは、1つまたは複数のアドレスロケーションに広がり、一例では、各ロケーションが、1ワード16ビット幅とすることができる。一例では、テーブルメモリアドレス指定およびメッセージサイズは、デバイスの製造者によって定義されうる。
【0040】
デバイス記憶メモリ410は、UUID、プロトコルバージョン、データチャネルの番号、論理アドレス、グループマスク、デバイスおよび/またはチャネルの構成情報、デバイス記憶メモリポインタ、周辺装置のブート情報、製造者定義のデバイスおよびチャネル情報、並びに製造者またはユーザが規定できる任意の他のデータなどのデータを記憶するために、遠隔デバイス402によって使用されうる。さらになお、例えば、デバイス記憶メモリは、遠隔デバイスの設置場所、校正データなどのユーザ定義の情報を記憶するためにも使用されうる。種々の例では、このデータの少なくとも一部は、電子データシート(EDS)を形成することができる。
【0041】
上で解説した通りに、デバイス記憶メモリ410は、不揮発性メモリを含むことができる。一例では、デバイス記憶メモリが、不揮発性デバイス記憶メモリと、不揮発性デバイス記憶メモリの少なくとも一部のイメージを記憶するように構成された揮発性デバイス記憶シャドウメモリ(単にシャドウメモリと呼ばれることもある)の両方を含むことができる。他の揮発性メモリと同様に、シャドウメモリは、デバイスインターフェース202によって、データレジスタ(複数可)またはデータレジスタのスタック(複数可)で実施されうる。種々の例では、デバイスメモリコマンドが、揮発性シャドウメモリにアクセスするために使用され、それによって、不揮発性デバイス記憶メモリに間接的にアクセスすることができる。
【0042】
図5に、一例示的実施によりデバイス記憶メモリ410に対応することができる、デバイス記憶メモリ500を示す。示されるように、デバイス記憶メモリは、不揮発性デバイス記憶メモリ502と揮発性デバイス記憶シャドウメモリ504とを含むことができる。やはり示されるように、一例では、不揮発性デバイス記憶メモリ502は、いくつかの(Ts)小さな選択可能なメモリ部(セグメントと呼ばれる)に区分されうる。第1のセグメントからセグメントのいくつかの決定された番号(n)までが、ベースメモリ502aを形成することができ、(もしあれば)任意の残りのセグメント(Ts−n)が、拡張メモリ502bを形成することができる。ベースメモリのサイズ(BMS)は、各セグメントのサイズ(MSS)の数整数倍とすることができる。これに関して、拡張メモリをスタートさせるセグメント番号は、BMSをMSSで除すことによって決定することができ、この結果は整数解になりうる。
【0043】
ベースメモリは、デバイスベースメモリアドレス0000h(不揮発性メモリのアドレス0000_0000h)でスタートすることができ、また、UUID、論理アドレス、ポインタ、メモリ属性、共通の構成、EDS、校正係数、ブートコードなどのデータを記憶することができる。一例では、シャドウメモリ504は、ベースシャドウメモリ504aを含むことができ、不揮発性デバイス記憶メモリ502のベースメモリ502aが、完全にシャドウイングされうる。したがって、シャドウメモリひいてはベースシャドウメモリに記憶されたデータは、回線速度で利用可能とすることができる。
【0044】
拡張メモリ502bは、追加の構成情報、デフォルト設定などのデータを記憶することができる。ベースメモリ502aと同様に、拡張メモリが、メモリセグメントに分割され、このメモリセグメントのセグメント番号が、最後のベースメモリセグメントから次第にインクリメントすることができる。一例では、シャドウメモリ504が、拡張シャドウメモリ504bを含むことができ、この拡張メモリが、完全にシャドウイングされうる。別の例では、拡張メモリセグメントのサブセット(例えば、1つ)などの、拡張メモリの選択可能な部分のみが、任意の所与の時間で拡張シャドウメモリにシャドウイングされうる。これに関しては、ベースメモリセグメントが、ベースシャドウメモリ504aに直接ロードされうる間、拡張メモリセグメントのサブセットが、コマンドによって選択され、拡張シャドウメモリにロードされうる。再度、シャドウメモリひいては拡張シャドウメモリに記憶されたデータが、回線速度で利用可能とすることができる。
【0045】
種々の例では、不揮発性デバイス記憶メモリ502(電源が取り外されたときそのデータを維持する)は、オペレーションの際に揮発性シャドウメモリ504(電源が取り外されたときにそのデータを消失する)よりはるかに遅いことがある。これらの例では、不揮発性メモリは、回線速度で遂行する能力がないことがあり、ネットワークバス(例えば、バス104)へのまたはネットワークバスからのデータトラフィックに遅れないようにすることができない恐れがあることを意味する。次いで、例示的実施によれば、より速い速度で動作し、読み出しまたはプログラムされるデータを不揮発性メモリへ「ステージする」ことができる揮発性シャドウメモリの使用によって、不揮発性デバイス記憶メモリが、増強されうる。
【0046】
図4を参照すると、遠隔デバイス402の電源投入またはリセットで、遠隔デバイスは、デバイス初期化フェーズと、デバイスおよび/またはチャネルの構成ブートフェーズとを含むことができるブートシーケンスを遂行することができる。デバイス初期化中、デバイス記憶メモリ410のデータが、リアルタイムでまたは準リアルタイムでアクセスされうるように、揮発性メモリ(例えば、テーブルメモリ406、コンフィギュレーションメモリ408、デバイスコンフィギュレーションメモリ412)または他のレジスタ空間へロードされうる。一例では、これは、UUID、実施されるマスク、論理アドレスおよびグループアドレス、デバイス記憶メモリポインタなどのデバイス記憶メモリアイテムから読み出すことを含むことができる。次いで、ブートフェーズは、デバイス、チャネルおよび周辺装置それぞれをオペレーションのために構成するプロセスとすることができる。
【0047】
例示的実施によれば、ネットワークシステムのプロトコルが、チャネルベースメモリおよびデバイスベースメモリ用のコマンドの異なる別個のセットを含むことができる。一例では、このプロトコルは、遠隔デバイス402のチャネルベースメモリにアクセスするためのチャネルコマンドのセット、および遠隔デバイスのデバイスベースメモリにアクセスするためのデバイスメモリコマンドの異なる別個のセットを含むことができる。
【0048】
チャネルコマンドは、種々のFIFOと別個のチャネルメモリコマンドとを含むことができ、これらを介して、FIFOメモリ404、テーブルメモリ406および/またはコンフィギュレーションメモリ408が、アクセス可能とすることができる。チャネルコマンドは、各チャネルとそのそれぞれのチャネルベースメモリとの間でデータをほぼ回線速度で移動するためにタイムベースコマンドを含む。これらのコマンドは、例えば、センサポートからデータを獲得して、アクチュエータポートにデータを提供するように設計され、および/または、効率的かつ「即時」の信号調整器(例えば、信号調整器208)の構成セットアップを提供するように設計されたコマンドを含むことができる。
【0049】
デバイスメモリコマンドは、それを介してデバイス記憶メモリ410およびデバイスコンフィギュレーションメモリ412が、アクセス可能とすることができるようなコマンドを含むことができる。これらのコマンドは、概ね静的な情報、オペレーション情報、構成情報、校正情報およびカタログ情報へのアクセス、ならびに/または、マイクロプロセッサメモリがアクセスのためにシャドウイングされうる今後の用途のためのマッピングしたメモリアクセスを提供するものとしてよい。
【0050】
ここで、種々のチャネルコマンドおよびデバイスメモリコマンドに関するさらなる情報が、以下で説明される。
【0051】
1.例示的なチャネルコマンドの説明
1つまたは複数の遠隔デバイス402は、データ取得または制御の用途およびチャネル構成について時間決定性の活動を遂行するのを可能にするために装備されうる。こうしたデバイスは、いくつかのタイムベースコマンドのうち1つを使用して、out−FIFO404bからin−FIFO404aへ、テーブルメモリ406へもしくはそこから、または、チャネルコンフィギュレーションメモリ408へもしくはそこから、データを移動することができる。遠隔デバイス内の各アドレス指定可能チャネルは、1つまたは複数の異なる揮発性メモリオプションを包含することができる。チャネルコマンドは、本来、各コマンドおよび応答のための実行時間が、よく理解され、予測され、定義などされうるように、リアルタイムとしてよい。各チャネルコマンドおよびそれへの応答の実行時間は、各デバイスメモリコマンドの実行時間より予測可能であり、それによって、コマンドそれぞれのタイミングの要件が異なるようになりうる。
【0052】
チャネルコマンドは、ADCまたはDAC(例えば、ADC/DAC210)からin−FIFOメモリ404aまたはout−FIFOメモリ404bを介してなど、リアルタイムで継続的に取得したデータをそれぞれ移動させるためのチャネルFIFOコマンドを含むことができる。これらのFIFOコマンドは、単一のデータワードおよび/または明らかにして定義されたデータワードのブロックの転送をもたらすことができる。FIFOコマンドは、遠隔デバイス402が、パッケージを使用してデータ転送サイズを事前定義することができる不揮発性デバイス記憶メモリ410内で事前構成されることを可能にすることもできる。こうしたパッケージコマンドを使用することで、読出しコマンドおよび書込みコマンド内のブロックサイズのワードをなくすことができる。パッケージサイズは、データブロックサイズを暗黙で定義してin−FIFOおよびout−FIFOから移動されうる。
【0053】
チャネルコマンドは、リアルタイムで継続的に取得したデータをテーブルメモリ406を介して移動させ、または適したコンフィギュレーションメモリ408の各チャネル用の構成情報をキャッシュするための、チャネルメモリコマンドを含むこともできる。これに関しては、揮発性アドレス指定可能メモリロケーションに記憶したリアルタイムで継続的に取得したデータを移動させるために使用されうる、アドレス指定可能メモリ空間に、着信(データ取得)データまたは発信(制御)データを保管するために、テーブルメモリが、使用されうる。
【0054】
コンフィギュレーションメモリ408は、チャネルのユーザ構成可能な属性を直ちにプログラムするために使用されうる。このメモリの値の変更は、一時的および揮発的とすることができる。デバイス記憶メモリ410は、揮発性チャネルメモリに構成設定を記憶しなくてもよい。ただし、種々の例では、設定が、遠隔デバイス402の電源再投入(power cycling)またはリセットの後に望まれうる事例などで、揮発性チャネルメモリのいずれの変更も、デバイス記憶メモリ中の同等の空間になされることが必要となりうる。チャネル構成値が、デバイス記憶メモリに記憶され、チャネルブートスケジュールが、電源投入またはリセット上に存在する事例では、遠隔デバイスが、チャネルコンフィギュレーションメモリをロードすることができ、不揮発性デバイス記憶メモリ内に記憶された値を用いてチャネルを構成することができる。反対に、チャネル構成値が、デバイス記憶メモリに保存されない事例では、遠隔デバイスがリセットされるときまたは電源が再投入されるとき、チャネル構成値は、デバイス記憶メモリに記憶された値に置き換えられうる。
【0055】
1.1.トリガ
トリガコマンドは、トリガコマンドワード内の遷移を使用して、遠隔デバイス402へのまたはそこからのデータを正確に保持するために使用されうる。この特徴は、グローバルタイムベースを確立するために使用されうる。
【0056】
センサとして構成される遠隔デバイスチャネルは、in−FIFO404aを利用することができる。一例では、トリガコマンドが受信されると直ちに変換信号が発生し、これにより、周辺装置がサンプル変換を開始することができる。サンプルが周辺装置によって発生すると、in−FIFOは、事前にプログラムされたデータ量を取得することができる。
【0057】
アクチュエータとして構成された遠隔デバイスチャネルは、out−FIFO404bを利用することができる。一例では、トリガコマンドを受信すると直ちに変換信号が発生することができ、これにより、周辺装置(例えば、DAC210)に対する出力コンポーネントがその出力をアップデートできるようになる。次いで、out−FIFOが、事前にプログラムされたデータ量を送り出すことができる。トリガオペレーションでは、out−FIFOが、常にバッファモード(直接モードは、データを受信すると直ちにデータを移動させてアクチュエータなどの周辺装置へ出す)としてよい。
【0058】
1.2.同期
同期コマンドは、上述のトリガオペレーションと同様のトリガオペレーションの遂行に加えて遠隔デバイス402を正確に同期させるために使用されうる。このコマンドは、同期信号およびトリガ信号を同時に生成することができる。
【0059】
一例では、同期コマンドは、等時性オペレーションとすることができ、同期トリガイベントは、同期コマンドメッセージのパリティビットのセンターエッジの変更時に発生することができる。同期信号の生成に加えて、同期コマンドは、遠隔デバイス402内で、前述のトリガコマンドと同じまたは同様のタイミングおよび挙動を有することができる。一例では、トリガ信号を用いた同期コマンドに対する応答は、強制とすることができるが、用途に応じて、同期信号の提供または使用は選択的としてもよい。
【0060】
1.3.チャネルステータス獲得
チャネルステータス獲得コマンドは、単一チャネルでチャネルを介してチャネルのステータスを取り出すものとすることができる。一例では、ステータスは、マルチビットステータスレジスタに(例えば、デバイスインターフェース202に)反映されてよく、チャネルステータス獲得コマンドは、ステータスレジスタのコンテンツの取り出すものとしてよい。ステータスレジスタのコンテンツは、複数のビットを含むことができ、そのうち保持されうるものもあるが保持されないものもありうる。一例では、ステータスワードがこのコマンドによって読み出されると、保持されたビットが消去されうる。
【0061】
チャネルステータス獲得コマンドに対する応答は、遠隔デバイス402のいくつかの異なる構成部品またはオペレーション能力のいずれのステータスも反映することができる。マルチビットステータスレジスタの場合では、例えば、各ビットは、設定時に特定のステータスを示すことができる。レジスタは、in−FIFO404a、out−FIFO404bまたはテーブルメモリ406へのアクセスを試みる間、および/またはメモリそれぞれに書込みを試みる間エラーを示すビットを含むことができる。
【0062】
ステータスレジスタは、エラー、または、in−FIFOの尚早な消去、in−FIFOへの転送用のリクエストした周辺装置データの欠如、リクエストしたチャネル転送オペレーションに対する割込みもしくは一時停止などの、FIFO404a、404bへのもしくはそこからのデータの転送に関する他の通知を示す他のビットを含むことができる。レジスタは、チャネル用のマスタフォルトフラグを表すビット、および/または内部の論理状態、ビジー状態などを示すビットを含むことができる。レジスタは、外部の周辺デバイスそれぞれに結び付いたビット、およびデバイスそれぞれのステータスを示すビットを含むことができる。レジスタは、テストモードでチャネルを示す、またはチャネルビルトインテスト(BIT)でエラーの発生を示すビットを含むことができる。チャネルが、マクロプロセスを行うことが可能にするさらなる例では、レジスタは、プロセスがイネーブルであることを示すビットを含むことができる。
【0063】
1.4.チャネルサービスセット
チャネルサービス設定コマンドは、各チャネルのチャネルサービスレジスタ(例えば、デバイスインターフェース202)などを介して、出力離散型サービスおよびオペコードオペレーションを遂行するために使用されうる。種々の例では、チャネルサービス設定コマンドは、オペコードオペレーションを示すための一部分(例えば、最下位(LS)バイト)、およびサービスオペレーションを示すための別の部分(最上位(MS)バイト)を含むことができる。
【0064】
チャネルサービスオペコードは、遠隔デバイス402を、BITまたは別のテストモードなどのテストモードに一時的に設定することができる。チャネルサービスオペコードは、一般的にリセットまたはその標準オペレーションモードに対して(例えば、別のオペコードを介して)リセットされるまで、または電源が再投入されるまで、遠隔デバイスの別のオペレーションモードに優先することができる。これらのテストモードのいくつかは、全てのデバイスに適用されなくてもよい。チャネルは、オペコードをサポートしない場合、無視されうる。
【0065】
サービスオペレーションを示すチャネルサービス設定コマンドの一部は、チャネル内の揮発性メモリおよび/または種々のレジスタをリセットするために使用されうるチャネルサービスリセットビットフィールドを含むことができる。一例では、フィールドは、マルチビットフィールドとすることができ、このフィールドの各ビットは、リセットまたはさもなければ消去するためのメモリを選択するために設定されうる。このフィールドは、チャネルのin−FIFO404aおよび/またはout−FIFO404bを消去するためのビットを含むことができ、種々の例では、入力および/または出力ポートそれぞれに関連する他の任意のバッファも消去することができる。このフィールドは、選択したメモリのコンテンツを消去して0000hにすることなどによってチャネルのテーブルメモリ406を消去するためのビットも含むことができ、種々の例では、このビットが、任意のアキュムレータを消去、または任意のタイマーをリセットすることもできる。これは、選択したメモリのみをリセットすることができ、コンフィギュレーションメモリ408のコンテンツに作用しなくてもよい。遠隔デバイス402は、このコマンドを受信後直ちに新コマンドを受け取る準備をすることができる。いくつかのセレクションは、サポートしなくてもよい。チャネルが、ビットセレクションをサポートしない場合、ビットセレクションは無視されうる。
【0066】
1.5.in−FIFO/out−FIFOカウント獲得
in−FIFOカウント獲得コマンドは、バッファモードでin−FIFO404aに、または直接モードでin−バッファ404cおよびin−FIFOに包含するワード数を決定するために使用されうる。同様に、out−FIFOカウント獲得コマンドは、out−FIFO404bに包含するワード数を決定するために使用されうる。このコマンドにより、遠隔デバイス402がin−FIFOまたはout−FIFOのそれぞれ1つに包含するワード数を表すマルチビット値を返すことができるようになりうる。
【0067】
1.6.周辺装置、FIFO間の転送
FIFO転送コマンドは、out−FIFO404bから遠隔デバイス周辺装置へ、および/または周辺装置からin−バッファ404cへデータを移動させるために使用されうる。このコマンドは、out−FIFOから周辺装置へ転送されるバイト数を、および/または周辺装置からin−バッファへ転送されるバイト数を明示するそれぞれの引数を含むことができる。しかしながらどちらの引数もゼロとすることができる。種々の例では、このコマンドは、バイト数を明示することができるが、データは、ワード境界で転送されうる。例えば、奇数バイトがあるとき、out−FIFOから送られたまたはin−バッファ404cに受信された最後のワードは、有効下位バイトおよび有効上位バイトを包含することができる。
【0068】
このコマンドを受信する遠隔デバイス402は、いくつかの異なる条件のためにいくつかの異なる方式で応答することができる。例えば、out−FIFO404bからの転送については、遠隔デバイスが、out−FIFO中に転送するべきワードがある限り、明示したバイト数を転送することができる。定義された転送が完結する前に、out−FIFOが、そのコンテンツを使い切る場合、コマンドは、強制終了することができる。in−FIFO404aが、単一のリクエストで生成する能力がありうるバイト数より、in−バッファ引数が大きい場合、FIFOが生成できる最大バイト数は、in−バッファ404cに転送されてよく、残りのリクエストは、無視されうる。これにより、フォルトを避け、意図したデータのみが周辺装置に出力されることを確実にすることができる。
【0069】
in−バッファ引数がゼロより大きいとき、in−FIFO404aは直接モードで動作することができ、out−FIFO引数がゼロより大きいとき、out−FIFO404bはバッファモードに設定されうる。どちらの事例でも、直接/バッファモードオペレーションは、チャネルの設定に関わらず行われるが、このオペレーションは、チャネルの構成設定と異なれば一時的なものとなりうる。
【0070】
out−FIFO引数がin−バッファ引数より大きいとき、in−バッファのコンテンツが、受信されて、引数間の差分後スタートすることができる。out−FIFO引数が、in−バッファ引数より小さいまたは等しいとき、他方では、転送がそれと同時に開始することができる。出力データが、全二重FIFO向けなど、明記したものをなお超えて要求されるならば、FIFO404は、定義済みの値を挿入してもよい。
【0071】
1.7.in−FIFOワード/ブロック/パッケージの読出し
これらのin−FIFO読出しコマンドは、遠隔デバイス402チャネルのin−FIFO404aから、データワード、ワードのブロックまたはいくつかのワードの定義済みパッケージを読み出し、ワード(複数可)をバス(例えば、バス104)上に転送するために使用されうる。一例では、データワード数は、コマンドに明示されうる。また一例では、1パッケージのワードにおいては、1パッケージのデータワード数は、遠隔デバイスのパッケージ定義レジスタ内で(例えば、デバイスインターフェース202で)事前に定義されうる。
【0072】
1.8.out−FIFOワード/ブロック/パッケージの書込み
これらのout−FIFO書込みコマンドは、データワード、ワードのブロックまたはワードの定義済みパッケージをバス(例えば、バス104)から受信し、out−FIFO404bにワード(複数可)を書き込むために使用されうる。読出しコマンドと同様に、一例では、データワード数は、コマンド中に明示されうる。同じく、例えば、1パッケージのデータワード数は、遠隔デバイスのパッケージ定義レジスタ内に事前に定義されうる。
【0073】
1.9.取得中のout−FIFOワード/ブロック/パッケージの書込み
これらの取得中out−FIFO書込みコマンドは、データワード、ワードのブロックまたはワードの定義済みパッケージをバス(例えば、バス104)から受信し、out−FIFO404bへワード(複数可)を書き込むために使用されうる。次いで、out−FIFOは、1つのデータワードを周辺装置からin−FIFO404aへ直ちに取得しながら、周辺装置に直接データを送ることができる。前の記述と同様に、一例では、データワード数は、コマンド中に明示されてよく、パッケージについては、パッケージ定義レジスタに事前に定義されうる。in−FIFOおよびout−FIFOは、直接モードまたはバッファモードのどちらにも設定されうる。ただし、これらのコマンドは、out−FIFOが直接モードに設定されるとき使用するものとしてよい。次いで、一例では、遠隔デバイス402が、out−FIFOがバッファモードである間にコマンドを受信した場合、遠隔デバイス402は、コマンドをout−FIFO書込みコマンドとしてみなしてもよい。
【0074】
1.10.チャネルメモリブロックの読出し/書込み
これらのコマンドは、データワードのブロックをデバイスのチャネルメモリからまたはそこへ読み出すまたは書き込むために使用されうる。このコマンドは、メモリロケーションポインタ値を示す引数を含むことができ、読出し/書込みオペレーションは、引数によってそれぞれ示されるチャネルメモリ中の位置でスタートすることができる。このコマンドは、遠隔デバイス402に、そのメモリからいくつのデータワードが、読み出されバス(例えば、バス104)上に転送されるべきか、または、バスからいくつのデータワードが受信され遠隔デバイスのメモリに書き込まれるべきかを知らせることができる、追加データの引数を含むことができる。遠隔デバイスは、渡したポインタ値でスタートしたデータを読出し/書込み、インクリメントするアドレスを逐次的に読み出し/書き込むことができる。
【0075】
2.例示的なデバイスメモリコマンドの説明
チャネルコマンドに加えて、プロトコルは、デバイスメモリコマンドを含むことができる。これらのコマンドは、遠隔デバイス402を構成するために使用されるデバイスベースメモリをアドレス指定するためのコマンドを含むことができる。上に示したように、種々の例では、このメモリ空間は、リアルタイムデータ取得オペレーション用のものとしなくてもよい。
【0076】
デバイスメモリコマンドは、一般に、構成を記憶するために使用される不揮発性デバイス記憶メモリ410、および初期化プロセスとランタイムオペレーションの両方のための制御情報をアドレス指定するが、揮発性デバイスコンフィギュレーションメモリ412もアドレス指定することができる。上で示唆したように、デバイス記憶メモリは、ユーザ提供情報と製造者記憶情報とを含むことができる。ユーザ提供情報は、例えば、デバイスおよびチャネルレベルでの遠隔デバイスの用途に固有の情報を含むことができ、チャネルパラメータ情報、校正係数などを含むことができる。製造者記憶情報は、例えば、ブートルーチンとデバイス固有の調整係数、他のユーザ変更不可情報などを含むことができる。種々の例では、デバイス記憶メモリ内の空間は、揮発性デバイスの不揮発性記憶部およびチャネルコンフィギュレーションメモリのために確保されうる。
【0077】
メモリロケーションとの読出しおよび書込みがうまくできるかということは、遠隔デバイス402のハードウェアの実施によって決まりうる。種々の例では、不揮発性メモリからの読出しまたそこへの書込みの両方に必要とされうる、デバイスインターフェースを介した(例えば、デバイスインターフェース202中の)製造者のメモリアクセス時間が、明示されうる。いくつかの例では、不揮発性デバイス記憶メモリ502の一部分が、アドレス指定可能な揮発性シャドウメモリ504中にシャドウイングされうる。次いで、デバイスメモリコマンドが、不揮発性空間のイメージであるこの揮発性メモリ空間にアクセスすることができる。
【0078】
例示的実施の遠隔デバイス402は、完全にまたは一部分のみシャドウイングされうる広いまたは限定された揮発性メモリ空間をサポートすることができる。いくつかの例では、デバイス記憶メモリ500が、ベースメモリ502aおよび拡張メモリ502bに分割されうるメモリセグメントに区分されうる。いくつかの例では、拡張メモリのセグメントのサブセットのみが、直接アドレス指定可能な拡張シャドウメモリ504bに同様にロードされうる間、ベースメモリ全体が、直接アドレス指定可能なベースシャドウメモリ504aにロードされうる。よって、デバイス記憶メモリは、より広い不揮発性メモリ(より限られた揮発性メモリ)を収容することができる。
【0079】
2.1.拡張メモリセグメントポインタの設定/獲得
これらのセグメントポインタコマンドは、遠隔デバイス402内のマルチビットデバイスメモリセグメントポインタを設定または読み出すことができる。設定コマンドについては、1つまたは複数の遠隔デバイスが、拡張メモリ502bの示したセグメントのコンテンツをもつ遠隔デバイスの拡張シャドウメモリ504bをそれぞれロードすることによって、このコマンドに応答することができる。次いで、他のデバイスメモリコマンドは、カレントのロードしたセグメントそれぞれに対して読み出しまたは書き込むことができる。獲得(読出し)コマンドについては、遠隔デバイスが、その拡張シャドウメモリからカレントのロードしたセグメントを用いて応答することができる。
【0080】
2.2.デバイスメモリポインタ獲得
このデバイスメモリポインタコマンドは、遠隔デバイス402内のマルチビットデバイスメモリアドレスポインタを読み出すことができる。1つまたは複数の遠隔デバイスは、そのデバイスメモリアドレスポインタそれぞれのカレントロケーションを用いてこのコマンドに応答することができる。
【0081】
2.3.デバイスメモリブロックの読出し/書込み
これらのコマンドは、データワードのブロックをデバイス記憶メモリ410からまたはそこへ読み出すまたは書き込むために使用されうる。このコマンドは、メモリロケーションポインタ値を示す引数を含むことができ、読出し/書込みオペレーションは、引数によってそれぞれ示されるデバイス記憶メモリ中の位置でスタートすることができる。このコマンドは、遠隔デバイス402に、そのデバイス記憶メモリからいくつのデータワードが、読み出されバス(例えば、バス104)上に転送されるべきか、または、バスからいくつのデータワードが受信され遠隔デバイスのデバイス記憶メモリに書き込まれるべきかを知らせることができる、追加データの引数を含むことができる。遠隔デバイスは、渡したポインタ値でスタートしたデータを読出し/書込み、インクリメントするアドレスを逐次的に読み出し/書き込むことができる。
【0082】
2.4.メモリ保護モードの設定
このコマンドは、デバイス記憶メモリ410のセクションをアンロックまたはロックするために使用されうる。このコマンドは、適切なアンロックコードを含む引数を含むことができる。
【0083】
再度
図5の例に戻ると、デバイスメモリ読出しコマンドは、回線速度でデータを返すことができるシャドウメモリ504にアクセスすることができる。いくつかの例では、シャドウメモリのサイズが、不揮発性デバイス記憶メモリ502のサイズより小さくなりうる。これらの例では、シャドウメモリは、不揮発性デバイス記憶メモリから可能とされうるデバイスメモリ読出しコマンドの範囲およびブロックサイズを定義することができる。よって、ベースメモリ502aのコンテンツは、ベースシャドウメモリ504a中のベースメモリのシャドウから直接読み出すことによって回線速度で読み出されうる。また、拡張メモリ502bのサブセットが、拡張シャドウメモリ504bに一旦ロードされると、サブセットそれぞれのコンテンツも、拡張シャドウメモリから直接読み出すことによって回線速度で読み出されうる。
【0084】
一例では、遠隔デバイスの電源投入またはリセット時に、拡張シャドウメモリ504bが、(ベースメモリ502aに続いて)拡張メモリ502bの第1の1つまたは複数のセグメントを含むサブセットで満たされる。セグメント(複数可)の別のサブセットを拡張シャドウメモリにロードするために、セグメントポインタ設定コマンドが、拡張シャドウメモリをセグメント(複数可)の他のサブセットで満たすために使用され、これにより、拡張シャドウメモリ中の以前のサブセットに上書きすることができる。セグメントを満たす時間は、遠隔デバイスが、適切なセグメントポインタ設定コマンドを受信後、拡張シャドウメモリを満たすことを要求することができる、時間を定義することができる。拡張シャドウメモリが一旦満たされると、このメモリは回線速度で読み出されうる。
【0085】
デバイスメモリ書込みコマンドは、シャドウメモリ504(ベース504aと拡張504bの両方)のデータをアップデートするために使用され、この書込みコマンドは、書込みスタートタイムアウト時間の後、不揮発性デバイス記憶メモリ502に戻る書込みサイクルをスタートすることができる。一例では、書込みスタートタイムアウト時間は、有効書込みの完了に続いてスタートすることができる。一例では、書込みスタートタイムアウト時間は、有効デバイスメモリ書込みコマンドの完了に続いてスタートすることができる。遠隔デバイスが(例えば、データワードを含まない)別の有効書込みコマンドを受信することなく、書込みスタートタイムアウト時間が経過する事例では、シャドウメモリから不揮発性デバイス記憶メモリへの書込みは、その書込みサイクルを開始することができる。一例では、データは、書き込まれる全てのデータが受信されるまで、シャドウメモリに書き込まれてもよく、タイムアウト時間は、データ受信が終了したことを示す。種々の例では、書込みサイクルが一旦開始すると、シャドウメモリ全体を不揮発性デバイス記憶メモリに書き込む試みが、開始することができる。一例では、不揮発性デバイス記憶メモリ502中の非保護(アンロックの)ロケーションのみが、おそらくさらに、コンテンツが変化したロケーションのみが、書き込まれうる。
【0086】
種々の例では、遠隔デバイスは、セグメントポインタ設定コマンドの受信に続いて、いくらかの定義した遅延(例えば、1ワード時間の遅延)の後、拡張メモリ502bのセグメントのサブセットを拡張シャドウメモリ504bにロードすることを開始することができる。ただし、いくつかの例では、セグメントポインタ設定コマンドは、定義した遅延内にデバイス書込みコマンドに直ちに続くことができ、このコマンドは、拡張シャドウメモリに書き込まれる。これらの例では、拡張メモリからのロードが、中断されてよく、代わりにデバイス書込みコマンドからのデータが、拡張シャドウメモリに書き込まれうる。次いで、書込みスタートタイムアウト時間が、満了した後、シャドウメモリ504は、不揮発性デバイス記憶メモリ502への書込みサイクルを開始することができる。
【0087】
シャドウメモリ504から不揮発性デバイス記憶メモリ502にデータを転送する最大書込みサイクル時間(Max WCT)は、書込みスタートタイムアウト時間(WSTT)、ワードの書込みページサイズ(WPS)、書込みページサイクル時間(WPCT)およびシャドウメモリを作成するページ数の関数とすることができ、式は、
Max WCT=WSTT+(WPS×WPCT×シャドウメモリページ数)
となる。種々の例では、書込みサイクル時間は、変更した「アンロックの」ロケーション数に応じて改善されてよく、変更のないロケーションが書き込まれず、したがって書込み時間を短縮することができる。一例では、デバイス記憶メモリ500が書込みサイクル中であるとき、遠隔デバイスは、オフラインとされてよく、ネットワークバス(例えば、バス104)からコマンドを受信できなくともよい。
【0088】
一般に、メモリコンテンツができる限り破損から保護されることが有利であり、このことは、いくつかの異なる方式のうちのいずれかで達成されうる。精緻なデータ伝達保護では、データ転送にエラーのないことが確実に保証されるように求められてよく、および/または他の機構が、メモリの破損のリスクを低減するように実施されうる。例えば、メモリは、書き込まれた後その正しさを確かめるために読み返され、および/または、メモリに書き込まれた適切な巡回冗長検査(CRC)が、同じメモリ空間に対して計算されたCRCと一致するかどうか決定するために検査することができる。
【0089】
上に示唆したように、種々の例では、不揮発性デバイス記憶メモリ502中の保護メモリロケーション、またはシャドウメモリ504と不揮発性デバイス記憶メモリとの間で同じであるような不揮発性デバイス記憶メモリ502のコンテンツは、スキップされて、それによって書き込まれなくてもよい。次いで、書込みサイクルの間、遠隔デバイス(例えば、デバイスインターフェース202)は、まず、不揮発性デバイス記憶メモリ中のロケーションの保護ステータスをチェックすることができる。このロケーションがロックされる事例では、遠隔デバイスは、ロケーションにぞれぞれ書き込むことなくロケーションをそれぞれスキップすることができる。このロケーションがアンロックされる事例では、または保護ステータスの検査を含まない他の例では、遠隔デバイスは、まずロケーションからぞれぞれデータを読み出し、それぞれのロケーションの第1のデータとシャドウメモリ中の対応するロケーションの第2のデータを比較することができる。第1のデータが第2のデータと異なる事例では、遠隔デバイスは、シャドウメモリ中の第2のデータを不揮発性デバイス記憶メモリ中のロケーションにそれぞれ書き込むことができる。さもなければ、第1のデータが第2のデータと同じである事例では、遠隔デバイスは、シャドウメモリ中の第2のデータを不揮発性デバイス記憶メモリ中のロケーションにそれぞれ書き込まずにロケーションをそれぞれスキップすることができる。これは、書込みサイクルの間、不揮発性デバイス記憶メモリ中の各ロケーションに対して行われてよい。
【0090】
本開示の例示的実施によれば、ネットワークシステム100のホストコンピュータまたはバスコントローラ102と、ネットワークバス104と、1つまたは複数の遠隔デバイス106とを含むネットワークシステム100は、種々の手段によって
図4に示すようなオペレーションを行うことができる。これらの手段は、ハードウェア、単独またはデータの管理下で、プログラム命令、プログラムコード、コンピュータプログラムコード、コンピュータ可読プログラムコード、実行可能コンピュータ可読プログラムコードなど(一般的な「コンピュータプログラム」例えばソフトウェア、ファームウェア他)を含むことができる。上で解説した通りに、種々の例では、このハードウェアは、ASIC、FPGAなどを含んで、FIFOメモリ404、テーブルメモリ406、コンフィギュレーションメモリ408、デバイス記憶メモリ410および/またはデバイスコンフィギュレーションメモリ412などの、固定式コンピュータ可読記憶媒体に記憶されたコンピュータプログラムを実行することができる。
【0091】
より概括的には、例示的実施によれば、任意の適したコンピュータプログラム(複数可)は、特定のマシンを作製するために、コンピュータ可読記憶媒体(例えば、FIFOメモリ404、テーブルメモリ406、コンフィギュレーションメモリ408、デバイス記憶メモリ410、デバイスコンフィギュレーションメモリ412)から、コンピュータまたは他のプログラム可能装置(例えば、ASIC、FPGA)により広くロードされてよく、その結果、特定のマシンは、本明細書に明記した1つまたは複数の機能を実施するための手段となる。コンピュータプログラム(複数可)は、コンピュータ可読記憶媒体にも記憶されてよく、コンピュータ、プロセッサ、または他のプログラム可能装置を特定の方式で機能するように指示し、それによって、特定のマシンまたは特定の製品を作り出すことができる。コンピュータ可読記憶媒体に記憶した命令は、製品を作製することができ、製品は、本明細書で説明された機能を実施するための手段となる。プログラムコード命令は、コンピュータ可読記憶媒体から取り出され、コンピュータ、プロセッサまたは他のプログラム可能装置にロードされて、コンピュータ、プロセッサまたは他のプログラム可能装置を構成して、オペレーションを実行して、コンピュータ、プロセッサまたは他のプログラム可能装置上でまたはこれらによって遂行されうる。
【0092】
プログラムコード命令の取出し、ロードおよび実行は、一命令が、一度に、取出し、ロードおよび実行されるように逐次的に遂行されうる。いくつかの例示的実施形態では、多数の命令が、一斉に、取出し、ロードおよび/または実行されるように、並行して、取出し、ロードおよび/または実行が遂行されうる。コンピュータ、プロセッサまたは他のプログラム可能装置によって実行されるプログラムコード命令が、本明細書で説明される機能を実施するためにオペレーションを提供するように、プログラムコード命令を実行することにより、コンピュータ実施プロセスを生成することができる。
【0093】
プロセッサによる命令の実行またはコンピュータ可読記憶媒体の命令の記憶により、明示した機能を遂行するためにオペレーションの組合せがサポートされる。1つまたは複数の機能および機能の組合せが、明示した機能または特殊目的ハードウェアとプログラムコード命令との組合せを遂行する、特殊目的ハードウェアベースコンピュータシステムおよび/またはプロセッサによって、実施されうることも理解されよう。
【0094】
さらに本開示は、次の項目による実施形態を備える。
【0095】
第1項
複数のロケーションにデータを記憶するように構成された不揮発性メモリ(502)と、
前記不揮発性メモリ(502)に結合され、対応する複数のロケーションに前記不揮発性メモリの前記複数のロケーションのイメージを記憶するように構成された揮発性シャドウメモリ(504)を含む、デバイスインターフェース(202)とを備え、
前記デバイスインターフェース(202)が、デジタルネットワークバス(104)を経由してバスコントローラ(102)に結合可能であり、前記バスコントローラ(102)から前記ネットワークバス(104)を渡ってコマンドを受信するように構成され、それに応答して、前記デバイスインターフェース(202)が、前記ネットワークバスからのデータを前記不揮発性メモリ(502)中のロケーションに書き込むように構成され、前記デバイスインターフェース(202)が、前記揮発性シャドウメモリ(504)中の前記対応するロケーションに前記データを書き込み、その後、前記揮発性シャドウメモリ(504)中の前記対応するロケーションから前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むように構成されることを含む、装置。
【0096】
第2項
コマンドを受信するように構成された前記デバイスインターフェース(202)が、書込みコマンドを受信するように構成されることを含み、
前記デバイスインターフェース(202)が、別の書込みコマンドを受信することなくタイムアウト時間を経過した後のみ、前記揮発性シャドウメモリ(504)中の前記対応するロケーションから前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むように構成される、第1項に記載の装置。
【0097】
第3項
前記デバイスインターフェース(202)が、前記揮発性シャドウメモリ(504)から前記不揮発性メモリ(502)に書込みサイクルを遂行するように構成され、前記デバイスインターフェース(202)が、前記揮発性シャドウメモリ(504)中の前記対応するロケーションから前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むように構成されることを含み、
前記デバイスインターフェース(202)が、前記不揮発性メモリ(502)中の前記ロケーションの保護ステータスまたは非保護ステータスを検査するように構成されることを、前記書込みサイクルがさらに含み、前記ロケーションが非保護ロケーションである事例でのみ、前記デバイスインターフェース(202)が、前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むように構成される、第1項に記載の装置。
【0098】
第4項
前記揮発性シャドウメモリ(504)中の前記対応するロケーションの前記データが第2のデータであり、
前記デバイスインターフェース(202)が、前記不揮発性メモリ(502)中の前記非保護ロケーションから第1のデータを読み込み、前記第1のデータを前記第2のデータと比較するように構成されることを、前記書込みサイクルがさらに含み、前記第1のデータが前記第2のデータと異なる事例でのみ、前記デバイスインターフェース(202)が、前記不揮発性メモリ(502)中の前記非保護ロケーションに前記第2のデータを書き込むように構成される、第3項に記載の装置。
【0099】
第5項
前記不揮発性メモリ(502)の前記ロケーションの各々に対して前記検査および書込みを含み、前記書込みサイクルのために前記揮発性シャドウメモリ(504)が、前記揮発性シャドウメモリ(504)の対応するロケーションにイメージを記憶するように構成された、前記書込みサイクルを遂行するように、前記デバイスインターフェース(202)が構成される、第3項に記載の装置。
【0100】
第6項
前記デバイスインターフェース(202)が、前記揮発性シャドウメモリ(504)から前記不揮発性メモリ(502)に書込みサイクルを遂行するように構成され、前記デバイスインターフェース(202)が、前記揮発性シャドウメモリ(504)中の前記対応するロケーションから前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むように構成されることを含み、前記揮発性シャドウメモリ(504)中の前記対応するロケーションの前記データが第2のデータであり、
前記デバイスインターフェース(202)が、前記不揮発性メモリ(502)中の前記ロケーションから第1のデータを読み出し、前記第1のデータと前記第2のデータを比較するように構成されることを、前記書込みサイクルがさらに含み、前記第1のデータが前記第2のデータと異なる事例でのみ、前記デバイスインターフェース(202)が、前記不揮発性メモリ(502)中の前記ロケーションに前記第2のデータを書き込むように構成される、第1項に記載の装置。
【0101】
第7項
前記不揮発性メモリ(502)の前記ロケーションの各々に対して前記読出し、比較および書込みを含み、前記書込みサイクルのために前記揮発性シャドウメモリ(504)が、前記揮発性シャドウメモリ(504)の対応するロケーションにイメージを記憶するように構成された、前記書込みサイクルを遂行するように、前記デバイスインターフェース(202)が構成される、第6項に記載の装置。
【0102】
第8項
前記不揮発性メモリ(502)が、ベースメモリ(502a)と拡張メモリ(502b)とを含み、前記揮発性シャドウメモリ(504)が、ベースシャドウメモリ(504a)と拡張シャドウメモリ(504b)とを含み、
前記ベースシャドウメモリ(504a)が、前記ベースメモリ(502a)のイメージを記憶するように構成され、前記拡張シャドウメモリ(504b)が、前記拡張メモリ(502b)の唯一選択可能なサブセットのイメージを記憶するように構成される、第1項に記載の装置。
【0103】
第9項
デジタルネットワークバス(104)を経由してバスコントローラ(102)から遠隔デバイス(106)でコマンドを受信することであって、前記遠隔デバイス(106)が、複数のロケーションのデータを記憶するように構成された不揮発性メモリ(502)と、対応する複数のロケーションに前記不揮発性メモリ(502)の前記複数のロケーションのイメージを記憶するように構成された揮発性シャドウメモリ(504)とを含む、受信することと、
前記コマンドの受信に応答して、前記ネットワークバス(104)からのデータを前記不揮発性メモリ(502)中のロケーションに書き込むことであって、前記揮発性シャドウメモリ(504)の前記対応するロケーションに前記データを書き込むことと、その後に前記揮発性シャドウメモリ(504)の前記対応するロケーションから前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むこととを含む、書き込むこととを含む、方法。
【0104】
第10項
コマンドを受信することが、書込みコマンドを受信することを含み、
前記対応するロケーションから前記データを書き込むことが、別の書込みコマンドを受信することなくタイムアウト時間を経過した後のみ、前記揮発性シャドウメモリ(504)の前記対応するロケーションから前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むことを含む、第9項に記載の方法。
【0105】
第11項
前記揮発性シャドウメモリ(504)から前記不揮発性メモリ(502)に書込みサイクルを遂行することであって、前記揮発性シャドウメモリ(504)中の前記対応するロケーションから前記不揮発性メモリ(502)中のロケーションに前記データを書き込むことを含む、書込みサイクルを遂行することをさらに含み、
前記書込みサイクルが、前記不揮発性メモリ(502)中の前記ロケーションの保護ステータスまたは非保護ステータスを検査することをさらに含み、前記ロケーションが非保護ロケーションである事例でのみ、前記データが、前記不揮発性メモリ(502)中の前記ロケーションに書き込まれる、第9項に記載の方法。
【0106】
第12項
前記揮発性シャドウメモリ(504)中の前記対応するロケーションの前記データが第2のデータであり、
前記書込みサイクルが、前記不揮発性メモリ(502)中の前記非保護ロケーションから第1のデータを読み出すことと、前記第1のデータを前記第2のデータと比較することとをさらに含み、前記第1のデータが前記第2のデータと異なる事例でのみ、前記第2のデータが、前記不揮発性メモリ(502)中の前記非保護ロケーションに書き込まれる、第11項に記載の方法。
【0107】
第13項
前記検査することと書き込むこととを含む前記書込みサイクルが、前記不揮発性メモリ(502)の前記ロケーションの各々に対して遂行され、前記書込みサイクルのために前記揮発性シャドウメモリ(504)が、前記揮発性シャドウメモリ(504)の対応するロケーションのイメージを記憶するように構成される、第11項に記載の方法。
【0108】
第14項
前記揮発性シャドウメモリ(504)から前記不揮発性メモリ(502)に書込みサイクルを遂行することであって、前記揮発性シャドウメモリ(504)中の前記対応するロケーションから前記不揮発性メモリ(502)中の前記ロケーションに前記データを書き込むことを含み、前記揮発性シャドウメモリ(504)中の前記対応するロケーションの前記データが第2のデータである、書込みサイクルを遂行することをさらに含み、
前記書込みサイクルが、前記不揮発性メモリ(502)中の前記ロケーションから第1のデータを読み出すことと、前記第1のデータと前記第2のデータを比較することとをさらに含み、前記第1のデータが前記第2のデータと異なる事例でのみ、前記第2のデータが、前記不揮発性メモリ(502)中の前記ロケーションに書き込まれる、第9項に記載の方法。
【0109】
第15項
前記読み出すことと、比較することと、書き込むこととを含む前記書込みサイクルが、前記不揮発性メモリ(502)の前記ロケーションの各々に対して遂行され、前記書込みサイクルのために前記揮発性シャドウメモリ(504)が、前記揮発性シャドウメモリ(504)の対応するロケーションにイメージを記憶するように構成される、第14項に記載の方法。
【0110】
第16項
前記不揮発性メモリ(502)が、ベースメモリ(502a)と拡張メモリ(502b)とを含み、前記揮発性シャドウメモリ(504)が、ベースシャドウメモリ(504a)と拡張シャドウメモリ(504b)とを含み、
前記ベースシャドウメモリ(504a)が、前記ベースメモリ(502a)のイメージを記憶するように構成され、前記拡張シャドウメモリ(504b)が、前記拡張メモリ(502b)の唯一選択可能なサブセットのイメージを記憶するように構成される、第9項に記載の方法。
【0111】
本明細書で明記された本開示の多くの改変および他の実施が、この開示に関係する当業者には想到され、先の説明および付属図面において提示された教示の利点を有するであろう。例えば、本明細書で明記された本開示の例示的実施形態は、超解像、ポストプロセッシング画像強調などの他の画像処理技術の代わりにまたは加えて使用されうる。したがって、本開示は、開示された具体的な実施に限定されず、改変および他の実施は、添付の特許請求の範囲に含まれるものであることが理解されたい。さらに、先の説明および付属図面では、要素および/または機能の一定の例示的組合せにおいて例示的実施について説明したが、要素および/または機能の異なる組合せは、添付の特許請求の範囲から逸脱することなく代替の実施によって提供されうることが理解されるべきである。これに関しては、例えば、上記で明確に説明してきた要素および/または機能との異なる組合せも、添付の特許請求の範囲のいくつかに明記されうるものとして考えられる。本明細書では具体的な用語が採用されているが、これらは包括的および叙述的な認識でのみ使用され、限定を目的とするものではない。