JP5056668B2 - データ転送装置、およびデータ転送方法 - Google Patents

データ転送装置、およびデータ転送方法 Download PDF

Info

Publication number
JP5056668B2
JP5056668B2 JP2008209032A JP2008209032A JP5056668B2 JP 5056668 B2 JP5056668 B2 JP 5056668B2 JP 2008209032 A JP2008209032 A JP 2008209032A JP 2008209032 A JP2008209032 A JP 2008209032A JP 5056668 B2 JP5056668 B2 JP 5056668B2
Authority
JP
Japan
Prior art keywords
data transfer
unit
priority
arbitration
channel
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.)
Active
Application number
JP2008209032A
Other languages
English (en)
Other versions
JP2010044645A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008209032A priority Critical patent/JP5056668B2/ja
Priority to US12/502,573 priority patent/US8156260B2/en
Publication of JP2010044645A publication Critical patent/JP2010044645A/ja
Application granted granted Critical
Publication of JP5056668B2 publication Critical patent/JP5056668B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

本発明は、実行要求された複数のコマンドの実行順序を調停するデータ転送装置に関する。
メモリや磁気ディスクなどの複数の記憶部間のデータ転送はそれぞれの記憶部に接続したデータ転送装置により行う。データ転送装置間でのデータ転送を高速に処理するため、データ転送装置はCPU(Central Processing Unit)などの制御部を介すことなく他のデータ転送装置に直接データ転送処理を行う。このような処理はダイレクトメモリアクセス(Direct Memory Access:DMA)転送処理として一般に知られている。
データ転送装置はデータ転送先の装置ごとに対応したチャネル部を有する。データ転送先の装置ごとに対応したチャネル部は外部サーバ等からデータ転送要求があると、制御部から出力されたDMA転送命令であるコマンドを保持する。各チャネル部は一つ以上のコマンドを保持すると、DMA転送処理を実行するデータ転送処理部に対しコマンド実行を要求する要求信号を出力する。データ転送処理部は要求信号を受け付けると、要求信号を出力したチャネル部に保持されたコマンドを実行する。
データ転送装置が複数の装置との間でデータ転送を行う場合、複数のチャネル部は一つのデータ転送処理部を共有する。データ転送処理部は一度に一つのコマンドしか実行できない。このため複数のチャネル部から同時に複数の要求信号が出力された場合、データ転送処理部はそのうちの一つを選択し実行する必要がある。制御部からの複数のコマンドを入力とし、特定の調停条件にしたがって一つのコマンドを選択しデータ転送処理部に実行させる装置を調停装置という。
調停装置の処理によっては、チャネル部に保持されたまま長時間実行されないコマンドが生じることがある。コマンドの実行待ち時間がある一定値を超えると、そのコマンドはタイムアウトとなり、データ転送エラーとなる。このようなタイムアウトを回避するため、コマンドの実行待ち時間に応じてコマンドの実行順序を調停する技術が特許文献1乃至特許文献3に開示されている。
特開2002−366507号公報 特開2002−229934号公報 特開平05−342142号公報
本発明の課題の一側面は実行待ちコマンドのタイムアウトの発生を防止するためのデータ転送装置を提供することである。
本実施例にかかるデータ転送装置の一側面によれば、記憶部に記憶されたデータを複数の他の装置に対してダイレクトメモリアクセス(DMA)転送するためのデータ転送装置において、データの転送先となる該複数の他の装置に対応して設けられ、DMA転送命令を保持し、保持した該DMA転送命令の数を出力する複数のチャネル部と、それぞれの該チャネル部に対応して設けられ、該DMA転送命令を保持した数に基づいて該他の装置に対しての該DMA転送命令の優先度を設定する複数の優先度設定部と、該複数の優先度設定部からの情報に基づき同一優先度を設定した複数の該他の装置から一定の順序で一つの装置を選択する複数の第一調停部と、該複数の第一調停部が選択した該装置から該優先度に応じて一つ選択する第二調停部とからなる調停部と、該調停部が選択した該DMA転送命令に応じて該他の装置に該記憶部のデータをDMA転送するデータ転送処理部と、データ転送処理中か否かを記憶する状態レジスタと、DMA転送先である該他の装置に対応するチャネル部を記憶するチャネルレジスタとを備え、該第二調停部は該状態レジスタの情報に基づいて該チャネル部に終了信号を出力し、該チャネル部は該終了信号を受信するまで該DMA転送命令の実行要求を停止することを特徴とする。
本発明に係るデータ転送装置によれば、各チャネル部に保持されたコマンドの数に応じてコマンドの実行順位を調停し、タイムアウトの発生を防止することができる。
以下、本実施の形態について説明する。なお、以下の実施例はプロセッサによるプログラムの処理でも実現可能である。
[データ制御装置]
図1はデータ制御装置100のブロック図である。データ制御装置100はs個の複数のコントローラモジュール104、スイッチ部102を有する。なお、図1には複数のコントローラモジュール104のうち一つのコントローラモジュール104の内部のブロック図を詳細に示す。
スイッチ部102は複数個のコントローラモジュール104間のデータ転送経路である。個々のコントローラモジュール104はそれぞれデータ転送装置106、中継部108、制御部110、記憶部112、ホストインターフェース114、ディスクインターフェース116を有する。
データ転送装置106はコントローラモジュール104以外の他のコントローラモジュール104に対するデータ転送処理を実行する。データ転送装置106は例えばDMA転送方式によりデータ転送処理を行い、制御部110が関与することなく、記憶部112や他のコントローラモジュール104との間で直接データの転送を行う。データ転送装置106はデータ転送処理群120、調停部122、優先度設定群126、およびチャネル群124を有する。
データ転送処理群120は他のコントローラモジュール104に設けられたデータ転送処理群120に対しDMA転送命令を実行する。チャネル群124は他のコントローラモジュール104に対するDMA転送命令であるデータ転送コマンドの数をデータ転送先のコントローラモジュールごとにカウントする。優先度設定群126はそのデータ転送コマンドの数に基づいてデータ転送コマンドの優先順位を設定する。調停部122は設定した優先順位に基づいてデータ転送コマンドを選択し、データ転送処理群120に選択したデータ転送コマンドを送信する。データ転送コマンドの数に基づいて実行すべきコマンドを選択することにより、コマンド数の多いチャネル群124のコマンドを優先的に処理する。これによりデータ制御装置100はそれぞれのコントローラモジュール104に書き込まれたデータ転送コマンドのタイムアウトを防止することができる。
制御部110は例えばセントラルプロセッシングユニット(Central Processing Unit:CPU)であり、コントローラモジュール104を統括的に制御する。記憶部112はリードオンリーメモリ(Read Only Memory:ROM)やランダムアクセスメモリ(Randam Access Memory:RAM)等のメモリであり、図示しない外部のサーバから送信される各種データや制御部110が発行するデータ転送コマンド等を記憶する。中継部108は例えばメモリコントローラハブ(Memory Controller Hub:MCH)であり、制御部110、記憶部112、データ転送装置106間の信号伝達を中継する。
ホストインターフェース114は図示しない外部サーバと接続される。外部サーバはホ
ストインターフェース114を介してコントローラモジュール104にデータの書き込みや読み出し等の命令を行う。ディスクインターフェース116は図示しない磁気ディスク装置やRAID装置と接続される。個々のコントローラモジュール104はディスクインターフェース116を介して磁気ディスク装置等とデータの書き込みや読み出しを行う。[データ転送装置]
図2はデータ転送装置106のブロック図である。前述の通りデータ転送装置106はデータ転送処理群120、調停部122、優先度設定群126、チャネル群124を有する。優先度設定群126はn個の複数の優先度設定部300を有する。チャネル群124はn個のチャネル部200を有する。
データ転送処理群120はm個の複数のデータ転送処理部204を有する。データ転送処理部204は調停部122から送信されたデータ転送コマンドをそれぞれ独立に実行する。ここでmはnよりも小さい。
調停部122はk個の複数の第一調停部302を有する。また調停部122は第二調停部304を有する。
チャネル部200は制御部110から送信されたコマンド数に応じてコマンドを記憶する図示しない記憶部112のアドレスを加算する。チャネル部200はデータ転送先のコントローラモジュール104に応じて図示しない制御部110から送信されたコマンドの数を保持する。また、チャネル部200は保持するコマンド数が1つ以上の場合にはそのチャネル部に対応するコマンドを実行する要求を出す。具体的にはチャネル部200は優先度設定部300に対し図示しない要求信号212、コマンドを記憶するアドレスを示すアドレス信号213およびチャネル部200に保持されたコマンド数を示すコマンド数信号214を出力する。要求信号212、アドレス信号213、およびコマンド数信号214については後述する。
優先度設定部300はチャネル部200によって出力されたコマンド数信号214により要求信号212の優先度を設定する。個々の優先度設定部300はそれぞれのチャネル部200に対し設けられている。優先度設定部300はそれぞれのチャネル部200の機能の一部として設けても良い。優先度設定部300は設定した優先度に対応する第一調停部302に対し要求信号212を出力する。ここで第一調停部302の数kは優先度設定部300に設けた優先度の設定個数に等しい。優先度設定部300はすべての第一調停部302に対しアドレス信号213を分岐出力する。
第一調停部302はラウンドロビン型の調停回路である。ラウンドロビン型の第一調停回路302は複数の優先度設定部300から出力された要求信号212をチャネルごとに順番に選択する。第一調停部302は優先度設定部300により出力された同一優先度の複数の要求信号212のうち1つを選択し、第二調停部304へ出力する。また第一調停部302は選択した要求信号212に対応するアドレス信号213、チャネル番号318を出力する。チャネル信号318については後述する。
第二調停部304はk個の第一調停部302からそれぞれ出力された要求信号212およびアドレス信号213のうち、第二調停部304で設定されている優先度に応じて1つの要求信号212およびアドレス信号213を選択する。そして第二調停部304はデータ転送処理をしていないデータ転送処理部204のいずれかに要求信号212、アドレス信号213を出力する。どの優先度を選択するかは後述する優先度テーブル804により決定する。優先度テーブル804はチャネル部200による優先度の高い要求ほど選択される確率が高くなるように設定される。チャネル部200による優先度の高い要求を優先的に選択する事により、チャネル部200のいずれかに蓄積されたコマンド数が過剰に多
くなるのを防ぐことが出来る。これによりチャネル部200に要求されたコマンドのタイムアウトを防止する事ができる。
要求信号212を受信したデータ転送処理部204は入力されたアドレス信号213に基づいて図示しない記憶部112を参照し、アドレス信号213に対応するコマンドを記憶部112から取得する。データ転送処理部204はアドレス信号213に対応するコマンドに基づいてデータ転送先のコントローラモジュール104に対しデータ転送処理を実行する。データ転送処理部204はコマンドを実行後、図示しない状態信号218、終了信号220を第二調停部304に出力する。
第二調停部304はデータ転送処理部204により出力された状態信号218および終了信号220を受信すると、後述するチャネルレジスタ806に記憶したチャネル番号318を参照する。第二調停部304は参照したチャネル番号318に基づいて、要求信号216に対応するそれぞれのチャネル部200に対し状態信号412および終了信号420を出力する。チャネル部200は終了信号420を受けて、終了割り込み信号222を制御部110へ出力する。これによりチャネル部200は制御部110に対しデータ転送処理が終了したことを通知することが出来る。以上より、本実施例に係るデータ転送装置によれば、各チャネル部に保持されたコマンドの数に応じてコマンドの実行順位を調停し、タイムアウトの発生を防止することができる。
[チャネル部]
図3はチャネル部200の詳細ブロック図である。それぞれのチャネル部200はステートマシン400、開始レジスタ402、終了レジスタ404、状態レジスタ406を有する。
チャネル部200により出力されるアドレス信号213に対応するコマンドの実体は図示しない記憶部112に記憶されている。本実施例においてコマンドの実体は記憶部112の連続したアドレス空間に記憶されている。よってその記憶領域の開始アドレスと終了アドレスから、記憶部112に記憶されたコマンド数を取得することが出来る。
開始レジスタ402は記憶部112に記憶されたコマンド群の開始アドレスを記憶する。終了レジスタ404は記憶部112に記憶されたコマンド群の終了アドレスを記憶する。制御部110から記憶部112にコマンドが書き込まれるたびに終了レジスタ404をカウントアップすることで、記憶部112に記憶されたコマンド数を把握することができる。なお、コマンド数をカウントするためのカウンタを別途設け、記憶部112にコマンドが書き込まれるたびにカウントアップしても良い。これにより記憶領域の開始アドレスと終了アドレスを用いて演算することなく記憶部112に記憶されたコマンド数を取得することが出来る。
ステートマシン400は開始レジスタ402および終了レジスタ404に保持されたアドレス値の差分を計算し、差分が“0”でなければ要求信号212、アドレス信号213、およびコマンド数信号214を優先度設定部300へ出力する。ステートマシン400は要求信号212が受け入れられた事を示す承認信号410を優先度設定部300のいずれかから受信すると要求信号212の出力を停止する。承認信号410を受信した場合に要求信号212の出力を停止することにより、ステートマシン400はコマンドの実行が終了していないチャネルからの実行要求を止め、同一チャネルに対するコマンドの重複実行を回避することが出来る。重複実行を回避することにより、コマンドの実行が特定のチャネルに偏るのを防止することが出来る。
ステートマシン400は図示しないデータ転送処理部204でのデータ転送処理が終了した事を示す終了信号420および処理結果を示す状態信号412を第二調停部304か
ら受信する。終了信号420および状態信号412を受信したステートマシン400は開始レジスタ402のアドレスを加算し、状態レジスタ406に状態信号412を保持させる。開始レジスタ402のアドレスを加算した後、ステートマシン400は開始レジスタ402および終了レジスタ404に保持されたアドレス値の差分を計算する。ステートマシン400は差分が“0”でなければ要求信号212、アドレス信号213、およびコマンド数信号214を再び出力する。
ステートマシン400は制御部110に対し割り込み信号222を出力する。制御部110は状態レジスタ406に保持した状態信号412を参照しデータ転送処理部204によるデータ転送処理結果を確認する。
[ステートマシン]
図4はステートマシン400の動作フローチャート図である。
ステートマシン400は開始レジスタ402および終了レジスタ404を参照し、開始アドレスと終了アドレスとの差分が1以上であれば(S10、YES)要求信号212を優先度設定部300に出力する(S12)。開始アドレスと終了アドレスとの差分が1より小さければ(S10、NO)実行すべきコマンドはないので要求信号212は出力されない。
ステートマシン400は優先度設定部300により出力される承認信号410を受信するまで要求信号212を出力し続けるが(S14、NO)、承認信号410を受信すると、要求信号212の出力を停止する(S16)。
ステートマシン400は終了信号420を第二調停部304から受信するまで動作停止しているが(S18、NO)、終了信号420を受信すると(S18、YES)開始レジスタ402に1を加算し(S20)、制御部110へ割り込み信号222を出力し(S22)、ステップS10からの処理を再び実行する。
[優先度設定部]
図5は優先度設定部300のブロック図である。優先度設定部300は優先度判定回路500、閾値レジスタ502、OR回路504を有する。
チャネル部200により出力された要求信号212およびコマンド数信号214は優先度判定回路500に入力される。優先度判定回路500はコマンド数信号214に応じて要求信号212の優先度を判定する優先度判定動作を開始する。閾値レジスタ502は優先度判定に必要な閾値を記憶している。この閾値レジスタ502の閾値はそれぞれの優先度設定部300の外部から書き換えることも出来る。閾値レジスタ502の閾値を外部から書き換え可能にすることにより、調停動作に応じて閾値を最適化することができる。本実施例において閾値レジスタ502はそれぞれの優先度設定部300に設けられているが、すべての優先度設定部300までに共通のレジスタを1つ設けても良い。
優先度判定回路500はコマンド数信号214と閾値レジスタ502に記憶された閾値とを比較し、要求信号212の優先度を設定する。優先度判定回路500は設定した優先度に対応する図示しない第一調停部302に対し、要求信号212を出力する。本実施の形態においては、レベル高、レベル中、レベル低に対応する3つの第一調停部302がある。
優先度設定部300に入力されたアドレス信号213は後述するそれぞれの第一調停部302に対し分岐して出力される。またそれぞれの第一調停部302から出力された承認信号410はOR回路504に入力される。OR回路504はいずれかの承認信号410を受信すると、承認信号410を出力する。
[優先度判定回路]
図6は優先度判定回路500の動作フローチャート図である。本実施例において、優先度判定回路500は入力された要求信号212を3つの優先度レベルのいずれかに設定する。また、閾値レジスタ502はレベル高の判定値として“20”を、レベル中の判定値として“10”を記憶している。優先度判定回路500はレベル高、レベル中、またはレベル低の要求信号212を判定レベルに応じて第一調停部302に出力する。
優先度判定回路500は要求信号212が入力されていない場合(S100、NO)待機状態であり、要求信号212が入力されると(S100、YES)判定動作を開始する。例えば要求信号212の論理値が“0”のときは要求信号212が入力されていないと判定し、論理値が“1”のときは要求信号212が入力されていると判定する。
優先度判定回路500は入力されたコマンド数信号214と閾値レジスタ502に記憶された閾値とを比較する。コマンド数信号214が閾値“20”より大きい場合(S102、YES)、要求信号212をレベル高の第一調停部302へ出力する(S104)。コマンド数信号214が閾値“20”より小さい場合(S102、NO)ステップS106を実行する。
優先度判定回路500は入力されたコマンド数信号214が閾値“10”よりも大きい場合(S106、YES)要求信号212をレベル中の第一調停部302へ出力する(S108)。一方コマンド数信号214が閾値“10”よりも小さい場合(S106、NO)要求信号212をレベル小の第一調停部302へ出力する(S110)。
以上の通り優先度判定回路500は入力された要求信号212およびコマンド数信号214に応じて選択された優先度に対応する第一調停部302のいずれかへ要求信号212を出力することができる。
[第一調停部]
図7はそれぞれの第一調停部302のブロック図である。第一調停部302は入力信号の調停処理を行う調停処理部350、調停処理部350により選択したチャネルのチャネル番号318を保持するチャネルレジスタ352を有する。
第一調停部302は、複数の優先度設定部300により出力された同一優先度の要求信号212および要求信号212に対応するアドレス信号213を受信する。それぞれの第一調停部302は例えばラウンドロビン方式の調停処理部350を有しており、複数の要求信号212およびアドレス信号213のうちの一つの要求信号212およびアドレス信号213を偏り無く選択する。
調停処理部350は複数の要求信号212およびアドレス信号213のうち選択した一つの要求信号212およびアドレス信号213を第二調停部304へ出力する。調停処理部350は選択した要求信号212を出力した優先度設定部300のチャネルの番号をチャネル番号318として出力する。調停処理部350は出力したチャネル番号318をチャネルレジスタ352に保持する。このように、優先度ごとに調停部を設けることにより優先度ごとの要求信号212の選択を均一化することができる。この結果、ラウンドロビン方式のそれぞれの第一調停部302は同一の優先度の要求信号212を出力するチャネル部200から偏りなく1つのチャネルを選択することができる。
調停処理部350は要求信号212が受理されたことを表す承認信号410を第二調停部304から受信すると、チャネルレジスタ352に保持されたチャネル番号318を参照する。調停処理部350は参照したチャネル番号318に対応する優先度設定部300に対し、承認信号410を出力する。要求信号212に対応するチャネル番号318をチ
ャネルレジスタ352に保持しておくことにより、調停処理部350は要求信号212を出力したチャネルに対して承認信号410を送信することができる。
[第二調停部]
図8はそれぞれの第一調停部302により出力された要求信号212を優先度に応じて調停する第二調停部304のブロック図である。
第二調停部304は調停処理部800、テーブルレジスタ802、チャネルレジスタ806、ポインタレジスタ808、状態レジスタ810を有する。テーブルレジスタ802は優先度テーブル804を記憶する。チャネルレジスタ806はデータ転送処理部204に受理された要求信号212に対応するチャネル番号318を記憶する。状態レジスタ810はデータ転送処理部204における処理の状況を記憶する。第二調停部304はk個の第一調停部302により出力された要求信号212、アドレス信号213、チャネル番号318を受信する。
調停処理部800はポインタ値と優先度との対応表であるテーブルレジスタ802に記憶された優先度テーブル804を参照する。調停処理部800は優先度テーブル804から決定される優先度に対応する要求信号212およびアドレス信号213を処理が終了しているいずれかのデータ転送処理部204に送信する。調停処理部800は各データ転送処理部204に送信した要求信号212に対応するチャネル番号318をチャネルレジスタ806に記憶する。調停処理部800は要求信号212を受信したデータ転送処理部204が処理中であることを示すフラグを状態レジスタ810に記憶する。調停処理部800は優先度テーブル804から優先度を参照する際に用いるポインタ値をポインタレジスタ808に記憶する。
データ転送処理部204はアドレス信号213に基づいて記憶部112のコマンドを参照しデータ転送処理を実行する。データ転送処理部204は処理が終了すると、第二調停部304に対し処理が成功したか失敗したかを示す状態信号412および処理が終了したことを示す終了信号420を出力する。調停処理部800は終了信号220を受信するとデータ転送処理部204の処理が終了したことを示すフラグを状態レジスタ810に記憶する。調停処理部800はチャネルレジスタ806に記憶した要求信号212に対応するチャネル番号318を参照し、要求信号212に対応するチャネル部200に対し状態信号412および終了信号420を出力する。状態信号412および終了信号420により、第二調停部304はそれぞれのチャネル部200に対しデータ転送処理が終了したことおよびデータ転送の処理結果を通知することが出来る。
[優先度テーブル]
図9は調停処理部800が参照する優先度テーブル804である。優先度テーブル804において、列900はポインタレジスタ808に記憶するポインタ値を、列902はポインタ値に対応する優先度を示す。本実施例において、優先度テーブル804は9行のデータを有している。9行のデータのうち5行はレベル高、3行はレベル中、1行はレベル低のコマンドとなっている。ポインタ値に対応する優先度の数をレベル高が多くなるように割り振ることにより、優先度テーブル804の一行目から順番に参照しながら調停処理部800に優先度を設定すると、レベル高のコマンドがもっとも高い比率で選択され、レベル低のコマンドがもっとも低い比率で選択されるように設定することができる。本実施の形態の場合、レベル高のコマンドが選択される比率は約56%であり、レベル低のコマンドが選択される比率は約11%である。
行904は優先度テーブル804の一行目のデータである。行904において、ポインタ値“0”に対応する優先度はレベル高と設定されている。つまり、ポインタレジスタ808に保持されているポインタ値が“0”の場合、調停処理部800はレベル高のコマンドに対応する第一調停部302からの要求信号212等を選択し、データ転送処理部20
4に送信する。
行907は優先度テーブル804の二行目のデータである。行907において、ポインタ値“1”に対応する優先度はレベル中と設定されている。つまり、ポインタレジスタ808に保持されているポインタ値が“1”の場合、調停処理部800はレベル中のコマンドに対応する第一調停部302からの要求信号212等を選択し、データ転送処理部204に送信する。
行908は優先度テーブル804の四行目のデータである。行908において、ポインタ値“5”に対応する優先度はレベル低と設定されている。つまり、ポインタレジスタ808に保持されているポインタ値が“5”の場合、調停処理部800はレベル低のコマンドに対応する第一調停部302からの要求信号212等を選択し、データ転送処理部204に送信する。
行906は優先度テーブル804の最終行である9行目のデータである。調停処理部800は行906を参照すると、次に選択すべき優先度の参照を再び一行目である行904からおこなう。優先度テーブル804の行数、および各行に設定した優先度は外部から書き換え可能である。これにより、それぞれのチャネル部200に保持されたコマンド数が偏らないように優先度テーブル804を書き換えることができ、優先度の最適な割り振りが可能となる。
[調停処理部]
図10は調停処理部800の動作フローチャート図である。調停処理部800はポインタレジスタ808に保持しているポインタの値を“0”にする(S200)。調停処理部800はそれぞれの第一調停部302のいずれかから要求信号212を受信するまで待機状態にあり(S202、NO)、要求信号212を受信するとステップS204に進む(S202、YES)。
調停処理部800は状態レジスタ810を参照し、転送処理を実行していないデータ転送処理部204が無い場合はいずれかの転送処理が終了するまで待機状態となる(S204、NO)。調停処理部800は転送処理が終了したデータ転送処理部204がある場合は(S204、YES)、優先度テーブル804からポインタレジスタ808のポインタ値に対応する優先度を読み出して設定する(S206)。例えばポインタ値が“0”の場合、調停処理部800は優先度テーブル804の行904を参照し、優先度をレベル高に設定する。
調停処理部800はステップS206で設定した優先度に対応する第一調停部302により出力された要求信号315jを受信しているか否かをチェックし、受信していない場合はステップS214の処理を実行する(S208、NO)。調停処理部800は設定した優先度に対応するそれぞれの第一調停部302により出力された要求信号212を受信している場合は(S208、YES)、この要求信号212および対応するアドレス信号213をデータ転送処理部204に送信する(S210)。同時に調停処理部800は要求信号212に対応するチャネル番号318をデータ転送処理部204に対応するチャネルレジスタ806に記憶する。また調停処理部800は状態レジスタ810のフラグをデータ転送処理部204が処理中であることを示す状態に変更する。
調停処理部800は要求信号212がデータ転送処理部204に出力されたことをそれぞれのチャネル部200に通知するため承認信号410を出力する(S212)。調停処理部800はポインタレジスタ808のポインタ値が“8”の場合は(S214、YES)ポインタ値を“0”にする(S200)。調停処理部800はポインタレジスタ808のポインタ値が“8”でない場合は(S214、NO)ポインタレジスタ808のポイン
タ値に“1”を加算する(S216)。ポインタ値の加算処理後、調停処理部800はステップS202以降の処理を繰り返す。
上記動作によって、調停処理部800は各データ転送処理部204の処理状態を把握することが出来、各データ転送処理部204に無駄なくデータ転送処理を実行させることが出来る。
データ制御装置のブロック図である。 データ転送装置のブロック図である。 チャネル部のブロック図である。 ステートマシンの動作フローチャート図である。 優先度設定部のブロック図である。 優先度判定回路の動作フロー図である。 第一調停部のブロック図である。 第二調停部のブロック図である。 優先度テーブル図である。 調停処理部の動作フローチャート図である。
符号の説明
100 データ制御装置
104 コントローラモジュール
106 データ転送装置
110 制御部
112 記憶部
120 データ転送処理群
122 調停部
124 チャネル群
126 優先度設定群
204 データ転送処理部
200 チャネル部
300 優先度設定部
302 第一調停部
304 第二調停部
212 要求信号
213 アドレス信号
214 コマンド数信号
410 承認信号
412 状態信号
420 終了信号
400 ステートマシン
402 開始レジスタ
404 終了レジスタ
406 状態レジスタ
222 割り込み信号
500 優先度判定回路
502 閾値レジスタ
350 調停処理部
352 チャネルレジスタ
800 調停処理部
802 テーブルレジスタ
804 優先度テーブル
806 チャネルレジスタ
808 ポインタレジスタ
810 状態レジスタ

