JP6880402B2 - メモリアクセス制御装置及びその制御方法 - Google Patents

メモリアクセス制御装置及びその制御方法 Download PDF

Info

Publication number
JP6880402B2
JP6880402B2 JP2017093914A JP2017093914A JP6880402B2 JP 6880402 B2 JP6880402 B2 JP 6880402B2 JP 2017093914 A JP2017093914 A JP 2017093914A JP 2017093914 A JP2017093914 A JP 2017093914A JP 6880402 B2 JP6880402 B2 JP 6880402B2
Authority
JP
Japan
Prior art keywords
memory access
dma
data transfer
request
control device
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
JP2017093914A
Other languages
English (en)
Other versions
JP2018190277A (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 JP2017093914A priority Critical patent/JP6880402B2/ja
Priority to US15/964,250 priority patent/US10409746B2/en
Publication of JP2018190277A publication Critical patent/JP2018190277A/ja
Application granted granted Critical
Publication of JP6880402B2 publication Critical patent/JP6880402B2/ja
Active 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization

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)転送方式がある(例えば、特許文献1〜3参照)。DMA転送方式では、CPUが周辺機器の内部あるいはバス上に存在するDMA制御装置(DMAコントローラ)にデータ転送要求(DMAリクエスト)を通知し、それに従ってDMA制御装置がデータ転送を行う。
ホスト装置のCPUが、転送元となるソースアドレス、転送先となるデスティネーションアドレス、及び転送サイズ等の情報からなるDMAリクエストをDMA制御装置に送信する。これらのDMA転送に必要な情報をまとめてDMAディスクリプタ(転送記述子)と呼ぶ。DMAリクエストを受けたDMA制御装置がDMA転送処理を開始すると、まずDMAディスクリプタに示されるソースアドレスに対するメモリリードリクエストを、ホストメモリへのメモリアクセスを行うホスト装置側のメモリコントローラに送信する。
メモリリードリクエストを受けたホスト装置側のメモリコントローラは、ホストメモリに対するリードアクセスを行い、読み出したデータを応答データとしてDMA制御装置に送信する。応答データを受けたDMA制御装置は、DMAディスクリプタに示されるデスティネーションアドレスに対して応答データを書き込む。これらの動作を順次アドレスを変化させてDMAディスクリプタに示される転送サイズ分繰り返し行うことでDMA転送によるデータ転送が完了する。なお、周辺機器の内部にDMA制御装置が存在する場合、周辺機器からホストメモリへのデータ移動をDMAライトと呼び、ホストメモリから周辺機器へのデータ移動をDMAリードと呼ぶ。
特開平11−134287号公報 特開2005−141299号公報 特開2010−152837号公報
周辺機器としてのデバイスからホストメモリに対して、図9(A)に示すDMAリードを行う場合を考える。DMAリクエストAでは、ホストメモリのアドレス0〜9にリードアクセスを行い、DMAリクエストBでは、ホストメモリのアドレス1〜10にリードアクセスを行う。図9(B)に示すように、DMAリクエストAによりリードアクセスされる領域(A)901と、DMAリクエストBによりリードアクセスされる領域(B)902とは、アドレス1〜9の領域(C)903が重複している。
従来のDMA制御装置は、図10に示すように、DMAリクエストA及びDMAリクエストBのそれぞれについて、ホスト装置側のメモリコントローラにメモリリードリクエストを逐一送信し、その応答データをデバイスのメモリの対応する領域に書き込む。したがって、図10に示すように、ホストメモリのアドレス1〜9に対するリードアクセスが2回発生することとなる。
例えば、画像に対するフィルタ処理を行う際のメモリアクセスでは、前述のような重複する領域へのアクセスが頻発する。画像に対するフィルタ処理をホスト装置とは別のデバイスに行わせる場合、処理対象のデータをDMAリードリクエストによりホストメモリからデバイスに転送するが、重複するアドレスへのアクセスが逐一発生して時間がかかり、データ転送処理がボトルネックとなってしまう。
1つの側面では、本発明の目的は、データ転送性能を向上させることができるメモリアクセス制御装置を提供することにある。
メモリアクセス制御装置の一態様は、複数のメモリアクセスリクエストのデータ転送元のアドレスの重複部分を検出する検出部と、重複部分が検出された複数のメモリアクセスリクエストを、重複部分に対するデータ転送元へのリードアクセスをまとめるように統合し、前記重複部分以外についてのメモリアクセスリクエスト及び前記重複部分についてのメモリアクセスリクエストを生成する統合部と、統合したメモリアクセスリクエストに従ったデータ転送を実行する実行部と、転送されたデータの統合前のメモリアクセスリクエストのデータ転送先のアドレスへの書き込みを指示する管理部とを有する。
発明の一態様においては、データ転送性能を向上させることができるメモリアクセス制御装置を提供することができる。
図1は、本発明の実施形態におけるDMA制御装置の構成例を示す図である。 図2は、本実施形態におけるDMAリクエストの重複部分の検出を説明する図である。 図3は、本実施形態における統合後のDMAディスクリプタを説明する図である。 図4(A)及び図4(B)は、本実施形態における統合アドレステーブルの例を示す図である。 図5は、本実施形態におけるDMA制御装置によるデータ転送動作の例を示す図である。 図6は、本実施形態におけるDMA制御装置の動作例を示すフローチャートである。 図7(A)及び図7(B)は、本実施形態における統合アドレステーブルの例を示す図である。 図8は、本実施形態におけるDMA制御装置を有するコンピュータシステムの構成例を示す図である。 図9(A)及び図9(B)は、重複部分を有するDMAリクエストを説明する図である。 図10は、従来のDMA制御装置によるデータ転送動作を示す図である。
以下、本発明の実施形態を図面に基づいて説明する。
図1は、本発明の一実施形態におけるダイレクトメモリアクセス(Direct Memory Access:DMA)制御装置の構成例を示す図である。本実施形態におけるDMA制御装置100は、ホストメモリ108に対するメモリアクセスを行うホスト装置107のメモリコントローラと接続される。また、DMA制御装置100は、スイッチ112を介して、図示しないデバイスメモリに対するメモリアクセスを行うメモリコントローラ(MAC)113と接続される。
送信部としてのスイッチ112は、DMAリクエストの応答データのデバイスメモリへの書き込みを要求するメモリライトリクエストを、デスティネーションアドレスに対応するメモリコントローラ113に発行する。本実施形態において、スイッチ112は、複数のメモリコントローラ113に対してメモリライトリクエストを一斉に発行するマルチキャスト機能を有する。なお、図1には、2つのメモリコントローラ113−0、113−1が存在する例を示しているが、DMA制御装置100が、スイッチ112を介して接続されるメモリコントローラ113の数は任意である。また、DMA制御装置100の内部にスイッチ112を設けるようにしてもよい。
DMA制御装置100は、DMAキュー101、アドレス比較部102、統合要求部103、統合管理部104、セレクタ105、DMAエンジン106、デマルチプレクサ109、バッファ110、及び書き込み制御部111を有する。DMAキュー101は、ホスト装置107のCPUから通知されるDMA転送方式でのデータ転送要求(DMAリクエスト)が格納される。具体的には、DMAキュー101は、CPUから通知されるDMAリクエストに係るDMAディスクリプタ(転送記述子)を格納し、順に出力する。
DMAディスクリプタは、DMA転送におけるデータ転送元となるソースアドレス、データ転送先となるデスティネーションアドレス、及び転送サイズ等の情報を含む。また、DMAディスクリプタに、後続のDMAリクエストが追い越し可能であるかを示す追い越し可能フラグを含ませてもよく、例えばフラグの値が“1”である場合には後続のDMAリクエストは追い越し禁止としてもよい。追い越し可能フラグは、例えばホスト装置側で後続のDMAリクエストによる追い越しが可能であるか否かを判断してDMAディスクリプタに付与すればよい。
検出部としてのアドレス比較部102は、DMAキュー101に格納されたDMAディスクリプタのアドレス情報等を比較し、格納されたDMAディスクリプタにおけるデータ転送元のアドレスの重複部分を検出する。アドレス比較部102は、DMAキュー101内の先頭のDMAリクエストとそれ以降のDMAリクエストとでデータ転送元のアドレスの重複部分を検出する。
アドレス比較部102は、開始アドレス_A、転送サイズSize_AのDMAリクエストと、開始アドレス_B、転送サイズSize_BのDMAリクエストとが、(開始アドレス_A+Size_A)−(開始アドレス_B)>0の関係を満たすとき、データ転送元のアドレスに重複部分があると判断する。このとき、アドレス比較部102は、図2に示すように開始アドレス_Bから(開始アドレス_A+Size_A)までの領域(C)203をデータ転送元のアドレスの重複部分として検出する。なお、図2において、領域(A)201は、開始アドレス_A、転送サイズSize_AのDMAリクエストによりリードアクセスされる領域であり、領域(B)202は、開始アドレス_B、転送サイズSize_BのDMAリクエストによりリードアクセスされる領域である。
統合部としての統合要求部103は、アドレス比較部102によりデータ転送元のアドレスに重複部分を有する複数のDMAリクエストが検出された場合、それらのDMAリクエストを統合して、統合後のDMAリクエストに係るDMAディスクリプタを生成し内部のキューバッファに格納する。また、統合要求部103は、統合前のDMAリクエストをDMAキュー101から解放(リリース)させるとともに、統合後のDMAリクエストに係るDMAディスクリプタの情報を統合管理部104に出力する。
統合要求部103は、例えば図2に示したように2つのDMAリクエストがアドレスの重複部分を有する場合、この2つのDMAリクエストの重複部分に対するリードアクセスをまとめるように統合して図3に示すようなDMAディスクリプタを生成する。すなわち、領域Aの単独部分についての開始アドレス_A、転送サイズ(開始アドレス_B−開始アドレス_A)のDMAリクエストと、領域AとBの重複部分(C)についての開始アドレス_B、転送サイズ((開始アドレス_A+Size_A)−開始アドレス_B)のDMAリクエストと、領域Bの単独部分についての(開始アドレス_A+Size_A)、転送サイズ((開始アドレス_B+Size_B)−(開始アドレス_A+Size_A))のDMAリクエストとを生成する。
また、DMAディスクリプタに追い越し可能フラグを有する場合には、統合要求部103は、データ転送元のアドレスに重複部分を有する2つのDMAリクエストが追い越し可能であるか否かを調べて、DMAリクエストの統合を行う。DMAキュー101の(N−1)番目までのDMAリクエストが追い越し可能であり、N番目のDMAリクエストが追い越し不可能であるならば、(N−1)番目までのDMAリクエストについて統合が可能となる。
すなわち、DMAディスクリプタの追い越し可能フラグの値が“1”であるDMAリクエスト以降のDMAリクエストは、それ以前のDMAリクエストとは統合できないようにする。例えば、先頭(1番目)のDMAリクエストと後続の3番目のDMAリクエストに重複部分があるとしても、後続の2番目のDMAリクエストが追い越し禁止である場合、3番目のDMAリクエストが2番目のDMAリクエストを追い越しできないため、1番目のDMAリクエストと3番目のDMAリクエストとを統合できない。
管理部としての統合管理部104は、統合要求部103からの統合後のDMAリクエストに係るDMAディスクリプタの情報を受けて統合アドレステーブルに格納する。図4(A)に統合アドレステーブルの例を示す。統合アドレステーブルは、統合後のDMAリクエストにおけるソースアドレスに対するデスティネーションアドレスの対応を示すテーブルである。統合アドレステーブルでは、ソースアドレスに対して複数のデスティネーションアドレスが記述でき、統合したDMAリクエストの数だけデスティネーションアドレスを記述可能となっている。
図4(A)に示す例では、エントリ0にDMAディスクリプタが格納されたDMAリクエストのソースアドレスAに対してデスティネーションアドレスX0が対応付けられてい
る。また、エントリ1にDMAディスクリプタが格納されたDMAリクエストのソースアドレスBに対してデスティネーションアドレスX1、Y0が対応付けられ、エントリ2に
DMAディスクリプタが格納されたDMAリクエストのソースアドレスCに対してデスティネーションアドレスY1が対応付けられている。さらに、重複している部分(エントリ1のDMAリクエスト)については、マルチキャストフラグMCがYesとなっており、この部分の応答データはデバイスメモリへマルチキャストライトすることが可能となっている。
統合管理部104は、統合後のDMAリクエストに対する応答データが返ってきたとき、統合アドレステーブルを参照して、対応するデスティネーションアドレスを取得し、そのアドレスに対するメモリライトリクエストを発行して応答データの書き込みを指示する。例えば、図4(A)に示した統合アドレステーブルを参照することで、図4(B)に示すように応答データがデバイスメモリへ書き込まれる。
セレクタ105は、DMAキュー101から出力されるDMAディスクリプタ又は統合要求部103から出力される統合後のDMAリクエストのDMAディスクリプタを選択して出力する。セレクタ105は、通常はDMAキュー101から出力されるDMAディスクリプタを選択して出力し、統合後のDMAリクエストが存在する場合、統合要求部103から出力されるDMAディスクリプタを選択して出力する。
DMAエンジン106は、セレクタ105から出力されるDMAディスクリプタに従ってメモリリードリクエストをホスト装置107のメモリコントローラに発行する。DMAエンジン106からのメモリリードリクエストを受けたホスト装置107のメモリコントローラは、ホストメモリ108に対するリードアクセスを行い、読み出したデータを応答データとしてDMA制御装置100に返す。また、DMAエンジン106は、統合後のDMAリクエストのDMAディスクリプタに基づくDMA処理が完了した場合、統合要求部103に完了通知を行う。
ホスト装置107からの応答データは、統合されていないDMAリクエストのものであれば書き込み制御部111に出力され、統合後のDMAリクエストのものであればデマルチプレクサ109を介して統合管理部104及びバッファ110に出力される。バッファ110は、ホスト装置107からの応答データを保持するバッファである。書き込み制御部111は、ホスト装置107から応答データが返ってきたとき、その応答データのデバイスメモリへの書き込み処理を制御する。
ここで、本実施形態では、統合後のDMAリクエストに対する応答データが返ってきたとき、複数のデスティネーションアドレスに対する同じデータの書き込みが発生する。異なるメモリコントローラに接続されたデバイスメモリに書き込む場合にはマルチキャスト方式による一括でのライト処理を行い、同じメモリコントローラに接続されたデバイスメモリに書き込む場合には、バッファ110を用いてシリアルにライト処理を行う。
詳細には、異なるメモリコントローラに接続されたデバイスメモリに書き込む場合、スイッチ112に統合後の応答データを“マルチキャストライト”として送信することで、スイッチ112が各メモリコントローラ113にマルチキャストする。マルチキャストライトを受け取ったそれぞれのメモリコントローラ113は、それぞれデータをデバイスメモリに書き込む。なお、マルチキャストライトによる書き込みを指示したが、ビジー状態等で書き込みできなかった場合には、書き込み可能な状態になった後にバッファ110に保持した応答データを書き込むようにすればよい。また、同じメモリコントローラに接続されたデバイスメモリに書き込む場合、重複部分の応答データに対して、ある単位毎に分割してそれぞれデバイスメモリへ書き込む。この場合、後続の応答データがあふれないようにバッファ110を用いてオーバーフローしないように制御する。
本実施形態におけるDMA制御装置100は、DMAキュー101に格納された複数のDMAディスクリプタにおけるデータ転送元のアドレスの重複部分を検出する機能を設ける。そして、データ転送元のアドレスの重複部分を検出すると、その重複部分を有する複数のDMAリクエストを統合することで、重複するアドレス部分に対するアクセスを1回のリードアクセスで実現する。重複部分の応答データは、DMA制御装置100が管理し、デスティネーションアドレスに対応するそれぞれのデバイスメモリへマルチキャスト方式等で書き込む。このように重複部分へのDMAリードを1回のリードアクセスで行うことができるため、重複部分に対してDMAリクエスト毎に逐一アクセスする場合に比べて転送時間を短縮でき、転送処理のボトルネックを改善しデータ転送性能を向上させることができる。
例えば、図9(A)に示したDMAリードを行う場合、本実施形態におけるDMA制御装置100は、図5に示すようにホストメモリのアドレス1〜9に対するリードアクセスが重複しているので、DMAリクエストA及びDMAリクエストBについて、まとめてメモリリードリクエストを送信する。さらに、重複部分ではマルチキャストフラグ(図5中に白丸で示す)が立っているので、デバイスメモリ0及びデバイスメモリ1に応答データをマルチキャストライトする。したがって、本実施形態におけるDMA制御装置100は、DMAリクエストA及びDMAリクエストBに対する処理を期間T51で完了することができ、図10に示した従来のDMA制御装置による処理時間T52と比較すると、データ転送効率が向上し、転送時間が短縮されていることがわかる。
図6は、本実施形態におけるDMA制御装置でのDMAリードの動作例を示すフローチャートである。ホスト装置107からの命令によりDMAキュー101にDMAディスクリプタが書き込まれると、ステップS601にて、アドレス比較部102は、DMAキュー101に格納されたDMAディスクリプタのアドレス情報等を比較し、格納されたDMAディスクリプタにおけるデータ転送元のアドレスの重複部分を検出する。次に、ステップS602にて、統合要求部103は、アドレス比較部102での検出結果等に基づいて、DMAキュー101にデータ転送元のアドレスが重複する統合可能なDMAリクエストがある否かを判断する。
データ転送元のアドレスが重複する統合可能なDMAリクエストがあると判断した場合、ステップS603にて、統合要求部103は、データ転送元のアドレスが重複するDMAリクエストを統合し、統合管理部104の統合アドレステーブルに登録する。また、統合後のDMAリクエストに対してマルチキャストフラグの設定を行う。続いて、ステップS604にて、DMAエンジン106が、統合要求部103からのDMAディスクリプタに従って、統合されたアドレスへのDMAリードを実行し、ステップS605にて、ホスト装置107からDMAリードに対する応答データが返ってくる。
次に、ステップS606にて、統合管理部104の統合アドレステーブルに対して応答データとマルチキャストフラグとの対応の問い合わせが行われる。そして、ステップS607にて、統合管理部104は、マルチキャストフラグがオン(Yes)であるか否かを判断する。判断の結果、マルチキャストフラグがオンであると判断した場合、ステップS608にて、DMA制御装置は、メモリコントローラ113に対して応答データのマルチキャストライトを発行する。例えば、DMA制御装置がスイッチ112にマルチキャストフラグを立てたパケットを送出することで、対象の各メモリコントローラに対してスイッチ112がメモリライトリクエストを同時に実行する。また、マルチキャストフラグがオンでないと判断した場合、DMA制御装置は、ステップS609にて、応答データに対して1個ずつメモリコントローラ113にメモリライトリクエストを発行する。その後、統合要求部103に格納されたDMAディスクリプタを解放する。
ステップS602において、統合可能なDMAリクエストがないと判断した場合、ステップS610にて、DMAエンジン106が、DMAキュー101における先頭のDMAリクエスト(先頭のDMAディスクリプタ)に従って、DMAリードを実行し、ステップS611にて、ホスト装置107からDMAリードに対する応答データが返ってくる。そして、ステップS612にて、DMA制御装置は、メモリコントローラ113に対して応答データのメモリライトリクエストを発行する。その後、DMAキュー101に格納されたDMAディスクリプタを解放する。
なお、前述した実施形態では、2つのDMAリクエストでデータ転送元のアドレスが重複する例を示したが、これに限定するものではなく、3つ以上のDMAリクエストでデータ転送元のアドレスが重複する場合も同様に適用可能である。例えば、統合アドレステーブルを拡張し、3つ以上のDMAリクエストにおける重複部分のアドレスを登録することで重複部分について一斉DMAリードが可能となる。
例えば、図7(A)に示す例では、エントリ0にDMAディスクリプタが格納されたDMAリクエストのソースアドレスAに対してデスティネーションアドレスX0が対応付け
られ、エントリ1にDMAディスクリプタが格納されたDMAリクエストのソースアドレスBに対してデスティネーションアドレスX1、Y0が対応付けられている。また、エン
トリ2にDMAディスクリプタが格納されたDMAリクエストのソースアドレスCに対してデスティネーションアドレスX2、Y1、Z0が対応付けられ、エントリ3にDMAデ
ィスクリプタが格納されたDMAリクエストのソースアドレスDに対してデスティネーションアドレスY2、Z1が対応付けられている。エントリ4にDMAディスクリプタが格納されたDMAリクエストのソースアドレスEに対してデスティネーションアドレスZ2が対応付けられている。さらに、重複している部分(エントリ1、2、3のDMAリクエスト)については、マルチキャストフラグMCがYesとなっており、この部分の応答データはデバイスメモリへマルチキャストライトすることが可能となっている。そして、図7(A)に示した統合アドレステーブルを参照することで、図7(B)に示すように応答データがデバイスメモリへ書き込まれる。
また、本実施形態では、バッファ110は、統合後のDMAリクエストに対する応答データを保持するようにしているが、次のように追い越し不可能なDMAディスクリプタ同士の重複部分でのデータ共用に用いることも可能である。例えば、1番目のDMAリクエストと3番目のDMAリクエストとでデータ転送元のアドレスに重複部分を有し、2番目のDMAリクエストが追い越し禁止であるとする。この場合、1番目のDMAリクエストの応答データをバッファ110に退避させておき、2番目のDMAリクエストが完了し3番目のDMAリクエストを実行するときに、1番目のDMAリクエストと重複する部分のデータを除外してDMAリクエストを発行することで余計なホストメモリへのアクセスを抑えることができる。
また、ホスト装置側で予めDMAディスクリプタに応答データのマルチキャスト指示を記述しておき、バッファ110を用いることで複数のメモリコントローラ113に同じ応答データを一斉送信することが可能である。書き込み制御部111に「応答データがホスト装置の指示したマルチキャストするデータである」という情報を保持しておき、スイッチ112が対応するすべてのメモリコントローラにメモリライトリクエストを発行することでマルチキャストによるライト処理を実現できる。
図8は、本実施形態におけるDMA制御装置を有するコンピュータシステムの構成例を示す図である。ホスト装置810からデバイス830が有するDMA制御装置831にDMAリクエストを通知することで、DMA制御装置831がホストメモリコントローラ811にホストメモリ820に対するメモリリードリクエストを発行する。それに応じて、ホストメモリコントローラ811がホストメモリ820に対してリードアクセスを行い、応答データをデバイスメモリ840に書き込む。
図8に示す例では、デバイス830内にメモリコントローラ833が4個あり、それぞれに付随するデバイスメモリが4個ある。ホスト装置810がデバイス830のDMA制御装置831にDMAリクエストを複数通知し、それぞれのDMAリクエストがホストメモリ820の同一アドレスのデータをデバイスメモリ840−A〜デバイスメモリ840−Dに転送する場合、本実施形態におけるDMAリクエストの統合を行うことにより、4個のDMAリクエストが統合され、1回のデータ転送ですべてのデバイスメモリ840にデータを書き込むことが可能となる。
なお、前述した実施形態では、DMAキュー101が6段の例を示したが、これに限定されず、DMAキュー101は仕様等に応じて何段となってもよい。また、ホスト装置とデバイスとの間のDMA転送を例に示したが、デバイス間のDMA転送やホスト装置間のDMA転送についても、同様に適用可能であり、転送効率を向上させデータ転送性能を向上させることが可能である。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
100 ダイレクトメモリアクセス(DMA)制御装置
101 DMAキュー
102 アドレス比較部
103 統合要求部
104 統合管理部
105 セレクタ
106 DMAエンジン
107 ホスト装置
108 ホストメモリ
109 デマルチプレクサ
110 バッファ
111 書き込み制御部
112 スイッチ
113 メモリコントローラ

