(57)【特許請求の範囲】
【請求項１】
データを演算処理する演算手段及び当該演算手段で演算処理されるデータを保持するとともに当該演算手段で演算処理されたデータを保持するデータ保持手段を備える複数のプロセッサエレメントと、このプロセッサエレメントそれぞれに接続されるデータ転送バスと、所定のプロセッサエレメントを指定する指定手段と、前記プロセッサエレメントそれぞれに接続されるアドレスバスと、演算処理されるデータを前記データ転送バスより取得して前記データ保持手段に保持させるための取得信号、或いは前記データ保持手段に保持されている演算処理されたデータを前記データ転送バスより出力させるための出力信号を前記データ保持手段に与える信号発生手段と、を備え、
前記データ保持手段は、複数のレジスタを有する第１のレジスタ群と、複数のレジスタを有する第２のレジスタ群とを有し、前記指定手段が所定のプロセッサエレメントをアドレス指定し、この指定されたプロセッサエレメントの所定の前記データ保持手段に前記信号発生手段が信号を与えることにより、前記データ保持手段の中の前記第1のレジスタ群、第２のレジスタ群から所定数のレジスタを選択し、前記データ保持手段の中の選択されたレジスタにデータを前記データ転送バスより取得或いは出力することを特徴とするＳＩＭＤ型プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、一つの演算命令により複数の画像データ等を並列処理するＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）型プロセッサに関するものである。
【背景技術】
【０００２】
近年、デジタル複写機やファクリミリ装置等において、画素数を増加させたり、或いはカラー対応にするなど画像の向上が図られている。そして、この画像の向上に伴い、処理すべきデータ数が増加している。ところで、複写機などにおけるデータ処理は全ての画素に対して同じ演算処理を施すことが多い。そこで、１つの命令で複数のデータに対して同時に同じ演算処理を行うＳＩＭＤ型プロセッサが用いられるようになっている。ここで、演算処理は複数の演算器を並べることで実現できるが、演算の対象となるデータは演算速度に見合う速度でメモリ等をアクセスする必要があり、この速度に間に合わない場合はデータのアクセス速度でプロセッサの性能が決定してしまう。通常タイプのＳＩＳＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｉｎｇｌｅ  Ｄａｔａ）型プロセッサでは、演算データはプロセッサのプログラムによりメモリから逐次アクセスするが、この場合にデータのアクセス速度はメモリのビット幅と転送時間で決定する。ＳＩＭＤ型プロセッサにおいてもこの方法を用いると演算は並列処理であるのに対して、データのアクセスは逐次処理となりＳＩＳＤ型プロセッサ程度に処理能力は低下してしまう。
【０００３】
このため、ＳＩＭＤ型プロセッサでは、演算対象データのアクセスはプロセッサの命令では行わず、外部のメモリデータ転送装置からプロセッサ内部の入出力用のレジスタに直接アクセスするように構成している。即ち、プロセッサでの演算実行と同時に、外部に備えられたメモリデータ転送装置が次に演算処理されるデータを入力用レジスタへ転送したり、演算処理されたデータを出力レジスタからメモリデータ転送装置を介してメモリへ転送することで、データ処理の高速化を図っている。
【０００４】
プロセッサと外部メモリデータ転送装置での処理フローは以下のように行われる。
(1)外部メモリデータ転送装置が演算対象データを入力用レジスタに転送。
(2)プロセッサは外部から演算データを転送済みである入力用のレジスタから演算対象デ
ータを演算用のレジスタに転送し演算を開始。
(3)プロセッサが所定の演算を実行する。この間に外部メモリデータ転送装置が次の演算
対象データを入力用レジスタに転送。また、演算処理済みデータ（結果データ）が出力用レジスタにある場合には外部メモリデータ転送装置が結果データを出力用レジスタからメモリへ転送。
(4)プロセッサは演算を終了し、結果データを出力用レジスタに転送。
【０００５】
上記のように、プロセッサの演算実行時に同時に外部のメモリデータ転送装置が演算データを転送することで高速化を実現している。
【０００６】
このデータ転送方式として、シフトレジスタ方式、或いはシリアルアクセスメモリ方式が採用されている。このシフトレジスタ方式は、例えば、特許文献１（特開平５−６７２０３号公報）に記載されているように、クロック入力に同期して、レジスタに保持されているデータがビット毎に順次シフトされる方式である。このシフトレジスタ方式によれば、例えば２５６個のプロセッサエレメントを持つＳＩＭＤ型プロセッサの場合、１回目に転送されたデータは０番目のプロセッサエレメントの入力レジスタに保持され、次のクロック入力により１ビットシフトされて１番目のプロセッサエレメントの入力レジスタに保持される。そして、１回目に転送されたデータが、２５５番目のプロセッサエレメントの入力レジスタに保持されるまでには、合計２５６回のクロック入力が必要となる。
【０００７】
また、シリアルアクセスメモリ方式は、例えば、特許文献２（特開平６−４６９０号公報）に記載されているように、入力ポインタが一つのプロセッサエレメントに論理“Ｈ”を立てた入力ポインタ信号を発生し、論理“Ｈ”で指定されたプロセッサエレメントの入力ＳＡＭ（シリアルアクセスメモリ）に入力データが書き込まれる方式である。このシリアルアクセスメモリ方式では、入力ポインタ信号はクロック入力に同期してビット毎に順次シフトしていく。従って、このシリアルアクセスメモリ方式によれば、例えば２５６個のプロセッサエレメントを持つＳＩＭＤ型プロセッサの場合、１回目のデータ転送では、入力ポインタ信号が０番目のプロセッサエレメントを指定し、０番目のプロセッサエレメントの入力ＳＡＭにデータが保持される。次いで、２回目のデータ転送では、入力ポインタ信号がクロック入力に同期して１ビットシフトして１番目のプロセッサエレメントを指定し、１番目のプロセッサエレメントの入力ＳＡＭにデータが保持される。このようにして、２５５番目のプロセッサエレメントの入力ＳＡＭにデータが保持されるまでには、合計２５６回目のクロック入力が必要となる。
【特許文献１】特開平５−６７２０３号公報
【特許文献２】特開平６−４６９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、これらの方式によると、データを偶数番目のプロセッサエレメントにだけ転送したいような場合であっても、奇数番目のプロセッサエレメントにも転送しなければならないという問題があった。また、データを後半のプロセッサエレメント（１２８番目〜２５５番目）にだけ転送したいような場合であっても、全部のプロセッサエレメントに転送しなければならないという問題があった。即ち、特定のプロセッサエレメントにだけデータを直接転送することはできないという問題があった。そのため、必要なデータを転送するのに、必要以上に時間を要し、データ処理が遅くなるという問題があった。
【０００９】
また、プロセッサで行うデータ処理においては、入力データの保持に必要な入力レジスタのビット幅、出力データの保持に必要な出力レジスタのビット幅、一時的にデータを保持するのに必要なレジスタのビット幅は実行するアプリケーションにより異なる。従来のＳＩＭＤ型プロセッサにおいては、入力レジスタ、出力レジスタ、一時的にデータを保持するレジスタで保持できるデータのビット幅が固定であった。そのため、データがこれらのレジスタで保持できるビット幅を越えるとデータ処理できないという問題があった。
【００１０】
また、従来技術では入出力レジスタと入出力ポートのビット幅は同じであり、全プロセッサエレメント（ＰＥ）のデータを転送するのにはＰＥ数だけのアクセスが必要であり、転送時間が多くなる問題があった。
【００１１】
また、アプリケーションによっては多数のラインバッファが必要となりプロセッサエレメントに内蔵するレジスタをこの用途に使用している。しかし、レジスタ数は固定であるため、この値を超えるラインバッファが必要なアプリケーションには対応できない問題があった。
【００１２】
この発明は、斯かる従来の問題に着目してなされたものであり、データを任意のプロセッサエレメントに直接に転送することを可能にすることで、データの転送を高速にし、延いてはデータ処理を高速にすることを目的とする。また、レジスタの使用用途を柔軟にすることで、データのビット数に柔軟に対応したデータ処理を可能にすることを目的とする。
【課題を解決するための手段】
【００１６】
この発明のＳＩＭＤ型プロセッサは、データを演算処理する演算手段及び当該演算手段で演算処理されるデータを保持するとともに当該演算手段で演算処理されたデータを保持するデータ保持手段を備える複数のプロセッサエレメントと、このプロセッサエレメントそれぞれに接続されるデータ転送バスと、所定のプロセッサエレメントを指定する指定手段と、前記プロセッサエレメントそれぞれに接続されるアドレスバスと、演算処理されるデータを前記データ転送バスより取得して前記データ保持手段に保持させるための取得信号、或いは前記データ保持手段に保持されている演算処理されたデータを前記データ転送バスより出力させるための出力信号を前記データ保持手段に与える信号発生手段と、を備え、前記データ保持手段は、複数のレジスタを有する第１のレジスタ群と、複数のレジスタを有する第２のレジスタ群とを有し、前記指定手段が所定のプロセッサエレメントをアドレス指定し、この指定されたプロセッサエレメントの所定の前記データ保持手段に前記信号発生手段が信号を与えることにより、前記データ保持手段の中の前記第1のレジスタ群、第２のレジスタ群から所定数のレジスタを選択し、前記データ保持手段の中の選択されたレジスタにデータを前記データ転送バスより取得或いは出力することを特徴とする。
【００１７】
これによれば、信号発生手段が演算処理されるデータをデータ保持手段に保持させるための取得信号をデータ保持手段に与えることで、このデータ保持手段は演算処理されるデータを取得して保持するものとして機能する。さらに、信号発生手段がデータ保持手段に保持されている演算処理されたデータを出力させるための出力信号をデータ保持手段に与えることで、このデータ保持手段は演算処理されたデータを出力するものとして機能する。このように、レジスタの使用用途を柔軟にすることで、入力データ及び出力データのビット数に柔軟に対応したデータ処理が可能になる。
【発明の効果】
【００１８】
以上詳述したように、この発明によれば、演算処理されるデータは、アドレス指定されたプロセッサエレメントのデータ保持手段に保持されるため、データを任意のプロセッサエレメントに直接に転送できる。また、演算手段で演算処理されたデータを出力する場合にも、アドレス指定されたプロセッサエレメントのデータ保持手段に保持されているデータを出力する。そのため、データの転送を高速にでき、延いてはデータ処理を高速にできる。
【００１９】
また、データ保持手段は入力レジスタとしての機能を有するとともに、出力レジスタとしての機能を有する。このように、データ保持手段の使用用途を柔軟にすることで、データのビット数に柔軟に対応したデータ処理が可能になる。
【発明を実施するための最良の形態】
【００２０】
（第１の実施形態）
以下、この発明に係るＳＩＭＤ型プロセッサ１の実施形態を、図１乃至図４に基づいて説明する。
【００２１】
ＳＩＭＤ型プロセッサ１は、図１に示すように、グローバルプロセッサ２、本実施形態では２５６組の後述するプロセッサエレメント３ａからなるプロセッサエレメントブロック３、メモリコントローラ５と接続される外部インタフェース４から構成される。メモリコントローラ５はグローバルプロセッサ２の命令に基づき、メモリ６から演算対象データをプロセッサ内部の入出力用のレジスタフィル３１に直接アクセスする。
【００２２】
まず、メモリコントローラ５につき説明する。図１に示すように、メモリコントローラ４は、ＳＩＭＤ型プロセッサ１のレジスタファイル３１と外部インタフェース４のデータ転送ポートを介して接続されていて、レジスタファイル３１からメモリ６へのデータ転送、メモリ６からレジスタファイル３１へのデータ転送を行っている。メモリコントローラ５が制御するレジスタは、Ｉ／Ｏ空間にマッピングされており、グローバルプロセッサ２からの指示に従い、アドレス、クロック、及びリード／ライト制御を出力することでリード、ライト可能となっている。
【００２３】
グローバルプロセッサ２からメモリコントローラ５へはＩ／Ｏ用のアドレス、データ、コントロール信号がバスを介して与えられる。グローバルプロセッサ２がメモリコントローラ５のいくつかの動作設定レジスタ（図示せず）へ動作方法等のコマンドを設定している。最後にグローバルプロセッサ２は、メモリコントローラ５のスタートレジスタ（図示せず）にスタートコードを書き込むことで、メモリコントローラ５は自動的に設定に従った動作を行う。このように構成することで、プロセッサの命令制御による演算と同時にレジスタファイル３１のデータを入出力する。
【００２４】
図２は、この発明に用いられるメモリコントローラ５の構成を示したものである。メモリコントローラ５は、メモリ６にデータライトを行うライトバッファ部５４と、メモリ６からデータリードを行うリードバッファ部５５と、ＰＥレジスタファイルの制御を行っているＰＥ制御部５２、メモリ６の制御を行うＲＡＭ制御部５３、及びシーケンスユニット（ＳＣＵ）５１より構成されている。
【００２５】
ライトバッファ部５４にはＳＩＭＤ方式プロセッサ１の外部インタフェース４の出力ポートが接続され、リードバッファ部５５には外部インタフェース４の入力ポートが接続される。
【００２６】
グローバルプロセッサ２は、図３に示すように、グローバルプロセッサ２、プロセッサエレメントブロック３、外部インタフェース４及びメモリコントローラ５を制御するためのプログラムが格納されたプログラムＲＡＭ２１、及びこのプログラムＲＡＭ２１に基づきグローバルプロセッサ２、プロセッサエレメントブロック３、外部インタフェース４、メモリコントローラ５を制御するシーケンスユニット２２を備える。具体的には、このシーケンスユニット２２は、グローバルプロセッサ２に備えられている後述する算術論理演算器２３（以下、「ＡＬＵ２３」という。）等を制御する。
【００２７】
また、このシーケンスユニット２２は、プロセッサエレメントブロック３を構成する後述するレジスタファイル３１、及び後述する演算アレイ３６を制御する。この演算アレイ３６は、マルチプレクサ３２、シフト拡張回路３３、算術論理演算器３４（以下、「ＡＬＵ３４」という）、及びレジスタ３５を備える。なお、このグローバルプロセッサ２は、いわゆるＳＩＳＤ型であり、一つの演算命令に対して一つの演算処理を行うものである。
【００２８】
さらに、このシーケンスユニット２２は、後述するメモリコントローラ５に対してデータ転送のための動作設定用データ及びコマンド等を送る。メモリコントローラ５は、シーケンスユニット２２の動作設定用データ及びコマンドに基づき、プロセッサエレメント３ａのアドレス指定のためのアドレス制御信号、プロセッサエレメント３ａを構成する後述するレジスタ３１ｂにデータのリード／ライトを指示するためのリード／ライト制御信号、クロック信号を与えるためのクロック制御信号を外部インタフェース４に与える。
【００２９】
ここで、リード／ライト制御信号のうちライト制御信号とは、演算処理されるデータを後述するデータバス４１ｄより取得して、プロセッサエレメント３ａのレジスタ３１ｂに保持させるための信号をいう。一方、リード／ライト制御信号のうちリード制御信号とは、プロセッサエレメント３ａのレジスタ３１ｂが保持している演算処理されたデータを、後述するデータバス４１ｄへ与えるようレジスタ３１ｂに指示するための信号をいう。
【００３０】
メモリコントローラ５は、グローバルプロセッサ２からのコマンドを受けて、プロセッサエレメントブロック３を構成するプロセッサエレメント３ａのアドレスを指定する信号（以下、「アドレス指定信号」という。）を作成し、外部インタフェース４からアドレスバス４１ａを介してプロセッサエレメント３ａの後述するレジスタコントローラ３１ａヘ送る。また、メモリコントローラ５は、後述するようにプロセッサエレメント３ａを構成するレジスタ３１ｂに対して、データのリード／ライトを指示するための信号（以下、「リード／ライト指示信号」という。）を、リード／ライト信号４１ｂを介してプロセッサエレメント３ａの後述するレジスタコントローラ３１ａヘリード／ライト信号が与えられる。また、メモリコントローラ５は、外部インタフェース４からクロック信号４１ｃを介してプロセッサエレメント３ａの後述するレジスタコントローラ３１ａへクロック信号を与える。
【００３１】
また、メモリコントローラ５は、上述したように、ＳＩＭＤ型プロセッサ１の外部に設けられたメモリ６に格納されているデータを、本実施形態では８ビットのパラレルデータとして、データバス４１ｄに置く。この８ビットのパラレルデータについては、データに応じて適宜変更しても問題ない。このデータバス４１ｄは、レジスタ３１ｂに保持されている演算処理されたデータが、ＳＩＭＤ型プロセッサ１の外部に設けられたメモリ６に送られる時にも使用される。
【００３２】
なお、メモリ６は演算処理されるデータを格納するとともに、演算処理されたデータを格納するものであり、これらのメモリ６はＳＩＭＤ型プロセッサ１の内部に設けても問題ない。また、メモリコントローラ５とメモリ６との間のデータ転送についても、本実施形態では８ビットのパラレルデータとして転送されるものとして扱うが、データに応じて適宜変更しても問題ない。なお、メモリコントローラ５が行うその他の動作については後述する。
【００３３】
また、グローバルプロセッサ２は、上記シーケンスユニット２２からの命令により、算術論理演算を行うＡＬＵ２３、演算データを格納するデータＲＡＭ２４を備える。さらに、グローバルプロセッサ２は、演算処理されるデータ等を保持するためのレジスタ群２５を備える。
【００３４】
このレジスタ群２５は、プログラムのアドレスを保持するプログラムカウンタＰＣ、演算処理のデータ格納のための汎用レジスタであるＧ０〜Ｇ３レジスタ、レジスタ待避、復帰時に待避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）、同じくＩＲＱ時とＮＭＩ時の分岐元アドレスを保持するＬＩ、ＬＮレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）を内蔵している。
【００３５】
また、レジスタ群２５は、プロセッサエレメントブロック３の後述するレジスタ３５に接続されており、このレジスタ３５との間でシーケンスユニット２２の制御によりデータの交換が行われる。
【００３６】
プロセッサエレメントブロック３は、図１及び図３に示すように、レジスタファイル３１、マルチプレクサ３２、シフト・拡張回路３３、算術論理演算器３４（以下、「ＡＬＵ３４」という。）、レジスタ３５、を一単位とする複数のプロセッサエレメント３ａを備える。レジスタファイル３１には、１つのプロセッサエレメント３ａ単位に８ビットのレジスタが３２本内蔵されており、本実施形態では２５６プロセッサエレメント分の組がアレイ構成になっている。レジスタファイル３１は１つのプロセッサエレメント（ＰＥ）３ａごとにＲ０、Ｒ１、Ｒ２、．．．Ｒ３１と呼ばれているレジスタが内蔵されている。それぞれのレジスタファイル３１は演算アレイ３６に対して１つの読み出しポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバスで演算アレイ３６からアクセスされる。３２本のレジスタの内、２４本はプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード／ライト制御を入力することで任意のレジスタを読み書きできる。
【００３７】
レジスタの外部からのアクセスは１つの外部ポートで各プロセッサエレメント（ＰＥ）の１つのレジスタがアクセス可能であり外部から入力されたアドレスでプロセッサエレメント（ＰＥ）の番号（０〜２５５）を指定する。したがって、レジスタアクセスの外部ポートは全部で２４組搭載されている。また、外部からのアクセスは偶数のプロセッサエレメント（ＰＥ）と奇数のプロセッサエレメント（ＰＥ）の１組で１６ビットデータとなっており、１回のアクセスで２つのレジスタを同時にアクセスしている。
【００３８】
本実施形態では、プロセッサエレメント３ａの数を２５６個として説明するが、これに限定されるものでなく適宜変更して使用してもよい。このプロセッサエレメント３ａには、グローバルプロセッサ２のシーケンスユニット２２により、外部インタフェース４に近い順に０から２５５までのアドレスが割り付けられる。
【００３９】
プロセッサエレメント３ａのレジスタファイル３１は、レジスタコントローラ３１ａ、２種類のレジスタ３１ｂ、３１ｃを備える。本実施形態では、図３及び図４に示すように、一単位のプロセッサエレメント３ａ毎に、レジスタコントローラ３１ａとレジスタ３１ｂとを２４組備え、さらにレジスタ３１ｃを８個備えている。なお、図４では２組のプロセッサエレメント３ａにおけるレジスタファイル３１の一部を表しており、図３、４中の１ＰＥとは１つのプロセッサエレメント３ａを表している。ここで、本実施形態では、レジスタ３１ｂ、３１ｃを８ビットのものとして扱うが、これに限定されるものでなく適宜変更して使用してもよい。
【００４０】
レジスタコントローラ３１ａは、図４に示すように、外部インタフェース４と、上述したアドレスバス４１ａ、リード／ライト信号４１ｂ、クロック信号４１ｃを介して接続されている。このレジスタコントローラ３１ａは、メモリコントローラ５から外部インタフェース４に与えられ、アドレスバス４１ａを介してアドレス指定信号が送られてくると、そのアドレス指定信号をデコードする。そして、デコードしたアドレスと、自己のプロセッサエレメント３ａに割り付けられたアドレスとが一致する場合には、メモリコントローラ５から外部インタフェース４に与えられ、クロック信号４１ｃからのクロック信号に同期して、リード／ライト信号４１ｂを介してメモリコントローラ５から送られてきたリード／ライト指示信号を得る。このリード／ライト指示信号は、レジスタ３１ｂへ与えられる。
【００４１】
レジスタ３１ｂは、後述するＡＬＵ３４でこれから演算される外部から入力されたデータを保持したり、或いはＡＬＵ３４で演算処理されたデータを外部へ出力するために保持するものであり、いわゆる入力レジスタとしても、或いは出力レジスタとしても機能する。また、演算処理されるデータ、或いは演算されたデータを一時的に保持するといった、後述するレジスタ３１ｃとしての機能も有する。なお、本実施形態では、レジスタ３１ｂは８ビットのデータを保持できるものとして扱うが、データに応じて適宜変更しても問題ない。上述したレジスタコントローラ３１ａからライト指示信号が与えられると、レジスタ３１ｂは演算処理されるデータをデータバス４１ｄより取得して保持する。一方、レジスタコントローラ３１ａからリード指示信号が送られてくると、レジスタ３１ｂは保持している演算処理されたデータをデータバス４１ｄへ与える。このデータは外部インタフェース４からメモリコントローラ５のライトバッファ部５４に与えられ、ライトバッファ部５４からメモリ６へ格納される。
【００４２】
また、レジスタ３１ｂは、本実施形態においては８ビットデータをパラレルで転送するデータバス３６を介してマルチプレクサ３２に接続されている。ＡＬＵ３４で演算処理されるデータ、或いはＡＬＵ３４で演算処理されたデータは、このデータバス３６を介して、レジスタ３１ｂとの間で転送される。この転送は、グローバルプロセッサ２のシーケンスユニット２２からの指示によって、グローバルプロセッサ２に接続されたリード信号２６ａ、ライト信号２６ｂを介して行われる。具体的には、グローバルプロセッサ２のシーケンスユニット２２から、リード信号２６ａを介してリード指示信号が送られてくると、レジスタ３１ｂはデータバス３６を介して送られてきたＡＬＵ３４で演算処理されたデータを保持する。一方、グローバルプロセッサ２のシーケンスユニット２２から、ライト信号２６ｂを介してライト指示信号が送られてくると、レジスタ３１ｂは保持している演算処理されるデータをデータバス３６へ置く。このデータはＡＬＵ３４へ送られ演算処理される。
【００４３】
レジスタ３１ｃは、レジスタ３１ｂより与えられた演算処理されるデータ、或いは演算されたデータがレジスタ３１ｂに与えられる前に、そのデータを一時的に保持するものである。このレジスタ３１ｃは、上述したレジスタ３１ｂと異なり、メモリコントローラ５を介して、メモリ６との間においてデータ転送はしない。
【００４４】
演算アレイ３６は、マルチプレクサ３２シフト／拡張回路３３、１６ビットＡＬＵ３４及び１６ビットのレジスタ３５を備えている。このレジスタ３５には、１６ビットＡレジスタ、Ｆレジスタを内蔵している。
【００４５】
プロセッサエレメント（ＰＥ）３ａの命令による演算は、基本的にレジスタファイル３１から読み出されたデータをＡＬＵ３４の片側の入力としてもう片側にはレジスタ３５のＡレジスタの内容を入力として結果をＡレジスタに格納する。したがって、Ａレジスタとレジスタファイル３１のＲ０〜Ｒ３１レジスタとの演算が行われることとなる。レジスタファイル３１と演算アレイ３６との接続に（７ｔｏ１）のマルチプレクサ３２を置いており、プロセッサエレメント（ＰＥ）方向で左に１、２、３つ離れたデータと右に１、２、３つ離れたデータ、中央のデータを演算対象として選択している。また、レジスタファイル３１の８ビットのデータはシフト／拡張回路３３により任意ビットの左シフトしてＡＬＵ３４に入力される。さらに、図示していない８ビットの条件レジスタ（Ｔ）により、プロセッサエレメント３ａごとに演算実行の無効／有効の制御をしており、特定のプロセッサエレメント３ａだけを演算対象として選択できるように構成している。
【００４６】
上記したように、マルチプレクサ３２は、自己のプロセッサエレメント３ａに備えられた上記データバス３６に接続されるとともに、両隣３つのプロセッサエレメント３ａに備えられたデータバス３６にも接続されている。このマルチプレクサ３２は７つのプロセッサエレメント３ａから１つを選択し、その選択したプロセッサエレメント３ａにおけるレジスタレジスタ３１ｂ、３１ｃで保持されているデータをＡＬＵ３４へ送る。或いはＡＬＵ３４で演算処理されたデータを、選択したプロセッサエレメント３ａにおけるレジスタレジスタ３１ｂ、３１ｃへ送る。これによって、隣のプロセッサエレメント３ａにおけるレジスタレジスタ３１ｂ、３１ｃで保持されているデータを利用した演算処理が可能になり、ＳＩＭＤ型プロセッサ１の演算処理能力を高めることができる。
【００４７】
シフト／拡張回路３３は、マルチプレクサ３２から送られてきたデータを所定ビットシフトしてＡＬＵ３４へ送る。或いはＡＬＵ３４から送られてきた演算処理されたデータを所定ビットシフトしてマルチプレクサ３２へ送る。
【００４８】
ＡＬＵ３４は、シフト／拡張回路３３から送られてきたデータと、レジスタ３５に保持されているデータとに基づき算術論理演算を行う。なお、本実施形態では、ＡＬＵ３４は１６ビットのデータに対応できるものとして扱うが、データに応じて適宜変更しても問題ない。演算処理されたデータは、レジスタ３５に保持され、シフト／拡張回路３３へ転送されたり、或いはグローバルプロセッサ２の汎用レジスタ２５へ転送される。
【００４９】
次に、外部からプロセッサエレメント３ａのレジスタファイル３１へのアクセスにつき図４を参照して説明する。この図４では、外部インタフェース４の外部ポートは８ビットのアドレス、ハイレベル時にリード動作をローレベル時にライト動作を示すリード／ライト選択信号、転送のタイミングを示すクロック、転送データである８ビットデータで構成されている。これらの信号はプロセッサの外部インタフェース４に接続され、ここでタイミングおよびバッファリングされ、プロセッサ内部の信号としてアドレス、リード／ライト、クロック、データに変換される。
【００５０】
これらの信号はレジスタファイル３１の各レジスタに供給されるが、各プロセッサエレメント３ａ…ごとにアドレスをデコードして各プロセッサエレメント３ａ…を示すアドレスと一致したプロセッサエレメント３ａだけがリード／ライトの動作をおこなう。そのため各プロセッサエレメント３ａごとにアドレスのデコードとリード／ライトの制御を行うレジスタコントローラ３１ａを備える。そして、入出力レジスタ３１ｂには、リード／ライト信号４１ｂから与えられるリード／ライト指示信号（ライト信号Ｗ１、リード信号Ｒ１）に基づき、外部インタフェース４と接続されたデータバス４１ｄとデータの転送をおこなう。入出力レジスタ３１ｂは演算アレイ３６ともデータの転送をおこなうため、もう一方の入出力ポートを持ち、命令によりグローバルプロセッサ２で作成され、リード信号２６ａ及びライト信号２６ｂから与えられたライト（Ｗ２）、リード（Ｒ２）制御信号により、演算アレイ３６と接続されたデータバス３７（Ｄ２）からデータの転送をおこなう。
【００５１】
図４では２個のプロセッサエレメント３ａ分の構成だけを図示しているが、図３の２５６個のプロセッサエレメント３ａ…の構成と合わせるためには、レジスタコントローラ３１ａとレジスタファイル３１ｂは２５６組必要となる。また、２５６組を選択するためにアドレスのビット幅は８ビットとなっている。従って、プロセッサエレメント３ａの数の増減によりアドレスのビット幅も変化することとなる。また、データのビット幅もここでは８ビットとしているが１度に転送するデータ量により変化する。
【００５２】
このように構成される本実施形態におけるＳＩＭＤ型プロセッサ１は、以下のような動作を行うため、以下のような利点を得ることができる。
【００５３】
メモリコントローラ５が、メモリ６に格納されているデータをプロセッサエレメント３ａに送る場合、プロセッサエレメント３ａに割り付けられたアドレスを指定することにより、１回のクロック信号が入力されるだけで、その指定したプロセッサエレメント３ａにデータを送ることができる。例えばデータを偶数番目のプロセッサエレメント３ａにだけ転送したい場合には、偶数番目のプロセッサエレメント３ａをアドレス指定すればよい。よって、奇数番目のプロセッサエレメント３ａに、データを転送する必要がないため、データ転送が高速になり、延いてはデータ処理を高速にすることができる。
【００５４】
また、これとは逆に、レジスタ３１ｂに保持されている演算処理されたデータをメモリ５に転送する場合においても、メモリコントローラ５が、プロセッサエレメント３ａに割り付けられたアドレスを指定することにより、１回のクロック信号が入力されるだけで、指定したプロセッサエレメント３ａのレジスタ３１ｂに保持されているデータをメモリ６に転送できる。従って、この場合においても、必要なデータのみを転送できるため、データ転送が高速になり、延いてはデータ処理を高速にすることができる。
【００５５】
一つのプロセッサエレメント３ａにつき、２４個づつ備えられているレジスタ３１ｂは、上述したように、演算処理されるデータを保持したり、或いは演算処理されたデータを保持するものであり、いわゆる入力レジスタとしても、或いは出力レジスタとしても機能する。例えば、メモリコントローラ５からプロセッサエレメント３ａに送られるデータ、即ち入力データが５６ビットのものであり、プロセッサエレメント３ａからメモリコントローラ５に送るデータ、即ち出力データが３２ビットのものであり、一時的に保持されるべきデータが８０ビットである場合のアプリケーションを考える。この場合、７個のレジスタ３１ｂを５６ビットの入力データを保持するものとして利用し（８ビット×７個＝５６ビット）、４個のレジスタ３１ｂを３２ビットの出力データを保持するものとして利用することができる（８ビット×４個＝３２ビット）。このように、入力データのビット数及び出力データのビット数それぞれのビット数に係わらず、入力データのビット数と出力データのビット数との合計が、８ビット×２４個＝１９２ビットを越えなければ、そのアプリケーションの演算実行ができる。
【００５６】
また、データを一時的に保持するレジスタ３１ｃは、本実施形態では、一つのプロセッサエレメント３ａにつき８個づつ備えられている。そのため、８ビット×８個＝６４ビット分を保持できる。しかし、この例のように、一時的に保持されるべきデータが８０ビットである場合には、レジスタ３１ｃだけでは１６ビット（＝８０ビット−６４ビット）分のデータが保持できない。この場合においても、本実施形態においてレジスタ３１ｂは、上述したようにデータを一時的に保持する機能も有するため、使用していない１１個（＝２４個−７個−４個）のレジスタ３１ｂのうち、２個（８ビット×２個＝１６ビット）を一時的なデータ保持のために使用すればよい。
【００５７】
このように、レジスタ３１ｂの使用用途が柔軟であるため、データのビット数に柔軟に対応したデータ処理が可能である。このことは、このＳＩＭＤ型プロセッサ１で演算処理できるアプリケーションの幅が増えることになり、使用用途が広がるという利点がある。
【００５８】
上記した実施の形態においては、外部インタフェース４の外部ポートは外部端子として説明しているが、図５の実施形態のように、転送先のメモリ６とメモリ転送ブロック７が同一チップ上に搭載され、特に外部端子として外部ポートを出力しない場合でも、図３のプロセッサエレメント３ａ…単位でのアドレスデコードとリード／ライトコントロールにより、同一チップに搭載されたメモリ転送ブロック７等で各プロセッサエレメント３ａ…の任意のレジスタをアクセスすることが可能である。
【００５９】
次に、上記実施の形態の変更例につき図６に従い説明する。図６に示す構成は、図４の基本構成を２つ搭載している。即ち、図３に示す実施の形態では、入出力レジスタ３１ｂは全部で２４個あり、８個は演算アレイ３６からのみアクセス可能な演算処理用の一時的なデータ保持に使用される演算レジスタ３１ｃである。この２種類のレジスタが合計で３２個あるため、例えば、入力データが５６ビット、出力データが３２ビット、一時的なデータ保持に８０ビットが必要なアプリケーションでは、７個の入出力レジスタ３１ｂを外部入力レジスタ用に、４個の入出力レジスタ３１ｂを外部出力レジスタに、８個の演算レジスタ３１ｃと２個の入出力レジスタ３１ｂの合計１０個を一時的なデータ保持に割り当てることで実現できる。つまり、入力データと出力データのビット幅の合計が１９２ビットまでで、一時的なデータ保持のビット幅を加えた合計のビット幅が２５６ビットまでのアプリケーションであれば自由にレジスタの使用方法を設定して実現できることになる。これに対して、従来のプロセッサでは入力レジスタ、出力レジスタ、演算レジスタが固定のビット幅であったため、いずれかのビット幅を超えるアプリケーションは実現できなかった。
【００６０】
（第２の実施形態）
本発明に係るＳＩＭＤ型プロセッサ１の第２の実施形態を図７を参照して以下説明する。なお、ここでは上述した第１実施形態と異なる点について説明することとし、同じ点については説明を省略する。また、上述した第１実施形態と同じ構成部分については、同一の符号を付する。
【００６１】
この第２実施形態におけるＳＩＭＤ型プロセッサ１は、互いに隣り合う２つのプロセッサエレメント３ａに偶数番号、奇数番号を割り付けて一組とするとともに、この一組のプロセッサエレメント３ａには、同一のアドレスを割り付けていることを特徴とする。さらに、偶数番号が割り付けられたプロセッサエレメント３ａ用の偶数用データバス４６ａと、奇数番号が割り付けられたプロセッサエレメント３ａ用の奇数用データバス４６ｂと、を各組毎のプロセッサエレメント３ａにそれぞれ割り当てていることを特徴とする。また、メモリコントローラ４とＳＩＭＤ型プロセッサ１の外部に設けられたメモリ５、６との間において、データは上記第１実施形態のように８ビットではなく、１６ビットがパラレルで転送されることも特徴とする。この１６ビットのデータは、偶数番号が割り付けられたプロセッサエレメント３ａに与えられる８ビットと、奇数番号が割り付けられたプロセッサエレメント３ａに与えられる８ビットとから構成されている。以下、具体的にこの実施形態について説明する。
【００６２】
まず、グローバルプロセッサ２からメモリコントローラ５へはＩ／Ｏ用のアドレス、データ、コントロール信号がバスを介して与えられる。グローバルプロセッサ２がメモリコントローラ５のいくつかの動作設定レジスタ（図示せず）へ動作方法等のコマンドを設定している。最後にグローバルプロセッサ２は、メモリコントローラ５のスタートレジスタ（図示せず）にスタートコードを書き込むことで、メモリコントローラ５は自動的に設定に従った動作を行う。
【００６３】
外部インタフェース４は、メモリコントローラ５からアドレス制御信号を受けると、アドレス指定信号をアドレスバス４１ａを介してプロセッサエレメントブロック３ヘ送る。これにより、一組のプロセッサエレメント３ａ、即ち２つのプロセッサエレメント３ａが同時にアドレス指定される。レジスタコントローラ３１ａは、送られてきたアドレス指定信号をデコードし、デコードしたアドレスと、自己に割り付けられたアドレスとが一致する場合には、メモリコントローラ５からクロック信号４１ｃを介して送られてきたクロック信号に同期して、リード／ライト信号４５ａ或いは４５ｂを介してメモリコントローラ４から送られてきたリード／ライト指示信号を得る。具体的には、偶数番号が割り付けられているレジスタコントローラ３１ａは、偶数用リード／ライト信号４５ａを介してメモリコントローラ４から送られてきたリード／ライト指示信号を得る。一方、奇数番号が割り付けられているレジスタコントローラ３１ａは、奇数用リード／ライト信号４５ｂを介してメモリコントローラ４から送られてきたリード／ライト指示信号を得る。このとき一組を構成するプロセッサエレメント３ａのレジスタコントローラ３１ａへ送られるリード／ライト指示信号はそれぞれ異なるものであってもよい。即ち、偶数番号が割り付けられているレジスタコントローラ３１ａへ送られる指示信号がリード指示であるとき、奇数番号が割り付けられているレジスタコントローラ３１ａへ送られる指示信号はライト指示であってもよい。そして、このリード／ライト指示信号はレジスタ３１ｂに与えられる。
【００６４】
レジスタコントローラ３１ａから双方のプロセッサエレメント３ａに対し、ライト指示信号が送られてきた場合には、偶数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂは、演算処理されるデータ（８ビット）を偶数用データバス４６ａより取得して保持する。また、奇数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂは、演算処理されるデータ（８ビット）を奇数用データバス４６ｂより取得して保持する。一方、レジスタコントローラ３１ａから双方のプロセッサエレメント３ａに対し、リード指示信号が送られてきた場合には、偶数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂは、演算処理されたデータ（８ビット）を偶数用データバス４６ａへ送る。また、奇数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂは、演算処理されたデータ（８ビット）を奇数用データバス４６ｂへ送る。
【００６５】
このように、一度のアドレス指定により、偶数番号が割り付けられたプロセッサエレメント３ａにデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント３ａにもデータ転送できる。このため、データの転送回数を少なくすることができ、データ転送を高速にできる。よって、データ処理を高速にできる。また、本実施形態においても、上記第１実施形態と同様に、プロセッサエレメント３ａをアドレス指定していることより、上記第１実施形態と同様の利点を得ることができる。
【００６６】
次に、上記実施の形態の変更例につき図８に従い説明する。図８に示す構成は、図７の基本構成を２つ搭載している。即ち、図３に示す実施の形態では、入出力レジスタ３１ｂは全部で２４個あり、８個は演算アレイ３６からのみアクセス可能な演算処理用の一時的なデータ保持に使用される演算レジスタ３１ｃである。この２種類のレジスタが合計で３２個あるため、例えば、入力データが５６ビット、出力データが３２ビット、一時的なデータ保持に８０ビットが必要なアプリケーションでは、７個の入出力レジスタ３１ｂを外部入力レジスタ用に、４個の入出力レジスタ３１ｂを外部出力レジスタに、８個の演算レジスタ３１ｃと２個の入出力レジスタ３１ｂの合計１０個を一時的なデータ保持に割り当てることで実現できる。つまり、入力データと出力データのビット幅の合計が１９２ビットまでで、一時的なデータ保持のビット幅を加えた合計のビット幅が２５６ビットまでのアプリケーションであれば自由にレジスタの使用方法を設定して実現できることになる。
【００６７】
（第３の実施形態）
本発明に係るＳＩＭＤ型プロセッサ１の第３の実施形態を、図９を参照して以下説明する。上述した第２実施形態においては、プロセッサエレメント３ａをアドレス指定しているが、本実施形態はプロセッサエレメント３ａの指定をアドレス指定する方式ではなく、ポインタ指定する方式、即ちシリアルアクセスメモリ方式に応用するものである。なお、ここでは上述した第２実施形態と異なる点について説明することとし、同じ点については説明を省略する。また、上述した第２実施形態と同じ構成部分については、同一の符号を付する。
【００６８】
まず、グローバルプロセッサ２からメモリコントローラ５へはＩ／Ｏ用のアドレス、データ、コントロール信号がバスを介して与えられる。グローバルプロセッサ２がメモリコントローラ５のいくつかの動作設定レジスタ（図示せず）へ動作方法等のコマンドを設定している。最後にグローバルプロセッサ２は、メモリコントローラ５のスタートレジスタ（図示せず）にスタートコードを書き込むことで、メモリコントローラ５は自動的に設定に従った動作を行う。メモリコントローラ５は、グローバルプロセッサ２のコマンドに基づき、このリセット信号を生成し、外部インタフェース４からリセット信号４７を介してプロセッサエレメントブロック３ヘ送る。これにより、レジスタコントローラ３１ａは、リセットされる。そして、外部インタフェース４に最も近いレジスタコントローラ３１ａへメモリコントローラ５から外部インタフェース４、クロック信号４１ｃを介してクロック信号が送られる。このクロック信号に同期して、レジスタコントローラ３１ａは、リード／ライト信号４５ａ或いは４５ｂを介してメモリコントローラ５から送られてきたリード／ライト指示信号を得る。このリード／ライト指示信号は、偶数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂ、及び奇数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂにそれぞれ与えられる。このとき一組を構成するプロセッサエレメント３ａのレジスタコントローラ３１ａへ送られるリード／ライト指示信号は、上記第２実施形態の場合と同様それぞれ異なるものであってもよい。
【００６９】
これにより、上述した第２実施形態の場合と同様、一度のポインタ指定により、偶数番号が割り付けられたプロセッサエレメント３ａにデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント３ａにもデータ転送できる。このため、データの転送回数を少なくすることができ、データ転送を高速にできる。よって、データ処理を高速にできる。
【００７０】
（第４実施形態）
本発明に係るＳＩＭＤ型プロセッサ１の第４の実施形態を、図１１及び図１２を参照して以下説明する。なお、ここでは上述した第１実施形態と異なる点について説明することとし、同じ点については説明を省略する。また、上述した第１実施形態と同じ構成部分については同一の符号を付する。
【００７１】
本実施形態においては、図１０に示すように、ラインバッファ６１をプロセッサエレメント３ａの外部に別途設けることを特徴とする。この図１０では、ラインバッファ６１を２つ示しているが、ラインバッファ６１の数は適宜変更してもよい。このラインバッファ６１には、演算処理が終了しているが、注目画素の上下の画素を参照するために必要なデータを保持したり、或いは１ラインの画素数が多い場合にプロセッサエレメント３ａ…を越える処理画素数を保持することなどに使用される。図１０では、入出力レジスタファイル３１にラインバッファ６１を接続しており、入出力レジスタファイル３１に保持されている一部のデータが、このラインバッファ６１に送られ保持される。また、ラインバッファ６１に保持されているデータは、必要に応じて入出力レジスタファイル３１に送られ、演算処理のデータとして使用される。なお、ここで、入出力レジスタファイル３１の各ブロックは、図２において横に一列に並んでいる２５６個のレジスタコントローラ３１ａ及びレジスタ３１ｂを意味する。
【００７２】
上記した実施形態のように、２５６個のプロセッサエレメント３ａ…を備えたプロセッサでは、２５６画素までは内部のレジスタファイル３１にデータを置くことが可能である。それを超える画素数の場合、複数の本数のレジスタに同一ラインを分割して保持することになる。上記のようにラインバッファ６１を外部に持つことで、２５６画素ずつラインバッファ６１からデータを取り込むことが可能となり、２５６画素以上のラインでも繰り返し同じ処理を行うことで、画素数をいくらでも増加させることができる。但し、画像数の上限はラインバッファ６１の容量で決まる。このように、外部にラインバッファ６１を備えることにより、１ラインの画素数が多くなっても容易にその処理を行うことができる。
【００７３】
また、入出力レジスタファイル３１で保持しているデータを、ラインバッファ６１で保持させることで、空いた入出力レジスタファイル３１を他の演算処理のために使用でき、演算処理を効率的に行うことができる。即ち、プロセッサエレメント３ａのレジスタ３１ｂの容量を越えるデータの処理が可能になる。
【００７４】
なお、レジスタファイルの種類に関係なく、ラインバッファ６１をプロセッサエレメント３ａの外部に別途設けることができる。即ち、図１１に示すように、演算処理されるデータを取得して保持するだけの機能を持つ入力レジスタファイル、演算処理されたデータをデータバス４１ｄに出力するだけの機能を持つ出力レジスタファイルに接続して設けてもよい。この場合、出力レジスタファイルに保持されている一部のデータが、ラインバッファ６１に送られ保持される。また、ラインバッファ６１に保持されているデータは、必要に応じて入力レジスタファイルに送られ、演算処理のデータとして使用される。
【図面の簡単な説明】
【００７５】
【図１】この発明の実施形態におけるＳＩＭＤ型プロセッサを示すブロック図である。
【図２】この発明に用いられるメモリコントローラ５の構成を示すブロック図である。
【図３】この発明の第１実施形態におけるＳＩＭＤ型プロセッサの内部構成を示す図である。
【図４】第１実施形態におけるプロセッサエレメントの内部構成を示す図である。
【図５】転送先のメモリとメモリ転送ブロックが同一チップ上に搭載された実施の形態を示すブロック図である。
【図６】第１実施形態におけるプロセッサエレメントの内部構成を示す図である。
【図７】第２実施形態におけるプロセッサエレメントの内部構成を示す図である。
【図８】第２実施形態におけるプロセッサエレメントの内部構成を示す図である。
【図９】第３実施形態におけるプロセッサエレメントの内部構成を示す図である。
【図１０】第４実施形態におけるラインバッファの接続を説明するブロック図である。
【図１１】第４実施形態におけるラインバッファの接続を説明するブロック図である。
【符号の説明】
【００７６】
１    ＳＩＭＤ型プロセッサ
２    グローバルプロセッサ
４    外部インタフェース
５    メモリコントローラ
２６ａ  リード信号
２６ｂ  ライト信号
３１ａ  レジスタコントローラ
３１ｂ  レジスタ
３４  ＡＬＵ
４１ａ  アドレスバス
４１ｂ  リード／ライト信号
４１ｄ  クロック信号
４５ａ  偶数用リード／ライト信号
４５ｂ  奇数用リード／ライト信号
４６ａ  偶数用データバス
４６ｂ  奇数用データバス
４７  リセット信号
【図１】
0004413905.tif 000002
【図２】
0004413905.tif 000003
【図３】
0004413905.tif 000004
【図４】
0004413905.tif 000005
【図５】
0004413905.tif 000006
【図６】
0004413905.tif 000007
【図７】
0004413905.tif 000008
【図８】
0004413905.tif 000009
【図９】
0004413905.tif 000010
【図１０】
0004413905.tif 000011
【図１１】
0004413905.tif 000012