CN100498757C - 高级处理器 - Google Patents

高级处理器 Download PDF

Info

Publication number
CN100498757C
CN100498757C CNB2004800243807A CN200480024380A CN100498757C CN 100498757 C CN100498757 C CN 100498757C CN B2004800243807 A CNB2004800243807 A CN B2004800243807A CN 200480024380 A CN200480024380 A CN 200480024380A CN 100498757 C CN100498757 C CN 100498757C
Authority
CN
China
Prior art keywords
coupled
processor core
interconnection
advanced
processor
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
CNB2004800243807A
Other languages
English (en)
Other versions
CN1842781A (zh
Inventor
戴维·T·哈斯
纳扎尔·A·扎伊迪
阿巴斯·拉希德
巴沙布·慕克吉
罗希尼·克里希纳·卡扎
里卡多·拉米雷斯
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.)
Netlogic I LLC
Original Assignee
RMI 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 RMI Corp filed Critical RMI Corp
Publication of CN1842781A publication Critical patent/CN1842781A/zh
Application granted granted Critical
Publication of CN100498757C publication Critical patent/CN100498757C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

一种高级处理器,包括多个多线程处理器核,每个处理器核具有数据高速缓存和指令高速缓存。数据交换互连耦合到处理器核中的每个,并用于在处理器核之间传递信息。通信网络耦合到处理器核中的每个以及多个通信端口。在本发明的实施例的一个方面,数据交换互连通过其各自的数据高速缓存耦合到处理器核中的每个,并且通信网络通过各自的信息站耦合到处理器核中的每个。本发明的优点包括以有效的和节约成本的方式在计算机系统和存储器之间提供高带宽通信的能力。

Description

高级处理器
相关申请
本申请是于2003年10月8日提交的的序列号为10/682,579(RZMI-P101)的部分延续,要求于2003年7月25日提交的的临时号为60/490,236(RZMI-P101P2)的优先权,其全部内容结合于此以作为参考。
技术领域
本发明涉及计算机和电信领域,并且更具体地,涉及一种用于计算机和电信应用的高级处理器。
背景技术
现代计算机和电信系统提供了极大的好处,其中包括在世界范围内传递信息的能力。传统的用于计算机和电信设备的结构包括大量的分立电路,其导致处理能力和通讯速度的低效率。
例如,图1描述了一种采用多个分立芯片和技术的传统线卡。在图1中,传统的线卡100包括以下分立元件:分类(classification)102,通信量管理器(Traffic Manager)104,缓冲存储器106,安全协处理器108,传输控制协议(TCP)/网际协议(IP)卸载引擎110,L3+协处理器122,物理层装置(PHY)114,媒体访问控制(MAC)116,数据包转发引擎118,交换接口芯片120,控制处理器122,动态随机存取存储器(DRAM)124,访问控制表(ACL)三重内容-可寻址存储器(TCAM)126,以及多协议标签交换(MPLS)静态随机存取存储器(SRAM)128。该卡进一步包括交换结构(SwitchFabric)130,其可以与其他卡和/或数据连接。
处理器和其他元件方面的进展已经提高了电信设备处理、操作、存储、检索、以及传送信息的能力。近来,工程师已经开始将功能组合到集成电路中,以减小分立集成电路的总数,同时仍然以相同的或更好的操作水平来执行需要的功能。用新技术增加芯片上的晶体管的数量的能力以及降低成本的需求推动了这种组合。这些组合集成电路中的一些已经变得高功能性,以致于它们经常被称作片上系统(SoC)。然而,在芯片上组合电路和系统会变得非常复杂并且提出许多工程技术挑战。例如,硬件工程师想要确保将来设计的灵活性,而软件工程师想确保他们的软件将在芯片以及将来的设计上运行。
在高级切换和路由中,对于改进的新网络和通信应用的需求继续增长。另外,诸如内容识别(content aware)网络、高度集成安全性、以及存储管理的新形式的解决方案正开始移入灵活的多服务系统。用于这些和其它下一代解决方案的启用技术(enablingtechnology)必须提供具有对新协议和服务的快速适应的灵活性与高性能。
因此,所需要的是一种高级处理器,其能够利用新技术,同时还提供高性能功能性。另外,该技术将因为其所包括的灵活的修改能力而特别的有用。
发明内容
本发明提供了用于克服上述缺陷的有用的新颖结构和技术,并且提供了一种高级处理器,其能够利用新技术,同时还提供具有灵活的修改能力的高性能功能性。本发明采用一种包括模块部件和通信结构的高级结构片上系统(SoC),以提供一种高性能装置。
高级处理器包括多个多线程处理器核,其每个都具有数据高速缓存和指令高速缓存。数据交换互连被耦合至每个处理器核,并且被配置为在处理器核之间传递信息。通信网络被耦合至每个处理器核和多个通信端口。
在本发明的一个方面,数据交换互连通过其各自的数据高速缓存被耦合到每个处理器核,并且通信网络通过其各自的消息站被耦合到每个处理器核。
在本发明的一个方面,高级电信处理器进一步包括2级(L2)高速缓存,其耦合到数据交换互连,并且被配置为存储处理器核可以存取的信息。
在本发明的一个方面,高级电信处理器进一步包括接口开关互连,其耦合到通信网络和多个通信端口,并且被配置为在通信网络和通信端口之间传递信息。
在本发明的一个方面,高级电信处理器进一步包括耦合到数据交换互连和至少一个通信端口的存储器桥,并且其被配置为与数据交换互连以及通信端口通信。
在本发明的一个方面,高级电信处理器进一步包括超级存储器桥,其耦合到数据交换互连、接口开关互连、以及至少一个通信端口,并且被配置为与数据交换互连、接口开关互连、以及通信端口通信。
本发明的优点包括以有效的和节省成本的方式在计算机系统和存储器之间提供高带宽通信的能力。
附图说明
参照附图对本发明进行描述,在附图中:
图1描述了传统的线卡;
图2A描述了根据本发明的实施例的示例性高级处理器;
图2B描述了根据本发明的可选实施例的示例性高级处理器;
图3A描述了传统的单线程单流式(single-issue)处理;
图3B描述了传统的简易多线程调度(scheduling);
图3C描述了具有失速线程的传统简易多线程调度;
图3D描述了根据本发明的实施例的期望的循环调度;
图3E描述了根据本发明的实施例的多线程固定循环调度;
图3F描述了根据本发明的实施例的具有期望的循环调度的多线程固定循环;
图3G描述了根据本发明的实施例的具有相关接口单元的核;
图3H描述了根据本发明的实施例的处理器的实例流水线(pipeline,又称管线);
图3I描述了根据本发明的实施例的在处理器内的核中断流水作业;
图3J描述了根据本发明的实施例的可编程中断控制器(PIC);
图3K描述了根据本发明的实施例的用于多线程分配的返回地址堆栈(RAS);
图4A描述了根据本发明的实施例的数据交换互连(DSI)环形布置;
图4B描述了根据本发明的实施例的DSI环元件;
图4C描述了根据本发明的实施例的在DSI中的数据检索的实例的流程图;
图5A描述了根据本发明的实施例的快速通信环元件;
图5B描述了用于图5A的系统的信息数据结构;
图5C描述了根据本发明的实施例的附加到快速通信网络(FMN)的各种媒介(agent)的概念视图;
图5D描述了传统处理系统中的网络信息流通量(networktraffic);
图5E描述了根据本发明的实施例的数据包流;
图6A描述了根据本发明的实施例的在四个线程上均匀地分配数据包的数据包分配引擎(PDE);
图6B描述了根据本发明的实施例的使用循环方案来分配数据包的PDE;
图6C描述了根据本发明的实施例的在数据包的寿命周期内的数据包排序装置(POD)布局;
图6D描述了根据本发明的实施例的POD输出分配。
具体实施方式
参考特定结构和协议对本发明进行描述。本领域技术人员将认识到,这些描述用于说明以及提供实践本发明的最佳模式。这些描述并不意味着限制,并且对于电信和其它应用的参考同样可以应用于通用计算机应用,例如,服务器应用、分布式共享存储器应用等。如本文所描述的,参考以太网协议、互联网协议、超级传输协议、和其它协议,但是本发明也可以应用于其它协议。此外,参考包含集成电路的芯片,同时期待结合了以芯片形式描述的这些元件的其它混合电路或元电路。另外,参考示例性的MIPS结构和指令集,但是其它的结构和指令集可用于本发明。其它的结构和指令集举例来说包括x86、PowerPC、ARM和其它。
A.结构
本发明被设计为强化对图1的传统线卡执行的多个功能,并且增强线卡功能。在一个实施例中,本发明为集成电路,其包括用于执行许多分立功能的电路。该集成电路设计专用于通信处理。因此,处理器设计强调存储器强化操作,而不是计算上的强化操作。处理器设计包括被设置用于如下所述的高效存储器访问和线程处理的内部网络。
图2A描述了根据本发明的实施例的示例性高级处理器(200)。高级处理器是能执行先前分配给特定集成电路的许多功能的集成电路。例如,高级处理器包括数据包转发引擎、3级协处理器、以及控制处理器。如果需要,处理器可以包括其它元件。如此处所示,考虑到示例性功能元件的数目,在示例性实施例中功率消耗大约为20瓦。当然,在本发明的其它实施例中,功率消耗可以大于或小于约20瓦。
示例性处理器被设计成在芯片上的网络。该分布式处理结构允许元件彼此通信,并且不必共享共用时钟频率。例如,一个处理器元件能够以相对高的速率被计时,而另一个处理器元件以相对低的速率被计时。该网络结构还支持通过简单地将元件增加到网络而在将来的设计中增加其它元件的能力。例如,如果需要将来的通信接口,该接口可以被布置在处理器芯片上并耦合到处理器网络。则将来的处理器可以制造有新的通信接口。
设计原理是创建能够使用通用软件工具和可重复使用的元件来编程的处理器。支持该设计原理的几个示例性特征包括:静态门设计;低风险定制存储器设计;基于触发器的设计;可测试性设计,包括全扫描、存储器内置自测试(BIST)、结构冗余、以及测试器支持特征;包括时钟脉冲门的减小的功率消耗;逻辑门和内存条;数据通路和包括智能地引导布局的控制分离;以及物理执行的迅速反馈。
软件原理是使得可以利用工业标准的开发工具和环境。要求使用通用软件工具和可重复使用的元件对该处理进行编程。工业标准的工具和环境包括熟悉的工具(诸如gcc/gdb)和在由用户或程序员选择的环境中进行开发的能力。
还要求通过提供硬件抽象层(HAL)限定来保护现有的和将来的编码投资。这使得相对容易地移植现有的应用程序和与将来生成的芯片的编码兼容性。
转向CPU核,核被设计成适应MIPS64,并且具有在大约1.5GHz+范围内的频率目标。支持此结构的其它示例性特征包括:4路多线程单流式10阶段流水线;包括高速缓存行同步和矢量中断支持的实时处理支持;32KB的4路组关联指令高速缓存;32KB的4路组关联数据高速缓存;以及128入口的翻译后备缓冲器(TLB)。
示例性实施例的一个重要方面是高速处理器输入/输出(I/O),其由以下支持:两个XGMII/SPI-4(例如,图2A的框228a和228b);三个1Gb的MAC;一个16位超级传输(例如,框232),其能够符合800/1600MHz存储器的规定,包括一个闪存部(例如,图2A的框226)以及两个四数据率(QDR2)/双数据率(DDR2)SRAM部;两个64位DDR2通道,其能够符合400/800MHz的规定;以及通信端口,包括32位外围元件互连(PCT)(例如,图2A的框234),联合测试访问组(JTAG)和通用异步接收器/发射器(UART)(例如,框226)。
还包括作为接口的部分的两个简化GMII(RGMII)(例如,图2A的230a和230b)端口。此外,安全加速引擎(SAE)(例如图2A的框238)可以使用基于硬件的加速用于安全功能,例如加密、解密、授权、以及密钥生成。这种特征能够有助于软件传递高性能安全性应用程序,例如IPSec和SSL。
CPU的结构原理是优化线程级并行处理(TLP),而不是指令级并行处理(ILP),包括得益于TLP结构的网络工作负荷,并保持该网络工作负荷较小。
这种结构容许单个芯片上的多个CPU具体实例,CPU具体实例又支持可量测性。一般地,超标量设计具有关于存储器界限问题的最小性能增益。对于这类处理器应用程序,过分的分支预报通常是不必要的,甚至会是浪费。
示例性实施例采用狭窄的流水线,因为它们通常具有更好的频率可量测性。因此,存储器等待时间不像在其它类型的处理器中那样长,并且实际上,如下所述,可通过多线程有效地隐藏任何存储器等待时间。
本发明的实施例能够通过无阻塞负载、在CPU接口处的存储器重排、以及用于信号量和内存壁垒(memory barrier)的特殊指令来优化存储器子系统。
在本发明的一个方面,处理器能够获得和释放添加到负载/存储器的语义。在本发明的实施例的另一个方面,处理器能采用特定原子增量用于定时支持。
如上所述,多线程CPU提供超过传统技术的优点。本发明的示例性实施例采用细粒度多线程,其能够在每个时钟脉冲切换线程,并且具有4个可用于发送的线程。
多线程方面提供了如下优点:由长的等待时间操作引起的空循环的使用;优化区域对性能权衡;对于存储器边界应用程序是理想的;使能够最优利用存储器带宽;存储器子系统;使用MOSI(修改、拥有、共享、无效)协议的高速缓存相关性;全映射高速缓存目录,包括广播监听通路上的减小的监听带宽和增加的可测量性;大的芯片级共享双存储库2MB L2缓存;误差检验和校正(ECC)防护的高速缓存和存储器;264位400/800 DDR2通道(例如,12.8G字节/秒峰值带宽)安全性流水线;芯片级标准安全功能(例如,AES、DES/3DES、SHA-1、MD5、和RSA)的支持;允许功能的链接(例如,encrypt->sign)以减少存储器存取;不包括RSA,每个安全性流水线为4Gbs带宽;芯片级开关互连;用于芯片内通信的信息传送机制;超级块之间的点到点连接,以提供共享的总线通道上的增加的可测量性;用于数据通信的16字节全双工链接(例如,在1GHz每个链接的带宽为3 2GB/秒);以及基于信用的流控制机制。
以多处理器核方式使用的多线程技术的一些益处包括存储器容许时延和容错性。
图2B描述了根据本发明的可选实施例的示例性高级处理器。提供该实施例以表明该结构可以被修改以容纳其它元件(例如,视频处理器215)。在这种情况下,视频处理器可以和处理器核、通信网络(例如,DSI和通信网络)、以及其它元件进行通信。
B.处理器核和多线程
图2A的示例性高级处理器200包括多个多线程处理器核210a-h。每个示例性核包括相关的数据高速缓存212a-h和结构高速缓存214a-h。数据转换互连(DSI)216可被耦合到处理器核210a-h中的每个,并且被设置为在处理器核之间以及在L2高速缓存208和存储器桥206、208之间传输数据用于主存储器存取。另外,通信网络222可被耦合到处理器核210a-h中的每个和多个通信端口240a-f。虽然在图2A中描述了8个核,但是在本发明中可以使用更少或更多数量的核。同样的,在本发明的一些方面,核能够执行不同的软件程序和例程,甚至能够运行不同的操作系统。当需要在旧操作系统下的一个或多个核上运行传统软件(legacy software),并且需要在不同操作系统或系统下的一个或多个其它核上运行新的软件时,在单个统一平台内的不同的核上运行不同的软件程序和操作系统的能力会特别有用。类似地,当示例性处理器允许多个单独功能结合在统一平台内时,在核上运行多个不同软件和操作系统意味着能够继续使用与被结合的单独功能相关的不同软件。
示例性处理器包括能够多线程操作的多个CPU核210a-h。在示例性实施例中,有八个4路多线程MIPS64兼容CPU,其经常被称作处理器核。本发明的实施例可以包括32个硬件语境,并且CPU核可以以超过大约1.5GH运转。本发明的一个方面是多个CPU核的容许冗余和容错性。因此,例如,如果其中一个核失败,则其它核将继续运转,并且系统将只经受总性能的轻微降级。在一个实施例中,可将第九个处理器核添加到结构中,以确保八个核在起作用的高度确定性。
多线程核方法可以允许软件更有效地使用许多数据包处理应用程序所固有的平行性(parallelism)。大多数传统处理器使用单流式、单线程结构,但是这在典型的网络应用中具有性能局限性。在本发明的多个方面,多线程能够执行不同的软件程序和例程,甚至能够运行不同的操作系统。类似于以上相对于核的描述,当需要在旧操作系统下的一个或多个线程上运行传统软件,并且需要在不同的操作系统或系统下的一个或多个其它线程上运行新的软件时,在单个统一平台内在不同的线程上运行不同的软件程序和操作系统的这种能力会特别有用。类似地,当示例性处理器允许多个单独功能被结合在统一平台内时,在线程上运行多个不同软件和操作系统的能力,意味着可以继续使用与被结合的单独功能相关的不同的软件。以下论述的是本发明使用的用于提高单线程和多线程应用中的性能的一些技术。
现在参照图3A,通过通用参考标号300A示出并指出了传统的单线程单流式处理。在框的上方示出了循环数字。框内的“A”可表示第一数据包,并且框内的“B”可以表示下一个数据包。框内的子数可以表示数据包指令和/或程序段。如图所示,由于没有其它指令已准备好执行,因此导致在高速缓存缺失后的无用(wasted)循环5-10。系统必须实质上地延时以适应固有的存储器等待时间,而这是人们所不希望的。
对于许多处理器而言,通过每一循环内执行更多的指令来提高性能,从而提供指令级并行性(ILP)。在这个方法中,为了每个循环执行多个指令,将更多的功能单元添加到结构中。该方法也称作单线程、多流式处理器设计。当对单流式设计提出一些改进时,一般地,由于数据包处理应用程序的长等待时间特性,性能通常继续受损。特别地,长等待时间存储器引导通常导致类似的低效率和增加的总容量损失。
可选的方法是,可以使用多线程、单流式结构。这个方法利用并且更加充分地采用通常在网络应用中发现的数据包级并行性。简言之,存储器等待时间能够通过适当设计的多线程处理器被有效地隐藏。因此,在这种线程设计中,当一个线程变为非活动态同时等待存储器数据返回时,其它线程可以继续处理指令。这可以通过使得由其它简单多流式处理器经历的无用循环最小化,来最大化处理器使用。
现在参考图3B,通过通用参考标号300B示出并指出了传统的简单多线程调度。如在IS302B左边的框中所示,指令调度程序(Instruction Scheduler(IS),指令调度器)302B能够接收四个线程:A、B、C、和D。如图所示,每个循环能够以“循环”方式从每个线程中简单地选择不同的数据包指令。只要每个线程都具有可用于发布的指令,这种方法通常就工作良好。然而,这种“常规的”指令发布模式通常不能在实际的网络应用中被支持。诸如指令高速缓存缺失、数据高速缓存缺失、数据使用互连、以及硬件资源的非可用性的一般因素能够停止流水线。
现在参考图3C,通过通用参考标号300C示出并指出具有失速线程的传统简单多线程调度。指令调度程序(IS)302C能接收四个线程:A、B、和C、和空线程“D”。如图所示,传统的循环调度导致无用循环4、8、和12,指令来自D线程的位置如果可用的话将会失败。在此实例中,在示出的时间周期内,流水线效率损失为25%。对于被设计用于克服这种效率损失的方法的改进是“期望(eager)”循环调度方案。
现在参考图3D,通过通用参考标号300D示出并指出了期望的循环调度。示出的线程以及可用指令和图3C所示的相同。然而,在图3D中,可以通过期望的循环调度程序(Eager Round-RobinScheduler ERRS)302D来接收线程。只要指令可用于处理,则期望的循环方案就能够通过从每个线程顺次地发布指令而保持流水线充满。例如,当一个线程正在“休眠”并且不发送指令时,调度程序能够从剩余的三个线程以每三个时钟周期一个的速率发布指令。类似地,如果两个线程是不活跃的,则调度程序能够从两个活跃的线程以每隔一个时钟周期一个的速率发布指令。此方法的一个关键优点是全速地运行通用应用程序(诸如那些不能完全利用4路多线程的应用程序)的能力。其它合适的方法包括多线程固定循环调度。
现在参考图3E,通过通用参考标号300E示出并指出了示例性多线程固定循环调度。如图所示,指令调度程序(IS)302E能够从四个活动线程:A、B、C、和D接收指令。在这个可编程的固定循环调度中,在切换到另一个线程之前,可将固定数量的循环提供给特定线程。在示出的实例中,在从线程B发布任何指令之前,线程A发布256个(这可能是此系统允许的最大值)指令。一旦线程B启动,则在手动切断到线程C等的流水线之前,其可以发送200个指令。
现在参考图3F,通过通用参考标号300F示出并指出了具有期望的循环调度的示例性多线程固定循环。如图所示,指令调度程序(IS)302F能够从四个活动线程:A、B、C、和D接收指令。当遇到停顿(stall)情形时,为了使流水线效率最大化,可用使用此方法。例如,如果线程A在其已经发布256个指令之前遇到停顿(例如,高速缓存缺失),则可以以循环方式使用其它线程来“填充”潜在的无用循环。在图3F示出的实施例中,当在循环7之后访问线程A的指令时可能发生停顿情形,此时调度程序可以切换到用于循环8的线程B。类似地,当在循环13之后访问线程B的指令时可能发生另一个停顿情形,因此调度程序能够切换到用于循环14的线程C。在此实例中,在访问线程C的指令期间没有发生停顿,所以尽管存在对线程(例如200)的编程限制,但用于线程C的调度能够继续,从而能够将最后的C线程放置在循环214中的流水线中。
现在参考图3G,通过通用参考标号300G示出并指出了根据本发明的实施例的具有相关接口单元的核。核302G可包括取指令单元(IFU)304G、指令高速缓存单元(ICU)306G、去耦缓冲器308G、存储器管理单元(MMU)310G、指令执行单元(IEU)312G、以及加载/存储单元(LSU)314。IFU 304G可以和ICU 306G连接,并且IEU 312G可以和LSU 314连接。ICU 306G还能和开关组(switch block)(SWB)/2级(L2)超高速缓存块316G连接。可以是1级(L1)数据高速缓存的LSU 314,也可以和SWB/L2 316G连接。IEU 312G可以和信息(MSG)块318G连接,并且该信息块还能和SWB 320G连接。而且,根据实施例来使用的寄存器322G可以包括线程ID(TID)、程序计数器(PC)、和数据区。
根据本发明的实施例,每个MIPS结构核可以具有单一物理流水线,但是可以被配置为支持多线程功能(例如,四个“虚拟”核)。在网络应用中,不同于常规计算类型的指令方案,线程更可能待命用于存储器存取或其它的长等待时间操作。因此,此处所述的调度方法可被用于提高系统的总效率。
现在参考图3H,通过通用参考标号300H示出并指出了示例性10-阶(即,循环)处理器流水线。在一般的操作中,每个指令可使流水线继续进行,并且可以花费10个循环或阶段来执行。然而,在任何特定的时间点,可以有高达10个存在于每个阶段中的不同指令。因此,该实例流水线的通过量可以是完成每个循环的1个指令。
一起参看图3G和3H,例如,循环1-4可以表示IFU 304G的操作。在图3H中,阶段或循环1(IPG阶段)可以包括从不同的线程中调度指令(线程调度302H)。这种线程调度举例来说可以包括循环、加权循环(WRR)、或期望的循环。此外,指令指针(IP)可在IPG阶段生成。从ICU 306G取出的指令可以发生在阶段2(FET)和3(FE2),并且可在阶段2中的开始取指令304H被启动。在阶段3,分支预报306H和/或返回地址堆栈(RAS)(转跳寄存器)310H可以被启动并且可以在阶段4(DEC)中完成。同样在阶段4中,可以返回所取的指令(指令返回308H)。接下来,指令以及其它相关的信息会被传递到阶段5,并且还被放在去耦缓冲器308G中。
图3H的实例流水线操作的阶段5-10可以表示IEU 312G的操作。在阶段5(REG)中,指令可以被解码并且完成任何需要的寄存器查找(寄存器查找314H)。同样在阶段5,危害检测逻辑电路(LD-Use Hazard 316H)能够确定是否需要停止。如果需要停止,则危害检测逻辑电路能够发送信号给去耦缓冲器308G,以重放指令(例如去耦/重放312H)。然而,如果没有用信号通知这种重放,则可从去耦缓冲器308G取出指令。而且,在一些情况下,诸如由于挂起(pending)长等待时间操作(例如,数据高速缓存缺失)引起的危害/依赖的情况下,可能不会重放线程,而是使其休眠。在阶段6(EXE),指令可被“执行”,举例来说这可以包括ALU/转换和/或其它操作(例如,ALU/转换/OP 318H)。在阶段7(MEM),可以启动数据存储器操作,并且可以解析(resolve)分支的输出(分支解析320H)。而且,数据存储器查找可以延伸至跨越阶段7、8(RTN)、和9(RT2),并且可通过阶段9(RT2)返回负载数据(负载返回322H)。在阶段10(WRB),指令可以被提交或撤回,并且所有相关的寄存器会最终被更新用于特定指令。
一般地,这样设计结构使得流水线中没有停顿。这种方法被认为既缓解了执行又增加了操作的效率。然而,有一些需要流水线停顿或停止的情况。在这种情况下,可以被认为是IFU 304G的功能性部分的去耦缓冲器308G能够允许从停止点重启或“重放”,而不必刷新整个流水线和启动线程以实现停顿。例如,信号可以由IFU304G提供给去耦缓冲器308G,以指示需要停顿。在一个实施例中,去耦缓冲器308G能够充当指令队列,从而由IFU 304G获得的每个指令也转到去耦缓冲器308G。如上所述,在这样的队列中,可以基于该特殊线程调度来无序地调度指令。如果信号到需要停顿的去耦缓冲器308G,则在“停止”点之后的那些指令可以被重新线程传送(re-threaded)。另一方面,如果不需要停顿,则可以简单地从去耦缓冲器取出指令并且流水线继续。因此,在没有停顿的情况下,去耦缓冲器308G可以基本上表现为先进先出(FIFO)缓冲器。然而,如果几个线程中的一个请求停顿,则其它线程可以继续进行通过缓冲器,并且不必阻塞。
作为本发明的实施例的另一个方面,翻译后备缓冲器(TLB)可以被管理作为存储器管理单元(MMU)(例如,图3G的MMU310G)的一部分。这可以包括跨越多个线程的单独的、以及共有的TLB分配。128入口TLB可以包括64入口联合主TLB和两个32入口微型TLB,各个微型TLB分别用于指令侧和数据侧。当不能通过访问相关的微型TLB来满足翻译时,可发送请求给主TLB。如果主TLB也不包含期望的入口,则可能发生中断或陷阱。
为了保持与MIPS结构一致,主TLB能够经由TLB读/写指令来支持成对的入口(例如,映射到不同物理页的一对连续虚拟页)、可变的页尺寸(例如4K到256M)、以及软件管理。为了支持多线程,可将安装微型TLB和主TLB中的入口的线程的线程ID(TID)添加到微型TLB和主TLB中的入口。此外,可以用至少两种模式来操作主TLB。在“分区”模式中,每个活动线程可被分配一个专有子集或主TLB的一部分以安装入口,并且在翻译过程中,每个线程只看到属于它的入口。在“全局”模式中,任何线程都可以在主TLB的任何部分中分配入口,并且所有入口对于所有线程可以都是可见的。在主TLB写入期间可以使用“去映射”机构以确保不同的线程不会引入重叠翻译。
一个实例是,可以使用最近未使用(NRU)算法来分配每个微型TLB中的入口。线程可以在微型TLB的任何部分分配入口而与模式无关。然而,微型TLB中的翻译可能受模式的影响。在全局模式中,所有的微型TLB入口对于所有线程可以都是可见的,但是在分区模式中,每个线程可能只看到它自己的入口。此外,因为主TLB能支持每个循环中一个翻译的最大值,因此可以使用仲裁(arbitration)机构来确保来自所有线程的微型TLB“缺失”请求被公平地修补(service)。
在标准的MIPS结构中,地址空间的未映射区遵循物理地址等于虚拟地址的惯例。然而,根据本发明的实施例,当在“虚拟MIPS”模式下操作时,提升了这种限制,并且未映射区能通过微型TLB/主TLB分级结构经历虚拟到物理的映射。这种方法允许用户将不同线程的未映射区彼此分开。然而,作为此方法的副产品,违反了主TLB入口在其虚拟页码(VPN2)区含有未映射地址将被认为无效的常规MIPS惯例。在本发明的一个实施例中,这种能力可以被回复到用户,从而主TLB中的每个入口可以包括特殊的“主有效(master valid)”位,其可能只对于在虚拟MIPS模式下的用户是可见的。例如,无效入口可以用主无效位值“0”表示,并且有效入口可以用主有效位值“1”表示。
作为本发明的另一方面,该系统能够支持在状态良好(in order)的流水线中的无序加载/存储调度。实现的实例是,可以有用户可编程的松弛式存储器排序模式,以使得总性能最大化。在一个实施例中,排序可以通过用户编程从强排序模式改变为弱排序模式。该系统能支持四种类型:(i)加载-加载重排;(ii)加载-存储重排;(iii)存储-存储重排;和(iv)存储-加载重排。每一排序类型能够通过寄存器中的位向量被独立地松弛。如果每一类型均被设置成松弛状态,则可获得弱排序模式。
现在参考图3I,通过通用参考标号300I示出并指出了根据本发明的实施例的处理器内的核中断流操作。可编程中断控制器(PIC)(以下将参照图3J更详细地描述)可向累加302I提供包括中断计数器和MSG块的中断。因此,可在整个系统的任何处理器或核中产生操作300I。功能块调度线程304I能从块302I接收控制接口程序(interface)。通过阴影映射可以实现到MIPS结构的扩展,阴影映射可包括原因(Cause)306I到EIRR 308I、以及状态310I到EIMR 312I。该MIPS结构对于每个设定的状态寄存器和原因寄存器通常只提供2位用于软件中断以及6位用于硬件中断。根据本发明的实施例,能够在提供扩展的同时保持MIPS指令结构的兼容性。
如图3I中更详细地示出的,用于中断挂起的原因306I到EIRR308I的阴影映射可以包括映射到EIRR 308I的0-7位的原因306I的8-15位。而且,与通过PIC相反,软件中断能够保留在核中,并且能够通过写入原因306I的位8和/或9而被制定。原因306I的剩余的6位可被用于硬件中断。类似地,用于掩码的状态310I到EIMR312I的阴影映射可包括映射到EIMR 312I的0-7位的状态310I寄存器的8-15位。此外,在剩余的6位能够被用于硬件中断时,软件中断能够通过写入原因310I的位8和/或9而被制定。用这种方式,根据本发明的实施例的寄存器扩展在处理中断方面能提供更多的灵活性。在一个实施例中,还能经由EIRR 308I的非阴影位8-63和/或EIMR 312I的位8-63传送中断。
现在参考图3J,通过通用参考标号300J示出并指出了根据本发明的实施例的PIC操作。例如,在图2A的框226的执行中可包括流程300J。在图3J中,Sync 302J能接收中断指示,并将控制输入提供给挂起304J控制块。能有效地充当中断通路的挂起304J也能够接收系统定时器和监视定时器指示。调度中断306J能接收来自挂起304J的输入。中断重定向表(IRT)308J能接收来自调度中断306J的输入。
如图所示,IRT 308J的每个中断和/或入口可包括用于中断的相关的属性(例如,属性314J)。属性314J可包括例如CPU掩码316-1J、中断向量316-2J、以及字段316-3J和316-4J。中断向量316-2J可以是6位的字段,其指定中断的优先权。在一个实施例中,如上参考图3I所描述的,通过到EIRR 308I的映射,中断向量316-2J中的较低编号可以为相关的中断指示较高的优先权。在图3J中,在CPU和线程之间的调度310J能接收来自块308J的输入,例如来自属性314J的信息。特别地,CPU掩码316-1J可被用于指示中断将被传递给哪个CPU或核。传递312J能接收来自块310J的输入。
除了PIC之外,32个线程中的每一个,例如,可以包含64位中断向量。PIC可以接收来自媒介的中断或请求,然后将它们传递到适当的线程。实现的一个实例是,这种控制可以是软件可编程的。因此,通过对适当的PIC控制寄存器编程,软件控制可以选择将所有外部类型的中断重定向到一个或多个线程。类似地,PIC可以从PCI-X接口(例如,图2A的PCI-X234)接收中断事件或指示,其又可以被重定向到处理器核的特定线程。此外,中断重定向表(例如,图3J的IRT 308J)可以描述由PIC接收的事件(例如中断指示)的识别以及涉及其到一个或多个“媒介”的指示(direction)的信息。通过使用核掩码,可以将这些事件重定向到特定的核,核掩码可以通过软件设置为指定可被用于将事件传递到指定的接收器的向量号。这种方法的优点在于其允许软件识别中断源而不需要轮询(polling)。
在多个接收器被编程用于给定的事件或中断的情况下,可将PIC调度程序编程以使用全局“循环”方案或基于每次中断的局域循环方案用于事件传送。例如,如果线程5、14、和27被编程以接收外部中断,则PIC调度程序可以将第一外部中断传递到线程5,将下一个传递到线程14,将再下一个传递到线程27,然后,返回到线程5用于下一次中断,等等。
另外,PIC还可以允许任何线程中断任何其它线程(即,内部线程中断)。这可以通过执行到PIC地址空间的存储(即,写操作)而被支持。可以用于这种写操作的值能够指定中断向量和将被PIC用于内部线程中断的目标线程。然后软件控制能够使用标准惯例来识别内部线程中断。作为一个实施例,可以保存向量范围用于该目的。
如以上参考图3G和3H所描述的,每个核可包括流水线去耦缓冲器(例如,图3G的去耦308G)。在本发明的实施例的一个方面,可以使在状态良好的具有多个线程的流水线中的资源利用最大化。因此,去耦缓冲器是“线程感知”的,这是因为能够允许不请求停顿的线程在没有停止的情况下通过(流过)。通过这种方式,流水线去耦缓冲器能重排先前调度的线程。如上所述,线程调度只能发生在流水线的开始。当然,在给定的线程内的指令重排通常不是由去耦缓冲器执行,而是由不会导致损失(penalty)的独立线程执行,这是因为在停顿的线程被阻塞时,能允许独立线程有效地绕过去耦缓冲器。
在本发明的一个实施例中,在核实现中可以使用3个循环高速缓存。为了降低系统成本,与专门设计的高速缓存相反,这种3个循环高速缓存可以是“现有的”单元程序库高速缓存。结果,在加载和使用一段数据和/或指令之间可能有三个循环的空隙。去耦缓冲器能在该3-循环延迟中有效地运转并利用该3个循环延迟。例如,如果只存在单线程,则将会发生3个循环等待时间。然而,当容纳四个线程时,插入的间隙可以被其它线程占据。此外,还可以支持分支预报。对于正确预报但是没有采用的分支,没有损失。对于正确预报并采用的分支,有一个循环“气泡(bubble)”或损失。对于错误的预报,有5个循环气泡,但是,在四个线程运行的情况下,可以大大地减小这种损失,这是因为气泡可以简单地被其它线程占据。例如,四个线程中的每个都能占用一个气泡,而不是5个循环气泡,从而只有效地保留了单个气泡损失。
如以上参照图3D、图3E、和图3F所描述的,根据本发明的实施例的指令调度方案可以包括期望循环调度(ERRS)、每个线程的固定数量的循环、以及具有ERRS的多线程固定循环。此外,用于在存在冲突的情况下激活线程的特殊机制可包括使用记分牌(scoreboard)机制,它能够追踪长等待时间操作,例如存储器存取、乘法、和/或除法操作。
现在参考图3K,通过通用参考标号300K示出并指出了用于多线程分配的返回地址堆栈(RAS)操作。例如,该操作可以在图3G的IFU 304G中执行,并且同样如在图3H的操作310H中所指示。在本发明的实施例中所支持的指令有:(i)分支指令,其中,预报是其被采用或不被采用,并且目标是已知的;(ii)转跳指令,其中它总是被采用并且目标是已知的;和(iii)转跳寄存器,其中它总被采用,并且目标从寄存器和/或具有未知内容的堆栈获得。
在图3K的实例操作中,可使用跳转并链接(JAL)指令来启动该操作。响应于JAL,可将程序计数器(PC)放置在返回地址堆栈(RAS)(304K)上。实例RAS被示出为堆栈312K,并且,在一个实施例中,堆栈312K是用于容纳嵌套子例程调用的先进先出(FILO)型堆栈。基本上与将PC放置在堆栈312K上同时,可作出子例程调用(306K)。然后会发生与子例程指令相关的各种操作(308K)。一旦完成了子例程流程,就可以从堆栈312K获得返回地址(310K),并且主程序能在任何分支延迟(314K)之后继续(316K)。
对于多线程操作,可将堆栈312K分区,从而入口被动态地配置为跨越多个线程。这些分区可以改变为容纳活动线程的数量。因此,如果只有一个线程处于使用中,被分配用于堆栈312K的整组入口能被用于该线程。然而,如果多个线程是活动的,则堆栈312K的入口能够被动态地配置为容纳这些线程,以使得有效地利用堆栈312K的可用空间。
在传统的多处理器环境中,通常将中断给予不同的CPU,用于基于循环或通过用于中断处理的特定CPU的指示来进行处理。然而,根据本发明的实施例,图2A的PIC 226(其操作在图3J中更加详细地示出)可以具有在多线程机器的多个CPU/核以及线程间加载平衡以及重定向中断的能力。如以上参考图3J所述的,IRT308J可包括用于每个中断的属性,如属性314J所示。通过允许特定的CPU和/或线程在断处理之外被屏蔽,CPU掩码316-1J可被用于简化加载平衡。在一个实施例中,CPU掩码可以是32位宽,以允许8个核(每个核具有4个线程)的任意组合被屏蔽。作为实例,可能希望图2A的核-2 210c和核-7 210h是高可用性处理器,所以图3J的CPU掩码316-1J对于IRT 308J中的每个中断可以将其相应的位设置为“1”,从而禁止对核-2或核-7进行任何中断处理。
此外,对于CPU/核以及线程,可以在并非被屏蔽用于特定中断的那些核和/或线程之间采用循环方案(例如,通过指针)。通过这种方式,对于中断加载平衡允许最大可编程灵活性。因此,图3J的操作300J考虑到两级中断调度:(i)如上所述的306J调度;和(ii)包括CPU/核和线程屏蔽的加载平衡。
作为本发明的实施例的另一个方面,允许线程到线程的中断,从而一个线程可以中断另一个线程。这种线程到线程的中断可以被用于不同线程的同步,这对于电信应用来说是平常的。而且,根据本发明的实施例,这种线程到线程的中断可以不通过任何调度。
C.数据交换和L2高速缓存
现在返回到图2A,示例性处理器可以进一步包括提升高性能的许多元件,这些元件包括:8-路组相关片上2级(L2)高速缓存(2MB);高速缓存相关超级传输接口(768Gbps);硬件加速服务质量(QOS)和分类;安全硬件加速-AES、DES/3DES、SHA-1、MD5、和RSA;数据包排序支持;字符串处理支持;TOE硬件(TCP卸载引擎);以及大量IO信号。在本发明的实施例的一个方面,数据交换互连216可通过其各自的数据高速缓存212a-h而耦合到处理器核210a-h中的每一个。而且,通信网络222可通过其各自的指令高速缓存214a-h而耦合到处理器核210a-h中的每一个。此外,在本发明的实施例的一个方面,高级电信处理器还可包括L2高速缓存208,其耦合到数据交换互连,并被设置为存储处理器核210a-h可存取的信息。在示例性实施例中,L2高速缓存包括与处理器核相同数量的部件(有时称作存储体(bank))。参考图4A对该实例进行描述,但是也可能使用更多或更少的L2高速缓存部件。
如前所述的,本发明的实施例可包括使用MOSI(修改、占有、共享、无效)协议的高速缓存相关性的保持。“占有”状态的添加通过允许在处理核之间共享脏(dirty)高速缓存线路来增强“MSI”协议。特别地,本发明的实例实施例可以向软件呈现存储器的完全相关视图,该软件可在8个处理器核以及I/O装置的高达32个硬件环境下运行。可以贯穿L1和L2高速缓存(分别例如,图2A的212a-h和208)层级使用MOSI协议。此外,所有外部参数(reference)(例如,由I/O装置启动的那些)可监听L1和L2高速缓存,以确保数据的相关性和一致性。在一个实施例中,如以下将更详细描述的,在多处理系统中,基于环的方法可以被用于执行高速缓存的相关性。一般地,为了保持相关性,只有一个“节点”可以是一段数据的所有者。
根据本发明的实施例的一个方面,L2高速缓存(例如,图2A的高速缓存208)可以是具有32B线路尺寸的2MB、8-路组相关统一(即,指令和数据)高速缓存。此外,每个循环中可通过L2高速缓存接收高达8个同步参数。L2阵列可以以核时钟速率的大约一半速率运行,但是此阵列可以被输送,以允许将由所有存储体在每个核时钟以大约2个核时钟的等待时间所接收的请求通过此阵列。而且,L2高速缓存设计可以是“非包含”L1高速缓存的,从而能有效地提高总存储能力。
关于对L2高速缓存执行的ECC保护,可以由SECDED(单错纠正双错检测)错误保护代码来保护高速缓存数据和高速缓存标记阵列。因此,在没有软件干预的情况下纠正所有的一位错误。而且,当检测到不可校正的错误时,无论何时修改高速缓存线路,其都可以作为代码错误异常传送到软件。在一个实施例中,如以下将更详细的描述的,每个L2高速缓存可以象任何其他“媒介”一样对元件的环起作用。
根据本发明的实施例的另一个方面,在数据移动环上的“桥”可以被用于存储器和I/O通过量的最佳重定向。图2A的超级存储器I/O桥206和存储器桥218可以是分离的物理结构,但是它们在概念上可以相同。例如,桥可以是用于主存储器和I/O存取的主要监管者。而且,在一个实施例中,I/O可以是存储器映射。
现在参考图4A,通过通用参考标号400A示出并指出了根据本发明的实施例的数据交换互连(DSI)环配置。这种环配置可以是图2A的DSI 216以及超级存储器I/O桥206和存储器桥218的实现。在图4A中,桥206A能够允许在存储器&I/O和环的其余部分之间有接口。每个环形件402a-j均对应于图2A中的核210a-h和存储器桥中的一个。因此,元件402a连接到L2高速缓存L2a以及核-0210a,并且元件402b连接到L2b和核210b,等等,一直到402h连接到L2h和核210h。桥206包括环上的元件402i,并且桥218包括环上的元件402j。
如图4A所示,在一个实例实施例中,以下四个环可以组成环形结构:请求环(RQ),数据环(DT),监听环(SNP),以及响应环(RSP)。在环上的通信是基于数据包的通信。示例性RQ环数据包举例来说包括:目标ID、事务ID、地址、请求类型(例如,RD、RD_EX、WR、UPG)、有效位、可高速缓存指示、以及字节使能(byteenable)。示例性DT环数据包举例来说包括:目标ID、事务ID、数据、状态(例如,错误指示)、以及有效位。示例性SNP环数据包举例来说包括:目标ID、有效位、CPU监听响应(例如,清楚、共享、或脏指示)、L2监听响应、桥监听响应、重试(对于每个CPU、桥、以及核L2)、AERR(例如,非法请求,请求奇偶交验(parity))、以及事务ID。示例性RSP环数据包包括所有的SNP字段,但是可以表示“最终”状态,与RSP环的“进行中”状态相反。
现在参考图4B,通过通用参考标号400B示出并指出了根据本发明的实施例的DSI环元件。在一个实施例中,环元件402b-0可以对应于四个环RQ、DT、SNP、或RSP中的一个。类似地,环元件402b-1、402b-2、和402b-3中的每个可以对应于四个环中的一个。作为实例,可通过对环元件402b-0、402b-1、402b-2、402b-3的加和来形成“节点”。
可在触发器404B中接收输入数据或“环入(Ring In)”。触发器404B的输出可连接到触发器406B和408B以及多路复用器416B。触发器406B和触发器408B的输出可被用于本地数据应用。触发器410B能接收来自相关的L2高速缓存的输入,而触发器412B能接收来自相关的CPU的输入。来自触发器410B和412B的输出能连接到多路复用器414B。多路复用器414B的输出能够连接到多路复用器416B,并且多路复用器416B的输出可连接至输出数据或“环出”。而且,环元件402b-0能接收有效位信号。
一般地,如果数据可用,则在环入上接收的较高优先级的数据将被多路复用器416B选择(例如,有效位=“1”)。如果数据不可用,则可经由多路复用器414B从L2或者CPU中选择数据。此外,在这个实例中,如果希望将在环入上接收的数据用于本地节点,则在再次接收到该数据之前,触发器406B和/或408B能够将数据传送到本地核,而不是允许数据一直围着环传递。
现在参考图4C,通过通用参考标号400C示出并指出了根据本发明的实施例的在DSI中的实例数据检索(retrieval)的流程图。该流程可在启动452中开始,并且可将请求放置在请求环(RQ)上(454)。在环结构中的每个CPU和L2能检查请求的数据(456)。而且,可以在附着于环的每个存储器桥中接收请求(458)。如果任何CPU或L2有请求的数据(460),则可通过具有该数据的节点将数据放置在数据环(DT)上(462)。如果没有CPU或L2发现请求的数据(460),则可通过存储器桥中的一个来检索数据(464)。则可以通过发现数据的节点或存储器桥将确认(acknowledgement)放置在监听环(SNP)和/或响应环(RSP)上(466),并且可以在结束处完成该流程(468)。在一个实施例中,可以隐含被存储器桥放置到SNP和/或RSP环的确认。
在可选实施例中,为了启动存储器请求,存储器桥可以不必等待在任何L2高速缓存中尚未发现数据的指示。相反地,可以投机性的发布存储器请求(例如,到DRAM)。在这种方法中,如果在来自DRAM的响应之前发现数据,则可以放弃后面的响应。投机的DRAM存取可有助于减轻相对长的存储器等待时间的影响。
D.信息传送网络
同样在图2A中,在本发明的实施例的一个方面,高级电信处理器可包括接口开关互连(ISI)224,其耦合到通信网络222和一组通信端口240a-f,并且被设置为在通信网络222和通信端口240a-f之间传送信息。
现在参考图5A,通过通用参考标号500K示出并指出了根据本发明的实施例的快速通信环元件或配置(station)。例如,相关的环结构可以容纳点到点的信息作为MIPS结构的扩展。“环入”信号既能连接到插入队列502A,又能连接到接收队列(RCVQ)506A。插入队列也能连接到多路复用器504A,多路复用器的输出可以是“环出”。插入队列总获得优先权,以使环不会成为备用的。在虚线框520A和522A中示出了用于CPU核的相关寄存器。在框520A中,缓冲器RCV缓冲器510A-0到RCV缓冲器510A-N能和RCVQ506A连接。到多路复用器504A的第二输入可连接到传输队列(XMTQ)508A。同样在框520A中,缓冲器XMT缓冲器512A-0到XMT缓冲器512A-N能和XMTQ 508A连接。同样可以在框520A中找到状态514A寄存器。在虚线框522A中,可以找到存储器-映射配置寄存器516A和基于信用的流控制518A。
现在参考图5B,通过通用参考标号500B示出并指出了用于图5A的系统的信息数据结构。识别区域可以包括线程502B、源504B、和目标508B。而且,可以有信息尺寸指示器尺寸508B。识别区域和信息尺寸指示器能形成侧板514B。将要本身被发送的信息或数据(例如,MSG 512B)可包括多个部分,例如510B-0、510B-1、510B-2、以及510B-3。根据实施例,信息可以是极微的(atomic),以使得整个信息不能被中断。
例如,基于信用的流控制能提供用于管理信息发送的机制。在一个实施例中,分配到发射器用于目标/接收器的所有信用的总数不能超过在其接收队列中的入口的数目的总和(例如,图5A的RCVQ506A)。例如,在一个实施例中,256可以是信用的总数,因为每个目标/接收器的RCVQ的尺寸可以是256个入口。一般地,软件可以控制信用的分配。在启动时间,例如,每个发送器/发射器或参与媒介可被分配有一些信用的缺省数字。然后软件可以基于每个发射器自由地分配信用。例如,每个发送器/发射器可具有由软件为系统中其它的目标/接收器设置的的可编程信用数。然而,并不要求系统中所有的媒介作为目标/接收器参与发送(transmit)信用的分配。在一个实施例中,核-0信用可以被编程用于核-1、核-2、...核-7、RGMII_0、RGMII_1、XGMII/SPI-4.2_0、XGMII/SPI-4.2_1、POD 0、POD1、...POD4等。下面的表1示出了用于作为接收器的核-0的信用分配的的实例。
表1
 
