CN103246613A - 缓存装置及用于缓存装置的缓存数据获取方法 - Google Patents

缓存装置及用于缓存装置的缓存数据获取方法 Download PDF

Info

Publication number
CN103246613A
CN103246613A CN2013100493235A CN201310049323A CN103246613A CN 103246613 A CN103246613 A CN 103246613A CN 2013100493235 A CN2013100493235 A CN 2013100493235A CN 201310049323 A CN201310049323 A CN 201310049323A CN 103246613 A CN103246613 A CN 103246613A
Authority
CN
China
Prior art keywords
cache lines
data
external memory
buffer storage
cache
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.)
Granted
Application number
CN2013100493235A
Other languages
English (en)
Other versions
CN103246613B (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.)
MediaTek Singapore Pte Ltd
Original Assignee
MediaTek Singapore Pte 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 MediaTek Singapore Pte Ltd filed Critical MediaTek Singapore Pte Ltd
Publication of CN103246613A publication Critical patent/CN103246613A/zh
Application granted granted Critical
Publication of CN103246613B publication Critical patent/CN103246613B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0846Cache with multiple tag or data arrays being simultaneously accessible

Abstract

本发明提供一种缓存装置及用于缓存装置的缓存数据获取方法,其中,所述的缓存装置耦接于处理装置、多个系统元件及外部存储控制模块,该缓存装置用于将所有种类的通信流从该处理装置和该多个系统元件交换至该外部存储控制模块;且该缓存装置包括:多个缓存单元以及数据存取单元,该多个缓存单元包括多个缓存行,且该多个缓存单元对应于多个缓存集合;该数据存取单元用于根据至少一个请求信号交换该处理装置、该多个缓存单元以及耦接至该外部存储控制模块的外部存储装置的数据。本发明提供的缓存装置可有效从外部存储装置预取数据,从缓存装置中移出数据,显著改进缓存装置性能。

Description

缓存装置及用于缓存装置的缓存数据获取方法
技术领域
本发明有关于一种缓存装置,更具体地,有关于一种缓存装置及用于缓存装置的缓存数据获取方法。
背景技术
缓存(cache)已经被应用了数十年,用于改进处理器性能。缓存是一种可改进片上系统(system on chip,SoC)性能的已知技术。通常,根据存储大小和与处理器的距离可将缓存划分为多种类型,如一级缓存(level 1 cache)、二级缓存(level 2 cache)和三级缓存(level 3 cache)。
请参考图1,图1为使用传统缓存装置102的SoC系统10的示意图。如图1所示,SoC系统10包括处理装置100、缓存装置102、外部存储控制器104、外部存储装置106和多个系统元件108。处理装置100用于处理从缓存装置102和外部存储装置106获取的数据。其中,外部存储装置106可为位于处理装置100外部的存储装置。多个系统元件108需要来自外部存储装置106的数据,且该多个系统元件108可例如多媒体功能相关元件、外围输入输出端口(peripheralI/O)、调制解调器(modem)等。请注意,当处理装置100与外部存储装置106之间的通信流(traffic stream)被标记为不可缓存(non-cacheable)时,该通信流可直接经由外部存储控制器104进行路由(route)而无需经缓存装置102来进行路由。也就是说,只要指示通信流为不进行缓存,则在处理装置100和外部存储装置106之间直接交换通信流。此外,多个系统元件108和外部存储装置106之间的通信流也不经由缓存装置102进行路由。
通常,可以静态随机存取存储器(static random access memory,SRAM)实现缓存装置102,并以动态随机存取存储器(dynamic random access memory,DRAM)实现外部存储装置106。因此缓存装置102比外部存储装置106速度更快且成本更高。此外,由于处理装置100(例如中央处理单元(central processingunit,CPU))的操作速度比外部存储控制器104和外部存储装置106的共同操作(co-operation)快许多,当从外部存储装置106存取数据时,可能要将处理装置100的操作推迟(postpone)特定数目个时钟周期。因此,为了增加处理装置100的操作速度,处理装置100首先从缓存装置102获取数据,然后当在缓存装置102中找不到所需要的数据时再从外部存储装置106获取数据。
如果从缓存装置102获取数据的几率(probability)增加,则可减少处理装置100存取外部存储装置106中存储的数据时而浪费的空闲时间(idle time),并增加处理装置100的操作速度。然而,缓存装置102的缓存大小是有限的。因此,如何从外部存储装置106有效地预取(pre-fetch)数据以及如何及时地移出(evict)缓存装置102中存储的数据已成为业界的十分重视的问题。
举例而言,如果已经分配(allocate)了缓存装置中所有的缓存行(cache line)但又需要存储一个新的数据元素时,则有必要移出一缓存行来存储该新的数据元素。一种示例的传统缓存替换策略是最近使用(least recently used,LRU)策略,用于选择将要被移出的缓存行。LRU策略选择最长时间处于缓存装置中但并未被存取的缓存行。然而,一些存储行可能存储了曾经被读取然后过时(obsolete)的数据(例如显示数据)。在此情形中,由于一旦读取操作已发生后,存储此类数据的缓存行就可能被移出,因此LRU策略并不是最佳的替换算法。另一种示例的传统缓存替换算法是随机替换策略(random replacement policy),对于具有高度集合关联性(set associativity)的缓存设备而言,当LRU策略实施起来代价过于昂贵的时候经常使用此随机替换策略。随机替换策略随机选择缓存行用于进行替换。但随机替换策略执行起来性能比LRU策略稍差。因此,需要以一种更为有效的方式来选择被移出的缓存行。
此外,还存在多种改进缓存装置性能的方法。例如,传统的减少功耗的方法是当缓存装置处于低活动(low activity)状态时减少缓存装置集合(set)的数目。然而,由于地址别名(address aliasing)需要能在硬件上容易地运作,并且将集合数目除以2比将集合数目除以3或者其他奇数简单许多,因此缓存装置集合的数目必须成半减少。然而减少缓存装置集合数目需要改变地址别名,这意味着存储在缓存装置中的数据在缓存装置调整大小操作(resizing operation)期间必须被移除或者被清除无效(flush-invalidated)。例如,如果透过以因数(factor)2(除以2)来减少缓存装置集合数目的方式缩减大小,当一个额外的位(bit)被存储用作缓存装置的下半部分的标签(tag)之后,则缓存装置的上半部分中存储的数据必须被清除并变为无效,而缓存装置的下半部分为可用。另一方面,当将缓存装置的大小增加回复至原始大小时,(由于地址别名)下半部分中存储的一些数据可能突然属于上半部分,这些数据必须被无效清除或者移动至上半部分。在此条件下,两种情况中的调整大小操作期间都必须暂停SoC操作,以在缓存装置大小或复杂硬件上实现安全的过渡(safe transition)。其中上述的复杂硬件用于确保数据一致性(coherency)。
预取也是一种已知的降低延迟从而改进缓存装置102性能的方法。预取的主要问题在于缓存装置102的预取器(pre-fetcher)需要尝试预测下一步需要什么数据。在一些情形中,预测会出错并开始加载(load)并不需要的数据。简而言之,预取的问题包括从缓存装置中错误地移出数据并且外部存储装置106的额外读取操作可能会延迟关键数据的读取操作。
另一方面,当处理装置100以新的数据元素替换缓存行时,需要移出缓存行中存储的旧数据。该缓存行可能为脏缓存行,即缓存行中存储的数据与外部存储装置106中存储的数据不一致,因此缓存装置102需要将缓存行中存储的数据写回至外部存储装置106。然而,缓存行的替换操作又通常触发与脏缓存行写回操作冲突的读取操作。结果,处理装置100可能要停止以等待读取操作的结果。
由上述可知,除了从外部存储装置有效地预取数据并从缓存装置中及时移出数据之外,还需要改进缓存装置性能的方法。
发明内容
有鉴于此,本发明提供一种缓存装置及用于缓存装置的缓存数据获取方法。
本发明提供一种缓存装置,该缓存装置耦接于处理装置、多个系统元件及外部存储控制模块,该缓存装置用于将所有种类的通信流从该处理装置和该多个系统元件交换至该外部存储控制模块;且该缓存装置包括:多个缓存单元,该多个缓存单元包括多个缓存行,且该多个缓存单元对应于多个缓存集合;以及数据存取单元,该数据存取单元耦接于该处理装置、该多个系统元件、该多个缓存单元及该外部存储控制模块,且该数据存取单元用于根据至少一个请求信号交换该处理装置、该多个缓存单元以及耦接至该外部存储控制模块的外部存储装置的数据,其中,该至少一个请求信号来自该处理装置和该多个系统元件。
本发明另提供一种用于缓存装置的缓存数据获取方法,包括:对对应外部存储装置的一或多个页面的多个脏缓存行的数目进行计数;以及当对应该外部存储装置的第一页面的多个脏缓存行的数目超过阈值时,将对应该外部存储装置的该第一页面的一或多个脏缓存行中存储的数据写回至该外部存储装置;且该缓存装置将该数据写入该外部存储装置的该第一页面;其中,该脏缓存行中存储的该数据与该外部存储装置中存储的该对应数据不一致。
本发明还提供一种用于缓存装置的缓存数据获取方法,该缓存装置具有多个缓存集合,其中,该用于缓存装置的获取方法包括:对一或多个缓存集合中的多个脏缓存行的数目进行计数;以及当第一缓存集合中存储的多个脏缓存行的数目超过阈值且该外部存储装置执行写操作时,将该第一缓存集合的一或多个脏缓存行中存储的数据写回至外部存储装置;其中,该多个脏缓存行中存储的该数据与该外部存储装置中存储的对应数据不一致。
本发明提供的缓存装置可有效从外部存储装置预取数据,从缓存装置中移出数据,显著改进缓存装置性能。
附图说明
图1为使用传统缓存装置的SoC系统的示意图;
图2为根据本发明一个实施例使用新型缓存装置的SoC系统的示意图;
图3A为根据本发明一个实施例缓存装置的调整大小方法的流程图;
图3B为当缓存装置处于低活动状态时实现缓存装置的调整大小方法的流程图;
图3C为当缓存装置处于高活动状态时实现缓存装置的调整大小方法的流程图;
图4为根据本发明实施例的一种替换缓存行的选择方法的流程图;
图5为根据上述替换缓存行的选择方法的缓存行分级实例示意图;
图6为根据本发明的一个实施例实现DLIP方法的示意图;
图7为适用于图6所示缓存阵列的更新方法的流程图;
图8为根据本发明一个实施例实现DLIS方法的示意图;
图9为根据本发明一个实施例更新DLIS方法的流程图;
图10为根据本发明一个实施例预取方法的示意图;
图11为预取方法的示例操作示意图。
具体实施方式
请参考图2,图2为根据本发明一个实施例使用新型缓存装置202的SoC系统20的示意图。其中,缓存装置202可耦接在处理装置216、多个系统元件226和外部存储控制模块200之间。缓存装置202可将所有种类通信流从处理装置216和多个系统元件226交换至该部存储控制模块200。外部存储控制模块200可控制外部存储装置224。值得注意的是,本发明的缓存装置202可为系统级别的缓存,不仅适用于处理装置216(例如CPU),也适用于需要来自外部存储装置224的数据的多个系统元件226,该多个系统元件226可例如多媒体功能相关元件、外围I/O、调制解调器等等。处理装置216可为任意处理器(例如CPU),且外部存储装置224可为任意存储装置(例如DRAM)。如图2所示,外部存储控制模块200可耦接于缓存装置202和外部存储装置224,且外部存储控制模块200根据存储请求信号(memory request signal)M_RS控制外部存储器224并根据外部存储器224的操作状态产生进度信息信号(scheduleinformation signal)SIS。缓存装置202可根据来自处理装置216的多个处理模块的多个请求信号RS而与处理装置216进行数据交换。在一个实施例中,该多个处理模块可为处理装置216的多个核(core)。请注意,处理装置216与外部存储装置224之间的所有通信流(包括不可缓存的通信流)都经过缓存装置202进行路由。
图1中所示传统缓存装置102与图2中所示缓存装置202的另一区别在于图2中的外部存储控制模块200(对应图1中的外部存储控制器104)可集成在缓存装置202中以进一步通过进度信息信号SIS与缓存装置202共享外部存储装置224的操作状态相关信息。其中,该操作状态相关信息可例如是否该外部存储装置224正被写入或读取,以及正在被存取的外部存储装置224的当前页面。进度信息信号SIS也可包括外部存储装置中哪个页面为开启的信息,以及上述页面何时被开启以及上述页面上一次被存取为何时等。根据进度信息信号SIS,缓存装置202可更精确地选择欲获取的数据。缓存装置202的写入进度(write schedule)也得到了改进,因此可达到更佳的写入效率。此外,缓存装置202可使用一些新颖的方法来改进缓存装置202的性能并使得缓存装置202更有效地运作。
具体而言,缓存装置202可包括多个缓存单元204、数据存取单元(dataaccessing unit)206、获取单元(harvesting unit)208以及预取单元(pre-fetchingunit)210。例如,可以各自独立的多个SRAM单元来实现多个缓存单元204,其中,这些SRAM单元对应于可进行独立供电的多个缓存集合(cache set)的一或多种。数据存取单元206可包括输入队列管理器(input queue manager)212、缓存单元管理器214、仲裁单元(arbitration unit)218、重要性单元(importanceunit)220以及选择单元(selecting unit)222。数据存取单元206可耦接至处理装置216、多个缓存单元204、获取单元208、预取单元210以及外部存储控制模块200,且数据存取单元206可根据来自处理装置216的至少一个请求信号对多个缓存单元204和外部存储控制模块200进行控制,其中,该至少一个请求信号可例如分别对应于处理装置216的多个处理模块的多个请求信号RS(即通信流)。请注意,尽管在此实施例中同时包括获取单元208和预取单元210,在其他实施例中可仅包括获取单元208和预取单元210的其中一个。数据存取单元206更可根据至少一个请求信号(例如多个请求信号RS、获取信号HAR及预取信号PRE)交换处理装置216、多个缓存单元204和外部存储装置224的数据,产生对应于多个缓存单元204的多个缓存行的缓存信息信号(cacheinformation signal)CIS,并根据至少一个请求信号产生存取信息信号(accessinformation signal)AIS。此外,数据存取单元206可保持更新多个缓存集合的每个缓存行的重要性信息。当需要在多个缓存单元204中分配新的数据元素时,数据存取单元206可使用重要性信息以在多个缓存单元204选择用于替换的缓存行。
获取单元208可耦接至数据存取单元206,且获取单元208可根据缓存信息信号CIS和进度信息信号SIS产生获取信号(harvesting signal)HAR,以由获取信号HAR指示选择清除(clean)的缓存行。请注意,清除所选择的缓存行意味着将所选择缓存行中存储的数据写入至下一级的存储单元(例如下一级缓存或外部存储装置224)。预取单元210可耦接至数据存取单元206,且预取单元210可根据存取信息信号AIS产生预取信号PRE以控制数据存取单元206的预取操作。
对于缓存装置202的详细操作,请参考图3A,图3A为根据本发明一个实施例缓存装置的调整大小(resizing)方法的流程图。如图3A所示,该缓存装置的调整大小方法可包括:
步骤300:开始。
步骤302:根据缓存装置202的操作状态,将多个缓存单元204的数目调整为活动(active)的。
步骤304:结束。
根据此调整方法,缓存装置202可根据其操作状态将缓存单元204的数目调整为活动的(即调整缓存装置202的部分或全部的缓存单元204的数目从而调整缓存装置202的大小),以减少缓存装置的功耗。例如,当缓存装置处于低功耗时,可减少缓存单元204的数量。请参考图3B,图3B为当缓存装置处于低活动状态时实现缓存装置的调整大小方法的流程图。请注意,在实现相同结果的前提下,该缓存装置的调整大小方法并不限于图3B所示的顺序。此外,根据不同的应用可增加或省略缓存装置的调整大小方法的步骤,本发明不限于此。图3B所示的缓存装置的调整大小方法包括:
步骤300:开始。
步骤302a:将处于非活动状态的缓存单元标记为不可被分配。
步骤302b:当缓存装置处于低活动状态时,清除和/或无效对应所标记缓存单元的条目(entry)。
步骤302c:将处于非活动状态的缓存单元标记为不可被读取且不可被分配。
步骤302d:降低所标记的缓存单元的功率。
步骤304:结束。
根据如图3B所示的调整大小方法,当缓存装置202处于低活动状态时,缓存装置202可减少缓存单元204的数目,例如减少缓存阵列(cache array)的数目。首先,将对处于非活动状态的缓存单元进行标记,使得在这些缓存单元中无法进行新的分配(步骤302a)。第二步,必须清除和/或无效非活动状态的缓存单元中存储的数据(步骤302b)。第三步,对处于非活动状态的缓存单元进行标记,以使所标记的单元中不再允许进行读取操作和分配(步骤302c)。第四,可降低所标记缓存单元的功率以减少功耗(步骤302d)。
另一方面,当缓存装置202处于高活动状态时,缓存装置202可增加缓存单元204的数目。请参考图3C,图3C为当缓存装置处于高活动状态时实现缓存装置的调整大小方法的流程图。请注意,在实现相同结果的前提下,本发明的缓存装置的调整大小方法并不限于图3C所示的顺序。此外,根据不同的应用可增加或省略缓存装置的调整大小方法的步骤,本发明不限于此。图3C所示的调整大小方法包括:
步骤300:开始。
步骤302e:当缓存装置处于高活动状态时,提高处于非活动状态(inactive)的缓存单元的功率。
步骤302f:将当前处于活动状态的缓存单元标记为可被读取且可被分配。
步骤304:结束。
根据如图3B和图3C所示的缓存装置的调整大小方法,缓存装置202可根据缓存装置202的活动状态而调整缓存单元204的数目。请注意,图1中所示的缓存装置102是以单个SRAM单元的方式来实现,因此当确定缓存装置102的大小时,缓存装置102的实现方式为固定的。不同于现有技术,本发明可使用多个独立的SRAM单元,其中这些独立的SRAM单元可映射至(一或多种的)多个缓存集合,因此,可透过调整缓存单元204的数目(例如调整部分或全部缓存集合的数目)来对缓存装置202进行大小调整。由于可对每个SRAM单元独立供电,因而可以在同一时间内提高或降低一或多个SRAM单元的功率(然后可增加或降低缓存装置202的大小)。因此,在执行该缓存装置的调整大小方法期间可对缓存装置202进行全面的操作。此外,可独立调整每个SRAM单元的供应电压以进一步减少功耗。可以二的倍数来增加(例如增加为两倍)或减少(例如减少至一半)缓存阵列的总大小以便捷地实现SRAM单元。然而,增减缓存单元的数目的方式并不限于此。
替换策略
为了改进选择将被替换的缓存行的效率,缓存装置202的数据存取单元206可采用一种替换缓存行的选择方法。请参考图4,图4为根据本发明实施例的一种替换缓存行的选择方法的流程图。该替换缓存行的选择方法为缓存装置202的替换策略的实现方法。请注意,在实现相同结果的前提下,该选择方法并不限于图4所示的顺序。此外,根据不同的应用可增加或省略替换缓存行的选择方法的步骤,本发明不限于此。图4所示的替换缓存行的选择方法包括:
步骤400:开始。
步骤402:根据一或多个缓存行的重要性信息,将多个缓存行的中的一或多个缓存行分类为多个重要性级别。
步骤404:在缓存集合中选择多个缓存行中被划分为最不重要级别的其中一个缓存行。
步骤406:结束。
根据该替换缓存行的选择方法,数据存取单元206的选择单元222可使用该多个缓存集合的一或多个缓存行的重要性信息以进一步将一或多个缓存行分类为多个重要性级别。其中,该一或多个缓存行的重要性信息可例如当前存储在该一或多个缓存行中的数据生存周期(lifetime)的先前历史。且该一或多个缓存行的重要性信息可由数据存取单元206的重要性单元220来提供。该重要性单元220用于更新多个缓存集合的每个缓存行的重要性信息。在一些实施例中,数据存取单元206的选择单元222可根据重要性信息将每个缓存行分类为多个重要性级别。因此,选择单元222可有效地选择将被替换的缓存行。
例如,一旦显示数据已被读取,可降低该显示数据的重要性。因此,如果一个缓存行中存储的数据为显示数据,一旦已读取该缓存行中存储的数据,可将该缓存行标记为较低重要性级别。此外,由于预取的数据即将被读取,可将预取的数据标记为较高重要性级别。而一旦已读取预取数据,可将存储已被读取的预取数据的缓存行的重要性级别改变为较低重要性级别。
除此之外,由处理装置216的特定处理模块产生的数据可能总是具有较高重要性。因此,可将存储该特定处理模块产生数据的缓存行标记为较高重要性级别。相反地,处理装置216的另一个处理模块可能产生较不重要的数据。因此,可将存储该处理模块产生数据的缓存行标记为较低重要性级别。缓存行的重要性级别可被调整,因此当处理装置216的处理模块对缓存行进行存取后,可根据处理模块存取多个缓存行的数据的情况来改变多个缓存行的重要性级别。例如,根据是否处理模块存取缓存行的数据将致能预取操作,可改变该缓存行的重要性级别。一旦处理模块已读取缓存行中存储的数据从而致能预取操作时,可将该缓存行的重要性级别设为最低重要性级别。然而,如果该缓存行的数据之后又被另一个处理模块存取,则可将该缓存行的重要性级别设置为较高重要性级别。
因此,透过将一或多个缓存行划分为不同重要性级别,选择单元222可首先选择缓存集合中具有最低重要性级别的缓存行进行替换。从而使缓存装置202的替换策略更有效。
请参考图5,图5为根据上述替换缓存行的选择方法的缓存行分类实例示意图。如图5所示,根据缓存行中存储的数据,可首先将缓存行划分为无效(invalid)、干净(clean)和脏(dirty)的三类。通常,无效缓存行可为具有无效数据的缓存行,显然无效缓存行可作为用于替换的候选项。干净缓存行表示该缓存行具有有效数据,且干净缓存行中存储的数据与外部存储装置中存储的对应数据相一致。脏缓存行表示该缓存行具有尚未被写入至外部存储装置的数据。透过前述的选择方法的分级,可根据每个缓存行的重要性信息对缓存行进行标记。根据重要性信息,可将脏缓存行进一步划分为脏的高重要性缓存行和脏的低重要性缓存行。类似地,根据重要性信息,可将干净缓存行进一步划分为干净的高重要性缓存行和干净的低重要性缓存行。因此,可将选择被替换的缓存行的优先级顺序改变为:
1.无效缓存行
2.干净的低重要性缓存行
3.干净的高重要性缓存行
4.脏的低重要性缓存行
5.脏的高重要性缓存行
请注意,重要性级别并不限于高重要性和低重要性,实际上,重要性级别还可包括两个以上的重要性级别。
而且,由于缓存装置202的操作,缓存行的重要性可能会改变。请参考图5,可在处理装置216或其他元件对脏的高重要性缓存行进行存取之后,将脏的高重要性缓存行改变为脏的低重要性缓存行。且当处理装置216频繁地对脏的低重要性缓存行进行存取时,可将脏的低重要性缓存行改变为脏的高重要性缓存行。而干净的高重要性缓存行与干净的低重要性缓存行之间的转换类似于脏的高重要性缓存行与脏的低重要性缓存行之间的转换。
此外,当选择单元222决定将缓存行中存储的数据写入至外部存储装置224(例如选择要被清除的缓存行)时,可将缓存行变为干净的低重要性缓存行或无效缓存行。请注意,当缓存行中的数据已写入至外部存储装置224时,允许无效该缓存行。若需要时,可取回(retrieve)该缓存行。另一方面,干净的低重要性缓存行可意指该缓存行作为被替换的第一候选项,并意指该缓存行继续保持有效数据。
在处理装置216或其他元件对存储在脏的高重要性缓存行中的数据进行存取之前,选择单元222可决定将该数据写入至外部存储装置。在此情形中,当选择单元222将存储在脏的高重要性缓存行中的数据写入至外部存储装置224时,可将脏的高重要性缓存行改变为干净的高重要性缓存行。然后,当处理装置216或其他元件读取干净的高重要性缓存行中存储的数据时,可将干净的高重要性缓存行改变为干净的低重要性缓存行或无效缓存行。
获取单元
根据本发明的替换缓存行的选择方法,可优先替换无效缓存行和干净的缓存行(包括干净的高重要性缓存行和干净的低重要性缓存行)。结果,随着时间的推移,缓存装置202的所有缓存行将变成脏缓存行。如果所有的缓存行都变成脏缓存行(包括脏的高重要性缓存行和脏的低重要性缓存行),则可强制选择单元222选择将被移出的脏缓存行。而对于移出脏缓存行,由于必须将移出的脏缓存行写入至外部存储装置224,并且此时可能会与外部存储总线(externalmemory bus)上的关键读取通信流(critical read traffic stream)产生碰撞,因而移出脏缓存行在延迟和带宽效率方面花费的代价较高。例如,外部存储装置224可能为DDR存储装置,该DDR存储装置为管线型(pipeline)且具有双向总线。如果在外部存储装置224执行读取操作的同时执行写入操作,则有必要清空读取管线、然后转向双向总线、填入(fill)与清空写入管线、转向双向总线以及填入与清空读取管线来恢复读取操作。由此,当存在大量的读取通信流时,并不希望对外部存储装置204执行写入操作。此外,外部存储装置224可为DRAM,用于组成存储库(bank)和页面(page)。当写入操作的写入页面不等于外部存储装置224的当前开启页面时,将导致外部存储装置中进一步的延迟,从而相应地降低性能。
因此,获取单元208可根据缓存信息信号CIS收集脏缓存行作为待清除的候选项,并根据进度信息信号SIS控制数据存取单元206清除候选项,从而将写入进度(write schedule)最佳化至外部存储装置224(例如DRAM)。获取单元208用于获取关于缓存装置202中脏缓存行的位置信息,并获取对应于脏缓存行的外部存储装置224的页面。因而获取单元208可产生用作清除的候选项的缓存行列表,以确保在移出缓存行时缓存装置202的每个缓存集合具有最少数目的干净缓存行用于替换缓存行的选择方法。在此情形中,可在外部存储装置224执行其他写入操作时,执行写入操作将替换候选项写回至外部存储装置224。请注意,当外部存储装置224的通信流较少时,在执行写入操作将替换候选项写回至外部存储装置224时,缓存装置202的性能也得到了改进。根据上述概念,本发明提供三种脏缓存行的获取方法,分别称为页面中的脏缓存行(Dirty Lines in Page,DLIP)方法、集合中的脏缓存行(Dirty Lines in Set,DLIS)方法以及缓存中的脏缓存行(Dirty Lines in Cache,DLIC)方法。
具体地,DLIP方法的主要精神在于获取单元208可根据进度信息信号SIS和缓存信息信号CIS,获取对应外部存储装置224中同一页面的脏缓存行的信息,然后,当对应同一页面的脏缓存行的数目超过阈值TH1且外部存储装置224向该同一或其他存储页面执行写入操作时,获取单元208可将对应同一页面的脏缓存行中存储的数据写入至外部存储装置224。
另一方面,DLIS方法的主要精神在于当缓存集合中脏缓存行的数目超过阈值TH2且外部存储装置224执行写入操作时,获取单元208可清除同一缓存集合中存储的一个或多个或所有的脏缓存行。此外,当获取单元208清除对应外部存储装置224某些页面的缓存集合的一个或多个缓存行时,获取单元208也可清除对应同一页面的其他缓存集合的一或多个缓存行。此为DLIS方法之后使用DLIP方法的情形。
此外,DLIC方法的主要精神在于当多个缓存集合中脏缓存行的数目超过阈值TH3且外部存储装置224执行写入操作时,获取单元208可清除多个缓存集合中的一个或多个或所有的脏缓存行。
上述三种方法(DLIP方法、DILS方法及DLIC方法)可分别使用或以任何形式组合使用。在一个实施例中,由于DLIP方法可获取对应外部存储装置224的当前开启页面的脏缓存行,可最佳化写入进度以在外部存储装置224中产生最少开销(overhead),因而此时可优先执行DLIP方法。而在另一个实施例中,也可同时执行DLIP方法、DLIS方法及DLIC方法。例如,获取单元208可包括DLIP计时器、DLIS计数器及DLIC计数器。其中,DLIP计时器用于对对应外部存储装置224的一个或多个页面的脏缓存行的总数目进行计数,DLIS计数器用于对对应一个或多个缓存集合的脏缓存行的总数目进行计数,而DLIC计数器用于对缓存装置202中的脏缓存行的总数目进行计数。
请注意,当外部存储装置224的通信流较少时,可清除由DLIP方法、DLIS方法及DLIC方法获取的脏缓存行。为了最佳化外部存储装置224的写入进度效率,需要将属于外部存储器224的特定页面和/或存储库的脏缓存行写回,其中,可根据进度信息信号SIS(即关于外部存储装置224的当前和过去操作状态的信息)来确定外部存储器224的特定页面和/或存储库的脏缓存行。此外,由于缓存装置202在正常操作下执行存取时,脏缓存行的信息可透过缓存标签阵列查询(cache tag array lookup)而取得,因此获取单元208可保持纪录脏缓存行的状态而不对缓存装置202的性能产生任何不良影响。
根据不同的系统需求,可以多种方式实现DLIP方法、DLIS方法及DLIC方法。请参考图6,图6为根据本发明的一个实施例实现DLIP方法的示意图。如图6所示,缓存阵列60适用于N型缓存装置(N-Way cache device)(即包括N个缓存单元的缓存装置),其中每个缓存标签可存储K个脏缓存行索引。可使用对应页面P1-Pi的地址的第一部分作为条目标签(entry tag),并使用地址的第二部分作为条目索引(entry index)。标签Tag11-Tag1N,Tag21-Tag2N,...,TagM1-Tag MN中的每个标签可分别存储对应于页面P1-Pi的其中一页的地址的第一部分。数据Data11-Data1N,Data21-Data2N,...,Data M1-Data MN分别对应于标签Tag11-Tag1N,Tag21-Tag2N,...,Tag M1-Tag MN。数据Data11可存储Tag11指示的存储页面所对应的脏缓存行的位置的最少必要信息(at leastnecessary information)。数据Data11中存储的最少必要信息可为脏缓存行的地址的一部分,其中,该部分地址不包括在存储页面地址的第二部分中,且数据Data11中存储的最少必要信息还可为主要缓存装置中脏缓存行的数目。数据Data12可存储标签Tag12指示的存储页面所对应的脏缓存行的位置的最少必要信息。以此类推。因此,缓存阵列60可保持纪录对应外部存储装置224的一或多个页面的脏缓存行的数目。通过查询缓存阵列60可容易地找到属于外部存储装置224的特定页面的主要缓存装置中的脏缓存行的位置。
关于缓存阵列60的更新,请参考图7,图7为适用于图6所示缓存阵列60的更新方法70的流程图。显然,在实现相同结果的前提下更新方法70并不限于图7所示的顺序。同样地,根据不同应用的需求可增加或省略更新方法70的步骤,更新方法70并不限于以下的描述。当将缓存行C1改变为脏缓存行时,可执行更新方法70,且更新方法70可包括:
步骤700:开始。
步骤702:查找是否对应标签Tag11-Tag1N,Tag21-Tag2N,...,Tag M1-TagMN的页面包括了对应脏缓存行C1的页面。如果对应标签T1的页面匹配对应缓存行C1的页面,执行步骤703;否则,执行步骤710。
步骤703:检测是否脏缓存行C1已注册(register)在对应标签T1的数据中。如果是,执行步骤714;否则,执行步骤704。
步骤704:将缓存行C1的地址加入对应标签T1的数据中。
步骤706:确定是否对应标签T1的脏缓存行的数目已超过阈值TH1。如果是,执行步骤708;如果否,执行步骤714。
步骤708:输出对应标签T1的数据作为用于清除和无效缓存阵列60中条目的候选项,然后执行步骤714。
步骤710:确定是否存在一个标签,该标签对应的页面存储的脏缓存行的数目少于或等于缓存行C1对应的页面存储的脏缓存行数目。如果存在这样的标签T2,则执行步骤712;否则,执行步骤714。
其中,该标签可对应于页面的一部分。例如,标签可对应于页面地址的一或多个位(bit)。
步骤712:输出对应标签T2的数据作为用于清除的候选项,并修改标签T2和对应标签T2的数据以与对应缓存行C1的页面进行关联。
步骤714:结束。
根据更新方法70可对用于DLIP的缓存阵列进行更新。请注意,无论何时存取脏缓存行,都可执行该更新方法70。
请参考图8,图8为根据本发明一个实施例实现DLIS方法的示意图。如图8所示,可通过在缓存装置(图未示)中建立表格80来实现DLIS方法。表格80可包括缓存集合号码栏和脏缓存行计数栏。缓存集合号码栏可用于存储对应于主要缓存装置中缓存集合的缓存索引。脏缓存行计数栏可用于存储对应于缓存集合中的缓存索引的脏缓存行的数目。可根据缓存集合中存储的脏缓存行的数目来确定缓存集合号码栏的从上至下顺序,其中,该脏缓存行的数目对应于该缓存集合号码栏中存储的每个缓存索引数字。通过在操作期间保持更新表格80,获取单元208可在对应缓存单元204的脏缓存行计数(即缓存集合中存储的脏缓存行数目)超过阈值TH2时,输出清除的候选项。请注意,在输出清除的候选项时,获取单元208可进一步查找由DLIP方法建立的缓存阵列60以用于清除对应外部存储装置224部分页面的部分或全部脏缓存行。
请参考图9,图9为根据本发明一个实施例更新DLIS方法的流程图。显然,在实现相同结果的前提下更新方法90并不限于图9所示的顺序。同样地,根据不同应用的需求可增加或省略更新方法90的步骤,更新方法90并不限于以下的描述。当将缓存行C2改变为脏缓存行时,可执行更新方法90,且更新方法90包括:
步骤900:开始。
步骤902:查找是否表格80的缓存集合号码栏包括对应缓存行C2的缓存集合号码。如果是,则执行步骤903;否则,执行步骤908。
步骤903:更新对应于步骤902中找到的匹配缓存集合号码所对应的脏缓存行计数。
步骤904:确定是否表格80中的最高重要性脏缓存行计数超过阈值TH2。如果是,则执行步骤906,如果否,执行步骤914。
步骤906:输出对应最高重要性缓存行计数的缓存集合中的脏缓存行作为清除的候选项。然后执行步骤914。
步骤908:将对应缓存行C2的脏缓存行计数与表格80中最低重要性脏缓存行的计数进行比较。如果对应缓存行C2的缓存集合的脏缓存行计数大于表格80中最低重要性脏缓存行的计数,则执行步骤910;否则,执行步骤914。
步骤910:输出对应最低重要性脏缓存行计数的缓存集合的脏缓存行作为用于清除的候选项,并移出对应最低重要性脏缓存行计数的缓存集合。然后执行步骤912。
步骤912:将对应缓存行C2的缓存集合号码和脏缓存行计数输入至表格80。然后执行步骤914。
步骤914:结束。
根据更新方法90,可更新用于DLIS方法的表格80。
DLIC方法可由DLIC计数器来实现,其中,DLIC计数器用于对缓存装置202中的脏缓存行的总数目进行计数。DLIC计数器的优势在于DLIC计数器不需要复杂的操作(例如走过(walking)多个缓存单元)来维持DLIC计数器,而是通过检测是否缓存行的状态发生改变来维持DLIC计数器,其中缓存行的状态发生改变可例如从脏变为干净,或从干净变为脏。
预取单元
此外,缓存装置202的预取单元210可根据存取信息信号AIS确定是否预取数据以用于处理装置216的处理模块。存取信息信号AIS可意指处理模块行为的先验信息(priori information)。根据存取信息信号AIS,预取单元210可根据是否处理模块的存取模式(access pattern)为系统型(systematic)而控制数据存取单元206预取用于处理模块的数据。例如,存取信息信号AIS可意指处理模块的至少一次存取的大小及/或幅度(stride)。其中,该至少一次存取可为多个连续的存取。在一个实施例中,预取单元210可根据处理模块每次存取的大小及/或幅度(stride)确定是否预取用于处理模块的数据。因此,预取单元210可分别控制对应处理装置216的不同处理模块的预取操作。请注意,由于存取信息(例如存取信息信号AIS)对缓存装置202可用,因此预取单元210的操作可与缓存装置202的正常操作并行而分别独立进行。因此,预取单元210对缓存装置202的性能没有不良影响。
请参考图10,图10为根据本发明一个实施例预取方法1000的示意图。显然,在实现相同结果的前提下预取方法1000并不限于图10所示的顺序。同样地,根据不同应用的需求可增加或省略预取方法1000的步骤,预取方法1000并不限于以下的描述。预取方法1000可用于预取单元210中,且预取方法1000包括:
步骤1002:开始。
步骤1004:确定是否预测地址等于当前地址。其中,预测地址是由处理模块根据第一次存取的地址和大小而计算得出的。而当前地址是处理模块在第一次存取后执行第二次存取的地址。如果预测地址等于当前地址,执行步骤1006;否则,执行步骤1012。
步骤1006:当对应处理模块的模式值(pattern value)小于第一预设数值时,增加该模式值,其中,根据设计需求,第一预设数值可例如7或其他数目。
步骤1008:确定模式值是否大于或等于阈值,如果是,则执行步骤1010;否则,执行步骤1014。其中,根据设计需求,阈值可例如3或其他阈值。
步骤1010:控制数据存取单元206开始预取用于处理模块的数据。
步骤1012:当模式值大于第二预设数值时,减少对应处理模块的模式值,其中,根据设计需求,第二预设数值可例如0或其他数目。
步骤1014:控制数据存取单元206停止预取用于处理模块的数据。
步骤1016:根据当前存取的大小和地址计算预测地址。
步骤1018:结束。
根据预取方法1000,预取单元210可确定是否预取用于处理模块的数据。请注意,在此实施例中,模式值在0至7之间,但本发明并不限于此。
请一并参考图11,图11为预取方法1000的示例操作示意图。如图11所示,表格1100表示处理模块的16个连续存取的地址和大小的序列,而表格1120表示由预取单元210确定的模式值、预测地址及预取致能(pre-fetching enable)状态。请注意,表格1100中和1120中的存取顺序仅为说明的目的。例如,根据实际系统的操作,表格1100中可包括处理模块任何次数的存取的地址和大小。例如,在第一次存取中,预取单元210可根据第一次存取的地址和大小计算出预测地址为20。在第二次存取中,预取单元210可确定预测地址(例如本实例中的20)不等于第二次存取的地址。但在此实例中,模式值为0,因此,模式值维持在0。预取致能的状态为不可用(false)。透过重复预取方法1000,预取单元210可根据处理模块的一或多次存取的地址和大小而自动控制预取操作。
显然,在本发明中,可透过缓存装置202对处理装置216与SOC系统20中的其他元件(包括处理装置216)之间的各种通信流进行路由。外部存储控制模块200可控制外部存储装置224。此外,外部存储控制模块200可集成在缓存装置202中用于提供外部存储装置224的进度信息,从而增强缓存装置202的操作。通过植入适用于写入进度的脏缓存行的写入操作来改进外部存储装置224的写入进度,写入进度可得到大幅改进。类似地,通过在读取进度中植入预取数据的读取操作,可改进外部存取装置224的读取进度。此外,由于本发明的缓存装置202可由对应一或多种类型的独立SRAM单元实现,因此在缓存装置202的调整大小期间,缓存装置202为完全可操作。另一方面,透过根据缓存行的重要性信息将缓存行进行重要性级别的划分,缓存装置202的选择单元222可更精确地选择被替换的缓存行。请注意,可根据处理模块存取缓存行的行为来对缓存行的重要性信息进行更新,其中处理模块存取缓存行的行为可例如处理模块执行的操作(如读取操作或写入操作)以及是否允许处理模块预取数据。而且,上述实施例揭示了DLIP方法、DLIS方法和DLIC方法以指示缓存装置有效地清除脏缓存行。DLIP方法和DLIS方法致能获取单元208识别脏缓存行的位置而无需在缓存标签阵列中执行复杂的搜索,其中,在输入队列管理器212中实现该缓存标签阵列。此外,缓存装置202的预取操作可独立于不同处理模块的行为,从而改进缓存装置202的效率。
根据不同的应用,本领域技术人员可适应性地进行修改与替换。例如,获取单元208和预取单元210并不需要在缓存装置202中同时实现。然而,当获取单元208和预取单元210同时实现在缓存装置202中时,可改进缓存装置202的性能。请注意,可并行进行更新DLIC方法、DLIS方法、DLIP方法和预取单元210的数据结构以维持脏缓存行位置信息的操作与缓存装置202的正常缓存操作,且上述操作不需要超出正常操作期间缓存装置中所查找的信息之外的任何其他信息。此外,上述方法的所有步骤仅用于说明的目的。根据不同的实际需求,可改进方法步骤的顺序,可并行执行方法步骤,或者可忽略或增加一些步骤。
透过本发明揭露的各种方法,可有效地改进本发明中缓存装置性能。
本领域的技术人员可在本发明的保护范围之内对本发明的装置和方法进行些许更改和润饰。相应地,上述揭示的内容仅由后附的权利要求的范围所界定。

Claims (10)

1.一种缓存装置,该缓存装置耦接于处理装置、多个系统元件及外部存储控制模块,该缓存装置用于将所有种类的通信流从该处理装置和该多个系统元件交换至该外部存储控制模块;且该缓存装置包括:
多个缓存单元,该多个缓存单元包括多个缓存行,且该多个缓存单元对应于多个缓存集合;以及
数据存取单元,该数据存取单元耦接于该处理装置、该多个系统元件、该多个缓存单元及该外部存储控制模块,且该数据存取单元用于根据至少一个请求信号交换该处理装置、该多个缓存单元以及耦接至该外部存储控制模块的外部存储装置的数据,其中,该至少一个请求信号来自该处理装置和该多个系统元件。
2.如权利要求1所述的缓存装置,其特征在于,该缓存装置更包括:
获取单元,耦接于该数据存取单元,该获取单元用于根据缓存信息信号和进度信息信号而产生获取信号至该数据存取单元以指示选择多个缓存行作为用于清除的多个候选项,其中,该缓存信息信号由该数据存取单元产生,该进度信息信号由该外部存储控制模块根据外部存储装置的操作状态而产生。
3.如权利要求2所述的缓存装置,其特征在于,该获取单元用于当第一缓存集合中存储的多个脏缓存行的数目超过阈值时,选择该第一缓存集合的一或多个脏缓存行作为用于清除的该多个候选项,且该获取单元包括计数器,该计数器用于对一或多个缓存集合中的多个脏缓存行的数目进行计数,其中,该多个脏缓存行中存储的数据与该外部存储装置中存储的对应数据不一致。
4.如权利要求2所述的缓存装置,其特征在于,当对应该外部存储装置的第一页面的多个脏缓存行的数目超过阈值且该外部存储装置执行其他写操作时,该获取单元通过该获取信号选择对应该第一页面的该多个脏缓存行作为用于清除的该多个候选项,且该获取单元包括计数器,该计数器用于对对应该外部存储装置的一或多个页面的多个脏缓存行的数目进行计数,其中,该多个脏缓存行中存储的该数据与该外部存储装置中存储的对应数据不一致。
5.如权利要求4所述的缓存装置,其特征在于,该获取单元用于构建存储在缓存阵列中的用于存储多个标签的表格,其中,每个标签对应于该外部存储装置的一或多个页面并存储数据,其中,该数据对应于该一或多个页面的多个脏缓存行的多个地址。
6.如权利要求1所述的缓存装置,其特征在于,该缓存装置中集成该外部存储控制模块。
7.一种用于缓存装置的缓存数据获取方法,包括:
对对应外部存储装置的一或多个页面的多个脏缓存行的数目进行计数;以及
当对应该外部存储装置的第一页面的多个脏缓存行的数目超过阈值时,将对应该外部存储装置的该第一页面的一或多个脏缓存行中存储的数据写回至该外部存储装置;且该缓存装置将该数据写入该外部存储装置的该第一页面;
其中,该脏缓存行中存储的该数据与该外部存储装置中存储的该对应数据不一致。
8.如权利要求7所述的用于缓存装置的缓存数据获取方法,其特征在于,构建存储在缓存阵列中的用于存储多个标签的表格,其中,每个标签对应于该外部存储装置的一或多个页面并存储数据,其中,该数据对应于该一或多个页面的多个脏缓存行的多个地址。
9.一种用于缓存装置的缓存数据获取方法,该缓存装置具有多个缓存集合,其中,该用于缓存装置的获取方法包括:
对一或多个缓存集合中的多个脏缓存行的数目进行计数;以及
当第一缓存集合中存储的多个脏缓存行的数目超过阈值且该外部存储装置执行写操作时,将该第一缓存集合的一或多个脏缓存行中存储的数据写回至外部存储装置;
其中,该多个脏缓存行中存储的该数据与该外部存储装置中存储的对应数据不一致。
10.如权利要求9所述的用于缓存装置的缓存数据获取方法,其特征在于,该用于缓存装置的获取方法更包括:
在将对应该外部存储装置的第一页面的该第一缓存集合的该一或多个脏缓存行中存储的该数据写回至该外部存储装置时,将对应该第一页面的第二缓存集合的一或多个脏缓存行中存储的数据写回至该外部存储装置。
CN201310049323.5A 2012-02-08 2013-02-07 缓存装置及用于缓存装置的缓存数据获取方法 Expired - Fee Related CN103246613B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261596346P 2012-02-08 2012-02-08
US61/596,346 2012-02-08
US13/685,728 2012-11-27
US13/685,728 US20130205089A1 (en) 2012-02-08 2012-11-27 Cache Device and Methods Thereof