Claims (7)

  1. 複数のメモリアクセスリクエストのデータ転送元のアドレスの重複部分を検出する検出部と、
    前記検出部により前記重複部分が検出された複数のメモリアクセスリクエストを、前記重複部分に対するデータ転送元へのリードアクセスをまとめるように統合し、前記重複部分以外についてのメモリアクセスリクエスト及び前記重複部分についてのメモリアクセスリクエストを生成する統合部と、
    前記統合部により統合したメモリアクセスリクエストに従ったデータ転送を実行する実行部と、
    前記実行部によるデータ転送で転送されたデータの、統合前のメモリアクセスリクエストのデータ転送先のアドレスへの書き込みを指示する管理部とを有するメモリアクセス制御装置。
  2. 前記管理部は、統合後のメモリアクセスリクエストのデータ転送元のアドレスに対するデータ転送先のアドレスの対応を示すテーブル情報を参照し、前記データ転送で転送されたデータの書き込みを指示することを特徴とする請求項1記載のメモリアクセス制御装置。
  3. 前記管理部は、前記データ転送で転送された前記重複部分のデータの、複数のデータ転送先のアドレスへのマルチキャストライトを指示する請求項1又は2記載のメモリアクセス制御装置。
  4. 前記管理部からの指示に基づいて、前記データ転送で転送された前記重複部分のデータの書き込みを前記複数のデータ転送先のアドレスに対してマルチキャスト送信する送信部を有する請求項3記載のメモリアクセス制御装置。
  5. 前記統合部は、前記重複部分に対するデータ転送元へのリードアクセスを1回で実行するよう前記複数のメモリアクセスリクエストを統合する請求項1〜4の何れか1項に記載のメモリアクセス制御装置。
  6. 前記統合部は、追い越し禁止のメモリアクセスリクエストより以前の追い越し可能なメモリアクセスリクエスト毎に、前記重複部分が検出された複数のメモリアクセスリクエストを統合する請求項1〜5の何れか1項に記載のメモリアクセス制御装置。
  7. メモリアクセス制御装置が有する検出部が、複数のメモリアクセスリクエストのデータ転送元のアドレスの重複部分を検出し、
    前記メモリアクセス制御装置が有する統合部が、前記重複部分が検出された複数のメモリアクセスリクエストを、前記重複部分に対するデータ転送元へのリードアクセスをまとめるように統合し、前記重複部分以外についてのメモリアクセスリクエスト及び前記重複部分についてのメモリアクセスリクエストを生成し、
    前記メモリアクセス制御装置が有する実行部が、前記統合したメモリアクセスリクエストに従ったデータ転送を実行し、
    前記メモリアクセス制御装置が有する管理部が、前記データ転送で転送されたデータの、統合前のメモリアクセスリクエストのデータ転送先のアドレスへの書き込みを指示するメモリアクセス制御装置の制御方法。
