(57)【要約】【課題】メモリマットの全エントリに共通の定数値を設定する場合に、高速に定数値の設定が行なえる並列演算装置を提供すること。【解決手段】ＡＬＵ３１−１〜３１−ｍのそれぞれは、コントローラ２２によって設定されるＸレジスタ３４およびＸＨレジスタ３５を含む。コントローラ２２は、定数レジスタ２８の定数値を参照して、ＡＬＵ３１−１〜３１−ｍに含まれるそれぞれのＸレジスタ３４およびそれぞれのＸＨレジスタ３５に同じ値を設定し、設定された値をメモリマットの各エントリに書込ませる。したがって、メモリマットの全エントリに共通の定数値を設定する場合に、高速に定数値の設定を行なうことが可能となる。【選択図】図３
2007094812.tif 000002
【特許請求の範囲】
【請求項１】
複数のエントリに対応するデータを並列に演算する並列演算装置であって、
前記複数のエントリに対応するデータの演算を行なう主演算手段と、
マイクロ命令が格納されるマイクロ命令格納手段と、
前記マイクロ命令格納手段に格納されたマイクロ命令を解釈し、前記主演算手段に演算を行なわせる制御手段とを含み、
前記主演算手段は、前記複数のエントリに対応するデータを格納するメモリマットと、
前記複数のエントリに対応して設けられ、前記メモリマットに格納されるデータに対して演算を行なう複数の演算ユニットとを含み、
前記複数の演算ユニットのそれぞれは、前記制御手段によって設定される少なくとも１ビットのレジスタを含み、
前記制御手段は、前記複数の演算ユニットに含まれる前記レジスタに同じ値を設定し、該レジスタに設定された値を前記メモリマットに書込ませる、並列演算装置。
【請求項２】
前記並列演算装置はさらに、定数値を格納する定数レジスタを含み、
前記制御手段は、前記定数レジスタに設定される定数値を所定のビット単位で前記複数の演算ユニットに含まれる前記レジスタに順次設定する、請求項１記載の並列演算装置。
【請求項３】
前記制御手段は、前記定数レジスタに設定される定数値を読込んで解析し、解析結果に応じて前記複数の演算ユニットに含まれる前記レジスタに前記所定ビット単位で値を順次設定する、請求項２記載の並列演算装置。
【請求項４】
前記並列演算装置はさらに、前記定数レジスタのビット位置を指定する第１のレジスタと、
前記メモリマットの複数のエントリのビット位置を指定する第２のレジスタと、
前記定数レジスタから前記メモリマットの複数のエントリに転送する定数のビット数を指定する第３のレジスタとを含み、
前記制御手段は、前記マイクロ命令格納手段から所定命令を読込んだときに、前記第１のレジスタによって指定された前記定数レジスタのビット位置から、前記第３のレジスタによって指定されたビット数分の定数を、前記第２のレジスタによって指定された前記メモリマットのビット位置を先頭に前記所定ビット単位で転送する、請求項２または３記載の並列演算装置。
【請求項５】
複数のエントリに対応するデータを並列に演算する並列演算装置であって、
前記複数のエントリに対応するデータの演算を行なう主演算手段と、
マイクロ命令が格納されるマイクロ命令格納手段と、
前記マイクロ命令格納手段に格納されたマイクロ命令を解釈し、前記主演算手段に演算を行なわせる制御手段とを含み、
前記主演算手段は、前記複数のエントリに対応するデータを格納するメモリマットと、
前記複数のエントリに対応して設けられ、前記メモリマットに格納されるデータに対して演算を行なう複数の演算ユニットとを含み、
前記複数の演算ユニットのそれぞれは、前記制御手段によって設定される少なくとも１ビットのレジスタを含み、
前記制御手段は、前記複数の演算ユニットに含まれる前記レジスタに同じ値を設定し、該レジスタに設定された値と前記メモリマットからロードした値との演算を行なわせる、並列演算装置。
【請求項６】
前記並列演算装置はさらに、定数値を格納する定数レジスタを含み、
前記制御手段は、前記定数レジスタに設定される定数値を所定のビット単位で前記複数の演算ユニットに含まれる前記レジスタに順次設定する、請求項５記載の並列演算装置。
【請求項７】
前記制御手段は、前記定数レジスタに設定される定数値を読込んで解析し、解析結果に応じて前記複数の演算ユニットに含まれる前記レジスタに前記所定ビット単位で値を順次設定する、請求項６記載の並列演算装置。
【請求項８】
前記並列演算装置はさらに、前記定数レジスタのビット位置を指定する第１のレジスタと、
前記メモリマットの複数のエントリのビット位置を指定する第２のレジスタと、
前記定数レジスタに格納される定数値のうち演算対象の定数のビット数を指定する第３のレジスタとを含み、
前記制御手段は、前記マイクロ命令格納手段から所定命令を読込んだときに、前記第１のレジスタによって指定された前記定数レジスタのビット位置から前記第３のレジスタによって指定されたビット数分の定数と、前記第２のレジスタによって指定された前記メモリマットのビット位置から前記第３のレジスタによって指定されたビット数分のデータとを前記所定ビット単位で演算する、請求項６または７記載の並列演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ（Single Instruction stream-Multiple Data stream）型、ＭＩＭＤ（Multiple Instruction stream-Multiple Data stream）型などの並列演算装置に関し、特に、高速に定数を設定することが可能な並列演算装置に関する。
【背景技術】
【０００２】
近年、携帯端末機器などの普及に伴い、音声、画像などの大量のデータを高速に処理するデジタル信号処理の重要性が高くなってきている。このようなデジタル信号処理においては、ＳＩＭＤ型、ＭＩＭＤ型などの並列演算装置を搭載した処理システムが用いられることが多くなっている。
【０００３】
このような処理システムに搭載される並列演算装置は、一般に、メモリマットと演算処理ユニット（ＡＬＵ）とを含む。並列演算装置を制御するホストＣＰＵ（Central Processing Unit）と並列演算装置とを接続するシステムバスのバス幅が３２ビット、並列演算装置のメモリマットに設定する定数のビット幅が３２ビット、定数のエントリ数が１０２４個の場合、定数をエントリの全てに設定するために必要となる転送サイクル数はベストケースで１０２４サイクルとなる。
【０００４】
また、並列演算に関する技術として、特開平５−１９７５５０号公報に開示された発明がある。この発明は、ＡＬＵの構成に簡単な機能を追加して処理速度を向上することのできる超並列計算機のＡＬＵ構成方式に関するものであり、各種の演算を実行するための演算器とデータを記憶するメモリとをそれぞれに有する複数のプロセッサを備え、この各プロセッサを１つの制御プロセッサで並列に動作させる。各演算器において、アドレス格納手段は、メモリをアクセスする際のアドレスを格納するものであって、アドレス制御手段は、アドレス格納手段に格納されるべきアドレスを生成するとともに、このアドレス値に従ってメモリをアクセスすることで、メモリの中の異なるメモリ領域をアクセスするよう構成するものである。
【特許文献１】特開平５−１９７５５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したように、メモリマットとＡＬＵとを含んだ並列演算装置において、システムバス幅が３２ビット、定数のビット幅が３２ビット、定数のエントリ数が１０２４個の場合、全エントリに共通の定数値（係数）を設定するときでも同じデータを１０２４回設定する必要がある。したがって、並列演算装置の処理性能が高くても定数を設定するのに必要な転送サイクルが多くなってしまい、システム全体のボトルネックになり得るといった問題点があった。
【０００６】
また、特許文献１に開示された発明を用いたとしても、このような問題点を解決することはできない。
【０００７】
本発明は、上記問題点を解決するためになされたものであり、その目的は、メモリマットの全エントリに共通の定数値を設定する場合に、高速に定数値の設定が行なえる並列演算装置を提供することである。
【０００８】
他の目的は、メモリマットの全エントリのデータに対して共通の定数値を演算する場合に、高速に演算が行なえる並列演算装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明のある局面に従えば、複数のエントリに対応するデータを並列に演算する並列演算装置であって、複数のエントリに対応するデータの演算を行なう主演算手段と、マイクロ命令が格納されるマイクロ命令格納手段と、マイクロ命令格納手段に格納されたマイクロ命令を解釈し、主演算手段に演算を行なわせる制御手段とを含み、主演算手段は、複数のエントリに対応するデータを格納するメモリマットと、複数のエントリに対応して設けられ、メモリマットに格納されるデータに対して演算を行なう複数の演算ユニットとを含み、複数の演算ユニットのそれぞれは、制御手段によって設定される少なくとも１ビットのレジスタを含み、制御手段は、複数の演算ユニットに含まれるレジスタに同じ値を設定し、レジスタに設定された値をメモリマットに書込ませる。
【００１０】
本発明の別の局面に従えば、複数のエントリに対応するデータを並列に演算する並列演算装置であって、複数のエントリに対応するデータの演算を行なう主演算手段と、マイクロ命令が格納されるマイクロ命令格納手段と、マイクロ命令格納手段に格納されたマイクロ命令を解釈し、主演算手段に演算を行なわせる制御手段とを含み、主演算手段は、複数のエントリに対応するデータを格納するメモリマットと、複数のエントリに対応して設けられ、メモリマットに格納されるデータに対して演算を行なう複数の演算ユニットとを含み、複数の演算ユニットのそれぞれは、制御手段によって設定される少なくとも１ビットのレジスタを含み、制御手段は、複数の演算ユニットに含まれるレジスタに同じ値を設定し、レジスタに設定された値とメモリマットからロードした値との演算を行なわせる。
【発明の効果】
【００１１】
本発明のある局面によれば、制御手段が、複数の演算ユニットに含まれるレジスタに同じ値を設定し、レジスタに設定された値をメモリマットに書込ませるので、メモリマットの全エントリに共通の定数値を設定する場合に、高速に定数値の設定を行なうことが可能となる。
【００１２】
本発明の別の局面によれば、制御手段が、複数の演算ユニットに含まれるレジスタに同じ値を設定し、レジスタに設定された値とメモリマットからロードした値との演算を行なわせるので、メモリマットの全エントリのデータに対して共通の定数値を演算する場合に、高速に演算を行なうことが可能となる。
【発明を実施するための最良の形態】
【００１３】
（第１の実施の形態）
図１は、本発明の第１の実施の形態における並列演算装置が搭載される処理システムの構成例を示すブロック図である。この処理システムは、システムＬＳＩ（Large Scale Integrated circuit）１と、外部システムバス５を介してシステムＬＳＩ１に接続されるＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）２と、ＳＲＡＭ（Static Random Access Memory）３と、ＲＯＭ（Read Only Memory）４とを含む。
【００１４】
ＲＯＭ４には、リセット直後に実行されるＩＰＬ（Initial Program loader）などが格納される。システムＬＳＩ１は、外部システムバス５を介してＳＤＲＡＭ２、ＳＲＡＭ３およびＲＯＭ４にアクセスしながら、演算処理を実行する。
【００１５】
システムＬＳＩ１は、複数の基本演算ブロック１１−１〜１１−ｋと、出力ＩＰ（Intellectual Property）１２と、入力ＩＰ１３と、システムＬＳＩ１の全体的な制御を行なうホストＣＰＵ１４と、割込みコントローラ１５と、ＣＰＵ周辺回路１６と、ＤＭＡ（Direct Memory Access）コントローラ１７と、外部システムバス５を介して外部メモリ等との間のデータの入出力を制御する外部バスコントローラ１８と、専用ロジックＩＰ１９とを含む。これらのブロックは、ホストＣＰＵシステムバス２０に接続される。なお、基本演算ブロック１１−１〜１１−ｋのそれぞれが並列演算装置に相当する。
【００１６】
出力ＩＰ１２は、ホストＣＰＵシステムバス２０を介して受けた出力データを出力信号に変換して外部に出力する。入力ＩＰ１３は、外部からの入力信号を内部処理用データに変換してホストＣＰＵシステムバス２０に出力する。
【００１７】
割込みコントローラ１５は、基本演算ブロック１１−１〜１１−ｋからの割込信号を受け、ホストＣＰＵ１４に対して割込要求を出力する。
【００１８】
ホストＣＰＵ１４は、外部のＲＯＭ４などに格納されたプログラムを実行して、ホストＣＰＵシステムバス２０を介して基本演算ブロック１１−１〜１１−ｋにデータを設定したり、基本演算ブロック１１−１〜１１−ｋによる演算結果を受けて所定の処理を行なったりする。また、ホストＣＰＵ１４は、割込みコントローラ１５から割込要求を受けると、割込要求に対応した割込処理を行なう。
【００１９】
ＣＰＵ周辺回路１６は、ホストＣＰＵ１４がプログラムやデバッグを実行する際に使用するタイマ、シリアルＩ／Ｏなどの機能を含む。
【００２０】
ＤＭＡコントローラ１７は、基本演算ブロック１１−１〜１１−ｋからのＤＭＡ要求信号を受け、基本演算ブロック１１−１〜１１−ｋと外部システムバス５に接続される外部メモリとの間のＤＭＡ転送を制御する。
【００２１】
専用ロジックＩＰ１９は、ホストＣＰＵ１４のデータ処理を補助するための論理回路によって構成され、各機能ブロックを用いて必要な処理機能を実現する。
【００２２】
基本演算ブロック１１−１〜１１−ｋのそれぞれは、実際のデータの演算処理を行なう主演算回路２１と、コントローラ２２と、マイクロ命令メモリ２３と、ワークデータメモリ・レジスタ群２４と、ホストＣＰＵシステムバス２０を介して他のブロックとの間のデータの入出力を行なうシステムバスＩ／Ｆ（Interface）２５と、直交変換回路２６と、スイッチ２７とを含む。
【００２３】
マイクロ命令メモリ２３は、主演算回路２１による演算処理を指定するマイクロ命令を格納する。コントローラ２２は、マイクロ命令メモリ２３から読込んだマイクロ命令に従って主演算回路２１の演算処理を制御する。
【００２４】
ワークデータメモリ・レジスタ群２４は、コントローラ２２による中間処理データなどを格納するワークエリアとして用いられるメモリと、後述するレジスタ群とを含む。スイッチ２７は、システムバスＩ／Ｆ２５および直交変換回路２６からのデータを選択的に主演算回路２１に出力し、主演算回路２１からのデータをシステムバスＩ／Ｆ２５または直交変換回路２６に選択的に出力する。
【００２５】
主演算回路２１は、複数のメモリセルが行列状に配列されかつ複数のエントリに分割されるメモリマットＡ，Ｂ（３２）と、メモリマットＡ，Ｂ（３２）の各エントリに対応して配置され、指定された演算処理を行なうＡＬＵ（Arithmetic and Logic Unit）３１−１〜３１−ｍと、ＡＬＵ３１−１〜３１−ｍ間のデータ転送経路を設定するＡＬＵ間相互接続用スイッチ回路３３とを含む。
【００２６】
基本的には、メモリマットＡ，Ｂ（３２）の各列が１エントリを構成し、１エントリに多ビットデータの各ビットが格納される。ＡＬＵ３１−１〜３１−ｍは、対応のエントリからのデータをビットシリアルに受けて演算処理を行ない、処理結果をメモリマットＡ，Ｂ（３２）の指定されたエントリに格納する。
【００２７】
また、ＡＬＵ間相互接続用スイッチ回路３３は、ＡＬＵ３１−１〜３１−ｍの接続経路を切換え、異なるエントリのデータの演算をＡＬＵ３１−１〜３１−ｍに行なわせることも可能である。各エントリに異なるデータを格納し、ＡＬＵ３１−１〜３１−ｍに並列演算処理を行なわせることにより、高速にデータ処理を行なうことも可能である。
【００２８】
基本演算ブロック１１−１〜１１−ｋには、異なるＣＰＵアドレス領域が割付けられる。また、基本演算ブロック１１−１〜１１−ｋ内のメモリマットＡ，Ｂ（３２）、コントローラ２２内の制御レジスタ、マイクロ命令メモリ２３およびワークデータメモリ・レジスタ群２４にも、それぞれ異なるＣＰＵアドレスが割付けられる。
【００２９】
したがって、基本演算ブロック１１−１〜１１−ｋのそれぞれのマイクロ命令メモリ２３に異なる内容のマイクロ命令を格納することにより、異なる演算処理を並行して行なわせることができる。また、基本演算ブロック１１−１〜１１−ｋにおいて、異なるアドレス領域のデータについて同一の演算処理が行なわれるように、マイクロ命令メモリ２３に同一の演算内容のマイクロ命令が格納されてもよい。
【００３０】
ホストＣＰＵ１４およびＤＭＡコントローラ１７は、割付けられたアドレスに応じてアクセス対象の基本演算ブロック１１−１〜１１−ｋを識別し、アクセス対象の基本演算ブロックに対するアクセスを実行する。
【００３１】
図２は、主演算回路２１の機能を模式的に示す図である。メモリマットＡ，Ｂ（３２）は、メモリセルが行列状に配列され、ｍ個のエントリに分割される。エントリのそれぞれは、メモリマットＡおよびメモリマットＢのそれぞれにおいて、ｎビットのビット幅を有する。
【００３２】
ＡＬＵ３１−１〜３１−ｍは、ｍ個のエントリのそれぞれに対して設けられ、加算、論理積、一致検出（ＥＸＯＲ）、反転（ＮＯＴ）などの演算を行なう。ＡＬＵ３１−１〜３１−ｍは、メモリマットＡおよびメモリマットＢに同時にアクセス可能である。
【００３３】
ＡＬＵ３１−１〜３１−ｍは、対応するエントリのメモリマットＡおよびメモリマットＢからのデータのロードと、メモリマットＡおよびメモリマットＢへのデータのストアとを行ないながら、ビットシリアルで演算処理を実行する。図２においては、メモリマットＢに定数が設定されているところを示している。
【００３４】
図３は、本発明の第１の実施の形態における並列演算装置の主演算装置２１の機能的構成をさらに詳細に説明するための図である。各エントリ間のデータ転送は、ＡＬＵ間相互接続用スイッチ回路３３によって、ＡＬＵ３１−１〜３１−ｍを介して行なわれる。なお、エントリ間のデータ転送は、ＡＬＵを介して行なわれなくともよい。
【００３５】
ＡＬＵ３１−１〜３１−ｍのそれぞれは、１ビットのＸレジスタ３４およびＸＨレジスタ３５を有し、ＡＬＵによる演算結果を一時的に記憶する。各エントリのＸレジスタおよびＸＨレジスタは、コントローラ２２からの制御信号が接続されており、コントローラ２２からの信号によって、１にセット、０にクリアすることが可能である。なお、このセット／クリアは、全エントリに対して同時に行なうことも可能である。
【００３６】
コントローラ２２は、マイクロ命令メモリ２３から読込んだマイクロ命令を解釈し、メモリマットＡ，Ｂ（３２）への定数の設定命令であれば、定数レジスタ２８の内容を取得してＸレジスタ３４およびＸＨレジスタ３５に設定し、指定されたメモリマットＡ，Ｂ（３２）のビット位置にＸレジスタ３４およびＸＨレジスタ３５の内容を順次書込む。以下、定数の設定手順について説明する。
【００３７】
まず、ホストＣＰＵ１４は、外部システムバス５および外部バスコントローラ１８を介して外部のメモリから定数値を読込み、ホストＣＰＵシステムバス２０およびシステムバスＩ／Ｆ２５を介して定数レジスタ２８に定数値を設定する。そして、コントローラ２２は定数の設定命令を読込む。
【００３８】
（１）コントローラ２２は、定数レジスタ２８に設定されている定数値の最下位の２ビットを読込み、全エントリのＸレジスタ３４およびＸＨレジスタ３５に設定する。ここで、定数値の設定方法として、コントローラ２２が定数レジスタ２８に設定されている２ビットの値を解釈し、全エントリのＸレジスタ３４およびＸＨレジスタ３５のセット／クリア制御を行なうようにしてもよいし、定数レジスタ２８に設定されている２ビットの値を直接全エントリのＸレジスタ３４およびＸＨレジスタ３５に設定するようにしてもよい。
【００３９】
なお、Ｘレジスタ３４およびＸＨレジスタ３５を用いて２ビット単位で定数を設定する方法について説明しているが、実装条件によっては１ビット単位で定数値を設定してもよいし、３ビット以上の単位で定数値を設定するようにしてもよい。
【００４０】
（２）次に、Ｘレジスタ３４およびＸＨレジスタ３５に設定された値が、コントローラ２２によって指定されたメモリマットＢ（３２）のビット位置に書込まれる。
【００４１】
（３）そして、コントローラ２２は、定数レジスタ制御信号を出力して、定数レジスタ２８から読込む定数値のビット位置を２ビット上位側にシフトし、その２ビットを全エントリのＸレジスタ３４およびＸＨレジスタ３５に設定する。このシフト量も定数を何ビット単位で設定するかによって違ってくる。なお、定数値が書込まれるメモリマットＢ（３２）のビット位置も順次シフトされる。
【００４２】
以上の（１）〜（３）の処理（図３の（１）〜（３）に対応）を繰り返し、定数レジスタ２８に設定された定数値が全てメモリマットＢ（３２）に書込まれたときに定数値の設定処理が終了する。なお、上記（１）〜（３）の１回の処理は、１サイクルで実行されるものとする。
【００４３】
以上説明したように、本実施の形態における並列演算装置によれば、コントローラ２２が定数レジスタ２８に設定された定数値を所定ビット単位でＡＬＵ３１−１〜３１−ｍ内のレジスタに設定し、その値を各エントリの所定ビット位置に同時に書込むようにしたので、定数値の設定処理を高速で行なうことが可能となった。
【００４４】
たとえば、上述のようにＸレジスタ３４およびＸＨレジスタ３５を用いてメモリマットＢ（３２）に３２ビットの定数値を設定する場合、定数レジスタ２８への定数値の設定サイクル数“１”を含めたとしても、エントリ数に関係なく１７サイクルで行なうことができる。一方、従来のようにホストＣＰＵが各エントリ毎に定数値を外部メモリから読込み、メモリマットの各エントリに定数値を設定する場合には、エントリ数が１０２４であれば、１０２４サイクルを要することになる。したがって、本実施の形態においては、従来よりも６０倍高速に定数値を設定できることになる。エントリ数が増えれば増えるほど、その差が大きくなる。
【００４５】
（第２の実施の形態）
図４は、本発明の第２の実施の形態における並列演算装置の構成例を示す図である。この並列演算装置は、ＡＬＵ３１−１〜３１−ｍと、メモリマットＡ，Ｂ（３２）と、定数レジスタＫ０〜Ｋ７と、プログラムカウンタＰＣ０〜ＰＣ３と、ループカウンタＬＣ０〜ＬＣ３と、アレイポインタＰ０〜Ｐ３と、汎用レジスタＲ０〜Ｒ７と、ステータス・レジスタＳＴと、エントリコミュニケータ移動量指定レジスタＥＣＲと、ｈａｌｔレジスタＨＬＴとを含む。なお、このレジスタ群は、図１に示すワークデータメモリ・レジスタ群２４に設けられる。
【００４６】
定数レジスタは、Ｋ０〜Ｋ７で１２８ビットのレジスタを構成する。アレイポインタＰ０（ＭＰ）およびＰ２（ＭＰ２）は、定数レジスタＫ０〜Ｋ７に格納される１２８ビットの定数のビット位置を示し、転送元アドレスとして参照される。アレイポインタＰ１（ＡＰ）およびＰ３（ＡＰ２）は、メモリマットＡ，Ｂ（３２）の各エントリのビット位置を示し、転送先アドレスとして参照される。ループカウンタＬＣ０〜ＬＣ３は、メモリアレイＡ，Ｂ（３２）の各エントリに書込む定数のビット数を示す。
【００４７】
汎用レジスタＲ０〜Ｒ７は、演算対象のデータや演算結果などを格納するのに使用される。ステータス・レジスタＳＴは、基本演算ブロックの状態を示すフラグなどが格納されるレジスタである。また、ｈａｌｔレジスタＨＬＴは、基本演算ブロックの処理が停止中であるか否かを示す。なお、レジスタの個数は、これらに限られるものではない。
【００４８】
図５（ａ）は、２ビット単位で定数をメモリマットに設定する命令の一例を示す図である。ｍｘ２＿ｃｐ＿ｋ（ａｐ，ｋｐ，ｎ）命令は、Ｋレジスタのビット位置ｋｐからｎビット分の定数を、メモリマットＡ，Ｂ（３２）の全エントリのビット位置ａｐからｎビットのメモリ領域へ２ビット単位で順次コピーする命令である。たとえば、転送先アドレスａｐはアレイポインタＰ１（ＡＰ）に設定され、転送元アドレスｋｐはアレイポインタＰ０（ＭＰ）に設定され、ビット長ｎはループカウンタＬＣ０に設定される。
【００４９】
図５（ｂ）は、ｍｘ２＿ｃｐ＿ｋ命令を用いたプログラムの一例を示す図である。まず、ｓｅｔ  ｒｅｇ命令を実行することによって、定数レジスタＫ０に“１２３４５”が設定される。そして、ｍｘ＿ｓｔＶ命令を実行することによって、定数レジスタＫ０に設定した定数を各エントリのメモリマットに設定するか否かを制御する。このＶフラグは、各エントリのＡＬＵにレジスタとして割付けられている。
【００５０】
最後に、ｍｘ２＿ｃｐ＿ｋ命令を実行することによって、メモリマットＡ，Ｂ（３２）の全エントリのビット位置−１６〜−１の領域に、定数レジスタＫ０のビット位置０から２ビット単位で１６ビット分の定数が順次コピーされる。
【００５１】
図６は、１ビット単位で定数をメモリマットに設定する命令の一例を示す図である。ｍｘ＿ｃｐ＿ｋ（ａｐ，ｋｐ，ｎ）命令は、Ｋレジスタのビット位置ｋｐからｎビット分の定数を、メモリマットＡ，Ｂ（３２）の全エントリのビット位置ａｐからｎビットのメモリ領域へ１ビット単位で順次コピーする命令である。この場合には、図３に示すＸレジスタ３４またはＸＨレジスタ３５のいずれか一方のみが使用される。
【００５２】
以上説明したように、本実施の形態における並列演算装置によれば、ｍｘ２＿ｃｐ＿ｋ命令やｍｘ＿ｃｐ＿ｋ命令をサポートすることにより、これらの命令を１回発行するだけで各エントリへの定数の設定を行なうことが可能となった。
【００５３】
また、設定したい定数の複数パターンをＫレジスタに予め設定しておき、必要な定数のビット位置とビット数とを指定することにより、複数の定数を容易にメモリマットの各エントリに設定することが可能となる。
【００５４】
（第３の実施の形態）
本発明の第２の実施の形態においては、２ビット単位または１ビット単位で定数をメモリマットの各エントリに設定する命令について説明した。本実施の形態においては、定数レジスタＫに設定された定数をメモリマットに設定せずに、定数レジスタＫに設定された定数を参照して直接演算を行なうものである。
【００５５】
本発明の第３の実施の形態における並列演算装置の構成例は、図４に示す第２の実施の形態における並列演算装置の構成例と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００５６】
図７（ａ）は、定数レジスタの定数を２ビット単位で参照して加算を行なう命令の一例を示す図である。ｍｘ２＿ａｄｄ＿ｋ（ａｐ，ｋｐ，ｎ）命令は、メモリマットＡ，Ｂ（３２）のビット位置ａｐからｎビットの領域の内容と、Ｋレジスタのビット位置ｋｐからｎビットの領域の内容とを２ビット単位で加算し、その加算結果をメモリマットＡ，Ｂ（３２）のビット位置ａｐからｎビットの領域に格納する命令である。
【００５７】
図７（ｂ）は、Ｋレジスタのビット位置ｋｐを説明するための図である。８個のＫレジスタは、連続した１２８ビットの領域として見え、たとえば、ビット位置ｋｐが定数レジスタＫ０の所定位置を指し示す場合、定数レジスタＫ０の内容が２ビット単位で順次参照され、定数レジスタＫ０のビット１５まで参照されると、次は定数レジスタＫ１のビット０から順次参照される。
【００５８】
並列演算装置がｍｘ２＿ａｄｄ＿ｋ命令を実行する場合、ＡＬＵ３１−１〜３１−ｍのそれぞれは、図３に示すＸレジスタ３４およびＸＨレジスタ３５に設定された値と、メモリマットからロードした２ビットのデータとを加算して、加算結果をメモリマットにストアする。
【００５９】
図８は、定数レジスタの定数を１ビット単位で参照して加算を行なう命令の一例を示す図である。ｍｘ＿ａｄｄ＿ｋ（ａｐ，ｋｐ，ｎ）命令は、メモリマットＡ，Ｂ（３２）のビット位置ａｐからｎビットの領域の内容と、Ｋレジスタのビット位置ｋｐからｎビットの領域の内容とを１ビット単位で加算し、その加算結果をメモリマットＡ，Ｂ（３２）のビット位置ａｐからｎビットの領域に格納する命令である。
【００６０】
図９（ａ）は、定数レジスタの定数を２ビット単位で参照して減算を行なう命令の一例を示す図である。ｍｘ２＿ｓｕｂ＿ｋ（ａｐ，ｋｐ，ｎ）命令は、メモリマットＡ，Ｂ（３２）のビット位置ａｐからのｎビットの領域の内容から、Ｋレジスタのビット位置ｋｐからのｎビットの領域の内容を２ビット単位で減算し、その減算結果をメモリマットＡ，Ｂ（３２）のビット位置ａｐからｎビットの領域に格納する命令である。
【００６１】
並列演算装置がｍｘ２＿ｓｕｂ＿ｋ命令を実行する場合、ＡＬＵ３１−１〜３１−ｍのそれぞれは、メモリマットからロードした２ビットのデータから、図３に示すＸレジスタ３４およびＸＨレジスタ３５に設定された値を減算して、減算結果をメモリマットにストアする。
【００６２】
図９（ｂ）は、定数レジスタの定数を１ビット単位で参照して減算を行なう命令の一例を示す図である。ｍｘ＿ｓｕｂ＿ｋ（ａｐ，ｋｐ，ｎ）命令は、メモリマットＡ，Ｂ（３２）のビット位置ａｐからのｎビットの領域の内容から、Ｋレジスタのビット位置ｋｐからのｎビットの領域の内容を１ビット単位で減算し、その減算結果をメモリマットＡ，Ｂ（３２）のビット位置ａｐからｎビットの領域に格納する命令である。
【００６３】
以上説明したように、本実施の形態における並列演算装置によれば、定数レジスタＫに設定された定数を参照して直接演算を行なうようにしたので、定数レジスタＫに設定された定数をメモリマットに設定する処理を省くことができ、処理性能を向上させることが可能となった。
【００６４】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００６５】
【図１】本発明の第１の実施の形態における並列演算装置が搭載される処理システムの構成例を示すブロック図である。
【図２】主演算回路２１の機能を模式的に示す図である。
【図３】本発明の第１の実施の形態における並列演算装置の主演算装置２１の機能的構成をさらに詳細に説明するための図である。
【図４】本発明の第２の実施の形態における並列演算装置の構成例を示す図である。
【図５】（ａ）は、２ビット単位で定数をメモリマットに設定する命令の一例を示す図である。（ｂ）は、ｍｘ２＿ｃｐ＿ｋ命令を用いたプログラムの一例を示す図である。
【図６】１ビット単位で定数をメモリマットに設定する命令の一例を示す図である。
【図７】（ａ）は、定数レジスタの定数を２ビット単位で参照して加算を行なう命令の一例を示す図である。（ｂ）は、Ｋレジスタのビット位置ｋｐを説明するための図である。
【図８】定数レジスタの定数を１ビット単位で参照して加算を行なう命令の一例を示す図である。
【図９】（ａ）は、定数レジスタの定数を２ビット単位で参照して減算を行なう命令の一例を示す図である。（ｂ）は、定数レジスタの定数を１ビット単位で参照して減算を行なう命令の一例を示す図である。
【符号の説明】
【００６６】
１  システムＬＳＩ、２  ＳＤＲＡＭ、３  ＳＲＡＭ、４  ＲＯＭ、５  外部システムバス、１１−１〜１１−ｋ  基本演算ブロック、１２  出力ＩＰ、１３  入力ＩＰ、１４  ホストＣＰＵ、１５  割込みコントローラ、１６  ＣＰＵ周辺回路、１７  ＤＭＡコントローラ、１８  外部バスコントローラ、１９  専用ロジックＩＰ、２０  ホストＣＰＵシステムバス、２１  主演算回路、２２  コントローラ、２３  マイクロ命令メモリ、２４  ワークデータメモリ・レジスタ群、２５  システムバスＩ／Ｆ、２６  直交変換回路、２７  スイッチ、２８  定数レジスタ、３１−１〜３１−ｍ  ＡＬＵ、３２  メモリマットＡ，Ｂ、３３  ＡＬＵ間相互接続用スイッチ回路、３４  Ｘレジスタ、３５  ＸＨレジスタ。
【図１】
2007094812.tif 000003
【図２】
2007094812.tif 000004
【図３】
2007094812.tif 000005
【図４】
2007094812.tif 000006
【図５】
2007094812.tif 000007
【図６】
2007094812.tif 000008
【図７】
2007094812.tif 000009
【図８】
2007094812.tif 000010
【図９】
2007094812.tif 000011