(57)【特許請求の範囲】
【請求項１】
フィールドプログラマブルゲートアレイ及び記憶装置を備えた集積回路において、
ＣＰＵコア及びＣＰＵコアに接続される周辺回路はロジックデータとして前記記憶装置に記憶され、この記憶装置に記憶された内容に基づいて、前記フィールドプログラマブルゲートアレイが前記ＣＰＵコア及び周辺回路として機能するように構成されており、
前記ＣＰＵコアによる演算処理を、フェッチ、デコード、エグゼキューション、メモリ及びライトバックの各ステップに、１つのダミーのステップを組入れたものとし、かつ、フェッチ，デコードの順に実行される第１ステージと、エグゼキューション，メモリの順に実行される第２ステージと、ダミー，ライトバックの順に実行される第３ステージの３ステージに分け、第１，第２，第３ステージの順に実行し、１つのステージが終了する度に別個の演算処理を開始して、同時に異なる演算処理のステージが３段パイプライン構成での並列動作を行い、上記３段パイプライン構成での並列動作において同時に実行されるサイクルの組み合わせが、フェッチとエグゼキューションとダミーの組み合わせと、デコードとメモリとライトバックの組み合わせとから構成されることを特徴とする集積回路。
【請求項２】
フィールドプログラマブルゲートアレイ及び記憶装置からなる集積回路の記録装置に書き込まれるデータを有し、該データは、フィールドプログラマブルゲートアレイがＣＰＵコア及びＣＰＵコアに接続される周辺回路として機能するためのロジックデータであるコンピュータ読み取り可能な記録媒体において、
前記ロジックデータは、ＣＰＵコアによる演算処理を、フェッチ、デコード、エグゼキューション、メモリ及びライトバックの各ステップに、１つのダミーのステップを組入れたものとし、かつ、フェッチ，デコードの順に実行される第１ステージと、エグゼキューション，メモリの順に実行される第２ステージと、ダミー，ライトバックの順に実行される第３ステージの３ステージに分け、第１，第２，第３ステージの順に実行し、１つのステージが終了する度に別個の演算処理を開始して、同時に異なる演算処理のステージが３段パイプライン構成での並列動作を行い、上記３段パイプライン構成での並列動作において同時に実行されるサイクルの組み合わせが、フェッチとエグゼキューションとダミーの組み合わせと、デコードとメモリとライトバックの組み合わせとから構成されることを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、集積回路に関し、特に、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）をＣＰＵコア及びその周辺機器として機能させるための技術に関するものである。
【０００２】
【従来の技術】
従来から、論理集積回路には、用途に応じて汎用論理ＩＣと特定用途向けＩＣ（ＡＳＩＣ）がある。その中でも、汎用論理ＩＣは大量生産ができて低コストであり、マイクロプロセッサやプログラマブルロジックデバイス（ＰＬＤ）などのようにユーザが手元で機能を完成させるものが含まれる。このＰＬＤにはプログラマブルロジックアレイ（ＰＬＡ）やＦＰＧＡなどがある。このＦＰＧＡは、基本論理回路で構成された論理モジュールと未接続の配線をチップに配置し、ユーザがプログラム素子を使って配線を完成させることで所望の機能を得るものである。ところで、マイクロプロセッサは、一般にＣＰＵをＬＳＩチップ上に集積した、システムＬＳＩと称せられるものであって、論理回路や記憶回路の組み合わせとして実現されている。また、この種のマイクロプロセッサにおいて、命令処理を簡略化し、ハードウェアを簡素化することで高性能化を図ったＲＩＳＣ（リデュースド インストラクション セット コンピュータ）が知られている。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記のような汎用のＣＰＵコアを含むマイクロプロセッサは、予め規定の機能が組み込まれていて、その中でもユーザ側で通常使用する機能は一部に限られていて、特定の用途に使用するために所望の機能が得られるように変更することは困難である。また、従来、マイクロプロセッサは、ＣＰＵコアと多数のチップとで構成されていることから、実装部品が多く複雑な構成となり信頼性に欠けるという問題もあった。
【０００４】
本発明は、上述した問題点を解決するためになされたものであり、ＦＰＧＡそのものにＣＰＵコアの機能を持たせると共にユーザ回路等をも組み込むことにより、従来のＣＰＵコアを用いることなく、ユーザ所望の機能を持たせたシステムＬＳＩとすることができ、しかも、周辺回路チップ等の実装部品を少なくすることができ、低コスト化が図れるＲＩＳＣプロセッサとしての集積回路を提供することを目的とする。
【０００５】
【課題を解決するための手段】
上記目的を達成するために請求項１の発明は、フィールドプログラマブルゲートアレイ及び記憶装置を備えた集積回路において、ＣＰＵコア及びＣＰＵコアに接続される周辺回路はロジックデータとして前記記憶装置に記憶され、この記憶装置に記憶された内容に基づいて、前記フィールドプログラマブルゲートアレイが前記ＣＰＵコア及び周辺回路として機能するように構成されており、前記ＣＰＵコアによる演算処理を、フェッチ、デコード、エグゼキューション、メモリ及びライトバックの各ステップに、１つのダミーのステップを組入れたものとし、かつ、フェッチ，デコードの順に実行される第１ステージと、エグゼキューション，メモリの順に実行される第２ステージと、ダミー，ライトバックの順に実行される第３ステージの３ステージに分け、第１，第２，第３ステージの順に実行し、１つのステージが終了する度に別個の演算処理を開始して、同時に異なる演算処理のステージが３段パイプライン構成での並列動作を行い、上記３段パイプライン構成での並列動作において同時に実行されるサイクルの組み合わせが、フェッチとエグゼキューションとダミーの組み合わせと、デコードとメモリとライトバックの組み合わせとから構成されるものである。
【００１０】
上記構成においては、複数の演算処理の並列動作時に、フェッチサイクルとメモリサイクルとが同時に実行されることがなく、これら両サイクルが同一のメモリを競合するという事態が生じることがないので、キャッシュメモリを必要とすることなく並列処理を行うことができる。
【００１５】
また、請求項２に記載の発明は、フィールドプログラマブルゲートアレイ及び記憶装置からなる集積回路の記録装置に書き込まれるデータを有し、該データは、フィールドプログラマブルゲートアレイがＣＰＵコア及びＣＰＵコアに接続される周辺回路として機能するためのロジックデータであるコンピュータ読み取り可能な記録媒体において、ロジックデータは、ＣＰＵコアによる演算処理を、フェッチ、デコード、エグゼキューション、メモリ及びライトバックの各ステップに、１つのダミーのステップを組入れたものとし、かつ、フェッチ，デコードの順に実行される第１ステージと、エグゼキューション，メモリの順に実行される第２ステージと、ダミー，ライトバックの順に実行される第３ステージの３ステージに分け、第１，第２，第３ステージの順に実行し、１つのステージが終了する度に別個の演算処理を開始して、同時に異なる演算処理のステージが３段パイプライン構成での並列動作を行い、上記３段パイプライン構成での並列動作において同時に実行されるサイクルの組み合わせが、フェッチとエグゼキューションとダミーの組み合わせと、デコードとメモリとライトバックの組み合わせとから構成されるための構造を有するものである。
【００１６】
上記構成においては、請求項１に記載の発明の作用を得ることを支援することができる。
【００１７】
【発明の実施の形態】
以下、本発明の一実施形態に係る集積回路について図面を参照して説明する。図１に示すように、本発明に係る集積回路１は、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）２とＰＲＯＭ３とを備えたＲＩＳＣプロセッサであり、システムＬＳＩを構築する。ＦＰＧＡ２の構成は、ＰＲＯＭ３に記憶されているロジックデータに基づいて制御される。よって、ＦＰＧＡ２は、ＰＲＯＭ３に書き込まれるロジックデータの如何に応じて種々の異なるロジック機能を発揮する。本実施形態では、ＦＰＧＡ２は、ＰＲＯＭ３内のロジックデータによって、ＣＰＵコア（ＣＰＵコア）５、割り込みモジュール６、タイマモジュール７、及びＣＰＵコア５に接続されるシステムバス（ＳＢＵＳ又は内部バス）８として機能するように構成されている。ＣＰＵコア５には、割り込み優先度を示すインデックスレジスタ（ＩＲＥＧ）５ａ、及びプリスケラー（ＴＲＥＧ）５ｂが備えられ、割り込みモジュール６には、マスクレジスタ６ａが備えられている。ＣＰＵコア５は、システムバス８を介して割り込みモジュール６及びタイマモジュール７に接続されている。また、ＣＰＵコア５は、アドレスバス１１、データバス１２、コントロールバス１３のそれぞれと接続し、ＰＲＯＭ３との間でデータのやりとりが可能とされている。
【００１８】
上記システムバス８へのユーザによる任意の回路の接続について図２を参照して説明する。システムバス８に対しては、ユーザが所望の回路１５を任意に接続することが可能である。図２はかかる場合のデータパスを示すものである。この回路１５もロジックデータをＰＲＯＭ３に記憶させることで提供される。ここで示す実施形態では、ユーザの回路１５は、ＸＲＥＧ１５ａ及びＹＲＥＧ１５ｂに処理結果をラッチし、その結果の処理（リード動作）をＣＰＵコア５に任せている。このようにシステムバス８を設けて、ユーザによる任意の回路１５の接続を可能としたことによって、ユーザがＣＰＵコア５の機能を簡単に追加することができることになる。そのため、従来ソフトウェアによるマルチプログラミング制御で多数の命令を使用してしか行うことができなかった処理を、ＣＰＵコア５の内部で高速に処理することができるようになる。なお、ＣＰＵコア５には、四則演算及び論理演算を行うＡＬＵ５１、及び命令やデータ等を一時的に収納しておくためのレジスタファイル５２が備えられており、ＡＬＵ５１とレジスタファイル５２との間にはバイパス回路５３が設けられている（詳細は後述）。
【００１９】
上記ＰＲＯＭ３に記憶させるロジックデータは、ＣＡＤ等のツールを利用することにより簡単に作成することができる。例えば、ＣＡＤによって所望の機能を有する回路図を作成し、好みのＣＰＵを構成する。そして、この回路図をデータ変換ソフトを用いてＨＤＬ（ハードウェア記述）言語に変換すれば、ＦＰＧＡをＣＰＵとして機能させるロジックデータを得ることができる。このロジックデータは、コンピュータで読み取り可能な形式の記憶媒体、例えば、フロッピーディスク、ＣＤ−ＲＯＭ、ＤＶＤ等に記憶させてユーザに提供する。ユーザはこの記憶媒体に格納されたデータをＣＡＤに読み取らせて、ＣＡＤ上にてロジックデータを任意に変更し、または、ＣＰＵの周辺回路としてユーザ所望の回路を追加することができる。こうして、記憶媒体は、ユーザにおけるシステムＬＳＩの設計の容易化を支援することに貢献するものとなる。
【００２０】
次に、ＣＰＵコア５による演算処理について図３及び図４を参照して説明する。ＣＰＵコア５による演算処理は、３段パイプ構成のパイプライン制御で実行される。本実施形態では、１つの演算処理をフェッチ（Ｆ）、デコード（Ｄ）、エグゼキューション（Ｅ）、メモリ（Ｍ）及びライトバック（Ｗ）の各ステップに、１つのダミー（Ｘ）のステップを組入れた６つのステップからなるものとする。この演算処理を、図４に示すように、Ｆ，Ｄの順に実行される第１ステージと、Ｅ，Ｍの順に実行される第２ステージと、Ｘ，Ｗの順に実行される第３ステージの３ステージに分け、第１，第２，第３ステージの順に実行する。そして、図３に示すように、１つのステージが終了する度に新しい演算処理を開始していく。これによれば、｛Ｆ，Ｅ，Ｘ｝と｛Ｄ，Ｍ，Ｗ｝とが常に３段パイプで並列動作することになる。従って、フェッチサイクルとメモリサイクルとが同時に実行されることがなく、これら両サイクルが同一のメモリを競合するという事態が生じない。
【００２１】
ここで、従来からある５段パイプ構成のパイプライン制御について図９を参照して説明する。従来の５段パイプ構成は、演算処理はフェッチ（Ｆ）、デコード（Ｄ）、エグゼキューション（Ｅ）、メモリ（Ｍ）及びライトバック（Ｗ）の５つのステップからなり、Ｆ，Ｄ，Ｅ，Ｍ，Ｗの順に各ステップを実行し、１つのステップが終了する度に新しい演算処理を開始する。以降は、複数の演算処理における各ステップを並列して実行していく。この制御によれば、図９に示すように、フェッチサイクルとメモリサイクルとを同時に実行するため、同一のメモリを競合することになる。そのため、プログラムキャッシュとデータキャッシュとからなるキャッシュメモリを搭載する必要がある。しかし、本発明は、上述したように、フェッチサイクルとメモリサイクルとが同一のメモリを競合するという事態が生じないため、キャッシュメモリを搭載する必要はなく、ＦＰＧＡを効率よく利用することができる。
【００２２】
上記パイプライン制御における構造的ハザード及びデータハザードの解決法を図５及び図６を参照して説明する。上記パイプライン制御では、分岐アドレスの計算は、図５（ａ）に示すエグゼキューション（Ｅ）で行われる。よって、分岐アドレスを得るためにストールさせなければならない。これを回避するために本パイプライン制御では、図５（ｂ）に示すＮＯＰを自動的に挿入するようにしている。また、本パイプライン制御では、図６（ａ）に示すようなストールの発生が予想される。よって、このストールを回避するために、ＣＰＵコア５内部のＡＬＵ５１（図２参照）とレジスタファイル５２との間にバイパス回路５３を設定する。ＡＬＵ５１にバイパス回路５３を設定した場合の流れは図６（ｂ）に示すものとなる。つまり、本パイプライン制御では、２サイクルで動作することになる。
【００２３】
図７及び図８を参照して上記パイプライン制御を具体的に説明する。図７に示すように、Ｆ，Ｄの第１ステージによりＰＣＦ（プログラムカウンタフェッチサイクル，図８で５４）が実行されると、次はＥ，Ｍの第２ステージによりＰＣＥ（プログラムカウンタエグゼキューション，図８で５５）が行われるが、この第２ステージの開始と同時に、次の新たな演算処理が開始され、その第１ステージ（Ｆ，Ｄ）でＩＲＦ（インストラクションレジスタフェッチサイクル，図８で５７）が行われる。つまり、ＰＣＥとＩＲＦが並列に処理される。そして、最初の演算処理の方でＸ，Ｗの第３ステージが開始されてＰＲ（プログラムレジスタインタラプト，図８で５６）が行われると、それと並行して、新たな演算処理の方では第２ステージ（Ｅ，Ｍ）が開始されてＩＲＥ（インストラクションレジスタエグゼキューション，図８で５８）が行われる。すなわち、ＣＰＵコア５の第１ステージを実行する部分は、常にＦ，Ｄの処理のみを次々に繰り返して実行し、第２ステージ、第３ステージを実行する部分についても同様である。なお、新たな演算処理における第２ステージ（Ｅ，Ｍ）が終了すると、第３ステージ（Ｘ，Ｗ）が開始されてＩＲＷ（インストラクションレジスタライトバック，図８で５９）が行われる。
【００２４】
このように、本実施形態の集積回路１によれば、ＰＲＯＭ３に記憶されたロジックデータの内容に基づいて、ＦＰＧＡ２がＣＰＵコア５及びその周辺回路（割り込みモジュール６，タイマモジュール７，システムバス８）として機能するので、ＦＰＧＡ２さえ備えていれば、ＣＰＵコア及び周辺回路のチップを搭載する必要がなく、集積回路１の実装部品を減少させることができる。これにより、集積回路１の構成が簡単になり信頼性が向上する。また、ＦＰＧＡ２において、ＣＰＵコア５に接続されるシステムバス８を設けたので、ユーザはこのシステムバス８に対して、所望の機能を有した回路を後付することができる。そのため、ＣＰＵコア５の機能を追加・変更することが可能であり、ユーザは好みの機能を有するＣＰＵコアを含むシステムＬＳＩを簡単に構成することができる。
【００２５】
さらに、本実施形態の集積回路１によれば、ＣＰＵコア５における演算処理は、３段構成によるパイプライン制御で行い、複数の演算処理の並列動作時に、フェッチサイクルとメモリサイクルとが同時に実行されることがないようにしたので、これら両サイクルが同一のメモリを競合するという事態が生じることがない。そのため、キャッシュメモリの搭載が不要となり、ＦＰＧＡ２を効率良く利用することができる。
【００２６】
なお、本発明は上記実施の形態の構成に限られず種々の変形が可能である。例えば、上記実施の形態では、ＣＰＵコア５の周辺回路が割り込みモジュール６及びタイマモジュール７とされているが、これらのモジュールに限定されるものではなく、他の回路であっても構わない。
【００２７】
【発明の効果】
以上のように請求項１に記載の発明によれば、ＣＰＵコア及び周辺回路の機能の変更は、ロジックデータの設定変更により自在に行うことができるので、所望の機能を有するＣＰＵコアを含むシステムＬＳＩを容易に製造することができる。そのため、生産が中止されたＣＰＵコアと同等の機能を有するＣＰＵコアを製造することも容易であり、ユーザが所有するデータを有効に活用することができる。また、ＣＰＵコアはロジックデータで提供されることから、ＣＰＵコアを少量生産することも可能であるため、従来のように大量生産しかできないＣＰＵコアよりも低コストで生産することができる。また、ＦＰＧＡがＣＰＵコア及び周辺回路として機能するので、集積回路に実装しなければならないチップの数を減少させることができ、構成が簡単になり信頼性が向上する。
【００２８】
また、ユーザが所望の回路をシステムバスに後付けすることによって、簡単にＣＰＵコアの機能を追加・変更することができる。よって、ＣＰＵコアが好みの機能を発揮するように、ユーザが手軽にＣＰＵコアの構成を操作することができるようになる。また、従来ソフトウェアによるマルチプログラミング制御で多数の命令を使用してしか行うことができなかった処理を、ＣＰＵコアの機能を追加・変更することによってＣＰＵコア内部で高速に処理することができるようになる。
【００２９】
また、複数の演算処理を並列動作させるときであっても、フェッチサイクルとメモリサイクルとが同時に実行されることがなく、これら両サイクルが同一のメモリを競合するという事態が生じない。これにより、キャッシュメモリを必要とすることなく並列動作が可能となるため、その分コストを低減することができ、ＦＰＧＡを効率良く使用することができる。
【００３０】
また、請求項２に記載の発明によれば、記録媒体のデータをコンピュータに読み取らせて、コンピュータ上にて請求項１に記載の発明により得られる効果を奏するシステムＬＳＩの設計を支援することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る集積回路の構成を示すブロック図である。
【図２】上記集積回路のＣＰＵコアにユーザの回路を接続した場合のデータパスを示す図である。
【図３】パイプライン制御における３段パイプの並列動作を示す図である。
【図４】上記ＣＰＵコアの演算処理における３つのステージを示す図である。
【図５】（ａ）は分岐アドレス取得のためにストールされている流れを示す図、（ｂ）は分岐遅延のＮＯＰ挿入の流れを示す図である。
【図６】（ａ）はデータ依存のためにストールされている流れを示す図、（ｂ）はＡＬＵとレジスタファイルの間にバイパス回路を設けた場合の流れを示す図である。
【図７】上記ＣＰＵコアの演算処理におけるパイプライン制御のフローを示す図である。
【図８】上記ＣＰＵコアのデータパスを示す図である。
【図９】従来のパイプライン制御における５段パイプの並列動作を示す図である。
【符号の説明】
１    集積回路
２    ＦＰＧＡ（フィールドプログラマブルゲートアレイ）
３    ＰＲＯＭ（記憶装置）
５    ＣＰＵコア（ＣＰＵコア）
８    システムバス
１５  回路（ユーザが任意に選択した回路）
【図１】
0003989634.tif 000002
【図２】
0003989634.tif 000003
【図３】
0003989634.tif 000004
【図４】
0003989634.tif 000005
【図５】
0003989634.tif 000006
【図６】
0003989634.tif 000007
【図７】
0003989634.tif 000008
【図８】
0003989634.tif 000009
【図９】
0003989634.tif 000010