CN101317166B - 统一dma - Google Patents
统一dma Download PDFInfo
- Publication number
- CN101317166B CN101317166B CN2006800433196A CN200680043319A CN101317166B CN 101317166 B CN101317166 B CN 101317166B CN 2006800433196 A CN2006800433196 A CN 2006800433196A CN 200680043319 A CN200680043319 A CN 200680043319A CN 101317166 B CN101317166 B CN 101317166B
- Authority
- CN
- China
- Prior art keywords
- dma
- data
- circuit
- descriptor
- transmission
- 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.)
- Expired - Fee Related
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)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
- Computer And Data Communications (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一种实施方案中,提供一种装置,包括:第一接口电路;被耦合到第一接口电路的直接存储器存取(DMA)控制器;以及被耦合到DMA控制器的主机。第一接口电路被配置为根据协议在接口上进行通信。主机包括被至少部分地映射到主机的存储器系统中的多个存储位置的至少一个地址空间。DMA控制器被配置为在第一接口电路和地址空间之间执行DMA传输,并且DMA控制器还被配置为在多个存储位置的第一批和多个存储位置的第二批之间执行DMA传输。
Description
技术领域
本发明涉及集成电路领域,更确切地说,涉及包括一个或多个集成电路的系统中的直接存储器存取(DMA)。
背景技术
在包括一个或多个处理器、存储器、和输入/输出(I/O)设备或接口的典型系统中,直接存储器存取(DMA)传输经常被用于在I/O和存储器之间传输数据。在一些系统中,每个使用DMA的I/O设备或接口中都包括单独的DMA电路。在其它系统中,一个或多个I/O设备可以共享DMA电路。
一些系统还包括用于将数据从存储器的一个区域拷贝到另一个区域的“数据移动器”。数据移动器可以卸载处理器的负担,否则处理器将不得不执行指令以实现数据移动(例如以处理器所用的位宽来读/写数据,一般一次32位或64位)。数据移动器的编程模型一般不同于DMA编程模型,后者适合在I/O设备和存储器之间通信。
发明内容
在一种实施方案中,提供一种装置,包括:第一接口电路;被耦合到第一接口电路的直接存储器存取(DMA)控制器;以及被耦合到DMA控制器的主机。第一接口电路被配置为根据协议在接口上进行通信。主机包含被至少部分地映射到主机的存储器系统中的多个存储位置上的至少一个地址空间。DMA控制器被配置为在第一接口电路和地址空间之间执行DMA传输,并且DMA控制器还被配置为在多个存储位置的第一批和多个存储位置的第二批之间执行DMA传输。还提出了一种方法。
附图说明
下列详细描述参考了附图,这些附图的简要描述如下。
图1为系统的一种实施方案的框图。
图2为图1所示DMA控制器的一种实施方案的框图。
图3为图2所示卸载引擎(offload engine)的一种实施方案的框图。
图4为图1系统中的DMA的一种实施方案的框图。
图5为描述符环(descriptor ring)和缓冲器指针环(bufferpointer ring)的一种实施方案的框图。
图6为流程图,显示了图2所示的接收预取引擎(receive prefetchengine)的一种实施方案的操作。
图7为流程图,显示了图2所示的接收控制电路的一种实施方案的操作。
图8为流程图,显示了图2所示的发送控制电路的一种实施方案的预取操作。
图9为流程图,显示了图2所示的发送控制电路的一种实施方案的传输操作。
图10为框图,显示了描述符环,具有包含在传输描述符中的控制描述符。
图11为流程图,显示了控制描述符的处理的一种实施方案。
图12为框图,显示了接收DMA描述符的一种实施方案。
图13为框图,显示了发送DMA描述符的一种实施方案。
图14为框图,显示了拷贝DMA描述符的一种实施方案。
图15为卸载DMA描述符的一种实施方案的框图。
图16为控制描述符的一种实施方案的框图。
图17为图3所示的校验和生成器的一种实施方案。
图18为图17所示的全加器的一种实施方案。
具体实施方式
虽然本发明允许有各种修改和替代形式,但是具体的实施方案将通过附图中的举例来显示并且在本文中进行详细描述。然而,应理解的是,附图和详细描述并非意图将本发明限制于所示的具体形式,而恰恰相反,本发明涵盖由所附权利要求所限定的本发明精神和范围内的所有修改、等价物和替代物。
现在转到图1,显示了系统10的一种实施方案的框图。在所示实施方案中,系统10包括主机12、DMA控制器14、接口电路16、和物理接口层(PHY)36。DMA控制器14被耦合到主机12和接口电路16。接口电路16还被耦合到物理接口层36。在所示实施方案中,主机12包括:一个或多个处理器,诸如处理器18A~18B;一个或多个存储器控制器,诸如存储器控制器20A-20B;I/O桥接器(IOB)22;I/O存储器(IOM)24;I/O高速缓冲存储器(高速缓存)(IOC)26;二级(L2)高速缓存28;和互连30。处理器18A~18B、存储器控制器20A-20B、IOB 22、和L2高速缓存28被耦合到互连30上。IOB 22还被耦合到IOC 26和IOM 24上。DMA控制器14也被耦合到IOB 22和IOM 24上。在所示实施方案中,接口电路16包括:外围接口控制器32;以及一个或多个介质访问控制电路(MAC),诸如MAC 34A~34B。MAC 34A~34B被耦合到DMA控制器14上并被耦合到物理接口层36上。外围接口控制器32还被耦合到I/O桥接器22和I/O存储器34上(并因而被间接耦合到DMA控制器14上)以及被耦合到物理接口层36上。外围接口控制器32和MAC 34A-34C的每个都包括配置寄存器38A-38C。在一些实施方案中,系统10的部件可以被集成到单个集成电路上作为片上系统。在其它实施方案中,系统10可以被实现为两个或更多个集成电路。
主机12可以包含一个或更多个的地址空间。主机12中的地址空间的至少一部分可以被映射到主机12中的存储位置。即,主机12可以包括被映射到主机地址空间中的地址上的存储器系统。例如,存储器控制器20A-20B的每个都可以被耦合到包含被映射到地址空间中 的存储位置的存储器(未显示)。在一些情况下,整个地址空间可以被映射到存储位置上。在其它情况下,地址空间中的一些可以是存储器映射I/O(memory-mapped I/O)(例如,受外围接口控制器32控制的外围接口可以包括一些存储器映射I/O)。
DMA控制器14被配置为在接口电路16和主机地址空间之间执行DMA传输。特别地,DMA传输可以在地址空间所被映射到的存储位置和接口电路16之间进行。另外,在一些实施方案中,DMA控制器14可以被配置为在地址空间内的存储位置组之间执行DMA传输。即,这种DMA传输的来源和目的两者均可以为存储位置。在一些实施方案中,数据移动器的功能可以因此而被并入到DMA控制器14中,并且可以不需要单独的数据移动器。用于存储器到存储器DMA传输的编程模型可以类似于用于其它DMA传输的编程模型(例如,DMA描述符,以下将详细描述)。存储器到存储器DMA传输也可以被称为拷贝DMA传输。
在一些实施方案中,DMA控制器14可以被配置为在DMA数据正在被传输时对DMA数据执行一个或更多的操作(或“功能”)。在一些实施方案中,可以对在地址空间和接口电路之间的传输执行操作,以及可以对拷贝DMA传输执行操作。在一些实施方案中,由DMA控制器14所执行的操作可以减少处理器18A~18B上的处理负荷,因为处理器不需要执行DMA控制器14所执行的操作。在一种实施方案中,DMA控制器14所执行操作中的一些是对分组数据的操作(例如,加密/解密,循环冗余校验码(CRC)生成或校验,校验和生成或校验等)。操作还可以包括异或(XOR)操作,这种异或操作例如可以被用于廉价磁盘冗余阵列(RAID)处理。
总而言之,DMA传输可以是从来源到目的的数据传输,其中目的中的至少一个是存储位置或主机地址空间中的其它地址。DMA传输的完成无需让被传输数据经由系统中的处理器(例如处理器18A~18B)。DMA控制器14可以通过对来源进行读取并对目的进行写入来完成DMA传输。例如,从存储器到接口电路16的DMA传输可以 这样完成:DMA控制器14产生存储器读取请求(在所示实施方案中,对在互连30上执行连贯读取任务来读数据的IOB 22)并将读取数据作为DMA数据发送到接口电路16。在一种实施方案中,DMA控制器14可以为经由外围接口控制器32的DMA传输产生读取请求以将数据读入IOM 24,并且外围接口控制器32可以从IOM 24读取数据并发送该数据。可以通过DMA控制器14从接口电路16接收数据并产生存储器写入请求(对IOB 22,在所示实施方案中)以将DMA数据传输到存储器中,来完成从接口电路16到存储器的DMA传输。在一种实施方案中,外围接口控制器32可以将数据写入到IOM 24,并且DMA控制器14可以使数据被写入到存储器中。这样,DMA控制器14可以为外围接口控制器32提供DMA协助。可以通过产生到来源存储位置的存储器读取请求和到目的存储位置(包括来自存储器读取请求的DMA数据)的存储器写入请求,来完成拷贝DMA传输。
主机12可以大体上包括一个或更多的处理器和被配置为与映射在主机12地址空间内的存储器接口的存储器控制器。主机12可以非必需地包括其它电路,诸如L2高速缓存28,以增强主机12中处理器的性能。此外,主机12可以包括作为与各种I/O电路和DMA控制器14接口的电路。虽然主机12的一种实现如图1中所示,但是其它实施方案可以包括对DMA控制器14和接口电路16的任何配置和接口。
处理器18A~18B包括执行在由处理器18A~18B实现的指令集体系结构中所定义的指令的电路。可以在各种实施方案中实现任意的指令集体系结构。例如,可以实现PowerPCTM指令集体系结构。其它示例性指令集体系可以包括ARMTM指令集、MIPSTM指令集、SPARCTM指令集、x86指令集(也被称为IA-32)、IA-64指令集等。
存储器控制器20A-20B包含被配置为到存储器的接口的电路。例如,存储器控制器20A-20B可以被配置为与诸如同步DRAM(SDRAM)、双倍数据速率(DDR)SDRAM、DDR2SDRAM、RambusDRAM(RDRAM)等的动态随机存取存储器(DRAM)接口。存储 器控制器20A-20B可以为它们从互连30所耦合到的存储器接收读取和写入任务,并且可以执行对存储器的读取/写入操作。读取和写入任务可以包括由IOB 22代表DMA控制器14和/或外围接口控制器32发起的读取和写入任务。另外,读取和写入任务可以包括由处理器18A~18B和/或L2高速缓存28所产生的任务。
为了由处理器18A~18B和/或互连30上的其它主体(agent)低延迟地访问,L2高速缓存28可以包括被配置为高速缓存与存储器控制器20A-20B所耦合到的存储器中多个存储位置对应的副本的高速缓存存储器(cache memory)。L2高速缓存28可以包括任意容量和构造(例如直接映射、组关联(set associative)等)。
IOB 22包括被配置为在互连30上代表DMA控制器14和外围接口控制器32传达任务的电路。互连30可以支持高速缓存一致性(cache coherency),并且IOB 22可以参与一致性并确保由IOB 22所发起的任务的一致性。在所示实施方案中,IOB 22采用IOC 26对新近由IOB 22所发起的任务进行高速缓存。在各种实施方案中,IOC26可以具有任意的容量和配置,并且可以是连贯的(coherent)。IOC26可以被用于,例如,对由于由DMA控制器14和外围接口控制器32所产生的读取/写入而仅被部分更新的数据块进行高速缓存。在某些情况下,使用IOC 26可以避免在互连30上发生读取-修改-写入(read-modify-write)序列。另外,如果IOC 26对高速缓存块具有足够的所有权来完成读取/写入,那么对于由DMA控制器14或外围接口控制器32所产生的读取/写入,互连30上的任务可以因IOC 26中的高速缓存命中而被避免。其它实施方案可以不包括IOC 26。
IOM 24可以被用作在IOB 22与外围接口32或DMA控制器14之间传输的数据的分级缓冲器(staging buffer)。这样,IOB 22和DMA控制器14/外围接口控制器32之间的数据路径可以经由IOM24。控制通道(包括读取/写入请求、与请求相关的主机地址空间中的地址等)可以直接位于IOB 22和DMA控制器14/外围接口控制器32之间。其它实施方案可以不包括IOM 24。
互连30可以包括任意用于在处理器18A~18B、存储器控制器20A-20B、L2高速缓存28、以及IOB 22相互之间通信的通信介质。例如,互连30可以为支持一致性的总线。替代地,互连30可以为上述主体之间的点对点互连、基于分组的互连、或者任意其它互连。
接口电路16一般包括被配置为根据任意接口协议在对系统10的接口上通信、以及与系统10中的其它组件通信以接收在接口上被发送的通信或提供从接口接收的通信的电路。接口电路可以被配置为将源自系统10的通信转换为接口协议,以及为了系统10中的发送将从接口接收的通信进行转换。例如,接口电路16可以包括被配置为根据外围接口协议(例如,外围接口控制器32)进行通信的电路。作为另一例子,接口电路16可以包括被配置为根据网络接口协议(例如MAC 34A~34B)进行通信的电路。
MAC 34A~34B可以包括实现为了网络接口而定义的介质访问控制电路功能的电路。例如,MAC 34A~34B中的一个或多个可以实现千兆位以太网标准(Gigabit Ethernet Standard)。MAC 34A~34B中的一个或多个可以实现万兆位以太网附加单元接口(10GigabitEthernet Attachment Unit Interface,XAUI)标准。其它实施方案可以实现其它以太网标准,诸如10兆位以太网或者100兆位以太网标准,或者任何其它的网络标准。在一种实现中,具有6个MAC,其中4个是千兆以太网MAC,2个是XAUI MAC。其它实施方案可以具有更多或更少的MAC,以及任意MAC类型的混合。
除其它动作之外,实现以太网标准的MAC 34A~34B可以从所接收的分组中去掉帧间间隔(inter-frame gap,IFG)、前导码(preamble)、和帧起始分隔符(start of frame delimiter,SFD),并且可以对于到存储器的DMA将剩余分组数据提供给DMA控制器14。MAC 34A-34D可以被配置为为接收自DMA控制器14的分组插入IFG、前导码、和SFD作为发送DMA传输(transmit DMAtransfer),并且可以将分组发送给PHY 36用于发送。
外围接口控制器32包括被配置为对外围接口进行控制的电路。 在一种实施方案中,外围接口控制器32可以控制外围部件互连(PCI)Express接口。除了PCI Express接口之外或者代替PCI Express接口,其它实施方案可以实现其它外围接口(例如,PCI、PCI-X、通用串行总线(USB)等)。
PHY 36可以大体上包括被配置为在到系统10的外部接口上受接口电路16的控制进行物理通信的电路。在一种具体实施方案中,PHY 36可以包括可以被构造以用作PCI Express通路(lane)或作为以太网连接的一组串行器/解串器(serializer/deserializer;SERDES)电路。PHY 36可以包括为经由SERDES和同步先进先出(FIFO)缓冲器的传送执行8b/10b编码/解码的电路,并且还可以包括逻辑地配置SERDES链路以用作PCI Express或以太网通信链路的电路。在一种实施方案中,PHY可以包括24个能被配置为PCI Express通路或以太网连接的SERDES。任意所需数目的SERDES可以被配置为PCIExpress,并且任意所需数目的SERDES可以被配置为以太网连接。
在所示实施方案中,在外围接口控制器32和MAC 34A~34B中显示了配置寄存器38A-38C。在每个外围接口控制器32和MAC34A~34B中可以有一个或更多的配置寄存器。其它配置寄存器也可以存在于系统10中,图1中未显示。配置寄存器可以被用于配置外围接口控制器32和MAC 34A~34B的各种可编程选择的功能、使能或禁止各种功能、为操作配置外围接口控制器32和MAC 34A~34B等。在下述的一种实施方案中,可以在控制描述符中指定配置寄存器以用于外围接口控制器32和MAC 34A~34B的在线及时重构(on-the-fly reconfiguration)。
要注意的是,在各种实施方案中,系统10可以包括一个或任意多个图1中所示的任意元件(例如,处理器、存储器控制器、高速缓存、I/O桥接器、DMA控制器、和/或接口电路等)。
现在参考图2,显示了DMA控制器14的一种实施方案的框图。对于图2的实施方案,将讨论用于引起DMA传输的描述符软件模型。在一些实施方案中,除了描述符模型之外或者代替描述符模型,可以 支持基于寄存器的软件模型。在基于寄存器的模型中,每个DMA传输可以被编程到DMA控制器14中,DMA控制器14可以执行DMA传输。在传输完成时,DMA控制器14既可以中断处理器18A~18B其中之一也可以提供可供软件查询判断DMA传输何时已结束的状态(例如,在DMA控制器14内的寄存器中)。
在描述符模型中,利用存储器中的描述符数据结构,软件可以建立多个要执行的DMA传输。一般来说,DMA描述符可以包括存储器中的数据结构,该数据结构描述DMA传输。DMA描述符中的信息例如可以指定DMA传输的来源和目标、传输的尺寸、以及传输的各种属性。在一些情况下,DMA传输的来源和目标可以是隐式的(implicit)。在存储器中的数据结构中(例如,“描述符环”中)可以存储多个描述符,并且DMA控制器14可以用数据结构中第一个描述符的地址来编程。DMA控制器14可以读取描述符并执行所指示的DMA传输。各种控制机制可以被用于在软件和硬件之间控制描述符的所有权。例如,描述符可以包括对DMA控制器14表明描述符中所描述的DMA传输预备被执行的有效位或使能位。描述符中的中断位可以被用于表明DMA控制器14要在给定DMA传输结束时中断处理器18A~18B,或者传输结束位可以被用于表明描述符描述了最后的DMA传输以及DMA控制器14应被中止。替代地,DMA控制器14可以实现可以被软件递加计数以表明有多少描述符可供DMA控制器14使用的描述符计数寄存器。DMA控制器14可以将描述符计数寄存器递减计数以表明已发生了描述符的预取。在其它实施方案中,DMA控制器14可以将描述符计数寄存器递减计数以表明描述符的消耗(consumption)(即,具体的DMA传输的性能)。在另一些其它实施方案中,DMA控制器14可以使用单独的描述符处理计数寄存器以表明有多少描述符已被处理或预取。
DMA控制器14可以执行发送(Tx)DMA传输和接收(Rx)DMA传输。Tx DMA传输以主机12中的地址空间作为来源(例如,耦合到存储器控制器20A-20B的存储器中的存储位置)。Rx DMA传 输以主机12中的地址空间作为目标。Tx DMA传输可以以接口电路16作为目标,或者可以以主机12地址空间中的其它地址作为目标(例如,对于拷贝DMA传输)。以主机地址空间为目标的Tx DMA传输可以使用Rx DMA数据路径来将从来源地址读取的数据写入到目标地址。环回电路(loopback circuit)40可以提供Tx DMA数据路径和Rx DMA数据路径之间的链路。即,“环回电路”包括属于DMA控制器的电路,其被耦合以从发送数据路径接收Tx DMA数据并在接收DMA数据路径上提供Rx DMA数据。由环回电路40在接收DMA数据路径上所提供的数据可以是从发送DMA数据路径所接收的数据(例如,用于拷贝DMA功能)。在一些实施方案中,由环回电路40所提供的数据可以是由环回电路40从所接收数据转换的数据。在一些实施方案中,由环回电路40所提供的数据可以是由环回电路40所接收的数据加上环回电路40对数据计算的结果(例如,校验和、CRC数据等)。替代地,由环回电路40所提供的数据可以是由环回电路40所接收的数据(或者可以并非是所提供的数据),并且结果可以被存储在用于DMA传输的描述符中。被转换的数据、或者被计算并包含于数据中或写入DMA控制符中的结果一般可以在此处被称为“结果”。
这样,在一些实施方案中,环回电路40可以被配置为对Tx DMA数据执行一种或多种操作(或“功能”)以产生结果(例如,被转换的DMA数据、或者从数据产生的结果)。在图2的实施方案中,环回电路40可以包括被耦合到发送数据路径的拷贝FIFO 42、卸载引擎44、和异或(XOR)电路46。拷贝FIFO 42可以存储来自Tx DMA数据路径的发送数据用于Rx DMA数据路径上的传送。因此,拷贝FIFO 42可以执行拷贝DMA操作。卸载引擎44可以被配置为对DMA数据执行各种操作,产生被转换的数据或者与数据分离的结果。在各种实施方案中,卸载引擎44可以被配置为提供任意所需的操作集合。在一种实施方案中,卸载引擎44可以被配置为执行对分组处理提供辅助的操作。例如,已经开发了各种网络安全协议来提供分组的加密 和/或认证。认证一般包括对一些或所有的分组生成散列(hash)。这样,卸载引擎44可被配置为在DMA传输中对分组数据执行加密/解密和/或散列函数。另外,卸载引擎44可以被配置为执行校验码生成/校验、和/或CRC生成/校验。校验和和/或CRC保护被用于各种分组协议中。XOR电路46可以对DMA数据(例如,来自多个来源的DMA数据)进行按位XOR。XOR电路46可以被用于例如支持廉价磁盘冗余阵列(RAID)处理和其它使用XOR功能的类型或处理。
环回电路40(更确切地说,环回部件42、44、和46)可以在将DMA数据提供给环回电路40的DMA传输期间操作DMA数据。即,环回电路40可以至少开始执行对DMA数据的操作而Tx DMA传输提供剩余的DMA数据。一般来说,结果可以被写入存储器,或者更通常地,写入主机地址空间(例如,作为被转换的DMA数据、被附加到DMA数据、或者写入到单独的结果存储位置诸如用于Tx DMA传输的DMA描述符中的字段)。
环回电路40还可以包括用于卸载引擎44和XOR电路46的FIFO(被耦合到卸载引擎44的卸载FIFO 48和被耦合到XOR电路46的XOR FIFO 50)。FIFO 48和50可以分别临时存储来自卸载引擎44和XOR电路46的数据,直到可以在接收DMA数据路径上发送DMA数据为止。在所示实施方案中提供了仲裁器52,其被耦合到FIFO 42、48和50,以在FIFOs之间进行仲裁。仲裁器52还被耦合到可临时存储来自环回电路40的要被写入目标的数据的环回FIFO54。
在所示实施方案中,DMA控制器14包括Tx DMA数据路径上的Tx控制电路56,以及Rx DMA数据路径上的Rx控制电路58。Tx控制电路56可以从主机12中预取数据以用于发送DMA传输。特别地,Tx控制电路56可以预取DMA描述符,并可以处理DMA描述符以判断DMA数据的来源地址。然后,Tx控制电路56可以预取DMA数据。虽然术语预取被用于指Tx控制电路56的操作,但是预取通常可以是所产生的从主机地址空间中读取描述符和DMA数据的读取操 作。
Tx控制电路56将DMA数据发送给目标。在本实施方案中,目标可以是接口电路16或环回电路40之一(更确切地说,所示实施方案中的拷贝FIFO 42、卸载引擎44、和XOR电路46之一)。Tx控制电路56可以识别发送数据的目标(例如,通过发送目标标识符)。替代地,可以在Tx控制电路56与接口电路16之间、以及在Tx控制电路56与环回部件42、44和46之间提供物理上分离的路径。Tx控制电路56可以包括一组缓冲器62以临时存储要被发送的数据。Tx控制电路56还可以与数据一起提供多个控制信息。控制信息可以包括来自DMA描述符的信息。控制信息可以包括,对于环回电路40而言,用于在目标地址空间中存储数据的缓冲器指针。控制信息也可以包括任何其它可以被包括于DMA描述符中的以及可以被接口电路16或环回电路14所使用的控制信息。关于DMA描述符的讨论,以下会提供更详细的示例。
Rx控制电路58可以接收要被写入主机12地址空间的DMA数据,并且可以产生写入操作以将数据存储到存储器。在一种实施方案中,软件可以分配存储器中的缓冲器以存储所接收的DMA数据。可以向Rx控制电路58提供缓冲器指针(在主机地址空间中标识缓冲器的地址)。Rx控制电路可以使用缓冲器指针以产生用于写入操作的地址以存储数据。可以提供Rx预取引擎60以为Rx控制电路58预取缓冲器指针。Rx预取引擎60被耦合以向Rx控制电路58提供缓冲器指针。Rx预取引擎60可以包括一组缓冲器64以临时存储为Rx预取引擎60所使用的预取缓冲器指针。类似地,Rx控制电路58可以包括一组缓冲器68以临时存储所接收的要被写入存储器的DMA数据。
在一种实施方案中,Rx控制电路58可以被配置为生成描述符用于所接收的DMA数据。即,软件可以分配缓冲器以存储DMA数据并可以提供缓冲器指针,而不是让软件为所接收的DMA数据创建DMA描述符。Rx控制电路58可以将所接收的DMA数据存储于所分配的缓冲器中,并可以为DMA传输创建描述符。由Rx控制电路58创建的描述符可以包括指向存储所接收的DMA数据的一个或更多个缓冲器的一个或更多个缓冲器指针以及其它描述DMA传输的信息。接收DMA描述符的示例实施方案显示于图12中并在以下被更详细地描述。因为Rx控制电路58为所接收的DMA数据创建描述符,所述描述符可以比那些由软件所创建的描述符更有效。例如,软件可能不得不创建可接收最大可能DMA传输(或者对于更大传输可能需要多个描述符)的接收DMA描述符,以及为了存储最大可能DMA传输可能不得不分配足够的缓冲器。另一方面,由Rx控制电路58创建的描述符对于实际所接收的传输而言可以足够大(并且可以耗用足够的缓冲器来存储所接收的数据),但是不需要更大。。
在所示实施方案中,Rx控制电路58可以从仲裁器66接收DMA数据,仲裁器66被耦合到环回FIFO 54并也从接口电路16接收DMA数据。仲裁器66可以在环回FIFO 54和接收自接口电路16的DMA数据之间进行仲裁以将数据传输给Rx控制电路58。
仲裁器52和66可以实现任何所需的仲裁方案。例如,基于优先级的方案、轮询调度方案(round-robin)、加权轮询方案(weighted round-robin)、或者这些方案的组合都可以被使用。在一些实施方案中,仲裁方案可以是可编程的。由仲裁器52所实现的仲裁方案可以不同于由仲裁器66所实现的方案。
在所示实施方案中,Tx控制电路56、Rx预取引擎60、和Rx控制电路58被耦合到IOM/IOB接口单元70。IOM/IOB接口单元56可以代表Tx控制电路56、Rx预取引擎60、和Rx控制电路58与IOB22和IOM 24进行通信。IOM/IOB接口单元70可以从Tx控制电路56、Rx预取引擎60、和Rx控制电路58接收读取和写入请求,并且可以与IOB 22和IOM 24进行通信以满足这些请求。
特别地,IOM/IOB接口单元70可以从Tx控制电路56接收对描述符和DMA数据的读取请求,以及从Rx预取引擎60对存储了缓冲器指针的存储器的读取请求,并且可以将请求传送给IOB 22。IOB 22 可以表明哪个IOM 24入口(entry)存储了包括所请求数据的缓存行(cache line)(例如在从主机地址空间或IOC 26中读取数据后,或者数据可能由于前一个请求而已经在IOM 24中),并且IOM/IOB接口70可以从IOM 24中读取数据并将它提供给Tx控制电路56或Rx预取引擎60。IOM/IOB接口单元70也可以从Rx控制电路58接收写入请求,并可以将写入数据存储于IOM 24中(在由IOB 22为写入数据所分配的入口处)。一旦缓存行积累在IOM 24中(或者DMA传输完成,无论哪个发生),IOM/IOB接口单元70就可以通知IOB22并且可以提供要被写入的缓存行的地址(从指向要被写入的缓冲器的缓冲器指针导出)。
在一种实施方案中,DMA控制器14可以支持各种通道(channel)用于发送DMA传输和接收DMA传输。在各种实施方案中,可以支持任意数目的通道。例如,在一种实现中,可以提供20个发送DMA通道以及64个接收DMA通道。每个通道可以是独立的从来源到目的的逻辑数据路径。可以根据需要由软件来分配通道。
更确切地说,每个发送通道可以被分配给接口电路16之一或者环回组件电路42、44、或46之一。并非所有的发送通道都需被使用(即,一些传输通道可以被禁止)。Tx控制电路56可以以每个通道为基础(per-channel basis)预取DMA描述符和DMA数据。即,Tx控制电路56可以为每个具有可用的DMA描述符的通道独立地生成预取。Tx控制电路56可以在所生成的预取之中进行选择以将读取请求发送给IOM/IOB接口单元70。
每个接收通道都可以被分配给接口电路16之一。并非所有的接收通道都需要被使用(即,一些接收通道可以被禁止)。Rx控制电路58可以将通道编号与所接收数据一起接收。环回电路40可以为DMA提供来自DMA描述符的缓冲器指针,Rx控制电路58可以使用缓冲器指针以将DMA数据写入到主机地址空间。接口电路16可以利用所分配的通道来编程,或者可以采用分组过滤以确定通道。接口电路16可以将通道编号与DMA数据一起提供,Rx控制电路58可以 使用由Rx预取引擎60为通道提供的缓冲器指针以将DMA数据写入主机地址空间。
DMA控制器14可以包括各种配置寄存器38D-38H,如图2所示。配置寄存器38D-38H可以是可编程的以使能/禁止DMA控制器14的各种可编程特征和/或配置可编程特征,如上所述。例如,Tx控制电路56中的配置寄存器38D可以包括用于每个通道的描述符环的地址,以及表示可用描述符的数量的描述符计数。配置寄存器38D还可以包括对接口电路16和部件件环回功能的发送通道的分配。各种其它的按通道的配置和非通道相关的配置可以被存储在配置寄存器38D中。类似地,配置寄存器38E可以存储用于每个接口电路16的缓冲器指针环地址、缓冲器环计数等,以及各种非通道相关的配置。配置寄存器38F可以存储各种接收DMA配置。配置寄存器38G可以将用于环回电路40的配置视为整体进行存储,以及所需要用于每个组件电路的配置。配置寄存器38G也可以存储用于仲裁器52的配置(例如,选择仲裁方案,为所选择仲裁方案的配置进行编程)。配置寄存器38H可以存储用于仲裁器66的仲裁配置。
要注意的是,虽然Tx控制电路56实现了预取以获取描述符和DMA数据,其它实施方案可以不实现预取。因而,总的来说,可以有被配置为执行发送DMA传输(和到环回电路40的DMA传输)的Tx引擎56或Tx控制电路56。
要注意的是,本说明说明了用于DMA传输的缓冲器和缓冲器指针。由缓冲器指针所指向的缓冲器(与硬件存储缓冲器诸如62、64、和68相对)可以包括连续的存储区域。软件可以分配存储区域以存储DMA数据(用于发送或者作为接收DMA数据的区域)。缓冲器指针可以包括主机地址空间中的存储区域的地址。例如,缓冲器指针可以指向存储区域的基地址(base)或者存储区域的边界地址(limit)。
现在转到图3,显示了卸载引擎44的一种实施方案的框图。在所示实施方案中,卸载引擎44包括输入缓冲器80、输出缓冲器82、一组安全电路84A到84D、CRC生成器86、以及校验和生成器88。 输入缓冲器80被耦合到Tx控制电路56并被耦合到安全电路84A~84D、CRC生成器86、以及校验和生成器88。输出缓冲器82被耦合到安全电路84A~84D、CRC生成器86、以及校验和生成器88。输出缓冲82还被耦合到卸载FIFO 48。图3更详细地显示了用于一种实施方案的安全电路84A,而安全电路84B~84D可以类似。安全电路84A包括散列电路90和密码电路92。散列电路90和密码电路92两者都被耦合到输入缓冲器80和输出缓冲器82。另外,散列电路90的输出被耦合作为密码电路的输入而密码电路92的输出被耦合作为散列电路90的输入,呈“蝶形”构造。
安全电路84A~84D可以被配置为执行各种操作以卸载分组处理的安全功能。特别地,安全电路84A~84D可以被配置为执行包括在各种安全分组规范(例如,安全互联网协议(IPSec)或安全套接层(SSL))中的加密/解密(共同称为密码、或密码功能)和散列函数。
一般来说,使用安全分组协议的通信包括协商会话(negotiationsession),其中终端交流它们所能使用的协议、所支持的安全方案、加密和散列的类型、密钥或证书交换等。然后就是使用所商定的协议、加密等的成批传输(bulk transfer)阶段。在成批传输期间,分组可以被接收到主机12中(例如,从接口电路16之一经过接收DMA路径)。软件可以查阅存储器中的数据结构以获取密钥、加密算法等等,并准备经由卸载引擎44的DMA传输来解密和/或认证分组。类似地,软件可以为安全发送准备分组并使用经由卸载引擎44的DMA传输来加密和/或认证分组。
散列电路90可以实现可被用于分组认证的各种散列函数。一般说来,至少对一部分分组计算散列,并将散列结果包括在分组中。当分组在其目的被接收时,散列可以被校验以检测分组中是否有任何字段已被改变过(从而检测分组在从其来源发送的过程中是否被修改过)。在一种实施方案中,散列电路90中可以支持下列散列函数:消息摘要5(MD-5)/安全散列算法1(SHA-1),和散列消息认证码 (HMAC)。其它实施方案可以实现SHA-2。其它实施方案可以实现任何其它的散列函数,包括上述函数的子集或超集和其它函数。
密码电路92可以被配置为执行密码功能。依据安全分组规范,密码功能可以被应用于分组的至少一部分,可能包括散列数据。在各种实施方案中,可以支持任何密码功能集合。例如,在一种实施方案中,密码电路92中可以实现下列加密/解密算法:数据加密标准(DES)、三重数据加密标准(3DES)、高级加密标准(AES)、Kasumi、所谓的Ron氏码4(ARC4)和/或Ron氏码4(RC4)。
在一些情况下,如果认证和密码功能都被使用,那么当准备用于发送的分组时,先执行加密,然后对已加密数据执行认证散列(例如IPSec)。在其它情况下,先执行认证散列,然后执行分组(包括散列数据)的加密(例如SSL)。在这两种情况中,对所接收的数据以相反的顺序执行认证散列和解密。
通过电路90和92之间的蝶形连接,安全电路84A到84D可以支持在单个DMA传输中的数据加解密和散列的两个顺序中的任何一个。即,如果先执行加解密,那么提供给安全电路84A的数据可以被发送到密码电路92,密码电路92的输出可以被发送到散列电路90的输入以对加密(或解密)数据计算散列函数。如果先执行散列,那么提供给安全电路84A的数据可以被发送到散列电路90,散列电路90的输出可以被发送到密码电路92的输入。安全电路84A~84D也支持在给定的DMA传输中只执行散列或者只执行密码功能。用于DMA传输的来自DMA描述符的控制信息可以控制数据经过安全电路84A~84D的路线。
所示实施方案显示了4个安全电路84A~84D。其它实施方案可以包括任意数量的安全电路,包括一个安全电路。在一种实施方案中,安全电路84A~84D可以用两倍于系统10中所用系统时钟的频率进行钟控,每个系统时钟周期可以接收两个操作(一个在系统时钟的上半个周期执行,另一个在系统时钟的下半个周期执行)。因而,可以有8个可供软件选择来执行安全功能的逻辑安全电路。
CRC生成器86可以被配置为对在指定了CRC生成的DMA传输中所提供的数据生成CRC数据。CRC生成也可以被用于校验来自所接收的分组的CRC数据。例如,CRC生成器86中所生成的CRC数据可以与所接收的分组中的相应CRC数据进行比较。替代地,可以通过CRC生成器86将所接收的分组的CRC数据包括在DMA传输中,并且可以根据预定值来校验结果以检测所接收分组中的错误。在一些实施方案中,可以有不止一个CRC生成器86。此外,CRC生成器86可以被以两倍于系统时钟频率进行钟控,类似于安全电路84A~84D,以提供比卸载引擎44中物理上所提供的CRC生成器更多的逻辑CRC生成器。在一种特定实施方案中,可以有4个以系统时钟频率的两倍钟控的CRC生成器86,以提供与安全电路84A~84D相等数目的逻辑单元(8个)。
校验和生成器88可以被配置为对在指定了校验和生成的DMA传输中所提供的数据生成校验和。校验和生成也可以被用于校验来自所接收分组的校验和数据。例如,校验和生成器88中所生成的校验和数据可以与所接收的分组中的相应校验和数据进行比较。替代地,可以通过校验和生成器88将所接收的分组的校验和数据包括在DMA传输中,并且可以根据预定值来校验结果以检测所接收分组中的错误。在一些实施方案中,可以有不止一个校验和生成器88。
输入缓冲80可以临时存储由Tx控制电路56所提供的数据,直到目标电路84A~84D、86、或88可以对数据操作为止。电路84A~84D、86、和88可以将数据输出到输出缓冲器82以被写入卸载FIFO48。在其它实施方案中,可以不包括输入缓冲器80和/或输出缓冲器82。
图4为显示了可以在系统10的一种实施方案中所实现的DMA模型的一种实施方案的框图。如上所述,DMA传输可以从来源地址空间或接口(模块100)到目的地址空间或接口(模块102)发生。图4中的模块104表示DMA传输。可选地,DMA传输可以包括对DMA数据执行一个或多个操作、或功能(模块106)以产生结果。结 果被传回到DMA模块104并可以被提供给目标地址空间。在一些情况中,结果可以是可以被写入目标地址空间的被转换的DMA数据。在其它情况中,结果可以与DMA数据分开并可以附加到DMA数据(例如,附加于DMA数据的末尾)或者可以被存储于单独的位置(例如,在用于DMA传输的DMA描述符中)。
在一些情况下,图4可以表示单个DMA传输。在其它情况中,可以使用多个DMA传输以完成图4的模型。例如,功能106可以由环回电路40(或者其部件,对于图2的实施方案)执行。因而,在所示实施方案中,如果要求在目标是接口电路16的DMA传输上执行功能,那么可以执行两个DMA传输。第一DMA传输可以是从来源地址空间到目标地址空间,指定要被执行的所需功能。接着,第二DMA传输可以被执行,使用第一DMA传输的目标地址空间作为来源并将所需接口电路作为目标。
例如,分组可以由软件进行准备以用于经由MAC 34A~34B的发送,并且分组可以被存储于主机12中的存储器中。可能需要使用密码和/或散列的安全发送,因此软件可以建立从主机12中的第一存储区域到第二存储区域的第一DMA传输,并且第一DMA传输可以指定卸载引擎44中的加密和/或散列。软件也可以准备从第二存储区域到目标MAC 34A~34B的第二DMA传输。类似地,分组可以被接收作为到主机12中的存储器的DMA,并且软件可以提供卸载引擎44建立DMA传输以校验散列和/或解密分组。
其它实施方案可以允许当数据被发送到接口电路16时应用功能。例如,在一种实施方案中,IOB22中可以支持部分校验和生成以用于生成TCP分组的TCP标头中所包括的校验和。当为这种分组指定DMA传输时,IOB 22可以累加IOM 24中的所述分组数据,并且可以为每个缓存行生成部分校验和。可以在DMA控制器14中,使用来自IOB 22的每个缓存行的部分校验和以及没有被计算校验和的数据,生成最终的校验和,并且DMA控制器14可以将所算的校验和插入到TCP标头中。其它实施方案可以允许环回电路40的输出被直接 发送到接口电路16,作为其中执行所述功能和发送所述数据的单个DMA传输的一部分。此外,其它实施方案可以允许来自Rx DMA数据路径的数据被输入到环回电路40以在接收DMA传输期间对所接收的DMA数据执行功能。
接下来转到图5,显示了存储描述符数据结构和缓冲器指针数据结构的存储区域110的框图。在图5的实施方案中,描述符数据结构包括一组描述符环112A~112N。对于由DMA控制器14支持的每个DMA通道(例如图5中的通道0到通道N)都可以有一个描述符环。即,DMA通道和描述符环之间可以是一一对应的,并且对于给定DMA通道的DMA传输可以在分配给该通道的描述符环112A~112N中具有相对应的描述符。另外,在图5的实施方案中,缓冲器指针数据结构可以包括一组缓冲器指针环114A~114M。每个接口电路16(例如,图5中的接口电路0到M,其中接口电路16的数量可以是M+1)都可以有一个缓冲器指针环。即,接口电路和描述符环之间可以是一一对应的,并且用于DMA在该接口上所接收的数据的缓冲器指针可以取自分配给该接口电路的缓冲器指针环114A~114M。
每个描述符环112A~112N可以包括一组描述符用于相应的DMA通道。对于发送DMA通道,可以按环内所包括的顺序来处理描述符,从环中第一个描述符到最后一个,然后在最后的描述符被处理之后环绕到环中的第一个描述符。这样,在给定时刻,环中的任意描述符都可以被视为接下来要被处理的“当前描述符”。软件可以以各种方式控制可用于DMA通道上处理的描述符的数目,如上所述。因此,如果在给定的发送DMA通道上(在相应的描述符环中)有可用的描述符,那么DMA控制器14可以执行指定的DMA传输(与其它DMA通道一起进行资源仲裁)。对于本实施方案中的接收DMA通道,相应的描述符环中的描述符可以在DMA传输被在该通道上接收到时被消耗。DMA控制器14可以使用用于存储所接收的DMA数据的缓冲器指针将当前描述符写入,以及将其它有关DMA传输的信息诸如传输状态信息写入。
其它实施方案可以使用其它数据结构(例如描述符的链表)。每个描述符环112A~112N的基地址可以被提供给DMA控制器14(例如,编程到配置寄存器38D或38F中,取决于通道是发送通道还是接收通道)。描述符环112A~112N的其它属性也可以被编程(例如范围(extent))。在一些实施方案中,给定环中的描述符可以是固定尺寸的,使得给定描述符可以位于环的基地址的固定偏移处。在其它实施方案中,描述符可以是可变尺寸的。在另一些实施方案中,描述符可以是固定尺寸或可变尺寸的,取决于配置寄存器38D或38F中的可编程属性。所述属性可以按通道在通道上可编程的,或者可以是将通道视为整体进行编程。
每个缓冲器指针环114A~114M包括指向存储器中由软件所分配的缓冲器的缓冲器指针,以用于从相应接口接收来自Rx DMA传输的DMA数据。与描述符环112A~112N相似,软件可以以任意所需方式在缓冲器指针环114A~114M中产生DMA控制器14可用的缓冲器指针。用于每个接口电路的缓冲器指针环的基地址可以被编程到DMA控制器14中(例如,图2的实施方案中,在Rx预取引擎60中的配置寄存器38E中),并且在任何给定时刻,缓冲器指针环中的缓冲器指针之一都可以是要被为相应接口而消耗的下一个缓冲器指针。
在一些实施方案中,通过提供与接口电路而不是与DMA通道相关联的缓冲器指针环114A~114M,软件可以将缓冲器分配给数目较少的接口电路而不是数目较多的DMA通道。在一些情况中,存储器的分配可以更有效率。处理较多业务量的接口电路可以被分配更多缓冲,而无需软件预先知道将接收业务量的是什么通道。当从给定接口接收DMA数据时,数据可以被存储在分配给该接口的缓冲器中,并且缓冲器指针可以被写入到接收到DMA数据的通道的描述符中。描述符可以是描述符环112A~112N其中之一,取决于与DMA传输相关联的是哪个接收DMA通道。
对于每个缓冲器指针,缓冲器指针环114A~114M也可以包括 尺寸字段(图5中的Sz)。尺寸字段可以表明缓冲器指针所指向的缓冲器的尺寸。因此,软件可以基于例如可用存储量、给定接口上的DMA传输的期望尺寸等来分配不同尺寸的缓冲器。
现在转到图6的流程图,显示了对于给定接口电路,Rx预取引擎60的一种实施方案的操作。Rx预取引擎60可以包括对于并行并独立地操作的每个接口电路实现了图6中所示操作的电路。虽然图6中为了易于理解按特定顺序表示了模块,但是模块可以以实现图6中所示操作的组合逻辑电路并行地实现。在一些实施方案中,可以将模块中的一个或多个或以流程图作为整体跨多个时钟周期进行流水作业。
Rx预取引擎60可以判断(在接口电路相应的缓冲器指针环114A~114M中)是否有接口电路可用的缓冲器指针(判断模块120)以及接口电路是否需要缓冲器指针(判断模块122)。如果至少一个缓冲器指针是可用和需要的(判断模块120和122,分支“是”),Rx预取引擎60可以生成预取请求以从主机12的存储器中的缓冲器指针环114A~114M读取缓冲器指针(模块124)。
如果在相应的缓冲器指针环114A~114M中有缓冲器指针还没有被Rx预取引擎60所预取,那么缓冲器指针可以基本上是“可用的”。缓冲器指针可以由软件插入到缓冲器指针环114A~114M中,并且软件可以以任意前述方式表明它们是可用的(例如,在缓冲器指针环入口中使用有效位、类似于上述的DMA描述符计数那样递增缓冲器指针环计数器等)。缓冲器指针也可以以各种方式被视为是“被需要的”。例如,如果接收DMA通道被使能并且没有为通道预取缓冲器指针,那么缓冲器指针可以是“被需要的”。在一些实施方案中,Rx预取引擎60可以被编程以表明应被预取的缓冲器指针的数量,或者应被预取的缓冲器指针的最小和最大数量。Rx预取引擎60可以为缓冲器指针生成预取请求以尝试预取所编程数量的缓冲器指针。
如上所述,对于每个被使能的接口电路,图6的操作可以并行执行。如果并发地生成了多于一个的预取请求,那么Rx预取引擎60也 可以包括用于在预取请求之中进行选择的电路。例如,在一种实施方案中,Rx预取引擎60可以实现在预取请求之的中固定优先级方案。在其它实施方案中,Rx预取引擎60可以选择与目前被预取和预备了最少指针的接口电路相对应的预取请求。作为另一个例子,Rx预取引擎60可以根据哪个接口电路在当前预取缓冲器指针数目和用于该接口电路的缓冲器指针所需数目之间具有最大差别,来对请求进行加权。也可以使用轮询调度或基于优先级的选择机制,并且如果需要的话,这些机制可以包括接口电路之中的可编程的权重。饥饿预防(starvation prevention)机制诸如按接口超时(per-interface timeout)也可以被用于确保为每个接口电路预取指针。
所预取的缓冲器指针在要被读取的IOM 24中可用时,可以由IOM/IOB接口电路70通知Rx预取引擎60。在一些实施方案中,Rx预取引擎60可以将一些或全部的指针从IOM 24读取到缓冲器64中,并且可以视需要将所预取的缓冲器指针提供给Rx控制电路58。
现在参考图7的流程图,表示了Rx控制电路58响应接收数据的一种实施方案的操作。可以从环回电路40或接口电路16接收数据。虽然图7中为了易于理解按特定顺序显示了模块,但是可以利用实现图7所示作的组合逻辑电路并行地实现模块。在一些实施方案中,可以将模块中的一个或多个或以流程图作为整体跨多个时钟周期进行流水作业。
Rx控制电路58可以判断是否缓冲器已被用于接收DMA数据(判断模块130)。如果缓冲器在此前已被选择存储DMA数据并且还未满,那么缓冲可能在被使用。Rx控制电路58可以被配置为为每个Rx DMA通道保持活动缓冲(active buffer)并且为环回电路40保持一个或更多的缓冲器指针。替代地,环回电路40可以给每个数据传输提供缓冲器指针,而Rx控制电路58可以不为环回电路40保持指针。如果缓冲器没有在被使用(判断模块130,分支“不”),Rx控制电路48可以选择下一个缓冲器指针以识别要被使用的缓冲器(模块132)。对于来自环回电路40的DMA传输,下一个缓冲器指针可 以被提供自Rx预取引擎60,并且Rx控制电路58可以表明对Rx预取引擎60的指针消耗。
在两种情况的任何一种中,Rx控制电路58可以将所接收的数据写入到缓冲器(模块134)。即,Rx控制电路58可以向IOM/IOB接口电路70生成写入请求以将DMA数据写入到存储器中。至少对于从接口电路16所接收的数据,Rx控制电路58可以监控写入到缓冲器中的字节数以判断何时缓冲已满。在一些实施方案中,缓冲器尺寸可以由环回电路40提供,并且Rx控制电路58也可以对于环回传输监视缓冲器满。如果缓冲已满,或者如果数据传输被来源(环回电路或接口电路16)指示为DMA传输结束(判断模块136,分支“是”),那么Rx控制电路58可以将缓冲器指针写入到用于DMA传输的描述符(模块138)。对于环回传输,可以没有用于接收数据的描述符,这是因为缓冲器指针可以是来自来源DMA描述符的目的缓冲器指针,并且可以不用为这样的传输执行模块138。如果数据传输被指示为DMA传输结束(判断模块140,分支“是”),Rx控制电路58可以执行各种传输处理结束(模块142)。例如,对于来自接口电路16的DMA传输,Rx控制电路58可以为DMA传输生成各种状态、为传输生成DMA描述符标头、并且将DMA描述符写入到与接收了数据的Rx DMA通道相对应的描述符环112A~112N中。另外,Rx控制电路58可以向IOM/IOB电路70发出传输结束信号。发出传输结束信号可以通知IOM/IOB电路70该通道上再不会提供数据。如果未完成的缓存行被DMA更新,那么IOM/IOB电路70可以使被更新的数据被提交给存储器(例如,在IOC 26中,在一些实施方案中,以避免互连30上的读取-修改-写入)。
接下来转到图8的流程图,表示了对于给定Tx DMA通道的Tx控制电路56的一种实施方案的操作。Tx控制电路56可以包括为每个并行且独立操作的Tx DMA通道实现图8中所示操作的电路。虽然图8中为了易于理解按特定顺序显示了模块,但是可以以实现图8中所示操作的组合逻辑电路来并行地实现模块。在一些实施方案中,可 以将模块中的一个或多个或以流程图作为整体跨多个时钟周期地进行流水作业。
Tx控制电路56可以判断(在通道相应的缓冲器指针环112A~112N中的)描述符是否可供通道预取(判断模块150),以及通道是否需要描述符(判断模块152)。如果至少一个描述符是可用的和需要的(判断模块150和152,分支“是”),Tx控制电路56可以生成请求以从主机12的存储器中的缓冲器指针环112A~112N读取描述符(模块154)。
类似于上述有关图6的“可用的”缓冲器指针,如果在相应的描述符环112A~112N中有描述符还没有被Tx控制电路56所预取,那么描述符通常可以是“可用的”。用于Tx DMA通道的描述符可以由软件插入到描述符环112A~112N中,并且软件可以以任意前述方式表明它们是可用的(例如,在描述符环入口中使用有效位、递增描述符环计数器等)。描述符也可以以各种方式被视为是“被需要的”。例如,如果Tx DMA通道被使能并且没有为通道预取描述符,那么描述符可以是“被需要的”。在一些实施方案中,只要在存储描述符的IOM 24和/或缓冲62中有空间,Tx控制电路56就可以预取描述符。在其它实施方案中,Tx控制电路56可以是可编程的以指示应被预取的描述符数量、或者应被预取的描述符的最小和最大数量。Tx控制电路56可以生成预取描述符的请求以尝试预取所编程数量的描述符。
当被预取的描述符在要被读取的IOM 24中可用时,可以由IOM/IOB接口电路70通知Tx控制电路56。在一些实施方案中,Tx控制电路56可以将一些或全部的描述符从IOM 24中读入到缓冲器62。
Tx控制电路56可以判断DMA数据是否可供通道预取(在通道上被发送)(判断模块156),以及通道是否需要DMA数据(判断模块158)。如果DMA数据是可用的和需要的(判断模块156和158,分支“是”),那么Tx控制电路56可以生成请求以从主机12的地址空间中(例如,从主机12中的存储位置)读取DMA数据(模块160)。
如果Tx控制电路56有描述符要被处理(例如,描述符是通道的描述符环中下一个要被处理的),那么DMA数据可被认为是可用于预取的,描述符数据在缓冲器62或IOM 24中,并且描述符数据描述了要被执行的有效DMA传输。如果通道上的上一个DMA数据已被发送(或即将被发送),那么DMA数据可以是被需要的。在一些实施方案中,Tx控制电路56可以编程为在给定时间要预取多少数据,如果已被预取但还尚未发送的DMA数据数量少于所需数量,那么DMA数据可以是被需要的。在一些实施方案中,发送通道中的仲裁方案也可以影响是否需要DMA数据(例如,如果通道在较长的时间内不会赢得仲裁,那么可能还不需要DMA数据,因为直到赢得仲裁为止它不可被发送)。
要注意的是,模块156、158和160所示的操作可以与模块150、152和154的操作无关(而不是使用所预取的描述符来判断DMA数据是否可用)。因此,实现模块156、158和160的电路可以与实现模块150、152和154的电路无关,并且可以用这种电路并行地求值。
如上所述,可以为每个被使能的Tx DMA通道并行执行图8的操作。如果并发地生成多于一个的预取请求,那么Tx控制电路56也可以包括用于在预取请求之中进行选择的电路。例如,Tx控制电路56可以选择与目前被预取和预备了最少描述符或最少量DMA数据的Tx DMA通道相对应的预取请求。作为另一个例子,Tx控制电路56可以基于哪个Tx DMA通道在当前预取描述符/DMA数据数目和用于该通道的描述符/DMA数据所要数目之间具有最大差别,来对请求进行加权。也可以使用轮询调度或基于优先级的选择机制,并且如果需要的话,这些机制可以包括在通道之中可编程的权重。饥饿预防机制诸如按接口超时也可以被用于确保为每个被使能的通道预取描述符和DMA数据。
当被预取的DMA数据在要被读取IOM 24中可用时,可以由IOM/IOB接口电路70通知Tx控制电路56。在一些实施方案中,Tx控制电路56可以将一些或全部的DMA数据从IOM 24中读入到缓冲 器62。另外,Tx控制电路56可以将所预取的DMA数据发送给目标,如图9中的实施方案中所示。虽然图9中为了易于理解按特定顺序显示了模块,但是可以以实现图9中所示操作的组合逻辑电路来并行地实现模块。在一些实施方案中,可以将模块中的一个或多个或以流程图作为整体跨多个时钟周期进行流水作业。
如果Tx DMA通道被分配给环回电路40(或更确切地说,分配给环回电路40中的环回部件——判断模块162,分支“是”),Tx控制电路56可以从用于传输的和要与DMA数据被一起发送的DMA描述符中提取一个或多个目的缓冲器指针(模块164)。也可以提供每个目的缓冲器指针的尺寸信息,以使Rx控制电路58可被告知缓冲器的尺寸。环回电路40可以接收目的缓冲器指针并将它们与要被写入到存储器的数据(原始DMA数据,例如在拷贝DMA传输中;或者被转换的DMA数据,例如,如果进行了加密的话)一起提供。替代地,如果环回结果要被写入到DMA描述符中(例如,散列结果、CRC结果、或校验和结果),那么可以提供指向DMA描述符的指针。Tx控制电路56可以将数据连同通道数目、指针(如果有的话)、控制信息(如果有的话)一起发送给目标接口电路16或环回部件(模块166)。控制信息也可以被从DMA描述符中提取(例如,选择所需环回操作的控制信息、用于接口电路的控制信息等)。
可以为每个Tx DMA通道并行地执行图9的操作。即,Tx控制电路56可以包括为每个Tx DMA通道并行地实现图9的操作的单独的电路。仲裁机制可以被用于在有DMA数据要发送的通道之间进行仲裁,以选择通道以在到接口电路16和环回电路40的发送数据路径上进行发送。
描述符环112A~112N在以上已被描述为存储各种描述符。在一种实施方案中,描述符环112A~112N可以存储传输描述符(描述从来源到目的的DMA传输)和控制描述符两者。控制描述符可以不指定DMA传输,而是代之以将用于通道的控制信息进行编码。例如,控制描述符可以被用于指定配置(例如,一个或多个配置寄存器 38A-38G的内容)。这样,在DMA传输之间,控制描述符可以被用于对DMA控制器14或其部件、或系统10的其它部件在线及时地重构。因此,软件可以,例如,建立一个或更多的传输描述符以在第一配置下执行DMA传输,建立一个或更多的控制描述符以改变配置,建立一个或更多的附加传输描述符以在第二配置下执行DMA传输,并在随后让描述符作为单位在DMA通道上可用。DMA传输、重构、和附加的DMA传输可以都被执行而不用处理器干预。
也提出了控制DMA控制器14却不明确地(explicitly)引发DMA传输的其它类型的控制描述符。例如,提出了时间触发器描述符,当时间触发器描述符被处理时,在DMA通道上引起时间延迟。例如,系统10可以包括可以被用延迟值编程的计时器,并且描述符环中下一个描述符的处理可以被延迟直到计时器终止为止。计时器的期满可以对DMA控制器14生成触发事件以“唤醒”DMA控制器14。在各种实施方案中,用户可以用延迟值对计时器编程,或者延迟值可以被包括在时间触发器描述符中。在其它实施方案中,DMA控制器14可以实现计时器。时间触发器描述符可以有各种用途。例如,时间触发器描述符可以与从来源地址空间拷贝到目的地址空间的拷贝DMA描述符交织。来源地址空间可以包括一个或更多的存储器映射I/O寄存器或其它系统状态寄存器。这样,重复的拷贝DMA传输可以被用于读取寄存器并将结果写入到目的,其被时间触发器描述符延迟。拷贝DMA传输可以取代处理器18A~18B上的软件循环查询,解放处理器用于其它操作。
图10为与通道0对应的描述符环112A的一种实施方案的框图,说明了将控制描述符嵌入描述符环中的传输描述符内。可以用图10的方式将多于一个的控制描述符按要求(连贯地或者在环中的不同点处)嵌入。
在图10中,显示了两个传输描述符170A~170B,接着是控制描述符172,接着又是两个传输描述符170C~170D。这样,例如,由描述符170A~170B所指定的两个DMA传输将由Tx控制电路56 执行,接着处理控制描述符172。在处理控制描述符172之后,接着会执行由描述符170C~170D所指定的两个DMA传输。
图11为流程图,表示了Tx控制电路56的一种实施方案可以采用的附加处理,用于Tx DMA通道所对应的描述符环中的嵌有传输描述符的控制描述符。Tx控制电路56可以包括为每个并行且独立操作的Tx DMA通道实现图11中所示操作的电路。虽然图11中为了易于理解按特定顺序显示了模块,但是可以以实现图11中所示操作的组合逻辑电路来并行地实现模块。在一些实施方案中,可以将模块中的一个或多个或以流程图作为整体跨多个时钟周期进行流水作业。
Tx控制电路56可以从描述符环中预取描述符(模块174),假设一个是通道可用的和需要的(例如,如图8所述)。Tx控制电路56可以在描述符返回到Tx控制电路56的时候处理该描述符,并且可以判断该描述符是否为控制描述符(判断模块176)。例如,描述符标头可以包括指明该描述符是传输描述符亦或是控制描述符的类型字段。如果描述符是传输描述符(判断模块176,分支“否”),那么Tx控制电路56可以处理传输描述符(模块177)。例如,处理传输描述符可以类似于上述图8和图9的相关描述。
如果描述符是控制描述符(判断模块176,分支“是”),那么Tx控制电路可以判断控制描述符是否是时间触发器描述符(判断模块178)。可以通过控制描述符标头中的编码来表明时间触发器描述符。替代地,时间触发器描述符可以指定要被载入到配置寄存器38A-38G中的值,这类似于其它配置描述符。所载入的值可以指定所需的延迟。Tx控制电路56可以通过对载入配置寄存器的寄存器地址进行译码来检测时间触发器。如果控制描述符是时间触发器描述符(判断模块178,分支“是”),那么Tx控制电路56可以延迟处理下一个来自描述符环的描述符直到时间触发器描述符所指定的延迟期满为止(模块180)。如果控制描述符不是时间触发器描述符(判断模块178,分支“否”),Tx控制电路56可以用控制描述符值进行重构(模块182)。例如,控制描述符可以包含标识配置寄存器38A-38G 的寄存器地址,以及要写入配置寄存器的值。Tx控制电路56可以发起写入操作。替代地,控制描述符可以包括指向存储一系列寄存器地址和要被写入那些寄存器的值的存储器缓冲器的缓冲器指针。这样,使用控制描述符可以进行较大量的配置。在一些实施方案中,可以通过使用控制描述符来取消在处理器18A~18B上执行的对每个配置寄存器进行写入的指令。
图12~16举例说明了根据DMA控制器14的一种实施方案所述的各种类型的描述符。通常,描述符包含标头、非必需的存储结果(例如,由环回电路40生成的结果)的数据字段、以及指向存储着DMA数据的缓冲器(来源缓冲器指针)或指向可被用于存储DMA数据的缓冲器(目的地缓冲器指针)的一个或更多的缓冲器指针。
在本实施方案中,描述符根据它们是接收或是发送DMA,亦或是视选择所定的由环回电路40所执行的功能而不同。接收描述符被用于Rx DMA传输,其它类型的描述符为Tx DMA传输和环回功能所使用。DMA控制器14(更确切地说,在一种实施方案中,Tx控制电路56)可以基于对接口电路16或环回电路40中功能分配给定的Tx DMA通道,来判断用于该通道的描述符环中的描述符格式。
在图12~16中,详细图示了各种字段(例如,特别是标头字段)。虽然在图12~16中显示了某些特定信息,但这不是意图在所示信息、或所示信息的子集、或所示信息的替代物之外排除其它信息的使用。在各种实现中,视需要可以包括各种附加信息。
图12为接收描述符190的一种实施方案的框图。接收描述符190可以是由Rx控制电路58所生成的并被写入到与Rx DMA通道相应的描述符环112A~112N中的描述符的格式。在图12的实施方案中,接收描述符190包括标头字段192(用于一种实施方案的图12的分解图中所示)、非必需的散列结果字段194、以及一个或更多的缓冲器指针字段196A~196N。每个缓冲器指针字段196A~196N包括可以编码了缓冲器尺寸的尺寸字段、以及编码了缓冲器指针的指针字段。Rx控制电路58可以被配置为用来自缓冲器指针环114A~114M的用 于存储所接收DMA数据的缓冲器指针来写入缓冲器指针字段196A~196N。散列结果字段194可以被用于存储散列结果。
接收标头字段192的分解图包括类型字段192A、样式字段(stylefield)192B、散列保留字段192C、缓冲器计数字段192D、分组长度字段192E、和状态字段192F。类型字段192A可以编码描述符类型,例如控制描述符或传输描述符。类型字段192A(及下述其它类似的用于其它描述符的类型字段)可以将描述符标识为传输描述符,除了图16中所示的控制描述符之外。样式字段192B可以编码描述符的样式,其是指缓冲器指针字段196A~196N中的缓冲器指针是否包括来源和目的指针两者或是只有目的指针(因为来源对于Rx DMA传输而言是接口电路)。散列保留字段192C可以被用于表明非必需的散列结果字段194是否被包含在描述符中。缓冲器计数字段192D可以被用对用于存储接收DMA数据的缓冲器的数目也就是缓冲器指针字段196A~196N的数目的计数进行编码。分组长度字段192E可以被用缓冲器中存储的分组的长度(例如,以字节为单位)进行编码。状态字段122F可以包括各种用于传输的状态,可以包括由Rx控制电路58所生成的状态(例如,错误指示)和/或由来源接口电路16所提供的状态。Rx控制电路58可以在终止DMA传输时对接收标头192进行写入。
图13是发送描述符200的一种实施方案的框图。发送描述符200可以是由Tx控制电路56为对接口电路16、尤其是对MAC 34A~34B的Tx DMA传输所用的描述符格式,并且可以由软件写入到被分配给接口电路16的Tx DMA通道所对应的描述符环112A~112N中。在图13的实施方案中,发送描述符200包括标头字段202(用于一种实施方案的图13的分解图中所示)、以及一个或更多的缓冲器指针字段204A~204N。每个缓冲器指针字段204A~204N包括可以编码了缓冲器尺寸的尺寸字段、以及编码了缓冲器指针的指针字段。Tx控制电路56可以被配置为读取缓冲器指针字段204A~204N以从用于发送的缓冲中预取DMA数据。
发送标头字段202的分解图包括类型字段202A、样式字段202B、MAC配置字段202C、分组长度字段202D、和分组信息字段202E。类型字段202A和样式字段202B可类似于上述的类型字段192A和样式字段192B。MAC配置字段202C可以用各种用于被DMA传输作为目标的MAC 34A~34B的分组特定的(packet-specific)MAC配置信息进行编码。例如,MAC配置字段202C可以包括虚拟局域网(VLAN)配置(例如,无、插入、移除、或修改)、CRC配置(例如,无、插入CRC、填充(pad)CRC、修改CRC)、以及是否修改MAC来源地址。分组长度字段202D可以用缓冲中所存储的分组的长度(例如,以字节为单位)进行编码。分组信息字段202E可以用各种描述分组的信息(例如,IP标头长度、以太网标头长度、分组类型(TCP/UDP)、校验和使能等)进行编码。
图14为拷贝描述符210的一种实施方案的框图。拷贝描述符210可以是Tx控制电路56为使用拷贝FIFO 42的拷贝DMA传输(从主机12中的一个存储区域到主机12中的另一个存储区域)所用的描述符的格式。这样,可以在与分配给拷贝FIFO 42的Tx DMA通道所对应的描述符环112A~112N中使用拷贝描述符210。在图14的实施方案中,拷贝描述符210包括标头字段212(用于一种实施方案的图14分解图中所示)、和一个或更多的缓冲器指针字段214A~214N。每个缓冲器指针字段214A~214N包括可以编码了缓冲器尺寸的尺寸字段、以及编码了缓冲器指针的指针字段。另外,在该实施方案中,每个缓冲器指针字段214A~214N包括来源/目的(S/D)字段,其中将指针标识为来源指针(定位存储着源DMA数据的缓冲器)或者目的指针(定位要存储DMA数据的缓冲器)。Tx控制电路56可以被配置为读取缓冲器指针字段214A~214N以从用于发送的来源缓冲器中预取DMA数据,并将指向用于发送的拷贝FIFO 42的目的指针提供给Rx控制电路58。
在一种实施方案中,对于拷贝描述符210中的给定目的指针,可以有多于一个的来源指针。DMA控制器14可以将数据从来源缓冲器 中按拷贝描述符210中所列出的顺序拷贝到目的缓冲器中。这样,DMA控制器14可以支持在拷贝操作中将多个存储区域中的散乱数据收集到目的存储区域中。同样,在一种实施方案中,对于拷贝描述符210中的给定来源指针,可以有多于一个的目的指针。在这样的实施方案中,可以支持来自来源缓冲的数据的散乱(scatter)。
发送标头字段212的分解图包括类型字段212A、样式字段212B、来源类型字段212C、目的类型字段212D、和逻辑块长度字段212E。类型字段212A和样式字段212B可类似于上述的类型字段192A和样式字段192B。来源类型字段212C和目的类型字段212D可以被编码以表明当DMA传输进行时来源缓冲器指针和目的缓冲器指针应如何被修改。例如,在一种实施方案中,每个缓冲器指针可以是下列类型之一:顺序递增;顺序递减;或固定(以各种固定宽度,例如,1、2、4、8或16字节)。顺序递增表示地址在每个数据发送之后被增加所发送的数据量。递减也类似,只是地址被递减。在数据被写入连序的存储位置的情况下,顺序递增或顺序递减可以被用于存储区域。如果地址为映射到寄存器或设备端口的存储器,那么可以使用固定选项,并且宽度可以是每个对寄存器/器件的发送的宽度。来源类型字段212C也可以有用于零的编码,并且被用于将一组零写入到目的。目的类型字段212D也可以有只用于预取的编码,其中来源DMA数据被预取但不被写入到目的。在一些实施方案中,逻辑块长度字段可以被用于表明可跨越多个DMA描述符的逻辑DMA块的长度。即,可以实际上用多个描述符指定逻辑DMA操作,并且逻辑DMA块长度可以为逻辑DMA操作的长度(例如,关于多个描述符的数据传输的总和)。
XOR电路46可以使用与发送DMA描述符200类似的描述符。多个通道可以被分配给XOR电路46,并且每个通道中的描述符可以指定XOR来源中的一个。第一通道也可以为XOR结果指定目的(目的缓冲器)。
图15是卸载描述符220的一种实施方案的框图。卸载描述符220 可以是Tx控制电路56为指定卸载引擎44的DMA传输所用的描述符的格式。这样,可以在与分配给卸载引擎44的Tx DMA通道所对应的描述符环112A~112N中使用卸载描述符220。图15的实施方案中,卸载描述符220包括标头字段222(用于一种实施方案的图15中分解图中所示)、非必需的结果保留字段224、以及一个或更多的缓冲器指针字段226A~226N。每个缓冲器指针字段226A~226N包括可以编码了缓冲器尺寸的尺寸字段、以及编码了缓冲器指针的指针字段。另外,在该实施方案中,每个缓冲器指针字段226A~226N包括来源/目的(S/D)字段,其将指针标识为来源指针(定位存储着源DMA数据的缓冲器)或者目的指针(定位要被存储DMA数据的缓冲器)。Tx控制电路56可以被配置为读取缓冲器指针字段226A~226N以从来源缓冲器中预取DMA数据,并标识目的指针,如果有的话。如果被转换的DMA数据是卸载引擎44的结果,那么可以有用于被转换的DMA数据的目的指针。如果生成了与DMA数据分开的结果(例如,存储于结果保留字段224中),在一些情况中可以没有目的指针,并且DMA数据可以不被写入到目的。
卸载标头字段222的分解图包括类型字段222A、样式字段222B、结果保留字段222C、加密模式字段222D、功能序号字段222E、逻辑块长度字段222F、和卸载控制字段222G。类型字段222A和样式字段222B可类似于上述的类型字段192A和样式字段192B,而逻辑块长度字段222F可以类似于上述的逻辑块长度字段212E。结果保留字段222C可以被编码以表明结果保留字段224是否被包括在卸载标头描述符220中,并且还可以表明结果保留字段224的尺寸(例如,在一种实施方案中,为64位、192位、或320位)。如果结果不是被转换的DMA数据,或者是在被转换的DMA数据之外被生成的,那么结果保留字段224可以被用于存储由卸载引擎44所生成的结果。加密模式字段222D可以用卸载引擎44为处理数据需要的模式进行编码,如果有的话。加密模式可以包括无操作、只签名(例如生成器86或88中的CRC或校验和)、只加密、只解密、加密并且散列(有先 散列或先加密的选项)、或者解密并且散列(有先散列或先解密的选项)。功能序号字段222E可以用那些使用安全电路84A~84D的模式(例如上述由安全电路84A~84D所组成的8种逻辑功能其中之一)的功能序号进行编码。卸载控制字段222G可以包括用于DMA传输的附加控制信息。例如,每个签名标头、密码标头、密码尾部的长度,并且散列尺寸可以被包括在卸载控制字段222G中。同样,所选的加密/解密(密码)算法、散列算法、和分组密码模式可以被编码于卸载控制字段222G中。卸载控制字段222G中还可以包括各种其它的控制位。
图16是控制描述符230的一种实施方案的框图。控制描述符230可以是Tx控制电路56在任意DMA通道中所用的控制描述符的格式。在图16的实施方案中,控制描述符230包括标头字段232(用于一种实施方案的图16分解图中所示)、和数据或尺寸/指针字段234。数据或尺寸/指针字段234可以存储要被写入配置寄存器38A-38G的内嵌数据(inline data)、或者可以指向存储一系列寄存器地址和要被写入寄存器的配置数据的缓冲器的存储缓冲器指针(和缓冲器尺寸)。
控制标头字段232的分解图包括类型字段232A、内嵌/指针字段232B、接口/功能ID字段232C、和寄存器地址字段232D。类型字段232A可以类似于上述的类型字段192A,将描述符230标识为控制描述符。内嵌/指针字段232B可以被编码以表明数据或尺寸/指针字段234是否存储着要被写入配置寄存器的内嵌数据、指向寄存器地址和配置数据缓冲器的缓冲器指针、或事件。接口/功能ID字段232C被编码以标识配置数据的目标(例如接口电路、卸载引擎44中的功能等)。在本实施方案中,寄存器地址可以属于(local to)接口/功能ID。如果控制描述符230有内嵌数据,那么寄存器地址字段232D可以用寄存器地址编码。
现在转到图17,显示了校验和生成器88的一种实施方案的框图。图17的一种实施方案中,校验和生成器88包括多个的16位3:2进位保留加法器(CSA)240A~240G、全加器242、和16位累加器(ACC) 244。校验和生成器88被耦合以接收128位(16字节)输入(例如从Tx控制电路56)。128位输入被划分成16位部分以作为输入送到CSA240A~240C。另外,累加器244的输出被作为输入耦合到CSA 240C。每个CSA 240A~240C输出和以及进位项,在图17中标为“S”和“C”。CSA 240A~240C的和以及进位输出被输入到CSA 240D和240E。CSA 240D的和以及进位输出与CSA 240E的进位输出被输入到CSA240F。CSA 240E的和输出与CSA 240F的和以及进位输出被输入到CSA 240G。CSA 240G的和以及进位输出被输入到全加器242,以产生要被存储在累加器244中的和。
CSA接收N位输入并产生和以及进位输出项而不会将进位项逐位地行波传递(ripple)。即,和输出位是该位位置上的输入位的和,而与其它位位置上的位无关。每个和位可以是该位位置上输入位的XOR。进位输出位是来自给定位位置求和的进位,与其它位位置上的进位无关。进位项在算术上被视为下一个最高有效位位置的进位输入。因此,最低有效位位置上的进位位为零,并且N位CSA在逻辑上有N+1位进位位。
如箭头246所示,在每个点处,来自CSA的进位项输出被作为输入提供给另一CSA或全加器242,最高有效进位位被“绕回(wraparound)”到进位项的最低有效位。即,进位项的最高有效位被从最高有效位位置上删除并被插入在最低有效位位置,替换总是零的最低有效位。按本方式,每个CSA和全加器242的输入总是16位,并且所有的进位位都出现在输入上。对于图17中所示的16位CSA,进位项输出在逻辑上可以是具有最低有效位0的17位值。进位项输出是下一个CSA(或全加器242)的输入,如下所示:
In[15:0]=Carry[15:1]‖Carry[16](并且Carry[0]=0被丢弃)
最高有效进位位到最低有效进位位的绕回可以通过一个CSA的进位项输出与下一个CSA的输入之间的布线路径来完成。
在一些实施方案中,如图17中所示的校验和生成器88可以一遍(one pass)生成16位校验和,将校验和存储在累加器244中。在本实施方案中,因为在每个128位输入累加在校验和中时,进位已被绕回并被CSA 240A~240G和全加器242相加,所以累加器244也可以是16位。
对于校验和生成,要生成1的反码和(one’s complement sum)。将CSA输出的进位位从最高有效位绕回到最低有效位能够生成正确的反码和。
CSA 240A~240G可以被视为CSA级的集合。第一级CSA(CSA240A~-240C)具有被耦合到校验和生成器输入的输入和被耦合到累加器输出的输入。在其它级上,输入被耦合到前一级(或几级,例如在CSA 240G的情况中)CSA的输出。在每一级上,来自前级的进位输出的最高有效位绕回到要输入到该级的最低有效位。
本实施方案可以将16位CSA用于产生TCP、IP和ICMP中所用的16位校验和。其它实施方案可以使用更大或更小的校验和,并且在这样的实施方案中可以使用更大或更小的CSA。这样,总的来说,可以使用N位3:2CSA。同样,虽然所示实施方案中使用128位输入,但是其它实施方案可以使用任意位宽的输入。CSA的级数可以据此而改变。
虽然图17的实施方案显示为在校验和生成器88中被实现,但是类似电路可以在IOB 22中被用于部分校验和生成(如前所述)以及在接口电路16中以完成部分校验和。
现在转到图18,显示了全加器242的一种实施方案的框图。在所示实施方案中,全加器242可以包括XOR电路250和一对进位生成电路252A~252B。XOR电路250和进位生成电路252A~252B被耦合以接收全加器的输入“a”和“b”(为图17中CSA 240G的和以及进位输出,其中进位输出最高有效位被移除并插入在最低有效位处)。进位生成器252A被耦合以接收为0的进位入(Cin)输入,而进位生成器252B被耦合以接收为1的进位入输入。进位生成器252A的进位 出(Cout)输出被作为多路选择器(mux)254的选择控制,该mux 254以进位生成器252A~252B的进位输出(carry output)作为输入。mux 254的输出被耦合作为第二XOR电路256的输入,该第二XOR电路256也将XOR电路250的输出作为输入。XOR电路256的输出是全加器242的输出。
XOR电路250将输入a和b按位异或,有效地执行另一个与CSA加法器240类似的和项生成。进位生成器252A~252B对输入a和b进行真进位生成(true carry generation),并且如果进位生成器252A的进位出(carry out)是零,那么进位生成器252A的输出被mux 254选择并与来自XOR电路250的和项进行XOR,由此产生最终的反码和。另一方面,如果进位生成器252A的进位出(carry out)是1,那么进位生成器252B的输出被mux254选择。由于生成器252B的进位入(carry in)是1,进位生成器252B已经有效地将来自最高有效位的进位输出再次绕回。以另一方式来看,进位生成器252A~252B和mux 254可以基于进位是否产生而有选择地将又一个进位位绕回。
一旦上述公开被完全理解,对于本领域技术人员而言,很多变形和修改将变得明显。要注意的是所附的权利要求应被解释为涵盖所有这样的变形和修改。
Claims (21)
1.一种直接存储器存取(DMA)装置,包括:
第一接口电路,被配置为根据协议在接口上进行通信;
直接存储器存取控制器,被耦合到第一接口电路;以及
主机,被耦合到直接存储器存取控制器,其中主机包括至少一个地址空间,该地址空间被至少部分地映射到主机的存储器系统中的多个存储位置,
其中,直接存储器存取控制器被配置为在第一接口电路与地址空间之间执行直接存储器存取传输,并且直接存储器存取控制器还被配置为在所述多个存储位置中的第一批和所述多个存储位置中的第二批之间执行直接存储器存取传输,
并且,其中直接存储器存取控制器包括接收控制电路,该接收控制电路被配置为产生一个或者多个写入操作以将所接收到的直接存储器存取数据写入存储器;并且其中所述接收控制电路被配置为将所接收的数据写入在主机地址空间中由提供给所述接收控制电路的一个或者多个缓冲器指针标识的地址,并且其中所述接收控制电路被配置为产生所接收的直接存储器存取数据的直接存储器存取描述符,其中所述直接存储器存取描述符包括缓冲器指针和描述直接存储器存取传输的其他信息。
2.如权利要求1中所述的装置,其中直接存储器存取控制器包括发送控制电路、接收控制电路、和被耦合到发送控制电路和接收控制电路的环回电路,其中发送控制电路被配置为从所述第一批中读取数据并将数据提供给环回电路;所述环回电路被配置为将数据提供给接收控制电路;所述接收控制电路被配置为将数据写入到所述第二批。
3.如权利要求2中所述的装置,其中接收控制电路还被配置为将数据从第一接口电路中写入到地址空间;并且其中所述直接存储器存取控制器还包括被配置为在环回电路和第一接口电路之间进行仲裁以将数据提供给接收控制电路的仲裁器。
4.如权利要求1到3中任一项所述的装置,其中第一接口电路包括介质访问控制器(MAC)。
5.如权利要求4中所述的装置,还包括具有第一接口电路的多个接口电路,其中所述多个接口电路被耦合到直接存储器存取控制器。
6.如权利要求1到3中任一项所述的装置,其中第一接口电路包括外围接口控制器电路。
7.如权利要求6中所述的装置,还包括具有第一接口电路的多个接口电路,其中所述多个接口电路被耦合到直接存储器存取控制器。
8.如权利要求7中所述装置,其中所述多个接口电路中的第二接口电路包括介质访问控制器(MAC)。
9.如权利要求1到3中任一项所述的装置,其中直接存储器存取控制器被配置为执行从地址空间到目标的直接存储器存取传输,
其中,根据直接存储器存取传输被分配给哪条通道,所述目标是接口电路或主机;直接存储器存取控制器被配置为对从地址空间中为直接存储器存取传输而读取的第一直接存储器存取数据至少执行第一操作,该第一操作产生结果。
10.如权利要求9中所述的装置,其中第一操作将第一直接存储器存取数据转换成第二直接存储器存取数据;直接存储器存取控制器被配置为将第二直接存储器存取数据传输到目标。
11.如权利要求9中所述的装置,其中第一操作包括加密。
12.如权利要求11中所述的装置,其中直接存储器存取控制器还被配置为对第一直接存储器存取数据应用散列函数,并且其中所述结果包括散列函数的输出。
13.如权利要求9中所述的装置,其中所述结果被存储在与第一直接存储器存取数据相对应的直接存储器存取描述符数据结构中。
14.如权利要求13中所述的装置,其中第一操作是散列函数。
15.如权利要求13中所述的装置,其中第一操作是循环冗余校验码生成。
16.如权利要求13中所述的装置,其中第一操作是校验和生成。
17.如权利要求9中所述的装置,其中直接存储器存取控制器被配置为从多个通道中读取数据并对数据进行XOR运算以产生所述结果。
18.一种用于直接存储器存取(DMA)的方法,包括以下步骤:
直接存储器存取控制器在第一接口电路和主机中的地址空间之间执行第一直接存储器存取传输,其中地址空间被至少部分地映射到主机中的多个存储位置,第一接口电路被配置为根据协议在接口上进行通信;
直接存储器存取控制器在所述多个存储位置中的第一批和所述多个存储位置中的第二批之间执行第二直接存储器存取传输;
其中直接存储器存取控制器包括接收控制电路,该接收控制电路产生一个或者多个写入操作以将所接收到的直接存储器存取数据写入存储器;并且其中所述接收控制电路为了所述第二直接存储器存取传输将所接收的数据写入在主机地址空间中由提供给所述接收控制电路的一个或者多个缓冲器指针标识的地址;以及
其中所述接收控制电路为了所述第二直接存储器存取传输产生直接存储器存取描述符,其中所述直接存储器存取描述符包括缓冲器指针和描述所述第二直接存储器存取传输的其他信息。
19.如权利要求18中所述的方法,其中第一接口电路包括介质访问控制器(MAC)。
20.如权利要求18或19中所述的方法,其中直接存储器存取控制器被耦合到包括第一接口电路的多个接口电路,所述多个接口电路被耦合到直接存储器存取控制器。
21.如权利要求20所述的方法,其中所述多个接口电路中的第二接口电路包括外围接口控制器电路。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/238,790 US7496695B2 (en) | 2005-09-29 | 2005-09-29 | Unified DMA |
US11/238,790 | 2005-09-29 | ||
PCT/US2006/038081 WO2007041301A1 (en) | 2005-09-29 | 2006-09-29 | Unified dma |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101317166A CN101317166A (zh) | 2008-12-03 |
CN101317166B true CN101317166B (zh) | 2013-04-17 |
Family
ID=37775218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800433196A Expired - Fee Related CN101317166B (zh) | 2005-09-29 | 2006-09-29 | 统一dma |
Country Status (8)
Country | Link |
---|---|
US (6) | US7496695B2 (zh) |
EP (1) | EP1943595B1 (zh) |
JP (1) | JP4815491B2 (zh) |
CN (1) | CN101317166B (zh) |
AT (1) | ATE516551T1 (zh) |
ES (1) | ES2369715T3 (zh) |
TW (1) | TWI420316B (zh) |
WO (1) | WO2007041301A1 (zh) |
Families Citing this family (140)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8438265B2 (en) * | 2004-11-04 | 2013-05-07 | International Business Machines Corporation | Method of offloading iSCSI PDU corruption-detection digest generation from a host processing unit, and related iSCSI offload engine |
US7496695B2 (en) | 2005-09-29 | 2009-02-24 | P.A. Semi, Inc. | Unified DMA |
US7620746B2 (en) * | 2005-09-29 | 2009-11-17 | Apple Inc. | Functional DMA performing operation on DMA data and writing result of operation |
US20090063629A1 (en) | 2006-03-06 | 2009-03-05 | Lg Electronics Inc. | Data transfer controlling method, content transfer controlling method, content processing information acquisition method and content transfer system |
US8429300B2 (en) | 2006-03-06 | 2013-04-23 | Lg Electronics Inc. | Data transferring method |
US20090133129A1 (en) | 2006-03-06 | 2009-05-21 | Lg Electronics Inc. | Data transferring method |
US7783799B1 (en) * | 2006-08-31 | 2010-08-24 | American Megatrends, Inc. | Remotely controllable switch and testing methods using same |
KR20080022476A (ko) | 2006-09-06 | 2008-03-11 | 엘지전자 주식회사 | 논컴플라이언트 컨텐츠 처리 방법 및 디알엠 상호 호환시스템 |
JP4747077B2 (ja) * | 2006-11-16 | 2011-08-10 | ルネサスエレクトロニクス株式会社 | 演算回路 |
CN101212822B (zh) * | 2006-12-28 | 2010-12-01 | 杭州华三通信技术有限公司 | 在以太网上进行同步时分交换的以太网交换方法与设备 |
CN101542495B (zh) * | 2007-01-05 | 2014-10-22 | Lg电子株式会社 | 用于传递资源的方法和用于提供信息的方法 |
US7620749B2 (en) * | 2007-01-10 | 2009-11-17 | International Business Machines Corporation | Descriptor prefetch mechanism for high latency and out of order DMA device |
US7603490B2 (en) * | 2007-01-10 | 2009-10-13 | International Business Machines Corporation | Barrier and interrupt mechanism for high latency and out of order DMA device |
KR101457689B1 (ko) | 2007-02-16 | 2014-11-04 | 엘지전자 주식회사 | 멀티 도메인 매니저의 운영 방법 및 도메인 시스템 |
JP2008210280A (ja) * | 2007-02-27 | 2008-09-11 | Fujitsu Ltd | 半導体装置及びdmaコントローラ |
US8069279B2 (en) | 2007-03-05 | 2011-11-29 | Apple Inc. | Data flow control within and between DMA channels |
US20080317245A1 (en) * | 2007-06-20 | 2008-12-25 | Franny Wei | Hash function implemention with ROM and CSA |
US7916728B1 (en) | 2007-09-28 | 2011-03-29 | F5 Networks, Inc. | Lockless atomic table update |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
DE102008009634A1 (de) * | 2008-02-15 | 2009-08-27 | Carl Zeiss Microimaging Gmbh | Peripherieschnittstelle und Verfahren zur Datenübermittlung, insbesondere für Laser-Scanning-Mikroskop |
TWI394049B (zh) * | 2008-02-20 | 2013-04-21 | Ralink Technology Corp | 直接記憶體存取系統及其傳送/接收封包之方法 |
US20090248910A1 (en) * | 2008-04-01 | 2009-10-01 | Apple Inc. | Central dma with arbitrary processing functions |
US8306036B1 (en) | 2008-06-20 | 2012-11-06 | F5 Networks, Inc. | Methods and systems for hierarchical resource allocation through bookmark allocation |
GB0814484D0 (en) * | 2008-08-07 | 2008-09-10 | Icera Inc | Dma engine |
US8769681B1 (en) | 2008-08-11 | 2014-07-01 | F5 Networks, Inc. | Methods and system for DMA based distributed denial of service protection |
US8447884B1 (en) | 2008-12-01 | 2013-05-21 | F5 Networks, Inc. | Methods for mapping virtual addresses to physical addresses in a network device and systems thereof |
US8880696B1 (en) | 2009-01-16 | 2014-11-04 | F5 Networks, Inc. | Methods for sharing bandwidth across a packetized bus and systems thereof |
US9152483B2 (en) | 2009-01-16 | 2015-10-06 | F5 Networks, Inc. | Network devices with multiple fully isolated and independently resettable direct memory access channels and methods thereof |
US8103809B1 (en) | 2009-01-16 | 2012-01-24 | F5 Networks, Inc. | Network devices with multiple direct memory access channels and methods thereof |
US8112491B1 (en) | 2009-01-16 | 2012-02-07 | F5 Networks, Inc. | Methods and systems for providing direct DMA |
US8880632B1 (en) * | 2009-01-16 | 2014-11-04 | F5 Networks, Inc. | Method and apparatus for performing multiple DMA channel based network quality of service |
WO2010113167A1 (en) * | 2009-03-30 | 2010-10-07 | Hewlett-Packard Development Company L.P. | Deduplication of data stored in a copy volume |
US8583839B2 (en) * | 2009-11-30 | 2013-11-12 | Lsi Corporation | Context processing for multiple active write commands in a media controller architecture |
US8638799B2 (en) * | 2009-07-10 | 2014-01-28 | Hewlett-Packard Development Company, L.P. | Establishing network quality of service for a virtual machine |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
US8447908B2 (en) | 2009-09-07 | 2013-05-21 | Bitmicro Networks, Inc. | Multilevel memory bus system for solid-state mass storage |
US8560804B2 (en) | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
WO2011040928A1 (en) * | 2009-10-02 | 2011-04-07 | Intel Corporation | Method and appratus for managing a random array of independent disks (raid) |
US8190794B2 (en) * | 2009-10-21 | 2012-05-29 | Texas Instruments Incorporated | Control function for memory based buffers |
US9313047B2 (en) | 2009-11-06 | 2016-04-12 | F5 Networks, Inc. | Handling high throughput and low latency network data packets in a traffic management device |
CN102118426B (zh) * | 2009-12-31 | 2014-09-17 | 方正宽带网络服务股份有限公司 | 网络安全支付终端及其网络安全支付方法 |
US8458377B2 (en) * | 2010-03-05 | 2013-06-04 | Lsi Corporation | DMA engine capable of concurrent data manipulation |
TWI424372B (zh) * | 2010-03-24 | 2014-01-21 | Altek Corp | Selectable image line path means |
TWI465905B (zh) * | 2010-09-22 | 2014-12-21 | Toshiba Kk | 記憶體系統、主機控制器、及直接記憶體存取之控制方法 |
US20120179847A1 (en) * | 2011-01-12 | 2012-07-12 | Standard Microsystems Corporation | Method and System for Implementing Bus Operations with Precise Timing |
US10135831B2 (en) | 2011-01-28 | 2018-11-20 | F5 Networks, Inc. | System and method for combining an access control system with a traffic management system |
US8516164B2 (en) * | 2011-05-24 | 2013-08-20 | International Business Machines Corporation | Implementing storage adapter performance optimization with enhanced hardware and software interface |
US8495259B2 (en) * | 2011-05-24 | 2013-07-23 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware chains to select performance path |
US8886881B2 (en) | 2011-05-24 | 2014-11-11 | International Business Machines Corporation | Implementing storage adapter performance optimization with parity update footprint mirroring |
US8544029B2 (en) | 2011-05-24 | 2013-09-24 | International Business Machines Corporation | Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions |
US8868828B2 (en) | 2011-05-24 | 2014-10-21 | International Business Machines Corporation | Implementing storage adapter performance optimization with cache data/directory mirroring |
US8793462B2 (en) | 2011-05-24 | 2014-07-29 | International Business Machines Corporation | Implementing storage adapter performance optimization with enhanced resource pool allocation |
US8656213B2 (en) | 2011-05-24 | 2014-02-18 | International Business Machines Corporation | Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path |
US8495258B2 (en) | 2011-05-24 | 2013-07-23 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
US9036822B1 (en) | 2012-02-15 | 2015-05-19 | F5 Networks, Inc. | Methods for managing user information and devices thereof |
US9419972B2 (en) * | 2012-03-30 | 2016-08-16 | Intel Corporation | Two dimensional direct memory access scheme for enhanced network protocol processing performance |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US10187309B1 (en) * | 2012-08-20 | 2019-01-22 | Amazon Technologies, Inc. | Congestion mitigation in networks using flow-based hashing |
US10182010B1 (en) * | 2012-08-20 | 2019-01-15 | Amazon Technologies, Inc. | Flow collision avoidance |
US20140089553A1 (en) * | 2012-09-24 | 2014-03-27 | Broadcom Corporation | Interface between a host and a peripheral device |
US10033837B1 (en) | 2012-09-29 | 2018-07-24 | F5 Networks, Inc. | System and method for utilizing a data reducing module for dictionary compression of encoded data |
US8996926B2 (en) * | 2012-10-15 | 2015-03-31 | Infineon Technologies Ag | DMA integrity checker |
US9270602B1 (en) | 2012-12-31 | 2016-02-23 | F5 Networks, Inc. | Transmit rate pacing of large network traffic bursts to reduce jitter, buffer overrun, wasted bandwidth, and retransmissions |
US8732352B1 (en) | 2013-01-25 | 2014-05-20 | Apple Inc. | Dynamic allocation of buffers for direct memory access |
US10375155B1 (en) | 2013-02-19 | 2019-08-06 | F5 Networks, Inc. | System and method for achieving hardware acceleration for asymmetric flow connections |
JP2013102556A (ja) * | 2013-03-05 | 2013-05-23 | Renesas Electronics Corp | 通信装置及び方法 |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US10120694B2 (en) | 2013-03-15 | 2018-11-06 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9916213B1 (en) | 2013-03-15 | 2018-03-13 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US9720603B1 (en) | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US9875205B1 (en) | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
US9734067B1 (en) | 2013-03-15 | 2017-08-15 | Bitmicro Networks, Inc. | Write buffering |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US9842024B1 (en) | 2013-03-15 | 2017-12-12 | Bitmicro Networks, Inc. | Flash electronic disk with RAID controller |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9971524B1 (en) | 2013-03-15 | 2018-05-15 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US8984184B2 (en) * | 2013-04-05 | 2015-03-17 | William Marsh Rice University | System and method for managing input/output data of peripheral devices |
US9256558B2 (en) * | 2013-06-27 | 2016-02-09 | Silicon Laboratories Inc. | Direct memory access descriptor-based synchronization |
US9251107B2 (en) * | 2013-06-27 | 2016-02-02 | Silicon Laboratories Inc. | Immediate direct memory access descriptor-based write operation |
US9864606B2 (en) | 2013-09-05 | 2018-01-09 | F5 Networks, Inc. | Methods for configurable hardware logic device reloading and devices thereof |
CN103500149A (zh) * | 2013-09-29 | 2014-01-08 | 华为技术有限公司 | 直接内存访问控制器和直接内存访问控制方法 |
WO2015095000A1 (en) | 2013-12-16 | 2015-06-25 | F5 Networks, Inc. | Methods for facilitating improved user authentication using persistent data and devices thereof |
US10110518B2 (en) | 2013-12-18 | 2018-10-23 | Mellanox Technologies, Ltd. | Handling transport layer operations received out of order |
KR20150095139A (ko) | 2014-02-12 | 2015-08-20 | 삼성전자주식회사 | 채널 버퍼로의 직접 접근이 가능한 직접 메모리 접근 컨트롤러 및 시스템. |
US9354818B2 (en) | 2014-02-25 | 2016-05-31 | Kabushiki Kaisha Toshiba | Memory device and data storing method |
US9811461B1 (en) | 2014-04-17 | 2017-11-07 | Bitmicro Networks, Inc. | Data storage system |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
US9952991B1 (en) | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US10015143B1 (en) | 2014-06-05 | 2018-07-03 | F5 Networks, Inc. | Methods for securing one or more license entitlement grants and devices thereof |
US9851941B2 (en) * | 2014-06-18 | 2017-12-26 | Nxp Usa, Inc. | Method and apparatus for handling incoming data frames |
US11838851B1 (en) | 2014-07-15 | 2023-12-05 | F5, Inc. | Methods for managing L7 traffic classification and devices thereof |
US10031860B2 (en) | 2014-09-24 | 2018-07-24 | Western Digital Technologies, Inc. | Memory transfer of objects in a data storage device |
US9851901B2 (en) | 2014-09-26 | 2017-12-26 | Western Digital Technologies, Inc. | Transfer of object memory references in a data storage device |
US10182013B1 (en) | 2014-12-01 | 2019-01-15 | F5 Networks, Inc. | Methods for managing progressive image delivery and devices thereof |
US9934185B2 (en) * | 2015-01-12 | 2018-04-03 | Xilinx, Inc. | Processing system network controller with interface to programmable logic |
US11895138B1 (en) | 2015-02-02 | 2024-02-06 | F5, Inc. | Methods for improving web scanner accuracy and devices thereof |
CN106295267B (zh) * | 2015-06-09 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 一种访问电子设备的物理内存中私密数据的方法和装置 |
TWI575384B (zh) * | 2015-09-04 | 2017-03-21 | 慧榮科技股份有限公司 | 通道控制裝置 |
US10185678B1 (en) * | 2015-10-30 | 2019-01-22 | Amazon Technologies, Inc. | Universal offloading engine |
US9977619B2 (en) | 2015-11-06 | 2018-05-22 | Vivante Corporation | Transfer descriptor for memory access commands |
US9959227B1 (en) * | 2015-12-16 | 2018-05-01 | Amazon Technologies, Inc. | Reducing input/output latency using a direct memory access (DMA) engine |
US10366024B2 (en) | 2016-05-09 | 2019-07-30 | International Business Machines Corporation | Synchronous input/output computer system including hardware invalidation of synchronous input/output context |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
US10972453B1 (en) | 2017-05-03 | 2021-04-06 | F5 Networks, Inc. | Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof |
US10409732B2 (en) * | 2017-05-31 | 2019-09-10 | Nxp Usa, Inc. | Sparse matrix accelerator |
US10191871B2 (en) | 2017-06-20 | 2019-01-29 | Infineon Technologies Ag | Safe double buffering using DMA safe linked lists |
CN109240954A (zh) * | 2017-07-10 | 2019-01-18 | 恩智浦美国有限公司 | 具有触发序列发生器的dma控制器 |
US10558599B2 (en) * | 2017-09-12 | 2020-02-11 | Nxp Usa, Inc. | Method and apparatus for loading a matrix into an accelerator |
JP6944117B2 (ja) * | 2018-03-08 | 2021-10-06 | 富士通株式会社 | 情報処理装置、転送制御方法および転送制御プログラム |
US11855898B1 (en) | 2018-03-14 | 2023-12-26 | F5, Inc. | Methods for traffic dependent direct memory access optimization and devices thereof |
US10592250B1 (en) * | 2018-06-21 | 2020-03-17 | Amazon Technologies, Inc. | Self-refill for instruction buffer |
US10601738B2 (en) * | 2018-06-30 | 2020-03-24 | Intel Corporation | Technologies for buffering received network packet data |
CN110825485A (zh) * | 2018-08-07 | 2020-02-21 | 华为技术有限公司 | 数据处理的方法、设备和服务器 |
US11537716B1 (en) | 2018-11-13 | 2022-12-27 | F5, Inc. | Methods for detecting changes to a firmware and devices thereof |
US10983793B2 (en) | 2019-03-29 | 2021-04-20 | Intel Corporation | Array broadcast and reduction systems and methods |
FR3094507A1 (fr) | 2019-03-29 | 2020-10-02 | Stmicroelectronics (Grenoble 2) Sas | Accès direct en mémoire |
US10642766B1 (en) * | 2019-07-15 | 2020-05-05 | Daniel Kilsdonk | Facilitating sequential data transformations via direct memory access |
CN112994722A (zh) * | 2019-12-16 | 2021-06-18 | 瑞昱半导体股份有限公司 | 通讯系统、通讯方法以及媒体存取控制电路 |
US11526618B2 (en) | 2020-01-29 | 2022-12-13 | Samsung Electronics Co., Ltd. | Methods and apparatus for offloading encryption |
US11606346B2 (en) * | 2020-06-29 | 2023-03-14 | Rockwell Automation Technologies, Inc. | Method and apparatus for managing reception of secure data packets |
CN112540730B (zh) * | 2020-12-14 | 2022-02-08 | 无锡众星微系统技术有限公司 | 可动态重构的dma阵列 |
US11829237B1 (en) | 2021-03-05 | 2023-11-28 | Apple Inc. | Error detection and recovery when streaming data |
CN113297112B (zh) * | 2021-04-15 | 2022-05-17 | 上海安路信息科技股份有限公司 | PCIe总线的数据传输方法、系统及电子设备 |
CN115408313A (zh) * | 2021-05-26 | 2022-11-29 | 意法半导体应用有限公司 | 处理系统、相关的集成电路、设备和方法 |
US11762794B2 (en) * | 2021-05-26 | 2023-09-19 | Stmicroelectronics Application Gmbh | Processing system, related integrated circuit, device and method |
US12039330B1 (en) | 2021-09-14 | 2024-07-16 | Amazon Technologies, Inc. | Programmable vector engine for efficient beam search |
US12072818B2 (en) * | 2022-04-28 | 2024-08-27 | Infineon Technologies Ag | Systems and methods for concurrent logging and event capture |
US11622004B1 (en) | 2022-05-02 | 2023-04-04 | Mellanox Technologies, Ltd. | Transaction-based reliable transport |
CN115225592B (zh) * | 2022-06-01 | 2024-01-12 | 裕太微(上海)电子有限公司 | 一种直接存储器访问数据传输方法及系统 |
US12008368B2 (en) | 2022-09-21 | 2024-06-11 | Amazon Technologies, Inc. | Programmable compute engine having transpose operations |
CN116701264B (zh) * | 2023-08-02 | 2024-02-23 | 广东匠芯创科技有限公司 | Dma控制系统的控制方法及dma控制系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038629A (en) * | 1996-10-15 | 2000-03-14 | International Business Machines Corporation | Computer system generating a processor interrupt in response to receiving an interrupt/data synchronizing signal over a data bus |
US6175883B1 (en) * | 1995-11-21 | 2001-01-16 | Quantum Corporation | System for increasing data transfer rate using sychronous DMA transfer protocol by reducing a timing delay at both sending and receiving devices |
Family Cites Families (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4548082A (en) * | 1984-08-28 | 1985-10-22 | Central Institute For The Deaf | Hearing aids, signal supplying apparatus, systems for compensating hearing deficiencies, and methods |
US4797853A (en) | 1985-11-15 | 1989-01-10 | Unisys Corporation | Direct memory access controller for improved system security, memory to memory transfers, and interrupt processing |
JPS63137351A (ja) * | 1986-11-28 | 1988-06-09 | Matsushita Electric Ind Co Ltd | 論理演算機能付dmac装置 |
US4947366A (en) | 1987-10-02 | 1990-08-07 | Advanced Micro Devices, Inc. | Input/output controller incorporating address mapped input/output windows and read ahead/write behind capabilities |
US4989251A (en) * | 1988-05-10 | 1991-01-29 | Diaphon Development Ab | Hearing aid programming interface and method |
US5075846A (en) * | 1989-09-29 | 1991-12-24 | Motorola, Inc. | Memory access serialization as an MMU page attribute |
EP0470030A3 (en) | 1990-08-02 | 1993-04-21 | International Business Machines Corporation | Fast memory power-on diagnostics using direct memory addressing |
EP0473102B1 (en) | 1990-08-29 | 1995-11-22 | Honeywell Inc. | Data communication system with checksum calculating means |
CA2069711C (en) * | 1991-09-18 | 1999-11-30 | Donald Edward Carmon | Multi-media signal processor computer system |
JPH05143520A (ja) | 1991-11-19 | 1993-06-11 | Nec Ibaraki Ltd | Dma転送方式 |
JPH05242009A (ja) | 1992-03-03 | 1993-09-21 | Japan Radio Co Ltd | 直接メモリアクセス装置 |
US5461710A (en) | 1992-03-20 | 1995-10-24 | International Business Machines Corporation | Method for providing a readily distinguishable template and means of duplication thereof in a computer system graphical user interface |
JPH06175960A (ja) | 1992-12-08 | 1994-06-24 | Fujitsu Ltd | アドレス確認方式 |
US5640399A (en) * | 1993-10-20 | 1997-06-17 | Lsi Logic Corporation | Single chip network router |
DE4340817A1 (de) * | 1993-12-01 | 1995-06-08 | Toepholm & Westermann | Schaltungsanordnung für die automatische Regelung von Hörhilfsgeräten |
US5634069A (en) * | 1994-01-28 | 1997-05-27 | Vlsi Technology, Inc. | Encoding assertion and de-assertion of interrupt requests and DMA requests in a serial bus I/O system |
US5687316A (en) | 1994-07-29 | 1997-11-11 | International Business Machines Corporation | Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data |
JP3011035B2 (ja) * | 1994-12-08 | 2000-02-21 | 株式会社日立製作所 | 計算機システム |
US5825774A (en) * | 1995-07-12 | 1998-10-20 | 3Com Corporation | Packet characterization using code vectors |
US5737638A (en) | 1995-07-14 | 1998-04-07 | International Business Machines Corporation | System for determining plurality of data transformations to be performed upon single set of data during single transfer by examining communication data structure |
JPH1040211A (ja) * | 1996-04-30 | 1998-02-13 | Texas Instr Inc <Ti> | パケット化されたデータ通信インタフェース機器内での直接メモリアクセス優先順位を割り当てるための方法ならびにdmaチャンネル回路 |
JPH09305530A (ja) | 1996-05-16 | 1997-11-28 | Brother Ind Ltd | Dmaコントローラ |
JP3638729B2 (ja) | 1996-09-06 | 2005-04-13 | 株式会社日立製作所 | データ記憶制御方法及び装置 |
JPH10187593A (ja) * | 1996-12-24 | 1998-07-21 | Toshiba Corp | データ転送制御装置及び同装置に適用するデータ転送制御方法 |
US5881248A (en) | 1997-03-06 | 1999-03-09 | Advanced Micro Devices, Inc. | System and method for optimizing system bus bandwidth in an embedded communication system |
US5978866A (en) * | 1997-03-10 | 1999-11-02 | Integrated Technology Express, Inc. | Distributed pre-fetch buffer for multiple DMA channel device |
EP0874320B1 (en) * | 1997-04-02 | 2007-02-21 | Matsushita Electric Industrial Co., Ltd. | High speed data input-output device which fetches data into internal memory and performs operations on the data before outputting the data |
JPH1145157A (ja) * | 1997-07-24 | 1999-02-16 | Internatl Business Mach Corp <Ibm> | データ転送装置、ディスク装置及びデータ転送方法 |
US5944800A (en) * | 1997-09-12 | 1999-08-31 | Infineon Technologies Corporation | Direct memory access unit having a definable plurality of transfer channels |
US6708273B1 (en) | 1997-09-16 | 2004-03-16 | Safenet, Inc. | Apparatus and method for implementing IPSEC transforms within an integrated circuit |
US6070182A (en) * | 1998-06-05 | 2000-05-30 | Intel Corporation | Data processor having integrated boolean and adder logic for accelerating storage and networking applications |
US6275877B1 (en) * | 1998-10-27 | 2001-08-14 | James Duda | Memory access controller |
US6624816B1 (en) | 1999-09-10 | 2003-09-23 | Intel Corporation | Method and apparatus for scalable image processing |
WO2001060036A1 (de) | 2000-02-09 | 2001-08-16 | Swisscom Mobile Ag | Decodiergerät, decodierverfahren und chipkarte |
US7089344B1 (en) * | 2000-06-09 | 2006-08-08 | Motorola, Inc. | Integrated processor platform supporting wireless handheld multi-media devices |
US6535208B1 (en) | 2000-09-05 | 2003-03-18 | Ati International Srl | Method and apparatus for locking a plurality of display synchronization signals |
AU2001225008A1 (en) | 2000-10-27 | 2002-05-06 | Siemens Aktiengesellschaft | Device for transmitting data flows in telecommunications terminals |
US7089335B2 (en) * | 2000-10-30 | 2006-08-08 | Microsoft Corporation | Bridging multiple network segments and exposing the multiple network segments as a single network to a higher level networking software on a bridging computing device |
US8522041B2 (en) * | 2000-12-07 | 2013-08-27 | Sony Corporation | System and method for efficiently performing a data encryption operation |
US7139848B1 (en) * | 2000-12-08 | 2006-11-21 | Xilinx, Inc. | DMA protocol extension for packet-based transfer |
US7254651B2 (en) * | 2000-12-18 | 2007-08-07 | Redback Networks Inc. | Scheduler for a direct memory access device having multiple channels |
US6874040B2 (en) | 2000-12-19 | 2005-03-29 | International Business Machines Corporation | Employing a data mover to communicate between dynamically selected zones of a central processing complex |
US6948010B2 (en) | 2000-12-20 | 2005-09-20 | Stratus Technologies Bermuda Ltd. | Method and apparatus for efficiently moving portions of a memory block |
JPWO2002060175A1 (ja) | 2001-01-25 | 2004-05-27 | ソニー株式会社 | データ転送装置 |
US20050060441A1 (en) * | 2001-03-27 | 2005-03-17 | Schmisseur Mark A. | Multi-use data access descriptor |
US6912602B2 (en) | 2001-11-20 | 2005-06-28 | Broadcom Corporation | System having two or more packet interfaces, a switch, and a shared packet DMA circuit |
JP3775318B2 (ja) | 2002-03-20 | 2006-05-17 | セイコーエプソン株式会社 | データ転送制御装置及び電子機器 |
US7269739B2 (en) | 2002-05-30 | 2007-09-11 | International Business Machines Corporation | Method and system for allowing for the secure transmission and reception of data in a processing system |
TWI226546B (en) * | 2002-06-18 | 2005-01-11 | Via Tech Inc | Method for checking address of data to be transferred in DMA mode and DMA controller |
US6807600B2 (en) | 2002-07-24 | 2004-10-19 | Intel Corporation | Method, system, and program for memory based data transfer |
JP2004118252A (ja) * | 2002-09-24 | 2004-04-15 | Renesas Technology Corp | 半導体データ処理装置 |
US7219169B2 (en) | 2002-09-30 | 2007-05-15 | Sun Microsystems, Inc. | Composite DMA disk controller for efficient hardware-assisted data transfer operations |
US20040073721A1 (en) * | 2002-10-10 | 2004-04-15 | Koninklijke Philips Electronics N.V. | DMA Controller for USB and like applications |
US7119808B2 (en) | 2003-07-15 | 2006-10-10 | Alienware Labs Corp. | Multiple parallel processor computer graphics system |
US7334059B2 (en) | 2004-03-03 | 2008-02-19 | Freescale Semiconductor, Inc. | Multiple burst protocol device controller |
JP4698982B2 (ja) | 2004-04-06 | 2011-06-08 | 株式会社日立製作所 | 暗号処理を行うストレージシステム |
US7260688B1 (en) * | 2004-04-15 | 2007-08-21 | Xilinx, Inc. | Method and apparatus for controlling access to memory circuitry |
JP4447977B2 (ja) * | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
US7955264B2 (en) * | 2004-07-07 | 2011-06-07 | General Electric Company | System and method for providing communication between ultrasound scanners |
TWM261751U (en) | 2004-07-09 | 2005-04-11 | Uniwill Comp Corp | Switching display processing architecture for information device |
US7386642B2 (en) * | 2005-01-28 | 2008-06-10 | Sony Computer Entertainment Inc. | IO direct memory access system and method |
JP4668645B2 (ja) | 2005-02-24 | 2011-04-13 | パナソニック株式会社 | Dmaコントローラ及びデータ転送制御方法 |
JP4791741B2 (ja) | 2005-03-16 | 2011-10-12 | 株式会社リコー | データ処理装置とデータ処理方法 |
JP2006293748A (ja) | 2005-04-12 | 2006-10-26 | Canon Inc | 情報処理装置 |
JP2006338533A (ja) | 2005-06-03 | 2006-12-14 | Renesas Technology Corp | Ecc回路を有するマルチレイヤバスシステム |
US7930444B2 (en) * | 2005-06-30 | 2011-04-19 | Freescale Semiconductor, Inc. | Device and method for controlling multiple DMA tasks |
US20070022225A1 (en) * | 2005-07-21 | 2007-01-25 | Mistletoe Technologies, Inc. | Memory DMA interface with checksum |
JP2007065963A (ja) | 2005-08-31 | 2007-03-15 | Renesas Technology Corp | データ転送システム |
US7620746B2 (en) | 2005-09-29 | 2009-11-17 | Apple Inc. | Functional DMA performing operation on DMA data and writing result of operation |
US7496695B2 (en) | 2005-09-29 | 2009-02-24 | P.A. Semi, Inc. | Unified DMA |
JP2007208696A (ja) | 2006-02-02 | 2007-08-16 | Seiko Epson Corp | 暗号処理回路及び印刷装置 |
FR2899354A1 (fr) | 2006-03-28 | 2007-10-05 | St Microelectronics Sa | Traitement de donnees avec transfert de donnees entre memoires. |
US8681159B2 (en) | 2006-08-04 | 2014-03-25 | Apple Inc. | Method and apparatus for switching between graphics sources |
US8069279B2 (en) | 2007-03-05 | 2011-11-29 | Apple Inc. | Data flow control within and between DMA channels |
-
2005
- 2005-09-29 US US11/238,790 patent/US7496695B2/en not_active Expired - Fee Related
-
2006
- 2006-09-29 CN CN2006800433196A patent/CN101317166B/zh not_active Expired - Fee Related
- 2006-09-29 AT AT06815807T patent/ATE516551T1/de not_active IP Right Cessation
- 2006-09-29 WO PCT/US2006/038081 patent/WO2007041301A1/en active Application Filing
- 2006-09-29 ES ES06815807T patent/ES2369715T3/es active Active
- 2006-09-29 TW TW095136303A patent/TWI420316B/zh not_active IP Right Cessation
- 2006-09-29 JP JP2008533662A patent/JP4815491B2/ja not_active Expired - Fee Related
- 2006-09-29 EP EP06815807A patent/EP1943595B1/en not_active Not-in-force
-
2007
- 2007-03-05 US US11/682,065 patent/US7680963B2/en not_active Expired - Fee Related
-
2010
- 2010-01-29 US US12/696,589 patent/US8032670B2/en not_active Expired - Fee Related
-
2011
- 2011-08-30 US US13/221,622 patent/US8209446B2/en not_active Expired - Fee Related
-
2012
- 2012-05-17 US US13/474,373 patent/US8417844B2/en not_active Expired - Fee Related
- 2012-08-03 US US13/566,485 patent/US8566485B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6175883B1 (en) * | 1995-11-21 | 2001-01-16 | Quantum Corporation | System for increasing data transfer rate using sychronous DMA transfer protocol by reducing a timing delay at both sending and receiving devices |
US6038629A (en) * | 1996-10-15 | 2000-03-14 | International Business Machines Corporation | Computer system generating a processor interrupt in response to receiving an interrupt/data synchronizing signal over a data bus |
Non-Patent Citations (3)
Title |
---|
ARM.PrimeCell Single Master DMA Controller(PL081),Revision:r1p1 Technical Reference Manual.2003,全文. * |
US 2004/0068590 A1,说明书[0020]第1-19行. |
US 6038629 A,第7栏第18-23行,图1. |
Also Published As
Publication number | Publication date |
---|---|
US20120297097A1 (en) | 2012-11-22 |
TW200731080A (en) | 2007-08-16 |
US8032670B2 (en) | 2011-10-04 |
US7496695B2 (en) | 2009-02-24 |
US20110314186A1 (en) | 2011-12-22 |
CN101317166A (zh) | 2008-12-03 |
US8566485B2 (en) | 2013-10-22 |
JP2009510630A (ja) | 2009-03-12 |
US8209446B2 (en) | 2012-06-26 |
US8417844B2 (en) | 2013-04-09 |
US7680963B2 (en) | 2010-03-16 |
US20100131680A1 (en) | 2010-05-27 |
US20120233360A1 (en) | 2012-09-13 |
TWI420316B (zh) | 2013-12-21 |
US20070162652A1 (en) | 2007-07-12 |
EP1943595B1 (en) | 2011-07-13 |
EP1943595A1 (en) | 2008-07-16 |
ES2369715T3 (es) | 2011-12-05 |
US20070073922A1 (en) | 2007-03-29 |
ATE516551T1 (de) | 2011-07-15 |
JP4815491B2 (ja) | 2011-11-16 |
WO2007041301A1 (en) | 2007-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101317166B (zh) | 统一dma | |
US8028103B2 (en) | Method and apparatus for generating secure DAM transfers | |
US8443118B2 (en) | Data flow control within and between DMA channels | |
EP1282025B1 (en) | An interface for a security coprocessor | |
CN107103472B (zh) | 一种用于区块链的算法处理模块 | |
US7240203B2 (en) | Method and apparatus for establishing secure sessions | |
JP2003512649A (ja) | 暗号アクセラレータ | |
US7707477B2 (en) | Checksum calculation | |
KR20070061329A (ko) | 다중 암호엔진을 사용하는 고성능 암호화 장치 | |
US7299350B2 (en) | Internet protocol security decryption with secondary use speculative interrupts | |
EP4095704B1 (en) | Processing system, related integrated circuit, device and method | |
WO2000030262A2 (en) | Apparatus and method for performing and controlling encryption/decryption for data to be transmitted on local area network | |
CN102184147A (zh) | 基于内存接口的数据处理加速装置及方法 | |
CN117992378A (zh) | 使用dpa的可编程的用户定义的外围总线设备实现 | |
Phan | Byrne et al.(45) Date of Patent: Jul. 16, 2013 | |
IE20000841A1 (en) | A cryptographic accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: APPLE Free format text: FORMER OWNER: P.A.SEMI CO.,LTD. Effective date: 20090626 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20090626 Address after: American California Applicant after: Apple Computer, Inc. Address before: American California Applicant before: P. A. SEMI Inc. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130417 Termination date: 20190929 |