JP4576963B2 - Address calculation for DMA transfer - Google Patents
Address calculation for DMA transfer Download PDFInfo
- Publication number
- JP4576963B2 JP4576963B2 JP2004281587A JP2004281587A JP4576963B2 JP 4576963 B2 JP4576963 B2 JP 4576963B2 JP 2004281587 A JP2004281587 A JP 2004281587A JP 2004281587 A JP2004281587 A JP 2004281587A JP 4576963 B2 JP4576963 B2 JP 4576963B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- offset
- address
- layer
- unit
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Bus Control (AREA)
Description
本発明は、DMA転送のためのアドレス演算に関する。 The present invention relates to an address calculation for DMA transfer.
図12は、従来のDMAコントローラによるアドレス演算を示す説明図である。従来のDMAコントローラは、ソース領域21Aのスタートアドレスと、ディスティネーション領域22Aのスタートアドレスと、転送データ長の指定を受け、メモリのソース領域21Aから転送データ長分のデータをディスティネーション領域22Aに転送するアドレス演算を行なっていた。このときの転送データは、ソース領域21Aに連続的に保存されていたデータであり、転送により、そのままの順番でディスティネーション領域22Aに連続的に保存される。
FIG. 12 is an explanatory diagram showing address calculation by a conventional DMA controller. The conventional DMA controller receives the start address of the
ところで、画像データは、(X(補助領域),R(レッド),G(グリーン),B(ブルー))という単位で1画素のデータが構成されていることが多い。このとき、R成分(R0,R1といった要素の集合)やG成分やB成分の単位での処理を行なう場合に、3つの色成分を各画素データから抽出し、別々のディスティネーション領域に転送したいという要望がある。しかし、従来のDMAコントローラでこのような転送を実現するには、CPUが多数回にわたってDMAコントローラに転送指示を出さなければならず、多大な時間を要するという問題があった。 By the way, the image data is often composed of data of one pixel in units of (X (auxiliary region), R (red), G (green), B (blue)). At this time, when processing is performed in units of R component (a set of elements such as R0 and R1), G component, and B component, it is desired to extract three color components from each pixel data and transfer them to different destination areas. There is a request. However, in order to realize such a transfer with the conventional DMA controller, the CPU has to issue a transfer instruction to the DMA controller many times, and there is a problem that it takes a lot of time.
このような問題は、画像データの転送時に限らず、一般に、複雑なデータ転送を行なうことを必要とする場合に共通する問題であった。 Such a problem is not limited to the transfer of image data, and is generally a problem that is common when complex data transfer is required.
本発明は、上記した問題点を解決するためになされたものであり、DMA転送のための複雑なアドレス演算を行なう技術を提供することを目的とする。 The present invention has been made to solve the above-described problems, and an object of the present invention is to provide a technique for performing complex address calculation for DMA transfer.
上記課題の少なくとも一部を解決するため、本発明によるDMAコントローラは、
ソース領域内のデータをディスティネーション領域に転送するDMAコントローラであって、
前記ソース領域のデータのアドレスを演算するソースアドレス演算部と、
前記ディスティネーション領域のアドレスを演算するディスティネーションアドレス演算部と、
を備え、
前記ソースアドレス演算部及び前記ディスティネーションアドレス演算部のそれぞれは、N次元(Nは2以上の整数)の階層構造を有するN階層データブロックに関するアドレスを演算することが可能であり、
前記N階層データブロックは、指定されたスタートアドレス以降のメモリ領域において、指定されたデータ長DLを有するデータ要素の集合として構成されており、
前記データ要素を第0階層のデータブロックと定義したとき、i番目(iは1からNまでの整数)の階層のデータブロックは、(i−1)番目の階層のデータブロックが、指定されたオフセットL(i)−offsetで、指定されたブロック個数L(i)−nだけ繰り返し配置された構成を有しており、
前記ソースアドレス演算部及び前記ディスティネーションアドレス演算部のそれぞれは、
前記スタートアドレスを記憶するスタートアドレス記憶部と、
前記データ長DLを記憶するデータ長記憶部と、
第1階層から第N階層までのデータブロックのためのN個のオフセットL(i)−offset(iは1からNまでの整数)を記憶するオフセット記憶部と、
第1階層から第N階層までのデータブロックのためのN個のブロック個数L(i)−n(iは1からNまでの整数)を記憶するブロック個数記憶部と、
前記スタートアドレスと、前記データ長DLと、前記N個のオフセットL(i)−offsetと、前記N個のブロック個数L(i)−nとに基づいて、前記ソース領域または前記ディスティネーション領域における前記N階層データブロックのためのアドレス演算を実行するアドレス演算実行部と、
を備え、
前記ディスティネーションアドレス演算部は、少なくとも前記i番目の階層のデータブロックにおけるオフセットL(i)−offsetを前記ソースアドレス演算部におけるオフセットL(i)−offsetとは異なる値に設定可能であることを特徴とする。
In order to solve at least a part of the above problems, a DMA controller according to the present invention includes:
A DMA controller for transferring data in a source area to a destination area,
A source address calculation unit for calculating an address of data in the source region;
A destination address calculation unit for calculating an address of the destination area;
With
Each of the source address calculation unit and the destination address calculation unit can calculate an address related to an N-layer data block having an N-dimensional (N is an integer of 2 or more) hierarchical structure,
The N-layer data block is configured as a set of data elements having a specified data length DL in a memory area after a specified start address,
When the data element is defined as a data block in the 0th layer, a data block in the i-th layer (i is an integer from 1 to N) is designated as a data block in the (i-1) -th layer. The offset L (i) -offset has a configuration in which the designated number of blocks L (i) -n is repeatedly arranged,
Each of the source address calculator and the destination address calculator is
A start address storage unit for storing the start address;
A data length storage unit for storing the data length DL;
An offset storage unit for storing N offsets L (i) -offset (i is an integer from 1 to N) for data blocks from the first layer to the Nth layer;
A block number storage unit for storing N block numbers L (i) -n (i is an integer from 1 to N) for data blocks from the first layer to the Nth layer;
Based on the start address, the data length DL, the N offsets L (i) -offset, and the N block numbers L (i) -n, the source region or the destination region An address calculation execution unit for performing an address calculation for the N-layer data block;
Equipped with a,
The destination address calculation unit, configurable der Rukoto to a value different from that of the offset L (i) -offset offset L (i) -offset in at least the i-th layer of the data block in the source address calculation unit It is characterized by.
本発明によれば、N階層データブロックに関するアドレスを演算することにより、DMA転送のための複雑なアドレス演算を実行することが可能である。また、N階層データブロックの転送が完了するまでに必要とされるアドレス演算を、DMAコントローラの内部で実行することが可能である。 According to the present invention, it is possible to execute a complicated address calculation for DMA transfer by calculating an address relating to an N-layer data block. Further, it is possible to execute an address calculation required until the transfer of the N-layer data block is completed inside the DMA controller.
前記ソースアドレス演算部と前記ディスティネーションアドレス演算部は、前記スタートアドレスと、前記データ長DLと、前記N個のオフセットL(i)−offsetと、前記N個のブロック個数L(i)−nの値を、互いに独立に設定可能であるものとしても良い。 The source address calculation unit and the destination address calculation unit include the start address, the data length DL, the N offsets L (i) -offset, and the N block numbers L (i) -n. These values may be set independently of each other.
これによれば、ソース領域とディスティネーション領域とが、互いに非対称となるアドレス演算を行なうことが可能となる。 According to this, it is possible to perform an address operation in which the source region and the destination region are asymmetric with each other.
前記アドレス演算実行部は、
1回のデータ転送で転送されるデータ量の累積値と、前記データ長DLとの関係から、前記第0階層のデータブロックとしての前記データ要素の転送が1回終了したことを示す信号を出力するデータ長カウンタと、
(i−1)番目(iは1からNまでの整数)の階層のデータブロックの転送回数と、前記ブロック個数L(i)−nとの関係から、前記i番目の階層のデータブロックの転送が1回終了したことを示す信号を出力するN個の第i階層カウンタと、
前記(i−1)番目の階層のデータブロックの転送が1回終了する度に前記i番目の階層のオフセットL(i)−offsetを選択して出力するオフセット選択部と、
前記スタートアドレスに、前記1回のデータ転送で転送されるデータ量を順次加算してゆき、また、前記オフセット選択部から前記i番目の階層のオフセットL(i)−offsetが出力されたときには、更に前記i番目の階層のオフセットL(i)−offsetを加算することによって、転送対象となるデータのアドレスを順次生成する加算部と、を備えるものとしても良い。
The address calculation execution unit
A signal indicating that the transfer of the data element as the data block of the 0th layer is completed once based on the relationship between the accumulated value of the amount of data transferred in one data transfer and the data length DL A data length counter to
(I-1) Transfer of the i-th layer data block from the relationship between the number of transfers of the data block in the (i-1) th layer (i is an integer from 1 to N) and the number of blocks L (i) -n N number of i-th layer counters that output a signal indicating that is completed once,
An offset selection unit that selects and outputs the offset L (i) -offset of the i-th layer each time the transfer of the data block of the (i-1) -th layer is completed once;
The amount of data transferred in the one-time data transfer is sequentially added to the start address, and when the offset L (i) -offset of the i-th layer is output from the offset selection unit, Furthermore, an addition unit that sequentially generates addresses of data to be transferred by adding the offset L (i) -offset of the i-th layer may be provided.
また、前記1回のデータ転送で転送されるデータ量は可変であるものとしても良い。 Further, the amount of data transferred in the one-time data transfer may be variable.
なお本発明は種々の形態で実現可能であり、例えば、アドレス演算装置およびアドレス演算方法等の形態で実現可能である。 The present invention can be realized in various forms, for example, in the form of an address calculation device, an address calculation method, and the like.
図1は、DMAコントローラ(以下、DMACと呼ぶ)1000を備えるコンピュータシステムを示す説明図である。DMAC1000は、メモリ20におけるソース領域21のデータをディスティネーション領域22に転送するための装置である。DMAC1000は、バス1100に接続されており、CPU10やメモリ20との間で情報の伝達が可能である。
FIG. 1 is an explanatory diagram showing a computer system including a DMA controller (hereinafter referred to as DMAC) 1000. The DMAC 1000 is a device for transferring data in the
DMAC1000は、制御部100と、ソースアドレス演算回路200と、ディスティネーションアドレス演算回路300と、バスインタフェース400と、バッファユニット500とを備えている。バッファユニット500は、ソースバッファ520と、ディスティネーションバッファ530とを備えている。
The DMAC 1000 includes a
図2は、ソースアドレス演算回路200の内部構成を示すブロック図である。ソースアドレス演算回路200は、スタートアドレスレジスタ210と、要素間オフセットレジスタ221と、ユニット間オフセットレジスタ222と、セット間オフセットレジスタ223と、データ長カウンタ230と、要素個数カウンタ231と、ユニット個数カウンタ232と、セット個数カウンタ233と、第1のマルチプレクサ250と、第1のデコーダ260と、第2のデコーダ262と、第2のマルチプレクサ252と、第1の加算器270と、第2の加算器272と、第3のマルチプレクサ254と、アドレスレジスタ280とを備えている。レジスタ210,221〜223とカウンタ230〜233は、CPU10によって設定されたパラメータをそれぞれ保持している。
FIG. 2 is a block diagram showing the internal configuration of the source address
図3は、レジスタ210,221〜223に設定されるパラメータSA,Eoffset,Uoffset,Soffsetと、カウンタ230〜233に設定されるパラメータDL,En,Un,Snの意味を示す説明図である。図3では、転送対象となるデータ領域が、3次元の階層構造を有する3階層データブロックとして構成されている。この3階層データブロックは、以下の構成を有している。
(1)第0階層データブロックL0DB:データ長DLの長さを有する連続したデータ。図3の例では、DL=3バイトであり、3バイトで1つの第0階層データブロックL0DBが構成されている。なお、内部に「B」と記された矩形は1バイトを示している。第0階層データブロックL0DBは、この階層構造データの基本的なデータの単位となるので、「データ要素」とも呼ぶ。第0階層データブロックL0DBを単に「要素」とも呼ぶ。
(2)第1階層データブロックL1DB:第0階層データブロックL0DBを、要素間オフセットEoffsetだけ互いに離間させて要素個数Enだけ繰り返し配置したデータ群。第1階層データブロックL1DBを「ユニット」とも呼ぶ。要素間オフセットEoffsetは、本発明の第1階層のオフセットL(1)−offsetに相当し、要素個数Enは、本発明の第1階層のブロック個数L(1)−nに相当する。
(3)第2階層データブロックL2DB:第1階層データブロックL1DBを、ユニット間オフセットUoffsetだけ互いに離間させてユニット個数Unだけ繰り返し配置したデータ群。第2階層データブロックL2DBを「セット」とも呼ぶ。ユニット間オフセットUoffsetは、本発明の第2階層のオフセットL(2)−offsetに相当し、ユニット個数Unは、本発明の第2階層のブロック個数L(2)−nに相当する。
(4)第3階層データブロックL3DB:第2階層データブロックL2DBを、セット間オフセットSoffsetだけ互いに離間させてセット個数Snだけ繰り返し配置したデータ群。第3階層データブロックL3DBを「セット群」とも呼ぶ。セット間オフセットSoffsetは、本発明の第3階層のオフセットL(3)−offsetに相当し、セット個数Snは、本発明の第3階層のブロック個数L(3)−nに相当する。
FIG. 3 is an explanatory diagram showing the meanings of the parameters SA, Eoffset, Uoffset, and Soffset set in the
(1) 0th layer data block L0DB: continuous data having a data length DL. In the example of FIG. 3, DL = 3 bytes, and one 0th layer data block L0DB is configured by 3 bytes. Note that a rectangle marked “B” inside indicates one byte. Since the 0th hierarchical data block L0DB is a basic data unit of this hierarchical structure data, it is also called a “data element”. The 0th layer data block L0DB is also simply referred to as “element”.
(2) First tier data block L1DB: A data group in which the 0th tier data block L0DB is repeatedly arranged by the number of elements En while being spaced apart from each other by an element offset Eoffset. The first tier data block L1DB is also referred to as “unit”. The element offset Eoffset corresponds to the first layer offset L (1) -offset of the present invention, and the element number En corresponds to the first layer block number L (1) -n of the present invention.
(3) Second tier data block L2DB: A data group in which the first tier data block L1DB is repeatedly arranged by the number of units Un separated from each other by an inter-unit offset Uoffset. The second tier data block L2DB is also referred to as “set”. The inter-unit offset Uoffset corresponds to the second layer offset L (2) -offset of the present invention, and the unit number Un corresponds to the second layer block number L (2) -n of the present invention.
(4) Third tier data block L3DB: a data group in which the second tier data block L2DB is repeatedly arranged by the number of sets Sn spaced apart from each other by the inter-set offset Soffset. The third hierarchical data block L3DB is also called a “set group”. The offset between sets Soffset corresponds to the offset L (3) -offset of the third layer of the present invention, and the set number Sn corresponds to the number of blocks L (3) -n of the third layer of the present invention.
なお、第0階層データブロックL0DBを第1階層と考えて、図3のデータ構造を4次元(即ち4階層)のデータブロックと考えることも可能である。 Note that the 0th layer data block L0DB can be considered as the 1st layer, and the data structure of FIG. 3 can also be considered as a four-dimensional (ie, 4 layer) data block.
再度、図2に戻り説明する。各カウンタ230〜233は、それぞれに設定されているパラメータDL,En,Un,Snの値を順次減算し、そのカウント値DL−c,En−c,Un−c,Sn−cが0になると、初期値DL,En,Un,Snに戻って減算を繰り返す。なお、これらのカウント値を、「残存データ長DL−c」,「残存要素個数En−c」,「残存ユニット個数Un−c」,「残存セット個数Sn−c」と呼ぶ。各カウンタ230〜233は、本発明のブロック個数記憶部に相当するレジスタを内部に有している。
Again, returning to FIG. Each of the
第1のデコーダ260は、データ長カウンタ230から与えられた残存データ長DL−cと、アドレスレジスタ280から与えられる現在アドレスAdrに基づいて、転送データバイト数Dbを決定する。転送データバイト数Dbは、1回のデータ転送で転送されるデータ量である。第1のデコーダ260は、転送データバイト数Dbが一定値となるよう決定しても良いし、転送回数や残存データ長DL−cに基づいて変動するように決定しても良い。例えば、1バイト,2バイト,4バイト,8バイトと、転送データバイト数Dbを変化させるものとしても良い。即ち、1回のデータ転送で転送されるデータ量は可変とすることができる。第2のマルチプレクサ252は、制御部100(図1)から供給される選択信号S1に応じて、転送データバイト数Dbと、値「0」とのうちの一方を選択して出力する。具体的には、データ転送の実行中には転送データバイト数Dbを選択し、データ転送を実行していないときには値「0」を選択する。
The
第2のデコーダ262は、4つのカウンタ230〜233から与えられるカウント値DL−c,En−c,Un−c,Sn−cに応じて、選択信号S2を生成して、第1のマルチプレクサ250に供給する。カウンタ231〜233は、本発明の第i階層カウンタに相当する。
The
第1のマルチプレクサ250は、この選択信号S2に応じて、3つのオフセットEoffset,Uoffset,Soffsetと、値「0」の4つの値のうちの1つを選択して出力する。具体的には、残存データ長DL−cが0になったときには、要素間オフセットEoffsetを選択する。また、残存要素個数En−cが0になったときには、ユニット間オフセットUoffsetを選択する。更に、残存ユニット個数Un−cが0になったときには、セット間オフセットSoffsetを選択する。また、4つのカウント値DL−c,En−c,Un−c,Sn−cがいずれも0でないときには、値「0」を選択する。第1のマルチプレクサ250は、本発明のオフセット選択部に相当する。
The
第1の加算器270は、第1と第2のマルチプレクサ250,252から出力された値を加算する。この加算結果は、第2の加算器272において現在アドレスAdrと加算される。
The
第3のマルチプレクサ254は、制御部100から供給される選択信号S3に応じて、スタートアドレスSAと、第2の加算器272の加算結果とのうちの一方を選択して出力する。具体的には、転送の開始時にのみスタートアドレスSAを選択し、その後は第2の加算器272の加算結果を選択する。アドレスレジスタ280は、第3のマルチプレクサ254の出力を現在アドレスAdrとして保持し、バスインタフェース400に供給する。第1のデコーダ260と、第2と第3のマルチプレクサ252,254と、第1と第2の加算器270,272と、アドレスレジスタ280は、本発明の加算部に相当する。
The
なお、ディスティネーションアドレス演算回路も、図2と同じ構成を有している。また、ソースアドレス演算回路200内の各種のパラメータSA,Eoffset,Uoffset,Soffset,DL,En,Un,Snは、ディスティネーションアドレス演算回路300内のこれらのパラメータとは独立に設定可能である。なお、ソースアドレス演算回路200とディスティネーションアドレス演算回路において、パラメータSA,Eoffset,Uoffset,Soffset,DL,En,Un,Snを全て互いに同じ値に設定するものとしても良い。この場合、ソース領域21とディスティネーション領域22とが、互いに対称(データ配列が同じ)となる。
The destination address calculation circuit has the same configuration as that shown in FIG. Various parameters SA, Eoffset, Uoffset, Soffset, DL, En, Un, and Sn in the source address
図4は、アドレス演算処理を示すフローチャートである。アドレス演算処理は、CPU10が、種々のパラメータ(要素個数En、ユニット個数Un、セット個数Sn、データ長DL、要素間オフセットEoffset、ユニット間オフセットUoffset、セット間オフセットSoffset、スタートアドレスSA)を設定し、DMAC1000にデータ転送命令を出力した後に、ソースアドレス演算回路200およびディスティネーションアドレス演算回路300(以下、ソースアドレス演算回路200およびディスティネーションアドレス演算回路300を単にアドレス演算回路と呼ぶ)により実行される。
FIG. 4 is a flowchart showing the address calculation process. In the address calculation process, the
アドレス演算処理には、セット群ループrp3と、セットループrp2と、ユニットループrp1と、要素ループrp0という4つのループが存在する。要素ループrp0(第0階層ループ)では、図3における第0階層データブロックL0DB(要素)のアドレス演算を実行する。ユニットループrp1(第1階層ループ)は、図3における第1階層データブロックL1DB(ユニット)内のアドレス演算を実行する。セットループrp2(第2階層ループ)では、図3における第2階層データブロックL2DB(セット)内のアドレス演算を実行する。セット群ループrp3(第3階層ループ)では、図3における第3階層データブロックL3DB(セット群)内のアドレス演算を実行する。以下、アドレス演算処理を図2の回路を参照しつつ説明する。 In the address calculation process, there are four loops: a set group loop rp3, a set loop rp2, a unit loop rp1, and an element loop rp0. In the element loop rp0 (0th hierarchy loop), the address calculation of the 0th hierarchy data block L0DB (element) in FIG. 3 is executed. The unit loop rp1 (first hierarchy loop) executes an address calculation in the first hierarchy data block L1DB (unit) in FIG. In the set loop rp2 (second hierarchy loop), an address operation in the second hierarchy data block L2DB (set) in FIG. 3 is executed. In the set group loop rp3 (third hierarchy loop), an address operation in the third hierarchy data block L3DB (set group) in FIG. 3 is executed. The address calculation process will be described below with reference to the circuit of FIG.
第3のマルチプレクサ254に供給される選択信号S3は、アドレス演算処理の最初はスタートアドレスSAを出力するように制御部100により設定される。第3のマルチプレクサ254は、選択信号S3に従い、スタートアドレスレジスタ210に保存されているスタートアドレスSAをアドレスレジスタ280に保存する。これにより、現在アドレスAdrはスタートアドレスSAとなる(ステップS10)。
The selection signal S3 supplied to the
図6は、転送対象となるメモリ領域を模式的に示す説明図である。図6の1マスは1バイトを示す。図6(a)の左端が、スタートアドレスSAとして指定されている。以下では、図6を参照しつつアドレス演算処理を説明する。 FIG. 6 is an explanatory diagram schematically showing a memory area to be transferred. One square in FIG. 6 represents one byte. The left end of FIG. 6A is designated as the start address SA. Hereinafter, the address calculation process will be described with reference to FIG.
アドレス演算回路が、セット群ループrp3(図4)を開始すると、ユニット個数カウンタ232は、残存ユニット個数Un−cを初期値Unに戻す(ステップS20)。また、アドレス演算回路が、セットループrp2を開始すると、要素個数カウンタ231は、残存要素個数En−cを初期値Enに戻す(ステップS30)。そして、アドレス演算回路が、ユニットループrp1を開始すると、データ長カウンタ230は、残存データ長DL−cを初期値DLに戻す(ステップS40)。なお、これらの処理は、アドレス演算処理中、カウンタにより各パラメータの値が0になるため、再度ループ処理を実行する前にパラメータの値を初期値に戻すために必要とされる処理である。しかし、現在の各値はCPU10が設定した初期値のままなので、図4の全体のループの1回目の実行時には、ステップS20,S30,S40は省略可能である。
When the address arithmetic circuit starts the set group loop rp3 (FIG. 4), the
要素ループrp0は、データ長DL分のアドレスを出力するためのループである。図6(a)の例では、データ長DLは3バイトであり、要素ループrp0により、データX11とデータX22とデータX33の3バイト分のアドレスを出力する。 The element loop rp0 is a loop for outputting an address corresponding to the data length DL. In the example of FIG. 6A, the data length DL is 3 bytes, and addresses of 3 bytes of data X11, data X22, and data X33 are output by the element loop rp0.
そのために、要素ループrp0では、まず、現在アドレスAdrを出力する(ステップS50)。今は、現在アドレスAdrはスタートアドレスSAなので、図6(a)における左端のスタートアドレスSAが出力され、データX11の最初のアドレス(以下、単にアドレスという)が指定されたことになる。 Therefore, in the element loop rp0, first, the current address Adr is output (step S50). Since the current address Adr is now the start address SA, the leftmost start address SA in FIG. 6A is output, and the first address of the data X11 (hereinafter simply referred to as an address) is designated.
要素ループrp0では、次に、アドレスレジスタ280の値である現在アドレスAdrに出力データバイト数Dbが加算される(ステップS60)。出力データバイト数Dbは、1回のデータ転送によって転送されるデータのバイト数を示す。出力データバイト数Dbは、通常はデータ長DL以下の値が設定される。 In the element loop rp0, next, the output data byte number Db is added to the current address Adr which is the value of the address register 280 (step S60). The number of output data bytes Db indicates the number of bytes of data transferred by one data transfer. The number of output data bytes Db is normally set to a value less than or equal to the data length DL.
図2のアドレス演算回路は、ステップS60の処理を以下のように実行する。図2の第1のデコーダ260は、残存データ長DL−cと現在アドレスAdrを参照しつつ、図1の制御部100がどれだけのデータを転送可能であるかに応じて出力データバイト数Dbを出力する。本実施例では、第1のデコーダ260は、出力データバイト数Dbを、常に1バイトと設定するものとする。
The address arithmetic circuit in FIG. 2 executes the process of step S60 as follows. The
図2の第2のマルチプレクサ252は、第1のデコーダ260が出力した出力データバイト数Db(値「1」)を第1の加算器270に出力する。なお、第2のマルチプレクサ252に与えられる選択信号S1は、データ転送の実行中は、出力データバイト数Dbを出力するよう制御部100により指定されている。一方、第2のデコーダ262は、残存データ長DL−cを基に、選択信号S2を生成する。選択信号S2は、残存データ長DL−cが「0」でなければ、第1のマルチプレクサ250が「0」を出力するように生成される。今は、残存データ長DL−cは3バイトであるから、第1のマルチプレクサ250は「0」を出力する。よって、第1の加算器270は、出力データバイト数Db(値「1」)と「0」を足し合わせ、出力データバイト数Db(値「1」)を出力する。
The
第2の加算器272は、現在アドレスAdr(今はスタートアドレスSA)と出力データバイト数Db(値「1」)とを足し合わせ、第3のマルチプレクサ254に出力する。第3のマルチプレクサ254に与えられる選択信号S3は、アドレス演算処理の最初(ステップS10のスタートアドレスSA出力)以外には、第2の加算器272からの出力信号を選択して出力するように制御部100により設定されている。よって、第3のマルチプレクサ254は、現在アドレスAdr(今はスタートアドレスSA)と出力データバイト数Db(値「1」)を足し合わせた値をアドレスレジスタ280に出力する。これにより、アドレスレジスタ280の値である現在アドレスAdrは、(現在アドレスAdr+出力データバイト数Db)に置換される(ステップS60)。ここでは、現在アドレスAdrは、(スタートアドレスSA+1)バイトとなる。
The
データ長カウンタ230は、残存データ長DL−cから出力データバイト数Dbを減算する(ステップS70)。ここでは、残存データ長DL−cは、3バイトから1バイトを引いて2バイトとなる。要素ループrp0は、残存データ長DL−cが0になるまで繰り返されるので、再び現在アドレスAdrが出力される(ステップS50)。即ち、図6においては、スタートアドレスSA+1バイトの位置のデータX12のアドレスが指定される。そして、ステップS60で現在アドレスAdrは、スタートアドレスSA+2バイトとなり、ステップS70で残存データ長DL−cは1バイトとなる。残存データ長DL−cが0ではないので、再び現在アドレスAdrが指定される(ステップS50)。即ち、図6においては、スタートアドレスSA+2バイトの位置のデータX13のアドレスが指定される。そして、ステップS60で現在アドレスAdrは、スタートアドレスSA+3バイト(図6におけるEl1の位置)となり、ステップS70で残存データ長DL−cは0バイトとなる。残存データ長DL−cが0になったので、要素ループrp0を抜けて、ステップS80に進む。
The
ところで、以上の要素ループrp0によりアドレス指定されるデータ長DL分のデータ領域は、先述したように「要素」と呼ぶ。図6(a)では、4つの要素E11〜E14が図示されている。要素E12は、データX21と、データX22と、データX23で構成されており、要素E12のデータ長はDLである。即ち、要素E12は要素E11と同じ構成である。要素E13と要素E14も要素E11と同じ構成である。各要素の始めのアドレスは、それぞれアドレスEs1、Es2、Es3、Es4であり、末尾のアドレスは、それぞれアドレスEl1、El2、El3、El4である。要素間オフセットEoffsetは、要素間のギャップの長さであり、図6(a)の例では3バイトである。要素個数Enは、第1階層に含まれる要素の数であり、図6(a)の例では要素個数Enは4である。 By the way, as described above, the data area corresponding to the data length DL addressed by the element loop rp0 is referred to as an “element”. In FIG. 6A, four elements E11 to E14 are shown. The element E12 includes data X21, data X22, and data X23, and the data length of the element E12 is DL. That is, the element E12 has the same configuration as the element E11. The elements E13 and E14 have the same configuration as the element E11. The start addresses of the elements are the addresses Es1, Es2, Es3, and Es4, respectively, and the end addresses are the addresses El1, El2, El3, and El4, respectively. The inter-element offset Eoffset is the length of the gap between elements, and is 3 bytes in the example of FIG. The number of elements En is the number of elements included in the first hierarchy, and the number of elements En is 4 in the example of FIG.
残存データ長DL−cが0になると、図2における第2のデコーダ262は要素個数カウンタ231に要素個数Enを1減らすよう信号を送る。その信号を受け、要素個数カウンタ231は、残存要素個数En−cから1を減算する(ステップS80)。ステップS80により、ここでは残存要素個数En−cは3になる。次に、アドレス演算回路は、要素間オフセットEoffset設定処理を行なう(ステップS90)。
When the remaining data length DL-c becomes 0, the
図5は、要素間オフセットEoffset設定処理を示すフローチャートである。残存要素個数En−cが0ではないとき(ステップS91:NO)、現在アドレスAdrを(現在アドレスAdr+要素間オフセットEoffset)に置換する(ステップS92)。図6(a)の例では、今、要素個数En=3で、現在アドレスAdrはアドレスEl1であるから、ステップS92により、現在アドレスAdrは、アドレスEl1に要素間オフセットEoffsetの3バイトを加え、アドレスEs2となる。 FIG. 5 is a flowchart showing an element offset Eoffset setting process. When the number of remaining elements En-c is not 0 (step S91: NO), the current address Adr is replaced with (current address Adr + element offset Eoffset) (step S92). In the example of FIG. 6A, the number of elements En = 3 and the current address Adr is the address El1, so that in step S92, the current address Adr adds 3 bytes of the element offset Eoffset to the address El1, Address Es2.
図2のアドレス演算回路は、ステップS92の処理を以下のように実行する。第1のデコーダ260は、残存データ長DL−cが現在「0」であるから、出力データバイト数Dbを「0」として出力する。従って、第2のマルチプレクサ252は、出力データバイト数Db(値「0」)を出力する。なお、制御部100が出力データバイト数Dbではなく「0」を出力するよう選択信号S1を設定するものとしても良い。その場合も、第2のマルチプレクサ252から「0」が出力される。一方、第2のデコーダ262は、残存データ長DL−cが0で、かつ残存要素個数En−cが0ではないときは、第1のマルチプレクサ250に要素間オフセットEoffsetを出力させる選択信号S2を生成する。この選択信号S2に応じて、第1のマルチプレクサ250は要素間オフセットEoffsetを出力する。第1の加算器270は、要素間オフセットEoffsetと「0」を足し合わせ、要素間オフセットEoffsetを第2の加算器272へ出力する。第2の加算器272は、現在アドレスAdrと要素間オフセットEoffsetを足し合わせ、第3のマルチプレクサ254に出力する。第3のマルチプレクサ254は、選択信号S3に従い、(現在アドレスAdr+要素間オフセットEoffset)をアドレスレジスタ280に出力する。以上により、現在アドレスAdrは、(現在アドレスAdr+要素間オフセットEoffset)に置換される(ステップS92)。
The address arithmetic circuit in FIG. 2 executes the process of step S92 as follows. Since the remaining data length DL-c is currently “0”, the
図4に戻る。ユニットループrp1は、残存要素個数En−cが「0」になるまで繰り返される。図6(a)の例では、現在の残存要素個数En−cは「3」であるから、再度ユニットループrp1が実行される。即ち、残存データ長DL−cは初期値DLに戻され(ステップS40)、要素ループrp0が実行される。要素ループrp0により、図6(a)の要素E11の時と同様に、要素E12のアドレスが出力され、現在アドレスAdrはアドレスEl2となり、残存データ長DL−cは「0」になる。こうしてユニットループrp1を繰り返し実行して、残存要素個数En−cが「0」になったとき、現在アドレスAdrはアドレスEl4となる。図5の要素間オフセットEoffset設定処理によれば、残存要素個数En−cが「0」の時には(ステップS91:YES)、現在アドレスAdrは変更しないので、現在アドレスAdrは、アドレスEl4のままである(ステップS90)。残存要素個数En−cが「0」となったので、ユニットループrp1を抜けて、ステップS100の処理に進む。 Returning to FIG. The unit loop rp1 is repeated until the remaining element number En-c becomes “0”. In the example of FIG. 6A, since the current remaining element count En-c is “3”, the unit loop rp1 is executed again. That is, the remaining data length DL-c is returned to the initial value DL (step S40), and the element loop rp0 is executed. The element loop rp0 outputs the address of the element E12 as in the case of the element E11 in FIG. 6A, the current address Adr becomes the address El2, and the remaining data length DL-c becomes “0”. When the unit loop rp1 is repeatedly executed in this way and the remaining element count En-c becomes “0”, the current address Adr becomes the address El4. According to the element offset Eoffset setting process of FIG. 5, when the number of remaining elements En-c is “0” (step S91: YES), the current address Adr remains unchanged, so the current address Adr remains the address El4. Yes (step S90). Since the number of remaining elements En-c becomes “0”, the process exits the unit loop rp1 and proceeds to the process of step S100.
以上のユニットループrp1によりアドレス指定可能なデータ領域(要素間オフセットEoffsetを含む)は、先述したように「ユニット」と呼ぶ。図6(a)の例では、アドレスEs1からアドレスEl4までが1つのユニットである。図6(b)には、要素E11〜E14が第1のユニットU11を構成することが示されている。図6(b)には、ユニットU11の他に、2つのユニットU12,U13が図示されている。ユニットU12,U13は、ユニットU11と同じ構成である。各ユニットの始めのアドレスは、それぞれアドレスUs1、Us2、Us3であり、末尾のアドレスは、それぞれアドレスUl1、Ul2、Ul3である。ユニット間オフセットUoffsetは、ユニット間のギャップの長さであり、図6(b)の例では4バイトである。ユニット個数Unは、第2階層に含まれるユニットの数であり、図6(b)の例ではユニット個数Unは3である。 The data area (including the inter-element offset Eoffset) that can be addressed by the unit loop rp1 is called a “unit” as described above. In the example of FIG. 6A, the address Es1 to the address El4 is one unit. FIG. 6B shows that the elements E11 to E14 constitute the first unit U11. FIG. 6B shows two units U12 and U13 in addition to the unit U11. The units U12 and U13 have the same configuration as the unit U11. The first addresses of each unit are addresses Us1, Us2, and Us3, respectively, and the last addresses are addresses Ul1, Ul2, and Ul3, respectively. The inter-unit offset Uoffset is the length of the gap between the units, and is 4 bytes in the example of FIG. 6B. The unit number Un is the number of units included in the second layer, and the unit number Un is 3 in the example of FIG.
残存要素個数En−cが0になると、図2における第2のデコーダ262はユニット個数カウンタ232に残存ユニット個数Un−cを1減らすよう信号を送る。その信号を受け、ユニット個数カウンタ232は、残存ユニット個数Un−cから1を減算する(ステップS100)。図6の例では、残存ユニット個数Un−cは2になる。次に、ユニット間オフセットUoffset設定処理を行なう(ステップS110)。ユニット間オフセットUoffset設定処理は、図5の要素間オフセットEoffset設定処理において、EnをUnに変え、EoffsetをUoffsetに変えた処理であるので、図示を省略した。
When the remaining element number En-c becomes 0, the
ユニット間オフセットUoffset設定処理においては、残存ユニット個数Un−cが0ではないとき、現在アドレスAdrを(現在アドレスAdr+ユニット間オフセットUoffset)に置換する。図6(b)の例では、今、残存ユニット個数Un−cが2で、現在アドレスAdrはアドレスUl1(アドレスEl4に一致)であるから、ユニット間オフセットUoffset設定処理により、現在アドレスAdrはアドレスUs2となる。 In the inter-unit offset Uoffset setting process, when the remaining unit number Un-c is not 0, the current address Adr is replaced with (current address Adr + inter-unit offset Uoffset). In the example of FIG. 6B, since the remaining unit number Un-c is 2 and the current address Adr is the address Ul1 (matches the address El4), the current address Adr is changed to the address by the unit offset Uoffset setting process. It becomes Us2.
図2のアドレス演算回路は、上記ステップS92の処理と同様にして、現在アドレスAdrを(現在アドレスAdr+ユニット間オフセットUoffset)に置換する。なおこのとき、第2のデコーダ262は、残存データ長DL−cが「0」で、残存要素個数En−cが「0」で、残存ユニット個数Un−cが「0」ではないときは、第1のマルチプレクサ250にユニット間オフセットUoffsetを出力させる選択信号S2を生成する。これにより、第1のマルチプレクサ250はユニット間オフセットUoffsetを出力する。
The address arithmetic circuit in FIG. 2 replaces the current address Adr with (current address Adr + unit offset Uoffset) in the same manner as in the process of step S92. At this time, the
図4に戻る。セットループrp2は、残存ユニット個数Un−cが「0」になるまで繰り返される。ユニット間オフセットUoffset設定処理(ステップS110)では、残存ユニット個数Un−cが「0」の時には現在アドレスAdrは進ませないので、現在アドレスAdrは、アドレスUl3のままである。ユニット個数Unが「0」となると、セットループrp2を抜けて、ステップS120に進む。 Returning to FIG. The set loop rp2 is repeated until the remaining unit number Un-c becomes “0”. In the inter-unit offset Uoffset setting process (step S110), when the remaining unit number Un-c is “0”, the current address Adr is not advanced, so the current address Adr remains the address Ul3. When the number of units Un reaches “0”, the set loop rp2 is exited and the process proceeds to step S120.
以上のセットループrp2によりアドレス指定されるメモリ領域は、先述したように「セット」と呼ぶ。図6(b)の例では、アドレスUs1からアドレスUl3までが1つのセットである。図6(c)には、ユニットU11からユニットU13までが第1のセットS11を構成することが示されている。図6(c)には、セットS11の他に、セットS12が図示されている。セットS12はセットS11と同じ構成である。各セットの始めのアドレスは、それぞれアドレスSs1、Ss2であり、末尾のアドレスは、それぞれアドレスSl1、Sl2である。セット間オフセットSoffsetは、セット間のギャップの長さであり、図6(c)の例では4バイトである。セット個数Snは、第3階層に含まれるセットの数であり、図6(c)の例ではセット個数Snは2である。 The memory area addressed by the above set loop rp2 is called “set” as described above. In the example of FIG. 6B, the address Us1 to the address Ul3 is one set. FIG. 6C shows that the units U11 to U13 constitute the first set S11. FIG. 6C shows a set S12 in addition to the set S11. The set S12 has the same configuration as the set S11. The addresses at the beginning of each set are addresses Ss1 and Ss2, respectively, and the addresses at the end are addresses S11 and S12, respectively. The inter-set offset Soffset is the length of the gap between sets, and is 4 bytes in the example of FIG. The set number Sn is the number of sets included in the third hierarchy, and the set number Sn is 2 in the example of FIG.
残存ユニット個数Un−cが0になると、図2における第2のデコーダ262はセット個数カウンタ233に残存セット個数Sn−cを1減らすよう信号を送る。その信号を受け、セット個数カウンタ233は、残存セット個数Sn−cから1を減算する(ステップS120)。図6の例では、残存セット個数Sn−cは1になる。次に、セット間オフセットSoffset設定処理を行なう(ステップS130)。セット間オフセットSoffset設定処理は、図5の要素間オフセットEoffset設定処理において、EnをSnに変え、EoffsetをSoffsetに変えた処理であるので、図示を省略した。
When the remaining unit number Un-c becomes 0, the
セット間オフセットSoffset設定処理においては、残存セット個数Sn−cが0ではないとき、現在アドレスAdrを(現在アドレスAdr+セット間オフセットSoffset)に置換する。図6(c)の例では、残存セット個数Sn−cが1で、現在アドレスAdrはアドレスSl1(アドレスUl3に一致)であるから、セット間オフセットSoffset設定処理により、現在アドレスAdrは、アドレスSs2となる。 In the inter-set offset offset setting processing, when the remaining set number Sn-c is not 0, the current address Adr is replaced with (current address Adr + inter-set offset Soffset). In the example of FIG. 6C, since the remaining set number Sn-c is 1 and the current address Adr is the address Sl1 (matches the address Ul3), the current address Adr is set to the address Ss2 by the inter-set offset Offset setting process. It becomes.
図2のアドレス演算回路は、上記ステップS92の処理と同様に、現在アドレスAdrを(現在アドレスAdr+セット間オフセットSoffset)に置換する。なお、第2のデコーダ262は、残存データ長DL−cが0で、残存要素個数En−cが0で、残存ユニット個数Un−cが0で、残存セット個数Sn−cが0ではないときは、第1のマルチプレクサ250にセット間オフセットSoffsetを出力させる選択信号S2を生成する。これにより、第1のマルチプレクサ250はセット間オフセットSoffsetを出力する。
The address arithmetic circuit in FIG. 2 replaces the current address Adr with (current address Adr + inter-set offset Soffset) in the same manner as in step S92. In the
図4に戻る。セット群ループrp3は、残存セット個数Sn−cが「0」になるまで繰り返される。セット個数Snが「0」となると、セット群ループrp3を抜けて、処理は終了する。以上のセット群ループrp3によりアドレス指定されるメモリ領域は、先述したように「セット群」と呼ぶ。図6(b)の例では、アドレスSs1からアドレスSl2までが1つのセット群である。 Returning to FIG. The set group loop rp3 is repeated until the remaining set number Sn-c becomes “0”. When the set number Sn becomes “0”, the process exits the set group loop rp3. The memory area addressed by the above set group loop rp3 is called a “set group” as described above. In the example of FIG. 6B, the addresses Ss1 to S12 are one set group.
上記アドレス演算処理における各種パラメータを設定することにより実行されうるアドレス演算の例を以下の図7〜図11で説明する。なお、図7〜図11において、1マスは1バイトに相当する。 Examples of address calculation that can be executed by setting various parameters in the address calculation processing will be described with reference to FIGS. 7 to 11, one square corresponds to one byte.
図7は、ソース領域21及びディスティネーション領域22を示す説明図である。図7(a)はソース領域21を示し、図7(b)はディスティネーション領域22を示す。ソース領域21内の画像データは、(X(補助領域),R(レッド),G(グリーン),B(ブルー))という単位で画素毎に順番に保存されている。このようなソース領域21のデータに対して、以下のように各種パラメータを設定し、図4と図5で示したアドレス演算処理を実行する。
・データ長DL = 1バイト;
・要素個数En = 8;
・ユニット個数Un = 3;
・セット個数Sn = 1;
・要素間オフセットEoffset = 3バイト;
・ユニット間オフセットUoffset = −28バイト;
・セット間オフセットSoffset = 0バイト;
FIG. 7 is an explanatory diagram showing the
-Data length DL = 1 byte;
-Number of elements En = 8;
-Number of units Un = 3;
-Number of sets Sn = 1;
Inter-element offset Eoffset = 3 bytes;
Inter-unit offset Uoffset = -28 bytes;
• Offset between sets Offset = 0 bytes;
このようにパラメータを設定すると、ソースアドレス演算回路200が行なうアドレス演算処理では、まず、スタートアドレスSAからデータ長DL(1バイト)分のデータR0のアドレス(以下、アドレスR0という。他のデータについても同じ)を指定し、次に要素間オフセットEoffset(3バイト)分の間隔をあけて、次のアドレスR1を指定する。そして、また要素間オフセットEoffset(3バイト)分の間隔をあけて、次のアドレスR2を指定する。このようなアドレス指定を要素個数En(8個)分繰り返し、アドレスR7まで指定する。アドレスR0〜R7で、1ユニット分のアドレスを指定できたことになる。
When the parameters are set in this way, in the address calculation process performed by the source
次に、ユニット間オフセットUoffset(−28バイト)分の間隔をあけ、アドレスG0を指定する。次に要素間オフセットEoffset(3バイト)分の間隔をあけて、次のアドレスG1を指定する。このようなアドレス指定を要素個数En(8個)分繰り返し、アドレスG7まで指定する。アドレスG0〜G7で、2つめのユニットのアドレスを指定できたことになる。 Next, an address G0 is designated with an interval corresponding to the unit offset Uoffset (−28 bytes). Next, the next address G1 is designated with an interval corresponding to the element offset Eoffset (3 bytes). Such address designation is repeated for the number of elements En (eight) to designate up to the address G7. This means that the address of the second unit can be designated by the addresses G0 to G7.
更に、ユニット間オフセットUoffset(−28バイト)分の間隔をあけて、アドレスB0を指定する。次に要素間オフセットEoffset(3バイト)分の間隔をあけて、次のアドレスB1を指定する。このようなアドレス指定を要素個数En(8個)分繰り返し、アドレスB7まで指定する。アドレスB0〜B7で、3つめのユニットのアドレスを指定できたことになる。 Further, the address B0 is specified with an interval corresponding to the offset between units Uoffset (−28 bytes). Next, the next address B1 is designated with an interval corresponding to the element offset Eoffset (3 bytes). Such address designation is repeated for the number of elements En (eight) to designate up to address B7. This means that the address of the third unit can be designated by the addresses B0 to B7.
ユニット個数Unは3であるから、ここでユニットのアドレス指定は終了する。ユニット個数Un(3個)分で1セットであるから、アドレスR0〜R7,G0〜G7,B0〜B7で1セットである。よって、1セット分のアドレス指定もできたことになる。セット個数Snは1であるから、ここで、アドレス演算処理は終了する。 Since the number of units Un is 3, unit addressing ends here. Since there is one set for the number of units Un (three), there is one set for addresses R0 to R7, G0 to G7, and B0 to B7. Therefore, one set of addresses can be specified. Since the set number Sn is 1, the address calculation process ends here.
このように、図7(a)のような画像データに対して、適当なパラメータを指定してアドレス演算処理を実行すると、アドレスR0〜R7,G0〜G7,B0〜B7を得ることができる。このアドレス演算結果は、R(レッド)とG(グリーン)とB(ブルー)という成分毎にアドレス指定がなされているので、画像処理において成分毎の処理を行なう際に有用である。 As described above, when address calculation processing is executed by designating appropriate parameters for the image data as shown in FIG. 7A, addresses R0 to R7, G0 to G7, and B0 to B7 can be obtained. Since this address calculation result is addressed for each component of R (red), G (green), and B (blue), it is useful when performing processing for each component in image processing.
ソースアドレス演算回路200が図7(a)のようなアドレス演算処理を行なった際に、ディスティネーションアドレス演算回路300が、以下のように各種パラメータを設定してアドレス演算処理を実行すると、データ転送後のディスティネーション領域22のデータ配列は、図7(b)で示されるようになる。
・データ長DL = 1バイト;
・要素個数En = 8;
・ユニット個数Un = 3;
・セット個数Sn = 1;
・要素間オフセットEoffset = 0バイト;
・ユニット間オフセットUoffset = 0バイト;
・セット間オフセットSoffset = 0バイト;
When the source address
-Data length DL = 1 byte;
-Number of elements En = 8;
-Number of units Un = 3;
-Number of sets Sn = 1;
• Offset between elements Eoffset = 0 bytes;
-Unit offset Uoffset = 0 bytes;
• Offset between sets Offset = 0 bytes;
データ長DLが1バイトであるから、1バイトのデータが1要素である。要素間オフセットEoffsetが0バイトであるから、図7(b)において要素R0と次の要素R1の間隔は0バイトである。要素個数Enが8であるから、8つの要素R0〜R7が1ユニットを構成する。ユニット間オフセットUoffsetが0バイトであるから、図7(b)においてユニット同士の間隔は0バイトである。ユニット個数Unが3であるから、3つのユニットR0〜R7,G0〜G7,B0〜B7が1セットを構成する。セット個数Snは1であるから、結果的にディスティネーション領域22のデータ配列は図7(b)で示されるようになる。
Since the data length DL is 1 byte, 1-byte data is one element. Since the inter-element offset Eoffset is 0 byte, the interval between the element R0 and the next element R1 in FIG. 7B is 0 byte. Since the number of elements En is 8, eight elements R0 to R7 constitute one unit. Since the inter-unit offset Uoffset is 0 byte, the interval between the units in FIG. 7B is 0 byte. Since the number of units Un is 3, three units R0 to R7, G0 to G7, and B0 to B7 constitute one set. Since the set number Sn is 1, as a result, the data array of the
なお、逆に、図7(b)をソース領域21とし、図7(a)をディスティネーション領域とすることも可能である。
On the contrary, FIG. 7B can be used as the
図8は、他のディスティネーション領域22を示す説明図である。図8は、ソースアドレス演算回路200が図7(a)のようなアドレス演算処理を行なった際に、ディスティネーションアドレス演算回路300が、以下のように各種パラメータを設定してアドレス演算処理を実行した場合のデータ転送後のディスティネーション領域22のデータ配列である。
・データ長DL = 24バイト;
・要素個数En = 1;
・ユニット個数Un = 1;
・セット個数Sn = 1;
・要素間オフセットEoffset = 0バイト;
・ユニット間オフセットUoffset = 0バイト;
・セット間オフセットSoffset = 0バイト;
FIG. 8 is an explanatory diagram showing another
-Data length DL = 24 bytes;
-The number of elements En = 1;
-Number of units Un = 1;
-Number of sets Sn = 1;
• Offset between elements Eoffset = 0 bytes;
-Unit offset Uoffset = 0 bytes;
• Offset between sets Offset = 0 bytes;
このように、パラメータの設定値が異なっていても、アドレス演算処理の結果のデータ配列が同じになることもある。 As described above, even if the parameter setting values are different, the data array resulting from the address calculation process may be the same.
図9は、更に他のディスティネーション領域22を示す説明図である。図9は、ソースアドレス演算回路200が図7(a)のようなアドレス演算処理を行なった際に、ディスティネーションアドレス演算回路300が、以下のように各種パラメータを設定してアドレス演算処理を実行した場合のデータ転送後のディスティネーション領域22のデータ配列である。
・データ長DL = 4バイト;
・要素個数En = 2;
・ユニット個数Un = 3;
・セット個数Sn = 1;
・要素間オフセットEoffset = 1バイト;
・ユニット間オフセットUoffset = 2バイト;
・セット間オフセットSoffset = 0バイト;
FIG. 9 is an explanatory diagram showing still another
-Data length DL = 4 bytes;
-Number of elements En = 2;
-Number of units Un = 3;
-Number of sets Sn = 1;
-Offset between elements Eoffset = 1 byte;
-Unit offset Uoffset = 2 bytes;
• Offset between sets Offset = 0 bytes;
データ長DLが4バイトであるから、(R0〜R3),(R4〜R7),(G0〜G3),(B0〜B3)などがそれぞれ1要素である。要素間オフセットEoffsetが1バイトであるから、図9において要素R0〜R3と要素R4〜R7の間隔は1バイトとなっている。他の要素間のオフセットも1バイトである。要素個数Enが2であるから、(R0〜R7),(G0〜G7)などがそれぞれ1ユニットを構成する。ユニット間オフセットUoffsetが2バイトであるから、図9においてユニットR0〜R7とユニットG0〜G7の間隔は2バイトとなっている。ユニットG0〜G7とユニットB0〜B7との間隔も2バイトである。ユニット個数Unが3であるから、3つのユニットR0〜R7,G0〜G7,B0〜B7が1セットを構成する。セット個数Snは1であるから、ディスティネーション領域22は図9で示されるようになる。
Since the data length DL is 4 bytes, (R0 to R3), (R4 to R7), (G0 to G3), (B0 to B3), etc. are each one element. Since the element offset Eoffset is 1 byte, the interval between the elements R0 to R3 and the elements R4 to R7 in FIG. 9 is 1 byte. The offset between other elements is also 1 byte. Since the number of elements En is 2, (R0 to R7), (G0 to G7), etc. each constitute one unit. Since the inter-unit offset Uoffset is 2 bytes, the interval between the units R0 to R7 and the units G0 to G7 is 2 bytes in FIG. The interval between the units G0 to G7 and the units B0 to B7 is also 2 bytes. Since the number of units Un is 3, three units R0 to R7, G0 to G7, and B0 to B7 constitute one set. Since the set number Sn is 1, the
このように、ソースアドレス演算回路200とディスティネーションアドレス演算回路300においては、データ長DLと、要素個数Enと、ユニット個数Unと、セット個数と、要素間オフセットEoffsetと、ユニット間オフセットUoffsetと、
セット間オフセットSoffsetのうち少なくとも1つが互いに異なるものであっても良い。このことにより、ソースアドレス演算回路200とディスティネーションアドレス演算回路300は、非対称的に複雑なアドレス指定を行なうことができる。
Thus, in the source address
At least one of the offsets between sets Soffset may be different from each other. As a result, the source address
図10は、他のディスティネーション領域22を示す説明図である。図10では、図7〜図9より複雑なアドレス指定を実現している。ソースアドレス演算回路200が図7(a)のようなアドレス演算処理を行なった際に、ディスティネーションアドレス演算回路300が、以下のように各種パラメータを設定してアドレス演算処理を実行した場合のデータ転送後のディスティネーション領域22のデータ配列である。
・データ長DL = 2バイト;
・要素個数En = 2;
・ユニット個数Un = 2;
・セット個数Sn = 2;
・要素間オフセットEoffset = 5バイト;
・ユニット間オフセットUoffset = −4バイト;
・セット間オフセットSoffset = 6バイト;
FIG. 10 is an explanatory diagram showing another
-Data length DL = 2 bytes;
-Number of elements En = 2;
・ Number of units Un = 2;
・ Set number Sn = 2;
-Offset between elements Eoffset = 5 bytes;
-Unit offset Uoffset = -4 bytes;
-Inter-set offset Offset = 6 bytes;
データ長DLが2バイトであるから、R0〜R1が1要素である。要素間オフセットEoffsetが5バイトであるから、図10において要素R0〜R1と次のデータR2との間隔は5バイトである。次に、データ長DLが2バイトであるから、R2〜R3が1要素を構成する。要素個数Enが2であるから、2つの要素R0〜R3が1ユニットを構成する。ユニット間オフセットUoffsetが−4バイトであるから、図10においてユニットR0〜R3と次のデータR4の間隔は−4バイトである。また、データ長DLが2バイトであるから、(R4〜R5),(R6〜R7)などがそれぞれ1要素で、要素間オフセットEoffsetが5バイトであるから、要素R4〜R5と要素R6〜R7の間隔も5バイトで、要素個数Enが2であるから、R4〜R7が1ユニットを構成する。ユニット個数Unが2であるから、2つのユニットR0〜R7が1セットを構成する。セット間オフセットSoffsetが6バイトであるから、図10のセットR0〜R7と次のデータG0との間隔は6バイトである。同様に、(G0〜G1),(G2〜G3),(G4〜G5),(G6〜G7)などがそれぞれ1要素で、(G0〜G3)と(G4〜G7)がそれぞれ1ユニットを構成する。ユニット個数Unが2であるから、G0〜G7が1セットを構成する。セット個数Snは2であるから、ディスティネーション領域22は図10で示されるようになる。
Since the data length DL is 2 bytes, R0 to R1 are one element. Since the element offset Eoffset is 5 bytes, the interval between the elements R0 to R1 and the next data R2 in FIG. 10 is 5 bytes. Next, since the data length DL is 2 bytes, R2 to R3 constitute one element. Since the number of elements En is 2, the two elements R0 to R3 constitute one unit. Since the inter-unit offset Uoffset is −4 bytes, the interval between the units R0 to R3 and the next data R4 in FIG. 10 is −4 bytes. Further, since the data length DL is 2 bytes, (R4 to R5), (R6 to R7), etc. are each 1 element, and the element offset Eoffset is 5 bytes, so the elements R4 to R5 and the elements R6 to R7 Is 5 bytes and the number of elements En is 2, so that R4 to R7 constitute one unit. Since the number of units Un is 2, two units R0 to R7 constitute one set. Since the inter-set offset Soffset is 6 bytes, the interval between the set R0 to R7 in FIG. 10 and the next data G0 is 6 bytes. Similarly, (G0 to G1), (G2 to G3), (G4 to G5), (G6 to G7), etc. are each one element, and (G0 to G3) and (G4 to G7) each constitute one unit. To do. Since the number of units Un is 2, G0 to G7 constitute one set. Since the set number Sn is 2, the
本実施例のアドレス演算処理は、様々に利用可能である。図11は、更に他のソース領域21及びディスティネーション領域22を示す説明図である。図11(c)で示すようなドキュメントを画像処理で読み込むと、通常、ドキュメントを横方向に読み込んだデータになる。図11(a)は、そのようなデータがソース領域21に保存された状態を示している。ソースアドレス演算回路200が、下記の式(1.1)〜式(1.7)で示されるように各種パラメータを設定してアドレス演算処理を実行し、ディスティネーションアドレス演算回路300が、式(2.1)〜(2.7)で示されるように各種パラメータを設定してアドレス演算処理を実行した場合、図11(c)の矢印で示す方向に読み込んだデータをディスティネーション領域22に保存することができる。
・データ長DL = 3バイト ・・・(1.1)
・要素個数En = 3 ・・・(1.2)
・ユニット個数Un = 1 ・・・(1.3)
・セット個数Sn = 1 ・・・(1.4)
・要素間オフセットEoffset = 57バイト ・・・(1.5)
・ユニット間オフセットUoffset = 0バイト ・・・(1.6)
・セット間オフセットSoffset = 0バイト ・・・(1.7)
・データ長DL = 9バイト ・・・(2.1)
・要素個数En = 1 ・・・(2.2)
・ユニット個数Un = 1 ・・・(2.3)
・セット個数Sn = 1 ・・・(2.4)
・要素間オフセットEoffset = 0バイト ・・・(2.5)
・ユニット間オフセットUoffset = 0バイト ・・・(2.6)
・セット間オフセットSoffset = 0バイト ・・・(2.7)
The address calculation processing of this embodiment can be used in various ways. FIG. 11 is an explanatory diagram showing still another
・ Data length DL = 3 bytes (1.1)
-Number of elements En = 3 (1.2)
-Unit number Un = 1 (1.3)
-Number of sets Sn = 1 (1.4)
-Offset between elements Eoffset = 57 bytes (1.5)
-Unit offset Uoffset = 0 bytes (1.6)
-Offset between sets Soffset = 0 bytes (1.7)
-Data length DL = 9 bytes (2.1)
-Number of elements En = 1 (2.2)
-Number of units Un = 1 (2.3)
-Number of sets Sn = 1 (2.4)
-Offset between elements Eoffset = 0 bytes (2.5)
-Unit offset Uoffset = 0 bytes (2.6)
-Offset between sets Offset = 0 bytes (2.7)
以上のように、本実施例では、要素とユニットとセットという3階層で構成されるデータブロックに関するアドレス演算をすることにより、DMA転送のための複雑なアドレス演算を実行することが可能である。 As described above, in this embodiment, it is possible to execute a complicated address calculation for DMA transfer by performing an address calculation on a data block composed of three layers of elements, units, and sets.
また、DMAC1000の内部で複雑なデータ転送を行なうことができるので、結果的に、CPU10の負荷を軽減できる。本実施例では、CPU10は、DMAC1000に対して、一度パラメータ設定をし、データ転送命令を出力すればデータ転送を実行できるので、データ転送を効率的に行なうことができる。
その他の実施例:
Further, since complicated data transfer can be performed inside the
Other examples:
(1)上記実施例では、画像処理の際のデータ転送について、同一メモリ20内にソース領域21とディスティネーション領域22が存在する場合を説明した。本発明のDMAコントローラは、画像処理の際のデータ転送に有用であるが、用途はそれに限られない。例えば、同一のポートに対して、メモリ内の128bitのデータを1bitずつ連続的に送信したい場合、ソースアドレス演算回路200において、データ長DLを1bit、要素個数を128、ユニット個数を1、セット個数を1、要素間オフセットEoffsetを0、ユニット間オフセットUoffsetを0、セット間オフセットSoffsetを0と設定し、ディスティネーションアドレス演算回路300において、データ長DLを1bit、要素個数を128、ユニット個数を1、セット個数を1、要素間オフセットEoffsetをー1bit、ユニット間オフセットUoffsetを0、セット間オフセットSoffsetを0と設定すれば、同一のポートに対して、メモリ内の128bitのデータを連続的に送信することが可能となる。
(1) In the above embodiment, the case where the
(2)上記実施例では、カウンタ230〜233は、減算カウンタであるが、この代わりに、加算カウンタと、その加算結果をそれぞれの設定値DL,En,Un,Snと比較する比較器とを設けるようにしても良い。即ち、一般には、カウントすべき値の累積値と、設定値との関係に応じて、累積値がその設定値に達したことを示す機能を有するカウンタ回路を用いることができる。
(2) In the above embodiment, the
(3)上記実施例では、カウンタ230〜233と、第1のデコーダ260と、第2のデコーダ262と、第1のマルチプレクサ250と、第2のマルチプレクサ252と、第3のマルチプレクサ254と、第1の加算器270と、第2の加算器272と、アドレスレジスタ280とで、本発明のアドレス演算実行部を構成するものとしたが、これに限らず、様々な回路構成でアドレス演算実行部を実現可能である。
(3) In the above embodiment, the
(4)上記実施例では、DMAC1000は、3階層データブロックに関するアドレス演算をするものとして説明したが、階層数は3に限らず、様々に設定可能である。例えば、2階層であっても良いし、4階層以上であっても良い。その場合、オフセットレジスタや、カウンタは、階層数に応じて備えるものとしても良い。
(4) In the above embodiment, the
以上、実施例に基づき本発明に係るDMAコントローラを説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。例えば本発明は、図2で示されるような単体のアドレス演算装置としても実施可能である。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれることはもちろんである。 As described above, the DMA controller according to the present invention has been described based on the embodiments. However, the above-described embodiments of the present invention are intended to facilitate understanding of the present invention and are not intended to limit the present invention. For example, the present invention can be implemented as a single address arithmetic unit as shown in FIG. The present invention can be changed and improved without departing from the spirit and scope of the claims, and it is needless to say that the present invention includes equivalents thereof.
20...メモリ
21,21A...ソース領域
22,22A...ディスティネーション領域
100...制御部
200...ソースアドレス演算回路
210...スタートアドレスレジスタ
221...要素間オフセットレジスタ
222...ユニット間オフセットレジスタ
223...セット間オフセットレジスタ
230...データ長カウンタ
231...要素個数カウンタ
232...ユニット個数カウンタ
233...セット個数カウンタ
250...第1のマルチプレクサ
252...第2のマルチプレクサ
254...第3のマルチプレクサ
260...第1のデコーダ
262...第2のデコーダ
270...第1の加算器
272...第2の加算器
280...アドレスレジスタ
300...ディスティネーションアドレス演算回路
400...バスインタフェース
500...バッファユニット
520...ソースバッファ
530...ディスティネーションバッファ
1100...バス
Adr...現在アドレス
Db...転送データバイト数
DL...データ長
DL−c...残存データ長
En...要素個数
En−c...残存要素個数
Eoffset...要素間オフセット
Un...ユニット個数
Un−c...残存ユニット個数
Uoffset...ユニット間オフセット
Sn...セット個数
Sn−c...残存セット個数
Soffset...セット間オフセット
L1DB...第1階層データブロック
L2DB...第2階層データブロック
L3DB...第3階層データブロック
S1〜S3...選択信号
20 ...
Claims (4)
前記ソース領域のデータのアドレスを演算するソースアドレス演算部と、
前記ディスティネーション領域のアドレスを演算するディスティネーションアドレス演算部と、
を備え、
前記ソースアドレス演算部及び前記ディスティネーションアドレス演算部のそれぞれは、N次元(Nは2以上の整数)の階層構造を有するN階層データブロックに関するアドレスを演算することが可能であり、
前記N階層データブロックは、指定されたスタートアドレス以降のメモリ領域において、指定されたデータ長DLを有するデータ要素の集合として構成されており、
前記データ要素を第0階層のデータブロックと定義したとき、i番目(iは1からNまでの整数)の階層のデータブロックは、(i−1)番目の階層のデータブロックが、指定されたオフセットL(i)−offsetで、指定されたブロック個数L(i)−nだけ繰り返し配置された構成を有しており、
前記ソースアドレス演算部及び前記ディスティネーションアドレス演算部のそれぞれは、
前記スタートアドレスを記憶するスタートアドレス記憶部と、
前記データ長DLを記憶するデータ長記憶部と、
第1階層から第N階層までのデータブロックのためのN個のオフセットL(i)−offset(iは1からNまでの整数)を記憶するオフセット記憶部と、
第1階層から第N階層までのデータブロックのためのN個のブロック個数L(i)−n(iは1からNまでの整数)を記憶するブロック個数記憶部と、
前記スタートアドレスと、前記データ長DLと、前記N個のオフセットL(i)−offsetと、前記N個のブロック個数L(i)−nとに基づいて、前記ソース領域または前記ディスティネーション領域における前記N階層データブロックのためのアドレス演算を実行するアドレス演算実行部と、
を備え、
前記ディスティネーションアドレス演算部は、少なくとも前記i番目の階層のデータブロックにおけるオフセットL(i)−offsetを前記ソースアドレス演算部におけるオフセットL(i)−offsetとは異なる値に設定可能である、DMAコントローラ。 A DMA controller for transferring data in a source area to a destination area,
A source address calculation unit for calculating an address of data in the source region;
A destination address calculation unit for calculating an address of the destination area;
With
Each of the source address calculation unit and the destination address calculation unit can calculate an address related to an N-layer data block having an N-dimensional (N is an integer of 2 or more) hierarchical structure,
The N-layer data block is configured as a set of data elements having a specified data length DL in a memory area after a specified start address,
When the data element is defined as a data block in the 0th layer, a data block in the i-th layer (i is an integer from 1 to N) is designated as a data block in the (i-1) -th layer. The offset L (i) -offset has a configuration in which the designated number of blocks L (i) -n is repeatedly arranged,
Each of the source address calculator and the destination address calculator is
A start address storage unit for storing the start address;
A data length storage unit for storing the data length DL;
An offset storage unit for storing N offsets L (i) -offset (i is an integer from 1 to N) for data blocks from the first layer to the Nth layer;
A block number storage unit for storing N block numbers L (i) -n (i is an integer from 1 to N) for data blocks from the first layer to the Nth layer;
Based on the start address, the data length DL, the N offsets L (i) -offset, and the N block numbers L (i) -n, the source region or the destination region An address calculation execution unit for performing an address calculation for the N-layer data block;
Equipped with a,
The destination address calculation unit, Ru der settable to a value different from that of the offset L (i) -offset offset L (i) -offset in the data blocks of at least the i-th layer in the source address calculation unit, DMA controller.
前記ソースアドレス演算部と前記ディスティネーションアドレス演算部は、前記スタートアドレスと、前記データ長DLと、前記N個のオフセットL(i)−offsetと、前記N個のブロック個数L(i)−nの値を、互いに独立に設定可能である、
DMAコントローラ。 The DMA controller according to claim 1, comprising:
The source address calculation unit and the destination address calculation unit include the start address, the data length DL, the N offsets L (i) -offset, and the N block numbers L (i) -n. Can be set independently of each other,
DMA controller.
前記アドレス演算実行部は、
1回のデータ転送で転送されるデータ量の累積値と、前記データ長DLとの関係から、前記第0階層のデータブロックとしての前記データ要素の転送が1回終了したことを示す信号を出力するデータ長カウンタと、
(i−1)番目(iは1からNまでの整数)の階層のデータブロックの転送回数と、前記ブロック個数L(i)−nとの関係から、前記i番目の階層のデータブロックの転送が1回終了したことを示す信号を出力するN個の第i階層カウンタと、
前記(i−1)番目の階層のデータブロックの転送が1回終了する度に前記i番目の階層のオフセットL(i)−offsetを選択して出力するオフセット選択部と、
前記スタートアドレスに、前記1回のデータ転送で転送されるデータ量を順次加算してゆき、また、前記オフセット選択部から前記i番目の階層のオフセットL(i)−offsetが出力されたときには、更に前記i番目の階層のオフセットL(i)−offsetを加算することによって、転送対象となるデータのアドレスを順次生成する加算部と、
を備える、DMAコントローラ。 The DMA controller according to claim 1 or 2, wherein
The address calculation execution unit
A signal indicating that the transfer of the data element as the data block of the 0th layer is completed once based on the relationship between the accumulated value of the amount of data transferred in one data transfer and the data length DL A data length counter to
(I-1) Transfer of the i-th layer data block from the relationship between the number of transfers of the data block in the (i-1) th layer (i is an integer from 1 to N) and the number of blocks L (i) -n N number of i-th layer counters that output a signal indicating that is completed once,
An offset selection unit that selects and outputs the offset L (i) -offset of the i-th layer each time the transfer of the data block of the (i-1) -th layer is completed once;
The amount of data transferred in the one-time data transfer is sequentially added to the start address, and when the offset L (i) -offset of the i-th layer is output from the offset selection unit, Furthermore, by adding the offset L (i) -offset of the i-th layer, an adder that sequentially generates addresses of data to be transferred,
A DMA controller comprising:
前記1回のデータ転送で転送されるデータ量は可変である、DMAコントローラ。 A DMA controller according to claim 3, wherein
A DMA controller, wherein the amount of data transferred in one data transfer is variable.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004281587A JP4576963B2 (en) | 2004-09-28 | 2004-09-28 | Address calculation for DMA transfer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004281587A JP4576963B2 (en) | 2004-09-28 | 2004-09-28 | Address calculation for DMA transfer |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006099205A JP2006099205A (en) | 2006-04-13 |
JP4576963B2 true JP4576963B2 (en) | 2010-11-10 |
Family
ID=36238985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004281587A Expired - Fee Related JP4576963B2 (en) | 2004-09-28 | 2004-09-28 | Address calculation for DMA transfer |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4576963B2 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000357152A (en) * | 1999-06-16 | 2000-12-26 | Nec Ic Microcomput Syst Ltd | Dma controller and its control method |
-
2004
- 2004-09-28 JP JP2004281587A patent/JP4576963B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000357152A (en) * | 1999-06-16 | 2000-12-26 | Nec Ic Microcomput Syst Ltd | Dma controller and its control method |
Also Published As
Publication number | Publication date |
---|---|
JP2006099205A (en) | 2006-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3752448B2 (en) | Image display system | |
JP6388865B2 (en) | Processor, system and method for efficient and fast processing of interrelated two-dimensional data sets | |
JP2002328881A (en) | Image processor, image processing method and portable video equipment | |
JP5703769B2 (en) | Image conversion apparatus, image conversion method, program, and electronic apparatus | |
WO2023070862A1 (en) | Method and apparatus for correcting image distortion of wide-angle lens, and photographing device | |
US20110102633A1 (en) | Image sensing apparatus | |
US20080077733A1 (en) | Data transfer apparatus | |
JP4576963B2 (en) | Address calculation for DMA transfer | |
JP2012164186A (en) | Data processing device | |
JP4784175B2 (en) | Backlight image determination and dark area correction | |
JP6238510B2 (en) | Buffer, buffer control method, synchronization control device, synchronization control method, image processing device, and image processing method | |
US8176290B2 (en) | Memory controller | |
JP3821198B2 (en) | Signal processing device | |
JP2011107558A (en) | Device and method for processing video, and computer program | |
TW202040582A (en) | Systems and methods for replacing data retrieved from memory | |
JP2009193542A (en) | Apparatus and method for creating lookup table for image processing | |
CN107710178B (en) | Data transfer apparatus and data transfer method | |
WO2022205127A1 (en) | Color correction method, field programmable gate array, chip and display device | |
JP6779263B2 (en) | Data processing equipment and methods and programs | |
JP7159555B2 (en) | Image processing device, image processing method and program | |
JP2007013640A (en) | Image processor | |
US8934028B2 (en) | Imaging apparatus and image processing method | |
JP4471319B2 (en) | Information processing apparatus and method | |
KR100602249B1 (en) | Video Processing Device and the Method thereof | |
JP6030321B2 (en) | Image processing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070614 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100312 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100323 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100524 |
|
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: 20100727 |
|
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: 20100809 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130903 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |