(57)【特許請求の範囲】
【請求項１】
それぞれが複数の算術論理演算機能を選択的に実行可能な複数の論理回路から構成される演算部と、
前記複数の論理回路の間の接続関係を保持する接続部と、
を備えるリコンフィギュラブル回路を含む処理装置において、
前記論理回路で使用するデータを格納する記憶手段と、
前記記憶手段に格納するデータのビット数が前記記憶手段の１アドレスで指定されるメモリワードのビット数を超え、かつ、前記データの有効ビット数が前記メモリワードのビット数を超えない場合、前記データを前記メモリワードのビット数以下のビット数に変更して１つのメモリワードに格納する縮退格納手段と、
前記縮退格納手段で前記メモリワードのビット数以下のビット数に変更して格納されたデータを読み出すときに、前記論理回路の入力ビット数に合わせて前記データを復元する拡張読み出し手段と、
を備えることを特徴とする処理装置。
【請求項２】
前記記憶手段に格納するデータのビット数が前記メモリワードのビット数を超え、かつ、前記データの有効ビット数が前記メモリワードのビット数を超える場合、前記データを前記メモリワードのビット数を有する複数の部分に分けて、複数のメモリワードに格納する分割格納手段と、
前記分割格納手段で前記複数のメモリワードに分割されて格納されたデータを、前記複数のメモリワードから読み出すときに、元のビット数のデータに復元する連結読み出し手段と、
を備えることを特徴とする請求項１に記載の処理装置。
【請求項３】
前記分割格納手段は、前記記憶手段の前記メモリワードのビット数を有する複数の部分
に分けられたデータのそれぞれを、元のデータにおけるビット位置に従って、格納する記
憶領域が限定されている請求項２に記載の処理装置。
【請求項４】
前記分割格納手段又は前記縮退格納手段は、前記演算部から出力されるデータの数を前
記データの有効ビット数に応じて制限することを特徴とする請求項１乃至３のいずれか１
項に記載の処理装置。
【請求項５】
前記連結読み出し手段又は前記拡張読み出し手段は、前記演算部に入力するデータの数
を前記データの有効ビット数に応じて制限することを特徴とする請求項１乃至４のいずれ
か１項に記載の処理装置。
【請求項６】
前記分割格納手段又は前記縮退格納手段は、前記演算部から出力される各データの有効
ビット数に応じて、使用する前記メモリワードの数の合計が同時に書き込み可能なメモリ
ワードの数を超えないように、前記演算部から同時に出力される前記データの数を制限す
ることを特徴とする請求項４に記載の処理装置。
【請求項７】
前記連結読み出し手段又は前記拡張読み出し手段は、前記演算部に入力される各データ
の有効ビット数に応じて、使用する前記メモリワードの数の合計が同時に読み込み可能な
メモリワードの数を超えないように、前記演算部に同時に入力するデータ数を制限するこ
とを特徴とする請求項５に記載の処理装置。
【請求項８】
前記複数の論理回路において選択的に実行する複数の算術論理演算機能と、前記複数の
論理回路の間の接続関係を設定して、前記リコンフィギュラブル回路の動作を制御する設
定データの生成において、
前記複数の論理回路が実行する所期の演算処理を記述したプログラムに基づいて、前記
論理回路の入出力データの有効ビット数を判定し、前記設定データを生成することを特徴
とする請求項１乃至７のいずれか１項に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リコンフィギュラブル回路を備える処理装置に関する。
【背景技術】
【０００２】
最近、携帯電話、ＧＰＳ、ＶＩＣＳなど、無線通信が広く普及し、無線機の種類も増えている。これらの無線機またはその機能をすべてハードウエアで実装すると、コストや実装面積が嵩む。そこで、ハードウエアとしては汎用的な能力を有する回路を搭載しておき、それにロードするソフトウエアを切り替えることで多様な機能を実現する「ソフトウエア無線機」という考え方がある。
【０００３】
ソフトウエア無線機を実現する回路として、ＦＰＧＡ（Field Programmable Gate Array）やＤＳＰ（Digital Signal Processor）がある。特許文献１には、ＦＰＧＡを動的に再構成することで、回路構成の再利用を図る方法が提案されている。動的変更が可能なタイプの回路を以下リコンフィギュラブル回路という。
【０００４】
ＦＰＧＡはＬＳＩ製造後に回路データを書き込んで比較的自由に回路構成を設計することが可能であり、専用ハードウェアの設計に利用されている。ＦＰＧＡは、論理回路の真理値表を格納するためのルックアップテーブル（ＬＵＴ）と出力用のフリップフロップからなる基本セルと、その基本セル間を結ぶプログラマブルな配線リソースとを含む。ＦＰＧＡでは、ＬＵＴに格納するデータと配線データを書き込むことで目的とする論理演算を実現できる。しかし、ＦＰＧＡでＬＳＩを設計した場合、ＡＳＩＣ（Application Specific IC）による設計と比べると、実装面積が非常に大きくなり、コスト高になる。そこで、ＦＰＧＡを動的に構成することによって、回路構成の再利用を計る方法が提案されている（例えば、特許文献１参照）。 
【０００５】
論理回路の演算機能と論理回路どうしの接続を動的に構成するリコンフィギュラブル回路では、論理回路の演算処理ビット数とメモリの１アドレスのビット数が等しく構成されているのが一般である（例えば、特許文献２参照）。
【特許文献１】特開平１０−２５６３８３号公報
【特許文献２】特開２００５−２７６８５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
例えば衛星放送では、季節などにより、放送モードを切り替えて画質の調整などを行うことがある。衛星放送受信機では、放送モードごとに複数の回路を予めハードウェア上に作り込んでおき、放送モードに合わせて選択器で回路を切り替えて受信している。従って、受信機の他の放送モード用の回路はその間遊んでいることになる。モード切替のように、複数の専用回路を切り替えて使用し、その切替間隔が比較的長い場合、複数の専用回路を作り込む代わりに、切替時にＬＳＩを瞬時に再構成することにすれば、回路構造を簡単にして汎用性を高め同時に実装コストを抑えることができる。このようなニーズに応えるべく、動的に再構成可能なＬＳＩに製造業界の関心が高まってきている。特に、携帯電話やＰＤＡ（Personal Digital Assistant）などのモバイル端末に搭載されるＬＳＩは小型化が必要であり、ＬＳＩを動的に再構成し、用途に合わせて適宜機能を切り替えることができれば、ＬＳＩの実装面積を小さく抑えることができる。
【０００７】
ＦＰＧＡは回路構成の設計自由度が高く、汎用的である反面、全ての基本セル間の接続を可能とするため、多数のスイッチとスイッチのＯＮ／ＯＦＦを制御するための制御回路を含む必要があり、必然的に制御回路の実装面積が大きくなる。また、基本セル間の接続に複雑な配線パターンをとるため、配線が長くなる傾向がある。さらに１本の配線に多くのスイッチが接続される構造であるため、遅延が大きくなる。そのため、ＦＰＧＡによるＬＳＩは、試作や実験のために利用されるにとどまることが多く、実装効率、性能コストなどを考えると、量産には適していない。さらに、ＦＰＧＡによるＬＳＩでは、多数のＬＵＴ方式の基本セルに設定データを送る必要があるため、回路のコンフィギュレーションにはかなりの時間を要する。そのため、瞬時に回路構成の切替が必要な用途にはＦＰＧＡによるＬＳＩは適していない。
【０００８】
それらの課題を解決するため、近年、ＡＬＵ（Arithmetic Logic Unit）と呼ばれる基本演算機能を複数有する多機能素子を用いたリコンフィギュラブルプロセッサの開発が進められている。リコンフィギュラブルプロセッサでは、コマンドデータが設定されることにより、ＡＬＵ回路の演算機能構成と接続部が制御され、全体として所期の演算処理回路を実現することが可能となる。コマンドデータは、一般にＣ言語等の高級プログラム言語で記述されたソースプログラムからＤＦＧ（Data Flow Graph）と呼ばれるデータフローを作成し、その情報をもとに作成される。
【０００９】
図１１に示すように、従来のメモリ構成を備えたプロセッサ（特許文献２参照）では、ＡＬＵの演算処理ビット数とメモリの１アドレスのビット数が等しく、ＡＬＵの入出力データをそのまま格納していた。そのため、ＡＬＵの入出力データの有効なビット数が小さい場合、本来不要な上位のビットもメモリに格納しており、無駄にメモリを使用していた。特に、ＡＬＵの処理ビット数が、例えば３２ビットやさらに６４ビットに拡大すると、無駄に使用されるメモリが増大する。
【００１０】
本発明はこうした状況に鑑みてなされたものであり、その目的は、回路規模の縮小化に貢献するリコンフィギュラブル回路を備えた処理装置を提供することである。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明の第１の観点に係る処理装置は、それぞれが複数の算術論理演算機能を選択的に実行可能な複数の論理回路から構成される演算部と、前記複数の論理回路の間の接続関係を保持する接続部と、を備えるリコンフィギュラブル回路を含む処理装置において、前記論理回路で使用するデータを格納する記憶手段と、前記記憶手段に格納するデータの有効ビット数が前記記憶手段の１アドレスで指定されるメモリワードのビット数を超える場合、前記データを前記メモリワードのビット数を有する複数の部分に分けて、複数の前記メモリワードに格納する分割格納手段と、前記分割格納手段で複数のメモリワードに分割されて格納されたデータを、該複数のメモリワードから読み出すときに、元のビット数のデータに復元する連結読み出し手段と、を備えることを特徴とする。
【００１２】
本発明の第２の観点に係る処理装置は、それぞれが複数の算術論理演算機能を選択的に実行可能な複数の論理回路から構成される演算部と、前記複数の論理回路の間の接続関係を保持する接続部と、を備えるリコンフィギュラブル回路を含む処理装置において、前記論理回路で使用するデータを格納する記憶手段と、前記記憶手段に格納するデータの有効ビット数が前記記憶手段の１アドレスで指定されるメモリワードのビット数を超えない場合、前記データを復元可能でかつ前記メモリワードのビット数以下のビット数に変更してメモリに格納する縮退格納手段と、前記縮退格納手段で前記メモリワードのビット数以下のビット数に変更して格納されたデータを読み出すときに、前記論理回路の入力ビット数に合わせて前記データを復元する拡張読み出し手段と、を備えることを特徴とする。
【００１３】
本発明の第３の観点に係る処理装置は、前記記憶手段と、前記分割格納手段と、前記連結読み出し手段と、前記縮退格納手段と、前記拡張読み出し手段と、を備えることを特徴とする。
【００１４】
さらに、前記論理回路で使用するデータを格納する前記記憶手段の１つのアドレスで指定されるメモリワードのビット数が、前記論理回路で処理するデータのビット数よりも小さいことを特徴とする。
【００１５】
好ましくは、前記分割格納手段は、前記記憶手段の前記メモリワードのビット数を有する複数の部分に分けられたデータのそれぞれを、元のデータにおけるビット位置に従って、格納する記憶領域が限定されていることを特徴とする。
【００１６】
特に、前記分割格納手段又は前記縮退格納手段は、前記演算部から出力されるデータの数を前記データの有効ビット数に応じて制限することを特徴とする。
【００１７】
また特に、前記連結読み出し手段又は前記拡張読み出し手段は、前記演算部に入力するデータの数を前記データの有効ビット数に応じて制限することを特徴とする。
【００１８】
さらに、前記分割格納手段又は前記縮退格納手段は、前記演算部から出力される各データの有効ビット数に応じて、使用する前記メモリワード数の合計が同時に書き込み可能なメモリワード数を超えないように、同時に前記演算部から出力される前記データ数を制限することを特徴とする。
【００１９】
またさらに、前記連結読み出し手段又は前記拡張読み出し手段は、前記演算部に入力される各データの有効ビット数に応じて使用する前記メモリワード数の合計が同時に読み込み可能なメモリワード数を超えないように、同時に前記演算部に入力するデータ数を制限することを特徴とする。
【００２０】
なお、好ましくは、前記分割格納手段又は前記縮退格納手段は、前記演算部から出力されるデータの数を前記データの有効ビット数に応じて制限するか、さらに、前記演算部から出力される各データの有効ビット数に応じて使用する前記メモリワード数の合計が同時に書き込み可能なメモリワード数を超えないように、同時に前記演算部から出力されるデータ数を制限し、そして、前記連結読み出し手段又は前記拡張読み出し手段は、前記演算部に入力するデータの数を前記データの有効ビット数に応じて制限するか、さらに、前記演算部に入力される各データの有効ビット数に応じて使用する前記メモリワード数の合計が同時に読み込み可能なメモリワード数を超えないように、同時に前記演算部に入力するデータ数を制限することを特徴とする。
【００２１】
本発明の第４の観点に係る処理装置は、前記いずれかの処理装置であって、前記複数の論理回路において選択的に実行する複数の算術論理演算機能と、前記複数の論理回路の間の接続関係を設定して、前記リコンフィギュラブル回路の動作を制御する設定データの生成において、前記複数の論理演算回路が実行する所期の演算処理を記述したプログラムに基づいて、前記論理回路の入出力データの有効ビット数を判定し、前記設定データを生成することを特徴とする。
【発明の効果】
【００２２】
本発明の処理装置によれば、従来のリコンフィギュラブル回路よりデータの有効ビット数に近いビット数でメモりに格納できるため、効率的なメモリの使用が可能となり、必要なメモリの容量が少なくてすむ。そして、メモリの容量が少なくなることにより、回路規模を縮小することができる。
【発明を実施するための最良の形態】
【００２３】
本発明に係る処理装置の一実施の形態について、図を参照して説明する。図１は、本発明の一実施の形態に係るリコンフィギュラブル回路を含む処理装置の構成を示すブロック図である。図１に示すように、処理装置１０は、集積回路装置２６を備える。集積回路装置２６は、回路構成を再構成可能とする機能を有する。集積回路装置２６は１チップとして構成され、リコンフィギュラブル回路１、設定部１４、制御部１８、内部状態保持回路２０、出力回路２２および経路部２４を備える。リコンフィギュラブル回路１は、設定を変更することにより、機能の変更を可能とする。
【００２４】
設定部１４は、第１設定部１４ａ、第２設定部１４ｂ、第３設定部１４ｃ、第４設定部１４ｄおよび選択器１６を有し、リコンフィギュラブル回路１に所期の回路を構成するための設定データ４０を供給する。経路部２４は、フィードバックパスとして機能し、リコンフィギュラブル回路１の出力を、リコンフィギュラブル回路１の入力に接続する。内部状態保持回路２０および出力回路２２は、例えばデータフリップフロップ（Ｄ−ＦＦ）などの順序回路あるいはメモリで構成され、リコンフィギュラブル回路１の出力を受ける。内部状態保持回路２０は経路部２４に接続されている。内部状態保持回路２０は、リコンフィギュラブル回路１で使用するデータを記憶する記憶部４を備える。リコンフィギュラブル回路１は組合せ回路、またはＤ−ＦＦのような状態保持を含む順序回路として構成される。
【００２５】
図２は、ＡＬＵアレイを用いたリコンフィギュラブル回路１の構成例を示す図である。図２に示すように、リコンフィギュラブル回路１は、機能の変更が可能な算術論理演算ユニットなどを含む論理回路（ＡＬＵ）２の集合体を複数備えた構造を有し、また、それぞれの集合体の間に設けられて、集合体間のＡＬＵ２の接続を選択的に確立可能な少なくとも１つの接続部３を有する。
【００２６】
リコンフィギュラブル回路１において、演算機能を選択的に実行可能な複数のＡＬＵ２がマトリックス状に配列されて、図２の例では、Ｘ段Ｙ列のＡＬＵアレイを構成し、各段に配列された複数のＡＬＵ２が集合体を構成して、前段の集合体における処理結果が、接続部３において選択的に確立される接続にしたがって後段の集合体に引き渡される。上段から下段への論理回路間のデータ渡しは、論理回路間の接続切替を行う接続スイッチに接続データセットを設定することで、下段のどのＡＬＵ２にデータを渡すかが定められる。動作時には、構成情報に従って演算処理し、結果を出力する。
【００２７】
各論理回路（ＡＬＵ）２の機能と、論理回路間の接続関係は、図１に示す設定部１４により供給される設定データ４０に基づいて設定される。設定データ４０は、以下の手順で生成される。
【００２８】
集積回路装置２６により実現されるべきプログラム３６が、設定記憶部３４に保持されている。プログラム３６は、信号処理回路または信号処理アルゴリズムなどをＣ言語などの高級言語で記述したものである。コンパイル部３０は、設定記憶部３４に格納されたプログラム３６をコンパイルし、データフローグラフ（ＤＦＧ）３８に変換して設定記憶部３４に格納する。データフローグラフ３８は、入力変数および定数による入力データから出力データに至る演算ないしはデータの流れをグラフ構造で表現したものである。ここで、コンパイル部３０は、リコンフィギュラブル回路１におけるＡＬＵ２の集合体の接続制限に応じて、データフローグラフ３８を生成する。
【００２９】
設定データ生成部３２は、データフローグラフ３８から設定データ４０を生成する。設定データ４０は、データフローグラフ３８をリコンフィギュラブル回路１にマッピングするためのデータであり、リコンフィギュラブル回路１におけるＡＬＵ２の機能や論理回路間の接続関係を定める。
【００３０】
（実施の形態１）
図３は、本発明に係る処理装置１０において、リコンフィギュラブル回路１が使用するデータを記憶する記憶部４の構成の一例を示す図である。本実施の形態では、リコンフィギュラブル回路１のＡＬＵアレイは、演算処理ビット数が３２ビットである。記憶部４はメモリ５として、１アドレスで指定されるメモリワードが１６ビットのＲＡＭ５ａ、５ｂを２系統備える。記憶部４は、演算処理ビット数が３２ビットのＡＬＵからの出力を、１アドレスのメモリワードが１６ビットのＲＡＭに格納する。図中の太線は３２ビットのデータ線を、細線は１６ビットのデータ線を表す。
【００３１】
記憶部４は、リコンフィギュラブル回路１の３２ビットのデータをそのまま受けるレジスタ７ａと、３２ビットのデータの下位１６ビットを受けるレジスタ７ｂを備える。３２ビットレジスタ７ａのデータは、上位１６ビットのデータと下位１６ビットのデータを選択する選択回路（ＭＵＸ）６ａに入力される。下位１６ビットを受けるレジスタ７ｂは、ＲＡＭ５ｂに接続している。
【００３２】
ＲＡＭ５ａ、５ｂの読み出し側には、レジスタ７ｃ、７ｄと、ビット拡張回路８と、選択回路６ｂと、合成回路９ａ、９ｂが設けられている。ビット拡張回路８は、ＲＡＭ５ｂから読み出したデータのＭＳＢ（最上位ビット）を拡張して、上位１６ビットを生成する。選択回路６ｂは、ビット拡張回路８の出力とＲＡＭ５ａのデータを選択する。合成回路９ａは、ＲＡＭ５ａのデータを下位１６ビットとし、そのＭＳＢを拡張した１６ビットを上位１６ビットとして、元のデータを生成する。合成回路９ｂは、ＲＡＭ５ｂのデータを下位ビットとし、選択回路６ｂの出力を上位１６ビットとして元のデータを生成する。
【００３３】
次に、記憶部４の動作を説明する。図３に示すように、記憶部４は２つのＲＡＭ５ａ、５ｂを一対とし、ＡＬＵ２からの出力データの有効ビット数が１７ビット以上であれば一対の２つのＲＡＭ５ａ、５ｂに上位と下位のそれぞれを格納する。すなわち、選択回路６ａはレジスタ７ａのデータの上位１６ビットを選択してＲＡＭ５ａに記憶する。下位１６ビットはＲＡＭ５ｂに記憶される。メモリ５を構成する一対となるＲＡＭ５ａ、５ｂのうち、ＲＡＭ５ａが上位用、ＲＡＭ５ｂが下位用である。
【００３４】
分割して格納したデータは上位１６ビットと下位１６ビットをそれぞれＲＡＭ５ａ、５ｂから読み出しビット結合を行い、元の３２ビットのデータとしてＡＬＵ２に入力する。選択回路６ｂは、ＲＡＭ５ａのデータを選択し、合成回路９ｂの上位１６ビットとする。合成回路９ｂの下位１６ビットはＲＡＭ５ｂのデータ（レジスタ７ｄのデータ）とする。こうして、ＲＡＭ５ａ、５ｂに分割して記憶された３２ビットのデータは、合成回路９ｂで元の３２ビットデータに連結して読み出される。
【００３５】
ＡＬＵからの出力の有効ビット数が１６ビット以下の場合は、３２ビットの下位１６ビットのみをＲＡＭ５ａ又はＲＡＭ５ｂに格納する。その際、いずれのＲＡＭ５ａ、５ｂに格納してもよい。例えば、連続する１６ビット以下のデータは、ＲＡＭ５ａとＲＡＭ５ｂの未使用領域の多い方のＲＡＭに格納する。ＲＡＭ５ａに下位１６ビットを格納する場合、選択回路６ａは下位１６ビットを選択して、ＲＡＭ５ａに格納する。そのとき、ＲＡＭ５ｂは異なる１６ビット以下のデータを格納してもよい。ＲＡＭ５ｂに下位１６ビットのみを格納する場合、レジスタ７ｂから下位１６ビットをＲＡＭ５ｂに格納する。そのとき、ＲＡＭ５ａは異なる１６ビット以下のデータを格納してもよい。
【００３６】
下位１６ビットのみが格納されたデータは、ＲＡＭ５ａ又はＲＡＭ５ｂから読み出したときに、データのビット拡張を行い、元の３２ビットのデータとしてＡＬＵ２に入力する。すなわち、ＲＡＭ５ａに格納された下位１６ビットデータを読み出すときには、合成回路９ａでＲＡＭ５ａのデータ（レジスタ７ｃのデータ）を下位１６ビットとし、レジスタ７ｃのＭＳＢを拡張した１６ビットを上位１６ビットとして、元のデータを生成する。
【００３７】
下位１６ビットのＭＳＢを拡張する方法は、データの型によって異なる。例えば、１６ビットのデータが文字コードのような符号の場合は、上位１６ビットに拡張するビットは常に０でよい。データが整数型で負の数が２の補数表示である場合は、上位１６ビットに拡張するビットは、下位１６ビットのＭＳＢと同じビットである必要がある。すなわち、正数の場合は０を上位１６ビットに詰め、負数の場合は１を上位１６ビットに詰める。ＡＬＵ２において、上位１６ビットが整数型以外では用いられることがなければ、ビット拡張回路８は常に整数型と同じ処理を行うものであってもよい。
【００３８】
ＲＡＭ５ｂに格納された下位１６ビットのみのデータを読み出すときには、ビット拡張回路８は、ＲＡＭ５ｂから読み出したデータのＭＳＢ（最上位ビット）を拡張して、上位１６ビットを生成する。選択回路６ｂは、ビット拡張回路８の出力を選択して、合成回路９ｂの上位１６ビットとする。合成回路９ｂは、ＲＡＭ５ｂのデータ（レジスタ７ｄのデータ）を下位１６ビットとし、選択回路６ｂの出力（ビット拡張回路８で生成された上位１６ビット）を上位１６ビットとして元のデータを生成する。
【００３９】
こうして、ＲＡＭ５ａ又はＲＡＭ５ｂに下位１６ビットのみが格納されたデータは、合成回路９ａ又は合成回路９ｂで元の３２ビットデータに拡張されて読み出される。
【００４０】
ＡＬＵ２からの出力データの有効ビット数が１６ビット以下の場合、図１１に示す従来の記憶部４ａの構成では不要な上位１６ビットのデータもメモリに格納していたが、本実施の形態１の記憶部４により不要なデータの格納が削減され、従来よりも効率的にメモリ５にデータを格納することが可能となる。その結果、メモリの容量が少なくなることにより、回路規模を縮小することができる。
【００４１】
図３では、ＲＡＭ５ａは１６ビット又は３２ビットの上位のデータを格納し、ＲＡＭ５ｂは１６ビット又は３２ビットの下位のデータを格納する。そのため、メモリ５への入力において、左のＲＡＭ５ａには上位１６ビットか下位１６ビットかを選択する選択回路（ＭＵＸ）６ａが備わっているが、右のＲＡＭ５ｂには常に下位のデータが書き込まれるため、選択回路は必要ない。
【００４２】
記憶部４からの出力においては、元のデータが３２ビットのデータの場合の左のＲＡＭ５ａからの出力である上位１６ビットと、元のデータが１６ビットの場合の右のＲＡＭ５ｂからの出力をビット拡張した上位１６ビットとを選択する選択回路６ｂと、選択回路６ｂからの出力を上位１６ビットとし、右のＲＡＭ５ｂからの出力を下位１６ビットとしてビット統合を行い３２ビットのデータとする合成回路９ｂが備わっている。また、下位１６ビットのデータが左のＲＡＭ５ａに格納されている場合に、左のＲＡＭ５ａからの出力をビット拡張し３２ビットのデータとする合成回路９ａが備わっている。合成回路９ａの上位１６ビットは常に左のＲＡＭ５ａからの出力をビット拡張した１６ビットのデータであるため、選択回路６ｂのような上位１６ビットを選択する選択回路は必要ない。
【００４３】
図４は、図３の記憶部４の構成を用いた場合の、ＡＬＵ２からメモリ５に到る回路構成例を示す図である。３個のＡＬＵ２が、図３の１対のＲＡＭ５ａ、５ｂにアクセス可能である。左のＲＡＭ５ａには、上位１６ビットと下位１６ビットの両方を入力可能とするため、ＡＬＵ３個×上位下位２個の計６個から１個の１６ビットデータを選択する６→１の選択回路（ＭＵＸ）６ｃが備わっている。また、右のＲＡＭ５ｂには下位１６ビットのみが入力されるため、ＡＬＵ３個×下位１個の計３個から１個の１６ビットデータを選択する３→１の選択回路（ＭＵＸ）６ｄが備わっている。
【００４４】
６→１ＭＵＸ６ｃが上位１６ビットを選択する場合、３→１ＭＵＸ６ｄは同じＡＬＵの出力の下位１６ビットを選択する。６→１ＭＵＸ６ｃが下位１６ビットを選択する場合、３→１ＭＵＸ６ｄは異なるＡＬＵ２の出力の下位１６ビットを選択してもよい。従って、この３個のＡＬＵ２からの出力は、有効ビット数が１６ビット以下のデータ２個か、１７ビット以上のデータ１個に制限される。また、ＡＬＵ２への入力においても同様で、入力データの有効ビット数が１６ビット以下のデータ２個（種類）か、１７ビット以上のデータ１個（種類）に制限される。このように、ＡＬＵ２の入出力制限は、データの有効ビット数に依存する。
【００４５】
ＡＬＵ２の入出力データの有効ビット数は、リコンフィギュラブル回路１で実行する所期の演算処理を記述したプログラム３６に基づいて判定される。所期の演算処理がＣ言語で記述される場合、変数の型やコメント文で有効ビット数を判定できる。例えば、変数の型がｉｎｔ型（整数型）であればその変数の有効ビット数は３２ビットとして、ｓｈｏｒｔ型であれば有効ビット数が１６ビットとして判定できる。そして、設定データ生成部３２は、設定データ４０を作成するときに、ＡＬＵ２の入出力データの判定結果に基づいた有効ビット数から、上述した制限でＲＡＭ５ａ、５ｂにデータを格納するための設定データ４０を作成する。
【００４６】
図５は、複数対のＲＡＭ５ａ、５ｂ、５ｃ、５ｄを用いた記憶部４の構成を示す。図３及び図４の記憶部４では一対のＲＡＭ５ａ、５ｂを用いた構成であるが、図５のように複数対のＲＡＭ構成でもよい。図５は２対のＲＡＭ５ａ、５ｂと、ＲＡＭｃ、ｄを用いた構成であり、この場合入出力データの有効ビット数が１６ビット以下のデータ４個（種類）か、１７ビット以上のデータ２個（種類）か、１７ビット以上のデータ１個（種類）と１６ビット以下のデータ１個（種類）に制限される。
【００４７】
図５に示す記憶部のように２対のＲＡＭを用いる場合、リコンフィギュラブル回路のＡＬＵ２を２つに分けて、一方は左の１対のＲＡＭ５ａ、５ｂにアクセスし、他方は右の１対のＲＡＭ５ｃ、５ｄにアクセスするように構成してもよい。全てのＡＬＵ２がいずれの対のＲＡＭ５ａ、５ｂ、５ｃ、５ｄにアクセスできるようにしてもよい。
【００４８】
本実施の形態では、３２ビットのデータを上位１６ビットと下位１６ビットに分けて記憶部４に格納する場合について説明したが、データのビット数と記憶部４に格納するビット数は３２ビットと１６ビットに限られない。メモリ５は、ＡＬＵ２の入出力ビット数を格納できる数のＲＡＭで構成されていればよい。例えば、データのビット数が１６ビットの場合に、記憶部４に格納するビット数が８ビットの２つの部分に分割して格納する構成とすることができる。また、データが６４ビットの場合、上位３２ビットと下位３２ビットに分割して記憶部に格納する構成であってもよい。データを上位と下位の２部分に分けて格納する構成は、図３及び図４の構成と同様である。
【００４９】
さらに、データを多くの部分に分割して記憶部に格納する構成も可能である。例えば、６４ビットのデータを１６ビットずつの４つの部分に分けて記憶部に格納する構成とすることができる。その場合、データの有効ビット数が１６ビット以下、３２ビット以下、４８ビット以下、４８ビットを越える場合の４通りに分けて、４つの１６ビットＲＡＭにデータを格納する。
【００５０】
図６は６４ビットＡＬＵアレイから出力されるデータを４つの１６ビットＲＡＭに格納する場合の記憶部４の構成例を示す。図６において、白抜き線は６４ビットのデータ線を、太線は３２ビットのデータ線を、細線は１６ビットのデータ線を表す。図６の記憶部４は、図３の記憶部４における分割を２段階で行い、また拡張及び合成を２段階で行う構成になっている。
【００５１】
６４ビットデータの有効ビットが３２ビットを超える場合は、データはＲＡＭ５ａ、５ｂ、５ｃ、５ｄの４つに１６ビットずつ分割して格納される。６４ビットデータの有効ビットが３２ビット以下の場合、６４ビットの下位３２ビットのデータのみがＲＡＭ５ａと５ｂ、又はＲＡＭ５ｃと５ｄに格納される。さらに、データの有効ビット数が１６ビット以下の場合は、６４ビットの最下位１６ビットのデータのみが、ＲＡＭ５ａ、５ｂ、５ｃ又は５ｄのいずれかに格納される。
【００５２】
なお、対をなすＲＡＭの１アドレスで指定されるメモリワードのビット数は不均一であってもよい。例えば、ＲＡＭ５ａが８ビットであり、ＲＡＭ５ｂが２４ビットの構成であってもよい。その場合、データの有効ビット数が８ビット以下であれば、ＲＡＭ５ａ又はＲＡＭ５ｂに格納される。また、データの有効ビット数が９ビット以上２４ビット以下であれば、ＲＡＭ５ｂに格納される。さらに、データの有効ビット数が２５ビット以上であれば、ＲＡＭ５ａとＲＡＭ５ｂに対として格納される。
【００５３】
図７は、メモリ５をビット数の異なる３つのＲＡＭで構成した記憶部４の例を示す。図７において、太い実線は３２ビットのデータ線を、細い実線は１６ビットのデータ線を、点線は８ビットのデータ線を表す。リコンフィギュラブル回路１のＡＬＵアレイは、演算処理ビット数が３２ビットである。記憶部４はメモリ５として、１アドレスで指定されるメモリワードが１６ビットのＲＡＭ５ａと、１アドレスで指定されるメモリワードが８ビットのＲＡＭ５ｅ及び５ｆを備える。記憶部４は、演算処理ビット数が３２ビットのＡＬＵからの出力を、１アドレスのメモリワードが１６ビットのＲＡＭ５ａと、８ビットのＲＡＭ５ｅ及び５ｆに格納する。
【００５４】
記憶部４は、リコンフィギュラブル回路１の３２ビットのデータをそのまま受けるレジスタ７ａと、３２ビットのデータの下位１６ビットを受けるレジスタ７ｂと、３２ビットのデータの最下位８ビットを受けるレジスタ７ｃを備える。３２ビットレジスタ７ａのデータは、上位１６ビットのデータ（Ｄ１とＤ２）、中央の１６ビットのデータ（Ｄ２とＤ３）又は下位１６ビットのデータ（Ｄ３とＤ４）を選択する選択回路（ＭＵＸ）６ａに入力される。選択回路６ａの出力は、ＲＡＭ５ａに入力される。
【００５５】
下位１６ビットを受けるレジスタ７ｂは、その１６ビットのうち、上位８ビットと下位８ビットを選択する選択回路（ＭＵＸ）６ｂに入力される。選択回路６ｂの出力は、ＲＡＭ５ｅに入力される。最下位８ビットを受けるレジスタ７ｃは、ＲＡＭ５ｆに接続している。
【００５６】
ＲＡＭ５ａ、５ｅ及び５ｆの読み出し側には、レジスタ７ｄ、７ｅ、７ｆ、７ｇ、７ｈと、ビット拡張回路８ａ、８ｂ、８ｃと、選択回路６ｃ、６ｄ、６ｅ、６ｆと、合成回路９ａ、９ｂ、９ｃが設けられている。ビット拡張回路８ａは、ＲＡＭ５ａから読み出した１６ビットデータ（レジスタ７ｄ）のＭＳＢ（最上位ビット）を拡張した８ビットを生成する。ビット拡張回路８ｂは、ＲＡＭ５ｅから読み出した８ビットデータ（レジスタ７ｅ）のＭＳＢを拡張した８ビットを生成する。ビット拡張回路８ｃは、ＲＡＭ５ｆから読み出した８ビットデータ（レジスタ７ｆ）のＭＳＢを拡張した８ビットを生成する。
【００５７】
拡大回路７ｇは、ビット拡張回路８ｂの出力を２倍の１６ビットに拡大する。拡大回路７ｈは、ビット拡張回路８ｃの出力を２倍の１６ビットに拡大する。
【００５８】
選択回路６ｃは、ＲＡＭ５ａのデータと拡大回路７ｇのデータを選択して、合成回路９ｂの中央の１６ビットデータ（Ｄ２とＤ３）とする。選択回路６ｄは、ＲＡＭ５ａのデータと拡大回路７ｇ又は７ｈのデータを選択して、合成回路９ｃの上位１６ビットデータ（Ｄ１とＤ２）とする。選択回路６ｅは、ビット拡張回路８ａの出力とビット拡張回路８ｂの出力を選択して、合成回路９ｂの上位８ビットデータ（Ｄ１）とする。選択回路６ｆは、ＲＡＭ５ｅのデータとビット拡張回路８ｃの出力を選択して、合成回路９ｃの下位１６ビットの上位側８ビットデータ（Ｄ３）とする。
【００５９】
次に、記憶部４の動作を説明する。図７に示すように、記憶部４は３つのＲＡＭ５ａ、５ｅ、５ｆを一組とし、ＡＬＵ２からの出力データの有効ビット数が２５ビット以上であれば一組の３つのＲＡＭ５ａ、５ｅ、５ｆに分割して格納する。すなわち、選択回路６ａはレジスタ７ａのデータの上位１６ビットを選択してＲＡＭ５ａに記憶する。下位１６ビットのうち上位側８ビットは、選択回路６ｂで選択されてＲＡＭ５ｅに格納される。最下位８ビットは、ＲＡＭ５ｆに格納される。
【００６０】
有効ビット数２４ビット以下で分割して格納したデータは上位１６ビットと下位１６ビットの上位側８ビットと下位側８ビットをそれぞれＲＡＭ５ａ、５ｅ、５ｆから読み出してビット結合を行い、元の３２ビットのデータとしてＡＬＵ２に入力する。選択回路６ｄは、ＲＡＭ５ａのデータを選択し、合成回路９ｃの上位１６ビットとする。選択回路６ｆはＲＡＭ５ｅのデータ（レジスタ７ｅのデータ）を選択し、合成回路９ｃの下位１６ビットの上位側８ビットとする。そして、合成回路９ｃの下位１６ビットの下位側８ビット（Ｄ４）は、ＲＡＭ５ｆのデータ（レジスタ７ｆ）のデータとする。こうして、ＲＡＭ５ａ、５ｅ、５ｆに分割して記憶された３２ビットのデータは、合成回路９ｃで元の３２ビットデータに連結して読み出される。
【００６１】
ＡＬＵからの出力の有効ビット数が１７ビット以上、２４ビット以下の場合は、３２ビットの中央の１６ビットのデータ（Ｄ２とＤ３）をＲＡＭ５ａに格納し、最下位８ビットのデータ（Ｄ４）をＲＡＭ５ｅに格納する。すなわち、選択回路６ａは、レジスタ７ａのデータの中央１６ビットを選択してＲＡＭ５ａに格納する。最下位８ビットのデータ（Ｄ４）は、選択回路６ｂでレジスタ７ｂから選択されてＲＡＭ５ｅに格納される。
【００６２】
有効ビット数が１７ビット以上、２４ビット以下で分割して格納されたデータは、合成回路９ｂで元の３２ビットデータに連結して読み出される。選択回路６ｃはＲＡＭ５ａのデータ（レジスタ７ｄのデータ）を選択して３２ビットの中央の１６ビットデータ（Ｄ２とＤ３）とする。合成回路９ｂの最下位８ビットはＲＡＭ５ｅのデータとする。選択回路６ｅは、ビット拡張回路８ａの出力を選択して合成回路９ｂの最上位８ビットのデータとする。
【００６３】
ＡＬＵからの出力の有効ビット数が１６ビット以下の場合は、３２ビットの下位１６ビットのみをＲＡＭ５ａ、又はＲＡＭ５ｅ及び５ｆに格納する。例えば、連続する１６ビット以下のデータは、ＲＡＭ５ａとＲＡＭ５ｅ及び５ｆの未使用領域の多い方のＲＡＭに格納する。ＲＡＭ５ａに下位１６ビットを格納する場合、選択回路６ａは下位１６ビット（Ｄ３とＤ４）を選択して、ＲＡＭ５ａに格納する。そのとき、ＲＡＭ５ｅ及び５ｆは異なる１６ビット以下のデータを格納してもよい。ＲＡＭ５ｅ及び５ｆに下位１６ビットのみを格納する場合、選択回路６ｂはレジスタ７ｂから上位側８ビット（Ｄ３）を選択してＲＡＭ５ｅに格納し、レジスタ７ｃから最下位８ビット（Ｄ４）をＲＡＭ５ｆに格納する。そのとき、ＲＡＭ５ａは異なる１６ビット以下のデータを格納してもよい。
【００６４】
下位１６ビットのみが格納されたデータは、ＲＡＭ５ａ又はＲＡＭ５ｅ及び５ｆから読み出したときに、データのビット拡張を行い、元の３２ビットのデータとしてＡＬＵ２に入力する。すなわち、ＲＡＭ５ａに格納された下位１６ビットデータを読み出すときには、合成回路９ａでＲＡＭ５ａのデータ（レジスタ７ｄのデータ）を下位１６ビットとし、レジスタ７ｄのＭＳＢを拡張した８ビットを２倍の上位１６ビットに拡大して、元のデータを生成する。
【００６５】
ＲＡＭ５ｅ及びＲＡＭ５ｆに格納された下位１６ビットを読み出すときには、合成回路９ｃで読み出しデータの連結を行う。最下位８ビットはＲＡＭ５ｆから読み出したデータとする。選択回路６ｆは、ＲＡＭ５ｅのデータを選択して下位１６ビットの上位側８ビットのデータ（Ｄ３）とする。ビット拡張回路８ｂは、レジスタ７ｅのＭＳＢを拡張し、拡大回路７ｇはさらに２倍の１６ビットに拡大する。選択回路６ｄは、拡大回路７ｇのデータを選択して、合成回路９ｃの上位１６ビットとする。
【００６６】
ＡＬＵ２からの出力の有効ビット数が８ビット以下の場合は、３２ビットの最下位８ビットのみをＲＡＭ５ｅ又はＲＡＭ５ｆに格納する。選択回路６ｂで最下位８ビットを選択してＲＡＭ５ｅに格納するか、最下位８ビット（レジスタ７ｃで表される）をＲＡＭ５ｆに格納する。また、３２ビットの下位１６ビットをＲＡＭ５ａに格納してもよい。この場合は、有効ビット数が１６ビット以下の場合の格納、読み出しと同様になる。
【００６７】
最下位８ビットのみを格納したデータは、合成回路９ｂ又は９ｃで元の３２ビットに拡張して読み出される。ＲＡＭ５ｅから最下位８ビットのみが格納されたデータを読み出す場合は、選択回路６ｃで拡大回路７ｇのデータを選択して中央１６ビットとする。選択回路６ｅは、ビット拡張回路８ｂの出力を選択して合成回路９ｂの最上位８ビット（Ｄ１）とする。合成回路９ｂの最下位８ビットは、ＲＡＭ５ｅから読み出したデータ（レジスタ７ｅで表される）とする。
【００６８】
ＲＡＭ５ｆから最下位８ビットのみが格納されたデータを読み出す場合、選択回路６ｄは、拡大回路７ｈのデータ（ビット拡張回路８ｃの出力を２倍に拡大したデータである）を選択して合成回路９ｃの上位１６ビットとする。選択回路６ｆは、ビット拡張回路８ｃの出力を選択して、合成回路９ｃの下位１６ビットの上位側８ビット（Ｄ３）とする。合成回路９ｃの最下位８ビットは、ＲＡＭ５ｆから読み出したデータ（レジスタ７ｆで表される）とする。
【００６９】
図７の記憶部４は、ＡＬＵ２からの出力データの有効ビット数が８ビット以下であれば、ＲＡＭ５ｅまたはＲＡＭ５ｆに下位８ビットを格納することができる。また、有効ビット数が９ビット以上１６ビット以下であれば、ＲＡＭ５ａ又はＲＡＭ５ｅ＋ＲＡＭ５ｆに下位１６ビットを格納することができ、１７ビット以上２４ビット以下であればＲＡＭ５ａ＋ＲＡＭ５ｅに下位２４ビットを格納することができる。そして、２５ビット以上であれば、ＲＡＭ５ａ＋ＲＡＭ５ｅ＋ＲＡＭ５ｆに３２ビットを格納することができる。
【００７０】
ＲＡＭのビット数が小さくなるほど、ＲＡＭの利用効率が向上しＲＡＭの容量は少なくなるが、ＭＵＸ等のＲＡＭ周辺回路と設定データ数が増加するため、最良の形態は回路全体の規模とシステムに依存するところである。
【００７１】
図３、４、６及び７では、理解を容易にするためにメモリ５の入力側と出力側にレジスタ７ａ、７ｂ等を記載したが、レジスタはデータを保持する回路でなく、データ線であってもよい。
【００７２】
（実施の形態２）
図８は、本発明に係る処理装置１０において、リコンフィギュラブル回路１が使用するデータを記憶する記憶部４の構成の異なる例を示す図である。図３の記憶部４と同様、演算処理ビット数が３２ビットのＡＬＵ２からの出力データを、１アドレスのメモリワードが１６ビットのＲＡＭに格納する。本実施の形態では、リコンフィギュラブル回路１のＡＬＵアレイは、演算処理ビット数が３２ビットである。
【００７３】
記憶部４はメモリ５として、１アドレスで指定されるメモリワードが１６ビットのＲＡＭを２系統備える。記憶部４は、演算処理ビット数が３２ビットのＡＬＵ２から出力を１アドレスのメモリワードが１６ビットのＲＡＭに格納する。図中の太線は３２ビットのデータ線を、細線は１６ビットのデータ線を表す。
【００７４】
記憶部４は、リコンフィギュラブル回路１の３２ビットのデータを受けるレジスタ７と、そのレジスタ７の上位１６ビットと下位１６ビットを選択する選択回路６ａを備える。選択回路６ａの出力は、ＲＡＭ５ａに接続している。また、レジスタの下位１６ビットは、ＲＡＭ５ｂに接続している。
【００７５】
ＲＡＭ５ａ、５ｂの読み出し側には、選択回路６ｂ、６ｅと、レジスタ７ｅと、ビット拡張回路８と、合成回路９ｂが設けられている。選択回路６ｅは、ＲＡＭ５ａの１メモリワードのデータと、ＲＡＭ５ｂの１メモリワードのデータを選択してレジスタ７ｅに入力する。レジスタ７ｅは、合成回路９ｂの下位１６ビットに接続している。ビット拡張回路８は、レジスタ７ｅのデータのＭＳＢ（最上位ビット）を拡張して、上位１６ビットを生成する。選択回路６ｂは、ビット拡張回路８の出力とＲＡＭ５ａのデータを選択する。合成回路９ｂは、レジスタ７ｅのデータを下位１６ビットとし、選択回路６ｂの出力を上位１６ビットとして、元のデータを生成する。
【００７６】
次に、記憶部４の動作を説明する。図８に示すように、２つのＲＡＭ５ａ、５ｂを１対とし、ＡＬＵ２からの出力データの有効ビット数が１７ビット以上であれば、一対の２つのＲＡＭ５ａ、５ｂに上位１６ビットと下位１６ビットのそれぞれを格納する。すなわち、選択回路６ａはレジスタ７の上位１６ビットを選択してＲＡＭ５ａに記憶する。レジスタ７の下位１６ビットはＲＡＭ５ｂに記憶される。この場合、メモリ５の一対となるＲＡＭ５ａ、５ｂのうち、ＲＡＭ５ａが上位用、ＲＡＭ５ｂが下位用となる。
【００７７】
分割して格納したデータは上位１６ビットと下位１６ビットをそれぞれＲＡＭ５ａ、５ｂから読み出してビット結合を行い、元の３２ビットのデータとしてＡＬＵ２に入力する。選択回路６ｂは、ＲＡＭ５ａのデータを選択し、合成回路９ｂの上位１６ビットとする。選択回路６ｅは、ＲＡＭ５ｂのデータを選択してレジスタ７ｅにセットする。レジスタ７ｅのデータは、合成回路９ｂの下位１６ビットとなる。この場合、ビット拡張回路８の出力は使用されない。合成回路９ｂの上位１６ビットは、選択回路６ｂの出力であるＲＡＭ５ａのデータであり、下位１６ビットはＲＡＭ５ｂのデータ（レジスタ７ｅのデータ）である。こうして、ＲＡＭ５ａ、５ｂに分割して記憶された３２ビットのデータは、合成回路９ｂで元の３２ビットデータに連結して読み出される。
【００７８】
ＡＬＵ２からの出力の有効ビット数が１６ビット以下の場合は、３２ビットの下位１６ビットのみをＲＡＭ５ａ又はＲＡＭ５ｂに格納する。その際、いずれのＲＡＭ５ａ、５ｂに格納してもよい。例えば、連続する１６ビット以下のデータは、ＲＡＭ５ａとＲＡＭ５ｂの未使用領域の多い方のＲＡＭに格納する。ＲＡＭ５ａに下位１６ビットを格納する場合、選択回路６ａはレジスタ７の下位１６ビットを選択して、ＲＡＭ５ａに格納する。そのとき、ＲＡＭ５ｂは使用されない。ＲＡＭ５ｂに下位１６ビットのみを格納する場合、レジスタ７から下位１６ビットをＲＡＭ５ｂに格納する。そのとき、ＲＡＭ５ａは使用されない。
【００７９】
下位１６ビットのみが格納されたデータは、ＲＡＭ５ａ又はＲＡＭ５ｂから読み出したときに、データのビット拡張を行い、元の３２ビットのデータとしてＡＬＵ２に入力する。すなわち、ＲＡＭ５ａに格納された下位１６ビットデータを読み出すときには、選択回路６ｅでＲＡＭ５ａのデータを選択してレジスタ７ｅにセットする。ビット拡張回路８は、レジスタ７ｅのＭＳＢを拡張して、上位１６ビットを生成する。選択回路６ｂは、ビット拡張回路８の出力を選択して、合成回路９ｂの上位１６ビットとする。レジスタ７ｅのデータ（ＲＡＭ５ａのデータ）は、合成回路９ｂの下位１６ビットとなる。合成回路９ｂは、ＲＡＭ５ａのデータ（レジスタ７ｅのデータ）を下位１６ビットとし、レジスタ７ｅのＭＳＢを拡張した１６ビットを上位１６ビットとして、元のデータを生成する。
【００８０】
ＲＡＭ５ｂに格納された下位１６ビットのみのデータを読み出すときには、選択回路６ｅはＲＡＭ５ｂのデータを選択してレジスタ７ｅにセットする。ビット拡張回路８は、レジスタ７ｅのＭＳＢを拡張して、上位１６ビットを生成する。選択回路６ｂは、ビット拡張回路８の出力を選択して、合成回路９ｂの上位１６ビットとする。レジスタ７ｅのデータ（ＲＡＭ５ｂのデータ）は、合成回路９ｂの下位１６ビットとなる。合成回路９ｂは、ＲＡＭ５ｂのデータ（レジスタ７ｅのデータ）を下位ビットとし、選択回路６ｂの出力（ビット拡張回路８で生成された上位１６ビット）を上位１６ビットとして元のデータを生成する。
【００８１】
こうして、ＲＡＭ５ａ又はＲＡＭ５ｂに下位１６ビットのみが格納されたデータは、合成回路９ｂで元の３２ビットデータに拡張されて読み出される。
【００８２】
ＡＬＵ２からの出力の有効ビット数が１６ビット以下の場合、図３の形態と同様、不要な上位１６ビットのデータの格納が削減され、従来よりも効率的に記憶部４にデータを格納することが可能となる。図８では、左のＲＡＭ５ａはＡＬＵ２からの３２ビットの出力データの上位１６ビット又は下位１６ビットのデータを格納し、右のＲＡＭ５ｂはＡＬＵ２からの３２ビットの出力データの下位１６ビットのデータを格納する。図３の記憶部４の構成では、有効ビット数が１６ビット以下のデータであれば、ＲＡＭ５ａ、５ｂに同時に読み書き可能であるが、図８の記憶部４では、１６ビット以下のデータであってもどちらか一方のＲＡＭ５ａ又は５ｂにしか読み書きできない。しかし、図３の構成では記憶部４の出力の３２ビットを選択する選択回路が省略されており、それを含めて回路規模を比較すると、図８の構成は図３の構成に比べて選択回路（ＭＵＸ）の数が少ないため回路規模が小さい。
【００８３】
図９は、図８の記憶部４の構成を用いた場合の、ＡＬＵ２からメモリ５に到る回路構成例を示す図である。３個のＡＬＵ２が、図８の１対のＲＡＭ５ａ、５ｂにアクセス可能である。３２ビットのＡＬＵ２からの出力データを選択する３→１ＭＵＸ６ｆが備わっている。従って、この３個のＡＬＵ２からの出力は、有効ビット数に関係なく１個に制限される。また、ＡＬＵ２への入力においても同様で、有効ビット数に関係なくデータ１個（種類）に制限される。このように、ＡＬＵ２の入出力制限がデータの有効ビット数に依存しないため、１対のＲＡＭ５ａ、５ｂ構成を一つのメモリ５としてみなすと、従来のＲＡＭ構成と同様の処理が適用可能となる。
【００８４】
ＡＬＵ２の入出力データの有効ビット数は、リコンフィギュラブル回路１で実行する所期の演算処理を記述したプログラム３６に基づいて判定される。所期の演算処理がＣ言語で記述される場合、変数の型やコメント文で有効ビット数を判定できる。そして、設定データ生成部３２は、設定データ４０を作成するときに、ＡＬＵ２の入出力データの判定結果に基づいた有効ビット数から、上述した制限でＲＡＭ５ａ、５ｂにデータを格納するための設定データ４０を作成する。
【００８５】
図１０は、複数対のＲＡＭ５ａ、５ｂ、５ｃ、５ｄを用いた記憶部４の構成を示す。図８、図９では１対のＲＡＭ構成であるが、図１０のように複数対のＲＡＭ構成でもよい。図１０は２対のＲＡＭ５ａ、５ｂとＲＡＭ５ｃ、５ｄを、それぞれ図８又は図９の記憶部４の構成で用いた例である。この場合入出力データは有効ビット数に関係なく２個（種類）に制限される。
【００８６】
図３と図８の記憶部４の構成は、それぞれＡＬＵ２の入出力制限が異なる。いずれの構成を採用するかは、処理装置１０を適用するシステムの特性に合わせて決められる。なお、２つの実施の形態を組み合わせた形態も可能である。
【００８７】
本実施の形態においても、３２ビットのデータを上位１６ビットと下位１６ビットに分けて記憶部４に格納する場合について説明したが、データのビット数と記憶部に格納するビット数は３２ビットと１６ビットに限られない。例えば、データのビット数が１６ビットの場合に、記憶部に格納するビット数が８ビットの２つの部分に分割して格納する構成とすることができる。また、データが６４ビットの場合、上位３２ビットと下位３２ビットに分割して記憶部に格納する構成であってもよい。データを上位と下位の２部分に分けて格納する構成は、図８及び図９の構成と同様である。
【００８８】
さらに、データを多くの部分に分割して記憶部に格納する構成も可能である。また、対をなすＲＡＭの１アドレスで指定されるメモリワードのビット数は不均一であってもよい。
【００８９】
図８及び９では、理解を容易にするためにメモリ５の入力側と出力側にレジスタ７、７ｅ等を記載したが、レジスタはデータを保持する回路でなく、データ線であってもよい。
【００９０】
本発明により、効率的に記憶部４にデータを格納することができるため、全体のメモリ容量が従来よりも削減され、回路規模を縮小化できる。
【００９１】
なお、各実施の形態で説明した処理装置１０、リコンフィギュラブル回路１及び記憶部
４の回路構成は一例であり、任意に変更及び修正が可能である。記憶部４の構成は、実施の形態で示したものがすべてではなく、これらに限定されるものではない。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施の形態に係るリコンフィギュラブル回路を備える処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係るリコンフィギュラブル回路の構成の例を示すブロック図である。
【図３】本発明に係る処理装置において、リコンフィギュラブル回路が使用するデータを記憶する記憶部の構成の一例を示す図である。
【図４】図３の記憶部の構成を用いた場合の、ＡＬＵからメモリに到る回路構成例を示す図である。
【図５】複数対のＲＡＭを用いた記憶部の構成を示す図である。
【図６】６４ビットＡＬＵアレイから出力されるデータを４つの１６ビットＲＡＭに格納する場合の記憶部の構成例を示す図である。
【図７】メモリをビット数の異なる３つのＲＡＭで構成した記憶部の例を示す図である。
【図８】本発明に係る処理装置において、リコンフィギュラブル回路が使用するデータを記憶する記憶部の構成の異なる例を示す図である。
【図９】図８の記憶部の構成を用いた場合の、ＡＬＵからメモリに到る回路構成例を示す図である。
【図１０】複数対のＲＡＭを用いた記憶部の構成を示す図である。
【図１１】従来のリコンフィギュラブル回路における記憶部の例を示す図である。
【符号の説明】
【００９３】
１    リコンフィギュラブル回路
２    論理回路（ＡＬＵ）
３    接続部
４    記憶部
５    メモリ
５ａ、５ｂ、５ｃ、５ｄ、５ｅ、５ｆ  ＲＡＭ
６ａ、６ｂ、６ｃ、６ｄ、６ｅ、６ｆ  選択回路
７、７ａ、７ｂ、７ｃ、７ｄ、７ｅ、７ｆ  レジスタ
７ｇ、７ｈ  拡大回路
８、８ａ、８ｂ    ビット拡張回路
９ａ、９ｂ、９ｃ    合成回路
１０    処理装置
３０    コンパイル部
３２    設定データ生成部
３４    設定記憶部
３６    プログラム
３８    データフローグラフ
４０    設定データ
【図１】
0004669781.tif 000002
【図２】
0004669781.tif 000003
【図３】
0004669781.tif 000004
【図４】
0004669781.tif 000005
【図５】
0004669781.tif 000006
【図６】
0004669781.tif 000007
【図７】
0004669781.tif 000008
【図８】
0004669781.tif 000009
【図９】
0004669781.tif 000010
【図１０】
0004669781.tif 000011
【図１１】
0004669781.tif 000012