Claims (5)

  1. 記憶部に記憶されたデータを複数の他の装置に対してダイレクトメモリアクセス(DMA)転送するためのデータ転送装置において、
    データの転送先となる該複数の他の装置に対応して設けられ、DMA転送命令を保持し、保持した該DMA転送命令の数を出力する複数のチャネル部と、
    それぞれの該チャネル部に対応して設けられ、該DMA転送命令を保持した数に基づいて該他の装置に対しての該DMA転送命令の優先度を設定する複数の優先度設定部と、
    該複数の優先度設定部からの情報に基づき同一優先度を設定した複数の該他の装置から一定の順序で一つの装置を選択する複数の第一調停部と、該複数の第一調停部が選択した該装置から該優先度に応じて一つ選択する第二調停部とからなる調停部と、
    該調停部が選択した該DMA転送命令に応じて該他の装置に該記憶部のデータをDMA転送するデータ転送処理部と、
    データ転送処理中か否かを記憶する状態レジスタと、
    DMA転送先である該他の装置に対応するチャネル部を記憶するチャネルレジスタとを備え、
    該第二調停部は該状態レジスタの情報に基づいて該チャネル部に終了信号を出力し、該チャネル部は該終了信号を受信するまで該DMA転送命令の実行要求を停止することを特徴とするデータ転送装置。
  2. 該第二調停部は該優先度に応じた該他の装置の選択順位を設定した優先度テーブルを記憶するテーブルレジスタと、該優先度テーブルに基づいて該他の装置を選択する調停処理部とを有することを特徴とする、請求項1に記載のデータ転送装置。
  3. 該優先度設定部は優先度を判定するための一つ以上の閾値を記憶する閾値レジスタを有することを特徴とする、請求項1に記載のデータ転送装置。
  4. 記憶部に記憶されたデータを複数の他の装置に対してダイレクトメモリアクセス(DMA)転送するためのデータ転送装置のデータ転送方法において、
    データの転送先となる該複数の他の装置に対応して設けられ、DMA転送命令を保持し、
    該DMA転送命令を保持した数に基づいて該他の装置に対しての該DMA転送命令の優先度を設定し、
    設定した該優先度に基づき同一優先度を設定した複数の該他の装置から均等に一つの装置を選択し、選択した該装置から該優先度に応じてDMA転送する対象の該他の装置を一つ選択し、
    選択した該他の装置に対して該記憶部のデータをDMA転送し、
    データ転送処理中か否かを記憶する状態レジスタの情報に基づいて、DMA転送先である該他の装置に対応するチャネル部に終了信号を出力し、該チャネル部は該終了信号を受信するまで該DMA転送命令の実行要求を停止する
    ことを特徴とするデータ転送装置のデータ転送方法。
  5. 該優先度に応じた該他の装置の選択は該優先度による該他の装置の選択順位を設定した優先度テーブルに基づいて行うことを特徴とする、請求項4に記載のデータ転送装置のデータ転送方法。
