CN104850508B - 基于数据局部性的访存方法 - Google Patents

基于数据局部性的访存方法 Download PDF

Info

Publication number
CN104850508B
CN104850508B CN201510165618.8A CN201510165618A CN104850508B CN 104850508 B CN104850508 B CN 104850508B CN 201510165618 A CN201510165618 A CN 201510165618A CN 104850508 B CN104850508 B CN 104850508B
Authority
CN
China
Prior art keywords
locality
data
strength grade
caching
cache blocks
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.)
Expired - Fee Related
Application number
CN201510165618.8A
Other languages
English (en)
Other versions
CN104850508A (zh
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.)
Shenzhen Shangque Technology Co ltd
Original Assignee
Shenzhen University
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 Shenzhen University filed Critical Shenzhen University
Priority to CN201510165618.8A priority Critical patent/CN104850508B/zh
Publication of CN104850508A publication Critical patent/CN104850508A/zh
Application granted granted Critical
Publication of CN104850508B publication Critical patent/CN104850508B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及计算机、电子产品等技术领域,尤其涉及一种基于数据局部性的访存方法。本方法对各数据根据其局部性强弱设定了相应的局部性强度等级,局部性强度等级越高的数据局部性越强,局部性强度等级越低的数据局部性越弱,同时,对各缓存块也设定了局部性强度等级,并设定缓存块的局部性强度等级数量与数据的局部性强度等级数量相等,各缓存块存储的数据的局部性强度等级不低于相应缓存块的局部性强度等级,且每一缓存组至少包括两种局部性强度等级的缓存块,从而限制了数据映射的自由性,避免了在缓存填充和替换过程中较高局部性强度等级的缓存块中的数据被较低局部性强度等级的数据替换,从而提高了缓存命中率,提升了CPU的访存性能。

Description

基于数据局部性的访存方法
技术领域
本发明涉及计算机、电子产品领域,尤其涉及一种基于数据局部性的访存方法。
背景技术
高速缓存(Cache)是位于CPU与内存之间的临时存储器,它的容量比内存小,但存取速度比内存快得多。由于CPU的速度比内存速度快很多,高速缓存作为CPU与内存之间的桥梁,CPU将最有可能用到的数据和指令存放在高速缓存中,当CPU需要的指令和数据位于高速缓存中时,CPU就能快速从中读取,从而大大提高CPU的实际性能。高速缓存在一定程度上解决了CPU与内存之间的速度不匹配问题,其是基于程序的局部性原理来工作的。程序的局部性原理是指,当CPU访问内存时,无论是存取指令还是存取数据,其所访问的内存都趋于集中在一个较小的连续区域中。局部性包括:
时间局部性(Temporal Locality):如果内存中的某一个信息项正在被访问,那么在近期它很可能还会被再次访问。
空间局部性(Spatial Locality):在最近的将来将用到的信息很可能与现在正在使用的信息在空间地址(附近的内存区域)上是临近的。
顺序局部性(Order Locality):在典型程序中,除转移类指令外,大部分指令是顺序进行的。顺序执行和非顺序执行的比例大致是5:1。
基于程序访问的局部性原理,当CPU需要的指令或数据位于高速缓存中的概率越高,CPU访问内存的速度就越接近于访问缓存的速度,CPU的实际性能就越高。将CPU需要的指令或数据位于高速缓存中的概率定义为高速缓存的命中率,提高CPU性能的关键就是提高高速缓存的命中率。
虽然程序中的大部分指令和数据符合程序的局部性特点,能充分利用高速缓存,从而大大提高CPU的性能,然而,程序中也有不少指令和数据的使用不符合程序的局部性原理,甚至由于这种类型的指令和数据的存在破坏了原来局部性较好的部分程序数据和指令,以致大大降低了性能,而且这种类型的数据在以数据为驱动的计算领域,如生物计算、大数据计算等领域特别明显。这种类型的数据特点是数据量巨大、访问内存空间无规律,访问越来越不符合时间局部性原理,频繁的缓存替换操作对高速缓存性能造成巨大影响,在多核CPU中,这种影响更明显。在多核CPU中,各个CPU核一般共享LLC(last level cache),CPU核竞争访问LLC,这种频繁的缓存替换操作比单核环境下更明显。产生以上现象的原因是,为了使用高速缓存,需要在缓存与内存之间建立映射关系,其映射的总体结果是,数据量越大,占用的缓存越多。以A、B两种数据类型为例,A类型数据具有较强的访问局部性,数据量较小,B类型数据具有较弱的访问局部性,且数据量很大,意味着访问局部性很弱的数据占据了大部分的缓存,以致A类型数据很有可能因为访问B类型的数据替换掉,下次访问访问A类型数据时需要从内存中加载,缓存命中率大大降低,缓存与主存间的访问时间增加,降低了缓存效率,从而降低了系统的性能。
发明内容
本发明所要解决的技术问题是,提出一种基于数据局部性的访存方法,以提高缓存命中率,提升CPU的访存性能。本发明是这样实现的:
一种基于数据局部性的访存方法,缓存包括若干缓存组,每一缓存组包括若干缓存块,各缓存块具有各自的局部性强度等级,且每一缓存组至少包括两种局部性强度等级的缓存块;待访存的数据同样具有局部性强度等级,且其局部性强度等级数量与缓存块的局部性强度等级数量相同;局部性强度等级越高的数据局部性越强,局部性强度等级越低的数据局部性越弱;各缓存块存储的数据的局部性强度等级不得低于其自身的局部性强度等级;所述访存方法包括如下步骤:
CPU核向缓存控制器发送要访问的主存地址;
缓存控制器查询缓存中是否有所述主存地址的数据,如果有,则将所述数据发送给所述CPU核,否则,将主存中所述主存地址的数据映射到缓存,再通过所述缓存发送给所述CPU核。
进一步地,各缓存块的局部性强度等级与其存储的数据的局部性强度等级相同。
进一步地,所述主存地址附有局部性强度等级标记;所述局部性强度等级标记用于标识所述主存地址的数据的局部性强度等级;
缓存控制器查询缓存中是否有所述主存地址的数据的步骤包括:
定位与所述主存地址组号相同的缓存组,并定位该缓存组中局部性强度等级不低于所述主存地址的数据的局部性强度等级的缓存块;
查询局部性强度等级不低于所述主存地址的数据的局部性强度等级的各缓存块中是否有区号及块号分别与所述主存地址的区号及块号相同的数据;如果有,则缓存中有所述主存地址的数据,否则,则缓存中没有所述主存地址的数据。
进一步地,所述主存地址为物理地址或虚拟地址。
与现有技术相比,本发明通过对每一缓存块设定局部性强度等级,且设定各缓存块存储的数据的局部性强度等级不得低于其自身的局部性强度等级,限制了数据映射的自由性,避免了在缓存填充和替换过程中较高局部性强度等级的缓存块中的数据被较低局部性强度等级的数据替换,从而提高缓存命中率,提升CPU的访存性能。
附图说明
图1:本发明基于数据局部性的访存方法流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。
根据局部性原理,如果能够降低访问局部性较弱的数据对访问局部性较强的数据的影响,就可以提高缓存的命中率,从而降低缓存-主存的平均访问时间,提升CPU的访存性能。本发明基于数据局部性的访存方法正是基于该基本原理而提出的。
图1所示为本发明基于数据局部性的访存方法流程示意图,在执行本发明的访存方法前,需要先做相应预处理,以适应本发明提出的方法。预处理主要包括以下两个方面:
一、对于数据(程序、指令也被认为是一种数据)而言,数据根据其局部性强弱应具有相应的局部性强度等级,用以标识该数据的局部性强弱。数据的局部性强度等级可由系统或用户申请决定,也就是说,用户在编写和编译数据或程序时,可以判断数据的局部性强弱,并据此设定相应数据的局部性强度等级。局部性强度等级越高的数据局部性越强,局部性强度等级越低的数据局部性越弱。在设定数据的局部性强度等级时,可在该数据前添加一个局部性强度等级标记,以标记该数据的局部性强度等级,数据的局部性强度等级就可作为其局部性强度等级标记。例如,在编写和编译一段程序时,在该段程序代码函数的前面添加局部性等级标记3,以标记该程序段的局部性强度等级为3。根据各数据段的局部性强弱,可将数据分段,各数据段也可通过类似方式添加局部性强度等级标记,以标识各数据段的局部性强度等级。在将数据分配到内存时,根据不同数据的局部性强度等级,将不同局部性强度等级的数据分配到不同的内存页中,再根据各内存页中数据的局部性强度等级对各内存页添加相应的局部性强度等级标记,以标识该内存页中数据的局部性强度等级。
二、对于缓存而言,主要是设定各缓存块的局部性强度等级。将缓存分为若干缓存组,每一缓存组包括若干缓存块,并设定各缓存块的局部性强度等级。缓存块的局部性强度等级用于表示该缓存块可用于存储的数据的最高局部性强度等级,即各缓存块存储的数据的局部性强度等级不得低于其自身的局部性强度等级。同时,缓存块的局部性强度等级数量与数据的局部性强度等级数量应相等。例如,缓存块和数据的局部性强度等级数量为5级,某一数据的局部性强度等级为3级,则该数据不能存储在局部性强度等级为4级及5级的缓存块中。这样,局部性强度等级为4级及5级的缓存块中的数据无法被局部性强度等级为3级的数据替换掉,从而削弱了较弱局部性数据(3级局部性强度等级的数据)对较强局部性数据(4级及5级缓存块中存储的数据)的影响,提高了缓存中存储的数据的局部性强度,从而提高了缓存命中率,提升了CPU的访存性能。本文默认局部性强度等级的数字越大,则局部性强度等级越高,根据用户习惯,也可设定局部性强度等级的数字越小,局部性强度等级越高。在缓存填充时,主存地址的数据可优先填充到与该数据的局部性强度等级相等的缓存块中,如果该等级的缓存块被占,再依次往较低等级的缓存块填充,当所有符合映射条件的缓存块都占满时,再进行替换,而替换时,也优先替换与该数据的局部性强度等级相等的缓存块中的数据。上述对缓存块的设置方法可兼顾访存速度和缓存空间利用率。也可设置各缓存块存储的数据的局部性强度等级与相应缓存块的局部性强度等级相同,这样数据只能存储在与其局部性强度等级相同的缓存块中,可以得到更快的访问速度,但缓存空间利用率会降低,缓存命中率也会降低。本文中,主存地址可以是物理地址,也可以是虚拟地址。
缓存块的局部性强度等级可通过对缓存块添加局部性强度等级标记的方式来表示,例如,可为该缓存块添加局部性强度等级标记3,以标识该缓存块的局部性强度等级为3级。缓存块的局部性强度等级标记可存储在相联存储器中,以标识相应缓存块的局部性强度等级。同时,缓存块的局部性强度等级标记也可不存储在相联存储器,而是存储在一寄存器中,在该寄存器中分别记录不同局部性强度等级的缓存块在相应缓存组内的起始块号及块数。例如,记录局部性强度等级标记为3的缓存块在缓存组2中的起始块号为4,块数为5,则其表示的含义是,在缓存组2中,第4到第9缓存块为局部性强度等级为3的缓存块。
不同局部性强度等级的缓存块的数量分配可根据实际需要配置。通常而言,局部性强度等级较高的缓存块应该多分配一些,局部性强度等级较低的缓存块应该少分配一些,以保证缓存中的数据的局部性始终保持在较强水平。需注意的是,在主存与缓存之间采用组相连映射时,每一缓存组中至少应当包括两种局部性强度等级的缓存块,以保证每一缓存组内数据的局部性强度。由于对各缓存组所能存储的数据的最高局部性强度等级进行了限定,因此,不管是在全相联映射方式、直接相联映射方式还是组相联映射方式下,都可实现提高缓存中存储的数据的局部性强度,提高缓存命中率,从而提高CPU访存性能的效果。
进行访存操作时,CPU核向缓存控制器发送要访问的主存地址,缓存控制器查询缓存中是否有该主存地址的数据,如果有,则将该数据发送给CPU核,否则,将主存中该主存地址的数据映射到缓存,CPU再从缓存中读取该数据。当缓存中没有主存地址的数据时,需要进行缓存填充或替换。主存地址也可附上局部性强度等级标记,以标识相应主存地址的数据的局部性强度等级。例如,某一主存地址的数据的局部性强度等级为3,可在该主存地址的前部附上局部性强度等级标记3,以标识该主存地址的数据的局部性强度等级为3。主存地址的局部性强度等级与主存地址可组成“局部性强度等级-主存”键值对。缓存控制器在查询缓存中是否有该主存地址的数据时,可结合该主存地址的局部性强度等级。以组相联映射方式为例,缓存控制器查询缓存中是否有主存地址的数据的步骤如下:
1、定位与所述主存地址组号相同的缓存组,并定位该缓存组中局部性强度等级不低于所述主存地址的数据的局部性强度等级的缓存块。在定位缓存组中与主存地址的数据具有相同局部性强度等级的缓存块时,就可以根据该主存地址的局部性强度等级标记来判断该主存地址的数据的局部性强度等级。
2、查询局部性强度等级不低于所述主存地址的数据的局部性强度等级的各缓存块中是否有区号及块号分别与所述主存地址的区号及块号相同的数据;如果有,则缓存中有主存地址的数据,否则,则缓存中没有主存地址的数据。
这里所说的组相联映射方式其实是一种类似组相联的映射方式,因为,在这种映射方式下,主存中的一块并非可以映射到缓存中某一特定组的任意一缓存块,而是只能映射到缓存中某一特定组中符合局部性强度等级要求的任意一块。其实质是,映射时,在传统的映射方式基础上增加了对主存地址所能映射到的缓存块的局部性强度等级的限定,即主存地址的数据不能映射到比该主存地址的数据的局部性强度等级高的缓存块中。
不管是以全相联映射、直接相联映射还是组相联映射方式为基础,本发明所提出的访存方法的原理都是相通的,即在映射过程中限制数据映射的自由性,避免在缓存填充和替换过程中较高局部性强度等级的缓存块中的数据被较低局部性强度等级的数据替换,从而提高缓存命中率,提升CPU的访存性能。由本发明的原理可知,在采用本发明技术方案进行访存操作时,数据的局部性越弱,其映射时所受到的限制越大,被替换的概率越高,数据的局部性越强,其映射时所受到的限制越小,被替换的概率越低,从而也证明了采用本发明技术方案提高缓存命中率、提升CPU访存性能的可行性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种基于数据局部性的访存方法,其特征在于,缓存包括若干缓存组,每一缓存组包括若干缓存块,各缓存块具有各自的局部性强度等级,且每一缓存组至少包括两种局部性强度等级的缓存块;待访存的数据同样具有预先设定的局部性强度等级,且其局部性强度等级数量与缓存块的局部性强度等级数量相同;局部性强度等级越高的数据局部性越强,局部性强度等级越低的数据局部性越弱;各缓存块存储的数据的局部性强度等级不得低于其自身的局部性强度等级;所述访存方法包括如下步骤:
CPU核向缓存控制器发送要访问的主存地址;
缓存控制器查询缓存中是否有所述主存地址的数据,如果有,则将所述数据发送给所述CPU核,否则,将主存中所述主存地址的数据映射到缓存,再通过所述缓存发送给所述CPU核。
2.如权利要求1所述的基于数据局部性的访存方法,其特征在于,各缓存块的局部性强度等级与其存储的数据的局部性强度等级相同。
3.如权利要求1所述的基于数据局部性的访存方法,其特征在于,所述主存地址附有局部性强度等级标记;所述局部性强度等级标记用于标识所述主存地址的数据的局部性强度等级;
缓存控制器查询缓存中是否有所述主存地址的数据的步骤包括:
定位与所述主存地址组号相同的缓存组,并定位该缓存组中局部性强度等级不低于所述主存地址的数据的局部性强度等级的缓存块;
查询局部性强度等级不低于所述主存地址的数据的局部性强度等级的各缓存块中是否有区号及块号分别与所述主存地址的区号及块号相同的数据;如果有,则缓存中有所述主存地址的数据,否则,则缓存中没有所述主存地址的数据。
4.如权利要求1所述的基于数据局部性的访存方法,其特征在于,所述主存地址为物理地址或虚拟地址。
CN201510165618.8A 2015-04-09 2015-04-09 基于数据局部性的访存方法 Expired - Fee Related CN104850508B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510165618.8A CN104850508B (zh) 2015-04-09 2015-04-09 基于数据局部性的访存方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510165618.8A CN104850508B (zh) 2015-04-09 2015-04-09 基于数据局部性的访存方法

