JP6334824B2 - メモリコントローラ、情報処理装置および処理装置 - Google Patents
メモリコントローラ、情報処理装置および処理装置 Download PDFInfo
- Publication number
- JP6334824B2 JP6334824B2 JP2017528259A JP2017528259A JP6334824B2 JP 6334824 B2 JP6334824 B2 JP 6334824B2 JP 2017528259 A JP2017528259 A JP 2017528259A JP 2017528259 A JP2017528259 A JP 2017528259A JP 6334824 B2 JP6334824 B2 JP 6334824B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- cache
- controller
- nonvolatile
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Description
具体的な内容を説明する前に、従来技術と併せて本実施形態の概要を説明する。MRAMやPCMやMemristorのような、プロセッサのメモリバスに直結できるバイトアドレッサブルで高速な不揮発メモリをメインメモリとして使用するコンピュータシステムは、高信頼・高性能が要求されるオンライントランザクション処理システムなどに利用すると、重要なデータをメインメモリに保存すれば該データを永続化できる。そのため、従来システムのように、ハードディスクやSSDにデータを保存する場合と比較して、データベースのデータを永続化する処理(コミット処理)を高速化できることが期待されている。
次に、第2の実施形態について説明する。上述の第1の実施形態と共通する部分については適宜に説明を省略する。本実施形態では、図13に示すように、プロセッサ300とメモリコントローラ100は、既存のキャッシュコヒーレンスプロトコルとは異なる、コミット処理向けに最適化したキャッシュコヒーレンスプロトコル(以下、「最適化プロトコル」と称する場合がある)を保証するインターコネクト800を介して接続される点で上述の第1の実施形態と相違する。インターコネクト800は、プロセッサ300の揮発キャッシュメモリ330と、メモリコントローラ100の不揮発キャッシュメモリ10の一貫性を維持するための最適化プロトコルを保証する。プロセッサ300およびメモリコントローラ100の基本的な構成は第1の実施形態と同様であるが、プロセッサ300およびメモリコントローラ100は、最適化プロトコルに従って動作する。
Claims (13)
- メモリコントローラであって、
前記メモリコントローラに接続された不揮発メインメモリに記憶されたデータの一部を記憶する不揮発キャッシュメモリと、
前記不揮発キャッシュメモリへのデータの書き込みを制御するコントローラと、を有し、
前記メモリコントローラは、
複数のキャッシュメモリ間のデータの不一致が起こらないようにするための手順を示すプロトコルを保証するインターコネクトを介して処理装置と接続され、
前記コントローラは、
前記プロトコルを利用して、前記処理装置が、前記不揮発メインメモリの何れかの領域に対応するデータを更新したことを検出した後に、その更新済みのデータを前記メモリコントローラへ送信させ、その更新済みのデータを前記不揮発キャッシュメモリに書き込む、
メモリコントローラ。 - 前記コントローラは、
前記処理装置から、前記不揮発メインメモリの何れかの領域に対応するデータを要求する第1の要求を受信した後に、前記領域に対応するデータと、該データを前記不揮発キャッシュメモリに保持していたことを示す情報とを含む第1応答メッセージを送信し、
前記第1応答メッセージを送信した後に、前記処理装置から、前記領域に対応するキャッシュラインを無効にすることを要求する第2の要求を受信したときに、前記処理装置が、前記領域に対応するデータを更新したことを検出する、
請求項1に記載のメモリコントローラ。 - 前記コントローラは、
前記第1の要求により要求された前記領域に対応するデータを前記不揮発キャッシュメモリに保持していない場合であっても、前記不揮発メインメモリの前記領域から読み出したデータと、該データを前記不揮発キャッシュメモリに保持していたことを示す情報とを含む前記第1応答メッセージを送信する、
請求項2に記載のメモリコントローラ。 - 前記コントローラは、
前記第2の要求を受信した後に、前記領域に対応するキャッシュラインを無効にする処理は行わずに、前記第2の要求に対する応答として、前記領域に対応するキャッシュラインを無効にしたことを通知するための第2応答メッセージを送信し、
前記第2応答メッセージを送信した後に、前記領域に対応するデータを要求する第3の要求を送信し、
前記第3の要求に対する応答として、前記処理装置により更新済みのデータを受信し、その受信した更新済みのデータを前記不揮発キャッシュメモリに書き込む、
請求項2または3に記載のメモリコントローラ。 - 前記第3の要求は、前記処理装置が更新した前記領域に対応するデータの更新を行うために前記領域に対応するデータを要求する情報であり、
前記コントローラは、前記第3の要求に対する応答として受信した更新済みのデータの更新は行わない、
請求項4に記載のメモリコントローラ。 - 前記コントローラは、更新済みのデータを送付する手順を引き起こす第3の要求を前記処理装置に対して送信し、前記第3の要求に対する応答として送られてきたデータを前記不揮発キャッシュメモリに対して書き込み、
前記更新済みのデータを送付する手順は、前記処理装置内の更新済みのデータを前記メモリコントローラ側に転送させるために、前記プロトコルで決められた手順である、
請求項1に記載のメモリコントローラ。 - 前記プロトコルは、MESIFプロトコル、QPIプロトコル、MESIプロトコル、MOESIプロトコル、MSIプロトコルの何れかである、
請求項1に記載のメモリコントローラ。 - メモリコントローラと、処理装置とを備える情報処理装置であって、
前記メモリコントローラは、
前記メモリコントローラに接続された不揮発メインメモリに記憶されたデータの一部を記憶する不揮発キャッシュメモリと、
前記不揮発キャッシュメモリへのデータの書き込みを制御するコントローラと、を有し、
複数のキャッシュメモリ間のデータの不一致が起こらないようにするための手順を示すプロトコルを保証するインターコネクトを介して前記処理装置と接続され、
前記コントローラは、
前記プロトコルを利用して、前記処理装置が、前記不揮発メインメモリの何れかの領域に対応するデータを更新したことを検出した後に、その更新済みのデータを前記メモリコントローラへ送信させ、その更新済みのデータを前記不揮発キャッシュメモリに書き込む、
情報処理装置。 - 前記不揮発メインメモリ上の第1データを前記処理装置に読み出して更新し、更新済みのデータを前記不揮発キャッシュメモリに第2データとして保存した時点で、データを永続化するコミット処理を完了する、
請求項8に記載の情報処理装置。 - 永続データの配置先となるメインメモリを設定するための設定手段を備える、
請求項8に記載の情報処理装置。 - 処理装置であって、
外部装置に接続された不揮発メインメモリに記憶されたデータの読み書きを行うプロセッサコアと、
前記不揮発メインメモリに記憶されたデータの一部を記憶するキャッシュメモリと、を有し、
前記処理装置は、
複数のキャッシュメモリ間のデータの不一致が起こらないようにするための手順を示すプロトコルを保証するインターコネクトを介して前記外部装置と接続され、
前記外部装置からの、前記処理装置が更新した、前記不揮発メインメモリの何れかの領域に対応するデータの参照を行うために前記領域に対応するデータを要求する第3の要求に対する前記プロトコルに基づいた応答として、前記キャッシュメモリに記憶されたデータのうち前記領域に対応するデータを送信した後に、その送信したデータの永続化が完了したことを確認するための確認要求を送信し、前記確認要求に対する応答に基づいて、その送信したデータの永続化が完了したことを確認する、
処理装置。 - 処理装置であって、
外部装置に接続された不揮発メインメモリに記憶されたデータの読み書きを行うプロセッサコアと、
前記不揮発メインメモリに記憶されたデータの一部を記憶するキャッシュメモリと、を有し、
前記処理装置は、
複数のキャッシュメモリ間のデータの不一致が起こらないようにするための手順を示すプロトコルを保証するインターコネクトを介して前記外部装置と接続され、
前記外部装置からの、前記処理装置が更新した、前記不揮発メインメモリの何れかの領域に対応するデータの参照を行うために前記領域に対応するデータを要求する第3の要求に対する前記プロトコルに基づいた応答として、前記キャッシュメモリに記憶されたデータのうち前記領域に対応するデータを送信した後、一定時間を経過したときに、その送信したデータの永続化が完了したことを確認する、
処理装置。 - 処理装置と、前記処理装置とインターコネクトで接続されるメモリコントローラと、を備え、
前記処理装置は、
前記メモリコントローラに接続された不揮発メインメモリに記憶されたデータの読み書きを行い、前記不揮発メインメモリに記憶されたデータの一部を記憶するキャッシュメモリを有し、
前記メモリコントローラは、
前記不揮発メインメモリに記憶されたデータの一部を記憶する不揮発キャッシュメモリと、前記不揮発キャッシュメモリへのデータの書き込みを制御するコントローラと、を有し、
前記インターコネクトは、前記処理装置の前記キャッシュメモリと、前記メモリコントローラの前記不揮発キャッシュメモリの一貫性を維持するためのプロトコルを保証し、
前記処理装置が前記不揮発メインメモリの何れかの領域に対応するデータの更新を行うと、更新済みのデータが前記プロトコルに従って前記メモリコントローラへ転送され、
前記コントローラは、前記処理装置から受信した更新済みのデータを前記不揮発キャッシュメモリに書き込む、
情報処理装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/070438 WO2017010004A1 (ja) | 2015-07-16 | 2015-07-16 | メモリコントローラ、情報処理装置および処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2017010004A1 JPWO2017010004A1 (ja) | 2017-12-28 |
JP6334824B2 true JP6334824B2 (ja) | 2018-05-30 |
Family
ID=57757275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017528259A Active JP6334824B2 (ja) | 2015-07-16 | 2015-07-16 | メモリコントローラ、情報処理装置および処理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10635587B2 (ja) |
JP (1) | JP6334824B2 (ja) |
WO (1) | WO2017010004A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10120808B2 (en) * | 2016-04-22 | 2018-11-06 | Arm Limited | Apparatus having cache memory disposed in a memory transaction path between interconnect circuitry and a non-volatile memory, and corresponding method |
JP6907787B2 (ja) | 2017-07-28 | 2021-07-21 | 富士通株式会社 | 情報処理装置および情報処理方法 |
US11132145B2 (en) | 2018-03-14 | 2021-09-28 | Apple Inc. | Techniques for reducing write amplification on solid state storage devices (SSDs) |
KR102446121B1 (ko) * | 2018-06-29 | 2022-09-22 | 주식회사 멤레이 | 메모리 제어 장치 및 이를 포함하는 메모리 시스템 |
US10705957B1 (en) * | 2018-12-19 | 2020-07-07 | International Business Machines Corporation | Selectively updating a coherence state in response to a storage update |
US10733102B2 (en) * | 2018-12-19 | 2020-08-04 | International Business Machines Corporation | Selectively updating a coherence state in response to a storage update |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7389308B2 (en) | 2003-05-30 | 2008-06-17 | Microsoft Corporation | Shadow paging |
US8019937B2 (en) * | 2004-07-21 | 2011-09-13 | Infortrend Technology, Inc. | Applying storage device commit-cached-data-to-media functionality to improve data security in systems that allow storage devices to cache writes |
US20080183972A1 (en) * | 2007-01-26 | 2008-07-31 | James Norris Dieffenderfer | Snoop Filtering Using a Snoop Request Cache |
CN102696010B (zh) * | 2009-09-08 | 2016-03-23 | 才智知识产权控股公司(2) | 用于将数据高速缓存在固态存储设备上的装置、系统和方法 |
WO2014142908A1 (en) * | 2013-03-14 | 2014-09-18 | Hewlett-Packard Development Company, L.P. | Multiversioned nonvolatile memory hierarchy for persistent memory |
US9690710B2 (en) * | 2015-01-15 | 2017-06-27 | Qualcomm Incorporated | System and method for improving a victim cache mode in a portable computing device |
-
2015
- 2015-07-16 JP JP2017528259A patent/JP6334824B2/ja active Active
- 2015-07-16 WO PCT/JP2015/070438 patent/WO2017010004A1/ja active Application Filing
-
2018
- 2018-01-12 US US15/869,287 patent/US10635587B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20180136849A1 (en) | 2018-05-17 |
WO2017010004A1 (ja) | 2017-01-19 |
JPWO2017010004A1 (ja) | 2017-12-28 |
US10635587B2 (en) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6334824B2 (ja) | メモリコントローラ、情報処理装置および処理装置 | |
US9170946B2 (en) | Directory cache supporting non-atomic input/output operations | |
TWI676891B (zh) | 轉譯後備緩衝器管理 | |
US10157133B2 (en) | Snoop filter for cache coherency in a data processing system | |
TWI432963B (zh) | 加速器之低成本快取一致 | |
TWI526829B (zh) | 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體 | |
US10402327B2 (en) | Network-aware cache coherence protocol enhancement | |
US20170192886A1 (en) | Cache management for nonvolatile main memory | |
TWI530786B (zh) | 具有快取記憶體連貫性協定之記憶體裝置、系統及主記憶體以及管理快取記憶體連貫性協定之方法 | |
JP7010809B2 (ja) | デデュープ可能なメモリキャッシュ及びそのための動作方法 | |
US20180095906A1 (en) | Hardware-based shared data coherency | |
JP7193547B2 (ja) | キャッシュ・メモリ動作の調整 | |
JP2000250884A (ja) | 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム | |
TW201447748A (zh) | 處理裝置 | |
US10877890B2 (en) | Providing dead-block prediction for determining whether to cache data in cache devices | |
US11126564B2 (en) | Partially coherent memory transfer | |
US7669013B2 (en) | Directory for multi-node coherent bus | |
CN112673358B (zh) | 在基于区域的高速缓存目录方案中加速对私有区域的访问 | |
CN114341821A (zh) | 生产者至消费者的主动直接高速缓存传送 | |
US20210349840A1 (en) | System, Apparatus And Methods For Handling Consistent Memory Transactions According To A CXL Protocol | |
TWI506537B (zh) | 使用反射記憶體實行同調之技術 | |
US11726920B2 (en) | Tag processing for external caches | |
JP6565729B2 (ja) | 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法 | |
JP6631317B2 (ja) | 演算処理装置、情報処理装置および情報処理装置の制御方法 | |
JP2009223511A (ja) | キャッシュメモリシステム、データ処理装置および記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170829 |
|
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: 20180327 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180426 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6334824 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |