(57)【要約】【課題】容易にカスタマイズ対応可能な半導体集積回路装置を提供する。【解決手段】アレイ型プロセッサ部（３００）は、プロセッサエレメント（３３０）とプログラマブルスイッチ（３２０）とを備えるプロセッサユニット（３１０）をマトリクス状に配置する。プロセッサエレメント（３３０）は、複数ビット幅の第１演算器（３３２）と複数ビット幅より狭い所定のビット幅の第２演算器（３３３）とを有する。第１演算器（３３２）および第２演算器（３３３）の接続構成は構成情報メモリ（３４０）に設定される構成情報に基づいて変更可能である。プログラマブルスイッチ（３２０）は、配線からプロセッサエレメントに複数ビット幅のデータおよび所定のビット幅のデータを構成情報に基づいて入出力する。制御回路（２００）は、内部バス（１８０）に接続され、アレイ型プロセッサ部（３００）の動作を制御し、内部バス（１８０）を介してデータを授受する。【選択図】図１
2012243086.tif 000002
【特許請求の範囲】
【請求項１】
複数ビット幅のデータを入力し、前記複数ビット幅の演算結果を出力する前記複数ビット幅の第１演算器と、前記複数ビット幅より狭い所定のビット幅のデータを入力し、前記所定のビット幅の演算結果を出力する第２演算器とを有し、構成情報メモリに設定される構成情報に基づいて前記第１演算器および前記第２演算器の接続構成を変更可能なプロセッサエレメントと、
配線から前記プロセッサエレメントに前記複数ビット幅のデータおよび前記所定のビット幅のデータを前記構成情報メモリに設定される構成情報に基づいて入出力するプログラマブルスイッチと
を備えるプロセッサユニットをマトリクス状に配置するアレイ型プロセッサ部と、
内部バスを介してデータを授受し、前記アレイ型プロセッサ部の動作を制御する制御回路と、
前記アレイ型プロセッサ部との間で前記内部バスを介してデータを授受するＣＰＵと
を具備する
半導体集積回路装置。
【請求項２】
前記複数ビット幅は８ビット幅であり、前記所定のビット幅は１ビット幅である
請求項１に記載の半導体集積回路装置。
【請求項３】
前記制御回路は、前記内部バスとの間で受動的にデータの授受を行う内部バススレーブ回路を備え、
前記内部バススレーブ回路は、前記ＣＰＵのメモリアドレス空間にマッピングされる制御レジスタ群を含み、前記ＣＰＵが前記制御レジスタ群に制御データを書き込むことにより前記アレイ型プロセッサ部の動作を制御する
請求項１または請求項２に記載の半導体集積回路装置。
【請求項４】
前記制御回路は、前記ＣＰＵを介さずに所定のメモリに格納される構成情報を前記構成情報メモリに書き込むＤＭＡ回路を備える
請求項１から請求項３のいずれかに記載の半導体集積回路装置。
【請求項５】
前記構成情報メモリは、前記ＣＰＵのメモリアドレス空間にマッピングされ、
前記制御回路は、前記ＣＰＵから前記構成情報メモリをリードおよびライトアクセスできるように前記内部バス上のアドレスを解析するアドレスデコーダを備える
請求項１から請求項４のいずれかに記載の半導体集積回路装置。
【請求項６】
前記プロセッサユニットは、前記ＣＰＵのメモリアドレス空間にマッピングされるレジスタファイルを更に備え、
前記アドレスデコーダは、前記ＣＰＵから前記レジスタファイルをリードおよびライトアクセスできるように前記内部バス上のアドレスを解析する
請求項５に記載の半導体集積回路装置。
【請求項７】
前記構成情報メモリは、前記制御回路から読み出しワードを指定可能な複数ワード構成のメモリを含み、
前記制御回路は、前記構成情報メモリの読み出しワードを指定する動作制御レジスタを含み、前記ＣＰＵが前記動作制御レジスタに所定の値を書き込むことによって回路構成を切り替える
請求項１から請求項６のいずれかに記載の半導体集積回路装置。
【請求項８】
前記構成情報メモリは、前記制御回路から読み出しワードを指定可能な複数ワード構成のメモリを含み、
前記制御回路は、前記構成情報メモリの読み出しワードを指定する動作制御レジスタを含み、所定時間毎に前記動作制御レジスタを書き換えて回路構成を切り替え、複数の回路の時分割実行する
請求項１から請求項６のいずれかに記載の半導体集積回路装置。
【請求項９】
前記プロセッサエレメントは、複数の前記所定のビット幅のデータを入力して連結し、前記複数のビット幅のデータとして出力する命令を有する
請求項１から請求項８のいずれかに記載の半導体集積回路装置。
【請求項１０】
前記プロセッサエレメントは、複数の前記所定のビット幅のデータを入力して連結し、入力される前記複数のビット幅のデータと前記連結されたデータを左シフトして得られるデータとを論理和演算して出力する命令を有する
請求項９に記載の半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置に関する。
【背景技術】
【０００２】
システムＬＳＩやマイクロコントローラにＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）などを載せることによって、単一チップで複数の製品ラインアップを用意したり、ユーザごとに異なる要求に対応したりすることがある。例えば、特開平０５−２３３８４４号公報には、チップ完成後、または電子機器内への組み込み後において、チップ内のユーザロジック回路を変更可能な１チップマイクロコンピュータが開示されている。外部からＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に対し回路データを書き込み、またはＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が外部から回路データを読み取ってＰＲＯＭに回路データを書き込み、さらにＰＲＯＭ内のデータをＦＰＧＡに書き込むことによって、ＦＰＧＡに任意のユーザロジック回路を構成する。
【０００３】
また、特開２００５−２４４２４７号公報には、不揮発性メモリユニットと可変論理ユニットを搭載し、可変論理ユニットに対する論理の可変制御を制限可能にする半導体装置が開示されている。この半導体装置は、書換え可能な不揮発性メモリセルを有する不揮発性メモリユニットと、複数の記憶セルにロードされる論理構成定義データに従って論理機能が決定される可変論理ユニットと、書き込み許可回路を有する。書き込み許可回路は、半導体装置の外部から供給される論理構成定義データの書き込みを制限する。例えば、パスワードが供給されたときだけ書き込みを許可する。ベンダ側とユーザ側の夫々で可変論理ユニットに対するプログラムを行う場合、ベンダ側はユーザを特定して、書き込みに制限を加えることが可能になる。
【０００４】
このようなデバイスの応用例として、特開平０９−１４６６１６号公報には、複数の入出力処理を行う入出力処理部を有し、この入出力処理部が複数の外部端子を介して外部とのデータ入出力を行うワンチップサーボコントローラが開示されている。各種アナログ／デジタルＩＯやシリアル回路等の複数の回路と、少ない本数の外部端子との間にＦＰＧＡが挿入される。これにより、使用状況に応じて外部端子のＩＯ機能への割り当てが変更自在になり、少ない外部端子で汎用性を持たせることができる。
【０００５】
ＦＰＧＡやＰＬＤなどの再構成可能デバイスは、面積効率が低い。ＦＰＧＡ上に論理を実装すると、同じ論理を同じプロセスのスタンダードセルでハードウェア設計した場合に比べ一般に数十〜百倍超の面積を必要とすると言われている。これは、例えゲート１段の論理を作る場合でも、ＦＰＧＡやＰＬＤではメモリから成るルックアップテーブルや何段ものプログラマブル配線、及び配線を設定する構成情報メモリなどが必要となるためである。
【０００６】
半導体産業において最も重要なことは、一枚のシリコンウェハーからいかに大量のチップを作り、原価を下げるかということであり、チップの面積を縮小することは非常に重視される。特に大量生産されるマイクロコントローラの場合、再構成可能デバイスを載せることによってチップ面積が肥大化してしまうと、それだけでチップ原価が大きくなってしまい、複数製品を単一チップで実現することによるメリットを上回ってしまいかねない。あるいは、原価の上昇を抑えるには、載せられる再構成可能デバイスの規模は非常に小さくなり、汎用性の実現が困難になる。
【０００７】
また、特許第３５２８９２２号公報には、プロセッサをアレイ状に並べたものをプログラマブルなスイッチで接続した構成をとり演算を主体として行うデータパス部と、状態遷移手段の実現を容易とした構成をとり制御を行う状態遷移管理部との二つを独立して持つアレイ型プロセッサが開示されている。このアレイ型プロセッサは、それぞれを処理目的に応じて特化した構成で実現し、演算と制御との両者を効率良く実装及び処理する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０５−２３３８４４号公報
【特許文献２】特開２００５−２４４２４７号公報
【特許文献３】特開平０９−１４６６１６号公報
【特許文献４】特許第３５２８９２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、単一チップを用いて複数品種の製品ラインアップを形成し、顧客要求に容易にカスタマイズ対応可能な半導体集積回路装置を提供する。
【課題を解決するための手段】
【００１０】
以下に、［発明を実施するための形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明の観点では、半導体集積回路装置は、アレイ型プロセッサ部（３００）と、制御回路（２００）と、ＣＰＵ（１００）とを具備する。ＣＰＵ（１００）は、アレイ型プロセッサ部（３００）との間で内部バス（１８０）を介してデータを送受する。アレイ型プロセッサ部（３００）は、プロセッサエレメント（３３０）と、プログラマブルスイッチ（３２０）とを備えるプロセッサユニット（３１０）をマトリクス状に配置する。プロセッサエレメント（３３０）は、複数ビット幅のデータを入力し、複数ビット幅の演算結果を出力する複数ビット幅の第１演算器（３３２）と、複数ビット幅より狭い所定のビット幅のデータを入力し、所定のビット幅の演算結果を出力する第２演算器（３３３）とを有する。第１演算器（３３２）および第２演算器（３３３）の接続構成は、構成情報メモリ（３４０）に設定される構成情報に基づいて変更可能である。プログラマブルスイッチ（３２０）は、配線からプロセッサエレメントに複数ビット幅のデータおよび所定のビット幅のデータを構成情報メモリ（３４０）に設定される構成情報に基づいて入出力する。制御回路（２００）は、内部バス（１８０）を介してデータを授受し、アレイ型プロセッサ部（３００）の動作を制御する。
【発明の効果】
【００１２】
本発明によれば、単一チップを用いて複数品種の製品ラインアップを形成することができ、顧客要求に容易にカスタマイズ対応可能な半導体集積回路装置を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係る半導体集積回路装置の構成を示す図である。
【図２】本発明の実施の形態に係るアレイ型プロセッサ部の構成を示す図である。
【図３】ＦＰＧＡの実装例を説明する図である。
【図４】アレイ型プロセッサ部の実装例を説明する図である。
【図５】本発明の実施の形態に係るプロセッサユニットの構成を示す図である。
【図６】本発明の実施の形態に係る半導体集積回路装置の応用例を示す図である。
【図７】本発明の実施の形態に係る半導体集積回路装置の応用例を示す図である。
【図８】本発明の実施の形態に係る結合論理の展開例を説明する図である。
【図９】本発明の実施の形態に係る結合論理の他の展開例を説明する図である。
【図１０】本発明の実施の形態に係る半導体集積回路装置の応用例を示す図である。
【図１１】本発明の実施の形態に係るタイマの展開例を説明する図である。
【図１２】本発明の実施の形態に係る半導体集積回路装置の応用例を示す図である。
【発明を実施するための形態】
【００１４】
図１に、本発明の実施の形態に係る半導体集積回路装置の構成を示す。半導体集積回路装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００と、メモリ１５０と、周辺回路１６０と、制御回路２００と、アレイ型プロセッサ３００とを具備する。ＣＰＵ１００と、メモリ１５０と、周辺回路１６０と、制御回路２００とは、内部バス１８０に接続され、相互にデータを授受する。
【００１５】
ＣＰＵ１００は、メモリ１５０に格納されるプログラムを実行し、内部バス１８０を介して周辺回路１６０、制御回路２００の設定、制御を行う。ＣＰＵ１００は、メモリ１５０や周辺回路１６０、制御回路２００（制御回路２００を介してアレイ型プロセッサ３００）からデータを読み出し、データを処理してメモリ１５０や周辺回路１６０、制御回路２００（制御回路２００を介してアレイ型プロセッサ３００）に出力する。メモリ１５０は、読み出し専用のメモリ、書き換え可能なメモリ等を含み、ＣＰＵ１００が実行するプログラムやデータを格納する。周辺回路１６０は、例えば、非同期シリアル通信用送受信回路（ＵＡＲＴ：Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）、クロック同期シリアル通信回路（ＣＳＩ：Ｃｌｏｃｋ  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｓｅｒｉａｌ  Ｉｎｔｅｒｆａｃｅ）、タイマ等を含む。
【００１６】
制御回路２００は、内部バススレーブ回路２１０と、アドレスデコーダ２２０と、ＤＭＡ回路２３０とを備える。さらに、制御回路２００は、ＤＭＡ回路２３０を制御するＤＭＡ開始レジスタ２３２、ＤＭＡアドレスレジスタ２３４、ＤＭＡサイズレジスタ２３６と、アレイ型プロセッサ３００を制御する動作レジスタ２２２、リセットレジスタ２２４、アドレスバッファ２１６、リードバッファ２１４、ライトバッファ２１２とを備える。
【００１７】
制御回路２００は、アレイ型プロセッサ３００に接続され、ＣＰＵ１００が制御回路２００内の特定のアドレスにマッピングされる制御レジスタに、指示を示すデータを書き込むことにより、それに対応するアレイ型プロセッサ３００の制御を行うことができる。リセットレジスタ２２４にリセット指示を示すデータを書き込むことによって、電源投入後のリセット投入からクロックが安定し、アレイ型プロセッサ３００の内部回路が初期化されるまで、アレイ型プロセッサ３００はリセット状態を継続する。動作レジスタ２２２に動作開始あるいは動作停止を指示するデータを書き込むことにより、動作開始信号あるいは動作停止信号を送り、アレイ型プロセッサ３００の動作を制御することができる。また、動作レジスタ２２２に初期設定動作を指示するデータを書き込むことにより、ＣＰＵ１００は必要に応じてアレイ型プロセッサ３００を初期化することができる。また、制御回路２００は、内部の構成情報メモリに対してＣＰＵ１００から読み書きアクセスできるように、アドレスデコードする機能を有する。さらに、制御回路２００は、ＤＭＡ機能を持ちチップ内もしくはチップ外のメモリに格納された構成情報を転送する。
【００１８】
内部バススレーブ回路２１０は、制御回路２００を内部バス１８０に接続するための回路であり、内部バス１８０との間で、バスプロトコルに従ってデータの送受を行う。ＣＰＵ１００は、アドレスを指定して、制御回路２００内のレジスタ等のデータを読み書きすることができる。
【００１９】
アドレスデコーダ２２０は、内部バス１８０を介して制御回路２００あるいはアレイ型プロセッサ３００をアクセスするときのアドレスをデコードする。したがって、ＤＭＡ開始レジスタ２３２、ＤＭＡアドレスレジスタ２３４、ＤＭＡサイズレジスタ２３６、動作レジスタ２２２、リセットレジスタ２２４、アドレスバッファ２１６、リードバッファ２１４、ライトバッファ２１２には、所定のアドレスが割り当てられ、ＣＰＵ１００は、そのアドレスに基づいてアクセスする。また、アレイ型プロセッサ３００内のレジスタファイルおよび構成情報メモリに割り当てられたアドレスへのアクセスであった場合、アドレスデコーダ２２０は、アレイ型プロセッサ３００の内部アクセスアドレスを生成してアドレスバッファ２１６を介してアレイ型プロセッサ３００に示し、アレイ型プロセッサ３００内のレジスタファイルおよび構成情報メモリをアクセスする。アレイ型プロセッサ３００への書き込みの場合は、書き込みデータは、内部バススレーブ回路２１０、ライトバッファ２１２を介してアレイ型プロセッサ３００へ転送される。読み出しの場合は、アレイ型プロセッサ３００から出力される読み出しデータは、リードバッファ２１４、内部バススレーブ回路２１０を介して内部バス１８０へ転送される。
【００２０】
ＤＭＡ回路２３０は、半導体集積回路装置内外のメモリに格納される構成情報をアレイ型プロセッサ３００に転送する。このとき、ＤＭＡアドレスレジスタ２３４に構成情報を格納するメモリのアドレスが設定され、ＤＭＡサイズレジスタ２３６に転送する構成情報のサイズがＣＰＵ１００によって設定されている。ＣＰＵ１００がＤＭＡ開始レジスタ２３２にＤＭＡ転送の開始を指示するデータを書き込むと、構成情報がＣＰＵ１００を介さずにアレイ型プロセッサ３００に転送される。
【００２１】
制御回路２００は、内部バススレーブ回路２１０を有するため、ＣＰＵ１００からのメモリアクセスの形式でアレイ型プロセッサ３００のリセット／動作開始／動作停止を制御することができる。また、ＣＰＵ１００からアレイ型プロセッサ３００の構成情報の書き込みが行える。また、アレイ型プロセッサ３００によって実現されるユーザ回路は、内部に形成される内部レジスタに対してＣＰＵ１００からメモリアクセス形式によりアクセスできる。そのため、ＣＰＵ１００からデータを設定したり読み出したりする必要のあるユーザ回路を実現できる。また、制御回路２００は、ＤＭＡ回路２３０を有し、半導体集積回路装置内外のメモリに格納される構成情報をアレイ型プロセッサ３００内の構成情報メモリ３４０にＣＰＵ１００を介さずに転送し、構成情報書き込みができる。
【００２２】
アレイ型プロセッサ３００は、図２に示されるように、演算器を含むプロセッサユニット３１０をマトリクス状に配置し、プログラマブルな配線で電気的に接続されて構成される。詳細は後述するが、このプロセッサユニット３１０には、演算器及びレジスタファイルが内蔵されている。演算器の動作設定や、プログラマブル配線を構成するプログラマブルスイッチの接続設定は、構成情報メモリに格納された構成情報によって設定される。したがって、必要に応じて異なる構成へと変更することが可能である。これにより、アレイ型プロセッサでユーザ所望の回路を実現できる。このようなアレイ型プロセッサ３００は、対象処理に応じて、ハードウェア構成（接続）を変更できるが、従来のＦＰＧＡやＰＬＤに比べて面積効率が優れている。
【００２３】
図３に、ｍビット幅の１組のデータを取り込んで処理する場合のＦＰＧＡの実装例を模式的に示す。ｍビット幅の配線がｕ組実装されているＦＰＧＡであれば、ｍビット幅のデータの１ビットを取り込む場合、プログラマブルスイッチ８２１は、ｍ×ｕ本の配線の中から１本の配線を選択することになる。その選択を設定する構成情報メモリ８１１は、入力される信号線の本数が多いため容量が大きくなる。また、１ビット毎にルックアップテーブル８２２を持ち、そのルックアップテーブル８２２の構成を設定する構成情報メモリ８１２を備える。そのため、ｍビット幅の設定にはｍ倍の構成情報メモリ８１２が必要になる。
【００２４】
図４には、同じくｍビット幅の１組のデータを取り込んで処理する場合のアレイ型プロセッサの実装例を模式的に示す。ｍビット幅の配線がｕ組実装されている場合、プログラマブルスイッチ８４１は、ｍビットの該当する１ビットの配線を各組から選択するだけでよいため、ｕ本の配線入力となる。したがって、上記に比べ、プログラマブルスイッチ８４１の構成は格段に簡単になる。したがって、その選択を設定する構成情報メモリ８３１の容量も少なくて済む。また、演算器８４２の構成を定義する構成情報メモリ８３２は、ｍビット共通に設定できるため、少ない容量でよい。このように、処理の大半をｍビットプログラマブルスイッチとｍビット演算器を用いて効率的に行うことにより、少ない面積で汎用的な処理が実現できる。
【００２５】
図５は、本発明の実施の形態に係るプロセッサユニット３１０の構成を示す図である。ここでは、プロセッサユニット３１０は、ｍビットデータを処理する演算器３３２と、ｎビットデータを処理する演算器３３３とを有するものとするが、ｍビットデータを処理する演算器３３２だけを有する構成でもよい。
【００２６】
プロセッサユニット３１０は、スイッチエレメント３２０と、プロセッサエレメント３３０と、構成情報メモリ３４０とを具備する。構成情報メモリ３４０は、スイッチエレメント３２０およびプロセッサエレメント３３０の内部の接続構成を示す構成情報を格納する。
【００２７】
スイッチエレメント３２０は、入力スイッチ３２２と、出力スイッチ３２４と、バスコネクタスイッチ３２６とを備える。入力スイッチ３２２は、プロセッサエレメント３３０に、ｍ×ｕ本の配線からｍ本の配線を選択してｍビット幅のデータを供給し、ｎ×ｖ本の配線からｎ本の配線を選択してｎビット幅のデータを供給する。出力スイッチ３２４は、プロセッサエレメント３３０から出力される演算結果を示すｍビットのデータをｕ組のうちの設定されるｍ本の配線に供給し、ｎビットのデータをｖ組のうちの所定のｎ本の配線に供給する。バスコネクタスイッチ３２６は、縦横に配置されるｍ本×ｕ組の配線およびｎ本×ｖ組の配線を接続する。これらのプログラマブルスイッチの接続構成は、構成情報メモリ３４０に設定される。なお、入力スイッチ３２２は、プログラマブルスイッチ８４１に相当する。このようなプログラマブルスイッチにより、任意の接続が可能となるプログラマブル配線が形成される。
【００２８】
プロセッサエレメント３３０は、ｍビット幅の演算器３３２と、ｎビット幅の演算器３３３と、ｍビット幅のレジスタファイル３３６と、ｎビット幅のレジスタファイル３３７とを備える。プロセッサエレメント３３０は、構成情報メモリ３４０に設定されている構成情報に基づいて、入力されるデータとレジスタファイル３３６、３３７に保持されるデータとを用いて演算し、ｍビット幅およびｎビット幅の結果データを出力スイッチ３２４に出力する。
【００２９】
図６は、限られた本数の外部端子とＩＯ機能の割当変更を上述のアレイ型プロセッサ３００によって実現する例を示すブロック図である。この例では、２つのＵＡＲＴ回路１６１、１６２と２つのシリアル通信（ＣＳＩ）回路１６３、１６４について、１０本の外部端子への割当の組み合せを変更することができる。外部端子には、Ｉ／Ｏバッファ４００およびＩＯパッド５００が１対１に接続されている。図６には、そのＩ／Ｏバッファ４００およびＩＯパッド５００までの接続が示されている。なお、以下では、ｍ＝８、ｎ＝１として説明する。
【００３０】
ＵＡＲＴ回路１６１、１６２は、４本の入力信号ＤＣＤ、ＤＳＲ、ＣＴＳ、ＳＩＮ、３本の出力信号ＤＴＲ、ＲＴＳ、ＳＯＵＴを有する。ＣＳＩ回路１６３、１６４は、２本の入力信号ＳＣＫ、ＳＩＮ、１本の出力信号ＳＯＵＴを有する。
【００３１】
ＵＡＲＴ回路１６１、１６２の４本の入力はアレイ型プロセッサ３００の８ビット幅の出力端子ＯＵＴ１［７：０］、ＯＵＴ２［７：０］に接続され、ＵＡＲＴ回路１６１、１６２の３本の出力はアレイ型プロセッサ３００の８ビット幅の入力端子ＩＮ１［７：０］、ＩＮ２［７：０］に接続される。また、ＣＳＩ回路１６３、１６４の２本の入力はアレイ型プロセッサ３００の８ビット幅の出力端子ＯＵＴ３［７：０］、ＯＵＴ４［７：０］に接続され、ＣＳＩ回路１６３、１６４のそれぞれの１本の出力はアレイ型プロセッサ３００の８ビット幅の入力端子ＩＮ３［７：０］、ＩＮ４［７：０］に接続される。なお、各ＣＳＩ／ＵＡＲＴ回路の入出力端子数は１〜４本であり、アレイ型プロセッサ３００の８ビット幅の入出力端子に接続すると、未接続が生じる。その場合は上位ビットの端子は接続せずに開放される。また、１０本の外部端子（ＩＯパッド）５００はＩＯバッファ４００を介してアレイ型プロセッサ３００の１ビット幅の入力端子及び出力端子に接続される。
【００３２】
図７に、ＵＡＲＴ回路１６１の全端子と、ＵＡＲＴ回路１６２の一部端子とを外部端子（ＩＯパッド）５００に割り当て、ＣＳＩ機能を使用しない場合の構成を示す。アレイ型プロセッサ３００の演算器には、ある入力をシフトして別の入力とＯＲ演算するシフトオア命令が設定される。これによって、アレイ型プロセッサ３００にまとめて入力される８ビット幅の信号の各々を１ビットずつに分離して１ビット出力端子に接続したり、アレイ型プロセッサ３００に１ビットずつ入力される信号を結合して８ビット幅出力端子に接続することができる。この例では、ＵＡＲＴ回路１６１の入力信号ＳＩＮ、ＣＴＳ、ＤＳＲ、ＤＣＤ及びＵＡＲＴ回路１６１の出力信号ＳＯＵＴ、ＲＴＳ、ＤＴＲ、ＵＡＲＴ回路１６２の入力信号ＳＩＮ及び出力信号ＳＯＵＴは、外部端子に割り当てられる。
【００３３】
ＵＡＲＴ回路１６１の出力端子は、複数本まとめてアレイ型プロセッサ３００の８ビット幅の入力端子に入力され、内部の演算器のシフトオア命令で１ビット切り出して（０ビット目データの切り出し論理３５０、１ビット目データの切り出し論理３５１、２ビット目データの切り出し論理３５２）、アレイ型プロセッサ３００の１ビット幅の出力端子に出力され、ＩＯバッファ４０５〜４０７経由で外部端子（ＩＯパッド）５０５〜５０７に電気的に接続される。また、外部端子（ＩＯパッド）５０１〜５０４からＩＯバッファ４０１〜４０４経由で入力される入力信号は、アレイ型プロセッサ３００の１ビット幅の入力端子に入力され、演算器のシフトオア命令で結合され（結合論理３６０）、アレイ型プロセッサの８ビット幅の出力端子に出力され、ＵＡＲＴ回路１６１へ電気的に接続される。結合論理３６０は、図８に示されるように、シフトオア命令に設定された内部の演算器３６１を３段連結して実現される。このシフトオア命令は演算器内部の１ビット左シフトを行う左シフト論理３６２と、８ビットのデータのオア（論理和）を算出する論理和３６３で実現されている。
【００３４】
ＵＡＲＴ回路１６２の出力端子は、複数本まとめてアレイ型プロセッサ３００の８ビット幅の入力端子に入力され、内部の演算器のシフトオア命令で１ビット切り出して（０ビット目データの切り出し論理３５０）、アレイ型プロセッサ３００の１ビット幅の出力端子に出力され、ＩＯバッファ４０９経由で外部端子（ＩＯパッド）５０９に電気的に接続される。また、外部端子（ＩＯパッド）５０８からＩＯバッファ４０８経由で入力される入力信号は、アレイ型プロセッサ３００の１ビット幅の入力端子に入力され、接続切り替えされてアレイ型プロセッサの８ビット幅の出力端子に出力され、ＵＡＲＴ回路１６２へ電気的に接続される。
【００３５】
このように、アレイ型プロセッサ３００の構成情報を変更することによって、ＵＡＲＴ回路１６１およびＵＡＲＴ回路１６２の端子を外部端子（ＩＯパッド）に割り当てたり、ＣＳＩ回路１６３およびＣＳＩ回路１６４を外部端子（ＩＯパッド）に割り当てたり等、端子割り当てを自由に変更することができるようになる。
【００３６】
上述の結合論理３６０は、図８に示されるように、結合ビット数分のシフトオア命令に設定された演算器３６１を連結して実現している。これは複数の演算器が必要となり、面積効率が低下する。さらに、複数の演算器を連結することにより遅延が大きくなる。アレイ型プロセッサ３００内の演算器に、複数の１ビットデータを複数ビット連結して出力する命令を追加すると効率がよくなる。
【００３７】
図９にこのような命令の実装例を示す。図９（ａ）には、４本の１ビット入力ＩＮ１〜ＩＮ４を連結して８ビット出力ＯＵＴの下位４ビットに出す命令ＯＰ１が示される。８ビット出力ＯＵＴ［７：０］は、｛０，０，０，０，ＩＮ４，ＩＮ３，ＩＮ２，ＩＮ１｝となる。図９（ｂ）には、４本の１ビット入力ＩＮ１〜ＩＮ４を連結して左４ビットシフトした上で、８ビット入力と論理和をとって８ビット出力ＯＵＴに出す命令ＯＰ２が示される。８ビット出力ＯＵＴ［７：０］は、｛ＩＮ４，ＩＮ３，ＩＮ２，ＩＮ１，０，０，０，０｝｜ＩＮ５となる。このような命令を備えることによって、演算器２つで８本の１ビット入力を連結して８ビット出力に出すことができる。１つの演算器で８本の１ビット入力を８ビット出力に連結しても構わないが、演算器の入力本数を増やすとプログラマブルスイッチの増大につながるため、面積効率が低下する。このような命令を用いて上述の結合論理を実現すると、図９（ｃ）に示されるように簡略化できる。
【００３８】
上述される例では、単純にＩＯ機能の入出力端子間をそのまま接続しているだけであるが、アレイ型プロセッサ３００は、自由な論理が実現できる。そのため、半導体集積回路装置上の複数の機能の間を結ぶ論理を実現し、連携動作を実現することもできる。例えば、図１０に示されるように、タイマ１７１〜１７３の３個のタイマ機能を有する半導体集積回路装置の場合、これらのタイマ機能のスタートトリガ、タイマ出力等の入出力端子をアレイ型プロセッサ３００に接続する。２つのタイマ１７１、１７２のタイマ出力の論理積を取った信号を別のタイマ１７３のスタートトリガ端子に入力する。タイマ１７１、１７２のタイマ出力が“Ｈｉ”になったときに別のタイマ１７３を起動するような動作を実現する場合には、アレイ型プロセッサ３００上の演算器で論理積論理を実現することにより容易に実現できる。
【００３９】
また、アレイ型プロセッサ３００に搭載される演算器には、加算命令や比較命令があるため、図１１に示されるように、タイマ自体を数個の演算器およびレジスタを組み合せることにより簡単につくることができる。図１１に示されるタイマ機能３８０は、レジスタ３８１〜３８３と、比較命令に設定された演算器３８４、３８５と、セレクタ命令に設定された演算器３８６と、加算命令に設定された演算器３８７とを備える。レジスタ３８１には、タイマ値の最大値が設定される。レジスタ３８２には位相を示す判定値が設定される。比較命令に設定された演算器３８４は、レジスタ３８１に格納される最大値とタイマの出力値である加算命令に設定された演算器３８７の出力とを比較し、タイマ値が最大値になるとセレクタ命令に設定された演算器３８６を制御してカウント値を“０”にする。カウント値はレジスタ３８３に保持される。加算命令に設定された演算器３８７は、レジスタ３８３に保持されるカウント値に“１”を加算してタイマ値を更新する。タイマ値は複数ビットのデータであるため、従来のＦＰＧＡやＰＬＤでは相当大きな面積が必要となる。このようにアレイ型プロセッサ３００はタイマ機能を容易に実現することができる。
【００４０】
また、内部レジスタに対してＣＰＵ１００からメモリアクセス方式により直接アクセスを行えるため、図１１に示されるレジスタ３８１への最大値設定、レジスタ３８２への判定値設定はＣＰＵ１００から直接行える。そのため、チップ上のタイマと同じ使い方が可能である。したがって、半導体集積回路装置にタイマ機能が搭載されていない場合、あるいは、半導体集積回路装置上に予め搭載されているタイマの機能がユーザ仕様に合わない場合は、タイマ自体をアレイ型プロセッサで実現することも可能である。
【００４１】
また、構成情報メモリが複数ワード構成を持つようなアレイ型プロセッサの場合、複数回路を格納できる。したがって、制御回路２００の制御レジスタ（例えば動作レジスタ２２２）にＣＰＵ１００から制御データを書き込むことにより、その制御データに対応する構成情報メモリの読み出しワードを指定する信号を出力することができる。制御回路２００から構成情報メモリの読み出しワードを指定する信号を出力することによって、搭載した回路構成を瞬時に切り替えることができる。また、制御回路２００が一定時間ごとに切り替え信号を出力することによって、複数の回路の時分割実行も実現できる。時分割実行することによって、大きな規模のユーザ回路を実質的に実現できる。例えば、図１２は、時分割実行の例を模式的に示した図である。図１２に示されるように、ネットワークのパケット処理のように大きな入力データを処理する場合、一括入力が難しいため時分割でデータを入力することになる。その際、入力されたデータから順に処理を行っていく。最終データが入力された段階で、処理を終了させることができる。この場合も、その時点で入力されるデータ（および前サイクルまでに処理を終えた結果）を用いて処理する回路のみが構成されている。このように、処理が必要な時にのみ必要なデータパスが構成され、それ以外の時には構成されないため、全ての回路を常時構成するより必要な面積がずっと少なくて済む。
【００４２】
このように、アレイ型プロセッサは、プロセッサエレメントをアレイ状に並べ、プログラマブルな配線で電気的に接続されている。このプロセッサエレメントには、演算器及びレジスタファイルが内蔵されている。演算器の動作設定やプログラマブル配線を構成するプログラマブルスイッチの接続設定は、構成情報メモリに格納された構成情報によって設定される。したがって、必要に応じて異なる構成に変更することが可能である。これにより、アレイ型プロセッサでユーザ所望の回路を実現できる。
【００４３】
このアレイ型プロセッサの特徴の一つは、ｍビットとｎビットの２つのビット幅の演算器やプログラマブルスイッチを持っていることである。このようなアレイ型プロセッサは、対象処理に応じてハードウェア構成を変更できる。アレイ型プロセッサの場合、従来のＦＰＧＡやＰＬＤに比べて面積効率が優れている。これは、ｍビット幅のスイッチや演算器の命令は共通の構成情報メモリの値で設定できるためである。ＦＰＧＡでは１ビットごとに設定しなければならないため、ｍビット幅の設定にはｍ倍の構成情報メモリが必要になる。ｎ＝１とした場合のｎビット演算器／ｎビットスイッチではＦＰＧＡと大差ないが、処理の大半をｍビット演算器／ｍビットスイッチで効率よく行うことで、少ない面積で汎用的な処理が実現できる。
【００４４】
また、構成情報メモリが複数ワード構成を持つようなアレイ型プロセッサの場合、複数の構成情報を格納することができる。これを時分割で切り替えることによりさらに面積効率を良くすることができる。例えば、構成情報メモリのワード数を倍にする場合、構成情報メモリ以外の回路部分はほとんど変えずに実現でき、時分割で切り替えることによって実現できる回路はトータルで倍になるため、面積効率が向上する。構成情報メモリが複数ワード構成を持つようなアレイ型プロセッサの場合に、複数の回路を搭載して高速に切り替えたり、時分割実行することによって、大きな規模のユーザ回路規模を実質的に実現できる。
【００４５】
本発明に係る半導体集積回路装置は、システムＬＳＩやマイクロコントローラに、このようなｍビット／ｎビット幅演算器の接続関係をｍビット／ｎビット幅のプログラマブルスイッチで自由に変更できるアレイ型プロセッサ、及び制御回路を搭載する半導体集積回路装置である。このアレイ型プロセッサによって外部端子のＩＯ機能への割り当てを変更したり、内部マクロ同士の接続を切り替えられるようにし、単一チップで複数の製品ラインアップを用意したり、顧客ごとに異なる要求に対応できる。
【００４６】
以上、実施の形態を参照して本願発明を説明したが、上記実施の形態は、矛盾のない限り組み合わせて実施可能である。また、本願発明は上記実施の形態に限定されるものではなく、本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００４７】
１００  ＣＰＵ
１５０  メモリ
１６０  周辺回路
１６１、１６２  ＵＡＲＴ回路
１６３、１６４  ＣＳＩ回路
１７１〜１７３  タイマ
１８０  内部バス
２００  制御回路
２１０  内部バススレーブ回路
２１２  ライトバッファ
２１４  リードバッファ
２１６  アドレスバッファ
２２０  アドレスデコーダ
２２２  動作レジスタ
２２４  リセットレジスタ
２３０  ＤＭＡ回路
２３２  ＤＭＡ開始レジスタ
２３４  ＤＭＡアドレスレジスタ
２３６  ＤＭＡサイズレジスタ
３００  アレイ型プロセッサ
３１０  プロセッサユニット（ＰＵ）
３２０  スイッチエレメント（プログラマブルスイッチ）
３２２  入力スイッチ
３２４  出力スイッチ
３２６  バスコネクタスイッチ
３３０  プロセッサエレメント
３３２  演算器（ｍビット幅）
３３３  演算器（ｎビット幅）
３３６  レジスタファイル（ｍビット幅）
３３７  レジスタファイル（ｎビット幅）
３４０  構成情報メモリ（ＣＦＧＭ）
３５０  ０ビット目データ切り出し
３５１  １ビット目データ切り出し
３５２  ２ビット目データ切り出し
３６０  結合論理
３６１  シフト論理和演算器
３６２  左シフト論理
３６３  論理和
３８０  タイマ機能
３８１〜３８３  レジスタ
３８４、３８５  比較器
３８６  セレクタ
３８７  加算器
４００、４０１〜４０９  ＩＯバッファ
５００、５０１〜５０９  外部端子（ＩＯパッド）
８１１  構成情報メモリ（プログラマブルスイッチ用）
８１２  構成情報メモリ（ルックアップテーブル用）
８２１  プログラマブルスイッチ
８２２  ルックアップテーブル
８３１  構成情報メモリ（プログラマブルスイッチ用）
８３２  構成情報メモリ（ｍビット演算器用）
８４１  プログラマブルスイッチ
８４２  ｍビット演算器
【図１】
2012243086.tif 000003
【図２】
2012243086.tif 000004
【図３】
2012243086.tif 000005
【図４】
2012243086.tif 000006
【図５】
2012243086.tif 000007
【図６】
2012243086.tif 000008
【図７】
2012243086.tif 000009
【図８】
2012243086.tif 000010
【図９】
2012243086.tif 000011
【図１０】
2012243086.tif 000012
【図１１】
2012243086.tif 000013
【図１２】
2012243086.tif 000014