CN1658613A - 促进dsp间数据通信的方法和系统 - Google Patents
促进dsp间数据通信的方法和系统 Download PDFInfo
- Publication number
- CN1658613A CN1658613A CN200510008503.4A CN200510008503A CN1658613A CN 1658613 A CN1658613 A CN 1658613A CN 200510008503 A CN200510008503 A CN 200510008503A CN 1658613 A CN1658613 A CN 1658613A
- Authority
- CN
- China
- Prior art keywords
- processor core
- dsp processor
- address
- data structure
- pointer
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
一种用于促进数字信号处理(DSP)间数据通信的方法、计算机程序产品和系统。直接存储器存取(DMA)控制器可以配置成促进与该DMA控制器连接的第一与第二DSP处理器核心之间的数据传送。所述DMA控制器可以读取一个称为“缓冲区描述符块”的数据结构以便执行所述数据传送。所述缓冲区描述符块可以同时存储指出从何处取回数据以及将数据存储到何处的源地址和目的地址。所述缓冲区描述符块还可以存储指出要传送的数据的大小的值,例如字节数。所述DMA控制器然后可以将所述第一DSP处理器核心内位于所述源地址处的具有所述缓冲区描述符块指出的大小(例如字节数)的数据传送到所述第二DSP处理器核心内的所述目的地址。
Description
技术领域
本发明涉及数字信号处理(DSP)领域,具体地说,涉及促进位于DSP复合体(complex)内各单独DSP处理器核心中的软件任务之间的DSP间数据通信。
背景技术
数字信号处理(DSP)可以是指一种分析来自诸如声音、气象卫星以及地震监视器之类的信源的信号的技术。这些信号转换为数字数据后使用诸如快速傅里叶变换之类的各种算法加以分析。信号一经被转换为数字后,对它的各个分量进行隔离、分析和重新排列就可以比在模拟形式更容易。DSP用于许多领域,包括生物医学、声呐、雷达、地震学、语音和音乐处理、成像以及通信。
使用DSP的一种技术是数字用户线路(DSL)。DSL是一种提高进入家庭或办公室的普通电话线路(本地环路)的数字容量的技术。DSL速度受客户与电话公司中心局之间的距离的限制。在电话公司中心局,DSL业务在一个被称为DSL接入多路复用器(DSLAM)的单元内聚集后被转发给适当的互联网服务供应商(ISP)或数据网络。
在这种DSP系统内,单个DSP处理器核心可能没有足够的处理能力来处理需进行的必要计算量。因此,这种系统可以采用专用的硬布线功能。然而,这些硬布线功能需要较长的开发时间,对于为了适应不断发展的国际标准而进行改动来说通常不够灵活。因此,希望在这种系统体系结构内采用多个DSP处理器核心而不是单个DSP处理器核心。
每个DSP处理器核心可以配置成对实时和/或异步成流数据(asynchronous streamed data)执行操作。数据可以包括将由DSP处理器核心执行的软件“任务”。任务可以指将由某个指定的DSP处理器核心执行的操作。任务的一个实例可以是对进入的数字信号执行层2纠错或执行快速傅里叶变换。
业已开发了一种体系结构和技术,允许在单个DSP处理器核心内一些任务与其他任务通信。每个任务可以与另一个任务通信,诸如从该任务获取信息以便执行其操作。在这种体系结构中,每个任务可以具有与之关联的数据结构,称为任务间控制块,用来存储状态和控制信息。每个任务间控制块能够将其状态和控制信息发送给另一个任务间控制块,从而使每个任务能够将其状态和控制信息传送给另一个任务。此外,在这种体系结构中,执行操作所需的数据可以由流连接器(stream connector)从一个任务发送给另一个任务。在美国专利No.5,625,845“System for FacilitatingContinuous,Real-Time,Unidirectional,and Asynchronous lntertaskand End-Device Communication in a Multimedia Data Processing SystemUsing Open Architecture Data Communication Modules”(“使用开放体系结构数据通信模块来促进多媒体数据处理系统内连续、实时、单向以及异步的任务间和终端设备通信的系统”)中揭示了与这种体系结构有关的其他详细信息,该专利的全部内容在此引入作为参考。
然而,这种体系结构局限于在单个DSP处理器核心内与其他任务通信的任务。将这种通信局限于单个DSP处理器核心,就使DSP系统不得不用单个DSP处理器核心而不是用多个DSP处理器核心来实现。将系统局限于用单个DSP处理器核心来实现,该系统就可能没有足够的处理能力来处理需进行的必要计算量。
因此,在本领域内需要促进位于DSP复合体内各单独DSP处理器核心中的软件任务之间的DSP间数据通信。
发明内容
在本发明的一些实施例中,通过与第一DSP处理器核心和第二DSP处理器核心之间的每个数据传送关联的缓冲区描述符块(buffer descriptorblock),可以至少部分地解决上述问题。为了执行所述数据传送,与所述第一和第二DSP处理器核心两者连接的直接存储器访问控制器可以被配置成读取所述缓冲区描述符块。所述缓冲区描述符块可以被配置成同时存储源地址和目的地址,其中,所述源地址指出将从所述第一DSP处理器核心的本地存储器内的何处来取回数据,而所述目的地址指出数据将被存储在所述第二DSP处理器核心的本地存储器内的何处。所述缓冲区描述符块可以被进一步配置成存储指出需传送的数据的大小的值(“计数”),例如字节数。所述直接存储器访问控制器然后可以使用从所述缓冲区描述符块得到的信息将所述第一DSP处理器核心内位于所述源地址处的具有所述计数值所指出的大小(字节数)的数据传送到所述第二DSP处理器核心内的所述目的地址。
在本发明的一个实施例中,促进数字信号处理(DSP)间数据通信的方法可以包括读取第一数据结构的步骤,所述第一数据结构与包括多个DSP处理器核心的复合体内的第一DSP处理器核心内的本地存储器块关联。所述第一数据结构可以包括第一源地址,所述第一源地址指出数据被存储在所述第一DSP处理器核心的所述本地存储器内的何处的第一地址。所述第一数据结构可以进一步包括存储器块的大小的指示。所述第一数据结构可以进一步包括第一目的地址,所述第一目的地址指出数据将存储在第二DSP处理器核心的本地存储器内的何处的第二地址。所述方法可以进一步包括启动传送,将所述第一DSP处理器核心的所述本地存储器内位于所述第一源地址处的具有所述存储器块大小的数据移动到所述第二DSP处理器核心的所述本地存储器内的所述第一目的地址。
以上相当概括地列出了本发明的一个或多个实施例的特征和技术优点,以便可以更好地理解以下对本发明的详细说明。下面将对可以形成本发明的权利要求的主题的本发明的其他特征和优点进行说明。
附图说明
当结合附图考虑以下详细说明时,可以更好地理解本发明,这些附图是:
图1例示了根据本发明的一个实施例的网络系统;
图2例示了在该网络系统内用户侧的本发明的ADSL收发机单元的一个实施例;
图3例示了在该网络系统内本发明的DSP复合体的一个实施例;
图4例示了本发明的多个相互交互的软件任务的一个实施例;
图5例示了本发明的数据通信连接器的图形表示的一个实施例;
图6例示了本发明的用于促进位于各单独DSP处理器核心内的软件任务之间的DSP间数据通信的体系结构的一个实施例;
图7例示了本发明的缓冲区描述符块的一个实施例;
图8例示了本发明的用于促进属主(owner)数据驱动协议的DSP间数据通信的体系结构的一个实施例;
图9是根据本发明的一个实施例的用于促进属主数据驱动协议的DSP间数据通信的方法的流程图;
图10A和10B是根据本发明的一个实施例的用于在属主数据驱动协议中属主DSP处理器核心内执行后台过程的方法的流程图;
图11例示了本发明的用于促进用户数据驱动协议的DSP间数据通信的体系结构的一个实施例;
图12是根据本发明的一个实施例的用于促进用户数据驱动协议的DSP间数据通信的方法的流程图;
图13A和13B是根据本发明的一个实施例的用于在用户数据驱动协议中用户DSP处理器核心内执行后台过程的方法的流程图;
图14例示了本发明的用于促进安全数据驱动协议的DSP间数据通信的体系结构的一个实施例;
图15是根据本发明的一个实施例的用于促进安全数据驱动协议的DSP间数据通信的方法的流程图;以及
图16是根据本发明的一个实施例的用于在多次DMA数据移动期间缓冲区描述符块的方法的流程图。
具体实施方式
本发明包括用于促进数字信号处理(DSP)间数据通信的方法、计算机程序产品和系统。在本发明的一个实施例中,可以将一个直接存储器访问控制器连接到多个DSP处理器核心。所述直接存储器访问控制器可以配置成使用一个被称为缓冲区描述符块的数据结构来促进两个DSP处理器核心之间的数据传送。每个数据传送与一个缓冲区描述符块关联。为了执行所述数据传送,同时连接到第一和第二DSP处理器核心的所述直接存储器访问控制器可以配置成读取所述缓冲区描述符块。所述缓冲区描述符块可以配置成同时存储源地址和目的地址,其中,所述源地址指出将从所述第一DSP处理器核心的本地存储器内的何处来取回数据,而所述目的地址指出数据将被存储在所述第二DSP处理器核心的本地存储器内的何处。所述缓冲区描述符块可以进一步配置成存储指出需传送的数据的大小的值(“计数”),例如字节数。所述直接存储器访问控制器然后可以使用从所述缓冲区描述符块得到的信息将所述第一DSP处理器核心内位于所述源地址处的具有所述计数值所指出的大小(字节数)的数据传送到所述第二DSP处理器核心内的所述目的地址。
虽然本发明是参考非对称数字用户线路(ADSL)技术来说明的,但要指出的是,本发明的原理可以应用于多处理环境内的任何数据通信技术以及任何数据流(面向流的)应用。还要指出的是,将本发明的原理应用于多处理环境内的这种数据通信技术以及数据流(面向流的)应用的实施例都将落入本发明的范围之内。
在以下描述中,说明了众多的具体细节以提供对本发明的全面理解。然而,对本领域的技术人员显而易见的是,无须这种具体细节也可以实施本发明。在其他情况下,公知的电路以方框图形式示出,以免不必要的细节使本发明模糊不清。在很大程度上,省略了考虑到时序和类似因素的细节,因为这样的细节并不是完全理解本发明所必需的并且是本领域的技术人员所公知的。
图1:网络系统
图1例示了根据本发明的网络系统100的一个实施例。系统100可以包括家庭单元101,它经由电话线路107连接到中心局110。系统100还可以包括经由网络103与家庭单元101连接的服务器102。网络103可以是局域网(LAN),例如以太网、令牌环、ARCnet,也可以是广域网(WAN),例如互联网。
参考图1,家庭单元101可以包括连接到路由器105的客户机104。路由器105可以连接到用户侧上被称为“ATU-R”106的非对称数字用户线路(ADSL)收发机单元。在一个实施例中,ATU-R 106可以是外部调制解调器。在另一个实施例中,ATU-R 106可以是插入客户机104的插卡。ATU-R 106可以配置成对连接到中心局110内的ATU-C 108(如以下要说明的)的电话线路107提供调制。将在以下接合图2提供对ATU-R 106的更详细的说明。
中心局110可以包括在电话公司侧的ADSL收发机单元,称为“ATU-C”108,例如位于DSL接入多路复用器(DSLAM)109内的线路插卡。DSLAM 109可以被连接到网络103。DSLAM 109可以配置成在用户DSL线路上混合语音业务和DSL业务。此外,DSLAM可以配置成分离进入的电话和数据信号并将它们引导到适合的载运者的网络103。
要指出的是,系统100可以包括任意数量的家庭单元101、服务器102,并且图1只是示例性的。还要指出的是,本领域的技术人员将很容易认识到系统100可以包括为了清晰起见而没有示出的其他和/或附加的部分。还要指出的是,100可以是任何类型的系统,并且图1的范围并非被局限于任何一个特定的实施例。
图2:ATU-R
图2例示了本发明的ATU-R 106(图1)的一个实施例。参见图2,ATU-R106可以包括存储器单元201,例如随机存取存储器(RAM)。存储器201的存储器空间在此可以称为“通用处理器的专用存储器”。ATU-R 106还可以包括与存储器单元201连接的处理器202。处理器202可以被连接到包括多个DSP处理器核心(未示出)的DSP复合体203。将在以下接合图3提供对DSP复合体203的更详细的说明。DSP复合体203可以包括DMA控制器204,DMA控制器204配置成允许在诸DSP处理器核心(未示出)之间移动数据,如以下还要说明的那样。DSP复合体203可以经由总线208被连接到模拟-数字(A/D)以及数字-模拟(D/A)转换器207。总线208可以配置成允许数据在DSP复合体203与转换器207之间传送。A/D和D/A转换器207可以被连接到诸如电话线路输入/输出208之类的各种输入/输出设备。要指出的是,本领域的技术人员将很容易认识到ATU-R 106可以包括为了清晰起见而没有示出的其他和/或附加的部分。还要指出的是,图2的范围并非被局限于任何一个特定的实施例。
图3:DSP复合体
图3例示了本发明的DSP复合体203(图2)的一个实施例。DSP复合体203可以包括DMA控制器204(图2)。DMA控制器204可以经由总线301被连接到各个其他组件。DSP复合体203还可以包括多个连接到总线301的可编程的DSP处理器核心302A-D。DSP处理器核心302A-D可以分别被总称为DSP处理器核心302或被单独称为DSP处理器核心302。DSP复合体203还可以包括里德-索罗门编码器303和里德-索罗门解码器304。里德-索罗门编码器303是一种编码器,配置成使用被称为里德-索罗门编码的纠错技术来对数据进行编码。此外,里德-索罗门解码器304是一种解码器,配置成使用里德-索罗门编码的纠错技术来对数据进行解码。DSP复合体203还可以包括单元305,单元305被配置成对从电话线路107(图1)进入的信号/通过电话线路107外出的信号进行快速傅里叶变换(“fft”)和快速傅里叶逆变换(“ifft”)计算。DSP复合体203还可以包括仲裁器306,仲裁器306被配置成仲裁对DSP复合体203的各单元与处理器202(图2)之间的总线301的控制,从而允许处理器202访问DSP处理器核心302,反之亦然。
每个DSP处理器核心302A-D分别可以与指令存储器307A-D和数据存储器308A-D连接,以加快相应的DSP处理器核心302的操作。每个硬布线的DSP功能,诸如里德-索罗门编码器303、里德-索罗门解码器304和fft/ifft单元305,可以分别被连接到数据存储器308E-G。
如上所述,DSP复合体203可以包括多个DSP处理器核心302。每个DSP处理器核心302可以配置成执行一个特定任务。在一个实施例中,每个DSP处理器核心302可以包括例如非易失性存储器的存储器(未示出),用来存储执行后台任务的程序,所述任务诸如更新数据结构,该数据结构包含用来指出数据在DSP处理器核心302的本地存储器地址空间内的当前位置的信息,如下面还要结合图10、13和14所说明的。在一个替代实施例中,每个DSP处理器核心302A-D可以分别使用指令和数据存储器307A-D和308A-D来保存后台任务的指令和数据。不论是哪种情况,DSP处理器核心302A-D的相应的存储器308A-D在这里都称为“本地存储器空间”。在该本地存储器空间内的存储器地址在这里可以称为“本地地址”。DSP处理器核心302还可以包括与存储器(未示出)连接的处理器(未示出)。该处理器(未示出)可以配置成执行程序的指令。本领域的技术人员将理解,此处公开的实施例可以作为软件程序指令来实现,所述软件程序指令能够作为一个或多个程序产品以包括计算机程序产品的各种形式被分发,并且本发明均可同等地应用,而与实际用来执行所述分发的程序存储介质或信号承载介质的具体类型无关。程序存储介质和信号承载介质的实例包括诸如软盘、CD-ROM和磁带之类的可记录型介质,诸如数字和模拟通信链路之类的传输型介质,以及其他介质存储装置和分发系统。
还要指出的是,由上述程序执行的方法的诸步骤在一个替代实施例中可以在诸如专用集成电路(ASIC)之类的硬件内实现,以便非可编程的DSP元件(例如,里德-索罗门编码器303)可以使用DMA控制器204将数据传送给其数据存储器308E和从其数据存储器308E传送数据。
如上所述,DSP复合体203还可以包括DMA控制器204。在一个实施例中,DMA控制器204可以包括例如非易失性存储器的存储器(未示出),用来存储促进DSP间数据通信的程序,如下面还要结合图9、12和16说明的那样。DMA控制器204还可以包括与所述存储器(未示出)连接的处理器(未示出)。该处理器(未示出)可以配置成执行所述程序的指令。本领域的技术人员将理解,此处公开的实施例可以作为软件程序指令来实现,所述软件程序指令能够作为一个或多个程序产品以包括计算机程序产品的各种形式被分发,并且本发明均可同等地应用,而与实际用来执行所述分发的程序存储介质或信号承载介质的具体类型无关。程序存储介质和信号承载介质的实例包括诸如软盘、CD-ROM和磁带之类的可记录型介质,诸如数字和模拟通信链路之类的传输型介质,以及其他介质存储装置和分发系统。
还要指出的是,由上述程序执行的方法的诸步骤在一个替代实施例中可以在诸如专用集成电路(ASIC)之类的硬件内实现。
如背景技术一节中所述,业已开发了一种体系结构和技术,允许在单个DSP处理器核心内一些任务与其他任务通信。每个任务可以与另一个任务通信,诸如从该任务获取信息以便执行其操作。在这种体系结构中,每个任务可以具有与之关联的数据结构,称为任务间控制块,用来存储状态和控制信息。每个任务间控制块能够将其状态和控制信息发送给另一个任务间控制块,从而使每个任务能够将其状态和控制信息传送给另一个任务。此外,在这种体系结构中,执行操作所需的数据可以由流连接器从一个任务发送给另一个任务。然而,这种体系结构局限于在单个DSP内与其他任务通信的任务。将这种通信局限于单个DSP,就使DSP系统不得不用单个DSP处理器核心而不是用多个DSP处理器核心来实现。将系统局限于用单个DSP处理器核心来实现,该系统就可能没有足够的处理能力来处理需进行的必要计算量。因此,在本领域内存在促进位于DSP复合体内各单独DSP处理器核心中的软件任务之间的DSP间数据通信的需要。使用如以下结合图6-16说明的体系结构和过程,可以促进位于DSP复合体内各单独DSP处理器核心中的软件任务之间的DSP间数据通信。在这样的讨论之前,先对由DSP处理器核心302执行的软件任务进行讨论被认为是适当的。图4例示了本发明的多个经由数据通信连接器来相互交互的软件任务的一个实施例。图5例示了本发明的数据通信连接器的图形表示的一个实施例。
图4:软件任务的交互
图4例示了本发明的多个经由数据通信连接器402A-D来相互交互的软件任务401A-C的一个实施例。软件任务401A-C可以分别被总称为或单独称为软件任务401。数据通信连接器402A-D可以分别被总称为或单独称为数据通信连接器402。软件任务401可以指将由DSP处理器核心302执行的代码和数据段。数据通信连接器402可以配置成在任务401之间传递数据。每个软件任务401可以包括在这里称为“任务间控制块(ITCB)”的数据结构,该数据结构被配置成存储状态和控制信息。例如,任务401A可以包括ITCB 403A。类似地,任务401B可以包括ITCB 403B,而任务401C可以包括ITCB 403C。ITCB 403A-C可以分别被总称为或单独称为ITCB 403。可以在将一个任务401内的一个ITCB 403直接链接到另一个任务401内的另一个ITCB 403的单独路径(未示出)内将状态和控制信息传送给另一个任务401。下面给出软件任务401的交互的一个实例。
在一个实例中,来自电话线路107(图1)的音频信号可以由A/D转换器207(图2)采样后转换为数字格式。可以通过由任务1401A对数字信号执行快速傅里叶变换(fft)来将数字信号的信号表示转换为信号的频率表示。来自A/D转换器207的数字信号可以经由数据通信连接器402A被发送给任务1401A。任务1401A的输出可以经由数据通信连接器402B被发送给任务2401B,以便根据图形均衡器的设置来改变数字信号的音频响应。任务2401B可以从处理器202(图2)接收图形均衡器的当前设置。任务2401B使用任务1401A的fft输出可以调整这些设置。任务2401B的输出可以经由数据通信连接器402C被转发给任务3401C,以便由任务3401C通过对任务2401B的输出执行快速傅里叶逆变换(ifft)来变换为时域。任务3401C的输出然后可以经由数据通信连接器402D被发送给D/A转换器207,以便转换为可由放大器(未示出)放大的模拟信号。要指出的是,以上是诸软件任务401如何相互联系的一个实例,并且这些软件任务401可以配置成执行所例示之外的其他任务。在美国专利No.5,625,845“System for Facilitating Continuous,Real-Time,Unidirectional,and Asynchronous lntertask andEnd-Device Communication in a Multimedia Data Processing SystemUsing Open Architecture Data Communication Modules”(“使用开放体系结构数据通信模块来促进多媒体数据处理系统内连续、实时、单向以及异步的任务间和终端设备通信的系统”)中揭示了与软件任务401的交互有关的其他详细信息,该专利的全部内容在此引入作为参考。下面给出数据通信连接器402的图形表示。
图5:数据通信连接器
图5例示了本发明的数据通信连接器402(图4)的图形表示的一个实施例。数据通信连接器402可以表示为分成多个存储器段501A-P的循环的存储器缓冲区。存储器段501A-P可以分别被总称为或单独称为存储器段501。要指出的是,数据通信连接器402可以包括任何数量的存储器段501并且图5只是示例性的。
参考图5,循环的存储器缓冲区402可用来在两个或更多个软件任务401(图4)之间或在一个软件任务401与一个设备(例如,A/D转换器207)之间传递数据流。存储器缓冲区402内的每个存储器段501可以包括多个字节或字。其中具有数据的存储器段501被示为带有阴影,而其中没有存储新数据的存储器段501被示为没有阴影。
为了保证有序的实时和/或异步数据通信,可以将一个任务401指定为任何特定的数据通信连接器402的“属主”。数据通信连接器402可以只有一个属主。属主是唯一被允许写数据通信连接器的循环存储器阵列402的任务401。属主任务401控制属主指针502(或“写指针”),属主指针502标识出其中被写入数据的最后一个存储器段501。一个或多个软件任务401被标识为数据通信连接器402的“用户”。“用户”任务401或终端设备控制用户指针503(或“读指针”),用户指针503标识出了从其读取数据的循环存储器402内的最后一个存储器段501。在属主任务401将数据写入循环的存储器阵列402之前,先递增属主指针502,以便标识循环的存储器阵列402内的下一个连续的存储器段501。在用户任务401从循环的存储器阵列402读取数据之前,同样递增用户指针503,以便标识循环的存储器阵列402内要读取的下一个存储器段501。只在一个方向(如箭头504所示)上从循环的存储器阵列402读出数据和将数据写入循环的存储器阵列402。在美国专利No.5,625,845“System for Facilitating Continuous,Real-Time,Unidirectional,and Asynchronous lntertask and End-DeviceCommunication in a Multimedia Data Processing System Using OpenArchitecture Data Communication Modules”(“使用开放体系结构数据通信模块来促进多媒体数据处理系统内连续、实时、单向以及异步的任务间和终端设备通信的系统”)中揭示了与软件任务401的交互有关的数据通信连接器402的其他详细信息,该专利的全部内容在此引入作为参考。
如上所述,在本领域内存在促进位于DSP复合体内各单独DSP处理器核心中的软件任务之间的DSP间数据通信的需要。使用以下结合图6说明的体系结构,可以促进位于DSP复合体内各单独DSP处理器核心中的软件任务之间的DSP间数据通信。
图6:用于促进位于各单独DSP处理器核心中的软件任务之间的DSP间
数据通信的体系结构
图6例示了本发明的用于
促进位于各单独DSP处理器核心302中的软件 任务401之间的DSP间数据通信的体系结构的一个实施例。
参考图6,每个DSP处理器核心302(例如,DSP处理器核心302A-B)都包含循环缓冲区402。例如,DSP处理器核心302A包含驻留在其自己的本地存储器内的循环缓冲区402。DSP处理器核心302B也包含驻留在其自己的本地存储器内的循环缓冲区402。此外,DSP处理器核心302A可以包含属主任务601。包含属主任务(如上面所述)的DSP处理器核心302在这里可以称为“属主DSP处理器核心302”。包含在属主DSP处理器302内的循环缓冲区402在这里可以称为“源循环缓冲区402”。此外,DSP处理器核心302B可以包含用户任务602(如上面所述)。包含用户任务的DSP处理器核心302在这里可以称为“用户DSP处理器核心302”。包含在用户DSP处理器302内的循环缓冲区402在这里可以称为“目的循环缓冲区402”。要指出的是,任何DSP处理器核心302都可以是属主DSP处理器核心302,并且任何DSP处理器核心302都可以是用户DSP处理器核心302。还要指出的是,将DSP处理器核心302A指定为属主DSP处理器核心302和将DSP处理器核心302B指定为用户DSP处理器核心302只是出于示例目的。
属主任务601可以配置成使用写指针502(图5)来写入DSP处理器核心302A内的循环缓冲区402。属主任务601是一个软件任务401,其被表示为包含写指针502的数据结构。类似地,用户任务602可以配置成使用读指针503(图5)来读取DSP处理器核心302B内的循环缓冲区402。用户任务602是一个软件任务401,其被表示为包含读指针503的数据结构。
在美国专利No.5,625,845中所揭示的实施例中,用户任务602能够直接访问DSP处理器核心302A内的循环缓冲区402。然而,在包含位于各单独DSP处理器核心302内的软件任务401的实施例中,用户任务602不能直接访问位于属主DSP处理器核心302A内的循环缓冲区402。因此,用户DSP处理器核心302B需要包含一个驻留在其本地存储器内的第二映像循环缓冲区402,如图6所示。也就是说,用户DSP处理器核心302B需要包含一个是属主DSP处理器核心302A内的循环缓冲区402的映像的循环缓冲区402。要指出的是,在某些实施例中,属主和用户DSP处理器核心302A-B内的循环缓冲区402可以具有不同的大小。
来自属主DSP处理器核心302A的本地存储器的数据可以由DMA控制器204(图2和3)通过总线301(图3)使用各种协议来传送给用户DSP处理器核心302B的本地存储器,如下面还要结合图8-16所说明的。要指出的是,由DMA控制器204进行的数据传送在这里称为“DMA数据移动”。属主DSP处理器核心302A与用户DSP处理器核心302B之间的所有数据移动(图6只示出了一次数据移动)可以由一个数据结构来表示,该数据结构在这里称为“缓冲区描述符块”,如下面结合图7所说明的。缓冲区描述符块可以用来标识要从一个DSP处理器核心302移动的数据以及将该数据移动到另一个DSP处理器核心302内的哪个位置。数据移动的更为详细的描述将在下面结合图8-16进行说明。
图7:缓冲区描述符块
图7例示了本发明的缓冲区描述符块700的一个实施例。缓冲区描述符块700可以在其数据结构内包括一个存储源地址的登录项(由“S_addr”来标识),该登录项标识出了在系统或全局存储器地址空间(可以被看作所有DSP核心(和硬布线元件)的本地数据存储器308A-G的链接)内的一个全局地址。系统存储器映射内的全局地址可以与DSP处理器核心302的本地存储器内的一个地址对应。源地址标识出了将由DMA控制器204从一个DSP处理器核心302的本地存储器移动到另一个DSP处理器核心302的数据块的起始地址。
缓冲区描述符块700还可以包括一个存储目的地址的登录项(由“D_addr”来标识),该登录项标识出了DSP处理器核心302(例如,DSP处理器核心302B)内的一个本地地址。目的地址标识出了DSP处理器核心302(例如,DSP处理器核心302B)内的本地地址以便包含要移动的数据块。
缓冲区描述符块700还可以包括一个存储控制信息的登录项(由“CTL”来标识),该登录项包括与将由DMA控制器204移动的数据的字节数或字数的有关信息(由“COUNT”来标识)。所述控制信息还可以包括与属主DSP处理器核心302内的循环缓冲区402的存储器段501(图5)的数量有关的信息(由“MOD1”来标识),以及与用户DSP处理器核心302内的循环缓冲区402的存储器段501的数量有关的信息(由“MOD2”来标识)。由MOD1和MOD2提供的信息可以是很重要的,因为属主DSP处理器核心302内以及用户DSP处理器核心302内的循环缓冲区402可能具有不同的大小。在数据传送期间,DMA控制器204的硬件可以对全局源地址使用MOD1算法和对全局目的地址使用MOD2算法来得到源地址和目的地址。
缓冲区描述符块700还可以包括一个保留给将来使用的登录项。
缓冲区描述符700还可以包括一个称为“下一个缓冲区描述符地址区段(Next_BD_addr)”的登录项,该登录项包括一个指针,指向在将数据从一个DSP处理器核心302A传送给另一个DSP处理器核心302B中所使用的下一个缓冲区描述符块700。如果存在多次DMA数据移动,则可以将多个缓冲区描述符块700链接在一起,如下面结合图16所说明的那样。
图16:链接缓冲区描述符块的流程图
图16例示了本发明的用于在多次DMA数据移动期间链接诸缓冲区描述符块700的方法1600的一个实施例。结合图1-7来参考图16,在步骤1601,DMA控制器204从DSP处理器核心302(例如,DSP处理器核心302A)接收请求,以便开始将数据从一个DSP处理器核心302(例如,DSP处理器核心302A)传送给另一个DSP处理器核心302(例如,DSP处理器核心302B)的周期。周期(例如30μs)可以指根据在过去的时间间隔(例如30μs)内生成的所有新数据,用来完成整个DSP复合体内所涉及的所有数据移动的最大允许时间长度。该时间间隔在这里可以称为系统“心跳(heart beat)”。在一个实施例中,所述心跳可以从不改变并且可以在每个周期(例如30μs)有系统地循环,而与DSP复合体203内已经生成多少数据(可以是零数据)无关。
在步骤1602,DMA控制器204读取在这里称为“DMA控制器描述符块”的数据结构,以便得到指向缓冲区描述符块700的指针。所述DMA控制器描述符块可以指用来存储将由DMA控制器204使用的信息的数据结构。
在步骤1603,DMA控制器204读取由在步骤1602得到的指针标识的缓冲区描述符块700。
在步骤1604,DMA控制器204使用从在步骤1603读取的缓冲区描述符700得到的信息来启动DMA数据传送。不同类型的DMA数据传送的更为详细的描述将在下面结合图8-15进行说明。
在步骤1605,DMA控制器204判定是否存在链接到所读取的前一个缓冲区描述符块700的缓冲区描述符块700。在一个实施例中,DMA控制器204可以通过读取缓冲区描述符块700内的下一个缓冲区描述符地址区段来判定是否存在链接的缓冲区描述符块700。
如果在步骤1601接收到的请求内没有涉及另一次DMA数据传送,则缓冲区描述符块700内标识下一个缓冲区描述符块700的地址的登录项将为空。DMA控制器204然后可以等待,直到其在步骤1601从DSP处理器核心302(例如,DSP处理器核心302A)接收到另一个请求,以便开始另一个周期的传送DSP复合体203内要被移动的数据。例如,DMA控制器204,在要执行其数据移动之一时,可以将数据从一个DSP处理器核心302(例如,DSP处理器核心302A)传送到另一个DSP处理器核心302(例如,DSP处理器核心302B)。
如果在缓冲区描述符块700的下一个缓冲区描述符地址区段内存在指向另一个缓冲区描述符块700的指针,则在步骤1606,DMA控制器204读取由从所述下一个缓冲区描述符地址得到的指针来标识的所链接的缓冲区描述符块700。在步骤1607,DMA控制器204使用从在步骤1606读取的缓冲区描述符块700得到的信息来启动另一次DMA数据传送。然后,在步骤1605,DMA控制器204判定是否存在链接到所读取的前一个缓冲区描述符块700的缓冲区描述符块700。
要指出的是,方法1600可以包括为了清晰起见而没有示出的其他和/或附加的步骤。还要指出的是,方法1600可以以与所给出的次序不同的次序执行,并且在图16的讨论中所给出的次序只是示例性的。还要指出的是,方法1600中的某些步骤可以用基本上同时的方式执行。
如上所述,如果存在多次DMA数据移动,则可以将缓冲区描述符块700链接在一起。可以出现多次DMA数据移动,如下面在标准化的通信协议的讨论中所例示的。每个DMA数据移动请求可能需要一对链接在一起的DMA移动。一种DMA数据移动可以是指将数据从属主DSP处理器核心302的本地存储器移动到用户DSP处理器核心302的本地存储器。另一种DMA数据移动可以是指将指针的副本从属主/用户DSP处理器核心302的本地存储器移动到用户/属主DSP处理器核心302的本地存储器。
在一个实施例中,在软件任务之间传送数据涉及四种标准通信协议。这四种类型的通信协议为:同步协议、属主数据驱动协议、用户数据驱动协议以及安全数据驱动协议。每种协议的概要情况如下。
在同步协议中,属主任务以恒定速率写循环缓冲区,并且用户任务以相同的速率读数据。两个任务可以开环运行,而不检查缓冲区的空/满状况。两个任务由程序设计来保证以相同的速率生成和消耗数据。对于同步协议来说,初始同步写、读指针超出了本公开的范围,但是通过创建附加的中间任务(其使用属主、用户以及安全数据驱动协议通过总线301在诸DSP处理器核心302之间安全地移动数据),可以有助于初始同步。此外,两个任务都不知道另一个任务的指针(例如读/写指针)的位置。
在属主数据驱动协议中,属主任务以其自己的速率写循环缓冲区。用户任务被预期为跟上属主任务并消耗所有产生的数据。属主任务开环运行,而用户任务负有检查空/满缓冲区状况的责任。它们由程序设计来保证以相同的速率生成和消耗数据。写、读指针的初始同步可以通过将读指针设置为等于写指针(表示空缓冲区状况)来实现。
在用户数据驱动协议中,用户任务以其自己的速率读循环缓冲区。属主任务被预期为与用户任务的速率匹配,并始终在循环缓冲区内保持足够的数据。属主任务知道用户任务的指针的位置并负责检查空/满缓冲区状况。
在安全数据驱动协议中,属主和用户任务都主动地防止指针溢出。属主和用户任务都知道另一个任务的指针的位置。如果循环缓冲区已满,则属主任务不会将数据写入循环缓冲区,而如果循环缓冲区为空,则用户任务不会从循环缓冲区读取数据。
在美国专利No.5,625,845“System for Facilitating Continuous,Real-Time,Unidirectional,and Asynchronous lntertask andEnd-Device Communcation in a Multimedia Data Processing SystemUsing Open Architecture Data Communication Modules”(“使用开放体系结构数据通信模块来促进多媒体数据处理系统内连续、实时、单向以及异步的任务间和终端设备通信的系统”)中揭示了与这四种标准通信协议有关的其他详细信息,该专利的全部内容在此引入作为参考。与所述促进位于各单独DSP处理器核心302内的软件任务401之间的DSP间数据通信的体系结构结合使用的四种标准通信协议中的三种(属主数据驱动协议、用户数据驱动协议以及安全数据驱动协议)下面将结合图8-15进行说明。图8-10例示了促进属主数据驱动协议的DSP间数据通信。图11-13例示了促进用户数据驱动协议的DSP间数据通信。图14-15例示了促进安全数据驱动协议的DSP间数据通信。
图8:促进属主数据驱动协议的DSP间数据通信的体系结构
图8例示了本发明的促进属主数据驱动协议的DSP间数据通信的体系结构的一个实施例。
参考图8,属主DSP处理器核心302(例如,DSP处理器核心302A)内的属主任务601可以在其数据结构内包含存储写指针502(图5)的地址的登录项以及存储写指针502的地址的最新副本的登录项(由“WPS_U”来表示)。如上所述,属主和用户DSP处理器核心302可以包含不同的模缓冲区大小(modulo buffer size),因此可能必须转换WPS_U值以便指向用户DSP处理器核心302内的适当地址。此转换后的地址可以存储在属主任务601内表示为WPD_UA或WPD_UB的任一登录项内。
用户DSP处理器核心302(例如,DSP处理器核心302B)内的用户任务602可以在其数据结构内包含存储读指针503(图5)的地址的登录项。用户任务602还可以在其数据结构内包含存储其循环缓冲区402的大小的指示的登录项(由“Mod大小”来表示)。用户任务602还可以在其数据结构内包含一个登录项(由“WPF”来表示),该登录项存储与用户DSP处理器核心302在一段时间内读取的最大字数有关的指示。用户任务602还可以在其数据结构内包含存储写指针的地址的登录项(由“WP的地址”来表示)。用户任务602还可以在其数据结构内包含一个登录项(由“WPD_U”来表示),该登录项存储使用DMA控制器204从属主任务601接收到的来自属主任务601内的位置WPD_UA或WPD_UB的写指针的实际副本。所述特定的登录项,WPD_UA或WPD_UB,可以由DMA控制器204根据一个在这里称为“ABflag”的标志的状态来选择,如下面还要详细说明的那样。
在属主数据驱动协议中,有两种DMA数据移动,如下面结合图9所说明的。
图9:用于促进属主数据驱动协议的DSP间数据通信的方法
图9为本发明的用于促进属主数据驱动协议的DSP间通信的方法900的一个实施例的流程图。
结合图1-8来参考图9,在步骤901,DMA控制器204从DSP处理器核心302(例如,DSP处理器核心302A)接收请求,以便开始将数据从一个DSP处理器核心302(例如,DSP处理器核心302A)传送给另一个DSP处理器核心302(例如,DSP处理器核心302B)的周期。周期(例如30μs)可以指用来完成数据移动(在来自DSP处理器核心的单个请求内涉及)的传送的时间长度。
在步骤902,DMA控制器204读取在这里称为“DMA控制器描述符块”的数据结构,以便得到指向缓冲区描述符块700的指针。所述DMA控制器描述符块可以指用来存储由DMA控制器204所使用的信息的数据结构。
在上述示例性的实施例中,除了在第一DSP处理器核心的数据存储器308内发现的第一缓冲区描述符700(其开始缓冲区描述符700的链)以外,步骤901和902可以不执行。通常,由于DMA控制器204装入缓冲区描述符700(其列出了将在给定的系统心跳内执行的多次DMA传送)的链接列表,过程会在步骤903开始。
在步骤903,DMA控制器204读取由在步骤902得到的指针所标识的缓冲区描述符块700。如上所述,缓冲区描述符块700可以在由“S_addr”标识的登录项内包含一个源地址,该源地址用来标识系统存储器地址空间内的一个全局地址。该源地址与属主DSP处理器核心302(例如,DSP处理器核心302A)的本地存储器内的一个本地地址对应。具体地说,该源地址对应于循环缓冲区402的存储器段501内的这样的本地地址,所述本地地址在由写指针502标识的存储器段501之后为特定字节数或字数(如由登录项COUNT标识的)。缓冲区描述符块700还可以在由“COUNT”标识的登录项内包含与存储器块的长度(即数据的字节数或字数)有关的信息。缓冲区描述符块700还可以在由“D_addr”标识的登录项内包含用来标识用户DSP处理器核心302(例如,DSP处理器核心302B)内的本地地址的目的地址。
在步骤904,DMA控制器204启动第一DMA传送,将数据从属主DSP处理器核心302的循环缓冲区402内的源地址移动到用户DSP处理器核心302的循环缓冲区402内的目的地址。传送的大小对应于在步骤903读取的缓冲区描述符块700内的COUNT登录项内指出的字节数。
在步骤905,DMA控制器204从在步骤903读取的缓冲区描述符块700得到一个指针,以便标识第二缓冲区描述符块700。如上所述,如果在步骤901接收到的请求中涉及另一次DMA数据传送,则缓冲区描述符块700可以包含一个存储指针的登录项,该指针指向另一个缓冲区描述符块700。如果在步骤901接收到的请求内没有涉及另一次DMA数据传送,则在缓冲区描述符块700内标识下一个缓冲区描述符块700的地址的登录项将为空。DMA控制器204然后可以等待,直到它从DSP处理器核心(例如,DSP处理器核心302A)接收到另一个请求,以便开始另一个周期的将数据从一个DSP处理器核心302(例如,DSP处理器核心302A)传送给另一个DSP处理器核心302(例如,DSP处理器核心302B)。
在步骤906,DMA控制器204读取在步骤905所标识的缓冲区描述符块700。如上所述,缓冲区描述符块700可以在由“S_addr”标识的登录项内包含一个用来标识系统存储器地址空间内的全局地址的源地址。该源地址与DSP处理器核心302(例如,DSP处理器核心302A)的本地存储器内的一个本地地址对应。例如,该源地址与属主DSP处理器核心302的本地存储器内的一个本地地址对应。具体地说,根据ABflag状态,该源地址与属主DSP处理器核心302的本地存储器内的可以是WPD_UA或WPD_UB的本地地址对应。缓冲区描述符块700还可以在由“D_addr”标识的登录项内包含一个目的地址,用来标识用户DSP地址为WPD_U的用户DSP处理器核心302(例如,DSP处理器核心302B)内的一个本地地址。
在步骤907,DMA控制器204启动第二DMA传送,将WPD_UA或WPD_UB数据的当前内容从属主DSP处理器核心302的源地址(与属主DSP处理器核心302的本地存储器内的可以是WPD_UA或WPD_UB的本地地址对应)移动到用户DSP处理器核心302的目的地址(与用户DSP处理器核心302的本地存储器内存储写指针502的本地地址对应)。要指出的是,在一个给定的心跳内,在DMA控制器204要访问WPD_UA或WPD_UB中的一个值的情况下,后台任务(如下面结合图10A和10B所说明的那样)就写另一个值。例如,如果在同一个心跳窗口内,DMA控制器204要读WPD_UB,后台任务就写WPD_UA。类似地,如果在同一个心跳窗口内,DMA控制器204要读WPD_UA,后台任务就写WPD_UB。在一个实施例中,一个在这里称为“ABflag”的标志在0和1之间切换,后台任务可以使用该标志来保证同步,以使后台任务不会尝试写同一个心跳内DMA控制器204要访问的同一个WPD_U值。
要指出的是,方法900可以包括为了清晰起见而没有示出的其他和/或附加的步骤。还要指出的是,方法900可以以与所给出的次序不同的次序执行,并且在图9的讨论中所给出的次序只是示例性的。还要指出的是,方法900中的某些步骤可以用基本上同时的方式执行。
在属主数据驱动协议期间,在属主DSP处理器核心302内可以出现一个后台过程,如下面结合图10A和10B所述。
图10A和10B:在属主数据驱动协议中属主DSP处理器核心内的后台过
程的流程图
图10A和10B为本发明的在属主数据驱动协议中属主DSP处理器核心302(例如,DSP处理器核心302A)内的后台过程的方法1000的一个实施例的流程图。
结合图1-8来参考图10A和10B,在步骤1001,后台过程读取WPS_U(其保存为了上一个DMA传送而捕获的本地写指针的最后副本)的内容。在步骤1002,后台过程通过使用源循环缓冲区402的大小的模向WPS_U添加偏移量(在存储16比特并且地址是字节地址的情况下,偏移量可以等于为“1”的值或为“2”的值)来生成本地源地址。
在步骤1003,后台过程读取存储为了上一个DMA传送而捕获的写指针的WPD_UA或WPD_UB(根据ABflag的状态)的内容。在步骤1004,后台过程通过使用目的循环缓冲区402的大小的模向WPD_UA或WPD_UB(由后台过程在步骤1003选择的登录项)添加偏移量(在存储16比特并且地址是字节地址的情况下,偏移量可以等于为“1”的值或为“2”的值)来生成本地目的地址。
在步骤1005,后台过程将本地源地址和本地目的地址分别映射到一个全局源地址和一个全局目的地址。
在步骤1006,后台过程捕获本地写指针502的当前副本并将其存储在一个在这里称为“CLWP”的临时变量内。
在步骤1007,后台过程使用基于源循环缓冲区402的大小的模算法来计算计数区段,所述计数区段等于存储在CLWP和WPS_U内的值之间的差。所述计数区段可以等于从上一次DMA传送插入源循环缓冲区402的字节数或字数。
在步骤1008,后台过程使用基于目的循环缓冲区402的大小的模算法将计算出的计数添加到WPD_UA或WPD_UB变量(根据ABflag的状态)。在步骤1009,后台过程根据它读取的是WPD_UA还是WPD_UB将从步骤1008得到的结果相应地写入WPD_UA或WPD_UB。应指出的是,在任何任意的时间,DMA控制器204可以正在访问WPD_UA或者WPD_UB。如上所述,可以用一个在这里称为“Abflag”的标志来保证后台过程不会写与DMA控制器204的位置相同的位置,从而避免了冲突。
在步骤1010,后台过程将CLWP值插入下一次DSP间通信中在步骤1001要使用的WPS_U中。
在步骤1011,后台过程生成一个新的缓冲区描述符块700,它包括生成的全局源地址和目的地址以及所计算的计数区段。
在步骤1012,后台过程从最近的活动缓冲区描述符块700读出指向下一个缓冲区描述符块的指针的地址。在步骤1013,后台过程将在步骤1012读出的缓冲区描述符指针写入在步骤1011生成的缓冲区描述符块700内的下一个缓冲区描述符的地址。
在步骤1014,后台任务编辑来自所述最近的活动缓冲区描述符块700的所述下一个缓冲区描述符块,以便指向在步骤1011构建的缓冲区描述符块700。
在步骤1015,后台任务创建一个新的缓冲区描述符块700,其将使用在以后的步骤生成的参数来填充。
在步骤1016,后台任务将本地源地址(WPD_UA或WPD_UB,取决于ABflag)映射到一个全局源地址(其可以被写入在步骤1015创建的缓冲区描述符块700)。在步骤1017,后台任务初始化在步骤1015创建的缓冲区描述符块700的计数区段,例如将计数区段初始化为1。在步骤1018,后台任务将WPD_U的本地目的地址映射到一个全局目的地址。
在步骤1019,后台任务从最近的活动缓冲区描述符块700读出指向下一个缓冲区描述符块的指针的地址。在步骤1020,后台过程将在步骤1019读出的缓冲区描述符指针写入在步骤1015生成的缓冲区描述符块700内的下一个缓冲区描述符的地址。
在步骤1021,后台任务编辑来自最近的活动缓冲区描述符块700的下一个缓冲区描述符块,以便指向在步骤1015构建的缓冲区描述符块700。
要指出的是,方法1000可以包括为了清晰起见而没有示出的其他和/或附加的步骤。还要指出的是,方法1000可以以与所给出的次序不同的次序执行,并且在图10A和10B的讨论中所给出的次序只是示例性的。还要指出的是,方法1000中的某些步骤可以用基本上同时的方式执行。
下面结合图11提供了促进用户数据驱动协议的DSP间数据通信的体系结构。
图11:促进用户数据驱动协议的DSP间数据通信的体系结构
图11例示了本发明的用于促进用户数据驱动协议的DSP间数据通信的体系结构的一个实施例。
参考图11,属主DSP处理器核心302(例如,DSP处理器核心302A)内的属主任务601可以在其数据结构内包含一个存储写指针502(图5)的地址的登录项。属主任务601还可以在其数据结构内包含一个存储其循环缓冲区402的大小的指示的登录项(由“Mod大小”来标识)。属主任务601还可以在其数据结构内包含一个存储与属主DSP处理器核心302在一段时间内写入的最大字数有关的指示的登录项(由“WPF”来标识)。属主任务601还可以在其数据结构内包含一个存储读指针503(图5)的地址的登录项(由“RP的地址”来标识)。属主任务601还可以在其数据结构内包含一个存储由DMA控制器204从用户DSP处理器核心302内的登录项RPS_OA或RPS_OB(下面还要说明)取出的读指针503的最新副本的登录项(由“RPS_O”来标识)。所述特定的登录项,RPS_OA或RPS_OB,可以由DMA控制器204根据一个在这里称为“ABflag”的标志的状态来选择,如下面还要详细说明的那样。
用户DSP处理器核心302(例如,DSP处理器核心302B)内的用户任务602可以在其数据结构内包含存储读指针503的地址的登录项。读指针503的副本可以存储在用户任务602的数据结构内标为“RPD_O”的登录项中。如上所述,属主和用户DSP处理器核心302可以包含不同的模缓冲区大小,因此可能必须转换RPD_O以便指向属主DSP处理器核心302内的适当地址。此转换后的地址可以存储在用户任务602内表示为RPS_OA或RPS_OB的任一登录项内。
在用户数据驱动协议中,有两种DMA数据移动,如下面结合图12所说明的。
图12:促进用户数据驱动协议的DSP间数据通信的方法
图12为本发明的用于促进用户数据驱动协议的DSP间通信的方法1200的一个实施例的流程图。
结合图1-7和11来参考图12,在步骤1201,DMA控制器204从DSP处理器核心302(例如,DSP处理器核心302A)接收请求,以便开始将数据从一个DSP处理器核心302(例如,DSP处理器核心302A)传送给另一个DSP处理器核心302(例如,DSP处理器核心302B)的周期。周期(例如30μs)可以指用来完成数据移动(在来自DSP处理器核心的单个请求内涉及)的传送的时间长度。
在步骤1202,DMA控制器204读取在这里称为“DMA控制器描述符块”的数据结构,以便得到指向缓冲区描述符块700的指针。所述DMA控制器描述符块可以指用来存储描述DMA控制器204的信息的数据结构。
在步骤1203,DMA控制器204读取由在步骤1202得到的指针标识的缓冲区描述符块700。如上所述,缓冲区描述符块700可以在标为“S_addr”的登录项内包含一个源地址,该源地址用来标识系统存储器地址空间内的一个全局地址。该源地址与属主DSP处理器核心302(例如,DSP处理器核心302A)的本地存储器内的一个本地地址对应。具体地说,该源地址对应于循环缓冲区402的存储器段501内的这样的本地地址,所述本地地址在由写指针502标识的存储器段501之后为某一字节数或字数(如由登录项COUNT标识的)。缓冲区描述符块700还可以在由“COUNT””标识的登录项内包含与存储器块的长度(即数据的字节数或字数)有关的信息。缓冲区描述符块700还可以在由“D_addr”标识的登录项内包含用来标识用户DSP处理器核心302(例如,DSP处理器核心302B)内的本地地址的目的地址。
在步骤1204,DMA控制器204启动第一DMA传送,将数据从属主DSP处理器核心302的循环缓冲区402内的源地址移动到用户DSP处理器核心302的循环缓冲区402内的目的地址。传送的大小对应于在步骤1203读取的缓冲区描述符块700内的COUNT登录项内所指出的字节数。
在步骤1205,DMA控制器204从在步骤1203读取的缓冲区描述符块700得到一个指针,以便标识第二缓冲区描述符块700。如上所述,如果在步骤1201接收到的请求中涉及另一次DMA数据传送,则缓冲区描述符块700可以包含一个存储指针的登录项,该指针指向另一个缓冲区描述符块700。如果在步骤1201接收到的请求内没有涉及另一次DMA数据传送,则在缓冲区描述符块700内标识下一个缓冲区描述符块700的地址的登录项将为空。DMA控制器204然后可以等待,直到它从DSP处理器核心(例如,DSP处理器核心302A)接收到另一个请求,以便开始另一个周期的将数据从一个DSP处理器核心302(例如,DSP处理器核心302A)传送给另一个DSP处理器核心302(例如,DSP处理器核心302B)。
在步骤1206,DMA控制器204读取在步骤1205标识的缓冲区描述符块700。如上所述,缓冲区描述符块700可以在标为“S_addr”的登录项内包含一个用来标识系统存储器地址空间内的一个全局地址的源地址。该源地址与用户DSP处理器核心302(例如,DSP处理器核心302B)的本地存储器内的一个本地地址对应。具体地说,根据Abflag状态,该源地址与用户DSP处理器核心302的本地存储器内的可以是RPS_OA或RPS_OB的本地地址对应。缓冲区描述符块700还可以在标为“D_addr”的登录项内包含一个目的地址,用来标识属主DSP地址为RPS_O的属主DSP处理器核心302(例如,DSP处理器核心302A)内的一个本地地址。
在步骤1207,DMA控制器204启动第二DMA传送,将RPS_OA或RPS_OB数据的当前内容从用户DSP处理器核心302的源地址(与用户DSP处理器核心302的本地存储器内的可以是RPS_OA或RPS_OB的本地地址对应)移动到属主DSP处理器核心302的目的地址(与属主DSP处理器核心302的本地存储器内存储读指针503的本地地址对应)。要指出的是,在一个给定的心跳内,在DMA控制器204要访问RPS_OA或RPS_OB中的一个值的情况下,后台任务(如下面结合图13A和13B所说明的那样)就写另一个值。例如,如果在同一个心跳窗口内,DMA控制器204要读RPS_OB,后台任务就写RPS_OA。类似地,如果在同一个心跳窗口内,DMA控制器204要读RPS_OA,后台任务就写RPS_OB。在一个实施例中,一个在这里称为“ABflag”的标志在0和1之间切换,后台任务可以使用该标志来保证同步,以使后台任务不会尝试写同一个心跳内DMA控制器204要访问的同一个RPS_O值。
要指出的是,方法1200可以包括为了清晰起见而没有示出的其他和/或附加的步骤。还要指出的是,方法1200可以以与所给出的次序不同的次序执行,并且在图12的讨论中所给出的次序只是示例性的。还要指出的是,方法1200中的某些步骤可以用基本上同时的方式执行。
在用户数据驱动协议期间,在用户DSP处理器核心302内可以出现一个后台过程,如下面结合图13A和13B所述。
图13A和13B:在用户数据驱动协议中用户DSP处理器核心内的后台过
程的流程图
图13A和13B为本发明的在用户数据驱动协议中用户DSP处理器核心302(例如,DSP处理器核心302B)内的后台过程的方法1300的一个实施例的流程图。
结合图1-7和11-12来参考图13A和13B,在步骤1301,后台过程读取RPD_O(其保存为了上一个DMA传送而捕获的读指针503的本地地址的最新副本)的内容。在步骤1302,后台过程通过使用目的循环缓冲区402的大小的模向RPD_O添加偏移量(在存储16比特并且地址是字节地址的情况下,偏移量可以等于为“1”的值或为“2”的值)来生成本地目的地址。
在步骤1303,后台过程读取存储为了上一个DMA传送而捕获的读指针的RPS_OA或RPS_OB(根据ABflag的状态)的内容。在步骤1304,后台过程通过使用源循环缓冲区402的大小的模向RPS_OA或RPS_OB(由后台过程在步骤1303选择的登录项)添加偏移量(在存储16比特并且地址是字节地址的情况下,偏移量可以等于为“1”的值或为“2”的值)来生成本地源地址。
在步骤1305,后台过程将本地源地址和本地目的地址分别映射到一个全局源地址和一个全局目的地址。
在步骤1306,后台过程捕获读指针503的本地地址的当前副本并将其存储在一个在这里称为“CLRP”的临时变量内。
在步骤1307,后台过程使用基于目的循环缓冲区402的大小的模算法来计算计数区段,所述计数区段等于存储在CLRP和RPD_O内的值之间的差。所述计数区段可以等于从上一次DMA传送插入目的循环缓冲区402的字节数或字数。
在步骤1308,后台过程使用基于源循环缓冲区402的大小的模算法将计算出的计数添加到RPS_OA或RPS_OB变量(根据ABflag的状态)。在步骤1309,后台过程根据它读取的是RPS_OA还是RPS_OB将从步骤1308得到的结果相应地写入RPS_OA或RPS_OB。应指出的是,在任何任意的时间,DMA控制器204可以正在访问RPS_OA或RPS_OB。如上所述,可用一个在这里称为“ABflag”的标志来保证后台过程不会写与DMA控制器204的位置相同的位置,从而避免了冲突。
在步骤1310,后台过程将CLRP值插入下一次DSP间通信中在步骤1301要使用的RPD_O中。
在步骤1311,后台过程生成一个新的缓冲区描述符块700,它包括所生成的全局源地址和目的地址以及所计算的计数区段。
在步骤1312,后台过程从最近的活动缓冲区描述符块700读出指向下一个缓冲区描述符块的指针的地址。在步骤1313,后台过程将在步骤1312读出的缓冲描述符指针写入在步骤1311生成的缓冲区描述符块700内的下一个缓冲描述符的地址。
在步骤1314,后台任务编辑来自所述最近的活动缓冲区描述符块700的所述下一个缓冲区描述符块,以便指向在步骤1311构建的缓冲区描述符块700。
在步骤1315,后台任务创建一个缓冲区描述符块700,其将使用在以后的步骤生成的参数来填充。
在步骤1316,后台任务将本地源地址(RPS_OA或RPS_OB,取决于ABflag)映射到一个全局源地址(其可以被写入在步骤1315创建的缓冲区描述符)。在步骤1317,后台任务初始化在步骤1315创建的缓冲区描述符块700内的计数区段,例如将计数区段初始化为1。在步骤1318,将RPS_O的本地目的地址映射到一个全局目的地址。
在步骤1319,后台任务从最近的活动缓冲区描述符块700读出指向下一个缓冲区描述符块的指针的地址。在步骤1320,后台过程将在步骤1319读出的缓冲区描述符指针写入在步骤1315生成的缓冲区描述符块700内的下一个缓冲区描述符的地址。
在步骤1321,后台任务编辑来自最近的活动缓冲区描述符块700的下一个缓冲区描述符块,以便指向在步骤1315构建的缓冲区描述符块700。
要指出的是,方法1300可以包括为了清晰起见而没有示出的其他和/或附加的步骤。还要指出的是,方法1300可以以与所给出的次序不同的次序执行,并且在图13A和13B的讨论中所给出的次序只是示例性的。还要指出的是,方法1300中的某些步骤可以用基本上同时的方式执行。
下面结合图14提供了促进安全数据驱动协议的DSP间数据通信的体系结构。
图14:促进安全数据驱动协议的DSP间数据通信的体系结构
图14例示了本发明的促进安全数据驱动协议的DSP间数据通信的体系结构的一个实施例。
参考图14,属主DSP处理器核心302(例如,DSP处理器核心302A)内的属主任务601可以在其数据结构内包含一个存储写指针502(图5)的地址的登录项。属主任务601还可以在其数据结构内包含一个存储其循环缓冲区402的大小的指示的登录项(由“Mod大小”来标识)。属主任务601还可以在其数据结构内包含一个存储与属主DSP处理器核心302在一段时间内写入的最大字数有关的指示的登录项(由“WPF”来标识)。属主任务601还可以在其数据结构内包含一个存储读指针503(图5)的地址的登录项(由“RP的地址”来标识)。属主任务601还可以在其数据结构内包含一个存储由DMA控制器204从用户DSP处理器核心302内的登录项RPS_OA或RPS_OB(下面还要说明)取出的读指针503的地址的最新副本的登录项(由“RPS_O”来标识)。所述特定的登录项,RPS_OA或RPS_OB,可以由DMA控制器204根据一个在这里称为“ABflag”的标志的状态来选择。属主DSP处理器核心302(例如,DSP处理器核心302A)内的属主任务601还可以在其数据结构内包含一个存储写指针502(图5)的地址的登录项和一个存储写指针502的地址的最新副本的登录项(由“WPS_U”来标识)。如上所述,属主和用户DSP处理器核心302可以包含不同的模缓冲区大小,因此可能必须转换WPS_U值以便指向属主DSP处理器核心302内的适当地址。此转换后的地址可以存储在用户任务601内表示为WPD_UA或WPD_UB的任一登录项内。
用户DSP处理器核心302(例如,DSP处理器核心302B)内的用户任务602可以在其数据结构内包含一个存储读指针503(图5)的地址的登录项。用户任务602还可以在其数据结构内包含一个存储其循环缓冲区402的大小的指示的登录项(由“Mod大小”来标识)。用户任务602还可以在其数据结构内包含一个存储与用户DSP处理器核心302在一段时间内读出的最大字数有关的指示的登录项(由“WPF”来标识)。用户任务602还可以在其数据结构内包含一个存储写指针的地址的登录项(由“WP的地址”来标识)。用户任务602还可以在其数据结构内包含一个存储从DMA控制器204接收到的登录项WPD_UA或WPD_UB内的写指针的地址的登录项(由“WPD_U”来标识)。所述特定的登录项,WPD_UA或WPD_UB,可以由DMA控制器204根据一个在这里称为“AB′flag”的标志的状态来选择。用户DSP处理器核心302(例如,DSP处理器核心302B)内的用户任务602还可以在其数据结构内包含一个存储读指针503的登录项。读指针503的副本可以存储在用户任务602的数据结构内标为“RPD_O”的登录项内。如上所述,属主和用户DSP处理器核心302可以包含不同的模缓冲区大小,因此可能必须转换RPD_O以便指向属主DSP处理器核心302内的适当地址。此转换后的地址可以存储在用户任务602内表示为RPS_OA或RPS_OB的任一登录项内。
在安全数据驱动协议中,有三种DMA数据移动,如下面结合图15所说明的。
图15:用于促进安全数据驱动协议的DSP间数据通信的方法
图15为本发明的用于促进安全数据驱动协议的DSP间通信的方法1500的一个实施例的流程图。
结合图1-7和14来参考图15,在步骤1501,DMA控制器204从DSP处理器核心302(例如,DSP处理器核心302A)接收请求,以便开始将数据从一个DSP处理器核心302(例如,DSP处理器核心302A)传送给另一个DSP处理器核心302(例如,DSP处理器核心302B)的周期。周期(例如30μs)可以指用来完成数据移动(在来自DSP处理器核心的单个请求内涉及)的传送的时间长度。
在步骤1502,DMA控制器204读取在这里称为“DMA控制器描述符块”的数据结构,以便得到指向缓冲区描述符块700的指针。所述DMA控制器描述符块可以指用来存储描述DMA控制器204的信息的数据结构。
在步骤1503,DMA控制器204读取由在步骤1502得到的指针标识的缓冲区描述符块700。如上所述,缓冲区描述符块700可以在标为“S_addr”的登录项内包含一个源地址,所述源地址用来标识系统存储器地址空间内的一个全局地址。该源地址与属主DSP处理器核心302(例如,DSP处理器核心302A)的本地存储器内的一个本地地址对应。具体地说,该源地址对应于循环缓冲区402的存储器段501内的这样的本地地址,所述本地地址在由写指针502标识的存储器段501之后为某一字节数或字数(如由登录项COUNT标识的)。缓冲区描述符块700还可以在由“COUNT”标识的登录项内包含与存储器块的长度(即数据的字节数或字数)有关的信息。缓冲区描述符块700还可以在由“D_addr”标识的登录项内包含用来标识用户DSP处理器核心302(例如,DSP处理器核心302B)内的本地地址的目的地址。
在步骤1504,DMA控制器204启动第一DMA传送,将数据从属主DSP处理器核心302的循环缓冲区402内的源地址移动到用户DSP处理器核心302的循环缓冲区402内的目的地址。传送的大小对应于在步骤1503读取的缓冲区描述符块700内的COUNT登录项内所指出的字节数。
在步骤1505,DMA控制器204从在步骤1503读取的缓冲区描述符块700得到一个指针,以便标识第二缓冲区描述符块700。如上所述,如果在步骤1501接收到的请求中涉及另一次DMA数据传送,则缓冲区描述符块700可以包含一个存储指针的登录项,该指针指向另一个缓冲区描述符块700。如果在步骤1501接收到的请求内没有涉及另一次DMA数据传送,则在缓冲区描述符块700内标识下一个缓冲区描述符块700的地址的登录项将为空。DMA控制器204然后可以等待,直到它从DSP处理器核心(例如,DSP处理器核心302A)接收到另一个请求,以便开始另一个周期的将数据从一个DSP处理器核心302(例如,DSP处理器核心302A)传送给另一个DSP处理器核心302(例如,DSP处理器核心302B)。
在步骤1506,DMA控制器204读取在步骤1505标识的缓冲区描述符块700。如上所述,缓冲区描述符块700可以在标为“S_addr”的登录项内包含一个用来标识系统存储器地址空间内的一个全局地址的源地址。该源地址与用户DSP处理器核心302(例如,DSP处理器核心302B)的本地存储器内的一个本地地址对应。例如,该源地址与用户DSP处理器核心302的本地存储器内的本地地址对应。具体地说,根据Abflag状态,该源地址与用户DSP处理器核心302的本地存储器内的可以是RPS_OA或RPS_OB的本地地址对应。缓冲区描述符块700还可以在标为“D_addr”的登录项内包含一个目的地址,用来标识属主DSP地址为RPS_O的DSP处理器核心302(例如,属主DSP处理器核心302A)内的一个本地地址。
在步骤1507,DMA控制器204启动第二DMA传送,将RPS_OA或RPS_OB数据的当前内容从用户DSP处理器核心302的源地址(与用户DSP处理器核心302的本地存储器内的可以是RPS_OA或RPS_OB的本地地址对应)移动到属主DSP处理器核心302的目的地址(与属主DSP处理器核心302的本地存储器内存储读指针503的本地地址对应)。要指出的是,在一个给定的心跳内,在DMA控制器204要访问RPS_OA或RPS_OB中的一个值的情况下,后台任务(如上面结合图13A和13B所说明的那样)就写另一个值。例如,如果在同一个心跳窗口内,DMA控制器204要读RPS_OB,后台任务就写RPS_OA。类似地,如果在同一个心跳窗口内,DMA控制器204要读RPS_OA,后台任务就写RPS_OB。在一个实施例中,一个在这里称为“ABflag”的标志在0和1之间切换,后台任务可以使用该标志来保证同步,以使后台任务不会尝试写DMA控制器204在同一个心跳内要访问的同一个RPS_O值。
在步骤1508,DMA控制器204从在步骤1506读出的缓冲区描述符块700得到一个指针,以便标识第三缓冲区描述符块700。如上所述,如果在步骤1501接收到的请求中涉及另一次DMA数据传送,则缓冲区描述符块700可以包含一个存储指针的登录项,该指针指向另一个缓冲区描述符块700。如果在步骤1501接收到的请求内没有涉及另一次DMA数据传送,则在缓冲区描述符块700内标识下一个缓冲区描述符块700的地址的登录项将为空。DMA控制器204然后可以等待,直到它从DSP处理器核心(例如,DSP处理器核心302A)接收到另一个请求,以便开始另一个周期的将数据从一个DSP处理器核心302(例如,DSP处理器核心302A)传送给另一个DSP处理器核心302(例如,DSP处理器核心302B)。
在步骤1509,DMA控制器204读取在步骤1508标识的缓冲区描述符块700。如上所述,缓冲区描述符块700可以在标为“S_addr”的登录项内包含一个用来标识系统存储器地址空间内的一个全局地址的源地址。该源地址与属主DSP处理器核心302(例如,DSP处理器核心302A)的本地存储器内的一个本地地址对应。例如,该源地址与属主DSP处理器核心302的本地存储器内的本地地址对应。具体地说,根据Abflag状态,该源地址与属主DSP处理器核心302的本地存储器内的可以是WPD_UA或WPD_UB的本地地址对应。缓冲区描述符块700还可以在标为“D_addr”的登录项内包含一个目的地址,用来标识用户DSP地址为WPD_U的DSP处理器核心302(例如,用户DSP处理器核心302B)内的一个本地地址。
在步骤1510,DMA控制器204启动第三DMA传送,将WPS_UA或WPS_UB数据的当前内容从属主DSP处理器核心302的源地址(与属主DSP处理器核心302的本地存储器内的可以是WPS_UA或WPS_UB的本地地址对应)移动到用户DSP处理器核心302的存储写指针502的目的地址。要指出的是,在一个给定的心跳内,在DMA控制器204要访问WPS_UA或WPS_UB中的一个值的情况下,后台任务(如上面结合图10A和10B所说明的那样)就写另一个值。例如,如果在同一个心跳窗口内,DMA控制器204要读WPS_UB,后台任务就写WPS_UA。类似地,如果在同一个心跳窗口内,DMA控制器204要读WPS_UA,后台任务就写WPS_UB。在一个实施例中,一个在这里称为“ABflag”的标志在0和1之间切换,后台任务可以使用该标志来保证同步,以使后台任务不会尝试写DMA控制器204在同一个心跳内要访问的同一个RPS_U值。
要指出的是,在一个实施例中,如图10和13所说明的两个后台任务中的一个后台任务能够使用一个DMA请求来移动数据块,同时两个后台任务可能正在使用其他DMA请求将它们的指针更新发送给另一个DSP处理器核心302。如果两个后台任务都请求数据移动,则同一个数据块可能被发送两次,从而导致在连接这两个DSP处理器核心302的总线上出现过度的业务。
要指出的是,方法1500可以包括为了清晰起见而没有示出的其他和/或附加的步骤。还要指出的是,方法1500可以以与所给出的次序不同的次序执行,并且在图12的讨论中所给出的次序只是示例性的。例如,步骤1508-1510可以在步骤1505-1507之前执行。还要指出的是,方法1500中的某些步骤可以用基本上同时的方式执行。
虽然以上结合若干实施例对本发明的系统、方法和计算机程序产品作了说明,但并不意味着本发明局限于在这里所提出的具体形式,相反,本发明旨在覆盖可以合理地包括在如所附权利要求限定的本发明的精神和范围内的诸如此类的替换型、修改型和等效型。要指出的是,标题只是用于组织目的,并非意在限制本说明或权利要求的范围。
Claims (30)
1.一种用于促进数字信号处理(DSP)间数据通信的方法,所述方法包括下列步骤:
读取第一数据结构,该第一数据结构与包括多个DSP处理器核心的复合体中的第一DSP处理器核心内的本地存储器块关联,其中所述第一数据结构包括第一源地址,该第一源地址指出数据被存储在所述第一DSP处理器核心的所述本地存储器内的何处的第一地址,其中所述第一数据结构还包括存储器块的大小的指示,其中所述第一数据结构还包括第一目的地址,该第一目的地址指出数据将被存储在第二DSP处理器核心的本地存储器内的何处的第二地址;以及
启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第一源地址处的具有所述存储器块的所述大小的数据移动到所述第二DSP处理器核心的所述本地存储器内的所述第一目的地址。
2.如权利要求1中所述的方法,进一步包括下列步骤:
从所述第一数据结构得到指向第二数据结构的指针;
读取所述第二数据结构,其中所述第二数据结构包括读指针和写指针中的一个指针的第二源地址,其中所述第二数据结构还包括所述读指针和所述写指针中的一个指针的第二目的地址。
3.如权利要求2中所述的方法,进一步包括下列步骤:
启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第二源地址处的所述写指针移动到所述第二DSP处理器核心的所述本地存储器内的所述第二目的地址。
4.如权利要求2中所述的方法,进一步包括下列步骤:
启动传送,将位于所述第二DSP处理器核心的所述本地存储器内的所述第二源地址处的所述读指针移动到所述第一DSP处理器核心的所述本地存储器内的所述第二目的地址。
5.如权利要求2中所述的方法,进一步包括下列步骤:
从所述第二数据结构得到指向第三数据结构的指针;
读取所述第三数据结构,其中所述第三数据结构包括读指针和写指针中的一个指针的第三源地址,其中所述第三数据结构还包括所述读指针和所述写指针中的一个指针的第三目的地址。
6.如权利要求5中所述的方法,进一步包括下列步骤:
启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第二源地址处的所述写指针移动到所述第二DSP处理器核心的所述本地存储器内的所述第二目的地址;以及
启动传送,将位于所述第二DSP处理器核心的所述本地存储器内的所述第三源地址处的所述读指针移动到所述第一DSP处理器核心的所述本地存储器内的所述第三目的地址。
7.如权利要求5中所述的方法,进一步包括下列步骤:
启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第三源地址处的所述写指针移动到所述第二DSP处理器核心的所述本地存储器内的所述第三目的地址;以及
启动传送,将位于所述第二DSP处理器核心的所述本地存储器内的所述第二源地址处的所述读指针移动到所述第一DSP处理器核心的所述本地存储器内的所述第二目的地址。
8.如权利要求2中所述的方法,进一步包括下列步骤:
将所述写指针的本地地址转换为全局地址;以及
计算所述第一数据结构内的所述第一源地址,其中所述第一源地址等于所述写指针的所述全局地址减去存储器块的所述大小。
9.如权利要求8中所述的方法,进一步包括下列步骤:
读取所述写指针的所述本地地址;以及
将所述写指针的所述本地地址复制到位于所述第一DSP处理器核心内的第三数据结构中的登录项。
10.如权利要求8中所述的方法,进一步包括下列步骤:
读取所述读指针的本地地址;以及
将所述读指针的所述本地地址复制到位于所述第二DSP处理器核心内的第三数据结构中的登录项。
11.一种体现在机器可读介质内的促进数字信号处理(DSP)间数据通信的计算机程序产品,所述计算机程序产品包括下列程序步骤:
读取第一数据结构,该第一数据结构与包括多个DSP处理器核心的复合体中的第一DSP处理器核心内的本地存储器块关联,其中所述第一数据结构包括第一源地址,该第一源地址指出数据被存储在所述第一DSP处理器核心的所述本地存储器内的何处的第一地址,其中所述第一数据结构还包括存储器块的大小的指示,其中所述第一数据结构还包括第一目的地址,该第一目的地址指出数据将被存储在第二DSP处理器核心的本地存储器内的何处的第二地址;以及
启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第一源地址处的具有所述存储器块的所述大小的数据移动到所述第二DSP处理器核心的所述本地存储器内的所述第一目的地址。
12.如权利要求11中所述的计算机程序产品,进一步包括下列程序步骤:
从所述第一数据结构得到指向第二数据结构的指针;
读取所述第二数据结构,其中所述第二数据结构包括读指针和写指针中的一个指针的第二源地址,其中所述第二数据结构还包括所述读指针和所述写指针中的一个指针的第二目的地址。
13.如权利要求12中所述的计算机程序产品,进一步包括下列程序步骤:
启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第二源地址处的所述写指针移动到所述第二DSP处理器核心的所述本地存储器内的所述第二目的地址。
14.如权利要求12中所述的计算机程序产品,进一步包括下列程序步骤:
启动传送,将位于所述第二DSP处理器核心的所述本地存储器内的所述第二源地址处的所述读指针移动到所述第一DSP处理器核心的所述本地存储器内的所述第二目的地址。
15.如权利要求12中所述的计算机程序产品,进一步包括下列程序步骤:
从所述第二数据结构得到指向第三数据结构的指针;
读取所述第三数据结构,其中所述第三数据结构包括读指针和写指针中的一个指针的第三源地址,其中所述第三数据结构还包括所述读指针和所述写指针中的一个指针的第三目的地址。
16.如权利要求15中所述的计算机程序产品,进一步包括下列程序步骤:
启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第二源地址处的所述写指针移动到所述第二DSP处理器核心的所述本地存储器内的所述第二目的地址;以及
启动传送,将位于所述第二DSP处理器核心的所述本地存储器内的所述第三源地址处的所述读指针移动到所述第一DSP处理器核心的所述本地存储器内的所述第三目的地址。
17.如权利要求15中所述的计算机程序产品,进一步包括下列程序步骤:
启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第三源地址处的所述写指针移动到所述第二DSP处理器核心的所述本地存储器内的所述第三目的地址;以及
启动传送,将位于所述第二DSP处理器核心的所述本地存储器内的所述第二源地址处的所述读指针移动到所述第一DSP处理器核心的所述本地存储器内的所述第二目的地址。
18.如权利要求12中所述的计算机程序产品,进一步包括下列程序步骤:
将所述写指针的本地地址转换为全局地址;以及
计算所述第一数据结构内的所述第一源地址,其中所述第一源地址等于所述写指针的所述全局地址减去存储器块的所述大小。
19.如权利要求18中所述的计算机程序产品,进一步包括下列程序步骤:
读取所述写指针的所述本地地址;以及
将所述写指针的所述本地地址复制到位于所述第一DSP处理器核心内的第三数据结构中的登录项。
20.如权利要求18中所述的计算机程序产品,进一步包括下列程序步骤:
读取所述读指针的本地地址;以及
将所述读指针的所述本地地址复制到位于所述第二DSP处理器核心内的第三数据结构中的登录项。
21.一种系统,所述系统包括:
多个数字信号处理(DSP)单元;
连接到所述多个DSP处理器核心的直接存储器访问控制器,其中所述直接存储器访问控制器包括:
存储器单元,所述存储器单元可操作地存储用于促进DSP间数据通信的计算机程序;以及
连接到所述存储器单元的处理器,其中所述处理器,响应于所述计算机程序,包括:
一电路,所述电路可操作地读取第一数据结构,该第一数据结构与第一DSP处理器核心内的本地存储器块关联,其中所述第一数据结构包括第一源地址,该第一源地址指出数据被存储在所述第一DSP处理器核心的所述本地存储器内的何处的第一地址,其中所述第一数据结构还包括存储器块的大小的指示,其中所述第一数据结构还包括第一目的地址,该第一目的地址指出数据将被存储在第二DSP处理器核心的本地存储器内的何处的第二地址;以及
一电路,所述电路可操作地启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第一源地址处的具有所述存储器块的所述大小的数据移动到所述第二DSP处理器核心的所述本地存储器内的所述第一目的地址。
22.如权利要求21中所述的系统,其中所述处理器进一步包括:
一电路,所述电路可操作地从所述第一数据结构得到指向第二数据结构的指针;
一电路,所述电路可操作地读取所述第二数据结构,其中所述第二数据结构包括读指针和写指针中的一个指针的第二源地址,其中所述第二数据结构还包括所述读指针和所述写指针中的一个指针的第二目的地址。
23.如权利要求22中所述的系统,其中所述处理器进一步包括:
一电路,所述电路可操作地启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第二源地址处的所述写指针移动到所述第二DSP处理器核心的所述本地存储器内的所述第二目的地址。
24.如权利要求22中所述的系统,其中所述处理器进一步包括:
一电路,所述电路可操作地启动传送,将位于所述第二DSP处理器核心的所述本地存储器内的所述第二源地址处的所述读指针移动到所述第一DSP处理器核心的所述本地存储器内的所述第二目的地址。
25.如权利要求22中所述的系统,其中所述处理器进一步包括:
一电路,所述电路可操作地从所述第二数据结构得到指向第三数据结构的指针;
一电路,所述电路可操作地读取所述第三数据结构,其中所述第三数据结构包括读指针和写指针中的一个指针的第三源地址,其中所述第三数据结构还包括所述读指针和所述写指针中的一个指针的第三目的地址。
26.如权利要求25中所述的系统,其中所述处理器进一步包括:
一电路,所述电路可操作地启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第二源地址处的所述写指针移动到所述第二DSP处理器核心的所述本地存储器内的所述第二目的地址;以及
一电路,所述电路可操作地启动传送,将位于所述第二DSP处理器核心的所述本地存储器内的所述第三源地址处的所述读指针移动到所述第一DSP处理器核心的所述本地存储器内的所述第三目的地址。
27.如权利要求25中所述的系统,其中所述处理器进一步包括:
一电路,所述电路可操作地启动传送,将位于所述第一DSP处理器核心的所述本地存储器内的所述第三源地址处的所述写指针移动到所述第二DSP处理器核心的所述本地存储器内的所述第三目的地址;以及
一电路,所述电路可操作地启动传送,将位于所述第二DSP处理器核心的所述本地存储器内的所述第二源地址处的所述读指针移动到所述第一DSP处理器核心的所述本地存储器内的所述第二目的地址。
28.如权利要求22中所述的系统,其中所述第一DSP处理器核心包括:
第二存储器单元,所述第二存储器单元可操作地存储用于执行后台任务的计算机程序;以及
连接到所述第二存储器单元的第二处理器,其中所述第二处理器,响应于所述计算机程序,包括:
一电路,所述电路可操作地将所述写指针的本地地址转换为全局地址;以及
一电路,所述电路可操作地计算所述第一数据结构内的所述第一源地址,其中所述第一源地址等于所述写指针的所述全局地址减去存储器块的所述大小。
29.如权利要求28中所述的系统,其中所述第二处理器进一步包括:
一电路,所述电路可操作地读取所述写指针的所述本地地址;以及
一电路,所述电路可操作地将所述写指针的所述本地地址复制到位于所述第一DSP处理器核心内的第三数据结构中的登录项。
30.如权利要求28中所述的系统,其中所述第二DSP处理器核心包括:
第三存储器单元,所述第三存储器单元可操作地存储用于执行后台任务的计算机程序;以及
连接到所述第三存储器单元的第三处理器,其中所述第三处理器,响应于所述计算机程序,包括:
一电路,所述电路可操作地读取所述读指针的本地地址;以及
一电路,所述电路可操作地将所述读指针的所述本地地址复制到位于所述第二DSP处理器核心内的第三数据结构中的登录项。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/783,757 US7325122B2 (en) | 2004-02-20 | 2004-02-20 | Facilitating inter-DSP data communications |
US10/783,757 | 2004-02-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1658613A true CN1658613A (zh) | 2005-08-24 |
CN100562010C CN100562010C (zh) | 2009-11-18 |
Family
ID=34861323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100085034A Expired - Fee Related CN100562010C (zh) | 2004-02-20 | 2005-02-18 | 促进dsp间数据通信的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (3) | US7325122B2 (zh) |
CN (1) | CN100562010C (zh) |
TW (1) | TWI346290B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100428670C (zh) * | 2006-12-01 | 2008-10-22 | 清华大学 | 流媒体服务器用户层通信方法 |
CN108462651A (zh) * | 2016-12-12 | 2018-08-28 | 中国航空工业集团公司西安航空计算技术研究所 | 一种采用dma链实现的1394异步流传输的方法 |
CN111427806A (zh) * | 2020-03-23 | 2020-07-17 | 深圳震有科技股份有限公司 | 一种双核amp系统共用串口的方法、存储介质及智能终端 |
CN111782133A (zh) * | 2019-04-04 | 2020-10-16 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN112799587A (zh) * | 2020-11-23 | 2021-05-14 | 哲库科技(北京)有限公司 | 处理器系统、核间通信方法、处理器以及存储单元 |
CN113254374A (zh) * | 2021-05-07 | 2021-08-13 | 黑芝麻智能科技(上海)有限公司 | 直接内存访问dma访问数据的方法、处理器 |
CN112799587B (zh) * | 2020-11-23 | 2024-10-25 | 哲库科技(北京)有限公司 | 处理器系统、核间通信方法、处理器以及存储单元 |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8346971B2 (en) | 1999-05-04 | 2013-01-01 | At&T Intellectual Property I, Lp | Data transfer, synchronising applications, and low latency networks |
WO2005122573A1 (en) * | 2004-06-05 | 2005-12-22 | Samsung Electronics Co., Ltd. | Digital broadcasting transmission/reception system utilizing srs and trs code to improve receiving performance and signal processing method thereof |
US7802259B2 (en) * | 2005-08-08 | 2010-09-21 | Freescale Semiconductor, Inc. | System and method for wireless broadband context switching |
US7653675B2 (en) * | 2005-08-08 | 2010-01-26 | Freescale Semiconductor, Inc. | Convolution operation in a multi-mode wireless processing system |
US7734674B2 (en) * | 2005-08-08 | 2010-06-08 | Freescale Semiconductor, Inc. | Fast fourier transform (FFT) architecture in a multi-mode wireless processing system |
US8140110B2 (en) * | 2005-08-08 | 2012-03-20 | Freescale Semiconductor, Inc. | Controlling input and output in a multi-mode wireless processing system |
US20070033349A1 (en) * | 2005-08-08 | 2007-02-08 | Freescale Semiconductor, Inc. | Multi-mode wireless processor interface |
TWI313807B (en) * | 2005-08-18 | 2009-08-21 | Realtek Semiconductor Corp | Error correction apparatus and method for data stored in memory |
US7904056B2 (en) * | 2006-03-01 | 2011-03-08 | Ipc Systems, Inc. | System, method and apparatus for recording and reproducing trading communications |
US8706987B1 (en) | 2006-12-01 | 2014-04-22 | Synopsys, Inc. | Structured block transfer module, system architecture, and method for transferring |
US8289966B1 (en) | 2006-12-01 | 2012-10-16 | Synopsys, Inc. | Packet ingress/egress block and system and method for receiving, transmitting, and managing packetized data |
US8127113B1 (en) | 2006-12-01 | 2012-02-28 | Synopsys, Inc. | Generating hardware accelerators and processor offloads |
US7716396B1 (en) * | 2007-02-09 | 2010-05-11 | Juniper Networks, Inc. | Multi-reader multi-writer circular buffer memory |
US20090006665A1 (en) * | 2007-06-01 | 2009-01-01 | Jagadeesh Sankaran | Modified Memory Architecture for CODECS With Multiple CPUs |
WO2008154365A1 (en) * | 2007-06-06 | 2008-12-18 | Hunt Technologies, Llc. | Dsp workload distribution in a power line carrier system |
JP2009141780A (ja) * | 2007-12-07 | 2009-06-25 | Canon Inc | 情報処理装置及び情報処理方法 |
CN102147780B (zh) * | 2011-04-27 | 2013-04-17 | 中国电子科技集团公司第三十八研究所 | 一种基于串行数据传输方式的链路接口电路 |
US9176899B2 (en) | 2012-12-19 | 2015-11-03 | International Business Machines Corporation | Communication protocol placement into switch memory |
US20140317333A1 (en) * | 2013-04-17 | 2014-10-23 | Microchip Technology Incorporated | Direct Memory Access Controller with Hybrid Scatter-Gather Functionality |
US10334008B2 (en) | 2013-07-04 | 2019-06-25 | Nxp Usa, Inc. | Method and device for data streaming in a mobile communication system |
US10342032B2 (en) * | 2013-07-04 | 2019-07-02 | Nxp Usa, Inc. | Method and device for streaming control data in a mobile communication system |
CN103761060B (zh) * | 2014-01-27 | 2017-02-15 | 华为技术有限公司 | 一种数据处理方法及服务器 |
US20150278131A1 (en) * | 2014-03-26 | 2015-10-01 | Kay Hesse | Direct memory access controller with general purpose inputs and outputs |
CN103914417A (zh) * | 2014-04-21 | 2014-07-09 | 成都智恒博纳科技有限公司 | 一种基于dsp的数据传输与处理的方法 |
US10102664B1 (en) * | 2014-12-03 | 2018-10-16 | Charles Schwab & Co., Inc. | System and method for causing graphical information to be rendered |
US10342026B2 (en) * | 2015-04-17 | 2019-07-02 | Panasonic Intellectual Property Corporation Of America | Rate matching for a machine type communication channel in time division duplex |
KR20170140225A (ko) | 2015-04-30 | 2017-12-20 | 마이크로칩 테크놀로지 인코포레이티드 | 향상된 명령어 세트를 구비한 중앙 처리 유닛 |
US10860374B2 (en) * | 2015-09-26 | 2020-12-08 | Intel Corporation | Real-time local and global datacenter network optimizations based on platform telemetry data |
US10140036B2 (en) * | 2015-10-29 | 2018-11-27 | Sandisk Technologies Llc | Multi-processor non-volatile memory system having a lockless flow data path |
US10282251B2 (en) | 2016-09-07 | 2019-05-07 | Sandisk Technologies Llc | System and method for protecting firmware integrity in a multi-processor non-volatile memory system |
NO20161993A1 (en) | 2016-12-15 | 2018-04-09 | Wirescan As | Method for measuring an impedance of an electric cable, a coupler arrangement and uses thereof |
US10419063B2 (en) | 2016-12-30 | 2019-09-17 | Waviot Integrated Systems, Llc | Method and system for receiving telemetry messages over RF channel |
US10326556B2 (en) | 2016-12-30 | 2019-06-18 | Waviot Integrated Systems, Llc | Method and system of frequency correction in LPWAN networks |
WO2018126197A1 (en) | 2016-12-30 | 2018-07-05 | Waviot Integrated Systems, Llc | A method for multichannel signal search and demodulation and tech nique to demodulate and detect dbpsk fdma ultra-narrow band signal |
US10291363B2 (en) | 2016-12-30 | 2019-05-14 | Waviot Integrated Systems, Llc | Method for simultaneous confirmation of many messages in low power wide area networks, and use of correction of frequency when transmitting data over UNB LPWAN networks, based on analysis of data obtained on receiving |
US10783103B1 (en) * | 2017-02-24 | 2020-09-22 | Xilinx, Inc. | Split control for direct memory access transfers |
US10747275B2 (en) * | 2017-09-21 | 2020-08-18 | Google Llc | Access to high frame-rate radar data via a circular buffer |
US11132240B2 (en) * | 2019-08-16 | 2021-09-28 | Roku, Inc. | Multi-agent ring-buffer |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2016348C (en) | 1989-05-10 | 2002-02-05 | Kenichi Asano | Multiprocessor type time varying image encoding system and image processor |
US5572695A (en) | 1994-05-31 | 1996-11-05 | International Business Machines Corporation | Transparent memory mapping mechanism for a digital signal processing system |
US5659698A (en) | 1994-11-01 | 1997-08-19 | Motorola, Inc. | Method and apparatus for generating a circular buffer address in integrated circuit that performs multiple communications tasks |
US6327648B1 (en) | 1994-12-09 | 2001-12-04 | Cirrus Logic, Inc. | Multiprocessor system for digital signal processing |
AU7681596A (en) | 1995-12-11 | 1997-07-03 | Airnet Communications Corporation | Multichannel broadband transceiver system making use of a distributed control architecture for digital signal processor array |
US6088783A (en) * | 1996-02-16 | 2000-07-11 | Morton; Steven G | DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word |
US6141744A (en) * | 1997-03-24 | 2000-10-31 | Texas Instruments Incorporated | PC circuits, systems and methods |
US6178180B1 (en) | 1997-11-26 | 2001-01-23 | International Business Machines Corp. | Communications adapter for processing ATM and ISDN data |
US6012136A (en) * | 1997-12-01 | 2000-01-04 | Advanced Micro Devices, Inc. | Communications system with a configurable data transfer architecture |
US6256723B1 (en) | 1998-04-15 | 2001-07-03 | Diamond Multimedia Systems, Inc. | Signal processing system with distributed uniform memory |
US6240086B1 (en) | 1999-10-15 | 2001-05-29 | Texas Instruments Incorporated | Dynamic DSP allocation for universal access to a packet network |
US6338130B1 (en) | 1999-03-11 | 2002-01-08 | International Business Machines Corporation | Adaptive method and apparatus for allocation of DSP resources in a communication system |
GB9909196D0 (en) * | 1999-04-21 | 1999-06-16 | Texas Instruments Ltd | Transfer controller with hub and ports architecture |
-
2004
- 2004-02-20 US US10/783,757 patent/US7325122B2/en not_active Expired - Fee Related
-
2005
- 2005-02-04 TW TW094103741A patent/TWI346290B/zh not_active IP Right Cessation
- 2005-02-18 CN CNB2005100085034A patent/CN100562010C/zh not_active Expired - Fee Related
-
2007
- 2007-09-17 US US11/856,509 patent/US20080010390A1/en not_active Abandoned
- 2007-11-21 US US11/944,028 patent/US7519793B2/en not_active Expired - Fee Related
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100428670C (zh) * | 2006-12-01 | 2008-10-22 | 清华大学 | 流媒体服务器用户层通信方法 |
CN108462651A (zh) * | 2016-12-12 | 2018-08-28 | 中国航空工业集团公司西安航空计算技术研究所 | 一种采用dma链实现的1394异步流传输的方法 |
CN111782133A (zh) * | 2019-04-04 | 2020-10-16 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN111427806A (zh) * | 2020-03-23 | 2020-07-17 | 深圳震有科技股份有限公司 | 一种双核amp系统共用串口的方法、存储介质及智能终端 |
CN112799587A (zh) * | 2020-11-23 | 2021-05-14 | 哲库科技(北京)有限公司 | 处理器系统、核间通信方法、处理器以及存储单元 |
CN112799587B (zh) * | 2020-11-23 | 2024-10-25 | 哲库科技(北京)有限公司 | 处理器系统、核间通信方法、处理器以及存储单元 |
CN113254374A (zh) * | 2021-05-07 | 2021-08-13 | 黑芝麻智能科技(上海)有限公司 | 直接内存访问dma访问数据的方法、处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN100562010C (zh) | 2009-11-18 |
US20050188129A1 (en) | 2005-08-25 |
US7519793B2 (en) | 2009-04-14 |
TWI346290B (en) | 2011-08-01 |
TW200534111A (en) | 2005-10-16 |
US20080010390A1 (en) | 2008-01-10 |
US20080072005A1 (en) | 2008-03-20 |
US7325122B2 (en) | 2008-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1658613A (zh) | 促进dsp间数据通信的方法和系统 | |
CN100351747C (zh) | 数据传送方法和数据传送设备 | |
CN1779777A (zh) | 一种通过截取音频波形进行音频编辑和转化的方法 | |
CN1149806C (zh) | 高性能通信控制器 | |
CN1282946C (zh) | 话音识别对话选择装置和方法以及话音识别对话装置 | |
CN1573928A (zh) | 用语音应用语言标记执行的语义对象同步理解 | |
CN1125487A (zh) | 面向目标的音频系统 | |
CN1742480A (zh) | 信息处理装置、信息处理方法和计算机程序 | |
CN1892639A (zh) | 主题变换系统、便携通信设备、服务器装置和计算机程序 | |
CN1732459A (zh) | 用于较小显示装置的网页内容译码系统和方法 | |
CN1976491A (zh) | 移动内容管理设备 | |
CN1862698A (zh) | 信息处理系统、信息生成装置及方法、信息处理装置及方法、程序 | |
CN1607597A (zh) | 含有预加载信息的信息存储媒体及其再现设备和方法 | |
CN1745370A (zh) | 信息处理装置、内容管理方法、内容信息管理方法和计算机程序 | |
CN1125490A (zh) | 面向目标的视频系统 | |
CN1832476A (zh) | 动态服务代理 | |
CN1276617C (zh) | 用于限制内容再分送的方法和系统 | |
CN1894740A (zh) | 信息处理系统、信息处理方法以及信息处理用程序 | |
CN1835556A (zh) | 像素插值装置及照相机装置 | |
CN1881977A (zh) | 通信装置和命令发送方法 | |
CN1873687A (zh) | 图像处理装置、方法以及存储程序的存储介质 | |
CN1811773A (zh) | 以串行二进制格式存储文档的系统和方法 | |
CN1705367A (zh) | 信息处理设备和信息处理方法 | |
CN1873691A (zh) | 图像处理装置、方法以及存储程序的存储介质 | |
CN1873686A (zh) | 图像处理装置、方法以及存储程序的存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091118 Termination date: 20120218 |