JP2017093914A 2017-05-10 2017-05-10 メモリアクセス制御装置及びその制御方法 Active JP6880402B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017093914A JP6880402B2 (ja) 2017-05-10 2017-05-10 メモリアクセス制御装置及びその制御方法
US15/964,250 US10409746B2 (en) 2017-05-10 2018-04-27 Memory access control device and control method of memory access

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017093914A JP6880402B2 (ja) 2017-05-10 2017-05-10 メモリアクセス制御装置及びその制御方法

Publications (2)

Publication Number Publication Date
JP2018190277A JP2018190277A (ja) 2018-11-29
JP6880402B2 true JP6880402B2 (ja) 2021-06-02

Family

ID=64097280

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017093914A Active JP6880402B2 (ja) 2017-05-10 2017-05-10 メモリアクセス制御装置及びその制御方法

Country Status (2)

Country Link
US (1) US10409746B2 (ja)
JP (1) JP6880402B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10809929B2 (en) * 2018-11-30 2020-10-20 International Business Machines Corporation Combined hardware/software-enforced segmentation of multi-tenant memory/storage systems
US10970808B2 (en) * 2019-06-24 2021-04-06 Intel Corporation Shared local memory read merge and multicast return
US11604748B2 (en) * 2020-10-30 2023-03-14 Microsoft Technology Licensing, Llc Interconnect for direct memory access controllers
US20210075633A1 (en) * 2020-11-18 2021-03-11 Intel Corporation Packet multi-cast for memory pool replication
US20210089236A1 (en) * 2020-12-04 2021-03-25 Intel Corporation Network device intermediary for memory access requests
CN112711218B (zh) * 2020-12-08 2022-03-15 杭州电子科技大学上虞科学与工程研究院有限公司 一种工业设备数据采集的方法
CN114116553B (zh) * 2021-11-30 2023-01-20 海光信息技术股份有限公司 数据处理装置、方法以及***
CN116610608B (zh) * 2023-07-19 2023-11-03 浪潮(北京)电子信息产业有限公司 直接内存访问描述符处理方法、***、装置、设备及介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3322754B2 (ja) * 1994-05-17 2002-09-09 富士通株式会社 並列計算機
US6067595A (en) * 1997-09-23 2000-05-23 Icore Technologies, Inc. Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
JPH11134287A (ja) 1997-10-28 1999-05-21 Nec Corp 入出力バスデータ転送装置
US6772315B1 (en) * 2001-05-24 2004-08-03 Rambus Inc Translation lookaside buffer extended to provide physical and main-memory addresses
US7899784B2 (en) * 2003-05-28 2011-03-01 Oracle International Corporation Method and apparatus for performing multi-table merge operations in a database environment
JP4340519B2 (ja) 2003-11-04 2009-10-07 富士通株式会社 情報処理端末
US7525958B2 (en) * 2004-04-08 2009-04-28 Intel Corporation Apparatus and method for two-stage packet classification using most specific filter matching and transport level sharing
US8276043B2 (en) * 2008-03-01 2012-09-25 Kabushiki Kaisha Toshiba Memory system
JP5032371B2 (ja) * 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
JP4990262B2 (ja) 2008-12-26 2012-08-01 三菱電機株式会社 バッファ装置
US8078848B2 (en) * 2009-01-09 2011-12-13 Micron Technology, Inc. Memory controller having front end and back end channels for modifying commands
US10133662B2 (en) * 2012-06-29 2018-11-20 Sandisk Technologies Llc Systems, methods, and interfaces for managing persistent data of atomic storage operations

