网络应用内的自动高速缓存生成的制作方法

文档序号:6507241阅读:194来源:国知局
专利名称:网络应用内的自动高速缓存生成的制作方法
技术领域
本发明的实施例涉及网络应用,尤其涉及针对网络应用的自动高速缓存生成。
背景技术
网络处理器(NP)正作为高速通信路由器的核心元件浮现,并且它们被设计成专用于分组处理应用。这些应用通常具有严格的性能要求。例如,OC-192(10千兆比特/秒)POS(SONET分组)分组处理要求2800万分组/秒的吞吐量或4.57微秒/分组的服务时间用于最差情况下的发送和接收。
另一方面,NP中用于外部存储器访问的等待时间通常大于最差情况服务时间。为了解决分组处理的独特难题(例如,在保持稳定性的同时针对最差情况话务使吞吐量最大并使等待时间最小),现代网络处理器通常具有高度并行的架构。例如,诸如Intel IXA NPU家族网络处理器(IXP)之类的某些网络处理器包括并行运行的多个微引擎(例如,有分组处理能力的可编程处理器),并且每个微引擎都支持多个硬件线程。
因此,相关联的网络应用也是高度并行的,并通常是多线程的以补偿较长的存储器访问等待时间。只要有新分组到达,就由一新线程对该分组执行一系列任务(例如,分组的接收、路由表查找以及入队)。在这一并行编程范例中,对诸如共用存储器内的位置之类的全局资源的修改被临界段保护,以确保各线程之间的相互排他性和同步。
每一临界段通常读取一资源,修改该资源并将其写回(RMW)。

