并行处理器中的多线程执行的制作方法

文档序号:6614059阅读:227来源:国知局

专利名称::并行处理器中的多线程执行的制作方法并行处理器中的多线程执行本申请是申请日2000.08.17,申请号为00815246.2(国际申请号为PCT/US00/22650),名称为"在并行处理器中执行多线程"的申请的分案申请。
背景技术
:本发明涉及一种并行处理器。并行处理是在计算处理中进行并发事件信息处理的有效形式。并行处理需要在计算机同时执行许多程序,与串行处理不同。在并行处理器中的环境中,并行处理涉及同时做多件事。与在一个站串行执行全部任务的串行范例或在专门的站执行任务的流不机不同,并行处理配备多个站,每个站能执行全部任务。也就是说,全部的站或多个站对问题的相同或共同要素一般同时且独立地工作。有些问题适合用并行处理解决。因此,计算机处理类型包括单指令流单数流型,串行的冯.诺依曼型计算机中存在单一指令流。第2种处理类型是单指令流多数据流处理(SIMD)。这种处理能有多个算术逻辑处理器和一个控制处理器。每一处理器在锁步执行数据操作。这些处理器由控制处理器进行同步。第3种类型是多指令流单数据流(MISD)处理。这种处理具有流经执行不同指令流的线性处理器阵的相同数据流。第4种是多指令流多数据流(MIMD)处理。这种处理采用多个单元器,每-一处理器执行自己的指令流,以处理供给各处理器的数据流。多指令流多数据流(M頂D)处理器可具有若干指令处理单元,因而有若干数据流。
发明内容根据本发明的一个方面,微控制功能执行单元包含存放微程序的控制存储器和保持多个微程序计算器的微引擎控制器。该单元还包含对指令进行译码的译码逻辑和一个现境事件仲裁器,该仲裁器响应外部标志,判断微控制功能执行单元中可执行的多个线程中的哪一个升级到执行状态。本发明的一个或多个方面可提供以下一个或多个优点。微引擎能处理多个硬件线程。每一微引擎保持多个硬件形式的程序计数器和该程序计数器相关联的状态。实际上,相应的多个线程组可在一微引擎上同时工作,但任何时仅有一个线程真正运作。硬件环境对换使任务完成同步。举例来说,2个线程可试图存取相同共用资源。资源完成一个微引擎线程环境所请求的任务时,该资源便回报一通知操作完成的标志。微引擎收到该标志时,便可判定开通哪一线程。硬件多线程处理可用于使微引擎上的第1线程启动例如存取存储器这种事务。存储器存取期间,若微引擎例如仅具有一个可运作的线程,该微引擎就会休眠直到从存储器返回数据为止。通过在微引擎内利用硬件环境对换,该硬件环境对换使具有独行程序计数器的其他环境能在相同微引擎中执行。因此,第1线程等待存储器送回读出数据的同时,可执行另一线程。这些特征可扩展到微引擎中同时工作的多个线程,以便在数据通路中处理更多工作。附图简要说明图1是采用基于硬件的多线程处理器的通信系统的框图。图2是图1中基于硬件的多线程处理器的具体框图。图3是图1和图2中基于硬件的多线程处理器所用的微引擎功能单元的框图。图3—3是图3中微引擎流水线的框图。图3—4是表示环境切换指令格式的示意图。图3—5是表示通用寄存器地址安排的框图。图4是基于硬件的多线程处理器中所用的强化带宽操作用存储控制器的框图。图4一3是表示图4中SDRAM控制器的仲裁策略的流程图。图4—4是说明对SDRAM控制器进行优化的好处的时序图。图5是基于硬件的多线程处理器中所用的等待时间有限的操作用存储控制器的框屈。图5—3是表示对SRAM控制器进行优化的好处的时序图。图6是图1中处理器的通信总线接口的框图。说明体系结构参照图1,通信系统IO包括一并行、基于硬件的多线程处理器12。该基于硬件的多线程处理器12与诸如PCI总线14这种总线、存储器系统16和第二总线18连接。系统IO对可分解为并行子任务或功能的任务尤其有用。具体来说,硬件多线程处理器12对那些面向带宽的任务而非面向等待时间的任务有用。硬件多线程处理器12具有多重微引擎22,分别配备可对一任务同时作用和独立工作的多重硬件控制的线程。硬件多线程处理器12还包括一中央控制器20,该控制器有助于对硬件多线程处理器12的其他资源加载微码控制,并执行其他通用计算机类型功能,诸如处理协议、异常以及微引擎在边界状态等条件下传出数据分组进行更为细节处理场合对分组处理的额外支持。一实施例中,处理器20是一基于StrongArm(Arm是英国Arm有限公司的商标)的体系结构。通用微处理器20具有一操作系统。通过该操作系统,处理器20可调用功能在微引擎22a22f上操作。处理器20可利用任何得到支持的操作系统,最好用实时操作系统。对按StrongArm结构实现的核心处理器来说,可用诸如微软NT实时、VXWorks和"CUS这种操作系统和可从互联网得到的免费件操作系统。硬件多线程处理器12还包含多个功能微引擎22a22f。这些功能微引擎(微引擎)22a22f分别在硬件及其关联状态方面保持多个程序计数器。实际上,各微引擎22a22f中可同时使相应的多组线程工作,而任何时候仅一个真正操作。一实施例中,存在6个微引擎22a22f,如图所示,每一微引擎22a22f能处理4个硬件线程。6个微引擎22a22f以包括存储器系统16以及总线接口24和28在内的共用资源进行工作。存储器系统16包含同步动态随机存取存储器(SDRAM)的控制器26a和静态随机存取存储器(SRAM)的控制器26b。SDRAM存储器16a和SDRAM控制器26a通常用于处理大量数据,例如处理来自网络数据分组的网络有效负载。SRAM控制器26b和SRAM存储器16b在网络实施例当中实现较小等待时间、迅速存取任务,例如存取查找表、核心处理器20的存储器等。6个微引擎22a22f根据数据特性存取SDRAM16a或SRAM16b。因此,对SR雄存入并读取短等待时间且小带宽的数据,而对SDRAM则存入并读取等待时间不重要的大带宽数据。微引擎22a22f可对SDRAM控制器26a或SR認控制器26b执行存储器指针指令。可通过SRAM或SDRAM的存储器存取说明硬件多线程的优点。举例来说,一线程0所请求的微引擎对SRAM的存取会使SRAM控制器26b启动对SRAM存储器16b的存取。SRAM控制器控制对SRAM总线的仲裁,对SRAM16进行存取,从SRAM16b读取数据,并使数据返回至提出请求的微引擎22a-22b。SRAM存取期间,若微引擎(例如22a)仅具有一个可运作的线程,该微引擎会休眠直到从SRAM返回数据。通过采用每一微引擎22a22f内的硬件环境对换,该硬件环境对换能使具有独特程序计数器的其他环境在该相同微引擎中执行。因此,第一线程(例如线程0)等待所读出数据返回的同时,另一线程例如线程1可起作用。执行期间,线程1可存取SDRAM存储器16a。线程1在SDRAM单元上运作,线程0在SRAM单元上运作的同时,新线程例如线程2可在微引擎22a中现场运作。线程2可运作一些时间直到该线程需要存取存储器或执行某些其他长等待时间操作,诸如对总线接口进行存取。因此,处理器12可同时使总线运作、SRAM运作和SDRAM运作均得到完成,或由一个微引擎22a在其上运作,全部完成或正在工作的总线操作、SR認操作和SDR認操作,并且使另一个线程可用于处理数据通路中更多的工作。硬件环境对换还使任务完成同步。举例来说,2个线程会同时命中相同的共用资源例如SRAM。诸如FBUS(F总线)接口28、SRAM控制器26a和SD画26b等每一个独立功能单元当其完成其中一个微引擎线程环境所请求的任务时,便回报一通知完成运作的标志。微引擎收到该标志,便能判断开通哪一线程。利用硬件多线程处理器的一个例子是用作网络处理器。作为网络处理器,硬件多线程处理器12作为与诸如媒体存取控制器(例如10/100BaseT8进制MAC13a或千兆位以太网13b)这种网络装置的接口。通常作为一网络处理器,硬件多线程处理器12可作为与任何类型通信设备的接口或收发大量数据的接口。在联网应用中起作用的通信系统10可从设备13a和13b接收多个网络数据分组,以并行方式处理这些数据分组。可采用硬件多线程处理器12独立处理各网络数据分组。处理器12的另一应用例是一附录处理器用打印引擎或作为存储子系统(即RAID磁盘存储器)的处理器。再一应用是作为配对引擎。举例来说,在证券业中,电子交易的出现要求用电子配对引擎来搓合买方和卖方的报单。可在系统10上完成上述和其他并行任务。处理器12包括一将该处理器与第2总线18连接的总线接口28。一实施例中,总线接口28将处理器12与所谓的FBUS18(FIFO总线)连接。FBUS接口28负责控制处理器12和形成该处理器与FBUS18的接口。FBUS18是64位宽的FIFO总线,用于形成与媒体存取控制器(MAC)设备的接口。处理器12包括一第二接口(例如PCI总线接口24),该接口将驻留PCI总线14上的其他系统组成部分与处理器12连接。PCI总线接口24提供一至存储器16(例如SDR認存储器16a)的高速数据通路24a。通过该通路,数据可从SDRAM16a通过直接存储器存取(DMA)的传送经PCI总线14转移。硬件多线程处理器12支持图像传送。硬件多线程处理器12能用多个DMA通道,因而若画A传送的一个目标忙,另一讓A通道便可接管PCI总线对另一目标传送信息,以维持处理器12高效。此外,PCI总线接口还支持目标和主机操作。目标操作是总线14上的从属装置通过对该操作起从属作用的读和写存取SDR細场合的操作。主机操作中,处理器核心20直接对PCI接口24收、发数据。每一功能单元连接1条或多条内部总线。下文将说明,内部总线是32位的双总线(即1条总线用于读,另1条用于写)。硬件多线程处理器12结构上还做成处理器12中内部总线带宽之和大于处理器12所接外部总线的带宽。处理器12包含内部核心处理器总线,例如ASB总线(高级系统总线AdvancedsystemBus),该总线将处理器核心接到存储控制器26a、26b和ASB译码器30,后文将说明。ASB总线是配合StrongArm处理器核心用的所谓AMBA总线的子集。处理器12还包含将微引擎单元接到SRAM控制器26b、ASB变换器30和FBUS接口28的专用总线34。存储器总线38将存储控制器26a、26b接到总线接口24、28和包含用于引导操作等的快速擦写R0M16c的存储器系统16。参照图2,每一微引擎22a22f包含仲裁器,检查标志以判定可提供的工作线程。来自任一微引擎22a22f的任何线程都可访问SDRAM控制器26a、SR細控制器26b或FBUS接口28。存储控制器26a和26b分别包含多个队列,以存放待处理的存储器指针请求。这些队列保持存储器指针的次序或者安排存储器指针来优化存储器带宽。举例来说,若线程0相对线程1独立或者无关,线程1和O便没有理由无法不按顺序完成其存储器指针指向SRAM单元。微引擎22a22f对存储控制器26a和26b发布存储器指针请求。微引擎22a22f以足够的存储器指针操作充满存储器子系统26a和26b,使得该存储器子系统26a和26b成为处理器12运作的瓶颈。若存储器子系统16充满本质上独立的存储器请求,处理器12便可进行存储器指针分类。该存储器指针分类改善能达到的存储器带宽。如下文所述,存储器指针分类减少存取SRAM时所出现的空载时间或空泡。通过存储器指针指向SR雄,在读写之间对信号线电流方向的切换,产生等待SRAM16b与SRAM控制器26b连接的导体上的电流稳定的空泡或空载时间。也就是说,在总线上驱动电流的驱动器需要在状态变化前稳定。因此,读后接着写的重复周期会使峰值带宽下降。存储器指针分类允许组织指针指向存储器,使得长串的读出后面接着长串的写入。这可用于使流水线的空载时间最少,以有效达到接近最大可用带宽。指针分类有助于保持并行硬件环境线程。对于SDRAM,指针分类使一存储组对另一存储组可隐藏预充电。具体而言,若存储器系统166组织成奇数存储组和偶数存储组,而处理器在奇数存储组上工作,存储控制器便可在偶数存储组启动预充电。若存储器指针在奇数和偶数存储组之间交替变化,便可预充电。通过安排存储器指针的顺序交替访问相对存储组,处理器12改善SDRAM的带宽。此外,还可采用其他优化。举例来说,可采用可归并的运作在存储器存取前归并场合的归并优化、通过检査地址不重新打开存储器开放页面场合的开放页面优化、将在下面说明的链接以及刷新机制。FBUS接口28支持MAC装置所支持的各端口用的收和发标志,还支持表明业务何时得到保证的中断标志。FBUS接口28还包含对来自FBUS18的输入数据组首部进行处理的控制器28a。控制器28a提取该分组的首部,并且在SR認中进行可微编程源/宿/协议散列査找(用于地址平滑)。如果散列未成功分辨,将分组首部送到处理器核心20进行附加处理。FBUS接口28支持下列内部数据事务至/来自微引擎从SDRAM单元写入读出至SDRAMFBUS18是标准业界总线,其中包含例如64位宽的数据总线、地址边带控制和读/写控制。FBUS接口28能用一系列输入输出FIF029a29b输入大量数据。微引擎22a22f从FIF029a29b取得数据,命令SDRAM控制器26a将来自己从总线18上的装置得到数据的接收FIFO的数据移入FBUS接口28。该数FBUS单元(共用总线SRAM)FBUS单元(经专用总线)FBUS单元(经MBUS)据可通过存储控制器26a,经直接存储器存取送到SDRAM存储器16a。同样,微引擎能将从SDRAM26a至接口28的数据经FBUS接口28移出到FBUS18。在微引擎之间分配数据功能。经由命令请求连接SRAM26a、SDRAM26b和FBUS28。命令请求可以是存储器请求或FBUS请求。例如,命令请求能将数据从位于微引擎22a的寄存器移到共用资源,例如移到SDRAM位置、SRAM位置、快速擦写存储器或某MAC地址。这些命令送出到每一功能单元和共用资源。然而,共用资源不需要保持数据的局部缓存。反之,共用资源存取位于微引擎内部的分布数据。这使微引擎22a22f可局部存取数据,而不是对总线上存取的仲裁,冒争用总线的风险。利用此特征,等待数据内部到达微引擎22a22f的阻塞周期为0。连接这些资源(例如存储控制器26a和26b)的例如ASB总线30、SRAM总线34和SDRAM总线38等数据总线具有足够的带宽,使得无内部阻塞。因此,为了避免阻塞,处理器12具有每一功能单元配备内部总线最大带宽至少2倍的带宽要求。例如,SDRAM可以83MHz运作于64位宽总线。SRAM数据总线可具有读写分开的总线,例如可以是运作于166MHz的32位宽读出总线和运作于166MHz的32位宽写入总线。也就是说,运作于166Mhz的64位实际上是SDRAM带宽的2倍。核心处理器20也可存取共用资源。核心处理器20经总线32直接与SDRAM控制器26a、总线接口24和SRAM控制器26b通信。然而,为了访问微引擎22a22f和任一微引擎22a22f的传送寄存器,核心处理器24经ASB变换器30在总线34上存取微引擎22a22f。ASB变换器30可在实体上驻留于FBUS接口28,但逻辑上不同。ASB变换器30进行FBUS微引擎传送寄存器位置与核心处理器地址(即ASB总线)之间的地址变换,以便核心处理器20能访问属于微引擎22a22c的寄存器。虽然如下文所述微引擎22可用寄存器组交换数据,但还提供便笺存储器27,使微引擎能将数据写到该存储器,供其他微引擎读取。便笺式存储器27连接总线34。处理器核心20包含在5级流水线实现的RISC核心50,该流水线进行在单个周期内对1个操作数或2个操作数的单周期移位,提供乘法支持和32位滚筒型移位支持。此RISC核心50具有标准StrongArn^体系结构,但由于性能上的原屈,用5级流水线实现。处理器核心20还包含16K字节指令快速缓存器52、8K字节数据快速缓存器54和预读取流缓存器56。核心处理器20执行与存储器写入和指令读取并行的算术运算。核心处理器20经ARM规定的ASB总线与其他功能单元形成接口。ASB总线是32位双向总线32。微引擎参照图3,示出微引擎22a22f中一示范例,例如微引擎22f。微引擎包含控制存储器70,在一实施例中该存储器包含这里达1024字(每字32位)的RAM。该RAM存储一微程序。该微程序可由核心处理器20加载。微引擎22f还包含控制器逻辑72。该控制器逻辑包含指令译码器73和程序计数器(PC)单元72a72d。按硬件维持4个微程序计数器72a72d。微引擎2f还包含环境事件切换逻辑74。该环境事件逻辑74从例如SRAM26a、SDRAM26b或处理器核心20、控制及状态寄存器等共用资源的每一个接收消息(例如序号#事件响应SEQJLEVENT—RESPONSE、FBI事件响应FBI—EVENT—RESPONSE、SRAM事件响应SRAM—EVENT—RESPONSE、SDR旭事件响应SDRAM—EVENT—RESPONSE和ASB事件响应ASB一EVENT—RESPONSE)。这些消息提供有关请求的功能是否完成的信息。根据线程请求的功能是否完成和信号传送是否完成,线程需要等待该完成信号,如果线程能工作,便将该线程放到可用线程列表(未示出)。微引擎22a可具有最多例如4个可用线程。除执行线程局部所有的事件信号外,微引擎22还用全局的信令状态。借助该信令状态,执行线程可对全部微引擎22广播信号状态。接收请求可行信号后,微引擎中的全部任何线程可按这些信令状态分支。可用这些信令状态判定资源的可用性或资源提供服务是否适当。环境事件逻辑74具有对4个线程的仲裁。一实施例中,仲裁是一循环机制。可用包括优先级排队或加权合理排队在内的其他技术。微引擎22f还包括一执行框(EB0X)数据通路76,其中包含算术逻辑单元76a和通用寄存器组76b。算术逻辑单元76a执行算术和逻辑功能以及移位功能。寄存器组76b具有数量较多的通用寄存器。图3—4中将说明,此实施例中,第1组(组A)具有64个通用寄存器,第2组(组B)也具有64个。这些通用寄存器形成窗口(后文将说明),以便其可相对寻址和绝对寻址。微引擎22f还包含写传送寄存器堆栈78和读传送堆栈80。这些寄存器也形成窗口,以便其可相对寻址和绝对寻址。资源的写入数据位于写传送寄存器堆栈78。读寄存器堆栈80则用于从共用资源返回的数据。分别来自例如SR認控制器26a、SDRAM控制器26b或核心处理器20之类共用资源的事件信号,与数据的到达串行或并行提供给环境事件仲裁器74,提醒线程数据可用或数据已发送。传送寄存器组78和80都通过数据通路连接执行框(EBOX)76。一实施例中,读传送寄存器具有64个寄存器,写传送寄存器也有64个。如图3—3所示,微引擎数据通路维持5级微流水线82。该流水线包含査找微指令字82a、形成寄存器文件地址82b、从寄存器文件读操作数82c、ALU或移位或比较运算82d和结果写回寄存器82e。通过提供回写数据旁路至ALU/移位器单元,假定按寄存器文件而非R認实现寄存器,微引擎可执行寄存器文件同时读写,完全隐藏写操作。SDR認接口26a在读数据上对提出请求的微引擎送回一表明是否在读请求上出现奇偶差错的信号。微引擎采用任何送回的数据时,微引擎的微码负责校验SDRAM读奇偶标志。校验该标志时,如果设定该标志,分支动作将其消除。仅在启用SDRAM供校验时发送奇偶标志,SDRAM受奇偶性防护。微引擎和PCI单元是通知奇偶差错的唯一请求者。因此,如果处理器核心20或FIF0要求奇偶性保护,微引擎就按请求帮助。微引擎22a22f支持条件分支。分支判决结果是先前微控制指令设定条件码时,出现条件分支执行时间(不包含转移)最坏的情况。表l示出该等待时间如下I1I2|3|4|5|6|7|8|------------------+----+----+----+----+——_—+----+---+____+微存储查找|nl|cb|n2|XX|bl|b2(b3|b4|寄存器地址生成I|nl|cb|XX|XX|bl|b2|b3|寄存器文件查找II|nl|cb|XX|XX|bl|b2|ALU/shifter/cc||||nl|cb|XX|XX|bl|写回(IIm2||nl|cb|XX|XX|其中,nx是预分支微字(nl设定为cc)cb是条件转移bx是后分支微字xx是异常微字如表1所示,直到周期4才设定条件码nl,能进行分支判决,这在本例中使用周期5上査找分支路径。微引擎由于必须在分支路径用操作bl填充流水和n3(紧接分支后的2个微字),带来2个周期的分支等待时间损失。如果不进行分支,就不吸收微字,按常规继续执行。微引擎有若干机制用于减少或消除有效分支等待时间。微引擎支持延迟分支。延迟分支是微引擎允许在分支后实施分支前出现1个或2个微字的情况(即分支作用在时间上"延迟")。因此,如果能找到有用的工作填补分支微字后所浪费的周期,就能隐去分支等待时间。下面示出延迟l周期的分支,其中允许在cb后、bl前执行n2:11I2|3|4|5|6|7|8|-----------------+—+—+—+—+-----(■—+—+—+微存储查找(nl!cb(n2iXXibl!b2lb3!b4I寄存器地址生成I|nl|cb|n2|XX|M|b2|b3|寄存器文件查找Jjjnl|cbjn2iXXjbl|b2|ALU/shifter/cc||1jnl|cb|n2|XX|bl|写回!III|nl|cb|n2|XX|下面示出2周期的延迟分支,其中n2和n3都允许在分支到bl出现前完成。注意,仅分支前在微字设定条件码时,允许2周期分支延迟。I1!2|3!引5|6|7|8|9|微存储查找In〗!cbIn2In3IblIb2Ib3Ib4Ib5I寄存器地址生成1In"cbln21n3|bllb2|b3|b4i寄存器文件查找IIjnl!cb|n2|n3|bl|b2|b3IALU/shifter/cc||||nl|cb|n2|n3|bl|b2|写回!1I1Inl|cb|n2|n3|bl|微引擎也支持条件码估值。如果分支前判决分支的条件码设定2个或多个微字,则由于能早1周期进行分支判决,能消除1周期的等待时间如下iH2|3|4j516|7j8|_____________+—+—+—+—-+—+—+—+—微存储查找|nl|n2|cb!XX!bl!b2|b3(b4!寄存器地址生成!|nl|n2!cb|XX|bl|b2|b3|寄存器文件查找jijni|n2|cb|XXjbl1b2iALU/shifter/cc|||(nl|n2|cb|XX|blI写回lIjI|nl|n2jcb|XX|此例中,nl设定条件码,n2不设定条件码。因此,可在周期4而不是周期5进行分支判决,以消除1周期的分支等待时间。下面的例子中,将l周期延迟与条件码提早设定加以组合,以完全隐去分支等待时间<table>tableseeoriginaldocumentpage15</column></row><table>其中,在l周期延迟分支前的2周期设定条件码cc。在不能提前设定条件码的情况下(即条件码设定在分支前的微字中时),微引擎支持试图减少1周期留下的暴露分支等待时间的分支猜测。通过"猜测"分支路径或串行路径,微定序器在确切知道执行何路径前预先取得猜测路径1。猜测如果正确,就消除1周期分支等待时间如下<table>tableseeoriginaldocumentpage15</column></row><table>其中猜测进行分支而且也进行分支。如果微码猜测进行的分支不正确,微引擎仍然浪费l周期<table>tableseeoriginaldocumentpage15</column></row><table>其中猜测进行分支但不进行分支。然而,微码猜测不进行分支时,有差异地分配等待时间损失。对猜测不进行分支而且也不进行分支而言,不存在浪费周期,如下所示1微存储查找寄存器地址生成寄存器文件查找ALU/shifter/cc写回I213|4|5|6|718||nl|cb|nl(n2|n3(n4|n5|n6|IInlIcbInl(n2(n3(n4(n5(II|nl|cb|nl|n2|nl|b4|IiI|nl|cb|nl|n2|n3IIIII|nl|cb|nl(n21然而,对猜测不进行分支但进行分支而言,存在2个浪费周期如下I1I2|3|4j5|6|7|8|微存储查找|nl|cb|nl|XX|bl|b2|b3|b4!寄存器地址生成I|nl|cb|XX|XX|bl|b2|b3|寄存器文件查找JIinl|cb|XX|XX|bl|b2|ALU/shifter/cc||||n|cb|XX|XX|bl|写回IIiI|nl|cb!XX|XX|微引擎可组合分支猜测和1周期分支延迟,以进一步改善结果。对猜测进行分支加上1周期延迟分支而且也进行分支而言,其结果为I1i2|3|4|5|6|7|8|微存储查找inlIcb!n2iblIb2ib3!b4!b5I寄存器地址生成I|nl|cb|n2|bl|b2|b3|b4|寄存器文件查找II|nl|cb|n2|bl|b2|b3|ALU/shifter/cc|||inljcb)n21bl|b2|写回jIJI|nl|cb|n2|bl|上述情况下,通过执行n2和正确猜测分支方向,隐去2周期分支等待时间。如果微码猜测不正确,仍暴露1周期等待时间如下II!2|3|4|5|6|7|8j9|-------------------+—+——+——+——+—+—+——+——+——+微存储查找InlIcbIn2IXXIn3In4In5In6In7I寄存器地址生成IInl|cb|n2iXX|n3in4|n5|n6|寄存器文件查找II|nl|cb|n2|XX|n3|n4|n5|ALU/shifter/cc||||nl|cb|n2|XX|n3|n4|写回IIIIinl|cb!n2|XXin3|其中,猜测进行分支加上1周期延迟分支但不进行分支。如果微码正确猜测不进行分支,流水线按常规不受干扰的情况顺序进行。微码错误猜测不进行分支,微引擎又暴露1周期非生产性执行如下I1I2|3|4|5j6!7!8191微存储查找Inljcbln2iXXIbl|b2|b3|b4|b5|寄存器地址生成I|nl|cb|n2|XX|bl|b2|b3|b4|寄存器文件查找II|nl|cb|n2|XX|bl|b2|b3|ALU/shifter/cciI||nl|cb|n2|XX|bl|b2|写回IIII|nl|cb|n2|XX|bl|其中,猜测不进行分支但进行分支,而且nx是预分支微字(nl设定为cc)cb是条件转移bx是后分支微字xx是异常微字在转移指令的情况下,由于直到ALU级中存在转移的周期结束才知道分支地址,造成3个额外周期的等待时间如下I1I2|3|4|5161718!9|微存储查找inlUp|XXiXX|XX|jlIj2|j3|j4|寄存器地址生成Iinl|jp|XX|XX|XX|jl|j2|j3|寄存器文件查找IIjnUJp|XX|XX|XX|jl|j2|ALU/shifter/ccIII|nl|jp|XX|XX|XX|jl|写回j!ii|nlIJpjXXlXXjXXi环境切换参照图3—4,其中示出环境切换指令的格式。环境切换是促使选择不同环境(及其相关联PC)的特殊分支形式。环境切换也引入一些分支等待时间。考虑以下的环境切换|I|2|3!4|5|6|7|8|9|------------------+——+—+——+—+—+——+——+—斗一+孩t存储查找IolIcajbr1nlIn2In3In4In5In6I寄存器地址生成!|olicaiXXlnl|n2|n3!n4|n5i寄存器文件查找!(|ol(ca(XX(nl|n21n3|n4|ALU/shifter/cc||||ol!cajXX(nl|n2|n3|写回jIi!|ol|ca|XX|nl|n2|其中,ox是旧环境流br是旧环境中分支微字ca是环境再仲裁(致使环境切换)nx是新环境流XX是异常微字环境切换中,致使"br"微字异常,以避免保留正确旧环境PC会造成的控制和定时复杂性。按照分支前在微字上设定的ALU条件码操作的条件分支可选择0、1或2周期分支延迟模式。所有其他分支(包括环境再仲裁)可选择O或l周期分支延迟模式。可设计体系结构使环境仲裁微字在前置分支的分支延迟窗内、转移或使该微字为非法任选项。也就是说,某些实施例中,由于如上所述原因,其会造成保存旧环境PC过度复杂,流水线中分支转换时不允许发生环境切换。还可设计体系结构,使在前置分支的分支延迟窗内的分支、转换或者环境仲裁微字非法,以免分支行为复杂且不可预测。每一微引擎22a22f支持4个环境的多线程执行。其原因之一是使1个线程可正好在另一线程发布存储器指针后开始执行,并且必须等待直到该指针完成后才进行更多工作。由于存储器等待时间显著,此性能对维持微引擎硬件有效执行至关重要。换句话说,若仅支持一个线程执行,微引擎就会闲置大量周期,等待指针返回,从而使总的计算吞吐量减少。多线程执行通过跨越多个线程执行有用的独立工作,使微引擎可隐去存储器等待时间。提供2种同步机制,以便使线程可发布SRAM或SDR細指针,并且在完成该访问时,接着与下-个时间点同步。一种机制是立即同步。立即同步中,微引擎发布指针,并且立即换出该环境。相应的指针完成时便发信号通知该环境。一旦发信号,便换回环境,以便当出现环境对换事件且轮到其运作时执行。因此,从单一环境指令流的角度看,微字在发出存储器指针后要到指针完成才得以执行。第2种机制是延迟同步。延迟同步中,微引擎发布指针后,继续执行一些其他与指针无关的有用工作。过些时间,变成需要线程执行流与所发布指针的完成同步后再进一步工作。这时,执行同步微字,换出当前线程,并且在过一些时间完成指针时将其换回,或者由于已经完成指针而继续执行当前线程。用以下2种不同信令方案实现延迟同步。若存储器指针与传送寄存器关联,在设定或消除相应传送寄存器有效位时便产生触发线程的信号。举例来说,设定寄存器A有效位时,便发出在传送寄存器A中存数据这种SRAM读出的信号。若存储器指针与传送FIFO或接收FIFO关联,而不是与传送寄存器关联,在SDRAM控制器26a中完成访问时产生信号。微引擎调度器中仅保持每一环境一种信号状态,因而此方案中只能存在一个待处理信号。至少有2种可设计微控制器微程序的一般操作范例。一种是优化总体的微控制器计算吞吐量和总体的存储器带宽,其代价是花费一个线程执行等待时间。当系统具有对非相关数据分组执行每一微引擎多线程的多重微引擎时,此范例会有意义。第2种范例是以总体的微引擎计算吞吐量和总体存储器带宽的代价来优化微引擎执行等待时间。此范例涉及以实时约束执行线程,该约束支配按某规定时间必须绝对完成的某工作。这种约束要求给单一线程执行的优化比诸如存储器带宽或总体计算吞吐量之类其他考虑高的优先级。实时线程隐含仅执行一个线程的单一微引擎。目标是使单一实施线程尽快执行,而多线程的执行妨碍此性能,所以不处理多线程。在发布存储器指针和环境切换方面,这2种范例的编码方式显著不同。在实时情况下,目标是尽快发布尽量多的存储器指针,以便使这些指针所带来的存储器等待时间最短。已尽量提早发布尽量多的指针,目标是微引擎与指针尽可能并行执行尽量多的计算。与实时优化时相对应的计算流是0)发布存储器指针1o)发布存储器指针2o)发布存储器指针30)进行与存储器指针l、2、3无关的工作0)与存储器指针1的完成同步o)进行取决于存储器指针1且与存储器指针2和3无关的工作o)根据前面的工作发布新存储器指针o)与存储器指针2的完成同步o)进行取决于存储器指针1和2且与存储器指针3无关的工作o)根据前面的工作发布新存储器指针o)与存储器指针3的完成同步o)进行取决于全部3个指针完成的工作o)根据前面的工作发布新存储器指针反之,对吞吐量和带宽的优化则采取不同方法。对微引擎计算吞吐量和总体存储器带宽而言,不考虑单线程执行等待时间。为了实现这点,目标是对每一线程在微程序上均匀分隔存储器指针。这将给SRAM和SDRAM的控制器提供均匀的存储器指针流,并且使总可获得一线程的概率最大,以隐去换出另一线程时带来的存储器等待时间。寄存器文件地址类型参照图3—5,所存在的2个寄存器地址空间是局部可存取寄存器和全部微引擎均可存取的全局可存取寄存器。通用寄存器(GRP)做成2个分开组(A组和B组),其地址逐字交错,使得A组寄存器具有LSB=0,B组寄存器具有LSB二1。每组可进行本组内2个不同字的同时读写。整个组A和组B上,寄存器集合76b也组织成每一线程具有可相对寻址的32个寄存器的4个窗76b。76b:,。因此,线程0在77a(寄存器0)找到其寄存器0,线程1在77b(寄存器32)找到其寄存器0,线程2在77c(寄存器64)找到其寄存器0,线程3在77d(寄存器96)找到其寄存器0。支持相对寻址,以便多线程能准确使用相同的控制存储器和位置,但访问不同的宁寄存器窗,并执行不同功能。寄存器窗寻址和寄存器组寻址的使用,仅在以微引擎22f中以双端口RAMS提供必要的读带宽。这些开窗的寄存器不需要保存环境切换之间的数据,从而消除环境对换文件或堆栈的常规推入和推出。这里环境切换对从一环境到另一环境的变化具有0周期的开销。相对寄存器寻址将寄存器组划分成跨越通用寄存器集合地址宽度的窗。相对寻址允许访问相对于窗起始点的任何窗。此体系结构内也支持绝对寻址,其中,通过提供寄存器的准确地址,任何线程可访问任一绝对寄存器。通用寄存器48的寻址可出现2种方式,取决于微字格式。这2种方式是绝对方式和相对方式。绝对方式中,在7位源段(a6a0或b6b0)直接指定寄存器地址的寻址:AGPR:BGPR:S國/ASB:SD隨在8位宿段(d7-76543210+..+..+..+..+..++..+..+Ia6i01a5Ia41a3Ia21alIa01a6=0|b6|1|b5|b4|b3|b2|bl|b0|b6=0a6IIa4I0Ia3Ia2IalIa0Ia6=l,a5=0,a4=0Ia6Ia5Ia410Ia3Ia2IalIa0Ia6=l,a5=0,a4=l-dO)直接指定寄存器地址76543210AGPR:Id7|d6|d5|d4|d3|d2|dl|d0|BGPR:id7|d6|d5id4|d3|d2|dl|d0|SRAM/ASB:id7Id6Id5Id4Id3Id2IdlId0iSDRAM:|d7|d6|d5|d4|d3Id2IdlIdOd7=0,d6=0d7=0,d6=ld7=l,d6=0,d5=0d7=l,d6=0,d5=l若〈a6:a5〉二l,1,<b6:b5>=l,1或〈d7:d6X,1,低端位便变换成环境相对地址字段(下文说明)。当A、B绝对字段指定非相对A或B源地址时,仅能对SRAM/ASB和SDRAM地址空间的低端半部分寻址。实际上,读绝对方式的SRAM/SDRAM具有有效地址空间。但由于该限制不适用宿段,写SRAM/SDRAM可用全地址空间。相对方式中,在按5位源段(a4a0或b4b0)规定的环境空间内偏置指定地址的寻址76543210+..+..+..4—十…+..++..+AGPR:la4i0l环境la2lalla0iBGPR:Ib7Ui环境lb2lbllb01SRAM/ASB:iab410Iab3I环境|bl|abO|SDRAM:|ab4|0iab3|环境|bl|abOa4=0b4=0ab4二l,ab3=0ab4=l,ab3=l或者在按6位宿段(d5d0)规定的环境空间内偏置指定地址的寻址76543210+..+..++..+.+."+..+..+AGPR:Id5ld4l环境d2|dl|d0|d5=0,d4=0BGPR:Id5ld4l环境ld2ldlid01d5=0,d4=lSRAM/ASB:|d5|d4|d3|环境|dl|d0|d5二l,d4=0,d3=0SDRAM:|d5|d4|d3|环境|dl|d0|d5=l,d4=0,d3=l如果〈d5:d4X,1,则宿地址找不到有效寄存器,因而不回写宿操作数。从微引擎和存储控制器可全局存取以下寄存器散列单元寄存器便笺和共用寄存器接收FIFO和接收状态FIFO发送FIFO发送控制FIFO不中断驱动微引擎。执行每一微流直到完成为止,根据处理器12中其他装置用信号通知的状态选择一新流。参照图4,SDRAM存储控制器26a包含存储器指针队列90,其中存储器指针请求从各微引擎22a22f到达。存储控制器26a包括一仲裁器91,该仲裁器选择下一微引擎指针请求至任何功能单元。设一个微引擎提出访问请求,该请求会来到SDRAM控制器26a内部的地址和命令队列90。若该访问请求具有称为"经优化存储位"的位集合,便将进入的指针请求分类为偶数组队列90a或奇数组队列90b。若存储器指针请求没有存储器优化位集合,系统设定就转入一排序队列90c。SDRAM控制器26是一FBUS接口28、核心处理器20和PCI接口24所共用的资源。SDRAM控制器26还维持一用于执行读出-修改-写入自动操作的状态机。SDRAM控制器26还对SDRAM的数据请求进行字节对准。命令队列90c保持来自微引擎的指针请求的排序。根据一系列奇数和偶数组指针,可要求信号仅在指向偶数组和奇数组两者的存储器指针序列完成时返回信号。若微引擎22f将存储器指针分类成奇数组指针和偶数组指针,并且存储器指针在奇数组前漏出其中一个组(例如偶数组),但在最后的偶数指针上信号肯定,便可想象存储控制器26a可返回信号通知微引擎已完成存储器请求,即使奇数组指针不提供服务也这样。这种现象可造成一相干问题。通过提供排序队列90c使微引擎可让多个待处理存储器指针中仅最后的存储器指针通知完成,从而可避免上述情况。SDR颜控制器26a还包含高优先级队列90d。高优先级队列90d中,来自个微引擎的输入存储器指针直接进入高优先级队列,并且以高于其他队列中其他存储器指针的优先级进行工作。偶数组队列90a、奇数组队列90b、命令队列90c和高优先级队列90d,所有这些队列都在一个RAM结构中实现。该结构逻辑上分成4个不同的窗,各窗分别具有其本身首部和尾部指针。由于填入和漏出操作仅是单一输入和单一输出,可将它们置于同一RAM结构以提高R認结构密度。SDR謹控制器26a还包括核心总线接口逻辑即ASB总线92。ASB总线接口逻辑92形成核心处理器20与SDRAM控制器26a的接口。ASB总线是一包含32位数据通路和28位地址通路的总线。通过MEMASB数据设备98(例如缓存器)对存储器存取数据。MEMASB数据设备98是一写数据队列。若有从核心处理器20经ASB接口92进入的数据,该数据可存入MEMASB设备98,接着通过SDRAM接口110从MEMASB设备98移至SDRAM存储器16a。虽然未示出,但可对读出提供相同的队列结构。SDRAM控制器26a还包括一引擎97从微引擎和PCI总线拉进数据。附加队列包括保持若干请求的PCI地址队列94和ASB读/写队列96。存储器请求经复用器106送至SDRAM接口110。复用器106由SDR細仲裁器91控制,该仲裁器检测各队列满员程度和请求状态,并根据优先级业务控制寄存器100存放的可编程值,从所检测的情况判定优先级。-旦对复用器106的控制选择-一存储器指针请求,就将此存储器指针请求送至一译码器108对其进行译码,并生成一地址。该经过解码的地址送至SDRAM接口110,将其分解成行地址和列地址选通信号来存取SDRAM16a,并通过将数据送至总线112的数据线16a读出或写入数据。一实施例中,总线112实际上是2条分开的总线,而不是单一总线。该分开的总线会包含连接分布式微引擎22a22f的读出总线和连接分布式微引擎22a22f的写入总线。SDRAM控制器26a其特征在于,在队列90中存储存储器指针时,除可设定该经优化存储位外,还有"链接位"。该链接位当其设定时允许对邻接存储器指针专门处理。如上文所述,仲裁器12控制选择哪一微引擎在命令总线上将存储器指针请求提供给队列90(图4)。对链接位的肯定将控制仲裁器使之选择先前请求该总线的功能单元,这是因为对链接位的设定表明微引擎发出一链接请求。设定链接位时,会按队列90接收邻接存储器指针。由于邻接存储器指针是来自单一线程的多存储器指针,这些邻接指针通常按排序队列90c存储。为了提供同步,存储控制器26a仅需要在完成时在链接存储器指针未端给出信号。但经优化存储器链接中,(例如经优化存储位和链接位设定时)存储器指针便会进入不同组,并且在其他组充分露出前有可能对发布信号"完成"的其中一个存储组完成,这样就破坏相干性。因此,控制器IIO用链接位保持来自当前队列的存储器指针。参照图4一3,示出SDRAM控制器26a中仲裁策略的流程表示。仲裁策略优待链接微引擎存储器请求。处理过程115通过链接微引擎存储器指针请求的检査115a开始进行。过程115停留于链接请求,直到使链接位清零。过程对后面接着PCI总线请求115c、高优先级队列业务115d、相对组请求115e、排序队列请求115f和相同组请求115g的ASB总线请求115b进行检查。对链接请求提供完整的业务,而对业务115b115d则按循环顺序提供。仅当业务115a115d完全漏出时,该过程才进行业务115e115g的处理。当先前SDRAM存储器请求对链接位设定时,设定所链接的微引擎存储器指针请求。当设定链接位时,仲裁引擎便再次仅对相同队列服务,直到链接位清零。ASB处于等待状态时对StrongArm核心带来严重性能损失,故ASB优先级高于PCI。因为PCI的等待时间要求,PCI优先级高于微引擎。但就其他总线而言,该仲裁优先级可能不同。如图4—4所示,示出的是不具有有效存储器优化和具有有效存储器优化的典型存储器定时。可以知道,对有效存储器优化的利用使总线应用程度最大,从而隐去实际SDRAM装置内固有的等待时间。本例中,非优化存取可用14周期,而优化存取则可用7周期。参照图5,其中示出SR雄的存储控制器26b。该存储控制器26b包括一地址及命令队列120。存储控制器26a(图4)具有一基于奇数和偶数分组的存储器优化队列,存储控制器26b则根据存储器操作类型(即读出或写入)优化。地址及命令队列120包括一高优先级队列120a、一作为SR認执行的主导存储器指针功能的读队列120b、以及一通常包括要非优化的全部SRAM读写的排序队列120c。尽管未图示,地址及命令队列120也可包括一写队列。SRAM控制器26b还包括核心总线接口逻辑即ASB总线122。ASB总线接口逻辑122形成核心处理器20与SRAM控制器26b的接口。ASB总线是一包括32位数据通路和28位地址通路的总线。通过MEMASB数据设备128(例如缓存器)对存储器存取数据。MEMASB数据设备128是一写数据队列。若有从核心处理器20通过ASB接口122的进入数据,该数据可存入MEMASB设备128,接着通过SRAM接口140从MEMASB设备128移至SRAM存储器16b。虽未图示,但可提供相同的队列结构用于读出。SR認控制器26b还包括一引擎127从微引擎和PCI总线拉进数据。存储器请求经复用器126送至SDRAM接口140。复用器126由SDRAM仲裁器131控制,该仲裁器检测各队列满员程度和请求状态,并根据优先级业务控制寄存器130存放的可编程值,从所检测的情况判定优先级。一旦对复用器126的控制选择一存储器指针请求,就将此存储器指针请求送至一译码器138对其进行译码,并生成一地址。SRAM单元保持对经存储器映射的离片SRAM和扩展ROM的控制。SRAM控制器26b可对例如16M字节寻址,而例如用于SRAM16b的8M字节映射保留用于专用功能,其中包括通过快速擦写R0M16的引导空间;MAC器件13a、13b用的控制台端口存取访问;以及对关联(RMON)计数器的存取。SR雄用于局部査找表和队列管理功能。SRAM控制器26b支持下列事务微引擎请求(经专用总线)至/自SRAM核心处理器(经ASB总线)至/自SRAM。SRAM控制器26b进行存储器指针分类以使SR雄接口140至存储器16b的流水线中延迟(空泡)最少。SR認控制器26b根据读功能进行存储器指针分类。一个空泡可以是1周期或者2周期,取决于所用存储器件的类型。SRAM控制器26b包括一锁定査找器件142,是一8输入项地址内容可寻址存储器用于对读出锁定的査找。每一位置包括一由后续读出-锁定请求检査的有效位。地址及命令队列120还包括一读出锁定失效队列120d。该队列120d用于保持因存储器一部分存在锁定而失效的读存储器指针请求。也就是说,其中一个微引擎所发布的存储器请求所具有的读出锁定请求在地址及控制队列120中处理。该存储器请求将对排序队列120c或读队列120b运作,并将其识别为读出锁定请求。控制器26b将存取锁定查找器件142以判断该存储位置是否已经锁定。若此存储位置根据任何先前的读出锁定请求而被锁定,该存储锁定请求将失效,并将存入读出锁定失效队列120d。若解锁或者142表示该地址未锁定,SRAM接口140就将用该存储器指针的地址对存储器16b进行常规的SR認地址读/写请求。命令控制器及地址发生器138也会将该锁定输入锁定査找器件142,以便后续读出锁定请求将发现该存储位置被锁定。锁定需要结束后通过对程序中微控制指令的运作来使存储位置解锁。通过对CAM中有效位清零将该位置解锁。解锁后,读出锁定失效队列120d变成最高优先级队列,给丢失的全部排队的读出锁定一次机会发出一存储器锁定请求。如图5—3所示,示出的是没有有效存储器优化和具有有效存储器优化的静态随机存取存储器的典型时序。可以知道,分组读写改善消除死周期的周期时间。参照图6,示出的是微引擎22和FBUS接口逻辑(FBI)之间的通信。网络应用中的FBUS接口28可对来自FBUS18的来向数据分组进行首部处理。FBUS接口28所进行的一项关键功能是对数据分组首部的提取和对SRAM中可微编程源/宿/协议散列查找。若该散列不能成功分辨,数据分组首部就提升至核心处理器28用于更为高级的处理。FBI28包含发送FIFO182、接收FIFO183、散列单元188以及FBI控制及状态寄存器189。这4个单元通过对微引擎中与传送寄存器78、80连接的SRAM总线28的时间复用存取与微引擎22通信。也就是说,全部对微引擎的收发通信都通过传送寄存器78、80。FBUS接口28包括一用于在SRAM不用SRAM数据总线(部分总线38)的时间周期期间将数据推入传送寄存器的推状态机200以及一用于从相应微引擎中的传送寄存器当中读取数据的拉状态机202。散列单元包括一对FIFO18a、188b。该散列单元判定FBI28收到一FBI散列请求。散列单元188从进行调用的微引擎22当中取得散列键。读取该键并散列后,将索引号送回进行调用的微引擎22。在单个FBI散列请求下,进行多达3次散列。总线34和38均为单向SDRAM推/拉数据总线以及S总线推/拉数据总线。上述总线每一条需要对适当微引擎22的传送寄存器提供读/写控制的控制信号。传送寄存器通常要求保护其环境控制以保证读出的正确性。具体来说,若线程1用写传送寄存器对SDRAM16a提供数据,线程1必须等到SDRAM控制器16a返回的信号表明该寄存器已提升并可重新使用才重写此寄存器。每次写均不需要表明已经完成该功能的目的地所返回的信号,其原因在于若该线程用多个请求对该目的地的相同命令队列写入,该命令队列内确保完成命令,因而仅最后的命令需要将信号传回该线程。但若该线程采用多个命令队列(排序和读出),这些命令请求就必需分解成独立的环境任务,以便通过环境对换保持排序。本节开头提出的特例涉及对FBUS状态信息釆用FBI至传送寄存器的非请求型推(PUSH)的某类操作。为了保护传送寄存器的读/写判定,FBI当设定这些专用FBI推操作时提供一专用的推保护信号。采用FBI非请求型推方法的任何微引擎22必须在存取传送寄存器同意的FBUS接口/微引擎前测试该保护标志。若该标志并非肯定,该微引擎便可存取传送寄存器。若该标志肯定,则存取寄存器前环境应等待N周期。根据所推的传送寄存器个数加上前端保护窗,确定先验的此计数。基本思想是,微引擎必须测试此标志,然后以连续周期快速将希望从所读传送寄存器读出的数据移到GPR,因而推引擎不与微引擎读出冲突。其他实施例应理解,虽然结合详细说明描述了本发明,但上述描述用于说明,并非限定本发明范围,该范围由所附权利要求的范围限定。其他方而、优点和修改均在以下权利要求书范围内。权利要求1.一种处理引擎处所用的方法,该处理引擎处于一具有多个可编程多线程处理引擎的处理器内,其特征在于,所述方法包括执行具有第一程序计数器的第一线程的至少一个指令,所述至少一个指令包括向所述多个处理引擎所共用的资源发出一请求的至少一个指令;在处理引擎执行所述至少一个指令向所述共用的资源发出所述请求之后,将执行对换至一具有第二程序计数器的第二线程;以及在检测出响应对所述共用的资源的请求而生成的信号之后,将执行对换至所述第一线程。2.如权利要求l所述的方法,其特征在于,还包括选择一线程以便由所述处理引擎执行。3.如权利要求2所述的方法,其特征在于,所述处理引擎的线程包括具有下列状态其中之一的线程当前正由所述引擎执行;可用于执行、但当前未执行;以及在处于可用于执行之前等待对一信号的检测,其中所述选择步骤包从可用于执行、但当前未执行的各线程当中选择一线程。4.如权利要求3所述的方法,其特征在于,所述选择所述线程的步骤包括按循环在可用于执行、但当前未执行的各线程当中选择所述线程。5.如权利要求2所述的方法,其特征在于,选择所述线程的步骤包括在检测出所述信号之后但将执行对换至所述第一线程之前选择一不同于所述第一线程的线程。6.如权利要求l所述的方法,其特征在于,将执行对换的步骤包括选择一与所选定线程相关联的程序计数器。7.如权利要求l所述的方法,其特征在于,还包括在所述至少一个指令向所述共用的资源发出所述请求之后但将所述第一线程对换出去之前执行所述第一线程的另外指令。8.如权利要求l所述的方法,其特征在于,还包括执行一所述第一线程明确请求线程对换的指令;以及响应所述明确请求线程对换的指令,将执行对换至所述第二线程。9.如权利要求8所述的方法,其特征在于,所述第一线程明确请求线程对换的所述指令,不包括一向共用的资源发出一请求的指令。10.如权利要求l所述的方法,其特征在于,所述至少一个指令对所述信号进行识别。11.如权利要求l所述的方法,其特征在于,所述信号包括一响应对所述请求提供的服务而生成的信号。12.如权利要求l所述的方法,其特征在于,所述共用的资源包括下列其中之一一存储器,为处于所述处理器内部的所述多个处理引擎所共用;以及一存储器,为处于所述处理器外部的所述多个处理引擎所共用。13.如权利要求l所述的方法,其特征在于,还包括接收一分组;以及用所述第一线程处理所述分组。14.一种网络设备,其特征在于,包括至少一个以太网媒体存取控制器;至少一个处理器,与所述至少一个以太网媒体存取控制器以通信方式连接,所述至少一个处理器包括多个可编程的多线程处理引擎,这些引擎中的单个引擎均包括一仲裁器来选择一线程加以执行;至少一个存储器的至少一个接口,处于所述网络处理器的外部;以及所述至少一个以太网媒体存取控制器的至少一个接口,其中所述至少一个存储器处于所述网络处理器的外部。15.如权利要求14所述的设备,其特征在于,所述处理引擎中的各个处理引擎的各线程包括具有下列状态其中之一的诸多线程.-当前正由所述处理引擎执行;可用于执行、但当前未由所述处理引擎执行;以及在处于可用于执行之前等待对一与针对所述处理引擎所共用资源的请求相关联的信号的检测,其中一单个处理引擎的所述仲裁器从可用于执行、但当前未执行的各线程当中选择一线程。16.如权利要求15所述的设备,其特征在于,所述仲裁器按循环在可用于执行的各线程当中选择。17.如权利要求14所述的设备,其特征在于,各所述单个处理引擎用一与所述处理引擎的仲裁器所选定线程相关联的程序计数器。18.如权利要求14所述的设备,其特征在于,各所述处理引擎以一包括至少一个明确请求当前线程对换的指令在内的指令集为特征。19.一种处理器,其特征在于,包括多个可编程的多线程处理引擎,这些引擎中的单个引擎均包括一仲裁器来选择一线程加以执行;一处于所述网络处理器内部的存储器,为多处理引擎所共用;至少一个存储器的至少一个接口,处于所述网络处理器的外部;以及至少一个媒体存取控制器的至少一个接口。20.如权利要求19所述的处理器,其特征在于,所述处理引擎中的各个处理引擎的各线程包括具有下列状态其中之一的诸多线程当前正由所述处理引擎执行;可用于执行、但当前未由所述处理引擎执行;以及在处于可用于执行之前等待对一与针对所述处理引擎所共用资源的请求相关联的信号的检测,其中所述处理引擎的所述仲裁器从可用于执行、但当前未执行的各线程当中选择一线程。21.如权利要求20所述的处理器,其特征在于,所述仲裁器按循环在可用于执行的各线程当中选择。22.如权利要求19所述的处理器,其特征在于,各所述处理引擎用一与所述处理引擎的仲裁器所选定线程相关联的程序计数器。23.如权利要求19所述的处理器,其特征在于,各所述处理引擎以一包括至少一个明确请求线程对换的指令在内的指令集为特征。全文摘要说明并行的硬件多线程处理器。该处理器包含一个谐调系统功能的通用处理器和支持多个硬件线程和多个微引擎。该处理器还包含具有第1存储控制器和第2存储控制器的存储器控制系统,第1存储控制器根据存储器访问是指向偶数存储组还是指向奇数存储组,将存储器访问加以分类,第2存储控制器则根据存储器访问是读访问还是写访问,对存储器访问进行优化。文档编号G06F9/38GK101221493SQ200710180338公开日2008年7月16日申请日期2000年8月17日优先权日1999年8月31日发明者D·F·胡珀,D·伯恩斯坦因,G·沃尔里奇,M·J·阿迪莱塔,W·维勒申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1