CN101194245A - 具有宽寄存器组体系结构的分组处理器 - Google Patents
具有宽寄存器组体系结构的分组处理器 Download PDFInfo
- Publication number
- CN101194245A CN101194245A CNA2006800040553A CN200680004055A CN101194245A CN 101194245 A CN101194245 A CN 101194245A CN A2006800040553 A CNA2006800040553 A CN A2006800040553A CN 200680004055 A CN200680004055 A CN 200680004055A CN 101194245 A CN101194245 A CN 101194245A
- Authority
- CN
- China
- Prior art keywords
- wide
- register
- group
- thread
- processing unit
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 3
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims 2
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 230000004044 response Effects 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003760 hair shine Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
宽寄存器组(WRS)被用在分组处理器中以提高某些分组处理操作的性能。WRS中的寄存器具有比用于主要的分组处理操作的主寄存器更宽的位长。宽逻辑单元被配置为对宽寄存器组执行逻辑操作,并且在一种实现方式中,包括专门配置用于分组调度操作的硬件基元。专用的互锁机构被额外用于协调多个处理器或线程对相同的宽寄存器地址位置的访问。WRS产生比以前的硬件解决方案廉价得多并且具有比以前的软件解决方案更好的性能的调度引擎。WRS提供小型、紧凑、灵活和可缩放的调度子系统,并且通过使用较廉价的存储器同时与其它使用共享存储器可以忍受较长的存储器延迟。结果得到了一种基于期望的调度需求的新的分组处理体系结构,其具有很宽范围的成本/性能点。
Description
背景技术
分组处理器被用在路由器、交换机、服务器、个人计算机(PC)等中以在诸如互联网之类的分组交换网络中处理和路由分组。分组处理器通常需要调度对所接收到的分组的处理和在分组处理完成之后的分组输出。分组处理器所接收和发送的分组流量的类型和数量不断地变化。因而,这些调度操作对于公平且高效地处理分组来说至关重要。
在分组处理器中存在高效地实现分组调度的问题。基于硬件的方法可以非常快速地操作,但是往往不灵活并且成本高。例如,可能需要整个专用集成电路来用于分组调度操作。
对灵活的解决方案(例如无需对ASIC改版就可以改变其算法/功能的方案)的需要强烈地促动着开发基于软件的解决方案。但是,由于需要大量的连续逻辑操作,使得用于调度操作的基于软件的解决方案运行得非常慢。
这些多方面的处理要求又由于用于分组调度的大型数据结构而变得更加复杂。在一些软件实现方式中,这些数据结构可能超过1000位宽。即使利用可替代的调度结构(例如日历),诸如调度状态之类的项目对于分组处理器中通常使用的寄存器来说仍然太宽。当然,在中央处理单元(CPU)或者甚至是网络处理单元(NPU)上,获取、更新和存储这种大型数据结构的任务可能成本很高。
用在调度数据结构中的多个字段也未与用在分组处理器中的寄存器堆(register file)很好地对应。例如,这些不同的字段可能不具有8、16或32位的位长。这迫使分组处理器执行许多数据排列和掩码操作以准备调度数据用于后续处理。
目前缺少的是提供运行速度比当前的软件方案快很多而成本低于以前的硬件方法的廉价又灵活的解决方案的中间的处理体系结构。本发明解决了与现有技术相关联的这个问题及其它问题。
发明内容
宽寄存器组(WRS)被用在分组处理器中以提高某些分组处理操作的性能。WRS中的寄存器具有比用于主要的分组处理操作的主寄存器更宽的位长。宽逻辑单元被配置为对宽寄存器组执行逻辑操作,并且在一种实现方式中包括专门配置用于分组调度操作的硬件基元(primitive)。专用的互锁机构被额外用于协调多个处理器或线程对相同的宽寄存器地址位置的访问。
WRS产生比以前的硬件解决方案廉价得多并且具有比以前的软件解决方案更好的性能的调度引擎。WRS提供小型、紧凑、灵活和可缩放的调度子系统,并且通过使用较廉价的存储器同时与其它使用共享存储器可以忍受较长的存储器延迟。结果得到了一种基于处理需求的新的分组处理体系结构,其具有很宽范围的成本/性能点。
根据下面参考附图对本发明优选实施例的详细描述,将更容易明白本发明的前述和其它目的、特征和优点。
附图说明
图1是包括宽寄存器组(WRS)的分组处理元件的框图。
图2是更详细地示出WRS的框图。
图3是示出用在宽寄存器逻辑单元中的硬件基元的示例的框图。
图4是宽寄存器互锁机构。
图5是使用WRS的分组处理器的框图。
具体实施方式
图1示出了用在多线程分组处理元件(PPE)110中的宽寄存器组(WRS)12的框图。WRS 12可以被用在需要处理正常宽度的数据和一定量的较宽宽度的数据的任何处理设备中。WRS 12包括宽寄存器堆32,该宽寄存器堆32包括每个都比主寄存器堆24中的寄存器宽的多个宽寄存器。
主寄存器堆24被用于PPE 110中最主要的操作,并且宽寄存器堆32被用于访问某些数据结构并执行不能在主寄存器堆24中被高效处理的特定操作。WRS 12还包括宽算术逻辑单元(ALU)34,其对不能被主ALU26高效地执行的宽寄存器堆32中的内容进行宽逻辑操作。例如,宽ALU34可以对宽寄存器堆32中的不同字段或子字段执行多个并行的逻辑操作。
宽寄存器堆32中的寄存器通过按其本身的大小一次性读取大型数据结构,极大地减少了访问主存储器115的成本。宽ALU 34中的硬件基元随后可以对宽寄存器堆32中的条目执行操作,其处理成本是主ALU 26的处理成本的几分之一。WRS 12的这些特征极大地提高了传统的基于软件的分组处理系统的性能。
PPE 110包括操作多个线程52的中央处理单元(CPU)核心50。在这个实施例中,每个线程52具有相关联的数据缓存(DCACHE)54,其包括标签和缓存控制器54A,并且共享DCACHE数据阵列54B。线程52还共享相同的指令缓存(ICACHE)56。其它缓存配置也是可能的,其中线程52都访问相同的DCACHE 54,或者每个线程具有单独的ICACHE 56。DCACHE 54和ICACHE 56都可以通过资源互连108访问主存储器115和全局分组存储器(GPM)104。
在一个实施例中,ICACHE 56也可以通过L-2缓存112访问主存储器115,并且DCACHE 54可以直接访问主存储器115。当然,其它存储器配置也是可能的,其中DCACHE 54通过L-2缓存112访问主存储器115,或者ICACHE 56直接访问主存储器115。
图2更详细地示出了WRS 12。在一个示例中,主寄存器堆24包括32×32位宽的寄存器,并且宽寄存器堆32包括16×512位宽的寄存器。但是,这只是一个示例,并且可以使用任意数目或具有任何位长的寄存器。
线程52(图1)之一根据优选地每个线程的程序计数器18来启动指令获取14。依照指令获取14,来自ICACHE 56的指令被CPU核心50(图1)解码、排队并分派到指令队列22中。解码后的指令21和相关联的线程标识符23随后被用于控制主寄存器堆24或宽寄存器堆32中的操作。
根据解码后的指令21,主ALU 26可以针对主寄存器堆24中的数据或指令产生地址、执行支路解析等。主寄存器堆24中的内容可以经数据缓存54通过线路30从主存储器115载入,或者可以来自指令队列22。可替代地,主寄存器可以直接从主存储器115载入。来自主ALU 26的结果随后被经数据缓存54输出到主存储器115,或者被发送回主寄存器堆24以进一步处理。
被发送给宽WRS 12的解码后的指令21被用于控制对宽寄存器堆32中的内容执行的逻辑操作。WRS 12可以一次性将整个宽数据结构31从主存储器115读到宽寄存器堆32中。宽寄存器缓存35可以可选地被提供用于缓存来自主存储器115(图1)的数据。宽ALU 34处理宽寄存器堆32中的内容,并且随后将结果发送到主存储器115或者发送回宽寄存器堆32以进一步处理。宽ALU 34包括可以被用于加快特定的分组处理操作(例如调度)的专用的硬件基元。
数据路径25被提供在主寄存器堆24和宽ALU 34之间。这允许宽ALU 34将来自WRS 12中的宽寄存器操作的结果发送给主寄存器堆24以完成可以由主ALU 26高效地处理的某些判决、排列、掩码任务等。数据路径25还允许主寄存器堆24中的内容(或者其部分内容)被移到宽寄存器堆32的一部分中。
图2中的不同元件可以针对由图1中的PPE 110操作的每个线程52进行复制。例如,存在与每个线程52相关联的一个或多个宽寄存器32A-32N。每个宽寄存器32A-32N具有字段33,该字段33包含用于相关联的线程52的线程标识符。也可以存在针对每个线程52的单独的程序计数器18、指令队列22、数据缓存54和主寄存器堆24。其它元件(例如ICACHE 56、主ALU 26、宽ALU 34和宽寄存器缓存35)可以被由同一PPE 110操作的所有线程52共享。当然,存在可以针对不同的分组处理应用而变化的设计选择。
分组调度
用于调度分组的控制结构可能非常大且复杂。例如,最小速率、最大速率和过大速率可能与不同的分组流相关联。每个分组可以具有用于确定分组处理器的操作顺序的这些和其它相关联的参数,例如时间戳、优先级字段等。每当分组被调度算法所选择时,所有这些状态信息都要被更新。如果分组处理器使用基于分层树的调度算法,则在每次分组选择之后,这个控制结构必须针对树结构中的每一层被更新。自然地,这些调度操作是处理密集型的。
WRS 12可以被配置为高效地处理这些处理密集的调度操作中的一些。另外,宽寄存器堆32允许调度数据结构中不同的大小不固定的字段同时从主存储器115被载入相同的宽寄存器堆32中。这样就不需要单独地顺序将大小不固定的数据载入主寄存器堆24中并且随后将空值填入未使用的寄存器位中。宽ALU 34随后可以比主ALU 26更快速地对被载入宽寄存器堆32中的数据结构进行操作。宽ALU 34可以对这些调度任务进行操作,同时使用主ALU 26并行地执行其它分组处理任务。
还应当注意,包含WRS 12的PPE 110或使用WRS 12进行诸如调度之类的操作的其它处理器配置可以不同于用于其它主要分组处理的其它PPE 110。调度PPE 110或使用WRS 12的其它调度处理器配置可以具有不同的结构、到主存储器115的不同路径,或者可以使用不同于用于主要分组处理的PPE 110的主存储器。WRS 12可以与需要宽寄存器操作的主分组处理器或调度处理器中的任一个结合使用。
硬件基元
图3示出了可以实现在宽ALU 34中以加快调度操作的硬件基元中的一些的一个示例。宽寄存器堆32中的宽寄存器32A可以加载有调度数据结构的一部分,该调度数据结构具有与不同类型的调度数据相关联的多个字段60。在该示例中,每个字段60与存储在分组处理器中的调度队列中的不同分组相关联。可以存在任意数目N的字段60。字段60中的值被用在调度算法中以确定接下来由线程52处理哪些分组或者接下来调度哪些分组以在网络130(图5)上传送。
在该示例中,字段60分别包括关键字/类型子字段62和时间戳子字段64。子字段62或64中的值在调度操作期间可能需要被分类以确定进行处理或从分组处理器输出的下一个分组。关键字子字段62可以标识相关联的分组的类别。例如,关键字子字段62可以标识高优先级分组,低优先级分组或针对特定群组的最小速率分组条目等。时间戳子字段64可以与分组已被排队在分组处理器中的相对时间量相关联。
在该示例中,在关键字字段62中具有最小值的分组可以比具有较大关键字值的分组具有更高的调度优先级。在时间戳子字段64中具有最小值的分组可以比在时间戳子字段64中具有较大值的分组具有更高的调度地位。在该示例中,时间戳子字段64和关键字子字段62中的值的组合被用于确定进行调度操作的下一个相关联的分组。
宽ALU 34中的逻辑基元65包括识别关键字子字段62中的最小关键字值的比较器66。另一比较器68识别时间戳子字段64中的最小时间戳值。控制逻辑70根据从比较器66接收的最小关键字值和从比较器68接收的最小时间戳值确定字段60之一中的获胜关键字和时间戳的组合。控制逻辑70经被连接到每个关键字子字段62和时间戳子字段64的多路复用器72选择获胜的关键字/时间戳对。类似地,控制逻辑70经多路复用器74选择与被选择的关键字和时间戳值71相关联的索引73。
然后,获胜的关键字和时间戳值71与相关联的索引值73一起可以由宽ALU 34发送回宽寄存器堆32以进一步更新或者进行进一步的调度判决。注意,来自宽ALU 34的结果71和73也可以被发送给主寄存器堆24以进一步处理。这允许可以在主寄存器堆24中由主ALU 26高效处理的特定操作与WRS 12所执行的宽寄存器操作相互混合。这进而给调度操作增加了硬件和软件的灵活性。
在一个典型的操作中,主ALU 26和主寄存器堆24被用于寻址存储器以找到主寄存器堆24和宽寄存器堆32。当主ALU 26和主寄存器堆24是最佳的存储器寻址操作时,这可能会更加有效。
分类基元65提供存储在宽寄存器32A中的分类数据结构中的分类、更新等所需要的逻辑功能。宽寄存器32A的较大位长允许所有不同的字段60和子字段62和64一次性地从主存储器115中更高效地读取。例如,关键字子字段62中的值可以是5位宽的,而时间戳子字段64中的值可以是14位宽的。所有这些不同的子字段可以同时被载入宽寄存器32A中,而不需要每个字段被单独载入例如32位宽的主寄存器堆24中,并且随后被掩码并移位以适应5位或14位。
当然,这只是一个示例,并且其它逻辑基元65也可以被包括在宽ALU 34中。例如,宽ALU 34也可以包括移位操作78,其可以被用于加快对宽寄存器32A中的数据结构中的不同字段的更新。宽ALU 34中的其它基元可以包括速率更新基元,其根据相关联分组的大小和数据速率来更新时间戳值。其它插入和提取基元可以被用于从主寄存器堆24中提取任意边界上的数据并将该数据插入宽寄存器堆32中的不同字段中。例如,插入和提取基元命令可以包括以下命令:
INSERT MainReg 3=>WideReg 2[17:48];
EXTRACT WideReg 7[13:19]=>MainReg 12
插入命令将32位主寄存器3的内容载入宽寄存器2中的比特位置17:48内。提取命令将宽寄存器7中的比特位置13:19的内容载入主寄存器12的最低七位比特位置中。
如上所述,需要少量计算的操作可以仍由主ALU 26来执行。这提供了改变某些调度操作所必需的灵活性,同时仍然可加快WRS 12中的处理以用于强力基元操作。宽ALU 34中的硬件基元被优选地设计为普通的,并且不强加任何处理算法。
例如,在图3的WRS 12中实现的分类基元可以固定用于被分类的每个条目的类型/关键字子字段62和时间戳子字段64的大小,但是不限定类型/关键字子字段62的意义或管理时间戳更新的规则。固定时间戳子字段64的大小只决定了速率准确性、粒度和范围这些不可能随时间有很大改变的参数。可以使子字段62和64足够大以适应所预期的和将来的使用。
宽寄存器互锁
可能需要防止多个线程同时访问相同的宽寄存器数据结构。例如,分组处理器不能使两个入队(enqueue)(或者甚至是入队和出队(dequeue))同时更新相同的调度条目。对于大多数情况,CPU核心50(图1)对数据结构进行操作所需要的时间很短,并且主存储器115的延迟很大。因而,也可能需要使得线程能够访问宽寄存器32中先前被另一线程所使用的数据结构,而不需要等待另一线程将内容载回到主存储器115中。
WRS 12可以可选地维护互锁系统,互锁系统跟踪主存储器115中的当前在宽寄存器堆32中被特定线程使用的地址。向主存储器115的宽寄存器读取可以被“锁定”(放入记分板)或不被锁定(允许多线程读取)。如果第二线程52试图读取被锁定的地址位置,则向主存储器115的读取被抑制并且相反地被添加到链路-列表表格中。
当第一线程52写回主存储器地址时,数据可以被直接发送到与第二等待线程52相关联的宽寄存器32。这可以停止试图读取已被使用的宽寄存器存储器地址的任何线程,但是一旦第一线程释放该地址,就将使等待线程得到宽寄存器的更新后的内容。这可以提供比等待主存储器115更短的延迟,并且允许针对不同CPU核心50的操作并行地进行并且只根据需要进行阻断。
图4示出了互锁机构如何结合WRS 12使用以进一步提高处理效率。宽寄存器堆内容可寻址存储器(WRF CAM)80包含用于主存储器115(图1)中当前在宽寄存器堆32中被使用的数据的地址。在一种实现方式中,对于每个宽寄存器32,CAM 80中存在可用的一个条目。如果例如每个线程有16个宽寄存器,则CAM 80将具有的条目数是线程数的16倍。当然,这只是一个示例,也可以使用其它配置。
CAM 80中的每个条目存储特定的宽寄存器32可能拥有(锁定)的主存储器地址。例如,宽寄存器读操作81首先访问CAM 80。如果在CAM80中没有找到读操作81中的宽寄存器地址,则与读操作81相关联的线程52将数据返回到与该线程相关联的宽寄存器32。例如,每个宽寄存器32可具有相关联的线程标识符33(图2)。从主存储器115读取的内容被存储在与发起读操作81的线程52相对应的宽寄存器堆32中。
线程52通过将用于读操作81的地址输入到CAM 80中未被使用的条目来建立锁定数据结构。然后,索引表格84被用于将CAM 80所产生的命中索引映射到与当前使用该地址的寄存器/线程相关联的链路-列表表格86中的条目。
更详细地说,第一宽寄存器/线程X可能当前正在访问主存储器115中的特定地址1。另一宽寄存器/线程Y可能试图访问主存储器115中的相同地址_1。第一宽寄存器/线程X先前将地址_1输入到CAM 80的条目3中。当寄存器/线程Y试图读取地址_1时,在CAM 80的条目3中发生匹配。CAM 80将命中索引83输出到索引表格84。
索引表格84的输出85指向当前寄存器/线程X所拥有的链路-列表表格86中的条目91。第二宽寄存器/线程Y将指针PTR_Y输入到链路-列表表格86中的条目91的下一字段87。指针PTR_Y指向宽寄存器/线程Y所拥有的链路-列表表格86中的条目93。在完成了对地址_1的处理之后,宽寄存器/线程X可以改变索引表格84以使命中索引83指向寄存器/线程Y的链路-列表表格86中的条目93。这表明寄存器/线程Y目前“拥有”存储器地址_1。一旦宽寄存器/线程X释放了对地址_1的控制,宽寄存器/线程Y就可以自由地将宽寄存器X的内容拷贝到宽寄存器Y中。
第三宽寄存器/线程Z可能在寄存器/线程X仍然拥有地址_1时试图访问相同地址1。宽寄存器/线程Z将看到链路-列表表格86中已经被寄存器/线程条目Y所占据的条目91的下一字段87。因此,宽寄存器/线程Z将相关联的指针PTR_Z输入条目91的尾字段88中,并且将相同的指针PTR_Z输入到条目93的下一字段87中。对于访问相同地址_1的每个额外的宽寄存器/线程,重复上述过程。
使用与表格84和86相映射的第二级索引提供了更快的指针更新,而无需修改CAM 80中的条目。例如,在宽寄存器/线程X结束使用地址_1之后,索引表格84中针对命中索引83的指针PTR_X可以被变为指向PTR_Y。链路-列表表格86目前被更新,将地址_1的所有者变为宽寄存器/线程Y,而无需修改CAM 80的内容。这提供了更快的互锁更新,因为访问CAM 80相对较慢。
图5示出了实现WRS 12的多线程分组处理器100的一个示例。分组101被分组处理器100接收,并且通常经多路复用器102存储在全局分组存储器(GPM)104中。在接收到分组之后,GPM 104建立相关联的分组句柄数据结构,并且随后将分组加入到由锁定管理器和重定序器120操作的流锁定队列中。在接收到来自锁定管理器120的回复之后,GPM 104指示分发器106将分组101分配到分组处理元件(PPE)110。
PPE 110通过资源互连108处理GPM 104中的分组。PPE 110也可以使用第2级(L2)缓存112、动态随机访问存储器(DRAM)控件114和查找控件116来访问外部存储器115。外部的三重内容可寻址存储器(TCAM)119也可以由PPE 110通过资源互连108和TCAM控制器118来访问。在一个实施例中,PPE 110是多线程的。但是,下面所描述的一些特征可以用具有或不具有多线程能力的任何普通的处理单元来执行。
PPE 110在它们已经完成了处理分组时通知锁定管理器120。PPE 110随后可自由地开始处理其它分组。在被PPE 110处理之后,分组继续留在GPM 104中,并且可以以离散的不相邻的形式存储在GPM 104中。汇集机构122负责将分组离散的部分重新汇集和组装在一起。锁定管理器120与汇集机构122一起工作来确定被组装的分组123从GPM 104发送的最终顺序。
在以上示例中,PPE 110可以使用WRS 12执行缓冲、排队和调度操作中的一些或全部。但是在替代实施例中,缓冲、排队、调度(BQS)存储器控制器124对分组进行排队、调度和使分组出队,从而使PPE 110不用负担这个耗时的任务。在该替代实施例中,BQS 124可以具有类似于图1中的上述PPE但不同于用于正常分组处理的分组处理元件110的经修改的PPE。在另一实施例中,BQS 124可以只具有如上所述采用WRS 12的一个或多个CPU核心50(图1)。
外部存储器125被BQS 124用作分组缓冲器,用于存储不同的到达和主处理操作之间的分组等等。再循环路径132被BQS 124用于将分组重新循环回GPM 104以由PPE 110进一步处理。可替代地,WRS 12可以被实现在BQS 124中。
图1中所示的PPE 110的通用多线程体系结构包括如图2中所示的一组主通用寄存器和接在主寄存器组的一侧上的专用宽寄存器组12。提供指令以将正常宽度的数据片段(例如具有任意排列的32位长)移到宽寄存器和通用寄存器之间。在替代实施例中,BQS 124可以包含利用宽寄存器组12来执行某些调度任务的一个或多个CPU核心50。
提供了用于对宽寄存器进行专用硬件辅助操作的指令,例如将去往/来自主存储器115的宽寄存器载入并存储在宽位长单元中的专用存储器访问指令。注意,整个宽寄存器不一定都被使用。图4中的上述跟踪逻辑可以被用于指示宽寄存器的哪些部分是“脏的”(修改过的)并且需要被写回到主存储器115中。
提供对主存储器115的非常宽的访问(例如一次访问16字节或32字节的缓存线)的存储器系统在很大程度上辅助了宽寄存器组12。对存储器的并行访问允许多个突出(outstanding)操作。可选地,图2中所示的宽寄存器缓存35允许更快地获得被频繁访问的宽寄存器位置。这对于高速调度来说是有用的,因为它们的数据具有较低的延迟,导致用于处理它们的重复速率较低。
就芯片面积而言,WRS体系结构12使用了分组处理器100的芯片面积中的很小一部分。其足够小以使得调度子系统可以被结合在很多地方。最后,因为可以使用廉价/较慢的“体”存储器(例如DRAM),所以对这种体系结构的可缩放能力的限制很少。只有对基于存储器的延迟和并行调度可以被使用的程度的性能的限制。
WRS 12可以被用于实现和提高几乎任何调度算法的性能,包括日历、分类树、令牌桶、分层排队构架(HQF)、模块化QoS CLI(MQC)、优先级传播等。宽寄存器可以实现用于分层调度器的硬件分类辅助或用于更传统的基于互联网操作系统(IOS)日历的方法的日历辅助。可以实现各种其它硬件辅助,例如速率更新。存在很多备用方式来构建宽寄存器自身以及宽寄存器缓存35。
各种其它硬件辅助,例如控制分组缓冲器的直接存储器访问(DAM)读/写的能力,使得同一微引擎处理入队/出队过程以及调度过程。宽寄存器组12的宽度和对它们进行操作的硬件基元的细节可以针对特定的实现方式进行裁剪。实现方式不必是多线程的,或者多线程可以用各种方式实现。
上述系统可以使用执行一些或全部操作的专用处理器系统、微控制器、可编程逻辑器件或微处理器。上述操作中的一些可以用软件来实现,并且其它操作可以用硬件来实现。
为了方便,操作被描述为各个互相连接的功能块或者不同的软件模块。但是,这不是必需的,并且可能存在这些功能块或模块被等同地汇集到没有清楚边界的单一逻辑器件、程序或操作中的情形。在任何情况下,灵活接口的功能块和软件模块或特征都可以在硬件或软件中由其自身实现或者结合其它操作来实现。
已经在本发明的优选实施例中描述并示出了本发明的原理,应当清楚在不脱离这些原理的情况下,可以在布置和细节方面修改本发明。申请人要求所有的修改和改变都落在所附权利要求书的精神和范围内。
Claims (23)
1.一种宽寄存器处理单元,包括:
宽寄存器组,所述宽寄存器组被配置为响应于指令并且包含具有比主寄存器组中所支持的位长更宽的位长的数据;以及
宽处理单元,所述宽处理单元被配置为对所述宽寄存器组中的内容执行逻辑操作,并且与用于处理所述主寄存器组中的内容的主处理单元相独立地操作。
2.根据权利要求1所述的处理单元,包括指令队列,该指令队列选择性地将解码后的指令发送给所述宽寄存器组和所述主寄存器组。
3.根据权利要求1所述的处理单元,其中所述宽寄存器组包括具有不同的相关联的线程标识符的各个宽寄存器。
4.根据权利要求1所述的处理单元,其中来自所述主寄存器组的输出被耦合到所述主处理单元和所述宽处理单元,并且所述宽处理单元的输出被耦合到所述主寄存器组和所述宽寄存器组。
5.根据权利要求4所述的处理单元,包括被耦合在主存储器和所述宽寄存器组之间的宽寄存器缓存。
6.根据权利要求1所述的处理单元,包括中央处理核心,该中央处理核心通过多个不同的线程控制所述主寄存器组和所述宽寄存器组。
7.根据权利要求1所述的处理单元,其中所述宽寄存器组中的宽寄存器包括多个字段,这些字段包含与不同的相关联分组相关联的值。
8.根据权利要求7所述的处理单元,其中所述多个字段各自包含子字段,这些子字段用来存储用于执行分组调度操作的分组标识符和分组时间戳。
9.根据权利要求8所述的处理单元,其中所述宽处理单元包括逻辑处理元件,这些逻辑处理元件并行地操作以对所述子字段中的分组标识符和分组时间戳分类。
10.根据权利要求1所述的处理单元,包括互锁机构,该互锁机构提供对不同线程和相关联的宽寄存器所使用的相同存储器位置的有序的排他访问。
11.根据权利要求10所述的处理单元,其中所述互锁机构包括内容可寻址存储器(CAM),该内容可寻址存储器包含当前正被所述线程和所述相关联的宽寄存器访问的地址。
12.一种用于在分组处理器中执行宽寄存器堆操作的方法,包括:
向主寄存器组发送与第一组主逻辑操作相关联的指令,以使用主逻辑单元处理数据;以及
向宽寄存器组发送与第二组宽位长的逻辑操作相关联的指令,以使用宽逻辑单元进行处理。
13.根据权利要求12所述的方法,包括与所述指令一起发送线程标识符以标识所述宽寄存器组中的特定寄存器。
14.根据权利要求12所述的方法,包括利用所述宽逻辑单元并行地处理所述宽寄存器中的不同字段。
15.根据权利要求12所述的方法,使用宽寄存器缓存来存储被所述宽寄存器组或所述宽逻辑单元访问的数据。
16.根据权利要求12所述的方法,包括:
标识第一线程和第一相关联的宽寄存器当前使用的地址;
禁止所有其它线程使用相同的地址;以及
在所述第一线程完成了对所述相关联的第一宽寄存器中的内容的处理之后,允许其它线程和其它相关联的宽寄存器访问所述地址。
17.根据权利要求16所述的方法,包括使用链接-列表表格来标识等待访问所述相同地址的多个线程,并且在当前线程完成了对所述相同地址的访问之后更新所述链接-列表表格以指向所述等待线程中的下一个线程。
18.根据权利要求12所述的方法,包括:
操作分组处理元件中的多个线程以处理分组;
执行调度所述分组的处理和输出的调度操作;
向所述宽寄存器组发送与所述调度操作相关联的指令和数据;以及
将来自所述宽寄存器组的结果发送到所述主寄存器组以完成所述调度操作。
19.一种网络处理设备,包括:
操作处理分组的一个或多个线程的一个或多个处理元件;
被所述线程用来对所述分组执行主要的逻辑操作的主寄存器组和主算术单元;以及
具有比所述主寄存器组更宽的位长的宽寄存器组和用于对包含在所述宽寄存器组中的数据执行第二组操作的宽算术单元。
20.根据权利要求19所述的网络处理设备,包括使用所述宽寄存器组和所述宽算术单元来执行用于确定接下来由所述网络处理设备处理或传送哪些分组的调度操作。
21.根据权利要求19所述的网络处理设备,包括互锁机构,该互锁机构控制不同线程对与所述宽寄存器组中的数据相关联的相同地址的访问。
22.一种用于在分组处理器中执行宽寄存器堆操作的系统,包括:
用于向主寄存器组发送与第一组主逻辑操作相关联的指令以使用主逻辑单元处理数据的装置;以及
用于向宽寄存器组发送与第二组宽位长的逻辑操作相关联的指令以使用宽逻辑单元进行处理的装置。
23.根据权利要求22所述的系统,包括:
用于标识第一线程和第一相关联的宽寄存器当前使用的地址的装置;
用于禁止所有其它线程使用相同地址的装置;以及
用于在所述第一线程完成了对所述相关联的第一宽寄存器中的内容的处理之后允许其它线程和其它相关联的宽寄存器访问所述地址的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/071,660 US7676646B2 (en) | 2005-03-02 | 2005-03-02 | Packet processor with wide register set architecture |
US11/071,660 | 2005-03-02 | ||
PCT/US2006/005231 WO2006093662A2 (en) | 2005-03-02 | 2006-02-14 | Packet processor with wide register set architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101194245A true CN101194245A (zh) | 2008-06-04 |
CN101194245B CN101194245B (zh) | 2010-10-27 |
Family
ID=36941606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800040553A Expired - Fee Related CN101194245B (zh) | 2005-03-02 | 2006-02-14 | 具有宽寄存器组体系结构的分组处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7676646B2 (zh) |
EP (1) | EP1854015B1 (zh) |
CN (1) | CN101194245B (zh) |
WO (1) | WO2006093662A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108140232A (zh) * | 2015-06-10 | 2018-06-08 | 无比视视觉技术有限公司 | 用于处理图像的图像处理器和方法 |
CN110580231A (zh) * | 2018-06-08 | 2019-12-17 | 龙芯中科技术有限公司 | 处理电路、缓冲器、存储器及处理器 |
US11178072B2 (en) | 2015-06-10 | 2021-11-16 | Mobileye Vision Technologies Ltd. | Image processor and methods for processing an image |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160098279A1 (en) * | 2005-08-29 | 2016-04-07 | Searete Llc | Method and apparatus for segmented sequential storage |
US8099448B2 (en) | 2005-11-02 | 2012-01-17 | Qualcomm Incorporated | Arithmetic logic and shifting device for use in a processor |
CA2642022A1 (en) * | 2006-02-03 | 2007-08-16 | Russell H. Fish, Iii | Thread optimized multiprocessor architecture |
US8984256B2 (en) | 2006-02-03 | 2015-03-17 | Russell Fish | Thread optimized multiprocessor architecture |
US8677078B1 (en) * | 2007-06-28 | 2014-03-18 | Juniper Networks, Inc. | Systems and methods for accessing wide registers |
US8139488B2 (en) * | 2008-05-30 | 2012-03-20 | Cisco Technology, Inc. | Cooperative flow locks distributed among multiple components |
US8412856B2 (en) * | 2009-10-26 | 2013-04-02 | Sony Computer Entertainment America Llc. | File input/output scheduler using immediate data chunking |
US8677050B2 (en) | 2010-11-12 | 2014-03-18 | International Business Machines Corporation | System, method and computer program product for extending a cache using processor registers |
WO2013100783A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for control signalling in a data path module |
US8966132B2 (en) | 2012-11-16 | 2015-02-24 | International Business Machines Corporation | Determining a mapping mode for a DMA data transfer |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US8984179B1 (en) | 2013-11-15 | 2015-03-17 | International Business Machines Corporation | Determining a direct memory access data transfer mode |
KR102174337B1 (ko) | 2014-04-08 | 2020-11-04 | 삼성전자주식회사 | 메모리 시스템 및 이를 포함하는 전자 장치 |
US20170034055A1 (en) * | 2015-07-28 | 2017-02-02 | Futurewei Technologies, Inc. | Handling Consumer Mobility in Information-Centric Networks |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10698686B2 (en) | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10552070B2 (en) | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10761983B2 (en) * | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
US10871992B2 (en) * | 2018-05-30 | 2020-12-22 | Texas Instruments Incorporated | Level two first-in-first-out transmission |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10459866B1 (en) * | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5928356A (en) * | 1997-10-11 | 1999-07-27 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for selectively controlling groups of registers |
US6157955A (en) * | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
WO2001090227A1 (en) | 2000-05-23 | 2001-11-29 | Idemitsu Petrochemical Co., Ltd. | Film |
US7103008B2 (en) * | 2001-07-02 | 2006-09-05 | Conexant, Inc. | Communications system using rings architecture |
GB2382676B (en) | 2001-10-31 | 2005-09-07 | Alphamosaic Ltd | Data access in a processor |
US20040068607A1 (en) * | 2002-10-07 | 2004-04-08 | Narad Charles E. | Locking memory locations |
US7240164B2 (en) * | 2003-08-14 | 2007-07-03 | Intel Corporation | Folding for a multi-threaded network processor |
US8484441B2 (en) | 2004-03-31 | 2013-07-09 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths |
US20060143415A1 (en) * | 2004-12-29 | 2006-06-29 | Uday Naik | Managing shared memory access |
-
2005
- 2005-03-02 US US11/071,660 patent/US7676646B2/en not_active Expired - Fee Related
-
2006
- 2006-02-14 EP EP06735074.4A patent/EP1854015B1/en active Active
- 2006-02-14 CN CN2006800040553A patent/CN101194245B/zh not_active Expired - Fee Related
- 2006-02-14 WO PCT/US2006/005231 patent/WO2006093662A2/en active Application Filing
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108140232A (zh) * | 2015-06-10 | 2018-06-08 | 无比视视觉技术有限公司 | 用于处理图像的图像处理器和方法 |
US11178072B2 (en) | 2015-06-10 | 2021-11-16 | Mobileye Vision Technologies Ltd. | Image processor and methods for processing an image |
US11294815B2 (en) | 2015-06-10 | 2022-04-05 | Mobileye Vision Technologies Ltd. | Multiple multithreaded processors with shared data cache |
CN108140232B (zh) * | 2015-06-10 | 2022-05-24 | 无比视视觉技术有限公司 | 用于处理图像的图像处理器和方法 |
CN110580231A (zh) * | 2018-06-08 | 2019-12-17 | 龙芯中科技术有限公司 | 处理电路、缓冲器、存储器及处理器 |
CN110580231B (zh) * | 2018-06-08 | 2022-03-25 | 龙芯中科技术股份有限公司 | 处理电路、缓冲器、存储器及处理器 |
Also Published As
Publication number | Publication date |
---|---|
EP1854015A2 (en) | 2007-11-14 |
US7676646B2 (en) | 2010-03-09 |
WO2006093662A2 (en) | 2006-09-08 |
CN101194245B (zh) | 2010-10-27 |
EP1854015A4 (en) | 2009-03-04 |
EP1854015B1 (en) | 2013-05-08 |
WO2006093662A3 (en) | 2007-12-27 |
US20060200647A1 (en) | 2006-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101194245B (zh) | 具有宽寄存器组体系结构的分组处理器 | |
US10838787B2 (en) | Processing system with interspersed processors with multi-layer interconnect | |
US8194690B1 (en) | Packet processing in a parallel processing environment | |
US9934010B1 (en) | Programming in a multiprocessor environment | |
US8516280B2 (en) | Parallel processing computer systems with reduced power consumption and methods for providing the same | |
CN100557594C (zh) | 数据处理器的状态引擎 | |
US8620940B1 (en) | Pattern matching | |
US7664938B1 (en) | Semantic processor systems and methods | |
KR20190044571A (ko) | 칩 밖으로 데이터 송신하기 | |
US20070271556A1 (en) | Building a wavecache | |
JPH08511886A (ja) | 待ち時間が可変の、プロセッサをメモリに接続する相互接続ネットワーク | |
JP2004536373A (ja) | データ処理方法およびデータ処理装置 | |
Fernandes et al. | Processing while routing: a network-on-chip-based parallel system | |
Sterling et al. | The “MIND” scalable PIM architecture | |
Vidovic et al. | Designing systems for highly parallel and distributed computing |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101027 Termination date: 20220214 |