图1是示出多个线程的常规外部存储器访问的框图。如图1所示,如果要求一个以上线程修改同一临界数据,则如果每一线程都访问该外部存储器,就会导致对每一线程的等待时间恶化。参考图1,必须顺序执行线程101至104中的每一个。例如,线程102在线程102能够访问外部存储器的同一位置之前必须等待线程101完成对外部存储器的读取、修改和写回操作。
附图简述通过参考用来示出本发明实施例的以下描述和附图,能够更好地理解本发明。
在附图中图1是示出一典型外部存储器访问的框图。
图2是示出根据一个实施例的使用软件控制的高速缓存的外部存储器访问的示例的框图。
图3是示出根据一个实施例的高速缓存机制的示例的框图。
图4是示出根据另一实施例的高速缓存机制的示例的框图。
图5是示出根据一个实施例的用于软件自动控制的高速缓存的进程的示例的流程图。
图6至图8是示出根据一个实施例的软件控制的高速缓存操作的伪码的示例的框图。
图9是示出根据一个实施例的表示高速缓存候选的进程的示例的流程图。
图10至图12是示出根据一个实施例的软件控制的高速缓存操作的伪码的示例的框图。
图13是示出根据一个实施例的使用软件控制的高速缓存的外部存储器访问的示例的框图。
图14是示出根据一个实施例的CAM和LM的存储器分配的示例的框图。
图15是示出根据一个实施例的用于软件自动控制的高速缓存的进程的示例的流程图。
图16是示出根据一个实施例的用于在微引擎内维护CAM和/或LM的映像的进程的示例的流程图。
图17是用于图16的进程示例的伪代码的示例的框图。
图18是示出根据一个实施例的具有多个微引擎的处理器的示例的框图。
图19是示出根据一个实施例的数据处理系统的示例的框图。
具体实施例方式
在此将描述网络应用中的自动软件控制的高速缓存生成。在以下描述中,将阐明多个具体细节。然而可以理解,无需这些具体细节也能实现本发明的各实施例。在其他情况下,未详细示出公知的电路、结构和技术以免淡化对本发明的理解。
以下详细描述的某些部分将按照对计算机存储器内的数据位的操作的算法和符号表示来提出。这些算法描述和表示可由数据处理技术领域的普通技术人员用于将他们的工作主旨有效地传达给该领域其他技术人员。此处的算法通常被认为是可导致期望结果的自一致的操作序列。这些操作是要求对物理量进行物理处理的操作。在通常但非必须的情况下,这些量采用能被存储、传输、组合、比较以及处理的电或磁信号的形式。已证实有时为了方便起见,主要是鉴于常用的原因,可将这些信号称为比特、值、元素、符号、字符、项、数字等等。
但应该记住的是,所有这些及类似的术语都与合适的物理量相关联,并且只是应用于这些量的方便的标记。除非另外特别指出,否则如可以从以下讨论中清楚的,可以理解,贯穿本说明书,使用诸如“处理”、“计算”、“演算”、“确定”或“显示”之类的术语的讨论指的是计算机系统或者类似的数据处理设备的动作和/或进程,这些设备将计算机系统的寄存器和存储器内被表示为物理(例如,电子)量的数据处理并变换成计算机系统存储器或寄存器或其他这类信息存储、传输或显示设备内类似地被表示为物理量的其他数据。
本发明的实施例还涉及用于执行在此描述的操作的装置。装置可以是为了所需的目的特别构造的,或者可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这些计算机程序可以被存储在计算机可读存储介质内,计算机可读存储介质诸如但不限于包括软盘、光盘、CD-ROM和磁光盘的各类盘、只读存储器(ROM)、诸如动态RAM(DRAM)等随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、或者适于存储电子指令的任何类型的介质,并且上述存储组件的每一个都能耦合至计算机系统总线。
此处提出的算法和显示本质上并不涉及任何特定的计算机或其他装置。可以结合根据此处的教示的程序使用各种通用系统,或者构造更专用的装置以执行这些方法可以被证明是方便的。用于这各种系统的结构将从如下的描述中变得显而易见。此外,将不会参考任何特定的编程语言来描述本发明的实施例。应该认识到,可以使用各种编程语言来实现对在此描述的本发明实施例的教示。
机器可读介质包括用于存储或传输具有机器(例如,计算机)可读形式的信息的任何机制。例如,机器可读介质可以包括只读存储器(″ROM″);随机存取存储器(″RAM″);磁盘存储介质;光盘存储介质;闪存设备;电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等等)等等。
在一个实施例中,软件控制的高速缓存可用于通过将多个RMW操作折叠成单个读取和一个或多个修改来帮助减小等待时间的不利结果。因此,显著降低了外部存储器访问的次数,并有效地最小化了由线程间(围绕临界数据的)依赖性所导致的等待时间。
图2是示出根据一个实施例的多个线程的外部存储器访问的示例的框图。外部存储器访问示例200包括含有线程201至204在内的多个线程。与图1所示的存储器访问类似,每个线程包括读取操作、修改操作和写入操作,这些操作被称为RMW操作。在一个实施例中,使用如下将详述的高速缓存机制将线程201至204的RMW操作合并或折叠成单个读取操作、一个或多个修改操作以及在末尾的单个写入操作。结果,显著减少了外部存储器访问的次数,并大幅减小由线程间依赖性所导致的等待时间。
图3是示出根据一个实施例的高速缓存机制的示例的框图。在一个实施例中,高速缓存机制300可以在诸如Intel IXA NPU家族的网络处理器(IXP)等具有多个微引擎的处理器的一个微引擎中实现。
例如,根据一个实施例,在诸如Intel IXA NPU家族的网络处理器(IXP)等具有多个微引擎的处理器的每个微引擎中,内容可寻址存储器(CAM)单元和局部存储器(LM)可以被组合以实现软件控制的高速缓存。微引擎中的CAM单元是内容可寻址存储器。CAM单元中的每一条目都存储高速缓存线的状态和标志部分,并且其最近最少使用(LRU)逻辑维护CAM条目使用的时序列表。此外,微引擎中的局部存储器基本上是其中能够存储高速缓存线的数据部分的已索引寄存器文件。所有相关的高速缓存操作(例如,查找标志、数据加载、数据写回等等)都在软件控制之下。
在一个实施例中,处理器包括但不限于,各自具有内容可寻址存储器(CAM)和局部存储器以基本同时地执行多个线程的多个微引擎,每个线程都包括基于实质相同的基地址来执行至少一个外部存储器访问的一个或多个指令,其中在CAM中检查基地址以确定该CAM是否包括含有该基地址的条目,并且如果该CAM包括了含有该基地址的条目,则无需访问外部存储器就能访问对应于该CAM条目的局部存储器的条目。
参见图3,在一个实施例中,高速缓存机制示例300包括但不限于CAM 301和LM 302。虽然高速缓存机制示例300示出了一个CAM和一个LM,但应该认识到,可实现一个以上CAM和LM。CAM 301和LM 302可以被组合使用以自动实现软件控制的高速缓存以减轻网络应用中访问外部存储器的等待时间的不利结果。为说明起见,CAM和LM单元被用作一示例以示出贯穿本申请的程序变换。但也应该认识到,也可实现其他类型的存储器和机制而不背离本发明实施例的较宽范围和精神。
在一个实施例中,CAM 301包括一个或多个条目304至306,其中条目304至306中的每一个都包括标志字段和状态字段,以分别存储高速缓存线的标志部分和状态部分。此外,CAM 301还包括一最近最少使用(LRU)逻辑以确定CAM 301中最近最少使用的条目。在一个实施例中,LM 302包括一个或多个条目308至310,其中条目308至310中的每一个都被用于存储高速缓存线的数据部分。
在一个实施例中,当接收到对访问带有外部存储器的基地址的位置的请求时,处理该请求的线程的微引擎可以检查(例如,走查)CAM 301以定位带有所请求的基地址的条目。例如,可以检查CAM 301的条目304至306中的每一个以匹配所请求的外部存储器的基地址。通常,CAM 301的条目304至306中的每一个可存储最近访问的外部存储器的基地址。如果在CAM 301中找到带有所请求的基地址的条目,则LRU逻辑303返回具有状态字段312、情况字段313和条目号字段314的结果311。状态字段312可以包含相对应的高速缓存线的状态和/或CAM的状态,而情况字段313则指示该高速缓存是命中(结果311b)还是未中(结果311a)。条目号字段314包括内含所请求的基地址的CAM 301命中条目号。命中条目号可用于根据如下将进一步描述的预定算法经由LM 302的索引逻辑307来访问LM302的条目。
如果确定CAM 301不含有所请求的基地址,则LRU逻辑303返回CAM 301的最近最少使用条目(例如,结果311a)。CAM的最近最少使用条目链接至可用于存储(例如,高速缓存)来自外部存储器访问的数据以供对同一基地址的后续外部存储器访问的LM 302的条目。
LRU逻辑303可被实现为CAM 301的一部分,和/或索引逻辑可被实现为LM302的一部分。然而,该配置可以不限于图3所示的那一种。应该认识到,可存在其他配置。例如,根据另一实施例,作为图4所示的高速缓存机制示例400,LRU逻辑303可以在CAM 301外部实现,和/或索引逻辑307可以在LM 302外部实现。此外,CAM 301和/或LM 302可被实现为在处理器内的多个微引擎之间共享的全局CAM和/或LM的一部分,其中该全局CAM和LM可被划分成用于多个微引擎的多个分区。也可存在其他配置。
图5是示出根据一个实施例的用于软件自动控制的高速缓存的进程的示例的流程图。示例性进程500可由包括硬件(电路、专用逻辑等)、软件(诸如在专用机器上运行的软件)或两者的组合的处理逻辑执行。例如,进程示例500可由编译器在编译用诸如C/C++和/或汇编语言等各种编程语言编写的源代码时执行。在一个实施例中,进程示例包括但不限于,标识表示执行一个或多个外部存储器访问的多个线程的多个指令的候选,其中外部存储器访问带有实相同的基地址;以及将一个或多个伪指令或指令插入到与所标识的候选相对应的指令流中,以维护处理器的内容可寻址存储器(CAM)和局部存储器(LM)中的至少一个的内容并修改该外部存储器访问的至少一个以访问处理器的CAM和LM中的至少一个而无需执行各自的外部存储器访问。
参见图5,在框501处,处理逻辑接收用诸如C/C++和/或汇编语言等各种编程语言编写的源代码。在框502处,该处理逻辑对该源代码进行语法分析以标识用于软件控制的高速缓存的一个或多个候选,诸如具有实际相同的基地址的每个线程内的外部存储器访问。在框503处,该处理逻辑将一个或多个指令插入该源代码的指令流中以维护处理器的微引擎的CAM和/或LM的映像,并修改候选的原始外部存储器访问以访问LM的数据映像而无需访问该外部存储器。也可执行其他操作。
在一个实施例中,在网络应用手动或通过并行化编译器自动多线程化之后,每个线程对新接收的分组执行本质上相同的操作,并且对全局资源(例如,外部存储器访问)的修改受到临界段保护。这一变换自动识别用于高速缓存的候选(每个线程内的外部存储器访问)并实现软件控制的高速缓存(例如,维护CAM和LM的映像,并且修改原始访问以访问LM中的数据映像)。
为了提供用于软件控制的高速缓存的候选,必须基于对相应源代码的分析从多个潜在候选中标识出该候选。图6是示出根据一个实施例的可用与提供用于软件控制的高速缓存的候选的源代码的示例。参见图6,源代码示例600包括可经由多线程进程处理的多个操作框601至604。
在一个实施例中,源代码示例600可以被分析以生成如图7所示的潜在候选池。参见图7,在此示例中,潜在候选池700包括候选701至705。在一个实施例中,候选701至705可以被分析以标识经由同一基地址的外部存储器访问的闭集。即,它们访问地址(基址+偏移量),其中基址对集合内的全部访问是共有的,且对不同线程可以是不同的,而偏移量则是一常数。该结合在它包含线程内彼此依赖的所有访问的意义上是封闭的。
结果,根据一个实施例,如图8所示,任何不合格的候选被筛出,并且一个或多个合格候选可基于它们相同的基地址被合并成一个更大的候选。在一个实施例中,如果该基址并非对候选内的所有访问是共用的,则该候选对于高速缓存是不合格的。或者,如果由一候选访问的存储器位置能够被其他程序访问,则该相应候选是不合格的。在该示例中,候选701是不合格候选,因为它具有不同的基地址。另一方面,候选702至705是合格候选,因为它们具有相同的基地址(例如,state+16*i),由此,候选702至705被合并成一个更大的候选800,作为用于高速缓存的最终候选。
图9是示出根据一个实施例的标识用于高速缓存的候选的进程的示例的流程图。进程示例900可由包括硬件(电路、专用逻辑等)、软件(诸如在专用机器上运行的软件)或两者的组合的处理逻辑执行。例如,进程示例900可由编译器在编译用诸如C/C++和/或汇编语言等各种编程语言编写的源代码时执行。
参见图9,在框901处,处理逻辑将基本上所有的外部存储器访问划分成一个或多个候选集合(例如,闭集)。例如,若访问A依赖于访问B,则它们可以被分入同一分区。即,如果两个访问处于依赖关系,则它们应该访问同一数据映像(在外部存储器内或在局部存储器内)。因此,所标识的每个闭集都是一个用于高速缓存的候选。
在框902处,可以对每个外部存储器访问的地址可任选地执行一个或多个前向复制变换。例如,以下操作a=b+c;d=load[a];可被变换成以下操作d=load[b+c]在框903处,可以为每个线程执行一个或多个全局值编号和/或恒定折叠操作。例如,在全局值编号操作期间,下列操作a=2;b=c*a;d=2;e=d*c;可以被变换成以下操作a=2;b=c*a;a=2;b=c*a;例如,在恒定折叠操作期间,以下操作a=2;b=c+d;e=a+b;可以被变换成以下操作a=2;b=c+d;e=2+b;在框904处,对与每个候选的每个外部存储器访问,外部存储器访问的地址被转换成(基址+偏移量)的形式。在一个实施例中,基地址是地址的非恒定部分,而偏移量是恒定部分。注意,如果一程序已在使同一地址具有同一表示的意义下被值编号,则变换效率将得到改善。
在框905处,标识例如图7的候选702至705等一个或多个合格候选,而不合格候选则被筛除(例如,消除)。在一个实施例中,如果基地址对分区内基本上所有外部存储器访问来说不是相同的,那么相应的一个或多个候选被认为是不合格的。此外,如果外部存储器访问的存储器位置可以被其他程序访问,则对应的一个或多个候选也被认为是不合格的。即,如果正被访问的存储器地址对其他程序来说是已知的,例如是被外部定义的,那么这些地址就不适用于高速缓存。这一个或多个候选可以通过由编译器执行的换码分析来标识。
在框906处,合格候选可以被合并成单个大候选。例如,根据一个实施例,具有相同基地址的所有合格候选可以被组合为单个候选,诸如图8中的候选800。在框907处,选择具有组合的最大候选的候选作为用于高速缓存的最终候选。也可以执行其他操作。
注意,软件控制的高速缓存用于减轻对多线程全局资源的修改的等待时间不利结果。然而,如果CAM和LM单元是由多个线程共享的全局资源,则所有的高速缓存操作就应该受到临界段的保护。根据一个实施例,为简化临界段所需的同步,仅选择一个候选(例如,一个全局资源)。然而,应该认识到,只要能适当地处理临界段,就可以依据特定系统设计选择一个以上选。
在标识了用于高速缓存的最终候选之后,将一条或多条指令插入到相应的指令流中以维护CAM和LM单元,并且修改该候选中的原始访问以访问LM中的数据映像。图10是示出在每条外部存储器访问指令之前已插入了一高速缓存指令的伪代码的示例的框图。在某些情况下,所插入的高速缓存指令可以如图11所示地复制并被合并成每个相关外部存储器访问的一条高速缓存指令。其后,可以扩展所插入的高速缓存指令来修改外部存储器访问,以便如图12所示地访问相应的局部存储器而非访问外部存储器。在此示例中,base=state+i*16,m=0,M=15,并且n是含有基址的CAM中的条目。
于是,当不同的线程访问同一数据时,这些线程就能如图13所示(假设LM内的起始地址B是0)直接访问LM内的数据映像。此外,还可以执行一些进一步的优化。例如,响应于CAM查找未中,扩展的高速缓存指令仅写回脏字节并且仅载入实际使用的字节。也可以执行其他操作。
为执行合适的软件控制的高速缓存,必须为每个外部存储器访问保留充足的局部存储空间。图14是示出根据一个实施例的CAM和LM的存储器分配的示例的框图。参见图14,存储器配置示例1400包括CAM 1401和局部存储器1402。CAM 1401包括分别对应于一个或多个保留的存储空间1405至1406的一个或多个条目1403至1404。
对于候选内的每个访问,其地址采用基址+偏移量的形式。为了说明起见,假设m是(具有CAM 1401的第n个条目的)选定候选中的所有访问中所访问的最小地址字节并且M是所访问的最大地址字节,而N是CAM中的条目数,则在LM302中为数据映像保留N*(M-m+1)个字节。假设LM 302中的数据映像的起始地址是B。如果候选的基地址被存储在CAM的第n个条目1404中,其中n的范围在0至N-1之间,则LM 302内相关联高速缓存线的数据部分就如存储空间1406中所指示的那样从B+n*(M-m+1)至B+(n+1)*(M-m+1)-1。
图15是示出根据一个实施例的用于自动软件控制的高速缓存的进程的示例的流程图。进程示例1500可以由包括硬件(电路、专用逻辑等)、软件(诸如在专用机器上运行的软件)或两者的组合的处理逻辑执行。例如,进程示例1500可由编译器在编译用诸如C/C++和/或汇编语言等各种编程语言编写的源代码时执行。
参见图15,在框1501处,在局部存储器中保留充足的存储空间以存储外部存储器访问的高速缓存线的数据部分。在框1502处,例如如图10所示,将一高速缓存指令插入到每个候选的每一外部存储器访问指令之前。在框1503处,处理逻辑可任选地对插入的高速缓存指令执行局部冗余性消除操作,从而例如如图10所示,在该局部冗余性消除之后,在通过该程序的任何路径中最多有一条高速缓存指令。在框1504处,高速缓存指令被扩展至一个或多个码序列,用于在CAM中查找基地址,收回老的高速缓存线并在CAM中查找未中的情况下将新映像载入LM。在框1505处,修改每个候选的每个外部存储器访问以访问LM内的相关联数据映像。注意,包括扩展高速缓存指令和经修改的访问在内的实现软件控制的高速缓存的所有指令都应该受到临界段的保护。也可以执行其他操作。
图16是示出根据一个实施例的用于维护微引擎内的CAM和/或LM的映像的进程的示例的流程图。进程示例1600可由包括硬件(电路、专用逻辑等)、软件(诸如在专用机器上运行的软件)或两者的组合的处理逻辑执行。例如,进程示例1600可由编译器在编译用诸如C/C++和/或汇编语言等各种编程语言编写的源代码时执行。可以执行进程示例1600作为图15的框1504处所执行操作的一部分。
参见图16,当处理逻辑接收到访问外部存储器位置的请求时,在框1601处,处理逻辑在CAM中进行查找以确定该CAM是否含有所请求的外部存储器访问的基地址。如果CAM含有所请求的外部存储器访问的基地址(例如,命中),那么在框1606处,检索CAM中含有该基地址的对应条目的索引,并在框1607处在无需访问外部存储器的情况下基于检索到的索引访问LM的条目。
如果CAM不包含所请求的外部存储器访问的基地址(例如,未中),则在框1602处,分配或标识CAM中的最近最少使用(LRU)条目(例如,用于前一外部存储器访问的先前的高速缓存操作的条目),并检索其中存储的索引和地址。在框1603处,检查存储在CAM的LRU条目中的检索到的地址来确定该地址是否有效。
如果该地址被确定为有效,则在框1604处,基于所标识的有效地址将存储在相应局部存储器内的数据(例如,用于前一外部存储器访问的先前的高速缓存数据)写回(例如,交换)至外部存储器。于是,CAM的LRU条目和对应的LM空间现在可用于高速缓存当前的外部存储器访问。在框1605处,将当前存储器访问的数据从由基地址标识的外部存储器位置载入CAM的LRU条目以及对应的LM空间中。在框1606处,响应于该请求,返回存储在局部存储器中的数据。图17是用于图16的进程示例1600的伪代码的示例的框图。也可以执行其他操作。
图18是根据一个实施例的具有多个微引擎的处理器的示例的框图。处理器示例1800包括多个微引擎1801至1802。微引擎1801至1802中的每一个都各自包括分别由LRU逻辑1807至1808管理的CAM 1803至1804。每个微引擎还各自包括分别由索引逻辑1809至1810管理的LM 1805至1806。微引擎1801至1802可用于执行上述的自动软件控制额高速缓存操作,其中每个微引擎都能为各自的线程基本同时地执行这些操作。应该理解,未示出处理器的某些公知组件以避免用不必要的细节模糊本发明的各实施例。
图19是示出根据一个实施例的数据处理系统的示例的框图。示例性系统1900可用于执行针对上述软件控制的高速缓存的进程示例。注意,虽然图19示出了计算机系统的各种组件,但是它并不旨在表示任何特定的架构或组件互连方式,因为这些细节与本发明并没有密切联系。还应该理解,具有更少或可能更多组件的网络计算机、手持式计算机、蜂窝电话和其他数据处理系统也可以用于本发明。图19的计算机系统例如可以是Apple Macintosh计算机或IBM兼容PC。
参见图19,计算机系统1900包括但不限于处理数据信号的处理器1902。处理器1902可以是图1所示的示例性处理器100。处理器1902可以是复杂指令集计算机(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器、或者诸如数字信号处理器等其他处理设备。图19示出了被实现为单个处理器系统1900的本发明的一个实施例的示例。然而,应该理解,本发明的实施例也可以替换地被实现为具有多个处理器的系统。处理器1902可以耦合至在处理器1902和系统1900内的其他组件之间传输数据信号的处理器总线1910。
在一个实施例中,处理器1902包括但不限于多个微引擎1940至1942。微引擎1940至1942可用于为多个线程基本同时执行自动软件控制的高速缓存。
此外,系统1900包括存储器1916。存储器1916可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备或其他存储器设备。存储器1916可以存储由可以被处理器1902执行的数据信号表示的指令和/或数据。指令和/或数据可以包括用于执行本发明任何和/或全部技术的代码。编译器用于编译源代码,包括标识适用于软件控制的高速缓存的一个或多个候选,以及插入并扩展高速缓存指令以访问局部存储器而非外部存储器。存储器1916还可包括未示出的附加软件和/或数据。对存储在存储器1916内的数据信号进行存储的高速缓冲存储器1904可以位于处理器1902内部或者外部。本实施例中的高速缓冲存储器1904通过利用其访问的局部性来加速处理器的存储器访问。
此外,桥/存储器控制器1914可被耦合至处理器总线1910和存储器1916。桥/存储器控制器1914在处理器1902、存储器1916和系统1900中的其他组件之间引导数据信号并在处理器总线1910、存储器1916和第一输入/输出(I/O)总线1920之间桥接数据信号。在某些实施例中,桥/存储器控制器提供用于耦合到图形控制器1912的图形端口。在此实施例中,图形控制器1912接口至显示设备以向用户显示图形控制器1912描绘或处理的图像。显示设备可以包括电视机、计算机监视器、平板显示器或其他合适的显示设备。
第一I/O总线1920可以包括单条总线或多条总线的组合。第一I/O总线1920提供系统1900内的各组件之间的通信链路。网络控制器1922可以耦合至第一I/O总线1920。网络控制器将系统1900链接至包括多个处理系统并支持各系统间的通信的网络。处理系统的网络可以包括局域网(LAN)、广域网(WAN)、因特网或其他网络。用于编译源代码的编译器可以经由网络从一个计算机传输至另一个系统。类似地,包括编译器插入的伪指令或指令的已编译代码可以从主机(例如,开发机)传输至目标机(例如,执行机)。
在某些实施例中,显示设备控制器1924可以被耦合至第一I/O总线1920。显示设备控制器1924允许将显示设备耦合至系统1900并用作显示设备和系统之间的接口。显示设备可包括电视机、计算机监视器、平板显示器或其他合适的显示设备。显示设备通过显示设备控制器1924接收来自处理器1902的数据信号,并向系统1900的用户显示包含在该数据信号内的信息。
第二I/O总线1930可以包括单条总线或多条总线的组合。第二I/O总线1930提供系统1900内的各组件之间的通信链路。数据存储设备1932可以耦合至第二I/O总线1930。数据存储设备1932包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。数据存储设备1932可以包括一个或多个所述的数据存储设备。
诸如键盘或定点设备(例如,鼠标)等用户输入接口1934可以耦合至第二I/O总线1930。用户输入接口1934可以包括键盘控制器或其他键盘接口设备。用户输入接口1934可以包括专用设备或者可以驻留在诸如总线控制器或其他控制器设备等另一设备之内。用户输入接口1934允许用户输入设备(例如,键盘、鼠标、操纵杆或跟踪球等)与系统1900的耦合并将数据信号从用户输入设备传输至系统1900。
一个或多个I/O控制器1938可用于将一个或多个I/O设备连接至示例性系统1900。例如,I/O控制器1938可以包括适用于控制USB(通用串行总线)外围设备的USB适配器,或者适用于控制IEEE 1934(也称之为火线(Firewire))兼容设备的IEEE 1934总线控制器。
此外,系统1900的元件执行本领域内公知的其常规功能。更具体地,数据存储设备1932可以用于根据本发明实施例为用于动态循环聚集方法的实施例的可执行指令和数据结构提供长期存储,而存储器1916则用于根据本发明的实施例在处理器1902执行期间在短期的基础上存储动态循环聚集方法的实施例的可执行指令。
虽然以上示例描述了经由数据存储设备对计算机代码的分发,但是也可以通过其他计算机可读介质来分发程序代码。例如,可以通过诸如软盘、CD ROM、载波、网络甚至是经因特网的传输等计算机可读介质来分发计算机程序。软件代码编译器通常在代码编译过程中使用优化以试图生成更快更好的代码。
由此,此处已描述了网络应用中的自动软件控制的高速缓存生成。在前述说明中,本发明是参考其具体的示例性实施例来描述的。显而易见的是,可以在不背离所附权利要求书中阐明的本发明的较宽的精神和范围的前提下对其做出各种修改。因此,说明书和附图是说明性而非限制性的意义上考虑的。
权利要求
1.一种方法,包括标识表示执行一个或多个外部存储器访问的多个线程的多条指令的候选,所述外部存储器访问具有实际相同的基地址;以及将伪指令和指令中的至少一个插入到对应于所标识的候选的指令流中,以便维护处理器的内容可寻址存储器(CAM)和局部存储器(LM)中的至少一个的内容,并且修改所述外部存储器访问中的至少一个以在无需执行各自的外部存储器访问的情况下访问所述处理器的CAM和LM中的至少一个。
2.如权利要求1所述的方法,其特征在于,还包括基于所述指令间的依赖关系将所述外部存储器访问的多条指令划分成一个或多个潜在候选集合;以及选择所述潜在候选集合之一作为所述候选,所述候选的指令满足预定的依赖关系。
3.如权利要求2所述的方法,其特征在于,还包括将每个外部存储器访问的地址转换成具有基地址和偏移量的形式。
4.如权利要求3所述的方法,其特征在于,所述基地址是所转换的地址的非恒定部分,而所述偏移量是恒定部分。
5.如权利要求3所述的方法,其特征在于,还包括从所述潜在候选中筛除一个或多个不合格候选,其中所述不合格候选包括与其余的潜在候选不同的基地址。
6.如权利要求3所述的方法,其特征在于,还包括将具有实际相同的基地址的多个潜在候选组合成单个候选,其中具有最多所述潜在候选的组被选为用于高速缓存的最终候选。
7.如权利要求1所述的方法,其特征在于,所述标识候选还包括对每一所述外部存储器访问的地址执行前向复制变换;以及为每个线程执行全局值编号操作和恒定折叠操作中的至少一种。
8.如权利要求3所述的方法,其特征在于,还包括对每个线程,在所述局部存储器内保留充足的空间以存储高速缓存线的数据部分;以及在每个所述外部存储器访问之前插入一高速缓存指令。
9.如权利要求8所述的方法,其特征在于,还包括在所述CAM中查找每个外部存储器访问的基地址以确定所述CAM是否包括含有被查找的基地址的条目。
10.如权利要求9所述的方法,其特征在于,如果所述CAM包括含有被查找的基地址的条目,则所述方法还包括基于所述CAM中含有被查找的基地址的条目确定所述局部存储器的偏移量;以及访问对来自所述局部存储器中由所确定的偏移量引用的条目的数据。
11.如权利要求9所述的方法,其特征在于,如果所述CAM不包括含有被查找的基地址的条目,则所述方法还包括分配所述CAM中具有前一外部存储器访问的基地址的最少最近使用(LRU)条目。
12.如权利要求11所述的方法,其特征在于,还包括将来自所述外部存储器的当前外部存储器访问的数据载入所述局部存储器中由所分配的LRU条目引用的条目;以及在所述CAM的LRU条目中存储所述当前外部存储器访问的基地址以代替所述前一外部存储器访问的基地址。
13.如权利要求11所述的方法,其特征在于,还包括在所分配的LRU条目中检查所述前一外部存储器访问的基地址以确定所述基地址是否有效;以及将所述局部存储器中与所分配的LRU条目相对应的条目的数据复制到所述前一外部存储器访问的外部存储器基地址的位置。
14.一种具有使得机器执行一方法的可执行码的计算机可读介质,所述方法包括标识表示执行一个或多个外部存储器访问的多个线程的多条指令的候选,所述外部存储器访问具有实际相同的基地址;以及将伪指令和指令中的至少一个插入到对应于所标识的候选的指令流中,以便维护处理器的内容可寻址存储器(CAM)和局部存储器(LM)中的至少一个的内容,并且修改所述外部存储器访问中的至少一个,以在无需执行各自的外部存储器访问的情况下访问所述处理器的CAM和LM中的至少一个。
15.如权利要求14所述的计算机可读介质,其特征在于,所述方法还包括基于所述指令间的依赖关系将所述外部存储器访问的多条指令划分成一个或多个潜在候选集合;以及选择所述所述潜在候选集合之一作为所述候选,所述候选的指令满足预定的依赖关系。
16.如权利要求15所述的计算机可读介质,其特征在于,所述方法还包括将每个外部存储器访问的地址转换成具有基地址和偏移量的形式。
17.如权利要求15所述的计算机可读介质,其特征在于,所述方法还包括从所述潜在候选中筛除一个或多个不合格候选,其中所述不合格候选包括与其余的潜在候选不同的基地址。
18.如权利要求15所述的计算机可读介质,其特征在于,所述方法还包括将具有实际相同的基地址的多个潜在候选组合成单个候选,其中具有最多的所述潜在候选的组被选为用于高速缓存的最终候选。
19.如权利要求15所述的计算机可读介质,其特征在于,所述方法还包括对每个线程,在所述局部存储器内保留充足的空间以存储高速缓存线的数据部分;以及在每个所述外部存储器访问之前插入一高速缓存指令。
20.如权利要求19所述的计算机可读介质,其特征在于,所述方法还包括在所述CAM内查找每个所述外部存储器访问的基地址以确定所述CAM是否包括含有被查找的基地址的条目。
21.如权利要求20所述的计算机可读介质,其特征在于,如果所述CAM包括含有被查找的基地址的条目,则所述方法还包括基于所述CAM中含有被查找的基地址的条目确定所述局部存储器的偏移量;以及访问来自所述局部存储器中由所确定的偏移量引用的条目的数据。
22.如权利要求20所述的计算机可读介质,其特征在于,如果所述CAM不包括含有被查找的基地址的条目,则所述方法还包括分配所述CAM中具有前一外部存储器访问的基地址的最少最近使用(LRU)条目。
23.如权利要求22所述的计算机可读介质,其特征在于,所述方法还包括将来自所述外部存储器的当前外部存储器访问的数据载入所述局部存储器中由所分配的LRU条目引用的条目中;以及在所述CAM的LRU条目中存储所述当前外部存储器访问的基地址以代替所述前一外部存储器访问的基地址。
24.如权利要求22所述的计算机可读介质,其特征在于,所述方法还包括在所分配的LRU条目中检查所述前一外部存储器访问的基地址以确定所述基地址是否有效;以及将所述局部存储器内与所分配的LRU条目相对应的条目的数据复制到所述前一外部存储器访问的外部存储器基地址的位置。
25.一种处理器,包括各自具有内容可寻址存储器(CAM)和局部存储器(LM)以基本同时执行多个线程的多个微引擎,所述多个线程中的每一个都包括基于实际相同的基地址执行至少一个外部存储器访问的一条或多条指令,其中在所述CAM内检查所述基地址以确定所述CAM是否包括含有所述基地址的条目,以及其中如果所述CAM包括含有所述基地址的条目,则在无需访问所述外部存储器的情况下访问所述局部存储器中与所述CAM的条目相对应的条目。
26.如权利要求25所述的处理器,其特征在于,所述微引擎的CAM包括最少最近使用(LRU)逻辑,以分配所述CAM中与所述局部存储器的条目相链接的LRU条目,其中所分配的LRU条目用来高速缓存所述外部存储器访问以供对所述外部存储器的同一位置进行后续访问。
27.如权利要求26所述的数据处理系统,其特征在于,所述LM包括基于由所述LRU逻辑提供的引用提供指向所述LM的条目的索引的索引逻辑。
28.一种数据处理系统,包括处理器;耦合至所述处理器的存储器;以及程序指令,当从所述存储器中执行所述程序指令时,使所述处理器标识表示执行一个或多个外部存储器访问的多个线程的多条指令的候选,所述外部存储器访问具有实际相同的基地址;以及将伪指令和指令中的至少一个插入到对应于所标识的候选的指令流中,以便维护执行所述多个线程的执行处理器的内容可寻址存储器(CAM)和局部存储器(LM)中的至少一个的内容,并且修改所述外部存储器访问中的至少一个,以在无需执行各自的外部存储器访问的情况下访问所述执行处理器的CAM和LM中的至少一个。
29.如权利要求27所述的数据处理系统,其特征在于,所述多个线程分别由所述执行处理器的多个微引擎执行,并且其中,所述执行处理器的每个所述微引擎都包括CAM和LM。
30.如权利要求28所述的数据处理系统,其特征在于,所述微引擎的CAM包括最少最近使用(LRU)逻辑,用于在所述CAM不包括当前外部存储器访问的基地址的情况下分配所述CAM中的LRU条目,以高速缓存当前的外部存储器访问以供后续的同一外部存储器访问使用,并且其中所述LM包括基于由所述LRU逻辑提供的引用提供指向所述LM的条目的索引的索引逻辑。
全文摘要
在此描述了在网络应用中的自动软件控制的高速缓存生成。在一个实施例中,标识表示执行一个或多个外部存储器访问的多个线程的多条指令的候选,其中该外部存储器访问具有基本相同的基地址。将一条或多条伪指令和/或指令插入到与所标识的候选相对应的指令流中,以维护处理器的内容可寻址存储器(CAM)和局部存储器(LM)中的至少一个的内容,并且修改外部存储器访问中的至少一个,以在无需执行各自的外部存储器访问的情况下访问该处理器的CAM和LM中的至少一个。同时还描述了其他方法和装置。
文档编号G06F12/00GK1957331SQ200480043163
公开日2007年5月2日 申请日期2004年5月26日 优先权日2004年5月26日
发明者戴金权, L·哈里森, 李龙, 黄波 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1