Publications (2)

Publication Number Publication Date
CN103246613A true CN103246613A (zh) 2013-08-14
CN103246613B CN103246613B (zh) 2016-01-27

Family

ID=48903952

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310049323.5A Expired - Fee Related CN103246613B (zh) 2012-02-08 2013-02-07 缓存装置及用于缓存装置的缓存数据获取方法

Country Status (2)

Country Link
US (1) US20130205089A1 (zh)
CN (1) CN103246613B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677483A (zh) * 2015-12-31 2016-06-15 Tcl集团股份有限公司 一种数据缓存的方法及装置
CN106547477A (zh) * 2015-09-22 2017-03-29 伊姆西公司 用于在线地减少缓存设备的方法和装置
CN113722244A (zh) * 2021-11-02 2021-11-30 北京微核芯科技有限公司 一种高速缓存结构、访问方法和电子设备
CN113778912A (zh) * 2021-08-25 2021-12-10 深圳市中科蓝讯科技股份有限公司 cache映射架构动态调整方法及cache控制器

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9348385B2 (en) * 2012-07-09 2016-05-24 L. Pierre deRochement Hybrid computing module
CN104516828B (zh) * 2013-09-27 2018-01-09 伊姆西公司 用于移除缓存数据的方法和设备
US9846653B2 (en) 2014-02-21 2017-12-19 Hewlett Packard Enterprise Development Lp Performing write operations on main memory
CN105824760B (zh) * 2015-01-09 2022-04-22 华邦电子股份有限公司 存储装置和其电力控制方法
US10740260B2 (en) 2016-05-12 2020-08-11 Lg Electronics Inc. Cache self-clean engine
US10205989B2 (en) * 2016-06-12 2019-02-12 Apple Inc. Optimized storage of media items
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10331561B1 (en) * 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
JP2022034217A (ja) * 2020-08-18 2022-03-03 富士通株式会社 情報処理装置およびキャッシュ制御プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513099B1 (en) * 1998-12-22 2003-01-28 Silicon Graphics Incorporated Enhanced graphics cache memory
US20090265514A1 (en) * 2008-04-17 2009-10-22 Arm Limited Efficiency of cache memory operations
CN100587675C (zh) * 2001-09-27 2010-02-03 英特尔公司 降低存储器访问等待时间的存储器访问调度方法和装置
US8060700B1 (en) * 2008-12-08 2011-11-15 Nvidia Corporation System, method and frame buffer logic for evicting dirty data from a cache using counters and data types

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293609A (en) * 1991-04-19 1994-03-08 International Business Machines Corporation Hit-density-based replacement for data cache with prefetching
US5895488A (en) * 1997-02-24 1999-04-20 Eccs, Inc. Cache flushing methods and apparatus
US6119205A (en) * 1997-12-22 2000-09-12 Sun Microsystems, Inc. Speculative cache line write backs to avoid hotspots
US7099998B1 (en) * 2000-03-31 2006-08-29 Intel Corporation Method for reducing an importance level of a cache line
US20050273514A1 (en) * 2000-12-22 2005-12-08 Ray Milkey System and method for automated and optimized file transfers among devices in a network
US6810465B2 (en) * 2001-10-31 2004-10-26 Hewlett-Packard Development Company, L.P. Limiting the number of dirty entries in a computer cache
US7069388B1 (en) * 2003-07-10 2006-06-27 Analog Devices, Inc. Cache memory data replacement strategy
DE102004055013A1 (de) * 2004-11-15 2006-05-24 Infineon Technologies Ag Computereinrichtung
US20060282620A1 (en) * 2005-06-14 2006-12-14 Sujatha Kashyap Weighted LRU for associative caches
US7844778B2 (en) * 2006-07-11 2010-11-30 International Business Machines Corporation Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements
US7840759B2 (en) * 2007-03-21 2010-11-23 International Business Machines Corporation Shared cache eviction
US8180968B2 (en) * 2007-03-28 2012-05-15 Oracle America, Inc. Reduction of cache flush time using a dirty line limiter
US7844779B2 (en) * 2007-12-13 2010-11-30 International Business Machines Corporation Method and system for intelligent and dynamic cache replacement management based on efficient use of cache for individual processor core
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8140767B2 (en) * 2009-06-04 2012-03-20 International Business Machines Corporation Cache management through delayed writeback
US8341358B1 (en) * 2009-09-18 2012-12-25 Nvidia Corporation System and method for cleaning dirty data in a cache via frame buffer logic
JP5485055B2 (ja) * 2010-07-16 2014-05-07 パナソニック株式会社 共有メモリシステム及びその制御方法
US8832381B2 (en) * 2011-02-21 2014-09-09 Advanced Micro Devices, Inc. Cache and a method for replacing entries in the cache
US8543766B2 (en) * 2011-06-10 2013-09-24 Freescale Semiconductor, Inc. Writing data to system memory in a data processing system in which cache line states are tracked
US9032156B2 (en) * 2011-07-06 2015-05-12 Advanced Micro Devices, Inc. Memory access monitor
US9141543B1 (en) * 2012-01-06 2015-09-22 Marvell International Ltd. Systems and methods for writing data from a caching agent to main memory according to a pre-clean criterion

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513099B1 (en) * 1998-12-22 2003-01-28 Silicon Graphics Incorporated Enhanced graphics cache memory
CN100587675C (zh) * 2001-09-27 2010-02-03 英特尔公司 降低存储器访问等待时间的存储器访问调度方法和装置
US20090265514A1 (en) * 2008-04-17 2009-10-22 Arm Limited Efficiency of cache memory operations
US8060700B1 (en) * 2008-12-08 2011-11-15 Nvidia Corporation System, method and frame buffer logic for evicting dirty data from a cache using counters and data types

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106547477A (zh) * 2015-09-22 2017-03-29 伊姆西公司 用于在线地减少缓存设备的方法和装置
CN106547477B (zh) * 2015-09-22 2019-07-19 伊姆西公司 用于在线地减少缓存设备的方法和装置
CN105677483A (zh) * 2015-12-31 2016-06-15 Tcl集团股份有限公司 一种数据缓存的方法及装置
CN105677483B (zh) * 2015-12-31 2020-01-24 Tcl集团股份有限公司 一种数据缓存的方法及装置
CN113778912A (zh) * 2021-08-25 2021-12-10 深圳市中科蓝讯科技股份有限公司 cache映射架构动态调整方法及cache控制器
CN113722244A (zh) * 2021-11-02 2021-11-30 北京微核芯科技有限公司 一种高速缓存结构、访问方法和电子设备
CN113722244B (zh) * 2021-11-02 2022-02-22 北京微核芯科技有限公司 一种高速缓存结构、访问方法和电子设备

