JP4229242B2 - ダイレクトメモリアクセスコントローラ - Google Patents

ダイレクトメモリアクセスコントローラ Download PDF

Info

Publication number
JP4229242B2
JP4229242B2 JP2005132242A JP2005132242A JP4229242B2 JP 4229242 B2 JP4229242 B2 JP 4229242B2 JP 2005132242 A JP2005132242 A JP 2005132242A JP 2005132242 A JP2005132242 A JP 2005132242A JP 4229242 B2 JP4229242 B2 JP 4229242B2
Authority
JP
Japan
Prior art keywords
transfer
data
memory
tag
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005132242A
Other languages
English (en)
Other versions
JP2006309561A (ja
Inventor
浩二 石井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2005132242A priority Critical patent/JP4229242B2/ja
Priority to US11/380,719 priority patent/US20060248240A1/en
Publication of JP2006309561A publication Critical patent/JP2006309561A/ja
Application granted granted Critical
Publication of JP4229242B2 publication Critical patent/JP4229242B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling 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)

Description

本発明は、ダイレクトメモリアクセス(DMA)コントローラ及びそのデータ転送方法に関し、さらに詳しくは、複数の転送モードに対応したDMAコントローラ及びそのデータ転送方法に関する。
DMAコントローラは、マザーボード上にあるメモリと、フレキシブルディスクドライブ、ハードディスクドライブ、プリンタなどの周辺装置との間で、CPU(Central Possessing Unit)を経由することなくデータを転送するためのLSI(Large Scale Integrated circuit)である。DMAコントローラは一般に複数の通信経路(DMAチャネル)を有し、1つの機器が1つのチャネルを占有する。
多チャネルに対応するDMAコントローラでは、DMA要求/承認ハンドラがDMAチャネルの仲裁(アービトレーション)を行う。具体的には、DMA要求/承認ハンドラが要求を受け付けてサービスを提供すべきDMAチャネルを決定した後、共通の転送エンジンがその決定されたDMAチャネルに対してデータ転送を行う。
転送モードが少ない場合(たとえば2種類程度)、転送エンジンは全ての転送モードに対応可能であるが、転送モードが多い場合(たとえば7種類以上)、転送エンジンは全ての転送モードに対応することは困難である。仮に転送エンジンを全ての転送モードに対応可能に設計したとすると、転送エンジンの回路構成は複雑になり、かつ回路サイズも大きくなるという問題が生じる。
特開平11−45225号公報 特開2000−231537号公報
本発明の目的は、複雑な転送エンジンを用いることなく、複数の転送モードに対応可能なDMAコントローラを提供することである。
課題を解決するための手段及び発明の効果
本発明によるDMAコントローラは、メモリと周辺装置との間でデータを転送するDMAコントローラであって、転送エンジン制御回路と、バッファと、転送エンジンとを備える。転送エンジン制御回路は、データ転送の要求に応じて、指示パケットを生成する。指示パケットは、メモリから周辺装置への第1の転送方向又は周辺装置からメモリへの第2の転送方向を示す転送方向識別パラメータと、データの転送を開始すべきメモリのアドレスを示す転送開始メモリアドレスと、1回に転送すべきデータのワード数を示す転送ワード数と、転送開始メモリアドレス及び転送ワード数を含むタグの読み込み又はデータの転送を示すタグ識別フラグとを含む。バッファは、メモリと周辺装置との間に接続される。転送エンジンは、転送エンジン制御回路から与えられた指示パケットに応じて、メモリ及び周辺装置の間でデータを転送するようバッファを制御する。転送エンジン制御回路は、データ転送の要求に応じて、バルクモード、スライスモード及びチェーンモードの中から1つを設定するコントローラと、転送方向識別パラメータを生成する転送方向識別パラメータ生成器と、転送開始メモリアドレスを生成する転送開始メモリアドレス生成器と、転送ワード数を生成する転送ワード数生成器と、タグ識別フラグを生成するタグ識別フラグ生成器とを含む。転送方向識別パラメータ生成器は、データ転送の要求に含まれる転送方向識別パラメータを生成すべき転送方向識別パラメータとして設定する。転送開始メモリアドレス生成器は、コントローラによりバルクモードが設定された場合、データ転送の要求に含まれる転送開始メモリアドレスを生成すべき転送開始メモリアドレスとして設定し、コントローラによりスライスモードが設定された場合、最初はデータ転送の要求に含まれる転送開始メモリアドレスを生成すべき転送開始メモリアドレスとして設定し、その次は転送エンジンから返送された転送開始メモリアドレスを生成すべき転送開始メモリアドレスとして設定し、コントローラによりチェーンモードが設定された場合、最初はデータ転送の要求に含まれる転送開始メモリアドレスを生成すべき転送開始メモリアドレスとして設定し、その次は転送エンジンにより読み込まれたタグに含まれる転送開始メモリアドレスを生成すべき転送開始メモリアドレスとして設定する。転送ワード数生成器は、コントローラによりバルクモード又はスライスモードが設定された場合、データ転送の要求に含まれる転送ワード数を生成すべき転送ワード数として設定し、コントローラによりチェーンモードが設定された場合、最初は所定の転送ワード数を生成すべき転送ワード数として設定し、その次は転送エンジンにより読み込まれたタグに含まれる転送ワード数を生成すべき転送ワード数として設定する。タグ識別フラグ生成器は、コントローラによりバルクモード又はスライスモードが設定された場合、タグ識別フラグをデータの転送を示すように設定し、コントローラによりチェーンモードが設定された場合、最初はタグ識別フラグをタグの読み込みを示すように設定し、その次はタグ識別フラグをデータの転送を示すように設定する。転送エンジンは、指示パケットに含まれる転送方向識別パラメータが第1の転送方向を示すとき、メモリからのデータの読み出しを指示パケットに含まれる転送開始メモリアドレスから開始し、指示パケットに含まれる転送ワード数のデータをメモリから読み出して前記バッファに書き込み、バッファからデータを読み出して周辺装置に書き込むように、バッファを制御し、指示パケットに含まれる転送方向識別パラメータが第2の転送方向を示すとき、指示パケットに含まれる転送ワード数のデータを周辺装置から読み出してバッファに書き込み、メモリへのデータの書き込みを指示パケットに含まれる転送開始メモリアドレスから開始し、バッファからデータを読み出してメモリに書き込むように、バッファを制御し、メモリからのデータの読み出しを終了したとき、その次にデータを読み出すべき転送開始メモリアドレスを転送エンジン制御回路に与え、メモリへのデータの書き込みを終了したとき、その次にデータを書き込むべき転送開始アドレスを転送エンジン制御回路に与え、指示パケットに含まれるタグ識別フラグがタグの読み込みを示すとき、メモリ又は周辺装置から読み出したタグを転送エンジン制御回路に与える
このDMAコントローラでは、バルクモード、スライスモード及びチェーンモードに応じて転送エンジン制御回路により指示パケットが生成され、転送エンジンに与えられる。したがって、転送エンジンは単に指示パケットに従ってデータを転送しさえすればよい。よって、このDMAコントローラは、複雑な転送エンジンを用いることなく、複数の転送モードに対応することができる。
また、指示パケットに含まれる転送ワード数分のデータがメモリ及び周辺装置の間で転送されるので、転送エンジンはバルク転送及びスライス転送の区別を必要としない。
また、スライスモードにおいては、転送エンジンから転送エンジン制御回路に次の転送開始メモリアドレスが与えられ、次のデータ転送のために転送エンジン制御回路から転送エンジンに与えられる。したがって、データはスライスされて転送される。
また、チェーンモードにおいては、タグがメモリ又は周辺装置から読み出され、転送エンジン制御回路に与えられる。タグに記述された転送開始メモリアドレスからデータの読み出し又は書き込みが開始され、また、タグに記述された転送ワード数分のデータがメモリ及び周辺装置の間で転送される。
好ましくは、指示パケットはさらに、タグの転送か否かを示すタグ転送識別フラグを含む。転送エンジン制御回路はさらに、データ転送の要求に応じて、タグ転送識別フラグを生成するタグ転送識別フラグ生成器を含む。転送エンジンは、タグ転送識別フラグがタグの転送を示すとき、メモリ又は周辺装置から読み出されたタグをバッファに書き込む。
この場合、メモリ又は周辺装置から読み出されたタグはバッファに書き込まれるので、タグもデータと一緒にメモリ及び周辺装置の間で転送される。
好ましくは、転送エンジンは、第1及び第2の転送エンジンを含む。第1の転送エンジンは、メモリから周辺装置にデータを転送するようバッファを制御する。第2の転送エンジンは、周辺装置からメモリにデータを転送するようバッファを制御する。
この場合、転送エンジンが2つに分割されているため、メモリ側のバスプロトコルと周辺装置側のバスプロトコルが異なっていても、各転送エンジンは複雑にならない。
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
図1を参照して、本発明の実施の形態によるDMAコントローラ10は、転送エンジン制御回路12と、データバッファ14と、セレクタ16及び17と、メモリ・周辺装置転送エンジン18と、周辺装置・メモリ転送エンジン20とを備える。
転送エンジン制御回路12は、7種類の転送モードに応じてあらかじめ定められた指示パケットを生成して転送エンジン18又は20に与える。詳細は後述する。
データバッファ14は、PLB(Processor Local Bus)22及びOPB(On-chip Peripheral Bus)24の間に接続される。PLB22は128又は64ビットのバス幅を有し、メモリ(図示せず)に接続される。OPB24は32ビットのバス幅を有し、周辺装置(図示せず)に接続される。
セレクタ16はPLB22及びOPB24に接続され、かつデータバッファ14の入力に接続される。セレクタ16はPLB22又はOPB24を選択し、その選択されたバス22又は24から与えられたデータをデータバッファ14に与える。セレクタ17はPLB22及びOPB24に接続され、かつデータバッファ14の出力に接続される。セレクタ17はPLB22又はOPB24を選択し、データバッファ14から与えられたデータをその選択されたバス22又は24に与える。
メモリ・周辺装置転送エンジン18は、転送エンジン制御回路12から与えられた指示パケットに応じて、メモリから周辺装置にデータを転送するようデータバッファ14及びセレクタ16,17を制御する。周辺装置・メモリ転送エンジン20は、転送エンジン制御回路12から与えられた指示パケットに応じて、周辺装置からメモリにデータを転送するようデータバッファ14及びセレクタ16,17を制御する。
図2を参照して、転送エンジン制御回路12は、DMA要求/承認ハンドラ26と、複数の内部レジスタ28と、セレクタ30及び31と、OPBスレーブ32と、プリプロセッサ34とを備える。
DMA要求/承認ハンドラ26は、各チャネルから与えられるDMA要求信号DREQxに応じてチャネルからのデータ転送の要求を仲裁し、選択チャネル番号をセレクタ30及び31に与え、かつDMA承認信号DACKxを当該チャネルに返信する。
内部レジスタ28はチャネルに対応して設けられる。各内部レジスタ28は、対応するチャネル用のデータ転送に係る各種パラメータを一時的に記憶する。
セレクタ30及び31は、DMA要求/承認ハンドラ26からの選択チャネル番号に応じて1つの内部レジスタ28を選択する。セレクタ30は、転送エンジン18,20側からフィードバックされたタグ上の転送ワード数Xfer_Count及び次の転送開始メモリアドレスNext_Start_Addressをその選択された内部レジスタ28に与える。セレクタ31は、選択された内部レジスタ28から各種パラメータを読み出してプリプロセッサ34に与える。
OPBスレーブ32は、CPU(図示せず)からOPB24(図1)経由で与えられた指令に従って、選択された内部レジスタ28に所定のデータを書き込む。
プリプロセッサ34は、コントローラ36と、演算器38と、転送方向識別パラメータ生成器40と、転送開始メモリアドレス生成器42と、アドレス増減フラグ生成器44と、タグ識別フラグ生成器46と、タグ転送識別フラグ生成器48と、転送ワード数生成器50とを備える。
コントローラ36は、当該チャネルの内部レジスタ28から読み出されたパラメータに基づいて7種類の転送モードの中から1つを設定する。演算器38は、コントローラ36で設定された転送モードに応じて、当該チャネルの内部レジスタ28に設定されている転送ワード数(以下「所定スライスサイズ」という)をそのまま転送ワード数生成器50に与えたり、タグから得られた転送ワード数に1ワード、2ワード又は4ワードを加算したり、タグから得られた転送ワード数等を所定スライスサイズと比較したりする。
転送方向識別パラメータ生成器40は、当該チャネルの内部レジスタ28から読み出されたパラメータに基づいて転送方向識別パラメータm2d/d2mを生成する。転送方向識別パラメータm2d/d2mは、メモリから周辺装置への転送方向又は周辺装置からメモリへの転送方向を示す。m2d=1かつd2m=0のとき、データはメモリから周辺装置へ転送され、m2d=0かつd2m=1のとき、データは周辺装置からメモリへ転送される。
転送開始メモリアドレス生成器42は、当該チャネルの内部レジスタ28から読み出されたパラメータに基づいて転送開始メモリアドレスStart_Addressを生成する。転送開始メモリアドレスStart_Addressは、データの転送を開始すべきメモリのアドレスを示す。
アドレス増減フラグ生成器44は、当該チャネルの内部レジスタ28から読み出されたパラメータに基づいてアドレス増減フラグAddress_Inc_NDecを生成する。アドレス増減フラグAddress_Inc_NDecは、データを読み出すべき又は書き込むべきアドレスを増加させるか又は減少させるかを示す。Address_Inc_NDec=1のとき、アドレスはインクリメントされ、Address_Inc_NDec=0のとき、アドレスはデクリメントされる。
タグ識別フラグ生成器46は、コントローラ36に設定された転送モードに応じてタグ識別フラグThis_Is_Tagを生成する。タグ識別フラグThis_Is_Tagは、タグの取り込みか又はデータの転送かを示す。This_Is_Tag=1のとき、タグが転送エンジン制御回路12に取り込まれ、This_Is_Tag=0のとき、データがメモリと周辺装置との間で転送される。
タグ転送識別フラグ生成器48は、コントローラ36に設定された転送モードに応じてタグ転送識別フラグTag_Xferを生成する。タグ転送識別フラグTag_Xferは、取り込まれたタグも転送するか否か、つまりデータバッファ14に書き込むか否かを示す。
転送ワード数生成器50は、演算器38による演算結果に応じて転送ワード数Xfer_Countを生成する。転送ワード数Xfer_Countは、1回に転送すべきデータのワード数を示す。
プリプロセッサ34は、これらのパラメータ等を含む指示パケットをメモリ・周辺装置転送エンジン18又は周辺装置・メモリ転送エンジン20に与える。
このDMAコントローラ10は7種類の転送モード、具体的には、(1)バルクモード、(2)スライスモード、(3)チェーンモードC1、(4)チェーンモードC2、(5)チェーンモードC3、(6)チェーンモードC4、及び(7)チェーンモードC5を有する。以下、これら転送モードの動作を1つずつ説明する。
(1)バルクモード
本モードでは、データがスライスされることなく一括して転送される。詳細は次のとおり。
m2d=1,d2m=0又はm2d=0,d2m=1の転送方向識別パラメータが当該チャネルの内部レジスタ28から読み出され、転送方向識別パラメータ生成器40に設定される。また、転送開始メモリアドレスStart_Addressが当該チャネルの内部レジスタ28から読み出され、転送開始メモリアドレス生成器42に設定される。また、Address_Inc_NDec=1又は0のアドレス増減フラグが当該チャネルの内部レジスタ28から読み出され、アドレス増減フラグ生成器44に設定される。また、コントローラ36がバルクモードを検出し、これに応じて、This_Is_Tag=0のタグ識別フラグがタグ識別フラグ生成器46に設定され、かつTag_Xfer=0のタグ転送識別フラグがタグ転送識別フラグ生成器48に設定される。さらに、転送ワード数Xfer_Countが当該チャネルの内部レジスタ28から読み出され、演算器38で変更されることなく、そのまま転送ワード数生成器50に設定される。
プリプロセッサ34はこれらのパラメータ等を含む指示パケットを、m2d=1,d2m=0の場合はメモリ・周辺装置転送エンジン18に与え、m2d=0,d2m=1の場合は周辺装置・メモリ転送エンジン20に与える。
図3(a)に示すように、メモリ・周辺装置転送エンジン18は、転送ワード数Xfer_Count分のバルクデータをメモリからセレクタ16経由でデータバッファ14に書き込み、かつデータバッファ14から読み出したデータをセレクタ17経由で周辺装置に送出する。メモリからのデータの読み出しは、転送開始メモリアドレスStart_Addressから開始し、アドレスは、Address_Inc_NDec=1の場合は1つずつ増加され、Address_Inc_NDec=0の場合は1つずつ減少される。
一方、周辺装置・メモリ転送エンジン20は、転送ワード数Xfer_Count分のバルクデータを周辺装置からセレクタ16経由でデータバッファ14に書き込み、かつデータバッファ14から読み出したデータをセレクタ17経由でメモリに書き込む。メモリへのデータの書き込みは、転送開始メモリアドレスStart_Addressから開始し、アドレスは、Address_Inc_NDec=1の場合は1つずつ増加され、Address_Inc_NDec=0の場合は1つずつ減少される。
(2)スライスモード
本モードでは、データがnワードずつm個にスライスされ、転送される。ここでも、転送方向識別パラメータm2d/m2d、転送開始メモリアドレスStart_Address、アドレス増減フラグAddress_Inc_NDec、タグ識別フラグThis_Is_Tag、タグ転送識別フラグTag_Xfer=0、及び転送ワード数Xfer_Countは、上記と同様に設定される。
ただし、図3(b)に示すように、最初のスライスデータについては、CPUから与えられた転送開始メモリアドレスStart_Addressから転送が開始されるが、2番目以降のスライスデータについては、転送エンジン18,20からフィードバックされた次の転送開始メモリアドレスNext_Start_Addressから転送が開始される。したがって本モードでは、転送エンジン18,20は、1つのスライスデータを転送し終えた後、最終アドレスに1を加算し、次の転送開始メモリアドレスNext_Start_Addressとして転送エンジン制御回路12に返送する。この次の転送開始メモリアドレスNext_Start_Addressは、転送開始メモリアドレスStart_Addressとして当該チャネルの内部レジスタ28に書き込まれる。
この場合、図3(b)に示すように、転送エンジン18,20は、データを転送ワード数Xfer_Countごとにスライスしてメモリ及び周辺装置間で転送する。
(3)チェーンモードC1
チェーンモードはディスクリプタモードとも呼ばれ、転送開始メモリアドレスStart_Address及び転送ワード数Xfer_CountをCPUからではなく、メモリから取得する。メモリには、図4に示すように、タグ(ディスクリプタ)として、転送開始メモリアドレスStart_Address及び転送ワード数Xfer_Countが書き込まれている。
チェーンモードでは、最初にタグが読み込まれ、次にデータが転送される。データは、タグ内の転送開始メモリアドレスStart_Addressから読み出され、タグ内の転送ワード数Xfer_Countだけ転送される。特に、チェーンモードC1では、タグは1ワードで、タグ自身も転送される。また、データはメモリから周辺装置にバルク転送される。詳細は次のとおり。
最初にメモリからタグを読み込むために、転送方向識別パラメータがm2d=1,d2m=0に設定され、転送開始メモリアドレスStart_Addressが当該チャネルの内部レジスタ28から読み出され、タグ用の転送開始メモリアドレスとして設定される。また、アドレス増減フラグがAddress_Inc_NDec=1に設定され、タグ識別フラグがThis_Is_Tag=1に設定される。また、タグ転送識別フラグがTag_Xfer=1に設定され、転送ワード数Xfer_Countが1ワードに設定される。
m2d=1,d2m=0であるから、プリプロセッサ34はこれらのパラメータ等を含む指示パケットをメモリ・周辺装置転送エンジン18に与える。メモリ・周辺装置転送エンジン18はメモリにアクセスし、転送開始メモリアドレスStart_Addressから1ワード分のデータ、つまりタグを読み込み、転送エンジン制御回路12に与える。読み込まれたタグは、当該チャネルの内部レジスタ28に書き込まれるとともに、データバッファ14にも書き込まれる。
次にデータをメモリから周辺装置に転送するために、転送方向識別パラメータがm2d=1,d2m=0に設定され、タグから得られた転送開始メモリアドレスStart_Addressが当該チャネルの内部レジスタ28から読み出され、データ用の転送開始メモリアドレスとして設定される。また、アドレス増減フラグがAddress_Inc_NDec=1又は0に設定され、タグ識別フラグがThis_Is_Tag=0に設定される、かつタグ転送識別フラグがTag_Xfer=1に設定される。また、演算器38により、タグから得られた転送ワード数Xfer_Countに1(タグのワード数)が加算され、その総ワード数が転送ワード数Xfer_Countとして設定される。
m2d=1,d2m=0であるから、プリプロセッサ34はこれらのパラメータ等を含む指示パケットをメモリ・周辺装置転送エンジン18に与える。その結果、図5(a)に示すように、メモリ・周辺装置転送エンジン18は、1ワードのタグを転送した後、転送ワード数Xfer_Count分のバルクデータをメモリから周辺装置に転送する。
(4)チェーンモードC2
チェーンモードC2では、チェーンモードC1と異なり、タグ自身は転送されない。したがって、最初にメモリからタグを読み込むために設定されるパラメータ等は、タグ転送識別フラグがTag_Xfer=0に設定される点を除き、上記チェーンモードC1と同じである。また、次にデータを転送するために設定されるパラメータ等は、タグから得られた転送ワード数Xfer_Countがそのまま転送ワード数Xfer_Countとして設定される点を除き、上記チェーンモードC1と同じである。
この場合、図5(b)に示すように、メモリ・周辺装置転送エンジン18は、転送ワード数Xfer_Count分のバルクデータ(タグを含まない)をメモリから周辺装置に転送する。
(5)チェーンモードC3
チェーンモードC3では、タグは2ワードで、タグ自身は転送されない。また、データはメモリから周辺装置にスライス転送される。したがって、最初にメモリからタグを読み込むために設定されるパラメータ等は、転送ワード数Xfer_Countが2ワードに設定される点を除き、上記チェーンモードC2と同じである。また、次にデータを転送するために設定されるパラメータ等は、転送ワード数Xfer_Countを除き、チェーンモードC2と同じである。転送ワード数Xfer_Countの設定は次のとおり。
演算器38は、タグから得られた転送ワード数又はまだ転送されずに残っているデータのワード数(以下「残ワード数」という)を、所定スライスサイズ(当該チャネルの内部レジスタ28に設定されている転送ワード数)と比較する。その結果、タグから得られた転送ワード数又は残ワード数が所定スライスサイズよりも大きい場合、転送ワード数Xfer_Countは所定スライスサイズに設定され、そうでない場合、タグから得られた転送ワード数又は残ワード数に設定される。
この場合、図5(c)に示すように、メモリ・周辺装置転送エンジン18は、データを転送ワード数Xfer_Countごとにスライスしてメモリから周辺装置に転送する。
(6)チェーンモードC4
チェーンモードC4では、チェーンモードC3と異なり、タグは4ワードで、タグ自身も転送される。したがって、最初にメモリからタグを読み込むために設定されるパラメータ等は、タグ転送識別フラグがTag_Xfer=1に設定され、かつ転送ワード数Xfer_Countが4ワードに設定される点を除き、チェーンモードC3と同じである。また、次にデータを転送するために設定されるパラメータ等は、転送ワード数Xfer_Countを除き、チェーンモードC3と同じである。転送ワード数Xfer_Countの設定は次のとおり。
演算器38は、タグから得られた転送ワード数又は残ワード数にタグ分の4ワードを加算した総ワード数を所定スライスサイズと比較する。その結果、総ワード数が所定スライスサイズよりも大きい場合、転送ワード数Xfer_Countは所定スライスサイズに設定され、そうでない場合、総ワード数に設定される。
この場合、図5(d)に示すように、メモリ・周辺装置転送エンジン18は、4ワードのタグを転送した後、データを転送ワード数Xfer_Countごとにスライスしてメモリから周辺装置に転送する。
(7)チェーンモードC5
チェーンモードC5では、チェーンモードC3と異なり、タグは4ワードで、データは周辺装置からメモリに転送される。なお、タグ自身は転送されない。したがって、最初にメモリからタグを読み込むために設定されるパラメータ等は、転送方向識別パラメータm2d/d2m、転送開始メモリアドレスStart_Address及び転送ワード数Xfer_Countを除き、チェーンモードC3と同じである。転送方向識別パラメータはm2d=0,d2m=1に設定され、転送開始メモリアドレスStart_Addressはダミーアドレス(たとえば0)に設定され、転送ワード数Xfer_Countは4ワードに設定される。
また、次にデータを転送するために設定されるパラメータ等は、転送方向識別パラメータm2d/d2mを除き、チェーンモードC3と同じである。転送方向識別パラメータはm2d=0,d2m=1に設定される。なお、転送開始メモリアドレスはタグから得られた転送開始メモリアドレスStart_Addressに設定されるが、チェーンモードC5ではデータが周辺装置からメモリに転送されるので、転送元ではなく、転送先のメモリのアドレスを示す。
この場合、図5(e)に示すように、周辺装置・メモリ転送エンジン20は、データを転送ワード数Xfer_Countごとにスライスして周辺装置からメモリに転送する。
次に、図6を参照し、チャネルCh0→チャネルCh1→チャネルCh2の順にDMA要求/承認ハンドラ26が要求を受け付けた場合の動作を説明する。
チャネルCh0がメモリから周辺装置にデータをバルクで転送するよう要求してきた場合、そのための指示パケットIP1がプリプロセッサ34からメモリ・周辺装置転送エンジン18に与えられる。
次に、チャネルCh1がメモリから周辺装置にデータをチェーンモードで転送するよう要求してきた場合、最初に、タグを読み込むための指示パケットIP2がプリプロセッサ34からメモリ・周辺装置転送エンジン18に与えられ、続いて、データを転送するための指示パケットIP3がプリプロセッサ34からメモリ・周辺装置転送エンジン18に与えられる。
そして、チャネルCh2が周辺装置からメモリにデータをチェーンモードで転送するよう要求してきた場合、最初に、タグを読み込むための指示パケットIP4がプリプロセッサ34から周辺装置・メモリ転送エンジン20に与えられ、続いて、データを転送するための指示パケットIP5がプリプロセッサ34から周辺装置・メモリ転送エンジン20に与えられる。
以上、本発明の実施の形態によれば、プリプロセッサ34において7種類の転送モードに応じて指示パケットが生成され、転送エンジン18,20に与えられる。したがって、転送エンジン18,20は単に指示パケットに従ってデータを転送しさえすればよく、回路構成を複雑化することなく、7種類の転送モードに対応することができる。また、指示パケットに含まれる転送ワード数Xfer_Count分のデータが転送されるので、転送エンジン18,20はバルク転送及びスライス転送の区別を必要としない。さらに、転送エンジン18,20からプリプロセッサ34に次の転送開始メモリアドレスNext_Start_Addressが与えられ、次のデータ転送のためにプリプロセッサ34から転送エンジン18,20に与えられる。したがって、データはスライスされて転送される。
上記実施の形態には7種類の転送モードがあるが、この数は何ら限定されない。7種類の転送モードのうちいくつかはなくてもよく、逆に、これら以外の転送モードが追加されてもよい。
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
本発明の実施の形態によるDMAコントローラの構成を示す機能ブロック図である。 図1に示したDMAコントローラ中の転送エンジン制御回路の構成を示す機能ブロック図である。 図1に示したDMAコントローラの動作を示すタイミング図であり、(a)はバルクモードを示し、(b)はスライスモードを示す。 図1に示したDMAコントローラがチェーンモードで参照するためのメモリ上のタグを示すメモリマップである。 図1に示したDMAコントローラのチェーンモードにおける動作を示すタイミング図である。 図1に示したDMAコントローラでプリプロセッサから転送エンジンに与えられる指示パケットを示すタイミング図である。
符号の説明
10 コントローラ
12 転送エンジン制御回路
14 データバッファ
16,17,30,31 セレクタ
18 メモリ・周辺装置転送エンジン
20 周辺装置・メモリ転送エンジン
22 PLB
24 OPB
26 DMA要求/承認ハンドラ
28 内部レジスタ
34 プリプロセッサ
36 コントローラ
38 演算器
40 転送方向識別パラメータ生成器
42 転送開始メモリアドレス生成器
44 アドレス増減フラグ生成器
46 タグ識別フラグ生成器
48 タグ転送識別フラグ生成器
50 転送ワード数生成器

Claims (4)

  1. メモリと周辺装置との間でデータを転送するダイレクトメモリアクセスコントローラであって、
    データ転送の要求に応じて、前記メモリから前記周辺装置への第1の転送方向又は前記周辺装置から前記メモリへの第2の転送方向を示す転送方向識別パラメータと、データの転送を開始すべきメモリのアドレスを示す転送開始メモリアドレスと、1回に転送すべきデータのワード数を示す転送ワード数と、前記転送開始メモリアドレス及び前記転送ワード数を含むタグの読み込み又はデータの転送を示すタグ識別フラグとを含む指示パケットを生成する転送エンジン制御回路と、
    前記メモリと前記周辺装置との間に接続されるバッファと、
    前記転送エンジン制御回路から与えられた指示パケットに応じて、前記メモリと前記周辺装置との間でデータを転送するよう前記バッファを制御する転送エンジンとを備え
    前記転送エンジン制御回路は、
    前記データ転送の要求に応じて、バルクモード、スライスモード及びチェーンモードの中から1つを設定するコントローラと、
    前記転送方向識別パラメータを生成する転送方向識別パラメータ生成器と、
    前記転送開始メモリアドレスを生成する転送開始メモリアドレス生成器と、
    前記転送ワード数を生成する転送ワード数生成器と、
    前記タグ識別フラグを生成するタグ識別フラグ生成器とを含み、
    前記転送方向識別パラメータ生成器は、前記データ転送の要求に含まれる転送方向識別パラメータを前記生成すべき転送方向識別パラメータとして設定し、
    前記転送開始メモリアドレス生成器は、前記コントローラによりバルクモードが設定された場合、前記データ転送の要求に含まれる転送開始メモリアドレスを前記生成すべき転送開始メモリアドレスとして設定し、前記コントローラによりスライスモードが設定された場合、最初は前記データ転送の要求に含まれる転送開始メモリアドレスを前記生成すべき転送開始メモリアドレスとして設定し、その次は前記転送エンジンから返送された転送開始メモリアドレスを前記生成すべき転送開始メモリアドレスとして設定し、前記コントローラによりチェーンモードが設定された場合、最初は前記データ転送の要求に含まれる転送開始メモリアドレスを前記生成すべき転送開始メモリアドレスとして設定し、その次は前記転送エンジンにより読み込まれたタグに含まれる転送開始メモリアドレスを前記生成すべき転送開始メモリアドレスとして設定し、
    前記転送ワード数生成器は、前記コントローラによりバルクモード又はスライスモードが設定された場合、前記データ転送の要求に含まれる転送ワード数を前記生成すべき転送ワード数として設定し、前記コントローラによりチェーンモードが設定された場合、最初は所定の転送ワード数を前記生成すべき転送ワード数として設定し、その次は前記転送エンジンにより読み込まれたタグに含まれる転送ワード数を前記生成すべき転送ワード数として設定し、
    前記タグ識別フラグ生成器は、前記コントローラによりバルクモード又はスライスモードが設定された場合、前記タグ識別フラグをデータの転送を示すように設定し、前記コントローラによりチェーンモードが設定された場合、最初は前記タグ識別フラグをタグの読み込みを示すように設定し、その次は前記タグ識別フラグをデータの転送を示すように設定し、
    前記転送エンジンは、前記指示パケットに含まれる転送方向識別パラメータが前記第1の転送方向を示すとき、前記メモリからのデータの読み出しを前記指示パケットに含まれる転送開始メモリアドレスから開始し、前記指示パケットに含まれる転送ワード数のデータを前記メモリから読み出して前記バッファに書き込み、前記バッファからデータを読み出して前記周辺装置に書き込むように、前記バッファを制御し、前記指示パケットに含まれる転送方向識別パラメータが前記第2の転送方向を示すとき、前記指示パケットに含まれる転送ワード数のデータを前記周辺装置から読み出して前記バッファに書き込み、前記メモリへのデータの書き込みを前記指示パケットに含まれる転送開始メモリアドレスから開始し、前記バッファからデータを読み出して前記メモリに書き込むように、前記バッファを制御し、前記メモリからのデータの読み出しを終了したとき、その次にデータを読み出すべき転送開始メモリアドレスを前記転送エンジン制御回路に与え、前記メモリへのデータの書き込みを終了したとき、その次にデータを書き込むべき転送開始アドレスを前記転送エンジン制御回路に与え、前記指示パケットに含まれるタグ識別フラグがタグの読み込みを示すとき、前記メモリ又は前記周辺装置から読み出したタグを前記転送エンジン制御回路に与える、ダイレクトメモリアクセスコントローラ。
  2. 請求項に記載のダイレクトメモリアクセスコントローラであって、
    前記指示パケットはさらに、前記タグの転送か否かを示すタグ転送識別フラグを含み、
    前記転送エンジン制御回路はさらに、
    前記データ転送の要求に応じて、前記タグ転送識別フラグを生成するタグ転送識別フラグ生成器を含み、
    前記転送エンジンは、前記タグ転送識別フラグがタグの転送を示すとき、前記メモリ又は前記周辺装置から読み出されたタグを前記バッファに書き込むダイレクトメモリアクセスコントローラ。
  3. 請求項1又は請求項2に記載のダイレクトメモリアクセスコントローラであって、
    前記指示パケットはさらに、前記メモリからデータを読み出すべき又は前記メモリにデータを書き込むべきアドレスの増加又は減少を示すアドレス増減フラグを含み、
    前記転送エンジン制御回路はさらに、
    前記データ転送の要求に応じて、前記アドレス増減フラグを生成するアドレス増減フラグ生成器を含み、
    前記転送エンジンは、前記アドレス増減フラグがアドレスの増加を示すとき、前記メモリからデータを読み出すべき又は前記メモリにデータを書き込むべきアドレスをインクリメントし、前記アドレス増減フラグがアドレスの減少を示すとき、前記メモリからデータを読み出すべき又は前記メモリにデータを書き込むべきアドレスをデクリメントする、ダイレクトメモリアクセスコントローラ。
  4. 請求項1〜請求項のいずれか1項に記載のダイレクトメモリアクセスコントローラであって、
    前記転送エンジンは、
    前記メモリから前記周辺装置にデータを転送するよう前記バッファを制御する第1の転送エンジンと、
    前記周辺装置から前記メモリにデータを転送するよう前記バッファを制御する第2の転送エンジンとを含むダイレクトメモリアクセスコントローラ。
JP2005132242A 2005-04-28 2005-04-28 ダイレクトメモリアクセスコントローラ Expired - Fee Related JP4229242B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005132242A JP4229242B2 (ja) 2005-04-28 2005-04-28 ダイレクトメモリアクセスコントローラ
US11/380,719 US20060248240A1 (en) 2005-04-28 2006-04-28 Multi mode dma controller with transfer packet preprocessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005132242A JP4229242B2 (ja) 2005-04-28 2005-04-28 ダイレクトメモリアクセスコントローラ

Publications (2)

Publication Number Publication Date
JP2006309561A JP2006309561A (ja) 2006-11-09
JP4229242B2 true JP4229242B2 (ja) 2009-02-25

Family

ID=37235761

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005132242A Expired - Fee Related JP4229242B2 (ja) 2005-04-28 2005-04-28 ダイレクトメモリアクセスコントローラ

Country Status (2)

Country Link
US (1) US20060248240A1 (ja)
JP (1) JP4229242B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489319B2 (en) * 2016-12-20 2019-11-26 Atmel Corporation Automatic transmission of dummy bits in bus master
US10241946B2 (en) * 2017-01-18 2019-03-26 Nxp Usa, Inc. Multi-channel DMA system with command queue structure supporting three DMA modes

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659690A (en) * 1992-10-15 1997-08-19 Adaptec, Inc. Programmably configurable host adapter integrated circuit including a RISC processor
US5555390A (en) * 1992-10-19 1996-09-10 International Business Machines Corporation Data storage method and subsystem including a device controller for respecifying an amended start address
US5561821A (en) * 1993-10-29 1996-10-01 Advanced Micro Devices System for performing I/O access and memory access by driving address of DMA configuration registers and memory address stored therein respectively on local bus
US6058438A (en) * 1998-02-06 2000-05-02 Hewlett-Packard Company Method and apparatus for performing high speed data transfers between a host memory and a geometry accelerator of a graphics machine
US6310884B1 (en) * 1998-05-21 2001-10-30 Lsi Logic Corporation Data transfer method and apparatus that allocate storage based upon a received relative offset
US6766383B1 (en) * 1999-09-27 2004-07-20 Conexant Systems, Inc. Packet-based direct memory access

Also Published As

Publication number Publication date
JP2006309561A (ja) 2006-11-09
US20060248240A1 (en) 2006-11-02

Similar Documents

Publication Publication Date Title
JP4586031B2 (ja) パケットメモリを有するアービトレーションシステムとハブに基づくメモリシステムにおけるメモリ応答の方法
JPH06266615A (ja) 順次データ転送型メモリ及び順次データ転送型メモリを用いたコンピュータシステム
JP2007034392A (ja) 情報処理装置及びデータ処理方法
JP2000293436A (ja) パイプラインメモリシステムにおける複数のターゲットへの複数の未解決要求のサポート
JP2004318340A (ja) データ転送制御装置
US20050066135A1 (en) Memory control apparatus and memory control method
JP4229242B2 (ja) ダイレクトメモリアクセスコントローラ
JP2005293596A (ja) データ要求のアービトレーション
JP3803196B2 (ja) 情報処理装置、情報処理方法および記録媒体
US20130238881A1 (en) Data transmission device, data transmission method, and computer program product
US7310717B2 (en) Data transfer control unit with selectable transfer unit size
US7254667B2 (en) Data transfer between an external data source and a memory associated with a data processor
JP2005182538A (ja) データ転送装置
JP2005258509A (ja) ストレージ装置
JPWO2004077304A1 (ja) データ転送装置
JP2003316571A (ja) 並列プロセッサ
JP2005107873A (ja) 半導体集積回路
JP2007172430A (ja) 半導体集積回路
JP2007018440A (ja) アーキテクチャ検証装置
US20100153610A1 (en) Bus arbiter and bus system
JP6535516B2 (ja) マルチ・プログラマブルデバイス・システムとその制御方法
JP2003330871A (ja) データ転送装置
JP4560398B2 (ja) データ処理回路
JP2001297056A (ja) 調停回路及びdmaコントローラ
JP2004206241A (ja) データ転送制御方法及びその回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071206

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20071228

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080408

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080711

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080808

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080813

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080908

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080911

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081008

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081118

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20081125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081125

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121212

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees