(57)【要約】【課題】パフォーマンス低下を抑制することが可能な半導体装置およびそれを用いるシステムを提供する。【解決手段】半導体装置は、複数のプロセッサＣＰＵ１、ＣＰＵ２と、プロセッサＣＰＵ１、ＣＰＵ２に接続され、複数のタスクをリアルタイムで実行するようにプロセッサＣＰＵ１、ＣＰＵ２を制御するスケジュール装置１０（ＩＤ１）と、タスクを実行することによりプロセッサＣＰＵ１、ＣＰＵ２によってデータが格納されるようにアクセスされるメモリ１７、１８と、プロセッサＣＰＵ１、ＣＰＵ２によるメモリへのアクセスを監視するアクセスモニタ回路１５とを備える。アクセスモニタ回路１５によって、メモリへのアクセスが検出されたとき、メモリ１８に格納されるデータの宛先情報に基づいて、メモリ１８に格納されているデータが転送される。【選択図】図１
2020071689.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１マスタと、
前記複数の第１マスタに接続され、複数のタスクをリアルタイムで実行するように、前記複数の第１マスタを制御するスケジュール装置と、
タスクを実行することにより、前記複数の第１マスタによってデータが格納されるようにアクセスされるメモリと、
前記複数の第１マスタによる前記メモリへのアクセスを監視するアクセスモニタ回路と、
を備え、
前記アクセスモニタ回路によって、前記メモリへのアクセスが検出されたとき、前記メモリに格納されているデータが、宛先情報に基づいて、転送される、半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
前記アクセスモニタ回路によって、前記メモリの所定のアドレス領域にデータが格納されたことが検出されたとき、前記メモリに格納されているデータが転送される、半導体装置。
【請求項３】
請求項２に記載の半導体装置において、
前記メモリに格納されているデータを転送する通信装置を、さらに備え、
前記宛先情報は、前記メモリに格納されているデータの転送先を特定する識別情報と、前記識別情報で特定される転送先のメモリにおけるアドレス領域を特定するアドレス情報とを含み、
前記メモリの前記所定のアドレス領域にデータが格納されたことが検出されたとき、前記通信装置は、前記識別情報と前記アドレス情報で特定される前記転送先の前記アドレス領域に、前記メモリに格納されているデータを転送する第２マスタを備える、半導体装置。
【請求項４】
請求項３に記載の半導体装置において、
前記複数の第１マスタは、プロセッサであり、前記第２マスタは、前記スケジュール装置によって制御されるＤＭＡコントローラである、半導体装置。
【請求項５】
請求項３に記載の半導体装置において、
前記宛先情報が設定されるレジスタを含む制御レジスタを、さらに備えている、半導体装置。
【請求項６】
請求項１に記載の半導体装置において、
前記アクセスモニタ回路によって、前記メモリの所定のアドレス領域へのアクセスが検出されたとき、前記アドレス領域内を細分化した各々のアドレス領域毎に、転送すべきデータが格納されているか否かを示す情報、または／およびアクセス時刻に関する情報、を保持している管理テーブルの状態が更新される、半導体装置。
【請求項７】
請求項６に記載の半導体装置において、
前記スケジュール装置は、前記アクセスモニタ回路から提供される情報に基づいて、前記細分化した各々のアドレス領域に格納されているデータの中から、送信バッファに滞留している時間が長いデータ、または／およびタイミング制約の厳しいタスクで参照されるデータ、または／および実行優先度が高く設定されているタスクで参照されるデータ、を選択して優先的に転送する、半導体装置。
【請求項８】
ネットワークによって、互いに接続された複数の半導体装置を備えたシステムであって、
前記複数の半導体装置のそれぞれは、
複数のマスタと、
前記複数のマスタに接続され、複数のタスクをリアルタイムで実行するように、前記複数のマスタを制御するスケジュール装置と、
タスクを実行することにより、前記複数のマスタによってデータが格納されるようにアクセスされるメモリと、
前記複数のマスタによる前記メモリへのアクセスを監視するアクセスモニタ回路と、
を備え、
前記複数の半導体装置のうちの第１半導体装置において、前記アクセスモニタ回路によって、前記メモリへのアクセスが検出されたとき、前記メモリに格納されているデータが、前記複数の半導体装置において宛先情報により特定される第２半導体装置のメモリに転送される、システム。
【請求項９】
請求項８に記載のシステムにおいて、
前記第１半導体装置は、前記宛先情報として、前記複数の半導体装置から前記第２半導体装置を特定する識別情報と、前記第２半導体装置の第１アドレス領域を特定するアドレス情報とを備え、
前記第１半導体装置において、アクセスモニタ回路によって、前記メモリにデータが格納されたのが検出されたとき、前記第２半導体装置の前記第１アドレス領域に、前記メモリに格納されたデータを転送する、システム。
【請求項１０】
請求項９に記載のシステムにおいて、
前記複数の半導体装置は、前記宛先情報として、前記第２半導体装置を特定する識別情報と、前記第２半導体装置のメモリの第２アドレス領域を特定するアドレス情報とを備えた第３半導体装置を含み、
前記第３半導体装置において、前記アクセスモニタ回路によって、メモリへのデータの格納が検出されたとき、前記メモリに格納されているデータを、前記宛先情報により特定される前記第２半導体装置の前記第２アドレス領域に転送する、システム。
【請求項１１】
請求項１０に記載のシステムにおいて、
前記第２半導体装置における前記複数のマスタは、前記第１半導体装置および前記第３半導体装置から転送されたデータを用いたタスクを実行する、システム。
【請求項１２】
請求項１１に記載のシステムにおいて、
前記第１半導体装置、前記第２半導体装置および前記第３半導体装置のそれぞれは、さらに通信装置を備え、
前記通信装置は、前記ネットワークと前記メモリとの間でデータを転送するマスタを備えている、システム。
【請求項１３】
請求項１１に記載のシステムにおいて、
前記ネットワークに接続され、前記第１半導体装置および前記第３半導体装置にデータを送信する送信装置を、さらに備える、システム。
【請求項１４】
請求項１０に記載のシステムにおいて、
前記第１半導体装置および前記第３半導体装置のそれぞれは、前記宛先情報が設定されるレジスタを含む制御レジスタを、さらに備えている、システム。
【請求項１５】
請求項９に記載のシステムにおいて、
前記第２半導体装置における前記アクセスモニタ回路によって、前記第１アドレス領域へのアクセスが検出されたとき、前記第１アドレス領域内を細分化した各々のアドレス領域毎に、転送されたデータが格納されているか否かを示す情報、または／およびアクセス時刻に関する情報、を保持している管理テーブルの状態が更新される、システム。
【請求項１６】
請求項９に記載のシステムにおいて、
前記第２半導体装置における前記アクセスモニタ回路は、前記第１半導体装置の前記メモリから、前記第２半導体装置の前記第１アドレス領域に転送完了したデータ量に関する情報を、前記第２半導体装置における前記スケジュール装置に、リアルタイムに提供する、システム。
【請求項１７】
請求項９に記載のシステムにおいて、
前記第２半導体装置における前記スケジュール装置は、前記アクセスモニタ回路から提供される情報に基づいて、前記第１アドレス領域に転送されたデータを参照するタスクを起動する、または／および前記第１アドレス領域に転送されたデータを参照するタスクの実行優先順位を変更する、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置およびそれを用いるシステムに関し、特に複数のマスタを備え、複数のタスクをリアルタイムで実行可能な半導体装置およびそれを用いるシステムに関する。
【背景技術】
【０００２】
半導体装置として、マイクロプロセッサ（以下、プロセッサと称する）、ダイレクトメモリアクセスコントローラ（以下、ＤＭＡコントローラと称する）およびメモリを搭載した半導体装置が知られている。このような半導体装置は、例えばＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）向けのネットワークシステムにおいて用いられる。プロセッサは、プログラムに従って所定の処理を実行するとき、アドレス信号（以下、本明細書では、アドレス情報および転送制御情報を伝達する信号をまとめてアドレス信号と称する）を出力して、メモリまたは周辺回路に対してアクセスを行う。ＤＭＡコントローラも、プロセッサと同様に、アドレス信号を出力して、メモリまたは周辺回路に対してアクセスを行う。この場合、プロセッサおよびＤＭＡコントローラは、メモリおよび周辺回路に対して、アクセスを行うマスタと見なすことができ、アクセスされるメモリまたは周辺回路は、スレーブと見なすことができる。
【０００３】
ネットワークシステムでは、消費電力を抑制しながら、システム全体のパフォーマンス（以下、本明細書では、リアルタイム性能（より厳しいタイミング制約に対応できる能力）とスループット性能（データ転送レート、演算能力）の両方をまとめてパフォーマンスと称する）を向上させることが望まれている。このための有効な手段として、１個の半導体装置に搭載されるプロセッサまたは／およびＤＭＡコントローラの個数を増やし、処理をリアルタイムで並列動作させることが考えられる。
【０００４】
リアルタイムに関する技術は、たとえば特許文献１〜３に記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−４９４９７号公報
【特許文献２】特開２００４−２２００９３号公報
【特許文献３】国際公開第２００８／０２３４２６号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数の処理をリアルタイムで行うために、リアルタイムオペレーティングシステム（以下、ＲＴＯＳと称する）をプロセッサで実行させ、ＲＴＯＳ上で、処理に対応するアプリケーションプログラム（以下、アプリケーションと称する）を実行することが行われる。この場合、アプリケーションは複数のタスクに分けられ、ＲＴＯＳによってタスクの切換を行いながら、複数のタスクを実行することにより、アプリケーションが実行されることになる。ＲＴＯＳの場合、タスクの切換（タスクスイッチ）に時間が必要とされる。このタスクスイッチの高速化を図る技術として、例えば特許文献３に記載されているように、ハードウェアでＲＴＯＳを実現するハーウェアＲＴＯＳ（以下、ＨＷ−ＲＴＯＳと称する）がある。
【０００７】
本発明者は、ＨＷ−ＲＴＯＳの採用によりタスクスイッチ時間を短縮し、リアルタイム性能を向上させ、さらにタスクスイッチ以外の観点でリアルタイム性能の向上を図る方法を検討した。
【０００８】
タスクは、その入力データが確定すると、実行させることが可能である。しかしながら、タスクのスケジューリングを行うタスクスケジューラ（以下、スケジュール装置とも称する）は、複数のタスクにおいて、入力データの確定する順番が予測困難な場合、入力データが確定したタスクを優先的に実行させることができない。そのため、システム全体でのパフォーマンス低下が発生する。
【０００９】
また、半導体装置が複数のマスタを備えている場合、スケジュール装置は、各マスタにタスクを割り当て、複数のタスクを並列的に実行させる。しかしながら、並列的に実行させることが可能なタスクの数に比べて、マスタの個数が少ない場合、半導体装置において、同一の時間帯に並列に実行することができるタスクの数が、マスタの個数によって制限されるため、システム全体でのパフォーマンス低下が発生する。
【００１０】
特許文献１には、予め定められた時間経過したときタスクの処理を中断させてタスクを切り換える方式と、タスク自身が例えばフレームの区切りをきっかけに処理を中断してタスクを切り換える方式が記載されている。これらのどちらの方式であっても、各タスクについて複数の処理の入出力系統の現状に対する評価を行うためにデータの入出力を行うタスクを中断する必要が生じ、この中断時間の発生により、リアルタイム性能の低下が発生する。
【００１１】
特許文献２には、データの入出力部にＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）型記憶手段を設け、データがＦＩＦＯ型記憶手段を介してタスクに供給される技術が記載されている。ＦＩＦＯ型記憶手段では最初に入力されたデータから順番に取り出す必要がある為、データの入出力部にＦＩＦＯ型記憶手段を用いた場合、タスクは、直接入力データをランダムな順番でリード、または／および、直接出力データをランダムな順番でライトすることが出来ない。例えばあるタスクで入出力データを圧縮／解凍しなければならない場合は、ＦＩＦＯ型記憶手段に格納されているデータを別途ランダムアクセス可能なメモリ領域にコピーしてから圧縮／解凍を行い、さらに出力データをＦＩＦＯ型記憶手段に格納する必要が生じる。これらのコピー時間の発生により、リアルタイム性能の低下が発生する。また、ＦＩＦＯ型記憶手段では最初に入力されたデータから順番に取り出す必要がある為、データの入出力部にＦＩＦＯ型記憶手段を用いた場合、ＦＩＦＯ型記憶手段に滞留しているデータの一部分を処理する優先度をリアルタイムに変更することはできない。例えばある装置で実行させたタスクの出力データを、通信路を介した別の場所にある装置で実行させるタスクの入力データとして使用する場合は、各々のタスクを実行する装置とその通信路との間に、各々のタスクを実行する装置が処理することのできる入出力データの転送レート（単位時間あたりの入出力データ量）と、その通信路により制限される転送レート（単位時間あたりの転送データ量）の差分を時間積分して得られるデータ量（差分データ量）を吸収することのできる大きさ（データ容量）の入出力バッファを設ける必要が生じる。この入出力バッファとしてＦＩＦＯ型記憶手段を用いた場合、ＦＩＦＯ型記憶手段に滞留しているデータの一部分を処理する優先度を、ＦＩＦＯ型記憶手段に滞留している時間内により高くなるように変更して優先的に処理する、ということはできない為、リアルタイム性能の低下が発生する。
【００１２】
また、特許文献１および２のいずれにおいても、並列的に実行させることが可能なタスクに比べて、マスタの個数が少ない場合のパフォーマンス低下は認識されていない。ＨＷ−ＲＴＯＳを記載している特許文献３においても，同様に、並列的に実行させることが可能なタスクに比べて、マスタの個数が少ない場合のパフォーマンス低下は認識されていない。
【００１３】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１４】
一実施の形態に係わる半導体装置を述べると、次のとおりである。
【００１５】
すなわち、半導体装置は、複数の第１マスタと、複数の第１マスタに接続され、複数のタスクをリアルタイムで実行するように複数の第１マスタを制御するスケジュール装置と、タスクを実行することにより複数の第１マスタによってデータが格納されるようにアクセスされるメモリと、複数の第１マスタによるメモリへのアクセスを監視するアクセスモニタ回路とを備える。アクセスモニタ回路によって、メモリへのアクセスが検出されたとき、メモリに格納されるデータの宛先情報に基づいて、メモリに格納されているデータが転送される。
【００１６】
また、一実施の形態では、ネットワークによって、互いに接続された複数の半導体装置を備えたシステムが提供される。当該システムにおいて、複数の半導体装置のそれぞれは、複数のマスタと、複数のマスタに接続され、複数のタスクをリアルタイムで実行するように複数のマスタを制御するスケジュール装置と、タスクを実行することにより、複数のマスタによってデータが格納されるようにアクセスされるメモリと、複数のマスタによるメモリへのアクセスを監視するアクセスモニタ回路とを備える。複数の半導体装置のうちの第１半導体装置において、アクセスモニタ回路によって、メモリへのアクセスが検出されたとき、メモリに格納されているデータが、複数の半導体装置において宛先情報により特定される第２半導体装置のメモリに転送される。
【発明の効果】
【００１７】
一実施の形態によれば、パフォーマンス低下を抑制することが可能な半導体装置およびそれを用いるシステムを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態１に係わる半導体装置およびそれを用いたシステムの構成を示すブロック図である。
【図２】実施の形態１に係わる半導体装置およびネットワークシステムにおけるデータの流れを示す図である。
【図３】（Ａ）〜（Ｃ）は、実施の形態１に係わる半導体装置の動作を示すフローチャート図である。
【図４】（Ａ）〜（Ｃ）は、実施の形態１に係わる半導体装置の動作を示すフローチャート図である。
【図５】実施の形態１に係わるネットワークシステムのタイミング図である。
【図６】実施の形態１に係わる半導体装置のメモリの割り当てを説明する図である。
【図７】実施の形態１に係わる半導体装置のメモリの割り当てを説明する図である。
【図８】実施の形態１に係わる半導体装置のメモリアドレス領域を説明するための図である。
【図９】実施の形態１に係わる半導体装置のメモリアドレス領域を説明するための図である。
【図１０】実施の形態１に係わる半導体装置のメモリアドレス領域を説明するための図である。
【図１１】実施の形態１に係わる半導体装置のメモリアドレス領域を説明するための図である。
【図１２】実施の形態１に係わるタスク入出力データ制御レジスタの構成を示す図である。
【図１３】実施の形態１に係わるタスク入出力データ制御レジスタの構成を示す図である。
【図１４】実施の形態１に係わるタスク入出力データ制御レジスタの構成を示す図である。
【図１５】実施の形態１に係わるタスク入出力データ制御レジスタの構成を示す図である。
【図１６】実施の形態１に係わる半導体装置における設定の動作を示すフローチャート図である。
【図１７】実施の形態１に係わる半導体装置における設定の動作を示すフローチャート図である。
【図１８】実施の形態１に係わる半導体装置におけるタスク起動の動作を示すフローチャート図である。
【図１９】実施の形態１に係わる半導体装置におけるタスク起動の動作を示すフローチャート図である。
【図２０】実施の形態１に係わる半導体装置における送信動作を示すフローチャート図である。
【図２１】実施の形態１に係わる半導体装置における送信動作を示すフローチャート図である。
【図２２】実施の形態１に係わる半導体装置のメモリアドレス領域を説明するための図である。
【図２３】実施の形態１に係わる半導体装置のメモリアドレス領域を説明するための図である。
【図２４】実施の形態１に係わる半導体装置のメモリアドレス領域を説明するための図である。
【図２５】実施の形態１に係わる半導体装置のメモリアドレス領域を説明するための図である。
【図２６】実施の形態１に係わる半導体装置のタスク入出力データ制御レジスタの構成を示す図である。
【図２７】実施の形態１に係わる半導体装置のタスク入出力データ制御レジスタの構成を示す図である。
【図２８】実施の形態１に係わる半導体装置のタスク入出力データ制御レジスタの構成を示す図である。
【図２９】実施の形態１に係わる半導体装置のタスク入出力データ制御レジスタの構成を示す図である。
【図３０】実施の形態１に係わる半導体装置における設定の動作を示すフローチャート図である。
【図３１】実施の形態１に係わるタスク入力データの受信フローを示す図である。
【図３２】実施の形態１に係わるタスク入力データの受信フローを示す図である。
【図３３】実施の形態１に係わる半導体装置におけるタスク起動の動作を示すフローチャート図である。
【図３４】実施の形態１に係わる半導体装置におけるタスク起動の動作を示すフローチャート図である。
【図３５】実施の形態１に係わる管理テーブルを説明するための図である。
【図３６】実施の形態１に係わる管理テーブルを説明するための図である。
【図３７】実施の形態１に係わる管理テーブルを説明するための図である。
【図３８】実施の形態１に係わる管理テーブルを説明するための図である。
【図３９】実施の形態１に係わる管理テーブルを説明するための図である。
【図４０】実施の形態１に係わる管理テーブルを説明するための図である。
【図４１】実施の形態１に係わる管理テーブルを説明するための図である。
【図４２】実施の形態１に係わる管理テーブルを説明するための図である。
【図４３】実施の形態１に係わる管理テーブルを説明するための図である。
【図４４】実施の形態１に係わる管理テーブルを説明するための図である。
【図４５】実施の形態１に係わる管理テーブルを説明するための図である。
【図４６】実施の形態１に係わる管理テーブルを説明するための図である。
【図４７】実施の形態１に係わる管理テーブルを説明するための図である。
【図４８】実施の形態１に係わる管理テーブルを説明するための図である。
【図４９】実施の形態１に係わる管理テーブルを説明するための図である。
【図５０】実施の形態１に係わる管理テーブルを説明するための図である。
【図５１】実施の形態１に係わる管理テーブルを説明するための図である。
【図５２】実施の形態１に係わる管理テーブルを説明するための図である。
【図５３】実施の形態１に係わる管理テーブルを説明するための図である。
【図５４】実施の形態１に係わる管理テーブルを説明するための図である。
【図５５】実施の形態１に係わる管理テーブルを説明するための図である。
【図５６】実施の形態１に係わる管理テーブルを説明するための図である。
【図５７】実施の形態１に係わるネットワークシステムにおける半導体装置の動作を示すタイミング図である。
【図５８】実施の形態１に係わるネットワークシステムにおける半導体装置の動作を示すタイミング図である。
【図５９】実施の形態１に係わるネットワークシステムにおける半導体装置の動作を示すタイミング図である。
【図６０】実施の形態１に係わるネットワークシステムにおける半導体装置の動作を示すタイミング図である。
【図６１】比較例において、アプリケーションを実行するときの動作タイミングを示す図である。
【図６２】比較例に係わる半導体装置の概略的な構成を示す図である。
【図６３】比較例に係わる半導体装置の動作概要を示す図である。
【図６４】比較例に係わる半導体装置の動作タイミング図である。
【発明を実施するための形態】
【００１９】
以下、本発明の各実施の形態について、図面を参照しつつ説明する。なお、開示はあくまでも一例にすぎず、当業者において、発明の主旨を保っての適宜変更について容易に想到し得るものについては、当然に本発明の範囲に含有されるものである。また、図面は説明をより明確にするため、実際の態様に比べ、各部の幅、厚さ、形状等について模式的に表される場合があるが、あくまで一例であって、本発明の解釈を限定するものではない。
【００２０】
また、本明細書と各図において、既出の図に関して前述したものと同様の要素には、同一の符号を付して、詳細な説明を適宜省略することがある。
【００２１】
（実施の形態１）
実施の形態１においては、アプリケーションを構成する複数のタスクを、ネットワークに接続された複数の半導体装置に分散し、それぞれの半導体装置において割り当てられたタスクがリアルタイムに実行される。これにより、パフォーマンス低下を抑制することが可能となる。理解を容易にするために、複数のタスクを分散せずに、１つの半導体装置において実行する場合を比較例として、先ず説明する。
【００２２】
＜比較例＞
アプリケーションとしては、ネットワークを介して受信したフレームに所定の演算を行い、所定の演算の行われたフレームを、ネットワークを介して送信するプログラムを例として説明する。行われる所定の演算は、第１演算と第２演算の２種類である。第１演算は、２つのデータ間で演算を行うフィルタ演算とフィルタ演算の結果に対して行う出力演算により構成されている。また、第２演算は、データに対して行われる入力演算と２つの入力演算結果間で演算を行うフィルタ演算である。
【００２３】
＜＜アプリケーションの動作およびタイミング制約＞＞
１つの半導体装置によって、このアプリケーションを実行する場合の動作を、図６１を用いて説明する。図６１において、紙面上側には、アプリケーションを実行するときの動作タイミング図が示されている。また、図６１の紙面下側には、このアプリケーションを実行する際に満たされるべきタイミング制約を示している。
【００２４】
半導体装置は、図６１の紙面上側において、送受信開始イベントの最小時間Ｍｉｎと最大時間Ｍａｘとの間のタイミングで、フレームの送受信を開始し、送受信終了イベントの最小時間Ｍｉｎと最大時間Ｍａｘとの間のタイミングで、フレームの送受信が完了する。図６１において、左側に示した送受信開始イベントと送受信終了イベントの間で、フレーム１（同図では、フレームと記載）が、半導体装置により受信され、半導体装置内の通信バッファ０に格納される。通信バッファに格納されたデータは、上記した第１演算が行われて、ＳＹＮＣ０イベントに同期して半導体装置の外部に出力される。一方、ＳＹＮＣ１イベントに同期して半導体装置に入力されたデータは、上記した第２演算が行われ、通信バッファ１に格納される。通信バッファ１に格納されたデータは、右側に示した送受信開始イベントと送受信終了イベントの間で、フレーム２（同図では、フレームと記載）に変換されて送信される。送信されたフレーム２は、特に制限されないが、ネットワークに接続された外部装置で受信され、フレーム１と同様に、所定の演算が行われる。
【００２５】
このアプリケーションに許容される最小サイクルタイムは、図６１に示すように、送受信終了イベントの最大時間Ｍａｘと送受信開始イベントの最小時間Ｍｉｎとの間の期間となる。半導体装置は、この最小サイクルタイムの間に、アプリケーションを構成する複数のタスクを実行する。図６１では、アプリケーションを構成するタスクが、３個の場合が示されている。すなわち、送受信終了イベントにより起動される第１タスクと、ＳＹＮＣ１イベントにより起動される第２タスクと、第１タスクと同様に送受信終了イベントにより起動される第３タスクである。ここで、第１タスクは、通信バッファ０に格納されたデータを演算バッファ０へコピーし、所定の演算（フィルタ演算＋出力演算）を行うタスクである。第２タスクは、半導体装置に入力されたデータに対して所定の演算（入力演算＋フィルタ演算）を行い、通信バッファ１へコピーするタスクである。また、第３タスクは、第１タスクが起動されてから、第２タスクが終了するまでの間に、送受信開始イベントが発生しないことと、送受信終了イベントが発生しないことを監視するタスクである。
【００２６】
アプリケーションを構成する第１〜第３タスクには、タイミング制約が存在する。ここでは、第１および第２タスクのタイミング制約１および２についてのみ説明する。
【００２７】
第１タスクは、送受信終了イベントからＳＹＮＣ０イベントの間の期間に、タスクの実行を終了しておくことが要求される。すなわち、第１タスクの実行時間は、送受信終了イベントからＳＹＮＣ０イベントの間の期間と同じか、短いことが要求される。ＳＹＮＣ０イベントのタイミングに注目すると、このＳＹＮＣ０イベントが発生するまでに、第１タスクの出力が有効になっていることが必要とされる。同様に、第２タスクの実行時間は、ＳＹＮＣ１イベントと送受信開始イベントとの間の時間と同じか、短くすることが要求される。
【００２８】
第１タスクが、例えばＳＹＮＣ０イベントまでに終了していないと、半導体装置の外部に接続された装置は、ＳＹＮＣ０イベントに同期して半導体装置により出力演算されたデータを受け取ることができず、誤動作してしまう。同様に、第２タスクが送受信開始イベントまでに終了していない場合には、半導体装置にネットワーク接続された外部装置は、半導体装置により入力演算されたデータを受け取ることができず、誤動作してしまう。すなわち、第１タスクには、ＳＹＮＣ０イベントが発生するまでに、処理を完了させておくと言うタイミング制約１が存在する。同様に、第２タスクは、送受信開始イベントの発生までに、処理を完了させておくと言うタイミング制約２が存在する。
【００２９】
＜＜比較例の構成＞＞
比較例に係わる半導体装置の概略的な構成が、図６２に示されている。図６２には、比較例の半導体装置４５０の概略的な構成と、上記した第１演算を実行するときのデータの流れが示されている。
【００３０】
ネットワーク４５９を介して、フレームが、データ送信装置４５６から半導体装置４５０へ送信される。フレームは、複数の送信ブロック（同図では、送信ブロック０〜送信ブロック４）により構成されている。送信バッファ４５８に格納された送信ブロック０〜４は、通信装置４５７によって、フレームとしてネットワーク４５９へ送信される。
【００３１】
半導体装置４５０は、通信装置４５１、スケジュール装置４５２、２個のプロセッサＣＰＵ１、ＣＰＵ２、受信バッファ４５３、演算バッファ４５４および出力装置４５５を備えている。通信装置４５１は、ネットワーク４５９を介して供給されたフレームを受信する。通信装置４５１はＤＭＡコントローラを備えており、このＤＭＡコントローラによって、通信装置４５１からのフレームを受信ブロック０〜受信ブロック４として、受信バッファ４５３へ転送する。
【００３２】
プロセッサＣＰＵ１は、受信ブロック０と受信ブロック１との間でフィルタ演算を行い、受信ブロック１と受信ブロック２との間でフィルタ演算を行う。同様に、プロセッサＣＰＵ２は、受信ブロック２と受信ブロック３との間でフィルタ演算を行い、受信ブロック３と受信ブロック４との間でフィルタ演算を行う。プロセッサＣＰＵ１、ＣＰＵ２によって行われたフィルタ演算の結果は、演算バッファ４５４にブロックｆ０１、ｆ１２、ｆ２３およびｆ３４として格納される。プロセッサＣＰＵ１およびＣＰＵ２は、フィルタ演算の結果であるブロックｆ０１、ｆ１２、ｆ２３およびｆ３４に対して出力演算の処理を行い、出力装置４５５を介して出力する。
【００３３】
＜＜半導体装置４５０の動作＞＞
スケジュール装置４５２が、プロセッサＣＰＵ１およびＣＰＵ２に、上記した第１タスクを割り当てて、プロセッサに第１演算を実行させる。図６３は、半導体装置４５０の動作概要を示す図である。図６３において、紙面左側には半導体装置４５０の動作を示すフローチャート図が示されている。また、紙面右側には、第１演算によるデータ量の変化が示されている。ここでは、受信ブロック０〜受信ブロック４のサイズが１Ｋバイト（１０２４Ｂｙｔｅ）の場合を例として説明する。
【００３４】
受信バッファ４５３にフレームが受信されると、スケジュール装置４５２はステップＳＣＰ０で、フレーム受信終了イベントを検出し、プロセッサＣＰＵ１およびＣＰＵ２を動作させる。このときには、受信バッファ４５３には、受信ブロック０〜受信ブロック４が格納されている。ステップＳＣＰ１において、プロセッサＣＰＵ１、ＣＰＵ２は、フィルタ演算を行う。すなわち、連続する２つの受信ブロックの受信データを入力として、プロセッサＣＰＵ１、ＣＰＵ２はフィルタ演算を実施する。このとき、プロセッサＣＰＵ１、ＣＰＵ２の入力データは、２つの受信ブロック分のサイズ２Ｋバイトとなる。フィルタ演算を実施することにより、得られるフィルタ演算の結果である出力データのサイズは、１Ｋバイトである。
【００３５】
次に、ステップＳＣＰ２において、プロセッサＣＰＵ１、ＣＰＵ２は、出力演算を行う。すなわち、フィルタ演算の結果である出力データを入力データとして、プロセッサＣＰＵ１、ＣＰＵ２は出力演算を行う。出力演算の結果である出力演算の出力データのサイズは、１Ｋバイトである。
【００３６】
ステップＳＣＰ３において、ＳＹＮＣ（シンク）０イベントまでに、実行すべき演算が終了しているか否かを、スケジュール装置４５２は判定し、実行すべき演算が終了していれば、出力データを有効化するように、出力装置４５５を制御する。一方、実行すべき演算が終了していない場合には、ステップＳＣＰ１に戻り、実行すべき演算が終了するまで、ステップＳＣＰ１〜ＳＣＰ３を繰り返す。
【００３７】
ステップＳＣＰ０のときには、受信ブロック０〜受信ブロック４の受信データが、全て受信バッファ４５３に格納されているため、時間的に平行して４つの第１演算を実行させることが可能である。すなわち、４つの第１タスクを、時間的に並列に実行させることが可能である。しかしながら、半導体装置４５２には、並列的に実行させることが可能な４つのタスクよりも少ない２つのプロセッサＣＰＵ１およびＣＰＵ２しか設けられていない。その結果として、第１演算を上記したタイミング制約１を満たすように実行することが困難となる。
【００３８】
図６４は、半導体装置４５０によって、受信ブロック０〜受信ブロック４の受信データに対して第１演算を実施した場合のタイミング図である。同図は、図６１の紙面上側に示した動作タイミング図と類似しているが、図６４には、プロセッサＣＰＵ１およびＣＰＵ２の動作が詳しく示されている。同図では、受信バッファ４５３が、４つのバンクウェイ４５３＿０〜４５３＿３に分割され、演算バッファ４５４も、４つのバンクウェイ４５４＿０〜４５４＿３に分割されている。
【００３９】
＜＜＜タイミング図における符号説明＞＞＞
ここで、図６４で用いているプロセッサに付されている符号の規則を説明しておく。後で説明する図面においても、ここで説明する規則に従って、符号が付されている。
【００４０】
プロセッサの符号の後の（）内に記載されている符号において、左側に記載されている符号ｆまたはｆｇは、プロセッサが行う演算を示している。すなわち、符号ｆは、フィルタ演算を示し、符号ｆｇは、出力演算を示している。また、符号ｆまたはｆｇの右隣の２つの数字は、対象のブロックの番号を示している。さらに符号−の右隣の符号Ｒは、読み出し動作であることを示し、符号Ｗは、演算と演算結果の書き込み動作を示している。
【００４１】
また、図６４では、プロセッサＣＰＵ１およびＣＰＵ２の動作と、動作により生じる読み出しおよび書き込みの対象となるバンクウェイとが、同じ行になるように、描かれている。
【００４２】
例えば、符号ＣＰＵ１（ｆ０１−Ｒ）は、プロセッサＣＰＵ１が、フィルタ演算用に、受信バッファ４５３のバンクウェイ４５３＿０、４５３＿１から受信ブロック０と受信ブロック１を読み出す動作を実施していることを示している。また、ＣＰＵ１（ｆ０１−Ｗ）は、プロセッサＣＰＵ１が、受信ブロック０と受信ブロック１との間で、フィルタ演算を実施し、そのフィルタ演算の結果を、演算バッファ４５４のバンクウェイ４５４＿０に書き込む動作を実施していることを示している。
【００４３】
また、符号ＣＰＵ１（ｆｇ０１−Ｒ）は、プロセッサＣＰＵ１が、出力演算用に、演算バッファ４５４のバンクウェイ４５４＿０から受信ブロック０と受信ブロック１との間で実施されたフィルタ演算の結果を読み出す動作を実施していることを示している。さらに、ＣＰＵ１（ｆｇ０１−Ｗ）は、プロセッサＣＰＵ１が、受信ブロック０と受信ブロック１との間で実施したフィルタ演算の結果に対して出力演算を実施し、演算バッファ４５４＿０のバンクウェイ４５４＿２に書き込む動作を実施していることを示している。
【００４４】
比較例においては、図６４に示すように、期間Ｔ１およびＴ２において、プロセッサＣＰＵ１およびＣＰＵ２が、受信ブロック０、１および受信ブロック２、３を読み出して、フィルタ演算を実行し、期間Ｔ３において、フィルタ演算結果の読み出し、出力演算および演算バッファ４５４へ書き込むことが可能である。すなわち、プロセッサＣＰＵ１およびＣＰＵ２のそれぞれに、第１タスクを割り当てて、実行させることで、フレームにおける先頭ブロックに対するフィルタ演算と出力演算を実行させることが可能である。これにより、ＳＹＮＣ０イベントが発生するまでに、２つの出力演算の結果を得ることが可能である。しかしながら、先頭ブロックに対するプロセッサＣＰＵ１およびＣＰＵ２のフィルタ演算および出力演算が、終了するまで、フレームにおける残りのブロックに基づいたフィルタ演算および出力演算は、実行されず、残りのブロックに対する演算は、期間Ｔ４から開始することになる。その結果、ＳＹＮＣイベントが発生するまでに、フレームを構成する受信ブロックの演算が間に合わず、タイミング制約１の違反が生じることになる。タイミング制約１の違反が生じないようにするためには、例えばＳＹＮＣ０イベントの発生を遅くすることが考えられる。ＳＹＮＣ０イベントの発生を遅くすると、システム全体のパフォーマンスを低下させることになる。
【００４５】
＜半導体装置およびシステム＞
図１は、実施の形態１に係わる半導体装置およびそれを用いたシステムの構成を示すブロック図である。
【００４６】
同図において、１はネットワークシステムを示している。ネットワークシステム１は、データを送信するデータ送信装置と、複数の半導体装置と、データ送信装置と複数の半導体装置との間を接続するネットワーク線路とを備えている。図面が複雑になるのを避けるために、同図には、ネットワークシステムがデータ送信装置３と３つの半導体装置２＿１〜２＿３を備えている場合が、例示されている。勿論、ネットワークシステムが備える半導体装置およびデータ送信装置の数は、これに限定されるものではない。
【００４７】
また、特に制限されないが、実施の形態１においては、データ送信装置３、半導体装置２＿１〜２＿３間は、ディジーチェーン（ｄａｉｓｙ  ｃｈａｉｎ）接続されている。すなわち、データ送信装置３と半導体装置２＿１（第１半導体装置）との間は、ネットワーク線路４＿１によって接続され、半導体装置２＿１と半導体装置２＿２（第３半導体装置）との間は、ネットワーク線路４＿２によって接続され、半導体装置２＿２と半導体装置２＿３（第２半導体装置）との間は、ネットワーク線路４＿３によって接続されている。
【００４８】
データ送信装置３からネットワーク線路４＿１に送信された送信データには、受信すべき半導体装置を特定する識別情報が含まれている。半導体装置２＿１〜２＿３のそれぞれは、送信データに含まれる識別情報が、自局を特定する識別情報と一致する場合、送信データを受信する。一方、送信データに含まれる識別情報が、自局の識別情報と一致しない場合（不一致の場合）、供給された送信データを次段の半導体装置へネットワーク線路を介して送信する。例えば、送信データが、半導体装置２＿１を特定する識別情報を含んでいた場合、この送信データは、半導体装置２＿１によって受信される。これに対して、送信データに含まれる識別情報が、半導体装置２＿１の識別情報と一致しない場合、半導体装置２＿１は、ネットワーク線路４＿２を介して、半導体装置２＿２および２＿３に向けて、供給された送信データを送信する。このようにして、送信データは、それに含まれる識別情報によって特定される半導体装置によって受信されることになる。なお、データ送信装置３は、全ての半導体装置２＿１〜２＿３を特定するような識別情報を、送信データに含めることにより、全ての半導体装置２＿１〜２＿３は、同一の送信データを受信することができるようになっている。
【００４９】
半導体装置２＿１〜２＿３が、データ送信装置３あるいは他の半導体装置にデータを送信する場合も、半導体装置２＿１〜２＿３は、送信するデータに、受信する半導体装置あるいはデータ送信装置３を特定する識別情報を含めて、送信する。これにより、半導体装置は、データ送信装置３または他の半導体装置にデータを送信することが可能である。この場合、データを送信する半導体装置は、送信するデータに自局を特定する識別情報も含めて、送信する。これにより、データを受信したデータ送信装置３または他の半導体装置は、受信したデータを送信した半導体装置を特定することが可能となっている。
【００５０】
実施の形態１では、半導体装置２＿１〜２＿３およびデータ送信装置３をディジーチェーン接続する場合を説明するが、これに限定されるものではない。すなわち、１つのネットワーク線路にデータ送信装置３と半導体装置２＿１〜２＿３とが接続されたバス状のネットワーク接続あるいはリング状のネットワーク接続であってもよい。あるいはデータ送信装置３を起点として放射状にネットワーク線路を設け、それぞれのネットワーク線路に半導体装置を接続するようなネットワーク接続であってもよい。
【００５１】
実施の形態１において、半導体装置２＿１〜２＿３は、類似した構成となっている。そのため、ここでは、半導体装置２＿１を代表として、半導体装置２＿１〜２＿３の全体的な構成を説明し、後で相違点を説明する。
【００５２】
半導体装置２＿１は、通信装置５＿１と、スケジュール装置１０（ＩＤ１）と、２つのプロセッサＣＰＵ１、ＣＰＵ２と、アドレス変換回路１３と、バススイッチ１４と、モニタ回路（以下、メモリアクセスモニタ回路とも称する）１５と、メモリ１７、１８とを備えている。通信装置５＿１は、イーサネットＰＨＹ回路（Ｅｔｈｅｒｎｅｔ  ＰＨＹ）６＿１、６＿２と、イーサネットスイッチ（Ｅｔｈｅｒｎｅｔ  Ｓｗｉｔｃｈ）７と、イーサネットＭＡＣ（Ｅｔｈｅｒｎｅｔ  ＭＡＣ）８と、タイマ９とを備えている。
【００５３】
イーサネットＰＨＹ回路６＿１は、ネットワーク線路４＿１とイーサネットスイッチ７との間に接続されたインタフェース回路であり、イーサネットＰＨＹ回路６＿２は、ネットワーク線路４＿２とイーサネットスイッチ７との間に接続されたインタフェース回路である。イーサネットスイッチ７は、イーサネットＰＨＹ回路６＿１とイーサネットＭＡＣ８との間、イーサネットＰＨＹ回路６＿２とイーサネットＭＡＣ８との間またはイーサネットＰＨＹ回路６＿１と６＿２との間を選択的に接続するスイッチ回路である。イーサネットＭＡＣ８には、半導体装置２＿１を特定する識別情報が、特に制限されないがスケジュール装置１０（ＩＤ１）から供給される。ここで、符号ＩＤ１は、半導体装置２＿１を特定する識別情報（ＩＤ）を示している。
【００５４】
イーサネットＭＡＣ８には、イーサネットスイッチ７を介してイーサネットＰＨＹ回路６＿１および６＿２からデータが供給され、供給されたデータに識別情報（ＩＤ１）と一致する識別情報が含まれている場合、供給されたデータをスケジュール装置１０（ＩＤ）に供給する。また、供給されたデータに含まれる識別情報が、識別情報（ＩＤ１）と不一致の場合、イーサネットスイッチ７によって、イーサネットＰＨＹ回路６＿１と６＿２間を接続する。これにより、ネットワーク線路４＿１または４＿２を介して半導体装置２＿１に供給されたデータが、識別情報（ＩＤ１）と一致する識別情報を備えていた場合、供給されたデータは、スケジュール装置１０（ＩＤ１）に供給される。一方、供給されたデータに含まれる識別情報が識別情報（ＩＤ１）と不一致の場合、ネットワーク線路４＿１から供給されたデータは、ネットワーク線路４＿２へ送信され、ネットワーク線路４＿２から供給されたデータは、ネットワーク線路４＿１へ送信されることになる。
【００５５】
また、イーサネットＭＡＣ８は、スケジュール装置１０（ＩＤ１）からのデータを、ネットワーク線路４＿１または４＿２に送信する。この場合、特に制限されないが、スケジュール装置１０（ＩＤ１）からは、識別情報（ＩＤ１）が付加されたデータが供給される。イーサネットＭＡＣ８は、データ送信装置３に向けてデータを送信する場合、送信するデータがイーサネットＰＨＹ回路６＿１に供給されるように、イーサネットスイッチ７を制御し、半導体装置２＿２または２＿３に向けてデータを送信する場合、送信するデータがイーサネットＰＨＹ回路６＿２に供給されるように、イーサネットスイッチ７を制御する。
【００５６】
さらに、イーサネットＭＡＣ８は、マスタとして機能するＤＭＡコントローラを備えている。ネットワーク線路４＿１または４＿２からのデータをスケジュール装置１０（ＩＤ１）へ送信する場合およびデータをネットワーク線路４＿１または４＿２へ送信する場合、内蔵のＤＭＡコントローラによって、データの転送を行う。半導体装置２＿１は、マスタとして２つのプロセッサＣＰＵ１、ＣＰＵ２と、上記したＤＭＡコントローラとを備えていることになる。以下の説明において、マスタを区別する場合、プロセッサＣＰＵ１およびＣＰＵ２は、第１マスタと称し、ＤＭＡコントローラは、第２マスタと称する。
【００５７】
タイマ９は、イーサネットＭＡＣ８に接続され、半導体装置２＿１〜２＿３およびデータ送信装置３との間で時刻が同一となるように制御する回路である。半導体装置２＿１〜２＿３およびデータ送信装置３間で同期した時刻情報が、タイマ９からスケジュール装置１０（ＩＤ１）に供給され、半導体装置２＿１〜２＿３のそれぞれにおけるスケジュール装置間で時刻が同一となっている。
【００５８】
スケジュール装置１０（ＩＤ１）は、タスク入出力データ制御回路１１およびタスク入出力データ制御レジスタ１２を備える。スケジュール制御回路１０（ＩＤ１）は、イーサネットＭＡＣ８、プロセッサＣＰＵ１、ＣＰＵ２、アドレス変換回路１３およびモニタ回路１５に接続されている。スケジュール制御回路１０（ＩＤ１）は、プロセッサＣＰＵ１およびＣＰＵ２にタスクを割り当て、プロセッサＣＰＵ１、ＣＰＵ２が割り当てられたタスクを実行するように制御する。また、スケジュール制御回路１０（ＩＤ１）は、イーサネットＭＡＣ８内のＤＭＡコントローラによるデータの転送を制御する。入出力データ制御回路１１およびタスク入出力データ制御レジスタ１２は後で説明するので、ここでは説明しない。
【００５９】
アドレス変換回路１３は、プロセッサＣＰＵ１、ＣＰＵ２およびタスク入出力データ制御回路１１からのアドレス信号Ａｄ＿１、Ａｄ＿２、Ａｄ＿Ｄを、スケジュール装置１０（ＩＤ１）からの変換情報ＣＮＶに基づいて変換し、変換後アドレス信号Ａｄｄ＿１、Ａｄｄ＿２、Ａｄｄ＿Ｄをバススイッチ１４へ出力する。
【００６０】
バススイッチ１４は、３マスタ／８スレーブのバススイッチである。バススイッチ１４は、３つのマスタと８つのスレーブとの間の接続を、スケジュール装置１０（ＩＤ１）からのバス制御情報ＢＳＣに従って変更する。ここでの３つのマスタは、プロセッサＣＰＵ１、ＣＰＵ２およびイーサネットＭＡＣ８内のＤＭＡコントローラが該当し、８つのスレーブは、メモリ１７および１８を構成する８つのメモリバンクウェイが該当する。
【００６１】
メモリ１７は、４つのメモリバンクウェイ１７＿０〜１７＿３によって構成され、メモリ１８も、４つのメモリバンクウェイ１８＿０〜１８＿３によって構成されている。すなわち、メモリ１７のアドレス領域が、４つのアドレス領域に分割され、分割された４つのアドレス領域が、メモリバンクウェイ１７＿０〜１７＿３となっている。メモリ１８についても同様に、４つのアドレス領域に分割され、分割されたアドレス領域が、メモリバンクウェイ１８＿０〜１８＿３となっている。以降、メモリバンクウェイは、バンクウェイとも称する。
【００６２】
バススイッチ１４は、バス制御情報ＢＳＣに従って、例えばプロセッサＣＰＵ１からの変換後アドレス信号Ａｄｄ＿１を、バンクウェイ１８＿０に供給し、プロセッサＣＰＵ２からの変換後アドレス信号Ａｄｄ＿２を、バンクウェイ１８＿１に供給し、ＤＭＡコントローラからの変換後アドレス信号Ａｄｄ＿Ｄを、バンクウェイ１７＿０に供給する。これらのバンクウェイ１８＿０、１８＿１および１７＿０に対して、プロセッサＣＰＵ１、ＣＰＵ２およびＤＭＡコントローラから読み出しまたは書き込みが行われる。スケジュール装置１０（ＩＤ１）は、バス制御情報ＢＳＣによって、マスタに対応するスレーブを任意に切り替えることが可能となっている。
【００６３】
モニタ回路１５は、バススイッチ１４からバンクウェイ１７＿０〜１７＿３および１８＿０〜１８＿３に供給される変換後アドレス信号Ａｄｄ＿１、Ａｄｄ＿２、Ａｄｄ＿Ｄを監視し、監視結果をスケジュール装置１０（ＩＤ１）に供給する。本明細書では、変換後アドレス信号は、特定のアドレスを指定するためのアドレス信号と、アドレス信号により特定されたアドレスに対して読み出しまたは書き込みを指示する制御信号（転送制御情報）の両方を意味している。
【００６４】
半導体装置２＿２は、スケジュール装置１０（ＩＤ２）が、半導体装置２＿２を特定する識別情報として、半導体装置２＿１とは異なる識別情報（ＩＤ２）を備えている。これにより、半導体装置２＿２における通信装置５＿２は、識別情報（ＩＤ２）を含むデータを、ネットワーク線路からスケジュール装置１０（ＩＤ２）へ出力する。また、通信装置１０（ＩＤ２）がネットワーク線路へ送信するデータには、識別情報（ＩＤ２）が含まれることになる。同様に、半導体装置２＿３は、スケジュール装置１０（ＩＤ３）が、半導体装置２＿３を特定する識別情報として、半導体装置２＿１、２＿２とは異なる識別情報（ＩＤ３）を備えている。これにより、半導体装置２＿３における通信装置５＿３は、ネットワーク線路から識別情報（ＩＤ３）を含むデータを、スケジュール装置１０（ＩＤ３）へ出力する。また、通信装置１０（ＩＤ３）がネットワーク線路へ送信するデータには、識別情報（ＩＤ３）が含まれることになる。
【００６５】
＜＜動作概要＞＞
比較例で説明したのと同様に、送信ブロック０〜４に対して演算を行う場合を例にして、実施の形態１に係わる半導体装置２＿１〜２＿３およびネットワークシステム１の動作の概要を説明する。図２は、実施の形態１に係わる半導体装置およびネットワークシステムにおけるデータの流れを示す図である。また、図３および図４は、実施の形態１に係わる半導体装置の動作を示すフローチャート図である。ここで、図３（Ａ）、（Ｂ）および（Ｃ）は、半導体装置２＿１および２＿３の動作を示し、図４（Ａ）、（Ｂ）および（Ｃ）は、半導体装置２＿２および２＿３の動作を示している。
【００６６】
データ送信装置３は、図２に示しているように、通信装置３＿１と送信バッファ３＿２とを備えている。送信バッファ３＿２には、図６２で示した送信バッファ４５８と同様に、送信ブロック０〜４が格納されており、通信装置３＿１によって、ネットワーク線路４＿１へ送信されるものとする。
【００６７】
半導体装置２＿１、２＿２の両方が、データ送信装置３から送信された送信ブロック０〜４を受信する。半導体装置２＿１、２＿２においては、メモリ１７が受信バッファとして用いられ、メモリ１８が送信バッファあるいは演算バッファとして用いられる。半導体装置２＿１においては、受信された送信ブロック０〜４を、通信装置５＿１に内蔵されているＤＭＡコントローラが、メモリ１７に受信ブロック０〜４として転送し、受信バッファ１７に格納する。同様に、半導体装置２＿２においても、受信された送信ブロック０〜４を、通信装置５＿１に内蔵されているＤＭＡコントローラが、メモリ１７に受信ブロック０〜４として転送し、受信バッファ１７に格納する。
【００６８】
半導体装置２＿１において、スケジュール装置１０（ＩＤ１）は、受信ブロック０と１の間でフィルタ演算Ａを実行するタスク（フィルタ演算Ａ用タスク）をプロセッサＣＰＵ１に割り当て、受信ブロック２と３との間でフィルタ演算Ａを実行するフィルタ演算Ａ用タスクをプロセッサＣＰＵ２に割り当てるように、プロセッサＣＰＵ１、ＣＰＵ２を制御する。これに対して、半導体装置２＿２において、スケジュール装置１０（ＩＤ２）は、受信ブロック１と２の間でフィルタ演算Ｂを実行するタスク（フィルタ演算Ｂ用タスク）をプロセッサＣＰＵ１に割り当て、受信ブロック３と４との間でフィルタ演算Ｂを実行するフィルタ演算Ｂ用タスクをプロセッサＣＰＵ２に割り当てるように、プロセッサＣＰＵ１、ＣＰＵ２を制御する。
【００６９】
半導体装置２＿１および２＿２において、モニタ回路１５によって、メモリ１７への受信ブロックの書き込みが監視される。演算の動作を開始（図３（Ａ）および図４（Ａ）のステップＳ１＿０＿０およびＳ２＿０＿０）し、フレームを構成する受信ブロック０〜４がメモリ１７に書き込まれ、フレーム受信終了イベントが発生するまで、半導体装置２＿１および２＿２は、ステップＳ１＿０＿１およびＳ２＿０＿１において待機する。フレーム受信終了イベントが発生すると、半導体装置２＿１および２＿２において、ステップＳ１＿０＿２（図３（Ａ））およびＳ２＿０＿２（図４（Ａ））が実行される。すなわち半導体装置２＿１、２＿２においてタスクが起動させられる。
【００７０】
ステップＳ１＿０＿２において、半導体装置２＿１におけるプロセッサＣＰＵ１、ＣＰＵ２は、連続する２つの受信ブロックの受信データを入力データとして、フィルタ演算Ａを実行し、フィルタ演算結果を、送信バッファであるメモリ１８に送信ブロックｆ０１、ｆ０２として書き込む。同様に、ステップＳ２＿０＿２において、半導体装置２＿２におけるプロセッサＣＰＵ１、ＣＰＵ２は、連続する２つの受信ブロックの受信データを入力データとして、フィルタ演算Ｂを実行し、フィルタ演算結果を、送信バッファであるメモリ１８に送信ブロックｆ１２、ｆ３４として書き込む。
【００７１】
半導体装置２＿１、２＿２において、スケジュール装置１０（ＩＤ１）、１０（ＩＤ２）は、図３（Ｂ）および図４（Ｂ）のステップＳ１＿１＿０およびＳ２＿１＿０において、送信バッファであるメモリ１８に格納されているデータの送信を開始する。すなわち、スケジュール装置１０（ＩＤ１）、１０（ＩＤ２）は、モニタ回路１５によって、プロセッサＣＰＵ１、ＣＰＵ２によるメモリ１８への書き込みのアクセスを監視する。監視により、メモリ１８に格納されている未送信データのサイズが、所定の閾値（データ量）に達したか否かを判定する。ここでは、所定の閾値は、１フレーム分のデータのサイズとなっている。メモリ１８に格納されている未送信データのサイズが、１フレーム分に到達すると、ステップＳ１＿１＿１、Ｓ２＿１＿１から、ステップＳ１＿１＿２（図３（Ｂ））、Ｓ２＿１＿２（図４（Ｂ））へ移行する。
【００７２】
半導体装置２＿１では、ステップＳ１＿１＿２において、通信装置５＿１に内蔵されたＤＭＡコントローラが、メモリ１８に格納されているフィルタ演算Ａの演算結果を、半導体装置２＿３へ送信する。同様に、半導体装置２＿２では、ステップＳ２＿１＿２において、通信装置５＿２に内蔵されたＤＭＡコントローラが、メモリ１８に格納されているフィルタ演算Ｂの演算結果を、半導体装置２＿３へ送信する。すなわち、半導体装置２＿１、２＿２のそれぞれにおいて、未送信データが所定の閾値に到達すると、未送信データは自動的に半導体装置２＿３へ送信される。この場合、半導体装置２＿１および２＿２は、送信するデータに、半導体装置２＿３を特定する識別情報（ＩＤ３）と、送信元である半導体装置２＿１、２＿２の識別情報（ＩＤ１、ＩＤ２）含めて、送信する。
【００７３】
半導体装置２＿３では、スケジュール装置１０（ＩＤ３）が、プロセッサＣＰＵ１、ＣＰＵ２に対して、フィルタ演算Ａ、Ｂの演算結果を入力データとして出力演算Ａおよび出力演算Ｂを行うタスク（出力演算Ａ用タスク、出力演算Ｂ用タスク）を割り当てている。
【００７４】
半導体装置２＿３においては、ステップＳ３＿１＿０（図３（Ｃ））、Ｓ３＿２＿０（図４（Ｃ））において、処理を開始する。すなわち、スケジュール装置１０（ＩＤ３）は、モニタ回路１５を用いて、受信バッファを構成するメモリ１７に対するアクセスを監視する。半導体装置２＿１および２＿２から半導体装置２＿３へ送信された未送信データが、受信バッファを構成するメモリ１７に受信ブロックｆ０１、ｆ１２、ｆ２３およびｆ３４として格納されるのを、モニタ回路１５によって、スケジュール装置１０（ＩＤ３）は監視する。この監視により、１フレーム分の入力データが格納されるまで、半導体装置２＿３は、ステップＳ３＿１＿１（図３（Ｃ））、Ｓ３＿２＿１（図４（Ｃ））で待機する。
【００７５】
メモリ１７に１フレーム分の入力データが格納されると、半導体装置２＿３において、スケジュール装置１０（ＩＤ３）は、プロセッサＣＰＵ１、ＣＰＵ２に対して、出力演算Ａ用タスクおよび出力演算Ｂ用タスクを起動させる。すなわち、スケジュール装置１０（ＩＤ３）は、プロセッサＣＰＵ１に対して、半導体装置２＿１から受信した受信ブロックｆ０１、ｆ１２に対して出力演算Ａを実行させる。また、スケジュール装置１０（ＩＤ３）は、プロセッサＣＰＵ２に対して、半導体装置２＿２から受信した受信ブロックｆ２３、ｆ３４に対して出力演算Ｂを実行させる。出力演算ＡおよびＢの演算結果ｆｇ０１、ｆｇ２３、ｆｇ１２およびｆｇ３４は、プロセッサＣＰＵ１、ＣＰＵ２によって、送信バッファを構成するメモリ１８に書き込まれ、出力装置へ供給される。特に制限されないが、出力装置は、供給された演算結果を、データ送信装置３へ送信する。
【００７６】
半導体装置２＿３においては、図３（Ｃ）および図４（Ｃ）に示すように、ステップＳ３＿１＿３、Ｓ３＿２＿３において、ＳＹＮＣ０イベントの発生までに、実行すべき出力演算Ａ、Ｂが終了しているか否かが判定され、出力演算Ａ、Ｂが終了していない場合には、ステップＳ３＿１＿１、Ｓ３＿２＿１へ戻り、ステップが繰り返される。実行すべき出力演算Ａ、Ｂが終わっている場合、ステップＳ３＿１＿４、Ｓ３＿２＿４において、出力装置が有効化され、出力データが有効とされる。
【００７７】
このように、実施の形態１においては、半導体装置２＿１および２＿２において、並列的に、フィルタ演算ＡおよびＢが実行され、フィルタ演算結果が、所定の閾値を超えると、半導体装置２＿３の識別情報を含めて、自動的に送信される。半導体装置２＿３においては、半導体装置２＿１、２＿２からのフィルタ演算結果が、出力演算を実行するのに必要なサイズだけ受信バッファに格納されると、優先的に出力演算Ａ用タスクおよび出力演算Ｂ用タスクが起動される。
【００７８】
すなわち、１つの半導体装置が備えるプロセッサの個数を超えるタスクが、複数の半導体装置に分散して割り当てられる。その結果、プロセッサの個数を超えるタスクを並列的に実行することが可能となり、パフォーマンス低下を抑制することが可能である。
【００７９】
図５は、実施の形態１に係わるネットワークシステムのタイミング図である。図５は、比較例１で説明した図６４と類似している。図５では、送信バッファを構成するメモリ１８が、図６４に示した演算バッファに該当する。実施の形態１においては、図５に示すように、期間Ｔ１およびＴ２におけるフィルタ演算に係わる動作が、半導体装置２＿１で実行される。また、期間Ｔ４およびＴ５におけるフィルタ演算に係わる動作が、半導体装置２＿２に移行され、半導体装置２＿２で実行されることになる。さらに、期間Ｔ３およびＴ６における出力演算に係わる動作が、半導体装置２＿３に移行され、半導体装置２＿３で実行されることになる。
【００８０】
比較例では、期間Ｔ４およびＴ５で実行されていたフィルタ演算に係わる動作が、半導体装置２＿２に移行されるため、半導体装置２＿２では、期間Ｔ１およびＴ２において、このフィルタ演算に係わる動作を実行することが可能となる。また、比較例では、期間Ｔ３およびＴ６において実行されていた出力演算に係わる動作が、半導体装置２＿３に移行されるため、半導体装置２＿３は、期間Ｔ１およびＴ２の後で、移行された出力演算に係わる動作を実行することが可能となる。これにより、タイミング制約１を満足することが可能となる。
【００８１】
＜具体的な構成＞
＜＜メモリの割り当て＞＞
先ず、半導体装置２＿１〜２＿３におけるメモリ１７および１８の割り当てを説明する。図６および図７は、実施の形態１に係わる半導体装置のメモリの割り当てを説明する図である。図６は、半導体装置２＿１および２＿２のメモリ１７および１８の割り当てを示し、図７は、半導体装置２＿３のメモリ１７および１８の割り当てを示している。
【００８２】
半導体装置２＿１および２＿２において、メモリ１７は、図６に示すように、論理アドレス０００００Ｈ（Ｈは、１６進表記を示している。以下、同様）〜０ＦＦＦＦＨのアドレス領域に割り当てられている。このアドレス領域に、バンクウェイ１７＿０〜１７＿３が、それぞれ１ＫＢのアドレス領域を有するように割り当てられる。一方、半導体装置２＿１および２＿２のメモリ１８は、論理アドレス１００００Ｈ〜１ＦＦＦＦＨのアドレス領域に割り当てられている。このアドレス領域に、バンクウェイ１８＿０〜１８＿３が、それぞれ０．２５ＫＢのアドレス領域を有するように割り当てられる。
【００８３】
また、半導体装置２＿３においては、図７に示すように、メモリ１７は、論理アドレス０００００Ｈ〜０ＦＦＦＦＨのアドレス領域に割り当てられており、このアドレス領域に、バンクウェイ１７＿０〜１７＿３が、それぞれ０．２５ＫＢのアドレス領域を有するように割り当てられる。一方、半導体装置２＿３のメモリ１８は、論理アドレス１００００Ｈ〜１ＦＦＦＦＨのアドレス領域に割り当てられており、このアドレス領域に、バンクウェイ１８＿０〜１８＿３が、それぞれ１ＫＢのアドレス領域を有するように割り当てられる。
【００８４】
すなわち、半導体装置２＿１および２＿２において、受信バッファを構成するメモリ１７においては、１ＫＢ単位でバンクウェイが切り替えられ、送信バッファ（演算バッファ）を構成するメモリ１８においては、０．２５ＫＢ単位でバンクウェイが切り替えられる。一方、半導体装置２＿３では、受信バッファを構成するメモリ１７においては、０．２５ＫＢ単位でバンクウェイが切り替えられ、送信バッファ（演算バッファ）を構成するメモリ１８においては、１ＫＢ単位でバンクウェイが切り替えられる。
【００８５】
＜＜半導体装置２＿１、２＿２のメモリアドレス領域＞＞
図８〜図１１は、実施の形態１に係わる半導体装置のメモリアドレス領域を説明するための図である。ここで、図８には、フィルタ演算Ａ用タスクに対応した半導体装置２＿１におけるメモリ１７のアドレス領域が示され、図９には、フィルタ演算Ａ用タスクに対応した半導体装置２＿１におけるメモリ１８のアドレス領域が示されている。また、図１０には、フィルタ演算Ｂ用タスクに対応した半導体装置２＿２におけるメモリ１７のアドレス領域が示され、図１１には、フィルタ演算Ｂ用タスクに対応した半導体装置２＿２におけるメモリ１８のアドレス領域が示されている。
【００８６】
半導体装置２＿１は、データ通信装置３からデータを受信すると、通信装置５＿１は、受信したデータを、図８に示すように、半導体装置２＿１のメモリ１７を構成するバンクウェイ１７＿０〜１７＿３のブロック０〜４に書き込む（ライト）。半導体装置２＿１のプロセッサＣＰＵ１は、ブロック０およびブロック１に格納されているデータを読み出し（リード）、プロセッサＣＰＵ２は、ブロック２および３に格納されているデータを読み出す。プロセッサＣＰＵ１は、ブロック０およびブロック１から読み出したデータ間でフィルタ演算Ａを実行する。同様に、プロセッサＣＰＵ２は、ブロック２およびブロック３から読み出したデータ間でフィルタ演算Ａを実行する。なお、ブロック４に格納されているデータは、次のフィルタ演算Ａにおいて演算されるデータである。
【００８７】
半導体装置２＿１のプロセッサＣＰＵ１は、フィルタ演算Ａにより求めた演算結果を、図９に示されているように、バンクウェイ１８＿０、１８＿１のブロック０〜３に書き込む（ライト）。一方、プロセッサＣＰＵ２は、フィルタ演算Ａにより求めた演算結果を、図９に示されているように、バンクウェイ１８＿２、１８＿３のブロック４〜７に書き込む。なお、半導体装置２＿１において、メモリ１７のブロックのサイズは、１ＫＢであり、メモリ１８のブロックのサイズは、０．２５ＫＢである。
【００８８】
図１０は図８に類似し、図１１は図９に類似している。半導体装置２＿２における通信装置５＿２は受信したデータを、図１０に示すように、メモリ１７のバンクウェイ１７＿０〜１７＿３におけるブロック０〜ブロック４に書き込む。半導体装置２＿２のプロセッサＣＰＵ１は、ブロック１および２からデータを読み出し、フィルタ演算Ｂを実行する。また、プロセッサＣＰＵ２は、ブロック３および４からデータを読み出し、フィルタ演算Ｂを実行する。ここでも、ブロック０に格納されているデータは、他の演算で用いられるデータを示している。
【００８９】
半導体装置２＿２のプロセッサＣＰＵ１は、フィルタ演算Ｂにより求めた演算結果を、図１１に示されているように、バンクウェイ１８＿０、１８＿１のブロック０〜３に書き込む（ライト）。一方、プロセッサＣＰＵ２は、フィルタ演算Ｂにより求めた演算結果を、図１１に示しされているように、バンクウェイ１８＿２、１８＿３のブロック４〜７に書き込む。なお、半導体装置２＿２においても、メモリ１７のブロックのサイズは、１ＫＢであり、メモリ１８のブロックのサイズは、０．２５ＫＢである。
【００９０】
図８〜図１１において、アドレス領域は物理アドレスで示されている。プロセッサＣＰＵ１、ＣＰＵ２からのアドレス信号は、アドレス変換回路１３によって、論理アドレスに変換される。このときの変換は、図８〜図１１に示されている変換式（例えば、図８では、ブロックｍの論理アドレス＝２０００Ｈ＋４００Ｈ×ｍ）に従って、プロセッサＣＰＵ１，ＣＰＵ２からの物理アドレスは、ブロックを指定する論理アドレスに変換される。
【００９１】
＜＜半導体装置２＿１、２＿２のタスク入出力データ制御レジスタ＞＞
図１２〜図１５は、実施の形態１に係わるタスク入出力データ制御レジスタの構成を示す図である。タスク入出力データ制御レジスタ１２は、複数のレジスタを備えている。すなわち、タスク入出力データ制御レジスタ１２は、転送モニタ領域０設定レジスタ：７００＿０、転送モニタ領域１設定レジスタ：７００＿１、タスク入出力データ転送制御レジスタ０：７０１＿０、タスク入出力データ領域０設定レジスタ：７０２＿０、タスク入出力データ領域１設定レジスタ：７０２＿１およびタスク起動条件設定レジスタ０：７０３＿０（名称と符号との間の符号：は区切りを示している）を備えている。ここで、図１２および図１３は、半導体装置２＿１に設けられたタスク入出力データ制御レジスタ１２を示しており、＜＜動作概要＞＞で説明した動作を行うように設定された状態が示されている。また、図１４および図１５は、半導体装置２＿２に設けられたタスク入出力データ制御レジスタ１２を示しており、＜＜動作概要＞＞で説明した動作を行うように設定された状態が示されている。
【００９２】
図１２および図１３に示したタスク入出力データ制御レジスタ１２を例にして、タスク入出力データ制御レジスタ１２を構成する各レジスタについて説明する。
【００９３】
転送モニタ領域０設定レジスタ：７００＿０は、受信バッファを構成するメモリ１７を対象メモリとし、対象メモリへのアクセスが検出されたとき、または／および対象メモリをタスク入出力データ領域として使用するタスクを起動するときのブロック割り当て順序の制約を設定するレジスタである。また、転送モニタ領域１設定レジスタ：７００＿１は、送信メモリを構成するメモリ１８を対象メモリとし、対象メモリへのアクセスが検出されたとき、または／および対象メモリをタスク入出力データ領域として使用するタスクを起動するときのブロック割り当て順序の制約を設定するレジスタである。転送モニタ領域０設定レジスタ：７００＿０および転送モニタ領域１設定レジスタ：７００＿１によって、対象メモリへのアクセスが検出されたとき、または／および対象メモリをタスク入出力データ領域として使用するタスクを起動するとき、それぞれの「対象領域のブロック割り当て制約」に記載したようにブロックの割り当てが行われる。すなわち、メモリ１７では、バンクウェイ１７＿０から順番にブロック単位でスレーブを切り替えながら、ブロック０から順番にブロックが割り当てられる。すなわち、バンクウェイ１７＿０から順番にスレーブとして選択し、受信ブロック０から順番に受信ブロックを格納するように設定される。一方、メモリ１８は、「対象領域のブロック割り当て制約」に記載したように、メモリ１７とは異なるように割り当ての設定が行われる。
【００９４】
転送モニタ領域０設定レジスタ：７００＿０では、対象メモリであるメモリ１７内のブロック未割り当て領域への初回書き込み（ライト）時にブロック割り当てが自動的に行われるように設定されている。一方、転送モニタ領域１設定レジスタ：７００＿１では、自動的なブロック割り当ては設定されていない。また、転送モニタ領域０設定レジスタ：７００＿０の対象領域の１ブロック当たりのバイト数は１ＫＢ（１０２４バイト）に設定され、転送モニタ領域１設定レジスタ：７００＿１の対象領域の１ブロック当たりのバイト数は０．２５ＫＢ（２５６バイト）に設定されている。また、転送モニタ領域０設定レジスタ：７００＿０および転送モニタ領域１設定レジスタ：７００＿１には、対象領域の１フラグ当たりのバイト数が、１であることが設定されている。フラグについては、後で図３５〜図５６等で示す。
【００９５】
タスク入出力データ転送制御レジスタ０：７０１＿０には、読み出し（リード）検出領域（転送先）、リードタスク（転送先）、ライト検出領域（転送元）、ライトタスク（転送元）、１フレーム当たりの最大転送バイト数、転送開始トリガ１および転送開始トリガ２が設定される。ここで、リード検出領域（転送先）には、転送先の半導体装置２＿３の転送モニタ領域０が設定される。すなわち、リード検出領域（転送先）には、転送先の半導体装置２＿３を特定する識別情報と、転送モニタ領域０のアドレス領域を特定するアドレス情報とが設定される。また、リードタスク（転送先）には、半導体装置２＿３で実行させるタスクである出力演算Ａ用タスクが設定される。
【００９６】
また、ライト検出領域（転送元）には、当該半導体装置２＿１における転送モニタ領域１が設定される。すなわち、ライト検出領域（転送元）には、半導体装置２＿１を特定する識別情報と転送モニタ領域１のアドレス領域を特定するアドレス情報とが設定される。ライトタスク（転送元）には、当該半導体装置２＿１において実行されるタスクであるフィルタ演算Ａ用タスクが設定される。また、１フレーム当たりの最大転送バイト数は、転送バイト数５１２が設定される。転送開始トリガ１には、タスク入出力データが、１フレーム当たりの最大転送バイト数以上になった時が設定され、転送開始トリガ２には、ライトタスクが終了または一時停止状態に入った時が設定される。転送開始トリガ１は、当該半導体装置２＿１において、転送モニタ領域１、すなわちメモリ１８におけるライト転送検出フラグとリード転送検出フラグとの差の合計が、最大転送バイト数５１２以上になった時に、転送を開始させることを意味している。
【００９７】
タスク入出力データ領域０設定レジスタ：７０２＿０およびタスク入出力データ領域１設定レジスタ：７０２＿１には、入出力を行うタスク、入力／出力（入力または出力）の区別、入出力データ領域、タスク起動時の自動割り当てブロック番号の初期値およびタスク起動時の自動割り当てブロック数が設定される。半導体装置２＿１において起動されるタスクは、フィルタ演算Ａ用タスクであるため、入出力を行うタスクとして、フィルタ演算Ａ用タスクが設定されている。タスク入出力データ領域０設定レジスタ：７０２＿０の入出力データ領域には、転送モニタ領域０が設定され、タスク入出力データ領域１設定レジスタ：７０２＿１の入出力データ領域には、転送モニタ領域１が設定される。転送モニタ領域０は、対象メモリがメモリ１７であるため、出力データ領域０設定レジスタ：７０２＿０の入力／出力の区別としては入力が設定されている。一方、転送モニタ領域１は、対象メモリがメモリ１８であるため、出力データ領域１設定レジスタ：７０２＿１の入力／出力の区別としては出力が設定されている。
【００９８】
また、タスク入出力データ領域０設定レジスタ：７０２＿０およびタスク入出力データ領域１設定レジスタ：７０２＿１のタスク起動時の自動割り当てブロック番号の初期値としては、０が設定され、タスク起動時の自動割り当てブロック数としては、２と４が設定されている。
【００９９】
タスク起動条件設定レジスタ０：７０３＿０には、起動対象タスク、起動関数名、並列起動数、起動関数への引数、タスク起動トリガおよびタスク一時停止トリガが設定される。半導体装置２＿１では、２つのプロセッサＣＰＵ１、ＣＰＵ２を用いて、フィルタ演算Ａ用タスクを実行するため、起動対象タスクは、フィルタ演算Ａ用タスクが設定され、並列起動数は２が設定される。また、起動関数名はｆとされ、起動関数への引数は、同図に示すように設定される。半導体装置２＿１では、フレーム受信終了イベントの発生に応答して、タスクを起動するため、タスク起動トリガとしては、フレーム受信終了イベント発生時が設定される。フィルタ演算Ａ用タスクを一時停止させるトリガは特に定義していないため、タスク一時停止トリガは設定なしとなっている。
【０１００】
図１４および図１５に示した半導体装置２＿２のタスク入出力データ制御レジスタ１２の構成は、図１２および図１３と同じである。設定としては、図１４および図１５に示したタスク入出力データ制御レジスタ１２においては、該当半導体装置が、半導体装置２＿２であるため、タスク入出力データ転送制御レジスタ０：７０１＿０に、半導体装置２＿１の代わりに半導体装置２＿２（識別情報ＩＤ２）が設定されていることである。また、図２に示したように、半導体装置２＿２では、受信ブロック１から順番にフィルタ演算Ｂ用タスクを実行するため、タスク入出力データ領域０設定レジスタ：７０２＿０において、タスク起動時の自動割り当てブロック番号の初期値は１が設定されている。さらに、半導体装置２＿２のタスク入出力データ制御レジスタ１２には、タスクとしてフィルタ演算Ａ用タスクではなく、フィルタ演算Ｂ用タスクが設定されている。
【０１０１】
＜＜半導体装置２＿１、２＿２のレジスタ設定動作＞＞
半導体装置２＿１、２＿２においては、ソフトウェアを実行することにより、スケジュール装置１０（ＩＤ１）、１０（ＩＤ２）内のレジスタ等を設定する。図１６および図１７は、実施の形態１に係わる半導体装置における設定の動作を示すフローチャート図である。ここで、図１６は、半導体装置２＿１における動作を示し、図１７は、半導体装置２＿２における動作を示している。
【０１０２】
図１６のステップＳ９０において、スケジュール装置１０（ＩＤ１）の設定が開始する。半導体装置２＿１では、フィルタ演算Ａ用タスクを実行する。そのため、ステップＳ９１において、半導体装置２＿１内のスケジュール装置１０（ＩＤ１）において、フィルタ演算Ａ用タスクの制御に係わるレジスタの設定が行われる。このステップＳ９０において、半導体装置２＿１内のタスク入出力データ制御レジスタ１２に対して、図１２および図１３に示したように設定を行う。次に、ステップＳ９２において、モニタ回路１５による転送モニタ領域０、１（メモリ１７、１８）の監視を有効化する。ステップＳ９３において、図１２に示したタスク入出力データ転送制御レジスタ０に設定された内容に従って転送制御が実行されるように、転送制御の有効化が行われる。さらに、ステップＳ９４において、フレーム受信終了イベントによるフィルタ演算Ａ用タスクの起動を有効化する。その後、ステップＳ９５で、半導体装置２＿１におけるスケジュール装置１０（ＩＤ１）の設定を終了する。
【０１０３】
半導体装置２＿２についても、半導体装置２＿１と同様なステップが、図１７に示したステップＳ１００〜Ｓ１０５として実行される。図１６と図１７との相異点は、図１７では、ステップＳ１０１において、フィルタ演算Ｂ用タスクに係わるレジスタの設定か行われ、このときに図１４および図１５に示したように、タスク入出力データ制御レジスタ１２が設定されることである。
【０１０４】
＜＜半導体装置２＿１、２＿２におけるタスク起動＞＞
次に、半導体装置２＿１、２＿２におけるタスク起動の動作を説明する。半導体装置２＿１においては、フィルタ演算Ａ用タスクが起動され、半導体装置２＿２においては、フィルタ演算Ｂ用タスクが起動される。フィルタ演算Ａ用タスクおよびフィルタ演算Ｂ用タスクが起動され、実行されることにより、半導体装置２＿１、２＿２における送信バッファ（演算バッファ）にフィルタ演算結果が格納されることになる。
【０１０５】
図１８および図１９は、実施の形態１に係わる半導体装置におけるタスク起動の動作を示すフローチャート図である。ここで、図１８は、半導体装置２＿１におけるタスク起動の動作を示し、図１９は、半導体装置２＿２におけるタスク起動の動作を示している。半導体装置２＿１、２＿２が備えているタスク入出力データ制御回路１１が、図１８および図１９に示す制御を実施する。図１８と図１９は類似しているので、先ず図１８を説明し、その後で図１８と図１９の相異点を説明する。
【０１０６】
図１８において、ステップＳ１１０でタスク起動の動作が開始する。次にステップＳ１１１において、フィルタ演算Ａ用タスクの起動が有効化されるまで待機する。フィルタ演算Ａ用タスクの起動が有効化されると、ステップＳ１１２が実行される。ステップＳ１１２においては、受信ブロックの番号を示す変数ｍと、送信ブロックの番号を示す変数ｎを０に設定する。その後、ステップＳ１１３において、フレーム受信終了イベントの発生を待機する。このフレーム受信終了イベントの発生が、フィルタ演算Ａ用タスクを起動する起動トリガとなる。
【０１０７】
起動トリガが検出されると、次にステップＳ１１４が実行される。ステップＳ１１４では、並列起動数を示す変数ｃが０に設定される。その後、ステップＳ１１５が実行される。
【０１０８】
ステップＳ１１５においては、フィルタ演算Ａ用タスクに対するタスク入力データ領域として、ブロックｍから２ブロック分の論理アドレスを割り当てる。また、フィルタ演算Ａ用タスクに対するタスク出力データ領域として、ブロックｎから４ブロック分の論理アドレスを割り当てる。これにより、フィルタ演算Ａ用タスクが起動されると、メモリ１７においてブロックｍから２ブロック分が、フィルタ演算Ａ用タスクの入力データとなり、フィルタ演算Ａの演算結果は、メモリ１８においてブロックｎから４ブロック分に書き込まれることになる。また、それぞれのアドレス領域、すなわちタスク入力データ領域およびタスク出力データ領域の先頭アドレスを、フィルタ演算Ａ用タスクの起動関数ｆへの引数としてセットする。なお、上記した２ブロックおよび４ブロックは、タスク起動時の自動割り当てブロック数であり、図１３に示したタスク入出力データ領域０設定レジスタ７０２＿０およびタスク入出力データ領域１設定レジスタ７０２＿１に設定されているブロック数である。
【０１０９】
ステップＳ１１５において、起動関数ｆへの引数のセットが終了すると、ステップＳ１１６が実行される。このステップＳ１１６において、フィルタ演算Ａ用タスクが起動される。次に、ステップＳ１１７において、変数ｃ、ｍおよびｎの更新が行われる。すなわち、ｃ＝ｃ＋１、ｍ＝ｍ＋２、ｎ＝ｎ＋４の演算が行われる。ここで、２および４は、上記したブロック数である。
【０１１０】
次に、ステップＳ１１８が実行される。ステップＳ１１８では、変数ｃの値に基づいて、並列起動数が、２以下か否かの判定が行われる。並列起動数が２以下の場合、ステップＳ１１５に戻り、並列起動数が２を超えるまで、ステップＳ１１５〜Ｓ１１８が繰り返される。一方、並列起動数が、２を超えた場合、次にステップＳ１１３に戻り、ステップＳ１１３でタスク起動トリガの発生を待機する。実施の形態１においては、半導体装置２＿１は２つのプロセッサＣＰＵ１、ＣＰＵ２を備えているため、並列起動数は２まで設定することが可能である。
【０１１１】
以上で、連続した２つの受信ブロック（１ＫＢ）の受信データを用いてフィルタ演算Ａが実行され、フィルタ演算結果は、４つの送信ブロック（０．２５ＫＢ）に書き込まれることになる。
【０１１２】
半導体装置２＿２においても、図１８に示したステップＳ１１０〜Ｓ１１８と類似のステップＳ１２０〜Ｓ１２８（図１９）によって、フィルタ演算Ｂ用タスクが起動される。半導体装置２＿２において実行されるステップＳ１２０〜Ｓ１２８において、ステップＳ１１０〜Ｓ１１８と異なる部分は、対象のタスクがフィルタ演算Ｂ用タスクである点と、ステップＳ１２２で変数ｍに設定する値が０ではなく、１である点である。変数ｍに１を設定するのは、図２に示したように、半導体装置２＿２は、受信ブロック０ではなく、受信ブロック１からフィルタ演算Ｂを実行するためである。
【０１１３】
＜＜タスク出力データの送信（転送）動作＞＞
半導体装置２＿１、２＿２の送信バッファ（演算バッファ）に格納されたフィルタ演算結果は、半導体装置２＿３へ送信（転送）される。次に、半導体装置２＿１、２＿２におけるフィルタ演算結果（タスク出力データ）の送信動作を説明する。図２０および図２１は、実施の形態１に係わる半導体装置における送信動作を示すフローチャート図である。ここで、図２０は、半導体装置２＿１における送信動作を示し、図２１は、半導体装置２＿２における送信動作を示している。図２０および図２１に示す制御は、半導体装置２＿１、２＿２に設けられているタスク入出力データ制御回路１１によって実行される。
【０１１４】
図２０と図２１は、類似しているので、図２０を参照して、半導体装置２＿１における送信動作を説明し、その後で、図２１を用いて半導体装置２＿２における送信動作との相異点を説明する。
【０１１５】
図２０のステップＳ１３０において、送信動作を開始する。次にステップＳ１３１において、図１２に示したタスク入出力データ転送制御レジスタ０：７０１＿０の設定により転送制御が有効になるまで待機する。転送制御が有効になると、ステップＳ１３２において、転送開始トリガ１、転送開始トリガ２の発生を待機する。
【０１１６】
例えば転送開始トリガ１が発生すると、ステップＳ１３３が実行される。ステップＳ１３３において、ライト検出領域（転送元である半導体装置２＿１の転送モニタ領域１）内で未転送のアドレス領域のあるブロックを全て抽出する。ここで、未転送のアドレス領域のあるブロックは、「ｃ．未参照フラグ」＝「ａ．ライトフラグ」−「ｂ．リードフラグ」が０でないアドレスの存在するブロックを意味している。上記した未参照フラグ、ライトフラグおよびリードフラグは、後で図３５〜図５６等で示すが、ライトフラグは、書き込みが行われたアドレスに付され、リードフラグは、読み出しが行われたアドレスに付され、未参照フラグは、書き込みが行われたアドレスであって、読み出しが行われていないアドレスに付される。そのため、ステップＳ１３３では、送信バッファ（演算バッファ）を構成するメモリ１８をモニタ回路１５で監視し、書き込みが行われたアドレスであって、読み出しが行われていないアドレスが存在するブロックを、全て抽出することが行われることになる。
【０１１７】
次に、ステップＳ１３４が実行される。ステップＳ１３４では、Ｓ１３３で抽出したブロック番号のリストを送信順に並び替えたリスト（以下、送信順のブロック番号リストと称する）を作成する。ブロック番号の並び替え方法としては、次に説明する第１〜第４の方法がある。ここでは、それぞれの並び替え方法に対応する優先度評価関数を考え、ステップＳ１３４では、優先度評価関数に基づいて優先度の高い順にブロック番号の並び替えを行うものとして説明する。
【０１１８】
第１の方法は、送信バッファに滞留している時間が長いデータが格納されているブロックを優先的に送信させたい場合に適する方法である。前記第１の方法を採用する場合の優先度評価関数ｆｐ１は、現在の時刻をｔｃ、最終ライト時刻をｔｗｅとした場合に、
ｆｐ１＝ｔｃ−ｔｗｅ
とする。ここで、前記現在の時刻ｔｃとは、前記タイマ９からスケジュール装置１０（ＩＤ１）に供給される時刻情報のことで、半導体装置２＿１〜２＿３およびデータ送信装置３間で同期している。また、前記最終ライト時刻ｔｗｅとは、後で説明する図４１〜図４６における項目ＣＴＢ７に設定されている値のことである。またｔｃ、ｔｗｅは、それぞれ過去の時刻よりも未来の時刻の方が大きい値になるものとし、ｆｐ１の値は大きいほど優先度は高い。
【０１１９】
第２の方法は、タイミング制約の厳しいタスクで参照されるデータが格納されているブロックを優先的に送信させたい場合に適する方法である。前記第２の方法を採用する場合の優先度評価関数ｆｐ２は、送信するデータを参照するタスクが終了していなければならない時刻をｔｌｍとした場合に、前記現在の時刻ｔｃを用いて、
ｆｐ２＝ｔｃ−ｔｌｍ
とする。前記第２の方法を採用する場合は、図１２のタスク入出力データ転送制御レジスタ０：７０１＿０に、前記ｔｌｍの設定フィールドを追加して設定する。前記ｔｌｍは、ある一つの転送モニタ領域に格納されるデータを複数のタスクで参照する場合には、前記一つの転送モニタ領域に格納されるデータを参照する全てのタスクの内、最も早く終了していなければならないタスクのタイミング制約が使用される。ここで、前記ｔｌｍは過去の時刻よりも未来の時刻の方が大きい値となるものとすると、タイミング制約違反が発生していないときは、ｔｌｍ≧ｔｃの関係が成立し前記ｆｐ２は負の値または０となる。また前記ｆｐ２の値は大きいほど優先度は高い。
【０１２０】
第３の方法は、実行優先度が高く設定されているタスクで参照されるデータが格納されているブロックを優先的に送信させたい場合に適する方法である。前記第３の方法を採用する場合の優先度評価関数ｆｐ３は、送信するデータを参照するタスクの実行優先度をｐｒとした場合に、
ｆｐ３＝ｐｒ
とする。前記第３の方法を採用する場合は、図１２のタスク入出力データ転送制御レジスタ０：７０１＿０に、前記ｐｒの設定フィールドを追加して設定する。ここで、前記ｐｒの値および前記ｆｐ３の値は、共に大きいほど優先度は高い。
【０１２１】
第４の方法は、前記第１の方法と、前記第２の方法と、前記第３の方法を組み合わせて優先的に送信させるブロックを決定したい場合に適する方法である。前記第１の方法による評価結果に対する重みをｗ１、前記第２の方法による評価結果に対する重みをｗ２、前記第３の方法による評価結果に対する重みをｗ３、とした場合に、前記第４の方法を採用する場合の優先度評価関数ｆｐ４は、
ｆｐ４＝ｗ１×ｆｐ１＋ｗ２×ｆｐ２＋ｗ３×ｆｐ３
とする。ここで前記ｗ１〜ｗ３にはそれぞれ任意の実数を重みとして設定する。また前記ｗ１〜ｗ３は、任意のイベントに同期して値を変化させることができるように構成する。
【０１２２】
例えば、実施の形態１ではタイミング制約１を満足させるために、前記第４の方法を採用し、次の設定を行う。送受信終了イベントが発生したときに、ｗ１＝１、ｗ２＝１、ｗ３＝０と設定する。またＳＹＮＣ０イベントが発生したときに、ｗ１＝０、ｗ２＝０、ｗ３＝１と設定する。また半導体装置２＿１と半導体装置２＿２のそれぞれのタスク入出力データ転送制御レジスタ０に設ける前記ｔｌｍは、ＳＹＮＣ０イベントが発生したときに、次回ＳＹＮＣ０イベントが発生する時刻を設定する。なおＳＹＮＣ０イベントは前記タイマ９に同期して一定の周期で発生するので、前述のとおりＳＹＮＣ０イベントが発生したときに、次回ＳＹＮＣ０イベントが発生する時刻を設定することができる。また半導体装置２＿１と半導体装置２＿２のそれぞれのタスク入出力データ転送制御レジスタ０に設ける前記ｐｒは、任意の値を設定できるが、ここでは最も低い優先度を表す０を設定する。これらの設定により、送受信終了イベントからＳＹＮＣ０イベントの間の期間では、前記第１の方法と、前記第２の方法を組み合わせてタイミング制約１に対応した優先度で送信するブロックが決定される。また送受信終了イベントからＳＹＮＣ０イベントの間の期間以外では、前記第３の方法で優先的に送信するブロックが決定される。またこれらの設定を行うことで、例えば半導体装置２＿１および半導体装置２＿２上でＣＰＵの数を大幅に上回るタスクが並列に動作している場合であっても、各々のタスクのタイミング制約に対応した優先度で送信するブロックを決定させることができる。
【０１２３】
次に、ステップＳ１３５が実行される。ステップＳ１３５では、ステップＳ１３４で作成した送信順のブロック番号リストの順番に、連続する未転送のアドレス領域を抽出する。抽出したアドレス領域ごとに、抽出したアドレス領域の先頭アドレス（論理アドレス）と、抽出したアドレス領域の領域サイズ（バイト数）のヘッダ情報を付加したデータグラムを作成する。以下、作成したデータグラムを順番に、データグラム０、データグラム１、データグラム２、・・・と称する。
【０１２４】
次のステップＳ１３６では、各データグラムのヘッダ情報である領域サイズの合計が、１フレーム当たりの最大転送バイト数（図１２のタスク入出力データ転送制御レジスタ０：７０１＿０参照）を超えないように、データグラム０、データグラム１、データグラム２、・・・を結合したデータ（以下、送信データグラムと称する）を作成する。
【０１２５】
ステップＳ１３７では、ステップＳ１３６で作成した送信データグラムに対して、リード検出領域（転送先である半導体装置２＿３における転送モニタ領域０）の宛先情報を含むネットワークヘッダを付加して、送信フレームを作成する。リード検出領域は、図１２に示したタスク入出力データ転送制御レジスタ７０１＿０において設定されており、宛先情報は、転送先の半導体装置を特定する識別情報ＩＤ３と、転送モニタ領域０のアドレス領域を特定するアドレス情報とを備えている。
【０１２６】
ステップＳ１３８では、通信装置５＿１に含まれるＤＭＡコントローラを用いて．作成した送信フレームを、半導体装置２＿３へ送信する。ステップＳ１３８の後は、ステップＳ１３２に戻り、転送開始トリガ１、転送開始トリガ２の発生か検知されると、上記したステップが繰り返される。
【０１２７】
半導体装置２＿２においても、図２０のステップＳ１３０〜Ｓ１３８と類似したステップＳ１４０〜Ｓ１４８（図２１）が実行される。図２１と図２０との相違点は、図２１では、半導体装置２＿２が、送信フレームを半導体装置２＿３へ送信する点と、ステップＳ１４７において、送信データグラムに付加する宛先情報が、半導体装置２＿３の転送モニタ領域１であることである。
【０１２８】
なお、図２０のＳ１３３〜Ｓ１３７、および図２１のＳ１４３〜Ｓ１４７は、一部の処理を並列に実行したり、一部の処理を細分化して実行する順番を入れ替えたりすることで、実行時間を短縮出来る場合があるが、図面上は処理の流れを分かり易くする為に各々の処理を順番に実行するフローを記載している。
【０１２９】
＜＜半導体装置２＿３＞＞
次に、半導体装置２＿３を説明する。半導体装置２＿３においては、半導体装置２＿１から受信したフィルタ演算結果に対して、出力演算Ａ用タスクが実行され、半導体装置２＿２から受信したフィルタ演算結果に対して、出力演算Ｂ用タスクが実行される。
【０１３０】
半導体装置２＿３におけるメモリ１７および１８には、出力演算Ａ用タスクに対応したアドレス領域（転送モニタ領域）と、出力演算Ｂ用タスクに対応したアドレス領域（転送モニタ領域）とが設定される。図２２〜図２５は、実施の形態１に係わる半導体装置のメモリアドレス領域を説明するための図である。ここで、図２２には、出力演算Ａ用タスクに対応したメモリ１７のアドレス領域（転送モニタ領域０）が示され、図２３には、出力演算Ａ用タスクに対応したメモリ１８のアドレス領域（転送モニタ領域１）が示されている。また、図２４には、出力演算Ｂ用タスクに対応したメモリ１７のアドレス領域（転送モニタ領域２）が示され、図２５には、出力演算Ｂ用タスクに対応したメモリ１８のアドレス領域（転送モニタ領域３）が示されている。
【０１３１】
図２２および図２４に示すように、メモリ１７のアドレス領域は、０．２５ＫＢ単位のバンクウェイ１７＿０〜１７＿３によって構成される。また、メモリ１８のアドレス領域は、図２３および図２５に示すように、１ＫＢ単位のバンクウェイ１８＿０〜１８＿３によって構成されている。図２２〜図２５において、メモリ１７および１８のアドレス領域は、物理アドレスで表示されているが、アドレス変換回路１３（図１）によって論理アドレスに変換される。それぞれのバンクウェイにおけるブロックの論理アドレスは、それぞれの図に示した変換式（例えば、図２２では、ブロックｍの論理アドレス＝２００００Ｈ＋１００Ｈ×ｍ）に従って変換される。
【０１３２】
メモリ１７を構成するバンクウェイ１７＿０〜１７＿３のうち、バンクウェイ１７＿０および１７＿１が、半導体装置２＿１からの演算結果に対する出力演算Ａ用タスクに対応し、バンクウェイ１７＿２および１７＿３が、半導体装置２＿２からの演算結果に対する出力演算Ｂ用タスクに対応している。また、メモリ１８を構成するバンクウェイ１８＿０〜１８＿３のうち、バンクウェイ１８＿０および１８＿２が、出力演算Ａ用タスクに対応し、出力演算Ａ用タスクによる出力演算結果が格納される。一方、バンクウェイ１８＿１および１８＿３は、出力演算Ｂ用タスクに対応し、出力演算Ｂ用タスクによる出力演算結果が格納される。
【０１３３】
半導体装置２＿１において実行されたフィルタ演算Ａ用タスクの演算結果は、半導体装置２＿１のメモリ１８におけるバンクウェイに書き込まれ（ライト）、ライトされた演算結果が、図２２に示すように、半導体装置２＿１から半導体装置２＿３へ転送され、半導体装置２＿３におけるプロセッサにより読み出される（リード）。例えば、図２２のバンクウェイ１７＿０におけるブロック０には、半導体装置２＿１において、プロセッサＣＰＵ１が半導体装置２＿１のバンクウェイにライトした演算結果のデータが、半導体装置２＿３に転送され、ブロック０にライトされる。このブロック０にライトされたデータは、半導体装置２＿３におけるプロセッサＣＰＵ１がリードする。図２２に示した残りのブロック１〜７も同様である。
【０１３４】
半導体装置２＿３においては、プロセッサＣＰＵ１，ＣＰＵ２が、ブロック０〜７からリードしたデータに対して出力演算Ａ用タスクを実行し、プロセッサＣＰＵ１は、図２３に示すように、バンクウェイ１８＿０のブロック０に演算結果をライトする。同様に、プロセッサＣＰＵ２は、図２３に示すように、バンクウェイ１８＿２のブロック１に演算結果をライトする。
【０１３５】
一方、半導体装置２＿２において実行されたフィルタ演算Ｂ用タスクの演算結果は、半導体装置２＿２のメモリ１８におけるバンクウェイに書き込まれ（ライト）、ライトされた演算結果が、図２４に示すように、半導体装置２＿２から半導体装置２＿３へ転送され、半導体装置２＿３におけるプロセッサにより読み出される（リード）。例えば、図２４のバンクウェイ１７＿２におけるブロック０には、半導体装置２＿２において、プロセッサＣＰＵ１が半導体装置２＿２のバンクウェイにライトした演算結果のデータが、半導体装置２＿３に転送され、ブロック０にライトされる。このブロック０にライトされたデータは、半導体装置２＿３におけるプロセッサＣＰＵ１がリードする。図２４に示した残りのブロック１〜７も同様である。
【０１３６】
半導体装置２＿３においては、プロセッサＣＰＵ１，ＣＰＵ２が、ブロック０〜７からリードしたデータに対して出力演算Ｂ用タスクを実行し、プロセッサＣＰＵ１は、図２５に示すように、バンクウェイ１８＿１のブロック０に演算結果をライトする。同様に、プロセッサＣＰＵ２は、図２５に示すように、バンクウェイ１８＿３のブロック１に演算結果をライトする。
【０１３７】
これにより、フィルタ演算および出力演算が実施されたデータが、取得されることになる。
【０１３８】
＜＜＜半導体装置２＿３のタスク入出力データ制御レジスタ＞＞＞
図２６〜図２９は、実施の形態１に係わる半導体装置のタスク入出力データ制御レジスタの構成を示す図である。図２６〜図２９に示す半導体装置２＿３におけるタスク入出力データ制御レジスタ１２は、図１２〜図１５に類似しているので、相異点を主に説明する。
【０１３９】
半導体装置２＿１、２＿２のそれぞれは、転送モニタ領域設定レジスタとして、転送モニタ領域０設定レジスタ：７００＿０と転送モニタ領域１設定レジスタ：７００＿１の２つを備えていたが、半導体装置２＿３は、転送モニタ領域設定レジスタとして。４つの転送モニタ領域設定レジスタを備えている。すなわち、半導体装置２＿３は、転送モニタ領域０設定レジスタ：７００＿０、転送モニタ領域１設定レジスタ：７００＿１、転送モニタ領域２設定レジスタ：７００＿２および転送モニタ領域３設定レジスタ：７００＿３を備えている。
【０１４０】
転送モニタ領域０設定レジスタ：７００＿０は、対象メモリが、図２２に示したメモリ１７のバンクウェイ１７＿０と１７＿１であり、転送モニタ領域１設定レジスタ：７００＿１は、対象メモリが、図２３に示したメモリ１８のバンクウェイ１８＿０と１８＿２である。また、転送モニタ領域２設定レジスタ：７００＿２は、対象メモリが、図２４に示したメモリ１７のバンクウェイ１７＿２と１７＿３であり、転送モニタ領域３設定レジスタ：７００＿３は、対象メモリが、図２５に示したメモリ１８のバンクウェイ１８＿１と１８＿３である。図２２〜図２５に示したように、半導体装置２＿３を動作させる場合、転送モニタ領域０設定レジスタ：７００＿０〜転送モニタ領域３設定レジスタ：７００＿３における「対象領域のブロック割り当て制約」は、図２６および図２８に示すようになる。また、対象領域の自動ブロック割り当てトリガは、設定なしを設定し、対象領域の１ブロック当たりのバイト数および対象領域の１フラグ当たりのバイト数も、図２６および図２８に示すように設定する。
【０１４１】
半導体装置２＿１、２＿２では、タスク入出力データ転送制御レジスタとして、１つのタスク入出力データ転送制御レジスタ０：７０１＿０を備えていたが、半導体装置２＿３は、タスク入出力データ転送制御レジスタとして、２つのタスク入出力データ転送制御レジスタ０：７０１＿０、７０１＿１を備えている。
【０１４２】
タスク入出力データ転送制御レジスタ０：７０１＿０には、リード検出領域（転送先）として、半導体装置２＿３の転送モニタ領域０（図２２）が設定され、リードタスク（転送先）として、半導体装置２＿３の出力演算Ａ用タスクが設定される。また、ライト検出領域（転送元）には、半導体装置２＿１の転送モニタ領域１が設定され、ライトタスク（転送元）として、半導体装置２＿１のフィルタ演算Ａ用タスクが設定される。一方、タスク入出力データ転送制御レジスタ１：７０１＿１には、リード検出領域（転送先）として、半導体装置２＿３の転送モニタ領域２（図２４）が設定され、リードタスク（転送先）として、半導体装置２＿３の出力演算Ｂ用タスクが設定される。また、ライト検出領域（転送元）には、半導体装置２＿２の転送モニタ領域１が設定され、ライトタスク（転送元）として、半導体装置２＿２のフィルタ演算Ｂ用タスクが設定される。
【０１４３】
タスク入出力データ転送制御レジスタ０：７０１＿０およびタスク入出力データ転送制御レジスタ１：７０１＿１において、１フレーム当たりの最大転送バイト数は５１２に設定され、転送開始トリガ１および２は、図２６および図２８に示すように設定される。
【０１４４】
また、半導体装置２＿１、２＿２では、タスク入出力データ領域設定レジスタとして、タスク入出力データ領域０設定レジスタ：７０２＿０と、タスク入出力データ領域１設定レジスタ：７０２＿１との２つを備えていたが、半導体装置２＿３は、タスク入出力データ領域設定レジスタとして、４つのタスク入出力データ領域設定レジスタを備えている。すなわち、半導体装置２＿３は、タスク入出力データ領域０設定レジスタ：７０２＿０、タスク入出力データ領域１設定レジスタ：７０２＿１、タスク入出力データ領域２設定レジスタ：７０２＿２およびタスク入出力データ領域３設定レジスタ：７０２＿３を備えている。
【０１４５】
タスク入出力データ領域０設定レジスタ：７０２＿０〜タスク入出力データ領域３設定レジスタ：７０２＿３の入出力データ領域としては、転送モニタ領域０〜３（図２２〜図２５）が設定される。入出力を行うタスク、入力または出力（入力／出力）、タスク起動時の自動割り当てのブロック番号の初期値およびタスク起動時の自動割り当てブロック数は、図２７および図２９に示されているように設定される。
【０１４６】
さらに、半導体装置２＿１、２＿２は、タスク起動条件設定レジスタとして、１つのタスク起動条件設定レジスタ０：７０３＿０を備えていたが、半導体装置２＿３は、２つのタスク起動条件設定レジスタ０：７０３＿０、タスク起動条件設定レジスタ１：７０３＿１を備えている。起動対象タスク、起動関数名、並列起動数、起動関数への引数、タスク起動トリガおよびタスク一時停止トリガは、図２７および図２９に示すように設定される。
【０１４７】
半導体装置２＿１、２＿２のタスク入出力データ制御レジスタ１２は、半導体装置２＿３と同じ構成にし、半導体装置２＿１および２＿２においては、タスク入出力データ制御レジスタを構成するレジスタのうちの一部を、図１２〜図１５で説明したように設定するようにしてもよい。
【０１４８】
＜＜＜半導体装置２＿３のレジスタ設定動作＞＞＞
半導体装置２＿３においても、ソフトウェアを実行することにより、スケジュール装置１０（ＩＤ３）内のレジスタ等を設定する。図３０は、実施の形態１に係わる半導体装置における設定の動作を示すフローチャート図である。
【０１４９】
図３０のステップＳ２１０において、スケジュール装置１０（ＩＤ３）の設定が開始する。半導体装置２＿３では、出力演算Ａ用および出力演算Ｂ用のタスクを実行する。そのため、ステップＳ２１１において、半導体装置２＿３内のスケジュール装置１０（ＩＤ３）において、出力演算Ａ用タスクおよび出力演算Ｂ用タスクの制御に係わるレジスタの設定が行われる。このステップＳ２１１において、半導体装置２＿３内のタスク入出力データ制御レジスタ１２に対して、図２６〜図２９に示したように設定を行う。次に、ステップＳ２１２において、モニタ回路１５による転送モニタ領域０〜３（メモリ１７、１８）の監視を有効化する。ステップＳ２１３において、図２６および図２８に示したタスク入出力データ転送制御レジスタ０および１に設定された内容に従って転送制御が実行されるように、転送制御の有効化が行われる。さらに、ステップＳ２１４において、モニタ回路１５を用いて、転送モニタ領域０へのデータの転送が完了したことをタスク起動トリガにより検出すると、出力演算Ａ用タスクの起動を有効化する。また、ステップＳ２１５で、モニタ回路１５を用いて、転送モニタ領域２へのデータの転送が完了したことをタスク起動トリガにより検出すると、出力演算Ｂ用タスクの起動を有効化する。その後、ステップＳ２１６でレジスタ設定動作を終了する。
【０１５０】
＜＜＜タスク入力データの受信フロー＞＞＞
半導体装置２＿３は、半導体装置２＿１から出力演算Ａ用タスクの入力データを受信する動作と、半導体装置２＿２から出力演算Ｂ用タスクの入力データを受信する動作とを実行する。この動作は、半導体装置２＿３におけるタスク入出力データ制御回路１３が実行する。図３１および図３２は、実施の形態１に係わるタスク入力データの受信フローを示す図である。ここで、図３１は出力演算Ａ用タスクの入力データを受信するときの動作を示し、図３２は出力演算Ｂ用タスクの入力データを受信するときの動作を示している。
【０１５１】
図３１において、ステップＳ２２０で受信を開始する。ステップＳ２２１では、図２６に示したタスク入出力データ転送制御レジスタ０：７０１＿０の設定による転送制御の有効化を待機する。タスク入出力データ転送制御レジスタ０：７０１＿０により転送制御が有効化されると、ステップＳ２２２が実行される。ステップＳ２２２では、半導体装置２＿１からの受信フレームの受信を待機する。
【０１５２】
受信フレームが受信されると、次にステップＳ２２３が実施される。ステップＳ２２３では、受信フレーム内の各データグラムのヘッダ情報（先頭アドレス情報と領域サイズ情報）に基づいて、タスク入力データ領域（転送モニタ領域０）に、ヘッダ情報に対応したデータ（タスク入力データ）を展開する。受信フレームのデータの展開が終わると、ステップＳ２２２に戻り、新たな受信フレームの受信を待機する。
【０１５３】
図３２は、図３１と類似しており、相異点は、ステップＳ２２１に対応するステップＳ２３１において、図２８に示したタスク入出力データ転送制御レジスタ１：７０１＿１の設定による転送制御の有効化を待機する点と、ステップＳ２２３に対応するステップＳ２３３において、タスク入力データを転送モニタ領域２（タスク入力データ領域）に展開する点である。
【０１５４】
以上の動作で、フィルタ演算Ａ用タスクの実行により得られたデータは、通信装置５＿３が備えるＤＭＡコントローラによって、転送モニタ領域１に展開され、フィルタ演算Ｂ用タスクの実行により得られたデータは、ＤＭＡコントローラによって、転送モニタ領域２に展開されることになる。
【０１５５】
＜＜半導体装置２＿３におけるタスク起動＞＞
次に、半導体装置２＿３におけるタスク起動の動作を説明する。図３３および図３４は、実施の形態１に係わる半導体装置におけるタスク起動の動作を示すフローチャート図である。ここで、図３３は、出力演算Ａ用タスクの起動の動作を示し、図３４は、出力演算Ｂ用タスクの起動の動作を示している。半導体装置２＿３が備えているタスク入出力データ制御回路１１が、図３３および図３４に示す制御を実施する。図３３と図３４は類似しているので、先ず図３３を説明し、その後で図３３と図３４の相異点を説明する。
【０１５６】
図３３において、ステップＳ２４０でタスク起動の動作が開始する。次にステップＳ２４１において、出力演算Ａ用タスクの起動が有効化されるまで待機する。出力演算Ａ用タスクの起動が有効化されると、ステップＳ２４２が実行される。ステップＳ２４２においては、タスク入力データ領域におけるブロックの番号を示す変数ｍと、タスク出力データ領域におけるブロックの番号を示す変数ｎを０に設定する。その後、ステップＳ２４３において、タスク起動トリガを待機する、すなわち図２６に示したリード検出領域（転送先）に設定された転送モニタ領域０へのデータの転送完了を待機することになる。
【０１５７】
転送モニタ領域０へのデータの転送が完了すると、転送開始トリガ１が発生し、次にステップＳ２４４が実行される。ステップＳ２４４では、並列起動数を示す変数ｃが０に設定される。その後、ステップＳ２４５が実行される。
【０１５８】
ステップＳ２４５においては、出力演算Ａ用タスクに対するタスク入力データ領域として、ブロックｍから４ブロック分の論理アドレスを割り当てる。また、出力演算Ａ用タスクに対するタスク出力データ領域として、ブロックｎから１ブロック分の論理アドレスを割り当てる。これにより、出力演算Ａ用タスクが実行されたとき、演算結果が格納されるタスク出力データ領域が、メモリ１８に格納されることになる。また、それぞれのアドレス領域、すなわちタスク入力データ領域およびタスク出力データ領域の先頭アドレスを。出力演算Ａ用タスクの起動関数ｆｇへの引数としてセットする。なお、上記した４ブロックおよび２ブロックは、タスク起動時の自動割り当てブロック数であり、図２７に示したタスク入出力データ領域０設定レジスタ７０２＿０およびタスク入出力データ領域１設定レジスタ７０２＿１に設定されているブロック数である。
【０１５９】
ステップＳ２４５において、起動関数ｆｇへの引数のセットが終了すると、ステップＳ２４６が実行される。このステップＳ２４６において、出力演算Ａ用タスクが起動される。次に、ステップＳ２４７において、変数ｃ、ｍおよびｎの更新が行われる。すなわち、ｃ＝ｃ＋１、ｍ＝ｍ＋４、ｎ＝ｎ＋１の演算が行われる。ここで、４および１は、上記したブロック数である。
【０１６０】
次に、ステップＳ２４８が実行される。ステップＳ２４８では、変数ｃの値に基づいて、並列起動数が、２以下か否かの判定が行われる。並列起動数が２以下の場合、ステップＳ２４５に戻り、並列起動数が２を超えるまで、ステップＳ２４５〜Ｓ２４８が繰り返される。一方、並列起動数が、２を超えていた場合、次にステップＳ２４３に戻り、ステップＳ２４３でタスク起動トリガの発生を待機する。実施の形態１においては、半導体装置２＿３は２つのプロセッサＣＰＵ１、ＣＰＵ２を備えているため、並列起動数は２まで設定することが可能である。
【０１６１】
以上で、連続した４つのブロック（０．２５ＫＢ）のデータを用いて出力演算Ａが実行され、出力演算結果は、１つのブロック（１ＫＢ）に書き込まれることになる。
【０１６２】
出力演算Ｂ用タスクにおいても、図３３に示したステップＳ２４０〜Ｓ２４８と類似のステップＳ２５０〜Ｓ２５８（図３４）によって、出力演算Ｂ用タスクが起動される。半導体装置２＿３において実行されるステップＳ２５０〜Ｓ２５８において、ステップＳ２４０〜Ｓ２４８と異なる部分は、対象のタスクが出力演算Ｂ用タスクである点と、タスク入力データ領域が転送モニタ領域２である点と、タスク出力データ領域が転送モニタ領域３である点である。
【０１６３】
以上の動作で、転送モニタ領域０において連続した４つのブロックに格納されたフィルタ演算Ａの検算結果に対して、出力演算Ａが実行され、その演算結果が、転送モニタ領域１の１つのブロックに格納される。同様に、転送モニタ領域２において連続した４つのブロックに格納されたフィルタ演算Ｂの検算結果に対して、出力演算Ｂが実行され、その演算結果が、転送モニタ領域３の１つのブロックに格納される。
【０１６４】
＜＜＜モニタ回路で取得する情報＞＞＞
スケジュール装置１２内のタスク入出力データ制御回路１０（ＩＤ１）〜１０（ＩＤ３）は、図１に示したように、モニタ回路１５に接続されている。モニタ回路１５は、バススイッチ１４からメモリ１７および１８に供給されるアドレス信号を監視し、監視により得た情報をタスク入出力データ制御回路１０（ＩＤ１）〜１０（ＩＤ３）に供給する。タスク入出力データ制御回路１０（ＩＤ１）〜１０（ＩＤ３）は、供給された情報に基づいて動作する。ここでは、説明を容易にするために、タスク入出力データ制御回路１０（ＩＤ１）〜１０（ＩＤ３）が、供給された情報に基づいた管理テーブルを作成して、作成した管理テーブルに基づいて、動作するものとして説明する。勿論、タスク入出力データ制御回路１０（ＩＤ１）〜１０（ＩＤ３）は、動作のために管理テーブルを作成しなくてもよい。
【０１６５】
図３５〜図５６は、実施の形態１に係わる管理テーブルを説明するための図である。ここで、図３５〜図４６、図５３および図５４は、半導体装置２＿１のタスク入出力データ制御回路１０（ＩＤ１）で形成される管理テーブルを示し、図４７〜図５２、図５５および図５６は、半導体装置２＿３のタスク入出力データ制御回路１０（ＩＤ３）で形成される管理テーブルを示している。半導体装置２＿２のタスク入出力データ制御回路１０（ＩＤ２）で形成される管理テーブルは、タスク入出力データ制御回路１０（ＩＤ１）で形成される管理テーブルと類似しているため、説明は省略する。
【０１６６】
図３５〜図５６に示す管理テーブルの項目は、同一であるため、図３５を用いて、先ず管理テーブルの項目を説明する。管理テーブルは、ＣＴＢ１〜ＣＴＢ１０の項目を備えている。
【０１６７】
項目ＣＴＢ１には、対象の転送モニタ領域が設定され、項目ＣＴＢ２には、モニタ対象の半導体装置が設定される。項目ＣＴＢ３には、対象の物理アドレスのベースアドレスと論理アドレスのベースアドレスが設定され、項目ＣＴＢ４には、対象のモニタ領域の領域サイズが設定され、項目ＣＴＢ５には、後で説明する１フラグ当たりのバイト数が設定される。
【０１６８】
また、項目ＣＴＢ６には、対象の転送モニタ領域への初回書き込み（ライト）時刻が設定され、項目ＣＴＢ７には、対象の転送モニタ領域への最終書き込み（ライト）時刻が設定される。項目ＣＴＢ８には、対象の転送モニタ領域に対する初回の読み出し（リード）時刻が設定され、項目ＣＴＢ９には、対象の転送モニタ領域に対する最終の読み出し（リード）時刻が設定される。
【０１６９】
項目ＣＴＢ１０は、対象の転送モニタ領域の状態が設定される。項目ＣＴＢ１０には、転送モニタ領域におけるアドレスを特定するオフセットアドレスと、ａ．ライトフラグと、ｂ．リードフラグと、ｃ．未参照フラグとが設けられている。ａ．ライトフラグには、モニタ回路１５を用いたモニタを開始するときに、論理値“０”を設定し、対応するオフセットアドレスで特定されるアドレスに対して書き込みが行われた場合、ａ．ライトフラグには、論理値“１”を設定する。また、ｂ．リードフラグには、論理値“０”を設定し、対応するオフセットアドレスで特定されるアドレスに対して読み出しが行われた場合、ｂ．リードフラグには、論理値“１”を設定する。
【０１７０】
ｃ．未参照フラグには、（ａ．ライトフラグ）−（ｂ．リードフラグ）を設定する。すなわち、対応するアドレスに対して書き込みが行われ、読み出しが行われていない場合、ｃ．未参照フラグには、論理値“１”を設定し、対応するアドレスに対して書き込みが行われた後、読み出しが行われた場合、ｃ．未参照フラグには、論理値“０”を設定する。なお、対応するアドレスに対して書き込みが行われていない場合も、ｃ．未参照フラグには論理値“０”を設定する。また、項目ＣＴＢ１０には、ａ．ライトフラグ、ｂ．リードフラグおよびｃ．未参照フラグの合計値が設定される。
【０１７１】
＜＜＜＜半導体装置２＿１における情報＞＞＞＞
図３５〜図４０は、受信バッファを構成するメモリ１７に対応する管理テーブルを示している。メモリ１７に対応するために、項目ＣＴＢ１には、メモリ１７である転送モニタ領域０が設定され、項目ＣＴＢ１には、半導体装置２＿１（ＩＤ１）が設定されている。項目ＣＴＢ４には、転送モニタ領域の領域サイズとして１０２４バイトが設定されている。また、項目ＣＴＢ１０におけるオフセットアドレスが、１バイト単位であるため、項目ＣＴＢ５の１フラグ当たりのバイト数としては、１が設定されている。
【０１７２】
図３５は、モニタを開始したとき（モニタ開始時）の管理テーブルの状態を示し、図３６は、初回ライト転送を検出したとき（初回ライト転送検出時（初回ライトが４バイトライトの場合））の状態を示している。また、図３７は、１０２０バイトのライト転送を検出したとき（１０２０バイトライト検出直後）の状態を示し、図３８は、全てのアドレスに対してのライト転送が検出された時（全てのアドレスでのライト転送検出時）の状態を示している。すなわち、受信バッファに対してライト転送が順次行われているときの管理テーブルの変化が、図３５〜図４０として示されている。
【０１７３】
モニタ開始時（図３５）では、未だ読み出しも書き込みも実施されていないため、項目ＣＴＢ６〜ＣＴＢ９は未設定である。また、項目ＣＴＢ３のベースアドレスも未設定である。モニタ回路１５では、バススイッチ１４からメモリ１７へのアクセスも検出されていないため、項目ＣＴＢ１０に設定されているオフセットアドレスにより特定されるアドレスへの書き込みおよび読み出しが行われていないため、項目ＣＴＢ１０は、図３５に示すように、ａ．ライトフラグ、ｂ．リードフラグおよびｃ．未参照フラグのいずれもが、論理値“０”に設定されている。
【０１７４】
図３６に示すように、スケジュール装置１０（ＩＤ１）が、物理アドレスのベースアドレスを、０００００Ｈに設定し、論理アドレスのベースアドレスを、２００００Ｈに設定して、４バイトの書き込みが行われると、このときの時刻ｉｄ１ｍ０ｔｗ４が、初回ライト時刻および最終ライト時刻として設定される。一方、モニタ回路１５によって、連続したオフセットアドレス００００Ｈ〜０００３Ｈへの４バイトの書き込みが検出され、タスク入出力データ制御回路１０（ＩＤ１）に通知され、これらに対応するａ．ライトフラグが、論理値”１”に変更されるとともに、これらに対応するｃ．未参照フラグも、論理値“１”に変更される。
【０１７５】
１０２０バイトの書き込みが行われると、図３７に示すように、そのときの時刻（ｉｄ１ｍ０ｔｗ１０２０）が、最終ライト時刻として設定される。また、モニタ回路１５からの通知により、タスク入出力データ制御回路１０（ＩＤ１）は、１０２０個のオフセットアドレスに対応するａ．ライトフラグおよびｃ．未参照フラグを論理値“１”とする。１０２４バイトの書き込みが行われると、図３８に示すように、オフセットアドレス００００Ｈ〜０３ＦＦＨに対応するａ．ライトフラグおよびｃ．未参照フラグが論理値“１”と変更される。
【０１７６】
プロセッサによって、メモリ１７に対して読み出しが行われると、ｂ．リードフラグ、ｃ．未参照フラグが変更されるとともに、初回リード時刻および最終リード時刻が変更される。すなわち、初回リード転送検出時（初回リードが４バイトリードの場合）では、図３０に示すように、初回リード時刻および最終リード時刻が、リード時刻ｉｄ１ｍ０ｔｒ４に設定される。また、モニタ回路１５によって、連続したオフセットアドレス００００Ｈ〜０００３Ｈへの４バイトの読み出しが検出され、タスク入出力データ制御回路１０（ＩＤ１）に通知される。これにより、タスク入出力データ制御回路１０（ＩＤ１）は、これらのオフセットアドレスに対応するａ．リードフラグを、論理値”１”に変更するとともに、これらに対応するｃ．未参照フラグを、論理値“０”に変更する。
【０１７７】
メモリ１７である転送モニタ領域０から、全てのアドレスでのリード転送が検出されたときには、図４０に示すように、オフセットアドレス００００Ｈ〜０３ＦＦＨに対応するｂ．リードフラグが倫理値“１”に変更され、これらに対応するｃ．未参照フラグは論理値“０”に変更される。
【０１７８】
これにより、タスク入出力データ制御回路１１を含むスケジュール装置１０（ＩＤ１）は、ｃ．未参照フラグを参照することにより、プロセッサによって読み出されていないデータの数を把握することが可能である。
【０１７９】
図４１〜図４６は、演算バッファ（送信バッファ）を構成するメモリ１８に対応した管理テーブルの状態を示している。図４１〜図４６は、図３５〜図４０に類似しているので、主に相異点を説明する。
【０１８０】
モニタ開始時では、図４１に示すように、項目ＣＴＢ１として、演算バッファに対応する転送モニタ領域１を設定する。また、転送モニタ領域１のサイズとして２５６バイトを設定する。モニタ開始時であるため、項目ＣＴ１０に示すオフセットアドレスに対応する
ａ．ライトフラグ、ｂ．リードフラグおよびｃ．未参照フラグのいずれもが、論理値“０”に設定されている。
【０１８１】
プロセッサによる初回ライト転送検出時（初回ライトが４バイトの場合）では、図４２に示すように、物理アドレスのベースアドレスが１００００Ｈに設定され、論理アドレスのベースアドレスが３００００Ｈに設定され、そのときの時刻（ｉｄ１ｍ１ｔｗ４）が、初回ライト時刻および最終ライト時刻として設定される。また、モニタ回路１５からの検出結果に基づいて、タスク入出力データ制御回路１１は、オフセットアドレス００００Ｈ〜０００３Ｈに対応するａ．ライトフラグおよびｃ．未参照フラグを、論理値“１”に変更する。
【０１８２】
プロセッサによる演算バッファへの書き込みが進み、２５２バイトの書き込みが行われると、図４３に示すように、２５２個のａ．ライトフラグおよびｃ．未参照フラグが論理値“１”に変更され、そのときの時刻（ｉｄ１ｍ１ｔｗ２５２）が、最終ライト時刻として設定される。さらに、全てのアドレスでのライト転送が検出されると、図４４に示すように、２５６個のａ．ライトフラグおよびｃ．未参照フラグが論理値“１”に変更され、そのときの時刻（ｉｄ１ｍ１ｔｗ２５６）が、最終ライト時刻として設定される。
【０１８３】
一方、スケジュール装置１０（ＩＤ１）によって、メモリ１８に対して読み出しが行われると、ｂ．リードフラグ、ｃ．未参照フラグが変更されるとともに、初回リード時刻および最終リード時刻が変更される。図４５に示すように、初回リード転送動作検出時（初回リードが４バイトの場合）には、そのときの時刻（ｉｄ１ｍ１ｔｒ４）が、初回リード時刻および最終リード時刻として設定される。また、モニタ回路１５からの検出結果に従って、タスク入出力データ制御回路１１は、オフセットアドレス００００Ｈ〜０００３Ｈに対応するｂ．リードフラグを論理値“１”に変更し、対応するｃ．未参照フラグを論理値“０”に変更する。スケジュール装置１０（ＩＤ１）による読み出しが進み、全てのアドレスでのリード転送が検出されたときには、図４６に示すように、２５６個のｂ．リードフラグが論理値“１”に変更され、対応するｃ．未参照フラグが論理値“０”に変更される。このときの時刻（ｉｄ１ｍ１ｔｒ２５６）が、最終リード時刻として設定される。
【０１８４】
これにより、タスク入出力データ制御回路１１を含むスケジュール装置１０（ＩＤ１）は、ｃ．未参照フラグを参照することにより、プロセッサによって書き込まれたデータのうち読み出されていないデータの数を把握することが可能である。
【０１８５】
＜＜＜＜半導体装置２＿３における情報＞＞＞＞
半導体装置２＿３においては、４つの転送モニタ領域（転送モニタ領域０〜３）の情報を取得して、それぞれに対応した管理テーブルを作成する。それぞれの管理テーブルは類似しているので、ここでは転送モニタ領域０に対応する管理テーブルを説明する。
【０１８６】
図４７〜図５２は、図４１〜図４６と類似している。相異点は、図４７〜図５２においては、モニタ対象として半導体装置２＿３が、項目ＣＴＢ２に設定され、半導体装置２＿３におけるメモリ１７が、転送モニタ領域０として設定される点である。また、図４７〜図５０においては、スケジュール装置１０（ＩＤ３）による転送モニタ領域０へのライト転送が検出され、図５１および図５２では、プロセッサによる転送モニタ領域０からのリード転送が検出される点が異なっている。すなわち、図４８では、スケジュール装置１０（ＩＤ３）による初回ライト転送検出時（初回ライトが４バイトライトの場合）が示され、図４９には、スケジュール装置１０（ＩＤ３）による２５２バイトライト検出直後が示され、図５０には、スケジュール装置１０（ＩＤ３）による全てのアドレスでのライト転送検出時が示されている。また、図５１には、プロセッサによる初回リード検出時（初回リードが４バイトリードの場合）が示され、図５２には、プロセッサによる全てのアドレスでのリード転送検出時が示されている。なお、図４７には、モニタ開始時が示されている。
【０１８７】
図５３には、図４６に示した状態から、再度オフセットアドレス０００４Ｈ〜０００７Ｈに書き込みが行われたときの状態が示されている。この場合、モニタ回路１５によって、当該オフセットアドレスへの書き込みアクセスが検出され、タスク入出力データ制御回路１１は、当該オフセットアドレスに対応するｂ．リードフラグを論理値“０”に変更し、対応するｃ．未参照フラグを論理値“１”に変更する。
【０１８８】
また、図５４には、図５３に示した状態から、再度全てのアドレスでのリード転送が検出されたときの状態が示されている。この場合、タスク入出力データ制御回路１１は、モニタ回路１５による検出に基づいて、オフセットアドレス０００４Ｈ〜０００７Ｈに対応するｂ．リードフラグを論理値“１”に変更し、対応するｃ．未参照フラグを論理値“０”に変更する。
【０１８９】
さらに、図５５には、図５４の後で、半導体装置２＿３における転送モニタ領域０において、再度オフセットアドレス０００４Ｈ〜０００７Ｈにライトが行われた場合が示されている。タスク入出力データ制御回路１１は、当該オフセットアドレスに対応するｂ．リードフラグを論理値“０”に変更し、対応するｃ．未参照フラグを論理値“１”に変更する。また、図５６には、図５５の後で、再度全てのアドレスでのリード転送が検出されたときの状態が示されている。この場合、タスク入出力データ制御回路１１は、モニタ回路１５による検出に基づいて、オフセットアドレス０００４Ｈ〜０００７Ｈに対応するｂ．リードフラグを論理値“１”に変更し、対応するｃ．未参照フラグを論理値“０”に変更する。
【０１９０】
＜＜＜ネットワークシステムの動作＞＞＞
実施の形態１に係わるネットワークシステム１においては、データ送信装置３から送信されたフレームに対して実施する演算（フィルタ演算および出力演算）が、半導体装置２＿１〜２＿３に分散され、実施される。すなわち、フィルタ演算は、フィルタ演算Ａとフィルタ演算Ｂに分けられ、半導体装置２＿１および２＿２において実施され、フィルタ演算ＡおよびＢの演算結果に対して、半導体装置２＿３において出力演算が実施される。これらの演算を実施する際の半導体装置２＿１〜２＿３の動作を次に説明する。図５７〜図６０は、実施の形態１に係わるネットワークシステムにおける半導体装置の動作を示すタイミング図である。
【０１９１】
図５７および図５８は、半導体装置２＿１と２＿３に係わる動作を示しており、図５７の下側に、図５８を配置することにより、半導体装置２＿１と２＿３の動作を示すタイミング図となる。同様に、図５９および図６０は、半導体装置２＿２と２＿３に係わる動作を示しており、図５９の下側に、図６０を配置することにより、半導体装置２＿２と２＿３の動作を示すタイミング図となる。
【０１９２】
図５７において、半導体装置２＿１が受信フレームを受信すると、タスク入出力データ制御回路１１は、受信バッファを構成するメモリ１７のバンクウェイ１７＿０〜１７＿３に、受信フレームのデータを書き込む。このとき、タスク入出力データ制御回路１１は、モニタ回路１５を用いて、バンクウェイ１７＿０〜１７＿３のそれぞれに書き込まれたデータが、所定のデータ量（１０２４バイト）に到達したか否かを監視する。
【０１９３】
バンクウェイ１７＿０〜１７＿３に書き込まれたデータが所定のデータ量に到達すると、タスク入出力データ制御回路１１を含むスケジュール装置１０（ＩＤ１）は、図１２に示した転送モニタ領域０設定レジスタ：７００＿０の「対象領域のブロック割り当て制約」に従って、バンクウェイ１７＿０〜１７＿３をブロック０〜３に割り当て、２つのブロック単位に対してプロセッサＣＰＵ１、ＣＰＵ２を割り当て、フィルタ演算Ａ用タスクを起動する。これにより、プロセッサＣＰＵ１、ＣＰＵ２は、バンクウェイ１７＿０〜１７＿３から、データを読み出し（図５７：ＣＰＵ１（ｆ０１−Ｒ）、ＣＰＵ２（ｆ２３−Ｒ））、フィルタ演算Ａを実行し、フィルタ演算Ａの演算結果を、送信バッファ（演算バッファ）を構成するメモリのバンクウェイ１８＿０〜１８＿３に、図１２に示した転送モニタ領域１設定レジスタ：７００＿１の「対象領域のブロック割り当て制約」に示したブロック０〜７として、書き込む（図５７：ＣＰＵ１（ｆ０１−Ｗ）、ＣＰＵ２（ｆ２３−Ｗ））。
【０１９４】
このとき、タスク入出力データ制御回路１１は、モニタ回路１５を用いて、バンクウェイ１８＿０〜１８＿３において未送信のデータ量が所定のデータ量（２５６バイト）に到達したか否かを監視する。バンクウェイ１８＿０〜１８＿３に書き込まれ、未送信のデータ量が、所定のデータ量（２５６バイト）に到達すると、タスク入出力データ制御回路１１は、バンクウェイ１８＿０〜１８＿３に書き込まれているデータをフレーム１３０〜１３３として、半導体装置２＿３へ送信（通信）する。
【０１９５】
半導体装置２＿３においては、タスク入出力データ制御回路１１が、半導体装置２＿１から受信したフレーム１３０〜１３３を、受信フレームを構成するメモリ１７のバンクウェイ１７＿０、１７＿１に書き込む。このとき、半導体装置２＿３におけるタスク入出力データ制御回路１１は、モニタ回路１５を用いて、バンクウェイ１７＿０、１７＿１に書き込まれたデータのデータ量が所定のデータ量（２５６バイト）に到達したか否かを監視する。所定のデータ量のデータが、バンクウェイ１７＿０、１７＿１に書き込まれると、タスク入出力データ制御回路１１を含むスケジュール装置１０（ＩＤ３）は、出力演算Ａ用タスクを起動する。これにより、半導体装置２＿３におけるプロセッサＣＰＵ１，ＣＰＵ２は、バンクウェイ１７＿０、１７＿１に書き込まれたデータを読み出し（図５８：ＣＰＵ１（ｆｇ０１−Ｒ）、ＣＰＵ２（ｆｇ２３−Ｒ））、出力演算Ａを実行して、出力演算Ａの演算結果を、演算バッファ（送信バッファ）を構成するメモリ１８のバンクウェイ１８＿０、１８＿２に書き込む（図５８：ＣＰＵ１（ｆｇ０１−Ｗ）、ＣＰＵ２（ｆｇ２３−Ｗ））。
【０１９６】
すなわち、半導体装置２＿１においては、送信バッファに所定のデータ量だけ、フィルタ演算Ａの演算結果（未送信データ）が書き込まれると、自動的に、半導体装置２＿３へ送信される。半導体装置２＿３においても、受信バッファに所定のデータ量が書き込まれると、出力演算Ａ用タスクが自動的に起動される。すなわち、半導体装置２＿３においては、優先的に出力演算Ａ用タスクが起動されることになる。
【０１９７】
フィルタ演算Ａ用タスクは、半導体装置２＿１において実行され、出力演算Ａ用タスクは、半導体装置２＿３において実行される。また、出力演算Ａ用タスクは、半導体装置２＿３に所定のデータ量が書き込まれると起動されるため、図５７および図５８に示すように、フィルタ演算Ａ用タスクと出力演算Ａ用タスクが並列的に実行されることになる。その結果、実施の形態１によれば、図５７および図５８に示すように、フィルタ演算Ａおよび出力演算Ａを、タイミング制約１を満たすように、実施することが可能である。
【０１９８】
半導体装置２＿２および２＿３においても、半導体装置２＿１および２＿３と同様に動作する。すなわち、半導体装置２＿２においては、モニタ回路１５による監視により、バンクウェイ１７＿０〜１７＿３に所定のデータ量のデータが書き込まれたと判定されると、図５９に示すように、プロセッサＣＰＵ１、ＣＰＵ２によって読み出しが実行される（ＣＰＵ１（ｆ１２−Ｒ）、ＣＰＵ２（ｆ３４−Ｒ））。また、読み出したデータを用いたフィルタ演算Ｂが実施され、バンクウェイ１８＿０〜１８＿３に書き込みが実施される（図５９：ＣＰＵ１（ｆ１２−Ｗ）、ＣＰＵ２（ｆ３４−Ｗ））。バンクウェイ１８＿０〜１８＿３への書き込みも、モニタ回路１５によって監視され、所定のデータ量に到達すると、フレーム２３０〜２３３として、半導体装置２＿３へ送信（通信）される。
【０１９９】
半導体装置２＿３においては、受信したフレーム２３０〜２３３が、バンクウェイ１７＿２、１７＿３に書き込まれる。バンクウェイ１７＿２、１７＿３に書き込まれたフレームのデータ量が、所定のデータ量に到達したか否かが、モニタ回路１５を用いて監視され、所定のデータ量に到達すると、出力演算Ｂ用タスクが起動される。すなわち、バンクウェイ１７＿２、１７＿３からデータが読み出され（図６０：ＣＰＵ１（ｆｇ１２−Ｒ）、ＣＰＵ２（ｆｇ３４−Ｒ））、出力演算Ｂが実施されて、バンクメモリ１８＿１、１８＿３へ書き込まれる（図６０：ＣＰＵ１（ｆｇ１２−Ｗ）、ＣＰＵ２（ｆｇ３４−Ｗ））。
【０２００】
これにより、フィルタ演算Ｂおよび出力演算Ｂも、図５９および図６０に示すように、タイミング制約１を満たすように実施することが可能である。
【０２０１】
フィルタ演算Ａ用タスクとフィルタ演算Ｂ用タスクは、半導体装置２＿１および２＿２において、並列的に実施され、出力演算Ａ用タスクおよび出力演算Ｂ用タスクは、半導体装置２＿３において、並列的に実施される。その結果、フィルタ演算および出力演算を、タイミング制約１を満たすように、実施することが可能である。
【０２０２】
前記した管理テーブルは、アクセスモニタ回路１５が備えていてもよい。この場合、管理テーブルは、アドレス領域内を細分化した各々のアドレス領域毎に、転送すべきデータが格納されているか否かを示す情報、または／およびアクセス時刻に関する情報、を保持している。スケジュール装置は、アクセスモニタ回路１５から提供される情報に基づいて、細分化した各々のアドレス領域に格納されているデータの中から、送信バッファに滞留している時間が長いデータ、または／およびタイミング制約の厳しいタスクで参照されるデータ、または／および実行優先度が高く設定されているタスクで参照されるデータ、を選択して優先的に転送するように動作する。また、半導体装置２＿３にデータが転送される場合、半導体装置２＿３におけるアクセスモニタ回路は、半導体装置２＿３の第１アドレス領域内を細分化した各々のアドレス領域毎に、転送元の半導体装置のメモリから転送されたデータが格納されているか否かを示す情報、または／およびアクセス時刻に関する情報、を保持している管理テーブルの状態をリアルタイムに更新する。また、半導体装置２＿３におけるアクセスモニタ回路は、管理テーブルの状態に基づいて、転送元の半導体装置のメモリから、半導体装置２＿３の第１アドレス領域に転送完了したデータ量に関する情報を、半導体装置２＿３におけるスケジュール装置に、リアルタイムに提供する。この場合、半導体装置２＿３におけるスケジュール装置は、アクセスモニタ回路から提供される情報に基づいて、第１アドレス領域に転送されたデータを参照するタスクを起動する、または／および第１アドレス領域に転送されたデータを参照するタスクの実行優先順位を変更する。
【０２０３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０２０４】
１  ネットワークシステム
２＿１〜２＿３  半導体装置
３  データ送信装置
４＿１〜４＿３  ネットワーク線路
５＿１〜５＿３  通信装置
１０（ＩＤ１）〜１０（ＩＤ３）  スケジュール装置
１１  タスク入出力データ制御回路
１２  タスク入出力データ制御レジスタ
１３  アドレス変換回路
１４  バススイッチ
１５  メモリアクセスモニタ回路
１７、１８  メモリ
ＣＰＵ１、ＣＰＵ２  プロセッサ
【図１】
2020071689.tif 000003
【図２】
2020071689.tif 000004
【図３】
2020071689.tif 000005
【図４】
2020071689.tif 000006
【図５】
2020071689.tif 000007
【図６】
2020071689.tif 000008
【図７】
2020071689.tif 000009
【図８】
2020071689.tif 000010
【図９】
2020071689.tif 000011
【図１０】
2020071689.tif 000012
【図１１】
2020071689.tif 000013
【図１２】
2020071689.tif 000014
【図１３】
2020071689.tif 000015
【図１４】
2020071689.tif 000016
【図１５】
2020071689.tif 000017
【図１６】
2020071689.tif 000018
【図１７】
2020071689.tif 000019
【図１８】
2020071689.tif 000020
【図１９】
2020071689.tif 000021
【図２０】
2020071689.tif 000022
【図２１】
2020071689.tif 000023
【図２２】
2020071689.tif 000024
【図２３】
2020071689.tif 000025
【図２４】
2020071689.tif 000026
【図２５】
2020071689.tif 000027
【図２６】
2020071689.tif 000028
【図２７】
2020071689.tif 000029
【図２８】
2020071689.tif 000030
【図２９】
2020071689.tif 000031
【図３０】
2020071689.tif 000032
【図３１】
2020071689.tif 000033
【図３２】
2020071689.tif 000034
【図３３】
2020071689.tif 000035
【図３４】
2020071689.tif 000036
【図３５】
2020071689.tif 000037
【図３６】
2020071689.tif 000038
【図３７】
2020071689.tif 000039
【図３８】
2020071689.tif 000040
【図３９】
2020071689.tif 000041
【図４０】
2020071689.tif 000042
【図４１】
2020071689.tif 000043
【図４２】
2020071689.tif 000044
【図４３】
2020071689.tif 000045
【図４４】
2020071689.tif 000046
【図４５】
2020071689.tif 000047
【図４６】
2020071689.tif 000048
【図４７】
2020071689.tif 000049
【図４８】
2020071689.tif 000050
【図４９】
2020071689.tif 000051
【図５０】
2020071689.tif 000052
【図５１】
2020071689.tif 000053
【図５２】
2020071689.tif 000054
【図５３】
2020071689.tif 000055
【図５４】
2020071689.tif 000056
【図５５】
2020071689.tif 000057
【図５６】
2020071689.tif 000058
【図５７】
2020071689.tif 000059
【図５８】
2020071689.tif 000060
【図５９】
2020071689.tif 000061
【図６０】
2020071689.tif 000062
【図６１】
2020071689.tif 000063
【図６２】
2020071689.tif 000064
【図６３】
2020071689.tif 000065
【図６４】
2020071689.tif 000066