CN114051611A - 用于非连续存储器的dma分散和聚集操作 - Google Patents

用于非连续存储器的dma分散和聚集操作 Download PDF

Info

Publication number
CN114051611A
CN114051611A CN202080044532.9A CN202080044532A CN114051611A CN 114051611 A CN114051611 A CN 114051611A CN 202080044532 A CN202080044532 A CN 202080044532A CN 114051611 A CN114051611 A CN 114051611A
Authority
CN
China
Prior art keywords
dma transfer
dma
memory
register
memory elements
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
Application number
CN202080044532.9A
Other languages
English (en)
Inventor
L·伯桑
M·帕特尔
J·特里斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of CN114051611A publication Critical patent/CN114051611A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Abstract

直接存储器访问(DMA)控制器包括被配置为加载DMA传输描述符的电路,该DMA传输描述符被配置为限定n个存储器元件的连续块内的哪些存储器元件将被包括在给定DMA传输中。该电路还被配置为基于DMA传输描述符来确定n个存储器元件的连续块内的每个存储器元件是否将被包括在给定DMA传输中,包括确定n个存储器元件的连续块内的存储器元件的两个或更多个非连续子块将被传输。该电路还被配置为基于确定n个存储器元件的连续块内的每个存储器元件是否将被包括在给定DMA传输中来执行被确定为包括在给定DMA传输内的存储器元件的DMA传输。

Description

用于非连续存储器的DMA分散和聚集操作
优先权
本专利申请要求2019年6月21日提交的美国临时专利申请号62/864,719的优先权,该专利申请的内容据此全文并入本文。
技术领域
本公开涉及存储器管理,并且更具体地涉及用于非连续存储器的直接存储器访问(DMA)分散和聚集操作。
背景技术
DMA是计算系统的特征,其允许某些硬件子系统以独立于中央处理单元(CPU)的方式访问主系统存储器(随机存取存储器)。在不使用DMA的情况下,当使用CPU来接收和写入数据或读取和输出数据时,CPU通常在读取或写入操作的整个持续时间内被完全占用,因此不可用于执行其它工作。在使用DMA的情况下,CPU首先通过将传输卸载到DMA控制器(DMAC)来发起传输,然后CPU在传输进行时执行其他操作,并且CPU最终在操作完成时从DMA控制器接收中断。在CPU无法跟上数据传输速率的任何时间,或者当CPU需要在等待相对较慢的I/O数据传输的同时执行工作时,该特征是有用的。许多硬件系统使用DMA,包括磁盘驱动控制器、图形卡、网卡和声卡。DMA还用于多核处理器中的芯片内数据传输。具有DMA通道的计算机可以使用比不具有DMA通道的计算机少得多的CPU开销来向设备以及从设备传输数据。类似地,多核处理器中的处理元件可在不占用其处理器时间的情况下向其本地存储器以及从其本地存储器传输数据,从而允许并行进行计算和数据传输。
DMA还可用于存储器内数据的“存储器到存储器”复制或移动。DMA将昂贵的存储器操作(诸如大型复制或分散-聚集操作)从CPU卸载至专用DMA引擎。具体实施示例是购自加利福尼亚州圣克拉拉的英特尔公司(Intel Corporation,Santa Clara,California)的I/O加速技术。DMA另外在片上网络和内存计算架构中受到关注。
DMA被开发以一次传输存储器的连续块。当DMA将用于传输大块存储器的仅部分时,DMA传输可分解成按顺序执行的单独的DMA传输。本公开的实施方案的发明人已经发现,这可能需要针对待传输的大块存储器的每个不同部分进行大量的描述。此外,这些描述本身可为显著较大的。这些描述可存储在系统存储器诸如静态随机存取存储器(SRAM)或动态存取存储器(DRAM)中。除了其他元素之外,这些描述可包括待传输的连续存储器的目标地址和传输计数。因此,对于要在传输中读取的存储器的每个不同的连续块,可能需要包括所有这些字段的描述。在系统存储器中访问针对每个连续块的此类描述可能是低效的,并且为了完成传输要读取的单独连续块的数量越多,这可能越低效。必须在系统存储器中访问每个描述符,并且可以读取多个此类描述符以传输相对少量的存储器。对系统存储器的访问可导致第二传输开始之前的延迟,从而减少可在给定时间量内传输的最大数据量。此外,每个描述可包括多个数据结构,并且从系统存储器读取的每个数据结构可进一步引起延迟。
例如,在32个寄存器的存储器组中,DMA传输可被配置为读取寄存器0、1、3、5、6、7、10、12、13、15、16、17、18、19、21、23、25、27和31的内容。这可能需要十一个不同的描述符,每个描述符用于寄存器{0,1}、{3}、{5,6,7}、{10}、{12,13}、{15,16,17,18,19}、{21}、{23}、{25}、{27}和{31}。这导致描述符的十一次访问,并且假设每描述符四个数据结构描述传输的各个方面,系统存储器的总共四十四次访问以读取每个描述符以在32个寄存器的存储器组上执行DMA传输。本公开的实施方案的发明人已经发现了解决一个或多个这些问题的DMA配置的装置、系统和方法。
发明内容
本公开的实施方案包括DMA控制器,该DMA控制器包括被配置为加载DMA传输描述符的电路,该DMA传输描述符被配置为限定n个存储器元件的连续块内的哪些存储器元件将被包括在给定DMA传输中。该电路还被配置为基于DMA传输描述符来确定n个存储器元件的连续块内的每个存储器元件是否将被包括在给定DMA传输中,包括确定n个存储器元件的连续块内的存储器元件的两个或更多个非连续子块将被传输。该电路还被配置为基于确定n个存储器元件的连续块内的每个存储器元件是否将被包括在给定DMA传输中来执行被确定为包括在给定DMA传输内的存储器元件的DMA传输。
本公开的实施方案包括一种用于DMA控制的方法,包括加载DMA传输描述符,该DMA传输描述符限定n个存储器元件的连续块内的哪些存储器元件将被包括在给定DMA传输中。该方法包括基于DMA传输描述符来确定n个存储器元件的连续块内的每个存储器元件是否将被包括在给定DMA传输中,包括确定n个存储器元件的连续块内的存储器元件的两个或更多个非连续子块将被传输。该方法包括基于确定n个存储器元件的连续块内的每个存储器元件是否将被包括在给定DMA传输中来执行被确定为包括在给定DMA传输内的存储器元件的DMA传输。
附图说明
图1是根据本公开的实施方案的用于DMA辅助存储器访问的系统的图示。
图2是根据本公开的实施方案的用于不同寄存器组的存储器映射的图示。
图3是根据本公开的实施方案的DMA传输描述符的更详细图示。
图4是根据本公开的实施方案的应用于寄存器组的存储器映射的DMA传输描述符的图示。
图5是根据本公开的实施方案的应用于寄存器组的存储器映射的其他DMA传输描述符的图示。
图6是根据本公开的实施方案的应用于存储器映射以写入到存储器的非连续块的DMA传输描述符的图示。
图7是根据本公开的实施方案的用于DMA传输的方法的图示。
具体实施方式
本公开的实施方案可以包括DMA控制器。DMA控制器可在任何合适的电子设备或系统内实现,诸如计算机、膝上型电脑或微控制器。DMA控制器可包括由模拟电路、数字电路、由处理器执行的指令或它们的任何合适的组合来实现的电路。电路可被配置为加载第一DMA传输描述符。DMA传输描述符可以存储在存储器中。DMA传输描述符可特定于特定的DMA控制器。也就是说,为了执行给定DMA传输,电路可加载特定的一组DMA传输描述符。DMA传输描述符能够以任何合适的方式实现,诸如在寄存器、数据结构或存储器中的其他位置中实现。用于给定传输的一组给定描述符中的DMA传输描述符可限定哪些存储器元件将被包括在DMA传输中。具体地,第一DMA传输描述符可被配置为限定n个存储器元件的第一连续块内的哪些存储器元件将被包括在给定DMA传输中。同一组的其他DMA传输描述符可被配置为限定要包括在给定DMA传输中的存储器元件的其他连续块的存储器元件。该电路可被进一步配置为基于第一DMA传输描述符来确定n个存储器元件的第一连续块内的每个存储器元件是否将被包括在给定DMA传输中,包括确定n个存储器元件的第一连续块内的存储器元件的多个非连续子块将被传输。该电路可被进一步配置为基于确定n个存储器元件的第一连续块内的每个存储器元件是否将被包括在给定DMA传输中来执行被确定为包括在给定DMA传输内的存储器元件的DMA传输。存储器元件可以是例如寄存器组内的寄存器。
结合上述实施方案中的任一个实施方案,DMA传输描述符可以包括给定DMA传输的一部分的源地址。DMA传输描述符可以包括给定DMA传输的一部分的目标地址。DMA传输描述符可以包括源索引寄存器。DMA传输描述符可以包括目标索引寄存器。DMA传输描述符可以包括用于相同给定DMA传输的下一个DMA传输描述符的地址。索引寄存器可限定要从给定DMA传输读取或写入的存储器元件的连续块的部分。索引寄存器可为n个位长。n个位内的指定位或数据可指定是否要使用附加的DMA传输描述符。n个位内的其他位或数据可用于识别从源地址或目标地址开始的给定存储器元件是否将被包括在传输中。单独或相同的DMA传输描述符可以用于限定GMA传输的相应读取和写入。源地址和目标地址可能总是包括在DMA传输内,并且在索引寄存器中不具有代表性数据或位。
结合上述实施方案中的任一个实施方案,电路可被进一步配置为确定附加存储器元件将被包括在给定DMA传输中。电路可被进一步配置为加载第二DMA传输描述符。第二DMA传输描述符可以被包括在用于给定DMA传输的传输描述符集合中。第二DMA传输描述符可以被配置为限定n个存储器元件的第二连续块内的哪些存储器元件将被包括在给定DMA传输中。该电路可被进一步配置为基于第二DMA传输描述符来确定n个存储器元件的第二连续块内的每个存储器元件是否将被包括在给定DMA传输中,包括确定n个存储器元件的第二连续块内的存储器元件的多个非连续子块将被传输。该电路可被进一步配置为基于确定n个存储器元件的第二连续块内的每个存储器元件是否将被包括在给定DMA传输中来执行被确定为包括在给定DMA传输内的存储器元件的DMA传输。
结合上述实施方案中的任一个实施方案,电路可被进一步配置为根据被包括在第一DMA传输描述符中的信息确定附加存储器元件将被包括在给定DMA传输中。信息可包括索引的指定位置中的位。
结合上述实施方案中的任一个实施方案,电路可被进一步配置为根据被包括在第一DMA传输描述符中的信息确定第二DMA传输描述符的地址。这可以在第一DMA传输描述符中限定,并且可以被指示由指定位置中的位使用。
结合上述实施方案中的任一个实施方案,待被包括在给定DMA传输中的n个存储器元件的第一连续块和第二连续块可在同一外围设备内。结合上述实施方案中的任一个实施方案,待被包括在给定DMA传输中的n个存储器元件的第一连续块和第二连续块可在不同外围设备内。
结合上述实施方案中的任一个实施方案,第一DMA传输描述符可以被配置为限定n个存储器元件的第一连续块内待传输的所有多个非连续子块。
结合上述实施方案中的任一个实施方案,第一DMA传输描述符可以被进一步配置为限定n个存储器元件的第一连续块内的存储器元件的多个非连续子块。
结合上述实施方案中的任一个实施方案,第一DMA传输描述符可以被进一步配置为通过n个存储器元件的第一连续块的基地址来限定待被包括在给定DMA传输中的n个存储器元件的第一连续块内的第一存储器元件。
结合上述实施方案中的任一个实施方案,第一DMA传输描述符可以被进一步配置为通过多个指示符限定待被待包括在给定DMA传输中的n个存储器元件的第一连续块内的一个或多个第二存储器元件。
结合上述实施方案中的任一个实施方案,多个指示器可包括一系列位,每个位被配置为指示相关联的存储器元件是否将被包括在给定DMA传输中。
结合上述实施方案中的任一个实施方案,一系列位可以包括n个位。
结合上述实施方案中的任一个实施方案,n个位中的一个位可被配置为指示附加存储器元件将被包括在给定DMA传输中。
结合上述实施方案中的任一个实施方案,待被包括在给定DMA传输中的n个存储器元件的第一连续块可位于寄存器组内,并且待被包括在给定DMA传输中的n个存储器元件的第一连续块具有与寄存器组不同的基地址。
本公开的实施方案可包括由上述实施方案的DMA控制器中的任一个DMA控制器执行的方法。
本公开的实施方案可包括制品。该制品可包括非暂态机器可读介质。介质。介质可包括指令,该指令在由处理器读取和执行时可执行上述DMA控制器的实施方案中的任一个实施方案的电路的配置。
图1是根据本公开的实施方案的用于DMA辅助存储器访问的系统100的图示。系统100可被配置为执行DMA辅助外围设备配置。此外,系统100可被配置为对存储器或外围设备执行故障检测。系统100可在任何合适的环境内实现,诸如微控制器、计算机、膝上型电脑、智能电话、服务器、平板电脑、存储器阵列、存储阵列、存储器控制器或任何其他电子设备。
系统100可以包括DMA控制器102。DMA控制器102可通过模拟电路、数字电路、用于由处理器(未示出)执行的指令或它们的任何组合来实现为DMA控制器电路。DMA控制器102可被配置为代表系统100的任何合适的部分以及向或从系统100的任何合适的部分执行DMA操作。DMA控制器102可被配置为执行内容到或从系统100内的任何合适的存储器的基于DMA的传输。
系统100可以包括处理器128。DMA控制器102可被配置为根据来自处理器128的指令执行内容的DMA传输。处理器128可被配置为向DMA控制器102发出DMA命令,并且在DMA传输已被卸载到DMA控制器102以用于完成该传输时并行地执行其他任务。在完成DMA传输时,DMA控制器102可向处理器128发出DMA传输完成的中断或其他信号,无论是完成还是因错误而停止。
系统100可包括任何合适数量和种类的外围设备。例如,系统100可包括外围设备A104、外围设备B 106或外围设备D 126。外围设备104、106、126可实现例如用于通用输入/输出(GPIO)的控制器、I2C通信、通用异步接收器/发射器(UART)、串行协议接口(SPI)通信,定时器、计数器、事件计数器、时钟、通用串行总线(USB)通信、锁相环(PLL)操作、看门狗定时器、模数转换、数模转换、模拟比较器、串行四路I/O(SQI)、I2S通信、以太网(IEEE 802.3)、图形或图形处理单元(GPU)、加密或编码引擎、随机数发生器、可编程循环冗余校验、控制器局域网(CAN)、并行主端口、外部总线接口、脉冲宽度调制、外部中断、数字控制振荡器或互补波形发生器。尽管被称为“外围设备”,但这些外围设备仍可在与处理器128相同的管芯或芯片上实现。
系统100可包括系统存储器110。系统存储器110能够以任何合适的方式实现,诸如通过静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。系统100可包括DMA总线108,该DMA总线被配置为通信地连接用于DMA传输和操作的任何合适的元件,诸如DMA控制器102、外围设备104、106和系统存储器110。在一些具体实施(未示出)中,可与处理器128共用DMA总线108。在此类具体实施中,如果DMA控制器102和处理器128两者同时对DMA总线108进行控制,则可执行仲裁以确定哪个将首先使用DMA总线108。
DMA传输可由DMA控制器102在连接到DMA总线108的系统100的任何合适的元件之间执行,诸如在外围设备A 104、外围设备B 106和系统存储器110之间或在此类元件本身内执行。待读取、写入或以其他方式传输的存储器内容能够以任何合适的方式存储在诸如DMA存储器、寄存器组、高速缓存或缓冲器中。对于本公开的示例,待由DMA控制器102读取、写入或以其他方式传输的内容可存储在寄存器组126的实例中。寄存器组126的任何合适数量和种类的实例可存储在系统100中,诸如存储在其中的存储器118中的外围设备A 104中、存储在其中的存储器122中的外围设备B106中或存储在系统存储器110中。例如,外围设备A 104可包括寄存器组0 120和寄存器组1 121,外围设备B 106可包括寄存器组2 124,并且系统存储器110可包括寄存器组3 132。
寄存器组126的每个实例可具有任何合适的尺寸。然而,待由DMA控制器102访问的针对给定传输的寄存器组126的每个实例可具有相同的字长,由w表示。寄存器组126的实例可由存储器的连续块来实现。存储器的连续块可由数量为x的字来实现,每个字的字长为w,从相应存储器中的第一地址开始,该第一地址被表示为BASE。字长w通常可为32位。因此,寄存器组126的实例可以是从地址BASE开始的字长为w的x个字的存储器的连续块。寄存器组126的实例的每个字可根据具有从零到(x–1)的值的索引y来标引。因此,寄存器组126的实例的每个字的地址可为(BASE+y*w)。因此,寄存器组126的实例可包括地址BASE、(BASE+w)、(BASE+2*w)、…(BASE+(x-1)*w)处的字长为w的连续字。寄存器组126的每个实例诸如寄存器组120、121、124、132可包括不同数量的字。
给定DMA传输可能需要传输来自存储器的多个不同的连续块的内容。存储器的这些多个不同的连续块可具有任何尺寸,包括单个寄存器或存储器元件。存储器的这些多个不同的连续块可以是存储器的较大的连续块内的存储器元件的非连续子块。
例如,给定DMA传输可能需要传输散布在外围设备A 104中的两个单独寄存器组(诸如寄存器组0 120和寄存器组1 121)上的内容。在另一个示例中,给定DMA传输可能仅涉及来自单个寄存器组或跨多个此类寄存器组的某些存储器源或目标。一种此类传输可以是DMA读取,以便计算循环冗余校验(CRC)操作以验证存储器内容。可执行此类验证以验证控制,该数据与先前写入的数据相同,或者用于任何其他合适的目的。
在一个实施方案中,系统100可以利用DMA传输描述符112、114、116中的每一者来识别要读取n个寄存器、字或其他存储器单元的连续块内的哪些特定内容。DMA传输描述符的单个实例可足以识别要读取的n个寄存器、字或其他存储器单元的连续块内的特定内容。此外,DMA传输描述符的单个此类实例可足以识别要读取的n个寄存器、字或其他存储器单元的连续块内的特定内容,而不管要从n个寄存器、字或其他存储器单元的块读取多少个不同的连续子块。在另一个实施方案中,如果要为相同的DMA传输读取n个寄存器、字或其他存储器单元的连续块以外的附加内容,则可使用DMA传输描述符的附加实例。除n个寄存器、字或其他存储器单元的原始连续块之外的附加存储器元件是否将被包括在给定DMA传输中可由DMA传输描述符中所包括的信息来限定。DMA传输描述符的附加实例的地址可被包括在原始或先前的DMA传输描述符中。DMA传输描述符的每个此类附加实例可继而被配置为识别作为相同的DMA传输的一部分而要读取的n个寄存器、字或其他存储器单元的附加连续块内的特定内容。DMA传输描述符的每个此类附加实例可被配置为识别相同寄存器组或不同寄存器组内的另外的内容,如用作DMA传输的第一实例的源或目标。可如执行给定存储器传输所需来使用任何合适数量的DMA传输描述符,诸如M个DMA传输描述符。DMA传输描述符112、114、116可以存储在例如系统存储器110中。
例如,可从寄存器组2 124开始执行给定DMA传输。DMA传输描述符0 112可以指定要传输寄存器组2 124中从基地址开始的n个连续寄存器的块的哪些部分。要传输的n个连续寄存器的块的这些部分可包括寄存器组2 124内的存储器元件的两个或更多个非连续子块。DMA传输描述符0 112可足以描述寄存器组2 124中从基地址开始的n个连续寄存器的块的待传输的所有部分,而不参考或使用任何其他DMA传输描述符实例。
如果寄存器组2 124的附加部分将作为相同的给定DMA传输的一部分而被读取,或者如果另一寄存器组诸如寄存器组0 120的附加部分将作为相同的给定DMA传输的一部分而被读取,则在一个实施方案中,DMA传输描述符0 112可链接到或引用另一DMA传输描述符,诸如DMA传输描述符1 114。DMA传输描述符1 114可以指定要读取特定寄存器组中从基地址开始的另外n个连续块的哪些部分。要读取的寄存器组可以是相同的寄存器组2 124或不同的寄存器组,诸如寄存器组0 120。寄存器组2 124中从基地址开始的n个连续寄存器的此类附加块的待传输的部分可包括存储器元件的两个或更多个非连续子块。DMA传输描述符1 114可足以描述n个连续寄存器的该附加块中从基地址开始的n个连续寄存器的块的待传输的所有部分,而不参考或使用任何其他DMA传输描述符实例。因此,DMA传输描述符的实例可足以描述n个连续寄存器的给定块的所有部分,但是可能需要附加的DMA传输描述符来描述n个连续寄存器的其他块的将被包括在传输中的部分。
图2是根据本公开的实施方案的用于不同寄存器组的存储器映射的图示。示出了寄存器组202、204、206。寄存器组202、204、206可各自实现图1的任何寄存器组,并且被呈现以示出图1的寄存器组的可能的具体实施。
寄存器组202可包括具有32个寄存器的寄存器组,其中每个寄存器由单独字实现。寄存器组202中的寄存器可从位于基地址0×00处的REG0连续地在连续块中枚举到位于地址0×7C处的REG31。
寄存器组204还可包括具有32个寄存器的寄存器组,其中每个寄存器由单独字实现。寄存器组204中的寄存器可从位于基地址0×3000处的REG32连续地在连续块中枚举到位于地址0×307C处的REG63。
寄存器组206可包括具有64个寄存器的寄存器组,其中每个寄存器由单独字实现。寄存器组204中的寄存器可从位于基地址0×2000处的REG100连续地在连续块中枚举到位于地址0×20FC处的REG163。
要在给定寄存器组中读取的由DMA传输描述符识别的n个寄存器的连续块或字可从寄存器组的任何合适的部分开始,而不一定从寄存器组的基地址开始。例如,可以从寄存器组202从地址0×00开始读取n个寄存器或字。本公开的实施方案的发明人已经发现,将n实现为寄存器组的最常见尺寸可能是有用的。例如,如果n是32,则可以选择性地解析寄存器组202中从地址0×00开始的32个寄存器的整个连续块,以进行DMA传输操作。然而,如果要读取的第一寄存器替代地为0×10处的REG 4,则由n限定的(进行传输的)寄存器范围可超过寄存器组202中连续可用的剩余寄存器。如果由n限定的寄存器范围超过寄存器组中连续可用的剩余寄存器,则超过剩余可用寄存器的范围的部分可被忽略。
如上所述,一旦要在给定DMA传输中读取的来自n个寄存器或字的连续块的内容已被读取,如果要针对给定DMA传输读取更多内容,则可以指定可从其选择性地读取内容的n个寄存器或字的另一个连续块。例如,如果可选择性地从寄存器组204读取从地址0×00开始的最多n个寄存器或字,则可选择性地从寄存器组204读取例如寄存器组204中的地址0×3000开始的最多另外n个寄存器或字。在另一个示例中,如果可选择性地从寄存器组206读取寄存器组206中的地址0×2000开始的最多n个寄存器或字,则可选择性地从寄存器组206读取例如寄存器组206中的地址0×2080开始的最多另外n个寄存器或字。
图3是根据本公开的实施方案的DMA传输描述符300的更详细图示。DMA传输描述符300可以完全或部分地实现DMA传输描述符112、114、116。在一个实施方案中,DMA传输描述符300可以限定来自n个寄存器或存储器元件的连续块的哪些寄存器或元件将被包括在给定DMA传输内。在另一个实施方案中,DMA传输描述符300可以限定是否针对给定DMA传输包括n个寄存器或存储器元件的任何更多此类块。在另一个实施方案中,DMA传输描述符300可以为针对给定DMA传输所包括的n个寄存器或存储器元件的附加块限定其他DMA传输描述符实例的位置。
DMA传输描述符300可以包括各种设置302,其限定例如要评估是否要传输的寄存器或字的数量(诸如n)、传输是读取还是写入、分散/聚集操作是否被启用、是否要使用特定种类的CRC操作,CRC操作的种子值、对特定CRC多项式的选择、是否要在读取和写入期间或在读取和写入完成时执行CRC校验、要进行CRC校验的数据、或要用于执行DMA传输的任何其他合适的控制设置。设置302能够以任何合适的方式实现,诸如通过寄存器或其他合适的数据结构。
DMA传输描述符300可以包括传输源地址(SADDR)304,其可以限定要作为DMA传输的一部分传输的第一寄存器的地址。地址可例如根据外围设备、存储器位置或存储器地址来限定。在一个实施方案中,响应于下文将描述的源索引寄存器308,由SADDR 304识别的地址处的寄存器可始终被包括在DMA传输中,而在存储器的连续块中限定的n的块内的所有其他寄存器可选择性地且任选地被包括在DMA传输中。SADDR 304能够以任何合适的方式实现,诸如通过寄存器或其他合适的数据结构。
DMA传输描述符300可以包括传输目标地址(DADDR)306,其可以限定要写入DMA传输的地址。地址可例如根据外围设备、存储器位置或存储器地址来限定。DADDR 306能够以任何合适的方式实现,诸如通过寄存器或其他合适的数据结构。
DMA传输描述符300可以包括一个或多个指示符,以限定由DMA传输描述符300识别的将被包括在DMA传输中的n个寄存器或存储器位置的连续块的部分。多个指示符可被实现为位的阵列或系列、十进制(反映一系列位)、十六进制(反映一系列位)或二进制值(反映一系列位)、寄存器或任何其他合适的数据结构或机制。在一个实施方案中,源索引寄存器308可用于限定存储器的连续块的将被包括作为DMA传输的源的部分。在另一个实施方案中,目标索引寄存器312可用于限定存储器的连续块的将被包括作为DMA传输的目标的部分。
源索引寄存器308可限定由DMA传输描述符300识别的将作为DMA传输的一部分被读取的n个寄存器或存储器位置的连续块的部分。在一个实施方案中,源索引寄存器308可包括n个条目。在另一个实施方案中,源索引寄存器308可包括由DMA传输描述符300识别的将在DMA传输中读取的n个寄存器或存储器位置的连续块的(n-1)个寄存器或存储器位置的条目。在此类另一个实施方案中,剩余条目即条目n可限定DMA传输是否包括由DMA传输描述符300识别的将被包括在DMA传输中的n个寄存器或存储器位置的连续块之外的附加寄存器或存储器元件。在此类另一个实施方案中,源索引寄存器308可不包括要在DMA传输中读取的第一寄存器或存储器元件的条目。要在DMA传输中读取的第一寄存器或存储器元件可被假定为或暗示为由SADDR 304限定的寄存器或存储器元件。因此,DMA传输可能总是包括由SADDR 304限定的寄存器或存储器元件。
对于DMA读取,如果源索引寄存器308在位置i处的内容被设置为1(index[i]=1),则DMA读取中要访问的下一个地址可由DMA控制器计算为(SADDR+w*(1+i))。下面图4和图5所示的示例可使用DMA读取作为示例性操作,但是图4和图5所示的这些示例也可应用于DMA写入作为示例性操作。DMA读取和DMA写入可以利用DMA传输描述符300的单独实例。源索引寄存器308的使用可取代在其他解决方案中使用的计数器的使用。
目标索引寄存器312可限定由DMA传输描述符300识别的将在DMA传输中写入的n个寄存器或存储器位置的连续块的部分。在一个实施方案中,目标索引寄存器312可包括n个条目。在另一个实施方案中,目标索引寄存器312可包括由DMA传输描述符300识别的将被包括在DMA传输中的n个寄存器或存储器位置的连续块的(n-1)个寄存器或存储器位置的条目。在此类另一个实施方案中,剩余条目即条目n可限定DMA传输是否包括由DMA传输描述符300识别的将被包括在DMA传输中的n个寄存器或存储器位置的连续块之外的附加寄存器或存储器元件。在此类另一个实施方案中,目标索引寄存器312可不包括要在DMA传输中写入的第一寄存器或存储器元件的条目。要在DMA传输中包括的第一寄存器或存储器元件可被假定为或暗示为由DADDR 306限定的寄存器或存储器元件。因此,DMA传输可能总是包括由DADDR 306限定的寄存器或存储器元件。在一个实施方案中,如果目标索引寄存器312在条目n中包括“1”,则源索引寄存器308也可在条目n中包括“1”,反之亦然。在另一个实施方案中,如果目标索引寄存器312在条目n中包括“1”但没有待读取的更多源寄存器,则源索引寄存器308可在条目n中包括“0”,并且可忽略后续描述符中的源地址。在另一个实施方案中,如果目标索引寄存器312在条目n中包括“0”但有待读取的更多源寄存器,则源索引寄存器308可在条目n中包括“1”,并且可忽略后续描述符中的目标地址。
对于DMA写入,DMA读取中要访问的下一个地址可由DMA控制器计算为(DADDR+w*(1+i))。源索引寄存器308的使用可取代在其他解决方案中使用的计数器的使用。
DMA传输描述符300可以包括下一个描述符地址(NEXTADDR)310。NEXTADDR 310能够以任何合适的方式实现,诸如通过寄存器或其他合适的数据结构。NEXTADDR 310可限定DMA传输描述符300的下一实例的地址、寄存器或其他位置,该DMA传输描述符用于限定将被包括在同一DMA传输中的n个连续寄存器或存储器位置的附加块的部分。
在另选的实施方案中,DMA传输可能不包括在SADDR 304或DADDR306处限定的寄存器或存储器位置。在此类另选的实施方案中,源索引寄存器308可包括由DMA传输描述符300识别的将被包括在DMA传输中的n个寄存器或存储器位置的连续块的所有n个寄存器或存储器位置的条目。在此类另选的实施方案中,源索引寄存器308可不包括限定DMA传输是否将包括由DMA传输描述符300识别的n个寄存器或存储器位置的连续块以外的附加寄存器或存储器元件的条目。相反,此类条目可用于限定第一条目处的与基地址对应的数据是否将被包括在传输中。在此类另选的实施方案中,DMA传输是否将包括由DMA传输描述符300识别的将被包括在DMA传输中的n个寄存器或存储器位置的连续块以外的附加寄存器或存储器元件可由NEXTADDR 310的内容限定。在此类另选的实施方案中,如果NEXTADDR 310是已知零值,则DMA传输可能不包括附加寄存器或存储器元件。如果NEXTADDR 310包括地址值,则DMA传输可包括附加寄存器或存储器元件,此类附加寄存器或存储器元件将由在NEXTADDR 310中指定的地址处的DMA传输描述符300的另一实例限定。
在一个实施方案中,如果要对存储器的非连续块进行传输的写入和读取,则此类写入和读取的规范可包括在DMA传输描述符300的相同实例上。在另一个实施方案中,如果要对存储器的非连续块进行传输的写入和读取,则此类写入和读取的规范可包括在DMA传输描述符300的单独实例上。
图4是根据本公开的实施方案的应用于寄存器组的存储器映射的DMA传输描述符的图示。
图4中示出了具有32个寄存器的寄存器组202的示例性具体实施,每个寄存器的大小是一个字,例如在表示为外围设备0的外围设备中在地址0×00处开始从REG0枚举到REG31。这可表示例如外围设备A 104、寄存器组1 121。在图4的示例中,DMA传输可包括的连续寄存器或存储器元件的数量n可以是32,与寄存器组202的大小相同。
DMA传输描述符300的实例被示为DMA传输描述符300A。DMA传输描述符304A可包括表示为SADDR 304A的SADDR 304的实例,其限定要在DMA传输中传输的第一寄存器是外围设备0寄存器组202的地址0×00处的REG0。
以图形方式表示,要包括在DMA传输中的寄存器组202的内容以无阴影表示,并且不包括在DMA传输中的寄存器组202的内容以阴影表示。在图4的示例中,REG0、REG1、REG3、REG5、REG6、REG7、REG10、REG12、REG13、REG15、REG16、REG17、REG18、REG19、REG21、REG23、REG25、REG27和REG31将被包括在DMA传输中。
DMA传输描述符304A可包括源索引寄存器308的实例,表示为源索引寄存器308A,限定将被包括在DMA传输中的寄存器组202的n个连续寄存器的部分。在一个实施方案中,源索引寄存器308A可能不包括地址0×00处的REG0的条目,因为该地址被限定为源地址SADDR304A,并且将自动包括在DMA传输中。源索引寄存器308A可表示为n个位的阵列,并且在图4的示例中为32位。32位可以从索引零开始进行索引。在索引零(index[0])处的源索引寄存器308A的第一位可限定REG1是否要包括在DMA传输中。该第一位可被设置,即具有值1,因为REG1将被包括在DMA传输中。DMA控制器102在读取该位时可读取地址0×04处的REG1作为DMA传输的一部分。在索引1(index[1])处的源索引寄存器308A的下一位可限定REG2是否要包括在DMA传输中。该第一位可被设置为零,即,未被设置或被清空,因为REG2将不被包括在DMA传输中。在各种具体实施中,“0”位可替代地指示相关联的寄存器将不被包括在DMA传输中,并且“1”位可指示相关联的寄存器将被包括在DMA传输中。
在索引n(index[n]或index[31])处的源索引寄存器308A的最后一位可限定是否将存在被包括在DMA传输中的附加内容。例如,如果该位被设置,则附加内容可被包括在DMA传输中,该DMA传输由位于由NEXTADDR 310A限定的地址处的DMA传输描述符300的另一实例限定。否则,该位可以是空的。在各种具体实施中,清空位可替代地指示存在要包括在DMA传输中的附加内容,并且设置位可指示不存在要包括在DMA传输中的附加内容。在图4的示例中,可能不存在要包括在DMA传输中的附加内容,并且源索引寄存器308A可在index[31]处具有清空位。
由于REG0、REG1、REG3、REG5、REG6、REG7、REG10、REG12、REG13、REG15、REG16、REG17、REG18、REG19、REG21、REG23、REG25、REG27和REG31将被包括在DMA传输中,并且将不包括附加内容,因此源索引寄存器308A可包括从REG0开始的{1 0 1 0 1 1 1 00 1 0 1 10 1 1 1 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0}数据条目。这可首先存储最低有效位(LSB)作为xAE5BEAA2的寄存器值。如果首先存储最高有效位(MSB),则其可存储为x4557DA75的寄存器值。
图1是根据本公开的实施方案的用于DMA辅助存储器访问的系统100的图示。图2是根据本公开的实施方案的用于不同寄存器组的存储器映射的图示。所示的图3是根据本公开的实施方案的DMA传输描述符300的更详细图示。图4是根据本公开的实施方案的应用于寄存器组的存储器映射的DMA传输描述符的图示。
图5是根据本公开的实施方案的应用于寄存器组的存储器映射的其他DMA传输描述符的图示。具体地,图5示出了示例,其中除了由DMA传输描述符300的第一实例识别的内容之外,还将在DMA传输中包括附加内容,并且其中此类附加内容位于相同或不同的寄存器组内。
图5中示出了具有64个寄存器的寄存器组206的示例性具体实施,每个寄存器的大小是一个字,例如在外围设备0中在地址0×2000处开始从REG100枚举到REG163。这可表示例如外围设备A 104、寄存器组0 120。还示出了具有32个寄存器的寄存器组204的示例性具体实施,每个寄存器的大小是一个字,例如在外围设备1中在地址0×3000处开始从REG64枚举到REG72。这可表示例如外围设备B 106、寄存器组2 124。在图5的示例中,DMA传输可包括的连续寄存器或存储器元件的数量n,如由DMA传输描述符300的单个实例所限定的,可以是32,与寄存器组204的大小相同。
以图形方式表示,要包括在DMA传输中的寄存器组204、206的内容以无阴影表示,并且不包括在DMA传输中的寄存器组204、206的内容以阴影表示。在图5的示例中,REG100、REG101、REG133、REG134、REG136、REG68、REG69、REG70和REG71将被包括在DMA传输中。
DMA传输描述符300的实例被示出为DMA传输描述符300B,其可以是用于表示给定DMA传输的第一DMA传输描述符300实例。DMA传输描述符300B的SADDR 304B可以指定DMA传输将包括外围设备0寄存器组206中的地址0×2000处的寄存器,给定为REG100。因此,DMA传输描述符300B可限定n(32)个连续寄存器中的哪些寄存器将被包括在DMA传输中,从寄存器组206中的地址0×2000处的REG100开始。这可指定要包括地址范围0×2000-0×207C中的哪些寄存器。
值得注意的是,在图5中,地址0×2080处的REG132不包括在由DMA传输描述符300的实例限定的n个寄存器的任何组中,即使REG132是寄存器组206中的(n+1)寄存器,并且寄存器组206的n个寄存器的多于一个块将用于DMA传输。
DMA传输描述符300B可包括源索引寄存器308B,其可在index[0]处的位中指定REG101(REG100之后的第一寄存器)将被包括在DMA传输中。DMA传输中可能不包括由DMA传输描述符300B限定的n个寄存器内的其他寄存器。因此,这些其他寄存器的相关联的位可能不被编程。源索引寄存器308B的最后一个元素(index[31])可被编程,因为附加内容将由DMA传输描述符300的其他实例所限定的DMA传输来传输。因此,源索引寄存器308B可由值集{1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1}给出。这可首先存储LSB或MSB作为0×80000001的寄存器值。
值得注意的是,虽然设置了源索引寄存器308B的index[31],但原本对应于第32个寄存器的寄存器REG133是否与作为REG133的源索引寄存器308B的index[31]不相关超出了要由DMA传输描述符300B寻址的n个连续寄存器或存储器元件的范围。
DMA传输描述符300B可包括NEXTADDR 310B,其可指定要用于DMA传输的DMA传输描述符300的下一个实例是DMA传输描述符300C。
DMA传输描述符300C可以是用于表示给定DMA传输的DMA传输描述符300的第二实例。DMA传输描述符300C的SADDR 304C可以指定DMA传输将包括来自外围设备0中的相同寄存器组即寄存器组206的地址0×2084处给定为REG133的附加内容。同样,REG132可能不包括在DMA传输描述符300的任何实例的描述中,因为其不包括在DMA传输中,在DMA传输描述符300B所覆盖的边界之外,并且SADDR 304C识别从REG133开始的要传输的寄存器。因此,SADDR 304C识别0×2084处的REG133,而不是0×2080处的REG132。DMA传输描述符300C可限定n(32)个连续寄存器中的哪些寄存器将被包括在DMA传输中,从寄存器组206中的地址0×2084处的REG133开始。这可指定地址范围0×2084-0×2100中的哪些寄存器将被包括在DMA传输中。
如图5所示,该地址范围0×2084-0×2100可超过寄存器组206的实际限值。在这种情况下,DMA控制器102可被配置为忽略针对超过寄存器组206的实际限值的此类地址的DMA传输的任何指示。这可通过清空与超过寄存器组206的实际限值的此类地址相关联的源索引寄存器308C中的位来实现。
DMA传输描述符300C可包括源索引寄存器308C,其可在index[0]处的位中指定REG134(REG133之后的第一寄存器)将被包括在DMA传输中。此外,源索引寄存器308C可在index[2]处的位中指定REG136(REG133之后的第三寄存器)将被包括在DMA传输中。DMA传输中可能不包括由DMA传输描述符300C限定的n个寄存器内的其他寄存器。因此,这些其他寄存器的相关联的位可能不被设置。源索引寄存器308C的最后一个元素(index[31])可被设置,因为附加内容将由DMA传输描述符300的其他实例所限定的DMA传输来传输。因此,源索引寄存器308C可由值集{1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 1}给出。这可首先存储LSB作为0×A0000001的寄存器值,或首先存储MSB作为0×80000005的寄存器值。
DMA传输描述符300C可包括NEXTADDR 310C,其可指定要用于DMA传输的DMA传输描述符300的下一个实例是DMA传输描述符300D。
DMA传输描述符300D可以是用于表示给定DMA传输的DMA传输描述符300的第三实例。DMA传输描述符300D的SADDR 304D可以指定DMA传输将包括来自位于外围设备1中的不同寄存器组即寄存器组204的地址0×3010处给定为REG68的附加内容。如图5所示,外围设备1寄存器组204可能不从地址0×3010开始,而是从地址0×3000开始。因此,待由DMA传输描述符300D描述的n个连续寄存器或存储器元件可能不包括地址0×3000至0×300C(REG64-REG67),而是可从地址0×3010(REG68)开始。
DMA传输描述符300D可以包括源索引寄存器308D,其可在index[0]-index[2]处的位中指定REG69、REG70和REG71(REG68之后的前三个寄存器)将被包括在DMA传输中。DMA传输中可能不包括由DMA传输描述符300D限定的n个寄存器内的其他寄存器。因此,这些其他寄存器的相关联的位可能不被设置。源索引寄存器308D的最后一个元素(index[31])可被清空,因为DMA传输将不包括附加内容。因此,源索引寄存器308D可由值集{1 1 1 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}给出。这可首先存储LSB作为0×E0000000的寄存器值,或首先存储MSB作为0×7的寄存器值。
DMA传输描述符300D可包括NEXTADDR 310D,其可以是空值或未使用的,因为可能不具有用于给定DMA传输的DMA传输描述符300的更多实例。
返回图1,因此给定DMA传输的DMA传输描述符实例的数量可与要访问以读取给定DMA传输的内容的大小为n的寄存器的连续块的数量一样多。
系统100可用于实现DMA分散/聚集操作,其中读取来自一个或多个寄存器组的各种连续和非连续寄存器以确定信息。可执行DMA分散/聚集操作以防止或检测故障注入或故障错误,使用内置DMA CRC型能力执行动态静态外围设备配置检查,在故障检测的情况下生成事件作为归零电路的来源,作为使系统100处于安全状态的故障触发动作的来源,在没有CPU干预的情况下在引导期间配置外围设备,或者将外围设备配置复制到保持在深睡眠模式、休眠模式或其他睡眠模式下的存储器或从保持在深睡眠模式、休眠模式或其他睡眠模式下的存储器恢复外围设备配置。这些DMA分散/聚集操作可使用DMA传输描述符诸如DMA传输描述符112、114、116来执行,以便更有效地执行此类操作。
例如,DMA控制器102可接收命令以将数据传输到外围设备或从外围设备传输数据,诸如从外围设备A 104传输到系统存储器110。DMA控制器102可以读取DMA传输描述符0112以识别寄存器组0 120中寄存器的第一组最多至n个连续块的哪些部分将被传输。DMA控制器102可以从系统存储器110传输后续DMA传输描述符,诸如DMA传输描述符1 114,以识别无论是寄存器组0 120中还是其他寄存器组中的寄存器的第二组n个连续块的哪些部分将被传输。在从DMA传输描述符读取将不传输另外的DMA传输描述符时,可以完成用于DMA传输的数据传输。
在DMA传输完成之前、期间或之时,但在任何结果提交、结束或以其他方式完成之前,系统100可执行任何合适的检查。例如,DMA控制器102可被配置为对写入寄存器组或从寄存器组读取的数据值执行检查。此类检查可包括CRC检查。可将要写入寄存器或从寄存器读取的值与已知或预期值进行比较。已知或预期的值可存储在例如SRAM诸如CRC 130中,并且可由DMA控制器102确定、计算或读取。如果作为DMA传输的一部分的实际写入或读取的值与CRC 130中存储的期望值不匹配,则DMA控制器102可被配置为采取任何合适的纠正措施。例如,DMA控制器102可被配置为向事件处理程序103发出错误事件。事件处理程序103可由模拟电路、数字电路、由处理器执行的指令或其任何合适的组合来实现。事件处理程序103可被配置为在通知来自DMA控制器102的错误时,向系统100的一个或多个部分诸如处理器128、向其或从其产生错误数据传输的外围设备、或专用错误处理程序外围设备诸如外围设备D 126生成动作、中断或其他合适的信号。可采取任何合适的纠正措施,诸如软件中限定的措施,使计数器递增(其中计数器的值高于给定阈值可引起其它纠正措施)、清空键、归零或重启操作。
图6是根据本公开的实施方案的应用于存储器映射以写入到存储器的非连续块的DMA传输描述符的图示。图4和图5示出了可应用于从存储器的非连续块读取或写入存储器的非连续块的存储器的非连续块的DMA传输的原理。图6可示出写入存储器的非连续块的特定情况。
在图4结束时,某些存储器位置可能已从外围设备0寄存器组202读取,如由源索引寄存器308A所指定。在图6中,这些在602中概念性地示出。这些可从DADDR或图6的示例中外围设备1寄存器组的另一实例604的0×3000开始写入存储器。
示出了目标索引寄存器312A的实例。以图形方式表示,要写入DMA传输中的寄存器组604的内容以无阴影表示,并且不写入DMA传输中的寄存器组604的内容以阴影表示。在图6的示例中,REG32、REG33、REG34、REG35、REG36、REG37、REG38、REG39、REG40、REG41、REG42、REG44、REG45 REG46、REG47、REG48、REG49、REG50和REG53将写入DMA传输中。目标索引寄存器312A可限定寄存器组604的n个连续寄存器的哪些部分将写入DMA传输中。在一个实施方案中,目标索引寄存器312A可能不包括地址0×3000处的REG32的条目,因为该地址被限定为目标地址DADDR,并且将自动写入DMA传输中。目标索引寄存器312A可表示为n个位的阵列,并且在图6的示例中为32位。32位可以从索引零开始进行索引。在索引零(index[0])处的目标索引寄存器312A的第一位可限定REG33是否要写入DMA传输中。该第一位可被设置,即具有值1,因为REG33将被写入DMA传输中。DMA控制器102在读取该位时可写入地址0×3004处的REG33作为DMA传输的一部分。在索引10(index[10])处的目标索引寄存器312A的第一位可限定REG43是否要写入DMA传输中。该位可被设置为零,即,不被设置或被清空,因为REG43将不被写入DMA传输中。在各种具体实施中,“0”位可替代地指示相关联的寄存器将不被包括在DMA传输中,并且“1”位可指示相关联的寄存器将被包括在DMA传输中。
在索引n(index[n]或index[31])处的目标索引寄存器312A的最后一位可限定是否将存在要写入DMA传输中的附加内容。例如,如果该位被设置,则附加内容可被写入DMA传输中,该DMA传输由位于由NEXTADDR310A限定的地址处的DMA传输描述符300的另一实例限定。否则,该位可以是空的。在各种具体实施中,清空位可替代地指示存在要写入DMA传输中的附加内容,并且设置位可指示不存在要写入DMA传输中的附加内容。在图6的示例中,可能不存在要写入DMA传输中的附加内容,并且目标索引寄存器312A可在index[31]处具有清空位。
由于REG0、REG1、REG3、REG5、REG6、REG7、REG10、REG12、REG13、REG15、REG16、REG17、REG18、REG19、REG21、REG23、REG25、REG27和REG31将被写入位置REG32、REG33、REG34、REG35、REG36、REG37、REG38、REG39、REG40、REG41、REG42、REG44、REG45 REG46、REG47、REG48、REG49、REG50和REG53,并且将不包括附加内容,因此目标索引寄存器312A可包括从REG33开始的{1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 00 0}数据条目。这可首先存储最低有效位(LSB)作为xFFDE0000的寄存器值。如果首先存储最高有效位(MSB),则其可存储为x7BFF的寄存器值。
图6中示出了DMA写入到寄存器组604的相应寄存器之后的内容。可保持未写入的内容,并且它们的值未在图6中示出。
图7是根据本公开的实施方案的用于DMA传输的方法700的图示。方法700可由如图1-5所示的系统100的任何合适的部分来实现,诸如由DMA控制器102来实现。方法700可利用比图7中所示更多或更少的步骤来执行。此外,方法700的步骤可重复、省略、并行地执行,或者以与图7所示不同的顺序执行。方法700可根据需要重复。方法700可在任何步骤处诸如在步骤705处开始。
在步骤705处,可确定要执行DMA传输。DMA传输可由第一DMA传输描述符来识别。可启动DMA传输,并且可确定用于DMA传输的DMA传输描述符的地址。
在步骤710处,可加载DMA传输描述符。DMA传输描述符可以从系统存储器加载。
在步骤715处,可从加载的DMA传输描述符中识别源地址或目标地址。
在步骤720处,可以开始n个寄存器的连续块内的寄存器的选择性DMA传输。可传输与来自步骤715的源地址或目标地址对应的基地址处的寄存器。索引可被设置为零。
在步骤725处,可确定来自索引处的DMA传输描述符的索引寄存器中的条目是被设置,从而指示对应于该条目的寄存器将被传输,还是被清空,从而指示该条目将不被传输。如果条目被设置,则方法700可前进至步骤730。否则,方法700可前进至步骤735。
在步骤730处,可计算n个寄存器的连续块内但位于与来自步骤715的源地址或目标地址对应的基地址处的寄存器之后的寄存器的传输,该寄存器由步骤725中的索引寄存器的索引识别。要传输的寄存器的地址可由([根据需要SADDR或DADDR]+w[字长]*(1+索引))给出。可以根据计算传输内容。在执行内容的传输之后,方法700可前进至步骤735。
在步骤735处,可递增索引,并且可确定索引是否大于或等于(n-1),其中n为要评估以用于与DMA传输描述符一起传输的连续块的大小。如果索引大于或等于(n-1),则方法700可前进至步骤740。否则,方法700可在步骤725处重复以进一步评估索引寄存器的内容。
在步骤740处,可确定是否设置索引阵列的最后一个元素。如果是,则将传输附加内容,如由其他DMA传输描述符所识别的,并且方法700可以前进至步骤745。否则,方法700可前进至步骤750。
在步骤745处,可从当前DMA传输描述符确定用于给定DMA传输的下一个DMA传输描述符的地址。方法700可在710处重复以加载和利用下一个DMA传输描述符。
在步骤750处,可执行数据的任何合适的操作或检查。例如,可执行CRC校验,其中相对于已知的CRC值来评估要传输的内容。如果CRC校验通过,则方法700可前进至步骤760。否则,方法700可前进至步骤755。
在步骤755处,可基于步骤750的检查失败来采取任何合适的纠正措施。
在步骤760处,可提交传输结果。
虽然在本公开内已描述了特定实施方案,但本领域的技术人员将认识到,在不脱离本公开的实质和教导的情况下,可作出某些添加、改变和变型。

Claims (15)

1.一种直接存储器访问(DMA)控制器,所述DMA控制器包括电路,所述电路被配置为:
加载第一DMA传输描述符,所述第一DMA传输描述符被配置为限定n个存储器元件的第一连续块内的哪些存储器元件将被包括在给定DMA传输中;
基于所述第一DMA传输描述符来确定n个存储器元件的所述第一连续块内的每个存储器元件是否将被包括在所述给定DMA传输中,包括确定n个存储器元件的所述第一连续块内的存储器元件的多个非连续子块将被传输;以及
基于确定n个存储器元件的所述第一连续块内的每个存储器元件是否将被包括在所述给定DMA传输中来执行被确定为包括在所述给定DMA传输内的存储器元件的所述DMA传输。
2.根据权利要求1所述的DMA控制器,其中所述电路被进一步配置为:
确定要在所述给定DMA传输中包括附加存储器元件;
加载第二DMA传输描述符,所述第二DMA传输描述符被配置为限定n个存储器元件的第二连续块内的哪些存储器元件将被包括在给定DMA传输中;
基于所述第二DMA传输描述符来确定n个存储器元件的所述第二连续块内的每个存储器元件是否将被包括在所述给定DMA传输中,包括确定n个存储器元件的所述第二连续块内的存储器元件的多个非连续子块将被传输;以及
基于确定n个存储器元件的所述第二连续块内的每个存储器元件是否将被包括在所述给定DMA传输中来执行被确定为包括在所述给定DMA传输内的存储器元件的所述DMA传输。
3.根据权利要求2所述的DMA控制器,其中所述电路被进一步配置为根据被包括在所述第一DMA传输描述符中的信息确定附加存储器元件将被包括在所述给定DMA传输中。
4.根据权利要求2至3中任一项所述的DMA控制器,其中所述电路被进一步配置为根据被包括在所述第一DMA传输描述符中的信息确定所述第二DMA传输描述符的地址。
5.根据权利要求2至4中任一项所述的DMA控制器,其中待被包括在所述给定DMA传输中的n个存储器元件的所述第一连续块和第二连续块可位于同一外围设备内。
6.根据权利要求2至4中任一项所述的DMA控制器,其中待被包括在所述给定DMA传输中的n个存储器元件的所述第一连续块和第二连续块可位于不同外围设备内。
7.根据权利要求2至6中任一项所述的DMA控制器,其中所述第一DMA传输描述符被配置为限定n个存储器元件的所述第一连续块内的所有所述多个非连续子块将被传输。
8.根据权利要求1至7中任一项所述的DMA控制器,其中所述第一DMA传输描述符被进一步配置为限定n个存储器元件的所述第一连续块内的存储器元件的所述多个非连续子块。
9.根据权利要求8所述的DMA控制器,其中所述第一DMA传输描述符被进一步配置为通过n个存储器元件的所述第一连续块的基地址来限定待被包括在所述给定DMA传输中的n个存储器元件的所述第一连续块内的第一存储器元件。
10.根据权利要求8至9中任一项所述的DMA控制器,其中所述第一DMA传输描述符被进一步配置为通过多个指示符限定待被待包括在所述给定DMA传输中的n个存储器元件的所述第一连续块内的一个或多个第二存储器元件。
11.根据权利要求10所述的DMA控制器,其中所述多个指示符包括一系列位,每个位被配置为指示相关联的存储器元件是否将被包括在所述给定DMA传输中。
12.根据权利要求11所述的DMA控制器,其中所述一系列位包括n个位。
13.根据权利要求12所述的DMA控制器,其中所述n个位中的一个位被配置为指示附加存储器元件将被包括在所述给定DMA传输中。
14.根据权利要求1至13中任一项所述的DMA控制器,其中待被包括在所述给定DMA传输中的n个存储器元件的所述第一连续块位于寄存器组内,并且待被包括在所述给定DMA传输中的n个存储器元件的所述第一连续块具有与所述寄存器组不同的基地址。
15.一种用于直接存储器访问(DMA)控制的方法,所述方法包括根据权利要求1至14所述的DMA控制器中的任一个DMA控制器的操作。
CN202080044532.9A 2019-06-21 2020-06-22 用于非连续存储器的dma分散和聚集操作 Pending CN114051611A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962864719P 2019-06-21 2019-06-21
US62/864,719 2019-06-21
US16/906,262 US11003606B2 (en) 2019-06-21 2020-06-19 DMA-scatter and gather operations for non-contiguous memory
US16/906,262 2020-06-19
PCT/US2020/038876 WO2020257748A1 (en) 2019-06-21 2020-06-22 Dma-scatter and gather operations for non-contiguous memory

Publications (1)

Publication Number Publication Date
CN114051611A true CN114051611A (zh) 2022-02-15

Family

ID=71528065

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080044532.9A Pending CN114051611A (zh) 2019-06-21 2020-06-22 用于非连续存储器的dma分散和聚集操作

Country Status (4)

Country Link
US (1) US11003606B2 (zh)
CN (1) CN114051611A (zh)
DE (1) DE112020003004T5 (zh)
WO (1) WO2020257748A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11513986B1 (en) * 2020-08-03 2022-11-29 Amazon Technologies, Inc. DMA engine that generates an address-less memory descriptor that does not include a memory address for communicating with integrated circuit device
GB2610385B (en) * 2021-09-01 2023-09-06 Advanced Risc Mach Ltd DMA template
US20220224605A1 (en) * 2021-12-23 2022-07-14 Intel Corporation Simulating network flow control
US20230385227A1 (en) * 2022-05-27 2023-11-30 Nvidia Corporation Remote descriptor to enable remote direct memory access (rdma) transport of a serialized object

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999034273A2 (en) * 1997-12-30 1999-07-08 Lsi Logic Corporation Automated dual scatter/gather list dma
CN1365061A (zh) * 2001-01-09 2002-08-21 深圳市中兴集成电路设计有限责任公司 一种直接存储器访问控制器系统
CN1719427A (zh) * 2004-07-09 2006-01-11 上海奇码数字信息有限公司 存储器直接存取装置及其数据传输方法
US7877524B1 (en) * 2007-11-23 2011-01-25 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070162643A1 (en) 2005-12-19 2007-07-12 Ivo Tousek Fixed offset scatter/gather dma controller and method thereof
US10169271B1 (en) 2014-10-28 2019-01-01 Xilinx, Inc. Direct memory access descriptor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999034273A2 (en) * 1997-12-30 1999-07-08 Lsi Logic Corporation Automated dual scatter/gather list dma
CN1365061A (zh) * 2001-01-09 2002-08-21 深圳市中兴集成电路设计有限责任公司 一种直接存储器访问控制器系统
CN1719427A (zh) * 2004-07-09 2006-01-11 上海奇码数字信息有限公司 存储器直接存取装置及其数据传输方法
US7877524B1 (en) * 2007-11-23 2011-01-25 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching

Also Published As

Publication number Publication date
DE112020003004T5 (de) 2022-04-14
US20200401540A1 (en) 2020-12-24
WO2020257748A1 (en) 2020-12-24
US11003606B2 (en) 2021-05-11

Similar Documents

Publication Publication Date Title
US11003606B2 (en) DMA-scatter and gather operations for non-contiguous memory
US7171526B2 (en) Memory controller useable in a data processing system
EP1573559B1 (en) Method, system, and program for handling input/output commands
US6341318B1 (en) DMA data streaming
US20070073923A1 (en) DMA descriptor management mechanism
CN107636630B (zh) 中断控制器
US10048867B2 (en) Method to shorten hash chains in lempel-ziv compression of data with repetitive symbols
US6496878B1 (en) Transfer progress alert module
US9934120B2 (en) Method and apparatus for updating a system on chip (SOC) image from a host computer system without using DMA
US9891986B2 (en) System and method for performing bus transactions
TW201303870A (zh) 利用快閃記憶體介面的方法及裝置
EP2548129A1 (en) Masked register write method and apparatus
JP4855864B2 (ja) ダイレクトメモリアクセスコントローラ
EP1532535B1 (en) Method, system, and program for configuring components on a bus for input/output operations
CN109558266B (zh) 主动错误更正失败处理方法
US6738837B1 (en) Digital system with split transaction memory access
JP2022025037A (ja) コマンド処理方法及びストレージ装置
US6567908B1 (en) Method of and apparatus for processing information, and providing medium
US9767054B2 (en) Data transfer control device and memory-containing device
WO2004010279A2 (en) Method, system, and program for returning data to read requests received over a bus
US20150212759A1 (en) Storage device with multiple processing units and data processing method
CN111247516A (zh) 一种电路结构、系统级芯片SoC、处理数据的方法
US7451254B2 (en) System and method for adaptive buffer allocation in a memory device interface
EP1125191A1 (en) Controlling access to a primary memory
US20060236016A1 (en) Method, system, and apparatus to support device configuration

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination