CN101036124B - 具有有界差错延迟更新的软件高速缓存 - Google Patents
具有有界差错延迟更新的软件高速缓存 Download PDFInfo
- Publication number
- CN101036124B CN101036124B CN2005800336115A CN200580033611A CN101036124B CN 101036124 B CN101036124 B CN 101036124B CN 2005800336115 A CN2005800336115 A CN 2005800336115A CN 200580033611 A CN200580033611 A CN 200580033611A CN 101036124 B CN101036124 B CN 101036124B
- Authority
- CN
- China
- Prior art keywords
- data
- threshold value
- optimizing
- speed cache
- application
- 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
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/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
在某些实施例中,本发明涉及一种有关具有有界差错和延迟更新的软件高速缓存的系统和方法。本发明的实施例描述了延迟更新软件控制的高速缓存,它对于容许由高速缓存的值的延迟更新导致的差错的域专用应用可用于减小存储器访问等待时间并提高的吞吐量。在本发明的至少一个实施例中,软件高速缓存可通过利用编译器在必须访问和/或更新存储器的应用程序中自动生成高速缓存代码来实现。即使已更新全局数据,也访问高速缓存一段时间以延迟高成本的存储器访问。描述并要求保护了其它实施例。
Description
发明领域
本发明的一个实施例一般涉及多处理器计算系统,尤其涉及多处理器或多核系统中的软件高速缓存以在维持足够的数据一致性的同时允许有界差错。
背景信息
存在用于处理器优化的各种机制。具体而言,很多处理器被设计成采用某种高速缓存的机制。高速缓存机制由于存储访问延迟而表现出问题。情况通常是增大存储器存储设备的容量增加了与它们相关联的延迟。因此,对较大的存储器的访问导致较长的延迟。存储访问延迟对处理器执行性能有影响。大多数应用具有在程序的执行中仅需要一小组被访问的数据的特性。基本上,使那些被频繁访问的存储器更“接近”处理器,即,在硬件高速缓存中。
例如可从Inte1公司购买到的IXP网络处理器之类的某些特殊的嵌入式处理器不具有硬件高度缓存。可在蜂窝电话、MP3播放器和其它设备中找到这些嵌入式处理器。对于这些嵌入式处理器而言,在管芯上包括高速缓存的成本可能过高。网络处理器往往处理许多完全不同的信息分组。每一分组可被个别处理。为了获得更大的吞吐量/带宽,可将处理器管芯在很多处理器元件中分配,其中每一个分组可由一不同的嵌入式处理器处理。较佳的是具有另外的处理器而不是在这些系统上实现硬件高速缓存。同样相信网络应用中有比其它应用更小的局部性。因此,有更少的“频繁使用的”数据要被放入高速缓存中。
对于一般的应用,设计者倾向于包括硬件高速缓存而不是软件高速缓存。在现有的系统中,一般不执行软件高速缓存以及硬件高速缓存。某些研究人员已试图利用结合某些软件控制的片上存储器。例如,一篇论文中描述:
“某些数字信号处理(dsp)芯片具有小的、快速的片上存储器,程序员可利用它来提高访问次数。这些片上存储器不是高速缓存;相反,它们位于不连续的地址空间中。这通过消除将片上存储器地址与片外存储器地址相关、关联查找以及自动替换的任何需求来简化其实现。相反,设计者使程序员负责在主存储器和片上存储器之间以及时且有效的方式移动数据。”
(some digital signal processing(dsp)chips have a small,fast,on-chip memorythat the programmer can use tO improve access times.These on-chip memories are notcaches;instead,they are located in a disjoint address space.This simplifies theirimplementation by eliminating any need for relating on-chip memory address tO off-chipmemory addresses,for associative lookup,and for automatic replacement.Instead,thedesigners make the programmer responsible for moving data between main memory andthe on-chip memory in a timely and efficient way.)
『参见1998年10月加利福尼亚州圣何塞市的ASPLOS-VIII会议论文集中K.D.Cooper和TJ.Harvey的“Compiler-Controlled Memory”(编译器控制的存储器)。]该研究巾讨论的方法提出了一种对于将片上存储器的一小部分作为溢出值的保持位置或小编译器控制的存储器(CCM)的另一种使用。
现有的处理器架构利用这样一种存储器分层结构,其中处理器附近诸如高速缓存等小型但快速的存储器一直延伸到诸如动态随机存取存储器(DRAM)或磁盘驱动器之类的大型但慢速的存储器。该设计促进了大的存储空间,同时使对频繁访问的数掘的存储器防问等待时问最小化。
专用处理器架构对于具有特殊需要的应用变得H益重要。例如,如以卜所讨论的Intel IXP处理器可被嵌入于路由器十以处理分组。因为各个分组可以独立于其它分组来处理,所以一个IXP处理器含有许多可专用于处理分组的任务的轻量的多线程化微引擎(ME)核。在利用技术的Intel平台中,有用于处理控制平面代码的陔。是源白StrongARM技术的嵌入式微处理器架构。软件高速缓存试图高速缓存频繁读取且很少写入的数据。IXP中的存储器分层结构包括在每一个ME中的小型但快速的局部存储器、以及在所有ME之间共享的便笺式存储器、静态RAM(SRAM)和DRAM存储器(具有增加的访问等待时间)。
这些ME被设计成不具有高速缓存以使每一个核的尺寸最小化,并且因为相信网络应用中的分组没有得益于高速缓存的空间或时间存储器局部性。这种假设起因于网络处理器仅读取分组一次,在该分组上进行某些工作,且在完成后仅将该分组向前发送的概念。
提出了软件控制的高速缓存作为一种通过利用小型但快速的局部存储器来得益于没有硬件高速缓存的情况下的数据局部性的方式。这里,硬件高速缓存功能可用软件例程来仿真。软件控制的高速缓存可用有限的特征来实现以使软额外开销最小化。例如,高速缓存一致性是保证在其中不同的ME中高速缓存的数据的副本具有相同的值的任何应用中的正确执行的必要条件。然而,在现有的系统中,在软件控制的高速缓存中支持高速缓存一致性是昂贵且低效的。
附图简述
本发明的特征和优点将从以下本发明的详细描述变得清楚,附图中:
图1示出在可与本发明的实施例一起使用的用于网络应用中的分组转发的示例性特里结构表;
图2示出共享全局数据的非优化访问;
图3是根据本发明的实施例的用于软件高速缓存的优化访问的流程图;
图4是根掘本发明的实施例的用于优化应用代码的示例性系统的框图;
图5是根据本发明的实施例的用于利用应用剖析器来优化应用代码的示例性系统的框图;
图6是示出根据本发明的实施例的在运行时执行的差错率分析的框图。
详细描述
本发明的一个实施例是一种涉及具有有界差错延迟更新的软件高速缓存的系统和方法。本发明的实施例描述了一种延迟更新的软件控制高速缓存,它对于可容忍由于高速缓存的值的延迟更新而导致的差错的域专用应用可用于减少存储器访问等待时间和提高吞吐量。在本发明的至少一个实施例中,软件高速缓存可通过利用编译器在必须访问和/或更新存储器的应用中自动生成高速缓存代码来实现。如本文所述的软件高速缓存可得到某些硬件高速缓存的优点,而没有硬件成本。硬件高速缓存的一个问题是高速缓存一致性。这是在其用于具有一个以上处理器的系统中时对于高速缓存的一个问题。该问题适用于台式机系统、多处理器系统、具有许多处理元件的网络处理器以及诸如多核系统之类的具有多个处理器的其它系统。为了以下描述的简单起见,术语多处理器的使用用于指多处理器系统、具有许多处理元件的网络处理器以及诸如多核系统之类的具有多个处理器的其它系统。
在说明书中对本发明的“一个实施例”或“实施例”的参考意味着结合该实施例描述的特定特征、结构或特性包含在本发明的至少一个实施例中。因此,在整个说明书各处出现的短语“在一个实施例中”未必全部都指同一实施例。
为了解释的目的,陈述了具体配置和细节以提供对本发明的全而理解。然而,本领域的技术人员将清楚本发明的实施例可在没有本文提出的具体细节的情况下实施。此外,省略或简化了公知的特征以免使本发明晦涩。在整个描述中可给出各种示例。它们仅仅是本发明的具体实施例的描述。本发明的范围不限于给出的示例。
高速缓存一致性要求对于接近处理器,即在高速缓存或片上存储器中的数据的高速缓存的副本,需要维持与归属或初始存储器位置中的相同的值。在有很多处理器时高速缓存一致性是一个挑战。
已开发出总线协议以适应对于多个处理器的高速缓存一致性。例如,采用了经修改的互斥、共享和无效(MESI)协议。高速缓存线可处于描述高速缓存在多处理器系统中如何存在的各状态。例如,状态可以是“共享的”,这意味着多个处理器正在从高速缓存中读取。高速缓存可以处于“互斥”状态,同时数据可由一处理器修改。这些改变可通过传输状态来传输到其它处理器。这些协议的实现在时间和硬件方面是昂贵的。
硬件高速缓存机制不能用于所有的处理器,尤其是在嵌入式或专用应用中使用的处理器。例如,IXP处理器不具有硬件高速缓存。这些网络处理器被开发为具有不期望高速缓存机会的多个处理器。对于高速缓存的机会可存在于这些网络处理器中,对于将被处理的分组不存在,然而对于应用数据结构却存在。例如,期望高速缓存的频繁使用的数据是路由表信息。
在一个实施例中,可实现延迟更新的软件控制高速缓存以利用多处理器系统和没有硬件高速缓存的系统中的高速缓存机制。延迟更新可允许处理器在从存储器检索到更新数据前的一段时间内继续访问高速缓存中的旧数据。应用延迟更新软件控制高速缓存可有助于优化存储器访问。用于实现本技术的实施例的应用代码的优化可由程序员手动应用或通过优化编译器中的一遍来应用。
延迟更新高速缓存定期检查一致性,但不必对于每个相关的访问都进行检查。在一个网络应用中,例如,可在每第100或第1000个分组上检查数据结构的变化。这种高速缓存可通过用于检测对高速缓存的值的更新中的变化的减少的存储器访问来提高存储器性能。该优化可以差错率为代价获得。因此,它仅在期望的差错率很小或差错不重要时应用。因为差错可由更新的延迟传播产生,所以对于频繁读取但很少更新的数据结构可发生低差错率。根据本发明的实施例,在优化编译器中,剖析所得的结果可有助于选择具有该行为的数据结构。
在网络应用中,被写入和读取但未由显式锁保护的任何共享的全局数据结构被视为用于延迟更新高速缓存的候选。通常省略锁以提高存储器性能。对共亨存储器的同时读和写的正确性通过仔细编码来确保。同步可通过原子存储器写入来隐式地实现。原子写入意味着存储器地址(例如,32位量)总是通过存储器写入来完全改变。决不会有它的一半被写入然后写入失败或中断的情况。某些指令的原子性概念是用于维护多处理器系统中的一致性的基础。在延迟更新高速缓存中,该原子写入可起同步点的作用,仅有延迟的更新的可见性。
现在参考附图,尤其是图1,作为一个示例性实施例示出了在网络应用中用于分组转发的特里结构(trie)表。与传统的假设相反,网络应用的确看似具有重要的局部性,但局部性出现在应用数据结构中而不是在被处理的分组中。因此,关于某些静态路由表的高速缓存数据结构可提供益处。用于网络路由器的特里结构表100用节点(圆圈)和连线(箭头)表示。“特里结构”在本领域中已知是一种二分搜索树。特里结构术语已使用很多年,并且它是“Retrieval(检索)”的缩写。特里结构表100可定义基于查看该分组的源和目的地址应将分组发送到何处。例如,节点10l是顶部,或入口节点。取决于匹配的串,下一节点可以是节点103以匹配“00”。
为了用新的路由条目111来更新特里结构表100,首先填充新节点109而不将其连接到活表上。仅在指向该新节点109的指针被写入活特里结构表时才将更新反映到该表。该单指针更新可用作用于该新的路由条目的原子同步点。这以虚线箭头110示出。
路由器需要该表的副本以确定将分组发送到何处。该示例性特里结构表可用作最长匹配前缀表。当路由网络分组时,使用互联网协议(IP)地址来将该分组发送到其目的地。在最长匹配前缀表中,前缀是位串,且找出最长的匹配位串来匹配该表中的条目。如果没有找到匹配条目,则一般有用于较短的任何值的默认值以向其路由选择该分组。当特里结构表表示IP地址时,它可能很大。
可以有机会将网络路由特里结构表高速缓存在软件中。顶部条目经常对于每一个分组都命中。整个路由器表不需要被高速缓存,然而高速缓存该表的最频繁使用的部分是有利的。
在分组路由中,路由器可容许某些差错率。路由错误或未路由的分组可在差错的通知后被重新路由。路由器表可以很少被更新。因此,网络路由器可在短时间内以较老的数据运行。网络协议被设计成容许这些路由差错。同样,如果一分组被错误路由,则线路下游的路由器可具有更新的信息并将该分组成功地发送到其正确的目的地,因此,没有导致服务中断。
在一个实施例中,如下所述的等式可用于控制延迟的更新。
rchek=fn(rst,rld,rerror)
在一个示例性实施例中,可在编译器中生成代码以对路由器表执行一致性检查。在该实施例中,选择期望的差错界限率(rerror)。检查表的速率(rcheck)可以是已知的或被估算。检查速率是三个输入一rst、rld和rerror—的函数,其中rst是存储速率,rld是加载速率,而rerror是最大容许差错率。“加载”是数据读取,而“存储”是数据写入或更新。可将最大容许差错率定义为小于或等于存储速率和1减去检查速率的乘积除以加载速率。可将检查频率定义为小于或等于1减去最大容许差错率和加载速率的乘积除以存储速率。
对于应用延迟更新高速缓存的这些可能性可由具有过程间分析支持的编译器来标识。过程间分析可确定被写入和读取、且未由锁保护的全局变量。
过程间分析的这些结果与存储器剖析(或其它分析或监控机制)的结果相组合可标识最受益于延迟更新高速缓存的全局变量。
在调查流行的网络应用时,本发明的发明人发现许多频繁读取但很少写入的全局数据结构。读取来自于分组处理核,但很少的写入来自用户控制的核以添加新的条目或更新共享统计量。展示出该行为的数据结构的某些示例列于表1中:
网络应用 | 数据结构 | 数据结构功能 |
IP分组转发 | 特里结构表 | 用于找出对于目的地IP的下一个跃点的查找表 |
防火墙 | 分类表 | 根据用户指定的规则拒绝至和自广域网(WAN)和局域网(LAN)的分组的传输 |
网络地址转换(NAT)路由器 | LAN-WAN转换表 | 映射与局域网(LAN)中的特定客户机或端口的广域网(WAN)连接 |
服务质量(QoS)路由器 | 流处理表 | 用于处理用户定义的流的配置信息 |
表1-可受益于延迟更新高速缓存的应用和数据结构
由于锁定的高I/O成本,这些结构通常不用锁来保护。相反,它们依靠原子写来保证写更新的正确性。
通常被认为是非常规的一种观察到的特性是对高速缓存的副本的更新的通信在这些结构中通常被延迟。在诸如网络应用之类的域专用应用中,可容许由于未立即传播到高速缓存的副本的更新的共享数据结构而导致的偶然差错。对于网络应用示例的可能差错的示例示于表2中。在网络地址转换(NAT)和分组转发应用中,假设分组偶然被错误地路由是合理的。只要长期的平均表现正确,在具有服务质量(QoS)支持的路由器中的流参数可在用户定义的流的更新期间短期略微偏离。
数据结构 | 由延迟的更新导致的差错 |
特里结构表 | 在很少的路由表改变期间的某些不正确路由的分组 |
防火墙 | 除在添加新的防火墙规则时的极少情况外没有差错 |
数据结构 | 由延迟的更新导致的差错 |
LAN-WAN转换表 | 除在新的连接映射到同一表条目时的极少情况外没有差错 |
流处理表 | 在重新配置期间对用户定义的流参数的某些背离 |
表2通过利用延迟更新的高速缓存引入的误差
作为应用域,一般将网络程序设计为处理来自众多源的差错。事实上,分组处理差错在很多普遍的网络应用中被隐式地使用。物理层以太网必须检测差错以标识分组冲突。传输控制协议(TCP)是面向连接的协议,它需要接收器对所发送分组的确认(ACK)以保证分组到达接收器(例如,参见W.R.Stevens的“TCP/IP IllustratedVol.1”,Addison-Wesley,1994)。无法由发送器接收ACK导致未确认分组的重发。QoS路由器(通过调度和计量算法)明确地丢弃分组以向预定的流分配带宽(例如,参见S.Floyd和V.Jacobson的“Random Early Detection Gateways for CongestionAvoidance”IEEE/ACM Networking会报,1993年8月)。
图2示出对共享全局数据的非优化访问。不频繁写入路径210更新共享数据220中的路由表。频繁读取路径230由分组处理器中的每一个在处理分组时执行。将被路由的每一个分组导致对共享存储器中的表结构的访问。在一示例中,当更新路由表时,将global_data(全局数据)221存储(211)到global_data 221共享数据区220中。当路由表被应用读取(231)时,从global_data 221中检索共享数据。
图3示出根据本发明的一个实施例的用于说明怎样对延迟容许的全局数据放松高速缓存一致性以提高存储器性能的优化访问序列的框图和流程图。本发明的实施例被设计成以多个处理器350访问共享数据来执行。这些处理器可以是多处理器系统、具有许多处理单元的网络处理器以及诸如多核系统之类的具有多个处理器的其它系统。global_data 305可在多处理器和多核系统中的处理器305间共享。在该图中,实线垂直箭头指示读/加载和写/存储模块的暂时执行。横越的虚线箭头指示读和写模块对共享数据的访问。在本发明的一个实施例中,与数据的访问相比,数据的更新很少发生。当数据由处理器n在不频繁写入路径300中更新时,更新的数据可作为global_data 305被存储301在共享存储器中。然后可将update_flag(更新标志)设置为真303并存储在共享存储器30
网络进程在检查更新前可继续访问所需的来自高速缓存的数据几次。这是可能的,因为应用可容许某些差错率。使用局部计数器count米跟踪对数掘结构的访问。处理器m的读取路径310确定count是否大于指定的阈值(threshold)311。如果是,则将count复位为0(313)。update_flag 307从共享存储器或其它指定的位置加载。在一实施例中,update_flag位于系统寄存器中。在另一个实施例中,update_flag用控制线来设置。如果已更新global_data,如315中所确定的,则在319中清除高速缓存。同样清除update_flag。然后可在321中递增count,并从共享存储器中加载更新的数据。如果count不大于threshold,如在311中所确定的,或者如果没有更新(update_flag等于假),如在315中所确定的,则如果可用的话数据仅从高速缓存317加载。如果数据当前不在高速缓存中,则可采用传统的方法来从共享存储器中自动检索数据。
本领域的普通技术人员可以清楚,处理器n和m可以是同一处理器。换言之,在由处理器n在不频繁写入路径中执行的更新期间执行从global_data的读取的处理器m有几次可能事实上是同一处理器。
本领域的普通技术人员可以清楚,不需要修改关于何时将频繁读取的数据放置到高速缓冲存储器上的策略以适应本发明的实施例。要利用update_flag来保护的global data可以是整个数据结构,或是数据结构的一部分。任何时候,所保护的数掘结构或其一部分可以在共享存储器中,或者另外在高速缓存中。存储器可包括软件处理程序以控制数据是从存储器检索还是从高速缓存检索。在一个实施例中,可在编译时间期间将用于设置update_flag和插入循环以检查threshold的附加代码插入到网络代码中。
高速缓存可具有标签数组和实际的线或值。标签数组含有地址。当对地址请求高速缓存的值时,在标签数组中检查匹配的地址。如果在标签数组中有匹配,则从高速缓存中拉出该线。否则必须到主存储器以检索该数据。然后从高速缓存中移除一项,以给最近检索的数据让出空间。对于硬件高速缓存,该进程用控制线来执行。关于软件高速缓存,软件处理程序控制对高速缓存而不是对硬件的访问。编译要访问存储器的应用代码以如上所述地插入附加的代码线。每次当源代码指示加载(LOAD)时,将如310中所述地将检查阈值循环插入到可执行代码中。每次当指示存储(STORE)时,编译器将如300中所述地插入代码以设置update_flag。编译器是用update_flag位于何处的指示来定制的,所以可生成适当的代码。也可确定threshold并使其对编译器已知,使得可生成具有期望阈值的循环。默认阈值可在编译器中被硬编码并可被任选地覆写。在各实施例中,threshold可以是可在进行中设置并在执行代码时检索的动态变量。阈值在运行时期间可位于存储器或系统寄存器或应用代码可访问的任何其它位置中。因此,如果操作员确定差错率太高,则可降低threshold而不用使系统脱机。
图4是示出根据本发明的实施例的用于优化应用代码的示例性系统的框图。要求优化的更新延迟差错容许应用401可具有带有用于更新和访问global data的STORE413和LOAD415指令的源代码411。可由优化编译器403来编译应用源代码以生成优化的可执行码405。在一个实施例中,优化编译器可具有用于在标识STORE指令时生成更新代码的更新代码生成模块433、以及用于在标识LOAD指令415时生成扩展的加载代码的加载代码生成模块443。本领域的技术人员将清楚,优化编译器可通过将用于更新和加载代码生成的模块组合为一个模块来实现,或它们可被实现为分离的模块。
在一个实施例中,更新代码生成模块433和加载代码生成模块443标识原始应用代码中的STORE413和LOAD415指令。编译STORE413指令和LOAD415指令以包括处理高速缓存一致性以及优化代码420中的更新延迟的附加指令。可扩展STORE指令以同时包括STORE指令和SET(设置)update_flag指令421两者。可将LOAD指令扩展成等效于循环423的已编译代码,如关于图3(310)所述的。
图5是示出根据本发明的实施例的利用应用剖析器来优化应用代码的示例性系统的框图。应用源代码501可通过存储器或应用剖析器502。在某些实施例中,存储器剖析器可以是优化编译器503的一部分。剖析器可执行分析以帮助确定哪些频繁使用的数据应受到更新延迟。在一个实施例中,应用剖析器确定哪些全局变量506最应放入共享存储器中,即,被频繁访问但很少更新。剖析器还可确定合理的阈值504。在各实施例中,阈值504可基于应用代码中的容许误差率、加载和存储,并可脱机确定,或可被动态选择而不是由应用剖析器确定。可将全局变量选择506和阈值信息504馈给优化编译器503。应用源代码501通过优化编译器503以生成优化的已编译代码505。在一个实施例中,优化编译器包括更新代码生成模块533和加载代码生成模块543,如结合图4所讨论的。
在一个实施例中,优化编译器还包括过程间分析模块553。在某些实施例中,优化编译器还包括机器无关的全局优化、循环嵌套优化和/或代码生成(未示出)。从过程间分析模块553得到的结果可与从存储器剖析502(或其它分析或监控机制)得到的结果相组合,以标识最得益于延迟更新高速缓存的全局变量。过程间分析可确定被写入和读取且未由锁保护的全局变量。阈值504可在运行时期间被动态更新,或者可以是静态的。
本领域的普通技术人员将清楚,所述系统和方法的实施例可用于除网络路由以外的应用。例如,一实施例可用于屏幕或显示呈现。在某些情况下,容许计算系统中的图形或其它屏幕元素中的正的差错率是可接受的。在该情况下,用户可在较短的一段时间内看到非更新的像素或屏幕部分,直到检查数据更新标志。该屏幕部分可能对于计算系统上的应用程序的操作并不重要。可实现差错容许应用中的其它实施例。
在一实施例中,如果将阈值设置为0,则在每一次通过处理循环后检查更新标志。被发现是误差容许较小的应用可将阈值设置成该级别。在某些实施例中,可在一天或一星期中的预定时间将阈值设置或复位成各种值,以适应期望的通信量和更新。差错容许较小的其它应用也可利用所述的系统和方法来实现。例如,衡量计算的重要性使得在重压下首先执行重要的计算的应用可丢弃在高速缓存检索中易于出错的不重要的计算并首先执行更重要的计算。这可以是计算压力期间性能和差错率之间的可行的折衷。
在一个实施例中,对一给定的数据块有一个共享的存储单元,并且每一个处理器具有其自己的板上高速缓存。在另一个实施例中,仅处理器的一个子集具有板上高速缓存。没有板上高速缓存的那些处理器将在每当需要访问时访问主(共享)存储器。
图6是示出基于差错分析的阈值的动态更新的框图。在本发明的一个实施例中,差错率分析模块601在运行时操作。差错率分析模块601可捕捉与关于利用不与共享存储器305同步的高速缓存数据的处理器350的差错相关联的度量。如果确定差错率太高(或太低),则差错率分析模块可自动地更新优化应用代码中使用的阈值603。阈值603可以是立即对处理器350上运行的优化额应用代码可用的运行时变量。在其它实施例中,差错分析可手动地执行。在又一个实施例中,如果阈值在编译器中硬编码,则需要重新编译并重新优化应用代码。在另一个实施例中,可将阈值603作为用于下一次编译的输入自动发送到优化编译器503。
本文所述的技术不限于任何特定的硬件或软件配置;它们可在任何计算、消费者电子产品或处理环境中找到适用性。该技术可用硬件、软件或两者的组合来实现。该技术可用在诸如移动或固定计算机、个人数字助理、机顶盒、蜂窝电话和询呼机、消费者电子设备(包括DVD播放器、个人录影机、个人视频播放器、卫星接收器、立体声接收器、有线TV接收器)、以及其它电子设备等可编程机器上执行的程序来实现,这些可编程机器可包括一个或多个处理器、可由处理器访问的存储介质(包括易失性或非易失性存储器和/或存储元件)、至少一个输入设备、以及一个或多个输出设备。程序代码被应用于利用输入设备输入的数据以执行所述的功能并生成输出信息。输出信息可被应用于一个或多个输出设备。本领域的普通技术人员可意识到,本发明可用包括多处理器系统、小型计算机、大型机、独立消费者电子设备等在内的各种系统配置来实施。本发明也可在其中任务或其部分可由通过通信网络链接的远程处理设备来执行的分布式计算环境中实施。
每一程序用高级过程语言或面向对象的编程语言来实现以与处理系统通信。然而,如果需要的话,程序可用汇编语言或机器语言来实现。在任何情况下,语言可以是编译的或解释的。
程序指令可用于使以该指令编程的通用或专用处理系统执行本文所述的操作。或者,操作可由含有用于执行该操作的硬连线逻辑的专用硬件组件执行,或者由已编程计算机组件和自定义硬件组件的任何组合来执行。此处所描述的方法可作为计算机程序产品来提供,它可包括其上存储有可用于对处理系统或其它电子设备编程来执行该方法的指令的机器可访问介质。本文中所使用的术语“机器可访问介质”应包括能够存储或编码指令序列以供机器执行并使机器执行本文所述的方法中的任一种的任何介质。术语“机器可访问介质”因此应包括但不限于固态存储器、光或磁盘以及编码数据信号的载波。此外,在本领域中常见的是将软件以一种形式或另一种形式(例如,程序、过程、进程、应用、模块、逻辑等)说成是采取动作或导致结果。这些表达仅仅是陈述由处理系统对软件的执行使得处理器执行产生结果的动作的简略方式。
尽管参考说明性实施例描述了本发明,但该描述不应被理解为限制的意思。对于本发明所属领域的技术人员显而易见的是说明性实施例的各种修改以及本发明的其它实施例都被认为是落入本发明的精神和范围之内。
Claims (19)
1.一种用于具有延迟更新和有界差错的软件高速缓存的系统,包括:
包括多个处理器元件的系统,每一处理器元件执行经优化的应用指令,其中每一处理器元件通信上耦合到主存储器和高速缓冲存储器;
经优化的更新模块,用于更新所述主存储器的一部分,其中所述更新包括:设置一更新标志以指示所述主存储器的所述部分已被更新;以及
经优化的加载模块,用于检索所述主存储器的所述部分,其中在检索所述部分前以基于一阈值的周期性间隔检查所述更新标志,并且其中如果所述部分在高速缓存中,则从高速缓存中检索所述部分,直到所述更新标志指示所述部分已被更新且到达所述阈值为止。
2.如权利要求1所述的系统,其特征在于,所述阈值标识在检查所述更新标志前要执行的数据读取的最大次数。
3.如权利要求2所述的系统,其特征在于,所述阈值由应用剖析器来确定。
4.如权利要求3所述的系统,其特征在于,所述阈值是以下各项的函数:未经优化的应用指令所包括的数据读取的次数和数据写入的次数,以及最大差错容限。
5.如权利要求1所述的系统,其特征在于,所述主存储器的所述部分是基于对优化之前的应用指令的过程间分析的结果而选择的。
6.一种用于具有延迟更新和有界差错的软件高速缓存的方法,包括:
响应于数据的所选部分中的变化,由一经优化的应用来更新共享存储器中的所述数据的所选部分,其中所述更新还包括:设置一指示更新已发生的标志;
读取所述数据的所选部分,其中所选部分是从高速缓存中检索的,除非所述更新标志指示已发生了更新且所执行的数据读取的次数已超过了所选的阈值;以及
当所述更新标志指示已发生了更新且所执行的数据读取的次数已超过了所选的阈值时,从所述主存储器中检索所述所选部分。
7.如权利要求6所述的方法,其特征在于,所选的阈值标识在检查所述更新标志前所执行的数据读取的最大次数。
8.如权利要求7所述的方法,其特征在于,还包括由应用剖析器确定所述阈值。
9.如权利要求8所述的方法,其特征在于,所述阈值是以下各项的函数:未经优化的应用中数据读取的次数和数据写入的次数,以及最大差错容限。
10.如权利要求6所述的方法,其特征在于,所述数据的所述部分是基于对优化之前的应用指令的过程间分析的结果而选择的。
11.一种用于优化允许延迟更新软件高速缓存的应用代码的系统,包括:
第一分析模块,用于对应用代码执行过程间分析,所述第一分析确定所述应用代码中使用的全局变量,其中所确定的全局变量既被写入又被读取;以及
代码生成模块,用于生成经优化的应用代码,所述经优化的应用代码允许延迟更新高速缓存,包括:更新代码生成模块,用于在经优化的应用代码中插入代码以设置更新标志并用于在全局变量中存储修改的数据;以及
加载代码生成模块,用于在经优化的应用代码中插入代码以确定要读取的全局变量的位置,其中所述位置是高速缓存和共享存储器中的一个,其中如果对所述更新标志的周期性检查显示全局变量中的数据没有被更新,则所述位置是高速缓存,且其中如果对所述更新标志的周期性检查显示全局变量中的数据已经被更新,则所述位置是共享存储器。
12.如权利要求11所述的系统,其特征在于,从高速缓存中读取全局数据,其中对所述更新标志的周期性检查执行如下:当所执行的数据读取的次数已超过了一阈值时,检查更新标志,所述阈值是根据如下来确定的:容许差错率、未经优化的所述应用代码中的数据读取的次数和数据写入的次数。
13.如权利要求12所述的系统,其特征在于,还包括用于执行差错率分析并向所述代码生成模块提供所述阈值的第二分析单元。
14.如权利要求12所述的系统,其特征在于,在运行时期间从所述经优化的应用代码在执行期间可访问的位置中动态地检索所述阈值。
15.一种用于具有延迟更新和有界差错的软件高速缓存的设备,包括:
用于响应于数据的所选部分的变化,通过一经优化的应用来更新共享存储器中的所述数据的所选部分的装置,其中所述更新还包括设置指示更新已发生的标志;
用于读取所述数据的所选部分的装置,其中从高速缓存中检索所选部分,除非所述更新标志指示已发生了更新且所执行的数据读取的次数已超过了所选的阈值;以及
用于当所述更新标志指示已发生了更新且所执行的数据读取的次数已超过了所选的阈值时,从主存储器中检索所述所选部分的装置。
16.如权利要求15所述的设备,其特征在于,所选的阈值标识在检查所述更新标志前所执行的数据读取的最大次数。
17.如权利要求16所述的设备,其特征在于,所述阈值是使用应用剖析器来确定的。
18.如权利要求17所述的设备,其特征在于,所述阈值是以下各项的函数:未经优化的应用中数据读取的次数和数据写入的次数,以及最大差错容限。
19.如权利要求15所述的设备,其特征在于,所述数据的所述部分是基于对优化之前的应用指令的过程间分析的结果而选择的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/993,957 | 2004-11-19 | ||
US10/993,957 US7529888B2 (en) | 2004-11-19 | 2004-11-19 | Software caching with bounded-error delayed update |
PCT/US2005/042334 WO2006055955A2 (en) | 2004-11-19 | 2005-11-17 | Software caching with bounded-error delayed update |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101036124A CN101036124A (zh) | 2007-09-12 |
CN101036124B true CN101036124B (zh) | 2010-07-21 |
Family
ID=36061326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800336115A Expired - Fee Related CN101036124B (zh) | 2004-11-19 | 2005-11-17 | 具有有界差错延迟更新的软件高速缓存 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7529888B2 (zh) |
EP (2) | EP1825363B1 (zh) |
JP (2) | JP5000529B2 (zh) |
KR (2) | KR101145733B1 (zh) |
CN (1) | CN101036124B (zh) |
WO (1) | WO2006055955A2 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006270303A (ja) * | 2005-03-23 | 2006-10-05 | Hitachi Ltd | 通信制御方法、通信制御装置および通信制御プログラムを記録した記憶媒体 |
US7493452B2 (en) * | 2006-08-18 | 2009-02-17 | International Business Machines Corporation | Method to efficiently prefetch and batch compiler-assisted software cache accesses |
WO2008040073A1 (en) * | 2006-10-05 | 2008-04-10 | Waratek Pty Limited | Contention resolution with counter rollover |
WO2009027138A1 (en) * | 2007-08-30 | 2009-03-05 | International Business Machines Corporation | Accessing data entities |
US7453910B1 (en) | 2007-12-18 | 2008-11-18 | International Business Machines Corporation | Synchronization of independent clocks |
US8527974B2 (en) * | 2008-03-28 | 2013-09-03 | International Business Machines Corporation | Data transfer optimized software cache for regular memory references |
US8561043B2 (en) * | 2008-03-28 | 2013-10-15 | International Business Machines Corporation | Data transfer optimized software cache for irregular memory references |
US8561044B2 (en) * | 2008-10-07 | 2013-10-15 | International Business Machines Corporation | Optimized code generation targeting a high locality software cache |
US8312219B2 (en) | 2009-03-02 | 2012-11-13 | International Business Machines Corporation | Hybrid caching techniques and garbage collection using hybrid caching techniques |
KR101644653B1 (ko) | 2010-03-19 | 2016-08-02 | 삼성전자주식회사 | 단말 적합성 애플리케이션 최적화장치 및 방법 |
EP2623326A4 (en) | 2010-09-30 | 2018-03-21 | Brother Kogyo Kabushiki Kaisha | Printer |
US8676920B2 (en) * | 2010-12-08 | 2014-03-18 | GM Global Technology Operations LLC | Intelligent cache management protocol for vehicular networks |
CN102571419A (zh) * | 2011-12-19 | 2012-07-11 | 曙光信息产业(北京)有限公司 | 一种软硬件结合实现的端口列表高效管理系统和方法 |
US8850406B1 (en) * | 2012-04-05 | 2014-09-30 | Google Inc. | Detecting anomalous application access to contact information |
CN103246616B (zh) * | 2013-05-24 | 2017-09-26 | 浪潮电子信息产业股份有限公司 | 一种长短周期访问频度的全局共享缓存替换方法 |
US9426663B2 (en) | 2013-06-26 | 2016-08-23 | Cable Television Laboratories, Inc. | Capacity sharing between wireless systems |
KR20160003485A (ko) * | 2014-07-01 | 2016-01-11 | 삼성전자주식회사 | 원격 함수 호출을 위한 자동 코드 생성 |
US20160037536A1 (en) | 2014-07-29 | 2016-02-04 | Cable Television Laboratories, Inc. | Downlink power control for interference mitigation in competing communication systems |
US9529531B2 (en) | 2014-10-06 | 2016-12-27 | Barefoot Networks, Inc. | Proxy hash table |
US10063479B2 (en) * | 2014-10-06 | 2018-08-28 | Barefoot Networks, Inc. | Fast adjusting load balancer |
US10067967B1 (en) | 2015-01-27 | 2018-09-04 | Barefoot Networks, Inc. | Hash table storing reduced search key |
CN107534896B (zh) | 2015-05-14 | 2021-09-14 | 有线电视实验室公司 | 对话前监听系统中的混合自动重传请求(harq) |
US10158573B1 (en) | 2017-05-01 | 2018-12-18 | Barefoot Networks, Inc. | Forwarding element with a data plane load balancer |
US10599567B2 (en) | 2017-10-06 | 2020-03-24 | International Business Machines Corporation | Non-coherent read in a strongly consistent cache system for frequently read but rarely updated data |
US11184446B2 (en) | 2018-12-05 | 2021-11-23 | Micron Technology, Inc. | Methods and apparatus for incentivizing participation in fog networks |
US11013043B2 (en) | 2019-01-08 | 2021-05-18 | Micron Technology, Inc. | Methods and apparatus for routine based fog networking |
US11327551B2 (en) | 2019-02-14 | 2022-05-10 | Micron Technology, Inc. | Methods and apparatus for characterizing memory devices |
US10957416B2 (en) | 2019-02-14 | 2021-03-23 | Micron Technology, Inc. | Methods and apparatus for maintaining characterized memory devices |
US11256778B2 (en) | 2019-02-14 | 2022-02-22 | Micron Technology, Inc. | Methods and apparatus for checking the results of characterized memory searches |
US10867655B1 (en) | 2019-07-08 | 2020-12-15 | Micron Technology, Inc. | Methods and apparatus for dynamically adjusting performance of partitioned memory |
US11449577B2 (en) | 2019-11-20 | 2022-09-20 | Micron Technology, Inc. | Methods and apparatus for performing video processing matrix operations within a memory array |
US11853385B2 (en) | 2019-12-05 | 2023-12-26 | Micron Technology, Inc. | Methods and apparatus for performing diversity matrix operations within a memory array |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5249284A (en) * | 1990-06-04 | 1993-09-28 | Ncr Corporation | Method and system for maintaining data coherency between main and cache memories |
US6370614B1 (en) * | 1999-01-26 | 2002-04-09 | Motive Power, Inc. | I/O cache with user configurable preload |
CN1482540A (zh) * | 2002-08-02 | 2004-03-17 | ���µ�����ҵ��ʽ���� | 编译程序、编译程序装置和编译方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03266046A (ja) * | 1990-03-16 | 1991-11-27 | Nippon Telegr & Teleph Corp <Ntt> | データベース高速アクセス方法 |
JPH0410051A (ja) * | 1990-04-27 | 1992-01-14 | Hitachi Ltd | マルチプロセッサシステムの共有メモリ制御方法 |
EP0460852A3 (en) * | 1990-06-04 | 1992-08-05 | Ncr Corporation | System for maintaining data coherency between main and cache memories |
US5175856A (en) * | 1990-06-11 | 1992-12-29 | Supercomputer Systems Limited Partnership | Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution |
JPH04205234A (ja) * | 1990-11-30 | 1992-07-27 | Oki Electric Ind Co Ltd | データベース更新バッファ吐き出し装置 |
JPH0869405A (ja) * | 1994-08-30 | 1996-03-12 | Nec Software Ltd | 分散処理システムのメモリ共有化装置 |
JPH10124372A (ja) * | 1996-10-18 | 1998-05-15 | Nippon Telegr & Teleph Corp <Ntt> | 自律キャッシュ制御システム |
US5909698A (en) * | 1997-03-17 | 1999-06-01 | International Business Machines Corporation | Cache block store instruction operations where cache coherency is achieved without writing all the way back to main memory |
JP3563591B2 (ja) * | 1997-09-29 | 2004-09-08 | 株式会社リコー | 分散型データベースシステムの一貫性管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6134710A (en) * | 1998-06-26 | 2000-10-17 | International Business Machines Corp. | Adaptive method and system to minimize the effect of long cache misses |
JP2002157158A (ja) * | 2000-11-20 | 2002-05-31 | Hitachi Ltd | データベースシステムにおけるデータ管理方法 |
JP3661614B2 (ja) * | 2001-07-12 | 2005-06-15 | 日本電気株式会社 | キャッシュメモリ制御方法及びマルチプロセッサシステム |
JP3632635B2 (ja) * | 2001-07-18 | 2005-03-23 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
US6792510B1 (en) * | 2002-02-14 | 2004-09-14 | Novell, Inc. | System and method for updating a cache |
JP4381655B2 (ja) * | 2002-05-31 | 2009-12-09 | 株式会社日立製作所 | ストレージシステム、ストレージ装置、及び該ストレージ装置を利用した情報共有方法 |
US7356813B2 (en) | 2002-09-26 | 2008-04-08 | Hewlett-Packard Development Company, L.P. | System and method for optimizing a program |
-
2004
- 2004-11-19 US US10/993,957 patent/US7529888B2/en not_active Expired - Fee Related
-
2005
- 2005-11-17 JP JP2007543403A patent/JP5000529B2/ja not_active Expired - Fee Related
- 2005-11-17 EP EP05824735.4A patent/EP1825363B1/en not_active Not-in-force
- 2005-11-17 KR KR1020097025188A patent/KR101145733B1/ko not_active IP Right Cessation
- 2005-11-17 CN CN2005800336115A patent/CN101036124B/zh not_active Expired - Fee Related
- 2005-11-17 WO PCT/US2005/042334 patent/WO2006055955A2/en active Application Filing
- 2005-11-17 KR KR1020077007265A patent/KR100953458B1/ko not_active IP Right Cessation
- 2005-11-17 EP EP08006523.8A patent/EP1965302B1/en not_active Not-in-force
-
2012
- 2012-03-22 JP JP2012065030A patent/JP5529194B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5249284A (en) * | 1990-06-04 | 1993-09-28 | Ncr Corporation | Method and system for maintaining data coherency between main and cache memories |
US6370614B1 (en) * | 1999-01-26 | 2002-04-09 | Motive Power, Inc. | I/O cache with user configurable preload |
CN1482540A (zh) * | 2002-08-02 | 2004-03-17 | ���µ�����ҵ��ʽ���� | 编译程序、编译程序装置和编译方法 |
Non-Patent Citations (2)
Title |
---|
Arun Iyengar et al.Web caching,consistency,and content distribution.2004,1-21. * |
John Dilley et al.The distributed object consistency protocol version 1.0.1999,1-20. * |
Also Published As
Publication number | Publication date |
---|---|
WO2006055955A3 (en) | 2007-01-11 |
US20060112237A1 (en) | 2006-05-25 |
JP2008521146A (ja) | 2008-06-19 |
JP2012150830A (ja) | 2012-08-09 |
US7529888B2 (en) | 2009-05-05 |
EP1825363B1 (en) | 2017-05-17 |
JP5000529B2 (ja) | 2012-08-15 |
KR101145733B1 (ko) | 2012-05-22 |
EP1965302B1 (en) | 2015-07-29 |
WO2006055955A2 (en) | 2006-05-26 |
EP1965302A1 (en) | 2008-09-03 |
EP1825363A2 (en) | 2007-08-29 |
KR100953458B1 (ko) | 2010-04-16 |
KR20100017577A (ko) | 2010-02-16 |
CN101036124A (zh) | 2007-09-12 |
JP5529194B2 (ja) | 2014-06-25 |
KR20070052335A (ko) | 2007-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101036124B (zh) | 具有有界差错延迟更新的软件高速缓存 | |
US8468329B2 (en) | Pipeline configuration protocol and configuration unit communication | |
US7373475B2 (en) | Methods for optimizing memory unit usage to maximize packet throughput for multi-processor multi-threaded architectures | |
CN100394407C (zh) | 低等待时间存储器系统访问 | |
US20060047849A1 (en) | Apparatus and method for packet coalescing within interconnection network routers | |
US20200097269A1 (en) | Data plane semantics for software virtual switches | |
CN111767041A (zh) | 在数据流图中插入缓冲器的方法和设备 | |
US7480768B2 (en) | Apparatus, systems and methods to reduce access to shared data storage | |
CN102033818A (zh) | 媒体缓冲和流水线式处理组件 | |
US8839219B2 (en) | Data prefetching and coalescing for partitioned global address space languages | |
US8359435B2 (en) | Optimization of software instruction cache by line re-ordering | |
US20240249177A1 (en) | Quantum computing program compilation using cached compiled quantum circuit files | |
US20140325175A1 (en) | Pipeline configuration protocol and configuration unit communication | |
US20080244221A1 (en) | Exposing system topology to the execution environment | |
US10235299B2 (en) | Method and device for processing data | |
US8661169B2 (en) | Copying data to a cache using direct memory access | |
Muthukrishnan et al. | Finepack: Transparently improving the efficiency of fine-grained transfers in multi-gpu systems | |
JP2003510685A (ja) | キャッシュ置換方法および装置 | |
US20060294041A1 (en) | Installing a component to an application server | |
Ho | Optimization of data transfer on many-core processors, applied to dense linear algebra and stencil computations | |
US20050251795A1 (en) | Method, system, and program for optimizing code | |
US20240045692A1 (en) | Instruction set architecture for data processing array control |
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: 20100721 Termination date: 20171117 |
|
CF01 | Termination of patent right due to non-payment of annual fee |