JP2018120499A - メモリ制御装置および計算機システム - Google Patents

メモリ制御装置および計算機システム Download PDF

Info

Publication number
JP2018120499A
JP2018120499A JP2017012719A JP2017012719A JP2018120499A JP 2018120499 A JP2018120499 A JP 2018120499A JP 2017012719 A JP2017012719 A JP 2017012719A JP 2017012719 A JP2017012719 A JP 2017012719A JP 2018120499 A JP2018120499 A JP 2018120499A
Authority
JP
Japan
Prior art keywords
transfer
management unit
block number
data
dma
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.)
Granted
Application number
JP2017012719A
Other languages
English (en)
Other versions
JP6289689B1 (ja
Inventor
飯田 博之
Hiroyuki Iida
博之 飯田
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2017012719A priority Critical patent/JP6289689B1/ja
Application granted granted Critical
Publication of JP6289689B1 publication Critical patent/JP6289689B1/ja
Publication of JP2018120499A publication Critical patent/JP2018120499A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

【課題】DMA転送による命令の実行待ちをなくし、プロセッサの処理時間を短縮する。【解決手段】メモリ制御装置13の転送管理部23は、メモリ12の指定アドレスRaddrからデータを読み取るリード要求がアクセス検出部22により検出されたときに、指定アドレスRaddrを含む領域を転送先とする未実施のDMA転送があるかどうかを判定する。そのような未実施のDMA転送がなければ、転送管理部23は、指定アドレスRaddrからデータを読み取ってプロセッサ11に送信する。そのような未実施のDMA転送があれば、転送管理部23は、当該未実施のDMA転送における、指定アドレスRaddrに転送されるデータの転送元のアドレスからデータを読み取ってプロセッサ11に送信する。その後、転送管理部23は、当該未実施のDMA転送を実施する。【選択図】図3

Description

本発明は、メモリ制御装置および計算機システムに関するものである。
一般的に、計算機システムは、CPU、メモリおよびDMACを備える。「CPU」は、Central Processing Unitの略語である。「DMAC」は、DMA Controllerの略語である。「DMA」は、Direct Memory
Accessの略語である。
メモリの領域間でのデータ転送は、計算機の処理の中でもハードウェアリソースと時間とを費やす処理である。CPUがデータを転送する代わりにDMACが転送処理を実施することで、CPUが転送以外の処理を転送処理と並列に実行することが可能である。DMACによる転送処理のことをDMA転送という。
DMA転送を発生させる命令をDMA転送命令という。DMA転送命令によるDMA転送の転送先領域に、その命令の後続命令がアクセスする場合がある。すなわち、DMA転送命令と後続命令との間に依存関係が存在する場合がある。その場合、後続命令は、先行するDMA転送命令の終了を待ってから実行する必要がある。
具体例として、DMA転送を行う命令Aと、命令Aの後続命令である命令Bとの間に依存関係があるとする。その場合、CPUにおける命令Bの実行は、DMACがCPUからの命令AによるDMA転送を完了するまで待たされる。DMA転送の完了の通知は、DMACからCPUへの割り込みによって行われる。よって、CPUにおける命令Bの実行は、DMACがCPUへの割り込みを発生させるまで待たされる。
依存関係がなるべく生じないように命令の配置を工夫する技術がコンパイラ等に適用されているものの、依存関係が完全になくなるわけではない。よって、CPUにおいてDMA転送待ちの状態が発生する可能性がある。
特許文献1には、DMACがDMA転送対象のデータに対するCPUからの参照要求を検出し、実行中のDMA転送よりも優先して、参照要求の対象データのDMA転送を行い、転送後のデータをCPUに参照させる技術が記載されている。
特開2004−145376号公報
特許文献1に記載の技術では、CPUは、DMACが参照要求の対象データのDMA転送を完了し、CPUへの割り込みを発生させるまで対象データを参照することができない。すなわち、DMA転送命令と後続命令との間に依存関係がある場合、CPUにおいてDMA転送待ちの状態が発生することは避けられない。
本発明は、DMA転送による命令の実行待ちをなくし、プロセッサの処理時間を短縮することを目的とする。
本発明の一態様に係るメモリ制御装置は、
メモリの領域間でのデータ転送であるDMA転送を実施するメモリ制御装置であり、
プロセッサからの要求を検出するアクセス検出部と、
前記メモリの指定アドレスからデータを読み取るリード要求が前記アクセス検出部により検出されたときに、前記指定アドレスを含む領域を転送先とする未実施のDMA転送がなければ、前記指定アドレスからデータを読み取って前記プロセッサに送信し、前記未実施のDMA転送があれば、前記未実施のDMA転送における、前記指定アドレスに転送されるデータの転送元のアドレスからデータを読み取って前記プロセッサに送信した後、前記未実施のDMA転送を実施する転送管理部とを備える。
本発明では、メモリ制御装置がDMA転送対象のデータに対するプロセッサからの参照要求を検出したときに、参照要求の対象データのDMA転送が未実施であれば、そのDMA転送の実施よりも先に、転送前のデータをプロセッサに参照させる。そのため、DMA転送による命令の実行待ちをなくし、プロセッサの処理時間を短縮することができる。
実施の形態1に係る計算機システムの構成を示すブロック図。 実施の形態1に係る計算機システムのメモリの構成を示す図。 実施の形態1に係るメモリ制御装置の構成を示すブロック図。 実施の形態1に係るメモリ制御装置が保持する転送元ブロックポインタ、転送管理テーブルおよび更新管理テーブルの構成を示す図。 実施の形態1に係るメモリ制御装置における、プロセッサからリード要求を受けたときの処理手順を示すフローチャート。 実施の形態1に係る計算機システムの動作の例を示す図。 実施の形態1に係るメモリ制御装置における、プロセッサからライト要求を受けたときの処理手順を示すフローチャート。 実施の形態1に係るメモリ制御装置におけるDMA転送の処理手順を示すフローチャート。 実施の形態1に係るメモリ制御装置におけるDMA転送の処理手順を示すフローチャート。 実施の形態1に係るメモリ制御装置における初期化の処理手順を示すフローチャート。 実施の形態1に係るメモリ制御装置における転送管理テーブル登録の処理手順を示すフローチャート。 実施の形態1に係るメモリ制御装置における転送管理テーブル検索の処理手順を示すフローチャート。 実施の形態1に係るメモリ制御装置における転送管理テーブルの最終ブロック検索の処理手順を示すフローチャート。
以下、本発明の実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。なお、本発明は、以下に説明する実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。例えば、以下に説明する実施の形態は、部分的に実施されても構わない。
実施の形態1.
本実施の形態について、図1から図13を用いて説明する。
***構成の説明***
図1を参照して、本実施の形態に係る計算機システム10の構成を説明する。
計算機システム10は、プロセッサ11と、メモリ12と、メモリ制御装置13と、周辺バスブリッジ14とを備える。プロセッサ11は、システムバス16を介してメモリ制御装置13および周辺バスブリッジ14といった他のハードウェアと接続され、これら他のハードウェアを制御する。メモリ制御装置13は、メモリバス17を介してメモリ12と接続され、メモリ12を制御する。周辺バスブリッジ14は、I/Oバス18を介して外部のI/O機器15と接続され、I/O機器15にデータを送信したり、I/O機器15からデータを受信したりする。「I/O」は、Input/Outputの略語である。
プロセッサ11は、例えば、CPUである。
メモリ12は、例えば、RAMまたはフラッシュメモリである。「RAM」は、Random Access Memoryの略語である。
メモリ制御装置13は、例えば、ロジックIC、FPGAまたはASICである。「IC」は、Integrated Circuitの略語である。「FPGA」は、Field−Programmable Gate Arrayの略語である。「ASIC」は、Application Specific Integrated Circuitの略語である。
I/O機器15は、例えば、マウス、キーボードまたはタッチパネルといった入力装置、あるいは、ディスプレイまたはプリンタといった出力装置である。
図2を参照して、メモリ12の構成を説明する。
メモリ12は、一定容量を単位とするn個のブロックで管理される。すなわち、メモリ12は、n個の領域を有する。「n」は2のべき乗である。よって、メモリアドレスから容易にブロック番号が求められる。
各ブロックは、メモリバス17の幅を単位とするm個のエントリで構成される。「m」は2のべき乗である。
図3を参照して、メモリ制御装置13の構成を説明する。
メモリ制御装置13は、システムバスI/F21と、アクセス検出部22と、転送管理部23と、アクセス制御部24と、DMAC25とを備える。「I/F」は、InterFaceの略語である。
システムバスI/F21は、システムバス16を介してプロセッサ11と接続されている。アクセス制御部24は、メモリバス17を介してメモリ12と接続されている。
メモリ制御装置13は、メモリ12の領域間でのデータ転送であるDMA転送を実施する機能を有する。この機能を実現するために、本実施の形態では、DMA転送を制御するDMAC25と、メモリ12にアクセスするアクセス制御部24とがメモリ制御装置13に配置されている。DMAC25としては、従来のDMACと同じものを用いることができる。アクセス制御部24としては、従来のメモリアクセス用の回路と同じものを用いることができる。
メモリ制御装置13は、DMA転送対象のデータに対するプロセッサ11からの参照要求を検出したときに、参照要求の対象データのDMA転送が未実施であれば、そのDMA転送の実施よりも先に、転送前のデータをプロセッサ11に参照させる機能をさらに有する。この機能を実現するために、本実施の形態では、システムバスI/F21を通じてプロセッサ11からの要求を検出するアクセス検出部22と、システムバスI/F21、アクセス制御部24およびDMAC25の間に介在する転送管理部23とがメモリ制御装置13に配置されている。
以降の説明において、プロセッサ11からの要求がライト要求のとき、書き込み対象を示すメモリアドレスを、指定アドレスWaddrと示す。プロセッサ11からの要求がリード要求のとき、読み取り対象を示すメモリアドレスを、指定アドレスRaddrと示し、また、指定アドレスRaddrに転送されるデータの転送元を示すメモリアドレスを、アドレスSaddrと示す。
図4を参照して、転送管理部23が保持する転送元ブロックポインタ30、転送管理テーブル40および更新管理テーブル50の構成を説明する。図4において、「don’t
care」は、意味を持たない初期値である。
転送元ブロックポインタ30は、フラグ31を含む。転送元ブロックポインタ30は、フラグ31が「有効」のとき、DMA転送元のブロック番号を示し、これは転送管理テーブル40の転送元ブロック番号41を示すことと等価である。初期状態において、フラグ31は「無効」にされる。
転送管理テーブル40は、転送元ブロック番号41、転送先ブロック番号42、チェーンブロック番号43および更新フラグ44といった項目を含む。各項目は、ブロック番号ごとに1つずつ存在する。すなわち、各項目は、n個ずつ存在する。
転送元ブロック番号41は、DMA転送時の転送元ブロックのブロック番号を意味する。
転送先ブロック番号42は、転送元ブロック番号41のブロックのデータを転送する先のブロック番号である。すなわち、転送先ブロック番号42は、DMA転送時の転送先ブロックのブロック番号を意味する。
チェーンブロック番号43は、複数のブロックのDMA転送を行うときの次に転送するブロックの転送元ブロック番号41である。ただし、転送元ブロック番号41とチェーンブロック番号43とが同じ場合は、該当するブロックがDMA転送対象の最後のブロックであることを意味するものとする。初期状態において、チェーンブロック番号43には転送元ブロック番号41と同じブロック番号が設定される。
更新フラグ44は、転送先ブロック番号42のブロックが、DMA転送前にプロセッサ11からデータを書き換えることを要求されたブロックであるかどうかを示す。初期状態において、更新フラグ44は「無効」にされる。
上記のように、本実施の形態において、転送管理部23が保持する転送管理テーブル40には、実施前のDMA転送における転送元および転送先の領域を識別する番号がそれぞれ転送元ブロック番号41および転送先ブロック番号42として設定される。本実施の形態では、転送管理テーブル40に、何らかの番号の組み合わせが転送元ブロック番号41および転送先ブロック番号42として「記憶」されていても、転送元ブロックポインタ30のフラグ31が「無効」のときは、当該組み合わせの設定は無効である。なお、変形例として、転送元ブロックポインタ30を適用せず、転送管理テーブル40に、当該組み合わせが「記憶」されているだけで、当該組み合わせが転送元ブロック番号41および転送先ブロック番号42として「設定」されているとみなしてもよい。
更新管理テーブル50は、転送先ブロック番号51、テーブル有効フラグ52、更新データ用バッファ53および更新フラグ54といった項目を含む。更新管理テーブル50は、転送管理テーブル40の更新フラグ44が「有効」な転送先ブロック番号42のブロックのデータを管理する。更新管理テーブル50は、k個存在する。「k」は任意の整数である。
転送先ブロック番号51は、DMA転送前にプロセッサ11からデータを書き換えることを要求されたブロックのブロック番号を意味する。
テーブル有効フラグ52は、更新管理テーブル50が有効であるかどうかを示す。初期状態において、テーブル有効フラグ52は「無効」にされる。
更新データ用バッファ53は、プロセッサ11からの要求により書き換えられた後のデータを格納するバッファである。更新データ用バッファ53は、1ブロック分の容量のバッファである。すなわち、更新データ用バッファ53は、m個のエントリで構成される。
更新フラグ54は、更新データ用バッファ53のエントリごとに1つ付けられる。プロセッサ11からの要求により書き換えられたデータを格納しているエントリの更新フラグ54は「有効」となる。初期状態において、更新フラグ54は「無効」にされる。
上記のように、本実施の形態において、転送管理部23が保持する更新管理テーブル50は、メモリ12の指定アドレスWaddrにデータを書き込むライト要求がアクセス検出部22により検出されたときに、指定アドレスWaddrを含む領域を転送先とする未実施のDMA転送がある場合のみ使用される。更新管理テーブル50には、その未実施のDMA転送における転送先の領域を識別する番号と更新データ用バッファ53の中で指定アドレスWaddrに転送されるデータが書き込まれた位置を示す情報とがそれぞれ転送先ブロック番号51および更新情報として設定される。更新情報は、任意の形式で記録されてよいが、本実施の形態ではエントリ別の更新フラグ54の形式で記録される。本実施の形態では、更新管理テーブル50に、何らかの番号と何らかの位置を示す情報との組み合わせが転送先ブロック番号51および更新情報として「記憶」されていても、テーブル有効フラグ52が「無効」のときは、当該組み合わせの設定は無効である。なお、変形例として、テーブル有効フラグ52を適用せず、更新管理テーブル50に、当該組み合わせが「記憶」されているだけで、当該組み合わせが転送先ブロック番号51および更新情報として「設定」されているとみなしてもよい。
***動作の説明***
各フローチャートを参照して、本実施の形態に係るメモリ制御装置13の動作を説明する。メモリ制御装置13の動作は、本実施の形態に係るメモリ制御方法に相当する。
図5を参照して、メモリ制御装置13がプロセッサ11からリード要求を受けたときの処理手順を説明する。
ステップS101において、転送管理部23は、メモリ12の指定アドレスRaddrからデータを読み取るリード要求がアクセス検出部22により検出されたときに、未実施のDMA転送があるかどうかを判定する。未実施のDMA転送があれば、転送管理部23は、ステップS102の処理を行う。一方、未実施のDMA転送がなければ、転送管理部23は、ステップS104の処理を行う。
ステップS102において、転送管理部23は、転送管理テーブル40の転送先ブロック番号42を探索する。
ステップS103において、転送管理部23は、プロセッサ11のメモリリードアドレスが転送先ブロック番号42の領域に含まれるかどうかを判定する。すなわち、転送管理部23は、指定アドレスRaddrを含む領域を転送先とする未実施のDMA転送があるかどうかを判定する。具体的には、転送管理部23は、指定アドレスRaddrを含む領域を識別する番号が転送先ブロック番号42として転送管理テーブル40に設定されているかどうかによって、そのような未実施のDMA転送の有無を判定する。そのような未実施のDMA転送がなければ、転送管理部23は、ステップS104の処理を行う。一方、そのような未実施のDMA転送があれば、転送管理部23は、ステップS105の処理を行う。すなわち、リード要求がアクセス検出部22により検出されたときに、指定アドレスRaddrを含む領域を識別する番号が転送先ブロック番号42として転送管理テーブル40に設定されていれば、転送管理部23は、ステップS105の処理を行う。
ステップS104において、転送管理部23は、メモリ12からデータをリードする。具体的には、転送管理部23は、アクセス制御部24を利用して、指定アドレスRaddrからデータを読み取る。そして、転送管理部23は、ステップS108の処理を行う。
ステップS105において、転送管理部23は、ステップS103でヒットした転送先ブロック番号42に対応する転送元ブロック番号41を転送管理テーブル40から取得する。
ステップS106において、転送管理部23は、ステップS105で取得した転送元ブロック番号41の領域内のリード対象となるアドレスSaddrを計算する。具体的には、転送管理部23は、取得した転送元ブロック番号41と指定アドレスRaddrとから、指定アドレスRaddrを含む領域を転送先とする未実施のDMA転送における、指定アドレスRaddrに転送されるデータの転送元のアドレスSaddrを計算する。
ステップS107において、転送管理部23は、ステップS106で計算したアドレスSaddrからデータをリードする。具体的には、転送管理部23は、アクセス制御部24を利用して、計算したアドレスSaddrからデータを読み取る。
ステップS108において、転送管理部23は、ステップS102またはステップS107でリードしたデータをプロセッサ11に返し、図5の動作を終了する。具体的には、転送管理部23は、システムバスI/F21を介して、読み取ったデータをプロセッサ11に送信する。転送管理部23は、ステップS101で未実施のDMA転送があると判定していたのであれば、さらに、DMAC25を利用して、DMA転送の完了を通知する割り込みをプロセッサ11に送信する。
転送管理部23は、ステップS101で未実施のDMA転送があると判定していたのであれば、図5の動作の後に、その未実施のDMA転送を実施する。
ここで、プロセッサ11において命令A、命令B、命令Cおよび命令Dが順番に実行される例を図6に示す。
この例では、DMA転送を伴う命令Aと、命令Aの後続命令であり、メモリ12のリードを伴う命令Bとの間に依存関係があるとする。メモリ制御装置13は、図5の動作によって、プロセッサ11から命令Aを受けた時点で、すなわち、命令Aで要求されるDMA転送を実施する前に、DMA転送の完了を通知する割り込みをただちにDMAC25より発生させ、プロセッサ11に後続の処理を進めさせる。したがって、DMA転送による命令の実行待ちをなくし、プロセッサ11の処理時間を短縮することができる。
図7を参照して、メモリ制御装置13がプロセッサ11からライト要求を受けたときの処理手順を説明する。
ステップS201において、転送管理部23は、メモリ12の指定アドレスWaddrにデータを書き込むライト要求がアクセス検出部22により検出されたときに、未実施のDMA転送があるかどうかを判定する。未実施のDMA転送があれば、転送管理部23は、ステップS202の処理を行う。一方、未実施のDMA転送がなければ、転送管理部23は、ステップS204の処理を行う。なお、転送管理部23は、ステップS201の処理を行う時点で、システムバスI/F21を介して、ライト要求に伴ってプロセッサ11から送信されたデータをすでに受信している。
ステップS202において、転送管理部23は、転送管理テーブル40の転送先ブロック番号42を探索する。
ステップS203において、転送管理部23は、プロセッサ11のメモリライトアドレスが転送先ブロック番号42の領域に含まれるかどうかを判定する。すなわち、転送管理部23は、指定アドレスWaddrを含む領域を転送先とする未実施のDMA転送があるかどうかを判定する。具体的には、転送管理部23は、指定アドレスWaddrを含む領域を識別する番号が転送先ブロック番号42として転送管理テーブル40に設定されているかどうかによって、そのような未実施のDMA転送の有無を判定する。そのような未実施のDMA転送がなければ、転送管理部23は、ステップS204の処理を行う。一方、そのような未実施のDMA転送があれば、転送管理部23は、ステップS205の処理を行う。すなわち、ライト要求がアクセス検出部22により検出されたときに、指定アドレスWaddrを含む領域を識別する番号が転送先ブロック番号42として転送管理テーブル40に設定されていれば、転送管理部23は、ステップS205の処理を行う。
ステップS204において、転送管理部23は、メモリ12にデータをライトする。具体的には、転送管理部23は、アクセス制御部24を利用して、プロセッサ11から送信されたデータを指定アドレスWaddrに書き込み、図7の動作を終了する。
ステップS205において、転送管理部23は、ステップS203でヒットした転送先ブロック番号42に対応する更新フラグ44を「有効」に変更する。
ステップS206において、転送管理部23は、テーブル有効フラグ52が「無効」になっている更新管理テーブル50を探索する。
ステップS207において、転送管理部23は、テーブル有効フラグ52が「無効」になっている更新管理テーブル50の転送先ブロック番号51を、転送管理テーブル40で更新フラグ44を「有効」にした転送先ブロック番号42と同じブロック番号に変更する。
ステップS208において、転送管理部23は、ステップS203でヒットした転送先ブロック番号42の領域内のライト対象となるデータのアドレスを計算する。具体的には、転送管理部23は、指定アドレスWaddrから、転送先ブロック内のどのエントリが書き込み先かを計算する。
ステップS209において、転送管理部23は、ステップS208で計算したアドレスから更新データ用バッファ53の対象エントリを決定する。
ステップS210において、転送管理部23は、ステップS209で決定した対象エントリにデータをライトする。すなわち、転送管理部23は、プロセッサ11から送信されたデータを更新データ用バッファ53に書き込む。
ステップS211において、転送管理部23は、ステップS210でデータを書き込んだ対象エントリに対応する更新フラグ54を「有効」に変更する。すなわち、転送管理部23は、更新データ用バッファ53を事後的に確保する。そして、転送管理部23は、図7の動作を終了する。なお、転送管理部23は、ステップS210の処理の前に、ステップS211の処理を行ってもよい。すなわち、転送管理部23は、データを書き込む前に更新データ用バッファ53を確保しておいてもよい。
転送管理部23は、ステップS201で未実施のDMA転送があると判定していたのであれば、図7の動作の後に、その未実施のDMA転送を実施する。ただし、転送管理部23は、ステップS203で指定アドレスWaddrを含む領域を転送先とする未実施のDMA転送があると判定していたのであれば、図7の動作の後に、指定アドレスWaddrへのデータ転送を除く未実施のDMA転送と、更新データ用バッファ53から指定アドレスWaddrへのデータ転送とを実施する。後述するように、転送管理部23は、更新データ用バッファ53から指定アドレスWaddrへのデータ転送を実施した後、更新データ用バッファ53を解放する。
図8および図9を参照して、DMA転送の処理手順を説明する。
ステップS301において、転送管理部23は、転送元ブロックポインタ30のフラグ31が「有効」であるかどうかを判定する。フラグ31が「無効」であれば、転送管理部23は、図8の動作を終了する。一方、フラグ31が「有効」であれば、転送管理部23は、ステップS302の処理を行う。
ステップS302において、転送管理部23は、転送元ブロックポインタ30の指す転送管理テーブル40内の転送元ブロック番号41を対象に選択する。
ステップS303において、転送管理部23は、転送管理テーブル40の対象ブロックの更新フラグ44が「有効」であるかどうかを判定する。更新フラグ44が「無効」であれば、転送管理部23は、ステップS304の処理を行う。一方、更新フラグ44が「有効」であれば、転送管理部23は、ステップS401の処理を行う。
ステップS304において、転送管理部23は、対象の転送元ブロック番号41に対応するアドレスからデータをブロックサイズ分リードする。
ステップS305において、転送管理部23は、対象の転送元ブロック番号41に対応する転送先ブロック番号42を転送管理テーブル40から取得する。そして、転送管理部23は、取得した転送先ブロック番号42に対応するアドレスへ、ステップS304でリードしたデータをブロックサイズ分ライトする。
ステップS306において、転送管理部23は、対象の転送元ブロック番号41に対応するチェーンブロック番号43を転送管理テーブル40から取得する。そして、転送管理部23は、対象の転送元ブロック番号41と、取得したチェーンブロック番号43とが一致するかどうかを判定する。一致していれば、転送管理部23は、ステップS307の処理を行う。一方、一致していなければ、転送管理部23は、ステップS308の処理を行う。
ステップS307において、転送管理部23は、転送元ブロックポインタ30のフラグ31を「無効」に変更し、図8の動作を終了する。
ステップS308において、転送管理部23は、ステップS306で取得したチェーンブロック番号43を対象に選択する。すなわち、転送管理部23は、ステップS306で取得したチェーンブロック番号43と一致する転送元ブロック番号41を対象に選択する。
ステップS309において、転送管理部23は、転送管理テーブル40でステップS308の直前に対象になっていた転送元ブロック番号41に対応するチェーンブロック番号43を、その転送元ブロック番号41と同じブロック番号に変更する。すなわち、転送管理部23は、ステップS308の直前の対象ブロックのチェーンブロック番号43を初期値に戻す。そして、転送管理部23は、再びステップS303の処理を行う。
ステップS401において、転送管理部23は、テーブル有効フラグ52が「有効」であり、かつ、転送先ブロック番号51が転送管理テーブル40の転送先ブロック番号42と一致している更新管理テーブル50を対象に選択する。そして、転送管理部23は、「i」を0からmまで1ずつインクリメントされるカウンタとし、ステップS402からステップS406のループ処理を行う。
ステップS402において、転送管理部23は、対象の更新管理テーブル50の更新データ用バッファ53のエントリiの更新フラグ54が「有効」であるかどうかを判定する。更新フラグ54が「無効」であれば、転送管理部23は、ステップS403の処理を行う。一方、更新フラグ54が「有効」であれば、転送管理部23は、ステップS405の処理を行う。
ステップS403において、転送管理部23は、転送元ブロックの対応するアドレスからデータをリードする。すなわち、転送管理部23は、対象の転送元ブロック番号41の領域内のエントリiを読み込む。
ステップS404において、転送管理部23は、ステップS404でリードしたデータを転送元データとして選択する。そして、転送管理部23は、ステップS406の処理を行う。
ステップS405において、転送管理部23は、対象の更新管理テーブル50の更新データ用バッファ53のエントリiを転送元データとして選択する。
ステップS406において、転送管理部23は、転送先ブロックの対応するアドレスへ転送元データをライトする。すなわち、転送管理部23は、対象の転送元ブロック番号41に対応する転送先ブロック番号42の領域内のエントリiを転送元データで上書きする。カウンタiがm未満であれば、転送管理部23は、再びステップS402の処理を行う。カウンタiがmであれば、転送管理部23は、ステップS407の処理を行う。
ステップS407において、転送管理部23は、対象の更新管理テーブル50の更新データ用バッファ53の中で更新フラグ54が「有効」になっているエントリの更新フラグ54を「無効」に変更する。すなわち、転送管理部23は、更新データ用バッファ53を解放する。また、転送管理部23は、対象の更新管理テーブル50のテーブル有効フラグ52も「無効」に変更する。転送管理部23は、さらに、転送管理テーブル40の対象ブロックの更新フラグ44を「無効」にする。そして、転送管理部23は、ステップS306の処理を行う。
上記のように、本実施の形態において、転送管理部23は、個々のDMA転送を実施する際に、個々のDMA転送における転送先の領域を識別する番号が転送先ブロック番号51として更新管理テーブル50に設定されていれば、その転送先ブロック番号51に対応する更新情報を更新管理テーブル50から取得する。そして、転送管理部23は、前述したライト要求の指定アドレスWaddrへのデータ転送を除く個々のDMA転送と、更新データ用バッファ53の中で、取得した更新情報に示された位置から指定アドレスWaddrへのデータ転送とを実施する。
図10を参照して、初期化の処理手順を説明する。
ステップS501において、転送管理部23は、リセット信号がアサートされるまで待機する。
ステップS502において、転送管理部23は、リセット信号が解除されるまで待機する。
ステップS503において、転送管理部23は、転送元ブロックポインタ30のフラグ31を「無効」にする。そして、転送管理部23は、「i」を0からnまで1ずつインクリメントされるカウンタとし、ステップS504からステップS506のループ処理を行う。
ステップS504において、転送管理部23は、転送管理テーブル40でブロック番号iと一致する転送元ブロック番号41を対象に選択する。
ステップS505において、転送管理部23は、対象の転送元ブロック番号41に対応するチェーンブロック番号43に、その転送元ブロック番号41と同じブロック番号iを設定する。
ステップS506において、転送管理部23は、対象の転送元ブロック番号41に対応する更新フラグ44を「無効」にする。カウンタiがn未満であれば、転送管理部23は、再びステップS504の処理を行う。カウンタiがnであれば、転送管理部23は、「i」を0からkまで1ずつインクリメントされるカウンタとし、ステップS507からステップS509のループ処理を行う。
ステップS507において、転送管理部23は、i個目の更新管理テーブル50を対象に選択する。
ステップS508において、転送管理部23は、対象の更新管理テーブル50のテーブル有効フラグ52を「無効」にする。そして、転送管理部23は、「j」を0からmまで1ずつインクリメントされるカウンタとし、ステップS509のループ処理を行う。
ステップS509において、転送管理部23は、対象の更新管理テーブル50の更新データ用バッファ53のエントリjの更新フラグ54を「無効」にする。カウンタjがm未満であれば、転送管理部23は、再びステップS509の処理を行う。カウンタjがmであり、かつ、カウンタiがk未満であれば、転送管理部23は、再びステップS507の処理を行う。カウンタjがmであり、かつ、カウンタiがkであれば、転送管理部23は、図10の動作を終了する。
図11を参照して、転送管理テーブル登録の処理手順を説明する。
ステップS601において、転送管理部23は、プロセッサ11からDMA転送に関わる設定として、DMA転送元アドレス、DMA転送サイズおよびDMA転送先アドレスの設定を受ける。
ステップS602において、転送管理部23は、ステップS601で設定されたDMA転送元アドレスを含む領域のブロック番号であるDMA転送元ブロック番号、ステップS601で設定されたDMA転送先アドレスを含む領域のブロック番号であるDMA転送先ブロック番号を算出する。
ステップS603において、転送管理部23は、変数である「残り転送サイズ」に、ステップS601で設定されたDMA転送サイズを代入する。転送管理部23は、変数である「転送元ブロック番号Stmp」に、ステップS602で算出したDMA転送元ブロック番号を代入する。転送管理部23は、変数である「転送先ブロック番号Dtmp」に、ステップS602で算出したDMA転送先ブロック番号を代入する。
ステップS604において、転送管理部23は、転送元ブロックポインタ30のフラグ31が「無効」であるかどうかを判定する。フラグ31が「無効」であれば、転送管理部23は、ステップS605の処理を行う。一方、フラグ31が「有効」であれば、転送管理部23は、ステップS611の処理を行う。
ステップS605において、転送管理部23は、転送元ブロックポインタ30を「転送元ブロック番号Stmp」に変更する。転送管理部23は、転送元ブロックポインタ30のフラグ31を「有効」に変更する。
ステップS606において、転送管理部23は、転送管理テーブル40で「転送元ブロック番号Stmp」と一致する転送元ブロック番号41に対応する転送先ブロック番号42を「転送先ブロック番号Dtmp」に変更する。
ステップS607において、転送管理部23は、「残り転送サイズ」がブロックサイズと一致するかどうかを判定する。一致していれば、転送管理部23は、図11の動作を終了する。一方、一致していなければ、転送管理部23は、ステップS608の処理を行う。
ステップS608において、転送管理部23は、転送管理テーブル40で「転送元ブロック番号Stmp」と一致する転送元ブロック番号41に対応するチェーンブロック番号43を、現状値よりも1つ大きいブロック番号に変更する。
ステップS609において、転送管理部23は、「転送元ブロック番号Stmp」を1つインクリメントする。
ステップS610において、転送管理部23は、「残り転送サイズ」をブロックサイズ分デクリメントする。そして、転送管理部23は、再びステップS606の処理を行う。
ステップS611において、転送管理部23は、後述する転送管理テーブル検索の処理を行う。
ステップS612において、転送管理部23は、ステップS611の検索結果が「登録済」であるかどうかを判定する。検索結果が「登録済」であれば、転送管理部23は、ステップS613の処理を行う。一方、検索結果が「未登録」であれば、転送管理部23は、ステップS614の処理を行う。
ステップS613において、転送管理部23は、DMA転送を実施する。DMA転送の処理手順については、図8および図9に示した通りである。
ステップS614において、転送管理部23は、後述する転送管理テーブル40の最終ブロック検索の処理を行う。
ステップS615において、転送管理部23は、転送管理テーブル40で、ステップS614で取得された最終ブロック番号と一致する転送元ブロック番号41に対応するチェーンブロック番号43を「転送元ブロック番号Stmp」に変更する。そして、転送管理部23は、再びステップS606の処理を行う。
図12を参照して、ステップS611の転送管理テーブル検索の処理手順を説明する。
ステップS701において、転送管理部23は、検索結果を仮に「未登録」としておく。転送管理部23は、変数である「検索対象ブロック番号Xtmp」に、ステップS602で算出したDMA転送元ブロック番号を代入する。転送管理部23は、転送元検索フラグに「未検索」を示す値を設定する。
ステップS702において、転送管理部23は、変数である「非検索対象ブロック番号Ytmp」に、転送元ブロックポインタ30の指す転送管理テーブル40内の転送元ブロック番号41と同じブロック番号を代入する。
ステップS703において、転送管理部23は、変数である「残り検索サイズ」に、ステップS601で設定されたDMA転送サイズを代入する。
ステップS704において、転送管理部23は、「検索対象ブロック番号Xtmp」と「非検索対象ブロック番号Ytmp」とが一致するかどうかを判定する。一致していなければ、転送管理部23は、ステップS705の処理を行う。一方、一致していれば、転送管理部23は、ステップS706の処理を行う。
ステップS705において、転送管理部23は、「検索対象ブロック番号Xtmp」と、「非検索対象ブロック番号Ytmp」と一致する転送元ブロック番号41に対応する転送先ブロック番号42とが一致するかどうかを判定する。一致していれば、転送管理部23は、ステップS706の処理を行う。一方、一致していなければ、転送管理部23は、ステップS707の処理を行う。
ステップS706において、転送管理部23は、検索結果を「登録済」として、図12の動作を終了する。
ステップS707において、転送管理部23は、「検索対象ブロック番号Xtmp」と、「非検索対象ブロック番号Ytmp」と一致する転送元ブロック番号41に対応するチェーンブロック番号43とが一致するかどうかを判定する。一致していなければ、転送管理部23は、ステップS708の処理を行う。一方、一致していれば、転送管理部23は、ステップS709の処理を行う。
ステップS708において、転送管理部23は、「非検索対象ブロック番号Ytmp」を、「非検索対象ブロック番号Ytmp」と一致する転送元ブロック番号41に対応するチェーンブロック番号43と同じブロック番号に変更する。そして、転送管理部23は、再びステップS704の処理を行う。
ステップS709において、転送管理部23は、「残り検索サイズ」をブロックサイズ分デクリメントする。
ステップS710において、転送管理部23は、「残り検索サイズ」が0であるかどうかを判定する。「残り検索サイズ」が0よりも大きければ、転送管理部23は、ステップS711の処理を行う。一方、「残り検索サイズ」が0であれば、転送管理部23は、ステップS712の処理を行う。
ステップS711において、転送管理部23は、「検索対象ブロック番号Xtmp」を1つインクリメントする。そして、転送管理部23は、再びステップS702の処理を行う。
ステップS712において、転送管理部23は、転送元検索フラグが「未検索」であるかどうかを判定する。転送元検索フラグが「未検索」であれば、転送管理部23は、ステップS713の処理を行う。一方、転送元検索フラグが「検索済」であれば、転送管理部23は、検索結果を「未登録」としたまま、図12の動作を終了する。
ステップS713において、転送管理部23は、転送元検索フラグを「検索済」を示す値に変更する。
ステップS714において、転送管理部23は、「検索対象ブロック番号Xtmp」に、ステップS602で算出したDMA転送先ブロック番号を代入する。
図13を参照して、ステップS614の転送管理テーブル40の最終ブロック検索の処理手順を説明する。
ステップS801において、転送管理部23は、変数である「転送元ブロック番号Ztmp」に、転送元ブロックポインタ30の指す転送管理テーブル40内の転送元ブロック番号41と同じブロック番号を代入する。
ステップS802において、転送管理部23は、「転送元ブロック番号Ztmp」と、「転送元ブロック番号Ztmp」と一致する転送元ブロック番号41に対応するチェーンブロック番号43とが一致するかどうかを判定する。一致していなければ、転送管理部23は、ステップS803の処理を行う。一方、一致していれば、転送管理部23は、ステップS804の処理を行う。
ステップS803において、転送管理部23は、「転送元ブロック番号Ztmp」に、「転送元ブロック番号Ztmp」と一致する転送元ブロック番号41に対応するチェーンブロック番号43を代入する。
ステップS804において、転送管理部23は、転送管理テーブル40の最終ブロック番号として「転送元ブロック番号Ztmp」を取得し、図13の動作を終了する。
***実施の形態の効果の説明***
本実施の形態では、メモリ制御装置13がDMA転送対象のデータに対するプロセッサ11からの参照要求を検出したときに、参照要求の対象データのDMA転送が未実施であれば、そのDMA転送の実施よりも先に、転送前のデータをプロセッサ11に参照させる。そのため、DMA転送による命令の実行待ちをなくし、プロセッサ11の処理時間を短縮することができる。
本実施の形態によれば、DMA転送命令とその命令の後続命令との間に依存関係がある場合でも、後続命令は、先行するDMA転送命令の終了を待たずに実行可能である。つまり、メモリ12内のデータを転送するDMA転送を実行する命令とその命令の後続命令との間に依存関係がある場合でも、DMA転送を待たずに後続命令を実行して処理時間を短くすることができ、プロセッサ11が行う処理の完了までの時間を短縮することができる。
***他の構成***
本実施の形態の変形例として、メモリ制御装置13に内蔵される構成要素のうち、1つ以上の構成要素がメモリ制御装置13の外部に配置されてもよい。具体例として、DMAC25がメモリ制御装置13の外部に配置され、メモリ制御装置13と電気的に接続されて転送管理部23からの指令により動作してもよい。あるいは、アクセス制御部24がメモリ制御装置13の外部に配置され、メモリ制御装置13と電気的に接続されて転送管理部23からの指令により動作してもよい。いずれの例においても、メモリ制御装置13は、DMA転送を実施する機能を発揮することができる。
別の変形例として、DMAC25およびアクセス制御部24の少なくともいずれかが転送管理部23に内蔵されていてもよい。
10 計算機システム、11 プロセッサ、12 メモリ、13 メモリ制御装置、14 周辺バスブリッジ、15 I/O機器、16 システムバス、17 メモリバス、18 I/Oバス、21 システムバスI/F、22 アクセス検出部、23 転送管理部、24 アクセス制御部、25 DMAC、30 転送元ブロックポインタ、31 フラグ、40 転送管理テーブル、41 転送元ブロック番号、42 転送先ブロック番号、43 チェーンブロック番号、44 更新フラグ、50 更新管理テーブル、51 転送先ブロック番号、52 テーブル有効フラグ、53 更新データ用バッファ、54 更新フラグ。

Claims (7)

  1. メモリの領域間でのデータ転送であるDMA転送を実施するメモリ制御装置において、
    プロセッサからの要求を検出するアクセス検出部と、
    前記メモリの指定アドレスからデータを読み取るリード要求が前記アクセス検出部により検出されたときに、前記指定アドレスを含む領域を転送先とする未実施のDMA転送がなければ、前記指定アドレスからデータを読み取って前記プロセッサに送信し、前記未実施のDMA転送があれば、前記未実施のDMA転送における、前記指定アドレスに転送されるデータの転送元のアドレスからデータを読み取って前記プロセッサに送信した後、前記未実施のDMA転送を実施する転送管理部と
    を備えるメモリ制御装置。
  2. 前記転送管理部は、実施前のDMA転送における転送元および転送先の領域を識別する番号をそれぞれ転送元ブロック番号および転送先ブロック番号として設定する転送管理テーブルを保持し、前記指定アドレスを含む領域を識別する番号が転送先ブロック番号として前記転送管理テーブルに設定されているかどうかによって、前記未実施のDMA転送の有無を判定する請求項1に記載のメモリ制御装置。
  3. 前記リード要求が前記アクセス検出部により検出されたときに、前記指定アドレスを含む領域を識別する番号が転送先ブロック番号として前記転送管理テーブルに設定されていれば、その転送先ブロック番号に対応する転送元ブロック番号を前記転送管理テーブルから取得し、取得した転送元ブロック番号と前記指定アドレスとから、前記未実施のDMA転送における、前記指定アドレスに転送されるデータの転送元のアドレスを計算し、計算したアドレスからデータを読み取って前記プロセッサに送信する請求項2に記載のメモリ制御装置。
  4. メモリの領域間でのデータ転送であるDMA転送を実施するメモリ制御装置において、
    プロセッサからの要求を検出するアクセス検出部と、
    前記メモリの指定アドレスにデータを書き込むライト要求が前記アクセス検出部により検出されたときに、前記指定アドレスを含む領域を転送先とする未実施のDMA転送がなければ、前記プロセッサから送信されたデータを前記指定アドレスに書き込み、前記未実施のDMA転送があれば、前記プロセッサから送信されたデータをバッファに書き込んだ後、前記指定アドレスへのデータ転送を除く前記未実施のDMA転送と、前記バッファから前記指定アドレスへのデータ転送とを実施する転送管理部と
    を備えるメモリ制御装置。
  5. 前記転送管理部は、前記ライト要求が前記アクセス検出部により検出されたときに、前記未実施のDMA転送があれば、前記バッファを確保し、前記バッファから前記指定アドレスへのデータ転送を実施した後、前記バッファを解放する請求項4に記載のメモリ制御装置。
  6. 前記転送管理部は、前記未実施のDMA転送における転送先の領域を識別する番号と前記バッファの中で前記指定アドレスに転送されるデータが書き込まれた位置を示す情報とをそれぞれ転送先ブロック番号および更新情報として設定する更新管理テーブルを保持し、個々のDMA転送を実施する際に、前記個々のDMA転送における転送先の領域を識別する番号が転送先ブロック番号として前記更新管理テーブルに設定されていれば、その転送先ブロック番号に対応する更新情報を前記更新管理テーブルから取得し、前記指定アドレスへのデータ転送を除く前記個々のDMA転送と、前記バッファの中で、取得した更新情報に示された位置から前記指定アドレスへのデータ転送とを実施する請求項4または5に記載のメモリ制御装置。
  7. 請求項1から6のいずれか1項に記載のメモリ制御装置と、
    前記メモリと、
    前記プロセッサと
    を備える計算機システム。
JP2017012719A 2017-01-27 2017-01-27 メモリ制御装置および計算機システム Active JP6289689B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017012719A JP6289689B1 (ja) 2017-01-27 2017-01-27 メモリ制御装置および計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017012719A JP6289689B1 (ja) 2017-01-27 2017-01-27 メモリ制御装置および計算機システム

Publications (2)

Publication Number Publication Date
JP6289689B1 JP6289689B1 (ja) 2018-03-07
JP2018120499A true JP2018120499A (ja) 2018-08-02

Family

ID=61557981

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017012719A Active JP6289689B1 (ja) 2017-01-27 2017-01-27 メモリ制御装置および計算機システム

Country Status (1)

Country Link
JP (1) JP6289689B1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5858114A (en) * 1993-10-29 1999-01-12 Board; Alan Edwin Method and apparatus for cleaning liquid dispensing systems
JP2004145376A (ja) * 2001-03-09 2004-05-20 Internatl Business Mach Corp <Ibm> Dma転送制御方法及び制御装置
JP2005135240A (ja) * 2003-10-31 2005-05-26 Fuji Xerox Co Ltd データ転送制御装置、画像形成装置
JP2008108126A (ja) * 2006-10-26 2008-05-08 Canon Inc データ転送制御装置及びそのバスアクセス調停方法
JP2010152837A (ja) * 2008-12-26 2010-07-08 Mitsubishi Electric Corp バッファ装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5858114A (en) * 1993-10-29 1999-01-12 Board; Alan Edwin Method and apparatus for cleaning liquid dispensing systems
JP2004145376A (ja) * 2001-03-09 2004-05-20 Internatl Business Mach Corp <Ibm> Dma転送制御方法及び制御装置
JP2005135240A (ja) * 2003-10-31 2005-05-26 Fuji Xerox Co Ltd データ転送制御装置、画像形成装置
JP2008108126A (ja) * 2006-10-26 2008-05-08 Canon Inc データ転送制御装置及びそのバスアクセス調停方法
JP2010152837A (ja) * 2008-12-26 2010-07-08 Mitsubishi Electric Corp バッファ装置

Also Published As

Publication number Publication date
JP6289689B1 (ja) 2018-03-07

Similar Documents

Publication Publication Date Title
JP5939305B2 (ja) 情報処理装置,並列計算機システム及び情報処理装置の制御方法
US9164951B2 (en) Multiprocessor system, execution control method and execution control program
CN107818053B (zh) 用于存取高速缓存的方法与装置
EP2159706A1 (en) Operation processing apparatus and operation processing method
EP2169556A1 (en) Computer, tlb control method, and tlb control program
US9697127B2 (en) Semiconductor device for controlling prefetch operation
JP2020507848A (ja) メモリシステムへの加速されたアクセスを提供するための方法及び機器
JP2015194877A (ja) 転送装置、決定方法、及びデータ処理装置
JP6289689B1 (ja) メモリ制御装置および計算機システム
JP6740719B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP2016076025A (ja) 演算処理装置および演算処理装置の制御方法
JP2010170292A (ja) キャッシュメモリ制御回路およびキャッシュメモリ管理方法
KR20220072748A (ko) 버퍼 메모리 장치의 헤드 오브 라인 엔트리 처리
WO2022004837A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラムの記録媒体
US20230185726A1 (en) Information processing apparatus and control method
US11853597B2 (en) Memory management unit, method for memory management, and information processing apparatus
JP5266651B2 (ja) ローカル分岐履歴を用いた分岐予測装置及び分岐予測方法
WO2017216892A1 (ja) データ転送装置及びデータ転送方法
JP6132010B2 (ja) 制御装置、制御プログラム、および制御方法
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法
JP2010140306A (ja) バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラム
US20150234656A1 (en) Vector processor, information processing apparatus, and overtaking control method
US10521374B2 (en) Semiconductor integrated circuit device and method for comparing data
JP7022120B2 (ja) アトミックセットのデータアクセスを提供するための装置および方法
US10078586B2 (en) Out-of-range reference detection device, method, and recording medium

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180206

R150 Certificate of patent or registration of utility model

Ref document number: 6289689

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250