(57)【特許請求の範囲】
【請求項１】
制約レングスＫをもつ畳み込み符号化データを復号する方法であって、
複数の累積パスコストのそれぞれにＮビットを割り当てることと、
Ｋステップで得られる最大遷移コストＭを設定することと、Ｍはゼロ以上の値をもち、前記最大遷移コストＭは、
（２＾（Ｋ＋１）＊Ｍ）−１＜２＾Ｎ−１により定義され、
新たな遷移コストでの累積前に、最小累積パスコストが予め定められた値に達したとき、前記複数の累積パスコストのうちの１つまたは複数から共通オフセットをひくことと、
を含む方法。
【請求項２】
１シンボルペアの４つの可能性のある解釈のそれぞれについての１セットのコストを計算すること、および、各コストセットを４バイトフィールドとしてインデックス付けされる３２ビットの単一ワードにパッキングすること、
をさらに含む請求項１に記載の方法。
【請求項３】
各状態遷移に関連する遷移コストはブランチ遷移およびブランチコストにより定義される、請求項１に記載の方法。
【請求項４】
各３２ビットメモリワードが、連続する４つの可能性のある状態に関連するコストを含むように、全ての状態についての正規化された累積状態コストは、メモリ内の連続したロケーションに記憶される８ビットフィールドで表される、請求項１に記載の方法。
【請求項５】
各連続アドレスが、連続する２つの３２ビットメモリロケーションで表される８つの現在状態に対応する０及び１のデータビットについて有効なシンボルを表す状態遷移シンボルを保持するようにメモリにまとめられた、シンボル毎の２ビットのパック（packed）構造を用いて、有効遷移に対応するシンボルを表すこと、をさらに含む請求項１に記載の方法。
【請求項６】
ループを８回反復して６４の状態を処理することをさらに含み、
各反復は８つの連続する現在状態を、関連する状態シンボル解釈コストが第１の３２ビットレジスタに記憶されるループ不変量として表すことができ、さらに前記ループについての遷移情報が第２のレジスタに記憶できるように処理する、請求項１に記載の方法。
【請求項７】
レジスタに記憶された値を変更することにより、ソース及びデスティネーション（destination）状態コストロケーションと、前記関連する遷移情報とについてアドレスを生成すること、をさらに含む請求項６に記載の方法。
【請求項８】
畳み込み符号化データを復号するように構成された符号化装置であって、
各累積パスコストにＮビットを割り当てる手段と、
Ｋステップで得られる最大遷移コストＭを設定する手段と、Ｍはゼロ以上の値をもち、前記最大遷移コストＭは、
（２＾（Ｋ＋１）＊Ｍ）−１＜２＾Ｎ−１により定義される、
新たな遷移コストでの累積前に、最小累積パスコストが予め定められた値に達したとき、前記複数の累積パスコストのうちの１つまたは複数から共通オフセットをひく手段と、
を備える装置。
【請求項９】
１シンボルペアの可能性のある解釈のそれぞれについての１セットのコストを計算する手段と、
各コストセットを４バイトフィールドとしてインデックス付けされた３２ビットの単一ワードにパッキングする手段と、
をさらに備える請求項８に記載の装置。
【請求項１０】
各状態遷移に関連する遷移コストはブランチ遷移およびブランチコストにより定義される、請求項８に記載の装置。
【請求項１１】
各３２ビットメモリワードが、連続する４つの可能性のある状態に関連するコストを含むように、全ての状態についての正規化された累積状態コストは、メモリ内の連続したロケーションに記憶される８ビットフィールドで表される、請求項８に記載の装置。
【請求項１２】
各連続アドレスが、連続する２つの３２ビットメモリロケーションで表される８つの現在状態に対応する０及び１のデータビットについて有効なシンボルを表す状態遷移シンボルを保持するようにメモリにまとめられた、シンボル毎の２ビットのパック（packed）構造を用いて、有効遷移に対応するシンボルを表す手段、をさらに含む請求項８に記載の装置。
【請求項１３】
ループを８回反復して６４の状態を処理する手段をさらに備え、
各反復は８つの連続する現在状態を、関連する状態シンボル解釈コストが第１の３２ビットレジスタに記憶されるループ不変量として表すことができ、さらに前記ループについての遷移情報が第２のレジスタに記憶できるように、処理する、請求項８に記載の装置。
【請求項１４】
ソース及びデスティネーション（destination）状態コストロケーションと、前記関連する遷移情報とについてアドレスを生成するために、レジスタに記憶された値を変更する手段、をさらに備える請求項１３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、畳込み符号化データを復号する受信機を含む全地球型航法衛星システム(GNSS：Global Navigation Satellite System)用の受信機に関する。特に、これらに限定するものではないが、本発明の実施形態は、WAAS/EGNOS衛星のような静止衛星によって送信された補強（augmentation）データを復号することができるGPL受信機や、GALILEO標準に従った畳込み符号化データ用のGALILEO受信機に関連する。
【背景技術】
【０００２】
ＧＰＳにおいて、既存のＳＢＡＳ（Satellite Based Augmentation System）静止衛星が、異なる国家により運用され、ポータブルGPS受信機デバイスから利用可能なGPS測位品質およびインテグリティを補強するために追加情報を提供するために使用される。
【０００３】
そのような情報は、測位品質及び衛星インテグリティについての情報を改善するために適用することができる大気補正に関する追加情報を提供する。
【０００４】
より大きい軌道半径とSBASの静止軌道とにより、より複雑な畳込み符号化がデータ転送に使用されてきた。これにより、受信機により複雑な復号能力が必要となり、典型的にはビタビ（Viterbi）復号器である(それはシステムの処理負荷を増加させる)。SBAS実装の場合には、ビタビ復号は、典型的には単一のＳＶに適用され、それは汎用プロセッサにより実行されるソフトウェア復号器によって実装されることが知られている。この解法は簡単であるが、速度および電力節約に関する限り準最適である。
【０００５】
提案されたガリレオシステム信号も、同じベーシック畳込み符号化技術を用いて、コンステレーション（constellation）中の全てのＳＶの上のデータチャネルについて畳込み符号化メカニズムを使用するが、場合によっては、異なるジェネレータ多項式およびシンボルレートを使用する。
【０００６】
この解法に用いられる全てのガリレオＳＶにおいてビタビ復号アルゴリズムが同時に動作することが必要となるので、この新たなナビゲーション信号フォーマットの効果は、処理オーバヘッドの非常に増加させ、それにより、システムリソース上のビタビ復号器の負荷が非常に重要になる。この全てをソフトウェアで実行することは論理的には可能であるが、処理オーバヘッドおよびメモリの追加が必要であり、これによりGNSSナビゲーション解にコスト及び所要電力の増加を招き、小規模、低電力、及び低コストの市場目標と直接の矛盾をきたす。
【０００７】
これに対する1つの解は、ビタビ復号器をハードウェアで実施して、プロセッサから完全に処理を解放することである。この方法を行うことは、メインプロセッサ上の負荷を低減するが、コスト及び電力が単に異なるサブシステムへ移動するだけである。
【０００８】
従って、システムリソースに高い負荷を与えることなく、畳込み符号化信号を復号できる低電力GNSS受信機を提供する必要がある。本発明は、さらに、畳込み符号化する信号を、従来の受信機よりも低電力で、より速く復号できる低電力GNSS受信機を提供することを目的とする。
【発明の概要】
【０００９】
本発明の目的は、添付のクレーム対象によって達成される。本発明の変形において、この目的は、プロセッサに実施された特別命令セットに基づくソフトウェアビタビ復号器により達成され、それは、ハードウェア複雑さを著しく増加させることなくCPU負荷を著しく低減したビタビ処理を行うことを可能にする。
【００１０】
ビタルアルゴリズムのSVナビゲーションおよび分析に特有の適切な設計制約の注意深い応用によって、最適化されたアーキテクチャは、GNSSチップセットへビタビ加速ロジックを効率的に埋め込むために実現できる。
【００１１】
さらに、ハードウェアとソフトウェアの間を密接に相互作用させることにより、これは、システムリソースを著しく増加させることなく、従来のRISCプロセッサの命令セットの拡張により実行することができる。
【図面の簡単な説明】
【００１２】
【図１】トレリス状態図を表す。
【図２】図１の図における最低コストパスを表す。
【図３】ハミング距離の計算を表す
【図４】コスト配分を示す。
【図５】累積状態コスト図を示す。
【図６】ビタルアルゴリズム中の異なるデータアクセス方法を概略的に示す。
【図７】本発明の実施形態に関する命令アーキテクチャを示す。
【図８】本発明に関する命令の暗黙的アドレッシングに関する。
【図９】本発明に関する命令の暗黙的アドレッシングに関する。
【図１０】送信されたビットのシーケンスを示す。
【図１１】図１０のビットシーケンスの復号を表す。
【図１２】図１０のビットシーケンスの復号を表す。
【図１３】本発明の一側面に従った特別命令セットをもつプロセッサの動作を概略的に示す。
【発明を実施するための形態】
【００１３】
ビタビ符号化および復号アルゴリズムは、当該技術において一般に知られており、当該技術文献に説明されている。下記では、GNSS実装に特有の側面だけが議論される。
【００１４】
いくつかの基準がビタビ実施で考慮されなければならない。すなわち、シンボルサイズ、シンボル解釈、ジェネレータ多項式およびレングス、およびシンボルレート、である。GNSSアプリケーションの場合、制約レングスＫ＝７（メモリｍ＝６）は、送信されたシンボルが現在のデータビットおよび前の6つのデータビットの関数であることを意味し、コードレートが２であることは、各データビットについて２つのシンボルが送信されることを意味し、シンボルレートは一般に約２５０あるいは５００シンボル／秒であり、ジェネレータ多項式は変更することがある。
【００１５】
ビタビは、以前に受信されたシンボルの可能性のある解釈に基づいた特定の状態にある最大尤度を計算するパスコストテーブル上で動作する、畳込み符号化及び復号技術である。多項式はレングス７であるので、その実施は、以前の６つのデータビットを表わす６２の状態を必要とする。
【００１６】
用いられる畳込み符号は、送信された各データビットに対し、２つのビットシンボルを生成し、これは２つの状態間の遷移を表し、６４の状態（Ｋ＝７）を持ち。各状態から、２つの潜在的シンボルによって表わされる２つの可能性のある次の状態があり、各状態に対し、送信されることができない２つの潜在的シンボルがある。１つのデータビットについて送信される実際のシンボルは、ジェネレータ多項式によって決定され、以前に６つのデータビットと送信されているビットとの関数である。
【００１７】
従って、各データ状態について、シンボルは多項式によって決定され、状態は次のようにして予測可能である。ビットが“１”である場合、次の状態は３２＋(current_state／２)であり、そうでない場合、単にcurrent_state／２ であり、従って、状態遷移テーブルは必要ない。
【００１８】
各シンボルが送信されるときには、７つのデータビットにより表現が決定され、それが受信されたとき、多項式および前の６つのデータビットに基づいて復号器によって解釈される。各シンボルが受信されると、それは解釈され、潜在的に有効なシンボルとの類似性に基づく確率値が与えられ、正確なあるシンボルシーケンス解釈の確率を計算するために用いられる。
【００１９】
これを達成するために、ビタビ復号器は、全ての可能性のある状態について見つけられた最低コストパスのレコードを保持し、各可能性のある状態について、以前に受信された最もあり得るシンボルのシーケンスとそれらの累積コストとを記憶する。
【００２０】
一旦、十分なシンボルが受信されると、最低コスト状態を取り、履歴を走査することにより、データが復号され、その状態に至るために送信された可能性の最も高いデータビットのシーケンスが決定される。
【００２１】
ビタビ符号化および復号の原理は、畳込み符号化メカニズムに精通している人々によって一般に理解され、利用可能な分析は、これらスキームにより得られる全体的なＳＮＲの改善が、各シンボルに、単純な二値決定というよりはむしろ潜在的な値の範囲を与えることによって得られること、また、通常、各シンボルについて８レベルの解釈までできる著しい利得を達成できること、を示している。
【００２２】
Ｋ＝７の場合、通常のビタビ復号アルゴリズムは、最適パフォーマンスのために最初のデータビットを抽出することができる前に、少なくとも３５シンボルの処理を必要とし、この処理のために、特定状態にある累積コストを表す少なくとも２セットの状態情報を保持する必要がある。また、各状態について、最適復号パフォーマンスのため、当該状態に至る前の通常３４の遷移(データビット)のレコードを保持する必要がある。
【００２３】
これらの制約が与えられると、最初に、ビタビ復号状態を表す最適な複数の最小データ構造を選択し、次に、これらを、埋め込まれたインプリメンテーションのために、HW/SW相互作用およびプロセッササブシステムアーキテクチャに特定の考慮を払って、最適化することができる。
【００２４】
各潜在的現在状態において、２つのシンボル符号化によって表わされる２つの有効な状態遷移(ブランチ)があり、また、無効な遷移を表す２つのシンボル符号化がある。従って、各状態について、２つの潜在的継承状態と２つの潜在的前状態のみがある。これらは、図1のトレリス図によって表わすことができる。
【００２５】
各潜在的現在の状態に依存して、有効及び無効ブランチは、異なるシンボルで示される。従って、各状態について、２つの潜在的な次の状態（それらは自明に計算できる）と、当該ブランチに関連する適切なシンボルとを知る必要があるが、それらは、専用ロジックを用いて計算できるが、容易にロードでき、従って多項式と無関係の実施をするテーブルを形成する。
【００２６】
軟判定復号器を実装しているので、受信されたシンボルの強さに応じて重み付けされた潜在的なシンボルペアの全てについて、コスト要因を最初に決定する必要がある。また、全ての状態についての全ての有効状態遷移が、等しい確率をもつので、この重み付けは、現在状態から独立し、受信シンボルペアと、受信シンボルペアと当該ブランチに関連する実際のシンボルペアとの間のハミング距離とにのみ依存する。これは、各シンボルについて、ソフトウェアがハミング距離に関連する重み付けテーブルを計算しなければならないことを意味し、これは、次に、ハミング距離と状態との間のマッピングを使用した、全ての状態およびブランチコストの計算に適用できる。
【００２７】
従って、基本的なビタルアルゴリズムは、受信された各シンボルペアについて、次の計算シーケンスを実行する。実際の実装は、これらのプロセスを、ロード/ストア及び複雑な命令シーケンスを最小にするために、関連するデータ構造の注意深い設計および適所へのカスタム命令の実施により、並列処理する。
【００２８】
受信シンボルペアについて、シンボルペア解釈と4つの可能性のある送信されたシンボルペアとの間のハミング符号に関連した1セットの4つのコストを計算する。ハミングコストテーブルは、事実上、各可能性のある方法で実際に受信された入力シンボルペアの解釈に関連したコストを表わす４つの値のテーブルであり、すなわち、００、０１、１０、１１である。
【００２９】
各潜在的現在状態（６４の状態）に対し、受信されたシンボルペアの２つの潜在的な解釈のそれぞれについて、次の状態（ブランチコスト）のそれぞれに到達するコストを計算する。これは、当該受信シンボルについての状態現在コスト及び予め計算されたコストテーブルに基づく。すなわち、各状態に対し、要求されたシンボルペアと、遷移に関連するシンボルとしてのその再解釈とに基づく関連するコストをもつ、２つの潜在的な次の状態と、２つの遷移とがある。
【００３０】
承継状態のそれぞれについて、最低コストの状態への遷移を選択し、当該状態へ至るコストと、送信されたデータビットを表すところ(「1」あるいは「0」)へ到達する遷移を記録するために、当該状態についてのトレース（trace）履歴を更新する。
【００３１】
結果は、各状態について達成可能な最低コストと、図２に示されるようにそこに到達するパスとのテーブルである。
【００３２】
最後に、十分なシンボルが復号されると、累積コストが最も低い状態を選択し、その状態へ到達する最低コストデータシーケンスを再生するために、各状態への遷移をさかのぼる（trace back）。これが受信されたビットストリームのビタビ復号である。
【００３３】
このことから、 ビタビ復号が、データ集約型操作（data intensive operation）であり、非連続にデータへアクセスすること（一般に、データアクセスオーダが引き延ばされたときに形成されるパターンによりビタビバタフライ（Viterbi Butterfly）と呼ばれる）も含むことは、明らかである。
【００３４】
一般に、ビタビ加速（Viterbi acceleration）は、効率のために複数のメモリを用いるビタビバタフライオペレーションと、よく知られた加算−比較―選択オペレーションを実行する専用ハードウェアとを使用して実行される。加算−比較―選択オペレーションは容易に加速でき、しばしばＤＳＰの中のカスタム命令にサポートされるが、これだけを加速しても、オペレーションがデータアクセス中心となり、通常、データアクセス自体と同じぐらいの時間がかかる実行アドレス計算を伴うために、大幅にスピード向上にはならない。
【００３５】
典型的には、ＤＳＰは、アドレスを計算するためのカスタム命令と、パスコスト計算最適化およびデータ表現のための加算−比較−選択命令をもつ。
【００３６】
畳込みアルゴリズムの特性により、状態遷移は予測可能であり、部分的に独立した複数のデータセットへグループ化することができる。それは、潜在的承継状態の各ペアについて、それらに至ることのあるちょうど４つの現在状態がある。従って、メモリアクセスのための最適アーキテクチャは、メモリアクセスを最小化するために、他の全てのデータセットと無関係にこのデータセットで動作され得るべきである。
【００３７】
各潜在的承継状態へ至る２つの潜在的現在状態があり、任意の現在状態と関連する２つの潜在的シンボルがあるので、最大１２８の計算すべきブランチがある。各シンボルペアに対して、４つの可能性のある解釈があり、従って、対応するシンボルペアを示すために各潜在的ブランチに関連する２ビットがあるから、８状態（１６ブランチ）へマッピングするブランチコストを１ワードに記憶することができる。
【００３８】
任意のブランチについて、４つの可能性のあるシンボルがあり、各状態について、２つの可能性のあるブランチがある。よって、最大シンボルコストは従って１４であるから、少なくとも1つのシンボルによってプランチが異なる。チャネルが完全ではないので、必然的にシンボルエラーがある。従って、畳込み符号が用いられる理由は、用いられるブロック長によって決定される最大値をもつ、時間を通じた累積エラーがありえる、ということである。
【００３９】
送信及び受信されたシンボル間の違いの最大値は１４であるから、全てのシンボルについて、Ｎデータビット後の最小コスト状態についての最大値は、用いられる多項式に応じて、８Ｎ未満であろう。
【００４０】
任意の状態において送信された任意のデータビットについて、可能性のある４つの組合せから送信された２シンボルビットがある。主題が軟判定まで延長できるが、現在のところ、それらが２進法表現であると仮定する。受信シンボルを送信シンボルと比較し、各可能性のある解釈についての違いをカウントして、ハミング距離を計算する。これは、正確な解釈の場合「０」、シンボルビットのうちの1つが正しくない場合「１」、両方のビットが正しくない場合「２」である。図３はこれを示す。
【００４１】
各可能性のある状態について、各潜在的承継状態であることの潜在的コストを計算し、最低コストを保持する。時間とともに、可能性のある状態の範囲は、信号および可能性のある解釈における誤りにより拡大し、そのうちの１つは常に決定によって間違っている。
【００４２】
我々が完璧な信号を持っていると仮定すると、図４に示すようなコスト配分（distribution）の変化が得られる。
【００４３】
しかし、復号器中には有限数のメモリビットがあるだけなので、Ｋビットがある場合、すべての受信シンボルの誤解釈を意味するとしても、すべての状態がすべての前状態からＫステップで到達可能になりえる。これは、図５の図中で示されるような累積コストを構築することを可能にする。
【００４４】
簡単のために、２メモリビットのみを仮定すると、左にある三角形は、時刻Ｔ＋２に現在状態Ｓ０から得られる任意の状態Ｓ１についてのコストの最大配分を示し、Ｋステップで得られる最大コストは、この場合Ｍ＝４であることを示す。ここでＫはメモリビットの数である。信号状態遷移図中で、状態Ｔ１の後のノイズの存在を、全てのシンボルが少なくとも１つのエラー（Ｈ＝Ｉ）をもつように示した。そして、２ビットメモリの制約を適用し、前の２つのシンボルの最悪の可能性のある解釈に基づき全ての状態についてコストの潜在的な範囲をマスクした。
【００４５】
Ｔ４では、すべてのコストが、Ｍ＝４の最大状態コストより低くはなく、それで、Ｔ５では、共通オフセットを引くことで、全ての新しいコストを調節でき、よってコスト結果の範囲を抑制する。それによって、本発明の方法は、遷移コストを０からＭの範囲の非負の値に設定することを含み、ＭはＫステップで得られる最大コストであり、Ｋは畳込み符号化データ中のメモリビットの数である。好ましくは、Ｎビットは累積パスコスト毎に割り当てられ、ここで
（２＾（Ｋ＋１）＊Ｍ）−１＜２＾Ｎ−１。
【００４６】
任意の状態Ｓｎについて、その前状態はＳ（２ｎ）およびＳ（２ｎ＋１）である。Ｈｎ０／１は、状態ｎでシンボルを０／１とそれぞれ解釈するハミングコストとする。
【００４７】
Ｃ（Ｎ）は状態Ｎの最低累積パスコストを表し、
ＫＴは、時刻ＴでのＣ０…Ｃ６３のセットを表わすとする。
【００４８】
時刻Ｔ０に、１セットの状態コストＫＴ０を持っていると仮定すると、その後の時刻Ｔ１において、1セットの関連コストＫＴ１をもつ。これは、
Min(KT1)>=Min(KT0)and Max(KT1)<=Min(KT0)+84
ということになる。データリカバリを開始するために、ＫＴｎの最小メンバのインデックスに関心をもつが、ＫＴの実際の値でなく、我々はコストＫＴをある値＜＝Ｍｉｎ（ＫＴ）に正規化することにより、コストＫＴを抑制することができる。
【００４９】
したがって、累積状態遷移コストを表わすために７ビットを必要とし、したがって、ＣＰＵアーキテクチャを備えたアラインメントの場合、累積コストを８ビット値として記憶することが都合がよい。これは１つのシンボルペアの４つの可能性のある解釈に対するコストを３２ビットワードへパッキングすることを可能にする。
【００５０】
累積コストのオーバーフローを回避するために、ＫＴ内の全ての値をユニークに表すことができる十分なレンジをもち、それらの順序が維持されることを条件に、任意の状態がオーバーフローに近づくときに、累積コストをスケーリングすることが必要である。これを達成するために、各累積コストは８ビット値として表わされ、全ての状態遷移についてコストが累積されると、それらは８４より大きく分岐しない場合がある。これは、コスト調節を、全ての値を２５６未満の間にある値になるように抑制することにより可能となり、それは、最小状態コストが、新たな遷移コストでの累積前に、１２８に達するとき、全ての状態コストのＭＳＢをリセットすることにより容易に達成できる。
【００５１】
データ表現が決定されたので、メモリアクセスのオーバヘッドを最小化するためにデータの処理を最適化することが望ましい。
【００５２】
任意の状態についてのブランチコストの計算は、それCn=になるというより、２つのパスの潜在的コストを計算することを必要とする。
【００５３】
各承継状態へ２つの潜在的ブランチがあるので、中間値を記憶する必要なしに、最小コストブランチが検出及び記憶できるように、これらの遷移を同時に計算することが望ましい。
【００５４】
ビタビは、その結果を次ぎの反復のためのソースデータとして用いて動作し、従って、該結果をオペランドと同じ順序にまとめる（organize）必要がある。これは、６４バイト(１６の３２ビットワード)を占める状態コストの線形アレイを意味する。
【００５５】
１ワードに４つの状態コストを格納することができるので、該ワードを一度読むこと、それを廃棄する前にその中の全ての状態を処理すること、及び、結果を同じタイプの構造に、該構造と、入力及び出力である代替との２つのコピーを用いて、直接書き戻すことが望ましい。
【００５６】
このまとめとともに、処理された各ワードは、出力アレイ中の同じワードに適合しない２つのグループにある４つの新たな状態を生成するが、連続する２つのソースワードを処理することは、各グループが単一のワードに適合する２つのグループ内の８つの結果を生成するが、２つのワードは連続していない。
【００５７】
したがって、ビタビオペレーションの場合、８つの状態を、２つのワードからなる８つのグループとして処理する必要がある。各状態はマッピングレジスタ中に４ビットを必要とするので、各グループも、このマッピングを含むために１つの３２ビットレジスタを必要するように、マッピングレジスタをパックすることができる。
【００５８】
これは、１つのループ当たり８つの状態を処理する８回反復ループにうまく適合し、ここでは、必要とされる全てのデータが、１つのCPUレジスタをいっぱいにし、各オペランドは１ループにつき１度読まれ、また、各結果は部分的ワード更新が要求されずに書き込まれたものであり、従って、メモリ効率が最適化される。
【００５９】
各新たな状態について、最小コストブランチが記録されなければならない。これは、３２ビットレジスタの１つのペアにうまく入る６４ビットを必要とする。これらは、各ループ反復について部分的に更新され、該ループの終了後、履歴すなわち、トレースバック（traceback）テーブルに記憶されることが必要である。
【００６０】
さらに、最小コスト状態のインデックスを計算し、いつ全ての状態が最小閾値より大きくなるかを、それらを次のループ反復で調節できるように検出する。これは、全ての状態が１２８より多いことを示すフラグを用いて、また、次の反復でＭＳＢをマスキングすることで、容易に達成される。
【００６１】
ループの反復中に、ソースおよび結果のデータを効率的にアドレスする必要があるが、アドレッシングはループインデックスの単純な機能である。フィールドがトレースバックレジスタ中で更新されるので、理想的な拡張は、ループインデックス、アドレッシング、最小コスト状態インデックスおよび正規化フラグのためのレジスタを含む。図６は、データがビタビループのためにアクセスされる、異なる方法を示し、図６１では、２つのソース値５６は１つの結果６６を生成するために用いられる。これは全てのソースデータを用いないために、非効率的である。図６２に示す場合には、１つのソースオペランド６５は２つのコスト６６を計算するために使用される。しかし、これらは、異なるワードにおける異なる状態に関係がある。３つめの図６３では、２つのワード中の８つの状態６５が２つのワード内の８つの新たな状態６６を計算するために使用される。全てのデータは完全に整列され、データは無駄にされていない。
【００６２】
全体的に、これは、図７以下で示すような、典型的な命令セットアーキテクチャを使用して容易に実装することができない、複数のソース及びデスティネーション（destination）レジスタを必要とする理想的な実装につながる。
【００６３】
図７は、４つのソース変数から３つの結果を計算するためのオペレーションの典型的なシーケンスを示す。上部の図は、これらが標準３オペランドＣＰＵでどのように実装されるかを示し、ここでは、３つのオペランドが２つのソースオペランドおよび1つのデスティネーション（destination）オペランドを表わす。ここで、オペレーションが少なくとも３つの連続する命令に分割されることがわかる。これは、十分なレジスタの符号化のために十分なビットを許容せず、さらに一般に、１周期に１つより多いライト（write）オペレーションを受理するレジスタファイルの能力の制限になる、命令オペランドフォーマット制限による。この符号化では、全てのレジスタは、各オペコード内に明示的に符号化され、各オペコードおよび全てのレジスタは、汎用レジスタファイルに存在する。
【００６４】
下部では、複数のレジスタのうちのいくつかの暗黙的（implicit）符号化を用いた同じオペレーションが示されている。専用レジスタとしてこれらの特別なフィールドの実装は、汎用レジスタファイルに分離する。
【００６５】
図８および９は、本発明の一側面に関連し、これは、レジスタアドレッシングを命令群において暗黙的にすることにより、図３の最適アプローチが得られる。
【００６６】
図９のブロック図は、ビタビ命令群によって実施される実際の機能を示す。この図において、前状態の１つのペア（Ｓａ、Ｓｂ）は、新たな状態Ｓｃについての潜在的承継状態のペアに対応して選択される。新たな状態へ導くような方法で、新たなシンボルを解釈する対応するコストは、マルチプレクサ(901)によって選択され、加算器（adders）９０２によりこれらの前の状態の対応するコストに加算されて、状態Ｓｃに達するまでの潜在的コスト(903)のペアを生成する。これらのコストは比較され、セレクタ(904)によって最小コスト前状態が選択され、対応するビット遷移が示され(905)、対応するコストが出力される(906)。この対応するコストは、各新たなシンボルが適用されるとき、各状態について潜在的に増加する。しかし、状態メモリは有限数の状態（この場合６つの状態）に限定されるため、最小値及び最大値の間の範囲が最大状態遷移コストと最大状態メモリとにより制限される全ての状態のコストに対応する任意のインスタンスで、1セットの値がある。この例において、これは６４未満である。したがって、状態コストが無限に増大することを防ぐため、任意の状態コストが１２８を越えたとき表示（indication）が出力される(907)。
【００６７】
前状態コストのうちの少なくとも1つが＞１２８であるという表示（９０８）は、正規化ブロック９０９に供給される。これは、６４を引くことにより、状態コストを正規化し、これは、全ての状態コストが有限の整数範囲内にあることを保証する。
【００６８】
結果として得られる新たな状態コスト９１０は、命令から出力され、最小コストブロック９１１によって使用される。このブロックの目的は、新たなシンボル処理中に計算された状態コストの全てをモニタし、結果として得られる全ての新たな状態コストのセットのなかから最小コストを決定することである。
【００６９】
一旦、ある状態に通じる遷移が決定されると、その状態についての新たなコストが計算され、状態コストテーブルが更新される。
【００７０】
新たなシンボルが供給される。１または０の該シンボルの解釈の関連する複数のコストのそれぞれは、マルチプレクサ９０１によって選択され、これらのコストは、加算器９０２で、前のシンボルコストに加算されて、該シンボルの２つの可能性のある解釈に関連する１ペアのコスト９０３が生成される。
【００７１】
結果と制御変数のいくつかは長さ３２ビット未満であるので、これらは、単一３２ビットのコアレジスタのサブフィールドへマージ（merge）できる。
【００７２】
命令セットのオペレーションを複数のプリエンプティブ（pre-emptive）タスクに拡張可能にするために、これらのレジスタおよび任意の状態も保存することが必要である。これは、さらに、これらの状態フラグも同じ命令レジスタへマージされる場合、単純化される。
【００７３】
一旦十分なシンボルが処理されると、現在状態に至るブランチのシーケンスを決定するためにトレースバック（traceback）オペレーションを実行することが必要である。これは比較的単純なオペレーションであるが、再び重要なアドレス計算、ビット操作およびデータロードオペレーションを含む。再び、これらは、各トレースバックステップを実行する専用命令と、トレースバック履歴のアドレッシングのための専用レジスタとを用いて、効率的に実施できる。
【００７４】
図１０のトレリス図において、送信されたビットシーケンスを考慮する。この符号化では、ＲｘとＲｙは、汎用レジスタファイルの外部にある特別レジスタに存在する４つの要求されたソースオペランドのうちの２つを表す。Ｒｐ、Ｒｑは、レジスタファイルの外部にある特別レジスタで保存される結果のうちの２つを表し、したがって、レジスタのサブフィールドであり得、またＲｘ及びＲｙとにオーバラップすることがある。
【００７５】
データを送信した後、受信機はコストとトレースバックとを計算し、図２のコストおよびトレースバック履歴を得る。
【００７６】
トレースバックがＴ＝６時に開始し、状態１０が最小コスト状態であることを見つけた場合、受信機はシーケンス「１０１１０１」を復号する。それは、データが送信された順序とは逆の順序であり、次に図１１のように逆にする必要がある。
【００７７】
別のシンボルを受信した後、最小コストパスから再び開始し、それは再び状態「１０」であると仮定する。図１２に示されるように、受信機は、今度は「１０００１０１」を復号する。明らかに、いくつかのシンボルの後、パスは収束し、状態Ｔ＝３よりさらにトレースバックする必要はない。
【００７８】
トレースバック中、パスは、１ビットだけオフセットされた場合を除いて、各新たなシンボルが追加された後はほとんど大きく変化するはない。さらに、一旦新たなトレースバック履歴が前の履歴中の１つの状態に収束すると、再び枝分かれしないことも明らかである。従って、前のトレースバックオペレーションで収束を検出することにより、トレースバックに費やす労力を低減することが可能である。ＳＷでは、これは、比較の前にビットフィールドのマスキング及び回転を伴う複雑なタスクである。このオーバヘッドは各反復に十分な余分な周期を追加し、その利点は否定される。しかし、フィールドを選択するためにトレースバックインデックスを使用してこれらビットフィールドへアクセスする専用ハードウェアを使用することは、透過的に実行でき、トレースバックオペレーションにより消費される電力及び周期を大きく低減できることを意味する。
【００７９】
一旦、トレースバックが実行されると、最も古いデータビットが、通常、一度に１バイト抽出されるが、初期フェーズ中は通常同期パターンが探索され、ビットアラインメントは知られていない。これは、さらに、ＳＷについてイニシャル（initial）トレースバックオペレーションを複雑にするが、再び、ＣＰＵレジスタへ並べられる正しい順序で最も古いビットを抽出する特定の命令と、多くのビットをそれらが使用されたときに“消費する”別の命令と、を追加することにより最適化できる。このように、複数のバイトが抽出及び比較され、同期が検出されるまで一度に１ビット廃棄し、その後、アプリケーションにより処理されるレートでビットが消費される。
【００８０】
最後の機能として、ビタビプロセスのそれぞれは、ビタビステータス、トレースバック履歴、トレースバックテーブルおよび状態コストテーブルを含むデータ構造を必要とする。これは、各チャネルについて別個である必要があり、したがって、全てのアドレスはあるオフセットを要求する。これは、ビタビデータ構造ベースアドレスをビタビコントロール／ステータスワードの一部として実装することにより、プロセッサから再び隠すことができる。
【００８１】
他のプロセスへの影響を最小限に抑えるために、暗黙的ビタビレジスタがコアＣＰＵレジスタに加えてあること、そして、ＳＷが、コンテクストスイッチング時それらの状態を効率的に保存することができること、が望ましい。しかし、ほとんどのプロセスはこれらのレジスタを使用せず、従って、それらはそれらを保存する必要はない。
【００８２】
それらが保存される回数を最小限にするために、ＯＳが各プロセスについて、それらが要求されているかどうかを知る必要がなく、いつビタビブロックが使用されるのかを示すために、追加のステータスビットが、ビタビステータス／制御レジスタに追加できる。これらは、プロセスのステータスに応じて、ビタビ命令により、自動的にセット／クリアできる。このようにして、コンテクストスイッチングは、保存すべきコンテクストがあるかどうかを決定するために、これらのフラグをテストできる。このようにして、機能を使用しないプロセスから価値のあるスタックスペースをとらず、アクティブに使用されていない場合には、それらは格納されない。従って、ビタビは、マルチスレッド環境において効率的に使用することができる。
【００８３】
発明の別の側面によれば、本発明は、上述の発明の方法による畳み込み符号化データの復号のために最適化されたプロセッサに関する。プロセッサは、物理的にどのようなレジスタ記憶装置ももたないが、ソースおよびデスティネーション（destination）状態コストオペランドのためのアドレスを、ループ制御レジスタとして用いられるコアレジスタフィールドと、現在状態コストセット割当及びデータ構造のためのベースアドレスを示し、現在及び次の状態テーブルのマッピングを選択する状態レジスタフィールドとのためのアドレスを戻す、ファントム（phantom）レジスタをもつプロセッサのレジスタセットに拡張するためにアレンジされる。
【００８４】
図１３に関して、本発明のプロセッサの動作は、複数のフィールドを含む単一のワード(すなわちオペコード)の形でメモリに記憶される命令により制御される。示された例において、例えば、オペコード１４７は、２つのソースオペランド１４８、命令フィールド１５０およびデスティネーション（destination）レジスタアドレス１４９を含む、典型的な３つのオペランド命令を示す。
【００８５】
オペランドＯＰ１（ＯＰ２）は、マルチプレクサ１４２により、レジスタファイル１４１から２つのソースオペランドを選択するために使用され、ＡＬＵ１４６へ渡される。ＡＬＵの出力は、典型的には、図示されていないパスを通って、アドレス１４９を使用して、レジスタファイル１４１に書き戻される。
【００８６】
図示された例において、レジスタファイル１４１は、３２個のロケーションすなわちレジスタＲ０−Ｒ３１を含むが、これに発明を限定するものではない。図１３が、プロセッサ中のロジカルデータフローを示すことを意図した単純化された機能ブロック図であり、本発明のプロセッサの構成を制限するものではないことは理解されたい。特に、本発明は、パイプラインアーキテクチャも含み、これらのオペレーションが異なる時に実行される。
【００８７】
本発明によれば、オペコード１４７は、レジスタファイル１４１中の別々の記憶スペースに対応しないが、レジスタＲ０−Ｒ３１内の値およびまたはＣＰＵ内部または外部の追加の値１５１、１５２の論理関数である“ファントムレジスタ”１４３へのアドレスを含むことができる。命令によってアドレスされた時、ファントムレジスタまたは複数のレジスタは命令により明示的にアドレスされていないレジスタ及びまたは信号から計算された値を戻す。
【００８８】
オペコード１４７は、それぞれが６ビットのオペランドアドレス１４８を記憶し、この例では、それにより、３２の物理レジスタより多くのオペランドをアドレスする能力を与える。ファントムレジスタは、例えば、レジスタファイル１４１の中にカウンターパート（counterpart）を持たないアドレスのうちの1つを符号化することにより、アクセスされる。
【００８９】
図１３の図は算術命令の典型的なフォーマットおよび処理を示しているが、ＣＰＵは典型的には、非算術命令、例えばロード／ストア命令、をもつ。本発明によれば、これらの命令のオペランドも、ファントムレジスタ１４３でありえる。本発明は、多くのファントムレジスタを含むこと、及び、それらが互いに、例えば、それ以外の他のファントムレジスタの値に依存するいくつかのファントムレジスタと作用すること、を含むことも意図される。本発明は、さらに、いくつかのファントムレジスタが独立メモリエレメントと関連し、それらが、追加の隠れレジスタのようなステータスを保持する場合も含む。
【００９０】
有利に、ファントムレジスタは、ループ制御レジスタとして用いられるコアレジスタフィールドと、現在状態コストセット割当とデータ構造のためのベースアドレスとを示し、現在及び次の状態テーブルのマッピングを選択する状態レジスタフィールドとに基づき、ソース及びデスティネーション（destination）状態コストオペランドのためのアドレスを戻すようにアレンジされている。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［付記］
［１］畳み込み符号化データを復号する方法であって、
遷移コストを０からＭの範囲内の負でない値に設定するステップ、Ｍは、Ｋ回のステップで得ることのできる最大コストであり、Ｋは、畳み込み符号化データ内のメモリビットの数であり；
累積パスコスト毎にＮビットを割り当てること、ここで
２＾（Ｋ＋１）＊Ｍ）−１＜２＾Ｎ−１である;
を含む方法。
［２］１シンボルペアの４つの可能性のある解釈について１セットのコストを計算すること、および、これらを４バイトフィールドとしてインデックス付けできる３２ビットの単一ワードにパッキングすること、
を含む［１］に記載の方法。
［３］１つのＣＰＵレジスタ中の２ビットフィールドの１つまたは複数のペアを用いて、少なくとも１つの他のレジスタからサブフィールドの１つまたは複数のペアを選択的にアクセスする、［１］または［２］に記載の方法。
［４］これらが１つの状態についてのブランチ遷移およびブランチコストに関係する、［１］−［３］のうちのいずれかに記載の方法。
［５］全ての状態についての正規化された累積状態コストは、メモリ内の連続したロケーションに記憶される８ビットフィールドで表され、各３２ビットメモリワードは、連続する４つの可能性のある状態に関連するコストを含む、［１］に従った方法。
［６］各潜在的状態に関連する有効パス遷移シンボルを、シンボル毎に２ビットのパック（packed）構造を用いて表すこと、これらはＣＰＵメモリに、各連続アドレスが、連続する２つの３２ビットメモリロケーションで表される８つの現在状態に対応する０及び１のデータビットについて有効なシンボルを表す状態遷移シンボルを保持するように、まとめられる、［１］−［５］のうちのいずれかに記載の方法。
［７］畳み込み符号化データを復号する方法であって、
ループを８回反復して６４のビタビ状態を処理するステップを含み、
各反復は８つの連続する現在状態を、関連する状態シンボル解釈コストがループ不変量として表されて、１つの３２ビットコアレジスタに記憶でき、前記ループについての前記遷移情報が第２のレジスタに記憶できる順に、処理する方法。
［８］各ループ反復について要求されるデータへアクセスするためのアドレッシングは、単一レジスタが、このレジスタに変更することが、前記ソース及びデスティネーション（destination）状態コストロケーションと、関連する遷移解釈情報とについて要求されるアドレスを利用可能にするように変更することにより暗黙的に実行される、［７］に従った方法。
［９］［１］−［８］のうちのいずれかに記載の方法に従った、畳み込み符号化データの復号を最適化するプロセッサであって、
前記プロセッサのレジスタセットを複数のファントムレジスタで拡張するようにアレンジされており、前記複数のファントムレジスタは、命令によりアドレスされたとき、前記命令により明示的にアドレスされないレジスタ及びまたは信号から計算される値を戻す、プロセッサ。
［１０］前記ファントムレジスタは、ループ制御レジスタとして用いられるコアレジスタフィールドと、前記現在状態コストセット割当及びデータ構造についてのベースアドレスを示し、現在及び次の状態テーブルのマッピングを選択する状態レジスタフィールドとに基づき、前記ソース及びデスティネーション（destination）状態コストオペランドについてのアドレスを戻すようにアレンジされている、［９］記載のプロセッサ。
［１１］前記コアデータレジスタに記憶される複数のオペランドで動作する加算−比較−選択オペレーションを実施する命令を実行するようにアレンジされ、前記命令は、プロセッサ命令セットアーキテクチャの制限に違反することなく、ＳＩＭＤアーキテクチャを実施できる命令により暗黙的にアドレスされる追加のＣＰＵレジスタを用いる、上記方法クレームのうちの１つに従って畳み込み符号化データを復号するプロセッサ。
［１２］前記命令は、１つまたは複数の加算−比較−選択オペレーションを同時に実行し、複数のデスティネーション（destination）レジスタに記憶され得る複数の適切な状態について、関連ある状態コストフィールドを更新する、［１１］記載のプロセッサ。
［１３］同じ命令が、前記ループについての最小累積コスト状態の計算を同時に実行する、［１２］記載のプロセッサ。
［１４］同じ命令が、前記ループについての最小コスト状態結果が予め決定された閾値より大きいかどうかを同時に計算する、［１２］記載のプロセッサ。
［１５］同じ命令が、前記計算された状態コストから、それらを記憶する前に、予め定められた閾値を減算する、［１２］記載のプロセッサ。
［１６］前記閾値は２の累乗として表され、前記減算は、ＣＰＵレジスタに記憶され得るステータスフラグに基づき、関連するビットを０にマスキングすることにより実行される、［１４］または［１５］記載のプロセッサ。
［１７］前記命令は、コアレジスタまたはステータスレジスタ内のフラグを、ビタビエンジンにおける前記複数のレジスタのロード及びストアに基づき、自動的に設定し、
このフラグは、ビタビオペレーションが部分的に完了しているかどうかを示し、前記プロセッサが、コンテクスト変更時における前記ＣＰＵレジスタのストア／リストアのときに前記ビタビエンジンが使用されているかどうかを決定することを可能にする、［９］−［１６］のうちのいずれかに記載のプロセッサ。
［１８］畳み込み符号化データを復号するプロセッサであって、
トレースバックオペレーションを実施するための拡張命令を実行するようにアレンジされ、
トレースバック履歴は、１ペアのコアＣＰＵレジスタに表され、
前記命令は、前記トレースバック履歴内のビットを、トレースバック状態に基づき、明確にセット／クリアすることがき、前記命令の各オペレーションにおいてセット／クリアされたビットまで前記インデックスをカウントすることができる、プロセッサ。
［１９］前記命令は、前記トレースバック履歴が前記現在状態により変更されたかどうかを検出し、前記トレースバックオペレーションを前の値をもつ収束で終了するためにフラグを設定できる、［１８］のプロセッサ。
［２０］ＣＰＵレジスタフィールドは、前記トレースバック履歴中の有効ビットの数を示すために、同じ命令により自動的に更新される、［１８］記載のプロセッサ。
［２１］畳み込み符号化データを復号するプロセッサであって、
トレースバック状態と、システムメモリ内のデータ構造のアドレスとに基づくファントムレジスタを備え、
前記レジスタは、読まれるべき次の３２ビットトレースバック履歴ワードについての正しいアドレスを戻し、
前記ファントムレジスタは、インダイレクトロードについてのアドレスレジスタとしてＣＰＵにより使用されることができ、
前記アドレスは、現在トレースバック状態とトレースバックサンプルインデックスとの関数である、プロセッサ。
［２２］畳み込み符号化データを復号するプロセッサであって、
送信データの正しいビット順の表現におけるトレースバックデータの最も古いビットを検索する命令を実行するようにアレンジされ、
前記トレースバックデータから戻されたフィールドのアドレスは、トレースバック制御レジスタにより暗黙的に決定される、プロセッサ。
［２３］畳み込み符号化データを復号するプロセッサであって、
トレースバック制御レジスタのトレースバックカウントフィールドを自動的に更新するトレースバックデータから多くのビットを消費する命令を実行するようにアレンジされたプロセッサ。
［２４］複数の局在衛星を含む、複数の無線局在ビーコンにより受信された信号に基づき地理的位置を決定するＧＮＳＳ受信機であって、
前記信号に含まれるデータのいくつかは、畳み込み符号に従って符号化され、
前記受信機は、前記畳み込み符号を復号する特別命令を含むソフトウェアプログラムを実行するようにアレンジされた［９］−［２３］のうちの１つに従ったプロセッサを含む。
［２５］前記特別命令のうちの少なくともいくつかは、ビタビ復号アルゴリズムの加算−比較−選択オペレーションを同時に実施する命令を含み、
前記命令は複数のコアデータレジスタ上で動作し、暗黙的にアドレスされる追加のコアＣＰＵレジスタを使用する、［２４］記載の受信機。
［２６］前記命令は、前記ビタビ復号アルゴリズムのビタビループについて、最小累積コスト状態の計算を同時に実行する、［２５］記載の受信機。
［２７］前記命令は、コアレジスタまたはステータスレジスタ内に、前記ビタビエンジン内の前記レジスタのロード／ストアに基づき、自動的にフラグを設定し、
これらフラグは、ビタビオペレーションが部分的に完了しているかどうかを示し、プロセッサが、コンテクスト変更時における前記ＣＰＵレジスタのストア／リストアのときに前記ビタビエンジンが使用されているかどうかを決定することを可能にする、［２４］から［２６］のうちのいずれかの受信機。
［２８］ビタビアルゴリズムのトレースバック状態と、システムメモリ内のデータ構造のアドレスとに基づくファントムレジスタを備え、
前記レジスタは、読まれるべき次の３２ビットトレースバック履歴ワードについての正しいアドレスを戻し、
前記ファントムレジスタは、インダイレクトロードについてのアドレスレジスタとしてＣＰＵにより使用されることができ、
前記アドレスは、現在トレースバック状態とトレースバックサンプルインデックスとの関数である、［２４］から［２７］のうちのいずれかの受信機。
［２９］前記畳み込み符号は、データ状態間の遷移コストの計算を含み、前記遷移は、０からＭまでの範囲の負でない値として表され、ＭはＫ回のステップで得ることのできる最大コストであり、Ｋは前記畳み込み符号化データ内のメモリビットの数であり、
累積パスコスト毎にＮビットを割り当て、
２＾（Ｋ＋１）＊Ｍ）−１＜２＾Ｎ−１である
［２４］から［２８］のうちのいずれかの受信機。
【図１】
0005502739.tif 000002
【図２】
0005502739.tif 000003
【図３】
0005502739.tif 000004
【図４】
0005502739.tif 000005
【図５】
0005502739.tif 000006
【図６】
0005502739.tif 000007
【図７】
0005502739.tif 000008
【図８】
0005502739.tif 000009
【図９】
0005502739.tif 000010
【図１０】
0005502739.tif 000011
【図１１】
0005502739.tif 000012
【図１２】
0005502739.tif 000013
【図１３】
0005502739.tif 000014