以下の説明では、メモリ割振りおよび共有の実施態様の完全な理解を助けるとともに、その説明を有効にするため、多くの具体的な詳細を紹介する。その一方で、当業者は、動的なメモリの割振りと共有が1つまたは複数の特定の詳細部を備えず、または他の構成部品、システムなどで実行できることを認識するであろう。例えば、特定のメモリサイズの実例が例示のために示されるが、説明される同じ原理を使用することにより、他のサイズも可能である。さらに、様々な構造と機能が特定の配置で示されるが、本発明を限定するものではない。例えば、メモリ構造はワンチップ上に存在してもよいし、または任意の様式で分配され、遠隔的にアクセスされるいくつかのメモリを含んでもよい。他の実例では、動的なメモリの割振りと共有の態様をあいまいにすることを避けるために、周知の構造、または動作は示されないか、または詳細に説明されない。
図1は、信号処理システム102を含むシステム100の一実施態様のブロック線図である。信号処理システム102は、無線周波数(RF)部とディジタル信号処理部を含む。一実施態様では、RF部103はGPS衛星または衛星ビークル(SV)からのRF信号を受信する。RF信号はディジタル化され、ディジタル信号処理部101に伝送される。一実施態様では、RF部103とディジタル信号処理部101は、シリアル周辺インタフェース(SPI)を介して通信する。ディジタル信号処理部101は、以下にさらに説明するようにRF信号を処理し、処理されたデータを、OEMバス104を介し外部OEMプロセッサ105に伝送する。ディジタル信号処理部101は、OEMメモリ107とも通信する。以下にさらに説明するように、ディジタル信号処理部101は、信号処理機能用のメモリを含む。本発明の実施態様は、ディジタル信号処理部101上のメモリとOEMメモリ107を含む限られた量のメモリを有するシステムにおいて特に好適である。通常、メモリはシステムにおいて限られているが、このことは携帯型または移動体装置に特にあてはまる。
場合によっては、OEMメモリ107はディジタル信号処理部101によりアクセスされる必要はない。可能なその他の配置としては、信号処理機能を実行するために必要なメモリと処理能力のすべてを含む1つの部品、またはチップ上にRF部103機能とディジタル信号処理部101機能のすべてが配置されたものを含む。システム100は、GPS支援情報無しで有効に動作する能力をもつか、あるいは、多種多様のソースからのGPS支援情報により動作することができる。
図2はディジタル信号処理部101の一実施態様のサブシステムを示すブロック線図であり、入力サンプル・サブシステム(SS1)211、信号処理サブシステム(SS2)213、高速フーリエ変換(FFT)サブシステム(SS3)215を含む。ディジタル信号処理部101はメモリサブシステム201をさらに含み、以下にさらに説明されるように、一実施態様では様々なサブシステム間で動的に割り振られ、共有されるランダム・アクセス・メモリ(RAM)を含む。メモリサブシステム201は、単独のメモリ部品または装置でもよく、または複数のメモリ部品でもよい。メモリサブシステム201は、入力サンプルRAM203、コヒーレントデータRAM205、バックエンド保存RAM209、およびチャネルRAM207を含む。メモリサブシステム201は、入力サンプルRAM203、コヒーレントRAM205、チャネルRAM207、およびバックエンド保存RAM209のそれぞれが様々な動作モードでサイズが変化するように、動的に割り振られる。さらに、入力サンプルRAM203、コヒーレントRAM205、およびバックエンド保存RAM209はそれぞれ、様々なモードで様々なチャネルによりアクセスされ、様々なサブシステム間で同時に共有される。
入力サンプルRAM203は、FIFO1制御構造またはFIFO1 221と呼ばれる制御構造221により制御される。コヒーレントRAM205は、同様に、FIFO2制御構造またはFIFO2 223と呼ばれる制御構造223により制御される。以下にさらに説明されるように、FIFO1 221は、入力サンプルRAM203へのアクセスを制御し、FIFO2 223はコヒーレントRAM205へのアクセスを制御する。本明細書に用いられるように、用語「FIFO」は、ある実施態様においては、入力サンプルRAM203およびコヒーレントRAM205へのアクセスのファーストイン・ファーストアウトの性質を意味する。他の実施態様では、上記制御構造および入力サンプルRAMへのアクセスは、例えば、ラストイン・ファーストアウトを含む他の特徴を有することができる。図2では、FIFO1 221は入力サンプルRAM203に連結して示され、FIFO2 223はコヒーレントRAM205に連結して示される。通常は、FIFO1 221およびFIFO2 223はそれぞれのRAM領域に連結されないが、図2では例示のためにそのように示される。
ディジタル信号処理部101は、ディジタル信号処理部101における信号処理動作の順序付けを制御するシーケンサ217をさらに含む。シーケンサ217は個別部品として示されるが、他の部品に連結させることができる。例えば、以下に説明する実施態様では、シーケンサ217の機能の一部は、信号処理サブシステム213上に、一部は、FFTサブシステム215上に存在する。以下SW219と呼ばれるソフトウェア部219は、シーケンサ217を制御し、したがって、ワードをチャネルRAM207に保存することによりディジタル信号処理部101において信号処理動作を制御する。一実施態様では、SW219は、外部OEMプロセッサ105および/またはOEMメモリ107上にあるが、これは要件ではない。以下にさらに説明するように、OEMプロセッサ105は、信号処理部101からデータとステータス情報を連続的に受信するSW219を使用することにより、信号処理部を分散処理方式で制御する。データとステータス情報は、以下でより詳細に説明するメッセージ送信を介し、連続的に信号処理部101を再構成するために使用される。本明細書に示すように、外部プロセッサより制御される信号処理部101を有することは、多くの実施態様において有利である。これにより、例えば、信号処理部101の処理能力を比較的小さくできる。しかしながら、SW219(ここでは外部能力として示される)により表される処理能力と機能はまた、信号処理部101上のどの場所にも存在してよい。
ディジタル信号処理部101は、ディジタル化されたRFデータサンプルをRF部103から受信する。データサンプルは、SVからのデータストリームのサンプルであり、それぞれは一意的な擬似ランダムノイズ(PRN)コードを既知の様式で伝送する。概して言えば、ディジタル信号処理部101はデータサンプルを処理し、どの衛星がそれを伝送したかを判断し、また上記サンプルからエフェメリスおよびアルマナックなどの情報を抽出する。当該技術分野で周知のように、4つのSVの絶対位置と、それらの受信機からの相対的な距離が受信機により認識されると、受信機の位置を知ることができる。ディジタル信号処理部101は、現在の位置情報がどれだけ認識されているかによって、4つのモードの1つでデータサンプルを処理する。
入力サンプル・サブシステム211は、送信者により決定された速度で入力RFデータサンプルを受信する。入力サンプル・サブシステム211は、FIFO1の制御下で、ディジタル信号処理部101の動作モードに依存した様式でデータサンプルを入力サンプルRAM203内に保存する。入力サンプルRAM203の容量もディジタル信号処理部101の動作モードにより決定される。信号処理サブシステム213は、FIFO1の制御下で、RAM203から演算すべきRF入力サンプルを取り込む。RF信号サンプルに行われる演算は、信号処理モードに依存して変化することができる。例えば、信号処理サブシステム213は、信号サンプルに間引き演算を行ってもよいし、行わなくてもよい。信号処理サブシステム213は、一実施態様では、整合フィルタを使用することにより、コヒーレントRAM205内にあるデータサンプルをコヒーレントに累算する。コヒーレントな累算は、指定の期間の間、I(同相)およびQ(直角位相)のデータを有効に累算する。コヒーレントに累算されたデータサンプルは、FFT処理のためにFFTサブシステム215によりコヒーレントRAM205から取り込まれる。コヒーレントRAM205の容量もディジタル信号処理部101の動作モードにより決定される。
1つの状況では、受信機の位置についての情報はほとんど知られていないか、全く知られていない。この状況では、どのSVが受信機にとって目視可能かについての情報はほとんどないか全く無く、利用できる時間情報は不正確である。この状況では、ディジタル信号処理部101は、「コールドスタート」モードでデータサンプルを処理する。コールドスタート・モードでは、できるだけ多くのデータができるだけ速く低感度または低分解能で処理される。これはSV信号の探索空間が非常に大きく、最初の捕捉段階に焦点を合わせる現行データが存在しないからである。コールドスタート・モードでは、コヒーレントな累算は発生せず、データサンプルは、信号処理サブシステム213から経路222を介してFFTサブシステム215へ直接に送信される。
コールドスタート・モード以外のモードでは、FFTサブシステム215はコヒーレントRAMから一定数のデータサンプルを取り込み、FFT演算を行う。コールドスタート・モードでは、FFTサブシステム215は、SS2 213から直接来るコヒーレントデータサンプルに演算を行う。SS3 215は、個々の処理モードによって規定される数の周波数を作成する。例として、8サンプル、16ポイントFFTでは、FFTは16の周波数を作成する。16の周波数すべてが対象であるわけではない。例えば、外側の周波数は有用ではないかもしれない。周波数の数はプログラム可能である。所望の周波数が選択され、よりコンパクトな形式で詰め込まれ、非コヒーレントデータ、すなわちIとQのデータから導き出される振幅を累算するバックエンド保存RAM209の非コヒーレント加算(NCS)領域内に保存される。以下にさらに説明するように、バックエンド保存RAM209は、ピーク値すなわちピークを保存するためにも使用される。一実施態様では、8つの最大の値だけでなく、それらがデータストリーム内のどこで発生したかに関する情報(例えば、どんなコードオフセットで、そしてどんな周波数オフセットで)も保存される。追跡履歴(TH)情報は選択されたコヒーレントデータであり、SW219による検査のために保存される。一実施態様では、TH情報はギャザー(gather)モジュール(図示せず)の出力である。ギャザー・モジュールはFFTサブシステム215の周波数出力間で選択を行い、不要な周波数を廃棄する。ギャザー・モジュールはデータをコヒーレント形式で維持する。SW219は、TH情報を検討することにより信号処理部101の構成に関する決定を行うことができる。バックエンド保存RAM209の容量も、信号処理部101の動作モードにより決定される。
本明細書では、T1、PDI、およびコンテキストを含む様々な用語を、処理エポックを説明するために使用する。T1は、チャネル用のコヒーレント・アキュムレータにおけるコヒーレント累算に対し規定されたミリ秒単位の時間間隔である。T1の長さはプログラム可能であり、動作モードにより変化する。例えば、いくつかのモードでは、比較的弱い信号を探すために、比較的長い期間の間、累算することが望ましい。したがって、信号処理サブシステム213はT1を基準としてコヒーレントに累算する。
PDIはプログラム可能なT1の数である。FFTサブシステム215内に一度に供給されるT1の数がPDIである。PDIにおけるT1の数は、FFTサブシステム215が、特定のモードにおいてデータを処理するために、どのように構成されるかにより決定される。上述のように、信号処理サブシステム213は、T1を基準としてコヒーレントに累算する。しかしながら、FFTサブシステム215は、PDIを基準としてデータに演算を行う。したがって、FFTサブシステム215は完全なPDIが利用可能になると、コヒーレントRAM205からデータを取り出せばよい。例えば、FFTサブシステム215が5サンプル、16ポイント、ゼロパッドFFTとして構成される場合、FFTサブシステム215は、コヒーレントRAM205からデータを取り出し始める前に、5つのサンプル、または5つのT1が完了してコヒーレントRAM205内に保存されるのを待つ。
様々なサブシステムの使用は、様々なチャネル間で時分割される。本明細書でコンテキストという用語は、特定のチャネルを処理する特定のサブシステムの使用を表現するのに用いられる。例えば、特定のチャネルに関し、チャネルが信号処理サブシステム213に入るとコンテキストは始まり、そのチャネルが信号処理サブシステム213を出ると当該コンテキストは終了する。これは、信号処理サブシステム213がプログラムされたミリ秒数の間動作し、入力サンプルRAM203からのデータを使用し、そしてその後停止してコンテキストが終了することを意味する。チャネルは、FFTサブシステム215に関しても同様なコンテキストを有する。
上述のように、SW219は、信号処理部101の演算を制御するチャネルRAM207にワードを保存する。保存されたワードがチャネルレコードを構成する。一実施態様では、チャネルレコードは、様々なタイプのデータを含む128本のラインのそれぞれであるが、基本的には信号処理部が使用するチャネル固有のデータのすべてを含む。チャネルレコードは、当該特定チャネルに関するSW219からのプログラミング情報、ロード形式の情報、サイズパラメータと、入力サンプルRAM203、コヒーレントRAM205、バックエンド保存RAM209ならびにRAM201のその他の領域のサイズ割振りを含む。チャネルレコードは、単1チャネルに関するコード位相、キャリア位相、搬送周波数、加速度、および他の処理パラメータすべてを含む。信号処理サブシステム213およびFFTサブシステム215の使用は、異なるチャネル間で時分割されるので、それぞれのチャネルはその状態を保存しなければならない。
チャネルRAM207は、SW219により初期化されるが、その後、信号処理サブシステム213、FFTサブシステム215、そして時にはSW219により更新される。例えば、信号処理サブシステム213、FFTサブシステム215、SW219間の通信のために用いられるチャネルRAM207内にはセマフォワードがある。セマフォワードは、信号処理サブシステム213、FFTサブシステム215、SW219間の通信を同期させるためのメカニズムであって半非同期で動作する。
チャネルレコードは、本質的には、入力サンプルRAM203、コヒーレントRAM205、およびバックエンド保存RAM209を含む様々なRAM内の場所に対するポインタを含むリンクされたリストである。したがって、チャネルレコードは、コンテキストに対して動的に割り振られたRAM201の構成を保存する。チャネルレコードの最初のエントリーは、次のチャネルレコードに対するポインタである。コンテキストが始まると、動作モードとコンテキストに対するRAM割振りを決定するために、チャネルRAMがアクセスされる。コンテキストが間もなく終了する際に、更新されたチャネル情報がチャネルレコード内に保存され、そして現在のチャネルレコードのエントリーにより指示される、次のチャネルレコードのコンテンツの処理を続ける。チャネルレコードは、入力データサンプルに関する現在の計数と状態、コード位相情報、および時間調整についても含む。
チャネルが開始されると、信号処理サブシステム213のシーケンサ313a(図3に示され、以下に説明される)は、チャネルRAM207にアクセスし、当該特定チャネルを処理する信号処理サブシステム213に必要なチャネルパラメータを引き出す。シーケンサ313aもまた、当該チャネルを処理するために必要とされるパラメータにより、整合フィルタやコヒーレント・アキュムレータのような信号処理サブシステム213の様々な信号処理要素(図示せず)をプログラムする。上記パラメータは、例えば、整合フィルタが処理を行う間のミリ秒数を決定する。整合フィルタが処理を終了すると、整合フィルタはシーケンサ313aに処理が終了したことを信号伝達し、そしてシーケンサ313aは次のチャネルに移る。
チャネルRAM207は、次のチャネルに対するチャネルRAMの場所などを保存するリンクされたリストを含む。
FFTサブシステム215もまた、チャネルRAMにアクセスし、データの処理方法を決定するシーケンサ315a(図3に示され、以下に説明される)を含む。FIFO2 223は、FFTサブシステム215と信号処理サブシステム213の両方に対し、コヒーレントRAM205へのアクセスを制御する。例えば、FIFO2 223は、FFTサブシステム215に、演算するデータがコヒーレントRAM205内に存在する際に、そのことを知らせる。FIFO2 223はまた、信号処理サブシステム213に、FFTサブシステム215がまだ使用していないデータが上書きされようとしている際に、そのことを知らせる。
図3は、アービトレーション・ユニット327を含む付加的な要素を示す信号処理部101の一実施態様のブロック線図である。入力サンプル・サブシステム311と信号処理システム313は、FIFO1 321の制御下でメモリサブシステムまたはRAM301にアクセスする。一実施態様では、信号処理サブシステム313のシーケンサ機能は、SS2シーケンサ313aとして信号処理サブシステム313と連結される。シーケンサ313aの1つの機能は、RAM301のチャネルRAM領域にアクセスし、チャネルパラメータを読み出すとともに、更新されたチャネルパラメータを、RAM301のチャネルRAM領域へ書き込むことである。
信号処理サブシステム313とFFTサブシステム315は、FIFO2 323の制御下でRAM301にアクセスする。一実施態様では、FFTサブシステム315のシーケンサ機能は、SS3シーケンサ315aとしてFFTサブシステム315と連結される。FIFO1 321、SS2シーケンサ313a、FIFO2 323、およびSS3シーケンサ315aは、RAM301にアクセスするためにアービトレーション・ユニット327と通信する。
SW319のRAM301へのアクセスのために、アービトレーション・ユニット327は、中央処理装置(CPU)ブリッジ325を介してSW319とさらに通信する。
入力サンプル・サブシステム311は、RAM301へのアクセス要求をFIFO1 321を介して送信し、そしてアービトレーション・ユニット327から許可信号を受信する。許可信号が入力サンプル・サブシステム311により受信された後、入力サンプル・サブシステムは、入力サンプルデータをどこに保存するかを示すアドレスをFIFO1 321へ送信し、入力サンプルデータをRAM301内に保存する。
信号処理サブシステム313が入力データサンプルを処理することを求める場合、RAM301の入力サンプル領域へのアクセス要求をFIFO1 321を介し送信し、アービトレーション・ユニット327から許可信号を受信する。許可信号が信号処理サブシステム313により受信された後、信号処理サブシステム313は、RAM301からデータサンプルを受信する。信号処理サブシステム313が、処理済みのコヒーレントデータをRAM301のコヒーレントRAM領域に保存することを求める場合、要求信号をFIFO2 323を介しアービトレーション・ユニット327へ送信する。チャネルレコードから、シーケンサ313aは、コヒーレントデータを保存すべき適切なアドレスを決定する。信号処理サブシステム313は、アービトレーション・ユニット327から許可信号を受信し、そして保存アドレスが、信号処理システムによりRAM301へ送信される。保存されるコヒーレントデータも同様である。
FFTサブシステム315がコヒーレントデータを処理することを求める場合、RAM301のコヒーレントデータ領域へのアクセス要求を、アービトレーション・ユニット327へFIFO2 323を介して送信する。要求が許可されると、アドレス(これもチャネルレコードから分かる)はRAM301のコヒーレントデータ領域へ送信され、コヒーレントデータはFFTサブシステム315へ読み出される。
チャネルRAM領域内に信号処理部101の演算を指令するレコードを書くために、SW319はアービトレーション・ユニット327を介しRAM310へのアクセスを要求する。サブシステムのステータスを示すとともに、チャネルRAM内のチャネルレコードを介して信号処理部101の進行中プログラミングに対する基準情報を提供するTHデータ、報告データ、エラーデータのようなデータを読み出すため、SW319は、アービトレーション・ユニット327を介しRAM310へのアクセスをさらに要求する。
図4は、一実施態様におけるアービトレーション・ユニット427を示すとともに、RAM401にアクセスする、様々なエンティティへの優先順位割当てを例示するブロック線図である。CPUブリッジ425を介し、RAM401へアクセスするOEMプロセッサ405は、最も高い優先順位、すなわち優先順位0を有する。これら優先順位は、より小さい数がより高い優先順位を示すように任意に指定されているが、他の指定も可能である。入力サンプル・サブシステム411は、次に高い優先順位1を有する。入力サンプル・サブシステム411は、RFデータストリームをそれ自身の制御下にない速度で受信するので、入力サンプル・サブシステム411は、自身の処理速度を制御する他のサブシステムに比し低い能力を有し、したがってRAM401へのアクセスに対する高い優先順位を割り当てられる。
信号処理サブシステム413は、シーケンサからのアクセス要求に対し優先順位2を、RAM401の入力サンプル領域からFIFOI 421を介し入力データサンプルを読み出すためのアクセス要求に対し優先順位5を、FIFO2 423を介しRAM401のコヒーレントデータ領域へコヒーレントデータを書き込むためのアクセス要求に対し優先順位6を割り当てる。
FFTサブシステム415は、シーケンサからのアクセス要求に対して優先順位3を、RAM401のコヒーレントデータ領域からFIFO2 423を介しコヒーレントデータを読み出すためのアクセス要求に対して優先順位4を、RAM401のNCS領域へNCS、TH、報告データを書き込むことに対して優先順位7を割り当てる。
図5は、入力サンプルRAM203へのアクセスを制御する際に発生するシグナリングのいくつかを示すFIFO1 521のブロック線図である。図5の左側を参照し、また図2を参照すると、入力サンプル・サブシステム211は、入力データサンプルを保存するために、RAM201の入力サンプルRAM領域203へのアクセスを要求する。信号処理サブシステム213は、入力データサンプルを読み出すために、RAM201の入力サンプルRAM領域203へのアクセスを要求する。
入力サンプル・サブシステム211は、FIFO1 521へSS1入力サンプル要求信号を送信し、入力データサンプルを書き込むことを要求する。FIFO1 521は、上記要求の受信を要求承認信号により承認する。入力サンプル・サブシステム211は、FIFO1 521へラップカウント501と開始ブロック番号503を送信する。循環バッファモード(信号処理部のコールドスタート・モードを除く動作モードにおいて適用できる)では、入力サンプルRAM203は一杯になるまで書き込まれ、その後上書きされる。一実施態様では、入力サンプルRAM203は最下部から最上部まで埋められる。入力サンプルRAM203が一杯になると、上書きが最下部で始まる。入力サンプルRAM203が一杯になって上書きが始まるごとに、ラップカウント501はインクリメントする。開始ブロック番号503は、入力データサンプルのブロックの開始点を示す。開始ブロック番号503は入力サンプル・サブシステム211からのロード信号(SS1 Load)により変更される。ロード信号は書き込み動作を開始させる。ブロックが書き込まれると、FIFO1はインクリメント信号によりブロックカウント503をインクリメントする。入力サンプル・サブシステム211からの書き込みラインは、ブロック内では7ビットラインであり、FIFO1への書き込み中はFIFO1へ書き込まれる。
図5の右側を参照し、また図2を参照すると、信号処理サブシステム213は、SS2信号処理要求信号により入力サンプルRAM203内のデータサンプルへのアクセスを要求する。FIFO1 521は、要求承認信号により上記要求を承認する。信号処理サブシステム213は、FIFOI 521へラップカウント505、開始ブロックカウント506、ライン番号507を送信する。
循環バッファモード(信号処理部のコールドスタート・モードを除く動作モードにおいて適用できる)では、入力サンプルRAM203は一杯になるまで書き込まれ、その後上書きされる。入力サンプルRAM203が一杯になり、上書きが始まるごとに、ラップカウント505はインクリメントする。開始ブロック番号506は、入力データサンプルのブロックの開始点を示す。開始ブロック番号506は信号処理サブシステム213からのロード信号(SS2 Load)により修正される。SS2ロード信号は読み出し動作を開始させる。
FIFO1 521はまた、オーバーフロー信号とアンダーフロー信号をシーケンサ217へ送信する。信号処理サブシステム213が、まだ書き込まれていない場所からデータを読み出そうとすると、アンダーフローが発生する。アンダーフローが発生すると、信号処理サブシステム213は待つかまたは休止しなければならない。循環書き込みモードの場合は、入力サンプルRAM203の最上部に達し、書き込みポインタが最下部へ戻り上書きを始めるが、信号処理サブシステム213がまもなく上書きされるかまたは既に上書きされたデータをまだ読み出していない場合に、オーバーフローが発生する。入力サンプル・サブシステム211により受信されるデータのストリーミング的性質のため、オーバーフロー状態は検知できるが回避できない。一実施態様では、オーバーフローがチャネルの処理中に発生すると、「有効な」データが再び入手可能になるまで「ごみ」すなわち無効データが処理される。チャネルが初期化中であって、しかもオーバーフローが発生すると、エラー信号がSW219へ送信され、チャネルはシャットダウンされ、そしてSW219が続行方法を決定する。
FIFO1 521の最上部を参照すると、FIFO1は要求信号540、アドレス信号542、および承認信号544を用いることによりRAM201と通信する。
図6、7、8および9は、実施態様の様々な動作モードに対するメモリ割振りを含む信号処理部101の構成を例示するブロック線図である。例示された動作モードはコールドスタート・モード、粗捕捉モード、ホットスタート・モード及び追跡モードを含む。
自身の位置に関し、信号処理部101が入手可能な情報がほとんど無いか全く無い場合に、コールドスタート・モードは適用可能である。例えば、GPS衛星を最後に捕捉した位置から、はるか離れたところまで運ばれた携帯用装置内に信号処理部101が設置されると、信号処理部101はどの衛星が目視可能か分からなくなるであろう。したがって、衛星に対し、非常に広範な低感度の探索が実行されるので大量のデータの処理が必要となる。
粗捕捉モードは、信号処理部101の位置に関しいくらかの情報が知られている場合に適切である。通常は、目視可能な衛星の少なくともいくつかについての識別情報が知られている。
信号処理部101がその位置に関し、非常に有効ないくらかの情報を有する場合、ホットスタート・モードは適切である。例えば、当該の信号処理部が前日にナビゲートし、それが半径約100マイル内にその場所を決めた場合、あるいは外部ソースがエフェメリスデータと衛星時間を提供することもありえる。
信号処理部101がその位置について優れた情報を有し、既に捕捉した衛星を追跡している場合、追跡モードが適切である。追跡モードでは、信号処理部101機能の大半を停止することができるので、より少ない電力を消費する。
図6を参照すると、コールドスタート・モードにおけるメモリ割振りを含む信号処理部101の構成が例示されている。コールドスタート・モードでは、コヒーレントRAM領域はない。利用可能なRAM領域は、スナップショットとして用いられる比較的大きな入力サンプルバッファ603、すなわちワンショット(one−shot)入力サンプルRAMを含む。一実施態様では、入力サンプルRAM603の容量はおよそ100Kバイトである。上述のように、入力サンプルRAM603はワンショット様式で用いられる。以下に説明するように、入力サンプルRAM603が一杯になった後、RF入力はもはや受信されず、様々なサブシステムが、入力サンプルRAM603内のデータの演算を複数回行う。これにより、入力サンプルRAM603が一杯になった後はRF受信機を停止することができ、消費電力を低減する。
入力サンプル・サブシステム611は、FIFO1 621の制御下で入力サンプルRAM603へ入力データサンプルを書き込む。信号処理サブシステム613は、FIFO1 621の制御下で入力サンプルRAM603から入力データサンプルを読み出す。信号処理サブシステム613は入力データサンプルを処理し、それらをコヒーレントデータとしてFFTサブシステム615へ直接、伝送する。
SV1と呼ぶ特定の衛星に対し、入力サンプルRAM603内に保存されたデータは、可能な全発振器範囲とドップラー範囲だけでなく、SV1が有するであろうあらゆる周波数に対して再処理または再生される。入力サンプルRAM603内の入力サンプルデータは、各衛星に対し20回ほどは再生することができる。その後、データは、非コヒーレントな加算データを保存したバックエンド保存RAM609に渡される。バックエンド保存RAM609は、NCSデータ「スクラッチ」領域とピーク領域とを含む。スクラッチ領域は非コヒーレントデータを循環的に保存しており、コールドスタート・モードではない他のモードで動作するチャネルと共有できる。各衛星の最大の8ピークがピーク領域内に保存される。一実施態様のバックエンド保存RAM609は、スクラッチNCS領域用のおよそ8Kバイトと、約50のピークを保存するピーク領域用のおよそ2.4Kバイトとを含む。チャネルが完了すると、SW219はピーク・リストをくまなく調べ、どのピークが信号を表す可能性があるかを判断し、これらのみを検証するために選択する。拒絶されたピークにより解放されたピーク空間は、新しいピークで埋められる。
一例として、コールドスタート・モードに対する信号処理部101の構成はおおよそ以下の値のパラメータ、すなわち1ミリ秒のPDI、実行処理当たり4kHzの周波数有効範囲、および28dbHzの感度(すなわち分解能)を含んでいる。
図7は、粗捕捉モードにおける、メモリ割振りを含む信号処理部101の構成のブロック線図である。粗捕捉モードでは、バックエンド保存RAM709にメモリの最大部分が割り振られており、入力サンプルRAM703は比較的小さい。例えば、一実施態様では、入力サンプルRAM703の容量はおよそ10Kである。入力サンプルRAM703は短い循環バッファとして用いられる。コヒーレントデータサンプルを保存するコヒーレント・サンプルRAM705はスクラッチバッファして用いられる。
入力サンプル・サブシステム711は、入力データサンプルを受信し、それらを入力サンプルRAM703に保存する。粗捕捉モードでは、1つまたは2つの目視可能な衛星が通常は認識されている。したがって、これら既知の衛星を同時に探索することができる。信号処理サブシステム713は、入力サンプルデータを処理し、そしてコヒーレント・サンプルRAM705を1周波数/衛星の組合せを表わす7ミリ秒のデータで埋める。FFTサブシステム715は、コヒーレント・サンプルRAM705内に保存されたコヒーレントデータに演算を行い、結果として生じたNCSデータをバックエンド保存RAM709に保存する。NCSデータに関連するピークもバックエンド保存RAM709に保存される。このモードでは、バックエンド保存RAM709はチャネル間で共有されるが、様々な領域内の「専用NCS」メモリは、様々なチャネルからのNCSデータ専用となる。NCS1データはチャネル1用であり、NCS2データはチャネル2用であり、以下同様である。
粗捕捉モードでは、OEMプロセッサが、演算されるNCSデータをより多く有すると性能は改善されるので、できるだけ多くのメモリがバックエンド保存RAM709に当てられる。一例として、コールドスタート・モードに対する信号処理部101の構成は、おおよそ以下の値のパラメータ、すなわち7ミリ秒のPDI、実行処理当たり750Hzの周波数有効範囲、および20dbHzの感度を含んでいる。粗捕捉モードでは、入力サンプルRAM703はPDIより大きく、コヒーレントRAM705はPDIより大きい。本明細書で用いられるように、PDIより大きいこと、または小さいことは、割り振られたメモリ空間が、PDIの期間内に処理できるデータ量を越えて保存すること、またはそれ未満で保存することを意味する。
図8は、ホットスタート・モードにおけるメモリ割振りを含む信号処理部101の構成のブロック線図である。ホットスタート・モードでは、完全なコード位相探索は必要とされない。位置は、コールドスタート・モードや粗捕捉モードの場合よりはるかに認識されている。例えば、時間の不確実性はおよそ1マイクロ秒である。位置の不確実性はセルラー・ネットワークにおけるセルサイトの半径であろう。ある支援情報が、初期の位置不確実性を狭めるために利用できることもある。
ホットスタート・モードでは、入力サンプルRAM803は比較的短い循環バッファである。例えば、入力サンプルRAM803は5K〜20Kのメモリである。ホットスタート・モードでは、入力サンプル・サブシステム811は入力データサンプルを受信し、それらを循環バッファ様式で入力サンプルRAMに保存する。信号処理サブシステム813は入力サンプルデータを処理し、それをコヒーレントRAM805に保存する。このモードでは、コヒーレントRAM805は個々の衛星用の小さな専用領域を多数含む。さらに、コヒーレントRAM805は、ホットスタート・モード以外のモードでは、様々なチャネルにより同時に用いることができるスクラッチパッド、すなわちスクラッチ部分を含む。既に説明したように、スクラッチパッド・データは、スクラッチパッド領域の使用可能な任意の部分に1チャネル毎に書き込まれ、その後、別のチャネル(同じチャネルでもよい)が上記スクラッチパッド領域に書き込む際に上書きされる。その一方、専用領域は1つのSVに関連するデータだけを書き込むか、または上書きすることができる。
個々の衛星に対し、コヒーレントRAM805内の領域を専用化することにより、より小さな入力サンプルバッファ803を可能にするとともに、比較的大きなPDIをさらに実行する能力を可能にする。このモードでは、入力サンプルRAM803はPDIより小さくてもよい。FFTサブシステム815は、コヒーレントRAM805からのコヒーレントデータを処理し、専用の様式でバックエンド保存RAM809に保存されたNCSデータを出力する。すなわち、バックエンド保存RAM809は、個々の衛星に対する専用領域であるNCS1、NCS2などに分割される。バックエンド保存RAM809はまた、専用ではなく、他のモードの他のチャネルにより同時に使用することができるスクラッチ部を含む。バックエンド保存RAM809はまた、SVごとにピークを保存する専用ピーク部を含む。一例として、コールドスタート・モードに対する信号処理部101の構成は、おおよそ以下の値のパラメータ、すなわち10ミリまたは20ミリ秒のPDI、実行処理当たりの750Hzの周波数有効範囲、および15〜12dbHzの感度を含んでいる。
図9は、追跡モードにおけるメモリ割振りを含む信号処理部101の構成のブロック線図である。追跡モードでは、信号処理部101は、それ自身の位置に関し優れた情報を有しており、既に捕捉している衛星を追跡する。追跡モードでは、信号処理部101機能の大半は停止することができ、従ってより少ない電力を消費する。
追跡モードでは、入力サンプルRAM903は比較的小さい。例えば、一実施態様では、入力サンプルRAM903はおよそ20Kのメモリである。入力サンプルRAM903はPDIより小さく、例えば約5ミリ秒である。入力サンプル・サブシステム911は、入力データサンプルを入力サンプルRAM903に循環バッファ様式で保存する。信号処理サブシステム913は、入力サンプルRAM903からの入力データサンプルを処理し、それらをPDIより大きなコヒーレントRAM905に保存する。コヒーレントRAM905は、様々なモードの様々なチャネル間で同時に共有できるスクラッチ領域と、衛星ごとにコヒーレントデータを保存するための専用領域とを含む。FFTサブシステム915は、コヒーレントRAM905からのコヒーレントデータを処理し、バックエンド保存RAM909にNCSデータを保存する。FFTサブシステム915はさらに、必要に応じて追跡の調整の基準として評価し、使用されるデータ(信号上のデータ境界など)を信号処理サブシステム913へフィード・バックする。
バックエンド保存RAM909は、様々なモードの様々なチャネル間で同時に共有できるスクラッチ領域と、専用のピーク領域と、以下にさらに説明する様々なデータを保存する追跡履歴(TH)領域とを含む。専用のNCS領域は専用の領域に各衛星用のNCSデータを保存し、専用のピーク領域は専用の領域に各衛星用のピークを保存する。
追跡モードは、他のモードでは保存されない追加TH出力データを保存する。このTHデータは様々に利用される。例えば、THは、ハードウェア追跡装置(図示せず)により使用されるコヒーレントデータを含む。ハードウェア追跡装置は、正しい信号が追跡されていることを確認するためにコヒーレントデータを調べる。調整は、必要に応じSW219とチャネルRAMを介して行うことができる。追跡モードにおいても、小さな探索ウィンドウは、追加のデータをバックエンド保存RAM909に選択的に保存することにより開いたままにされる。探索ウィンドウは、信号処理サブシステムに間違った信号を追跡させるかもしれないスプリアスで大きな信号を探すために使用される。探索ウィンドウはまた、目視可能な衛星が変化するに従って、新しい目視可能な衛星を見つけるために使用される。
一例として、追跡モードに対する信号処理部101の構成は、おおよそ以下の値のパラメータ、すなわち4ミリ、5ミリ、10ミリ、または20ミリ秒のPDI、100Hz〜750Hzの実行処理当たりの周波数有効範囲、および12〜50dbHzの感度を含んでいる。
図10は、どのようにしてデータが入力サンプルRAM1003内に保存されるかのいくつかの態様を示すブロック線図である。この線図は、動的に構成可能でかつ割振り可能なRAM201の領域が、入力サンプルRAM203にどのように割り振られるかを示す。書き込みポインタ1020は、入力サンプルRAM1003の左側に示され、読み出しポインタ1022は、入力サンプルRAM1003の右側に示される。透明な(クロスハッチされていない)領域として表わされる入力サンプルRAM1003の各ブロックは、入力サンプルRAM203に対して使用される実アドレス空間である。参照符号1005で表された領域は、潜在的に有効なデータと、ハッチングで示される無効データの部分領域1007とを含む。図10では、現在の有効データの領域は参照符号1050で示される。領域1050は、図示のように書き込みポインタ1020と読み出しポインタ1022が現在指す領域でもある。オーバーフローとアンダーフロー状態は、読み出しポインタ1022の値と、書き込みポインタ1020の値とを比較することにより検知される。
各ブロック領域1005は、無効なブロック1001を有する全アドレス空間を表す。各ブロック領域1005は同じアドレスを含む。例えば、ラップ・ポインタがアドレスの最上部に結合されると、それが該線図を上へ進むにつれアドレスは増加し続ける。1つが物理的に最下部ブロック領域1005からそのすぐ上のブロック領域1005まで進むと、1つがアドレス空間の最下部へ行く。すなわち、同じアドレス空間が繰り返し積み重ねられる。クロスハッチされた無効ブロック領域1007は、バイナリアドレス指定のために使用できない最大バイナリ範囲の一部である。無効なブロック領域1007はスキップされる。
入力サンプルRAM1003の右側に、有効なデータ領域1050と、所与の書き込みポインタ1020に対しアンダーフローとオーバーフロー状態が発生するであろう領域とを含む様々な領域が示される。
図11は、コヒーレントRAM1105に対するオーバーフローとアンダーフローの状態を例示する線図である。また、図2を参照すると、FFTサブシステム215は、コヒーレントRAM205のアドレスの全範囲に一度にアクセスする。アドレス範囲が利用できない場合、FFTサブシステム215はアンダーフロー状態で停止する。図11の線図は、アドレス範囲へのアクセスを要求されたコヒーレントRAM1105におけるアンダーフローとオーバーフロー状態を示す。図11の左側にはオーバーフローが例示される。長方形1107は、wrap=nとラベルを付けられた領域で現在使用されるFFTサブシステム215のアドレス範囲を定義する。コヒーレントRAM1105に対する全アドレス範囲は、以前に図10と入力サンプルRAM1003を参照して説明したように、積み重ねられて、繰り返される。これは図11のラップ番号により表わされる。左側に示されるSS2_topT1ポインタが、FFTサブシステム215(SS3)がそこからデータを読み出そうとしている領域に書き込もうとするとオーバーフローに達する。FFTサブシステム215(SS3)が読み出そうとする領域にSS2_top1ポインタが達すると、FFTサブシステム215は停止される。オーバーフローは、(SS2の最上部アドレス)=(SS3の最下部アドレス)の時発生する。コヒーレントRAMへのアクセスはFIFO2 223を介して制御可能なので、FFTサブシステム215を停止することができる。実際のRF入力は制御できないので、入力サンプルRAM203に対する制御はほとんどできない。
図11の右側はアンダーフロー状態を示す。長方形1109は、wrap=nとラベルを付けられた領域で現在使用されるFFTサブシステム215のアドレス範囲を定義する。ss2_bottomは、FFTサブシステム(SS3)215が必要とするアドレス範囲の最上部に達していない。必要な範囲はまだ「一杯」となっていない。アンダーフローは、(ss2最下部アドレス)<(ss3最上部アドレス)の時発生する。
図12は、追跡モードのような2パス・高分解能モードにおけるコヒーレントRAM1205に対するオーバーフローとアンダーフローの状態を例示する線図である。2パスモードでは、データはss2_最下部からss2_最上部まで書き込まれる。その後、該全範囲におけるデータは、最下部に戻り、該範囲の最下部から最上部までデータを再処理することにより再使用される。FFTサブシステム215はいくつものブロックのデータを使用し、したがって、全ブロックが使用可能になるのを待ってからデータを読み出して処理することを説明した。2パスモードでは、このことはまた、信号処理サブシステム213について当てはまる。2パスモードでは、信号処理システム213は、全ブロックまたは全アドレス範囲へのアクセスを、一度に必要とするものとして扱われる。従って、次に、このモードでは、信号処理サブシステム213がアクセスしようとする領域の最上部が、FFTサブシステム215がデータを読み出そうとする領域の最下部に達するとオーバーフローが発生する。信号処理サブシステム213は長方形領域1211全体へ書き込む。この書き込み動作は、実質的には蓄積であり、第1のパスで最下位ビット(LSB)が該範囲の最下部から最上部まで書き込まれ、第2のパスで最上位ビット(MSB)が該範囲の最下部から最上部まで加えられる。
図12の右側は、2パス高分解モードにおけるアンダーフロー状態を示す。長方形1209は、wrap=nとラベルを付けられた領域で現在使用されるFFTサブシステム215のアドレス範囲を定義する。長方形1213は、wrap=nとラベルを付けられた領域で現在使用される信号処理サブシステム213のアドレス範囲を定義する。SS3top_T1がSS2_bottomT1を追い越すと、アンダーフローが発生する。すなわち、FFTサブシステム215が、信号処理サブシステム213が書き込んでいる場所より上の場所を読み出そうとするとアンダーフローが発生する。
アンダーフローまたはオーバーフローの決定は、信号処理サブシステム213とFFTサブシステム215のアドレスポインタを比較することを含む。信号処理サブシステム213とFFTサブシステム215へのアクセスは、異なるチャネル間で時分割される。アドレスポインタが比較される際は、信号処理サブシステム213とFFTサブシステム215において単一のチャネルが動作しているかどうかを知る必要がある。信号処理サブシステム213とFFTサブシステム215の両方が同じチャネルにおいて同時に動作していれば、「ライブ」アドレスポインタが比較される。信号処理サブシステム213とFFTサブシステム215の両方が、同じチャネルにおいて同時に動作していない場合は、(チャネルRAM207からの)保存されたポインタが比較される。例えば、図11を参照すると、信号処理サブシステム213とFFTサブシステム215の両方が同じコヒーレントバッファ領域でアクティブであれば、保存されたアドレスポインタの代わりにライブアドレスポインタが使用される。
いくつかの実例では、コヒーレントRAM205および/またはバックエンド保存RAM209が複数のチャネル間で共有される。このことは、複数のコヒーレントRAMと複数のバックエンド保存RAMを効果的に有するものと見なすことができる。これにより、複数のチャネルが、同じメモリ領域内で連続してコヒーレントに累算できる。すなわち、メモリを共有する様々なモードがあり、例えば1つのモードではコヒーレントRAMは、コンテキストの継続期間の間はチャネル専用であり、一方別のモードでは、コヒーレントRAMは様々なチャネル間で共有される(チャネルはコンテキストの期間中、特定のサブシステムを使用する)。しかしながら、信号処理サブシステム213とFFTサブシステム215が同一の共有コヒーレントRAMにアクセスしようとする場合は、ライブアドレスポインタが使用される。信号処理サブシステム213は、コヒーレントRAMに関する基底アドレスポインタを調べることにより、同じコヒーレントRAM領域が使用されているかどうかを知る。
図13は、複数のチャネル間で共有される単一のコヒーレントRAMの例を例示するブロック線図である。これは、比較的大きなメモリ領域がコヒーレントRAMに割り振られているが、信号処理システムは特にメモリを制限されている場合の、メモリ利用の好適なモードである。図13の例は、円で囲まれた番号1〜3を示すラベルを付けられた3つの異なる時点におけるコヒーレントRAM1305を示す。時点1をまず参照すると、コヒーレントRAM1305aは最下部から最上部まで書き込まれる。チャネル1用領域とチャネル2用の部分的な領域が示される。信号処理サブシステム213(SS2)は、「ss2 書き込み」矢印により示されるように、チャネル1データをチャネル1領域に書き込む。信号処理サブシステム213がそれを書き込んだ後、FFTサブシステム215(SS3)はチャネル1の領域からデータを読み出す。信号処理サブシステム213がチャネル1データの書き込みを終了すると、チャネル2領域へ移動し、チャネル2データを書き込み始める。参照符号1305aにより示される、物理的なコヒーレントRAM領域が一杯になると、信号処理サブシステムは、コヒーレントRAM領域の最下部に移り上書きを始める。これは矢印1300により示される。この矢印1300は、時点2においてコヒーレントRAM1305bの最下部にチャネル2データを書き込み続ける際の信号処理サブシステム213の経路を示す。
時点2では、チャネル2データが書き込まれ、信号処理サブシステムは「チャネル3」を示すラベルを付けられた領域内にチャネル3データを書き込み始める。チャネル3データは残りのコヒーレントRAM領域には適合しないので、時間位置3において信号処理サブシステム213はコヒーレントRAM領域の最下部に移り、矢印1301により示されるように、以前のチャネル2データに上書きを始める。すでに説明したように、FFTサブシステム215が、信号処理サブシステム213がまだ書き込んでいないデータを読み出そうとすることにより信号処理サブシステム213に追いつくと、FFTサブシステム215は停止されるか、またはアンダーフローエラー状態が発生する。
一実施態様では、図13に例示されるように共有コヒーレントRAMモードを使用するためには、いくつかの条件が満たされなければならない。例えば、コヒーレントRAMを共有するチャネルは、異なる大きさのPDIを有してもよいが、同じ大きさのT1を有さなければならない。信号処理サブシステム213は、コンテキストを出る前に、1つのコンテキストのPDIを完全に書き込まなければならない。共有コヒーレントRAMを使用する各サブシステムは、それ自身の保存されたポインタで開始しなければならない。一実施態様では、ポインタはコヒーレントRAM自身の指定された領域内に保存される。共有コヒーレントRAMを出ると各チャネルはそれ自身の保存されたポインタを更新する。
他の実施態様では、コヒーレントRAM領域はまた、指定の物理メモリ領域をコールドスタート・モードのバックエンド保存RAMと共有してもよい。これは可能である。というのは、コールドスタート・モードではバックエンド保存RAMが一杯になってピークがそのデータから決定され、当該データはもう不要になるという意味でバックエンド保存RAMは「使い捨て」RAMであるからである。この場合、コヒーレントデータが使用された後、もしくは処理された後は、指定されたメモリ領域はNCSデータ用に使用されなければならない。この場合、NCSデータはコヒーレントRAM領域に書き込まれるが、コヒーレントデータ・ポインタはNCSの使用により更新されない。FFTサブシステムがそのメモリ領域外のデータを処理する可能性を回避するために、コヒーレントデータとNCSデータ用に指定された共有領域は、2PDI分のデータ未満でなければならない。
図14は、割り振られたコヒーレントデータメモリ領域、すなわちコヒーレントRAM内にデータを保存する、様々なモードを例示するブロック線図である。図14の左側で、第1のコヒーレントRAM保存モード0では、コヒーレントRAM1405aは、信号処理サブシステム213により最下部から最上部まで1度に1つのPDIずつ書き込まれる。コンテキストは任意の時点で完了できる。
コヒーレント保存モード1では、信号処理サブシステム213は、コヒーレントRAM1405bに、PDIの偶数ハーフチップ(even half−chip)を書き込み、次にPDIの奇数ハーフチップ(odd half−chip)を書き込む。当該コンテキストが終了すると、別のコンテキストからのデータの保存が、偶数ハーフチップとその後の奇数ハーフチップを用いて続けられる。コヒーレントRAM1405bの書き込みは最下部から始まり最上部まで続く。
コヒーレント保存モード2では、信号処理サブシステム213は、コヒーレントRAM1405c内に、1つのコンテキストに対して、複数のPDIの偶数ハーフチップと複数のPDIの奇数ハーフチップとを交互に保存する。次に、信号処理サブシステムは「コンテキスト」ラインから、別のコンテキスト内にデータを保存し続ける。特定のチャネルが信号処理サブシステム213を所有するコンテキスト中に、当該コンテキストラインは、データが信号処理サブシステム213によりどこに保存されるかを示す。
コヒーレント保存モード3では、信号処理サブシステム213は、コヒーレントRAM1405d内に、第1の周波数(freq 0)に対する複数のPDIの偶数ハーフチップを、次にfreq 0に対する複数のPDIの奇数ハーフチップを保存する。次に、信号処理サブシステム213は、次の周波数(freq 1)に対する複数のPDIの偶数ハーフチップを保存し、次にfreq 1に対する複数のPDIの奇数ハーフチップを保存し、以下同様である。
コヒーレント保存モード4では、信号処理サブシステム213はコヒーレントRAM1405e内に、T1 0に対するすべてのコヒーレントデータを、次にT1 1に対するすべてのコヒーレントデータを保存する。最後のT1に対するデータが保存されるまで、保存はこのようにして継続される。保存されるT1の数は、ソフトウェアにより予め定義される。コヒーレント保存モード4は、衛星のデータストリームのデータビット端の検出を容易にするために様々なコードオフセットが保存されるビット同期モードで有用である。コンテキストの保存はどこで終了してもよい。
図15は、バックエンド保存RAMの割り振られた領域内にデータを保存する様々なモードを例示するブロック線図である。図示のように、NCSモード0では、FFTサブシステム215(SS3)は、非コヒーレントデータをNCS領域内に保存し、特定のチャネルに対するピークデータをピークエリア内に保存する。図示のように、PDIの終わりに、ピークデータの保存は新しいピーク領域に移る。一実施態様では、バックエンド保存RAM1505aはピークエリア内に2つのピーク位置を有するが、他の実施態様では2つ以上を有することができる。
NCSモード1では、図示のようにFFTサブシステム215(SS3)は、非コヒーレントデータを、バックエンド保存RAM1505bのNCS領域内に保存し、関連するピークデータをバックエンド保存RAM1505bのピークエリア内に保存する。上記ピークは、NCSデータが更新されると更新される。
NCSモード2では、バックエンド保存RAM1505cは、スクラッチバッファ領域として使用される。図示のように、FFTサブシステム215(SS3)は、非コヒーレントデータをバックエンド保存RAM1505cのNCS領域内に保存し、ピークデータをバックエンド保存RAM1505cのピークエリア内に保存する。ピークデータはそれぞれのPDIの終わりに更新されるが、書き込みポインタはNCSデータの終わりに進められる。NCS保存モード2はスクラッチモードであるので、NCSデータは、例えばハーフチップを基準として、周波数を基準として、等で上書きされる。
NCSモード3では、図示のように、FFTサブシステム215(SS3)は、T1を基準にして非コヒーレントデータをバックエンド保存RAM1505dのNCS領域内に保存し、ピークデータをバックエンド保存RAM1505dのピークエリア内に保存する。ピークアドレス位置を含むピークデータは、それぞれのPDIの終わりに更新される。矢印は、領域の最上部に達した際に書き込みポインタが移動する方向を示す。NCSモード3は、衛星のデータストリームのデータビット端の検出を容易にするために様々なコードオフセットが保存されるビット同期モードにおいて有用である。
NCSモード4では、図示のように、FFTサブシステム215(SS3)は、非コヒーレントデータの奇数および偶数ハーフチップをバックエンド保存RAM1505eのNCS領域内に保存し、ピークデータをバックエンド保存RAM1505eのピークエリア内に保存する。1つの奇数PDIと1つの偶数PDIとがコンテキストごとに保存される。偶数および奇数PDIデータが保存された後、ピーク値は更新される。ピークアドレス位置は各PDIの終わりに更新される。矢印は、領域の最上部に達した際に書き込みポインタが移動する方向を示す。
例えば図2に示すように、追跡履歴(TH)データはバックエンド保存RAM209のTH領域内に保存される。図15のRAM1505fは、追跡履歴保存の1つのモードを示す。図示のように、追跡履歴(TH)はTH領域内に保存され、報告情報(INFO)はINFO領域内に保存される。THデータは実際のコヒーレントデータである。INFOデータは報告情報を含む。報告情報は、コヒーレントな追跡履歴データを識別するとともに、処理されたPDIの数、時間タグ等を示すTH報告のような様々な報告を含む。バイアス合計は、すべてのPDIに対するバイアスの積分和である。ノイズ合計は、すべてのPDIに対するノイズ振幅の積分和である。別の報告は、コンテキスト切り替え時に保存されるコンテキスト報告である。コンテキスト報告は時間タグ、処理済みPDIの数、バイアス合計、ノイズ合計などを含む。
図15のRAM1505gは、追跡履歴保存の別のモードを示す。図示のように、追跡履歴(TH)はTH領域内に保存され、報告情報(INFO)は、INFO領域内にT1を基準に保存される。THデータは、個別のT1に対する実際のコヒーレントデータである。INFOデータは報告情報を含む。報告情報は、(例えば位相オフセットとコードオフセットにより)コヒーレント追跡履歴データを識別するとともに、処理済みPDIの数、時間タグなどを示すTH報告を含む様々な報告を含む。バイアス合計は、すべてのPDIに対するバイアスの積分和である。ノイズ合計は、すべてのPDIに対するノイズ振幅の積分和である。別の報告は、コンテキスト切り替え時に保存されるコンテキスト報告である。コンテキスト報告は時間タグ、処理済PDIの数、バイアス合計、ノイズ合計などを含む。バックエンド保存RAM1505gの追跡履歴保存モードは、衛星のデータストリームのデータビット端の検出を容易にするために様々なコードオフセットが保存されるビット同期モードにおいて有用である。
図14と図15の保存モードは、シーケンサ217によってチャネルRAM207内に保存されたチャネルパラメータにより指示される。
図16は、様々な動作モードにおけるRAM保存の様々なモードを例示する線図である。同線図の左側で、入力サンプルRAM1603は、入力サンプル・サブシステム(SS1)により入力データサンプルで埋められる。前に説明したように、入力サンプルRAMは循環モード、またはワンショットモードで埋めることができる。信号処理サブシステム(SS2)1613は、入力サンプルRAM1603からデータを読み出し、そのデータを処理する。信号処理サブシステム1613は、信号処理システムの動作モードと構成に従い、いくつかの可能なデータ経路1604、1608、1610の1つへコヒーレントデータを出力する。
信号処理サブシステム1613の出力経路を再び参照すると、出力経路1604は、コヒーレントRAM1605の共有スクラッチ領域1630への経路を表す。スクラッチ領域1630は、SVごとに1回埋められる。チャネルは、それ自身のコヒーレントRAMを維持しない。このことはチャネルが以前の位置にかかわらず、毎回スクラッチ領域に書き込み(以前のチャネルデータに上書きし)、そして終了することを意味する。スクラッチ領域1630用に指定されたRAMの物理的領域も、バックエンド保存RAM(コールドスタート・モード用)とコヒーレント・スクラッチRAM(他のすべてのモード用)との間で交互に切り替えることができる。
出力経路1608は、コヒーレントRAM1605のSV専用コヒーレントデータ領域への経路を表す。コヒーレントデータは、各SVに対し、1630a領域の最下部SV1データから始まり、1630n領域のSVnデータで終わる循環的な様式で保存される。これは、例えば各チャネルがそれ自身のコヒーレントRAMを維持し、以前抜け出たのと同じ場所でコヒーレントRAMに入る場合に適用可能であろう。SV専用領域1630もまた、時にはスクラッチ領域として使用することができる。
出力経路1610は、コヒーレントRAM1605をバイパスするFFTサブシステム1615(SS3)への直接経路を表わす。これはコールドスタート・モードに適用可能である。コールドスタート・モードでは、FFTサブシステム1615は、コヒーレントデータを処理し、経路1612を介しバックエンド保存RAM1609へNCSデータを送信する。
ここで、FFTサブシステム1615の右の領域を参照すると、バックエンド保存RAM1619の様々な構成が表されている。同線図の最も右側の円で囲まれた数字は、様々なタイプまたはモードのNCSの保存を示す。同線図の最下部の保存モード1は、各チャネルがそれ自身の専用のTHおよび非コヒーレントデータ保存領域を含む。FFTサブシステム1615は、経路1616a〜1616nを介し、バックエンド保存RAM1609の個々のチャネル領域へデータを送信する。チャネル専用のバックエンド保存RAM領域1618a〜1618nは、ピーク、ピーク情報、ビット同期データを含むNCSデータ、および追跡履歴データを含む。
保存モード2を参照すると、各NCS領域1620a〜1620nは、それ自身の対応するピーク領域を有する。FFTサブシステム1615は、共有スクラッチ・コヒーレントRAM1630からNCS領域1620へ、経路1614aを介しデータを送信する。また、経路1614に対しても適切な代替NCS保存モードは、保存モード3である。保存モード3において、チャネル間で共有される単一のスクラッチ領域1622と、経路1614bを介したいくつかの専用ピーク領域1624a〜1624nとが存在する。
保存モード4は、複数のNCS領域1626a〜1626nを含み、各々がそれ自身の対応するピーク領域を備えるという点で保存モード2に類似している。FFTサブシステム1615は、経路1612aを介しバックエンド保存RAM領域1626内に、ビット同期データ、ピーク、およびピーク情報を含むNCSデータを保存する。経路1612に対しても適切である代替NCS保存モードは保存モード5である。保存モード5においては、チャネル間で共有される単一のスクラッチ領域1628と、経路1612bを介したいくつかの専用ピーク領域1630a〜1630nとが存在する。
ディジタル信号処理部101の制御方法と装置のさらに詳細な説明を以下にする。ディジタル信号処理部における信号処理動作の順序付け(sequencing)を制御するシーケンサについて、図2のシーケンサ217とディジタル信号処理部101とを参照して説明した。別の実施態様では、信号処理サブシステム用のシーケンサは、信号処理サブシステムと一緒に用いられ、FFTサブシステム用のシーケンサ機能は、FFTサブシステムと一緒に用いられる。そのような実施態様を図3に示す。以下の図面と説明は、これらタイプの実施態様のいずれか、または図示されない代替実施態様に適用できる。前に説明したように、シーケンサは、ソフトウェアによりプログラムされたチャネルRAMからデータを読み出す。チャネルRAMは、ディジタル信号処理部101のようなディジタル信号処理部の現状ステータスに関する情報を保存する。チャネルRAMはまた、様々なハードウェア要素の構成がどのようになるかについてを含む、信号処理のどんな態様が次に発生しようとしているかについての情報を保存する。
図17は、一実施態様におけるチャネルRAM1702、およびそれと通信する要素を例示するブロック線図である。同線図の右側と左側の破線は、チャネルRAM1702とシーケンサ1704との間(同線図の左側)、およびチャネルRAM1702とディジタル信号処理部1701のようなディジタル信号処理部の他の様々な要素との間(同線図の右側)の通信を概念的に示す。同線図における諸要素の相対位置、および破線に特別な意味はない。例えば、実際には、シーケンサは、図示のサブシステム群のいずれかと一緒に設置できるか、または、一部が1つのサブシステム2(SS2)と一緒に設置され、かつ一部がサブシステム3(SS3)と一緒に設置できるであろう。異なる要素の他の任意の相対配置も可能である。前に説明したように、SS2は信号処理サブシステムを示し、SS3はFFTサブシステムを示す。
チャネルRAM1702は、シーケンサ1704、信号処理サブシステム、FFTサブシステム、コヒーレントデータに割り振られたRAMの一部分、NCSデータに割り振られたRAMの一部分、および追跡履歴(TH)やピーク等のデータに対し割り振られたRAMの他の部分へデータを送信し、かつ、それらからデータを受信する。
チャネルRAMは、レコード0からレコードNまでラベルを付けられた複数のチャネルレコードを保存する。チャネルレコードのそれぞれは、ワード0からワードNまでラベルを付けられた複数のデータワードを含む。一実施態様では、各チャネルレコードはおよそ256バイトのデータを含む。各チャネルレコードのワード0は、読み出すべき、または、書き込むべき次のチャネルレコードへのポインタを含む。ポインタは、あるチャネルレコードから別のチャネルレコードへ移動するために使用される。また、チャネルレコードは、可能なすべての動作モード、実行中の様々なタイプの信号処理、現在のカウントと状態、入力サンプルに関するコード位相と時間調整を含む。この情報は、図示の様々な要素へ信号として送信され、処理を制御したり、あるいはエラー状況を伝えたりする。
シーケンサ1704は、チャネルレコードのワード0から開始し、コンテンツを「実行する」。チャネルレコードのコンテンツ(ワード0からワードNまで)は、どこからデータを得るべきか、そしてどこへデータを書き込むべきかを示す、全ての関連メモリ領域内のアドレスへのポインタを含む。シーケンサ1704は、信号処理サブシステムとFFTサブシステムのどちらがチャネルRAMにアクセスするかを指示する。信号処理サブシステムとFFTサブシステムは、個別の実行スレッドとして走るが、完全に独立しているわけではない。例えば、信号処理サブシステムは、FFTサブシステムを使用するためのデータを作成する。以下にさらに説明するように、サブシステムの1つが他方のはるか先まで実行してはならない、または他方のはるか後を実行してはならない。
コンテキストが完了すると、完了したコンテキストにより更新された情報が、現行チャネルレコード内に保存され、シーケンサは、現行チャネルレコードのワード0において指示されるレコードへ移動する。
コヒーレントデータに割り振られたRAM領域は、コヒーレントデータ以外に、状態情報とさらなるポインタなどのパラメータを含むバッファ・ヘッダーを保存する。信号処理サブシステムとFFTサブシステムは、ヘッダーからそれぞれのチャネル特有の状態を読み出す。例えば、サブシステムは、最後にどこで信号処理を出たか、またはどれだけの量のサンプルを処理することになっているかを判断することができる。パラメータは1つのチャネルから次へ渡されるので、これらのパラメータを、コヒーレントRAM領域のヘッダーに保存することが便利である。例えば、信号処理サブシステムが、次のチャネルのための複数のデータ・ブロックを設置して終了した場合、FFTサブシステムは、該複数のブロックをどこで読み出すべきかを認識していなければならない。一実施態様では、既知数のブロック(例えば7個)が常にチャネル用に保存される。当該データ・ブロックの対象となるサブシステムが入って来ると、サブシステムは7個のデータ・ブロックを確保し、そして出て行く際にさらに7つのデータ・ブロックが待機することをコヒーレントRAM領域のヘッダーに書き込む。
図18は、信号処理サブシステム・シーケンサの一実施態様におけるチャネル・シーケンス制御1804の概念を例示するブロック線図である。構成1701のような信号処理部のシーケンサ1704による制御は、部品要素間の通信と、セマフォワードと割込信号を使用するソフトウェアを含む。信号処理部の制御の態様の1つは、信号処理サブシステム(SS2)、FFTサブシステム(SS3)、およびメモリまたはRAMを含む、ハードウェアリソースを使用しなければならない様々なチャネルの順序付けである。図18は、左側にSS2処理、右側にSS3処理、そして2つのサブシステムの間に「制御ゾーン」1806を示す。「time」から「1」までのラベルを付けられたバブルは、サブシステムのそれぞれに対する処理エポックの段階を表現する。処理エポックの間、チャネルはサブシステムを所有する。処理エポックの終わりで、かつ次の処理エポックの開始前にシーケンサ1704はいくつかの決定を行う。この決定はとりわけ、どのチャネルが処理用サブシステムを所有するか、どのサブシステムが様々に割り振られたRAM領域へのアクセス、およびRAMアクセス用の特定アドレス位置を有するかを含む。
制御ゾーン1806内には、SS2とSS3用のチャネルRAMポインタ1808と1810がそれぞれ示されている。チャネルRAMポインタ1808と1810は、SS2とSS3のそれぞれに対するバッファ基底ポインタと、チャネルポインタとを含む。バッファ基底ポインタは、コヒーレントRAMにおける実際の位置を表わす。チャネルポインタは、チャネルRAM内に保存されたポインタである。図18に示すように、SS2基底ポインタは、SS3基底ポインタと比較され、SS2チャネルポインタは、SS3チャネルポインタと比較される。例えば、「チャネル2」のチャネルポインタがSS2に入る際、そのチャネルポインタとSS2内の「チャネル1」のチャネルポインタとを比較する。これは、ラッピング規則(lapping rules)を参照し、以下に説明されるように、1つのサブシステムが別のサブシステムに重なり合うこと(lapping)を回避するためである。
また制御ゾーン1806内には、SS2とSS3それぞれのためのハードウェア・レジスタ1812と1814が示されている。各サブシステムに対し「アクティブ」レジスタと「休止」レジスタがある。これらのレジスタは、サブシステムがアクティブであること、サブシステムが処理を休止しなければならないことと、を示す信号ビットをそれぞれ保存する。
シーケンサ1704は、信号処理サブシステムがFFTサブシステムに重なること、またはその逆を回避するラッピング規則を実行する。FIFO1とFIFO2は、アンダーフローとオーバーフロー状態を回避および/または検知する。アンダーフロー、オーバーフロー、およびラッピング規則は、前述されており、以下でより詳細に説明される、順序付けと制御の態様である。
FFTサブシステム(SS3)は、以下のように様々な状態下でアンダーフロー検知を実行する。SS3が入る際、信号処理サブシステム(SS2)がメモリ領域内に存在する場合は、SS3はライブ(live)SS2ポインタを使用する。SS2がこのメモリ領域内にまだ存在する限り、SS2は、SS2 T1メモリ空間(SS2BottomTlREG)の最下部である場所にライブポインタを連続的にロードする。SS2が上記メモリ領域を出ると、SS3は、その場所SS2BottomT1Regにおいて最後に保存されたポインタを使用するよう切り替わる。
SS2は、SS3が出るまでチャネルに再び入ってはならない。
SS3が入る際にSS2がメモリ領域内に存在しない場合、SS3は保存されたSS2ポインタを読み出し、それをSS2BottomT1Regへロードする。次に、SS3は保存されたSS2BottomRegまで処理し、そして出る。
信号処理サブシステム(SS2)は、以下の様々な状態下でオーバーフロー検知を実行する。SS2が入る際にSS3がメモリ領域内に存在しなければ、SS2は保存されたSS3バッファ・ポインタを読み出し、それをSS3BottomT1Reg内へロードする。SS2は命じられる限りの数のT1を処理し、メモリ空間がなくなるとオーバーフローのために停止する。SS3が上記メモリ領域に入ると、ライブSS3ポインタが使用される。SS3が上記メモリ領域を出ると、SS3が別のチャネルを有する同じメモリ領域に戻るまでは最後に保存されたSS3BottomT1Regポインタが使用される。
SS2が入る際にSS3がメモリ領域内に存在する場合、SS2は、SS3が出る点までライブSS3ポインタを使用し、そして最後に保存されたSS3BottomT1Regポインタへ切り替わる。SS2は、命じられる限りの数のT1を処理し、メモリ空間がなくなるとオーバーフローのために停止する。SS3が上記メモリ領域に入ると、ライブSS3ポインタが使用される。SS3が上記メモリ領域を出ると、最後に保存されたSS3BottomT1Regポインタは、SS3が別のチャネルを有する同じメモリ領域に戻るまで使用される。
図19は、SS2とSS3との相互作用におけるラッピング規則を例示する線図である。同図の一番上の円で囲まれた数は、期間の順序を示す。それぞれの水平方向の破線間には、その特定の期間におけるチャネルが存在する。
期間1を参照すると、SS2はチャネルに入るが、このことは、信号処理サブシステムがチャネルを所有し、チャネル用データを処理するために使用されていることを意味する。SS2は、オーバーフロー状態が存在するかどうかを判断するために、コヒーレントRAM領域内に保存されたSS3ポインタを使用する。
ラッピング規則によれば、SS3がチャネル内にまず存在すれば、SS2は、SS3がチャネルを出るまで入ることができない。SS3がチャネル内に存在し、かつSS2がチャネル内に存在しないと、SS3は、当該チャネルに対するコヒーレントRAM内のすべてのデータ(SS2が当該チャネルのデータを処理した最後の時からSS2により保存されたデータ)を処理し、そして当該チャネルのすべてのデータが処理されると出る。
期間2に示すように、SS2がチャネル内に存在すると、SS3(FFTサブシステム)が、当該チャネル用の演算を行うべきコヒーレントデータを有する場合は、SS3はチャネルに入ることができる。ラッピング規則によると、SS3は、SS2がチャネルを出るまでチャネルを出てはならない。SS2とSS3は、両方ともチャネル内に存在するので、SS2は、オーバーフロー状態が存在するどうかを判断するために、ライブSS3ポインタを使用する。
前に説明したように、SS2チャネルRAMベースポインタは、シーケンサにより読み出され、レジスタ内にロードされ、そして重なることを回避するために対応するSS3ポインタと比較される。SS2がチャネル内にあり、かつSS3が同じチャネル内にあれば、SS3側のシーケンサは、(SS2が同じチャネル内に存在するので)SS3が出ることができないことを認識する。一方、コヒーレントRAMのベースポインタは、データ処理のファーストイン・ファーストアウトを実施する。SS3は、SS3がチャネルに入るか、または出ることができるかというよりむしろ、SS3が処理するに十分なデータをSS2が作成したかどうかに関心を持つ。SS2は、SS2が未処理データに上書きしないように、SS3が十分なデータを処理したかどうかに関心を持つ(これはオーバーフローとアンダーフロー状態の予防および/または検知である)。
図19を再び参照すると、期間3では、SS2はチャネル用データを処理し終えて、チャネルを出る。SS3は、SS2がチャネルを出たポイントまでチャネル用データを処理する。期間4において、SS2は再びチャネルに入る準備ができているが、SS3が出るまでそうしてはならない。
期間5では、SS3が出たので、SS2は再びチャネルに入る。期間6では、SS2は処理を終了したのでチャネルを出る。SS3がチャネルからの処理すべきデータをもはや有さない場合は、SS3がチャネルに入る必要はない。したがって図19は、1つ以上の特定のチャネルからのデータが、サブシステムにより相互に織り込まれた方式か、または時分割方式でどのように処理されるかを例示する。
シーケンサにより実行されるラッピング規則は、信号処理部の全体制御の一部を規定する。制御のその他の部分は(例えば、図3に示すように)FIFO2により規定される。一実施態様では、FIFO2は、SS3により読み出されたデータをSS2が保存する循環バッファである。SS2はT1からT2へとFIFO2を埋める。SS3は、読み出しとデータ処理を始める前に、完全なPDI(プログラムされたT1の数)が使用可能となることを要求する。PDIにおけるT1の数は、FFTサブシステムのFFT要素(図示せず)が要求するものにより決定される。FFTは、様々な数のT1について演算を行うように構成可能である。例として、FFTが5サンプル、16ポイントのFFTで構成された場合、データを読み出し始めることができる前に、FFTは5つのサンプルすなわち完全な5つのT1を必要とする。FIFO2とラッピング規則の組合せにより、信号処理サブシステムとFFTサブシステム間のフローを制御する。
信号処理サブシステム(SS2)は作成されるデータ量を制御する。SS2は、各コンテキストに関し、一定のデータ量を作成するようにプログラムされる。ここでコンテキストは、チャネルがSS2に入ったことを意味し、当該コンテキストはSS2を出ると終了する。したがって、特定のコンテキストでは、SS2は数ミリ秒間実行するようにプログラムされ、処理するためにプログラムされたミリ秒間が終了するまで、FIFO1からデータを読み出す。
シーケンサのラッピング規則は図19に例示されるように、次のように記述することができる。
1.SS2が処理したチャネルは相互に重なってはならない。
2.SS3が現在当該チャネルに関しアクティブな場合、SS2はチャネルに入って(アクティブになって)はならない(さもないとSS2はSS3状態に「重なる」)。
3.SS2が、現在当該チャネルに関しアクティブな場合、SS3は、チャネルを出てはならない(例えば、SS3の処理は、SS2の状態に従う必要があるかもしれず、SS2がアクティブな場合、データが入手可能になるとSS3はそれを処理する)。
4.SS2は、処理するようにプログラムされたミリ秒の間処理し(SW修正部分を含む)、そしてSS2の処理が完了するまで当該チャネルにとどまる。
5.SS3は、そのバッファ内(コヒーレントRAM領域)で入手可能なだけのT1を処理する。SS3は、SS2がアクティブでなければ、保存されたSS2バッファ・ポインタまで、SS2がアクティブであれば、SS2が完了するポイントまで処理を行う。
6.待機セマフォまたは待機フラグにより、SS2とSS3が処理を続けることを回避できる。例えば、SS2は、「SS3コンテキスト完了」または「SS3 PDI完了」により停止することができ、SS3は「SS3 PDI完了」により停止することができる。
ラッピング規則を適用する際、チャネルRAMポインタは、チャネルが等しいかどうかを判断するために使用される。コヒーレントRAMポインタと「アクティブ」フラグは、SS2とSS3が同一のコヒーレントRAM領域内に存在するかどうかを判断するために使用される。共有コヒーレントRAM領域を使用することは、2つの異なるチャネルが同一のコヒーレントRAM領域でアクティブであることを意味し、共有コヒーレントRAM領域はあたかも1つのチャネルだけがそれにアクセスしようとしているかのように扱われる。
セマフォワードと割り込み、そして信号処理部の動作を制御する際のそれらの役割について、ここではさらに詳細に説明する。図20は一実施態様のセマフォワード構造の線図である。セマフォワードの構造は、信号処理サブシステム(SS2)により制御された16ビットと、FFTサブシステム(SS3)により制御された16ビットを含む。セマフォワード構造はさらに、図3のSW319のようなソフトウェア(SW)により制御される32ビットを含む。SWにより制御される32ビットは、以下にさらに説明されるように、SS2とSS3により制御されるビットに位置合わせされる。セマフォワード構造は、SWにより制御される32ビット、およびSS2とSS3により制御されるビットの両方に位置合わせされる32のマスク・ビットをさらに含む。セマフォワード構造は、他のワードのビットと位置合わせされない有効/休止ビットをさらに含む。
上述のように、セマフォワードは、フラグのあちこちへのやり取りを有効にすることにより、相互には同期していないSS2、SS3、およびSW間の通信を容易にする。シーケンサ(例えばSS2シーケンサ)が初期化されると、シーケンサは、任意のSS3またはSWフラグに対するセマフォワードを読み出す。セマフォワードは、シーケンサによりどの処置が講じられるべきか、講じられるべきでないかを判断する情報を提供する。図21は実施態様におけるセマフォワードの構成を示す。個々のビットの意味はビット・ラベルにより示される。「セマフォ第1ハーフ」、「セマフォ第2ハーフ」とラベルを付けられた32ビットは、図20のSS2ビット、SS3ビット、SWビットから構成される64ビットに対応する。32個の割込み有効ビットは図20の「マスク」ビットに対応する。各チャネルに対し、図21に示すようなセマフォワードがある。
図示のように、セマフォ・ビットは、大部分は重複する。すなわち、特定の意味を有するSS2ビットは、対応するSS3ビットと、対応するSWビットとを有する。SS2、SS3、SW間のメッセージ通信は、対応する意味を有するハードウェア(HW)ビットとSWビットとのXORを実行する工程を含む。HWは信号処理サブシステム(SS2)とFFTサブシステム(SS3)を含む。メッセージ通信は2方向に存在する。1方向では、HWは、HWイベントが発生したことをSWに知らせる。命令のもう一方の方向では、SWはHWにアクションを実行させる命令を送る。ビットはセマフォ「フラグ」として機能する。例としてステータス・セマフォを用いると、HWがイベントについてSWに通知したい場合、HWは適正なビットの現在の状態を変化させる。2つの対応するビットの初期開始状態は同じであって、0または1のいずれかである。ビットの状態がHWにより変化されると、2つのビットのXORは1になる。こうしてSWがセマフォワードを調べる際に、SWはXOR結果が1であるのでHWがフラグを設定したということが分かる。SWは、対応するビットの状態を、その制御下で変化させることにより応答する。当然ながら、これにより2つのビットの状態を再び同じにし、こうして2つのビットに対するXOR結果を0にし、フラグをクリアする。HWフラグ情報に対するSWの応答は、フラグの意味によって、承認、命令、リセットまたは初期化として解釈することができる。
もう一方の方向では、SWは、特定の意味のビット・ペアに対するXOR結果を0にすることにより命令を作成する。一例は100MUT報告を作成する命令である。上記命令を受信すると、HWは、XOR結果をもう一度1にするためその制御下でビットを変化させることにより承認する。
図20を参照し、命令と承認の例として1組のビットを用いると、セマフォ第1ハーフのワードは、ソフトウェア制御されたss2AdjEndMsSWビット(円で囲む)を含む。セマフォ第2ハーフのワードは、HW制御された対応部分のss2AdjEndMsHW(同じく、円で囲む)を含む。ss2AdjEndMsSWビットは、HWに「通常のミリ秒数を処理する代わりに、追加のミリ秒を処理する」ように伝える。この特別の場合、SWは、その制御下で上記ビットの状態を変化させ、2つの対応ビットのXORを零にすることによりHWへの命令を作成する。HWが上記命令を完了した後、HWは、そのss2AdjEndMsHWビットの状態を変化させ、再びXORを1にすることにより承認を送信する。
ステータスフラグの例として、セマフォ第1ハーフワードは、fifolOvrflwSW(円で囲む)を含む。セマフォ第2ハーフワードは、HW制御の対応部分であるfifolOvrflwHW(同じく円で囲む)を含む。FIFO1のオーバーフロー状態が発生すると(SS2がデータを読み出す前に、SS1がそのデータの一部分に上書きしたことを意味する)、それは、HW制御下でビットの状態を変化させ、そして適用可能ならば対応する割り込みを生成することによりセマフォワードと通信する。
図21の第3行のビットは、特定チャネルに対する割り込み用の割込み有効化マスク・ビットを含む。割り込みはこのセマフォワードに関連する。HWが、ステータス・セマフォ・ビットの設定を望む対象のイベントを有する場合、HWもまた割り込みを生成することができる。その割り込みはSS2から出るラインである。上記ラインは、割り込みが作成された時に、どのチャネルがサブシステム内に存在したかを示さない。SWは、設定ビットを検知するために、全てのチャネルのセマフォワードを読み出すことにより、どのチャネルが割り込みを作成したかを判断する。割り込みは以下にさらに詳細に説明する。
今説明したXORメッセージ通信に従って動作しない特定ビットがいくつかある。その代り、これらのビットは3ビットのANDとして動作する。SS2に対しこのような3ビット、SS3に対しこのような3ビットが存在する。これらビットは「オン」ビットと呼ばれ、当該チャネルが処理されるか否かを示す。例えば、SS3は3つの「オン」ビットを有し、その1つはSS2により制御され、その1つはSS3により制御され、その1つはSWにより制御される。それらのソースのいずれの1つも「オン」ビットに「オフ」を内包させること、すなわち、その制御下でビットの状態を変化させることにより「オン」ビットをオフにすることができるであろう。サブシステムが初期化すると、まずサブシステムは休止すべきかどうかをセマフォワードにもとづいて判断する。次に、サブシステムは、サブシステムが処理を始めてよいかどうかを「オン」ビットにもとづいて決定する。「オン」ビットがオフになると、サブシステムは出て行き、次のチャネル用のポインタをロードする。
「オン」ビットをオフにする1つの状態は終了状態である。例えば、処理すべき数のPDIを処理すると、SS3はそれ自身の「オン」ビットと、制御するSS2の「オン」ビットとをオフにする。このとき、SS2が当該チャネルに来ると、SS2は「スキップ」する。
図22は、HW制御のセマフォとSW制御のセマフォを含むSS2、SS3、およびFIFO1のセマフォのリストである。
休止ビットすなわち休止フラグは、SS2とSS3それぞれに存在する。休止フラグは、ハードウェアリソースを用いるすべてのチャネルにより共有される。休止フラグは、エラーを含む多くの状況下で設定することができる。休止フラグがチャネルの完了、またはPDIの完了により設定されると、SS2は上記休止点まで処理し、そして停止する。
休止に反応して、SWは必要とされるすべての処理を実行し、そして適切なパラメータを更新する。SWは、完了したセマフォをクリアするためにチャネル・セマフォワードのSW部を更新する。SS2の休止が有効になると、SWはHW休止レジスタをクリアする。SWは休止を促進する際にチャネル基底ポインタを読み出す。
割り込みは、セマフォワードが更新されて、もとのチャネル・バッファに保存されると作成される。一実施態様では、割り込みは、アービトレーション・ユニットによるセマフォの承認が書き込まれると有効になる。チャネル完了セマフォとPDIセマフォは、チャネルが完了するか、またはPDIが完了するごとに、それぞれで切り替えられる。チャネル完了セマフォは、セマフォワード内のチャネルアクティブビットがクリアされると書き直される。
図23は、一実施態様におけるすべての割り込みのリストである。図示のように、様々な割り込みは様々な要素の制御下におかれる。タイマー割込はSS1により制御される。これらは、順序付けよりもむしろタイミングにより関連する。特に、タイマー割込は、FIFO1に書き込まれた入力データのタイミングに関連する。
前述のように、オーバーフロー状態は、別のサブシステムがまだ処理する機会がなかったデータに、上書きを始める1つのサブシステムを含む。オーバーフローは、割り込みを生じさせるエラー状態である。SS2の制御下にある割り込みの1つは「FIFO1オーバーフロー」である。FIFO1オーバーフローがSS2の開始時に発生する場合、割り込みはチャネルをシャットダウンする効果を有する。チャネルはセマフォワードを更新し、そして出る時に割り込みフラグを設定する(有効の場合)。
FIFO1オーバーフローがSS2処理中に発生する場合、チャネルはローカルのオーバーフロー・フラグを設定するとともに処理を継続し、そして結果として生ずるデータは「ごみデータ」として認識される。チャネルの処理が終了すると、チャネルはセマフォワードを更新し、そして出る時に割り込みフラグを設定する(有効の場合)。チャネルはローカルオーバーフロー・フラグをクリアする。
サブシステムがチャネル用のデータを処理し終えると、割り込みはまた作成される。例えば、SS2がチャネル用のデータを処理し終えると、チャネルはセマフォワードを更新し、そして出る時にSS2チャネル完了割り込みを設定する。SS3がチャネル用データを処理し終えると、チャネルはセマフォワードを更新し、そして出る時にSS3チャネル完了割り込みを設定する。
SS3がPDI分のデータの処理を終了し、チャネルもまた完了すると、S33は、チャネルを出る時にSS3チャネル完了割り込みとPDI完了割り込み(有効の場合)の両方を設定する。SS3がPDIの処理を終了したが、チャネルは完了していない場合、PDI完了割り込みのみが設定され、セマフォワードはもとのチャネル・バッファに書き込まれ、そしてSS3は停止する(有効の場合)。
シーケンサ機能の別の役目は、終了状態を決定することである。例えば、シーケンサは、SS2とSS3が、必要とされる量の処理を完了したかどうかを判断する。図24は、SS2とSS3用の終了状態のリストである。SS2から見た終了状態は、FIFO1のオーバーフローである。これは、まだSS2によって処理されていないデータへの上書きをSS1が行ったときに発生する。この場合、SS2はそれ自身の「オン」ビットと、それが制御するSS3の「オン」ビットもシャットオフする。そして、SS2はまた、何が発生したかをSWに知らせる割り込みを送信する。その時点からは、上記順序付けが、オーバーフローが発生したチャネルに達するごとに、それは省略される。これにより、SWが「オン」ビットを再プログラムする前に、中に入ってチャネルRAMを再プログラムする時間をSWに与える。
SS3の側から見ると、SS3がPDIカウントに達すると、または処理パスにオーバーフローが存在すると、または「早期終了イベント」が発生すると終了状態が発生する。SS3がPDIカウントに達すると、利用可能なデータの処理が終了する。PDIが利用可能になると、SS3がPDIベースにデータを処理するということを想起されたい。SS3は、特定の数のPDIに対し動作するようにプログラムすることができる。適用可能なPDIの数におけるデータが、SS3により処理されるとともに非コヒーレントに累算されると、SS3は、終了状態を示すためにセマフォワード内のビットを設定する。
あるパラメータを越えることにより早期の終了を引き起こすことができる。例えば、コヒーレントRAMおよび非コヒーレント累算に関連する自動スケール値が存在する(自動スケール値は、非コヒーレント加算に関連する指数である)。その値がある範囲を越えると、またはそれが非常に急速に増大すると、それは強い信号を示すので100個のPDIすべてを数える必要はない。
SWはまた、チャネルを明確にシャットダウンするために、終了の命令を送ることができる。終了状態を作り出すことは、チャネル間でのRAMの共有を考慮するので、SWがチャネルを一部シャットダウンするための明確な方法である。FIFO2から当該データを取り出す前に、チャネルをシャットダウンすることは望ましくないであろう。FIFO2からのデータを実際に処理する必要はない。次のチャネルがこの共有ポインタを調べるので、当該領域を越えてそのポインタを進めるということが重要である。これにより、処理するはずであった場所を越えて、SWがそのポインタを進めた後に限り、SWはSS3にシャットダウンするよう命令を送ることができる。SS3は、SS2がSS3用バッファにどんなデータを入れたとしても処理するはずであり、このデータは、当該コンテキストを出る前にSS3によって取り出されなければならない。
終了と早期終了は、偶数および奇数の各半分の周波数を考慮する。例えば、10ミリ秒のSS2処理は、10ミリ秒の奇数ハーフチップ、次に10ミリ秒の偶数ハーフチップ、次に複数周波数ステップに対し、それぞれ10ミリ秒を意味するものとする。したがって、SS3は、SS2がどんなデータをメモリに入れたとしてもメモリから取り出さなければならない。SS3は、データが奇数か偶数か、どれだけのデータ量が存在するかを認識している。従って、SS3は、期待すべきデータの全てを取り出し、そして終了する。したがって、終了状態の具体的な特徴は、その時発生している処理のタイプにいくぶん依存している。
これまで、信号処理部101のような信号処理部における動作の順序付け、部品要素間のセマフォワード・メッセージ通信の説明、割り込み、および終了状態を説明した。以下はシーケンサ要素とそれらの機能の実施態様の説明である。
図25は、信号処理サブシステム・シーケンサ2504の実施態様のブロック線図である。シーケンサ2504は、図3のシーケンサ313aのようなシーケンサのさらに詳細部を示す。信号処理サブシステム・シーケンサ2504は、それを介してチャネルRAMからデータを読み出す入力レジスタ2506、または入力ポートを含む。信号処理サブシステム・シーケンサ2504はまた、出力レジスタ2508または出力ポートを介しもとのチャネルRAMにデータを書き込む。一実施態様の主制御要素2502は、ステートマシンである。データは、あるアドレス基底によりアドレス指定される。例えば、チャネルRAMに対するチャネル基底アドレスがあり、そして割り振られた他の様々なRAM領域(コヒーレントRAM、NCSRAM等)に対する基底アドレスがある。基底アドレスは処理中のチャネルレコードを指示し、そしてチャネルレコードへのアクセスは基底アドレスに関係する。入力ポート2506は各種パラメータを引き出し、そして必要に応じ、それらを主制御要素2502に保存する。処理の終わりに、シーケンサ2504は、更新されたパラメータを、出力ポート2508を介しもとのチャネルRAMへ書き込む。
同線図の一番上に、信号処理サブシステムを制御するために用いられるデータが示される。前に説明したように、例えば図17を参照すると、チャネルRAMは、特定モードで動作するサブシステムを構成するために必要とされる25140〜2514nのパラメータを含む。セマフォワードはまた、信号処理サブシステムを制御するために使用される。セマフォワードは命令とステータス情報を含む。セマフォワードは、信号処理サブシステム、FFTサブシステム、ソフトウェア間の通信に使用され、アクセスを必要とするすべての要素によりアクセス可能な任意のメモリ領域に保存することができる。一実施態様では、セマフォワードはチャネルRAMに保存される。
一実施態様によるRAMアドレスの作成は図26に例示され、バッファ(すなわちRAM領域)基底アドレス2602とチャネル基底アドレス2604のうち1つがオフセットアドレス2606と組み合わせられて、信号処理サブシステム・アクセス用の実際のRAMアドレス2608(ss2CntrlRAMAddr)をもたらすことを示す。バッファ基底アドレス2606またはチャネル基底アドレス2608の選択は、主制御要素2502からマルチプレクサ2610までの選択信号により行われる。
図27は、図3のシーケンサ313aのような信号処理サブシステム・シーケンサの動作を例示するフローチャートである。「初期の開始」とラベルを付けられた点で、SS2はリセットされる。参照符号2840において、セマフォワードはソフトウェア(「SW」)により読み出される。図示のように、判断ブロック2802においてチャネルが休止されていると、休止フラグ2842はクリアされ、処理は参照符号2840のセマフォワード読み出しに戻る。チャネルがオフであることをセマフォワードが示すと、参照符号2838において、チャネル基底ポインタまたはリンクポインタが更新される。次に、参照符号2812において主制御要素がオンかどうかが判断される。主制御要素がオンではない場合、処理は初期開始点、すなわちリセットに戻る。
主制御要素がオンである場合、参照符号2814においてチャネルがラッピングのために停止されるかどうかが判断される。そうならば、シーケンサはその状態に留まり、ラッピング状態がもはや存在しなくなるまでラッピング状態をチェックする。ラッピング状態がクリアされると、シーケンサは参照符号2840のセマフォワード読み出しに戻る。
判断ブロック2802を再び参照すると、チャネルがオフでも休止でもない場合、チャネルは参照符号2816においてアクティブとなり、そして適正なフラグがセマフォワードにおいて設定されるか、またはクリアされる。いくつかのパラメータはSS2が「実行」を開始するときに初期化される。これらは以下のパラメータ、すなわち
処理すべきミリ秒数、
搬送波加速度、
搬送波周波数、
搬送波位相、
コード位相、
T1内のミリ秒カウント、
アドレス空間内およびラップ(wrap)内のT1カウント、
現行T1の基底アドレス、
現行コヒーレントバッファの基底アドレス、
自動スケールおよび飽和フラグ、ならびに
FIFO 1のラインブロックとラップ、を含む。
次に、参照符号2804において、SWは、チャネルが処理する十分なデータが、入力FIFO(FIFO1)に存在するかどうかどうかを判断するために、ターンオン時間を調べる。それが無いと、参照符号2806において、SWはオーバーフローが存在するかどうかを判断する。オーバーフローが存在しない場合は、参照符号2836においてチャネルは非アクティブとされて、適正なフラグ(群)が設定される。次に、処理は前に説明した参照符号2838に移動する。
オーバーフローが存在する場合、参照符号2834においてセマフォワードは更新され、そして適正な割り込みが有効になる。次に、処理は前に説明したように参照符号2836に移動する。
参照符号2804において、チャネルが処理する十分なデータが入力FIFO(FIFO1)に存在することが判断されると、参照符号2818において、SS2は、チャネルRAMおよび他のメモリ領域からデータを取り込むことも含み、初期化される。FIFO1とFIFO2もチャネルに対して初期化される。参照符号2820において、SS2は調整可能なミリ秒数の間実行される。相互相関処理が発生するようにプログラムされている場合、参照符号2808に示されるように、それは偶数ハーフチップの最初の実行後に1回実行される。参照符号2826において、SS2とFIFO2は、相互相関のために初期化され、参照符号2828において相互相関が実行される。参照符号2830において、処理すべき相互相関用の衛星ビークル(SV)がさらに存在するかどうかが判断される。SVがもう存在しない場合、参照符号2832においてセマフォワードは更新され、そしてセマフォワードの書き込みが承認された時に適正なフラグが設定される。その後、以下に説明するように、処理は判断ブロック2810に戻る。
相互相関処理が発生するようにプログラムされていない場合は、参照符号2810において、処理すべき周波数がさらに存在するかどうかが判断される。それが存在する場合、参照符号2822において、SS2の「位置」は入力データに対し調節され、参照符号2818においてSS2、FIFO1、およびFIFO2はチャネル用に再び初期化される。
処理すべき周波数がもはや存在しない場合、すなわち、所望数の偶数と奇数ハーフチップ、および周波数状態が処理された場合、シャットダウン状態は参照符号2824において保存され、そしてシーケンサはメモリに進み、参照符号2834においてセマフォワードを更新するとともに有効となった割り込みを設定する。前述のように、参照符号2836において、処理はチャネルの非アクティブを続ける。
図28は、図3のシーケンサ315aのようなFFTサブシステム・シーケンサの動作を例示するフローチャートである。概して言えば、PDIベースのデータ処理は、破線2800の右側の動作/機能により表わされる。「初期の開始」とラベルを付けられた点で、SS3はリセットされる。
セマフォワードは参照符号2874においてSWにより読み出される。図示のように、判断ブロック2902においてチャネルが休止されていると、休止フラグ2876はクリアされ、参照符号2874においてセマフォワードは再び読み出される。休止が有効である場合、SWは、SWが入ってプログラミングに変更を加えるか、またはデータを集めることができるよう、サブシステムを停止させたいということを通知する。これは、例えばPDIベースで、または、チャネルがサブシステムへ入る時に起こりうる。
チャネルは休止されていないがオンしていない場合は、参照符号2924においてSS2(信号処理サブシステム)のチャネルが停止されたかどうかが判断される。SS2のチャネルが停止されていない場合は、参照符号2872においてチャネル基底ポインタまたはリンクポインタが更新される。次に、主制御要素がオンかどうかは参照符号2922において判断される。主制御要素がオンではない場合、処理は初期設定(リセット)に戻る。主制御要素がオンの場合、前に説明したように、セマフォワードは参照符号2874において読み出される。
判断ブロック2902を再び参照すると、チャネルがオフでも休止でもない場合、チャネルは参照符号2854においてアクティブとなる。SS3とFIFO2は、参照符号2852においてチャネル用に初期化される。判断ブロック2904で、利用可能なFIFO2データが存在するかどうかが判断される。先に説明されたように、この判断はラッピング規則の実施の一部である。利用可能なFIFO2データが存在する場合、判断ブロック2926において、相互相関を実行するかどうかが判断される。相互相関が実行される場合、参照符号2918において、利用可能な相互相関データが存在するかどうかが判断される。相互相関データが利用可能な場合、参照符号2850において相互相関およびFFT処理が有効となる。次に、以下にさらに説明するように、参照符号2848において次の相互相関ポインタが読み出され、処理は判断ブロック2908に移る。
相互相関が実行されない場合は、参照符号2880においてFFT処理が有効となる。参照符号2908に示すように、FFT処理はT1が終了するまで続く。T1に対するFFT処理が終了すると、参照符号2910に示すように、PDIに対するFFT処理が終了したかどうかが判断される。PDIに対するFFT処理が終了すると、参照符号2912に示すように、PDIに対するNCS処理が終了したかどうかが判断される。PDIに対するFFT処理およびNCS処理が終了すると、PDIの数、奇数および偶数ハーフチップの数、周波数計数器が参照符号2844において更新される。参照符号2834により示されるハードウェア追跡ループ(HWTL)は複数のパラメータを更新する。HWTLフィルタは参照符号2842において繰り返される。ノルム値、ノイズ合計値およびバイアス値は、参照符号2840、2838、2836に示すようにそれぞれ更新される。
HTWL2834後、参照符号2914において、PDI休止が有効になったかどうかが判断される。有効になっていない場合、参照符号2916において、終了状態が存在するかどうかが判断される。終了状態が存在する場合、SS2とSS3に対するターンオフ・フラグが参照符号2830において設定される。次に、処理は参照符号2904へ戻る。終了状態が存在しない場合、処理は参照符号2904へ戻る。
PDI休止が有効になると、休止フラグ2832はクリアされ、参照符号2916において終了が検知される。
参照符号2910へ戻り、PDIのFFT処理が終わっていなければ、参照符号2920において終了状態がチェックされる。終了状態が存在する場合、処理は参照符号2904へ戻る。終了状態が存在しない場合、SS2とSS3に対するターンオフ・フラグが参照符号2846において設定され、処理は次に参照符号2904へ戻る。
参照符号2904を再び参照すると、FIFO2データが利用可能でなければ、参照符号2906において、SS2のチャネルが停止されるかどうかが判断される。SS2のチャネルが停止されると、処理は再びFIFO2データをチェックするために参照符号2904へ戻る。SS2のチャネルが停止されていない場合、参照符号2856において報告コンテキストが有効にされたかどうか、またNCOが変化したかどうかが判断される。報告コンテキストが有効にされない場合、またNCOが変化しなかった場合、参照符号2862において100mut(100ミリ秒)報告が有効にされたかどうか、および報告すべき100mutのデータが存在するかどうかが判断される。そうならば、100mut報告は参照符号2860において作成され、処理は参照符号2864へ移る。参照符号2864は、HWTLコンテキストと、チャネルRAM内のNCOを更新するように支援するHWTLおよびSWを繰り返しを含む。2864のイベントはまた、100mut報告が有効にされていなかったり、報告すべき100mutのデータが存在しないという参照符号2862における判断に応答して発生する。
参照符号2856を再び参照すると、報告コンテキストが有効にされ、かつNCOが変化したことが判断されると、コンテキスト報告は参照符号2858において作成され、そして処理は参照符号2864へ進む。参照符号2864の後、シャットダウン状態は参照符号2866において保存される。参照符号2868においてセマフォワードは更新され、そして適切な割り込みが有効となる。次に、チャネルは参照符号2870において非アクティブとされる。前に説明したように、チャネル基底ポインタまたはリンクポインタは参照符号2872において更新され、そして処理は続く。
説明した実施態様のいずれのメモリの割振りと共有の態様も、特定用途向けIC(ASIC)だけでなくプログラマブルロジック装置(PLD)、例えば、フィールドプログラマブル・ゲートアレイ(FPGA)、プログラマブルアレイロジック(PAL)装置、電気的プログラマブルロジックおよびメモリ装置、および標準的なセルベースの装置を含む多種多様の回路のいずれにも、プログラムされた機能として実施することができる。実施態様のメモリの割振りと共有の態様を実施する他のいくつかの可能性としては、メモリ(電子的消去可能プログラマブル・リードオンリーメモリ(EEPROM))を備えたマイクロコントローラ、埋め込み型マイクロプロセッサ、ファームウエア、ソフトウェア等が挙げられる。更に、実施態様のメモリの割振りと共有の態様は、ソフトウェアベースの回路エミュレーション、個別ロジック(順序および組合せ)、カスタム装置、ファジー(ニューラル)ロジック、量子装置、および上記装置タイプの任意の混成物を有するマイクロプロセッサにおいて具現化することができる。もちろん、この根底の装置技術は、多種多様の部品タイプ、例えば相補型金属酸化膜半導体(CMOS)のような金属酸化膜半導体電界効果トランジスタ(MOSFET)技術、エミッタ結合論理(ECL)のようなバイポーラ技術、ポリマー技術(例えば、シリコンを結合したポリマー、金属を結合したポリマー金属構造)、アナログおよびディジタル混載等において提供することができる。
本明細書および特許請求の範囲を通して文脈上明確に必要な場合以外は、単語「含む」および「含んだ」などは、排他的または網羅的意味とは対照的に包括的な意味で解釈されるべきであり、すなわち、「包含した」という意味であって限定するものではない。単数または複数で用いた単語もまた、それぞれ複数または単数を含む。さらに、単語「ここに」、「この下に」、「上記」、「以下に」、および同様なものを取り込んだ用語は、本明細書で用いられた場合、本特許の任意の特定の部分ではなく全体としての本特許を指すものとする。単語「または」が2つ以上の項目のリストを参照して使用された場合、該単語は、該単語の以下の解釈すべて、すなわちリスト内の項目の任意のもの、リスト内の項目すべて、およびリスト内の項目の任意の組合せを包含する。
例示したメモリ共有の実施態様の上記説明は、包括的であること、または開示された厳密な形式に本発明を限定することも意図しない。メモリ共有に対する特定の実施態様と実例は、本明細書では例示的な目的のために説明されたが、関連技術における当業者が認識するであろうように、様々な等価な修正は本発明の適用範囲内で可能である。本明細書で提供されたメモリの割振りと共有の教示は、上述の電子システム用だけではなく他の電子システムにも適用することができる。
上述の様々な実施態様の要素および行為は、さらなる実施態様を提供するために組み合わせることができる。実施態様のメモリ共有に対するこれら、および他の変更は、上記詳細な説明に照らし行うことができる。
本明細書で説明された実施態様の態様は、様々な特許のシステム、機能、概念、および上述の応用を使用し、メモリの割振りと共有のさらなる実施態様を提供するために必要ならば修正することができる。
一般的には、特許請求の範囲において使用される用語は、メモリの割振りと共有を本明細書および特許請求の範囲において開示された特定の実施態様に限定して解釈すべきでなく、メモリの割振りと共有を提供する特許請求の範囲の下で作動するすべての電子システムを含めて解釈すべきである。従って、メモリの割振りと共有は本開示により限定されるものではなく、メモリ共有の適用範囲は特許請求の範囲により完全に決定されるべきである。
メモリの割振りと共有の特定な態様は、特定の請求項形式で提示されるが、本発明者らは任意の数の請求項形式でのメモリの割振りと共有の様々な態様を考察している。例えば、メモリの割振りと共有の1つの態様のみが、コンピュータ可読媒体において具現化されるものとして記載されているが、他の態様も同様にコンピュータ可読媒体において具体化することができる。従って、本発明者らは、本出願後、本メモリの割振りと共有の他の態様に関するこのような追加の請求項形式を追求する付加的な特許請求の範囲を追加する権利を留保する。