JP2006268753A - Dma回路及びコンピュータシステム - Google Patents
Dma回路及びコンピュータシステム Download PDFInfo
- Publication number
- JP2006268753A JP2006268753A JP2005089641A JP2005089641A JP2006268753A JP 2006268753 A JP2006268753 A JP 2006268753A JP 2005089641 A JP2005089641 A JP 2005089641A JP 2005089641 A JP2005089641 A JP 2005089641A JP 2006268753 A JP2006268753 A JP 2006268753A
- Authority
- JP
- Japan
- Prior art keywords
- dma
- transfer
- memory
- control information
- circuit
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 91
- 238000012546 transfer Methods 0.000 claims description 151
- 238000000034 method Methods 0.000 claims description 71
- 230000008569 process Effects 0.000 claims description 71
- 239000000872 buffer Substances 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 9
- 238000011161 development Methods 0.000 abstract description 7
- 230000009467 reduction Effects 0.000 abstract description 5
- 230000005540 biological transmission Effects 0.000 description 36
- 238000010586 diagram Methods 0.000 description 13
- 238000012544 monitoring process Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000004913 activation Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
【課題】複数のDMAチャネルをパラレルに動作するDMA回路において、回路規模を小さくし、且つ開発工数を削減する。
【解決手段】チャネルマネージャ回路(5)が、制御メモリ(40)の各DMAチャネルの制御情報を順次読み出し、解析し、分割されたDMA制御のシーケンスに応じて、ステート処理(DMA制御)を行う。更に、チャネルマネージャ回路(5)は、制御情報を更新し、且つ制御メモリ(40)に書き戻し、複数のDMAチャネルを時分割制御する。このため、回路規模を小さくでき、コストダウンに寄与するとともに、開発工数を削減できる。
【選択図】図3
【解決手段】チャネルマネージャ回路(5)が、制御メモリ(40)の各DMAチャネルの制御情報を順次読み出し、解析し、分割されたDMA制御のシーケンスに応じて、ステート処理(DMA制御)を行う。更に、チャネルマネージャ回路(5)は、制御情報を更新し、且つ制御メモリ(40)に書き戻し、複数のDMAチャネルを時分割制御する。このため、回路規模を小さくでき、コストダウンに寄与するとともに、開発工数を削減できる。
【選択図】図3
Description
本発明は、メモリのデータを直接アクセスして、転送するDMA回路及びコンピュータシステムに関し、特に、多チャンネルのDMA転送を行うDMA回路及びコンピュータシステムに関する。
コンピュータシステムのデータ処理速度の向上のため、CPU間のデータ転送に、DMA(Direct Memory Access)転送が利用されている。DMA転送は、CPUに指示されたDMA回路が、メモリを直接アクセスして、データを読み出し、他のCPUに転送するものである。近年、コンピュータシステムは、複雑化しており、多数のCPU間で、DMA転送する必要も生じている。
このようなコンピュータシステムでは、1つのCPUが、同時に、複数のCPUにDMA転送する要求がある。この場合、多数のDMAチャネルをDMA回路に実装することにより、CPUのDMA転送指示に応じて、パラレルで、DMA転送制御を実行でき、CPUの負荷の軽減が図れる。
図11は、従来のn個(nは複数)のDMAチャネルを実装したDMA回路の構成図である。図11に示すように、DMA送信モジュールは、MPU100と、メモリ110と、DMA送信回路120で構成される。DMA送信回路120は、メモリ110からのデータ受信側アービタ130と、転送すべきデータをバッファするデータバッファ140と、スイッチモジュール200へのデータ送出側アービタ150と、n個のDMA送信チャネル回路160−1〜160−nとを有する。
MPU100は、送信用データを、メモリ110上に書き込み、次に任意のDMA送信チャネル(例えば、160−1)に送信指示を出す。DMA送信チャネル160−1は、データ受信側アービタ130に、データ受信リクエスト(REQ) を出し、メモリ110からデータが取得する。メモリ110からのデータは、データバッファ140に格納される。
次に、DMA送信チャネル160−1は、データ受信側アービタ130からの完了(バッファ140への格納完了)を受けると、データ送出側アービタ150に送出リクエスト(REQ) を出す。これにより、データ送出側アービタ150からデータバッファ140の送信データが、データバス(ここでは、スイッチモジュール200)に送出される。DMA送信チャネル160−1は、データ送出側アービタ150から完了(CMP) が応答されるのを待ち、データの送出が完了すると、MPU100に完了通知を行う(例えば、特許文献1参照)。
これら一連の動作を、MPU100が、複数チャネル起動する為には、DMA送信回路(LSI)120内に、データ送信チャネル 160−1〜160−nを n個実装する必要があった。
特開平7−028477号公報(図1、図3)
このように、DMA回路に、複数のDMAチャネルを設けることにより、CPU(MPU)は、複数のDMA転送を行うのに、複数のDMAチャネルを起動して、パラレルにDMA制御することができる。
しかしながら、従来のDMA回路では、DMA送信チャネル回路を複数実装する必要があり、LSI(DMA送信回路)のゲート数(回路規模)の増大を招いていた。例えば、図11の構成例では、スイッチモジュール200に、8つのポートが設けられているため、最大7個のDMAチャネル回路を実装する必要がある。このため、ゲート数に応じて、パッケージを大きくする必要があり、LSIの単価、開発費が高くなるという問題が生じていた。
従って、本発明の目的は、少ない回路規模で、複数チャネルのDMA機能を実現するためのDMA回路及びコンピュータシステムを提供することにある。
又、本発明の他の目的は、DMA回路のLSIパッケージを縮小化して、コストダウンを実現するためのDMA回路及びコンピュータシステムを提供することにある。
更に、本発明の更に他の目的は、複数チャネルのDMA機能を持つ回路の開発工数を削減するためのDMA回路及びコンピュータシステムを提供することにある。
この目的の達成のため、本発明のDMA回路は、一連のDMA転送処理を分割した処理のステータスを含む制御情報を、複数のDMAチャネルの各々に対し格納する制御メモリと、前記メモリから読み出された転送データを格納するバッファメモリと、前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うDMA転送処理を、各DMAチャネル単位で時分割に行うチャネルマネージャ回路とを有し、前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のDMA転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のDMA転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻す。
又、本発明のコンピュータシステムは、転送データを格納するメモリと、前記メモリを直接アクセスして、データ転送するDMAチャネルを複数有するDMA回路と、前記DMA回路に転送指示を行うCPUとを有し、前記DMA回路は、一連のDMA転送処理を分割した処理のステータスを含む制御情報を、複数のDMAチャネルの各々に対し格納する制御メモリと、前記メモリから読み出された転送データを格納するバッファメモリと、前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うDMA転送処理を、各DMAチャネル単位で時分割に行うチャネルマネージャ回路とを有し、前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のDMA転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のDMA転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻す。
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記外部からの転送指示の判断処理と、前記メモリのデイスクリプタの読み出し処理と、前記デイスクリプタに従い、前記メモリの転送データの読み出し処理と、前記読み出した転送データを前記指示された転送先に転送する処理との一連のDMA転送処理を、前記制御情報の処理ステータスに従い、順次実行する。
更に、本発明では、好ましくは、前記制御メモリは、前記処理ステータスと、前記メモリの前記デイスクリプタの読み出し制御情報と、前記転送データの読み出し制御情報とを有する制御情報を、前記DMAチャネル単位に格納する。
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記制御メモリの前記デイスクリプタの読み出し制御情報が前記外部から書き込まれたかを判断し、前記書き込まれたDMAチャネルの前記DMA転送処理を開始する。
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記DMA転送処理開始を示す前記デイスクリプタの読み出し処理ステータスに、前記処理ステータスを更新する。
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記デイスクリプタの読み出し処理ステータスであることを解析し、前記外部から書き込まれた前記メモリのデイスクリプタの読み出し制御情報により、前記デイスクリプタの読み出し処理を実行する。
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記デイスクリプタの読み出し処理の実行により、前記読み出したデイスクリプタを、前記制御情報の前記転送データの読み出し制御情報に書き込み、前記処理ステータスを前記転送データの読み出し処理ステータスに更新する。
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記転送データの読み出し処理ステータスであることを解析して、前記転送データの読み出し制御情報により、前記メモリの前記転送データの読み出し処理を実行する。
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記転送データの読み出し処理の実行により、前記処理ステータスを前記転送データの前記バッファメモリの読み出し監視ステータスに更新する。
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記監視ステータスであることを解析して、前記メモリから前記バッファメモリへの前記転送データの読み出しが開始したかを監視する。
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記監視により、前記バッファメモリへの前記転送データの読み出しが開始したことを検出して、前記転送開始を指示する。
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記監視により、前記バッファメモリへの前記転送データの読み出しが完了したことを検出して、前記外部へ前記転送完了を通知する。
本発明では、チャネルマネージャ回路が、制御メモリの各DMAチャネルの制御情報を順次読み出し、解析し、分割されたDMA制御のシーケンスに応じて、ステート処理(DMA制御)を行い、制御情報を更新し、且つ制御メモリに書き戻す。これにより、複数のDMAチャネルを時分割制御するため、回路規模を小さくでき、コストダウンに寄与するとともに、開発工数を削減できる。
以下、本発明の実施の形態を、DMA回路、DMA制御、DMA回路を使用したコンピュータシステム、他の実施の形態の順で説明する。
[DMA回路]
図1は、本発明の一実施の形態のDMA回路の構成図、図2は、図1のRAMに格納される各チャネルの制御情報の説明図、図3は、図1のチャネルマネージャ回路の構成図、図4及び図5は、チャネルマネージャ回路の時分割制御処理の説明図である。
図1は、本発明の一実施の形態のDMA回路の構成図、図2は、図1のRAMに格納される各チャネルの制御情報の説明図、図3は、図1のチャネルマネージャ回路の構成図、図4及び図5は、チャネルマネージャ回路の時分割制御処理の説明図である。
図1に示すように、DMA回路(DMA送信回路)4は、CPU1と、メモリ(CPU1のローカルメモリ)2に接続されたメモリコントローラ3とに接続される。CPU1は、メモリコントローラ3を介しメモリ2に、DMA転送のためのデイスクリプタDISを書き込む。
DMA回路4は、CPU1とのCPUインタフェース制御部41,データ受信制御ブロック42、チャネルコントロールRAM(Random Access Memory)40、データバッファ44、パケット生成ブロック46、データ送信制御ブロック48、ライトゲート43、チャネルマネージャ回路5とを有する。
CPUインタフェース制御部41は、CPU1のソフトウェアによるチャネルコントロールRAM40の書き込み制御とチャネルマネージャ回路5への割込み制御を行う。データ送信制御ブロック48は、外部バスへのデータ送信制御を行う。データ受信制御ブロック42は、チャネルマネージャ回路5からの起動により、メモリコントローラ3にリード要求を発行する。
チャネルマネージャ回路5は、チャネルコントロールRAMの制御情報により、後述するように、仮想的に複数のDMA機能を実行する。メモリコントローラ3は、CPU配下のローカルメモリ2のアクセス制御を行う。データバッファ44は、データ受信制御ブロック42が、メモリ2から読み出したデータを一次格納するためのバッファである。パケット生成ブロック46は、チャネルマネージャ回路5からの起動により、送信データをパケットに整形する。
ライトゲート43は、CPU1からのライトアドレス/データ*1と、チャネルマネージャ回路5からのライトアドレス/データ*5を選択し、チャネルコントロールRAM40をライトアクセスする。
チャネルコントロールRAM40は、チャネルマネージャ回路5の各DMAチャネルの制御情報を格納しておくための内部RAMである。図2は、RAM40に格納されたDMAチャネルの制御情報の説明図である。図2に示すように、各DMAチャネルCh.0〜Ch.nに対し、現在のステータスCHST、メモリに展開されているデイスクリプタの数DSC_NUM、メモリ2に展開されているデイスクリプタのアドレスDADR,メモリ2に展開されているデータのアドレスSADR,メモリ2に展開されているデータのブロックサイズBSZ、メモリ2に展開されているデータの転送先アドレスTADRが、格納される。
即ち、デイスクリプタの数DSC_NUM、デイスクリプタのアドレスDADRは、CPU1により、書き込まれる。データのアドレスSADR,データのブロックサイズBSZ、データの転送先アドレスTADRは、メモリ2から読み込んだデイスクリプタの内容である。更に、ステータスCHSTは、図6以下で説明するDMA制御のシーケンスに応じて、チャネルマネージャ回路5により更新され、且つチャネルマネージャ回路5は、このステータスを解析して、DMA制御を行う。
図3は、チャネルマネージャ回路5の構成図であり、CPU1のアクセスがない時は、常時クロックを計数して、アドレス(リードアドレス)を発生するアドレスカウンタ52と、アドレスカウンタ52のアドレスを2クロック分遅延させ、ライトアドレスを発生する2段のフリップフロップ回路53,54と、データ受信ブロック42からのデータバリッド信号(メモリ2からデータ受信を示す)をラッチする第1のラッチ回路55と、データ受信ブロック42からのデータエンド信号(メモリ2からデータをバッファ44に格納終了を示す)をラッチする第2のラッチ回路56と、データ受信ブロック42からのメモリから読み出したデイスクリプタを格納するレジスタ58を有する。
更に、チャネルマネージャ回路5は、ステートマシンである解析ロジック回路50を有する。解析ロジック回路50は、アドレスカウンタ52のリードアドレスでRAM40から読み出したリードデータ(カウンタ値の示すDMAチャネルの制御情報)を、ラッチ回路55,56、レジスタ58の内容に応じて、解析し、制御情報の処理ステータスCHSTを更新し、RAM40のライトアドレスの示すチャネル位置(即ち、リードと同じDMAチャネル)に、更新した制御情報を書き込む。
即ち、図4及び図5に示すように、解析ロジック回路50は、1クロック目で、RAM40から読み出されたチャネルCh.0の制御情報に応じて、2クロック目で、制御情報に応じて、処理を行い、3クロック目で、RAM40に制御情報を書き込む。又、この2クロック目では、RAM40からチャネルCh.1の制御情報が読み出され、解析ロジック回路50は、3クロック目で、この制御情報に応じて、処理を行い、4クロック目で、RAM40に、チャネルCh.1の制御情報を書き込む。同様にして、チャネルCh.2、Ch.3…Ch.nを処理し、カウンタ52は、nカウントすると、「0」に戻るため、図4のように、チャネルCh.0の処理に戻る。
このように、チャネルマネージャ回路5は、図4に示すように、チャネルコントロールRAM40の各DMAチャネルの制御情報(ステータスCHST等)を順次読み出し、解析し、図6以下で説明するDMA制御のシーケンスに応じて、ステート処理(DMA制御)を行い、制御情報を更新し、且つRAM40に書き戻す。これにより、複数のDMAチャネルを時分割制御する。
[DMA制御]
次に、チャネルマネージャ回路5(特に、解析ロジック回路50)の制御情報の解析及びDMA制御を説明する。図6は、DMA制御のステート処理フロー図、図7は、その各ステップの処理内容の説明図である。
次に、チャネルマネージャ回路5(特に、解析ロジック回路50)の制御情報の解析及びDMA制御を説明する。図6は、DMA制御のステート処理フロー図、図7は、その各ステップの処理内容の説明図である。
(S10)解析ロジック回路50は、制御情報のステータスCHSTが、アイドルである、即ち、アイドルステートでは、DMA起動判定を行う。図7のように、アイドルでは、制御情報のデイスクリプト数DSC_NUMが「0」、即ち、図2で説明したように、CPU1が、デイスクリプト数を書き込んでいない時は、そのDMAチャネルは起動されていないため、解析ロジック回路50は、何も処理しない。一方、制御情報のデイスクリプト数DSC_NUMが「0」でない、即ち、図2で説明したように、CPU1が、デイスクリプト数を書き込んでいれば、DMAを起動と判定し、解析ロジック回路50は、制御情報のステータスCHSTを、ステップS12の「dreg」に書き換え、RAM40に書き戻す。
(S12)解析ロジック回路50は、制御情報のステータスCHSTが、「dreg」である、即ち、dregステートでは、デイスクリプタ要求を行う。図7のように、「dreg」では、データ受信ブロック42からのビジー信号*3(図1参照)がアサートされているかを調べる。ビジー信号*3がアサートされていれば、データ受信ブロック42は、他のDMAチャネルからの要求により、メモリ2をアクセス中のため、解析ロジック回路50は、何も処理しない。一方、ビジー信号*3がアサートされていない場合は、データ受信ブロック42は、アイドル中のため、解析ロジック回路50は、データ受信ブロック42にデータ受信を要求*6(図1参照)し、次に、制御情報のCPU1が書き込んだデイスクリプタアドレスDADRを、データ受信ブロック42に通知し、制御情報のステータスCHSTを、ステップS14の「dwait」に書き換え、RAM40に書き戻す。
(S14)次に、解析ロジック回路50は、制御情報のステータスCHSTが、「dwait」である、即ち、dwaitステートでは、デイスクリプタ書き込みを行う。図7のように、「dwait」では、データ受信ブロック42からデータバリッドdata_vを受けたかを第1のラッチ回路55のラッチ出力で調べる。データバリッドdata_vを受けていないと、データ受信ブロック42は、メモリ2から要求したデイスクリプタを受信していないため、解析ロジック回路50は、何も処理しない。一方、データバリッドdata_vを受けている場合は、データ受信ブロック42が、メモリ2から要求したデイスクリプタを受けているため、レジスタ58(図3参照)からデイスクリプタの内容を受け取り、制御情報のデイスクリプタ欄(SADR/DSZ/TADR)に書き込み、且つ制御情報のステータスCHSTを、ステップS16の「breq」に書き換え、制御情報をRAM40に書き戻す。
(S16)解析ロジック回路50は、制御情報のステータスCHSTが、「breq」である、即ち、breqステートでは、送信データ要求を行う。図7のように、「breq」では、データ受信ブロック42からのビジー信号*3(図1参照)がアサートされているかを調べる。ビジー信号*3がアサートされていれば、データ受信ブロック42は、他のDMAチャネルからの要求により、メモリ2をアクセス中のため、解析ロジック回路50は、何も処理しない。一方、ビジー信号*3がアサートされていない場合は、データ受信ブロック42は、アイドル中のため、解析ロジック回路50は、データ受信ブロック42にデータ受信を要求*6(図1参照)し、次に、制御情報のデイスクリプタ中の送信データアドレスSADRを、データ受信ブロック42に通知し、制御情報のデイスクリプタ数DSC_NUMを「1」デクリメントし、デイスクリプタアドレスDADRを「1」インクリメントし、ステータスCHSTを、ステップS18の「bst」に書き換え、RAM40に書き戻す。
(S18)次に、解析ロジック回路50は、制御情報のステータスCHSTが、「bst」である、即ち、bstステートでは、データ送信を行う。図7のように、「bst」では、データ受信ブロック42からデータバリッドdata_vを受けたかを第1のラッチ回路55のラッチ出力で、データ終了かを第2のラッチ回路56のラッチ出力で調べる。データバリッドdata_vとデータ終了end_fとを受けていない(両方とも、‘0’)と、データ受信ブロック42は、メモリ2から要求した送信データを受信していないため、解析ロジック回路50は、何も処理しない。一方、データバリッドdata_vを受けている(=‘1’)が、データ終了end_fを受けていない(=‘0’)場合は、データ受信ブロック42が、メモリ2から要求した送信データをバッファ44に格納中のため、事前に、パケット生成ブロック46に、制御情報のデータ転送先アドレスTADRを通知し、制御情報の書き換えはしない。更に、データバリッドdata_vがクリアされている(=‘0’)が、データ終了end_fを受けている(=‘1’)場合は、データ受信ブロック42が、メモリ2から要求した送信データをバッファ44に格納完了したため、制御情報のデータブロックサイズBSZを「1」デクリメントし、データアドレスSADRと転送先アドレスTADRを「1」インクリメントし、ステータスCHSTを、ステップS20の「cmp1」に書き換え、制御情報をRAM40に書き戻す。
(S20)次に、解析ロジック回路50は、制御情報のステータスCHSTが、cmp1である、即ち、cmp1ステートでは、要求されたデータを送信処理したかの判定を行う。図7のように、制御情報のデータブロックサイズBSZが「0」の時は、CPU1から要求されたDMA転送を終了したと判定し、制御情報のステータスCHSTを、「cmp2」に書き換え、RAM40に書き戻す。一方、制御情報のデータブロックサイズBSZが「0」でない場合には、未だ、要求されたデータを転送していないため、解析ロジック回路50は、制御情報のステータスCHSTを、ステップS12の「dreg」に書き換え、RAM40に書き戻す。これにより、ステップS12に戻る。
(S22)次に、解析ロジック回路50は、制御情報のステータスCHSTが、cmp2である、即ち、cmp2ステートでは、CPUインタフェース制御回路41に、割り込み(割り込み[n],チャネル番号n)を発行して、制御情報のステータスCHSTを、ステップS24の「cmp3」に書き換え、RAM40に書き戻す。
(S24)次に、CPU1のソフトウェアは、CPUインタフェース制御回路41を介し通知*14を受けると、割り込み番号からチャネル番号を判別し、CPUインタフェース制御回路41、ライトゲート43を介し、チャネルコントロールRAM40のチャネル[n]の制御情報のステータスCHSTを、「idle」に書き換える。これにより、ステップS10に復帰する。
図8及び図9は、図5のタイムチャートに、図6、図7の処理を付加したタイムチャートである。図8は、デイスクリタフェッチまでのタイムチャートを、図9は、データフェッチのタイムチャートを示す。尚、図8及び図9では、説明を分りやすくするため、DMAチャネルが、4つ、即ち、Ch.0〜Ch.3で説明する。
図8に示すように、リードアドレスが、Ch.0から順次進み、ステータスCHSTが、「idle」であったとする。クロックC3で、CPU1が、アクセスすると、クロックC4では、カウンタ52のカウントアップが抑止され、クロックC5で、CPU1が、RAM40のCh.0の制御情報のデイスクリプタ数DSC_NUMと、デイスクリプタアドレスDADRに、各々「M0」、「N0」を書き込んだものとする。
又、同様に、クロックC6で、CPU1が、アクセスすると、クロックC7では、カウンタ52のカウントアップが抑止され、クロックC8で、CPU1が、RAM40のCh.1の制御情報のデイスクリプタ数DSC_NUMと、デイスクリプタアドレスDADRに、各々「M1」、「N1」を書き込んだものとする。
このクロックC7では、クロックC6で、Ch.0の制御情報がリードされるため、チャネルマネージャ回路50は、クロックC7の処理で、ステップS10を実行し、クロックC8で、制御情報のステータスCHSTを、「dreg」に書き換える予定である。しかし、CPU1が優先されるため、クロックC9で、チャネルマネージャ回路50側が、ライトイネーブルとなり、クロックC9で、RAM40のCh.0の制御情報のステータスCHSTが、「dreg」に書き換えられる。
そして、Ch.0のサイクルに注目すると、次のCh.0の処理サイクル、即ち、クロックC12で、ステップS12のメモリリード要求(デイスクリプタフェッチ要求「N0」)が発せられ、クロックC13で、RAM40のCh.0のステータスCHSTは、「dwait」に書き換えられる。又、同様に、クロックC12のCh.1の制御情報がリードされるため、チャネルマネージャ回路50は、クロックC13の処理で、ステップS10を実行し、クロックC14で、制御情報のステータスCHSTを、「dreg」に書き換える。
クロックC17で,メモリコントローラ3からの応答があると、レジスタ58に要求されたデイスクリプタは保持される。そして、クロックC20のCh.0の順番で、Ch.0の制御情報がリードされ、チャネルマネージャ回路50は、クロックC21の処理で、ステップS14のdwaitの処理を実行し、クロックC22で、制御情報のステータスCHSTを、「breq」と、デイスクリプタの内容(SADR/TADR)とを書き換える。このようにして、デイスクリプタフェッチを行う。
同様に、図9で、Ch.0のサイクルに注目すると、次のCh.0の処理サイクル、即ち、クロックC5で、ステップS16のメモリリード要求(送信データフェッチ要求「P0」)が発せられ、クロックC6で、RAM40のCh.0のステータスCHSTは、「bst」に書き換えられる。尚、図9では、説明の簡単のため、クロックの符号を、図8と同様の符号で示してあるが、実際には、図8のクロック番号から連続するクロック番号である。
クロックC11で,メモリコントローラ3からの応答があると、クロックC12のCh.0の順番で、Ch.0の制御情報がリードされ、チャネルマネージャ回路50は、クロックC13の処理で、ステップS18のbstの処理を実行し、クロックC14で、パケット生成ブロック46に、送信先アドレスTADRを通知する。
更に、クロックC15で,メモリコントローラ3からのエンド応答があると、クロックC16のCh.0の順番で、Ch.0の制御情報がリードされ、チャネルマネージャ回路50は、クロックC17の処理で、ステップS18のbstの処理を実行し、クロックC18で、制御情報のステータスCHSTを、「cmp1」に書き換える。このようにして、データフェッチを行う。
このようにして、カウンタにより、順次、RAMの各チャネルの制御情報のステータスCHSTを読み出し、ステータスCHSTを解析し、これに応じたDMAステート制御を行う。このため、内部に、RAMを追加し、且つ解析ロジック回路50に、解析機能を付加するだけで、複数のDMAチャネル制御が可能となる。
[DMA回路を使用したコンピュータシステム]
図10は、本発明のDMA回路を適用したコンピュータシステムの構成図である。図10に示すように、CPU(MPU)1とメモリ2とDMA回路4とを搭載した処理モジュール6−0〜6−7が、8つ設けられ、且つスイッチモジュール8のノードに、各々の処理モジュール6−0〜6−7が接続される。
図10は、本発明のDMA回路を適用したコンピュータシステムの構成図である。図10に示すように、CPU(MPU)1とメモリ2とDMA回路4とを搭載した処理モジュール6−0〜6−7が、8つ設けられ、且つスイッチモジュール8のノードに、各々の処理モジュール6−0〜6−7が接続される。
このようなコンピュータシステムでは、1つの処理モジュール(例えば、6−0)が、スイッチモジュール8を介して、他の複数の処理モジュール(例えば、6−1,6−2,6−7)とDMA転送する。このような場合に、DMA回路4は、複数のDMAチャネルを持つことにより、CPU1は、1つの処理モジュールとのDMA転送を待つことなく、DMA回路4に複数の処理モジュールへのDMA転送を指示することができ、CPU1の負荷が軽減する他に、パラレルにDMA転送制御されるため、転送処理時間も短縮できる。
しかも、本発明の仮想的なパラレルDMA機能を使用することにより、各DMA回路の回路規模を小さくでき、コストダウンに寄与するとともに、開発工数の削減も実現できる。
特に、処理モジュール6−0〜6−7が、多数の記憶デバイス(例えば、ディイスク記憶デバイス)を、ホストからの指示により、アクセス制御するストレージ制御モジュールで構成した場合には、データの冗長化のため、処理モジュール間で、データのコピーが頻繁に行われる。このため、ストレージシステムに適用することは、好適である。
[他の実施の形態]
前述の実施の形態では、パケット転送の例で、説明したが、バースト転送にも適用できる。又、ディスク記憶デバイスは、磁気ディスク装置が好ましいが、光ディスク、光磁気ディスク、他の記憶媒体を使用した記憶装置にも適用できる。更に、DMAチャネル数は、必要に応じて、増減でき、要するに、2つ以上であれば、良い。
前述の実施の形態では、パケット転送の例で、説明したが、バースト転送にも適用できる。又、ディスク記憶デバイスは、磁気ディスク装置が好ましいが、光ディスク、光磁気ディスク、他の記憶媒体を使用した記憶装置にも適用できる。更に、DMAチャネル数は、必要に応じて、増減でき、要するに、2つ以上であれば、良い。
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
(付記1)外部からの転送指示に応じて、メモリを直接アクセスして、データ転送するDMAチャネルを複数有するDMA回路において、一連のDMA転送処理を分割した処理のステータスを含む制御情報を、複数のDMAチャネルの各々に対し格納する制御メモリと、前記メモリから読み出された転送データを格納するバッファメモリと、前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うDMA転送処理を、各DMAチャネル単位で時分割に行うチャネルマネージャ回路とを有し、前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のDMA転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のDMA転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻すことを特徴とするDMA回路。
(付記2)前記チャネルマネージャ回路は、前記外部からの転送指示の判断処理と、前記メモリのデイスクリプタの読み出し処理と、前記デイスクリプタに従い、前記メモリの転送データの読み出し処理と、前記読み出した転送データを前記指示された転送先に転送する処理との一連のDMA転送処理を、前記制御情報の処理ステータスに従い、順次実行することを特徴とする付記1のDMA回路。
(付記3)制御メモリは、前記処理ステータスと、前記メモリの前記デイスクリプタの読み出し制御情報と、前記転送データの読み出し制御情報とを有する制御情報を、前記DMAチャネル単位に格納することを特徴とする付記2のDMA回路。
(付記4)前記チャネルマネージャ回路は、前記制御メモリの前記デイスクリプタの読み出し制御情報が前記外部から書き込まれたかを判断し、前記書き込まれたDMAチャネルの前記DMA転送処理を開始することを特徴とする付記3のDMA回路。
(付記5)前記チャネルマネージャ回路は、前記DMA転送処理開始を示す前記デイスクリプタの読み出し処理ステータスに、前記処理ステータスを更新することを特徴とする付記4のDMA回路。
(付記6)前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記デイスクリプタの読み出し処理ステータスであることを解析し、前記外部から書き込まれた前記メモリのデイスクリプタの読み出し制御情報により、前記デイスクリプタの読み出し処理を実行することを特徴とする付記5のDMA回路。
(付記7)前記チャネルマネージャ回路は、前記デイスクリプタの読み出し処理の実行により、前記読み出したデイスクリプタを、前記制御情報の前記転送データの読み出し制御情報に書き込み、前記処理ステータスを前記転送データの読み出し処理ステータスに更新することを特徴とする付記6のDMA回路。
(付記8)前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記転送データの読み出し処理ステータスであることを解析して、前記転送データの読み出し制御情報により、前記メモリの前記転送データの読み出し処理を実行することを特徴とする付記7のDMA回路。
(付記9)前記チャネルマネージャ回路は、前記転送データの読み出し処理の実行により、前記処理ステータスを前記転送データの前記バッファメモリの読み出し監視ステータスに更新することを特徴とする付記8のDMA回路。
(付記10)前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記監視ステータスであることを解析して、前記メモリから前記バッファメモリへの前記転送データの読み出しが開始したかを監視することを特徴とする付記9のDMA回路。
(付記11)前記チャネルマネージャ回路は、前記監視により、前記バッファメモリへの前記転送データの読み出しが開始したことを検出して、前記転送開始を指示することを特徴とする付記10のDMA回路。
(付記12)前記チャネルマネージャ回路は、前記監視により、前記バッファメモリへの前記転送データの読み出しが完了したことを検出して、前記外部へ前記転送完了を通知することを特徴とする付記11のDMA回路。
(付記13)転送データを格納するメモリと、前記メモリを直接アクセスして、データ転送するDMAチャネルを複数有するDMA回路と、前記DMA回路に転送指示を行うCPUとを有し、前記DMA回路は、一連のDMA転送処理を分割した処理のステータスを含む制御情報を、複数のDMAチャネルの各々に対し格納する制御メモリと、前記メモリから読み出された転送データを格納するバッファメモリと、前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うDMA転送処理を、各DMAチャネル単位で時分割に行うチャネルマネージャ回路とを有し、前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のDMA転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のDMA転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻すことを特徴とするコンピュータシステム。
(付記14)前記チャネルマネージャ回路は、前記CPUからの転送指示の判断処理と、前記メモリのデイスクリプタの読み出し処理と、前記デイスクリプタに従い、前記メモリの転送データの読み出し処理と、前記読み出した転送データを前記指示された転送先に転送する処理との一連のDMA転送処理を、前記制御情報の処理ステータスに従い、順次実行することを特徴とする付記13のコンピュータシステム。
(付記15)制御メモリは、前記処理ステータスと、前記メモリの前記デイスクリプタの読み出し制御情報と、前記転送データの読み出し制御情報とを有する制御情報を、前記DMAチャネル単位に格納することを特徴とする付記14のコンピュータシステム。
(付記16)前記チャネルマネージャ回路は、前記制御メモリの前記デイスクリプタの読み出し制御情報が前記CPUから書き込まれたかを判断し、前記書き込まれたDMAチャネルの前記DMA転送処理を開始することを特徴とする付記15のコンピュータシステム。
(付記17)前記チャネルマネージャ回路は、前記DMA転送処理開始を示す前記デイスクリプタの読み出し処理ステータスに、前記処理ステータスを更新することを特徴とする付記16のコンピュータシステム。
(付記18)前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記デイスクリプタの読み出し処理ステータスであることを解析し、前記CPUから書き込まれた前記メモリのデイスクリプタの読み出し制御情報により、前記デイスクリプタの読み出し処理を実行することを特徴とする付記17のコンピュータシステム。
(付記19)前記チャネルマネージャ回路は、前記デイスクリプタの読み出し処理の実行により、前記読み出したデイスクリプタを、前記制御情報の前記転送データの読み出し制御情報に書き込み、前記処理ステータスを前記転送データの読み出し処理ステータスに更新することを特徴とする付記18のコンピュータシステム。
(付記20)前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記転送データの読み出し処理ステータスであることを解析して、前記転送データの読み出し制御情報により、前記メモリの前記転送データの読み出し処理を実行することを特徴とする付記19のコンピュータシステム。
チャネルマネージャ回路が、制御メモリの各DMAチャネルの制御情報を順次読み出し、解析し、分割されたDMA制御のシーケンスに応じて、ステート処理(DMA制御)を行い、制御情報を更新し、且つ制御メモリに書き戻して、複数のDMAチャネルを時分割制御するため、回路規模を小さくでき、開発工数を削減できるので、安価な装置を早期に提供できる。
1 CPU(外部)
2 メモリ
3 メモリコントローラ
4 DMA回路
5 チャネルマネージャ回路
40 制御メモリ(チャネルコントロールRAM)
42 データ受信制御ブロック
44 データバッファ
46 パケット生成ブロック
48 データ送信制御ブロック
50 解析ブロック
52 アドレスカウンタ
55,56 ラッチ回路
58 デイスクリプタレジスタ
2 メモリ
3 メモリコントローラ
4 DMA回路
5 チャネルマネージャ回路
40 制御メモリ(チャネルコントロールRAM)
42 データ受信制御ブロック
44 データバッファ
46 パケット生成ブロック
48 データ送信制御ブロック
50 解析ブロック
52 アドレスカウンタ
55,56 ラッチ回路
58 デイスクリプタレジスタ
Claims (5)
- 外部からの転送指示に応じて、メモリを直接アクセスして、データ転送するDMAチャネルを複数有するDMA回路において、
一連のDMA転送処理を分割した処理のステータスを含む制御情報を、複数のDMAチャネルの各々に対し格納する制御メモリと、
前記メモリから読み出された転送データを格納するバッファメモリと、
前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うDMA転送処理を、各DMAチャネル単位で時分割に行うチャネルマネージャ回路とを有し、
前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のDMA転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のDMA転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻す
ことを特徴とするDMA回路。 - 前記チャネルマネージャ回路は、前記外部からの転送指示の判断処理と、前記メモリのデイスクリプタの読み出し処理と、前記デイスクリプタに従い、前記メモリの転送データの読み出し処理と、前記読み出した転送データを前記指示された転送先に転送する処理との一連のDMA転送処理を、前記制御情報の処理ステータスに従い、順次実行する
ことを特徴とする請求項1のDMA回路。 - 前記制御メモリは、前記処理ステータスと、前記メモリの前記デイスクリプタの読み出し制御情報と、前記転送データの読み出し制御情報とを有する制御情報を、前記DMAチャネル単位に格納する
ことを特徴とする請求項2のDMA回路。 - 転送データを格納するメモリと、
前記メモリを直接アクセスして、データ転送するDMAチャネルを複数有するDMA回路と、
前記DMA回路に転送指示を行うCPUとを有し、
前記DMA回路は、
一連のDMA転送処理を分割した処理のステータスを含む制御情報を、複数のDMAチャネルの各々に対し格納する制御メモリと、
前記メモリから読み出された転送データを格納するバッファメモリと、
前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うDMA転送処理を、各DMAチャネル単位で時分割に行うチャネルマネージャ回路とを有し、
前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のDMA転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のDMA転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻す
ことを特徴とするコンピュータシステム。 - 前記チャネルマネージャ回路は、前記CPUからの転送指示の判断処理と、前記メモリのデイスクリプタの読み出し処理と、前記デイスクリプタに従い、前記メモリの転送データの読み出し処理と、前記読み出した転送データを前記指示された転送先に転送する処理との一連のDMA転送処理を、前記制御情報の処理ステータスに従い、順次実行する
ことを特徴とする請求項4のコンピュータシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005089641A JP2006268753A (ja) | 2005-03-25 | 2005-03-25 | Dma回路及びコンピュータシステム |
US11/220,617 US7774513B2 (en) | 2005-03-25 | 2005-09-08 | DMA circuit and computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005089641A JP2006268753A (ja) | 2005-03-25 | 2005-03-25 | Dma回路及びコンピュータシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006268753A true JP2006268753A (ja) | 2006-10-05 |
Family
ID=37036518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005089641A Pending JP2006268753A (ja) | 2005-03-25 | 2005-03-25 | Dma回路及びコンピュータシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7774513B2 (ja) |
JP (1) | JP2006268753A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009193282A (ja) * | 2008-02-14 | 2009-08-27 | Sharp Corp | データ処理装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4446968B2 (ja) * | 2006-02-22 | 2010-04-07 | シャープ株式会社 | データ処理装置 |
US7873757B2 (en) * | 2007-02-16 | 2011-01-18 | Arm Limited | Controlling complex non-linear data transfers |
JP5423483B2 (ja) * | 2010-03-04 | 2014-02-19 | 株式会社リコー | データ転送制御装置 |
US9563586B2 (en) | 2013-04-11 | 2017-02-07 | Apple Inc. | Shims for processor interface |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0728744A (ja) | 1993-07-13 | 1995-01-31 | Tec Corp | ダイレクト・メモリ・アクセス制御装置 |
US5768530A (en) * | 1995-12-28 | 1998-06-16 | Emc Corporation | High speed integrated circuit interface for fibre channel communications |
US6154793A (en) * | 1997-04-30 | 2000-11-28 | Zilog, Inc. | DMA with dynamically assigned channels, flexible block boundary notification and recording, type code checking and updating, commands, and status reporting |
US6188699B1 (en) * | 1997-12-11 | 2001-02-13 | Pmc-Sierra Ltd. | Multi-channel encoder/decoder |
EP1059588A1 (en) * | 1999-06-09 | 2000-12-13 | Texas Instruments Incorporated | Multi-channel dma with request scheduling |
US6874039B2 (en) * | 2000-09-08 | 2005-03-29 | Intel Corporation | Method and apparatus for distributed direct memory access for systems on chip |
US7185151B2 (en) * | 2002-09-19 | 2007-02-27 | Ricoh Company, Ltd. | Data processing device characterized in its data transfer method, program for executing on a computer to perform functions of the device, and computer readable recording medium storing such a program |
WO2004079583A1 (ja) | 2003-03-05 | 2004-09-16 | Fujitsu Limited | データ転送制御装置およびdmaデータ転送制御方法 |
US7043518B2 (en) * | 2003-07-31 | 2006-05-09 | Cradle Technologies, Inc. | Method and system for performing parallel integer multiply accumulate operations on packed data |
JP2005129001A (ja) * | 2003-09-30 | 2005-05-19 | Toshiba Corp | プログラム実行装置、マイクロプロセッサ及びプログラム実行方法 |
JP4456490B2 (ja) * | 2005-01-14 | 2010-04-28 | 富士通株式会社 | Dma装置 |
-
2005
- 2005-03-25 JP JP2005089641A patent/JP2006268753A/ja active Pending
- 2005-09-08 US US11/220,617 patent/US7774513B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009193282A (ja) * | 2008-02-14 | 2009-08-27 | Sharp Corp | データ処理装置 |
Also Published As
Publication number | Publication date |
---|---|
US20060218313A1 (en) | 2006-09-28 |
US7774513B2 (en) | 2010-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100592271C (zh) | 使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法 | |
US6115761A (en) | First-In-First-Out (FIFO) memories having dual descriptors and credit passing for efficient access in a multi-processor system environment | |
CN102414671B (zh) | 对于不同源的分级内存仲裁技术 | |
US5682551A (en) | System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto | |
JP4891405B2 (ja) | バリア操作の条件付き伝搬のための方法および装置 | |
JP2004171209A (ja) | 共有メモリデータ転送装置 | |
JP2001117859A (ja) | バス制御装置 | |
JP2012008919A (ja) | 情報処理装置 | |
KR20080105390A (ko) | 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치 | |
JP2006268753A (ja) | Dma回路及びコンピュータシステム | |
US20060095637A1 (en) | Bus control device, arbitration device, integrated circuit device, bus control method, and arbitration method | |
EP0969384B1 (en) | Method and apparatus for processing information, and providing medium | |
JPH11272603A (ja) | バスブリッジ装置及びトランザクションフォワード方法 | |
JP5382113B2 (ja) | 記憶制御装置及びその制御方法 | |
US5754802A (en) | Increasing data transfer efficiency for a read operation in a non-split transaction bus environment by substituting a write operation for the read operation | |
JP4693843B2 (ja) | メモリ制御装置及びメモリ制御方法 | |
JP5058116B2 (ja) | ストリーミングidメソッドによるdmac発行メカニズム | |
WO2007039933A1 (ja) | 演算処理装置 | |
CN116601616A (zh) | 一种数据处理装置、方法及相关设备 | |
JPS58105371A (ja) | 多重計算装置とそれらに用いる通信バスの構造 | |
JP3111052B2 (ja) | 複数のプロセッサに接続されたバスにデータを供給する方法およびシステム | |
US8239652B2 (en) | Data processing system | |
JP3206585B2 (ja) | バス制御装置、マスタ装置及びスレーブ装置並びにバス制御方法 | |
JPH1185673A (ja) | 共有バスの制御方法とその装置 | |
JPH0844661A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060726 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090630 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091027 |