Publications (2)

Publication Number Publication Date
CN104850508A CN104850508A (zh) 2015-08-19
CN104850508B true CN104850508B (zh) 2018-02-09

Family

ID=53850161

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510165618.8A Expired - Fee Related CN104850508B (zh) 2015-04-09 2015-04-09 基于数据局部性的访存方法

Country Status (1)

Country Link
CN (1) CN104850508B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017065379A1 (ko) * 2015-10-16 2017-04-20 삼성전자 주식회사 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치
US10402336B2 (en) * 2017-03-31 2019-09-03 Intel Corporation System, apparatus and method for overriding of non-locality-based instruction handling
CN117076699B (zh) * 2023-10-13 2023-12-12 南京奥看信息科技有限公司 一种多图片的加速处理方法、装置及电子设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4648033A (en) * 1984-09-07 1987-03-03 International Business Machines Corporation Look-aside buffer LRU marker controller
US5491806A (en) * 1990-06-26 1996-02-13 Lsi Logic Corporation Optimized translation lookaside buffer slice having stored mask bits
US7089370B2 (en) * 2003-09-30 2006-08-08 International Business Machines Corporation Apparatus and method for pre-fetching page data using segment table data
US7454576B2 (en) * 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths
US7516275B2 (en) * 2006-04-25 2009-04-07 International Business Machines Corporation Pseudo-LRU virtual counter for a locking cache
US8352705B2 (en) * 2008-01-15 2013-01-08 Vmware, Inc. Large-page optimization in virtual memory paging systems
US20100217937A1 (en) * 2009-02-20 2010-08-26 Arm Limited Data processing apparatus and method
CN101571835B (zh) * 2009-03-26 2011-01-26 浙江大学 基于程序的需求来改变Cache组相联度的实现方法
WO2011103828A2 (zh) * 2011-04-18 2011-09-01 华为技术有限公司 系统缓存中数据替换方法及多核通信处理器
CN102663115B (zh) * 2012-04-16 2015-01-14 中国人民大学 基于页面染色技术的内存数据库访问优化方法
US9135173B2 (en) * 2013-01-22 2015-09-15 International Business Machines Corporation Thinly provisioned flash cache with shared storage pool

Also Published As

Publication number Publication date
CN104850508A (zh) 2015-08-19

Similar Documents

Publication Publication Date Title
CN103425600B (zh) 一种固态盘闪存转换层中的地址映射方法
CN103885728B (zh) 一种基于固态盘的磁盘缓存系统
CN104133780B (zh) 一种跨页预取方法、装置及系统
CN103856567B (zh) 基于Hadoop分布式文件系统的小文件存储方法
CN104866434B (zh) 面向多应用的数据存储系统和数据存储、调用方法
CN112558889B (zh) 一种基于SEDRAM的堆叠式Cache系统、控制方法和Cache装置
CN107066393A (zh) 提高地址映射表中映射信息密度的方法
CN109582593B (zh) 一种基于计算的ftl地址映射读、写方法
CN103038748B (zh) 用于精确预测存储器存取的基于区域的技术
CN105095116A (zh) 缓存替换的方法、缓存控制器和处理器
CN110795363B (zh) 一种存储介质的热页预测方法和页面调度方法
CN110532200B (zh) 一种基于混合内存架构的内存系统
CN104169892A (zh) 并发访问的组相联溢出缓存
CN107589908A (zh) 一种基于固态盘缓存系统中非对齐更新数据的合并方法
CN103383666B (zh) 改善缓存预取数据局部性的方法和系统及缓存访问方法
CN108959113A (zh) 用于闪存感知堆存储器管理的方法和系统
CN104850508B (zh) 基于数据局部性的访存方法
US20070204129A1 (en) Address converting apparatus
CN106354664A (zh) 一种固态硬盘数据传输方法及装置
CN108874691B (zh) 数据预取方法和内存控制器
CN116501249A (zh) 一种减少gpu内存重复数据读写的方法及相关设备
CN104714898B (zh) 一种Cache的分配方法和装置
CN103077198B (zh) 一种操作系统及其文件缓存定位方法
CN102043731A (zh) 一种存储系统的缓存系统
Jia et al. DPAM: A demand-based page-level address mappings algorithm in flash memory for smart industrial edge devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20191224

Address after: Room 1, building B, yuehaimen square, 3688 Nanhai Avenue, Shenda community, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Patentee after: Shenzhen magic Vision Technology Co.,Ltd.

Address before: 518000 Nanhai Road, Guangdong, Shenzhen, No. 3688, No.

Patentee before: Shenzhen University

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210604

Address after: 518000 room 107, building a, No.1 Chuangye building, 43 Yanshan Road, Yanshan community, zhaoshang street, Nanshan District, Shenzhen City, Guangdong Province

Patentee after: Shenzhen shangque Technology Co.,Ltd.

Address before: 518000 room 1, building B, yuehaimen Plaza, 3688 Nanhai Avenue, Shenda community, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Patentee before: Shenzhen magic Vision Technology Co.,Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180209

CF01 Termination of patent right due to non-payment of annual fee