CN1474568A - 多通道数据直接内存访问***和方法 - Google Patents

多通道数据直接内存访问***和方法 Download PDF

Info

Publication number
CN1474568A
CN1474568A CNA021287090A CN02128709A CN1474568A CN 1474568 A CN1474568 A CN 1474568A CN A021287090 A CNA021287090 A CN A021287090A CN 02128709 A CN02128709 A CN 02128709A CN 1474568 A CN1474568 A CN 1474568A
Authority
CN
China
Prior art keywords
data
sent
descriptor
bag
buffer area
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
Application number
CNA021287090A
Other languages
English (en)
Other versions
CN1214592C (zh
Inventor
V 胡
胡骎
程明强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HiSilicon Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN 02128709 priority Critical patent/CN1214592C/zh
Publication of CN1474568A publication Critical patent/CN1474568A/zh
Application granted granted Critical
Publication of CN1214592C publication Critical patent/CN1214592C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Bus Control (AREA)

Abstract

一种涉及数字信息传输的多通道数据直接内存访问***和方法,本发明利用空闲队列描述子、完成队列描述子等数据结构信息,用一个接收DMA模块不连续地接收各通道的数据,在FREE_FIFO存储器中的空闲队列描述子数目少于某个设定的门限时,根据其内部实时调整的读空闲队列指针通过总线接口控制模块从片外主存中的空闲队列;在发送DMA模块中,利用待发送队列描述子、发送完成队列描述子、配置RAM、待发包数据描述子的数据结构信息用一个发送DMA模块不连续地发送多通道数据,将各通道在主存中的连续数据正确发送到各通道,经济、智能、高效地处理芯片内部和片外主存之间多通道数据的不连续数据搬移。

Description

多通道数据直接内存访问***和方法
技术领域
本发明涉及数字信息的传输,尤其涉及一种多通道数据直接内存访问***和方法。
背景技术
在现有技术中,没有芯片内部与片外主存之间多通道数据直接访问的方法,对于芯片内部与片外主存之间采用数据的单通道访问在宽带应用中对于设备性能的提升产生阻碍。
发明内容
本发明的目的在于提供一种实现芯片内部与片外主存之间多通道不连续数据直接访问的多通道数据直接内存访问***和方法。
本发明所采用的技术方案为:这种多通道数据直接内存访问***,其特征在于:它包括直接访问处理模块,该直接访问处理模块包括接收DMA模块和发送DMA模块;在接收DMA模块中具有FREE_FIFO存储器、DONE_FIFO存储器和配置RAM存储器,以及用于访问控制的控制逻辑,FREE_FIFO存储器用于存放空闲队列描述子Free Queue Descriptor,DONE_FIFO存储器用于存放完成队列描述子Done Queue Descriptor;在发送DMA模块中具有PENDING_FIFO存储器、DONE_FIFO存储器和配置RAM存储器,以及用于访问控制的控制逻辑,PENDING_FIFO存储器用于存放待发送队列描述子,DONE_FIFO存储器用于存放发送完成队列描述子;
所述的接收DMA模块(21)中配置用于存放空闲队列描述子的数据FIFO存储器。
这种用于上述多通道数据直接内存访问***的多通道数据直接内存访问方法,其特征在于:
在接收数据时,各通道的数据经数据处理模块的正常处理后,包数据发至接收DMA模块;接收DMA模块根据空闲队列描述子Free QueueDescriptor提供的片外主存中的空闲数据缓存区地址以及最后用于描述该缓存区的信息的包数据描述子在片外主存中的位置经总线接口模块,通过片外总线将数据存入片外主存;在发送数据时,待发送包链的数据经片外总线通过总线接口模块,在发送DMA模块产生发送完成队列描述子,CPU将需要发送的数据通过待发送包描述子和待发送队列描述子的形式写到片外主存中的待发送包数据描述子队列和待发送队列中,更新发送DMA模块中的待发送队列描述子的指针,发送DMA模块根据待发送队列描述子及待发送包数据描述子的信息,修改待发送包数据描述子和配置RAM的信息,将CPU要发送的待发送包数据串链起来,从数据处理模块传至相应的通道;
所述的包数据描述子的数据结构包括:
Data Buffer Address:数据缓存区的起始地址;
Next Descriptor Pointer:数据包下一个数据缓存区的包数据描述子指针;
Length:该数据缓存区的数据长度;
Buffer Status:数据缓存区状态,用以表示该数据缓存区里填的数据是该数据包的开始部分还是中间部分,或者最后部分;
Channel:通道号,数据属于哪个通道;
所述的接收DMA模块使用完成队列描述子Done Queue Descriptor反映接收DMA模块将数据填到空闲数据缓存区后,CPU处理时需要用到的已经填到主存里的完整的或非完整的数据包的信息;接收DMA模块中的配置RAM存储器按通道分块,用于存放接收DMA模块在从数据处理模块接收各通道数据过程中根据控制逻辑产生的有关包数据描述子等各种信息;接收DMA模块在数据包长度超过一个数据缓存区的容量时,通过包数据描述子和完成队列描述子的信息,将多个数据缓存区链接起来存放一个完整的数据包;接收DMA模块通过中断告诉CPU有数据可以处理,CPU通过接收完成队列描述子中的第一个数据缓冲区的包数据描述子指针,找到第一个数据缓存区的包数据描述子,根据其中的数据缓存区开始地址找到第一个数据缓存区,处理完第一个数据缓存区的数据后,根据第一个数据缓存区的包数据描述子中的信息找到第二个数据缓存区的包数据描述子……依此类推,直至将该数据包或要处理的数据全部处理完毕。
所述的发送DMA模块接收到CPU的信息,通知某个通道的一个待发送包链,发送DMA模块存放待发送队列描述子,待发送队列描述子反映待发送包链的第一个数据缓存区对应的包数据描述子及该待发送包链属于哪个通道,待发送队列描述子对应相应的待发包数据描述子;待发送包链的数据经片外总线通过总线接口模块,由发送DM模块根据相应的控制逻辑产生发送完成队列描述子,存放到内部的DONE_FIFO存储器中;CPU将需要发送的数据通过待发送包描述子和待发送队列描述子的形式写到片外主存中的待发送包数据描述子队列和待发送队列中,更新发送DMA模块中的待发送队列描述子的指针,发送DMA模块读取待发送队列描述子;发送DMA模块根据待发送队列描述子及待发送包数据描述子的信息,修改待发送包数据描述子和配置RAM的信息,将CPU要发送的待发送包数据串链起来,根据待发送包数据所属通道的包数据发送情况,产生正确的状态信息放在配置RAM中,同时响应数据模块申请包数据的请求,从数据处理模块传至相应的通道。
所述的数据处理模块向发送DMA模块申请某个通道的数据时,发送DMA模块根据数据处理模块送过来的通道号从配置RAM存储器中读出数据处理模块想要申请的通道的信息,从主存中读出相应的待发包数据描述子,根据其中的信息从主存中的数据缓冲区读出数据送给数据处理模块,递减当前数据缓冲区的剩余数据量。
所述的数据处理模块如果还未等发送DMA模块将当前正在读的数据缓冲区的数据全部读出送给数据处理模块就因为内部原因而停止接收数据,要求停止当前传送,发送DMA模块停止从数据缓存区读数据,将当前读数据缓冲区地址写到配置RAM存储器该通道部分的相应信息中;待数据处理模块在其有能力接收该通道的数据的时候,向发送DMA模块申请该通道的数据,发送DMA模块从配置RAM存储器读出该通道的信息,发现向数据缓冲区读数据送给数据处理模块、递减数据缓冲区的剩余数据量。
所述的接收DMA模块中,完成队列描述子Done Queue Descriptor主要包括:需要处理的数据包或数据属于那个通道、需要处理的数据包或数据占了几个数据缓存区、需要处理的数据包或数据所占用的几个数据缓存区的第一个缓存区所对应的包数据描述子指针、需要处理的数据是否一个完整的数据包;其数据结构包括:
Descriptor Pointer:指向数据包或则包数据所占的第一个数据缓存区的包数据描述子的指针;
Channel:数据属于哪个通道;
Buffers:等待CPU处理的数据包或数据占用了几个数据缓存区;
Packet Status:包数据状态,记录在接收过程中发生错误的类型;
EOF:包结束符,表示一个数据包已结束;
在接收DMA模块中,配置RAM存储器按通道分块,用于存放接收DAM在从数据处理模块接收各通道数据过程中产生的一些中间信息,以及CPU对各通道的配置信息,其数据结构包括:
Current Data Buufer Address:数据缓存区当前地址,由接收DMA模块(21)写入;
Current Descriptor Pointer:当前数据缓存区的包数据描述子指针,由接收DMA模块(21)写入;
Start Descriptor Pointer:CPU要处理数据的第一个数据缓存区的包数据描述子指针,由接收DMA模块写入;
Threshold:控制接收DMA模块在填了几个数据缓存区后生成一个接收完成队列描述子,由CPU写入;
Data Number:数据缓存区的数据量,由接收DMA模块写入,CPU初始化时置零;
Threshold Count:当前数据包所占用的实际数据缓存区数,由接收DMA模块写入,CPU初始化时置零;
Buffer Size:该通道数据缓存区的大小,由CPU写入;
接收DMA模块在数据包长度超过一个数据缓存区的容量时,通过Next Descriptor Pointer和EOF位,将多个数据缓存区链接起来存放一个完整的数据包;
所述的接收DMA模块中配置数据FIFO存储器,在FREE_FIFO存储器中的空闲队列描述子数目少于某个设定的门限时,根据其内部实时调整的读空闲队列指针通过总线接口控制模块从片外主存中的空闲队列:存放空闲队列描述子的缓存区,读取足够多的空闲队列描述子将FREE_FIFO存储器填满;接收DMA模块接到数据处理模块向接收DMA模块的请求,一边从数据处理模块接收数据填到数据FIFO存储器中,同时从配置RAM存储器中将该通道的信息读出。
本发明的有益效果为:在本发明中,在接收DMA模块中具有FREE_FIFO存储器、DONE_FIFO存储器和配置RAM存储器,以及用于访问控制的控制逻辑,FREE_FIFO存储器用于存放空闲队列描述子,DONE_FIFO存储器用于存放完成队列描述子,利用空闲队列描述子、完成队列描述子、配置RAM、包数据描述子等数据结构信息,用一个接收DMA模块不连续地接收各通道的数据,在接收DMA模块中配置数据FIFO存储器,在FREE_FIFO存储器中的空闲队列描述子数目少于某个设定的门限时,根据其内部实时调整的读空闲队列指针通过总线接口控制模块从片外主存中的空闲队列,以读取足够多的空闲队列描述子将FREEFIFO存储器填满,接收DMA模块接到数据处理模块向接收DMA模块的请求,一边从数据处理模块接收数据填到数据FIFO存储器中,同时从配置RAM存储器中将该通道的信息读出,可以加快处理速度;在发送DMA模块中具有PENDING_FIFO存储器、DONE_FIFO存储器和配置RAM存储器,以及用于访问控制的控制逻辑,PENDING_FIFO存储器用于存放待发送队列描述子,DONE_FIFO存储器用于存放发送完成队列描述子,利用待发送队列描述子、发送完成队列描述子、配置RAM、待发包数据描述子的数据结构信息用一个发送DMA模块不连续地发送多通道数据,当芯片内部通过片外总线和片外主存之间进行不连续数据传送时,将各通道的连续数据从芯片内部写到片外主存中的正确位置并通知CPU作处理,可根据需要随时停止当前正在进行的数据搬移,将各通道在主存中的连续数据正确发送到各通道;本发明能经济、智能、高效地处理芯片内部和片外主存之间多通道数据的不连续数据搬移,实现芯片内部与片外主存之间多通道不连续数据直接访问。
附图说明
图1为本发明总体结构示意图;
图2为接收DMA模块结构示意图;
图3为接收DMA模块中配置RAM存储器数据结构示意图;
图4为接收处理流程示意图;
图5为接收完成队列描述子、包数据描述子、数据缓存区之间的关系示意图;
图6为发送DMA模块结构示意图;
图7为待发送队列描述子指向通道的一个待发送数据包的例子示意图;
图8为待发送队列描述子指向通道的两个待发送数据包的例子示意图;
图9为发送DMA模块中配置RAM存储器数据结构示意图;
图10为发送DMA模块串链流程示意图;
图11为发送DMA模块串链结构示意图;
图12为发送DMA模块发送数据流程示意图。
具体实施方式
下面根据附图和实施例对本发明作进一步详细说明:
根据图1、图2、图3、图4、图5、图6、图7、图8、图9、图10、图11和图12:
在本发明中,如图1、图2和图6所示,直接访问处理模块包括接收DMA模块21和发送DMA模块22;在接收DMA模块21中具有FREE_FIFO存储器、DONE_FIFO存储器和配置RAM存储器,以及用于访问控制的控制逻辑,FREE_FIFO存储器用于存放空闲队列描述子Free QueueDescriptor,DONE_FIFO存储器用于存放完成队列描述子;
在发送DMA模块22中具有PENDING_FIFO存储器、DONE_FIFO存储器和配置RAM存储器,以及用于访问控制的控制逻辑,PENDING_FIFO存储器用于存放待发送队列描述子,DONE_FIFO存储器用于存放发送完成队列描述子;
如图1和图2所示,各通道的数据经数据处理模块1的正常处理后,包数据发至接收DMA模块21;接收DMA模块21根据空闲队列描述子FreeQueue Descriptor提供的片外主存中的空闲数据缓存区地址以及最后用于描述该缓存区的信息的包数据描述子在片外主存中的位置经总线接口模块3,通过片外总线将数据存入片外主存;空闲队列描述子FreeQueue Descriptor的数据结构如表1所示:
Free  Data  Buffer Address Free Packet Descriptor Pointer
                        表1其中:
Free Data Buffer Address:片外主存中空闲数据缓存区的起始地址;
Free Packet Descriptor Pointer:包数据描述子指针,指向用于描述该数据缓存区的信息的包数据描述子在主存中的位置。
如表2所示,包数据描述子的数据结构包括:
Data Buffer Address:数据缓存区的起始地址;
Next Descriptor Pointer:数据包下一个数据缓存区的包数据描述子指针;
Length:该数据缓存区的数据长度;
Buffer Status:数据缓存区状态,用以表示该数据缓存区里填的数据是该数据包的开始部分还是中间部分,或者最后部分;
其中:000代表数据包的第一个数据缓存区;
      010代表数据包的中间数据缓存区;
      100代表数据包的最后一个数据缓存区;
Channel:通道号,数据属于哪个通道;
    Data Buffer Address
Channel Buffer  Status Length     Next  DescriptorPointer
                      表2
接收DMA模块21使用完成队列描述子Done Queue Descriptor反映接收DMA模块21在将数据填到一个或多个空闲数据缓存区后,或者将一个数据包全部填到片外主存的空闲数据缓存区后,CPU处理时需要用到的已经填到主存里的完整的或非完整的数据包的信息;
如表3所示,在接收DMA模块21中,完成队列描述子Done QueueDescriptor主要包括:需要处理的数据包或数据属于那个通道、需要处理的数据包或数据占了几个数据缓存区、需要处理的数据包或数据所占用的几个数据缓存区的第一个缓存区所对应的包数据描述子指针、需要处理的数据是否一个完整的数据包;其数据结构包括:
Descriptor Pointer:指向数据包或则包数据所占的第一个数据缓存区的包数据描述子的指针;
Channel:数据属于哪个通道;
Buffers:等待CPU处理的数据包或数据占用了几个数据缓存区;
Packet Status:包数据状态,记录在接收过程中发生错误的类型;
EOF:包结束符,表示一个数据包已结束。
    EOF     Packet  Status     Buffers     Channel   Descriptor  Pointer
                       表3
接收DMA模块21中的配置RAM存储器存储器按通道分块,用于存放接收DMA模块2 1在从数据处理模块1接收各通道数据过程中根据控制逻辑产生的有关包数据描述子等各种信息,利用包数据描述子记录数据缓存区的信息以及CPU在处理时知道被处理数据的信息;
如图3所示,在接收DMA模块21中,配置RAM存储器按通道分块,用于存放接收DAM在从数据处理模块1接收各通道数据过程中产生的一些中间信息,以及CPU对各通道的配置信息,其数据结构包括:
Current Data Buufer Address:数据缓存区当前地址,由接收DMA模块21写入;
Current Descriptor Pointer:当前数据缓存区的包数据描述子指针,由接收DMA模块21写入;
Start Descriptor Pointer:CPU要处理数据的第一个数据缓存区的包数据描述子,由接收DMA模块21写入;
Threshold:控制接收DMA模块21在填了几个数据缓存区后生成一个接收完成队列描述子,由CPU写入;
Data Number:数据缓存区的数据量,由接收DMA模块21写入,CPU初始化时置零;
Threshold Count:当前数据包所占用的实际数据缓存区数,由接收DMA模块21写入,CPU初始化时置零;
Buffer Size:该通道数据缓存区的大小,由CPU写入;
接收DMA模块21在数据包长度超过一个数据缓存区的容量时,通过包数据描述子和完成队列描述子的信息,将多个数据缓存区链接起来存放一个完整的数据包;接收DMA模块21在数据包长度超过一个数据缓存区的容量时,通过Next Descriptor Pointer和EOF位,将多个数据缓存区链接起来存放一个完整的数据包;接收DMA模块21中配置数据FIFO存储器,在FREE_FIFO存储器中的空闲队列描述子数目少于某个设定的门限时,根据其内部实时调整的读空闲队列指针通过总线接口控制模块从片外主存中的空闲队列:存放空闲队列描述子的缓存区,读取足够多的空闲队列描述子将FREE_FIFO填满;接收DMA模块21接到数据处理模块1向接收DMA模块21的请求,一边从数据处理模块1接收数据填到数据FIFO存储器中,同时从配置RAM存储器中将该通道的信息读出。
根据图1、图2,如图4和图5所示,如果配置RAM存储器中的Threshold Count和Data Number都为“0”,表示刚开始接收该当前通道的数据,或则接收DMA模块21在通知CPU处理该通道过去接收的数据后直到现在才接收该通道的数据,需要将数据填到一个新的数据缓冲区,接收DMA模块21从FREE_FIFO存储器读出一个空闲队列描述子,根据其中空闲数据缓存区地址Free Data Buffer Address将包数据填入数据缓存区,同时递增数据缓冲区中的数据量、实时调整写数据缓存区的地址,同时用指向该数据缓冲区的包数据描述子的包数据描述子指针更新配置RAM存储器的Current Descriptor;
如果从数据处理模块1接收的数据不足以填满一个数据缓存区,或则还没有接收到一个完整的数据包,接收DMA模块21在数据FIFO存储器为空时,结束通过总线接口模块3向数据缓冲区填数据的操作,用该数据缓存区中的当前数据量更新配置RAM存储器中的Data Number、用写数据缓冲区地址更新配置RAM存储器中的Current Data BufferAddress、该数据包目前已经占用了片外主存中的几个数据缓存区更新配置RAM存储器中的Threshold Count;
接收DMA模块21从数据处理模块1再次接收到该通道的数据时,发现配置RAM存储器中的Data Number或Threshold Count不为“0”,则根据配置RAM存储器中的Current Data Buffer Address通过接口控制模块紧接着上次填的地址将数据填入上次未填满的数据缓存区,递增已经填在该数据缓存区的实际数据量、调整写数据缓存区地址;
接收DMA模块21在向数据缓存区填写数据过程中,发现已经填到数据缓存区的数据量达到了配置RAM存储器中的Buffer Size,CPU给该通道设置的数据缓冲区最多可缓存的数据量,判断已经填满了一个数据缓冲区,将该数据包占用的数据缓存区加一,同时根据从数据处理模块1接收的数据中发现该数据包未结束,则从FREE_FIFO存储器读出的一个新空闲队列描述子找到下一个空闲数据缓存区,然后用新空闲队列描述子中的包数据描述子指针写配置RAM存储器中Current DescriptorPointer指向的包数据描述子中的Next Descriptor Pointer域,用当前被填满的数据缓存区的起始地址、数据所属通道、该数据缓冲区的数据量、该数据缓冲区在当前数据包中的状态,该数据包数据占用的几个数据缓冲区中的第一个数据缓冲区,该数据包数据占用的几个数据缓存区的中间一个,该数据包数据占用的几个数据缓冲区的最后一个数据缓冲区,写包数据描述子的相应域,用新读出的空闲队列描述子中的Free Packet Descriptor Pointer更新配置RAM存储器中的CurrentDescriptor Pointer:
如果发现当前数据包全部被填完或已经填满了当前数据缓冲区,且当前该数据包占用的数据缓冲区数目已经达到了配置RAM存储器中Threshold值,即CPU预先设定的填多少个数据缓冲区生成一个完成队列描述子,则将当前数据包或数据所属通道、配置RAM存储器中的Threshold Count,即数据包或数据目前已经占用的数据缓存区数目、配置RAM存储器中的Start Descriptor Pointer,即数据包或数据所占用的几个数据缓存区的第一个缓存区所对应的包数据描述子指针、包结束符,即用以表示需要处理的数据是一个完整的数据包还是数据包的一部分数据,作为完成队列描述子写入DONE_FIFO存储器,将配置RAM存储器中的Threshold Count和Data Number清零;
接收DMA模块21在DONE_FIFO存储器里有了一定数目的接收完成队列描述子时,根据其内部实时调整的写完成队列指针将DONE_FIFO存储器里的接收完成队列描述子按顺序写入主存中的接收完成队列:存放接收完成队列描述子的缓存空间,并通过中断告诉CPU有数据可以处理,将该数据包或要处理的数据全部处理完毕。
这样,接收DMA模块21通过中断告诉CPU有数据可以处理,CPU通过接收完成队列描述子中的第一个数据缓冲区的包数据描述子指针,找到第一个数据缓存区的包数据描述子,根据其中的数据缓存区开始地址找到第一个数据缓存区,处理完第一个数据缓存区的数据后,根据第一个数据缓存区的包数据描述子中的信息找到第二个数据缓存区的包数据描述子,再根据包数据描述子中数据缓存区开始地址找到第二个数据缓存区,处理完第二个数据缓存区后再根据第二个数据缓冲区的包数据描述子中的信息找到第三个数据缓冲区的包数据描述子……依此类推,直至将该数据包或要处理的数据全部处理完毕;
根据图1、图6、图7、图8、图9、图10、图11和图12所示,在发送DMA模块22中,CPU通知发送DMA模块22某个通道的一个待发送包链,发送DMA模块22存放待发送队列描述子,待发送队列描述子反映待发送包链的第一个数据缓存区对应的包数据描述子及该待发送包链属于哪个通道,待发送队列描述子对应相应的待发包数据描述子;
如表4所示,待发送队列描述子数据结构:
    Channel     Descriptor Pointer
                           表4
其中:
Descriptor Pointer:描述子指针,指向待发送包链的第一个数据缓存区对应的包数据描述子。
Channel:通道号,表明待发送包链属于哪个通道。
在发送DMA模块22中,待发包数据描述子的数据结构如表5所示:
    Data Buffer  Address
  EOF   CV   Length     Next  Descriptor  Pointer
  PV  Channel     Next  Pending  Descriptor  Pointer
                                 表5
其中:Data Buffer Address:待发送数据缓存区起始地址,由CPU写入;
Next Descriptor Poitner:下一待发送包数据描述子,在EOF为“0”时指向该待发送数据包的下个待发送数据缓存区的包数据描述子。在EOF和CV都是“1”的时候,指向下个待发送数据包的的第一个待发送数据缓存区的包数据描述子,由CPU写入;
Length:数据长度,待发送数据缓存区的数据量,由CPU写入;
CV:链有效标识(Chain Valid),该位作用在介绍Next DescriptorPointer时已经介绍过,由CPU写入;
EOF:帧结束表示(End Of Frame),为“1”表示当前待数据缓存区是该待发送数据包的最后一个待发送数据缓存区了,由CPU写入;
Next Pengding Descriptor Pointer:在PV为“1”的时候有效,发送DMA模块22内部只存放两个待发送包链,如果某个通道有多个待发送包链的话,发送DMA模块22通过写该域,并置PV为“1”,将多个待发送包链串起来,然后在发送数据过程中,通过读PV和该域的指针,将一个通道的待发送包链中的所有数据正确发送出去。
Channel:通道号,由CPU写入;
PV:下一待发送队列指针有效标识Pending Descriptor Valid,为“1”表示Next Pending Descriptor Pointer有效,由发送DMA模块22写入;
待发送队列描述子的数据结构包括:
Descriptor Pointer:描述子指针,指向待发送包链的第一个数据缓存区对应的包数据描述子。
Channel:通道号,表明待发送包链属于哪个通道。
待发送包链的数据经片外总线通过总线接口模块3,由发送DMA模块22根据相应的控制逻辑发送至数据处理模块1,在发送DMA模块22产生发送完成队列描述子,存放到内部的DONE_FIFO存储器中,在DONE_FIFO存储器中的发送完成队列数目超过其上限时,自动写到片外主存中的发送完成队列同时报中断给CPU,该发送完成队列描述子记录发送DMA模块22在发完一个待发送数据缓冲区的数据或一个完整的待发送数据包过程中记录的信息;例如:整个数据包被完整发送、待发送数据包的第一个待发送数据缓冲区的数据被发送、待发送数据包的中间某个待发送数据缓存区的数据被发送、待发送数据包的最后一个待发送数据缓冲区的数据被发送,如果在发送数据过程中有错误发生,则记录错误现象或原因。
如表6所示,发送完成队列描述子的数据结构如下:
  EOF   Stauts   Channel     Descriptor  Pointer
                              表6
其中:
Descriptor Pointer:包数据描述子指针,用于指向已经被发送出去的待发送包的第一个待发送数据缓存区的包数据描述子,或则指向已经被发送出去的待发送缓存区的包数据描述子。
Channel:通道号,被发送数据属于哪个通道,由发送DMA模块22写入;
Status:状态,主要记录被发送数据在待发送包中的位置,以及记录在发送数据过程中的出错情况。
EOF:帧结束标识,End Of Frame。
在发送DMA模块22中,配置RAM存储器按通道分块,存放发送DMA模块22在发送包数据过程中需要用到的中间信息和CPU对该通道的配置信息;如图9所示,其数据结构包括:
Current Data Buffer Address:待发送数据缓冲区的当前地址,由发送DMA模块22写入,CPU只读;
DQS:如果为“0”,发送DMA模块22只在发送了一个数据包以后才写完成队列描述子,如果为“1”,发送DMA模块22在发完一个待发送数据缓存区的数据后写完成队列描述子;由CPU写入;
Length Left:当前待发送数据缓存区的剩余数据量,由发送DMA模块22写入;CPU初始化时置零;
EOF:和当前待发送数据缓存区的包数据描述子中的EOF一样,由发送DMA模块22写入,CPU初始化时置零;
CV:和当前待发送数据缓存区的包数据描述子中的CV一样,由发送DMA模块22写入,CPU初始化时置零;
PENDST:用于表示配置RAM存储器中Next Dscriptor、Next PendingDescriptor的状态,由发送DMA模块22写入,CPU初始化时置零,如下所示:
PENDST  Next Descriptor Pointer  Next Pending Descriptor Pointer
000         无效                            无效
100         无效                            无效
101         有效                            有效
111         有效                            有效
其中PENDST的最高为“0”表示该通道目前没有它可以发送的数据,为“1”表示有。
Next Descriptor Pointer:下个待发送数据缓存区的包数据描述子指针
Start Descriptor Pointer:当前待发送数据包的第一个待发送数据缓存区的包数据描述子指针。
Next Pending Descriptor Pointer:下个待发送包链的第一个待发送数据缓存区的包数据描述子指针。
Last Pending Descriptor Pointer:最后一个待发送包链的第一个待发送数据缓存区的包数据描述子指针。
CPU将需要发送的数据通过待发送包描述子和待发送队列描述子的形式写到片外主存中的待发送包数据描述子队列和待发送队列中,更新发送DMA模块22中的待发送队列描述子的指针,发送DMA模块22读取待发送队列描述子;发送DMA模块22根据待发送队列描述子及待发送包数据描述子的信息,修改待发送包数据描述子和配置RAM的信息,将CPU要发送的待发送包数据串链起来,根据待发送包数据所属通道的包数据发送情况,产生正确的状态信息放在配置RAM中,同时响应数据模块申请包数据的请求,从数据处理模块1传至相应的通道;
在发送DMA模块22中,如图10所示,串链数据的具体过程为:
1、在PENDING_FIFO存储器非空时从PENDING_FIFO存储器中读出待发送队列描述子,此时根据从配置RAM存储器读出的该通道的信职工息发现如果PENDST为“3’b000”,表示当前该通道没有要发送的数据包链,则用待发送队列描述子中的包数据描述子指针写配置RAM存储器的Start Descriptor域,并修改PENDST为3’b100,表示该通道有一个待发送包链。
2、如果紧接着再次从PENDING_FIFO存储器中读出该通道的待发送队列描述子,此时根据按通道从配置RAM存储器读出的信息中发现PENDST为“3’b100”,表示该通道有一个待发送包链,则将第二次读出的待发送队列描述子中的包数据描述子指针写入该通道在配置RAM存储器中的Next Pending Descriptor Pointer和LastPending Descriptor Pointer域,并置PENDST为3’b101,表示该通道至少有了两个待发送包链。
3、如果紧接着从PENDING_FIFO存储器中读出的待发送队列描述子还是属于该通道,则根据从配置RAM存储器中读出的该通道的PENDST值,发现其为“3’b101”,表示该通道目前至少有两个待发送包链,此时除了用这次读出的发送队列描述子更新该通道配置RAM存储器中的Last Pending Descriptor Pointer之外,并将其写到该通道在配置RAM存储器中Next Pending Descriptor Pointer指向的包数据描述子中的Next Pending Descriptor Pointer域,同时将包数据描述子中的PV置“1”。
4、如果该通道还有多个待发送包链,具体表现为在PENDING_FIFO存储器中读出该通道的多个待发送队列描述子,发送DMA模块22只要按照上面3所示的那样,就将该通道所有的发送包链,串了起来。
5、发送DMA模块22通过上面步骤1、步骤2、步骤3、步骤4所述的操作,把每个端口当前所有的待发送包链按端口串在一起,如图11所示,显示数据的串链结构。
当数据处理模块1向发送DMA模块22申请某个通道的数据时,发送DMA模块22根据数据处理模块1送过来的通道号从配置RAM存储器中读出数据处理模块1想要申请的通道的信息,从主存中读出相应的待发包数据描述子,根据其中的信息从主存中的数据缓冲区读出数据送给数据处理模块1,递减当前数据缓冲区的剩余数据量;
如果数据处理模块1还未等发送DMA模块22将当前正在读的数据缓冲区的数据全部读出送给数据处理模块1就因为内部原因而停止接收数据,要求停止当前传送,发送DMA模块22停止从数据缓存区读数据,将当前读数据缓冲区地址写到配置RAM存储器该通道部分的相应信息中;待数据处理模块1在其有能力接收该通道的数据的时候,向发送DMA模块22申请该通道的数据,发送DMA模块22从配置RAM存储器读出该通道的信息,发现向数据缓冲区读数据送给数据处理模块1、递减数据缓冲区的剩余数据量。
如图12所示,当数据处理模块1向发送DMA模块22申请某个通道的数据时:
1、如果PENDST为“3’b000”,表示该通道目前没有待发送包链,发送DMA模块22向数据处理模块1发结束数据传输信号,表示当前本次传输结束;
2、如果PENDST的最高位“1”,即PENDST的值为“3’b1xx”,表示不考虑PENDST低两位的值,且从配置RAM存储器中读出的Length Left为“0”,表示目前还没有发送过该通道的数据,则根据该通道在配置RAM存储器中的Start Descriptor Pointer的值从主存中读出Start Descriptor Pointer指向的包数据描述子,根据其中的Data Buffer Address,从主存中的数据缓冲区读出数据送给数据处理模块1,递减当前数据缓冲区的剩余数据量,同时如果Start Descriptor Pointer指向的包数据描述子中的EOF为“0”或则EOF和CV都为“1”,则将Start DescriptorPointer指向的包数据描述子中的Next Descriptor Pointer写到该通道在配置RAM存储器中的Next Descriptor Pointer域,同时将PENDST中的最高位和次高位置“1”,表示该通道配置RAM存储器中的Next Descriptor Pointer有效;
3、如果数据处理模块1还未等发送DMA模块22将当前正在读的数据缓冲区的数据全部读出送给数据处理模块1就因为内部原因而停止接收数据,要求停止当前传送,发送DMA模块22停止从数据缓存区读数据,将当前读数据缓冲区地址写到配置RAM存储器该通道部分的Current Data Buffer Address,将数据缓冲区剩余数据量写到配置RAM存储器该通道部分的Length Left域。
4、数据处理模块1在其有能力接收该通道的数据的时候,向发送DMA模块22申请该通道的数据,发送DMA模块22从配置RAM存储器读出该通道的信息,发现Length Left域不为“0”,表示还未发送完一个数据缓冲区的数据,根据配置RAM存储器中的Current Data Buffer Address向数据缓冲区读数据送给数据处理模块1、递减数据缓冲区的剩余数据量。
5、发送DMA模块22将数据缓冲区的数据全部送给数据处理模块1以后,数据缓冲区的剩余数据量为“0”,看配置RAM存储器中该通道的PENDST中的次高位是否为“1”,如果为“1”,发送DMA模块22根据配置RAM存储器中的Next Descriptor Pointer从主存读出对应的包数据描述子:
a、如果包数据描述子中的EOF为“0”或则EOF和CV都为“1”,用包数据描述子中的Next Descripotor Pointer更新配置RAM存储器中的Next Descriptor Pointer,置配置RAM存储器中的PENDST的最高位和次高位为“1”,3’b11X表示该待发送数据包链有至少两个数据缓冲区的数据组成;
b、如果包数据描述子中的EOF为“1”且CV为“0”,置配置RAM存储器中的次高位为“0”,3’b10X表示该数据缓冲区是待发送数据包链最后一个数据缓冲区的数据;
c、如果此时数据处理模块1可以继续接收该通道的数据,发送DMA模块22根据包数据描述子中的Data Buffer Address通过接口控制模块从外部主存中的数据缓冲区读数据送给数据处理模块1,递减数据缓冲区中的剩余数据量;
d、如果此时数据处理模块1不能继续接收该通道的数据,要求结束本次传输,发送DMA模块22用包数据描述子中的Data Buffer Address更新配置RAM存储器中的CurrentData Buffer Address;包数据描述子中的Length更新配置RAM存储器中的Length Left的值,这样的话,等到数据处理模块1下次再申请该通道数据的时候可以继续将待发送数据从数据缓冲区读出送给数据处理模块1;
6、发送DMA模块22在将一个待发送数据包链发完以后,即:该数据缓冲区的剩余数据量为零;且此时PENDST的次高位为“0”,如果PENDST中的最低位为“1”,表示该通道配置RAM存储器中的Next Pending Descriptor Pointer域有效,发送DMA模块22用配置RAM存储器中的Next Pending Descriptor Pointer更新配置RAM存储器中Start Descriptor的值,这样的话,如果此时数据处理模块1要求停止本次数据传输,等到数据处理模块1下次再申请该通道数据的时候还可完整地将该通道的待发送数据送给数据处理模块1,从主存中读出Next PendingDescripotr Pointer指向的包数据描述子:
a、如果包数据描述子中的PV为“1”,用包数据描述子中的Next Pending Descriptor Pointer代替配置RAM存储器中的Next Pending Descriptor Pointer,并将配置RAM存储器中的PENDST最高位和最低位置“1”,3’b1X1表示当前该通道至少有两个待发送包链的数据等待发送;
b、如果包数据描述子中的PV为“0”,置配置RAM存储器中的PENDST最低位为“0”,3’b1X0表示当前该发送包链是该通道的最后一个待发送包链;
c、如果包数据描述子中的EOF为“0”或则EOF和CV都为“1”,用包数据描述子中的Next Descripotor Pointer更新配置RAM存储器中的Next Descriptor Pointer,置配置RAM存储器中的PENDST的最高位和次高位为“1”,3’b11X表示该待发送数据包链有至少两个数据缓冲区的数据组成;
d、如果包数据描述子中的EOF为“1”且CV为“0”,置配置RAM存储器中的次高位为“0”,3’b10X表示该数据缓冲区是待发送数据包链最后一个数据缓冲区的数据;
7、发送DMA模块22按上面步骤2至步骤6所示描述地一样将该通道其他待发送包链所对应的数据送给数据处理模块1,直到发送DMA模块22将该通道的最后一个数据包链中最后一个包数据描述子对应的数据缓冲区的数据送给数据处理模块1以后,发现配置RAM存储器中的PENDST的次高位和最低为都为“0”,表示该通道的已经没有待发送包链的数据等待发送的了,则将配置RAM存储器中的PENDST清零,表示该通道所有待发送包链的数据都已被发送完毕,且将配置RAM存储器中的Length Left清零;
8、发送DMA模块22按照上面步骤1至步骤7所示的将各通道的待发送数据送给数据处理模块1处理,在向数据处理模块1送完一个数据缓冲区的数据后,根据配置RAM存储器中CPU设置的DQS值判断是否需要生成一个完成队列描述子;
9、如果DQS的值为“1”,发送DMA模块22用指向该数据缓存区的包数据描述子的包数据描述子指针,以及在发送数据缓冲区的数据过程中记录的状态生成一个发送完成队列描述子写入DONE_FIFO存储器中;
10、如果DQS的值为“0”,发送DMA模块22用配置RAM存储器中的Start Descriptor Pointer和在发送数据缓冲区的数据过程中记录的状态生成一个发送完成队列描述子写入DONE_FIFO存储器;
11、发送DMA模块22在DONE_FIFO存储器里有了一定数目的发送完成队列描述子时,根据其内部实时调整的写发送完成队列指针将DONE_FIFO存储器里的发送完成队列描述子按顺序写入主存中的发送完成队列:存放发送完成队列描述子的缓存空间,通知CPU各通道的哪些数据已经被发送了。

Claims (10)

1.一种多通道数据直接内存访问***,其特征在于:
它包括直接访问处理模块,该直接访问处理模块包括接收DMA模块(21)和发送DMA模块(22);
在接收DMA模块(21)中具有FREE FIFO存储器、DONE_FIFO存储器和配置RAM存储器,以及用于访问控制的控制逻辑,FREE_FIFO存储器用于存放空闲队列描述子(Free QueueDescriptor),DONE_FIFO存储器用于存放完成队列描述子(DoneQueue Descriptor);
在发送DMA模块(22)中具有PENDING_FIFO存储器、DONE_FIFO存储器和配置RAM存储器,以及用于访问控制的控制逻辑,PENDING_FIFO存储器用于存放待发送队列描述子,DONE_FIFO存储器用于存放发送完成队列描述子。
2.根据权利要求1所述的多通道数据直接内存访问***,其特征在于:所述的接收DMA模块(21)中配置用于存放空闲队列描述子的数据FIFO存储器。
3.一种用于权利要求1所述的多通道数据直接内存访问***的多通道数据直接内存访问方法,其特征在于:
在接收数据时,各通道的数据经数据处理模块(1)的正常处理后,包数据发至接收DMA模块(21);接收DMA模块(21)根据空闲队列描述子(Free Queue Descriptor)提供的片外主存中的空闲数据缓存区地址以及最后用于描述该缓存区的信息的包数据描述子在片外主存中的位置经总线接口模块(3),通过片外总线将数据存入片外主存;
在发送数据时,待发送包链的数据经片外总线通过总线接口模块(3),在发送DMA模块(22)产生发送完成队列描述子,CPU将需要发送的数据通过待发送包描述子和待发送队列描述子的形式写到片外主存中的待发送包数据描述子队列和待发送队列中,更新发送DMA模块(22)中的待发送队列描述子的指针,发送DMA模块(22)根据待发送队列描述子及待发送包数据描述子的信息,修改待发送包数据描述子和配置RAM的信息,将CPU要发送的待发送包数据串链起来,从数据处理模块(1)传至相应的通道。
4.根据权利要求3所述的多通道数据直接内存访问方法,其特征在于:
所述的包数据描述子的数据结构包括:
Data Buffer Address:数据缓存区的起始地址;
Next Descriptor Pointer:数据包下一个数据缓存区的包数据描述子指针;
Length:该数据缓存区的数据长度;
Buffer Status:数据缓存区状态,用以表示该数据缓存区里填的数据是该数据包的开始部分还是中间部分,或者最后部分;
Channel:通道号,数据属于哪个通道;
5.根据权利要求3所述的多通道数据直接内存访问方法,其特征在于:
1)所述的接收DMA模块(21)使用完成队列描述子(Done QueueDescriptor)反映接收DMA模块(21)将数据填到空闲数据缓存区后,CPU处理时需要用到的已经填到主存里的完整的或非完整的数据包的信息;
2)接收DMA模块(21)中的配置RAM存储器按通道分块,用于存放接收DMA模块(21)在从数据处理模块(1)接收各通道数据过程中根据控制逻辑产生的有关包数据描述子等各种信息;
3)接收DMA模块(21)在数据包长度超过一个数据缓存区的容量时,通过包数据描述子和完成队列描述子的信息,将多个数据缓存区链接起来存放一个完整的数据包;
4)接收DMA模块(21)通过中断告诉CPU有数据可以处理,CPU通过接收完成队列描述子中的第一个数据缓冲区的包数据描述子指针,找到第一个数据缓存区的包数据描述子,根据其中的数据缓存区开始地址找到第一个数据缓存区,处理完第一个数据缓存区的数据后,根据第一个数据缓存区的包数据描述子中的信息找到第二个数据缓存区的包数据描述子……依此类推,直至将该数据包或要处理的数据全部处理完毕。
6.根据权利要求3所述的多通道数据直接内存访问方法,其特征在于:
1)所述的发送DMA模块(22)接收到CPU的信息,通知某个通道的一个待发送包链,发送DMA模块(22)存放待发送队列描述子,待发送队列描述子反映待发送包链的第一个数据缓存区对应的包数据描述子及该待发送包链属于哪个通道,待发送队列描述子对应相应的待发包数据描述子;
2)待发送包链的数据经片外总线通过总线接口模块(3),由发送DMA模块(22)根据相应的控制逻辑产生发送完成队列描述子,存放到内部的DONE_FIFO存储器中;
3)CPU将需要发送的数据通过待发送包描述子和待发送队列描述子的形式写到片外主存中的待发送包数据描述子队列和待发送队列中,更新发送DMA模块(22)中的待发送队列描述子的指针,发送DMA模块(22)读取待发送队列描述子;发送DMA模块(22)根据待发送队列描述子及待发送包数据描述子的信息,修改待发送包数据描述子和配置RAM的信息,将CPU要发送的待发送包数据串链起来,根据待发送包数据所属通道的包数据发送情况,产生正确的状态信息放在配置RAM中,同时响应数据模块申请包数据的请求,从数据处理模块(1)传至相应的通道。
7.根据权利要求6所述的多通道数据直接内存访问方法,其特征在于:所述的数据处理模块(1)向发送DMA模块(22)申请某个通道的数据时,发送DMA模块(22)根据数据处理模块(1)送过来的通道号从配置RAM存储器中读出数据处理模块(1)想要申请的通道的信息,从主存中读出相应的待发包数据描述子,根据其中的信息从主存中的数据缓冲区读出数据送给数据处理模块(1),递减当前数据缓冲区的剩余数据量。
8.根据权利要求7所述的多通道数据直接内存访问方法,其特征在于:所述的数据处理模块(1)如果还未等发送DMA模块(22)将当前正在读的数据缓冲区的数据全部读出送给数据处理模块(1)就因为内部原因而停止接收数据,要求停止当前传送,发送DMA模块(22)停止从数据缓存区读数据,将当前读数据缓冲区地址写到配置RAM存储器该通道部分的相应信息中;待数据处理模块(1)在其有能力接收该通道的数据的时候,向发送DMA模块(22)申请该通道的数据,发送DMA模块(22)从配置RAM存储器读出该通道的信息,发现向数据缓冲区读数据送给数据处理模块(1)、递减数据缓冲区的剩余数据量。
9.根据权利要求5所述的多通道数据直接内存访问方法,其特征在于:
1)、所述的接收DMA模块(21)中,完成队列描述子(Done QueueDescriptor)主要包括:需要处理的数据包或数据属于那个通道、需要处理的数据包或数据占了几个数据缓存区、需要处理的数据包或数据所占用的几个数据缓存区的第一个缓存区所对应的包数据描述子指针、需要处理的数据是否一个完整的数据包;其数据结构包括:
Descriptor Pointer:指向数据包或则包数据所占的第一个数据缓存区的包数据描述子的指针;
Channel:数据属于哪个通道;
Buffers:等待CPU处理的数据包或数据占用了几个数据缓存区;
Packet Status:包数据状态,记录在接收过程中发生错误的类型;
EOF:包结束符,表示一个数据包已结束;
2)、在接收DMA模块(21)中,配置RAM存储器按通道分块,用于存放接收DAM在从数据处理模块(1)接收各通道数据过程中产生的一些中间信息,以及CPU对各通道的配置信息,其数据结构包括:
Current Data Buufer Address:数据缓存区当前地址,由接收DMA模块(21)写入;
Current Descriptor Pointer:当前数据缓存区的包数据描述子指针,由接收DMA模块(21)写入;
Start Descriptor Pointer:CPU要处理数据的第一个数据缓存区的包数据描述子指针,由接收DMA模块(21)写入;
Threshold:控制接收DMA模块(21)在填了几个数据缓存区后生成一个接收完成队列描述子,由CPU写入;
Data Number:数据缓存区的数据量,由接收DMA模块(21)写入,CPU初始化时置零;
Threshold Count:当前数据包所占用的实际数据缓存区数;,由接收DMA模块(21)写入,CPU初始化时置零;
Buffer Size:该通道数据缓存区的大小,由CPU写入;
3)、接收DMA模块(21)在数据包长度超过一个数据缓存区的容量时,通过Next Descriptor Pointer和EOF位,将多个数据缓存区链接起来存放一个完整的数据包。
10.根据权利要求3或5或9所述的多通道数据直接内存访问方法,其特征在于:所述的接收DMA模块(21)中配置数据FIFO存储器,在FREE_FIFO存储器中的空闲队列描述子数目少于某个设定的门限时,根据其内部实时调整的读空闲队列指针通过总线接口控制模块从片外主存中的空闲队列:存放空闲队列描述子的缓存区,读取足够多的空闲队列描述子将FREE_FIFO存储器填满;接收DMA模块(21)接到数据处理模块(1)向接收DMA模块(21)的请求,一边从数据处理模块(1)接收数据填到数据FIFO存储器中,同时从配置RAM存储器中将该通道的信息读出。
CN 02128709 2002-08-06 2002-08-06 多通道数据直接内存访问***和方法 Expired - Lifetime CN1214592C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 02128709 CN1214592C (zh) 2002-08-06 2002-08-06 多通道数据直接内存访问***和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 02128709 CN1214592C (zh) 2002-08-06 2002-08-06 多通道数据直接内存访问***和方法

