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

多处理器系统中的高性能队列实现技术方案

技术编号:2820779 阅读:207 留言:0更新日期:2012-04-11 18:40
系统和方法提供单个读取器单个写入器(SRSW)队列结构,该队列结构具有能够利用单个存储器访问以原子方式并行访问的项。可以将SRSW队列组合以创建较复杂的队列,包括多个读取器单个写入器(MRSW)、单个读取器多个写入器(SRMW)和多个读取器多个写入器(MRMW)队列。

【技术实现步骤摘要】
【国外来华专利技术】
本公开一般涉及排队软件,更具体来说涉及用于多处理环境的排 队软件。
技术介绍
从计算机行业最初期起, 一直存在对提高系统性能以便比以往更 快地运行应用程序的需求或对在可接受的时间范围内运行能产生结 果的应用程序的需求。用于提高计算机系统的性能的一种方法是,使 系统将进程或进程的一部分(例如线程)彼此并行地在具有多个处理 器的系统上运行。队列是一种用于线程通信和同步的常用数据结构。线程可以将数据项目置于队列中(称为入列(enqueuing)),并且其他线程可以通过 先进先出(FIFO)方式从队列取出数据项目(称为出列(dequeuing)), 因此在线程之间传送数据,并可以协调所涉及的线程的活动。例如流 传输计算、分组处理计算、数据流计算等的多线程应用延伸性地采用 队列。例如,多线程网络应用可以4吏一个线程处理分组净艮头,然后经 由队列将分组传递到另一个线程以进行有效载荷处理。队列实现的主要潜在性能瓶颈包括提供并发访问控制,即确保对 队列项的多线程并发访问的正确性同时还保持FIFO特性。在现有的 实现中,所采用的机制可能包括1)使用互斥或原子临界部分(atomic critical section),这通常通过锁或推测来实现;2)用于加载-修改-存 储的多个存储器访问原子指令或更具体地说用于多个存储器操作的 原子指令,例如原子比较交换或原子交换;或3)线程调度器协调, 例如Linux内核中的任务就绪队列。遗憾的是,为了保证正确地并发访问队列,这些机制的每一种机制都可能带来相当大的性能惩罚。附图说明图1是示出结合了本专利技术实施例的系统的硬件和软件组件的框图。图2A是根据本专利技术实施例的队列数据结构的框图。图2B是根据本专利技术备选实施例的队列数据结构的框图。图3A是图示根据本专利技术实施例、用于读取队列项的方法的流程图。图3B是图示根据本专利技术实施例、用于写入队列项的方法的流程图。图3C是图示根据本专利技术实施例、用于读取緩沖的队列项的方法 的流程图。图3D是图示根据本专利技术实施例、用于写入緩冲的队列项的方法 的流程图。图4是图示根据本专利技术实施例的多个写入器单个读取器排队系统 的软件组件的框图。图5是图示根据本专利技术实施例的单个写入器多个读取器排队系统 的软件组件的框图。图6是图示根据本专利技术实施例的多个写入器多个读取器排队系统 的软件组件的框图。具体实施例方式在下文对本专利技术的示范实施例的详细描述中,参考了附图,这些 附图构成描述的 一部分并且在附图中以说明形式示出了可以实施本 专利技术主题的特定示范实施例。对这些实施例进行了充分详细地描述, 从而使本领域技术人员能够实施本专利技术的多种实施例,并且要理解可 以利用其他实施例,并在不背离本专利技术主题范围的前提下可以进行逻 辑、机械、电子或其他方面的更改。因此,下文的详细描述不应视为 限制意义。在这些附图中,相同的引用号通篇用于指代多个附图中出现的完全相同的组件。信号和连接可以由相同的引用号或标记来指代,实际的含义将在描述的上下文中通过其使用予以阐明。图1是示出结合了本专利技术实施例的系统100的硬件和软件组件的框图。在一些实施例中,系统100包括处理单元102、存储器104、线程106和队列108。在一些实施例中,处理单元102可以是作为多核处理器的一部分的处理引擎。这些类型的体系结构可以称为多核体系结构。因此,多核处理体系结构在逻辑上是具有多个独立处理引擎(核)的单个处理器。在备选实施例中,在电路板上存在多个处理器的情况中,处理单元102可以是电路板上的各个处理器。在又一个备选实施例中,处理单元102均可以位于作为多处理器板系统的一部分的板上。在一些实施例中,系统100包括SMP (对称多处理)体系结构,SMP (对称多处理)体系结构使多个处理单元可用于同时完成各个进程(多处理)。在SMP中,可以将任何空闲的处理器指定给任何任务,并且可以添加附加的处理单元来提高性能和处理增加的负栽。而且,处理器102能够实现多线程。多线程提供同时执行程序的若干部分(称为线程)的能力。应该注意,虽然图1中图示了四个处理单元102,但是本专利技术的 任何实施例都不局限于任何数量的处理单元102。多种实施例可以具有更多或更少的处理单元,以及在一些实施例中,使用十六个处理单 元。存储器104可以是能够存储程序和数据的任何类型的存储器。此 类存储器的示例包括SRAM (静态RAM )、 DRAM (动态随机存取存储器)、SDRAM (同步DRAM )、 DDR-SDRAM (双数据速率SDRAM) 或任何其他类型的存储器。每个线程106是能够独立于程序或进程的其他线程来执行的程序 的一部分。线程106可以在不同处理器102上以并行方式执行。在本专利技术的多种实施例中,线程106在一个或多个队列108中读取和/或写入项。图1中示出四个线程106.1-106.4,但是,多种实施例中可以有 更多或更少的线程106。队列108是用于提供对队列中的项进行先进先出处理的数据结 构。换言之,插入到队列中的第一个元素将是从队列中移除的第一个 元素。因此,无论何时,只要添加项,则需要移除之前添加的所有项 之后才能移除最近添加的项。图1中图示了两个队列108.1和108.2, 但是多种实施例中可能有更多或更少的队列108。下文参考图2A-2B 提供有关本专利技术多种实施例中使用的队列数据结构的进一步细节。图1图示其中每个队列108.1和108.2是单个读取器单个写入器 (single reader single writer SRSW)队列的示范实施例。即,单个线程 从单独队列读取,而单个线程向单独队列写入。在图1所示的示例中, 线程106.1向队列102.1中写入,而线程106.2从队列108.1中读取。图2A是根据本专利技术实施例的队列数据结构108的框图。在一些 实施例中,队列数据结构108包括头部值202、尾部值204和队列项 206。在一些实施例中,队列项206包含具有值的队列项的阵列,这 些值是空队列项值或非空队列项值。在一些实施例中,队列项是指向 队列项的数据对象的指针。如杲队列项具有空值,则队列项是空的。 任何不是有效队列项值的值均可用作空(NULL)值。例如,在队列项是 指向数据对象的指针的情况中,可以使用0 (零)或-1的值来指示空 值,因为这些值都不是有效的指针值。此外,队列项206中的每个队 列项在存储器边界上对齐,这将允许利用单个存储器访问(例如加载 (读取)或存储(写入))对队列项的原子访问。在一些实施例中, 队列项在字边界上对齐,并且是具有字大小的项。但是,可以使用将 提供利用单个存储器访问对队列项的原子访问的任何边界和大小。头部值202是对队列108的头部的引用。队列的头部是队列中将 从队列移除下一个队列项所在的点。当移除项时,头部值4皮调整为引 用新的头部项。在一些实施例中,头部值202是至队列项阵列的索引。尾部值204是对队列108的尾部的引用。队列的尾部是队列中将下一个队列项添加到队列所在的点。当添加项时,尾部值^皮调整为引 用队列中的下一个可用项。在一些实施例中,队列108可以包括读取緩冲器208和写入緩冲 器210。高速緩存性能可以是队列系统性能的一个重要要素。在典型 的队列访问模式中,读取本文档来自技高网...

【技术保护点】
一种方法,包括: 将第一队列初始化,所述第一队列具有一组第一队列项,所述第一队列项具有至少一个有效值和空值,所述第一队列项的每一个占用在单个存储器访问中以原子方式可访问的存储器部分; 接收对所述一组第一队列项的队列项执行队列操作的请求;以及基于所述队列项是否具有空值的确定来确定是否要执行所述队列操作。

【技术特征摘要】
【国外来华专利技术】

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

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

1