CN105122228A - 具有混合的散射-聚集功能性的直接存储器存取控制器 - Google Patents
具有混合的散射-聚集功能性的直接存储器存取控制器 Download PDFInfo
- Publication number
- CN105122228A CN105122228A CN201480020834.7A CN201480020834A CN105122228A CN 105122228 A CN105122228 A CN 105122228A CN 201480020834 A CN201480020834 A CN 201480020834A CN 105122228 A CN105122228 A CN 105122228A
- Authority
- CN
- China
- Prior art keywords
- descriptor
- list
- pointer
- dma
- jump
- 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.)
- Pending
Links
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)
Abstract
本发明涉及一种直接存储器存取DMA控制器,其存储列表中的一组DMA指令,其中所述列表中的每一条目包含识别所述条目的类型的位字段。基于所述位字段,所述DMA控制器确定每一DMA指令是否为缓冲区指针或跳跃指针。如果DMA指令被识别为缓冲区指针,那么所述DMA控制器将数据转移到由所述缓冲区指针指定的位置或从由所述缓冲区指针指定的位置转移数据。如果DMA指令被识别为跳跃指针,那么所述DMA控制器跳跃到由所述跳跃指针指定的所述列表中的位置。可高速缓存所述DMA指令列表的子集,且所述DMA控制器循序地执行所述高度缓存条目。如果在所述高速缓存中遇到跳跃指针,那么所述DMA控制器转储清除所述高速缓存且基于所述跳跃指针从主要存储器重新加载所述高速缓存。
Description
相关申请案的交叉参考
本申请案主张2013年4月17日申请的第61/812,873号美国临时申请案的权利,所述申请案的全文并入本文中。
技术领域
本发明涉及直接存储器存取控制器;特定来说,本发明涉及一种多通道散射-聚集直接存储器存取控制器。
背景技术
由计算机***使用直接存储器存取(DMA)控制器来执行存储器与硬件子***之间的数据转移,其中所述转移独立于计算机***的中央处理单元而完成。计算机***可利用多个DMA控制器且可包含例如微控制器、微处理器、嵌入式***及***设备(其自身实施DMA控制器)的子组件。DMA控制器代理对存储于存储器中的数据的直接存取,否则需要中断***处理器来执行转移。由DMA控制器提供的此能力尤其有利于其中硬件子***将自身处理所检索数据的情形,在所述情况中,***处理器仅转移数据且不处理数据。例如,需要图形卡来存取***存储器中所存储的数据。但由于图形卡将自身处理所检索数据,所以DMA允许由图形卡检索数据,同时绕过***处理器。这释放了***处理器上的周期且大体上因为处理器无需等待相对较慢I/O操作而改进了效率。
DMA控制器实施用于处置DMA启用硬件子***之间的存储器转移的逻辑。DMA控制器通常可经由多个通道而同时支持多个子***的存储器存取。为提供此能力,DMA控制器实施用于同时管理多个通道的逻辑。因此,DMA控制器可被视为经由一组界定通道而管理对***存储器的直接存取的专用处理单元。不管DMA控制器的有限责任集合如何,常规DMA控制器均效率低下。
一般来说,DMA控制器经指示以经由特定通道将特定数据集从源位置转移到目的位置。所述源位置及所述目的位置可位于微控制器的***存储器(通常为RAM)或数据存储器、***装置的嵌入式***或可由***设备存取的其它数据(例如,来自模/数转换器、端口、捕获比较单元等等的数据)内。为将数据从源位置转移到目的位置,常规DMA控制器接收相应源地址及目的地址作为转移指令的部分。将此地址信息提供到DMA控制器的一种方式呈由DMA控制器支持的“描述符”的形式,其中每一描述符为引导DMA控制器的指令。在常规***中,每一描述符引导DMA控制器在***存储器中的指定位置与数据存储器之间转移连续数据块。为识别待转移的存储器块,常规描述符也可指定块的大小作为数据转移指令的部分。由常规DMA控制器使用源地址及块大小来识别待从***存储器转移的连续数据块。
将组织成列表的描述符提供到DMA控制器,其中所述列表中的每一条目为引导所述DMA控制器的动作的描述符。可由DMA控制器严格循序地执行描述符列表,或如果列表为链表,那么可按照任何顺序执行描述符列表,其中每一条目具有将列表中的另一条目指定为待执行的下一描述符的额外专用指针。一般使用描述符的循序执行列表而非使用描述符的链表来更有效地转移流数据(即,通常存储于存储器的连续块中的非结构化数据)。然而,包数据(即,趋向于需要处理存储于存储器中的分散位置中的每一个别数据项的结构化数据)的转移趋向于促成由链表提供的灵活性。因此,DMA控制器通常支持描述符列表的循序处理及非循序处理两者。为支持两个处理类型,常规DMA控制器利用经配置以利用所有实例中的指针的描述符的链表,其导致消耗在转移流数据时基本不需要的显著寻址开销。因此,需要一种可以有效方式处置各种类型的数据转移的更灵活的DMA控制器。
发明内容
常规DMA控制器将DMA描述符的链表用于描述符的循序处理及非循序处理两者。取决于正转移的数据的性质,循序处理无法提供足够灵活性,且常规链表可包含显著浪费开销。因此,需要提供循序列表及链表两者的优点的混合链表。由根据本发明的实施例的***及方法在很大程度上克服现有技术中的这些及其它缺点。
根据实施例,DMA控制器由经配置以通过与所述DMA控制器耦合的总线来执行数据转移的控制单元组成,其中所述控制单元进一步经配置以使用存储于存储器中的DMA指令的一或多个列表来执行多个数据转移,且其中所述控制单元将从每一列表条目读取地址信息,且其中基于每一列表条目内的至少一个位而将所述地址信息确定为缓冲区指针或跳跃指针。
根据另一实施例,所述DMA控制器进一步由称为描述符的DMA指令的高速缓存组成,其中所述控制单元将描述符的块加载到所述高速缓存中,且其中所述控制单元循序地执行存储于所述高速缓存中的描述符。根据另一实施例,当待执行的高速缓存条目被识别为跳跃描述符时,所述DMA控制器的所述控制单元转储清除所述高速缓存。根据另一实施例,每一描述符包括第一位字段及第二位字段,其中所述第一位字段存储所述地址信息,且所述第二位字段存储指示所述地址信息是否提供缓冲区指针或跳跃指针的一或多个位。根据另一实施例,所述缓冲区指针包括识别待由所述控制器转移的数据存储器的连续块的开头的起始地址。根据另一实施例,所述缓冲区指针进一步包括指定待转移的数据存储器的所述连续块的大小的缓冲区深度(BD)值。
附图说明
所属领域的技术人员可通过参考附图而更好地理解本发明,且明白本发明的众多目的、特征及优点。用于不同图式中的相同参考符号指示类似项或相同项目。
图1为说明根据本发明的实施例的包含DMA控制器的计算机***的高级计算机架构的框图。
图2为说明根据本发明的实施例的DMA控制器的操作的框图。
图3为说明实施描述符的循序列表的常规DMA控制器的操作的框图。
图4为说明实施描述符的链表的常规DMA控制器的操作的框图。
图5为说明根据本发明的实施例的实施描述符的混合链表的DMA控制器的操作的框图。
图6A及6B为说明根据本发明的实施例的混合链表可如何鉴于混合链表寻址方案而用于实施从完全循序列表、到完全链表、到完全循序列表与完全链表之间的任何混合循序列表/链表的描述符列表的框图。
具体实施方式
根据各种实施例,通过用以下两个不同类型的描述符替代常规DMA描述符而提供改进效率:支持描述符列表的循序执行的一个类型的描述符,及支持将指针用于描述符列表的非循序执行中的另一类型的描述符。此外,根据各种实施例,DMA控制器以允许描述符的循序处理与非循序处理之间的有效切换的方式利用两种类型的描述符。因此,可提供具有转移能力的更灵活及更有效集合的DMA控制器。
根据各种实施例,DMA控制器平衡提供循序处理及非循序处理两者的灵活性的需求,同时也维持存储器及总线带宽的有效使用。此外,根据一些实施例,为用户提供配置DMA控制器的个别通道的能力以基于所转移的数据的特性而更好地支持描述符的循序或非循序处理。
图1描绘计算机***(例如,微控制器或嵌入式***)内的DMA控制器的说明性实施例。计算机***100大体上包括耦合到一或多个通信总线的中央处理单元(CPU)110。在图1所说明的实施例中,图中展示***总线140。通过此***总线140,CPU110可与多个***装置180a...180n(例如,I/O端口、存储器、A/D转换器及D/A转换器、计时器、脉宽调制器、图形子***、音频处理子***等等)通信。此外,可提供存储器总线160以使CPU110与主要数据存储器120(例如,RAM存储器)耦合。DMA控制器130与***总线140耦合以提供与此总线140耦合的具有DMA能力的***装置180a...180n之间的数据转移。此外,DMA控制器130通过存储器总线170与数据存储器120耦合。DMA控制器130也可包含与CPU110的连接150,DMA控制器可通过连接150而接收来自CPU的控制信号。
图1中所描绘的***允许DMA控制器130代理数据存储器120与***装置180a...180n之间的转移而未对CPU110造成负担。此***也可用于严格执行数据存储器120内的数据转移,也未对CPU110造成负担。通常,将需要CPU110来初始化DMA控制器130。但一旦DMA控制器130已被初始化,则可在无需CPU110帮助的情况下进行到数据存储器120的转移及来自数据存储器120的转移。此释放CPU110以执行其它任务。特定来说,其使CPU110免受由代理需要存取存储器的相对缓慢I/O事务引起的延迟。
图2展示根据实施例的DMA控制器130。所述DMA控制器支持可经由控制信号(其经由连接150而从CPU110接收)而独立配置的多个通道。这些通道的一个可配置方面为:每一通道被指定为传输通道或接收通道。由DMA控制器130使用接收通道来将数据从***总线140上的装置移动到主要数据存储器总线170。相反地,传输通道用于将数据从主要数据存储器总线170移动到***总线140上的装置。DMA控制器130从CPU110接收一或多个描述符列表。每一通道经配置以执行描述符列表。
根据实施例,混合链表中的每一描述符为:缓冲区描述符,其指定待转移的***存储器中的地址;或跳跃描述符,其为指向描述符列表中的另一描述符的指针。每一描述符进一步包含用于指定所述描述符是否为缓冲区描述符或跳跃描述符的控制位字段。DMA控制器130使用所述控制位字段来解码描述符的类型,使得控制器可相应地处理所述描述符。
如果描述符被确定为缓冲区描述符,那么DMA控制器130存取由所述缓冲区描述符指定的主要数据存储器120中的位置。如果在传输通道内执行缓冲区描述符,那么DMA控制器130经由存储器总线170而检索由所述缓冲区描述符指定的地址处的位于主要数据存储器中的数据,且经由***总线140将数据转移到做出转移请求的***装置。如果在接收通道内执行所述缓冲区描述符,那么DMA控制器130经由***总线140从***装置接收数据,且经由存储器总线170将数据存储到由所述缓冲区描述符指定的地址处的主要数据存储器120中的位置。
在一些实施例中,所转移的数据驻留于外部存储器位置中,使得通过DMA控制器130的读取操作及写入操作两者为经由***总线140。在一些实施例中,转移操作将在主要数据存储器内进行,使得DMA控制器经由存储器总线170将数据从主要数据存储器中的一个位置转移到主要数据存储器中的另一位置。
在一些实施例中,DMA控制器的控制单元285存取存储于主要数据存储器120中的描述符列表。每当控制单元285完成描述符的执行且准备开始新描述符的执行时,控制单元从主要数据存储器120检索下一描述符。如果已完成的描述符为缓冲区描述符,那么由控制单元285从主要数据存储器120取得的下一描述符为所执行的列表中的主要数据存储器中的下一描述符。如果已完成的描述符为跳跃描述符,那么所述跳跃描述符的跳跃指针指定待由控制单元285取得的下一描述符在主要数据存储器120中的地址。
在一些实施例中,DMA控制器130的控制单元285接收一或多个描述符列表且将这些列表存储于描述符高速缓存290中。控制单元285开始通过处理高速缓存描述符列表中的第一描述符而执行所述列表。如上文所描述,控制单元285询问正处理的描述符以确定其是否为缓冲区描述符或跳跃描述符。在已执行描述符且控制单元285准备处理下一描述符之后,从描述符高速缓存290中的列表取得下一描述符。如果所执行的描述符为缓冲区描述符,那么控制单元285取得位于描述符高速缓存290中的下一位置处的描述符。如果所执行的描述符为跳跃描述符,那么所述跳跃描述符的跳跃指针指定待由控制单元285取得的下一描述符的主要数据存储器120中的地址。利用描述符高速缓存290的实施例与依赖存储于主要数据存储器120中的列表的实施例相比能够更有效地操作,这是因为将描述符高速缓存290维持于DMA控制器中允许执行主要数据存储器120数据转移且控制器不中断转移以便于从主要数据存储器120检索额外描述符。
如上文所描述,通常将呈列表形式的描述符提供到常规DMA控制器,其中每一列表被实施为链表。常规列表中的每一元素为指定待转移的数据存储器的连续块的描述符。除指定待转移的数据的地址之外,使用链表实施方案也需要每一描述符包含指向待执行的下一描述符的指针。此链表实施方案允许按照任何顺序执行描述符且允许执行描述符的重复模式。然而,使用常规链表可导致显著效率低下。
图3描绘描述符的常规列表,其中按照所述描述符呈现于存储所述列表的连续存储器中的顺序严格处理所述描述符。如图3中所说明,此循序列表中的每一描述符可由缓冲区指针(BP)305(其指定待转移的数据块的起始存储器地址)、缓冲区深度(BD)310及一或多个控制状态(CS)位315组成。缓冲区深度310用作为从缓冲区指针305的偏移量以确定待转移的整个数据块。如图所说明,常规DMA控制器将通过检索由用于第一描述符的缓冲区指针305及缓冲区深度310指定的数据块而执行循序列表中的此第一描述符。一旦已完成,所述DMA控制器将接着继续移动到循序列表中的下一描述符。此循序列表将适合于大的连续数据块的转移,例如流数据的转移情况。然而,如果无跳跃指针,那么循序列表无法利用检索模式,例如已被论证用于对非流数据提供有效数据转移的圆形或乒乓缓冲区。
图4描绘描述符的常规链表。在链表中,每一描述符包含数据转移指令及跳跃指令两者。更特定来说,常规描述符包含跳跃指针420(其指定待执行的下一描述符)、缓冲区指针(BP)410、缓冲区深度(BD)415及一或多个控制状态位430。针对链表,由DMA控制器基于由每一描述符中所指定的跳跃指针420阐述的顺序而执行所述列表中的描述符。在执行每一常规描述符时,DMA控制器存取由缓冲区指针410指定的存储器位置。一旦已转移由缓冲区指针410及缓冲区深度415指定的数据块,则DMA控制器执行常规描述符的跳跃指令部分。每一跳跃指令为跳跃指针420,其为对链表中的另一描述符的参考。以此方式,DMA控制器按照由跳跃指针指定的顺序遍历所述常规链表。归因于在描述符的非循序块之间跳跃的此能力,链表非常适合于数据的分段块的转移,例如包数据的转移情况。
不同于循序列表,链表可用于形成描述符列表内的描述符的数据结构。链表允许DMA控制器将来自存储器的非连续块的描述符拼凑在一起。使用跳跃指针来读取非连续描述符允许链表界定用于提供有效数据转移的数据结构。举例来说,由链表使用跳跃指针来界定数据转移的模式,例如所属领域中已知的乒乓缓冲区、圆形缓冲区及其它模式。此类模式用于实施有效数据转移算法。由链表提供的此能力具灵活性及强大功能两者,但其也是昂贵的。
为提供这些能力,链表需要使用跳跃指针。常规链表利用跳跃指针作为每一描述符的部分,其增加描述符的大小。描述符的大小由必须在描述符内编码的信息来确定。描述符中的缓冲区指针及跳跃指针的大小取决于正存取的存储器***的可寻址大小(通常为32个位或64个位)。在描述符中,需要额外位来界定缓冲区深度及控制状态位。编码跳跃指针所需的位的数目将取决于其中存储描述列表的主要存储器120的大小而变化。因此,当与在循序列表中使用的描述符(例如,图3中所描绘的描述符)相比较时,在每一描述符中包含跳跃指针需要增加链表描述符的大小。
此外,由跳跃指针强加的显著计算开销及存储器总线带宽给在每一描述符中使用跳跃指针的常规链表增加负担。在常规链表中,执行每一描述符需要:首先读取跳跃指针地址,定位由指针参考的描述符,且取得下一描述符。必须实施这些步骤来执行每一描述符,即使跳跃指针仅指向列表中的下一条目。因此,需要DMA控制器的额外指令来取得及执行每一链表描述符(与循序列表相比较时)。
根据实施例的混合链表展示于图5中。如同循序列表,由DMA控制器按照混合链表的描述符呈现于当前针对通道正执行的列表中的顺序执行所述描述符。描述符的循序执行继续,直到在所述列表中遇到跳跃描述符。如图5中所说明,混合链表中的每一条目由含有缓冲区指针(BP)505的缓冲区描述符或含有跳跃指针(JP)530的跳跃描述符组成。DMA控制器通过询问编码个别描述符的“类型”(例如,缓冲区或跳跃区)的所述描述符的控制状态(CS)位字段520而确定所述描述符是否为缓冲区描述符或跳跃描述符。每一混合链表描述符还含有缓冲区深度610,其结合缓冲区指针505来指定待转移的数据块。
由DMA控制器按照其中存储描述符的混合链表(例如,图5中所说明的混合链表)的存储器中的所述描述符的顺序执行所述描述符,直到在所述列表中遇到跳跃指针。如果DMA控制器130确定待执行的所述列表中的下一描述符为缓冲区描述符,那么如相对于图2所描述,DMA控制器130存取由所述缓冲区描述符的缓冲区指针605指定的存储器位置。接着,将数据写入到缓冲区指针位置或从缓冲区指针位置读取数据,其取决于通道是否为传输通道或接收通道。
一旦已完成缓冲区描述符的执行,则DMA控制器130继续执行其中存储列表的存储器中的下一描述符。此过程继续,直到列表中的所有条目已由DMA控制器130执行,或直到待执行的下一描述符被确定为跳跃描述符。如果遇到跳跃描述符,那么由DMA控制器执行的下一描述符为由所述跳跃描述符的跳跃指针530指定的存储器地址处的描述符。由于跳跃描述符无法指定待转移的数据块,所以跳跃描述符的一或多个位字段可为空值。举例来说,将表示缓冲区指针或缓冲区深度的位字段将由跳跃描述符用于其它目的或将填充有占位符空值。
图6A及6B说明用于对三种不同类型的描述符列表提供支持的混合链表的实施例的能力。左边列说明使用混合链表实施例的循序列表的实施方案。中心列说明使用混合链表实施例的链表的实施方案。右边列说明组合循序列表处理能力及链表处理能力两者的根据实施例的混合列表的实施方案。如图6A及6B中所说明,根据实施例的混合链表可用于构造循序列表及链表两者以及循序列表及链表的组合的列表,同时也提供改进的效率。
图6A及6B的中心列说明用于实施链表的根据实施例的混合链表的使用。图6A及6B也进一步说明常规链表的缺点。如上文所论述,执行链表中的常规描述符需要DMA控制器执行至少两个操作。首先,DMA控制器必须通过将数据转移到由所述描述符指定的主要数据存储器中的地址或从由所述描述符指定的主要数据存储器中的地址转移数据而执行转移指令。其次,DMA控制器必须执行跳跃指令且确定描述符列表中的一者内的待执行的下一描述符的位置。此为DMA控制器的显著开销源,这是因为仅执行跳跃指令便可构成控制器的工作负载的显著部分。当无需跳跃指令时,此开销变为尤其低效率浪费,这是因为描述符可按照其呈现于主要数据存储器中的顺序执行。在这些情况中,每一跳跃指令仅为指向列表中的下一条目的指针。
图6A及6B的左边列说明使用根据实施例的混合链表来实施的循序列表。DMA控制器按照混合链表的描述符呈现于主要数据存储器中的顺序执行所述描述符。因此,无需耗费与跳跃描述符相关的开销。此改进效率,因为当所述混合链表主要由缓冲区描述符组成时,DMA控制器的操作主要为数据转移。除了改进DMA控制器的效率之外,混合链表也允许使用与常规链表相比更小的描述符。取决于表示描述符中的跳跃指针所需的位的数目,可由循序列表实现显著节省。混合链表处理描述符的循序块的能力也允许DMA控制器实现与效率相关的其它益处。针对循序地布置于主要数据存储器中的循序列表中的描述符,硬件可经配置以读取描述符的更大连续块且接着高速缓存所述块以减少检索描述符时的延迟。此外,读取描述符的更大块即时产生总线上的更有效业务。
图6A及6B的右边列说明根据实施例的混合链表,其实施组合循序列表性质及链表性质的描述符列表。所述混合链表提供循序列表及链表两者的优点,同时提供与常规链表相比改进的效率。根据实施例,混合链表描述符可为缓冲区描述符或跳跃描述符。缓冲区描述符指定待转移的连续存储器块,而跳跃描述符引导DMA控制器跳跃到主要存储器中的特定位置以便于检索待执行的下一描述符。如上文所描述,缓冲区描述符及跳跃描述符两者包含由DMA控制器用于区分两种类型的描述符的“描述符类型”位字段。当DMA控制器开始执行描述符时,其询问所述描述符类型位字段以便于确定所述描述符是否为缓冲区描述符或跳跃描述符。
以此方式分割常规描述符允许DMA控制器实施例通过好像为循序列表的列表的部分来导航,同时仍提供在需要时利用跳跃指令的能力。如图6A及6B的右边列所说明,混合链表不包含与包含跳跃指令作为执行每一描述符的部分相关的开销。因此,取决于所需的跳跃指令的数目,DMA控制器的效率(就所述DMA控制器的操作(其为数据转移)的百分比而言)可接近于循序列表的效率。此外,如图6A及6B的右边列所说明,混合链表仍提供常规链表的所有跳跃功能性。
混合链表也提供通过操作描述符块而改进效率的能力。根据一些实施例且返回参考图2,可从存储于主要数据存储器中且高度缓存于描述符高速缓存290中的混合链表加载描述符的连续块以便于改进DMA控制器130的效率。通过每次从实施于主要数据存储器中的混合链表取得n个描述符而形成高速缓存描述符块。可基于已遇到或预期在所述混合链表中遇到的缓冲区描述符的连续块的大小而调整所述高速缓存描述符块(n个)的大小。通过DMA控制器130而高速缓存描述符块允许控制器有效地转移多个数据块而不必中断数据转移以从存储于主要存储器120中的所述混合链表检索待执行的下一描述符。
DMA控制器130循序地执行存储于描述符高速缓存290中的描述符,直到遇到跳跃描述符。在执行描述符之前,DMA控制器130询问所述描述符的控制字段以确定所述描述符是否含有缓冲区描述符或跳跃描述符。当在描述符高速缓存290中遇到跳跃描述符时,DMA控制器的控制单元285转储清除描述符高速缓存290。接着,DMA控制器从存储于主要数据存储器210中的混合链表以n个条目重新加载高速缓存,其起始于由所述跳跃描述符指定的地址处。此时,DMA控制器130重新开始执行所述高速缓存中的条目,起始于第一条目,且接着循序地进行,直到描述符高速缓存290中的所有条目已由DMA控制器130处理或遇到另一跳跃描述符。以此方式,混合链表的实施例提供循序列表及链表两者的能力及优点。混合链表可用于产生由常规循序列表及常规链表提供的数据结构的整个谱。
用户可通过个别地配置DMA控制器的每一通道(基于待由所述通道转移的数据的性质)而进一步受益于由混合链表提供的灵活性。举例来说,如果已知通道将用于主要转移流数据,那么用户可调整待针对所述通道高速缓存的描述符块的大小。由于流数据的转移趋向于由存储器的连续块的众多连续转移组成,所以将用于流数据转移的通道可经调整以因将需要相对稀少高速缓存转储清除而使用更大描述符块。然而,当正转移包数据时,此数据趋向于由使用基于指针的检索模式(例如,乒乓缓冲区及圆形缓冲区)来频繁转移的更小存储器块组成。在此情况中,通道可定制以使用更小描述符块且可甚至使用与由所利用的检索模式正使用的缓冲区的大小相一致的描述符块大小。
各种混合链表实施例允许设计尤其适合于转移流数据流的DMA控制器,所述流数据流趋向于包含大量循序转移指令。混合链表允许以常规循序列表的效率来执行循序指令的此类块。然而,混合链表通过允许待编程的DMA控制器执行由描述符数据结构界定的检索模式而仍提供常规链表的所有灵活性。此外,混合链表提供这些能力,同时改进由常规链表DMA控制器提供的效率。鉴于现代装置中需要实时数据转移,具灵活性及效率两者的解决方案的需求尤为迫切。
根据混合链表的实施例的以上描述,与常规循序列表及链表相比较,若干不同优点是显而易见的。混合链表利用与常规链表相比更小的描述符,且其提供与循序列表的效率相当的效率。不同于常规链表,混合链表可促进其通过高速缓存用于更快检索的描述符的连续块而循序地执行描述符的事实。处置块中的描述符也即时促成通过DMA控制器的总线转移的效率,与个别地处理每一描述符相反。提供这些优点,同时维持提供链表及循序列表两者的准确功能性的能力。最后,混合链表提供基于逐个通道而定制DMA控制器的操作的能力,使得通道基于正转移的数据的特性而表现得更像常规循序列表或常规链表。
Claims (21)
1.一种DMA控制器,其包括:
控制单元,其经配置以通过与所述DMA控制器耦合的总线来执行数据转移,其中所述控制单元进一步经配置以使用存储于存储器中的DMA指令的一或多个列表来执行多个数据转移,且其中所述控制单元将从每一列表条目读取地址信息,且其中基于每一列表条目内的至少一个位而将所述地址信息确定为缓冲区指针或跳跃指针。
2.根据权利要求1所述的DMA控制器,其进一步包括:
DMA指令的高速缓存,其中所述控制单元将列表条目的块加载到所述高速缓存中且其中所述控制单元循序地执行存储于所述高速缓存中的所述DMA指令。
3.根据权利要求2所述的DMA控制器,其中当待执行的所述高速缓存条目被识别为跳跃指针时,所述控制单元转储清除所述高速缓存。
4.根据权利要求1所述的DMA控制器,其中每一列表条目包括第一位字段及第二位字段,其中所述第一位字段存储所述地址信息,且所述第二位字段存储指示所述地址信息是否提供缓冲区指针或跳跃指针的一或多个位。
5.根据权利要求1所述的DMA控制器,其中所述缓冲区指针包括识别待由所述控制器转移的数据存储器的连续块的开头的起始地址。
6.根据权利要求5所述的DMA控制器,其中所述缓冲区指针进一步包括结束地址,且其中所述起始地址及所述结束地址指定待转移的数据存储器的所述连续块。
7.根据权利要求5所述的DMA控制器,其中所述缓冲区指针进一步包括指定待转移的数据存储器的所述连续块的大小的缓冲区深度值。
8.一种用于由DMA控制器转移数据的方法,所述方法包括:
将列表中的一组DMA指令存储于存储器中,其中所述列表中的每一条目包括识别所述条目的类型的至少一个位;
从所述列表检索DMA指令;
基于所述至少一个位而确定所述所检索的DMA指令的类型,其中所述DMA指令被确定为缓冲区描述符或跳跃描述符;
如果DMA指令被确定为缓冲区描述符,那么检索由所述缓冲区描述符指定的存储器中的地址指定的数据;
如果DMA指令被确定为跳跃描述符,那么跳跃到由所述跳跃描述符指定的所述列表中的位置处的DMA指令。
9.根据权利要求8所述的方法,其进一步包括:
将列表条目的块存储于高速缓存中;及
循序地执行存储于所述高速缓存中的所述列表条目。
10.根据权利要求9所述的方法,其进一步包括:
当待执行的下一高速缓存条目被识别为跳跃描述符时,转储清除所述高速缓存。
11.根据权利要求8所述的方法,其中每一列表条目包括第一位字段及第二位字段,其中所述第一位字段存储缓冲区指针或跳跃指针,所述第二位字段存储指示所述第一位字段是否提供缓冲区指针或跳跃指针的一或多个位。
12.根据权利要求8所述的方法,其中所述缓冲区指针包括识别待由所述控制器转移的数据存储器的连续块的开头的起始地址。
13.根据权利要求12所述的方法,其中所述缓冲区指针进一步包括结束地址,且其中所述起始地址及所述结束地址指定待转移的数据存储器的所述连续块。
14.根据权利要求12所述的方法,其中所述缓冲区指针进一步包括指定待转移的数据存储器的所述连续块的大小的缓冲区深度。
15.一种存储程序指令的非暂时性计算机可存取存储器媒体,其中所述程序指令可执行以:
将列表中的一组DMA指令存储于存储器中,其中所述列表中的每一条目包括识别所述条目的类型的至少一个位;
从所述列表检索DMA指令;
基于所述至少一个位而确定所述所检索的DMA指令的类型,其中所述DMA指令被确定为缓冲区指针或跳跃指针;
如果DMA指令被确定为缓冲区指针,那么检索由所述缓冲区指针指定的存储器中的地址指定的数据;
如果DMA指令被确定为跳跃指针,那么跳跃到由所述跳跃指针指定的所述列表中的位置处的DMA指令。
16.根据权利要求8所述的存储器媒体,其中所述程序指令进一步可执行以:
将列表条目的块存储于高速缓存中;及
循序地执行存储于所述高速缓存中的所述列表条目。
17.根据权利要求16所述的存储器媒体,其中所述程序指令进一步可执行以:
当待执行的所述高速缓存条目被识别为跳跃指针时,转储清除所述高速缓存。
18.根据权利要求15所述的存储器媒体,其中每一列表条目包括第一位字段及第二位字段,其中所述第一位字段存储缓冲区指针或跳跃指针,所述第二位字段存储指示所述第一位字段是否提供缓冲区指针或跳跃指针的一或多个位。
19.根据权利要求15所述的存储器媒体,其中所述缓冲区指针包括识别待由所述控制器转移的数据存储器的连续块的开头的起始地址。
20.根据权利要求19所述的存储器媒体,其中所述缓冲区指针进一步包括结束地址,且其中所述起始地址及所述结束地址指定待转移的数据存储器的所述连续块。
21.根据权利要求19所述的存储器媒体,其中所述缓冲区指针进一步包括指定待转移的数据存储器的所述连续块的大小的缓冲区深度。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361812873P | 2013-04-17 | 2013-04-17 | |
US61/812,873 | 2013-04-17 | ||
US14/254,256 | 2014-04-16 | ||
US14/254,256 US20140317333A1 (en) | 2013-04-17 | 2014-04-16 | Direct Memory Access Controller with Hybrid Scatter-Gather Functionality |
PCT/US2014/034445 WO2014172516A1 (en) | 2013-04-17 | 2014-04-17 | Direct memory access controller with hybrid scatter-gather functionality |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105122228A true CN105122228A (zh) | 2015-12-02 |
Family
ID=51729921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480020834.7A Pending CN105122228A (zh) | 2013-04-17 | 2014-04-17 | 具有混合的散射-聚集功能性的直接存储器存取控制器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20140317333A1 (zh) |
JP (1) | JP2016520905A (zh) |
CN (1) | CN105122228A (zh) |
TW (1) | TW201510730A (zh) |
WO (1) | WO2014172516A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334464A (zh) * | 2017-01-18 | 2018-07-27 | 恩智浦美国有限公司 | 具有支持三个dma模式的命令队列结构的多信道dma*** |
CN109522254A (zh) * | 2017-10-30 | 2019-03-26 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
CN111831595A (zh) * | 2020-06-30 | 2020-10-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种dma传输方法及相关装置 |
CN116578391A (zh) * | 2023-07-08 | 2023-08-11 | 北京云豹创芯智能科技有限公司 | 描述符表读取方法及模块、后端设备、介质、设备、芯片 |
US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2520729A (en) | 2013-11-29 | 2015-06-03 | Ibm | Data processing apparatus and method |
US10027602B2 (en) * | 2014-07-29 | 2018-07-17 | Oracle International Corporation | Packet queue depth sorting scheme for switch fabric |
US9531641B2 (en) * | 2014-07-29 | 2016-12-27 | Oracle International Corporation | Virtual output queue linked list management scheme for switch fabric |
US10169271B1 (en) * | 2014-10-28 | 2019-01-01 | Xilinx, Inc. | Direct memory access descriptor |
US10048878B2 (en) | 2015-06-08 | 2018-08-14 | Samsung Electronics Co., Ltd. | Nonvolatile memory module and storage system having the same |
US9910797B2 (en) * | 2015-10-05 | 2018-03-06 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Space efficient formats for scatter gather lists |
US9910798B2 (en) | 2015-10-05 | 2018-03-06 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Storage controller cache memory operations that forego region locking |
US10592250B1 (en) * | 2018-06-21 | 2020-03-17 | Amazon Technologies, Inc. | Self-refill for instruction buffer |
US11023400B1 (en) | 2020-01-20 | 2021-06-01 | International Business Machines Corporation | High performance DMA transfers in host bus adapters |
CN115080464B (zh) * | 2022-06-24 | 2023-07-07 | 海光信息技术股份有限公司 | 数据处理方法和数据处理装置 |
US12008368B2 (en) | 2022-09-21 | 2024-06-11 | Amazon Technologies, Inc. | Programmable compute engine having transpose operations |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0530A (ja) | 1991-01-22 | 1993-01-08 | Sanden Corp | 農業用空調システム |
US5644784A (en) * | 1995-03-03 | 1997-07-01 | Intel Corporation | Linear list based DMA control structure |
US6202107B1 (en) * | 1998-11-19 | 2001-03-13 | Sun Microsystems, Inc. | Host controller interface descriptor fetching unit |
US6842457B1 (en) * | 1999-05-21 | 2005-01-11 | Broadcom Corporation | Flexible DMA descriptor support |
US6782465B1 (en) * | 1999-10-20 | 2004-08-24 | Infineon Technologies North America Corporation | Linked list DMA descriptor architecture |
US20050060441A1 (en) * | 2001-03-27 | 2005-03-17 | Schmisseur Mark A. | Multi-use data access descriptor |
US7043518B2 (en) * | 2003-07-31 | 2006-05-09 | Cradle Technologies, Inc. | Method and system for performing parallel integer multiply accumulate operations on packed data |
US7325122B2 (en) * | 2004-02-20 | 2008-01-29 | International Business Machines Corporation | Facilitating inter-DSP data communications |
US7415549B2 (en) * | 2005-09-27 | 2008-08-19 | Intel Corporation | DMA completion processing mechanism |
TWI368136B (en) * | 2008-04-21 | 2012-07-11 | Ralink Technology Corp | Memory allocation and access method and device using the same |
-
2014
- 2014-04-16 US US14/254,256 patent/US20140317333A1/en not_active Abandoned
- 2014-04-17 JP JP2016509091A patent/JP2016520905A/ja active Pending
- 2014-04-17 WO PCT/US2014/034445 patent/WO2014172516A1/en active Application Filing
- 2014-04-17 TW TW103114073A patent/TW201510730A/zh unknown
- 2014-04-17 CN CN201480020834.7A patent/CN105122228A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334464A (zh) * | 2017-01-18 | 2018-07-27 | 恩智浦美国有限公司 | 具有支持三个dma模式的命令队列结构的多信道dma*** |
CN109522254A (zh) * | 2017-10-30 | 2019-03-26 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
CN109522254B (zh) * | 2017-10-30 | 2022-04-12 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
US11922132B2 (en) | 2017-10-30 | 2024-03-05 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
US11996105B2 (en) | 2018-09-13 | 2024-05-28 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
CN111831595A (zh) * | 2020-06-30 | 2020-10-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种dma传输方法及相关装置 |
CN116578391A (zh) * | 2023-07-08 | 2023-08-11 | 北京云豹创芯智能科技有限公司 | 描述符表读取方法及模块、后端设备、介质、设备、芯片 |
CN116578391B (zh) * | 2023-07-08 | 2023-09-26 | 北京云豹创芯智能科技有限公司 | 描述符表读取方法及模块、后端设备、介质、设备、芯片 |
Also Published As
Publication number | Publication date |
---|---|
US20140317333A1 (en) | 2014-10-23 |
WO2014172516A1 (en) | 2014-10-23 |
JP2016520905A (ja) | 2016-07-14 |
TW201510730A (zh) | 2015-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105122228A (zh) | 具有混合的散射-聚集功能性的直接存储器存取控制器 | |
CN107077423B (zh) | 用于请求分页的高效解压缩局部性*** | |
WO2010065331A1 (en) | Systems and methods for managing endian mode of a device | |
JP5309703B2 (ja) | 共有メモリの制御回路、制御方法及び制御プログラム | |
EP3077911B1 (en) | Methods and systems for autonomous memory | |
CN110309088A (zh) | Zynq fpga芯片及其数据处理方法、存储介质 | |
TWI743627B (zh) | 存取張量資料的方法和裝置 | |
CN105988875B (zh) | 一种运行进程的方法及装置 | |
KR20170141205A (ko) | Dsp 엔진 및 향상된 컨텍스트 스위치 기능부를 구비한 중앙 처리 유닛 | |
CN103593226A (zh) | 一种提高虚拟机磁盘io性能的方法 | |
US9105208B2 (en) | Method and apparatus for graphic processing using multi-threading | |
CN101432691B (zh) | 用于控制处理器中的时序的方法和*** | |
EP2689325B1 (en) | Processor system with predicate register, computer system, method for managing predicates and computer program product | |
CN103970512A (zh) | 多核处理器及其并行重放方法 | |
US9600420B2 (en) | Reducing decompression time without impacting compression ratio | |
CN105373496A (zh) | 微型计算机 | |
CN116841739B (zh) | 用于异构计算平台的数据包重用*** | |
CN104156316A (zh) | 一种Hadoop集群批处理作业的方法及*** | |
US8762602B2 (en) | Variable-length code (VLC) bitstream parsing in a multi-core processor with buffer overlap regions | |
CN111209231B (zh) | 数据处理方法、装置及相关产品 | |
CN112506813A (zh) | 一种内存管理方法和*** | |
CN108268280A (zh) | 半导体装置的处理器及其操作方法 | |
CN105573831A (zh) | 数据转移方法和装置 | |
CN102571564A (zh) | 静态介质接入控制地址的老化方法、装置及设备 | |
CN113168399B (zh) | 可执行存储器单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151202 |