(57)【要約】【課題】逐次処理言語を入力とする専用プロセッサの構築に当たって、複数の専用命令が必要とされる場合における構築方法の提示。【解決手段】専用命令コードバス１１を基本プロセッサ本体２（ＰＵ）から送出する事により、専用命令デコード回路１２と複数専用命令実行ユニット１０を接続せしめ、もって専用命令デコード回路１２から専用命令実行ユニット１０（ＶＵ１，ＶＵ２）に対する起動信号と各専用命令実行ユニット１０（ＶＵ１，ＶＵ２）が送出する終了信号１４の選択を行うセレクタ１５に対する選択情報と、基本プロセッサ本体２（ＰＵ）と専用命令実行ユニット１０（ＶＵ１，ＶＵ２）がデータメモリまたはレジスタを共有する場合には、選択機構のデータメモリまたはレジスタアクセス専用命令実行ユニット選択情報を生成する事により、簡潔に複数専用命令を有する専用プロセッサが構築可能となる。【選択図】        図３
2004234065.tif 000002
【特許請求の範囲】
【請求項１】
汎用的な命令を実行する基本プロセッサと、
同時実行される事のない専用命令をそれぞれ実行する複数の専用命令実行ユニットと、
前記基本プロセッサから前記専用命令を前記複数の専用命令実行ユニットに供給する専用命令コードバスと、
前記専用命令コードバスに現れた前記専用命令をデコードし、その専用命令を実行するいずれかの前記専用命令実行ユニットを活性化する専用命令デコーダとを有する専用プロセッサ装置。
【請求項２】
請求項１において、前記複数の専用命令実行ユニットから送出される複数の終了信号を選択して前記基本プロセッサに供給する選択回路を有し、
前記専用命令デコード回路は、前記専用命令実行ユニットに対する起動信号と、前記選択回路の制御信号とを送出する専用プロセッサ装置。
【請求項３】
請求項１において、前記基本プロセッサと前記複数の専用命令実行ユニットが共有するメモリを制御する目的で存在する選択機構を有し、
前記専用命令デコード回路は、前記選択機構に対する制御信号を送出する専用命令プロセッサ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の専用命令が存在する専用命令プロセッサの構築に関するものである。
【０００２】
【従来の技術】
特開２０００−２０７２０２号公報には、基本命令を実行する基本プロセッサ部と専用命令を実行する専用命令部とを備えたプロセッサが開示されている。
【０００３】
【特許文献１】
特開２０００−２０７２０２号公報
【０００４】
【発明が解決しようとする課題】
基本命令を実行する基本プロセッサ部と専用命令を実行する専用命令部に分離し構築する方法においては、三つの改良すべき点が挙げられる。まず第一に、二つ以上の複数の専用命令を装着させる場合には、基本プロセッサから専用命令への信号線本数が多くなりレイアウトが困難になり、しいてはタイミング遅延の問題を生ずる事がある。第二に、Ｃプログラムをプロセッサ入力言語とした場合、基本プロセッサと複数の専用命令実行部が同一のデータメモリをアクセスさせたい要求が頻繁であり、そのような場合における構築手法が明確でない。第三に、専用命令が乗算のような演算子型の場合と積和ループ処理のような関数型の場合において、いかにして専用命令と基本プロセッサ間のインターフェイスを簡潔に構築するかが明確に提示されていない。
【０００５】
単一の専用命令を基本プロセッサに装着させてレジスタ間のデータ転送を行うことに加えて、複数の専用命令を装着させる構成や、これら複数の専用命令が存在した場合における基本プロセッサまでを含めたデータメモリの共有化について考える必要がある。Ｃ言語で記述された仕様を専用プロセッサにマッピングする場合には、当然にして複数の専用命令によるマッピング手法の提示が必要であるからである。
【０００６】
また、専用命令の実行部より基本プロセッサのデータメモリをアクセスする場合も、単一の専用命令の実行部がアクセスするケースに加えて、複数の専用命令の実行部が基本プロセッサのデータメモリを共有することを考えなくてはいけない。専用命令の実行部より基本プロセッサのレジスタをアクセスする場合も同様であり、単一の専用命令の実行部がアクセスするだけではなく、複数の専用命令の実行部が基本プロセッサのレジスタを共有することまで考える必要がある。
【０００７】
専用命令を装着した専用プロセッサは、Ｃ言語のような逐次処理型の高級プログラミング言語で記述された機能を極めて短期間にシリコン上に構築できるシステムＬＳＩの具現化手法である事が判明しつつある今日、ここにおいて複数の専用命令の簡潔な構築方法や複数の専用命令によるデータメモリ共有化構築方法や複数の専用命令によるレジスタ共有化構築方法の有効な提示が望まれている。
【０００８】
このような要求の背景には設計期間の短縮の目的でＣ言語からシステムＬＳＩを構築する動きが加速している事がある。すなわち、機能仕様を記述する言語としても利用されるＣ言語にて記述されたＣプログラムから高速な専用プロセッサを構築する事が、システムＬＳＩの設計期間短縮に最も有効な手法である事が分かってきたからである。本発明においては、このような背景にあって、Ｃ言語のような逐次処理型の高級言語で記述されたプログラムを専用プロセッサ化するに当たり、二つ以上の専用命令を有効に構築する手段と、基本プロセッサと二つ以上専用命令との間のデータメモリ共有と、二つ以上の専用命令による基本プロセッサ内レジスタ共有の手段に関して提示するものである。
【０００９】
【課題を解決するための手段】
本発明においては、複数の専用命令を実行するための手段として専用命令コードバスなる信号線を基本プロセッサから外部に送出し、ここに専用命令実行ユニットを複数装着させる所のスケーラブルな機構を導入する。すなわち、本発明の専用プロセッサ装置は、汎用的な命令を実行する基本プロセッサと、同時実行される事のない専用命令をそれぞれ実行する複数の専用命令実行ユニットと、基本プロセッサから専用命令を複数の専用命令実行ユニットに供給する専用命令コードバスと、専用命令コードバスに現れた専用命令をデコードし、その専用命令を実行するいずれかの専用命令実行ユニットを活性化する専用命令デコーダとを有する。
【００１０】
これら専用命令処理群（専用命令実行ユニット）は専用命令コードバスに接続され、命令コードを受け取ると共に別途専用命令コードバスに接続された専用命令デコーダから信号を受け取って自分の命令モジュールが活性化されたか否かを識別するしくみも有する。このしくみはソフトウエアで言う所の所謂サブルーチンＣＡＬＬに相当し、従って、専用命令は単なる乗算のようなデータ演算子のみならず、ループ処理を含む積和演算のような関数機能の割り当ても可能となる。
【００１１】
また、ＣＡＬＬがあればＲＥＴＵＲＮが必要であり、それには各専用命令実行モジュールから終了信号を送出させ、これをセレクタに入力し、専用命令バスに接続されている所の専用命令デコーダの出力をもってセレクタを制御し、セレクタ出力を基本プロセッサに接続させしめ、もって、専用命令の起動から終了までが完結する事になる。したがって、複数の専用命令実行ユニットから送出される複数の終了信号を選択して基本プロセッサに供給する選択回路を設け、専用命令デコード回路は、専用命令実行ユニットに対する起動信号と、選択回路の制御信号とを送出することが望ましい。
【００１２】
また、基本プロセッサと複数の専用命令とは、一つのデータメモリを一つのメモリ制御回路を通じてアクセスする事によりデータメモリの共有化を図る事を特徴としている。したがって、基本プロセッサと複数の専用命令実行ユニットが共有するメモリを制御する目的で存在する選択機構を設け、専用命令デコード回路は、選択機構に対する制御信号を送出することが望ましい。
【００１３】
ここでＣ言語のような逐次処理型の言語では、基本命令も専用命令も含めて活性化される命令は常に一つであり、二つ以上の命令が同時実行されない事を保証する環境がコンパイラを通じて構築されているのが通例である。従って、常に一つの命令しか活性化されないのであるから、データメモリを同時アクセスする事は無い事が保証されており、従って本発明ではメモリ制御機構を極めて軽い処理とする事を可能としつつデータメモリの共有化を可能としている特徴を有する。これは、プロセッサ内部のレジスタを複数の専用命令が参照する場合も同じである。
【００１４】
本発明では逐次処理言語の特徴を極めて強く意識し、これを積極的に利用する事によりハードウエア的に軽い構成とする事を可能としている特徴がある。即ち、逐次処理の体系であるから、複数の専用命令が同時に起動（ＣＡＬＬ）される事はない事が保証されているので、複数の専用命令を単一の命令コードバスに接続させて問題は生じない。また、ひとつの命令の終了をもって次の命令が実行される環境においては、活性化される専用命令は常に一つであり、複数の専用命令から同時に復帰（ＲＥＴＵＲＮ）信号が送出される事もない事が保証されているから複数専用命令からの終了信号を生成する論理も単純なセレクタ構造で十分である特徴を有する。
【００１５】
リソースという観点からは、常にひとつの命令のみが実行されている訳であるから、二つ以上の命令が同時実行されてデータメモリやプロセッサ内部レジスタに同時アクセスされる要求イベントは生じない事が保証されている、と解釈してもよい。これは逐次処理言語の性質を利用した手法である、とも言える。
【００１６】
【発明の実施の形態】
以下に図面を参照してさらに本発明について説明する。図１は本発明を実施する際の入力となる逐次処理言語の分割の概念を示している。本例ではＣ言語にて述べるが、他の逐次処理言語でも同様である。本発明では、まず、Ｃプログラム４０を基本プロセッサにて処理させる部分４１と専用命令により処理させる部分４２とに割り当て分割する。分割の境界はファンクションまたはサブルーティンである場合が多いが、乗算といった単純演算子処理でも構わない。それらの機能を専用に実行するハードウエアを装着する事により、与えられたＣプログラム４０を基本プロセッサで実行するよりはより高速に実行する専用プロセッサを構築する事が本発明の目的である。
【００１７】
図１に示すようにＣプログラム４０から二つのＣ記述４２に相当するＣ１とＣ２が抽出され専用命令化する事を決定したとすれば、残るＣ記述部分４１はＣ０として基本プロセッサの命令にて実行される記述となる。ここでＣ記述４１（Ｃ０）とＣ記述４２（Ｃ１、Ｃ２）は、同時に実行される事はない。即ち、Ｃ記述４２（Ｃ１）はＣ記述４１（Ｃ０）からＣＡＬＬされて実行し、実行を終えたらＣ記述４１（Ｃ０）へＲＥＴＵＲＮするが、その間、他のＣ記述４１（Ｃ０）とＣ記述４２（Ｃ２）ともに停止している時間の流れとなる事を図１は示している。
【００１８】
ここで、Ｃ記述４１（Ｃ０）とＣ記述４２（Ｃ１、Ｃ２）がデータメモリを参照する記述であれば、Ｃ記述４１（Ｃ０）とＣ記述４２（Ｃ１、Ｃ２）の関係は図２に示すような構造体を取る事になり、共通のデータメモリ３２をアクセスする事となる。Ｃ記述４１（Ｃ０）、Ｃ記述４２（Ｃ１、Ｃ２）は同時実行される事はないので、当然にしてデータメモリ３２も逐次にアクセスされる事となる。これはＣ記述４２（Ｃ１、Ｃ２）が基本プロセッサ内部の汎用レジスタを参照する場合についても同じである。
【００１９】
図３は、図２に示すようにＣ記述４１（Ｃ０）とＣ記述４２（Ｃ１、Ｃ２）が共有データメモリ３２をアクセスする場合において、本発明を適用して構築される専用プロセッサ１を示す。専用プロセッサ１は、基本プロセッサ本体２（ＰＵ）と、本例では２個の専用命令実行ユニット１０（ＶＵ１、ＶＵ２）を構成要件としている。基本プロセッサ本体２の機能は、フェッチユニットとデコードユニットと基本命令の実行ユニットを構成要件としている。基本命令と専用命令は共に基本プロセッサ本体２のコードメモリ３に格納されている。基本プロセッサ本体２（ＰＵ）のフェッチユニットにより読み出された命令は、専用命令の場合には外部に送出される。この機構は特開２０００−２０７２０２号公報に記載されており、本発明の目的ではない。本発明における特徴は送出された専用命令は専用命令コードバス１１として複数の専用命令実行ユニット１０の共通入力となる点にある。加えて、この専用命令コードバス１１には専用命令専用命令デコード回路１２が接続されており、命令を解釈して特定の専用命令実行ユニットに起動信号１３（ＣＡＬＬ）を送出し、かつ、専用命令実行が終了した際に送出される各専用命令の終了信号１４（ＲＥＴＵＲＮ）を選択するセレクタ１５の選択信号１６を生成している。この結果、専用命令終了信号１８がセレクタ１５にて抽出されて基本プロセッサ本体２（ＰＵ）に伝達される。
【００２０】
一方、図３においてはＣ記述４１（Ｃ０）を実行する基本プロセッサ本体２（ＰＵ）とＣ記述４２（Ｃ１）を実行する専用命令実行ユニット１０（ＶＵ１、ＶＵ２）とＣ記述４２（Ｃ２）を実行する専用命令実行ユニット１０（ＶＵ１、ＶＵ２）がメモリ経路選択回路３０、メモリ制御回路３１を通じてデータメモリ３２に接続される形態を取っており、所謂メモリ共有の構造となっている。
【００２１】
図４は専用命令実行ユニット１０（ＶＵ１、ＶＵ２）がアクセスする基本プロセッサ本体２（ＰＵ）のリソースがデータメモリ３２または基本プロセッサ本体２（ＰＵ）内に存在するレジスタ４である場合の構築案を示している。この場合には基本プロセッサ本体２（ＰＵ）内部に対して専用命令からの信号がレジスタまたはデータメモリに伝達され、かつそれらを制御する機構が必要である。本発明の目的は、図４に示すように、専用命令実行ユニット１０（ＶＵ１）と専用命令実行ユニット１０（ＶＵ２）の信号が選択機構１８に接続され専用命令デコード回路１２の選択信号１７によりいずれの専用命令実行ユニット１０（ＶＵ１，ＶＵ２）の信号を基本プロセッサ本体２（ＰＵ）と接続するかを制御する事により単一信号１９が選択され、基本プロセッサ本体２（ＰＵ）側ではレジスタ接続かデータメモリ接続かが実行中の命令の内容により判別する。したがって、１つのＶＵに対する制御機構５を利用する事により、複数専用命令実行ユニット１０（ＶＵ１，ＶＵ２）から基本プロセッサ本体２（ＰＵ）とメモリ制御回路３１を経由してデータメモリ３２やレジスタ４を参照できる機構を提示する事にある。すなわち、ＶＵの数にかかわりなく、共通の制御機構により複数のＶＵに対する制御を行うことができる方法を提供する。
【００２２】
図５は本発明における設計手順を示している。ステップ１でＣプログラム４０は、基本プロセッサ本体２にて実行されるＣ記述４１（Ｃ０）と専用命令実行ユニット１０にて実行されるＣ記述４２（Ｃ１，Ｃ２）に分割される。
【００２３】
ステップ２では分割が妥当か否かをシミュレーションによって評価する。Ｃ言語の分割は命令レベルのシミュレータ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｌｅｖｅｌ  Ｓｉｍｕｌａｔｏｒ：ＩＳＳ）を用いて評価するのが妥当である。ＩＳＳにより分割後のパフォーマンス（クロック数）を測定し、分割が妥当か否かを判断する。否である場合には分割案を見直す為にステップ１へ戻る。妥当と判断された場合にはステップ３で専用命令実行ユニット１０（ＶＵ１，ＶＵ２）のハードウエア設計に入る。
【００２４】
また、接続される専用命令実行ユニット１０（ＶＵ１，ＶＵ２）の内容と数に応じて専用命令デコード回路１２と終了信号を制御するセレクタ１５のハードウエア設計も行う。また、図３に示す構築形態の場合であれば、接続する専用命令実行ユニット１０（ＶＵ１，ＶＵ２）の数に応じてメモリ経路選択機構３０のハードウエア設計を行うし、図４に示す構築形態であれば接続する専用命令の数に応じて選択機構１９のハードウエア設計を行う。通常これらの回路はレジスタトランスファレベルの言語（ＲＴＬ）にて設計されるし、基本プロセッサ本体２（ＰＵ）そのものもＲＴＬにて設計されているので、ステップ３が終了した段階で必要なＲＴＬマクロがすべて準備された事になる。
【００２５】
ステップ４では準備されたＲＴＬマクロ間の接続を行う。内容的には専用命令コードバス１０と専用命令終了信号１８に関する起動と終了に関する機能の接続と、基本プロセッサ本体２（ＰＵ）と専用命令実行ユニット１０（ＶＵ１，ＶＵ２）間のデータメモリ３２または基本プロセッサ本体２（ＰＵ）内に存在するレジスタ４をアクセスするデータアクセスに関する機能の接続を行う事になる。
【００２６】
以上で図１に示したＣプログラム４０を基本プロセッサ本体２（ＰＵ）と複数専用命令実行ユニット１０（ＶＵ１，ＶＵ２）を構成要件として具現化する専用プロセッサ１のハードウエア設計（ＲＴＬ）が完成した事になる。
【００２７】
このように、本発明においては、逐次処理言語を入力とする専用プロセッサの構築に当たって、複数の専用命令が必要とされる場合における構築方法を提供することを目的としている。そして、専用命令コードバス１１を基本プロセッサ本体２（ＰＵ）から送出する事により、専用命令デコード回路１２と複数専用命令実行ユニット１０を接続せしめ、もって専用命令デコード回路１２から専用命令実行ユニット１０（ＶＵ１，ＶＵ２）に対する起動信号と各専用命令実行ユニット１０（ＶＵ１，ＶＵ２）が送出する終了信号１４の選択を行うセレクタ１５に対する選択情報と、基本プロセッサ本体２（ＰＵ）と専用命令実行ユニット１０（ＶＵ１，ＶＵ２）がデータメモリまたはレジスタを共有する場合には、選択機構のデータメモリまたはレジスタアクセス専用命令実行ユニット選択情報を生成する事により、簡潔に複数専用命令を有する専用プロセッサが構築可能となる。
【００２８】
【発明の効果】
以上に説明したように、本発明においては、基本プロセッサと複数の専用命令実行ユニットを組み合わせた専用プロセッサを構築するに当たって、入力となる逐次処理型記述言語の特徴を利用して、少なくとも同時実行されない二つ以上の専用命令実行ユニットが存在する場合において、各専用命令を起動する方法と各専用命令を終了させる方法を提示した。加えて、これら同時実行されない専用命令実行ユニットが基本プロセッサのデータメモリまたは内部レジスタを共有させる方法を示した。本発明によれば、逐次処理型記述言語であるＣ言語で記述されているＣプログラムを極めて簡単に複数専用命令実行ユニットを有する専用プロセッサにマッピング可能となる。与えられたＣプログラムを実行する専用プロセッサの構築方法を提示した本発明は、システム仕様をＣ言語で記述し、これを組み込み型プロセッサの形態としてシステムＬＳＩの中の機能ブロックとして実現する方法で、Ｃ言語による大規模システムＬＳＩの極めて効果的かつ有効な設計手法である。
【図面の簡単な説明】
【図１】本発明の入力となるＣプログラム４０の基本プロセッサ本体２（ＰＵ）への割り当て分割と専用命令実行ユニット１０（ＶＵ１，ＶＵ２）への割り当て分割された結果、Ｃ記述４１（Ｃ０）とＣ記述４２（Ｃ１，Ｃ２）に分割され、それらの処理される時間順番を示す図である。
【図２】分割されたＣ記述４１（Ｃ０）とＣ記述４２（Ｃ１，Ｃ２）の呼び出し関係とデータメモリ３２を共有する場合の関係図である。
【図３】図２に示された分割されたＣ記述４１（Ｃ０）を基本プロセッサ本体２（ＰＵ）で実行し、Ｃ記述４２（Ｃ１，Ｃ２）を専用命令実行ユニット１０（ＶＵ１，ＶＵ２）で実行する構成図である。
【図４】図２に示された分割されたＣ記述（Ｃ０）を基本プロセッサ本体２（ＰＵ）で実行し、Ｃ記述４２（Ｃ１，Ｃ２）を専用実行ユニット１０（ＶＵ１，ＶＵ２）で実行するもうひとつの構成図である。
【図５】図１から図３または図４に至る設計手順を示すフローチャート図である。
【符号の説明】
１          専用プロセッサ
２          基本プロセッサ本体（ＰＵ）
３          コードメモリ
４          基本プロセッサ本体２（ＰＵ）のレジスタ
５          基本プロセッサ本体２（ＰＵ）を通じてレジスタ４またはデータメモリ３２をアクセスする制御機構
４０      分割前のＣプログラム
４１      分割後、基本プロセッサ本体２（ＰＵ）にて実行されるＣ記述
４２      分割後、専用命令実行ユニット１０（ＶＵ）により実行されるＣ記述
１０      専用命令実行ユニット（ＶＵ）
１１      専用命令コードバス
１２      専用命令デコード回路
１３      専用命令起動信号（ＣＡＬＬ）
１４      専用命令終了信号（ＲＥＴＵＲＮ）
１５      セレクタ
１６      終了信号選択情報
１７      データメモリまたはレジスタアクセス専用命令実行ユニット選択情報
１８      専用命令終了信号
１９      選択機構
２０      共有化されたデータ信号
３０      メモリ経路選択機構
３１      メモリ制御回路
３２      データメモリ
【図１】
2004234065.tif 000003
【図２】
2004234065.tif 000004
【図３】
2004234065.tif 000005
【図４】
2004234065.tif 000006
【図５】
2004234065.tif 000007