説明

信号処理装置

【課題】専用ハードウェアや高性能なSIMD型処理装置を用いることなく、処理の高速化を実現することができる信号処理装置を得ることを目的とする。
【解決手段】処理命令を発行する全体制御部1に対して、部分制御部2〜2、データ転送部3〜3及びデータパス部4〜4が並列に接続されており、全体制御部1が相互に異なる処理命令を部分制御部2〜2に発行し、あるいは、同一の処理命令を少なくとも1個以上の部分制御部2に発行することで、処理の並列化を実現する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、例えば、画像処理などの信号処理を行う信号処理装置に関するものである。
【背景技術】
【0002】
近年、画像処理などの信号処理を行う信号処理装置では、並列処理を行うプロセッサと専用ハードウェアとから構成されている。
例えば、以下の特許文献1に開示されている信号処理装置では、SIMD(Single Instruction Multiple Data)型処理装置と専用ハードウェアが組み合わされており、SIMD型処理装置では、動き予測やDCT/IDCT処理を実行し、専用ハードウェアでは、VLC処理を実行することで、SIMD型処理装置と専用ハードウェアの並列処理を実現している。
【0003】
このように、特許文献1に開示されている信号処理装置では、高い処理性能を必要とするVLC処理を専用ハードウェアで処理することで、高い処理能力を達成している。
また、SIMD型処理装置を備えることで、多様な処理に対応できるようにしている。
SIMD型処理装置と専用ハードウェアの並列処理を実現することで、処理速度の高速化が図られる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2001−309386号公報(段落番号[0012]から[0015]、図1)
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来の信号処理装置は以上のように構成されているので、SIMD型処理装置と専用ハードウェアの並列処理によって処理速度の高速化が図られているが、専用ハードウェアを使用しているため、処理内容を柔軟に変更することができない課題があった。
また、単一のSIMD型処理装置が複数の処理を並列に実行するものであるため、処理の高速化は、SIMD型処理装置の性能に左右され、高性能なSIMD型処理装置を実装しなければ、処理の高速化を実現することができない課題があった。
さらに、SIMD型処理装置と専用ハードウェアという異なるデータ処理装置が組み合わされたものであるため、製造バラつきの影響で性能に差異が生じ易く、性能に差異が生じると、装置全体の性能が劣化してしまう課題があった。
【0006】
この発明は上記のような課題を解決するためになされたもので、専用ハードウェアや高性能なSIMD型処理装置を用いることなく、処理の高速化を実現することができる信号処理装置を得ることを目的とする。
【課題を解決するための手段】
【0007】
この発明に係る信号処理装置は、処理命令を発行する全体制御部に対して、部分制御部、データ転送部及びデータパス部が複数個並列に接続されており、全体制御部が相互に異なる処理命令を各部分制御部に発行し、あるいは、同一の処理命令を少なくとも1個以上の部分制御部に発行することで、処理の並列化を実現するようにしたものである。
【発明の効果】
【0008】
この発明によれば、処理命令を発行する全体制御部に対して、部分制御部、データ転送部及びデータパス部が複数個並列に接続されており、全体制御部が相互に異なる処理命令を各部分制御部に発行し、あるいは、同一の処理命令を少なくとも1個以上の部分制御部に発行することで、処理の並列化を実現するように構成したので、専用ハードウェアや高性能なSIMD型処理装置を用いることなく、処理の高速化を実現することができる効果がある。
【図面の簡単な説明】
【0009】
【図1】この発明の実施の形態1による信号処理装置を示す構成図である。
【図2】この発明の実施の形態1による信号処理装置の全体制御部1及び部分制御部2の内部を示す構成図である。
【図3】全体制御部1における連結判定部11の内部を示す構成図である。
【図4】部分制御部2と部分制御部2を連結して、単一の処理命令を部分制御部2と部分制御部2に分担させる際の各種命令の流れを示す説明図である。
【図5】部分制御部2,2のメイン命令メモリ21bに格納されているメインプログラム内の命令及びメインプログラムカウンタ21cのカウント値S2(PC値)を示す説明図である。
【図6】この発明の実施の形態1による信号処理装置の全体制御部1の処理内容を示すフローチャートである。
【図7】この発明の実施の形態2による信号処理装置の全体制御部1及び部分制御部2の一部を示す構成図である。
【図8】この発明の実施の形態3による信号処理装置の全体制御部1の内部を示す構成図である。
【発明を実施するための形態】
【0010】
実施の形態1.
図1はこの発明の実施の形態1による信号処理装置を示す構成図である。
図1において、全体制御部1は相互に異なる処理命令を部分制御部2〜2に発行し、あるいは、同一の処理命令を少なくとも1個以上の部分制御部(例えば、部分制御部2n−1と部分制御部2:n=1,2,・・・,N)に発行する処理を実施する。
全体制御部1は、画像符号化処理や画像復号処理の制御を実施するような場合、例えば、画像符号化処理における動きベクトルの算出処理のような単位処理の実行命令(処理命令)を部分制御部2〜2に発行する処理を実施する。
【0011】
部分制御部2〜2は全体制御部1に接続されており、全体制御部1により発行された処理命令にしたがって並列に処理を実行する処理部である。
即ち、部分制御部2〜2は全体制御部1により発行された処理命令が単一演算を指示する命令であれば、その命令にしたがってデータパス演算の処理順序判定に必要な比較演算や、後述する演算命令やデータ転送命令などを発行するために必要なパラメータを算出するための単一演算(例えば、加算、減算、乗算、除算など)を実行し、その処理命令がデータパス演算を指示する命令であれば、その命令にしたがってデータパス演算の演算命令をデータパス部4〜4に発行し、その処理命令がデータの転送を指示する命令であれば、その命令にしたがってデータ転送命令をデータ転送部3〜3に発行する処理を実施する。
【0012】
データ転送部3〜3は部分制御部2〜2により発行されたデータ転送命令にしたがってデータパス演算に必要なデータ及び部分制御部2〜2により実行された単一演算の演算結果を転送する処理を実行する。
即ち、データ転送部3〜3は部分制御部2〜2により発行されたデータ転送命令が、例えば、部分制御部2〜2の演算メモリ24(図2を参照)に格納されているデータ(例えば、単一演算の演算結果)の転送を指示する命令であれば、そのデータをデータパス部4〜4に転送し、そのデータ転送命令が、データメモリ5〜5に格納されているデータ(例えば、データパス演算に必要なデータ)の転送を指示する命令であれば、そのデータをデータパス部4〜4に転送する処理を実施する。また、そのデータ転送命令が、例えば、データパス部4〜4によるデータパス演算の演算結果の転送を指示する命令であれば、その演算結果を部分制御部2〜2の演算メモリ24やデータメモリ5〜5に転送する処理を実施する。
【0013】
データパス部4〜4は例えばSIMD型処理装置で構成されており、データ転送部3〜3により転送されたデータ及び単一演算の演算結果を用いて、部分制御部2〜2により発行された演算命令にしたがってデータパス演算を実行する。
ただし、データパス部4〜4は、部分制御部2〜2により発行された演算命令にしたがって1つのデータパス演算を実行するだけであり、1個のデータパス部4において、複数のデータパス演算を並列処理するものではないため、高性能なSIMD型処理装置を用いる必要はない。
データメモリ5〜5はデータパス部4〜4がデータパス演算を実行する際に必要なデータや、データパス部4〜4によるデータパス演算の演算結果などを格納する記録媒体である。
バス6はデータ転送部3〜3がデータを転送する際に使用する伝送路であり、データ転送部3〜3、データパス部4〜4及びデータメモリ5〜5間を接続している。
【0014】
図2はこの発明の実施の形態1による信号処理装置の全体制御部1及び部分制御部2の内部を示す構成図である。
図2では、部分制御部2,2を記載して、部分制御部2〜2の記載を省略しているが、部分制御部2〜2の内部は、部分制御部2,2の内部と同様である。
図2において、全体制御部1の連結判定部11は、例えば、画像符号化処理における動きベクトルの算出処理のような単位処理の実行命令を発行する際、少なくとも1個以上の部分制御部2に対して、同一の処理命令を発行する場合、N個の部分制御部2〜2の処理状況を把握し、その処理状況に基づいて、どの部分制御部2を連結させるかを判定する処理を実施する。
なお、連結させる部分制御部2の個数は、最低1個から最大で接続数(N個)までである。
【0015】
全体制御部1の処理制御部12は連結判定部11により連結させる部分制御部2が判定されると、その連結させる部分制御部2に対して、同一の処理命令を発行する処理を実施する。
ここでは、少なくとも1個以上の部分制御部2に対して、同一の処理命令を発行する場合について示したが、部分制御部2〜2に対して、相互に異なる単位処理を実行させる場合には、処理制御部12は、相互に異なる処理命令を部分制御部2〜2に発行する。
【0016】
部分制御部2〜2のメイン制御部21は制御部21a、メイン命令メモリ21b及びメインプログラムカウンタ21cから構成されており、制御部21aは全体制御部1により発行された処理命令が単一演算を指示する命令であれば、メイン命令メモリ21bにより格納されているメインプログラムを実行することで、単一演算を実行する。
また、全体制御部1により発行された処理命令がデータパス演算を指示する命令であれば、その命令にしたがってデータパス演算の演算命令の発行をデータパス制御部23に指示し、その処理命令がデータの転送を指示する命令であれば、その命令にしたがってデータ転送命令の発行をデータ転送制御部22に指示する処理を実施する。
【0017】
メイン命令メモリ21bはメイン制御部21の制御部21aが実行するメインプログラムを格納している記録媒体である。
ここでは、メイン命令メモリ21bがメインプログラムを格納している例を示しているが、これに限るものでなく、例えば、全体制御部1からメインプログラムが与えられるようにしてもよい。
メインプログラムカウンタ21cは制御部21aにより現在実行されているメインプログラムの位置を特定するためのプログラムカウンタである。
【0018】
部分制御部2〜2のデータ転送制御部22はメイン制御部21の指示の下、データの転送先/転送元、転送データサイズ及びデータの転送順序を示すデータ転送命令をデータ転送部3〜3に発行する処理を実施する。
部分制御部2〜2のデータパス制御部23はメイン制御部21の指示の下、デーパス演算の演算内容及び演算実行順序などを示す演算命令をデータパス部4〜4に発行する処理を実施する。
部分制御部2〜2の演算メモリ24はメイン制御部21による単一演算の演算結果や、データパス部4〜4によるデータパス演算の演算結果などを格納し、また、必要に応じてデータパス部4〜4がデータパス演算を実施する際に必要なデータなどを格納する記録媒体である。
【0019】
図3は全体制御部1における連結判定部11の内部を示す構成図である。
図3において、状態判定部11aはN個の部分制御部2〜2の処理状況を判定(例えば、処理の実行中であるか、待機中であるかなどを判定)する処理を実施する。
即ち、状態判定部11aは部分制御部2〜2のメインプログラムカウンタ21cのカウント値S2を監視することで、部分制御部2〜2の処理状況を判定する処理を実施する。
連結制御部11bは状態判定部11aの判定結果を参照して、どの部分制御部2を連結させるかを判定する処理を実施する。
【0020】
次に動作について説明する。
この実施の形態1では、部分制御部2〜2が全体制御部1により発行される処理命令にしたがって並列処理を実行しているとき、更なる処理の効率化を図るために、部分制御部2と部分制御部2を連結して、元々部分制御部2に発行していた単一の処理命令の一部を部分制御部2に分担させる例を説明する。
図4は部分制御部2と部分制御部2を連結して、単一の処理命令を部分制御部2と部分制御部2に分担させる際の各種命令の流れを示す説明図である。
図5は部分制御部2,2のメイン命令メモリ21bに格納されているメインプログラム内の命令及びメインプログラムカウンタ21cのカウント値S2(PC値)を示す説明図である。
図6はこの発明の実施の形態1による信号処理装置の全体制御部1の処理内容を示すフローチャートである。
【0021】
まず、全体制御部1の処理制御部12は、部分制御部2〜2を並列に処理を実行させるため、相互に異なる処理命令を部分制御部2〜2に発行する。あるいは、同一の処理命令を少なくとも1個以上の部分制御部(例えば、部分制御部2n−1と部分制御部2:n=1,2,・・・,N)に発行する。
部分制御部2〜2のメイン制御部21は、全体制御部1から処理命令を受けると、その処理命令を内部の制御部21aに与える。
部分制御部2〜2の制御部21aは、全体制御部1から出力された処理命令を解析し、その処理命令が単一演算を指示する命令であれば、メイン命令メモリ21bにより格納されているメインプログラムを実行することで、単一演算(例えば、加算、減算、乗算、除算など)を実行する。即ち、データパス演算の処理順序判定に必要な比較演算や、データパス演算の演算命令やデータ転送命令などを発行するために必要なパラメータを算出するための単一演算を実行する。
また、部分制御部2〜2の制御部21aは、その処理命令がデータパス演算を指示する命令であれば、その命令にしたがってデータパス演算の演算命令の発行をデータパス制御部23に指示し、その処理命令がデータの転送を指示する命令であれば、その命令にしたがってデータ転送命令の発行をデータ転送制御部22に指示する。
【0022】
部分制御部2〜2のデータ転送制御部22は、メイン制御部21の制御部21aからデータ転送命令の発行指示を受けると、その発行指示にしたがって、データの転送先/転送元、転送データサイズ及びデータの転送順序を示すデータ転送命令をデータ転送部3〜3に発行する。
部分制御部2〜2のデータパス制御部23は、メイン制御部21の制御部21aから演算命令の発行指示を受けると、その発行指示にしたがって、デーパス演算の演算内容及び演算実行順序などを示す演算命令をデータパス部4〜4に発行する。
【0023】
データ転送部3〜3は、部分制御部2〜2により発行されたデータ転送命令を受けると、そのデータ転送命令にしたがってデータパス演算に必要なデータ及び部分制御部2〜2により実行された単一演算の演算結果を転送する。
例えば、部分制御部2〜2により発行されたデータ転送命令が、部分制御部2〜2の演算メモリ24に格納されているデータ(例えば、単一演算の演算結果)と、データメモリ5〜5に格納されているデータ(例えば、データパス演算に必要なデータ)との転送を指示する命令であれば、部分制御部2〜2の演算メモリ24に格納されているデータをデータパス部4〜4に転送するとともに、データメモリ5〜5に格納されているデータをデータパス部4〜4に転送する。
【0024】
データパス部4〜4は、部分制御部2〜2により発行された演算命令を受けると、データ転送部3〜3により転送されたデータ及び単一演算の演算結果を用いて、その演算命令にしたがってデータパス演算を実行する。
データ転送部3〜3は、データパス部4〜4がデータパス演算を実行した後、部分制御部2〜2から、データパス演算の演算結果を部分制御部2〜2の演算メモリ24又はデータメモリ5〜5に対して、転送を指示する転送命令を受けると、そのデータ転送命令にしたがって、データパス部4〜4によるデータパス演算の演算結果を部分制御部2〜2の演算メモリ24又はデータメモリ5〜5に転送する。
【0025】
このように、全体制御部1の制御の下で、部分制御部2〜2が並列に処理を実行することで、処理の効率化が図られるが、全体制御部1から相互に異なる処理命令が部分制御部2〜2に発行される場合、ある部分制御部2の処理が既に完了しても、ある部分制御部2の処理が未だ完了していない状況が発生することがある。
このような場合に、未だ処理が完了していない部分制御部2の処理の一部を、既に処理が完了して、待機状態になっている部分制御部2に分担させれば、更なる処理の効率化を図ることができる。
以下、未だ処理が完了していない部分制御部2の処理の一部を、既に処理が完了して、待機状態になっている部分制御部2に分担させる際の具体的な処理内容を説明する。
【0026】
全体制御部1の連結判定部11における状態判定部11aは、N個の部分制御部2〜2の処理状況を判定(例えば、処理の実行中であるか、待機中であるかなどを判定)する。
即ち、状態判定部11aは、部分制御部2〜2のメインプログラムカウンタ21cのカウント値S2を取得して(図6のステップST1)、そのカウント値S2を監視することで、部分制御部2〜2の処理状況を判定する(ステップST2)。
例えば、図5(a)に示すように、部分制御部2のメインプログラムカウンタ21cのカウント値S2が“6”であれば、メイン命令メモリ21bに格納されているメインプログラムにおいて、現在実行中の命令が命令Fであると認識して、部分制御部2の処理状況は“現在実行中”であると判定する。
また、図5(b)に示すように、部分制御部2のメインプログラムカウンタ21cのカウント値S2が“100”であれば、メイン命令メモリ21bに格納されているメインプログラム内の命令の実行が終了してNOP(待機状態)であると認識して、部分制御部2の処理状況は“待機状態”であると判定する。
【0027】
連結判定部11の連結制御部11bは、例えば、状態判定部11aの判定結果が、部分制御部2が“現在実行中”であり、部分制御部2が“待機状態”である旨を示す場合、部分制御部2の単一処理の一部を部分制御部2に分担させるか否かを判定する。
即ち、連結制御部11bは、部分制御部2のメインプログラムカウンタ21cのカウント値S2を参照して、部分制御部2のメイン命令メモリ21bに格納されているメインプログラム内の命令の中で、未だ実行されていない命令(図5(a)の例では、命令G〜命令V)の数(以下、「残り実行命令数」と称する)を把握し、その残り実行命令数と予め設定されている判定閾値(=“10”)を比較する(ステップST3)。
ここでは、説明の便宜上、判定閾値を“10”に設定しているが、これに限るものではなく、設計者が任意に設定することができる。また、必ずしも命令数を閾値とする必要はなく、命令処理サイクル数を閾値にしてもよい。
【0028】
連結制御部11bは、残り実行命令数が判定閾値未満であれば、部分制御部2の単一処理の一部を部分制御部2に分担させなくても、早期に処理が完了するので、部分制御部2の単一処理の一部を部分制御部2に分担させず、部分制御部2の単一処理を継続させる(ステップST4)。即ち、部分制御部2に対して、命令G〜命令Vの実行を継続させる。
連結制御部11bは、残り実行命令数が判定閾値以上であれば、部分制御部2の単一処理の一部を部分制御部2に分担させるため、例えば、残り実行命令数の半数の命令(図5(a)では、命令O〜命令V)を部分制御部2に分担させる指示(連結信号S1)を処理制御部12に出力する(ステップST5)。
ここでは、残り実行命令数の半数の命令を部分制御部2に分担させるものについて示したが、これに限るものではなく、設計者が任意に設定することができる。また、分担単位も命令数ではなく、処理サイクル数としてもよい。
【0029】
全体制御部1の処理制御部12は、連結判定部11の連結制御部11bから、例えば、命令O〜命令Vを部分制御部2に分担させる指示を受けると、命令O〜命令Vの分担命令を部分制御部2に発行するとともに、部分制御部2に分担される命令O〜命令Vを除く、残りの実行命令(命令G〜命令N)の継続を指示する残り実行命令を部分制御部2に発行する。
なお、全体制御部1の処理制御部12は、命令O〜命令Vの分担命令を部分制御部2に発行する際、命令O〜命令Vに対応するメインプログラムのPC値“15”〜“22”を部分制御部2に通知する。
【0030】
部分制御部2のメイン制御部21における制御部21aは、全体制御部1から残りの実行命令(命令G〜命令N)の継続を指示する残り実行命令を受けると、命令Gから実行を開始して、命令Nの実行が終了するまで、命令の実行を継続する。
部分制御部2のメイン制御部21における制御部21aは、全体制御部1から命令O〜命令Vの分担命令を受けると、メイン命令格納メモリ21bに格納されているメインプログラム内の命令の中から、全体制御部1から通知されたメインプログラムのPC値“15”〜“22”をキーにして、分担された命令O〜命令Vを読み込み、その命令O〜命令Vを順次実行する。
【0031】
以上で明らかなように、この実施の形態1によれば、処理命令を発行する全体制御部1に対して、部分制御部2〜2、データ転送部3〜3及びデータパス部4〜4が並列に接続されており、全体制御部1が相互に異なる処理命令を部分制御部2〜2に発行し、あるいは、同一の処理命令を少なくとも1個以上の部分制御部2に発行することで、処理の並列化を実現するように構成したので、専用ハードウェアや高性能なSIMD型処理装置を用いることなく、処理の高速化を実現することができる効果を奏する。
【0032】
また、この実施の形態1によれば、全体制御部1が、相互に異なる処理命令、あるいは、同一の処理命令を発行した後、複数個の部分制御部2を連結して、単一の処理命令を複数個の部分制御部2に分担させるように構成したので、更なる処理の効率化を図ることができる効果を奏する。
即ち、ある部分制御部2の処理内容が多くて、他の部分制御部2より多くの処理時間を要する状況が発生しても、未処理の部分を複数の部分制御部2に分散することができるため、既に処理が終了している部分制御部2や、その部分制御部2に接続されているデータ転送部3及びデータパス部4を有効に活用することができるようになり、処理の高速化を図ることができる。
なお、この実施の形態1では、部分制御部2と部分制御部2を連結するものについて示したが、これは一例に過ぎず、3個以上の部分制御部2を連結するようにしてもよい。
【0033】
実施の形態2.
図7はこの発明の実施の形態2による信号処理装置の全体制御部1及び部分制御部2の一部を示す構成図であり、図において、図2と同一符号は同一又は相当部分を示すので説明を省略する。
全体制御部1の処理制御部13は、図2の処理制御部12と同様の処理を実施するほか、例えば、部分制御部2と部分制御部2が単独で処理を実施している段階(連結されていない段階)では、メイン制御部21と演算メモリ24間の接続を指示するセレクタ制御信号S3,S4を部分制御部2,2に出力し、部分制御部2と部分制御部2が連結して処理を実施する段階になると、メイン制御部21と演算メモリ24間の直接的な接続の解除を指示するセレクタ制御信号S3,S4を部分制御部2,2に出力する処理を実施する。
【0034】
部分制御部2,2のセレクタ25は全体制御部1の処理制御部13から出力されたセレクタ制御信号S3,S4がメイン制御部21と演算メモリ24間の接続を指示していれば、メイン制御部21と演算メモリ24間を接続し、そのセレクタ制御信号S3,S4がメイン制御部21と演算メモリ24間の直接的な接続の解除を指示していれば、メイン制御部21と演算メモリ24間の直接的な接続を解除し、アクセス調停部26を介して、メイン制御部21と演算メモリ24間を接続する処理を実施する。
【0035】
部分制御部2のアクセス調停部26は部分制御部2のアクセス調停部2とアクセスバス27で連結されている。
部分制御部2のアクセス調停部26は部分制御部2と部分制御部2が連結して処理を実施する段階になると、部分制御部2のメイン制御部21から、部分制御部2の演算メモリ24に対するアクセスと、部分制御部2のメイン制御部21から、部分制御部2の演算メモリ24に対するアクセスとの競合を調停する処理を実施する。
部分制御部2のアクセス調停部26は部分制御部2と部分制御部2が連結して処理を実施する段階になると、部分制御部2のメイン制御部21から、部分制御部2の演算メモリ24に対するアクセスと、部分制御部2のメイン制御部21から、部分制御部2の演算メモリ24に対するアクセスとの競合を調停する処理を実施する。
【0036】
次に動作について説明する。
上記実施の形態1では、全体制御部1が、相互に異なる処理命令、あるいは、同一の処理命令を発行した後、複数個の部分制御部2を連結して、単一の処理命令を複数個の部分制御部2に分担させるものについて示したが、単一の処理命令を複数個の部分制御部2に分担させる際、複数個の部分制御部2の演算メモリ24を連結することで、各部分制御部2に対して、他の部分制御部2の演算メモリ24に対するアクセスを許可するようにしてもよい。
具体的には、以下の通りである。
【0037】
全体制御部1の処理制御部13は、例えば、部分制御部2と部分制御部2が単独で処理を実施している段階(連結されていない段階)では、メイン制御部21と演算メモリ24間の接続を指示するセレクタ制御信号S3,S4を部分制御部2,2に出力する。
部分制御部2,2のセレクタ25は、全体制御部1の処理制御部13から、メイン制御部21と演算メモリ24間の接続を指示するセレクタ制御信号S3,S4を受けると、メイン制御部21と演算メモリ24間を接続する。
この場合、部分制御部2のメイン制御部21は、上記実施の形態1と同様に、部分制御部2の演算メモリ24に対するアクセスは可能になるが、他の部分制御部2の演算メモリ24に対するアクセスは許可されない。
同様に、部分制御部2のメイン制御部21は、部分制御部2の演算メモリ24に対するアクセスは可能になるが、他の部分制御部2の演算メモリ24に対するアクセスは許可されない。
【0038】
全体制御部1の処理制御部13は、例えば、部分制御部2と部分制御部2が連結して処理を実施する段階になると、メイン制御部21と演算メモリ24間の直接的な接続の解除を指示するセレクタ制御信号S3,S4を部分制御部2,2に出力する。
部分制御部2,2のセレクタ25は、全体制御部1の処理制御部13から、メイン制御部21と演算メモリ24間の直接的な接続の解除を指示するセレクタ制御信号S3,S4を受けると、メイン制御部21と演算メモリ24間の直接的な接続を解除し、アクセス調停部26を介して、メイン制御部21と演算メモリ24間を接続する。
この場合、部分制御部2のメイン制御部21は、部分制御部2の演算メモリ24に対するアクセスだけでなく、他の部分制御部2の演算メモリ24に対するアクセスも許可される。
同様に、部分制御部2のメイン制御部21は、部分制御部2の演算メモリ24に対するアクセスだけでなく、他の部分制御部2の演算メモリ24に対するアクセスも許可される。
【0039】
部分制御部2のメイン制御部21は、部分制御部2の演算メモリ24に対するアクセスを希望する場合、部分制御部2の演算メモリ24の選択を示すアクセス選択信号S5(部分制御部2の演算メモリ24内のアドレスを含む)をアクセス調停部26に出力する。
部分制御部2のアクセス調停部26は、部分制御部2のメイン制御部21から部分制御部2の演算メモリ24の選択を示すアクセス選択信号S5を受けると、そのメイン制御部21と演算メモリ24間を接続することで、部分制御部2の演算メモリ24に対するアクセスを許可する。
【0040】
部分制御部2のメイン制御部21は、他の部分制御部2の演算メモリ24に対するアクセスを希望する場合、他の部分制御部2の演算メモリ24の選択を示すアクセス選択信号S5(部分制御部2の演算メモリ24内のアドレスを含む)をアクセス調停部26に出力する。
部分制御部2のアクセス調停部26は、部分制御部2のメイン制御部21から、他の部分制御部2の演算メモリ24の選択を示すアクセス選択信号S5を受けると、他の部分制御部2のアクセス調停部26を介して、部分制御部2のメイン制御部21と部分制御部2の演算メモリ24間を接続することで、他の部分制御部2の演算メモリ24に対するアクセスを許可する。
【0041】
部分制御部2のメイン制御部21は、部分制御部2の演算メモリ24に対するアクセスを希望する場合、部分制御部2の演算メモリ24の選択を示すアクセス選択信号S6(部分制御部2の演算メモリ24内のアドレスを含む)をアクセス調停部26に出力する。
部分制御部2のアクセス調停部26は、部分制御部2のメイン制御部21から部分制御部2の演算メモリ24の選択を示すアクセス選択信号S6を受けると、そのメイン制御部21と演算メモリ24間を接続することで、部分制御部2の演算メモリ24に対するアクセスを許可する。
【0042】
部分制御部2のメイン制御部21は、他の部分制御部2の演算メモリ24に対するアクセスを希望する場合、他の部分制御部2の演算メモリ24の選択を示すアクセス選択信号S6(部分制御部2の演算メモリ24内のアドレスを含む)をアクセス調停部26に出力する。
部分制御部2のアクセス調停部26は、部分制御部2のメイン制御部21から、他の部分制御部2の演算メモリ24の選択を示すアクセス選択信号S6を受けると、他の部分制御部2のアクセス調停部26を介して、部分制御部2のメイン制御部21と部分制御部2の演算メモリ24間を接続することで、他の部分制御部2の演算メモリ24に対するアクセスを許可する。
【0043】
これにより、部分制御部2,2のメイン制御部21は、他の部分制御部2,2の演算メモリ24に対するアクセスが可能になるが、この場合、部分制御部2の演算メモリ24に対するアクセスとして、部分制御部2のメイン制御部21からのアクセスと、部分制御部2のメイン制御部21からのアクセスとが競合することがある。
同様に、部分制御部2の演算メモリ24に対するアクセスとして、部分制御部2のメイン制御部21からのアクセスと、部分制御部2のメイン制御部21からのアクセスとが競合することがある。
【0044】
これらの競合は、部分制御部2,2のアクセス調停部26が調停する。
即ち、部分制御部2のアクセス調停部26は、予め、部分制御部2のメイン制御部21からのアクセスと、他の部分制御部2のメイン制御部21からのアクセスとの間に優先順位が設定されており、例えば、部分制御部2のメイン制御部21からのアクセスの方が、優先順位が高く設定されていれば、部分制御部2のメイン制御部21からのアクセスと、他の部分制御部2のメイン制御部21からのアクセスとが同時に発生すると、部分制御部2のメイン制御部21からのアクセスを優先し、部分制御部2のメイン制御部21に対して、部分制御部2の演算メモリ24に対するアクセスを許可する。
その後、部分制御部2のメイン制御部21からのアクセスが終了すると、他の部分制御部2のメイン制御部21に対して、部分制御部2の演算メモリ24に対するアクセスを許可する。
【0045】
逆に、他の部分制御部2のメイン制御部21からのアクセスの方が、優先順位が高く設定されていれば、部分制御部2のメイン制御部21からのアクセスと、他の部分制御部2のメイン制御部21からのアクセスとが同時に発生すると、他の部分制御部2のメイン制御部21からのアクセスを優先し、他の部分制御部2のメイン制御部21に対して、部分制御部2の演算メモリ24に対するアクセスを許可する。
その後、他の部分制御部2のメイン制御部21からのアクセスが終了すると、部分制御部2のメイン制御部21に対して、部分制御部2の演算メモリ24に対するアクセスを許可する。
部分制御部2のアクセス調停部26における調停処理は、部分制御部2のアクセス調停部26における調停処理と同様であるため説明を省略する。
【0046】
なお、部分制御部2の演算メモリ24に対するアクセスとして、他の部分制御部2のメイン制御部21からのアクセスが発生すると同時に、部分制御部2の演算メモリ24に対するアクセスとして、他の部分制御部2のメイン制御部21からのアクセスが発生しても、アクセスバス27が2本のバスで構成されているので、これらのアクセスを同時に許可することが可能である。
【0047】
以上で明らかなように、この実施の形態2によれば、単一の処理命令を複数個の部分制御部2に分担させる際、複数個の部分制御部2の演算メモリ24を連結することで、各部分制御部2に対して、他の部分制御部2の演算メモリ24に対するアクセスを許可するように構成したので、複数個の部分制御部2の演算メモリ24を1つの演算メモリとして使用することが可能となる。そのため、他の部分制御部2の演算メモリ24に格納されているデータ(例えば、処理命令の実行に必要なデータや単一演算の演算結果など)を、自部分制御部2内の演算メモリ24にコピーするなどの処理が不要になり(データ転送処理時間のオーバヘッドがなくなる)、処理の高速化を図ることができる効果を奏する。
【0048】
この実施の形態2では、全体制御部1によって複数個の部分制御部2が連結されて処理が実行されるため、全体制御部1から分担命令が出力された部分制御部2に接続されているデータ転送部3及びデータパス部4の動作を止めることも可能である。データ転送部3及びデータパス部4の動作を止められる場合には、言うまでもないが、消費電力を削減することができる。
【0049】
実施の形態3.
図8はこの発明の実施の形態3による信号処理装置の全体制御部1の内部を示す構成図であり、図において、図2と同一符号は同一又は相当部分を示すので説明を省略する。
全体制御部1の連結判定部14は、図2の連結判定部11と同様に、どの部分制御部2を連結させるかを判定する処理を実施する。
処理時間メモリ14aは部分制御部2〜2のメイン命令メモリ21bに格納されているメインプログラムを構成している全ての単位命令(例えば、命令F、命令G、・・・、命令V)を実行したときの単位命令当りの処理時間(例えば、命令Fの処理時間、命令Gの処理時間、・・・、命令Vの処理時間)を格納している記録媒体である。
【0050】
処理時間算出部14bは処理制御部12から部分制御部2〜2に対して相互に異なる処理命令が発行される際、あるいは、少なくとも1個以上の部分制御部2に対して同一の処理命令が発行される際、処理時間メモリ14aにより格納されている単位命令当りの処理時間を参照して、処理制御部12から処理命令が発行される各部分制御部2の処理時間を算出する処理を実施する。
【0051】
連結制御部14cは処理時間算出部14bの算出結果を参照して、先に処理が終了する部分制御部2と、多くの処理時間を要する部分制御部2(その他の部分制御部)とを判別して、多くの処理時間を要する部分制御部2における未処理の部分の一部を、既に処理が終了している部分制御部2に対して分担させる処理を実施する。
【0052】
次に動作について説明する。
全体制御部1の連結判定部12の代わりに、全体制御部1の連結判定部14が実装されている点以外は、上記実施の形態1,2と同様であるため、ここでは、連結判定部14の処理内容のみを説明する。
【0053】
信号処理装置の初期動作時において、部分制御部2〜2のメイン命令メモリ21bに格納されているメインプログラムを一度実行することで、そのメインプログラムを構成している単位命令(例えば、命令F、命令G、・・・、命令V)毎の処理時間(例えば、命令Fの処理時間、命令Gの処理時間、・・・、命令Vの処理時間)を計測し、単位命令毎の処理時間を連結判定部14の処理時間メモリ14aに格納する。
【0054】
連結判定部14の処理時間算出部14bは、上記実施の形態1と同様に、処理制御部12から部分制御部2〜2に対して相互に異なる処理命令が発行される際、あるいは、少なくとも1個以上の部分制御部2に対して同一の処理命令が発行される際、処理時間メモリ14aにより格納されている単位命令当りの処理時間を参照して、処理制御部12から処理命令が発行される各部分制御部2の処理時間を算出する。
例えば、ある部分制御部2に対して発行される処理命令が、命令F+命令Gの実行を指示する命令であれば、当該部分制御部2の処理時間として、命令Fの処理時間と命令Gの処理時間の合計を算出する。
【0055】
連結判定部14の連結制御部14cは、処理時間算出部14bが処理制御部12から処理命令が発行される各部分制御部2の処理時間を算出すると、各部分制御部2の処理時間を比較して、先の処理が終了する部分制御部2と、多くの処理時間を要する部分制御部2とを判別する。
連結制御部14cは、先に処理が終了する部分制御部2と、多くの処理時間を要する部分制御部2とを判別すると、先に処理が終了する部分制御部2の処理終了後に、多くの処理時間を要する部分制御部2における未処理の部分の一部を、処理を終了している部分制御部2に対して分担させる処理を行う。
分担させる処理自体は、上記実施の形態1,2における図3の連結制御部11bの処理内容と同様であるため説明を省略する。
【0056】
以上で明らかなように、この実施の形態3によれば、処理制御部12から部分制御部2〜2に対して相互に異なる処理命令が発行される際、あるいは、少なくとも1個以上の部分制御部2に対して同一の処理命令が発行される際、処理時間算出部14bが、処理時間メモリ14aにより格納されている単位命令当りの処理時間を参照して、処理制御部12から処理命令が発行される各部分制御部2の処理時間を算出し、連結制御部14cが、処理時間算出部14bの算出結果を参照して、先に処理が終了する部分制御部2と、多くの処理時間を要する部分制御部2とを判別して、多くの処理時間を要する部分制御部2における未処理の部分の一部を、既に処理が終了している部分制御部2に対して分担させるように構成したので、仮に、製造バラつきや低電圧バラつきの影響で、部分制御部2〜2の処理時間に差異を生じる場合でも、各部分制御部2の処理を他の部分制御部2が分担して処理することで、その差異の影響を抑制することができるようになり、その結果、チップの歩留まりを高めることができる効果を奏する。
【符号の説明】
【0057】
1 全体制御部、2〜2 部分制御部、3〜3 データ転送部、4〜4 データパス部、5〜5 データメモリ、6 バス、11,14 連結判定部、11a 状態判定部、11b 連結制御部、12,13 処理制御部、14a 処理時間メモリ、14b 処理時間算出部、14c 連結制御部、21 メイン制御部、21a 制御部、21b メイン命令メモリ、21c メインプログラムカウンタ、22 データ転送制御部、23 データパス制御部、24 演算メモリ、25 セレクタ、26 アクセス調停部、27 アクセスバス。

