(57)【要約】【課題】ＣＰＵのようなメインプロセッサと、ＤＳＰのようなサブプロセッサとを備えてなるコンピュータシステムにおいて、サブプロセッサのメモリ内容を時分割で入れ替えながら複数のアプリケーションを処理する際に、この入れ替え作業を効率的に行うこと。【解決手段】メインプロセッサとサブプロセッサとメインメモリ１４とを備えてなるコンピュータシステムにおいて、メインプロセッサ上で動作し、サブプロセッサのメモリ内容のうち、メインメモリ１４へ退避する領域を設定するアプリケーション２０と、メインプロセッサ上で動作し、アプリケーション２０によって設定された領域をメインメモリ１４へ退避させるとともに、退避後のメモリ内容を、メインメモリ１４から退避前のサブプロセッサへ復元させるディスパッチャ２２とを備えてなる。【選択図】図１
2008226145.tif 000002
【特許請求の範囲】
【請求項１】
メインプロセッサとサブプロセッサとメインメモリとを備えてなるコンピュータシステムにおいて、
前記メインプロセッサ上で動作し、前記サブプロセッサのメモリ内容のうち、前記メインメモリへ退避する領域を設定するアプリケーションと、
前記メインプロセッサ上で動作し、前記アプリケーションによって設定された領域を前記メインメモリへ退避させるとともに、退避後のメモリ内容を、前記メインメモリから退避前のサブプロセッサへ復元させるディスパッチャと
を備えたコンピュータシステム。
【請求項２】
前記アプリケーションによる領域の設定は、前記メインプロセッサ上で動作するオペレーティングシステムを介して前記ディスパッチャへなされ、前記ディスパッチャによってなされるメモリ内容の退避及び復元はシステムコールによってなされる請求項１に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＣＰＵのようなメインプロセッサと、ＤＳＰのようなサブプロセッサとを備えてなるコンピュータシステムに関し、更に詳しくは、サブプロセッサのメモリ内容を時分割で入れ替えながら１つのサブプロセッサで複数のアプリケーションを処理するコンピュータシステムに関する。
【背景技術】
【０００２】
昨今、動画のエンコードやデコード等、単一プロセッサだけでは処理しきれないアプリケーションが増えている。汎用プロセッサと専用ハードウェアとの両方を備えるという解決方法もあるが、多様な処理を行うために、専用ハードウェアではなく、メインプロセッサとなる汎用プロセッサとＤＳＰ（Digital Signal Processor）のようなプログラマブルなサブプロセッサとを組み合わせ、ヘテロジニアスなマルチコアでコンピュータシステムを構成するケースも増えている。
【０００３】
図７は、この種の従来から用いられているコンピュータシステムの構成例を示す概念図である。
【０００４】
図７に示すコンピュータシステムは、入力データ１６をＤＳＰ１２で処理し、処理結果である出力データ１８を出力する例を示す。ＣＰＵ１０は、コンピュータシステム全体の動きを制御するメインプロセッサとして機能し、例えばＲＡＭからなるＤＳＰ１２は、データ処理に特化されたサブプロセッサとして機能する。この種のコンピュータシステムの公知技術としては例えば特許文献１がある。図７に示すコンピュータシステムは、更にＣＰＵ１０とＤＳＰ１２との間に、メインメモリ１４が設けられている。
【０００５】
なお、ＤＳＰ１２での処理がある程度複雑な場合、図８に示すように、ＤＳＰ１２内で実行されるデータ処理アプリケーションは、複数のスレッド３０（＃１，＃２，・・・）と、それを切り替えるＤＳＰスレッドスケジューラ３２とから構成される場合もある。
【０００６】
更に処理が複雑になり、単一のＤＳＰ１２のみでは、データ処理アプリケーションの処理量や、ＲＡＭ容量の理由により単一のＤＳＰ１２の処理能力を超えてしまう場合は、図９のように、複数のＤＳＰ１２（＃１，＃２，・・・）を組み合わせてコンピュータシステムを構築する場合もある。
【０００７】
しかしながら、アプリケーションの処理量がＲＡＭ容量を超える場合であっても、処理能力に十分余裕がある場合には、例えば図１０に示すようにアプリケーション（ＡＰＬ）１とアプリケーション（ＡＰＬ）２とを交互に時分割で処理することによって、１つのＤＳＰ１２で処理可能な場合もある。
【０００８】
図１１は、図１０を実現するためのメインメモリ１４のマップの例である。メインメモリ１４は、（１）ＣＰＵ１０が実行するオペレーティングシステム（ＯＳ）と、（２）ＣＰＵ  ＡＰＬと、ＤＳＰ１２上で時分割で実行される（３）ＡＰＬ１及び（４）ＡＰＬ２とがある。ＡＰＬ１及びＡＰＬ２をＤＳＰ１２にロードし、実行開始するのは、メインプロセッサであるＣＰＵ１０上で実行されるＤＳＰディスパッチャ（図示せず）である。（１）のＯＳは、このＤＳＰディスパッチャを含んでいる。ＡＰＬの入れ替えでは、それまで実行していたＡＰＬの実行状態を保存し、次に実行すべきＡＰＬの実行状態を復元する。このため、メインメモリ１４には、（５）及び（６）のように、各ＡＰＬの実行状態を保存しておくための領域が必要である。
【０００９】
なお、ＣＰＵ１０での時分割実行では、実行プログラムやデータの少なくとも一部はメインメモリ１４上にあり、入れ替えの対象はレジスタや管理用の一部のメモリ領域のみである。一方、図１０の場合は、レジスタだけでなく実行プログラムを含めたＤＳＰ１２全体が入れ替えの対象となる。
【特許文献１】特開２００５−１８５９０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ＤＳＰ１２のＲＡＭは、例えば３２ｋｗｏｒｄ程度であり、さほど大きいサイズではないものの、レジスタだけでなく実行コードを含めたＤＳＰ１２全体を入れ替えるためには、それなりに時間がかかる。そして、図１０中の時間Ｔに示すように、この入れ替えに要する時間は、ＤＳＰ１２の利用効率に直結する。したがって、この入れ替えによって、ＤＳＰ１２の利用効率の低下をもたらす恐れがあるという問題がある。
【００１１】
本発明はこのような事情に鑑みてなされたものであり、ＣＰＵのようなメインプロセッサと、ＤＳＰのようなサブプロセッサとを備えてなるコンピュータシステムにおいて、サブプロセッサのメモリ内容を時分割で入れ替えながら複数のアプリケーションを処理する際に、この入れ替え作業を効率的に行うことにより、サブプロセッサの利用効率の低下を阻止することが可能なコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するために、本発明では、以下のような手段を講じる。
【００１３】
すなわち、請求項１の発明は、メインプロセッサとサブプロセッサとメインメモリとを備えてなるコンピュータシステムにおいて、メインプロセッサ上で動作し、サブプロセッサのメモリ内容のうち、メインメモリへ退避する領域を設定するアプリケーションと、メインプロセッサ上で動作し、アプリケーションによって設定された領域をメインメモリへ退避させるとともに、退避後のメモリ内容を、メインメモリから退避前のサブプロセッサへ復元させるディスパッチャとを備えてなる。
【００１４】
また、請求項２の発明は、請求項１の発明のコンピュータシステムにおいて、アプリケーションによる領域の設定は、前記メインプロセッサ上で動作するオペレーティングシステムを介して前記ディスパッチャへなされ、前記ディスパッチャによってなされるメモリ内容の退避及び復元はシステムコールによってなされる。
【発明の効果】
【００１５】
本発明によれば、ＣＰＵのようなメインプロセッサと、ＤＳＰのようなサブプロセッサとを備えてなるコンピュータシステムにおいて、サブプロセッサのメモリ内容を時分割で入れ替えながら複数のアプリケーションを処理する際に、この入れ替え作業を効率的に行うことにより、サブプロセッサの利用効率の低下を阻止することが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下に、本発明を実施するための最良の形態について図面を参照しながら説明する。
【００１７】
なお、以下の実施の形態の説明に用いる図中の符号は、図７乃至図１１と同一部分については同一符号を付して示すことにする。
【００１８】
（第１の実施の形態）
すなわち、本実施の形態に係るコンピュータシステムは、図７に示すように、ＣＰＵ１０のようなメインプロセッサと、ＤＳＰ１２のようなサブプロセッサと、メインメモリ１４とを備えてなるコンピュータシステムである。このコンピュータシステムは、図１に示すように、メインメモリ１４内に、ＣＰＵ１０上で動作し、ＤＳＰ１２のメモリ内容のうち、メインメモリ１４へ退避する領域を設定する領域設定アプリケーション（領域設定ＡＰＬ）２０と、ＣＰＵ１０上で動作し、領域設定ＡＰＬ２０によって設定された領域をメインメモリ１４へ退避させるとともに、退避後のメモリ内容を、メインメモリ１４から退避前のＤＳＰ１２へ復元させるディスパッチャ２２とを備えている。そして、領域設定ＡＰＬ２０による領域の設定は、ＣＰＵ１０上で動作するオペレーティングシステム(ＯＳ)を介してディスパッチャ２２へなされる。また、ディスパッチャ２２によってなされるメモリ内容の退避及び復元は、限定される訳ではないが、例えばＵＮＩＸ（登録商標）で使用されるシステムコールによってなされる。
【００１９】
次に、以上のように構成した本実施の形態に係るコンピュータシステムの動作について説明する。
【００２０】
すなわち、本実施の形態に係るコンピュータシステムは、図７に示すように、ＣＰＵ１０のようなメインプロセッサと、ＤＳＰ１２のようなサブプロセッサと、メインメモリ１４とを備えてなるコンピュータシステムである。更にこのコンピュータシステムは、図１に示すように、メインメモリ１４内に、領域設定ＡＰＬ２０と、ＣＰＵ１０上で動作するディスパッチャ２２とが備えられている。
【００２１】
そして、領域設定ＡＰＬ２０によって、ＤＳＰ１２のメモリ内容のうち、メインメモリ１４へ退避する領域がＡＰＬ毎に設定される。領域設定ＡＰＬ２０による領域の設定は、ＣＰＵ１０上で動作するＯＳを介してディスパッチャ２２へなされる。また、ディスパッチャ２２によって、あるＡＰＬについて領域設定ＡＰＬ２０によって設定された領域がＤＳＰ１２からメインメモリ１４へ退避されるとともに、このＡＰＬを再びＤＳＰ１２によって実行する際には、退避済のメモリ内容が、メインメモリ１４から退避前のＤＳＰ１２へ復元される。
【００２２】
このようにしてディスパッチャ２２によって行われる退避復元に必要な条件設定を、前述したシステムコールを用いて行う場合を例にとって図２を用いて説明する。図２は、２つのアプリケーション（ＡＰＬ１，ＡＰＬ２）を１つのＤＳＰ１２において交互に実行する場合のタイミング図である。
【００２３】
まず、システムコールＳ１において、基本周期ｔｏを指定する。基本周期ｔｏとはＤＳＰ１２が１サイクルの処理に要する時間、すなわち、あるＡＰＬの処理開始時から、次のサイクルにおける処理開始時までに要する時間であり、単位は例えばｍｓ（ミリ秒）である。
【００２４】
次に、システムコールＳ２において、メインメモリ１４上における各ＡＰＬ（例えばＡＰＬ１及びＡＰＬ２）のロード元アドレス及びサイズをそれぞれ指定する。
【００２５】
更に、システムコールＳ３において、ＤＳＰ１２において実行される各ＡＰＬ（例えばＡＰＬ１及びＡＰＬ２）それぞれについて、実行状態として保存を要する領域のアドレスとサイズとを指定する。図３は、ＤＳＰ１２における実行状況の一例を示す図であり、アドレス０ｘ００００から０ｘ４０００までにプログラムが格納され、アドレス０ｘ４０００から０ｘ６０００までにデータが格納され、アドレス０ｘ６０００から０ｘ７ＦＦＦまでが未使用であることを示している。例えば、実行状態としてプログラムを保存する場合には、アドレスとして０ｘ００００を、サイズとしてそのプログラムのサイズをそれぞれ指定する。
【００２６】
そして、システムコールＳ４において、ＤＳＰ１２において実行される各ＡＰＬ（例えばＡＰＬ１及びＡＰＬ２）それぞれについて、基本周期ｔｏ内で与えられる実行時間ｔ（例えばｔ１及びｔ２）を指定する。基本周期ｔｏと実行時間ｔとの関係は、図２に示すように、各ＡＰＬの実行時間ｔの合計に、時間Ｔの２倍を加えた時間が基本周期ｔｏとなる。時間Ｔは、ディスパッチャ２２によってなされる領域の退避及び復元に要する時間である。
【００２７】
図４は、このようなシステムコールＳ１〜Ｓ４を実行するためのプログラムの一例である。図４のプログラムにその一例を示すようなシステムコールＳ１〜Ｓ４を用いて、領域設定ＡＰＬ２０によってディスパッチャ２２に対して退避復元に必要な条件設定がなされると、図２に示すように、ディスパッチャ２２によって、２つのアプリケーション（ＡＰＬ１，ＡＰＬ２）が１つのＤＳＰ１２において交互に実行される。
【００２８】
つまり、ＤＳＰ１２によってＡＰＬ１が時間ｔ１実行されると、ディスパッチャ２２によって、システムコールＳ３で指定されたアドレス及びサイズに従って、ＡＰＬ１の保存を要する領域がメインメモリ１４に退避されるとともに、システムコールＳ２で指定されたＡＰＬ２のロード元アドレス及びサイズに従って、メインメモリ１４に退避していたＡＰＬ２の領域がＤＳＰ１２に復元される。時間Ｔは、このような退避復元に要する時間である。このようにしてＡＰＬ１の退避及びＡＰＬ２の復元が効率的に行われると、ＤＳＰ１２では、ＡＰＬ２の実行が開始される。
【００２９】
ＡＰＬ２も同様に、時間ｔ２実行されると、ディスパッチャ２２によって、システムコールＳ３で指定されたアドレス及びサイズに従って、ＡＰＬ２の保存を要する領域がメインメモリ１４に退避されるとともに、システムコールＳ２で指定されたＡＰＬ１のロード元アドレス及びサイズに従って、メインメモリ１４に退避していたＡＰＬ１の領域がＤＳＰ１２に復元される。時間Ｔは、このような退避復元に要する時間である。このようにしてＡＰＬ２の退避及びＡＰＬ１の復元が効率的に行われると、ＤＳＰ１２では、ＡＰＬ１の実行が開始される。
【００３０】
これを繰り返すことによって、ディスパッチャ２２によって、２つのアプリケーション（ＡＰＬ１，ＡＰＬ２）が１つのＤＳＰ１２によって効率的に交互に実行される。なお、本実施の形態では、２つのＡＰＬを例に説明したが、本発明のコンピュータシステムは、このような２つのＡＰＬの時分割処理に限定される訳ではなく、任意数のＡＰＬの時分割処理にも同様に適用可能であることが理解されよう。
【００３１】
上述したように、本実施の形態に係るコンピュータシステムにおいては、上記のような作用により、ＣＰＵ１０のようなメインプロセッサと、ＤＳＰ１２のようなサブプロセッサと、メインメモリ１４とを備えてなるコンピュータシステムにおいて、サブプロセッサのメモリ内容を時分割で入れ替えながら複数のアプリケーションを処理する際に、この入れ替え作業を効率的に行うことができる。その結果、入れ替え作業に要する時間Ｔを極力短くすることができ、もって、サブプロセッサの利用効率の低下を阻止することが可能となる。
【００３２】
（第２の実施の形態）
第２の実施の形態では、ディスパッチャ２２によってなされるメモリ内容の退避及び復元を、ＥＬＦ（Executable and Linking Format）形式を用いて行う例について説明する。
【００３３】
ＥＬＦとは、プログラムを作成するための所定のバイナリフォーマットのことである。どのようなバイナリフォーマットを使うか、また、バイナリフォーマットに含まれる情報をどのように使うかは、システム毎にＡＢＩ（Application Binary Interface）によって定められている。
【００３４】
ＥＬＦ形式にはプログラムヘッダという領域があり、プログラムを配置すべきアドレス（p_paddr）とメモリサイズ（p_memsz）とを格納することができる。そして、ＡＢＩにより、プログラムヘッダに書かれたp_paddrとp_memszで示される領域以外は使用しないと規定されていれば、この情報のみで退避、復元すべき領域を知ることができる。
【００３５】
第１の実施の形態では、システムコールＳ３を使用して、アプリケーションから明示的に退避、復元すべき領域を指定した。それに対して、本実施の形態では、システムコールＳ２で指定されたメインメモリ上のＤＳＰ  ＡＰＬのＥＬＦ形式から退避、復元すべき領域を抽出できるので、システムコールＳ３を不要とすることができる。
【００３６】
また、ＥＬＦ形式では、セクションという単位で領域を管理しており、セクション毎にアドレスやサイズの情報が含まれている。主なセクションを図５に示す。そして、例えば図６に示すようなセクション群を持つプログラムであれば、全体としては、０ｘ００００〜０ｘ７７ＦＦまでの領域を使用することがわかる。
【００３７】
以上、本発明を実施するための最良の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。特許請求の範囲の発明された技術的思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の技術的範囲に属するものと了解される。
【００３８】
例えば、第２の実施の形態では、ＥＬＦを用いる例について説明したが、ＥＬＦを用いる場合は、使用する領域のアドレスとサイズを抽出できるＡＢＩ及びバイナリフォーマットであれば、第２の実施の形態で説明した方式に限定される訳でもなく、また、ＥＬＦ形式に限定される訳でもない。
【図面の簡単な説明】
【００３９】
【図１】第１の実施の形態に係るコンピュータシステムに適用されるメインメモリの構成例を示すブロック図。
【図２】２つのアプリケーションを１つのＤＳＰにおいて交互に実行する場合のタイミング図。
【図３】ＤＳＰにおける実行状況の一例を示す図。
【図４】システムコールを実行するためのプログラムの一例を示す図。
【図５】ＥＬＦ形式による領域管理方法の一例を示す図。
【図６】ＥＬＦ形式によるセクションとそのアドレス及びサイズの一例を示す図。
【図７】従来から用いられているコンピュータシステムの構成例を示す概念図。
【図８】複数のスレッドとＤＳＰスレッドスケジューラとから構成されるデータ処理アプリケーションの概念を例示する図。
【図９】複数のＤＳＰを組み合わせて構成されたコンピュータシステムの一例を示すブロック図。
【図１０】２つのアプリケーションを１つのＤＳＰにおいて交互に実行する場合のタイミング図。
【図１１】図１０を実現するためのメインメモリのマップ例を示す図。
【符号の説明】
【００４０】
１０…ＣＰＵ、１２…ＤＳＰ、１４…メインメモリ、１６…入力データ、１８…出力データ、２０…領域設定アプリケーション、２２…ディスパッチャ、３０…スレッド、３２…ＤＳＰスレッドスケジューラ
【図１】
2008226145.tif 000003
【図２】
2008226145.tif 000004
【図３】
2008226145.tif 000005
【図４】
2008226145.tif 000006
【図５】
2008226145.tif 000007
【図６】
2008226145.tif 000008
【図７】
2008226145.tif 000009
【図８】
2008226145.tif 000010
【図９】
2008226145.tif 000011
【図１０】
2008226145.tif 000012
【図１１】
2008226145.tif 000013