Also Published As

Publication number Publication date
US20130205089A1 (en) 2013-08-08
CN103246613B (zh) 2016-01-27

Similar Documents

Publication Publication Date Title
CN103246613B (zh) 缓存装置及用于缓存装置的缓存数据获取方法
CN105027211B (zh) 自适应粒度行缓冲器高速缓存
CN100517274C (zh) 高速缓冲存储器及其控制方法
CN103425600B (zh) 一种固态盘闪存转换层中的地址映射方法
US8103894B2 (en) Power conservation in vertically-striped NUCA caches
CN100573474C (zh) 提供功率优化的高速缓冲存储器组选择的方法和系统
CN103383672B (zh) 高速缓存控制以减少事务回滚
CN101236527B (zh) 减少后来无效的行交换方法、装置和系统
CN109815163A (zh) 基于预测的高效高速缓存行处理的系统和方法
CN103026346A (zh) 包括固态存储器设备的存储系统中的逻辑到物理地址映射
US20210365376A1 (en) Adaptive Cache
CN104102591A (zh) 计算机子系统及在其中实现闪存转换层的方法
CN100377117C (zh) 用于虚实地址变换及读写高速缓冲存储器的方法及装置
CN103597455A (zh) 用于大型数据缓存的有效标签存储
CN103226521B (zh) 多模式数据预取装置及其管理方法
CN1659525A (zh) 简化了缓存替换策略的实现的多线程缓存方法和装置
CN102150147A (zh) 存储器服务器
CN102446159B (zh) 多核处理器的数据管理方法及装置
CN103198026A (zh) 指令高速缓存功耗降低
CN100549945C (zh) 嵌入式系统中基于spm的指令缓冲的实现方法
CN102110073B (zh) 一种片上共享高速缓存的替换装置和方法以及相应处理器
CN103377146A (zh) 分支预测功率降低
CN103377036A (zh) 分支预测功率降低
CN102541761B (zh) 应用于嵌入式芯片的只读高速缓冲存储器
US20060143400A1 (en) Replacement in non-uniform access cache structure

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160127

Termination date: 20190207

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