JP5062950B2 - Direct memory access device and control method thereof - Google Patents
Direct memory access device and control method thereof Download PDFInfo
- Publication number
- JP5062950B2 JP5062950B2 JP2004305703A JP2004305703A JP5062950B2 JP 5062950 B2 JP5062950 B2 JP 5062950B2 JP 2004305703 A JP2004305703 A JP 2004305703A JP 2004305703 A JP2004305703 A JP 2004305703A JP 5062950 B2 JP5062950 B2 JP 5062950B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- program counter
- transfer
- output
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Description
本発明はダイレクトメモリアクセス装置及びその制御方法に関するものである。 The present invention relates to a direct memory access device and a control method thereof.
従来より、データを生成しメモリに書き込むデバイス、または、メモリからデータを読み出しデータ処理を行うデバイスと、メモリ間のデータ転送を、CPUに負荷をかけることなく実現するために、様々なダイレクトメモリアクセス装置が提案されている。代表的なダイレクトメモリアクセス装置においては、転送先または転送元のメモリアドレス、転送方向(デバイスからメモリ、メモリからデバイス)、転送するデータのサイズ等を予めCPUにより設定し起動をかけると、設定されたメモリアドレスを順次更新しながら設定されたサイズのデータを転送し終わるまでCPUの介在なしにデバイスとメモリ間のデータ転送を行う。データ転送が完了すると、ダイレクトメモリアクセス装置はCPUに割り込みを通知し、CPUはデータ転送完了を知り、転送されたデータの処理を行う。さらに、引き続き別のデータ転送を設定し起動するなどする(特許文献1参照)。 Various direct memory accesses have been used to realize data transfer between a device that generates data and writes it to memory, or a device that reads data from the memory and processes data without placing a load on the CPU. A device has been proposed. In a typical direct memory access device, the memory address of the transfer destination or transfer source, the transfer direction (device to memory, memory to device), the size of data to be transferred, etc. are set by the CPU in advance and set. The data transfer between the device and the memory is performed without intervention of the CPU until the data of the set size is transferred while sequentially updating the memory addresses. When the data transfer is completed, the direct memory access device notifies the CPU of an interrupt, and the CPU knows the completion of the data transfer and processes the transferred data. Furthermore, another data transfer is continuously set and activated (see Patent Document 1).
このようなダイレクトメモリアクセス装置を用いてデバイスからメモリにデータ転送を行いつつ、転送されたメモリ上のデータをさらに別のデバイスに転送してデータ処理を行うことも多い。つまり、メモリを、2つのデバイスの処理速度緩衝バッファとして用いたり、2つのデバイスのデータアクセス順が異なる場合の一時バッファとして用いたりする。例えば、撮像素子により取り込まれた画像を圧縮符号化する処理において、撮像素子により取り込まれた画像データをダイレクトメモリアクセス装置によりラスタ順にメモリに転送しつつ、転送された矩形領域データを異なるダイレクトメモリアクセス装置により読み出して圧縮符号化する。この場合、撮像素子のデータ取り込み速度と圧縮符号化装置の処理速度が異なり、かつラスタ・ブロック変換が必要であるため、画像データは一時的にメモリに格納される。 In many cases, data is transferred from the device to the memory using such a direct memory access device, and the transferred data on the memory is further transferred to another device for data processing. That is, the memory is used as a processing speed buffer buffer for two devices, or as a temporary buffer when the data access order of the two devices is different. For example, in the process of compressing and encoding the image captured by the image sensor, the image data captured by the image sensor is transferred to the memory in raster order by the direct memory access device, and the transferred rectangular area data is accessed by a different direct memory access. The data is read out by the apparatus and compressed and encoded. In this case, the image data is temporarily stored in the memory because the data capturing speed of the image sensor is different from the processing speed of the compression encoding apparatus and raster block conversion is necessary.
本データ転送例において、ダイレクトメモリアクセス装置の設定手順は以下のようになる。撮像素子のデータ取り込み用のダイレクトメモリアクセス装置をDMA1、圧縮符号化データ転送用のダイレクトメモリアクセス装置をDMA2とする。全画面分の画像データを格納するためのメモリサイズは巨大であり価格も高いため、通常、画像の一部分のみが格納可能なサイズのメモリを用い、ダブルバッファ動作させることによって間断ないデータ転送を実現する。 In this data transfer example, the setting procedure of the direct memory access device is as follows. The direct memory access device for capturing data in the image sensor is designated as DMA1, and the direct memory access device for transferring compression-coded data is designated as DMA2. Since the memory size for storing image data for all screens is huge and expensive, it is usually possible to transfer data continuously by using a double-buffered memory with a size that can store only a part of the image. To do.
CPUはまず、数ラスタ分の画像データを撮像素子からメモリ(バッファ1)に転送するための設定を、DMA1に対して行い、起動をかける。DMA1はデータ転送を完了すると、割り込みによりCPUに通知する。CPUはバッファ1に格納された数ラスタ分のデータを圧縮符号化処理部に転送するための設定を、DMA2に対して行い、起動をかけるとともに、次の数ラスタ分の画像データを撮像素子からメモリ(バッファ2)に転送するための設定を、DMA1に対して行い、起動をかける。この例では、圧縮符号処理の方が撮像素子からのデータ転送よりも常に早いものとする。そうすると、DMA2の完了割り込みは無視することができて、CPUはDMA1の完了割り込みを受信するたびに、DMA1,DMA2に対してバッファ1、バッファ2が交互に使用されるように設定を行い、起動をかければよい。
しかしながら、従来のダイレクトメモリアクセス装置によるダブルバッファ操作は、DMA完了毎にCPUによる2つのダイレクトメモリアクセス装置の設定、起動が必要となるためCPUの負荷が増大するという問題点があった。また、CPUの割り込みレイテンシによるオーバーヘッドのために、データ転送レートが低下するという問題もあった。さらに、ダブルバッファ動作の例においては、圧縮符号処理の方が撮像素子からのデータ転送よりも常に早いものと仮定したが、どちらの転送が早いのかが不確定である場合、CPUはDMA2の完了割り込みも処理する必要があり、どちらが早く終わったかによって処理を切り替える必要がある。この場合には、CPUの負荷はますます増大する。 However, the double buffer operation by the conventional direct memory access device has a problem that the load on the CPU increases because it is necessary to set and activate the two direct memory access devices by the CPU every time DMA is completed. There is also a problem that the data transfer rate is lowered due to the overhead due to the interrupt latency of the CPU. Further, in the example of the double buffer operation, it is assumed that the compression code processing is always faster than the data transfer from the image sensor. However, if it is uncertain which transfer is faster, the CPU completes the DMA2. Interrupts also need to be processed, and processing must be switched depending on which ended earlier. In this case, the load on the CPU increases more and more.
CPUの負荷を軽減するために、それぞれのダイレクトメモリアクセス装置の転送データ量を監視して、データ転送を中断、再開するための専用ハードウエアを装備する方法も考えられるが、様々なアクセスパターンによる複雑なデータ転送を実行するためには、専用ハードウエアが複雑化し回路規模が増大してしまうという問題点があった。また、ハードウエア開発後に新たなアクセスパターンに対応する必要が生じた場合に、ハードウエアを作り直す必要があるという問題点があった。 In order to reduce the load on the CPU, it is possible to monitor the transfer data amount of each direct memory access device, and to equip the dedicated hardware for interrupting and restarting the data transfer. In order to execute complicated data transfer, there is a problem that the dedicated hardware becomes complicated and the circuit scale increases. In addition, when it becomes necessary to cope with a new access pattern after hardware development, there is a problem that it is necessary to recreate the hardware.
本発明は上記従来例に鑑みてなされたもので、高機能かつ高性能のダイレクトメモリアクセス転送を、CPUに対する負荷を増大させることなく、かつ、回路規模を増大することなく実現することを目的とする。 The present invention has been made in view of the above-described conventional example, and has an object to realize high-function and high-performance direct memory access transfer without increasing the load on the CPU and without increasing the circuit scale. To do.
以上の目的を達成するために、本発明によるダイレクトメモリアクセス装置においては、
メモリバスに接続されたメモリと、前記メモリとの間でデータを転送可能な複数のデバイスと、に接続されるダイレクトメモリアクセス装置であって、
複数のプログラムカウンタと、
前記複数のプログラムカウンタを1つずつ順に選択するプログラムカウンタ選択手段と、
前記ダイレクトメモリアクセス装置の起動に際して、前記メモリ及び前記デバイスのそれぞれが転送元及び転送先として示される転送命令を含む一連の命令が格納される命令メモリと、
前記プログラムカウンタ選択手段で選択されたプログラムカウンタが示すアドレスに格納されている前記命令メモリの命令を出力する出力手段と、
前記出力手段から出力された転送命令の示す前記転送元及び転送先に応じて、前記デバイスと前記メモリ間のダイレクトメモリアクセスによるデータ転送を実行するデータ転送実行手段と、
を備えることを特徴とする。
In order to achieve the above object, in the direct memory access device according to the present invention,
A direct memory access device connected to a memory connected to a memory bus and a plurality of devices capable of transferring data between the memories,
Multiple program counters,
Program counter selection means for sequentially selecting the plurality of program counters one by one;
When starting up the direct memory access device, an instruction memory storing a series of instructions including a transfer instruction in which each of the memory and the device is indicated as a transfer source and a transfer destination;
Output means for outputting an instruction of the instruction memory stored at an address indicated by the program counter selected by the program counter selection means;
Data transfer execution means for executing data transfer by direct memory access between the device and the memory in accordance with the transfer source and the transfer destination indicated by the transfer instruction output from the output means;
It is characterized by providing.
上記目的を達成するため、本発明に係る方法は、
メモリバスに接続されたメモリと、前記メモリとの間でデータを転送可能な複数のデバイスと、複数のプログラムカウンタと、ダイレクトメモリアクセス装置の起動に際して前記メモリ及び前記デバイスのそれぞれが転送元及び転送先として示される転送命令を含む一連の命令が格納される命令メモリとを備えたダイレクトメモリアクセス装置の制御方法であって、
前記複数のプログラムカウンタを1つずつ順に選択するプログラムカウンタ選択工程と、
前記命令メモリにおいて、前記プログラムカウンタ選択工程で選択されたプログラムカウンタが示すアドレスに格納されている命令を出力する出力工程と、
前記出力工程で出力された転送命令の示す前記転送先及び転送元に応じて前記デバイスと前記メモリ間のダイレクトメモリアクセスによるデータ転送を実行するデータ転送実行工程と、
を備えることを特徴とする。
In order to achieve the above object, the method according to the present invention comprises:
A memory connected to a memory bus, a plurality of devices capable of transferring data to and from the memory, a plurality of program counters, and each of the memory and the device when the direct memory access device is activated A control method of a direct memory access device comprising an instruction memory in which a series of instructions including a transfer instruction shown as above is stored,
A program counter selection step of sequentially selecting the plurality of program counters one by one;
In the instruction memory, an output step of outputting an instruction stored at an address indicated by the program counter selected in the program counter selection step;
A data transfer execution step of executing data transfer by direct memory access between the device and the memory according to the transfer destination and transfer source indicated by the transfer instruction output in the output step;
It is characterized by providing.
本発明のダイレクトメモリアクセス装置によれば、高機能かつ高性能のダイレクトメモリアクセス転送を、CPUに対する負荷を増大させることなく、かつ、回路規模を増大することなく実現可能である。特に、ダブルバッファ等を用いて複数のデータ転送を同期を取りながら実行する際に、CPUの関与を必要としないため、システム全体の性能が向上するという効果がある。 According to the direct memory access device of the present invention, high-function and high-performance direct memory access transfer can be realized without increasing the load on the CPU and without increasing the circuit scale. In particular, there is an effect that the performance of the entire system is improved because the CPU is not involved when performing a plurality of data transfers using a double buffer or the like while synchronizing them.
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。 Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the drawings. However, the constituent elements described in this embodiment are merely examples, and are not intended to limit the scope of the present invention only to them.
(概要)
本実施形態に係るダイレクトメモリアクセス装置は、簡易な構成で、様々なアクセスパターンによる複雑な複数のデータ転送をコンカレントにかつ同期を取りながら実行するためのものである。
(Overview)
The direct memory access device according to the present embodiment is for executing a plurality of complex data transfers with various access patterns in a concurrent manner while synchronizing with a simple configuration.
この目的のため、複数のプログラムカウンタを備え、プログラムカウンタが順次参照するデータ転送命令に従い、複数のDMA要求に対応するDMA転送が実行される。参照されるデータ転送命令列は予め所定のメモリに格納されている。 For this purpose, a plurality of program counters are provided, and DMA transfers corresponding to a plurality of DMA requests are executed in accordance with data transfer instructions sequentially referred to by the program counters. The data transfer instruction sequence to be referred to is stored in advance in a predetermined memory.
すなわち、1つのデータ転送実行部に対し、命令メモリを複数の領域に分け、複数の独立したプログラムを格納可能とし、それぞれの領域に対応する複数のプログラムカウンタを設けて、各プログラムの進行を独立に制御する。これにより、複数のデバイスからのデータ転送要求毎に異なるアクセスパターンをプログラム可能となっている。さらに、複数のプログラムカウンタをデータ転送毎に選択することで、複数のプログラムを時分割処理することができ、マルチタスクを可能としている。 That is, for one data transfer execution unit, the instruction memory is divided into a plurality of areas, a plurality of independent programs can be stored, a plurality of program counters corresponding to each area are provided, and the progress of each program is independent. To control. Thereby, different access patterns can be programmed for each data transfer request from a plurality of devices. Furthermore, by selecting a plurality of program counters for each data transfer, a plurality of programs can be processed in a time-sharing manner, thereby enabling multitasking.
また、あるプログラムカウンタの参照するデータ転送命令のソースまたはデスティネーションがDMAのデータポートでありかつDMA要求が無い場合、このプログラムカウンタは休眠状態となり、他のプログラムカウンタの参照する命令が実行される。DMAデータポートのDMA要求イベントが発生すると、休眠状態のプログラムカウンタは実行状態に復帰する。 When the source or destination of a data transfer instruction referred to by a program counter is a DMA data port and there is no DMA request, this program counter enters a sleep state, and an instruction referred to by another program counter is executed. . When a DMA request event of the DMA data port occurs, the dormant program counter returns to the execution state.
すなわち、ダイレクトメモリアクセスの対象となるデバイスからの転送要求信号を監視して、転送命令の可否を判断し、転送命令に対応する転送要求がデバイスから出力されていない場合には、データ転送を出口側(転送実行部)で抑制し、ノットレディーなデバイスに対するデータ転送を回避している。また、この場合更に、入口側(プログラムカウンタの選択)でも制限を加え、無駄な命令の実行を回避し全体としての処理速度の向上を図っている。 That is, the transfer request signal from the device subject to direct memory access is monitored to determine whether or not the transfer instruction is possible. If the transfer request corresponding to the transfer instruction is not output from the device, the data transfer is exited. Data transfer to a not-ready device is avoided. Further, in this case, a restriction is also imposed on the entrance side (selection of the program counter) to avoid the execution of useless instructions and improve the overall processing speed.
さらにデータ転送命令の他に、特定のプログラムカウンタを明示的に休眠させる命令と休眠中のプログラムカウンタを実行状態に復帰させる命令を備える。つまり、プログラムの中断、再開の命令を予めプログラム可能に用意しておき、そのような命令に応じて、プログラムカウンタの選択を制御する。 Further, in addition to the data transfer instruction, an instruction for explicitly sleeping a specific program counter and an instruction for returning a sleeping program counter to an execution state are provided. That is, program interruption and restart instructions are prepared in advance so as to be programmable, and the selection of the program counter is controlled in accordance with such instructions.
このようにすることで、命令メモリに対するプログラムの書き込み以外にCPUの関与無しに、複数のデータ転送を同期を取りながら実行することを実現する。特に、ダブルバッファ等を用いて複数のデータ転送を同期を取りながら実行する際に、CPUの関与を必要としないため、システム全体の性能が向上するという効果がある。 In this way, it is possible to execute a plurality of data transfers while synchronizing without any involvement of the CPU other than writing the program to the instruction memory. In particular, there is an effect that the performance of the entire system is improved because the CPU is not involved when performing a plurality of data transfers using a double buffer or the like while synchronizing them.
(具体的構成)
図1は本発明の実施形態であるダイレクトメモリアクセス装置の電気的な構成を示すブロック図である。
(Specific configuration)
FIG. 1 is a block diagram showing an electrical configuration of a direct memory access apparatus according to an embodiment of the present invention.
ブロック間を結合する線の表記は、データ系の接続を幅を持つ矢印で図示し、制御系の接続を幅を持たない矢印で図示した。ただし、すべての接続が図示されているわけではなく、説明に必要な代表的な接続のみを図示した。 In the notation of lines connecting the blocks, data system connections are indicated by arrows having a width, and control system connections are indicated by arrows having no width. However, not all the connections are illustrated, and only representative connections necessary for the description are illustrated.
本装置には、データ転送要求を行う2個のDMA(ダイレクトメモリアクセス)デバイス101、102、CPUバスに接続され、データを格納し、データ転送元またはデータ転送先となるメモリ2と、実行中の命令の命令メモリ5上のアドレスを示す3個のプログラムカウンタ(図中はPC)301、302、303と、選択信号に基づいて、複数のプログラムカウンタ301〜303のうちいずれかのプログラムカウンタに格納された値を、命令メモリ5のアドレスとして選択するプログラムカウンタ選択部4と、データ転送命令を格納する命令メモリ5と、命令メモリ5のデータ出力であるデータ転送命令を解読し転送方向、転送先・元等を判定する命令デコード部6とが含まれている。命令メモリ5は、プログラムカウンタ選択部4で選択されたプログラムカウンタが示すアドレスから命令を出力する。
This apparatus is connected to two DMA (direct memory access)
また、解読された命令に従って2つのDMAポート701、702またはバスIF(インターフェース)703を駆動してデータ転送を実行するデータ転送実行部7を含む。更に、命令デコード部6の出力から転送元または先を検出する転送元/先検出部801、DMAデバイスからのデータ転送要求を検出するDMA要求検出部802、転送元/先検出部801で検出された転送元または先と、データ転送要求を出しているDMAデバイスとが一致しているか否かを判定する一致判定部803、判定結果が不一致であればデータ転送実行部7のデータ転送を抑制する信号を出力する実行抑制信号生成部804、及び、判定結果が不一致ならば現在実行中の命令に対応するプログラムカウンタを非選択とするための第1選択許可信号を生成する第1選択許可信号生成部805とを含む信号生成部8を含む。
Also included is a data
実行抑制信号生成部804は、命令メモリ5から出力された命令の内容に対応した転送要求がダイレクトメモリアクセスデバイス101、102から出力されていない場合、データ転送実行部7のデータ転送を抑制する転送抑制部として機能する。また、第1選択許可信号生成部805及び選択信号生成部10は、命令メモリ5から出力された命令の内容に対応した転送要求がダイレクトメモリアクセスデバイス101、102から出力されている場合には、プログラムカウンタ選択部4による、出力された命令に対応するプログラムカウンタ301〜303の選択を許可し、命令メモリ5から出力された命令の内容に対応した転送要求がダイレクトメモリアクセスデバイス101、102から出力されていない場合には、出力された命令の内容に対応した転送要求が出力されるまで、プログラムカウンタ選択部4による、命令を出力するプログラムカウンタ301〜303の選択を不許可にする選択許可部として機能する。
When the transfer request corresponding to the content of the instruction output from the
また、命令デコード部6の出力がサスペンド命令かレジューム命令かを判定し、プログラムカウンタ301〜303を選択または非選択とするための第2選択許可信号を生成する第2選択信号生成部9と、第1および第2選択許可信号に基づきデータ転送実行毎にプログラムカウンタ選択部4に送出する選択信号を生成する選択信号生成部10と、選択信号に基づきデータ転送実行毎に選択されたプログラムカウンタの値を1ずつ更新するプログラムカウンタ更新部11と、図示しないデータポートを経由して命令メモリ5に命令を格納し、ダイレクトメモリアクセス装置の動作を制御するCPUバスに接続されたCPU12とを含む。
A second selection
第2選択信号生成部9及び選択信号生成部10は、命令メモリ5から出力された命令が、いずれかのプログラムカウンタ301〜303を指定した中断命令である場合には、プログラムカウンタ選択部4による、指定されたプログラムカウンタ301〜303の選択を不許可にし、前記命令メモリ5から出力された命令が、いずれかのプログラムカウンタ301〜303を指定した再開命令である場合には、プログラムカウンタ選択部4による、指定されたプログラムカウンタ301〜303の選択を許可にする第2の選択許可部として機能する。
The second selection
ここで、本装置内のブロックのうち、まずCPU12のリセットが解除され、CPU12は内蔵ROMから命令をフェッチし実行することにより、図示しないリセット信号を制御して順次各ブロックのリセットを解除することが可能である。CPU12以外のモジュールがすべてリセットの状態において、まずCPU12は、命令メモリ5に対し、ダイレクトメモリアクセス装置が実行する命令を書き込む。
Here, among the blocks in the apparatus, the reset of the
図2は、本実施の形態において使用する命令メモリ5の構成および入出力ポートを示す。命令メモリ5は2ポート(1Read/1Write)のSRAMであり、データ幅は32ビット、ワード長は64である。読み出しアドレス(READ ADDRESS)は6ビットであり、読み出し許可信号(READ ENABLE)をアサートすると32ビットの読み出しデータがREAD DATAポートより読み出される。本実施の形態においては、読み出しアドレスはプログラムカウンタ選択部4から供給され、読み出しデータは命令デコード部6に供給される。書き込みアドレス(WRITE ADDRESS)は6ビットであり、書き込み許可信号(WRITE ENABLE)をアサートすると、32ビットの書き込みデータ(WRITE DATA)信号上にドライブされているデータがSRAMの書き込みアドレスに書き込まれる。本実施の形態では、書き込みアドレス、書き込みデータともにCPU12から供給される。
FIG. 2 shows the configuration of the
図1に戻り、命令メモリ5への命令データの書き込みが終わると、CPU12が順次各ブロックのリセットを解除し、これによりダイレクトメモリアクセス装置は動作を開始する。プログラムカウンタ301、302、303はおのおの6ビットのフリップフロップから構成されており、リセット時の初期値はおのおの"000000","010000","100000"となっている。すなわちプログラムカウンタ301は0x0番地からの命令を実行し、プログラムカウンタ302は0x10番地からの命令を実行し、プログラムカウンタ303は0x20番地からの命令を実行する。
Returning to FIG. 1, when the writing of the instruction data to the
プログラムカウンタ301,302,303、プログラムカウンタ選択部4およびプログラムカウンタ更新部11の詳細ブロック図を図3に示す。プログラムカウンタ301にはセレクタ1101の出力が入力される。セレクタ1101は、プログラムカウンタの現在の値、現在の値に1を加算した値、LOAD命令によりローディングされる値(store_d)、LOOP命令によりループバックする際のプログラムカウンタの戻り値(lp_back_pc)、JUMP命令によるジャンプ先アドレス(jump_pc)のうちの1つを選択して出力する。セレクタ1102はプログラムカウンタの出力自身、プログラムカウンタの値に1を加えた値(+1加算器1103の出力)のうちの何れかをプログラムカウンタ選択信号pc_selに基づいて選択する。すなわち、当該クロックサイクルにおいて当該プログラムカウンタが選択されている場合は1を加えた値を選択し、非選択の場合は現在の値を選択する。プログラムカウンタ302および303においても同様の構成が取られており、プログラムカウンタの更新がなされる。プログラムカウンタ選択部4は3ビットのプログラム選択信号pc_sel[2:0]に応じてプログラムカウンタ301(PC(0))、302(PC(1))、303(PC(2))の出力のうちの1つを選択し、命令メモリの読み取りアドレスとして出力する。pc_sel[2:0]はone-hotの信号であり、"001"のときプログラムカウンタ301を選択し、"010"のときプログラムカウンタ302を選択し、"100"のときプログラムカウンタ303を選択する。すなわち、pc_sel[n]='1'のときPC(n)を選択する(ただしn=0,1,2)。
A detailed block diagram of the program counters 301, 302, 303, the program
図4に選択信号生成部10の詳細ブロック図を示す。フリップフロップ1001、1002、1003は各々クロック信号とリセット信号に接続されており、出力がプログラムカウンタ選択信号となる。フリップフロップ1001はリセットにより"1"がセットされ、D入力にはセレクタ1004の出力が接続され、Q出力がpc_sel[0]となる。フリップフロップ1002はリセットにより"0"がセットされ、D入力にはセレクタ1005の出力が接続され、Q出力がpc_sel[1]となる。フリップフロップ1003はリセットにより"0"がセットされ、D入力にはセレクタ1006の出力が接続され、Q出力がpc_sel[2]となる。
FIG. 4 shows a detailed block diagram of the
デコーダ1007は第1選択許可信号生成部805の出力する第1選択許可信号pc_en1[2:0]と第2選択許可信号生成部9の出力する第2選択許可信号pc_en2[2:0]のゲート1008、1009、1010による論理積演算出力pc_en[2:0]と、命令実行のストール指示を示すストール信号とをデコードし、セレクタ1004、1005、1006に対して選択信号を生成する。デコード方式を図5に示す。入力であるストール、論理積演算出力pc_en[2:0]に対する出力である選択信号sel_cnt[2:0]の関係を示す。例えば、ストールが"1"の場合、sel_cntは全て2となり、全フリップフロップは現在の値を保持する。すなわち、pc_selは更新されない。ストールが"0"でpc_en="111"の場合、sel_cntは全て0となり、pc_selはシフトレジスタ動作する。すなわち、"001"→"010"→"100"→"001"と遷移し、PC(0)→PC(1)→PC(2)→PC(0)の順に選択される。ストールが"0"でpc_en="011"の場合は、PC(2)が選択不許可となるように、sel_cnt="301"となり、pc_selは"001"→"010"→"001"→"010"→"001"と遷移し、PC(0)→PC(1)→PC(0)→PC(1)→PC(0)の順に選択される。
The
プログラムカウンタ選択部4によって選択されたプログラムカウンタに対応する命令は命令メモリ5から読み出され、命令デコード部6に入力される。命令は32ビットからなり、図6に示すように解読される。
The instruction corresponding to the program counter selected by the program
32ビット命令をInst[31:0]と表記すると、Inst[31:30]="00"のとき特殊命令(Special Instruction)、"01"のときロード命令(Load Instruction)、"10"のときストア命令(Store Instruction)、"11"は無効命令と解読する。ロード命令とは、メモリからダイレクトメモリアクセス装置の内部リソース(DMAポートを含む)へのデータ転送命令であり、ストア命令とは、内部リソースからメモリへのデータ転送命令である。特殊命令にはNOP命令(なにもしない命令)やループ命令(LOOP)、ジャンプ命令(JUMP)等の一般的なプロセッサに備わっている命令が含まれる。 When a 32-bit instruction is expressed as Inst [31: 0], when Inst [31:30] = "00", a special instruction (Special Instruction), when "01", a load instruction (Load Instruction), and when "10" A store instruction (Store Instruction) “11” is decoded as an invalid instruction. The load instruction is a data transfer instruction from the memory to internal resources (including the DMA port) of the direct memory access device, and the store instruction is a data transfer instruction from the internal resource to the memory. Special instructions include instructions provided in general processors such as NOP instructions (instructions that do nothing), loop instructions (LOOP), and jump instructions (JUMP).
Inst[29:27]はデータサイズを示すフィールドであり、詳細は図7に示されている。例えば"000"の場合は1バイト、"100"の場合は5バイトの転送であることを示す。 Inst [29:27] is a field indicating the data size, and details are shown in FIG. For example, “000” indicates transfer of 1 byte, and “100” indicates transfer of 5 bytes.
Inst[26:23]は転送元リソースのインデックスを示すフィールド、Inst[22:19]は転送先リソースのインデックスを示すフィールドであり、Inst[18:16]で示される内部リソースの識別子(ロード命令の場合は転送先、ストア命令の場合は転送元を示す)とともにどの内部リソースの何番目のリソースを転送対象にするかを示す。 Inst [26:23] is a field indicating the index of the transfer source resource, Inst [22:19] is a field indicating the index of the transfer destination resource, and the identifier (load command) of the internal resource indicated by Inst [18:16] Indicates the transfer destination, and in the case of a store instruction, indicates the transfer source of which internal resource.
内部リソース識別子の詳細は図8に示されている。"000"の場合PCすなわちプログラムカウンタを示し、"001"の場合ARすなわちアドレスレジスタを示し、"010"の場合GPRすなわち汎用レジスタを示し、"010"の場合IN/OUTすなわちDMAポートを示し(IN/OUTはロードかストアかにより識別される)、"100"の場合LPすなわちループレジスタを示し、"101"の場合OFSTすなわちオフセットレジスタを示す。 Details of the internal resource identifier are shown in FIG. "000" indicates a PC or program counter, "001" indicates an AR or address register, "010" indicates a GPR or general-purpose register, and "010" indicates an IN / OUT or DMA port ( IN / OUT is identified by whether it is a load or a store), “100” indicates LP, that is, loop register, and “101” indicates OFST, that is, offset register.
ロード命令の場合の転送元とストア命令の場合の転送先を示す内部リソース識別子はアドレスレジスタに固定されており、インデックスのみをそれぞれのインデックスフィールドにより指定する。 An internal resource identifier indicating a transfer source in the case of a load instruction and a transfer destination in the case of a store instruction is fixed in an address register, and only an index is designated by each index field.
Inst[15:13]はデータ転送元または先の有効バイトレーンを示すフィールドであり、データサイズフィールドとともに何バイトをどのバイトレーンにまたはどのバイトレーンから転送するかを示す。図9A、図9Bは、サイズとバイトレーンの組み合わせにより有効となるバイトレーンを詳細に示している。データは64ビットであり、バイトレーンは[63:56]、[55:48]、[47:40]、[39:32]、[31:24]、[23:16]、[15:8]、[7:0]の8レーンあり、有効レーンに"v"が表記されている。例えばサイズフィールド(size)が"000"すなわち1バイトで、バイトレーンフィールド(pos_d/s)が"011"すなわち第4バイトレーンの場合、データ[31:24]に1バイトのデータが転送される。 Inst [15:13] is a field indicating the valid byte lane of the data transfer source or destination, and indicates how many bytes are transferred to or from which byte lane together with the data size field. 9A and 9B show in detail the byte lanes that are valid depending on the combination of size and byte lane. The data is 64 bits, and the byte lanes are [63:56], [55:48], [47:40], [39:32], [31:24], [23:16], [15: 8]. ], [7: 0] are 8 lanes, and “v” is written in the effective lane. For example, when the size field (size) is “000”, that is, 1 byte, and the byte lane field (pos_d / s) is “011”, that is, the fourth byte lane, 1 byte of data is transferred to the data [31:24]. .
より理解を深めるために、いくつかの命令の実例を示す。 In order to better understand, some examples of instructions are given.
Inst="01_000_0001_0010_100_001_000000000000"の場合、ロード命令であり、アドレスレジスタAR(1)の示すメモリ上の1バイトデータを、ループレジスタLP(2)の[15:8]にロードする。 When Inst = "01_000_0001_0010_100_001_000000000000", this is a load instruction, and 1-byte data on the memory indicated by the address register AR (1) is loaded into [15: 8] of the loop register LP (2).
Inst="10_111_0001_0010_011_000_000000000000"の場合、ストア命令であり、DMA入力ポートIN(1)から読み込まれた8バイトデータを、アドレスレジスタAR(2)の示すメモリ上にストアする。 When Inst = "10_111_0001_0010_011_000_000000000000", this is a store instruction, and 8-byte data read from the DMA input port IN (1) is stored in the memory indicated by the address register AR (2).
図10は特殊命令のエンコーディングを示す。 FIG. 10 shows the encoding of special instructions.
EnableThreadは特定のプログラムカウンタを有効にする命令であり、当該プログラムカウンタ以外休眠中の他のプログラムカウンタを起動するときに使用できる。 EnableThread is an instruction for enabling a specific program counter, and can be used when other program counters other than the program counter are activated.
DisableThreadは特定のプログラムカウンタを無効にする命令であり、当該プログラムカウンタ以外の実行中の他のプログラムカウンタを休眠状態にする場合や、プログラムの実行が終了した際に自分自身を休眠状態にする際に使用できる。 DisableThread is a command that disables a specific program counter. When other program counters other than the program counter are put into a sleep state, or when execution of a program is finished, the program is put into a sleep state. Can be used for
SuspendThread、ResumeThread、WaitTrigger、EmitTriggerは、それぞれ、特定のプログラムカウンタをサスペンド(実行中断)状態にする命令、特定のプログラムカウンタをレジューム(実行再開)する命令、特定のトリガイベントを待って自プログラムカウンタをサスペンド(実行中断)状態にする命令、特定のトリガイベントを発生させる命令である。 SuspendThread, ResumeThread, WaitTrigger, and EmitTrigger each wait for a specific program counter to suspend (execute execution), a specific program counter to resume (execute execution), and a specific trigger event to wait for its own program counter. This is an instruction to suspend (execute execution) state and an instruction to generate a specific trigger event.
JUMPはジャンプ命令であり、オペランドInst[23:12]を現在選択中のプログラムカウンタにコピーする。本実施の形態においてはプログラムカウンタは6ビットであるので、実際はInst[17:12]がコピーされる。 JUMP is a jump instruction and copies the operand Inst [23:12] to the currently selected program counter. In the present embodiment, since the program counter is 6 bits, Inst [17:12] is actually copied.
LoadImmidiateByteは即値を内部リソースにロードする命令であり、オペランドInst[7:0]で示される1バイトを、その他のオペランドにより特定される内部リソースにコピーする。 LoadImmidiateByte is an instruction for loading an immediate value into an internal resource, and 1 byte indicated by the operand Inst [7: 0] is copied to the internal resource specified by the other operand.
ClearResigerは内部リソースを0クリアする命令である。 ClearResiger is an instruction to clear internal resources to zero.
LoopInはループ突入命令であり、LoopIndicator(Inst[22:19])で指定されるループレジスタLPおよびオフセットレジスタOFSTの組み合わせによりループを実現する。 LoopIn is a loop entry command, and a loop is realized by a combination of the loop register LP and the offset register OFST specified by LoopIndicator (Inst [22:19]).
データ転送実行部7は命令デコード部6の命令解読結果に応じてデータ転送を実行する。また、内部リソースとして、図示しない汎用レジスタGPR、アドレスレジスタAR、ループレジスタLP、オフセットレジスタOFSTをそれぞれ4本ずつ備える。さらに、ダイレクトメモリアクセスデバイス101とのデータ転送のためにDMAポート701(IN(0)およびOUT(0))と、ダイレクトメモリアクセスデバイス102とのデータ転送のためにDMAポート702(IN(1)およびOUT(1))と、メモリ1とのデータ転送のためにバスインターフェース703を備える。
The data
汎用レジスタは、データを一時的に保持するレジスタであり、例えばメモリからロードしたデータを1バイトごとに別の内部リソースにコピーするなどに用いる。 The general-purpose register is a register that temporarily holds data. For example, the general-purpose register is used for copying data loaded from a memory to another internal resource for each byte.
ここで、アドレスレジスタARは、バスインターフェースに対して出力するアドレスを生成する。一般的なプロセッサと同様に1データ転送毎にアドレスレジスタARの値を更新するモード(自動更新アドレッシングモード)を備える構成も好ましい。ループレジスタLPは、命令のループ回数を示し、オフセットレジスタOFSTはループバックすべき命令アドレスを示す。ループレジスタLPとオフセットレジスタOFSTに所定値をロードし、ループ命令を実行することによりループ内に入る。プログラムカウンタが進行してオフセットレジスタOFSTに格納された値と一致したときにプログラムカウンタの値をループ命令の次の命令を示すアドレスに更新するとともにループレジスタの値を1減じる。ループレジスタLPが0になった場合は、ループを脱出する、すなわちプログラムカウンタの値にただ1加える。非常に単純なループを用いたプログラム例を示す。 Here, the address register AR generates an address to be output to the bus interface. Similarly to a general processor, a configuration including a mode (automatic update addressing mode) for updating the value of the address register AR for each data transfer is also preferable. The loop register LP indicates the number of instruction loops, and the offset register OFST indicates an instruction address to be looped back. A predetermined value is loaded into the loop register LP and the offset register OFST, and a loop instruction is executed to enter the loop. When the program counter advances and coincides with the value stored in the offset register OFST, the value of the program counter is updated to an address indicating the instruction next to the loop instruction and the value of the loop register is decremented by one. When the loop register LP becomes 0, the loop is exited, that is, only 1 is added to the value of the program counter. A program example using a very simple loop is shown.
=============================================================================
命令アドレス 命令
0x00 AR(0)[7:0]に即値0x20をロード
0x01 LP(0)にAR(0)の示すメモリ上の値をロード(メモリの0x20番地上のデータ=0x20)
0x02 OFST(0)に即値0x04をロード
0x03 LoopIn命令(インディケータ0)
0x04 DMAPort(0)から読み出したデータをAR(1)の示すメモリアドレスにストアしAR(1)++
0x05 DisableThreadにより自分自身を休眠させる。
=============================================================================
上記命令列によれば、0x03番地の命令実行によりループに入り、0x04番地に記述されているように、DMAポートからメモリへデータを転送し、プログラムカウンタがオフセットレジスタと一致するためループバックしLoopIn命令の次アドレスすなわち0x04にジャンプする。これをLP(0)の回数、すなわち32回繰り返してループを抜けて終了する。
================================================== ===========================
Instruction address Instruction 0x00 Load immediate value 0x20 to AR (0) [7: 0] 0x01 Load value in memory indicated by AR (0) to LP (0) (0x20 ground data = 0x20)
0x02 Load immediate value 0x04 to OFST (0) 0x03 LoopIn instruction (indicator 0)
0x04 Stores the data read from DMAPort (0) at the memory address indicated by AR (1) and stores AR (1) ++
0x05 Sleep yourself with DisableThread.
================================================== ===========================
According to the above instruction sequence, a loop is entered by executing an instruction at address 0x03, data is transferred from the DMA port to the memory as described in address 0x04, and loopback is performed because the program counter matches the offset register. Jump to the next address of the instruction, that is, 0x04. This is repeated the number of times LP (0), that is, 32 times, and the process exits from the loop.
信号生成部8は、命令デコード部4による命令デコード結果と、ダイレクトメモリアクセスデバイス101,102のダイレクトメモリアクセス要求とプログラムカウンタ選択信号生成部10からのプログラムカウンタ選択信号をもとに、データ転送実行部7への実行抑制信号とプログラムカウンタ選択信号生成部10への第1選択許可信号を生成する。
The
図11は信号生成部8の内部構成を示すブロック図である。601,602、603、604、605は命令デコード部6に含まれる比較器であるが、説明に好都合のため図11に示した。比較器601は命令がロード命令であるかどうかを判定する。ロード命令である場合にはload信号をアサートする。比較器602は命令がストア命令であるかどうかを判定する。ストア命令である場合にはstore信号をアサートする。比較器603は転送元または転送先インデックスが0であるかどうかを判定する。インデックスが0である場合にはPort0信号をアサートする。比較器604は転送元または転送先インデックスが1であるかどうかを判定する。インデックスが1である場合にはPort1信号をアサートする。比較器605は転送元または転送先がDMAポートであるかどうかを判定する。DMAポートである場合にはDMA信号をアサートする。
FIG. 11 is a block diagram showing the internal configuration of the
ゲート811、812、813、814は転送元・先検出部801を構成する。ゲート811にはload,Port0,DMA信号が入力され、3入力のANDがLD_OUT0信号として出力される。LD_OUT0信号はDMAポート0に対してデータをロードする命令が発行されていることを示す。ゲート812にはload,Port1,DMA信号が入力され、3入力のANDがLD_OUT1信号として出力される。LD_OUT1信号はDMAポート1に対してデータをロードする命令が発行されていることを示す。ゲート813にはstore,Port0,DMA信号が入力され、3入力のANDがST_IN0信号として出力される。ST_IN0信号はDMAポート0からデータを読み出してメモリにストアする命令が発行されていることを示す。ゲート814にはstore,Port1,DMA信号が入力され、3入力のANDがST_IN1信号として出力される。ST_IN1信号はDMAポート1からデータを読み出してメモリにストアする命令が発行されていることを示す。
The
ゲート831、832、833、834は発行された命令に対応するダイレクトメモリアクセス要求がアサートされているかどうかを検出する一致判定部803を構成する。DMAOReq0はダイレクトメモリアクセスデバイス101がメモリからのデータ転送を要求しているときに"1"にアサートされ、DMAOReq1はダイレクトメモリアクセスデバイス102がメモリからのデータ転送を要求しているときに"1"にアサートされ、DMAIReq0はダイレクトメモリアクセスデバイス101がメモリへのデータ転送を要求しているときに"1"にアサートされ、DMAIReq1はダイレクトメモリアクセスデバイス102がメモリへのデータ転送を要求しているときに"1"にアサートされる。ゲート831、832、833、834の出力は、発行された命令がアクセスしようとしているDMAポートから、データ転送要求がない場合に、"0"レベルとなる。
ゲート841は、実行抑制信号生成部804を構成するゲートであり、ゲート831、832、833、834の出力のいずれか1つが"0"になると出力が"0"となる。従って、ゲート841の出力が実行抑制信号(抑制すべき時"0"レベル)となる。
The
ゲート851、852、853、854は、ダイレクトメモリアクセス命令を発行したプログラムカウンタのどれが、どのDMAポートをアクセスしたときに実行抑制を受けたかを検出する。フリップフロップ855、856、857、858は実行抑制の検出結果を保持する。ゲート821、822、823、824は、実行抑制中のダイレクトメモリアクセス命令に対応するダイレクトメモリアクセス要求が発生したことを検出するDMA要求検出部802を構成する。実行抑制中のダイレクトメモリアクセス命令に対応するダイレクトメモリアクセス要求が発生したことを検出すると、フリップフロップ855、856、857、858はクリアされる。ゲート8591は実行抑制状態を生成し、ゲート8592は実行抑制解除状態を生成する。ゲート8593により、特定のプログラムカウンタの実行抑制状態が生成され、これを第1選択許可信号pc_en1[2:0]としてプログラム選択信号生成部10へ出力する。すなわちpc_en1[n]が"1"の場合、選択が許可され、"0"の場合、選択が不許可となる。
The
図11においてはどのプログラムカウンタであるかを整数nで示している。nは0,1,2の何れかであるので、本実施の形態においてはゲート821、822、823、824、851、852、853、854、8591、8592、8593およびフリップフロップ855、856、857、858はプログラムカウンタの数すなわち3セット存在するが図示を省略している。
In FIG. 11, which program counter is indicated by an integer n. Since n is 0, 1, or 2, in this embodiment, the
第2選択許可信号生成部9は、命令デコード部4による命令デコード結果とプログラムカウンタ選択信号生成部10からのプログラムカウンタ選択信号をもとに、プログラムカウンタ選択信号生成部10への第2選択許可信号を生成する。図12は第2選択許可信号生成部9の内部構成を示すブロック図である。606,607、608、609、610は命令デコード部6に含まれる比較器であり、611、612、613、614は命令デコード部6に含まれるゲート(論理積)であるが、説明に好都合のため図12に示した。比較器606は命令の最上位2ビットをデコードして、命令が特殊命令であるかどうかを判定する。特殊命令である場合にはspecial信号をアサートする。比較器607、608、609、610は命令の続く上位6ビットをデコードして、命令がサスペンド命令(SuspendThread)、レジューム命令(ResumeThread)、トリガ待ちサスペンド命令(WaitTrigger),トリガ発生命令(EmitTrigger)であるかどうかを判定し、それぞれの出力信号をゲート611、612、613、614によりspecial信号と論理積をとることにより、それぞれSUSP信号、RESU信号、WAIT信号、EMIT信号を生成する。
The second selection permission
命令のビット23から8は、サスペンド命令またはレジューム命令の場合に、どのプログラムカウンタをサスペンドまたはレジュームさせるかを示す識別子であり、本実施の形態の場合は3個のプログラムカウンタを備えるので、ビット10から8が有効となる。ビット8(Inst[8])、ビット9(Inst[9])、ビット10(Inst[10])は、それぞれプログラムカウンタPC(0)、PC(1)、PC(2)に対応する。
以下にサスペンド命令およびレジューム命令により選択許可信号を生成するロジックを解説する。 The logic for generating the selection permission signal by the suspend instruction and the resume instruction is explained below.
フリップフロップ9-1はPC(0)の動作状態(実行状態か、サスペンド状態か)を保持しており、リセット時の初期値は'1'、すなわち実行状態を示す。サスペンド命令が実行され(SUSP='1')、かつプログラムカウンタ識別子がPC(0)を示している場合(Inst[8]='1')、ゲート9-2の論理積出力が'1'となり、これがフリップフロップ9-1のクリア端子を駆動してフリップフロップ9-1の出力が'0'となる。すなわち、プログラムカウンタPC(0)をサスペンド状態とする一要因を生成する。 The flip-flop 9-1 holds the operation state (execution state or suspend state) of PC (0), and the initial value at the time of reset is “1”, that is, indicates the execution state. When the suspend instruction is executed (SUSP = '1') and the program counter identifier indicates PC (0) (Inst [8] = '1'), the logical product output of the gate 9-2 is '1'. This drives the clear terminal of the flip-flop 9-1, and the output of the flip-flop 9-1 becomes '0'. That is, one factor for causing the program counter PC (0) to be in the suspended state is generated.
一方、レジューム命令が実行され(RESU='1')、かつプログラムカウンタ識別子がPC(0)を示している場合(Inst[8]='1')、ゲート903の論理積出力が'1'となり、これがフリップフロップ9-1のセット端子を駆動してフリップフロップ9-1の出力が'1'となる。すなわち、プログラムカウンタPC(0)を実行状態とする一要因を生成する。
On the other hand, when the resume instruction is executed (RESU = '1') and the program counter identifier indicates PC (0) (Inst [8] = '1'), the logical product output of the
同様に、フリップフロップ904はSUSP信号およびRESU信号とInst[9]の値に応じて、ゲート905、906によりセットまたはリセットされて、プログラムカウンタPC(1)の実行状態を制御する。
Similarly, the flip-
全く同様に、フリップフロップ907はSUSP信号およびRESU信号とInst[10]の値に応じて、ゲート908、909によりセットまたはリセットされて、プログラムカウンタPC(2)の実行状態を制御する。
In exactly the same manner, the flip-
次に、トリガ待ちサスペンド命令およびトリガ発生命令により選択許可信号を生成するロジックを解説する。 Next, the logic for generating the selection permission signal by the trigger wait suspend instruction and the trigger generation instruction will be described.
フリップフロップ群910はトリガ発生命令によるトリガ発生の履歴を保持する8ビットのフリップフロップからなり、リセット時の初期値は"00000000"である。トリガ発生命令が実行されると(EMIT='1')、ゲート911により、すでにトリガを保持している場合はそのままの値を保ち、トリガを保持していない場合はトリガ識別子であるInst[23:16]をロードする。
The flip-
フリップフロップ912はPC(0)の動作状態(実行状態か、サスペンド状態か)を保持しており、リセット時の初期値は'1'、すなわち実行状態を示す。トリガ待ちサスペンド命令が実行され(WAIT='1')、プログラムカウンタ選択信号生成部10からのプログラムカウンタ選択信号がPC(0)を示している場合(pc_sel[0]='1')、ゲート913の論理積出力が'1'となる。さらに、フリップフロップ群910の保持するトリガ履歴とトリガ待ちサスペンド命令の待ち受けトリガ識別子Inst[23:16]がゲート914および915により比較され、1ビットも共に'1'であるビットがない場合は(ゲート915の出力='0')、トリガ待ちサスペンド命令実行以前にトリガが発行されていないと判定され、ゲート916によってフリップフロップ912のクリア信号が生成される。この結果、フリップフロップ912の出力が'0'となり、プログラムカウンタPC(0)をサスペンド状態とする一要因を生成する。この時、フリップフロップ群917にはトリガ待ちサスペンド命令の待ち受けトリガ識別子Inst[23:16]がロードされる。なお、フリップフロップ群917のリセット時の初期値は"00000000"である。ゲート914および915により比較された結果、1ビットでも共に'1'であるビットがある場合は、トリガ待ちサスペンド命令実行以前にトリガが発行されたと判定され、フリップフロップ912をクリアしない。すなわち、サスペンド状態には遷移しない。
The flip-
さて、トリガ発生命令が実行されると(EMIT='1')、トリガ識別子であるInst[23:16]と待ち受けトリガであるフリップフロップ群917の出力がゲート918および919により比較され、1ビットでも共に'1'のビットがあるならばゲート920の出力が'1'となる。この時、フリップフロップ912の出力が'0'すなわちプログラムカウンタPC(0)がサスペンド状態にある場合、ゲート921によりフリップフロップ912がセットされ、プログラムカウンタPC(0)を実行状態とする一要因を生成する。この時、同時に、フリップフロップ群910をクリアし、トリガ履歴をリセットする。
When the trigger generation instruction is executed (EMIT = '1'), the output of the trigger identifier Inst [23:16] and the flip-
プログラムカウンタPC(1)およびPC(2)に関しても、PC(0)と全く同様に作用し、プログラムカウンタを実行状態とする一要因が生成される。PC(0)における910から921が、PC(1)における922から934にそれぞれ対応し、また、PC(2)における934から945にそれぞれ対応する。 The program counters PC (1) and PC (2) operate in exactly the same way as PC (0), and one factor is generated that causes the program counter to be in an execution state. 910 to 921 in PC (0) correspond to 922 to 934 in PC (1), respectively, and correspond to 934 to 945 in PC (2), respectively.
フリップフロップ901、904、907によって生成される、各々のプログラムカウンタの実行状態を制御する信号と、それぞれフリップフロップ912、924、936によって生成される、各々のプログラムカウンタの実行状態を制御する信号との論理積がゲート947、948、949により生成され、第2選択許可信号pc_en2[2:0]を形成し、プログラム選択信号生成部10へ出力される。
A signal that controls the execution state of each program counter generated by the flip-
以上に説明した各ブロックの動作説明に基づいて、本実施の形態のダイレクトメモリアクセス装置の全体的な動作を説明する。 Based on the operation description of each block described above, the overall operation of the direct memory access device of the present embodiment will be described.
まず、サスペンド、レジューム操作を伴わない一般的なダイレクトメモリアクセス動作例を、図13に示すタイミング図を用いて説明する。基本的にプログラムカウンタPC(0)の示すプログラム(0x03番地および0x05番地の命令)がダイレクトメモリアクセスデバイス101のデータ転送を行い、プログラムカウンタPC(1)の示すプログラム(0x12番地および0x16番地の命令)がダイレクトメモリアクセスデバイス102のデータ転送を行うように設定されている。
First, an example of a general direct memory access operation that does not involve suspend and resume operations will be described with reference to a timing chart shown in FIG. Basically, the program indicated by the program counter PC (0) (instructions at addresses 0x03 and 0x05) transfers data to the direct
クロックサイクル0はreset信号がアサート("1")されており、リセット状態である。リセット状態においては、プログラムカウンタ選択信号pc_selは"001"を出力し、プログラムカウンタ選択許可信号pc_enは"111"を出力している。また、プログラムカウンタの初期値はPC(0)=0x0、PC(1)=0x10、PC(2)=0x20である。クロックサイクル1においてリセットが解除され、まずプログラムカウンタPC(0)が選択され(selected PC = PC(0))、命令が実行される。クロックサイクル2ではpc_selが"010"となりPC(1)が選択され、クロックサイクル3ではpc_selが"100"となりPC(2)が選択される。このように順次PC(0)→PC(1)→PC(2)→PC(0)が選択されて命令が実行される。クロックサイクル4ではダイレクトメモリアクセスデバイス102のデータ転送要求DMAReq1がアサート("1")されるが、当該デバイスに対するデータ転送命令が実行されないため転送応答信号DMAAck1はアサートされない。クロックサイクル6においてPC(1)は0x12となり、このプログラムカウンタがダイレクトメモリアクセスデバイス102へのデータ転送命令を示している。実際に実行されるのは次にpc_selが"010"になるクロックサイクル8であり、このサイクルにおいてDMAAck1がアサートされる。
In
一方、クロックサイクル10においてプログラムカウンタPC(0)が示すダイレクトメモリアクセスデバイス101へのデータ転送命令が発行されるが、当該サイクルにおいてDMAReq0がアサートされていないため、プログラムカウンタPC(0)の示す命令は実行を抑制される。すなわちpc_enの値は"110"となりPC(0)は0x03を示したまま更新されない。DMAReq0がアサートされるクロックサイクル14までの間、プログラムカウンタPC(1),PC(2)の示すプログラムが順に実行される。クロックサイクル14においてDMAReq0がアサートされるとpc_enは"111"に更新され、クロックサイクル15においてPC(0)が選択され実行される。すなわち転送応答信号DMAAck0がアサートされてデータ転送が完了する。
On the other hand, a data transfer instruction to the direct
クロックサイクル19においてはPC(1)=0x16の示すデータ転送命令が発行されるが、当該サイクルにおいてDMAReq1がアサートされていないためpc_enは"101"となりPC(0),PC(2)の示す命令が順に実行される状態となる。PC(1)の実行が抑制されている間のクロックサイクル21においてPC(0)=0x05の示すデータ転送命令が発行されるが、当該サイクルにおいてはDMAReq0がすでにアサート状態のため直ちに実行され、DMAAck0がアサートされる。クロックサイクル23においてDAMReq1がアサートされるとpc_enは"111"に復帰し、クロックサイクル24においてデータ転送命令が実行されDMAAck1がアサートされる。
In
以上の説明により、容易に理解できることは、各ダイレクトメモリアクセスデバイスのデータ転送要求レートが2サイクルだった場合、2つのプログラムカウンタをイネーブルにしておけば、毎クロックサイクルデータ転送が可能である。すなわち、命令デコード部やデータ転送実行部の回路は共通しながらインターリーブ的にダイレクトメモリアクセスデバイスとのデータ転送を行えるため、回路規模を大きくすることなく効率のよいデータ転送を行うことが可能である。しかも、2つのダイレクトメモリアクセスのメモリアドレスの生成パターンを全く異なるものに設定することが可能であるため、非常に柔軟なデータ転送が可能である。例えば、一方のプログラムカウンタでx方向の画像データ参照を行い、もう一方のプログラムカウンタでy方向のデータ参照を行うようにすればデータ処理を行いながら回転操作を行うことも可能である。 As can be easily understood from the above description, when the data transfer request rate of each direct memory access device is two cycles, data transfer can be performed every clock cycle if two program counters are enabled. In other words, since the instruction decode unit and the data transfer execution unit can share data with the direct memory access device in an interleaved manner, it is possible to perform efficient data transfer without increasing the circuit scale. . In addition, since the memory address generation patterns of the two direct memory accesses can be set to be completely different, very flexible data transfer is possible. For example, if one program counter refers to image data in the x direction and the other program counter refers to data in the y direction, the rotation operation can be performed while performing data processing.
次に、サスペンド、レジューム操作に着目した動作例を、図14に示すタイミング図を用いて説明する。 Next, an operation example focusing on the suspend and resume operations will be described with reference to the timing chart shown in FIG.
サイクル0からサイクル7までの動作は、データ転送要求DMAReq1がアサートされていない点を除いて図13に示した動作と同等である。サイクル8において、プログラムカウンタPC(1)の実行する命令はPC(0)を対象としたサスペンド命令(SUSP0)である。この結果、サイクル9においてpc_enは"111"から"110"に遷移する。そして、サイクル10において、pc_enが"111"であれば実行されるはずであったPC(0)は実行されず、代わりにPC(1)の命令が実行される。サイクル12において、プログラムカウンタPC(1)はPC(0)をレジュームする命令(RESU0)を実行する。この結果、サイクル13においてpc_enは"110"から"111"に遷移し、サイクル14においてサスペンドされていたPC(0)の命令が実行される。
The operations from
次に、サイクル16においてプログラムカウンタPC(2)はトリガ識別子1を待って自らをサスペンドする命令、すなわちトリガ待ちサスペンド命令(WAIT1)を実行する。この結果、サイクル17においてpc_enは"111"から"011"に遷移する。そして、サイクル19において、pc_enが"111"であれば実行されるはずであったPC(2)は実行されず、代わりにPC(0)の命令が実行される。このサイクル19において実行されるPC(0)の命令は、トリガ識別子1のトリガを発生するトリガ発生命令(EMIT1)である。この結果、サイクル20においてpc_enは"011"から"111"に遷移する。そして、サイクル21において、サスペンドされていたPC(2)の命令が実行される。
Next, in
さらに、サイクル22においてPC(0)の実行する命令は、トリガ識別子2のトリガを発生するトリガ発生命令(EMIT2)である。この時点でトリガ待ちサスペンド命令によってサスペンドしているプログラムカウンタは存在しないため、前記第2選択許可信号生成部9内のフリップフロップ群910、922,934に"00000100"がロードされる。サイクル24において、プログラムカウンタPC(2)はトリガ識別子2を待って自らをサスペンドする命令、すなわちトリガ待ちサスペンド命令(WAIT2)を実行するが、トリガ待ちサスペンド命令に先立って(サイクル22)、同一トリガ識別子のトリガ発生命令が実行されているため、サイクル24におけるトリガ待ちサスペンド命令(WAIT2)は無効化され、pc_enは"111"のまま変化しない。その結果、サイクル27においてプログラムカウンタPC(2)の命令は順番通りに実行される。
Further, the instruction executed by PC (0) in
本説明から容易に理解されるように、1つのトリガ発生命令は、トリガ待ちサスペンド命令によってサスペンド状態にある2つ以上のプログラムカウンタをレジュームすることも可能である。 As can be easily understood from this description, one trigger generation instruction can resume two or more program counters in a suspended state by a trigger wait suspend instruction.
(具体例)
本実施の形態のダイレクトメモリアクセス装置の応用への適用例として、JPEGエンコーダ装置のブロック図を図15に示す。ダイレクトメモリアクセスデバイスの実際例としてJPEGエンコーダモジュール13が適用されている。エンコーダモジュール13の入力部にDMAポート701が接続され、出力部にDMAポート702が接続されている。また、CPUバス上にメモリマップされたストレージ14が接続され、JPEG圧縮されたデータを格納することができる。このような構成の場合、プログラムカウンタPC(0)はメモリ2から画像データを読み出してJPEGエンコーダ13に入力するためのシーケンスを実行する。JPEGエンコーダ13は、入力された画像データをJPEG圧縮し、入力データのデータレートとは異なるデータレートを持った圧縮された符号データを生成し、データ転送要求をアサートする。この要求に応じてプログラムカウンタPC(1)が起動され、符号データをメモリ2に転送する。ストレージ14のアクセススピードはメモリ2に比べて遅い場合があるので、プログラムカウンタPC(2)により制御されるシーケンスは、符号データを、ダブルバッファを用いてバックグラウンドでストレージ14に転送する。このような動作においては、プログラムカウンタPC(0)は、メモリ上の画像データを8x8のブロック単位でロードアクセスし、プログラムカウンタPC(1)は、符号データを連続アドレスにストアアクセスし、プログラムカウンタPC(2)は、符号データを連続アドレスからロードアクセスしてストレージのデータポートである固定アドレスにストアアクセスする。
(Concrete example)
As an application example of the direct memory access device of this embodiment, a block diagram of a JPEG encoder device is shown in FIG. The
以上のようなデータ転送において重要なことは、データ転送間の同期である。例えば、プログラムカウンタPC(2)により制御されるシーケンス(メモリ2上の符号データのストレージ14への転送)は、プログラムカウンタPC(1)により制御されるシーケンス(生成された符号データのメモリ2上への転送)を追い越すことはできない。すなわち、生成されたデータ以上のデータをストレージに転送することがあってはならない。逆に、プログラムカウンタPC(1)により制御されるシーケンス(生成された符号データのメモリ2上への転送)は、確保されているメモリ領域の空き容量以上にデータを生成・転送してはならない。つまり、ストレージに転送されていないメモリ領域に符号データを生成・転送することがあってはならない。
What is important in data transfer as described above is the synchronization between data transfers. For example, the sequence controlled by the program counter PC (2) (transfer of the code data on the
図16は、上述したダブルバッファの同期制御を、トリガ待ちサスペンド命令とトリガ発生命令により実現するための、プログラムカウンタPC(0)、PC(1)およびPC(2)のシーケンス図である。なお、プログラムカウンタPC(0)に関しては、プログラムカウンタPC(1)がサスペンドすることにより符号データ出力部が停止すると、JPEGエンコーダ13の画像データ入力部のデータ転送要求信号がアサートされないため、信号生成部8の作用により自動的にプログラムカウンタがサスペンドする。本動作の説明はシーケンス図からは省いた。
FIG. 16 is a sequence diagram of the program counters PC (0), PC (1), and PC (2) for realizing the above-described double buffer synchronization control by the trigger wait suspend instruction and the trigger generation instruction. As for the program counter PC (0), if the code data output unit is stopped by suspending the program counter PC (1), the data transfer request signal of the image data input unit of the
まず、デフォルトのプログラムカウンタであるPC(0)が起動し、プログラムカウンタPC(1)をイネーブルにする(ENABLE PC1)。次に、メモリ上の画像データをJPEGエンコーダ13に転送するダイレクトメモリアクセス転送をデータ転送要求信号に応じて実行する(シーケンス図中(1))。
First, the default program counter PC (0) is activated, and the program counter PC (1) is enabled (ENABLE PC1). Next, direct memory access transfer for transferring the image data on the memory to the
起動されたプログラムカウンタPC(1)はJPEGエンコーダ13の生成する符号データをデータ転送要求信号に応じてメモリ領域Aに転送する(シーケンス図中(2))。メモリ領域Aへのデータ転送が完了すると、プログラムカウンタPC(2)をイネーブルにし(ENABLE PC2)、引き続きJPEGエンコーダ13の生成する符号データをデータ転送要求信号に応じてメモリ領域Bに転送する(シーケンス図中(3))。
The activated program counter PC (1) transfers the code data generated by the
プログラムカウンタPC(2)は起動されると、メモリ領域A上の符号データをストレージ14に転送開始する(シーケンス図中(4))。プログラムカウンタPC(1)は符号データをメモリ領域Bに転送完了すると、トリガ識別子0のトリガ発生命令を発行する(EMIT0)。この時点で、トリガ待ちサスペンド状態にあるプログラムカウンタは存在しない。プログラムカウンタPC(1)は引き続きトリガ識別子1のトリガ待ちサスペンド命令を発行し(WAIT1)、自らサスペンド状態に遷移する。 When the program counter PC (2) is activated, it starts to transfer the code data in the memory area A to the storage 14 ((4) in the sequence diagram). When the program counter PC (1) completes the transfer of the code data to the memory area B, it issues a trigger generation instruction with the trigger identifier 0 (EMIT0). At this point, there is no program counter in the trigger wait suspend state. The program counter PC (1) continues to issue a trigger wait suspend instruction with a trigger identifier 1 (WAIT1) and transitions to the suspend state itself.
プログラムカウンタPC(2)はメモリ領域A上の符号データをストレージ14に転送し終わると、トリガ識別子1のトリガ発生命令を発行し(EMIT1)、続いてトリガ識別子0のトリガ待ちサスペンド命令を発行し(WAIT0)、自らサスペンド状態に遷移しようとするが、すでにトリガ識別子0のトリガ発生命令がプログラムカウンタPC(1)により発行されているため、サスペンドはキャンセルされ、引き続きメモリ領域B上の符号データをストレージ14に転送開始する(シーケンス図中(5))。
When the program counter PC (2) finishes transferring the code data in the memory area A to the
プログラムカウンタPC(2)の発行したトリガ識別子1のトリガにより、サスペンド中のプログラムカウンタPC(1)はレジュームし、JPEGエンコーダ13の生成する符号データをデータ転送要求信号に応じてメモリ領域Aに転送する(シーケンス図中(6))。プログラムカウンタPC(2)は、メモリ領域Bの符号データをストレージ14に転送し終わると、トリガ識別子1のトリガ発生命令を発行し(EMIT1)、続いてトリガ識別子0のトリガ待ちサスペンド命令を発行し(WAIT0)、自らサスペンド状態に遷移する。
The suspended program counter PC (1) is resumed by the trigger of the
プログラムカウンタPC(1)は、JPEGエンコーダ13の生成する符号データをデータ転送要求信号に応じてメモリ領域Aに転送し終わると、トリガ識別子0のトリガ発生命令を発行し(EMIT0)、続いてトリガ識別子1のトリガ待ちサスペンド命令を発行し(WAIT1)、自らサスペンド状態に遷移しようとするが、すでにトリガ識別子1のトリガ発生命令がプログラムカウンタPC(2)により発行されているため、サスペンドはキャンセルされ、引き続きJPEGエンコーダ13の生成する符号データをデータ転送要求信号に応じてメモリ領域Bに転送開始する(シーケンス図中(7))。
When the program counter PC (1) finishes transferring the code data generated by the
プログラムカウンタPC(1)の発行したトリガ識別子0のトリガにより、サスペンド中のプログラムカウンタPC(2)はレジュームし、メモリ領域A上の符号データをストレージ14に転送開始する(シーケンス図中(8))。
The suspended program counter PC (2) is resumed by the trigger with the
以下同様に、プログラムカウンタPC(1)によるメモリ領域Aへの転送(シーケンス図中(9))、プログラムカウンタPC(2)によるメモリ領域Bからの転送(シーケンス図中(10))のように、順次メモリ領域AおよびBを交互に同期を取りながらアクセスする。 Similarly, transfer to the memory area A by the program counter PC (1) ((9) in the sequence diagram) and transfer from the memory area B by the program counter PC (2) ((10) in the sequence diagram) The memory areas A and B are sequentially accessed while being alternately synchronized.
本シーケンス図の例においては、符号データのメモリ領域への転送時間は、入力画像データに依存するためにまちまちであり、一方、ストレージへの転送時間もストレージのステータスに依存してまちまちであるため、2つの転送のどちらが早く終了するかは不確定である。このような例においても、本装置を適用することにより、非常に簡便にダブルバッファを用いて同期を取りながらデータ転送を行うことが可能となる。 In the example of this sequence diagram, the transfer time of the code data to the memory area varies depending on the input image data, and on the other hand, the transfer time to the storage also varies depending on the status of the storage. It is uncertain which of the two transfers will end earlier. Even in such an example, by applying the present apparatus, it is possible to transfer data while using the double buffer to synchronize very easily.
以上のように、それぞれ異なるデータレートとアクセスパターンをもつ3種類のデータ転送を、それぞれのデータ転送要求に応じて並列的に同期を取りながら実行することができる。また、命令デコード部やデータ転送実行部は時分割的に動作させることができるため、効率的かつ複雑なアクセスパターンのデータ転送を、比較的少ない回路規模によって実現することが可能となる。 As described above, three types of data transfer each having a different data rate and access pattern can be executed while being synchronized in parallel according to each data transfer request. In addition, since the instruction decoding unit and the data transfer execution unit can be operated in a time-sharing manner, it is possible to realize efficient and complicated data transfer with an access pattern with a relatively small circuit scale.
なお、上記実施形態では、DMA装置に3つのプログラムカウンタを設けたが、本発明はこれに限定されるものではなく、2つまたは4つ以上のプログラムカウンタを設けたDMA装置も本発明の範疇に含まれうる。ただし、DMAポートの数以上のプログラムカウンタが設けられていることが望ましい。 In the above embodiment, three program counters are provided in the DMA device. However, the present invention is not limited to this, and a DMA device provided with two or four or more program counters falls within the scope of the present invention. Can be included. However, it is desirable to provide more program counters than the number of DMA ports.
101、102・・・ダイレクトメモリアクセスデバイス
2・・・メモリ
301、302、303・・・プログラムカウンタ
4・・・プログラムカウンタ選択部
5・・・命令メモリ
6・・・命令デコード部
601、602、603、604、605、606、607、608、609、610・・・比較器
611、612、613、614・・・ゲート
7・・・データ転送実行部
8・・・実行抑制・選択許可信号生成部
801・・・命令デコード部の出力から転送元または先を検出するブロック
802・・・ダイレクトメモリアクセスデバイスからのデータ転送要求を検出するブロック
803・・・デバイスがデータ転送要求を出していることを判定するブロック
804・・・データ転送実行部のデータ転送を抑制する信号を出力するブロック
805・・・プログラムカウンタを非選択とするための信号を生成するブロック
811、812、813、814・・・ゲート
821、822、823、824・・・ゲート
831、832、833、834・・・ゲート
841・・・ゲート
851、852、853、854・・・ゲート
855、856、857、858・・・フリップフロップ
8591、8592、8593・・・ゲート
9・・・第2選択許可信号生成部
901、9-4、9-7、912、924、936・・・フリップフロップ
910、917、922、929、934、941・・・フリップフロップ群
902、903、905、906、908、909・・・ゲート
911、913、914、915、916、918、919、920、921・・・ゲート
923、925、926、927、928、930、931、932、933・・・ゲート
935、937、938、939、940、942、943、944、945・・・ゲート
946、947、948・・・ゲート
10・・・プログラムカウンタ選択信号生成部
1001、1002、1003・・・フリップフロップ
1004、1005、1006・・・セレクタ
1007・・・デコーダ
1008、1009、1010・・・ゲート
1100・・・プログラムカウンタ更新部
1101、1102・・・セレクタ
1103・・・+1加算器
12・・・CPU
13・・・JPEGエンコーダ
14・・・記憶装置
101, 102: Direct
13
Claims (14)
複数のプログラムカウンタと、
前記複数のプログラムカウンタを1つずつ順に選択するプログラムカウンタ選択手段と、
前記ダイレクトメモリアクセス装置の起動に際して、前記メモリ及び前記デバイスのそれぞれが転送元及び転送先として示される転送命令を含む一連の命令が格納される命令メモリと、
前記プログラムカウンタ選択手段で選択されたプログラムカウンタが示すアドレスに格納されている前記命令メモリの命令を出力する出力手段と、
前記出力手段から出力された転送命令の示す前記転送元及び転送先に応じて、前記デバイスと前記メモリ間のダイレクトメモリアクセスによるデータ転送を実行するデータ転送実行手段と、
を備えることを特徴とするダイレクトメモリアクセス装置。 A direct memory access device connected to a memory connected to a memory bus and a plurality of devices capable of transferring data between the memories,
Multiple program counters,
Program counter selection means for sequentially selecting the plurality of program counters one by one;
When starting up the direct memory access device, an instruction memory storing a series of instructions including a transfer instruction in which each of the memory and the device is indicated as a transfer source and a transfer destination;
Output means for outputting an instruction of the instruction memory stored at an address indicated by the program counter selected by the program counter selection means;
Data transfer execution means for executing data transfer by direct memory access between the device and the memory in accordance with the transfer source and the transfer destination indicated by the transfer instruction output from the output means;
A direct memory access device comprising:
を更に備えることを特徴とする請求項1に記載のダイレクトメモリアクセス装置。 When the transfer source or transfer destination device indicated by the transfer command output from the command memory by the output unit does not output a transfer request corresponding to the transfer command, data transfer by the data transfer execution unit is suppressed. 2. The direct memory access device according to claim 1, further comprising control means for controlling so that a program counter indicating a transfer instruction without a transfer request is not selected by the program counter selection means.
を更に備えることを特徴とする請求項1又は2に記載のダイレクトメモリアクセス装置。 When a transfer request corresponding to the content of the transfer instruction output from the instruction memory is output from the device by the output means, selection of a program counter corresponding to the output transfer instruction by the program counter selection means If the transfer request corresponding to the content of the output transfer command is not output from the device, until the transfer request corresponding to the content of the output transfer command is output from the device, 3. The direct memory access device according to claim 1, further comprising selection permission means for disabling the program counter selection means from selecting a program counter corresponding to the transfer instruction.
を更に備えることを特徴とする請求項1乃至3の何れか1項に記載のダイレクトメモリアクセス装置。 If the instruction output from the instruction memory by the output means is an interruption instruction that interrupts the program counter indicated by the instruction, the program counter selection means prohibits selection of the program counter indicated by the interruption instruction. When the instruction output from the instruction memory is a restart instruction for restarting the program counter indicated by the instruction, the program counter selection means permits the selection of the program counter indicated by the restart instruction. The direct memory access device according to claim 1, further comprising: a selection permission unit.
前記出力手段によって前記命令メモリから出力された命令が、当該命令の示すプログラムカウンタを当該命令の示すトリガ命令が発生するまで中断させるトリガ待ち中断命令である場合に、当該トリガ待ち中断命令以前にトリガが発行されていない際には、前記プログラムカウンタ選択手段による前記トリガ待ち中断命令の示すプログラムカウンタの選択を不許可にし、当該トリガ待ち中断命令以前にトリガが発行されている際には、前記プログラムカウンタ選択手段による前記トリガ待ち中断命令の示すプログラムカウンタの選択を不許可にしない
ことを特徴とする請求項4に記載のダイレクトメモリアクセス装置。 The second selection permission means includes:
If the instruction output from the instruction memory by the output means is a trigger wait interruption instruction for interrupting the program counter indicated by the instruction until the trigger instruction indicated by the instruction is generated, trigger before the trigger wait interruption instruction. Is not issued, the selection of the program counter indicated by the trigger wait interruption instruction by the program counter selection means is disallowed, and when a trigger is issued before the trigger wait interruption instruction, 5. The direct memory access device according to claim 4, wherein selection of a program counter indicated by the trigger wait interruption instruction by the counter selection means is not disallowed.
ことを特徴とする請求項1乃至5の何れか1項に記載のダイレクトメモリアクセス装置。 The data transfer execution means includes a register, and when the instruction output from the instruction memory by the output means is a store instruction, the data transfer execution means transfers the data held in the register to the memory. 6. The data transfer execution means transfers data held in the memory to the register when the instruction outputted from the instruction memory by the output means is a load instruction. The direct memory access device according to any one of the above.
ことを特徴とする請求項1乃至6の何れか1項に記載のダイレクトメモリアクセス装置。 When the instruction output from the instruction memory by the output means is a loop instruction, the data transfer execution means repeatedly executes the instruction stored in the range indicated by the loop instruction in the instruction memory. The direct memory access device according to claim 1, wherein:
を更に備えることを特徴とする請求項1乃至7の何れか1項に記載のダイレクトメモリアクセス装置。 8. The program counter update unit according to claim 1, further comprising a program counter update unit that updates a value of a program counter indicating an instruction related to the data transfer each time the data transfer execution unit executes data transfer. The direct memory access device described in 1.
ことを特徴とする請求項4に記載のダイレクトメモリアクセス装置。 5. The direct memory access device according to claim 4, wherein when the resume instruction is executed prior to an interruption instruction specifying a program counter indicated by the resume instruction, the interruption instruction is invalidated.
前記複数のプログラムカウンタは、前記複数の領域のうち、それぞれ異なる領域のプログラムを実行する
ことを特徴とする請求項1乃至9の何れか1項に記載のダイレクトメモリアクセス装置。 The instruction memory stores an independent program in each of a plurality of areas,
10. The direct memory access device according to claim 1, wherein the plurality of program counters execute programs in different areas among the plurality of areas. 11.
前記命令メモリからの命令を解釈して、当該命令の示す前記転送元又は転送先及び処理内容を示す信号を前記データ転送実行手段へ出力する
ことを特徴とする請求項1乃至10の何れか1項に記載のダイレクトメモリアクセス装置。 The output means includes
11. The apparatus according to claim 1, wherein the instruction from the instruction memory is interpreted, and a signal indicating the transfer source or transfer destination indicated by the instruction and processing contents is output to the data transfer execution means. The direct memory access device according to item.
ことを特徴とする請求項1乃至11の何れか1項に記載のダイレクトメモリアクセス装置。 When the data transferred by the data transfer execution means is image data, one of the plurality of program counters refers to the image data in the x direction, and another program counter refers to the image data in the y direction. The direct memory access device according to claim 1, wherein the image data is rotated together with the data transfer by the data transfer execution unit.
ことを特徴とする請求項1乃至12の何れか1項に記載のダイレクトメモリアクセス装置。 The direct memory access apparatus according to claim 1, wherein the device is an encoder for compressing data.
前記複数のプログラムカウンタを1つずつ順に選択するプログラムカウンタ選択工程と、
前記命令メモリにおいて、前記プログラムカウンタ選択工程で選択されたプログラムカウンタが示すアドレスに格納されている命令を出力する出力工程と、
前記出力工程で出力された転送命令の示す前記転送先及び転送元に応じて前記デバイスと前記メモリ間のダイレクトメモリアクセスによるデータ転送を実行するデータ転送実行工程と、
を備えることを特徴とするダイレクトメモリアクセス装置の制御方法。 A memory connected to a memory bus, a plurality of devices capable of transferring data to and from the memory, a plurality of program counters, and each of the memory and the device when the direct memory access device is activated A control method of a direct memory access device comprising an instruction memory in which a series of instructions including a transfer instruction shown as above is stored,
A program counter selection step of sequentially selecting the plurality of program counters one by one;
In the instruction memory, an output step of outputting an instruction stored at an address indicated by the program counter selected in the program counter selection step;
A data transfer execution step of executing data transfer by direct memory access between the device and the memory according to the transfer destination and transfer source indicated by the transfer instruction output in the output step;
A method for controlling a direct memory access device, comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004305703A JP5062950B2 (en) | 2004-10-20 | 2004-10-20 | Direct memory access device and control method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004305703A JP5062950B2 (en) | 2004-10-20 | 2004-10-20 | Direct memory access device and control method thereof |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011084071A Division JP5328833B2 (en) | 2011-04-05 | 2011-04-05 | Direct memory access system and control method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006119824A JP2006119824A (en) | 2006-05-11 |
JP5062950B2 true JP5062950B2 (en) | 2012-10-31 |
Family
ID=36537664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004305703A Expired - Fee Related JP5062950B2 (en) | 2004-10-20 | 2004-10-20 | Direct memory access device and control method thereof |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5062950B2 (en) |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS56157541A (en) * | 1980-05-06 | 1981-12-04 | Kinki Keisokki Kk | Pseudo and multi central processor |
JPS62237531A (en) * | 1986-04-09 | 1987-10-17 | Fujitsu Ltd | Time-divided program output system |
JPH02301831A (en) * | 1989-05-17 | 1990-12-13 | Mitsubishi Electric Corp | Digital signal processor |
JPH03222043A (en) * | 1990-01-29 | 1991-10-01 | Hitachi Ltd | Micro processor and its program development device |
JP2834837B2 (en) * | 1990-03-30 | 1998-12-14 | 松下電工株式会社 | Programmable controller |
JP3144842B2 (en) * | 1991-08-09 | 2001-03-12 | 株式会社東芝 | Microprocessor |
JPH05324397A (en) * | 1992-05-26 | 1993-12-07 | Mitsubishi Electric Corp | Data processor |
JPH09223102A (en) * | 1995-12-14 | 1997-08-26 | Ricoh Co Ltd | Direct memory access controller |
JPH10116244A (en) * | 1996-08-21 | 1998-05-06 | Matsushita Graphic Commun Syst Inc | Method and device for data transfer |
JP3623379B2 (en) * | 1998-12-01 | 2005-02-23 | 富士通株式会社 | Microprocessor |
JP4017177B2 (en) * | 2001-02-28 | 2007-12-05 | スパンション エルエルシー | Memory device |
JP2004040637A (en) * | 2002-07-05 | 2004-02-05 | Canon Inc | Packet communication device and packet communication control method |
-
2004
- 2004-10-20 JP JP2004305703A patent/JP5062950B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2006119824A (en) | 2006-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI428763B (en) | Method and system for supporting interaction of a plurality of graphics processing units | |
KR100733943B1 (en) | Processor system, dma control circuit, dma control method, control method for dma controller, graphic processing method, and graphic processing circuit | |
TWI251750B (en) | An apparatus and method for selectable hardware accelerators in a data driven architecture | |
TWI423161B (en) | Graphics processing units, metacommand processing systems and metacommand executing methods | |
CN101529383B (en) | Task processing device | |
US20100110089A1 (en) | Multiple GPU Context Synchronization Using Barrier Type Primitives | |
JPWO2008087779A1 (en) | Array type processor and data processing system | |
JP2007219581A (en) | Memory controller, and electronic equipment mounted therewith | |
JP2734468B2 (en) | Processor | |
TW201342225A (en) | Method for determining instruction order using triggers | |
CN102436393B (en) | Task treatment device | |
KR20080104177A (en) | Firmware extendable commands for a microcontroller based flash memory digital controller | |
JPH03233630A (en) | Information processor | |
JP5062950B2 (en) | Direct memory access device and control method thereof | |
JP5328833B2 (en) | Direct memory access system and control method thereof | |
JP3628265B2 (en) | Multiprocessor system unit | |
JP4641391B2 (en) | Direct memory access device, control method therefor, and data processing device | |
JPS6049337B2 (en) | Pipeline control method | |
JP2522257B2 (en) | Image processing device | |
JP7137058B2 (en) | Arithmetic processing device, information processing device, and control method for information processing device | |
JPH11338735A (en) | System lsi | |
JP6239212B1 (en) | Simulation device, simulation method, and simulation program | |
JPH04308930A (en) | Electronic computer | |
JPS5938828A (en) | Data processing system | |
JPH04255995A (en) | Instruction cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071022 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20071022 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100528 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100604 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100802 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100913 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101111 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110106 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110405 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20110412 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20110422 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120705 |
|
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: 20120807 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5062950 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150817 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |