(57)【要約】【課題】  タスク切替時に共有バス上でデータの衝突が起きないようにする。【解決手段】  プロセッサシステムは、共有バスに接続される複数のCPUモジュールと、共有バス１に接続されて全てのCPUモジュールが共用する共有メモリと、複数のCPUモジュールへのタイマ割込信号を生成するタイマ割込生成ユニットとを備えている。複数のCPUモジュールが同一の共有メモリを共用する場合に、タスク割込信号が複数のCPUモジュールにほぼ同時に入力されると、各CPUモジュールの内部で個別にタスク割込信号を遅延させて、CPUコア部１１に供給するため、各CPUコア部１１がタスク切替を行うタイミングを互いにずらすことができる。これにより、タスク切替時のローカルメモリから共有メモリにデータを待避している最中に、データ同士が共有バス１上で競合するおそれを軽減できる。【選択図】  図２
2006079547.tif 000002
【特許請求の範囲】
【請求項１】
タイマ割込信号に従って、タスクの切替を行う複数のプロセッサコアと、
前記複数のプロセッサコアにより共有され、タスク切替に伴って各プロセッサコアが今まで使用していたタスク関連データを待避するために利用可能な共有メモリと、
前記共有メモリと前記複数のプロセッサコアとの間でデータを送受する共有バスと、
前記複数のプロセッサコアのそれぞれに対応して設けられ、各プロセッサコアに供給するタイマ割込信号のタイミングを、対応するプロセッサコアに応じた固有の時間だけそれぞれ遅延させる複数の遅延回路と、を備えることを特徴とするプロセッサシステム。
【請求項２】
前記複数の遅延回路は、タスク切替時に前記複数のプロセッサコアが前記共有メモリに待避すべきデータが前記共有バス上で衝突しないように、互いに異なる時間だけ前記タイマ割込信号を遅延させることを特徴とする請求項１に記載のプロセッサシステム。
【請求項３】
前記複数のプロセッサコアのそれぞれに対応して設けられ、実行中のタスクの処理に利用可能な複数のローカルメモリを備え、
前記複数のプロセッサコアは、タスクを切り換える際、前記ローカルメモリの内容を、前記共有バスを経由して前記共有メモリに待避することを特徴とする請求項１または２に記載のプロセッサシステム。
【請求項４】
前記複数の遅延回路はそれぞれ、タイマ割込信号の固有の遅延量を記憶する遅延記憶部を有することを特徴とする請求項１乃至３のいずれかに記載のプロセッサシステム。
【請求項５】
所定間隔でタイマ割込信号を生成して、前記複数の遅延回路に供給する割込生成器を備えることを特徴とする請求項１乃至４のいずれかに記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイマ割込信号に従ってタスクの切替を行うプロセッサシステムに関する。
【背景技術】
【０００２】
複数のプロセッサを備えたマルチプロセッサシステムにおいて、特定のプロセッサへの負荷が集中しないようにする技術が知られている（特許文献１参照）。
【０００３】
この特許文献１には、複数のCPUボードでマルチプロセッサシステムを構成している。各CPUボードでは、割り込み受付けから、割り込みタスク処理完了までの時間を測定し、その測定時間により、CPUの負荷を測定する。そして、測定した負荷に応じて、割り込みの遅延時間をきめ細かく制御する。
【０００４】
このように、特許文献１は、CPUに対する割り込み処理の負荷を分散させる点に特徴がある。
【０００５】
しかしながら、各CPUの負荷が均等になるように割込制御を行っても、各CPUとメモリとの間で送受されるデータ同士が競合するおそれがある。特に、割込信号によりタスクを切り換える際、今まで実行していたタスクに関連するデータを共有メモリに待避する必要があるが、共有メモリへのアクセスが複数のCPUで競合した場合には、共有メモリへのデータの待避に時間がかかることになり、タスクの切替を迅速に行えなくなる。
【特許文献１】特開平11-15800号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、タスク切替時に共有バス上でデータの衝突が起きないようにするプロセッサシステムを提供する。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、タイマ割込信号に従って、タスクの切替を行う複数のプロセッサコアと、前記複数のプロセッサコアにより共有され、タスク切替に伴って各プロセッサコアが今まで使用していたタスク関連データを待避するために利用可能な共有メモリと、前記共有メモリと前記複数のプロセッサコアとの間でデータを送受する共有バスと、前記複数のプロセッサコアのそれぞれに対応して設けられ、各プロセッサコアに供給するタイマ割込信号のタイミングを、対応するプロセッサコアに応じた固有の時間だけそれぞれ遅延させる複数の遅延回路と、を備える。
【発明の効果】
【０００８】
本発明によれば、タイマ割込によるタスク切替時に共有バス上でデータの衝突が起きなくなる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照しながら、本発明の一実施形態について説明する。
【００１０】
図１は本発明の一実施形態に係るプロセッサシステムの概略構成を示すブロック図である。図１のプロセッサシステムは、共有バス１に接続される複数のCPUモジュール２と、共有バス１に接続されて全てのCPUモジュール２が共用する共有メモリ３と、複数のCPUモジュール２へのタイマ割込信号を生成するタイマ割込生成ユニット４とを備えている。
【００１１】
タイマ割込生成ユニット４は、所定間隔ごとにタイマ割込信号を生成する。タイマ割込生成ユニット４で生成されたタイマ割込信号は、ほぼ同タイミングで複数のCPUモジュール２に供給される。CPUモジュール２は、タイマ割込信号に同期して、タスクを実行する。各タスクの実行中は、ローカルメモリを作業領域として利用し、実行中のタスクに関連するデータをローカルメモリに格納する。CPUモジュール２は、タイマ割込信号が入力されると、タスクの切替を行う。
【００１２】
複数のCPUモジュール２は同一の内部構成を有する。図２はCPUモジュール２の内部構成の一例を示すブロック図である。図２のCPUモジュール２は、演算処理を行うCPUコア部１１と、CPUコア部１１による高速アクセスが可能なキャッシュメモリ１２と、CPUコア部１１がタスク処理に利用するローカルメモリ１３と、タイマ割込信号を遅延させる遅延ユニット１４と、各CPUモジュール２に特化した所定の処理を行うハードウェア拡張部（HW拡張部）１５と、HW拡張部１５が利用するローカルメモリ１６と、ローカルメモリ１３，１６と共有メモリ３との間でデータの送受を行うDMAコントローラ１７と、共有バス１との間でデータの送受を行うバスインタフェースユニット（BIU）１８とを有する。
【００１３】
タイマ割込生成ユニット４で生成されたタイマ割込信号は、各CPUモジュール２内の遅延ユニット１４に入力される。各遅延ユニット１４には、互いに異なる遅延時間が設定されており、設定された遅延時間だけタイマ割込信号を遅延させる。各CPUモジュール２内のCPUコア部１１には、遅延ユニット１４で遅延させたタイマ割込信号が供給される。
【００１４】
CPUコア部１１は、遅延ユニット１４で遅延させたタイマ割込信号が入力されると、タスクの切替を行う。タスクを切り換える際には、今まで実行していたタスクの関連データをローカルメモリ１３から読み出して、共有メモリ３に待避する。ローカルメモリ１３から共有メモリ３へのデータの待避は、CPUコア部１１の制御下で行ってもよいが、DMAコントローラ１７を利用してもよい。DMAコントローラ１７を利用してデータの待避を行えば、CPUコア部１１の処理負担を軽減でき、タスクの切替処理を高速化できる。
【００１５】
HW拡張部１５は必須の構成要素ではないが、各CPUモジュール２ごとに専用の処理（例えば、画像処理など）を行う場合に設けられる。HW拡張部１５にも、対応するローカルメモリ１６が設けられ、タスク切替時には、必要に応じて、このローカルメモリ１６の内容も共有メモリ３に待避される。
【００１６】
図３は遅延ユニット１４の内部構成の第１実装例を示すブロック図である。図３の遅延ユニット１４は、遅延サイクル数を設定する遅延設定レジスタ２１と、比較器２２と、OR回路２３と、トグルスイッチ２４と、セレクタ２５と、カウンタレジスタ２６と、インクリメンタ２７とを有する。
【００１７】
初期状態では遅延設定レジスタ２１に０でない値が設定されているものとする。OR回路 ２３は、タイマ割り込み生成ユニット４で生成されたタイマ割り込みパルスと比較器２２の出力との論理和を演算する。 初期状態では、比較器２２の出力とタイマ割り込み信号は「0」であり、タイマ割り込みパルスが入力されると OR回路２３の出力は１クロック期間だけ「1」になる。
【００１８】
トグルスイッチ２４の出力は初期状態では例えば「0」であり、OR回路２３から出力される信号のポジティブエッジ(「0」->「1」の遷移)で出力論理を切り替え、反転して「1」になる。
【００１９】
セレクタ２５は、トグルスイッチ２４の出力に基づいて、「0」またはインクリメンタ２７の出力を選択する。例えばトグルスイッチ２４の出力が「1」であれば、セレクタ２５はインクリメンタ２７の出力を選択し、トグルスイッチ２４の出力が「0」であれば「0」を選択する。セレクタ２５の出力はカウンタレジスタ２６に設定される。従ってトグルスイッチ２４の出力が「1」である間は、カウンタレジスタ２６の値は１クロックに１ずつ加算される。
【００２０】
比較器２２は、遅延設定レジスタ２１の設定値とカウンタレジスタ２６の値を比較する。 両者が一致しなければ比較器２２は「0」を出力し、一致すれば「1」を出力する。 これにより、OR回路２３の出力が「0」->「1」へ遷移するので、トグルスイッチ２４は再び出力論理を切り替え、反転して「0」になる。
【００２１】
このとき、セレクタ２５は０を選択するので、次のクロックでカウンタレジスタ２６には ０が設定される。すると、比較器２２の出力は再び「0」となり、OR 回路２３の出力は「0」へ戻って遅延ユニットは初期状態へ戻る。比較器２２の出力が遅延されたタイマ割り込みパルスとなる。
【００２２】
このように、図３の遅延ユニット１４は、カウンタレジスタ２６の値が遅延設定レジスタ２１の設定値と等しくなるまで、「１」ずつインクリメントを繰り返す。すなわち、遅延設定レジスタ２１の設定値に応じて、タイマ割込信号の遅延時間が設定される。遅延設定レジスタ２１に設定する値を変更することにより、遅延設定レジスタ２１のビット値に応じた遅延時間の設定が可能になる。
【００２３】
図４は遅延ユニット１４の内部構成の第２実装例を示すブロック図である。図４の遅延ユニット１４は、遅延サイクル数の２の補数を設定する遅延設定レジスタ３１と、比較器３２と、OR回路３３と、トグルスイッチ３４と、セレクタ３５と、カウンタレジスタ３６と、インクリメンタ３７とを有する。
【００２４】
図４の遅延ユニット１４は、セレクタ３５の入力信号と比較器３２の入力信号が図３と異なっている。図４のセレクタ３５は、遅延設定レジスタ３１の設定値またはインクリメンタ３７の出力を選択する。比較器３２は、カウンタレジスタ３６の出力と「０」とを比較する。
【００２５】
すなわち、図３のインクリメンタ２７は、「０」から遅延設定レジスタ２１の設定値までインクリメントを行うのに対して、図４のインクリメンタ３７は、遅延設定レジスタ３１の設定値から「０」までインクリメントを行う。
【００２６】
図３と図４のどちらの回路構成を採用しても、回路規模や動作速度にほとんど違いはないため、どちらの回路構成を採用してもよい。
【００２７】
このように、本実施形態では、複数のCPUモジュール２が同一の共有メモリ３を共用する場合に、タスク割込信号が複数のCPUモジュール２にほぼ同時に入力されると、各CPUモジュール２の内部で個別にタスク割込信号を遅延させて、CPUコア部１１に供給するため、各CPUコア部１１がタスク切替を行うタイミングを互いにずらすことができる。これにより、タスク切替時のローカルメモリから共有メモリ３にデータを待避している最中に、データ同士が共有バス１上で競合するおそれを軽減できる。
【００２８】
なお、CPUモジュール２内の遅延ユニット１４でタイマ割込信号を遅延させる時間をプログラマブルに設定変更できるようにしてもよい。これにより、各CPUモジュール２が実行するタスクの内容に応じて、タイマ割込信号の遅延時間を変更することができる。
【００２９】
また、上述した実施形態において、共有バス１に接続されるCPUモジュール２の数に特に制限はない。さらに、CPUモジュール２の内部構成や遅延ユニット１４の内部構成は図示されたものに限定されない。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態に係るプロセッサシステムの概略構成を示すブロック図。
【図２】CPUモジュール２の内部構成の一例を示すブロック図。
【図３】遅延ユニット１４の内部構成の第１実装例を示すブロック図。
【図４】遅延ユニット１４の内部構成の第２実装例を示すブロック図。
【符号の説明】
【００３１】
１  共有バス
２  CPUモジュール
３  共有メモリ
４  タイマ割込生成ユニット
１１  CPUコア部
１３，１６  ローカルメモリ
１４  遅延ユニット
１５  HW拡張部
１７  DMAコントローラ
【図１】
2006079547.tif 000003
【図２】
2006079547.tif 000004
【図３】
2006079547.tif 000005
【図４】
2006079547.tif 000006