并行处理器结构的制作方法

文档序号:6546134阅读:228来源:国知局
专利名称:并行处理器结构的制作方法
背景技术
本发明涉及并行处理器。
并行处理器是计算过程中并发事件的信息处理的有效方式。与顺序处理相反,并行处理要求在一台计算机上同时执行许多程序。在并行处理器的范围内,并行化意味着在同一时刻做一件以上的事情。不像串行算法,其中所有任务在单个工作工作站上顺序地完成所有任务,也不像管线机器,其中各任务在专门的各工作工作站上完成,对于并行处理提供多个工作工作站,每个能完成所有任务。即,通常所有的或多个工作工作站同时并互相独立地在一个问题的同一个或共同的单元上工作。某些问题适合于应用并行处理解决。
因此,计算机处理的类型包括单指令流,单数据流,传统的串行的冯.诺依曼(Von Neumann)计算机,在后者中是单指令流。第二种处理类型是单指令流,多数据流处理(SIMD)。此处理能具有多个算术-逻辑单元和单个控制处理器。每个处理器前后紧接地完成数据的操作。第三种类型是多指令流,单数据流(MISD)过程。此处理具有同一个数据流,通过执行不同指令流的处理器线性阵列。第四种是多指令流,多数据流(MIMD)。此处理使用多个处理器,每个执行它自己的指令流,处理送给这些处理器中每一个的数据流。多指令流,多数据流(MIMD)处理器可以具有若干指令处理单元以及若干数据流。
发明概述按照本发明的一个方面,并行的基于硬件的多线程处理器包括一个协调系统功能的通用处理器和支持多个硬件线程的多个微引擎(microengines)。
按照本发明的另一个方面,并行的基于硬件的多线程处理器包括一个协调系统功能的通用处理器和支持多个硬件线程的多个微引擎。处理器还包括一存储控制系统,它包括第一存储控制器,它根据存储器调用是否针对偶数存储区或奇数存储区排序存储器调用;还包括第二存储控制器,它根据存储器调用是读调用还是写调用优化存储器调用。
由本发明的一个或多个方面提供一个或多个下列优点。
这种并行多线程结构提供非常通用的微处理器结构。处理器能连接到其他设备以处理大量数据。对于能分解成并行子任务或功能的任务该系统特别有用。基于硬件的多线程处理器对于面向带宽而非面向等待时间的任务特别有用。基于硬件的多线程处理器具有多个微引擎,每一个具有能同时活动并独立地对一个任务工作的多个硬件控制的线程。
对基于硬件的多线程处理器的一个应用的例子是用作网络处理器。作为网络处理器,基于硬件的多线程处理器能接口到如媒体访问控制器那样的网络设备。作为网络处理器,基于硬件的多线程处理器能接口到任何类型接收/发送大量数据的通信设备。该处理器能被用于对页式图像(postscript)处理的打印引擎或作为对存储子系统,即RAID光盘系统的处理器。其它的用途是作为匹配引擎。例如在安全行业中,电子贸易的出现需要使用电子匹配引擎来匹配买方和卖方之间的订单。这些和其他并行类型的任务能在用于一个系统的处理器上实现。
附图简要概述

图1是使用基于硬件的多线程处理器的通信系统的方框图。
图2是图1的基于硬件的多线程处理器的详细方框图。
图3是应用在图1和图2的基于硬件的多线程处理器中的微引擎功能单元的方框图。
图3A是表示图3的微引擎中管线的方框图。
图3B是表示上下文(context)交换指令的格式图。
图3C是表示通用寄存器地址安排的方框图。
图4是对于在基于硬件的多线程处理器中使用的增强的带宽操作的存储控制器方框图。
图4A表示图4的SDRAM控制中的一个判优策略的流程图。
图4B表示优化SDRAM控制器好处的时序图。
图5是对于基于硬件的多线程处理器中使用的等待时间受限止的操作的存储控制器方框图。
图5A表示优化SRAM控制器好处的时序图。
图6是在于图1的处理器中通信总线接口的方框图描述结构参考图1,通信系统包括一个并行的基于硬件的多线程处理器12。基于硬件的多线程处理器12连接到如PCI总线,存储器系统16和第二总线18。系统10对于能分解并行子任务或功能的任务特别有用。具体地说,基于硬件的多线程处理器12对于面向带宽而非面向等待时间的任务有用。基于硬件的多线程处理器12具有多个微引擎22,每个带有多个硬件控制的线程,能同时活动地并独立地对一个任务工作。
基于硬件的多线程处理器12还包括中央处理器20,它帮助对基于硬件的多线程处理器12的其他资源加载微码控制,并完成其他通用计算机类型的功能,如处理协议,例外情况,对包括处理的额外支持,其中微引擎将数据包送出去用于作如在边界条件中那样的更详细的处理。在一个实施例中处理器20是基于Strong AymR(Arm是英国ARM有限公司的商标)的结构。通用微处理器20有一个操作系统。通过操作系统,处理器20能调用功能在微引擎22a-22f上操作。处理器20能使用任何支持的操作系统,最好是实时操作系统。对于作为Strong Arm结构实现的核心处理器,能使用如Microsoft real-time,VXWorks和μCUS那样在因特网上可用的自由件(freeware)操作系统。
基于硬件的多线程处理器12还包括多个功能微引擎22a-22f。每个功能微引擎(微引擎)22a-22f保存多个硬件的程序计数器和与程序计数器有关的状态。实际上,对应的多个线程组能同时在每个微引擎22a-22f上活动,而在任何时刻上有一个是实际上去操作。
在一个实施例中,示出有6个微引擎22a-22f。每个微引擎22a-22f具有处理4个硬件线程的功能。6个微引擎用包括存储系统16和总线接口24和28的共享资源进行操作。存储系统16包括同步动态随机存储器(SDRAM)控制器26a和静态随机存储器(SRAM)控制器26b。SDRAM存储器16a和SDRAM控制器26a通常用于处理大量数据,如处理从网络数据包来的网络有效负载(payload)。SRAM控制器26b和SRAM存储器16b被用于对低等待时间,快速访问任务的网络实施中,如访问查找表,用于核心处理器20的存储器等。
6个微引擎根据数据的特点访问SDRAM 16a或SRAM 16b。因此,低等待时间低带宽的数据存入SRAM并从中取出,而等待时间不重要的高带宽数据存入SDRAM并从中取出。微引擎22a-22f能执行至SDRAM控制器26a或SRAM控制器26b的存储器访问指令。
硬件多线程的优点能通过SRAM或SDRAM存储器访问进行解释。作为例子,从一个微引擎由Threed-o的SRAM访问请求引起SRAM控制器26b问SRAM16b,从SRAM总线取出数据,并将数据返回到请求的微引擎22a-22f。在SRAM访问期间,如果微引擎,如22a,只能操作单个的线程,在数据从SRAM返回之前微引擎停顿。通过使用在每个微引擎22a-22f中的硬件上下文交换,硬件上下文交换使其他带单独的程序计数器的上下文能在同一微引擎中执行。因此,在第一线程,如Thread-0,等待读的数据返回时,另一线程,如Thread-1,能动作。在执行中Thread-1可以访问SDRAM存储器16a。在Thread-1在SDRAM单元操作,Thread-0在SRAM单元操作的同时,新的线程,如Thread-2能在微引擎22a中操作。Thrend-2能操作一定时间,直到它需要访问存储器或完成如作出对总线接口的访问那样的某些其他长等待时间的操作。因此处理器12能同时具有总线操作,SRAM操作和SDRAM操作,所有由一个微引擎22a操作和完成,并在数据通道中具有另一个线程可用于处理更多的工作。
硬件上下文交换还同步任务的完成。例如,两个线程能达到同一共享资源,如SRAM。这些分别的功能单元的每一个,如FBUS总线28,SRAM控制器26a,和SDRAM控制器26b,当它们从一个微引擎线程上下文完成请求的任务时,报回一个标志,发信号通知操作的完成。当微引擎收到标志,它能确定打开哪个线程。
应用基于硬件的多线程处理器12的一个例子是用作网络处理器。作为网络处理器,基于硬件的多线程处理器12接口到网络设置,如媒体访问控制器设备,例如10/100BaseT Octql MAC13a或Gigabit Ethernet(千兆位以太网)设备13b。通常,作为网络处理器,基于硬件的多线程处理器12能接口到任何类型接收/发送大量数据的通信设备或接口。在网络应用中运作的通信系统10能从设备13a,13b接收多个网络数据包并以并行方式处理那些数据包。使用基于硬件的多线程处理器12,能独立地处理每个网络数据包。
作为使用处理器12的另外例子是对页式图像处理器的打印引擎或作为对存储系统、即RAID光盘存储器的处理器。另外的使用是作为匹配引擎。例如在安全行业中,电子贸易的兴起需要使用电子匹配引擎来匹配买方和卖方之间的订单。这些和其他并行类型的任务能在系统10上执行。
处理器12包括将处理器连接到第二总线18的总线接口28,在一个实施例中,总线接口28将处理器12连接到所谓的FBUS18(FIFO总线)。FBUS接口28负责控制并将处理器12接口到FBUS18。FBUS18是用于接口到媒体访问控制器(MAC)设备的64位宽的FIFO总线。
处理器12包括第二接口,如PCI总线接口24,它将连接到PCI14总线上的其他系统部件连接到处理器12。PCI总线接口24提供到存储器16、如SDRAM存储器16a的高速数据通道24a。通过那个通道,数据能借助直接存储访问(DMA)传输,从SDRAM16a经过PCI总线快速传递。基于硬件的多线程处理器12支持图像传输。基于硬件的多线程处理器12能利用多个DMA通道,所以如果DMA传输的一个目标忙时,另一个DHA通道能担任PCI总线将信息提交给另外的目标以保持高的处理器12的效率。
此外,PCI总线接口支持目标和主操作。目标操作是在总线14上的从属设备通过从属于目标操作的读和写访问SDRAM的操作。在主操作中,处理器核心20将数据直接发送到PCI接口24或者从中接收数据。
每一个功能单元连接到一个或更多内部总线。如下面所述,内部总线是双32总线(即一根总线用于读,一根总线用于写)。基于硬件的多线程处理器还构造成使得在处理器12中内部总线带宽的和,超过连接到处理12的外部总线的带宽。处理总12包括一个内部核心处理器总线32,如ASB总线(先进系统总线),它将处理器核心20连接到存储控制器26a,26c并连接到下面所述的ASB翻译器30。ASB总线是与Strong Arm处理器核心一起使用的所谓的AMBA总线的子集。处理器12还包括专用总线34,它将诸微引擎单元连接到SRAM控制器26b,ASB翻译器30和EBUS总线28。存储器总线38将存储控制器25a,26b连接到总线接口24和28以及包括用于自引导操作等的闪存只读存储器16c的存储器系统16。
参考图2,每一个微引擎22a-22f包括判优器,它检查标志以确定需操作的线程。任何一个微引擎22a-22f的任何一个线程能访问SDRAM控制器26a,SDRAM控制器26b或FBUS28。存储控制器26a和26b均包括多个队列,存储未完成的存储器调用请求。队列或保持存储器调用的次序或者安排存储器调用以优化存储器带宽。例如,如果thread-0与thread-1无依靠关系,thread-1和thread-0没有理由不能不按次序地完成对SRAM单元的存储器调用。微引擎发生存储器调用到存储控制器26a和26b。微引擎22a-22f用足够多的存储器调用操作充满存储子系统26a和26b,使得存储器子系统26a和26b成为处理12操作的瓶颈。
如果存储子系统被本质上独立的存储调用充满,处理器12能完成存储器调用的排序。存储器调用排序改善了可得到的存储器带宽。如下所述,存储器调用排序减少了随着访问SRAM而发生的停顿时间或泡沫。对于对SRAM的存储器调用,在读写之间切换信号线上的电流方向产生一个泡沫或停顿时间,等待连接SRAM16b到SRAM控制器26b的导线上的电流稳定下来。
即,驱动在总线上电流的驱动电流在改变状态以前需要稳定下来。因此,读接着写的重复循环能破坏峰值带宽。存储器调用排序使得处理器12能组织对存储器的调用,使得一长串的读能接着一长串的写。这能用于使管线中的停顿时间最小,以有效地达到接近于最大可得到的带宽。调用排序有利于维持并行的硬件上下文(Context)线程。在SDRAM上,调用排序允许隐去从一个存储区到另一个存储区的预加载。具体说来,如果存储系统16b组织成一个奇数存储区操作,则存储控制器能开始预加载偶数存储区,如果存储器用在奇数及偶数存储区之间交替,预加载是可能的。通过排序存储器调用交替地访问相反的存储区,处理器12改善SDRAM的带宽。此外也能使用其他优化。例如能够利用在存储器访问之前将能合并的操作合并优化,通过查地址不再重新打开已打开的存储器页面的打开页面优化、如下面描述的链接以及刷新机构。
EBUS接口28对每个MAC设备支持的端口支持发送和接收标志,以及指出当要求服务时的中断标志。FBUS接口28还包括一个控制器28a,它完成对从FBUS18进入的数据包的头标处理。控制28提取数据包的头标,实现在SRAM中可编微程的源/目标/协议的散列查找(用于地址光滑)。如果静列没有成功地分解,数据包的头标被送到处理器核心20作进一步处理。FBUS接口28支持下列上下文数据事务FBUS单元(先享总线SRAM)到/从微引擎FBUS单元(通过专用总线)从SDRAM单元写FBUS单元(通过Mbus)读到SDRAMFBUS18是标准的工业总线并包括一数据总线,如64位宽,以及对地址和读/写控制的边带控制。EBUS接口28提供使用一系列输入和输出FIFO29a-29b输入大量数据的能力。从FIFO29a29b,微引擎22a-22f取出数据,或命令SDRAM控制器26a,将数据从接收总线18上的设备的数据的接收FIFO传送到FBUS接口28。数据能借助直线存储器访问通过存储控制器26a送到SDRAM存储器16a,类似地,微引擎能将数据从SDAM26a传送到接口28,经过FBUS接口28传送出FBUS18。
数据功能分布在各微引擎中。到SRAM26a,SDRAM26b及FBUS28的连接是通过命令请求。命令请求能是存储器请求或FBUS请求。例如,命令请求能将数据从位于微引擎22a的寄存器移到共享资源,如SDRAM位置,SRAM位置,闪存存储器或某个MAC地址。命令被改善到每个功能单元和共享资源。但是共享资源不需要维持数据局部的缓冲。相反,共享资源访问位于微引擎内部的分布式数据。这使微引擎22a-22f能有对数据的局部的访问而不必判优在总线上访问并冒总线竞争的险。以此特征,只有0周期的停顿等待内部数据到微引擎22a-22f。
连接如存储控制器26a和26b那样的共享资源的数据总线,如ASB总线30,SRAM总线34,和SDRAM总线38,具有足够的带宽,使得没有内部瓶颈。因此,为了避免瓶颈,处理器12具有带宽要求,提供给每个功能单元至少内部总线最大带宽的两倍。作为例子,SDRAM能以83MHz运行64位宽的总线。SRAM总线能具有分别的读和写总路线,例如能以166MHz运行的32位宽的读总线和以166MHz运行的32位宽的写总线。即,实质上是以166MHz运行64位,实际上是SDRAM的两倍带宽。
核心处理器20也能访问共享资源。核心处理器20具有通过总线到SDRAM控制器26a,到总线接口24和到SRAM控制器26b的直接通信。但是,为了访问微引擎22a-22f和位于任一个微引擎22a-22f的传输寄存器,核心处理器20借助ASB翻译器经总线34访问微引擎22a-22f。ASB翻译器30在物理上能留在FBUS接口28中,但逻辑上是分不开的。ASB翻译器30完成FBUS微引擎传输寄存器位置和核心处理器地址(即ASB总线)之间的地址翻译,使核心处理器20能访问属于微引擎22a-22f的寄存器。
虽然微引擎22能使用寄存器组如下所述那样交换数据,但还提供一个便笺式存储器27,允许微引擎将数据写出到该存储器为其他微引擎读数。便笺式存储器27连结到总线34。
处理器核心包括以5阶段管线在单个周期内完成一个或二个操作数的单循环移位的RISC核心50,提供乘法支持和32位滚动移位支持。此RHSC核心50是标准的Strong ArmR结构,但为了性能的理由它以5阶段管线实况。处理器核心20还包括16千字节指令高速缓冲52,8千字节数据高速缓冲54,和预取流缓冲区56。核心处理器20与存储器写及取指令并行地完成算术运算。核心处理器20通过ARM确定的ASB总线与其他功能单元接口。ASB总线是32位双向总线32。
微引擎参考图3,示出示例性的一个微引擎22a-22f、如微引擎22f。微引擎包括一控制存储70,它在一个实施中包括32位的1024字的RAM。该RAM存储微程序可由核心处理器20加载。微引擎22f还包括控制器逻辑72。控制器逻辑包括指令解码器73和程序计数器(PC)单元72a-72b。以硬件形式保持4个微程序计数器72a-72b。微引擎22f还包括上下文事件切换逻辑74。上下文事件逻辑74从每个共享资源,如SRAM26a,SDRAM26b,或处理器核心20,控制和状态寄存器等,接收消息(如SEQ-#-EVENT-RESPONSE;FBI-EVENT-RESPONNSE;SRAM-EVEUT-RESPONSE;SDRAM-EVENT-RESPONSE;和ASB-EVENT-RESPONSE)。这些消息提供关于请求的功能是否已完成的信息。根据由一线程请求的功能是否已经完成并发完成信号,线程需要等待完成信号,且如果该线程能够操作,则该线程被放在可用的线程表(未示出)中。微引擎22f能具有最大的可用的线程的数,如4个。
除了对执行线程是局部的事件信号以外,微引擎22利用全局的信号状态。用发信号的状态,执行线程可以对所有微引擎22广播信号状态。接收请求可用(Refnest Available)信号后,在微引擎中的任何和所有线程能按照这些信号状态转移。能使用这些信号状态确定一个资源的可用性或资源是否准备好服务。
上下文事件逻辑74具有对4个线程的判优。在一个实施例中,判优是循环机构。也能使用其它技术,包括优先级排队或加权的公平排队。微引擎22f还包括执行框(EBOX)数据通道76,它包括算术逻辑单元76a和通用寄存器组76b。算术逻辑单元76a完成算术和逻辑功能以及移位功能。寄存器组76b具有相当大数量的通用寄存器。如在图3B中所述,在此实施中,在第一存储区,A存储区中有64个通用寄存器,在第二存储区,B存区中也有64个。如下面所述,通用寄存器被开窗,使它们相对和绝对地可编址。
微引擎22f还包括写传输寄存器堆栈78和读传输寄存器堆栈80。这些寄存器被开窗,使它们相对和绝对地可编址。写传输寄存器堆栈78是到资源的写数据放置处,类似地,读寄存器堆栈80用于从共享资源返回的数据。在数据到达之后或同时,从如SRAM控制器26a,SDRAMM控制器26b或核心处理器20那样的对应的共享资源来的事件信号,提供给上下文事件判优器74,后者随后唤醒线程,数据已经可用或已经发出。传输寄存器存储区78和80均通过数据通道连结到执行框(EBOX)76。在一个实施中,读传输寄存器具有64个寄存器,且写传输寄存器具有64个寄存器。
如图3A所示,微引擎数据通道保持一个5阶段微管线82。此管线包括微指令字82a的查找,形成寄存器文件地址82b,从寄存文件读操作数82c,ALU,移位或比较操作82d,以及结果写回到寄存器82e。借助将写回数据旁路到ALU/移位单元,并通过假设寄存器作为寄存器文件(而非RAM)文件实现,微引擎能完成一同时的寄存器读和写,这完全隐去了写操作。
SDRAM接口26a将一信号提供回到请求读的微引擎,它指出在读请求时是否发生奇偶校验错误,当微引擎使用任何返回数据时,微引擎的微码负责检查SDRAM读的奇偶校验标志。在检查标志时,如果它被置位,根据它转移的动作将其清除。只有当SDRAM是能够检查的,并且SDRAM是奇偶校验保护时,才发送奇偶校验标志,微引擎和PCI单元是仅有的被通知奇偶校验错误的请求者。因此,如果处理器核心20或FIFO需要奇偶校验保护,微引擎在请求中予以帮助。微引擎22a-22f支持条件转移。当转移决定是由以前的微控制指令置位的条件码的结果时,发生最坏情况的条件转移等待时间(不包括跳转)。等待时间示于下面表1中| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |-------------------+----+----+----+----+----+----+----+----+微存储查找|n1|cb|n2|XX|b1|b2|b3|b4|寄存器地址生成 | |n1|cb|XX|XX|b1|b2|b3|寄存器文件查找 | | |n1|cb|XX|XX|b1|b2|ALU/shifter/cc | | | |n1|cb|XX|XX|b1|写回| | |m2| |n1|cb|XX|XX|其中nx是预转移微字(n1设置CC-条件码)cb是条件转移bx是转移后微字XX是放弃的微字如表1所示,只有到周期4,n1的条件码才设置,且能作出转移决定(在此情况它引起在周期5查找转移路径)。微引擎导致2个周期的转移等待时间的损失,因为在转移路径开始用操作b1充满管线以前,在管线中必须放弃操作n2和n3(紧跟转移后的2个微字)。如果转移未发生,没有放弃微字且执行正常地继续。微引擎有若干机构来减少或消除有效的转移等待时间。微引擎支持延迟转移。延迟转移是在转移发生之后,转移生效之前微引擎允许1或2个微字(即转移的生效在时间上“延迟”)。因此,如果找到有用的工作填补转移微字后的浪费周期,则转移等待时间被隐去。下面示出1周期的延迟转移,其中在cb后,但b1之前允许执行。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |-------------------+----+----+----+----+----+----+----+----+微存储查找 |n1|cb|n2|XX|b1|b2|b3|b4|寄存器地址生成 | |n1|cb|n2|XX|b1|b2|b3|寄存器文件查找 | | |n1|cb|n2|XX|b1|b2|ALU/shifter/cc | | | |n1|cb|n2|XX|b1|写回 | | | | |n1|cb|n2|XX|下面示出2周期延迟转移,其中在发生转移到b1之前允许完成n2和n3。注意,只有当条件码在转移之前在微字上设置条件码时才允许2周期转移延迟。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |------------------+----+----+----+----+----+----+----+----+----+微存储查找|n1|cb|n2|n3|b1|b2|b3|b4|b5|寄存器地址生成 | |n1|cb|n2|n3|b1|b2|b3|b4|寄存器文件查找 | | |n1|cb|n2|n3|b1|b2|b3|ALU/shifter/cc | | | |n1|cb|n2|n3|b1|b2|写回 | | | | |n1|cb|n2|n3|b1|微引擎还支持条件码计算。如果据此作出转移决定的条件码在转移前设置2个或更多的微字,则能消除1周期的转移等待时间,因为转移决定能早1个周期作出
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |------------------+----+----+----+----+----+----+----+----+微存储查找|n1|n2|cb|XX|b1|b2|b3|b4|寄存器地址生成 | |n1|n2|cb|XX|b1|b2|b3|寄存器文件查找 | | |n1|n2|cb|XX|b1|b2|ALU/shifter/cc | | | |n1|n2|cb|XX|b1|写回 | | | | |n1|n2|cb|XX|在此例中,n1设置条件码,而n2不设置条件码。因此,转移决定能在周期4(而非周期5)作出,以消除1个周期的转移延迟。在下面例子中,1周期转移延迟和提前设置条件码相结合,完全隐去转移等待时间在1周期延迟转移前,条件码(CC)设置2周期| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |-------------------+----+----+----+----+----+----+----+----+微存储查找|n1|n2|cb|n3|b1|b2|b3|b4|寄存器地址生成 | |n1|n2|cb|n3|b1|b2|b3|寄存器文件查找 | | |n1|n2|cb|n3|b1|b2|ALU/shifter/cc | | | |n1|n2|cb|n3|b1|写回 | | | | |n1|n2|cb|n3|在条件码不能提前设置的情况(即它们在转移前的微码中设置),微引擎支持转移推测,试图减少余下的1个周期遭受的转移等待时间。
通过“推测”转移路径或顺序路径,微引擎在确切知道执行的路径前1个周期预取推测的路径。如果推测正确,如下所示消除了1个周期的转移等待时间推测转移发生/转移确实发生| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |-------------------+----+----+----+----+----+----+----+----+微存储查找|n1|cb|n1|b1|b2|b3|b4|b5|寄存器地址生成 | |n1|cb|XX|b1|b2|b3|b4|寄存器文件查找 | | |n1|cb|XX|b1|b2|b3|ALU/shifter/cc | | | |n1|cb|XX|b1|b2|写回 | | | | |n1|cb|XX|b1|如果推测转移发生的微字不正确,微引擎仍只浪费1个周期推测转移发生/转移未发生
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |-------------------+----+----+----+----+----+----+----+----+微存储查找|n1|cb|n1|XX|n2|n3|n4|n5|寄存器地址生成 | |n1|cb|n1|XX|n2|n3|n4|寄存器文件查找 | | |n1|cb|n1|XX|n2|n3|ALU/shifter/cc | | | |n1|cb|n1|XX|n2|写回| | | | |n1|cb|n1|XX|然而,当微码推测转移未发生时,等待时间的损失被不同地分布。
对于推测转移未发生/转移未发生,如下所示没有浪费的周期。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |-------------------+----+----+----+----+----+----+----+----+微存储查找|n1|cb|n1|n2|n3|n4|n5|n6|寄存器地址生成 | |n1|cb|n1|n2|n3|n4|n5|寄存器文件查找 | | |n1|cb|n1|n2|n1|b4|ALU/shifter/cc | | | |n1|cb|n1|n2|n3|写回| | | | |n1|cb|n1|n2|然而,对于推测转移未发生/转移却发生的情况,有2个浪费周期。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |-------------------+----+----+----+----+----+----+----+----+微存储查找|n1|cb|n1|XX|b1|b2|b3|b4|寄存器地址生成 | |n1|cb|XX|XX|b1|b2|b3|寄存器文件查找 | | |n1|cb|XX|XX|b1|b2|ALU/shifter/cc | | | |n1|cb|XX|XX|b1|写回| | | | |n1|cb|XX|XX|微引擎能将转移推测与1周期转移延迟相结合以进一步改善结果。对于推测转移带1个周期延迟发生/转移确实发生| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |-------------------+----+----+----+----+----+----+----+----+微存储查找 |n1|cb|n2|b1|b2|b3|b4|b5|寄存器地址生成 | |n1|cb|n2|b1|b2|b3|b4|寄存器文件查找 | | |n1|cb|n2|b1|b2|b3|ALU/shifter/cc | | | |n1|cb|n2|b1|b2|写回 | | | | |n1|cb|n2|b1|
在上述情况,通过执行n2以及通过正确推测转移方向隐去了2个周期的转推测转移带1周期延迟发生/转移未发生| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |-------------------+----+----+----+----+----+----+----+----+----+微存储查找|n1|cb|n2|XX|n3|n4|n5|n6|n7|寄存器地址生成 | |n1|cb|n2|XX|n3|n4|n5|n6|寄存器文件查找 | | |n1|cb|n2|XX|n3|n4|n5|ALU/shifter/cc | | | |n1|cb|n2|XX|n3|n4|写回 | | | | |n1|cb|n2|XX|n3|如果微码正确地推测转移未发生,则管线顺序流入正常未扰动的情况。如果微码不正确地推测转移未发生,如下所示微码再次遭受1个周期的无功执行推测转移未发生/转移发生| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |-------------------+----+----+----+----+----+----+----+----+----+微存储查找|n1|cb|n2|XX|b1|b2|b3|b4|b5|寄存器地址生成 | |n1|cb|n2|XX|b1|b2|b3|b4|寄存器文件查找 | | |n1|cb|n2|XX|b1|b2|b3|ALU/shifter/cc | | | |n1|cb|n2|XX|b1|b2|写回 | | | | |n1|cb|n2|XX|b1|其中nx是预转移微字(n1设置条件码)cb是条件转移bx是转移后微字XX是放弃的微字在跳转指令的情况导致3个周期额外的等待时间,因为在跳转在ALU阶段的周期结束之前转移地址未知
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |------------------+----+----+----+----+----+----+----+----+----+微存储查找 |n1|jp|XX|XX|XX|j1|j2|j3|j4|寄存器地址生成 | |n1|jp|XX|XX|XX|j1|j2|j3|寄存器文件查找| | |n1|jp|XX|XX|XX|j1|j2|ALU/shifter/cc | | | |n1|jp|XX|XX|XX|j1|写回 | | | | |n1|jp|XX|XX|XX|上下文切换参考图3B,示出上下文切换指令的格式。上下文切换是专门形式的转移,它引起选择不同的上下文(及相关的PC)。上下文切换也引起某些转移等待时间。考虑下述上下文切换| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |-------------------+----+----+----+----+----+----+----+----+----+微存储查找|o1|ca|br|n1|n2|n3|n4|n5|n6|寄存器地址生成 | |o1|ca|XX|n1|n2|n3|n4|n5|寄存器文件查找 | | |o1|ca|XX|n1|n2|n3|n4|ALU/shifter/cc | | | |o1|ca|XX|n1|n2|n3|写回 | | | | |o1|ca|XX|n1|n2|其中ox是老的上下文流br是在老的上下文中的转移微字ca是上下文重新判优(引起上下文切换)nx是新的上下文流XX是放弃的微字在上下文切换中,微字“br”被放弃以避免由于保存正确的老的上下文PC引起控制和时序的复杂性。
按照在转移前在微字上设置的ALU条件码操作的条件转移能选择0,1或2周期转移延迟方式。条件码在根据它们操作的条件转移,选择0或1周期转移延迟方式之前,设置2个或更多微字。所有其他转移(包括上下文的重新判优)能选择0或1个周期的转移延迟方式。结构所能设计成使得在以前的转移,跳转或上下文判优微字的转移延迟窗中的上下文判优微字成为非法操作。即,在某些实施例中在管线中转移过程中不允许发生上下文切换,因为如上提到保存老的微的转移延迟窗中的转移成为非法,以避免复杂的及未能预见的转移行为。
每个引擎22a-22f支持4个上下文的多线程执行。对此的一个理由是允许在一个线程发生存储器调用后并在做更多工作以前必须等待时,立即开始执行另一个线程。此行为对于维持微引擎的有效硬件执行是重要的,因为存储器等待时间是很大的。换言之,如果只支持单线程执行,微引擎将空等很多周期,等待调用返回,因此降低了整个计算产出量。多线程执行允许微引擎通过遍及若干线程完成有用的独立工作来隐去存储器等待时间。提供两个同步机构以允许一个线程发出SRAM或SDDRAM调回,并随后同步调用完成的时间点。
一种机构是即时同步。在即时同步中,微引擎发出调用并立即交换出那个上下文。当对应的调用完成时将发信号给该上下文。当发生上下文一交换事件并轮到该上下文运行时,一收到信号它就交换回来执行。因此,从单个上下文的指令流的观点,在调用完成以前,发出存储调用后微字未得到执行。
第二种机构是延时的同步。在延时的同步中,微引擎发出调用,随后继续执行与该调用无关的某个其他有用工作。一定时间以后,在其他工作完成前必须将线程的执行同步到发出调用的完成。在此时,执行同步微字,或者交换出当前的线程并当调用完成的若干时间以后将其交换回来,或者继续执行当前的线程,因为调用已经完成。延时的同步使用两个不同的发信号方案实施如果存储调用与传输寄存器相关,当对应传输器寄存器的有效位被置位或清除时产生触发线程的信号。例如,当对A的有效位置位时,发信号给将数据放入传输寄存器A的SRAM读操作。如果存储器调用与传输FIFO或接收FIFO有关,而不是与传输寄存器有关,则当在SDRAM控制器26完成调用时产生信号。在微引擎调度程序中只保留每个上下文一个信号状态,因此,在此方案中只能存在一个未完成的信号。
至少有两个普通操作算法,由此设计微控制器的微程序。一个是以单线程执行等待时间为代价优化整个微控制器计算产出量及整个存储器带宽。当系统具有多个微引擎涉及互不相关的数据包时,此算法具有意义。
第二个是以整个微引擎计算产出量及整个存储器带宽为代价优化微引擎执行等待时间。此算法涉及带有实时约束的线程的执行,那是规定在某指定时刻绝对必须完成某个工作的约束。那样的约束要求单线程执行的优化具有比其他如存储器带宽或整个计算产出量等考虑更高优先。实时线程意味着只执行一个线程的单个微引擎。将不处理多线程,因为目的是允许单个实时线程执行得尽可能快-多线程的执行将妨碍此能力。
在发出存储器调用和上下文切换方面,这两种算法的编码风格是非常不同。在实时情况,目的是尽快地发出尽可能多的存储器调用,使由这些调用导致的存储器等待时间最小。尽可能早地发出尽可能多的调用,其目的是尽可能与这些调用并行的方式完成尽可能多的微引擎计算。对应实时优化的计算流程是o)发出存储器调用1o)发出存储器调用2o)发出存储器调用3o)完成与存储器调用1,2,3无关的工作o)同步到存储器调用1的完成o)完成与存储器调用1有关但与存储器调用2和3无关的工作o)根据以前的工作发出任何新的存储器调用o)同步到存储器调用2的完成o)完成与存储器调用1和有关但与存储器调用3无关的工作o)根据以前的工作发出任何新的存储器调用o)同步到存储器调用3的完成o)完成与所有3个存储器调用有关的工作o)根据以前的工作发出任何新的存储器调用相反,对计算产出量及带宽的优化采取不同的方法。对于微引擎计算产出量和整个存储器带宽的优化较少考虑单个线程的执行等待时间。为实现这点,目的是对每个线程在整个微程序中等间距地存储器调用。这将提供对SRAM和SDRAM控制器的存储调用的均匀流,并使1个线程应选可用的概率最大,以隐去当另一个线程被交换出时导致的存储器等待时间。
寄存器文件地址类型参考图3C,存在的两个寄存器地址空间是局部可访问寄存器和由所有微引擎可访问的全部查访问寄存器。通用寄存器(GPR)作为两个公开的存储区实现(A存储区和B存储区),它们的地址是逐字交叉的,使得A存储区寄存区有lsb=o,B存储器区寄存器有lsb=1。每个存储区能完成到其存储区中的两个不同字的同时读和写。
遍及存储区A和B,寄存器组76b也被组织成32个寄存器的4个窗76b0-76b3,它们对每个线程相对地可编址。因此,thread-0在77a(寄存器0)处找到其寄存器0,thread-1在77b(寄存器32)处找到其存器0,thread-2在77c(寄存器64)处找至蜞寄存器0。Thread-3在77d(寄存器96)处找到其寄存器0。支持相对编址使得多个线程能使用完全相同的控制存储和位置,但访问不同的寄存器窗并完成不同的功能,寄存器窗编址和存储区编址的使用只在微引擎22f中采用双口RAM就提供必要的读带宽。
这些分窗的寄存器不需要从上下文切换到上下文切换保存数据,所以消除了一个上下文交换文件的正常的压入和弹出操作。上下文交换对从一个上下文改变到另一个有0周期的有效负载。相对寄存器编址按通用寄存器组的整个宽度将寄存器存储区划分成窗,相对编址允许访问相对于窗的起始地址的任何窗。在此结构中也支持绝对编址,其中任何一个绝对寄存器可以由任何线程通过提供寄存器的确切地址而访问。
通用寄存器78的编址可以根据微字的格式以两个方式发生。两个方式是绝对的和相对的。在绝对方式,寄存器地址的编址是直接以7位码字段(a6-a0,或b6-b0)指定7 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR |a6|0|a5|a4|a3|a2|a1|a0| a6=0B GPR |b6|1|b5|b4|b3|b2|b1|b0| b6=0SRAM/ASB|a6|a5|a4|0|a3|a2|a1|a0| a6=1,a5=0,a4=0SDRAM |a6|a5|a4|0|a3|a2|a1|a0| a6=1,a5=0,a4=1寄存器地址直接以8位目标字段(d7-d0)指定7 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR |d7|d6|d5|d4|d3|d2|d1|d0| d7=0,d6=0B GPR |d7|d6|d5|d4|d3|d2|d1|d0| d7=0,d6=1SRAM/ASB|d7|d6|d5|d4|d3|d2|d1|d0| d7=1,d6=0,d5=0SDRAM |d7|d6|d5|d4|d3|d2|d1|d0| d7=1,d6=0,d5=1如果<a6∶a5>=1,1,<b6∶b5>=1,1,或<d7∶d6>=1,1,则较低位解释为与上下文相关的地址字段(下面描述)。当在A,B的绝对字段中指定非相对A或B的源地址,只有RSAM/ASB和SDRAM设备具有有效的地址空间;然而因为这些限止不施加于目标域,写SRAM/SDRAM仍然使用全地址空间。在相对方式,编址一个指定的地址是在上下文空间中的偏移量,由5-位源字段(a4-a0或b4-b0)确定7 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR |a4|0|上下文|a3|a2|a1|a0| a4=0B GPR |b7|1|上下文|b3|b2|b1|b0| b4=0SRAM/ASB|ab4|0|ab3|上下文|b2|b1|ab0| ab4=1,ab3=0SDRAM |ab4|0|ab3|上下文|b2|b1|ab0| ab4=1,ab3=1或由6-位目标字段(d5-d0)确定7 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR |d5|d4|上下文|d3|d2|d1|d0| d5=0,d4=0B GPR |d5|d4|上下文|d3|d2|d1|d0| d5=0,d4=1SRAM/ASB|d5|d4|d3|上下文|d2|d1|d0| d5=1,d4=0,d3=0SDRAM |d5|d4|d3|上下文|d2|d1|d0| d5=1,d4=0,d3=1如果<d5∶d4>=1,1.则该目标地址不选址一个有效寄存器,因此不写回目标操作数。
下列寄存器可以从微引擎和存储控制器全局访问散列单元寄存器便笺式存储器和公共寄存器接收FIFO和接收状态FIFO发送FIFO发送控制FIFO微引擎不是中断驱动的。执行每个微流直到完成,然后根据由处理器12中的其他设备发信号的状态选择新的流。
参考图4,SDRAM存储控制器26a包括存储器调用队列90,其中存储器调用请求各个微引擎22a-22b到达。存储控制器26a包括一判优器91,它选择下一个微引擎调用请求进到任何一个功能单元。假设一个微引擎提供调用请求进到任何一个功能单元。假设一个微引擎提供调用请求,命令请求将通过地址和命令队列90,进入SDRAM控制器26a。如果该请求有一个称为“优化的存储器位”的位被置位,进入的调用请求被排序到偶数存储区队到90a或奇数存储区队列90b。如果存储调用请求没有被置位的存储器优化位,默认的是进入到命令队列90c。SDRAM控制器26是被FBUS28,核心处理器20和PCI接口24共享的资源。SDRAM控制器26还保持一状态机器,用于完成读一修改一写(“READ-MODIFY-Write”)原子操作。SDRAM控制器26还完成对从SDRAM来的数据的请求的字节对齐。
命令队列90c保存从微引擎来的调用请求的命令。对于一系列奇数和偶数存储区调用,只有在完成一系列对奇数和偶数存储区的存储器调用时需要返回一个信号。如果微引擎22f将调用排序到奇数存储区或偶数存储区,一个存储区,如偶数存储区,在奇数存储区前被排出存储区调用,而信号认定最后的偶数调用,存储控制器26a可以想像地发信号回到微引擎,通知存储器调用已完成,虽然奇数存储区调用尚未进行。这种现像引起相干(Coherency)问题。借助于提供命令队列90c,允许微引擎有多个存储器调用未完成,且只有最后的存储器调用需为完成信号,这样避免此情况。
SDRAM控制器26a还包括高优先级队列90d。在高优先级队列90d中,从一个微引擎进入的存储调用直接进到高优先级队列并以比在其他队列中的其它存储器调用更高的优先级操作。所有这些队列,偶数存储区队列90a,奇偶存储区队到90b,命令队列90c和高优先级队列在单个RAM结构中实现,它在逻辑上分成4个不同的窗,每个窗具有它自己的头指针及尾指针。因为充满的排出操作仅是单个输入和单个输出,它们能放在同一个RAM结构中以增加RAM结构的密度。
SDRAM控制器26a还包括核心总线接口逻辑,即ASB总线92。ASB总线接口逻辑92将核心处理器接口到SDRAM控制器26a。ASB总线是包括32位数据通道及32位地址通道的总线。通过MEM ASB数据设备98,如一个缓冲点,将数据存入存储器或从中取出。MEM ASB数据设备98是用于写数据的队列。如果从核心处理器20通过ASB接口92进入数据,数据能存入MEM ASB设备98,并随后从MEM ASB设备98通过SDRAM接口110到SDRAM存储器16a。虽然未显示,对读能提供同样的队列结构。SDRAM控制器26a还包括一引擎97,将数据从微引擎和PCI总线弹出。
另外的队列包括PCI地址队列94和ASB读/写队列96,后者保存若干请求。存储器请求经多路复回器106送到SDRAM接口110。多路复用器106由SDRAM判优器91控制,后者检测每个队列的满度及请求的状态,且由此并根据存在优先级服务控制寄存器100中的可编程值确定优先级。
一旦对多路复用器106的控制选择一存储器调用请求,该存储器调用请求送到解码器108,在那里解码并产生地址。解码的地址送到SDRAM接口110,在那里分解成行和到地址选通,来访问SDRAM16a写或读数据,送到总线112。在一个实施中,总线112实际上是两个分别的总线而非单个总线。分别的总线包括连接分布式微引擎22a-22f的读总线和连接分布式微引擎22a-22f的写总线。
SDRAM控制器26a的特征是当前存储器存入队列90时,除了能置位的优化的MEM位以外还有“链接位(chaining bit)”。链接位被置位时允许专门处理连续的存储器调用。如前所述,判优器12控制选择哪个微引擎经过命令总线提供存储器调用请求到队列90(图4)。链接位的认定将控制判优器,使判优器选择以前请求那个总线的功能单元,因为链接位的置位指出微引擎发出一链接请求。
当链接位被置位时,连续的存储器调用请求被接收到队队列90。那些连续调用通常存入命令队列90c,因为连续存储器调用是从单线程来的多个存储器调用。为了提供同步,存储控制器26a只需要在链接的存储器调用完成的终点发出信号。但是,在优化的存储器链接中(如当优化的MEM位及链接位被置位时)存储器调用能进入不同的存储区并可能在一个存储区完成,在另一个存储区完全排出以前发出“完成(done)”信号,从而破坏了相干性。因此,控制器110使用链接位保持从当前队列来在存储器调用。
参考图4A,示出在SDRAM控制器26a中的判优策略的流程表示。判优策略有利于链接的微引擎存储器请求。过程115从检查链接的微引擎存储器请求115a开始。在链接位被清除以前过程115停留在链接的请求,过程检查ASB总线请求115b,随后是PCI总线请求115C,高优先级队列服务115d,对面存储区请求115e,命令队列请求115f,和同一存储区请求115g。链接的请求被完全处理,而过程115b-115d被循环地处理。仅当过程115a-115d被完全排出时,过程再处理115e-115g。当以前的SDRAM存储器请求已置位链接位时才是链接的微引擎存储器调用请求。当链接位被置位时,判优引擎简单地再次处理一队列,直到链接被清除。ASB比PCI的更高的优先级,因为当ABS处于等待状态时在Strong Arm核心上受到严重的性能损失。由于PCI等待时间要求PCI比微引擎有更高优先级。但是对于其他总线,判优的优先级能是不同的。
如图4B所示,示出没有活动的存储器优化和带有活动的存储器优化的存储器通常时序。可以看到,使用活动的存储器优化使总线的使用最大,因而隐14周期,而优化的访问占用7周期。
参考图5,示出对SRAM的存储控制器26b。存储控制器26b包括一个地址和命令队列120。虽然存储控制器26a(图4)根据奇数和偶数存储分区具有为存储器优化的队列,存储控制器26b根据存储器操作的类型、即读和写,优化。地址和命令队列120,作为SRAM实现的主要存储器调用功能的读队到120b,和通常包括到SRAM的所有写和未被优化的读的命令队列120c。虽然未显示,地址和命令队列120也能包括写队列。
SRAM控制点26b也包括核心总线接口逻辑,即ASB总线122。ASB总线接口逻辑122将核心处正是是器20接口到SRAM控制器26b。ASB总线是包括32位数据通道和28位地址通道的总线。数据通过MEM ASB数据设备128,如缓冲器,存入存储器和从中取出。MEM ASB数据设备是用于写数据的队列。如果从核心处理器20经过ASB接口122进入数据,请数据能存入MEM ASB设备,并随后从MEM ASB设备128通过SRAM接口140传到SRAM存储器166。虽然未显示,对读能提出同样的队列结构。SRAM控制器26b还包括上引擎127,它从微引擎和PCI总线弹出数据。
存储器调用经多路复用器126送到SRAM接口140。多路复用器126由SRAM判优器131控制,它检测每个队列的满度和请求的状态,由此根据存在优先服务控制寄存器130的可编程值确定优先级。一旦对多强度复用器126的控制选择一个存储器调用请求,该存储器调用请求被送到解码器138,在那里解码器并产生地址。
SRAM单元保持对存储器映射(Memorg Mapped)芯片外SRAM和扩展ROM的控制。SRAM控制器126例如可编址16兆字节,其中8兆字节对SRAM166映射,以及8兆字节为特殊功能保留,包括由闪存只读存储器16c的自引导地址空间;和对MAC设备13a,13b的控制台端口访问及对有关(RMON)计数器的访问。SRAM用于局部的查找表及队列管理功能。
SRAM控制器26b支持下列事务微引擎请求(经专用总线)到/从SRAM。
核心处理器(经ASB总线)到/从SRAM。
SEAM控制器26b实现存储器调用排序,以使在从SRAM接口140到存储器16b之间的管线中的延迟(泡沫)最小。SRAM控制器26b根据读功能做存储器调用排序。泡沫可以是1或2个周期,取决于使用的存储器设备的类型。
SRAM控制器26b包括锁定查找(1ock lookup)设备142,它是8个条目用于读锁定的查找的地址上下文可编址存储器。每个位置包括一个有效位,由后续的读锁定请求检查。地址和命令队列到120还包括该锁定失败队列(ReadLock Fail Queue)120d用于保存由于在存储器的一个部分存在锁而导致失败的读存储器调用请求。即,一个微引擎发出存储器请求,该请求具有在地址和控制队列120中被处理的读锁定请求。读存储器请求在命令到120b中操作,并识别读锁定请求。控制器26b访问锁定查找设备142以确定此存储器位置是否已被锁定。如果此趣储器位置已由任何以前的读锁定请求锁定,则互存储器锁定请求失败,并将其存入读锁定失败队列120d。如果它被解锁或如果142显示在那地址没有锁,则那个存储器调用的地址被SRAM接口140用来实现到存储器16b的传统的SRAM地址读/写请求。命令控制器和地址生成器138也将锁输入锁定查找设备142,使得后续的读锁定请求将找到锁定的存储器位置。在锁定的需要结束后存储器位置由程序中的微控制指令的操作解锁。通过清除在CAM中的有效位解锁位置。解锁以后,读锁定失败队列120d成为最高优先级队列,给所有排队的读锁失败一个发出存储点锁定请求的机会。
如图5A所示,示出没有活动的存储器优化和带有活动的存储器优化的静态随机存储器的典型的时序。可以看到,组合读和写改善了周期时间,消除了停顿周期。
参考周6,示出微引擎22和FBUS接口逻辑(FBI)之间的通信。在网络应用中的FBUS接口28能完成从FBUS18进入的数据包的头标处理。FBUS接口实现的关键功能是提取数据包的头标和在SRAM中可编微程序源/目标/协议散列的查找。如果散到不能成功分解,数据包的头标被送到核心处理器28作更复杂的处理。
FBI28包含一个发送FIFO182,一个接收FIFO183,一个散列单元188和FBI控制及状态寄存器189。这4个单元经过到SRAM总线38的时间多路复用访问与微引擎22通信,而SRAM总线38连接到微引擎中的传输寄存器78、80。即所有到微引擎的来往通信经过传输寄存器78、80。FBUS接口28包括一压入入状态机200,用于在SRAM不使用SRAM数据总线(总线38的部分)的时间周期中将数据压入传输寄存器,还包括一个弹出状态机202,用于从对应微引擎中的传输寄存器取出数据。
散列单元包括一对FIFO’s 188a,188b。散列单元确定FBI28接收FBI-hash请求。散列单元188从调用的微引擎22取出散列键。在键取出并散列处理以后将索引交回到调用的微引擎22。在单个FBI-hash请求下完成最多3个散列。总线34和38均为单方向的SDAM-Push/pull-data和Sbus-push/pull-data。这些总线的每一个需要控制信号,它将读/写控制提供给适当的微引擎22的传输寄存器。
通常,传输寄存器需要保护以避免上下文控制它们以保证读的正确性。特别是,如果thread-1使用写传输寄存器将数据提供给SDRAM16a,在从SDRAM控制器26a返回信号指出此寄存器已被更新并现在重新使用以前,thread-1不能改写此寄存器。每次写不需要从目标返回信号指出该功能已完成,因为如果线程将多个请求写入到那个目标处的同一命令队列,在那个命令队列中完成的次序是保证的,因此上有最后命令需要发回信号到线程。但是,如果线程使用多个命令队列(命令或读),则这些命令请求必须被分解成分别的上下文任务,使得通过上下文交换维持那个次序。在本章节开头处指出的例外是关于某种类型的操作,它对FBUS状态信息使用从FBI到传输寄存器未经请求的压入操作。为了保护在传输寄存器上的读/写决定,FBI在建立这些专门的FBI压入操作时提供专门的压入保护(Push-protect)信号。
任何使用FBI未经请求压入技术的微引擎22在访问与传输寄存器一致的FBUS接口/微引擎之前必须检测保护标志。如果该标志未认定,则传输寄存器可由微引擎访问。如果标志已认定,则的访问该寄存器前该上下文必须等待N周期。事先此计数由被压入的传输寄存器的数目加上前端保护窗而决定。基本概念是微引擎必须检测此标志,然后在连续周期内迅速地将它希望从读传输寄存器读的数传到通用寄存器,使得压入引擎不与微引擎读冲突。
其他实施例可以理解,虽然已结合详细的描述叙述了本发明,上述描述仅是说明性的不试图限止本发明的范围,本发明的范围由下面的权利要求中确定。其他情况,优点和修改均在下面权利要求的范围之内。
权利要求
1.一种并行的基于硬件的多线程处理器,其特征在于,包括通用处理器,所述通用处理器协调系统功能,和多个微引擎,所述多个微引擎支持多个硬件线程。
2.如权利要求1所述的处理器,其特征在于,所述通用处理器将微控制程序加载到多个微控制引擎。
3.如权利要求1所述的处理器,其特征在于,还包括存储控制系统。
4.如权利要求1所述的处理器,其特征在于,所述存储控制系统包括同步动态随机存储控制器,它根据存储器调用是针对存储器的偶数存储区或奇数存储区来对存储器调用进行排序。
5.如权利要求1所述的处理器,其特征在于,所述存储控制系统包括静态随机存储控制器,它根据存储器调用是读调用或写调用来对存储器调用进行优化。
6.如权利要求1所述的处理器,其特征在于,多个微引擎的每一个应用,在每个微引擎中独立可执行的多个线程之间执行硬件的上下文交换。
7.如权利要求1所述的处理器,其特征在于,还包括高速总线接口,所述高速总线接口将所述处理器连接到通信总线。
8.如权利要求1所述的处理器,其特征在于,还包括总线接口,所述总线接口将所述处理器连接到计算机系统总线。
9.如权利要求1所述的处理器,其特征在于,还包括内部总线配置,所述内部总线配置将在所述处理器中的共享资源连接到多个微引擎。
10.如权利要求9所述的处理器,其特征在于,连接共享资源的内部总线配置,包括连接所述通用处理器到多个微引擎的第一总线。
11.如权利要求9所述的处理器,其特征在于,连接共享资源的内部总线配置,包括翻译设备,所述翻译设备将从所述通用处理器来的请求翻译到微引擎,和第一总线,所述第一总线将所述通用处理器连接到多个微引擎。
12.如权利要求3所述的处理器,其特征在于,所述连接共享资源的内部总线配置,包括翻译设备,所述翻译设备将从所述通用处理器来的请求翻译到微引擎,第一总线,所述第一总线将所述通用处理器连接到多个微引擎,和第二总线,所述第二总线将所述通用处理器连接到存储控制系统。
13.如权利要求11所述的处理器,其特征在于,还包括第三总线,所述第三总线将所述微引擎连接到外部总线接口。
14.如权利要求8所述的处理器,其特征在于,所述的共享资源,包括用于控制访问低等待时间存储器的存储控制器,用于控制访问高带宽存储器的存储控制器,用于控制访问通信总线的总线接口,和用于控制访问计算机总线的总线接口。
15.如权利要求1所述的处理器,其特征在于,每个微引擎包括一个程序计数器,以便唯一地识别在所述微引擎中执行时的线程的位置。
16.如要利要求1所述的处理器,其特征在于,所述处理器支持全局地发信号到每个微引擎。
17.如权利要求16所述的处理器,其特征在于,全局地发信号可用于在每个微引擎中的每个线程。
18.如权利要求17所述的处理器,其特征在于,全局地发信号可用于每个线程,以便允许每个线程进行转移。
19.一种并行的基于硬件的多线程处理器,其特征在于,包括通用处理器,所述通用处理器协调系统功能,多个微引擎,所述多个微引擎支持多个硬件线程,存储控制系统,所述存储控制系统包括第一存储控制器,所述第一存储控制器根据存储器调用是针对存储器的偶数存储区还是奇数存储区来排序存储器调用,和第二存储控制器,所述第二存储控制器根据存储器调用是读调用还是写调用来优化存储器调用。
20.如权利19所述的并行的基于硬件的多线程处理器,其特征在于,第一存储控制器控制同步动态随机存储器,和第二存储控制器控制静态随机存储器。
全文摘要
描述一种并行的基于硬件的多线程处理器。该处理器包括协调系统功能的通用处理器和支持多个硬件线程的多个微引擎。该处理器还包括一存储控制系统,它具有根据存储器调用是针对存储器的偶数存储区还是奇数存储区而排序存储器调用的第一存储控制器和根据存储器调用是读还是写调用优化存储器调用的第二存储控制器。
文档编号G06F15/80GK1387649SQ00815257
公开日2002年12月25日 申请日期2000年8月15日 优先权日1999年8月31日
发明者M·J·阿迪莱塔, G·沃尔里奇, W·维勒 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1