存储控制器DMA设计方法与流程

文档序号:26510032发布日期:2021-09-04 09:24阅读:418来源:国知局
存储控制器DMA设计方法与流程
存储控制器dma设计方法
技术领域
1.本发明属于存储控制领域,特别涉及一种存储控制器dma设计方法。


背景技术:

2.在soc设计开发的过程中,对于数据流的高效处理是一个至关重要的问题。为了提升整个系统的性能,避免cpu在数据流的调度和搬移上占用过多时间,dma被设计出来用于帮助cpu进行数据流的调度和搬移。在既定配置模式下,dma可以独立高效完成系统存储和存储之间、系统存储和外设单元之间的数据搬移。dma的出现和引入有效的降低了整个系统cpu的负载,提高数据搬移的效率。存储控制器对于数据的完整性、可靠性,以及系统的稳定性都有较高的要求。为了提高系统的性能和吞吐率,存储控制器在运行时刻并发控制多个目标设备,每个目标设备同时存在多i/o并发传输。不同目标设备的多个i/o交织进行,并分时复用存储控制器的物理链路。此外,单个i/o的数据通常需要分为多个阶段传输,因此需要dma支持传输中断时刻的上下文保存和多次续传的功能。
3.典型dma的控制方式采用链表结构(通常称为scatter

gather或者linked list dma)。系统软件在内存中按照预定义的格式构造操作描述符链表,并将链表首地址赋予dma硬件逻辑。dma硬件逻辑获得描述符链表的首地址,依次解析链表中的操作描述符,并按照描述符信息将源地址内存区域或者外设单元的数据搬移至目标地址内存区域或者外设单元,直至整个链表所有描述符被解析和执行完毕。
4.如图1所示,典型dma的控制链表的操作描述符通常包含数据的源物理地址(source physical address)、目标物理地址(destination physical address)、传输长度(transfer size)、扩展标志位(e)、结束标志位(l)、中断标志位(i)等信息。其中,源物理地址段指示dma搬移数据在物理内存中的源地址或者后续描述符链表的首地址;目标物理地址段指示数据搬移至物理内存中的目的地址;传输长度定义该项描述符搬移的数据块长度;中断标志位指示dma控制器在完成该描述符定义的数据搬移后是否上报中断至cpu;结束标志位指示当前描述符为链表中的最后一个描述符项,该描述符执行完毕后,结束整个dma的搬移任务;扩展标志位指示当前描述符项为指针描述符,dw0的源物理地址段指示后续描述符链表在物理内存中的位置,该描述符项不执行实质的数据搬移任务。
5.dma硬件逻辑按照软件配置的描述符链表首地址,在系统内存中按照顺序读取操作描述符,根据预定义格式解析描述符,并执行数据搬移任务,直至整个链表最后一个描述符执行完毕。然而在通常情况下,dma硬件逻辑每读取一项描述符进行解析和执行时,每个描述符表项就需要dma硬件触发单次总线读取操作。而且dma在执行数据搬移的过程中并未检查描述符项的完整性和有效性。随着soc系统软件的复杂性不断增大,软件缺陷发生的概率随之增大。在极端场景下,软件缺陷可能导致系统内存中的dma描述符链表构造失败或者损坏,会引发链表中描述符的地址字段、数据传输大小字段或者标志位被篡改,进而导致数据搬移地址或内容错误,使数据存储业务出现异常甚至整个系统的崩溃。


技术实现要素:

6.本发明的目的在于提供一种存储控制器dma设计方法,以克服存储控制器的数据搬移可能引发的上述问题。所述存储控制器dma设计方法包括:
7.在内存中构建dma控制块,所述dma控制块用于描述所述存储控制器dma的当前i/o数据传输信息;
8.在内存中构建dma操作描述符链表,将所述dma操作描述符链表的一个或多个表项与所述dma控制块相关联,所述dma操作描述符表项用于描述等待dma传输的数据块信息;
9.将所述dma控制块的物理基地址通知给dma硬件逻辑,以使所述dma硬件逻辑根据所述dma控制块和所述dma操作描述符链表的描述信息来启动所述存储控制器dma的数据传输任务。
10.优选地,所述dma控制块包括软件可配置的预取配置,用于表示dma硬件逻辑单次总线操作所读取并缓存的所述dma操作描述符表项的数量。
11.优选地,所述dma控制块包括i/o传输中断上下文信息,用于记录dma传输发生中断的dma操作描述符表项的物理地址和当前表项未传输完成的数据长度。
12.优选地,所述dma控制块包括描述符链表长度和i/o剩余数据量,分别用于表示当前i/o事务的dma操作描述符链表中表项的数量和等待传输的数据量。
13.优选地,所述dma操作描述符包括序列号,用于表示当前表项在dma描述符链表中的位置编号;所述序列号从0依次递增,且小于所述dma控制块中的描述符链表长度。
14.优选地,所述dma操作描述符包括软件和dma硬件逻辑约定的特殊编码值的魔术字,用于保证所述dma操作描述符内容的完整性和有效性。
15.优选地,所述dma操作描述符包括奇偶校验位,用于表示当前表项所有比特位的奇偶校验值。
16.优选地,所述dma硬件逻辑在执行时刻检查所述dma操作描述符的魔术字,如果当前表项中的魔术字与预先约定的魔术字不匹配,则通知主机当前i/o传输发生异常。
17.优选地,所述dma硬件逻辑在执行时刻计算所述dma操作描述符的奇偶校验值,如果当前表项中的奇偶校验位和计算所得结果不匹配,则通知主机当前i/o传输发生异常。
18.优选地,如果当前描述符是所述dma描述符链表的最后一个描述符,则检查dma控制块中的所述i/o剩余数据量是否为0;若不为0,则通知主机i/o数据传输发生异常。
19.相比于现有技术,本发明具有以下优点:
20.在兼容当前典型dma的链表控制模式的基础上,支持存储控制领域中i/o传输的断点保存和续传功能,满足存储应用中的数据传输完整性、可靠性和稳定性需求,避免软件缺陷引发的数据搬移错误和系统异常。
21.本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获取。
附图说明
22.为更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见地,下面描述中的附图是本发明的某
些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获取其他的附图。
23.图1示出了根据现有技术的典型dma控制链表的操作描述符示意图。
24.图2示出了根据本发明的dma控制块的详细结构示意图。
25.图3示出了根据本发明的dma操作描述符的字段信息示意图。
26.图4示出了根据本发明的示例性dma控制结构的示意图。
27.图5示出了根据本发明的dma硬件逻辑的示例处理流程图。
具体实施方式
28.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
29.针对传统dma控制器在存储控制领域应用下的局限性,本发明提出一种面向存储控制器的dma设计方法,在兼容当前典型dma的链表控制模式的基础上,支持存储控制领域中i/o传输的断点保存和续传功能,满足存储应用中的数据传输完整性、可靠性和稳定性需求,避免软件缺陷引发的数据搬移错误和系统异常。
30.本发明提出的dma设计方法采用dma控制块和描述符链表结合的控制方式,其中dma控制块共16个dw(双字节),用于描述当前i/o的数据传输信息,指示dma需要执行的传输事务,具体结构参见图2,详细字段描述如下。
31.prefetch为预取配置值,长度4比特,用于指示dma硬件逻辑单次总线操作读取并缓存描述符表项(scatter

gather element)的数量,即单次预取2
preftech
个连续的描述符表项;
32.ord为乱序标志位,长度1比特,用于指示当前i/o的数据是否支持乱序到达;
33.b为中断标志位,长度1比特,表示当前dma控制块中记录的断点信息,表示下文所述的部分传输长度partial transfer length和部分描述符地址partial element address的字段是否包含有效信息;
34.element length为描述符链表长度,长度2字节,表示当前i/o的dma描述符链表中所包含的描述符表项的总数;
35.remaining byte count为i/o剩余数据量,长度4字节,用于指示当前等待i/o传输的数据总量,以字节为单位;其初始值为描述符链表中所有表项的数据长度总和;
36.partial transfer length为部分传输长度,长度4字节,dma传输中断上下文,用于记录i/o传输发生中断的描述符表项未传输完成的数据长度;
37.partial element address为部分描述符地址,长度4字节,dma传输中断上下文,用于记录i/o传输发生中断的描述符表项的物理地址;
38.rsvd和r为保留字段,暂未使用;
39.p为奇偶校验位,长度1比特,表示当前部分传输长度和部分描述符地址字段所有比特的奇偶校验值;
40.scatter

gather element为dma操作描述符表项,长度4字节,用于描述等待传输
size、魔术字magic word、序列号seq no和有效位v,并计算奇偶校验位p。由软件将dma控制块的物理基地址通知给dma硬件逻辑,启动dma传输任务。
57.步骤s2:dma硬件逻辑读取所述dma控制块,解析控制块中的各个字段信息。
58.步骤s3:判断所述dma控制块中的中断标志位(b)是否置位。
59.如果b为0,表示该i/o为首次传输,则执行步骤s4;如果b为1,则表示i/o的前序传输被中断,执行步骤s13的断点续传步骤;
60.步骤s4:解析控制块中的操作描述符。
61.即从控制块的dw4~dw7开始,按序解析所链接的操作描述符,图2中将第一个操作描述符表示为scatter

gather element[0];
[0062]
步骤s5:对操作描述符中的各项标志位进行检查。
[0063]
具体地,根据操作描述符中的标志位定义,所述检查包括检查奇偶校验位p是否正确,描述符的有效标志位v是否置为1;检查当前魔术字magic word的数值是否与预先约定的数值一致;检查描述符的序列号seq no是否连续递增且小于控制块中配置的描述符链表长度element length。
[0064]
如果各项检查中发现至少一项异常,则通知主机i/o数据传输发生异常,并执行步骤s19;如果未发现异常,则执行步骤s6;
[0065]
步骤s6:检查当前描述符的扩展标志位e。
[0066]
如果扩展标志位为1,则执行步骤s12,否则执行步骤s7;
[0067]
步骤s7:根据当前描述符的定义,读取源物理地址physical address的数据,执行数据搬移任务,并通过传输长度transfer size字段计算该次传输的数据量。根据该次传输完成的数据量,更新dma控制块中的i/o剩余数据总量remaining byte count;
[0068]
步骤s8:如果数据传输过程中发生异常或者被其他i/o中断,则执行步骤s18,否则,执行步骤s9;
[0069]
步骤s9:检查当前描述符的结束标志位l。
[0070]
如果结束标志位为1,则执行步骤s17;否则,执行步骤s10;
[0071]
步骤s10:判断dma硬件缓冲区中是否有尚未执行的描述符,如果有,执行步骤s11;否则,执行步骤s12;
[0072]
步骤s11:返回步骤s3,执行下一个dma操作描述符的解析过程;
[0073]
步骤s12:按照dma控制块中的预取配置prefetch,从系统内存中一次性预取指定数量的操作描述符至内部缓冲区;
[0074]
步骤s13:dma控制块中的中断标志位(b)为1,启动数据断点续传程序,检查dma控制块内中断传输上下文信息的奇偶校验值是否正确,若校验无误,则执行步骤s14;否则通知主机i/o数据传输发生异常,并执行步骤s19;
[0075]
步骤s14:检查传输被中断的描述符表项是否存在剩余的未完成字节,即判断dma控制块内的部分传输长度partial transfer length字段是否为0,若不为0,则执行步骤s15;否则,执行步骤s16;
[0076]
步骤s15:根据dma控制块内的部分描述符地址partial element address字段,读取被中断的描述符,计算获得剩余数据的源物理地址,执行数据搬移任务;
[0077]
步骤s16:根据断点描述符地址,计算获得该i/o的后续描述符地址,返回步骤s12;
[0078]
步骤s17:在当前描述符的结束标志位l为1时,则检查dma控制块中的i/o剩余数据量是否等于0,如果等于0,表示该i/o期望的数据传输已正确完成,否则,若不等于0,则通知主机i/o数据传输发生异常,并执行步骤s19;
[0079]
步骤s18:在当前i/o的传输被异常中断时,将传输中断上下文保存至dma控制块的部分传输长度partial transfer length字段和部分描述符地址partial element address字段,并将中断标志位b进行置位;
[0080]
步骤s19:确定在当前i/o传输发生异常,dma硬件逻辑上报异常至系统软件实施异常处理。所述i/o传输异常包括例如描述符奇偶校验错误、描述符无效、魔术字数值不匹配、描述符序号不连续或者超出范围,以及传输的数据量未达到预期等。
[0081]
可以看出,本发明提出的方案采用dma控制块和操作描述符链表两种数据结构联合的控制方式,其中控制块中包含的传输中断上下文字段,记录i/o传输的中断现场,提供中断续传的可行性,满足存储控制领域的特殊需求;而预取配置实现了软件动态可配置的描述符预取长度,有效降低传输延迟和系统总线负载;链表长度、i/o剩余数据量字段,保证了数据传输任务的完整性;并且其中操作描述符的魔术字、序列号、有效标志位和奇偶校验位等多个标志位共同保证了数据传输的可靠性,避免了由于系统软件的缺陷或者不可靠软件代码导致描述符被篡改而引发的数据传输错误和系统异常,提升了数据传输效率。
[0082]
本领域技术人员可以理解,上述实施例中描述的存储控制器的控制字段和对应的方法流程仅为举例说明。本领域技术人员可以根据需要而调整存储控制器的控制字段以包括更多或更少的结构,或改变上述方法流程的个别步骤的参数或顺序。
[0083]
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1