(57)【要約】【課題】複数のタスクをリアルタイムで実行可能で、パフォーマンスの向上を図ることが可能な半導体装置を提供する。【解決手段】半導体装置ＦＬＳは、プロセッサＣＰＵ１〜ＣＰＵ３およびＤＭＡコントローラＤＭＡ１〜ＤＭＡ４（マスタ）と、メモリウェイＢＫ０−Ｗ０〜ＢＫ３−Ｗ３（スレーブ）と、複数のタスクがリアルタイムで実行されるように、複数のマスタを制御するリアルタイムスケジュール装置ＲＴＳＤとを備える。リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭとデータ確定判定レジスタＭＡＣＭ＿Ｒとを用いて、タスクの入力データが確定したか否かを判定し、入力データが確定したと判定したタスクを優先的に実行させる。【選択図】図１
2020071688.tif 000002
【特許請求の範囲】
【請求項１】
複数のマスタと、
スレーブと、
前記複数のマスタに接続され、複数のタスクをリアルタイムで実行するように、前記複数のマスタを制御するリアルタイムスケジュール装置と、
を備え、
前記リアルタイムスケジュール装置は、タスクが必要とする入力データが確定したか否かをモニタし、入力データが確定したと判定したタスクを優先的に実行させる、半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
前記半導体装置は、前記スレーブに対するマスタのアクセスを検出するアクセスモニタ回路を備え、
前記モニタは、前記アクセスモニタ回路によって検出されたアドレス信号に基づいて行われる、半導体装置。
【請求項３】
請求項２に記載の半導体装置において、
前記モニタは、前記アクセスモニタ回路によって検出されたアドレス信号が、所定のアドレス領域を指定したとき、タスクが必要とする入力データが確定したと判定する、半導体装置。
【請求項４】
請求項３に記載の半導体装置において、
前記スレーブは、メモリを備え、
前記モニタは、前記アクセスモニタ回路によって検出されたアドレス信号が、前記メモリにおける連続した所定のアドレス領域を指定するか否かを検出し、前記連続した所定のアドレス領域を指定するとき、タスクが必要とする入力データが確定したと判定する、半導体装置。
【請求項５】
請求項４に記載の半導体装置において、
前記半導体装置は、前記連続した所定のアドレス領域の先頭アドレスが設定されるタスク起動制御用ポインタと、前記連続した所定のアドレス領域の範囲を示すアドレス情報が設定されるタスク起動条件設定レジスタとを備え、
前記リアルタイムスケジュール装置は、前記アクセスモニタ回路によって検出されたアドレス信号が、前記タスク起動制御用ポインタに設定された先頭アドレスと前記タスク起動条件設定レジスタに設定されたアドレス情報によって定まる前記連続した所定のアドレス領域の全てを指定したとき、タスクが必要とする入力データが確定したと判定する、半導体装置。
【請求項６】
請求項５に記載の半導体装置において、
前記複数のタスクに対応した複数のタスク起動制御用ポインタおよび複数のタスク起動条件設定レジスタを備える、半導体装置。
【請求項７】
請求項６に記載の半導体装置において、
前記半導体装置は、タスクを一時停止させる閾値が設定されるタスク一時停止条件設定レジスタを備え、
前記リアルタイムスケジュール装置は、第１のタスクがライトしている前記メモリのアドレス領域において、第２のタスクがリードしていないアドレス領域が、前記タスク一時停止条件設定レジスタに格納されている閾値を超えたとき、前記第１のタスクを一時的に停止させる、半導体装置。
【請求項８】
請求項６に記載の半導体装置において、
前記入力データを構成するデータのサイズが、前記連続した所定のアドレス領域に満たないとき、前記連続した所定のアドレス領域には、前記入力データを構成するデータとエンド情報が格納され、前記リアルタイムスケジュール装置は、前記エンド情報を検出すると、タスクが必要とする入力データが確定したと判定する、半導体装置。
【請求項９】
請求項６に記載の半導体装置において、
前記入力データを構成するデータのサイズが、前記連続した所定のアドレス領域に満たないとき、前記連続した所定のアドレス領域には、前記入力データを構成するデータと所定の情報が格納される、半導体装置。
【請求項１０】
請求項６に記載の半導体装置において、
前記入力データを構成するデータのサイズが、前記連続した所定のアドレス領域を超えるとき、前記入力データは、前記連続した所定のアドレス領域を超えないように、分割される、半導体装置。
【請求項１１】
請求項１に記載の半導体装置において、
前記複数のマスタのそれぞれから、前記スレーブにアクセスしているサイクル数を求める転送情報取得回路を、更に備え、
タスクの実行にタイミング制約があるとき、前記タイミング制約が満たされるように、前記転送情報取得回路によって求められたサイクル数を基にして、前記複数のマスタと前記スレーブ間のアクセスルートの変更または／およびアクセススケジューリングを行う、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、特に複数のマスタを備え、複数のタスクをリアルタイムで実行可能な半導体装置に関する。
【背景技術】
【０００２】
半導体装置として、マイクロプロセッサ（以下、単にプロセッサとも称する）、ダイレクトメモリアクセスコントローラ（以下、ＤＭＡコントローラとも称する）およびメモリ回路を搭載した半導体装置が知られている。このような半導体装置は、例えばＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）向けのネットワークシステムにおいて用いられる。プロセッサは、プログラムに従って所定の処理を実行するとき、アドレス信号（以下、本明細書では、アドレス情報または／および転送制御情報を伝達する信号をまとめてアドレス信号と称する）を出力して、メモリ回路または周辺回路に対してアクセスを行う。ＤＭＡコントローラも、プロセッサと同様に、アドレス信号を出力して、メモリ回路または周辺回路に対してアクセスを行う。この場合、プロセッサおよびＤＭＡコントローラは、メモリ回路および周辺回路に対して、アクセスを行うマスタと見なすことができ、アクセスされるメモリ回路または周辺回路は、スレーブと見なすことができる。
【０００３】
例えばネットワークシステムでは、消費電力を抑制しながら、システム全体のパフォーマンス（以下、本明細書では、リアルタイム性能（より厳しいタイミング制約に対応できる能力）とスループット性能（データ転送レート、演算能力）の両方をまとめてパフォーマンスと称する）を向上させることが望まれている。このための有効な手段として、１個の半導体装置に搭載されるプロセッサまたは／およびＤＭＡコントローラの個数を増やし、処理をリアルタイムで並列動作させることが考えられる。
【０００４】
リアルタイムに関する技術は、たとえば特許文献１〜３に記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−４９４９７号公報
【特許文献２】特開２００４−２２００９３号公報
【特許文献３】国際公開２００８／０２３４２６号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数の処理をリアルタイムで行うために、リアルタイムオペレーティングシステム（以下、ＲＴＯＳとも称する）をプロセッサで実行させ、ＲＴＯＳ上で、処理に対応するアプリケーションプログラム（以下、単にアプリケーションとも称する）を実行することが行われる。この場合、アプリケーションは複数のタスクに分けられ、ＲＴＯＳによってタスクの切換を行いながら、複数のタスクを実行することにより、アプリケーションが実行されることになる。ＲＴＯＳの場合、タスクの切換（タスクスイッチ）に時間が必要とされる。このタスクスイッチの高速化を図る技術として、例えば特許文献３に記載されているように、ハードウェアでＲＴＯＳを実現するハーウェアＲＴＯＳ（以下、ＨＷ−ＲＴＯＳとも称する）がある。
【０００７】
本発明者は、ＨＷ−ＲＴＯＳの採用によりタスクスイッチ時間を短縮し、リアルタイム性能を向上させ、さらにタスクスイッチ以外の観点でリアルタイム性能の向上を図る方法を検討した。
【０００８】
タスクは、その入力データが確定すると、実行させることが可能である。しかしながら、タスクのスケジューリングを行うタスクスケジューラは、複数のタスクにおいて、入力データの確定する順番が予測困難な場合、入力データが確定したタスクを優先的に実行させることができない。そのため、システム全体でのパフォーマンス低下が発生する。
【０００９】
特許文献１には、予め定められた時間経過したときタスクの処理を中断させてタスクを切り換える方式と、タスク自身が例えばフレームの区切りをきっかけに処理を中断してタスクを切り換える方式が記載されている。これらのどちらの方式であっても、各タスクについて複数の処理の入出力系統の現状に対する評価を行うためにデータの入出力を行うタスクを中断する必要が生じ、この中断時間の発生により、リアルタイム性能の低下が発生する。
【００１０】
特許文献２には、データの入出力部にＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）型記憶手段を設け、データがＦＩＦＯ型記憶手段を介してタスクに供給される技術が記載されている。ＦＩＦＯ型記憶手段では最初に入力されたデータから順番に取り出す必要がある為、データの入出力部にＦＩＦＯ型記憶手段を用いた場合、タスクは、直接入力データをランダムな順番でリード、または／および、直接出力データをランダムな順番でライトすることが出来ない。例えばあるタスクで入出力データを圧縮／解凍しなければならない場合は、ＦＩＦＯ型記憶手段に格納されているデータを別途ランダムアクセス可能なメモリ領域にコピーしてから圧縮／解凍を行い、さらに出力データをＦＩＦＯ型記憶手段に格納する必要が生じる。これらのコピー時間の発生により、リアルタイム性能の低下が発生する。
【００１１】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
一実施の形態による半導体装置は、複数のマスタと、スレーブと、複数のマスタに接続され、複数のタスクがリアルタイムで実行されるように、複数のマスタを制御するリアルタイムスケジュール装置とを備える。リアルタイムスケジュール装置は、タスクが必要とする入力データが確定したか否かをモニタし、入力データが確定したと判定したタスクを優先的に実行させる。
【発明の効果】
【００１３】
一実施の形態によれば、複数のタスクをリアルタイムで実行可能で、パフォーマンスの向上を図ることが可能な半導体装置を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１に係わる半導体装置の構成を示すブロック図である。
【図２】実施の形態１に係わる半導体装置に形成されたメモリ回路のアドレス領域を示す図である。
【図３】実施の形態１に係わる半導体装置の動作概要を説明するタイミング図である。
【図４】実施の形態１に係わる半導体装置のタイミングを示すタイミング図である。
【図５】（Ａ）および（Ｂ）は、実施の形態１に係わるタイミング制約設定レジスタを説明する図である。
【図６】実施の形態１に係わる並列起動時の動作を示すタイミング図である。
【図７】実施の形態１に係わる並列起動時におけるリアルタイムスケジュール装置の制御を説明する図である。
【図８】（Ａ）および（Ｂ）は、実施の形態１に係わる並列起動時の動作を説明するタイミング図である。
【図９】実施の形態１に係わる半導体装置の動作を説明する説明図である。
【図１０】実施の形態１に係わるリアルタイムスケジュール装置の動作を示すフローチャート図である。
【図１１】（Ａ）〜（Ｃ）は、実施の形態１に係わるデータ確定判定の構成を示す図である。
【図１２】（Ａ）および（Ｂ）は、実施の形態に係わる半導体装置の動作を説明するための図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は、原則として省略する。
【００１６】
（実施の形態１）
＜半導体装置の構成＞
図１は、実施の形態１に係わる半導体装置の構成を示すブロック図である。図１において、ＦＬＳは、半導体装置を示している。半導体装置ＦＬＳは、特に制限されないが、ネットワークシステム（図示しない）を構成する半導体装置である。ネットワークシステムは、複数の半導体装置等によって構成されるが、ここでは、説明に必要な半導体装置ＦＬＳのみが示されている。半導体装置ＦＬＳは、ネットワークシステムにおいて、フレームの送受信を行う機能を有している。例えば、半導体装置ＦＬＳは、フレームを受信し、受信したフレームに対して所定の演算および所定の処理を行い、演算および処理が行われたフレームを送信する機能を有している。
【００１７】
半導体装置ＦＬＳは、１個の半導体基板に複数の回路ブロックが形成されているが、図１には、説明に必要な回路ブロックのみが描かれている。図１において、ＣＰＵ１〜ＣＰＵ３は、プロセッサを示し、ＤＭＡ１〜ＤＭＡ４は、ＤＭＡコントローラを示している。また、ＲＴＳＤは、リアルタイムスケジュール装置を示し、ＡＤ−ＣＶは、アドレス変換回路を示し、ＢＢ−ＳＷは、バススイッチ回路を示し、ＢＫ０〜ＢＫ３は、図示しないメモリ回路によって構成されたバンクメモリを示している。
【００１８】
また、図１において、ＴＩＳＣ１は、第１転送情報取得回路を示し、ＴＩＳＣ２は、第２転送情報取得回路を示し、ＭＡＣＭは、メモリアクセスモニタ回路を示している。同図において、リアルタイムスケジュール装置ＲＴＳＤ内に示されているＴＩＳＣ＿Ｒは、リアルタイムスケジュール装置ＲＴＳＤが、第１転送情報取得回路ＴＩＳＣ１および第２転送情報取得回路ＴＩＳＣを用いて処理を行う際に使用するタイミング制約レジスタを示している。同様に、リアルタイムスケジュール装置ＲＴＳＤ内に示されているＭＡＣＭ＿Ｒは、リアルタイムスケジュール装置ＲＴＳＤが、メモリアクセスモニタ回路ＭＡＣＭを用いて処理を行う際に使用するデータ確定判定レジスタを示している。ここでは、リアルタイムスケジュール装置ＲＴＳＤが、タイミング制約レジスタＴＩＳＣ＿Ｒおよびデータ確定判定レジスタＭＡＣＭ＿Ｒを備えている例を説明するが、これに限定されず、これらのレジスタは半導体装置ＦＬＳ内に設けられていればよい。
【００１９】
リアルタイムスケジュール装置ＲＴＳＤは、ハードウェアＲＴＯＳの機能を有している。すなわち、特許文献３に記載されているように、ハードウェアで構成されたＲＴＯＳの機能を備えている。リアルタイムスケジュール装置ＲＴＳＤは、プロセッサＣＰＵ１〜ＣＰＵ３およびＤＭＡコントローラＤＭＡ１〜ＤＭＡ４に接続されており、これらのプロセッサおよびＤＭＡコントロールを制御している。図１では、リアルタイムスケジュール装置ＲＴＳＤによるプロセッサＣＰＵ１〜ＣＰＵ３の制御が、模式的に符号ＣＰＣ１〜ＣＰＣ３で示されている。同様に、リアルタイムスケジュール装置ＲＴＳＤによるＤＭＡコントローラＤＭＡ１〜ＤＭＡ４の制御が、模式的に符号ＤＭＣ１〜ＤＭＣ４で示されている。
【００２０】
リアルタイムスケジュール装置ＲＴＳＤは、プロセッサＣＰＵ１〜ＣＰＵ３のそれぞれにタスクを割り当て、プロセッサが割り当てられたタスクを実行するように制御する。また、リアルタイムスケジュール装置ＲＴＳＤは、タスクを実行するとき、必要に応じてＤＭＡコントローラＤＭＡ１〜ＤＭＡ４を割り当てるように制御する。プロセッサＣＰＵ１〜ＣＰＵ３のそれぞれは、割り当てられたタスクを実行する際に、割り当てられたＤＭＡコントローラを用いて、データの転送を行う。
【００２１】
アドレス変換回路ＡＤ−ＣＶは、入力端子ＡＤＩ１〜ＡＤＩ７、出力端子ＡＤＯ１〜ＡＤＯ７および制御端子ＡＤＣを備えている。入力端子ＡＤＩ１〜ＡＤＩ３には、対応するプロセッサＣＰＵ１〜ＣＰＵ３から出力されたアドレス信号が供給され、入力端子ＡＤＩ４〜ＡＤＩ７には、対応するＤＭＡコントローラＤＭＡ１〜ＤＭＡ４から出力されたアドレス信号が供給される。入力端子ＡＤＩ１〜ＡＤＩ７に供給されたアドレス信号は、変換されて、対応する出力端子ＡＤＯ１〜ＡＤＯ７から出力される。例えば、入力端子ＡＤＩ１に供給されたプロセッサＣＰＵ１からのアドレス信号は、変換されて、対応する出力端子ＡＤＯ１から出力される。同様に、入力端子ＡＤＩ４に供給されたＤＭＡコントローラＤＭＡ１からのアドレス信号は、変換されて、対応する出力端子ＡＤＯ４から出力される。
【００２２】
制御端子ＡＤＣには、リアルタイムスケジュール装置ＲＴＳＤから制御信号が供給され、この制御信号に従って、アドレス変換回路ＡＤ−ＣＶは動作する。この制御信号は、例えば変換に用いられる変換情報を含んでいる。リアルタイムスケジュール装置ＲＴＳＤから供給される変換情報に従って、アドレス変換回路ＡＤ−ＣＶは、入力端子に供給されたアドレス信号を変換し、出力端子から出力する。
【００２３】
バススイッチ回路ＢＢ−ＳＷは、入力端子ＢＢＩ１〜ＢＢＩ７、出力端子ＢＢ０（０）〜ＢＢ０（３）、ＢＢ１（０）〜ＢＢ１（３）、ＢＢ２（０）〜ＢＢ２（３）、ＢＢ３（０）〜ＢＢ３（３）および制御端子ＢＢＣを備えている。入力端子ＢＢＩ１〜ＢＢＩ７は、アドレス変換回路ＡＤ−ＣＶの対応する出力端子ＡＤＯ１〜ＡＤＯ７に接続され、出力端子は、バンクメモリＢＫ０〜ＢＫ３に接続されている。また、制御端子ＢＢＣは、リアルタイムスケジュール装置ＲＴＳＤに接続されている。リアルタイムスケジュール装置ＲＴＳＤが、選択信号を制御端子ＢＢＣに供給することにより、バススイッチ回路ＢＢ−ＳＷは、供給された選択信号によって指定されている入力端子と出力端子を電気的に接続する。例えば、選択端子ＢＢＣに供給されている選択信号に従って、入力端子ＢＢＩ１〜ＢＢＩ３が、出力端子ＢＢ０（０）〜ＢＢ０（２）に電気的に接続され、入力端子ＢＢＩ４〜ＢＢＩ７が出力端子ＢＢ１（０）〜ＢＢ１（３）に電気的に接続される。一例を説明したが、電気的に接続する入力端子と出力端子は、制御端子ＢＢＣに供給される選択信号によって定められることになる。なお、バススイッチ回路ＢＢ−ＳＷは、マスタとスレーブの間で双方向（ライト時はアドレス信号と同じ方向、リード時はアドレス信号と反対方向）にデータを転送する為のデータ入力端子、およびデータ出力端子を備えるが、図面では省略している。同様に、バススイッチ回路ＢＢ−ＳＷは、アドレス信号と反対方向の転送制御信号を入力、および出力する端子も備えているが、図面では省略している。
【００２４】
実施の形態１においては、マスタとして機能する３個のプロセッサＣＰＵ１〜ＣＰＵ３と４個のＤＭＡコントローラＤＭＡ１〜ＤＭＡ４から出力されているアドレス信号が、アドレス変換回路ＡＤ−ＣＶによって変換され、バススイッチ回路ＢＢ−ＳＷの入力端子に供給される。このアドレス変換により形成されたアドレス信号（以下、変換アドレス信号とも称する）が、出力端子ＢＢ０（０）〜ＢＢ０（３）、ＢＢ１（０）〜ＢＢ１（３）、ＢＢ２（０）〜ＢＢ２（３）およびＢＢ３（０）〜ＢＢ３（３）のうち、制御端子ＢＢＣに供給されている選択信号によって指定された出力端子へ供給されることになる。
【００２５】
バンクメモリＢＫ０〜ＢＫ３は、バススイッチ回路ＢＢ−ＳＷから供給された変換アドレス信号によってアクセスされ、変換アドレス信号によって指定されたアドレスに対してデータの書込み／読み出しが行われる。すなわち、バンクメモリＢＫ０〜ＢＫ３は、スレーブとして機能する。
【００２６】
バンクメモリＢＫ０〜ＢＫ３は、特に制限されないが、連続したアドレス領域に配置されている。また、バンクメモリＢＫ０〜ＢＫ３のそれぞれは、特に制限されないが、４個のメモリウェイによって構成されている。すなわち、バンクメモリＢＫ０は、４個のメモリウェイＢＫ０−Ｗ０〜ＢＫ０−Ｗ３により構成され、バンクメモリＢＫ１は、メモリウェイＢＫ１−Ｗ０〜ＢＫ１−Ｗ３により構成されている。同様に、バンクメモリＢＫ２は、メモリウェイＢＫ２−Ｗ０〜ＢＫ２−Ｗ３により構成され、バンクメモリＢＫ３は、メモリウェイＢＫ３−Ｗ０〜ＢＫ３−Ｗ３により構成されている。後で、図２を用いて詳しく説明するが、バンクメモリを構成する４個のメモリウェイは、バンクメモリのアドレス領域を分割したアドレス領域を有しており、互いに異なるアドレス領域を有している。
【００２７】
バススイッチ回路ＢＢ−ＳＷの出力端子ＢＢ０（０）〜ＢＢ０（３）は、メモリウェイＢＫ０−Ｗ０〜ＢＫ０−Ｗ３に接続され、出力端子ＢＢ１（０）〜ＢＢ１（３）は、メモリウェイＢＫ１−Ｗ０〜ＢＫ１−Ｗ３に接続されている。同様に、バススイッチ回路ＢＢ−ＳＷの出力端子ＢＢ２（０）〜ＢＢ２（３）は、メモリウェイＢＫ２−Ｗ０〜ＢＫ２−Ｗ３に接続され、出力端子ＢＢ３（０）〜ＢＢ３（３）は、メモリウェイＢＫ３−Ｗ０〜ＢＫ３−Ｗ３に接続されている。これにより、プロセッサおよびＤＭＡコントローラから出力されたアドレス信号は、変換アドレス信号に変換されたあと、リアルタイムスケジュール装置ＲＴＳＤの選択信号によって指定されたメモリウェイに供給され、メモリウェイ内のアドレスに対して、書込みまたは読み出し動作が行われることになる。
【００２８】
バススイッチ回路ＢＢ−ＳＷは、７個のマスタ（ＣＰＵ０〜ＣＰＵ３、ＤＭＡ１〜ＤＭＡ４）と１６個のスレーブ（メモリウェイＢＫ０−Ｗ０〜ＢＫ３−Ｗ３）間を、選択的に接続することになる。このとき、バススイッチ回路ＢＢ−ＳＷは、複数のマスタと複数のスレーブ間を同時に接続するため、バススイッチ回路ＢＢ−ＳＷは、マルチレイヤーマトリクス構成のバスシステムを構成していると見なすことができる。
【００２９】
第１転送情報取得回路ＴＩＳＣ１は、バススイッチ回路ＢＢ−ＳＷの入力端子ＢＢＩ１〜ＢＢＩ７に接続されており、入力端子ＢＢＩ１〜ＢＢＩ７のそれぞれにおける変換アドレス信号（アドレス情報または／および転送制御情報）に基づいて、サイクル数を取得する。すなわち、第１転送情報取得回路ＴＩＳＣ１は、プロセッサＣＰＵ１〜ＣＰＵ３およびＤＭＡコントローラＤＭＡ１〜ＤＭＡ４のそれぞれが、メモリウェイを、変換アドレス信号によってアクセスするときのサイクル数を取得する。取得したサイクル数は、リアルタイムスケジュール装置ＲＴＳＤへ供給される。
【００３０】
また、第２転送情報取得回路ＴＩＳＣ２は、バススイッチ回路ＢＢ−ＳＷの出力端子ＢＢ０（０）〜ＢＢ０（３）、ＢＢ１（０）〜ＢＢ１（３）、ＢＢ２（０）〜ＢＢ２（３）およびＢＢ３（０）〜ＢＢ３（３）に接続されている。この第２転送情報取得回路ＴＩＳＣ２は、出力端子ＢＢ０（０）〜ＢＢ０（３）、ＢＢ１（０）〜ＢＢ１（３）、ＢＢ２（０）〜ＢＢ２（３）およびＢＢ３（０）〜ＢＢ３（３）のそれぞれにおける変換アドレス信号（アドレス情報または／および転送制御情報）に基づいて、サイクル数を取得する。すなわち、第２転送情報取得回路ＴＩＳＣ２は、バススイッチ回路ＢＢ−ＳＷから出力される変換アドレス信号によって、メモリウェイへアクセスするサイクル数を取得する。取得したサイクル数は、リアルタイムスケジュール装置ＲＴＳＤへ供給される。
【００３１】
メモリアクセスモニタ回路ＭＡＣＭは、バススイッチ回路ＢＢ−ＳＷの出力端子ＢＢ０（０）〜ＢＢ０（３）、ＢＢ１（０）〜ＢＢ１（３）、ＢＢ２（０）〜ＢＢ２（３）およびＢＢ３（０）〜ＢＢ３（３）に接続されている。メモリアクセスモニタ回路ＭＡＣＭは、出力端子ＢＢ０（０）〜ＢＢ０（３）、ＢＢ１（０）〜ＢＢ１（３）、ＢＢ２（０）〜ＢＢ２（３）およびＢＢ３（０）〜ＢＢ３（３）のそれぞれにおける変換アドレス信号を取得する。取得した変換アドレス信号は、リアルタイムスケジュール装置ＲＴＳＤへ供給される。
【００３２】
リアルタイムスケジュール装置ＲＴＳＤは、第１転送情報取得回路ＴＩＳＣ１および第２転送情報取得回路ＴＩＳＣ２から供給されたサイクル数を基にして、同じ時間帯（同じ期間）において、複数のマスタから同一のスレーブ（メモリウェイ）へアクセスしているサイクル数を取得する。すなわち、アクセス競合が発生しているときのサイクル数をアクセスサイクル数として取得する。バススイッチ回路ＢＢ−ＳＷは、任意の複数の入力端子と任意の複数の出力端子間を、同時に電気的に接続（電気接続）することが可能である。
【００３３】
例えば、プロセッサＣＰＵ１とＤＭＡコントローラＤＭＡ１とが、同時にメモリウェイＢＫ１−Ｗ０をアクセスする場合を考える。この場合、第１転送情報取得回路ＴＩＳＣ１は、出力端子ＡＤＯ１およびＡＤＯ４における変換アドレス信号（アドレス情報または／および転送制御情報）の変化から、サイクル数を取得する。
【００３４】
この実施の形態１においては、このとき、第２転送情報取得回路ＴＩＳＣ２は、出力端子ＢＢ１（０）における変換アドレス信号（アドレス情報または／および転送制御情報）の変化から、サイクル数を取得する。リアルタイムスケジュール装置ＲＴＳＤは、第１転送情報取得回路ＴＩＳＣ１から供給される２個（入力端子ＢＢＩ１およびＢＢＩ４）のサイクル数から、複数（２個）のマスタがアクセスを行っていることを判定する。このとき、第２転送情報取得回路ＴＩＳＣ２から供給されているサイクル数は、１個（出力端子ＢＢ１（０））であるため、リアルタイムスケジュール装置ＲＴＳＤは、メモリウェイＢＫ１−Ｗ０に対するアクセスにおいて、アクセス競合が発生していることを判定することができる。また、第１転送情報取得回路ＴＩＳＣ１および第２転送情報取得回路ＴＩＳＣ２のそれぞれから供給されているサイクル数を基にして、アクセス競合しているサイクル数（アクセスサイクル数）を判定することができる。
【００３５】
尚、バススイッチ回路ＢＢ−ＳＷのバスプロトコル仕様によっては、第１転送情報取得回路ＴＩＳＣ１または第２転送情報取得回路ＴＩＳＣ２のいずれか一方だけで、アクセス競合が発生しているときのアクセスサイクル数を取得できる場合があり、この場合は第１転送情報取得回路ＴＩＳＣ１または第２転送情報取得回路ＴＩＳＣ２のいずれか一方を削除することができる。
【００３６】
メモリウェイＢＫ１−Ｗ０に対して、２個のマスタのアクセスが競合している場合を説明したが、同じスレーブに対して、複数のマスタのアクセスが競合している場合も同様にして、リアルタイムスケジュール装置ＲＴＳＤは、競合しているアクセスのサイクル数（アクセスサイクル数）を取得することができる。
【００３７】
アプリケーションを構成するタスクが、リアルタイムスケジュール装置ＲＴＳＤによって、プロセッサＣＰＵ１〜ＣＰＵ３に割り当てられる。また、リアルタイムスケジュール装置ＲＴＳＤは、タスクにおいて、ＤＭＡコントローラを使う場合、タスクにＤＭＡコントローラＤＭＡ１〜ＤＭＡ４を割り当てる。プロセッサＣＰＵ１〜ＣＰＵ３のそれぞれが、割り当てられたタスクを実行することにより、アプリケーションが実行されることになる。
【００３８】
タスクの実行において、プロセッサＣＰＵ１〜ＣＰＵ３または／およびＤＭＡコントローラＤＭＡ１〜ＤＭＡ４は、スレーブであるメモリウェイＢＫ０（０）−Ｗ０〜ＢＫ３（３）−Ｗ３をアクセスし、例えば演算等で用いるデータを、メモリウェイに書込みまたは／および読み出しを行う。もし、同一時間帯において、同じスレーブ（メモリウェイ）に対して、複数のマスタ（プロセッサまたは／およびＤＭＡコントローラ）からアクセスがあった場合、第１転送情報取得回路ＴＩＳＣ１および第２転送情報取得回路ＴＩＳＣ２からのサイクル数に基づいて、リアルタイムスケジュール装置ＲＴＳＤは、競合しているアクセスサイクル数を取得する。
【００３９】
リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭから供給された変換アドレス信号を基にして、バンクメモリＢＫ０〜ＢＫ３における所定のアドレスから始まる連続した所定のアドレス領域がアクセスされた否かを検出する。連続した所定のアドレス領域がアクセスされたと判定した場合、リアルタイムスケジュール装置ＲＴＳＤは、タスクの入力データが確定したと判定し、その入力データを処理するタスクを起動させる。
【００４０】
＜メモリ回路＞
次に、スレーブとして機能するメモリ回路のアドレス領域を説明する。図２は、実施の形態１に係わる半導体装置に形成されたメモリ回路のアドレス領域を示す図である。メモリ回路は、連続したアドレス領域を有している。
【００４１】
図２において、左側に示した０００００Ｈ〜３ＦＦＦＦＨは、半導体装置ＦＬＳに形成されたメモリ回路のアドレスを示している。すなわち、実施の形態１において、メモリ回路は、アドレス０００００Ｈから３ＦＦＦＦＨの連続したアドレス領域を有している。なお、本明細書において、数字の後ろ側に付された符合Ｈは、その数字が１６進数であることを示している。
【００４２】
連続したアドレス領域は、４個に分割され、バンクメモリＢＫ０〜ＢＫ３に割り当てられている。図２では、０００００Ｈ〜０ＦＦＦＦＨのアドレス領域が、バンクメモリＢＫ０の領域として割り当てられ、１００００Ｈ〜１ＦＦＦＦＨのアドレス領域が、バンクメモリＢＫ１の領域として割り当てられている。同様にして、２００００Ｈ〜２ＦＦＦＦＨのアドレス領域が、バンクメモリＢＫ２の領域として割り当てられ、３００００Ｈ〜３ＦＦＦＦＨのアドレス領域が、バンクメモリＢＫ３の領域として割り当てられている。すなわち、バンクメモリＢＫ０〜ＢＫ３のそれぞれは、互いに異なる６４ＫＢ（キロバイト）のアドレス領域を有している。
【００４３】
また、それぞれのバンクメモリは、４個のメモリウェイによって構成されている。この４個のメモリウェイには、実施の形態１では、バンクメモリの開始アドレスから１ＫＢ（キロバイト）単位で、メモリウェイがＷ０、Ｗ１、Ｗ２，Ｗ３、Ｗ０、Ｗ１、Ｗ２、Ｗ３と繰り返して割り当てられている。バンクメモリＢＫ１を例にして述べると、バンクメモリＢＫ１は、メモリウェイＢＫ１−Ｗ０〜ＢＫ１−Ｗ３により構成されており、バンクメモリＢＫ１の開始アドレス１００００Ｈから１０３ＦＦＨまでのアドレス領域が、メモリウェイＢＫ１−Ｗ０の領域として割り当てられ、１０４００Ｈから１０７ＦＦＨまでのアドレス領域が、メモリウェイＢＫ１−Ｗ１の領域として割り当てられている。同様にして、１０８００Ｈから１０ＢＦＦＨまでのアドレス領域が、メモリウェイＢＫ１−Ｗ２の領域として割り当てられ、１０Ｃ００Ｈから１０ＦＦＦＨまでのアドレス領域が、メモリウェイＢＫ１−Ｗ３の領域として割り当てられている。メモリウェイＢＫ１−Ｗ３の次は再びメモリウェイＢＫ１−Ｗ０に戻り、１１０００Ｈから１１３ＦＦＨまでのアドレス領域が、メモリウェイＢＫ１−Ｗ０の領域として割り当てられ、１１４００Ｈから１１７ＦＦＨまでのアドレス領域が、メモリウェイＢＫ１−Ｗ１の領域として割り当てられている。同様にして、１１８００Ｈから１１ＢＦＦＨまでのアドレス領域が、メモリウェイＢＫ１−Ｗ２の領域として割り当てられ、１１Ｃ００Ｈから１１ＦＦＦＨまでのアドレス領域が、メモリウェイＢＫ１−Ｗ３の領域として割り当てられている。同様にして、１２０００Ｈから１ＦＦＦＦＨまでのアドレス領域が、メモリウェイＢＫ１−Ｗ０〜ＢＫ１−Ｗ３に割り当てられている。すなわち、メモリウェイＷ０〜Ｗ３のそれぞれは、１ＫＢの連続したアドレス領域を１６個備えている。
【００４４】
他のバンクメモリも、同様に、４個のメモリウェイにより構成され、メモリウェイのそれぞれの領域は、互いに異なるアドレス領域に割り当てられている。
【００４５】
＜半導体装置の動作＞
つぎに、実施の形態１に係わる半導体装置ＦＬＳの動作を説明する。ここでは、半導体装置ＦＬＳが実行するアプリケーションとして、半導体装置ＦＬＳが受信したフレームに所定の演算および所定の処理を行い、演算および処理の行われたフレームを送信するプログラムを例として説明する。また、受信したフレームのデータは、圧縮されているものとする。先ず、図３を用いて、動作の概要を説明する。図３は、実施の形態１に係わる半導体装置ＦＬＳの動作概要を説明するタイミング図である。
【００４６】
図３において、横軸ｔは時間を示している。図３において、送受信開始イベントの最小時間Ｍｉｎと最大時間Ｍａｘとの間のタイミングで、フレームの送受信が開始され、送受信終了イベントの最小時間Ｍｉｎと最大時間Ｍａｘとの間のタイミングで、フレームの送受信が完了する。図３において、左側に示した送受信開始イベントと送受信終了イベントの間で、フレーム１が、フレーム受信装置（図示しない）により受信され、通信バッファ０（図示しない）に格納される。通信バッファ０に格納されたデータは、所定の演算（出力演算）が行われて、ＳＹＮＣ０イベントに同期して半導体装置ＦＬＳの外部に出力される。一方、ＳＹＮＣ１イベントに同期して半導体装置ＦＬＳに入力されたデータは、所定の演算（入力演算）が行われ、通信バッファ１（図示しない）に格納される。通信バッファ１に格納されたデータは、右側に示した送受信開始イベントと送受信終了イベントの間で、フレーム送信装置（図示しない）によりフレーム２に変換されて送信される。送信されたフレーム２は、特に制限されないが、半導体装置ＦＬＳにネットワーク接続された外部装置で受信され、フレーム１と同様に、所定の演算が行われる。
【００４７】
このアプリケーションに許容される最小サイクルタイムは、図３に示すように、送受信終了イベントの最大時間Ｍａｘと送受信開始イベントの最小時間Ｍｉｎとの間の期間となる。半導体装置ＦＬＳは、この最小サイクルタイムの間に、アプリケーションを構成する複数の親タスクを実行する。図３では、アプリケーションを構成する親タスクが、３個の場合が示されている。すなわち、送受信終了イベントにより起動される第１親タスクと、シンク（ＳＹＮＣ）１イベントにより起動される第２親タスクと、第１タスクと同様に送受信終了イベントにより起動される第３親タスクである。ここで、第１親タスクは、通信バッファ１に格納されたデータを演算バッファ１へコピーし、所定の出力演算を行うタスクである。第２親タスクは、半導体装置ＦＬＳに入力されたデータに対して入力演算を行い、通信バッファ１へコピーするタスクである。また、第３親タスクは、第１親タスクが起動されてから、第２親タスクが終了するまでの間に、送受信開始イベントが発生しないことと、送受信終了イベントが発生しないことを監視するタスクである。
【００４８】
＜タイミング制約＞
第１親タスクは、送受信終了イベントからシンク（ＳＹＮＣ）０イベントの間の期間に、タスクの実行を終了しておくことが要求される。すなわち、第１親タスクの実行時間は、送受信終了イベントからシンク０イベントの間の期間と同じか、短いことが要求される。シンク０イベントのタイミングに注目すると、このシンク０イベントが発生するまでに、第１親タスクの出力が有効になっていることが必要とされる。同様に、第２親タスクの実行時間は、シンク１イベントと送受信開始イベントとの間の時間と同じか、短くすることが要求される。また、第３親タスクの実行時間は、フレーム１の送受信終了イベントとフレーム２の送受信開始イベントの間の時間と同じか、短いことが要求される。
【００４９】
第１親タスクが、例えばシンク０イベントまでに終了していないと、半導体装置ＦＬＳの外部に接続された装置は、シンク０イベントに同期して半導体装置ＦＬＳにより出力演算されたデータを受け取ることができず、誤動作してしまう。同様に、第２親タスクが送受信開始イベントまでに終了していない場合には、半導体装置ＦＬＳにネットワーク接続された外部装置は、半導体装置ＦＬＳにより入力演算されたデータを受け取ることができず、誤動作してしまう。同様に、第３親タスクが送受信開始イベントまたは／および送受信終了イベントまでに終了していない場合にも、誤動作してしまう。すなわち、第１親タスクには、シンク０イベントが発生するまでに、処理を完了させておくと言うタイミング制約１が存在する。同様に、第２親タスクは、送受信開始イベントの発生までに、処理を完了させておくと言うタイミング制約２があり、第３親タスクには、第１親タスクが起動されてから、第２親タスクが終了するまでの間に、送受信開始イベントが発生しないと言うタイミング制約３があり、第１親タスクが起動されてから、第２親タスクが終了するまでの間に、送受信終了イベントが発生しないと言うタイミング制約４が存在する。
【００５０】
図４は、実施の形態１に係わる半導体装置のタイミングをより詳しく示したタイミング図である。図４は、上記したタイミング制約１およびタイミング制約２に違反した場合を示している。図４に示したタイミングにおいては、「バッファコピー＋出力演算」を行う第１親タスクに対して、リアルタイムスケジュール装置ＲＴＳＤがプロセッサＣＰＵ１とＤＭＡコントローラＤＭＡ１を割り当てている。同様に、「入力演算＋バッファコピー」を行う第２親タスクに対しても、リアルタイムスケジュール装置ＲＴＳＤがプロセッサＣＰＵ１とＤＭＡコントローラＤＭＡ１を割り当てている。
【００５１】
第１親タスクが起動すると、通信バッファ１に格納されたデータをＤＭＡコントローラＤＭＡ１が、演算バッファ１へ転送（コピー）する。通信バッファ１に格納されたデータのうちの先頭ブロックを演算バッファ１へ転送すると（転送終了）、プロセッサＣＰＵ１が、演算バッファ１に転送された先頭ブロックに対して演算を実施する。以降、同様の動作が行われ、演算バッファ１には、フレーム１の全ブロックが転送（コピー）され、プロセッサＣＰＵ１は、演算バッファ１に転送されたブロックに対しての演算を終了する。シンク０イベントまでに、転送が終了していない場合または／およびプロセッサＣＰＵ１による演算が終了していない場合、タイミング制約１に対して制約違反となる。言い換えるならば、タイミング制約１を満たしていないことになる。
【００５２】
また、シンク１イベントに同期して半導体装置ＦＬＳに入力されたデータは、ラッチ（入力ラッチ）され、保持される。シンク１イベントが発生することにより、第２親タスクが起動すると、プロセッサＣＰＵ１は、ラッチされているフレームの先頭ブロックに対して所定の演算（入力演算）を行う。所定の演算が行われたフレームの先頭ブロックは、ＤＭＡコントローラＤＭＡによって通信バッファ１へ転送（コピー）される。以降、同様の動作が行われ、プロセッサＣＰＵ１は、ラッチされているフレームの全ブロックに対して所定の入力演算を行い、ＤＭＡコントローラＤＭＡ１は、所定の入力演算が行われたブロックを通信バッファ１へ転送する。プロセッサＣＰＵ１による演算の終了時刻またはＤＭＡコントローラＤＭＡ１による転送（コピー）の終了時刻が、送受信開始イベントよりも遅れると、タイミング制約２に対する制約違反となる。
【００５３】
第１親タスクにおいて制約違反が発生すると、第１親タスクで出力演算した結果を使用する外部装置に適切なデータを出力することが困難となる。また、第２親タスクにおいて制約違反が発生すると、適切なフレームをフレーム２として送信することが困難となる。いずれの場合においても、予め定めたタイミングで、タスクの処理が終わらないため、半導体装置ＦＬＳが出力するデータまたは／およびフレームを使用する外部装置を、予め定めたタイミングで、正常に動作させることはできない。
【００５４】
また、第１親タスクから第２親タスクが実行されている期間、すなわち図３に示されている「バッファコピー＋出力演算」の開始時刻から「入力演算＋バッファコピー」の終了時刻までの最小サイクルタイムの間に、送受信開始イベントが発生しないようにすると言うタイミング制約３と、最小サイクルタイムの間に、送受信終了イベントが発生しないようにすると言うタイミング制約４も存在する。
【００５５】
＜タイミング制約設定レジスタ＞
実施の形態１に係わるリアルタイムスケジュール装置ＲＴＳＤは、上記したタイミング制約に係わる設定レジスタを、図１に示したタイミング制約設定レジスタＴＩＳＣ＿Ｒとして備えている。図５は、実施の形態１に係わるタイミング制約設定レジスタを説明する図である。図５（Ａ）は、タイミング制約を説明するためのタイミング図である。図５（Ｂ）は、リアルタイムスケジュール装置ＲＴＳＤが備えているタイミング制約設定レジスタＴＩＳＣ＿Ｒの構成を示す図である。
【００５６】
図５（Ａ）は、図３と類似しているため、相違点を説明する。図５（Ａ）では、上記したタイミング制約１〜４が、図３に示したタイミング図に追記されている。図５（Ａ）に示すように、タイミング制約１は、送受信終了イベントの発生からシンク０イベントの発生までのタイミングの制約を表し、タイミング制約２は、シンク１イベントの発生から送受信開始イベントの発生までのタイミングの制約を表わしている。また、タイミング制約３および４は、「バッファコピー＋出力演算」の開始時刻から、「入力演算+バッファコピー」の終了時刻までのタイミングの制約を表している。
【００５７】
図１では、１個のブロックとしてタイミング制約設定レジスタを示しているが、具体的には、リアルタイムスケジュール装置ＲＴＳＤは、複数のタイミング制約レジスタを備えている。図５（Ｂ）には、複数のタイミング制約設定レジスタのうち、上記したタイミング制約１〜４に対応したタイミング制約設定レジスタ１〜４と、未設定のタイミング制約設定レジスタｎが示されている。それぞれのタイミング制約設定レジスタ１〜４によって表されるタイミング制約の内容は、図５（Ｂ）に示されている通りである。
【００５８】
それぞれのタイミング制約設定レジスタ１〜４には、タイミング制約に係わる許容時間が設定される。すなわち、タイミング制約設定レジスタ１には、送受信終了イベントが発生してからシンク０イベントが発生するまでの時間であって、タイミング制約１の違反が発生しない時間が許容時間として設定される。また、タイミング制約設定レジスタ２には、シンク１イベントが発生してから送受信開始イベントが発生するまでの時間であって、タイミング制約２の違反が発生しない時間が許容時間として設定される。言い換えると、タイミング制約設定レジスタ１には、許容される第１親タスクの実行時間が設定され、タイミング制約設定レジスタ２には、許容される第２親タスクの実行時間が設定されると見なすこともできる。
【００５９】
また、タイミング制約設定レジスタ３および４には、「バッファコピー+出力演算」の開始時刻から「入力演算＋バッファコピー」の終了時刻までの時間にフレームの送受信が行われないことを監視する為のタイミング制約が設定されると見なすこともできる。なお、タイミング制約設定レジスタ３と４は、１個のレジスタにしてもよい。
【００６０】
特に制限されないが、実施の形態１においては、上記したタイミング制約設定レジスタ１〜４が、アプリケーションに対応する１セットとされている。アプリケーションを構成する親タスクの個数に応じて、１セットとされるタイミング制約設定レジスタの個数が定められる。リアルタイムスケジュール装置ＲＴＳＤには、実行するアプリケーションの数に対応したセット数のタイミング制約設定レジスタが設けられることになる。
【００６１】
リアルタイムスケジュール装置ＲＴＳＤは、タイミング制約設定レジスタ１〜４に設定されている許容時間を基にして、それぞれの親タスクを実行したときに、制約違反が発生するか否かを判断し、制約違反が発生するときには、プロセッサ、ＤＭＡコントローラ、アドレス変換回路ＡＤ−ＣＶ、バススイッチ回路ＢＢ−ＳＷまたは／およびメモリ回路の制御を変更する。この変更において、リアルタイムスケジュール装置ＲＴＳＤは、上記した第１転送情報取得回路ＴＩＳＣ１および第２転送情報取得回路ＴＩＳＣ２を用いて取得したアクセス競合のアクセスサイクル数を使って、制約違反が発生しないように、プロセッサ、ＤＭＡコントローラ、アドレス変換回路ＡＤ−ＣＶ、バススイッチ回路ＢＢ−ＳＷまたは／およびメモリ回路を制御する。
【００６２】
実施の形態１において、リアルタイムスケジュール装置ＲＴＳＤは、並列起動数を変更することによって、制約違反が発生しないように、プロセッサ、ＤＭＡコントローラ、アドレス変換回路ＡＤ−ＣＶ、バススイッチ回路ＢＢ−ＳＷおよびメモリ回路を制御する。次に、並列起動を説明する。
【００６３】
＜並列起動＞
実施の形態１において、半導体装置ＦＬＳは、３個のプロセッサＣＰＵ１〜ＣＰＵ３と４個のＤＭＡコントローラＤＭＡ１〜ＤＭＡ４を備えている。また、フレームおよび演算データを格納するバッファとして、半導体装置ＦＬＳはメモリ回路を備えている。なお、このメモリ回路は、上記したように、１６個のメモリウェイＢＫ０−Ｗ０〜ＢＫ３−Ｗ３を備えている。
【００６４】
上記した第１親タスクから第２親タスクにおいては、これらのプロセッサ、ＤＭＡコントローラまたは／およびメモリウェイを、時間的に並列に動作（起動）させることにより、それぞれの親タスクの実行時間が短くされる。
【００６５】
例えば、リアルタイムスケジュール装置ＲＴＳＤは、第１親タスクおよび第２親タスクにおいては、フレームのコピーおよび演算（出力演算、入力演算）を複数のプロセッサ、複数のＤＭＡコントローラおよび複数のメモリウェイを用いて処理を行うように制御する。一例として、第１親タスクおよび第２親タスクのそれぞれにおいて、２個のプロセッサＣＰＵ１、ＣＰＵ２と、２個のＤＭＡコントローラＤＭＡ１、ＤＭＡ２およびバンクメモリＢＫ０、ＢＫ１を構成する８個のメモリウェイを割り当てる場合を説明する。この場合、２個のプロセッサＣＰＵ１、ＣＰＵ２が、時間的に並列に動作するため、並列起動の数（並列起動数）は２となる。勿論、これは一例であって、割り当てにより並列に起動する個数は任意に設定することが可能である。
【００６６】
＜＜並列起動時の動作＞＞
次に、並列起動数を２とした場合の動作を説明する。図６は、実施の形態１に係わる並列起動時の動作を示すタイミング図である。図６は、図４に類似しているので、相違点を主に説明する。
【００６７】
図４においては、リアルタイムスケジュール装置ＲＴＳＤは、１個のプロセッサＣＰＵ１と１個のＤＭＡコントローラＤＭＡ１に親タスクを割り当てていた。すなわち、並列起動数は１である。この場合、「バッファコピー＋出力演算」の処理を行う第１親タスクおよび「入力演算＋バッファコピー」の処理を行う第２親タスクのそれぞれにおいて、フレーム１のバッファコピー（転送）の処理は、タスクに割り当てられた１個のＤＭＡコントローラＤＭＡ１によって行われ、演算（出力演算、入力演算）の処理は、タスクに割り当てられた１個のプロセッサＣＰＵ１によって行われる。
【００６８】
これに対して、並列起動数を２とした図６においては、「バッファコピー＋出力演算」の処理を行う第１親タスクにおいて、フレーム１のバッファコピー（転送）の処理は、このタスクに割り当てられた２個のＤＭＡコントローラＤＭＡ１、ＤＭＡ２によって時間的に並列に行われる。また、第１親タスクにおいて、出力演算の処理も、タスクに割り当てられた２個のプロセッサＣＰＵ１、ＣＰＵ２によって時間的に並列に行われる。同様に、「入力演算＋バッファコピー」の処理を行う第２親タスクにおいて、入力演算の処理は、２個のプロセッサＣＰＵ１、ＣＰＵ２によって並列的に行われ、入力演算結果（フレーム）のバッファコピー（転送）の処理も、２個のＤＭＡコントローラＤＭＡ１、ＤＭＡ２によって並列的に行われる。
【００６９】
並列的に処理が行われるため、バッファコピー（転送）の処理および演算（出力演算、入力演算）処理に要する時間を短くすることが可能となる。その結果、シンク０イベントが発生する前に、第１親タスクによって「バッファコピー＋出力演算」の処理を終了させることが可能となる。同様に、送受信開始イベントが発生する前に、第２親タスクによって「入力演算＋バッファコピー」の処理を終了させることが可能となる。すなわち、第１親タスクのタイミング制約１および第２親タスクのタイミング制約２に違反することなく、アプリケーションを実行することが可能となる。
【００７０】
＜＜リアルタイムスケジュール装置による制御＞＞
図７は、実施の形態１に係わる並列起動時におけるリアルタイムスケジュール装置の制御を説明する図である。また、図８は、実施の形態１に係わる並列起動時の動作を説明するタイミング図である。
【００７１】
図７は、図１に類似しているので、相違点を主に説明する。図７では、図１に示した第１転送情報取得回路ＴＩＳＣ１、第２転送情報取得回路ＴＩＳＣ２およびメモリアクセスモニタ回路ＭＡＣＭは省略されている。図７において、破線で示したＳＳＡおよびＳＳＢは、複数のマスタ（プロセッサＣＰＵ１〜ＣＰＵ３およびＤＭＡコントローラＤＭＡ１〜ＤＭＡ４）と複数のスレーブ（メモリウェイＢＫ０−Ｗ０〜ＢＫ３−Ｗ３）との間のアクセスルートを示している。
【００７２】
リアルタイムスケジュール装置ＲＴＳＤからアドレス変換回路ＡＤ−ＣＶの制御端子ＡＤＣへ供給される変換情報によって、アドレス変換回路ＡＤ−ＣＶによるアドレス変換のときにアドレスを任意に変更することが可能である。また、リアルタイムスケジュール装置ＲＴＳＤからバススイッチ回路ＢＢ−ＳＷの制御端子ＢＢＣへ供給される選択信号によって、アドレス変換回路ＡＤ−ＣＶにより形成された変換アドレス信号は、任意のメモリウェイに供給することが可能である。これにより、例えば、プロセッサＣＰＵ１、ＣＰＵ２およびＤＭＡコントローラＤＭＡ１、ＤＭＡ２のそれぞれから出力されているアドレス信号により、複数の任意のメモリウェイを並列的にアクセスすることが可能となる。
【００７３】
すなわち、リアルタイムスケジュール装置ＲＴＳＤは、マスタとスレーブ間を結ぶアクセスルートを任意に選択することが可能である。このとき、リアルタイムスケジュール装置ＲＴＳＤは、任意のマスタにタスクを割り当てることが可能であるため、アクセスルートのマスタも任意に選択することが可能である。ここでは、プロセッサＣＰＵ１、ＣＰＵ２とＤＭＡコントローラＤＭＡコントローラＤＭＡ１、ＤＭＡ２にタスクを割り当てている例で、マスタとスレーブ間のアクセスルートを説明しているが、これに限定されるものではない。勿論、マスタの個数も任意である。
【００７４】
リアルタイムスケジュール装置ＲＴＳＤは、図７において符合ＣＰＣ１、ＣＰＣ２、ＤＭＣ１およびＤＭＣ２で示した制御により、プロセッサＣＰＵ１、ＣＰＵ２およびＤＭＡコントローラＤＭＡ１、ＤＭＡ２に第１親タスクおよび第２親タスクを割り当てる。また、リアルタイムスケジュール装置ＲＴＳＤは、アドレス変換回路ＡＤ−ＣＶの制御端子ＡＤＣに供給する変換情報およびバススイッチ回路ＢＢ−ＳＷの制御端子ＢＢＣに供給する選択信号によって、プロセッサＣＰＵ１、ＣＰＵ２およびＤＭＡコントローラＤＭＡ１、ＤＭＡ２が、メモリウェイＢＫ０−Ｗ０〜ＢＫ０−Ｗ３を含むバンクメモリＢＫ０とメモリウェイＢＫ１−Ｗ０〜ＢＫ１−Ｗ３を含むバンクメモリＢＫ１をアクセスすることができるように、アクセスルートを設定する。
【００７５】
これにより、プロセッサＣＰＵ１、ＣＰＵ２およびＤＭＡコントローラＤＭＡ１、ＤＭＡ２によって、第１親タスクおよび第２親タスクが実行可能となる。次に、図８を用いて、並列起動時の動作を説明する。図８（Ａ）は、並列起動時の動作を示すタイミング図である。また、図８（Ｂ）は、並列起動時のマスタ（プロセッサＣＰＵ１、ＣＰＵ２およびＤＭＡコントローラＤＭＡ１、ＤＭＡ２）の動作タイミングを示すタイミング図である。図８（Ａ）は、図３と同じであるため説明は省略するが、この図８（Ａ）に示した「バッファコピー＋出力演算」の処理に関する部分におけるマスタの動作タイミングが、図８（Ｂ）に示されている。
【００７６】
図８（Ｂ）において、破線で示したブロックＤＭＡ１（Ｒ）は、ＤＭＡコントローラＤＭＡ１がメモリウェイをアクセスして、メモリウェイからデータを読み出している期間を示しており、破線で示したブロックＤＭＡ１（Ｗ）は、ＤＭＡコントローラＤＭＡ１がメモリウェイをアクセスして、メモリウェイにデータの書込みを行っている期間を示している。同様に、破線のブロックＤＭＡ２（Ｒ）は、ＤＭＡコントローラＤＭＡ２がメモリウェイからデータを読み出している期間を示し、破線のブロックＤＭＡ２（Ｗ）は、ＤＭＡコントローラＤＭＡ２がメモリウェイにデータの書込みを行っている期間を示している。ＤＭＡコントローラは、読み出しながら、書込みを行うことが可能であるため、読み出し期間と書込み期間とは、一部が時間的に重なることが可能である。
【００７７】
また、図８（Ｂ）において、破線で示したブロックＣＰＵ１（ＲＷ）は、プロセッサＣＰＵ１が、メモリウェイをアクセスして、データを読み出し、読み出したデータに対して演算を行い、演算によって得られた演算結果のデータを、メモリウェイに書込みを行っている期間を示している。同様に、破線のブロックＣＰＵ２（ＲＷ）は、プロセッサＣＰＵ２が、メモリウェイをアクセスして、データを読み出し、演算を行い、演算結果のデータを、メモリウェイに書込みを行っている期間を示している。
【００７８】
図８（Ｂ）において、ＢＫ０−Ｗ０〜ＢＫ０−Ｗ３およびＢＫ１−Ｗ０〜ＢＫ１−Ｗ３のそれぞれは、上記したメモリウェイである。ここでは、バンクメモリＢＫ０を構成するメモリウェイＢＫ０−Ｗ０〜ＢＫ０−Ｗ３が、演算バッファ１として用いられ、バンクメモリＢＫ１を構成するメモリウェイＢＫ１−Ｗ０〜ＢＫ１−Ｗ３が、通信バッファ１として用いられる場合を説明する。通信バッファ１として用いられるメモリウェイＢＫ１−Ｗ０〜ＢＫ１−Ｗ３のそれぞれには、送受信終了イベントの発生に同期して、フレーム１を構成するデータのブロックが格納される。特に制限されないが、図８（Ｂ）では、フレーム１は、８個のブロックを有しており、通信バッファ１として用いられるメモリウェイＢＫ１−Ｗ０〜ＢＫ１−Ｗ３のそれぞれに２ブロックが格納されているものとする。
【００７９】
送受信終了イベントが発生すると、アプリケーションが起動し、「バッファコピー＋出力演算」の処理を行う第１親タスクが起動する。第１親タスクが起動すると、先ず、ＤＭＡコントローラＤＭＡ１、ＤＭＡ２が動作を開始する。これにより、期間ＤＭＡ１（Ｒ）、ＤＭＡ２（Ｒ）において、ＤＭＡコントローラＤＭＡ１、ＤＭＡ２が、アクセスルートを介して、メモリウェイＢＫ１−Ｗ０、ＢＫ１−Ｗ２をアクセスし、メモリウェイＢＫ１−Ｗ０、ＢＫ１−Ｗ２に格納されているフレーム１のデータを読み出す。また、期間ＤＭＡ１（Ｒ）、ＤＭＡ２（Ｒ）の開始よりも遅れて、期間ＤＭＡ１（Ｗ）、ＤＭＡ２（Ｗ）が発生する。この期間ＤＭＡ１（Ｗ）、ＤＭＡ２（Ｗ）において、ＤＭＡコントローラＤＭＡ１、ＤＭＡ２は、アクセスルートを介して、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１をアクセスし、期間ＤＭＡ１（Ｒ）、ＤＭＡ２（Ｒ）において読み出したデータを、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１へ書き込む。これにより、メモリウェイＢＫ１−Ｗ０、ＢＫ１−Ｗ１に格納されていたフレーム１に係わるデータが、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１へ転送（コピー）される。この場合、２個のメモリウェイＢＫ１−Ｗ０、ＢＫ１−Ｗ１に格納されていたデータが、実質的に同時に、２個のメモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１へ転送されることになる。
【００８０】
メモリウェイＢＫ１−Ｗ０、ＢＫ１−Ｗ１のそれぞれに格納されていたフレーム１に係わる１ブロック分のデータが、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１へ転送されると、フレーム先頭ブロックの転送終了となる。
【００８１】
特に制限されないが、フレーム先頭ブロックの転送が終了したタイミングで、プロセッサＣＰＵ１、ＣＰＵ２が動作を始める。プロセッサＣＰＵ１、ＣＰＵ２は、期間ＣＰＵ１（ＲＷ）、ＣＰＵ２（ＲＷ）において、アクセスルートを介して、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１にアクセスし、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１に格納されているフレーム１に係わるデータを読み出し、出力演算を行い、演算結果のデータを、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１へ書き込む（書き戻す）。この場合、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１のそれぞれにおけるデータの読み出し、出力演算およびメモリウェイへの書込みは、実質的に同時に行われることになる。
【００８２】
プロセッサＣＰＵ１、ＣＰＵ２が、期間ＣＰＵ１（ＲＷ）、ＣＰＵ２（ＲＷ）で処理を行っているとき、ＤＭＡコントローラＤＭＡ１、ＤＭＡ２は、期間ＤＭＡ１（Ｒ）、ＤＭＡ２（Ｒ）において、アクセスルートを介して、メモリウェイＢＫ１−Ｗ２、ＢＫ１−Ｗ３へアクセスし、フレーム１に係わるデータを読み出し、期間ＤＭＡ１（Ｗ）、ＤＭＡ２（Ｗ）において、アクセスルートを介して、メモリウェイＢＫ０−Ｗ２、ＢＫ０−Ｗ３にアクセスし、読み出したフレーム１に係わるデータを書き込む。これにより、メモリウェイＢＫ１−Ｗ２、ＢＫ１−Ｗ３からメモリウェイＢＫ０−Ｗ２、ＢＫ０−Ｗ３へフレーム１に係わるデータの転送が行われる。
【００８３】
メモリウェイＢＫ１−Ｗ２、ＢＫ１−Ｗ３のそれぞれに格納されていたフレーム１に係わる１ブロック分のデータが、メモリウェイＢＫ０−Ｗ２、ＢＫ０−Ｗ３へ転送されると、プロセッサＣＰＵ１、ＣＰＵ２は、期間ＣＰＵ１（ＲＷ）、ＣＰＵ２（ＲＷ）において、アクセスルートを介して、メモリウェイＢＫ０−Ｗ２、ＢＫ０−Ｗ３にアクセスし、フレーム１に係わるデータを読み出し、出力演算を行って、メモリウェイＢＫ０−Ｗ２、ＢＫ０−Ｗ３へ書き戻す。
【００８４】
これにより、フレーム１を構成する８個のブロックのうち４個のブロックについて、バッファコピーと出力演算が終了する。残りの４ブロックについても、上記したのと同様に行われる。この場合、プロセッサＣＰＵ１、ＣＰＵ２が、期間ＣＰＵ１（ＲＷ）、ＣＰＵ（ＲＷ）において、メモリウェイＢＫ０−Ｗ２、ＢＫ０−Ｗ３に格納されているデータの読み出し、出力演算および書き戻しを実行している期間と、ＤＭＡコントローラＤＭＡ１、ＤＭＡ２が、メモリウェイＢＫ１−Ｗ０、ＢＫ１−Ｗ１に格納されているデータを、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１へ転送する期間ＤＭＡ１（Ｒ）、ＤＭＡ２（Ｒ）とが重なるように、プロセッサＣＰＵ１、ＣＰＵ２およびＤＭＡコントローラＤＭＡ１、ＤＭＡ２は、動作する。
【００８５】
フレーム１を構成する８個のブロックの全てが、通信バッファ１を構成するメモリウェイＢＫ１−Ｗ０〜ＢＫ１−Ｗ３から、演算バッファ１を構成するメモリウェイＢＫ０−Ｗ０〜ＢＫ０−Ｗ３へ転送されたタイミングが、転送終了のタイミングとなる。また、プロセッサＣＰＵ１、ＣＰＵ２によって、８個のブロックの全てに対して出力演算が行われ、演算結果のデータが、演算バッファ１に書き戻されたタイミングが、演算終了のタイミングとなる。
【００８６】
このように、並列起動数を増やすことにとより、タスクの実行時間を短くすることが可能であり、図８（Ｂ）では、シンク０イベントが発生するタイミング、すなわち出力が有効となっていることが要求されるタイミングよりも、時間的に前に、転送を終了（転送終了）し、演算を終了（演算終了）することが可能である。
【００８７】
ここでは、「バッファコピー＋出力演算」の処理を行う第１親タスクを例にして、動作を説明したが、「入力演算＋バッファコピー」の処理を行う第２親タスクについても同様である。
【００８８】
例えば、所定の処理を行う第２親タスクの結果が、演算バッファ１（例えば、メモリウェイＢＫ０−Ｗ０〜ＢＫ０−Ｗ３）に格納される。第２親タスクにおいては、先ずプロセッサＣＰＵ１、ＣＰＵ２は、アクセスルートを介して、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１にアクセスし、読み出し、入力演算および書き戻しを行う。次に、ＤＭＡコントローラＤＭＡ１，ＤＭＡ２が、アクセスルートを介して、メモリウェイＢＫ０−Ｗ０、ＢＫ０−Ｗ１をアクセスし、データを読み出して、通信バッファ１を構成するメモリウェイＢＫ１−Ｗ０、ＢＫ１−Ｗ１へ書き込む。ＤＭＡコントローラＤＭＡ１、ＤＭＡ２がデータの読み出しおよび書込みを行っている期間において、プロセッサＣＰＵ１、ＣＰＵ２は、メモリウェイＢＫ０−Ｗ２、ＢＫ０−Ｗ３をアクセスし、データの読み出し、出力演算および書き戻しを行う。以降、２個のプロセッサＣＰＵ１、ＣＰＵ２と２個のＤＭＡコントローラＤＭＡ１が並列に動作する。
【００８９】
＜タスク入力データ確定によるタスク起動＞
次に、タスク入力データが確定したとき、確定したデータに従ってタスクを起動する例を説明する。図３に関連して説明したように、受信フレームを構成するデータは圧縮されている。そのため、図３に示した受信フレーム１に対して所定の演算および所定の処理を行うためには、圧縮されているデータを解凍することが必要である。
【００９０】
従って、上記した第１親タスクにおいては、データを通信バッファ０にコピー（バッファコピー）した後、通信バッファ０から読み出して解凍し、解凍により得られたデータに対して演算を行うことになる。圧縮されているデータを解凍した場合、解凍により得られるデータのデータ量（データサイズ）は、圧縮したデータによって変わる。そのため、通信バッファ０から、たとえ同じデータ量のデータを読み出しても、解凍すると異なったデータ量のデータが得られることになる。
【００９１】
図９は、実施の形態１に係わる半導体装置ＦＬＳの動作を説明する説明図である。ここでは、上記した第１親タスクにおいて実施される処理と、処理により得られるデータのデータサイズの一例を説明する。説明を容易にするために、受信フレーム１は、データ量が４ＫＢのデータであり、１ＫＢ単位の受信データブロック１〜４として、通信バッファ０を構成するバンクメモリＢＫ１のメモリウェイＢＫ０−Ｗ０〜ＢＫ０−Ｗ３に格納されているものとする。この受信データブロック１〜４のそれぞれは、圧縮により得られたデータであり、図９において、受信データとして示されているように、それぞれのデータサイズは、１ＫＢ（１０２４バイト）である。
【００９２】
第１親タスクにおいては、先ず、受信データブロック１〜４のそれぞれを、通信バッファ０からバンクメモリＢＫ１により構成された演算バッファ１にコピーするバッファコピー処理（１）を実施する。バッファコピー処理（１）により演算バッファ１にコピーされる出力データは、圧縮されたデータであるため、出力データのデータサイズは、図９に示すように、受信データブロックと同じ１ＫＢである。
【００９３】
次に、第１親タスクにおいて、受信データブロック１〜４のそれぞれに対して、データ解凍処理（２）を実施し、その後で、受信データブロック１〜４のそれぞれに対して、演算処理（３）を実施する。
【００９４】
ここでは、受信データブロック１〜４を解凍したとき、受信データブロック１のデータサイズは、元の受信データブロック１のデータサイズの２．５倍となり、受信データブロック２のデータサイズは、元の受信データブロック２のデータサイズの１．５倍となるものとする。また、受信データブロック３のデータサイズは、解凍により、元の受信データブロック３のデータサイズの同じとなり、受信データブロック４のデータサイズは、元の受信データブロック４のデータサイズの２倍となるものとする。
【００９５】
このため、図９に示すように、データ解凍処理（２）により得られる出力データのサイズは、受信データブロック１では、２．５ＫＢ（２５６０バイト）となり、受信データブロック２では、１．５ＫＢ（１５３６バイト）となる。また、データ解凍処理（２）により、受信データブロック３のデータサイズは、１ＫＢ（１０２４バイト）となり、受信データブロック４のデータサイズは、２ＫＢ（２０４８バイト）となる。
【００９６】
演算処理（３）により得られる出力データのサイズは、演算の種類に従って変わるが、ここでは、図９に示すように、データ解凍処理（２）により得られた出力データのサイズと同じであるとする。
【００９７】
実施の形態に係わるリアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭから通知された変換アドレス信号とデータ確定判定レジスタＭＡＣＭ＿Ｒに格納されている情報とに基づいて、タスクの入力データが確定したか否かを判定し、入力データが確定したと判定した場合、入力データに対応するタスクを優先的に起動する。リアルタイムスケジュール装置ＲＴＳＤは、通知されている変換アドレス信号に基づいて、バンクメモリＢＫ０〜ＢＫ３において、所定の連続したアドレス領域に対してリードまたはライトのアクセスが行われたか否かを判定する。所定の連続したアドレス領域に対してアクセスが行われた場合、リアルタイムスケジュール装置ＲＴＳＤは、タスクの入力データが確定したものと判定する。
【００９８】
＜＜リアルタイムスケジュール装置の動作＞＞
図１０は、実施の形態１に係わるリアルタイムスケジュール装置ＲＴＳＤの動作を示すフローチャート図である。ここでは、上記した所定の連続したアドレス領域として、１ＫＢ（１０２４バイト）を例にして、タスクの入力データが確定すると、タスクが起動されることを説明する。勿論、本発明は、ここで述べる１ＫＢのサイズに限定されるものではない。所定の連続したアドレス領域のサイズは、タスクに割り当てられたマスタが、タスクを実行するのに必要なサイズのデータであればよい。
【００９９】
また、ここで述べるタスクは、子タスクである。上記した第１親タスク、第２親タスクおよび第３親タスクのそれぞれは、複数の子タスクによって構成されている。たとえば第１親タスクは、それを構成する複数の子タスクが実行されることによって、実行される。第２親タスクおよび第３親タスクも同様である。
【０１００】
ステップＳ０において、リアルタイムスケジュール装置ＲＴＳＤは、フレームを受信し、フレーム受信終了イベントを検出する。フレーム受信終了イベントを検出すると、リアルタイムスケジュール装置ＲＴＳＤは、次に述べるステップを実行する。
【０１０１】
先ず、ステップＳ１において、リアルタイムスケジュール装置ＲＴＳＤは、各子タスクで使用するアドレス領域へのライト（ライト転送）のモニタを開始する。すなわち、図１に示したメモリアクセスモニタ回路ＭＡＣＭによって、変換アドレス信号の取得を開始する。また、リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭから通知された変換アドレス信号と、データ確定判定レジスタＭＡＣＭ＿Ｒとを用いて子タスクの起動の制御を開始する。
【０１０２】
ステップＳ２において、リアルタイムスケジュール装置ＲＴＳＤは、バッファコピー処理（１）が行われるように、（１）バッファコピー用タスクをマスタに割り当て、実行させる。リアルタイムスケジュール装置ＲＴＳＤは、通信バッファを構成するバンクメモリにおいて、連続する１ＫＢのアドレス領域の全てに、受信データブロック（入力データ）が格納されたか否かを判定し、１ＫＢのアドレス領域の全てに、受信データが格納された場合、入力データが準備されたものと判定し、通信バッファから演算バッファへ受信データブロックをコピーする（１）バッファコピー用タスクを起動する。この場合、リアルタイムスケジュール装置ＲＴＳＤは、通信バッファへの１ＫＢの受信データブロックのライト（書き込み）を基にして、入力データの準備が完了しているか否かを判定していると見なすことができる。
【０１０３】
次に、リアルタイムスケジュール装置ＲＴＳＤは、ステップＳ３を実行する。ステップＳ３では、データ解凍処理（２）が行われるように、リアルタイムスケジュール装置ＲＴＳＤは、データ解凍処理（２）を行う（２）データ解凍用タスクをマスタに割り当てる。リアルタイムスケジュール装置ＲＴＳＤは、（２）データ解凍用タスクに対する入力データである受信データブロックが準備されたか否かを、図１に示したメモリアクセスモニタ回路ＭＡＣＭとデータ確定判定レジスタＭＡＣＭ＿Ｔを用いて、判定する。具体的には、ステップＳ２において起動された（１）バッファコピー用タスクにより、演算バッファの連続した１ＫＢのアドレス領域の全てに受信データがライト（コピー）されたか否かで、（２）データ解凍用タスクに対する入力データが準備されたか否を、リアルタイムスケジュール装置ＲＴＳＤは判定する。１ＫＢのアドレス領域の全てに受信データがライトされたと判定すると、リアルタイムスケジュール装置ＲＴＳＤは、（２）データ解凍用タスクをマスタで起動させる。（２）データ解凍用タスクの実行により、受信データは、解凍され、演算バッファにライトされる。
【０１０４】
ステップＳ４では、リアルタイムスケジュール装置ＲＴＳＤは、受信データブロックに対して演算処理（３）を実行するように、演算処理（３）に対応する（３）演算用タスクをマスタに割り当てる。ステップＳ３において、（２）データ解凍用タスクが実行されると、解凍された受信データは、演算バッファにライトされる。ステップＳ４において、リアルタイムスケジュール装置ＲＴＳＤは、ステップＳ３のときと同様に、（３）演算用タスクに対する入力データである受信データブロックが準備されたか否かを、メモリアクセスモニタ回路ＭＡＣＭとデータ確定判定レジスタＭＡＣＭ＿Ｔを用いて、判定する。具体的には、ステップＳ３において起動された（２）データ解凍用タスクにより、演算バッファの連続した１ＫＢのアドレス領域の全てに解凍された受信データがライトされているか否かで、（３）演算用タスクに対する入力データが準備されたか否を、リアルタイムスケジュール装置ＲＴＳＤは判定する。１ＫＢのアドレス領域の全てに解凍された受信データがライトされたと判定すると、リアルタイムスケジュール装置ＲＴＳＤは、（３）演算用タスクをマスタで起動させる。（３）演算用タスクの実行により、解凍された受信データブロックに対して所定の演算が行われ、演算結果は、演算バッファにライトされる。
【０１０５】
次に、ステップＳ５で、タイムスケジュール装置ＴＲＳＤは、受信フレームに対する演算が終了し、受信した受信フレームに対する出力データを有効にする（図３では、出力有効と記載）。その後、ステップＳ６で、タイムスケジュール装置ＴＲＳＤは、ステップＳ０で開始した処理を終了する。
【０１０６】
次に、データ確定判定レジスタＭＡＣＭ＿Ｒの詳細と、メモリアクセスモニタ回路ＭＡＣＭとデータ確定判定レジスタＭＡＣＭ＿Ｒを用いたリアルタイムスケジュール装置ＲＴＳＤの詳細動作を説明する。
【０１０７】
＜＜データ確定判定レジスタ＞＞
図１１は、実施の形態１に係わるデータ確定判定レジスタＭＡＣＭ＿Ｒの構成を示す図である。データ確定判定レジスタＭＡＣＭ＿Ｒは、３種類のレジスタを備えている。すなわち、データ確定判定レジスタＭＡＣＭ＿Ｒは、図１１（Ａ）に示すタスク起動条件設定レジスタＴＳＣＲ、図１１（Ｂ）に示すタスク起動制御用ポインタＴＳＳＰおよび図１１（Ｃ）に示すタスク一時停止条件設定レジスタＴＴＳＲを備えている。図１１（Ｃ）のタスク一時停止条件設定レジスタＴＴＳＲについては、後で実施の形態２で説明するため、ここでは説明を省略する。
【０１０８】
タスク起動条件設定レジスタＴＳＣＲは、子タスクに対応した複数のタスク起動条件設定レジスタを備えている。同様に、タスク起動制御用ポインタＴＳＳＰも、子タスクに対応した複数のタスク起動制御用ポインタを備えている。子タスクを基準として見た場合、タスク起動条件設定レジスタとタスク起動制御用ポインタとは、互いに対応していることになる。図１１には、複数のタスク起動条件設定レジスタのうち２つのタスク起動条件設定レジスタＴＳＣＲ＿１およびＴＳＣＲ＿３が例示され、これらのタスク起動条件設定レジスタに対応するタスク起動制御用ポインタＴＳＳＰ＿１およびＴＳＳＰ＿３が例示されている。また、図１１（Ｂ）に示しているタスク起動制御用ポインタＴＳＳＰ＿２およびＴＳＳＰ＿４は、後で説明する実施の形態２におけるタスク一時停止条件設定レジスタＴＴＳＲ＿１およびＴＴＳＲ＿２に対応している。
【０１０９】
実施の形態１においては、アプリケーションを実行する前に、各子タスクに対してタスク起動条件設定レジスタおよびタスク起動制御用ポインタを割り当て、割り当てたタスク起動条件設定レジスタおよびタスク起動制御用ポインタに条件を情報として設定する。すなわち、タスク起動条件設定レジスタの起動対象タスク部（領域）と、タスク起動制御用ポインタの関連付けるタスク部（領域）に対して、割り当てる子タスクを特定する識別情報、たとえばタスクＩＤを設定する。また、タスク起動条件設定レジスタの条件部（領域）と、タスク起動制御用ポインタの条件部（領域）に対して、割り当てた子タスクにおいて、入力データが確定したと判定するための条件を設定する。
【０１１０】
図１１を例にして具体的に説明すると、次のとおりである。ここでは、図１０で説明したデータ解凍処理（２）および演算処理（３）を例にして説明するが、図１０で説明したバッファコピー処理（１）についても同様である。
【０１１１】
タスク起動条件設定レジスタＴＳＣＲ＿１の起動対象タスク部と、タスク起動条件設定レジスタＴＳＣＲ＿１に対応するタスク起動制御用ポインタＴＳＳＰ＿１における関連付けるタスク部には、データを解凍する（２）データ解凍用タスク（識別子ＤＤＴ）を設定する。また、タスク起動条件設定レジスタＴＳＣＲ＿３の起動対象タスク部と、タスク起動条件設定レジスタＴＳＣＲ＿３に対応するタスク起動制御用ポインタＴＳＳＰ＿３における関連付けるタスク部には、データを演算する（３）演算用タスク（識別子ＤＡＴ）を設定する。
【０１１２】
＜＜＜タスク起動条件設定レジスタＴＳＣＲ＿１、ＴＳＣＲ＿３と、タスク起動制御用ポインタＴＳＳＰ＿１、ＴＳＳＰ＿３による動作＞＞＞
タスク起動制御用ポインタＴＳＳＰ＿１の条件部には、（２）データ解凍用タスクを実行するマスタ（便宜上、第１マスタとする）が、（２）データ解凍用タスクを実行する際に、バンクメモリＢＫ０〜ＢＫ３からリードするアドレス領域の先頭アドレスが、アドレス情報ＳＡＤ＿１として設定される。一方、タスク起動制御用ポインタＴＳＳＰ＿１に対応するタスク起動条件設定レジスタＴＳＣＲ＿１の条件部には、（１）バッファコピー用タスクをマスタ（便宜上、第２マスタとする）が実行したときに、第１マスタが（２）データ解凍用タスクを実行するのに必要なサイズのデータに対応するアドレス領域が、アドレス情報ＳＡＤ＿１を先頭アドレスとした連続アドレス領域のアドレス範囲情報ＡＤＤ＿１として設定される。
【０１１３】
リアルタイムスケジュール装置ＲＴＳＤは、第２マスタが（１）バッファコピー用タスクを実行して、受信データブロックをバンクメモリにライトしているとき、次の処理を実行する。すなわち、リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭによって、タスク起動制御用ポインタＴＳＳＰ＿１のアドレス情報ＳＡＤ＿１で示されるアドレスを先頭アドレスとして、タスク起動条件設定レジスタＴＳＣＲ＿１のアドレス範囲情報ＡＤＤ＿１によって示される所定の連続したアドレス領域の全てに対してライトされたか否かを判定する。（１）バッファコピー用タスクの実行によって、所定の連続したアドレス領域の全てに対してライトが行われた判定した場合、リアルタイムスケジュール装置ＲＴＳＤは、タスク起動条件設定レジスタＴＳＣＲ＿１の起動対象タスク部に設定されている（２）データ解凍用タスク（ＤＤＴ）を、第１マスタで起動させる。
【０１１４】
（２）データ解凍用タスクを実行するのに必要なデータのサイズを、上記したように１ＫＢ（１０２４バイト）とした場合、（１）バッファコピー用タスクが実行され、アドレス情報ＳＡＤ＿１で示される先頭アドレスから、１ＫＢの連続したアドレス領域の全てに対して、第２マスタからの受信データのライトが実行されると、（２）データ解凍用タスクの入力データは確定したとして、（２）データ解凍用タスクが起動されることになる。
【０１１５】
タスク起動制御用ポインタＴＳＳＰ＿３の条件部には、（３）演算用タスクを実行するマスタ（便宜上、第３マスタとする）が、演算用タスクを実行するときにリードするバンクメモリにおけるアドレス領域の先頭アドレスが、アドレス情報ＳＡＤ＿３として設定される。一方、タスク起動条件設定レジスタＴＳＣＲ＿３の条件部には、（２）データ解凍用タスクを第１マスタが実行したときに、第３マスタが（３）演算用タスクを実行するのに必要なサイズのデータに対応するアドレス領域が、アドレス情報ＳＡＤ＿３を先頭アドレスとした連続アドレス領域のアドレス範囲情報ＡＤＤ＿３として設定される。特に制限されないが、このアドレス範囲情報ＡＤＤ＿３も１ＫＢであるとする。
【０１１６】
リアルタイムスケジュール装置ＲＴＳＤは、第１マスタによって（２）データ解凍用タスクが実行されるとき、メモリアクセスモニタ回路ＭＡＣＭによって、第１マスタによるバンクメモリに対するライトのアドレスを判定する。すなわち、第１マスタによって、アドレス情報ＳＡＤ＿３によって示される先頭アドレスから、アドレス範囲情報ＡＤＤ＿３によって示される１ＫＢの連続したアドレス領域に対してライトがされたか否かを判定する。アドレス情報ＳＡＤ＿３によって示される先頭アドレスから、１ＫＢのアドレス範囲の全てに対してライトが行われると、リアルタイムスケジュール装置ＲＴＳＤは、（３）演算用タスクを第３マスタで起動する。
【０１１７】
上記したように、リアルタイムスケジュール装置ＲＴＳＤは、タスク起動条件設定レジスタＴＳＣＲ＿１とタスク起動制御ポインタＴＳＳＰ＿１を用いて、（２）データ解凍用タスクの入力データが確定（ライト）したとき、図１０で説明したように、（２）データ解凍用タスクを起動することができる。また、リアルタイムスケジュール装置ＲＴＳＤは、タスク起動条件設定レジスタＴＳＣＲ＿３とタスク起動制御ポインタＴＳＳＰ＿３を用いて、（３）演算用タスクの入力データが確定（ライト）したとき、図１０で説明したように、（３）演算用タスクを起動することができる。
【０１１８】
＜＜半導体装置の動作例＞＞
次に、図１に示した半導体装置ＦＬＳにおいて、タスク入力データが確定したときにタスクを起動する動作例を説明する。
【０１１９】
図１２は、実施の形態に係わる半導体装置の動作を説明するための図である。ここでは、バッファコピー処理（１）、データ解凍処理（２）および演算処理（３）のそれぞれが、複数の子タスク（（１）バッファコピー用タスク、（２）データ解凍用タスクおよび（３）演算用タスク）が、割り当てられたマスタによって実行されることにより、実現される場合を説明する。リアルタイムスケジュール装置ＲＴＳＤは、（１）バッファコピー用タスクにおいては、ＤＭＡコントローラＤＭＡ１〜ＤＭＡ４をマスタとして割り当て、（２）データ解凍用タスクおよび（３）演算用タスクにおいては、プロセッサＣＰＵ１〜ＣＰＵ３をマスタとして割り当てる。
【０１２０】
図１２（Ａ）には、時間に伴う各タスクの実行状態が示されている。図１２（Ａ）においては、横軸は時間を示し、縦軸は処理を示している。また、図１２（Ｂ）には、それぞれメモリウェイＷ０〜Ｗ３を備えたバンクメモリＢＫ０〜ＢＫ３が示されている。ここでは、バンクメモリＢＫ０が通信バッファ０として用いられ、バンクメモリＢＫ１〜ＢＫ３が演算バッファ１〜３として用いられる。処理は、図１２（Ａ）の最も左側に白抜きの矢印で示すように、バッファコピー処理（１）、データ解凍処理（２）、演算処理（３）の順で実行される。
【０１２１】
図１２（Ａ）において、それぞれ矢印付きの実線は、子タスクを示している。たとえば、図１２（Ａ）に示した子タスクの符号「（１）ＤＭＡ１（Ｒ）ブロック１（Ｒ）」において、先頭の（）で囲んだ数字「（１）」は、（１）バッファコピー用タスクであることを示し、符号「ＤＭＡ１」は、タスクに割り当てられているマスタがＤＭＡコントローラＤＭＡ１であることを示している。また、符号「ＤＭＡ１」の後の（）内の符号「Ｒ」は、ＤＭＡコントローラＤＭＡ１がリード（Ｒ）動作をすることを示し、符号「ブロック１」は、このタスクの対象が、受信データブロック１であることを示し、符号「ブロック１」の後の（）内の符号「Ｒ」は、タスクの対象に対しての動作が、リードであることを示している。他のタスクについても、同様な表記方法で記載している。また、ＤＭＡコントローラおよびプロセッサを特定する符号の後の（）内の符号Ｗは、ＤＭＡコントローラおよびプロセッサがライト動作をすることを示し、タスクの対象に対しての動作を示す（）内の符号Ｗは、ブロックに対する動作がライトであることを示している。
【０１２２】
また、図１２においては、子タスクが実行されることにより、リードまたはライト動作が行われるメモリウェイと、当該子タスクとが並ぶように描かれている。例えば、図１２（Ａ）に示した子タスク「（１）ＤＭＡ１（Ｒ）ブロック１（Ｒ）」は、この子タスクが実行されることにより、図１２（Ｂ）に示した通信バッファ０を構成するメモリウェイＢＫ−Ｗ０から受信データブロック１がリードされるため、この子タスクとメモリウェイＢＫ−Ｗ０とが、図１２において並ぶように描かれている。他の子タスクとメモリウェイとの関係も同様である。
【０１２３】
同図には、図９で述べたように、１ＫＢの受信データに対して、解凍処理により、受信データブロック１は、２．５倍になり、受信データブロック２は、１．５倍になり、受信データブロック３は、１倍となり、受信データブロック４は、２倍となる場合を示している。代表として、受信データブロック３と受信データブロック１について説明する。
【０１２４】
＜＜＜受信データブロック３＞＞＞
受信データブロック３は、期間Ｔ３において、子タスク「（１）ＤＭＡ３（Ｒ）ブロック３（Ｒ）」が実行されることにより、通信バッファ０のメモリウェイＢＫ０−Ｗ２からリードされる。リードされた受信データブロック３は、期間Ｔ３において、子タスク「（１）ＤＭＡ３（Ｗ）ブロック３（Ｗ）」が実行されることにより、演算バッファ１のメモリウェイＢＫ１−Ｗ３の連続した１ＫＢのアドレス領域にライトされる。
【０１２５】
リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭを用いて、子タスク「（１）ＤＭＡ３（Ｗ）ブロック３（Ｗ）」により、メモリウェイＢＫ１−Ｗ２における連続した１ＫＢのアドレス領域への受信データブロック３のライトを検出する。
【０１２６】
連続した１ＫＢのアドレス領域へのライトを検出すると、リアルタイムスケジュール装置ＲＴＳＤは、タスク起動条件設定レジスタＴＳＣＲ＿１の条件が満たされたとして、期間Ｔ４において、子タスク「（２）ＣＰＵ３（Ｒ）ブロック３（Ｒ）」を実行させる。これにより、メモリウェイＢＫ１−Ｗ２から、受信データブロック３がリードされ、リードされた受信データブロック３に対してデータ解凍処理が行われる。受信データブロック３は、データ解凍後のサイズは、１倍であるため、データ解凍処理後の受信データブロックである解凍後受信データブロック３は、１ＫＢとなる。
【０１２７】
また、リアルタイムスケジュール装置ＲＴＳＤは、期間Ｔ４において、子タスク「（２）ＣＰＵ３（Ｗ）ブロック３（Ｗ）」を実行させる。これにより、解凍後受信データブロック３は、期間Ｔ４において、演算バッファ３のメモリウェイＢＫ３−Ｗ１の連続した１ＫＢのアドレス領域にライトされる。
【０１２８】
リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭを用いて、子タスク「（２）ＣＰＵ３（Ｗ）ブロック３（Ｗ）」によるメモリウェイＢＫ３−Ｗ１における連続した１ＫＢのアドレス領域への解凍後受信データブロック３のライトを検出する。
【０１２９】
リアルタイムスケジュール装置ＲＴＳＤは、連続した１ＫＢのアドレス領域への解凍後受信データブロック３のライトを検出すると、タスク起動条件設定レジスタＴＳＣＲ＿３の条件が満たされたとして、時刻Ｔ５−３において、タスク「（３）ＣＰＵ１ブロック３（Ｒ）」を起動する。このタスク「（３）ＣＰＵ１（Ｒ）ブロック３（Ｒ）」によって、メモリウェイＢＫ３−Ｗ１から解凍後受信データブロック３がリードされ、リードされた解凍後受信データブロック３に対して所定の演算が行われる。所定の演算より得られた演算後受信データブロック３は、リアルタイムスケジュール装置ＲＴＳＤが、タスク「（３）ＣＰＵ１（Ｗ）ブロック３（Ｗ）」を、時刻Ｔ５−３において起動することにより、演算バッファ１のメモリウェイＢＫ１−Ｗ２にライトされる。
【０１３０】
以上により、通信バッファ０のメモリウェイＢＫ０−Ｗ２に格納された受信データブロック３は、バッファコピー処理（１）、データ解凍処理（２）および演算処理（３）が実行され、演算後受信データブロック３は、演算バッファ１のメモリウェイＢＫ１−Ｗ２に格納される。
【０１３１】
＜＜＜受信データブロック１＞＞＞
期間Ｔ１において、子タスク「（１）ＤＭＡ１（Ｒ）ブロック１（Ｒ）」により、通信バッファ０のメモリウェイＢＫ０−Ｗ０から１ＫＢの受信データブロック１がリードされる。このリード動作と平行して、リードされている受信データブロック１は、同じ期間Ｔ１において、子タスク「（１）ＤＭＡ１（Ｗ）ブロック１（Ｗ）」により、演算バッファ１のメモリウェイＢＫ１−Ｗ０において、連続する１ＫＢのアドレス領域にライトされる。
【０１３２】
リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭを用いて、子タスク「（１）ＤＭＡ１（Ｗ）ブロック１（Ｗ）」により、メモリウェイＢＫ１−Ｗ０における連続した１ＫＢのアドレス領域への受信データブロック１のライトを検出する。
【０１３３】
連続した１ＫＢのアドレス領域へのライトを検出すると、リアルタイムスケジュール装置ＲＴＳＤは、タスク起動条件設定レジスタＴＳＣＲ＿１の条件が満たされたとして、期間Ｔ２において、子タスク「（２）ＣＰＵ１（Ｒ）ブロック１（Ｒ）」を実行させる。これにより、メモリウェイＢＫ１−Ｗ０から、受信データブロック３がリードされるとともに、データ解凍が行われる。解凍後受信データブロック１は、２．５倍の２．５ＫＢとなるため、解凍後受信データブロック１のリードは、時刻Ｔ４−２まで行われている。
【０１３４】
リアルタイムスケジュール装置ＲＴＳＤは、解凍後受信データブロック１において、最初の連続する１ＫＢの解凍後受信データブロック１（以下、１番目の解凍後受信データブロック１と称する）を、期間Ｔ２において、子タスク「（２）ＣＰＵ１（Ｗ）ブロック１（Ｗ）」により、演算バッファ２のメモリウェイＢＫ２−Ｗ０の連続した１ＫＢのアドレス領域にライトする。また、リアルタイムスケジュール装置ＲＴＳＤは、解凍後受信データブロック１において、次に連続する１ＫＢの解凍後受信データブロック１（以下、２番目の解凍後受信データブロック２と称する）を、期間Ｔ３において、子タスク「（２）ＣＰＵ１（Ｗ）ブロック１（Ｗ）」により、演算バッファ２のメモリウェイＢＫ２−Ｗ１の連続した１ＫＢのアドレス領域にライトする。さらに、リアルタイムスケジュール装置ＲＴＳＤは、解凍後受信データブロック１において、残りの連続する０．５ＫＢの解凍後受信データブロック１を、期間Ｔ４の始まりから時刻Ｔ４−２の間で、子タスク「（２）ＣＰＵ１（Ｗ）ブロック１（Ｗ）」により、演算バッファ２のメモリウェイＢＫ２−Ｗ３の連続した０．５ＫＢのアドレス領域にライトする。
【０１３５】
リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭを用いて、子タスク「（２）ＣＰＵ１（Ｗ）ブロック１（Ｗ）」により、メモリウェイＢＫ２−Ｗ０における連続した１ＫＢのアドレス領域への１番目の解凍後受信データブロック１のライトを検出する。メモリウェイＢＫ２−Ｗ０における連続した１ＫＢのアドレス領域へのライトを検出すると、リアルタイムスケジュール装置ＲＴＳＤは、タスク起動条件設定レジスタＴＳＣＲ＿３の条件が満たされたとして、期間Ｔ３において、子タスク「（３）ＣＰＵ３（Ｒ）ブロック１（Ｒ）」を起動する。この子タスクにより、メモリウェイＢＫ２−Ｗ０から１番目の解凍後受信データブロック１がリードされ、所定の演算が行われる。所定の演算により得られた１番目の演算後受信データは、期間Ｔ３において、子タスク「（３）ＣＰＵ３（Ｗ）ブロック１（Ｗ）」により、演算バッファ３のメモリウェイＢＫ３−Ｗ１にライトされる。
【０１３６】
リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭを用いて、子タスク「（２）ＣＰＵ１（Ｗ）ブロック１（Ｗ）」により、メモリウェイＢＫ２−Ｗ１における連続した１ＫＢのアドレス領域への２番目の解凍後受信データブロック１のライトを検出する。メモリウェイＢＫ２−Ｗ１における連続した１ＫＢのアドレス領域へのライトを検出すると、リアルタイムスケジュール装置ＲＴＳＤは、タスク起動条件設定レジスタＴＳＣＲ＿３の条件が満たされたとして、時刻Ｔ４−１から時刻Ｔ５−１の期間において、子タスク「（３）ＣＰＵ２（Ｒ）ブロック１（Ｒ）」を起動する。この子タスクにより、メモリウェイＢＫ２−Ｗ１から２番目の解凍後受信データブロック１がリードされ、所定の演算が行われる。所定の演算により得られた２番目の演算後受信データは、時刻Ｔ４−１から時刻Ｔ５−１の期間において、子タスク「（３）ＣＰＵ２（Ｗ）ブロック１（Ｗ）」により、演算バッファ３のメモリウェイＢＫ３−Ｗ２にライトされる。
【０１３７】
リアルタイムスケジュール装置ＲＴＳＤは、時刻Ｔ４−２において、メモリウェイＢＫ２−Ｗ３の連続したアドレス領域への３番目の解凍後受信データブロック１のライトの完了したのを、検出すると、時刻Ｔ５−１において子タスク「（３）ＣＰＵ２（Ｒ）ブロック１（Ｒ）」を起動する。この子タスク「（３）ＣＰＵ２（Ｒ）ブロック１（Ｒ）」により、時刻Ｔ５−１から時刻Ｔ５−３の期間において、メモリウェイＢＫ２−Ｗ３にライトされている３番目の解凍後受信データブロック１が、リードされ、リードされた解凍後受信データブロック１に対して所定の演算が行われる。
【０１３８】
また、リアルタイムスケジュール装置ＲＴＳＤは、時刻Ｔ５−１から時刻Ｔ５−３の期間において、子タスク「（３）ＣＰＵ２（Ｗ）ブロック１（Ｗ）」を起動する。これにより、３番目の演算後受信データブロック１は、時刻Ｔ５−１から時刻Ｔ５−３の期間において、タスク「（３）ＣＰＵ２（Ｗ）ブロック１（Ｗ）」により、演算バッファ１のメモリウェイＢＫ１−Ｗ１にライトされる。
【０１３９】
３番目の解凍受信データブロック１は、０．５ＫＢであるため、メモリウェイＢＫ２−Ｗ３に解凍後受信データブロック１をライトするとき、連続する１ＫＢのアドレス領域を指定する全ての変換後アドレス信号は、バススイッチ回路ＢＢ−ＳＷから出力されない。しかしながら、受信データブロック１の最後を示すエンド情報が、予めフレーム１に含まれ、３番目の解凍後受信データブロック１に含まれている。リアルタイムスケジュール装置ＲＴＳＤは、このエンド情報を検出すると、３番目の解凍後受信データブロック１のライトが完了したものと判定し、上記したように、タスク「（３）ＣＰＵ２（Ｒ）ブロック１（Ｒ）」を起動する。すなわち、プロセッサＣＰＵ２に割り当てられている別のタスクが、時刻Ｔ５−１で終了したタイミングで、プロセッサＣＰＵ２に対してタスク「（３）ＣＰＵ２（Ｒ）ブロック１（Ｒ）」を起動させる。
【０１４０】
以上で、通信バッファ０のメモリウェイＢＫ０−Ｗ０に格納された受信データブロック１に対して、バッファコピー処理（１）、データ解凍処理（２）および演算処理（３）が実行され、演算結果は、メモリウェイＢＫ１−Ｗ０、ＢＫ１−Ｗ１およびＢＫ３−Ｗ２に格納されることになる。
【０１４１】
リアルタイムスケジュール装置ＲＴＳＤは、受信データブロック２および４についても、受信データブロック１および３と同様にして、タスクを起動する。
【０１４２】
以上述べたように、リアルタイムスケジュール装置ＲＴＳＤは、バンクメモリの連続した１ＫＢのアドレス領域に対してライトが行われたか否かを検出する。連続した１ＫＢのアドレスに対してライトが行われたことを検出すると、リアルタイムスケジュール装置ＲＴＳＤは、次に起動すべきタスクの入力データが確定したものと判定して、タスクスケジューリングに従って、次のタスクを起動する。また、リアルタイムスケジュール装置ＲＴＳＤは、メモリの連続した１ＫＢのアドレス領域に対してライトが行われていなくても、エンド情報を検出すると、次に起動すべき子タスクの入力データが確定したものと判定して、タスクスケジューリングに従って、次のタスクを起動する。従って、リアルタイムスケジュール装置ＲＴＳＤは、その入力データが確定したタスクを優先的に起動することが可能となり、パフォーマンスの向上を図ることが可能である。
【０１４３】
上記したように、リアルタイムスケジュール装置ＲＴＳＤは、連続した１ＫＢのアドレス領域を超える解凍後受信データブロック３については、複数の連続した１ＫＢのアドレス領域に分割している。すなわち、解凍後受信データブロック３については、タスクの入力データが確定しているか否かを判定する条件である１ＫＢのアドレス領域を超えないように分割していると見なすことができる。
【０１４４】
＜変形例＞
図１２では、データ解凍用タスクによって解凍された解凍後受信データブロックのサイズが、所定のアドレス領域のサイズの整数倍にならない場合（図１２では、０．５ＫＢ）、エンド情報をメモリウェイにライトするようにしていた。これにより、メモリウェイへのアクセス回数を低減することが可能である。
【０１４５】
変形例においては、データ解凍用タスクに割り当てられたマスタ（図１２では、プロセッサ）が、解凍後受信データブロックのサイズが、所定のアドレス領域のサイズ（図１２では、１ＫＢ）の整数倍となるように、解凍後受信データブロックに対して調整用データを付加する。調整用データは、例えば２進論理値“０”である。解凍後受信データブロックを、メモリウェイにライトするとき、１ＫＢの整数倍となるように、マスタは、解凍後受信データブロックをメモリウェイにライトしたあと、整数倍にするのに不足する部分に、複数の２進論理値“０”をライトする。
【０１４６】
受信データブロック３を例にして説明すると、期間Ｔ４において、マスタであるプロセッサＣＰＵ１は、３番目の解凍後受信データブロック３である０．５ＫＢのデータをＢＫ２−Ｗ３にライトしたあとのアドレス領域に、０．５ＫＢ分の２進論理値“０”をライトする。これにより、期間Ｔ４において、解凍後受信データブロック３に関連するタスク「（２）ＣＰＵ１（Ｗ）ブロック１（Ｗ）」によって、メモリウェイＢＫ２−Ｗ３の連続した１ＫＢのアドレス領域にライトが行われることになる。その結果、リアルタイムスケジュール装置ＲＴＳＤは、エンド情報を検出しなくても、次タスクに対する入力データが確定したか否かを判定することが可能となる。
【０１４７】
（実施の形態２）
実施の形態２に係わる半導体装置ＦＬＳにおいては、図１に示したデータ確定判定レジスタＭＡＣＭ＿Ｒが、図１１（Ｃ）に示したタスク一時停止条件設定レジスタＴＴＳＲを備えている。一時停止条件設定レジスタＴＴＳＲは、一時停止を行うタスクに対応した数の一時停止条件設定レジスタＴＴＳＲ＿１〜ＴＴＳＲ＿ｎ（図示せず）を備えている。ここでは、一時停止を行うタスクとして、データ解凍用タスクおよび演算用タスクの２つを例にして説明する。図１１（Ｃ）において、一時停止条件設定レジスタＴＴＳＲ＿１は、データ解凍用タスクに対応し、一時停止条件設定レジスタＴＴＳＲ＿２は、演算用タスクに対応している。
【０１４８】
一時停止条件設定レジスタＴＴＳＲ＿１およびＴＴＳＲ＿２は、条件部と停止対象タスク部とを備えている。停止対象タスク部には、一時停止を行うタスクを特定する識別子が設定され、条件部には、一時停止を行うときの条件が設定される。特に制限されないが、半導体装置ＦＬＳを動作させる前に、識別子および条件が、一時停止条件設定レジスタＴＴＳＲ＿１およびＴＴＳＲ＿２の停止対象タスク部および条件部に設定される。図１１（Ｃ）では、一時停止条件設定レジスタＴＴＳＲ＿１の停止対象タスク部にデータ解凍用タスクの識別子ＤＴＴが設定され、条件部に条件ＡＤＳ＿１が設定されている。また、一時停止条件設定レジスタＴＴＳＲ＿２の停止対象タスク部に演算用タスクの識別子ＤＡＴが設定され、条件部に条件ＡＤＳ＿２が設定されている。
【０１４９】
図１１（Ｃ）には、一時停止条件設定レジスタＴＴＳＲ＿１、ＴＴＳＲ＿２を用いて、タスクを一時的に停止する条件が、タスク停止条件説明として記載されている。勿論、このタスク停止条件説明は、説明のためであって、一時停止条件設定レジスタＴＴＳＲ＿１、ＴＴＳＲ＿２に含まれているものではない。
【０１５０】
図１に示したリアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭと、一時停止条件設定レジスタＴＴＳＲ＿１、ＴＴＳＲ＿２と、図１１（Ｂ）に示したタスク起動制御用ポインタＴＳＳＰ＿２およびＴＳＳＰ＿４を用いて、タスクを一時的に停止するように制御する。
【０１５１】
条件ＡＤＳ＿１およびＡＤＳ＿２は、対応するタスク起動制御用ポインタＴＳＳＰ＿２およびＴＳＳＰ＿４に設定されている条件ＳＡＤ＿２およびＳＡＤ＿４により特定される先頭アドレスからの所定のアドレス領域を指定するアドレス情報である。ここでは、条件ＡＤＳ＿１およびＡＤＳ＿２として、４ＫＢ（４０９６バイト）のアドレス範囲情報が設定されているものとして説明する。リアルタイムスケジュール装置ＲＴＳＤは、条件ＡＤＳ＿１およびＡＤＳ＿２として設定された４ＫＢを閾値として、この閾値を超えたとき、停止対象タスクＤＴＴおよびＤＡＴを、一時的に停止する。次に、データ解凍用タスクおよび演算用タスクを一時停止するときの動作を説明する。
【０１５２】
＜一時停止対象タスクが（２）データ解凍用タスク＞
図１２で説明したように、（２）データ解凍用タスク（例えば「（２）ＣＰＵ１（Ｗ）ブロック１（Ｗ）」）は、解凍後受信データブロック３を、バンクメモリにライトする。バンクメモリにライトされた解凍後受信データブロック３は、その後、（３）データ演算用タスク「（３）ＣＰＵ２（Ｒ）ブロック１（Ｒ）」によってリードされる。
【０１５３】
リアルタイムスケジュール装置ＲＴＳＤは、（２）データ解凍用タスクによってライトされたアドレス領域に対して、（２）データ解凍用タスク以外のタスクに割り当てられたマスタによってリードされていないアドレス領域が、条件ＳＡＤ＿２により特定される先頭アドレスから条件ＡＤＳ＿１の閾値（４ＫＢ）を超えているか否かを検出する。すなわち、リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭからの変換アドレス信号によって、（２）データ解凍用タスクによってライトされたアドレス領域に対して、他のタスクに割り当てられたマスタによってリードのアクセスが行われたか否かを検出する。この検出により、リードのアクセスが行われていないアドレス領域が、条件ＳＡＤ＿２およびＡＤＳ＿１により特定されるアドレス領域（閾値）を超えていた場合、タイムスケジュール装置ＲＤＳＴは、（２）データ解凍用タスクを一時的に停止する。
【０１５４】
（２）データ解凍用タスク「（２）ＣＰＵ１（Ｗ）ブロック１（Ｗ）」が実行されることにより、メモリウェイにおいて、連続した１ＫＢのアドレス領域に解凍後受信データブロックがライトされると、（３）データ演算用タスク「（３）ＣＰＵ２（Ｒ）ブロック１（Ｒ）」の入力データが確定したものと判定される。すなわち、（２）データ解凍用タスクによってライトされた解凍後受信データブロックは、通常であれば、この（２）データ解凍用タスク以外の（３）データ演算用タスクに割り当てられたマスタによってリードされることになる。ところが、なんらかの理由により、入力データが確定した後も、（３）データ演算用タスクによってリードされないと、解凍後受信データブロックがバンクメモリから溢れることが危惧される。実施の形態２によれば、条件ＳＡＤ＿２で設定されている先頭アドレスと条件ＡＤＳ＿１で設定されている閾値とで特定されるアドレス領域を超えるようなことが生じた場合、（２）データ解凍用タスクを一時的に停止することにより、解凍後受信データブロックがメモリウェイから溢れることを防ぐことが可能である。
【０１５５】
＜一時停止対象タスクが（３）演算用タスク＞
図１２で説明したように、（３）演算用タスク（例えば「（３）ＣＰＵ１（Ｗ）ブロック１（Ｗ）」）は、所定の演算により得られた演算後受信データブロック１を、メモリウェイにライトする。メモリウェイにライトされた演算後受信データは、この（３）演算用タスク以外の別のタスクに割り当てられたマスタよってリードされ、別のタスクの入力データとなる。
【０１５６】
リアルタイムスケジュール装置ＲＴＳＤは、（３）演算用タスクによってライトされたアドレス領域に対して、（３）演算用タスク以外の別のタスクに割り当てられたマスタによってリードされていないアドレス領域が、条件ＳＡＤ＿４に設定されている先頭アドレスから条件ＡＤＳ＿２の閾値（４ＫＢ）を超えているか否かを検出する。すなわち、リアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭからの変換アドレス信号によって、（３）演算用タスクによってライトされたアドレス領域に対して、別のタスクに割り当てられたマスタによってリードのアクセスが行われたか否かを検出する。この検出により、リードのアクセスが行われていないアドレス領域が、条件ＳＡＤ＿４およびＡＤＳ＿２により特定されるアドレス領域（閾値）を超えていた場合、リアルタイムスケジュール装置ＲＴＳＤは、（３）演算用タスクを一時的に停止する。
【０１５７】
（２）データ解凍用タスクの場合と同様に、なんらかの理由により、メモリウェイに演算後受信データブロックをライトした後も、別のタスクによってリードされないと、演算後受信データブロックがメモリウェイに格納され続け、所定の領域を超えて蓄積されすぎることが危惧される。実施の形態２によれば、条件ＳＡＤ＿４およびＡＤＳ＿２で設定されている閾値を超えるようなことが生じた場合、（３）演算用タスクを一時的に停止することにより、バンクメモリに演算後受信データブロックが、所定の領域を超えて格納されすぎるのを防ぐことが可能である。
【０１５８】
リアルタイムスケジュール装置ＲＴＳＤは、例えば周期的に、タスク起動制御用ポインタＴＳＳＰ＿２およびＴＳＳＰ＿４と、タスク一時停止条件設定レジスタＴＴＳＲと、メモリアクセスモニタ回路ＭＡＣＭを用いて、条件部に設定されている条件ＳＡＤ＿２、ＳＡＤ＿４、ＡＤＳ＿１、ＡＤＳ＿２で特定される閾値を超えているか否かの検出を行う。これにより、周期的に、解凍後受信データブロックが、メモリウェイからオーバーフローしていないかが検出され、演算受信データブロックが、バンクメモリにおいて所定の領域を超えて格納されすぎていないかを検出することができる。また、オーバーフローが発生している場合または／および格納されすぎている場合には、対象のデータをライトするタスクを一時的停止し、オーバーフローの解消または／および格納されすぎを低減することが可能である。
【０１５９】
実施の形態では、１ＫＢの連続するアドレス領域を例にして説明したが、これに限定されるものではない。すなわち、１ＫＢは一例であり、アドレス領域は、任意のアドレス範囲でよい。また、連続しない不連続のアドレス領域であってもよい。例えば、２つの不連続のアドレス領域に解凍受信データブロックをライトする場合、それぞれのアドレス領域に対して、図１１（Ａ）および（Ｂ）で説明したレジスタを設けるようにすればよい。さらに、受信データを例として説明したが、これに限定されるものでもない。また、具体例として、バンクメモリが６４ＫＢで、メモリウェイが１ＫＢを例にして説明したが、これに限定されるものではない。
【０１６０】
実施の形態に係わるリアルタイムスケジュール装置ＲＴＳＤは、メモリアクセスモニタ回路ＭＡＣＭと、データ確定判定レジスタＭＡＣＭ＿Ｒとを用いて、タスクが必要とする入力データが確定したか否かをモニタしていると見なすことができる。
【０１６１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１６２】
ＡＤ−ＣＶ  アドレス変換回路
ＢＢ−ＳＷ  バススイッチ回路
ＢＫ０〜ＢＫ３  バンクメモリ
ＢＫ０−Ｗ０〜ＢＫ０−Ｗ３、ＢＫ１−Ｗ０〜ＢＫ１−Ｗ３、ＢＫ２−Ｗ０〜ＢＫ２−Ｗ３、ＢＫ３−Ｗ０〜ＢＫ３−Ｗ３  メモリウェイ
ＣＰＵ１〜ＣＰＵ３  プロセッサ
ＤＭＡ１〜ＤＭＡ４  ＤＭＡコントローラ
ＦＬＳ  半導体装置
ＲＴＳＤ  リアルタイムスケジュール装置
ＭＡＣＭ  メモリアクセスモニタ回路
ＭＡＣＭ＿Ｒ  データ確定判定レジスタ
ＴＩＳＣ１  第１転送情報取得回路
ＴＩＳＣ２  第２転送情報取得回路
ＴＩＳＣ＿Ｒ  タイミング制約レジスタ
【図１】
2020071688.tif 000003
【図２】
2020071688.tif 000004
【図３】
2020071688.tif 000005
【図４】
2020071688.tif 000006
【図５】
2020071688.tif 000007
【図６】
2020071688.tif 000008
【図７】
2020071688.tif 000009
【図８】
2020071688.tif 000010
【図９】
2020071688.tif 000011
【図１０】
2020071688.tif 000012
【図１１】
2020071688.tif 000013
【図１２】
2020071688.tif 000014