控制处理系统中的处理器之间的数据流的利记博彩app

文档序号:10654527阅读:513来源:国知局
控制处理系统中的处理器之间的数据流的利记博彩app
【专利摘要】本申请的各实施例涉及控制处理系统中的处理器之间的数据流。一种处理系统包括用于执行程序的程序处理器和用于执行特定类型的操作(例如,矢量处理操作)的专用处理器。程序处理器使用对接模块和一组两个或者更多寄存器组以将特定类型的操作卸载到专用处理器以用于在其上执行。在专用处理器访问用于执行当前操作的一个寄存器组之时,对接模块可以并发地向寄存器组中的不同寄存器组中加载用于后续操作的数据。对多个寄存器组的使用允许专用处理器花费它的时间的更大比例执行操作。
【专利说明】
控制处理系统中的处理器之间的数据流
技术领域
[0001]本申请的各实施例涉及控制处理系统中的处理器之间的数据流。
【背景技术】
[0002]处理系统总体上包括一个或者多个处理器(或者“处理单元”),比如中央处理单元(CPU)、数字信号处理器(DSP)和/或图形处理单元(GPU),仅给出一些示例。处理器通常被配置为执行计算机系统的操作,比如在处理系统内移动数据和/或操控数据。例如,程序的操作可以涉及到对数据项执行算术,比如乘法或者加法。一些处理器可以比其它处理器更适合特定任务。例如,CPU可以被设计为可以相当高效地处理多种操作的通用处理器,而DSP可以被具体地设计成它的架构对于数字信号处理的操作需要而被优化,而GPU可以被具体地设计用于处理图形数据。
[0003]存在许多不同计算机编码语言,计算机程序员可以按照它们编写计算机程序,但是语言中的一些语言比其它语言更流行,例如C代码广泛地为计算机程序员所知。可以有用的是处理系统包括被设计为处理用常见计算机语言(比如C)编写的程序的代码,从而使得易于程序员编写可以由处理系统处理的代码。然而,在一些情形中,可以有益的是处理系统在专用处理器上执行特定类型的操作,这些操作适合用于执行那些特定类型的操作。例如,在DSP上而不是在CPU上执行用于数字信号处理的操作可能更高效(例如,在时间、功率和/或对处理资源的使用方面)。因此,可以在处理系统中包括两个或者更多处理器,由此操作可以由最适合执行操作的处理器执行。例如,处理系统可以包括可以在其上执行程序的主处理器(或者“程序处理器”)(例如,通用CPU)和适合执行特定类型的操作的专用处理器(例如,DSP或者GPU)。在程序处理器开始在程序内的特定类型的操作(例如,矢量处理操作)时,程序处理器可以向专用处理器传递(即,卸载)操作以用于在其上执行。专用处理器可以具有包括多个寄存器的寄存器组,数据可以被加载到这些寄存器中以用于由专用处理器处理操作。专用处理器然后可以使用在它的寄存器组的寄存器中存储的数据来执行操作。操作的结果可以在专用处理器已经完成操作的执行时被存储在寄存器组的寄存器中。程序处理器然后可以从寄存器读取出数据并且进行对程序的执行。备选地,存储器(取代专用处理器的寄存器组)可以用于在专用处理器与程序处理器之间传达数据。例如,专用处理器可以从存储器取回数据并且可以对取回的数据执行操作。专用处理器可以在专用处理器已经完成操作的执行时在存储器中存储操作的结果,并且程序处理器然后可以从存储器读取出数据。
[0004]以这一方式,可以更高效地执行程序,因为专用处理器适于在执行特定类型的操作时比程序处理器更高效(例如,DSP通常在执行矢量处理操作时比CPU更高效)。因此,通过使用专用处理器,可以从主处理器(“程序处理器”)卸载执行程序的操作中的一些操作这样的作业。以这一方式,可以减少程序处理器的工作负荷。对处理系统可以执行程序的操作的效率的任何提高(例如,在速度、功率和/或对处理资源的使用方面)可能是有益的。

【发明内容】

[0005]提供这一
【发明内容】
以按照简化形式介绍以下在【具体实施方式】中进一步描述的概念的选集。这一
【发明内容】
并未旨在于标识要求保护的主题内容的关键特征或者实质特征,它也并未旨在于用来限制要求保护的主题内容的范围。
[0006]在以上【背景技术】一节中描述的处理系统中,目的是从程序处理器向专用处理器上卸载工作,其中焦点在于减少程序处理器的工作负荷。对照而言,发明人已经认识到一些处理系统主要地用于执行特定类型的操作,其中专用处理器适合用于执行特定类型的操作。使用专用处理器以执行特定类型的操作可以是有益的(因为它被适配以便在执行特定类型的操作时比程序处理器更高效)。另外,根据这里描述的示例,可以使用对接模块来减少专用处理器上的工作负荷以使用一组两个或者更多个寄存器组来控制在程序处理器与专用处理器之间的数据流。对多个寄存器组的使用允许专用处理器花费它的时间的更大比例执行操作,因此可以更快执行操作序列(与在以上【背景技术】一节中描述的处理系统中的比较)。
[0007]具体而言,提供了一种处理系统,该处理系统包括:专用处理器,适合用于执行特定类型的操作;程序处理器,被配置为执行包括多个操作的程序,其中程序处理器被配置为使得程序的为特定类型的操作由专用处理器执行;一组两个或者更多个寄存器组,被配置为存储与特定类型的操作有关的数据;对接模块,被配置为通过以下各项使用该一组寄存器组来控制程序处理器与专用处理器之间的数据流:并发地:(i)向专用处理器提供对寄存器组中的存储用于当前操作的先前加载的数据的寄存器组的访问,由此允许专用处理器执行当前操作,以及(ii)访问寄存器组中的不同寄存器组以向寄存器组中的该不同寄存器组中加载用于后续操作的数据一用于设立用于由专用处理器后续执行的后续操作;以及在专用处理器完成当前操作的执行之后,控制该一组寄存器组以向专用处理器提供对来自该一组寄存器组的寄存器组之一的用于后续操作的数据的访问,由此允许专用处理器执行后续操作。
[0008]提供了一种处理程序的操作的方法,该方法包括:在程序处理器处执行程序,其中程序处理器使得程序的为特定类型的操作由专用处理器执行,其中专用处理器适合用于执行特定类型的操作;通过以下各项使用一组寄存器组来控制程序处理器与专用处理器之间的数据流:并发地:(i)向专用处理器提供对寄存器组中的存储用于当前操作的先前加载的数据的寄存器组的访问,由此允许专用处理器执行当前操作,以及(ii)访问寄存器组中的不同寄存器组以向寄存器组中的该不同寄存器组中加载用于后续操作的数据以用于设立用于由专用处理器后续执行的后续操作;以及在专用处理器完成当前操作的执行之后,控制该一组寄存器组以向专用处理器提供对来自该一组寄存器组的寄存器组之一的用于后续操作的数据的访问,由此允许专用处理器执行后续操作。
[0009 ]可以在集成电路上在硬件中体现这里描述的处理系统中的任何处理系统。也可以提供用于生成根据这里描述的示例中的任何示例的处理系统的计算机可读代码。可以在计算机可读存储介质上对计算机可读代码进行编码。
[0010]如本领域技术人员将清楚的那样,以上特征可以如适当的那样被组合,并且可以与这里描述的示例的方面中的任何方面组合。
【附图说明】
[0011 ]现在将参照附图具体描述示例,在附图中:
[0012]图1是第一示例中的处理系统的示意图;
[0013]图2示出了流程图,该流程图图示了处理系统中的程序的处理操作的方法;
[0014]图3示出了用于处理系统的部分的定时图;
[0015]图4是第二示例中的处理系统的示意图;
[0016]图5是第二不例中的处理系统的不意图;
[0017]图6是包括处理系统的计算机系统的示意图;以及
[0018]图7示出了用于生成体现处理系统的集成电路的集成电路制造系统。
[0019]附图图示了各种示例。本领域技术人员将认识到,附图中的所示单元边界(例如,框、框组或者其它形状)代表边界的一个示例。可以在一些示例中,一个单元可以被设计为多个单元或者多个单元可以被设计为一个单元。共同标号在适当时贯穿各图用来指示相似特征。
【具体实施方式】
[0020]现在将仅通过示例描述实施例。
[0021]在这里描述的示例中,处理系统包括被配置为执行包括多个操作的程序的程序处理器,例如,CPU。程序处理器可以适于处理按照被普遍地理解的编程语言(比如C)编写的操作。处理系统也包括适于执行特定类型的操作(例如,数据并行操作,比如矢量操作)的专用处理器,比如DSP。专用处理器可以被配置为执行按照可能不是被普遍地理解的既定语言编写的操作。由于专用处理器可以比程序处理器更高效地用于执行特定类型的操作,所以编写用于这些操作的代码以用于由专用处理器执行,例如,按照用于专用处理器的既定语言。然而,专用处理器和需要在它上执行的操作的性质可能使得难以编写用于编译(例如,按照C编写)的高级指令的编译器,该编译器将按照既定语言生成代码。因此,取代按照既定语言编写整个程序(包括专用操作和用于组织对操作序列的执行的程序流),从专用处理器向程序处理器卸载程序流。在程序流中经常有许多复杂性,并且通过在程序处理器上实施这一程序流,可以按照与专用处理器的既定语言比较更易于编写、修改、维护和/或以别的方式使用的高级语言(例如,C)编写程序流。因此,即使对于主要地包括将由专有处理器执行的一类操作的程序,仍然可以有益的是编写程序的程序流用于在程序处理器上执行,因为可以比按照既定语言编写的代码更容易地理解以及更容易地编写和修改这样的代码以用于在专用处理器上执行。
[0022]在这里描述的示例中,对接模块用来以使专用处理器能够高效地执行操作的方式控制程序处理器与专用处理器之间的数据流。具体而言,一组两个或者更多个寄存器组用来存储与由专有处理器执行的操作有关的数据(例如,控制数据)。对接模块通过寄存器组管理数据流以允许专用处理器使用来自一个寄存器组的数据来执行当前操作,而用于下一操作的数据被加载到不同寄存器组中。在专用处理器完成当前操作的执行时,对接模块可以控制寄存器组,从而使得向专用处理器提供对数据的访问以用于来自寄存器组之一的后续操作,从而使得专用处理器可以执行后续操作。可以对于将由专用处理器执行的操作序列迭代这一循环,从而使得下一操作可以被排队用于在专用处理器上执行,而当前操作由专用处理器执行。以这一方式,专用处理器与如下系统比较可以花费更大比例的时间执行操作,这是它被设计用于的目的,在该系统中,一个操作在用于下一操作的数据被加载到寄存器中从而使得专用处理器可以执行下一操作之前完全由专用处理器执行。在这里描述的示例中,可以有用的是尝试最大化专用处理器执行操作而花费的时间比例,或者至少尝试与在【背景技术】一节中描述的系统比较增加专用处理器执行操作而花费的时间比例。
[0023]图1示出了第一示例中的处理系统100。处理系统100包括被配置为执行程序的程序处理器102、适于执行特定类型的操作的专用处理器104、对接模块106和寄存器组108的集合。在图1中所示的示例中,寄存器组108的集合包括第一寄存器组110(在图1中被标注为“A”)和第二寄存器组112(在图1中被标注为“B”)。寄存器组(I 10和112)中的每个寄存器组包括专用处理器104可以用来执行操作的寄存器。也就是说,寄存器组110和112被配置为存储与专用处理器104适于执行的特定类型的操作有关的数据(例如,控制数据)。处理系统100连接到可以例如是随机存取存储器(RAM)的存储器114。具体而言,程序处理器102和专用处理器104连接到存储器114并且可以从和/或向存储器114读取和/或写入数据。如以上描述的那样,程序处理器102是可以执行按照被普遍地理解的编程语言(比如C)编写的程序的通用处理器(例如,CPU);而专用处理器104在它适于很高效地执行特定类型的操作的意义上是专门化的处理器。例如,专用处理器104可以是适于处理数据并行操作(比如矢量操作)的DSP,或者专用处理器104可以是适于处理图形数据的GPU。
[0024]对接模块106耦合到程序处理器102。例如,对接模块106可以耦合到程序处理器102的协处理器端口。作为另一示例,对接模块106可以经由寄存器接口耦合到程序处理器102。然而,将对接模块106耦合到程序处理器102的协处理器端口保证对接模块106与程序处理器102之间的交互是高效的。对接模块106可以利用对于程序处理器102而言是本机的汇编器指令以提供与专用处理器104的接口。专用处理器104按照它的既定语言(例如,它的本机汇编语言)被编程但是仅用于实施希望的操作而不是整个程序,特别地不是程序流。因此在效果上按照专用处理器104的本机语言将希望的操作编写为函数以用于在其上执行,并且(例如,按照高级语言(比如C)编写的)程序在程序处理器102上运行以实施控制流。另夕卜,在为专用处理器104汇编指令时,生成允许经由高级语言(比如C)控制指令的接口。也就是说,编写的用于由专用处理器104执行的操作可以有效地是使希望的操作在专用处理器上被执行的C可调用函数。这保证对接和集成易于实施并且在编写程序时维持程序员的意图的清楚。
[0025]与在以上【背景技术】一节中描述的处理系统比较,处理系统100包括用于由专用处理器104使用的额外“阴影”寄存器集合。也就是说,有两个寄存器110和112。每个寄存器组110和112可以存储用于由专用处理器104执行的操作的数据。由于有两个寄存器组,所以专用处理器104可以访问寄存器组之一以用于执行操作,而用于另一操作的数据被移入或者移出另一寄存器组。在图1中所示的示例中,寄存器组中的每个寄存器组被配置为在任何给定的时间耦合到专用处理器104或者对接模块106。对接模块106控制对寄存器组110和112的耦合(耦合到专用处理器104或者对接模块106),从而使得在专用处理器104耦合到寄存器组中的第一寄存器组(例如,110)时,对接模块106耦合到寄存器组中的第二寄存器组(例如,112),并且反之亦然。
[0026]在寄存器组中存储(并且贯穿本申请引用)的“与操作有关的数据”可以包括或者可以不包括所有与操作有关的数据。例如,在寄存器组中存储的与操作有关的数据可以包括用于操作的控制数据(例如,仅控制数据),并且专用处理器104可以根据控制数据对在存储器114中驻留的数据操作。也就是说,专用处理器104可以从存储器114取回数据、根据经由对接模块106接收的控制数据对它操作并且向存储器114回写出结果数据。因此,可以是并非所有与操作有关的数据经过对接模块106这样的情况。
[0027]参照图2中所示的流程图和图3中所示的定时图,现在描述使用处理系统100来处理程序的操作的方法。
[0028]在步骤S202中,程序开始由程序处理器102执行。如以上描述的那样,程序处理器102被布置为执行按照高级语言(比如C)编写的代码。程序的特定类型的操作(例如,数字信号处理操作)将被卸载到专用处理器104以用于在其上执行(例如,其中专用处理器104是DSP)并且按照用于专用处理器104的既定语言被编写。例如,程序可以包括特定类型的操作序列,从而使得有将由专用处理器104执行的操作序列。这些操作由对接模块106发起,从而使得可以在专用处理器104上执行它们。
[0029]对接模块106有助于由专用处理器104执行操作。具体而言,在有将由专用处理器104执行的操作序列时,对接模块106向专用处理器104提供数据(经由寄存器组108),从而使得专用处理器104可以转而执行操作。如以上描述的那样,对接模块106可以连接到程序处理器102的协处理器端口,并且可以根据如下协议与程序处理器102通信,通信可以按照该协议出现在程序处理器102的协处理器端口上。这意味着程序处理器102与对接模块106交互的方式可以被编写用于程序的代码的程序员容易地理解而,无论专用处理器104被配置为用来操作的协议如何。另外,在编译时间自动生成对对接模块106进行操纵的代码,从而使得向程序员隐藏其中的复杂性并且从程序处理器102调用的C函数引起由专用处理器104执行希望的操作。也就是说,对接模块106使用自动生成的代码以加载对将由专用处理器104执行的操作的描述,并且然后使得专用处理器104执行操作。因此,向程序员隐藏程序处理器102与对接模块106之间的对接的细节并且通过自动生成管理这一对接的代码来简化该细节。
[0030]向程序员呈现的编程模型是作业队列的编程模型。处理作业可以被排队以在专用处理器104上运行,并且程序处理器102然后可以等待这些作业完成或者可以继续进行其它处理(该其它处理可以例如包括设立下一作业以在专用处理器104上运行),而作业由专用处理器104处理。一旦作业已经在专用处理器104上被完成,程序处理器102就可以再次使用自动生成的代码来读取该作业的结果以简化接口。对接模块106向C可调用函数取得参数并且使用自动生成的代码来生成其它参数,其中生成的参数描述将在专用处理器104上执行的作业。对接模块106通过向在寄存器组108之一内的寄存器中写入生成的参数来向专用处理器104传达它们。对接模块106也处理作业开始和完成,从而在相关时间向专用处理器104和向程序处理器102呈现正确寄存器。
[0031]在图1中所示的示例中,初始地,对接模块106耦合到第一寄存器组110并且专用处理器104耦合到第二寄存器组112,但是在其它示例中,这可以反过来。虽然在图1中未明确地图示,但是对接模块106可以例如通过转换图1中所示的开关来控制寄存器110和112耦合到对接模块106和专用处理器104。可以控制开关以一直在彼此相反的配置中。因此,在专用处理器104使用来自寄存器组A 110的数据时,寄存器组B 112经由对接模块106对程序处理器102可见,并且反之亦然。
[0032]变量“X”用来标识操作序列的不同操作。在步骤S204中,对接模块将X设置成零以便开始在专用处理器104上执行操作序列。如以下描述的那样,在该方法中使用多个标志(例如,执行完成标志、加载完成标志和最后操作标志)。在步骤S204中,清除(S卩,不设置(unset))这些标志以保证该方法始于在正确状态中的标志。图3示出了定时图,该定时图图示了处理系统100的部分在三个操作的序列被传递到专用处理器104并且在其上被执行时的活动和状态。
[0033]该方法然后向并行(例如,并发地)被执行的步骤S206和S212二者传递。在步骤S206中,对接模块106确定用于操作X的数据是否已经被加载到耦合到专用处理器104的寄存器组中。在第一迭代中,商没有数据被加载到寄存器组110或者112中以用于将由专用处理器104执行的操作,因此该方法向其中设置‘执行完成’标志的步骤S208传递。这一标志指示专用处理器104当前未执行操作。该方法从步骤S208向步骤S211传递,在步骤S211中,对接模块106确定“最后操作”标志是否被设置。初始地,“最后操作”标志未被设置,并且它仅在执行序列的最后操作时被设置,如以下更具体描述的那样。在“上个操作”标志未被设置时,该方法从步骤S211向以下更具体描述的步骤S220传递。
[0034]如果已经为操作X加载了数据,则该方法从步骤S206向以下更具体描述的步骤S210传递。
[0035]在步骤S212中,对接模块106确定是否有将从耦合到对接模块106的寄存器组读取的、用于操作x-1的结果数据。在第一迭代中,尚没有向寄存器110或者112中加载的结果数据,因为序列的操作商没有由专用处理器104执行。该方法因此向步骤S216传递。
[0036]在步骤S216中,对接模块106确定是否有如下操作x+1,用于该操作的数据准备好被加载到寄存器110或者112之一中。在第一迭代中,有如下操作I,用于该操作的数据可以被加载到寄存器组110或者112之一中。因此,该方法向步骤S218传递,在该步骤中,对接模块106将操作x+1的数据加载到当前耦合到对接模块106的寄存器组(110或者112)中。在图3中所示的示例中,对接模块106在时间to耦合到寄存器组A 110,并且对接模块106将用于操作I的数据加载到寄存器组A 110中。将用于操作I的数据加载到寄存器组A 110中设立用于由专用处理器104后续执行的操作I。对接模块106在时间^完成将用于操作I的数据加载到寄存器组A 110的寄存器中。‘加载完成’标志被设置成指示对数据的加载完成。加载完成标志也可以被称为‘作业队列满’标志,因为它指示有作业等待由专用处理器104执行。
[0037]在步骤S220中,在执行完成标志和加载完成标志二者被设置时(如同它们将分别在步骤S208和S218之后的时间t那样),递增变量x(例如,在第一迭代中从O递增至1),并且两个标志(执行完成标志和加载完成标志)被重置,即‘不设置’。
[0038]标志中的每个标志可以例如由一位代表。然后在步骤S222中,对接模块106转换寄存器组110和112,从而使得寄存器组110和112到对接模块106和专用处理器104的耦合被切换。这一转换可以被视为反转图1中所示的将寄存器组110和112耦合到对接模块106或者专用处理器104的两个开关。然而,注意图1中为了概念理解而示出开关,并且可以如本领域技术人员将清楚的那样在不同示例中按照多个不同方式(例如使用一个或者多个复用器而不是开关来实施步骤S222的转换。
[0039]步骤S220和S222在时间t出现。因此,虽然加载完成标志(S卩,作业队列满标志)在步骤S218中在时间^被设置,但是这一标志然后在步骤S220中在时间^被立即地重置,因此图3未示出这一标志在时间t被设置。在步骤S222之后,在时间^,对接模块106耦合到寄存器组B 112,并且专用处理器104耦合到寄存器组A 110。该方法然后传递回到并行步骤S206和S212,其中在这一迭代时,X = I。
[0040]这时,在步骤S206中确定用于操作I的数据已经被加载到耦合到专用处理器104的寄存器组110中。因此,该方法从步骤S206向步骤S210(而不是步骤S208)传递。在步骤S210中,专用处理器104使用在寄存器组110的寄存器中存储的数据(例如,控制数据)来执行操作I。在其中寄存器中存储的数据仅为操作的控制数据的情况下,专用处理器104可以从存储器114取回另外的数据以便执行操作。操作可以例如是对矢量执行的矢量处理操作。专用处理器104良好地适合执行这一类型的操作。对操作I的执行从时间七直至时间t3。在专用处理器104已经完成操作I的执行时,执行完成标志被设置,并且在寄存器组110的寄存器中存储用于操作的结果数据。用于操作的结果数据可以是操作的结果(例如,来自矢量处理操作的所得矢量),或者结果数据可以是控制数据以例如指示操作已经被执行并且指示操作的结果(例如,来自矢量处理操作的所得矢量)在存储器114中的地址。该方法然后从步骤S210向步骤S211传递。由于最后操作标志尚未被设置,所以该方法从步骤S211向步骤S220传递。[0041 ] 与步骤S206和S210并行执行步骤S212至S218。也就是说,在专用处理器104执行操作X之时,对接模块106读取先前执行操作(如果有)的结果数据并且加载用于下一操作(如果有)的数据。在步骤S212中,在时间^,对接模块106确定没有将被读取的用于操作x-1的结果数据,因此该方法向步骤S216传递。在步骤S216中,在时间t,对接模块106确定有如下操作2,用于该操作的数据准备好被加载。因此该方法向步骤S218传递,在该步骤中,对接模块106向当前耦合到对接模块106的寄存器组112中加载操作2的数据(例如,控制数据)。向寄存器组B 112中加载用于操作2的数据设立用于由专用处理器104后续执行的操作2。对接模块106在时间^完成向寄存器组B 112的寄存器中加载用于操作2的数据。加载完成标志(即,作业队列满标志)被设置以指示对数据的加载在时间t2完成。该方法从步骤S218向步骤S220传递。
[0042]步骤S220在执行完成标志和加载完成标志二者被设置时在时间t3完成。这时,专用处理器104已经完成操作I的执行,而用于操作I的结果数据被存储在寄存器组A 110的寄存器中,并且用于操作2的数据已经被加载到寄存器组B 112的寄存器中。在步骤S220中,递增变量x(例如,在时间t3从I递增至2),并且两个标志(执行完成标志和加载完成标志)被重置,即,‘不设置’。然后在步骤S222中,对接模块106转换寄存器组110和112,从而使得寄存器组110和112到对接模块106和专用处理器104的耦合被切换。因此,在时间t3之后,对接模块106耦合到寄存器组A 110,并且专用处理器104耦合到寄存器组B 112。
[0043]该方法然后传递回到并行步骤S206和S212,其中在这一迭代时,x = 2。
[0044]这时,在步骤S206中确定用于操作2的数据已经被加载到现在耦合到专用处理器104的寄存器组B 112中。因此,该方法从步骤S206向步骤S210传递。在步骤S210中,专用处理器104使用在寄存器组112的寄存器中存储的数据来执行操作2。操作可以例如是对矢量执行的矢量处理操作。对操作2的执行是从时间t3直至时间t5。在专用处理器104已经完成操作2的执行时,执行完成标志被设置,并且在寄存器组112的寄存器中存储用于操作的结果数据。该方法然后从步骤S210向步骤S211传递。因为最后操作标志尚未被设置,所以该方法从步骤S211向步骤S220传递。
[0045]与步骤S206和S210并行执行步骤S212至S218。因此,在专用处理器104执行操作2之时,对接模块106访问寄存器组A 110以读取用于操作I的结果数据并且加载用于下一操作(操作3)的数据。具体而言,在步骤S212中,在时间t3,对接模块106确定有将被读取的用于操作I的结果数据,因此该方法向步骤S214传递。在步骤S214中,对接模块106从寄存器组A 110的寄存器读取用于操作I的结果数据,并且向程序处理器102传递结果数据。用于操作I的结果数据在时间t4完成从寄存器组A 110被读取。
[0046]该方法然后向步骤S216传递。在步骤S216中,在时间t4,对接模块106确定有如下操作3,用于该操作的数据准备好被加载。因此,该方法向步骤S218传递,在该步骤中,对接模块106向当前耦合到对接模块106的寄存器组A 110中加载操作3的数据。向寄存器组Al 1中加载用于操作3的数据设立用于由专用处理器104后续执行的操作3。对接模块106在时间U(该时间在时间t5之后,专用处理器104在该时间〖5完成操作2的执行)完成向寄存器组A110的寄存器中加载用于操作3的数据。加载完成标志(S卩,作业队列满标志)被设置以指示对数据的加载在时间t6完成。该方法从步骤S218向步骤S220传递。
[0047]步骤S220在执行完成标志和加载完成标志二者被设置时在时间U完成。这时,专用处理器104已经完成操作2的执行,而用于操作2的结果数据被存储在寄存器组B 112的寄存器中,并且用于操作3的数据已经被加载到寄存器组A 110的寄存器中。在步骤S220中,递增变量x(例如,从2递增至3),并且两个标志(执行完成标志和加载完成标志)被重置、S卩‘不设置’。然后在步骤S222中,对接模块106转换寄存器组110和112,从而使得寄存器组110和112到对接模块106和专用处理器104的耦合被切换。因此,在时间t6之后,对接模块106耦合到寄存器组B 112,并且专用处理器104耦合到寄存器组A 110。
[0048]步骤S220和S222在时间U出现。因此,虽然加载完成标志(即作业队列满标志)在步骤S218中在时间t6被设置,但是这一标志然后在步骤S220中在时间t6被立即地重置,因此图3未示出这一标志在时间t6被设置。该方法然后传递回到并行步骤S206和S212,其中在这一迭代时,X = 3。
[0049]与步骤S212至S223并行执行步骤S206至S211。这时,在步骤S212中,在时间t6,对接模块106确定有将被读取的用于操作2的结果数据,因此该方法向步骤S214传递。在步骤S214中,对接模块106从寄存器组B 112的寄存器读取用于操作2的结果数据,并且向程序处理器102传递结果数据。用于操作2的结果数据在时间t7完成从寄存器组B 112被读取。
[0050]该方法然后向步骤S216传递。在步骤S216中,在时间t7,对接模块106确定没有更多如下操作,用于这些操作的数据准备好被加载。因此该方法从步骤S216向步骤S223传递,在该步骤S223中,“最后操作”标志被设置。该方法然后向以下描述的步骤S224传递。
[0051]在步骤S206中,确定用于操作3的数据已经被加载到现在耦合到专用处理器104的寄存器组A 110中。因此,该方法从步骤S206向步骤S210传递。在步骤S210中,专用处理器104使用在寄存器组110的寄存器中存储的数据来执行操作3。操作可以例如是对矢量执行的矢量处理操作。对操作3的执行是从时间t6直至时间t8。在专用处理器104已经完成操作3的执行时,执行完成标志被设置。该方法然后从步骤S210向步骤S211传递,在该步骤S211中确定“最后操作”标志已经被设置。因此该方法向步骤S224传递。
[0052]在步骤S224中,对接模块106等待直至执行完成标志被设置、S卩,直至在专用处理器104已经完成操作3的执行并且步骤S211已经被执行时的时间t8。这时(t8),对接模块106转换寄存器组,从而使得寄存器组110和112到对接模块106和专用处理器104的耦合的切换。因此,在时间t8之后,对接模块106耦合到寄存器组A 110,并且专用处理器104耦合到寄存器组B 112。
[0053]然后在步骤S226,在时间t8,对接模块106从寄存器组A 110的寄存器读取用于操作3的结果数据,并且向程序处理器102传递结果数据。用于操作3的结果数据在时间t9完成从寄存器组A 110被读取。然后在步骤S228中,该方法结束,因为序列的所有三个操作已经被传递到专用处理器104并且由专用处理器104执行,并且用于序列的所有三个操作的结果数据已经被读取和传递到程序处理器102。程序处理器102可以继续执行程序,并且如果进一步操作是专用处理器104适合的类型,则那些操作可以被传递到专用处理器104以用于以与以上关于图2和图3描述的方式相似的方式在其上执行。
[0054]在参照图2描述的方法中,加载完成标志充当对数据(例如,控制数据)是否已经完成加载到寄存器组之一中的指示,并且对接模块106可以维持加载完成标志以确定用于后续操作的数据是否已经被加载。相似地,执行完成标志充当对当前操作是否已经完成由专用处理器104执行的指示,并且对接模块106可以维持执行完成标志以确定专用处理器104是否已经完成对当前操作的执行。对接模块108可以控制一组寄存器组108以响应于例如基于加载完成标志和执行完成标志的状态确定专用处理器已经完成当前操作的执行并且用于后续操作的数据已经被加载来向专用处理器提供对来自一组寄存器组108的寄存器组之一的用于后续操作的数据的访问。另外,对接模块108可以响应于例如基于加载完成标志和执行完成标志的状态确定专用处理器已经完成当前操作的执行并且用于后续操作的数据已经被加载来转换寄存器组(110和112)到专用处理器104和对接模块106的耦合。
[0055]图3图示了对对接模块106和多个寄存器组108的使用允许专用处理器104花费它的时间的大比例执行操作,而这是它适于高效执行的。在图3中所示的示例中,专用处理器104对三个操作的执行在时间^与丨8之间几乎连续,但是在时间丨5与丨6之间有小的执行间断,因为用来读取用于操作I的结果数据并且加载用于操作3的数据的时间多于用来执行操作2的时间。可以认识到,三个操作的处理在参照图1至图3描述的系统中比在如在以上【背景技术】一节中描述的如下系统中更快,在该系统中,每个操作在下一操作被处理之前被处理(即,加载、执行、然后读取出数据以用于操作)。例如,在图3中所示示例中用来处理三个操作的时间是t9-to。对照而言然,如果依次地处理三个操作(加载、执行和读取),则用来处理
二个操作的时间将是:(tl-to) + (t3_tl) + (t4_t3) + (t2_tl) + (t5_t3) + (t7_t6) + (t6_t4) + (t8_t6)+ (七9_七8),这等于(^9-1:()) + (^2-1:1) + (^5-七3) + (^7-七6)。因此,在图3中所示的示例中与依次处理操作比较而节省的时间量由(^2-1:1) + (^5-七3) + (^7-七6)给定。这些是并行处理出现的时间。也就是说,在时间。与〖2之间,专用处理器104使用寄存器组A 110来执行操作I,并且并发地,对接模块106向寄存器组B 112中加载用于操作2的数据;在时间^与七之间,专用处理器104使用寄存器组B 112来执行操作2,并且并发地,对接模块106从寄存器组A 110读取用于操作I的结果数据并且向寄存器组A 110中加载用于操作3的数据;以及在时间U与t7之间,专用处理器104使用寄存器组A 110来执行操作3,并且并发地,对接模块106从寄存器组B112读取用于操作2的结果数据。因此,对寄存器组108的不同寄存器组的并发访问去除用于设立寄存器和从寄存器读取用于将在专用处理器104上执行的操作的结果数据的时间延迟的至少一些时间延迟。
[0056]图3中所示的示例用于三个操作的序列,但是在其它示例中,可以使用参照图2描述的方法来操纵任何数目的操作的序列。
[0057]在以上描述的示例中,经由寄存器组108中的一个寄存器组从专用处理器104向程序处理器102传递用于执行的操作的结果数据。在备选示例中,由专用处理器104执行的操作的结果可以被写入到存储器114,由此如果程序处理器102需要访问结果数据,则它可以访问存储器114以便获得结果数据。可以是程序处理器102无需接收由专用处理器104执行的操作的结果这样的情况,在该情况下可以向存储器114写入结果而无任何进一步需要程序处理器102从存储器114取回结果。另外,对接模块106可以提供存储器保护以控制专用处理器104对存储器114的访问。例如,对接模块106可以指示存储器114中的哪些存储器地址是用于由专用处理器104执行的操作的结果被写入到的有效地址。以这一方式,如果专用处理器104尝试向存储器114的在有效地址范围以外的存储器地址写入数据,则可以生成错误信号并且可以防止向无效存储器地址写入数据。以这一方式,可以防止专用处理器104破坏存储器114的不允许访问的区域。
[0058]在存储器114中存储操作的结果允许第一操作的结果在下一操作的执行期间由专用处理器104取回。这对于如下重叠的操作可能是不可能的,在该重叠的操作中,结果数据经由一个寄存器组被传递回到程序处理器,而用于下一操作的数据存在于不同寄存器组中,因为在该情况下,操作X已经在用于操作x-1的结果已经被读取之前被排队用于操作。然而,如果操作x-1的结果被存储在存储器114中,则下一操作(操作X)可以通过从存储器114取回数据来使用操作x-1的结果作为输入。
[0059]在图1中,寄存器组108被示出为位于专用处理器104以外。在其它示例中,寄存器组108可以位于专用处理器104内。
[0060]相似地,在图1中,对接模块106被示出为位于程序处理器102以外。在其它示例中,这里描述的对接模块106的功能可以被实施为程序处理器102的部分,从而使得在概念上在程序处理器102内实施对接模块106。作为另一备选,可以在专用处理器104内实施对接模块106。
[0061]在图1中所示的处理系统100中有两个寄存器组110和112。图4示出了另一示例中的处理系统400。处理系统400包括如以上关于图1描述的程序处理器102和专用处理器104。另外,处理系统400以与以上关于图1描述的相同方式耦合到存储器114。处理系统400也包括对接模块406和一组寄存器组408,但是这些与图1中所示的处理系统100的对应单元略微地不同。具体而言,处理系统400包括三个寄存器组:耦合到对接模块406的第一寄存器组410(在图4中被标注为“A”)、耦合到专用处理器104的第二寄存器组412(在图4中被标注为“B”)和耦合到寄存器组B 412的第三寄存器组414(在图4中被标注为“C”)。寄存器组C 414也耦合到寄存器组A 410和对接模块406之一或者二者,其中用虚线示出这些耦合以表示在一些示例中,仅耦合之一存在。寄存器组(410、412和414)中的每个寄存器组包括专用处理器104可以用来执行操作的寄存器。也就是说,寄存器组410、412和414被配置为存储与专用处理器104适于执行的特定类型的操作有关的数据。
[0062]处理系统400以与以上描述的处理系统100相似的方式被操作,并且相似地允许使用在寄存器组之一中存储的数据在专用处理器104上并发执行当前操作,而用于后续操作的数据被加载到寄存器组中的不同寄存器组中。然而,取代在两个寄存器组(110和112)之间转换访问,在处理系统400中使用了三个寄存器组。在这一情况下,响应于确定专用处理器104已经完成当前操作的执行并且用于后续操作的数据已经被加载到寄存器组410中(例如,基于执行完成标志和加载完成标志),对接模块406可以控制该一组寄存器组408,从而使得(a)用于当前操作的结果数据从寄存器组B 412被传递到寄存器组C 414,并且(b)用于后续操作的数据从寄存器组A 410被传递到寄存器组B 412,由此允许专用处理器104通过访问来自寄存器组B 412的数据来执行后续操作。以这一方式,专用处理器104可以在当前操作已经完成执行之后快速地开始执行后续操作。
[0063]如果寄存器组C 414耦合到寄存器组A 410,则对接模块406可以控制寄存器组408,从而使得一旦已经执行了以上描述的步骤(a)和(b),就执行步骤(C),其中用于当前操作的结果数据从寄存器组C 414被传递到寄存器组A 410。这允许对接模块406从寄存器组A410读取用于当前操作的结果数据。在已经从寄存器组A 410读取了结果数据时,则对接模块406可以向寄存器组A 410中加载用于另一操作的数据,而专用处理器执行后续操作,并且该方法然后可以对于将由专用处理器104执行的操作序列而重复。
[0064]如果寄存器组C414耦合到对接模块106,则对接模块406可以控制寄存器组408,从而使得一旦已经执行了以上描述的步骤(a)和(b),就执行步骤(C),在该步骤中用于当前操作的结果数据由对接模块106从寄存器组C 414读取。在已经从寄存器组C 414读取了结果数据时,则对接模块406可以向寄存器组A 410中加载用于另一操作的数据,而专用处理器执行后续操作,该方法然后可以对于将由专用处理器104执行的操作序列而重复。
[0065]图5示出了在又一示例中的处理系统500。处理系统500包括如以上关于图1描述的程序处理器102和专用处理器104。另外,处理系统500以与以上关于图1描述的相同方式耦合到存储器114。处理系统500也包括对接模块506和一组寄存器组508,但是这些与图1中所示的处理系统100的对应单元和图4中所示的处理系统400的对应单元略微地不同。具体而言,处理系统500包括两个寄存器组:耦合到对接模块506的第一寄存器组510(在图5中被标注为“A”)和耦合到专用处理器104的第二寄存器组512(在图5中被标注为“B”)。处理系统500也包括耦合到寄存器组510和512 二者的高速缓存514(在图5中被标注为“C”)。高速缓存514被配置为把持比寄存器组510和512中的每个寄存器组更少的数据。寄存器组(510和512)中的每个寄存器组包括专用处理器104可以用来执行操作的寄存器。也就是说,寄存器组510和512被配置为存储与专用处理器104适于执行的特定类型的操作有关的数据。高速缓存被配置为一次存储用于操作的数据的一部分,并且用来在寄存器组510与512之间逐个部分地传送数据。
[0066]处理系统500以与以上描述的处理系统100和400相似的方式被操作,并且相似地允许使用在寄存器组之一中存储的数据在专用处理器104上并发执行当前操作,而用于后续操作的数据被加载到寄存器组中的不同寄存器组中。然而,响应于确定专用处理器104已经完成当前操作的执行并且用于后续操作的数据已经被加载到寄存器组510中(例如,基于执行完成标志和加载完成标志),对接模块506可以控制该一组寄存器组508,从而使得(a)用于当前操作的结果数据的一部分(例如,来自寄存器组512的寄存器的前1/3的数据)从寄存器组B 512被传递到高速缓存514,(b)用于后续操作的数据的对应部分(例如,来自寄存器组510的寄存器的前1/3的数据)从寄存器组A 510被传递到寄存器组B 512,以及(c)高速缓存514中的用于当前操作的结果数据的一部分从寄存器组514被传递到寄存器组A510。对于数据的不同部分(例如,对于寄存器组的寄存器的第二 1/3并且然后对于寄存器组的寄存器的第三1/3)迭代步骤(a)、(b)和(C),直至用于当前操作的所有结果数据已经经由高速缓存514传递到寄存器组A 510并且用于后续操作的所有数据已经传递到寄存器组B 512。这允许专用处理器104通过访问来自寄存器组B 512的数据来执行后续操作,并且它允许对接模块506从寄存器组A 510读取用于当前操作的结果数据并且向程序处理器102传递结果数据。对接模块506然后可以向寄存器组A 510中加载用于另一操作的数据,而专用处理器执行后续操作。在向或者从高速缓存514传递的数据的“部分”中的数据量可以对应于高速缓存可以对应于(例如,等于)在给定的时间存储的数据量。该方法可以对于将由专用处理器104执行的操作序列而重复。
[0067]以上描述的三个处理系统100、400和500都允许专用处理器104通过访问来自寄存器组的数据来执行当前操作,而用于后续操作的数据被加载到不同寄存器组中。然而,不同系统具有一些不同。处理系统100比处理系统400和500更面积高效,因为处理系统100仅包括两个寄存器组(110和112),而处理系统400包括三个寄存器组(410、412和414)并且处理系统500包括两个寄存器组和高速缓存(510、512和514)。每个寄存器组或者高速缓存使用某一数量的存储器(例如,每个寄存器组可以被布置为存储近似4000位),这由此占用处理系统中的面积。另外,处理系统100允许单周期切换(S卩,转换)寄存器组,因此在专用处理器104完成操作的执行与开始下一操作的执行之间有很小延迟。然而,转换寄存器组可能影响专用处理器104的定时,因为专用处理器104在不同时间耦合到不同寄存器组。
[0068]对照而言,处理系统400使用三个全寄存器组,因此它比系统100和500更少面积高效。在处理系统400中,在操作之间在寄存器组之间切换数据将需要一个或者两个周期,因此它仍然很快(比系统500更快),但是它可能没有在处理系统100中的转换块。然而,在处理系统400中,由于专用处理器104总是耦合到寄存器组412,所以没有如在处理系统100中那样由于切换对寄存器组的耦合而对专用处理器104的定时的不利影响。
[0069]处理系统500在面积方面在系统100与400之间某处。高速缓存514使用少于全寄存器组的面积(但是多于如在处理系统100中那样完全未实施高速缓存)。对系统500中的专用处理器104的定时无影响,因为专用处理器104总是耦合到寄存器组B 512。然而,在寄存器组512与514之间切换数据需要多个周期,因为一次传送来自寄存器组的数据的仅部分(因为高速缓存太小以至于不能一次保持来自寄存器组的所有数据)。因此,在专用处理器104完成操作的执行与开始下一操作的执行之间的时间在处理系统500中比在处理系统100和400中更长。高速缓存514的大小可以在不同示例中不同以变更面积比对切换时间的权衡。
[0070]在以上描述的示例中,处理系统使用二的队列深度以用于对将由专用处理器104执行的操作排队,即,在专用处理器104执行当前操作之时,用于仅一个后续操作的数据(例如,控制数据)被加载到寄存器组中。在其它示例中,处理系统可以使用多于二的队列深度,从而使得可以在相应寄存器组中保持用于多于一个后续操作的数据而专用处理器执行当前操作。这些处理系统将使用比在以上描述的示例中更多的寄存器组,因为寄存器组未用来一次存储用于多于一个操作的数据。对寄存器组的控制将需要与以上描述的控制略微地不同,但是本领域技术人员将能够适当地控制寄存器组,从而是的在适当时间向专用处理器104提供用于适当操作的数据以用于在其上执行,而可以从另一寄存器组读取用于先前执行的操作的结果数据和/或可以如适当的那样向另一寄存器组中加载用于后续操作的数据。例如,在其中寄存器组到对接模块或者专用处理器104的耦合被切换的系统(与处理系统100相似)中,可以按照顺序(例如,轮循顺序)切换寄存器组,从而使得转而为对接模块和专用处理器104例如以循环方式提供对寄存器组的访问。具有大于二的队列深度可以进一步减少专用处理器104花费在未执行操作上的时间。例如,参照图3,在专用处理器完成执行操作2(在时间t5)时,用于操作3的数据可以已经被加载到寄存器组中,因为加载操作可以在时间^更早开始(并且对接模块可以在该时间向又一寄存器组中加载用于操作4的数据),从而使得专用处理器104可以立即地开始执行操作3(在时间t5)而未等待操作4完成向又一寄存器组中加载。注意,在这一示例中,对寄存器组之一的访问被切换的时间可以对于对接模块和专用处理器不同。
[0071]可以在更宽计算机系统中实施以上描述的处理系统(100、400或者500)。例如,图6示出了包括处理系统602(可以是以上面描述的处理系统100、400或者500)、存储器604(可以是以上描述的处理器114)和接收器606的计算机系统600。接收器606被配置为从另一设备接收信号并且可以包括用于接收无线信号的天线。计算机系统也包括其它设备608,比如显示器610、扬声器612和相机614。计算机系统的部件可以经由通信总线616相互通信。在示例中,可以在设备(比如移动电话、平板计算机、膝上型计算机、电视或者任何其它适当设备)中实施计算机系统600。接收器606可以被配置为接收信号并且向处理系统602传递它们,其中处理系统602可以包括可以用来对由接收器606接收的信号高效地执行数字信号处理操作的DSP(作为专用处理器104)。
[0072]在其它实施例中,可以与控制这里描述的系统的方式不同地控制系统、例如经由使用标志,但是可以实现相似效果。
[0073]—般地,可以使用软件、固件、硬件(例如,固定逻辑电路装置)或者这些实现方式的任何组合来实施以上描述的功能、方法、技术或者部件中的任何功能、方法、技术或者部件。术语“模块”、“功能”、“部件”、“±夬”、“单元”和“逻辑”这里用来一般地代表软件、固件、硬件或者其任何组合。
[0074]在软件实现方式的情况下,模块、功能、部件、单元或者逻辑代表在处理器(例如,一个或者多个CPU)上被执行时执行指定的任务的程序代码。在一个示例中,描述的方法可以由配置有以机器可读形式存储于机器可读介质上的软件的计算机执行。计算机可读介质的一个这样的配置是信号承载介质,并且因此被配置为比如经由网络向设备传输指令(例如,作为载波)。计算机可读介质也可以被配置为非瞬态计算机可读存储介质,并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(R0M)、光盘、闪存、硬盘存储器和可以使用磁、光和其它技术以存储指令或者其它数据的并且可以由机器访问的其它存储器设备。
[0075]软件可以是以包括计算机程序代码的计算机程序这一形式(该计算机程序代码用于配置计算机以执行描述的方法的组成部分)或者以包括计算机程序代码装置的计算机程序这一形式(该计算机程序代码装置被适配为在程序在计算机上被运行时执行这里描述的方法中的任何方法的步骤,并且其中计算机程序可以被体现在计算机可读介质上)。程序代码可以被存储于一个或者多个计算机可读介质中。这里描述的技术的特征独立于平台,这意味着这些技术可以被实施在具有多种处理器的多种计算平台上。
[0076]本领域技术人员也将认识到,功能、技术或者方法的全部或者部分可以由专用电路、专用集成电路、可编程逻辑阵列、现场可编程门阵列等实现。例如,模块、功能、部件、单元或者逻辑(例如处理系统100、400和500的部件)可以包括以电路装置这一形式的硬件。这样的电路装置可以包括在制造工艺中可用的晶体管和/或其它硬件元件。举例而言,这样的晶体管和/或其它元件可以用来形成实施和/或包含存储器的电路装置或者结构,比如寄存器、触发器或者锁存器、逻辑运算器(比如布尔运算)、数学运算器(比如加法器、乘法器)或者移位器以及互连。可以作为定制电路或者标准单元库、宏或者在其它抽象化水平提供这样的元件。这样的元件可以在具体布置中被互连。模块、功能、部件、单元或者逻辑(例如处理系统100、400和500的部件)可以包括如下电路装置,该电路装置是可以被编程为执行一个或者多个功能的固定功能和电路装置;可以从固件或者软件更新或者控制机制提供这样的编程。在示例中,硬件逻辑具有实施固定功能操作、状态机或者过程的电路装置。
[0077]也旨在于涵盖如下软件,该软件“描述”或者定义硬件的配置,该硬件实施以上描述的模块、功能、部件、单元或者逻辑(例如,处理系统100、400和500的部件),比如如用于设计集成电路或者用于配置可编程芯片以实现希望的功能的HDL(硬件描述语言)软件。也就是说,可以提供计算机可读存储介质,该计算机可读存储介质具有在其上编码的以集成电路定义数据集这一形式的计算机可读程序代码,该集成电路定义数据集在集成电路制造系统中被处理时配置系统以制造配置为执行这里描述的方法中的任何方法的处理系统或者制造包括这里描述的任何装置的处理系统。IC定义数据集可以是以例如在适当HDL中编写对计算机代码、比如寄存器传递级(RTL)代码的形式。现在将关于图7描述如下示例,该示例在集成电路制造系统处理集成电路定义数据集以便配置系统以制造处理系统。
[0078]图7示出了包括布局处理系统704和集成电路生成系统706的集成电路(IC)制造系统702的示例。IC制造系统702被配置为接收IC定义数据集(例如,定义如在这里的示例中的任何示例中描述的处理系统)、处理IC定义数据集并且根据IC定义数据集生成IC(例如,该IC定义数据集例如体现如在这里的示例中的任何示例中描述的处理系统)。对IC定义数据集的处理配置IC制造系统702以制造体现如在这里的示例中的任何示例中描述的处理系统的集成电路。更具体地,布局处理系统704被配置为接收和处理IC定义数据集以确定电路布局。从IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以例如在逻辑部件(例如,NAND、N0R、AND、0R、MUX和FLIP-FLOP部件)方面确定待生成的电路的门级表示。可以通过确定用于逻辑部件的定位信息来从电路的门级表示确定电路布局。这可以自动地或者在用户参与下被完成以便优化电路布局。在部件处理系统704已经确定了电路布局时,它可以向IC生成系统706输出电路布局定义。IC生成系统706如在本领域中已知的那样根据电路部件定义生成1C。例如,IC生成系统706可以实施半导体器件制造工艺以生成1C,这可以涉及到光刻和化学处理步骤的多步骤序列,在这些步骤期间在由半传导材料制成的晶片上逐渐地创建电子电路。电路布局定义可以是以可以在用于根据电路定义生成IC的光刻工艺中使用的掩模的形式。备选地,向IC生成系统706提供的电路布局定义可以是计算机可读代码的形式,IC生成系统706可以使用该计算机可读代码以形成用于在生成IC时使用的适当掩模。可以都在一个位置例如由一方实施由IC制造系统702执行的不同过程。备选地,IC制造系统702可以是分布式系统,从而使得工艺中的一些工艺可以在不同位置被执行并且可以由不同方执行。例如,可以在不同位置和/或由不同方执行以下阶段中的一些阶段:(i)合成代表IC定义数据集的RTL代码以形成待生成的电路的门级表示、
(ii)基于门级表示生成电路布局、(iii)根据电路布局形成掩模和(iv)使用掩模来制作集成电路。
[0079]在其它示例中,在集成电路制造系统处理集成电路定义数据集可以配置系统以制造处理系统而未处理IC定义数据集以便确定电路布局。例如,集成电路定义数据集可以定义可重配置处理器(比如FPGA的配置),并且对该数据集的处理可以配置IC制造系统以生成具有该定义的配置的可重配置处理器(例如,通过向FPGA加载配置数据)。
[0080]在一些示例中,集成电路定义数据集可以包括在由数据集定义的硬件上或者与由数据集定义的硬件组合运行的软件。在图7中所示的示例中,IC生成系统还可以由集成电路定义数据集配置以在制造集成电路时、根据在集成电路定义数据集定义的程序代码向该集成电路上加载固件或者以别的方式与集成电路提供程序代码用于与集成电路使用。
[0081]术语‘处理器’和‘计算机’这里用来指代任何如下设备或者其部分,该设备或者其部分具有处理能力,从而使得它可以执行指令,或者指代能够实现功能或者方法的全部或者部分的专用电路,或者其任何组合。
[0082]虽然已经用结构特征和/或方法动作特有的语言描述了主题内容,但是将理解,在所附权利要求中定义的主题内容未必限于以上描述的具体特征或者动作。实际上,以上描述的具体特征和动作被公开作为实施权利要求的示例形式。将理解,以上描述的益处和优点可以涉及一个示例或者可以涉及若干示例。
[0083]如本领域技术人员将清楚的那样,可以扩展或者更改这里给定的任何范围或者值而不失寻求的效果。可以如适当的那样按照任何适当顺序或者同时执行这里描述的方法的步骤。以上描述的示例中的任何示例的方面可以与描述的其它示例中的任何示例的方面组合以形成更多示例而不失寻求的效果。
【主权项】
1.一种处理系统,包括: 专用处理器,适合用于执行特定类型的操作; 程序处理器,被配置为执行包括多个操作的程序,其中所述程序处理器被配置为使得所述程序的为所述特定类型的操作由所述专用处理器执行; 一组两个或者更多个寄存器组,被配置为存储与所述特定类型的操作有关的数据; 对接模块,被配置为通过以下各项来使用所述一组寄存器组来控制所述程序处理器与所述专用处理器之间的数据流: 并发地:(i)向所述专用处理器提供对所述寄存器组中的存储用于当前操作的先前加载的数据的寄存器组的访问,由此允许所述专用处理器执行所述当前操作,以及(ii)访问所述寄存器组中的不同寄存器组以向所述寄存器组中的所述不同寄存器组中加载用于后续操作的数据以用于设立用于由所述专用处理器后续执行的所述后续操作;以及 在所述专用处理器完成所述当前操作的执行之后,控制所述一组寄存器组以向所述专用处理器提供对来自所述一组寄存器组的所述寄存器组之一的用于所述后续操作的所述数据的访问,由此允许所述专用处理器执行所述后续操作。2.根据权利要求1所述的处理系统,其中所述对接模块被配置为在步骤(ii)中使用对所述寄存器组中的所述不同寄存器组的所述访问以在用于所述后续操作的所述数据被加载到所述寄存器组中的所述不同寄存器组中之前从所述寄存器组中的所述不同寄存器组读取用于由所述专用处理器执行的先前操作的结果数据。3.根据权利要求1所述的处理系统,其中所述专用处理器被配置为向与所述一组寄存器组不同的存储器写入由所述专用处理器执行的操作的结果。4.根据权利要求3所述的处理系统,其中所述对接模块被配置为指示所述存储器中的哪些存储器地址是用于所述结果被写入到的有效地址。5.根据任一前述权利要求所述的处理系统,其中所述对接模块被配置为对于将由所述专用处理器执行的操作序列中的每个操作迭代并发步骤(i)和(ii)。6.根据任一前述权利要求所述的处理系统,其中所述对接模块被配置为控制所述一组寄存器组以响应于确定所述专用处理器已经完成所述当前操作的执行并且用于所述后续操作的所述数据已经被加载到所述寄存器组中的所述不同寄存器组中、来向所述专用处理器提供对来自所述寄存器组的所述寄存器组之一的用于所述后续操作的所述数据的访问。7.根据权利要求6所述的处理系统,其中所述对接模块被配置为维持对数据是否已经完成加载到所述寄存器组之一中以用于等待由所述专用处理器执行的操作的指示,其中所述对接模块被配置为使用所述指示以确定用于所述后续操作的所述数据是否已经被加载到所述寄存器组中的所述不同寄存器组中。8.根据任一前述权利要求所述的处理系统,其中在所述一组寄存器组中有两个寄存器组,其中所述寄存器组中的每个寄存器组被配置为在任何给定的时间耦合到所述专用处理器或者所述对接模块,其中所述对接模块被配置为控制对所述寄存器组的所述耦合,从而使得在所述专用处理器耦合到所述寄存器组中的第一寄存器组时,所述对接模块耦合到所述寄存器组中的第二寄存器组,并且反之亦然。9.根据权利要求8所述的处理系统,其中所述对接模块被配置为响应于确定所述专用处理器已经完成所述当前操作的执行并且用于所述后续操作的所述数据已经被加载到所述寄存器组中的所述不同寄存器组中、来转换所述寄存器组到所述专用处理器和所述对接模块的所述耦合。10.根据权利要求1至7中的任一权利要求所述的处理系统,其中在所述一组寄存器组中有三个寄存器组,其中: 所述寄存器组中的第一寄存器组耦合到所述对接模块; 所述寄存器组中的第二寄存器组耦合到所述专用处理器;以及 所述寄存器组中的第三寄存器组耦合到所述第二寄存器组; 其中所述对接模块被配置为控制所述寄存器组,从而使得响应于确定所述专用处理器已经完成所述当前操作的执行并且用于所述后续操作的所述数据已经被加载到所述第一寄存器组中:(a)用于所述当前操作的结果数据从所述第二寄存器组被传递到所述第三寄存器组,以及(b)用于所述后续操作的所述数据从所述第一寄存器组被传递到所述第二寄存器组,由此允许所述专用处理器通过访问所述第二寄存器组来执行所述后续操作。11.根据权利要求10所述的处理系统,其中所述第三寄存器组还耦合到所述第一寄存器组,并且其中所述对接模块被配置为控制所述寄存器组,从而使得还响应于确定所述专用处理器已经完成所述当前操作的执行并且用于所述后续操作的所述数据已经被加载到所述第一寄存器组中:(c)用于所述当前操作的所述结果数据从所述第三寄存器组被传递到所述第一寄存器组,由此允许所述对接模块从所述第一寄存器组读取用于所述当前操作的所述结果数据。12.根据权利要求10所述的处理系统,其中所述第三寄存器组还耦合到所述对接模块,并且其中所述对接模块被配置为控制所述寄存器组,从而使得还响应于确定所述专用处理器已经完成所述当前操作的执行并且用于所述后续操作的所述数据已经被加载到所述第一寄存器组中用于所述当前操作的所述结果数据被所述对接模块从所述第三寄存器组读取。13.根据权利要求1至7中的任一权利要求所述的处理系统,其中在所述一组寄存器组中有两个寄存器组,其中所述寄存器组中的第一寄存器组耦合到所述对接模块,并且所述寄存器组中的第二寄存器组耦合到所述专用处理器; 其中所述处理系统还包括耦合到两个所述寄存器组并且被配置为保持比所述寄存器组中的每个寄存器组更少的数据的高速缓存; 其中所述对接模块被配置为控制所述寄存器组,从而使得响应于确定所述专用处理器已经完成所述当前操作的执行并且用于所述后续操作的所述数据已经被加载到所述第一寄存器组中:(a)用于所述当前操作的所述结果数据的部分从所述第二寄存器组被传递到所述高速缓存,(b)用于所述后续操作的所述数据的对应的部分从所述第一寄存器组被传递到所述第二寄存器组,以及(c)用于所述当前操作的所述结果数据的所述部分从所述高速缓存被传递到所述第一寄存器组; 其中对于数据的不同部分迭代步骤(a)、(b)和(C)。14.根据任一前述权利要求所述的处理系统,其中所述对接模块耦合到所述程序处理器。15.根据权利要求14所述的处理系统,其中所述对接模块耦合到所述程序处理器的协处理器端口。16.根据任一前述权利要求所述的处理系统,其中所述对接模块被配置为使用自动生成的代码以加载对将由所述专用处理器执行的操作的描述。17.根据任一前述权利要求所述的处理系统,其中所述特定类型的操作包括数据并行操作。18.根据权利要求17所述的处理系统,其中所述数据并行操作包括矢量操作。19.根据任一前述权利要求所述的处理系统,其中所述寄存器组位于所述专用处理器内。20.根据权利要求1至18中的任一权利要求所述的处理系统,其中所述寄存器组位于所述专用处理器以外。21.一种处理程序的操作的方法,包括: 在程序处理器处执行所述程序,其中所述程序处理器使得所述程序的为特定类型的操作由专用处理器执行,其中所述专用处理器适合用于执行所述特定类型的操作; 通过以下各项使用一组寄存器组来控制所述程序处理器与所述专用处理器之间的数据流: 并发地:(i)向所述专用处理器提供对所述寄存器组中的存储用于当前操作的先前加载的数据的寄存器组的访问,由此允许所述专用处理器执行所述当前操作,以及(ii)访问所述寄存器组中的不同寄存器组以向所述寄存器组中的所述不同寄存器组中加载用于后续操作的数据以用于设立用于由所述专用处理器后续执行的所述后续操作;以及 在所述专用处理器完成所述当前操作的执行之后,控制所述一组寄存器组以向所述专用处理器提供对来自所述一组寄存器组的所述寄存器组之一的用于所述后续操作的所述数据的访问,由此允许所述专用处理器执行所述后续操作。
【文档编号】G06F15/82GK106021175SQ201610170137
【公开日】2016年10月12日
【申请日】2016年3月23日
【发明人】P·默林, G·戴维斯, A·安德森
【申请人】想象技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1