JP2015099477A - DMA controller - Google Patents

DMA controller Download PDF

Info

Publication number
JP2015099477A
JP2015099477A JP2013238836A JP2013238836A JP2015099477A JP 2015099477 A JP2015099477 A JP 2015099477A JP 2013238836 A JP2013238836 A JP 2013238836A JP 2013238836 A JP2013238836 A JP 2013238836A JP 2015099477 A JP2015099477 A JP 2015099477A
Authority
JP
Japan
Prior art keywords
transfer
block
buffer
memory
control 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.)
Granted
Application number
JP2013238836A
Other languages
Japanese (ja)
Other versions
JP6232964B2 (en
Inventor
直俊 西岡
Naotoshi Nishioka
直俊 西岡
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.)
Yamaha Corp
Original Assignee
Yamaha 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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2013238836A priority Critical patent/JP6232964B2/en
Publication of JP2015099477A publication Critical patent/JP2015099477A/en
Application granted granted Critical
Publication of JP6232964B2 publication Critical patent/JP6232964B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a DMA controller capable of reducing a conflict of access in a system sharing a bus slave.SOLUTION: A DMA controller 100 that transfers one group of data from a ROM 20 of a transfer source to a memory 30 of a bus slave of a transfer destination includes a buffer and a transfer control unit. The transfer control unit temporally distributes and executes the operation of transferring a block of a predetermined amount of data (for example, 512 byte) as a unit from the buffer to the memory 30.

Description

本発明は、DMA(Direct Memory Access)方式によりデータを転送するDMAコントローラに関する。   The present invention relates to a DMA controller that transfers data by a DMA (Direct Memory Access) method.

処理能力が高くないCPU(Central Processing Unit)を含むシステムによって動画を表示させる場合、専用のハードウェア、例えばデコーダやラスタライザなどを設けて、当該CPUの代わりに、動画の表示処理の一部を実行させる場合がある。一般に、動画データは、膨大であるので、当該動画データは、比較的低速であるが安価な低速メモリに格納される。当該動画データは、DMAコントローラによってバスを介して高速メモリに転送されるとともにデコーダやラスタライザが当該高速メモリにアクセスして必要な処理を並列的に実行する構成となる。膨大な動画データはDMAコントローラによって高速メモリにDMA転送されるので、CPUは、その分、負荷が低減されて、他の必要な処理を実行することができる。   When displaying moving images with a system that includes a CPU (Central Processing Unit) that does not have a high processing capacity, a dedicated hardware, such as a decoder or rasterizer, is provided to execute part of the moving image display processing instead of the CPU. There is a case to let you. In general, since moving image data is enormous, the moving image data is stored in a low-speed memory that is relatively low speed but inexpensive. The moving image data is transferred to the high-speed memory via the bus by the DMA controller, and the decoder or rasterizer accesses the high-speed memory and executes necessary processes in parallel. Since a large amount of moving image data is DMA-transferred to the high-speed memory by the DMA controller, the CPU can perform other necessary processing with a corresponding reduction in load.

一方、DMAコントローラやCPUなどのバスマスタが高速メモリを共有する構成では、同時に複数のバスマスタが同一のバススレーブ(ここでは高速メモリ)にアクセスすることはできないので、バススレーブにアクセスが集中すると、あるバスマスタが所定の時間内に当該バススレーブに対するデータ転送を完了することができない、という不都合が生じる。
そこで、バス調停器が、残りの転送時間の余裕度に応じてデータ転送の優先順位をアクセス単位でダイナミックに変更する技術が提案されている(例えば、特許文献1参照)。
On the other hand, in a configuration in which a bus master such as a DMA controller or a CPU shares a high-speed memory, a plurality of bus masters cannot access the same bus slave (here, a high-speed memory) at the same time. There is a disadvantage that the bus master cannot complete data transfer to the bus slave within a predetermined time.
Therefore, a technique has been proposed in which the bus arbiter dynamically changes the priority of data transfer in units of access in accordance with the remaining transfer time margin (see, for example, Patent Document 1).

特開2006−209500号公報JP 2006-209500 A

しかしながら、上記技術では、アクセスが競合した瞬間でのみ調停が実行される。このため、優先順位の低いアクセスを実行中に、優先度の高いアクセスが発生しても、優先順位の低いアクセスの実行が終了するまで、優先度の高いアクセスは待たされることが考えられる。
このため、動画を表示させる場合のように、DMAコントローラや、それ以外の他のバスマスタが並列的にバススレーブの高速メモリにアクセスする構成では、優先順位の高い動画の表示処理に関わるアクセスが待たされ、結果的に、いわゆるコマ落ちが発生する可能性が高くなる。
本発明は、このような事情に鑑みてなされたものであり、その目的の一つは、バススレーブを共有するシステムにおいてアクセスの競合を減らすことができるDMAコントローラを提供することにある。
However, in the above technique, arbitration is executed only at the moment when access conflicts. For this reason, even if an access with a high priority occurs during an access with a low priority, the access with a high priority may be kept waiting until the execution of the access with a low priority is completed.
For this reason, in the configuration in which a DMA controller or other bus masters access the high-speed memory of the bus slave in parallel as in the case of displaying a moving image, access related to the display processing of a high-priority moving image waited. As a result, the possibility of so-called frame dropping increases.
The present invention has been made in view of such circumstances, and one of its purposes is to provide a DMA controller capable of reducing access contention in a system sharing a bus slave.

上記目的を達成するために、本発明の一態様に係るDMAコントローラは、1群のデータを転送元のバススレーブから転送先のバススレーブに転送するDMAコントローラであって、バッファと、前記1群のデータを、所定のデータ量のブロックを単位として前記転送元のバススレーブからバッファに格納させる動作、または、前記バッファに格納させたブロックを前記転送先のバススレーブに転送する動作、を時間的に分散させて実行する転送制御部と、を具備することを特徴とする。
この一態様に係るDMAコントローラによれば、ブロックが時間的に集中して、転送元のバススレーブからバッファへの格納されること、または、バッファから転送先のバススレーブへの転送されること、がない。このため、当該バススレーブを共有する他のバスマスタからすれば、DMAコントローラがブロックを転送しない期間に当該バススレーブにアクセス(読出または格納)することができるので、当該バススレーブに対するアクセスの競合を減らすことができる。
なお、1群のデータとは、(CPUによって発行される)転送指示によって、転送元のバススレーブから転送先のバススレーブに転送すべきデータの全体をいう。
In order to achieve the above object, a DMA controller according to an aspect of the present invention is a DMA controller that transfers a group of data from a transfer source bus slave to a transfer destination bus slave. The operation of storing the data in the buffer from the bus slave of the transfer source in units of a block of a predetermined data amount, or the operation of transferring the block stored in the buffer to the bus slave of the transfer destination in terms of time And a transfer control unit that executes the program in a distributed manner.
According to the DMA controller according to this aspect, the blocks are concentrated in time and stored in the buffer from the transfer source bus slave, or transferred from the buffer to the transfer destination bus slave. There is no. Therefore, another bus master sharing the bus slave can access (read or store) the bus slave during a period in which the DMA controller does not transfer the block, thereby reducing the contention of access to the bus slave. be able to.
A group of data refers to the entire data to be transferred from a transfer source bus slave to a transfer destination bus slave in accordance with a transfer instruction (issued by the CPU).

上記一態様において、前記バッファは、前記所定のデータ量の記憶容量を有する第1バッファおよび第2バッファを含み、前記転送制御部は、前記第1バッファまたは第2バッファの一方に対して前記転送元のバススレーブからのブロックを格納させた場合に、前記第1バッファまたは第2バッファの他方からブロックを読み出して、前記転送先のバススレーブに転送する構成としても良い。
この構成によれば、第1バッファと第2バッファとにおいて、転送元のバススレーブからのブロックの読み出しと、転送先のバススレーブへのブロックの転送を同時に実行できるので、転送の効率化が図られる
この構成によれば、第1バッファと第2バッファとにおいて、転送元のバスマスタからのブロックが格納されるものと、転送先のバスマスタに転送されるブロックの読み出し元となるものとが別々になるので、転送の効率化が図られる。
In the one aspect, the buffer includes a first buffer and a second buffer having a storage capacity of the predetermined data amount, and the transfer control unit transfers the transfer to one of the first buffer and the second buffer. When a block from the original bus slave is stored, the block may be read from the other of the first buffer or the second buffer and transferred to the destination bus slave.
According to this configuration, in the first buffer and the second buffer, the block reading from the transfer source bus slave and the block transfer to the transfer destination bus slave can be executed simultaneously, so that the transfer efficiency is improved. According to this configuration, in the first buffer and the second buffer, the block from the transfer source bus master is stored separately from the block from which the block transferred to the transfer destination bus master is read. Therefore, transfer efficiency can be improved.

上記一態様において、前記転送制御部は、所定のデータ転送速度に応じた期間のウェイトをかけてから、各ブロックを前記転送先のバススレーブに転送するとともに、前記一のブロックを前記転送先のバススレーブに転送するのを遅らせた場合、当該一のブロックの次のブロックを前記転送先のバススレーブに転送するまでのウェイトを減少させる構成としても良い。この構成によれば、単位時間におけるデータ転送量(データ転送速度)を均一に保つことができる。
なお、転送制御部が、一のブロックを転送先バススレーブに転送するのを遅らせた場合とは、他のバスマスタによって当該転送先バススレーブが使用されている場合である。また、所定のデータ転送速度とは、バススレーブにアクセスするバスマスタに割り当てられた比率によって後述するように定められる。
In the above aspect, the transfer control unit waits for a period of time according to a predetermined data transfer rate, then transfers each block to the transfer destination bus slave, and transfers the one block to the transfer destination. When the transfer to the bus slave is delayed, the wait time until the block next to the one block is transferred to the transfer destination bus slave may be reduced. According to this configuration, the data transfer amount (data transfer rate) per unit time can be kept uniform.
The case where the transfer control unit delays the transfer of one block to the transfer destination bus slave is a case where the transfer destination bus slave is used by another bus master. Further, the predetermined data transfer rate is determined as will be described later by the ratio assigned to the bus master accessing the bus slave.

上記一態様において、前記転送制御部は、所定のデータ転送速度に応じた期間のウェイトをかけてから、各ブロックを前記転送先のバススレーブに転送するとともに、前記一のブロックを前記転送先のバススレーブに転送するのを遅らせた場合、当該一のブロックの次のブロックを前記転送先のバススレーブに転送するまでのウェイトを減少させない構成としても良い。この構成によれば、単位時間におけるデータ転送量(データ転送速度)を、所定の値よりも抑えることができる。   In the above aspect, the transfer control unit waits for a period of time according to a predetermined data transfer rate, then transfers each block to the transfer destination bus slave, and transfers the one block to the transfer destination. When the transfer to the bus slave is delayed, the wait until the next block of the one block is transferred to the bus slave at the transfer destination may not be reduced. According to this configuration, the data transfer amount (data transfer rate) per unit time can be suppressed from a predetermined value.

上記一態様において、前記転送制御部は、所定のデータ転送速度に応じた期間のウェイトをかけてから、各ブロックを前記転送先のバススレーブに転送するとともに、外部から入力されるイベント信号によって前記ウェイトを変更する構成としても良い。この構成によれば、イベント信号によってウェイトが変更されるので、単位時間におけるデータ転送量(データ転送速度)を動的に制御することができる。   In the above aspect, the transfer control unit waits for a period of time according to a predetermined data transfer rate, then transfers each block to the transfer destination bus slave, and the event signal input from the outside It is good also as a structure which changes a weight. According to this configuration, since the weight is changed by the event signal, the data transfer amount (data transfer rate) per unit time can be dynamically controlled.

実施形態に係るDMAコントローラを含むシステムの構成を示すブロック図である。It is a block diagram which shows the structure of the system containing the DMA controller which concerns on embodiment. システムにおける処理の概要を示す図である。It is a figure which shows the outline | summary of the process in a system. DMAコントローラの構成を示すブロック図である。It is a block diagram which shows the structure of a DMA controller. DMAコントローラにおけるリード転送処理を示すフローチャートである。It is a flowchart which shows the read transfer process in a DMA controller. DMAコントローラにおけるリード転送処理を示すフローチャートである。It is a flowchart which shows the read transfer process in a DMA controller. DMAコントローラにおけるライト転送処理を示すフローチャートである。It is a flowchart which shows the write transfer process in a DMA controller. DMAコントローラにおけるライト転送処理を示すフローチャートである。It is a flowchart which shows the write transfer process in a DMA controller. 各ブロックにおけるリード転送およびライト転送の一例を示す図である。It is a figure which shows an example of the read transfer and write transfer in each block. 実施形態と比較例とにおけるDMA転送の対比を示す図である。It is a figure which shows contrast of DMA transfer in embodiment and a comparative example. 本発明のDMAコントローラにおけるメモリ帯域の割当の一例を示す図である。It is a figure which shows an example of allocation of the memory band in the DMA controller of this invention. 本発明のDMAコントローラにおけるメモリ帯域の割当の一例を示す図である。It is a figure which shows an example of allocation of the memory band in the DMA controller of this invention. 比較例のDMAコントローラにおけるメモリ帯域の割当の一例を示す図である。It is a figure which shows an example of allocation of the memory band in the DMA controller of a comparative example. 比較例のDMAコントローラにおけるメモリ帯域の割当の一例を示す図である。It is a figure which shows an example of allocation of the memory band in the DMA controller of a comparative example.

以下、本発明の実施形態について図面を参照して説明する。   Embodiments of the present invention will be described below with reference to the drawings.

図1は、実施形態に係るDMAコントローラ100を含むシステム1の全体の構成を示すブロック図である。
この図に示されるようにシステム1は、CPU10、ROM(Read Only Memory)20、メモリ30、デコーダ40、ラスタライザ50、ディスプレイコントローラ60、および、表示部70を含み、これらのうち、ROM20および表示部70を除き、バスBを介して互いに接続されている。
このシステム1は、圧縮された動画データをデコードした後、フレーム毎にラスタライズ(描画)して、表示部70に表示させる処理(表示処理)を実行する。
FIG. 1 is a block diagram showing an overall configuration of a system 1 including a DMA controller 100 according to the embodiment.
As shown in FIG. 1, the system 1 includes a CPU 10, a ROM (Read Only Memory) 20, a memory 30, a decoder 40, a rasterizer 50, a display controller 60, and a display unit 70, and among these, the ROM 20 and the display unit. With the exception of 70, they are connected to each other via a bus B.
The system 1 decodes the compressed moving image data, and then rasterizes (draws) each frame and executes a process (display process) for displaying on the display unit 70.

図2は、この表示処理の概略的な流れを示す図である。
ROM20は、例えば書き替え可能なフラッシュメモリなどであり、動画データを圧縮した状態で、すなわち圧縮データとして記憶する。DMAコントローラ100は、詳細については後述するが、ROM20に記憶された圧縮データを読み出して、メモリ30に転送する。メモリ30は、アクセス(格納および書込)が高速な、例えばSDRAM(Synchronous Dynamic Random Access Memory)であり、DMAコントローラ100とともに、CPU10、デコーダ40、ラスタライザ50、ディスプレイコントローラ60に共有される。
デコーダ40は、メモリ30に転送された圧縮データを動画データにデコードして、メモリ30に格納する。ラスタライザ50は、メモリ30に格納された動画データをラスタライズして、メモリ30に割り当てられた描画領域32に格納する。描画領域32は、一種のフレームバッファである。ディスプレイコントローラ60は、ラスタライズされたデータを描画領域32から、走査(水平走査および垂直走査)の順に読み出し、表示部70に供給して画面表示させる。
FIG. 2 is a diagram showing a schematic flow of this display process.
The ROM 20 is a rewritable flash memory, for example, and stores the moving image data in a compressed state, that is, as compressed data. The DMA controller 100 reads the compressed data stored in the ROM 20 and transfers it to the memory 30 as will be described in detail later. The memory 30 is, for example, SDRAM (Synchronous Dynamic Random Access Memory) that is accessed (stored and written) at high speed, and is shared by the CPU 10, the decoder 40, the rasterizer 50, and the display controller 60 together with the DMA controller 100.
The decoder 40 decodes the compressed data transferred to the memory 30 into moving image data and stores it in the memory 30. The rasterizer 50 rasterizes the moving image data stored in the memory 30 and stores it in the drawing area 32 assigned to the memory 30. The drawing area 32 is a kind of frame buffer. The display controller 60 reads the rasterized data from the drawing area 32 in the order of scanning (horizontal scanning and vertical scanning), and supplies the data to the display unit 70 for screen display.

ところで、動画データは圧縮したとしても、データのサイズが数百メガバイトから数ギガバイトまでに及ぶ。このような動画データの圧縮データは、1つに限られず、条件や場面に応じた適切な動画を表示させるために複数の場合もあり得る。このため、ROM20には大容量であることが要求される。一般に、記憶素子においてアクセス速度と容量とは互いにトレードオフの関係にあるので、大容量のROM20からのアクセス(読出)は比較的低速にならざるを得ない。
このため、CPU10が、ROM20から圧縮データを、バスBを介して読み出す構成では、CPU10に負荷がかかるだけなく、バスBの占有時間が長くなる。そこで、本実施形態では、DMAコントローラ100が、ROM20から圧縮データを(低速で)読み出した後に、一旦、メモリ30に(高速で)転送する構成となっている。
By the way, even if moving image data is compressed, the data size ranges from several hundred megabytes to several gigabytes. The compressed data of such moving image data is not limited to one, and there may be a plurality of cases in order to display an appropriate moving image according to conditions and scenes. For this reason, the ROM 20 is required to have a large capacity. In general, in a storage element, access speed and capacity are in a trade-off relationship with each other, so access (reading) from a large-capacity ROM 20 must be relatively slow.
For this reason, in the configuration in which the CPU 10 reads the compressed data from the ROM 20 via the bus B, not only the load is applied to the CPU 10, but the occupation time of the bus B becomes long. Therefore, in the present embodiment, the DMA controller 100 reads the compressed data from the ROM 20 (at a low speed) and then temporarily transfers the data to the memory 30 (at a high speed).

CPU10は、メモリ30を一時作業領域として各種の演算等を実行するとともに、当該演算の結果にしたがってデコーダ40やラスタライザ50などに命令を出す。また、CPU10は、動画の再生のために圧縮データが必要となったとき、DMAコントローラ100に対して、ROM20から圧縮データをメモリ30に転送するために、各種の設定を実行する。   The CPU 10 executes various calculations using the memory 30 as a temporary work area, and issues instructions to the decoder 40, the rasterizer 50, and the like according to the results of the calculations. Further, when the compressed data is necessary for reproducing the moving image, the CPU 10 executes various settings for the DMA controller 100 in order to transfer the compressed data from the ROM 20 to the memory 30.

図3は、DMAコントローラ100の構成を示すブロック図である。
この図に示されるように、DMAコントローラ100は、デマルチプレクサ102と、バッファ104と、マルチプレクサ106と、転送制御部110と、アップカウンタ114と、ダウンカウンタ124と、を含む構成となっている。
FIG. 3 is a block diagram showing the configuration of the DMA controller 100.
As shown in this figure, the DMA controller 100 includes a demultiplexer 102, a buffer 104, a multiplexer 106, a transfer control unit 110, an up counter 114, and a down counter 124.

本実施形態において、バッファ104は、第1バッファ104aと第2バッファ104bとに分けられる。第1バッファ104aと第2バッファ104bとは、いずれも例えば512バイトの記憶容量を有するFIFO(Fast In Fast Out)メモリであり、アクセス(格納および読出)については転送制御部110によって制御される。なお、第1バッファ104aまたは第2バッファ104bのいずれか一方を指す場合に、一方のバッファと表記する場合がある。
デマルチプレクサ102は、選択信号Sel-Aが例えばHレベルであれば、入力端Inに入力されたデータを実線で示されるように出力端aから出力し、Lレベルであれば、破線で示されるように出力端bから出力する。マルチプレクサ106は、選択信号Sel-AがHレベルであれば(当該選択信号Sel-Aの否定信号がLレベルであれば)、実線で示されるように入力端bに入力されたデータを出力端Outから出力し、選択信号Sel-AがLレベルであれば(当該選択信号Sel-Aの否定信号がHレベルであれば)、破線で示されるように入力端aに入力されたデータを出力端Outから出力する。
このように、バッファ104の入出力は、選択信号Sel-Aによって、図において実線または破線のいずれかとなるように制御される。
In the present embodiment, the buffer 104 is divided into a first buffer 104a and a second buffer 104b. Each of the first buffer 104a and the second buffer 104b is a FIFO (Fast In Fast Out) memory having a storage capacity of, for example, 512 bytes, and access (storage and reading) is controlled by the transfer control unit 110. Note that when one of the first buffer 104a and the second buffer 104b is indicated, it may be expressed as one buffer.
The demultiplexer 102 outputs the data input to the input terminal In from the output terminal a as indicated by a solid line if the selection signal Sel-A is, for example, H level, and is indicated by a broken line if the selection signal Sel-A is L level. Is output from the output terminal b. If the selection signal Sel-A is at the H level (if the negative signal of the selection signal Sel-A is at the L level), the multiplexer 106 outputs the data input to the input terminal b as indicated by the solid line. If the selection signal Sel-A is L level (if the negative signal of the selection signal Sel-A is H level), the data input to the input terminal a is output as indicated by the broken line. Output from end Out.
As described above, the input / output of the buffer 104 is controlled to be either a solid line or a broken line in the drawing by the selection signal Sel-A.

転送制御部110は、CPU10からDMA転送指示があったとき、ROM20から圧縮データを読み出すとともに、512バイト毎に、一方のバッファ(第1バッファ104aまたは第2バッファ104bのいずれか一方)にデマルチプレクサ102を介して格納(リード転送)する。また、転送制御部110は、他方のバッファから圧縮データを読み出して、マルチプレクサ106(およびバスB)を介してメモリ30にライト転送する。
すなわち、DMAコントローラ100は、1群の圧縮データを512バイト毎のブロックに区切ってROM20からメモリ30にDMA転送する。このとき、転送制御部110は、リード転送する際の圧縮データの格納先と、ライト転送する際の圧縮データの読出元とを、第1バッファ104aおよび第2バッファ104bとで交互に切り換える。
The transfer control unit 110 reads the compressed data from the ROM 20 when the CPU 10 issues a DMA transfer instruction, and demultiplexes the data to one buffer (either the first buffer 104a or the second buffer 104b) every 512 bytes. Store (read transfer) via 102. Further, the transfer control unit 110 reads the compressed data from the other buffer, and write-transfers it to the memory 30 via the multiplexer 106 (and bus B).
That is, the DMA controller 100 divides a group of compressed data into 512-byte blocks and DMA-transfers them from the ROM 20 to the memory 30. At this time, the transfer control unit 110 alternately switches the storage destination of the compressed data at the time of read transfer and the read source of the compressed data at the time of write transfer between the first buffer 104a and the second buffer 104b.

また、CPU10からのDMA転送指示には、ウェイト回数Wcと転送回数Tcとが含まれる。
ウェイト回数Wcは、1ブロックの圧縮データをライト転送してから、次の1ブロックの圧縮データをライト転送するまでの期間を、ウェイトのサイクル回数で示したものであり、転送制御部110のレジスタ112にセットされる。
ここで、ウェイトの1サイクルは、1ブロックのライト転送に要する時間、すなわち、512バイトのブロックを、バスBを介してメモリ30に転送するのに要する時間としている。ウェイト回数Wcについては、例えば後述するようなメモリ帯域に割り当てによって制限(または制約される)データ転送速度に応じて設定される。
データ転送速度の単位は、一般に「ビット/秒」で表されるが、ここでは、計算を簡単にするために、「ブロック/フレーム」とする。本実施形態において、1ブロックは512バイトとしており、また、1フレームは、例えば表示の垂直走査周波数が60Hz(1秒あたり60コマの表示)であれば、16.7ミリ秒である。
DMAコントローラ100が、例えば1フレーム当たり2ブロックを、ROM20からメモリ30にDMA転送する場合、すなわちデータ転送速度として2ブロック/フレームとする場合を想定する。この場合に、1ブロックのライト転送に要する時間が0.418ミリ秒であれば、ウェイト回数Wcは、単位時間である1フレーム(16.7ミリ秒)を、2ブロックのライト転送に要する時間(=0.418×2ミリ秒)で除した「20」に設定される。これにより、20ウェイトにつき、1ブロックが(1ウェイトで)DMA転送されるように設定される。
なお、実際には、CPU10が、データ転送速度に応じたウェイト回数WcをDMA転送指示する際に出力する構成となるが、後述するように、ウェイト回数Wcについては動的に切り替えられる場合もある。
このようにウェイト回数Wcについては、データ転送速度に応じて設定される。ここで、データ転送速度が低ければ、ウェイト回数Wcが大きくなる。ウェイト回数Wcが大きくなるにつれて、DMAコントローラ100以外の他のバスマスタ(CPU10、デコーダ40、ラスタライザ50、ディスプレイコントローラ60)が、メモリ30にアクセスすることが可能な期間が長くなる。
Further, the DMA transfer instruction from the CPU 10 includes the number of wait times Wc and the number of transfer times Tc.
The number of wait times Wc indicates the period from the write transfer of one block of compressed data to the write transfer of the next one block of compressed data as the number of wait cycles. 112.
Here, one cycle of wait is a time required for write transfer of one block, that is, a time required for transferring a 512-byte block to the memory 30 via the bus B. The number of wait times Wc is set in accordance with, for example, a data transfer rate limited (or restricted) by allocation to a memory band as will be described later.
The unit of the data transfer rate is generally expressed in “bits / second”, but here, “block / frame” is used in order to simplify the calculation. In this embodiment, one block is 512 bytes, and one frame is 16.7 milliseconds if the vertical scanning frequency of display is 60 Hz (display of 60 frames per second), for example.
Assume that the DMA controller 100 DMA-transfers, for example, 2 blocks per frame from the ROM 20 to the memory 30, that is, the data transfer rate is 2 blocks / frame. In this case, if the time required for the write transfer of one block is 0.418 milliseconds, the number of times of waiting Wc is one frame (16.7 milliseconds) as the unit time, and the time required for the write transfer of two blocks. It is set to “20” divided by (= 0.418 × 2 milliseconds). Thereby, one block is set to be DMA-transferred (with one wait) per 20 waits.
In practice, the CPU 10 outputs the number of wait times Wc corresponding to the data transfer rate when instructing the DMA transfer. However, as will be described later, the number of wait times Wc may be dynamically switched. .
Thus, the number of wait times Wc is set according to the data transfer rate. Here, if the data transfer rate is low, the number of wait times Wc increases. As the number of wait times Wc increases, the period during which other bus masters (CPU 10, decoder 40, rasterizer 50, display controller 60) other than the DMA controller 100 can access the memory 30 becomes longer.

転送回数Tcは、転送対象となる1群の圧縮データのデータ量をブロック数に換算した値である。例えば、圧縮データのデータ量が3072バイトであれば、転送回数Tcは、当該3072バイトを1ブロックの512バイトで除した「6」になる。なお、実際の圧縮データのデータ量は、上述したように数百メガバイトから数ギガバイト程度までに及ぶので、ここでの数値はあくまでも説明のための便宜上の値に過ぎない。また、CPU10から供給される転送回数Tcは、転送制御部110のレジスタ122にセットされる。   The transfer count Tc is a value obtained by converting the data amount of a group of compressed data to be transferred into the number of blocks. For example, if the amount of compressed data is 3072 bytes, the transfer count Tc is “6” obtained by dividing the 3072 bytes by 512 bytes of one block. Since the actual amount of compressed data ranges from several hundred megabytes to several gigabytes as described above, the numerical values here are merely values for convenience of explanation. The transfer count Tc supplied from the CPU 10 is set in the register 122 of the transfer control unit 110.

転送制御部110は、第1ブロックのリード転送が完了したとき、および、アップカウンタ114のカウント値Q1がウェイト回数Wcに達したとき、アップカウンタ114のリセット端(Res)にリセット信号を出力して、アップカウンタ114のカウント値Q1をゼロにリセットする。
一方、アップカウンタ114は、ウェイトの周期に等しいクロックClkにしたがってカウント値Q1を「1」ずつアップカウントする。すなわち、512バイトの1ブロックがメモリ30にライト転送される時間(ウェイト)を単位として、カウント値Q1がアップカウントされる構成となっている。
なお、クロックClkは、図示省略したクロックジェネレータによって生成される。
The transfer control unit 110 outputs a reset signal to the reset terminal (Res) of the up counter 114 when the read transfer of the first block is completed and when the count value Q1 of the up counter 114 reaches the number of wait times Wc. Thus, the count value Q1 of the up counter 114 is reset to zero.
On the other hand, the up counter 114 counts up the count value Q1 by “1” in accordance with the clock Clk equal to the wait period. That is, the count value Q1 is up-counted in units of time (wait) during which one block of 512 bytes is written and transferred to the memory 30.
The clock Clk is generated by a clock generator (not shown).

また、転送制御部110は、CPU10からDMA転送指示があったときの初期設定において、レジスタ122にセットされた転送回数Tcを、ダウンカウンタ124にセットするとともに、アップカウンタ114のカウント値Q1がウェイト回数Wcに達したとき、ダウンカウンタ124にパルス信号を出力して、当該ダウンカウンタ124によるカウント値Q2を「1」だけデクリメント(ダウンカウント)させる。   In addition, the transfer control unit 110 sets the transfer count Tc set in the register 122 in the down counter 124 and the count value Q1 of the up counter 114 in the initial setting when the DMA transfer instruction is issued from the CPU 10. When the number of times Wc is reached, a pulse signal is output to the down counter 124, and the count value Q2 by the down counter 124 is decremented (down counted) by “1”.

ROM20からメモリ30に転送される1群の圧縮データのブロックについては、便宜的に、リード転送される順番で第1ブロック、第2ブロック、第3ブロック、…、と記載する場合がある。なお、1群の圧縮データのうち、最終ブロックは、転送回数Tcで示される第Tcブロックである。   For convenience, a group of compressed data blocks transferred from the ROM 20 to the memory 30 may be described as a first block, a second block, a third block,... In the order of read transfer. In the group of compressed data, the last block is the Tc block indicated by the transfer count Tc.

ところで、ROM20からの読み出しは、メモリ30へ書き込みと比較して低速であるので、1ブロック(512バイト)を一方のバッファにリード転送するのに要する時間は、同じデータ量を、バスBを介してメモリ30にライト転送するのに要する時間よりも長くなる。このため、一方のバッファへのリード転送が完了しないうちに、他方のバッファからのライト転送が完了している場合がある。換言すれば、他方のバッファからのライト転送が完了して当該他方のバッファが空になっていても、一方のバッファにおけるリード転送が完了していない場合がある。
このため、転送制御部110は、あるブロック(第1ブロックおよび第2ブロックを除く)のリード転送を次の場合に実行する。すなわち、あるブロックのリード転送が一方のバッファに対して開始される場合とは、当該ブロックの1つ前のブロックが、他方のバッファへのリード転送が完了している場合(条件A)であって、かつ、当該一方のバッファにおいて、2つ前のブロックのライト転送がすでに完了して空になっている場合(条件B)である。
By the way, since reading from the ROM 20 is slower than writing to the memory 30, the time required to read transfer one block (512 bytes) to one buffer is the same amount of data via the bus B. Thus, the time required for write transfer to the memory 30 becomes longer. For this reason, the write transfer from the other buffer may be completed before the read transfer to one buffer is completed. In other words, even if the write transfer from the other buffer is completed and the other buffer is empty, the read transfer in one buffer may not be completed.
For this reason, the transfer control unit 110 executes read transfer of a certain block (excluding the first block and the second block) in the following case. That is, the case where the read transfer of a certain block is started with respect to one buffer is the case where the block immediately before that block has completed the read transfer to the other buffer (condition A). In this case, the write transfer of the previous block is already completed and empty in the one buffer (condition B).

ただし、第1ブロックのリード転送については、1つ前のブロックが存在しないことから、条件Aが要件にならないし、また、2つ前のブロックも存在しないことから、条件Bも要件にならない。すなわち、第1ブロックについては、CPU10からDMA転送指示があったとき、直ちに一方のバッファにリード転送することができる。また、第2ブロックのリード転送については、2つ前のブロックが存在しないことから、条件Bが要件にならない。このため、第2ブロックについては、第1ブロックが一方のバッファへのリード転送が完了したとき、他方のバッファにリード転送することができる。   However, for the read transfer of the first block, the condition A is not a requirement because there is no previous block, and the condition B is not a requirement because there is no second previous block. That is, the first block can be read and transferred to one buffer immediately when the DMA transfer instruction is issued from the CPU 10. In addition, for the second block read transfer, the condition B is not a requirement because there is no previous block. Therefore, the second block can be read and transferred to the other buffer when the first block completes the read transfer to the one buffer.

一方、転送制御部110は、あるブロック(第1ブロックを除く)のライト転送については、1つ前のブロックのライト転送を開始してから、ウェイト回数Wcで示されるサイクル数だけのウェイトが経過したときに実行する。端的に言えば、転送制御部110は、あるブロックのライト転送については、1つ前のブロックのライト転送を開始してから、ウェイト回数Wcとウェイトの1サイクルとを乗じた期間だけウェイトして実行する。
ただし、第1ブロックでは1つ前のブロックが存在しない。このため、第1ブロックのライト転送については、ウェイトをかけることなく(第1ブロックのリード転送が完了していれば)、実行することができる。
On the other hand, for the write transfer of a certain block (excluding the first block), the transfer control unit 110 waits for the number of cycles indicated by the number of wait times Wc after starting the write transfer of the previous block. Run when you do. In short, the transfer control unit 110 waits for the write transfer of a certain block for a period obtained by multiplying the number of wait times Wc and one cycle of the wait after starting the write transfer of the previous block. Run.
However, there is no previous block in the first block. For this reason, the write transfer of the first block can be executed without waiting (if the read transfer of the first block is completed).

このような転送制御部110によるリード転送およびライト転送について、図面を参照して説明する。
図4および図5は、各ブロックをリード転送するためのリード転送処理を示すフローチャートであり、図6および図7は、各ブロックをライト転送するためのライト転送処理を示すフローチャートである。
なお、リード転送処理とライト転送処理とは、互いに並行して実行される。また、以下においては説明の便宜上、奇数(1、3、5、…)ブロックは第1バッファ104aに転送され、偶数(2、4、6、…)ブロックは第2バッファ104bに転送されるものとする。また、ここでは、ウェイト回数Wcおよび転送回数Tcについては、具体的な数値で特定しないで説明する。
Such read transfer and write transfer by the transfer control unit 110 will be described with reference to the drawings.
4 and 5 are flowcharts showing read transfer processing for read transfer of each block, and FIGS. 6 and 7 are flowcharts showing write transfer processing for write transfer of each block.
Note that the read transfer process and the write transfer process are executed in parallel with each other. In the following, for convenience of explanation, odd (1, 3, 5,...) Blocks are transferred to the first buffer 104a, and even (2, 4, 6,...) Blocks are transferred to the second buffer 104b. And Further, here, the number of wait times Wc and the number of transfers Tc will be described without being specified by specific numerical values.

まず、リード転送処理について図4および図5を参照して説明する。
転送制御部110は、CPU10からDMA転送指示があったとき、初期設定を実行する(ステップSa11)。具体的には、転送制御部110は、当該CPU10から供給されるウェイト回数Wcをレジスタ112にセットし、当該CPU10から供給される転送回数Tcをレジスタ122にセットするとともに、当該転送回数Tcをダウンカウンタ124にセットする。
First, the read transfer process will be described with reference to FIGS.
When receiving a DMA transfer instruction from the CPU 10, the transfer control unit 110 executes initial setting (step Sa11). Specifically, the transfer control unit 110 sets the wait number Wc supplied from the CPU 10 in the register 112, sets the transfer number Tc supplied from the CPU 10 in the register 122, and decreases the transfer number Tc. Set to counter 124.

