读写感知的高速缓存的制作方法

文档序号:6350289阅读:271来源:国知局
专利名称:读写感知的高速缓存的制作方法
技术领域
本申请一般涉及改进的数据处理设备和方法,更具体而言,涉及一种用于提供读写感知的高速缓存的设备和方法。
背景技术
高速缓存被用于加速数据传输并用作数据的中间停留(staging)区域。存储器高速缓存加速指令执行、数据检索和数据更新,且其内容不断改变。存储器高速缓存,或者 “CPU高速缓存”,是桥接主存储器和中央处理单位(CPU)的存储体(memory bank)。存储器高速缓存比主存储器更快,并且允许更快地执行指令及读写数据。指令和数据按照被称为高速缓存“线”的固定块从主存储器传输到高速缓存。并非大高速缓存的所有部分都可以以相同的延时(latency)来从给定点(例如 CPU)访问。于是出现了作为用于大高速缓存设计的新兴高速缓存架构的非一致高速缓存架构(NUCA)。在NUAC设计中,高速缓存被分为多个存储体,这些存储体由于其所处的位置、 不同的线路延迟和延时而具有从不同访问点(例如CPU)的不同的访问延迟。智能地管理 NUCA中存在的不同的延时特征改进了存储系统的性能。在动态NUCA (D-NUCA)设计中,线被典型地置于任一个存储体中。D-NUCA可以使用非传统的高速缓存替换和数据移动策略,以将频繁访问的数据置于较近的存储体中。如果第一存储体比第二存储体到处理器单元具有更短延时,则第一存储体被定义为比第二存储体更“近”。于是从较近的存储体中可以更快地访问数据。

发明内容
在一个说明性实施例中,提供了一种数据处理系统中的用于读写感知的高速缓存的方法。该方法包括在高速缓存控制器中接收来自处理器单元的高速缓存访问请求。如果高速缓存访问请求是载入,并且导致高速缓存未命中(miss),则高速缓存控制器将高速缓存线的数据载入到高速缓存的经常读取的区域。高速缓存包括存储体阵列,其中,经常读取的区域包括接近处理器单元的存储体。该方法还包括高速缓存控制器将高速缓存存储未命中的结果存入高速缓存的经常写入的区域。该经常写入的区域包括远离处理器单元的存储体。在另外的说明性实施例中,提供了一种计算机程序成品,其包括具有计算机可读程序的计算机可用或可读介质。当在计算设备上执行该计算机可读程序时,其使得计算设备执行上述各种与方法说明性实施例相关的单独或组合的操作。在又一个说明性实施例中,提供了一种用于读写感知的高速缓存的装置。该装置包括处理器单元、包含存储体阵列的高速缓存阵列,以及与高速缓存阵列和处理器单元连接的高速缓存控制器。存储体阵列包括经常读取的区域和经常写入的区域。经常读取的区域包括存储体阵列中接近处理器单元的存储体。经常写入的区域包括存储体阵列中远离处理器单元的存储体。高速缓存控制器被配置为从处理器单元接收高速缓存访问请求。如果该访问是引起高速缓存未命中的载入,高速缓存控制器将高速缓存线的数据载入到经常读取的区域。高速缓存控制器还被配置为在引起高速缓存未命中的存储的情况下,该高速缓存线的数据被置于高速缓存的经常写入的区域。本发明的这些以及其他特征将在本发明的示例性实施例的下列详细描述中被说明,或者由于该详细描述对本领域普通技术人员来说变得更为明显。


本发明及其优选实施方式和进一步的目标和优势,将参考说明性实施例的下列详细描述并结合附图而被最好地理解,在附图中图1是可在其中实现说明性实施例的方面的数据处理系统的框图;图2是示出可在其中实现说明性实施例的方面非一致高速缓存架构的框图;图3是示出根据说明性实施例的读写感知的非一致高速缓存架构的框图;图4是示出根据说明性实施例的用于读写感知的高速缓存的硬件支持的框图;图5是示出根据说明性实施例的用于读写感知的高速缓存的高速缓存控制器的操作的流程图。
具体实施例方式说明性实施例提供了一种用于提供读写告知的高速缓存的机制。该机制将大高速缓存分为经常读取的区域和经常写入的区域。该机制在非一致高速缓存架构替换策略中考虑读写频率。经常写入的高速缓存线被置于一个较远的存储体中。经常读取的高速缓存线被置于一个较近的存储体中。频繁读取的高速缓存线被置于一个较近的存储体中。经常读取和经常写入的区域之间的尺寸比例可以是静态或动态的。经常读取的区域和经常写入的区域之间的边界可以是清楚的或模糊的。因此,说明性实施例可以在包括分布式数据处理环境、单个数据处理装置等多种不同类型的数据处理环境中使用。为了提供用于描述说明性实施例的特定元件和功能的上下文,下面提供图1和图2作为示例环境,说明性实施例的方面可以在其中实现。尽管依照图1和图2的描述将主要集中在单个数据处理装置实现上,这仅是示例,而不是旨在说明或暗示与本发明的特征相关的限制。相反,说明性实施例旨在包含分布式数据处理环境。现在参考附图并特别参考图1和图2,提供了数据处理环境的示例图,本发明的说明性实施例可以在其中实现。应该理解图1和图2仅是例子,而不是旨在断定或暗示与本发明的实施例的方面可在其中实现的环境相关的任何限制。可以对描述的环境进行多种修改,而不偏离本发明的范围。现在参考附图,图1是可在其中实现说明性实施例的方面的数据处理系统的框图。数据处理系统100是计算机的例子,实现用于说明性实施例的过程的计算机可用程序代码或指令可以位于其中。在该说明性示例中,数据处理系统100包括通信结构(fabric), 其提供处理器单元104、存储器106、持久存储设备108、通信单元110、输入/输出(I/O)单元112和显示器114之间的通信。处理器单元104用于执行可以被载入到存储器106的软件指令。根据具体实现, 处理器单元104可以是一组单个或多个处理器,或可以是多处理器内核。此外,处理器单元104可以使用一个或多个异构处理器系统来实现,其中在单个芯片上存在主处理器和从属处理器。作为另一个说明性例子,处理器单元104可以是包含相同类型的多个处理器的对称多处理器系统。存储器106和持久存储设备108是存储设备116的例子。存储设备可以是能临时和/或持久地存储信息的任何硬件,该信息例如但不限于数据、功能形式的程序代码、和/ 或其他合适的信息。存储器106在这些例子中可以是,例如,随机存取存储器和任何其他合适的易失性或非易失性存储设备。持久存储设备108可以基于具体实现采用各种形式。例如,持久存储设备108可以包括一个或更多个组件或装置。例如,持久存储设备108可以是硬盘、闪存、可重写光盘、可重写磁带或上述各项的组合。持久存储设备108所使用的介质也可以是可拆装的。例如,可拆装硬盘驱动器可以被用于持久存储设备108。处理器单元104可以具有高速缓存134。高速缓存134可以是级别0 (LO)或级别 I(Ll)高速缓存。存储器106可以具有高速缓存136,其可以是例如级别高速缓存。 存储器106可以是在多个线程或多个处理单元之间共享的共享存储器。因此,高速缓存136 可以是共享高速缓存。在这些例子中通信单元110提供与其他数据处理系统或装置之间的通信。在这些例子中,通信单元110是网络接口卡。通信单元100可以通过使用物理或无线通信链路中的任一个或两者来提供通信。输入/输出单元112允许与其他设备的数据输入和输出,该其他设备可以连接到数据处理系统100。例如,输入/输出单元112可以提供连接,以用于通过键盘、鼠标和/或某种其他合适的输入设备的用户输入。此外,输入/输出单元112可以将输出发送到打印机。显示器114提供将信息显示给用户的机制。用于操作系统、应用和/或程序的指令可以位于存储设备116中,该存储设备通过通信结构102与处理器单元104通信。在这些说明性示例中以功能形式位于持久存储设备 108中。这些指令可以被载入到存储器106以被处理器单元104执行。不同实施例的过程可以由处理器单元104使用计算机实现的指令来执行,所述指令可以位于存储器例如存储器106中。这些指令可以被称为计算机代码、计算机可用程序代码或计算机可读程序代码, 其可以被处理器单元104中的处理器读取和执行。不同实施例中的程序代码可以在不同的物理或有形计算机可读介质例如存储器106或持久存储设备108中实现。程序代码118以功能形式位于可选择性拆装的计算机可读介质120中,并且可以被载入或传输到数据处理系统100中以由处理器单元104来执行。程序代码118和计算机可读介质120在这些例子中构成计算机程序产品122。在一个例子中,计算机可读介质120 可以是有形的形式,例如光盘或磁盘,该光盘或磁盘被插入到或置于作为持久存储设备108 的一部分的驱动器或其他设备中,以便传输到存储设备,例如作为持久存储设备108的一部分的硬盘驱动器。在有形的形式下,计算机可读介质120还可以采取持久存储设备的形式,例如连接到数据处理系统100的硬盘、优盘或闪存。计算机可读介质120的有形形式还可以被称为计算机可记录存储介质。在一些例子中,计算机可读介质120是不可拆装的。或者,程序代码118可以通过到通信单元110的通信链路或到输入/输出单元112 的连接,从计算机可读介质120传输到数据处理系统100。在说明性例子中,通信链路和/或连接可以是物理的或无线的。计算机可读介质还可以采取无形介质的形式,例如包含程序代码的通信链路或无线传输。在一些说明性实施例中,程序代码118可以通过网络从其他设备或数据处理系统下载到持久存储设备108中,以在数据处理系统100中使用。例如,在服务器数据处理系统的计算机可读存储介质中存储的程序代码可以通过网络从该服务器下载到数据处理系统 100。提供程序代码118的数据处理系统可以是服务器计算机、客户端计算机,或能够存储并发送程序代码118的某个其他设备。为数据处理系统100示出的不同组件不是旨在提供对不同实施例可被实现的方式的架构限制。不同的说明性实施例可以在包含附加于或替换为数据处理系统100示出的那些组件的组件的数据处理系统中实现。图1中示出的其他组件可以与说明性示例中示出的不同。不同的实施例可以使用任何能执行程序代码的硬件装置或系统来实现。作为另一个例子,数据处理系统100中的存储设备是可以存储数据的任意硬件设备。存储器106、持久存储设备108和计算机可读介质120是有形形式的存储设备的例子。在另一个例子中,总线系统可以被用来实现通信结构102,并可以包括一条或多条总线,例如系统总线或输入/输出总线。当然,总线系统可以使用能提供连接到总线系统的不同组件和设备之间的数据传输的任意合适类型的架构来实现。此外,通信单元可以包括一个或多个用来发送和接收数据的设备,例如调制解调器或网络适配器。此外,存储器可以是,例如,存储器106或者如可在通信结构102中存在的接口和存储器控制器中心中找到的高速缓存。图2是示出可在其中实现说明性实施例的方面的非一致高速缓存架构的框图。非一致高速缓存架构(NUCA)包括具有级别I(Ll)高速缓存的核心210、级别2 (L2)高速缓存控制器212和L2高速缓存阵列220。根据说明性实施例,L2高速缓存控制器212对读取和写入进行不同处理,因为读取比写入对高速缓存访问延时更为敏感。因此,在L2高速缓存 220中分配新的高速缓存线时,或者在L2高速缓存220中移动高速缓存线时,L2高速缓存控制器212考虑读/写频率。图3是示出根据示例性实施例的读写感知的非一致高速缓存架构(NUCA)的框图。 非一致高速缓存架构(NUCA)包括具有Ll高速缓存的核心310、L2高速缓存控制器312、以及被分为经常读取的区域322和经常写入的区域324的L2高速缓存阵列。L2高速缓存控制器312考虑NUCA中的读/写频率。L2高速缓存控制器312将经常写入的高速缓存线置于经常写入的区域324中的一个较远的存储体中,并将经常读取的高速缓存线置于经常读取的区域322中的一个较近的存储体中。此外,对于NUCA替换,L2高速缓存控制器312将经常写入的高速缓存线移动到经常写入的区域324中的较远的存储体中,并将经常读取的线移动到经常读取的区域322中的较近的存储体中。经常读取的区域322和经常写入的区域3M之间的尺寸比例可以是静态的或动态的。即,经常读取的区域322和经常写入的区域3M可以基于一般的读/写频率比例信息而被设置为静态尺寸。例如,高速缓存阵列中较近的三分之二可以被配置为经常读取的区域322,而高速缓存阵列中较远的三分之一可以被配置为经常写入的区域324。或者,L2高速缓存控制器312可以考虑读/写频率信息,并动态配置经常读取的区域322和经常写入的区域324。例如,L2高速缓存控制器312可以基于经常读取和经常写入的高速缓存线的运行时比例来动态地重新配置经常读取的区域322和经常写入的区域324。在一个示例性实施例中,L2高速缓存控制器312可以从高速缓存阵列的前端(较近的存储体)开始为经常读取的区域322分配高速缓存线,并从高速缓存阵列的后端(较远的存储体)开始为经常写入的区域3M分配高速缓存线。在该示例性实施例中,经常读取的区域322和经常写入的区域3M之间的边界可以是模糊的,而在其他的实施例中,经常读取的区域322和经常写入的区域3M之间的边界可以是固定的或静态的。在示例性实施例中,L2高速缓存控制器312可以通过软件接收读/写频率信息。 例如,软件可以在载入或存储指令中提供特殊位,其表示软件所保存的读/写频率信息。软件也可以在页表项中存储用于读/写频率信息的特殊位。在另一示例性实施例中,软件可以使用具有读/写频率信息的特殊的高速缓存指令,例如预取用于读取的高速缓存线或预取用于写入的高速缓存线。或者,L2高速缓存控制器312可以检测硬件中的读/写频率。例如,预取引擎(未示出)可以检测读取流或写入流。L2高速缓存控制器312可以每个高速缓存保持一个饱和计数器(saturation counter)来检测经常读取和经常写入的高速缓存线。根据说明性实施例,L2高速缓存控制器312可以扩展用于读写感知的高速缓存的已知的替换策略。例如,对于写入未命中,L2高速缓存控制器312可以替换X条最近最少使用(LRU)的高速缓存线中最远的高速缓存线,其中X可以是从2到高速缓存关联性 (associativity)的值。对于读取未命中,L2高速缓存控制器312可以替换X条LRU高速缓存线中最近的线。作为另一个例子,对于经常读取的高速缓存线,L2高速缓存控制器312 可以替换经常读取的区域322中的LRU线,并且对于经常写入的高速缓存线,L2高速缓存控制器312可以替换经常写入的区域324中的LRU线。根据说明性实施例,L2高速缓存控制器312可以扩展用于读写感知的高速缓存的已知的数据移动策略。例如,使用世代促进(generational promotion),L2高速缓存控制器312可以简单地在写入命中后不将高速缓存线换到较近的存储体中。这些对数据移动策略的扩展带来了减少的数据移动,其降低了功耗。作为对数据移动策略的更为主动 (proactive)的扩展,经常写入的高速缓存线可以触发交换,将经常读取的高速缓存线移动到较远的存储体中。图4是示出根据示例性实施例的用于读写感知的高速缓存的硬件支持的框图。标签和状态阵列410包括用于读取区域420的标签和状态阵列,以及用于写入区域430的标签和状态阵列。用于读入区域420的标签和状态阵列包括饱和计数器(sat cnt)、有效位、 以及用于高速缓存的经常读取的区域中的每条高速缓存线的标签。类似地,用于写入区域 430的标签和状态阵列包括饱和计数器、有效位、以及用于高速缓存的经常写入的区域中的每条高速缓存线的标签。数据阵列450包括读取区域460和写入区域470。解码器440解码用于读取或写入到高速缓存的地址。用于高速缓存访问的地址可以包括标签、索引或偏移量。用于读取区域420的标签和状态阵列比较标签。如果标签匹配并且为读取区域420的标签和状态阵列中的高速缓存线设置了有效位,则高速缓存访问引起读取区域460中的高速缓存命中。类似地,用于写入区域430的标签和状态阵列比较标签。如果标签匹配,并且为写入区域430的标签和状态阵列中的高速缓存线设置了有效位,则高速缓存访问引起写入区域470中的命中。
对于读取区域420的标签和状态阵列中的命中,解码器440使用索引和偏移量来访问经常读取的区域460中的高速缓存线。对于写入区域430的标签和状态阵列中的命中, 解码器440使用索引和偏移量来访问经常写入的区域470中的高速缓存线。被经常写入的经常读取的高速缓存线可以从经常读取的区域460移动到经常写入的区域470。被经常读取的经常写入的高速缓存线可以经交换缓冲区480从经常写入的区域470移动到经常读取的区域460。本领域的技术人员将理解,本发明的方面可以实现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了软件和硬件方面的实施例的形式,所有这些软件和硬件方面在此通常被称为“电路”、“模块”或“系统”。此外,本发明的方面可以采取体现在一个或多个计算机可读介质(在介质中具有计算机可读程序代码)中的计算机程序产品的形式。可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质或计算机可用介质例如可以是(但不限于)电、磁、光、电磁、红外线或半导体系统、装置或设备或上述各项任何适合的组合。计算机可读存储介质的更具体的示例(非穷举列表)可以包括以下项具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPR0M或闪存)、光纤、便携式光盘只读存储器 (CD-ROM)、光存储设备、诸如支持因特网或内部网的传输介质,或辅助存储设备。注意计算机可用或计算机可读介质甚至可以是纸张或可在其上打印程序的其他合适的介质,该程序可以例如通过对纸张或其他介质的光扫描被电子地捕获,然后在必要时以合适的方式被编译、解释或处理,然后被存储在计算机存储器中。在本文档的上下文中,计算机可用或计算机可读存储介质可以是任何能够包含、存储、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的任意介质。计算机可读信号介质可以包括其中包含计算机可读程序代码(例如,在基带中或作为载波的一部分)的传播数据信号。 可以使用任何适当的介质(包括但不限于无线、线缆、光缆、RF等)来传输计算机可用程序代码。用于执行本发明的方面的操作的计算机程序代码可以使用一种或多种编程语言的任意组合来编写,所述编程语言包括诸如JavaTM、SmalltalkTM, C++或类似语言之类的面向对象的编程语言或者诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。 所述程序代码可以完全地在用户计算机上执行,部分地在用户计算机上执行,作为独立的软件包执行,部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,也可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。此外,程序代码可以在远程服务器或远端计算机上的计算机可读存储介质中实现,并可以通过网络下载到远程计算机或用户的计算机上的计算机可读存储介质中,以用于存储和/或执行。此外,任意计算系统或数据处理系统可以在通过网络从远程计算系统或数据处理系统中下载了程序代码后在计算机可读存储介质中存储该程序代码下面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的方面进行描述。将理解,所述流程图和/或框图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的所述指令产生用于实现在流程图和/或框图方块中指定的功能/操作的装置。这些计算机程序指令也可以被存储在引导计算机、其他可编程数据处理装置或其他设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的所述指令产生一件包括实现在所述一个或多个流程图和/或框图方块中指定的功能/操作的指令的制品。所述计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备,以导致在所述计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程各附图中的流程图和框图示出了根据本发明的各种实施例的系统的可能实施方式的结构、功能和操作、方法和计算机程序产品。就这点而言,流程图或框图中的每个方框可代表模块、段或部分代码,其包括一个或多个可执行指令以实现指定的逻辑功能。应注意,在一些替换实施例中,方框中提到的功能可不按图中提到的顺序发生。例如,两个连续示出的方框实际上可以基本上以先后顺序执行,或者方框有时候可以相反的顺序被执行, 这视涉及的功能而定。也注意到,在框图和/或流程图的每个方框中的结合可通过执行指定的功能或动作的基于硬件的专用系统或专用硬件和计算机指令的结合来实施。图5是示出根据示例性实施例的用于读写感知的高速缓存的高速缓存控制器的操作的流程图。操作开始,高速缓存控制器接收高速缓存访问请求(框50 。高速缓存控制器确定该高速缓存访问请求是否引起高速缓存命中(框504)。如果高速缓存访问请求未引起高速缓存命中,高速缓存控制器在高速缓存阵列中分配新的高速缓存线(框506)。高速缓存控制器然后确定高速缓存访问是载入还是存储(框508)。如果高速缓存访问是载入,则高速缓存控制器将高速缓存线载入到高速缓存的经常读取的区域中(框510),并初始化用于该高速缓存线的饱和计数器(框512)。此后,操作结束。如果在框508中高速缓存访问是存储,则高速缓存控制器将高速缓存线载入到高速缓存的经常写入的区域中(框 514),并初始化用于该高速缓存线的饱和计数器(框516)。然后,操作结束。根据说明性实施例,饱和计数器确定高速缓存线是否位于正确的区域中。在其他实施例中,一个或多个计数器可以被用来确定读/写频率。例如,单个计数器可以被使用, 并可以对读取递增而对写入递减。在另一个例子中,高速缓存控制器可以保持单独的读取计数器和写入计数器。此外,在其他实施例中,高速缓存控制器可以例如通过调整递增/递减权重或通过将读取和写入计数器与不同阈值比较,来对读取和写入分配不同权重。回到图5,如果高速缓存访问请求在框504中导致命中,则高速缓存控制器确定该高速缓存访问是在经常读取的区域中的载入或在经常写入的区域中的存储(框518)。换句话说,在框518中,高速缓存控制器确定该高速缓存访问是否与高速缓存线被分配所在的区域对应。如果高速缓存控制器确定该高速缓存访问是在经常读取的区域中的载入或在经常写入的区域中的存储,则高速缓存控制器从高速缓存线提供数据(框520),并递增与该高速缓存线关联的饱和计数器(框522)。随后,操作结束。
如果在框518中,高速缓存访问不是在经常读取的区域中的载入并且不是在经常写入的区域中的存储,则高速缓存访问是在经常读取的区域中的存储或在经常写入的区域中的载入,并且该高速缓存访问与高速缓存线被分配所在的区域不对应。在这种情况下, 高速缓存控制器从高速缓存线提供数据(框524),并递减与该高速缓存线关联的饱和计数器。然后,高速缓存控制器确定饱和计数器的最高有效位(MSB)是否是0(框528)。在示出的例子中,如果饱和计数器的MSB不是0,则高速缓存线位于正确的区域中,且操作结束。如果在框528中,饱和计数器的MSB是0,则高速缓存线没有位于正确的区域中。在这种情况下,高速缓存控制器在相对的区域中选择高速缓存线,并将当前的高速缓存线与选择的高速缓存线进行交换(框530)。高速缓存控制器然后初始化与被交换的高速缓存线关联的饱和计数器(框532),且操作结束。因此,说明性实施例提供了一种用于提供读写感知的高速缓存的机制。该机制将大的高速缓存分为经常读取的区域和经常写入的区域。该机制考虑非一致高速缓存架构替换策略中的读/写频率。频繁写入的高速缓存线被置于一个较远的存储体中。频繁读取的高速缓存线被置于一个较近的存储体中。经常读取和经常写入的区域之间的尺寸比例可以是静态或动态的。经常读取和经常写入的区域之间的边界可以是清楚的或模糊的。如上所述,应该理解说明性实施例可以采用完全的硬件实施例、完全的软件实施例(包括固件、驻留程序、微代码等),或包含软件部分和硬件部分的实施例。在一个说明性实施例中,在软件或程序代码中实现说明性实施例的机制,所述软件或程序代码包括但不限于固件、驻留软件、微代码等。适于存储和/或执行程序代码的数据处理系统将包含至少一个通过系统总线直接或间接连接到存储器元件的处理器。存储器元件可以包括在程序代码实际执行期间使用的本地存储器、块存储设备、以及高速缓存存储器,其提供至少某些程序代码的临时存储, 以减少执行期间代码必须从块存储中取回的次数。输入/输出或I/O装置(包括但不限于键盘、显示器、指点设备等)可以直接或通过中间的I/O控制器来连接到系统。网络适配器也可以连接到系统,以使得数据处理系统能通过中间的私有或公共网络连接到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是目前可用的若干类网络适配器。本发明的描述为了示例和描述的目的而被展示,并且不是旨在是穷尽的或将本发明限制于所公开的形式。多种修改和改变对于本领域普通技术人员来说很明显。选择和描述该实施例以最好地解释本发明的原则、实际应用,并使本领域普通技术人员能够针对适于所计划的特定用途的具有各种修改的各种实施例来理解本发明。
权利要求
1.数据处理系统中的一种用于读写感知的高速缓存的方法,该方法包括 在高速缓存控制器中从处理单元接收高速缓存访问请求;如果高速缓存访问请求是引起高速缓存未命中的载入,该高速缓存处理器将高速缓存线的数据载入到高速缓存的经常读取的区域,其中,该高速缓存包含存储体阵列,并且其中,该经常读取的区域包含接近于处理单元的存储体;以及如果高速缓存访问请求是引起高速缓存未命中的存储,该高速缓存处理器将高速缓存线的数据置于高速缓存的经常写入的区域,其中,该经常写入的区域包含远离处理单元的存储体。
2.如权利要求1所述的方法,还包括初始化与所述高速缓存线关联的饱和计数器。
3.如权利要求2所述的方法,还包括在高速缓存控制器中接收用于访问高速缓存线的后续高速缓存访问请求; 确定该高速缓存线是否在正确的区域中;以及响应于该高速缓存线没有位于正确的区域中,将该高速缓存线与相对区域中的高速缓存线进行交换。
4.如权利要求3所述的方法,其中,确定被高速缓存访问请求访问的高速缓存线是否位于正确的区域中包括响应于该高速缓存访问请求是在经常读取的区域中的存储或在经常写入的区域中的载入,递减所述饱和计数器;并且响应于该饱和计数器小于阈值,确定该高速缓存线没有位于正确的区域中。
5.如权利要求2所述的方法,还包括在高速缓存控制器中接收用于访问高速缓存线的后续高速缓存访问请求;以及响应于该高速缓存访问请求是在经常读取的区域中的载入或在经常写入的区域中的存储,递增所述饱和计数器。
6.如权利要求1所述的方法,其中,所述经常读取的区域与经常写入的区域的尺寸比例是静态的。
7.如权利要求1所述的方法,其中,所述经常读取的区域和经常写入的区域之间的边界是清楚的。
8.数据处理系统中的一种用于读写感知的高速缓存的装置,该装置包括 处理单元;包含存储体阵列的高速缓存阵列,其中,所述存储体阵列包含经常读取的区域和经常写入的区域,其中,该经常读取的区域包含存储体阵列中接近处理单元的存储体,且其中, 该经常写入的区域包含存储体阵列中远离处理单元的存储体;连接到高速缓存阵列和处理单元的高速缓存控制器,其中,该高速缓存控制器被配置为从处理单元接收高速缓存访问请求;响应于高速缓存访问请求是引起高速缓存未命中的载入,将高速缓存线的数据载入到经常读取的区域;以及响应于高速缓存访问请求是引起高速缓存未命中的存储,将高速缓存线的数据置于高速缓存的经常写入的区域中。
9.如权利要求8所述的装置,其中,所述高速缓存控制器还被配置为初始化与高速缓存线关联的饱和计数器。
10.如权利要求9所述的装置,其中,所述高速缓存控制器还被配置为在高速缓存控制器中接收用于访问高速缓存线的后续高速缓存访问请求;确定该高速缓存线是否位于正确的区域中;以及响应于该高速缓存没有位于正确的区域中,将该高速缓存线与相对区域中的高速缓存线进行交换。
11.如权利要求10所述的装置,其中,确定被高速缓存访问请求访问的高速缓存线是否在正确的区域中包括响应于该高速缓存访问请求是在经常读取的区域中的存储或在经常写入的区域中的载入,递减所述饱和计数器;并且响应于该饱和计数器小于阈值,确定该高速缓存线没有位于正确的区域中。
12.如权利要求9所述的装置,其中,所述高速缓存控制器还被配置为在高速缓存控制器中接收用于访问高速缓存线的后续高速缓存访问请求;以及响应于该高速缓存访问请求是在经常读取的区域中的载入或在经常写入的区域中的存储,递增所述饱和计数器。
13.如权利要求8所述的装置,其中,所述经常读取的区域与经常写入的区域的尺寸比例是静态的。
14.如权利要求8所述的装置,其中,所述经常读取的区域和经常写入的区域之间的边界是清楚的。
15.一种包含计算机可记录介质的计算机程序产品,该计算机可记录介质上记录有计算机可读程序,其中,所述计算机可读程序在计算设备上执行时,使得计算设备在高速缓存控制器中从处理单元接收高速缓存访问请求;响应于该高速缓存访问请求是引起高速缓存未命中的载入,由高速缓存控制器将高速缓存线的数据载入到高速缓存的经常读取的区域中,其中,该高速缓存包含存储体阵列,且其中所述经常读取的区域包含接近于处理单元的存储体;以及响应于高速缓存访问请求是引起高速缓存未命中的存储,由高速缓存控制器将高速缓存线的数据载入到高速缓存的经常写入的区域中,其中所述经常写入的区域包含远离处理单元的存储体。
16.如权利要求15所述的计算机程序产品,其中,所述计算机可读程序还使得计算设备初始化与所述高速缓存线关联的饱和计数器;在高速缓存控制器中接收用于访问高速缓存线的后续高速缓存访问请求;确定该高速缓存线是否在正确的区域中;以及响应于该高速缓存线不在正确的区域中,将该高速缓存线与相对区域中的高速缓存线进行交换。
17.如权利要求16所述的计算机程序产品,其中,确定被高速缓存访问请求访问的高速缓存线是否在正确的区域中包括响应于该高速缓存访问请求是在经常读取的区域中的存储或在经常写入的区域中的载入,递减所述饱和计数器;并且响应于该饱和计数器小于阈值,确定该高速缓存线不在正确的区域中。
18.如权利要求16所述的计算机程序产品,其中,所述计算机可读程序还使得计算设备在高速缓存控制器中接收用于访问高速缓存线的后续高速缓存访问请求;并且响应于该高速缓存访问请求是在经常读取的区域中的载入或在经常写入的区域中的存储,递增所述饱和计数器。
19.如权利要求15所述的计算机程序产品,其中所述计算机可读程序被存储在数据处理系统的计算机可读存储介质中,且其中该计算机可读程序通过网络从远程数据处理系统下载。
20.如权利要求15所述的计算机程序产品,其中所述计算机可读程序被存储在服务器数据处理系统的计算机可读存储介质中,且其中该计算机可读程序通过网络下载到远程数据处理系统,以在远程系统的计算机可读存储介质中使用。
全文摘要
在高速缓存中提供了一种用于提供读写感知的高速缓存的机制。该机制将大的高速缓存分为经常读取的区域和经常写入的区域。该机制考虑非一致高速缓存架构替换策略中的读/写频率。频繁写入的高速缓存线被置于一个较远的存储体中。频繁读取的高速缓存线被置于一个较近的存储体中。经常读取和经常写入的区域之间的尺寸比例可以是静态或动态的。经常读取和经常写入的区域之间的边界可以是清楚或模糊的。
文档编号G06F12/08GK102483720SQ201080038805
公开日2012年5月30日 申请日期2010年8月31日 优先权日2009年9月18日
发明者R·拉贾莫尼, W·E·斯佩特, 张立新, 李健 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1