可扩展处理器中的自动任务分配的制作方法

文档序号:6407084阅读:366来源:国知局
专利名称:可扩展处理器中的自动任务分配的制作方法
技术领域
本发明涉及一种基于指令序列来处理信息的方法和设备,特别涉及一种在可扩展数字信号处理器中调度处理资源的方法。
数字信号处理器(DSP)被设计来用于执行具有硬实时约束的任务。因此强调的是计算能力。有几个因素决定着计算能力。最显著的因素可能就是时钟频率,当然它并不是唯一的因素。其它重要因素有操作的表达能力(也就是指令集)、执行一个操作所需的时钟周期数量、能够并行执行的操作数量、连续操作之间流水线的量、当执行分支时对于浪费的时钟周期的损失,等等。
在DSP处理器中,改善性能的基本概念就是开发指令级并行性。在本申请中,将涉及一种作为完整程序信息段的指令,它在一个时钟周期内提供给处理器内核。这样,单一指令可在同一时钟周期内并行地包含几个操作的执行。为在处理器中同时执行操作,可在硬件上采用三种结构措施。它们是重叠执行、功能单元流水线操作、以及多功能单元。重叠执行意味着处理器同时处理多个指令,也就是多个指令是有效的,每个指令都处于取出、解码和执行的不同阶段。
为开发指令级并行性,必须确定操作之间的相关性。考虑到这些相关性,必须在一些特定的时间在一些特定的功能单元上调度这些操作,并且必须分配可以存放结果的寄存器。开发指令级并行性是编程器、编译器或者运行时间硬件的任务。依据所采用的结构性尝试,重点集中在三种尝试其中的一个。
在常规的DSP中,依据当前的状态,利用从序列中的一个位置到另一位置的跳转能力顺序地执行指令。这种能力致使这样一种情况的出现,即给定的应用程序包括执行一次的指令以及执行超过一次的指令或其短序列。如果一个应用程序在给定的DSP上执行其的期间受到监视,那么就能产生一个配置文件,其中给予该应用程序的不同部分一个不同的重复索引ri。


图1示出了由水平线条的序列表示的指令序列示意图,每个线条都对应单一的指令。而且,包含在虚线框中的这些指令形成了指令的重复子序列。在每个重复子序列中示出的重复索引ri表示重复率,其中索引ri=0相应于最频繁执行的子序列,没有索引意味着指令只执行一次。这样,在图1所示的指令序列中,中间部分中示出的重复子序列是最频繁执行的子序列,上部的重复子序列是第二频繁执行的子序列,而下部的重复子序列是第三频繁执行的子序列。
然而,如果这种指令序列由DSP的单一处理器内核来执行,那么为取出同一子序列就要访问指令存储器多次,这就延迟了处理,降低了性能。
文献US 5,796,989中揭示了一种优化处理器所承担的指令执行的系统。特别是,对指令代码序列进行重新组织,以便用于仿真最频繁出现的指令的本机代码被分组在一起。结果,当用于频繁出现被效真指令的本机代码从存储器载入高速缓存中时,该高速缓存将包含用于随后的被仿真指令的本机代码的可能性就被最大化。这样,最频繁接收的指令就以一种容易可访问的方式被存储,降低了处理等待时间。
本发明的一个目的是提供一种基于指令序列来处理信息的方法和设备,通过该方法和设备,处理效率可获得进一步提高。
本发明的目的是通过权利要求1所要求的方法、权利要求12所要求的设备以及权利要求18所要求的编译器来实现的。
因此,由于识别了重复子序列的重复率,消耗高的重复序列的资源可推延到外部处理单元上,而具有低重复率的剩余序列由内核处理器以常规的方式来执行。从而,可通过增加外部处理资源来改善性能。并且,由于外部处理单元的种类和数量可以单独进行选择的事实,因此能够提供一种灵活的处理系统。由于最多重复的子序列被外包(outsource)到外部处理单元,因此减少了对指令存储器的访问,进而降低了对系统处理能力的要求。
如果提供信令功能,通过这种功能,外部处理单元可以将它们的可用性发信号给处理器内核,从而可以建立即插即用操作模式,这样就可以在任务分配中选择性地增加并自动考虑外部处理单元。由于在不同的外部资源和自可扩展处理器本身(内核处理器)之间的执行重叠,因此性能得到了提高,而相应于这种内核处理器性能的最低性能也将总得到保证。由于这种设置的灵活性,当前和可预见的新一代DSP之间的兼容性就能得到保证。
本发明的进一步有利的发展将在从属权利要求中定义。
优选地,包括索引信息的指令可以产生并添加到指令序列中。索引信息可以包括,相比于其它所检测的重复子序列的重复率,与重复子序列的重复率的等级成比例的整数集。特别是,可以通过将该整数与可用资源的数量进行比较来确定分配。然后,将整数小于可用处理资源的数量的所有重复子序列分配给一个选定的处理资源。
而且,索引信息可包括表示在重复序列中指令数量的信息。
如果重复子序列在一预定时间段内不再被检测,那么产生用于删除该重复子序列的指令,并且将分配有被删除的重复子序列的处理单元进行复位。
另外,可以产生指令用于指定由重复子序列使用的处理寄存器,其中该指令用于锁定所指定的处理寄存器。
当包括索引信息的指令表示相应的重复子序列已经分配给处理资源时,处理资源就被激活。在这种情况下,激活步骤可包括根据相应的重复子序列对其它处理资源编程的步骤,或者将相应的重复子序列上载到处理资源的存储器的步骤。
外部处理单元的存在可以被发信号给中央处理单元,可用的外部处理单元的数量可以基于该信号进行计数。
在处理设备中,可以提供连接装置,用于连接可以分配有重复子序列的至少一个外部处理单元。而且,提供存储器表,用于存储表示至少一个外部处理单元和相应的重复子序列之间的分配的分配信息。外部处理单元可包括处理内核和/或可配置的逻辑块。
另外,可以提供映射装置,基于该索引信息而将重复子序列映射到至少一个外部处理单元中的一个可用的单元上。
可以设置编译器以向重复子序列增加一个指定索引信息的指令。可以增加该附加指令以便领先于该重复子序列。
而且,该编译器可被设置为增加表示不再使用该重复子序列的指令,和/或用来指定由该重复子序列使用的处理寄存器的指令。而且,编译器可被设置为基于重复子序列的重复率来确定它们的等级。
下面,将基于参考附图的优选实施例更详细地描述本发明
图1示出了包括重复子序列的指令序列的示意图;图2示出了可以实现本发明的自可扩展数字信号处理器的简化图;图3示出了根据本发明优选实施例,表示重复子序列映射到可用的外部处理单元的简化框图;图4示出了根据优选实施例的处理设备的示意图;图5示出了根据优选实施例的处理方法的示意图。
下面将基于图2所示的自可扩展DSP(Se-DSP)来描述优选实施例。
根据图2,Se-DSP 10包括多个端口,处理资源20至23可以与这些端口相连。在该环境中,资源是可配置的内核或者是具有嵌入存储器的小处理内核。由于这种配置,根据直至资源的最大限度的时间上可用的处理资源20至23,允许Se-DSP 10以其最佳形式运行应用程序。在图2的实例中,可连接或附加多达4个的附加处理资源或单元,它们是可配置的逻辑块,即现场可编程门阵列(FPGA)或具有其自己的存储器的处理器内核。
图3示出了将图1的重复序列映射到Se-DSP 10中的可用处理资源或单元(Co-unit)的映射功能的简化图。根据该优选实施例,提供一种机制,通过该机制Se-DSP 10可以在可用的附加处理单元20至23上映射具有更高重复率的重复或重复性序列。因此,这种重复子序列一旦在Se-DSP 10中被检测到,相应的处理就移交或分配给处理单元20至23中的预定的一个,以便Se-DSP 10可以基于跟随所分配的重复子序列的后续指令来继续处理。从而,重复子序列可被同时处理,而Se-DSP 10继续处理剩余的较少重复的指令或子序列。
图4示出了Se-DSP 10中处理的示意性框图,其中原始程序代码在编译器30中编译。编译器被设置为识别重复的指令序列,也就是循环或函数调用,并基于这些序列或子序列的重复率而在编译时确定它们的等级(ranking)。重复子序列的信令可基于至少一个附加的指令,借助于此能够将与该重复子序列有关的信息在执行时通知给Se-DSP10。
此外,还提供一种机制,通过该机制,Se-DSP 10可以确定附加了多少额外的外部处理单元20至2n。并且,这样提供另一种机制,通过该机制,Se-DSP 10可在可用的处理单元20至2n上映射具有较高重复率的检测到的重复子序列。
为此,Se-DSP 10提供有附加指令,例如称为rep_index以及内部存储器或表40。该附加指令由编译器30使用以便用于界定重复的指令序列。其提供了序列中的指令数量和重复索引ri。根据该优选实施例,重复索引ri是大于等于零的数,零表示具有最高重复率的子序列的索引。因此,如果附加了数量nr的额外资源,那么具有小于nr的重复索引ri的所有子序列都能被映射到例如处理单元20至2n的额外资源上。
内部存储器或表40用于存储与该重复子序列有关的信息。该表中每个可能的处理单元都有一个条目。每当一个重复子序列被映射到一个附加处理单元上时,就设置相应的条目,也就是各个处理单元的端口名被写入表40中。表40由重复索引ri进行索引。
因此,根据可用的处理资源,允许通用DSP以其最佳形式运行应用程序。通用DSP体系结构通过能够连接处理资源的多个端口来扩展,其中处理资源对应于具有嵌入存储器的可配置内核或小处理内核,或者是可编程逻辑单元。而且,需要内部表40和至少一个附加指令来指定执行超过一次的指令序列及它的重复索引。从软件角度来看,编译器被设置为产生重复索引ri。重复索引ri的产生可以基于如同在现代VLIW(超长指令字)编译器中执行的相似统计生成。
这样,根据该优选实施例,具有较高重复率的重复指令序列被延迟到可用的连接处理资源,而剩余的指令代码由DSP以常规方式来执行。
根据该优选实施例,可增加两个附加的指令。第一废弃指令可以用来通知Se-DSP 10删除由该指令本身所指定的具有重复索引ri的重复子序列。在这种情况下,在其上映射该重复序列的处理单元被复位,这意味着将其置为其初始状态或复位状态。然后,具有较低重复率的重复子序列,即较高重复索引ri可被映射到该复位处理单元上。
此外,第二屏蔽指令可用于指定Se-DSP 10的内部寄存器,其将由各个重复子序列使用。该屏蔽指令跟随重复索引指令。通过该屏蔽指令,所指定的寄存器被有效地锁定,即不允许使用它们直到相应的重复子序列完成为止。这样,直到应用程序尝试访问其中一个所指定寄存器的时刻,重复子序列的执行才停止Se-DSP 10。这样,寄存器锁定具有如下优点,即重复子序列的执行不会停止或锁定剩余的处理资源。因此,就可以同时执行重复的和非重复的指令。一旦重复子序列被映射到并存储在Se-DSP 10的内部表40中,它就不会被Se-DSP 10再次取出。事实上,当检测到对于已存储在或寄存在内部表40中的被映射的子序列的重复索引指令时,就开始分支操作,并且激活被映射的处理单元。因此,就减少了对指令存储器(未在图4中示出)的访问。
可用的附加处理单元20至2n的数量由Se-DSP 10来决定,例如就在复位操作之后进行。例如,每个外部处理单元20至2n可将其存在的状态借助简单的信号,例如1位信号来发信令,Se-DSP 10可以简单地对从附加处理单元20至2n中接收的信号进行计数。如果没有附加的单元存在,Se-DSP 10就表现为一个常规DSP。
重复的子序列映射到处理单元20至2n取决于各个处理单元的性质和种类。如果是FPGA,就可通过相应地对FPGA进行编程来执行映射。如果是具有存储器的处理内核,就可通过将重复的子序列上载到处理内核的存储器来执行映射。处理单元20至2n以任何常规方式访问Se-DSP 10的寄存器文件。它们可以设置在和Se-DSP 10相同的集成电路上,或者设置在外部电路上。
图4示出了表示Se-DSP 10的处理操作的示意流程图。
在第一步骤S100中,Se-DSP 10的内核检测任意的外部资源,例如附加处理单元20至2n是否可用。这可以通过对从外部处理资源接收的相应通知信号进行计数来完成。如果资源是可用的,就在步骤S101中将外部处理单元20至2n的数量nr存储在内部表40中,并且在步骤S102中将外部处理单元20至2n置为其复位状态。然后,开始应用程序,并在步骤S103中从指令存储器中读出第一指令。如果在步骤S100中没有检测到外部处理资源,Se-DSP 10就表现为如同一个没有任何用于重复子序列的匹配功能的常规DSP。
在步骤S104中,验证所读指令是否表示已存储在内部表40中的所分配的序列。如果是,就在步骤S108中激活相应的处理资源,例如处理单元,并且流程返回到步骤S103以读取后续指令。如果在步骤S104中所读指令不表示所分配的序列,则在步骤S105中验证该所读指令是否表示重复性或重复子序列。如果是,就在步骤S106中验证由相应的重复索引指令表示的重复索引ri是否小于可用处理资源21至2n的数量nr。如果是,就在步骤S107中将各个重复子序列分配给可用处理资源,并在步骤S108中激活所选择的处理资源。并且,向内部表40中添加相应的条目以详细说明所选择的处理资源。步骤S107中的分配可以通过将该重复子序列存储在处理资源的内部存储器中、或者使用该重复子序列配置该处理资源来实现。如果所读指令不表示任何重复子序列,或者重复索引ri不小于可用的处理资源的数量,则流程前进到步骤S109,在这里Se-DSP 10以常规方式执行所读指令。然后流程返回到步骤S103,以便读后续指令。Se-DSP 10的内核开始执行跟随重复的或被分配的子序列的后续指令,直到该子序列的结果为后续指令所需要。
这样,子序列或任务可以灵活地分配给外部处理单元,例如可用于Se-DSP 10的协处理器。由于外部处理单元使用其嵌入存储器或被相应地编程,从而减少对指令存储器的存储器访问。这也节省了功率。
可以理解,本发明不限制于上述描述的优选实施例,而是可以用在任何可扩展数据处理结构中,其中基于指令序列来处理信息。所以该优选实施例可以在所附权利要求的范围内进行变化。
权利要求
1.一种基于指令序列来处理信息的方法,所述方法包括如下步骤a)在所述指令序列中检测重复的子序列;b)提供表示所述重复子序列的重复频率的索引信息;以及c)基于所述索引信息,确定处理资源和所述重复子序列之间的分配。
2.根据权利要求1的方法,还包括以下步骤,产生包括所述索引信息的指令,以及将所述指令添加到所述指令序列中。
3.根据权利要求1或2的方法,其中所述索引信息包括相比于其它所检测的重复子序列的重复率,与所述重复子序列的所述重复率的等级成比例的整数集。
4.根据权利要求3的方法,其中通过将所述整数与可用的处理资源的数量相比较来确定所述分配。
5.根据权利要求4的方法,其中将所述整数小于所述可用处理资源数量的所有重复子序列分配给选择的处理资源。
6.根据前述任意一个权利要求的方法,其中所述索引信息包括表示所述重复子序列中的指令数量的信息。
7.根据前述任意一个权利要求的方法,还包括以下步骤,如果所述重复子序列在预定时间段内不再被检测,就产生用于删除所述重复子序列的指令,并对分配有所述被删除的重复子序列的处理单元进行复位。
8.根据前述任意一个权利要求的方法,还包括以下步骤,产生用于指定由所述重复子序列使用的处理寄存器的指令,以及使用所述指令来锁定所述指定的处理寄存器。
9.根据权利要求2的方法,还包括以下步骤,当包括所述索引信息的所述指令表示出相应的重复子序列已被分配给所述处理资源时,激活一个处理资源。
10.根据权利要求9的方法,其中所述的激活步骤包括以下步骤,根据所述相应的重复子序列编程所述处理资源,或者将所述相应的重复子序列上载到所述处理资源的存储器。
11.根据前述任意一个权利要求的方法,还包括以下步骤,将外部处理单元的存在状态发信令给中央处理单元,以及基于所述信令对可用外部处理单元的数量进行计数。
12.一种基于指令序列来处理信息的设备,所述设备包括a)检测装置,用于在所述指令序列中检测重复子序列,并用于提供表示所述重复子序列的重复频率的索引信息;以及b)资源控制装置,用于基于所述索引信息将所述重复子序列分配给处理资源。
13.根据权利要求12的设备,还包括连接装置,用于连接可以分配有所述重复子序列的至少一个外部处理单元。
14.根据权利要求13的设备,还包括存储器表,用于存储表示所述至少一个外部处理单元和相应的重复子序列之间的分配的分配信息。
15.根据权利要求13或14的设备,其中所述设备是数字信号处理器,所述至少一个外部处理单元是处理器内核和/或可配置的逻辑块。
16.根据权利要求13至15中任意一个的设备,还包括用于确定连接到所述连接装置上的所述至少一个外部处理单元的数量的装置。
17.根据权利要求13至16中任意一个的设备,还包括映射装置,用于基于所述索引信息,将所述重复子序列映射到所述至少一个外部处理单元中可用的一个上。
18.一种提供输出指令序列以用于处理信息的编译器,所述编译器被设置为在所述输出指令序列中检测重复的子序列,并用来提供表示所述重复子序列的重复频率的索引信息。
19.根据权利要求18的编译器,其中所述编译器被设置为向所述重复子序列中添加指定所述索引信息的指令。
20.根据权利要求19的编译器,其中添加所述附加指令以便领先于所述重复子序列。
21.根据权利要求18至20中任意一个的编译器,其中所述编译器被设置为向所述输出序列中添加用于表示所述重复子序列不再被使用的指令。
22.根据权利要求18至21中任意一个的编译器,其中所述编译器被设置为向所述输出序列中添加一个指令,用于分配至少一个处理寄存器装置直到所述重复子序列结束为止。
23.根据权利要求18至21中任意一个的编译器,其中所述编译器被设置为基于它们的重复率来确定重复子序列的等级。
全文摘要
本发明涉及一种基于指令序列处理信息的处理方法和设备,其中在该指令序列中检测重复的子序列,并基于表示该重复子序列的重复频率的索引信息,确定处理资源和所述重复子序列之间的分配。这样,就提供了具有自动任务分配的可扩展的信号处理器组合,借此,由于重复的子序列可以分配给外部处理单元,可以降低存储器访问的数量,对其进行相应地进行编程或者其使用它们的嵌入存储器。这样也节省了功率。
文档编号G06F9/45GK1650258SQ03809181
公开日2005年8月3日 申请日期2003年4月4日 优先权日2002年4月25日
发明者F·佩斯索拉诺 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1