次に、転送制御部110は、選択信号Sel-AをHレベルにする(ステップSa12)。これにより、デマルチプレクサ102では出力端aが選択される。
続いて、転送制御部110は、転送対象である1群の圧縮データの第1ブロックをROM20から読み出して、デマルチプレクサ102を介して、第1バッファ104aに格納する(リード転送の開始、ステップSa13)。
ここで、転送制御部110は、第1ブロックのリード転送が完了したか否かを判別する(ステップSa14)。第1ブロックのリード転送が完了していないと判別すれば(ステップSa14の判別結果が「No」であれば)、転送制御部110は、処理手順をステップSa13に戻す。このため、第1ブロックのリード転送が完了するまで、転送制御部110は、ステップSa13を実行することになる。
Next, the transfer control unit 110 sets the selection signal Sel-A to the H level (step Sa12). As a result, the output terminal a is selected in the demultiplexer 102.
Subsequently, the transfer control unit 110 reads the first block of the group of compressed data to be transferred from the ROM 20 and stores it in the first buffer 104a via the demultiplexer 102 (start of read transfer, step Sa13). ).
Here, the transfer control unit 110 determines whether or not the read transfer of the first block has been completed (step Sa14). If it is determined that the read transfer of the first block has not been completed (if the determination result of step Sa14 is “No”), the transfer control unit 110 returns the processing procedure to step Sa13. For this reason, the transfer control unit 110 executes Step Sa13 until the read transfer of the first block is completed.

第1ブロックのリード転送が完了したならば(ステップSa14の判別結果が「Yes」であれば)、転送制御部110は、選択信号Sel-Aを反転してLレベルとする(ステップSa15)。これにより、デマルチプレクサ102では出力端bが選択され、マルチプレクサ106では入力端aが選択される。   If the read transfer of the first block is completed (if the determination result in step Sa14 is “Yes”), the transfer control unit 110 inverts the selection signal Sel-A to set the L level (step Sa15). As a result, the demultiplexer 102 selects the output terminal b, and the multiplexer 106 selects the input terminal a.

第1ブロックのリード転送が完了しているので、転送制御部110は、続く第2ブロックを、ROM20から読み出し、デマルチプレクサ102を介して第2バッファ104bに格納する(ステップSa16、Sa17)。なお、ステップSa16、Sa17は、ステップSa13、Sa14と、リード転送の対象であるブロックと記憶先であるバッファとが異なる以外、同様である。
第2ブロックのリード転送が完了したならば(ステップSa17の判別結果が「Yes」であれば)、転送制御部110は、変数mに「3」をセットする(ステップSa18)。ここで、変数mは、リード転送の対象とするブロックの番号を示す。これにより、リード転送の対象は、1群の圧縮データのうち、第3ブロックに設定される。
なお、第1ブロックおよび第2ブロックのリード転送と、第3ブロック以降のリード転送と区別している理由は、上述したように、第1ブロックでは、上記条件Aおよび条件Bの充足が要件ではなく、第2ブロックでは、上記条件Bの充足が要件ではないからである。
Since the read transfer of the first block has been completed, the transfer control unit 110 reads the subsequent second block from the ROM 20 and stores it in the second buffer 104b via the demultiplexer 102 (steps Sa16 and Sa17). Steps Sa16 and Sa17 are the same as steps Sa13 and Sa14 except that the block that is the target of the read transfer is different from the buffer that is the storage destination.
If the read transfer of the second block is completed (if the determination result in step Sa17 is “Yes”), the transfer control unit 110 sets “3” in the variable m (step Sa18). Here, the variable m indicates the number of the block to be read-transferred. As a result, the target of read transfer is set to the third block in the group of compressed data.
The reason why the first block and second block read transfer is distinguished from the third block and subsequent read transfers is that, as described above, in the first block, satisfaction of the above conditions A and B is not a requirement. This is because the satisfaction of the condition B is not a requirement in the second block.

このように、転送制御部110は、第1ブロックについては第1バッファ104aに、第2ブロックについては第2バッファ104bに、それぞれROM20からリード転送する。次に、第3ブロック以降のリード転送について図5を参照して説明する。   As described above, the transfer control unit 110 performs read transfer from the ROM 20 to the first buffer 104a for the first block and to the second buffer 104b for the second block. Next, read transfer after the third block will be described with reference to FIG.

まず、転送制御部110は、変数mで示される第(m−2)ブロックのライト転送が完了しているか否かについて判別する(ステップSa19)。ここで、第(m−2)ブロックとは、リード転送の対象に設定された第mブロックよりも2つ前のブロックであり、第mブロックの格納予定先であるバッファに既に記憶されたブロックである。このため、ステップSa19では、第mブロックをいずれかのバッファに記憶するにあたって、当該バッファが空になっているのか否かが判別される。すなわち、上記条件Bを充足しているのか否かが判別される。   First, the transfer control unit 110 determines whether or not the write transfer of the (m−2) -th block indicated by the variable m has been completed (step Sa19). Here, the (m−2) -th block is a block two blocks before the m-th block set as a read transfer target, and is already stored in a buffer that is a storage destination of the m-th block. It is. Therefore, in step Sa19, when storing the m-th block in any of the buffers, it is determined whether or not the buffer is empty. That is, it is determined whether or not the condition B is satisfied.

第(m−2)ブロックのライト転送が完了していなければ(ステップSa19の判別結果が「No」であれば、第mブロックの格納予定先であるバッファが空でないことを意味するので、転送制御部110は、第(m−2)ブロックのライト転送が完了するまで待機する。
一方、第(m−2)ブロックのライト転送が完了すれば(ステップSa19の判別結果が「Yes」になれば)、転送制御部110は、選択信号Sel-Aを反転させて、リード転送の格納先とライト転送の読出元とを切り換える(ステップSa20)。そして、転送制御部110は、ROM20から第mブロックを読み出し、デマルチプレクサ102を介して、制御信号Sel-Aで選択した方のバッファにリード転送する(ステップSa21、Sa22)。
なお、ステップSa21における第mブロックのリード転送は、mが「3」であれば、第2ブロックのリード転送の完了後(ステップSa16、Sa17の後)に実行され、mが「4」以上であれば、第(m−1)ブロックのリード転送の完了後(変数mがインクリメントされる前のステップSa21、Sa22の後)に実行される。このため、上記条件Aについては、フローチャートで示される処理の順序に従えば、必然的に充足することになるので、条件Aを満たすか否かを判別するステップを、特別に用意している訳ではない。
If the write transfer of the (m-2) -th block has not been completed (if the determination result in step Sa19 is “No”, it means that the buffer that is the storage destination of the m-th block is not empty) The control unit 110 waits until the write transfer of the (m−2) th block is completed.
On the other hand, when the write transfer of the (m−2) th block is completed (when the determination result in step Sa19 is “Yes”), the transfer control unit 110 inverts the selection signal Sel-A and performs read transfer. The storage destination and the read source of write transfer are switched (step Sa20). Then, the transfer control unit 110 reads the m-th block from the ROM 20, and reads and transfers it to the buffer selected by the control signal Sel-A via the demultiplexer 102 (steps Sa21 and Sa22).
Note that the read transfer of the mth block in step Sa21 is executed after the completion of the read transfer of the second block (after steps Sa16 and Sa17) if m is “3”, and m is “4” or more. If there is, it is executed after the completion of the read transfer of the (m−1) -th block (after steps Sa21 and Sa22 before the variable m is incremented). For this reason, the above-mentioned condition A is necessarily satisfied if the processing order shown in the flowchart is followed. Therefore, a step for determining whether or not the condition A is satisfied is specially prepared. is not.

第mブロックのリード転送が完了したならば(ステップSa22の判別結果が「Yes」であれば)、転送制御部110は、変数mと、レジスタ122にセットされた転送回数Tcとが互いに等しいか否か、すなわちリード転送したブロックが1群の圧縮データのうちの最終ブロックであったか否かを判別する(ステップSa23)。
リード転送したブロックが最終ブロックであったならば(ステップSa23の判別結果が「Yes」であれば)、後述する例外処理によって選択信号Sel-Aを反転した(ステップSa25)後、このリード転送処理が終了する。
ただし、リード転送処理は終了しても、バッファに格納されたブロックが転送されるライト転送処理は引き続き実行される。詳細については後述するが、図8において、リード転送処理は、※印で示される時刻S11における例外処理によって選択信号Sel-Aが反転された時点で終了するが、引き続き実行されるライト転送処理によって最終ブロック(第6ブロック)がライト転送されることになる。
If the read transfer of the m-th block is completed (if the determination result in step Sa22 is “Yes”), the transfer control unit 110 determines whether the variable m and the transfer count Tc set in the register 122 are equal to each other. It is determined whether or not the read-transferred block is the last block in the group of compressed data (step Sa23).
If the read-transferred block is the final block (if the determination result in step Sa23 is “Yes”), the selection signal Sel-A is inverted by an exception process to be described later (step Sa25), and then this read-transfer process is performed. Ends.
However, even if the read transfer process is completed, the write transfer process in which the block stored in the buffer is transferred is continued. Although details will be described later, in FIG. 8, the read transfer process ends when the selection signal Sel-A is inverted by the exception process at the time S11 indicated by *, but the write transfer process that is subsequently executed. The final block (sixth block) is written and transferred.

一方、リード転送したブロックが最終ブロックでなければ(ステップSa23の判別結果が「No」であれば)、転送制御部110は、リード転送の対象を次のブロックとするために、変数mを「1」だけインクリメントして(ステップSa24)、処理手順をステップSa19に戻す。
これによって、最終の第Tcブロックまで、格納先であるバッファを交互に切り換えながらリード転送が実行される。
On the other hand, if the read-transferred block is not the final block (if the determination result in step Sa23 is “No”), the transfer control unit 110 sets the variable m to “ 1 "is incremented (step Sa24), and the processing procedure is returned to step Sa19.
As a result, the read transfer is executed up to the final Tc block while alternately switching the storage destination buffers.

次に、ライト転送処理について図6および図7を参照して説明する。
まず、転送制御部110は、第1ブロックのリード転送が完了しているか否かを判別し(ステップSb11)、当該第1ブロックのリード転送が完了していなければ(ステップSb11の判別結果が「No」であれば)、当該第1ブロックのリード転送が完了するまで待機する。
Next, the write transfer process will be described with reference to FIGS.
First, the transfer control unit 110 determines whether or not the read transfer of the first block is completed (step Sb11). If the read transfer of the first block is not completed (the determination result of step Sb11 is “ If “No”, the process waits until the read transfer of the first block is completed.

第1ブロックのリード転送が完了していれば(ステップSb11の判別結果が「Yes」であれば)、転送制御部110は、諸条件をクリアしているか否かを判別する(ステップSb12)。
なお、ここでいう諸条件とは、例えば、メモリ30が他のバスマスタによって使用されていないことなどである。諸条件をクリアしていなければ(ステップSb12の判別結果が「No」であれば)、転送制御部110は、当該諸条件がクリアされるまで待機するが、ここでの説明では、当該諸条件はクリアされているものとする。
次に、転送制御部110は、アップカウンタ114にリセット信号を出力して、カウント値Q1をゼロにリセットする(ステップSb13)。なお、フローチャートでは特に図示しないが、アップカウンタ114は、リード転送処理およびライト転送処理とは独立して、ウェイトの周期に等しいクロックClkにしたがってカウント値Q1をアップカウントする。
If the read transfer of the first block has been completed (if the determination result of step Sb11 is “Yes”), the transfer control unit 110 determines whether or not various conditions have been cleared (step Sb12).
The various conditions here are, for example, that the memory 30 is not used by another bus master. If the conditions are not cleared (if the determination result in step Sb12 is “No”), the transfer control unit 110 waits until the conditions are cleared. Shall be cleared.
Next, the transfer control unit 110 outputs a reset signal to the up counter 114 to reset the count value Q1 to zero (step Sb13). Although not specifically shown in the flowchart, the up counter 114 counts up the count value Q1 in accordance with the clock Clk equal to the wait period independently of the read transfer process and the write transfer process.

また、上述したようにリード転送処理において、第1ブロックのリード転送が完了すると、選択信号Sel-Aが反転してLレベルとなる(図4のステップSa15)。このため、当該選択信号Sel-Aの反転信号はHレベルとなるので、マルチプレクサ106では入力端aが選択された状態となる。この状態において、転送制御部110は、第1ブロックを第1バッファ104aから読み出し、マルチプレクサ106およびバスBを介して、メモリ30にライト転送する(ステップSb14、Sb15)。
なお、転送制御部110は、あるブロックをメモリ30にライト転送する場合、バススレーブであるメモリ30へのアクセスをCPU10に通知する。このため、DMAコントローラ100以外の他のバスマスタ、具体的には、CPU10、デコーダ40、ラスタライザ50、ディスプレイコントローラ60は、メモリ30へのアクセスすることができなくなる。
Further, as described above, in the read transfer process, when the read transfer of the first block is completed, the selection signal Sel-A is inverted and becomes the L level (step Sa15 in FIG. 4). For this reason, since the inverted signal of the selection signal Sel-A is at the H level, the multiplexer 106 is in the state where the input terminal a is selected. In this state, the transfer control unit 110 reads the first block from the first buffer 104a and performs write transfer to the memory 30 via the multiplexer 106 and the bus B (steps Sb14 and Sb15).
The transfer control unit 110 notifies the CPU 10 of access to the memory 30 that is a bus slave when a block is written and transferred to the memory 30. For this reason, bus masters other than the DMA controller 100, specifically, the CPU 10, the decoder 40, the rasterizer 50, and the display controller 60 cannot access the memory 30.

第1ブロックのメモリ30へのライト転送が完了したならば(ステップSb15の判別結果が「Yes」であれば)、転送制御部110は、メモリ30の解放をCPU10に通知する。これにより、他のバスマスタは、メモリ30にアクセスすることができる。
また、 第1ブロックのライト転送後、転送制御部110は、ダウンカウンタ124にパルス信号を出力して、カウント値Q2を「1」だけデクリメントさせる(ステップSb16)。カウント値Q2は、初期設定(図4のステップSa11)において転送回数Tcがセットされるとともに、1ブロックのライト転送が完了する毎に「1」だけデクリメントされる(ステップSb16、Sb23)。このため、カウント値Q2は、1群の圧縮データのうち、ライト転送が完了していないブロック数を示すことになる。
If the write transfer to the memory 30 of the first block is completed (if the determination result in step Sb15 is “Yes”), the transfer control unit 110 notifies the CPU 10 of the release of the memory 30. Thereby, other bus masters can access the memory 30.
Further, after the write transfer of the first block, the transfer control unit 110 outputs a pulse signal to the down counter 124 and decrements the count value Q2 by “1” (step Sb16). The count value Q2 is decremented by “1” each time the write transfer of one block is completed (steps Sb16 and Sb23) while the transfer count Tc is set in the initial setting (step Sa11 in FIG. 4). For this reason, the count value Q2 indicates the number of blocks in which write transfer is not completed among a group of compressed data.

この後、転送制御部110は、変数nに「2」をセットする(ステップSb17)。ここで、変数nは、ライト転送の対象とするブロックの番号を示す。すなわち、ここでは、ライト転送の対象として、1群の圧縮データのうち、第2ブロックに設定する。
なお、変数nの初期値を「2」にして、第1ブロックのライト転送と、第2ブロック以降のライト転送とを区別している理由は、上述したように、第2ブロック以降のライト転送については、1つ前のブロックをライト転送してから、ウェイト回数Wcで示されるサイクル数を経過して時点で実行する。これに対して、第1ブロックについては1つ前のブロックが存在しないので、バッファへのリード転送が完了した後、直ちに実行できるためである。
Thereafter, the transfer control unit 110 sets “2” to the variable n (step Sb17). Here, the variable n indicates the number of the block to be subjected to write transfer. That is, here, the second block of the group of compressed data is set as the write transfer target.
Note that the initial value of the variable n is set to “2” to distinguish between write transfer for the first block and write transfer for the second block and later, as described above, for write transfer for the second block and later. Is executed at the time when the number of cycles indicated by the number of wait times Wc has elapsed since the previous block was written and transferred. On the other hand, since the previous block does not exist for the first block, it can be executed immediately after the read transfer to the buffer is completed.

このようにして、転送制御部110は、第1ブロックについては第1バッファ104aから読み出してメモリ30にライト転送する。次に、第2ブロック以降のライト転送について図7を参照して説明する。   In this way, the transfer control unit 110 reads the first block from the first buffer 104 a and write-transfers it to the memory 30. Next, write transfer after the second block will be described with reference to FIG.

まず、転送制御部110は、アップカウンタ114によるカウント値Q1がレジスタ112にセットされたウェイト回数Wcに達しているか否かを判別する(ステップSb18)。カウント値Q1がウェイト回数Wcに達していなければ(ステップSb18の判別結果が「No」であれば、第nブロックのライト転送するタイミングには至っていないので、転送制御部110は、カウント値Q1がウェイト回数Wcに達するまで、第nブロックをライト転送しないで待機することになる。   First, the transfer control unit 110 determines whether or not the count value Q1 by the up counter 114 has reached the number of wait times Wc set in the register 112 (step Sb18). If the count value Q1 has not reached the number of wait times Wc (if the determination result in step Sb18 is “No”, the transfer control unit 110 determines that the count value Q1 has not reached the write transfer timing of the nth block. Until the number of wait times Wc is reached, the nth block is waited for without being transferred.

カウント値Q1がウェイト回数Wcに達した場合(ステップSb18の判別結果が「Yes」である場合)、転送制御部110は、諸条件をクリアしているか否かを判別する(ステップSb19)。
なお、ここでいう諸条件とは、例えば、ステップSb12におけるメモリ30が他のバスマスタによって使用されていないことに加えて、ライト転送の対象である第nブロックのリード転送が完了していることなどである。諸条件をクリアしていなければ(ステップSb19の判別結果が「No」であれば)、転送制御部110は、当該諸条件がクリアされるまで待機するが、ここでの説明では、当該諸条件はクリアされているものとする。
When the count value Q1 reaches the number of wait times Wc (when the determination result of step Sb18 is “Yes”), the transfer control unit 110 determines whether or not various conditions are cleared (step Sb19).
The various conditions here include, for example, that the memory 30 in step Sb12 is not used by another bus master, and that the read transfer of the nth block that is the target of the write transfer is completed. It is. If the conditions are not cleared (if the determination result in step Sb19 is “No”), the transfer control unit 110 waits until the conditions are cleared. Shall be cleared.

次に、転送制御部110は、アップカウンタ114のカウント値Q1をゼロリセットするとともに(ステップSb20)、第nブロックを一方のバッファから読み出し、マルチプレクサ106およびバスBを介して、メモリ30にライト転送する(ステップSb21、Sb22)。なお、転送制御部110は、あるブロックをライト転送する場合、メモリ30へのアクセスをCPU10に通知する点については、上述した通りである。   Next, the transfer control unit 110 resets the count value Q1 of the up counter 114 to zero (step Sb20), reads the n-th block from one buffer, and writes it to the memory 30 via the multiplexer 106 and the bus B. (Steps Sb21 and Sb22). As described above, the transfer control unit 110 notifies the CPU 10 of access to the memory 30 when performing write transfer of a certain block.

第nブロックのメモリ30へのライト転送が完了したならば(ステップSb22の判別結果が「Yes」であれば)、転送制御部110は、メモリ30の解放をCPU10に通知するとともに、ダウンカウンタ124のカウント値Q2を「1」だけデクリメントさせる(ステップSb23)。
次に、転送制御部110は、カウント値Q2がゼロであるか否か、すなわち、ライト転送がされていないブロックが存在するか否かを判別する(ステップSb24)。
If the write transfer to the memory 30 of the n-th block is completed (if the determination result of step Sb22 is “Yes”), the transfer control unit 110 notifies the CPU 10 of the release of the memory 30 and the down counter 124. Is decremented by “1” (step Sb23).
Next, the transfer control unit 110 determines whether or not the count value Q2 is zero, that is, whether or not there is a block that is not subjected to write transfer (step Sb24).

カウント値Q2がゼロでなければ(ステップSb24の判別結果が「No」であれば)、転送制御部110は、ライト転送の対象を次のブロックするために、変数nを「1」だけインクリメントして(ステップSb25)、処理手順をステップSb18に戻す。これによって、最終の第Tcブロックまで、アップカウンタ114によるカウント値Q1がウェイト回数Wcに達する毎にライト転送する処理が繰り返し実行されることになる。   If the count value Q2 is not zero (if the determination result in step Sb24 is “No”), the transfer control unit 110 increments the variable n by “1” in order to block the write transfer target to the next block. (Step Sb25), the processing procedure is returned to Step Sb18. Thus, until the final Tc block, the write transfer process is repeatedly executed every time the count value Q1 by the up counter 114 reaches the number of wait times Wc.

一方、カウント値Q2がゼロであれば(ステップSb24の判別結果が「Yes」であれば)、転送制御部110は、アップカウンタ114のカウント値Q1がウェイト回数Wcに達したか否かを判別する(ステップSb26)。
カウント値Q1がウェイト回数Wcに達していなければ(ステップSb26の判別結果が「No」であれば)、転送制御部110は、処理手順をステップSb26に戻して、当該カウント値Q1がウェイト回数Wcに達するまで待機する。カウント値Q1がウェイト回数Wcに達したとき(ステップSb26の判別結果が「Yes」になったとき)、転送制御部110は、CPU10から指示された1群の圧縮データのDMA転送を完了して、次のDMA転送指示を受け付ける。
On the other hand, if the count value Q2 is zero (if the determination result of step Sb24 is “Yes”), the transfer control unit 110 determines whether or not the count value Q1 of the up counter 114 has reached the number of wait times Wc. (Step Sb26).
If the count value Q1 has not reached the wait number Wc (if the determination result in step Sb26 is “No”), the transfer control unit 110 returns the processing procedure to step Sb26, and the count value Q1 is equal to the wait number Wc. Wait until you reach. When the count value Q1 reaches the number of wait times Wc (when the determination result in step Sb26 is “Yes”), the transfer control unit 110 completes the DMA transfer of the group of compressed data instructed by the CPU 10. The next DMA transfer instruction is accepted.

図8は、DMAコントローラ100によるDMA転送の一例を、リード転送とライト転送とに分けて示す図である。なお、この例では、簡略化して説明するために、DMA転送される圧縮データを、第1ブロックから第6ブロックまでとしている。すなわち、転送回数Tcを「6」としている。
まず、時刻S1でCPU10によるDMA転送指示があったときに、リード転送処理では、第1ブロックがROM20から第1バッファ104aにリード転送される(ステップSa11〜Sa14)。
時刻S2で第1ブロックのリード転送が完了すると、リード転送処理においては、選択信号Sel-Aが反転するので(ステップSa15)、第2ブロックが第2バッファ104bにリード転送される(Sa16、Sa17)。一方、ライト転送処理においては、第1ブロックが第1バッファ104aからメモリ30にライト転送され(ステップSb11〜Sb15)、この後、変数nに「2」がセットされる(ステップSb17)。
FIG. 8 is a diagram showing an example of DMA transfer by the DMA controller 100 divided into read transfer and write transfer. In this example, in order to simplify the description, the compressed data to be DMA transferred is from the first block to the sixth block. That is, the transfer count Tc is set to “6”.
First, when there is a DMA transfer instruction from the CPU 10 at time S1, in the read transfer process, the first block is read and transferred from the ROM 20 to the first buffer 104a (steps Sa11 to Sa14).
When the read transfer of the first block is completed at time S2, the selection signal Sel-A is inverted in the read transfer process (step Sa15), so that the second block is read and transferred to the second buffer 104b (Sa16, Sa17). ). On the other hand, in the write transfer process, the first block is write-transferred from the first buffer 104a to the memory 30 (steps Sb11 to Sb15), and then “2” is set to the variable n (step Sb17).

時刻S3で第2ブロックのリード転送が完了すると、リード転送処理においては変数mに「3」がセットされるとともに(ステップSa18)、選択信号Sel-Aが反転するので(ステップSa20)、変数mの「3」に対応した第3ブロックが第1バッファ104aにリード転送され(ステップSa21、Sa22)、この後、変数mが「4」にインクリメントされる(ステップSa24)。   When the read transfer of the second block is completed at time S3, “3” is set to the variable m in the read transfer process (step Sa18), and the selection signal Sel-A is inverted (step Sa20). The third block corresponding to “3” is read and transferred to the first buffer 104a (steps Sa21 and Sa22), and then the variable m is incremented to “4” (step Sa24).

時刻S4、詳細には、第1ブロックのライト転送が開始された時刻S2からウェイト回数Wcに相当する期間W(=Wc×Ta、TaはクロックClkの1周期)が経過した時刻S4に至ると、ライト転送処理においては、「2」にセットされた変数nにしたがって第2ブロックのライト転送が開始される(ステップSb21)。
時刻S5で第2ブロックのライト転送が完了すると、ライト転送処理においては、ステップSb22の判別結果が「Yes」になり、変数nがインクリメントされて「3」となる(ステップSb25)。一方、リード転送処理においては、ステップSa19の判別結果が「Yes」になり、選択信号Sel-Aが反転して(ステップSa20)、変数mの「4」に対応した第4ブロックが第2バッファ104bにリード転送され(Sa21、Sa22)、この後、変数mが「5」にインクリメントされる(ステップSa24)。
時刻S5で第2ブロックのライト転送が完了すると、ライト転送処理においては、ステップSb22の判別結果が「Yes」になり、変数nがインクリメントされて「3」となる(ステップSb25)。一方、リード転送処理においては、ステップSa19の判別結果が「Yes」になり、選択信号Sel-Aが反転して(ステップSa20)、変数mの「4」に対応した第4ブロックが第2バッファ104bにリード転送され(Sa21、Sa22)、この後、変数mが「5」にインクリメントされる(ステップSa24)。
At time S4, specifically, from time S2 at which write transfer of the first block is started to time S4 when a period W (= Wc × Ta, Ta is one cycle of the clock Clk) corresponding to the number of wait times Wc has elapsed. In the write transfer process, the write transfer of the second block is started in accordance with the variable n set to “2” (step Sb21).
When the write transfer of the second block is completed at time S5, in the write transfer process, the determination result of step Sb22 becomes “Yes”, and the variable n is incremented to “3” (step Sb25). On the other hand, in the read transfer process, the determination result in step Sa19 is “Yes”, the selection signal Sel-A is inverted (step Sa20), and the fourth block corresponding to the variable “4” is the second buffer. 104b is read and transferred (Sa21, Sa22), and then the variable m is incremented to “5” (step Sa24).
When the write transfer of the second block is completed at time S5, in the write transfer process, the determination result of step Sb22 becomes “Yes”, and the variable n is incremented to “3” (step Sb25). On the other hand, in the read transfer process, the determination result in step Sa19 is “Yes”, the selection signal Sel-A is inverted (step Sa20), and the fourth block corresponding to the variable “4” is the second buffer. 104b is read and transferred (Sa21, Sa22), and then the variable m is incremented to “5” (step Sa24).

時刻S4から期間Wが経過した時刻S6に至ると、ライト転送処理においては、変数nの「3」に対応した第3ブロックのライト転送が開始される(ステップSb21)。
時刻S7で第3ブロックのライト転送が完了すると、ライト転送処理においては、ステップSb22の判別結果が「Yes」になり、変数nがインクリメントされて「4」となる(ステップSb25)。一方、リード転送処理においては、ステップSa19の判別結果が「Yes」になり、選択信号Sel-Aが反転して(ステップSa20)、変数mの「5」に対応した第5ブロックが第1バッファ104aにリード転送され(Sa21、Sa22)、この後、変数mが「6」にインクリメントされる(ステップSa24)。
When the period W elapses from time S4 to time S6, write transfer of the third block corresponding to the variable n “3” is started in the write transfer process (step Sb21).
When the write transfer of the third block is completed at time S7, in the write transfer process, the determination result in step Sb22 becomes “Yes”, and the variable n is incremented to “4” (step Sb25). On the other hand, in the read transfer process, the determination result of step Sa19 is “Yes”, the selection signal Sel-A is inverted (step Sa20), and the fifth block corresponding to the variable “5” is the first buffer. 104a is read and transferred (Sa21, Sa22), and then the variable m is incremented to “6” (step Sa24).

時刻S6から期間Wが経過した時刻S8に至ると、ライト転送処理においては、変数nの「4」に対応した第4ブロックのライト転送が開始される(ステップSb21)。
時刻S9で第4ブロックのライト転送が完了すると、ライト転送処理においては、ステップSb22の判別結果が「Yes」になり、変数nがインクリメントされて「5」となる(ステップSb25)。一方、リード転送処理においては、ステップSa19の判別結果が「Yes」になり、選択信号Sel-Aが反転して(ステップSa20)、変数mの「6」に対応した第6ブロックが第2バッファ104bにリード転送される(Sa21、Sa22)。なお、変数mの「6」は、転送回数Tcの「6」であるので、以降、変数mはインクリメントされない。
When the period W elapses from time S6 to time S8, write transfer of the fourth block corresponding to “4” of the variable n is started in the write transfer process (step Sb21).
When the write transfer of the fourth block is completed at time S9, in the write transfer process, the determination result in step Sb22 becomes “Yes”, and the variable n is incremented to “5” (step Sb25). On the other hand, in the read transfer process, the determination result in step Sa19 is “Yes”, the selection signal Sel-A is inverted (step Sa20), and the sixth block corresponding to the variable m “6” is the second buffer. 104b is read and transferred (Sa21, Sa22). Since “6” of the variable m is “6” of the transfer count Tc, the variable m is not incremented thereafter.

時刻S8から期間Wが経過した時刻S10に至ると、ライト転送処理においては、変数nの「5」に対応した第5ブロックのライト転送が開始される(ステップSb21)。
時刻S11で第5ブロックのライト転送が完了すると、ライト転送処理においては、ステップSb22の判別結果が「Yes」になり、変数nがインクリメントされて「6」となる(ステップSb25)。一方、リード転送処理においては例外処理として選択信号Sel-Aが反転され(ステップSa25)、この後、リード転送処理が終了する。
時刻S10から期間Wが経過した時刻S12に至ると、ライト転送処理においては、変数nの「6」に対応した第6ブロックのライト転送が開始される(ステップSb21)。
When the period W elapses from time S8 to time S10, the write transfer of the fifth block corresponding to “5” of the variable n is started in the write transfer process (step Sb21).
When the write transfer of the fifth block is completed at time S11, in the write transfer process, the determination result in step Sb22 becomes “Yes”, and the variable n is incremented to “6” (step Sb25). On the other hand, in the read transfer process, the selection signal Sel-A is inverted as an exception process (step Sa25), and then the read transfer process ends.
When the period W has elapsed from time S10 to time S12, write transfer of the sixth block corresponding to the variable n “6” is started in the write transfer process (step Sb21).

第6ブロックのライト転送が完了すると、ダウンカウンタ124のカウント値Q2がゼロになる(ステップSb24の判別結果が「Yes」となる)。
第6ブロックのライト転送の開始前には、アップカウンタ114のカウント値Q1はゼロにリセットされ(ステップSb20)、この後、第6ブロックのライト転送が開始される(ステップSb20)。第6ブロックのライト転送が完了したときは、カウント値Q1はゼロにリセットされてから、クロック信号Clkの1周期の時間が経過しているので、カウント値Q1が「1」にアップカウントされた状態である。このため、第6ブロックのライト転送が完了した直後は、ステップSb26の判別結果が「No」であり、DMA転送処理自体は完了しない。
本実施形態において、DMA転送処理が完了するのは、アップカウンタ114のカウント値Q1がウェイト回数Wcに達した時点、すなわち、時刻S12から期間Wが経過した時刻S13である。
このため、最終の第6バッファのライト転送が終了した時点で、次の1群の圧縮データをDMA転送する指示があったとき、当該次のDMA転送は、時刻S13以降において実行される。
また、本実施形態では、DMA転送終了時を、アップカウンタ114のカウント値Q1がウェイト回数Wcに達した時点としているのは、各ブロックをメモリ30に転送する際のデータ転送速度を一定に保つためである。
詳細には、DMA転送では、後述する図11に示されるようにメモリ帯域の割り当てが予め決まっている場合があるが、最終の第6ブロックのライト転送終了時をDMA転送終了時にすると、第5ブロックのライト転送開始から第6ブロックのライト転送終了までの期間が、他の第1〜第4ブロックと比較して短くなる。このため、第1〜第4ブロックについてはライト転送のデータ転送速度が、1フレーム当たり2ブロックであるのに対し、第5および第6ブロックについてはライト転送の実際のデータ転送速度が、1フレームよりも短い期間で2ブロックとなるので、データ転送速度の均一化が図れなくなる。これに対して、本実施形態では、DMA転送終了時を、アップカウンタ114のカウント値Q1がウェイト回数Wcに達した時刻S13としているので、第5および第6ブロックについての転送速度も、1フレーム当たり2ブロックとなり、第1〜第4ブロックについてのデータ転送速度と揃えることができる。
When the write transfer of the sixth block is completed, the count value Q2 of the down counter 124 becomes zero (the determination result in step Sb24 is “Yes”).
Prior to the start of write transfer of the sixth block, the count value Q1 of the up counter 114 is reset to zero (step Sb20), and then write transfer of the sixth block is started (step Sb20). When the write transfer of the sixth block is completed, the count value Q1 is up-counted to “1” because the time of one cycle of the clock signal Clk has elapsed since the count value Q1 was reset to zero. State. For this reason, immediately after the write transfer of the sixth block is completed, the determination result of step Sb26 is “No”, and the DMA transfer process itself is not completed.
In the present embodiment, the DMA transfer processing is completed when the count value Q1 of the up counter 114 reaches the number of wait times Wc, that is, at time S13 when the period W has elapsed from time S12.
For this reason, when there is an instruction to DMA-transfer the next group of compressed data when the final write transfer of the sixth buffer is completed, the next DMA transfer is executed after time S13.
In the present embodiment, the end of the DMA transfer is defined as the time when the count value Q1 of the up counter 114 reaches the number of wait times Wc. The data transfer rate when each block is transferred to the memory 30 is kept constant. Because.
Specifically, in the DMA transfer, as shown in FIG. 11 to be described later, there is a case where the allocation of the memory band is determined in advance, but if the end of the write transfer of the final sixth block is the end of the DMA transfer, The period from the start of block write transfer to the end of write transfer of the sixth block is shorter than that of the other first to fourth blocks. For this reason, the data transfer rate of write transfer is 2 blocks per frame for the first to fourth blocks, whereas the actual data transfer rate of write transfer is 1 frame for the fifth and sixth blocks. Therefore, the data transfer rate cannot be made uniform. On the other hand, in the present embodiment, the end of DMA transfer is set to time S13 when the count value Q1 of the up counter 114 reaches the number of wait times Wc, so that the transfer rate for the fifth and sixth blocks is also 1 frame. The number of hits is 2 blocks, which can be matched with the data transfer rate for the first to fourth blocks.

ここで、本実施形態に係るDMAコントローラ100の優位性について、従来のDMAコントローラと比較して説明する。従来のDMAコントローラ(比較例)は、CPUからDMA転送指示があった場合、転送すべき1群のデータを、バススレーブであるメモリに書き込むことが可能な最大速度で、すなわち、図9の(c)に示されるように、期間Xcにまとめて転送する。このため、比較例に係るDMAコントローラが期間XcでデータをDMA転送しているときに、当該期間Xcでは、他のバスマスタが当該メモリにアクセスすることができない。   Here, the superiority of the DMA controller 100 according to the present embodiment will be described in comparison with a conventional DMA controller. When a conventional DMA controller (comparative example) receives a DMA transfer instruction from the CPU, the group of data to be transferred can be written at the maximum speed at which data can be written into the memory that is a bus slave, that is, ( As shown in c), the data are transferred together in the period Xc. For this reason, when the DMA controller according to the comparative example performs DMA transfer of data in the period Xc, another bus master cannot access the memory in the period Xc.

特に、上述した表示処理、すなわち圧縮データをデコードし、ラスタライズして、表示させる処理では、DMAコントローラだけではなく、他のバスマスタであるCPU、デコーダ、ラスタライザ、ディスプレイコントローラがメモリにアクセスする必要がある。
このため、ある動画を表示させるための処理が実行されている場合に、例えば次に表示すべき動画の圧縮データのDMA転送がCPUによって指示されたとき、当該DMA転送によってメモリが期間Xcにわたって使用されてしまうと、他のバスマスタは一時的にメモリにアクセスすることができなくなる。
動画を表示するためには、フレーム(コマ)毎に、デコード処理、ラスタライズおよび当該ラスタライズの結果を表示する処理が滞りなく並行して実行される必要がある。比較例に係るDMAコントローラが期間Xcにわたってメモリを占有してしまうと、他のバスマスタがメモリにアクセスできなくなり、1フレームの期間で動画表示処理が滞って、いわゆるコマ落ちが発生し、動画の表示品質を低下させてしまう可能性が高くなる。
In particular, in the display process described above, that is, the process of decoding, rasterizing and displaying the compressed data, not only the DMA controller but also other CPUs such as the CPU, decoder, rasterizer, and display controller need to access the memory. .
For this reason, when processing for displaying a certain moving image is executed, for example, when the CPU instructs the DMA transfer of the compressed data of the moving image to be displayed next, the memory is used for the period Xc by the DMA transfer. If this happens, other bus masters will temporarily be unable to access the memory.
In order to display a moving image, decoding processing, rasterization, and processing for displaying the result of the rasterization need to be executed in parallel without delay for each frame (frame). When the DMA controller according to the comparative example occupies the memory for the period Xc, other bus masters cannot access the memory, and the moving image display process is delayed in one frame period, so-called frame dropping occurs, and the moving image display The possibility of degrading quality is increased.

これに対して、本実施形態に係るDMAコントローラ100によれば、(a)で示されるように、1群の圧縮データをブロックに分割するとともに、各ブロックを時間的に集中させずに離散させてメモリ30にDMA転送する。すなわち、各ブロックがウェイトサイクル数に対応した期間W毎にメモリ30にDMA転送される。このため、1つのブロックがDMA転送されると、メモリ30は他のバスマスタに解放されるので、他のバスマスタがDMAコントローラ100によるDMA転送によってメモリ30を使用できなくなるという不都合(アクセスの競合)は、従来と比較して低減される。   On the other hand, according to the DMA controller 100 according to the present embodiment, as shown in (a), a group of compressed data is divided into blocks, and each block is separated without being concentrated in time. DMA transfer to the memory 30. That is, each block is DMA-transferred to the memory 30 every period W corresponding to the number of wait cycles. For this reason, when one block is DMA-transferred, the memory 30 is released to another bus master, so that the other bus master cannot use the memory 30 by DMA transfer by the DMA controller 100 (access contention). , Reduced compared to the conventional.

次に、本実施形態に係るDMAコントローラ100の優位性について、メモリ帯域という概念で説明する。なお、ここでいうメモリ帯域とは、メモリに対して単位時間にわたって実際にアクセス可能なデータ量をいう。   Next, the superiority of the DMA controller 100 according to the present embodiment will be described based on the concept of memory bandwidth. Note that the memory bandwidth here refers to the amount of data that is actually accessible to the memory over a unit time.

図12は、単位時間でみたときに、メモリ帯域が、バスマスタ毎にどのような比率で割り当てられるかを示す図である。なお、単位時間については、上述したように1フレーム(16.7ミリ秒)としている。
同図の(a)は、メモリ帯域の合計を100%としたときに、DMAコントローラ(DMAC)によるDMA転送が実行されない場合に、各バスマスタに割り当てられる比率の一例を示した図である。この図では、DMAコントローラ以外のCPU、ラスタライザ、デコーダおよびディスプレイコントローラが、図に示されるパーセンテージを上限として、メモリ30にアクセスすることを示している。
FIG. 12 is a diagram showing at what ratio the memory bandwidth is allocated for each bus master when viewed in unit time. The unit time is one frame (16.7 milliseconds) as described above.
(A) of the figure shows an example of a ratio assigned to each bus master when the DMA transfer by the DMA controller (DMAC) is not executed when the total memory bandwidth is 100%. This figure shows that the CPU, rasterizer, decoder, and display controller other than the DMA controller access the memory 30 up to the percentage shown in the figure.

同図の(b)は、比較例に係るDMAコントローラにおいて、DMA転送が実行される場合の割り当てを、当該DMAコントローラを含めて示す図である。
この図では、比較例に係るDMAコントローラがDMA転送によって、メモリ帯域の35%を使用したことを示している。一方、DMA転送によってメモリ帯域のうち、他のバスマスタへの割り当ては、同図に示されるように減少する。すなわち、他のバスマスタであるCPU、ラスタライザ、デコーダおよびディスプレイコントローラについては、それぞれDMAコントローラによってメモリ帯域が奪われることになる。このため、他のデバイスでは、処理が滞りやすくなり、コマ落ちの原因となる。
(B) of the figure is a diagram showing the assignment when DMA transfer is executed in the DMA controller according to the comparative example, including the DMA controller.
This figure shows that the DMA controller according to the comparative example uses 35% of the memory bandwidth by DMA transfer. On the other hand, the allocation to other bus masters in the memory bandwidth by DMA transfer decreases as shown in FIG. That is, the CPU bandwidth, the rasterizer, the decoder, and the display controller, which are other bus masters, each take the memory bandwidth by the DMA controller. For this reason, in other devices, processing is likely to be delayed, which causes frame dropping.

なお、比較例に係るDMAコントローラがDMA転送によってメモリ帯域の35%を使用することが事前に判っている場合、コマ落ちを解消するためには、図13の(a)に示されるように、DMA転送が実行されないときにおいてメモリ帯域に予め35%の空きを設けておくとともに、他のバスマスタについてはメモリ帯域の割り当てを低くし、処理の適切化を図ってコマ落ちが発生しないことを担保しておく。一方、同図の(b)に示されるように、DMA転送が実行されるときには、DMAコントローラに当該35%を割り当てて、他のバスマスタについては、DMA転送によって、メモリ帯域の割り当てが変動しないようにする構成も考えられる。
ただし、この構成では、DMA転送しない場合において、メモリ帯域に設ける空きが非常に無駄であり、他のバスマスタの転送効率が低下してしまう。
If it is known in advance that the DMA controller according to the comparative example uses 35% of the memory bandwidth by DMA transfer, in order to eliminate the frame drop, as shown in FIG. When DMA transfer is not executed, 35% of the memory bandwidth is reserved in advance, and for other bus masters, the allocation of the memory bandwidth is lowered to ensure that the processing is optimized and frame dropping does not occur. Keep it. On the other hand, as shown in (b) of the figure, when DMA transfer is executed, the 35% is allocated to the DMA controller, and for other bus masters, the allocation of memory bandwidth is not changed by DMA transfer. It is also possible to adopt a configuration that makes
However, in this configuration, when DMA transfer is not performed, the space provided in the memory band is very useless, and the transfer efficiency of other bus masters is reduced.

一方、本実施形態に係るDMAコントローラ100において、DMA転送が実行されない場合、DMAコントローラ100以外の他のバスマスタに割り当てられる比率は、図10の(a)に示されるように、比較例に係るDMAコントローラと同じである(図12(a)参照)。
ただし、本実施形態に係るDMAコントローラ100では、1群の圧縮データをブロックに分割して、時間的に離散させて各ブロックをメモリ30にDMA転送するので、図10の(b)に示されるように、DMAコントローラ100によって占められるメモリ帯域の比率は、例えば5%で済み、比較例(図12の(b)参照)に対して低くなる。
このため、本実施形態に係るDMAコントローラ100において、図11の(a)に示されるように、DMA転送が実行されないときに、メモリ帯域に予め5%の空きを設けておく一方、同図の(b)に示されるように、DMA転送が実行されるときには、当該空きの帯域部分をDMAコントローラ100に割り当てる構成にして良い。このような構成であっても、DMA転送しない場合において、メモリ帯域に設ける無駄な空きが、比較例(図13の(a)参照)に対して少なくすることができる。
なお、DMAコントローラに割り当てるメモリ帯域の5%とは、上述した例でいえば、20サイクルのウェイトにつき、1ブロックを(1ウェイトで)メモリ30にDMA転送する場合をいう。
On the other hand, in the DMA controller 100 according to the present embodiment, when the DMA transfer is not executed, the ratio assigned to other bus masters other than the DMA controller 100 is the DMA ratio according to the comparative example, as shown in FIG. It is the same as the controller (see FIG. 12A).
However, in the DMA controller 100 according to the present embodiment, a group of compressed data is divided into blocks, and each block is DMA-transferred to the memory 30 by being temporally discrete, so that it is shown in FIG. As described above, the ratio of the memory bandwidth occupied by the DMA controller 100 is 5%, for example, and is lower than that of the comparative example (see FIG. 12B).
For this reason, in the DMA controller 100 according to the present embodiment, as shown in FIG. 11A, when DMA transfer is not executed, a 5% free space is provided in advance in the memory bandwidth. As shown in (b), when the DMA transfer is executed, the empty band portion may be assigned to the DMA controller 100. Even with such a configuration, when DMA transfer is not performed, useless empty space provided in the memory band can be reduced compared to the comparative example (see FIG. 13A).
In the above example, 5% of the memory bandwidth allocated to the DMA controller refers to the case where one block is DMA-transferred to the memory 30 (with one wait) for a 20-cycle wait.

本発明は、上述した実施形態に限定されるものではなく、例えば次に述べるような各種の応用・変形が可能である。また、次に述べる応用・変形の態様は、任意に選択された一または複数を適宜に組み合わせることもできる。   The present invention is not limited to the above-described embodiments, and various applications and modifications as described below are possible, for example. In addition, one or more arbitrarily selected aspects of application / deformation described below can be appropriately combined.

あるブロックのライト転送が完了すると、メモリ30が解放されるので、期間Wが経過して次のブロックのライト転送しようとするときに、他のバスマスタがメモリ30にアクセスしている場合がある。この場合、上述した実施形態では、ステップSb12、Sb19の判別結果が「No」になるので、転送制御部110は、当該ブロックのライト転送を、バスBが他のバスマスタから解放されるまで待機させる。このとき、転送制御部110は、待機させた時間αを計測するとともに、当該ブロックの次のブロックのライト転送を、期間Wよりも時間αだけ早めて、実行する構成としても良い。
例えば、図9の(b)において、第2ブロックのライト転送が、他のバスマスタによるメモリ30のアクセスによって時間αだけ待機させられた場合、次の第3ブロックのライト転送を期間αだけ早めて実行する構成としても良い。すなわち、第2ブロックのライト転送が第1ブロックのライト転送から期間(W+α)経過した時点で開始した場合、次の第3ブロックのライト転送を、第2ブロックのライト転送から期間(W−α)経過した時点で実行する構成としても良い。
このような構成によれば、あるブロックのライト転送が、他のバスマスタによるメモリ30のアクセスによって遅延しても、当該ブロックの次のライト転送が時間的に早められるので、単位時間にDMA転送されるブロック数を一定に保つことができる。すなわち、DMAコントローラ100によるデータ転送速度を均一に保つことができる。
なお、転送制御部110は、あるブロックのライト転送を時間αだけ待機させた場合であっても、次のブロックのライト転送を、期間Wよりも時間αだけ早めない構成としても良い。この構成によれば、単位時間にDMA転送されるブロック数、すなわちDMAコントローラ100によるDMA転送のデータ転送速度を、予め定められた値よりも抑えることができる。
When the write transfer of a certain block is completed, the memory 30 is released, so that another bus master may be accessing the memory 30 when the write transfer of the next block is attempted after the period W elapses. In this case, in the above-described embodiment, the determination result in Steps Sb12 and Sb19 is “No”, so the transfer control unit 110 waits for the write transfer of the block until the bus B is released from another bus master. . At this time, the transfer control unit 110 may measure the waiting time α and execute write transfer of the block next to the block ahead of the period W by the time α.
For example, in FIG. 9B, when the write transfer of the second block is made to wait for the time α due to the access of the memory 30 by another bus master, the write transfer of the next third block is advanced by the period α. It is good also as a structure to perform. That is, when the write transfer of the second block starts when the period (W + α) has elapsed from the write transfer of the first block, the next third block write transfer is performed after the write transfer of the second block (W−α). ) It may be configured to be executed when it has elapsed.
According to such a configuration, even if the write transfer of a block is delayed by the access of the memory 30 by another bus master, the next write transfer of the block is advanced in time, so that the DMA transfer is performed in a unit time. The number of blocks to be maintained can be kept constant. That is, the data transfer rate by the DMA controller 100 can be kept uniform.
Note that the transfer control unit 110 may be configured such that the write transfer of the next block is not advanced earlier than the period W by the time α even when the write transfer of a certain block is waited for the time α. According to this configuration, the number of blocks that are DMA-transferred per unit time, that is, the data transfer rate of DMA transfer by the DMA controller 100 can be suppressed from a predetermined value.

また、ブロックの転送が待機させられた場合に次のブロックの転送のウェイトを減少させる/させないに関わらず、転送制御部110は、転送開始から転送完了までの時間を所定のタイマーにて計測するようにしても良い。こうすることで、実際のデータ転送速度を求めることが出来、当初の要求転送速度との差を定量的に評価することにより、システムのボトルネック解消に役立てることができる。   In addition, when the block transfer is made to wait, the transfer control unit 110 measures the time from the start of transfer to the completion of transfer with a predetermined timer regardless of whether or not to reduce the transfer weight of the next block. You may do it. In this way, the actual data transfer rate can be obtained, and by quantitatively evaluating the difference from the initial required transfer rate, it can be used to eliminate the bottleneck of the system.

実施形態では、圧縮データの各ブロックをバッファ104からメモリ30に転送するDMAコントローラ100を例とって説明したが、他のバスマスタにも適用可能である。例えば、デコーダ40や、ラスタライザ50、ディスプレイコントローラ60にバッファを内蔵させて、バススレーブであるメモリ30からブロック毎にデータを読み出して、内蔵バッファに格納させる構成としても良い。
すなわち、本発明は、バッファ104に格納させたブロックを転送先のバススレーブ(メモリ30)に転送する場合のみならず、転送元のバススレーブ(メモリ30)から内蔵バッファに転送する場合にも適用可能である。なお、転送元のバススレーブから内蔵バッファに転送する場合の動作については、DMAコントローラ100によるライト転送において転送元と転送先とが異なるだけでほぼ同様な動作となる。
In the embodiment, the DMA controller 100 that transfers each block of compressed data from the buffer 104 to the memory 30 has been described as an example. However, the present invention is applicable to other bus masters. For example, a buffer may be built in the decoder 40, the rasterizer 50, and the display controller 60, and data may be read for each block from the memory 30 that is a bus slave and stored in the built-in buffer.
In other words, the present invention is applied not only when the block stored in the buffer 104 is transferred to the transfer destination bus slave (memory 30) but also when the block is transferred from the transfer source bus slave (memory 30) to the internal buffer. Is possible. The operation when transferring from the transfer source bus slave to the built-in buffer is substantially the same except that the transfer source and the transfer destination are different in the write transfer by the DMA controller 100.

転送制御部110には、CPU10からDMA転送指示があったときに、当該指示に含まれるウェイト回数Wcについては、予め用意された複数種類のうち、CPU10がデータ転送速度に応じた1種類を選択して供給する構成としても良い。あるいは、転送制御部110のレジスタ112に、データ転送速度に応じた複数種類のウェイト回数を予めセットしておく一方、CPU10などの他のバスマスタからのイベント信号によって、複数種類のウェイト回数のうち、いずれかに変更して、カウント値Q1と比較に用いる構成としても良い。
このようにウェイトを変更する構成によって、DMA転送のデータ転送速度を動的に制御することができる。
When there is a DMA transfer instruction from the CPU 10 to the transfer control unit 110, the CPU 10 selects one type according to the data transfer speed from among a plurality of types of wait times Wc included in the instruction. It is good also as a structure which supplies it. Alternatively, a plurality of types of wait times corresponding to the data transfer speed are set in advance in the register 112 of the transfer control unit 110, while an event signal from another bus master such as the CPU 10 It is good also as a structure which changes to either and is used for count value Q1 and a comparison.
The data transfer rate of the DMA transfer can be dynamically controlled by such a configuration that changes the weight.

また、実施形態のように動画を表示させる場合、表示部70では、帰線期間(水平帰線期間および垂直帰線期間)が存在する。この帰線期間では、CPU10、デコーダ40、ラスタライザ50およびディスプレイコントローラ60によるバスBを介したメモリ30のアクセス頻度が低下する。このため、DMAコントローラ100は、帰線期間になった場合にデータの転送速度を走査期間よりも高めて、例えばウェイト回数Wcを少なくしてセットする構成としても良い。   Further, when displaying a moving image as in the embodiment, the display unit 70 has a blanking period (horizontal blanking period and vertical blanking period). In this blanking period, the access frequency of the memory 30 via the bus B by the CPU 10, the decoder 40, the rasterizer 50, and the display controller 60 decreases. Therefore, the DMA controller 100 may be configured to set the data transfer rate higher than the scanning period when the blanking period is reached, for example, by reducing the number of wait times Wc.

実施形態では、ライト転送処理として図6および図7に示されるような内容としたが、あるブロックを一方のバッファから読み出すライト転送開始時に、次のブロックを他方のバッファに記憶させるリード転送を開始させる処理であっても良い。
また、実施形態では、バッファ104を第1バッファ104aと第2バッファ104bとに分けたが、1群のデータをブロック化し、時間的に離散させてライト転送することができれば良いので、1つのバッファを用いる構成でも良い。
なお、DMA転送の対象は、圧縮データに限られず、圧縮していない動画データでも良いし、動画以外のデータであっても良い。
In the embodiment, the contents as shown in FIG. 6 and FIG. 7 are used as the write transfer process, but at the start of the write transfer for reading a certain block from one buffer, the read transfer for storing the next block in the other buffer is started. It may be a process to be performed.
Further, in the embodiment, the buffer 104 is divided into the first buffer 104a and the second buffer 104b. However, it is sufficient that one group of data can be blocked and temporally discretely written and transferred. A configuration using may be used.
The target of DMA transfer is not limited to compressed data, and may be uncompressed moving image data or data other than moving images.

10…CPU、20…ROM、30…メモリ、40…デコーダ、50…ラスタライザ、60…ディスプレイコントローラ、100…DMAコントローラ、104…バッファ、104a…第1バッファ、104b…第2バッファ。
10 ... CPU, 20 ... ROM, 30 ... memory, 40 ... decoder, 50 ... rasterizer, 60 ... display controller, 100 ... DMA controller, 104 ... buffer, 104a ... first buffer, 104b ... second buffer.

Claims (5)

1群のデータを転送元のバススレーブから転送先のバススレーブに転送するDMAコントローラであって、
バッファと、
前記1群のデータを、所定のデータ量のブロックを単位として前記転送元のバススレーブからバッファに格納させる動作、または、前記バッファに格納させたブロックを前記転送先のバススレーブに転送する動作、を時間的に分散させて実行する転送制御部と、
を具備することを特徴とするDMAコントローラ。
A DMA controller for transferring a group of data from a transfer source bus slave to a transfer destination bus slave,
A buffer,
An operation of storing the group of data in a buffer from the transfer source bus slave in units of blocks of a predetermined amount of data, or an operation of transferring the block stored in the buffer to the transfer destination bus slave; A transfer control unit that distributes and executes
A DMA controller comprising:
前記バッファは、前記所定のデータ量の記憶容量を有する第1バッファおよび第2バッファを含み、
前記転送制御部は、前記第1バッファまたは第2バッファの一方に対して前記転送元のバススレーブからのブロックを格納させた場合に、前記第1バッファまたは第2バッファの他方からブロックを読み出して、前記転送先のバススレーブに転送する
ことを特徴とする請求項1に記載のDMAコントローラ。
The buffer includes a first buffer and a second buffer having a storage capacity of the predetermined amount of data,
The transfer control unit reads a block from the other of the first buffer or the second buffer when the block from the bus slave of the transfer source is stored in one of the first buffer or the second buffer. The DMA controller according to claim 1, wherein the transfer is performed to the bus slave of the transfer destination.
前記転送制御部は、
所定のデータ転送速度に応じた期間のウェイトをかけてから、各ブロックを前記転送先のバススレーブに転送するとともに、
前記一のブロックを前記転送先のバススレーブに転送するのを遅らせた場合、当該一のブロックの次のブロックを前記転送先のバススレーブに転送するまでのウェイトを減少させる
ことを特徴とする請求項1または2に記載のDMAコントローラ。
The transfer control unit
After applying a period of time according to a predetermined data transfer rate, each block is transferred to the transfer destination bus slave,
When the transfer of the one block to the transfer destination bus slave is delayed, a wait time until the next block of the one block is transferred to the transfer destination bus slave is reduced. Item 3. The DMA controller according to Item 1 or 2.
前記転送制御部は、
所定のデータ転送速度に応じた期間のウェイトをかけてから、各ブロックを前記転送先のバススレーブに転送するとともに、
前記一のブロックを前記転送先のバススレーブに転送するのを遅らせた場合、当該一のブロックの次のブロックを前記転送先のバススレーブに転送するまでのウェイトを減少させない
ことを特徴とする請求項1または2に記載のDMAコントローラ。
The transfer control unit
After applying a period of time according to a predetermined data transfer rate, each block is transferred to the transfer destination bus slave,
When the transfer of the one block to the transfer destination bus slave is delayed, the wait time until the next block of the one block is transferred to the transfer destination bus slave is not reduced. Item 3. The DMA controller according to Item 1 or 2.
前記転送制御部は、
所定のデータ転送速度に応じた期間のウェイトをかけてから、各ブロックを前記転送先のバススレーブに転送するとともに、
外部から入力されるイベント信号によって前記ウェイトを変更する
ことを特徴とする請求項1または2に記載のDMAコントローラ。
The transfer control unit
After applying a period of time according to a predetermined data transfer rate, each block is transferred to the transfer destination bus slave,
The DMA controller according to claim 1, wherein the wait is changed according to an event signal input from outside.
JP2013238836A 2013-11-19 2013-11-19 DMA controller Expired - Fee Related JP6232964B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013238836A JP6232964B2 (en) 2013-11-19 2013-11-19 DMA controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013238836A JP6232964B2 (en) 2013-11-19 2013-11-19 DMA controller

Publications (2)

Publication Number Publication Date
JP2015099477A true JP2015099477A (en) 2015-05-28
JP6232964B2 JP6232964B2 (en) 2017-11-22

Family

ID=53376057

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013238836A Expired - Fee Related JP6232964B2 (en) 2013-11-19 2013-11-19 DMA controller

Country Status (1)

Country Link
JP (1) JP6232964B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10565152B2 (en) 2017-04-27 2020-02-18 Canon Kabushiki Kaisha Transfer device, control device, transfer method, and multifunction peripheral

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004079583A1 (en) * 2003-03-05 2004-09-16 Fujitsu Limited Data transfer controller and dma data transfer control method
JP2006285300A (en) * 2005-03-31 2006-10-19 Toshiba Corp Signal transfer device and signal transfer method
JP2007206799A (en) * 2006-01-31 2007-08-16 Toshiba Corp Data transfer device, information recording reproduction device and data transfer method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004079583A1 (en) * 2003-03-05 2004-09-16 Fujitsu Limited Data transfer controller and dma data transfer control method
JP2006285300A (en) * 2005-03-31 2006-10-19 Toshiba Corp Signal transfer device and signal transfer method
JP2007206799A (en) * 2006-01-31 2007-08-16 Toshiba Corp Data transfer device, information recording reproduction device and data transfer method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10565152B2 (en) 2017-04-27 2020-02-18 Canon Kabushiki Kaisha Transfer device, control device, transfer method, and multifunction peripheral

Also Published As

Publication number Publication date
JP6232964B2 (en) 2017-11-22

Similar Documents

Publication Publication Date Title
EP3553646A1 (en) Operation instruction scheduling method and apparatus for nand flash memory device
US20090300324A1 (en) Array type processor and data processing system
US8095744B2 (en) Device for controlling access from a plurality of masters to shared memory composed of a plurality of banks each having a plurality of pages
JPH0962563A (en) Shared memory system, parallel processor, and memory lsi
JP4416694B2 (en) Data transfer arbitration device and data transfer arbitration method
JP2004287757A (en) Dma controller
CN106951488B (en) Log recording method and device
CN103543954A (en) Data storage management method and device
JP6053384B2 (en) Information processing apparatus, memory control apparatus, and control method thereof
JP5707911B2 (en) Data transfer control device
US6606691B2 (en) System integrating agents having different resource-accessing schemes
JP6232964B2 (en) DMA controller
US20180300268A1 (en) Cache system and associated method
US10983937B2 (en) Method for managing access to a shared bus and corresponding electronic device
CA2323116A1 (en) Graphic processor having multiple geometric operation units and method of processing data thereby
CN111459879A (en) Data processing method and system on chip
JP6142783B2 (en) Memory controller, information processing apparatus, and memory controller control method
KR101420290B1 (en) Bus arbiter capable of grouping transactions, bus device and system including the same
US9747231B2 (en) Bus access arbiter and method of bus arbitration
JP4126959B2 (en) Data transfer system and access monitor device
US20140297972A1 (en) Memory control device and memory control method
JP4335327B2 (en) Arbitration apparatus and method
JP2007206924A (en) Arithmetic processing system
JP7435055B2 (en) Communication device, control method for communication device, and integrated circuit
US10733128B2 (en) Processor and data transfer method

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20150410

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160921

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170704

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170830

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171009

R151 Written notification of patent or utility model registration

Ref document number: 6232964

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees