(57)【要約】【課題】ビットシリアル型ＳＩＭＤマシンを用いつつ高速処理を可能としたプロセッサを提供すること。【解決手段】直交ＳＲＡＭ０（２１）および直交ＳＲＡＭ１（２２）は、外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出してビットシリアル型ＳＩＭＤマシン１に出力する。また、直交ＳＲＡＭ０（２１）および直交ＳＲＡＭ１（２２）は、ビットシリアル型ＳＩＭＤマシン１から出力されたデータを垂直方向に書き込み、書き込まれたデータを水平方向に読み出して外部に出力する。したがって、ビットシリアル型ＳＩＭＤマシン１は、高速に演算を行なうことが可能となる。【選択図】図３
2008102680.tif 000002
【特許請求の範囲】
【請求項１】
各ワードを逐次処理する単一命令複数データ方式の演算手段と、
外部から入力されたデータを直交変換して前記演算手段に出力する直交処理手段とを含むプロセッサ。
【請求項２】
前記直交処理手段は、外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出す第１および第２の直交記憶手段を含み、
前記プロセッサはさらに、前記第１の直交記憶手段から読み出された垂直方向のデータと前記第２の直交記憶手段から読み出された垂直方向のデータとを選択的に前記演算手段に出力する選択手段を含む、請求項１記載のプロセッサ。
【請求項３】
前記直交処理手段は、外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出し、検索データと一致する、または最も距離が近いデータのアドレスを検索結果として出力する第１および第２の直交連想記憶手段を含み、
前記プロセッサはさらに、前記第１の直交連想記憶手段から読み出された垂直方向のデータと前記第２の直交連想記憶手段から読み出された垂直方向のデータとを選択的に前記演算手段に出力する選択手段を含み、
前記第１の直交連想記憶手段から出力される検索結果が、該第１の直交連想記憶手段にアドレスとして入力される、請求項１記載のプロセッサ。
【請求項４】
前記直交処理手段は、外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出す第１および第２の直交記憶手段と、
検索データと一致する、または最も距離が近いデータのアドレスを検索結果として出力する第１および第２の連想記憶手段とを含み、
前記プロセッサはさらに、前記第１の直交記憶手段から読み出された垂直方向のデータと前記第２の直交記憶手段から読み出された垂直方向のデータとを選択的に前記演算手段に出力する選択手段を含み、
前記第１の直交記憶手段または前記第２の直交記憶手段から読み出された水平方向のデータが、前記第１の連想記憶手段に検索データとして入力され、
前記第１の連想記憶手段から出力された検索結果が、前記第２の連想記憶手段にアドレスとして入力される、請求項１記載のプロセッサ。
【請求項５】
前記直交処理手段は、外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出す第１および第２の直交記憶手段と、
検索データと一致する、または最も距離が近いデータのアドレスを検索結果として出力する第１および第２の連想記憶手段とを含み、
前記プロセッサはさらに、前記第１の直交記憶手段から読み出された垂直方向のデータと前記第２の直交記憶手段から読み出された垂直方向のデータとを選択的に前記演算手段に出力する選択手段を含み、
前記第１の直交記憶手段または前記第２の直交記憶手段から読み出された水平方向のデータが、前記第１の連想記憶手段に検索データとして入力され、
前記第１の連想記憶手段から出力された検索結果が、前記第２の直交記憶手段に水平方向のデータとして入力される、請求項１記載のプロセッサ。
【請求項６】
前記直交処理手段は、外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出す第１および第２の直交記憶手段と、
検索データと一致する、または最も距離が近いデータのアドレスを検索結果として出力する第１および第２の連想記憶手段とを含み、
前記プロセッサはさらに、前記第１の直交記憶手段から読み出された垂直方向のデータと前記第２の直交記憶手段から読み出された垂直方向のデータとを選択的に前記演算手段に出力する第１の選択手段を含み、
前記第１の直交記憶手段または前記第２の直交記憶手段から読み出された水平方向のデータが、前記第１の連想記憶手段および前記第２の連想記憶手段に検索データとして入力され、
前記第１の連想記憶手段から出力された検索結果および前記第２の連想記憶手段から出力された検索結果がマージされて、前記第２の直交記憶手段に水平方向のデータとして入力される、請求項１記載のプロセッサ。
【請求項７】
前記第１の直交記憶手段および前記第２の直交記憶手段は、それぞれ２つのバンクを含み、
前記プロセッサはさらに、前記第１の直交記憶手段の２つのバンクの水平方向のデータを選択的に前記第１の連想記憶手段および前記第２の連想記憶手段に検索データとして出力する第２の選択手段と、
前記第１の連想記憶手段から出力された検索結果および前記第２の連想記憶手段から出力された検索結果がマージされたデータを、前記第２の直交記憶手段の２つのバンクに選択的に出力する第３の選択手段とを含む、請求項６記載のプロセッサ。
【請求項８】
前記直交処理手段は、外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出し、検索データと一致する、または最も距離が近いデータのアドレスを検索結果として出力する第１および第２の直交連想記憶手段と、
データを水平方向に書き込み、書き込まれたデータを水平方向に読み出す第１および第２の記憶手段とを含み、
前記プロセッサはさらに、前記第１の直交連想記憶手段から読み出された垂直方向のデータと前記第２の直交連想記憶手段から読み出された垂直方向のデータとを選択的に前記演算手段に出力する選択手段を含み、
前記第１の直交連想記憶手段から出力された検索結果が、前記第１の記憶手段にアドレスとして入力され、
前記第２の直交連想記憶手段から出力された検索結果が、前記第２の記憶手段にアドレスとして入力される、請求項１記載のプロセッサ。
【請求項９】
前記直交処理手段は、外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出し、検索データと一致する、または最も距離が近いデータのアドレスを検索結果として出力する第１および第２の直交連想記憶手段と、
検索データと一致する、または最も距離が近いデータのアドレスを検索結果として出力する第１および第２の連想記憶手段とを含み、
前記プロセッサはさらに、前記第１の直交連想記憶手段から読み出された垂直方向のデータと前記第２の直交連想記憶手段から読み出された垂直方向のデータとを選択的に前記演算手段に出力する選択手段を含み、
前記第１の直交連想記憶手段から出力された水平方向のデータが、前記第１の連想記憶手段および前記第２の連想記憶手段に検索データとして入力され、
前記第２の直交連想記憶手段から出力された水平方向のデータが、前記第１の連想記憶手段および前記第２の連想記憶手段に検索データとして入力される、請求項１記載のプロセッサ。
【請求項１０】
前記直交処理手段は、外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出す第１および第２の直交記憶手段と、
データを水平方向に書き込み、書き込まれたデータを垂直方向に読み出し、検索データと一致する、または最も距離が近いデータのアドレスを検索結果として出力する第１および第２の直交連想記憶手段とを含み、
前記プロセッサはさらに、前記第１の直交記憶手段から読み出された垂直方向のデータと前記第２の直交記憶手段から読み出された垂直方向のデータとを選択的に前記演算手段に出力する選択手段を含み、
前記第１の直交記憶手段から出力された水平方向のデータが、前記第１の直交連想記憶手段および前記第２の直交連想記憶手段に検索データとして入力され、
前記第２の直交記憶手段から出力された水平方向のデータが、前記第１の直交連想記憶手段および前記第２の直交連想記憶手段に検索データとして入力される、請求項１記載のプロセッサ。
【請求項１１】
前記プロセッサはさらに、前記第１の直交記憶手段から読み出された水平方向のデータに演算を行ない、演算結果を前記第１の直交記憶手段に書き込む水平演算手段を含む、請求項２，４，５，６，７または１０記載のプロセッサ。
【請求項１２】
前記プロセッサはさらに、前記第１の直交記憶手段および前記第２の直交記憶手段から読み出された水平方向のデータに演算を行ない、演算結果を前記第１の直交記憶手段または前記第２の直交記憶手段に書き込む水平演算手段を含む、請求項２，４，５，６，７または１０記載のプロセッサ。
【請求項１３】
前記プロセッサはさらに、前記第１の直交連想記憶手段から読み出された水平方向のデータに演算を行ない、演算結果を前記第１の直交連想記憶手段に書き込む水平演算手段を含む、請求項３，８または９記載のプロセッサ。
【請求項１４】
前記プロセッサはさらに、前記第１の直交連想記憶手段および前記第２の直交連想記憶手段から読み出された水平方向のデータに演算を行ない、演算結果を前記第１の直交連想記憶手段または前記第２の直交連想記憶手段に書き込む水平演算手段を含む、請求項３，８または９記載のプロセッサ。
【請求項１５】
各ワードを逐次処理する単一命令複数データ方式の演算手段と、
外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出し、検索データと一致する、または最も距離が近いデータのアドレスを検索結果として出力する第１および第２の直交連想記憶手段とを含んだプロセッサを用いたテーブル変換方法であって、
前記演算手段から出力される垂直方向のデータを前記第１の直交連想記憶手段に書き込ませるステップと、
前記第１の直交連想記憶手段に書き込まれたデータを水平方向のデータとして読み出させ、前記第２の直交連想記憶手段に検索データとして入力させるステップと、
前記第２の直交連想記憶手段から出力された検索結果を前記第２の直交連想記憶手段にアドレスとして入力させるステップと、
前記第２の直交連想記憶手段から読み出された水平方向のデータを外部に出力させるステップとを含む、テーブル変換方法。
【請求項１６】
各ワードを逐次処理する単一命令複数データ方式の演算手段と、
外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出す第１および第２の直交記憶手段と、
検索データと一致する、または最も距離が近いデータのアドレスを検索結果として出力する第１および第２の連想記憶手段とを含んだプロセッサを用いたテーブル変換方法であって、
前記演算手段から出力される垂直方向のデータを前記第１の直交記憶手段に書き込ませるステップと、
前記第１の直交記憶手段に書き込まれたデータを水平方向のデータとして読み出させ、前記第１の連想記憶手段に検索データとして入力させるステップと、
前記第１の連想記憶手段から出力された検索結果を前記第２の連想記憶手段にアドレスとして入力させるステップと、
前記第２の連想記憶手段から読み出された水平方向のデータを外部に出力させるステップと、
前記第１の連想記憶手段に検索データとして入力させるステップと並行して、前記演算手段から出力される垂直方向のデータを前記第２の直交記憶手段に書き込ませるステップと、
前記第２の直交記憶手段に書き込まれたデータを水平方向のデータとして読み出させ、前記第１の連想記憶手段に検索データとして入力させるステップとを含む、テーブル変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビットシリアル型ＳＩＭＤ（Single Instruction Multiple Data：単一命令複数データ）マシンを用いたプロセッサに関し、特に、処理すべきデータを直交変換してＳＩＭＤマシンに与えるプロセッサおよびそれを用いたテーブル変換方法に関する。
【背景技術】
【０００２】
近年、デジタルカメラ、デジタルビデオ、ビデオ会議、携帯電話などの普及に伴い、音声、静止画像、動画などのマルチメディアアプリケーションをリアルタイムに処理するニーズが高まっている。特に、モバイル機器においては、高速処理のみならず、その携帯性から長時間駆動が可能であること、および小型であることが求められるようになってきている。
【０００３】
このような背景があるため、マルチメディアアプリケーションを処理するＬＳＩ（Large Scale Integrated circuit）は、高速処理が可能であり、低消費電力および小面積であることが必須条件とされている。そのため、ＤＳＰ（Digital Signal Processor）をはじめ、固有の処理に特化したＡＳＩＣ（Application Specific Integrated Circuit）が利用されている。
【０００４】
一般に、マルチメディアアプリケーションは、処理されるデータ間の相互依存が少ないという特徴を有し、並列処理によって処理効率を向上させることが可能である。たとえば、画像圧縮技術の１つであるＪＰＥＧ（Joint Photographic Expert Group）においては、圧縮対象画像の全ピクセルを８×８画素のブロックに区切り、これらのブロックを並列に処理することが可能である。このような並列可能な処理には、離散コサイン変換（ＤＣＴ：Discrete Cosine Transform）、量子化、ジグザクスキャン、ランレングス処理などがある。
【０００５】
ＤＳＰ、ＡＳＩＣなどのＬＳＩにおいては、これらのブロックを並列に処理するために、ＳＩＭＤというアーキテクチャを採用することが多い。ＳＩＭＤは、複数の演算器（ＰＥ：Processing Element）を内部に持ち、これらのＰＥに対して同一の命令を送り、複数の異なるデータを同じタイミングで並列に処理するアーキテクチャである。
【０００６】
しかしながら、マルチメディアアプリケーションに含まれるアルゴリズムの中には、処理ビット幅が随時変化する、各データの逐次処理が必要となる、などのＳＩＭＤアーキテクチャには適さない処理があり、これらを効率的に処理することが、音声、静止画像、動画などの処理の効率化に対する市場のニーズを満たすことになる。これに関連する技術として、下記の特許文献１に開示された発明がある。
【０００７】
特許文献１に開示された画像処理装置は、ＳＩＭＤ型演算手段を利用して、ＪＰＥＧ方式のハフマン符号化のような逐次的な処理を含む画像処理を高速に行なう手段を提供することを目的とし、複数の並列に動作する要素プロセッサ夫々に複数の画素からなる画像信号の符号化を行なわせる手段と、得られた符号語を連続したビット列に結合する手段とを有するものである。
【特許文献１】特開２００４−１０４６７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
一般に、ＳＩＭＤアーキテクチャとして、後述するように各ワードを幾つかのブロックに分けて並列に処理する方式（以下、ビットパラレル方式と呼ぶ。）と、全てのワードを逐次処理する方式（以下、ビットシリアル方式と呼ぶ。）との２つの方式を挙げることができる。
【０００９】
マルチメディアアプリケーション処理は、主に処理ビット幅が可変であり、処理ワード数が非常に多いという特徴がある。そのため、後述のようにビットシリアル方式がマルチメディアアプリケーションを効率よく処理するアーキテクチャと考えられている。
【００１０】
しかしながら、上述した特許文献１に開示された画像処理装置は、複数の並列に動作する要素プロセッサ夫々に複数の画素からなる画像信号の符号化を行なわせるものである。そのため、ビットパラレル方式に適用することはできるが、ビットシリアル方式に適用することはできない。
【００１１】
本発明は、上記問題点を解決するためになされたものであり，その目的は、ＳＩＭＤマシンを用いつつ高速処理を可能としたプロセッサを提供することである。
【００１２】
他の目的は、ＳＩＭＤマシンを用いつつテーブル変換処理を高速に行なうことが可能なテーブル変換方法を提供することである。
【課題を解決するための手段】
【００１３】
本発明のある局面に従えば、プロセッサは、各ワードを逐次処理する単一命令複数データ方式の演算手段と、外部から入力されたデータを直交変換して演算手段に出力する直交処理手段とを含む。
【００１４】
本発明の別の局面に従えば、各ワードを逐次処理する単一命令複数データ方式の演算手段と、外部から入力されたデータを水平方向に書き込み、書き込まれたデータを垂直方向に読み出す第１および第２の直交記憶手段とを含んだプロセッサを用いたテーブル変換方法であって、演算手段から出力される垂直方向のデータを第１の直交記憶手段に書き込ませるステップと、第１の直交記憶手段に書き込まれたデータを水平方向のデータとして読み出させ、第２の直交記憶手段に検索データとして入力させるステップと、第２の直交記憶手段から出力された検索結果を第２の直交記憶手段にアドレスとして入力させるステップと、第２の直交記憶手段から読み出された水平方向のデータを外部に出力させるステップとを含む。
【発明の効果】
【００１５】
本発明のある局面によれば、直交処理手段が、外部から入力されたデータを直交変換して演算手段に出力するので、高速に演算を行なうことが可能となる。
【００１６】
本発明の別の局面によれば、第１の直交記憶手段に書き込まれた垂直方向のデータを水平方向のデータとして読み出させ、第２の直交記憶手段に検索データとして入力させ、第２の直交記憶手段から出力された検索結果を第２の直交記憶手段にアドレスとして入力してデータを読み出させるので、テーブル変換処理を高速に行なうことが可能となる。
【発明を実施するための最良の形態】
【００１７】
まず、ＳＩＭＤアーキテクチャのデータ処理方式であるビットパラレル方式およびビットシリアル方式について簡単に説明する。
【００１８】
図１は、ビットパラレル方式のＳＩＭＤマシンの一例を示す図である。このＳＩＭＤマシンは、複数のＰＥｓ１００−０〜１００−（ｂ−１）を含む。それぞれのＰＥｓは、１ワードのビット長ｄにあわせた複数のＰＥを有しており、１ワードを１クロックサイクル程度で処理することが可能である。
【００１９】
ＰＥｓ１００−０〜１００−（ｂ−１）はｂ個のブロックに対応するため、一度にブロック個数（ｂ）分のワードを処理することが可能である。図１に示すように、処理ビット幅が一定であるため、アプリケーションによっては演算に使用しないＰＥが生じることになる。
【００２０】
また、１ワードのビット長が大きいほど、１ブロックに必要なＰＥの個数が増加し、並列度を上げるためにはより多くのハードウェアリソースを必要とする。図１に示すように、１ワードを１クロックサイクルで処理する場合、全てのワードを処理するためにはａクロックサイクルが必要となる。また、必要なＰＥの個数はｄ×ｂ個となる。
【００２１】
図２は、ビットシリアル方式のＳＩＭＤマシンの一例を示す図である。このＳＩＭＤマシンは、複数のＰＥ１１０−００〜１１０−（ｂ−１）（ａ−１）を含む。１ワードに対して１〜２ビット長のＰＥを用意するため、１ワードをほぼビット長と同程度のクロックサイクルで処理することが可能である。
【００２２】
図２に示すように、１回の処理でワード個数（ａ×ｂ）分の並列処理が可能である。処理ビット幅が可変であるため、アプリケーションにあわせてＰＥを有効に利用することが可能である。
【００２３】
また、１ワードに必要なＰＥの個数が少ないため、並列度を上げた場合でもハードウェアリソースをそれほど消費しない。その反面、データの処理方向を変える必要がある。図２に示すように、全てのワードを処理するためにはｄクロックサイクルが必要となる。また、必要なＰＥの個数はａ×ｂ個となる。
【００２４】
マルチメディアアプリケーション処理は、主に処理ビット幅が可変であり、処理ワード数が非常に多いという特徴があり、高速に処理するためには極力ｂを大きくし、ａを小さくすることが理想である。すなわち、ａ≪ｄ≪ｂの関係が成り立てばよく、これまでビットシリアル方式はマルチメディアアプリケーションを効率よく処理するアーキテクチャであると考えられてきた。
【００２５】
しかしながら、一般に処理されるデータは３２ビット長程度の複数ビットを１ワードとして扱われることが多く、ＳＲＡＭ（Static Random Access Memory）、ＤＳＰ、ＡＳＩＣなども３２ビット単位でデータが入出力されることが多い（以下、このデータ取扱い方向を水平方向と呼ぶ。）。ビットシリアル方式においては、データを１ビット単位で処理しなければならないため、データの入出力方向を水平方向から垂直方向に曲げなくてはならない（以下、このデータ取扱い方向を垂直方向と呼ぶ。）。
【００２６】
また、ビットパラレル方式およびビットシリアル方式のいずれにおいても、ワードを順番に処理しなければならないアルゴリズムに対しては、その有効性を発揮することができない。そのため、ＪＰＥＧアルゴリズムにおけるハフマン符号化のような単純なデータのテーブル変換は、ＪＰＥＧにおいて負荷が大きな処理であるにもかかわらず、高速に処理することができない。
【００２７】
以下に示す本発明の実施の形態におけるインタフェース直交処理部は、マルチメディアアプリケーションを効率よく処理するアーキテクチャであるビットシリアル型ＳＩＭＤマシンに対して、効果的に直交変換を行いつつ、ＳＩＭＤアーキテクチャの不得手とするハフマン符号化などのテーブル変換を同時に処理するものである。
【００２８】
（第１の実施の形態）
図３は、本発明の第１の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサは、ビットシリアル型ＳＩＭＤマシン（以下、単にＳＩＭＤマシンと呼ぶ。）１と、インタフェース直交処理部２と、セレクタ４１および４２とを含む。また、インタフェース直交処理部２は、直交ＳＲＡＭ０（２１）と、直交ＳＲＡＭ１（２２）とを含む。
【００２９】
直交ＳＲＡＭ０（２１）および直交ＳＲＡＭ１（２２）は、水平方向の入力データ（以下、水平入力と呼ぶ。）を受け、指定されたアドレスに書き込む機能と、指定されたアドレスからデータを読み出し、水平方向の出力データ（以下、水平出力と呼ぶ。）として出力する機能とを有する。
【００３０】
また、直交ＳＲＡＭ０（２１）および直交ＳＲＡＭ１（２２）は、垂直方向の入力データ（以下、垂直入力と呼ぶ。）を受け、指定されたアドレスに書き込む機能と、指定されたアドレスからデータを読み出し、垂直方向の出力データ（以下、垂直出力と呼ぶ。）として出力する機能とを有する。
【００３１】
インタフェース直交処理部２は、外部から送信される複数ビット単位のデータである水平入力を受け、直交変換を行ないつつＳＩＭＤマシン１に転送する。その方法は、以下のとおりである。
【００３２】
インタフェース直交処理部２は、外部からの水平入力を２つの直交ＳＲＡＭのいずれかのメモリ領域に順次格納してゆき、一杯になるまで格納する。これと並行して、インタフェース直交処理部２は、他方の直交ＳＲＡＭのメモリに格納されているデータを順次読み出し、垂直出力としてＳＩＭＤマシン１に送信することにより、直交変換を行なう。
【００３３】
また、インタフェース直交処理部２は、ＳＩＭＤマシン１からの垂直入力を２つの直交ＳＲＡＭのいずれかのメモリ領域に順次格納してゆき、一杯になるまで格納する。これと並行して、インタフェース直交処理部２は、他方の直交ＳＲＡＭのメモリ領域に格納されているデータを順次読み出し、水平出力として外部に送信することにより、直交変換を行なう。
【００３４】
また、インタフェース直交処理部２は、ＳＩＭＤマシン１からの垂直入力を２つの直交ＳＲＡＭのいずれかのメモリ領域に順次格納する。そして、インタフェース直交処理部２は、一杯になった直交ＳＲＡＭのメモリ領域に格納されるデータを読み出し、垂直出力としてＳＩＭＤマシン１に再度転送することも可能である。
【００３５】
セレクタ４１は、直交ＳＲＡＭ０（２１）からの垂直出力と直交ＳＲＡＭ１（２２）からの垂直出力とを選択的に切替え、ＳＩＭＤマシン１に出力する。
【００３６】
セレクタ４２は、ＳＩＭＤマシン１からの垂直入力を直交ＳＲＡＭ０（２１）または直交ＳＲＡＭ１（２２）に選択的に出力する。
【００３７】
たとえば、外部からの水平入力が直交ＳＲＡＭ０（２１）のメモリ領域に順次格納され、これと並行して直交ＳＲＡＭ１（２２）のメモリ領域に格納されているデータが垂直出力として読み出され、セレクタ４１を介してＳＩＭＤマシン１に転送される。ＳＩＭＤマシン１による演算結果は、セレクタ４２を介して直交ＳＲＡＭ１（２２）に順次書き込まれる。
【００３８】
このように、インタフェース直交処理部２内に直交ＳＲＡＭを２つ設けてインターリーブ動作をさせることにより、外部からの水平入力を直交ＳＲＡＭに書き込む時間を相殺し、データの入出力を連続して行なうことが可能となる。
【００３９】
図４は、直交ＳＲＡＭの内部構成の一例を示すブロック図である。この直交ＳＲＡＭは、ＳＲＡＭセルアレー２０１と、水平アドレスデコーダ２０２と、垂直アドレスデコーダ２０３と、センスアンプ２０４および２０６と、ライトドライバ２０５および２０７とを含む。
【００４０】
水平アドレスデコーダ２０２は、水平方向イネーブル信号がアクティブになると、アドレスをデコードしてＳＲＡＭセルアレー２０１のセルを選択する。このとき、水平リードイネーブル信号がアクティブであれば、水平アドレスデコーダ２０２によって選択されたセルのデータがセンスアンプ２０４を介して水平出力として出力される。また、水平ライトイネーブル信号がアクティブであれば、ライトドライバ２０５は水平入力として受けたデータを、水平アドレスデコーダ２０２によって選択されたセルに書き込む。
【００４１】
垂直アドレスデコーダ２０３は、垂直方向イネーブル信号がアクティブになると、アドレスをデコードしてＳＲＡＭセルアレー２０１のセルを選択する。このとき、垂直リードイネーブル信号がアクティブであれば、垂直アドレスデコーダ２０３によって選択されたセルのデータがセンスアンプ２０６を介して垂直出力として出力される。また、垂直ライトイネーブル信号がアクティブであれば、ライトドライバ２０７は垂直入力として受けたデータを、垂直アドレスデコーダ２０３によって選択されたセルに書き込む。
【００４２】
以上説明したように、本実施の形態におけるプロセッサによれば、インタフェース直交処理部２が水平入力を直交変換し、垂直出力としてＳＩＭＤマシン１に与えるようにしたので、ＳＩＭＤマシン１は高速に処理を行なうことが可能となった。
【００４３】
また、インタフェース直交処理部２内に直交ＳＲＡＭを２つ設け、一方の直交ＳＲＡＭに水平入力としてデータが格納されているときに、他方の直交ＳＲＡＭに格納されているデータを垂直出力としてＳＩＭＤマシン１に与えるようにしたので、データの入出力を連続して行なえ、ＳＩＭＤマシン１は高速に処理を行なうことが可能となった。
【００４４】
（第２の実施の形態）
図５は、本発明の第２の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサは、ＳＩＭＤマシン１と、インタフェース直交処理部３と、セレクタ４３〜４８とを含む。また、インタフェース直交処理部３は、直交ＣＡＭ（Content Addressable Memory）０（２３）と、直交ＣＡＭ１（２４）とを含む。
【００４５】
なお、本実施の形態およびそれ以降の第３〜第１０の実施の形態においては、連想メモリの一例としてＣＡＭおよび／または直交ＣＡＭを用いた場合について説明するが、３値ＣＡＭ（Ternary Content Addressable Memory：ＴＣＡＭ）、最小距離（ハミング距離、マンハッタン距離、ユークリッド距離）検索連想メモリなどのＡＭ（Associative Memory）や、これらのメモリに直交変換機能を与えた直交ＡＭを用いた場合でも同様の効果が得られる。
【００４６】
直交ＣＡＭ０（２３）および直交ＣＡＭ１（２４）は、水平入力を受け、指定されたアドレスに書き込む機能と、指定されたアドレスからデータを読み出し、水平出力として出力する機能とを有する。
【００４７】
また、直交ＣＡＭ０（２３）および直交ＣＡＭ１（２４）は、垂直入力を受け、指定されたアドレスに書き込む機能と、指定されたアドレスからデータを読み出し、垂直出力として出力する機能とを有する。
【００４８】
また、直交ＣＡＭ０（２３）および直交ＣＡＭ１（２４）は、検索データ入力を受け、そのデータとメモリセルに格納されているデータとの一致検索処理を行ない、一致するデータが格納されるメモリセルのアドレスを検索結果出力として出力する。
【００４９】
インタフェース直交処理部３は、第１の実施の形態において説明したインタフェース直交処理部２と同様の方法により、直交変換を行ないつつ外部とＳＩＭＤマシン１との間でデータ転送を行なうことが可能である。
【００５０】
セレクタ４３は、直交ＣＡＭ０（２３）からの垂直出力と直交ＣＡＭ１（２４）からの垂直出力とを選択的に切替え、ＳＩＭＤマシン１に出力する。
【００５１】
セレクタ４４は、ＳＩＭＤマシン１からの垂直入力を直交ＣＡＭ０（２３）または直交ＣＡＭ１（２４）に選択的に出力する。
【００５２】
セレクタ４５は、外部からのアドレスと直交ＣＡＭ０（２３）からの検索結果出力とを選択的に切替え、直交ＣＡＭ０（２３）にアドレスとして出力する。
【００５３】
セレクタ４６は、外部からの検索データ入力と直交ＣＡＭ１（２４）からの水平出力とを選択的に切替え、直交ＣＡＭ０（２３）に検索データとして出力する。
【００５４】
セレクタ４７は、外部からのアドレスと直交ＣＡＭ１（２４）からの検索結果出力とを選択的に切替え、直交ＣＡＭ１（２４）にアドレスとして出力する。
【００５５】
セレクタ４８は、外部からの検索データ入力と直交ＣＡＭ０（２３）からの水平出力とを選択的に切替え、直交ＣＡＭ１（２４）に検索データとして出力する。
【００５６】
図６は、直交ＣＡＭの内部構成の一例を示すブロック図である。この直交ＣＡＭは、ＣＡＭセルアレー３０１と、水平アドレスデコーダ３０２と、垂直アドレスデコーダ３０３と、センスアンプ３０４と、サーチラインドライバ３０５と、ライトドライバ３０６および３０８と、マッチアンプ３０７とを含む。
【００５７】
水平アドレスデコーダ３０２は、水平方向イネーブル信号がアクティブになると、アドレスをデコードしてＣＡＭセルアレー３０１のセルを選択する。このとき、水平リードイネーブル信号がアクティブであれば、水平アドレスデコーダ３０２によって選択されたセルのデータがセンスアンプ３０４を介して水平出力として出力される。また、水平ライトイネーブル信号がアクティブであれば、ライトドライバ３０６は水平入力として受けたデータを、水平アドレスデコーダ３０２によって選択されたセルに書き込む。
【００５８】
垂直アドレスデコーダ３０３は、垂直方向イネーブル信号がアクティブになると、アドレスをデコードしてＣＡＭセルアレー３０１のセルを選択する。このとき、垂直リードイネーブル信号がアクティブであれば、垂直アドレスデコーダ３０３によって選択されたセルのデータがマッチアンプ３０７を介して垂直出力として出力される。また、垂直ライトイネーブル信号がアクティブであれば、ライトドライバ３０８は垂直入力として受けたデータを、垂直アドレスデコーダ３０３によって選択されたセルに書き込む。
【００５９】
サーチラインドライバ３０５は、サーチイネーブル信号がアクティブになると、検索データ入力をＣＡＭセルアレー３０１に出力して一致検索を行なう。マッチアンプ３０７は、ＣＡＭセルアレー３０１内の一致するデータを示す信号を受け、その信号をエンコードして検索結果出力として出力する。
【００６０】
図７は、本発明の第２の実施の形態におけるプロセッサによってハフマン符号化を行なうときの処理を示す図である。図７に示す（１）〜（４）に従って、ハフマン符号化の処理手順を説明する。なお、このハフマン符号化処理は、２段パイプライン処理となる。
【００６１】
（１）まず、直交ＣＡＭ０（２３）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【００６２】
（２）次に、直交ＣＡＭ０（２３）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次直交ＣＡＭ１（２４）に検索データとして与えられる。
【００６３】
（３）直交ＣＡＭ１（２４）には、予め各エントリにハフマンコードおよび符号化後のデータが格納されており、検索時には符号化後のデータをマスクした状態で一致検索処理が行なわれる。これによって、検索データと一致するハフマンコードが順次検索され、検索結果が直交ＣＡＭ１（２４）にアドレスとして出力される。
【００６４】
（４）直交ＣＡＭ１（２４）は、検索結果を水平方向のアドレスとして受け、そのアドレスに対応する符号化後のデータを読み出して水平出力として外部に出力することによって、ハフマン符号化処理が順次行なわれる。
【００６５】
なお、本実施の形態においては、ハフマン符号化処理の場合について説明したが、他のテーブル変換処理などにも適用可能である。
【００６６】
以上説明したように、本実施の形態におけるプロセッサによれば、インタフェース直交処理部３内に直交ＣＡＭを２つ設け、一方の直交ＣＡＭによって直交変換を行ない、他方の直交ＣＡＭによって一致検索処理を行なうようにしたので、ＳＩＭＤマシン１のボトルネックであるハフマン符号化などのテーブル変換処理を効率的に行なうことが可能となった。
【００６７】
（第３の実施の形態）
図８は、本発明の第３の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサは、ＳＩＭＤマシン１と、インタフェース直交処理部４と、セレクタ５１〜５８とを含む。また、インタフェース直交処理部４は、直交ＳＲＡＭ０（２１）と、直交ＳＲＡＭ１（２２）と、ＣＡＭ０（２５）と、ＣＡＭ１（２６）とを含む。
【００６８】
ＣＡＭ０（２５）およびＣＡＭ１（２６）は、水平入力を受け、指定されたアドレスに書き込む機能と、指定されたアドレスからデータを読み出し、水平出力として出力する機能とを有する。
【００６９】
また、ＣＡＭ０（２５）およびＣＡＭ１（２６）は、検索データ入力を受け、そのデータとメモリセルに格納されているデータとの一致検索処理を行ない、一致するデータが格納されるメモリセルのアドレスを検索結果出力として出力する。
【００７０】
インタフェース直交処理部４は、第１の実施の形態において説明したインタフェース直交処理部２と同様の方法により、直交変換を行ないつつ外部とＳＩＭＤマシン１との間でデータ転送を行なうことが可能である。
【００７１】
セレクタ５１は、直交ＳＲＡＭ０（２１）からの垂直出力と直交ＳＲＡＭ１（２２）からの垂直出力とを選択的に切替え、ＳＩＭＤマシン１に出力する。
【００７２】
セレクタ５２は、ＳＩＭＤマシン１からの垂直入力を直交ＳＲＡＭ０（２１）または直交ＳＲＡＭ１（２２）に選択的に出力する。
【００７３】
セレクタ５３は、外部からのアドレスとＣＡＭ１（２６）からの検索結果出力とを選択的に切替え、ＣＡＭ０（２５）にアドレスとして出力する。
【００７４】
セレクタ５４は、外部からの検索データ入力と、セレクタ５５からの水平出力と、セレクタ５８からの水平出力とを選択的に切替え、ＣＡＭ０（２５）に検索データとして出力する。
【００７５】
セレクタ５５は、直交ＳＲＡＭ０（２１）からの水平出力とＣＡＭ０（２５）からの水平出力とを選択的に切替え、外部、セレクタ５４またはセレクタ５７に出力する。
【００７６】
セレクタ５６は、外部からのアドレスとＣＡＭ０（２５）からの検索結果出力とを選択的に切替え、ＣＡＭ１（２６）にアドレスとして出力する。
【００７７】
セレクタ５７は、外部からの検索データ入力と、セレクタ５５からの水平出力と、セレクタ５８からの水平出力とを選択的に切替え、ＣＡＭ１（２６）に検索データとして出力する。
【００７８】
セレクタ５８は、直交ＳＲＡＭ１（２２）からの水平出力とＣＡＭ１（２６）からの水平出力とを選択的に切替え、外部、セレクタ５４またはセレクタ５７に出力する。
【００７９】
図９は、本発明の第３の実施の形態におけるプロセッサによってハフマン符号化を行なうときの処理を示す図である。図９に示す（１）〜（６）に従って、ハフマン符号化の処理手順を説明する。なお、このハフマン符号化処理は、２つの直交ＳＲＡＭをインターリーブ動作させることにより行われる。
【００８０】
（１）まず、直交ＳＲＡＭ０（２１）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【００８１】
（２）次に、直交ＳＲＡＭ０（２１）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次ＣＡＭ０（２５）に検索データとして与えられる。
【００８２】
（３）ＣＡＭ０（２５）には、予め各エントリにハフマンコードが格納されており、検索データと一致するハフマンコードが順次検索され、検索結果がＣＡＭ１（２６）にアドレスとして出力される。
【００８３】
（４）ＣＡＭ１（２６）には、予め各エントリに符号化後のデータが格納されている。この符号化後のデータは、ＣＡＭ０（２５）に格納されるハフマンコードと対応付けて格納されており、同じアドレスにハフマンコードに対応する符号化後のデータが格納されている。ＣＡＭ１（２６）は、検索結果を水平方向のアドレスとして受け、そのアドレスに対応する符号化後のデータを読み出して水平出力として外部に出力する。
【００８４】
（５）また、直交ＳＲＡＭ０（２１）から水平方向に読み出されたデータが検索データとしてＣＡＭ０（２５）に与えられるのと並行して、直交ＳＲＡＭ１（２２）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【００８５】
（６）そして、直交ＳＲＡＭ１（２２）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次ＣＡＭ０（２５）に検索データとして与えられ、上記（３）〜（４）と同様の処理が行なわれることによって、ハフマン符号化処理が順次行なわれる。
【００８６】
以上説明したように、本実施の形態におけるプロセッサによれば、直交ＳＲＡＭによって直交変換を行ない、ＣＡＭによって一致検索処理を行なうようにしたので、ＳＩＭＤマシン１のボトルネックであるハフマン符号化などのテーブル変換処理を効率的に行なうことが可能となった。
【００８７】
また、インタフェース直交処理部４内に２つの直交ＳＲＡＭを設け、一方の直交ＳＲＡＭに垂直入力としてデータが格納されているときに、他方の直交ＳＲＡＭに格納されているデータを水平出力としてＣＡＭに与えて一致検索処理を行なうようにしたので、データの入出力を連続して行なえ、ＳＩＭＤマシン１は高速にテーブル変換処理を行なうことが可能となった。
【００８８】
（第４の実施の形態）
図１０は、本発明の第４の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサ内のインタフェース直交処理部５は、図８に示す第３の実施の形態におけるプロセッサ内のインタフェース直交処理部４と比較して、セレクタ５９が追加されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００８９】
なお、第３の実施の形態におけるプロセッサは、ハフマン符号化処理のように検索結果を外部に出力するものであったが、本実施の形態におけるプロセッサはアルゴリズムの途中に一致検索処理を行ない、検索結果をＳＩＭＤマシン１にフィードバックするものである。
【００９０】
セレクタ５９は、外部からの水平入力とＣＡＭ０（２５）からの検索結果出力とを選択的に切替え、直交ＳＲＡＭ１（２２）に出力する。
【００９１】
図１１は、本発明の第４の実施の形態におけるプロセッサによって一致検索処理を行なうときの処理を示す図である。図１１に示す（１）〜（４）に従って、一致検索の処理手順を説明する。
【００９２】
（１）まず、直交ＳＲＡＭ０（２１）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【００９３】
（２）次に、直交ＳＲＡＭ０（２１）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次ＣＡＭ０（２５）に検索データとして与えられる。
【００９４】
（３）ＣＡＭ０（２５）には、予め各エントリにデータが格納されており、検索データと一致するデータが順次検索され、検索結果が水平入力として直交ＳＲＡＭ１（２２）に出力される。直交ＳＲＡＭ１（２２）の全アドレスにデータが書き込まれるまで、この処理が繰返される。
【００９５】
（４）ＳＩＭＤマシン１は、直交ＳＲＡＭ１（２２）からの垂直出力を受け、１ビット毎データに対して順次演算処理を行なう。
【００９６】
以上の説明においては、ＣＡＭが一致検索処理を行なうとして説明したが、単なるメモリとして動作させてもよい。
【００９７】
以上説明したように、本実施の形態におけるプロセッサによれば、ＣＡＭによって一致検索処理を行ない、検索結果を直交ＳＲＡＭを介してＳＩＭＤマシン１にフィードバックするようにしたので、アルゴリズムの途中で一致検索処理を行なうようなマルチメディアアプリケーションに対しても適用することが可能となった。
【００９８】
（第５の実施の形態）
図１２は、本発明の第５の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサ内のインタフェース直交処理部６は、図１０に示す第４の実施の形態におけるプロセッサ内のインタフェース直交処理部５と比較して、ＣＡＭ０（２５）による検索結果とＣＡＭ１（２６）による検索結果とがマージされてセレクタ５９に与えられる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００９９】
なお、第４の実施の形態においては、ＣＡＭ０（２５）のみが一致検索処理に使用され、ＣＡＭ１（２６）が使用されなかった。本実施の形態においては、ＣＡＭ０（２５）とＣＡＭ１（２６）とを並列に動作させて一致検索処理を行ない、より高いスループットを実現するものである。
【０１００】
図１３は、本発明の第５の実施の形態におけるプロセッサによって一致検索処理を行なうときの処理を示す図である。図１３に示す（１）〜（４）に従って、一致検索の処理手順を説明する。
【０１０１】
（１）まず、直交ＳＲＡＭ０（２１）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【０１０２】
（２）次に、直交ＳＲＡＭ０（２１）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次ＣＡＭ０（２５）およびＣＡＭ１（２６）に検索データとして与えられる。このとき、ＣＡＭ０（２５）およびＣＡＭ２（２６）には個別にマスクが設定されており、直交ＳＲＡＭ０（２１）からのデータの別々の箇所（ビット）が検索されるものとする。
【０１０３】
（３）ＣＡＭ０（２５）およびＣＡＭ１（２６）には、予め各エントリにデータが格納されており、検索データと一致するデータが順次検索され、検索結果が出力される。ＣＡＭ０（２５）およびＣＡＭ１（２６）から出力された検索結果はマージされて直交ＳＲＡＭ１（２２）に与えられる。直交ＳＲＡＭ１（２２）の全アドレスにデータが書き込まれるまで、この処理が繰返される。
【０１０４】
（４）ＳＩＭＤマシン１は、直交ＳＲＡＭ１（２２）からの垂直出力を受け、１ビット毎データに対して順次演算処理を行なう。
【０１０５】
以上説明したように、本実施の形態におけるプロセッサによれば、２つのＣＡＭによって並列に一致検索処理を行ない、検索結果をマージして直交ＳＲＡＭを介してＳＩＭＤマシン１にフィードバックするようにしたので、第４の実施の形態において説明した効果に加えて、さらに高いスループットを実現することが可能となった。
【０１０６】
（第６の実施の形態）
図１４は、本発明の第６の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサ内のインタフェース直交処理部７は、図１２に示す第５の実施の形態におけるプロセッサ内のインタフェース直交処理部６と比較して、直交ＳＲＡＭ０（２１）が２つのバンクの直交ＳＲＡＭ０（２７，２８）に置換され、直交ＳＲＡＭ１（２２）が２つのバンクの直交ＳＲＡＭ１（２９，３０）に置換され、さらにセレクタ５１および５２がセレクタ６１および６２に置換され、セレクタ６３および６４が追加されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【０１０７】
なお、第５の実施の形態においては、直交ＳＲＡＭ０（２１）から読み出されたデータが検索データとしてＣＡＭ０（２５）およびＣＡＭ１（２６）に与えられ、検索結果が順次直交ＳＲＡＭ１（２２）に書き込まれるため、２つの直交ＳＲＡＭのいずれにも外部からの水平入力またはＳＩＭＤマシン１からの垂直入力を書き込むことができず、ＣＡＭによる一致検索処理を連続で行なうことができない。本実施の形態においては、直交ＳＲＡＭを２バンク構成とし、ＣＡＭによる一致検索処理を連続して行なえるようにしたものである。
【０１０８】
セレクタ６１は、バンク１の直交ＳＲＡＭ０（２８）からの垂直出力と２つのバンクの直交ＳＲＡＭ１（２９，３０）からの垂直出力とを選択的に切替え、ＳＩＭＤマシン１に出力する。
【０１０９】
セレクタ６２は、ＳＩＭＤマシン１からの垂直入力をバンク０の直交ＳＲＡＭ０（２７）および２つのバンクの直交ＳＲＡＭ１（２９，３０）のいずれかに選択的に出力する。
【０１１０】
セレクタ６３は、２つのバンクの直交ＳＲＡＭ０（２７，２８）からの水平出力を選択的に切替え、セレクタ５５に出力する。
【０１１１】
セレクタ６４は、外部からの水平入力と、ＣＡＭ０（２５）による検索結果およびＣＡＭ１（２６）による検索結果をマージして得られたデータとを選択的に切替え、２つのバンクの直交ＳＲＡＭ１（２９，３０）に出力する。
【０１１２】
図１５は、本発明の第６の実施の形態におけるプロセッサによって一致検索処理を行なうときの処理を示す図である。図１５に示す（１）〜（６）に従って、一致検索の処理手順を説明する。
【０１１３】
（１）まず、バンク０の直交ＳＲＡＭ０（２７）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【０１１４】
（２）次に、バンク０の直交ＳＲＡＭ０（２７）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次ＣＡＭ０（２５）およびＣＡＭ１（２６）に検索データとして与えられる。このとき、ＣＡＭ０（２５）およびＣＡＭ２（２６）には個別にマスクが設定されており、バンク０の直交ＳＲＡＭ０（２７）からのデータの別々の箇所（ビット）が検索されるものとする。この処理と並行して、バンク１の直交ＳＲＡＭ０（２８）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【０１１５】
（３）ＣＡＭ０（２５）およびＣＡＭ１（２６）には、予め各エントリにデータが格納されており、検索データと一致するデータが順次検索され、検索結果が出力される。ＣＡＭ０（２５）およびＣＡＭ１（２６）から出力された検索結果はマージされてバンク０の直交ＳＲＡＭ１（２９）に与えられる。バンク０の直交ＳＲＡＭ１（２９）の全アドレスにデータが書き込まれるまで、この処理が繰返される。
【０１１６】
（４）ＳＩＭＤマシン１は、バンク０の直交ＳＲＡＭ１（２９）からの垂直出力を受け、１ビット毎データに対して順次演算処理を行なう。この処理と並行して、バンク１の直交ＳＲＡＭ０（２８）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次ＣＡＭ０（２５）およびＣＡＭ１（２６）に検索データとして与えられる。このとき、上記（１）と同様の処理が並行して行なわれる。
【０１１７】
（５）ＣＡＭ０（２５）およびＣＡＭ１（２６）から出力された検索結果はマージされてバンク１の直交ＳＲＡＭ１（３０）に与えられる。バンク１の直交ＳＲＡＭ１（３０）の全アドレスにデータが書き込まれるまで、この処理が繰返される。
【０１１８】
（６）ＳＩＭＤマシン１は、バンク１の直交ＳＲＡＭ１（３０）からの垂直出力を受け、１ビット毎データに対して順次演算処理を行なう。この処理と並行して、バンク０の直交ＳＲＡＭ０（２７）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次ＣＡＭ０（２５）およびＣＡＭ１（２６）に検索データとして与えられる。
【０１１９】
以上説明したように、本実施の形態におけるプロセッサによれば、直交ＳＲＡＭ０および直交ＳＲＡＭ１をそれぞれ２バンク構成とし、一方のバンクの直交ＳＲＡＭ０から検索データが読み出されているときに、他方のバンクの直交ＳＲＡＭ０にＳＩＭＤマシン１からの垂直入力を書き込むようにし、一方のバンクの直交ＳＲＡＭ１に検索結果が書き込まれているときに、他方のバンクの直交ＳＲＡＭ１からの垂直出力をＳＩＤＭマシン１に出力するようにしたので、２つのＣＡＭによる一致検索処理を連続して行なうことが可能となった。
【０１２０】
（第７の実施の形態）
図１６は、本発明の第７の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサは、ＳＩＭＤマシン１と、インタフェース直交処理部８と、セレクタ７１〜７８とを含む。また、インタフェース直交処理部８は、直交ＣＡＭ０（２３）と、直交ＣＡＭ１（２４）と、ＳＲＡＭ０（３１）と、ＳＲＡＭ１（３２）とを含む。
【０１２１】
インタフェース直交処理部８は、第１の実施の形態において説明したインタフェース直交処理部２と同様の方法により、直交変換を行ないつつ外部とＳＩＭＤマシン１との間でデータ転送を行なうことが可能である。
【０１２２】
セレクタ７１は、直交ＣＡＭ０（２３）からの垂直出力と直交ＣＡＭ１（２４）からの垂直出力とを選択的に切替え、ＳＩＭＤマシン１に出力する。
【０１２３】
セレクタ７２は、ＳＩＭＤマシン１からの垂直入力を直交ＣＡＭ０（２３）または直交ＣＡＭ１（２４）に選択的に出力する。
【０１２４】
セレクタ７３は、外部からのアドレスと直交ＣＡＭ０（２３）からの検索結果出力とを選択的に切替え、ＳＲＡＭ０（３１）にアドレスとして出力する。
【０１２５】
セレクタ７４は、外部からの検索データ入力と、セレクタ７８からの水平出力とを選択的に切替え、直交ＣＡＭ０（２３）に検索データとして出力する。
【０１２６】
セレクタ７５は、直交ＣＡＭ０（２３）からの水平出力とＳＲＡＭ０（３１）からのデータ（水平出力）とを選択的に切替え、外部またはセレクタ７７に出力する。
【０１２７】
セレクタ７６は、外部からのアドレスと直交ＣＡＭ１（２４）からの検索結果出力とを選択的に切替え、ＳＲＡＭ１（３２）にアドレスとして出力する。
【０１２８】
セレクタ７７は、外部からの検索データ入力と、セレクタ７５からの水平出力とを選択的に切替え、直交ＣＡＭ１（２４）に検索データとして出力する。
【０１２９】
セレクタ７８は、直交ＣＡＭ１（２４）からの水平出力とＳＲＡＭ１（３２）からのデータ（水平出力）とを選択的に切替え、外部またはセレクタ７４に出力する。
【０１３０】
図１７は、本発明の第７の実施の形態におけるプロセッサによってハフマン符号化を行なうときの処理を示す図である。図１７に示す（１）〜（４）に従って、ハフマン符号化の処理手順を説明する。
【０１３１】
（１）まず、直交ＣＡＭ０（２３）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【０１３２】
（２）次に、直交ＣＡＭ０（２３）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次直交ＣＡＭ１（２４）に検索データとして与えられる。
【０１３３】
（３）直交ＣＡＭ１（２４）には、予め各エントリにハフマンコードが格納されており、検索データと一致するハフマンコードが順次検索され、検索結果がＳＲＡＭ１（３２）にアドレスとして出力される。
【０１３４】
（４）ＳＲＡＭ１（３２）には、予め各エントリに符号化後のデータが格納されている。この符号化後のデータは、直交ＣＡＭ１（２４）に格納されるハフマンコードと対応付けて格納されており、同じアドレスにハフマンコードに対応する符号化後のデータが格納されている。ＳＲＡＭ１（３２）は、検索結果を水平方向のアドレスとして受け、そのアドレスに対応する符号化後のデータを読み出して水平出力として外部に出力する。
【０１３５】
以上説明したように、本実施の形態におけるプロセッサによれば、直交ＣＡＭ０（２３）によって直交変換を行ない、直交ＣＡＭ１（２４）によって一致検索処理を行なうようにしたので、ＳＩＭＤマシン１のボトルネックであるハフマン符号化などのテーブル変換処理を効率的に行なうことが可能となった。
【０１３６】
（第８の実施の形態）
図１８は、本発明の第８の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサは、ＳＩＭＤマシン１と、インタフェース直交処理部９と、セレクタ８１〜９０とを含む。また、インタフェース直交処理部９は、直交ＣＡＭ０（２３）と、直交ＣＡＭ１（２４）と、ＣＡＭ０（２５）と、ＣＡＭ１（２６）とを含む。
【０１３７】
インタフェース直交処理部９は、第１の実施の形態において説明したインタフェース直交処理部２と同様の方法により、直交変換を行ないつつ外部とＳＩＭＤマシン１との間でデータ転送を行なうことが可能である。
【０１３８】
セレクタ８１は、直交ＣＡＭ０（２３）からの垂直出力と直交ＣＡＭ１（２４）からの垂直出力とを選択的に切替え、ＳＩＭＤマシン１に出力する。
【０１３９】
セレクタ８２は、ＳＩＭＤマシン１からの垂直入力を直交ＣＡＭ０（２３）または直交ＣＡＭ１（２４）に選択的に出力する。
【０１４０】
セレクタ８３は、外部からのアドレスとセレクタ９０からの検索結果出力とを選択的に切替え、ＣＡＭ０（２５）にアドレスとして出力する。
【０１４１】
セレクタ８４は、外部からの検索データ入力と、直交ＣＡＭ０（２３）からの水平出力と、セレクタ８９からの水平出力とを選択的に切替え、ＣＡＭ０（２５）に検索データとして出力する。
【０１４２】
セレクタ８５は、直交ＣＡＭ０（２３）からの水平出力とＣＡＭ０（２５）からの水平出力とを選択的に切替え、外部に水平出力として出力する。
【０１４３】
セレクタ８６は、直交ＣＡＭ０（２３）からの検索結果出力とＣＡＭ０（２５）からの検索結果出力とを選択的に切替え、外部に検索結果出力として出力する。
【０１４４】
セレクタ８７は、外部からのアドレスとセレクタ８６からの検索結果出力とを選択的に切替え、ＣＡＭ１（２６）にアドレスとして出力する。
【０１４５】
セレクタ８８は、外部からの検索データ入力と、直交ＣＡＭ０（２３）からの水平出力と、直交ＣＡＭ１（２４）からの水平出力とを選択的に切替え、ＣＡＭ１（２６）に検索データとして出力する。
【０１４６】
セレクタ８９は、直交ＣＡＭ１（２４）からの水平出力とＣＡＭ１（２６）からの水平出力とを選択的に切替え、セレクタ８４および外部に水平出力として出力する。
【０１４７】
セレクタ９０は、直交ＣＡＭ１（２４）からの検索結果出力とＣＡＭ１（２６）からの検索結果出力とを選択的に切替え、外部に検索結果出力として出力する。
【０１４８】
図１９は、本発明の第８の実施の形態におけるプロセッサによってハフマン符号化を行なうときの処理を示す図である。図１９に示す（１）〜（６）に従って、ハフマン符号化の処理手順を説明する。
【０１４９】
（１）まず、直交ＣＡＭ０（２３）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【０１５０】
（２）次に、直交ＣＡＭ０（２３）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次ＣＡＭ０（２５）に検索データとして与えられる。
【０１５１】
（３）ＣＡＭ０（２５）には、予め各エントリにハフマンコードが格納されており、検索データと一致するハフマンコードが順次検索され、検索結果がＣＡＭ１（２６）にアドレスとして出力される。
【０１５２】
（４）ＣＡＭ１（２６）には、予め各エントリに符号化後のデータが格納されている。この符号化後のデータは、ＣＡＭ０（２５）に格納されるハフマンコードと対応付けて格納されており、同じアドレスにハフマンコードに対応する符号化後のデータが格納されている。ＣＡＭ１（２５）は、検索結果を水平方向のアドレスとして受け、そのアドレスに対応する符号化後のデータを読み出して水平出力として外部に出力する。
【０１５３】
（５）また、直交ＣＡＭ０（２３）から水平方向に読み出されたデータが検索データとしてＣＡＭ０（２５）に与えられるのと並行して、直交ＣＡＭ１（２４）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【０１５４】
（６）そして、直交ＣＡＭ１（２４）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次ＣＡＭ０（２５）に検索データとして与えられ、上記（３）〜（４）と同様の処理が行なわれることによって、ハフマン符号化処理が順次行なわれる。
【０１５５】
以上説明したように、本実施の形態におけるプロセッサによれば、直交ＣＡＭによって直交変換を行ない、ＣＡＭによって一致検索処理を行なうようにしたので、ＳＩＭＤマシン１のボトルネックであるハフマン符号化などのテーブル変換処理を効率的に行なうことが可能となった。
【０１５６】
また、インタフェース直交処理部９内に２つの直交ＣＡＭを設け、一方の直交ＣＡＭに垂直入力としてデータが格納されているときに、他方の直交ＣＡＭに格納されているデータを水平出力としてＣＡＭに与えて一致検索処理を行なうようにしたので、データの入出力を連続して行なえ、ＳＩＭＤマシン１は高速にテーブル変換処理を行なうことが可能となった。
【０１５７】
（第９の実施の形態）
図２０は、本発明の第９の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサは、ＳＩＭＤマシン１と、インタフェース直交処理部１０と、セレクタ９１〜９８とを含む。また、インタフェース直交処理部１０は、直交ＳＲＡＭ０（２１）と、直交ＳＲＡＭ１（２２）と、直交ＣＡＭ０（２３）と、直交ＣＡＭ１（２４）とを含む。
【０１５８】
インタフェース直交処理部１０は、第１の実施の形態において説明したインタフェース直交処理部２と同様の方法により、直交変換を行ないつつ外部とＳＩＭＤマシン１との間でデータ転送を行なうことが可能である。
【０１５９】
セレクタ９１は、直交ＳＲＡＭ０（２１）からの垂直入力と、直交ＳＲＡＭ１（２２）からの垂直入力と、直交ＣＡＭ０（２３）からの垂直入力と、直交ＣＡＭ１（２４）からの垂直入力とを選択的に切替え、ＳＩＭＤマシン１に垂直入力として出力する。
【０１６０】
セレクタ９２は、ＳＩＭＤマシン１からの垂直出力を直交ＳＲＡＭ０（２１）または直交ＳＲＡＭ１（２２）に選択的に出力する。
【０１６１】
セレクタ９３は、外部からのアドレスと直交ＣＡＭ１（２４）からの検索結果出力とを選択的に切替え、直交ＣＡＭ０（２３）にアドレスとして出力する。
【０１６２】
セレクタ９４は、外部からの検索データ入力と、セレクタ９５からの水平出力と、セレクタ９８からの水平出力とを選択的に切替え、直交ＣＡＭ０（２３）に検索データとして出力する。
【０１６３】
セレクタ９５は、直交ＳＲＡＭ０（２１）からの水平出力と直交ＣＡＭ０（２３）からの水平出力とを選択的に切替え、外部、セレクタ９４またはセレクタ９７に出力する。
【０１６４】
セレクタ９６は、外部からのアドレスと直交ＣＡＭ０（２３）からの検索結果出力とを選択的に切替え、直交ＣＡＭ１（２４）にアドレスとして出力する。
【０１６５】
セレクタ９７は、外部からの検索データ入力と、セレクタ９５からの水平出力と、セレクタ９８からの水平出力とを選択的に切替え、直交ＣＡＭ１（２４）に検索データとして出力する。
【０１６６】
セレクタ９８は、直交ＳＲＡＭ１（２２）からの水平出力と直交ＣＡＭ１（２４）からの水平出力とを選択的に切替え、外部、セレクタ９４またはセレクタ９７に出力する。
【０１６７】
図２１は、本発明の第９の実施の形態におけるプロセッサによってハフマン符号化を行なうときの処理を示す図である。図２１に示す（１）〜（６）に従って、ハフマン符号化の処理手順を説明する。なお、このハフマン符号化処理は、２つの直交ＳＲＡＭをインターリーブ動作させることにより行われる。
【０１６８】
（１）まず、直交ＳＲＡＭ０（２１）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【０１６９】
（２）次に、直交ＳＲＡＭ０（２１）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次直交ＣＡＭ０（２３）に検索データとして与えられる。
【０１７０】
（３）直交ＣＡＭ０（２３）には、予め各エントリにハフマンコードが格納されており、検索データと一致するハフマンコードが順次検索され、検索結果が直交ＣＡＭ１（２４）にアドレスとして出力される。
【０１７１】
（４）直交ＣＡＭ１（２４）には、予め各エントリに符号化後のデータが格納されている。この符号化後のデータは、直交ＣＡＭ０（２３）に格納されるハフマンコードと対応付けて格納されており、同じアドレスにハフマンコードに対応する符号化後のデータが格納されている。直交ＣＡＭ１（２４）は、検索結果を水平方向のアドレスとして受け、そのアドレスに対応する符号化後のデータを読み出して水平出力として外部に出力する。
【０１７２】
（５）また、直交ＳＲＡＭ０（２１）から水平方向に読み出されたデータが検索データとして直交ＣＡＭ０（２３）に与えられるのと並行して、直交ＳＲＡＭ１（２２）は、ＳＩＭＤマシン１からの１ビット毎データを受け、垂直入力として順次メモリ領域に書き込む。
【０１７３】
（６）そして、直交ＳＲＡＭ１（２２）に書き込まれたデータが、アドレス降順に水平方向に読み出され、読み出されたデータが順次直交ＣＡＭ０（２３）に検索データとして与えられ、上記（３）〜（４）と同様の処理が行なわれることによって、ハフマン符号化処理が順次行なわれる。
【０１７４】
以上説明したように、本実施の形態におけるプロセッサによれば、直交ＳＲＡＭによって直交変換を行ない、直交ＣＡＭによって一致検索処理を行なうようにしたので、ＳＩＭＤマシン１のボトルネックであるハフマン符号化などのテーブル変換処理を効率的に行なうことが可能となった。
【０１７５】
また、インタフェース直交処理部１０内に２つの直交ＳＲＡＭを設け、一方の直交ＳＲＡＭに垂直入力としてデータが格納されているときに、他方の直交ＳＲＡＭに格納されているデータを水平出力として直交ＣＡＭに与えて一致検索処理を行なうようにしたので、データの入出力を連続して行なえ、ＳＩＭＤマシン１は高速にテーブル変換処理を行なうことが可能となった。
【０１７６】
（第１０の実施の形態）
図２２は、本発明の第１０の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサは、第１〜第９の実施の形態におけるプロセッサと比較して、セレクタを介してＳＩＭＤマシン１に接続される直交ＳＲＡＭ（または直交ＣＡＭ）にＰＥｓを付加した点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。なお、図２２においては、直交ＳＲＡＭとＰＥｓとが直接接続されるように記載されているが、実際には図示しないセレクタを介して接続されており、他の部分とのデータ転送も行なえるように構成されている。
【０１７７】
インタフェース直交処理部１１内のＰＥｓ１００は、直交ＳＲＡＭ０（２１）または直交ＳＲＡＭ（２２）の水平方向に付加されており、水平方向の演算処理を行なう。ビットシリアル型ＳＩＭＤマシン１は、垂直方向の演算には強い反面、水平方向の演算には弱いという特徴を有している。直交ＳＲＡＭの水平方向にＰＥｓを付加することにより、この弱点を補っている。
【０１７８】
ＰＥｓ１００は、直交ＳＲＡＭ０（２１）または直交ＳＲＡＭ１（２２）に格納されるデータを水平方向に読み出して演算を行ない、演算結果を直交ＳＲＡＭ０（２１）または直交ＳＲＡＭ１（２２）に水平方向に書き込む。
【０１７９】
図２３は、本発明の第１０の実施の形態におけるプロセッサの他の構成例を示すブロック図である。このプロセッサにおいては、インタフェース直交処理部１２内の直交ＳＲＡＭ０（２１）と直交ＳＲＡＭ１（２２）との間にＰＥｓ１００が設けられる。ＰＥｓ１００は、直交ＳＲＡＭ０（２１）および直交ＳＲＡＭ１（２２）からデータを読み出し、それぞれのＰＥが２ビットの演算処理を行ない、演算結果を直交ＳＲＡＭ０（２１）または直交ＳＲＡＭ１（２２）に水平方向に書き込む。
【０１８０】
以上の説明においては、直交ＳＲＡＭにＰＥｓを付加する場合について説明したが、上述の直交ＡＭにＰＥｓを付加した場合でも同様の効果が得られる。
【０１８１】
以上説明したように、本実施の形態におけるプロセッサによれば、直交ＳＲＡＭの水平方向にＰＥｓを接続するようにしたので、ビットシリアル型ＳＩＭＤマシンの苦手な水平方向の演算も容易に行なえるようになった。
【０１８２】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１８３】
【図１】ビットパラレル方式のＳＩＭＤマシンの一例を示す図である。
【図２】ビットシリアル方式のＳＩＭＤマシンの一例を示す図である。
【図３】本発明の第１の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図４】直交ＳＲＡＭの内部構成の一例を示すブロック図である。
【図５】本発明の第２の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図６】直交ＣＡＭの内部構成の一例を示すブロック図である。
【図７】本発明の第２の実施の形態におけるプロセッサによってハフマン符号化を行なうときの処理を示す図である。
【図８】本発明の第３の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図９】本発明の第３の実施の形態におけるプロセッサによってハフマン符号化を行なうときの処理を示す図である。
【図１０】本発明の第４の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図１１】本発明の第４の実施の形態におけるプロセッサによって一致検索処理を行なうときの処理を示す図である。
【図１２】本発明の第５の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図１３】本発明の第５の実施の形態におけるプロセッサによって一致検索処理を行なうときの処理を示す図である。
【図１４】本発明の第６の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図１５】本発明の第６の実施の形態におけるプロセッサによって一致検索処理を行なうときの処理を示す図である。
【図１６】本発明の第７の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図１７】本発明の第７の実施の形態におけるプロセッサによってハフマン符号化を行なうときの処理を示す図である。
【図１８】本発明の第８の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図１９】本発明の第８の実施の形態におけるプロセッサによってハフマン符号化を行なうときの処理を示す図である。
【図２０】本発明の第９の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図２１】本発明の第９の実施の形態におけるプロセッサによってハフマン符号化を行なうときの処理を示す図である。
【図２２】本発明の第１０の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図２３】本発明の第１０の実施の形態におけるプロセッサの他の構成例を示すブロック図である。
【符号の説明】
【０１８４】
１  ビットシリアル型ＳＩＭＤマシン、２〜１２  インタフェース直交処理部、２１，２２，２７〜３０  直交ＳＲＡＭ、２３，２４  直交ＣＡＭ、２５，２６  ＣＡＭ、３１，３２  ＳＲＡＭ、４１〜４８、５１〜５９，６１〜６４，７１〜７８，８１〜９８  セレクタ、１００  ＰＥｓ、１１０  ＰＥ、２０１  ＳＲＡＭセルアレー、２０２，３０２  水平アドレスデコーダ、２０３，３０３  垂直アドレスデコーダ、２０４，２０６，３０４  センスアンプ、２０５，２０７，３０６，３０８  ライトドライバ、３０１  ＣＡＭセルアレー、３０５  サーチラインドライバ、３０７  マッチアンプ。
【図１】
2008102680.tif 000003
【図２】
2008102680.tif 000004
【図３】
2008102680.tif 000005
【図４】
2008102680.tif 000006
【図５】
2008102680.tif 000007
【図６】
2008102680.tif 000008
【図７】
2008102680.tif 000009
【図８】
2008102680.tif 000010
【図９】
2008102680.tif 000011
【図１０】
2008102680.tif 000012
【図１１】
2008102680.tif 000013
【図１２】
2008102680.tif 000014
【図１３】
2008102680.tif 000015
【図１４】
2008102680.tif 000016
【図１５】
2008102680.tif 000017
【図１６】
2008102680.tif 000018
【図１７】
2008102680.tif 000019
【図１８】
2008102680.tif 000020
【図１９】
2008102680.tif 000021
【図２０】
2008102680.tif 000022
【図２１】
2008102680.tif 000023
【図２２】
2008102680.tif 000024
【図２３】
2008102680.tif 000025