发送媒介 分配的信用(共256个)
核-0 0
核-1 32
核-2 32
核-3 32
核-4 0
核-5 32
核-6 32
核-7 32
POD0 32
RGMII_0 32
所有其它 0
在此实例中,当核-1发送尺寸为2的信息(例如,264-位数据元)到核-0时,在核-0中的核-1信用会被减小2(例如从32到30)。当核-0接收信息时,信息能够进入到核-0的RCVQ。一旦从核-0的RCVQ移除信息,则信息存储空间实际上被释放并变得可用。然后核-0能够发送信号到发送器(例如,发送自由信用信号到核-1)以表明额外可用的空间的数量(例如,2)。如果核-1继续发送信息到核-0,而不对应于来自核-0的自由信用信号,则用于核-1的信用数最终会变成0,并且核-1不能再发送任何信息到核-0。例如,只有当核-0响应于自由信用信号时,核-1才能发送额外信息到核-0。
现在参考图5C,通过通用参考标号500C示出并指出了根据本发明的实施例的如何将多个媒介附着到快速通信网络(FMN)的概念视图。八个核(核-0 502C-0到核-7 502C-7)以及相关的数据高速缓存(D-高速缓存504C-0到504C-7)和指令高速缓存(I-高速缓存506C-0到506C-7)能够连接到FMN。此外,网络I/O接口组也可以连接到FMN。与端口A相关,DMA 508C-A、分析程序/分类器512C-A、和XGMII/SPI-4.2端口A 514C-A能够通过数据包分配引擎(PDE)510C-A连接到FMN。类似地,对于端口B,DMA508C-B、分析程序/分类器512C-B、和XGMII/SPI-4.2端口B 514C-B能通过PDE 510C-B连接到FMN。而且,DMA 516C、分析程序/分类器520C、RGMII端口A522C-A、RGMII端口B 522C-B、RGMII端口C 522C-C、RGMII端口D 522C-D能通过PDE 518C连接到FMN。而且,包括DMA 526C和DMA引擎528C的安全加速引擎524C能连接到FMN。
作为本发明的实施例的一个方面,在FMN上的所有媒介(例如,如图5C所示的核/线程或网络接口)能将信息发送到在FMN上的任何其它媒介。这种结构能允许在媒介之间的快速数据包移动,但是为了任何其它适当的目的,软件能够通过如此定义信息容器的语法和语义来变更通信系统的应用。在任何情况下,如以上参考图5A所述,FMN上的每个媒介包括发送队列(例如,508A)和接收队列(例如,506A)。因此,旨在用于特殊媒介的信息能够被放入相关的接收队列。最初来于特定媒介的所有信息可以被输入相关的发送队列,并且随后被推进到FMN上,用于到期望的接受器的传递。
在本发明的实施例的其它方面,核(例如,图5C的核-0 502C-0到核-7 502C-7)的所有线程可以共享队列资源。为了确保发送信息的公平,可执行“循环”方案用于将信息接收到发送队列中。这能够确保,即使在所有线程中的一个正在以较快的速率发布信息时,所有线程仍具有发出信息的能力。因此,在信息被发布时,给定的传输队列可以是满的(full)。在这种情况下,可以允许所有的线程排队等候一个信息,每个线程都在核内,直到传输队列有空间接受更多信息。如图5C所示,网络接口使用PDE将输入数据包分配到指定的线程。此外,网络接口的输出数据包可以通过数据包排序软件被发送。
现在参考图5D,通过通用参考标号500D示出并指出了传统处理系统中的网络信息流通量。数据包输入可以由数据包分配502D接收并被发送到数据包处理(504-0到504D-3)。数据包存储/排序506D能够接收来自数据包处理的输出,并且能够提供数据包输出。虽然这种数据包级并行处理结构基本上适于网络应用,但是有效的结构必须对输入的数据包分配和输出的数据包存储/排序提供有效的支持,以使并行数据包处理的优点最大化。如图5D所示,每个数据包必须经过单独的分配(例如,502D)和单独的存储/排序(例如,506D)。这两种操作都对数据包流有序列化作用,以使得该系统的总体性能由这两个功能的减慢所决定。
现在参考图5E,通过通用参考标号500E示出并指出了根据本发明的实施例的数据包流。这种方法提供了使得数据包流能通过此系统的广泛的(例如,可升级的)高性能结构。网络输入502E可包括并具有RGMII、XGMII、和/或SPI-4.2接口配置的端口。在接收数据包之后,数据包可以使用快速通信网络(FMN)经由数据包分配引擎(PDE)504E被分配到用于数据包处理506E的线程中的一个:例如线程0、1、2等至线程31。所选择的线程可以执行由数据包标题或有效负荷所编程的一个或多个功能,然后将数据包放到数据包排序软件508E。作为可选实施例,可以使用如图2A的框236所示的数据包排序装置(POD)代替图5E中的508E。在任一实施例中,该功能设置数据包排序,然后经由FMN将其传输到输出网络(例如,网络输出510E)。类似于网络输入,输出端口可以是,例如,配置的RGMII、XGMII、或SPI-4.2接口中的任意一个。
E.接口开关
在本发明的实施例的一个方面,如图2A所示,FMN能连接到每个CPU/核。这种FMN到核的连接可以包括压入/弹出指令、等待信息指令、以及在信息到达时的中断。在传统的MIPS结构中,分配了协处理器或“COP2”空间。然而,根据本发明的实施例,为COP2指定的空间被改为保留用于经由FMN的通信应用。在一个实施例中,软件可执行的指令可包括信息发送(MsgSnd)、信息加载(MsgLd)、到COP2的信息(MTC2)、来自COP2的信息(MFC2)、以及信息等待(Msg Wait)。MsgSnd和MsgLd指令可包括目标信息以及信息尺寸指示。MTC2和MFC2指令可包括从本地配置寄存器传输的数据和传输到本地配置寄存器的数据,例如图5A的状态514A和寄存器522A。Msg Wait指令可包括基本上进入“睡眠”状态直到信息可用(例如,在信息到达时中断)的操作。
作为本发明的实施例的另一个方面,快速通信网络(FMN)环元件能被组织成“存储段”。例如,如上所述,图5A的RCVQ 506A和XMTQ 508A中的每个都可以被以类似的方式在多个存储段之间分区成线程概念。
在本发明的实施例的一个方面,数据包分配引擎(PDE)可以包括XGMII/SPI-4.2接口和四个RGMII接口中的每一个,以使得能够将输入的数据包高效地和负载平衡地分配到处理线程。硬件加速数据包分配对于高处理量的网络应用而言很重要。例如,没有PDE,则可以通过软件处理数据包分配。然而,对于64B数据包,只有大约20ns可用于在XGMII类型的接口上执行该功能。此外,由于单制造者多消费者的情况,必须处理队列指针管理。在不影响整个系统的性能的情况下,这种只有软件的解决方案完全不能满足需要的数据包传递速率。
根据本发明的实施例,PDE能利用快速通信网络(FMN)来迅速地将数据包分配到由软件指定作为处理线程的线程。在一个实施例中,PDE能执行加权循环方案用于在期望的接收器之间分配数据包。在一个实现中,实际上并没有移动数据包,而是当网络接口接收到它的时候,相反地将其写入存储器中。PDE能在信息中插入“数据包描述符”,然后将其发送到由软件指定的接收器中的一个。这也能意味着不是所有的线程必须参与接收来自任何给定的接口的数据包。
现在参考图6A,通过通用参考标号600A示出并指出了根据本发明的实施例的将数据包均匀地分配到四个线程的PDE。在这个实例中,软件可选择线程4到线程7,用于数据包的可能接收。例如,PDE然后能依次选择这些线程中的一个来分配每个数据包。在图6A中,网络输入可以由数据包分配引擎(PDE)602A接收,数据包分配引擎能选择线程4、5、6、或7中的一个用于数据包分配。在此特定实例中,线程4能在时刻t1接收数据包1并在时刻t5接收数据包5;线程5能在时刻t2接收数据包2并在时刻t6接收数据包6;线程6能在时刻t3接收数据包3并在时刻t7接收数据包7;以及线程7能在时刻t4接收数据包4并在时刻t8接收数据包8。
现在参考图6B,通过通用参考标号600B示出并指出了根据本发明的实施例的使用循环方案来分配数据包的PDE。如上参考FMN所述,软件能编程用于来自每个发射器的所有接收器的信用数。由于PDE本质上是发射器,所以它还能够以“循环”方式使用信用信息来分配数据包。在图6B中,如所示出的,PDE 602B能够接收网络输入并将数据包提供给指定的线程(例如,线程0到线程3)。在此实例中,线程2(例如,接收器)可以比其它线程更慢地处理数据包。PDE 602B能检测来自该接收器的信用可用性的慢步调(pace),并通过将数据包引导到更有效的处理线程来进行调整。特别地,在循环t11时刻,线程2具有在PDE内可用的最少的信用数。虽然在循环t11时刻下一个逻辑接收器可能已经是线程2,但PDE能识别处理延迟,因为线程和相应的选择线程3作为最佳的目标用于分配数据包11。在这个特定的实例中,线程2能继续相对于其它线程显示处理延迟,所以PED能避免到该线程的分配。而且如果没有接收器具有接收新数据包的空间,则PDE能将数据包队列扩展到存储器。
因为大多数网络应用不是非常能够容忍数据包的随机到达顺序,所以希望按顺序传递数据包。另外,可能难以在系统中结合并行处理和数据包排序的特征。一种方法是将排序任务留给软件,但是之后维持线路速度将变得困难。另一个选择是在单个流程中将所有数据包发送到相同的处理线程,以使得排序基本上是自动的。然而,这种方法需要在数据包分配之前识别流程(即,分类),这降低了系统性能。另一个缺点是最大的流程的通过量(throughput)由单个线程的性能决定。这妨碍了单个大流程在其穿过系统时维持其通过量。
根据本发明的实施例,可以使用称作数据包排序装置(POD)的高级硬件加速结构。POD的一个目标在于在数据包被发送到网络输出接口之前,通过重排数据包来提供并行处理线程的无限制使用。现在参考图6C,通过通用参考标号600C示出并指出了根据本发明的实施例的在数据包寿命周期内的POD放置。该图基本上示出了在通过处理器的数据包的生命周期内的POD的逻辑放置。在该特定实例中,如图所示,PDE 602C能发送数据包到线程。线程0能在时刻t1接收数据包1,以及在时刻t5接收数据包5等等,直到循环tn-3。线程1能在t2时刻接收数据包2,以及在时刻t6接收数据包6等等,直到循环tn-2。线程2能在时刻t3接收数据包3,以及在时刻t7接收数据包7等等,直到时刻tn-1。最后,线程3能在时刻t4接收数据包4,以及在时刻t8接收数据包8等等,直到时刻tn
在从不同的线程接收数据包然后发送到网络输出的过程中,数据包排序装置(POD)604C能被看作是数据包分类器。通过给定的网络接口接收的所有数据包会被分配有序列号。这个序列号然后和剩余的数据包信息一起由PDE发送到工作线程。一旦线程已经完成了对数据包的处理,则它能将数据包描述符连同原始的序列号一起转发到POD。例如,POD能够按照由接收接口分配的原始序列号严格地决定的顺序将这些数据包释放到输出接口。
在大部分应用中,POD将按照随机的顺序接收数据包,因为数据包通常由线程按照随机顺序处理。POD能基于由接收接口指定的序列号创建队列,并在接收到数据包时继续分类数据包。POD能按照由接收接口指定的顺序将数据包发送到给定的输出接口。现在参考图6D,通过通用参考标号600D示出并指出了根据本发明的实施例的POD输出分配。如在数据包排序装置(POD)602D中所能够看到的,通过执行线程能将数据包2和4最初发送到POD。在几个循环之后,线程能完成对数据包3的工作,并将其放在POD中。该数据包可能尚未排序,因为数据包1尚未就位。最后,在循环t7中完成数据包1,并相应地将其放置在POD中。此时数据包能够被排序并且POD能以1、2、3、4的顺序开始发送数据包。如果接下来接收到数据包5,则在数据包4之后的输出中发送数据包5。当接收到剩余的数据包时,其每个都可以被存储在队列(例如,512-深层(deep)结构)中,直到接收到下一个更高数字的数据包。这时,可将数据包添加到输出流程(例如,网络输出)。
有可能最老的数据包从来没有到达POD,从而产生短暂的线端阻塞(head-of-line blocking)情况。如果不适当地处理,这种错误情况将导致系统死锁(deadlock)。然而,根据实施例的一个方面,POD配备有超时机构,其被设置为在超时计数到期时,在列表的头部结束(drop)未到达的数据包。也可能在超时计数器到期之前,以填满队列容量的速率将数据包输入到POD中。根据本实施例的一个方面,当POD达到队列容量时,可结束在列表的头部的数据包并且接受新的数据包。该动作同样可以消除任何线端阻塞情况。而且,由于坏的数据包、控制数据包、或一些其它适当的原因,软件可意识到某一序列号将不会进入POD。在这种情况下,在允许POD自动起作用之前,软件控制可以在POD中插入“哑元”描述符,以消除短暂的线端阻塞情况。
根据本发明的实施例,五个可编程的POD可以是可用的(例如,在芯片上)并且能被看作是一般的“分类”结构。在一个实例结构中,软件控制(即,经由用户)能够将POD中的四个分配到四个网络接口,而剩余的一个POD用于一般的分类目的。此外,可以容易地绕过POD,如果希望这样来用于在满足只有软件控制时的应用。
F.存储器接口和存取
在本发明的实施例的一个方面,高级电信处理器还可以包括存储器桥218,其耦合到数据交换互连和至少一个通信端口(例如,框220),并且被配置为和数据交换互连以及通信端口通信。
在本发明的一个方面,高级电信处理器还可以包括超级存储器桥206,其耦合到数据交换互连(DSI)、接口开关互连、和至少一个通信端口(例如,框202、框204),并且用于和数据交换互连、接口开关互连、以及通信端口通信。
在本发明的实施例的另一方面,如上参考图4A、图4B、和图4C所述的,可在基于环的数据移动网络上执行存储器排序。
G.结论
本发明的优点包括以有效的和节约成本的方式在计算机系统和存储器之间提供高带宽通信的能力。
已经披露了示例性实施例和最佳模式。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (32)

1.一种高级处理器,包括:
多个处理器核,每个处理器核都具有数据高速缓存和指令高速缓存;
数据交换互连,耦合到所述处理器核中的每个,并用于在所述处理器核之间传递信息;以及
通信网络,耦合到所述处理器核中的每个以及多个通信端口;
其中,
所述数据交换互连通过所述处理器核中的每个的各自的数据高速缓存被耦合到所述处理器核中的每个;以及
所述通信网络通过所述处理器核中的每个的各自的指令高速缓存被耦合到所述处理器核中的每个。
2.根据权利要求1所述的高级处理器,进一步包括:
2级高速缓存,耦合到所述数据交换互连,并用于存储所述处理器核可存取的信息。
3.根据权利要求1所述的高级处理器,进一步包括:
接口开关互连,耦合到所述通信网络和所述多个通信端口,并用于在所述通信网络和所述通信端口之间传递信息。
4.根据权利要求2所述的高级处理器,进一步包括:
接口开关互连,耦合到所述通信网络和所述多个通信端口,并用于在所述通信网络和所述通信端口之间传递信息。
5.根据权利要求1所述的高级处理器,进一步包括:
存储器桥,耦合到所述数据交换互连和至少一个通信端口,并用于和所述数据交换互连以及所述通信端口通信。
6.根据权利要求2所述的高级处理器,进一步包括:
存储器桥,耦合到所述数据交换互连和至少一个通信端口,并用于和所述数据交换互连以及所述通信端口通信。
7.根据权利要求5所述的高级处理器,进一步包括:
超级存储器桥,耦合到所述数据交换互连、接口开关互连、和至少一个通信端口,并用于和所述数据交换互连、所述接口开关互连、以及所述通信端口通信,其中,所述接口开关互连被耦合到所述通信网络和所述多个通信端口,并用于在所述通信网络和所述通信端口之间传递信息。
8.根据权利要求6所述的高级处理器,进一步包括:
超级存储器桥,耦合到所述数据交换互连、接口开关互连、和至少一个通信端口,并用于和所述数据交换互连、所述接口开关互连、以及所述通信端口通信,其中,所述接口开关互连被耦合到所述通信网络和所述多个通信端口,并用于在所述通信网络和所述通信端口之间传递信息。
9.根据权利要求1所述的高级处理器,其中:
所述处理器核中的每个均用于执行多个线程。
10.根据权利要求5所述的高级处理器,其中:
所述处理器核中的每个均用于执行多个线程。
11.根据权利要求6所述的高级处理器,其中:
所述处理器核中的每个均用于执行多个线程。
12.一种高级处理器,包括:
多个处理器核,每个处理器核具有数据高速缓存;
2级高速缓存,用于存储所述处理器核可存取的信息;以及
数据交换互连,耦合到所述处理器核和所述2级高速缓存,并且用于在所述处理器核和所述2级高速缓存之间传递信息;
其中
所述数据交换互连通过所述处理器核中的每个的各自的数据高速缓存被耦合到所述处理器核中的每个。
13.根据权利要求12所述的高级处理器,进一步包括:
存储器桥,耦合到所述数据交换互连;以及
其中,所述数据交换互连用于在所述处理器核、所述2级高速缓存、以及所述存储器桥之间传递信息。
14.根据权利要求12所述的高级处理器,其中:
所述数据交换互连包括多个元件,每个元件耦合到所述处理器核中的每个的相应的数据高速缓存以及所述2级高速缓存的相应的部分。
15.根据权利要求13所述的高级处理器,其中:
所述数据交换互连包括多个元件,每个元件耦合到所述处理器核中的每个的相应的数据高速缓存、所述2级高速缓存的相应的部分、以及耦合到所述存储器桥。
16.根据权利要求14所述的高级处理器,其中:
所述数据交换互连包括使所述元件互连的四个环,所述四个环包括请求环、数据环、监听环、和响应环。
17.根据权利要求15所述的高级处理器,其中:
所述数据交换互连包括使所述元件互连的四个环,所述四个环包括请求环、数据环、监听环、和响应环。
18.根据权利要求15所述的高级处理器,其中:
所述存储器桥用于只有在高速缓存缺失的情况下才从主存储器检索数据。
19.根据权利要求17所述的高级处理器,其中:
所述存储器桥用于只有在高速缓存缺失的情况下才从主存储器检索数据。
20.根据权利要求15所述的高级处理器,其中:
所述存储器桥用于在高速缓存搜索完成之前,投机地从主存储器检索数据。
21.根据权利要求17所述的高级处理器,其中:
所述存储器桥用于在高速缓存搜索完成之前,投机地从主存储器检索数据。
22.根据权利要求12所述的高级处理器,其中:
所述2级高速缓存用于采用基于修改、拥有、共享、无效协议的相关性技术。
23.根据权利要求13所述的高级处理器,其中:
所述2级高速缓存用于采用基于修改、拥有、共享、无效协议的相关性技术。
24.根据权利要求14所述的高级处理器,其中:
所述2级高速缓存用于采用基于修改、拥有、共享、无效协议的相关性技术。
25.根据权利要求15所述的高级处理器,其中:
所述2级高速缓存用于采用基于修改、拥有、共享、无效协议的相关性技术。
26.一种用于在不同的操作系统上执行软件应用程序的高级处理器,包括:
多个处理器核,每个处理器核用于执行多个线程;
多个操作系统,在所述处理器核上运行;
数据交换互连,耦合到所述处理器核中的每个,并用于在所述处理器核之间传递信息;以及
通信网络,耦合到所述处理器核中的每个以及多个通信端口;
其中
所述数据交换互连通过所述处理器核中的每个的各自的数据高速缓存被耦合到所述处理器核中的每个;以及
所述通信网络通过所述处理器核中的每个的各自的指令高速缓存被耦合到所述处理器核中的每个。
27.根据权利要求26所述的高级处理器,其中:
第一处理器核用于运行第一操作系统;
第二处理器核用于运行不同于所述第一操作系统的第二操作系统;以及
第三处理器核用于运行不同于所述第一操作系统和所述第二操作系统的第三操作系统。
28.根据权利要求26所述的高级处理器,其中:
第一线程用于运行第一操作系统;
第二线程用于运行不同于所述第一操作系统的第二操作系统;以及
第三线程用于运行不同于所述第一操作系统和所述第二操作系统的第三操作系统。
29.根据权利要求26所述的高级处理器,其中:
所述多个处理器核的第一处理器核用于运行第一操作系统;以及
第一线程用于运行不同于所述第一操作系统的第二操作系统。
30.根据权利要求26所述的高级处理器,其中:
数据交换互连通过相应的数据高速缓存耦合到所述处理器核中的每个;以及
所述通信网络通过相应的指令高速缓存耦合到所述处理器核中的每个。
31.根据权利要求26所述的高级处理器,进一步包括:
2级高速缓存,耦合到所述数据交换互连,并用于存储所述处理器核可存取的信息。
32.根据权利要求27所述的高级处理器,进一步包括:
2级高速缓存,耦合到所述数据交换互连,并用于存储所述处理器核可存取的信息。
CNB2004800243807A 2003-07-25 2004-07-23 高级处理器 Expired - Fee Related CN100498757C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US49023603P 2003-07-25 2003-07-25
US60/490,236 2003-07-25
US10/682,579 2003-10-08

Publications (2)

Publication Number Publication Date
CN1842781A CN1842781A (zh) 2006-10-04
CN100498757C true CN100498757C (zh) 2009-06-10

Family

ID=37031163

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800243807A Expired - Fee Related CN100498757C (zh) 2003-07-25 2004-07-23 高级处理器

Country Status (1)

Country Link
CN (1) CN100498757C (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678775B1 (en) * 2008-04-09 2017-06-13 Nvidia Corporation Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment
US9460012B2 (en) * 2014-02-18 2016-10-04 National University Of Singapore Fusible and reconfigurable cache architecture
EP3211518A1 (en) * 2014-10-21 2017-08-30 Kabushiki Kaisha Tokyo Kikai Seisakusho Image processing device
CN112130929A (zh) * 2019-10-18 2020-12-25 广东财经大学 一种兼容裸机工具链多分区嵌入式配置方法及系统
CN113014528B (zh) * 2019-12-19 2022-12-09 厦门网宿有限公司 报文处理方法、处理单元及虚拟专用网络服务器

Also Published As

Publication number Publication date
CN1842781A (zh) 2006-10-04

Similar Documents

Publication Publication Date Title
CN101878475B (zh) 向星形拓扑串行总线接口委托网络处理器操作
KR101279473B1 (ko) 어드밴스드 프로세서
US10102179B2 (en) Multiple core computer processor with globally-accessible local memories
US7627717B2 (en) Advanced processor messaging apparatus including fast messaging ring components configured to accomodate point-to-point transfer of non-memory related messages
US7991977B2 (en) Advanced processor translation lookaside buffer management in a multithreaded system
US9264380B2 (en) Method and apparatus for implementing cache coherency of a processor
US8015567B2 (en) Advanced processor with mechanism for packet distribution at high line rate
EP1660992B1 (en) Multi-core multi-thread processor
US7984268B2 (en) Advanced processor scheduling in a multithreaded system
US7961723B2 (en) Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7461215B2 (en) Advanced processor with implementation of memory ordering on a ring based data movement network
US20050033889A1 (en) Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US7461213B2 (en) Advanced processor system using request, data, snoop, and response rings
US7467243B2 (en) Advanced processor with scheme for optimal packet flow in a multi-processor system on a chip
US20050041651A1 (en) Advanced processor with mechanism for fast packet queuing operations
US9088474B2 (en) Advanced processor with interfacing messaging network to a CPU
CN100498757C (zh) 高级处理器
US20050044324A1 (en) Advanced processor with mechanism for maximizing resource usage in an in-order pipeline with multiple threads
US6425090B1 (en) Method for just-in-time delivery of load data utilizing alternating time intervals
US6430683B1 (en) Processor and method for just-in-time delivery of load data via time dependency field
US6505277B1 (en) Method for just-in-time delivery of load data by intervening caches
EP4202671A1 (en) Global unified interdependent multi-tenant quality-of-service processor scheme
US11782718B2 (en) Implied fence on stream open

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1093796

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1093796

Country of ref document: HK

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

Granted publication date: 20090610

Termination date: 20150723

EXPY Termination of patent right or utility model