Publications (2)

Publication Number Publication Date
CN1474568A true CN1474568A (zh) 2004-02-11
CN1214592C CN1214592C (zh) 2005-08-10

Family

ID=34143795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 02128709 Expired - Lifetime CN1214592C (zh) 2002-08-06 2002-08-06 多通道数据直接内存访问***和方法

Country Status (1)

Country Link
CN (1) CN1214592C (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100394723C (zh) * 2006-08-14 2008-06-11 江苏中科龙梦科技有限公司 一种基于以太网核接收控制器的双接收fifo方法
CN100428670C (zh) * 2006-12-01 2008-10-22 清华大学 流媒体服务器用户层通信方法
CN100547572C (zh) * 2007-10-22 2009-10-07 威盛电子股份有限公司 动态建立直接内存访问通路的方法及***
CN101150525B (zh) * 2007-11-20 2010-07-21 杭州华三通信技术有限公司 缓存地址释放方法、***及逻辑模块
CN101971154A (zh) * 2008-02-14 2011-02-09 国际商业机器公司 用于确定输入/输出操作的状态的计算机命令和响应
CN102822808A (zh) * 2010-02-05 2012-12-12 诺基亚公司 用于多通道缓存的通道控制器
CN103064807A (zh) * 2012-12-17 2013-04-24 福建星网锐捷网络有限公司 多通道直接存储器存取控制器
CN107342954A (zh) * 2017-06-29 2017-11-10 北京东土军悦科技有限公司 一种报文的调度方法及装置
CN107766270A (zh) * 2017-10-20 2018-03-06 深圳市风云实业有限公司 用于PCIe设备的数据读取管理方法及装置
CN110134630A (zh) * 2019-05-27 2019-08-16 西安电子工程研究所 一种多输入单输出的发送缓存控制器设计方法
WO2019223383A1 (zh) * 2018-05-21 2019-11-28 阿里巴巴集团控股有限公司 直接内存存取方法、装置、专用计算芯片及异构计算***
CN111522643A (zh) * 2020-04-22 2020-08-11 杭州迪普科技股份有限公司 基于fpga的多队列调度方法、装置、计算机设备及存储介质
CN111930650A (zh) * 2020-09-23 2020-11-13 新华三半导体技术有限公司 一种网络流量转发方法及设备
CN113032295A (zh) * 2021-02-25 2021-06-25 西安电子科技大学 一种数据包二级缓存方法、***及应用
CN113590520A (zh) * 2021-06-15 2021-11-02 珠海一微半导体股份有限公司 Spi***自动写入数据的控制方法及spi***
CN114201313A (zh) * 2021-12-07 2022-03-18 杭州时代银通软件股份有限公司 一种消息传递***及消息传递方法

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100394723C (zh) * 2006-08-14 2008-06-11 江苏中科龙梦科技有限公司 一种基于以太网核接收控制器的双接收fifo方法
CN100428670C (zh) * 2006-12-01 2008-10-22 清华大学 流媒体服务器用户层通信方法
CN100547572C (zh) * 2007-10-22 2009-10-07 威盛电子股份有限公司 动态建立直接内存访问通路的方法及***
CN101150525B (zh) * 2007-11-20 2010-07-21 杭州华三通信技术有限公司 缓存地址释放方法、***及逻辑模块
CN101971154A (zh) * 2008-02-14 2011-02-09 国际商业机器公司 用于确定输入/输出操作的状态的计算机命令和响应
CN101971154B (zh) * 2008-02-14 2013-10-30 国际商业机器公司 用于确定输入/输出操作的状态的方法和***
CN102822808A (zh) * 2010-02-05 2012-12-12 诺基亚公司 用于多通道缓存的通道控制器
CN102822808B (zh) * 2010-02-05 2016-05-04 诺基亚技术有限公司 用于多通道缓存的通道控制器
CN103064807A (zh) * 2012-12-17 2013-04-24 福建星网锐捷网络有限公司 多通道直接存储器存取控制器
CN103064807B (zh) * 2012-12-17 2015-08-19 福建星网锐捷网络有限公司 多通道直接存储器存取控制器
CN107342954A (zh) * 2017-06-29 2017-11-10 北京东土军悦科技有限公司 一种报文的调度方法及装置
CN107342954B (zh) * 2017-06-29 2019-11-22 北京东土军悦科技有限公司 一种报文的调度方法及装置
CN107766270A (zh) * 2017-10-20 2018-03-06 深圳市风云实业有限公司 用于PCIe设备的数据读取管理方法及装置
WO2019223383A1 (zh) * 2018-05-21 2019-11-28 阿里巴巴集团控股有限公司 直接内存存取方法、装置、专用计算芯片及异构计算***
CN110134630A (zh) * 2019-05-27 2019-08-16 西安电子工程研究所 一种多输入单输出的发送缓存控制器设计方法
CN110134630B (zh) * 2019-05-27 2023-02-10 西安电子工程研究所 一种多输入单输出的发送缓存控制器设计方法
CN111522643A (zh) * 2020-04-22 2020-08-11 杭州迪普科技股份有限公司 基于fpga的多队列调度方法、装置、计算机设备及存储介质
CN111930650A (zh) * 2020-09-23 2020-11-13 新华三半导体技术有限公司 一种网络流量转发方法及设备
CN113032295A (zh) * 2021-02-25 2021-06-25 西安电子科技大学 一种数据包二级缓存方法、***及应用
CN113590520A (zh) * 2021-06-15 2021-11-02 珠海一微半导体股份有限公司 Spi***自动写入数据的控制方法及spi***
CN113590520B (zh) * 2021-06-15 2024-05-03 珠海一微半导体股份有限公司 Spi***自动写入数据的控制方法及spi***
CN114201313A (zh) * 2021-12-07 2022-03-18 杭州时代银通软件股份有限公司 一种消息传递***及消息传递方法

Also Published As

Publication number Publication date
CN1214592C (zh) 2005-08-10

Similar Documents

Publication Publication Date Title
CN1214592C (zh) 多通道数据直接内存访问***和方法
CN1224189C (zh) 移动通信***中根据无线链路协议发送和接收数据的设备和方法
CN1149806C (zh) 高性能通信控制器
CN100351747C (zh) 数据传送方法和数据传送设备
CN1104128C (zh) 异步传输模式通信设备
CN1237455C (zh) 数据传输控制装置、电子设备、及数据传输控制方法
CN101047610A (zh) 数据存储、读取、传输方法和管理服务器及网络节点
CN1648876A (zh) 闪速存储器的数据管理设备和方法
CN1729655A (zh) 网络交换装置和网络交换方法
CN1204504C (zh) 文件传送***、中继设备、和文件传送方法
CN101038572A (zh) 数据传送装置及数据传送***
CN1591374A (zh) 直接存储器存取传输控制器
CN1551592A (zh) 数据传输控制装置、电子设备及数据传输控制方法
CN1801813A (zh) 一种动态内容播放方法与装置
CN1873604A (zh) 处理器芯片与存储控制***及方法
CN1917417A (zh) 多载波高速下行分组接入中混合自动重传方法及应用
CN1734998A (zh) 发送确认帧的方法和设备
CN1821946A (zh) 一种存储***以及存储数据的方法和读取数据的方法
CN1819554A (zh) 数据处理***及其数据接口连接方法
CN100342355C (zh) 一种基于串行接口的数据传输方法及装置
CN1731361A (zh) 一种跨平台函数调用***
CN1165046C (zh) 有双缓冲的数据传输设备、数据传输***及数据传输方法
CN1485750A (zh) 数据传输控制***、电子设备、程序及数据传输控制方法
CN1315301C (zh) 分组通信方法和存储数据共有***
CN1536497A (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
ASS Succession or assignment of patent right

Owner name: SHENZHEN HAISI SEMICONDUCTOR CO., LTD.

Free format text: FORMER OWNER: HUAWEI TECHNOLOGY CO., LTD.

Effective date: 20081010

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20081010

Address after: HUAWEI electric production center, Bantian HUAWEI base, Longgang District, Shenzhen, Guangdong

Patentee after: HISILICON TECHNOLOGIES Co.,Ltd.

Address before: HUAWEI Service Center building, 1 FA FA Road, Nanshan District science and Technology Park, Shenzhen, Guangdong

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

CX01 Expiry of patent term

Granted publication date: 20050810

CX01 Expiry of patent term