JP2018005655A - メモリコントローラおよびメモリアクセス方法 - Google Patents

メモリコントローラおよびメモリアクセス方法 Download PDF

Info

Publication number
JP2018005655A
JP2018005655A JP2016133238A JP2016133238A JP2018005655A JP 2018005655 A JP2018005655 A JP 2018005655A JP 2016133238 A JP2016133238 A JP 2016133238A JP 2016133238 A JP2016133238 A JP 2016133238A JP 2018005655 A JP2018005655 A JP 2018005655A
Authority
JP
Japan
Prior art keywords
unit
data
memory
buffer
buffer unit
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.)
Pending
Application number
JP2016133238A
Other languages
English (en)
Inventor
鈴木 康介
Kosuke Suzuki
康介 鈴木
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 JP2016133238A priority Critical patent/JP2018005655A/ja
Priority to US15/600,931 priority patent/US20180011636A1/en
Publication of JP2018005655A publication Critical patent/JP2018005655A/ja
Pending legal-status Critical Current

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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】 演算処理装置からメモリコントローラへのデータ転送の待機時間の増加を抑制する。
【解決手段】 メモリコントローラは、不揮発性メモリに書き込むデータを保持する不揮発性のバッファ部と、バッファ部に格納するデータの格納位置を示す入力ポインタとバッファ部から読み出すデータの読み出し位置を示す出力ポインタとを保持する不揮発性のポインタ保持部と、演算処理装置から受信したデータをバッファ部における入力ポインタが示す格納位置に格納し、演算処理装置から受信した順序制限命令により指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を、バッファ部への先行データの格納が完了した場合に演算処理装置に通知する受信処理部と、バッファ部に格納されたデータを出力ポインタが示す読み出し位置から読み出して不揮発性メモリに書き込むメモリアクセス部とを有する。
【選択図】 図1

Description

本発明は、メモリコントローラおよびメモリアクセス方法に関する。
メモリは、電力の供給がなくてもデータを保持するフラッシュメモリ等の不揮発性メモリと、データを保持するために電力の供給が必要なDRAM(Dynamic Random Access Memory)等の揮発性メモリとに大別される。例えば、フラッシュメモリへのデータの書き込み速度は、フラッシュメモリが接続されるホスト装置の動作速度に比べて、遅い。このため、フラッシュメモリを制御するコントローラは、SRAM(Static Random Access Memory)等のバッファメモリを有する(例えば、特許文献1参照)。この種のコントローラは、ホスト装置から受信したデータをバッファメモリに保持し、バッファメモリに保持したデータをフラッシュメモリに書き込む。
特開2007−293898号公報
近年、MRAM(Magnetoresistive Random Access Memory)、PCM(Phase Change Memory)、ReRAM(Resistive Random Access Memory)等のストレージクラスメモリと呼ばれる不揮発性メモリが登場している。以下、ストレージクラスメモリは、SCM(Storage Class Memory)とも称される。SCMでは、バイト単位のアクセスが可能であり、従来の不揮発性メモリに比べて高速にアクセスすることができる。
このため、例えば、コンピュータに搭載されるCPU(Central Processing Unit)等の演算処理装置の主記憶装置として、不揮発性メモリと、DRAM等の揮発性メモリとを併用し、コンピュータの性能を向上させることが検討されている。不揮発性メモリを含む主記憶装置と演算処理装置との間のデータ転送は、メモリコントローラにより制御される。
ここで、例えば、主記憶装置として不揮発性メモリを使用することが想定されていないコンピュータアーキテクチャでは、不揮発性メモリへのデータの書き込み順を制限する仕組みがない。このため、不揮発性メモリへのデータの書き込み順がメモリコントローラ内で入れ替わるおそれがある。例えば、主記憶装置へのデータの書き込み順を制限することにより正常に動作するプログラムをコンピュータが実行した場合、書き込み順を制限したデータの不揮発性メモリへの書き込み順が入れ替わると、プログラムは正常に動作しない。また、例えば、不揮発性メモリへのデータの順番を入れ替えた書き込み処理を実行中にコンピュータがクラッシュした場合、不揮発性メモリに正しいデータが書き込まれないおそれがある。
このため、メモリコントローラから不揮発性メモリにデータを書き込む順番を制限する命令を追加したアーキテクチャが検討されている。この種のアーキテクチャでは、演算処理装置は、不揮発性メモリへのデータの書き込み順を制限する命令を発行した後、主記憶装置に書き込むデータのメモリコントローラへの転送を、不揮発性メモリへのデータ書き込みが完了するまで待機する。演算処理装置からメモリコントローラへのデータ転送の待機時間が増加すると、コンピュータの処理性能が低下する。例えば、演算処理装置の待機時間の増加に伴い、演算処理装置によるプログラムの処理時間が増加する。
1つの側面では、本件開示のメモリコントローラおよびメモリアクセス方法は、演算処理装置からメモリコントローラへのデータ転送の待機時間の増加を抑制することを目的とする。
一観点によれば、不揮発性メモリを含むメモリ部を制御するメモリコントローラは、不揮発性メモリに書き込むデータを保持する不揮発性の第1バッファ部と、第1バッファ部に格納するデータの格納位置を示す入力ポインタと第1バッファ部から読み出すデータの読み出し位置を示す出力ポインタとを保持する不揮発性のポインタ保持部と、不揮発性メモリに書き込むデータを演算処理装置から受信した場合、演算処理装置から受信したデータを第1バッファ部における入力ポインタが示す格納位置に格納し、メモリ部にデータを書き込むライト命令の実行順の制限を指示する順序制限命令を演算処理装置から受信した場合、順序制限命令より前に演算処理装置から転送された先行データが第1バッファ部に格納されたかを判定し、第1バッファ部への先行データの格納が完了した場合に、順序制限命令により指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を演算処理装置に通知する受信処理部と、第1バッファ部に格納されたデータを出力ポインタが示す読み出し位置から読み出し、第1バッファ部から読み出したデータを不揮発性メモリに書き込むメモリアクセス部とを有する。
別の観点によれば、メモリコントローラによる不揮発性メモリを含むメモリ部のメモリアクセス方法では、メモリコントローラが有する不揮発性のポインタ保持部は、メモリコントローラが有する不揮発性の第1バッファ部に格納するデータの格納位置を示す入力ポインタと第1バッファ部から読み出すデータの読み出し位置を示す出力ポインタとを保持し、メモリコントローラが有する受信処理部は、不揮発性メモリに書き込むデータを演算処理装置から受信した場合、演算処理装置から受信したデータを第1バッファ部における入力ポインタが示す格納位置に格納し、メモリ部にデータを書き込むライト命令の実行順の制限を指示する順序制限命令を演算処理装置から受信した場合、順序制限命令より前に演算処理装置から転送された先行データが第1バッファ部に格納されたかを判定し、第1バッファ部への先行データの格納が完了した場合に、順序制限命令により指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を演算処理装置に通知し、メモリコントローラが有するメモリアクセス部は、第1バッファ部に格納されたデータを出力ポインタが示す読み出し位置から読み出し、第1バッファ部から読み出したデータを不揮発性メモリに書き込む。
本件開示のメモリコントローラおよびメモリアクセス方法は、演算処理装置からメモリコントローラへのデータ転送の待機時間の増加を抑制できる。
メモリコントローラおよびメモリアクセス方法の一実施形態を示す図である。 メモリコントローラおよびメモリアクセス方法の別の実施形態を示す図である。 図2に示した受信処理部の一例を示す図である。 図2に示したポインタの更新の一例を示す図である。 図2に示した第1制御部および第1スイッチ部の動作の一例を示す図である。 図2に示した第2スイッチ部の動作の一例を示す図である。 図2に示したメモリコントローラが搭載される情報処理装置によるデータ更新の一例を示す図である。 図2に示したメモリコントローラが搭載される情報処理装置の動作の一例を示す図である。 メモリコントローラおよびメモリアクセス方法の別の実施形態を示す図である。 図9に示した第2スイッチ部および第2制御部の動作の一例を示す図である。 メモリコントローラおよびメモリアクセス方法の別の実施形態を示す図である。
以下、実施形態について、図面を用いて説明する。図1は、メモリコントローラおよびメモリアクセス方法の一実施形態を示す。図1に示すメモリコントローラMCLaは、不揮発性メモリMEM1を含むメモリ部MMEMを制御する。メモリ部MMEMは、CPU等の演算処理装置PUの主記憶装置である。以下、メモリ部MMEMは、主記憶装置MMEMとも称される。すなわち、不揮発性メモリMEM1は、演算処理装置PUの主記憶装置として使用される不揮発性メモリデバイス(NVDIMM:Non-Volatile Dual In-line Memory Module)である。例えば、コンピュータ等の情報処理装置IPEaは、メモリコントローラMCLa、演算処理装置PUおよび主記憶装置MMEMを有する。メモリコントローラMCLaは、バスMBUSを介して不揮発性メモリMEM1に接続され、演算処理装置PUと不揮発性メモリMEM1との間のデータ転送を制御する。
例えば、メモリコントローラMCLaは、命令SFEN等の命令を含む要求情報REQを演算処理装置PUから受信する。命令SFENは、主記憶装置MMEMにデータを書き込むライト命令の実行順の制限を指示する順序制限命令であり、メモリバリアまたはメモリフェンスと呼ばれる命令の1種である。以下、命令SFENは、フェンス命令SFENとも称される。例えば、演算処理装置PUは、フェンス命令SFENを発行した後、フェンス命令SFENに基づく処理の完了を示す完了情報を受信するまで、ライト命令の発行を停止する。フェンス命令SFENを含む要求情報REQを演算処理装置PUから受信した場合のメモリコントローラMCLaの動作は、後述する受信処理部RPUaの動作を説明する際に説明する。
演算処理装置PUがライト命令を発行した場合、メモリコントローラMCLaは、ライト命令、書き込み対象のデータおよびアドレスを含む要求情報REQを演算処理装置PUから受信する。そして、メモリコントローラMCLaは、演算処理装置PUから受信した要求情報REQに含まれるライト命令およびアドレス等に基づいて、要求情報REQに含まれるデータを主記憶装置MMEMに書き込む。アドレスは、例えば、主記憶装置MMEMの記憶領域を示す物理アドレスである。
また、主記憶装置MMEMからデータを読み出すリード命令を演算処理装置PUが発行した場合、メモリコントローラMCLaは、リード命令およびアドレスを含む要求情報REQを演算処理装置PUから受信する。そして、メモリコントローラMCLaは、演算処理装置PUから受信した要求情報REQに含まれるリード命令およびアドレス等に基づいて、読み出し対象のデータを主記憶装置MMEMから読み出し、読み出したデータを演算処理装置PUに出力する。
メモリコントローラMCLaは、第1バッファ部BUF1、ポインタ保持部PMEM、受信処理部RPUaおよびメモリアクセス部MAUaを有する。以下、第1バッファ部BUF1は、バッファ部BUF1とも称される。
バッファ部BUF1は、例えば、演算処理装置PUから転送される要求情報REQのうち、不揮発性メモリMEM1に書き込むデータを含む要求情報REQを保持する不揮発性のバッファである。すなわち、バッファ部BUF1は、不揮発性メモリMEM1に書き込むデータを保持する。
ポインタ保持部PMEMは、バッファ部BUF1へのアクセスに使用するポインタPT(PTI、PTO)を保持する不揮発性のメモリである。ポインタPTIは、バッファ部BUF1に格納するデータの格納位置を示す入力ポインタである。ポインタPTOは、バッファ部BUF1から読み出すデータの読み出し位置を示す出力ポインタである。
受信処理部RPUaは、演算処理装置PUから要求情報REQを受信する。例えば、受信処理部RPUaは、不揮発性メモリMEM1に書き込むデータを含む要求情報REQを演算処理装置PUから受信した場合、演算処理装置PUから受信した要求情報REQを入力ポインタPTIを参照してバッファ部BUF1に格納する。このように、受信処理部RPUaは、不揮発性メモリMEM1に書き込むデータをバッファ部BUF1に格納する際、入力ポインタPTIが示す格納位置にデータを格納する。なお、入力ポインタPTIは、例えば、要求情報REQがバッファ部BUF1に格納された後に更新される。
また、受信処理部RPUaは、フェンス命令SFENを演算処理装置PUから受信した場合、フェンス命令SFENより前に演算処理装置PUから転送された先行データがバッファ部BUF1に格納されたかを判定する。そして、受信処理部RPUaは、バッファ部BUF1への先行データの格納が完了した場合に、フェンス命令SFENにより指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を演算処理装置PUに通知する。これにより、演算処理装置PUは、ライト命令の発行を再開する。以下、フェンス命令SFENにより指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を演算処理装置PUに通知することは、フェンス命令SFENを解除するとも称される。
メモリアクセス部MAUaは、バッファ部BUF1に格納されたデータを出力ポインタPTOが示す読み出し位置から読み出し、バッファ部BUF1から読み出したデータを不揮発性メモリMEM1に書き込む。例えば、メモリアクセス部MAUaは、データ等を含む要求情報REQの読み出し位置を出力ポインタPTOを参照して特定し、要求情報REQをバッファ部BUF1の特定した読み出し位置から読み出す。そして、メモリアクセス部MAUaは、バッファ部BUF1から読み出した要求情報REQに基づいて不揮発性メモリMEM1に命令を発行し、要求情報REQに含まれるデータを不揮発性メモリMEM1に書き込む。なお、出力ポインタPTOは、例えば、要求情報REQに含まれるデータが不揮発性メモリMEM1に書き込まれた後に更新される。
すなわち、データが不揮発性メモリMEM1に書き込まれた後に、次のデータがバッファ部BUF1から読み出される。したがって、データの不揮発性メモリMEM1への書き込みは、データがバッファ部BUF1に格納された順に、実行される。これにより、フェンス命令SFENに先行する先行データのバッファ部BUF1への格納が完了した場合にフェンス命令SFENを解除しても、データの不揮発性メモリMEM1への書き込みは、演算処理装置PUからデータを受信した順に実行される。
このように、メモリコントローラMCLaは、フェンス命令SFENに先行する先行データのバッファ部BUF1への格納が完了した場合にフェンス命令SFENを解除する。したがって、メモリコントローラMCLaは、先行データの不揮発性メモリMEM1への書き込みが完了するまでライト命令の発行を待機する構成に比べて、ライト命令の発行を再開するタイミングを早くできる。この結果、演算処理装置PUからメモリコントローラMCLaへのデータ転送の待機時間を低減することができる。これにより、メモリコントローラMCLaは、演算処理装置PUによるプログラムの処理時間が増加することを抑制できる。なお、メモリコントローラMCLaの構成は、図1に示す例に限定されない。
以上、図1に示す実施形態では、不揮発性のバッファ部BUF1は、不揮発性メモリMEM1に書き込むデータを保持し、不揮発性のポインタ保持部PMEMは、バッファ部BUF1の入力ポインタPTIおよび出力ポインタPTOを保持する。そして、受信処理部RPUaは、不揮発性メモリMEM1に書き込むデータを演算処理装置PUから受信した場合、演算処理装置PUから受信したデータをバッファ部BUF1における入力ポインタPTIが示す格納位置に格納する。また、受信処理部RPUaは、フェンス命令SFENを演算処理装置PUから受信した場合、フェンス命令SFENに先行する先行データがバッファ部BUF1に格納されたかを判定する。そして、受信処理部RPUaは、バッファ部BUF1への先行データの格納が完了した場合に、フェンス命令SFENにより指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を演算処理装置PUに通知する。
このように、メモリコントローラMCLaは、フェンス命令SFENの解除を先行データの不揮発性メモリMEM1への書き込みが完了するまで待機せずに実行する。このため、メモリコントローラMCLaでは、先行データの不揮発性メモリMEM1への書き込みが完了した場合にフェンス命令SFENが解除される構成に比べて、演算処理装置PUがライト命令等の発行を再開するまでの待機時間を短くすることができる。すなわち、メモリコントローラMCLaは、演算処理装置PUからメモリコントローラMCLaへのデータ転送の待機時間の増加を抑制できる。
図2は、メモリコントローラおよびメモリアクセス方法の別の実施形態を示す。図1で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図2に示すメモリコントローラMCLbは、不揮発性メモリMEM1および揮発性メモリMEM2を含む主記憶装置MMEMを制御する。例えば、メモリコントローラMCLbは、図1に示した受信処理部RPUaおよびメモリアクセス部MAUaの代わりに、受信処理部RPUbおよびメモリアクセス部MAUbを有する。さらに、メモリコントローラMCLbでは、第2バッファ部BUF2、レジスタREGおよびメモリ読み出し部MRUが図1に示したメモリコントローラMCLaに追加される。メモリコントローラMCLbのその他の構成は、図1に示したメモリコントローラMCLaと同一または同様である。例えば、情報処理装置IPEbは、メモリコントローラMCLb、演算処理装置PUおよび主記憶装置MMEMを有する。メモリコントローラMCLbは、不揮発性メモリMEM1および揮発性メモリMEM2にバスMBUSを介して接続され、不揮発性メモリMEM1および揮発性メモリMEM2を含む主記憶装置MMEMと演算処理装置PUとの間のデータ転送を制御する。
メモリコントローラMCLbは、第1バッファ部BUF1、第2バッファ部BUF2、ポインタ保持部PMEM、受信処理部RPUb、メモリアクセス部MAUb、レジスタREGおよびメモリ読み出し部MRUを有する。以下、第2バッファ部BUF2は、バッファ部BUF2とも称される。
バッファ部BUF1は、図1に示したバッファ部BUF1と同一または同様である。例えば、バッファ部BUF1は、演算処理装置PUから転送されるデータのうち、不揮発性メモリMEM1に書き込むデータを保持する不揮発性のバッファである。
バッファ部BUF2は、例えば、演算処理装置PUから転送される要求情報REQのうち、第1バッファ部BUF1に保持されない要求情報REQを保持する揮発性のバッファである。例えば、第2バッファ部BUF2は、演算処理装置PUから転送されるデータのうち、揮発性メモリMEM2に書き込むデータを保持する。
受信処理部RPUbは、第1スイッチ部SW1および第1制御部CL1を有する。以下、第1スイッチ部SW1および第1制御部CL1は、スイッチ部SW1および制御部CL1ともそれぞれ称される。
スイッチ部SW1は、演算処理装置PUから受信したデータの書き込み先のメモリに対応するバッファ部BUF1、BUF2のいずれかにデータを出力する。なお、スイッチ部SW1は、制御部CL1の制御により、演算処理装置PUから受信したデータの書き込み先に応じてデータの出力先がバッファ部BUF1、BUF2のいずれかに設定される。例えば、スイッチ部SW1は、出力先がバッファ部BUF1に設定されている場合、演算処理装置PUから受信した要求情報REQを、入力ポインタPTIが示す格納位置に格納する。これにより、要求情報REQに含まれるデータは、入力ポインタPTIが示す格納位置に格納される。そして、例えば、スイッチ部SW1は、要求情報REQをバッファ部BUF1に格納した後に、入力ポインタPTIを更新する。また、スイッチ部SW1は、出力先がバッファ部BUF2に設定されている場合、演算処理装置PUから受信した要求情報REQをバッファ部BUF2に格納する。
制御部CL1は、演算処理装置PUからスイッチ部SW1に転送される要求情報REQに含まれる情報のうち、命令およびアドレスを受信する。そして、制御部CL1は、不揮発性メモリMEM1にデータを書き込むライト命令を演算処理装置PUから受信した場合、スイッチ部SW1の出力先をバッファ部BUF1に設定する。例えば、制御部CL1は、演算処理装置PUから受信したアドレスが不揮発性メモリMEM1に割り当てられたアドレスであり、かつ、演算処理装置PUから受信した命令がライト命令である場合、スイッチ部SW1の出力先をバッファ部BUF1に設定する。なお、制御部CL1は、演算処理装置PUから受信したアドレスが揮発性メモリMEM2のアドレスである場合、または、演算処理装置PUから受信した命令がライト命令以外である場合、スイッチ部SW1の出力先をバッファ部BUF2に設定する。
また、制御部CL1は、フェンス命令SFENを演算処理装置PUから受信した場合、フェンス命令SFENに先行する先行データがバッファ部BUF1、BUF2のいずれかに格納されたかを判定する。そして、制御部CL1は、バッファ部BUF1、BUF2のいずれかへの先行データの格納が完了した場合に、フェンス命令SFENにより指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を演算処理装置PUに通知する。ポインタ保持部PMEMは、図1に示したポインタ保持部PMEMと同一または同様である。
メモリアクセス部MAUbは、第2スイッチ部SW2bおよびアクセス処理部ACPを有する。以下、第2スイッチ部SW2bは、スイッチ部SW2bとも称される。スイッチ部SW2bは、バッファ部BUF1にアクセス可能な第1状態に設定された場合、バッファ部BUF1に格納されたデータを出力ポインタPTOが示す読み出し位置から読み出す。また、スイッチ部SW2bは、バッファ部BUF2にアクセス可能な第2状態に設定された場合、バッファ部BUF2に格納されたデータを読み出す。例えば、スイッチ部SW2bは、第1状態と第2状態とをアクセス毎に交互に選択する。
アクセス処理部ACPは、バッファ部BUF1からスイッチ部SW2bを介して転送されたデータを不揮発性メモリMEM1に書き込み、バッファ部BUF2からスイッチ部SW2bを介して転送されたデータを揮発性メモリMEM2に書き込む。例えば、アクセス処理部ACPは、メモリマッピング部MMAP、調停部ARBおよびコマンド生成部CGENを有する。
メモリマッピング部MMAPは、演算処理装置PUからスイッチ部SW2b等を介して転送されたアドレスを、不揮発性メモリMEM1および揮発性メモリMEM2のうちのアクセス先のメモリのアドレスに変換する。例えば、メモリマッピング部MMAPは、バッファ部BUF1から読み出されたアドレスを不揮発性メモリMEM1のアドレスに変換し、バッファ部BUF2から読み出されたアドレスを揮発性メモリMEM2のアドレスに変換する。調停部ARBは、演算処理装置PUからスイッチ部SW2b等を介して転送された命令のスケジューリングを実行する。
コマンド生成部CGENは、演算処理装置PUから調停部ARB等を介して転送された命令を、不揮発性メモリMEM1および揮発性メモリMEM2のうちのアクセス先のメモリの命令に変換し、変換した命令をアクセス先のメモリに出力する。例えば、コマンド生成部CGENは、バッファ部BUF1から読み出された命令を不揮発性メモリMEM1の命令に変換し、バッファ部BUF2から読み出されたアドレスを揮発性メモリMEM2の命令に変換する。
メモリ読み出し部MRUは、リード命令で要求された読み出し対象のデータを主記憶装置MMEM等から受信し、受信したデータを演算処理装置PUに転送する。すなわち、メモリ読み出し部MRUは、不揮発性メモリMEM1および揮発性メモリMEM2からデータを受信し、受信したデータを演算処理装置PUに転送する。
レジスタREGは、アクセス処理部ACPから出力されたデータ等を順次保持する。これにより、メモリコントローラMCLbは、リード命令で要求された読み出し対象のデータが主記憶装置MMEMに書き込まれている最中(書き込みが完了していない状態)でも、読み出し対象のデータをレジスタREGからメモリ読み出し部MRUに転送できる。なお、メモリコントローラMCLbの構成は、図2に示す例に限定されない。
図3は、図2に示した受信処理部RPUbの一例を示す。なお、受信処理部RPUbの構成は、図3に示す例に限定されない。
受信処理部RPUbは、図2で説明したように、スイッチ部SW1および制御部CL1を有する。スイッチ部SW1は、データ、アドレスおよび命令等を含む要求情報REQを受信する。なお、命令の種類によっては、要求情報REQは、データ等を含まない場合もある。また、ライト命令は、例えば、フェンス命令SFENの対象であることを示すフェンス命令SFEN用のフラグを有する。例えば、フェンス命令SFENの対象であるライト命令では、フェンス命令SFEN用のフラグは、論理値”1”にセットされる。
制御部CL1は、例えば、不揮発性メモリMEM1に割り当てられたアドレスを記憶するレジスタAREGと、フェンス命令SFEN用のテーブルTABLとを有する。テーブルTABLは、ライト命令を識別するためのライト識別子WIDと、ライト命令で要求された書き込み対象のデータがバッファ部BUF1に格納された場合に論理値”1”にセットされる格納完了フラグSFLGとを有する。以下、ライト識別子WIDおよび格納完了フラグSFLGは、識別子WIDおよびフラグSFLGとも称される。
制御部CL1は、スイッチ部SW1が受信する要求情報REQに含まれる情報のうち、アドレスおよび命令を受信する。例えば、制御部CL1は、演算処理装置PUから受信したアドレスをレジスタAREGに記憶されたアドレスと比較し、演算処理装置PUから受信したアドレスが不揮発性メモリMEM1に割り当てられたアドレスであるか否かを判定する。また、制御部CL1は、演算処理装置PUから受信した命令がライト命令であるか否かを判定する。そして、制御部CL1は、演算処理装置PUから受信したアドレスが不揮発性メモリMEM1に割り当てられたアドレスであり、かつ、演算処理装置PUから受信した命令がライト命令である場合、スイッチ部SW1の出力先をバッファ部BUF1に設定する。なお、初期状態では、スイッチ部SW1の出力先は、例えば、バッファ部BUF2に設定されている。
また、制御部CL1は、フェンス命令SFEN用のフラグが論理値”1”にセットされたライト命令を受信した場合、受信した命令をテーブルTABLに登録する。これにより、フェンス命令SFENの対象となるライト命令の識別子WIDがテーブルTABLに記憶されるとともに、識別子WIDに対応するフラグSFLGが論理値”0”にリセットされる。そして、制御部CL1は、ライト命令で要求された書き込み対象のデータのバッファ部BUF1、BUF2のいずれかへの格納が完了した場合、格納が完了したライト命令に対応するフラグSFLGを論理値”1”にセットする。
図4は、図2に示したポインタPTI、PTOの更新の一例を示す。図4に示す符号P(P0−P7)は、バッファ部BUF1内の格納領域の位置を示す。図4に示す濃い網掛けの格納領域は、要求情報REQが格納されたことを示し、薄い網掛けの格納領域は、要求情報REQを格納中であることを示す。また、図4に示す太枠の格納領域は、データが不揮発性メモリMEM1に書き込まれたことを示し、破線で囲んだ格納領域は、データを不揮発性メモリMEM1に書き込み中であることを示す。先ず、入力ポインタPTIの更新について説明する。
演算処理装置PUから受信する要求情報REQをバッファ部BUF1に格納する前では、入力ポインタPTIは、格納位置として位置P4を示している(図4の(a1))。このため、スイッチ部SW1は、演算処理装置PUから受信した要求情報REQを、入力ポインタPTIが示す位置P4に格納する。バッファ部BUF1への要求情報REQの格納が開始されても、バッファ部BUF1への要求情報REQの格納が完了するまで、入力ポインタPTIは、更新されない。したがって、要求情報REQの格納中では、入力ポインタPTIが示す格納位置は、位置P4に維持される(図4の(a2))。バッファ部BUF1への要求情報REQの格納が完了した後、入力ポインタPTIが示す格納位置は、位置P5に更新される(図4の(a3))。この順番を守って入力ポインタPTIを更新することにより、不揮発性メモリMEM1へのデータの書き込み順の一貫性が維持される。次に、出力ポインタPTOの更新について説明する。
演算処理装置PUから受信したデータをバッファ部BUF1から読み出す前では、出力ポインタPTOは、読み出し位置として位置P1を示している(図4の(b1))。このため、スイッチ部SW2bは、不揮発性メモリMEM1に書き込むデータを、出力ポインタPTOが示す位置P1から読み出す。バッファ部BUF1からデータが読み出されても、不揮発性メモリMEM1へのデータの書き込みが完了するまで、出力ポインタPTOは、更新されない。したがって、不揮発性メモリMEM1へのデータの書き込み中では、出力ポインタPTOが示す読み出し位置は、位置P1に維持される(図4の(b2))。不揮発性メモリMEM1へのデータの書き込みが完了した後、出力ポインタPTOが示す読み出し位置は、位置P2に更新される(図4の(b3))。この順番を守って出力ポインタPTOを更新することにより、不揮発性メモリMEM1へのデータの書き込み順の一貫性が維持される。すなわち、メモリコントローラMCLbは、入力ポインタPTIおよび出力ポインタPTOの更新を図4に示す順番を守って実行することにより、不揮発性メモリMEM1へのデータの書き込み順の一貫性を保証する。
図5は、図2に示した第1制御部CL1および第1スイッチ部SW1の動作の一例を示す。なお、図5に示す動作は、要求情報REQをバッファ部BUF1、BUF2のいずれかに格納する際のメモリコントローラMCLbの動作である。また、図5に示す例では、不揮発性メモリMEM1にデータを書き込むライト命令は、フェンス命令SFEN用のフラグが論理値”1”にセットされて、演算処理装置PUからメモリコントローラMCLbに転送される。
ステップS100では、スイッチ部SW1は、演算処理装置PUから要求情報REQを受信し、制御部CL1は、スイッチ部SW1が受信する要求情報REQに含まれる情報のうち、アドレスおよび命令を取得する。
次に、ステップS110では、制御部CL1は、ステップS100で取得した命令がフェンス命令SFENであるか否かを判定する。ステップS100で取得した命令がフェンス命令SFENである場合、メモリコントローラMCLbの動作は、ステップS250に移る。一方、ステップS100で取得した命令がフェンス命令SFENでない場合、メモリコントローラMCLbの動作は、ステップS120に移る。
ステップS120では、制御部CL1は、ステップS100で取得したアドレスが不揮発性メモリMEM1に割り当てられたアドレスであるか否かを判定する。ステップS100で取得したアドレスが不揮発性メモリMEM1に割り当てられたアドレスである場合、メモリコントローラMCLbの動作は、ステップS130に移る。一方、ステップS100で取得したアドレスが不揮発性メモリMEM1に割り当てられたアドレスでない場合、メモリコントローラMCLbの動作は、ステップS200に移る。
ステップS130では、制御部CL1は、ステップS100で取得した命令がライト命令であるか否かを判定する。ステップS100で取得した命令がライト命令である場合、メモリコントローラMCLbの動作は、ステップS140に移る。一方、ステップS100で取得した命令がライト命令でない場合、メモリコントローラMCLbの動作は、ステップS200に移る。
ステップS140では、制御部CL1は、スイッチ部SW1の出力先として、バッファ部BUF1を選択する。すなわち、制御部CL1は、スイッチ部SW1の出力先をバッファ部BUF1に設定する。
次に、ステップS150では、制御部CL1は、ステップS100で取得した命令をテーブルTABLに登録する。
次に、ステップS160では、スイッチ部SW1は、入力ポインタPTIを参照して、格納位置を特定する。
次に、ステップS170では、スイッチ部SW1は、バッファ部BUF1の格納領域のうち、入力ポインタPTIが示す格納位置に、演算処理装置PUから受信した要求情報REQを格納する。すなわち、スイッチ部SW1は、ステップS100で受信した要求情報REQを、ステップS160で特定した格納位置に格納する。バッファ部BUF1への要求情報REQの格納が完了した後、ステップS180の処理が実行される。
ステップS180では、スイッチ部SW1は、入力ポインタPTIを更新する。このように、スイッチ部SW1は、要求情報REQをバッファ部BUF1に格納した後に、入力ポインタPTIを更新する。ステップS180の処理が実行された後、メモリコントローラMCLbの動作は、ステップS190に移る。
ステップS190では、制御部CL1は、バッファ部BUF1、BUF2のいずれかへのデータの格納が完了したライト命令に対応するフラグSFLGを論理値”1”にセットする。例えば、メモリコントローラMCLbの動作がステップS170を経由してステップS190に移った場合、制御部CL1は、ステップS150でテーブルTABLに登録したライト命令に対応するフラグSFLGを論理値”1”にセットする。また、メモリコントローラMCLbの動作が後述するステップS230を経由してステップS190に移った場合、制御部CL1は、後述するステップS220でテーブルTABLに登録したライト命令に対応するフラグSFLGを論理値”1”にセットする。なお、フラグSFLGの更新は、スイッチ部SW1により実行されてもよい。ステップS190の処理が実行された後、メモリコントローラMCLbの動作は、ステップS100に戻る。
ステップS200では、制御部CL1は、スイッチ部SW1の出力先として、バッファ部BUF2を選択する。すなわち、制御部CL1は、スイッチ部SW1の出力先をバッファ部BUF2に設定する。
次に、ステップS210では、制御部CL1は、ステップS100で取得した命令がフェンス命令SFENの対象であるか否かを判定する。例えば、ステップS100で取得した命令に含まれるフェンス命令SFEN用のフラグが論理値”1”にセットされているか否かを判定する。ステップS100で取得した命令がフェンス命令SFENの対象である場合、メモリコントローラMCLbの動作は、ステップS220に移る。一方、ステップS100で取得した命令がフェンス命令SFENの対象でない場合、メモリコントローラMCLbの動作は、ステップS240に移る。
ステップS220では、制御部CL1は、ステップS100で取得した命令をテーブルTABLに登録する。
次に、ステップS230では、スイッチ部SW1は、演算処理装置PUから受信した要求情報REQをバッファ部BUF2に格納する。すなわち、スイッチ部SW1は、ステップS100で受信した要求情報REQをバッファ部BUF2に格納する。ステップS230の処理が実行され、バッファ部BUF2への要求情報REQの格納が完了した後、メモリコントローラMCLbの動作は、ステップS190に移る。
ステップS240では、スイッチ部SW1は、演算処理装置PUから受信した要求情報REQをバッファ部BUF2に格納する。すなわち、スイッチ部SW1は、ステップS100で受信した要求情報REQをバッファ部BUF2に格納する。ステップS240の処理が実行された後、メモリコントローラMCLbの動作は、ステップS100に戻る。
ステップS250では、制御部CL1は、ステップS150、S220等でテーブルTABLに登録されたライト命令に対応するフラグSFLGが全て論理値”1”にセットされたか否かを判定する。すなわち、制御部CL1は、フェンス命令SFENを受信する前に受信したデータのうち、フェンス命令SFENの対象となる全てのデータがバッファ部BUF1、BUF2のいずれかに格納されたか否かを判定する。判定対象のフラグSFLGが全て論理値”1”にセットされた場合、メモリコントローラMCLbの動作は、ステップS260に移る。
一方、判定対象のフラグSFLGのいずれかが論理値”1”にセットされていない場合、すなわち、判定対象のフラグSFLGのいずれかが論理値”0”の場合、メモリコントローラMCLbの動作は、ステップS250に戻る。すなわち、メモリコントローラMCLbは、判定対象のフラグSFLGが全て論理値”1”にセットされるまで、ステップS260の処理を実行せずに待機する。
ステップS260では、制御部CL1は、フェンス命令SFENを解除する。例えば、制御部CL1は、フェンス命令SFENにより指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を演算処理装置PUに通知する。これにより、演算処理装置PUは、フェンス命令SFENに基づいて停止していたライト命令の発行を再開する。ステップS260の処理が実行された後、メモリコントローラMCLbの動作は、ステップS100に戻る。
このように、メモリコントローラMCLbは、フェンス命令SFENを演算処理装置PUから受信した場合、フェンス命令SFENの対象となる先行データがバッファ部BUF1、BUF2のいずれかに全て格納されたかを判定する。そして、メモリコントローラMCLbは、フェンス命令SFENの対象となる先行データがバッファ部BUF1、BUF2のいずれかに全て格納された場合に、フェンス命令SFENを解除する。なお、制御部CL1およびスイッチ部SW1の動作は、図5に示す例に限定されない。
図6は、図2に示した第2スイッチ部SW2bの動作の一例を示す。なお、図6に示す動作は、バッファ部BUF1、BUF2のいずれかから要求情報REQを読み出す際のメモリコントローラMCLbの動作である。
ステップS400では、スイッチ部SW2bは、バッファ部BUF1にアクセス可能な第1状態に設定されているか否かを判定する。バッファ部BUF1にアクセス可能な第1状態に設定されている場合、メモリコントローラMCLbの動作は、ステップS410に移る。一方、バッファ部BUF1にアクセス可能な第1状態に設定されていない場合、すなわち、バッファ部BUF2にアクセス可能な第2状態に設定されている場合、メモリコントローラMCLbの動作は、ステップS470に移る。
ステップS410では、スイッチ部SW2bは、読み出されていない要求情報REQがバッファ部BUF1に存在するか否かを判定する。例えば、スイッチ部SW2bは、入力ポインタPTIと出力ポインタPTOとが互いに同じ位置を示しているか否かを判定する。入力ポインタPTIと出力ポインタPTOとが互いに同じ位置を示している場合、スイッチ部SW2bは、不揮発性メモリMEM1に書き込むデータがバッファ部BUF1に存在しないと判定する。すなわち、入力ポインタPTIと出力ポインタPTOとが互いに異なる位置を示している場合、スイッチ部SW2bは、不揮発性メモリMEM1に書き込むデータを含む要求情報REQがバッファ部BUF1に存在すると判定する。
読み出されていない要求情報REQがバッファ部BUF1に存在する場合、メモリコントローラMCLbの動作は、ステップS420に移る。一方、読み出されていない要求情報REQがバッファ部BUF1に存在しない場合、メモリコントローラMCLbの動作は、ステップS460に移る。
ステップS420では、スイッチ部SW2bは、出力ポインタPTOを参照して、読み出し位置を特定する。
次に、ステップS430では、スイッチ部SW2bは、バッファ部BUF1に格納された要求情報REQを、ステップS420で特定した読み出し位置から読み出す。このように、スイッチ部SW2bは、バッファ部BUF1にアクセス可能な第1状態に設定された場合、バッファ部BUF1に格納されたデータを出力ポインタPTOが示す読み出し位置から読み出す。
スイッチ部SW2bによりバッファ部BUF1から読み出された要求情報REQは、アクセス処理部ACPに転送される。そして、アクセス処理部ACPは、バッファ部BUF1からスイッチ部SW2bを介して転送された要求情報REQに含まれるデータを、不揮発性メモリMEM1に書き込む。
次に、ステップS440では、スイッチ部SW2bは、一定時間が経過したか否かを判定する。一定時間は、例えば、バッファ部BUF1からデータが読み出されてから、不揮発性メモリMEM1へのデータの書き込みが完了するまでの時間である。一定時間が経過した場合、メモリコントローラMCLbの動作は、ステップS450に移る。一方、一定時間が経過していない場合、メモリコントローラMCLbの動作は、ステップS440に戻る。すなわち、ステップS450の処理は、ステップS430でバッファ部BUF1から読み出されたデータの不揮発性メモリMEM1への書き込みが完了するまで待機される。
ステップS450では、スイッチ部SW2bは、出力ポインタPTOを更新する。このように、スイッチ部SW2bは、要求情報REQに含まれるデータが不揮発性メモリMEM1に書き込まれた後に、出力ポインタPTOを更新する。ステップS450の処理が実行された後、メモリコントローラMCLbの動作は、ステップS460に移る。
ステップS460では、スイッチ部SW2bは、バッファ部BUF2にアクセス可能な第2状態に状態を切り替える。ステップS460の処理が実行された後、メモリコントローラMCLbの動作は、ステップS470に移る。
ステップS470では、スイッチ部SW2bは、読み出されていない要求情報REQがバッファ部BUF2に存在するか否かを判定する。読み出されていない要求情報REQがバッファ部BUF2に存在する場合、メモリコントローラMCLbの動作は、ステップS480に移る。一方、読み出されていない要求情報REQがバッファ部BUF2に存在しない場合、メモリコントローラMCLbの動作は、ステップS490に移る。
ステップS480では、スイッチ部SW2bは、バッファ部BUF2に格納された要求情報REQを読み出す。このように、スイッチ部SW2bは、バッファ部BUF2にアクセス可能な第2状態に設定された場合、バッファ部BUF2に格納されたデータを読み出す。スイッチ部SW2bによりバッファ部BUF2から読み出された要求情報REQは、アクセス処理部ACPに転送される。
ステップS490では、スイッチ部SW2bは、バッファ部BUF1にアクセス可能な第1状態に状態を切り替える。ステップS490の処理が実行された後、メモリコントローラMCLbの動作は、ステップS410に戻る。
このように、スイッチ部SW2bは、第1状態と第2状態とをアクセス毎に交互に選択する。なお、スイッチ部SW2bの動作は、図6に示す例に限定されない。
図7は、図2に示したメモリコントローラMCLbが搭載される情報処理装置IPEbによるデータ更新の一例を示す。また、図7の括弧内に、比較例を示す。図7に示す比較例は、メモリコントローラから不揮発性メモリMEM1にデータを書き込む順番を制限する命令PCMTを含むアーキテクチャを採用した場合の情報処理装置の動作を示す。なお、命令STは、データをメモリにストアするストア命令であり、命令WBは、演算処理装置PU内のキャッシュメモリに格納されたデータを主記憶装置MMEMに書き戻すライトバック命令である。命令ST等は、演算処理装置PU内のCPUコアから発行される。
なお、図7に示す動作は、ツリー構造のデータを状態1から状態2に更新し、状態2から状態3に更新する際の情報処理装置IPEbの動作である。図7に示す符号R(R1、R2、R3)は、ルートポイントを示す。また、図7に示す符号B(B1、B2、B3)、C(C1、C2)、D(D1、D2)、Eは、データ構造を示す。以下、ルートポイントR、データ構造B、C、D、Eは、データR、B、C、D、Eとも称される。
先ず、演算処理装置PU内のCPUコアからストア命令STが発行され、データD2が演算処理装置PU内のキャッシュメモリに格納される。CPUコアからライトバック命令WBが発行され、キャッシュメモリに格納されたデータD2がメモリコントローラMCLbに転送される。同様に、CPUコアからストア命令STおよびライトバック命令WBが順次発行され、データB2がキャッシュメモリに格納され、キャッシュメモリに格納されたデータB2がメモリコントローラMCLbに転送される。そして、データD2、B2がメモリコントローラMCLbに到達することを保証するためにフェンス命令SFENがCPUコアからメモリコントローラMCLbに発行される。メモリコントローラMCLbは、データD2、B2をバッファ部BUF1に格納した後、フェンス命令SFENを解除する。
フェンス命令SFENが解除された後、CPUコアからストア命令STおよびライトバック命令WBが順次発行され、データR2がキャッシュメモリに格納され、キャッシュメモリに格納されたデータR2がメモリコントローラMCLbに転送される。そして、データR2がメモリコントローラMCLbに到達することを保証するためにフェンス命令SFENがCPUコアからメモリコントローラMCLbに発行され、データR2がバッファ部BUF1に格納された後、フェンス命令SFENが解除される。これにより、ツリー構造のデータを状態1から状態2に更新する処理が終了し、ツリー構造のデータを状態2から状態3に更新する処理が実行される。
これに対し、比較例では、データD2、B2がメモリコントローラMCLbに到達することを保証するためにフェンス命令SFENがCPUコアからメモリコントローラMCLbに発行された後、命令PCMTが発行される。そして、比較例では、命令PCMTに基づく処理が完了した後、データD2、B2が不揮発性メモリMEM1に書き込まれたことを保証するためにフェンス命令SFENが再度発行される。フェンス命令SFENが発行された後、データR1をデータR2に更新するために、データD2、B2の更新時と同様に、命令ST、WB、SFEN、PCMT、SFENが順次発行される。これにより、ツリー構造のデータを状態1から状態2に更新する処理が終了し、ツリー構造のデータを状態2から状態3に更新する処理が実行される。命令PCMTを発行したCPUコアは、不揮発性メモリMEM1へのデータの書き込みが完了するまで、メモリコントローラへの次の書き込みを待機する。
これに対し、メモリコントローラMCLbが搭載される情報処理装置IPEbでは、命令PCMTを省くことができる。このため、メモリコントローラMCLbでは、比較例に比べて、演算処理装置PUがライト命令等の発行を再開するまでの待機時間を短くすることができる。すなわち、メモリコントローラMCLbは、演算処理装置PUからメモリコントローラMCLaへのデータ転送の待機時間の増加を抑制できる。これにより、メモリコントローラMCLbは、演算処理装置PUの処理性能が低下することを抑制できる。
図8は、図2に示したメモリコントローラMCLbが搭載される情報処理装置IPEbの動作の一例を示す。なお、図8は、情報処理装置IPEbのブートシーケンスの一例を示す。
ステップS1000では、情報処理装置IPEbは、BIOS(Basic Input/Output System)をスタートする。
次に、ステップS1100では、情報処理装置IPEbは、演算処理装置PUおよびメモリコントローラMCLb等のハードウェアを初期化する。例えば、演算処理装置PUは、電源投入時に初期化処理を実行する。なお、初期状態では、スイッチ部SW1の出力先は、バッファ部BUF2に設定され、スイッチ部SW2bは、バッファ部BUF2にアクセス可能な第2状態に設定されている。これにより、ハードウェアの初期化時に揮発性のバッファ部BUF2のみを初期化し、不揮発性のバッファ部BUF1内のデータが消去されることを防止することができる。また、従来のメモリコントローラの初期化手法をそのまま適用することができる。
次に、ステップS1200では、メモリコントローラMCLbは、スイッチ部SW2bをバッファ部BUF1にアクセス可能な第1状態に切り替える。
次に、ステップS1300では、メモリコントローラMCLbのスイッチ部SW2bは、入力ポインタPTIと出力ポインタPTOとが互いに同じ位置を示しているか否かを判定する。入力ポインタPTIと出力ポインタPTOとが互いに同じ位置を示している場合、すなわち、不揮発性メモリMEM1に書き込むデータがバッファ部BUF1に存在しない場合、情報処理装置IPEbの動作は、ステップS1500に移る。一方、入力ポインタPTIと出力ポインタPTOとが互いに異なる位置を示している場合、すなわち、不揮発性メモリMEM1に書き込むデータを含む要求情報REQがバッファ部BUF1に存在する場合、情報処理装置IPEbの動作は、ステップS1420に移る。
このように、スイッチ部SW2bは、入力ポインタPTIと出力ポインタPTOとの比較結果に基づいて、電源遮断前の前回の動作で不揮発性メモリMEM1に書き込まれずにバッファ部BUF1に残った残データが存在するかを判定する。
ステップS1420、S1430、S1440、S1450は、図6に示したステップS420、S430、S440、S450と同一または同様である。ステップS1420、S1430、S1440、S1450により、スイッチ部SW2bは、バッファ部BUF1に保持された残データをアクセス処理部ACPに転送する。すなわち、スイッチ部SW2bは、残データがバッファ部BUF1に保持されている場合、バッファ部BUF1に保持された残データを、アクセス処理部ACPを介して不揮発性メモリMEM1に書き込む。ステップS1450の処理が実行された後、情報処理装置IPEbの動作は、ステップS1300に戻る。
ステップS1500では、情報処理装置IPEbは、OS(Operating System)をブートする。このように、情報処理装置IPEbは、残データがバッファ部BUF1に保持されていない場合には、ハードウェアの初期化後、そのままOSをブートする。また、情報処理装置IPEbは、残データがバッファ部BUF1に保持されている場合には、バッファ部BUF1に保持されている残データを不揮発性メモリMEM1に書き出した後に、OSをブートする。なお、情報処理装置IPEbの動作は、図8に示す例に限定されない。
以上、図2から図8に示す実施形態においても、図1に示した実施形態と同様の効果を得ることができる。例えば、スイッチ部SW1は、不揮発性メモリMEM1に書き込むデータを演算処理装置PUから受信した場合、演算処理装置PUから受信したデータをバッファ部BUF1における入力ポインタPTIが示す格納位置に格納する。また、制御部CL1は、フェンス命令SFENを演算処理装置PUから受信した場合、フェンス命令SFENに先行する先行データがバッファ部BUF1、BUF2のいずれかに格納されたかを判定する。そして、制御部CL1は、バッファ部BUF1、BUF2のいずれかへの先行データの格納が完了した場合に、フェンス命令SFENにより指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を演算処理装置PUに通知する。
このように、メモリコントローラMCLbは、フェンス命令SFENの解除を先行データの不揮発性メモリMEM1への書き込みが完了するまで待機せずに実行する。この結果、演算処理装置PUからメモリコントローラMCLbへのデータ転送の待機時間の増加を抑制することができる。
さらに、メモリコントローラMCLbは、不揮発性のバッファ部BUF1の他に、揮発性メモリMEM2用の揮発性のバッファ部BUF2を有する。これにより、揮発性メモリMEM2に書き込むデータに先行する複数の先行データが不揮発性メモリMEM1に書き込まれる場合でも、全ての先行データが不揮発性メモリMEM1に書き込まれる前に、揮発性メモリMEM2にデータを書き込むことができる。この結果、メモリコントローラMCLbから主記憶装置MMEMへのデータの書き込み時間の増加を抑制することができる。
図9は、メモリコントローラおよびメモリアクセス方法の別の実施形態を示す。図1から図8で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図9に示すメモリコントローラMCLcは、不揮発性メモリMEM1および揮発性メモリMEM2を含む主記憶装置MMEMを制御する。例えば、メモリコントローラMCLcは、図2に示したメモリアクセス部MAUbの代わりにメモリアクセス部MAUcを有することを除いて、図2に示したメモリコントローラMCLbと同一または同様である。例えば、情報処理装置IPEcは、メモリコントローラMCLc、演算処理装置PUおよび主記憶装置MMEMを有する。メモリコントローラMCLcは、不揮発性メモリMEM1および揮発性メモリMEM2にバスMBUSを介して接続され、不揮発性メモリMEM1および揮発性メモリMEM2を含む主記憶装置MMEMと演算処理装置PUとの間のデータ転送を制御する。
メモリコントローラMCLcは、第1バッファ部BUF1、第2バッファ部BUF2、ポインタ保持部PMEM、受信処理部RPUb、メモリアクセス部MAUc、レジスタREGおよびメモリ読み出し部MRUを有する。
バッファ部BUF1、BUF2、受信処理部RPUbおよびポインタ保持部PMEMは、図2に示したバッファ部BUF1、BUF2、受信処理部RPUbおよびポインタ保持部PMEMと同一または同様である。
メモリアクセス部MAUcは、図2に示した第2スイッチ部SW2bの代わりに第2スイッチ部SW2cを有する。また、メモリアクセス部MAUcでは、第2制御部CL2が図2に示したメモリアクセス部MAUbに追加される。メモリアクセス部MAUcのその他の構成は、図2に示したメモリアクセス部MAUbと同一または同様である。すなわち、メモリアクセス部MAUbは、第2スイッチ部SW2c、第2制御部CL2およびアクセス処理部ACPを有する。以下、第2スイッチ部SW2cおよび第2制御部CL2は、スイッチ部SW2cおよび制御部CL2とも称される。スイッチ部SW2cは、バッファ部BUF1にアクセス可能な第1状態に設定された場合、バッファ部BUF1に格納されたデータを出力ポインタPTOが示す読み出し位置から読み出す。また、スイッチ部SW2cは、バッファ部BUF2にアクセス可能な第2状態に設定された場合、バッファ部BUF2に格納されたデータを読み出す。例えば、スイッチ部SW2cは、バッファ部BUF1用の読み出しフラグRFLGを有し、制御部CL2により第1状態と第2状態とのいずれかに設定される。以下、読み出しフラグRFLGは、フラグRFLGとも称される。
制御部CL2は、スイッチ部SW2cから出力される命令および主記憶装置MMEMの記憶領域を示すアドレスを受信する。例えば、制御部CL2は、スイッチ部SW2cから受信したアドレスおよび命令が不揮発性メモリMEM1に割り当てられたアドレスおよびライト命令である場合、出力ポインタPTOが更新されるまでスイッチ部SW2cを第2状態に設定する。そして、制御部CL2は、出力ポインタPTOの更新に応じてスイッチ部SW2cを第1状態に切り替える。
アクセス処理部ACPは、図2に示したアクセス処理部ACPと同一または同様である。なお、図9では、図を見やすくするために、図2に示したメモリマッピング部MMAP、調停部ARBおよびコマンド生成部CGENの記載を省略している。
メモリ読み出し部MRUおよびレジスタREGは、図2に示したメモリ読み出し部MRUおよびレジスタREGと同一または同様である。なお、メモリコントローラMCLcの構成は、図9に示す例に限定されない。
図10は、図9に示した第2スイッチ部SW2cおよび第2制御部CL2の動作の一例を示す。なお、図10に示す動作は、バッファ部BUF1、BUF2のいずれかから要求情報REQを読み出す際のメモリコントローラMCLcの動作である。図6で説明したステップと同一または同様なステップについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。
ステップS400では、スイッチ部SW2cは、バッファ部BUF1にアクセス可能な第1状態に設定されているか否かを判定する。バッファ部BUF1にアクセス可能な第1状態に設定されている場合、メモリコントローラMCLcの動作は、ステップS410に移る。一方、バッファ部BUF1にアクセス可能な第1状態に設定されていない場合、すなわち、バッファ部BUF2にアクセス可能な第2状態に設定されている場合、メモリコントローラMCLcの動作は、ステップS470に移る。
ステップS410では、スイッチ部SW2cは、読み出されていない要求情報REQがバッファ部BUF1に存在するか否かを判定する。読み出されていない要求情報REQがバッファ部BUF1に存在する場合、メモリコントローラMCLcの動作は、ステップS420に移る。これにより、スイッチ部SW2cがステップS420の処理を実行する。一方、読み出されていない要求情報REQがバッファ部BUF1に存在しない場合、メモリコントローラMCLcの動作は、ステップS510に移る。これにより、制御部CL2がステップS510の処理を実行する。
ステップS420では、スイッチ部SW2cは、出力ポインタPTOを参照して、読み出し位置を特定する。
次に、ステップS430では、スイッチ部SW2cは、バッファ部BUF1に格納された要求情報REQを、ステップS420で特定した読み出し位置から読み出す。ステップS430の処理が実行された後、メモリコントローラMCLcのスイッチ部SW2cの動作は、ステップS434に移り、メモリコントローラMCLcの制御部CL2の動作は、ステップS500に移る。
ステップS434では、スイッチ部SW2cは、フラグRFLGを論理値”1”にセットする。
次に、ステップS440では、スイッチ部SW2cは、一定時間が経過したか否かを判定する。一定時間が経過した場合、スイッチ部SW2cの動作は、ステップS450に移る。一方、一定時間が経過していない場合、スイッチ部SW2cの動作は、ステップS440に戻る。
ステップS450では、スイッチ部SW2cは、出力ポインタPTOを更新する。
次に、ステップS462では、スイッチ部SW2cは、フラグRFLGを論理値”0”にリセットする。このように、フラグRFLGは、バッファ部BUF1からデータが読み出される際に論理値”1”にセットされ、出力ポインタPTOが更新された場合に論理値”0”にリセットされる。すなわち、フラグRFLGは、バッファ部BUF1から読み出されたデータが不揮発性メモリMEM1に書き込まれるまで、論理値”1”に維持される。ステップS462の処理が実行された後、スイッチ部SW2cの動作は、制御部CL2が後述するステップS530の処理等を実行することにより、ステップS400に戻る。
ステップS470では、スイッチ部SW2cは、読み出されていない要求情報REQがバッファ部BUF2に存在するか否かを判定する。読み出されていない要求情報REQがバッファ部BUF2に存在する場合、メモリコントローラMCLcの動作は、ステップS480に移る。これにより、スイッチ部SW2cがステップS480の処理を実行する。一方、読み出されていない要求情報REQがバッファ部BUF2に存在しない場合、メモリコントローラMCLcの動作は、ステップS520に移る。これにより、制御部CL2がステップS520の処理を実行する。
ステップS480では、スイッチ部SW2cは、バッファ部BUF2に格納された要求情報REQを読み出す。ステップS480の処理が実行された後、メモリコントローラMCLcの動作は、ステップS500に移る。これにより、制御部CL2がステップS500の処理を実行する。
ステップS500では、制御部CL2は、スイッチ部SW2cにより読み出された要求情報REQに含まれるアドレスおよび命令が不揮発性メモリMEM1に割り当てられたアドレスおよびライト命令であるか否かを判定する。スイッチ部SW2cにより読み出されたアドレスが不揮発性メモリMEM1に割り当てられたアドレスであり、かつ、スイッチ部SW2cにより読み出された命令がライト命令である場合、制御部CL2の動作は、ステップS510に移る。すなわち、スイッチ部SW2cにより読み出されたデータが不揮発性メモリMEM1に書き込まれるデータである場合、制御部CL2の動作は、ステップS510に移る。
一方、スイッチ部SW2cにより読み出されたアドレスが不揮発性メモリMEM1に割り当てられたアドレスでない場合、あるいは、スイッチ部SW2cにより読み出された命令がライト命令でない場合、制御部CL2の動作は、ステップS520に移る。すなわち、スイッチ部SW2cにより読み出されたデータが不揮発性メモリMEM1に書き込まれるデータでない場合、制御部CL2の動作は、ステップS520に移る。
ステップS510では、制御部CL2は、スイッチ部SW2cをバッファ部BUF2にアクセス可能な第2状態に切り替える。ステップS510の処理が実行された後、メモリコントローラMCLcの動作は、ステップS400に戻る。これにより、スイッチ部SW2cがステップS400の処理を実行する。
ステップS520では、制御部CL2は、フラグRFLGが論理値”0”であるか否かを判定する。フラグRFLGが論理値”0”である場合、制御部CL2の動作は、ステップS530に移る。一方、フラグRFLGが論理値”0”でない場合、すなわち、フラグRFLGが論理値”1”である場合、メモリコントローラMCLcの動作は、ステップS400に戻る。これにより、スイッチ部SW2cがステップS400の処理を実行する。
ステップS530では、制御部CL2は、スイッチ部SW2cをバッファ部BUF1にアクセス可能な第1状態に切り替える。ステップS530の処理が実行された後、メモリコントローラMCLcの動作は、ステップS400に戻る。これにより、スイッチ部SW2cがステップS400の処理を実行する。
このように、制御部CL2は、スイッチ部SW2cから受信したアドレスおよび命令が不揮発性メモリMEM1に割り当てられたアドレスおよびライト命令である場合、出力ポインタPTOが更新されるまでスイッチ部SW2cを第2状態に設定する。そして、制御部CL2は、出力ポインタPTOが更新された場合に、スイッチ部SW2cを第1状態に切り替える。これにより、不揮発性メモリMEM1にデータを書き込みしている間、バッファ部BUF2に格納された要求情報REQに基づく処理を実行することができ、情報処理装置IPEcの処理能力を向上させることができる。なお、スイッチ部SW2cの動作は、図10に示す例に限定されない。
以上、図9から図10に示す実施形態においても、図2から図8に示した実施形態と同様の効果を得ることができる。例えば、制御部CL1は、演算処理装置PUから受信したフェンス命令SFENの解除を、フェンス命令SFENに先行する先行データがバッファ部BUF1、BUF2のいずれかに格納された場合に実行する。これにより、演算処理装置PUからメモリコントローラMCLcへのデータ転送の待機時間の増加を抑制することができる。
さらに、制御部CL2は、不揮発性メモリMEM1にデータを書き込む処理が実行されている間、スイッチ部SW2cを第2状態に設定する。これにより、メモリコントローラMCLcは、不揮発性メモリMEM1にデータを書き込みしている間でも、バッファ部BUF2に格納された要求情報REQを順次読み出し、読み出した要求情報REQに基づく処理を順次実行できる。この結果、メモリコントローラMCLcから主記憶装置MMEMへのデータの書き込み等を効率よく実行することができ、メモリコントローラMCLcを含む情報処理装置IPEcの処理能力を向上させることができる。
図11は、メモリコントローラおよびメモリアクセス方法の別の実施形態を示す。図1から図10で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図11に示すメモリコントローラMCLdは、不揮発性メモリMEM1および揮発性メモリMEM2を含む主記憶装置MMEMを制御する。例えば、メモリコントローラMCLdは、図2に示したメモリアクセス部MAUbの代わりにメモリアクセス部MAUdを有する。また、メモリコントローラMCLdは、図2に示したメモリ読み出し部MRUの代わりに、応答スイッチ部SW3、第1応答バッファ部RBUF1および第2応答バッファ部RBUF2を有する。さらに、メモリコントローラMCLdは、図2に示したレジスタREGの代わりに、レジスタREG1、REG2を有する。メモリコントローラMCLdのその他の構成は、図2に示したメモリコントローラMCLbと同一または同様である。
例えば、情報処理装置IPEdは、メモリコントローラMCLd、演算処理装置PUおよび主記憶装置MMEMを有する。メモリコントローラMCLdは、不揮発性メモリMEM1にバスMBUS1を介して接続され、揮発性メモリMEM2にバスMBUS2を介して接続される。そして、メモリコントローラMCLdは、不揮発性メモリMEM1および揮発性メモリMEM2を含む主記憶装置MMEMと演算処理装置PUとの間のデータ転送を制御する。
メモリコントローラMCLdは、第1バッファ部BUF1、第2バッファ部BUF2、ポインタ保持部PMEM、受信処理部RPUbおよびメモリアクセス部MAUdを有する。さらに、メモリコントローラMCLdは、レジスタREG(REG1、REG2)、第1応答バッファ部RBUF1、第2応答バッファ部RBUF2および応答スイッチ部SW3を有する。以下、第1応答バッファ部RBUF1および第2応答バッファ部RBUF2は、バッファ部RBUF1、RBUF2とも称され、応答スイッチ部SW3は、スイッチ部SW3とも称される。
受信処理部RPUbは、図2に示した受信処理部RPUbと同一または同様である。例えば、受信処理部RPUbは、制御部CL1およびスイッチ部SW1を有する。なお、図11に示す制御部CL1は、演算処理装置PUから受信したアドレスが不揮発性メモリMEM1に割り当てられたアドレスである場合、命令の種類に拘わらず、スイッチ部SW1の出力先をバッファ部BUF1に設定する。すなわち、制御部CL1は、演算処理装置PUから受信したアドレスが揮発性メモリMEM2に割り当てられたアドレスである場合、命令の種類に拘わらず、スイッチ部SW1の出力先をバッファ部BUF2に設定する。図11に示す制御部CL1のその他の動作は、図2に示した制御部CL1と同一または同様である。
また、図11に示すスイッチ部SW1は、図2に示したスイッチ部SW1と同一または同様である。例えば、スイッチ部SW1は、バッファ部BUF1へのデータの格納が完了した後、入力ポインタPTIを更新する
バッファ部BUF1、BUF2およびポインタ保持部PMEMは、図2に示したバッファ部BUF1、BUF2およびポインタ保持部PMEMと同一または同様である。
メモリアクセス部MAUdは、図2に示した第2スイッチ部SW2bの代わりに、バッファ読み出し部BRU1、BRU2を有する。また、メモリアクセス部MAUdは、図2に示したアクセス処理部ACPの代わりに、アクセス処理部ACP1、ACP2を有する。メモリアクセス部MAUdのその他の構成は、図2に示したメモリアクセス部MAUbと同一または同様である。すなわち、メモリアクセス部MAUdは、バッファ読み出し部BRU1、BRU2、アクセス処理部ACP1、ACP2を有する。
バッファ読み出し部BRU1は、バッファ部BUF1に格納された要求情報REQを出力ポインタPTOが示す読み出し位置から読み出す。そして、バッファ読み出し部BRU1は、バッファ部BUF1から読み出した要求情報REQをアクセス処理部ACP1に転送する。また、バッファ読み出し部BRU1は、出力ポインタPTOが示す読み出し位置から読み出した要求情報REQに含まれるデータが不揮発性メモリMEM1に書き込まれた後、出力ポインタPTOを更新する。
このように、バッファ読み出し部BRU1は、バッファ部BUF1に格納されたデータを出力ポインタPTOが示す読み出し位置から読み出し、読み出したデータが不揮発性メモリMEM1に書き込まれた後、出力ポインタPTOを更新する。
バッファ読み出し部BRU2は、バッファ部BUF2に格納されたデータを読み出し、読み出したデータをアクセス処理部ACP2に転送する。
アクセス処理部ACP1、ACP2は、図2に示したアクセス処理部ACPと同一または同様である。なお、図11では、図を見やすくするために、図2に示したメモリマッピング部MMAP、調停部ARBおよびコマンド生成部CGENの記載を省略している。例えば、アクセス処理部ACP1は、バッファ部BUF1からバッファ読み出し部BRU1を介して転送されたデータを不揮発性メモリMEM1に書き込む。また、例えば、アクセス処理部ACP2は、バッファ部BUF2からバッファ読み出し部BRU2を介して転送されたデータを揮発性メモリMEMに書き込む。
レジスタREG1は、アクセス処理部ACP1から出力されたデータ等を順次保持する。これにより、メモリコントローラMCLdは、リード命令で要求された読み出し対象のデータが不揮発性メモリMEM1に書き込まれている最中でも、読み出し対象のデータをレジスタREG1からバッファ部RBUF1に転送できる。
レジスタREG2は、アクセス処理部ACP2から出力されたデータ等を順次保持する。これにより、メモリコントローラMCLdは、リード命令で要求された読み出し対象のデータが揮発性メモリMEM2に書き込まれている最中でも、読み出し対象のデータをレジスタREG2からバッファ部RBUF2に転送できる。
バッファ部RBUF1は、リード命令で要求された読み出し対象のデータを不揮発性メモリMEM1またはレジスタREG1等から受信し、受信したデータを保持する。すなわち、バッファ部RBUF1は、不揮発性メモリMEM1から読み出されるデータを受信し、受信したデータを保持する。
バッファ部RBUF2は、リード命令で要求された読み出し対象のデータを揮発性メモリMEM2またはレジスタREG2等から受信し、受信したデータを保持する。すなわち、バッファ部RBUF2は、揮発性メモリMEM2から読み出されるデータを受信し、受信したデータを保持する。
スイッチ部SW3は、バッファ部RBUF1にアクセス可能な第1応答状態に設定された場合、バッファ部RBUF1に保持されたデータを演算処理装置PUに転送する。また、スイッチ部SW3は、バッファ部RBUF2にアクセス可能な第2応答状態に設定された場合、バッファ部RBUF2に保持されたデータを演算処理装置PUに転送する。
このように、メモリコントローラMCLdでは、不揮発性メモリMEM1は、揮発性メモリMEM2が接続されるバスMBUS2と異なるバスMBUS1に接続される。このため、メモリコントローラMCLdから主記憶装置MMEMへの出力は、2系統に分離される。この場合、上述したように、制御部CL1は、演算処理装置PUから受信したアドレスが不揮発性メモリMEM1に割り当てられたアドレスか否かを判定して、スイッチ部SW1の出力先を切り替える。また、ブートシーケンス時のハードウェアの初期化では、スイッチ部SW1の出力先は、図8で説明したように、バッファ部BUF2に設定されている。これにより、メモリコントローラMCLdは、バッファ部BUF1に格納されたデータが消去されることを防止できる。情報処理装置IPEdのブートシーケンス時の動作は、図8に示した動作からステップS1200を省き、スイッチ部SW2bをバッファ読み出し部BRU1に読み替えることにより、説明される。なお、メモリコントローラMCLdの構成は、図11に示す例に限定されない。
以上、図11に示す実施形態においても、図2から図8に示した実施形態と同様の効果を得ることができる。例えば、制御部CL1は、演算処理装置PUから受信したフェンス命令SFENの解除を、フェンス命令SFENに先行する先行データがバッファ部BUF1、BUF2のいずれかに格納された場合に実行する。これにより、演算処理装置PUからメモリコントローラMCLdへのデータ転送の待機時間の増加を抑制することができる。
さらに、メモリコントローラMCLdでは、主記憶装置MMEMへの出力が、不揮発性メモリMEM1への出力と揮発性メモリMEM2への出力との2系統に分離される。これにより、メモリコントローラMCLdは、不揮発性メモリMEM1にデータを書き込みしている間でも、バッファ部BUF2に格納された要求情報REQを順次読み出し、読み出した要求情報REQに基づく処理を順次実行できる。この結果、メモリコントローラMCLdから主記憶装置MMEMへのデータの書き込み等を効率よく実行することができ、メモリコントローラMCLdを含む情報処理装置IPEdの処理能力を向上させることができる。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
不揮発性メモリを含むメモリ部を制御するメモリコントローラにおいて、
前記不揮発性メモリに書き込むデータを保持する不揮発性の第1バッファ部と、
前記第1バッファ部に格納するデータの格納位置を示す入力ポインタと前記第1バッファ部から読み出すデータの読み出し位置を示す出力ポインタとを保持する不揮発性のポインタ保持部と、
前記不揮発性メモリに書き込むデータを演算処理装置から受信した場合、前記演算処理装置から受信したデータを前記第1バッファ部における前記入力ポインタが示す格納位置に格納し、前記メモリ部にデータを書き込むライト命令の実行順の制限を指示する順序制限命令を前記演算処理装置から受信した場合、前記順序制限命令より前に前記演算処理装置から転送された先行データが前記第1バッファ部に格納されたかを判定し、前記第1バッファ部への前記先行データの格納が完了した場合に、前記順序制限命令により指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を前記演算処理装置に通知する受信処理部と、
前記第1バッファ部に格納されたデータを前記出力ポインタが示す読み出し位置から読み出し、前記第1バッファ部から読み出したデータを前記不揮発性メモリに書き込むメモリアクセス部と
を有することを特徴とするメモリコントローラ。
(付記2)
付記1に記載のメモリコントローラにおいて、
前記メモリ部は揮発性メモリをさらに含み、
前記演算処理装置から転送されるデータのうち、前記揮発性メモリに書き込むデータを保持する揮発性の第2バッファ部をさらに有し、
前記受信処理部は、
前記演算処理装置から受信したデータの書き込み先のメモリに対応する前記第1バッファ部および前記第2バッファ部のいずれかにデータを出力し、出力先が前記第1バッファ部に設定されている場合、前記入力ポインタが示す格納位置にデータを格納する第1スイッチ部と、
前記不揮発性メモリにデータを書き込むライト命令を前記演算処理装置から受信した場合、前記第1スイッチ部の出力先を前記第1バッファ部に設定する第1制御部とを有し、
前記メモリアクセス部は、
前記第1バッファ部にアクセス可能な第1状態に設定された場合、前記第1バッファ部に格納されたデータを前記出力ポインタが示す読み出し位置から読み出し、前記第2バッファ部にアクセス可能な第2状態に設定された場合、前記第2バッファ部に格納されたデータを読み出す第2スイッチ部と、
前記第1バッファ部から前記第2スイッチ部を介して転送されたデータを前記不揮発性メモリに書き込み、前記第2バッファ部から前記第2スイッチ部を介して転送されたデータを前記揮発性メモリに書き込むアクセス処理部とを有する
ことを特徴とするメモリコントローラ。
(付記3)
付記2に記載のメモリコントローラにおいて、
前記第1制御部は、前記メモリ部の記憶領域を示すアドレスと命令とを前記演算処理装置から受信し、前記演算処理装置から受信したアドレスが前記不揮発性メモリに割り当てられたアドレスであり、かつ、前記演算処理装置から受信した命令がライト命令である場合、前記第1スイッチ部の出力先を前記第1バッファ部に設定する
ことを特徴とするメモリコントローラ。
(付記4)
付記2または付記3に記載のメモリコントローラにおいて、
前記第1スイッチ部は、前記第1バッファ部へのデータの格納が完了した後、前記入力ポインタを更新する
ことを特徴とするメモリコントローラ。
(付記5)
付記2ないし付記4のいずれか1項に記載のメモリコントローラにおいて、
前記第2スイッチ部は、前記第1バッファ部に格納されたデータを前記不揮発性メモリに書き込む場合、前記出力ポインタが示す読み出し位置から読み出したデータを前記不揮発性メモリへ書き込んだ後、前記出力ポインタを更新する
ことを特徴とするメモリコントローラ。
(付記6)
付記2ないし付記5のいずれか1項に記載のメモリコントローラにおいて、
前記不揮発性メモリおよび前記揮発性メモリからデータを受信し、受信したデータを前記演算処理装置に転送するメモリ読み出し部をさらに有し、
前記第1スイッチ部は、電源投入時に前記演算処理装置により実行される初期化処理中では、出力先が前記第2バッファ部に設定され、
前記第2スイッチ部は、前記初期化処理中では、前記第2状態に設定され、前記初期化処理の後に、前記第1状態に切り替わり、前記入力ポインタと前記出力ポインタとの比較結果に基づいて、電源遮断前の前回の動作で前記不揮発性メモリに書き込まれずに前記第1バッファ部に残った残データが存在するかを判定し、前記残データが前記第1バッファ部に保持されている場合、前記第1バッファ部に保持された前記残データを前記アクセス処理部を介して前記不揮発性メモリに書き込む
ことを特徴とするメモリコントローラ。
(付記7)
付記2ないし付記6のいずれか1項に記載のメモリコントローラにおいて、
前記第2スイッチ部は、前記第1状態と前記第2状態とをアクセス毎に交互に選択する
ことを特徴とするメモリコントローラ。
(付記8)
付記2ないし付記6のいずれか1項に記載のメモリコントローラにおいて、
前記メモリアクセス部は、
前記第2スイッチ部から出力される命令および前記メモリ部の記憶領域を示すアドレスを受信し、前記第2スイッチ部から受信したアドレスが前記不揮発性メモリに割り当てられたアドレスであり、かつ、前記第2スイッチ部から受信した命令がライト命令である場合、前記出力ポインタが更新されるまで前記第2スイッチ部を前記第2状態に設定し、前記出力ポインタの更新に応じて前記第2スイッチ部を前記第1状態に切り替える第2制御部をさらに有する
ことを特徴とするメモリコントローラ。
(付記9)
付記1に記載のメモリコントローラにおいて、
前記メモリ部は揮発性メモリをさらに含み、
前記演算処理装置から転送されるデータのうち、前記揮発性メモリに書き込むデータを保持する揮発性の第2バッファ部と、
前記不揮発性メモリから読み出されるデータを受信し、受信したデータを保持する第1応答バッファ部と、
前記揮発性メモリから読み出されるデータを受信し、受信したデータを保持する第2応答バッファ部と、
前記第1応答バッファ部にアクセス可能な第1応答状態に設定された場合、前記第1応答バッファ部に保持されたデータを前記演算処理装置に転送し、前記第2応答バッファ部にアクセス可能な第2応答状態に設定された場合、前記第2応答バッファ部に保持されたデータを前記演算処理装置に転送する応答スイッチ部とをさらに有し、
前記受信処理部は、
前記演算処理装置から受信したデータの書き込み先のメモリに対応する前記第1バッファ部および前記第2バッファ部のいずれかにデータを出力し、出力先が前記第1バッファ部に設定されている場合、前記入力ポインタが示す格納位置にデータを格納する第1スイッチ部と、
前記不揮発性メモリにデータを書き込むライト命令を前記演算処理装置から受信した場合、前記第1スイッチ部の出力先を前記第1バッファ部に設定する第1制御部とを有し、
前記メモリアクセス部は、
前記第1バッファ部に格納されたデータを前記出力ポインタが示す読み出し位置から読み出す第1バッファ読み出し部と、
前記第2バッファ部に格納されたデータを読み出す第2バッファ読み出し部と、
前記第1バッファ部から前記第1バッファ読み出し部を介して転送されたデータを前記不揮発性メモリに書き込む第1アクセス処理部と、
前記第2バッファ部から前記第2バッファ読み出し部を介して転送されたデータを前記揮発性メモリに書き込む第2アクセス処理部とを有する
ことを特徴とするメモリコントローラ。
(付記10)
付記9に記載のメモリコントローラにおいて、
前記第1スイッチ部は、前記第1バッファ部へのデータの格納が完了した後、前記入力ポインタを更新する
ことを特徴とするメモリコントローラ。
(付記11)
付記9または付記10に記載のメモリコントローラにおいて、
前記第1バッファ読み出し部は、前記出力ポインタが示す読み出し位置から読み出したデータを前記不揮発性メモリへ書き込んだ後、前記出力ポインタを更新する
ことを特徴とするメモリコントローラ。
(付記12)
付記9ないし付記11のいずれか1項に記載のメモリコントローラにおいて、
前記第1スイッチ部は、電源投入時に前記演算処理装置により実行される初期化処理中では、出力先が前記第2バッファ部に設定され、
前記第1バッファ読み出し部は、前記初期化処理の後に、前記入力ポインタと前記出力ポインタとの比較結果に基づいて、電源遮断前の前回の動作で前記不揮発性メモリに書き込まれずに前記第1バッファ部に残った残データが存在するかを判定し、前記残データが前記第1バッファ部に保持されている場合、前記第1バッファ部に保持された前記残データを前記第1アクセス処理部を介して前記不揮発性メモリに書き込む
ことを特徴とするメモリコントローラ。
(付記13)
付記9ないし付記11のいずれか1項に記載のメモリコントローラにおいて、
前記第1制御部は、前記メモリ部の記憶領域を示すアドレスを前記演算処理装置から受信し、前記演算処理装置から受信したアドレスが前記不揮発性メモリに割り当てられたアドレスである場合、前記第1スイッチ部の出力先を前記第1バッファ部に設定する
ことを特徴とするメモリコントローラ。
(付記14)
メモリコントローラによる不揮発性メモリを含むメモリ部のメモリアクセス方法において、
前記メモリコントローラが有する不揮発性のポインタ保持部は、前記メモリコントローラが有する不揮発性の第1バッファ部に格納するデータの格納位置を示す入力ポインタと前記第1バッファ部から読み出すデータの読み出し位置を示す出力ポインタとを保持し、
前記メモリコントローラが有する受信処理部は、前記不揮発性メモリに書き込むデータを演算処理装置から受信した場合、前記演算処理装置から受信したデータを前記第1バッファ部における前記入力ポインタが示す格納位置に格納し、前記メモリ部にデータを書き込むライト命令の実行順の制限を指示する順序制限命令を前記演算処理装置から受信した場合、前記順序制限命令より前に前記演算処理装置から転送された先行データが前記第1バッファ部に格納されたかを判定し、前記第1バッファ部への前記先行データの格納が完了した場合に、前記順序制限命令により指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を前記演算処理装置に通知し、
前記メモリコントローラが有するメモリアクセス部は、前記第1バッファ部に格納されたデータを前記出力ポインタが示す読み出し位置から読み出し、前記第1バッファ部から読み出したデータを前記不揮発性メモリに書き込む
ことを特徴とするメモリアクセス方法。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
ACP、ACP1、ACP2‥アクセス処理部;BRU1、BRU2‥バッファ読み出し部;BUF1、BUF2‥バッファ部;CL1、CL2‥制御部;IPEa、IPEb、IPEc、IPEd‥情報処理装置;MAUa、MAUb、MAUc‥メモリアクセス部;MBUS、MBUS1、MBUS2‥バス;MCLa、MCLb、MCLc、MCLd‥メモリコントローラ;MEM1‥不揮発性メモリ;MEM2‥揮発性メモリ;MMEM‥主記憶装置;MRU‥メモリ読み出し部;PMEM‥ポインタ保持部;PU‥演算処理装置;RBUF1、RBUF2‥バッファ部;REG、REG1、REG2‥レジスタ;RPUa、RPUb‥受信処理部;SW1、SW2b、SW2c、SW3‥スイッチ部

Claims (10)

  1. 不揮発性メモリを含むメモリ部を制御するメモリコントローラにおいて、
    前記不揮発性メモリに書き込むデータを保持する不揮発性の第1バッファ部と、
    前記第1バッファ部に格納するデータの格納位置を示す入力ポインタと前記第1バッファ部から読み出すデータの読み出し位置を示す出力ポインタとを保持する不揮発性のポインタ保持部と、
    前記不揮発性メモリに書き込むデータを演算処理装置から受信した場合、前記演算処理装置から受信したデータを前記第1バッファ部における前記入力ポインタが示す格納位置に格納し、前記メモリ部にデータを書き込むライト命令の実行順の制限を指示する順序制限命令を前記演算処理装置から受信した場合、前記順序制限命令より前に前記演算処理装置から転送された先行データが前記第1バッファ部に格納されたかを判定し、前記第1バッファ部への前記先行データの格納が完了した場合に、前記順序制限命令により指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を前記演算処理装置に通知する受信処理部と、
    前記第1バッファ部に格納されたデータを前記出力ポインタが示す読み出し位置から読み出し、前記第1バッファ部から読み出したデータを前記不揮発性メモリに書き込むメモリアクセス部と
    を有することを特徴とするメモリコントローラ。
  2. 請求項1に記載のメモリコントローラにおいて、
    前記メモリ部は揮発性メモリをさらに含み、
    前記演算処理装置から転送されるデータのうち、前記揮発性メモリに書き込むデータを保持する揮発性の第2バッファ部をさらに有し、
    前記受信処理部は、
    前記演算処理装置から受信したデータの書き込み先のメモリに対応する前記第1バッファ部および前記第2バッファ部のいずれかにデータを出力し、出力先が前記第1バッファ部に設定されている場合、前記入力ポインタが示す格納位置にデータを格納する第1スイッチ部と、
    前記不揮発性メモリにデータを書き込むライト命令を前記演算処理装置から受信した場合、前記第1スイッチ部の出力先を前記第1バッファ部に設定する第1制御部とを有し、
    前記メモリアクセス部は、
    前記第1バッファ部にアクセス可能な第1状態に設定された場合、前記第1バッファ部に格納されたデータを前記出力ポインタが示す読み出し位置から読み出し、前記第2バッファ部にアクセス可能な第2状態に設定された場合、前記第2バッファ部に格納されたデータを読み出す第2スイッチ部と、
    前記第1バッファ部から前記第2スイッチ部を介して転送されたデータを前記不揮発性メモリに書き込み、前記第2バッファ部から前記第2スイッチ部を介して転送されたデータを前記揮発性メモリに書き込むアクセス処理部とを有する
    ことを特徴とするメモリコントローラ。
  3. 請求項2に記載のメモリコントローラにおいて、
    前記第1制御部は、前記メモリ部の記憶領域を示すアドレスと命令とを前記演算処理装置から受信し、前記演算処理装置から受信したアドレスが前記不揮発性メモリに割り当てられたアドレスであり、かつ、前記演算処理装置から受信した命令がライト命令である場合、前記第1スイッチ部の出力先を前記第1バッファ部に設定する
    ことを特徴とするメモリコントローラ。
  4. 請求項2または請求項3に記載のメモリコントローラにおいて、
    前記第1スイッチ部は、前記第1バッファ部へのデータの格納が完了した後、前記入力ポインタを更新する
    ことを特徴とするメモリコントローラ。
  5. 請求項2ないし請求項4のいずれか1項に記載のメモリコントローラにおいて、
    前記第2スイッチ部は、前記第1バッファ部に格納されたデータを前記不揮発性メモリに書き込む場合、前記出力ポインタが示す読み出し位置から読み出したデータを前記不揮発性メモリへ書き込んだ後、前記出力ポインタを更新する
    ことを特徴とするメモリコントローラ。
  6. 請求項2ないし請求項5のいずれか1項に記載のメモリコントローラにおいて、
    前記不揮発性メモリおよび前記揮発性メモリからデータを受信し、受信したデータを前記演算処理装置に転送するメモリ読み出し部をさらに有し、
    前記第1スイッチ部は、電源投入時に前記演算処理装置により実行される初期化処理中では、出力先が前記第2バッファ部に設定され、
    前記第2スイッチ部は、前記初期化処理中では、前記第2状態に設定され、前記初期化処理の後に、前記第1状態に切り替わり、前記入力ポインタと前記出力ポインタとの比較結果に基づいて、電源遮断前の前回の動作で前記不揮発性メモリに書き込まれずに前記第1バッファ部に残った残データが存在するかを判定し、前記残データが前記第1バッファ部に保持されている場合、前記第1バッファ部に保持された前記残データを前記アクセス処理部を介して前記不揮発性メモリに書き込む
    ことを特徴とするメモリコントローラ。
  7. 請求項2ないし請求項6のいずれか1項に記載のメモリコントローラにおいて、
    前記第2スイッチ部は、前記第1状態と前記第2状態とをアクセス毎に交互に選択する
    ことを特徴とするメモリコントローラ。
  8. 請求項2ないし請求項6のいずれか1項に記載のメモリコントローラにおいて、
    前記メモリアクセス部は、
    前記第2スイッチ部から出力される命令および前記メモリ部の記憶領域を示すアドレスを受信し、前記第2スイッチ部から受信したアドレスが前記不揮発性メモリに割り当てられたアドレスであり、かつ、前記第2スイッチ部から受信した命令がライト命令である場合、前記出力ポインタが更新されるまで前記第2スイッチ部を前記第2状態に設定し、前記出力ポインタの更新に応じて前記第2スイッチ部を前記第1状態に切り替える第2制御部をさらに有する
    ことを特徴とするメモリコントローラ。
  9. 請求項1に記載のメモリコントローラにおいて、
    前記メモリ部は揮発性メモリをさらに含み、
    前記演算処理装置から転送されるデータのうち、前記揮発性メモリに書き込むデータを保持する揮発性の第2バッファ部と、
    前記不揮発性メモリから読み出されるデータを受信し、受信したデータを保持する第1応答バッファ部と、
    前記揮発性メモリから読み出されるデータを受信し、受信したデータを保持する第2応答バッファ部と、
    前記第1応答バッファ部にアクセス可能な第1応答状態に設定された場合、前記第1応答バッファ部に保持されたデータを前記演算処理装置に転送し、前記第2応答バッファ部にアクセス可能な第2応答状態に設定された場合、前記第2応答バッファ部に保持されたデータを前記演算処理装置に転送する応答スイッチ部とをさらに有し、
    前記受信処理部は、
    前記演算処理装置から受信したデータの書き込み先のメモリに対応する前記第1バッファ部および前記第2バッファ部のいずれかにデータを出力し、出力先が前記第1バッファ部に設定されている場合、前記入力ポインタが示す格納位置にデータを格納する第1スイッチ部と、
    前記不揮発性メモリにデータを書き込むライト命令を前記演算処理装置から受信した場合、前記第1スイッチ部の出力先を前記第1バッファ部に設定する第1制御部とを有し、
    前記メモリアクセス部は、
    前記第1バッファ部に格納されたデータを前記出力ポインタが示す読み出し位置から読み出す第1バッファ読み出し部と、
    前記第2バッファ部に格納されたデータを読み出す第2バッファ読み出し部と、
    前記第1バッファ部から前記第1バッファ読み出し部を介して転送されたデータを前記不揮発性メモリに書き込む第1アクセス処理部と、
    前記第2バッファ部から前記第2バッファ読み出し部を介して転送されたデータを前記揮発性メモリに書き込む第2アクセス処理部とを有する
    ことを特徴とするメモリコントローラ。
  10. メモリコントローラによる不揮発性メモリを含むメモリ部のメモリアクセス方法において、
    前記メモリコントローラが有する不揮発性のポインタ保持部は、前記メモリコントローラが有する不揮発性の第1バッファ部に格納するデータの格納位置を示す入力ポインタと前記第1バッファ部から読み出すデータの読み出し位置を示す出力ポインタとを保持し、
    前記メモリコントローラが有する受信処理部は、前記不揮発性メモリに書き込むデータを演算処理装置から受信した場合、前記演算処理装置から受信したデータを前記第1バッファ部における前記入力ポインタが示す格納位置に格納し、前記メモリ部にデータを書き込むライト命令の実行順の制限を指示する順序制限命令を前記演算処理装置から受信した場合、前記順序制限命令より前に前記演算処理装置から転送された先行データが前記第1バッファ部に格納されたかを判定し、前記第1バッファ部への前記先行データの格納が完了した場合に、前記順序制限命令により指示されたライト命令の実行順を制限する処理が完了したことを示す完了情報を前記演算処理装置に通知し、
    前記メモリコントローラが有するメモリアクセス部は、前記第1バッファ部に格納されたデータを前記出力ポインタが示す読み出し位置から読み出し、前記第1バッファ部から読み出したデータを前記不揮発性メモリに書き込む
    ことを特徴とするメモリアクセス方法。