JP2008209032A 2008-08-14 2008-08-14 データ転送装置、およびデータ転送方法 Active JP5056668B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008209032A JP5056668B2 (ja) 2008-08-14 2008-08-14 データ転送装置、およびデータ転送方法
US12/502,573 US8156260B2 (en) 2008-08-14 2009-07-14 Data transfer device and method for selecting instructions retained in channel unit based on determined priorities due to the number of waiting commands/instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008209032A JP5056668B2 (ja) 2008-08-14 2008-08-14 データ転送装置、およびデータ転送方法

Publications (2)

Publication Number Publication Date
JP2010044645A JP2010044645A (ja) 2010-02-25
JP5056668B2 true JP5056668B2 (ja) 2012-10-24

Family

ID=41682053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008209032A Active JP5056668B2 (ja) 2008-08-14 2008-08-14 データ転送装置、およびデータ転送方法

Country Status (2)

Country Link
US (1) US8156260B2 (ja)
JP (1) JP5056668B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683100B1 (en) 2011-06-21 2014-03-25 Netlogic Microsystems, Inc. Method and apparatus for handling data flow in a multi-chip environment using an interchip interface
US8972614B2 (en) * 2011-12-26 2015-03-03 Apple Inc. Half-duplex SATA link with controlled idle gap insertion
CN103678199B (zh) * 2012-09-26 2017-05-10 深圳市中兴微电子技术有限公司 一种传输数据的方法和设备
US9658799B2 (en) * 2013-09-25 2017-05-23 International Business Machines Corporation Data storage device deferred secure delete
CN115658566B (zh) * 2022-11-02 2023-05-30 中科驭数(北京)科技有限公司 一种实现多通道数据流均衡的方法和***

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2806672B2 (ja) * 1992-01-28 1998-09-30 九州日本電気株式会社 ダイレクトメモリアクセス転送制御装置
JPH05342142A (ja) 1992-06-04 1993-12-24 Nec Corp 直接メモリアクセス制御方式
JPH08129522A (ja) * 1994-10-31 1996-05-21 Victor Co Of Japan Ltd マルチメディアデータの転送方法
JP2002229934A (ja) 2001-01-31 2002-08-16 Sony Corp 情報転送装置および情報転送方法
JP5040050B2 (ja) 2001-06-12 2012-10-03 富士通株式会社 複数チャネルdmaコントローラおよびプロセッサシステム
JP4322068B2 (ja) * 2003-03-07 2009-08-26 富士通株式会社 ストレージシステム及びそのデイスク負荷バランス制御方法
WO2005015805A2 (en) * 2003-08-08 2005-02-17 Visionflow, Inc. Software and hardware partitioning for multi-standard video compression and decompression
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
JP4878185B2 (ja) * 2006-03-17 2012-02-15 株式会社リコー データ通信回路および調停方法
JP4996929B2 (ja) * 2007-01-17 2012-08-08 株式会社日立製作所 仮想計算機システム

Also Published As

Publication number Publication date
JP2010044645A (ja) 2010-02-25
US8156260B2 (en) 2012-04-10
US20100042756A1 (en) 2010-02-18

Similar Documents

Publication Publication Date Title
US11467769B2 (en) Managed fetching and execution of commands from submission queues
JP6072783B2 (ja) メモリコントローラおよびかかるメモリコントローラの動作方法
JP6146128B2 (ja) データ処理装置
JP5056668B2 (ja) データ転送装置、およびデータ転送方法
JP2011150397A (ja) バス調停装置
JP4752882B2 (ja) メモリアクセスシステム、メモリ制御装置、メモリ制御方法、および、プログラム
US20110022759A1 (en) Multiprocessor system
JP2007026366A (ja) メモリコントローラ
JP2010211322A (ja) ネットワークプロセッサ、受信コントローラ、及びデータ受信処理方法
JP2011232917A (ja) 半導体集積回路、及びリクエスト制御方法
JP5382113B2 (ja) 記憶制御装置及びその制御方法
US8533368B2 (en) Buffering device and buffering method
US7185122B2 (en) Device and method for controlling data transfer
JP2006215621A (ja) Dma制御装置
US10540305B2 (en) Semiconductor device
JP2009059276A (ja) 情報処理装置およびプログラム
JP2008108126A (ja) データ転送制御装置及びそのバスアクセス調停方法
CN113711192B (zh) 信息处理装置
JP7292044B2 (ja) 制御装置および制御方法
JPWO2018003244A1 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
JP5428653B2 (ja) メモリアクセス処理装置及び方法
JP2006331008A (ja) メモリインタフェース
JP2003085125A (ja) メモリ制御器及びメモリ制御方法
CN116204464A (zh) 直接内存访问电路及其操作方法
JP6535516B2 (ja) マルチ・プログラマブルデバイス・システムとその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120417

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120418

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120614

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

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

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

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5056668

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150