掌桥专利:专业的专利平台
掌桥专利
首页

DMA自动配置模块和片上系统SOC

文献发布时间:2023-06-19 10:46:31


DMA自动配置模块和片上系统SOC

技术领域

本发明涉及芯片技术领域,尤其涉及一种DMA自动配置模块和片上系统SOC。

背景技术

在新基建和信创背景的推动下,密码产业迎来新的发展机遇,同时也面临新的挑战,除了传统安全设施数据流量带宽增长对于高性能密码芯片需求强烈,在诸多应用场景中,PCIe密码卡成为了最常见的设备形式,通过PCIe与主机交互的数据传输成为了实现高性能密码芯片的瓶颈之一。

现有技术中,存在两种主流的解决方案:1,通过SOC片上CPU配置DMA将数据从主机存储介质搬运至芯片密码算核,或者从芯片密码算核搬运至主机存储介质;2,算核直接通过PCIe接口访问主机存储介质。然而这两种都有各自的难点和瓶颈,第一种方案中,需要CPU来配置DMA,DMA搬运完成后会发中断给CPU,再加之芯片算核通常是多核设计,就需要配置多个数据搬运任务及处理完成后的中断,这些造成对CPU较大的负担,导致无法处理其他任务;与此同时,芯片整体的搬运效率还比较低。第二种方案中,多个算核直接通过PCIe接口来访问主机存储介质,其调度模块相当复杂,而且由于算核的数据访问有延迟效应,更加容易形成数据拥塞。

发明内容

为了解决上述技术问题,本发明公开了一种DMA自动配置模块,其用于通过总线对DMA控制器进行配置,所述DMA自动配置模块包括:从总线接口模块,用于被动接收总线请求;主总线接口模块,用于主动发起总线操作;配置信息存储模块,用于存储对所述DMA自动配置模块的配置信息;状态机控制模块,用于控制执行DMA配置流程。

进一步地,所述DMA自动配置模块按照如下步骤执行DMA配置流程:S1:所述状态机控制模块空闲等待接收DMA配置请求;S2:所述状态机控制模块响应于接收到请求,控制所述主总线接口模块发起获取DMA配置信息的总线操作,以获取DMA配置信息;S3:所述状态机控制模块控制所述主总线接口模块发起DMA配置总线操作。

进一步地,步骤S3包括:S31:所述状态机控制模块控制所述主总线接口模块发起查询DMA控制器空闲状态的总线操作,如果查询到DMA控制器空闲,则进行至步骤S32,否则重复执行步骤S31;S32:所述状态机控制模块控制所述主总线接口模块通过总线向DMA控制器发送DMA配置信息;S33:启动DMA控制器执行数据搬运,然后跳转到步骤S1。

进一步地,所述DMA配置请求由片上系统SOC上的算核发起。

进一步地,步骤S2包括:S21:所述状态机控制模块判断接收到的DMA配置请求的数量是否大于1,如果是,则进行至步骤S23,否则进行至步骤S22;S22:所述状态机控制模块控制所述主总线接口模块从发出DMA配置请求的算核获取相应DMA配置信息,然后进行步骤S31;S23:所述状态机控制模块仲裁确认各个DMA配置请求的响应顺序,然后进行至步骤S24;S24:所述状态机控制模块基于步骤S23中确定的响应顺序,控制所述主总线接口模块从需要响应的算核获取相应的DMA配置信息,然后进行至步骤S31;并且,步骤S33包括:S331:启动DMA控制器执行数据搬运,然后进行至步骤S332;S332:所述状态机控制模块确定是否还有未响应的DMA配置请求,如果是,则进行至步骤S24,否则跳转至步骤S1。

本发明还提供了一种片上系统SOC,所述片上系统SOC包括:CPU、算核、DMA控制器、总线以及如权利要求1-5中任一项所述的DMA自动配置模块,其中,所述CPU、所述算核、所述DMA控制器和所述DMA自动配置模块均与所述总线连接以通过所述总线进行数据传输。

进一步地,所述片上系统SOC按照如下步骤执行数据传输:S41:所述算核空闲等待接收数据处理请求;S42:所述算核响应于接收到数据处理请求,解析请求命令包,并向所述DMA自动配置模块发送DMA配置请求;S43:所述DMA自动配置模块响应于接收到DMA配置请求,执行DMA配置流程;S44:所述DMA控制器实施将待处理数据搬运至所述算核的数据搬入操作;S45:数据搬入完成后,算核执行运算处理。

进一步地,所述数据传输还包括以下步骤:S46:算核再次向所述DMA自动配置模块发送DMA配置请求;S47:所述DMA自动配置模块响应于接收到DMA配置请求,执行DMA配置流程;S48:所述DMA控制器实施将处理后数据从所述算核搬出的数据搬出操作;S49:数据处理完成,跳转至步骤S41。

进一步地,步骤S42包括:S421:所述算核解析请求命令包并判断是否需要进行数据包切包处理,如果是,则进行至步骤S422,否则进行至步骤S423;S422:所述算核对数据包进行切包处理,以将数据分多次DMA传输,然后进行至步骤S423;S423:算核向所述DMA自动配置模块发送DMA配置请求;并且,步骤S49包括:S491:一次数据处理完成后,判断是否还有尚未完成的数据包,如果是,则进行至步骤S493,否则进行至步骤S492;S492:向所述CPU发送中断,以告知所述CPU数据处理请求处理完成,并跳转至步骤S41。S493:继续向所述DMA自动配置模块发送DMA配置请求,然后进行至步骤S43。

进一步地,步骤S492包括:S4921:基于预先设定的中断合并策略判断是否需要向所述CPU发起中断,如果是,则进行至步骤S4922,否则跳转至步骤S41;S4922:向所述CPU发起中断,然后跳转至步骤S41。

本发明还提供了一种计算机设备,其包括如上所述的片上系统SOC。

在本发明的实施方式中,在需要执行算核与主机之间的数据传输时,可通过上述DMA自动配置模块来执行DMA配置流程,以通过DMA执行算核与主机存储介质之间的数据传输,从而SOC片上CPU几乎不需要参与到DMA的配置过程中,大大减少了CPU的负载,而且硬件电路实现不受中断等因素影响,配置的效率最高。

附图说明

图1是现有技术中的片上系统SOC的结构示意图;

图2是现有技术中的片上系统SOC执行数据传输的流程图;

图3是本发明的片上系统SOC的结构示意图;

图4是本发明的DMA自动配置模块的结构示意图;

图5是本发明的DMA自动配置模块的DMA配置流程图;

图6是本发明的进一步实施方式的DMA自动配置模块的DMA配置流程图;

图7是本发明的片上系统SOC执行数据传输的流程图;

图8是本发明的算核的结构示意图;

图9是本发明的进一步实施方式的片上系统SOC执行数据传输的流程图。

具体实施方式

下面结合具体实施例对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。

为了便于理解本发明的技术方案,在此对现有技术中的芯片结构及其数据传输方式进行简单说明。

参见图1,其示出了现有技术中的片上系统SOC的结构示意图,其中,SOC包括CPU、DMA控制器(为了便于描述,下面简称为DMA)、算核和内存,各个模块之间通过总线进行数据传输,PCIe模块是一个外设模块,芯片SOC一般以板卡的形式(例如,显卡或加速器卡)来与主机进行通信。在图1中,粗实线表示PCIe连接,细实线表示总线连接,虚线表示中断信号连接。为了将主机的任务卸载到芯片上来完成,需要先将数据存放到特定存储介质(例如,DDR)中,因此在通过芯片SOC的算核执行相应运算处理时,需要将待处理的数据从存储介质搬运到算核中,以通过算核对数据进行运算处理。

参见图2,其示出了基于图1的芯片结构来执行相应数据传输的流程图,具体流程如下:

Step1:CPU查询算核状态,若空闲则发送请求,否则等待;

Step2:CPU配置DMA(CPU向DMA发送配置信息等);

Step3:DMA搬运存储介质的数据至算核;

Step4:DMA搬运完成后向CPU发出中断;

Step5:CPU查询算核状态(或者等待算核发起完成中断请求)

Step6:CPU配置DMA(同step2);

Step7:DMA搬运算核运算结果至存储介质(同step3);

Step8:DMA搬运完成后向CPU发出中断(同step4);

Step9(图中未示出):完成请求数据,算核进入空闲状态。

如上描述的,为了使DMA执行数据搬运,首先通过CPU来配置DMA,在这种情况下,CPU需要读取SOC中内存空间来读取指令,通过预先编译好的软件指令,来实现DMA控制器的配置。由于每条指令都需要取指令、执行,就需要过多地占用CPU,而且如果配置过程中CPU收到中断,还需要执行中断处理函数,导致处理效率非常低。

针对上述技术问题,本发明提出通过在SOC上额外增设硬件电路或硬件模块,并通过模块的状态机(FSM)来控制配置流程,以代替CPU来执行配置DMA的相关操作。由此CPU几乎不需要参与到PCIe DMA的配置过程中,进而大大减少了CPU的负载,同时硬件电路或硬件模块的实现不受中断等因素影响,配置的效率大大提高。

具体地,参见图3,其示出了根据本发明的片上系统SOC的结构示意图。在本发明的SOC的结构中,增加了DMA自动配置模块(auto config module)ACM,其与CPU一样通过连接到总线来访问DMA,芯片的各个模块之间可通过总线进行数据传输,总线例如可以采用AXI4.0协议。

当需要通过DMA执行数据传输或搬运时,需要首先对DMA进行配置,其配置流程如下:

1.查询当前DMA状态;

2.发送配置信息(例如,数据源地址、数据目的地址和数据长度);

3.启动DMA开始数据传输;

4.完成传输;

5.产生中断(可选)。

为了使本发明的ACM模块能够代替CPU执行对DMA的配置过程,参见图4,本发明的ACM模块包括如下模块或电路:

(1)通用从总线接口GS(generic slave interface)模块,该GS模块是一个通用的AXI slave总线接口模块,用于被动接收总线请求,例如,通过总线接收CPU对ACM模块的配置信息(例如,响应请求仲裁策略)、向CPU反馈ACM模块工作状态的debug信息等。

(2)通用主总线接口GM(generic master interface)模块,该GM模块是一个通用的AXI master总线接口模块,用于主动发起总线操作,例如,发起配置PCIe DMA的总线操作、从算核获取DMA配置信息的总线操作等。

(3)配置信息存储REG模块,该REG模块可以用于存储对ACM模块的配置信息等。

(4)状态机FSM控制模块,该FSM控制模块用于控制执行DMA配置流程,具体地,根据REG模块中存储的ACM模块配置信息来控制执行DMA配置流程。

具体地,参见图5,本发明的ACM模块按照如下步骤执行DMA配置流程:

S1:FSM控制模块空闲等待接收DMA配置请求或者数据搬运请求,例如,当SOC上的算核需要进行数据搬运时,可以由算核以信号的形式向ACM模块发起请求;

S2:FSM控制模块响应于接收到请求,获取DMA配置信息,例如,当由SOC上的算核发起DMA配置请求时,可从相应的算核获取DMA配置信息,具体地,FSM模块控制GM模块发起总线操作,通过读取算核的配置端口来获取相应DMA配置信息;

S3:FSM控制模块控制GM模块发起DMA配置总线操作。

其中,所述步骤S3可以包括:

S31:FSM控制模块控制GM模块发起DMA空闲状态查询总线操作,具体地,FSM控制模块控制GM模块通过总线至DMA配置端口读取相关寄存器数值(例如,当读取的寄存器数值为1时,表示空闲,当读取的寄存器数值为0时,表示忙碌),如果查询到DMA空闲则进行至步骤S32,否则重复执行步骤S31,在DMA为多通道的情况下,可查询DMA是否有空闲通道;

S32:FSM控制模块控制GM模块通过总线向DMA发送DMA配置信息(例如,数据源地址、数据目的地址、数据长度等信息),例如,可以向步骤S31中查询的空闲通道发送DMA配置信息;

S33:启动DMA执行数据搬运;之后跳转到步骤S1。

在通过本发明的DMA自动配置ACM模块执行上述DMA配置过程后,DMA便可基于DMA配置信息实施数据搬运,具体地,DMA基于DMA配置信息中的数据源地址、目的地址和数据长度等来实施数据搬运。

由于在实际应用中,ACM模块存在同时接收到多个数据搬运请求的情形,例如SOC可能包括多个算核,每个算核独立工作,每个算核的数据搬运请求的发起也是独立的,所以多个算核可能同时向ACM模块发起DMA配置请求,在这种情况下,参见图6,上述的步骤S2可包括:

S21:FSM控制模块判断接收到的DMA配置请求的数量是否大于1,如果是,则进行至步骤S23,否则进行至步骤S22;

S22:FSM控制模块控制GM模块从发出DMA配置请求的算核获取相应DMA配置信息,然后进行步骤S31;

S23:FSM控制模块仲裁确认各个DMA配置请求的响应顺序,然后进行至步骤S24;

S24:FSM控制模块基于步骤S23中确定的响应顺序,控制GM模块从需要响应的算核获取相应的DMA配置信息,然后进行至步骤S31。

另外,在这种情况下,上述的步骤S33可包括:

S331:启动DMA执行数据搬运;

S332:FSM控制模块确定ACM模块是否还有未响应的DMA配置请求,如果是,则进行至步骤S24,否则跳转至步骤S1。

为了对接收到的各个DMA配置请求的响应顺序进行仲裁确认,FSM控制模块可以包括仲裁逻辑单元,并且在上述的步骤S23中,FSM控制模块(具体地,仲裁逻辑单元)可以基于REG模块中的响应请求仲裁策略来仲裁确定对各个数据搬运请求的响应顺序,例如,可以优先响应算核的数据搬出请求或者优先响应特定算核等。

另外,SOC片上CPU还可以通过ACM模块的GS模块来读取ACM工作状态等。

在本发明的实施方式中,如图3所示的,通过在SOC上进一步增设如上所述的ACM模块,从而在需要执行算核与主机之间的数据传输时,可通过ACM模块按照上述步骤来执行DMA配置流程,以通过DMA执行算核与主机存储介质之间的数据传输,从而SOC片上CPU几乎不需要参与到DMA的配置过程中,大大减少了CPU的负载,而且硬件电路实现不受中断等因素影响,配置的效率最高。

具体地,参见图7,可以按照以下步骤执行算核与主机存储介质之间的数据传输:

S41:算核空闲,等待接收数据处理请求,该数据处理请求可以由主机或者SOC芯片的CPU向算核发起,该数据处理请求可以为命令包的形式;

S42:响应于接收到数据处理请求,算核解析请求命令包,并向ACM模块发送DMA配置请求,其中,算核可以通过解析命令包获取DMA配置信息(例如,数据源地址、目的地址、数据长度等)并将其存储到响应的寄存器;

S43:ACM模块响应于接收到DMA配置请求,执行DMA配置流程,其中,ACM模块的DMA配置流程可参见如上结合图5和图6所描述的内容;

S44:DMA实施数据搬运,具体地,DMA基于配置信息中的数据源地址、数据目的地址等执行待处理数据从主机特定存储介质至算核的数据搬入。

S45:数据搬入完成后,算核执行运算处理。

由于在通过芯片的算核执行数据处理时,处理后的数据往往需要再次传输或搬回至主机的特定存储介质(例如,DDR)中,因此在算核的数据运算完成后,算核与主机之间还需要再进行一次数据搬出,也即,再将处理后的数据从算核搬出至主机的特定存储介质中。在此情况下,算核与主机存储介质之间的数据传输还包括以下步骤:

S46:算核再次向ACM模块发送DMA配置请求;

S47:ACM模块响应于接收到DMA配置请求,执行DMA配置流程,其中,ACM模块的DMA配置流程可参见如上结合图5和图6所描述的内容;

S48:DMA实施数据搬运,具体地,DMA基于配置信息中的数据源地址、数据目的地址等将处理后的数据从算核搬出至主机的特定存储介质;

S49:数据处理完成,跳转至步骤S41。

参见图8,为了存储从主机的特定存储介质搬运到算核的待处理的原数据以及处理后的数据,算核可以设计有先进先出FIFO存储器,例如,其可以包括IFIFO(Input FIFO,输入FIFO)和OFIFO(Output FIFO,输出FIFO)。然而,由于FIFO的设计深度是有限的,在实际处理过程中,命令包里要求传输的数据可能大于FIFO深度,从而导致算核无法一次性完成数据包的处理。

针对上述问题,算核的解析单元在对命令包进行解析后,可以基于待处理的数据量进行切包处理,以将数据包分多次DMA传输和数据处理。在此情况下,参见图9,上述步骤S42可以包括:

S421:算核的解析单元解析请求命令包,并判断是否需要进行数据包切包处理,如果是,则进行至步骤S422,否则进行至步骤S423;

S422:算核的解析单元对数据包进行切包处理,以将数据分多次DMA传输,然后进行至步骤S423;

S423:算核向ACM模块发送DMA配置请求。

并且,上述步骤S49进一步包括:

S491:一次数据处理完成后,判断是否存在大数据切包以及是否还有尚未完成的数据包,如果是,则进行至步骤S493,否则进行至步骤S492;

S492:向CPU发送中断,以告知其数据处理请求处理完成,并跳转至步骤S41。

S493:继续向ACM发送DMA配置请求,然后进行至步骤S43。

进一步地,为了减少向CPU发送的中断数量,可以对中断进行合并处理,在此情况下,上述步骤S492可包括:

S4921:判断是否需要向CPU发起中断,如果是,则进行至步骤S4922,否则跳转至步骤S41;

S4922:向CPU发起中断,以告知CPU算核的处理进程,然后跳转至步骤S41。

在上述步骤S4921中,可以基于预先设定的中断合并策略来判断是否需要向CPU发起中断。

在本发明的其他实施方式中,还提供了一种计算机设备,其包括如上所述的片上系统SOC。

在本发明的芯片中,利用硬件模块来实现了DMA配置过程,进而在需要通过算核进行运算处理时,可以实现算核与主机之间的高效数据传输。由于密码芯片大多以堆算核的方式来提升性能,算核越多,这种以硬件模块来处理的方法,优势越大。不光提升了接口吞吐量,释放了CPU的工作负载,同时由于减少大量中断,对软件应用更加友好,也更加可靠。同时,结合信息安全芯片特别是公钥算法的应用,本方案对小数据量的搬运提升效果更加明显,这是因为性能损失主要是在配置DMA这部分上。

本发明创造的优点或有益效果:

1)提高了PCIe DMA的配置效率,增加了接口数据吞吐量;

2)降低了CPU占用率,从而释放CPU性能用于其他业务;

3)整合DMA中断,进一步释放CPU,同时整合策略可以配置,方便软件使用。

需要注意的,虽然本发明的实施方式仅描述了DMA自动配置模块ACM基于算核的配置请求来配置DMA以实施数据搬运,但是可以理解的,本发明提出的DMA自动配置模块ACM也可以应用于其他需要实施DMA数据搬运的情形。

以上所述的仅是本发明的优选实施方式,应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

相关技术
  • DMA自动配置模块和片上系统SOC
  • 一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统
技术分类

06120112669942