(57)【特許請求の範囲】
【請求項１】
プロセッサの指示によって転送元メモリから転送先メモリへ転送対象データを転送する転送手段と、
前記プロセッサによって実行されたプロセスを検出する検出手段と、
前記検出手段によって検出された前記プロセスの種類に基づいて、前記転送手段による前記転送対象データの転送に緊急性があるか否かを判断する判断手段と、
前記判断手段によって判断された結果に基づいて、前記転送手段によって前記転送対象データを転送するか、または、前記プロセッサによって前記転送対象データとなる書込データを前記転送元メモリまたは前記転送先メモリから読み込むように制御する制御手段と、
を備えることを特徴とするデータ転送制御装置。
【請求項２】
前記検出手段は、
さらに、前記プロセスの状態変化を検出し、
前記判断手段は、
前記検出手段によって検出された前記プロセスの種類および前記プロセスの状態変化に基づいて、前記転送手段による前記転送対象データの転送に緊急性があるか否かを判断することを特徴とする請求項１に記載のデータ転送制御装置。
【請求項３】
前記検出手段は、
さらに、前記プロセスの状態がアクティブからインアクティブに、または、インアクティブからアクティブに変化したことを検出し、
前記判断手段は、
前記検出手段によって検出された前記プロセスの種類および前記プロセスの状態がアクティブかインアクティブかに基づいて、前記転送手段による前記転送対象データの転送の緊急性を判断することを特徴とする請求項１に記載のデータ転送制御装置。
【請求項４】
前記制御手段は、
前記判断手段によって緊急性があると判断された場合、前記転送手段によって前記転送対象データを転送するように制御することを特徴とする請求項１〜３のいずれか１つに記載のデータ転送制御装置。
【請求項５】
前記判断手段は、
さらに、前記プロセッサとは異なる他のプロセッサにより書き込まれるデータであって、前記転送対象データとなる前記書込データの前記転送元メモリへの格納に緊急性があるか否かを判断し、
前記制御手段は、
前記判断手段によって前記書込データの格納に緊急性がなく、かつ、前記転送対象データの転送に緊急性がないと判断された場合、前記他のプロセッサによって前記転送先メモリへ前記書込データを書き込むように制御した後、前記プロセッサによって前記転送先メモリから前記書込データを読み込むように制御することを特徴とする請求項１〜３のいずれか１つに記載のデータ転送制御装置。
【請求項６】
前記判断手段は、
さらに、前記プロセッサとは異なる他のプロセッサにより書き込まれるデータであって、前記転送対象データとなる前記書込データの前記転送元メモリへの格納に緊急性があるか否かを判断し、
前記制御手段は、
前記判断手段によって前記書込データの格納に緊急性があり、かつ、前記転送対象データの転送に緊急性がないと判断された場合、前記他のプロセッサによって前記転送元メモリへ前記書込データを書き込むように制御した後、前記プロセッサによって前記転送元メモリから前記書込データを読み込むように制御することを特徴とする請求項１〜３のいずれか１つに記載のデータ転送制御装置。
【請求項７】
前記転送元メモリは、前記プロセッサとは異なる他のプロセッサに対応しており、
前記転送先メモリは、前記プロセッサに対応することを特徴とする請求項１〜６のいずれか１つに記載のデータ転送制御装置。
【請求項８】
転送元メモリから転送先メモリへ転送対象データを転送する転送装置を制御可能なプロセッサが、
前記プロセッサによって実行されたプロセスを検出する検出工程と、
前記検出工程によって検出された前記プロセスの種類に基づいて、前記転送装置による前記転送対象データの転送に緊急性があるか否かを判断する判断工程と、
前記判断工程によって緊急性があると判断された場合、前記転送対象データの転送を前記転送装置に指示する転送指示工程と、
前記判断工程によって緊急性がないと判断された場合、前記プロセッサによって前記転送対象データとなる書込データを前記転送元メモリまたは前記転送先メモリから読み込むように制御する制御工程と、
を実行することを特徴とするデータ転送制御方法。
【請求項９】
転送元メモリから転送先メモリへ転送対象データを転送する転送装置を制御可能なプロセッサに、
前記プロセッサによって実行されたプロセスを検出する検出工程と、
前記検出工程によって検出された前記プロセスの種類に基づいて、前記転送装置による前記転送対象データの転送に緊急性があるか否かを判断する判断工程と、
前記判断工程によって緊急性があると判断された場合、前記転送対象データの転送を前記転送装置に指示する転送指示工程と、
前記判断工程によって緊急性がないと判断された場合、前記プロセッサによって前記転送対象データとなる書込データを前記転送元メモリまたは前記転送先メモリから読み込むように制御する制御工程と、
を実行させることを特徴とするデータ転送制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送を制御するデータ転送制御装置、データ転送制御方法、およびデータ転送制御プログラムに関する。
【背景技術】
【０００２】
従来から、メモリ間のデータ転送を高速に行う技術として、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行う技術が開示されていた。ＤＭＡ転送を行う専用のコントローラとして、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）が存在する。ＤＭＡＣは、メモリからメモリへ、またはメモリから周辺機器へのデータ転送を、ＣＰＵを介さずに行う機能を有する。【０００３】
たとえば、マルチコアプロセッサシステムのうち、各コアに対応したメモリが搭載された分散メモリ型のマルチコアプロセッサシステムでは、各コアで計算された結果は各コアに対応したメモリに一度格納される。格納後、マルチコアプロセッサシステムは、マスターコアのメモリに対してＤＭＡＣによるＤＭＡ転送を行う。または、異なるコアに割り当てられたプロセスが計算結果を利用する場合、マルチコアプロセッサシステムは、異なるコアに対応するメモリに対してＤＭＡ転送を行う。【０００４】
ＤＭＡＣを制御する技術として、小量のデータ、または離散したデータの転送をＣＰＵが行い、連続した大量のデータの転送をＤＭＡＣが行うことで、データ転送の高速化を実現するという技術が開示されている（たとえば、下記特許文献１を参照。）。【０００５】
また、ＤＭＡＣを制御する他の技術として、分散された共有メモリを用い、ＤＭＡＣによるデータ転送処理とＣＰＵによる画像処理とを効率的にパイプライン処理を行うという技術が開示されている（たとえば、下記特許文献２を参照。）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−５８２７６号公報
【特許文献２】特開２００８−９０４５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術において、特許文献１、２にかかる技術では、ＤＭＡＣによるバースト転送によってバスが占有されてしまい、ＣＰＵがＤＭＡＣの転送の完了待ちを行うため、ＣＰＵのスループットが低下するという問題があった。また、割り込み処理が発生した場合に、ＣＰＵは、メモリ上にある割り込みハンドラを読み込もうとするが、ＤＭＡＣによるＤＭＡ転送が完了してから割り込みハンドラを読み込むため、リアルタイム処理に対する応答性が低下するという問題があった。【０００８】
本発明は、上述した従来技術による問題点を解消するため、転送待ちによるスループットの低下を防止し、リアルタイム処理に対する応答性を向上できるデータ転送制御装置、データ転送制御方法、およびデータ転送制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、開示のデータ転送制御装置は、プロセッサの指示によって転送元メモリから転送先メモリへ転送対象データを転送する転送部を含み、プロセッサによって実行されたプロセスを検出し、検出されたプロセスの種類に基づいて、転送部による転送対象データの転送に緊急性があるか否かを判断し、判断された結果に基づいて、転送部またはプロセッサによって転送対象データを転送するように制御する。
【発明の効果】
【００１０】
本データ転送制御装置、データ転送制御方法、およびデータ転送制御プログラムによれば、ＣＰＵの転送待ちによるスループットの低下を防止し、リアルタイム処理に対する応答性を向上できるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】実施の形態にかかるデータ転送制御装置１００のハードウェアを示すブロック図である。
【図２】データ転送制御装置１００の機能を示すブロック図である。
【図３】データ転送制御装置１００とデータ転送テーブル２０１の記憶内容の一例を示す説明図である。
【図４】データ転送制御装置１００とＣＰＵが３つ以上存在する場合におけるデータ転送テーブル２０１の記憶内容の一例を示す説明図である。
【図５】データ転送方式Ａを示す説明図である。
【図６】データ転送方式Ｂを示す説明図である。
【図７】データ転送方式Ｃを示す説明図である。
【図８】ストリーミング再生中におけるストリーミングデータのデータ転送状態を示す説明図である。
【図９】ゲームアプリケーション実行中におけるストリーミングデータのデータ転送状態を示す説明図である。
【図１０】ゲームアプリケーション中断状態におけるストリーミングデータのデータ転送状態を示す説明図である。
【図１１Ａ】データ転送方式移行処理を示すフローチャート（その１）である。
【図１１Ｂ】データ転送方式移行処理を示すフローチャート（その２）である。
【図１２】データ転送方式設定処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、本発明にかかるデータ転送制御装置、データ転送制御方法、およびデータ転送制御プログラムの好適な実施の形態を詳細に説明する。
【００１３】
（データ転送制御装置のハードウェア）
図１は、実施の形態にかかるデータ転送制御装置のハードウェアを示すブロック図である。図１において、データ転送制御装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）＃０と、ＣＰＵ＃１と、ＭＥＭ（ＭＥＭｏｒｙ）＃０と、ＭＥＭ＃１と、ＤＭＡＣ＃０と、ＤＭＡＣ＃１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０１と、フラッシュＲＯＭ１０２と、を備えている。また、ユーザやその他の機器との入出力装置としてデータ転送制御装置１００は、キーボード１０３と、ディスプレイ１０４と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）１０５と、を備えている。また、各部はバス１０７によってそれぞれ接続されている。
【００１４】
ここで、ＣＰＵ＃０、ＣＰＵ＃１は、データ転送制御装置１００の全体の制御を司る。ＲＯＭ１０１は、ブートプログラムなどのプログラムを記憶している。ＭＥＭ＃０、ＭＥＭ＃１は、それぞれＣＰＵ＃０、ＣＰＵ＃１のワークエリアとして使用されるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の記憶装置である。ＤＭＡＣ＃０、ＤＭＡＣ＃１は、ＭＥＭ＃０とＭＥＭ＃１間にてデータを転送する。また、ＣＰＵ＃０は、主にＤＭＡＣ＃０を制御し、ＣＰＵ＃１はＤＭＡＣ＃１を制御する。本実施の形態にかかるデータ転送制御装置１００は、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。また、本実施の形態にかかるデータ転送制御装置１００では、ＣＰＵが２つ搭載されているが、３つ以上搭載されていてもよい。ＣＰＵが３つ以上搭載されている場合の詳細は、図４にて後述する。
【００１５】
キーボード１０３は、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、キーボード１０３は、タッチパネル式の入力パッドやテンキーなどであってもよい。ディスプレイ１０４は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０４は、たとえば、ＴＦＴ液晶ディスプレイなどを採用することができる。
【００１６】
Ｉ／Ｆ１０５は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク１０６に接続され、このネットワーク１０６を介して他の装置に接続される。そして、Ｉ／Ｆ１０５は、ネットワーク１０６と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０５には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００１７】
従来例にかかるデータ転送制御装置１００も、本実施の形態にかかるデータ転送制御装置１００と等しいハードウェアを搭載する。従来例にかかるデータ転送制御装置１００では、ＤＭＡＣ＃０にて、ＭＥＭ＃１からＭＥＭ＃０に転送対象データを転送している間、ＣＰＵ＃１はＭＥＭ＃１にアクセスを行うことができず、データアクセス待ちが発生していた。
【００１８】
（データ転送制御装置１００の機能）
次に、データ転送制御装置１００の機能について説明する。図２は、データ転送制御装置１００の機能を示すブロック図である。データ転送制御装置１００は、転送部２０３と、転送指示部２０４と、検出部２０５と、判断部２０６と、制御部２０７と、を含む。この制御部となる機能（転送指示部２０４〜制御部２０７）は、記憶装置に記憶されたプログラムをＣＰＵ＃０が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図１に示したＲＯＭ１０１、フラッシュＲＯＭ１０２、ＭＥＭ＃０、ＭＥＭ＃１などである。また、転送部２０３はＤＭＡＣ＃０によってその機能を実現する。
【００１９】
また、データ転送制御装置１００は、データ転送制御装置１００で実行されるプロセスの状態変化に応じたデータ転送方式を格納するデータ転送テーブル２０１にアクセス可能である。データ転送テーブル２０１の詳細は図３と図４にて後述する。また、転送指示部２０４と、検出部２０５と、判断部２０６と、制御部２０７と、はスケジューラ２０２に含まれる機能である。
【００２０】
スケジューラ２０２は、ＯＳに含まれるソフトウェアであり、ＣＰＵに割り当てるプロセスを決定する機能を有する。たとえば、スケジューラ２０２は、プロセスに設定されている優先度等に基づいて、次にＣＰＵに割り当てるプロセスを決定する。定められた時刻になった場合、スケジューラ２０２はディスパッチャが決定されたプロセスをＣＰＵに割り当てる。スケジューラの機能の１つとしてディスパッチャを含む形態も存在する。本実施の形態では、スケジューラ２０２内にディスパッチャの機能が存在する。
【００２１】
また、図２では、ＣＰＵ＃０に転送指示部２０４〜制御部２０７が含まれるように図示しているが、他のＣＰＵのスケジューラにも転送指示部２０４〜制御部２０７が含まれる。同様に、ＤＭＡＣ＃０以外のＤＭＡＣにも、転送部２０３が含まれる。
【００２２】
転送部２０３は、プロセッサの指示によって転送元メモリから転送先メモリへ転送対象データを転送する機能を有する。たとえば、ＤＭＡＣ＃０は、ＣＰＵ＃０の指示によって転送元メモリとなるＭＥＭ＃１から転送先メモリとなるＭＥＭ＃０へ、転送対象データとなるストリーミングデータを転送する。
【００２３】
転送指示部２０４は、転送部２０３に転送対象データを転送するように指示する機能を有する。たとえば、転送指示部２０４は、ＤＭＡＣ＃０に転送元メモリとなるＭＥＭ＃１のアドレスと、転送対象データのデータサイズと、転送先メモリとなるＭＥＭ＃０のアドレスを通知し、データ転送を指示する。なお、指示内容となる転送元メモリおよび転送先メモリのアドレス、転送対象データのデータサイズは、転送指示部２０４を実行したＣＰＵのレジスタやローカルメモリなどの記憶領域に記憶されてもよい。
【００２４】
検出部２０５は、プロセッサによって実行されたプロセスを検出する機能を有する。プロセスとはプログラムの実行単位である。また、本実施の形態におけるアプリケーションは、１つのプロセスを保持し、また１つのプロセス内には１つ以上のスレッドを保持する。また、検出部２０５は、プロセスの状態変化を検出してもよい。また、検出部２０５は、プロセスの状態変化の１つである、プロセスの状態がアクティブからインアクティブに、または、インアクティブからアクティブに変化したことを検出してもよい。プロセスの状態がアクティブである場合は、該当のプロセスが利用者の入力や操作の対象となっている状態である。また、プロセスの状態がインアクティブである場合は、該当のプロセスが利用者の入力や操作の対象となっていない状態である。
【００２５】
状態変化とは、プロセスの起動、終了したというイベントを検出した場合である。また、ディスパッチによる切り替えによってプロセスがアクティブまたはインアクティブに変化した場合も状態変化に含めてもよい。また、状態変化はプロセスに転送される転送対象データの使用状態の変化であってもよい。たとえば、転送対象データがストリーミング動画である場合に、動画再生が再生中から停止、または巻き戻し再生になったという変化が発生した場合、検出部２０５は状態変化として検出してもよい。
【００２６】
たとえば、検出部２０５は、ＣＰＵ＃０によって実行されたアプリケーションを検出する。また、検出部２０５は、アプリケーションの起動、終了、切り替えが起こったことを検出する。なお、検出結果は、検出部２０５を実行したＣＰＵのレジスタやローカルメモリなどの記憶領域に記憶される。
【００２７】
判断部２０６は、検出部２０５によって検出されたプロセスの種類に基づいて、転送部２０３による転送対象データの転送に緊急性があるか否かを判断する機能を有する。また、判断部２０６は、検出部２０５によってプロセスの状態変化が検出された場合、プロセスの種類と状態変化に基づいて、転送対象データの転送の緊急性を判断してもよい。また、判断部２０６は、さらに、他のプロセッサによる転送元メモリへの転送対象データの格納に緊急性があるか否かを判断してもよい。他のプロセッサとは、転送元メモリへ転送対象データを格納するプロセッサであり、検出部２０５によってプロセスを検出したプロセッサとは異なるプロセッサではあるが、プロセスを検出したプロセッサと一致していてもよい。
【００２８】
また、緊急性とは、時間制約のことであり、緊急性があるデータ転送とは、時間制約が存在するリアルタイム処理のデータ転送である。また、判断部２０６は、リアルタイム処理の中でも、処理量が多く優先度が高いデータ転送を緊急性があるデータ転送と判断し、時間制約が存在しても、処理完了までの時間に余裕があるデータ転送については緊急性がないとして判断してもよい。また、リアルタイム処理のデータ転送でなくても、利用者によって可能な限り早く転送するように設定された場合、判断部２０６は、緊急性があるとして判断してもよい。
【００２９】
また、転送対象データの転送に緊急性がある場合は、たとえば、ネットワーク１０６経由によるストリーミング動画の再生などが挙げられる。転送対象データの転送に緊急性がある場合には、転送前に行われる転送元メモリへの転送対象データの格納も高速で行うことが求められる。ストリーミング動画の例では、ストリーミング動画のビットレート以上で転送対象データを転送することが求められるため、データ転送制御装置１００は、高速に通信処理を行って転送対象データを格納することが要求される。さらに、データ転送制御装置１００は、ストリーミング動画を再生するＣＰＵのワーキング領域に高速に転送することが要求される。
【００３０】
また、転送対象データの転送には緊急性がないが、転送対象データの格納に緊急性がある場合は、たとえば、ネットワーク１０６経由による通信処理が挙げられる。通信処理は、ある一定時間以内に処理を行わないとタイムアウトとなり、通信処理の相手側端末によって通信終了させられる場合がある。したがって、データ転送制御装置１００は、高速に転送対象データを格納し、通信処理を処理することが要求される。
【００３１】
具体的には、判断部２０６は、データ転送テーブル２０１のレコードのうち、アプリケーションの種類と、アプリケーションの状態がアクティブかインアクティブかと、が一致するレコードを取得する。取得されたレコードに記載されたデータ転送方式によって、判断部２０６は、転送対象データの転送に緊急性があるか否か、また、転送元メモリへの転送対象データの格納に緊急性があるか否かを判断する。
【００３２】
たとえば、取得されたレコードに“方式Ａ”と記載されていた場合、判断部２０６は、転送対象データの転送に緊急性があると判断する。また、取得されたレコードに“方式Ｂ”と記載されていた場合、判断部２０６は、転送対象データの転送に緊急性がないと判断する。また、取得されたレコードに“方式Ｂ”と記載されていた場合、判断部２０６は、転送対象データの格納に緊急性がなく、かつ、転送対象データの転送に緊急性がないと判断する。また、取得されたレコードに“方式Ｃ”と記載されていた場合、判断部２０６は、転送対象データの格納に緊急性がなく、かつ、転送対象データの転送に緊急性があると判断する。なお、判断結果は、判断部２０６を実行したＣＰＵのレジスタやローカルメモリなどの記憶領域に記憶される。
【００３３】
制御部２０７は、判断部２０６によって判断された結果に基づいて、転送部２０３またはプロセッサによって転送対象データを転送するように制御する機能を有する。また、判断部２０６によって転送対象データの転送に緊急性があると判断された場合、制御部２０７は、転送部２０３によって転送対象データを転送するように制御してもよい。
【００３４】
また、判断部２０６によって転送対象データの格納と転送に緊急性がないと判断された場合、制御部２０７は、転送元メモリへ転送対象データを格納した他のプロセッサによって転送対象データを転送するように制御してもよい。また、判断部２０６によって転送対象データの格納に緊急性があり、かつ、転送対象データの転送に緊急性がないと判断された場合、制御部２０７は、プロセスを検出したプロセッサによって転送対象データを転送するように制御してもよい。
【００３５】
たとえば、データ転送方式が“方式Ａ”である場合、制御部２０７は、ＣＰＵ＃０に対応するＤＭＡＣ＃０によって転送対象データを転送するように制御する。また、データ転送方式が“方式Ｂ”である場合、制御部２０７は、転送元メモリとなるＭＥＭ＃１に転送対象データを格納するＣＰＵ＃１によって、転送対象データを転送するように制御する。このとき、ＣＰＵ＃１は、ＭＥＭ＃１に転送対象データを格納せずに、直接転送先メモリとなるＭＥＭ＃０に書き込む。
【００３６】
また、データ転送方式が“方式Ｃ”である場合、制御部２０７は、ＣＰＵ＃０によって転送元メモリとなるＭＥＭ＃１から、転送対象データを転送するように制御する。このとき、ＣＰＵ＃０は、ＭＥＭ＃１から転送対象データを読み込んだ後、ＭＥＭ＃０に転送対象データを格納せず、ＣＰＵ＃０のレジスタ等に格納して直接転送対象データにアクセスするプログラム等に転送対象データを転送する。
【００３７】
図３は、データ転送制御装置１００とデータ転送テーブル２０１の記憶内容の一例を示す説明図である。データ転送テーブル２０１は、スケジューラ２０２がデータ転送を行うアプリケーションと、前述のアプリケーションの状態がアクティブかインアクティブかと、に基づいてデータ転送方式を判断するテーブルである。データ転送テーブル２０１では、転送するデータごとに、ｓｒｃ属性に設定されたスレッドを実行するＣＰＵと転送対象データの書き込み先と、ｄｅｓｔ属性に設定されたスレッドを実行するＣＰＵと転送対象データの読み込み先を記述する。さらに、データ転送テーブル２０１では、ｓｒｃ属性にて書き込まれた転送対象データをｄｅｓｔ属性の読み込み先に転送する実行主体をｔｒａｎｓｆｅｒ属性で設定する。
【００３８】
たとえば、レコード３０１において、アプリケーション＃０属性が“アクティブ”より、スケジューラ２０２は、アプリケーション＃０が起動されアクティブになったか否かを判断する。アクティブとなった場合、スケジューラ２０２は、データ＃０属性が“方式Ａ”より、データ転送方式を方式Ａに設定する。
【００３９】
また、スケジューラ２０２は、レコード３０１の３行目〜５行目より、ｓｒｃ属性に設定されたスレッド＃０をｅｘｅｃ属性に設定されたＣＰＵ＃１にて実行し、転送対象データとなるデータ＃０の書き込み先をｍｅｍ属性に設定されたＭＥＭ＃１に設定する。また、スケジューラ２０２は、レコード３０１の６行目〜８行目より、ｄｅｓｔ属性に設定されたスレッド＃１をＣＰＵ＃０にて実行し、データ＃０の読み込み先をＭＥＭ＃０に設定する。
【００４０】
また、スケジューラ２０２は、ｔｒａｎｓｆｅｒ属性に設定されたＤＭＡＣ＃０に、ＭＥＭ＃１に書きこまれたデータ＃０を、ＭＥＭ＃０に転送するように制御する。データ転送方式Ａの具体例については、図５にて後述する。このように設定された内容をＣＰＵに通知し、ＣＰＵはＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）などの設定を行い、ＣＰＵは該当のアプリケーションを実行する。
【００４１】
レコード３０２〜レコード３０４についても、スケジューラ２０２は、レコード３０１と同様の設定方法を行う。具体的には、レコード３０２に基づいて、スケジューラ２０２は、アプリケーション＃０がインアクティブとなった場合に、データ転送方式を方式Ｂに設定する。
【００４２】
また、スケジューラ２０２は、ｓｒｃ属性に設定されたスレッド＃０をＣＰＵ＃１にて実行させ、転送対象データとなるデータ＃０の書き込み先を、読み込み先と等しいＭＥＭ＃０として、ＣＰＵ＃１に直接書き込むように制御する。そして、スケジューラ２０２は、ｄｅｓｔ属性に設定されたスレッド＃０をＣＰＵ＃０にて実行させ、ＣＰＵ＃１が書き込んだデータ＃０をＣＰＵ＃０に読み込むように制御する。ｔｒａｎｓｆｅｒ属性には、ｄｅｓｔ属性の読み込み先に直接書き込むＣＰＵ＃１が設定される。データ転送方式Ｂの具体例については、図６にて後述する。また、レコード３０３に基づいて、スケジューラ２０２は、アプリケーション＃１がアクティブまたはインアクティブとなった場合に、データ転送方式を方式Ｂに設定する。
【００４３】
また、レコード３０４に基づいて、スケジューラ２０２は、アプリケーション＃２がアクティブまたはインアクティブとなった場合に、データ転送方式を方式Ｃに設定する。また、スケジューラ２０２は、ｓｒｃ属性に設定されたスレッド＃４をＣＰＵ＃１にて実行し、転送対象データとなるデータ＃２の書き込み先をＭＥＭ＃１に設定する。また、スケジューラ２０２は、ｄｅｓｔ属性に設定されたスレッド＃５をＣＰＵ＃０にて実行し、ＣＰＵ＃１が書き込んだデータ＃２をＭＥＭ＃１へＣＰＵ＃０に直接読み込むように制御する。ｔｒａｎｓｆｅｒ属性には、ｓｒｃ属性の書き込み先に直接読み込むＣＰＵ＃０が設定される。データ転送方式Ｃの具体例については、図７にて後述する。
【００４４】
アプリケーションの実行終了後、スケジューラ２０２は、各ＣＰＵの設定を初期値に戻す。その後、再びデータ転送方式を変更するアプリケーションが起動されると、スケジューラ２０２は、データ転送テーブル２０１を読み込んでデータ転送方式を変更する。また、ｓｒｃ属性に設定されたスレッドと、ｄｅｓｔ属性に設定されたスレッドが属するアプリケーションは、同一であってもよいし、異なっていてもよい。
【００４５】
図４は、データ転送制御装置１００とＣＰＵが３つ以上存在する場合におけるデータ転送テーブル２０１の記憶内容の一例を示す説明図である。ＣＰＵタイプテーブル４０１は、ＣＰＵの種類を分けるテーブルである。図４の例において、各ＣＰＵは、汎用の制御用プロセッサとしてＣＰＵ  Ａと、信号処理用のＤＳＰとしてＣＰＵ  Ｂに分類される。ＣＰＵ  ＡはＣＰＵ＃０、ＣＰＵ＃１、ＣＰＵ＃２が含まれる。また、ＣＰＵ  ＢはＣＰＵ＃３が含まれる。たとえば、データ転送テーブル２０１に、ＣＰＵ  Ａが記述されていた場合、スケジューラは、ＣＰＵ  Ａのうちのいずれか一つのＣＰＵにスレッド＃０を割り当てる。
【００４６】
たとえば、レコード４０２に基づいて、スケジューラ２０２は、アプリケーション＃０がアクティブとなった場合に、データ転送方式を方式Ａに設定する。また、スケジューラ２０２は、ｓｒｃ属性に設定されたスレッド＃０をｅｘｅｃ属性に設定されたＣＰＵ  Ｂに属するいずれかのＣＰＵにて実行し、転送対象データの書き込み先をｍｅｍ属性に設定されたＭＥＭ＃１に設定する。
【００４７】
また、スケジューラ２０２は、ｄｅｓｔ属性に設定されたスレッド＃１をＣＰＵ  Ａに属するいずれかのＣＰＵにて実行し、データ＃０の読み込み先をＭＥＭ＃０に設定する。図４の例では、スレッド＃０をＣＰＵ＃３が実行し、スレッド＃１をＣＰＵ＃０が実行する。また、スケジューラ２０２は、ｔｒａｎｓｆｅｒ属性に設定されたＤＭＡＣ＃０に、ＭＥＭ＃１に書きこまれたデータ＃０を、ＭＥＭ＃０へ転送するように制御する。
【００４８】
レコード４０３〜レコード４０５についても、スケジューラ２０２は、レコード３０１と同様の設定方法を行う。たとえば、レコード４０３に基づいて、スケジューラ２０２は、アプリケーション＃０がインアクティブとなった場合に、データ転送方式を方式Ｂに設定する。また、スケジューラ２０２は、ｓｒｃ属性に設定されたスレッド＃０をＣＰＵ  ＢのいずれかのＣＰＵにて実行し、転送対象データとなるデータ＃０の書き込み先をＭＥＭ＃０として、スレッド＃０を実行したＣＰＵに書き込むように制御する。そして、スケジューラ２０２は、ｄｅｓｔ属性に設定されたスレッド＃１をＣＰＵ  ＡのいずれかのＣＰＵにて実行し、ＣＰＵ  ＢのいずれかのＣＰＵが書き込んだデータ＃０をスレッド＃１を実行したＣＰＵに読み込むように制御する。ｔｒａｎｓｆｅｒ属性には、ｄｅｓｔ属性の読み込み先に直接書き込んだＣＰＵ  Ｂが設定される。
【００４９】
図５は、データ転送方式Ａを示す説明図である。方式Ａは、転送対象データの格納および転送対象データの転送に緊急性がある場合のデータ転送方式である。具体的に図５では、通信を行うスレッドと通信で得た転送対象データを用いたスレッドとが共に緊急性があり、高速に処理を行う場合にて説明を行う。たとえば、図５に示す例では、アプリケーション＃０にて通信を行うスレッド＃０と、通信で得たデータを用いてディスプレイ１０４に表示するスレッド＃１と、が共に緊急性がある。
【００５０】
レコード３０１に基づいて、スケジューラ２０２は、スレッド＃０では通信を高速に行うために、実行しているＣＰＵ＃１に対応するＭＥＭ＃１に転送対象データとなるデータ＃０をＣＰＵ＃１に書き込むように制御する。また、スケジューラ２０２は、スレッド＃１にてその結果を高速に読み出すため、ＤＭＡＣ＃０によってデータ＃０をＭＥＭ＃１からＭＥＭ＃０へ転送するように制御する。方式Ａが適用できる場合として、動画のストリーミング再生などが挙げられる。方式Ａによるデータ転送は、ＤＭＡＣによるバースト転送により、転送対象データを高速に転送することができる。また、転送対象データの転送中は、バス１０７を占有する。
【００５１】
図６は、データ転送方式Ｂを示す説明図である。方式Ｂは、転送対象データの格納および転送対象データの転送に緊急性がない場合のデータ転送方式である。具体的に図６では、通信を行うスレッドと通信で得た転送対象データを用いたスレッドとが共に緊急性がない場合として説明を行う。たとえば、図６に示す例では、図５の状態から、アプリケーション＃１が起動されアクティブとなり、アプリケーション＃０がインアクティブとなった結果、通信を行うスレッド＃０と動画を表示するスレッド＃１とに緊急性がなくなった状態である。緊急性がなくなった理由としては、アプリケーション＃０がインアクティブとなり、スレッド＃１によって動画を再生する画面領域がアプリケーション＃１によって隠れたためなどがある。
【００５２】
このとき、レコード３０２に基づいて、スケジューラ２０２は、スレッド＃０では通信を高速で行わなくてよいため、ＣＰＵ＃０専用のメモリでない、ＭＥＭ＃０へデータ＃０をＣＰＵ＃１に書き込むように制御する。また、スケジューラ２０２は、スレッド＃１にＭＥＭ＃０からデータ＃０をＣＰＵ＃０に読み込むように制御する。方式Ｂが適用できる場合として、バックグラウンドで行うファイルのダウンロード処理などが挙げられる。
【００５３】
図７は、データ転送方式Ｃを示す説明図である。方式Ｃは、転送対象データの格納に緊急性があり、転送対象データの転送には緊急性がない場合のデータ転送方式である。具体的に図７では、通信を行うスレッドには緊急性があるが、通信で得た転送対象データを用いたスレッドには緊急性がない場合として説明を行う。たとえば、図７に示す例では、アプリケーション＃２のスレッド＃４では通信処理を高速に実行するため、緊急性がある。しかし、スレッド＃４と連携して動作するスレッド＃５には緊急性がない状態である。
【００５４】
レコード３０４に基づいて、スケジューラ２０２は、スレッド＃４では通信を高速に行うために、実行しているＣＰＵ＃１専用のＭＥＭ＃１に転送対象データとなるデータ＃２をＣＰＵ＃１に書き込むように制御する。また、スケジューラ２０２は、スレッド＃５ではその結果を高速で読み出さなくてよいため、ＤＭＡＣ＃０の使用を禁じ、データ＃２をＣＰＵ＃０に読み込むように制御する。方式Ｃが適用できる場合として、メールの受信などが挙げられる。
【００５５】
たとえば、アプリケーション＃２をメールソフトウェアとし、スレッド＃４をダウンロードスレッドとし、スレッド＃５をメール取得スレッドとする。ＣＰＵ＃１は、ダウンロードスレッドによってＩ／Ｆ１０５を通じ、ネットワーク１０６からメールデータを受信し、ＭＥＭ＃１に書き込む。ＣＰＵ＃０は、メール取得スレッドによってＭＥＭ＃１から読み込む。
【００５６】
方式Ｂ、方式Ｃによるデータ転送方式は、ＣＰＵによるデータ転送により、データの転送速度はＤＭＡＣの転送に比べ低速ではあるが、バス１０７を占有しないため、ＣＰＵの転送待ちによるスループットの低下を防ぐことができる。また、割り込みが発生した場合、コンテキストスイッチを行う反応時間が短縮され、応答性を向上させることができる。
【００５７】
図８は、ストリーミング再生中におけるストリーミングデータのデータ転送状態を示す説明図である。図８におけるデータ転送制御装置１００は、動画再生アプリケーションを実行している状態である。動画再生アプリケーションは、動画再生スレッド８０１と、ダウンロードスレッド８０２を含む。また、ＧＵＩスレッド８０３が実行されており、ＧＵＩスレッド８０３は動画再生アプリケーション以外のアプリケーションに属する。また、ダウンロードスレッド８０２は、動画再生アプリケーション以外のアプリケーションに属していてもよい。
【００５８】
図８の状態では、動画再生アプリケーションの状態がアクティブであるため、スケジューラ２０２は、データ転送テーブル２０１からレコード８０４を選択する。レコード８０４に基づいて、スケジューラ２０２は、データ転送方式を方式Ａに設定する。設定された内容に従って、ダウンロードスレッド８０２はＩ／Ｆ１０５から取得したストリーミングデータをＭＥＭ＃１に書き込む。
【００５９】
ストリーミングデータの書き込み後、ＤＭＡＣ＃０は、ストリーミングデータをＭＥＭ＃１からＭＥＭ＃０に転送し、動画再生スレッド８０１は、ＭＥＭ＃０からストリーミングデータを読み込み、ディスプレイ１０４に動画を表示する。
【００６０】
ストリーミングデータを再生する場合、ストリーミングデータのビットレート以上でデータを転送しないと動画が正常に表示できなくなるため、データ転送方式は、高速にデータを転送できる方式Ａが適している。
【００６１】
図９は、ゲームアプリケーション実行中におけるストリーミングデータのデータ転送状態を示す説明図である。図９におけるデータ転送制御装置１００は、動画再生アプリケーションを実行している状態であったのが、他のアプリケーションがアクティブとなり、動画再生アプリケーションがインアクティブとなり、動画再生が待機中になった状態である。図９では、動画再生アプリケーションとは異なるゲームアプリケーションがアクティブ状態であり、ゲームアプリケーションに属するゲームスレッド９０１がＣＰＵ＃０によって実行されている。
【００６２】
図９の状態では、動画再生アプリケーションの状態がインアクティブであるため、スケジューラ２０２は、データ転送テーブル２０１からレコード８０５を選択する。レコード８０５に基づいて、スケジューラ２０２は、データ転送方式を方式Ｂに設定する。設定された内容に従って、ダウンロードスレッド８０２はＩ／Ｆ１０５から取得したストリーミングデータをＭＥＭ＃０に直接書き込む。ストリーミングデータの書き込み後、動画再生スレッド８０１は、ＭＥＭ＃０からストリーミングデータを読み込む。
【００６３】
このとき、ディスプレイ１０４には、ゲームスレッド９０１による描画が行われており、動画再生スレッド８０１は待機中であるため描画をしない。このとき、ダウンロードスレッド８０２は、動画再生アプリケーションの待機中にストリーミングデータをＭＥＭ＃０に転送する。転送中に動画再生アプリケーションがアクティブ状態になった場合、動画再生スレッド８０１は、蓄積されたストリーミングデータを再生することで、スムーズな動画再生を行うことができる。動画再生アプリケーションが待機中のデータ転送には、時間制約がなく緊急でないため、データ転送方式は、バス１０７を占有しない方式Ｂが適している。
【００６４】
図１０は、ゲームアプリケーション中断状態におけるストリーミングデータのデータ転送状態を示す説明図である。図１０におけるデータ転送制御装置１００は、ゲームアプリケーションがアクティブの状態から、動画再生アプリケーションがアクティブとなった状態である。
【００６５】
図１０の状態では、動画再生アプリケーションの状態がアクティブであるため、スケジューラ２０２は、データ転送テーブル２０１からレコード８０４を選択する。レコード８０４に基づいて、スケジューラ２０２は、データ転送方式を再び方式Ａに設定する。このように、本実施の形態にかかるデータ転送制御装置１００は、アプリケーションがアクティブかインアクティブかという状態変化に基づいて転送方式を動的に切り替えることができる。
【００６６】
また、データ転送制御装置１００はアクティブかインアクティブか、以外の状態変化に基づいて転送方式を切り替えてもよい。たとえば、動画再生アプリケーションがアクティブであるが、利用者などによって動画再生が停止、または巻き戻し再生になったという状態変化が発生した場合である。この場合、蓄積されたストリーミングデータにて再生が行えるため高速でデータを転送しなくてもよいので、データ転送制御装置１００はデータ転送方式を方式Ｂに設定してもよい。
【００６７】
図１１Ａ、図１１Ｂは、データ転送方式移行処理を示すフローチャートである。データ転送方式移行処理は、スケジューラ２０２の機能の一部として実行される。スケジューラ２０２は、各ＣＰＵで実行されるアプリケーションのスケジュールを、それぞれのＣＰＵのスケジューラで管理する。また、スケジューラ２０２は、データ転送制御装置１００で実行中のアプリケーションの管理や、利用者からのアプリケーションの起動要求の対応を、各ＣＰＵのうち、特定のＣＰＵのスケジューラが代表して行う。本実施の形態では、特定のＣＰＵをＣＰＵ＃０として説明を行う。
【００６８】
各ＣＰＵは、状態変化が発生したかを判断する（ステップＳ１１０１）。状態変化とは、アプリケーションの起動、終了、アプリケーションのスイッチである。状態変化が発生していない場合（ステップＳ１１０１：Ｎｏ）、各ＣＰＵは、再びステップＳ１１０１の処理を実行する。状態変化が発生した場合（ステップＳ１１０１：Ｙｅｓ）、各ＣＰＵは、アプリケーションの実行が終了した状態変化かを判断する（ステップＳ１１０２）。
【００６９】
アプリケーションの実行が終了した状態変化である場合（ステップＳ１１０２：Ｙｅｓ）、各ＣＰＵは、データ転送方式Ｃのアプリケーションが終了したかを判断する（ステップＳ１１０３）。データ転送方式Ｃのアプリケーションが終了した場合（ステップＳ１１０３：Ｙｅｓ）、各ＣＰＵは、各ＣＰＵに対応するＤＭＡＣの使用禁止を解除し（ステップＳ１１０４）、ステップＳ１１０１の処理に移行する。データ転送方式Ｃ以外のアプリケーションが終了した場合（ステップＳ１１０３：Ｎｏ）、各ＣＰＵは、ステップＳ１１０１の処理に移行する。なお、アプリケーションが終了すると、実行中のアプリケーションにスイッチするため、ステップＳ１１０１：Ｙｅｓの処理に移行する。
【００７０】
アプリケーションの実行が終了した状態変化でない場合（ステップＳ１１０２：Ｎｏ）、各ＣＰＵは、未解析のアプリケーションが存在するかを判断する（ステップＳ１１０５）。未解析のアプリケーションが存在する場合（ステップＳ１１０５：Ｙｅｓ）、各ＣＰＵは、実行中のアプリケーションのうち、未解析のアプリケーションを選択する（ステップＳ１１０６）。選択後、各ＣＰＵは、ＣＰＵ＃０に選択されたアプリケーションの情報を通知する。
【００７１】
通知を受けたＣＰＵ＃０は、選択されたアプリケーションがデータ転送テーブル２０１に存在するかを判断する（ステップＳ１１０７）。データ転送テーブル２０１に登録されている場合（ステップＳ１１０７：Ｙｅｓ）、ＣＰＵ＃０は、データ転送テーブル２０１から、選択されたアプリケーションのレコードを選択し（ステップＳ１１０８）、通知元のＣＰＵに送信する。なお、選択されたアプリケーションのレコードが複数存在する場合、ＣＰＵ＃０は、選択されたアプリケーションがアクティブ状態かインアクティブ状態かと、条件に当てはまるレコードのうち記載された状態と、が一致するレコードを選択してもよい。
【００７２】
レコードを受信した各ＣＰＵは、新たなアプリケーションの起動による状態変化によって、選択されたアプリケーションのデータ転送方式が変更されるかを判断する（ステップＳ１１０９）。データ転送方式が変更される場合（ステップＳ１１０９：Ｙｅｓ）、各ＣＰＵは、データ転送方式設定処理を実行する（ステップＳ１１１０）。データ転送方式設定処理の詳細は、図１２にて後述する。
【００７３】
データ転送方式の実行後、または、データ転送方式が変更されない場合（ステップＳ１１０９：Ｎｏ）、各ＣＰＵは、選択されたアプリケーションを解析済みに設定し（ステップＳ１１１１）、ステップＳ１１０５の処理に移行する。
【００７４】
選択されたアプリケーションがデータ転送テーブル２０１に登録されていない場合（ステップＳ１１０７：Ｎｏ）、ＣＰＵ＃０は、登録されていないという結果を通知元のＣＰＵに送信する。登録されていないという結果を受信した各ＣＰＵは、ステップＳ１１１１の処理に移行する。
【００７５】
未解析のアプリケーションが存在しない場合（ステップＳ１１０５：Ｎｏ）、各ＣＰＵは、ＣＰＵ＃０に対して、新たなアプリケーションが起動した状態変化かを判断するよう依頼する（ステップＳ１１１２）。新たなアプリケーションが起動した状態変化である場合（ステップＳ１１１２：Ｙｅｓ）、ＣＰＵ＃０は、新たなアプリケーションがデータ転送テーブル２０１に登録されているかを判断する（ステップＳ１１１３）。なお、選択されたアプリケーションのレコードが複数存在する場合、ＣＰＵ＃０は、選択されたアプリケーションがアクティブ状態かインアクティブ状態かと、条件に当てはまるレコードのうち記載された状態と、が一致するレコードを選択してもよい。
【００７６】
データ転送テーブル２０１に登録されている場合（ステップＳ１１１３：Ｙｅｓ）、ＣＰＵ＃０は、データ転送テーブル２０１から新たなアプリケーションのレコードを選択する（ステップＳ１１１４）。レコードを選択後、ＣＰＵ＃０は、データ転送方式設定処理を実行する（ステップＳ１１１５）。データ転送方式設定処理の詳細は、図１２にて後述する。
【００７７】
データ転送方式設定処理の実行終了後、ＣＰＵ＃０は、スケジューラ２０２によって新たなアプリケーションをディスパッチする（ステップＳ１１１６）。新たなアプリケーションがデータ転送テーブル２０１に登録されていない場合（ステップＳ１１１３：Ｎｏ）、ＣＰＵ＃０は、ステップＳ１１１６の処理に移行する。新たなアプリケーションが起動した状態変化でない場合（ステップＳ１１１２：Ｎｏ）、ＣＰＵ＃０は、スケジューラ２０２によって、通常のスケジューリングを実行する（ステップＳ１１１７）。なお、データ転送テーブル２０１に登録されていないアプリケーションとしては、たとえば、利用者がダウンロードしたアプリケーションなどが挙げられる。
【００７８】
ステップＳ１１１６の処理終了後、または、ステップＳ１１１７の処理終了後、ＣＰＵ＃０は、ステップＳ１１０１の処理に移行する。具体的には、処理移行後ＣＰＵ＃０は、各ＣＰＵに対して状態変化が発生したかを判断するように指示をする。
【００７９】
図１２は、データ転送方式設定処理を示すフローチャートである。データ転送方式設定処理はすべてのＣＰＵにて実行される。ここでは説明の簡略化のため、ＣＰＵ＃０が実行する場合について説明を行う。また、データ転送方式設定処理が実行される場合には、引数としてデータ転送テーブル２０１の選択されたレコードを取得できる状態である。
【００８０】
ＣＰＵ＃０は、選択されたレコードからデータ転送方式を判断する（ステップＳ１２０１）。選択されたレコードのデータ転送方式が方式Ａである場合（ステップＳ１２０１：方式Ａ）、転送対象データの転送に緊急性があると判断されるため、ＣＰＵ＃０は、ＤＭＡＣの設定をし（ステップＳ１２０２）、データ転送方式設定処理を終了する。なお、データ転送方式が方式Ｃのアプリケーションから方式Ａのアプリケーションにディスパッチされた場合、ＣＰＵ＃０は、ＤＭＡＣ＃０の使用禁止の解除を行い、ＤＭＡＣの設定を行う。
【００８１】
選択されたレコードのデータ転送方式が方式Ｂである場合（ステップＳ１２０１：方式Ｂ）、ＣＰＵ＃０は、転送対象データの格納と転送に緊急性がないと判断されるため、転送先アドレスの設定をし（ステップＳ１２０３）、データ転送方式設定処理を終了する。より詳細には、転送元メモリに転送対象データを格納するＣＰＵに対し、転送先アドレスの設定をする。たとえば図６の場合では、ＣＰＵ＃０は、ＣＰＵ＃１に対してＭＥＭ＃０内の転送先アドレスの設定をする。
【００８２】
選択されたレコードのデータ転送方式が方式Ｃである場合（ステップＳ１２０１：方式Ｃ）、転送対象データの格納に緊急性があり、転送に緊急性がないと判断されるため、ＣＰＵ＃０は、ＤＭＡＣの使用禁止を設定する（ステップＳ１２０４）。設定後、ＣＰＵ＃０は、データ転送方式設定処理を終了する。具体的には、ＣＰＵ＃０は、ＣＰＵ＃０に対応するＤＭＡＣ＃０の使用禁止を設定する。
【００８３】
図１１、図１２では、データ転送制御装置１００は、データ転送方式が方式Ｃの際に、ＤＭＡＣの使用を禁止することで、ＣＰＵに転送させるようにしていたが、ＤＭＡＣを禁止せずにＣＰＵに直接転送するように設定してもよい。また、データ転送制御装置１００は、ＤＭＡＣの使用を禁止する代わりに、ＤＭＡＣの転送方法のうち、バスを占有するバースト転送を禁止してもよい。ＤＭＡＣの中には、バースト転送以外にも１バイト、または、コンピュータでデータ量の単位である１ワード単位で転送するシングル転送が行えるＤＭＡＣも存在する（下記参考文献１参照。）。
（参考文献１：ＤＭＣを使いこなす  ：  富士通、［ｏｎｌｉｎｅ］、［平成２２年０５月０６日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｊｐ．ｆｕｊｉｔｓｕ．ｃｏｍ／ｍｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ／ｐｒｏｄｕｃｔｓ／ｍｉｃｏｍ／ｓｕｐｐｏｒｔ／ｋｎｏｗｈｏｗ／ｆｒ−ｈａｒｄ０５．ｈｔｍｌ＞）
【００８４】
バースト転送を禁止し、シングル転送でデータを転送する場合、ＤＭＡＣがバスを占有しないため、データ転送制御装置１００は、ＣＰＵの転送待ちによるスループットを低下させることなく、スループットを維持することができる。また、割り込みが発生した場合にも、データ転送制御装置１００は、コンテキストスイッチを行う反応時間が短縮され、応答性を向上させることができる。
【００８５】
また、本実施の形態におけるデータ転送制御装置１００は、マルチコアの形態となっていたが、シングルコアの形態となっていてもよい。たとえば、図５にて前述したアプリケーション＃０にて、通信を行うスレッド＃０が転送対象データをスレッド＃０のワーキング領域に格納し、通信で得た転送対象データを用いるスレッド＃１のワーキング領域に転送する状態を想定する。
【００８６】
この場合、アプリケーション＃０の状態がアクティブである場合は、データ転送方式を方式Ａとして、ＤＭＡＣによってスレッド＃１のワーキング領域からスレッド＃０のワーキング領域に転送対象データを転送してもよい。また、アプリケーション＃０の状態がインアクティブである場合は、データ転送方式を方式Ｂとして、スレッド＃１が直接スレッド＃０のワーキング領域に転送対象データを書き込みしてもよい。
【００８７】
また、シングルコアによるデータ転送方式が方式Ｃの場合においても、図７にて前述したアプリケーション＃２の例が適用できる。具体的には、アプリケーション＃２のスレッド＃４が転送対象データをスレッド＃４のワーキング領域に格納し、スレッド＃５がスレッド＃４のワーキング領域から直接転送対象データを読み込んでもよい。
【００８８】
以上説明したように、データ転送制御装置、データ転送制御方法、およびデータ転送制御プログラムによれば、実行中のアプリケーションの種類に基づいて、緊急のデータ転送か否かを判断し、緊急でない場合にＤＭＡＣの使用を禁止する。これにより、データ転送制御装置は、頻繁なＤＭＡ転送を削減するため、プロセッサの転送待ちによるスループットの低下を防ぐことができる。さらに、データ転送制御装置は、頻繁なＤＭＡ転送を削減するため、コンテキストスイッチが要求される割り込み処理への反応時間が短くなり、リアルタイム処理に対する応答性を向上できる。
【００８９】
また、データ転送制御装置は、アプリケーションの種類と状態変化とに基づいて、緊急のデータ転送か否かを判断してもよい。これにより、データ転送制御装置は、プロセッサの転送待ちによるスループットの低下を防ぐことができ、さらに、リアルタイム処理に対する応答性を向上できる。また、データ転送制御装置は、アプリケーションの状態変化に基づいて判断することで、アプリケーションの種類による判断よりさらに動的にデータ転送方式を変更することができる。したがって、データ転送制御装置は、スループットの低下の防止やリアルタイム処理に対する応答性の向上を行える状態をより増やすことができる。
【００９０】
また、データ転送制御装置は、アプリケーションの状態がアクティブからインアクティブに、または、インアクティブからアクティブに変化した場合に、アプリケーションの種類と状態変化とに基づいて、緊急のデータ転送か否かを判断してもよい。これにより、データ転送制御装置は、プロセッサの転送待ちによるスループットの低下を防ぐことができ、さらに、リアルタイム処理に対する応答性を向上できる。
【００９１】
また、データ転送制御装置が携帯端末の形態をとる場合、携帯端末で採用されるディスプレイの表示領域は表示領域が狭く、たとえば、３２０×２４０ピクセルであるＱＶＧＡ（Ｑｕａｒｔｅｒ  Ｖｉｄｅｏ  Ｇｒａｐｈｉｃｓ  Ａｒｒａｙ）が採用される場合もある。このような表示領域の狭いディスプレイの場合、インアクティブとなったアプリケーションは、アクティブとなったアプリケーションによってすべて隠される可能性が高い。すべて隠れてしまったアプリケーションは利用者から見えなくなるため、データの転送速度を遅くしても利用者からは問題とならない場合が存在する。このような場合、データ転送制御装置は、データの転送速度が遅くなる代わりに、プロセッサのスループットの低下防止や、リアルタイムの応答性の向上を図ることができる。
【００９２】
また、データ転送制御装置は、転送対象データの転送に緊急性があると判断された場合、ＤＭＡＣによって転送対象データを転送してもよい。これにより、データ転送制御装置は、緊急性があるときに限り高速で転送対象データを転送することができる。たとえば、アプリケーションがアクティブとなり緊急性が高まったときに、データ転送制御装置は、ＤＭＡＣによって転送対象データを高速に転送することができる。
【００９３】
また、データ転送制御装置は、他のプロセッサによる転送元メモリへの転送対象データの格納に緊急性があるかを判断し、転送対象データの格納に緊急性がなく、かつ、転送対象データの転送に緊急性がないと判断された場合、他のプロセッサに転送させてもよい。これにより、データ転送制御装置は、緊急性がない場合に、プロセッサのスループットの低下防止や、リアルタイムの応答性の向上を図ることができる。
【００９４】
また、データ転送制御装置は、転送対象データの格納に緊急性があり、かつ、転送対象データの転送に緊急性がないと判断された場合、プロセスを検出したプロセッサに転送させてもよい。これにより、データ転送制御装置は、転送対象データの格納を高速で行いつつ、プロセッサのスループットの低下防止や、リアルタイムの応答性の向上を図ることができる。
【００９５】
なお、本実施の形態で説明したデータ転送制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本データ転送制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本データ転送制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【００９６】
＃０、＃１  ＣＰＵ、ＭＥＭ、ＤＭＡＣ
１０７  バス
１００  データ転送制御装置
２０１  データ転送テーブル
２０２  スケジューラ
２０３  転送部
２０４  転送指示部
２０５  検出部
２０６  判断部
２０７  制御部
【図１】
0005387770.tif 000002
【図２】
0005387770.tif 000003
【図３】
0005387770.tif 000004
【図４】
0005387770.tif 000005
【図５】
0005387770.tif 000006
【図６】
0005387770.tif 000007
【図７】
0005387770.tif 000008
【図８】
0005387770.tif 000009
【図９】
0005387770.tif 000010
【図１０】
0005387770.tif 000011
【図１１Ａ】
0005387770.tif 000012
【図１１Ｂ】
0005387770.tif 000013
【図１２】
0005387770.tif 000014