(57)【特許請求の範囲】
【請求項１】
演算論理ユニットと、
ＸＯＲ回路及びＡＮＤ回路を含む符号化ユニットと、
第１命令のデコード結果に応じて前記演算論理ユニットを制御して演算処理を実行させると共に、前記第１命令とは別の第２命令のデコード結果に応じて前記符号化ユニットを制御して再帰的畳み込み符号化処理を実行させる命令デコード部と、
前記演算論理ユニットにより実行する演算処理のオペランドを格納するとともに、前記符号化ユニットにより実行する符号化処理に用いるデータ及びパラメータを格納するレジスタと
を含み、前記符号化ユニットは、符号化対象データを順方向に符号化する第１符号化器と、符号化対象データを逆方向に符号化する第２符号化器とを含むことを特徴とするプロセッサ。
【請求項２】
前記レジスタは、
前記演算論理ユニットにより実行する演算処理のオペランドを格納する第１レジスタと、
前記符号化ユニットにより実行する符号化処理に用いるデータ及びパラメータを格納する第２レジスタと
を含むことを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記第２符号化器は複数の第２符号化器であることを特徴とする請求項１又は２記載のプロセッサ。
【請求項４】
前記符号化ユニットは、第１符号化器による順方向の符号化と前記複数の第２符号化器による逆方向の符号化を並行して実行することを特徴とする請求項３記載のプロセッサ。
【請求項５】
前記符号化ユニットは、符号化対象データの複数ビットについて同時に符号化を実行することを特徴とする請求項１乃至４何れか一項記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、一般に符号化装置に関し、詳しくは畳み込み符号化を行なうプロセッサに関する。
【背景技術】
【０００２】
携帯電話通信方式は、ＷＣＤＭＡ（Wideband Code Division Multiple Access：静止時２Ｍｂｐｓ）からＨＳＰＡ（High Speed Packet Access：下り１４．４Ｍｂｐｓ，上り５．７６Ｍｂｐｓ）へ、更にはＬＴＥ（Long Term Evolution）へと発展している。これに伴い伝送レートが加速度的に高くなり、符号化処理も伝送レートに比例して高速化する必要がある。従来の符号化処理ではデータの先頭から順番に処理が行なわれるが、ある位置のデータの符号化の結果は、それ以前のデータの符号化結果に依存するために、データの途中位置から並列処理を行うことはできない。
【０００３】
また仕様変更や通信方式の発展に素早く対応するため、プロセッサを使ったソフトウェアによる符号化処理の実現が望まれている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１９４９１６号公報
【特許文献２】特開２００２−８４２００号公報
【特許文献３】国際公開第ＷＯ００／７０７７１号パンフレット
【特許文献４】特表２００４−５２３９３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以上を鑑みると、高速に符号化処理を実行可能なプロセッサが望まれる。
【課題を解決するための手段】
【０００６】
プロセッサは、演算論理ユニットと、ＸＯＲ回路及びＡＮＤ回路を含む符号化ユニットと、第１命令のデコード結果に応じて前記演算論理ユニットを制御して演算処理を実行させると共に、前記第１命令とは別の第２命令のデコード結果に応じて前記符号化ユニットを制御して再帰的畳み込み符号化処理を実行させる命令デコード部と、前記演算論理ユニットにより実行する演算処理のオペランドを格納するとともに、前記符号化ユニットにより実行する符号化処理に用いるデータ及びパラメータを格納するレジスタとを含み、前記符号化ユニットは、符号化対象データを順方向に符号化する第１符号化器と、符号化対象データを逆方向に符号化する第２符号化器とを含むことを特徴とする。
【発明の効果】
【０００７】
本願開示の少なくとも１つの実施例によれば、プロセッサに符号化処理を行なう符号化ユニットを設け、符号化処理用の命令をプロセッサに与えることにより符号化ユニットに符号化処理を実行させる。これにより、高速に符号化処理を実行可能なプロセッサが実現される。
【図面の簡単な説明】
【０００８】
【図１】複数のプロセッサを含む無線通信装置の構成を示す図である。
【図２】符号化処理部に用いるプロセッサの構成の一例を示す図である。
【図３】図２の演算論理ユニット、符号化ユニット、及びレジスタのより詳細な構成を示す図である。
【図４】畳み込み符号化を行なう符号化器の一般化した構成を示す図である。
【図５】逆方向に畳み込み符号化を行なう符号化器の一般化した構成を示す図である。
【図６】順方向の符号化を行なう第１符号化器及び専用レジスタの構成の一例を示す図である。
【図７】図６に示す例に対応する符号化器の構成を示す図である。
【図８】逆方向の符号化を行なう第２符号化器及び専用レジスタの構成の一例を示す図である。
【図９】図８に示す例に対応する符号化器の構成を示す図である。
【図１０】符号化命令の仕様を示す図である。
【図１１】レジスタ設定命令の仕様を示す図である。
【図１２】専用レジスタ群の構成の一例を示す図である。
【図１３】４ビット纏めた入力ＩＮと４ビット纏めた出力ＯＵＴとの論理関係を示したテーブルである。
【図１４】順方向の符号化処理を行なう符号化器及び専用レジスタの構成の一例を示す図である。
【図１５】逆方向の符号化処理を行なう符号化器及び専用レジスタの構成の一例を示す図である。
【図１６】図２のプロセッサにより符号化処理を実行する手順を示すフローチャートである。
【図１７】図１の符号化処理部に用いるプロセッサの構成の別の一例を示す図である。
【図１８】図１７の演算論理ユニット、符号化ユニット、及びレジスタのより詳細な構成を示す図である。
【図１９】図１７のプロセッサに対する符号化命令の仕様の一例を示す図である。
【図２０】図１７のプロセッサにより図１９の命令を用いて符号化処理を実行する手順を示すフローチャートである。
【図２１】順方向の符号化処理を行なう符号化器の構成の一例を示す図である。
【図２２】逆方向の符号化処理を行なう符号化器の構成の一例を示す図である。
【図２３】図２１の順方向符号化器と図２２の逆方向符号化器とを組み合わせることにより、両方向の符号化処理を実行可能とした符号化器の構成の一例を示す図である。
【図２４】符号化処理部に用いるプロセッサの構成の更に別の一例を示す図である。
【図２５】命令を４つ並列に纏めて1つのＶＬＩＷ命令を生成する様子を示す図である。
【図２６】符号化処理部に用いるプロセッサの構成の更に別の一例を示す図である。
【図２７】符号化処理部に用いるプロセッサの構成の更に別の一例を示す図である。
【図２８】ベクトルレジスタの一例を示す図である。
【図２９】順方向符号化命令及び逆方向符号化命令により符号化処理を実行する場合のタイミングチャートの一例を示す。
【発明を実施するための形態】
【０００９】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１０】
図１は、複数のプロセッサを含む無線通信装置の構成を示す図である。無線通信装置は、ＲＦ（Radio Frequency）回路１１０、ＡＤ＆ＤＡ変換部１１１、同期処理部１１２、復調処理部１１３、誤り訂正部１１４、変調処理部１１５、符号化処理部１１６、ＭＡＣ（Media Access Control）部１１７、専用ハードウェア１１８及び１１９を含む。同期処理部１１２、復調処理部１１３、誤り訂正部１１４、変調処理部１１５、符号化処理部１１６、及びＭＡＣ部１１７の各々は、プロセッサ１２１、メモリ１２２、周辺回路１２３、及びバス１２４を含むプロセッサモジュール構成となっている。
【００１１】
プロセッサ１２１は各モジュールにおいて同一の構成であってよい。或いは、幾つかのモジュールにおいて、プロセッサ１２１の構成は、他のモジュールのプロセッサ１２１の構成と異なってもよい。周辺回路１２３は、例えばタイマ、割込みコントローラ、ＤＭＡＣ（Direct Memory Access Controller）等の基本回路を含み、この基本回路は各モジュールにおいて同一の構成であってよい。周辺回路１２３には、更に各モジュールでの処理に応じた専用の回路が含まれてもよい。メモリ１２２は、プログラム領域Ｐ、ワーク領域Ｗ、データ受け取り用入力領域Ｉ、データ受け渡し用出力領域Ｏを含んでよい。専用ハードウェア１１８は、例えばターボ復号処理を行なう専用の回路である。また専用ハードウェア１１９は、例えばＭＩＭＯ（Multiple Input Multiple Output）処理を行なう専用の回路である。これらのターボ復号処理やＭＩＭＯ処理は、一般に演算処理が複雑で且つ計算量も多く、専用のハードウェアにより高速に実行される。
【００１２】
アンテナより受信されたＲＦ信号は、ＲＦ回路１１０により変調信号とされる。変調信号はＡＤ＆ＤＡ変換部１１１によりサンプリングされて、デジタルデータが生成される。同期処理部１１２がデジタルデータのタイミングを調整し、更に復調処理部１１３が復調処理を実行して軟判定データを抽出する。誤り訂正部１１４と専用ハードウェア１１８のターボ復号器とにより、軟判定データに基づいて誤り訂正と復号処理を実行し、ビットデータが復号される。復号されたビットデータは、上位レイヤであるＭＡＣ部１１７に渡される。
【００１３】
送信時にはＭＡＣ部１１７が送信指示を出すと共に、送信データを符号化処理部１１６に渡す。符号化処理部１１６は、送信データに対して符号化処理及びインターリーブ処理を実行して、符号化データを生成する。この符号化データは変調処理部１１５により変調されて変調信号となり、ＡＤ＆ＤＡ変換部１１１によりアナログ変調信号に変換される。この変調信号がＲＦ回路１１０によりＲＦ信号に変換されて、アンテナから送信される。
【００１４】
図２は、符号化処理部１１６に用いるプロセッサ１２１の構成の一例を示す図である。図２に示すプロセッサは、符号化処理用に専用のレジスタを用いているが、専用レジスタを備えずに汎用レジスタのみを用いるプロセッサがより一般的な構成となる。図１７にそのような一般的なプロセッサが示されており、その構成については後述する。
【００１５】
プロセッサ１２１は、プログラムカウンタ制御部３１、命令デコード部３２、汎用レジスタ３３、専用レジスタ３４、演算論理ユニット（ＡＬＵ：Arithmetic Execution Unit）３５、符号化ユニット３６、及びロードストアアドレス制御部３７を含む。プログラムカウンタ制御部３１は、内部にプログラムカウンタレジスタと命令レジスタとを含む。プログラムカウンタ制御部３１は、プログラムを構成する命令列を順次フェッチするために、現在のフェッチ対象である命令アドレスを指し示す値をプログラムカウンタレジスタに保持し、この値を順次カウントアップしていく。プログラムカウンタレジスタが指し示す命令アドレスは命令メモリに供給され、この命令アドレスの命令が読み出され、プログラムカウンタ制御部３１内の命令レジスタに順次格納される。
【００１６】
命令デコード部３２は、プログラムカウンタ制御部３１の命令レジスタに格納される命令を受け取り、受け取った命令をデコードする。この命令のデコード結果に応じて、命令デコード部３２は、例えば演算論理ユニット３５を制御して演算処理を実行させる。汎用レジスタ３３には、演算論理ユニット３５により実行する演算処理のオペランドが格納されており、命令デコード部３２の制御により、所望のオペランドが汎用レジスタ３３から演算論理ユニット３５に供給される。またデコード対象の命令が専用の符号化命令である場合、命令デコード部３２は、この命令のデコード結果に応じて符号化ユニット３６を制御して再帰的畳み込み符号化処理を実行させる。専用レジスタ３４には、符号化ユニット３６により実行する符号化処理に用いるデータ及びパラメータが格納されており、符号化ユニット３６により適宜参照され、更新される。なお演算論理ユニット３５による演算処理の結果は、汎用レジスタ３３又は専用レジスタ３４に送られ格納されてよい。また演算論理ユニット３５は、分岐命令を実行して分岐先アドレスを計算してよい。演算論理ユニット３５により計算された分岐先アドレスはプログラムカウンタ制御部３１に供給され、プログラムカウンタ制御部３１が、現在のフェッチ対象である命令アドレスを指し示す値を、分岐先アドレスを示す値に書き換えてよい。
【００１７】
命令デコード部３２がデコードした命令がロード命令及びストア命令の場合には、ロードストアアドレス制御部３７が、アクセス先を求めるためのアドレス計算を行い、ロード命令又はストア命令を実行する。このロード命令の実行により、読み出し対象のデータがデータメモリの所望のアドレスから読み出されて汎用レジスタ３３に格納される。またストア命令の実行により、格納対象のデータが汎用レジスタ３３から読み出されてデータメモリの所望のアドレスに書き込まれる。
【００１８】
符号化ユニット３６は、後述するようにＸＯＲ回路及びＡＮＤ回路を含む論理回路であり、再帰的畳み込み符号化処理を実行する。この符号化ユニット３６が、1つの符号化命令の実行に応じて、符号化対象データのうちのどのくらいの長さのビット列を符号化するかは、要求される符号化処理の条件を考慮して適宜決めておけばよい。例えば、符号化対象データのうちの例えば４ビットが、1回の符号化命令実行により符号化ユニット３６により符号化されてよい。また或いは、プログラムカウンタ制御部３１のデータ幅に合わせて、１回の符号化命令実行により当該データ幅に等しい数のビット数の符号化処理を実行してよい。例えば、プロセッサ１２１のデータ幅が３２ビットであれば、1回の符号化命令実行により、３２ビットの符号化対象データを符号化処理することになる。
【００１９】
また符号化ユニット３６は、以下に説明するように、符号化対象データ列の順方向にも逆方向にも符号化処理を実行可能なように構成されてよい。具体的には、符号化ユニット３６は、符号化対象データを順方向に符号化する第１符号化器と、符号化対象データを逆方向に符号化する第２符号化器とを含んでよい。この第２の符号化器は、後述するように複数個設けられてよい。そして、第１符号化器による順方向の符号化と複数の第２符号化器による逆方向の符号化とが並行して実行されてよい。このように、符号対象のデータ列を前後から同時に符号化処理すれば、一方から符号化処理する場合と比較して、最も効率がよい場合に半分の時間で符号化処理を終了することができる。
【００２０】
また一般に、符号化処理は、データの順番を入れ替えるインターリーブを実行した後に実行する。この際、インターリーブと符号化とが並行して実行可能な実装の形態であれば、インターリーブ終了前に符号化処理を前倒しで開始して、符号化処理をなるべく早く完了させることも可能である。この場合、インターリーブによるデータ並べ替えの性質によっては、データ列の先頭から順方向に符号化処理するよりも、データ列の末尾から逆方向に符号化処理する方が早く符号化処理が終了する場合もある。例えば、並べ替え対象のデータ列の最後のデータがインターリーブ後のデータ列の第１番目のデータ位置に配置される場合、順方向への符号化処理はインターリーブ終了後に初めて開始できるが、逆方向への符号化処理はその前に開始することができる。従って、単純に順方向又は逆方向の何れかの方向の符号化を行なう構成であっても、インターリーブによるデータ並べ替えの性質を考慮することで、符号化処理終了時間を早めることが可能となる。
【００２１】
図３は、図２の演算論理ユニット３５、符号化ユニット３６、及びレジスタのより詳細な構成を示す図である。前述のように、符号化ユニット３６は、符号化対象データを順方向に畳み込み符号化する第１符号化器（ＲＳＣ）４１と、符号化対象データを逆方向に畳み込み符号化する複数の第２符号化器（ＲｅＲＳＣ）４２−１乃至４２−ｎとを含んでよい。ここでＲＳＣは、再帰系統的畳み込み（Recursive Systematic Convolutional）符号化を表わしている。またＲｅＲＳＣは、逆方向（Reverse-direction）のＲＳＣを表わしている。第２符号化器（ＲｅＲＳＣ）４２−１乃至４２−ｎが複数個設けられる理由については、後程図５を用いて説明する。図３に示されるように、汎用レジスタ３３のデータは、演算論理ユニット３５及び符号化ユニット３６の何れにも供給可能であり、また専用レジスタ３４のデータも、演算論理ユニット３５及び符号化ユニット３６の何れにも供給可能である。これにより、通常の演算処理と符号化処理との間で自由なデータのやり取りが可能となる。
【００２２】
図４は、畳み込み符号化を行なう符号化器の一般化した構成を示す図である。Ｄ１乃至Ｄｎは、クロックに同期して１ビットの入力を取り込み保持するレジスタであり、縦続接続されることによりシフトレジスタを構成する。レジスタＤ１乃至Ｄｎの各々は、１クロックの遅延素子として機能する。ＡＮＤ回路１０は、一方の入力であるパラメータβと他方の入力との論理和を演算する。複数のＸＯＲ回路１１は、ＡＮＤ回路１０の出力間の排他的論理和を演算することにより、出力データＯＵＴを生成する。この符号化器のフィードフォワード多項式は、
g1(D) = β01 + β1D + β2D2 +・・・+βn Dn
となる。またＡＮＤ回路１２は、一方の入力であるパラメータαと他方の入力との論理和を演算する。複数のＸＯＲ回路１３は、ＡＮＤ回路１２の出力間の排他的論理和を演算することにより、フィードバックデータを生成する。このフィードバックデータを計算するフィードバック多項式は、
g0(D) = α01 + α1D + α2D2 +・・・+αn Dn
となる。なおここで、ｎ次の再帰型畳み込み符号化器の定義として、ｎ次の項のフィードバック係数であるαnは１である。
【００２３】
図４に示す再帰的畳み込み符号化を行なう符号化器は、入力データ列に対して先頭から順方向に畳み込み符号化を行ない、符号化データ列を生成する。この符号化器が生成する符号化データ列と同一のデータ列を生成する符号化器であって、上記入力データ列に対して最後尾から逆方向に畳み込み符号化を行なう符号化器を、以下のようにして設計する。逆向きの符号化を実現するためには、時刻ｔ＋１のレジスタの値から時刻ｔのレジスタの値が再現できる回路を求めればよい。
【００２４】
まず図４に示す順方向のシフトレジスタのレジスタＤ２乃至Ｄｎのうち、任意のレジスタＤｉ＋１（ｉ＝１〜ｎ−１）の時刻ｔ＋１の値Ｄｉ＋１（ｔ＋１）は、以下の式（１）で表わされる。
【００２５】
【数１】
0005708210.tif 000002
ここでＤｉ（ｔ）は、レジスタＤｉの時刻ｔの値である。この式は、シフトレジスタ中の着目レジスタの値が、１つ前に接続されるレジスタの１時刻前の値に等しいことを示している。またレジスタからのフィードバックデータと時刻ｔの入力データＩＮ（ｔ）との排他的論理和が入力されるシフトレジスタＤ１の時刻ｔ＋１の値Ｄ１（ｔ＋１）は、以下の式（２）で表わされる。
【００２６】
【数２】
0005708210.tif 000003
【００２７】
式（１）から、逆方向に畳み込み符号化を行なう符号化器においても、レジスタＤ１乃至Ｄｎ−１のうちの任意のレジスタＤｉ（ｉ＝１〜ｎ−１）の時刻ｔの値Ｄｉ（ｔ）は、時刻ｔ＋１のレジスタＤｉ＋１の値と等しければよいことが分かる。ここで、逆方向の畳み込み符号化であるから、データに着目すると、同期クロックが１つ進行すると時刻が１つ前に戻ることになる。従って、レジスタＤ１乃至Ｄｎでシフトレジスタを構成し、同期クロックと共にＤｎからＤ１に向かってデータが逆方向にシフトする構成とすればよい。
【００２８】
更に、レジスタＤｎの値については、以下のように計算できる。前述のようにαnは１であり、上記式（２）に式（１）を代入すると、以下の式が得られる。
【００２９】
【数３】
0005708210.tif 000004
１ビットの排他的論理和演算は＋も−も同一演算となることを考慮して、上式を移項によりＤｎ（ｔ）を表わす式に変形すると、以下の式（３）が得られる。
【００３０】
【数４】
0005708210.tif 000005
【００３１】
図５は、逆方向に畳み込み符号化を行なう符号化器の一般化した構成を示す図である。図５に示す符号化器は、上記の式（１）に相当する逆方向のシフトレジスタと、上記の式（３）に相当する演算を行なうことにより、各レジスタＤ１乃至Ｄｎの値を決定する構成となっている。ＡＮＤ回路１７は、一方の入力であるパラメータαと他方の入力との論理和を演算する。複数のＸＯＲ回路１８は、ＡＮＤ回路１７の出力間の排他的論理和を演算することにより、式（３）に相当する演算を実行する。なおレジスタＤ１の出力を一方の入力として受け取るＡＮＤ回路１７の他方の入力は、式（３）の右辺の最後の項に対応して係数値１である。
【００３２】
図５において、ＡＮＤ回路１５は、一方の入力であるパラメータγと他方の入力との論理和を演算する。複数のＸＯＲ回路１６は、ＡＮＤ回路１５の出力間の排他的論理和を演算することにより、出力データＯＵＴを生成する。この出力データＯＵＴを計算する多項式は、以下のようにして計算できる。図４の符号化器における出力ＯＵＴの値は、
ＯＵＴ＝β0(α01+α1D+α2D2+・・・+αnDn)+β1D+β2D2+・・・+βnDn    （４）
である。上式から、Ｄｉ（ｉ＝１〜ｎ）の項の係数値は、β0αｉ + βｉと求められる。従って、図５に示されるパラメータγｉは以下の値となる。
【００３３】
γ０＝β0α０
γｉ＝β0αｉ + βｉ  （ｉ＝１〜ｎ）            （５）
【００３４】
以上のようにして、図５に示す逆方向の畳み込み符号化器の一般化した構成において、各パラメータの値が求められる。図５に示す符号化器は、図４の符号化器が生成する符号化データ列と同一のデータ列を生成する符号化器であって、入力データ列に対して最後尾から逆方向に畳み込み符号化を行なう符号化器である。但し、図５の逆方向符号化器の初期内部状態（レジスタＤ１乃至Ｄｎの初期値）をどのような値にしておくべきなのか、不明である。そこで初期内部状態の全ての組み合わせについて逆方向の畳み込み符号化を別個に行い、複数の符号化データ列を各々別個に生成する。そして、全ての入力データ列の符号化を終了した段階で、複数の場合の各々について内部状態をチェックする。この終了時の内部状態が全てゼロ（レジスタＤ１乃至Ｄｎの値が全て０）となるような逆方向符号化演算の結果を、順方向符号化演算と同一の符号化データ列を生成するものとして選択すればよい。何故なら、順方向符号化演算は、初期内部状態が全てゼロの状態から開始されるからである。
【００３５】
なお、順方向符号化と逆方向符号化とを例えば全データ列の前半分と後半分とのそれぞれについて実行する場合、中間点において、順方向符号化演算の内部状態と一致する内部状態となる逆方向符号化演算結果を選択すればよい。また、順方向符号化と逆方向符号化とが出会う位置は、中間点に限らず、例えば前段でインターリーブ処理が行なわれる場合、インターリーブの並べ替えにより最後に位置が決定されるデータの位置であってもよい。
【００３６】
図３の構成では、上記のように初期内部状態の全ての組み合わせについて逆方向の畳み込み符号化を別個に並行して行なうために、符号化対象データを逆方向に符号化する第２符号化器４２−１乃至４２−ｎが複数個設けられている。例えば、初期内部状態のｎ個の組み合わせについて第２符号化器４２−１乃至４２−ｎにより逆方向の符号化を実行すると、第２符号化器４２−１乃至４２−ｎの内部状態に相当するｎ個のデータが専用レジスタ３４に格納される。また第１符号化器４１により順方向の符号化を実行すると、第１符号化器４１の内部状態に相当する１個のデータが専用レジスタ３４に格納される。演算論理ユニット３５は、専用レジスタ３４から内部状態データを読み出すことで、逆方向符号化の内部状態であるｎ個のデータと順方向符号化の内部状態である１個のデータとを順次比較する。この比較動作により、逆方向のｎ個のデータのうちで順方向の１個のデータと一致するものを特定することができる。特定された内部状態データに対応する逆方向の符号化データが、正しい符号化データとして選択される。
【００３７】
図６は、順方向の符号化を行なう第１符号化器４１及び専用レジスタ３４の構成の一例を示す図である。図６に示す符号化器は、図４に示す符号化器に相当する。第１符号化器４１は、デコード回路５１、ＡＮＤ回路５２、５３、５４−１乃至５４−４、５５−１乃至５５−４、５６−１乃至５６−４、及びＸＯＲ回路５７乃至５９を含む。βレジスタ６１、αレジスタ６２、及びシフトレジスタ６３−１乃至６３−４は、図３に示す専用レジスタ３４のレジスタ群の一部に相当する。ソースレジスタ６４及びデスティネーションレジスタ６５は、図３に示す汎用レジスタ３３のレジスタ群の一部に相当する。なお汎用レジスタ３３の各レジスタは、例えば３２ビット長のレジスタであってよい。
【００３８】
βレジスタ６１は、図４で説明した符号化器のフィードフォワード多項式のパラメータβを格納する。αレジスタ６２は、図４で説明した符号化器のフィードバック多項式のパラメータαを格納する。ソースレジスタ６４は、符号化対象のデータを格納しており、データの先頭から順番に１ビットずつ符号化器に供給される。デスティネーションレジスタ６５は、符号化器から１ビットずつ出力される符号化されたデータを格納する。シフトレジスタ６３−１乃至６３−４は、図４で説明した符号化器のレジスタＤ１乃至Ｄｎに相当し、内部状態データを格納する。なお図６では、４ビットのシフトレジスタに対応した符号化器の構成を示すが、シフトレジスタのビット数は４ビットに限られず、例えば８ビット、１６ビット、３２ビット等であってよく、符号化処理の条件や拡張性等を考慮して任意の数に設定してよい。
【００３９】
ＸＯＲ回路５８は、図４の符号化器の複数のＸＯＲ回路１１に相当する。ＡＮＤ回路５５−１乃至５５−４は、図４の複数のＡＮＤ回路１０に相当する。ＸＯＲ回路５７及び５９は、図４の符号化器の複数のＸＯＲ回路１３に相当する。ＡＮＤ回路５６−１乃至５６−４は、図４の複数のＡＮＤ回路１２に相当する。図６に示す例では、βレジスタ６１のパラメータβの値が１、０、１、０であり、αレジスタ６２のパラメータαの値が０、１、１、０である。
【００４０】
図７は、図６に示す例に対応する符号化器の構成を示す図である。図６に示すようにβレジスタ６１のパラメータβの値が１、０、１、０であり、αレジスタ６２のパラメータαの値が０、１、１、０である場合、符号化器は、図７に示すような構成となる。このように、βレジスタ６１及びαレジスタ６２に所望のパラメータ値を設定することで、所望の構成（所望の生成多項式）の符号化器を実現することができる。
【００４１】
なお図６において、デコード回路５１は、シフトレジスタ６３−１乃至６３−４のうち使用するレジスタの個数（図６及び図７に示す例の場合は３）を示す２ビットのデータｉｍｍ２をデコードして、４ビットの信号を出力する。この４ビットのうち、使用するレジスタの個数に等しい数（この例の場合は３個）の上位側ビットの信号がＨＩＧＨ（ビット値１）となり、残りの下位側ビットはＬＯＷ（ビット値０）とされる。即ち、デコード回路５１の出力は“１１１０”となる。ＡＮＤ回路５２及び５３により、βレジスタ６１の格納値及びαレジスタ６２の格納値それぞれに対して、デコード回路５１の出力でマスク処理を行なうことにより、不要なパラメータが間違いなく０になることを保証している。更に、デコード回路５１の出力“１１１０”がＡＮＤ回路５４−１乃至５４−４に入力され、シフトレジスタ６３−１乃至６３−４のうち使用する３つのレジスタのみについて、レジスタ間のデータのシフト動作が可能な状態となる。即ち、この例の場合には、レジスタ６３−４の格納値は常時０となる。前述のように、順方向符号化のシフトレジスタの値（内部状態）は、逆方向符号化の内部状態と比較されるので、比較対象でない不要なビットを０にしておくことで、正しい比較結果を得ることができる。
【００４２】
図６の順方向の符号化器による符号化処理において、ソースレジスタ６４に格納される符号化対象データは下位ビットから順番に符号化される。シフトレジスタ６３−１乃至６３−４には、最初の符号化命令実行時には“０”を格納しておく。次回以降の符号化命令実行時には、前回の符号化命令実行終了時のシフトレジスタ６３−１乃至６３−４の値をそのまま保持しておけばよい。フィードバック側のＡＮＤ回路５６−１乃至５６−４が、マスク処理されたαレジスタ６２の値とシフトレジスタ６３−１乃至６３−４の値とのビット毎の論理積を求める。更にＸＯＲ回路５９が、この論理積の全ビット同士の排他的論理和を求める。更に、ＸＯＲ回路５７が、ソースレジスタ６４の最下位ビットと上記ＸＯＲ回路５９の出力との排他的論理和を求める。このＸＯＲ回路５７の出力がシフトレジスタ６３−１乃至６３−４の左側から入力され、シフトレジスタ６３−１乃至６３−４の各データは右に１ビットシフトされる。またフィードフォワード側のＡＮＤ回路５５−１乃至５５−４が、マスク処理されたβレジスタ６１の値とシフトレジスタ６３−１乃至６３−４の値とのビット毎の論理積を求める。更に、ＸＯＲ回路５８が、ＸＯＲ回路５７の出力と上記論理積の全ビットとの排他的論理和を求める。このＸＯＲ回路５８の出力が、デスティネーションレジスタ６５の最下位ビットに挿入される。ビット挿入の際、デスティネーションレジスタ６５の内容を左に1ビットシフトさせておく。上記の一連の動作を、１回の符号化命令実行について例えば４回実行することで、ソースレジスタ６４の４ビットの符号化対象データに対する４ビットの符号化後データが、デスティネーションレジスタ６５に格納される。
【００４３】
図８は、逆方向の符号化を行なう第２符号化器及び専用レジスタ３４の構成の一例を示す図である。図８に示す符号化器は、第２符号化器４２−１乃至４２−ｎのうちの１つであり、図５に示す符号化器に相当する。第２符号化器は、デコード回路７１、ＡＮＤ回路７２、７３、７４−１乃至７４−４、７５−１乃至７５−４、７６−１乃至７６−４、及びＸＯＲ回路７７及び７８を含む。γレジスタ８１、αレジスタ８２、及びシフトレジスタ８３−１乃至８３−４は、図５に示す専用レジスタ３４のレジスタ群の一部に相当する。ソースレジスタ８４及びデスティネーションレジスタ８５は、図５に示す汎用レジスタ３３のレジスタ群の一部に相当する。
【００４４】
γレジスタ８１は、図５で説明した符号化器のフィードフォワード多項式のパラメータγを格納する。αレジスタ８２は、図５で説明した符号化器のフィードバック多項式のパラメータαを格納する。ソースレジスタ８４は、符号化対象のデータを格納しており、データの先頭から順番に１ビットずつ符号化器に供給される。デスティネーションレジスタ８５は、符号化器から１ビットずつ出力される符号化されたデータを格納する。シフトレジスタ８３−１乃至８３−４は、図５で説明した符号化器のレジスタＤ１乃至Ｄｎに相当し、内部状態データを格納する。なお図８では、４ビットのシフトレジスタに対応した符号化器の構成を示すが、シフトレジスタのビット数は４ビットに限られず、例えば８ビット、１６ビット、３２ビット等であってよく、符号化処理の条件や拡張性等を考慮して任意の数に設定してよい。
【００４５】
ＸＯＲ回路７７は、図５の符号化器の複数のＸＯＲ回路１６に相当する。ＡＮＤ回路７５−１乃至７５−４は、図５の複数のＡＮＤ回路１５に相当する。ＸＯＲ回路７８は、図５の符号化器の複数のＸＯＲ回路１８に相当する。ＡＮＤ回路７６−１乃至７６−４は、図５の複数のＡＮＤ回路１７に相当する。図８に示す例では、γレジスタ８１のパラメータγの値が０、１、１、０であり、αレジスタ８２のパラメータαの値が０、１、０、１である。
【００４６】
図９は、図８に示す例に対応する符号化器の構成を示す図である。図６に示すようにγレジスタ８１のパラメータγの値が０、１、１、０であり、αレジスタ８２のパラメータαの値が０、１、０、１である場合、符号化器は、図９に示すような構成となる。このように、γレジスタ８１及びαレジスタ８２に所望のパラメータ値を設定することで、所望の構成（所望の生成多項式）の符号化器を実現することができる。
【００４７】
なお図８において、デコード回路７１は、シフトレジスタ８３−１乃至８３−４のうち使用するレジスタの個数（図８及び図９に示す例の場合は３）を示す２ビットのデータｉｍｍ２をデコードして、４ビットの信号を出力する。この４ビットのうち、使用するレジスタの個数に等しい数（この例の場合は３個）の下位側ビットの信号がＨＩＧＨ（ビット値１）となり、残りの上位側ビットはＬＯＷ（ビット値０）とされる。即ち、デコード回路７１の出力は“０１１１”となる。ＡＮＤ回路７２及び７３により、γレジスタ８１の格納値及びαレジスタ８２の格納値それぞれに対して、デコード回路７１の出力でマスク処理を行なうことにより、不要なパラメータが間違いなく０になることを保証している。更に、デコード回路７１の出力“０１１１”がＡＮＤ回路７４−１乃至７４−４に入力され、シフトレジスタ８３−１乃至８３−４のうち使用する３つのレジスタのみについて、レジスタ間のデータのシフト動作が可能な状態となる。即ち、この例の場合には、レジスタ８３−１の格納値は常時０となる。前述のように、逆方向符号化のシフトレジスタの値（内部状態）は、順方向符号化の内部状態と比較されるので、比較対象でない不要なビットを０にしておくことで、正しい比較結果を得ることができる。
【００４８】
図８の逆方向の符号化器による符号化処理において、ソースレジスタ８４に格納される符号化対象データは上位ビットから順番に符号化される。シフトレジスタ８３−１乃至８３−４には、所定の初期状態の値を格納しておく。次回以降の符号化命令実行時には、前回の符号化命令実行終了時のシフトレジスタ８３−１乃至８３−４の値をそのまま保持しておけばよい。フィードバック側のＡＮＤ回路７６−１乃至７６−４が、マスク処理されたαレジスタ８２の値とシフトレジスタ８３−１乃至８３−４の値とのビット毎の論理積を求める。更にＸＯＲ回路７８が、ソースレジスタ８４の最上位ビットと上記論理積の全ビットとの排他的論理和を求める。このＸＯＲ回路７８の出力がシフトレジスタ８３−１乃至８３−４の右側から入力され、シフトレジスタ８３−１乃至８３−４の各データは左に１ビットシフトされる。またフィードフォワード側のＡＮＤ回路７５−１乃至７５−４が、マスク処理されたγレジスタ８１の値とシフトレジスタ８３−１乃至８３−４の値とのビット毎の論理積を求める。更に、ＸＯＲ回路７７が、ソースレジスタ８４の最上位ビットと上記論理積の全ビットとの排他的論理和を求める。このＸＯＲ回路７７の出力が、デスティネーションレジスタ８５の最上位ビットに挿入される。ビット挿入の際、デスティネーションレジスタ６５の内容を右に1ビットシフトさせておく。上記の一連の動作を、１回の符号化命令実行について例えば４回実行することで、ソースレジスタ８４の４ビットの符号化対象データに対する４ビットの符号化後データが、デスティネーションレジスタ８５に格納される。
【００４９】
図１０は、符号化命令の仕様を示す図である。（ａ）に示す順方向の符号化命令は、「ＲＳＣ  ｒ０，＃ｉｍｍ２，ｒ１」の形式で指定される。（ｂ）に示す逆方向の符号化命令は、「ＲｅＲＳＣ  ｒ０，＃ｉｍｍ２，ｒ１」の形式で指定される。これら符号化命令において、ｒ０は、入力データ（符号化対象データ）を格納するソースレジスタを示す。＃ｉｍｍ２は、使用するシフトレジスタの個数を即値指定する。１〜４個の範囲で使用するシフトレジスタの個数を最少の２ビットで表現するために、実際には“個数−１”の２進数により、個数を表現してよい。例えば１つ使用する場合であれば“００”であり、３つ使用する場合であれば“１０”となる。ｒ１は、出力データ（符号化後データ）を格納するデスティネーションレジスタを示す。また明示的に符号化命令には現れないが、シフトレジスタ、αレジスタ、及びβレジスタの３つのレジスタを順方向の符号化命令の実行に際して使用する。また、シフトレジスタ、αレジスタ、及びγレジスタの３つのレジスタを逆方向の符号化命令の実行に際して使用する。
【００５０】
図１１は、レジスタ設定命令の仕様を示す図である。（ａ）に示すレジスタ設定命令は、「ＭＯＶＲＥ  ｒ０，ｅ０」の形式で指定される。この命令を実行することにより、指定した汎用レジスタｒ０から指定した専用レジスタｅ０にデータを移動する。（ｂ）に示すレジスタ設定命令は、「ＭＯＶＥＲ  ｅ０，ｒ０」の形式で指定される。この命令を実行することにより、指定した専用レジスタｅ０から指定した汎用レジスタｒ０にデータを移動する。
【００５１】
図１２は、専用レジスタ群の構成の一例を示す図である。図１２に示す専用レジスタ群の構成は、符号化器のシフトレジスタが４ビットの場合に相当する。この場合、逆方向の符号化器は、１６（＝２４）個の内部状態に対応して１６個設けられる。従って、１６個の逆方向の符号化器に対応して、シフトレジスタ、αレジスタ、及びγレジスタのセットが１６個設けられる。順方向の符号化器に対しては、シフトレジスタ、αレジスタ、及びβレジスタのセットが１個設けられる。各レジスタは、０ビットから３ビットまでの４ビットに対して、書き込み及び読み出しが可能となっている。
【００５２】
ここまでの説明において、図２に示す符号化ユニット３６の順方向の符号化器及び逆方向の符号化器は、１ビットずつ符号化演算を行なう構成としたが、これに限られるものではない。符号化ユニット３６は、符号化対象データの複数ビットについて同時に符号化を実行する構成であってよい。
【００５３】
図１３は、４ビット纏めた入力ＩＮと４ビット纏めた出力ＯＵＴとの論理関係を示したテーブルである。図１３の（ａ）に示すテーブルは、図７の順方向符号化器が行なう論理演算を、順次入力される入力ＩＮの４つのビットＸ０乃至Ｘ３それぞれについて示したものであり、図７の構成から容易に導くことができる。また図１３の（ｂ）に示すテーブルは、図９の逆方向符号化器が行なう論理演算を、順次入力される入力ＩＮの４つのビットＸ０乃至Ｘ３それぞれについて示したものであり、図９の構成から容易に導くことができる。
【００５４】
図１４は、順方向の符号化処理を行なう符号化器及び専用レジスタの構成の一例を示す図である。図１４に示す符号化器は、図６に示す符号化器を４ビット同時処理できるように変形したものに相当する。符号化器は、デコード回路１５１、ＡＮＤ回路１５２−１乃至１５２−４、１５３−１乃至１５３−４、１５４、１５５−１乃至１５５−４、１５６−１乃至１５６−４、ＸＯＲ回路１５８−１乃至１５８−４、１５９−１乃至１５９−４を含む。βレジスタ１６１−１乃至１６１−４、αレジスタ１６２−１乃至１６２−４、及びシフトレジスタ１６３は、図３に示す専用レジスタ３４のレジスタ群の一部に相当する。ソースレジスタ１６４−１乃至１６４−４及びデスティネーションレジスタ１６５−１乃至１６５−４は、図３に示す汎用レジスタ３３のレジスタ群の一部に相当する。
【００５５】
この符号化器は、ＸＯＲ回路及びＡＮＤ回路を含む複数の同一の論理回路２０１乃至２０４を含む。複数の同一の論理回路２０１乃至２０４が、複数入力ビット（この例では４ビット）に一対一に対応して設けられ、複数入力ビットのそれぞれに対応する符号化ビットを出力する。ソースレジスタ１６４−１乃至１６４−４は、図６に示すソースレジスタ６４の下位４ビットに相当する。またデスティネーションレジスタ１６５−１乃至１６５−４は、図６に示すデスティネーションレジスタ６５の下位４ビットに相当する。なおαレジスタ及びβレジスタはそれぞれ複数個設けられるかのように示されるが、これらのレジスタは実際には同一のレジスタであってよい。
【００５６】
この順方向の符号化器による符号化処理において、シフトレジスタ１６３には、最初の符号化命令実行時には“０”を格納しておく。次回以降の符号化命令実行時には、前回の符号化命令実行終了時のシフトレジスタ１６３の値をそのまま保持しておけばよい。
【００５７】
論理回路２０１において、フィードバック側のＡＮＤ回路１５６−１が、ＡＮＤ回路１５２−１によりマスク処理されたαレジスタ１６２−１の値とシフトレジスタ１６３の値とのビット毎の論理積を求める。更にＸＯＲ回路１５９−１が、ソースレジスタ１６４−１の格納ビットと上記論理積の全ビットとの排他的論理和を求める。次段の論理回路２０２に入力される信号線において、シフトレジスタ１６３の各ビット位置は右に１つシフトされ、ＸＯＲ回路１５９−１の出力がシフトレジスタ１６３の左端のビットの位置に配置される。これにより、次段の論理回路２０２へのシフトレジスタ１６３からの入力は、図６の構成において右に１ビットシフトした後のシフトレジスタの格納データ内容と同一となる。
【００５８】
またフィードフォワード側のＡＮＤ回路１５５−１が、ＡＮＤ回路１５３−１によりマスク処理されたβレジスタ１６１−１の値とシフトレジスタ１６３の値とのビット毎の論理積を求める。更に、ＸＯＲ回路１５８−１が、ＸＯＲ回路１５９−１の出力と上記論理積の全ビットとの排他的論理和を求める。このＸＯＲ回路１５８−１の出力が、デスティネーションレジスタ１６５−１に格納される。
【００５９】
論理回路２０２乃至２０４においても、上記の論理回路２０１と同様の動作が実行される。これにより、図６の符号化器を４クロックサイクル動作（即ちシフトレジスタを４回シフト動作）させる場合と同等の演算を、１クロックサイクルで実行することができる。論理回路２０４から出力される４回のシフト動作後のシフトレジスタの値は、ＡＮＤ回路１５４により不要なビットがマスクされる。このマスク後の値により、シフトレジスタ１６３の格納データ内容を更新する。
【００６０】
図１５は、逆方向の符号化処理を行なう符号化器及び専用レジスタの構成の一例を示す図である。図１５に示す符号化器は、図８に示す符号化器を４ビット同時処理できるように変形したものに相当する。符号化器は、デコード回路１７１、ＡＮＤ回路１７２−１乃至１７２−４、１７３−１乃至１７３−４、１７４、１７５−１乃至１７５−４、１７６−１乃至１７６−４、ＸＯＲ回路１７７−１乃至１７７−４、ＸＯＲ回路１７８−１乃至１７８−４を含む。γレジスタ１８１−１乃至１８１−４、αレジスタ１８２−１乃至１８２−４、及びシフトレジスタ１８３は、図３に示す専用レジスタ３４のレジスタ群の一部に相当する。ソースレジスタ１８４−１乃至１８４−４及びデスティネーションレジスタ１８５−１乃至１８５−４は、図３に示す汎用レジスタ３３のレジスタ群の一部に相当する。
【００６１】
この符号化器は、ＸＯＲ回路及びＡＮＤ回路を含む複数の同一の論理回路３０１乃至３０４を含む。複数の同一の論理回路３０１乃至３０４が、複数入力ビット（この例では４ビット）に一対一に対応して設けられ、複数入力ビットのそれぞれに対応する符号化ビットを出力する。ソースレジスタ１８４−１乃至１８４−４は、図８に示すソースレジスタ８４の上位４ビットに相当する。またデスティネーションレジスタ１８５−１乃至１８５−４は、図８に示すデスティネーションレジスタ８５の上位４ビットに相当する。なおαレジスタ及びγレジスタはそれぞれ複数個設けられるかのように示されるが、これらのレジスタは実際には同一のレジスタであってよい。
【００６２】
この逆方向の符号化器による符号化処理において、シフトレジスタ１８３には、最初の符号化命令実行時には所定の初期値を格納しておく。次回以降の符号化命令実行時には、前回の符号化命令実行終了時のシフトレジスタ１８３の値を、そのまま保持しておけばよい。
【００６３】
論理回路３０１において、フィードバック側のＡＮＤ回路１７６−１が、ＡＮＤ回路１７２−１によりマスク処理されたαレジスタ１８２−１の値とシフトレジスタ１８３の値とのビット毎の論理積を求める。更にＸＯＲ回路１７８−１が、ソースレジスタ１８４−１の格納ビットと上記論理積の全ビットとの排他的論理和を求める。次段の論理回路３０２に入力される信号線において、シフトレジスタ１８３の各ビット位置は左に１つシフトされ、ＸＯＲ回路１７８−１の出力がシフトレジスタ１８３の右端のビットの位置に配置される。これにより、次段の論理回路３０２へのシフトレジスタ１８３からの入力は、図８の構成において左に１ビットシフトした後のシフトレジスタの格納データ内容と同一となる。
【００６４】
またフィードフォワード側のＡＮＤ回路１７５−１が、ＡＮＤ回路１７３−１によりマスク処理されたγレジスタ１８１−１の値とシフトレジスタ１８３の値とのビット毎の論理積を求める。更に、ＸＯＲ回路１７７−１が、ソースレジスタ１８４−１の格納ビットと上記論理積の全ビットとの排他的論理和を求める。このＸＯＲ回路１７７−１の出力が、デスティネーションレジスタ１８５−１に格納される。
【００６５】
論理回路３０２乃至３０４においても、上記の論理回路３０１と同様の動作が実行される。これにより、図８の符号化器を４クロックサイクル動作（即ちシフトレジスタを４回シフト動作）させる場合と同等の演算を、１クロックサイクルで実行することができる。論理回路３０４から出力される４回のシフト動作後のシフトレジスタの値は、ＡＮＤ回路１７４により不要なビットがマスクされる。このマスク後の値により、シフトレジスタ１８３の格納データ内容を更新する。
【００６６】
図１６は、図２のプロセッサ１２１により符号化処理を実行する手順を示すフローチャートである。ステップＳ１で、順方向の畳み込み符号化処理（ＲＳＣ）用の専用レジスタに所定のデータを設定する。ステップＳ２で、逆方向の畳み込み符号化処理（ＲＲＳＣ）用の専用レジスタに所定のデータを設定する。例えば図７及び図９に示すように３個のレジスタを使用する場合には、初期状態の数は８（＝２３）個であるので、８セットの逆符号化器の分についてレジスタ設定を行なう。またこのステップＳ２で、変数Ｉを０に初期設定する。
【００６７】
次にステップＳ３で、未だ符号化されていない符号化対象データ列の先頭の４ビットと末尾の４ビットとを例えばメモリから取得して、順方向符号化処理のソースレジスタ及び逆方向符号化処理のソースレジスタとして使用する汎用レジスタにそれぞれ格納する。ステップＳ４で、１つの順方向符号化処理及び８つの逆方向符号化処理を、それぞれの符号化命令により並列に実行する。なお逆方向符号化処理については、１つの符号化処理命令ＲＲＳＣにより、必要数の逆符号化処理が並列に実行される構成としてよい。なおステップＳ４では、変数Ｉを１インクリメントする。
【００６８】
ステップＳ５で、符号化対象データのデータ長から８Ｉを減算した値が０であるか否かを判定する。この値が０であれば、全ての符号化対象データの符号化処理が終了したことになる。ステップＳ５の判定結果がＮＯであれば、ステップＳ６で、デスティネーションレジスタが満杯であるか否かを判定する。満杯であれば、ステップＳ７で、デスティネーションレジスタの値をメモリへ格納する。満杯でなければ、ステップＳ８で、デスティネーションレジスタの内容をシフトして、次の符号化処理の準備をする。その後、ステップＳ３に戻り、以降の処理を繰り返す。
【００６９】
ステップＳ５の判定結果がＹＥＳである場合、ステップＳ９で、複数個の逆方向符号化処理のシフトレジスタのうちで、順方向符号化処理のシフトレジスタの値と一致する値を有するものを探す。ステップＳ１０で、デスティネーションレジスタに格納されている結果をメモリに格納する。なおステップＳ９で一致するとして特定された逆方向符号化処理を示す情報は、当該逆方向符号化処理による符号化後データを正しいデータとして選択するために用いられる。
【００７０】
図１７は、図１の符号化処理部１１６に用いるプロセッサ１２１の構成の別の一例を示す図である。図１７において、図２と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。図７に示すプロセッサでは、専用レジスタを設けることなく、汎用レジスタのみを用いて符号化処理を実行する。
【００７１】
プロセッサ１２１は、プログラムカウンタ制御部３１、命令デコード部３２、汎用レジスタ３３、専用レジスタ３４、演算ユニット５０１、及びロードストアアドレス制御部３７を含む。演算ユニット５０１は、演算論理ユニット（ＡＬＵ：Arithmetic Execution Unit）３５及び符号化ユニット３６を含む。
【００７２】
命令デコード部３２は、命令のデコード結果に応じて、演算論理ユニット３５を制御して演算処理を実行させる。汎用レジスタ３３には、演算論理ユニット３５により実行する演算処理のオペランドが格納されており、命令デコード部３２の制御により、所望のオペランドが汎用レジスタ３３から演算論理ユニット３５に供給される。またデコード対象の命令が専用の符号化命令である場合、命令デコード部３２は、この命令のデコード結果に応じて符号化ユニット３６を制御して再帰的畳み込み符号化処理を実行させる。符号化ユニット３６により実行する符号化処理に用いるデータ及びパラメータは、汎用レジスタ３３に格納されており、符号化ユニット３６により適宜参照され、更新される。演算論理ユニット３５による演算処理の結果や符号化ユニット３６による符号化処理の結果は、汎用レジスタ３３に送られ格納されてよい。符号化ユニット３６としては、ここまで説明した何れの構成の符号化器を用いてもよい。
【００７３】
図１８は、図１７の演算論理ユニット３５、符号化ユニット３６、及びレジスタのより詳細な構成を示す図である。図３と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００７４】
符号化ユニット３６は、符号化対象データを順方向に畳み込み符号化する第１符号化器（ＲＳＣ）４１と、符号化対象データを逆方向に畳み込み符号化する複数の第２符号化器（ＲｅＲＳＣ）４２−１乃至４２−ｎとを含んでよい。汎用レジスタ３３のデータは、演算論理ユニット３５及び符号化ユニット３６の何れにも供給可能である。これにより、通常の演算処理と符号化処理との間で自由なデータのやり取りが可能となる。
【００７５】
図１９は、図１７のプロセッサに対する符号化命令の仕様の一例を示す図である。図１０に示す符号化命令では、符号化命令の実行に際して使用するシフトレジスタ、αレジスタ、及びβレジスタの３つのレジスタを明示的には示していない。これは、図２に示す専用レジスタ３４をこれら３つのレジスタとして用いることを想定していたからである。それに対して、図１７のプロセッサでは、専用レジスタが設けられておらず、汎用レジスタのみを用いて符号化処理を実行する。従って、図１７のプロセッサに対する符号化命令においては、上記３つのレジスタとして使用する汎用レジスタを明示的に指定する記述形式となっている。
【００７６】
図１９（ａ）に示す順方向の符号化命令は、「ＲＳＣ  ｒ０，＃ｉｍｍ２，ｒ１，ａｌｐｈａ，ｂｅｔａ，ｓｆｔ，ｈａｓｕ」の形式で指定される。図１９（ｂ）に示す逆方向の符号化命令は、「ＲＲＳＣ  ｒ０，＃ｉｍｍ２，ｒ１，ａｌｐｈａ，ｂｅｔａ，ｓｆｔ，ｈａｓｕ」の形式で指定される。ｒ０は、入力データ（符号化対象データ）を格納するソースレジスタを示す。＃ｉｍｍ２は、使用するシフトレジスタの個数を例えば“個数−１”に対応する２進数により表現する。ｒ１は、出力データ（符号化後データ）を格納するデスティネーションレジスタを示す。ｓｆｔは、符号化処理においてシフトレジスタとして用いるレジスタを指定する。ａｌｐｈａは、フィードバック多項式の係数αを設定するレジスタを指定する。ｂｅｔａは、フィードフォワード多項式の係数βを設定するレジスタを指定する。ｈａｓｕは、何ビット一括処理するかを指定する。図１４及び図１５に示す符号化器は４ビット一括処理する回路構成となっているが、後述するように回路を変形することで、１ビットから４ビットの範囲内の指定ビット数で一括処理する回路構成とすることができる。例えば、ｎビット長のデータを４ビットずつ符号化するときにｎが４の倍数でない場合、最後にはｎを４で割った余りに等しい数のビットが残るので、この残ったビットについてはｈａｓｕで指定したビット数で一括処理する。またｒ０及びｒ１を同一レジスタとして、一方の指定を省略するようなニーモニックの記述を許してもよい。例えば｛ＲＳＣ  ｒ０，＃ｉｍｍ２，ａｌｐｈａ，ｂｅｔａ，ｓｆｔ，ｈａｓｕ」と記述した場合、ｒ０のレジスタのデータをｒ０のレジスタに出力するように動作してよい。
【００７７】
図２０は、図１７のプロセッサ１２１により図１９の命令を用いて符号化処理を実行する手順を示すフローチャートである。ステップＳ１１で、順方向処理用パラメータＩをゼロに設定するとともに、逆方向処理用パラメータＩＲをゼロに設定する。ステップＳ１２で、符号化対象データのデータ長を２で割った商（整数部）に余りを足した数をＤＬとし、符号化対象データのデータ長を２で割った商（整数部）をＤＬＲとする。ここで、データ長が偶数なら余りはゼロであり、データ長が奇数なら余りは１である。
【００７８】
ステップＳ１３で、未だ符号化されていない符号化対象データ列の先頭の４ビットと末尾の４ビットとを例えばメモリから取得して、順方向符号化処理のソースレジスタ及び逆方向符号化処理のソースレジスタとして使用する汎用レジスタにそれぞれ格納する。ステップＳ１４で、１つの順方向符号化処理及び８つの逆方向符号化処理を、それぞれの符号化命令により並列に実行する。なお逆方向符号化処理については、１つの符号化処理命令ＲＲＳＣにより、必要数の逆符号化処理が並列に実行される構成としてよい。なおステップＳ１４では、変数Ｉ及びＩＲをそれぞれ１インクリメントする。
【００７９】
ステップＳ１５で、ＤＬから４Ｉを減算した値又はＤＬＲから４ＩＲを減算した値の何れかが０以下であるか否かを判定する。ステップＳ１５の判定結果がＮＯであれば、ステップＳ１６で、デスティネーションレジスタが満杯であるか否かを判定する。満杯であれば、ステップＳ１７で、デスティネーションレジスタの値をメモリへ格納する。満杯でなければ、ステップＳ１８で、デスティネーションレジスタの内容をシフトして、次の符号化処理の準備をする。その後、ステップＳ１３に戻り、以降の処理を繰り返す。
【００８０】
ステップＳ１５の判定結果がＹＥＳである場合、ステップＳ１９で、ＤＬを４で割った余りを図１９（ａ）に示す順方向符号化命令においてｈａｓｕとして設定し、最後の順方向符号化処理を実行する。また同様に、ＤＬＲを４で割った余りを図１９（ｂ）に示す逆方向符号化命令においてｈａｓｕとして設定し、最後の逆方向符号化処理を実行する。ステップＳ２０で、複数個の逆方向符号化処理のシフトレジスタのうちで、順方向符号化処理のシフトレジスタの値と一致する値を有するものを探す。ステップＳ２１で、シフトレジスタの値が一致したものについて、デスティネーションレジスタに格納されている結果をメモリに格納する。なおステップＳ２０で一致するとして特定された逆方向符号化処理を示す情報は、当該逆方向符号化処理による符号化後データを正しいデータとして選択するために用いられる。
【００８１】
図２１は、順方向の符号化処理を行なう符号化器の構成の一例を示す図である。図２１に示す符号化器は、４ビット同時処理する図１４に示す符号化器を変形して、１ビットから４ビットの範囲で指定したビット数での同時処理を実行可能としたものである。図２１において、図１４と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００８２】
図２１に示す回路構成は、図１４に示す回路構成と比較して、セレクタ５１１乃至５１４が設けられ、これらセレクタ５１１乃至５１４により、変数ｈａｓｕに応じて適切なシフトレジスタ値を選択できる点が異なる。図２１に示す符号化器においても、論理回路２０１乃至２０４において、図１４で説明した動作と同様の動作が実行される。これにより、図６の符号化器を４クロックサイクル動作（即ちシフトレジスタを４回シフト動作）させる場合と同等の演算を、１クロックサイクルで実行することができる。
【００８３】
４ビット一括処理の場合、即ちｈａｓｕの値が４である場合には、論理回路２０４から出力される４回のシフト動作後のシフトレジスタの値が、セレクタ５１１乃至５１４により選択される。即ち、各セレクタ５１１乃至５１４は、４つの入力のうちの一番左側の入力を選択し、選択した値を出力としてＡＮＤ回路１５４に供給する。このＡＮＤ回路１５４により、シフトレジスタの値のうちで不要なビットをマスクし、マスク後の値により、シフトレジスタ１６３の格納データ内容を更新する。
【００８４】
３ビット一括処理の場合、即ちｈａｓｕの値が３である場合には、論理回路２０３から出力される３回のシフト動作後のシフトレジスタの値が、セレクタ５１１乃至５１４により選択される。即ち、各セレクタ５１１乃至５１４は、４つの入力のうちの左から２番目の入力を選択し、選択した値を出力としてＡＮＤ回路１５４に供給する。このＡＮＤ回路１５４により、シフトレジスタの値のうちで不要なビットをマスクし、マスク後の値により、シフトレジスタ１６３の格納データ内容を更新する。なお論理回路２０４中に示す「Ｃ」は、論理回路２０３から出力される３回のシフト動作後のシフトレジスタの値のうちの一番右側の値を示し、セレクタ５１４の左から２番目の入力とされる。図示の都合上、結線が煩雑になることを避けるために、直接結線して示さずに「Ｃ」のラベルを付けて示してある。「Ａ」や「Ｂ」についても同様である。
【００８５】
２ビット一括処理の場合、即ちｈａｓｕの値が２である場合には、論理回路２０２から出力される２回のシフト動作後のシフトレジスタの値が、セレクタ５１１乃至５１４により選択される。即ち、各セレクタ５１１乃至５１４は、４つの入力のうちの左から３番目の入力を選択し、選択した値を出力としてＡＮＤ回路１５４に供給する。このＡＮＤ回路１５４により、シフトレジスタの値のうちで不要なビットをマスクし、マスク後の値により、シフトレジスタ１６３の格納データ内容を更新する。
【００８６】
１ビット処理の場合、即ちｈａｓｕの値が１である場合には、論理回路２０１から出力される１回のシフト動作後のシフトレジスタの値が、セレクタ５１１乃至５１４により選択される。即ち、各セレクタ５１１乃至５１４は、４つの入力のうちの左から４番目（一番右）の入力を選択し、選択した値を出力としてＡＮＤ回路１５４に供給する。このＡＮＤ回路１５４により、シフトレジスタの値のうちで不要なビットをマスクし、マスク後の値により、シフトレジスタ１６３の格納データ内容を更新する。
【００８７】
図２２は、逆方向の符号化処理を行なう符号化器の構成の一例を示す図である。図２２に示す符号化器は、４ビット同時処理する図１５に示す符号化器を変形して、１ビットから４ビットの範囲で指定したビット数での同時処理を実行可能としたものである。図２２において、図１５と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００８８】
図２２に示す回路構成は、図１５に示す回路構成と比較して、セレクタ５２１乃至５２４が設けられ、これらセレクタ５２１乃至５２４により、変数ｈａｓｕに応じて適切なシフトレジスタ値を選択できる点が異なる。図２２に示す符号化器においても、論理回路２０１乃至２０４において、図１5で説明した動作と同様の動作が実行される。これにより、図８の符号化器を４クロックサイクル動作（即ちシフトレジスタを４回シフト動作）させる場合と同等の演算を、１クロックサイクルで実行することができる。
【００８９】
４ビット一括処理の場合、即ちｈａｓｕの値が４である場合には、論理回路３０４から出力される４回のシフト動作後のシフトレジスタの値が、セレクタ５２１乃至５２４により選択される。即ち、各セレクタ５２１乃至５２４は、４つの入力のうちの一番右側の入力を選択し、選択した値を出力としてＡＮＤ回路１７４に供給する。このＡＮＤ回路１７４により、シフトレジスタの値のうちで不要なビットをマスクし、マスク後の値により、シフトレジスタ１８３の格納データ内容を更新する。
【００９０】
３ビット一括処理の場合、即ちｈａｓｕの値が３である場合には、論理回路３０３から出力される３回のシフト動作後のシフトレジスタの値が、セレクタ５２１乃至５２４により選択される。即ち、各セレクタ５２１乃至５２４は、４つの入力のうちの右から２番目の入力を選択し、選択した値を出力としてＡＮＤ回路１７４に供給する。このＡＮＤ回路１７４により、シフトレジスタの値のうちで不要なビットをマスクし、マスク後の値により、シフトレジスタ１８３の格納データ内容を更新する。なお論理回路３０４中に示す「Ｃ」は、論理回路３０３から出力される３回のシフト動作後のシフトレジスタの値のうちの一番左側の値を示し、セレクタ５２１の右から２番目の入力とされる。図示の都合上、結線が煩雑になることを避けるために、直接結線して示さずに「Ｃ」のラベルを付けて示してある。「Ａ」や「Ｂ」についても同様である。
【００９１】
２ビット一括処理の場合、即ちｈａｓｕの値が２である場合には、論理回路３０２から出力される２回のシフト動作後のシフトレジスタの値が、セレクタ５２１乃至５２４により選択される。即ち、各セレクタ５２１乃至５２４は、４つの入力のうちの右から３番目の入力を選択し、選択した値を出力としてＡＮＤ回路１７４に供給する。このＡＮＤ回路１７４により、シフトレジスタの値のうちで不要なビットをマスクし、マスク後の値により、シフトレジスタ１８３の格納データ内容を更新する。
【００９２】
１ビット処理の場合、即ちｈａｓｕの値が１である場合には、論理回路３０１から出力される１回のシフト動作後のシフトレジスタの値が、セレクタ５２１乃至５２４により選択される。即ち、各セレクタ５２１乃至５２４は、４つの入力のうちの右から４番目（一番左）の入力を選択し、選択した値を出力としてＡＮＤ回路１７４に供給する。このＡＮＤ回路１７４により、シフトレジスタの値のうちで不要なビットをマスクし、マスク後の値により、シフトレジスタ１８３の格納データ内容を更新する。
【００９３】
図２３は、図２１の順方向符号化器と図２２の逆方向符号化器とを組み合わせることにより、両方向の符号化処理を実行可能とした符号化器の構成の一例を示す図である。図２３において、図２１及び図２２と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００９４】
図２３に示す両方向符号化器においては、図２１の順方向符号化器と図２２の逆方向符号化器とを組み合わせ、更に、新たに設けたセレクタ５３１乃至５３７により、順方向処理と逆方向処理とに応じて適宜値を選択する。セレクタ５３１は、順方向又は逆方向の何れかを示す選択信号Ｓに応じて、ソースレジスタ１６４−１乃至１６４−４とソースレジスタ１８４−１乃至１８４−４との何れか一方を選択して、論理回路２０１乃至２０４に供給する。セレクタ５３７は、順方向又は逆方向の何れかを示す選択信号Ｓに応じて、ソースレジスタからの入力とＸＯＲ回路１５９−１乃至１５９−４の出力との何れか一方を選択して、ＸＯＲ回路１５８−１乃至１５８−４に供給する。
【００９５】
セレクタ５３２は、順方向又は逆方向の何れかを示す選択信号Ｓに応じて、論理回路２０１から出力されるシフトレジスタの値が、１回の左シフト動作後のものであるのか或いは１回の右シフト動作後のものであるのか、を選択する。セレクタ５３３は、順方向又は逆方向の何れかを示す選択信号Ｓに応じて、論理回路２０２から出力されるシフトレジスタの値が、２回の左シフト動作後のものであるのか或いは２回の右シフト動作後のものであるのか、を選択する。セレクタ５３４は、順方向又は逆方向の何れかを示す選択信号Ｓに応じて、論理回路２０３から出力されるシフトレジスタの値が、３回の左シフト動作後のものであるのか或いは３回の右シフト動作後のものであるのか、を選択する。セレクタ５３５は、順方向又は逆方向の何れかを示す選択信号Ｓに応じて、論理回路２０４から出力されるシフトレジスタの値が、４回の左シフト動作後のものであるのか或いは４回の右シフト動作後のものであるのか、を選択する。
【００９６】
セレクタ５３６は、順方向又は逆方向の何れかを示す選択信号Ｓに応じて、セレクタ５１１乃至５１４の出力とセレクタ５２１乃至５２４の出力との何れか一方を選択し、選択した値をＡＮＤ回路１５４に供給する。以上により、図２３に示す符号化器は、選択信号Ｓに応じて、順方向又は逆方向の何れかの符号化処理を実行することができる。
【００９７】
図２４は、符号化処理部１１６に用いるプロセッサ１２１の構成の更に別の一例を示す図である。図２４において、図２及び図１７と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００９８】
図２４に示すプロセッサ１２１は、プログラムカウンタ制御部３１、命令デコード部３２、汎用レジスタ３３、専用レジスタ３４、ロードストアアドレス制御部３７、及び演算ユニット５０１−１乃至５０１−４を含む。演算ユニット５０１−１乃至５０１−４は、図１７に示す演算ユニット５０１と同一の構成及び機能を有してよい。４つの演算ユニット５０１−１乃至５０１−４を設けることにより、ＶＬＩＷ（Very Long Instruction Word）形式の命令の実行に対応することができる。ＶＬＩＷ型のプロセッサでは、命令メモリとのフェッチビット幅を広くすることにより、より多くの命令を１サイクルで発行可能となる。例えばＶＬＩＷ命令が１２８ビットのビット幅であり、４つの３２ビット幅の命令を含む場合、これらの命令を４つの演算ユニット５０１−１乃至５０１−４によりそれぞれ実行させることができる。
【００９９】
図２５は、命令を４つ並列に纏めて1つのＶＬＩＷ命令を生成する様子を示す図である。符号化においてシフトレジスタが例えば図７に示すように３ビットの場合、順方向及び逆方向の双方から演算を行うためには、１つの順方向の命令と８つの逆方向の命令とを実行する。これら８つの逆方向の命令のシフトレジスタの初期値は、それぞれ０〜７の値である。図２５に示す命令列の例では、１つの順方向符号化命令ＲＳＣの後に８つの逆方向符号化命令ＲＲＳＣ０乃至ＲＲＳＣ７が続き、更に次の１つの順方向符号化命令ＲＳＣの後に同様に次の８つの逆方向符号化命令ＲＲＳＣ０乃至ＲＲＳＣ７が続いている。１つの順方向符号化命令及び８つの逆方向符号化命令の各々は、前回の自分自身の命令との依存関係が存在する。しかし、レジスタ配置を正しく行えば、並列する４つの命令同士のデスティネーションの競合が起こることはない。従って、図２５に一例として示すような４並列パッキングが可能である。例えば１列目に示す４並列パッキングされたＶＬＩＷ命令の場合、ＲＳＣを演算ユニット５０１−１、ＲＲＳＣ０を演算ユニット５０１−２、ＲＲＳＣ１を演算ユニット５０１−３、ＲＲＳＣ２を５０１−４に割り当てて演算を実行すればよい。並列パッキングは、一般に、実行可能プログラムを生成する際にコンパイラが実行する。
【０１００】
図２６は、符号化処理部１１６に用いるプロセッサ１２１の構成の更に別の一例を示す図である。図２６に示すプロセッサは、命令ＦＩＦＯ５５１、命令デコーダ５５２、プリデコーダ５５３、命令選択フェッチ回路５５４、演算スロット５５５−１乃至５５５−３、レジスタ５５６を含む。命令メモリ５６０及びデータメモリ５６１は、例えば図１のメモリ１２２に相当する。
【０１０１】
図２６に示すプロセッサは、スーパースカラー型プロセッサであり、命令メモリ５６０から取得した命令を一時的に命令ＦＩＦＯ５５１に蓄積する。プリデコーダ５５３は、命令ＦＩＦＯ５５１に蓄積された命令のうちで先頭側にある複数の命令から、命令中のレジスタ番号に関する情報を取得し、取得した情報を命令デコーダ５５２に供給する。命令デコーダ５５２は、命令中のレジスタ番号に関する情報に基づいて命令間の依存関係を判断し、判断した依存関係に基づいて同時に発行できる命令を選択する。命令デコーダ５５２からの選択指示に基づいて、命令選択フェッチ回路５５４は、選択された命令を命令デコーダ５５２に供給する。命令デコーダ５５２は、供給された命令をデコードし、各演算スロット５５５−１乃至５５５−３に発行する。ここで演算スロット５５５−１及び５５５−２は、図１７に示す演算ユニット５０１と同様の構成及び機能を有するものであってよく、演算スロット５５５−３は、図１７に示すロードストアアドレス制御部３７に相当する。符号化処理を行なう演算スロット５５５−１及び５５５−２の数は２つに限られるものではなく、例えば８つの演算スロットが設けられてよい。この場合、８並列で逆方向の符号化処理を同時に実行することができる。
【０１０２】
図２７は、符号化処理部１１６に用いるプロセッサ１２１の構成の更に別の一例を示す図である。図２７において、図２６と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。図２６に示すプロセッサは、命令ＦＩＦＯ５５１、命令デコーダ５５２、命令フェッチ回路５５４Ａ、演算スロット５５５−１及び５６５−１乃至５６５−４、及びレジスタ５５６を含む。命令メモリ５６０及びデータメモリ５６１は、例えば図１のメモリ１２２に相当する。図２７では、図２６のプリデコーダ５５３及び命令選択フェッチ回路５５４を簡略化して、命令フェッチ回路５５４Ａとして示してある。命令フェッチ回路５５４Ａの構成及び機能は、プリデコーダ５５３及び命令選択フェッチ回路５５４の構成及び機能と同様である。
【０１０３】
図２７に示すプロセッサは、ベクトル型プロセッサであり、命令フェッチ、依存関係確認、及び演算スロットへの命令の割り当ての動作は、図２６に示すスーパースカラー型プロセッサの場合と同様である。演算スロット５５５−１は、図２６の演算スロット５５５−１と同一の構成であり、１つの命令実行サイクルで１命令の演算実行を終了するスカラー型の演算スロットである。それ以外の演算スロット５６５−１乃至５６５−４は、１命令に対して複数の命令実行サイクルに亘る複数の演算を実行するベクトル型の演算スロットである。レジスタ５５６は、通常のレジスタと、ベクトルレジスタと呼ばれる可変長のレジスタ列とを含む。
【０１０４】
図２８は、ベクトルレジスタの一例を示す図である。ベクトル長を指定する値Ｖｅｃｔｏｒ＿ｌｅｎｇｔｈ（以降ＶＬ）により、一度に実行される命令の数を指定する。このＶＬ長の単位で、レジスタの論理番号が割り振られる。図２８に示す例では、ＶＬ＝１６の場合であり、レジスタ論理番号ＶＲ０を指定すると、レジスタ物理番号ＶＲ０乃至ＶＲ１５の１６個のレジスタが指定される。また同様に、レジスタ論理番号ＶＲ１を指定すると、レジスタ物理番号ＶＲ１６乃至ＶＲ３１の１６個のレジスタが指定される。
【０１０５】
ＶＬ＝１６の場合に、命令が例えば「ｖａｄｄ  ｖｒ０，ｖｒ１，ｖｒ２」と記述された場合、この命令を実行する演算により、以下のようなレジスタ物理番号を用いた演算が実行される。
For(i=0;i<16;i++) { vr(32+i)=vr(0+i)+vr(16+i);}
【０１０６】
ベクトル型プロセッサへ実装する場合には、ＲＳＣ符号化命令も１発行で複数サイクル分のデータを符号化する。例えばＶＬ＝１６の場合、１サイクルで４ビット一括処理するＲＳＣ命令が発行されると、６４ビット分のデータの符号化処理を１６サイクルかけて演算する。例えばソースを論理番号ＶＲ０に指定し、デスティネーションを論理番号ＶＲ１に指定した場合、最初の演算サイクルでは物理番号ＶＲ０をソースレジスタとして使用し、物理番号ＶＲ１６をデスティネーションレジスタとして使用する。次の演算サイクルでは物理番号ＶＲ１をソースレジスタとして使用し、物理番号ＶＲ１７をデスティネーションレジスタとして使用する。以降同様にして、１６回の演算を繰り返し、最後の演算サイクルでは物理番号ＶＲ１５をソースレジスタとして使用し、物理番号ＶＲ３１をデスティネーションレジスタとして使用する。
【０１０７】
図２９は、順方向符号化命令及び逆方向符号化命令により符号化処理を実行する場合のタイミングチャートの一例を示す。この例において、ＶＬ長は８である。図２７に示すプロセッサの場合、符号化処理が可能なベクトル型の演算スロットとして、４つの演算スロット５６５−１乃至５６５−４が設けられている。これら４つの演算スロットの全てが空きの状態でＲＳＣ命令を発行した場合、図２９の命令実行サイクル０〜３に示されるように、発行された４つの命令が順次空いているスロットに割り振られていく。４つの演算スロットが全て使用状態となると、利用可能な演算スロットがなくなり、命令実行サイクル３以降は待ち状態となる。命令実行サイクル８になると最初のＲＳＣ命令が終了するので、新たに空き状態となった演算スロットに、待ち状態であったＲＳＣ３が割り当てられ実行される。以下同様にして順次ＲＳＣ４以降の命令が実行される。図２１及び図２２に示される符号化器を用いた場合、最後の端数分については、例えばＶＬ長を１に設定すると共に変数ｈａｓｕを設定すればよい。
【０１０８】
ここで説明したＶＬＩＷ、スーパースカラー、及びベクトル型プロセッサの例では、１演算スロットにおいて１つの演算が実行されるものとして説明したが、これに限定されるものではない。図１８に示すように、１つの符号化ユニット３６が複数の符号化器を含む構成の場合には、１演算スロットで複数の演算を並列動作させることが可能である。
【０１０９】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【０１１０】
なお本願発明は、以下の内容を含む。
（付記１）
演算論理ユニットと、
ＸＯＲ回路及びＡＮＤ回路を含む符号化ユニットと、
第１命令のデコード結果に応じて前記演算論理ユニットを制御して演算処理を実行させると共に、前記第１命令とは別の第２命令のデコード結果に応じて前記符号化ユニットを制御して再帰的畳み込み符号化処理を実行させる命令デコード部と、
前記演算論理ユニットにより実行する演算処理のオペランドを格納するとともに、前記符号化ユニットにより実行する符号化処理に用いるデータ及びパラメータを格納するレジスタと
を含むことを特徴とするプロセッサ。
（付記２）
前記レジスタは、
前記演算論理ユニットにより実行する演算処理のオペランドを格納する第１レジスタと、
前記符号化ユニットにより実行する符号化処理に用いるデータ及びパラメータを格納する第２レジスタと
を含むことを特徴とする付記１記載のプロセッサ。
（付記３）
前記符号化ユニットは、符号化対象データを順方向に符号化する第１符号化器を含むことを特徴とする付記１又は２記載のプロセッサ。
（付記４）
前記符号化ユニットは、符号化対象データを逆方向に符号化する複数の第２符号化器を含むことを特徴とする付記１乃至３の何れか一項記載のプロセッサ。
（付記５）
前記符号化ユニットは、第１符号化器による順方向の符号化と前記複数の第２符号化器による逆方向の符号化を並行して実行することを特徴とする付記４記載のプロセッサ。
（付記６）
前記符号化ユニットは、符号化対象データの複数ビットについて同時に符号化を実行することを特徴とする付記１乃至５何れか一項記載のプロセッサ。
（付記７）
前記符号化ユニットは、ＸＯＲ回路及びＡＮＤ回路を含む複数の同一の論理回路を含み、前記複数の同一の論理回路が、前記複数ビットに一対一に対応して設けられ、前記複数ビットのそれぞれに対応する符号化ビットを出力することを特徴とする付記６記載のプロセッサ。
（付記８）
前記複数の同一の論理回路のｎ番目の論理回路は、１番目乃至ｎ−１番目のｎ−１個の論理回路により計算されたｎ−１個のビット値と前記シフトレジスタに格納されている少なくとも１つのビット値とに基づいて符号化処理を実行することを特徴とする付記７記載のプロセッサ。
（付記９）
符号化対象データを符号化して符号化データを生成する符号化装置と、
前記符号化データを変調して変調信号を生成する変調部と、
前記変調信号をＲＦ信号に変換するＲＦ回路と
を含み、前記符号化装置は、
プロセッサと、
メモリと
を含み、前記プロセッサは、
演算論理ユニットと、
ＸＯＲ回路及びＡＮＤ回路を含む符号化ユニットと、
第１命令のデコード結果に応じて前記演算論理ユニットを制御して演算処理を実行させると共に、前記第１命令とは別の第２命令のデコード結果に応じて前記符号化ユニットを制御して再帰的畳み込み符号化処理を実行させる命令デコード部と、
前記演算論理ユニットにより実行する演算処理のオペランドを格納するとともに、前記符号化ユニットにより実行する符号化処理に用いるデータ及びパラメータを格納するレジスタと
を含むことを特徴とする無線通信装置。
【符号の説明】
【０１１１】
３１  プログラムカウンタ制御部
３２  命令デコード部
３３  汎用レジスタ
３４  専用レジスタ
３５  演算論理ユニット
３６  符号化ユニット
３７  ロードストアアドレス制御部
１１０  ＲＦ（Radio Frequency）回路
１１１  ＡＤ＆ＤＡ変換部
１１２  同期処理部
１１３  復調処理部
１１４  誤り訂正部
１１５  変調処理部
１１６  符号化処理部
１１７  ＭＡＣ部
１１８、１１９  専用ハードウェア
【図１】
0005708210.tif 000006
【図２】
0005708210.tif 000007
【図３】
0005708210.tif 000008
【図４】
0005708210.tif 000009
【図５】
0005708210.tif 000010
【図６】
0005708210.tif 000011
【図７】
0005708210.tif 000012
【図８】
0005708210.tif 000013
【図９】
0005708210.tif 000014
【図１０】
0005708210.tif 000015
【図１１】
0005708210.tif 000016
【図１２】
0005708210.tif 000017
【図１３】
0005708210.tif 000018
【図１４】
0005708210.tif 000019
【図１５】
0005708210.tif 000020
【図１６】
0005708210.tif 000021
【図１７】
0005708210.tif 000022
【図１８】
0005708210.tif 000023
【図１９】
0005708210.tif 000024
【図２０】
0005708210.tif 000025
【図２１】
0005708210.tif 000026
【図２２】
0005708210.tif 000027
【図２３】
0005708210.tif 000028
【図２４】
0005708210.tif 000029
【図２５】
0005708210.tif 000030
【図２６】
0005708210.tif 000031
【図２７】
0005708210.tif 000032
【図２８】
0005708210.tif 000033
【図２９】
0005708210.tif 000034