JP4213750B2 - アレイ型演算装置 - Google Patents

アレイ型演算装置 Download PDF

Info

Publication number
JP4213750B2
JP4213750B2 JP2006531472A JP2006531472A JP4213750B2 JP 4213750 B2 JP4213750 B2 JP 4213750B2 JP 2006531472 A JP2006531472 A JP 2006531472A JP 2006531472 A JP2006531472 A JP 2006531472A JP 4213750 B2 JP4213750 B2 JP 4213750B2
Authority
JP
Japan
Prior art keywords
instruction
control information
array
data
row
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.)
Active
Application number
JP2006531472A
Other languages
English (en)
Other versions
JPWO2006013839A1 (ja
Inventor
広之 森下
健 田中
昌樹 前田
順彦 若山
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2006013839A1 publication Critical patent/JPWO2006013839A1/ja
Application granted granted Critical
Publication of JP4213750B2 publication Critical patent/JP4213750B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)

Description

本発明はDVDレコーダやデジタルTV等、デジタル信号を用いた映像、音響機器に用いる信号処理LSIに関するものであり、特に、画像信号処理LSIに関する。
近年、地上波デジタル放送などに代表されるように、動画像のデジタル化が進んでいる。
それに伴い動画像の圧縮化の技術が開発され、MPEG(Moving Picture Experts Group)符号化は、画像の中の動く部分だけを検出して保存することにより高効率圧縮を実現している。
さらに、近年のデジタルAV機器等の多様化により、様々な機器にMPEG符号化LSIが搭載されるに至っており、例えば、据え置き機器であるDVDレコーダとモバイル機器であるカムコーダとでは、MPEG2エンコードというアプリケーションが動作する。
この場合、同じMPEG2エンコーダというアプリケーションであっても、据え置き機器であるDVDレコーダでは、モバイル機器であるカムコーダに比べ、より高画質を保障するアルゴリズムの実行が要求される。
この要求に対応するためには、共通のハードウェア上で、ソフトウェアにより用途に応じた柔軟な処理を実現することが望ましい。
ここで、MPEG符号化について簡単に説明すると、この方式では、現フレームの被写体が過去又は未来のフレームでどの方向にどの程度動いたかを表す動きベクトルと、動きベクトルだけでは表せなかった輝度と色差の変化量とを保存している。
この動きベクトルを求める処理を動きベクトル探索処理(図1参照)といい、この処理は、一般的なリサイズフィルタや動き補償等の画像処理に比べて処理量が非常に大きくなるという特徴がある。
というのは、通常、例えば16×16ピクセルのマクロブロックと呼ばれる単位(図1:対象画像200)で、そのブロックが過去又は未来のフレーム(図1:参照画像100)のどこに移動したのかを1ピクセルずつずらしながら検索し、最も類似度が高い部分を見つけ、動きベクトルを求めるからである。このマクロブロックは、例えば、720×480ドットのフレームの場合1350個となり、そのすべてについて、検索がなされる。
従って、MPEG符号化においては、動きベクトル探索処理の性能が重要になる。
この動きベクトル探索処理は、同様な処理の繰り返しであることから、複数の演算器を1次元方向又は2次元方向に展開した演算装置を使用して処理性能を向上させる技術が開発されている。
現在、一般的な画像処理では1次元方向に展開した演算装置が使用されているが、これは、並列使用できる演算器の個数が少なく、動作周波数の低減、すなわち電圧の低下が充分には実現できない場合が多い。従って、熱及び消費電力の問題から、モバイル機器や家電機器への適用は、並列使用できる演算器の個数がより多く、動作周波数の低減をより図ることができる2次元方向に展開した演算装置(以下、「2次元アレイ型演算装置」という。)を使用する方が望ましい。
この2次元アレイ型演算装置の性能向上技術として、複数の演算器間のデータ通信の際に発生する待ち時間の低減を図る技術が開示されている(特許文献1参照)。
特開平09−022404号公報
しかし、2次元アレイ型演算装置は、制御する演算器の数が格段に増えることから、これらの演算器をソフトウェアで制御し、機器に応じて異なるアルゴリズムを実現させるためには、ソフトウェアの命令長が伸びることは必然である。
その結果、それらの命令をフェッチする先の命令メモリ、及びその命令を解読する為の命令デコーダの規模が大きくなり、ハードウェアの面積増加となり、結果的にLSIのコスト増につながり妥当ではない。
そこで、本発明は、ソフトウェアによって、2次元アレイ型演算装置をより柔軟に制御して効率的な並列処理を実現し、かつ、ハードウェアの面積が大きくならないような2次元アレイ型演算装置の提供を目的とする。
上記課題を解決する為に、本発明のアレイ型演算装置は、順序付けられた複数のプロセッサエレメントで構成されたプロセッサアレイと、1サイクル毎に、1個の命令を取得する命令取得手段と、1サイクル毎に、第1順位のプロセッサエレメントの動作を制御する為の動作制御情報を作成し、作成した動作制御情報と前記命令取得手段で取得した1個の命令とに基づき、第1順位のプロセッサエレメントに対する命令を生成する手段と、1サイクル毎に、次順位以降のプロセッサエレメントの動作を制御する為の動作制御情報を、前順位のプロセッサエレメントの動作を制御する為に作成した動作制御情報を基に作成し、作成した動作制御情報と前記命令取得手段で取得した1個の命令とに基づき、前記次順位以降のプロセッサエレメントに対する命令を生成する手段とを備えることを特徴とする。
本発明に係るアレイ型演算装置は、上述の構成を備えることにより、1つの命令によって、複数のプロセッサエレメント(Processor Element、以下、「PE」という。)に異なる動作をさせることができるようになるので、複数のPEを使用して柔軟な処理を行うことができるようになる。
また、命令数が少なくなることにより、実行に必要なハードウェア資源も少なくて済むようになる。
また、前記プロセッサアレイは、信号線で連結された複数のプロセッサエレメントで構成され、1サイクル毎に、各プロセッサエレメントの演算結果を、前記信号線を介して次順位のプロセッサエレメントに伝達することとしてもよい。
これによりアレイ型演算装置は、PEの演算結果を後続のPEに伝達することができ、複数PEの演算結果を用いた処理を一度に行うことが出来るので、処理速度を改善することが出来るようになる。
また、前記アレイ型演算装置は、更に、1サイクル毎に、基本制御情報を生成する基本制御情報生成手段を備え、第1順位のプロセッサエレメントの動作を制御する為の動作制御情報は、前記基本制御情報生成手段で生成された基本制御情報を基に作成されることとしてもよい。
これにより、1つの制御情報を生成することで、全てのPEの動作に影響を与えることが出来るので、同じPEアレイを使用して、様々な処理を行うことが出来るようになる。
また、前記プロセッサエレメントは、それぞれ、複数種類のデータを取得するデータ取得手段を備え、前記動作制御情報は、各プロセッサエレメントが命令を実行する際に使用するデータの種類を指定する指定情報を含み、前記各プロセッサエレメントは、実行に際して、前記指定情報に応じて取得したデータを使用することとしてもよい。
これにより、PEごとに実行する際に使用するデータを変更することが出来るので、より柔軟な処理を行うことが出来るようになる。
また、前記動作制御情報は、前記命令取得手段で取得した1個の命令を実行するか否かを指定する情報であって、前記動作制御情報が実行する旨の指示である場合には、前記プロセッサエレメントは前記命令を実行し、前記動作制御情報が実行しない旨の指示である場合には、該当するプロセッサエレメントへの電力供給を抑止することとしてもよい。
これにより、演算を実行しないPEへの電源供給を行なわないようにすることが出来るので、消費電力を減らすことが出来るようになる。
また、本発明のアレイ型演算装置は、信号線で連結されたN個のプロセッサエレメントをM行有した、M行×N列の2次元アレイ構造のプロセッサアレイであって、各プロセッサエレメントの演算結果を、次行のプロセッサエレメントに伝達可能に接続されたプロセッサアレイと、1サイクル毎に、基本制御情報を生成する基本制御情報生成手段と、1サイクル毎に、1個の命令を取得する命令取得手段と、1サイクル毎に、最初の行のプロセッサエレメントの動作を制御する為の動作制御情報を前記基本制御情報生成手段で生成された基本制御情報を基に作成し、作成した動作制御情報と前記命令取得手段で取得した1個の命令とに基づき、最初の行に対する命令を生成する手段と、1サイクル毎に、2〜M行のプロセッサエレメントの動作を制御する為の動作制御情報を前行のプロセッサエレメントの動作を制御する為に作成した動作制御情報を基に作成し、作成した動作制御情報と前記命令取得手段で取得した1個の命令とに基づき、前記2〜M行のプロセッサエレメントに対する命令を生成する手段とを備え、前記プロセッサアレイのそれぞれの行に配列されているN個の前記プロセッサエレメントは、当該行に対する命令を実行することを特徴とすることとしてもよい。
これにより、2次元アレイ型の演算装置に対して、1つの命令を発行することで、複数のPEに異なる動作をさせることができるようになるので、より柔軟な処理を行うことができるようになる。
<実施形態1>
<概要>
本発明に係るアレイ型演算装置は、2次元アレイ型演算装置であり、命令メモリ、及び命令デコーダの数は減らした上で、アレイ型に配列された演算器を制御等するソフトウェアの命令長を抑えることにより、命令メモリ、及び命令デコーダの規模の拡大を抑えようとするものである。
例えば、図3(a)で示すように、演算器アレイを構成するそれぞれのPEに独立の演算命令を発行した場合、PE数分の命令が必要となる。この場合、基本的に、PE数分の命令デコーダと命令メモリが必要となる。
また、図3(b)に示すような1次元アレイ型演算装置においても、同様の課題が発生する。
その解決法として、SIMD(Single Instruction Multi Data)という方式が広く知られており、これは、展開した方向の演算器には共通の命令を発行することで、ソフトウェア制御のために必要となるコストを削減するというものである。この方法は、各PEが同様の動作を行うような画素処理に特に適している。
しかし、この方法であっても、全てのPEに対して1つの命令で指示を出すには、命令長が長くなりすぎ現実的ではないため、例えば、図3(b)に示すように行(又は列)単位で命令を発行している。
SIMD方式を採用することによって、各PEに独立の演算命令を発行する場合に比べて命令数は格段に減ったものの、前述した動きベクトル探索処理や画像認識処理に用いられるアレイは大規模なものであり、行(又は列)数分の命令であっても、命令メモリサイズや命令デコーダに対する影響は大きい。基本的に、行数分の命令メモリと命令デコーダが必要となる。
本発明に係る2次元アレイ型演算装置では、命令メモリ及び命令デコーダをそれぞれ1つとした上で、さらに命令長を削減することにより命令メモリサイズ等を小さくし、結果的にLSIの面積の増加を抑えようとしている。
それとともに、例えばMPEG符号化処理のアルゴリズムの変更などが容易に出来る柔軟性をも実現する。
以下、本発明の実施形態の2次元アレイ型演算装置について説明する。
本実施形態の2次元アレイ型演算装置は、MPEG符号化処理における動きベクトル探索処理を行うものである。
<動きベクトル探索>
図1を用いて、動きベクトル探索処理について簡単に説明する。
図1は、動きベクトル探索処理の探索方法を示す図である。
対象画面20は、現在の符号化対象フレームであり、対象画像200は、いわゆるマクロブロックである。
また、参照画面10は、動きベクトルを算出するための過去又は未来のフレームであり、参照画像100は、対象画像200の類似部分を検索する範囲である。
参照画像100の中で、左上から右下まで、マクロブロックと最も類似度が高い部分を、1ピクセルずつずらして検索する(参照画像100−1、参照画像100−2)。
図2は、参照画像100と対象画像200との構成を表す図である。
図2(a)は、参照画像100であり、左上のピクセルを「R(0,0)」とし、xy座標系でピクセルの位置を表すものとする。また、図2(b)は、対象画像200であり、図2(a)と同様に、左上のピクセルを「T(0,0)」と表すものとする。
以下の説明で、「R(x,y)」又は「Rxy」は参照画像100のピクセルを表し、「T(x,y)」又は「Txy」は対象画像200のピクセルを表すものとする。また、図面において、□は参照画像100のピクセルを、○は対象画像200のピクセルを表すものとする。
<構成>
以下、図4及び図5を用いて、本発明にかかる2次元のアレイ型演算装置1000の構成を説明する。
図4は、アレイ型演算装置1000と関連する周辺部の構成を表す図である。
この図4では、アレイ型演算装置1000のほかに、プログラムカウンタ1001、命令メモリ1002、命令発行部1003、プログラム記憶部1004及びメモリキャッシュ1005を記載している。
これらの各機能部及び各PE等は、伝送するビット数に応じた本数のデータ信号線で接続されているものとする。
プログラム記憶部1004は、演算器の動作を示す命令ストリームからなるソフトウェアプログラムを記憶しており、プログラムカウンタ1001は、プログラム記憶部1004に記憶されている次に実行する命令を指している。
プログラムカウンタ1001が指す命令を、命令メモリ1002にフェッチし、命令発行部1003は、命令メモリ1002の命令をデコードし、アレイ型演算装置1000全体に共通の命令である制御信号を発行する。
メモリキャッシュ1005は、アレイ型演算装置1000で使用するデータを記憶する。
次に、アレイ型演算装置1000の構成について説明する。
このアレイ型演算装置1000は、5行×6列の2次元に配列された30個のPE(PE00等)で成るPEアレイ1100と、制御情報生成部3000及び命令生成部(3100〜3500)で構成される。
各PE及び各生成部はそれぞれバスで連結され、信号を伝達できるようになっている。また各生成部は論理回路で構成されているものとする。
ここで、本アレイ型演算装置1000の特徴は2つある。1つは、外部の命令発行部1003から入力される1つの命令(Inst0)で30個のPEを制御するために、以下に説明する制御情報生成部3000と各行への命令(Inst00〜Inst40)を生成する命令生成部(3100等)を有する点である。また、もう1つは、各PEが行方向だけでなく、列方向にもバス1009で連結されデータを送受信できるようになっている点である。
次に、図5を用いて、各機能部について説明する。
図5は、アレイ型演算装置1000の構成の詳細を表す図である。ここでは、説明の便宜上、一部のPE等のみを記載している。
アレイ型演算装置1000は、複数のPE2000、制御情報生成部3000、複数の命令生成部(3100等)及び加算部1200で構成される。
まず、1サイクルごとに、制御情報生成部3000は制御情報を、命令発行部1003は命令情報を発行する。ここで、サイクルとは、処理の基準となる一定のクロックサイクルである(以下、同様。)。
制御情報生成部3000は、カウンタ記憶部3010を有し、ここには、カウンタを記憶しておく。このカウンタの値に応じて制御情報を生成する。このカウンタ記憶部3010には、生成した最新の制御情報も記憶しておくものとする。
ここで生成する制御情報は、各PEの動作を制御する基本となるものといえる。
命令生成部3100は、命令発行部1003から発行された命令情報と、制御情報生成部3000から発行された制御情報とを受け取り、PEアレイ1100の1行分のPE(PE00〜PE05)の演算処理を制御する命令を生成する。
ここで命令を生成する際には、制御情報生成部3000から受取った制御情報を基に自分用の制御情報を作成し、作成した制御情報を基にPE用の命令を作成する。または、制御情報を送り出す前に作成する。つまり、受取った制御情報と送り出す制御情報とが、異なるということである。
但し、受取った制御情報と送り出す制御情報とが同じでよい場合も動作目的によっては当然ある。例えば、本実施形態1では、制御情報はそのまま使用するが、後で説明する実施形態4では受取った制御情報を加工して次の命令生成部に送り出している。
またさらに、命令生成部3100は制御情報記憶部3110を有し、制御情報生成部3000から受信した制御情報を記憶する。新たな制御情報を記憶する前に、ここに記憶しておいた制御情報を命令生成部3200に送信し、命令生成部3200は、受取った制御情報を基に命令を生成することになる。
命令生成部(3200、3300、3400、3500)は、命令生成部3100と同様の機能を有するが、制御情報生成部3000から発行された制御情報ではなく、1つ前の命令生成部から受取った制御情報を使用して各行の演算器(PE10〜PE15等)の演算処理を制御する命令を生成する点が異なる。
また、命令生成部(3200〜3500)は、命令生成部3100と同様に、各制御情報記憶部(3210、3310等)に制御情報を記憶し、順次記憶する制御情報を送っていく。
次に、PEについて説明する。これらはすべて同じ構成をとるため、PE00(2000)のみを説明する。
PE00(2000)は、演算部2100、対象データ記憶部2200、参照データ記憶部2300及び相関記憶部2400で構成される。
対象データ記憶部2200は、対象画像200の1ピクセルのデータを記憶する。具体的には、30個のPE(図4参照)はそれぞれ、対象画像200の30個のピクセル(図2(b)参照)のデータを記憶する。
例えば、PE00の対象データ記憶部2200は、ピクセル「T(0,0)」のデータを記憶し、PE10の対象データ記憶部2200は、ピクセル「T(1,0)」のデータを記憶する。
参照データ記憶部2300は、参照画像100の1ピクセル(図2(a)参照)のデータを記憶する。
但し、対象データ記憶部2200はPEごとに異なるピクセルのデータを記憶していたが、参照データ記憶部2300はPEの列ごとに異なる点で相違する。すなわち、同じ列のPEの参照データ記憶部2300は同じデータを記憶している。
この参照データ記憶部2300には、メモリキャッシュ1005に記憶されている参照データを読み込み記憶する。
例えば、PE00とPE10の参照データ記憶部2300は、ピクセル「R00」のデータを記憶するが、PE01とPE11の参照データ記憶部2300は、ピクセル「R10」のデータを記憶する。
演算部2100は、対象データ記憶部2200に記憶されている対象データと参照データ記憶部2300に記憶されている参照データとの相関の強さを計算し、相関記憶部2400に記憶する。相関の強さは、SAD(Sumof Absolute Difference)を用いて判断するものとする。
相関記憶部2400は、自PEの演算部2100の結果データのほか、1つ前の行のPEから渡された受信データを記憶する。また、記憶しているデータを次の行のPEに送信する機能も有する(バス1009参照)。この詳細は、図8を用いて、後で説明する。
加算部1200は、最終行のPEからの出力を加算した値を、アレイ型演算装置1000から出力する。この値は、対象画像200と参照画像100の相関値となり、最も相関が強い、すなわち最も差分絶対値の合計が小さい参照画像の位置から動画ベクトルを求めることになる。
次に、本アレイ型演算装置1000での、相関値を求める方法を、制御情報等の各データの流れを示して説明し、その後、アレイ型演算装置1000処理の流れを説明する。
<相関の求め方>
次に、図6〜図8を用いて、アレイ型演算装置1000が対象画像200と参照画像100との相関を求める手順について説明する。図では、便宜上、「T(0,0)」は「T00」等と記載している(以下の図で、同様)。
ここでは、PEアレイ1100への参照画像100の供給の方法、制御情報の伝達方法及び相関記憶部2400の内容の遷移のそれぞれについて、図を用いて説明する。
<PEアレイへの参照画像100の供給の方法>
図6は、参照画像100をPEアレイ1100へ供給する方法を示す図である。
PEアレイ1100は、図2(b)の対象画像200をアレイ型演算装置1000のPEアレイ上に配置したものである。具体的には、対象データ記憶部2200に記憶している(図5参照)。
対象画像200をアレイ型演算装置1000のPEアレイ上に保持し、参照画像100を横6画素の1ラインずつ供給する。
例えば、サイクル「Cyc 0」101に参照画像100の最初のライン(R00〜R50)を供給した場合、PEアレイ1100に列単位で同じ参照データが供給される。具体的には、参照データ記憶部2300に記憶される(図5及び図7参照)。
続くサイクル「Cyc 1」102に参照画像100の2行目のライン(R01〜R51)を供給した場合も同様に、行単位で同じ参照画像が供給され、サイクル「Cycy」103に最後の行のライン(R0y〜R5y)を供給した場合まで、同様の供給が成される。
<制御情報の伝達方法>
図7は、制御情報を命令生成部(3100等)に供給する方法を示す図である。
図7では、「Cycle 0」から「Cycle 3」まで時系列に、アレイ型演算装置1000で制御情報が供給されていく様子を記載している。
図では、制御情報生成部3000が生成する制御情報を「token0」「token1」等と表し、PE及び命令生成部(3100等)では、各記憶部と、その内容を表しているものとする。また、点線矢印は、記憶部の内容の送出を示している。
まず、「Cycle 0」では、制御情報生成部3000で生成された制御情報「token0」が、命令生成部3100の制御情報記憶部3110に記憶されている。実際には、制御情報生成部3000で制御情報が生成されるのは、1つ前のサイクルであり、カウンタ記憶部3010には「token1」が記憶されているが、ここでは説明の便宜上「token0」と記載する。
このサイクルで、PE00とPE01は、演算を行ない、その結果を相関記憶部2400に記憶する。
次に、「Cycle 1」では、制御情報生成部3000で生成された制御情報「token1」が、命令生成部3100の制御情報記憶部3110に記憶され、命令生成部3200の制御情報記憶部3120には、命令生成部3100の制御情報記憶部3110に記憶されていた制御情報「token0」が記憶される。
このように、「Cycle 3」「Cycle 4」と順次「token0」が送られていく。
この制御情報「token0」等と命令発行部1003が発行した命令「Inst0」等とを基に、命令生成部(3100等)はPEアレイの各行に送る命令を生成することになる。
尚、PEの相関記憶部2400の「result」は、演算結果を表し、詳細は以下に説明する。
<相関記憶部2400の内容の遷移>
図8は各PEの相関記憶部2400に記憶されている内容の遷移を示す図である。
ここでは、各PEの相関記憶部2400に記憶されている内容を、時系列に順次、次の行のPEの相関記憶部2400に送出していく様子を記載している。
また、1列のPEの相関記憶部2400のみを記載している。各列ごとの動作は同じだからである。また、図7のPEアレイの1列目のPEの相関記憶部2400の内容を記載している。
ここでは、説明の便宜上、対象画像200のうち「T(0,0)」「T(0,1)」「T(0,2)」の3ピクセルを対象画像とし、参照画像100のうち「R(0,0)」「R(0,1)」「R(0,2)」「R(0,3)」の4ピクセルを参照画像として説明する。従って、PEアレイも「PE00」「PE10」「PE20」の3つとして説明する。
相関記憶部2400の内容は、2種類のデータが含まれている。1つは自PEの演算部2100の演算結果データ2410であり、もう1つは、1つ前の行のPEから送られた受信データ2420である。
実際には、対象データと参照データの相関値の合計を記憶しているが、ここでは内容を明確にするために相関を取ったピクセルを表している。例えば、「T(0,0)+R(0,0)」は、「T(0,0)」と「R(0,0)」の相関値を表し、「T(0,0)+R(0,0)T(0,1)+R(0,1)」は、「T(0,0)」と「R(0,0)」の相関値と「T(0,1)」と「R(0,1)」の相関値との合計値を表す。
「Cycle 0」において、「PE00」の相関記憶部2400の演算結果データ2410には「T(0,0)+R(0,0)」が記憶され、受信データ2420には何も記憶されていない。前行のPEは存在しないからである。
次に、「Cycle 1」では、「PE00」の演算結果データ2410には「T(0,0)+R(0,1)」が記憶され、受信データ2420には何も記憶されていない。
また、「PE01」の相関記憶部2400の演算結果データ2410には「T(0,1)+R(0,1)」が記憶され、受信データ2420には「Cycle 0」時の「PE00」の相関記憶部2400の演算結果データ2410と受信データ2420との合計が記憶される。
このように、順次、演算結果データ2410と受信データ2420との合計を次行のPEに送っていく。
すると、最後の行のPE、ここではPE20、から送出される演算結果データ2410と受信データ2420との合計は、対象画像と参照画像の1行分の相関値2401となる。
具体的には、「T(0,0)」「T(0,1)」「T(0,2)」と「R(0,0)」「R(0,1)」「R(0,2)」との相関値である。
その次のサイクルで最後の行のPEから送出される相関値の合計は、対象画像と1ピクセルずれた参照画像の相関値2402となる。
具体的には、「T(0,0)」「T(0,1)」「T(0,2)」と「R(0,1)」「R(0,2)」「R(0,3)」との相関値である。
このように、順次、1ピクセルずつY方向にずらした参照画像100と対象画像200との1行分の相関値が出力されることになる。
本説明では、1列分について説明したが、各行の出力を合計することにより対象画面と参照画面の相関値が求まる。
<アレイ型演算装置の処理の流れ>
図9〜図13を用いて、アレイ型演算装置1000の動作について説明する。
これらの処理を実行する機能部は組合せ順序回路で構成され、以下の処理を実行している(図18等も同様)。
まず、図9は、アレイ型演算装置1000で対象画像200と参照画像100との相関を求める処理を示すフローチャートである。参照画像100の中で、1つのマクロブロック、すなわち対象画像200と最も相関の高い位置を、参照画像100を1ピクセルずつずらしながら求める。
最初に、対象画像200から、各PEの対象データ記憶部2200にそれぞれの対象データを読込む(ステップS100、図6参照)。
制御情報生成部3000のカウンタ記憶部3010に値をセットする(ステップS110)。ここでセットする値は、参照画像100の行数である。例えば、「8」をセットする。
次に、参照画像100のうち、アレイ型演算装置1000に供給する1行分の先頭アドレスをレジスタ0にロードする(ステップS120)。尚、ロード先はレジスタ0に限られず、システムに依存する。
例えば、「R00」「R10」〜「R50」を供給する場合には(図6参照)、メモリキャッシュ1005に記憶されている「R00」のピクセルデータのアドレスをロードする。記憶されていない場合は、メモリキャッシュに読込む処理を行う。
レジスタ0に参照画像のアドレスがロードされたら、対象画像200との相関を取る処理を実行する(ステップS130)。この処理は、命令発行部1003が、命令として「exec_array」を発行することで実行される。
この「exec_array」の実行で、参照画像100の1行と対象画像200の全行との相関が取られることになる。例えば、図6の第0サイクル101で供給される参照データとPEアレイ1100上の対象画像200とが演算される。
「exec_array」の処理が終了したら、PEアレイ1100の最終行のPEからの出力を加算部1200で合計した値を出力する(ステップS140)。
参照画像100の最終行まで演算していなければ(ステップS150:NO)、レジスタ0に次の行のアドレス、例えば、「R01」のピクセルデータのアドレスをセットして、処理を繰り返す(ステップS120からステップS140)。
ここで、参照画像100の最終行まで演算するとは、対象画像T(x,0)と参照画像R(x,8)との演算が終了するまでをいい、具体的には、参照画像の行数と対象画像の行数とを足した回数、13回「exec_array」の処理を行う。
参照画像100の最終行まで演算を終了したら(ステップS150:YES)、次列に移り、演算を行なう(ステップS110〜ステップS150)。
参照画像を1ピクセル右にずらした6ピクセル分のデータ、「R10」「R20」〜「R60」の「R10」のピクセルデータのアドレスをレジスタ0にロードし(ステップ120)処理を行う。
参照画像100の最終列まで演算したら(ステップS160)処理を終了する。
これで、1マイクロブロックである対象画像200の演算が終了することになり、演算結果の出力(ステップS140)で出力された相関が最も強い場所から動きベクトルを算出する。
次に、図10を用いて、「exec_array」の処理について説明する。
図10は、「exec_array」の処理を示すフローチャートである。
まず、制御情報生成部3000は、新しい制御情報(トークン)を生成し、命令生成部(3100等)は記憶している制御情報を次の命令生成部に送る(ステップS210)。
制御情報を受取った命令生成部は、命令発行部1003から発行された「exec_array」命令と、制御情報記憶部(3110等)に記憶する制御情報とから、命令を生成し、該当する行のPEに送信する(ステップS220)。
生成された命令を受取った各PEは、演算処理を行う(ステップS240)。
これらの3つの処理は、1サイクルずつずれながら並行して行われる。
図11を用いて、PEの処理について説明する。
ステップS210の制御情報生成部3000の処理と、ステップ230の命令生成部(3100等)の詳細は、図12を用いて、後で説明する。
図11は、PEの処理を示すフローチャートである。
命令生成部(3100等)から送られた命令が、実行するという命令であれば(ステップS300:実行)、メモリキャッシュ1005から、レジスタ0の指す先を参照して各PEの参照データ記憶部2300に該当する参照データを読込む(ステップS305)。具体的には、命令発行部1003が命令デコード時に該当するデータを書き込んでおいたPEアレイの各列に対応したメモリから、データが読込まれる。
次に、演算部2100は、対象データ記憶部2200の対象データと参照データ記憶部2300の参照データとの差分絶対値を求め(ステップS310)、演算結果を、相関記憶部2400の演算結果データ2410に記憶する(ステップS320、図8参照)。
その後、演算結果データと受信データ2420を加算して次行のPEに送り、データを受取った次行のPEは、自PE内の受信データ2420に記憶する。
一方、命令生成部(3100等)から送られた命令が、キャンセルという命令であれば(ステップS300:キャンセル)、何もしないで終了する。
次に、図12を用いて、制御情報生成部3000の処理と、命令生成部(3100等)の処理について説明する。これらの処理は、同じサイクルで実行される。
まず、図12(a)を用いて、制御情報生成部3000の処理について説明する。図12(a)は、制御情報生成部の処理を示すフローチャートである。
生成される制御情報は、「Valid」「Invalid」のうちのいずれかが生成されるものとする。
カウンタ記憶部3010に記憶されているカウンタ「Counter」(図9:ステップS110参照)の値が「0」の場合(ステップS410:==0)には、「Invalid」トークンを生成し(ステップS412)、カウンタ「Counter」の値が「0」でないの場合(ステップS410:≠0)には、「Valid」トークンを生成する(ステップS411)。生成したトークンは、命令生成部3100に送り、制御情報記憶部3110に記憶させる。
また、トークンを生成後、カウンタ「Counter」の値から「1」を減算する。この場合、0以下になる場合は「0」とする。
次に、図12(b)を用いて、命令生成部(3100等)の処理について説明する。命令生成部(3100等)のそれぞれは、以下説明する処理と同様の処理を行う。
図12(b)は、命令生成部の処理を示すフローチャートである。
まず、制御情報記憶部3110に記憶しているトークンを次の命令生成部に送信し(ステップS450)、前の命令生成部又は制御情報生成部からトークンを受信する(ステップS460)。
受信したトークンを基に、PEに実行させる命令を生成する。
トークンが「Valid」の場合(ステップS470:Valid)は「exec_array」命令を実行する命令を生成し(ステップS471)、「Invalid」の場合(ステップS470:Invalid)は「exec_array」命令を実行しないキャンセル命令を生成する(ステップS472)。
すなわち、トークンの値に応じて、PEアレイの行単位で、実行するか否かを制御することができる。
生成した演算命令は、各PEに送られ、トークンは制御情報記憶部3110に記憶する。
以下に、制御情報生成部3000が作成したトークンとPEの実行の関係について説明する。
図13は、トークンとPEの動作を時間軸上にあらわした図である。
横軸に時間軸をサイクル単位で示しており、制御情報生成部3000の動作、及びPEアレイ1100の第1行〜第5行の動作を示している。
ここで、○は、命令の基となったトークンであり、ここではカウンタ記憶部3010又は各制御情報記憶部(3110等)が記憶しているトークンを表し、「val」はValidを、「Iv」はInvalidをあらわすものとする。すなわち、「val」の行のPEは演算を実行し、「Iv」の行のPEは演算を実行しない。
また、ここでは、第1列のPEの動作のみを示している。各列の動作は同じだからである。
下部の表は、演算結果(5200、5210)であり、対象画像と参照画像の相関を取ったピクセルを示している。
サイクル「Cyc=-1」の時、Counter5100は「8」であることから、「Value」トークンが作成される。このとき、PEは、何も行わない。
サイクル「Cyc=0」の時は、Counter5100は「7」であり、「Value」トークンが作成され、サイクル「Cyc=-1」の時作成されたトークンはPEアレイ第1行のPEに移動している。従って、PEアレイの第1行のPEのみが実行される。
すなわち、PEアレイ1100の第1行に配置された対象画像200の第1行のデータ「T00」「T10」「T20」「T30」「T40」「T50」と、PEアレイに対して供給された参照画像100の第1行のデータ「R00」「R10」「R20」「R30」「R40」「R50」との間で差分絶対値を求める演算が行われ、その結果は、バスを通じて、第2行の演算要素に受け渡される(図6、図7参照)。
PEアレイの第2行〜第5行までも、参照画像100の第1行のデータR00〜R50は供給されているが、演算は行なわない。
同様に、サイクル「Cyc=1」の時は、PEアレイの第1行のPEと第2行のPEとが実行される。
すなわち、PEアレイの第1行に配置された、対象画像の第1行のデータ「T00」「T10」「T20」「T30」「T40」「T50」と、参照画像の第2行のデータ「R01」「R11」「R21」「R31」「R41」「R51」との間で差分絶対値を求める演算が行われ、その結果は、演算要素からの出力バスを通じて、第2行のPEに受け渡される。同サイクルにおいて、PEアレイの第2行に配置された、対象画像の第2行のデータ「T01」「T11」「T21」「T31」「T41」「T51」と、参照画像の第2行の画像データ「R01」「R11」「R21」「R31」「R41」「R51」との間で差分絶対値を求める演算が行われ、その結果と、前サイクルの前行の演算結果の和が、演算要素からの出力バスを通じて、第3行のPEに受け渡される。
同様の演算動作を繰り返すと、サイクル「Cyc=5」の時には、|T00〜T50−R00〜R50|+|T01〜T51−R01〜R51|+|T02〜T52−R02〜R52|+|T03〜T53−R03〜R53|+|T04〜T54−R04〜R54|の演算結果5201が、第5行のPE出力として得られ、これを水平方向に加算したものが、相関の強さの評価値となる。
また同様に、サイクル「Cyc=6」の時には、|T00〜T50−R01〜R51|+|T01〜T51−R02〜R52|+|T02〜T52−R03〜R53|+|T03〜T53−R04〜R54|+|T04〜T54−R05〜R55|の演算結果が出力として得られ、以後次々と、垂直方向にずらした位置の相関の強さの評価値が求められる。
また、サイクル「Cyc=7」以降は、Counter5100は「0」であり、「Invalid」トークンが作成される。サイクル「Cyc=8」の時は、「Invalid」トークンがPEアレイ第1行のPEに移動している。従って、PEアレイの第2行〜第5行のPEのみが実行される。
制御情報生成部3000は、Counterに「8」をセットしてから、参照画像の行数「8」と対象画像の行数「5」と区切り「1」を加算した分の制御情報を生成して、参照画像1列の処理が終了したことになる。従って、サイクル「Cyc=13」から参照画像の2列目のピクセル「R10」〜「R15」との相関を求める処理が始まり、サイクル「Cyc=19」で、演算結果5211が、第5行のPE出力として得られる。
演算結果の動きにあわせて、演算必要な期間のみPEを実行させることで、不要な演算を停止することができ、消費電力の削減が実現できる。図13では、斜線の引かれた「Iv」のトークンに対応する行のPEの電源の供給を抑止することで、消費電力を削減できる。
次に、図14は、プログラムの例を示す図である。
プログラム命令リスト5300には、プログラム命令5301ごとの動作5302について記載している。また、制御情報(トークン)の値に応じての動作を示している。この図14では、「Invalid」を「inval」、「Valid」を「val」と記載している(図16、図23、図30で同様)。
例えば、トークン「Invalid」の場合は、「exec_array」は「nop」、すなわち実行は行なわず、「Valid」の場合は「exec」、すなわち実行するを示している。
「ld[addr],r0」5400は、レジスタ0に参照データのアドレスをロードする指示である。
また、「exec_array r0」は、レジスタ0の指す先の参照データで演算を行なう指示である。
<実施形態2>
本実施形態は、あるタイミングの相関の強さの評価値が所定値以上であった場合、以後の演算を不要なものとしてキャンセルする点が、実施形態1と異なる。
図15は、トークンとPEの動作を時間軸上にあらわした図である。
具体的には、演算結果6100が、ある値以上の相関の強さを持っていると判定された場合、実際にはSADの値がある一定値以下であった場合には、「Cyc 6」以降の演算をキャンセルする。
「Cyc n」からは、別の対象画像の演算が始まる。
キャンセルの方法は、例えば、SADの値を評価する回路から、命令生成部(3100等)に対して信号を出力し、演算停止を示すキャンセル命令を生成させる。これにより不要な演算部分6200を停止することができ、消費電力の削減が実現できる。
次に、図16は、プログラムの例を示す図である。
プログラム命令リスト5300などは、実施形態1と同じもので実行が可能である(図14参照)。
<実施形態3>
<概要>
本実施形態は、実施形態1と同じ演算を行なうが、実行速度を速めたものである点が異なる。
実施形態1のトークンとPEの動作を時間軸上にあらわした図である図13において、対象画像と参照画像の1列目との演算は、サイクル「Cyc ‐1」〜「Cyc 12」までであり、2列目との演算はサイクル「Cyc13」から始まる。この場合、サイクル「Cyc 7」〜「Cyc 17」までは、演算を行なっていないPEが存在する。
本実施形態は、この演算を行なっていないPEにも演算を行なわせようとするものである。
図22は、実施形態3のトークンとPEの動作を時間軸上にあらわした図である。
図に示すように、参照画像の1列目との演算はサイクル「Cyc ‐1」〜「Cyc 12」に行われる点は実施形態1(図13参照)と同じであるが、2行目との演算はサイクル「Cyc8」から始まる点が異なる。
このような動作を実施させるためには、「Cyc 9」から「Cyc 11」までは、参照画像の1行目と2行目のデータをえり分けて各PEの参照データ記憶部に読込む必要がある。
すなわち、実施形態1では、PEへの命令は演算実行かキャンセルの2種類であったが、本実施形態では、「1行目のデータで実行」、「2行目のデータで実行」及び「キャンセル」の3種類の命令を生成できる点が異なる。
以下、本実施形態3の構成等を説明する。
<構成>
図17は、実施形態3のアレイ型演算装置1000の構成の詳細を表す図である。
実施形態1の構成(図5参照)との違いは、メモリキャッシュを2つ使用する点である。もちろん、物理的に2つである必要はない。
メモリキャッシュ0(1006)とメモリキャッシュ1(1007)は、両方とも参照データ記憶部2300につながっており、各PEは、どちらからデータを読込むかを選択できるものとする。
<動作>
次に、図18〜図21を用いて、本実施形態のアレイ型演算装置1000の処理について説明する。基本的な処理の流れは実施形態1(図9〜図12)と同じであるので、相違点を中心に説明する。
図18は、アレイ型演算装置1000で対象画像200と参照画像100との相関を求める処理を示すフローチャートである。この処理において、実施形態1での処理(図9参照)と異なる点は、2つのカウンタをセットする点と、参照画像のデータを2行分使用する点である。
最初に、対象画像200から、各PEの対象データ記憶部2200にそれぞれの対象データを読込む(ステップS100、図6参照)。
制御情報生成部3000のカウンタ記憶部3010に値をセットする(ステップS501)。ここでは、「Counter0」に参照画像100の行数「8」をセットし、「Counter1」の「0」をセットする。この場合、「Counter0」がアクティブカウンタとなる。尚、「Counter1」に「8」がセットされた場合は、「Counter1」がアクティブカウンタとなる。
次に、参照画像100のうち、アレイ型演算装置1000に供給する2行分の先頭アドレスをレジスタ0及びレジスタ1にロードする(ステップS502)。
同時に2行分のデータを必要とする場合があるからであり、一方の行を演算している途中で他方の行のロードを開始する、という処理を交互に繰り返すことになる(図22参照)。
その後、「exec_array」の実行を行い(ステップS130)、演算結果を出力する(ステップS140)。 参照画像100の最終行まで演算処理を繰り返す(ステップS120からステップS150)。
参照画像100の最終列まで演算したら(ステップS160)処理を終了する。
図19は、「exec_array」の処理を示すフローチャートであり、処理内容は、実施形態1とほぼ同じである(図10参照)が、PEの処理(ステップS503)が異なる。
図20を用いて、PEの処理について説明する。図20は、PEの処理を示すフローチャートである。
この処理で、実施形態1での処理(図11参照)と異なる点は、各PEの参照データ記憶部2300に参照データを読込む場合に、メモリキャッシュ0またはメモリキャッシュ1から読込む点である。例えば、図22で、サイクル「Cyc9」〜「Cyc 11」までは、参照画像2行分のデータが必要となり、PEアレイの各行ごとにどちらのデータを読込むかを指定する必要がある。
命令生成部(3100等)から送られた命令が、実行するという命令であれば(ステップS300:実行)、レジスタ0の指すメモリキャッシュ0(1006)又はレジスタ1の指すメモリキャッシュ1(1007)から、各PEの参照データ記憶部2300に参照画像を読込む(ステップS504)。
どちらのメモリキャッシュからデータを読むかは、命令生成部から渡される命令で指示されている。この命令については、図21を用いて後で説明する。
次に、演算部2100は、対象データ記憶部2200の対象データと参照データ記憶部2300の参照データとの差分絶対値を求め(ステップS310)、演算結果を、相関記憶部2400の演算結果データ2410に記憶する(ステップS320)。その後、演算結果データと受信データ2420を加算して次行のPEに送り、データを受取った次行のPEは、自PE内の受信データ2420に記憶する。
一方、命令生成部(3100等)から送られた命令が、キャンセルという命令であれば(ステップS300:キャンセル)、何もしないで終了する。
図21は、制御情報生成部3000の処理と、命令生成部(3100等)の処理について説明する。
まず、図21(a)を用いて、制御情報生成部3000の処理について説明する。図21(a)は、実施形態3の制御情報生成部3000の処理を示すフローチャートである。
本実施形態では、上述のように3種類の制御情報で、3種類の命令を生成する。
制御情報生成部3000は、2つのカウンタを使用して制御情報であるトークンの生成を行う。
ここでは、制御情報生成部3000でのトークンの生成について説明する。
「Counter0」と「Counter1」の2つのカウンタの値によって、トークンを生成する(ステップS510)。
制御情報生成部3000では、「Counter0」>0または、「Counter1」>0の期間、演算実行を示す制御情報を発生する。ここでは、どちらか一方のカウンタがアクティブであるものとする。アクティブなカウンタを決定する手段は、命令発行部1003からの信号であってもよいし、一方のカウンタがカウント完了になった時点で、自身がアクティブ状態でなくなり、他方がアクティブになるというものでもよい。ここでは、後者の方法を取っている。
「Counter0」と「Counter1」とが共に「0」の場合には、「Invalid」トークンを生成する(ステップS511)。
「Counter0」が「≠0」の場合には、「Valid,sel0」トークンを(ステップS512)、「Counter1」が「≠0」の場合には、「Valid,sel1」トークンを生成する(ステップS513)。尚、「Counter0」と「Counter1」とが共に「≠0」の場合は、エラーとする。
「sel0」とは、レジスタ0の指す先のデータを使用する旨の指示であり、「sel1」は、レジスタ1の指す先のデータを使用する旨の指示である。PEは、この指示により、メモリキャッシュ0とメモリキャッシュ1のどちらからデータを読込むかを決定することになる。
トークン作成後に、「≠0」であったカウンタ、すなわちアクティブカウンタの値を1減算する(ステップS520)。
次に、図21(b)を用いて、命令生成部(3100等)の処理について説明する。図21(b)は、命令生成部(3100等)の処理を示すフローチャートである。
命令生成部(3100等)は、実施形態1と同様、それぞれは同様の処理を行う。
まず、制御情報記憶部3110に記憶しているトークンを次の命令生成部に送信し(ステップS550)、前の命令生成部又は制御情報生成部からトークンを受信する(ステップS560)。
受信したトークンを基に(ステップS570)、PEに実行させる命令を生成する。
トークンが「Invalid」の場合は「exec_array」命令を実行しない命令を生成し(ステップS571)、「Valid,sel0」の場合は「data_sel0」を使用して「exec_array」命令を実行する命令を生成し(ステップS572)、「Valid,sel1」の場合は「data_sel1」を使用して「exec_array」命令を実行する命令を生成する(ステップS573)。
生成した演算命令は、各PEに送られ(ステップS575)、トークンは制御情報記憶部3110に記憶する(ステップS580)。
以下に、制御情報生成部3000が作成したトークンとPEの実行の関係について説明する。
図22は、トークンとPEの動作を時間軸上にあらわした図である。
「Counter0」>0の場合に発行されたトークンは「Valid,sel0」であり、「Counter1」>0の場合に発行されたトークンは「Valid,sel1」である。
従って、例えば、サイクル「Cyc 10」では、1行目と2行目のPEは、「Valid,sel1」トークンで生成された命令を実行し、4行目と5行目のPEは、「Valid,sel0」トークンで生成された命令を実行する。尚、3行目のPEは実行を行なわず、各PEの相関記憶部2400がクリアされる。順次、PEがキャンセルされることで(7100)、参照画像の列の区切りとなる。
次に、図23は、実施形態3のプログラムの例を示す図である。
プログラム命令リスト7300には、プログラム命令7301ごとの動作7302について記載している。また、制御情報(トークン)の値に応じての動作を示している。
例えば、トークン「Invalid」7303の場合は、「exec_array」は「nop」、すなわち実行は行なわず、「Valid,sel0」7304の場合は「data_sel0を使用して実行」することを示し、「Valid,sel1」7305の場合は「data_sel1を使用して実行」することを示している。
「ldp[addr],r0,r1」7400は、レジスタ0及びレジスタ1に、参照画像行のアドレスをロードする指示である。
具体的には、レジスタ0に[addr]が示すアドレスをロードし、レジスタ1には[addr]+offset が示すアドレスを同時にロードする。このoffsetは、ある行データのアドレスとの差分値であり、予め与えられているものであっても、適時生成するものであってもよい。予め与えられている例として、参照画像において、ある列の最後の行データと、次列の最初の行データとのアドレスの差がある。
また、「exec_array r0 r1」7401は、レジスタ0及びレジスタ1の指す先の参照画像2行分を用いて演算を行なう指示である。
<実施形態4>
<概要>
本実施形態は、対象画像200の全てのピクセルを用いて参照画像との相関を求めるのではなく、一定の間引きをして評価を行うものである。
この方法は、演算量を削減するために有効であり、電力が有限であるバッテリ駆動のモバイル機器などにおいて特に有効である。
ピクセルを間引く際の有効な間引き方として、市松模様に間引く手法が知られている。
本実施形態では、対象画像を市松模様に間引いて、すなわち、格子状に1つおきのピクセルを用いて相関を求める。
図24は、実施形態4の対象画像及びPEアレイに供給する参照画像の例を示す図である。
本実施形態では、対象画像8200と対象画像8210との2つを、PEアレイ1100上に配置、すなわち、PEの対象データ記憶部2200に記憶する。この対象画像8200と対象画像8210は、同じものである。
2つの対象画像(8200、8210)のうち、演算対象のピクセルのデータのみを配置して、PEアレイ1100上に対象画像(8201、8011)を作成する。
市松模様型に間引くことによって、2つの横6画素、縦5画素を同時にマッピングすることができる。
一方、参照画像100の方は、2行分(8010、8020)を、それぞれ奇数番目と偶数番目の参照データをまとめて、2つの参照画像(8011、8021)を作成する。
すなわち、参照画像を供給する場合に、7画素からなる1行を、6画素からなる1行8010と、1画素ずれた6画素からなる1行8020として供給する。これにより、同時に2位置の水平方向位置を探索することができるようになる。
参照データ8010からは2段の参照データ8011が、参照データ8020からは2段の参照データ8021が作成され、それぞれ合わせて、奇数番目の参照データ8100と偶数番目の参照データ8101を作成する。
ここで作成したようなPEアレイ1100上の対象画像(8201、8011)と参照データ(8011、8021)とで演算を行なう。
従って、参照データ2つ分を一度に演算するので、簡易な制御回路によって、処理時間および消費電力を大幅に削減できることになる。
尚、本実施形態のアレイ型演算装置1000の構成は、実施形態3のものと同じである(図17参照)。
<動作>
次に、図25〜図28を用いて、本実施形態のアレイ型演算装置1000の処理について説明する。基本的な処理の流れは実施形態1(図9〜図11)と同じであるので、相違点を中心に説明する。
図25は、アレイ型演算装置1000で対象画像200と参照画像100との相関を求める処理を示すフローチャートである。この処理において、実施形態1での処理(図9参照)と異なる点は、PEにセットする対象データが間引いたものである点と、参照データ2行分を奇数番目と偶数番目とに分けてメモリキャッシュ0とメモリキャッシュ1との2つにセットする点である。
参照データを2行分使用する点で実施形態3と共通する。しかし、実施形態3では2行分のデータを同時に使用する期間があるために、1行目を使用している途中で2行目を別のメモリキャッシュにセットするが、実施形態4では2つのメモリキャッシュのデータは同じ期間で使用するため、同時にセットする点が異なる。また、実施形態4では、メモリキャッシュのデータを交互に使用する。
最初に、対象画像200から、各PEの対象データ記憶部2200にそれぞれの対象データを読込む(ステップS601)。
例えば、対象画像200を市松模様状に間引いた対象画像である図24の対象画像(8201、8011)をセットする。
制御情報生成部3000のカウンタ記憶部3010に値をセットする(ステップS110)。例えば、「Counter」に「8」をセットする。
次に、参照画像100のうち、アレイ型演算装置1000に供給する2行分データのアドレスをレジスタ0及びレジスタ1にロードする(ステップS602)。
例えば、図24の参照データ8100のアドレスをレジスタ0に、参照データ8101のアドレスをレジスタ1にロードする。
その後、「exec_array」の実行を行い(ステップS130)、演算結果を出力する(ステップS140)。 参照画像100の最終行まで演算処理を繰り返す(ステップS120からステップS150)。
参照画像100の最終列まで演算したら(ステップS160)処理を終了する。
図26は、「exec_array」の処理を示すフローチャートであり、処理内容は、実施形態1とほぼ同じである(図10参照)が、PEの処理(ステップS603)が異なる。
図27を用いて、PEの処理について説明する。図27は、PEの処理を示すフローチャートである。
この処理は、実施形態1での処理(図11参照)と異なる点は、各PEの参照データ記憶部2300に参照データを読込む場合に、メモリキャッシュ0とメモリキャッシュ1とから交互に読込む点である。
例えば、図29で、PEアレイ1100の1行目のPEには、「T01」「T20」「T40」〜の対象データがセットされているので、「R0y」「R2y」「R4y」〜の参照データと演算し、PEアレイ1100の2行目のPEには、「T11」「T31」「T51」〜の対象データがセットされているので、「R1y」「R3y」「R5y」〜の参照データと演算をする必要があるからである。
命令生成部(3100等)から送られた命令が、実行するという命令であれば(ステップS300:実行)、レジスタ0の指すメモリキャッシュ0(1006)又はレジスタ1の指すメモリキャッシュ1(1007)から、各PEの参照データ記憶部2300に参照データを読込む(ステップS604)。
どちらのメモリキャッシュからデータを読むかは、命令生成部から渡される命令で指示されている。この命令については、図28を用いて後で説明する。
次に、演算部2100は、対象データ記憶部2200の対象データと参照データ記憶部2300の参照データとの差分絶対値を求め(ステップS310)、演算結果を、相関記憶部2400の演算結果データ2410に記憶する(ステップS320)。その後、演算結果データと受信データ2420を加算して次行のPEに送り、データを受取った次行のPEは、自PE内の受信データ2420に記憶する。
一方、命令生成部(3100等)から送られた命令が、キャンセルという命令であれば(ステップS300:キャンセル)、何もしないで終了する。
図28は、制御情報生成部3000の処理と、命令生成部(3100等)の処理について説明する。
まず、図28(a)を用いて、制御情報生成部3000の処理について説明する。図28(a)は、実施形態4の制御情報生成部3000の処理を示すフローチャートである。
ここでは、制御情報生成部3000でのトークンの生成について説明する。
カウンタ「Counter」の値によって、トークンを生成する(ステップS610)。
制御情報生成部3000では、「Counter」が「==0」の場合には、「Invalid」トークンを生成し(ステップS611)、「Counter」が「≠0」の場合には、「Valid,sel0」トークンを生成する(ステップS612)。
「sel0」とは、レジスタ0の指す先のデータを使用する旨の指示である。
トークン作成後に、「Counter」の値を1減算する(ステップS620)。
次に、図28(b)を用いて、命令生成部(3100等)の処理について説明する。図28(b)は、命令生成部(3100等)の処理を示すフローチャートである。
命令生成部(3100等)は、実施形態1と同様、それぞれは同様の処理を行う。
まず、制御情報記憶部3110に記憶しているトークンを次の命令生成部に送信し(ステップS650)、前の命令生成部又は制御情報生成部からトークンを受信する(ステップS660)。
受信したトークンを基に、PEに実行させる命令を生成する。
トークンが「Invalid」の場合(ステップS670)は「exec_array」命令を実行しない命令を生成し(ステップS671)、「Valid,sel0」の場合は「data_sel0」を使用して「exec_array」命令を実行する命令を生成し(ステップS672)、「Valid,sel1」の場合は「data_sel1」を使用して「exec_array」命令を実行する命令を生成する(ステップS673)。
その後、トークンを反転させて、「sel0」であった場合には「sel1」に、「sel1」であった場合には「sel0」にする(ステップS680)。すなわち、次の行のPEで読むメモリキャッシュを換えるためである。
生成した演算命令は、各PEに送られ(ステップS685)、トークンは制御情報記憶部3110に記憶する(ステップS690)。
以下に、制御情報生成部3000が作成したトークンとPEの実行の関係について説明する。
図29は、トークンとPEの動作を時間軸上にあらわした図である。
制御情報生成部3000で発行されるValidトークンは、「Valid,sel0」であるが、PEアレイの各行のPEでは、「Valid,sel0」と「Valid,sel1」とのどちらかを基に生成された命令が渡ることになる。
従って、例えば、サイクル「Cyc 0」では、PEアレイ1行目のトークンは「Valid,sel0」である。サイクル「Cyc 0」では、2行目のトークンは1行目のトークンを反転した「Valid,sel1」で、1行目のトークンは「Valid,sel0」である。
すなわち、1行目のPEと3行目のPEと5行目のPEには「Valid,sel0」、2行目のPEと4行目のPEには「Valid,sel1」トークンで生成された命令を実行する。
次に、図30は、実施形態4のプログラムの例を示す図である。
プログラム命令リスト8600には、プログラム命令8601ごとの動作8602について記載している。また、制御情報(トークン)の値に応じての動作を示している。
例えば、トークン「Invalid」8603の場合は、「exec_array」は「nop」、すなわち実行は行なわず、「Valid,sel0」8604の場合は「data_sel0を使用して実行」することを示し、「Valid,sel1」8605の場合は「data_sel1を使用して実行」することを示している。
「ld[addr],r0,r1」8700は、レジスタ0とレジスタ1に、次の参照画像のアドレスをロードする指示である。具体的には、レジスタ0に[addr]が示すアドレスをロードし、レジスタ1には[addr]+offset が示すアドレスを同時にロードする。例えば、図24の参照データ8100と参照データ8101が連続してメモリに存在する場合に、[addr]は参照データ8100のアドレスであり、offsetは、参照データ8100の長さとなる。
また、「exec_array r0 r1」8701は、レジスタ0又はレジスタ1の指す先の参照データを用いて演算を行なう指示である。
「exec_array r0 r1」8701と「exec_array r0 r1」8702は、命令は同じであるが、どちらのレジスタを使用するかは、トークンによる。
<補足>
以上、本発明に係るアレイ型演算装置について実施形態に基づいて説明したが、この実行装置を部分的に変形することもでき、本発明は上述の実施形態に限られないことは勿論である。即ち、
(1)実施形態では、PEアレイの各PEは、行方向に隣接され、行単位に命令生成部を設けて動作させることとしているが、行方向だけでなく、列方向、斜めを含め隣接する各PEを接続して命令生成部を設けてもよい。
この構成においては、トークンを元に生成される命令は、PEアレイの任意のPEに送ることができる。その場合、レジスタ設定やトークンにより各PEが使用するデータの入力先を動的に変更したり、また、命令を実行するPEを定める、すなわち、命令の適用範囲を定めることにより、より柔軟な実行が可能となる。
(2)実施形態では、PEアレイはハードウェアで実現しているが、動的に再構成可能なハードウェアを用いて実現してもよい。ここで動的に再構成可能なハードウェアとは、ハードウェアの各ロジックを接続するプログラム可能な配線に、 構成情報を与えることで,ハードウェアの論理構造を動的に変更可能なものとする。
(3)実施形態4では、参照データの変換は、トークンを反転させることで行っているが、固定的に、変換回路が偶数位置か奇数位置かを示す情報を持ってもよい。すなわち、PEアレイの行ごとに読込むレジスタを固定しておく。
本発明にかかるアレイ型演算装置は、簡易な装置で柔軟かつ高性能な処理を実現することが可能であるため、画像処理LSIの演算器等として特に有用である。
動きベクトル探索処理の探索方法を示す図である。 図2(a)は、参照画像100の構成を表し、図2(b)は、対象画像200の構成を表す図である。 従来のアレイプロセッサの例を示す図である。 アレイ型演算装置1000と関連する周辺部の構成を表す図である。 アレイ型演算装置1000の構成の詳細を表す図である。 参照画像100をPEアレイ1100へ供給する方法を示す図である。 制御情報(トークン)を命令生成部(3100等)に供給する方法を示す図である。 各PEの相関記憶部2400に記憶されている内容の遷移を示す図である。 実施形態1のアレイ型演算装置1000で対象画像200と参照画像100との相関を求める処理を示すフローチャートである。 実施形態1の「exec_array」の処理を示すフローチャートである。 実施形態1のPEの処理を示すフローチャートである。 図12(a)は、実施形態1の制御情報生成部の処理を示すフローチャートであり、図12(b)は、実施形態1の命令生成部の処理を示すフローチャートである。 実施形態1のトークンとPEの動作を時間軸上にあらわした図である。 実施形態1のプログラムの例を示す図である。 実施形態2のトークンとPEの動作を時間軸上にあらわした図である。 実施形態2のプログラムの例を示す図である。 実施形態3のアレイ型演算装置1000の構成の詳細を表す図である。 実施形態3のアレイ型演算装置1000で対象画像200と参照画像100との相関を求める処理を示すフローチャートである。 実施形態3の「exec_array」の処理を示すフローチャートである。 実施形態3のPEの処理を示すフローチャートである。 図21(a)は、実施形態3の制御情報生成部3000の処理を示すフローチャートであり、図21(b)は、実施形態3の命令生成部(3100等)の処理を示すフローチャートである。 実施形態3のトークンとPEの動作を時間軸上にあらわした図である。 実施形態3のプログラムの例を示す図である。 実施形態4の対象画像及びPEアレイに供給する参照画像の例を示す図である。 実施形態4のアレイ型演算装置1000で対象画像200と参照画像100との相関を求める処理を示すフローチャートである。 実施形態4の「exec_array」の処理を示すフローチャートである。 実施形態4のPEの処理を示すフローチャートである。 図28(a)は、実施形態4の制御情報生成部3000の処理を示すフローチャートであり、図28(b)は、実施形態4の命令生成部(3100等)の処理を示すフローチャートである。 実施形態4のトークンとPEの動作を時間軸上にあらわした図である。 実施形態4のプログラムの例を示す図である。
符号の説明
100 参照画像
200 対象画像
1000 アレイ型演算装置
1001 プログラムカウンタ
1002 命令メモリ
1003 命令発行部
1004 プログラム記憶部
1005 メモリキャッシュ
1006 メモリキャッシュ0
1007 メモリキャッシュ1
1009 バス
1100 PEアレイ
1200 加算部
2000 PE
2100 演算部
2200 対象データ記憶部
2300 参照データ記憶部
2400 相関記憶部
2410 演算結果データ
2420 受信データ
3000 制御情報生成部
3010 カウンタ記憶部
3110、3210、3310 制御情報記憶部
5201、5211、6100 演算結果
5300、7300、8600 プログラム命令リスト

