CN103870335B - 用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法 - Google Patents
用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法 Download PDFInfo
- Publication number
- CN103870335B CN103870335B CN201310631327.4A CN201310631327A CN103870335B CN 103870335 B CN103870335 B CN 103870335B CN 201310631327 A CN201310631327 A CN 201310631327A CN 103870335 B CN103870335 B CN 103870335B
- Authority
- CN
- China
- Prior art keywords
- connection
- buffer
- row
- algorithm
- sequence
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Logic Circuits (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法。提供了根据用于信号流编程的数字信号处理器代码的高效资源管理的系统的实施例的方法,该方法包括确定用于电子电路的信号流的示意图中的多个算法元件的连接序列,该连接序列指示算法元件之间的连接和根据这些连接来处理算法元件的序列,该方法还包括确定指示使用多个存储器缓冲器来根据连接序列处理多个算法元件的顺序的缓冲器序列,并且根据缓冲器序列重用多个存储器缓冲器中的至少一些。
Description
技术领域
本公开概括而言涉及数字处理系统的领域,更具体而言涉及用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法。
背景技术
信号处理涉及对时变或空间变化信号(例如,声音、图像和传感器数据,例如诸如心电图之类的生物数据、控制系统信号、电信传送信号,等等)的操作或对这些信号的测量的分析。具体地,数字信号处理涉及通过通用计算机或通过诸如专用集成电路(ASIC)、现场可编程门阵列或专门的数字信号处理器(DSP)之类的数字电路来处理数字化的离散时间采样信号。在处理期间可在数字化的离散时间采样信号上实现算术(例如,定点和浮点、实值和复值、乘法和加法)和信号处理算法(例如,快速傅立叶变换(FFT)、有限冲击响应(FIR)滤波器、无限冲击响应(IIR)滤波器,等等)。存在各种工具——例如图形编程工具——来促进对信号的适当处理。
附图说明
为了提供对本公开及其特征和优点的更完整理解,参考以下结合附图的描述,附图中相似的标号表示相似的部件,其中:
图1是示出用于信号流编程的数字信号处理器代码的高效资源管理的系统的示例性实施例的简化框图;
图2是示出可与系统的实施例相关联的示例性细节的简化框图;
图3是示出与系统的实施例相关联的其他示例性细节的简化图;
图4A–4B是示出与系统的实施例相关联的其他示例性细节的简化图;
图5是示出可与系统的实施例相关联的示例性操作的简化流程图;
图6是示出可与系统的实施例相关联的另外的示例性操作的简化流程图;
图7是示出根据实施例的系统的示例性细节的简化框图;
图8是示出根据实施例的系统的示例性细节的简化图;
图9是示出可与系统的实施例相关联的示例性操作的简化流程图;并且
图10是示出根据实施例的系统的示例性细节的简化框图;
图11是示出系统的实施例的示例性细节的简化框图;
图12是示出实施例的另外的示例性细节的简化图;
图13是示出可与系统的实施例相关联的示例性操作的简化流程图。
具体实施方式
概要
提供了根据用于信号流编程的数字信号处理器代码的高效资源管理的系统的实施例的方法,该方法包括确定用于电子电路的信号流的示意图中的多个算法元件的连接序列,该连接序列指示算法元件之间的连接和根据这些连接来处理算法元件的序列,该方法还包括确定指示使用多个存储器缓冲器来根据连接序列处理多个算法元件的顺序的缓冲器序列,并且根据缓冲器序列重用多个存储器缓冲器中的至少一些。
在特定实施例中,确定缓冲器序列包括按顺序对连接、算法元件和存储器缓冲器编号。对于每个连接,可识别在任何其他算法元件之前在该连接上生成输出的第一算法元件。还可识别在所有其他算法元件之后在该连接上接收输出作为输入的第二算法元件。可按分配顺序布置所有连接的第一算法元件,该分配顺序包括第一算法元件号码的升序。可根据该分配顺序生成每个连接的缓冲器索引,连接的缓冲器索引与重用连接的另一缓冲器索引相同。重用连接的第二算法元件可与连接的第一算法元件相同。缓冲器序列可包括根据分配顺序布置的所有连接的缓冲器索引。
在各种实施例中,确定缓冲器序列可包括构造存储器寿命矩阵(MLM),其中包括关于算法元件和连接序列的信息。在特定实施例中,MLM可包括表示N个算法元件的N行和表示算法元件之间的M个连接的M列。该方法在各种实施例中可包括其他特征。
示例性实施例
转到图1,图1是示出系统10的简化框图。系统10包括图形模拟器12,该图形模拟器12可用于设计信号流并将其编程到诸如数字信号处理器(DSP)之类的电子电路上。用于电子电路的信号流的示例性示意图(例如图形表示)13(一般由箭头指示)被显示在图形模拟器12上。示意图13包括一个或多个算法元件(AE)14(1)–14(7)(例如,AE14(1)(S),AE14(2)(S2)…AE14(7)(S7))。这里使用的术语“算法元件(algorithm element)”包括用于电子电路的信号流的示意图中的组件。组件根据预定的算法处理一个或多个输入信号以提供一个或多个输出信号。每个AE14(1)–14(7)可表示被配置为执行(例如处理、实现等等)特定算法的功能电子组件(例如音频输入、滤波器、动态处理器、频率调制器、振荡器等等)的模拟(例如,匹配;拷贝动作、功能等等;模仿;摹拟;再现;等等)。用户(例如DSP编程者、电路设计者等等)可例如通过利用可用AE和其他图形工件构建示意图13来在图形模拟器12上手动生成示意图13。用户可将AE14(1)–14(7)与图形模拟器12中预配置的SPA相关联,或者根据需要生成定制的SPA。
AE14(1)–14(7)可通过连接16(1)–16(6)与彼此连接以实现特定的信号处理算法(SPA)。连接16(1)–16(6)可指示到每个AE14(1)–14(7)的输入和从每个AE14(1)–14(7)的输出。连接16(1)–16(6)可表示仿真通过示意图13的信号流的连接序列(CS)。这里使用的术语“连接序列”包括根据示意图中的AE的相应连接来处理这些AE的序列(例如,顺序、进展、串、演变,等等)。在示例性示意图中,AE14(1)接收输入信号,对其进行处理,并在连接16(1)上提供输出信号。连接16(1)上的来自AE14(1)的输出信号可被输入到AE14(2)和14(6)。
当连接被多于一个AE使用时,连接上的信号的值在这些AE各自的处理期间可被这些AE所共享。AE14(2)和14(6)因此直到AE14(1)已被处理为止不能被处理。连接16(2)上的来自AE14(2)的输出信号可被输入到AE14(3)和14(4)。AE14(3)直到AE14(4)和14(5)已被处理为止不能被处理,因为来自AE14(5)的输出被输入到AE14(3)。连接16(3)上的来自AE14(4)的输出信号可被输入到AE14(5)。连接16(4)上的来自AE14(5)的输出信号可被输入到AE14(3)。AE14(3)可在连接16(5)上生成输出信号,该输出信号可被输入到AE14(6)。连接16(6)上的来自AE14(6)的输出信号可被输入到AE14(7),AE14(7)可生成输出。
图形模拟器12可与存储器寿命矩阵(MLM)模块20通信。MLM模块20可与存储器元件22交互,存储器元件22可包括一个或多个存储器缓冲器24(例如缓冲器24(1)–24(4))。存储器缓冲器24(1)–24(4)可用于在AE14(1)–14(7)的处理期间存储连接16(1)–16(6)上的信号的值。“使用”存储器缓冲器可包括从缓冲器读取,和/或向缓冲器写入。MLM模块20还可酌情与处理器26交互。
在各种实施例中,MLM模块20可促进以存储器高效的方式在图形模拟器12上模拟示意图(例如示意图13)。MLM模块20可(从图形模拟器12)接收关于连接16(1)–16(6)和相应的AE14(1)–14(7)的信息。AE14(1)–14(7)的特定CS和存储器要求可被MLM模块20用来生成最佳存储器分配方案,其方式例如是通过在不影响图形模拟器12中表示的信号流的功能的情况下对AE14(1)–14(7)和连接16(1)–16(6)重用存储器缓冲器24(1)–24(4)。MLM模块20可适当地使用缓冲器24(1)–24(4)来减少在AE14(1)–14(7)的处理期间被系统10的实施例使用的存储器的量。
示意图13是示例,只是为了易于例示而示出的,而并不是限制。几乎任意数目的AE都可按任何方式被连接来利用图形模拟器12生成适当的示意图。例如,示意图可涉及执行与可编程DSP相关联的快速傅立叶变换(FFT)、诸如音量控制、定音调等等之类的音频处理的电子电路的一部分。在一般意义上,系统10可用于生成目标代码来在DSP上实现,使得输入到DSP的信号被根据由系统10定义的SPA来处理。
为了例示系统10的技术,理解比如图1中所示的体系结构那样的给定系统的操作是重要的。以下基本信息可被视为基础,根据该基础可以适当地说明本公开。这种信息只是为了说明而热心提供的,因此不应当以任何方式被解释为限制本公开的宽广范围及其潜在应用。
具有交互式绘图和可视化能力的图形框图模拟工具可加速DSP信号处理设计。若干种不同的方法可用于图形DSP编程,例如仿真和系统建模;计算机上的有限实时开发;仿真,随后是源代码生成,以及最终交叉编译到DSP;以及直接DSP对象代码生成。一些DSP编程方法使用框图来开发DSP应用。框图设计被实现在主机计算机上并且允许了设计者在生成或不生成DSP可执行程序的情况下开发DSP应用。
用于从图形途径开发DSP应用的另一种方法是使用允许在计算机上构造并实现有限实时DSP应用的声卡和视频相机。用于经由图形手段的DSP编程的另一种方法是使用基于计算机的框图,例如图1的示例性示意图,来构造在主机计算机上执行的DSP算法。在已构造了DSP算法并且仿真产生期望的结果之后,整个框图设计可用于生成在特定目标(例如DSP)上实现仿真的设计的目标代码。
用于DSP编程的示例性图形工具是Analog Device SigmaStudioTM。SigmaStudio图形开发工具可对特定的DSP软件进行编程、开发和调整。例如,音频处理块可在示意图中被连线在一起,并且编译器可生成DSP就绪代码和用于设定并调整参数的控制表面。SigmaStudio包括巨大的算法库,其中包括基本的低级别DSP功能和控制块以及诸如滤波、混频和动态处理之类的高级音频处理功能。每个处理器可用的AE被显示在“ToolBox”中并且AE可被拖放到示意图中。每个AE可包含一个或多个引脚(例如输入引脚、输出引脚、控制引脚)以将AE连接在一起。输出引脚可连接到输入引脚,反之亦然。可酌情向AE添加算法(例如将算法与AE相关联),或者从AE中去除算法(或者将算法与AE解除关联)。在创建示意图之后,点击“编译”按钮可使得该工具根据用户输入模拟信号流,并且生成目标代码。
通常,示意图利用CS中的AE和连接所表示的SPA的目的是处理去到各种AE的有限数目的输入通道以产生有限数目的输出通道。图形工具捕捉该SPA作为信号流。可应对的SPA的复杂度通常受到目标代码要在其上运行的目标DSP的资源的限制。例如,目标DSP的最大存储器、最大中央处理单元(CPU)每秒百万个指令(MIPS)和最大资源时间可限制特定计算系统可应对的最大复杂度。
例如,SigmaStudio使用基于指针的链接来管理用于处理SPA的存储器要求。在基于指针的链接方案中,每个信号的值被利用唯一指针保存到不同的存储器缓冲器。缓冲器一般用于向和从进程传递数据和在本地存储信息。存储器缓冲器的寿命周期跨越从缓冲器被创建时到其被删除时的时间。如果要在这种典型图形工具中处理图1的示意图13,则去到AE14(1)的输入信号的值将被保存在缓冲器Buff[0]中,该缓冲器Buff[0]将经由指针Ptr[0]来访问。图形模拟器12将根据关联的算法来处理去到AE14(1)的输入信号,并且将连接16(1)上的输出信号的值写入到经由另一指针Ptr[1]可访问的另一缓冲器Buff[1]中。保存到Buff[1]中的值将被用作由AE14(2)指定的算法中的输入,并且连接16(2)上的相应输出信号将被写入到经由另一指针Ptr[2]可访问的另一Buff[2],等等依此类推。每个信号将与利用唯一指针可访问的唯一缓冲器相关联。
在一些图形工具版本中,唯一指针可通过将每个缓冲器的大小相继加到BasePointer值来得出。从而,Ptr[0]可与BasePointer相同;Ptr[1]可等于BasePointer与Buff[0]的大小的总和;Ptr[2]可等于BasePointer、Buff[0]和Buff[1]的总和;等等依此类推。在一些其他图形工具版本中,可额外地使用偏量缓冲器,其可包含到实际缓冲器的偏量。从偏量缓冲器获得的每个偏量与缓冲器的大小(BlockSize)相乘以给出到每个缓冲器的差分指针。实际指针可通过将BasePointer与所得到的值相加来获得。
一般地,AE j可利用mj个输入执行预定的算法Aj以产生nj个输出,消耗pj的MIPS并且占用rj的资源。仅关注缓冲器存储器,AE j可被表示为mj和nj的函数Aj(mj,nj)。考虑U={Aj},j=1:N,系统10支持的所有算法的集合。A可表示U的子集,指示被分析的特定示意图所使用的算法的集合。Aj(mj,nj)指示具有mj个输入和nj个输出的Aj的实例,其中j=1:N1,其中N1≤N(可用算法的总数)。典型的图形工具按顺序Ql执行所有Aj∈A,顺序Ql是基于示意图网表(例如,电路设计的连通性)得出的顺序,其中l=1:L(当可以有一个或多个可能的执行序列时L≥1)。输出缓冲器的总存储器Mt可从以下式子获得。
在信号流编程环境中,CS信息可以是在处理任何AE之前先验已知的。CS信息和示意图中的所有AE的细节可用于得出SPA的存储器资源准备度和寿命要求。假定处理SPA的计算设备(例如目标DSP)的最大存储器由MaxMem表示,最大CPU MIPS被表示为MaxCpuMips,并且最大资源时间被表示为MaxResTime。每个AE j具有有限的存储器要求,该要求被称为元件存储器要求,表示为Emem_j(例如,在诸如状态、草案、输入-输出、外部、内部等等之类的子类别下)。每个AE j具有被表示为ECpu_j的有限CPU负载要求。每个AE j具有被表示为EResTime_j的有限资源要求。当且仅当以下情况时,典型的图形工具可将信号流转换成目标代码:
在有复杂的示意图和大量的AE和信号的情况下,处理SPA所需的存储器大小将增大到超出执行图形仿真的计算设备的资源限制。
系统10被配置为在提供更存储器高效的信号处理环境时解决这些问题(和其他问题)。在各种实施例中,MLM模块20可确定操作序列,使得存储器缓冲器24(1)–24(4)可被重用于连接16(1)–16(6),同时保持缓冲器的存储器大小M1t远小于Mt(M1t<<Mt)
其中N2是并行元件(例如并行使用的缓冲器)的最大数目,并且N2<<N1。在各种实施例中,MLM模块20可应用到涉及外部存储器覆盖的情况,和/或在后台利用直接存储器访问(DMA)来加载加速器和卸载器的任务。
系统10的实施例可确定电子电路的示意图(例如示意图13)中的多个AE(例如AE14(1)–14(7))的连接序列,其中该连接序列指示算法元件之间的连接和根据这些连接处理算法元件的序列。MLM模块20可确定缓冲器序列。根据该缓冲器序列可重用多个存储器缓冲器24(1)–24(4)中的至少一些。这里使用的术语“缓冲器序列”包括使用多个存储器缓冲器(例如24(1)–24(4))来根据连接序列处理多个算法元件(例如AE14(1)–14(7))的顺序。在各种实施例中,缓冲器序列可包括根据来自AE14(1)–14(7)的输出中的每一个被写入到每个存储器缓冲器的序列布置的存储器缓冲器24(1)–24(4)的编号列表,其中缓冲器序列中的重复的存储器缓冲器号码指示相应存储器缓冲器的缓冲器重用。
例如,缓冲器24(1)–24(4)可由缓冲器序列{0,1,2,3}指示,分别表示按该顺序的缓冲器24(1),24(2),24(3)和24(4)。在另一示例中,缓冲器序列{0,1,2,3,2,1,2}也可表示缓冲器24(1),24(2),24(3)和24(4),此外,该缓冲器序列可指示缓冲器24(3)和24(2)可按该缓冲器序列中指定的顺序被重用(例如被多于一次地写入)。缓冲器24(3)和24(2)中存储的值在被重用时可被覆写。
注意,对于每个算法元件(除了输入和输出算法元件以外),在该算法元件处接收至少一个输入并且该算法元件生成至少一个输出。(输入算法元件从用户或其他信号源(例如模数转换器、音乐播放器等等)(即,不是另一AE)接收输入;输出算法元件生成可被显示在屏幕上、被在扬声器上播放出(在音频信号的情况下)或者被送出图形模拟器12(即,不是被送出到另一AE)的输出)。例如,在AE14(2)处,在AE14(2)处接收连接16(1)上的输入并且从AE14(2)生成连接16(2)上的输出。该输出可以是去到另一算法元件的另一输入。例如,连接16(2)上的输出可被输入到AE14(4)和14(3)。一个连接可向算法元件提供输入,并且另一连接可接受来自该算法元件的输出并且将该输出作为另一输入提供给另一算法元件。从而,对于任何特定的算法元件,提供输入的连接不同于接受输出的连接;接受输出的连接可将该输出作为输入提供给一个或多个其他算法元件。每个连接可与存储器缓冲器24(1)–24(4)之一相关联。例如,连接16(2)上的输出可被写入到存储器缓冲器,并且被AE14(4)和14(3)读取作为输入。
在各种实施例中,连接、算法元件和存储器缓冲器可被按顺序编号。对于每个连接,可识别在任何其他算法元件之前在该连接上生成输出的第一算法元件。另外,对于该连接,还可识别在所有其他算法元件之后在该连接上接收输出作为输入的第二算法元件。可按分配顺序布置所有连接的第一算法元件。这里使用的术语“分配顺序”指示第一算法元件号码的顺序(例如升序或降序)。可根据该分配顺序为每个连接生成缓冲器索引,其中连接的缓冲器索引可与重用连接的另一缓冲器索引相同。“重用连接”是如下连接:该连接的相应存储器缓冲器可通过另一连接的输出值来覆写。重用连接的第二算法元件可与连接的第一算法元件相同。在这种实施例中,缓冲器序列可包括根据分配顺序布置的所有连接的缓冲器索引。
AE14(1)–14(7)的处理可例如基于用于启动可应用的算法的输入信号的可用性来遵循连接序列。例如,由AE14(1)表示的算法可在由AE14(2)或AE14(6)表示的算法之前被处理,因为连接16(1)上来自AE14(1)的输出信号可作为输入被馈送到AE14(2)和14(6)中。类似地,对于AE14(2)、14(3)、14(4)和14(5)的处理可在AE14(6)能够被处理之前已完成,作为在连接16(5)上到AE14(6)的输入信号仅在处理AE14(3)之后才可获得,而AE14(3)仅在AE14(5)之后才能被处理,而AE14(5)又仅在AE14(4)之后才能被处理,等等依此类推。结果,连接16(1)上的输入信号可被保持在其相应的缓冲器中,直到AE14(6)的处理为止。另一方面,连接16(3)上的输入信号仅用于处理AE14(5)。从而,用于存储连接16(3)上的输入信号的缓冲器可在处理AE14(5)之后被重用,例如用于存储连接16(5)上的输出信号,该输出信号充当去到AE14(3)的输入信号。重用存储器缓冲器可减小整体存储器和其他资源要求,从而带来了系统10的实施例处理更复杂的示意图的能力的增强。
在各种实施例中,MLM模块20可构造包括AE14(1)–14(7)和连接16(1)–16(6)之间的关系的MLM。该MLM可指示当各种AE14(1)–14(7)被系统10的实施例处理时向缓冲器24(1)–24(4)写入和从缓冲器24(1)–24(4)读取的序列。MLM可被操纵来给出向缓冲器24(1)–24(4)写入和从缓冲器24(1)–24(4)读取的特定序列,使得缓冲器24(1)–24(4)在AE14(1)–14(7)的处理期间可被重用,从而将存储器大小要求减小到仅仅是那些被主动地并行使用来处理AE14(1)–14(7)的缓冲器。
转到系统10的基础设施,系统10可实现在任何适当的计算设备(例如服务器、台式计算机、膝上型计算机、智能电话等等)上,这些计算设备配备有适当的硬件(例如显示屏、监视器等等)来促进其操作。在一些实施例中,系统10可与硬件(例如显示监视器)接口以执行这里描述的操作。例如,图形模拟器12可被呈现在用户可见的显示屏上,并且可与其他硬件(例如鼠标、操纵杆、触摸屏、键盘)相关联,用户通过这些其他硬件可适当地操纵示意图13。
在各种实施例中,系统10可位于单个设备上。在其他实施例中,系统10可分布在网络上的多个设备上,这多个设备可包括任意数目的互连的服务器、虚拟机、交换机、路由器和其他节点。图1的元件可通过采用任何适当连接(有线或无线)的一个或多个接口相互耦合,所述连接提供了用于电子通信的可行通路。此外,这些元件中的任何一个或多个可基于特定的配置需求被组合或者被从体系结构中去除。
在一些实施例中,系统10可包括一起操作以执行这里描述的操作的应用和硬件。例如,系统10的一部分可以用硬件实现,而另一部分可以用软件实现,例如实现为应用。这里使用的“应用”可包含包括在计算机上可理解和处理的指令的可执行文件,并且还可包括在执行期间加载的库模块、目标文件、系统文件、硬件逻辑、软件逻辑或者任何其他可执行模块。
在各种实施例中,图形模拟器12可包括其他接口工件(例如下拉菜单、窗口、多个页面等等),这些接口工件可促进根据用户的需求生成示意图13。在各种实施例中,系统10可与目标设备(例如DSP)接口,以卸载利用系统10的特征生成的目标代码。另外,这里示出和描述的MLM模块20也可用在很多种其他分析工具中,其中有限数目的输入被按特定CS连接的AE处理以生成有限数目的输出。
实现MLM模块20的计算设备可具有任何适当的体系结构,包括DSP和其他处理器。MLM模块20实现的存储器管理算法可酌情并基于特定需求被嵌入到处理器(例如DSP)中。例如,MLM模块20实现的存储器重用方案可在根据由系统10生成的目标代码执行算法的DSP中实现。在这种DSP中,DSP的存储器缓冲器在功能块(对应于各个示意图中的AE)处理实际输入信号并生成输出信号时可如这里所述被适当地重用。
在一些实施例中,MLM模块20可实现在也容宿图形模拟器20的计算设备(例如计算机、智能电话等等)上。在这种实施例中,计算设备生成的输出可以是使得DSP能够根据在图形模拟器12上捕捉的信号流来进行信号处理的目标代码。每个AE14(1)–14(7)要使用的存储器缓冲器24的细节可被包括在目标代码中。计算设备可根据在计算设备上运行的MLM模块20确定每个AE14(1)–14(7)要使用的存储器。使用在图形模拟器12上捕捉的信号流的信号处理可被目标DSP(其可与计算设备分开)根据由计算设备生成的目标代码来执行。MLM模块20的存储器重用算法可被结合到目标代码中并用于优化目标DSP上的存储器使用。
注意,指派给图1的元件的数字和字母名称不意味着任何类型的层次;这些名称是任意的并且只是用于教导的。这种名称不应当以任何方式被解释为限制其能力、功能或在可受益于系统10的特征的潜在环境中的应用。应当理解,图1中所示的体系结构为了易于图示而被简化。
转到图2,图2是示出在系统10的实施例中处理的另一示例性示意图28的简化框图。示例性示意图28在这里被用来在某些后续图中说明系统10的实施例的更多方面。示意图28包括由连接16(1)–16(10)按适当的CS连接以实现特定的SPA的AE14(1)–14(10)。连接16(1)上来自AE14(1)的输出信号可包括去到AE14(3)和14(4)的输入。连接16(2)上来自AE14(2)的输出信号可包括去到AE14(3)和14(6)的输入。AE14(3)从而可接收两个输入,并且提供三个输出:(i)在连接16(3)上去到AE14(7);(ii)在连接16(3)上去到AE14(5);以及(iii)在连接16(8)上去到AE14(4)。AE14(6)也可在连接16(4)上提供输出信号到AE14(7),AE14(7)可在连接16(7)上提供输出到AE14(5)和14(8)。AE14(5)可接收来自AE14(3)和14(7)的输入并且分别在连接16(6)和16(8)上提供输出到AE14(4)和14(8)。AE14(4)可处理来自AE14(1)、14(3)和14(5)的三个输入信号,并且在连接16(9)上提供输出到AE14(8)和14(10)。AE14(8)可接收三个输入(来自AE14(5)、14(7)和14(4))并且在连接16(10)上提供输出信号到AE14(9)。
转到图3,图3是示出根据系统10的实施例为示意图28构造MLM矩阵的示例性细节的简化图。可注意到,这里给出的示例性细节描绘了构造MLM矩阵的解析(例如逻辑)方案,而并不表示其物理实现。示意图28包括AE14(1)–14(10)和10个连接16(1)–16(10)。输出AE14(9)和14(10)不消耗任何缓冲器(例如,因为其输出不被其他AE处理),并且在生成MLM矩阵时可被忽略。示意图28的用于缓冲器管理目的的CS可被表示为矩阵30,该矩阵30包括8行和10列,分别对应于8个AE14(1)–14(8)和10个连接16(1)–16(10)。行可根据AE14(1)–14(8)来命名,列可根据连接16(1)–16(10)来命名。
可通过如下方式将矩阵30修改成矩阵32:如果到相应AE的相应连接表示输出则在单元中标记“x”,而如果到相应AE的相应连接表示输入则标记“o”。从而,连接16(1)表示来自AE14(1)的输出,并且可由列1和行S1相交处的单元中的“x”表示。连接16(1)还表示去到AE14(3)和14(4)的输入,并且可被表示为列1分别与S3和S4相交处的单元中的“o”。类似地,连接16(2)表示来自AE14(2)的输出,并且可由列2和行S2相交处的单元中的“x”表示。连接16(2)还表示去到AE14(3)和14(6)的输入,并且可被表示为列2分别与S3和S6相交处的单元中的“o”。矩阵32中的单元可根据示意图28中的CS被适当地填充。
通过改变行的顺序以使得在给定的列中“x”出现在“o”上方,可将矩阵32修改成矩阵34。例如,按照顺序{S1,S2,S3,S6,S7,S5,S4,S8}将行S4和S5移动到S7下方产生矩阵34,如图所示。每一列中的最后一个“o”可被标记为与其他的不同(例如,通过将其上色为不同的颜色)。与MLM矩阵34有关的信息可被提取到缓冲器36中,缓冲器36被表示为ALLOC缓冲器38和FREE缓冲器40。ALLOC缓冲器38可包括与MLM矩阵34的每一列的条目“x”相对应的行号,并且FREE缓冲器40可包括与MLM矩阵34的每一列中的条目“o”相对应的最高行号。在42可通过将ALLOC缓冲器38的列按升序重布置为ALLOC缓冲器44来修改缓冲器36。FREE缓冲器42和MLM34的对应列也可被相应地重布置以分别获得FREE缓冲器46和MLM48.
转到图4A–4B,图4A–4B是示出根据系统10的实施例的存储器重用操作的示例性细节的简化图。对于ALLOC缓冲器44中的每个条目Y,在FREE缓冲器46中找到的每个Y的缓冲器可被释放,并且在ALLOC缓冲器44中找到的每个Y的缓冲器可被分配并指派给相应的连接。在操作56,可检查ALLOC缓冲器44中的第一条目(0,对应于连接16(1)上的AE14(1))。链接索引53可给出与ALLOC缓冲器44的每一列相对应的连接。缓冲器索引54可指示实际缓冲器的位置,在图中表示为表格52。
链接1可指示图2的示例性示意图28的连接16(1)上的信号的值。链接1可被保存到BBuff[0]中,并且经由缓冲器索引54中的缓冲器索引值0来访问。在58,可检查ALLOC缓冲器44中的下一条目(1,对应于连接16(2)上的AE14(2))。缓冲器索引54可指示实际缓冲器的位置,即BBuff[1],其中可存储链接2,即示例性示意图28的连接16(2)上的信号的值。在60,ALLOC缓冲器44中的下两个条目(都具有值2,对应于连接16(3)和16(8)上的AE14(3))可被指派给缓冲器BBuff[2]和BBuff[3]。分别对应于连接16(3)和16(8)上的值的链接3和链接8可被存储在相应的缓冲器BBuff[2]和BBuff[3]中。
在62,ALLOC缓冲器44中的下一条目是3(对应于连接16(4)上的AE(6)),并且相同的值可在FREE缓冲器46中找到,对应于连接16(2)上的AE(6),与具有值1的缓冲器索引54相关联。因此,链接4,即连接16(4)的值,可被覆写在BBuff[1]中的先前值上,并且相应的缓冲器可在AE(6)被重用于连接16(4)。在64,ALLOC缓冲器中的下一条目是4(对应于连接16(7)上的AE(7)),并且相同的值可在FREE缓冲器46中找到,对应于连接16(4)上的AE(7),与具有值1的缓冲器索引54相关联。因此,链接7,即连接16(7)的值,可被覆写在BBuff[1]中的先前值上,并且相应的缓冲器可在AE(7)被重用于连接16(7)。
在66,ALLOC缓冲器44中的接下来的条目(都是5,对应于连接16(5)和16(6)上的AE14(5))也都可在FREE缓冲器46中找到,对应于连接16(3)上的AE14(5),与具有值2的缓冲器索引54相关联。因此,链接5,即连接16(5)的值,可被覆写在BBuff[2]中的先前值上,并且相应的缓冲器可在AE(5)被重用于连接16(5)。因为链接5已经被写入到BBuff[2],所以BBuff[2]不可被同时重用于链接6。因此,链接6可被写入到BBuff[4],并且缓冲器索引54被相应地更新。
在68,ALLOC缓冲器44中的下一条目是6(对应于连接16(9)上的AE14(4)),并且相同的值可在FREE缓冲器46中找到,对应于连接16(1)、16(8)和16(6)上的AE14(4),分别与具有值0、3和4的缓冲器索引54相关联。因此,链接9,即连接16(9)的值,可被覆写在这些缓冲器中的任何一个(比如说BBuff[0])上,并且可以使其他可用缓冲器空闲(或者可用)以供将来重用。在70,ALLOC缓冲器47中的下一条目是7(对应于连接16(10)上的AE14(8)),并且相同的值可在FREE缓冲器46中找到,对应于连接16(7)、16(5)和16(9)上的AE14(8),分别与具有值1、2和0的缓冲器索引54相关联。因此,链接10,即连接16(10)的值,可被覆写在这些缓冲器中的任何一个(比如说BBuff[0])上,并且可以使其他可用缓冲器空闲(或者可用)以供将来重用。从而,不是使用10个缓冲器来存储与10个连接16(1)–16(10)相对应的值,相反系统10的实施例可使用仅4个缓冲器,而不会牺牲任何性能。
转到图5,图5是示出可与系统10的实施例相关联的示例性操作的简化流程图。操作80包括82,在该处可确定图形仿真器示意图(例如示意图28)中的AE14(1)–14(8)。在84,可例如通过识别AE14(1)–14(8)之间的连接16(1)–16(10)来确定AE14(1)–14(8)之间的连接序列。在86,可构造MLM(例如MLM48)。MLM48可包括与AE14(1)–14(8)和示意图28的相应CS有关的信息。在88,可确定具有存储器重用来支持AE14(1)–14(8)的算法执行的最小量的存储器缓冲器。在90,可相应地重用存储器缓冲器。
转到图6,图6是示出可与系统10的实施例相关联的示例性操作的简化流程图。操作100包括102,在该处,数目为N的处理AE被识别并被编号为0至N-1。处理AE包括其输出可被写入到存储器缓冲器的AE。在104,可识别示意图中的所有M个连接(CON[j],j=1至M)。在106,可对于所有AE对连接编号。在108,可构造具有N行和M列的MLM。在110,可在如下情况下在每个单元中标记“o”:如果与该单元的行相对应的算法元件在与该单元的列相对应的连接上接收输入。在112,可在如下情况下在每个单元中标记“x”:如果与该单元的行相对应的算法元件在与该单元的列相对应的连接上接收输入。在114,行可被重布置以使得“x”在每一列的顶部。
在116,对于j=1至M,可将具有条目“x”的所有列的行号码“i”提取到ALLOC缓冲器。在118,对于j=1至M,将具有条目“o”的所有列的最高行号码“i”提取到FREE缓冲器中。在120,MLM、FREE和ALLOC缓冲器中的列可按指示ALLOC缓冲器中的元件的升序的分配顺序被重布置。在122,可检查ALLOC缓冲器中的每个条目(Y)。与ALLOC缓冲器中的每个Y的连接索引(即链接索引)相对应的存储器缓冲器可被释放。ALLOC缓冲器中的每个Y的存储器缓冲器可被分配并指派给与Y的连接相对应的连接。
转到图7,图7是示出系统10的实施例的示例性细节的简化框图。在一般计算意义上,覆盖包括将一块存储的指令(或数据)用另一块来替换。存储器覆盖可提供对于其全部程序指令和数据装不进处理器(例如处理器26)的内部存储器中的应用的支持。程序指令和数据可被分区并被存储在片外存储器中,直到程序执行需要它们为止。分区被称为存储器覆盖,并且调用并执行它们的例程被称为“存储器覆盖管理器”。在一般意义上,覆盖是“多到一”存储器映射系统。若干个覆盖可被存储在片外存储器中的唯一位置,并且它们在片上存储器中的共同位置中运行(或执行)。
MLM模块20可与片上存储器缓冲器128交互,片上存储器缓冲器128可包括输入/输出(I/O)存储器130和状态存储器132。在一般意义上,I/O存储器130可存储连接的输入和输出值,并且状态存储器132可存储被系统10处理的AE的状态。根据系统10的实施例,状态存储器132的一部分可被卸载到片外存储器134,例如在目标存储器不足以为SPA中的所有AE存储状态的情况下。在处理AE之前和之后,可分别从片外存储器134读取和向片外存储器134写入适当的状态。在一些实施例中,除了状态存储器132以外,只读存储器(ROM)数据(例如采取表格的形式)也可被卸载到片外存储器134。ROM数据在处理AE之后可不被写回到片外存储器134,例如因为ROM数据表格在处理期间可不被AE修改。在各种实施例中,存储器覆盖管理器136可促进在状态存储器132上覆盖片外存储器134。
根据各种实施例,覆盖管理器136是一个用户定义的功能,其负责确保在片外存储器134上的覆盖内的功能或数据当该功能或数据被需要时在状态存储器132中。片上状态存储器132与片外存储器134之间的存储器的转移可利用处理器26的直接存储器访问(DMA)能力来发生。覆盖管理器136还可应对更高级的功能,例如检查所请求的覆盖是否已经在运行时存储器中,在加载覆盖的同时执行另一功能,以及跟踪递归式覆盖功能调用。
在各种实施例中,片上存储器缓冲器128可与处理器26集成在同一半导体芯片上,并且可包括指令高速缓存、数据高速缓存、ROM、片上静态随机访问存储器(SRAM)以及片上动态随机访问存储器(DRAM)。指令和数据高速缓存可以是充当处理器26与片外存储器134之间的接口的快速本地存储器。片上SRAM可被映射到与片外存储器134脱离但连接到相同的地址和数据总线的地址空间中。高速缓存和SRAM都可允许对其数据的快速访问,而对片外存储器(例如DRAM)134的访问可能需要相对更长的访问时间。例如,访问片外存储器134可由处理器26通过片上存储器128中的适当的高速缓存来实现。
片外存储器134可用在具有有限的片上存储器的情形中。片外存储器134可包括DRAM、闪速RAM、SRAM、同步动态随机访问存储器(SDRAM)、硬盘驱动器以及任何其他形式的可在具有处理器26的芯片的外部实现的存储器元件。片上存储器缓冲器128的一部分可用片外存储器134来覆盖,从而可增大有效存储器可用性。DMA可用于根据基于由MLM模块20生成的MLM的序列来在片上存储器缓冲器128与片外存储器134之间移动存储器块。利用DMA,处理器26可发起读取/写入转移,在转移正在进行的同时执行其他操作,并且当转移完成时接收来自DMA控制器的中断。可在后台调度存储器转移(例如,与其他处理并行),以便能够使处理器等待时间减到最低限度。
系统10的实施例可使用被分析的SPA中的不同AE的存储器要求细节和处理时间要求来发出自动DMA请求。在一些实施例中,为了确保完整的后台转移,为发出DMA请求可以考虑被分析的SPA中的基本上所有AE的处理时间;在其他实施例中,为发出DMA请求可以只考虑SPA中的某些AE的处理时间。系统10的实施例可促进利用覆盖机制增大有效片上存储器可用性。由于DMA的自动调度,存储器转移可在后台完成,并且可增大有效处理力。
转到图8,图8是示出系统10的使用覆盖存储器管理的实施例的示例性细节的简化图。为了易于例示,而不是作为限制,这里参考示意图13来说明根据系统10的各种实施例的覆盖存储器管理。在操作期间,可酌情在状态存储器132中创建(例如在状态存储器132中)多个状态缓冲器(例如stat1、stat2、stat3等等)。MLM模块20可生成矩阵140,该矩阵140包括与AE14(1)–14(8)相对应的行和与状态存储器132中的缓冲器(例如stat1、stat2等等)相对应的列,其中“x”指示缓冲器的创建,“o”指示缓冲器的读取,并且“s”指示向缓冲器的写入。
仅出于示例目的,假定AE14(2)和14(5)使用片外存储器134。根据系统10的实施例,在状态存储器132中可创建片上缓冲器(例如“stat5”),并且在片外存储器134中可为AE14(2)和14(5)创建两个不同的片外存储器覆盖缓冲器(例如分别是ostat2和ostat5)。stat5可被AE(2)使用(例如读取或写入)。随后,存储器覆盖管理器136可发布由伪AE142(D1i)表示的DMA请求,以将stat5中记录的状态保存到片外存储器134中的ostat2,使得AE14(5)也可使用相同的状态缓冲器stat5。这里使用的术语“伪AE”(dummy AE)指的是由MLM模块20生成而不是由用户生成的AE。伪AE的目的包括向存储器缓冲器写入和从存储器缓冲器读取,并且关联的算法可指示这样的功能(例如,从存储器读取;写入到存储器;等等),而不是任何特定的电子组件功能。存储器覆盖管理器136可发布另一DMA请求以用来自ostat5的值填充stat5。同时,在伪AE142从片外存储器ostat5向存储器缓冲器stat5写入时(例如,DMA操作可在后台实现),其他AE(例如AE14(3)、14(6)、14(7))的处理可基本上同时发生。
在AE14(5)的处理之后,stat5中的值可被AE14(5)使用。随后,存储器覆盖管理器136可发布由伪AE144(D1o)表示的另一DMA请求,以将stat5保存到片外存储器134中的ostat5,使得AE14(2)在下一处理回合(如果需要的话)中也可使用同一状态stat5。同时,在这些转移被执行时(例如,DMA操作可在后台实现),其他AE(例如AE14(4)、14(8))的处理可同时发生(或不同时发生)。
在存储器覆盖管理器136的帮助下,AE14(2)和14(5)都可使用stat5。AE14(2)可使用大小为M2的片外位置ostat2;AE14(5)可使用大小为M5的另一片外位置ostat5。转移大小为M5的存储器块所需的存储器带宽可小于AE14(3)、14(6)和14(7)的组合处理时间。从而,伪AE142(D1i)可被定位(例如处理)来在AE14(3)之前引进stat5缓冲器,使得stat5可在AE14(7)之后立即可供使用。伪AE144(D1o)可被定位来在处理AE14(5)之后立即将状态保存回片外134。伪AE142和144的位置可基于MLM模块20为被分析的SLA生成的MLM。根据这里示出的实施例,有效的片上存储器大小可等于用于处理SLA的所有片上状态存储器132和片外存储器134的总和,其中对于DMA完成的等待时间为零。
转到图9,图9是示出可与系统10的具有存储器覆盖管理的实施例相关联的示例性操作150的简化流程图。操作150可包括152,在该处MLM模块20可生成用于被分析的SLA的MLM。在154,可确定其状态存储器使用片外存储器134的AE。在156,可酌情生成伪AE。例如,如果正使用单个片上状态存储器缓冲器,则可生成两个伪AE;如果使用多于一个片上状态存储器缓冲器,则可酌情生成额外的伪AE。在158,可基于被分析的SLA中的AE的转移时间和处理时间来修改MLM的缓冲器序列以包括伪AE。
例如,假定AE A、B和C根据连接序列{A,B,C}被处理;AE C使用片外存储器134;针对AE C的去往和来自片外存储器134的转移可小于针对AE B的处理时间。在该情况下,可生成片上状态存储器132来就在AE B的处理之前存储AE C的状态。另一方面,如果针对AE C的去往和来自片外存储器134的转移可大于针对AE B的处理时间,则可生成片上状态存储器132来在AE A的处理之前存储AE C的状态,等等依此类推。在160,可根据需要并基于特定需求使用片外存储器134。
转到图10,图10是示出系统10的使用处理器卸载的另一示例性实施例的简化框图。处理卸载器162可包括处理器、硬件加速器或者其他可处理被分析的SLA中的AE的处理设备。这里使用的术语“处理卸载器”包括除了另一处理器以外还使用的(以及与另一处理器结合使用的)处理器(例如中央处理单元(CPU))、服务处理器、硬件加速器或其他处理设备。在各种实施例中,处理卸载器162可被动地接收来自存储器的数据并且立即处理数据;处理卸载器162可不利用存储器地址主动请求数据。从而,数据可被推送到处理卸载器162,这与处理器26不同,处理器26可利用适当的存储器地址拉入数据。另外,当处理被卸载到处理卸载器162时,缓冲器必须被适当地加载并且准备好在适当的时间被处理卸载器162读取。
MLM模块20可与处理卸载器162、存储器元件22和处理器26接口。为了卸载,用于跨存储器块转移数据的时间、AE的处理时间和缓冲器序列可被用于确定是否以及何时可执行卸载。用于跨存储器块转移数据的时间可取决于存储器的大小;AE的处理时间可取决于这里使用的具体算法;并且缓冲器序列可从由MLM模块20生成的MLM来确定。处理器26可将某些AE的处理卸载到处理卸载器162。处理器26可读和写寄存器以利用适当的端口来控制AE处理。处理卸载器162可从存储器元件22中的适当的输入缓冲器读取数据并将结果写入到存储器元件22中的适当的输出缓冲器。通过利用例如适当的DMA发布模块适当地流水线化算法,可以改善性能。算法可使用可用的/已分配的处理卸载器162的细节、处理周期要求和数据转移开销,以及其他参数。该配置可产生大致等于处理器MIPS和处理卸载器MIPS的总和的有效处理时间,其中对于DMA完成的处理器等待有最低限度的增大。
转到图11,图11是示出用于描述根据系统10的实施例的使用MLM的卸载的另一示例性示意图163的简化图。仅出于示例目的,假定AE14(1)–14(8)除了AE14(5)以外被处理器26处理,而AE14(5)被处理卸载器162处理。AE14(5)可例如被在后台处理,因为处理卸载器162和处理器26可并行运行不同的进程(例如AE)。数据可酌情被从存储器元件22读取、被处理并被写回到存储器元件22。另外,AE14(5)从AE14(3)取得输入,并且为AE14(4)和AE14(8)各自生成输出。从而,AE14(5)直到AE14(3)之后才可被处理。
转到图12,图12是示出可与系统10的用于应用到示意图163的处理器卸载的实施例相关联的示例性细节的简化图。还假定处理卸载器162花P5MIPS来执行任务并且卸载DMA开销是OH5。如果用于PH5和OH5的带宽小于用于AE14(6)和AE14(7)的组合处理时间,则伪AE166(D2i)可被生成并被定位来将缓冲器从接口输入缓冲器加载到处理卸载器162,使得状态存储器(例如stat5)可用于处理AE14(5)。换言之,当创建用于伪AE166(D2i)的存储器缓冲器时,可发起卸载处理。AE14(6)和14(7)的处理可与AE14(5)的处理基本上同时执行。
在来自AE14(5)的输出被根据连接序列随后处理的AE(例如AE14(4)和AE14(8))使用之前,AE14(5)的处理可能必须完成。另一伪AE168(D2o)可被定位成从处理卸载器162读取结果缓冲器到AE14(5)的接口输出缓冲器。从而,在AE14(4)和14(8)根据连接序列被处理之前,可以适当地使来自AE14(5)的输出对AE14(4)和14(8)可用。伪AE166和168可被MLM模块20创建来促进这里描述的操作,并且可能不具有除了使用存储器缓冲器以外的太多其他功能。
转到图13,图13是示出可与系统10的使用处理器卸载的实施例相关联的示例性操作的简化流程图。操作170包括172,在该处MLM模块20可为被分析的SPA生成MLM。在174,可确定要利用处理卸载器162来处理的AE。在176,基于要由处理卸载器162处理的AE的数目,可酌情生成伪AE。例如,为了处理单个AE,可生成两个伪AE;为了处理多于一个AE,可酌情生成额外的AE。在178,基于被处理卸载器162处理的AE的处理时间(和DMA开销)可修改MLM的缓冲器序列来包括伪AE。在180,可根据需要使用处理卸载器162。
注意在本说明书中,提及在“一个实施例”、“示例性实施例”、“一实施例”、“另一实施例”、“一些实施例”、“各种实施例”、“其他实施例”、“替换实施例”等等中包括的各种特征(例如元件、结构、模块、组件、步骤、操作、特性等等)想要意指任何这种特征被包括在本公开的一个或多个实施例中,但可能被结合在相同实施例中,也可能不一定被结合在相同实施例中。另外,词语“优化”和相关术语是提及指定结果的速度和/或效率的改进的专门术语,而并不意图指示用于实现该指定结果的过程已经实现或者能够实现“最优的”或者完美快速的/完美高效的状态。
这里示出和描述的示意图(例如示意图13、28、163)只是示例,而并不是对系统10的任何实施例的限制。在实施例的宽广范围内,任意数目的AE和连接可被包括在示意图中。另外,这里描述的方法可按任何适当的方式在包括适当的处理器和存储器元件的计算设备(包括DSP或其他处理器)上实现。例如,虽然MLM(例如MLM48)被示出和描述为其中某些行放在其他行的上方(或下方)并且某些列在其他列的右边(或左边)的阵列,但可注意,指示缓冲器序列的CS可按任何适当的布置来表示,包括只有行、只有列、以各种不同模式布置的行和列,等等。
在示例性实现方式中,这里概述的活动的至少一些部分可在例如MLM模块20中用软件实现。在一些实施例中,这些特征中的一个或多个可用硬件实现,在这些元件外部提供,或者以任何适当的方式被合并来实现期望的功能。各种元件(例如MLM模块20、图形模拟器12)可包括可相互协调以便实现这里概述的操作的软件(或往复式软件)。在其他实施例中,这些元件可包括促进其操作的任何适当的算法、硬件、软件、组件、模块、接口或对象。
此外,这里描述和示出的系统10(和/或其关联的结构)还可包括用于接收、发送和/或以其他方式传输数据或信息到硬件组件(例如计算机监视器、显示设备)和网络环境中的网络设备(例如客户端设备)的适当接口。此外,与各种节点相关联的处理器和存储器元件中的一些可被去除,或者以其他方式被合并以使得单个处理器和单个存储器元件负责某些活动。在一般意义上,图中描绘的布置在其表示上可更逻辑化,而物理体系结构可包括这些元件的各种置换、组合和/或混合。需要注意,无数的可能设计配置可被用于实现这里概述的操作目的。因此,关联的基础设施具有许多的替代布置、设计选择、设备可能性、硬件配置、软件实现、设备选项,等等。
在一些示例性实施例中,一个或多个存储器元件(例如存储器元件22)可存储用于这里描述的操作的数据。这包括存储器元件能够在非暂态介质中存储指令(例如软件、逻辑、代码等等),使得这些指令被执行来进行本说明书中描述的活动。处理器可执行与数据相关联的任何类型的指令以实现本说明书中这里详述的操作。
在一个示例中,处理器(例如处理器26)可将一个元件或物品(例如数据)从一个状态或事物变换成另一状态或事物。在另一示例中,这里概述的活动可利用固定逻辑或可编程逻辑(例如由处理器执行的软件/计算机指令)来实现,并且这里标识的元件可以是一些类型的可编程处理器、可编程数字逻辑(例如现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))、包括数字逻辑、软件、代码、电子指令的ASIC、闪存、光盘、CD-ROM、DVD ROM、磁卡或光卡、其他类型的适用于存储电子指令的机器可读介质、或者其任何适当组合。
在操作中,系统10中的组件可包括一个或多个存储器元件(例如存储器元件22),用于存储在实现这里概述的操作时要使用的信息。这些设备还可将信息保持在任何适当类型的非暂态存储介质(例如随机访问存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、EPROM、EEPROM等等)、软件、硬件中或者在适当时基于特定需求保持在任何其他适当的组件、设备、元件或对象中。在系统10中被跟踪、发送、接收或存储的信息基于特定需求和实现可在任何数据库、寄存器、表格、高速缓存、队列、控制列表或存储结构中提供,所有这些都可在任何适当的时间表中被引用。这里论述的任何存储器项目都可被解释为包含在宽泛术语“存储器元件”内。类似地,本说明书中描述的任何潜在的处理元件、模块和机器应当被解释为包含在宽泛术语“处理器”内。
注意到以下这点也是重要的:参考前面的附图描述的操作和步骤只是例示了可由系统执行或者可在系统内执行的可能场景中的一些。这些操作中的一些可被酌情删除或去除,或者这些步骤可被相当大地修改或改变,而不脱离所述概念的范围。此外,这些操作的定时可被相当大地更改,而仍实现本公开中教导的结果。前面的操作流程是出于示例和论述目的提供的。系统提供了很大的灵活性,因为可提供任何适当的布置、时间顺序、配置和定时机制,而不脱离所述概念的教导。
本领域技术人员可确定许多其他改变、替代、变化、更改和修改,希望本公开包含所有落在所附权利要求的范围内的改变、替代、变化、更改和修改。为了帮助美国专利商标局(USPTO)以及根据本申请授权的任何专利的任何读者解读这里所附的权利要求,申请人希望注意到,申请人:(a)不希望所附权利要求中的任何一个以其在本申请日存在的形式援用35U.S.C.第112节第六(6)款,除非在特定权利要求中具体使用了词语“用于……的装置”或“用于……的步骤”;并且(b)不希望本说明书中的任何语句以所附权利要求中没有反映的任何方式限制本公开。
Claims (20)
1.一种用于资源管理的方法,包括:
确定用于电子电路的信号流的示意图中的多个算法元件的连接序列,其中所述连接序列指示所述算法元件之间的连接和根据所述连接来处理所述算法元件的序列;
确定缓冲器序列,该缓冲器序列指示使用多个存储器缓冲器来根据所述连接序列处理所述多个算法元件的顺序;以及
根据所述缓冲器序列重用所述多个存储器缓冲器中的至少一些;
其中确定所述缓冲器序列包括:
构造包括N行和M列的第一存储器寿命矩阵MLM,其中N是使用所述存储器缓冲器的算法元件的数目,并且M是所述连接的数目;
在所述N行中按升序布置N个算法元件,并且在所述M列中按升序布置M个连接;
对于所述第一MLM中的每个单元,如果与该单元的行相对应的算法元件在与该单元的列相对应的连接上生成输出,则标记第一符号,并且如果与该单元的行相对应的算法元件在与该单元的列相对应的连接上接收输入,则标记第二符号;以及
通过重布置所述第一MLM中的行以使得在任何给定列中所述第一符号出现在所述第二符号之前,来生成第二MLM。
2.如权利要求1所述的方法,其中对于每个算法元件,在该算法元件处接收至少一个输入并且由该算法元件生成至少一个输出,其中该至少一个输出可以是去到至少一个其他算法元件的另一输入,其中一个连接提供去到该算法元件的输入,并且另一连接接受来自该算法元件的输出并将该输出作为该另一输入提供给该至少一个其他算法元件,并且其中每个连接与所述存储器缓冲器之一相关联,其中该另一连接上的输出被写入到存储器缓冲器,并且被该至少一个其他算法元件读取作为该另一输入。
3.如权利要求2所述的方法,其中所述缓冲器序列包括根据来自所述算法元件的输出中的每一个被写入到每个存储器缓冲器的序列布置的所述存储器缓冲器的编号列表,其中所述缓冲器序列中的重复的存储器缓冲器号码指示相应存储器缓冲器的缓冲器重用。
4.如权利要求1所述的方法,其中确定所述缓冲器序列包括:
按顺序对所述连接、所述算法元件和所述存储器缓冲器编号;
对于每个连接,识别在任何其他算法元件之前在该连接上生成输出的第一算法元件,并且识别在所有其他算法元件之后在该连接上接收该输出作为输入的第二算法元件;
按分配顺序布置所有连接的第一算法元件,其中所述分配顺序包括第一算法元件号码的升序;
根据所述分配顺序生成每个连接的缓冲器索引,其中该连接的缓冲器索引与重用连接的另一缓冲器索引相同,其中该重用连接的第二算法元件与该连接的第一算法元件相同,并且其中所述缓冲器序列包括根据所述分配顺序布置的所有连接的缓冲器索引。
5.如权利要求1所述的方法,
其中每一行是根据相应算法元件的号码来命名的,并且每一列是根据相应连接的号码来命名的。
6.如权利要求5所述的方法,还包括:
生成第一分配列表,该第一分配列表包括一行和与所述MLM的M列相对应的M列,其中所述分配列表中的每个单元包括具有所述第一符号的所述第二MLM的列所对应的行号;
通过根据分配顺序重布置所述第一分配列表的M列来生成第二分配列表,所述分配顺序包括所述第一分配列表中的行号的升序;
生成第一空闲列表,该第一空闲列表包括一行和与所述MLM的M列相对应的M列,其中所述空闲列表中的每个单元包括具有所述第二符号的所述第二MLM的列所对应的最高行号;以及
通过根据所述分配顺序重布置所述第一空闲列表的M列来生成第二空闲列表。
7.如权利要求6所述的方法,还包括:
对于所述第二分配列表中的每个条目,确定在所述第二空闲列表中是否找到该条目;
识别与所述第二空闲列表中的该条目相对应的连接号码;
释放与所识别的连接相对应的存储器缓冲器;以及
将所释放的存储器缓冲器中的至少一个分配给与所述第二分配列表中的该条目相对应的另一连接。
8.如权利要求1所述的方法,其中确定所述连接序列包括:
识别向一些算法元件提供输入的连接;
识别从一些其他算法元件接受输出的连接;以及
确定在这些算法元件处接收输入和生成输出的顺序。
9.如权利要求1所述的方法,其中所述示意图是在计算设备上利用图形仿真器生成的。
10.如权利要求1所述的方法,其中每个算法元件表示对电子电路的功能组件的模拟,该功能组件被配置为根据预定算法处理一个或多个输入以生成一个或多个输出。
11.一种用于资源管理的装置,包括:
用于确定用于电子电路的信号流的示意图中的多个算法元件的连接序列的部件,其中所述连接序列指示所述算法元件之间的连接和根据所述连接来处理所述算法元件的序列;
用于确定缓冲器序列的部件,该缓冲器序列指示使用多个存储器缓冲器来根据所述连接序列处理所述多个算法元件的顺序;以及
用于根据所述缓冲器序列重用所述多个存储器缓冲器中的至少一些的部件;
其中用于确定所述缓冲器序列的部件包括:
用于构造包括N行和M列的第一存储器寿命矩阵MLM的部件,其中N是使用所述存储器缓冲器的算法元件的数目,并且M是所述连接的数目;
用于在所述N行中按升序布置N个算法元件,并且在所述M 列中按升序布置M个连接的部件;
用于对于所述第一MLM中的每个单元,如果与该单元的行相对应的算法元件在与该单元的列相对应的连接上生成输出,则标记第一符号,并且如果与该单元的行相对应的算法元件在与该单元的列相对应的连接上接收输入,则标记第二符号的部件;以及
用于通过重布置所述第一MLM中的行以使得在任何给定列中所述第一符号出现在所述第二符号之前,来生成第二MLM的部件。
12.如权利要求11所述的装置,其中用于确定所述缓冲器序列的部件包括:
用于按顺序对所述连接、所述算法元件和所述存储器缓冲器编号的部件;
用于对于每个连接,识别在任何其他算法元件之前在该连接上生成输出的第一算法元件,并且识别在所有其他算法元件之后在该连接上接收该输出作为输入的第二算法元件的部件;
用于按分配顺序布置所有连接的第一算法元件的部件,其中所述分配顺序包括第一算法元件号码的升序;
用于根据所述分配顺序生成每个连接的缓冲器索引的部件,其中该连接的缓冲器索引与重用连接的另一缓冲器索引相同,其中该重用连接的第二算法元件与该连接的第一算法元件相同,并且其中所述缓冲器序列包括根据所述分配顺序布置的所有连接的缓冲器索引。
13.如权利要求11所述的装置,其中每一行是根据相应算法元件的号码来命名的,并且每一列是根据相应连接的号码来命名的。
14.如权利要求13所述的装置,其中用于确定所述缓冲器序列的部件还包括:
用于生成第一分配列表的部件,该第一分配列表包括一行和与所述MLM的M列相对应的M列,其中所述分配列表中的每个单元包括具有所述第一符号的所述第二MLM的列所对应的行号;
用于通过根据分配顺序重布置所述第一分配列表的M列来生成第二分配列表的部件,所述分配顺序包括所述第一分配列表中的行号 的升序;
用于生成第一空闲列表的部件,该第一空闲列表包括一行和与所述MLM的M列相对应的M列,其中所述空闲列表中的每个单元包括具有所述第二符号的所述第二MLM的列所对应的最高行号;以及
用于通过根据所述分配顺序重布置所述第一空闲列表的M列来生成第二空闲列表的部件。
15.如权利要求14所述的装置,其中用于确定所述缓冲器序列的部件还包括:
用于对于所述第二分配列表中的每个条目确定在所述第二空闲列表中是否找到该条目的部件;
用于识别与所述第二空闲列表中的该条目相对应的连接号码的部件;
用于释放与所识别的连接相对应的存储器缓冲器的部件;以及
用于将所释放的存储器缓冲器中的至少一个分配给与所述第二分配列表中的该条目相对应的另一连接的部件。
16.一种用于资源管理的装置,包括:
用于存储数据的存储器元件,其中所述存储器元件包括多个存储器缓冲器;以及
可操作用于执行与所述数据相关联的指令的处理器,其中所述处理器和所述存储器元件协作,使得所述装置被配置用于:
确定用于电子电路的信号流的示意图中的多个算法元件的连接序列,其中所述连接序列指示所述算法元件之间的连接和根据所述连接来处理所述算法元件的序列;
确定缓冲器序列,该缓冲器序列指示使用所述多个存储器缓冲器来根据所述连接序列处理所述多个算法元件的顺序;以及
根据所述缓冲器序列重用所述多个存储器缓冲器中的至少一些;
其中确定所述缓冲器序列包括:
构造包括N行和M列的第一MLM,其中N是使用所述存储器缓冲器的算法元件的数目,并且M是所述连接的数目,
在所述N行中按升序布置N个算法元件,并且在所述M列中按升序布置M个连接;
对于所述第一MLM中的每个单元,如果与该单元的行相对应的算法元件在与该单元的列相对应的连接上生成输出,则标记第一符号,并且如果与该单元的行相对应的算法元件在与该单元的列相对应的连接上接收输入,则标记第二符号;以及
通过重布置所述第一MLM中的行以使得在任何给定列中所述第一符号出现在所述第二符号之前,来生成第二MLM。
17.如权利要求16所述的装置,其中确定所述缓冲器序列包括:
按顺序对所述连接、所述算法元件和所述存储器缓冲器编号;
对于每个连接,识别在任何其他算法元件之前在该连接上生成输出的第一算法元件,并且识别在所有其他算法元件之后在该连接上接收该输出作为输入的第二算法元件;
按分配顺序布置所有连接的第一算法元件,其中所述分配顺序包括第一算法元件号码的升序;
根据所述分配顺序生成每个连接的缓冲器索引,其中该连接的缓冲器索引与重用连接的另一缓冲器索引相同,其中该重用连接的第二算法元件与该连接的第一算法元件相同,并且其中所述缓冲器序列包括根据所述分配顺序布置的所有连接的缓冲器索引。
18.如权利要求16所述的装置,
其中每一行是根据相应算法元件的号码来命名的,并且每一列是根据相应连接的号码来命名的。
19.如权利要求18所述的装置,其中确定所述缓冲器序列还包括:
生成第一分配列表,该第一分配列表包括一行和与所述MLM的M列相对应的M列,其中所述分配列表中的每个单元包括具有所述第一符号的所述第二MLM的列所对应的行号;
通过根据分配顺序重布置所述第一分配列表的M列来生成第二分配列表,所述分配顺序包括所述第一分配列表中的行号的升序;
生成第一空闲列表,该第一空闲列表包括一行和与所述MLM的 M列相对应的M列,其中所述空闲列表中的每个单元包括具有所述第二符号的所述第二MLM的列所对应的最高行号;以及
通过根据所述分配顺序重布置所述第一空闲列表的M列来生成第二空闲列表。
20.如权利要求19所述的装置,其中确定所述缓冲器序列还包括:
对于所述第二分配列表中的每个条目,确定在所述第二空闲列表中是否找到该条目;
识别与所述第二空闲列表中的该条目相对应的连接号码;
释放与所识别的连接相对应的存储器缓冲器;以及
将所释放的存储器缓冲器中的至少一个分配给与所述第二分配列表中的该条目相对应的另一连接。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/691,670 | 2012-11-30 | ||
US13/691,670 US8941674B2 (en) | 2012-11-30 | 2012-11-30 | System and method for efficient resource management of a signal flow programmed digital signal processor code |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103870335A CN103870335A (zh) | 2014-06-18 |
CN103870335B true CN103870335B (zh) | 2017-05-17 |
Family
ID=49683568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310631327.4A Active CN103870335B (zh) | 2012-11-30 | 2013-12-02 | 用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US8711160B1 (zh) |
EP (1) | EP2738675B1 (zh) |
KR (1) | KR101715986B1 (zh) |
CN (1) | CN103870335B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8711160B1 (en) | 2012-11-30 | 2014-04-29 | Analog Devices, Inc. | System and method for efficient resource management of a signal flow programmed digital signal processor code |
US9697005B2 (en) | 2013-12-04 | 2017-07-04 | Analog Devices, Inc. | Thread offset counter |
FR3026945B1 (fr) * | 2014-10-10 | 2017-12-15 | Oreal | Composition cosmetique de revetement des fibres keratiniques |
KR102581470B1 (ko) * | 2017-11-22 | 2023-09-21 | 삼성전자주식회사 | 영상 데이터를 처리하는 방법 및 장치 |
US10824927B1 (en) * | 2018-09-21 | 2020-11-03 | Enernet Global, LLC | Systems, methods and computer readable medium for management of data buffers using functional paradigm |
DE102019211856A1 (de) * | 2019-08-07 | 2021-02-11 | Continental Automotive Gmbh | Datenstruktur, Steuerungssystem zum Einlesen einer solchen Datenstruktur und Verfahren |
CN112163184A (zh) * | 2020-09-02 | 2021-01-01 | 上海深聪半导体有限责任公司 | 一种实现fft的装置及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5848295A (en) * | 1992-09-30 | 1998-12-08 | Apple Computer, Inc. | System for allocating common memory in cache such that data is maintained when exiting first programming structure and entering second programming structure |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050097140A1 (en) * | 2002-03-22 | 2005-05-05 | Patrik Jarl | Method for processing data streams divided into a plurality of process steps |
US20080147915A1 (en) * | 2006-09-29 | 2008-06-19 | Alexander Kleymenov | Management of memory buffers for computer programs |
US8341604B2 (en) * | 2006-11-15 | 2012-12-25 | Qualcomm Incorporated | Embedded trace macrocell for enhanced digital signal processor debugging operations |
US8711160B1 (en) | 2012-11-30 | 2014-04-29 | Analog Devices, Inc. | System and method for efficient resource management of a signal flow programmed digital signal processor code |
-
2012
- 2012-11-30 US US13/691,696 patent/US8711160B1/en active Active
- 2012-11-30 US US13/691,670 patent/US8941674B2/en active Active
- 2012-11-30 US US13/691,684 patent/US8681166B1/en active Active
-
2013
- 2013-11-28 EP EP13194922.4A patent/EP2738675B1/en active Active
- 2013-12-02 KR KR1020130148796A patent/KR101715986B1/ko active IP Right Grant
- 2013-12-02 CN CN201310631327.4A patent/CN103870335B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5848295A (en) * | 1992-09-30 | 1998-12-08 | Apple Computer, Inc. | System for allocating common memory in cache such that data is maintained when exiting first programming structure and entering second programming structure |
Non-Patent Citations (1)
Title |
---|
Data memory minimization by sharing large size buffers;Hyunok Oh et;《Design Automation Conference》;20001231;第491-496页,附图1-3,7,9 * |
Also Published As
Publication number | Publication date |
---|---|
US8941674B2 (en) | 2015-01-27 |
EP2738675A3 (en) | 2016-06-01 |
US8681166B1 (en) | 2014-03-25 |
EP2738675B1 (en) | 2019-03-27 |
EP2738675A2 (en) | 2014-06-04 |
US8711160B1 (en) | 2014-04-29 |
KR20140070493A (ko) | 2014-06-10 |
US20140152680A1 (en) | 2014-06-05 |
CN103870335A (zh) | 2014-06-18 |
KR101715986B1 (ko) | 2017-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103870335B (zh) | 用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法 | |
KR101959376B1 (ko) | 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법 | |
US10949328B2 (en) | Data flow graph computation using exceptions | |
US20200042856A1 (en) | Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit | |
US20160196488A1 (en) | Neural network computing device, system and method | |
JP2020518042A (ja) | 処理装置と処理方法 | |
JP7078758B2 (ja) | 機械学習モデルを改良して局所性を改善させること | |
CN108229670A (zh) | 基于fpga的深度神经网络加速平台 | |
US11347480B2 (en) | Transpose operations using processing element array | |
US20190138373A1 (en) | Multithreaded data flow processing within a reconfigurable fabric | |
US20200174707A1 (en) | Fifo filling logic for tensor calculation | |
US20190057060A1 (en) | Reconfigurable fabric data routing | |
US20190130270A1 (en) | Tensor manipulation within a reconfigurable fabric using pointers | |
JP2019204492A (ja) | ニューロモルフィック・アクセラレータ・マルチタスキング | |
US11934826B2 (en) | Vector reductions using shared scratchpad memory | |
CN113469355B (zh) | 分布式系统中的多模型训练管道 | |
US20210011849A1 (en) | Processor cluster address generation | |
US8725486B2 (en) | Apparatus and method for simulating a reconfigurable processor | |
JP6834097B1 (ja) | 推論のニューラルネットワークアクセラレータのハードウェア固有分割 | |
US20190197018A1 (en) | Dynamic reconfiguration using data transfer control | |
US20200371978A1 (en) | Multidimensional address generation for direct memory access | |
CN108805277A (zh) | 基于多fpga的深度信念网络加速平台及其设计方法 | |
US20200167309A1 (en) | Reconfigurable fabric configuration using spatial and temporal routing | |
TWI782403B (zh) | 具有平行載入儲存之共享高速暫存記憶體 | |
CN107357206A (zh) | 一种基于fpga板卡的运算优化的方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |