(57)【要約】  マルチコアプロセッサシステムにおいて、複数のプロセッサのそれぞれに対してキャッシュメモリが設けられる。割当管理部は、それぞれのプロセッサに対するタスクの割当を管理する。キャッシュ状況算出部は、タスク毎に、メモリアクセス数やキャッシュヒット率等のキャッシュ使用状況を算出する。第１プロセッサは、第１プロセスに属する複数の第１タスクを処理する。その第１プロセスの演算量が所定の閾値を超えた場合、割当管理部は、キャッシュ使用状況を参照して、複数の第１タスクのうちメモリアクセス数がより少ないもの、あるいは、キャッシュヒット率がより高いものを優先的に移動対象タスクとして選択する。そして、割当管理部は、その移動対象タスクを、第１プロセッサとは異なるプロセスを処理している第２プロセッサに新たに割り当てる。
2010093003.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、前記複数のプロセッサのそれぞれによって利用される複数のキャッシュメモリとを備えるマルチコアプロセッサシステムにおける演算資源割当装置であって、
前記複数のプロセッサに対するタスクの割当を管理する割当管理部と、
前記タスク毎にキャッシュ使用状況を算出するキャッシュ状況算出部と
を備え、
前記キャッシュ使用状況は、メモリアクセス数及びキャッシュヒット率のうち少なくとも一方を含み、
前記複数のプロセッサは、
第１プロセスに属する複数の第１タスクを処理する第１プロセッサと、
前記第１プロセスとは異なる第２プロセスを処理する第２プロセッサと
を含み、
前記第１プロセスの演算量が所定の閾値を超えた場合、前記割当管理部は、前記タスク毎に算出された前記キャッシュ使用状況を参照して、前記複数の第１タスクのうち前記メモリアクセス数がより少ないもの、あるいは、前記キャッシュヒット率がより高いものを優先的に移動対象タスクとして選択し、前記移動対象タスクを新たに前記第２プロセッサに割り当てる
演算資源割当装置。
【請求項２】
請求項１に記載の演算資源割当装置であって、
更に、プロセス分割部を備え、
前記プロセス分割部は、プロセス起動時に起動されたプロセスを複数のタスクに分割し、
前記割当管理部は、前記プロセス分割部によって生成された前記複数のタスクを、前記複数のプロセッサのうち少なくとも１つに割り当てる
演算資源割当装置。
【請求項３】
請求項２に記載の演算資源割当装置であって、
前記第１プロセスの演算量が前記所定の閾値を超えた場合、前記プロセス分割部は前記第１プロセスの再分割を行い、前記キャッシュ状況算出部は前記キャッシュ使用状況を再度算出し、その後、前記割当管理部は前記移動対象タスクを選択する
演算資源割当装置。
【請求項４】
請求項３に記載の演算資源割当装置であって、
前記再分割において、前記プロセス分割部は、前記算出されているキャッシュ使用状況を参照して、タスク間で前記メモリアクセス数あるいは前記キャッシュヒット率に偏りが生じるように前記第１プロセスを分割する
演算資源割当装置。
【請求項５】
マルチコアプロセッサシステムにおける演算資源割当方法であって、
前記マルチコアプロセッサシステムは、複数のプロセッサと、前記複数のプロセッサのそれぞれによって利用される複数のキャッシュメモリとを備え、
前記演算資源割当方法は、
前記複数のプロセッサに対してタスクを割り当てることと、
ここで、前記複数のプロセッサは、
第１プロセスに属する複数の第１タスクを処理する第１プロセッサと、
前記第１プロセスとは異なる第２プロセスを処理する第２プロセッサと
を含み、
前記タスク毎にキャッシュ使用状況を算出することと、
ここで、前記キャッシュ使用状況は、メモリアクセス数及びキャッシュヒット率のうち少なくとも一方を含み、
前記第１プロセスの演算量が所定の閾値を超えた場合、前記タスク毎に算出された前記キャッシュ使用状況を参照して、前記複数の第１タスクのうち前記メモリアクセス数がより少ないもの、あるいは、前記キャッシュヒット率がより高いものを優先的に移動対象タスクとして選択することと、
前記移動対象タスクを新たに前記第２プロセッサに割り当てることと
を含む
演算資源割当方法。
【請求項６】
請求項５に記載の演算資源割当方法であって、
更に、プロセス起動時に起動されたプロセスを複数のタスクに分割することを含み、
前記割り当てることは、前記分割することによって生成された前記複数のタスクを、前記複数のプロセッサのうち少なくとも１つに割り当てることを含む
演算資源割当方法。
【請求項７】
請求項６に記載の演算資源割当方法であって、
更に、前記第１プロセスの演算量が前記所定の閾値を超えた場合、前記第１プロセスに関して前記分割することを再度実施し、前記キャッシュ使用状況を算出することを再度実施することを含み、
前記再度実施することの後に、前記移動対象タスクを選択することが実施される
演算資源割当方法。
【請求項８】
請求項７に記載の演算資源割当方法であって、
前記第１プロセスに関して前記分割することを再度実施することにおいて、前記算出されているキャッシュ使用状況を参照して、タスク間で前記メモリアクセス数あるいは前記キャッシュヒット率に偏りが生じるように前記第１プロセスが分割される
演算資源割当方法。
【請求項９】
マルチコアプロセッサシステムにおける演算資源割当処理をコンピュータに実行させる演算資源割当プログラムが記録された記録媒体であって、
前記マルチコアプロセッサシステムは、複数のプロセッサと、前記複数のプロセッサのそれぞれによって利用される複数のキャッシュメモリとを備え、
前記演算資源割当処理は、
前記複数のプロセッサに対してタスクを割り当てることと、
ここで、前記複数のプロセッサは、
第１プロセスに属する複数の第１タスクを処理する第１プロセッサと、
前記第１プロセスとは異なる第２プロセスを処理する第２プロセッサと
を含み、
前記タスク毎にキャッシュ使用状況を算出することと、
ここで、前記キャッシュ使用状況は、メモリアクセス数及びキャッシュヒット率のうち少なくとも一方を含み、
前記第１プロセスの演算量が所定の閾値を超えた場合、前記タスク毎に算出された前記キャッシュ使用状況を参照して、前記複数の第１タスクのうち前記メモリアクセス数がより少ないもの、あるいは、前記キャッシュヒット率がより高いものを優先的に移動対象タスクとして選択することと、
前記移動対象タスクを新たに前記第２プロセッサに割り当てることと
を含む
記録媒体。
【請求項１０】
請求項９に記載の記録媒体であって、
前記演算資源割当処理は、更に、プロセス起動時に起動されたプロセスを複数のタスクに分割することを含み、
前記割り当てることは、前記分割することによって生成された前記複数のタスクを、前記複数のプロセッサのうち少なくとも１つに割り当てることを含む
記録媒体。
【請求項１１】
請求項１０に記載の記録媒体であって、
前記演算資源割当処理は、更に、前記第１プロセスの演算量が前記所定の閾値を超えた場合、前記第１プロセスに関して前記分割することを再度実施し、前記キャッシュ使用状況を算出することを再度実施することを含み、
前記再度実施することの後に、前記移動対象タスクを選択することが実施される
記録媒体。
【請求項１２】
請求項１１に記載の記録媒体であって、
前記第１プロセスに関して前記分割することを再度実施することにおいて、前記算出されているキャッシュ使用状況を参照して、タスク間で前記メモリアクセス数あるいは前記キャッシュヒット率に偏りが生じるように前記第１プロセスが分割される
記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサシステムにおいて演算資源をプロセスに対して適切に割り当てる技術に関する。
【背景技術】
【０００２】
近年、組み込みシステム（Embedded System）の高機能化が進んでおり、一度に多数のアプリケーション（プロセス）を動作させることが求められている。そのような高機能を支える高性能なプロセッサとして、複数のプロセッサが集積された「マルチコアプロセッサ」が使用されている。マルチコアプロセッサでは、一般的に、各コア（プロセッサ）毎にキャッシュメモリが設けられる。【０００３】
マルチコアプロセッサシステムにおいて複数のプロセスが起動された場合、それらプロセス間でリソース競合が発生する。ここで、プロセスとは処理の実行単位であり、１つのプロセスは並列動作可能な複数のタスク（又はスレッド；以降、「タスク」と総称される）から構成される。また、リソースとしては、プロセッサ、キャッシュメモリ、バス帯域等が挙げられる。プロセス間のリソース競合は、システム性能の低下を招く可能性がある。複数のプロセスが起動された場合にもシステム性能を保つためには、各プロセスに対してリソースを適切に配分する必要がある。【０００４】
例えば、複数のプロセッサのそれぞれの演算資源を、複数のプロセスに適切に分配する必要がある。ここで、同一プロセスに属するタスクにより使用されるデータ同士は関連性が高いと考えられる。よって、同一プロセスに属する複数のタスクをなるべく同じプロセッサに割り当てることにより、キャッシュ利用効率を向上させることができると考えられる。逆に、同一プロセスに属する複数のタスクが様々なプロセッサに分散的に割り当てると、キャッシュ利用効率が低下し、システム性能が悪化する。【０００５】
マルチコアプロセッサシステムにおけるリソース割り当てに関連する技術として、次のものが知られている。【０００６】
特許文献１（特許第３２６６０２９号公報）は、マルチコアプロセッサシステムにおけるディスパッチング方式を開示している。マルチコアプロセッサシステムは、複数のプロセッサグループと、当該複数のプロセッサグループで共有されるメインメモリとから構成される。各プロセッサグループは、複数のプロセッサとキャッシュメモリとを含む。各プロセッサグループ中のいずれかのプロセッサは、当該プロセッサグループのキャッシュメモリのヒット率を監視する。そして、そのキャッシュヒット率が低下した場合、当該プロセッサは、当該プロセッサグループで実行されていたいずれかのタスクを、キャッシュヒット率が高い他のプロセッサグループへ移動する。これにより、システム全体としての性能劣化を防ぐことができる。【０００７】
特許文献２（特開２００７−３１６７１０号公報）は、マルチコアプロセッサシステムにおいてシステム全体のスループットを向上させるための技術を開示している。まず、各プロセス群に関して、プロセス間の協調動作の度合いに応じたフラグ（オン＝協調度高、オフ＝協調度低）が設定される。協調度が高い場合、プロセス間でのデータの再利用性が高い。従って、フラグがオンであるプロセス群は、１つのプロセッサグループに占有させられる。一方、フラグがオフであるプロセス群は、特定のプロセッサグループには占有されず、複数のプロセッサグループによって分散的に実行される。これにより、システム全体の性能が向上する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第３２６６０２９号公報
【特許文献２】特開２００７−３１６７１０号公報
【発明の概要】
【０００９】
上述の特許文献１によれば、あるプロセッサグループにおけるキャッシュヒット率が低下した場合、当該プロセッサグループで実行されていたいずれかのタスクは、キャッシュヒット率が高い他のプロセッサグループへ移動させられる。このとき、移動先のプロセッサグループの性能に対する移動タスクの影響は考慮されていない。多量のリソースを消費するタスクが移動された場合、移動先のプロセッサグループの性能が低下してしまう。
【００１０】
本発明の１つの目的は、マルチコアプロセッサシステムにおいてあるプロセッサで処理されているタスクを他のプロセッサへ移動させる際に、移動先のプロセッサの性能低下を抑制することができる技術を提供することにある。
【００１１】
本発明の１つの観点において、マルチコアプロセッサシステムにおける演算資源割当装置が提供される。マルチコアプロセッサシステムは、複数のプロセッサと、複数のプロセッサのそれぞれによって利用される複数のキャッシュメモリとを備える。演算資源割当装置は、割当管理部と、キャッシュ状況算出部とを備える。割当管理部は、複数のプロセッサに対するタスクの割当を管理する。キャッシュ状況算出部は、タスク毎にキャッシュ使用状況を算出する。ここで、キャッシュ使用状況は、メモリアクセス数及びキャッシュヒット率のうち少なくとも一方を含む。複数のプロセッサは、第１プロセスに属する複数の第１タスクを処理する第１プロセッサと、第１プロセスとは異なる第２プロセスを処理する第２プロセッサと、を含む。第１プロセスの演算量が所定の閾値を超えた場合、割当管理部は、タスク毎に算出されたキャッシュ使用状況を参照して、複数の第１タスクのうちメモリアクセス数がより少ないもの、あるいは、キャッシュヒット率がより高いものを優先的に移動対象タスクとして選択する。そして、割当管理部は、その移動対象タスクを新たに第２プロセッサに割り当てる。
【００１２】
本発明の他の観点において、マルチコアプロセッサシステムにおける演算資源割当方法が提供される。マルチコアプロセッサシステムは、複数のプロセッサと、複数のプロセッサのそれぞれによって利用される複数のキャッシュメモリとを備える。演算資源割当方法は、（Ａ）複数のプロセッサに対してタスクを割り当てることを含む。ここで、複数のプロセッサは、第１プロセスに属する複数の第１タスクを処理する第１プロセッサと、第１プロセスとは異なる第２プロセスを処理する第２プロセッサと、を含む。演算資源割当方法は、更に、（Ｂ）タスク毎にキャッシュ使用状況を算出することを含む。ここで、キャッシュ使用状況は、メモリアクセス数及びキャッシュヒット率のうち少なくとも一方を含む。演算資源割当方法は、更に、（Ｃ）第１プロセスの演算量が所定の閾値を超えた場合、タスク毎に算出されたキャッシュ使用状況を参照して、複数の第１タスクのうちメモリアクセス数がより少ないもの、あるいは、キャッシュヒット率がより高いものを優先的に移動対象タスクとして選択することと、（Ｄ）移動対象タスクを新たに第２プロセッサに割り当てることと、を含む。
【００１３】
本発明の更に他の観点において、マルチコアプロセッサシステムにおける演算資源割当処理をコンピュータに実行させる演算資源割当プログラムが提供される。マルチコアプロセッサシステムは、複数のプロセッサと、複数のプロセッサのそれぞれによって利用される複数のキャッシュメモリとを備える。演算資源割当処理は、（Ａ）複数のプロセッサに対してタスクを割り当てることを含む。ここで、複数のプロセッサは、第１プロセスに属する複数の第１タスクを処理する第１プロセッサと、第１プロセスとは異なる第２プロセスを処理する第２プロセッサと、を含む。演算資源割当処理は、更に、（Ｂ）タスク毎にキャッシュ使用状況を算出することを含む。ここで、キャッシュ使用状況は、メモリアクセス数及びキャッシュヒット率のうち少なくとも一方を含む。演算資源割当処理は、更に、（Ｃ）第１プロセスの演算量が所定の閾値を超えた場合、タスク毎に算出されたキャッシュ使用状況を参照して、複数の第１タスクのうちメモリアクセス数がより少ないもの、あるいは、キャッシュヒット率がより高いものを優先的に移動対象タスクとして選択することと、（Ｄ）移動対象タスクを新たに第２プロセッサに割り当てることと、を含む。
【００１４】
本発明によれば、マルチコアプロセッサシステムにおいてあるプロセッサで処理されているタスクを他のプロセッサへ移動させる際に、移動先のプロセッサの性能低下を抑制することが可能となる。
【図面の簡単な説明】
【００１５】
上記及び他の目的、長所、特徴は、次の図面と共に説明される本発明の実施の形態により明らかになるであろう。
【図１】図１は、本発明の実施の形態に係るマルチコアプロセッサシステムの構成を示すブロック図である。
【図２】図２は、本発明の実施の形態に係る演算資源割当装置を概略的に示すブロック図である。
【図３】図３は、本発明の実施の形態に係る演算資源割当装置の構成を示すブロック図である。
【図４】図４は、本発明の実施の形態に係るマルチコアプロセッサシステムの構成を示すブロック図である。
【図５】図５は、本発明の実施の形態におけるキャッシュ状況情報を概念的に示している。
【図６】図６は、本発明の実施の形態におけるプロセス状況情報を概念的に示している。
【図７】図７は、本発明の実施の形態に係る演算資源割当処理を説明するためのブロック図である。
【図８】図８は、本発明の実施の形態に係る演算資源割当処理を示すフローチャートである。
【図９】図９は、本発明の実施の形態に係る演算資源割当処理の変形例を説明するためのブロック図である。
【図１０】図１０は、本発明の実施の形態に係る演算資源割当処理の変形例を示すフローチャートである。
【図１１】図１１は、動画像デコード処理プロセスの分割の一例を概念的に示している。
【図１２】図１２は、動画像デコード処理プロセスの分割の他の例を概念的に示している。
【発明を実施するための形態】
【００１６】
１．概要
図１は、本発明の実施の形態に係るマルチコアプロセッサシステム１の構成を示すブロック図である。マルチコアプロセッサシステム１は、複数のプロセッサ１０−１〜１０−ｎ（ｎは２以上の整数）、複数のキャッシュメモリ２０−１〜２０−ｎ、メインメモリ３０、及び演算資源割当装置１００を備えている。キャッシュメモリ２０は、プロセッサ１０毎に設けられている。すなわち、複数のキャッシュメモリ２０−１〜２０−ｎは、複数のプロセッサ１０−１〜１０−ｎのそれぞれに対して設けられており、複数のプロセッサ１０−１〜１０−ｎのそれぞれによって利用される。メインメモリ３０は、複数のプロセッサ１０−１〜１０−ｎによって共用される。
【００１７】
演算資源割当装置１００は、演算資源を各プロセスに対して適切に割り当てる機能を有する。ここで、プロセスとは処理の実行単位であり、１つのプロセスは並列動作可能な複数のタスク（処理タスク）から構成される。演算資源割当装置１００は、プロセスに属する各タスクを複数のプロセッサ１０−１〜１０−ｎのうちいずれかに割り当てる。
【００１８】
図２は、本実施の形態に係る演算資源割当装置１００が有する機能ブロックを示している。演算資源割当装置１００は、割当管理部１０１とキャッシュ状況算出部１０２とを備える。あるプロセスが起動された場合、当該プロセスに属する複数のタスクが割当管理部１０１及びキャッシュ状況算出部１０２に入力される。
【００１９】
割当管理部１０１は、プロセッサ１０−１〜１０−ｎのそれぞれに対するタスクの割当を管理する。具体的には、割当管理部１０１は、複数のタスクを受け取り、それら複数のタスクをプロセッサ１０−１〜１０−ｎのうち少なくとも１つに割り当てる。このとき、キャッシュ利用効率を向上させるため、割当管理部１０１は、同一プロセスに属するタスクをなるべく同じプロセッサ１０に割り当てる。更に、後述されるように、割当管理部１０１は、状況に応じて、プロセッサ１０間でタスクの移動（再割当）を行う。
【００２０】
キャッシュ状況算出部１０２は、タスク毎に「キャッシュ使用状況」を算出する。ここで、あるタスクのキャッシュ使用状況は、当該タスクによる「メモリアクセス数」及び「キャッシュヒット率」のうち少なくとも一方を含む。そして、キャッシュ状況算出部１０２は、タスク毎に算出されたキャッシュ使用状況を示すキャッシュ状況情報ＳＣを生成し、そのキャッシュ状況情報ＳＣを割当管理部１０１に通知する。
【００２１】
また、割当管理部１０１は、各プロセスの動作状況を監視する。より詳細には、割当管理部１０１は、各プロセスの演算量を示すプロセス状況情報ＳＰを外部から受け取る。そして、割当管理部１０１は、プロセス状況情報ＳＰで示される演算量を、所定の閾値と比較する。例として、あるプロセッサ１０（以下、「第１プロセッサ１０−Ａ」と参照される）が、あるプロセス（以下、「第１プロセス」と参照される）に属する複数のタスクを処理している場合を考える。その第１プロセスの演算量が所定の閾値を超えた場合、当該第１プロセスにより多くの演算資源を割り当てるために、次のような処理が実施される。
【００２２】
すなわち、割当管理部１０１は、第１プロセスに属する複数のタスクのうち少なくとも１つを「移動対象タスク」として選択する。そして、割当管理部１０１は、その移動対象タスクを、第１プロセスとは異なるプロセスを処理している別のプロセッサ１０（以下、「第２プロセッサ１０−Ｂ」と参照される）に移動させる。すなわち、割当管理部１０１は、移動対象タスクを新たに第２プロセッサ１０−Ｂに割り当てる。このようなタスク再割当の結果、第１プロセスに割り当てられる演算資源が増加する。
【００２３】
移動対象タスクを選択するにあたり、割当管理部１０１は、上記キャッシュ状況算出部１０２によって生成されたキャッシュ状況情報ＳＣを参照する。そして、割当管理部１０１は、第１プロセスに属する複数のタスクのうち、メモリアクセス数がより少ないもの、あるいは、キャッシュヒット率がより高いものを優先的に移動対象タスクとして選択する。すなわち、割当管理部１０１は、メモリアクセス数が少ないタスク、あるいは、キャッシュヒット率が高いタスクを、第１プロセッサ１０−Ａから第２プロセッサ１０−Ｂに移動させる。
【００２４】
従って、タスク移動先の第２プロセッサ１０−Ｂにおけるキャッシュリソースの競合を抑えることができる。つまり、第２プロセッサ１０−Ｂで実行されている他プロセスに対して移動タスクが与える影響を抑えることが可能となる。このように、本実施の形態によれば、タスク移動先の性能低下を抑制しながら、第１プロセスに割り当てられる演算資源を増やすことが可能となる。
【００２５】
以下、本実施の形態に係る構成例及び処理例をより詳しく説明する。
【００２６】
２．構成
図３は、本実施の形態に係る演算資源割当装置１００の構成例を示すブロック図である。演算資源割当装置１００は、処理装置１１０と記憶装置１２０を備えるコンピュータシステムである。処理装置１１０は、ＣＰＵを含んでいる。記憶装置１２０としては、メインメモリ、キャッシュメモリ、ディスクが例示される。記憶装置１２０には、上述のキャッシュ状況情報ＳＣ及びプロセス状況情報ＳＰに加えて、演算資源割当プログラムＰＲＯＧ等が格納される。
【００２７】
演算資源割当プログラムＰＲＯＧは、処理装置１１０によって実行されるコンピュータプログラムである。演算資源割当プログラムＰＲＯＧは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。処理装置１１０は、演算資源割当プログラムＰＲＯＧを実行することにより、本実施の形態に係る演算資源割当装置１００の各機能を提供する。つまり、処理装置１１０が演算資源割当プログラムＰＲＯＧを実行することにより、本実施の形態に係る演算資源割当処理が実現される。
【００２８】
典型的には、マルチコアプロセッサシステム１に含まれる複数のプロセッサ１０−１〜１０−ｎの各々が、演算資源割当装置１００の処理装置１１０となる。その場合、メインメモリ３０が記憶装置１２０に相当し、図４に示されるように、メインメモリ３０に演算資源割当プログラムＰＲＯＧ、キャッシュ状況情報ＳＣ、プロセス状況情報ＳＰ等が格納される。プロセッサ１０−１〜１０−ｎの各々は、メインメモリ３０から演算資源割当プログラムＰＲＯＧを読み出し、実行する。すなわち、プロセッサ１０−１〜１０−ｎの各々が、本実施の形態に係る演算資源割当装置１００の各機能を提供し得る。
【００２９】
図５は、本実施の形態に係るキャッシュ状況情報ＳＣを概念的に示している。キャッシュ状況情報ＳＣは、タスク毎にキャッシュ使用状況を示している。ここで、あるタスクのキャッシュ使用状況は、当該タスクによる「メモリアクセス数」及び「キャッシュヒット率」のうち少なくとも一方を含む。このようなキャッシュ状況情報ＳＣは、プロセス毎に作成される。
【００３０】
図６は、本実施の形態に係るプロセス状況情報ＳＰを概念的に示している。プロセス状況情報ＳＰは、各プロセスの演算量を示す。このプロセス状況情報ＳＰは、外部から演算資源割当装置１００に供給される。
【００３１】
３．処理
３−１．第１の処理例
図７は、本実施の形態に係る演算資源割当装置１００による第１の処理例を説明するためのブロック図である。図７に示されるように、演算資源割当装置１００は、割当管理部１０１、キャッシュ状況算出部１０２、及びプロセス分割部１０３を備えている。これら割当管理部１０１、キャッシュ状況算出部１０２、及びプロセス分割部１０３は、プロセッサ１０−１〜１０−ｎのうちいずれかが演算資源割当プログラムＰＲＯＧを実行することにより実現され得る。図８は、第１の処理例を示すフローチャートである。
【００３２】
ステップＳ１０：
まず、あるプロセスが起動される。
【００３３】
ステップＳ２０：
プロセス分割部１０３は、起動されたプロセスを、並列実行可能な複数のタスクに分割する。ここでの分割処理は、キャッシュ使用状況を考慮したものでなくてよい。分割方法の一例は、次の通りである。プロセスは、あらかじめ、ＰＯＳＩＸ（Portable Operating System Interface for UNIX）やＷｉｎｄｏｗｓ（登録商標）のスレッドライブラリ、ＯｐｅｎＭＰやインテルＴＢＢ（Threading Building Blocks）などの並列化ライブラリを用いることにより、並列動作で記述される。そのようなプロセスの分割時に、分割数や方針が指定されるとよい。尚、プロセスの分割処理は、実行可能なプロセス全てに対して事前に実施されていてもよい。
【００３４】
ステップＳ３０：
キャッシュ状況算出部１０２は、プロセス分割部１０３によって生成されたタスク毎に、キャッシュ使用状況（メモリアクセス数、キャッシュヒット率）を算出する。キャッシュ使用状況は、プロセス分割（ステップＳ２０）時に判明する各タスクの処理内容を解析することにより予測することが可能である。例えば、各タスクによるメモリアクセス命令の回数やデータ参照先アドレスを解析することにより、メモリアクセス数やキャッシュヒット率を予測することが可能である。また、タスクの性質をタイプ毎に事前に解析しておき、プロセス分割により生成されたタスクがどのタイプかを調べることにより、キャッシュ使用状況が予測されてもよい。あるいは、タスク実行中にキャッシュ使用履歴を記録しておき、その履歴に基づいてキャッシュ使用状況が算出されてもよい。キャッシュ状況算出部１０２は、タスク毎に算出されたキャッシュ使用状況を示すキャッシュ状況情報ＳＣ（図５参照）を生成する。
【００３５】
ステップＳ４０：
割当管理部１０１は、プロセス分割部１０３によって生成された複数のタスクを受け取る。そして、割当管理部１０１は、それら複数のタスクをプロセッサ１０−１〜１０−ｎのうち少なくとも１つに割り当てる。ここで、同一プロセスに属するタスクにより使用されるデータ同士は関連性が高いと考えられる。よって、キャッシュ利用効率を向上させるため、割当管理部１０１は、同一プロセスに属するタスクをなるべく同じプロセッサ１０に割り当てる。逆に言えば、割当管理部１０１は、異なるプロセスに属するタスクを可能な限り異なるプロセッサ１０に割り当てる。同じプロセッサ１０で異なるプロセスが実行されると、キャッシュ利用効率が低下するからである。
【００３６】
ステップＳ５０〜Ｓ７０：
プロセッサ１０−１〜１０−ｎは、それぞれ割り当てられたタスクを実行する（ステップＳ５０）。全てのプロセスが終了すると（ステップＳ６０；Ｙｅｓ）、処理は終了する。新しいプロセスが起動された場合（ステップＳ７０；Ｙｅｓ）、処理はステップＳ２０に戻る。
【００３７】
ステップＳ８０：
割当管理部１０１は、各プロセスの動作状況を監視する。より詳細には、割当管理部１０１は、各プロセスの演算量を示すプロセス状況情報ＳＰ（図６参照）を受け取る。そして、割当管理部１０１は、プロセス状況情報ＳＰで示される演算量を、所定の閾値と比較する。演算量の閾値は、予め与えてあってもよいし、実行時に外部入力として与えてもよい。いずれのプロセスの演算量も閾値を超えていない場合（ステップＳ８０；Ｎｏ）、処理はステップＳ５０に戻る。一方、いずれかのプロセスの演算量が閾値を超えた場合（ステップＳ８０；Ｙｅｓ）、処理は次のステップＳ９０に進む。
【００３８】
ステップＳ９０：
ステップＳ９０において、割当管理部１０１は、プロセッサ１０間でタスクの移動（再割当）を行う。例として、第１プロセッサ１０−Ａが、第１プロセスに属する複数のタスクを処理している場合を考える。また、第１プロセッサ１０−Ａと異なる第２プロセッサ１０−Ｂは、第１プロセスと異なる第２プロセスを処理しているとする。ここで、第１プロセスの演算量が所定の閾値を超える。
【００３９】
割当管理部１０１は、第１プロセスに属する複数のタスクのうち少なくとも１つを「移動対象タスク」として選択する。そして、割当管理部１０１は、その移動対象タスクを第２プロセッサ１０−Ｂに移動させる。すなわち、割当管理部１０１は、移動対象タスクを新たに第２プロセッサ１０−Ｂに割り当てる。このようなタスク再割当の結果、第１プロセスに割り当てられる演算資源が増加する。その後、処理は、ステップＳ５０に戻る。
【００４０】
移動対象タスクを選択するにあたり、割当管理部１０１は、上記キャッシュ状況算出部１０２によって生成されたキャッシュ状況情報ＳＣを参照する。そして、割当管理部１０１は、第１プロセスに属する複数のタスクのうち、メモリアクセス数がより少ないもの、あるいは、キャッシュヒット率がより高いものを優先的に移動対象タスクとして選択する。すなわち、割当管理部１０１は、メモリアクセス数が少ないタスク、あるいは、キャッシュヒット率が高いタスクを、第１プロセッサ１０−Ａから第２プロセッサ１０−Ｂに移動させる。
【００４１】
従って、タスク移動先の第２プロセッサ１０−Ｂにおけるキャッシュリソースの競合を抑えることができる。つまり、第２プロセッサ１０−Ｂで実行されている第２プロセスに対して移動タスクが与える影響を抑えることが可能となる。このように、本実施の形態によれば、タスク移動先の性能低下を抑制しながら、第１プロセスに割り当てられる演算資源を増やすことが可能となる。
【００４２】
３−２．第２の処理例
図９は、第２の処理例を説明するためのブロック図である。図１０は、第２の処理例を示すフローチャートである。上記第１の処理例と重複する説明は、適宜省略される。ステップＳ１０〜Ｓ８０は、第１の処理例と同じである。第１プロセスの演算量が所定の閾値を超えた場合（ステップＳ８０；Ｙｅｓ）、処理はステップＳ１００に進む。
【００４３】
ステップＳ１００：
割当管理部１０１は、第１プロセスの演算量が所定の閾値を超えたことを示す通知ＳＮを、プロセス分割部１０３へ送る。その通知ＳＮに応答して、プロセス分割部１０３は、第１プロセスの再分割を行う。この再分割処理において、プロセス分割部１０３は、上記キャッシュ状況算出部１０２によって生成されているキャッシュ状況情報ＳＣを参照する。そして、プロセス分割部１０３は、タスク間でメモリアクセス数あるいはキャッシュヒット率に顕著な偏りが生じるように、第１プロセスを意図的に分割する。
【００４４】
ステップＳ１１０：
ステップＳ３０と同様に、キャッシュ状況算出部１０２は、キャッシュ使用状況（メモリアクセス数、キャッシュヒット率）を再度算出し、キャッシュ状況情報ＳＣを更新する。
【００４５】
ステップＳ９０：
ステップＳ１００、Ｓ１１０の後に、第１の処理例の場合と同様にステップＳ９０が実施される。タスク間でキャッシュ使用状況に顕著な偏りが生じるように第１プロセスが意図的に再分割されるため、移動タスクが第２プロセッサ１０−Ｂに与える影響を更に低減することが可能となる。
【００４６】
４．動画像処理
本実施の形態は、例えば、動画像処理に適用することが可能である。その場合、マルチコアプロセッサシステム１におけるプロセスのうち少なくとも１つは、動画像処理プロセスである。以下、動画像処理の一例として、「Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ（以下、Ｈ．２６４と参照される）方式」の復号処理を説明する。
【００４７】
マルチコアプロセッサシステム１におけるプロセスは、動画像デコード処理プロセス（第１プロセス）を含む。動画像デコード処理における最小処理単位は「マクロブロック」であり、それは１６×１６画素ブロックで構成される。例えば、ＶＧＡサイズ（６４０×４８０画素）のビットストリームでは、１画面（１フレーム）は横４０、縦３０の計１２００個のマクロブロックで構成される。デコード処理は、可変長符号復号（ＶＬＤ：Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｄｅｃｏｄｉｎｇ）、動き補償（ＭＣ：Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｉｏｎ）、イントラ予測（ＩＰ：  Ｉｎｔｒａ  Ｐｒｅｄｉｃｔｉｏｎ）、デブロッキングフィルタ（ＤＦ：Ｄｅｂｌｏｃｋｉｎｇ  Ｆｉｌｔｅｒ）などを含む。このうちＶＬＤ及びＤＦは、全てのマクロブロックに対し実行される。ＭＣとＩＰに関しては、いずれか一方がマクロブロックに対して実行される。つまり、マクロブロックは、「ＭＣタイプ」と「ＩＰタイプ」の２種類に区分けされ得る。マクロブロックがいずれのブロックタイプを持つかは、ＶＬＤの結果判明する。
【００４８】
プロセス分割部１０３は、このような動画像デコード処理プロセスを、並列実行可能な複数のタスクに分割する（ステップＳ２０）。分割の最小単位は、１マクロブロックに対する処理である。１マクロブロックに対する処理を１タスクとしてもよいが、それに限られない。数マクロブロックに対する処理をまとめて１タスクとしてもよい。例えば、横方向に並ぶ一列のマクロブロックに対するＩＰ処理が１タスクに設定されてもよいし、連続する数マクロブロックラインに対するＭＣ処理が１タスクに設定されてもよい。
【００４９】
キャッシュ状況算出部１０２は、プロセス分割部１０３によって生成されたタスク毎に、キャッシュ使用状況（メモリアクセス数、キャッシュヒット率）を算出する（ステップＳ３０）。ここで、ＭＣは、現在デコード中のフレームとは異なる以前にデコードしたフレームの画素値を参照するため、メモリアクセス数が多くキャッシュヒット率が低いという特徴を有する。一方、ＩＰは、同一フレーム内の周辺マクロブロックの画素値を参照するため、キャッシュヒット率が高いという特徴を有する。また、同じＭＣ同士であっても、参照する動き補償画素精度（整数画素、１／２画素、１／４画素）といった「符号化パラメータ（符号化モード）」が異なれば、メモリアクセス数やキャッシュヒット率が異なる。同様に、同じＩＰ同士であっても、イントラ予測モード（縦方向予測、横方向予測）といった「符号化パラメータ（符号化モード）」が異なれば、メモリアクセス数やキャッシュヒット率が異なる。従って、キャッシュ状況算出部１０２は、マクロブロックの「ブロックタイプ」や「符号化パラメータ（符号化モード）に基づいて、タスクのキャッシュ使用状況を予測する。例えば、ブロックタイプと符号化モードの組み合わせ毎に、１マクロブロックに対する処理によるメモリアクセス数やキャッシュヒット率の参照値があらかじめ設定される。そして、あるタスクが処理する全マクロブロックに関する参照値の平均あるいは合計が、当該タスクのキャッシュ使用状況として算出される。その後、キャッシュ状況算出部１０２は、タスク毎に算出されたキャッシュ使用状況を示すキャッシュ状況情報ＳＣ（図５参照）を生成する。
【００５０】
動画像デコード処理プロセスの演算量が所定の閾値を超えると（ステップＳ８０；Ｙｅｓ）、プロセス分割部１０３は、当該プロセスの再分割を行う（ステップＳ１００）。この再分割処理において、プロセス分割部１０３は、キャッシュ状況算出部１０２によって生成されているキャッシュ状況情報ＳＣを参照する。そして、プロセス分割部１０３は、タスク間でメモリアクセス数あるいはキャッシュヒット率に偏りが生じるように、動画像デコード処理プロセスを分割する。具体的には、プロセス分割部１０３は、同じブロックタイプ、または、同じ符号化モードを有する複数のマクロブロックに対する処理をまとめて１タスクとする。
【００５１】
図１１及び図１２は、１フレームに関するタスク分割例を示している。図１１及び図１２において、破線で囲まれているマクロブロック群に対する処理が１タスクに相当する。図１１の例では、符号化モードは考慮されていないが、ブロックタイプが考慮されている。より詳細には、１フレームに含まれるＭＣ処理が２マクロブロックラインずつ２分割され、また、１フレームに含まれるＩＰ処理が１マクロブロックラインずつ４分割されている。図１２の例では、ブロックタイプだけでなく符号化モードも考慮されている。より詳細には、１フレームに含まれるＭＣ処理が符号化モード毎に２分割され、また、１フレームに含まれるＩＰ処理が符号化モード毎に鍵型に４分割されている。これにより、タスク間でメモリアクセス数あるいはキャッシュヒット率に顕著な偏りが生じる。
【００５２】
その後、割当管理部１０１は、メモリアクセス数が少ないタスク、あるいは、キャッシュヒット率が高いタスクを、第１プロセッサ１０−Ａから第２プロセッサ１０−Ｂに移動させる（ステップＳ９０）。
【００５３】
尚、動画像処理の一例としてＨ．２６４方式の復号処理が説明されたが、それに限られない。本実施の形態は、ＭＰＥＧ、ＪＰＥＧ、ＶＣ−１などの動画像復号及び符号化処理にも適用可能である。
【００５４】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【００５５】
本出願は、２００９年２月１３日に出願された日本国特許出願２００９−０３１３４６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2010093003.tif 000003
【図２】
2010093003.tif 000004
【図３】
2010093003.tif 000005
【図４】
2010093003.tif 000006
【図５】
2010093003.tif 000007
【図６】
2010093003.tif 000008
【図７】
2010093003.tif 000009
【図８】
2010093003.tif 000010
【図９】
2010093003.tif 000011
【図１０】
2010093003.tif 000012
【図１１】
2010093003.tif 000013
【図１２】
2010093003.tif 000014
【国際調査報告】
2010093003.tif 000015
2010093003.tif 000016
2010093003.tif 000017
2010093003.tif 000018