CN1188794C - 到一个共享的协处理器资源的多个逻辑接口 - Google Patents
到一个共享的协处理器资源的多个逻辑接口 Download PDFInfo
- Publication number
- CN1188794C CN1188794C CNB011324570A CN01132457A CN1188794C CN 1188794 C CN1188794 C CN 1188794C CN B011324570 A CNB011324570 A CN B011324570A CN 01132457 A CN01132457 A CN 01132457A CN 1188794 C CN1188794 C CN 1188794C
- Authority
- CN
- China
- Prior art keywords
- coprocessor
- clue
- data
- processor
- interface
- 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
- 238000011022 operating instruction Methods 0.000 claims abstract 2
- 239000000872 buffer Substances 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 28
- 238000012795 verification Methods 0.000 claims description 24
- 238000013500 data storage Methods 0.000 claims description 17
- 230000000694 effects Effects 0.000 claims description 9
- 230000001934 delay Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 4
- 239000002131 composite material Substances 0.000 claims 2
- 230000009977 dual effect Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 18
- 238000007726 management method Methods 0.000 description 11
- 230000015572 biosynthetic process Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000003491 array Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000001276 controlling effect Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 3
- 239000004615 ingredient Substances 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 244000182264 Lucuma nervosa Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011284 combination treatment Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003449 preventive effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7864—Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
Abstract
一个嵌入式的处理器组合含有多个协议处理器单元(PPU)。每个单元包括至少一个,而最好是两个独立运行的核心语言处理器(CLP)。每个CLP支持通过逻辑协处理器的执行或数据接口与用于每个PPU的多个专用的协处理器相互作用的双线线索。操作指令启动PPU识别长与短等待时间的事件并根据这一识别控制与转移线索执行的优先权。该指令还根据某些特定事件的出现与未出现,启动特定协处理器操作的条件执行。
Description
技术领域
本发明涉及网络处理器系统领域,更详细讲,涉及含有一个或多个协议处理器单元(PPU)的一个嵌入式处理器组合(complex)。在该处理器系统中通过把PPU与协处理器(coprocessor)连接起来以便在它们中传输数据与指令的接口使用多个与PPU相关的协处理器。
背景技术
使用协议处理器单元提供与控制一个网络处理器的程序设计能力是众所周知的。同样,在设计一个计算计系统处理复杂结构中与PPU一起使用协处理器也是公认的。在对要求实时处理的处理事件中的延迟是直接影响系统性能的一个问题。通过为一个特定的协处理器指定一项任务,而不是要求PPU去执行该项任务,能够提高一个计算机系统的效率与性能。对于PPU而言,重要的是通过有效的方式与协处理器进行通信。这种通信的持续改进一直处于不断的探索之中。
发明内容
本发明的一个目的是使用包括一个或多个核心语言处理器(CLP)而其中每个均有多个线索(threads)并通过一个逻辑协处理器接口对特殊任务协处理器发布指令的协议处理器单元(PPU)。
另一个目的是使用多逻辑协处理器接口(从一个程序设计员的角度来看)来访问一个共享的协处理器资源。在某些情况下该协处理器资源由一个PPU内的多个处理线索共享,而在其它情况下一个单个的协处理器资源由多个PPU共享。
本发明的又一个目的涉及在一个PPU和它的协处理器之间的接口处启动的特定操作。这一操作是有条件地执行协处理器指令的能力。这对计数器协处理器尤其有用,但是通常也可用于其它的协处理器。该协处理器接口有能力根据对一条特定的协处理器命令的预期的响应时间来鉴别长等待时间事件与短等待时间事件。因此这种识别被用于对线索执行的优先权进行控制。
本发明还有一个目的是能比其它已知的协处理器接口提供更大的灵活性与效率的一个协处理器接口。
通过下面更详细描述的方式这些和其它的目的均可实现。
描述对一个网络处理器的程序设计能力进行控制的一个嵌入式处理器组合(processor complex)的操作。该处理器组合包括多个协议处理器单元(PPU),每个协议处理器单元包括一个或多个核心语言处理器(CLP)。每个CLP有多条代码线索。每个PPU使用多个协处理器为PPU执行特定任务。该组合使用多个逻辑协处理器接口访问一个与CLP共享的协处理器资源。特定的操作指令由CLP执行导致命令被送往协处理器。这些指令一方面用于启动特定协处理器指令的有条件的执行。该指令能够根据对一个具体的协处理器命令的预期的响应时间来识别长等待时间事件(long latency events)与短等待时间事件(shortlatency events)。这就允许该组合根据所处理的等待时间事件的时间长度与类型把控制从一条线索转移到另一条线索。
附图说明
图1.是一个总体方块图,展示了具有两个核心语言处理器与协处理器的一个协议处理单元;
图2.展示了与协处理器接口的两个核心语言处理器的一个协议处理器单元的方块图;
图3.展示一个核心语言处理器与选定的协处理器之间的一个接口的方块图;
图4.描绘一个协处理器执行接口和把一个核心语言处理器与多个协处理器连接起来的一个协处理器数据接口;
图5a、5b、5c和5d图解了协处理器执行指令的格式;以及
图6A和6B图解了协处理器等待指令的格式。
具体实施方式
本发明将用提供并控制一个网络处理器的程序设计能力的一个嵌入式处理器组合这一术语来描述。一个该组合的实现典型地包括与硬件加速器一起工作的八个主处理单元或协议处理器单元(PPU),来支持高速模式查询、数据操纵(manipulation)、内部芯片管理功能、帧解析、和数据预取(prefetching)。每个PPU包括以下结构部件:两个CLP;至少一个,而最好是几个专用的和/或共享的协处理器单元和该主处理单元与每个协处理器单元之间的一个接口。
每个协处理器单元能执行特定的网络任务。主处理单元执行在一个储存的程序中的一系列的指令。每个协处理器单元能对所述主处理单元作出响应并适于在该主处理单元的控制下有效地执行特定任务。主处理单元与每个协处理器单元之间的接口实现一个或多个下述功能:每个协处理器单元的配置;由每个共用处理单元完成的特定任务的初始化;访问与每个协处理器单元相关的状态信息;以及提供用于返回与由每个协处理器单元完成的特定任务相关的结果的方法。主处理单元和协处理器单元各包括一个或多个特殊用途寄存器。该接口能够从所述主处理单元及协处理器单元把专用寄存器映射到一个公用地址映射。
每个PPU包括一个或多个核心语言处理器(CLP)和几个专用的协处理器。当PPU包括多个CLP时,协处理器在CLP中共享。
每个CLP包括一个算法逻辑单元(ALU)并支持对于每个PPU总共有四条线索的两条代码线索。CLP和协处理器含有包括标量寄存器和阵列寄存器在内的特殊用途寄存器的独立的拷贝。某些协处理器包括对协处理器命令从CLP向该协处理器的阵列或标量寄存器的转移进行调节的FIFO缓冲器。一个CLP一次只执行一条线索命令。对于一个程序员而言,每条线索均有其自己的协处理器或协处理器组的外部特征。大部分协处理器都执行专门的功能并且相互之间能够同时操作而且也能与CLP同时操作。
对PPU的控制存储典型地由内部及外部存储器两者提供。例如,内部SRAM可用于即时访问;外部ZBT SRAM用于快速访问;而外部DDR SDRAM则用于大存储容量的要求。
图1示出了维护一个数据接口(14)和一个执行接口(16)和几个协处理器的一个协议处理器单元(PPU)(10),这几个协处理器包括一个树检索引擎(12),一个校验和协处理器(20),一个串拷贝协处理器(22),一个排队(enqueue)协处理器(24),一个数据存储(datastore)协处理器(26),一个控制访问总线协处理器(28),一个计数器协处理器(30)和一个规则协处理器(32)。
PPU包括一对核心语言处理器(CLP)(34)和(36)。每个CLP包括一个指令取出解码与执行(Instruction Fetch Decode and Execute)装置,多个特殊与一般用途的寄存器和两条线索。一个协处理器执行接口(CPEI)判优器(arbiter)(40)对两个CLP与协处理器之间的指令进行判优。一个协处理器数据接口(CPDI)判优器(42)确定协处理器与CLP(34)和(36)之间的通信的优先权。用于CLP的全部指令均存储在一个指令存储器(图1中未示出)中。
CLP#1(34)从一个硬件分类器沿总线(46)接收通信,该硬件分类器提供来自一个配送器(dispatcher)的激励,从而开始处理一个新数据包。该CLP沿着来自指令存储器的总线(48)发送取出指令以处理该新的数据包。同样,CLP(36)沿着来自一个硬件分类器的总线(50)接收分类结果并沿着总线(52)向一个指令存储器接口发送请求。该指令存储器接口及硬件分类器均设置在PPU的外面,图1中未予示出。
排队协处理器(24)沿总线(60)向一个外部结束单元(未示出)发送指令。数据存储协处理器(26)沿着总线(62)向一个入数据存储接口(ingressdatastore interface)或者沿着总线(64)向一个出数据存储接口(egressdatastore interface)传送数据。控制数据流由一个外部控制访问总线判优器(未显示)沿着总线(68)进行判优。访问规则在CAB判优器(68)中当被写或读的数据流经总线(70)。数据访问沿着总线(70)输入或输出。计数器协处理器(30)和规则协处理器32各沿着总线(72)和(74)分别向计数器管理器和规则管理器提供访问。
图2示出了根据本发明的两个CLP的附加的细节。每个CLP包括一般用途寄存器(general purpose register)(80)和专用寄存器(specialpurpose register)(82)。这些专用寄存器包括多个标量寄存器(84)与阵列寄存器(86)。它还具有一个指令取出、解码与执行功能(88)。
处理组合包括以下组成部分:
多个协议处理器单元。在一个优选的实施例中,服务器使用八个协议处理器单元(PPU)。每个PPU包括共享多个协处理器(示出七个)的一个或多个CLP。PPU执行用于转发帧,更新表格以及维护网络处理单元的代码。
这些CLP同时执行存储在一个公用指令存储器中的代码。每个CLP包括一个核心和一个三级传输线(3-stage pipeline),16个GPR(一般用途寄存器)和一个ALU(算法逻辑单元)。协处理器相互之间能够同时执行操作而且能与CLP同时执行操作。当该协处理器通过接口与CLP连接时,它将扩展基本的CLP指令及寄存器模型。每个协处理器的命令是作为新的汇编助记符号(assembler mnernonics)出现的,而该协处理器的寄存器对于CLP程序员而言是作为新的标量与阵列寄存器(array register)而出现的。一些阵列寄存器设置于共享的存储器池(44)中。该协处理器能够与CLP异步运行。这就允许CLP在一个协处理器执行一个命令的同时继续处理指令。一条等待指令导致该CLP等待直至一条协处理器执行命令被完成为止。
指令存储器(56)典型地向8个嵌入式RAM组成。它们在初始化期间加载并含有用于发送帧及管理该系统的程序指令。该指令存储器有用于数据传送任务,用于引导通信,以及控制任务的16K指令。一个调度程序单元。该单元跟踪线索的使用情况,取出并向空闲线分配新的帧。数据帧被分配给下一个可用的PPU。这将帧地址从上与下的配送器队列up-GDQ,up-GCQ,dn-GRO/1,dn-GBO/1和dn-GCQ)中出队列。出队列后,配送器(dispatcher)单元从上或下的数据存储器(DS)中读出帧头部分并将其存储于共享存储池(44)中。只要CLP一空闲,配送器单元就通过总线(46)或(50)把适当的控制信息如代码指令地址(CID)传给CLP。配送器利用一个独立的总线(58)把帧头信息传递至共享存储池(44)。配送器还通过把实现这些功能的工作分配给一条可用的线索来控制定时器与中断。
一个树检索存储器(Tree Search Memory,TSM)判优器(110)。有几个共享的内部及外部存储器单元可供每个CLP使用。由于该存储器是共享的,用一个判优器来控制对该存储器的访问。该TSM能被代码直接访问,而且比如说能被用于在该TSM中储存路由表(routingtables)。而且,在树检索期间,该TSM将被TSE(12)访问。
一个结束单元(Completion Unit,CU)。该结束单元执行两个功能。第一个,它通过接口把CLP与上和下的EDS(排队,离队与程序岛(Schedule Island)连起来。EDS执行排队操作,从而一个帧地址与称为FCB页的相应参数一起被列入或者是一个传输队列,一个放弃队列,或者是一个调度队列。当该目标是一个传输队列时,硬件设置的信息流控制机制确定该帧是放入该传输队列,还是放入一个放弃队列。第二,该结束单元保障帧的序列。由于可能发生多条线索碰巧对属于同一信息流的帧进行处理的情况,必须采取预防措施按照正确的顺序把这些帧列入上或下的传输队列。该结束单元使用一个由硬件分类器(54)根据帧调度生成的标签。
硬件分类器。该硬件分类器位于调度单元与PPU之间的数据路径上。它执行分类并向目的线索提供信息。对于上行帧(up-frames)而言,硬件分类器加速器(Hardware Classifier Assist)对帧格式的众所周知的情况进行分类。分类结果在帧调度期间,按照CIA(代码指令地址)以及四个GPR(一般用途寄存器)的内容的方式,被送至CLP。对于下行帧(dn-frames)而言,硬件分类器加速器根据帧头确定CIA。对于上行与下行帧的调度,硬件分类器加速器均生成一个标签,被结束单元用于维护帧序列。
上行与下行数据存储接口及判优器。每条线索均通过数据存储协处理器(26)对上行与下行的数据存储器进行访问:读“更多数据”时提供读访问,而把数据池的内容写回数据存储器时提供写访问。由于有多条线索并且一次只有其中的一条线索能够访问上行数据存储器以及一次只有一条线索能够访问下行数据存储器,因此每个数据存储器需要一个判优器。
控制访问总线(CAB)判优器与WEB监视接口(WEBWatch interface)。CAB判优器在对CAB进行访问的线索中进行判优。所有的线索均通过CAB协处理器(28)对CAB进行访问。这就允许对处理器单元中的所有的存储器及寄存器功能进行访问。这就允许任一条线索对所有的配置区进行修改或读操作。该CAB可被看做是处理器单元的存储器映射。
CAB监视接口提供从使用三个芯片I/O端口的芯片的外部对整个CAB的访问。
调试,中断及单步控制。CAB允许GCH线索或CAB监视来控制每条线索。例如,CAB可以被GFH线索或CAB监视使用,来在单步执行模式中运行一个选择的线索。
核心语言处理器(CLP):
网络服务器在其体系中使用了几种类型的CLP。每一类型均被编程以执行一个具体功能。GDH是一种通用数据处理机(General DataHandler),主要用于帧的传送。每个GDH通常有一个专用的控制处理器。每个控制处理器采用多个根据本发明的协处理器。系统要求的CLP的数量一般由性能的估测来决定。体系与结构是完全可调的,只受硅面大小的限制,随着CLP数量的增加应该包括一个较大的判优器与指令存储器。
GCH引导单元处理机(Guided Cell Handler)具有与GDH相同的硬件。然而,一个引导帧只能由GCH处理。如果GCH也可以处理数据帧(该情况中,它起到一个GDH的作用)CLP-Eua寄存器可以在Web上编程。与GDH硬件加速器相比,GCH具有附加的硬件来执行树插入和删除。GCH用于执行引导单元的相关的代码,执行与芯片及树管理相关的代码如老化(aging)并用于与CP和/或另一个GCH交换控制信息。当没有这样的任务要执行时,GCH将执行与帧传送相关的代码并且在这种情况下,完全象一个GDH一样运行。GPH(通用处理器处理机)。该处理器对与Powex PC连接的硬件邮箱(mailbox)进行访问。由于RIT 1/2不包含Power PC,该GPH将与一个GDH完全一样地运行。
GTH(通用树处理机)有与GDH和GCH的硬件加速器相似的附加硬件用于执行树插入,树删除及绳(rope)管理。当在GPQ中没有含有树管理命令的帧时GTH将处理数据帧。
参见图2,CLP#1(34)包括一个指令取出、解码、和执行单元(88),一般用途寄存器(80)和包括标量寄存器(84)及阵列寄存器(86)的特殊用途寄存器(82)。同样,CLP#2(36)含有类似的组成部分。
除两条指令之外CLP(34)完全在其执行单元(102)内执行指令。两个例外是图4中的直接与间接协处理器执行指令(417)。这两条指令在所附协处理器之一上开始命令处理。协处理器相互间能够同时执行命令而且也能在CLP中进行指令处理的同时执行命令。只要一个CLP指令使用一个协处理器,它就指定一个数值范围为0至15的称为协处理器标识符的4位二进制数来指明为该操作选择哪个协处理器。
共享存储池
4K字节的共享存储池(44)拥有用于至少某些协处理器的阵列寄存器。它被在PPU中运行的所有线索使用。1K字节被每条线索使用并被再分成以下区:FCB页(可认为是供排队协处理器使用的一个阵列寄存器);数据取(Data Fetch);高速暂存区(Scratch Memory Area,可认为是用于CLP的一个阵列寄存器),和系统区。该共享存储池可被看作根据线索的数量分成相等的段。在每段内,地址空间被再分成阵列寄存器用于需要阵列寄存器的CLP及各个协处理器。该池内地址线中的两个根据活动的CLP与活动的线索来驱动。
PPU协处理器
每个协处理器是一个专用的硬件加速器引擎,如果被嵌入到核心中,该引擎执行要求大量的串行代码的功能。这些协处理器与CLP并行地运行并提供用于数据移动的功能,包括IP头修改,维护信息流控制算法中使用的有关信息流的信息,通过CAB访问内部寄存器,维护对信息流控制以及管理信息块(MIB)的计数,标准的和专用的(proprietary),和对将被传送的帧进行排队。每个协处理器,除非另有说明,维护一组用于PPU中的每条线索的标量寄存器及阵列寄存器。
再次参见图2,PPU(10)包括两个核心语言处理器(34,36)和几个所附的协处理器(12,20,22,24,26,28,30和32)。这些协处理器为特定的网络处理任务如高速模式检索,数据操纵,内部芯片管理功能,帧解析,以及数据提取提供硬件加速。
各种协处理器及其功能描述如下:
树检索协处理器
树检索引擎(TSE)协处理器(12)被指定协处理器标识符2。TSE具有用于树管理的命令并通过判优器(110)直接访问树检索存储器。它具有检索算法用于执行对LPM(要求可变长匹配的最长的前纵匹配模式),FM(有精确匹配的固定大小模式)和STM(涉及或者定义一个范围或者定义一个比特掩码的模式的软件管理树)的检索以实现帧传送及修改信息。一个数据存储协处理器(26),被指定协处理器标识符1,用于收集,修改或者把帧数据送入网络处理器的帧数据存储器(112)中。本发明中使用的树检索结构与操作的细节可在下面的美国专利申请中找到,它们的代理人卷号为:RAL 9-99-0139;RAL 9-99-0140和RAL9-99-0141。
校验和协处理器
常规的校验和协处理器(20)利用向其提供的用于计算因特网校验和的相应算法来计算与确认校验和。该协处理器用一个半字长的校验和结果对半字长数据进行校验和的操作。下面的命令可以使用:
生成校验和(Generate Checksum);以及
验证校验和(Verify Checksum)命令的结果放在一个累加标量寄存器和一个标桩标量寄存器(StakeScalarregister)中。累加标量寄存器含有校验和的计算结果,而标桩标量寄存器含有紧随在包含于校验和中的最后半个字的字节的位置。用于校验和协处理器的数据存于共享存储池中。到协处理器的命令包括以下选项:
1)IP报头
一个IP报头被指明时,第三层报头的起始位置(即标桩)被传送。硬件从该报头的长度字段来确定IP报头的长度并把该值加载到一个长度标量寄存器。生成校验和时,用值零来代替含有当前校验和的半个字。
2)数据块
存于共享存储池中的数据被看作是一个数据块而且可以生成一个校验和或者可对该校验和进行验证。共享存储池中的起始位置,以及长度被传送。验证(verifying)一个数据块时,校验和被置入累加标量寄存器。校验(checking)一个数据块时,校验和被放入累加寄存器。
排队协处理器
排队协处理器(24)提供两个功能:
1.它允许代码来建立一个FCB(帧控制块)页,一个用于建立上行与下行FCB页的称为一个工作FCB页的256比特寄存器。该寄存器含有被要求按照EDS(排队,离队/调度)(Enqueue,Dequeue/Scheduling)上行或EDS下行对帧进行排队的全部参数,该寄存器中含有的参数的例子是用于上行的FCB地址,目标部分号(target part number),帧修改信息以及下一个循环的标识。
2.它提供在一个CLP和结束单元(CU)之间的一个接口。CU的操作与CLP无关,但是它为每个CLP处理顺包括一个称为准备FCB页(ReadyFCBPage)的寄存器。在排队时,该寄存器被拷贝到CU然后该队列被排队处理器接收。此时,CLP被腾空以便处理下一帧。EQ设置其准备比特(?)然而,如果CU中的准备FCB页不为空,EQ将封锁从CLP向CU的传输,直至EQ寄存器为空再允许传输。排队协处理器管理在一条线索与结束单元之间的接口和存于共享存储池中的FCB页的使用。每条线索有3个FCB页位置,有关一个帧的排队信息可以存入其中。其中两个页用于在连续的排队期间通过两个页之间的交换来改善结束单元的接口的性能。在这两个页之间对为该线索所写的汇编语言代码没有区别,因为这是由硬件管理的。第三页由该线索用于准许通过代码来建立新帧。这方面的一个例子是建立用于学习的定向通信(guided traffic),该通信被重新排队以供一条GTH线索执行的信息。
一条CLP线索发出一条排队命令时,FCB页被标明在使用中(in-use)。如果其它位置可供使用,则一个新帧可被调至该线索而不用等待来自排队协处理器的应答。结束单元通过排队协处理器从共享存储池取出FCB页,而且它将该页提供给EDS(正如排队命令指明的那样,或入或出)。一旦出现这种情况,FCB页被标明为空闲。如果两个FCB页均被标明在使用中,则第三帧不允许开始。
下面的命令由排队协处理器支持:
排队入(Enqueue Ingress,ENQUP)通过结束单元排队到入数据流控制和调度程序(scheduler)。
排队出(Enqueue Egress,ENQDN)通过结束单元排队到出数据流控制和调度程序。
排队清除(Enqueue Clear,ENQCLR)清除(将所有字段置为零)当前的PCB页。
数据存储协处理器
该协处理器(26)执行下列功能:
1.它与上行数据存储器及下行数据存储器进行接口。
2.它在一个定时器事项或中断的调度期间接收配置信息。
3.它对帧计算校验和。
该协处理器一般包括一个320字节的数据缓冲器和一个8个字的存储器,每个字128比特。
帧数据通过数据存储协处理器被访问,从而与包含从媒体接收的帧的入数据存储器和包含从包路由交换机接收的重新装配的帧的出数据存储器接口。在一个计时器事项或中断的调度期间,它还接收配置信息。
该数据存储协处理器使用在一个共享存储池中定义的阵列。这些阵列是数据池(datapool),可容纳8个四倍长字(QuadWords),和两个高速暂存阵列,其中一个容纳8个四倍长字和一个容纳4个四倍长字。用于控制从和向入或出数据存储器读和写阵列内容的附加标量寄存器在该数据存储协处理器中。为由该数据存储协处理器支持的每条线索定义了一组阵列与标量寄存器。
这些共享存储池阵列用作数据存储协处理器的工作区:取代对一个数据存储器的直接读或写,更大量的帧数据从该数据存储器被读到这些共享存储池阵列中或者更大量的数据从这些阵列中被写入到数据存储器中。传送单位是一个四倍长字,定义为16个字节。
下列命令可供数据存储协处理器使用:
1.写入出数据存储器(Write Egress Data Store,WRDNDS)
允许CLP写入出数据存储器。写操作只在多个四倍长字单位中进行。数据取自数据存储协处理器阵列中的一个阵列(数据池或高速暂存阵列)。
2.读出出数据存储器(Read Egress Data Store,RDDNDS)
允许CLP从出数据存储器中读出数据并将其置入数据存储协处理器阵列中的一个阵列。读操作只在多个四倍长字单位中对出数据存储器进行。
3.写入数据存储器(Write Ingress Data Store,WRUPDS)
允许CLP向入数据存储器写数据。写操作只在多个四倍长字单位中对入数据存储器进行。
4.读出入数据存储器(Read Ingress Data Store,RDUPDS)
允许CLP从入数据存储器读出数据(只在多个四倍长字单位中)。
从出数据存储器读取更多帧数据(RDMOREDN)
对出数据存储器进行的一个硬件辅助的读操作。RDMOREDN从上一个读命令停止的地方继续读取帧并把数据送入数据池(Datapool)。由于数据被移入数据池,该硬件跟踪被读取的帧中的当前位置并从双缓冲器中捕获连接指针以便确定下个双缓冲器(buffer twin)的位置。该地址被硬件用于后续的RDMOREDN请求,直至该双缓冲器被读完而且下一个双缓冲器被读取。由于数据池的内容是一个双缓冲器的内容的映射,帧数据就有能力在数据池内交换(wrap);代码则保持对数据池内的数据位置的跟踪。
从入数据存储器读取更多帧数据(RDMOREUP)
对入数据存储器进行的一个硬件辅助的读操作。RDMOREUP从上一个读命令停止的地方继续读取帧并把读出数据送入数据池。由于数据被移入数据池,该硬件跟踪被读的帧中的当前位置并捕获含于缓冲器控制块区中的连接以便确定该帧的下一个数据缓冲器的位置。读地址被硬件用于后续的RDMOREUP请求,直至该数据缓冲器被读完而且下一个缓冲器被读取。代码则保持对数据池内的帧数据位置的跟踪。
租用双缓冲器(Lease Twin Buffer,LEASETWIN),返回一个空闲的双缓冲器(在出数据存储器中建立新数据时使用)的地址。
控制访问总线(CAB)协处理器
该协处理器(28)允许网络处理器在整个网络处理器系统中对所选的寄存器进行控制。出于包括系统初始化在内的目的它能够把某些寄存器初始化,而且为了系统诊断与维护它能对某些寄存器执行读操作。
该协处理器与嵌入式处理器组合(EPC)Web判优器接口。该判优器在CLP与Web监视之间判优。这就允许所有的CLP在Web上读与写。
该CAB协处理器为一个CLP线索提供到CAB判优器和控制访问总线的接口。一条线索必须为一个CAB访问而加载操作数,如CAB地址与数据。访问CAB的协议则由CAB接口协处理器处理,其提供下列命令:
判优CAB访问(Arbitrate for CAB Access,WEBARB)
由一条线索使用以获得对CAB的访问。一旦访问被批准,该线索即保持对CAB的控制直至其释放CAB为止。
读/写CAB(Read/wiete CAB,WEBACCESS)
向或从CAB及其所附的CAB可访问寄存器移动数据。PPU内的源及目的是一般用途寄存器(GPR)。
预占CAB(Pre-empt CAB,WEBPREEMPT)
只供GFH线索使用,它允许GFH为了一个单一的读/写访问而获得对CAB的控制,即使该CAB已被授予给另一条线索。
有关校验和,数据存储器,队列以及CAB协处理器的结构与操作的其他细节示于美国专利申请《串拷贝(StrCopy)协处理器》中,其代理人卷号为RAL9-99-0083。
串拷贝协处理器(String Copy Coprocessor)(22)扩展了CLP的移动数据块的能力。数据只在共享存储池内移动。下列命令可供使用:
串拷贝(Strcopr):
本命令用于在阵列之间移动多个字节的数据。该命令传递源数据块的起始字节位置,信宿数据块(sink data block),以及要移动的字节数。
计数器协处理器
计数器协处理器(30)沿总线(72)向可以在所有的PPU间共享的一个计数器管理器(未示出)提供访问。该协处理器与所有的计数器程序接口并执行计数器的更新。这是由其标量寄存器与协处理器执行接口(16)之间的一个FIFO缓冲器(76)实现的。一个第二FIFO缓冲器(78)位于它的阵列寄存器与协处理器数据接口(14)之间。每条线索就象拥有其自己的计数器协处理器一样运行。一个外部(至PPU)地址及数据总线用于该协处理器。这样,该系统就能够实现允许一个以上的PPU通过外部总线来判优计数器协处理器的使用。
一条线索能够通过计数器共用处理要求一个计数器的更新并且能够持续进行处理而不用等待计数器管理器完成操作。计数器协处理器就该请求向计数器管理器发生信号并把计数器访问命令的操作数传递给计数器管理器以供处理。该计数器协处理器有一个8层的(eight-deep)队列用于容纳由在PPU中运行的四条线索发出的计数器访问命令。该计数器协处理器提供下列命令:
计数器访问(CtrAccfess),增加或把一个值加到一个计数器。该命令的操作数是一个计数器标识符(以计数器存储器的形式),索引与移位,一个增加或加法命令,和一个值字段;读一个计数或写一个计数;或者读出与清除一个计数值。除非计数器协处理器的队列已满一条线索不等待命令的执行。
计数器协处理器及其操作的更多细节可见于标题为《用于管理大计数器阵列的协处理器》,代理人卷号为RAL 9-2000-0078-USI的美国专利申请。
规则协处理器(Policy Coprocessor)
规则协处理器(32)为一条线索提供到规则管理器(未示出)的一个接口(74)。这是由它的标量寄存器与协处理器执行接口(16)之间的一个FIFO缓冲器(76)实现的。一个第二FIFO缓冲器(78)位于其阵列寄存器与协处理器数据接口(14)之间。一条线索通过该接口请求对一个帧的“颜色”(“color”)进行更新。一个帧的颜色用作网络处理器的可配置的信息流控制机制的组成部分,决定着对该帧执行何种操作。一条线索必须等待规则管理器,通过规则协处理器,返回一个结果。规则管理器访问用于信息流的规则控制块,而该帧是该信息流的一个部分。操作数包括规则控制块地址,信息包的长度以及当前指定给该帧的颜色。返回的结果是给该帧的一种新的颜色。
每个CLP(34,36)通过两个接口即协处理器执行接口(16)与协处理器数据接口(14)与协处理器(12,20,22,24,26,28,30和32)连接。这些接口的功能将在图4中更详细描述。
一个4比特共用处理标识符唯一地标识PPU中的每个协处理器。每个协处理器能够支持多达256个特殊用途寄存器。一个取值范围为0至255的8比特寄存器号码唯一地标识一个协处理器内的一个特殊用途寄存器。协处理器号码与寄存器号码的组合唯一地标识PPU内的寄存器。有两种类型的特殊用途寄存器:标量寄存器与阵列寄存器。
寄存器码0至239为标量寄存器售留。一个标量寄存器有一个1比特的最小长度和一个32比特的最大长度。标量寄存器的比特被标以从0至31的号码,在最右端或最低有效位从0开始,而在最左端或最高有效位至31结束。长度小于32个比特的标量寄存器从右侧排起,余下的位被看作未生效。CLP对长度小于32比特的标量寄存器执行读操作时,未生效的位的值取决于硬件。对未生效的位的写操作无效。
寄存器号码240至255为阵列寄存器保留。一个阵列寄存器有一个两个字节的最小长度和一个256个字节的最大长度。CLP对一个阵列寄存器读或写,在共享存储池(44)内分区(partition),一次两个字节(半字长),一次四个字节(一个字)或一次16个字节(四倍长字)。
一般用途寄存器的使用在技术中是周知的,因此用一般的方式来讨论。一般用途寄存器可以由两个途径被程序员观察。程序员可以把一个一般用途寄存器看作是一个32比特寄存器,正如用取自0,2,4,6,……14组的一个4比特数表示的32比特的标签指明的那样。在这种意义上程序员见到的是8个32比特的一般用途寄存器。根据用一个取自0,1,2,3,……15组的一个4比特数表示的16位的标签,程序员也可以把一个一般用途寄存器做为一个16比特寄存器来使用。在这种意义上程序员见到的是16个16比特一般用途寄存器。
每个协处理器包括储存来自忙信号字段的信息的一个状态寄存器。这个寄存器向一个程序员指明一个给定的协处理器是否可用、或者它是否忙。一个协处理器结束代码寄存器储存来自图4中的OK/K.O.字段(415)的信息。因此,如果一个程序员需要知道一个给定的协处理器是否忙或是否可用,该程序员能够从一个协处理器状态寄存器得到这一信息。与此类似,一个协处理器结束代码寄存器向一个程序员提供关于协处理器任务结束的信息。
每个CUP包括下列16比特程序寄存器:一个程序计数器寄存器,一个程序状态寄存器,一个连接寄存器,和一个关键字(key)长度寄存器。还提供两个32比特寄存器:时间签(time stamp)寄存器,和随机数生成器寄存器。还为前面提到的每个寄存器提供一个标量寄存器号码。
一般用途寄存器可以两种方式被程序员观察。一个程序员可以把一个一般用途寄存器看作是一个32比特寄存器。一个程序员也可以把一个一般用途寄存器用作一个16比特寄存器。
阵列寄存器通过阵列寄存器号码展示在程序员面前。
图4描述了通过协处理器执行接口(16)和协处理器数据接口(14)把CLP(34)与其协处理器(401)连接起来的接口信号。独立线连接的数量由挨着每项独立的任务中的箭头出现的有编号的标签指明。为了便于讨论,所选的协处理器(20,22,……)代表其协处理器标识符与根据下面讨论的操作而出现在(411),(420),或者(429)上的协处理器标识符相配匹的协处理器。
执行接口(16)使CLP(34)能够在任何一个协处理器(20,22,……)上开始命令的执行。协处理器号码(411)在16个协处理器中选择一个作为该命令的目标。当CLP把起始字段(410)触发至逻辑1时,如由协处理器号(411)指明的选中的协处理器(450)开始执行由6比特操作字段(OP field)(412)指定的命令。操作重量(OP argument)是44比特的数据,与该命令一道传送供协处理器(450)执行。忙信号(414)是一个16比特的字段,每个协处理器(401)对应一个比特,并指明一个协处理器是否忙于执行一条命令(比特=1)或者这个协处理器是否未执行命令(比特=0)。这16比特存储于标量寄存器中,这里,寄存器的位0对应协处理器0,位1对应协处理器1,等等。OK/K.O.字段(415)是一个16比特字段,每个协处理器(401)一个比特。它是专供命令使用的一个比特返回值代码。例如,它可以用于向CLP(34)指明给予一个协处理器(401)的一条命令是否以失败结束,或者一条命令是否成功。这一信息存储于CLP标量寄存器中,这里该寄存器的位0对应协处理器0,位1对应协处理器1,等等。直接/间接字段(417)向选中的协处理器(450)指明协处理器执行指令的哪种格式在执行。如果直接/间接=0,则直接格式在执行,否则,如果直接/间接=1则间接格式在执行。
协处理器数据接口(14)包含3组信号。写接口(419,420,421,422,423,424)涉及向一个协处理器中的一个标量或阵列寄存器写数据。读接口(427,428,429,430,431,432,433)涉及从一个协处理器内的一个特殊用途寄存器(80),或者是一个标量寄存器(84)或者是一个阵列寄存器(86)读数据。第三组(425,426,427)在一个标量寄存器或阵列寄存器的读与写期间都要使用。读接口与写接口二者的复制功能用于支持同时的读与写以把数据从一个寄存器移至另一个寄存器。
写接口用写字段(419)选择由协处理器号码(420)指定的一个协处理器(450)。只要CLP(34)想把数据写入选中的协处理器,写字段(419)即被强制置为一。协处理器寄存器标识符(421)指定选中的协处理器(450)内CLP(34)将进行写操作的寄存器。协处理器寄存器标识符(421)是一个8比特字段,因此(256)个寄存器被支持。取值范围为0至239的一个协处理器寄存器标识符指定对一个标量寄存器的一个写操作。取值范围为240至255的一个协处理器寄存器标识符指定对一个阵列寄存器的一个写操作。在阵列寄存器写的情况下,该移位字段(422)指定阵列寄存器中数据写操作的起始点。这个字段的大小为8比特,因此将支持一个阵列内的256个地址。数据出字段(423)携带将被写入协处理器(450)的数据。它的大小为128比特,因此一次可写多达128位的信息。写有效字段(424)向CLP(34)指明何时协处理器(450)完成接收数据。这就允许CLP(34)在协处理器(450)接收数据的同时暂停并保持数据有效。
除了数据从协处理器被读取之外,读接口(14)在结构上与写接口(16)相似。读字段(428)对应写字段(419),并由CLP(34)用于指明何时对选择的协处理器(450)执行一个读操作。协处理器号码标识符字段。(429)判断选择哪个协处理器(450)。寄存器号码字段(430)、位移字段(431),以及读有效字段(433)与写接口中的(421)(422),及(424)对应。数据入字段(432)把数据从协处理器(450)传输至CLP(34)。
读或写操作能有三种长度中的一种:指明传送16比特的半长字,指明传送32比特的字,以及指明传送128比特的四倍长字。读数据(432)和写数据(423)宽度为128比特。少于128比特的数据传输是右对齐的。信号(425)与(426)指明数据传输的大小。16比特传输由取值均为0的(425)与(426)指明,32比特传输由分别取值1和0的(425)和(426)指明,而128比特传输由分别取值0和1的(425)和(426)指明。
变址数(modfier)字段(427)在数据读或数据写操作期间均要使用。每个协处理器就象该协处理器的硬件设计器定义的那样以其自己的方式解释它的含义。它为程序员提供一个方法以便在读或写操作期间均为硬件规定一个附加位的信息。数据存储协处理器能够跳过信息包缓冲器链接表中的信息包缓冲器中的连接字段。
启动一个协处理器中的一项任务之后,CLP可以继续执行指令,或者可以拖延指令的执行直至该协处理器中的任务完成。在CLP在与协处理器中的任务执行的同时继续执行指令的情况下,在某一后续的时间点上,由主处理器单元执行的等待指令将使其拖延其它指令的执行直至在一个或多个协处理器上的任务执行结束。在一种形式中,等待指令拖延在CLP上的执行直至在一个或多个协处理器内的任务完成,这时CLP恢复对跟随在等待指令后面的指令的指令执行。在另一种形式中,等待地令拖延CLP的执行直至在一个特定的协处理器内的任务完成。在这个任务完成时,CLP对来自该协处理器的一个一比特的返回代码连同来自等待指令内的一比特一起进行检查以确定是否恢复对跟随在等待指令后面的指令的指令执行或者将执行转移至由程序员规定的某个其他指令。
协处理器执行指令通过把图1中的协处理器执行接口(16)中的‘开始’信号置成1的方式来模拟在一个协处理器上的命令处理。参见图5,协处理器标识符(520)是从指令字段(500)获得的并通过开始信号指明一个所选的协处理器。6比特的协处理器命令是从指令字段(501)获得的并通过一个信号向所选的协处理器指明哪个命令开始执行。一旦把开始信号激活至1,所选的协处理器将其忙信号激活至1并使其保持1值直至它完成命令的执行,这时它把该信号去话(deactivate)至0。CLP连续地读取16位的信号并把它们置入标量寄存器。根据命令的完成,所选的协处理器把这一状态置入标量寄存器。
再参见图5,如果指令的异步执行字段(502)是0则CLP通过将其忙信号去活来指明指令完成。出现这种情况时,CLP恢复指令的取出与执行。如果指令的异步执行字段(502)是1则CLP不管忙信号的状态继续指令的取出与执行。
当所选的协处理器中的命令处理起动,CLP通过一个信号向该协处理器提供44比特的附加的命令专用信息。该信息是根据在图5a与5d中描述的指令格式用4种方法中的1种方法获得的。
图5a的协处理器执行间接格式从指令字段(504)获得指令信息的高位的12比特(523)。指令信息的低位32比特(524)是从32比特的一般用途寄存器(505)获得的。所选的寄存器由取值限制在{0,2,4,……14}范围内的4比持的指令字段(503)决定。通过这种方式,从该寄存器中选出一个32比特寄存器。CLP把该信号置成1以向所选的协处理器指明这是指令的间接形式。
用于执行指令的条件协处理器执行间接格式示于图5b。这里,指令以与图5a中的方式相同的方式根据被满足的某些条件而执行。如果这些条件未予满足,指令即不执行。这些指令是根据CLP中的ALU代码执行的。条件执行使用产生被缩短至2比特的操作字段(OP field)的4比特。这样,系统就允许对64个可能的命令中的4个命令实施条件执行。其他命令假定为0。这样,基于长和短等待时间的条件执行就能够借此而实现。协处理器指令的条件执行在有关计数器协处理器的操作中尤其有用。
图5c的协处理器执行直接格式从指令字段(506)中获得命令信息的低位的16比特(527)。命令信息的高位28比特(526)被置成0。CLP把该信号置成0以向所选的协处理器指明这是指令的直接形式。
条件协处理器执行直接格式示于图5d中,正如其配置,可根据某些被满足的条件,以与图5c中相同的方式来执行。与图5b的情况相同,条件执行使用能够产生被缩短至2比特的操作字段的4比特。这样,系统就允许对64个可能的命令中的4个命令实施条件执行。
图6a描述了用于协处理器等待指令的指令格式。CLP执行从指令字段(600)获得的16比特掩码(mask)与协处理器状态寄存器的比特智能“与”操作(the bit wise AND operation)。如果结果不是表明一个或多个协处理器当前仍在执行命令的0,CLP则拖延命令的取出与执行。但是它继续执行上述的“与”操作直至结果为零的时候。
图6b描述了协处理器等待与转移(Branch)格式。协处理器标识符字段(601)指明协处理器状态中的哪个特定比特将被测试。例如,如果字段(601)含有1则协处理器状态寄存器的比特1被测试。如果标识字段(601)含有15,则协处理器状态的比特15被测试。如果测过的比特的值是1表明对应的协处理器尚未完成命令的执行,则CLP拖延指令的取出与执行。但是它继续执行上述操作直至测过的比特的值是0表明对应的协处理器已经完成命令的执行。这时,按照该指令的OK字段(602)的值以及由协处理器标识符(601)选择的标量寄存器中的协处理器结束代码中的比特的值,两项动作中的一项操作就会发生。CLP或者恢复对下一个后续指令的取出与执行,或者转移并恢复对根据下表由指令字段(603)指明的指令地址的指令的取出与执行:
602的值 | 所选的协处理器的值结束代码比特=0 | 所选的协处理器的值结束代码比特=1 |
0 | 转移 | 下一指令 |
1 | 下一指令 | 转移 |
通过启动一个共用处理单元中的一项任务来执行指令在申请是09/548,109,标题为“用于通信系统网络处理器的协处理器结构与方法”的共同未决的美国专利申请中给出了更为详细的描述。
本发明还涉及每个CLP中的多条指令执行线索9其中每条线索涉及被处理的一个不同的信息包)的每一条线中的独立的处理以及用于处理访问数据过程中的延迟时间的过程。每条执行线索均是一个执行一系列指令的独立的处理过程,由于这些线索被允许对协处理器硬件进行访问。树检索协处理器被安装管道(pipeline)以使多条执行线索与树检索管道中同时但以不同阶段重叠进行访问的每个协处理器连接。优选地,本发明采用多条具有零开销的指令执行线索把执行从一条线索切换下一条线索。这些线索被排队以便向共享存储器提供迅速的访问分配。这些线索的排队用于把最高优先权的线索尽可能快地交给它的长等待时间的事件。
如前所述,每个PPU含有多个指令预取缓冲器,每条执行线索一个。这些预取缓冲器在指令带宽未被活动的(active)执行线索全部利用的时间间隔内为空闲的执行线索启动指令的预取。这有助于保证当控制被切换至一条新的执行线索时,该线索的指令预取缓冲器将是满的,这样就避免了由于缺少可用的指令以供执行而使该新线索即刻拖延的可能性。因此,对指令存储器的访问优先权受到控制以便当前的执行线索接受最高的优先权,而负责控制当前线索是否拖延的执行线索被赋予第二优先权。同样,执行队列底部的执行线索在指令取出访问中被授与最后的优先权。
当一条活动的线索的执行由于一个长等待时间的事件(即树检索)而拖延时全面控制赋予下一条线索,或者当执行由于一个短等待时间的事件(即局部数据存储中的协处理器操作,或指令取出等待时间)而拖延时临时控制赋予下一条线索。如果临时控制被赋予一条替代线索,则只要原来的线索一被解锁控制即被返回给原来的线索。相反,如果全面控制被赋予一条替代线索,该替代线索将维持受控状态直至其被锁定为止。这就避免了因短等待时间的事件而浪费周期,但还允许主要执行线索更快地达到长等待时间事件。否则,多条执行线索可能几乎同时达到一个长等待时间的事件,这就会降低把一条线索的PPU执行与一条替代线索的树检索重叠的好处。与根据等待时间进行控制分配相关的细节在申请号为09/542,189,标题为‘具有多条指令线索的网络处理器’并且由代理人卷号RAL 9-2000-0008标识的未决的美国专利申请中给出。这一分配与线索执行控制的细节描述如下。
当计算机首次加电时,每条CLP线索均处于起始状态。当一个信息包被调至一个处理器时,相应的线索转为准备状态,此时它开始要求执行周期。
一个判优器根据该判优器的逻辑功能按照一个布尔方程把执行周期赋予该线索。如果该周期被赋予,则该线索从准备状态转为执行状态。在执行状态中,该线索继续提出请求直至由于一个时间延迟事件或被处理的信息包被排队而使执行拖延为止,这意味着在对该信息包执行的代码完成了。如果周期不再被赋予,这就意味着另一条线索在起控制作用。这就是该判优器不授予周期的唯一原因。但是在这两种状态(准备与执行)中,该线索将不断地请求因时间延尺事件而中止的新的执行周期,直至达到信息包处理并且下一个信息包被排队以便被调度为止。系统则返回起始状态并等待下一个信息包。等待阶段或者处理一个长等待时间的事件或者处理一个短等待时间的事件。无论哪一事件出现,处理器均要拖延并且活动线索则省略等待阶段。该线索然后停止请求执行周期直至等待时间事件被完成。
把一条线索从起始阶段转至准备状态的同一个调度操作把该线索的号码输入到一个FIFO缓冲器中以便第一个信息包被传至的该线索成为具有最高优先权的线索。后续的调度操作把附加的线索的号码提供到该FIFO中。FIFO的最高优先权位置中的线索号码将留在该位置直至它遇到一个长等待时间的事件,于是该线索返回FIFO的起始部分并从最高优先权的线索变为最低优先权的线索。一个短等待时间的事件则不会使该线索失去在FIFO缓冲器中的优先权。
如果该线已经完成对该信息包的处理,则该信息包被排队以便传至一个输出端口并且该线索号码则从FIFO缓冲器中删除。
新的信息包调自一个高级别控制器(未示出)。该控制器选择一条线索与一个处理器来处理每个信息包。这一选定向FIFO缓冲器提供一个输入命令。它还向状态装置提供一个输入信号以令该装置从起始状态转向准备状态。与来自外部控制器的命令一道,该信息包将被调至的线索的号码也必须从该控制器传递到FIFO。
基本上有两种类型的事件可使执行拖延,导致一个短中断的那些事件和导致当前程序流的一个扩展中断的那些事件。短中断可以由要求会因程序流中的一个变化而被重新填充的指令预取队列的一个转移指令引起。另一方面,在等待一个协处理器执行一个与处理器的局部存储器中的数据相关的任务时程序可以拖延。这方面的一个例子是用于计算一个经过修改的帧头字段的新的校验和的一个校验和协处理器。如果等待时间小于25个处理器周期则一个事件被认为是一个短中断。长等待时间的事件通常采用一个大于25个而通常是多达50至100个处理器周期的等待时间。这些都会对总本性能产生更为显著的影响。
有多种不同的方法用于判定一个长等待时间的或短等待时间的事件。等待时间的长度可受程序员的控制,这样,硬件或其配置就不是判定中的一个因素了。另一方面,一个阀值寄存器可被置以一个25个周期的阀值,而硬件能够确定一个操作会要求多少个周期并根据该确定自动作出决定。
一个协处理器指令是处理器执行的指令的一个类型。字段中的某些比特确定哪个协处理器被指定。一比特用于把具体的指令定义为一个长或一个短等待时间的事件。这样,一个程序员能定义对控制存储器的两个相同的访问,一个定义为一个长等待时间的事件而另一个定义为一个短等待时间的事件,就是可能的。线索执行控制功能被设计来把这些长等待时间的事件的影响降至最低。因此,一个长等待时间的事件将导致对向一条替代线索的转换的全面控制,而一个短等待时间的事件则只导致向一条替代线索临的临时转换。
协议处理器单元PPU及核心语言处理器的基本细节为该技术领域的普通技术人员所知,而且除了已被修改或补充而成为网络处理器系统的部分总体结构以及与特定功能的协处理器和其他系统部件相互连接的那部分之外这些细节并不包括本发明的部分。特殊的细节包括在本发明中使用的独立的协处理器的结构与程序设计并不被认为包括本发明的一部分。
虽然已结合其实施例对本发明进行了描述,但是显然,通过上面的讲解,许多的替换,修改,与变化对于本技术领域的技术人员而言将是可以理解的。因此,本发明意在把诸如这些替换,修改以及变更均囊括于所附的权利要求的精神与范围之内。
Claims (29)
1.一种用于控制一个网络处理器的程序设计能力的嵌入式处理器组合装置,该处理器组合装置包括多个协议处理器单元,每个协议处理器单元至少有一个核心语言处理器,每个核心语言处理器至少有两条代码线索,每个协议处理器单元使用多个用于为该协议处理器单元执行特定任务的协处理器,和在每个核心语言处理器与所述多个协处理器之间提供访问的多个逻辑协处理器接口。
2.根据权利要求1的装置,其特征在于该协处理器包括支持每个核心语言处理器的多条代码线索的专用的协处理器。
3.根据权利要求1的装置,其特征在于该协处理器是从包括一个树检索协处理器,一个校验和协处理器,一个串拷贝协处理器,一个排队协处理器,一个数据存储协处理器,一个控制访问总线协处理器,一个计数器协处理器和一个规则协处理器的一个协处理器组中挑选出来的。
4.根据权利要求3的装置,还包括一个用于确定多条线索之间的优先权的协处理器执行接口判优器。
5.根据权利要求3的装置,包括一个确定数据线索之间的优先权的协处理器数据接口判优器。
6.根据权利要求3的装置,在每条线索和至少一个协处理器之间还包括一个FIFO缓冲器。
7.根据权利要求6的装置,其特征在于该FIFO缓冲器位于每条线索与计数器协处理器之间。
8.根据权利要求6的装置,其特征在于该FIFO缓冲器位于每条线索与规则协处理器之间。
9.包括用于控制一个网络处理的程序设计能力的一个嵌入式处理器组合的一个网络处理系统,所述组合包括多个协议处理器单元,每个协议处理器单元含有:
至少一个核心语言处理器,每个核心语言处理器至少有两条代码线索;
用于为该系统执行特定任务的多个协处理器,以及
用于使得每个核心语言处理器访问和共享所述协处理器资源的多个协处理器接口。
10.权利要求9的网络处理系统,其特征在于该协处理器接口专用于支持每个核心语言处理器的代码线索。
11.权利要求10的网络处理系统,其特征在于该协处理器是从包括一个树检索协处理器,校验和协处理器,串拷贝协处理器,排队协处理器,数据存储协处理器,控制访问总线协处理器,计数器协处理器和规则协处理器的一个协处理器组中挑选出来的。
12.权利要求10的网络处理系统,其特征在于在每条线索和至少一个协处理器之间还包括一个FIFO缓冲器。
13.权利要求12的网络处理系统,其特征在于该FIFO缓冲器位于每条线索和计数器协处理器之间。
14.根据权利要求12的网络处理系统,其特征在于该FIFO缓冲器位于每条线索与规则协处理器之间。
15.权利要求9的网络处理系统,其特征在于包括由核心语言处理器的线索执行的产生控制协处理器操作的命令的特定操作指令,这些命令流经核心语言处理器与协处理器之间的接口。
16.根据权利要求15的网络处理系统,其特征在于该指令用于启动特定的协处理器操作的条件执行。
17.根据权利要求15的网络处理系统,其特征在于该指令根据响应一个特定的协处理器命令而访问数据的预期的响应时间起动系统来识别长等待时间的事件与短等待时间的事件,并且当一条活动的线索的执行由于一个长等待时间的事件而拖延时把全面控制赋予另一条线索,或者当一条活动的线的执行由于一个短等待时间的事件而拖延时把临时控制赋予另一条线索。
18.一种控制一个嵌入式处理器组合内的指令执行的方法,该组合含有多个协议处理器单元,每个协议处理器单元含有至少一个核心语言处理器,每个核心语言处理器至少有两条代码线索,该方法包括每个协议处理器单元使用用于执行协议处理器单元的特定任务的多个协处理器,以及在协处理器与每个核心语言处理器之间提供访问的多个逻辑协处理器接口的使用。
19.根据权利要求18的方法,其特征在于包括支持协议处理器单元的多条代码线索的专用的协处理器的使用。
20.根据权利要求19的方法,其特征在于一个或多个协处理器选自包括一个树检索协处理器,校验和协处理器,串拷贝协处理器,排队协处理器,数据存储协处理器,控制访问总线协处理器,计数器协处理器和规则协处理器的协处理器组。
21.根据权利要求20的方法,其特征在于一个协处理器执行接口判优器用于确定执行线索间的优先权。
22.根据权利要求20的方法,其特征在于一个协处理器数据接口判优器用于确定数据线索间的优先权。
23.根据权利要求20的方法,其特征在于还包括在每条线索与至少一个协处理器之间提供一个FIFO缓冲器。
24.根据权利要求23的方法,其特征在于该FIFO缓冲器位于每条线索与计数器协处理器之间。
25.根据权利要求23的方法,其特征在于该FIFO缓冲器接口位于每条线索与规则协处理器之间。
26.根据权利要求18的方法,其特征在于包括提供由核心语言处理器执行的生成用于控制协处理器操作的命令的专用操作指令的步骤,这些命令流经核心语言处理器与协处理器之间的接口。
27.根据权利要求26的方法,其特征在于该操作指令启动特定的协处理器操作的条件执行。
28.根据权利要求27的方法,其特征在于该执行或者是直接的或者是间接。
29.根据权利要求18的方法,其特征在于包括提供指令的步骤,提供的指令根据对一个特定的协处理器命令的预期的响应时间启动系统识别长等待时间的事件与短等待时间的事件,并且当一条活动的线索的执行由于一个长等待时间的事件而拖延时把全面控制赋予另一条线索,或者当一条活动的线索的执行由于一个短等待时间的事件而拖延时把临时控制赋予另一条线索。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/656,582 US6829697B1 (en) | 2000-09-06 | 2000-09-06 | Multiple logical interfaces to a shared coprocessor resource |
US09/656,582 | 2000-09-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1342940A CN1342940A (zh) | 2002-04-03 |
CN1188794C true CN1188794C (zh) | 2005-02-09 |
Family
ID=24633666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011324570A Expired - Fee Related CN1188794C (zh) | 2000-09-06 | 2001-09-05 | 到一个共享的协处理器资源的多个逻辑接口 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6829697B1 (zh) |
JP (1) | JP2002149424A (zh) |
KR (1) | KR100422491B1 (zh) |
CN (1) | CN1188794C (zh) |
SG (1) | SG100751A1 (zh) |
TW (1) | TW581950B (zh) |
Families Citing this family (93)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
ATE243390T1 (de) | 1996-12-27 | 2003-07-15 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.) |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US20140325175A1 (en) * | 2013-04-29 | 2014-10-30 | Pact Xpp Technologies Ag | Pipeline configuration protocol and configuration unit communication |
US8230411B1 (en) | 1999-06-10 | 2012-07-24 | Martin Vorbach | Method for interleaving a program over a plurality of cells |
US6985431B1 (en) * | 1999-08-27 | 2006-01-10 | International Business Machines Corporation | Network switch and components and method of operation |
WO2001063434A1 (en) * | 2000-02-24 | 2001-08-30 | Bops, Incorporated | Methods and apparatus for dual-use coprocessing/debug interface |
EP2226732A3 (de) | 2000-06-13 | 2016-04-06 | PACT XPP Technologies AG | Cachehierarchie für einen Multicore-Prozessor |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US7080238B2 (en) * | 2000-11-07 | 2006-07-18 | Alcatel Internetworking, (Pe), Inc. | Non-blocking, multi-context pipelined processor |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
EP1402382B1 (de) | 2001-06-20 | 2010-08-18 | Richter, Thomas | Verfahren zur bearbeitung von daten |
GB2378271B (en) * | 2001-07-30 | 2004-12-29 | Advanced Risc Mach Ltd | Handling of coprocessor instructions in a data processing apparatus |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
US7577822B2 (en) * | 2001-12-14 | 2009-08-18 | Pact Xpp Technologies Ag | Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization |
AU2003208266A1 (en) | 2002-01-19 | 2003-07-30 | Pact Xpp Technologies Ag | Reconfigurable processor |
US7073048B2 (en) * | 2002-02-04 | 2006-07-04 | Silicon Lease, L.L.C. | Cascaded microcomputer array and method |
WO2003071432A2 (de) | 2002-02-18 | 2003-08-28 | Pact Xpp Technologies Ag | Bussysteme und rekonfigurationsverfahren |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US8015303B2 (en) * | 2002-08-02 | 2011-09-06 | Astute Networks Inc. | High data rate stateful protocol processing |
EP1543418B1 (en) | 2002-08-07 | 2016-03-16 | MMagix Technology Limited | Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
JP2005535966A (ja) * | 2002-08-09 | 2005-11-24 | インテル・コーポレーション | アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム |
US6986023B2 (en) | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US7394284B2 (en) | 2002-09-06 | 2008-07-01 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
US7596621B1 (en) | 2002-10-17 | 2009-09-29 | Astute Networks, Inc. | System and method for managing shared state using multiple programmed processors |
US7814218B1 (en) | 2002-10-17 | 2010-10-12 | Astute Networks, Inc. | Multi-protocol and multi-format stateful processing |
US8151278B1 (en) | 2002-10-17 | 2012-04-03 | Astute Networks, Inc. | System and method for timer management in a stateful protocol processing system |
US7802001B1 (en) | 2002-10-18 | 2010-09-21 | Astute Networks, Inc. | System and method for flow control within a stateful protocol processing system |
US7418574B2 (en) * | 2002-10-31 | 2008-08-26 | Lockheed Martin Corporation | Configuring a portion of a pipeline accelerator to generate pipeline date without a program instruction |
US20040190555A1 (en) * | 2003-03-31 | 2004-09-30 | Meng David Q. | Multithreaded, multiphase processor utilizing next-phase signals |
EP1676208A2 (en) | 2003-08-28 | 2006-07-05 | PACT XPP Technologies AG | Data processing device and method |
US20050055594A1 (en) * | 2003-09-05 | 2005-03-10 | Doering Andreas C. | Method and device for synchronizing a processor and a coprocessor |
US7539760B1 (en) | 2003-09-12 | 2009-05-26 | Astute Networks, Inc. | System and method for facilitating failover of stateful connections |
US7058424B2 (en) * | 2004-01-20 | 2006-06-06 | Lucent Technologies Inc. | Method and apparatus for interconnecting wireless and wireline networks |
US8006071B2 (en) * | 2004-03-31 | 2011-08-23 | Altera Corporation | Processors operable to allow flexible instruction alignment |
US7676649B2 (en) | 2004-10-01 | 2010-03-09 | Lockheed Martin Corporation | Computing machine with redundancy and related systems and methods |
US7451397B2 (en) | 2004-12-15 | 2008-11-11 | Microsoft Corporation | System and method for automatically completing spreadsheet formulas |
CN101167077A (zh) * | 2005-02-01 | 2008-04-23 | 梅塔利克斯有限公司 | 电子通信分析和可视化 |
US7395517B2 (en) * | 2005-09-20 | 2008-07-01 | International Business Machines Corporation | Data aligner in reconfigurable computing environment |
US7330964B2 (en) * | 2005-11-14 | 2008-02-12 | Texas Instruments Incorporated | Microprocessor with independent SIMD loop buffer |
CN100451952C (zh) * | 2005-12-19 | 2009-01-14 | 威盛电子股份有限公司 | 多阶层加速器架构的处理器系统及其操作方法 |
EP1974265A1 (de) | 2006-01-18 | 2008-10-01 | PACT XPP Technologies AG | Hardwaredefinitionsverfahren |
JP2007200180A (ja) * | 2006-01-30 | 2007-08-09 | Nec Electronics Corp | プロセッサシステム |
US9665970B2 (en) * | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
JP4770664B2 (ja) * | 2006-09-20 | 2011-09-14 | 株式会社デンソー | マイクロプロセッサおよびそれを用いたマイクロコンピュータ |
US8438365B2 (en) * | 2006-10-06 | 2013-05-07 | Calos Fund Limited Liability Company | Efficient data loading in a data-parallel processor |
JP5243822B2 (ja) * | 2007-03-28 | 2013-07-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 仮想化されたデータ処理環境におけるワークロード管理 |
US7627744B2 (en) * | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
JP2008299740A (ja) * | 2007-06-01 | 2008-12-11 | Seiko Epson Corp | 非同期マイクロプロセッサ、電子情報装置 |
US7669036B2 (en) * | 2007-06-14 | 2010-02-23 | Qualcomm Incorporated | Direct path monitoring by primary processor to each status register in pipeline chained secondary processors for task allocation via downstream communication |
JP5032219B2 (ja) * | 2007-06-29 | 2012-09-26 | 株式会社東芝 | 演算方式を制御して情報を処理する装置、方法およびプログラム |
JP2009026135A (ja) * | 2007-07-20 | 2009-02-05 | Nec Electronics Corp | マルチプロセッサ装置 |
JP2009026136A (ja) * | 2007-07-20 | 2009-02-05 | Nec Electronics Corp | マルチプロセッサ装置 |
US8806181B1 (en) * | 2008-05-05 | 2014-08-12 | Marvell International Ltd. | Dynamic pipeline reconfiguration including changing a number of stages |
US20130138921A1 (en) * | 2011-11-28 | 2013-05-30 | Andes Technology Corporation | De-coupled co-processor interface |
US9697174B2 (en) | 2011-12-08 | 2017-07-04 | Oracle International Corporation | Efficient hardware instructions for processing bit vectors for single instruction multiple data processors |
US10534606B2 (en) | 2011-12-08 | 2020-01-14 | Oracle International Corporation | Run-length encoding decompression |
US9792117B2 (en) | 2011-12-08 | 2017-10-17 | Oracle International Corporation | Loading values from a value vector into subregisters of a single instruction multiple data register |
US9582287B2 (en) | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US11113054B2 (en) | 2013-09-10 | 2021-09-07 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression |
US9378232B2 (en) | 2013-09-21 | 2016-06-28 | Oracle International Corporation | Framework for numa affinitized parallel query on in-memory objects within the RDBMS |
US9465618B2 (en) | 2014-01-08 | 2016-10-11 | Oracle International Corporation | Methods and systems for optimally selecting an assist unit |
US10362093B2 (en) * | 2014-01-09 | 2019-07-23 | Netronome Systems, Inc. | NFA completion notification |
CN104901901B (zh) * | 2014-03-07 | 2019-03-12 | 深圳市中兴微电子技术有限公司 | 一种微引擎及其处理报文的方法 |
CA2984155A1 (en) * | 2015-05-21 | 2016-11-24 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
US10210134B2 (en) * | 2015-05-21 | 2019-02-19 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
US11449452B2 (en) * | 2015-05-21 | 2022-09-20 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
US10073885B2 (en) | 2015-05-29 | 2018-09-11 | Oracle International Corporation | Optimizer statistics and cost model for in-memory tables |
US10067954B2 (en) | 2015-07-22 | 2018-09-04 | Oracle International Corporation | Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations |
US9929858B2 (en) * | 2015-09-21 | 2018-03-27 | Nxp B.V. | Method and system for detecting fault attacks |
US10402425B2 (en) | 2016-03-18 | 2019-09-03 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors |
US10599488B2 (en) | 2016-06-29 | 2020-03-24 | Oracle International Corporation | Multi-purpose events for notification and sequence control in multi-core processor systems |
US10380058B2 (en) | 2016-09-06 | 2019-08-13 | Oracle International Corporation | Processor core to coprocessor interface with FIFO semantics |
US10783102B2 (en) | 2016-10-11 | 2020-09-22 | Oracle International Corporation | Dynamically configurable high performance database-aware hash engine |
US10176114B2 (en) | 2016-11-28 | 2019-01-08 | Oracle International Corporation | Row identification number generation in database direct memory access engine |
CN110720095A (zh) * | 2017-04-06 | 2020-01-21 | 高盛有限责任公司 | 通用并行计算架构 |
US10528414B2 (en) * | 2017-09-13 | 2020-01-07 | Toshiba Memory Corporation | Centralized error handling in application specific integrated circuits |
US10540219B2 (en) * | 2017-09-13 | 2020-01-21 | Toshiba Memory Corporation | Reset and error handling in application specific integrated circuits |
US10877766B2 (en) * | 2018-05-24 | 2020-12-29 | Xilinx, Inc. | Embedded scheduling of hardware resources for hardware acceleration |
CN112513809A (zh) * | 2019-12-27 | 2021-03-16 | 深圳市大疆创新科技有限公司 | 处理器、任务响应方法、可移动平台、及相机 |
US11210104B1 (en) * | 2020-09-11 | 2021-12-28 | Apple Inc. | Coprocessor context priority |
CN114071222B (zh) * | 2021-11-15 | 2023-07-25 | 深圳Tcl新技术有限公司 | 音视频数据共享装置及电子设备 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4809169A (en) * | 1986-04-23 | 1989-02-28 | Advanced Micro Devices, Inc. | Parallel, multiple coprocessor computer architecture having plural execution modes |
US4876643A (en) * | 1987-06-24 | 1989-10-24 | Kabushiki Kaisha Toshiba | Parallel searching system having a master processor for controlling plural slave processors for independently processing respective search requests |
US5008816A (en) * | 1987-11-06 | 1991-04-16 | International Business Machines Corporation | Data processing system with multi-access memory |
JP2741867B2 (ja) * | 1988-05-27 | 1998-04-22 | 株式会社日立製作所 | 情報処理システムおよびプロセツサ |
DE69229657T2 (de) * | 1991-06-19 | 1999-12-02 | Hewlett Packard Co | Co-Prozessor unterstützende Architektur für einen Prozessor, der keine Zusatzprozessorfähigkeit hat |
US5404469A (en) * | 1992-02-25 | 1995-04-04 | Industrial Technology Research Institute | Multi-threaded microprocessor architecture utilizing static interleaving |
US5748468A (en) * | 1995-05-04 | 1998-05-05 | Microsoft Corporation | Prioritized co-processor resource manager and method |
US5928322A (en) * | 1996-11-20 | 1999-07-27 | Silicon Graphics, Inc. | Low-latency real-time dispatching in general purpose multiprocessor systems |
US6226738B1 (en) * | 1997-08-01 | 2001-05-01 | Micron Technology, Inc. | Split embedded DRAM processor |
US6505290B1 (en) * | 1997-09-05 | 2003-01-07 | Motorola, Inc. | Method and apparatus for interfacing a processor to a coprocessor |
DE69737750T2 (de) * | 1997-12-17 | 2008-03-06 | Hewlett-Packard Development Co., L.P., Houston | Erst- und Zweitprozessoren verwendetes Verfahren |
US6016542A (en) * | 1997-12-31 | 2000-01-18 | Intel Corporation | Detecting long latency pipeline stalls for thread switching |
KR100308618B1 (ko) * | 1999-02-27 | 2001-09-26 | 윤종용 | 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법 |
US6829666B1 (en) * | 1999-09-29 | 2004-12-07 | Silicon Graphics, Incorporated | Modular computing architecture having common communication interface |
WO2001063434A1 (en) * | 2000-02-24 | 2001-08-30 | Bops, Incorporated | Methods and apparatus for dual-use coprocessing/debug interface |
-
2000
- 2000-09-06 US US09/656,582 patent/US6829697B1/en not_active Expired - Fee Related
-
2001
- 2001-08-24 SG SG200105184A patent/SG100751A1/en unknown
- 2001-08-30 KR KR10-2001-0052864A patent/KR100422491B1/ko not_active IP Right Cessation
- 2001-09-03 JP JP2001265792A patent/JP2002149424A/ja active Pending
- 2001-09-03 TW TW090121753A patent/TW581950B/zh not_active IP Right Cessation
- 2001-09-05 CN CNB011324570A patent/CN1188794C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6829697B1 (en) | 2004-12-07 |
CN1342940A (zh) | 2002-04-03 |
SG100751A1 (en) | 2003-12-26 |
KR20020020186A (ko) | 2002-03-14 |
TW581950B (en) | 2004-04-01 |
JP2002149424A (ja) | 2002-05-24 |
KR100422491B1 (ko) | 2004-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1188794C (zh) | 到一个共享的协处理器资源的多个逻辑接口 | |
CN1117319C (zh) | 在多线程处理器中改变线程优先级的方法和装置 | |
CN1127017C (zh) | 线程切换控制方法及用于该方法的线程状态寄存器 | |
CN1112636C (zh) | 在多线程处理器中选择线程切换事件的方法和装置 | |
EP3776241B1 (en) | Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric | |
CN1038620C (zh) | 多媒体计算机操作系统及方法 | |
JP4094550B2 (ja) | スケジューリングの順序付けられたステージの基準を使用してリクエストをスケジューリングする方法及び装置 | |
US11782870B2 (en) | Configurable heterogeneous AI processor with distributed task queues allowing parallel task execution | |
US11789895B2 (en) | On-chip heterogeneous AI processor with distributed tasks queues allowing for parallel task execution | |
US7822885B2 (en) | Channel-less multithreaded DMA controller | |
US7650601B2 (en) | Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment | |
US20050240924A1 (en) | Prerequisite-based scheduler | |
CN1308825C (zh) | 用于在smt处理器中进行cpi负载平衡的系统和方法 | |
JP5770721B2 (ja) | 情報処理システム | |
CN1867891A (zh) | 用于实时多线程处理的方法和装置 | |
CN100377091C (zh) | 嵌入式操作系统分组硬实时任务调度的实现方法 | |
CN105893126A (zh) | 一种任务调度方法及装置 | |
CN101702134A (zh) | 无操作系统干预情况下调度os隔离定序器上的线程的机制 | |
EP2131278A1 (en) | Scheduling of multiple tasks in a system including multiple computing elements | |
JP5607545B2 (ja) | マイクロプロセッサシステムにおける命令フェッチングの優先順位付け | |
CN106030538A (zh) | 通过编译器和os支持分离出i/o执行的系统和方法 | |
JP5285915B2 (ja) | マイクロプロセッサアーキテクチャ | |
US9158713B1 (en) | Packet processing with dynamic load balancing | |
CN1507587A (zh) | 可避免写后读的危险的存储器指令的发出和执行 | |
Cui et al. | E 2 bird: Enhanced elastic batch for improving responsiveness and throughput of deep learning services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050209 Termination date: 20110905 |