CN114691541A - 一种基于动态访问的dram-nvm混合内存预测器 - Google Patents
一种基于动态访问的dram-nvm混合内存预测器 Download PDFInfo
- Publication number
- CN114691541A CN114691541A CN202210309363.8A CN202210309363A CN114691541A CN 114691541 A CN114691541 A CN 114691541A CN 202210309363 A CN202210309363 A CN 202210309363A CN 114691541 A CN114691541 A CN 114691541A
- Authority
- CN
- China
- Prior art keywords
- prediction
- access
- memory
- dram
- filter 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
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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
-
- 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/0877—Cache access modes
- G06F12/0884—Parallel mode, e.g. in parallel with main memory or CPU
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0673—Single storage device
- G06F3/068—Hybrid storage device
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 Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种基于动态访问的DRAM‑NVM混合内存预测器,包括:预测模块和自适应更新模块;预测模块用于将内存访问请求的内存地址映射到过滤器单元;自适应更新模块用于在内存访问行为发生变化时,对历史访问信息进行重放,得到最新的更新规则,以根据最新的更新规则对预测状态值进行更新;预测模块,还用于根据过滤器单元内的预测状态值对DRAM缓存的命中状态进行预测。采用本发明实施例,以极低的时间和空间成本进行准确预测,动态适应内存访问行为的变化,提高了未来预测的预测精度。另外,通过适应不同的访问行为,动态选择串行访问模式或并行访问模式,有效解决了分层混合存储系统中的访问延迟问题,从而提高整体内存的访问性能。
Description
技术领域
本发明涉及内存访问技术领域,尤其涉及一种基于动态访问的DRAM-NVM混合内存预测器。
背景技术
目前,DRAM(Dynamic Random Access Memory,动态随机存取存储器)和NVM(Non-Volatile Memory,非易失存储器)正被考虑结合起来构建DRAM-NVM混合内存系统,以提供与NVM一样的大内存容量和与DRAM相当的高内存访问速度。其中,层次架构是混合DRAM-NVM内存最具代表性的架构之一,它以NVM为主存,通过DRAM缓存NVM内容。在这种架构中,DRAM和NVM通常工作在串行访问模式下。串行访问模式的优点是在DRAM命中时提供非常快速的数据访问。但是,当DRAM发生未命中时,同时访问DRAM和NVM会导致更长的访问延迟,从而无法达到与DRAM相当的性能。此外,现有方法无法很好地解决如此长的未命中延迟。而并行访问模式是解决长未命中延迟问题的好方法。在服务内存访问请求时,它会同时检查DRAM和NVM。当DRAM未命中时,DRAM访问的延迟会被NVM访问隐藏,从而避免串行访问模式下的长时间未命中延迟。虽然使用并行模式可以缩短DRAM未命中的访问延迟,但并行访问模式也存在带宽和长尾延迟问题。
在混合内存系统的层次架构中,串行访问方式和并行访问方式各有优劣,因此,单独使用任何一种访问模式都会严重影响内存访问性能。
发明内容
本发明提供一种基于动态访问的DRAM-NVM混合内存预测器,能够将串行访问模式与并行访问模式结合进行动态访问,解决分层混合存储系统中的访问延迟问题。
为实现上述目的,本发明实施例提供了一种基于动态访问的DRAM-NVM混合内存预测器,预测器位于最后一级缓存与DRAM缓存之间,包括:预测模块和自适应更新模块;
所述预测模块,用于从所述最后一级缓存获取内存访问读请求,并将所述内存访问请求的内存地址映射到对应的过滤器单元;
所述自适应更新模块,用于在检测到预设时间段内的内存访问行为发生预设变化时,基于预设数量的更新规则对该预设时间段内的历史访问信息进行重放,并根据更新规则的准确率大小得到最新的更新规则,以根据所述最新的更新规则对所述过滤器单元内的预测状态值进行更新;
所述预测模块,还用于根据所述过滤器单元内的预测状态值对DRAM缓存的命中状态进行预测。
作为其中一种可选的实施例,所述预测模块从所述最后一级缓存获取内存访问读请求,并将所述内存访问请求的内存地址映射到对应的过滤器单元,具体包括:
所述预测模块从所述最后一级缓存获取内存访问读请求;
根据所述内存访问请求的内存地址生成哈希值,并根据所述哈希值找到对应的过滤器单元。
作为其中一种可选的实施例,所述预测模块根据所述内存访问请求的内存地址生成哈希值,具体包括:
所述预测模块获取所述内存访问读请求的内存地址;
所述预测模块将所述内存地址拆分为三部分,将第一部分与第二部分的按位或运算结果与第三部分进行按位与运算,并将按位与运算结果作为哈希值。
作为其中一种可选的实施例,其特征在于,所述自适应更新模块用于存储历史访问行为信息和历史预测结果信息;
则,所述自适应更新模块通过以下方式检测预设时间段内的内存访问行为发生预设变化:
所述自适应更新模块根据获取到的所述存储历史访问行为信息和所述历史预测结果信息,得到预设时间段内的内存访问行为的误预测率;
当所述误预测率大于预设阈值时,判定预设时间段内的内存访问行为发生预设变化。
作为其中一种可选的实施例,所述基于预设数量的更新规则对该预设时间段内的历史访问信息进行重放,并根据更新规则的准确率大小得到最新的更新规则,具体包括:
基于预设数量的更新规则对该预设时间段内的历史访问信息进行重放,并将准确率最高的更新规则作为最新的更新规则。
作为其中一种可选的实施例,所述预测模块根据所述过滤器单元内的预测状态值对DRAM缓存的命中状态进行预测,具体包括:
所述预测模块根据所述过滤器单元内的预测状态值,得到对应的预测状态;
所述预测模块根据所述预测状态对DRAM缓存的命中状态进行预测。
作为其中一种可选的实施例,其特征在于,所述过滤器单元内的预测状态值包括00、01、10、11。
作为其中一种可选的实施例,所述预测模块根据所述过滤器单元内的预测状态值,得到对应的预测状态,具体包括:
当检测到所述过滤器单元内的预测状态值为00时,所述预测模块得到强命中的预测状态;
当检测到所述过滤器单元内的预测状态值为01时,所述预测模块得到弱命中的预测状态;
当检测到所述过滤器单元内的预测状态值为10时,所述预测模块得到弱未命中的预测状态;
当检测到所述过滤器单元内的预测状态值为11时,所述预测模块得到强未命中的预测状态。
作为其中一种可选的实施例,所述预测模块根据所述预测状态对DRAM缓存的命中状态进行预测,具体包括:
当检测到所述预测状态为强命中或弱命中时,所述预测模块预测所述DRAM缓存命中;
当检测到所述预测状态为强未命中或弱未命中时,所述预测模块预测所述DRAM缓存未命中。
与现有技术相比,本发明实施例提供的一种基于动态访问的DRAM-NVM混合内存预测器,通过使用过滤器单元的空间结构,并根据实际内存访问行为更新每个过滤器单元的预测状态,从而以极低的时间和空间成本进行准确预测,动态适应内存访问行为的变化,及时更新预测逻辑,提高了未来预测的预测精度。另外,通过适应不同的访问行为,动态选择串行访问模式或并行访问模式,有效解决了分层混合存储系统中的访问延迟问题,从而提高整体内存的访问性能。
附图说明
图1是本发明实施例提供的一种基于动态访问的DRAM-NVM混合内存预测器的结构示意图;
图2是现有技术中层次性混合内存的两种访问模式的结构示意图;
图3是本发明实施例提供的一种基于动态访问的DRAM-NVM混合内存预测器的更新规则的结构示意图;
图4是本发明提供的一种基于动态访问的DRAM-NVM混合内存预测器与现有访问模式的带宽及访问延迟的数据对比示意图;
图5是本发明提供的一种基于动态访问的DRAM-NVM混合内存预测器与现有预测器的预测精度及平均访问延迟的数据对比示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一方面,本发明实施例提供了一种基于动态访问的DRAM-NVM混合内存预测器,参见图1,是本发明实施例提供的一种基于动态访问的DRAM-NVM混合内存预测器的结构示意图,预测器2位于最后一级缓存1与DRAM缓存3之间,包括:预测模块21和自适应更新模块22;
所述预测模块21,用于从所述最后一级缓存1获取内存访问读请求,并将所述内存访问请求的内存地址映射到对应的过滤器单元。
需要说明的是,预测器通过使用回写策略将所有数据直接写入DRAM,预测写入请求,以减少对NVM的写入以延长其寿命。
所述自适应更新模块22,用于在检测到预设时间段内的内存访问行为发生预设变化时,基于预设数量的更新规则对该预设时间段内的历史访问信息进行重放,并根据更新规则的准确率大小得到最新的更新规则,以根据所述最新的更新规则对所述过滤器单元内的预测状态值进行更新;
所述预测模块21,还用于根据所述过滤器单元内的预测状态值对DRAM缓存的命中状态进行预测。
需要说明的是,预测器2并非专用于DRAM-NVM混合内存系统,也可以应用于其他层次的内存/存储系统。
具体的,本发明提出一种简单的自适应预测器2,称为SAPredictor。预测器2集成在最后一集缓存1(Last Level Cache,LLC)与DRAM缓存3之间,能够根据预测结果为每个内存请求选择访问模式。如果预测到DRAM命中,则选择串行访问模式直接从DRAM获取数据,否则选择并行访问模式并行访问DRAM和NVM以获取数据。当预测错误时,将增加额外的成本。具体来说,当预测DRAM命中但数据驻留在NVM中(称为false positve预测)时,访问DRAM后需要额外的NVM访问;另一方面,如果预测到DRAM未命中但数据在DRAM中(称为falsenegative预测),则不必要的NVM访问将浪费其带宽并造成长尾延迟。因此,预测精度对性能的影响很大。
可以理解的是,在现有技术中,层次架构是混合DRAM-NVM内存最具代表性的架构之一,它以NVM为主存,通过DRAM缓存NVM内容。在这种架构中,DRAM和NVM通常工作在串行访问模式(Serial Access Mode,SAM)下,如图2中的(a)所示。而并行访问模式(ParallelAccess Mode,PAM)是解决长未命中延迟问题的好方法,如图2中的(b)所示,在服务内存访问请求时,它会同时检查DRAM和NVM。虽然使用并行模式可以缩短DRAM未命中的访问延迟,但它也带来了以下带宽和延迟问题。
第一个问题是浪费带宽。为了实现并行访问模式,访问请求数量将加倍。但是,当DRAM命中时,无需访问NVM,这极大地浪费了NVM的带宽。此外,原生NVM带宽仅为DRAM的30%左右,这使得NVM带宽有限的问题更加严重。在并行访问模式下,由于带宽的浪费,NVM和DRAM之间不断增大的带宽差距会显著降低内存访问性能,因为DRAM缓存未命中率高,大多数内存请求都需要访问NVM来获取数据。
第二个问题是长尾延迟问题。在并行访问模式下,DRAM和NVM被同时访问。如果先从DRAM中获取数据,则需要撤销或使NVM访问请求无效。在这种情况下,对NVM的后续访问请求可能会在命令队列中被阻塞,直到请求撤销或请求无效操作完成。另一方面,如果由于请求调度而先从NVM获取数据,则仍然需要等待DRAM验证数据一致性。因此,这两种情况都可能会阻塞其他内存请求,从而导致长尾延迟。在SPEC 2017基准测试下的初步研究清楚地表明,在并行访问模式下,当线程数为20时,90%读取请求的平均延迟约为217ns。对于99%的读取请求,它增加到274ns。另外,由于请求等待和阻塞,当线程数增加到8个以上时,并行访问模式的平均延迟比串行访问模式更长。
为了解决传统访问模式带来的问题,本发明提出一种动态访问模式(DynamicAccess Mode,DAM),通过结合串行和并行两种访问模式,并根据应用的行为来进行动态选择。理想情况下,当DRAM命中时,选择串行访问模式以极低的开销快速从DRAM获取数据。否则,选择并行访问模式从NVM获取数据并隐藏DRAM访问延迟。这样,DAM可以有效地解决分层混合存储系统中的访问延迟问题。然而,对于一个内存访问请求,如何以快速、低开销的方式准确识别是DRAM命中还是未命中,对于DAM的性能至关重要。因此,提出SAPredictor预测器来实现DAM。总的来说,本发明解决了以下几个问题。
(1)预测器如何动态适应于不同的应用内存访问行为。不同的应用或者同一个应用在不同的区间内存访问行为不同。即使在很短的时间内,同一应用或不同应用之间的命中率也存在显着差异。因此,一个好的预测器应该动态地适应内存访问行为的变化,否则过时的响应会导致错误的预测,从而降低预测的准确性。
然而,如何使预测器动态地适应访问行为的变化是困难的。首先,为了捕捉访问行为的变化,必须记录额外信息。但是有些信息对于感知访问行为的变化是无用的。例如,片上缓存中使用的基于计数器的预测器MAP-I根据计数器信息进行预测。但是,计数器信息只能表示命中或未命中的概率,而无法感知访问行为的变化。以访问行为“HHHMMM”(H和M分别代表命中和未命中)和“HMHMHM”为例,它们具有相同的计数器信息(3命中和3未命中),但呈现出完全不同的内存访问特征。因此,应该仔细考虑需要记录哪些信息以及需要记录多少信息才能感知访问行为的变化。其次,在感知访问行为的变化后,预测逻辑必须及时更新以提高预测精度。以访问行为“HMHMHM”为例,如果预测逻辑不能及时更新,预测结果“MHMHMH”将100%错误。因此,如何设计预测器逻辑以适应应用的内存访问行为具有挑战性。
(2)理想的预测器需要同时实现高精度和低开销。然而,从体系结构的角度来看,高精度和低开销往往是矛盾的。首先,为了减少空间开销,预测器应该记录尽可能少的信息。然而,太少的可用信息使得难以感知访问行为并损害预测准确性。例如,基于计数器的片上预测器MAP-I每个核仅使用98Bytes空间,为256MB的缓存来记录历史访问信息,但其预测准确度仅为80%左右。因此,需要仔细考虑如何在不损害预测精度的情况下减少预测器的空间开销。其次,由于预测器位于内存访问的关键路径上,因此缩短预测时间对性能的影响很大。因此,应该首选简单的预测逻辑和非常低的硬件复杂度。但是,它通常会导致预测精度低。例如,使用简单的布隆过滤器记录历史信息并进行预测只需要几个周期,但由于哈希冲突和饱和,其预测准确率低至60%。因此,如何在不降低预测精度的情况下降低预测器的时间开销带来了很大的挑战。
而与现有技术相比,本发明实施例提供的一种基于动态访问的DRAM-NVM混合内存预测器,通过使用过滤器单元的空间结构,并根据实际内存访问行为更新每个过滤器单元的预测状态,从而以极低的时间和空间成本进行准确预测,动态适应内存访问行为的变化,及时更新预测逻辑,提高了未来预测的预测精度。另外,通过适应不同的访问行为,动态选择串行访问模式或并行访问模式,有效解决了分层混合存储系统中的访问延迟问题,从而提高整体内存的访问性能。
作为其中一种可选的实施例,所述预测模块21从所述最后一级缓存1获取内存访问读请求,并将所述内存访问请求的内存地址映射到对应的过滤器单元,具体包括:
所述预测模块21从所述最后一级缓存1获取内存访问读请求;
根据所述内存访问请求的内存地址生成哈希值,并根据所述哈希值找到对应的过滤器单元。
具体的,预测模块21包括状态布隆过滤器(State Bloom Filter,SBF)单元、哈希函数单元。其中:
状态布隆过滤器单元是一个可以存储多个元素的数组,每个元素称为一个过滤器单元(SBF单元),用于记录累积的历史访问信息的预测状态。
哈希函数单元用于将每个请求的内存地址映射到一个SBF单元。就延迟成本和散列冲突而言,它非常关键,因为它处于进行命中/未命中预测的关键路径上。在预测器中,使用轻量级的哈希函数来降低时间成本。
作为其中一种可选的实施例,所述预测模块21根据所述内存访问请求的内存地址生成哈希值,具体包括:
所述预测模块21获取所述内存访问读请求的内存地址;
所述预测模块21将所述内存地址拆分为三部分,将第一部分与第二部分的按位或运算结果与第三部分进行按位与运算,并将按位与运算结果作为哈希值。
示例性的,预测模块21将内存访问读请求的地址标签拆分为三部分:a0、a1和a2,然后使用基于位的计算,例如“或”和“与”运算生成哈希函数,并选择“a2^a1&a0”作为高效的哈希函数。具体的,哈希函数生成一个哈希值,然后把这个函数对SBF数组的长度取模,得到一个0–SBF单元–1的值。把这个值作为地址,找到一个SBF的单元。这个单元里存了两个比特的值,对应4个状态中的一个。预测的时候用这个状态来预测。其中,每个单元初始时状态都是强未命中状态。例如:假设SPF包括100个SPF单元,地址长度是64位,用哈希函数计算哈希值,若哈希值超过100,则将哈希值对100取模,得到0~99的值,进而得到SPF的单元。
值得说明的是,相比于复杂的哈希函数SHA1和MD5,通过使用哈希函数“a2^a1&a0”,可以产生可忽略的运行时间和更少的为错误预测。
作为其中一种可选的实施例,其特征在于,所述自适应更新模块22用于存储历史访问行为信息和历史预测结果信息;
则,所述自适应更新模块22通过以下方式检测预设时间段内的内存访问行为发生预设变化:
所述自适应更新模块22根据获取到的所述存储历史访问行为信息和所述历史预测结果信息,得到预设时间段内的内存访问行为的误预测率;
当所述误预测率大于预设阈值时,判定预设时间段内的内存访问行为发生预设变化。
具体的,自适应更新模块22用于根据实际访问行为更新每个SBF单元的预测状态,从而提高未来预测的预测精度。包括访问行为捕获器单元221和更新规则单元222,其中:
更新规则单元222。取决于内存访问行为,不同的访问行为会有不同的更新规则来保证准确的预测。通过对访问行为进行了深入分析,得到了五种更新规则,以适应不同的访问行为,具体如图3所示,用五个图来描述这五个更新规则。在图3(a)中,无论当前状态如何,当发生miss时,状态将变为miss状态,发生hit也是如此。例如:如果一个SBF单元当前状态是强未命中(11)或者是弱未命中,当发生DRAM未命中(miss)时,这时状态都会变为强未命中(11);如果是DRAM命中(hit),状态都会变为弱命中(01),对于另外两个状态也是如此。此更新规则适用于命中/未命中快速过渡的情况。但是如果过渡太快,即hit和miss交替出现,比如HMHMHM,图3(a)就会失效。为了解决这个问题,提出图3(e)来处理。此外,图3(b)、图3(c)和图3(d)hit/miss转换缓慢时使用。具体来说,图3(b)适用于miss转换到hit较慢和hit转换miss快的情况;图3(c)适用于与(b)相的情况;图3(d)适用于hit和miss分别缓慢过渡miss和hit的情况。这五种更新规则几乎涵盖了所有的访问行为。
具体的,访问行为指的是连续的请求的命中或者未命中组成的序列。例如HHHMMM表示连续三次命中(hit)然后三次未命中(miss)。状态更新根据访问请求的结果(对应图三里箭头上的文字)和当前状态(箭头出发圆圈里的状态)来变化(变化到箭头对应的圆圈里的状态)。例如,如果使用图3(a)作为更新的规则,一个单元的初始初始状态是强未命中(11)。对于上面的访问行为HHHMMM,其状态变化依次是11->01->00->00->10->11->11。预测在更新前进行,所以对于上面的访问请求,预测结果是MHHHMM,预测的正确率为4/6。
作为其中一种可选的实施例,所述基于预设数量的更新规则对该预设时间段内的历史访问信息进行重放,并根据更新规则的准确率大小得到最新的更新规则,具体包括:
基于预设数量的更新规则对该预设时间段内的历史访问信息进行重放,并将准确率最高的更新规则作为最新的更新规则。
具体的,在访问行为捕获器单元221中,不同的应用程序或同一应用程序的不同时间间隔将具有显著不同的访问行为。为了产生更准确的预测,预测器必须及时捕捉这些变化并调整更新规则。通过使用两个32位移位寄存器,一个是记录历史访问行为,一个是记录历史预测结果。这两个寄存器之间的差异,换句话说,从这两个寄存器中收集的误预测率,可以描述访问行为的变化。特别是当误预测率超过预设阈值时,比如50%,预测器会改变更新规则以适应访问行为的变化。通过同时使用5条更新规则来分别重放历史访问,然后选择准确率最高的规则来作为接下来的更新规则。这个过程需要一些时间,为了减少开销,将定期执行。通过这种方式,预测器可以以较低的开销获得较高的预测精度,并适应不同的访问行为。
值得说明的是,自适应更新模块22用于在内存访问行为发生变化时对预测逻辑进行调整和演进,以提高预测精度。它包括访问行为捕获器单元221和更新规则单元222。捕获器单元221用于捕捉变化的行为并调整规则,更新规则单元222用于描述不同访问行为的更新规则。
作为其中一种可选的实施例,所述预测模块21根据所述过滤器单元内的预测状态值对DRAM缓存的命中状态进行预测,具体包括:
所述预测模块21根据所述过滤器单元内的预测状态值,得到对应的预测状态;
所述预测模块21根据所述预测状态对DRAM缓存的命中状态进行预测。
具体的,预测模块21还包括预测规则单元,预测规则单元用于根据SBF中记录的预测状态来指导命中/未命中预测。
值得说明的是,为了同时以低成本实现高预测精度,通过在设计预测模块21和自适应更新模块22。其中,预测模块21由三部分组成:状态布隆过滤器(SBF)单元、哈希函数单元、预测规则单元;其中,状态布隆过滤器(SBF)单元采用节省空间的结构,用于记录访问历史信息,哈希函数单元用于将每个请求的内存地址映射到SBF单元,预测规则单元用于根据存储在SBF中的历史访问信息进行预测。三部分的结合可以以极低的时间和空间成本有效地进行预测,以适应不同的应用内存访问行为。
作为其中一种可选的实施例,其特征在于,所述过滤器单元内的预测状态值包括00、01、10、11。
作为其中一种可选的实施例,所述预测模块21根据所述过滤器单元内的预测状态值,得到对应的预测状态,具体包括:
当检测到所述过滤器单元内的预测状态值为00时,所述预测模块21得到强命中的预测状态;
当检测到所述过滤器单元内的预测状态值为01时,所述预测模块21得到弱命中的预测状态;
当检测到所述过滤器单元内的预测状态值为10时,所述预测模块21得到弱未命中的预测状态;
当检测到所述过滤器单元内的预测状态值为11时,所述预测模块21得到强未命中的预测状态。
具体的,在每个SBF单元中,使用2个比特组成4个预测状态,“00”、“01”、“10”和“11”,分别代表强命中、弱命中、弱未命中和强未命中。在进行预测时,根据预测状态的值来确定预测结果。另外,SBF可以扩展到N位,对应2^N个预测状态。与现有的预测器MAP-I和MissMap分别使用N位仅生成2或N个状态相比,SBF可以充分利用所有位来生成更多状态并捕获更多访问行为,使得预测器以密集的方式存储更多信息,并以有限的空间开销生成更准确的预测结果。
作为其中一种可选的实施例,所述预测模块21根据所述预测状态对DRAM缓存的命中状态进行预测,具体包括:
当检测到所述预测状态为强命中或弱命中时,所述预测模块21预测所述DRAM缓存命中;
当检测到所述预测状态为强未命中或弱未命中时,所述预测模块21预测所述DRAM缓存未命中。
具体的,在预测规则单元中,如果预测状态为强命中或弱命中,则预测为DRAM命中,否则在处于强未命中或弱未命中状态时预测为DRAM未命中。
值得说明的是,本发明实施例通过提出一种基于动态访问的DRAM-NVM混合内存预测器,来预测DRAM缓存命中/未命中。使用该预测器,内存控制器可以动态选择串行访问模式(如果预测命中)或并行访问模式(如果预测未命中),从而提高整体内存访问性能。与最先进的预测器相比,本发明提出的预测器可以适应不同的访问行为,同时实现高预测精度和极低的开销,并且可以降低混合内存系统中的整体内存访问延迟。此外,预测器不依赖于混合DRAM-NVM架构,也可用于其他的层次内存/存储系统。
为了进一步体现本发明提供的一种基于动态访问的DRAM-NVM混合内存预测器所达到的技术效果,下面结合本发明的发明人在研发过程中的对比实例进行对本发明进一步说明:
从三个方面评估预测器的性能。首先,将本发明提出的基于动态访问模式的预测器(简称DAM-SAPredictor)与传统的串行访问模式(简称SAM)和并行访问模式(简称PAM)进行延迟和带宽的比较。传统的两个访问模式没有任何预测器,这样直观地可以了解预测器带来的好处。其次,将预测器与BF、MissMap、MAP-I等最先进的预测器在预测精度和开销方面进行了比较,其中BF是基于基本的Bloom filter设计的,而MissMap使用一个大的位向量数组来记录每个请求的历史访问信息,而MAP-I使用饱和计数器来注册历史信息。这些预测器是为片上缓存设计的,而SAPredictor是第一个为层次混合DRAM-NVM系统设计的预测器。与现有技术相比,本发明具有以下优势:
1、更高的带宽与更低的访问延迟
参见图4,比较了DAM-SAPredictor、SAM和PAM之间的读取带宽和延迟。结果表明,DAM-SAPredictor不仅实现了最高的读取带宽,而且具有最低的平均访问延迟。具体来说,DAM-SAPredictor的读取带宽分别比SAM和PAM高14.1%和55.6%左右;同时,访问延迟分别比SAM和PAM低30.1%和35.6%左右。这种性能改进可以归因于两个方面。首先,与SAM相比,DAM-SAPredictor通过在DRAM未命中时并行访问DRAM和NVM来产生更短的延迟。其次,与PAM相比,DAM-SAPredictor不需要在DRAM命中时取消和使NVM访问无效,不会阻塞内存访问。因此,与SAM和PAM相比,DAM-SAPredictor可以获得更高的带宽和更低的访问延迟。
2、更高的性能提升和更低的开销
(1)更大的延迟改进和更小的时间开销。参见图5,图5(a)比较了SAPredictor和它的竞争对手的预测精度,得到两个发现。首先,与BF和MAP-I相比,SAPredictor可以分别提高43.5%和13.8%的预测精度。这是因为SAPredictor可以高效感知内存访问行为的变化,并及时演化其预测逻辑。其次,SAPredictor的准确率略低于MissMap。因为MissMap在SRAM中使用了32MB的位向量,可以为每个请求的地址记录更多的历史访问信息,产生更高的预测精度。但是,与SAPredictor相比,MissMap使用了16384倍的空间,但仅将预测精度提高了2.3%,这不是空间成本和精度之间的良好折中,尤其是对于珍贵的SRAM而言。
(2)更大的延迟改进和更小的时间开销。图5(b)比较了混合DRAM-NVM内存系统中使用的不同预测器的平均访问延迟,所有结果都归一化到没有预测器的串行访问模式。与MissMap、MAP-I和BF相比,SAPredictor可以将访问延迟分别降低12.3%、21.8%和24.9%。对于MAP-I和BF,它们的预测精度低于SAPredictor,因此它们需要更多的操作来处理不正确的预测。因此,较低的预测精度使得MAP-I和BF仅分别降低了9.2%和5.9%的访问延迟。对于MissMap来说,虽然它的预测准确率最高,但是预测器本身的时间开销也很高。因为它记录的信息比SAPredictor多得多,因此查询和更新这些信息要花更多的时间。表2展示了这些预测器的时间开销,结果表明MissMap最多需要96个周期来进行预测。结果,它仅将访问延迟降低了18.8%。
(3)更低的空间开销。下表1显示了用于所有四个预测器的开销。对于SAPredictor来说,空间开销主要在于SRAM中存储的SBF结构。在实验中,由于其高信息密度,仅使用2KB空间开销进行预测。对于MissMap,它占用32MB的SRAM空间来记录更多信息。然而,由于芯片面积和功耗的限制,如此大的SRAM空间开销是不切实际的。对于BF和MAP-I,它们分别使用1MB和15KB空间来记录访问信息,分别是SAPredictor的512倍和7倍。
表1预测器开销
预测器 | MissMap | MAP-I | BF | SAPredictor |
空间开销 | 32MB | 15KB | 1MB | 2KB |
时间开销(cycles) | 96 | 14 | 9 | 11 |
需要说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本领域技术人员可以理解,可以对实施例中的装置中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个装置中。可以把实施例中的模块或单元组合成一个模块或单元,以及此外可以把它们分成多个子模块或子单元。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
应该注意的是,上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在本发明的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (9)
1.一种基于动态访问的DRAM-NVM混合内存预测器,其特征在于,预测器位于最后一级缓存与DRAM缓存之间,包括:预测模块和自适应更新模块;
所述预测模块,用于从所述最后一级缓存获取内存访问读请求,并将所述内存访问请求的内存地址映射到对应的过滤器单元;
所述自适应更新模块,用于在检测到预设时间段内的内存访问行为发生预设变化时,基于预设数量的更新规则对该预设时间段内的历史访问信息进行重放,并根据更新规则的准确率大小得到最新的更新规则,以根据所述最新的更新规则对所述过滤器单元内的预测状态值进行更新;
所述预测模块,还用于根据所述过滤器单元内的预测状态值对DRAM缓存的命中状态进行预测。
2.根据权利要求1所述的基于动态访问的DRAM-NVM混合内存预测器,其特征在于,所述预测模块从所述最后一级缓存获取内存访问读请求,并将所述内存访问请求的内存地址映射到对应的过滤器单元,具体包括:
所述预测模块从所述最后一级缓存获取内存访问读请求;
根据所述内存访问请求的内存地址生成哈希值,并根据所述哈希值找到对应的过滤器单元。
3.根据权利要求2所述的基于动态访问的DRAM-NVM混合内存预测器,其特征在于,所述预测模块根据所述内存访问请求的内存地址生成哈希值,具体包括:
所述预测模块获取所述内存访问读请求的内存地址;
所述预测模块将所述内存地址拆分为三部分,将第一部分与第二部分的按位或运算结果与第三部分进行按位与运算,并将按位与运算结果作为哈希值。
4.根据权利要求1所述的基于动态访问的DRAM-NVM混合内存预测器,其特征在于,所述自适应更新模块用于存储历史访问行为信息和历史预测结果信息;
则,所述自适应更新模块通过以下方式检测预设时间段内的内存访问行为发生预设变化:
所述自适应更新模块根据获取到的所述存储历史访问行为信息和所述历史预测结果信息,得到预设时间段内的内存访问行为的误预测率;
当所述误预测率大于预设阈值时,判定预设时间段内的内存访问行为发生预设变化。
5.根据权利要求1所述的基于动态访问的DRAM-NVM混合内存预测器,其特征在于,所述基于预设数量的更新规则对该预设时间段内的历史访问信息进行重放,并根据更新规则的准确率大小得到最新的更新规则,具体包括:
基于预设数量的更新规则对该预设时间段内的历史访问信息进行重放,并将准确率最高的更新规则作为最新的更新规则。
6.根据权利要求1所述的基于动态访问的DRAM-NVM混合内存预测器,其特征在于,所述预测模块根据所述过滤器单元内的预测状态值对DRAM缓存的命中状态进行预测,具体包括:
所述预测模块根据所述过滤器单元内的预测状态值,得到对应的预测状态;
所述预测模块根据所述预测状态对DRAM缓存的命中状态进行预测。
7.根据权利要求6所述的基于动态访问的DRAM-NVM混合内存预测器,其特征在于,所述过滤器单元内的预测状态值包括00、01、10、11。
8.根据权利要求7所述的基于动态访问的DRAM-NVM混合内存预测器,其特征在于,所述预测模块根据所述过滤器单元内的预测状态值,得到对应的预测状态,具体包括:
当检测到所述过滤器单元内的预测状态值为00时,所述预测模块得到强命中的预测状态;
当检测到所述过滤器单元内的预测状态值为01时,所述预测模块得到弱命中的预测状态;
当检测到所述过滤器单元内的预测状态值为10时,所述预测模块得到弱未命中的预测状态;
当检测到所述过滤器单元内的预测状态值为11时,所述预测模块得到强未命中的预测状态。
9.根据权利要求8所述的基于动态访问的DRAM-NVM混合内存预测器,其特征在于,所述预测模块根据所述预测状态对DRAM缓存的命中状态进行预测,具体包括:
当检测到所述预测状态为强命中或弱命中时,所述预测模块预测所述DRAM缓存命中;
当检测到所述预测状态为强未命中或弱未命中时,所述预测模块预测所述DRAM缓存未命中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210309363.8A CN114691541A (zh) | 2022-03-28 | 2022-03-28 | 一种基于动态访问的dram-nvm混合内存预测器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210309363.8A CN114691541A (zh) | 2022-03-28 | 2022-03-28 | 一种基于动态访问的dram-nvm混合内存预测器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691541A true CN114691541A (zh) | 2022-07-01 |
Family
ID=82139000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210309363.8A Pending CN114691541A (zh) | 2022-03-28 | 2022-03-28 | 一种基于动态访问的dram-nvm混合内存预测器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691541A (zh) |
-
2022
- 2022-03-28 CN CN202210309363.8A patent/CN114691541A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7558920B2 (en) | Apparatus and method for partitioning a shared cache of a chip multi-processor | |
US9898415B2 (en) | Slot/sub-slot prefetch architecture for multiple memory requestors | |
US10223278B2 (en) | Selective bypassing of allocation in a cache | |
US8627009B2 (en) | Cache filtering method and apparatus | |
US6427188B1 (en) | Method and system for early tag accesses for lower-level caches in parallel with first-level cache | |
US8024513B2 (en) | Method and system for implementing dynamic refresh protocols for DRAM based cache | |
CN109582214B (zh) | 数据访问方法以及计算机系统 | |
US8180965B2 (en) | System and method for cache access prediction | |
US20070260818A1 (en) | Power-performance modulation in caches using a smart least recently used scheme | |
US6356990B1 (en) | Set-associative cache memory having a built-in set prediction array | |
US7809889B2 (en) | High performance multilevel cache hierarchy | |
US20110320720A1 (en) | Cache Line Replacement In A Symmetric Multiprocessing Computer | |
JP5328792B2 (ja) | プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構 | |
CN107592927B (zh) | 管理扇区高速缓存 | |
US11301250B2 (en) | Data prefetching auxiliary circuit, data prefetching method, and microprocessor | |
US20170371795A1 (en) | Multi-Level System Memory With Near Memory Scrubbing Based On Predicted Far Memory Idle Time | |
JP2010033480A (ja) | キャッシュメモリおよびキャッシュメモリ制御装置 | |
CN102859504A (zh) | 有效分区存储缓存 | |
US7007135B2 (en) | Multi-level cache system with simplified miss/replacement control | |
US20060143400A1 (en) | Replacement in non-uniform access cache structure | |
JP2009015509A (ja) | キャッシュメモリ装置 | |
US9496009B2 (en) | Memory with bank-conflict-resolution (BCR) module including cache | |
JP5699854B2 (ja) | 記憶制御システムおよび方法、置換方式および方法 | |
US20040078544A1 (en) | Memory address remapping method | |
CN114691541A (zh) | 一种基于动态访问的dram-nvm混合内存预测器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |