JP7140972B2 - 演算処理装置、情報処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置、情報処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP7140972B2
JP7140972B2 JP2018239503A JP2018239503A JP7140972B2 JP 7140972 B2 JP7140972 B2 JP 7140972B2 JP 2018239503 A JP2018239503 A JP 2018239503A JP 2018239503 A JP2018239503 A JP 2018239503A JP 7140972 B2 JP7140972 B2 JP 7140972B2
Authority
JP
Japan
Prior art keywords
read
address
request
memory
memory module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018239503A
Other languages
English (en)
Other versions
JP2020101983A (ja
Inventor
真一 岩▲崎▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018239503A priority Critical patent/JP7140972B2/ja
Priority to US16/695,282 priority patent/US11314438B2/en
Publication of JP2020101983A publication Critical patent/JP2020101983A/ja
Application granted granted Critical
Publication of JP7140972B2 publication Critical patent/JP7140972B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Description

本発明は,演算処理装置、情報処理装置及び演算処理装置の制御方法に関する。
パソコンやサーバの主記憶装置には、主に揮発性メモリであるDRAMモジュールが使用されている。一方で、例えば、金融市場などの超高速取引を必要とする業界ではパソコンやサーバの処理速度の向上が重要である。そのため、例えばSSD(Solid State Drive)やHDD(Hard Disk Drive)に代表される2次記憶装置内のデータベースの一部を主記憶装置に展開することで、2次記憶装置へのアクセスを削減したインメモリデータベースが注目されている。
上記のような要求に応えるべく、DRAMより記憶容量が大きなメモリ素子をDRAMのメモリモジュールに搭載したデバイスが開発されている。その一つとして、単価は高いが高速アクセス可能なDRAM等の揮発性メモリと、単価が安く大容量のNAND型フラッシュメモリ等の不揮発性メモリと、を単一のメモリモジュール内に搭載したデバイスがある。例えばNVDIMM(Nonvolatile Dual In Line Memory Module)である。このメモリモジュールは、DRAMをキャッシュとして使用する大容量の不揮発性メモリモジュールである。
特開2017-220237号公報
NVDIMMなどの揮発性メモリと不揮発性メモリを混載したメモリモジュール(以下、不揮発性メモリモジュールと称する)は、揮発性メモリであるDRAMを大容量の不揮発性メモリのキャッシュとして使用する。不揮発性メモリモジュールは、通常読み出しを受信すると、DRAMキャッシュにヒットすればデータ取得までのレイテンシは短くなるが、DRAMキャッシュでミスすると揮発性メモリへのアクセスが発生しレイテンシは長くなる。その結果、不揮発性メモリモジュールは、読み出し順とは異なるアウトオブオーダでデータをホストに返信する。そして、読み出しのプロトコルでは、読み出しからデータ取得までの間にホストとメモリモジュールとが信号を送受信するハンドシェイクを行うため、DRAMのメモリモジュールよりレイテンシが長くなる。
一方、不揮発性メモリモジュールでは、ハンドジェークを省略してデータを取得でき、通常読み出しよりレイテンシを短くした投機読み出しが利用できる。この投機読み出しの場合、DRAMキャッシュでヒットした場合は通常読み出しよりレイテンシが短くなるが、ミスした場合は逆に長くなる。
そこで,本実施の形態の第1の側面の目的は,通常読み出しと投機読み出しとを適切に選択する演算処理装置、情報処理装置及び演算処理装置の制御方法を提供することにある。
本実施の形態の第1の側面は,メモリへの読み出し要求を発行する演算部と、
第1のレイテンシで読み出し可能で第1の容量を有する揮発性メモリと、前記第1のレイテンシより長い第2のレイテンシで読み出し可能で前記第1の容量より大きい第2の容量を有する不揮発性メモリとを有し、前記揮発性メモリが前記不揮発性メモリのキャッシュとして動作するメモリモジュールに対し、前記演算部からの読み出し要求に対応するアクセス制御を行うメモリアクセス制御部とを有し、
前記メモリアクセス制御部は、
前記演算部からの読み出し要求の要求アドレスを含む所定単位アドレス(ページアドレス)が登録される複数のエントリを有するアドレステーブルを有し、
前記読み出し要求に応答して、前記要求アドレスが前記アドレステーブルに記憶されたいずれかの前記所定単位アドレスに含まれる第1のケースの場合、投機読み出しを前記メモリモジュールに発行し、前記要求アドレスが前記アドレステーブルに登録されたいずれの前記所定単位アドレスにも含まれない第2のケースの場合、通常読み出しを前記メモリモジュールに発行し、
前記通常読み出しを発行した場合、前記メモリモジュールからの読み出しレディー信号に応答して送信要求信号を返信し、前記送信要求信号の返信から第1の所定時間後に読み出しデータを受信し、
前記投機読み出しを発行した場合、前記メモリモジュールからヒットフラグと読み出しデータを受信すると前記読み出しデータを取得し、ミスフラグと読み出しデータを受信すると前記読み出しデータを取得せず、
前記第2のケースの場合、前記アドレステーブル内のいずれかの登録中の所定単位アドレスを、前記要求アドレスを含む所定単位アドレスに置き換える、演算処理装置である。
第1の側面によれば,通常読み出しと投機読み出しとが適切に選択され、読み出しのデータ取得までのレイテンシを短くできる。
本実施の形態における演算処理装置と不揮発性メモリモジュールの構成例を示す図である。 通常読み出しでの動作シーケンスを示す図である。 通常読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。 通常読み出しでの動作シーケンスを示す図である。 通常読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。 投機読み出しでの動作シーケンスを示す図である。投機読み出しのコマンドは、例えばSREADである。 投機読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。 投機読み出しでの動作シーケンスを示す図である。投機読み出しのコマンドは、例えばSREADである。 投機読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。 不揮発性メモリモジュールのレイテンシの例のテーブルを示す図である。 不揮発性メモリモジュールとその2つのメモリへの読み出しデータの関係を示す図である。 本実施の形態におけるメモリアクセス制御部MACと不揮発性メモリモジュールNV_MMの構成例を示す図である。 第1の実施の形態におけるメモリアクセス制御部内のコマンド発行部CMD_ISSUの構成例を示す図である。 コマンド発行部CMD_ISSUの動作例のフローチャートを示す図である。 コマンド発行部のケース1,2の動作の具体例を示す図である。 第2の実施の形態におけるメモリアクセス制御部内のコマンド発行部CMD_ISSUの構成例を示す図である。 コマンド発行部CMD_ISSUの動作例のフローチャートを示す図である。 コマンド発行部の複数のケースの動作の具体例を示す図である。 メモリアクセス制御部がミスのたびにページアドレステーブルを更新する場合の動作例を示す図である。 メモリアクセス制御部が読み出し要求N回毎に1回ページアドレステーブルを更新する動作例を示す図である。 通常読み出しXREADのみを発行した場合または投機読み出しSREADのみを発行した場合と、第2の実施の形態のようにページアドレステーブルにヒットか否かでXREADまたはSREADを発行した場合との比較を示す図である。
[本実施の形態における演算処理装置と不揮発性メモリモジュール]
図1は、本実施の形態における演算処理装置と不揮発性メモリモジュールの構成例を示す図である。情報処理装置1は、演算処理装置(プロセッサまたは中央演算ユニット(Central Processor Unit)、以下プロセッサと称する。)CPUと、不揮発性メモリモジュールNV_MMとを有する。プロセッサCPUは、不揮発性メモリモジュールをメインメモリとして使用する。
プロセッサCPUは、それぞれ演算器2とレベル1のキャッシュL1_CACHEとを有するn個(nは複数)の演算部としての演算コアCORE_0~CORE_n-1と、複数の演算コア(以下、単に「コア」と称する)に共通に設けられたレベル2のキャッシュL2_CACHEと、メモリアクセス制御部MACとを有する。メモリアクセス制御部は、プロセッサCPUとは別のチップで構成されてもよい。また、プロセッサCPUは、1個または複数個設けられても良い。
また、不揮発性メモリモジュールMV_MMは、メモリ制御部M_CONと、DRAM等の揮発性メモリV_MEMと、NAND型フラッシュメモリ等の不揮発性メモリNV_MEMとを有する。揮発性メモリV_MEMは、不揮発性メモリNV_MEMのキャッシュとして使用される。したがって、揮発性メモリV_MEM内にはキャッシュタグが格納される。
コアCOREは、図示しない命令フェッチ及び命令デコーダを含む命令発行部が命令を発行し、演算器2が発行された命令を実行する。発行された命令の実行においてメモリアクセスが必要な場合、コアは、メモリへのアクセスを要求するメモリ要求を発行する。メモリ要求には、読み出し要求と書き込み要求が含まれる。そして、L1キャッシュL1_CACHEは、発行されたメモリ要求がキャッシュヒットの場合、L1キャッシュ内のデータの読み出しまたはデータへの書き込みを含むメモリ要求を実行し、一方、キャッシュミスの場合、更にメモリ要求をL2キャッシュL2_CACHEに発行する。
L2キャッシュL2_CACHEは、複数のコアから発行されるメモリ要求に応答して、L1キャッシュと同様に、発行されたメモリ要求がキャッシュヒットの場合、L2キャッシュ内のデータに対してメモリ要求を実行し、一方、キャッシュミスの場合、更にメモリ要求をメモリアクセス制御部MACに発行する。
[不揮発性メモリモジュールの読み出し]
メモリ要求が読み出し要求の場合について、メモリアクセス制御部MACと不揮発性メモリモジュールNV_MMの動作を簡単に説明する。前述したとおり、不揮発性メモリモジュールNV_MMは、メモリ制御部M_CONと、DRAM等の揮発性メモリV_MEMと、NAND型フラッシュメモリ等の不揮発性メモリNV_MEMとを有する。揮発性メモリV_MEMは、不揮発性メモリNV_MEMのキャッシュとして使用される。また、揮発性メモリV_MEMの読み出しのレイテンシは、不揮発性メモリNV_MEMより短く、一方、揮発性メモリのデータ容量は不揮発性メモリより小さい。
さらに、不揮発性メモリモジュールへの読み出しはバイト単位(1バイトまたは複数バイト)で行われる。また、揮発性メモリV_MEMへの読み出しもバイト単位で行われる。一方、不揮発性メモリNV_MEMへの読み出しはバイト単位より大きい容量のページ単位で行われる。
メモリ制御部M_CONは、メモリアクセス制御部MACからの読み出しに応答して、揮発性メモリでキャッシュヒットすれば、揮発性メモリV_MEM内の読み出し先のバイト単位のデータをメモリアクセス制御部MACに返信する。一方、キャッシュミスすれば、不揮発性メモリNV_MEM内の読み出しアドレスを含むページ領域のデータを揮発性メモリV_MEMに登録し(記憶し)、読み出しアドレスに対応するバイト領域のデータをメモリアクセス制御部MACに返信する。
揮発性メモリV_MEMがDRAMの場合、読み出しのレイテンシはDRAMと同様に短い。そのため、キャッシュヒットした場合、不揮発性メモリモジュールは、揮発性メモリV_MEM内のデータをメモリアクセス制御部に応答するので、DRAMと同様に読み出しレイテンシが短くなる。一方、キャッシュミスした場合、不揮発性メモリモジュールは、不揮発性メモリNV_MEM内のデータをメモリアクセス制御部に応答するので、DRAMより長い読み出しレイテンシになる。
読み出しレイテンシがメモリモジュール内の状態に応じて異なるので、揮発性メモリモジュールV_MMは、メモリアクセス制御部MACに対して、読み出し順ではなくアウトオブオーダで読み出しデータを応答する。このアウトオブオーダでのデータ応答を考慮して、不揮発性メモリモジュールNV_MMは、2種類の読み出し、即ち、通常読み出しと投機読み出しをサポートする。通常読み出しは、投機読み出しではない非投機(ノンスペキュレイティブ)読み出しである。
前述したとおり、揮発性メモリV_MEMが不揮発性メモリNV_MEMのキャッシュとして使用されるために、不揮発性メモリモジュールVM_MMは、例えば、揮発性メモリ内に記憶されているデータのアドレス情報を登録するキャッシュタグと同等の記憶手段を有する。キャッシュタグは、例えば、揮発性メモリV_MEM内に設けられるが、メモリ制御部M_CON内に設けられても良い。また、キャッシュミスすると、不揮発性メモリ内の読み出し先のデータを含むページ領域のデータが揮発性メモリ内に登録され、例えば、キャッシュタグ内に読み出し先アドレスを含むページ領域のアドレス情報(所定単位アドレスの情報またはページアドレスの情報)が登録される。但し、揮発性メモリモジュールの予定されている規格には、上記のキャッシュ制御に関する要件は含まれていない。
次に、不揮発性メモリモジュールがサポートする通常読み出しと投機読み出しについて説明する。
[通常読み出しXREAD]
図2,図4は、通常読み出しでの動作シーケンスを示す図である。通常読み出しのコマンドは、例えばXREADである。図2,図4には、メモリアクセス制御部MACと、不揮発性メモリモジュールNV_MEM内のメモリ制御部M_CONと揮発性メモリV_MEMと不揮発性メモリNV_MEMが示される。
図3,5は、通常読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。図3,図5には、メモリアクセス制御部MACがコマンド等を出力するコマンドバスCMDと、不揮発性メモリモジュールNV_MMが出力する読み出し応答信号RSP_Rと、データバスDQと、ECCバスECCと、メタデータ信号META_DATAが示される。
図2,図3に示す通常読み出しXREADがキャッシュヒットする場合、以下の動作になる。メモリアクセス制御部MACは、通常読み出しXREADとそのアドレスXADDとをコマンドバスCMDに発行する。通常読み出しXREADにはユニークな読み出し識別子RIDが付加される。
通常読み出しXREADに応答して、不揮発性メモリモジュールのメモリ制御部M_CONは、揮発性メモリV_MEMにアクセスし、キャッシュヒットしてデータ応答が可能になると、リードレディ信号RD_RDYをメモリアクセス制御部MACに送信する。そして、メモリアクセス制御部MACがリードレディ信号RD_RDYに応答して、送信要求信号SENDをコマンドバスCMDを介して不揮発性メモリモジュールに送信する。
この送信要求信号SENDの発行から所定時間tSEND後に、不揮発性メモリモジュールは、読み出しデータDATAをメモリアクセス制御部MACに送信する。読み出しデータDATAに加えて、ECC信号ECCと、読み出し識別子RIDも送信される。このように、不揮発性メモリモジュールNV_MMは、メモリアクセス制御部MACとリードレディ信号RD_RDY及び送信要求信号SENDによるハンドシェイクを行った後、メモリアクセス制御部MACにデータ応答する。
この場合、揮発性メモリV_MEMでキャッシュヒットしたため、通常読み出しXREADからデータ応答までのレイテンシは、DRAMと同様に短くなる。但し、ハンドシェイクが行なわれる分、レイテンシはDRAMより長くなる。
図4,図5は、通常読み出しがキャッシュミスする場合の動作である。図2,図3と同様に、メモリアクセス制御部MACは、通常読み出しXREADとそのアドレスXADDとをコマンドバスCMDに発行する。通常読み出しXREADにはユニークな読み出し識別子RIDが付加される。
通常読み出しXREADに応答して、不揮発性メモリモジュールのメモリ制御部M_CONは、揮発性メモリV_MEMにアクセスしキャッシュミスすると、不揮発性メモリNV_MEMにアクセスする。そして、不揮発性メモリNV_MEMから読み出されたページ単位のデータを揮発性メモリに登録し(記憶し)、データ応答が可能になり、リードレディ信号RD_RDYをメモリアクセス制御部MACに送信する。そして、メモリアクセス制御部MACが、リードレディ信号RD_RDYに応答して送信要求信号SENDをコマンドバスCMDを介して不揮発性メモリモジュールに送信する。
この送信要求信号SENDの発行から所定時間tSEND後に、不揮発性メモリモジュールは、読み出しデータDATAをメモリアクセス制御部MACに送信する。読み出しデータDATAに加えて、ECC信号ECCと、読み出し識別子RIDも送信される。このように、不揮発性メモリモジュールNV_MMは、キャッシュミスの場合、不揮発性メモリからデータを読み出し揮発性メモリに登録する。そして、メモリアクセス制御部MACとリードレディ信号RD_RDY及び送信要求信号SENDによるハンドシェイクを行った後、メモリアクセス制御部MACにデータ応答する。
不揮発性メモリNV_MEMへのレイテンシが揮発性メモリよりも長いので、不揮発性メモリモジュールがデータ応答するまでのレイテンシは、キャッシュヒットの場合よりもかなり長くなる。例えば、キャッシュヒットの場合のレイテンシは約60nsec、キャッシュミスの場合のレイテンシは平均300nsecである。
[投機読み出しSREAD]
図6,図8は、投機読み出しでの動作シーケンスを示す図である。投機読み出しのコマンドは、例えばSREADである。図7,9は、投機読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。
図6,図7に示す投機読み出しSREADがキャッシュヒットする場合、以下の動作になる。メモリアクセス制御部MACは、通常読み出しXREADと同様に、投機読み出しSREADとそのアドレスXADDとをコマンドバスCMDに発行する。投機読み出しSREADにもユニークな読み出し識別子RIDが付加される。
投機読み出しSREADに応答して、不揮発性メモリモジュールのメモリ制御部M_CONは、揮発性メモリV_MEMにアクセスし、キャッシュヒットまたはミスにかかわらず、投機読み出しSREADから所定時間tSEND後に、データ応答する。不揮発性メモリモジュールは、データ応答で、キャッシュヒットの場合は揮発性メモリから読み出したデータを、ECCコードとキャッシュヒットフラグH/Mと共に、メモリアクセス制御部MACに返信する。メモリアクセス制御部は、キャッシュヒットフラグがキャッシュヒットの場合、受信したデータを取得する。一方、キャッシュミスの場合は、不揮発性メモリモジュールは、ダミーのデータを、ECCコードとキャッシュヒットフラグと共に、返信し、メモリアクセス制御部は、キャッシュヒットフラグがキャッシュミスであるので、受信したデータを破棄し、リードレディ信号を待つ。
上記のとおり、投機読み出しでは、キャッシュヒットした場合、不揮発性メモリモジュールは、リードレディ信号と送信要求信号SENDによるハンドシェイクを行わないで、投機読み出しから所定時間tSEND後にデータ応答する。よって、DRAMと同等に短いレイテンシになり、通常読み出しXREADでキャッシュヒットした場合よりも短いレイテンシ、例えば30nsec、になる。
図8,図9に示す投機読み出しがキャッシュミスする場合、以下の動作になる。まず、メモリアクセス制御部MACは、投機読み出しSREADとそのアドレスXADDとをコマンドバスCMDに発行する。投機読み出しSREADにはユニークな読み出し識別子RIDが付加される。
投機読み出しSREADに応答して、不揮発性メモリモジュールのメモリ制御部M_CONは、揮発性メモリV_MEMにアクセスし、キャッシュヒットまたはミスにかかわらず、投機読み出しSREADから所定時間tSEND後に、データ応答する。不揮発性メモリモジュールは、データ応答で、キャッシュミスの場合はダミーの読み出したデータを、ECCコードとキャッシュヒットフラグH/Mと共に、メモリアクセス制御部MACに返信する。メモリアクセス制御部は、キャッシュヒットフラグがキャッシュミスであるので、受信したデータを破棄し、リードレディ信号を待つ。
一方、不揮発性メモリモジュールのメモリ制御部M_CONは、キャッシュミスしたため、不揮発性メモリにアクセスし、読み出しアドレスを含むページ領域のデータを読み出し、揮発性メモリに登録する。さらに、不揮発性メモリモジュールは、リードレディ信号をメモリアクセス制御部MACに送信する。そして、メモリアクセス制御部MACがリードレディ信号RD_RDYに応答して、送信要求信号SENDをコマンドバスCMDを介して不揮発性メモリモジュールに送信する。
この送信要求信号SENDの発行から所定時間tSEND後に、不揮発性メモリモジュールは、読み出しデータDATAをメモリアクセス制御部MACに送信する。読み出しデータDATAに加えて、ECC信号ECCと、読み出し識別子RIDも送信される。
投機読み出しでキャッシュミスの場合、投機読み出しSREADから所定時間tSEND後の投機的データ応答が追加されるので、メモリアクセス制御部と不揮発性メモリモジュール間のバスの使用効率が悪化する。そのため、投機読み出しでキャッシュミスの場合、通常読み出しでキャッシュミスした場合よりレイテンシが長く、例えば平均400nsecになる。
図10は、不揮発性メモリモジュールのレイテンシの例のテーブルを示す図である。このテーブルに示すとおり、通常読み出しXREADのレイテンシの例は、キャッシュヒットすると60nsec、キャッシュミスすると平均300nsecである。一方、投機読み出しSREADのレイテンシの例は、キャッシュヒットすると30nsec、キャッシュミスすると平均400nsecである。この表からすると、メモリアクセス制御部MACは、キャッシュヒットする場合は、投機読み出しSREADを発行するのが望ましく、キャッシュミスする場合は、通常読み出しXREADを発行するのが望ましいことが理解できる。逆に、キャッシュミスする場合に投機読み出しを発行すると長いレイテンシが大きなペナルティになる。
図11は、不揮発性メモリモジュールとその2つのメモリへの読み出しデータの関係を示す図である。図11には、不揮発性メモリモジュールVM_MMの揮発性メモリV_MEMと不揮発性メモリNV_MEMの読み出しデータのサイズが示される。両メモリは、マトリクスの各行が1ページに対応するデータサイズであり、各行の1ページは複数のバイトを有する。図11では、単純化して、1ページは8バイトを有しているが、実際には、1ページのデータは、数キロバイトのデータを有する。また、不揮発性メモリNV_MEMのページ数は、揮発性メモリV_MEMのページ数より大きい。
メモリアクセス制御部MACが発行する読み出しREADには、読み出し先のアドレスとデータサイズが付加され、図11の例では、アドレスADDがB300であり、データサイズが64バイトである。この読み出しREADに応答して、不揮発性メモリモジュールは、揮発性メモリでキャッシュヒットした場合、アドレスB300の1バイトのデータを先頭に、64バイトのデータを読み出す。一方、揮発性メモリでキャッシュミスした場合、不揮発性メモリモジュールは、不揮発性メモリNV_MEM内のアドレスB300を含むページアドレスBxxxの1ページのデータを読み出し、揮発性メモリV_MEMに記憶し登録する。さらに、不揮発性メモリモジュールは、登録した1ページのデータから、アドレスB300の1バイトのデータを先頭に64バイトのデータを、メモリアクセス制御部に応答する。
上記の例では、アドレスB300は、1バイトのデータに対するアドレスであり、アドレスBxxxは、1ページのデータに対するページアドレスである。
上記の通り、不揮発性メモリモジュールは、読み出しREADのアドレスB300について揮発性メモリでキャッシュミスすると、不揮発性メモリから読み出しのアドレスB300を含む1ページのデータを読み出し、揮発性メモリに登録する。したがって、その後発行された読み出しREADのアドレスが、B100, B200など、ページアドレスBxxxの1ページ内のアドレスであれば、不揮発性メモリモジュールは、揮発性メモリでキャッシュヒットし、揮発性メモリから読み出したデータを応答する。このように、不揮発性メモリモジュールに対する読み出しのデータサイズ(バイト単位)が、不揮発性メモリの読み出しのデータサイズ(ページ単位)より小さい。従って、一旦、キャッシュミスして不揮発性メモリの1ページのデータが揮発性メモリに登録されると、その後の読み出しREADのアドレスが同一ページ内であれば、キャッシュヒットする可能性が高い。
[本実施の形態のメモリアクセス制御部]
図12は、本実施の形態におけるメモリアクセス制御部MACと不揮発性メモリモジュールNV_MMの構成例を示す図である。メモリアクセス制御部MACは、プロセッサ内のラストレベルキャッシュ(図1ではL2キャッシュ)から発行されるメモリ要求M_RQを受信し、受信したメモリ要求を要求キューRQ_QUEに保存する。リクエスト発行制御部RQ_ISSU_CONは、要求キューRQ_QUE内の発行可能なメモリ要求M_RQを選択する。発行可能か否かは、例えば不揮発性メモリモジュールの読み出しの発行禁止期間以外か否かなど読み出し発行ルールに基づく。そして、コマンド発行部CMD_ISSUは、選択されたメモリ要求M_RQが読み出し要求の場合、通常読み出しXREADか投機読み出しSREADのいずれかを選択し、不揮発性メモリモジュールNV_MMに発行する。
不揮発性メモリモジュールNV_MMは、図1に示したものと同じ構成を有する。不揮発性メモリモジュールは、受信した通常読み出しXREADまたは投機読み出しSREADに対するデータを、内部の揮発性メモリまたは不揮発性メモリから読み出し、読み出したデータを、データバスDATAを介して、メモリアクセス制御部MACに返信する。不揮発性メモリモジュールは、読み出しデータの返信と共に、読み出しデータのエラー訂正コードECCと読み出し識別子RIDなどが別のバスを介して返信する。
メモリアクセス制御部MACは、データ受信部DATA_RCVが、読み出しデータDATAとECCとRIDを受信し、ECCに基づいてデータDATAのエラーを訂正し、訂正後のデータをラストレベルキャッシュに応答する。
[第1の実施の形態におけるメモリアクセス制御部]
図13は、第1の実施の形態におけるメモリアクセス制御部内のコマンド発行部CMD_ISSUの構成例を示す図である。コマンド発行部CMD_ISSUは、投機読み出しSREAD対象のページアドレスを複数登録するページアドレステーブルTBLと、ページアドレスの更新エントリを指すポインタPTRと、コマンド選択部CMD_SELとを有する。
前述したとおり、不揮発性メモリモジュールは、揮発性メモリにキャッシュ登録されているデータに対応するアドレス情報(ページアドレス)をキャッシュタグに記憶し、読み出しXREADまたはSREADに応答して、キャッシュタグのアドレス情報が読み出しアドレスにヒットするか否かのキャッシュヒット判定を行う。コマンド発行部CMD_ISSU内のページアドレステーブルTBLのページアドレスを記憶するエントリ数は、キャッシュタグのエントリ数よりもかなり少ない。
図14は、コマンド発行部CMD_ISSUの動作例のフローチャートを示す図である。コマンド選択部CMD_SELは、入力されるメモリ要求M_RQが読み出し要求の場合(S1のYES)、ページアドレステーブルTBLを参照し、通常読み出しXREADか投機読み出しSREADのいずれかを選択し、不揮発性メモリモジュールに発行する。
具体的には、コマンド選択部CMD_SELは、読み出し要求のアドレスが、ページアドレステーブルTBLに登録中のページアドレスのいずれにも含まれない第2のケースでは(ミス)(S2のNO)、通常読み出しXREADを選択しメモリモジュールに発行する(S4)。それと共に、ページアドレステーブルTBLのポインタPTRが指し示すエントリに、読み出し要求のアドレスを含むページアドレスを登録する(S4)。このとき、エントリ内に既登録のページアドレスは新しいページアドレスに置き換えられる(S4)。また、ポインタPTRは+1インクリメントされる。ポインタPTRは、ページアドレスの更新が行われるたびに、例えばページアドレステーブルのインデックス順(または逆順)にインクリメントされる。
一方、コマンド選択部CMD_SELは、読み出し要求のアドレスが、ページアドレステーブルTBLに登録中のいずれかのページアドレスに含まれる第1のケース(ヒット)(S2のYES)では、投機読み出しSREADを選択し発行する(S3)。メモリモジュールでキャッシュヒットする可能性が高いからである。
図15は、コマンド発行部のケース1,2の動作の具体例を示す図である。前提として、ページアドレステーブルTBLには、ページアドレスAxxx, Bxxx, Cxxx, Dxxxが登録中である。このことは、メモリモジュールでは、以前ページアドレスAxxx, Bxxx, Cxxx, Dxxxのデータが揮発性メモリ内に記憶されたことがあることを意味する。
ケース1(CASE1)の場合、読み出し要求のアドレスADDがバイトアドレスC200であり、ページアドレステーブル内のページアドレスCxxxに含まれ、ページアドレステーブルヒットHITである。そのため、コマンド選択部CMD_SELは、読み出し要求に対して、投機読み出しSREADを発行する。
一方、ケース2(CASE2)の場合、読み出し要求のアドレスADDがバイトアドレスE030であり、ページアドレステーブル内のいずれのページアドレスにも含まれず、ページアドレステーブルミスMISSである。そのため、コマンド選択部CMD_SELは、読み出し要求に対して通常読み出しXREADを発行する。さらに、コマンド選択部は、ポインタPTRが指し示すページアドレスAxxxを、読み出し要求のアドレスE030を含む新たなページアドレスExxxに置換する更新処理UPDATEを行い、ポインタPTRを1つインクリメントする。
上記のメモリアクセス制御部は、読み出し要求のアドレスがページアドレステーブルに登録中のいずれのページアドレスにも含まれないケース2(ミス)の場合、通常読み出しXREADを選択して発行し、その読み出し要求のアドレスのページアドレスをページアドレステーブルに登録する。通常読み出しXREADを発行された不揮発性メモリモジュールは、キャッシュタグでキャッシュミスになると、不揮発性メモリにアクセスし読み出しアドレスを含むページアドレスの1ページのデータを読み出し、揮発性メモリに登録する。
そのため、その後、要求キューRQ_QUEで選択された読み出し要求M_RQのアドレスがページアドレステーブルに登録されたいずれかのページアドレスに含まれるケース1の場合、不揮発性メモリモジュールでキャッシュヒットする可能性が高い。そこで、メモリアクセス制御部のコマンド発行部CMD_ISSUは、前記の読み出し要求に応答して投機読み出しSREADを発行する。この投機読み出しSREADは、不揮発性メモリモジュールでキャッシュヒットする可能性が高く、不揮発性メモリモジュールが、ハンドシェイクなしに応答するデータにヒット状態のヒットフラグを付加してコアのメモリアクセス制御部MACに応答する可能性が高い。そのため、メモリアクセス制御部は、投機読み出しSREADの最短のレイテンシでデータを取得できる可能性が高い。
逆に、読み出し要求のアドレスが登録中のいずれのページアドレスにも含まれないケース2の場合、キャッシュヒットする可能性がケース1よりも低い。そこで、コマンド選択部CMD_SELは、通常読み出しXREADを選択し発行する。この通常読み出しXREADは、たとえ不揮発性メモリモジュールでキャッシュミスしても、投機読み出しSREADでのキャッシュミスよりもレイテンシが短く、投機読み出しSREADのキャッシュミス時の最長レイテンシでデータを受信することを回避できる。
但し、前述のとおり、メモリアクセス制御部MAC内のページアドレステーブルのエントリ数は、不揮発性メモリモジュール内のキャッシュタグのエントリ数より少ないので、必ずしも、ページアドレステーブル内のページアドレスと、不揮発性メモリモジュール内のキャッシュタグ内のページアドレスとは一致していない。そのため、通常読み出しXREADでキャッシュヒットすることもあれば、投機読み出しSREADでキャッシュミスすることも生じうる。
[第2の実施の形態におけるメモリアクセス制御部]
図1に示すとおり、不揮発性メモリモジュールに読み出し要求を発行するプロセッサが複数のコアを有する場合、複数のコアはそれぞれが実行するプロセスにおいて読み出し要求を別々に発行する。そのため、複数のコアがそれぞれ発行する読み出し要求のアドレスは、ランダムなアドレスになることが予想される。但し、1つのコアが発行する読み出し要求のアドレスは、一般に、ある時間内にあるアドレス領域内に集中する時間的局所性及び空間的局所性があることが予想できる。
一方、不揮発性メモリモジュール内のキャッシュタグのエントリ数に比較すると、メモリアクセス制御部内のページアドレステーブルのエントリ数は非常に少ないことがある。例えば、メモリアクセス制御部MACがプロセッサCPUのチップ内に内蔵される場合、ページアドレステーブルのエントリ数には一定の上限が設けられる。
上記のようにマルチコアプロセッサのメインメモリとして不揮発性メモリモジュールを使用する場合、マルチコアからの読み出し要求のアドレスは、複数のコア間ではランダムなアドレスになる。また、メモリアクセス制御部内のページアドレステーブルのエントリ数に限りがあり少ない。そのため、第1の実施の形態のように、ページアドレステーブルの更新をケース2のたびに毎回行うと、ページアドレステーブルに新たに登録されたページアドレスに含まれるアドレスの読み出し要求が、その登録後再入力されるまでに、そのページアドレスがページアドレステーブルから追い出されることが頻繁に発生する。その場合、不揮発性メモリモジュール内のキャッシュタグのエントリ数は多いため、再入力された読み出し要求はキャッシュタグではヒットするが、ページアドレステーブルではミスとなり、最短のレイテンシで読み出せる可能性のある投機読み出しSREADを発行できなくなる。
そこで、第2の実施の形態では、ケース2のたびに毎回ページアドレステーブルを更新せず、ケース2になる頻度より少ない頻度でページアドレステーブルを更新する。例えば、ケース2が所定回数発生する毎に一回、ページアドレステーブルを更新する。または、ケース1が所定回数発生する毎に一回、ページアドレステーブルを更新する。あるいは、読み出し要求が所定回数発生する毎に一回、ページアドレステーブルを更新する。
図16は、第2の実施の形態におけるメモリアクセス制御部内のコマンド発行部CMD_ISSUの構成例を示す図である。第1の実施の形態と同様に、コマンド発行部CMD_ISSUは、投機読み出しSREAD対象のページアドレスを複数登録するページアドレステーブルTBLと、ページアドレスの更新対象のエントリを指すポインタPTRと、コマンド選択部CMD_SELとを有する。さらに、コマンド発行部CMD_ISSUは、コアからの読み出し要求等をカウントするカウンタCNTRと、所定回数Nを記憶するレジスタNを有する。このカウンタCNTRは、前述のケース2の回数、ケース1の回数、または読み出し要求の回数をカウントする。そして、カウンタCNTRが所定回数、例えばN回、に達していれば、ケース2においてページアドレステーブルを新たなページアドレスで更新する。また、レジスタNの所定回数Nは、ユーザ等により書き換え可能(変更可能)である。
図17は、コマンド発行部CMD_ISSUの動作例のフローチャートを示す図である。この例では、カウンタCNTRは読み出し要求の回数をカウントする。
まず、コマンド選択部CMD_SELは、入力されるメモリ要求M_RQが読み出し要求の場合(S1のYES)、ページアドレステーブルTBLを参照し、通常読み出しXREADか投機読み出しSREADのいずれかを選択し、不揮発性メモリモジュールに発行する。
コマンド選択部CMD_SELは、入力された読み出し要求のアドレスが、ページアドレステーブルに登録中のいずれかのページアドレスに含まれるケース1(ヒット)か、いずれのページアドレスにも含まれないケース2(ミス)かの判定を実行する(S2)。
ケース1(ヒット)の場合(S2のYES)、カウンタCNTRが所定回数Nに達していない場合(S11のNO)、コマンド選択部CMD_SELは、投機読み出しSREADを選択して発行し、カウンタを+1インクリメントする(S12)。一方、カウンタCNTRが所定回数Nに達していない場合(S11のYES)、コマンド選択部CMD_SELは、投機読み出しSREADを選択して発行し、カウンタをインクリメントしない(S13)。
逆に、判定S2でケース2(ミス)の場合、カウンタCNTRが所定回数Nに達していない場合(S14のNO)、コマンド選択部CMD_SELは、通常読み出しXREADを選択して発行し、カウンタを+1インクリメントする(S15)。一方、カウンタCNTRが所定回数Nに達している場合(S14のYES)、コマンド選択部CMD_SELは、投機読み出しSREADを選択して発行し、ページアドレステーブルのポインタが指すエントリを読み出し要求のアドレスを含むページアドレスに置換または更新し、カウンタを0にリセットする(S16)。
図18は、コマンド発行部の複数のケースの動作の具体例を示す図である。前提として、ページアドレステーブルTBLには、ページアドレスAxxx, Bxxx, Cxxx, Dxxxが登録中である。
ケース1_1(CASE1_1)の場合、メモリ要求M_RQが読み出し要求であり、読み出し要求のアドレスADDがバイトアドレスC200であり、ページアドレステーブル内のページアドレスCxxxに含まれるので、ヒットHITである。そのため、コマンド選択部CMD_SELは、投機読み出しSREADを発行する。そして、コマンド選択部は、カウンタがNに達していないので、カウンタを+1インクリメントする(S12)。
一方、ケース2_1(CASE2_1)の場合、メモリ要求が読み出し要求であり、そのアドレスADDがバイトアドレスE030であり、ページアドレステーブル内のいずれのページアドレスにも含まれないので、ミスMISSである。そのため、コマンド選択部CMD_SELは、通常読み出しXREADを発行する。さらに、コマンド選択部は、カウンタがNに達していないので、カウンタを+1インクリメントする(S15)。但し、コマンド選択部は、カウンタがNに達していないので、ページアドレステーブルを新たなページアドレスに更新しない。
次に、ケース1_2(CASE1_2)の場合、メモリ要求のアドレスADDがバイトアドレスD300であり、ページアドレステーブル内のページアドレスDxxxに含まれるので、ヒットHITである。そのため、コマンド選択部は、投機読み出しSREADを発行する。そして、カウンタがNに達しているので、カウンタのインクリメントは行わない(S13)。
最後に、ケース2_2(CASE2_2)の場合、メモリ要求のアドレスADDがバイトアドレスF300であり、ページアドレステーブル内のいずれのページアドレスにも含まれないので、ミスMISSである。そのため、コマンド選択部CMD_SELは、通常読み出しXREADを発行する(S16)。さらに、ポインタPTRが指し示すページアドレスAxxxを、読み出し要求のアドレスE030を含む新たなページアドレスFxxxに変換する更新処理UPDATEを行い、ポインタPTRを0にリセットする(S16)。
図19は、メモリアクセス制御部がミスのたびにページアドレステーブルを更新する場合の動作例を示す図である。図19中、左側に縦方向の時間軸tに沿って、読み出し要求のアドレスと発行した通常読み出しXREADまたは投機読み出しSREADが示され、右側に時間0-16に対応するページアドレステーブルの変遷例を示す。ページアドレステーブルは4つのエントリを有する例である。左側の読み出し要求のアドレスは4ビットの16進数で記載し、右側のページアドレステーブルP_ADD_TBLには、ポインタPが指すインデックス0~3のエントリに、読み出し要求のアドレスの最上位ビットをそのまま最上位ビットに表示し下位3ビットを「x」で表示するページアドレスが記載される。
左側の時間軸tに沿った読み出し要求のアドレスは、マルチコアプロセッサからの例であり、アトランダムになっている。そして、右側のページアドレステーブルは、時間4,5,6,7,8,10,11,12,13,14,15,16でそれぞれ新しいページアドレスに更新されている。
この例では、時間5でページアドレステーブルに登録されたページアドレス「5xxx」に、時間9の読み出し要求のアドレス「5F40」がヒットして、時間9で投機読み出しSREADが発行されている。一方、それ以外の時間では全て読み出し要求のアドレスを含むページアドレスがテーブル内に登録されておらずミスとなり、通常読み出しXREADが発行されている。
図20は、メモリアクセス制御部が読み出し要求N回毎に1回ページアドレステーブルを更新する動作例を示す図である。左側の時間軸に対するアドレス例は図19と同じである。
この場合、右側のページアドレステーブルは、時間0-15ではページアドレスの更新は発生せず、時間16にページアドレスの更新が行われる。そして、左側の時間軸に対応して示される発行された読み出しは、時間8,10,12,13で投機読み出しSREADになる。このように、ページアドレステーブルの更新頻度を、ケース2のミスになる頻度より少ない頻度にすることで、ページアドレステーブルのエントリ数が少なく、ランダムな読み出しアドレスの読み出し要求が入力された場合でも、投機読み出しSREADを適切に発行することができる。その結果、投機読み出しによるキャッシュヒット時の短いレイテンシでデータを取得する頻度を上げることができる。
上記のページアドレステーブルを更新する頻度を示す所定回数Nは、種々の要因により最適な値に設定されることが望ましい。例えば、(1)アドレステーブルのエントリ数に対するメモリモジュール内のキャッシュタグのエントリ数の比率が大きいほど、所定回数Nを大きくし、アドレステーブル内の登録中のページアドレスを読み出し要求のアドレスを含むページアドレスに置き換える頻度を低くする。(2)メモリモジュールに読み出し要求を発行するコアの数が多いほど、所定回数Nを大きくし、登録中のページアドレスを読み出し要求のアドレスを含むページアドレスに置き換える頻度を低くする。(3)所定回数Nを変更しながら、プロセッサに所定のプログラムを実行させて、平均レイテンシが最も短くなる所定回数Nに設定する。
図21は、通常読み出しXREADのみを発行した場合または投機読み出しSREADのみを発行した場合と、第2の実施の形態のようにページアドレステーブルにヒットか否かでXREADまたはSREADを発行した場合との比較を示す図である。2つの比較グラフそれぞれで、横軸が揮発性メモリV_MEMのキャッシュタグでのヒット率を、縦軸が平均レイテンシを示す。読み出し要求のアドレスを図19,20の様にランダムに発生させてシミュレーションを行った結果である。
投機読み出しSREADのみを発行した場合との比較では、キャッシュヒット率が低いほど、第2の実施の形態では適切に通常読み出しXREADを発行するので、レイテンシの差が大きくなる。また、通常読み出しXREADのみを発行した場合との比較では、逆に、キャッシュヒット率が高いほど、第2の実施の形態では適切に投機読み出しSREADを発行するので、レイテンシの差が大きくなる。いずれの比較においても、第2の実施の形態の平均レイテンシが比較対象より短くなることが示される。
以上のとおり、本実施の形態によれば、揮発性メモリと不揮発性メモリを搭載する不揮発性メモリモジュールに対する読み出し要求について、通常読み出しと投機読み出しを適宜選択して発行するので、平均的なレイテンシを短くできる。
CPU:プロセッサ、中央演算ユニット
CORE:コア、プロセッサコア
L2_CASCHE:レベル2キャッシュ
MAC:メモリアクセス制御部
NV_MM:不揮発性メモリモジュール、メモリモジュール
V_MEM:揮発性メモリ
NV_MEM:不揮発性メモリ
XREAD:通常読み出し
SREAD:投機読み出し
RD_RDY:リードレディ信号
SEND:送信要求信号

Claims (10)

  1. メモリへの読み出し要求を発行する演算部と、
    第1のレイテンシで読み出し可能で第1の容量を有する揮発性メモリと、前記第1のレイテンシより長い第2のレイテンシで読み出し可能で前記第1の容量より大きい第2の容量を有する不揮発性メモリとを有し、前記揮発性メモリが前記不揮発性メモリのキャッシュとして動作するメモリモジュールに対し、前記演算部からの読み出し要求に対応するアクセス制御を行うメモリアクセス制御部とを有し、
    前記メモリアクセス制御部は、
    前記演算部からの読み出し要求の要求アドレスを含む所定単位アドレスが登録される複数のエントリを有するアドレステーブルを有し、
    前記読み出し要求に応答して、前記要求アドレスが前記アドレステーブルに記憶されたいずれかの前記所定単位アドレスに含まれる第1のケースの場合、投機読み出しを前記メモリモジュールに発行し、前記要求アドレスが前記アドレステーブルに登録されたいずれの前記所定単位アドレスにも含まれない第2のケースの場合、通常読み出しを前記メモリモジュールに発行し、
    前記通常読み出しを発行した場合、前記メモリモジュールからの読み出しレディー信号に応答して送信要求信号を返信し、前記送信要求信号の返信から第1の所定時間後に読み出しデータを受信し、
    前記投機読み出しを発行した場合、前記メモリモジュールからキャッシュヒットを示すキャッシュヒットフラグと読み出しデータを受信すると前記読み出しデータを取得し、キャッシュミスを示すキャッシュヒットフラグと読み出しデータを受信すると前記読み出しデータを破棄し
    前記第2のケースの場合、所定の頻度で、前記アドレステーブル内のいずれかの登録中の所定単位アドレスを、前記要求アドレスを含む所定単位アドレスに置き換える、演算処理装置。
  2. 複数の前記演算部を有し、前記複数の演算部がそれぞれ前記読み出し要求を発行し、
    前記メモリアクセス制御部は、
    前記第2のケースの場合、毎回、前記いずれかの登録中の所定単位アドレスを前記要求アドレスを含む所定単位アドレスに置き換える、請求項1に記載の演算処理装置。
  3. 前記メモリアクセス制御部は、
    前記演算部からの読み出し要求の回数、前記第1のケースの回数、または前記第2のケースの回数のいずれかをカウントし、
    前記第2のケースの場合、前記カウントの値が基準値に達していれば、前記いずれかの登録中の所定単位アドレスを前記要求アドレスを含む所定単位アドレスに置き換えると共に前記カウントの値をクリアし、前記カウントの値が前記基準値未満であれば、前記置き換えを行わない、請求項に記載の演算処理装置。
  4. 前記メモリモジュールは、前記通常読み出しまたは前記投機読み出しに応答して、前記所定単位アドレスの情報が登録されるキャッシュタグを参照し読み出しアドレスを含む前記所定単位アドレスの情報が登録されているか否かをチェックし、
    前記アドレステーブルの複数のエントリの数が、前記キャッシュタグのエントリ数よりも少ない、請求項に記載の演算処理装置。
  5. 前記アドレステーブルの複数のエントリの数前記キャッシュタグのエントリ数に比較して少ないほど、前記アドレステーブルに登録中の所定単位アドレスを前記要求アドレスを含む所定単位アドレスに置き換える頻度が低く設定される、請求項4に記載の演算処理装置。
  6. 前記演算部の数が多いほど、前記アドレステーブルに登録中の所定単位アドレスを前記要求アドレスを含む所定単位アドレスに置き換える頻度が低く設定される、請求項4に記載の演算処理装置。
  7. 前記メモリアクセス制御部は、
    前記アドレステーブルの前記複数のエントリ内の最も古く登録された前記所定単位アドレスを、前記要求アドレスを含む所定単位アドレスに置き換える、請求項2記載の演算処理装置。
  8. 前記アドレステーブルに登録中の所定単位アドレスを前記要求アドレスを含む所定単位アドレスに置き換える頻度が変更可能である、請求項または4に記載の演算処理装置。
  9. 第1のレイテンシで読み出し可能で第1の容量を有する揮発性メモリと、前記第1のレイテンシより長い第2のレイテンシで読み出し可能で前記第1の容量より大きい第2の容量を有する不揮発性メモリとを有し、前記揮発性メモリが前記不揮発性メモリのキャッシュとして動作するメモリモジュールと、
    前記メモリモジュールにアクセス可能な演算処理装置を有し、
    前記演算処理装置は、
    前記メモリモジュールへの読み出し要求を発行する演算部と、
    前記メモリモジュールに対し、前記演算部からの読み出し要求に対応するアクセス制御を行うメモリアクセス制御部とを有し、
    前記メモリアクセス制御部は、
    前記演算部からの読み出し要求の要求アドレスを含む所定単位アドレスが登録される複数のエントリを有するアドレステーブルを有し、
    前記読み出し要求に応答して、前記要求アドレスが前記アドレステーブルに記憶されたいずれかの前記所定単位アドレスに含まれる第1のケースの場合、投機読み出しを前記メモリモジュールに発行し、前記要求アドレスが前記アドレステーブルに登録されたいずれの前記所定単位アドレスにも含まれない第2のケースの場合、通常読み出しを前記メモリモジュールに発行し、
    前記通常読み出しを発行した場合、前記メモリモジュールからの読み出しレディー信号に応答して送信要求信号を返信し、前記送信要求信号の返信から第1の所定時間後に読み出しデータを受信し、
    前記投機読み出しを発行した場合、前記メモリモジュールからキャッシュヒットを示すキャッシュヒットフラグと読み出しデータを受信すると前記読み出しデータを取得し、キャッシュミスを示すキャッシュヒットフラグと読み出しデータを受信すると前記読み出しデータを破棄し
    前記第2のケースの場合、所定の頻度で、前記アドレステーブル内のいずれかの登録中の所定単位アドレスを、前記要求アドレスを含む所定単位アドレスに置き換える、情報処理装置。
  10. メモリへの読み出し要求を発行する演算部と、
    第1のレイテンシで読み出し可能で第1の容量を有する揮発性メモリと、前記第1のレイテンシより長い第2のレイテンシで読み出し可能で前記第1の容量より大きい第2の容量を有する不揮発性メモリとを有し、前記揮発性メモリが前記不揮発性メモリのキャッシュとして動作するメモリモジュールに対し、前記演算部からの読み出し要求に対応するアクセス制御を行い、前記演算部からの読み出し要求の要求アドレスを含む所定単位アドレスが登録される複数のエントリを有するアドレステーブルを有するメモリアクセス制御部とを有する、演算処理装置の前記メモリアクセス制御部が、
    前記読み出し要求に応答して、前記要求アドレスが前記アドレステーブルに記憶されたいずれかの前記所定単位アドレスに含まれる第1のケースの場合、投機読み出しを前記メモリモジュールに発行し、前記要求アドレスが前記アドレステーブルに登録されたいずれの前記所定単位アドレスにも含まれない第2のケースの場合、通常読み出しを前記メモリモジュールに発行し、
    前記通常読み出しを発行した場合、前記メモリモジュールからの読み出しレディー信号
    に応答して送信要求信号を返信し、前記送信要求信号の返信から第1の所定時間後に読み出しデータを受信し、
    前記投機読み出しを発行した場合、前記メモリモジュールからキャッシュヒットを示すキャッシュヒットフラグと読み出しデータを受信すると前記読み出しデータを取得し、キャッシュミスを示すキャッシュヒットフラグと読み出しデータを受信すると前記読み出しデータを破棄し
    前記第2のケースの場合、所定の頻度で、前記アドレステーブル内のいずれかの登録中の所定単位アドレスを、前記要求アドレスを含む所定単位アドレスに置き換える、演算処理装置の制御方法。
JP2018239503A 2018-12-21 2018-12-21 演算処理装置、情報処理装置及び演算処理装置の制御方法 Active JP7140972B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018239503A JP7140972B2 (ja) 2018-12-21 2018-12-21 演算処理装置、情報処理装置及び演算処理装置の制御方法
US16/695,282 US11314438B2 (en) 2018-12-21 2019-11-26 Arithmetic processing device, information processing device, and control method for arithmetic processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018239503A JP7140972B2 (ja) 2018-12-21 2018-12-21 演算処理装置、情報処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2020101983A JP2020101983A (ja) 2020-07-02
JP7140972B2 true JP7140972B2 (ja) 2022-09-22

Family

ID=71097661

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018239503A Active JP7140972B2 (ja) 2018-12-21 2018-12-21 演算処理装置、情報処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US11314438B2 (ja)
JP (1) JP7140972B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002297379A (ja) 2001-03-29 2002-10-11 Hitachi Ltd ハードウェアプリフェッチシステム
US20180060257A1 (en) 2016-08-29 2018-03-01 Advanced Micro Devices, Inc. Nondeterministic memory access requests to non-volatile memory
JP2018055683A (ja) 2016-09-26 2018-04-05 三星電子株式会社Samsung Electronics Co.,Ltd. バイトアドレス可能なフラッシュ基盤メモリモジュール、nvdimm型モジュール、及びそのデータ格納方法
US20180219562A1 (en) 2017-01-27 2018-08-02 Futurewei Technologies, Inc. Transaction identification synchronization

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
JP3175675B2 (ja) * 1997-12-04 2001-06-11 日本電気株式会社 プリフェッチ制御装置
US6249851B1 (en) * 1998-08-25 2001-06-19 Stmicroelectronics, Inc. Computer system having non-blocking cache and pipelined bus interface unit
US6704844B2 (en) * 2001-10-16 2004-03-09 International Business Machines Corporation Dynamic hardware and software performance optimizations for super-coherent SMP systems
US6976131B2 (en) * 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
US7624236B2 (en) * 2004-12-27 2009-11-24 Intel Corporation Predictive early write-back of owned cache blocks in a shared memory computer system
US7475321B2 (en) * 2004-12-29 2009-01-06 Intel Corporation Detecting errors in directory entries
US10810144B2 (en) 2016-06-08 2020-10-20 Samsung Electronics Co., Ltd. System and method for operating a DRR-compatible asynchronous memory module

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002297379A (ja) 2001-03-29 2002-10-11 Hitachi Ltd ハードウェアプリフェッチシステム
US20180060257A1 (en) 2016-08-29 2018-03-01 Advanced Micro Devices, Inc. Nondeterministic memory access requests to non-volatile memory
JP2018055683A (ja) 2016-09-26 2018-04-05 三星電子株式会社Samsung Electronics Co.,Ltd. バイトアドレス可能なフラッシュ基盤メモリモジュール、nvdimm型モジュール、及びそのデータ格納方法
US20180219562A1 (en) 2017-01-27 2018-08-02 Futurewei Technologies, Inc. Transaction identification synchronization

Also Published As

Publication number Publication date
US20200201556A1 (en) 2020-06-25
JP2020101983A (ja) 2020-07-02
US11314438B2 (en) 2022-04-26

Similar Documents

Publication Publication Date Title
US11868618B2 (en) Data reading and writing processing from and to a semiconductor memory and a memory of a host device by using first and second interface circuits
US10908821B2 (en) Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US9792221B2 (en) System and method for improving performance of read/write operations from a persistent memory device
JP5762930B2 (ja) 情報処理装置および半導体記憶装置
US11210020B2 (en) Methods and systems for accessing a memory
US11914520B2 (en) Separate read-only cache and write-read cache in a memory sub-system
US12007917B2 (en) Priority scheduling in queues to access cache data in a memory sub-system
US11977491B2 (en) Prefetch kill and revival in an instruction cache
WO2024078342A1 (zh) 内存交换方法、装置、计算机设备及存储介质
CN112840331A (zh) 分层缓存系统中的预取管理
US11836092B2 (en) Non-volatile storage controller with partial logical-to-physical (L2P) address translation table
JP7140972B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
KR20220062399A (ko) 하이브리드 dimm에서 비순차적 처리를 위한 데이터 의존도 관리
US10649786B2 (en) Reduced stack usage in a multithreaded processor
US20240168891A1 (en) Page request interface support in handling host submission queues and completion automation associated with caching host memory address translation data
US20240143515A1 (en) Caching host memory address translation data in a memory sub-system
US20240160577A1 (en) Page request interface support in caching host memory address translation data in a memory sub-system
TW202223900A (zh) 快閃記憶體系統及其快閃記憶體裝置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220728

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220822

R150 Certificate of patent or registration of utility model

Ref document number: 7140972

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150