JP2016091049A - データ処理装置、データ処理方法及びプログラム - Google Patents

データ処理装置、データ処理方法及びプログラム Download PDF

Info

Publication number
JP2016091049A
JP2016091049A JP2014220598A JP2014220598A JP2016091049A JP 2016091049 A JP2016091049 A JP 2016091049A JP 2014220598 A JP2014220598 A JP 2014220598A JP 2014220598 A JP2014220598 A JP 2014220598A JP 2016091049 A JP2016091049 A JP 2016091049A
Authority
JP
Japan
Prior art keywords
input data
attribute information
data
area
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014220598A
Other languages
English (en)
Other versions
JP6463081B2 (ja
Inventor
しおり 脇野
Shiori Wakino
しおり 脇野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2014220598A priority Critical patent/JP6463081B2/ja
Priority to US14/919,928 priority patent/US9600854B2/en
Publication of JP2016091049A publication Critical patent/JP2016091049A/ja
Application granted granted Critical
Publication of JP6463081B2 publication Critical patent/JP6463081B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Input (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)

Abstract

【課題】複雑なキャッシュ更新アルゴリズムを不要にして、かつ回路規模を抑えて累積演算処理を行うことができるようにする。【解決手段】入力データ制御部102は、キャッシュ105に演算結果を保持している領域ラベルを優先的に出力する。そして、保持していない領域ラベルの場合は、入力データ制御部102内のFIFOに一旦複数個分の画素データを溜めてからまとめて出力し、キャッシュ105のミスヒットを抑えるようにし、さらに、FIFOへ画素データを複数個溜める際に、できるだけFIFOがフルになるまで溜めることにより、領域ラベルの切り変わる頻度を減らし、キャッシュミス抑制効果をより高めるようにする。【選択図】図1

Description

本発明は、特に、複数の領域に分割して処理を行うために用いて好適なデータ処理装置、データ処理方法及びプログラムに関する。
従来、色や模様、明るさなどの属性が同じになるように画像を複数の領域に分割する技術として領域分割(Segmentation)手法が用いられる(例えば特許文献1参照)。この手法により分割された領域は、その後、領域単位で符号化処理、領域の認識を行うことができるため、画素レベルで画像を処理する場合に比べ処理量を削減することができる。近年、組み込み機器で高解像度の画像に対して画像処理を行うケースは増えてきており、領域分割後の領域単位で処理することにより、組み込み機器でも高解像度の画像に対してリアルタイムに複雑な処理を行うことができると想定される。
このような背景から、リアルタイムに領域分割処理を実現するためにいくつかの手法が提案されている。その中で、色空間(R,G,B)と座標空間(X,Y)との5次元の情報を用いて画素データをクラスタリングすることにより画像を領域に分けるSLIC(Simple Linear Iterative Clustering)と呼ばれる手法がある。
このSLIC手法では、はじめにクラスターの中心となる代表データを画像中において格子状に配置する。この代表データは色空間(l,a,b)と座標空間(X,Y)との5次元の情報を持つ。なお、SLIC手法において色空間はCIELAB(l,a,b)を用いているが、RGB(R,G,B)やYCC(Y,Cb,Cr)などを用いることもできる。また、代表データはシードやクラスター中心(cluster centroid)とも呼ばれる。SLIC手法はクラスタリングの1つであるk-means法をベースにしており、各画素を格子状に配置した代表点にクラスタリングする。SLIC手法とk-means法との違いは代表点にクラスタリングする座標空間を所定範囲に限定している点にある。SLIC手法により生成された領域は比較的形状が同じになり領域の数が安定することが特徴であり、この分割された領域はスーパーピクセルと呼ばれている。
さらに、このスーパーピクセルのオブジェクトを認識する技術も開発されており、この技術は撮影画像のシーン判別等に応用される。スーパーピクセルのオブジェクトを認識する処理では、スーパーピクセルの特徴量を抽出し、抽出した特徴量を解析してオブジェクトを認識する。また、スーパーピクセルを形成する画素毎に抽出した特徴量の累積データをスーパーピクセルの特徴量として採用することがある。
ここで、スーパーピクセルの特徴量を抽出する処理では累積演算が行われる。累積演算のように過去の演算結果を参照する演算を行うと、過去の演算結果を内部で保持できない場合は外部メモリへのリードモディファイライトアクセスが発生する。外部メモリへのアクセスは、データを要求してから到着するまでの時間だけアクセスレイテンシがかかる。したがって、頻繁に外部メモリへアクセスする構成の場合には、外部メモリへのアクセスがボトルネックになり、特徴量演算の性能が上がらないという問題が生じる。
そこで、一般的に、メモリとの間の読み書きの時間を削減する手法としてキャッシュが知られている。キャッシュを用いると、メモリ領域の一部のデータをキャッシュ内部に保持し、繰り返し使用することによってメモリへのアクセス回数を削減することができる。
特開2007−272681号公報
しかし、オブジェクトが複雑に入り組んでいる画像では、領域分割結果も複数の領域ラベルが入り組んで複雑になっている。そのため、頻繁に複数の領域ラベルが切り替わる画像では、キャッシュのヒット率が落ちて、性能が低下する。したがって、キャッシュを使用したシステムにおいて、ヒット率の改善を図る場合には、キャッシュデータ容量を増やすか、あるいは、キャッシュ更新アルゴリズムを設計することが考えられる。
しかしながら、オブジェクトが複雑に入り組んでいる画像でもキャシュヒット率が低下しないようにキャッシュデータ容量を増やすと、回路規模が増加するという問題点がある。また、複雑なキャッシュ更新アルゴリズムは、設計が複雑になり、追加するハードウェアも多くなるという問題点がある。
本発明は前述の問題点に鑑み、複雑なキャッシュ更新アルゴリズムを不要にして、かつ回路規模を抑えて累積演算処理を行うことができるようにすることを目的としている。
本発明に係るデータ処理装置は、複数の入力データと前記複数の入力データそれぞれの属性情報とを受信し、前記属性情報に応じた順序で出力する制御手段と、前記制御手段によって出力された入力データと属性情報とに対して、該属性情報に係る過去の演算結果を参照して演算処理を行う演算手段と、前記演算手段による過去の演算結果を内部に保持が可能な保持手段とを有し、前記制御手段は、前記複数の入力データのそれぞれの属性情報に係る過去の演算結果が前記保持手段に保持されているか否かに応じて、前記複数の入力データを出力する順序を制御することを特徴とする。
本発明によれば、複雑なキャッシュ更新アルゴリズムを不要にして、かつ回路規模を抑えて累積演算処理を行うことができる。
第1の実施形態に係るデータ処理装置の構成例を示すブロック図である。 第1の実施形態における入力データ制御部の内部構成例を示すブロック図である。 FIFO管理テーブルの一例を示す図である。 第1の実施形態におけるデータパス制御部による処理手順の一例を示すフローチャートである。 第1の実施形態におけるキャッシュの内部構成例を示すブロック図である。 第1の実施形態におけるキャッシュコントローラによる処理手順の一例を示すフローチャートである。 外部メモリの領域を説明するための図である。 第1の実施形態において、入力データ制御部における入力順序及び出力順序を比較した例を示す図である。 入力データ制御部による処理順序の入れ替え効果を説明するための図である。 第2の実施形態に係るデータ処理装置の構成例を示すブロック図である。 第2の実施形態における入力データ制御部及びキャッシュの内部構成例を示すブロック図である。 第2の実施形態におけるデータパス制御部による処理手順の一例を示すフローチャートである。 第2の実施形態におけるキャッシュコントローラによる処理手順の一例を示すフローチャートである。 入力データ制御部による処理順序の入れ替え効果を説明するための図である。 画像を領域分割処理し、分割した領域の特徴量を抽出する一般的なデータ処理装置の構成例を示すブロック図である。 領域分割処理を説明するための図である。 処理するX,Y座標と優先領域ラベルとの関係を説明するための図である。
(第1の実施形態)
以下、本発明の実施形態について、図面を参照しながら説明する。まず、画像を領域分割して分割した領域の特徴量を抽出する一般的な処理手順について説明する。
図15は、画像を領域分割処理し、分割した領域の特徴量を抽出する一般的なデータ処理装置の構成例を示すブロック図である。
図15に示すデータ処理装置1500は、入力画像データを特徴が一様な領域に分割し、分割した領域の特徴量を算出し、画像データを複数のブロックに分けてブロック単位で処理する。ブロック単位で処理する方法については例えば特開平8−30787号公報に開示されている。
また、データ処理装置1500は、領域分割部1501、特徴量演算部1502、DMAC1503、及び外部メモリ1504で構成され、特徴量演算部1502及びDMAC1503はシステムバス1505を介して外部メモリ1504へ接続されている。
次に、図15に示す各構成ブロックの機能、および図16(a)に示す入力画像データを処理するときの動作について説明する。外部メモリ1504には、入力画像データ(R,G,B)や領域分割処理に使用する代表点の情報が格納されている。また、特徴量演算部1502の演算結果を格納する領域としても使用され、その他処理結果を格納する領域として使用することも可能である。
DMAC1503は、外部メモリ1504から入力画像データをブロック単位でラスタ順に読み出し、画素単位で領域分割部1501と特徴量演算部1502とに転送する。さらに、DMAC1503は入力画像データを読み出すアドレスから画像データの座標(X,Y)を計算する機能を備え、画素データを(R,G,B,X,Y)に拡張して領域分割部1501と特徴量演算部1502とに転送する。また、DMAC1503は、外部メモリ1504から領域分割処理に使用するブロックの内部に配置された代表点とその周囲の代表点との情報も読み出し、領域分割部1501に転送する。
領域分割部1501は、代表点の情報と画素データ(R,G,B,X,Y)の情報とをDMAC1503から入力し、画素データを代表点のいずれかにクラスタリングし、領域ラベルを特徴量演算部1502に出力する。このとき、DMAC1503を経由して領域分割結果を外部メモリ1504に書き戻してもよい。
特徴量演算部1502は、DMAC1503から出力された画素データ(R,G,B,X,Y)の情報を用いて画素の特徴量を演算し、領域ラベル毎に累積する。このとき、1画素の特徴量は256バイトになることもあるため、一時的に外部メモリ1504へ格納する。また、特徴量演算部1502は、領域分割部1501から領域ラベルを入力すると、対応する過去の演算結果を外部メモリ1504から読み出し、演算した特徴量を加算し、外部メモリ1504へ書き込む。
領域ごとに特徴量を算出する場合、累積演算のように過去の演算結果を参照する演算を行う。したがって、頻繁に外部メモリへアクセスする構成の場合には、外部メモリへのアクセスがボトルネックになり、特徴量演算の性能が上がらない。そこで、キャッシュを用いることにより、メモリ領域の一部のデータをキャッシュ内部に保持し、繰り返し使用することによってメモリへのアクセス回数を削減することができる。しかしながら、オブジェクトが複雑に入り組んでいる画像では、領域分割結果も複数の領域ラベルが入り組んで複雑になっている。そのため、頻繁に複数の領域ラベルが切り替わる画像では、キャッシュのヒット率が落ちて、性能が低下する。
例えば、図16に示したように1ブロック中の画素は、初期ラベルか周囲のラベルかに割り振られる。周囲のラベルに比べ、初期ラベルが占める割合が多いが、ラスタ順に処理をするときは、散発的にしか現れない周囲の領域ラベルも初期ラベルと同様に順次処理する。そのため、現れる頻度の低い領域ラベルによってキャッシュが更新され、場合によっては現れる頻度の高い領域ラベルの演算結果をキャッシュアウトしてしまうことがある。
そこで本実施形態においては、キャッシュを設けた構成であって、かつ回路規模を増大させないようにしてヒット率を向上させたデータ処理装置を提供する。以下、図1〜図9を参照しながら本発明の第1の実施形態について説明する。
図1は、本実施形態に係るデータ処理装置100の構成例を示すブロック図である。以下、図16(a)に示す画像データを処理する例について説明する。
図1に示すデータ処理装置100は、入力画像データを複数の領域に分割し、分割した領域の特徴量を算出する。このとき、入力画像データを複数のブロックに分けてブロック単位で処理する。データ処理装置100は、領域分割部101、入力データ制御部102、特徴量演算部103、DMAC104、キャッシュ105、および外部メモリ106で構成されている。また、DMAC104、キャッシュ105はシステムバス107を介して外部メモリ106へ接続されている。
次に、図1に示す各構成の機能、および図16に示す画像データを処理するときの動作について説明する。
外部メモリ106には、処理に必要な入力データが格納されており、図示しないCPU等の処理により予め入力データが用意されている。また、外部メモリ106は、各ブロックの処理結果を格納する領域としても使用される。
図7は、外部メモリ106の領域を説明するための図である。入力データを格納する領域701には、画像データ(R,G,B)や、領域分割部101が処理に用いる代表点の情報、その他のパラメータ等が格納される。処理結果データを格納する領域702には、特徴量演算部103が生成する領域特徴量の演算結果が格納される。このとき、領域特徴量の演算結果を格納するためには、領域特徴量のデータ量×領域ラベル数の容量が必要になる。本実施形態では、領域特徴量のデータ量を256バイトとし、領域ラベルは、「0」から順に「0x80_0000」、「0x80_0100」、「0x80_0200」、・・・、「0x88_6EFF」まで割り当てられているものとする。また、それ以降の領域には、領域分割部101の処理結果を格納できるようにしてよい。
DMAC104は、領域分割部101と外部メモリ106との間、および入力データ制御部102と外部メモリ106との間でデータを転送するDMAコントローラであり、図示しないCPUによって制御される。CPUが処理開始のトリガを与えると、DMAC104は、外部メモリ106において入力データを格納する領域701から、領域分割部101が1ブロックの領域分割処理に必要なパラメータや代表点のデータを読み出し、領域分割部101に転送する。さらに、その後、画像データをブロック単位でラスタ順に読み出し、領域分割部101と入力データ制御部102とに画素単位で転送する。
また、DMAC104は画像データを読み出すアドレスから画素データの座標(X,Y)を計算することが可能であり、計算結果を画素データ(R,G,B,X,Y)に拡張して領域分割部101と入力データ制御部102とに転送する。さらに、DMAC104は、領域分割部101の分割処理結果を外部メモリ106に格納することも可能である。DMAC104は、全画像データの転送が終わるとCPUに終了を通知する。
領域分割部101は、代表点の情報と画素データ(R,G,B,X,Y)とを用いて画素データを代表点のいずれかにクラスタリングする。なお、領域分割部101は専用ハードウェアで構成してもよく、CPUによって実行させるプログラムで構成してもよい。
具体的には、領域分割部101は、DMAC104から、はじめに領域分割処理に係るパラメータを受け取る。続いて1ブロックの処理に必要な代表点の情報を入力し、1ブロックの画素データをラスタ順に入力して分割処理を開始する。そして、画素毎にどの代表点に対応する領域に属するか判定し、判定された領域を表す属性情報である領域ラベル情報(L)を入力データ制御部102に転送する。このとき、DMAC104にも領域ラベル情報(L)を転送し、外部メモリ106に分割処理結果を格納してもよい。
図16(a)は、図1のデータ処理装置100で処理する画像データの一例を示す図であり、図16(b)は、領域分割部101で処理した領域分割の処理結果の一例を示す図である。図16(a)に示す例では、画像サイズは縦360画素、横600画素とし、画素データは、色データ(R,G,B)24ビットで構成されている。画像の座標位置は、左上の座標を原点(X,Y)=(0,0)とし、水平方向にXの値が増加、垂直方向にYの値が増加する。縦横30画素のブロックに分けて原点から水平方向に処理していき、右端まで処理するとX=0の位置に戻り、下側のブロックを処理する。
ここで領域分割処理は、1ブロック中に9個の代表点を配置して行うものとし、はじめに画像全体に代表点を格子状に配置し、各代表点に、0、1、2、・・・、2159とユニークな番号(以下、領域ラベルと呼ぶ)を割り振る。領域分割処理後、代表点は各領域の中心に補正され、各画素はいずれかの領域に属することになり、その領域ラベルが割り振られる。1ブロック中の画素は、はじめにそのブロックに配置したいずれかの代表点の領域ラベル(初期ラベル)、もしくはその周囲のブロックの代表点の領域ラベルが割り振られるが、周囲のラベルに比べ、初期ラベルが割り振られる確率が高い。例えば図16(a)に示す、初期ラベルに「183」、「184」、「185」、「203」、「204」、「205」、「263」、「264」、「265」が割り振られたブロックの場合は、図16(b)に示す結果となる。図16(b)に示す例は、このブロック内の一部において周囲のブロックの代表点の領域ラベルである「124」、「182」、「302」が割り振られた例を示している。分割した領域の特徴量は、同一の領域ラベルが割り振られた画素の特徴量を累積して得られる。
特徴量演算部103は、画素データ(R,G,B,X,Y)を用いて特徴量を抽出し、同一領域ラベルの画素データの特徴量を累積する。特徴量演算部103は専用ハードウェアで構成しても、CPUによって実行させるプログラムで構成してもよい。
具体的には、特徴量演算部103は、入力データ制御部102から画素データ(R,G,B,X,Y)を入力し、演算処理を行う。演算する特徴量は、具体的にはRGBの色平均や、X,Yモーメント、色ヒストグラム等である。そして、入力データ制御部102から領域ラベル情報(L)を受け取ると、過去の同一の領域ラベルの演算結果をキャッシュ105に要求する。要求する領域ラベルの演算結果が格納されているアドレスは、オフセットアドレス(ここでは0x80_0000)+領域ラベル番号×256で一意に決定する。そして、キャッシュ105からデータを受信すると、演算結果を加算し、同一アドレスに書き戻す。
キャッシュ105は、特徴量演算部103と外部メモリ106との間でデータの転送を行うブロックである。図5は、本実施形態におけるキャッシュ105の内部構成例を示すブロック図である。
図5に示すように、キャッシュ105はキャッシュメモリ501を備えており、バリッドフラグ領域502、ダーティフラグ領域503、タグ領域504、およびデータ領域505が割り当てられている。以下、それぞれの領域について説明する。
バリッドフラグ領域502には、データ領域505のデータが有効であるか否かを示すバリッドフラグが格納されている。ダーティフラグ領域503には、キャッシュラインを外部メモリ106へ書き戻す必要があるか否かを示すダーティフラグが格納されている。データ領域505には、外部メモリ106のコピーデータ(キャッシュデータ)が格納されている。
本実施形態のキャッシュ105は、キャッシュラインを1つの領域ラベルの特徴演算結果が格納可能な256バイトとし、キャッシュライン毎にバリッドフラブ、ダーティフラグ、タグを持つものとする。また、マッピング方式はフルアソシエイティブ方式とする。ここではキャッシュ105のサイズは、4領域分の特徴演算結果が格納可能な1KBとする。アドレス下位8ビットはキャッシュライン上のアドレスを示し、アドレス9〜20ビット目の12ビットをタグ領域504に格納し、領域ラベルの先頭アドレスを識別可能とする。なお、21〜32ビット目はオフセットアドレスであり、固定値なのでタグ領域504に格納する必要はなく、キャッシュ105内部のレジスタで静的な値を持てば良い。また、キャッシュ105はフルアソシエイティブ方式に限定されず、セットアソシエイティブ方式やダイレクトマップ方式も適用可能である。
キャッシュコントローラ506は、キャッシュメモリ501の読み書きを制御するコントローラであり、ヒット判定部507およびデータ転送部508を備えている。ヒット判定部507は、要求されたアドレスとタグ領域504に格納されたアドレスとの比較を行い、要求データがキャッシュメモリ501に存在するか否かを判定する。そして、存在する場合はヒットとし、存在しない場合ミスヒットとする。
データ転送部508は、ヒット判定部507の判定結果に従って、特徴量演算部103とキャッシュメモリ501との間のデータ転送、またはキャッシュメモリ501と外部メモリ106との間のデータ転送を行う。
なお、ミスヒット時は、キャッシュ内で最も長く参照されていないラインを置き換えるLRU法(Least-Recently-Used)によりタグの配置を決定するものとし、図示しないLRUキューをキャッシュコントローラ506内部に備えるものとする。LRUキューは先頭から順に長く参照されていないことを示すキューであり、バリッドフラグが立っていないキャシュラインにデータが読み出された場合は、そのタグをLRUキューの最後尾に格納する。また、キャッシュラインのリプレースがあった場合はリプレースされたタグをLRUキューから抜き、リプレースしたタグを最後尾に格納する。さらに、キャシュラインへのアクセスがあった場合は、アクセスされたタグをLRUキューから一旦抜き、最後尾に格納する。
また、バリッドフラグ領域502およびタグ領域504の全キャッシュラインに対応するデータは外部に出力され、外部よりキャッシュ105の内部状態が参照可能となっている。
図6は、キャッシュコントローラ506による処理手順の一例を示すフローチャートである。ここで、特徴量演算部103がアクセスするデータがキャッシュメモリ501に格納されていない場合の動作について説明する。
まず、特徴量演算部103からアクセスが発生すると処理を開始する。そして、ヒット判定部507は、バリッドフラグがセットされているキャッシュラインのタグ領域504をサーチして要求されたアドレスとタグ領域504に格納されたアドレスとを比較し、ヒットかミスヒットかを判定する(S601)。この判定の結果、アドレスが一致する場合(ヒットの場合)はS610に進む。
一方、S601の判定の結果、アドレスが一致しない場合(ミスヒットの場合)は、キャッシュコントローラ506は、バリッドフラグがクリアされているキャッシュラインがあるか否かを判定する(S602)。この判定の結果、バリッドフラグがクリアされているキャッシュラインがある場合はS608に進む。
一方、S602の判定の結果、バリッドフラグがクリアされているキャッシュラインがない場合は、キャッシュコントローラ506は、LRUキューで先頭に格納されているタグを、リプレースするキャッシュラインのタグに選択する(S603)。そして、選択したキャッシュラインのタグをLRUキューから抜く(S604)。
次に、キャッシュコントローラ506は、選択したキャッシュラインのダーティフラグがセットされているか否かを判定する(S605)。この判定の結果、ダーティフラグがセットされている場合は、データ転送部508は、選択したキャッシュラインのデータを外部メモリ106に書き戻す(S606)。そして、キャッシュコントローラ506は、選択したキャッシュラインのダーティフラグ、およびバリッドフラグをクリアする(S607)。一方、S605の判定の結果、ダーティフラグがセットされていない場合はS606およびS607をスキップしてS608に進む。
次に、データ転送部508は、外部メモリ106からキャッシュ105へ、特徴量演算部103がアクセスするキャッシュライン分のデータを読み出し、キャッシュ105を更新する(S608)。そして、キャッシュ更新後、キャッシュコントローラ506は、そのキャッシュラインのバリッドフラグをセットし(S609)、アドレスから抽出したタグをLRUキューの最後尾に格納する(S610)。
次に、キャッシュコントローラ506は、特徴量演算部103のアクセスがリードアクセスであるか否かを判定する(S611)。この判定の結果、リードアクセスである場合は、データ転送部508は、該当するデータを特徴量演算部103に送る(S612)。一方、S611の判定の結果、ライトアクセスである場合は、キャッシュコントローラ506は、書き込みするデータによりキャッシュラインを更新し(S613)、ダーティフラグをセットする(S614)。
次に、特徴量演算部103がアクセスするデータがキャッシュメモリ501に格納されている場合の動作について説明する。特徴量演算部103からアクセスが発生すると処理を開始する。ヒット判定部507によりS601でヒットと判定された場合には、S602〜S609の処理は省略され、キャッシュコントローラ506は、特徴量演算部103のアクセスがリードアクセスであるか否かを判定する(S611)。リードアクセスである場合には該当するデータを特徴量演算部103に送り(S612)、ライトアクセスである場合には、書き込むデータによりキャッシュラインを更新し(S613)、ダーティフラグをセットする(S614)。この場合、外部メモリ106へのアクセスは発生しない。
図1の説明に戻り、入力データ制御部102は、キャッシュ105の内部状態に応じて、入力データの順序を入れ替えながら出力する。入力データ制御部102は、DMAC104から画素データ(R,G,B,X,Y)を受信するとともに、領域分割部101からその画素データの領域ラベル情報(L)を受信し、出力用の画素データ(R,G,B,X,Y)および領域ラベル情報(L)を特徴量演算部103に出力する。以下、入力された画素データ、領域ラベルを、それぞれ入力画素データ、入力領域ラベルと呼び、出力する画素データ、領域ラベルを、それぞれ出力画素データ、出力領域ラベルと呼ぶ。また、入力データ制御部102は、キャッシュ105のタグおよびバリッドフラグを参照し、キャッシュ105に現在どの領域ラベルの演算結果が格納されているかを把握する。
図2は、入力データ制御部102の詳細な内部構成例を示すブロック図である。
図2において、入力データ保持部201は、DMAC104から受信した画素データ(R,G,B,X,Y)を保持する。本実施形態では、R,G,Bは夫々8ビット、X,Yは夫々9ビットとし、1画素あたり42ビットのデータで構成されるものとする。また、入力データ保持部201は3つのFIFOで構成され、それぞれをFIFO[0]、FIFO[1]、FIFO[2]とする。FIFO[0]〜[2]は夫々4段で構成され、1つのFIFOに4画素分の画素データが格納可能である。1つのFIFOには、同一の領域ラベルのデータを格納する。
FIFO管理テーブル202は、入力データ保持部201の状態を格納したテーブルである。図3には、FIFO管理テーブル202の詳細な例を示す。図3において、FIFO番号の領域301は、番号NがFIFO[N]に対応する。格納数の領域302は、FIFOに格納されているデータ数を示している。例えば"0"は格納数0個なのでFIFOに何もデータがない状態、つまりFIFOが空の状態であり、"4"はFIFOが4段構成なので、フルの状態を示している。領域ラベルの領域303はFIFOにどの領域ラベルのデータが入っているかを示しており、格納数が0より大きい場合に有効な値である。FIFOの状態が更新されたとき、後述するデータパス制御部205によって、FIFO管理テーブル202も更新される。
画素データ選択部203は、入力画素データ及び入力データ保持部201内部の3つのFIFOに格納された画素データの中から1つを選択して出力する。選択信号SELは2ビットの信号であり"00"のときはFIFO[0]のデータ、"01"のときはFIFO[1]のデータ、"10"のときはFIFO[2]のデータ、"11"のときは入力画素データを選択する。そして、出力画素データとして出力する。
領域ラベル選択部204は、入力領域ラベル及びFIFO管理テーブル202における領域ラベルの領域303に格納された領域レベルの中から1つを選択して出力する。選択信号SELが"00"のときはFIFO[0]の領域ラベル、"01"のときはFIFO[1]の領域ラベル、"10"のときはFIFO[2]の領域ラベル、"11"のときは入力領域ラベルを選択する。そして、出力領域ラベルとして出力する。
データパス制御部205は、入力画素データ(R,G,B,X,Y)、および入力領域ラベル(領域ラベル情報(L))を、キャッシュ105の内部状態に応じて、一旦内部に保持するか、そのまま出力するかを制御する。これにより、FIFO管理テーブル202の更新や、入力データ保持部201への画素データの保持や取り出しを指示する。さらにデータパス制御部205は、画素データ選択部203、領域ラベル選択部204の選択信号SELを生成する。
データパス制御部205は、キャッシュ105に演算結果を保持している領域ラベルを優先的に出力する。そして、保持していない領域ラベルの場合は、入力データ制御部102内のFIFOに一旦複数個分の画素データを溜めてからまとめて出力し、キャッシュ105のミスヒットを抑えるようにする。このようにFIFOで画素データを複数個溜めることにより頻度の少ない領域ラベルによるミスヒットを抑える効果がある。さらに、FIFOへ画素データを複数個溜める際に、できるだけFIFOがフルになるまで溜めることにより、領域ラベルの切り変わる頻度を減らし、キャッシュミス抑制効果をより高めることができる。
図4は、データパス制御部205による処理手順の一例を示すフローチャートである。なお、図4に示す処理は、1つの画素データに対して行われる処理であり、順次入力されるすべての画素データに対して、図4に示す処理を繰り返すものとする。
まず、最新の画素データ(R,G,B,X,Y)と領域ラベル情報(L)とを受信すると処理がスタートする。そして、入力領域ラベルから特徴量演算部103がアクセスする先頭アドレスAddrを演算する(S401)。なお、先頭アドレスはAddr=L*0x100というように領域番号Lで一意に決まる。
次に、このアドレスの9−20ビット目がタグに登録されているか否かを判定する(S402)。この判定は、バリッドフラグがセットされているタグがアドレスAddr[19:8]と一致するか否かによって行われる。この判定の結果、タグに登録されている場合は、選択信号SELを"11"とし、画素データ選択部203および領域ラベル選択部204に対して、それぞれ入力画素データ、入力領域ラベルをそのまま出力するように制御する(S403)。
一方、S402の判定の結果、タグに登録されていない場合は、クリアされているバリッドフラグがあるか否か、すなわち空いているキャッシュラインがあるか否かを判定する(S404)。この判定の結果、クリアされているバリッドフラグがある場合はS403に進む。
一方、S404の判定の結果、クリアされているバリッドフラグがない場合は、FIFO管理テーブル202をサーチし、入力領域ラベルが領域ラベルの領域303に登録されているラベルと一致するか否かを判定する(S405)。このとき、対象とする領域ラベルは、格納数0より大きい有効な領域ラベルであるものとする。
この判定の結果、FIFO番号iの領域ラベルと一致する場合は、続いてFIFO[i]の格納数が所定数(本実施形態では4つ)、すなわちフル状態であるか否かを判定する(S406)。この判定の結果、FIFO[i]がフル状態でなく、まだ格納可能な状態である場合は、FIFO[i]に入力画素データを格納する(S407)。そして、FIFO[i]の格納数を1インクリメントする(S408)。このとき、特徴量演算部103には何も出力しないように制御する。
一方、S406の判定の結果、FIFO[i]がフル状態である場合は、FIFO[i]に対応した選択信号SELを生成する。そして、画素データ選択部203および領域ラベル選択部204に対して、それぞれFIFO[i]の画素データとFIFO管理テーブルに登録されている領域ラベルとを出力するように制御する(S409)。このとき、FIFO[i]の画素データを全て出力する。次に、FIFO管理テーブル202の該当する領域ラベルの格納数を0にする(S410)。その後、S403に遷移し、選択信号SELを"11"に切り替え、画素データ選択部203および領域ラベル選択部204に対して、それぞれ入力画素データ、入力領域ラベルをそのまま出力するように制御する。
一方、S405の判定の結果、入力領域ラベルがFIFO管理テーブル202の領域ラベルに一致しない場合は、格納数の領域302をサーチし、格納数がゼロの空いているFIFOがあるか否かを判定する(S411)。この判定の結果、格納数がゼロであるFIFOがある場合はS407に遷移し、該当するFIFO[i]に入力画素データを格納する。そして、FIFO[i]の格納数を1インクリメントする(S408)。このとき、特徴量演算部103には何も出力しないようにする。
一方、S411の判定の結果、格納数がゼロのFIFOがない場合は、続いて、格納数が最も多いFIFOの番号をサーチするために、処理に使用する変数max、nを初期化する(S412)。そして、格納数の領域302を順次サーチし、格納数が値maxより大きいか否かを判定する(S413)。この判定の結果、格納数の方が大きい場合は、値maxを格納数の値に置き換え、その時のiの値をnに代入する(S414)。
以上のようにすべてのFIFOに対してサーチが完了すると、FIFO[i]に対応した選択信号SELを生成する。そして、画素データ選択部203および領域ラベル選択部204に対して、それぞれ格納数が最多のFIFO[n]内の画素データ、FIFO管理テーブル202に登録されている領域ラベルを出力するように制御する(S415)。このとき、FIFO[n]の画素データを全て出力する。その後、入力画素データをFIFO[n]に格納し(S416)、FIFO管理テーブルの番号nにおける格納数を1にする(S417)。
次に、入力画素データが1ブロックの最終データであるか否かを判定する(S418)。すなわち、入力画素データの座標がX%30==29且つY%30==29という条件を満たしているか否かを判定する。この判定の結果、入力画素データが最終データである場合は、以下の手順により入力データ保持部201に格納されている画素データを全て特徴量演算部103に出力する。まず、FIFO管理テーブル202をFIFOごとにサーチし、格納数がゼロであるか否かを判定する(S419)。この判定の結果、格納数がゼロである場合は、次のFIFOの格納数を判定する。
一方、S419の判定の結果、格納数がゼロではなく画素データがある場合は、格納数がゼロでないFIFO[i]に対応した選択信号SELを生成する。そして、画素データ選択部203および領域ラベル選択部204に対して、それぞれFIFO[i]の画素データ、FIFO管理テーブルに登録されている領域ラベルを出力するように制御する(S420)。このとき、FIFO[i]の画素データを全て出力する。その後、FIFO管理テーブル202の格納数の領域302を0にする(S421)。一方、S418の判定の結果、入力画素データが最終データでない場合は、S419〜S421の処理を省略し、終了する。
図8は、入力データ制御部102における入力順序及び出力順序を比較した例を示す図であり、図16(a)に示す画像データのうち、(X,Y)=(30,20)から2ラインを処理した一例を示す。図8(a)は、領域分割部101が生成した分割済みの領域ラベルの出力順序を示し、図8(b)は、入力データ制御部102の出力順序を示している。
最初、入力データ保持部201の全てのFIFOは空の状態であり、キャッシュ105のバリッドフラグは全てクリアされた状態とする。まず、1番目の領域ラベル「63」を取得すると、アドレスAddr=0x80_3F00を算出し(S401)、有効なタグと"3F"とが一致するか否かを判定する(S402)。この場合、バリッドフラグは全てクリアされているので(S404/True)、入力データをそのまま出力する(S403)。また、キャッシュ105では、外部メモリ106から該当するデータを読み出し、キャッシュデータ領域に書き込んでタグを"3F"に更新する。続いて、2番目の領域ラベル「63」を取得すると、タグ"3F"が一致するため(S402/True)、入力データをそのまま出力する(S403)。
次に、3番目の領域ラベル「123」を取得すると、アドレスAddr=0x80_7B00を算出し(S401)、有効なタグと"7B"とが一致するか否かを判定する(S402)。この場合、まだ3ライン分のバリッドフラグがクリアされたままであるので(S404/True)、入力データをそのまま出力する(S403)。そして、キャッシュ105は、外部メモリ106から該当するデータを読み出し、キャッシュデータ領域に書き込んでタグを"7B"に更新する。以上のような処理を繰り返すと、図8(a)に示すように、19番目の領域ラベル「64」を処理すると、キャッシュラインは全てバリッドフラグがセットされる。
次に、20番目の領域ラベル「125」を取得すると、S402で一致するタグはないと判定され、S404でクリアされているバリッドフラグもないと判定されるため、S405に遷移する。また、S405の判定では、領域ラベルが一致するFIFOはないため、S411で格納数が0のFIFOをサーチする。そして、FIFO[0]が空いているので、FIFO[0]に画素データが格納され(S407)、FIFO管理テーブル202の領域ラベルの領域303は「125」に更新され、格納数の領域302は「1」に更新される(S408)。
また、23番目の領域ラベル「125」を取得すると、S402で一致するタグはないと判定され、S404でクリアされているバリッドフラグもないと判定されるため、S405に遷移する。そして、S405の判定ではFIFO[0]の領域ラベルと一致するのでS406へ遷移し、FIFO[0]がフルであるか否かを判定する。この場合、フルでないのでFIFO[0]に画素データを格納し(S407)、FIFO管理テーブル202の格納数の領域303は「2」に更新される(S408)。
26番目の領域ラベル「65」を取得すると、S402で一致するタグはないと判定され、S404でクリアされているバリッドフラグもないと判定されるため、S405に遷移する。そして、S405の判定では、領域ラベルが一致するFIFOはないため、S411で格納数が0のFIFOをサーチする。そして、FIFO[1]が空いているので、FIFO[1]に画素データが格納され(S407)、FIFO管理テーブル202の領域ラベルの領域303は「65」に更新され、格納数の領域302は「1」に更新される(S408)。
また、28番目の領域ラベル「125」を取得すると、S402で一致するタグはないと判定され、S404でクリアされているバリッドフラグもないと判定されるため、S405に遷移する。そして、S405の判定では、FIFO[0]の領域ラベルと一致するのでS406へ遷移し、FIFO[0]がフルであるか否かを判定する。この場合、格納数が4なのでS409に遷移する。そして、FIFO[0]の画素データを全て出力し(S410)、FIFO管理テーブル202の格納数の領域302を「0」とする(S410)。さらに、入力データを出力する(S403)。このとき、キャッシュ105では、空いているキャッシュラインがないのでリプレースが発生する。したがって、図8(b)に示すように、入力データ制御部102から出力されてから最も時間が経過している領域ラベル「123」に対応するアドレスのタグのキャッシュラインが追い出され、領域ラベル「125」のアドレスのタグに更新される。
以上のように図4の処理手順に従い、入力データ制御部102において、図8(a)に示す順序で処理すると図8(b)に示す順序で出力される。
図9は、入力データ制御部102による処理順序の入れ替え効果を説明するための図である。図9(a)には、入力データ制御部102による出力順序の入れ替えがない場合のキャッシュのミスヒット個所を示し、図9(b)には、入力データ制御部102により出力順序の入れ替えを行った場合のキャッシュのミスヒット個所を示す。なお、図9に示すレ点は、ミスヒットした個所を表している。
図9(a)に示すように、入力データ制御部102による出力順序の入れ替えがない場合は、キャッシュ105において、以下のように処理される。まず、20番目の領域ラベル「125」の演算結果が要求されると、領域ラベル「123」の演算結果をキャッシュアウトし、領域ラベル「125」の演算結果が外部メモリ106から転送される。そして、26番目の領域ラベル「65」の演算結果が要求されると、領域ラベル「63」の演算結果をキャッシュアウトし、領域ラベル「65」の演算結果が外部メモリ106から転送される。
続いて、31番目の領域ラベル「63」の演算結果が要求されると、領域ラベル「124」の演算結果をキャッシュアウトし、領域ラベル「63」の演算結果が外部メモリ106から転送される。そして、33番目の領域ラベル「123」の演算結果が要求されると、領域ラベル「64」の演算結果をキャッシュアウトし、領域ラベル「123」の演算結果が外部メモリ106から転送される。
43番目の領域ラベル「124」の演算結果が要求されると、領域ラベル「125」の演算結果をキャッシュアウトし、領域ラベル「124」の演算結果が外部メモリ106から転送される。そして、51番目の領域ラベル「125」の演算結果が要求されると、領域ラベル「65」の演算結果をキャッシュアウトし、領域ラベル「125」の演算結果が外部メモリ106から転送される。
54番目の領域ラベル「185」の演算結果が要求されると、領域ラベル「63」の演算結果をキャッシュアウトし、領域ラベル「185」の演算結果が外部メモリ106から転送される。そして、58番目の領域ラベル「65」の演算結果が要求されると、領域ラベル「123」の演算結果をキャッシュアウトし、領域ラベル「65」の演算結果が外部メモリ106から転送される。
上記動作によれば、7個所でミスヒットし、また、同一領域ラベルのデータをキャッシュアウトし、再び外部メモリ106から転送することを繰り返している。これに対して図9(b)に示すように、入力データ制御部102による出力順序の入れ替えを行った場合には、以下のように処理される。
23番目の領域ラベル「125」の演算結果が要求されると、領域ラベル「123」の演算結果をキャッシュアウトし、領域ラベル「125」の演算結果が外部メモリ106から転送される。そして、30番目の領域ラベル123の演算結果が要求されると、領域ラベル「124」の演算結果をキャッシュアウトし、領域ラベル「123」の演算結果が外部メモリ106から転送される。
また、41番目の領域ラベル「124」の演算結果が要求されると、領域ラベル「64」の演算結果をキャッシュアウトし、領域ラベル「124」の演算結果が外部メモリ106から転送される。そして、54番目の領域ラベル「65」の演算結果が要求されると、領域ラベル「63」の演算結果をキャッシュアウトし、領域ラベル「65」の演算結果が外部メモリ106から転送される。
なお、FIFOには領域ラベル「185」のデータが1画素分残っていて処理されていないが、前述したように、ブロックの最終画素処理時にFIFOの中の画素データは全て出力される。以上のような動作によれば、ミスヒットは4個所に削減されていることがわかる。
以上のように本実施形態においては、入力データ制御部102の機能により、キャッシュ105のミスヒットが減り、ヒット率が向上する。仮にキャッシュのデータサイズを1領域ラベル分増やすと、256バイト(2048ビット)のメモリサイズがさらに必要になる。一方、本実施形態における入力データ保持部201は、FIFO1段が42ビットなので1領域ラベル分のバッファを増やすためのコストが抑えられる。このように、本実施形態のデータ処理装置100によれば、回路規模の増加を抑えながら、キャッシュのヒット率を上げ、処理性能を向上させることができる。
(第2の実施形態)
前述したように、1ブロック中の画素は、はじめに配置した代表点の領域ラベル、またはその周囲の代表点の領域ラベルに割り振られるが、周囲のラベルに比べ、初期ラベルが占める割合が多くなる確率が高い。具体的には、30×30画素の1ブロック中に3×3個の代表点を配置するとき、初期状態の代表点を中心とした10×10画素の矩形領域には中心の代表点の領域ラベルが存在する確率が高い。つまり、特徴量の演算処理では代表点の領域ラベルの演算結果が参照される確率が高い。
そこで本実施形態においては、特徴量の演算処理を行っている座標の情報から、今後現れる頻度が高いと予測される領域ラベルを判定する。そして、それ以外の領域ラベルのデータは一旦FIFOに複数個溜めてからまとめて出力することにより、キャッシュのミスヒットをより抑えるようにする。ただし、キャッシュに空きがある場合はそのまま出力しても良い。さらに、キャッシュにおいて、ミスヒットのリプレースするキャッシュラインを選択する際に、現れる頻度が高いと予測される領域ラベルを残すことにより、その後のミスヒットの確率を低減するようにする。以下、本実施形態について詳細に説明する。
図10は、本実施形態に係るデータ処理装置1000の構成例を示すブロック図である。以下、図16(a)に示す画像データを処理する例について説明する。
図10において、入力データ制御部1001は、図1の入力データ制御部102と略同一の機能を備えている。さらに入力データ制御部1001は、座標(X,Y)のデータを受信してFIFOに溜めずに優先して処理する優先領域ラベルを判定し、キャッシュ更新時に残す優先タグを生成する機能を備えている。キャッシュ1002は、図1のキャッシュ105と略同一の機能を備え、さらにキャッシュ1002のリプレース時に優先タグの情報を使用する機能を備えている。
図11(a)は、本実施形態の入力データ制御部1001の内部構成例を示すブロック図である。以下、図1の入力データ制御部102との差分についてのみ説明する。
データパス制御部1101は、図2のデータパス制御部205と略同一の機能を備え、さらに座標(X,Y)のデータを受信し、優先して処理する優先領域ラベルを判定して優先領域ラベルに対応する優先タグを生成する機能を備えている。本実施形態で処理する画像データは、初期ラベルが3×3個割り当てられた30×30画素のブロックであり、ラスタ順にスキャンして処理するとき、10ラインずつ、優先領域ラベルを切り替える。そして、10ライン中に配置された3つの初期ラベルを出現する頻度の高い優先領域ラベルとする。
図17は、処理するX,Y座標と優先領域ラベルとの関係を説明するための図である。例えば、領域1701の座標は領域ラベル0,1,2を優先領域ラベルとし、領域1702の座標は領域ラベル60,61,62を優先領域ラベルとし、領域1703の座標は領域ラベル120,121,122を優先領域ラベルとする。
本実施形態の場合は、領域が切り替わるときの座標(X,Y)=(X%30=0, Y%10=0)を処理する時に、属する先頭の優先領域ラベルを60*(Y/10)+X/10で求める。したがって、優先領域ラベルは60*(Y/10)+X/10、60*(Y/10)+X/10+1、60*(Y/10)+X/10+2と判定できる。
図11(b)は、本実施形態のキャッシュ1002の内部構成例を示すブロック図である。以下、図5に示すキャッシュ105の内部構成との差分についてのみ説明する。
キャッシュ1002が備えるキャッシュコントローラ1102は、図5のキャッシュコントローラ506の機能に加えてキャッシュ1002のリプレースに優先タグの情報を使用する機能を備えている。キャッシュコントローラ1102では優先タグと指定されているタグもLRUキューで管理され、優先タグが切り替わったときにリプレースの対象となる。
図12は、本実施形態のデータパス制御部1101による処理手順の一例を示すフローチャートである。以下、図4に示した処理との差分についてのみ説明する。
まず、画素データ(R,G,B,X,Y)と領域ラベル情報(L)とを受信すると処理がスタートする。そして、座標(X,Y)のデータから、優先領域ラベルの切り替えタイミングか否かを判定する(S1200)。この判定の結果、切り替えタイミングである場合は、優先する3つの優先領域ラベルを決定し(S1201)、続いて、決定した優先領域ラベルから、優先タグを算出する(S1202)。一方、S1200の判定の結果、切り替えタイミングでない場合は、S1201及びS1202の処理をスキップして、S1203に遷移する。
次に、受信した領域ラベル情報(L)が優先領域ラベルに一致するか否かを判定する(S1203)。この判定の結果、優先領域ラベルに一致する場合はS403へ遷移し、セレクタSELを"11"とし、画素データ選択部203および領域ラベル選択部204は、それぞれ入力画素データ、入力領域ラベルをそのまま出力する。一方、S1203の判定の結果、優先領域ラベルに一致しない場合はS401へ遷移し、第1の実施形態と同様の処理を行う。
図13は、本実施形態のキャッシュコントローラ1102による処理手順の一例を示すフローチャートである。以下、図6に示した処理との差分についてのみ説明する。
S601にてミスヒットと判定され、S602でクリアされているバリッドフラグがないと判定されると、LRUキューを先頭からサーチし、優先タグに一致しないタグであって最も先頭に近いタグをリプレースするキャッシュラインに選択する(S1301)。
図14は、入力データ制御部1001における入力順序及び出力順序を比較した例を示す図であり、図16(a)に示す画像データのうち、(X,Y)=(30,20)から2ラインを処理した一例を示す。図14(a)は、領域分割部101が生成した分割済みの領域ラベルの出力順序を示し、図14(b)は、入力データ制御部1001の出力順序を示している。
入力データ制御部1001は、1番目の入力画素データと領域ラベル「63」とを取得すると、入力画素データの座標データ(X,Y)が(30,20)であるので、優先領域ラベルの切り替えタイミングであると判定する(S1200/True)。そして、領域ラベル「123」、「124」、「125」を優先領域ラベルとし(S1201)、優先タグとしてキャッシュ1002に出力する(S1202)。S1203では優先領域ラベルと判定されないが、S404の判定では、クリアされているバリッドフラグがあるため、そのまま出力される(S403)。以降は領域ラベル「123」、「124」、「125」、及びキャッシュ1002にタグが入っている「63」以外はFIFOに格納される。
以上のように図12の処理手順に従って入力データ制御部1001が処理を行うと、図14(b)に示す順序で出力される。また、図14(b)においては、特徴量演算部103で処理したときのキャッシュ1002のミスヒット個所をレ点で示している。
図13のフローチャートに従うと、キャッシュ1002では、以下のように処理を行う。20番目の領域ラベル「125」の演算結果が要求されると、優先領域ラベルでない領域ラベル「63」の演算結果をキャッシュアウトし、領域ラベル「125」の演算結果が外部メモリ106から転送される。また、51番目の領域ラベル「65」の演算結果が要求されると、優先領域ラベルでない領域ラベル「64」の演算結果をキャッシュアウトし、領域ラベル「65」の演算結果が外部メモリ106から転送される。なお、FIFOには領域ラベル「63」のデータが3画素、領域ラベル「185」のデータが1画素残っていて処理されていないが、ブロックの最終画素処理時にFIFOの中のデータは全て処理される。
以上のように本実施形態によれば、出現する頻度の高い「123」、「124」、「125」はキャッシュアウトされず、出現する頻度の低い「65」、「63」、「185」はFIFOで一旦溜めてから処理する。このため、ミスヒットをより低減させることができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
102 入力データ制御部
103 特徴量演算部
105 キャッシュ
106 外部メモリ

Claims (11)

  1. 複数の入力データと前記複数の入力データそれぞれの属性情報とを受信し、前記属性情報に応じた順序で出力する制御手段と、
    前記制御手段によって出力された入力データと属性情報とに対して、該属性情報に係る過去の演算結果を参照して演算処理を行う演算手段と、
    前記演算手段による過去の演算結果を内部に保持が可能な保持手段とを有し、
    前記制御手段は、前記複数の入力データのそれぞれの属性情報に係る過去の演算結果が前記保持手段に保持されているか否かに応じて、前記複数の入力データを出力する順序を制御することを特徴とするデータ処理装置。
  2. 前記制御手段は、前記複数の入力データのうち、属性情報に係る過去の演算結果が前記保持手段に保持されている入力データを優先して出力するように制御することを特徴とする請求項1に記載のデータ処理装置。
  3. 前記保持手段は、前記制御手段によって出力された属性情報に係る過去の演算結果を保持している場合は、前記保持している演算結果を前記演算手段に出力し、保持していない場合は、前記出力された属性情報に係る過去の演算結果を外部メモリから読み出して前記演算手段に出力することを特徴とする請求項1又は2に記載のデータ処理装置。
  4. 前記制御手段が最新に受信した入力データの属性情報に係る過去の演算結果が前記保持手段に保持されていない場合であって、かつ前記制御手段が当該属性情報に係る過去に受信した入力データを保持している数が所定数に達していない場合は、前記制御手段は、前記過去に受信した入力データとともに前記最新に受信した入力データ及び属性情報を一時的に保持することにより出力する順序を制御することを特徴とする請求項1〜3の何れか1項に記載のデータ処理装置。
  5. 前記制御手段が最新に受信した入力データの属性情報に係る過去の演算結果が前記保持手段に保持されていない場合であって、かつ前記制御手段が当該属性情報に係る過去に受信した入力データを保持している数が所定数に達している場合は、前記制御手段は、前記過去に受信した入力データとともに前記最新に受信した入力データ及び属性情報を出力するように出力の順序を制御することを特徴とする請求項1〜4の何れか1項に記載のデータ処理装置。
  6. 前記入力データが所定の条件を満たす場合に、前記制御手段は、前記保持手段に保持されている過去に入力された入力データをすべて出力するように出力の順序を制御することを特徴とする請求項1〜5の何れか1項に記載のデータ処理装置。
  7. 前記制御手段は、さらに前記入力データの属性情報が優先して処理するべき属性情報であるかを判定し、その判定結果に応じて、出力する順序を制御することを特徴とする請求項1〜6の何れか1項に記載のデータ処理装置。
  8. 前記保持手段は、前記制御手段による優先して処理するべき属性情報の判定結果に応じて内部に保持する演算結果を入れ替えることを特徴とする請求項7に記載のデータ処理装置。
  9. 前記入力データは画素データであり、前記属性情報は画素データの属する領域を表す画素ラベルであって、前記演算手段は、領域ごとに画素データの累積演算を行うことを特徴とする請求項1〜8の何れか1項に記載のデータ処理装置。
  10. 複数の入力データと前記複数の入力データそれぞれの属性情報とを受信し、前記属性情報に応じた順序で出力する制御工程と、
    前記制御工程において出力された入力データと属性情報とに対して、該属性情報に係る過去の演算結果を参照して演算処理を行う演算工程とを有し、
    前記制御工程においては、前記演算工程における過去の演算結果の保持が可能な保持手段に、前記複数の入力データのそれぞれの属性情報に係る過去の演算結果が保持されているか否かに応じて、前記複数の入力データを出力する順序を制御することを特徴とするデータ処理方法。
  11. 複数の入力データと前記複数の入力データそれぞれの属性情報とを受信し、前記属性情報に応じた順序で出力する制御工程と、
    前記制御工程において出力された入力データと属性情報とに対して、該属性情報に係る過去の演算結果を参照して演算処理を行う演算工程とをコンピュータに実行させ、
    前記制御工程においては、前記演算工程における過去の演算結果の保持が可能な保持手段に、前記複数の入力データのそれぞれの属性情報に係る過去の演算結果が保持されているか否かに応じて、前記複数の入力データを出力する順序を制御することを特徴とするプログラム。
JP2014220598A 2014-10-29 2014-10-29 データ処理装置、データ処理方法及びプログラム Active JP6463081B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014220598A JP6463081B2 (ja) 2014-10-29 2014-10-29 データ処理装置、データ処理方法及びプログラム
US14/919,928 US9600854B2 (en) 2014-10-29 2015-10-22 Data processing apparatus and method of processing a plurality of input data based on respective attribute information thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014220598A JP6463081B2 (ja) 2014-10-29 2014-10-29 データ処理装置、データ処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2016091049A true JP2016091049A (ja) 2016-05-23
JP6463081B2 JP6463081B2 (ja) 2019-01-30

Family

ID=55853191

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014220598A Active JP6463081B2 (ja) 2014-10-29 2014-10-29 データ処理装置、データ処理方法及びプログラム

Country Status (2)

Country Link
US (1) US9600854B2 (ja)
JP (1) JP6463081B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112017002231T5 (de) 2016-04-28 2019-01-17 Denso Corporation Fahrzeugvorrichtungssteuervorrichtung
JP2019212167A (ja) * 2018-06-07 2019-12-12 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6815741B2 (ja) * 2016-03-30 2021-01-20 キヤノン株式会社 画像処理装置および画像処理方法
US10482028B2 (en) * 2017-04-21 2019-11-19 Intel Corporation Cache optimization for graphics systems
CN112631962A (zh) * 2019-09-24 2021-04-09 阿里巴巴集团控股有限公司 存储管理装置、存储管理方法、处理器和计算机系统
CN111737344B (zh) * 2020-05-20 2023-08-25 时时同云科技(成都)有限责任公司 一种针对标签式称重设备的数据同步方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0546766A (ja) * 1991-08-15 1993-02-26 Canon Inc モーメントの演算方法及びその装置
JPH0830787A (ja) * 1994-05-10 1996-02-02 Fuji Xerox Co Ltd 画像領域分割方法及び画像領域統合方法
JP2002024088A (ja) * 2000-07-07 2002-01-25 Matsushita Electric Ind Co Ltd データ処理装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5850475A (en) 1994-05-10 1998-12-15 Fuji Xerox Co., Ltd. Method and apparatus for dividing image area
JP2007272681A (ja) 2006-03-31 2007-10-18 Nec Electronics Corp キャッシュメモリ装置及びそのキャッシュラインの入れ替え方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0546766A (ja) * 1991-08-15 1993-02-26 Canon Inc モーメントの演算方法及びその装置
JPH0830787A (ja) * 1994-05-10 1996-02-02 Fuji Xerox Co Ltd 画像領域分割方法及び画像領域統合方法
JP2002024088A (ja) * 2000-07-07 2002-01-25 Matsushita Electric Ind Co Ltd データ処理装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
森川 重毅 外2名: "K−means VLSIプロセッサと画像の自己領域分化への応用", 電子情報通信学会技術研究報告 VOL.106 NO.342 NC2006−63〜70 ニューロコンピ, vol. 第106巻 第342号, JPN6018047514, 4 November 2006 (2006-11-04), JP, pages 19 - 24 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112017002231T5 (de) 2016-04-28 2019-01-17 Denso Corporation Fahrzeugvorrichtungssteuervorrichtung
JP2019212167A (ja) * 2018-06-07 2019-12-12 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
JP7155629B2 (ja) 2018-06-07 2022-10-19 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法

Also Published As

Publication number Publication date
JP6463081B2 (ja) 2019-01-30
US9600854B2 (en) 2017-03-21
US20160125569A1 (en) 2016-05-05

Similar Documents

Publication Publication Date Title
JP6463081B2 (ja) データ処理装置、データ処理方法及びプログラム
TWI684099B (zh) 剖析快取替代
KR102147356B1 (ko) 캐시 메모리 시스템 및 그 동작방법
US10542276B2 (en) Data caching method and apparatus for video decoder
US9176880B2 (en) Cache memory system for tile based rendering and caching method thereof
KR20190027716A (ko) 하드웨어 친화적인 가상 프레임 버퍼
US11216371B2 (en) Cache memory and method for controlling the same
CN107015922B (zh) 缓存存储器
US20160105630A1 (en) Method and Device for Processing Input Image Data
CN107451071A (zh) 一种缓存置换方法及系统
EP2530598A1 (en) Data supply device, cache device, data supply method, and cache method
JP2016091242A (ja) キャッシュメモリ、キャッシュメモリへのアクセス方法及び制御プログラム
CN112631962A (zh) 存储管理装置、存储管理方法、处理器和计算机系统
JP6815741B2 (ja) 画像処理装置および画像処理方法
US20090327611A1 (en) Domain-based cache management, including domain event based priority demotion
JP6210953B2 (ja) 画像処理装置および画像処理方法
CN109983538B (zh) 存储地址转换
JP2019117582A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
US8850118B2 (en) Circuit and method for dynamically changing reference value for address counter based on cache determination
US10949360B2 (en) Information processing apparatus
KR20220086512A (ko) 데이터 워핑 장치 및 방법
US10515432B2 (en) Methods and apparatuses for managing graphics data using two-stage lookup tables in cache
TWI513282B (zh) 快取記憶體管理裝置及應用該快取記憶體管理裝置之動態影像系統及方法
US9875178B2 (en) Method and apparatus for controlling cache memory
JP2017111484A (ja) ストアマージ装置、情報処理装置、およびストア制御方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171027

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181005

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181228

R151 Written notification of patent or utility model registration

Ref document number: 6463081

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151