JP5040050B2 - 複数チャネルdmaコントローラおよびプロセッサシステム - Google Patents
複数チャネルdmaコントローラおよびプロセッサシステム Download PDFInfo
- Publication number
- JP5040050B2 JP5040050B2 JP2001176506A JP2001176506A JP5040050B2 JP 5040050 B2 JP5040050 B2 JP 5040050B2 JP 2001176506 A JP2001176506 A JP 2001176506A JP 2001176506 A JP2001176506 A JP 2001176506A JP 5040050 B2 JP5040050 B2 JP 5040050B2
- Authority
- JP
- Japan
- Prior art keywords
- transfer
- dma
- dma transfer
- size
- request
- 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)
Description
【発明の属する技術分野】
本発明は,複数チャネルDMAコントローラおよびプロセッサシステムであって,特にプロセッサバスインタフェースのデータ転送の効率化に関するものである。
【0002】
【従来の技術】
図13は,一般的なプロセッサシステムの構成例を示す図である。一般的なプロセッサシステムは,プロセッサ101,命令メモリ102,データメモリ103,DMA(Direct Memory Access)コントローラ104,内部バス105,主記憶メモリ106,周辺IOデバイス108等から構成されている。
【0003】
近年のプロセッサシステムのほとんどは,ロジック回路のスピード向上に対して大容量メモリのアクセススピードが追従できないため,図13に示すようにプロセッサ101と主記憶メモリ(大容量メモリ)106とを直接接続するのではなく,両者の間に小容量ではあるが高速なメモリ(キャッシュメモリ:命令メモリ102,データメモリ103)を装備し,階層型のメモリシステムを採用している。
【0004】
高速なメモリは,キャッシュシステムやDMAコントローラ(以下,DMACとも記載)104により,ある程度まとまったデータ転送を主記憶メモリ106との間で実施し,プロセッサ101とは1バイト単位の細かなアクセスを高速に実行している。特に信号処理向けのプロセッサ(DSP:Digital Signal Processor)では,データ処理が主なアプリケーションであるため,メモリアクセスが頻繁に発生するが,次に処理するデータが予測可能であるため,前の演算処理を高速メモリであるデータメモリ103内のデータで行っている間に,並行して次の処理のためのデータをDMA転送することができる。これにより,低速な主記憶メモリ106とのデータ転送時間を,演算処理時間に隠すことができる。すなわち,データ転送と演算処理とを並列に実行することが可能となる。
【0005】
しかし,プロセッサ101が高速なメモリ(102,103)しかアクセスしなければ全く問題ないが,命令メモリ102としてキャッシュシステムを用いていればキャッシュミスにより主記憶メモリ106等にアクセスする必要があり,また,データアクセスでは周辺IOデバイス108への直アクセスが必要な場合もある。この場合,内部バス105上でDMA転送との競合が発生する場合が考えられる。
【0006】
内部バス105上で複数の転送要求が同時に発生した場合,命令キャッシュミスや周辺IOデバイス108への直アクセスを待たせると,プロセッサ101の動作を停止させてしまうので,直アクセスを最優先で実行し,DMA転送はウェイト(Wait)させることが賢明である。しかし,命令キャッシュミスや周辺IOデバイス108への直アクセスにおいて,アクセス先のアクセス速度が低速であるとアクセス時間が長くなり,DMA転送が待たされる時間が長くなることによりデータ転送と演算処理を並列に実行できなくなるため,プロセッサ101の実効性能は低下してしまう。
【0007】
図14は,従来の内部バス占有例(1)を示す図である。命令メモリ102のキャッシュミスや周辺IOデバイス108へのアクセスがない状態では,DMA転送(DMA転送1)はプロセッサ101の動作と並列に実行される。次に,周辺IOデバイス108のアクセスとDMA転送要求(DMA転送2)が同時に発生した場合,周辺IOデバイス108のアクセスが実行されるが,アクセス先が低速であると,図14のようにDMA転送(DMA転送2)が待たされる時間が長くなり,データ転送と演算処理の並列実行サイクルの割合が低下する。
【0008】
また,競合が発生せずに,命令メモリ102のキャッシュミスや周辺IOデバイス108への直アクセスを先に実行した場合でも,アクセス先のアクセス速度が低速であるとアクセス時間が長くなるため,上記直アクセスの直後にDMA転送要求が発生しても,前述した場合と同じくDMA転送が待たされる時間が長くなり,これもデータ転送と演算処理を並列に実行できなくなり,プロセッサ101の実効性能の低下になる。
【0009】
図15に,その従来の内部バス占有例(2)を示す。図15に示すように周辺IOデバイス108のアクセス実行後にDMA転送要求が発生した場合,周辺IOデバイス108のアクセスの実行完了まで,DMA転送はWaitすることになる。このように,データ転送と演算処理の並列実行サイクルが低下する。
【0010】
これを解決する手法として,スプリット転送という方式が用いられることが多い。スプリット転送は,リード転送において,リード要求サイクルとリードデータ応答サイクルとを分離し,両者の間に他の転送を実行できるようにするための方式である。
【0011】
図16は,スプリット転送を実現するプロセッサシステムの構成例を示す。このプロセッサシステムは,プロセッサ201,命令メモリ202,データメモリ203,DMAコントローラ(DMAC)204,内部バス205,主記憶メモリ206,主記憶バッファ207,周辺IOデバイス208,周辺IOバッファ209等から構成されている。
【0012】
スプリット転送では,主記憶メモリ206や周辺IOデバイス208のような低速なインタフェースに対し,高速な内部バス205との間にバッファ(主記憶バッファ207,周辺IOバッファ209)を配置して,低速なインタフェース(206,208)はバッファ(207,209)との間で低速なアクセスを実施し,バッファ(207,209)と内部バス205との間は高速なアクセスを実施することで,内部バス205の占有時間を短くすることを図っている。
【0013】
図17は,スプリット転送の例を示す。周辺IOデバイス208へのアクセスがリードであった場合,図17のように周辺IOデバイス208のアクセスを実行すると,周辺IOデバイス208から周辺IOバッファ209への転送時は,内部バス205が占有されていないので,アクセス先が競合しなければDMA転送2が動作可能となり,図14の例と比較して,2つの転送を並列実行するサイクルが増える。
【0014】
【発明が解決しようとする課題】
しかし,たとえ上記のようなスプリット転送が実装されていたとしても,最初に競合が発生せずにDMA転送が受け付けられてしまうと,直後に命令メモリ202のキャッシュミスやプロセッサ201の周辺IOデバイスへの直アクセスが発生した場合に,DMA転送終了を待たなければならず,プロセッサ201の動作は長く停止させられてしまう。つまり,データ転送と演算処理を並列に実行できなくなり,プロセッサ201の実効性能は低下する。
【0015】
図18は,従来の内部バス占有例(3)を示す図である。図13または図16に示すプロセッサシステムにおいて,最初にDMA転送が受け付けられてDMA転送が実行されると,DMA実行中に発生した命令メモリ102,202のキャッシュミスや周辺IOデバイス108,208のアクセスはWaitさせられる。その間,プロセッサ101,201の動作も停止することとなり,データ転送と演算処理の並列実行サイクルが低下する。このケースでは,図16のようにスプリット転送が実装されたプロセッサシステムであっても,キャッシュミスや周辺I/OデバイスのアクセスにWaitが生じてしまう。
【0016】
本発明では,このデータ転送と演算処理を並列に実行できないタイミングを極力減らすことを目的とする。
【0017】
【課題を解決するための手段】
DMA転送の用途を考えた場合,細かな単位よりも,あるまとまったデータ長単位の転送を実施することが目的にかなう。細かな単位での設定も可能ではあるが,そのようにした場合,DMA転送サイクルに対してのDMAパラメータ設定サイクルが,オーバーヘッドとして現れてくる。したがって,DMAコントローラへの設定は,まとまった単位の転送が望ましいということになる。
【0018】
しかしながら,上記課題として説明した図18のような状況の場合,DMA転送のサイズが大きいと,DMA転送の転送終了までのプロセッサ停止時間が長くなるので,この点に関していえば,DMA転送のサイズは,大きくならないことが望ましいということになる。
【0019】
本発明は,この二つの相矛盾する課題を解決するため,DMAパラメータの設定はまとまったデータ長を設定し,実行するDMA転送のサイズを小さくすることができるように,DMAコントローラ上において,DMAパラメータにより設定された転送サイズ(Mバイト)の転送要求を,最大Nバイト単位の転送要求に分割し,複数回にわたって内部バスインタフェースにDMA転送要求を出す手段を有する。ここで,分割サイズNの値は,DMAコントローラが,アクセス先の速度に基づいて自動的に決定する。または,転送サイズMとともに,分割サイズNの値を転送要求元から受け付ける。
【0020】
図1は,本発明の内部バス占有例を示す図である。図1の例に示されるように,本発明では,一つのまとまったデータ長のDMA転送を分割して転送している。この分割した一つのDMA転送の終了後は,内部バスインタフェース上で複数の転送要求が同時に発生した場合と同じ動作となり,プロセッサの動作を最優先に実行することができるため,本発明の課題として説明した問題点を解消をすることが可能となる。
【0021】
本発明は,特にDMA転送チャネルが複数存在する場合に効果的である。以下,図2に従って説明する。図2は,DMA転送チャネルが複数存在する場合の例を示す図である。(A)は,従来の複数のDMA転送の例であり,(B)は,本発明の複数のDMA転送の例である。
【0022】
従来は図2(A)に示されるように,複数のDMAチャネルが存在していても特別な理由がない限りは先着順に処理するのが普通であり,一つのDMAチャネルの転送終了を待たないと,別のDMAチャネルの転送が実施できないというものであった。最初に受け付けたDMAチャネルの転送が非常に大量のデータを転送するものであった場合,ほぼ同時に要求を出したDMAチャネルが小量のデータ転送であったとしても,先着順で前のDMAチャネルの大量のデータ転送が完了するまで,後のDMAチャネルの小量のデータ転送が待たされることになる。このことにより,プロセッサ内で複数のタスクが動作していた場合に,先に,一つのタスクが大量データのDMA転送をしてしまうと,後で,その他のタスクですぐに実施したい小量データのDMA転送があっても,それを実施できなくなってしまう。最悪の結果として,プロセッサはデータが揃わないために,処理を停止することになる可能性がある。
【0023】
本発明の手段を利用すれば,複数のDMAチャネルが存在していても,それぞれのDMAチャネルのDMA転送が分割される。さらに図2(B)のように,内部バスインタフェース上における複数のDMAチャネルの転送要求の競合処理を,転送要求の受付が一部のDMAチャネルに偏らないラウンドロビン方式のような優先順位の切替え方法を用いることによって,複数のDMAチャネルによるDMA転送は,分割されたDMA転送単位で,順番に実行させることができる。このため,従来例のような問題がなくなり,大量データのDMA転送している最中にも,小量データのDMA転送を割り込ませることが可能となる。
【0024】
【発明の実施の形態】
図3は,本発明のプロセッサバスインタフェースの構成例を示す図である。本システムは,プロセッサ1と内部バス5との間に高速なメモリとして命令キャッシュ2とデータRAM3を装備した階層型メモリシステムとなっており,プロセッサ1と内部バス5の直アクセスポートと,複数チャネルDMAC4とを有する。複数チャネルDMAC4は,各チャネルごとにDMA転送を分割転送する機能を備える。内部バス5と主記憶メモリ6および周辺IOデバイス8との間には,スプリット転送のための速度乗換え用バッファ(主記憶バッファ7,周辺IOバッファ9)を装備し,スプリット転送を実現する。
【0025】
プロセッサ1は,命令キャッシュ2から命令を読み出し,処理を実行する。データに関しては,データRAM3から読み出したり,データRAM3に書き込んだりする。場合によっては,内部バス5に直アクセスすることもある。DMA転送が発生する場合には,複数チャネルDMAC4にDMA転送のためのパラメータを渡す。
【0026】
命令キャッシュ2は,プロセッサ1に処理を実行させる命令を一時的に保持する。実行中のアプリケーションプログラム等の一部の命令列が格納される。すなわち,命令キャッシュ2には,内部バス5や主記憶バッファ7,周辺IOバッファ9等を通して,主記憶メモリ6や周辺IOデバイス8等から必要な命令をまとめて読み出し,それを一命令ずつ順にプロセッサ1に転送する。
【0027】
データRAM3は,プロセッサ1で扱うデータを格納する。これには,扱われるデータファイルの一部のデータが格納される。内部バス5や主記憶バッファ7,周辺IOバッファ9等を通して,主記憶メモリ6や周辺IOデバイス8等と必要なデータをまとめて読み書きし,それを一データずつプロセッサ1との間でやりとりする。
【0028】
複数チャネルDMAC4は,プロセッサ1から与えられたパラメータにしたがって,各装置間のデータのDMA転送をコントロールする。
【0029】
内部バス5は,接続されている全ての装置間のデータ転送を管理する。
【0030】
主記憶メモリ6は,内部記憶装置としてアプリケーションプログラムや,データファイルを記憶する。主記憶バッファ7は,内部バス5と主記憶メモリ6との間でのデータ転送を管理し,内部バス5とは高速でデータ転送を行い,主記憶メモリ6とは低速(主記憶メモリ6のアクセス速度)でデータ転送を行う。
【0031】
周辺IOデバイス8は,外部記憶装置または入出力装置としてデータの入出力を行う。周辺IOバッファ9は,内部バス5と周辺IOデバイス8との間でのデータ転送を管理し,内部バス5とは高速でデータ転送を行い,周辺IOデバイス8とは低速(周辺IOデバイス8のアクセス速度)でデータ転送を行う。
【0032】
図4は,複数チャネルDMACの構成例を示す図である。複数チャネルDMAC4は,複数チャネル分のDMAC部(DMA制御部)41−1〜41−nと,DMACアービタ部42から構成される。
【0033】
プロセッサ1から渡されたDMA転送のパラメータは,DMA転送の指示順にDMAC部(#1)41−1,DMAC部(#2)41−2,…,DMAC部(#n)41−nに振り分けられる。
【0034】
各DMAC部41−1〜41−nでは,それぞれに与えられたDMA転送を指定された分割サイズNに分割し,各DMAC部41−1〜41−nごとに,DMACアービタ部42へDMA(#1,#2,…,#n)転送要求を行う。
【0035】
DMACアービタ部42は,DMA(#1,#2,…,#n)転送要求の競合チェックを行い,いずれか一つのDMA転送要求を選択し,内部バス5に対してDMA転送要求を行う。内部バス5からDMA転送ACK(肯定応答信号)を受けると,前記選択されたDMA転送のDMAC部41に対してDMA転送ACKを送る。
【0036】
次に,各チャネルごとに設けられるDMAC部41の構成を説明するが,DMAC部41は,DMA転送の分割手段の違いにより,複数の構成が考えられる。いくつかの構成例を,図を用いて説明する。また,DMA転送において,転送サイズMはシステム依存で実装するプログラムの作りにより様々であり,ハードウェア的な制約により最大値が規定されている。
【0037】
図5は,DMAC部41の構成例(1)であって,分割サイズNが固定値の場合のDMAC部41の構成例を示す図である。DMAC部41は,転送元/転送先アドレス生成部431と,分割判定/転送サイズ決定部441と,DMA転送用パラメータレジスタ群451とから構成され,分割サイズNは固定値としてあらかじめ設定されている。
【0038】
プロセッサ1は,転送元アドレス(SADR)指定レジスタ,転送先アドレス(DADR)指定レジスタ,転送サイズM指定レジスタ,転送開始指示/状態レジスタからなるDMAC部41のDMA転送用パラメータレジスタ群451にDMA転送用パラメータを設定し,転送開始指示/状態レジスタをセットして転送開始を指示する。
【0039】
転送元/転送先アドレス生成部431は,DMA転送用パラメータレジスタ群451から転送元アドレス/転送先アドレスを取り込み,最初の分割後のDMA転送元アドレス/転送先アドレスとする。
【0040】
また,分割判定/転送サイズ決定部441は,DMA転送用パラメータレジスタ群451から転送サイズMを取り込み,転送サイズMと固定値である分割サイズNとの大小を判定し,小さいほうの値を採用して分割後のDMA転送サイズ(MまたはN)とし,DMA転送要求指示を出す。
【0041】
DMACアービタ部42から,分割後のDMA転送の終了であるDMA転送ACKを受けると,転送終了したDMA転送が最終のDMA転送でなければ,転送元/転送先アドレス生成部431は,転送終了したDMA転送サイズNを用いて次のDMA転送元アドレス/転送先アドレスを,以下のように生成する。
【0042】
SADR=SADR+N
DADR=DADR+N
すなわち,前のDMA転送元アドレス/転送先アドレスのそれぞれに分割サイズNを加えて,次のDMA転送元アドレス/転送先アドレスとする。
【0043】
また,分割判定/転送サイズ決定部441は,残りの転送サイズを,以下のように生成する。
【0044】
M=M−N
分割判定/転送サイズ決定部441は,新たなMと分割サイズNの大小を判定し,分割後のDMA転送サイズ(MまたはN)を決定し,再び,DMA転送要求指示を出す。
【0045】
上記の処理を繰り返し,分割されたDMA転送のすべての転送が終了したならば,DMA転送完了をプロセッサ1に通知するために,転送開始指示/状態レジスタをクリア(またはレジスタ内の完了フラグをセット)する。
【0046】
スプリット転送の機構が実装されているシステムにおいて,分割サイズNを固定値とする手法は,次のようなメリットがある。図3のようにスプリット転送の機構が実装されている場合には,アクセス先のアクセス速度によらずに,転送のデータサイズのみでバス占有時間が決定する。このことにより,分割サイズNを固定値とする手法では,内部バス5での転送競合が発生した場合の競合による転送待ち時間が,転送を実行している分割サイズNにより決定できるため,転送競合のペナルティ予測が立てやすい。
【0047】
図6は,DMAC部41の構成例(2)であって,指定された転送元アドレス/転送先アドレスにより,分割サイズNを決定する場合のDMAC部41の構成例を示す図である。DMAC部41は,転送元/転送先アドレス生成部432と,分割判定/転送サイズ決定部442と,DMA転送用パラメータレジスタ群452と,分割サイズ決定部462とから構成されている。
【0048】
プロセッサ1は,転送元アドレス(SADR)指定レジスタ,転送先アドレス(DADR)指定レジスタ,転送サイズM指定レジスタ,転送開始指示/状態レジスタからなるDMAC部41のDMA転送用パラメータレジスタ群452にDMA転送用パラメータを設定し,転送開始指示/状態レジスタをセットして転送開始を指示する。
【0049】
転送元/転送先アドレス生成部432は,DMA転送用パラメータレジスタ群452から転送元アドレス/転送先アドレスを取り込み,最初の分割後のDMA転送元アドレス/転送先アドレスとする。
【0050】
分割サイズ決定部462は,転送元/転送先アドレス生成部432で生成された分割後のDMA転送元アドレス/DMA転送先アドレスを判定することで,分割サイズNを決定する。分割判定/転送サイズ決定部442は,DMA転送用パラメータレジスタ群452から転送サイズMを取り込み,転送サイズMと分割サイズNとの大小を判定し,小さいほうの値を採用して分割後のDMA転送サイズ(MまたはN)とし,DMA転送要求指示を出す。
【0051】
DMACアービタ部42から分割後のDMA転送の終了であるDMA転送ACKを受けると,転送終了したDMA転送が最終のDMA転送でなければ,転送元/転送先アドレス生成部432は,転送終了したDMA転送サイズNを用いて次のDMA転送元アドレス/転送先アドレスを,以下のように生成する。
【0052】
SADR=SADR+N
DADR=DADR+N
そして,分割サイズ決定部462は,新たに生成されたDMA転送元アドレス/転送先アドレスを用いて分割サイズNを決定する。このように分割サイズNは,新たに生成されたDMA転送元アドレス/転送先アドレスを用いて生成されるため,プロセッサ1により指定された1回のDMA転送内で,分割サイズNを,分割されたDMA転送ごとに適切な値とすることが可能である。
【0053】
また,分割判定/転送サイズ決定部442は,残りの転送サイズを,転送した分割サイズNを用いて以下のように生成する。
【0054】
M=M−N
分割判定/転送サイズ決定部442は,新たなMと分割サイズNの大小を判定し,分割後のDMA転送サイズ(MまたはN)を決定し,再び,DMA転送要求指示を出す。
【0055】
上記の処理を繰り返し,分割されたDMA転送のすべての転送が終了したならば,DMA転送完了をプロセッサ1に通知するために,転送開始指示/状態レジスタをクリアする。
【0056】
このように指定された転送元アドレス/転送先アドレスによって分割サイズNを決定する手法は,特にアクセス速度がアクセス先によって異なるような場合に,そのアクセス時間をある一定時間内になるようにするときに有用である。例えば,プロセッサバスインタフェースにおいて,スプリット転送の機構が実装されていない場合,アクセス先のアクセス時間は内部バス5の占有時間と同じになるため,分割された転送ごとのアクセス時間が一定であれば,内部バス5はある一定の時間内で開放されることが保証される。すなわち,指定された転送元アドレス/転送先アドレスによって分割サイズNを決定する手法では,アクセス時間が一定になるように分割サイズNを決定することにより,内部バス5での転送競合による転送待ち時間を,ある一定の時間内に保証することが可能である。このため,転送競合のペナルティ予測が立てやすいというメリットがある。
【0057】
一方,本手法を用いた場合,図3のようにスプリット転送の機構が実装されているシステムでは,アクセス先でのアクセス時間の最大値が決まるので,アクセス速度が遅いものほど,分割サイズNが小さくなり,1回のアクセスにおける内部バス5の占有時間は短くなる。すなわち,内部バス5に接続されているアクセス先の中でアクセス速度のばらつきが大きいと,アクセス先によって内部バス5の占有時間が異なり,内部バス5での転送競合におけるペナルティ予測が立てにくくなる。
【0058】
図7は,DMAC部41の構成例(3)であって,分割サイズNが,DMA転送用パレメータレジスタ群の中の一つとして,プロセッサ1から送らてくる場合のDMAC部41の構成例を示す図である。DMAC部41は,転送元/転送先アドレス生成部433と,分割判定/転送サイズ決定部443と,DMA転送用パレメータレジスタ群453とから構成される。
【0059】
プロセッサ1は,転送元アドレス(SADR)指定レジスタ,転送先アドレス(DADR)指定レジスタ,分割サイズN指定レジスタ,転送サイズM指定レジスタ,転送開始指示/状態レジスタとからなるDMAC部41のDMA転送用パラメータレジスタ群453にDMA転送用パラメータを設定し,転送開始指示/状態レジスタをセットして転送開始を指示する。
【0060】
転送元/転送先アドレス生成部433は,DMA転送用パラメータレジスタ群453から転送元アドレス/転送先アドレスを取り込み,最初の分割後のDMA転送元アドレス/転送先アドレスとする。
【0061】
また,分割判定/転送サイズ決定部443は,DMA転送用パラメータレジスタ群453から転送サイズMと分割サイズNを取り込み,転送サイズMと分割サイズNの大小を判定し,小さいほうの値を採用して分割後のDMA転送サイズ(MまたはN)とし,DMA転送要求指示を出す。
【0062】
DMACアービタ部42から分割後のDMA転送の終了であるDMA転送ACKを受けると,転送終了したDMA転送が最終のDMA転送でなければ,転送元/転送先アドレス生成部433は,転送終了したDMA転送サイズNを用いて次のDMA転送元アドレス/転送先アドレスを,以下のように生成する。
【0063】
SADR=SADR+N
DADR=DADR+N
また,分割判定/転送サイズ決定部443は,残りの転送サイズを以下のように生成する。
【0064】
M=M−N
さらに,分割判定/転送サイズ決定部443は,新たなMと分割サイズNの大小を判定し,分割後のDMA転送サイズ(MまたはN)を決定し,再び,DMA転送要求指示を出す。
【0065】
上記の処理を繰り返し,分割されたDMA転送のすべての転送が終了したならば,DMA転送完了をプロセッサ1に通知するために,転送開始指示/状態レジスタをクリアする。
【0066】
このようなプロセッサ1からのパラメータ設定により分割サイズNを決定する手法を用いた場合,スプリット転送機構の実装の有無や,内部バス5に接続されているアクセス先の特性に応じて,最適な分割サイズNでもってDMA転送を実行させることができる。
【0067】
図8は,DMAC部41のDMA転送の分割処理フローチャートである。DMAC部41は,プロセッサ1からDMA転送のパラメータを受けると(S10),分割サイズNを決定する(S11)。分割サイズNの決定方法としては,あらかじめ固定値を用意する方法(図5参照),転送元アドレス/転送先アドレスから分割サイズNを求める方法(図6参照),分割サイズNをプロセッサ1にパラメータで設定させる方法(図7参照)などがある。
【0068】
次に,転送サイズMと分割サイズNとの大小を比較する(S12)。分割サイズNのほうが転送サイズMより小さい場合,分割サイズNでDMA転送要求を出し(S13),DMA転送の終了を示すDMA転送ACKを受けるまで待機する。DMA転送ACKを受けたら(S14),転送サイズMから転送した分割サイズNを減算して転送されていない残りの転送部分のサイズを新たな転送サイズMとし,次の分割された転送部分の転送元アドレス/転送先アドレスを求め(S15),S11へ戻って,次のDMA転送の処理を行う。
【0069】
S12の判定において,転送サイズMのほうが小さい場合,これ以上転送を分割する必要がないので,そのまま転送サイズMでDMA転送要求を出し(S16),DMA転送ACKを受けるまで待機し,DMA転送ACKを受けたなら(S17),転送終了とする。
【0070】
図9は,DMACアービタ部42の構成例を示す。DMACアービタ部42は,DMA転送要求判定部421,優先度書換判定部422,要求受付優先度情報部423から構成される。
【0071】
DMA転送要求判定部421は,複数のDMAC部41からのDMA転送要求を受けることができる。複数のDMA転送要求を受けた場合,DMA転送要求判定部421は,要求受付優先度情報部423の要求受付優先度情報から,どのDMA転送要求を優先するかを決定し,最も優先順位の高いDMA転送要求を一つ選択して内部バス5へ送る。
【0072】
優先度書換判定部422では,DMA転送要求判定部421から内部バス5へ送ったDMA転送要求により,要求受付優先度情報を書き換えるか否かを判定し,書き換える場合には,要求受付優先度情報の書き換え情報を,要求受付優先度情報部423へ出力する。要求受付優先度情報の書き換え情報を決定する方法として,ラウンドロビン方式で決定する方法やプロセッサ1があらかじめ決定して設定しておく方法等,様々な方法が考えられる。
【0073】
要求受付優先度情報部423は,優先度書換判定部422から入力した要求受付優先度情報の書き換え情報に従い,要求受付優先度情報を書き換える。
【0074】
DMA転送要求判定部421は,内部バス5からのDMA転送要求ACKを受けると,そのDMA転送要求を出していたDMAC部41へDMA転送ACKを送る。
【0075】
図10は,DMACアービタ部42の動作フローチャートを示す。DMACアービタ部42は,DMAC部41からのDMA転送要求を待つ。DMA転送要求があると(S20),DMA転送要求が複数あるかどうかを判定し(S21),複数あれば,要求受付優先度情報に従って優先度の高いDMA転送要求を選択し(S22),選択されたDMA転送要求を内部バス5へ出力する(S23)。ここで図中の吹き出し部分は,要求受付優先度情報の例である。DMA転送要求が一つだけのときには(S21),そのままそのDMA転送要求を内部バス5へ出力する(S23)。
【0076】
その後,必要に応じて要求受付優先度情報の書き換えを行い(S24,S25),内部バス5からのDMA転送要求ACKを待つ(S26)。DMA転送ACKがあれば,該当するチャネルのDMAC部41へDMA転送ACKを出力する(S27)。以上の動作を繰り返す。
【0077】
図11は,内部バス5の構成例を示す。内部バス5は,バス制御部51,セレクタ52等を備える。バス制御部51は,内部バス5に接続された各装置からの転送要求を受ける。一度に複数の転送要求を受けたとき,バス制御部51は,優先度の高い転送要求を選択し,選択された転送要求のバスセレクト信号をセレクタ52へ出力する。優先順位を決定する方法は,固定優先順位方式で決定する方法,プロセッサ1が事前に決定する方法等,様々な方法が考えられる。
【0078】
セレクタ52は,バス制御部51からのバスセレクト信号を受け取り,バスセレクト信号で指定された転送要求の転送元の入力データを選択し,そのデータ信号をバスに載せることにより出力先への転送を実行する。
【0079】
図12は,バス制御部51のバス調停フローチャートである。内部バス5への転送要求が発生すると,その転送要求を受け付ける処理を行う(S30)。まず,転送元/転送先が低速デバイスであった場合,バッファと低速デバイスとの間がデータ転送中である可能性があるため,この場合には,処理が終了するまで次の要求を受け付けることができないので,該当する要求は,受け付けないようにマスクする必要がある(S31)。このマスク処理後に転送要求が残っていれば,その転送要求を受け付けることになる(S32)。転送要求が複数であった場合には,優先順位を考慮して要求を選択する必要がある。ここでは,プロセッサ1の停止期間を極力短くすることを考慮に入れた固定優先順位方式の例を示した。すなわち,優先順位は,主記憶バッファ転送要求,周辺IOバッファ転送要求,命令転送要求,直アクセス要求,DMA転送要求としている。この優先順位に従って要求を選択する(S33)。
【0080】
ここで選択された転送要求が,低速デバイスへのリード処理であった場合には(S34),該当する低速デバイスに対して,バッファと低速デバイス間の転送の指示を通知し(S35),この時点では内部バス5のデータバスを経由したデータ転送は行わない。また,選択された転送要求がDMA転送であれば(S36),転送を受け付けたことを複数チャネルDMAC4にDMA転送ACKとして出力し(S37),処理を終了する。選択された転送要求がDMA転送でない,すなわち命令転送要求や直アクセス要求であった場合には(S36),選択した転送要求をマスクして待機状態とし(S38),処理を終了する。
【0081】
次に,選択された転送要求が,低速デバイスへのリード処理以外の場合(S34),即座に内部バス5を経由したデータ転送が実行できるはずであるので,転送元/転送先に内部バス5から転送要求を出力し(S39),図11のセレクタ52に対するバスセレクト信号をセットして(S40),データ転送を実行する(S41)。転送終了後,選択した転送要求に対する転送ACKを出力する(S42)。また,命令転送要求や直アクセス要求で低速デバイスへのリード処理が事前に受け付けられており,上記の転送要求による転送先が命令転送要求や直アクセス要求であった場合,命令転送要求や直アクセス要求がマスクされているはずであるので,そのマスクを解除する必要がある(S42)。
【0082】
これにより,従来,例えば図18に示すようなバス占有状態であったものが,図1に示すようなバス占有状態となり,内部バス5の使用が効率的になる。
【0083】
【発明の効果】
以上説明したように,各チャネルごとに長いサイズのDMA転送を短いサイズのDMA転送に分割し,分割された短いサイズのDMA転送を順次実行することにより,たとえ最初に競合が発生せずにDMA転送が受け付けられてしまい,その直後に命令メモリのキャッシュミスやプロセッサの周辺IOデバイスへの直アクセスが発生してしまったような場合でも,長いDMA転送の終了を待つ必要がなくなる。
【0084】
また,前述のDMA転送の分割手段とDMACアービタ部を備えた複数チャネルDMACにより,複数のDMA転送が競合したとき,ラウンドロビン方式等を利用して分割されたDMA転送を順に実行すれば,複数のDMA転送を効率よく多重化できる。
【図面の簡単な説明】
【図1】本発明の内部バス占有例を示す図である。
【図2】複数のDMA転送が存在する場合の本発明と従来技術の動作を比較する図である。
【図3】本発明のプロセッサバスインタフェースの構成例を示す図である。
【図4】複数チャネルDMACの構成例を示す図である。
【図5】各チャネル対応のDMAC部の構成例(1)を示す図である。
【図6】各チャネル対応のDMAC部の構成例(2)を示す図である。
【図7】各チャネル対応のDMAC部の構成例(3)を示す図である。
【図8】DMAC部のDMA転送の分割処理フローチャートである。
【図9】DMACアービタ部の構成例を示す図ある。
【図10】DMACアービタ部の動作フローチャートである。
【図11】内部バスの構成例を示す図である。
【図12】バス制御部のバス調停フローチャートである。
【図13】一般的なプロセッサシステムの構成例を示す図である。
【図14】従来の内部バス占有例(1)を示す図である。
【図15】従来の内部バス占有例(2)を示す図である。
【図16】スプリット転送のプロセッサシステムの構成例を示す図である。
【図17】スプリット転送の例を示す図である。
【図18】従来の内部バス占有例(3)を示す図である。
【符号の説明】
1 プロセッサ
2 命令キャッシュ
3 データRAM
4 複数チャネルDMAC
41 DMAC部
42 DMACアービタ部
5 内部バス
51 バス制御部
52 セレクタ
6 主記憶メモリ
7 主記憶バッファ
8 周辺IOデバイス
9 周辺IOバッファ
Claims (4)
- 複数チャネルのDMA転送機能を有する複数チャネルDMAコントローラであって,
各チャネルに対応した複数のDMA制御部と,
前記複数のDMA制御部からのDMA転送要求の競合制御を行うDMA制御アービタ部とを備え,
前記複数の各DMA制御部は,
アクセス先の速度にもとづき,アクセス先におけるアクセス時間が所定時間内に収まるように,各アクセス先ごとに定められたDMA転送の最大サイズN(N>0)を決定する手段と,
DMA転送として指定されたデータ転送量M(M>0)が,前記DMA転送の最大サイズNより大きい場合に,要求されたDMA転送を最大Nサイズごとの転送として分割する手段と,
分割したDMA転送要求を前記DMA制御アービタ部へ通知する手段とを備える
ことを特徴とする複数チャネルDMAコントローラ。 - 複数チャネルのDMA転送機能を有する複数チャネルDMAコントローラであって,
各チャネルに対応した複数のDMA制御部と,
前記複数のDMA制御部からのDMA転送要求の競合制御を行うDMA制御アービタ部とを備え,
前記複数の各DMA制御部は,
DMA転送の最大サイズN(N>0)の指定を,DMA転送要求元が指定するパラメータによって動的に受け付ける手段と,
DMA転送として指定されたデータ転送量M(M>0)が,前記DMA転送の最大サイズNより大きい場合に,要求されたDMA転送を最大Nサイズごとの転送として分割する手段と,
分割したDMA転送要求を前記DMA制御アービタ部へ通知する手段とを備える
ことを特徴とする複数チャネルDMAコントローラ。 - 前記DMA制御アービタ部は,同時に複数の前記DMA制御部からのDMA転送要求があった場合に,ラウンドロビン方式による優先順位に従って競合制御を行う
ことを特徴とする請求項1または請求項2記載の複数チャネルDMAコントローラ。 - 一つ以上のプロセッサと,データ転送のための内部バスと,主記憶メモリと,周辺IOデバイスと,前記プロセッサと前記内部バスとの間に接続される高速アクセス可能なメモリと,前記主記憶メモリまたは前記周辺IOデバイスと前記内部バスとの間に接続されるアクセス速度の乗り換え用のバッファとを有するプロセッサシステムにおいて,
前記高速アクセス可能なメモリおよび前記アクセス速度の乗り換え用のバッファ間のDMA転送を制御するための請求項1,請求項2または請求項3記載の複数チャネルDMAコントローラを,前記プロセッサと前記内部バスとの間に接続した
ことを特徴とするプロセッサシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001176506A JP5040050B2 (ja) | 2001-06-12 | 2001-06-12 | 複数チャネルdmaコントローラおよびプロセッサシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001176506A JP5040050B2 (ja) | 2001-06-12 | 2001-06-12 | 複数チャネルdmaコントローラおよびプロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002366507A JP2002366507A (ja) | 2002-12-20 |
JP5040050B2 true JP5040050B2 (ja) | 2012-10-03 |
Family
ID=19017483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001176506A Expired - Fee Related JP5040050B2 (ja) | 2001-06-12 | 2001-06-12 | 複数チャネルdmaコントローラおよびプロセッサシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5040050B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103596067A (zh) * | 2013-11-26 | 2014-02-19 | 深圳创维数字技术股份有限公司 | 一种基于http实时流媒体协议的电视节目传输方法及装置 |
CN110688333A (zh) * | 2019-09-29 | 2020-01-14 | 郑州信大捷安信息技术股份有限公司 | 一种基于pcie的dma数据传输系统及方法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3275878B2 (ja) * | 1999-06-22 | 2002-04-22 | トヨタ自動車株式会社 | デジタル放送受信機 |
JP2004213142A (ja) * | 2002-12-27 | 2004-07-29 | Renesas Technology Corp | 半導体集積回路装置 |
JP2006293927A (ja) * | 2005-04-14 | 2006-10-26 | Toshiba Corp | ダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムlsi |
US7861012B2 (en) | 2006-03-01 | 2010-12-28 | Panasonic Corporation | Data transmitting device and data transmitting method |
JP2007249597A (ja) * | 2006-03-15 | 2007-09-27 | Omron Corp | データ転送制御装置 |
JP4532450B2 (ja) | 2006-09-06 | 2010-08-25 | 株式会社デンソー | エンジン制御用データの処理装置及びエンジン制御装置 |
JP4356765B2 (ja) | 2007-04-20 | 2009-11-04 | ソニー株式会社 | 情報処理装置および方法、並びにプログラム |
JP5056668B2 (ja) | 2008-08-14 | 2012-10-24 | 富士通株式会社 | データ転送装置、およびデータ転送方法 |
JP2010282429A (ja) | 2009-06-04 | 2010-12-16 | Canon Inc | 画像処理装置及びその制御方法 |
JP5509151B2 (ja) * | 2011-05-26 | 2014-06-04 | 京セラドキュメントソリューションズ株式会社 | Dma制御装置及びこれを含む画像形成装置 |
JP6387598B2 (ja) * | 2013-10-16 | 2018-09-12 | 株式会社三洋物産 | 遊技機 |
KR102387460B1 (ko) | 2015-04-09 | 2022-04-15 | 삼성전자주식회사 | 데이터 저장 장치와 이의 작동 방법 |
US10318457B2 (en) * | 2015-06-01 | 2019-06-11 | Microchip Technology Incorporated | Method and apparatus for split burst bandwidth arbitration |
CN106919522A (zh) * | 2015-12-28 | 2017-07-04 | 北京航天测控技术有限公司 | 一种基于PXIe接口的DMA控制器 |
JP6985810B2 (ja) | 2017-04-27 | 2021-12-22 | キヤノン株式会社 | 転送装置、転送方法および複合機 |
JP7172068B2 (ja) | 2018-03-12 | 2022-11-16 | 富士通株式会社 | 情報処理装置、演算処理装置及び情報処理装置の制御方法 |
CN114780215A (zh) * | 2022-04-13 | 2022-07-22 | Oppo广东移动通信有限公司 | 一种任务调度方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000031647A1 (fr) * | 1998-11-26 | 2000-06-02 | Matsushita Electric Industrial Co., Ltd. | Dispositif de traitement d'image |
-
2001
- 2001-06-12 JP JP2001176506A patent/JP5040050B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103596067A (zh) * | 2013-11-26 | 2014-02-19 | 深圳创维数字技术股份有限公司 | 一种基于http实时流媒体协议的电视节目传输方法及装置 |
CN110688333A (zh) * | 2019-09-29 | 2020-01-14 | 郑州信大捷安信息技术股份有限公司 | 一种基于pcie的dma数据传输系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2002366507A (ja) | 2002-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5040050B2 (ja) | 複数チャネルdmaコントローラおよびプロセッサシステム | |
US6820187B2 (en) | Multiprocessor system and control method thereof | |
JP4456490B2 (ja) | Dma装置 | |
JP5498505B2 (ja) | データバースト間の競合の解決 | |
US20060259662A1 (en) | Data trnasfer apparatus, data transfer method, and program | |
JP2001350638A (ja) | 多重スレッド使用方法、多重スレッド処理システム、スレッド実行コントローラおよびバッファ使用方法 | |
JP2002140289A (ja) | 調整可能ワード・サイズ転送とアドレス配列/増加を備えたマイクロコントローラdmaオペレーション | |
KR20020020186A (ko) | 내장형 프로세서 복합체, 네트워크 프로세싱 시스템 및인스트럭션 실행 제어 방법 | |
US7240138B2 (en) | Data transfer control apparatus | |
CN114610472A (zh) | 异构计算中多进程管理方法及计算设备 | |
JP2005057374A (ja) | A/d変換装置およびマイクロコントローラ | |
JP2005293427A (ja) | データ転送処理装置及びデータ転送処理方法 | |
JP4451010B2 (ja) | プログラマブルコントローラ | |
JP2000227897A (ja) | Dma転送装置及びdma転送システム | |
JP2522176B2 (ja) | プロセッサの制御方法 | |
JP2669911B2 (ja) | Dmaコントローラおよび情報処理システム | |
JP3687112B2 (ja) | データ転送制御装置及び情報処理装置 | |
JPS61125670A (ja) | デ−タ転送装置 | |
JPH09269927A (ja) | バスアクセス方法、バス、並びにバス接続システム | |
JPH06131294A (ja) | データ転送装置 | |
JPH0736806A (ja) | Dma方式 | |
JP2002278753A (ja) | データ処理システム | |
JP2000047930A (ja) | データ処理装置 | |
JPH04165554A (ja) | 入出力処理装置 | |
JPH01206446A (ja) | 共通バス制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080424 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110126 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110201 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110404 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20110404 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20110404 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111018 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111215 |
|
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: 20120612 |
|
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: 20120625 |
|
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: 20150720 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |