(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-12
(45)【発行日】2024-01-22
(54)【発明の名称】データ処理システムおよびデータ処理システムの制御方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20240115BHJP
【FI】
G06F12/00 570B
G06F12/00 571A
(21)【出願番号】P 2019183846
(22)【出願日】2019-10-04
【審査請求日】2022-09-28
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100090273
【氏名又は名称】國分 孝悦
(72)【発明者】
【氏名】黒木 大輔
【審査官】北村 学
(56)【参考文献】
【文献】国際公開第2008/136332(WO,A1)
【文献】特開2002-123420(JP,A)
【文献】特開2007-156544(JP,A)
【文献】特開2007-280253(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
データを記憶するメモリと、
前記メモリに対するデータ転送要求を
出力する第1のマスタと、
所定の期間で転送すべき総データ転送長に基づき、前記第1のマスタが
出力するデータ転送要求を複数のデータ転送要求に分割し、前記分割された複数のデータ転送要求を出力する分割手段と、
前記メモリに対するデータ転送要求を
出力する第2のマスタと
、
前記分割手段の出力と前記第2のマスタの出力とに基づき、前記メモリに対するデータ転送要求の発行順番を調停する第1のアービタと、
を有することを特徴とするデータ処理システム。
【請求項2】
前記第1のマスタが複数設けられ、
前記複数の第1のマスタが
出力するデータ転送要求の順番を調停し、前記調停した順番で前記データ転送要求を前記分割手段に出力する第2のアービタをさらに有することを特徴とする請求項1に記載のデータ処理システム。
【請求項3】
前記第1のマスタが
出力するデータ転送要求を分割するためのデータ転送長を決定する決定手段をさらに有し、
前記分割手段は、前記データ転送長に応じて、前記第1のマスタが
出力するデータ転送要求を複数のデータ転送要求に分割することを特徴とする請求項1
または2に記載のデータ処理システム。
【請求項4】
前記決定手段は、
前記所定の期間で転送すべき総データ転送長を基に、前記データ転送長を決定することを特徴とする請求項
3に記載のデータ処理システム。
【請求項5】
前記決定手段は、前記第1のマスタが
出力し、前記メモリにアクセスされていないデータ転送要求の合計のデータ転送長と、
前記所定の期間に対する残り時間の割合とを基に、前記データ転送長を決定することを特徴とする請求項
3または
4に記載のデータ処理システム。
【請求項6】
前記
所定の期間は、1つの水平同期信号の期間であることを特徴とする請求項
4または
5に記載のデータ処理システム。
【請求項7】
データを記憶するメモリと、
前記メモリに対するデータ転送要求を
出力する第1のマスタと、
前記メモリに対するデータ転送要求を
出力する第2のマスタとを有するデータ処理システムの制御方法であって、
所定の期間で転送すべき総データ転送長に基づき、前記第1のマスタが
出力するデータ転送要求を複数のデータ転送要求に分割し、前記分割された複数のデータ転送要求を出力する分割ステップと
、
前記分割ステップによる出力と前記第2のマスタの出力とに基づき、前記メモリに対するデータ転送要求の発行順番を調停する調停ステップと、
を有することを特徴とするデータ処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理システムおよびデータ処理システムの制御方法に関する。
【背景技術】
【0002】
ディスプレイに代表される画像処理システムは、ある単位時間内で、所定のデータ量の画像処理を完了し続ける必要があるデータ処理システムである。毎秒60フレームのレートで表示するディスプレイは、表示する画像データを入力すると、約16ms毎に1フレームの単位で、縦横の回転処理、解像度を上げる超解像処理やエッジ強調などの様々な画像処理を行い、その後、パネルに出力し続ける必要がある。16ms内で画像1フレームのデータ処理が間に合わない場合、ディスプレイに表示され、ユーザに視認される画像は、チラツキが生じたり、表示画像の一部がノイズだらけの表示になることが考えられ、ディスプレイ製品として成立しない。
【0003】
縦横の回転処理や、複数フレームを参照して解像度を上げる超解像処理など、適用する画像処理によっては、1フレーム以上の画像データを一旦メモリに格納した後、メモリから読み出しつつ画像処理を行う必要がある。よって、ディスプレイは、各画像処理を担う画像処理モジュール間で、画像データを受け渡しつつパイプラインで画像処理を行うとともに、画像処理によっては、メモリへの画像データの格納と呼び出しのメモリアクセスをも伴うデータ処理システムである。さらに、それらのデータ処理をある単位時間内、この例では、約16msで画像1フレームのデータ処理を完了し続ける必要があるデータ処理システムである。
【0004】
また、ディスプレイは、入力された画像データを高画質化してパネルに表示するだけでなく、ユーザがディスプレイを操作するためのメニューや表示中のチャンネル情報などの様々な情報のグラフィックを画像データに重畳して表示する。それらUI(ユーザインターフェース)グラフィックは、ユーザによる設定やカスタマイズも可能な柔軟な表示を可能とするために、CPUによるレンダリング、もしくは、一部ハードウエアによるアシストを用いたソフトウエア処理が一般的である。UIグラフィックのレンダリング処理では、CPUが、メモリからレンダリング命令の読み出し、命令に従ってレンダリングを実行、その後、メモリにレンダリング結果のグラフィックを格納する。これらの処理を繰り返して、表示するグラフィックを完成させる。グラフィックの大きさや複雑さに応じて、グラフィックの完成までにレンダリング処理数、即ち、メモリアクセス回数が変わる。画像処理と同様にメモリアクセスが発生する。
【0005】
ただし、画像データの表示と異なり、グラフィックのレンダリング処理に、時間制約は無くてもよい。レンダリング処理が遅れたとしても、グラフィックの表示を行わない、もしくは、グラフィックの切り替え遅らせることで、表示画像に、チラツキが生じたり、表示画像の一部がノイズだらけの表示になることは無いからである。ただし、レンダリング処理が遅くなることは、ユーザに対して、UIグラフィック表示のレスポンス低下を招くことになる。
【0006】
各画像処理モジュールが、メモリアクセスを行う場合は、データ処理システムが備えるメモリ帯域の効率的な利用を考慮し、メモリバスを一定期間占有し、画像の1水平ライン分のデータといった大きな単位での連続したデータ転送を行う。例えば、FullHD(1920×1080画素)でRGB8ビット深度の画像を表示するディスプレイでは、1水平ライン分である5760バイト(=1920×3)分の連続したデータ転送をメモリバスを占有して行う。そのようなメモリアクセスを、垂直ライン数分の1080回行う。
【0007】
一方、レンダリング処理におけるCPUからのメモリアクセスの単位は、CPUが備えるキャッシュシステムのキャッシュライン分のデータ単位でのアクセスとなる。キャッシュラインは、データ処理システムにより異なるが、256バイトや512バイトが一般的なサイズであり、レンダリングが完了するまで、画像処理モジュールの1回のデータ転送サイズと比べ、小さいサイズのデータ転送を断続的に発行することになる。
【0008】
近年、ディスプレイが扱う画像の解像度は、FullHD(1920×1080画素)、4K2K(3840×2160画素)、8K4K(7680×4320画素)と飛躍的な向上をしている。従って、メモリであるDRAMに対して、画像処理モジュールが、単位時間内に格納・読み出しのためにアクセスすべきデータ量も、飛躍的に増大している。しかしながら、DRAMのメモリ帯域の向上は、単位時間内にアクセスすべきデータ量の向上より遅い。そのため、データ処理システムが備えるメモリ帯域のうちの多くを画像処理モジュールによるメモリアクセスが占めるようになり、UIレンダリングを行うCPUからのメモリアクセスに対してのメモリ帯域の割り当てが減る傾向にある。また、画像処理モジュールと次の画像処理モジュールとの大きな連続したデータ転送の間にしか、CPUからのメモリアクセスが入れないため、メモリアクセスのレイテンシが増大し、UIグラフィック表示のレスポンスが低下する傾向にある。
【0009】
また、処理する画像データの入力がないブランキング期間やその前後では、画像処理モジュールからのメモリアクセスが無い、もしくは、メモリアクセスをする画像処理モジュールが限られるため、CPUに対して、連続してメモリアクセスを与えることができる。しかし、UIレンダリングを行うCPUからのメモリアクセスは、小さなサイズのデータ転送で、途中にレンダリングの実行が入るため、連続してメモリアクセスを行うことが可能な状況でも、データ転送間にギャップが空き、メモリ帯域を効率的使用できない。
【0010】
特許文献1では、連続したデータ転送を予め定められたデータ転送長でデータ転送を分割し、分割したデータ転送間に、CPUからのメモリアクセスを入れることで、CPUからのメモリアクセスのレイテンシを減らす提案を行っている。
【0011】
特許文献2では、データ転送のリクエスト情報に含まれる優先度情報を用いて、優先度の低いデータ転送を分割し、分割したデータ転送間に、優先度の高いデータ転送を入れることで、優先度の高いデータ転送のメモリアクセスレイテンシを減らす提案を行っている。
【先行技術文献】
【特許文献】
【0012】
【文献】特開2002-123420号公報
【文献】特開2009-217750号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
しかしながら、CPUからデータ転送のリクエストがあると、画像処理モジュールからの連続したデータ転送を分割するようにした場合、メモリ帯域の使用効率が下がるとともに、画像処理モジュールへのメモリ帯域の割り当てが減ることになる。従って、最悪の場合、画像処理モジュールが必要とする単位時間内での必要なデータ転送が間に合わなくなり、表示画像が乱れるという課題がある。
【0014】
また、優先度情報を用いて、データ転送の分割の有無を決定する場合、CPUからのデータ転送のリクエストの優先度を上げると、前記と同様に、画像処理モジュールへのメモリ帯域の割り当てが減ることになり、最悪の場合、表示画像が乱れる。画像処理モジュールからのデータ転送のリクエストの優先度を上げると、画像処理モジュールからのデータ転送への分割が行われないため、CPUからのメモリアクセスレイテンシは、現状と変わらない。また、データ処理システムが扱う画像データの高解像度化の進展に伴い、画像処理モジュールが要求するデータ量、即ち、連続したデータ転送の転送長と回数とも増加傾向にあるため、CPUからのメモリレイテンシは増大する方向にある。従って、ユーザに対して、UIグラフィック表示のレスポンスの遅いディスプレイを提供することになるという課題がある。
【0015】
本発明の目的は、第1のマスタのデータ転送要求が出力されても、第2のマスタからのメモリアクセスのレイテンシを低減することができるようにすることである。
【課題を解決するための手段】
【0016】
本発明のデータ処理システムは、データを記憶するメモリと、前記メモリに対するデータ転送要求を出力する第1のマスタと、所定の期間で転送すべき総データ転送長に基づき、前記第1のマスタが出力するデータ転送要求を複数のデータ転送要求に分割し、前記分割された複数のデータ転送要求を出力する分割手段と、前記メモリに対するデータ転送要求を出力する第2のマスタと、前記分割手段の出力と前記第2のマスタの出力とに基づき、前記メモリに対するデータ転送要求の発行順番を調停する第1のアービタと、を有する。
【発明の効果】
【0017】
本発明によれば、第1のマスタのデータ転送要求が出力されても、第2のマスタからのメモリアクセスのレイテンシを低減することができる。
【図面の簡単な説明】
【0018】
【
図1】データ処理システムの構成例を示す図である。
【
図2】メモリ帯域とメモリアクセスパターンとの関係を示す図である。
【
図7】データ転送決定部の制御方法を示すフローチャートである。
【
図8】分割データ転送実行部の制御方法を示すフローチャートである。
【発明を実施するための形態】
【0019】
図1は、本実施形態によるデータ処理システム100の構成例を示す図である。データ処理システム100は、画像処理モジュール101~103と、表示パネル104と、CPU106と、DMA108~111と、インターコネクト112と、メモリコントローラ113と、DRAM114とを有する。インターコネクト112は、データ転送長決定部115と、分割データ転送実行部116と、リクエストFIFO117~121と、アービタ122と、アービタ125と、リクエストFIFO126とを有する。データ転送長決定部115は、パラメータテーブル127を有する。分割データ転送実行部116は、リクエストFIFO123およびレスポンスFIFO124を有する。
【0020】
データ処理システム100は、表示すべき画像データ105を入力すると、画像データ105に対して、3つの画像処理モジュール101~103により画像処理を適用した後に、表示パネル104へ出力することで、画像データの表示を行う。
【0021】
画像処理モジュール101~103は、メモリであるDRAM114をバッファとして用いることで、画像データの入出力を行う。DMA108~111の各々が複数設けられる。DMA108~111は、DRAM114に対して、ダイレクトメモリアクセスにより、直接アクセスを行うためのデータ転送要求を発行するダイレクトメモリアクセスコントローラである。
【0022】
画像処理モジュール101は、画像データ105を入力し、画像データ105に対して画像処理を行った後、DMA108を介して、DRAM114に画像データを格納する。画像処理モジュール102は、画像処理モジュール101がDRAM114に格納した画像データを、DMA109を介して、DRAM114から読み出し、読み出した画像データに対して画像処理を行う。その後、画像処理モジュール102は、画像処理した画像データを、DMA110を介して、DRAM114に格納する。画像処理モジュール103は、画像処理モジュール102がDRAM114に格納した画像データを、DMA111を介してDRAM114から読み出し、読み出した画像データに対して画像処理を行った後、画像処理した画像データを表示パネル104に出力する。インターコネクト112は、4つのDMA108~111と、DRAM114へアクセスするための制御を担うメモリコントローラ113とを接続している。
【0023】
また、CPU106は、ユーザからのメニュー表示指示など、リモコンからの指示107を入力すると、対応するUIグラフィックをソフトレンダリングにより生成し、画像データに重畳して、表示パネル104へ出力することで、メニュー画面を表示する。CPU106は、DRAM114に記憶されているレンダリング命令の読み出し、レンダリング処理の実行、レンダリング結果のDRAM114への格納を繰り返すことで、グラフィック作成を行う。画像処理モジュール103が、DRAM114に格納されている画像データとCPU106が生成したグラフィックを読み出して、重畳し、表示パネル104に出力する。
【0024】
CPU106は、4つのDMA108~111と同様に、インターコネクト112に接続され、DRAM114へのアクセスを行うため、DRAM114に対するデータ転送要求を出力する。インターコネクト112は、CPU106と、4つのDMA108~111で、DRAM114のメモリ帯域を共有するバス接続となっている。インターコネクト112は、4つのDMA108~111からのデータ転送要求と、CPU106からのデータ転送要求を入力し、DRAM114へデータ転送要求を発行する順番を調停している。
【0025】
4つのDMA108~111は、単位時間内で、所定の画像処理を完了し続けるために、DRAM114のメモリ帯域を一定期間占有して大きな単位での連続したデータ転送要求を発行する連続アクセスマスタである。
【0026】
CPU106は、レンダリングが完了するまで、連続アクセスマスタの1回のデータ転送サイズと比べ、小さいサイズのデータ転送要求を断続的に発行する単発アクセスマスタである。CPU106は、グラフィック生成完了までの時間制約は無いが、メモリアクセスレイテンシが短いほど、リモコンからの指示107から、グラフィック表示までのレスポンスが速くなる。
【0027】
次に、インターコネクト112の構成を詳しく説明する。インターコネクト112は、データ転送長決定部115と、分割データ転送実行部116を含むモジュールである。インターコネクト112は、連続アクセスマスタと単発アクセスマスタからのデータ転送要求を受け付けるため、マスタごとにリクエストFIFO117~121を持つ。リクエストFIFO117~121の各々の段数分だけ、DRAM114の応答を待たずに、各マスタからのデータ転送要求を先行して受け付けることができる。
【0028】
リクエストFIFO117は、CPU106からのデータ転送要求を受け付けるCPUリクエストFIFOである。リクエストFIFO117には、リクエストFIFO117内での管理番号であるNoと、インターコネクト112内で他のマスタのデータ転送要求とを区別する一意のIDと、W/Rと、データ転送長が登録される。W/Rは、格納(Write)か読み出し(Read)かを示す。データ転送長は、1データ転送要求でのデータ転送長を示す。リクエストFIFO117では、C-2というIDで、読み出し(Read)、データ転送長が1のデータ転送要求が1つあることを示している。リクエストFIFO117は、2段なので、先行して2つのデータ転送要求を受け付けることができる。実際には、リクエストFIFO117には、DRAM114のアクセス先アドレスなどの他の情報も存在するが、ここでは省略する。
【0029】
同様に、リクエストFIFO118は、DMA108からのデータ転送要求を受け付けるためのリクエストFIFOであり、D1-2とD1-3というIDで、格納(Write)、データ転送長が256のデータ転送要求が2つあることを示している。リクエストFIFO118は、3段なので、先行して3つのデータ転送要求を受け付けることができる。
【0030】
リクエストFIFO119は、DMA109からのデータ転送要求を受け付けるためのリクエストFIFOであり、D2-1とD2-2というIDで、読み出し(Read)、データ転送長が256のデータ転送要求が2つあることを示している。
【0031】
リクエストFIFO120は、DMA110からのデータ転送要求を受け付けるためのリクエストFIFOであり、D3-1というIDで、格納(Write)、データ転送長が256のデータ転送要求が1つあることを示している。
【0032】
リクエストFIFO121は、DMA111からのデータ転送要求を受け付けるためのリクエストFIFOであり、データ転送要求がまだ無いことを示している。
【0033】
アービタ122は、連続アクセスマスタである4つのDMA108~111が発行するデータ転送要求の順番を調停し、その調停した順番でデータ転送要求を分割データ転送実行部116に出力する。アービタ122は、順繰りに発行順番を割り振ってゆくラウンドロビン方式のアービタである。アービタ122は、1データ転送要求ごとに、リクエストFIFO118~121を順繰りに回り、発行するデータ転送要求を決定し、決定したデータ転送要求をリクエストFIFO118~121から、取り出し、分割データ転送実行部116へ出力する。
【0034】
分割データ転送実行部116は、アービタ122から、調停された連続アクセスマスタからのデータ転送要求を受け取り、内部のリクエストFIFO123に格納する。分割データ転送実行部116は、リクエストFIFO123にデータ転送要求がある間は、アービタ125に対して、データ転送要求を出力する。分割データ転送実行部116は、リクエストFIFO123にデータ転送要求が無くなると、アービタ122から次のデータ転送要求を受け付ける。
【0035】
アービタ125は、分割データ転送実行部116からの連続アクセスマスタのデータ転送要求と、リクエストFIFO117からのデータ転送要求との間で、DRAM114へのデータ転送要求の発行順番を調停するアービタである。アービタ125は、アービタ122と同様に、順繰りに発行順番を割り振ってゆくラウンドロビン方式のアービタである。アービタ125は、アービタ125が決定した順番で、リクエストFIFO117もしくは分割データ転送実行部116からデータ転送要求を取り出し、リクエストFIFO126に格納する。
【0036】
リクエストFIFO126は、リクエストFIFO126に登録された順番で、メモリコントローラ113へのデータ転送要求を発行し、DRAM114へのアクセスを行う。DRAM114は、ダイナミックランダムアクセスメモリであり、データを記憶する。
【0037】
次に、データ転送長決定部115と、分割データ転送実行部116の説明を行う。データ転送長決定部115は、分割データ転送実行部116から取得リクエストを入力すると、DMA108~111が発行するデータ転送要求を分割するための最小データ転送長を決定し、その最小データ転送長を分割データ転送実行部116へ出力する。最小データ転送長は、残り単位時間情報と、リクエストFIFO118~121および123が持つデータ転送長を合計した総データ転送長と、データ転送長決定部115が保持するパラメータテーブル127の情報から決定される。
【0038】
次に、残り単位時間情報に関して説明する。DMA108~111の連続アクセスマスタが、間に合わせるべき単位時間は、画像データの1つの水平同期信号Hsyncの期間である。データ転送長決定部115は、内部にタイマを持ち、水平同期信号Hsync毎にタイマをクリアし、カウントを開始する。従って、データ転送長決定部115は、分割データ転送実行部116から要求を受けたタイミングでの1つの水平同期信号Hsyncに対する残り時間の割合を示す残り単位時間情報が分かる。例えば、データ転送長決定部115は、水平同期信号Hsyncと同じタイミングで、分割データ転送実行部116から要求を受けると、残り単位時間情報は、1つの水平同期信号Hsync分である1となる。データ転送長決定部115は、水平同期信号Hsyncの周期の半分が経過したタイミングで、分割データ転送実行部116から要求を受けると、残り単位時間情報は、0.5となる。残り単位時間情報は、単位時間に対する残り時間の割合である。単位時間は、1つの水平同期信号Hsyncの期間である。
【0039】
次に、総データ転送長に関して説明する。データ転送長決定部115は、分割データ転送実行部116から要求を受けたタイミングで、リクエストFIFO118~121および123に登録されているデータ転送長を取得し、合計することで、総データ転送長を得る。総データ転送長は、DMA108~111が発行し、DRAM114にアクセスされていないデータ転送要求の合計のデータ転送長である。
図1の場合、データ転送長決定部115は、分割データ転送実行部116から要求を受けたとすると、総データ転送長は、256+256+256+256+256+128の計1408となる。
【0040】
図2は、パラメータテーブル127の構成例を示す図である。パラメータテーブル127は、単位時間内、即ち、1つの水平走査信号Hsyncの期間で転送すべき総データ転送長と、それに対応し設定すべき最小データ転送長が、登録されたテーブルである。
図2のパラメータテーブル127では、単位時間内で転送すべき総データ転送長が、1024より小さい場合は、最長データ転送長を64とする。同様に、単位時間内で転送すべき総データ転送長が、1025より大きく2048より小さい場合は、最長データ転送長を128とする。単位時間内で転送すべき総データ転送長が、2049より大きい場合は、最長データ転送長を256とする。パラメータテーブル127の「単位時間内で転送すべき総データ転送長」は、事前に、最小データ転送長と1データ転送長のメモリアクセスを交互に発行した場合に、単位時間内で転送可能な総データ転送長を算出することで設定したパラメータである。
【0041】
データ転送長決定部115は、分割データ転送実行部116から取得リクエストを入力すると、残り単位時間情報と総データ転送長から、単位時間内で転送すべき総データ転送長を算出する。そして、データ転送長決定部115は、パラメータテーブル127を参照し、単位時間内で転送すべき総データ転送長を基に、最小データ転送長を決定する。例えば、データ転送長決定部115は、残り単位時間情報が0.8、総データ転送長が1408の場合、単位時間内で転送すべき総データ転送長が、1408÷0.8=1760と求め、最小データ転送長が、128と決定する。
【0042】
分割データ転送実行部116は、リクエストFIFO123とレスポンスFIFO124を内部に持つ。リクエストFIFO123は、アービタ122から送られてきた連続アクセスマスタのデータ転送要求を格納するFIFOである。分割データ転送実行部116は、データ転送要求をリクエストFIFO123に格納すると同時に、当該データ転送要求の応答用のFIFOであるレスポンスFIFO124にもデータ転送要求を格納する。その後、分割データ転送実行部116は、アービタ125に対して、データ転送要求を出力する。分割データ転送実行部116は、アービタ125からデータ転送が許可されると、データ転送長決定部115に最小データ転送長の取得リクエストを出力し、最小データ転送長を入力する。そして、分割データ転送実行部116は、分割部であり、その最小データ転送長の値に従って、リクエストFIFO123のデータ転送要求を複数のデータ転送要求に分割し、その分割された複数のデータ転送要求をアービタ125に出力する。これにより、分割データ転送実行部116は、DRAM114への分割したデータ転送要求を発行する。その後、分割データ転送実行部116は、リクエストFIFO123に格納したデータ転送要求が無くなるまで、アービタ125へデータ転送要求を出力する。
【0043】
例えば、分割データ転送実行部116は、リクエストFIFO123に格納されているデータ転送要求のデータ転送長が256で、最小データ転送長が128の場合、データ転送長128の転送に分割し、アービタ125に出力する。そして、分割データ転送実行部116は、リクエストFIFO123に格納されているデータ転送要求のデータ転送長を未転送のデータ転送長である128に更新する。次に、分割データ転送実行部116は、最小データ転送長が64の場合、データ転送長64の転送に分割し、アービタ125に送信し、リクエストFIFO123に格納されているデータ転送要求のデータ転送長を未転送のデータ転送長である64に更新する。次に、分割データ転送実行部116は、最小データ転送長が256の場合、データ転送長の64より大きいため、データ転送長64の転送をアービタ125に出力し、リクエストFIFO123は空になる。分割データ転送実行部116は、リクエストFIFO123のデータ転送長が、最小データ転送長より小さい場合は、リクエストFIFO123のデータ転送長分のデータ転送要求をアービタ125に出力する。
【0044】
分割データ転送実行部116は、リクエストFIFO123に格納したデータ転送要求が無くなると、アービタ122から次のデータ転送要求を受け取る。また、分割データ転送実行部116は、データ転送要求が格納の場合、格納完了のレスポンスを、レスポンスFIFO124に格納されているデータ転送要求に従って応答する。また、分割データ転送実行部116は、データ転送要求が読み出しの場合、読み出したデータをレスポンスとして、発行元の連続アクセスマスタに返す際、レスポンスFIFO124に格納されているデータ転送要求に従って応答する。そして、分割データ転送実行部116は、応答が完了すると、レスポンスFIFO124から当該データ転送要求を削除する。
【0045】
図1では、分割データ転送実行部116は、レスポンスFIFO124から、256のデータ転送長の格納(Write)データ転送を受け付けている。また、リクエストFIFO126には、256のデータ転送長の格納(Write)データ転送を、128のデータ転送長に分割したデータ転送がある。256のデータ転送長の格納(Write)データ転送の残りの128のデータ転送長のデータ転送が、リクエストFIFO123にあり、アービタ125からの発行許可を待っている状態である。
【0046】
以上が、データ処理システム100の構成である。次に、時間の流れを用いたデータ処理システム100の動作を説明する。DMA108~111の連続アクセスマスタとCPU106の単発アクセスマスタのメモリアクセスパターンを説明するに先立ち、連続アクセスマスタのアクセスパターンを説明する。
【0047】
図3は、データ処理システム100のメモリ帯域と、画像処理モジュール101~103のDMA108~111の連続アクセスマスタのメモリアクセスパターンとの関係を説明する図である。横軸は時間を示し、縦軸はメモリ帯域を示す。
【0048】
垂直同期信号301と302は、ディスプレイ表示おける垂直同期信号Vsyncを示す。垂直同期信号Vsync間に、水平同期信号Hsyncが14回入っている。水平同期信号303がその水平同期信号Hsyncの一部を示す。各水平同期信号Hsyncの間の期間を
図3で示すように、H0、H1、・・、H14とする。実際には、FullHD(1920×1080画素)の場合、水平同期信号Hsyncは、1125回入るが、ここでは説明を容易にするために、水平同期信号Hsyncの数を少なくしている。横軸304は、時間の流れを示しており、期間H0、H1、H2という順に時間が進む。垂直同期信号301と302の間隔は、毎秒60フレームのレートで表示するディスプレイでは、約16msである。メモリ帯域の理論値は、DRAM114のデータバスの幅と周波数で求められ、有効な実行値は、一般的に理論値の約70%である。
【0049】
縦軸は、各垂直同期信号301および302間での連続アクセスマスタのDMA108~111のメモリ帯域使用量を示している。メモリ帯域量305は、各垂直同期信号Hsyncで使用できるDRAM114の有効に使用できるメモリ帯域量を示しており、また、連続アクセスマスタが、間に合わせるべき単位時間で使用できるメモリ帯域量を示している。領域306は、DMA108が必要とするメモリ帯域の量と、データ転送を行う水平同期信号Hsyncのタイミングを示している。DMA108は、期間H1からH9のタイミングで、領域306の縦軸で示す量のメモリ帯域を必要とすることを示している。
【0050】
同様に、領域307は、DMA109が必要とするメモリ帯域の量とタイミングを示している。領域308は、DMA110が必要とするメモリ帯域の量とタイミングを示している。領域309は、DMA111が必要とするメモリ帯域の量とタイミングを示している。
【0051】
図3では、垂直同期信号Vsyncの後、画像処理モジュール101、画像処理モジュール102、画像処理モジュール103の順で、動作を始め、また、動作が完了することを示している。また、期間H0のタイミングでは、CPU106は、メモリ帯域量305を使用することができる。期間H1のタイミングでは、CPU106は、メモリ帯域量310を使用することができる。期間H6のタイミングでは、CPU106は、メモリ帯域量311を使用することができる。
【0052】
次に、DMA108~111の連続アクセスマスタとCPU106の単発アクセスマスタのメモリアクセスパターンを説明する。
図4を用いて、
図3における期間H1のタイミングでのメモリアクセスパターンを説明する。
【0053】
横軸401は、時間の流れる方向を示している。水平同期信号Hsyncのタイミング402で、連続アクセスマスタであるDMA108から256のデータ転送長のデータ転送要求と、単発アクセスマスタであるCPU106からUIレンダリングのためのアクセスが断続的に発行されているケースである。
【0054】
タイミング402で、DMA108のみがデータ転送要求を発行しているため、アービタ122において、DMA108のデータ転送要求が選ばれ、分割データ転送実行部116のリクエストFIFO123に格納される。アービタ125の調停により、分割データ転送実行部116からのデータ転送要求が許可されると、データ転送長決定部115に最小データ転送長を要求する。
図3の期間H1のタイミングでは、他の連続アクセスマスタがデータ転送を要求していないため、
図2の単位時間内で転送すべき総データ転送長は少なく、最小データ転送長は、64となる。従って、タイミング403では、最小データ転送長は、64となり、領域407で示すように、連続アクセスマスタのDMA108として64のデータ転送長でのデータ転送を発行する。
【0055】
次に、領域408で示すように、単発アクセスマスタのCPU106のデータ転送長が1のデータ転送が発生する。その後も、タイミング404、405および406では、データ転送長決定部115に最小データ転送長を要求し、他の連続アセスマスタがデータ転送を要求していないため、
図2の単位時間内で転送すべき総データ転送長は少なく、最小データ転送長は、64となる。領域409、411および413では、連続アクセスマスタのDMA108として64のデータ転送長でのデータ転送を発行し、その間に、領域410および412で示すように、単発アクセスマスタのCPU106のデータ転送長が1のデータ転送が発生する。
【0056】
このように、分割データ転送実行部116は、DMA108~111が発行するデータ転送要求を複数のデータ転送要求に分割し、その分割された複数のデータ転送要求をアービタ125に出力する。アービタ125は、分割データ転送実行部116が出力する複数のデータ転送要求の出力の間に、CPU106が発行するデータ転送要求を出力する。これにより、CPU106の単発アクセスマスタのデータ転送のレイテンシを減らすことができる。
【0057】
また、領域414および415では、CPU106の単発アクセスマスタが、連続してデータ転送を行える場合でも、レンダリング処理は、メモリアクセスの間に、レンダリングの実行処理が入るため、DRAM114へのデータ転送要求間にギャップが発生する。従って、CPU106は、メモリアクセスを占有できる場合でも、メモリ帯域を効率的に使うことができない。しかしながら、領域409、411および413で示すように、途中にDMA108の連続アクセスマスタのデータ転送が入ることで、CPU106の単発アクセスマスタのギャップを隠蔽することができ、メモリ帯域の効率的な使用ができる。
【0058】
図5は、
図3における期間H6のタイミングでのメモリアクセスパターンを説明する図である。横軸501は、時間の流れる方向を示している。水平同期信号Hsyncのタイミング502で、連続アクセスマスタのDMA108~111の各々から256のデータ転送長のデータ転送要求と、単発アクセスマスタのCPU106からUIレンダリングのためのアクセスが断続的に発行されている。
【0059】
単位時間内で転送すべき総データ転送長が多いため、タイミング503、504および505での最小データ転送長は、256となる。領域508、509および510で示すように、連続アクセスマスタのDMA108~110からのデータ転送は、分割なしで行われる。しかし、タイミング506および507では、単位時間内で転送すべき総データ転送長が減り、残り単位時間に対して余裕が出たため、最小データ転送長は、128となっている。従って、領域511および512で示すように、128のデータ転送長のテータ転送に分割され、単発アクセスマスタのCPU106のアクセスが入ることで、CPU106のレイテンシの削減に寄与している。
【0060】
図6は、
図3における期間H6のタイミングでのメモリアクセスパターンの別の例を説明する図である。横軸601は、時間の流れる方向を示している。水平同期信号Hsyncのタイミング602で、連続アクセスマスタのDMA108から256のデータ転送長のデータ転送要求と、単発アクセスマスタのCPU106からUIレンダリングのためのアクセスが断続的に発行される。タイミング603で、連続アクセスマスタのDMA109~111の各々から256のデータ転送長のデータ転送要求が発行される。
【0061】
タイミング604では、連続アクセスマスタでは、DMA108のみが、データ転送を要求しているため、単位時間内で転送すべき総データ転送長は少なく、最小データ転送長は、64となる。
図4のタイミング403と同様である。従って、タイミング604で示すように、最小データ転送長は64となり、領域609で示すように、連続アクセスマスタのDMA108として64のデータ転送長でのデータ転送を発行する。タイミング605では、単位時間内で転送すべき総データ転送長が増えているため、最小データ転送長は、256となり、領域610で示すように、発行済みの64のデータ転送の残り192のデータ転送長でのデータ転送を発行する。その後、タイミング606、607および608で示すように、最小データ転送長は、256となり、領域611、612および613で示すように、連続アクセスマスタのDMA109~111からは、256のデータ転送長でのデータ転送となる。
【0062】
領域609と610の分割した連続アクセスマスタのデータ転送間に、単発アクセスマスタのCPU106のデータ転送を入れることができ、単発アクセスマスタのCPU106のデータ転送のレイテンシの削減に寄与している。
【0063】
図7は、データ転送長決定部115の制御方法を説明するためのフローチャートである。ステップS701では、データ転送長決定部115は、スタート後、残り単位時間情報を取得するための水平同期信号Hsyncのタイマをスタートし、水平同期信号Hsync毎にタイマをリセットする。
【0064】
ステップS702では、データ転送長決定部115は、分割データ転送実行部116からの最小データ転送長の取得リクエストを待つ。データ転送長決定部115は、最小データ転送長の取得リクエストを入力すると、ステップS703へ進む。
【0065】
ステップS703では、データ転送長決定部115は、リクエストFIFO118~121および123に格納されている全データ転送リクエストのデータ転送長を取得し、その値を合計し、総データ転送長を算出し、ステップS704へ進む。
【0066】
ステップS704では、データ転送長決定部115は、総データ転送長と残り時間情報とパラメータテーブル127から、最小データ転送長を決定し、分割データ転送実行部116へ出力し、ステップS702へ戻る。
【0067】
図8は、分割データ転送実行部116の制御方法を説明するためのフローチャートである。ステップS801では、分割データ転送実行部116は、アービタ122で許可されたDMAのデータ転送要求を受け取り、リクエストFIFO123に格納する。
【0068】
ステップS802では、分割データ転送実行部116は、ステップS801で受け取ったデータ転送要求を、レスポンスFIFO124に格納する。
【0069】
ステップS803では、分割データ転送実行部116は、アービタ125にデータ転送の要求を出力する。
【0070】
ステップS804では、分割データ転送実行部116は、アービタ125からデータ転送の許可を待ち、許可が得られると、ステップS805に進む。
【0071】
ステップS805では、分割データ転送実行部116は、データ転送長決定部115へ最小データ転送長の取得リクエストを出力し、最小データ転送長を入力すると、ステップS806に進む。
【0072】
ステップS806では、分割データ転送実行部116は、最小データ転送長の値に従って、リクエストFIFO123に格納されたデータ転送要求を分割し、データ転送要求を発行する。
【0073】
ステップS807では、分割データ転送実行部116は、リクエストFIFO123が空か否かをチェックする。分割データ転送実行部116は、リクエストFIFO123が空の場合には、ステップS801に戻り、次のデータ転送要求を取得する。分割データ転送実行部116は、リクエストFIFO123が空で無い場合には、ステップS803に戻り、アービタ125にデータ転送の要求を出力する。
【0074】
分割データ転送実行部116は、直近の総データ転送長に基づく最小データ転送長でデータ転送要求を発行すべく、ステップS805のアービタ125からデータ転送の許可を受けた後に、データ転送長決定部115へ最小データ転送長の取得リクエストを出力する。なお、分割データ転送実行部116は、ステップS802とS803の間で、最小データ転送長の取得リクエストを出力し、最小データ転送長を取得の上、アービタ125にデータ転送の要求を出力してもよい。
【0075】
以上のように、データ処理システム100は、データ処理システム100のメモリ帯域の使用状況に応じて、画像処理モジュール101~103からの連続したデータ転送の分割の大きさを変更することができる。そして、データ処理システム100は、メモリ帯域が破たんしない範囲で、CPU106からのメモリアクセスを間に入れることができる。従って、データ処理システム100は、CPU106からのメモリアクセスのレイテンシを減らすことができ、ユーザに対して、レスポンスの良いUIグラフィック表示を行う表示パネル104を提供することができる。
【0076】
また、データ処理システム100は、データ処理システム100のメモリ帯域が破たんしない範囲で、CPU106からDRAM114へのアクセス権を与える間隔を短くし、メモリアクセスレイテンシを向上させることができる。
【0077】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0078】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0079】
100:データ処理システム、106:CPU、108~111:DMA、114:DRAM、115:データ転送長決定部、116:分割データ転送実行部