Claims (6)

  1. 順序付けられた複数のプロセッサエレメントで構成されたプロセッサアレイと、
    1サイクル毎に、1個の命令を取得する命令取得手段と、
    1サイクル毎に、第1順位のプロセッサエレメントの動作を制御する為の動作制御情報を作成し、作成した動作制御情報と前記命令取得手段で取得した1個の命令とに基づき、第1順位のプロセッサエレメントに対する命令を生成する手段と、
    1サイクル毎に、次順位以降のプロセッサエレメントの動作を制御する為の動作制御情報を、前順位のプロセッサエレメントの動作を制御する為に作成した動作制御情報を基に作成し、作成した動作制御情報と前記命令取得手段で取得した1個の命令とに基づき、前記次順位以降のプロセッサエレメントに対する命令を生成する手段と
    を備えることを特徴とするアレイ型演算装置。
  2. 前記プロセッサアレイは、信号線で連結された複数のプロセッサエレメントで構成され、
    1サイクル毎に、各プロセッサエレメントの演算結果を、前記信号線を介して次順位のプロセッサエレメントに伝達する
    ことを特徴とする請求項1記載のアレイ型演算装置。
  3. 前記アレイ型演算装置は、更に、1サイクル毎に、基本制御情報を生成する基本制御情報生成手段を備え、
    第1順位のプロセッサエレメントの動作を制御する為の動作制御情報は、前記基本制御情報生成手段で生成された基本制御情報を基に作成される
    ことを特徴とする請求項1記載のアレイ型演算装置。
  4. 前記プロセッサエレメントは、それぞれ、複数種類のデータを取得するデータ取得手段を備え、
    前記動作制御情報は、各プロセッサエレメントが命令を実行する際に使用するデータの種類を指定する指定情報を含み、
    前記各プロセッサエレメントは、実行に際して、前記指定情報に応じて取得したデータを使用する
    ことを特徴とする請求項1記載のアレイ型演算装置。
  5. 前記動作制御情報は、前記命令取得手段で取得した1個の命令を実行するか否かを指定する情報であって、
    前記動作制御情報が実行する旨の指示である場合には、前記プロセッサエレメントは前記命令を実行し、前記動作制御情報が実行しない旨の指示である場合には、該当するプロセッサエレメントへの電力供給を抑止する
    ことを特徴とする請求項1記載のアレイ型演算装置。
  6. 信号線で連結されたN個のプロセッサエレメントをM行有した、M行×N列の2次元アレイ構造のプロセッサアレイであって、各プロセッサエレメントの演算結果を、次行のプロセッサエレメントに伝達可能に接続されたプロセッサアレイと、
    1サイクル毎に、基本制御情報を生成する基本制御情報生成手段と、
    1サイクル毎に、1個の命令を取得する命令取得手段と、
    1サイクル毎に、最初の行のプロセッサエレメントの動作を制御する為の動作制御情報を前記基本制御情報生成手段で生成された基本制御情報を基に作成し、作成した動作制御情報と前記命令取得手段で取得した1個の命令とに基づき、最初の行に対する命令を生成する手段と、
    1サイクル毎に、2〜M行のプロセッサエレメントの動作を制御する為の動作制御情報を前行のプロセッサエレメントの動作を制御する為に作成した動作制御情報を基に作成し、作成した動作制御情報と前記命令取得手段で取得した1個の命令とに基づき、前記2〜M行のプロセッサエレメントに対する命令を生成する手段とを備え、
    前記プロセッサアレイのそれぞれの行に配列されているN個の前記プロセッサエレメントは、当該行に対する命令を実行する
    ことを特徴とするアレイ型演算装置。
