(57)【要約】【課題】  メモリとプロセッサ間のデータ転送とプロセッサ内の演算実行を分離して互いに独立に実行することによってデータ転送の最適化を図り、性能向上、消費電力の削減、および、処理部の特定用途または汎用のハードウェア化を容易にする。【解決手段】  メモリと大容量レジスタファイル間のデータ転送においてプログラムによって必要な時期に必要なデータのみを転送するロードストア部と、大容量レジスタファイルのデータを使用して生成されたデータを大容量レジスタファイルへ書き戻す処理部と、同期フィールドの各種同期を実行する同期機構で構成する。これらが同期をとりながら独立に並列動作することによって、メモリと大容量レジスタファイル間のデータ転送が間断なく行われて、処理の効率化が可能となり、この目的を達成する。【選択図】図１
2007317152.tif 000002
【特許請求の範囲】
【請求項１】
命令メモリに格納されているロード命令、ストア命令および制御命令からなるプロググムの実行によって大容量レジスタファイルとデータメモリ間のデータ転送を行うロードストア部と、大容量レジスタファイルに格納されたデータを演算処理する処理部とが、互いに独立に動作し、同期機構によって協調動作する情報処理装置。
【請求項２】
前記命令に同期フィールドを埋め込み、命令動作と同期動作を並列に実行する請求項１記載の情報処理装置。
【請求項３】
複数の処理部が大容量レジスタファイルのデータに対して演算処理を行う構成である請求項１、２記載の情報処理装置。
【請求項４】
前記処理部が同期フィールドをもった演算命令および制御命令を実行する構成、もしくは、前記処理部が個々の専用ステートマシンによる制御を行う構成、または、これらの構成を混合した構成である請求項１、２、３記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は情報処理装置の構成に関するものであり、メインメモリとプロセッサ間のデータ転送とプロセッサ内の演算処理を分離して互いに独立に実行することによってデータ転送の最適化を図り、性能向上、消費電力の削減、および、ソフトウェアプログラムのハードウェア化を容易にするものである。
【背景技術】
【０００２】  従来、マイクロプロセッサやデジタルシグナルプロセッサなどの汎用プロセッサでは、機械命令の実行を命令フェッチ、デコード、実行、メモリ動作、書き戻し等のステージに細分化し、パイプライン処理で高速化している。スーパースカラプロセッサでは、複数のパイプライン処理を並列に動作させて、一層の高速化を図っている。すなわち、順序付けられた一連の命令列をプロセッサに読み込み、並列実行可能性を調べて、ロードストア部および各種演算処理部で動的に並列実行する。ベクトルプロセッサでは、ベクトルレジスタへ間断なくデータ供給して実行することにより高速化を図っている。グラフィックプロセッサおよび暗号プロセッサなどの専用プロセッサならびにコンフィギャラブルプロセッサおよびリコンフィギャラブルプロセッサでは、汎用プロセッサの不得手な処理をハードウェア化することによって高速化を図っている。しかし、プロセッサが高速になるにつれて、プロセッサとメモリの性能格差問題が深刻になっている。この問題に対処するために、キャッシュ機構、ベクトル機構、メモリインターリーブ機構、ハーバードアーキテクチャが採用されている（例えば、非特許文献１参照。）。
最近では、キャッシュの参照の局所性が有効でないアプリケーションに対して、従来のキャッシュに加えて、番地指定可能なプロセッサ内高速メモリに取り込むＳＣＩＭＡが提案されている（例えば、非特許文献２参照。）。
また、特定の構造を持ったメモリ内のデータとプロセッサ内キャッシュまたはレジスタ間の転送は、データ構造に適するようにチューニングされた構成にしている（例えば、特許文献１参照。）。
【特許文献１】特開２００５−７１３５１号  公報
【非特許文献１】「コンピュータの構成と設計  第３版（上）（下）」，日経ＢＰ社，２００６年，ｐ．６４０
【非特許文献２】「情報処理学会論文誌  Ｖｏｌ．４１  Ｎｏ．ＳＩＧ５（ＨＰＳ１）」情報処理学会，２０００年，ｐ．１３
【発明の開示】
【発明が解決しようとする課題】
【０００３】  しかし、汎用プロセッサにおけるキャッシュはメモリの参照の局所性が成立するアプリケーションに対してキャッシュミスは生じるものの概ね有効であるが、参照の局所性が成立しないアプリケーションではその効果はなく、パイプライン処理は空きステージが生じて意味をなさない。ベクトル機構はメモリとベクトルレジスタ間のデータ転送と演算処理を効率よく行えるが、適応範囲は狭く、ベクトル化できないアプリケーションには効果がない。命令メモリとデータメモリを物理的に分離するハーバードアーキテクチャおよび複数のメモリバンクによるメモリインタリーブは、１つのメモリへの集中への軽減にはなっているがメモリとプロセッサ間のボトルネックの根本的な解決にはなっていない。一方、ＳＣＩＭＡは、キャッシュに加えて、メモリと番地指定できるプロセッサ内高速メモリ間のデータ転送を、プログラムで制御させることによって参照の局所性がないアプリケーションにも有効といわれている。
しかし、キャッシュおよびＳＣＩＭＡはあくまでもメモリそのものであり、プロセッサはメモリステージで番地を指定してアクセスし、プロセッサ内レジスタとのデータ転送を行ったのちに演算処理に使用される。このようにメモリと中間的な高速メモリ間でのデータ転送する無駄が生じている。
また、コンフィギャラブルプロセッサやリコンフィギャラブルプロセッサにおいて、従来のソフトウェアによるプログラムをハードウェア化するとき、動的にメモリ番地が決まるアプリケーションではハードウェア化は難しい。
そこで、様々なアプリケーションの多種多様なデータを格納しているメモリとプロセッサ内レジスタ間のデータ転送のボトルネックを統一的な構成で解決することを目的とする。
【課題を解決するための手段】
【０００４】  この目的を達成するために、プログラムによってメモリと大容量レジスタファイルあいだのデータ転送を間断なく行うロードストア部と、大容量レジスタファイルのデータの演算処理を実行する処理部とが互いに独立に並列動作し、同期機構によって矛盾なく高速に動作させる構成にすることである。
請求項１の発明は、データを格納しているメモリ、ロード命令およびにストア命令ならびに制御命令からなるプログラムの実行によってメモリと大容量レジスタファイル間のデータ転送を行うロードストア部、プロセッサ内部に処理データを蓄えておく大容量レジスタファイル、大容量レジスタファイルのデータの演算処理を行う処理部、およびロードストア部と処理部間の同期をとる同期機構で構成される。
この大容量レジスタファイルは、処理部で必ず使用するデータのみを格納している。アプリケーションによっては、この大容量レジスタファイルの一部をダブルバッファリング用バッファとして利用することによって、処理の効率化を図ることもできる。
ロードストア部は、内部命令メモリに格納されている命令列を実行して、メモリと大容量レジスタファイル間のデータ転送に専念する。処理部はロードストア部とは互いに独立に並列動作しており、大容量レジスタファイルのデータの演算処理に専念する。そして、複数の処理部で共有するデータ、もしくはメモリにストアする処理結果、または必要に応じて処理の途中結果などを大容量レジスタファイルに書き込む。ロードストア部は、大容量レジスタファイルにデータがロードされたことを同期機構によって処理部に知らせる。逆に、メモリにストアすべきデータを処理部が大容量レジスタファイルに書き込んだとき、処理部は同期機構によりロードストア部に知らせる。また、必要ならば、ロードストア部と処理部とがバリア同期によって処理の実行順序を整列化して正しい動作を保証する。
このようにメモリと大容量レジスタ間のデータ転送と演算処理を並列動作させ、データ供給を効率化する。【０００５】  請求項２の発明は、同期動作のオーバーヘッドを削減することである。
同期フィールドでは、ロードストア部が大容量レジスタファイルへデータを格納したことを処理部に知らせるもの、処理部の生成した演算処理結果が大容量レジスタファイルに格納されたことをロードストア部に通知するもの、ロードストア部と処理部間のバリア同期または複数の処理部間でのバリア同期、および無同期などを規定する。命令形式に同期フィールドを設けることによって、本来のロード命令動作もしくはストア命令動作または制御命令動作と、同期動作が同時に並列実行可能となるので、同期動作によるオーバーヘッドを削減できる。【０００６】  請求項３の発明は、複数の処理部を持たせることによって、それぞれの処理部を互いに並列動作させて性能向上を図るものである。複数の処理部間で共有するデータもしくはメモリにストアする処理結果などの大容量レジスタファイルへの書き込みおよび読み出し動作を順序付けするために、ロードストア部と複数の処理部での同期、または複数の処理部間のみでの同期をとる。ロードストア部および複数の処理部が協調して処理を行って、結果の正確さを保証する。１つのロードストア部と１つの大容量レジスタファイルに対して複数の処理部を持たせることは、大容量レジスタファイルへのデータ供給時間が演算処理時間より高速なばあいに有効である。【０００７】  請求項４の発明は、処理部の構成に関するものである。１つは、ロード命令およびストア命令を除く演算命令ならびに制御命令からなるプログラムを実行する構成である。その命令形式に同期フィールドを設けて、ロードストア部と処理部間または複数の処理部間で同期をとることを指示し、演算処理動作と同期動作を並列実行させる。これにより同期動作のオーバーヘッドを隠蔽できる。また、命令を実行することにより、処理部のハードウェアの共通化ができるので、ハードウェア量の削減と各種アプリケーションへの適用が容易となる。他の１つは、処理部がステートマシンで実現される構成である。この構成では、それぞれの処理ごとに最適なステートマシンによる演算処理を行えるので、ハードウェア量は多くなるが高速である。しかし、処理部のステートマシンに同期ステートの挿入が必要となる。さらに、複数の処理部を持たせて、一般的なアプリケーションをプログラム化された処理部で処理し、特定用途向けの処理をステートマシンによる処理部で実行する構成にすれば、経済的かつ効率的である。
【発明の効果】
【０００８】  本発明により、多種多様なデータのメモリから大容量レジスタファイルへの効率的なロードおよび大容量レジスタファイルからメモリへの効率的なストアと、大容量レジスタファイルを使用した演算処理を、互いに独立に並列動作させることによって、処理時間の短縮ができる。また、命令に同期フィールドを埋め込むことにより、命令処理と同期処理の並列動作が可能となったので、同期処理のオーバーヘッドはほとんど発生しない。さらに、データ転送をプログラム化しているので多種多様なデータに適応しやすい。これは、メモリと大容量レジスタ間のデータ転送の最適化を意味している。それゆえ、無駄なデータ転送が生じず消費電力の削減につながる。一方、処理部は汎用処理ならびに特定用途処理に適した構成にできる。
【発明を実施するための最良の形態】
【０００９】  図１は本発明の基本構成である。処理すべきデータを格納しているメモリ１、それらのデータを読み込み、加工し、そしてメモリ１に戻す作業をするプロセッサ２で構成されている。
プロセッサ２は、処理するためのデータを格納している大容量レジスタファイル３、メモリ１と大容量レジスタファイル３のあいだのデータ転送を行うロードストア部（ＬＳＵ）４、大容量レジスタファイル３のデータを演算処理する処理部５、およびロードストア部４と処理部５で同期をとるための同期機構８で構成される。ロードストア部４は、ロード命令、ストア命令および制御命令で組まれたプログラムを格納するＬＳＵ命令メモリ６とＬＳＵ命令メモリ６からこれらの命令を順次読み出して実行するＬＳＵ制御回路７とで構成される。同期機構８は、互いに独立に並列動作しているロードストア部４と処理部５のあいだの実行順序を調整することによって、大容量レジスタファイル３にあるデータの正確性を保障する。以降の図においてハッチング矢印は制御の方向を示し、単純な矢印はデータの流れを示している。
【実施例】
【００１０】  図２は、本発明の具体例である。プロセッサ１０は、大容量レジスタファイル２０、メモリインターフェース１１、ロードストア部１２、４つの処理部２１，２４、２５、２６およびプロセッサ全体を制御する制御部１６で構成される。
メモリインターフェース１１はメモリ９と大容量レジスタファイル２０のインターフェースであり、参照の時間局所性を確保するために、最近ストアしたデータを記録しておく高速小規模な履歴メモリを内蔵してもよい。
大容量レジスタファイル２０は、処理部が近々に演算処理するべき必要なデータのみを格納している。高速化のために、デュアルポート構成、およびマルチバンク構成であってもよい。本実施例では大容量レジスタファイルのＲ００からＲ１５までを番地用レジスタに使用し、Ｒ１６以降のレジスタをデータ用レジスタに使用している。【００１１】  ロードストア部１２は、ＬＳＵ命令メモリ１３、ＬＳＵ制御回路１４、およびＬＳＵ制御命令によって実行順序を変更するためのＬＳＵ条件レジスタ１５で構成される。ＬＳＵ命令メモリ１５にはロード命令、ストア命令および制御命令列のプログラムが格納されている。ＬＳＵ制御回路１４は、ＬＳＵプログラムカウンタで指定されたＬＳＵ命令メモリ１３の番地から命令を取り出して実行する。ロード命令およびストア命令は、メモリ９上の散らばったデータを大容量レジスタファイル２０の連続領域に集めるギャザー機能、および大容量レジスタファイル２０の連続領域からメモリ９上に散らばらすスキャタ機能を持っている。ＬＳＵ条件レジスタ１５の条件ビットは処理部２１、２４、２５、２６がおもにセットまたはリセットする。ＬＳＵ制御命令はこの条件レジスタ１５によってＬＳＵプログラムの分岐を決定する。高速化を図るために、ＬＳＵ命令の実行をパイプライン処理で行うことができる。
汎用プロセッサでは、ＬＳＵ命令メモリ１３をハーバードアーキテクチャにおける命令用メモリの大容量命令バッファとして構成することができる。さらに、処理データとデータ転送用プログラムを物理的に同一のメモリに格納してもよい。特定用途プロセッサおよびコンフィギャラブルプロセッサ構成では、ＬＳＵ命令ＲＯＭとすることも可能である。また、リコンフィギャラブルプロセッサ構成では、設計回路データのローディング時にＬＳＵ命令メモリ１３に設計データとしてプログラムを書き込むこともできる。【００１２】  ４つの処理部２１、２４、２５，２６は、それぞれに、大容量レジスタファイル２０のデータ処理を行う演算制御回路２３と、必要ならば、演算処理で必要な定数および表、ならびにメモリ上にあるスカラ変数の番地および配列の先頭番地などを格納している処理用ＲＯＭ２２で構成される。汎用プロセッサではロード即値命令およびロード命令などによってメモリから取ってくるので処理用ＲＯＭ２２は不要である。特定用途の専用プロセッサでは物理ＲＯＭで構成できるが、リコンフィギャラブルプロセッサではＲＡＭ構成にして設計回路データのローディング時に生成することができる。【００１３】  制御部１６は、ロードストア部１２と処理部２１、２４，２５，２６とのあいだで実行順序を調整するための同期機構１７、プロセッサの制御や状態を示す制御状態レジスタ１８および制御部制御回路１９で構成される。制御状態レジスタはプロセッサの動作状態を示すビットとプロセッサの構成を制御するビットからなる。構成制御ビットは、大容量レジスタファイルの番地付けの指定、すなわちバンク内およびバンク間での連続な番地付けまたはバンクに跨いでの連続な番地付けの指定、および処理部の動作制御などに使用する。【００１４】  ロードストア部１２のＬＳＵプログラムはロード命令およびストア命令を主として実行するために、必要なデータのみを、間断なくメモリ９と大容量レジスタファイル２０のあいだで転送ができる。また、ロードストア部１２と４個の処理部２１、２４、２５、２６はそれぞれが独立して並列動作しており、ロードストア部１２と処理部２１、２４、２５、２６は、大容量レジスタファイル２０にデータが準備されたことをお互いに同期機構１７を用いて知らせることにより、効率的な実行が可能となる。【００１５】  図３は、処理部演算制御回路２３のステートマシン制御による構成である。演算制御回路２３は演算処理回路２７とスレッド制御ステートマシン３２で構成される。演算処理回路２７は小容量作業用レジスタ２８と１つまたは複数の演算器３０、３１からなり、大容量レジスタファイル２０からのデータを小容量作業用レジスタ２８を使用して演算処理する。途中の結果は、大容量レジスタファイル２０へ戻されるか、または次以降のステートで使用するために小容量作業用レジスタ２８に置いておかれる。スレッド制御ステートマシン３２は演算処理回路２７に制御信号を供給するとともにステートの遷移を行う。この構成は、無駄な回路を生成する必要がなく、個々の演算処理に適した高速なハードウェア化ができる。【００１６】  図４は、処理部演算制御回路２３のプログラム制御による構成である。演算処理回路��３は機能的にはステートマシン制御と同じであるが、構成を比べると演算処理のハードウェアを共通化できるのでハードウェア量の削減が可能となる。プログラム制御回路３４は、処理部命令メモリ３５、スレッドＰＣ３６、スレッドＣＣ３７およびスレッド制御回路３８で構成される。
処理部命令メモリ３５には演算処理命令と処理部制御命令列のプログラムが格納されている。スレッドＰＣ３６はプログラムカウンタであり、それが指した処理部命令メモリ３５の番地から命令を順次取り出して実行する。スレッドＣＣ３７は処理部制御命令の実行分岐を決めるための条件レジスタである。スレッド制御回路３８は命令読み出し、デコード、データ読み出し、実行およびデータ書込みを指示する制御回路である。なお、処理部命令メモリ３５は、前述のＬＳＵ命令メモリ１３と同様な構成が可能である。【００１７】  図５は、ロードストア部１２の命令形式である。命令の種類はＯＰＣＯＤＥフィールド３９で指定する。同期の種類をＳＹＮＣＩＤフィールド４０で指定し、同期を取るべきロードストア部１２および処理部２１、２４、２５、２６をＥＸＵＢＩＴフィールド４１で指示する。
命令の種類がロード命令、ストア命令のとき、大容量レジスタファイル２０のデータ場所を示すレジスタをＲｘｘフィールド４２で、データメモリ番地を示すレジスタをＲｙｙフィールド４３で与え、動作の繰り返し回数をＣＯＵＮＴフィールド４４で、次の繰り返しのメモリ番地の増分をＳＴＲＩＤＥフィールド４５で示す。ＣＯＵＮＴフィールドとＳＴＲＩＤＥフィールドはギャザー動作およびスキャター動作に必要である。
命令の種類が制御命令のときは、条件をＣＣフィールド４６で与え、条件成立したときのＬＳＵ命令メモリ１３の飛び先番地をＬＳＡＤＲフィールド４７で示す。具体的な命令の簡単な説明を下記に示す。【００１８】  ロードストリーム命令（ＬＤＳ）およびストアストリーム命令（ＳＴＲＳ）はメモリ９と大容量レジスタファイル２０のあいだのデータ転送を１ワード単位で行う。メモリ９上の連続データまたはＳＴＲＩＤＥフィールド４５で指定した番地ごとのデータを、ＣＯＵＮＴ４数だけ大容量レジスタファイル２０の連続したレジスタ領域とのあいだで転送する。
ラインロードストリーム命令（ＬＬＤＳ）およびラインストアストリーム（ＬＳＴＲＳ）命令は１回のデータ転送をライン（ブロック）で行うことを除いてロードストリーム命令やストアストリーム命令と同じである。なお、汎用プロセッサではロードイミディエート命令を設けて即値データを大容量レジスタファイルにロードできるようにする。
ジャンプ命令（ＪＭＰ）は、ＣＣフィールド４６で指定したビットに対応するＬＳＵ条件レジスタ１５の該当ビットがセットしておればＬＳＡＤＲフィールド４７で指定したＬＳＵ命令メモリ１３の番地に制御を移す。また、ＣＣフィールド４６がすべて０であれば無条件ジャンプである。セットリセット命令（ＳＲＣＳＲ）は、制御状態レジスタ１８をセットまたはリセットする。無動作命令（ＮＯＰ）は何もしないで同期動作のみに使用する。
ＳＹＮＣＩＤフィールド４０は同期の種類を指定する。無同期（ＮＯＳＹＮＣ）は、同期を伴わない命令実行を行う。リリース同期（ＲＬＳ）は大容量レジスタファイル２０のデータが当該処理部やロードストア部に使用できることを示す。ＥＸＵＢＩＴフィールド４１で当該処理部やロードストア部を指定する。ウェィト同期（ＷＡＩＴ）は、ＥＸＵＢＩＴフィールド４１で指定した処理部やロードストア部が大容量レジスタファイル２０にデータを用意するまで待つことを示す。バリア同期（ＢＡＲ）では、バリアマスターがＥＸＵＢＩＴフィールド４１で同期をとる処理部およびロードストア部を指定する。バリアマスター以外となる処理部やロードストア部は単にＳＹＮＣＩＤフィールド４０でバリア同期を指定する。１つのバリア同期に対して参加しているロードストア部および処理部のなかで１つだけがバリアマスターになりえる。【００１９】  図６は、処理部プログラム制御回路３４の命令形式であり、ロードストア部１２の命令形式とあまり変わらない。ＯＰＣＯＤＥフィールド４８はロード命令およびストア命令以外の演算命令および処理部制御命令を指定する。ＳＹＮＣＩＤフィールド４９およびＥＸＵＢＩＴフィールド５０はロードストア部のものと同じである。演算処理で使用するＲｘｘフィールド５１、Ｒｙｙフィールド５２、およびＲｚｚフィールド５３は大容量レジスタファイル２０のレジスタまたは小容量作業用レジスタ２８を指定し、それぞれデスティネーションレジスタ、第一ソースレジスタおよび第二ソースレジスタを指定する。ＥＵＣＣフィールド５４は処理部制御命令の条件指定に、ＥＵＡＤＲフィールド５５は条件成立したときの処理部命令メモリ３５の飛び先番地に使用する。条件成立判定はスレッドＣＣ３７で決定する。【００２０】  図７は、リリース同期（ＲＬＳ）、ウェイト同期（ＷＡＩＴ）ならびにバリア同期（ＢＡＲ）を行う同期機構５６を示す。ロードストア部および各処理部に対応してＲＬＳＲレジスタ５７、５８、５９、ならびに１個のバリア同期レジスタ（ＢＡＲＲ）６０と同期制御回路６１を持っている。これらのレジスタの各ビットはロードストア部および個々の処理部に対応している。
ＳＹＮＣＩＤフィールド４０、４９でリリース同期（ＲＬＳ）を実行したとき、ＯＰコードの実行後、ＥＸＵＢＩＴフィールド４１、５０で指定されたリリース先のＲＬＳＲレジスタのリリース元に対応するビットをセットし、次の命令に進む。なお、すでに当該ビットの一つでもセットされておればリセットされるまでＯＰコードを実行を待つ。
ウェイト同期（ＷＡＩＴ）を実行したとき、自分自身のＲＳＬＲレジスタのウェイト原因となるロードストア部または処理部に対応するビットを調べ、セットしておればＯＰコードを実行した後リセットして次の命令に進む。０であればセットするまで待つ。
バリア同期（ＢＡＲ）を実行したとき、それがバリアマスターでなければＢＡＲＲレジスタの当該ビットをセットし、当該ビットがリセットされるまでＯＰコードの実行を待つ。バリアマスターであればＥＸＵＢＩＴフィールド４１、５０で指定されたビットとＢＡＲＲレジスタを比較してバリア同期が成立しておれば当該ビットのすべてをリセットしてＯＰコードを実行する。同期が成立していなければ成立するまで待つ。【００２１】  本発明の効果を説明するために、Ｃ言語記述のＦＬＯＰＳベンチマークプログラムの一部を抜き出して変更を加えたプログラムを以下に示す。変数は宣言された順序でメモリに格納されている。
ｍａｉｎ（）
｛
ｆｌｏａｔ  ｗ，ｚ，ｖ，ｓ，ｄ３，ｄ２，ｄ１，ｅ３，ｅ２，ｘ，ｕ；
ｘ＝ｗ／ｚ；
ｖ＝ｖ＋ｗ；
ｕ＝ｖ＊ｘ；
ｓ＝ｓ＋（ｄ１＋ｕ＊（ｄ２＋ｕ＊ｄ３））
／（ｗ＋ｕ＊（ｄ１＋ｕ＊（ｅ２＋ｕ＊ｅ３）））；
｝
本発明を適応するために、このプログラムをメモリとレジスタのあいだのデータ転送動作と演算処理動作に分離した。そして大容量レジスタファイル２０の使途を決めて、ロードストア部１２のプログラムに変換した。ＬＳＵ命令メモリの内容を次に示す。
最左の数字はＬＳＵ命令メモリの番地、空欄のうしろはロードストア部命令自身であり、括弧の中に同期の種類を記述している。次の行の／＊と＊／のあいだはコメントを記入している。このプログラムでは大容量レジスタファイルのＲ０からＲ６までを番地レジスタに、Ｒ２０からＲ３０までをデータレジスタに使用している。
通常０番地で待っているが、実行開始条件がセットすると１番地の実行に移る。順次実行して行き、８番地を実行すると０番地に戻る。このようにプログラムはロード命令、ストア命令および制御命令で作成されている。
０  ＪＭＰ      ８００ｈ，０
／＊  実行開始信号待ち  ＊／
１  ＮＯＰ（ＷＡＩＴ）
／＊  Ｒ１を使用してメモリ番地計算待ち  ＊／
２  ＬＬＤＳ    Ｒ２０，Ｒ１，２，０（ＲＬＳ）
／＊  ｗ，‥‥，ｅ３をラインロード、２回リリース同期発行  ＊／
３  ＳＴＲＳ    Ｒ２９，Ｒ３，１，０（ＷＡＩＴ）
／＊  ｘ，ｖ，ｕ計算後ｘをストア  ＊／
４  ＬＤＳ      Ｒ２８，Ｒ２，１，０（ＲＬＳ）
／＊  ｅ２をロード、リリース  ＊／
５  ＳＴＲＳ    Ｒ２２，Ｒ４，１，０
／＊  ｖをストア  ＊／
６  ＳＴＲＳ    Ｒ３０，Ｒ５，１，０
／＊  ｕをストア  ＊／
７  ＳＴＲＳ    Ｒ２３，Ｒ６，１，０（ＷＡＩＴ）
／＊  ｓ計算終了後ｓをストア  ＊／
８  ＪＭＰ      ０００ｈ，０
／＊  ０番地へ無条件ジャンプ  ＊／
次に、大容量レジスタファイル２０上での演算手順をステートマシンによる一つの処理部で構成する。その結果である実行の流れを次に示す。
最左の数字はマクロステートを表わし、空欄の次にはそのステートで実行する演算内容を示している。ＲＯＭ（ｉ）は、処理部の処理用ＲＯＭの当該番地ｉから定数データ、表データおよびメモリ相対番地を取り出すことを示す。ＲＯＭの０番地にはメモリ上のデータブロックの先頭番地が格納されている。また、ステートの分岐にはｇｏｔｏを使用している。括弧には同期が記述してある。次の行には／＊と＊／で囲んでコメントを記述している。
ステート０で実行開始信号によりステート１に移る。ステート１からステート１６まで、メモリアドレス計算および算術計算を行う。ステート１６でステート０に戻る
０  待ちステート
／＊  実行開始信号待ち  ＊／
１  Ｒ０＝ＲＯＭ（０）
／＊  Ｒ０にデータブロックの先頭番地をセット  ＊／
２  Ｒ１＝Ｒ０＋ＲＯＭ（１）（ＲＬＳ）
／＊  Ｒ１へｗの番地設定  ＊／
３  Ｒ２＝Ｒ０＋ＲＯＭ（２）
／＊  Ｒ２へｅ２の番地設定  ＊／
４  Ｒ３＝Ｒ０＋ＲＯＭ（３）
／＊  Ｒ３へｘの番地設定。＊／
５  Ｒ４＝Ｒ０＋ＲＯＭ（４）
／＊  Ｒ４へｖの設番地定  ＊／
６  Ｒ２９＝Ｒ２０／Ｒ２１（ＷＡＩＴ）
／＊  ｘ＝ｗ／ｚ  ＊／
７  Ｒ２２＝Ｒ２２＋Ｒ２０
／＊  ｖ＝ｖ＋ｗ  ＊／
８  Ｒ５＝Ｒ０＋ＲＯＭ（５）
／＊  Ｒ５へｕの番地設定  ＊／
９  Ｒ３０＝Ｒ２２＊Ｒ２９
／＊  ｕ＝ｖ＊ｘ  ＊／
１０  ＷＲ０＝Ｒ２５＋Ｒ３０＊Ｒ２４（ＷＡＩＴ）
／＊  作業レジスタＷＲ０へ部分式の計算。ＷＲ０＝ｄ２＋ｕ＊ｄ３  ＊／
１１  ＷＲ０＝Ｒ２６＋Ｒ３０＊ＷＲ０（ＲＬＳ）
／＊  作業レジスタＷＲ０へ部分式の計算。ＷＲ０＝ｄ１＋ｕ＊ｗｒ０  ＊／
１２  Ｒ６＝Ｒ０＋ＲＯＭ（６）
／＊  Ｒ６へｓの番地設定  ＊／
１３  ＷＲ１＝Ｒ２８＋Ｒ３０＊Ｒ２７（ＷＡＩＴ）
／＊  作業レジスタＷＲ１へ部分式の計算。ＷＲ１＝ｅ２＋ｕ＊ｅ３  ＊／
１４  ＷＲ１＝Ｒ２６＋Ｒ３０＊ＷＲ１
／＊  作業レジスタＷＲ１へ部分式の計算。ＷＲ１＝ｄ１＋ｕ＊ｗｒ１  ＊／
１５  ＷＲ１＝Ｒ２０＋Ｒ３０＊ＷＲ１
／＊  作業レジスタＷＲ１へ部分式の計算。ＷＲ１＝ｗ＋ｕ＊ｗｒ１  ＊／
１６  Ｒ２３＝Ｒ２３＋ＷＲ０／ＷＲ１（ＲＬＳ），ｇｏｔｏ  ０
／＊  ｓ＝ｓ＋ＷＲ０／ＷＲ１を計算後、ステート０へジャンプ  ＊／
【産業上の利用可能性】
【００２１】  本発明は、従来の専用プロセッサ、ならびにフィールドプログラマブルアレイ（ＦＰＧＡ）を利用したスタンドアローンリコンフィギャラブルプロセッサおよびリコンフィギャラブルコプロセッサに、斬新なプロセッサ構成を示しただけではなく、汎用プロセッサに対しても適応できるプロセッサ構成である。
【図面の簡単な説明】
【００２２】
【図１】本発明の基本構成図である。
【図２】本発明において、４個の処理部を持った情報処理装置の実施例である。
【図３】処理部の専用ステートマシンによる構成図である
【図４】処理部のプログラム制御による構成図である。
【図５】ロードストア部の命令形式である。
【図６】処理部のプログラムによる構成の命令形式である。
【図７】同期機構の構成図である。
【符号の説明】
【００２３】  １    処理データおよび処理結果を格納しているメモリ
２    処理を実行するプロセッサ
３    処理部で使用するデータを格納している大容量レジスタファイル
４    メモリと大容量レジスタファイル間のデータ転送を行うロードストア部
５    大容量レジスタファイルのデータを演算処理する処理部
６    ＬＳＵ命令列を格納するＬＳＵ命令メモリ
７    ＬＳＵ命令を解釈実行するＬＳＵ制御回路
８    ロードストア部と処理部の実行順序を調整する同期機構
９    処理データおよび処理結果を格納しているメモリ
１０    処理を実行するプロセッサ
１１    メモリとプロセッサとのインターフェース部
１２    メモリと大容量レジスタ間のデータ転送を行うロードストア部
１３    ＬＳＵ命令列を格納するＬＳＵ命令メモリ
１４    ＬＳＵ命令を解釈実行するＬＳＵ制御回路
１５    ロードストア部条件レジスタ
１６    プロセッサ全体を制御する制御部
１７    ロードストア部と処理部の実行順序を調整する同期機構
１８    プロセッサの制御と状態を示す制御状態レジスタ
１９    制御部制御回路
２０    処理部で使用するデータを格納する大容量レジスタファイル
２１    大容量レジスタファイルのデータを演算処理する処理部０
２２    変数のメモリ相対番地、定数、演算用表を格納している処理用ＲＯＭ
２３    処理部０の演算および制御を行う演算制御回路
２４    大容量レジスタファイルのデータを処理する処理部１
２５    大容量レジスタファイルのデータを処理する処理部２
２６    大容量レジスタファイルのデータを処理する処理部３
２７    処理部演算処理回路
２８    演算処理回路内小容量作業用レジスタ
２９    変数のメモリ相対番地、定数、演算用表を格納している処理用ＲＯＭ
３０    演算器１
３１    演算器ｎ
３２    処理部内演算処理回路を制御するスレッド制御ステートマシン
３３    処理部演算処理回路
３４    処理部プログラム制御回路
３５    処理部命令用メモリ
３６    処理部のプログラムカウンタであるスレッドＰＣ
３７    処理部条件レジスタであるスレッドＣＣ
３８    処理部命令実行を制御するスレッド制御回路
３９    ロードストア部命令コード
４０    ロードストア部同期の種類
４１    同期動作に参加するロードストア部および処理部を示すビット列
４２    データ格納レジスタ
４３    メモリ番地格納レジスタ
４４    ロード動作およびストア命令の繰り返し回数
４５    次の繰り返し番地へのストライド
４６    ロードストア部制御命令のときの条件指定
４７    ロードストア部制御命令の条件成立時のＬＳＵ命令メモリの飛び先番地
４８    処理部命令コード
４９    処理部同期の種類
５０    同期動作に参加するロードストア部および処理部を示すビット列
５１    デスティネーションレジスタ
５２    ソースレジスタ１
５３    ソースレジスタ２
５４    処理部制御命令の条件指定
５５    処理部制御命令の条件成立時の処理部命令メモリの飛び先番地
５６    制御部同期機構
５７    ＬＳＵ用ＲＬＳＲレジスタ
５８    処理部０用ＲＬＳＲレジスタ
５９    処理部３用ＲＬＳＲレジスタ
６０    ＢＡＲＲレジスタ
６１    同期制御回路
【図１】
2007317152.tif 000003
【図２】
2007317152.tif 000004
【図３】
2007317152.tif 000005
【図４】
2007317152.tif 000006
【図５】
2007317152.tif 000007
【図６】
2007317152.tif 000008
【図７】
2007317152.tif 000009