【特許請求の範囲】
【請求項1】
処理命令を発行する全体制御部と、上記全体制御部により発行された処理命令が単一演算を指示する命令であれば、その命令にしたがって単一演算を実行し、上記処理命令がデータパス演算を指示する命令であれば、その命令にしたがって演算命令を発行し、上記処理命令がデータの転送を指示する命令であれば、その命令にしたがってデータ転送命令を発行する部分制御部と、上記部分制御部により発行されたデータ転送命令にしたがってデータパス演算に必要なデータ及び上記部分制御部により実行された単一演算の演算結果を転送するデータ転送部と、上記データ転送部により転送されたデータ及び単一演算の演算結果を用いて、上記部分制御部により発行された演算命令にしたがってデータパス演算を実行するデータパス部とを備えた信号処理装置において、上記全体制御部に対して、上記部分制御部、上記データ転送部及び上記データパス部が複数個並列に接続されており、上記全体制御部が相互に異なる処理命令を各部分制御部に発行し、あるいは、同一の処理命令を少なくとも1個以上の部分制御部に発行することで、処理の並列化を実現することを特徴とする信号処理装置。
【請求項2】
全体制御部は、相互に異なる処理命令、あるいは、同一の処理命令を発行した後、複数個の部分制御部を連結して、単一の処理命令を上記複数個の部分制御部に分担させることを特徴とする請求項1記載の信号処理装置。
【請求項3】
全体制御部は、複数個の部分制御部の処理状況を把握し、その処理状況に基づいて上記複数個の部分制御部を連結させるか否かを判定することを特徴とする請求項2記載の信号処理装置。
【請求項4】
全体制御部は、単一の処理命令を複数個の部分制御部に分担させる際、単一演算の演算結果及びデータパス部によるデータパス演算の演算結果を格納する各部分制御部の演算メモリを連結することで、各部分制御部に対して、他の部分制御部の演算メモリに対するアクセスを許可することを特徴とする請求項2または請求項3記載の信号処理装置。
【請求項5】
全体制御部は、相互に異なる処理命令、あるいは、同一の処理命令を発行する際、処理命令を発行する各部分制御部の処理時間を算出して、先に処理が終了する部分制御部と、その他の部分制御部とを判別し、その他の部分制御部に対する処理命令の中で、未だ処理が実行されていない命令を先に処理が終了している部分制御部に分担させることを特徴とする請求項1記載の信号処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−81658(P2011−81658A)
【公開日】平成23年4月21日(2011.4.21)
【国際特許分類】
【出願番号】特願2009−234316(P2009−234316)
【出願日】平成21年10月8日(2009.10.8)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】