Vliw处理器的虚拟功能单元的制作方法

文档序号:6456661阅读:192来源:国知局

专利名称::Vliw处理器的虚拟功能单元的制作方法
技术领域
:本发明涉及微型计算机系统,更具体地,涉及具有带旁路网络的许多发起槽的VLIW处理器,并且其中,针对带旁路网络的两个或更多个发起槽来虚拟化单个物理功能处理器单元。
背景技术
:在过去的50年中,处理器设计已取得了显著的进步。总体上增大半导体电路密度允许使用更少的组件并以降低了的成本实现更高的性能级别。当利用CMOS工艺技术来实现时,低功率的实现方式变得可能。针对音频和视频处理的嵌入式消费者市场是受成本驱动的。最初利用专用硬件实现了这样的设备,该专用硬件可以以比利用可编程处理器的可能价格更低的价格提供所需的性能。随后,较新音频和视频标准的增加的复杂度使可编程性在经济方面变得更加可行,并且由专门用途处理器提供的更高性能级别使可编程性变得极为可行。在过去,可以利用专用硬件经济地实现MPEG2视频处理。但是更新、更高性能的H.264/AVC视频处理目前最好由专门用途(领域)处理器来完成。因此,最近的消费设备目前包括超过1960年代IBM大型机相应性能级别的可编程处理性能级别。低功率处理器实现方式使电池供电的移动电话和其他便携式设备变得可行。TM3270是NXP(前飞利浦)半导体TriMedia架构族中的最新的媒体处理器。TM3270是针对视频和音频处理的专门用途领域处理器并针对嵌入式消费者市场提供了可编程媒体处理平台。详见J.W.vandeWaerdt,TheTM3270Media-processor,pp.183,October2006,ISBN90-9021060-1,PhDThesis(BibTeX)。在互联网上从http:〃ce.et.tuddft.nl/publicationfiles/1228587thesisJANWILLEM.ud—f下载。典型地,超长指令字(VLIW,verylonginstructionword)处理器是静态调度处理器,例如NXPTM3270和德克萨斯仪器公司TMS320C6x。通过编译器/调度器在"编译"时间而非"执行"时间完成向VLIW处理器发起槽和功能单元的操作的分配。通过诸如超标量(super-scalar)处理器之类的运行时间调度处理器来完成"执行"时间处的分配。因此,编译器/调度器必须详细地了解VLIW处理器的发起槽和功能单元。如图1A所示,在典型的4发起槽的VLIW处理器中,四种不同类型的功能单元可用于VLIW编译器/调度器。例如,发起槽h算术逻辑单元(ALU);发起槽2:浮点算术单元(FALU);发起槽3:用于桶形移位器操作的移位器;以及,发起槽4:用于加载和存储操作的LS。源操作数将来自统一寄存器堆,并且,操作结果被放入相同的寄存器堆中。如果每一功能单元采用单个周期来执行操作,则这里能够更简单地解释编译器/调度器的功能。参见表I。每个NOP指示无操作且由于关联发起槽没有执行操作而成为资源浪费。因此,插入越少的NOP就越好。<table>tableseeoriginaldocumentpage6</column></row><table>表I中的代码表示由处理器执行的两个顺序VLIW指令。每一VLIW指令可以调用被分配给特定发起槽的四个操作。某些是NOP操作。例如,第一指令(i)的发起槽4中的LD32操作产生下一接续VLIW指令(i+l)中发起槽3中的SLL操作将会需要的结果。在该理想示例中,由于所有功能单元仅需要单个周期来执行其操作,因而每一操作的结果可用于接续的VLIW指令中的所有其他操作。通过寄存器堆在功能单元之间传达操作数数据。但是这样的寄存器传达可能会在处理器中创建关键时间路径(criticaltimingpath)。在通常的实践中,如果接续的VLIW指令(指令i+l)中的操作需要操作结果,则如图1A所示,必须通过旁路网络来传达该操作结果。如果在后续的VLIW指令(i+2、i+3、i+4等)中使用该操作结果,则可以通过寄存器堆来传达该操作结果。如果全部传达都必须通过寄存器堆,则旁路网络的使用缓和了可能会出现的关键时间路径。可以通过增加发起槽的数目来构造更高性能的VLIW处理器。例如,具有更多相应功能单元的8发起槽的处理器同4发起槽的处理器相比可以提供双倍的性能。参见图1B。附加的四个发起槽(槽5-槽8)可能具有以下功能单元发起槽5:ALU;发起槽6:FALU;发起槽7:移位器;以及,发起槽8:另一移位器。8发起槽的处理器的旁路网络远比4发起槽的机器中的旁路网络更复杂和昂贵。这样的高复杂度旁路网络可以容易地变成8发起槽的处理器设计中的关键时间路径。因此,德克萨斯仪器VLIW处理器使用簇(clustering),其中,将八个发起槽分组进四个发起槽的两个簇中,四个发起槽例如是发起槽l-4和5-8。参见图1C。这些簇中的每一个都具有其自身的旁路网络,但仅有4发起槽的机器的复杂度。这样的旁路网络复杂度的降低阻止了旁路网络变成处理器工作中的关键时间路径。这样的簇是以性能和功能为代价的。不能通过下一接续VLIW指令(i+l)将操作结果传达给另一簇中的另一操作。在两簇的旁路网络中没有提供所需的旁路路径。簇间的传达必须通过统一寄存器堆,并且向操作数数据变得可用的时间添加了一个附加周期时间。例如,如果指令中的FADD操作需要来自发起槽5的指令(i)中的ADD操作,则VLIW编译器/调度器应当使用其对发起槽簇的了解,来分配下一指令(i+l)以通过例如发起槽6中的FADD操作在相同簇中进行FADD操作。如果将该FADD操作(例如,发起槽2中的FADD操作)分配给了另一集群,则可能必须延迟直到达到指令(i+2)为止。这相当于由必须流经统一寄存器堆的数据所引起的等待时间。因此,当编译器/调度器配备有与处理器的拓扑和组织有关的信息时,可以在两个而非三个VLIW指令中执行ADD-FADD操作序列。尽管采用了簇,但在其他情况下也可以实现类似的进步。簇有助于缓和旁路网络加载和复杂度。簇还可以应用于针对不同集群的各自寄存器堆,或者与簇间传达机制相结合以将操作数数据从一个簇传递给另一个簇。统一寄存器堆提供了一种尽管以一个指令延迟为代价但使寄存器能够加载、安置和被读取的、在簇之间传递数据的方式。每一LS单元复杂且成本较高,因此,为了簇而复制第二LS单元是异常昂贵的。可在每个VLIW指令中维持两个加载或存储操作的多端口LS单元是复杂的,并且,LS单元通常需要大量的芯片有效面积,可能完全无法获得所需的额外面积。如果8发起槽的处理器在簇2中没有使用复制的LS,则簇2不能被指示来进行任何加载或存储操作。所需要的是一种支持许多发起槽功能单元的复制和性能进步的方式,在该发起槽功能单元中,旁路网络簇已用于在没有显著地牺牲性能的前提下降低复杂度。
发明内容在示例实施例中,在静态调度VLIW处理器中采用了虚拟功能单元。该设计向处理器调度器提供了功能单元的"虚拟"视图,其中,虚拟视图的数量超过了功能单元的物理实例的数量。本发明的一个优点在于,针对太困难或成本太高以致无法进行物理复制的那些类型的功能单元,来实现显著的处理器性能改进。本发明的另一优点在于,可以利用旁路网络簇来简化VLIW处理腿益o本发明的又一优点在于,提供了一种编译器/调度器,能够对VLIW处理器中两个或更多个发起槽提供虚拟化。本发明的以上概述并不意在表示本发明的每一个所公开的实施例或每个方面。在以下的附图和详细描述中提供了其他方面和示例实施例。结合附图,考虑对本发明各种实施例的以下详细描述,可以更完整地理解本发明,在附图中图1A是带旁路网络的四发起槽处理器的功能框图1B是带单个复杂旁路网络的八发起槽处理器的功能框图1C是带两个小的4槽旁路网络簇的八发起槽处理器的功能框图2是本发明的八发起槽处理器实施例的功能框图,其中,该处理器实施例带有可虚拟访问相同加载-存储单元的两个4槽旁路网络簇;图3是可被虚拟映射到图2的两个簇中的加载-存储设备的功能框图4是本发明的、带有单个旁路网络的八发起槽处理器实施例的功能框图,并且其中,已针对两个发起槽虚拟化了一个加载-存储单元。具体实施例方式尽管本发明适于各种修改和备选形式,但在附图中已作为示例示出了本发明的细节并将详细描述这些细节。然而,应当理解的是,其意图不在于将本发明限于所描述的具体实施例。相反,其意图在于覆盖落入由所附权利要求所限定的本发明精神和范围内的所有修改、等同替代方式和备选方式。超长指令字(VLIW)处理器具有针对每一指令进行并行操作的功能处理单元。通过各个发起槽(例如,八个发起槽)来操作VLIW指令。对于每个发起槽,可以使用多个功能单元。这里,为了简单起见,对每个发起槽的一个功能单元进行描述。NXPTriMedia架构是对于每个发起槽具有多个功能单元的设计的一个示例。来自取指令单元(IFU)的VLIW指令的对应部分告知各自的ALU、FALU、移位器和加载-存储单元到何处获得其输入操作数以及利用这些操作数做什么。旁路网络使一个功能单元的结果可用于正好下一指令周期中的另一功能单元。统一寄存器堆在两个指令周期过后才会被读取。带有能够在任何和所有八个发起槽当中进行通信的单个旁路网络的8槽VLIW处理器对于大多数应用来说成本太高且太过复杂。因此,代之以使用更小的4槽旁路网络簇。图2示出了本发明的一个VLIW处理器实施例,这里由通用附图标记200来表示。VLIW指令由八个功能单元并行操作,这八个功能单元例如是ALU201、FALU202、移位器(SHIFT)203、LS204、ALU205、FALU206、移位器207和LS208。然而,实现LS204和LS208作为虚拟加载-存储单元实现。单个物理LS210针对相应的旁路网络簇一_簇1212和簇2214形成多个端口。统一寄存器堆216从每个操作单元201-208接收所有结果,并准备在两个指令过后被读取。旁路网络簇一_簇1212和簇2214允许仅在一个VLIW指令过后在相应的簇内读取结果。处理器200的单个VLIW指令包括发起槽4或发起槽8中的LS操作,但不同时包括这两个发起槽中的操作。如果LS操作需要将出现在簇1212中的结果,则必须在针对LS204的发起槽4中实现LS指令。同样,如果LS操作需要将出现在簇2214中的结果,则必须在针对LS208的发起槽8中实现LS指令。物理LS210中的多端口将朝向对应的簇。从取指令单元(IFU)220中逐指令地提供VLIW。这些VLIW是由编译器/调度器224汇编了的程序224的一部分。这样的编译器/调度器224知道发起槽201-208、簇l212、簇2214和该一个物理LS210的组织和限制。编译器/调度器224相应地对程序指令进行汇编以最佳利用资源。图2示出了两个簇之间的加载-存储功能处理单元的虚拟化。本发明的实施例可以虚拟化任何类型的VLIW功能处理单元,以使其作为两个或更多个簇中的发起槽而出现。图3提供了可以如何使用多端口或数据复用器来在簇1和簇2的槽4和槽8中分别实现虚拟LS单元。电路300将一个复用LS设备302连接进簇1虚拟LS304和簇2虚拟LS306中。实际LS单元312的数据输入复用器308和310选择来自每一簇的操作数。将结果广播至这两个簇。输入复用器308和310将通过逐指令地感测已指向槽4或槽8中哪一个以执行来自IFU的LS指令,来接收与要读入哪个簇有关的指令。再次参照图1B,不分簇的处理器可以受益于虚拟视图。通过在物理功能单元的多个发起槽中提供多个虚拟视图,编译器/调度器更自由地调度功能单元的操作。图4示出了静态调度的、不分簇的VLIW处理器400。VLIW处理器400包括八个发起槽401-408,其中,单个物理LS功能单元410已虚拟化并支持发起槽401-408中的两个加载-存储(LS)发起槽404和408。旁路网络412提供了八个发起槽401-408之间的快速操作数通信,并且统一寄存器堆414提供了传递数据的另一种手段。来自程序文件420的取指令单元(IFU)418提供VLIW416。编译器/调度器422提供通过虚拟化某些发起槽而施加的限制和约束。尽管己参照多个具体示例实施例对本发明进行了描述,但本领域的技术人员要认识到,在不脱离权利要求书中所阐述的本发明精神和范围的前提下,可以对本发明作出许多改变。权利要求1、一种超长指令字(VLIW)处理器系统,包括多个发起槽,在所述多个发起槽当中并行地操作VLIW;针对所述多个发起槽中各个发起槽的组的多个旁路网络簇,使得操作结果能被直接传递并能够避免通过统一寄存器堆而发生的延迟;所述多个发起槽中每一个发起槽中的多个功能处理单元,所述多个功能处理单元的复本被分配给每一旁路网络簇;至少两个虚拟发起槽,分别被布置于所述多个旁路网络簇中的各个簇中;以及单个功能单元,通过所述虚拟发起槽而连接,并出现在所述多个旁路网络簇中的各个簇中;其中,所述单个功能单元利用多端口而实现一次,并能够接收所述多个旁路网络簇上的操作数和输出结果,以避免通过所述统一寄存器堆而发生的延迟。2、根据权利要求l所述的系统,还包括取指令单元(IFU),用于将每个VLIW提供给所述多个发起槽;包括供所述IFU访问的多个VLIW指令的程序;以及编译器/调度器,知道每一发起槽、每一旁路网络簇、和通过所述虚拟发起槽而连接的单个功能单元的组织和限制,并且用于相应地对程序指令进行汇编以最优地利用处理器资源。'3、根据权利要求l所述的系统,还包括-作为通过所述虚拟发起槽而连接的单个功能单元而被包括的加载-存储单元。4、一种超长指令字(VLIW)处理器,包括八个发起槽的集合,在所述八个发起槽当中并行地操作VLIW;针对所述八个发起槽中各个发起槽的两个组的一对旁路网络簇,使得操作结果能被直接传递并能够避免通过统一寄存器堆而发生的延迟;所述八个发起槽中一些发起槽中的多个功能处理单元,所述多个功能处理单元的复本被分配给每一旁路网络簇;至少两个加载-存储虚拟发起槽,分别被布置于所述一对旁路网络簇中的各个簇中;以及单个加载-存储功能单元,通过所述虚拟发起槽而连接,并出现在多个旁路网络簇中的各个簇中;其中,所述单个加载-存储功能单元利用多端口而实现一次,并能够接收所述两个旁路网络簇的操作数和输出结果,以避免在必须通过所述统一寄存器堆传递结果的情况下发生的延迟。5、根据权利要求4所述的VLIW处理器,还包括取指令单元(IFU),用于将每个VLIW提供给所述多个发起槽;以及包括供所述IFU访问的多个VLIW指令的程序;其中,知道每一发起槽、每一旁路网络簇、和通过所述虚拟发起槽而连接的单个加载-存储功能单元的组织和限制的编译器/调度器用于对最优地利用处理器资源的程序指令进行汇编。6、根据权利要求4所述的VLIW处理器,还包括编译器/调度器,用于提供与具有多个虚拟视图的功能单元的操作的调度有关的任何约束。7、一种在超长指令字(VLIW)处理器中降低构造成本和改进操作性能的方法,包括将发起槽分组进至少两个旁路网络簇中;以及通过多端口来虚拟化至少一个物理功能单元,以使其出现在至少两个旁路网络簇中。8、一种在多个发起槽中提供物理功能单元的多个虚拟视图的不分簇的静态调度VLIW处理器,并且所述不分簇的静态调度VLIW处理器向编译器/调度器提供了调度功能单元的操作的更大自由度。9、根据权利要求8所述的处理器,其中,虚拟化后的功能单元,而不是功能单元的物理复本,提供了某些功能单元的多个虚拟视图,使得所述虚拟视图与发起槽相关联并且物理功能单元得以共享,以及在关联的编译器/调度器中包括了与相应发起槽中功能单元操作的互斥发起有关的约束。全文摘要提供了一种在静态调度VLIW处理器中采用的虚拟功能单元设计。处理器调度器中出现的、该功能单元的“虚拟”视图超过了该功能单元的物理实例的数目。因此,针对太困难或成本太高以致无法进行物理复制的那些类型的功能单元,可以实现显著的处理器性能改进。同不具有虚拟视图的处理器和受限于该处理器的簇的子集的物理单元相比,通过向VLIW处理器的不同簇提供不同的虚拟视图,编译器/调度器可以为处理器产生更高效的代码。编译器/调度器确保了与具有多个虚拟视图的功能单元的操作的调度有关的约束得以满足。不分簇的处理器也受益于虚拟视图。通过在物理功能单元的多个发起槽中提供多个虚拟视图,编译器/调度器更自由地调度功能单元的操作。文档编号G06F9/38GK101553780SQ200780045552公开日2009年10月7日申请日期2007年12月11日优先权日2006年12月11日发明者让-威廉·范德韦尔特申请人:Nxp股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1