JP2006531472A 2004-08-04 2005-08-02 アレイ型演算装置 Active JP4213750B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2004227927 2004-08-04
JP2004227927 2004-08-04
PCT/JP2005/014077 WO2006013839A1 (ja) 2004-08-04 2005-08-02 アレイ型演算装置

Publications (2)

Publication Number Publication Date
JPWO2006013839A1 JPWO2006013839A1 (ja) 2008-05-01
JP4213750B2 true JP4213750B2 (ja) 2009-01-21

Family

ID=35787124

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006531472A Active JP4213750B2 (ja) 2004-08-04 2005-08-02 アレイ型演算装置

Country Status (4)

Country Link
US (1) US7606996B2 (ja)
JP (1) JP4213750B2 (ja)
CN (1) CN100458762C (ja)
WO (1) WO2006013839A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9965824B2 (en) * 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01295335A (ja) 1988-05-23 1989-11-29 Fujitsu Ltd 負荷分散方式
JPH0218687A (ja) 1988-07-06 1990-01-22 Nec Software Ltd パイプラインプロセッサ制御方式
JPH03268054A (ja) 1990-03-19 1991-11-28 Fujitsu Ltd 高速並列処理システム
JPH07104845B2 (ja) 1990-09-11 1995-11-13 松下電送株式会社 並列処理装置
US5768561A (en) * 1992-06-30 1998-06-16 Discovision Associates Tokens-based adaptive video processing arrangement
US5659785A (en) 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
JPH08297650A (ja) * 1995-04-25 1996-11-12 Nippon Steel Corp アレイプロセッサ
US7082516B1 (en) * 2000-09-28 2006-07-25 Intel Corporation Aligning instructions using a variable width alignment engine having an intelligent buffer refill mechanism

