撮像装置及びアクセス制御方法
【課題】動画処理を優先しつつ、動画処理の間に静止画処理を適切に処理させることで、効率の良いメモリアクセス制御を行うこと。
【解決手段】動画撮影中に静止画を撮影可能な撮像装置であって、動画処理を含むリアルタイム性が要求される処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録する記録部と、静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積する蓄積部と、記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積する累積部と、累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、蓄積部に蓄積された第2要求を実行する実行部と、を備える。
【解決手段】動画撮影中に静止画を撮影可能な撮像装置であって、動画処理を含むリアルタイム性が要求される処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録する記録部と、静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積する蓄積部と、記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積する累積部と、累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、蓄積部に蓄積された第2要求を実行する実行部と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリへのアクセス制御を行う撮像装置及びアクセス制御方法に関する。
【背景技術】
【0002】
デジタルカメラや、カムコーダなどを含む撮像装置では、動画像の撮影処理中に、動画処理を継続したまま静止画像を撮影する機能が実現されている。
【0003】
一般に静止画と動画とでは撮影する解像度が大きく異なる。静止画は10M(メガ)〜24Mピクセル、動画はHDTV(High Definition Television)で3Mピクセル程度である。このような動画処理、静止画処理は、扱う情報が膨大であるため、例えば外部のSDRAM(Synchronous Dynamic Random Access Memory)をバッファメモリとして利用する。
【0004】
動画処理、静止画処理を含む映像処理は、大きく2種類の性質のデータトランザクションが混在する。
【0005】
ベストエフォート型の処理は、SDRAMのデータトランザクション量として、ほぼ定型の処理パターンとなるが、出来るだけ高速に外部のSDRAMを使い切って最短で処理結果を得る静止画を生成するための画像処理である。
【0006】
リアルタイム型の処理は、SDRAMの帯域について一定量を確保しつつ、入力データによって刻々と変動するデータトランザクションである。また、リアルタイム型の処理は、1/30sなどの等間隔のフレームレート単位に、ワースト時でも遅延なく、一定の間隔で処理を終える、動画処理に関連する画像処理である。
【0007】
動画処理は、フレームやマクロブロックなどの単位毎にさまざまな圧縮のための方式を変えつつ、もっとも圧縮できるツールセットを適応的に選択し、圧縮、展開を行う。このため、ある瞬間のSDRAMの帯域の消費は、画像やGOP構造やマクロブロックタイプなどの所定単位の圧縮手法等によって大きく変動し、さらに、映像のビットレートや画質制御によっても大きく変動する。
【0008】
ここで、動画の処理中に、静止画の処理を並行して行うためのメモリアクセスを制御する技術がある。例えば、動画撮影中に静止画を同時撮影する際、動画の処理フレーム、例えばBピクチャに応じて、静止画の処理タイミングを制御する技術がある。
【0009】
また、リアルタイム処理と待ち時間クリティカル処理を行い際、リアルタイム処理の所定の時間窓における残余時間に応じて、待ち時間クリティカル処理を許可する技術などがある。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2010−34765号公報
【特許文献2】特表2008−515073号公報
【特許文献3】特開2009−15832号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
ここで、動画処理のメモリアクセスは、処理中の画像データによって適応的に変化するため、静止画処理のメモリアクセスによって、動画処理のメモリアクセスに遅延が生じたり、局所的な帯域不足が生じたりする。この問題に対して、従来技術におけるメモリへのアクセス制御では、効率よく制御することができていなかった。
【0012】
例えば、動画の処理フレームに応じて静止画処理のタイミングを制御する場合、静止画処理を行うときの動画の処理フレーム、例えばPピクチャであっても、メモリアクセス量が多い場合があり、リアルタイム性が損なわれる可能性がある。
【0013】
また、リアルタイム処理の残余時間については、画像データによって処理量が適応的に変化するため所定の時間窓を適切に設定することは困難である。
【0014】
そこで、開示の技術は、動画処理を優先しつつ、動画処理の間に静止画処理を適切に処理させることで、効率の良いメモリアクセス制御を行うことができる撮像装置及びアクセス制御方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
開示の一態様における撮像装置は、動画撮影中に静止画を撮影可能な撮像装置であって、動画処理を含むリアルタイム性が要求される処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録する記録部と、静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積する蓄積部と、前記記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積する累積部と、累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、前記蓄積部に蓄積された第2要求を実行する実行部と、を備える。
【発明の効果】
【0016】
開示の技術によれば、動画処理を優先しつつ、動画処理の間に静止画処理を適切に処理させることで、効率の良いメモリアクセス制御を行うことができる。
【図面の簡単な説明】
【0017】
【図1】実施例における撮像装置の構成の一例を示すブロック図。
【図2】実施例におけるバス制御部の構成の一例を示すブロック図。
【図3】アクセス判別部(その1)の一例を説明するための図。
【図4】アクセス判別部(その2)の一例を説明するための図。
【図5】アクセス種別の判別処理(その1)の一例を説明するための図。
【図6】アクセス種別の判別処理(その2)の一例を説明するための図。
【図7】アクセス種別の判別処理(その3)の一例を説明するための図。
【図8】同期ポイントにより決定される所定領域を説明するための図。
【図9】累積記録データの更新を説明するための図。
【図10】アクセスパターンの学習対象を説明するための図。
【図11】バス権付与部の構成の一例を示す図。
【図12】実施例と従来例との比較を説明するための図。
【図13】1つのメモリアクセス要求に対する撮像装置のアクセス制御処理の一例を示すフローチャート。
【図14】ベストエフォート系処理のアクセス実行処理の一例を示すフローチャート。
【発明を実施するための形態】
【0018】
まず、静止画の処理と動画の処理は、同じ演算内容であっても、性質が異なる場合がある。例えばセンサデータから輝度、色差を有する画像を得るデモザイク処理において、静止画では高品質、動画では簡易処理で行うケースがある。また、ノイズリダクションや各種補正処理についても、その有無やその演算処理の内容、解像度などに動画と静止画とで差をつける事が一般的である。
【0019】
そこで、以下に示す実施例では、ベストエフォート系処理と、リアルタイム系処理とを次のように定義する。
【0020】
(ベストエフォート系処理)
ベストエフォート系処理は、静止画処理に関する処理であり、例えば、主に静止画処理の中で、動画撮影と共通で行うリアルタイム性が必要な処理以外の静止画を生成するための処理である。
【0021】
ベストエフォート系処理は、例えば高品質なノイズ除去、ホワイトバランス検出、欠陥画素補正処理、デモザイク処理、シャープネス処理、手振れ補正処理、静止画符号化処理などを含む。
【0022】
(リアルタイム系処理)
リアルタイム系処理は、リアルタイム性が要求される処理であり、例えば動画処理に関する処理である。リアルタイム系処理は、例えば、イメージセンサからのキャプチャ処理、簡易的なノイズ除去などの静止画処理と同様の処理、動画圧縮処理、電子ビューファインダーなどの処理を含む。
【0023】
なお、MPEG(Moving Picture Expert Group)などの動画符号化処理においては、その演算に相関があるため、その演算の間に、等間隔にある程度規則正しいリアルタイム系処理のメモリアクセスが発生するという特徴がある。
【0024】
しかしながら、このメモリアクセスは、各マクロブロックの符号化タイプによって、様々なアクセス傾向や転送量になる。また、マクロブロックタイプによっては、ある程度似たアクセス傾向となるが、どのようなアクセス傾向となるかは確率的であり、マクロブロックの出現確率や回路構成によっても異なる。
【0025】
そこで、以下で説明する実施例では、過去のリアルタイム系処理のアクセス傾向を学習し、学習結果に基づいてベストエフォート系処理のメモリアクセスを適切に実行する。
【0026】
以下、その実施例について、添付図面を参照しながら説明する。
【0027】
[実施例]
<構成>
図1は、実施例における撮像装置1の構成の一例を示すブロック図である。撮像装置1は、例えばデジタルカメラ、デジタルビデオカメラ、又はカムコーダである。図1に示す撮像装置1は、イメージセンサ10、キャプチャ処理部20、メモリ25、静止画向け処理部30、動画向け処理部40、電子ビューファインダー用映像処理部50、電子ビューファインダー51、バス制御部60、メモリ70、DMAエンジン81、制御CPU(Central Processing Unit)82、メディアRW83、記録メディア84を有する。上記各部の一部は、半導体集積回路により実装される。
【0028】
なお、図1に示す太線矢印は、リアルタイム処理が必要なパスである。点線矢印は、ベストエフォート処理のパスである。細線矢印は、その他のローカルパスであり、バス制御部60により制御されるバスには接続されていない。
【0029】
イメージセンサ10は、レンズから入射した光を取り込み、電気信号に変換する半導体素子である。キャプチャ処理部20は、イメージセンサ10から取得した電気信号に基づき、静止画用データ、動画用データのキャプチャ処理を行う。
【0030】
キャプチャ処理部20は、リアルタイム処理が必要な静止画用データをメモリ70にバッファリングするようバス制御部60に要求する。例えば、キャプチャ処理部20からのメモリ70へのアクセス要求は、リアルタイム系処理のメモリアクセス要求である。また、キャプチャ処理部20は、動画用データをメモリ25に格納する。
【0031】
メモリ25は、例えば、SRAM(Static Random Access Memory)であり、動画用データを格納する。
【0032】
静止画向け処理部30は、メモリ70に画像データをバッファリングしながら、静止画用の処理を行う。このとき、静止画向け処理部30は、バス制御部60に対してメモリ70へのメモリアクセス要求を行う。
【0033】
静止画向け処理部30は、ノイズ除去、ホワイトバランス検出部31、欠陥画素補正、デモザイク処理部32、ノイズ除去、シャープネス処理、手振れ補正処理部33、静止画符号化処理、メディア書き込み部34を有する。
【0034】
ノイズ除去、ホワイトバランス検出部31は、画像データからノイズを除去し、RGBの3原色のバランスをとるホワイトバランス処理を行う。欠陥画素補正、デモザイク処理部32は、欠陥画素を補正し、RGBのセンサデータから輝度、色差の画像データに変換する。
【0035】
ノイズ除去、シャープネス処理、手振れ補正処理部33は、画像データからノイズを除去し、輪郭を強調し、手振れ補正処理を行う。静止画符号化処理、メディア書き込み部34は、静止画の符号化標準技術であるJPEG(Joint Photographic Experts Group)などの符号化処理を行い、符号化した静止画データを、メディアRW83を用いて記録メディア84に書き込む。
【0036】
例えば、静止画向け処理部30によるメモリ70へのメモリアクセス要求は、ベストエフォート系処理のメモリアクセス要求である。
【0037】
なお、静止画向け処理部30の各部31〜34は、それぞれ細分化されたり、複数の部をまとめて処理されたりしてもよい。また、静止画向け処理部30の各部31〜33は、後述する動画向け処理部40の各部41〜43よりも高品質の処理を行う。各部31〜33の処理は、リアルタイム性が要求されないからである。
【0038】
動画向け処理部40は、メモリ70に画像データをバッファリングしながら、動画用の処理を行う。このとき、動画向け処理部40は、バス制御部60に対してメモリ70へのメモリアクセス要求を行う。
【0039】
動画向け処理部40は、ノイズ除去、ホワイトバランス検出部41、欠陥画素補正、デモザイク処理部42、ノイズ除去、シャープネス処理、手振れ補正処理部43、動画符号化処理、メディア書き込み部44を有する。
【0040】
上記の各部41〜43は、静止画向け処理部30の各部31〜33とそれぞれ同様の処理を簡易的に行う。各部41〜43の処理は、リアルタイム性が要求されるからである。
【0041】
動画符号化処理、メディア書き込み部44は、動画の符号化標準技術であるMPEGなどの符号化処理を行い、符号化した動画データを、メディアRW83を用いて記録メディア84に書き込む。
【0042】
動画向け処理部40によるメモリ70へのメモリアクセス要求は、リアルタイム系処理のメモリアクセス要求である。なお、動画向け処理部40の各部41〜44は、それぞれ細分化されたり、複数の部をまとめて処理されたりしてもよい。
【0043】
電子ビューファインダー用映像処理部50は、OSD(オンスクリーンディスプレイ)機能を有し、画像データを電子ビューファインダー51に表示するための映像処理を行う。例えば、電子ビューファインダー用映像処理部50からのメモリ70へのメモリアクセス要求は、リアルタイム系処理のメモリアクセス要求である。
【0044】
電子ビューファインダー51は、電子ビューファインダー用映像処理部50により処理された画像データを表示する。電子ビューファインダー51は、液晶ディスプレイなどでもよい。
【0045】
バス制御部60は、アクセス元からのメモリ70へのメモリアクセス要求に対し、リアルタイム系処理のメモリアクセス要求を優先しつつ、適切なタイミングでベストエフォート系処理のメモリアクセス要求を実行するようアクセス制御する。ここで、アクセス元とは、各部20、31〜34、41〜44、50をいう。なお、バス制御部60の詳細については、図2を用いて後述する。
【0046】
メモリ70は、例えばSDRAMなどのメモリであり、各部で処理されたデータを一時的に格納する。メモリ70は、各部でシェアして使用される。
【0047】
DMA(Direct Memory Access)エンジン81は、バスに直結され、このバスを操作してDMAを実現する。制御CPU82は、撮像装置1のシステム制御を行う。
【0048】
メディアRW83は、記録メディア84に対して、データのRead/Writeを行う。記録メディア84は、例えばSDカードなどの記録メディアであり、静止画用データや動画用データを記録する。
【0049】
<バス制御部>
次に、実施例におけるバス制御部60について説明する。図2は、実施例におけるバス制御部60の構成の一例を示すブロック図である。図2に示すバス制御部60は、アクセス判別部100、固定/臨時データ検出部110、同期ポイント抽出部111、Picture処理終了検出部112、粗密記録部120、バス権付与部130、MUX(マルチプレクサ)140、メモリコントローラ150を有する。
【0050】
アクセス判別部100は、静止画系システムからのメモリアクセス要求、動画系システムからのメモリアクセス要求を受ける。静止画系システムは、例えば静止画向け処理部30に対応し、動画系システムは、例えば動画向け処理部40などに対応する。
【0051】
アクセス判別部100は、取得したアクセス要求に対し、リアルタイム系処理のメモリアクセス要求か、ベストエフォート系処理のメモリアクセス要求かを判別する。
【0052】
アクセス判別部100は、例えば、アクセス元に基づき、メモリアクセス要求にメモリアクセスの種別を示すID(IDentification)を付加する。アクセス判別部100は、ID毎にリアルタイム系処理か、ベストエフォート系処理かが設定されたテーブルを参照して、メモリアクセスの種別を判別してもよい。なお、IDは、アクセス元が付与するようにしてもよい。
【0053】
また、アクセス判別部100は、メモリアクセス要求のRead/Write種別と、アドレス範囲とからアクセスの種別が設定されたテーブルを参照して、メモリアクセスの種別を判別してもよい。
【0054】
また、アクセス判別部100は、リアルタイム系処理について、定常データトランザクションか、臨時データトランザクションか、固定スロットかを判別してもよい。
【0055】
定常データトランザクション(単に定常とも呼ぶ)とは、後述する粗密記録部120で学習の対象となるトランザクションである。臨時データトランザクション(単に臨時とも呼ぶ)は、例えば動画系のビットストリームをWriteする要求のトランザクションである。動画系のビットストリームは、所定量溜まった場合にWrite要求されるものであり、所定量溜まる時間は画像データの処理量に依存して一定ではない。固定スロット(単に固定とも呼ぶ)は、例えば表示系のリアルタイムアクセスのトランザクションである。
【0056】
なお、アクセス判別部100は、アクセス元がそれぞれの属性を明示的に示す場合には無くてもよい。属性とは、リアルタイム系か、ベストエフォート系かを表すものである。また、属性は、リアルタイム系の定常か、臨時か、固定かを表してもよい。
【0057】
固定/臨時データ検出部110は、アクセス判別部100によりリアルタイム系処理の中から固定と臨時を検出し、検出したメモリアクセス要求を粗密記録部120、バス権付与部130に通知する。
【0058】
同期ポイント抽出部111は、メモリアクセス要求されているデータから、同期ポイントを抽出する。この同期ポイントは、実施例におけるアクセス制御のシステムをリアルタイム系処理に同期させるためのポイントである。例えば、MB(マクロブロック)、MBLine、Picture単位で同期ポイントを抽出する。
【0059】
同期ポイント抽出部111は、例えば、画像データの特定の領域に対するアクセスにより、同期ポイントを抽出する。また、同期ポイント抽出部111は、動画処理回路の内部信号を読み取ることができる場合、内部信号から同期信号を直接取得するようにしてもよい。同期ポイント抽出部111は、抽出した同期ポイントを粗密記録部120に通知する。
【0060】
Picture処理終了検出部112は、ピクチャの処理終了を、抽出した同期ポイントの数などにより検出する。Picture処理終了検出部112は、検出したピクチャの処理終了を、粗密記録部120に通知する。
【0061】
粗密記録部120は、記録部121、累積部122を有し、メモリアクセスを実行する際、同期ポイント間のトランザクションを記録し、複数の同期ポイント間のアクセスパターンを学習する。また、粗密記録部120は、Picture処理終了検出部112からピクチャの処理終了を通知されることで、ピクチャの最後を判断することができる。
【0062】
記録部121は、リアルタイム系処理のメモリアクセスに対し、処理対象のピクチャの複数の同期ポイント間における区間毎のトランザクションを記録する。記録部121は、例えば、区間毎にデータバスの占有割合を記録する。1区間は、例えば10サイクルであり、同期ポイント間は、例えば300〜1200サイクルである。記録部121により記録される複数の同期ポイント間における区間毎のトランザクションは、記録データとも呼ぶ。
【0063】
なお、記録部121は、固定/臨時データ検出部110により検出された固定、臨時のメモリアクセスについては、トランザクションの記録を行わないようにしてもよい。固定、臨時のメモリアクセスは、アクセスパターンの学習にふさわしくないからである。
【0064】
累積部122は、過去にアクセスした複数の同期ポイント間における区間毎のトランザクションを累積し、アクセスパターンを学習する。累積された複数の同期ポイント間における区間毎のトランザクションは、累積記録データとも呼ぶ。
【0065】
なお、累積部122は、例えばI、P、Bのピクチャタイプ毎に、メモリのアクセスパターンの学習を行ってもよい。累積記録データを更新することは、アクセスパターンの学習とも呼ぶ。累積部122は、適切に学習を行うため、スケーリング部123、算出部124、更新部125を有する。
【0066】
スケーリング部123は、記録部121により記録された記録データを、累積記録データの時間軸に合わせるため、スケーリングを行う。
【0067】
スケーリングを行うのは、同期ポイント間の区間数が動画処理の処理量に依存して変動するため、累積された累積記録データを基準として、アクセスパターンを学習する必要があるからである。
【0068】
算出部124は、スケーリング後の記録データと、累積記録データとの区間毎のトランザクションの類似度を算出する。具体的には、算出部124は、データバスの占有割合の類似度を求める。類似度は、例えば、区間毎にトランザクションのSAD(Sum of Absolute Differences)である。算出部124は、算出した類似度を更新部125に出力する。
【0069】
更新部125は、累積記録データを類似度に応じてIIR(Infinite Impulse
Response)的に更新する。更新部125は、例えば次の式(1)により区間毎のトランザクションを更新する。
v(t)=(1−α)×v(t)+α×c(t) ・・・式(1)
α:係数
v(t):累積部122に累積されているトランザクション
c(t):記録部121に記録されたトランザクション
なお、αは、SADに応じて変更される。例えば、SADが閾値以下の場合、αは、例えば0.2であり、SADが閾値より大きい場合、αは、例えば0.05〜0.1のいずれかの値である。
【0070】
これにより、累積部122では、より典型的な同期ポイント間のアクセスパターンを得ることができる。よって、累積部122で学習されたアクセスパターンを参照すれば、メモリアクセスの空き時間を予測することができるようになる。
【0071】
粗密記録部120は、予測したメモリアクセスの空き時間に、ベストエフォート系処理のメモリアクセス要求を実行させるための許可信号を、バス権付与部130に出力する。
【0072】
バス権付与部130は、ベストエフォート系処理のメモリアクセス要求を少なくとも1つ以上蓄積し、累積部122で学習されたアクセスパターンの空き時間に、蓄積しているメモリアクセス要求にバスの使用権を付与して実行する。バス権付与部130は、例えば、粗密記録部120から取得する許可信号がONの時に、ベストエフォート系処理のメモリアクセス要求を実行する。
【0073】
MUX140は、ベストエフォート系処理のメモリアクセス要求と、リアルタイム系処理のメモリアクセス要求とを入力し、それぞれのメモリアクセス要求をメモリコントローラ150に出力する。
【0074】
メモリコントローラ150は、取得したメモリアクセス要求に対して、メモリ70を制御する。
【0075】
以上の構成を有することで、リアルタイム系処理の過去のメモリアクセスからアクセスパターンを学習し、学習の結果に基づいて推定したメモリアクセスの空き時間に、ベストエフォート系処理のメモリアクセスを実行することができる。
【0076】
<各処理の概要>
次に、実施例のアクセス制御に関する各処理の概要について説明する。
【0077】
(アクセス判別処理)
図3は、アクセス判別部100(その1)の一例を説明するための図である。図3に示す例では、アクセス判別部100は、複数のアクセス元からメモリアクセス要求を受ける。アクセス判別部100は、メモリアクセス要求をMUXer(マルチプレクサ)から受ける場合もある。
【0078】
このような場合、アクセス判別部100は、後述するテーブルを参照して、メモリアクセス要求に対し、リアルタイム系かベストエフォート系かを判別する。アクセス判別部100は、リアルタイム系をさらに、定常、臨時、固定の3種類に分けて判別してもよい。
【0079】
アクセス判別部100は、判別したメモリアクセス要求を、判別した種類に応じて後段の処理に出力する。
【0080】
図4は、アクセス判別部100(その2)の一例を説明するための図である。図4に示す例では、ベストエフォート系と、リアルタイム系とでバスが分離されている例である。この場合、アクセス判別部100は、複数のアクセス元から取得したリアルタイム系のメモリアクセスに対し、後述するテーブルを参照して、定常、臨時、固定のいずれかに判別する。
【0081】
なお、図4に示す例で、定常、臨時、固定を判別しない場合、又は定常、臨時、固定でバスが分離されている場合には、アクセス判別部100は必要ない。アクセス判別部100は、リアルタイム系かベストエフォート系かが設定されたテーブルを有してもよい。
【0082】
次に、アクセス判別部100がテーブルを用いてアクセス種別を判別する具体例について説明する。
【0083】
図5は、アクセス種別の判別処理(その1)の一例を説明するための図である。図5に示す例では、アクセス判別部100は、コンパレータa1〜an、プライオリティエンコーダPENC、テーブル参照部RE、選択部SLを有する。
【0084】
コンパレータa1は、リクエストアドレスと比較するためのアクセス開始位置を示すアドレスs1とリクエストアドレスとを比較し、比較結果を出力する。
【0085】
コンパレータa2,...,anは、リクエストアドレスと比較するためのそれぞれのアドレスs2,...,snと、リクエストアドレスとを比較し、比較結果を出力する。
【0086】
プライオリティエンコーダPENCは、各コンパレータa1〜anから比較結果を取得し、設定された優先順に基づいてテーブルアドレスを出力する。
【0087】
テーブル参照部REは、取得したテーブルアドレスに記憶されているRead(リード)時のアクセス種別及びWrite(ライト)時のアクセス種別をテーブルTbから取得する。テーブルTbには、テーブルアドレス毎に、リード時のアクセス種別及びライト時のアクセス種別が記憶されている。
【0088】
アクセス種別は、リアルタイム系又はベストエフォート系である。アクセス種別は、リアルタイム系について、さらに定常、臨時、固定に細分化してもよい。
【0089】
選択部SLは、リード時のアクセス種別及びライト時のアクセス種別を取得し、リードかライトかの種別をメモリアクセス要求から取得すると、メモリアクセス要求に対応するアクセス種別を選択し、出力する。
【0090】
図6は、アクセス種別の判別処理(その2)の一例を説明するための図である。図6に示す例では、アクセス判別部100は、コンパレータb1〜bn、プライオリティエンコーダPENC、テーブル参照部RE、選択部SLを有する。
【0091】
コンパレータb1は、リクエストアドレスと比較するためのアクセス開始位置を示すアドレスs1及び終了位置を示すアドレスe1との間に、リクエストアドレスが含まれるかを判定し、判定結果を出力する。
【0092】
コンパレータb2,...,bnは、リクエストアドレスと比較するためのアクセス開始位置を示すアドレスs2,...,snと終了位置を示すアドレスe2,...,enとの間に、リクエストアドレスが含まれるかを判定し、判定結果を出力する。
【0093】
プライオリティエンコーダPENCは、各コンパレータb1〜bnから判定結果を取得し、設定された優先順に基づいてテーブルアドレスを出力する。
【0094】
テーブル参照部REや選択部SLの処理は、図5で説明した処理と同様であるため、その説明を省略する。
【0095】
図7は、アクセス種別の判別処理(その3)の一例を説明するための図である。図7に示す例では、アクセス判別部100は、コンパレータc1〜cn、プライオリティエンコーダPENC、テーブル参照部RE、選択部SLを有する。
【0096】
コンパレータc1は、リクエストアドレスからアクセス開始位置を示すアドレスs1をマスクしたアドレスを出力する。このとき、出力結果は、2のべき乗の粒度になる。
【0097】
コンパレータc2,...,cnは、リクエストアドレスから、それぞれのアドレスs2,...,snをマスクして出力する。
【0098】
プライオリティエンコーダPENCは、各コンパレータc1〜cnからの出力を取得し、設定された優先順に基づいてテーブルアドレスを出力する。
【0099】
テーブル参照部REや選択部SLの処理は、図5で説明した処理と同様であるため、その説明を省略する。
【0100】
アクセス種別の判別処理は、その3が計算量の観点からは好適であるが、いずれの方法であってもよい。また、メモリアクセス要求にIDが付与され、このIDに対応するアクセス種別を保持するテーブルを用いてアクセス種別を判別してもよい。
【0101】
(同期ポイントの抽出における所定領域の決定処理)
次に、同期ポイントの抽出における所定領域の決定処理について説明する。決定された所定領域は、粗密記録部120によるアクセスパターンの学習に用いられたり、ベストエフォート系のメモリアクセスの挿入に用いられたりする。
【0102】
図8は、同期ポイントにより決定される所定領域を説明するための図である。図8に示すpc1は、1つのピクチャの領域を示す。pc1は、X方向に処理されていくとする。ar1は、ベストエフォート系の挿入エリアを示す。ar2は、1つのMBLineの処理が終わった後の空き時間となる領域を示す。ar3は、ピクチャの処理が終わった後の空き時間となる領域を示す。
【0103】
ar1は、記録部121によるトランザクションの記録を行い、メモリアクセスパターンの学習を行い、また、ベストエフォート系のメモリアクセスを挿入する領域である。ピクチャの端部では、動画処理が定常状態ではないため、この端部は、メモリアクセスパターンの学習には適していない。よって、この端部をメモリアクセスパターンの学習に含めないことで、学習の精度を向上させる。
【0104】
このar1は、例えば粗密記録部120により次のようにして決定される。
・MBLineの同期ポイントを起点にn1個のMBの同期ポイントを無視し、m1個以上のMBの同期ポイントを無視する。これにより、ピクチャの左右の端部を排除することができる。
・ピクチャの同期ポイントを起点にn2個のMBの同期ポイントを無視し、m2個以上のMBLineの同期ポイントを無視し、かつMBLineに含まれるMBの同期ポイントを無視する。これにより、ピクチャの上下の端部を排除することができる。
【0105】
また、ar2、ar3の期間は、リアルタイム系処理が空き時間となりやすい時間帯である。よって、粗密記録部120は、積極的にベストエフォート系処理のメモリアクセスを実行するため、その指示(例えば許可信号)をバス権付与部130に出力する。
【0106】
ar2は、例えば粗密記録部120により次のようにして判断される。
・MBLineの同期ポイントを起点にm3個のMBの同期ポイントを検出してから、次のMBLine同期のポイント又はピクチャの同期ポイントまでとする。これにより、MBLine間の空き時間を特定することができる。
【0107】
ar3は、例えば粗密記録部120により次のようにして判断される。
・ピクチャの同期ポイントを起点にm4個以上のMBLineの同期ポイントを検出してから、次のピクチャの同期ポイントまでとする。これにより、ピクチャ間の空き時間を特定することができる。
【0108】
なお、ar1〜ar3の領域の起点において、リアルタイム系処理が優先されるべき期間が存在する場合がある。よって、粗密記録部120は、ar1〜ar3の起点を検出してから一定サイクル後に、ar1〜ar3の領域が始まると判断してもよい。
【0109】
これにより、ar1の領域で累積記録データの更新を行い、ベストエフォート系のメモリアクセスを挿入することができる。また、ar2、ar3の領域で、ベストエフォート系のメモリアクセスを積極的に挿入することが可能となる。
【0110】
(累積記録データの更新処理)
次に、累積記録データの更新処理について説明する。図9は、累積記録データの更新を説明するための図である。図9(A)に示す例では、1つのMBLineを1つの同期ポイント間とし、4つの同期ポイント間のデータバス占有割合を累積記録データとする。
【0111】
なお、同期ポイント間は、所定数のMBや所定数のMBLineにしてもよい。また、図9(A)に示す例では、4つの同期ポイント間を累積するようにしているが、1ピクチャ分の同期ポイント間を累積するようにしてもよい。
【0112】
また、累積部122は、累積記録データをピクチャタイプごとに記録する。図9(A)に示す例では、I、P、Bのピクチャタイプに分けているが、これに限られない。
【0113】
同期ポイント間は、複数の区間を含む。1つの区間は、所定数のサイクルに対するデータバスの占有割合の平均を表す。1つの区間の色は、黒に近いほどデータバスの占有割合が大きいことを表す。
【0114】
図9(B)に示す例では、記録部121は、現在の処理対象のピクチャに対し、抽出された同期ポイント間における複数の区間のデータバスの占有割合を記録する。図9(B)に示す例では、例えば4つのMBLine毎に、累積記録データを学習する。なお、記録部121は、図8に示すar1の領域で、トランザクションの記録を行うようにしてもよい。
【0115】
図9(B)に示すように、スケーリング部123は、記録部121により記録された同期ポイント間の区間数を、累積記録データの同期ポイント間の区間数に合わせるため、スケーリングを行う。これは、動画処理においては、同期ポイント間のマクロブロックに応じて処理量や処理時間が異なるので、記録データと累積記録データとの時間軸を合わせるためである。
【0116】
算出部124は、例えば、スケーリングされた区間のデータバス占有割合と、対応する累積記録データの区間のデータバス占有割合とのSADを算出する。
【0117】
更新部125は、算出部124により算出された区間毎のSADに基づいて、累積記録データを区間毎に更新する。
【0118】
これにより、累積記録データを更新することで、処理対象のマクロブロックと近傍の過去に処理されたマクロブロックのメモリアクセスに基づくアクセスパターンを学習することができる。
【0119】
なお、図9に示す白の区間が空き時間を示す。粗密記録部120は、現在処理されているマクロブロックのトランザクションが累積記録データのどこに対応するかを判断することで、次に空き時間となる図9に示す白の区間を予測することができる。
【0120】
また、メモリアクセスの学習の精度を上げるため、記録部121は、定常以外の臨時、固定については、記録を行わないとすることもできる。累積記録データは、動画処理の各マクロブロックに対する符号化時のアクセスパターンを知るためのものであるので、定期的にアクセスがある固定スロットと、臨時にアクセスされる臨時データトランザクションとを学習対象から除外する。
【0121】
図10は、アクセスパターンの学習対象を説明するための図である。図10に示すように、動画処理のMBLineの処理の間に臨時又は固定のメモリアクセスが発生する。表示系のリアルタイム処理は、定期的にアクセスされるが、図10に示すように動画処理を基準に考えれば、各マクロブロックの処理量や処理時間は異なるため、不定期にアクセスされるようにみえる。
【0122】
よって、粗密記録部120は、固定/臨時データ検出部110により検出された固定及び臨時のメモリアクセスについては、そのデータバスの占有割合については記録を行わない。
【0123】
(ベストエフォート系アクセスの実行処理)
次に、ベストエフォート系のメモリアクセスが実行される処理について説明する。図11は、バス権付与部130の構成の一例を示す図である。図11に示すバス権付与部130は、FIFO131、実行部132、分割部133を有する。
【0124】
FIFO131は、ベストエフォート系のメモリアクセス要求を1つ以上連続して蓄積する蓄積部である。このとき、粗密記録部120は、FIFO131の先頭に蓄積されているメモリアクセスのサイズを取得してもよい。
【0125】
実行部132は、例えばスイッチであり、粗密記録部120から受けた許可信号がONの場合に、FIFO131の先頭に蓄積されているメモリアクセス要求にバス権を付与し、このメモリアクセスを実行する。
【0126】
許可信号は、リアルタイム系処理の累積記録データに基づいて予測された空き時間にONになる。また、許可信号は、リアルタイム系処理の累積記録データでバスデータの占有割合が空いていない時間、又は臨時のリアルタイム系処理があった場合にOFFになる。
【0127】
また、バス権付与部130は、図11に示す分割部133を有してもよい。分割部133は、粗密記録部120から空き時間のサイズを取得する。分割部133は、ベストエフォート系のメモリアクセスによるバスの占有時間が、取得した空き時間よりも大きい場合、このメモリアクセスを分割する。
【0128】
これにより、ベストエフォート系のメモリアクセス要求のサイズが大きい場合に、このメモリアクセスがなかなか実行されないという事態を避けることができる。
【0129】
<比較>
次に、実施例におけるベストエフォート系のメモリアクセスの実行タイミングと、従来例におけるベストエフォート系のメモリアクセスの実行タイミングとの比較について説明する。
【0130】
図12は、実施例と従来例との比較を説明するための図である。図12(A)は、上述した実施例によるベストエフォート系のメモリアクセスのタイミングを示す。また、実施例では、リアルタイム系処理のメモリアクセスのパターンを学習する。実施例では、学習したメモリアクセスのパターンから、ベストエフォート系のメモリアクセスを実行することが可能な空き時間があるかを予測する。図12(A)に示すように、実施例では、予測した空き時間に、ベストエフォート系のメモリアクセスを実行する。
【0131】
図12(B)は、従来例によるベストエフォート系のメモリアクセスのタイミングを示す。従来例は、一般的なアービターを想定する。一般的なアービターは、バスの占有時間に空き時間があればメモリアクセスを実行する。
【0132】
図12(B)に示すように、従来例では、データ転送の占有割合に対する考慮がなく、空き時間にベストエフォート系のメモリアクセスを実行してしまうと、その後のリアルタイム系処理を待たせてしまう場合がある。
【0133】
一方、実施例では、リアルタイム系処理のアクセスパターンを学習することで、空き時間があった場合に、その空き時間でベストエフォート系のメモリアクセスを処理完了することができるかを予測することができる。
【0134】
よって、実施例では、予測された空き時間があっても、その後のリアルタイム系処理を遅延させると判断された場合には、ベストエフォート系処理のメモリアクセスを実行しない。
【0135】
<動作>
次に、実施例における撮像装置1の動作について説明する。図13は、1つのメモリアクセス要求に対する撮像装置1のアクセス制御処理の一例を示すフローチャートである。図13に示すステップS101で、アクセス判別部100は、アクセス要求元から取得したメモリアクセス要求が、リアルタイム系かベストエフォート系かを判別する。メモリアクセス要求がリアルタイム系である場合はステップS102に進み、メモリアクセス要求がベストエフォート系である場合はステップS106に進む。
【0136】
ステップS102で、記録部121は、要求されたメモリアクセスのトランザクションを記録する。例えば、記録部121は、同期ポイント間の区間毎のデータバスの占有割合を記録する。
【0137】
ステップS103で、スケーリング部123は、記録部121により記録された記録データの同期ポイント間を、累積記録データの同期ポイント間の時間軸に合わせるため、スケーリングを行う。
【0138】
ステップS104で、算出部124は、記録データと累積記録データとの同期ポイント間の区間毎に、データバスの占有割合の類似度を算出する。
【0139】
ステップS105で、更新部125は、算出された類似度に基づいて、記録データを用いて累積記録データを更新する。この累積記録データが、リアルタイム系処理のアクセスパターンを表す。
【0140】
ステップS106で、バス権付与部130は、ベストエフォート系のメモリアクセス要求を蓄積する。例えば、FIFO131が、ベストエフォート系のメモリアクセス要求を蓄積する。
【0141】
図14は、ベストエフォート系処理のアクセス実行処理の一例を示すフローチャートである。図14に示すステップS201で、実行部132は、粗密記録部120から取得した許可信号がONであるかを判定する。許可信号がONであれば(ステップS201−YES)ステップS202に進み、許可信号がOFFであれば(ステップS201−NO)ステップS201に戻る。
【0142】
なお、許可信号は、粗密記録部120において、FIFO131先頭のメモリアクセスサイズを実行可能な空き時間が累積記録データにある場合に、ONとなる。
【0143】
ステップS202で、実行部132は、FIFO131先頭のメモリアクセス要求を実行する。なお、実行されるベストエフォート系のメモリアクセスは、空き時間に基づいて分割されてもよい。
【0144】
以上、実施例によれば、リアルタイム系処理を優先しつつ、リアルタイム系処理の間にベストエフォート系処理を適切に処理させることで、効率の良いメモリアクセス制御を行うができる。
【0145】
以上、実施例について詳述したが、上記の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例の構成要素を全部又は複数を組み合わせることも可能である。
【0146】
なお、以上の実施例に関し、さらに以下の付記を開示する。
(付記1)
動画撮影中に静止画を撮影可能な撮像装置であって、
動画処理を含むリアルタイム性が要求される処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録する記録部と、
静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積する蓄積部と、
前記記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積する累積部と、
累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、前記蓄積部に蓄積された第2要求を実行する実行部と、
を備える撮像装置。
(付記2)
前記累積部は、
累積された各同期ポイント間の区間数に応じて、前記記録部に記録された各同期ポイント間の区間数をスケーリングするスケーリング部と、
スケーリング後の各同期ポイント間の区間毎に、該区間と、該区間に対応する累積された区間とのトランザクションの類似度を算出する算出部と、
区間毎の前記類似度に応じて、累積された区間毎のトランザクションを更新する更新部と、
を備える付記1記載の撮像装置。
(付記3)
メモリアクセス要求を受けた場合、該メモリアクセス要求を、前記第1要求と前記第2要求とが設定されたテーブルを参照して、前記第1要求か前記第2要求かを判別する判別部をさらに備え、
前記記録部は、
前記判別部により判別された前記第1要求を受け取り、
前記蓄積部は、
前記判別部により判別された前記第2要求を受け取る付記1又は2記載の撮像装置。
(付記4)
前記同期ポイントを、画像を格納する領域内の特定の領域に対するメモリアクセスにより抽出する抽出部をさらに備える付記1乃至3いずれか一項に記載の撮像装置。
(付記5)
前記記録部は、
画像内の所定の領域で抽出された同期ポイント間における区間毎のトランザクションを記録する付記1乃至4いずれか一項に記載の撮像装置。
(付記6)
前記実行部により実行される第2要求によるメモリアクセスを、前記空き時間に基づいて分割する分割部をさらに備える付記1乃至5いずれか一項に記載の撮像装置。
(付記7)
前記累積部は、
画像のピクチャタイプ毎に、複数の同期ポイント間における区間毎のトランザクションを累積し、
前記更新部は、
現在の処理対象画像のピクチャタイプに対応する、累積された複数の同期ポイント間における区間毎のトランザクションを更新する付記1乃至6いずれか一項に記載の撮像装置。
(付記8)
前記記録部は、
前記第1要求が、動画のビットストリームのWrite要求を含む臨時のメモリアクセス要求又は表示系のメモリアクセス要求を含む定期的なメモリアクセス要求ではない場合に、前記トランザクションの記録を行う請求項1乃至7いずれか一項に記載の撮像装置。
(付記9)
リアルタイム性が要求される動画処理に関する処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録部に記録し、
静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積部に蓄積し、
前記記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積部に累積し、
前記累積部に累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、前記蓄積部に蓄積された第2要求を実行する処理をコンピュータが実行するアクセス制御方法。
【符号の説明】
【0147】
1 撮像装置
20 キャプチャ処理部
30 静止画向け処理部
40 動画向け処理部
50 電子ビューファインダー用映像処理部
60 バス制御部
70 メモリ
100 アクセス判別部
110 固定/臨時データ検出部
111 同期ポイント抽出部
120 粗密記録部
121 記録部
122 累積部
123 スケーリング部
124 算出部
125 更新部
130 バス権付与部
131 FIFO
132 実行部
133 分割部
【技術分野】
【0001】
本発明は、メモリへのアクセス制御を行う撮像装置及びアクセス制御方法に関する。
【背景技術】
【0002】
デジタルカメラや、カムコーダなどを含む撮像装置では、動画像の撮影処理中に、動画処理を継続したまま静止画像を撮影する機能が実現されている。
【0003】
一般に静止画と動画とでは撮影する解像度が大きく異なる。静止画は10M(メガ)〜24Mピクセル、動画はHDTV(High Definition Television)で3Mピクセル程度である。このような動画処理、静止画処理は、扱う情報が膨大であるため、例えば外部のSDRAM(Synchronous Dynamic Random Access Memory)をバッファメモリとして利用する。
【0004】
動画処理、静止画処理を含む映像処理は、大きく2種類の性質のデータトランザクションが混在する。
【0005】
ベストエフォート型の処理は、SDRAMのデータトランザクション量として、ほぼ定型の処理パターンとなるが、出来るだけ高速に外部のSDRAMを使い切って最短で処理結果を得る静止画を生成するための画像処理である。
【0006】
リアルタイム型の処理は、SDRAMの帯域について一定量を確保しつつ、入力データによって刻々と変動するデータトランザクションである。また、リアルタイム型の処理は、1/30sなどの等間隔のフレームレート単位に、ワースト時でも遅延なく、一定の間隔で処理を終える、動画処理に関連する画像処理である。
【0007】
動画処理は、フレームやマクロブロックなどの単位毎にさまざまな圧縮のための方式を変えつつ、もっとも圧縮できるツールセットを適応的に選択し、圧縮、展開を行う。このため、ある瞬間のSDRAMの帯域の消費は、画像やGOP構造やマクロブロックタイプなどの所定単位の圧縮手法等によって大きく変動し、さらに、映像のビットレートや画質制御によっても大きく変動する。
【0008】
ここで、動画の処理中に、静止画の処理を並行して行うためのメモリアクセスを制御する技術がある。例えば、動画撮影中に静止画を同時撮影する際、動画の処理フレーム、例えばBピクチャに応じて、静止画の処理タイミングを制御する技術がある。
【0009】
また、リアルタイム処理と待ち時間クリティカル処理を行い際、リアルタイム処理の所定の時間窓における残余時間に応じて、待ち時間クリティカル処理を許可する技術などがある。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2010−34765号公報
【特許文献2】特表2008−515073号公報
【特許文献3】特開2009−15832号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
ここで、動画処理のメモリアクセスは、処理中の画像データによって適応的に変化するため、静止画処理のメモリアクセスによって、動画処理のメモリアクセスに遅延が生じたり、局所的な帯域不足が生じたりする。この問題に対して、従来技術におけるメモリへのアクセス制御では、効率よく制御することができていなかった。
【0012】
例えば、動画の処理フレームに応じて静止画処理のタイミングを制御する場合、静止画処理を行うときの動画の処理フレーム、例えばPピクチャであっても、メモリアクセス量が多い場合があり、リアルタイム性が損なわれる可能性がある。
【0013】
また、リアルタイム処理の残余時間については、画像データによって処理量が適応的に変化するため所定の時間窓を適切に設定することは困難である。
【0014】
そこで、開示の技術は、動画処理を優先しつつ、動画処理の間に静止画処理を適切に処理させることで、効率の良いメモリアクセス制御を行うことができる撮像装置及びアクセス制御方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
開示の一態様における撮像装置は、動画撮影中に静止画を撮影可能な撮像装置であって、動画処理を含むリアルタイム性が要求される処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録する記録部と、静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積する蓄積部と、前記記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積する累積部と、累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、前記蓄積部に蓄積された第2要求を実行する実行部と、を備える。
【発明の効果】
【0016】
開示の技術によれば、動画処理を優先しつつ、動画処理の間に静止画処理を適切に処理させることで、効率の良いメモリアクセス制御を行うことができる。
【図面の簡単な説明】
【0017】
【図1】実施例における撮像装置の構成の一例を示すブロック図。
【図2】実施例におけるバス制御部の構成の一例を示すブロック図。
【図3】アクセス判別部(その1)の一例を説明するための図。
【図4】アクセス判別部(その2)の一例を説明するための図。
【図5】アクセス種別の判別処理(その1)の一例を説明するための図。
【図6】アクセス種別の判別処理(その2)の一例を説明するための図。
【図7】アクセス種別の判別処理(その3)の一例を説明するための図。
【図8】同期ポイントにより決定される所定領域を説明するための図。
【図9】累積記録データの更新を説明するための図。
【図10】アクセスパターンの学習対象を説明するための図。
【図11】バス権付与部の構成の一例を示す図。
【図12】実施例と従来例との比較を説明するための図。
【図13】1つのメモリアクセス要求に対する撮像装置のアクセス制御処理の一例を示すフローチャート。
【図14】ベストエフォート系処理のアクセス実行処理の一例を示すフローチャート。
【発明を実施するための形態】
【0018】
まず、静止画の処理と動画の処理は、同じ演算内容であっても、性質が異なる場合がある。例えばセンサデータから輝度、色差を有する画像を得るデモザイク処理において、静止画では高品質、動画では簡易処理で行うケースがある。また、ノイズリダクションや各種補正処理についても、その有無やその演算処理の内容、解像度などに動画と静止画とで差をつける事が一般的である。
【0019】
そこで、以下に示す実施例では、ベストエフォート系処理と、リアルタイム系処理とを次のように定義する。
【0020】
(ベストエフォート系処理)
ベストエフォート系処理は、静止画処理に関する処理であり、例えば、主に静止画処理の中で、動画撮影と共通で行うリアルタイム性が必要な処理以外の静止画を生成するための処理である。
【0021】
ベストエフォート系処理は、例えば高品質なノイズ除去、ホワイトバランス検出、欠陥画素補正処理、デモザイク処理、シャープネス処理、手振れ補正処理、静止画符号化処理などを含む。
【0022】
(リアルタイム系処理)
リアルタイム系処理は、リアルタイム性が要求される処理であり、例えば動画処理に関する処理である。リアルタイム系処理は、例えば、イメージセンサからのキャプチャ処理、簡易的なノイズ除去などの静止画処理と同様の処理、動画圧縮処理、電子ビューファインダーなどの処理を含む。
【0023】
なお、MPEG(Moving Picture Expert Group)などの動画符号化処理においては、その演算に相関があるため、その演算の間に、等間隔にある程度規則正しいリアルタイム系処理のメモリアクセスが発生するという特徴がある。
【0024】
しかしながら、このメモリアクセスは、各マクロブロックの符号化タイプによって、様々なアクセス傾向や転送量になる。また、マクロブロックタイプによっては、ある程度似たアクセス傾向となるが、どのようなアクセス傾向となるかは確率的であり、マクロブロックの出現確率や回路構成によっても異なる。
【0025】
そこで、以下で説明する実施例では、過去のリアルタイム系処理のアクセス傾向を学習し、学習結果に基づいてベストエフォート系処理のメモリアクセスを適切に実行する。
【0026】
以下、その実施例について、添付図面を参照しながら説明する。
【0027】
[実施例]
<構成>
図1は、実施例における撮像装置1の構成の一例を示すブロック図である。撮像装置1は、例えばデジタルカメラ、デジタルビデオカメラ、又はカムコーダである。図1に示す撮像装置1は、イメージセンサ10、キャプチャ処理部20、メモリ25、静止画向け処理部30、動画向け処理部40、電子ビューファインダー用映像処理部50、電子ビューファインダー51、バス制御部60、メモリ70、DMAエンジン81、制御CPU(Central Processing Unit)82、メディアRW83、記録メディア84を有する。上記各部の一部は、半導体集積回路により実装される。
【0028】
なお、図1に示す太線矢印は、リアルタイム処理が必要なパスである。点線矢印は、ベストエフォート処理のパスである。細線矢印は、その他のローカルパスであり、バス制御部60により制御されるバスには接続されていない。
【0029】
イメージセンサ10は、レンズから入射した光を取り込み、電気信号に変換する半導体素子である。キャプチャ処理部20は、イメージセンサ10から取得した電気信号に基づき、静止画用データ、動画用データのキャプチャ処理を行う。
【0030】
キャプチャ処理部20は、リアルタイム処理が必要な静止画用データをメモリ70にバッファリングするようバス制御部60に要求する。例えば、キャプチャ処理部20からのメモリ70へのアクセス要求は、リアルタイム系処理のメモリアクセス要求である。また、キャプチャ処理部20は、動画用データをメモリ25に格納する。
【0031】
メモリ25は、例えば、SRAM(Static Random Access Memory)であり、動画用データを格納する。
【0032】
静止画向け処理部30は、メモリ70に画像データをバッファリングしながら、静止画用の処理を行う。このとき、静止画向け処理部30は、バス制御部60に対してメモリ70へのメモリアクセス要求を行う。
【0033】
静止画向け処理部30は、ノイズ除去、ホワイトバランス検出部31、欠陥画素補正、デモザイク処理部32、ノイズ除去、シャープネス処理、手振れ補正処理部33、静止画符号化処理、メディア書き込み部34を有する。
【0034】
ノイズ除去、ホワイトバランス検出部31は、画像データからノイズを除去し、RGBの3原色のバランスをとるホワイトバランス処理を行う。欠陥画素補正、デモザイク処理部32は、欠陥画素を補正し、RGBのセンサデータから輝度、色差の画像データに変換する。
【0035】
ノイズ除去、シャープネス処理、手振れ補正処理部33は、画像データからノイズを除去し、輪郭を強調し、手振れ補正処理を行う。静止画符号化処理、メディア書き込み部34は、静止画の符号化標準技術であるJPEG(Joint Photographic Experts Group)などの符号化処理を行い、符号化した静止画データを、メディアRW83を用いて記録メディア84に書き込む。
【0036】
例えば、静止画向け処理部30によるメモリ70へのメモリアクセス要求は、ベストエフォート系処理のメモリアクセス要求である。
【0037】
なお、静止画向け処理部30の各部31〜34は、それぞれ細分化されたり、複数の部をまとめて処理されたりしてもよい。また、静止画向け処理部30の各部31〜33は、後述する動画向け処理部40の各部41〜43よりも高品質の処理を行う。各部31〜33の処理は、リアルタイム性が要求されないからである。
【0038】
動画向け処理部40は、メモリ70に画像データをバッファリングしながら、動画用の処理を行う。このとき、動画向け処理部40は、バス制御部60に対してメモリ70へのメモリアクセス要求を行う。
【0039】
動画向け処理部40は、ノイズ除去、ホワイトバランス検出部41、欠陥画素補正、デモザイク処理部42、ノイズ除去、シャープネス処理、手振れ補正処理部43、動画符号化処理、メディア書き込み部44を有する。
【0040】
上記の各部41〜43は、静止画向け処理部30の各部31〜33とそれぞれ同様の処理を簡易的に行う。各部41〜43の処理は、リアルタイム性が要求されるからである。
【0041】
動画符号化処理、メディア書き込み部44は、動画の符号化標準技術であるMPEGなどの符号化処理を行い、符号化した動画データを、メディアRW83を用いて記録メディア84に書き込む。
【0042】
動画向け処理部40によるメモリ70へのメモリアクセス要求は、リアルタイム系処理のメモリアクセス要求である。なお、動画向け処理部40の各部41〜44は、それぞれ細分化されたり、複数の部をまとめて処理されたりしてもよい。
【0043】
電子ビューファインダー用映像処理部50は、OSD(オンスクリーンディスプレイ)機能を有し、画像データを電子ビューファインダー51に表示するための映像処理を行う。例えば、電子ビューファインダー用映像処理部50からのメモリ70へのメモリアクセス要求は、リアルタイム系処理のメモリアクセス要求である。
【0044】
電子ビューファインダー51は、電子ビューファインダー用映像処理部50により処理された画像データを表示する。電子ビューファインダー51は、液晶ディスプレイなどでもよい。
【0045】
バス制御部60は、アクセス元からのメモリ70へのメモリアクセス要求に対し、リアルタイム系処理のメモリアクセス要求を優先しつつ、適切なタイミングでベストエフォート系処理のメモリアクセス要求を実行するようアクセス制御する。ここで、アクセス元とは、各部20、31〜34、41〜44、50をいう。なお、バス制御部60の詳細については、図2を用いて後述する。
【0046】
メモリ70は、例えばSDRAMなどのメモリであり、各部で処理されたデータを一時的に格納する。メモリ70は、各部でシェアして使用される。
【0047】
DMA(Direct Memory Access)エンジン81は、バスに直結され、このバスを操作してDMAを実現する。制御CPU82は、撮像装置1のシステム制御を行う。
【0048】
メディアRW83は、記録メディア84に対して、データのRead/Writeを行う。記録メディア84は、例えばSDカードなどの記録メディアであり、静止画用データや動画用データを記録する。
【0049】
<バス制御部>
次に、実施例におけるバス制御部60について説明する。図2は、実施例におけるバス制御部60の構成の一例を示すブロック図である。図2に示すバス制御部60は、アクセス判別部100、固定/臨時データ検出部110、同期ポイント抽出部111、Picture処理終了検出部112、粗密記録部120、バス権付与部130、MUX(マルチプレクサ)140、メモリコントローラ150を有する。
【0050】
アクセス判別部100は、静止画系システムからのメモリアクセス要求、動画系システムからのメモリアクセス要求を受ける。静止画系システムは、例えば静止画向け処理部30に対応し、動画系システムは、例えば動画向け処理部40などに対応する。
【0051】
アクセス判別部100は、取得したアクセス要求に対し、リアルタイム系処理のメモリアクセス要求か、ベストエフォート系処理のメモリアクセス要求かを判別する。
【0052】
アクセス判別部100は、例えば、アクセス元に基づき、メモリアクセス要求にメモリアクセスの種別を示すID(IDentification)を付加する。アクセス判別部100は、ID毎にリアルタイム系処理か、ベストエフォート系処理かが設定されたテーブルを参照して、メモリアクセスの種別を判別してもよい。なお、IDは、アクセス元が付与するようにしてもよい。
【0053】
また、アクセス判別部100は、メモリアクセス要求のRead/Write種別と、アドレス範囲とからアクセスの種別が設定されたテーブルを参照して、メモリアクセスの種別を判別してもよい。
【0054】
また、アクセス判別部100は、リアルタイム系処理について、定常データトランザクションか、臨時データトランザクションか、固定スロットかを判別してもよい。
【0055】
定常データトランザクション(単に定常とも呼ぶ)とは、後述する粗密記録部120で学習の対象となるトランザクションである。臨時データトランザクション(単に臨時とも呼ぶ)は、例えば動画系のビットストリームをWriteする要求のトランザクションである。動画系のビットストリームは、所定量溜まった場合にWrite要求されるものであり、所定量溜まる時間は画像データの処理量に依存して一定ではない。固定スロット(単に固定とも呼ぶ)は、例えば表示系のリアルタイムアクセスのトランザクションである。
【0056】
なお、アクセス判別部100は、アクセス元がそれぞれの属性を明示的に示す場合には無くてもよい。属性とは、リアルタイム系か、ベストエフォート系かを表すものである。また、属性は、リアルタイム系の定常か、臨時か、固定かを表してもよい。
【0057】
固定/臨時データ検出部110は、アクセス判別部100によりリアルタイム系処理の中から固定と臨時を検出し、検出したメモリアクセス要求を粗密記録部120、バス権付与部130に通知する。
【0058】
同期ポイント抽出部111は、メモリアクセス要求されているデータから、同期ポイントを抽出する。この同期ポイントは、実施例におけるアクセス制御のシステムをリアルタイム系処理に同期させるためのポイントである。例えば、MB(マクロブロック)、MBLine、Picture単位で同期ポイントを抽出する。
【0059】
同期ポイント抽出部111は、例えば、画像データの特定の領域に対するアクセスにより、同期ポイントを抽出する。また、同期ポイント抽出部111は、動画処理回路の内部信号を読み取ることができる場合、内部信号から同期信号を直接取得するようにしてもよい。同期ポイント抽出部111は、抽出した同期ポイントを粗密記録部120に通知する。
【0060】
Picture処理終了検出部112は、ピクチャの処理終了を、抽出した同期ポイントの数などにより検出する。Picture処理終了検出部112は、検出したピクチャの処理終了を、粗密記録部120に通知する。
【0061】
粗密記録部120は、記録部121、累積部122を有し、メモリアクセスを実行する際、同期ポイント間のトランザクションを記録し、複数の同期ポイント間のアクセスパターンを学習する。また、粗密記録部120は、Picture処理終了検出部112からピクチャの処理終了を通知されることで、ピクチャの最後を判断することができる。
【0062】
記録部121は、リアルタイム系処理のメモリアクセスに対し、処理対象のピクチャの複数の同期ポイント間における区間毎のトランザクションを記録する。記録部121は、例えば、区間毎にデータバスの占有割合を記録する。1区間は、例えば10サイクルであり、同期ポイント間は、例えば300〜1200サイクルである。記録部121により記録される複数の同期ポイント間における区間毎のトランザクションは、記録データとも呼ぶ。
【0063】
なお、記録部121は、固定/臨時データ検出部110により検出された固定、臨時のメモリアクセスについては、トランザクションの記録を行わないようにしてもよい。固定、臨時のメモリアクセスは、アクセスパターンの学習にふさわしくないからである。
【0064】
累積部122は、過去にアクセスした複数の同期ポイント間における区間毎のトランザクションを累積し、アクセスパターンを学習する。累積された複数の同期ポイント間における区間毎のトランザクションは、累積記録データとも呼ぶ。
【0065】
なお、累積部122は、例えばI、P、Bのピクチャタイプ毎に、メモリのアクセスパターンの学習を行ってもよい。累積記録データを更新することは、アクセスパターンの学習とも呼ぶ。累積部122は、適切に学習を行うため、スケーリング部123、算出部124、更新部125を有する。
【0066】
スケーリング部123は、記録部121により記録された記録データを、累積記録データの時間軸に合わせるため、スケーリングを行う。
【0067】
スケーリングを行うのは、同期ポイント間の区間数が動画処理の処理量に依存して変動するため、累積された累積記録データを基準として、アクセスパターンを学習する必要があるからである。
【0068】
算出部124は、スケーリング後の記録データと、累積記録データとの区間毎のトランザクションの類似度を算出する。具体的には、算出部124は、データバスの占有割合の類似度を求める。類似度は、例えば、区間毎にトランザクションのSAD(Sum of Absolute Differences)である。算出部124は、算出した類似度を更新部125に出力する。
【0069】
更新部125は、累積記録データを類似度に応じてIIR(Infinite Impulse
Response)的に更新する。更新部125は、例えば次の式(1)により区間毎のトランザクションを更新する。
v(t)=(1−α)×v(t)+α×c(t) ・・・式(1)
α:係数
v(t):累積部122に累積されているトランザクション
c(t):記録部121に記録されたトランザクション
なお、αは、SADに応じて変更される。例えば、SADが閾値以下の場合、αは、例えば0.2であり、SADが閾値より大きい場合、αは、例えば0.05〜0.1のいずれかの値である。
【0070】
これにより、累積部122では、より典型的な同期ポイント間のアクセスパターンを得ることができる。よって、累積部122で学習されたアクセスパターンを参照すれば、メモリアクセスの空き時間を予測することができるようになる。
【0071】
粗密記録部120は、予測したメモリアクセスの空き時間に、ベストエフォート系処理のメモリアクセス要求を実行させるための許可信号を、バス権付与部130に出力する。
【0072】
バス権付与部130は、ベストエフォート系処理のメモリアクセス要求を少なくとも1つ以上蓄積し、累積部122で学習されたアクセスパターンの空き時間に、蓄積しているメモリアクセス要求にバスの使用権を付与して実行する。バス権付与部130は、例えば、粗密記録部120から取得する許可信号がONの時に、ベストエフォート系処理のメモリアクセス要求を実行する。
【0073】
MUX140は、ベストエフォート系処理のメモリアクセス要求と、リアルタイム系処理のメモリアクセス要求とを入力し、それぞれのメモリアクセス要求をメモリコントローラ150に出力する。
【0074】
メモリコントローラ150は、取得したメモリアクセス要求に対して、メモリ70を制御する。
【0075】
以上の構成を有することで、リアルタイム系処理の過去のメモリアクセスからアクセスパターンを学習し、学習の結果に基づいて推定したメモリアクセスの空き時間に、ベストエフォート系処理のメモリアクセスを実行することができる。
【0076】
<各処理の概要>
次に、実施例のアクセス制御に関する各処理の概要について説明する。
【0077】
(アクセス判別処理)
図3は、アクセス判別部100(その1)の一例を説明するための図である。図3に示す例では、アクセス判別部100は、複数のアクセス元からメモリアクセス要求を受ける。アクセス判別部100は、メモリアクセス要求をMUXer(マルチプレクサ)から受ける場合もある。
【0078】
このような場合、アクセス判別部100は、後述するテーブルを参照して、メモリアクセス要求に対し、リアルタイム系かベストエフォート系かを判別する。アクセス判別部100は、リアルタイム系をさらに、定常、臨時、固定の3種類に分けて判別してもよい。
【0079】
アクセス判別部100は、判別したメモリアクセス要求を、判別した種類に応じて後段の処理に出力する。
【0080】
図4は、アクセス判別部100(その2)の一例を説明するための図である。図4に示す例では、ベストエフォート系と、リアルタイム系とでバスが分離されている例である。この場合、アクセス判別部100は、複数のアクセス元から取得したリアルタイム系のメモリアクセスに対し、後述するテーブルを参照して、定常、臨時、固定のいずれかに判別する。
【0081】
なお、図4に示す例で、定常、臨時、固定を判別しない場合、又は定常、臨時、固定でバスが分離されている場合には、アクセス判別部100は必要ない。アクセス判別部100は、リアルタイム系かベストエフォート系かが設定されたテーブルを有してもよい。
【0082】
次に、アクセス判別部100がテーブルを用いてアクセス種別を判別する具体例について説明する。
【0083】
図5は、アクセス種別の判別処理(その1)の一例を説明するための図である。図5に示す例では、アクセス判別部100は、コンパレータa1〜an、プライオリティエンコーダPENC、テーブル参照部RE、選択部SLを有する。
【0084】
コンパレータa1は、リクエストアドレスと比較するためのアクセス開始位置を示すアドレスs1とリクエストアドレスとを比較し、比較結果を出力する。
【0085】
コンパレータa2,...,anは、リクエストアドレスと比較するためのそれぞれのアドレスs2,...,snと、リクエストアドレスとを比較し、比較結果を出力する。
【0086】
プライオリティエンコーダPENCは、各コンパレータa1〜anから比較結果を取得し、設定された優先順に基づいてテーブルアドレスを出力する。
【0087】
テーブル参照部REは、取得したテーブルアドレスに記憶されているRead(リード)時のアクセス種別及びWrite(ライト)時のアクセス種別をテーブルTbから取得する。テーブルTbには、テーブルアドレス毎に、リード時のアクセス種別及びライト時のアクセス種別が記憶されている。
【0088】
アクセス種別は、リアルタイム系又はベストエフォート系である。アクセス種別は、リアルタイム系について、さらに定常、臨時、固定に細分化してもよい。
【0089】
選択部SLは、リード時のアクセス種別及びライト時のアクセス種別を取得し、リードかライトかの種別をメモリアクセス要求から取得すると、メモリアクセス要求に対応するアクセス種別を選択し、出力する。
【0090】
図6は、アクセス種別の判別処理(その2)の一例を説明するための図である。図6に示す例では、アクセス判別部100は、コンパレータb1〜bn、プライオリティエンコーダPENC、テーブル参照部RE、選択部SLを有する。
【0091】
コンパレータb1は、リクエストアドレスと比較するためのアクセス開始位置を示すアドレスs1及び終了位置を示すアドレスe1との間に、リクエストアドレスが含まれるかを判定し、判定結果を出力する。
【0092】
コンパレータb2,...,bnは、リクエストアドレスと比較するためのアクセス開始位置を示すアドレスs2,...,snと終了位置を示すアドレスe2,...,enとの間に、リクエストアドレスが含まれるかを判定し、判定結果を出力する。
【0093】
プライオリティエンコーダPENCは、各コンパレータb1〜bnから判定結果を取得し、設定された優先順に基づいてテーブルアドレスを出力する。
【0094】
テーブル参照部REや選択部SLの処理は、図5で説明した処理と同様であるため、その説明を省略する。
【0095】
図7は、アクセス種別の判別処理(その3)の一例を説明するための図である。図7に示す例では、アクセス判別部100は、コンパレータc1〜cn、プライオリティエンコーダPENC、テーブル参照部RE、選択部SLを有する。
【0096】
コンパレータc1は、リクエストアドレスからアクセス開始位置を示すアドレスs1をマスクしたアドレスを出力する。このとき、出力結果は、2のべき乗の粒度になる。
【0097】
コンパレータc2,...,cnは、リクエストアドレスから、それぞれのアドレスs2,...,snをマスクして出力する。
【0098】
プライオリティエンコーダPENCは、各コンパレータc1〜cnからの出力を取得し、設定された優先順に基づいてテーブルアドレスを出力する。
【0099】
テーブル参照部REや選択部SLの処理は、図5で説明した処理と同様であるため、その説明を省略する。
【0100】
アクセス種別の判別処理は、その3が計算量の観点からは好適であるが、いずれの方法であってもよい。また、メモリアクセス要求にIDが付与され、このIDに対応するアクセス種別を保持するテーブルを用いてアクセス種別を判別してもよい。
【0101】
(同期ポイントの抽出における所定領域の決定処理)
次に、同期ポイントの抽出における所定領域の決定処理について説明する。決定された所定領域は、粗密記録部120によるアクセスパターンの学習に用いられたり、ベストエフォート系のメモリアクセスの挿入に用いられたりする。
【0102】
図8は、同期ポイントにより決定される所定領域を説明するための図である。図8に示すpc1は、1つのピクチャの領域を示す。pc1は、X方向に処理されていくとする。ar1は、ベストエフォート系の挿入エリアを示す。ar2は、1つのMBLineの処理が終わった後の空き時間となる領域を示す。ar3は、ピクチャの処理が終わった後の空き時間となる領域を示す。
【0103】
ar1は、記録部121によるトランザクションの記録を行い、メモリアクセスパターンの学習を行い、また、ベストエフォート系のメモリアクセスを挿入する領域である。ピクチャの端部では、動画処理が定常状態ではないため、この端部は、メモリアクセスパターンの学習には適していない。よって、この端部をメモリアクセスパターンの学習に含めないことで、学習の精度を向上させる。
【0104】
このar1は、例えば粗密記録部120により次のようにして決定される。
・MBLineの同期ポイントを起点にn1個のMBの同期ポイントを無視し、m1個以上のMBの同期ポイントを無視する。これにより、ピクチャの左右の端部を排除することができる。
・ピクチャの同期ポイントを起点にn2個のMBの同期ポイントを無視し、m2個以上のMBLineの同期ポイントを無視し、かつMBLineに含まれるMBの同期ポイントを無視する。これにより、ピクチャの上下の端部を排除することができる。
【0105】
また、ar2、ar3の期間は、リアルタイム系処理が空き時間となりやすい時間帯である。よって、粗密記録部120は、積極的にベストエフォート系処理のメモリアクセスを実行するため、その指示(例えば許可信号)をバス権付与部130に出力する。
【0106】
ar2は、例えば粗密記録部120により次のようにして判断される。
・MBLineの同期ポイントを起点にm3個のMBの同期ポイントを検出してから、次のMBLine同期のポイント又はピクチャの同期ポイントまでとする。これにより、MBLine間の空き時間を特定することができる。
【0107】
ar3は、例えば粗密記録部120により次のようにして判断される。
・ピクチャの同期ポイントを起点にm4個以上のMBLineの同期ポイントを検出してから、次のピクチャの同期ポイントまでとする。これにより、ピクチャ間の空き時間を特定することができる。
【0108】
なお、ar1〜ar3の領域の起点において、リアルタイム系処理が優先されるべき期間が存在する場合がある。よって、粗密記録部120は、ar1〜ar3の起点を検出してから一定サイクル後に、ar1〜ar3の領域が始まると判断してもよい。
【0109】
これにより、ar1の領域で累積記録データの更新を行い、ベストエフォート系のメモリアクセスを挿入することができる。また、ar2、ar3の領域で、ベストエフォート系のメモリアクセスを積極的に挿入することが可能となる。
【0110】
(累積記録データの更新処理)
次に、累積記録データの更新処理について説明する。図9は、累積記録データの更新を説明するための図である。図9(A)に示す例では、1つのMBLineを1つの同期ポイント間とし、4つの同期ポイント間のデータバス占有割合を累積記録データとする。
【0111】
なお、同期ポイント間は、所定数のMBや所定数のMBLineにしてもよい。また、図9(A)に示す例では、4つの同期ポイント間を累積するようにしているが、1ピクチャ分の同期ポイント間を累積するようにしてもよい。
【0112】
また、累積部122は、累積記録データをピクチャタイプごとに記録する。図9(A)に示す例では、I、P、Bのピクチャタイプに分けているが、これに限られない。
【0113】
同期ポイント間は、複数の区間を含む。1つの区間は、所定数のサイクルに対するデータバスの占有割合の平均を表す。1つの区間の色は、黒に近いほどデータバスの占有割合が大きいことを表す。
【0114】
図9(B)に示す例では、記録部121は、現在の処理対象のピクチャに対し、抽出された同期ポイント間における複数の区間のデータバスの占有割合を記録する。図9(B)に示す例では、例えば4つのMBLine毎に、累積記録データを学習する。なお、記録部121は、図8に示すar1の領域で、トランザクションの記録を行うようにしてもよい。
【0115】
図9(B)に示すように、スケーリング部123は、記録部121により記録された同期ポイント間の区間数を、累積記録データの同期ポイント間の区間数に合わせるため、スケーリングを行う。これは、動画処理においては、同期ポイント間のマクロブロックに応じて処理量や処理時間が異なるので、記録データと累積記録データとの時間軸を合わせるためである。
【0116】
算出部124は、例えば、スケーリングされた区間のデータバス占有割合と、対応する累積記録データの区間のデータバス占有割合とのSADを算出する。
【0117】
更新部125は、算出部124により算出された区間毎のSADに基づいて、累積記録データを区間毎に更新する。
【0118】
これにより、累積記録データを更新することで、処理対象のマクロブロックと近傍の過去に処理されたマクロブロックのメモリアクセスに基づくアクセスパターンを学習することができる。
【0119】
なお、図9に示す白の区間が空き時間を示す。粗密記録部120は、現在処理されているマクロブロックのトランザクションが累積記録データのどこに対応するかを判断することで、次に空き時間となる図9に示す白の区間を予測することができる。
【0120】
また、メモリアクセスの学習の精度を上げるため、記録部121は、定常以外の臨時、固定については、記録を行わないとすることもできる。累積記録データは、動画処理の各マクロブロックに対する符号化時のアクセスパターンを知るためのものであるので、定期的にアクセスがある固定スロットと、臨時にアクセスされる臨時データトランザクションとを学習対象から除外する。
【0121】
図10は、アクセスパターンの学習対象を説明するための図である。図10に示すように、動画処理のMBLineの処理の間に臨時又は固定のメモリアクセスが発生する。表示系のリアルタイム処理は、定期的にアクセスされるが、図10に示すように動画処理を基準に考えれば、各マクロブロックの処理量や処理時間は異なるため、不定期にアクセスされるようにみえる。
【0122】
よって、粗密記録部120は、固定/臨時データ検出部110により検出された固定及び臨時のメモリアクセスについては、そのデータバスの占有割合については記録を行わない。
【0123】
(ベストエフォート系アクセスの実行処理)
次に、ベストエフォート系のメモリアクセスが実行される処理について説明する。図11は、バス権付与部130の構成の一例を示す図である。図11に示すバス権付与部130は、FIFO131、実行部132、分割部133を有する。
【0124】
FIFO131は、ベストエフォート系のメモリアクセス要求を1つ以上連続して蓄積する蓄積部である。このとき、粗密記録部120は、FIFO131の先頭に蓄積されているメモリアクセスのサイズを取得してもよい。
【0125】
実行部132は、例えばスイッチであり、粗密記録部120から受けた許可信号がONの場合に、FIFO131の先頭に蓄積されているメモリアクセス要求にバス権を付与し、このメモリアクセスを実行する。
【0126】
許可信号は、リアルタイム系処理の累積記録データに基づいて予測された空き時間にONになる。また、許可信号は、リアルタイム系処理の累積記録データでバスデータの占有割合が空いていない時間、又は臨時のリアルタイム系処理があった場合にOFFになる。
【0127】
また、バス権付与部130は、図11に示す分割部133を有してもよい。分割部133は、粗密記録部120から空き時間のサイズを取得する。分割部133は、ベストエフォート系のメモリアクセスによるバスの占有時間が、取得した空き時間よりも大きい場合、このメモリアクセスを分割する。
【0128】
これにより、ベストエフォート系のメモリアクセス要求のサイズが大きい場合に、このメモリアクセスがなかなか実行されないという事態を避けることができる。
【0129】
<比較>
次に、実施例におけるベストエフォート系のメモリアクセスの実行タイミングと、従来例におけるベストエフォート系のメモリアクセスの実行タイミングとの比較について説明する。
【0130】
図12は、実施例と従来例との比較を説明するための図である。図12(A)は、上述した実施例によるベストエフォート系のメモリアクセスのタイミングを示す。また、実施例では、リアルタイム系処理のメモリアクセスのパターンを学習する。実施例では、学習したメモリアクセスのパターンから、ベストエフォート系のメモリアクセスを実行することが可能な空き時間があるかを予測する。図12(A)に示すように、実施例では、予測した空き時間に、ベストエフォート系のメモリアクセスを実行する。
【0131】
図12(B)は、従来例によるベストエフォート系のメモリアクセスのタイミングを示す。従来例は、一般的なアービターを想定する。一般的なアービターは、バスの占有時間に空き時間があればメモリアクセスを実行する。
【0132】
図12(B)に示すように、従来例では、データ転送の占有割合に対する考慮がなく、空き時間にベストエフォート系のメモリアクセスを実行してしまうと、その後のリアルタイム系処理を待たせてしまう場合がある。
【0133】
一方、実施例では、リアルタイム系処理のアクセスパターンを学習することで、空き時間があった場合に、その空き時間でベストエフォート系のメモリアクセスを処理完了することができるかを予測することができる。
【0134】
よって、実施例では、予測された空き時間があっても、その後のリアルタイム系処理を遅延させると判断された場合には、ベストエフォート系処理のメモリアクセスを実行しない。
【0135】
<動作>
次に、実施例における撮像装置1の動作について説明する。図13は、1つのメモリアクセス要求に対する撮像装置1のアクセス制御処理の一例を示すフローチャートである。図13に示すステップS101で、アクセス判別部100は、アクセス要求元から取得したメモリアクセス要求が、リアルタイム系かベストエフォート系かを判別する。メモリアクセス要求がリアルタイム系である場合はステップS102に進み、メモリアクセス要求がベストエフォート系である場合はステップS106に進む。
【0136】
ステップS102で、記録部121は、要求されたメモリアクセスのトランザクションを記録する。例えば、記録部121は、同期ポイント間の区間毎のデータバスの占有割合を記録する。
【0137】
ステップS103で、スケーリング部123は、記録部121により記録された記録データの同期ポイント間を、累積記録データの同期ポイント間の時間軸に合わせるため、スケーリングを行う。
【0138】
ステップS104で、算出部124は、記録データと累積記録データとの同期ポイント間の区間毎に、データバスの占有割合の類似度を算出する。
【0139】
ステップS105で、更新部125は、算出された類似度に基づいて、記録データを用いて累積記録データを更新する。この累積記録データが、リアルタイム系処理のアクセスパターンを表す。
【0140】
ステップS106で、バス権付与部130は、ベストエフォート系のメモリアクセス要求を蓄積する。例えば、FIFO131が、ベストエフォート系のメモリアクセス要求を蓄積する。
【0141】
図14は、ベストエフォート系処理のアクセス実行処理の一例を示すフローチャートである。図14に示すステップS201で、実行部132は、粗密記録部120から取得した許可信号がONであるかを判定する。許可信号がONであれば(ステップS201−YES)ステップS202に進み、許可信号がOFFであれば(ステップS201−NO)ステップS201に戻る。
【0142】
なお、許可信号は、粗密記録部120において、FIFO131先頭のメモリアクセスサイズを実行可能な空き時間が累積記録データにある場合に、ONとなる。
【0143】
ステップS202で、実行部132は、FIFO131先頭のメモリアクセス要求を実行する。なお、実行されるベストエフォート系のメモリアクセスは、空き時間に基づいて分割されてもよい。
【0144】
以上、実施例によれば、リアルタイム系処理を優先しつつ、リアルタイム系処理の間にベストエフォート系処理を適切に処理させることで、効率の良いメモリアクセス制御を行うができる。
【0145】
以上、実施例について詳述したが、上記の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例の構成要素を全部又は複数を組み合わせることも可能である。
【0146】
なお、以上の実施例に関し、さらに以下の付記を開示する。
(付記1)
動画撮影中に静止画を撮影可能な撮像装置であって、
動画処理を含むリアルタイム性が要求される処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録する記録部と、
静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積する蓄積部と、
前記記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積する累積部と、
累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、前記蓄積部に蓄積された第2要求を実行する実行部と、
を備える撮像装置。
(付記2)
前記累積部は、
累積された各同期ポイント間の区間数に応じて、前記記録部に記録された各同期ポイント間の区間数をスケーリングするスケーリング部と、
スケーリング後の各同期ポイント間の区間毎に、該区間と、該区間に対応する累積された区間とのトランザクションの類似度を算出する算出部と、
区間毎の前記類似度に応じて、累積された区間毎のトランザクションを更新する更新部と、
を備える付記1記載の撮像装置。
(付記3)
メモリアクセス要求を受けた場合、該メモリアクセス要求を、前記第1要求と前記第2要求とが設定されたテーブルを参照して、前記第1要求か前記第2要求かを判別する判別部をさらに備え、
前記記録部は、
前記判別部により判別された前記第1要求を受け取り、
前記蓄積部は、
前記判別部により判別された前記第2要求を受け取る付記1又は2記載の撮像装置。
(付記4)
前記同期ポイントを、画像を格納する領域内の特定の領域に対するメモリアクセスにより抽出する抽出部をさらに備える付記1乃至3いずれか一項に記載の撮像装置。
(付記5)
前記記録部は、
画像内の所定の領域で抽出された同期ポイント間における区間毎のトランザクションを記録する付記1乃至4いずれか一項に記載の撮像装置。
(付記6)
前記実行部により実行される第2要求によるメモリアクセスを、前記空き時間に基づいて分割する分割部をさらに備える付記1乃至5いずれか一項に記載の撮像装置。
(付記7)
前記累積部は、
画像のピクチャタイプ毎に、複数の同期ポイント間における区間毎のトランザクションを累積し、
前記更新部は、
現在の処理対象画像のピクチャタイプに対応する、累積された複数の同期ポイント間における区間毎のトランザクションを更新する付記1乃至6いずれか一項に記載の撮像装置。
(付記8)
前記記録部は、
前記第1要求が、動画のビットストリームのWrite要求を含む臨時のメモリアクセス要求又は表示系のメモリアクセス要求を含む定期的なメモリアクセス要求ではない場合に、前記トランザクションの記録を行う請求項1乃至7いずれか一項に記載の撮像装置。
(付記9)
リアルタイム性が要求される動画処理に関する処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録部に記録し、
静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積部に蓄積し、
前記記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積部に累積し、
前記累積部に累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、前記蓄積部に蓄積された第2要求を実行する処理をコンピュータが実行するアクセス制御方法。
【符号の説明】
【0147】
1 撮像装置
20 キャプチャ処理部
30 静止画向け処理部
40 動画向け処理部
50 電子ビューファインダー用映像処理部
60 バス制御部
70 メモリ
100 アクセス判別部
110 固定/臨時データ検出部
111 同期ポイント抽出部
120 粗密記録部
121 記録部
122 累積部
123 スケーリング部
124 算出部
125 更新部
130 バス権付与部
131 FIFO
132 実行部
133 分割部
【特許請求の範囲】
【請求項1】
動画撮影中に静止画を撮影可能な撮像装置であって、
動画処理を含むリアルタイム性が要求される処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録する記録部と、
静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積する蓄積部と、
前記記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積する累積部と、
累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、前記蓄積部に蓄積された第2要求を実行する実行部と、
を備える撮像装置。
【請求項2】
前記累積部は、
累積された各同期ポイント間の区間数に応じて、前記記録部に記録された各同期ポイント間の区間数をスケーリングするスケーリング部と、
スケーリング後の各同期ポイント間の区間毎に、該区間と、該区間に対応する累積された区間とのトランザクションの類似度を算出する算出部と、
区間毎の前記類似度に応じて、累積された区間毎のトランザクションを更新する更新部と、
を備える請求項1記載の撮像装置。
【請求項3】
メモリアクセス要求を受けた場合、該メモリアクセス要求を、前記第1要求と前記第2要求とが設定されたテーブルを参照して、前記第1要求か前記第2要求かを判別する判別部をさらに備え、
前記記録部は、
前記判別部により判別された前記第1要求を受け取り、
前記蓄積部は、
前記判別部により判別された前記第2要求を受け取る請求項1又は2記載の撮像装置。
【請求項4】
前記同期ポイントを、画像を格納する領域内の特定の領域に対するメモリアクセスにより抽出する抽出部をさらに備える請求項1乃至3いずれか一項に記載の撮像装置。
【請求項5】
前記記録部は、
画像内の所定の領域で抽出された同期ポイント間における区間毎のトランザクションを記録する請求項1乃至4いずれか一項に記載の撮像装置。
【請求項6】
前記実行部により実行される第2要求によるメモリアクセスを、前記空き時間に基づいて分割する分割部をさらに備える請求項1乃至5いずれか一項に記載の撮像装置。
【請求項7】
前記累積部は、
画像のピクチャタイプ毎に、複数の同期ポイント間における区間毎のトランザクションを累積し、
前記更新部は、
現在の処理対象画像のピクチャタイプに対応する、累積された複数の同期ポイント間における区間毎のトランザクションを更新する請求項1乃至6いずれか一項に記載の撮像装置。
【請求項8】
前記記録部は、
前記第1要求が、動画のビットストリームのWrite要求を含む臨時のメモリアクセス要求又は表示系のメモリアクセス要求を含む定期的なメモリアクセス要求ではない場合に、前記トランザクションの記録を行う請求項1乃至7いずれか一項に記載の撮像装置。
【請求項9】
リアルタイム性が要求される動画処理に関する処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録部に記録し、
静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積部に蓄積し、
前記記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積部に累積し、
前記累積部に累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、前記蓄積部に蓄積された第2要求を実行する処理をコンピュータが実行するアクセス制御方法。
【請求項1】
動画撮影中に静止画を撮影可能な撮像装置であって、
動画処理を含むリアルタイム性が要求される処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録する記録部と、
静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積する蓄積部と、
前記記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積する累積部と、
累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、前記蓄積部に蓄積された第2要求を実行する実行部と、
を備える撮像装置。
【請求項2】
前記累積部は、
累積された各同期ポイント間の区間数に応じて、前記記録部に記録された各同期ポイント間の区間数をスケーリングするスケーリング部と、
スケーリング後の各同期ポイント間の区間毎に、該区間と、該区間に対応する累積された区間とのトランザクションの類似度を算出する算出部と、
区間毎の前記類似度に応じて、累積された区間毎のトランザクションを更新する更新部と、
を備える請求項1記載の撮像装置。
【請求項3】
メモリアクセス要求を受けた場合、該メモリアクセス要求を、前記第1要求と前記第2要求とが設定されたテーブルを参照して、前記第1要求か前記第2要求かを判別する判別部をさらに備え、
前記記録部は、
前記判別部により判別された前記第1要求を受け取り、
前記蓄積部は、
前記判別部により判別された前記第2要求を受け取る請求項1又は2記載の撮像装置。
【請求項4】
前記同期ポイントを、画像を格納する領域内の特定の領域に対するメモリアクセスにより抽出する抽出部をさらに備える請求項1乃至3いずれか一項に記載の撮像装置。
【請求項5】
前記記録部は、
画像内の所定の領域で抽出された同期ポイント間における区間毎のトランザクションを記録する請求項1乃至4いずれか一項に記載の撮像装置。
【請求項6】
前記実行部により実行される第2要求によるメモリアクセスを、前記空き時間に基づいて分割する分割部をさらに備える請求項1乃至5いずれか一項に記載の撮像装置。
【請求項7】
前記累積部は、
画像のピクチャタイプ毎に、複数の同期ポイント間における区間毎のトランザクションを累積し、
前記更新部は、
現在の処理対象画像のピクチャタイプに対応する、累積された複数の同期ポイント間における区間毎のトランザクションを更新する請求項1乃至6いずれか一項に記載の撮像装置。
【請求項8】
前記記録部は、
前記第1要求が、動画のビットストリームのWrite要求を含む臨時のメモリアクセス要求又は表示系のメモリアクセス要求を含む定期的なメモリアクセス要求ではない場合に、前記トランザクションの記録を行う請求項1乃至7いずれか一項に記載の撮像装置。
【請求項9】
リアルタイム性が要求される動画処理に関する処理のメモリアクセス要求を示す第1要求が実行される際に、複数の同期ポイント間における区間毎のトランザクションを記録部に記録し、
静止画処理に関する処理のメモリアクセス要求を示す第2要求を蓄積部に蓄積し、
前記記録部に記録された区間毎のトランザクションを用いて、複数の同期ポイント間における区間毎のトランザクションを累積部に累積し、
前記累積部に累積された複数の同期ポイント間における区間毎のトランザクションに基づいて予測されたメモリアクセスの空き時間に、前記蓄積部に蓄積された第2要求を実行する処理をコンピュータが実行するアクセス制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図10】
【図11】
【図13】
【図14】
【図9】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図10】
【図11】
【図13】
【図14】
【図9】
【図12】
【公開番号】特開2013−90161(P2013−90161A)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2011−229222(P2011−229222)
【出願日】平成23年10月18日(2011.10.18)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願日】平成23年10月18日(2011.10.18)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]