(57)【要約】【課題】ＤＭＡ転送による命令の実行待ちをなくし、プロセッサの処理時間を短縮する。【解決手段】メモリ制御装置１３の転送管理部２３は、メモリ１２の指定アドレスＲａｄｄｒからデータを読み取るリード要求がアクセス検出部２２により検出されたときに、指定アドレスＲａｄｄｒを含む領域を転送先とする未実施のＤＭＡ転送があるかどうかを判定する。そのような未実施のＤＭＡ転送がなければ、転送管理部２３は、指定アドレスＲａｄｄｒからデータを読み取ってプロセッサ１１に送信する。そのような未実施のＤＭＡ転送があれば、転送管理部２３は、当該未実施のＤＭＡ転送における、指定アドレスＲａｄｄｒに転送されるデータの転送元のアドレスからデータを読み取ってプロセッサ１１に送信する。その後、転送管理部２３は、当該未実施のＤＭＡ転送を実施する。【選択図】図３
2018120499.tif 000002
【特許請求の範囲】
【請求項１】
メモリの領域間でのデータ転送であるＤＭＡ転送を実施するメモリ制御装置において、
プロセッサからの要求を検出するアクセス検出部と、
前記メモリの指定アドレスからデータを読み取るリード要求が前記アクセス検出部により検出されたときに、前記指定アドレスを含む領域を転送先とする未実施のＤＭＡ転送がなければ、前記指定アドレスからデータを読み取って前記プロセッサに送信し、前記未実施のＤＭＡ転送があれば、前記未実施のＤＭＡ転送における、前記指定アドレスに転送されるデータの転送元のアドレスからデータを読み取って前記プロセッサに送信した後、前記未実施のＤＭＡ転送を実施する転送管理部と
を備えるメモリ制御装置。
【請求項２】
前記転送管理部は、実施前のＤＭＡ転送における転送元および転送先の領域を識別する番号をそれぞれ転送元ブロック番号および転送先ブロック番号として設定する転送管理テーブルを保持し、前記指定アドレスを含む領域を識別する番号が転送先ブロック番号として前記転送管理テーブルに設定されているかどうかによって、前記未実施のＤＭＡ転送の有無を判定する請求項１に記載のメモリ制御装置。
【請求項３】
前記リード要求が前記アクセス検出部により検出されたときに、前記指定アドレスを含む領域を識別する番号が転送先ブロック番号として前記転送管理テーブルに設定されていれば、その転送先ブロック番号に対応する転送元ブロック番号を前記転送管理テーブルから取得し、取得した転送元ブロック番号と前記指定アドレスとから、前記未実施のＤＭＡ転送における、前記指定アドレスに転送されるデータの転送元のアドレスを計算し、計算したアドレスからデータを読み取って前記プロセッサに送信する請求項２に記載のメモリ制御装置。
【請求項４】
メモリの領域間でのデータ転送であるＤＭＡ転送を実施するメモリ制御装置において、
プロセッサからの要求を検出するアクセス検出部と、
前記メモリの指定アドレスにデータを書き込むライト要求が前記アクセス検出部により検出されたときに、前記指定アドレスを含む領域を転送先とする未実施のＤＭＡ転送がなければ、前記プロセッサから送信されたデータを前記指定アドレスに書き込み、前記未実施のＤＭＡ転送があれば、前記プロセッサから送信されたデータをバッファに書き込んだ後、前記指定アドレスへのデータ転送を除く前記未実施のＤＭＡ転送と、前記バッファから前記指定アドレスへのデータ転送とを実施する転送管理部と
を備えるメモリ制御装置。
【請求項５】
前記転送管理部は、前記ライト要求が前記アクセス検出部により検出されたときに、前記未実施のＤＭＡ転送があれば、前記バッファを確保し、前記バッファから前記指定アドレスへのデータ転送を実施した後、前記バッファを解放する請求項４に記載のメモリ制御装置。
【請求項６】
前記転送管理部は、前記未実施のＤＭＡ転送における転送先の領域を識別する番号と前記バッファの中で前記指定アドレスに転送されるデータが書き込まれた位置を示す情報とをそれぞれ転送先ブロック番号および更新情報として設定する更新管理テーブルを保持し、個々のＤＭＡ転送を実施する際に、前記個々のＤＭＡ転送における転送先の領域を識別する番号が転送先ブロック番号として前記更新管理テーブルに設定されていれば、その転送先ブロック番号に対応する更新情報を前記更新管理テーブルから取得し、前記指定アドレスへのデータ転送を除く前記個々のＤＭＡ転送と、前記バッファの中で、取得した更新情報に示された位置から前記指定アドレスへのデータ転送とを実施する請求項４または５に記載のメモリ制御装置。
【請求項７】
請求項１から６のいずれか１項に記載のメモリ制御装置と、
前記メモリと、
前記プロセッサと
を備える計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置および計算機システムに関するものである。
【背景技術】
【０００２】
一般的に、計算機システムは、ＣＰＵ、メモリおよびＤＭＡＣを備える。「ＣＰＵ」は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略語である。「ＤＭＡＣ」は、ＤＭＡ  Ｃｏｎｔｒｏｌｌｅｒの略語である。「ＤＭＡ」は、Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ
Ａｃｃｅｓｓの略語である。
【０００３】
メモリの領域間でのデータ転送は、計算機の処理の中でもハードウェアリソースと時間とを費やす処理である。ＣＰＵがデータを転送する代わりにＤＭＡＣが転送処理を実施することで、ＣＰＵが転送以外の処理を転送処理と並列に実行することが可能である。ＤＭＡＣによる転送処理のことをＤＭＡ転送という。
【０００４】
ＤＭＡ転送を発生させる命令をＤＭＡ転送命令という。ＤＭＡ転送命令によるＤＭＡ転送の転送先領域に、その命令の後続命令がアクセスする場合がある。すなわち、ＤＭＡ転送命令と後続命令との間に依存関係が存在する場合がある。その場合、後続命令は、先行するＤＭＡ転送命令の終了を待ってから実行する必要がある。
【０００５】
具体例として、ＤＭＡ転送を行う命令Ａと、命令Ａの後続命令である命令Ｂとの間に依存関係があるとする。その場合、ＣＰＵにおける命令Ｂの実行は、ＤＭＡＣがＣＰＵからの命令ＡによるＤＭＡ転送を完了するまで待たされる。ＤＭＡ転送の完了の通知は、ＤＭＡＣからＣＰＵへの割り込みによって行われる。よって、ＣＰＵにおける命令Ｂの実行は、ＤＭＡＣがＣＰＵへの割り込みを発生させるまで待たされる。
【０００６】
依存関係がなるべく生じないように命令の配置を工夫する技術がコンパイラ等に適用されているものの、依存関係が完全になくなるわけではない。よって、ＣＰＵにおいてＤＭＡ転送待ちの状態が発生する可能性がある。
【０００７】
特許文献１には、ＤＭＡＣがＤＭＡ転送対象のデータに対するＣＰＵからの参照要求を検出し、実行中のＤＭＡ転送よりも優先して、参照要求の対象データのＤＭＡ転送を行い、転送後のデータをＣＰＵに参照させる技術が記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−１４５３７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１に記載の技術では、ＣＰＵは、ＤＭＡＣが参照要求の対象データのＤＭＡ転送を完了し、ＣＰＵへの割り込みを発生させるまで対象データを参照することができない。すなわち、ＤＭＡ転送命令と後続命令との間に依存関係がある場合、ＣＰＵにおいてＤＭＡ転送待ちの状態が発生することは避けられない。
【００１０】
本発明は、ＤＭＡ転送による命令の実行待ちをなくし、プロセッサの処理時間を短縮することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様に係るメモリ制御装置は、
メモリの領域間でのデータ転送であるＤＭＡ転送を実施するメモリ制御装置であり、
プロセッサからの要求を検出するアクセス検出部と、
前記メモリの指定アドレスからデータを読み取るリード要求が前記アクセス検出部により検出されたときに、前記指定アドレスを含む領域を転送先とする未実施のＤＭＡ転送がなければ、前記指定アドレスからデータを読み取って前記プロセッサに送信し、前記未実施のＤＭＡ転送があれば、前記未実施のＤＭＡ転送における、前記指定アドレスに転送されるデータの転送元のアドレスからデータを読み取って前記プロセッサに送信した後、前記未実施のＤＭＡ転送を実施する転送管理部とを備える。
【発明の効果】
【００１２】
本発明では、メモリ制御装置がＤＭＡ転送対象のデータに対するプロセッサからの参照要求を検出したときに、参照要求の対象データのＤＭＡ転送が未実施であれば、そのＤＭＡ転送の実施よりも先に、転送前のデータをプロセッサに参照させる。そのため、ＤＭＡ転送による命令の実行待ちをなくし、プロセッサの処理時間を短縮することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係る計算機システムの構成を示すブロック図。
【図２】実施の形態１に係る計算機システムのメモリの構成を示す図。
【図３】実施の形態１に係るメモリ制御装置の構成を示すブロック図。
【図４】実施の形態１に係るメモリ制御装置が保持する転送元ブロックポインタ、転送管理テーブルおよび更新管理テーブルの構成を示す図。
【図５】実施の形態１に係るメモリ制御装置における、プロセッサからリード要求を受けたときの処理手順を示すフローチャート。
【図６】実施の形態１に係る計算機システムの動作の例を示す図。
【図７】実施の形態１に係るメモリ制御装置における、プロセッサからライト要求を受けたときの処理手順を示すフローチャート。
【図８】実施の形態１に係るメモリ制御装置におけるＤＭＡ転送の処理手順を示すフローチャート。
【図９】実施の形態１に係るメモリ制御装置におけるＤＭＡ転送の処理手順を示すフローチャート。
【図１０】実施の形態１に係るメモリ制御装置における初期化の処理手順を示すフローチャート。
【図１１】実施の形態１に係るメモリ制御装置における転送管理テーブル登録の処理手順を示すフローチャート。
【図１２】実施の形態１に係るメモリ制御装置における転送管理テーブル検索の処理手順を示すフローチャート。
【図１３】実施の形態１に係るメモリ制御装置における転送管理テーブルの最終ブロック検索の処理手順を示すフローチャート。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。なお、本発明は、以下に説明する実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。例えば、以下に説明する実施の形態は、部分的に実施されても構わない。
【００１５】
実施の形態１．
本実施の形態について、図１から図１３を用いて説明する。
【００１６】
＊＊＊構成の説明＊＊＊
図１を参照して、本実施の形態に係る計算機システム１０の構成を説明する。
【００１７】
計算機システム１０は、プロセッサ１１と、メモリ１２と、メモリ制御装置１３と、周辺バスブリッジ１４とを備える。プロセッサ１１は、システムバス１６を介してメモリ制御装置１３および周辺バスブリッジ１４といった他のハードウェアと接続され、これら他のハードウェアを制御する。メモリ制御装置１３は、メモリバス１７を介してメモリ１２と接続され、メモリ１２を制御する。周辺バスブリッジ１４は、Ｉ／Ｏバス１８を介して外部のＩ／Ｏ機器１５と接続され、Ｉ／Ｏ機器１５にデータを送信したり、Ｉ／Ｏ機器１５からデータを受信したりする。「Ｉ／Ｏ」は、Ｉｎｐｕｔ／Ｏｕｔｐｕｔの略語である。
【００１８】
プロセッサ１１は、例えば、ＣＰＵである。
【００１９】
メモリ１２は、例えば、ＲＡＭまたはフラッシュメモリである。「ＲＡＭ」は、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略語である。
【００２０】
メモリ制御装置１３は、例えば、ロジックＩＣ、ＦＰＧＡまたはＡＳＩＣである。「ＩＣ」は、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。「ＦＰＧＡ」は、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。「ＡＳＩＣ」は、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。
【００２１】
Ｉ／Ｏ機器１５は、例えば、マウス、キーボードまたはタッチパネルといった入力装置、あるいは、ディスプレイまたはプリンタといった出力装置である。
【００２２】
図２を参照して、メモリ１２の構成を説明する。
【００２３】
メモリ１２は、一定容量を単位とするｎ個のブロックで管理される。すなわち、メモリ１２は、ｎ個の領域を有する。「ｎ」は２のべき乗である。よって、メモリアドレスから容易にブロック番号が求められる。
【００２４】
各ブロックは、メモリバス１７の幅を単位とするｍ個のエントリで構成される。「ｍ」は２のべき乗である。
【００２５】
図３を参照して、メモリ制御装置１３の構成を説明する。
【００２６】
メモリ制御装置１３は、システムバスＩ／Ｆ２１と、アクセス検出部２２と、転送管理部２３と、アクセス制御部２４と、ＤＭＡＣ２５とを備える。「Ｉ／Ｆ」は、ＩｎｔｅｒＦａｃｅの略語である。
【００２７】
システムバスＩ／Ｆ２１は、システムバス１６を介してプロセッサ１１と接続されている。アクセス制御部２４は、メモリバス１７を介してメモリ１２と接続されている。
【００２８】
メモリ制御装置１３は、メモリ１２の領域間でのデータ転送であるＤＭＡ転送を実施する機能を有する。この機能を実現するために、本実施の形態では、ＤＭＡ転送を制御するＤＭＡＣ２５と、メモリ１２にアクセスするアクセス制御部２４とがメモリ制御装置１３に配置されている。ＤＭＡＣ２５としては、従来のＤＭＡＣと同じものを用いることができる。アクセス制御部２４としては、従来のメモリアクセス用の回路と同じものを用いることができる。
【００２９】
メモリ制御装置１３は、ＤＭＡ転送対象のデータに対するプロセッサ１１からの参照要求を検出したときに、参照要求の対象データのＤＭＡ転送が未実施であれば、そのＤＭＡ転送の実施よりも先に、転送前のデータをプロセッサ１１に参照させる機能をさらに有する。この機能を実現するために、本実施の形態では、システムバスＩ／Ｆ２１を通じてプロセッサ１１からの要求を検出するアクセス検出部２２と、システムバスＩ／Ｆ２１、アクセス制御部２４およびＤＭＡＣ２５の間に介在する転送管理部２３とがメモリ制御装置１３に配置されている。
【００３０】
以降の説明において、プロセッサ１１からの要求がライト要求のとき、書き込み対象を示すメモリアドレスを、指定アドレスＷａｄｄｒと示す。プロセッサ１１からの要求がリード要求のとき、読み取り対象を示すメモリアドレスを、指定アドレスＲａｄｄｒと示し、また、指定アドレスＲａｄｄｒに転送されるデータの転送元を示すメモリアドレスを、アドレスＳａｄｄｒと示す。
【００３１】
図４を参照して、転送管理部２３が保持する転送元ブロックポインタ３０、転送管理テーブル４０および更新管理テーブル５０の構成を説明する。図４において、「ｄｏｎ’ｔ
ｃａｒｅ」は、意味を持たない初期値である。
【００３２】
転送元ブロックポインタ３０は、フラグ３１を含む。転送元ブロックポインタ３０は、フラグ３１が「有効」のとき、ＤＭＡ転送元のブロック番号を示し、これは転送管理テーブル４０の転送元ブロック番号４１を示すことと等価である。初期状態において、フラグ３１は「無効」にされる。
【００３３】
転送管理テーブル４０は、転送元ブロック番号４１、転送先ブロック番号４２、チェーンブロック番号４３および更新フラグ４４といった項目を含む。各項目は、ブロック番号ごとに１つずつ存在する。すなわち、各項目は、ｎ個ずつ存在する。
【００３４】
転送元ブロック番号４１は、ＤＭＡ転送時の転送元ブロックのブロック番号を意味する。
【００３５】
転送先ブロック番号４２は、転送元ブロック番号４１のブロックのデータを転送する先のブロック番号である。すなわち、転送先ブロック番号４２は、ＤＭＡ転送時の転送先ブロックのブロック番号を意味する。
【００３６】
チェーンブロック番号４３は、複数のブロックのＤＭＡ転送を行うときの次に転送するブロックの転送元ブロック番号４１である。ただし、転送元ブロック番号４１とチェーンブロック番号４３とが同じ場合は、該当するブロックがＤＭＡ転送対象の最後のブロックであることを意味するものとする。初期状態において、チェーンブロック番号４３には転送元ブロック番号４１と同じブロック番号が設定される。
【００３７】
更新フラグ４４は、転送先ブロック番号４２のブロックが、ＤＭＡ転送前にプロセッサ１１からデータを書き換えることを要求されたブロックであるかどうかを示す。初期状態において、更新フラグ４４は「無効」にされる。
【００３８】
上記のように、本実施の形態において、転送管理部２３が保持する転送管理テーブル４０には、実施前のＤＭＡ転送における転送元および転送先の領域を識別する番号がそれぞれ転送元ブロック番号４１および転送先ブロック番号４２として設定される。本実施の形態では、転送管理テーブル４０に、何らかの番号の組み合わせが転送元ブロック番号４１および転送先ブロック番号４２として「記憶」されていても、転送元ブロックポインタ３０のフラグ３１が「無効」のときは、当該組み合わせの設定は無効である。なお、変形例として、転送元ブロックポインタ３０を適用せず、転送管理テーブル４０に、当該組み合わせが「記憶」されているだけで、当該組み合わせが転送元ブロック番号４１および転送先ブロック番号４２として「設定」されているとみなしてもよい。
【００３９】
更新管理テーブル５０は、転送先ブロック番号５１、テーブル有効フラグ５２、更新データ用バッファ５３および更新フラグ５４といった項目を含む。更新管理テーブル５０は、転送管理テーブル４０の更新フラグ４４が「有効」な転送先ブロック番号４２のブロックのデータを管理する。更新管理テーブル５０は、ｋ個存在する。「ｋ」は任意の整数である。
【００４０】
転送先ブロック番号５１は、ＤＭＡ転送前にプロセッサ１１からデータを書き換えることを要求されたブロックのブロック番号を意味する。
【００４１】
テーブル有効フラグ５２は、更新管理テーブル５０が有効であるかどうかを示す。初期状態において、テーブル有効フラグ５２は「無効」にされる。
【００４２】
更新データ用バッファ５３は、プロセッサ１１からの要求により書き換えられた後のデータを格納するバッファである。更新データ用バッファ５３は、１ブロック分の容量のバッファである。すなわち、更新データ用バッファ５３は、ｍ個のエントリで構成される。
【００４３】
更新フラグ５４は、更新データ用バッファ５３のエントリごとに１つ付けられる。プロセッサ１１からの要求により書き換えられたデータを格納しているエントリの更新フラグ５４は「有効」となる。初期状態において、更新フラグ５４は「無効」にされる。
【００４４】
上記のように、本実施の形態において、転送管理部２３が保持する更新管理テーブル５０は、メモリ１２の指定アドレスＷａｄｄｒにデータを書き込むライト要求がアクセス検出部２２により検出されたときに、指定アドレスＷａｄｄｒを含む領域を転送先とする未実施のＤＭＡ転送がある場合のみ使用される。更新管理テーブル５０には、その未実施のＤＭＡ転送における転送先の領域を識別する番号と更新データ用バッファ５３の中で指定アドレスＷａｄｄｒに転送されるデータが書き込まれた位置を示す情報とがそれぞれ転送先ブロック番号５１および更新情報として設定される。更新情報は、任意の形式で記録されてよいが、本実施の形態ではエントリ別の更新フラグ５４の形式で記録される。本実施の形態では、更新管理テーブル５０に、何らかの番号と何らかの位置を示す情報との組み合わせが転送先ブロック番号５１および更新情報として「記憶」されていても、テーブル有効フラグ５２が「無効」のときは、当該組み合わせの設定は無効である。なお、変形例として、テーブル有効フラグ５２を適用せず、更新管理テーブル５０に、当該組み合わせが「記憶」されているだけで、当該組み合わせが転送先ブロック番号５１および更新情報として「設定」されているとみなしてもよい。
【００４５】
＊＊＊動作の説明＊＊＊
各フローチャートを参照して、本実施の形態に係るメモリ制御装置１３の動作を説明する。メモリ制御装置１３の動作は、本実施の形態に係るメモリ制御方法に相当する。
【００４６】
図５を参照して、メモリ制御装置１３がプロセッサ１１からリード要求を受けたときの処理手順を説明する。
【００４７】
ステップＳ１０１において、転送管理部２３は、メモリ１２の指定アドレスＲａｄｄｒからデータを読み取るリード要求がアクセス検出部２２により検出されたときに、未実施のＤＭＡ転送があるかどうかを判定する。未実施のＤＭＡ転送があれば、転送管理部２３は、ステップＳ１０２の処理を行う。一方、未実施のＤＭＡ転送がなければ、転送管理部２３は、ステップＳ１０４の処理を行う。
【００４８】
ステップＳ１０２において、転送管理部２３は、転送管理テーブル４０の転送先ブロック番号４２を探索する。
【００４９】
ステップＳ１０３において、転送管理部２３は、プロセッサ１１のメモリリードアドレスが転送先ブロック番号４２の領域に含まれるかどうかを判定する。すなわち、転送管理部２３は、指定アドレスＲａｄｄｒを含む領域を転送先とする未実施のＤＭＡ転送があるかどうかを判定する。具体的には、転送管理部２３は、指定アドレスＲａｄｄｒを含む領域を識別する番号が転送先ブロック番号４２として転送管理テーブル４０に設定されているかどうかによって、そのような未実施のＤＭＡ転送の有無を判定する。そのような未実施のＤＭＡ転送がなければ、転送管理部２３は、ステップＳ１０４の処理を行う。一方、そのような未実施のＤＭＡ転送があれば、転送管理部２３は、ステップＳ１０５の処理を行う。すなわち、リード要求がアクセス検出部２２により検出されたときに、指定アドレスＲａｄｄｒを含む領域を識別する番号が転送先ブロック番号４２として転送管理テーブル４０に設定されていれば、転送管理部２３は、ステップＳ１０５の処理を行う。
【００５０】
ステップＳ１０４において、転送管理部２３は、メモリ１２からデータをリードする。具体的には、転送管理部２３は、アクセス制御部２４を利用して、指定アドレスＲａｄｄｒからデータを読み取る。そして、転送管理部２３は、ステップＳ１０８の処理を行う。
【００５１】
ステップＳ１０５において、転送管理部２３は、ステップＳ１０３でヒットした転送先ブロック番号４２に対応する転送元ブロック番号４１を転送管理テーブル４０から取得する。
【００５２】
ステップＳ１０６において、転送管理部２３は、ステップＳ１０５で取得した転送元ブロック番号４１の領域内のリード対象となるアドレスＳａｄｄｒを計算する。具体的には、転送管理部２３は、取得した転送元ブロック番号４１と指定アドレスＲａｄｄｒとから、指定アドレスＲａｄｄｒを含む領域を転送先とする未実施のＤＭＡ転送における、指定アドレスＲａｄｄｒに転送されるデータの転送元のアドレスＳａｄｄｒを計算する。
【００５３】
ステップＳ１０７において、転送管理部２３は、ステップＳ１０６で計算したアドレスＳａｄｄｒからデータをリードする。具体的には、転送管理部２３は、アクセス制御部２４を利用して、計算したアドレスＳａｄｄｒからデータを読み取る。
【００５４】
ステップＳ１０８において、転送管理部２３は、ステップＳ１０２またはステップＳ１０７でリードしたデータをプロセッサ１１に返し、図５の動作を終了する。具体的には、転送管理部２３は、システムバスＩ／Ｆ２１を介して、読み取ったデータをプロセッサ１１に送信する。転送管理部２３は、ステップＳ１０１で未実施のＤＭＡ転送があると判定していたのであれば、さらに、ＤＭＡＣ２５を利用して、ＤＭＡ転送の完了を通知する割り込みをプロセッサ１１に送信する。
【００５５】
転送管理部２３は、ステップＳ１０１で未実施のＤＭＡ転送があると判定していたのであれば、図５の動作の後に、その未実施のＤＭＡ転送を実施する。
【００５６】
ここで、プロセッサ１１において命令Ａ、命令Ｂ、命令Ｃおよび命令Ｄが順番に実行される例を図６に示す。
【００５７】
この例では、ＤＭＡ転送を伴う命令Ａと、命令Ａの後続命令であり、メモリ１２のリードを伴う命令Ｂとの間に依存関係があるとする。メモリ制御装置１３は、図５の動作によって、プロセッサ１１から命令Ａを受けた時点で、すなわち、命令Ａで要求されるＤＭＡ転送を実施する前に、ＤＭＡ転送の完了を通知する割り込みをただちにＤＭＡＣ２５より発生させ、プロセッサ１１に後続の処理を進めさせる。したがって、ＤＭＡ転送による命令の実行待ちをなくし、プロセッサ１１の処理時間を短縮することができる。
【００５８】
図７を参照して、メモリ制御装置１３がプロセッサ１１からライト要求を受けたときの処理手順を説明する。
【００５９】
ステップＳ２０１において、転送管理部２３は、メモリ１２の指定アドレスＷａｄｄｒにデータを書き込むライト要求がアクセス検出部２２により検出されたときに、未実施のＤＭＡ転送があるかどうかを判定する。未実施のＤＭＡ転送があれば、転送管理部２３は、ステップＳ２０２の処理を行う。一方、未実施のＤＭＡ転送がなければ、転送管理部２３は、ステップＳ２０４の処理を行う。なお、転送管理部２３は、ステップＳ２０１の処理を行う時点で、システムバスＩ／Ｆ２１を介して、ライト要求に伴ってプロセッサ１１から送信されたデータをすでに受信している。
【００６０】
ステップＳ２０２において、転送管理部２３は、転送管理テーブル４０の転送先ブロック番号４２を探索する。
【００６１】
ステップＳ２０３において、転送管理部２３は、プロセッサ１１のメモリライトアドレスが転送先ブロック番号４２の領域に含まれるかどうかを判定する。すなわち、転送管理部２３は、指定アドレスＷａｄｄｒを含む領域を転送先とする未実施のＤＭＡ転送があるかどうかを判定する。具体的には、転送管理部２３は、指定アドレスＷａｄｄｒを含む領域を識別する番号が転送先ブロック番号４２として転送管理テーブル４０に設定されているかどうかによって、そのような未実施のＤＭＡ転送の有無を判定する。そのような未実施のＤＭＡ転送がなければ、転送管理部２３は、ステップＳ２０４の処理を行う。一方、そのような未実施のＤＭＡ転送があれば、転送管理部２３は、ステップＳ２０５の処理を行う。すなわち、ライト要求がアクセス検出部２２により検出されたときに、指定アドレスＷａｄｄｒを含む領域を識別する番号が転送先ブロック番号４２として転送管理テーブル４０に設定されていれば、転送管理部２３は、ステップＳ２０５の処理を行う。
【００６２】
ステップＳ２０４において、転送管理部２３は、メモリ１２にデータをライトする。具体的には、転送管理部２３は、アクセス制御部２４を利用して、プロセッサ１１から送信されたデータを指定アドレスＷａｄｄｒに書き込み、図７の動作を終了する。
【００６３】
ステップＳ２０５において、転送管理部２３は、ステップＳ２０３でヒットした転送先ブロック番号４２に対応する更新フラグ４４を「有効」に変更する。
【００６４】
ステップＳ２０６において、転送管理部２３は、テーブル有効フラグ５２が「無効」になっている更新管理テーブル５０を探索する。
【００６５】
ステップＳ２０７において、転送管理部２３は、テーブル有効フラグ５２が「無効」になっている更新管理テーブル５０の転送先ブロック番号５１を、転送管理テーブル４０で更新フラグ４４を「有効」にした転送先ブロック番号４２と同じブロック番号に変更する。
【００６６】
ステップＳ２０８において、転送管理部２３は、ステップＳ２０３でヒットした転送先ブロック番号４２の領域内のライト対象となるデータのアドレスを計算する。具体的には、転送管理部２３は、指定アドレスＷａｄｄｒから、転送先ブロック内のどのエントリが書き込み先かを計算する。
【００６７】
ステップＳ２０９において、転送管理部２３は、ステップＳ２０８で計算したアドレスから更新データ用バッファ５３の対象エントリを決定する。
【００６８】
ステップＳ２１０において、転送管理部２３は、ステップＳ２０９で決定した対象エントリにデータをライトする。すなわち、転送管理部２３は、プロセッサ１１から送信されたデータを更新データ用バッファ５３に書き込む。
【００６９】
ステップＳ２１１において、転送管理部２３は、ステップＳ２１０でデータを書き込んだ対象エントリに対応する更新フラグ５４を「有効」に変更する。すなわち、転送管理部２３は、更新データ用バッファ５３を事後的に確保する。そして、転送管理部２３は、図７の動作を終了する。なお、転送管理部２３は、ステップＳ２１０の処理の前に、ステップＳ２１１の処理を行ってもよい。すなわち、転送管理部２３は、データを書き込む前に更新データ用バッファ５３を確保しておいてもよい。
【００７０】
転送管理部２３は、ステップＳ２０１で未実施のＤＭＡ転送があると判定していたのであれば、図７の動作の後に、その未実施のＤＭＡ転送を実施する。ただし、転送管理部２３は、ステップＳ２０３で指定アドレスＷａｄｄｒを含む領域を転送先とする未実施のＤＭＡ転送があると判定していたのであれば、図７の動作の後に、指定アドレスＷａｄｄｒへのデータ転送を除く未実施のＤＭＡ転送と、更新データ用バッファ５３から指定アドレスＷａｄｄｒへのデータ転送とを実施する。後述するように、転送管理部２３は、更新データ用バッファ５３から指定アドレスＷａｄｄｒへのデータ転送を実施した後、更新データ用バッファ５３を解放する。
【００７１】
図８および図９を参照して、ＤＭＡ転送の処理手順を説明する。
【００７２】
ステップＳ３０１において、転送管理部２３は、転送元ブロックポインタ３０のフラグ３１が「有効」であるかどうかを判定する。フラグ３１が「無効」であれば、転送管理部２３は、図８の動作を終了する。一方、フラグ３１が「有効」であれば、転送管理部２３は、ステップＳ３０２の処理を行う。
【００７３】
ステップＳ３０２において、転送管理部２３は、転送元ブロックポインタ３０の指す転送管理テーブル４０内の転送元ブロック番号４１を対象に選択する。
【００７４】
ステップＳ３０３において、転送管理部２３は、転送管理テーブル４０の対象ブロックの更新フラグ４４が「有効」であるかどうかを判定する。更新フラグ４４が「無効」であれば、転送管理部２３は、ステップＳ３０４の処理を行う。一方、更新フラグ４４が「有効」であれば、転送管理部２３は、ステップＳ４０１の処理を行う。
【００７５】
ステップＳ３０４において、転送管理部２３は、対象の転送元ブロック番号４１に対応するアドレスからデータをブロックサイズ分リードする。
【００７６】
ステップＳ３０５において、転送管理部２３は、対象の転送元ブロック番号４１に対応する転送先ブロック番号４２を転送管理テーブル４０から取得する。そして、転送管理部２３は、取得した転送先ブロック番号４２に対応するアドレスへ、ステップＳ３０４でリードしたデータをブロックサイズ分ライトする。
【００７７】
ステップＳ３０６において、転送管理部２３は、対象の転送元ブロック番号４１に対応するチェーンブロック番号４３を転送管理テーブル４０から取得する。そして、転送管理部２３は、対象の転送元ブロック番号４１と、取得したチェーンブロック番号４３とが一致するかどうかを判定する。一致していれば、転送管理部２３は、ステップＳ３０７の処理を行う。一方、一致していなければ、転送管理部２３は、ステップＳ３０８の処理を行う。
【００７８】
ステップＳ３０７において、転送管理部２３は、転送元ブロックポインタ３０のフラグ３１を「無効」に変更し、図８の動作を終了する。
【００７９】
ステップＳ３０８において、転送管理部２３は、ステップＳ３０６で取得したチェーンブロック番号４３を対象に選択する。すなわち、転送管理部２３は、ステップＳ３０６で取得したチェーンブロック番号４３と一致する転送元ブロック番号４１を対象に選択する。
【００８０】
ステップＳ３０９において、転送管理部２３は、転送管理テーブル４０でステップＳ３０８の直前に対象になっていた転送元ブロック番号４１に対応するチェーンブロック番号４３を、その転送元ブロック番号４１と同じブロック番号に変更する。すなわち、転送管理部２３は、ステップＳ３０８の直前の対象ブロックのチェーンブロック番号４３を初期値に戻す。そして、転送管理部２３は、再びステップＳ３０３の処理を行う。
【００８１】
ステップＳ４０１において、転送管理部２３は、テーブル有効フラグ５２が「有効」であり、かつ、転送先ブロック番号５１が転送管理テーブル４０の転送先ブロック番号４２と一致している更新管理テーブル５０を対象に選択する。そして、転送管理部２３は、「ｉ」を０からｍまで１ずつインクリメントされるカウンタとし、ステップＳ４０２からステップＳ４０６のループ処理を行う。
【００８２】
ステップＳ４０２において、転送管理部２３は、対象の更新管理テーブル５０の更新データ用バッファ５３のエントリｉの更新フラグ５４が「有効」であるかどうかを判定する。更新フラグ５４が「無効」であれば、転送管理部２３は、ステップＳ４０３の処理を行う。一方、更新フラグ５４が「有効」であれば、転送管理部２３は、ステップＳ４０５の処理を行う。
【００８３】
ステップＳ４０３において、転送管理部２３は、転送元ブロックの対応するアドレスからデータをリードする。すなわち、転送管理部２３は、対象の転送元ブロック番号４１の領域内のエントリｉを読み込む。
【００８４】
ステップＳ４０４において、転送管理部２３は、ステップＳ４０４でリードしたデータを転送元データとして選択する。そして、転送管理部２３は、ステップＳ４０６の処理を行う。
【００８５】
ステップＳ４０５において、転送管理部２３は、対象の更新管理テーブル５０の更新データ用バッファ５３のエントリｉを転送元データとして選択する。
【００８６】
ステップＳ４０６において、転送管理部２３は、転送先ブロックの対応するアドレスへ転送元データをライトする。すなわち、転送管理部２３は、対象の転送元ブロック番号４１に対応する転送先ブロック番号４２の領域内のエントリｉを転送元データで上書きする。カウンタｉがｍ未満であれば、転送管理部２３は、再びステップＳ４０２の処理を行う。カウンタｉがｍであれば、転送管理部２３は、ステップＳ４０７の処理を行う。
【００８７】
ステップＳ４０７において、転送管理部２３は、対象の更新管理テーブル５０の更新データ用バッファ５３の中で更新フラグ５４が「有効」になっているエントリの更新フラグ５４を「無効」に変更する。すなわち、転送管理部２３は、更新データ用バッファ５３を解放する。また、転送管理部２３は、対象の更新管理テーブル５０のテーブル有効フラグ５２も「無効」に変更する。転送管理部２３は、さらに、転送管理テーブル４０の対象ブロックの更新フラグ４４を「無効」にする。そして、転送管理部２３は、ステップＳ３０６の処理を行う。
【００８８】
上記のように、本実施の形態において、転送管理部２３は、個々のＤＭＡ転送を実施する際に、個々のＤＭＡ転送における転送先の領域を識別する番号が転送先ブロック番号５１として更新管理テーブル５０に設定されていれば、その転送先ブロック番号５１に対応する更新情報を更新管理テーブル５０から取得する。そして、転送管理部２３は、前述したライト要求の指定アドレスＷａｄｄｒへのデータ転送を除く個々のＤＭＡ転送と、更新データ用バッファ５３の中で、取得した更新情報に示された位置から指定アドレスＷａｄｄｒへのデータ転送とを実施する。
【００８９】
図１０を参照して、初期化の処理手順を説明する。
【００９０】
ステップＳ５０１において、転送管理部２３は、リセット信号がアサートされるまで待機する。
【００９１】
ステップＳ５０２において、転送管理部２３は、リセット信号が解除されるまで待機する。
【００９２】
ステップＳ５０３において、転送管理部２３は、転送元ブロックポインタ３０のフラグ３１を「無効」にする。そして、転送管理部２３は、「ｉ」を０からｎまで１ずつインクリメントされるカウンタとし、ステップＳ５０４からステップＳ５０６のループ処理を行う。
【００９３】
ステップＳ５０４において、転送管理部２３は、転送管理テーブル４０でブロック番号ｉと一致する転送元ブロック番号４１を対象に選択する。
【００９４】
ステップＳ５０５において、転送管理部２３は、対象の転送元ブロック番号４１に対応するチェーンブロック番号４３に、その転送元ブロック番号４１と同じブロック番号ｉを設定する。
【００９５】
ステップＳ５０６において、転送管理部２３は、対象の転送元ブロック番号４１に対応する更新フラグ４４を「無効」にする。カウンタｉがｎ未満であれば、転送管理部２３は、再びステップＳ５０４の処理を行う。カウンタｉがｎであれば、転送管理部２３は、「ｉ」を０からｋまで１ずつインクリメントされるカウンタとし、ステップＳ５０７からステップＳ５０９のループ処理を行う。
【００９６】
ステップＳ５０７において、転送管理部２３は、ｉ個目の更新管理テーブル５０を対象に選択する。
【００９７】
ステップＳ５０８において、転送管理部２３は、対象の更新管理テーブル５０のテーブル有効フラグ５２を「無効」にする。そして、転送管理部２３は、「ｊ」を０からｍまで１ずつインクリメントされるカウンタとし、ステップＳ５０９のループ処理を行う。
【００９８】
ステップＳ５０９において、転送管理部２３は、対象の更新管理テーブル５０の更新データ用バッファ５３のエントリｊの更新フラグ５４を「無効」にする。カウンタｊがｍ未満であれば、転送管理部２３は、再びステップＳ５０９の処理を行う。カウンタｊがｍであり、かつ、カウンタｉがｋ未満であれば、転送管理部２３は、再びステップＳ５０７の処理を行う。カウンタｊがｍであり、かつ、カウンタｉがｋであれば、転送管理部２３は、図１０の動作を終了する。
【００９９】
図１１を参照して、転送管理テーブル登録の処理手順を説明する。
【０１００】
ステップＳ６０１において、転送管理部２３は、プロセッサ１１からＤＭＡ転送に関わる設定として、ＤＭＡ転送元アドレス、ＤＭＡ転送サイズおよびＤＭＡ転送先アドレスの設定を受ける。
【０１０１】
ステップＳ６０２において、転送管理部２３は、ステップＳ６０１で設定されたＤＭＡ転送元アドレスを含む領域のブロック番号であるＤＭＡ転送元ブロック番号、ステップＳ６０１で設定されたＤＭＡ転送先アドレスを含む領域のブロック番号であるＤＭＡ転送先ブロック番号を算出する。
【０１０２】
ステップＳ６０３において、転送管理部２３は、変数である「残り転送サイズ」に、ステップＳ６０１で設定されたＤＭＡ転送サイズを代入する。転送管理部２３は、変数である「転送元ブロック番号Ｓｔｍｐ」に、ステップＳ６０２で算出したＤＭＡ転送元ブロック番号を代入する。転送管理部２３は、変数である「転送先ブロック番号Ｄｔｍｐ」に、ステップＳ６０２で算出したＤＭＡ転送先ブロック番号を代入する。
【０１０３】
ステップＳ６０４において、転送管理部２３は、転送元ブロックポインタ３０のフラグ３１が「無効」であるかどうかを判定する。フラグ３１が「無効」であれば、転送管理部２３は、ステップＳ６０５の処理を行う。一方、フラグ３１が「有効」であれば、転送管理部２３は、ステップＳ６１１の処理を行う。
【０１０４】
ステップＳ６０５において、転送管理部２３は、転送元ブロックポインタ３０を「転送元ブロック番号Ｓｔｍｐ」に変更する。転送管理部２３は、転送元ブロックポインタ３０のフラグ３１を「有効」に変更する。
【０１０５】
ステップＳ６０６において、転送管理部２３は、転送管理テーブル４０で「転送元ブロック番号Ｓｔｍｐ」と一致する転送元ブロック番号４１に対応する転送先ブロック番号４２を「転送先ブロック番号Ｄｔｍｐ」に変更する。
【０１０６】
ステップＳ６０７において、転送管理部２３は、「残り転送サイズ」がブロックサイズと一致するかどうかを判定する。一致していれば、転送管理部２３は、図１１の動作を終了する。一方、一致していなければ、転送管理部２３は、ステップＳ６０８の処理を行う。
【０１０７】
ステップＳ６０８において、転送管理部２３は、転送管理テーブル４０で「転送元ブロック番号Ｓｔｍｐ」と一致する転送元ブロック番号４１に対応するチェーンブロック番号４３を、現状値よりも１つ大きいブロック番号に変更する。
【０１０８】
ステップＳ６０９において、転送管理部２３は、「転送元ブロック番号Ｓｔｍｐ」を１つインクリメントする。
【０１０９】
ステップＳ６１０において、転送管理部２３は、「残り転送サイズ」をブロックサイズ分デクリメントする。そして、転送管理部２３は、再びステップＳ６０６の処理を行う。
【０１１０】
ステップＳ６１１において、転送管理部２３は、後述する転送管理テーブル検索の処理を行う。
【０１１１】
ステップＳ６１２において、転送管理部２３は、ステップＳ６１１の検索結果が「登録済」であるかどうかを判定する。検索結果が「登録済」であれば、転送管理部２３は、ステップＳ６１３の処理を行う。一方、検索結果が「未登録」であれば、転送管理部２３は、ステップＳ６１４の処理を行う。
【０１１２】
ステップＳ６１３において、転送管理部２３は、ＤＭＡ転送を実施する。ＤＭＡ転送の処理手順については、図８および図９に示した通りである。
【０１１３】
ステップＳ６１４において、転送管理部２３は、後述する転送管理テーブル４０の最終ブロック検索の処理を行う。
【０１１４】
ステップＳ６１５において、転送管理部２３は、転送管理テーブル４０で、ステップＳ６１４で取得された最終ブロック番号と一致する転送元ブロック番号４１に対応するチェーンブロック番号４３を「転送元ブロック番号Ｓｔｍｐ」に変更する。そして、転送管理部２３は、再びステップＳ６０６の処理を行う。
【０１１５】
図１２を参照して、ステップＳ６１１の転送管理テーブル検索の処理手順を説明する。
【０１１６】
ステップＳ７０１において、転送管理部２３は、検索結果を仮に「未登録」としておく。転送管理部２３は、変数である「検索対象ブロック番号Ｘｔｍｐ」に、ステップＳ６０２で算出したＤＭＡ転送元ブロック番号を代入する。転送管理部２３は、転送元検索フラグに「未検索」を示す値を設定する。
【０１１７】
ステップＳ７０２において、転送管理部２３は、変数である「非検索対象ブロック番号Ｙｔｍｐ」に、転送元ブロックポインタ３０の指す転送管理テーブル４０内の転送元ブロック番号４１と同じブロック番号を代入する。
【０１１８】
ステップＳ７０３において、転送管理部２３は、変数である「残り検索サイズ」に、ステップＳ６０１で設定されたＤＭＡ転送サイズを代入する。
【０１１９】
ステップＳ７０４において、転送管理部２３は、「検索対象ブロック番号Ｘｔｍｐ」と「非検索対象ブロック番号Ｙｔｍｐ」とが一致するかどうかを判定する。一致していなければ、転送管理部２３は、ステップＳ７０５の処理を行う。一方、一致していれば、転送管理部２３は、ステップＳ７０６の処理を行う。
【０１２０】
ステップＳ７０５において、転送管理部２３は、「検索対象ブロック番号Ｘｔｍｐ」と、「非検索対象ブロック番号Ｙｔｍｐ」と一致する転送元ブロック番号４１に対応する転送先ブロック番号４２とが一致するかどうかを判定する。一致していれば、転送管理部２３は、ステップＳ７０６の処理を行う。一方、一致していなければ、転送管理部２３は、ステップＳ７０７の処理を行う。
【０１２１】
ステップＳ７０６において、転送管理部２３は、検索結果を「登録済」として、図１２の動作を終了する。
【０１２２】
ステップＳ７０７において、転送管理部２３は、「検索対象ブロック番号Ｘｔｍｐ」と、「非検索対象ブロック番号Ｙｔｍｐ」と一致する転送元ブロック番号４１に対応するチェーンブロック番号４３とが一致するかどうかを判定する。一致していなければ、転送管理部２３は、ステップＳ７０８の処理を行う。一方、一致していれば、転送管理部２３は、ステップＳ７０９の処理を行う。
【０１２３】
ステップＳ７０８において、転送管理部２３は、「非検索対象ブロック番号Ｙｔｍｐ」を、「非検索対象ブロック番号Ｙｔｍｐ」と一致する転送元ブロック番号４１に対応するチェーンブロック番号４３と同じブロック番号に変更する。そして、転送管理部２３は、再びステップＳ７０４の処理を行う。
【０１２４】
ステップＳ７０９において、転送管理部２３は、「残り検索サイズ」をブロックサイズ分デクリメントする。
【０１２５】
ステップＳ７１０において、転送管理部２３は、「残り検索サイズ」が０であるかどうかを判定する。「残り検索サイズ」が０よりも大きければ、転送管理部２３は、ステップＳ７１１の処理を行う。一方、「残り検索サイズ」が０であれば、転送管理部２３は、ステップＳ７１２の処理を行う。
【０１２６】
ステップＳ７１１において、転送管理部２３は、「検索対象ブロック番号Ｘｔｍｐ」を１つインクリメントする。そして、転送管理部２３は、再びステップＳ７０２の処理を行う。
【０１２７】
ステップＳ７１２において、転送管理部２３は、転送元検索フラグが「未検索」であるかどうかを判定する。転送元検索フラグが「未検索」であれば、転送管理部２３は、ステップＳ７１３の処理を行う。一方、転送元検索フラグが「検索済」であれば、転送管理部２３は、検索結果を「未登録」としたまま、図１２の動作を終了する。
【０１２８】
ステップＳ７１３において、転送管理部２３は、転送元検索フラグを「検索済」を示す値に変更する。
【０１２９】
ステップＳ７１４において、転送管理部２３は、「検索対象ブロック番号Ｘｔｍｐ」に、ステップＳ６０２で算出したＤＭＡ転送先ブロック番号を代入する。
【０１３０】
図１３を参照して、ステップＳ６１４の転送管理テーブル４０の最終ブロック検索の処理手順を説明する。
【０１３１】
ステップＳ８０１において、転送管理部２３は、変数である「転送元ブロック番号Ｚｔｍｐ」に、転送元ブロックポインタ３０の指す転送管理テーブル４０内の転送元ブロック番号４１と同じブロック番号を代入する。
【０１３２】
ステップＳ８０２において、転送管理部２３は、「転送元ブロック番号Ｚｔｍｐ」と、「転送元ブロック番号Ｚｔｍｐ」と一致する転送元ブロック番号４１に対応するチェーンブロック番号４３とが一致するかどうかを判定する。一致していなければ、転送管理部２３は、ステップＳ８０３の処理を行う。一方、一致していれば、転送管理部２３は、ステップＳ８０４の処理を行う。
【０１３３】
ステップＳ８０３において、転送管理部２３は、「転送元ブロック番号Ｚｔｍｐ」に、「転送元ブロック番号Ｚｔｍｐ」と一致する転送元ブロック番号４１に対応するチェーンブロック番号４３を代入する。
【０１３４】
ステップＳ８０４において、転送管理部２３は、転送管理テーブル４０の最終ブロック番号として「転送元ブロック番号Ｚｔｍｐ」を取得し、図１３の動作を終了する。
【０１３５】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、メモリ制御装置１３がＤＭＡ転送対象のデータに対するプロセッサ１１からの参照要求を検出したときに、参照要求の対象データのＤＭＡ転送が未実施であれば、そのＤＭＡ転送の実施よりも先に、転送前のデータをプロセッサ１１に参照させる。そのため、ＤＭＡ転送による命令の実行待ちをなくし、プロセッサ１１の処理時間を短縮することができる。
【０１３６】
本実施の形態によれば、ＤＭＡ転送命令とその命令の後続命令との間に依存関係がある場合でも、後続命令は、先行するＤＭＡ転送命令の終了を待たずに実行可能である。つまり、メモリ１２内のデータを転送するＤＭＡ転送を実行する命令とその命令の後続命令との間に依存関係がある場合でも、ＤＭＡ転送を待たずに後続命令を実行して処理時間を短くすることができ、プロセッサ１１が行う処理の完了までの時間を短縮することができる。
【０１３７】
＊＊＊他の構成＊＊＊
本実施の形態の変形例として、メモリ制御装置１３に内蔵される構成要素のうち、１つ以上の構成要素がメモリ制御装置１３の外部に配置されてもよい。具体例として、ＤＭＡＣ２５がメモリ制御装置１３の外部に配置され、メモリ制御装置１３と電気的に接続されて転送管理部２３からの指令により動作してもよい。あるいは、アクセス制御部２４がメモリ制御装置１３の外部に配置され、メモリ制御装置１３と電気的に接続されて転送管理部２３からの指令により動作してもよい。いずれの例においても、メモリ制御装置１３は、ＤＭＡ転送を実施する機能を発揮することができる。
【０１３８】
別の変形例として、ＤＭＡＣ２５およびアクセス制御部２４の少なくともいずれかが転送管理部２３に内蔵されていてもよい。
【符号の説明】
【０１３９】
１０  計算機システム、１１  プロセッサ、１２  メモリ、１３  メモリ制御装置、１４  周辺バスブリッジ、１５  Ｉ／Ｏ機器、１６  システムバス、１７  メモリバス、１８  Ｉ／Ｏバス、２１  システムバスＩ／Ｆ、２２  アクセス検出部、２３  転送管理部、２４  アクセス制御部、２５  ＤＭＡＣ、３０  転送元ブロックポインタ、３１  フラグ、４０  転送管理テーブル、４１  転送元ブロック番号、４２  転送先ブロック番号、４３  チェーンブロック番号、４４  更新フラグ、５０  更新管理テーブル、５１  転送先ブロック番号、５２  テーブル有効フラグ、５３  更新データ用バッファ、５４  更新フラグ。
【図１】
2018120499.tif 000003
【図２】
2018120499.tif 000004
【図３】
2018120499.tif 000005
【図４】
2018120499.tif 000006
【図５】
2018120499.tif 000007
【図６】
2018120499.tif 000008
【図７】
2018120499.tif 000009
【図８】
2018120499.tif 000010
【図９】
2018120499.tif 000011
【図１０】
2018120499.tif 000012
【図１１】
2018120499.tif 000013
【図１２】
2018120499.tif 000014
【図１３】
2018120499.tif 000015
【手続補正書】
【提出日】平成29年12月12日(2017.12.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリの領域間でのデータ転送であるＤＭＡ転送を実施するメモリ制御装置において、
プロセッサからの要求を検出するアクセス検出部と、
前記メモリの指定アドレスにデータを書き込むライト要求が前記アクセス検出部により検出されたときに、前記指定アドレスを含む領域を転送先とする未実施のＤＭＡ転送がなければ、前記プロセッサから送信されたデータを前記指定アドレスに書き込み、前記未実施のＤＭＡ転送があれば、前記プロセッサから送信されたデータをバッファに書き込んだ後、前記指定アドレスへのデータ転送を除く前記未実施のＤＭＡ転送と、前記バッファから前記指定アドレスへのデータ転送とを実施する転送管理部と
を備えるメモリ制御装置。
【請求項２】
前記転送管理部は、前記ライト要求が前記アクセス検出部により検出されたときに、前記未実施のＤＭＡ転送があれば、前記バッファを確保し、前記バッファから前記指定アドレスへのデータ転送を実施した後、前記バッファを解放する請求項１に記載のメモリ制御装置。
【請求項３】
前記転送管理部は、前記未実施のＤＭＡ転送における転送先の領域を識別する番号と前記バッファの中で前記指定アドレスに転送されるデータが書き込まれた位置を示す情報とをそれぞれ転送先ブロック番号および更新情報として設定する更新管理テーブルを保持し、個々のＤＭＡ転送を実施する際に、前記個々のＤＭＡ転送における転送先の領域を識別する番号が転送先ブロック番号として前記更新管理テーブルに設定されていれば、その転送先ブロック番号に対応する更新情報を前記更新管理テーブルから取得し、前記指定アドレスへのデータ転送を除く前記個々のＤＭＡ転送と、前記バッファの中で、取得した更新情報に示された位置から前記指定アドレスへのデータ転送とを実施する請求項１または２に記載のメモリ制御装置。
【請求項４】
請求項１から３のいずれか１項に記載のメモリ制御装置と、
前記メモリと、
前記プロセッサと
を備える計算機システム。