Also Published As

Publication number Publication date
US20080282061A1 (en) 2008-11-13
JPWO2006013839A1 (ja) 2008-05-01
WO2006013839A1 (ja) 2006-02-09
CN101010671A (zh) 2007-08-01
CN100458762C (zh) 2009-02-04
US7606996B2 (en) 2009-10-20

Similar Documents

Publication Publication Date Title
JP2011035655A (ja) フレームレート変換装置、およびそれを搭載した表示装置
US7598984B2 (en) Image signal processing circuit
US20070041662A1 (en) Efficient scaling of image data
JP4213750B2 (ja) アレイ型演算装置
TWI634436B (zh) 緩衝裝置及卷積運算裝置與方法
WO1999063751A1 (en) Low-power parallel processor and imager integrated circuit
JP4625903B2 (ja) 画像処理プロセッサ
JP5182285B2 (ja) デコード方法及びデコード装置
JP4695124B2 (ja) 動画像符号化における動き探索装置
JP2009015637A (ja) 演算ユニット及び画像フィルタリング装置
JPH11196425A (ja) 動きベクトル検出装置
JP2010108284A (ja) 画像処理プロセッサ
US9277168B2 (en) Subframe level latency de-interlacing method and apparatus
JP4419608B2 (ja) 動画像符号化装置
JP4264666B2 (ja) 画像処理装置および方法、並びにプログラム
JP2007329858A (ja) 動画像表示装置、動画像表示方法及びプログラム
JP2012123465A (ja) データ処理装置
US20130094586A1 (en) Direct Memory Access With On-The-Fly Generation of Frame Information For Unrestricted Motion Vectors
US20060007235A1 (en) Method of accessing frame data and data accessing device thereof
JP2004080295A (ja) 動きベクトル検出装置および動きベクトル検出方法
JP2000310985A (ja) バッファ制御装置及び半導体集積回路
CN117097850A (zh) 视频流处理系统和视频流处理方法
JP3352558B2 (ja) 信号処理装置
JP2005020521A (ja) 撮像装置及びこの撮像装置を備える携帯型電話機
JP2003304505A (ja) 映像信号出力装置、および映像信号出力方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080526

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: 20081007

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081030

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111107

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4213750

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121107

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121107

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131107

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313135

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313135

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313135

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250