CN1851678A - 一种在内存和数字信号处理器之间传送数据的方法 - Google Patents
一种在内存和数字信号处理器之间传送数据的方法 Download PDFInfo
- Publication number
- CN1851678A CN1851678A CN 200610087477 CN200610087477A CN1851678A CN 1851678 A CN1851678 A CN 1851678A CN 200610087477 CN200610087477 CN 200610087477 CN 200610087477 A CN200610087477 A CN 200610087477A CN 1851678 A CN1851678 A CN 1851678A
- Authority
- CN
- China
- Prior art keywords
- data
- descending
- dsp
- mailbox
- internal memory
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 226
- 238000000034 method Methods 0.000 title claims abstract description 99
- 230000008569 process Effects 0.000 claims abstract description 52
- 230000005540 biological transmission Effects 0.000 claims abstract description 33
- 230000015572 biosynthetic process Effects 0.000 claims description 61
- 238000005755 formation reaction Methods 0.000 description 50
- 238000010586 diagram Methods 0.000 description 9
- 238000011144 upstream manufacturing Methods 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种从数字信号处理器DSP向内存传送数据的方法,包括:A1、判断DSP的上行邮箱是否有需要传送给内存的数据,如果有则执行步骤B1,否则结束当前流程;B1、判断内存是否可写,如果是则从DSP的上行邮箱中读取数据并写入到内存中,否则结束当前流程。本发明还公开了一种从内存向DSP传送数据的方法,包括:A2、判断DSP的下行邮箱是否可以写入,如果可以,则执行步骤B2,否则结束当前流程;B2、判断内存中是否有需要传送给DSP的数据,如果有则从内存中读取数据并写入到DSP的下行邮箱中,否则结束当前流程。采用本发明所提供的技术方案,可以在不需要CPU参与的情况下,实现内存和DSP之间的数据传送。
Description
技术领域
本发明涉及数据处理技术,特别是涉及一种在内存和数字信号处理器之间传送数据的方法。
背景技术
数字信号处理器(DSP,Digital Signal Processor)通常应用于要求对采集到的数据进行实时处理的场合中。例如,在一个音/视频的采集系统中,DSP对采集到的音/视频数据进行压缩编码处理,然后由中央处理单元(CPU,Central Processing Unit)从DSP中读取数据,对这些数据进行后续处理。在上述应用中,DSP是作为CPU的外设,CPU需要首先读取DSP的数据,然后将所读取的数据写入内存,然后在内存中对数据进行后续处理。也就是说,将数据从外设读取并写入到内存中需要CPU的参与,这样就会占用CPU的处理能力。
发明内容
有鉴于此,本发明的主要目的在于提供一种在内存和数字信号处理器之间传送数据的方法,以实现在不需要CPU参与的情况下,在内存和DSP之间传送数据,从而节约CPU的处理能力,提高系统的整体性能。
为了达到上述目的,本发明的技术方案是这样实现的:
一种在内存和数字信号处理器之间传送数据的方法,包括:
A1、判断数字信号处理器DSP的上行邮箱是否有需要传送给内存的数据,如果有则执行步骤B1,否则结束当前流程;
B1、判断内存是否可写,如果是,则执行步骤C1,否则结束当前流程;
C1、从DSP的上行邮箱中读取数据,并将所读取的数据写入到内存中。
其中,在DSP的上行邮箱中设置表示是否有数据需要传送的校验字,步骤A1所述判断DSP的上行邮箱是否有需要传送给内存的数据为:
判断上行邮箱的校验字是否为主机可操作,如果是则认为有需要传送给内存的数据,否则认为没有;
在步骤C1之后进一步包括:
将上行邮箱的校验字设置为主机不可操作。
其中,在DSP的上行邮箱中设置表示待传送数据长度的长度字,步骤C1所述从DSP的上行邮箱中读取数据为:
根据所述长度字,从DSP的上行邮箱中读取数据。
其中,设置先入先出FIFO队列,步骤C1所述从DSP的上行邮箱中读取数据为:
从DSP的上行邮箱中读取数据并放入FIFO中;
步骤C1所述将所读取的数据写入到内存中为:
将FIFO中的数据写入内存中。
其中,为DSP的上行邮箱设置上行缓冲区描述符BD队列,以及分别指向上行BD队列中BD的BD上行写指针和BD上行读指针,步骤B1所述判断内存是否可写为:
判断所述BD上行写指针指向的上行BD,是否为所述BD上行读指针指向的上行BD的前一个上行BD,如果是则认为内存不可写,否则认为内存可写;
步骤C1之后进一步包括:
判断所述BD上行写指针是否指向上行BD队列中的最后一个上行BD,如果是则修改所述BD上行写指针指向上行BD队列的第一个上行BD,否则修改所述BD上行写指针指向上行BD队列的下一个上行BD。
其中,所述上行BD包括数据所在内存的地址域和内存中数据的长度域,步骤C1所述将所读取的数据写入到内存中为:
根据BD上行写指针所指向的上行BD中的数据所在内存的地址域,将数据写入到内存中,并且根据所写入的数据长度,修改BD上行写指针所指向的上行BD的内存中数据的长度域。
其中,在步骤C1之后进一步包括:
判断是否需要通知中央处理单元CPU处理内存中的数据,如果需要则通知CPU,否则结束当前流程。
其中,设置上行错误信息寄存器,步骤C1进一步包括:
判断在从DSP的上行邮箱中读取数据的过程中,和/或,在将所读取的数据写入到内存中的过程中是否出现数据传输错误,如果出现则将所述错误记录在所述上行错误信息寄存器中,并通知CPU查询所述上行错误信息寄存器。
其中,所述上行BD进一步包括出错信息域,步骤C1进一步包括:
判断在从DSP的上行邮箱中读取数据的过程中,和/或,在将所读取的数据写入到内存中的过程中是否出现数据传输错误,如果出现,则将所述错误记录在所述上行BD的出错信息域中。
其中,设置先入先出FIFO队列,步骤C1所述从DSP的上行邮箱中读取数据为:
从DSP的上行邮箱中读取数据并放入FIFO中;
步骤C1所述将所读取的数据写入到内存中为:
将FIFO中的数据写入内存中;
所述判断在从DSP的上行邮箱中读取数据的过程中,和/或,在将所读取的数据写入到内存中的过程中是否出现数据传输错误为:
判断是否发生FIFO满荷的情况,如果出现则认为出现数据传输错误,否则认为未出现数据传输错误。
一种在内存和数字信号处理器之间传送数据的方法,包括:
A2、判断数字信号处理器DSP的下行邮箱是否可以写入,如果可以写入,则执行步骤B2,否则结束当前流程;
B2、判断内存中是否有需要传送给DSP的数据,如果有则执行步骤C2,否则结束当前流程;
C2、从内存中读取数据,并将所读取的数据写入到DSP的下行邮箱中。
其中,在DSP的下行邮箱中设置表示是否可以写入的校验字,步骤A2所述判断DSP的下行邮箱是否有需要传送给内存的数据为:
判断下行邮箱的校验字是否为主机可操作,如果是则认为可以写入,否则认为不可写入;
在步骤C之后进一步包括:
将下行邮箱的校验字设置为主机不可操作。
其中,在DSP的下行邮箱中设置表示已写入数据长度的长度字,步骤C2在所述将所读取的数据写入到DSP的下行邮箱后进一步包括:
根据写入到DSP下行邮箱的数据长度,设置所述长度字。
其中,设置先入先出FIFO队列,步骤C2所述从内存中读取数据为:
从内存中读取数据并放入FIFO中;
步骤C2所述将所读取的数据写入到DSP的下行邮箱中为:
将FIFO中的数据写入到DSP的下行邮箱中。
其中,为DSP的下行邮箱设置下行缓冲区描述符BD队列,以及分别指向下行BD队列中BD的BD下行写指针和BD下行读指针,步骤B2所述判断内存中是否有需要传送给DSP的数据为:
判断所述BD下行写指针指向的下行BD,是否与所述BD下行读指针指向下行BD队列中的同一个下行BD,如果是则认为内存中没有需要传送给DSP的数据,否则认为内存中有需要传送给DSP的数据;
步骤C之后进一步包括:
判断所述BD下行写指针是否指向下行BD队列中的最后一个下行BD,如果是则修改所述BD下行写指针指向下行BD队列的第一个下行BD,否则修改所述BD下行写指针指向下行BD队列的下一个下行BD。
其中,所述下行BD包括数据所在内存的地址域和内存中数据的长度域,步骤C2所述从内存中读取数据为:
按照BD下行读指针所指向的下行BD中所的数据所在内存的地址域和内存中数据的长度域,从内存中读取数据。
其中,在步骤C2之后进一步包括:
判断是否需要通知中央处理单元CPU处理内存中的数据,如果需要则通知CPU,否则结束当前流程。
其中,设置下行错误信息寄存器,步骤C2进一步包括:
判断在从内存中读取数据的过程中,和/或,在将所读取的数据写入到DSP的下行邮箱中的过程中是否出现数据传输错误,如果出现,则将所述错误记录在所述下行错误信息寄存器中,并通知CPU查询所述下行错误信息寄存器。
其中,所述下行BD进一步包括出错信息域,步骤C进一步包括:
判断在从内存中读取数据的过程中,和/或,在将所读取的数据写入到DSP的下行邮箱中的过程中是否出现数据传输错误,如果出现,则将所述错误记录在所述下行BD的出错信息域中。
其中,设置等待时长,所述判断在从内存中读取数据的过程中,和/或,在将所读取的数据写入到DSP的下行邮箱中的过程中是否出现数据传输错误为:
判断在将所读取的数据写入到DSP的下行邮箱后,在所述等待时长内,是否收到DSP返回的确认信息,如果收到则认为未出现数据传输错误,否则认为出现数据传输错误。
其中,设置等待时长和最大重试次数,所述判断在从内存中读取数据的过程中,和/或,在将所读取的数据写入到DSP的下行邮箱中的过程中是否出现数据传输错误为:
D1、判断在将所读取的数据写入到DSP的下行邮箱后,在所述等待时长内,是否收到DSP返回的确认信息,如果收到则认为未出现数据传输错误,否则执行步骤D2;
D2、判断所述向DSP的下行邮箱写入数据的操作所进行的次数,是否超过所述最大重试次数,如果超过则认为出现数据传输错误,否则再次将所读取的数据写入到DSP的下行邮箱中,返回执行步骤D1。
其中,设置等待时长和最大重试次数,步骤C2进一步包括:
C21、判断在将所读取的数据写入到DSP的下行邮箱后,在所述等待时长内,是否收到DSP返回的确认信息,如果收到则释放所读取数据占用的FIFO存储资源,否则执行步骤C22;
C22、判断所述向DSP的下行邮箱写入数据的操作所进行的次数,是否超过所述最大重试次数,如果超过则释放所读取数据占用的FIFO存储资源,否则再次将所读取数据写入到DSP的下行邮箱中,返回执行步骤C21。
采用本发明所提供的技术方案,针对DSP内部数据结构和访问方式,实现了在内存和DSP之间进行数据传送的DMA控制器,从而实现了用DMA方式访问DSP数据,而不再需要CPU的参与。并且,采用本发明所提供的技术方案,由于省去了CPU用于数据传输的处理能力,使得CPU可以用更多的处理能力进行所述后续处理,这样就可以同时处理多个DSP,进一步提高了系统的性能。
附图说明
图1是本发明提供的在内存和数字信号处理器之间传送数据的方法所应用的系统框图;
图2(a)是本发明所提供的在内存和数字信号处理器之间传送数据的方法中所用到的缓冲区描述符队列示意图;
图2(b)是本发明所提供的在内存和数字信号处理器之间传送数据的方法中所用到的缓冲区描述符队列示意图;
图3(a)是本发明提供的在内存和数字信号处理器之间传送数据的方法在从DSP向内存传送数据时的流程图;
图3(b)是本发明提供的在内存和数字信号处理器之间传送数据的方法在从DSP向内存传送数据时的流程图;
图4是本发明提供的在内存和数字信号处理器之间传送数据的方法在从内存向DSP传送数据时的流程图。
具体实施方式
本发明的核心思想是:利用可编程逻辑器件,在不需要CPU参与的情况下,在内存和数字信号处理器之间进行数据的传输。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
请参考图1,图1是本发明提供的在内存和数字信号处理器之间传送数据的方法所应用的系统框图。
由于本发明所实现的,是利用DMA的方式访问DSP数据的方法。因此在图1中用DMA控制器来表示实现本发明的技术方案所需要的硬件平台。
在图1中,DMA控制器的一端连接到PCI总线上,CPU和内存也连接到PCI总线上。这样CPU、内存和DMA控制器三者之间就可以互相访问。DMA控制器的另一端连接到DSP专用总线上,例如增强型主机接口(EHPI,Enhanced Hose-Port Interface)。
所述DMA控制器,如果考虑到应用的灵活性,可以用可编程逻辑器件实现,例如场可编程门阵列(FPGA,Field Programmable Gate Array)或者复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device),这样就可以灵活的进行配置,比如对所支持的DSP数量等等进行配置;当然如果需要大批量生产,也可以用特定用途集成电路(ASIC,Application SpecificIntegrated Circuit)实现。
在以下的叙述中,假设DMA控制器通过DSP专用总线接一个DSP;该DSP有8个双向数据通道;每个数据通道有一个上行命令邮箱、一个上行数据邮箱、一个下行命令邮箱、一个下行数据邮箱以及若干个其他邮箱。其中上行命令邮箱和上行数据邮箱统称为上行邮箱,用于对DSP进行读操作;下行命令邮箱和下行数据邮箱统称为下行邮箱,用于对DSP进行写操作。每个邮箱包含一个校验字,用于表示邮箱状态。每个上行邮箱还包括一个长度字,用于表示邮箱中的数据长度。
请参考图2,图2是本发明所提供的在内存和数字信号处理器之间传送数据的方法中所用到的缓冲区描述符队列示意图。
DMA工作模式是基于缓冲区描述符(BD,Buffer Descriptor)实现的。一个BD至少包括两项内容:内存中数据的长度和数据所在内存的地址,由这两项内容就可以唯一确定内存中的一块区域。BD本身也是存放在内存中的。如果一个BD所确定的数据区域有数据,则称该BD为工作BD,如果一个BD所确定的数据区域被释放,则称该BD为空闲BD。
对于DMA控制器来说,首先需要根据初始化时由CPU提供的BD地址,从内存中读取BD。如果是向内存写入数据,则将数据写入到BD所记载的数据所在内存的地址,并设置BD中的内存中数据的长度;如果是从内存读取数据,则根据BD所记载的数据所在内存的地址和内存中数据的长度进行读取。对于CPU来说,也需要记录BD地址,然后在读写内存的时候采用跟DMA控制器类似的方法。
在本发明中,对于DSP的每个通道的四个邮箱,各设置一个BD队列和两个BD指针。为上行邮箱设置的BD队列为上行BD队列,相应的BD指针为BD上行写指针和BD上行读指针,这三者用于从DSP向内存传送数据;为下行邮箱设置的BD队列为下行BD队列,相应的BD指针为BD下行写指针以和BD下行读指针,这三者用于从内存向DSP传送数据。
BD上行写指针和BD上行读指针存放在DMA控制器中。其中,BD上行写指针表示DMA控制器已经处理完毕的上行BD,DMA控制器可以对BD上行写指针进行读写操作,而CPU只能对BD上行写指针进行读操作;BD上行读指针表示CPU将要处理的下一个BD,CPU可以对BD上行读指针进行读写操作,而DMA控制器只能对BD上行读指针进行读操作。
BD下行写指针和BD下行读指针也存放在DMA控制器。其中,BD下行写指针表示CPU将要处理的下一个BD,CPU可以对BD下行写指针进行读写操作,而DMA控制器只能对BD下行写指针进行读操作;BD下行读指针表示DMA控制器将要处理的下一个BD,DMA控制器可以对BD下行读指针进行读写操作,而CPU只能对BD下行读指针进行读操作。
图2(a)表示了本发明中为DSP数据通道设置的上行BD队列以及对应的BD上行读指针和BD上行写指针的示意图。在图2(a)中,BD上行写指针指向上行BD2,说明DMA控制器已经处理完上行BD2,将要处理的下一个上行BD为上行BD3。也就是说DMA控制器向内存中写入数据时,会将数据写入到上行BD3所记载的数据所在内存的地址,并设置上行BD3中的内存中数据的长度,然后将BD上行写指针设置为指向上行BD3。这样上行BD3就从空闲BD转为了工作BD。
在图2(a)中,BD上行读指针指向上行BD4,说明CPU将要处理的下一个上行BD为上行BD4。也就是说,CPU从内存读取数据时,会根据上行BD4所记载的数据所在内存的地址和内存中数据的长度进行读取,然后将BD上行读指针设置为指向上行BD5,并且释放由上行BD4所确定的内存区域。这样上行BD4就从工作BD转为了空闲BD。
图2(b)表示了本发明中为DSP数据通道设置的下行BD队列以及对应的BD下行读指针和BD下行写指针的示意图。在图2(b)中,BD下行写指针指向下行BD4,说明CPU将要处理的下一个下行BD为下行BD4。也就是说CPU向内存中写入数据时,会将数据写入到下行BD4所记载的数据所在内存的地址,并设置下行BD4中的内存中数据的长度,然后将BD下行写指针设置为指向下行BD5。这样下行BD4就从空闲BD转为了工作BD。
在图2(b)中,BD下行读指针指向下行BD2,说明DMA控制器将要处理的下一个下行BD为下行BD2。也就是说,DMA控制器从内存读取数据时,会根据下行BD2所记载的数据所在内存的地址和内存中数据的长度进行读取,然后将BD下行读指针设置为指向下行BD3,并且释放由下行BD2所确定的内存区域。这样下行BD2就从工作BD转为了空闲BD。
如上所述,每个上行邮箱都有一个上行BD队列,每个下行邮箱都有一个下行BD队列。一般来说,CPU会在内存中的指定一块存储区域,存放所有的上行BD队列。并且,所有上行BD队列中所包括的上行BD数目也是一样的,也就是说所有上行BD队列长度是一样的。这样,只要确定了所述存储区域的首地址以及上行BD队列长度,就可以根据通道号,计算出当前上行邮箱的上行BD队列首地址。例如,假设所述存储区域的首地址是1000,每个上行BD队列的长度为100,则通道0的两个上行邮箱所对应的上行BD队列首地址分别为1000和1100,通道1的两个上行邮箱所对应的上行BD队列首地址分别为1200和1300,通道2的两个上行邮箱所对应的上行BD队列首地址分别为1400和1500,依此类推。
对于下行BD队列也作类似处理。在系统初始化的时候,CPU会将存放所有通道的上行BD队列的存储区域的首地址以及上行BD队列的长度通知DMA控制器;CPU也会将存放所有通道的下行BD队列的存储区域的首地址以及下行BD队列的长度通知DMA控制器。
而对于每个通道的四个BD指针,也可以按照类似的方法保存在DMA控制器中。在系统初始化的时候,CPU会设置DMA控制器中存放所有通道的BD指针的存储区域。
请参考图3,图3是本发明提供的在内存和数字信号处理器之间传送数据的方法在从DSP向内存传送数据时,DMA控制器的处理流程图。由于在数据传送时,对上行数据邮箱和上行命令邮箱的处理类似,因此可以将DSP的8个通道的8个上行数据邮箱和8个上行命令邮箱,总共16个上行邮箱统一编号进行处理,例如通道0的上行数据邮箱为0号上行邮箱,通道0的上行命令邮箱为1号上行邮箱;通道1的上行数据邮箱为2号上行邮箱,通道1的上行命令邮箱为3号上行邮箱,依此类推。
步骤U01:DMA控制器接收DSP中断。
步骤U02:将DSP的所有上行邮箱作为未处理上行邮箱。
如前所述,DSP有16个上行邮箱。DSP在需要向内存发送数据时,会选择其中的一个或超过一个上行邮箱,将所要发送的数据放在被选择上行邮箱的上行邮箱中,然后向DMA控制器发送一个中断。但是DMA控制器并不知道DSP采用哪个或哪几个上行邮箱进行发送,因此在收到DSP产生的中断后,需要将DSP的所有上行邮箱遍历一遍。
步骤U03:从未处理上行邮箱中取一个作为当前上行邮箱。
步骤U04:将当前上行邮箱标记为已处理上行邮箱。
步骤U05:判断当前上行邮箱的校验字是否为主机可操作,如果是则执行步骤U08,否则执行步骤U06。
如前所述,每个邮箱的首地址是一个校验字,用于表示邮箱的状态。对于上行邮箱来说,就是表示该邮箱中是否存放了DSP需要发送给内存的数据。DSP在将要发送给内存的数据放在一个上行邮箱内后,会将所述上行邮箱的校验字设置为主机可操作。
DMA控制器在发现某个上行邮箱的校验字为主机可操作后,就确认该邮箱中存放了DSP要发送给内存的数据。
步骤U06:判断是否DSP的所有上行邮箱均为已处理上行邮箱,如果是则执行步骤U07,否则返回执行步骤U03。
步骤U07:结束对本次中断的处理流程,等待接收新的DSP中断。
步骤U08:判断内存是否可写,如果可写则执行步骤U09,否则返回执行步骤U03。
如果内存不可写,则终止对当前上行邮箱的处理,处理下一个上行邮箱。
这里所说的判断内存是否可写,就是判断是否能通过PCI总线向内存发起DMA写操作。根据图2中对上行BD队列以及BD上行写指针和BD上行读指针的描述,DMA每次向内存中写入数据,会将上行BD队列中的一个空闲BD转换成工作BD;而CPU每次从内存中读取数据,会将上行BD队列中的一个工作BD转换成空闲BD。但是,由于DMA控制器向内存写数据和CPU从内存读数据是不同步的,因此有可能出现与当前上行邮箱对应的上行BD队列中没有空闲BD的情况,这时,DMA控制器就无法向内存中写入数据。
DMA控制器判断内存是否可写的方法是:判断所述BD上行写指针指向的上行BD,是否为所述BD上行读指针指向的上行BD的前一个上行BD,如果是则认为内存不可写,否则认为内存可写。
步骤U09:根据当前上行邮箱的长度字,从邮箱中读取数据放入自身的先入先出(FIFO,First In First Out)队列中。
DSP将要向内存传送的数据放入邮箱后,不仅会设置邮箱的校验字为主机可操作,还会设置邮箱的长度字。
步骤U10:从对应于当前上行邮箱的上行BD队列中,按照对应于当前上行邮箱的BD上行写指针读取上行BD。
步骤U11:按照所读取上行BD中的记载的数据所在内存的地址,将自身FIFO中的数据写入到内存中,并且修改所读取上行BD的内存中数据的长度。
需要说明的是,每个BD所确定的区域的存储容量,应该不小于DSP的上行邮箱所能存放的最大数据长度。
步骤U12:修改所读取上行BD的附加信息。
可以在上行BD中设置一些附加信息,比如当前上行邮箱的上行邮箱号,或者写入内存的数据是从当前上行数据邮箱还是上行命令邮箱所读取的等等。
步骤U13:将当前上行邮箱的校验字设为主机不可操作。
DSP在需要向内存传送数据的时候,也会查询所有上行邮箱的校验字,只有校验字为主机不可操作的邮箱,才会被DSP用来向内存传送当前数据。
步骤U14:判断BD上行写指针是否到达与当前上行邮箱对应的上行BD队列的最大值,如果是则执行步骤U15,否则执行步骤U16。
步骤U15:令BD上行写指针指向与当前上行邮箱对应的上行BD队列头,返回执行步骤U03。
步骤U16:将DB上行写指针指向与当前上行邮箱对应的上行BD队列中下一个BD,然后返回执行步骤U03。
在图2中,如果在执行步骤U14时,BD上行写指针当前指向BD4,则执行步骤U15,即令BD上行写指针指向上行BD1;如果在执行步骤U14时,BD上行写指针当前指向BD2,则执行步骤U16,即令BD上行写指针指向上行BD3。
在实际情况中,还可以进一步在DMA控制器中设置中断门限和中断周期,然后采用中断计数和中断定时两种方式通知CPU处理内存中的数据。DMA控制器对收到的DSP中断进行计数,当中断数达到所述中断门限时,通知CPU处理内存中的数据;或者DMA控制器进行计时,每次到达中断周期后通知CPU处理内存中的数据。这两种中断方式同时工作,一种方式通知CPU处理内存中的数据后,要将另一种方式清零,从而避免重复通知CPU。也就是说,不管是中断计数到达中断门限,还是中断计时到达中断周期,DMA控制器在通知CPU处理内存中的数据时,还要将中断计数和中断计时全部清零。所述中断门限和中断周期可由CPU设置。当然,作为一种替代方案,也可以每次将一个上行邮箱中的数据写入内存就进行一次计数。
如果在执行步骤U01到步骤U16的过程中,DMA控制器收到CPU所发出的停止向内存进行DMA写入的指令,则DMA控制器并不是立即终止对内存进行DMA写入。如果DMA控制器当前正在从DSP中读取数据到自身FIFO,则首先DMA控制器要将当前通道的数据全部读取到自身FIFO,接下来将FIFO中的数据全部DMA写入到内存中,然后才结束对内存的DMA操作。
在上行BD中可以进一步设置出错信息,用来记录在从DSP向内存传送数据时出现的数据传输错误的情况。例如,在从DSP的当前上行邮箱读出数据时,根据当前上行邮箱的长度字,确定所要读取的数据为100字节,但是实际上却只读出了50字节。在这些情况下,DMA控制器可以就可以修改当前上行BD的错误信息。在上行BD中如何设置出错信息是由CPU和DMA控制器实现约定的,因此CPU在读取上行BD的时候,就会处理所述出错信息。
同时,还可以进一步在FPGA内部设置上行错误信息寄存器,同样用来记录在从DSP向内存传送数据时出现的访问DSP错误的情况。DMA控制器在修改所述上行错误信息寄存器后,还可以通知CPU来查询所述上行错误信息寄存器。所述上行BD中的错误信息和FPGA内部的上行错误信息寄存器可以只设置一个。
在步骤U09中,DMA控制器先将DSP的数据读入到自身的FIFO;然后在步骤U10中,DMA控制器需要从内存中读取上行BD。实际上,在DMA控制器开始从DSP读取数据到自身FIFO的同时,DMA控制器就读取上行BD,并且将已经读到FIFO中的数据写入到所读取的上行BD所确定的存储区域。
DMA访问内存时通过PCI总线进行的,使用PCI总线需要先向PCI总线控制器申请,在得到许可后才能使用PCI总线。这样就有可能出现这样的情况:DMA控制器在读取数据到自身FIFO后,却一直申请不到PCI总线来将FIFO中的数据写入内存。这样,FIFO队列中的数据只进不出,最终造成FIFO满荷的情况,也就是说FIFO的存储资源全部被占用。在对实时性要求很高的应用中,为了避免耽误后续数据的处理,如果出现FIFO满荷的情况,DMA控制器可以释放最先进入FIFO的数据所占用的FIFO存储资源,也就是丢弃最先进入FIFO的数据。这种情况可以看作是在从DSP向内存传送数据时出现的数据传输错误的一种情况。
DMA控制器在丢弃数据的同时,应该通知CPU发生了数据丢失的情况。所述通知CPU发生了数据丢失的情况,可以是修改所述上行错误信息寄存器,然后通知CPU来查询所述上行错误信息寄存器。
请参考图4,图4是本发明提供的在内存和数字信号处理器之间传送数据的方法在从内存向DSP传送数据时的流程图。由于在数据传送时,对下行数据邮箱和下行命令邮箱的处理类似,因此可以将DSP的8个通道的8个下行数据邮箱和8个下行命令邮箱,总共16个下行邮箱统一编号进行处理,例如通道0的下行数据邮箱为0号下行邮箱,通道0的下行命令邮箱为1号下行邮箱;通道1的下行数据邮箱为2号下行邮箱,通道1的下行命令邮箱为3号下行邮箱,依此类推。
对于从内存向DSP传送数据的情况,本发明采用轮询的方式,即由DMA控制器主动的去检查DSP的各个下行邮箱是否可以写入,如果当前下行邮箱可以写入,则进一步判断当前时刻内存中是否有需要传送给当前邮箱的数据,如果有则发起DMA读操作,通过PCI总线从内存中读出数据,并且写入当前邮箱。以下步骤为轮询一个下行邮箱时的处理流程。
步骤V01:判断当前下行邮箱的校验字是否为主机可操作,如果是则执行步骤V02,否则执行步骤V03。
在DSP内部,如果可以通过某个下行邮箱接收数据,则将该下行邮箱的校验字设为主机可操作。
步骤V02:判断内存是否可读,如果可读则执行步骤V04,否则执行步骤V03。
这里所说的判断内存是否可读,就是判断是否能通过PCI总线向内存发起DMA读操作。根据图2中对下行BD队列以及BD下行写指针和BD下行读指针的描述,CPU每次向内存中写入需要传送给DSP的数据,会将下行BD队列中的一个空闲BD转换成工作BD;而DMA控制器每次从内存中读取数据,会将下行BD队列中的一个工作BD转换成空闲BD。但是,由于CPU向内存写数据和DMA控制器从内存读数据是不同步的,因此有可能出现与当前下行邮箱对应的下行BD队列中没有工作BD的情况,也就是说内存中没有需要向当前下行邮箱写入的数据。这时,DMA控制器就无法从内存中读取数据。
DMA控制器判断内存是否可读的方法是:判断所述BD下行写指针与所述BD下行读指针是否指向同一个下行BD,如果是则认为内存不可读,否则认为内存可读。
步骤V03:结束对当前下行邮箱的处理。
步骤V04:从对应于当前下行邮箱的下行BD队列中,按照对应于当前下行邮箱的BD下行读指针读取下行BD。
步骤V05:按照所读取下行BD中的记载的数据所在内存的地址以及内存中数据的长度,从内存中读取数据到自身的FIFO中。
所读取的下行BD中记载的数据所在内存的地址是在系统初始化的时候设定的,所读取的下行BD中记载的内存中数据的长度是在该下行BD从空闲BD变为工作BD时由CPU设定的。除了设定下行BD中所记载的内存中数据的长度,CPU还需要在传送给DSP的数据的最开始,用长度字表明所传送数据的长度。
如前所述,每个工作BD确定了一块内存区域,下行BD还可以记载要将所述内存区域中的数据写入到DSP的下行邮箱还是下行命令邮箱。需要说明的是,CPU在将要传送给DSP的数据写入下行BD所确定的存储区域时,所述要传送给DSP的数据的长度不能超过DSP下行邮箱所能存放数据的最大长度。
步骤V06:将自身FIFO中的数据写入到当前下行邮箱的数据邮箱。
步骤V05和步骤V06实际上是同时进行的。
步骤V07:设置当前下行邮箱的校验字为主机不可操作。
在DSP内部,DSP也会对所有下行邮箱进行轮询,如果发现某个邮箱的校验字为主机不可操作,则说明该邮箱中有需要DSP进行处理的数据。DSP会进一步根据邮箱中数据最开始的长度字,确定该邮箱中需要DSP进行处理的数据长度。
当然,也可以在DSP的下行邮箱内部设置长度字。这样,在对步骤V05的描述中,CPU在传送给DSP的数据的最开始用长度字表明所传送数据的长度,这个过程就可以省略。但是DMA控制器在将数据写入下行邮箱后,需要设置所述下行邮箱内部的长度字。同时,DSP也不是根据邮箱中数据最开始的长度字来确定需要DSP进行处理的数据长度,而是根据所述下行邮箱内部的长度字来确定需要DSP进行处理的数据长度。
步骤V08:判断BD下行读指针是否到达与当前下行邮箱对应的下行BD队列的最大值,如果是则执行步骤V09,否则执行步骤V10。
步骤V09:令BD下行读指针指向与当前下行邮箱对应的下行BD队列头,结束对当前下行邮箱的处理。
步骤V10:将DB下行读指针指向与当前下行邮箱对应的下行BD队列中下一个下行BD,结束对当前下行邮箱的处理。
在实际情况中,也可以进一步在DMA控制器中设置下行邮箱门限和处理周期,然后采用下行邮箱计数和处理定时两种方式通知CPU处理内存中的数据。DMA控制器对执行了写入操作的DSP下行邮箱数进行计数,当下行邮箱数达到所述下行邮箱门限时,通知CPU处理内存中的数据;或者DMA控制器进行计时,每次到达处理周期后通知CPU处理内存中的数据。这两种方式同时工作,一种方式通知CPU处理内存中的数据后,要将另一种方式清零,从而避免重复通知CPU。也就是说,不管是下行邮箱计数到达下行邮箱门限,还是处理计时到达处理周期,DMA控制器在通知CPU处理内存中的数据时,还要将下行邮箱计数和处理计时全部清零。所述下行邮箱门限和处理周期可由CPU设置。
如果在执行步骤V01到步骤V10的过程中,DMA控制器收到CPU所发出的停止从内存进行DMA读出的指令,则DMA控制器也不是立即停止在对内存进行DMA读出。如果DMA控制器当前正在从内存中读取数据到自身的FIFO中,则首先DMA控制器需要将当前下行BD所表示的所有数据读取到自身FIFO,然后才结束从内存进行DMA读出;接下来DMA控制器还需要将FIFO中的数据全部写入到DSP的下行邮箱中。
在下行BD中也可以进一步设置出错信息,用来记录在从内存向DSP传送数据时出现的数据传输错误的情况。例如,DMA控制器根据当前BD,从内存中读取了100字节的数据,但是在向DSP的当前下行邮箱写入数据时,却只写入了50字节的数据。在这些情况下,DMA控制器可以就可以修改当前下行BD的错误信息。
同时,还可以进一步在FPGA内部设置下行错误信息寄存器,同样用来记录在从DSP向内存传送数据时出现的访问DSP错误的情况。DMA控制器在修改所述下行错误信息寄存器后,还可以通知CPU来查询所述下行错误信息寄存器。所述下行BD中的错误信息和FPGA内部的下行错误信息寄存器可以只设置一个。
在步骤V05中,DMA控制器先将内存的数据读入到自身的FIFO;然后在步骤V06中,DMA控制器将FIFO中的数据写入DSP的当前下行邮箱。在本发明中,为了提高向DSP写入数据时的可靠性,在DMA控制器向DSP的当前下行邮箱写完待写入数据后,需要DSP向DMA控制器返回确认信息。如果DMA控制器收到确认信息,则释放待写入数据所占用的FIFO存储空间;如果DMA控制器向DSP写完数据后,在预先设定的等待时长内没有收到DSP返回的确认信息,就再次尝试向DSP的当前下行邮箱写入待写入数据。
但是在实际应用中,尤其是在对实时性要求很高的应用中,不可能无限制的重复尝试向DSP的当前下行邮箱中写入数据。这时可以设置最大重试次数,DMA控制器重复向DSP的当前下行邮箱写入数据的次数超过所述最大重试次数时,释放待写入当前下行邮箱的数据占用的FIFO存储资源,同时通知CPU发生了数据丢失的情况。所述通知CPU发生了数据丢失的情况,可以是修改所述下行错误信息寄存器,然后通知CPU来查询所述下行错误信息寄存器。接下来,DMA控制器不再执行步骤V07到步骤V10,而是直接轮询下一个下行邮箱。这种情况也可以看作是在从DSP向内存传送数据时出现的数据传输错误的一种情况。
当然,作为一种替代方案,DMA控制器在预先设定的等待时长内没有收到DSP返回的确认信息,就直接释放待写入当前下行邮箱的数据占用的FIFO存储资源,并通知CPU发生了数据丢失的情况,而不再重试将待写入数据写入CPU的下行邮箱。
在步骤V01到步骤V10所述的流程中,实际上是由DMA控制器主动的去检查DSP的各个下行邮箱是否可以写入,如果当前下行邮箱可以写入,则进一步判断当前时刻内存中是否有需要传送给DSP的数据,如果有则发起DMA读操作,通过PCI总线从内存中读出数据,并且写入当前下行邮箱。作为一种替代方案,DMA控制器也可以不主动检查DSP的各个下行邮箱是否可以写入,而是在内存中有数据需要传送给DSP时,由CPU向DMA控制器发送预先设定的指令,然后DMA控制器才开始检查DSP各个下行邮箱的状态。
以上叙述只针对DMA控制器支持一个DSP的情况,对于DMA控制器支持多个DSP的情况,在工作时DMA控制器可以用片选信号来选定某个DSP,然后按照图2到图4所述的方案进行处理。这时,有可能出现多个DSP同时向DMA控制器发送中断的情况,这时候,DMA控制器也可以根据预先为每个DSP所设定的优先级,先处理由优先级高的DSP所发出的中断请求。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (22)
1、一种在内存和数字信号处理器之间传送数据的方法,其特征在于,该方法包括:
A1、判断数字信号处理器DSP的上行邮箱是否有需要传送给内存的数据,如果有则执行步骤B1,否则结束当前流程;
B1、判断内存是否可写,如果是,则执行步骤C1,否则结束当前流程;
C1、从DSP的上行邮箱中读取数据,并将所读取的数据写入到内存中。
2、根据权利要求1所述的方法,其特征在于,在DSP的上行邮箱中设置表示是否有数据需要传送的校验字,步骤A1所述判断DSP的上行邮箱是否有需要传送给内存的数据为:
判断上行邮箱的校验字是否为主机可操作,如果是则认为有需要传送给内存的数据,否则认为没有;
在步骤C1之后进一步包括:
将上行邮箱的校验字设置为主机不可操作。
3、根据权利要求1所述的方法,其特征在于,在DSP的上行邮箱中设置表示待传送数据长度的长度字,步骤C1所述从DSP的上行邮箱中读取数据为:
根据所述长度字,从DSP的上行邮箱中读取数据。
4、根据权利要求1所述的方法,其特征在于,设置先入先出FIFO队列,步骤C1所述从DSP的上行邮箱中读取数据为:
从DSP的上行邮箱中读取数据并放入FIFO中;
步骤C1所述将所读取的数据写入到内存中为:
将FIFO中的数据写入内存中。
5、根据权利要求1所述的方法,其特征在于,为DSP的上行邮箱设置上行缓冲区描述符BD队列,以及分别指向上行BD队列中BD的BD上行写指针和BD上行读指针,步骤B1所述判断内存是否可写为:
判断所述BD上行写指针指向的上行BD,是否为所述BD上行读指针指向的上行BD的前一个上行BD,如果是则认为内存不可写,否则认为内存可写;
步骤C1之后进一步包括:
判断所述BD上行写指针是否指向上行BD队列中的最后一个上行BD,如果是则修改所述BD上行写指针指向上行BD队列的第一个上行BD,否则修改所述BD上行写指针指向上行BD队列的下一个上行BD。
6、根据权利要求5所述的方法,其特征在于,所述上行BD包括数据所在内存的地址域和内存中数据的长度域,步骤C1所述将所读取的数据写入到内存中为:
根据BD上行写指针所指向的上行BD中的数据所在内存的地址域,将数据写入到内存中,并且根据所写入的数据长度,修改BD上行写指针所指向的上行BD的内存中数据的长度域。
7、根据权利要求1所述的方法,其特征在于,在步骤C1之后进一步包括:
判断是否需要通知中央处理单元CPU处理内存中的数据,如果需要则通知CPU,否则结束当前流程。
8、根据权利要求1所述的方法,其特征在于,设置上行错误信息寄存器,步骤C1进一步包括:
判断在从DSP的上行邮箱中读取数据的过程中,和/或,在将所读取的数据写入到内存中的过程中是否出现数据传输错误,如果出现则将所述错误记录在所述上行错误信息寄存器中,并通知CPU查询所述上行错误信息寄存器。
9、根据权利要求5所述的方法,其特征在于,所述上行BD进一步包括出错信息域,步骤C1进一步包括:
判断在从DSP的上行邮箱中读取数据的过程中,和/或,在将所读取的数据写入到内存中的过程中是否出现数据传输错误,如果出现,则将所述错误记录在所述上行BD的出错信息域中。
10、根据权利要求8或9所述的方法,其特征在于,设置先入先出FIFO队列,步骤C1所述从DSP的上行邮箱中读取数据为:
从DSP的上行邮箱中读取数据并放入FIFO中;
步骤C1所述将所读取的数据写入到内存中为:
将FIFO中的数据写入内存中;
所述判断在从DSP的上行邮箱中读取数据的过程中,和/或,在将所读取的数据写入到内存中的过程中是否出现数据传输错误为:
判断是否发生FIFO满荷的情况,如果出现则认为出现数据传输错误,否则认为未出现数据传输错误。
11、一种在内存和数字信号处理器之间传送数据的方法,其特征在于,该方法包括:
A2、判断数字信号处理器DSP的下行邮箱是否可以写入,如果可以写入,则执行步骤B2,否则结束当前流程;
B2、判断内存中是否有需要传送给DSP的数据,如果有则执行步骤C2,否则结束当前流程;
C2、从内存中读取数据,并将所读取的数据写入到DSP的下行邮箱中。
12、根据权利要求11所述的方法,其特征在于,在DSP的下行邮箱中设置表示是否可以写入的校验字,步骤A2所述判断DSP的下行邮箱是否有需要传送给内存的数据为:
判断下行邮箱的校验字是否为主机可操作,如果是则认为可以写入,否则认为不可写入;
在步骤C之后进一步包括:
将下行邮箱的校验字设置为主机不可操作。
13、根据权利要求11所述的方法,其特征在于,在DSP的下行邮箱中设置表示已写入数据长度的长度字,步骤C2在所述将所读取的数据写入到DSP的下行邮箱后进一步包括:
根据写入到DSP下行邮箱的数据长度,设置所述长度字。
14、根据权利要求11所述的方法,其特征在于,设置先入先出FIFO队列,步骤C2所述从内存中读取数据为:
从内存中读取数据并放入FIFO中;
步骤C2所述将所读取的数据写入到DSP的下行邮箱中为:
将FIFO中的数据写入到DSP的下行邮箱中。
15、根据权利要求11所述的方法,其特征在于,为DSP的下行邮箱设置下行缓冲区描述符BD队列,以及分别指向下行BD队列中BD的BD下行写指针和BD下行读指针,步骤B2所述判断内存中是否有需要传送给DSP的数据为:
判断所述BD下行写指针指向的下行BD,是否与所述BD下行读指针指向下行BD队列中的同一个下行BD,如果是则认为内存中没有需要传送给DSP的数据,否则认为内存中有需要传送给DSP的数据;
步骤C之后进一步包括:
判断所述BD下行写指针是否指向下行BD队列中的最后一个下行BD,如果是则修改所述BD下行写指针指向下行BD队列的第一个下行BD,否则修改所述BD下行写指针指向下行BD队列的下一个下行BD。
16、根据权利要求15所述的方法,其特征在于,所述下行BD包括数据所在内存的地址域和内存中数据的长度域,步骤C2所述从内存中读取数据为:
按照BD下行读指针所指向的下行BD中所的数据所在内存的地址域和内存中数据的长度域,从内存中读取数据。
17、根据权利要求11所述的方法,其特征在于,在步骤C2之后进一步包括:
判断是否需要通知中央处理单元CPU处理内存中的数据,如果需要则通知CPU,否则结束当前流程。
18、根据权利要求11所述的方法,其特征在于,设置下行错误信息寄存器,步骤C2进一步包括:
判断在从内存中读取数据的过程中,和/或,在将所读取的数据写入到DSP的下行邮箱中的过程中是否出现数据传输错误,如果出现,则将所述错误记录在所述下行错误信息寄存器中,并通知CPU查询所述下行错误信息寄存器。
19、根据权利要求15所述的方法,其特征在于,所述下行BD进一步包括出错信息域,步骤C进一步包括:
判断在从内存中读取数据的过程中,和/或,在将所读取的数据写入到DSP的下行邮箱中的过程中是否出现数据传输错误,如果出现,则将所述错误记录在所述下行BD的出错信息域中。
20、根据权利要求18或19所述的方法,其特征在于,设置等待时长,所述判断在从内存中读取数据的过程中,和/或,在将所读取的数据写入到DSP的下行邮箱中的过程中是否出现数据传输错误为:
判断在将所读取的数据写入到DSP的下行邮箱后,在所述等待时长内,是否收到DSP返回的确认信息,如果收到则认为未出现数据传输错误,否则认为出现数据传输错误。
21、根据权利要求18或19所述的方法,其特征在于,设置等待时长和最大重试次数,所述判断在从内存中读取数据的过程中,和/或,在将所读取的数据写入到DSP的下行邮箱中的过程中是否出现数据传输错误为:
D1、判断在将所读取的数据写入到DSP的下行邮箱后,在所述等待时长内,是否收到DSP返回的确认信息,如果收到则认为未出现数据传输错误,否则执行步骤D2;
D2、判断所述向DSP的下行邮箱写入数据的操作所进行的次数,是否超过所述最大重试次数,如果超过则认为出现数据传输错误,否则再次将所读取的数据写入到DSP的下行邮箱中,返回执行步骤D1。
22、根据权利要求14所述的方法,其特征在于,设置等待时长和最大重试次数,步骤C2进一步包括:
C21、判断在将所读取的数据写入到DSP的下行邮箱后,在所述等待时长内,是否收到DSP返回的确认信息,如果收到则释放所读取数据占用的FIFO存储资源,否则执行步骤C22;
C22、判断所述向DSP的下行邮箱写入数据的操作所进行的次数,是否超过所述最大重试次数,如果超过则释放所读取数据占用的FIFO存储资源,否则再次将所读取数据写入到DSP的下行邮箱中,返回执行步骤C21。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100874773A CN100395737C (zh) | 2006-06-08 | 2006-06-08 | 一种在内存和数字信号处理器之间传送数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100874773A CN100395737C (zh) | 2006-06-08 | 2006-06-08 | 一种在内存和数字信号处理器之间传送数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1851678A true CN1851678A (zh) | 2006-10-25 |
CN100395737C CN100395737C (zh) | 2008-06-18 |
Family
ID=37133157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100874773A Expired - Fee Related CN100395737C (zh) | 2006-06-08 | 2006-06-08 | 一种在内存和数字信号处理器之间传送数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100395737C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901199A (zh) * | 2010-07-30 | 2010-12-01 | 中兴通讯股份有限公司 | 一种数据透明传输的方法及系统 |
CN101202707B (zh) * | 2007-12-03 | 2010-12-08 | 杭州华三通信技术有限公司 | 高速单板传输报文的方法、现场可编程门阵列及高速单板 |
CN107844435A (zh) * | 2017-11-08 | 2018-03-27 | 北京锐安科技有限公司 | 一种缓存系统、方法及装置 |
CN109144742A (zh) * | 2017-06-15 | 2019-01-04 | 北京忆芯科技有限公司 | 通过队列交换信息的方法和处理队列的系统 |
CN110515872A (zh) * | 2018-05-21 | 2019-11-29 | 阿里巴巴集团控股有限公司 | 直接内存存取方法、装置、专用计算芯片及异构计算系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6412029B1 (en) * | 1999-04-29 | 2002-06-25 | Agere Systems Guardian Corp. | Method and apparatus for interfacing between a digital signal processor and a baseband circuit for wireless communication system |
TW583437B (en) * | 2001-05-29 | 2004-04-11 | Sanyo Electric Co | Display device and its control circuit |
US6789056B2 (en) * | 2002-12-31 | 2004-09-07 | Intel Corporation | DSP interface for packet processing |
CN100514281C (zh) * | 2004-03-03 | 2009-07-15 | 浙江大学 | 一种应用于数字信号处理器流水线中的数据旁路系统 |
CN100563198C (zh) * | 2004-05-29 | 2009-11-25 | 华为技术有限公司 | 数字信号处理系统内消息包的处理方法 |
CN100349150C (zh) * | 2005-06-06 | 2007-11-14 | 北京中星微电子有限公司 | 通过直接存储器访问控制器传输数据的系统及方法 |
-
2006
- 2006-06-08 CN CNB2006100874773A patent/CN100395737C/zh not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101202707B (zh) * | 2007-12-03 | 2010-12-08 | 杭州华三通信技术有限公司 | 高速单板传输报文的方法、现场可编程门阵列及高速单板 |
CN101901199A (zh) * | 2010-07-30 | 2010-12-01 | 中兴通讯股份有限公司 | 一种数据透明传输的方法及系统 |
WO2012013080A1 (zh) * | 2010-07-30 | 2012-02-02 | 中兴通讯股份有限公司 | 一种数据透明传输的方法及系统 |
CN101901199B (zh) * | 2010-07-30 | 2015-04-01 | 中兴通讯股份有限公司 | 一种数据透明传输的方法及系统 |
CN109144742A (zh) * | 2017-06-15 | 2019-01-04 | 北京忆芯科技有限公司 | 通过队列交换信息的方法和处理队列的系统 |
CN109144742B (zh) * | 2017-06-15 | 2020-02-07 | 北京忆芯科技有限公司 | 通过队列交换信息的方法和处理队列的系统 |
CN107844435A (zh) * | 2017-11-08 | 2018-03-27 | 北京锐安科技有限公司 | 一种缓存系统、方法及装置 |
CN110515872A (zh) * | 2018-05-21 | 2019-11-29 | 阿里巴巴集团控股有限公司 | 直接内存存取方法、装置、专用计算芯片及异构计算系统 |
CN110515872B (zh) * | 2018-05-21 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 直接内存存取方法、装置、专用计算芯片及异构计算系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100395737C (zh) | 2008-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100351816C (zh) | 数据传送控制装置、电子装置和数据传送控制方法 | |
CN1104128C (zh) | 异步传输模式通信设备 | |
CN1099678C (zh) | 非易失性半导体磁盘装置 | |
CN100346285C (zh) | 处理器芯片与存储控制系统及方法 | |
CN1188998C (zh) | 数据传输控制装置和电子设备 | |
CN1475923A (zh) | 数据传输控制系统、电子设备、程序及数据传输控制方法 | |
CN1591374A (zh) | 直接存储器存取传输控制器 | |
CN1851678A (zh) | 一种在内存和数字信号处理器之间传送数据的方法 | |
CN1586063A (zh) | 流数据处理器、流数据处理方法、程序和媒体 | |
CN1515420A (zh) | 打印机系统及其动作控制方法 | |
CN1205145A (zh) | 信息包收发装置及信息包接收装置 | |
CN1551592A (zh) | 数据传输控制装置、电子设备及数据传输控制方法 | |
CN1859562A (zh) | 视频点播方法、系统、服务器和终端 | |
CN1214592C (zh) | 多通道数据直接内存访问系统和方法 | |
CN1117315C (zh) | 微处理机及多处理机系统 | |
CN1617160A (zh) | 用于识别标准卡以及非标准卡的卡识别系统 | |
CN1801813A (zh) | 一种动态内容播放方法与装置 | |
CN1790309A (zh) | 多处理器系统 | |
CN1758213A (zh) | 带有共享内容的异构型并行多线程处理器(hpmt) | |
CN1631017A (zh) | 发送装置、接收装置和发送/接收装置 | |
CN101038572A (zh) | 数据传送装置及数据传送系统 | |
CN1677956A (zh) | 资源管理装置、资源管理系统以及资源管理方法 | |
CN1821946A (zh) | 一种存储系统以及存储数据的方法和读取数据的方法 | |
CN101048739A (zh) | 多处理器系统、同步控制装置及同步控制方法 | |
CN1731361A (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 | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: NEW H3C TECHNOLOGIES Co.,Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: HANGZHOU H3C TECHNOLOGIES Co.,Ltd. |
|
CP03 | Change of name, title or address | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080618 |