JP2016133238A 2016-07-05 2016-07-05 メモリコントローラおよびメモリアクセス方法 Pending JP2018005655A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016133238A JP2018005655A (ja) 2016-07-05 2016-07-05 メモリコントローラおよびメモリアクセス方法
US15/600,931 US20180011636A1 (en) 2016-07-05 2017-05-22 Information processing apparatus and method of accessing a memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016133238A JP2018005655A (ja) 2016-07-05 2016-07-05 メモリコントローラおよびメモリアクセス方法

Publications (1)

Publication Number Publication Date
JP2018005655A true JP2018005655A (ja) 2018-01-11

Family

ID=60910382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016133238A Pending JP2018005655A (ja) 2016-07-05 2016-07-05 メモリコントローラおよびメモリアクセス方法

Country Status (2)

Country Link
US (1) US20180011636A1 (ja)
JP (1) JP2018005655A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111324294A (zh) * 2018-12-17 2020-06-23 地平线(上海)人工智能技术有限公司 存取张量数据的方法和装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132145B2 (en) * 2018-03-14 2021-09-28 Apple Inc. Techniques for reducing write amplification on solid state storage devices (SSDs)
US11327808B2 (en) * 2018-11-13 2022-05-10 Western Digital Technologies, Inc. Decentralized data processing architecture

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111324294A (zh) * 2018-12-17 2020-06-23 地平线(上海)人工智能技术有限公司 存取张量数据的方法和装置
CN111324294B (zh) * 2018-12-17 2023-11-07 地平线(上海)人工智能技术有限公司 存取张量数据的方法和装置

Also Published As

Publication number Publication date
US20180011636A1 (en) 2018-01-11

Similar Documents

Publication Publication Date Title
US10754558B2 (en) Vehicular device
US10572390B2 (en) Methods and apparatus for loading firmware on demand
US9317204B2 (en) System and method for I/O optimization in a multi-queued environment
JP5783809B2 (ja) 情報処理装置、起動方法およびプログラム
ES2689125T3 (es) Gestor físico de barrera de sincronización entre procesos múltiples
JP5745084B2 (ja) ハードウェアトランザクションメモリシステムにおけるトランザクションデータの不慮の喪失の防止
US20080065864A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
US8756405B2 (en) Selective routing of local memory accesses and device thereof
JP2012068936A (ja) メモリシステム
US20110087836A1 (en) Storage unit and memory system
US20100169546A1 (en) Flash memory access circuit
JP5336423B2 (ja) 計算機システム
JP2007219581A (ja) メモリコントローラおよびこれを搭載する電子機器
US9575887B2 (en) Memory device, information-processing device and information-processing method
US20190369999A1 (en) Storing incidental branch predictions to reduce latency of misprediction recovery
JP2018005655A (ja) メモリコントローラおよびメモリアクセス方法
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
JP2013200692A (ja) メモリシステム
JP5131269B2 (ja) マルチプロセッシングシステム
JP5289688B2 (ja) プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
JPH1139214A (ja) マルチプロセッサシステムの共有メモリ制御方式
KR101881039B1 (ko) 비휘발성 메모리에 저장된 메모리 매핑 파일의 비동기식 원자적 업데이트 방법 및 제어 장치
JP5949330B2 (ja) 情報処理装置、情報処理方法
JP5644539B2 (ja) プロセッサ、情報処理装置、情報処理方法及びシステム起動プログラム
JPH04271432A (ja) 中央演算処理装置のオペランド指定方法及び当該方法を使用する中央演算処理装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20170803

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20170803

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170804