CN1185592C - 并行处理器结构 - Google Patents

并行处理器结构 Download PDF

Info

Publication number
CN1185592C
CN1185592C CNB008152578A CN00815257A CN1185592C CN 1185592 C CN1185592 C CN 1185592C CN B008152578 A CNB008152578 A CN B008152578A CN 00815257 A CN00815257 A CN 00815257A CN 1185592 C CN1185592 C CN 1185592C
Authority
CN
China
Prior art keywords
bus
processor
memory
hardware based
multiline procedure
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
Application number
CNB008152578A
Other languages
English (en)
Other versions
CN1387649A (zh
Inventor
M·J·阿迪莱塔
G·沃尔里奇
W·维勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1387649A publication Critical patent/CN1387649A/zh
Application granted granted Critical
Publication of CN1185592C publication Critical patent/CN1185592C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Abstract

描述一种并行的基于硬件的多线程处理器。该处理器包括协调系统功能的通用处理器和支持多个硬件线程的多个微引擎。该处理器还包括一存储控制系统,它具有根据存储器调用是针对存储器的偶数存储区还是奇数存储区而排序存储器调用的第一存储控制器和根据存储器调用是读还是写调用优化存储器调用的第二存储控制器。

Description

并行处理器结构
发明背景
本发明涉及并行处理器。
并行处理器是计算过程中并发事件的信息处理的有效方式。与顺序处理相反,并行处理要求在一台计算机上同时执行许多程序。在并行处理器的范围内,并行化意味着在同一时刻做一件以上的事情。不像串行算法,其中所有任务在单个工作工作站上顺序地完成所有任务,也不像管线机器,其中各任务在专门的各工作工作站上完成,对于并行处理提供多个工作工作站,每个能完成所有任务。即,通常所有的或多个工作工作站同时并互相独立地在一个问题的同一个或共同的单元上工作。某些问题适合于应用并行处理解决。
因此,计算机处理的类型包括单指令流,单数据流,传统的串行的冯。诺依曼(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 Aym R(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)读到SDRAM
FBUS18是标准的工业总线并包括一数据总线,如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 Arm R结构,但为了性能的理由它以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/shi fter/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)发出存储器调用1
o)发出存储器调用2
o)发出存储器调用3
o)完成与存储器调用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)指定:
                      76543210
                    +…+…+…+…+…+…+…+…+
         A GPR:    |a6|0|a5|a4|a3|a2|a1|a0|  a6=0
         B GPR:    |b6|1|b5|b4|b3|b2|b1|b0|  b6=0
         SRAM/ASB: |a6|a5|a4|0|a3|a2|a1|a0|  a6=1,a5=0,a4=0
         SDRAM:    |a6|a5|a4|0|a3|a2|a1|a0|  a6=1,a5=0,a4=1
寄存器地址直接以8位目标字段(d7-d0)指定:
                            76543210
                       +…+…+…+…+…+…+…+…+
         A GPR:    |d7|d6|d5|d4|d3|d2|d1|d0|   d7=0,d6=0
         B GPR:    |d7|d6|d5|d4|d3|d2|d1|d0|   d7=0,d6=1
         SRAM/ASB: |d7|d6|d5|d4|d3|d2|d1|d0|   d7=1,d6=0,d5=0
         SDRAM:    |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)确定:
                    76543210
                    +…+…+…+…+…+…+…+…+
       A GPR:   |a4|0|上下文|a3|a2|a1|a0|     a4=0
       B GPR:   |b7|1|上下文|b3|b2|b1|b0|     b4=0
       SRAM/ASB:|ab4|0|ab3|上下文|b2|b1|ab0|  ab4-1,ab3=0
       SDRAM:   |ab4|0|ab3|上下文|b2|b1|ab0|  ab4=1,ab3=1
或由6-位目标字段(d5-d0)确定:
                       76543210
                   +…+…+…+…+…+…+…+…+
       A GPR:   |d5|d4|上下文|d3|d2|d1|d0|  d5=0,d4=0
       B GPR:   |d5|d4|上下文|d3|d2|d1|d0|  d5=0,d4=1
       SRAM/ASB:|d5|d4|d3|上下文|d2|d1|d0|  d5-1,d4=0,d3=0
       SDRAM:   |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包括锁定查找(lock 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周期。事先此计数由被压入的传输寄存器的数目加上前端保护窗而决定。基本概念是微引擎必须检测此标志,然后在连续周期内迅速地将它希望从读传输寄存器读的数传到通用寄存器,使得压入引擎不与微引擎读冲突。
其他实施例
可以理解,虽然已结合详细的描述叙述了本发明,上述描述仅是说明性的不试图限止本发明的范围,本发明的范围由下面的权利要求中确定。其他情况,优点和修改均在下面权利要求的范围之内。

Claims (20)

1、一种并行的基于硬件的多线程处理器,其特征在于,包括
通用处理器,所述通用处理器协调系统功能,和
多个微引擎,所述多个微引擎的每一个支持多个硬件线程。
2、如权利要求1所述的并行的基于硬件的多线程处理器,其特征在于,
所述通用处理器将微控制程序加载到多个微引擎。
3、如权利要求1所述的并行的基于硬件的多线程处理器,其特征在于,还包括存储控制系统。
4、如权利要求3所述的并行的基于硬件的多线程处理器,其特征在于,
所述存储控制系统包括同步动态随机存储控制器,它根据存储器调用是针对存储器的偶数存储区或奇数存储区来对存储器调用进行排序。
5、如权利要求3所述的并行的基于硬件的多线程处理器,其特征在于,
所述存储控制系统包括静态随机存储控制器,它根据存储器调用是读调用或写调用来对存储器调用进行优化。
6、如权利要求1所述的并行的基于硬件的多线程处理器,其特征在于,
多个微引擎的每一个在每个微引擎中独立可执行的多个线程之间执行硬件的上下文交换。
7、如权利要求1所述的并行的基于硬件的多线程处理器,其特征在于,还包括
高速总线接口,所述高速总线接口将所述并行的基于硬件的多线程处理器连接到通信总线。
8、如权利要求1所述的并行的基于硬件的多线程处理器,其特征在于,还包括
总线接口,所述总线接口将所述并行的基于硬件的多线程处理器连接到计算机系统总线。
9、如权利要求1所述的并行的基于硬件的多线程处理器,其特征在于,还包括
内部总线配置,所述内部总线配置将在所述并行的基于硬件的多线程处理器中的共享资源连接到多个微引擎。
10、如权利要求9所述的并行的基于硬件的多线程处理器,其特征在于,
连接共享资源的内部总线配置,包括连接所述通用处理器到多个微引擎的第一总线。
11、如权利要求9所述的并行的基于硬件的多线程处理器,其特征在于,
连接共享资源的内部总线配置,包括
翻译设备,所述翻译设备将从所述通用处理器来的请求翻译到微引擎,和
第一总线,所述第一总线将所述通用处理器连接到多个微引擎。
12、如权利要求9所述的并行的基于硬件的多线程处理器,其特征在于,
连接共享资源的内部总线配置,包括
翻译设备,所述翻译设备将从所述通用处理器来的请求翻译到微引擎,
第一总线,所述第一总线将所述通用处理器连接到多个微引擎,和
第二总线,所述第二总线将所述通用处理器连接到存储控制系统。
13、如权利要求11所述的并行的基于硬件的多线程处理器,其特征在于,还包括
第三总线,所述第三总线将所述微引擎连接到外部总线接口。
14、如权利要求9所述的并行的基于硬件的多线程处理器,其特征在于,
所述共享资源包括
用于控制访问低等待时间存储器的存储控制器,
用于控制访问高带宽存储器的存储控制器,
用于控制访问通信总线的总线接口,和
用于控制访问计算机总线的总线接口。
15、如权利要求1所述的并行的基于硬件的多线程处理器,其特征在于,
每个微引擎包括一个程序计数器,以便唯一地识别在所述微引擎执行过程中线程的位置。
16、如要利要求1所述的并行的基于硬件的多线程处理器,其特征在于,
所述并行的基于硬件的多线程处理器支持全局地发信号到每个微引擎。
17、如权利要求16所述的并行的基于硬件的多线程处理器,其特征在于,
全局地发信号可用于在每个微引擎中的每个线程。
18、如权利要求17所述的并行的基于硬件的多线程处理器,其特征在于,
全局地发信号可用于每个线程,以便允许每个线程进行转移。
19、一种并行的基于硬件的多线程处理器,其特征在于,包括
通用处理器,所述通用处理器协调系统功能,
多个微引擎,所述多个微引擎支持多个硬件线程,
存储控制系统,所述存储控制系统包括
第一存储控制器,所述第一存储控制器根据存储器调用是针对存储器的偶数存储区还是奇数存储区来排序存储器调用,和
第二存储控制器,所述第二存储控制器根据存储器调用是读调用还是写调用来优化存储器调用。
20、如权利19所述的并行的基于硬件的多线程处理器,其特征在于,
第一存储控制器控制同步动态随机存储器,和
第二存储控制器控制静态随机存储器。
CNB008152578A 1999-08-31 2000-08-15 并行处理器结构 Expired - Fee Related CN1185592C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/387,111 US6606704B1 (en) 1999-08-31 1999-08-31 Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US09/387,111 1999-08-31

Publications (2)

Publication Number Publication Date
CN1387649A CN1387649A (zh) 2002-12-25
CN1185592C true CN1185592C (zh) 2005-01-19

Family

ID=23528511

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008152578A Expired - Fee Related CN1185592C (zh) 1999-08-31 2000-08-15 并行处理器结构

Country Status (9)

Country Link
US (2) US6606704B1 (zh)
EP (1) EP1221105B1 (zh)
CN (1) CN1185592C (zh)
AT (1) ATE253238T1 (zh)
AU (1) AU6641900A (zh)
CA (1) CA2391833C (zh)
DE (1) DE60006270T2 (zh)
HK (1) HK1049716B (zh)
WO (1) WO2001016782A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011032327A1 (zh) * 2009-09-18 2011-03-24 深圳中微电科技有限公司 并行处理器及其线程处理方法

Families Citing this family (105)

* Cited by examiner, † Cited by third party
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
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
JP2003505753A (ja) 1999-06-10 2003-02-12 ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング セル構造におけるシーケンス分割方法
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6898179B1 (en) * 2000-04-07 2005-05-24 International Business Machines Corporation Network processor/software control architecture
JP2004506261A (ja) 2000-06-13 2004-02-26 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト パイプラインctプロトコルおよびct通信
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7131125B2 (en) * 2000-12-22 2006-10-31 Nortel Networks Limited Method and system for sharing a computer resource between instruction threads of a multi-threaded process
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
WO2005045692A2 (en) 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Data processing device and method
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
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7225281B2 (en) * 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7216204B2 (en) * 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
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
US7126952B2 (en) * 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US7072970B2 (en) * 2001-10-05 2006-07-04 International Business Machines Corporation Programmable network protocol handler architecture
US7676588B2 (en) * 2001-10-05 2010-03-09 International Business Machines Corporation Programmable network protocol handler architecture
US7107413B2 (en) * 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US8281108B2 (en) 2002-01-19 2012-10-02 Martin Vorbach Reconfigurable general purpose processor having time restricted configurations
US7610451B2 (en) * 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
WO2005010632A2 (en) * 2003-06-17 2005-02-03 Pact Xpp Technologies Ag Data processing device and method
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US20040034858A1 (en) * 2002-08-14 2004-02-19 Kushlis Robert J. Programming a multi-threaded processor
WO2004038599A1 (de) 2002-09-06 2004-05-06 Pact Xpp Technologies Ag Rekonfigurierbare sequenzerstruktur
US7664823B1 (en) 2003-09-24 2010-02-16 Cisco Technology, Inc. Partitioned packet processing in a multiprocessor environment
US20050108479A1 (en) * 2003-11-06 2005-05-19 Sridhar Lakshmanamurthy Servicing engine cache requests
US7536692B2 (en) 2003-11-06 2009-05-19 Intel Corporation Thread-based engine cache partitioning
US20050102474A1 (en) * 2003-11-06 2005-05-12 Sridhar Lakshmanamurthy Dynamically caching engine instructions
US7213099B2 (en) * 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
JP4502650B2 (ja) * 2004-02-03 2010-07-14 日本電気株式会社 アレイ型プロセッサ
US7555753B2 (en) * 2004-02-26 2009-06-30 International Business Machines Corporation Measuring processor use in a hardware multithreading processor environment
US20050198482A1 (en) * 2004-03-02 2005-09-08 Altek Corporation Central processing unit having a micro-code engine
US7181568B2 (en) * 2004-03-25 2007-02-20 Intel Corporation Content addressable memory to identify subtag matches
US20050216655A1 (en) * 2004-03-25 2005-09-29 Rosenbluth Mark B Content addressable memory constructed from random access memory
US20060048156A1 (en) * 2004-04-02 2006-03-02 Lim Soon C Unified control store
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7418540B2 (en) * 2004-04-28 2008-08-26 Intel Corporation Memory controller with command queue look-ahead
US7418582B1 (en) * 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
KR20040052921A (ko) * 2004-05-17 2004-06-23 김기천 분산 트래픽 제어를 위한 클록 동기화 장치
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US7426630B1 (en) * 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
DE102004035843B4 (de) * 2004-07-23 2010-04-15 Infineon Technologies Ag Router-Netzwerkprozessor
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US8099777B1 (en) * 2004-08-26 2012-01-17 Rockwell Collins, Inc. High security, multi-level processor and method of operating a computing system
US7594081B2 (en) * 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
WO2006031551A2 (en) 2004-09-10 2006-03-23 Cavium Networks Selective replication of data structure
US20060095730A1 (en) * 2004-09-30 2006-05-04 Gilbert Wolrich Expansion of compute engine code space by sharing adjacent control stores using interleaved program addresses
US20060067348A1 (en) * 2004-09-30 2006-03-30 Sanjeev Jain System and method for efficient memory access of queue control data structures
US7277990B2 (en) 2004-09-30 2007-10-02 Sanjeev Jain Method and apparatus providing efficient queue descriptor memory access
US20060072563A1 (en) * 2004-10-05 2006-04-06 Regnier Greg J Packet processing
US7555630B2 (en) 2004-12-21 2009-06-30 Intel Corporation Method and apparatus to provide efficient communication between multi-threaded processing elements in a processor unit
US7418543B2 (en) 2004-12-21 2008-08-26 Intel Corporation Processor having content addressable memory with command ordering
US20060140203A1 (en) * 2004-12-28 2006-06-29 Sanjeev Jain System and method for packet queuing
US7467256B2 (en) * 2004-12-28 2008-12-16 Intel Corporation Processor having content addressable memory for block-based queue structures
US7734895B1 (en) 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
WO2006123822A1 (ja) * 2005-05-20 2006-11-23 Sony Corporation 信号処理装置
CN100407701C (zh) * 2005-06-25 2008-07-30 华为技术有限公司 一种网络处理器
US7853951B2 (en) * 2005-07-25 2010-12-14 Intel Corporation Lock sequencing to reorder and grant lock requests from multiple program threads
US20070044103A1 (en) * 2005-07-25 2007-02-22 Mark Rosenbluth Inter-thread communication of lock protected data
US7434039B2 (en) * 2005-09-13 2008-10-07 Freescale Semiconductor, Inc. Computer processor capable of responding with comparable efficiency to both software-state-independent and state-dependent events
US7996255B1 (en) 2005-09-29 2011-08-09 The Mathworks, Inc. System and method for providing sales leads based on-demand software trial usage
US20070124728A1 (en) * 2005-11-28 2007-05-31 Mark Rosenbluth Passing work between threads
US20070157030A1 (en) * 2005-12-30 2007-07-05 Feghali Wajdi K Cryptographic system component
US7900022B2 (en) * 2005-12-30 2011-03-01 Intel Corporation Programmable processing unit with an input buffer and output buffer configured to exclusively exchange data with either a shared memory logic or a multiplier based upon a mode instruction
WO2007082730A1 (de) 2006-01-18 2007-07-26 Pact Xpp Technologies Ag Hardwaredefinitionsverfahren
US8984256B2 (en) * 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
CA2642022A1 (en) * 2006-02-03 2007-08-16 Russell H. Fish, Iii Thread optimized multiprocessor architecture
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US7693167B2 (en) * 2007-05-22 2010-04-06 Rockwell Collins, Inc. Mobile nodal based communication system, method and apparatus
US20090228686A1 (en) * 2007-05-22 2009-09-10 Koenck Steven E Energy efficient processing device
US20090228693A1 (en) * 2007-05-22 2009-09-10 Koenck Steven E System and method for large microcoded programs
US7843554B2 (en) * 2008-04-25 2010-11-30 Rockwell Collins, Inc. High dynamic range sensor system and method
US9038087B2 (en) * 2008-06-18 2015-05-19 Microsoft Technology Licensing, Llc Fence elision for work stealing
US8732711B2 (en) * 2010-09-24 2014-05-20 Nvidia Corporation Two-level scheduler for multi-threaded processing
US10095526B2 (en) * 2012-10-12 2018-10-09 Nvidia Corporation Technique for improving performance in multi-threaded processing units
US9870339B2 (en) * 2015-06-26 2018-01-16 Intel Corporation Hardware processors and methods for tightly-coupled heterogeneous computing
US10699362B2 (en) * 2016-06-23 2020-06-30 Intel Corporation Divergent control flow for fused EUs
US20180330288A1 (en) * 2017-05-15 2018-11-15 Alteryx, Inc. Method of data aggregation for cache optimization and efficient processing
US10489348B2 (en) 2017-07-17 2019-11-26 Alteryx, Inc. Performing hash joins using parallel processing
US10552452B2 (en) 2017-10-16 2020-02-04 Alteryx, Inc. Asynchronously processing sequential data blocks
US10558364B2 (en) 2017-10-16 2020-02-11 Alteryx, Inc. Memory allocation in a data analytics system
US10810064B2 (en) 2018-04-27 2020-10-20 Nasdaq Technology Ab Publish-subscribe framework for application execution
US10884662B2 (en) * 2018-08-06 2021-01-05 Silicon Motion, Inc. Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server
CN109739556B (zh) * 2018-12-13 2021-03-26 北京空间飞行器总体设计部 一种基于多并行缓存交互及计算的通用深度学习处理器

Family Cites Families (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US379241A (en) * 1888-03-13 nelson
US3373408A (en) * 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3478322A (en) * 1967-05-23 1969-11-11 Ibm Data processor employing electronically changeable control storage
US3736566A (en) * 1971-08-18 1973-05-29 Ibm Central processing unit with hardware controlled checkpoint and retry facilities
BE795789A (fr) * 1972-03-08 1973-06-18 Burroughs Corp Microprogramme comportant une micro-instruction de recouvrement
IT986411B (it) * 1973-06-05 1975-01-30 Olivetti E C Spa Sistema per trasferire il control lo delle elaborazioni da un primo livello prioritario ad un secondo livello prioritario
US4016548A (en) * 1975-04-11 1977-04-05 Sperry Rand Corporation Communication multiplexer module
US4075691A (en) * 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
JPS56164464A (en) * 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
US4831358A (en) * 1982-12-21 1989-05-16 Texas Instruments Incorporated Communications system employing control line minimization
US4745544A (en) * 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
US5115507A (en) * 1987-12-23 1992-05-19 U.S. Philips Corp. System for management of the priorities of access to a memory and its application
FR2625340B1 (fr) * 1987-12-23 1990-05-04 Labo Electronique Physique Systeme graphique avec controleur graphique et controleur de dram
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
EP0446721B1 (en) * 1990-03-16 2000-12-20 Texas Instruments Incorporated Distributed processing memory
US5390329A (en) * 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US5404482A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
KR960001273B1 (ko) * 1991-04-30 1996-01-25 가부시키가이샤 도시바 단일칩 마이크로컴퓨터
US5623489A (en) * 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5392412A (en) * 1991-10-03 1995-02-21 Standard Microsystems Corporation Data communication controller for use with a single-port data packet buffer
GB2260429B (en) * 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5392391A (en) * 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
US5442797A (en) * 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
JP2823767B2 (ja) * 1992-02-03 1998-11-11 松下電器産業株式会社 レジスタファイル
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5404484A (en) * 1992-09-16 1995-04-04 Hewlett-Packard Company Cache system for reducing memory latency times
WO1994015287A2 (en) 1992-12-23 1994-07-07 Centre Electronique Horloger S.A. Multi-tasking low-power controller
US5404464A (en) * 1993-02-11 1995-04-04 Ast Research, Inc. Bus control system and method that selectively generate an early address strobe
US5522069A (en) * 1993-04-30 1996-05-28 Zenith Data Systems Corporation Symmetric multiprocessing system with unified environment and distributed system functions
JPH0740746A (ja) * 1993-07-29 1995-02-10 Aisin Seiki Co Ltd 車両用サンルーフ装置のチエツク機構
US5446736A (en) * 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US5488570A (en) * 1993-11-24 1996-01-30 Intel Corporation Encoding and decoding video signals using adaptive filter switching criteria
US5740402A (en) * 1993-12-15 1998-04-14 Silicon Graphics, Inc. Conflict resolution in interleaved memory systems with multiple parallel accesses
US5485455A (en) * 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
US5754764A (en) * 1994-02-22 1998-05-19 National Semiconductor Corp. Combination of input output circuitry and local area network systems
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5721870A (en) * 1994-05-25 1998-02-24 Nec Corporation Lock control for a shared main storage data processing system
JP3810449B2 (ja) * 1994-07-20 2006-08-16 富士通株式会社 キュー装置
JP3169779B2 (ja) * 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5886992A (en) * 1995-04-14 1999-03-23 Valtion Teknillinen Tutkimuskeskus Frame synchronized ring system and method
US5758184A (en) * 1995-04-24 1998-05-26 Microsoft Corporation System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads
US5592622A (en) * 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
JPH096633A (ja) * 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5613071A (en) * 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5898701A (en) * 1995-12-21 1999-04-27 Cypress Semiconductor Corporation Method and apparatus for testing a device
DE19681186D2 (de) * 1995-12-29 1999-03-11 Tixi Com Gmbh Verfahren und Mikrocomputersystem zur automatischen, sicheren und direkten Datenübertragung
US6201807B1 (en) * 1996-02-27 2001-03-13 Lucent Technologies Real-time hardware method and apparatus for reducing queue processing
US6199133B1 (en) * 1996-03-29 2001-03-06 Compaq Computer Corporation Management communication bus for networking devices
KR100219597B1 (ko) * 1996-03-30 1999-09-01 윤종용 씨디-롬 드라이브에서의 큐잉 제어 방법
GB2311882B (en) 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
JP3541335B2 (ja) * 1996-06-28 2004-07-07 富士通株式会社 情報処理装置及び分散処理制御方法
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US5745913A (en) * 1996-08-05 1998-04-28 Exponential Technology, Inc. Multi-processor DRAM controller that prioritizes row-miss requests to stale banks
US5860158A (en) * 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US5905876A (en) * 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system
US6212542B1 (en) * 1996-12-16 2001-04-03 International Business Machines Corporation Method and system for executing a program within a multiscalar processor by processing linked thread descriptors
US6256115B1 (en) * 1997-02-21 2001-07-03 Worldquest Network, Inc. Facsimile network
US5742587A (en) * 1997-02-28 1998-04-21 Lanart Corporation Load balancing port switching hub
US5905889A (en) * 1997-03-20 1999-05-18 International Business Machines Corporation Resource management system using next available integer from an integer pool and returning the integer thereto as the next available integer upon completion of use
US6535878B1 (en) * 1997-05-02 2003-03-18 Roxio, Inc. Method and system for providing on-line interactivity over a server-client network
US6182177B1 (en) * 1997-06-13 2001-01-30 Intel Corporation Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues
US6067585A (en) * 1997-06-23 2000-05-23 Compaq Computer Corporation Adaptive interface controller that can operate with segments of different protocol and transmission rates in a single integrated device
US5887134A (en) * 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US6393483B1 (en) * 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6014729A (en) * 1997-09-29 2000-01-11 Firstpass, Inc. Shared memory arbitration apparatus and method
US6032190A (en) * 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
EP0918280B1 (en) * 1997-11-19 2004-03-24 IMEC vzw System and method for context switching on predetermined interruption points
US6360262B1 (en) * 1997-11-24 2002-03-19 International Business Machines Corporation Mapping web server objects to TCP/IP ports
US6070231A (en) * 1997-12-02 2000-05-30 Intel Corporation Method and apparatus for processing memory requests that require coherency transactions
JPH11203860A (ja) * 1998-01-07 1999-07-30 Nec Corp 半導体記憶装置
US6223238B1 (en) * 1998-03-31 2001-04-24 Micron Electronics, Inc. Method of peer-to-peer mastering over a computer bus
US6079008A (en) * 1998-04-03 2000-06-20 Patton Electronics Co. Multiple thread multiple data predictive coded parallel processing system and method
KR100280460B1 (ko) * 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6570850B1 (en) * 1998-04-23 2003-05-27 Giganet, Inc. System and method for regulating message flow in a digital data network
US6067300A (en) * 1998-06-11 2000-05-23 Cabletron Systems, Inc. Method and apparatus for optimizing the transfer of data packets between local area networks
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
US6373848B1 (en) * 1998-07-28 2002-04-16 International Business Machines Corporation Architecture for a multi-port adapter with a single media access control (MAC)
US6393026B1 (en) * 1998-09-17 2002-05-21 Nortel Networks Limited Data packet processing system and method for a router
US6526451B2 (en) * 1998-09-30 2003-02-25 Stmicroelectronics, Inc. Method and network device for creating circular queue structures in shared memory
DE19846274A1 (de) * 1998-10-08 2000-04-20 Alcatel Sa Verfahren zur Durchführung von kooperativem Multitasking in einem Nachrichtenübertragungsnetz und Netzelement dafür
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6212611B1 (en) * 1998-11-03 2001-04-03 Intel Corporation Method and apparatus for providing a pipelined memory controller
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6338078B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation System and method for sequencing packets for multiprocessor parallelization in a computer network system
US6356692B1 (en) * 1999-02-04 2002-03-12 Hitachi, Ltd. Optical module, transmitter, receiver, optical switch, optical communication unit, add-and-drop multiplexing unit, and method for manufacturing the optical module
US6983350B1 (en) * 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6529983B1 (en) * 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6532509B1 (en) * 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) * 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6324624B1 (en) * 1999-12-28 2001-11-27 Intel Corporation Read lock miss control and queue management
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US6678746B1 (en) * 2000-08-01 2004-01-13 Hewlett-Packard Development Company, L.P. Processing network packets
US6553406B1 (en) * 2000-08-03 2003-04-22 Prelude Systems, Inc. Process thread system receiving request packet from server thread, initiating process thread in response to request packet, synchronizing thread process between clients-servers.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011032327A1 (zh) * 2009-09-18 2011-03-24 深圳中微电科技有限公司 并行处理器及其线程处理方法

Also Published As

Publication number Publication date
WO2001016782A9 (en) 2002-06-27
DE60006270T2 (de) 2004-08-05
US6606704B1 (en) 2003-08-12
US20040073778A1 (en) 2004-04-15
CA2391833C (en) 2006-08-01
WO2001016782A2 (en) 2001-03-08
EP1221105B1 (en) 2003-10-29
CA2391833A1 (en) 2001-03-08
HK1049716B (zh) 2005-08-19
WO2001016782A3 (en) 2001-05-31
EP1221105A2 (en) 2002-07-10
DE60006270D1 (de) 2003-12-04
CN1387649A (zh) 2002-12-25
ATE253238T1 (de) 2003-11-15
AU6641900A (en) 2001-03-26
HK1049716A1 (en) 2003-05-23

Similar Documents

Publication Publication Date Title
CN1185592C (zh) 并行处理器结构
CN1296818C (zh) 用于多线程并行处理器的指令
CN1192314C (zh) 并行处理器结构的sram控制器
CN1387641A (zh) 并行处理器中的多线程执行
CN1387644A (zh) 并行处理器体系结构的sdram控制器
CN1280714C (zh) 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
CN1175341C (zh) 异步更新共享资源的接口系统和方法
CN1205553C (zh) 分优先级访问外部装置的设备
CN1199109C (zh) 通过重排序存储器请求提高总线利用率的存储器控制器
CN1282925C (zh) 利用页标志寄存器跟踪存储器装置内物理页的状态的方法
CN1285064A (zh) 进行无序多线程执行的加载和存储指令排序系统
CN101052949A (zh) 操作系统
CN1286771A (zh) 错误推测之后的指令再执行的管道外部跟踪缓冲器
CN1846194A (zh) 一种在处理器中执行的计算线程的暂停与解除分配的整合机制
CN1357121A (zh) 对不同时间执行的存储器访问,检测在数据总线上的数据冲突的装置和方法
CN1749955A (zh) 控制处理器和协处理器间的数据传输的运算处理装置
CN1912926A (zh) 可中断图形处理单元处理多个程序的方法和图形处理单元
CN1758213A (zh) 带有共享内容的异构型并行多线程处理器(hpmt)
CN1967506A (zh) 高速缓存存储器处理器中的合并入口
CN1291325C (zh) 通过源/目的转换机构实现高速存储器克隆的方法和系统
CN1095133C (zh) 多处理器计算机系统中共享结果数据的方法,装置和系统
CN1026037C (zh) 指令执行高效率生产线方法及装置
CN1173280C (zh) 具有网络拓扑结构的自适应信息处理系统
CN101076787A (zh) 联想存储器装置
CN1311357C (zh) 通用资源访问控制器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20050119

Termination date: 20170815

CF01 Termination of patent right due to non-payment of annual fee