JP4576963B2 - Address calculation for DMA transfer - Google Patents

Address calculation for DMA transfer Download PDF

Info

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
Application number
JP2004281587A
Other languages
Japanese (ja)
Other versions
JP2006099205A (en
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2004281587A priority Critical patent/JP4576963B2/en
Publication of JP2006099205A publication Critical patent/JP2006099205A/en
Application granted granted Critical
Publication of JP4576963B2 publication Critical patent/JP4576963B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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 source area 21A, the start address of the destination area 22A, and the transfer data length, and transfers data for the transfer data length from the source area 21A of the memory to the destination area 22A. The address calculation was performed. The transfer data at this time is data continuously stored in the source area 21A, and is continuously stored in the destination area 22A in the same order by transfer.

特願昭61−235907号公報Japanese Patent Application No. Sho 61-235907

ところで、画像データは、(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 source area 21 in the memory 20 to the destination area 22. The DMAC 1000 is connected to the bus 1100 and can transmit information to and from the CPU 10 and the memory 20.

DMAC1000は、制御部100と、ソースアドレス演算回路200と、ディスティネーションアドレス演算回路300と、バスインタフェース400と、バッファユニット500とを備えている。バッファユニット500は、ソースバッファ520と、ディスティネーションバッファ530とを備えている。   The DMAC 1000 includes a control unit 100, a source address arithmetic circuit 200, a destination address arithmetic circuit 300, a bus interface 400, and a buffer unit 500. The buffer unit 500 includes a source buffer 520 and a destination buffer 530.

図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 arithmetic circuit 200. The source address arithmetic circuit 200 includes a start address register 210, an inter-element offset register 221, an inter-unit offset register 222, an inter-set offset register 223, a data length counter 230, an element number counter 231, and a unit number counter 232. A set number counter 233, a first multiplexer 250, a first decoder 260, a second decoder 262, a second multiplexer 252, a first adder 270, and a second adder 272. And a third multiplexer 254 and an address register 280. The registers 210 and 221 to 223 and the counters 230 to 233 respectively hold parameters set by the CPU 10.

図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 registers 210 and 221 to 223 and the parameters DL, En, Un, and Sn set in the counters 230 to 233. In FIG. 3, the data area to be transferred is configured as a three-layer data block having a three-dimensional hierarchical structure. This three-layer data block has the following configuration.
(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 counters 230 to 233 sequentially subtracts the values of the parameters DL, En, Un, and Sn set therein, and when the count values DL-c, En-c, Un-c, Sn-c become zero. Then, the initial values DL, En, Un, and Sn are returned and the subtraction is repeated. These count values are referred to as “remaining data length DL-c”, “remaining element number En-c”, “remaining unit number Un-c”, and “remaining set number Sn-c”. Each of the counters 230 to 233 has a register corresponding to the block number storage unit of the present invention.

第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 first decoder 260 determines the transfer data byte number Db based on the remaining data length DL-c given from the data length counter 230 and the current address Adr given from the address register 280. The transfer data byte number Db is the amount of data transferred in one data transfer. The first decoder 260 may determine the transfer data byte number Db to be a constant value, or may determine it to vary based on the number of transfers and the remaining data length DL-c. For example, the transfer data byte count Db may be changed to 1 byte, 2 bytes, 4 bytes, or 8 bytes. That is, the amount of data transferred in one data transfer can be made variable. The second multiplexer 252 selects and outputs one of the transfer data byte number Db and the value “0” in accordance with the selection signal S1 supplied from the control unit 100 (FIG. 1). Specifically, the number of transfer data bytes Db is selected during execution of data transfer, and the value “0” is selected when data transfer is not being executed.

第2のデコーダ262は、4つのカウンタ230〜233から与えられるカウント値DL−c,En−c,Un−c,Sn−cに応じて、選択信号S2を生成して、第1のマルチプレクサ250に供給する。カウンタ231〜233は、本発明の第i階層カウンタに相当する。   The second decoder 262 generates the selection signal S2 according to the count values DL-c, En-c, Un-c, Sn-c given from the four counters 230 to 233, and the first multiplexer 250. To supply. The counters 231 to 233 correspond to the i-th layer counter of the present invention.

第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 first multiplexer 250 selects and outputs one of the four values of three offsets Eoffset, Uoffset, and Soffset and the value “0” in accordance with the selection signal S2. Specifically, when the remaining data length DL-c becomes 0, the inter-element offset Eoffset is selected. When the number of remaining elements En-c becomes 0, an inter-unit offset Uoffset is selected. Further, when the number of remaining units Un-c becomes 0, an inter-set offset Soffset is selected. When none of the four count values DL-c, En-c, Un-c, and Sn-c is 0, the value “0” is selected. The first multiplexer 250 corresponds to the offset selection unit of the present invention.

第1の加算器270は、第1と第2のマルチプレクサ250,252から出力された値を加算する。この加算結果は、第2の加算器272において現在アドレスAdrと加算される。   The first adder 270 adds the values output from the first and second multiplexers 250 and 252. The addition result is added to the current address Adr in the second adder 272.

第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 third multiplexer 254 selects and outputs one of the start address SA and the addition result of the second adder 272 according to the selection signal S3 supplied from the control unit 100. Specifically, the start address SA is selected only at the start of transfer, and thereafter, the addition result of the second adder 272 is selected. The address register 280 holds the output of the third multiplexer 254 as the current address Adr and supplies it to the bus interface 400. The first decoder 260, the second and third multiplexers 252, 254, the first and second adders 270, 272, and the address register 280 correspond to the adder of the present invention.

なお、ディスティネーションアドレス演算回路も、図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 arithmetic circuit 200 can be set independently of these parameters in the destination address arithmetic circuit 300. In the source address arithmetic circuit 200 and the destination address arithmetic circuit, the parameters SA, Eoffset, Uoffset, Soffset, DL, En, Un, and Sn may all be set to the same value. In this case, the source region 21 and the destination region 22 are symmetrical to each other (the data array is the same).

図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 CPU 10 sets various parameters (element number En, unit number Un, set number Sn, data length DL, inter-element offset Eoffset, inter-unit offset Uoffset, inter-set offset Soffset, start address SA). After the data transfer instruction is output to the DMAC 1000, it is executed by the source address arithmetic circuit 200 and the destination address arithmetic circuit 300 (hereinafter, the source address arithmetic circuit 200 and the destination address arithmetic circuit 300 are simply referred to as address arithmetic circuits). .

アドレス演算処理には、セット群ループ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 third multiplexer 254 is set by the control unit 100 to output the start address SA at the beginning of the address calculation process. The third multiplexer 254 stores the start address SA stored in the start address register 210 in the address register 280 in accordance with the selection signal S3. As a result, the current address Adr becomes the start address SA (step S10).

図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 unit number counter 232 returns the remaining unit number Un-c to the initial value Un (step S20). When the address arithmetic circuit starts the set loop rp2, the element number counter 231 returns the remaining element number En-c to the initial value En (step S30). When the address arithmetic circuit starts the unit loop rp1, the data length counter 230 returns the remaining data length DL-c to the initial value DL (step S40). Note that these processes are necessary for returning the parameter values to the initial values before executing the loop process again because the value of each parameter becomes 0 by the counter during the address calculation process. However, since the current values are still the initial values set by the CPU 10, steps S20, S30, and S40 can be omitted at the first execution of the entire loop of FIG.

要素ループ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 first decoder 260 of FIG. 2 refers to the remaining data length DL-c and the current address Adr, and outputs the number of output data bytes Db according to how much data the control unit 100 of FIG. 1 can transfer. Is output. In the present embodiment, the first decoder 260 always sets the output data byte count Db to 1 byte.

図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 second multiplexer 252 in FIG. 2 outputs the output data byte number Db (value “1”) output from the first decoder 260 to the first adder 270. The selection signal S1 supplied to the second multiplexer 252 is designated by the control unit 100 to output the output data byte number Db during execution of data transfer. On the other hand, the second decoder 262 generates the selection signal S2 based on the remaining data length DL-c. The selection signal S2 is generated so that the first multiplexer 250 outputs “0” unless the remaining data length DL-c is “0”. Since the remaining data length DL-c is 3 bytes now, the first multiplexer 250 outputs “0”. Therefore, the first adder 270 adds the output data byte number Db (value “1”) and “0”, and outputs the output data byte number Db (value “1”).

第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 second adder 272 adds the current address Adr (now the start address SA) and the number of output data bytes Db (value “1”), and outputs the result to the third multiplexer 254. The selection signal S3 given to the third multiplexer 254 is controlled so as to select and output the output signal from the second adder 272 except for the beginning of the address calculation process (start address SA output in step S10). Set by the unit 100. Therefore, the third multiplexer 254 outputs a value obtained by adding the current address Adr (now the start address SA) and the number of output data bytes Db (value “1”) to the address register 280. As a result, the current address Adr which is the value of the address register 280 is replaced with (current address Adr + output data byte number Db) (step S60). Here, the current address Adr is (start address SA + 1) bytes.

データ長カウンタ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 data length counter 230 subtracts the output data byte number Db from the remaining data length DL-c (step S70). Here, the remaining data length DL-c is 2 bytes by subtracting 1 byte from 3 bytes. Since the element loop rp0 is repeated until the remaining data length DL-c becomes 0, the current address Adr is output again (step S50). That is, in FIG. 6, the address of the data X12 at the position of the start address SA + 1 byte is designated. In step S60, the current address Adr is the start address SA + 2 bytes, and in step S70, the remaining data length DL-c is 1 byte. Since the remaining data length DL-c is not 0, the current address Adr is designated again (step S50). That is, in FIG. 6, the address of the data X13 at the position of the start address SA + 2 bytes is designated. In step S60, the current address Adr becomes the start address SA + 3 bytes (position El1 in FIG. 6), and the remaining data length DL-c becomes 0 bytes in step S70. Since the remaining data length DL-c has become 0, the process exits the element loop rp0 and proceeds to step S80.

ところで、以上の要素ループ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 second decoder 262 in FIG. 2 sends a signal to the element number counter 231 to decrease the element number En by one. In response to the signal, the element number counter 231 subtracts 1 from the remaining element number En-c (step S80). By step S80, the number of remaining elements En-c is 3 here. Next, the address calculation circuit performs an element offset Eoffset setting process (step S90).

図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 first decoder 260 outputs the output data byte number Db as “0”. Therefore, the second multiplexer 252 outputs the number of output data bytes Db (value “0”). Note that the selection signal S1 may be set so that the control unit 100 outputs “0” instead of the output data byte count Db. Also in this case, “0” is output from the second multiplexer 252. On the other hand, when the remaining data length DL-c is 0 and the remaining element number En-c is not 0, the second decoder 262 outputs a selection signal S2 that causes the first multiplexer 250 to output the element offset Eoffset. Generate. In response to the selection signal S2, the first multiplexer 250 outputs the element offset Eoffset. The first adder 270 adds the element offset Eoffset and “0”, and outputs the element offset Eoffset to the second adder 272. The second adder 272 adds the current address Adr and the element offset Eoffset, and outputs the result to the third multiplexer 254. The third multiplexer 254 outputs (current address Adr + element offset Eoffset) to the address register 280 in accordance with the selection signal S3. As described above, the current address Adr is replaced with (current address Adr + element offset Eoffset) (step S92).

図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 second decoder 262 in FIG. 2 sends a signal to the unit number counter 232 to decrease the remaining unit number Un-c by one. In response to the signal, the unit number counter 232 subtracts 1 from the remaining unit number Un-c (step S100). In the example of FIG. 6, the remaining unit number Un-c is 2. Next, an inter-unit offset Uoffset setting process is performed (step S110). The inter-unit offset Uoffset setting process is a process in which En is changed to Un and Eoffset is changed to Uoffset in the inter-element offset Eoffset setting process in FIG.

ユニット間オフセット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 second decoder 262 determines that the remaining data length DL-c is “0”, the remaining element number En-c is “0”, and the remaining unit number Un-c is not “0”. A selection signal S2 is generated that causes the first multiplexer 250 to output the inter-unit offset Uoffset. As a result, the first multiplexer 250 outputs the inter-unit offset Uoffset.

図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 second decoder 262 in FIG. 2 sends a signal to the set number counter 233 to decrease the remaining set number Sn-c by one. In response to the signal, the set number counter 233 subtracts 1 from the remaining set number Sn-c (step S120). In the example of FIG. 6, the remaining set number Sn-c is 1. Next, a set offset offset setting process is performed (step S130). Since the inter-set offset offset setting process is a process in which En is changed to Sn and Eoffset is changed to offset in the inter-element offset Eoffset setting process of FIG. 5, the illustration is omitted.

セット間オフセット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 second decoder 262, the remaining data length DL-c is 0, the remaining element number En-c is 0, the remaining unit number Un-c is 0, and the remaining set number Sn-c is not 0. Generates a selection signal S2 that causes the first multiplexer 250 to output an inter-set offset Soffset. Accordingly, the first multiplexer 250 outputs the inter-set offset Soffset.

図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 source region 21 and the destination region 22. FIG. 7A shows the source region 21 and FIG. 7B shows the destination region 22. The image data in the source region 21 is stored in order for each pixel in units of (X (auxiliary region), R (red), G (green), B (blue)). Various parameters are set for the data in the source area 21 as follows, and the address calculation processing shown in FIGS. 4 and 5 is executed.
-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 address calculation circuit 200, first, the address of the data R0 corresponding to the data length DL (1 byte) from the start address SA (hereinafter referred to as address R0). Next, the next address R1 is designated with an interval corresponding to the element offset Eoffset (3 bytes). Then, the next address R2 is specified with an interval corresponding to the element offset Eoffset (3 bytes). Such address designation is repeated for the number of elements En (eight), and the address is designated up to address R7. This means that one unit of address can be designated by the addresses R0 to R7.

次に、ユニット間オフセット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 arithmetic circuit 200 performs the address arithmetic processing as shown in FIG. 7A, the destination address arithmetic circuit 300 sets various parameters as described below and executes the address arithmetic processing to transfer data. The data array of the subsequent destination area 22 is as shown in FIG.
-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 destination area 22 is as shown in FIG.

なお、逆に、図7(b)をソース領域21とし、図7(a)をディスティネーション領域とすることも可能である。   On the contrary, FIG. 7B can be used as the source region 21 and FIG. 7A can be used as the destination region.

図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 destination area 22. FIG. 8 shows that when the source address arithmetic circuit 200 performs the address arithmetic processing as shown in FIG. 7A, the destination address arithmetic circuit 300 sets the various parameters as follows and executes the address arithmetic processing. This is a data array of the destination area 22 after the data transfer in the case of.
-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 destination area 22. FIG. 9 shows that when the source address arithmetic circuit 200 performs the address arithmetic processing as shown in FIG. 7A, the destination address arithmetic circuit 300 sets various parameters as follows and executes the address arithmetic processing. This is a data array of the destination area 22 after the data transfer in the case of.
-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 destination area 22 is as shown in FIG.

このように、ソースアドレス演算回路200とディスティネーションアドレス演算回路300においては、データ長DLと、要素個数Enと、ユニット個数Unと、セット個数と、要素間オフセットEoffsetと、ユニット間オフセットUoffsetと、
セット間オフセットSoffsetのうち少なくとも1つが互いに異なるものであっても良い。このことにより、ソースアドレス演算回路200とディスティネーションアドレス演算回路300は、非対称的に複雑なアドレス指定を行なうことができる。
Thus, in the source address arithmetic circuit 200 and the destination address arithmetic circuit 300, the data length DL, the element number En, the unit number Un, the set number, the inter-element offset Eoffset, and the inter-unit offset Uoffset,
At least one of the offsets between sets Soffset may be different from each other. As a result, the source address arithmetic circuit 200 and the destination address arithmetic circuit 300 can perform asymmetrically complicated address designation.

図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 destination area 22. In FIG. 10, more complicated addressing is realized than in FIGS. When the source address calculation circuit 200 performs the address calculation processing as shown in FIG. 7A, the data when the destination address calculation circuit 300 executes the address calculation processing by setting various parameters as follows: It is a data array of the destination area 22 after transfer.
-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 destination area 22 is as shown in FIG.

本実施例のアドレス演算処理は、様々に利用可能である。図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 source region 21 and destination region 22. When a document such as that shown in FIG. 11C is read by image processing, data is normally read in the horizontal direction. FIG. 11A shows a state in which such data is stored in the source area 21. The source address arithmetic circuit 200 sets various parameters as shown in the following formulas (1.1) to (1.7), executes address arithmetic processing, and the destination address arithmetic circuit 300 When various parameters are set as shown in 2.1) to (2.7) and the address calculation process is executed, the data read in the direction indicated by the arrow in FIG. 11C is stored in the destination area 22. can do.
・ 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 DMAC 1000, the load on the CPU 10 can be reduced as a result. In the present embodiment, the CPU 10 can perform data transfer efficiently by once setting parameters for the DMAC 1000 and outputting a data transfer command.
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 source area 21 and the destination area 22 exist in the same memory 20 has been described for data transfer during image processing. The DMA controller of the present invention is useful for data transfer during image processing, but the application is not limited thereto. For example, if 128 bits of data in the memory are to be continuously transmitted to the same port one bit at a time, in the source address calculation circuit 200, the data length DL is 1 bit, the number of elements is 128, the number of units is 1, the number of sets Is set to 1, the offset between elements Eoffset is set to 0, the offset between units Uoffset is set to 0, and the offset between sets Soffset is set to 0. In the destination address calculation circuit 300, the data length DL is set to 1 bit, the number of elements is set to 128, and the number of units is set to 1. If the number of sets is set to 1, the element offset Eoffset is set to -1 bit, the unit offset Uoffset is set to 0, and the offset between sets Soffset is set to 0, 128-bit data in the memory is continuously transmitted to the same port. Do Theft is possible.

(2)上記実施例では、カウンタ230〜233は、減算カウンタであるが、この代わりに、加算カウンタと、その加算結果をそれぞれの設定値DL,En,Un,Snと比較する比較器とを設けるようにしても良い。即ち、一般には、カウントすべき値の累積値と、設定値との関係に応じて、累積値がその設定値に達したことを示す機能を有するカウンタ回路を用いることができる。 (2) In the above embodiment, the counters 230 to 233 are subtraction counters. Instead of this, an addition counter and a comparator for comparing the addition result with each set value DL, En, Un, Sn are provided. You may make it provide. That is, generally, a counter circuit having a function indicating that the cumulative value has reached the set value can be used according to the relationship between the cumulative value to be counted and the set value.

(3)上記実施例では、カウンタ230〜233と、第1のデコーダ260と、第2のデコーダ262と、第1のマルチプレクサ250と、第2のマルチプレクサ252と、第3のマルチプレクサ254と、第1の加算器270と、第2の加算器272と、アドレスレジスタ280とで、本発明のアドレス演算実行部を構成するものとしたが、これに限らず、様々な回路構成でアドレス演算実行部を実現可能である。 (3) In the above embodiment, the counters 230 to 233, the first decoder 260, the second decoder 262, the first multiplexer 250, the second multiplexer 252, the third multiplexer 254, The one adder 270, the second adder 272, and the address register 280 constitute the address calculation execution unit of the present invention. However, the present invention is not limited to this, and the address calculation execution unit has various circuit configurations. Is feasible.

(4)上記実施例では、DMAC1000は、3階層データブロックに関するアドレス演算をするものとして説明したが、階層数は3に限らず、様々に設定可能である。例えば、2階層であっても良いし、4階層以上であっても良い。その場合、オフセットレジスタや、カウンタは、階層数に応じて備えるものとしても良い。 (4) In the above embodiment, the DMAC 1000 has been described as performing an address operation on a three-layer data block. However, the number of layers is not limited to three and can be variously set. For example, there may be two layers, or four or more layers. In that case, an offset register and a counter may be provided according to the number of layers.

以上、実施例に基づき本発明に係る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.

DMAコントローラ1000を備えるコンピュータシステムを示す説明図。2 is an explanatory diagram showing a computer system including a DMA controller 1000. FIG. ソースアドレス演算回路200の内部構成を示すブロック図。2 is a block diagram showing an internal configuration of a source address arithmetic circuit 200. FIG. レジスタ210,221〜223に設定されるパラメータSA,Eoffset,Uoffset,Soffsetとカウンタ230〜233に設定されるパラメータDL,En,Un,Snの意味を示す説明図。Explanatory drawing which shows the meaning of parameters SA, Eoffset, Uoffset, Soffset set to registers 210, 221 to 223 and parameters DL, En, Un, Sn set to counters 230-233. アドレス演算処理を示すフローチャート。The flowchart which shows an address calculation process. 要素間オフセットEoffset設定処理を示すフローチャート。The flowchart which shows the element offset Eoffset setting process. 転送対象となるメモリ領域を模式的に示す説明図。Explanatory drawing which shows typically the memory area | region used as transfer object. ソース領域21及びディスティネーション領域22を示す説明図。Explanatory drawing which shows the source region 21 and the destination area | region 22. FIG. 他のディスティネーション領域22を示す説明図。Explanatory drawing which shows the other destination area | region 22. FIG. 更に他のディスティネーション領域22を示す説明図。Furthermore, the explanatory view which shows the other destination area 22. FIG. 他のディスティネーション領域22を示す説明図。Explanatory drawing which shows the other destination area | region 22. FIG. 更に他のソース領域21及びディスティネーション領域22を示す説明図。Further, another explanatory view showing a source region 21 and a destination region 22. FIG. 従来のDMAコントローラによるアドレス演算を示す説明図。Explanatory drawing which shows the address calculation by the conventional DMA controller.

符号の説明Explanation of symbols

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 ... Memory 21, 21A ... Source area 22, 22A ... Destination area 100 ... Control unit 200 ... Source address arithmetic circuit 210 ... Start address register 221 ... Inter-element offset Register 222 ... Inter-unit offset register 223 ... Inter-set offset register 230 ... Data length counter 231 ... Element number counter 232 ... Unit number counter 233 ... Set number counter 250 ... First 1 multiplexer 252 ... second multiplexer 254 ... third multiplexer 260 ... first decoder 262 ... second decoder 270 ... first adder 272 ... second Adder 280 ... Address register 300 ... Destination address arithmetic circuit 400 ... Bus interface 500 ... Buffer unit 520 ... So Buffer 530 ... Destination buffer 1100 ... Bus Adr ... Current address Db ... Number of transfer data bytes DL ... Data length DL-c ... Remaining data length En ... Number of elements En- c ... Number of remaining elements Eoffset ... Element offset Un ... Number of units Un-c ... Number of remaining units Uoffset ... Inter-unit offset Sn ... Number of sets Sn-c ... Remaining set Number Soffset ... Offset between sets L1DB ... First layer data block L2DB ... Second layer data block L3DB ... Third layer data block S1-S3 ... Selection signal

Claims (4)

ソース領域内のデータをディスティネーション領域に転送する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とは異なる値に設定可能である、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.
請求項1記載のDMAコントローラであって、
前記ソースアドレス演算部と前記ディスティネーションアドレス演算部は、前記スタートアドレスと、前記データ長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または2記載のDMAコントローラであって、
前記アドレス演算実行部は、
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:
請求項3記載のDMAコントローラであって、
前記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.
JP2004281587A 2004-09-28 2004-09-28 Address calculation for DMA transfer Expired - Fee Related JP4576963B2 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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