当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于缓存操作的方法、装置和系统制造方法及图纸

技术编号:2828511 阅读:137 留言:0更新日期:2012-04-11 18:40
提供了用于缓存操作的方法、装置和系统。响应于多个线程的更新合格性和干扰关系,自动地修改缓存操作过程。将数据读入高速缓存中,并且将对该数据的引用提供给多个线程。一旦最后一个线程具有了对该数据的引用,初始线程从最后一个线程接收信号。初始线程响应于该信号而修改该数据,并且在高速缓存内对该数据的变化进行更新,然后向下一个线程发送另一个信号,以指示下一个线程现在可以对高速缓存内的该数据执行易变操作。

【技术实现步骤摘要】
【国外来华专利技术】用于缓存操作的方法、装置和系统
这里所提供的启示涉及数据处理,并且尤其涉及软件缓存操作(caching)。技术背景分组处理的唯一挑战是保持稳定性,同时对于较差情况下的通信 量情形,令吞吐量最大化而令延迟(latency)最小化。另一方面,与网 络处理器内单个外部存储器访问相关的延迟通常大于较差情况下的 服务时间。因此,通常用具有多个处理器的高度并行的架构来实现现 代的网络处理器。每个处理器可以支持多个处理线程(应用)。此外,为了隐藏长的存储器访问延迟,网络应用也可以是高度并 行的,并且通常其是多线程的(multi-threaded)和/或多处理的 (multi-processed)。每当新分组到达网络处理器时,就通过该网络处理 器内的新线程,对该分组执行一系列任务(例如,分组接收、路由表 查找、消息入队等等)。然而,对于分组处理,与全局数据或者分组 相关的更新必须按照预定义的线程顺序并且按照原子的形式来执行, 以便确保在可以对该数据或分组进行更新的多个竞争线程之中保持 该分组处理的完整性。为了确保分组处理完整性,典型地在网络处理器内对于全局数据 或者分组实现有序的分段或更新处理。在该处理过程中,按照接收这 些分组的顺序将分组分配给一连串的线程。每个线程在进入其有序分 段更新处理之前,必须等待来自前一个线程的信号;在接收到该信号 之后,等待中的线程可以读取数据或者分组,对其进行修改,并将其 写回到存储器中,并且随后向下一个等待的线程发送完成信号。该处理对非易变(non-voktile)的操作造成延迟,例如与读操作相 关的延迟,即使利用多线程和/或多处理环境也不能隐藏该延迟。附图说明图1A和IB是根据一个示例性实施例,关于在多线程和多处理 环境中的数据处理的图。图2是根据一个示例性实施例,在多线程和多处理环境中的数据 处理过程中所使用的缓存系统的图。图3A和3B是一个根据示例性实施例,关于在多线程和多处理 环境中使用不同和相同的内容可寻址存储单元来进行数据处理的图。图4A和4B是一个根据示例性实施例,关于在多线程和多处理 环境中进行数据处理时发生的死锁的图。图5示出了根据一个示例性实施例的软件控制的缓存操作,其用 于对正在多线程和多处理环境中处理的数据进行更新。图6示出了根据一个示例性实施例的一种在多个线程之间自动实 现软件控制的缓存操作的方法,其中所述多个线程在多线程和多处理 环境中对数据进行处理。图7示出了根据一个示例性实施例的在多个线程之间确定合格性 (eligibility)和干扰状况的方法,其中所述多个线程在多线程和多处理 环境中对数据进行处理。图8示出了根据一个示例性实施例的用于在多线程和多处理环境 中针对正进行处理的数据,使用多个高速缓存插入软件缓存操作代码 的方法。图9示出了根据一个示例性实施例的用于在多线程和多处理环境 中对数据进行缓存和处理的方法。图10示出了根据一个示例性实施例的用于修改高速缓存服务以 按照图9中所述的方式来处理数据的方法。图11示出了根据一个示例性实施例的缓存装置。图12示出了根据一个示例性实施例的缓存系统。具体实施方式图1A和1B是根据一个示例性实施例,关于在多线程和多处理环境中的全局数据处理的图。图1A和IB图描述了多个处理器内的 多个线程的处理,从线程0和处理器0开始。在图1A和IB的右侧 显示了这两个图合在一起的图例。该处理与正在多线程和多处理环境中处理的全局数据或分组相 关,在该环境中,每个线程都希望访问该数据或分组,并且每个线程 都有可能修改或更新该数据或分组。该处理(此后称为对于共享数 据的更新处理)被实现为图IB中的软件控制的缓存操作指令,存在 于机器可访问的和可读的介质内,并且是可通过网络来访问的。该网 络可以是有线的、无线的或者有线和无线的组合。在图1A中,每^^线程最开始等待一个信号,该信号指示能够从 高速缓存中读取希望的全局数据或分组。从图1A可以看出,直到在 先的线程完成了对该数据所希望做出的任意改变并且将该数据写回 到高速缓存,下一个线程才获得对该数据的读访问权。对于对该数据 没有更新权限的每个线程来说,这造成了存储器访问延迟。通过图1B中所描述的处理来隐藏与图1A的处理相关的延迟。 更具体地说,图1B中的对于共享高速缓存的更新处理允许给定处理 器中的每个线程在任意特定线程获得对该高速缓存内的数据的更新 (易变的(volatile))访问权之前,出于读取的目的而获得该数据。例如, 处理器0的线程0-3中的每一个连续地或者实质上并行地彼此传递信 号,直到线程0-3中的每一个都有对高速缓存内的该数据的引用为止。 然而,在线程O对高速缓存内的该数据进行其易变操作之前,该线程 一直等待,直到它从最后一个线程3接收到信号为止。处理器1内从线程3到线程0的信号通知线程0:现在处理器0 中的所有线程0-3都对该数据进行了读访问,并且现在可以允许线程 O对高速缓存内的该数据执行易变(写)操作。在此时,线程0对高速 缓存内的该数据具有排它的写访问权。在线程0对于高速缓存内的该 数据具有排它的写访问权的同时,剩余的线程对于高速缓存内的相同数据具有读访问权。一旦线程0修改了该数据并且将对该数据的改变写回到高速缓 存,线程O就向下一个线程(线程l)发送信号,该信号给予下一个线程对于高速缓存内的该数据的排它的写访问权。继续这个处理,直到最后一个线程(线程3)对高速缓存内的该数据执行了其更新,并且将 一个信号发送给下一个处理器(处理器l)及其初始线程(线程0)。可以 对N-1个处理器连续进行这种处理,这些处理器中的每一个具有Y-1 个线程,其中N和Y是从O开始的整数。图1B的对于共享高速缓存的更新处理得以实现,是因为读操作 是非易变的、并且典型地是在发生高速缓存缺失(cache miss)时由处理 器所发出的。因此,如果多个线程希望访问相同的全局数据或分组, 那么当每个线程最初请求访问该数据时,并未发生高速缓存缺失,并 且实质上可以向给定处理器内的每个线程并行地提供对于高速缓存 内的该数据的引用。另一方面,如果发生高速缓存缺失,那么多个线 程希望访问不同的数据或分组,并且可以实质上并行地将数据加载到 高速缓存中。这为在多线程环境下最初获得对于数据的访问减少了延 迟。可以将图1B的对于共享高速缓存的更新处理以网络处理器中的 软件控制的缓存操作实现为具有两个阶段的处理过程读取阶段和更 新阶段。图2示出了根据一个示例性实施例的在多线程和多处理环境中 的数据处理过程中所使用的缓存系统200。在处理器(例如,网络处理 器)环境下,缓存系统200被实现在机器可访问的和可读的介质中。缓存系统200包括内容可寻址存储器(CAM) 210和局部存储器 220。对CAM 220和局部存储器220进行编程,以提供图1B中所描 述的软件控制的缓存操作。CAM 210包括最近最少使用(LRU)逻辑211以及多个条目(entry) 212。条目212存储特定的被缓存的数据条目行的状态和标签部分。 LRU逻辑211维护在CAM 210中所用条目的按时间排序的列表。局部存储器220可以是索引的寄存器文件221,其中可以存储高 速缓存行的数据部分222。每个相关的高速缓存操作(本文档来自技高网...

【技术保护点】
一种方法,包括:将对高速缓存中的数据的引用传递到初始线程;将所述引用迭代地传递到下一个线程,直到到达最后一个线程为止,其中所述下一个线程包括中间线程和所述最后一个线程中的一个;从所述最后一个线程向所述初始线程发送信号,告知所述初始线程可以对所述高速缓存中的所述数据执行初始易变操作;以及在所述初始易变操作在所述高速缓存内完成更新之后,从所述初始线程向所述下一个线程发送信号,告知所述下一个线程有资格针对所述数据执行下一个易变操作。

【技术特征摘要】
【国外来华专利技术】1、一种方法,包括将对高速缓存中的数据的引用传递到初始线程;将所述引用迭代地传递到下一个线程,直到到达最后一个线程为止,其中所述下一个线程包括中间线程和所述最后一个线程中的一个;从所述最后一个线程向所述初始线程发送信号,告知所述初始线程可以对所述高速缓存中的所述数据执行初始易变操作;以及在所述初始易变操作在所述高速缓存内完成更新之后,从所述初始线程向所述下一个线程发送信号,告知所述下一个线程有资格针对所述数据执行下一个易变操作。2、 如权利要求1所述的方法,进一步包括在针对所述数据发 生了对所述高速缓存的更新之后,迭代地从所述下一个线程向新的下 一个线程发送信号,直到到达所述最后一个线程为止。3、 如权利要求l所述的方法,进一步包括计算用于进行更新的所述初始线程、零个或更多中间线程、以及所述最后一个线程的更新的合格性;对所述初始线程、所述零个或更多中间线程、以及所述最后一个 线程的更新干扰图进行着色,其中,所述干扰图包括所述初始线程、 所述零个或更多中间线程、以及所述最后一个线程的干扰关系;以及如果合格性存在的话,则插入高速缓存代码,其中,所述高速缓 存代码自动允许进行所述方法的处理。4、 如权利要求3所述的方法,其中,所述着色进一步包括使 用与所述初始线程、所述零个或更多中间线程、以及所述最后一个线 程相关的可用的逻辑内容可寻址存储器(CAM)单元。5、 如权利要求l所述的方法,其中,发送信号进一步包括-通过所述初始线程来修改所述数据;以及 将所述数据作为已修改的数据写回到所述高速缓存中所述引用的位置。6、 如权利要求1所述的方法,进一步包括在多个处理器上执 行所述方法。7、 如权利要求1所述的方法,进一步包括针对所述高速缓存和一个或多个额外的高速缓存执行所述更新,其中所述额外的高速缓 存是由零个或更多中间线程或所述最后一个线程所使用的。8、 一种具有相关指令的机器可访问的介质,所述指令当被执行时,使得机器执行如果与多个线程相关的处理不会受到干扰并且有资格进行修改,则自动地修改缓存服务的易变阶段,以包括第一阶段和第二阶段;在第一阶段期间,将对于高速缓存中的数据的引用传递到所述多个线程,包括初始线程、零个或更多中间线程、以及最后一个线程; 一旦所述最后一个线程具有了所述引用,就从所述最后一个线程向第一个线程发送信号;以及在所述第二阶段期间, 一旦当前的处理线程已在所述高速缓存中更新了对所述数据的修改,就串行地从始于...

【专利技术属性】
技术研发人员:J戴L李
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1