Also Published As

Publication number Publication date
US10409746B2 (en) 2019-09-10
JP2018190277A (ja) 2018-11-29
US20180329841A1 (en) 2018-11-15

Similar Documents

Publication Publication Date Title
JP6880402B2 (ja) メモリアクセス制御装置及びその制御方法
US8738890B2 (en) Coupled symbiotic operating system
US10467179B2 (en) Method and device for sharing PCIe I/O device, and interconnection system
EP3036648B1 (en) Enhanced data transfer in multi-cpu systems
US10430353B2 (en) Memory device performing near-data processing using a plurality of data processing engines that independently perform data processing operations, and system including the same
US20110246667A1 (en) Processing unit, chip, computing device and method for accelerating data transmission
US20160217094A1 (en) Input/output control device, input/output control system, and input/output control method
CN115114042A (zh) 存储数据访问方法、装置、电子设备和存储介质
CN115174673B (zh) 具备低延迟处理器的数据处理装置、数据处理方法及设备
WO2022199357A1 (zh) 数据处理方法及装置、电子设备、计算机可读存储介质
US20060277326A1 (en) Data transfer system and method
WO2022073399A1 (zh) 存储节点、存储设备及网络芯片
WO2021249030A1 (zh) 随机数序列生成方法和随机数引擎
US20080209085A1 (en) Semiconductor device and dma transfer method
JP2006139766A (ja) 情報処理装置
US12001370B2 (en) Multi-node memory address space for PCIe devices
JP2780662B2 (ja) マルチプロセッサシステム
US20230350797A1 (en) Flash-based storage device and copy-back operation method thereof
JP7363344B2 (ja) メモリ制御装置、および制御方法
JPH0512125A (ja) アドレス変換方式
US11531489B2 (en) Integrated circuit device, system-on-chip including the same, and packet processing method
JP7080698B2 (ja) 情報処理装置
JP6384359B2 (ja) 分散共有メモリを有する情報処理装置、方法、および、プログラム
WO2021097802A1 (zh) 处理非缓存写数据请求的方法、缓存器和节点
JP2018081346A (ja) ストレージ装置、ストレージシステム、ストレージ制御方法、および、ストレージ制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210201

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210412

R150 Certificate of patent or registration of utility model

Ref document number: 6880402

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150