通过环回数据通路提供CMB的制作方法

文档序号:18464403发布日期:2019-08-17 02:19阅读:285来源:国知局
通过环回数据通路提供CMB的制作方法

本申请涉及电子设备,具体涉及通过环回数据通路提供CMB。



背景技术:

PCIe协议定义了设备间通信机制。NVMe协议(也参见“NVM Express Revision 1.2”(下称NVMe协议)第3章,2014年11月3日)定义了访问非易失存储设备的机制。PCIe设备提供存储器空间(Memory Space)。耦合PCIe设备的主机可访问PCIe设备的存储器空间。PCIe规范定义了环回(Loopback)状态。在环回状态,从设备(Slave)将从主设备(Master)接收到的数据发送回主设备。

PCIe协议定义的环回,数据被发送到PCIe物理链路再从链路上返回。但是在一些情况下,仅需要使用环回的功能建立PCIe控制器内部的数据通路,而无须将数据发送到物理链路,也无须借助从设备(Slave)的PCIe控制器返回数据。但是现在并没有这种建立内部的数据通路的方法。

NVMe协议定义了CMB(Controller Memory Buffer)为控制器存储器缓存。



技术实现要素:

本申请通过NVMe控制器内部的环回通路实现CMB,降低了延迟。按访问主机存储器的方式访问CMB,存储设备固件在无须改变的情况下使用CMB。

根据本申请的第一方面,提供了根据本申请第一方面的第一PCIe控制器,包括:传输层发送模块、传输层接收模块、外发DMA模块、收取DMA模块与存储器;传输层发送模块与传输层接收模块耦合到存储器;外发DMA模块耦合到传输层发送模块,收取DMA模块耦合到传输层接收模块;外发DMA模块与收取DMA模块耦合到存储器。

根据本申请的第一方面的第一PCIe控制器,提供了根据本申请第一方面的第二PCIe控制器,还包括总线接口,传输层发送模块与传输层接收模块通过总线接口耦合到存储器,外发DMA模块与收取DMA模块通过总线接口耦合到存储器。

根据本申请的第一方面的第一或第二PCIe控制器,提供了根据本申请第一方面的第三PCIe控制器,传输层发送模块与总线接口形成第一环回通路;传输层接收模块与总线接口形成第二环回通路。

根据本申请的第一方面的第一至第三PCIe控制器之一,提供了根据本申请第一方面的第四PCIe控制器,还包括PCIe物理层模块,所述PCIe物理层模块用于处理PCIe物理层协议。

根据本申请的第一方面的第一至第四PCIe控制器之一,提供了根据本申请第一方面的第五PCIe控制器,还包括数据链路层模块,所述数据链路层模块用于处理PCIe数据链路层协议。

根据本申请的第一方面的第一至第五PCIe控制器之一,提供了根据本申请第一方面的第六PCIe控制器,存储器包括控制器存储器缓存。

根据本申请的第一方面的第一至第六PCIe控制器之一,提供了根据本申请第一方面的第七PCIe控制器,外发DMA模块向传输层发送模块发送数据。

根据本申请的第一方面的第七PCIe控制器,提供了根据本申请第一方面的第八PCIe控制器,传输层发送模块将接收的数据发送到控制器存储器缓存。

根据本申请的第一方面的第一至第八PCIe控制器之一,提供了根据本申请第一方面的第九PCIe控制器,收取DMA模块通过传输层接收模块接收数据。

根据本申请的第一方面的第九PCIe控制器,提供了根据本申请第一方面的第十PCIe控制器,传输层接收模块读取控制器存储器缓存中的数据。

根据本申请的第一方面的第一至第十PCIe控制器之一,提供了根据本申请第一方面的第十一PCIe控制器,还包括:CPU子系统,存储器与CPU子系统耦合。

根据本申请的第一方面的第一至第十一PCIe控制器之一,提供了根据本申请第一方面的第十二PCIe控制器,传输层发送模块用于发送TLP。

根据本申请的第一方面的第一至第十二PCIe控制器之一,提供了根据本申请第一方面的第十三PCIe控制器,传输层接收模块用于接收TLP。

根据本申请的第一方面的第一至第十三PCIe控制器之一,提供了根据本申请第一方面的第十四PCIe控制器,CPU子系统向存储器填充DMA命令。

根据本申请的第一方面的第一至第十四PCIe控制器之一,提供了根据本申请第一方面的第十五PCIe控制器,外发DMA模块用于发起DMA传输。

根据本申请的第一方面的第一至第十五PCIe控制器之一,提供了根据本申请第一方面的第十六PCIe控制器,DMA命令指示了位于存储器中的源地址与目的地址。

根据本申请的第一方面的第十六PCIe控制器,提供了根据本申请第一方面的第十七PCIe控制器,目的地址指示的存储空间由控制器存储器缓存提供。

根据本申请的第一方面的第一至第十七PCIe控制器之一,提供了根据本申请第一方面的第十八PCIe控制器,外发DMA模块根据DMA命令的指示,向总线接口获取要传输的数据。

根据本申请的第一方面的第一至第十八PCIe控制器之一,提供了根据本申请第一方面的第十九PCIe控制器,总线接口访问存储器,从存储器读出要传输的数据,并提供给外发DMA模块。

根据本申请的第一方面的第一至第十九PCIe控制器之一,提供了根据本申请第一方面的第二十PCIe控制器,外发DMA模块将获取的数据以及DMA传输的目的地址发送给传输层发送模块。

根据本申请的第一方面的第一至第二十PCIe控制器之一,提供了根据本申请第一方面的第二十一PCIe控制器,传输层发送模块依据接收的目的地址,识别出目的地址被映射到控制器存储器缓存,从而传输层发送模块通过第一环回通路向总线接口发出存储器访问请求。

根据本申请的第一方面的第一至第二十一PCIe控制器之一,提供了根据本申请第一方面的第二十二PCIe控制器,总线接口访问存储器的控制器存储器缓存,将传输层发送模块提供的数据写入控制器存储器缓存中同目的地址对应的位置。

根据本申请的第一方面的第一至第二十二PCIe控制器之一,提供了根据本申请第一方面的第二十三PCIe控制器,总线接口响应于将数据写入存储器,还生成确认消息,并将确认消息提供给传输层发送模块。

根据本申请的第一方面的第一至第二十三PCIe控制器之一,提供了根据本申请第一方面的第二十四PCIe控制器,传输层发送模块将确认消息提供给外发DMA模块。

根据本申请的第一方面的第一至第二十四PCIe控制器之一,提供了根据本申请第一方面的第二十五PCIe控制器,外发DMA模块根据DMA命令执行结果更新存储器中的DMA命令或将DMA命令执行结果写入存储器。

根据本申请的第一方面的第一至第二十五PCIe控制器之一,提供了根据本申请第一方面的第二十六PCIe控制器,收取DMA模块用于接收以DMA方式传输的数据。

根据本申请的第一方面的第一至第二十六PCIe控制器之一,提供了根据本申请第一方面的第二十七PCIe控制器,收取DMA模块根据DMA命令的指示,通过传输层接收模块向模拟远端设备发出数据访问请求。

根据本申请的第一方面的第一至第二十七PCIe控制器之一,提供了根据本申请第一方面的第二十八PCIe控制器,传输层接收模块依据接收的目的地址,识别出目的地址被映射到控制器存储器缓存,从而传输层接收模块通过第二环回通路将控制器存储器缓存访问请求传输给总线接口。

根据本申请的第一方面的第一至第二十八PCIe控制器之一,提供了根据本申请第一方面的第二十九PCIe控制器,总线接口访问存储器提供的控制器存储器缓存,以获取要访问的数据。

根据本申请的第一方面的第一至第二十九PCIe控制器之一,提供了根据本申请第一方面的第三十PCIe控制器,总线接口通过第二环回通路将从CMB读出的数据提供给传输层接收模块。

根据本申请的第一方面的第一至第三十PCIe控制器之一,提供了根据本申请第一方面的第三十一PCIe控制器,传输层接收模块将存储器访问结果返回给收取DMA模块。

根据本申请的第一方面的第一至第三十一PCIe控制器之一,提供了根据本申请第一方面的第三十二PCIe控制器,传输层接收模块还生成存储器写请求提供给总线接口,将访问结果通过总线接口写入存储器。

根据本申请的第一方面的第一至第三十二PCIe控制器之一,提供了根据本申请第一方面的第三十三PCIe控制器,收取DMA模块响应于将数据写入DRAM,还生成DMA命令执行结果。

根据本申请的第一方面的第一至第三十三PCIe控制器之一,提供了根据本申请第一方面的第三十四PCIe控制器,收取DMA模块根据DMA命令执行结果更新存储器中的DMA命令或将DMA命令执行结果写入存储器。

根据本申请的第二方面,提供了根据本申请第二方面的第一PCIe控制器,包括:传输层发送模块、传输层接收模块、存储器访问模块、外发DMA模块、收取DMA模块、加密模块与存储器;传输层发送模块与传输层接收模块分别耦合到存储器;存储器访问模块耦合到传输层发送模块与传输层接收模块;外发DMA模块耦合到传输层发送模块与存储器;收取DMA模块耦合到加密模块,收取DMA模块还耦合到传输层接收模块;加密模块耦合到存储器。

根据本申请的第二方面的第一PCIe控制器,提供了根据本申请第二方面的第二PCIe控制器,还包括解密模块,解密模块耦合到外发DMA模块与存储器。

根据本申请的第二方面的第二PCIe控制器,提供了根据本申请第二方面的第三PCIe控制器,还包括总线接口,传输层发送模块与传输层接收模块通过总线接口耦合到存储器,加密模块与解密模块通过总线接口耦合到存储器,存储器访问模块通过总线接口耦合到存储器。

根据本申请的第二方面的第三PCIe控制器,提供了根据本申请第二方面的第四PCIe控制器,传输层发送模块与总线接口形成第一环回通路;传输层接收模块与总线接口形成第二环回通路。

根据本申请的第二方面的第一至第四PCIe控制器之一,提供了根据本申请第二方面的第五PCIe控制器,还包括第一数据保护模块,第一数据保护模块耦合到外发DMA模块,第一数据保护模块用于对进出外发DMA模块的数据进行校验,识别校验信息与传输数据的一致性,和/或为数据添加校验信息。

根据本申请的第二方面的第一至第五PCIe控制器之一,提供了根据本申请第二方面的第六PCIe控制器,还包括第二数据保护模块,第二数据保护模块耦合到收取DMA模块,第二数据保护模块用于对进出收取DMA模块的数据进行校验,识别校验信息与传输数据的一致性,和/或为数据添加校验信息。

根据本申请的第二方面的第一至第六PCIe控制器之一,提供了根据本申请第二方面的第七PCIe控制器,还包括PCIe物理层模块,所述PCIe物理层模块用于处理PCIe物理层协议。

根据本申请的第二方面的第一至第七PCIe控制器之一,提供了根据本申请第二方面的第八PCIe控制器,还包括数据链路层模块,所述数据链路层模块用于处理PCIe数据链路层协议。

根据本申请的第二方面的第一至第八PCIe控制器之一,提供了根据本申请第二方面的第九PCIe控制器,存储器包括控制器存储器缓存。

根据本申请的第二方面的第一至第九PCIe控制器之一,提供了根据本申请第二方面的第十PCIe控制器,外发DMA模块向传输层发送模块发送数据。

根据本申请的第二方面的第十PCIe控制器,提供了根据本申请第二方面的第十一PCIe控制器,传输层发送模块将接收的数据发送到控制器存储器缓存。

根据本申请的第二方面的第一至第十一PCIe控制器之一,提供了根据本申请第二方面的第十二PCIe控制器,收取DMA模块通过传输层接收模块接收数据。

根据本申请的第二方面的第十二PCIe控制器,提供了根据本申请第二方面的第十三PCIe控制器,传输层接收模块读取控制器存储器缓存中的数据。

根据本申请的第二方面的第一至第十三PCIe控制器之一,提供了根据本申请第二方面的第十四PCIe控制器,还包括:CPU子系统,存储器与CPU子系统耦合。

根据本申请的第二方面的第一至第十四PCIe控制器之一,提供了根据本申请第二方面的第十五PCIe控制器,传输层发送模块用于发送TLP。

根据本申请的第二方面的第一至第十五PCIe控制器之一,提供了根据本申请第二方面的第十六PCIe控制器,传输层接收模块用于接收TLP。

根据本申请的第二方面的第一至第十六PCIe控制器之一,提供了根据本申请第二方面的第十七PCIe控制器,CPU子系统向存储器填充DMA命令。

根据本申请的第二方面的第一至第十七PCIe控制器之一,提供了根据本申请第二方面的第十八PCIe控制器,外发DMA模块用于发起DMA传输。

根据本申请的第二方面的第一至第十八PCIe控制器之一,提供了根据本申请第二方面的第十九PCIe控制器,DMA命令指示了位于存储器中的源地址与目的地址。

根据本申请的第二方面的第十九PCIe控制器,提供了根据本申请第二方面的第二十PCIe控制器,目的地址指示的存储空间由控制器存储器缓存提供。

根据本申请的第二方面的第一至第二十PCIe控制器之一,提供了根据本申请第二方面的第二十一PCIe控制器,外发DMA模块根据DMA命令的指示,通过解密模块获取要传输的数据。

根据本申请的第二方面的第一至第二十一PCIe控制器之一,提供了根据本申请第二方面的第二十二PCIe控制器,总线接口访问存储器,从存储器读出要传输的数据,并提供给解密模块。

根据本申请的第二方面的第一至第二十二PCIe控制器之一,提供了根据本申请第二方面的第二十三PCIe控制器,解密模块将数据解密后,提供给外发DMA模块。

根据本申请的第二方面的第一至第二十三PCIe控制器之一,提供了根据本申请第二方面的第二十四PCIe控制器,外发DMA模块将获取的数据以及DMA传输的目的地址发送给传输层发送模块。

根据本申请的第二方面的第一至第二十四PCIe控制器之一,提供了根据本申请第二方面的第二十五PCIe控制器,传输层发送模块依据接收的目的地址,识别出目的地址被映射到控制器存储器缓存,从而传输层发送模块通过第一环回通路向总线接口发出存储器访问请求。

根据本申请的第二方面的第一至第二十五PCIe控制器之一,提供了根据本申请第二方面的第二十六PCIe控制器,总线接口访问存储器的控制器存储器缓存,将传输层发送模块提供的数据写入控制器存储器缓存中同目的地址对应的位置。

根据本申请的第二方面的第一至第二十六PCIe控制器之一,提供了根据本申请第二方面的第二十七PCIe控制器,总线接口响应于将数据写入存储器,还生成确认消息,并将确认消息提供给传输层发送模块。

根据本申请的第二方面的第一至第二十七PCIe控制器之一,提供了根据本申请第二方面的第二十八PCIe控制器,传输层发送模块将确认消息提供给外发DMA模块。

根据本申请的第二方面的第一至第二十八PCIe控制器之一,提供了根据本申请第二方面的第二十九PCIe控制器,外发DMA模块根据DMA命令执行结果通过解密模块和总线接口更新存储器中的DMA命令或将DMA命令执行结果写入存储器。

根据本申请的第二方面的第一至第二十九PCIe控制器之一,提供了根据本申请第二方面的第三十PCIe控制器,收取DMA模块用于接收以DMA方式传输的数据。

根据本申请的第二方面的第一至第三十PCIe控制器之一,提供了根据本申请第二方面的第三十一PCIe控制器,收取DMA模块根据DMA命令的指示,通过传输层接收模块向模拟远端设备发出数据访问请求。

根据本申请的第二方面的第一至第三十一PCIe控制器之一,提供了根据本申请第二方面的第三十二PCIe控制器,传输层接收模块依据接收的目的地址,识别出目的地址被映射到控制器存储器缓存,从而传输层接收模块通过第二环回通路将控制器存储器缓存访问请求传输给总线接口。

根据本申请的第二方面的第一至第三十二PCIe控制器之一,提供了根据本申请第二方面的第三十三PCIe控制器,总线接口访问存储器提供的控制器存储器缓存,以获取要访问的数据。

根据本申请的第二方面的第一至第三十三PCIe控制器之一,提供了根据本申请第二方面的第三十四PCIe控制器,总线接口通过第二环回通路将从控制器存储器缓存读出的数据提供给传输层接收模块。

根据本申请的第二方面的第一至第三十四PCIe控制器之一,提供了根据本申请第二方面的第三十五PCIe控制器,传输层接收模块将存储器访问结果返回给收取DMA模块。

根据本申请的第二方面的第一至第三十五PCIe控制器之一,提供了根据本申请第二方面的第三十六PCIe控制器,传输层接收模块还生成存储器写请求提供给加密模块和总线接口,将访问结果通过加密模块和总线接口写入存储器。

根据本申请的第二方面的第一至第三十六PCIe控制器之一,提供了根据本申请第二方面的第三十七PCIe控制器,加密模块将数据加密后,再提供给总线接口。

根据本申请的第二方面的第一至第三十七PCIe控制器之一,提供了根据本申请第二方面的第三十八PCIe控制器,收取DMA模块响应于将数据写入DRAM,还生成DMA命令执行结果。

根据本申请的第二方面的第一至第三十八PCIe控制器之一,提供了根据本申请第二方面的第三十九PCIe控制器,收取DMA模块根据DMA命令执行结果更新存储器中的DMA命令或将DMA命令执行结果写入存储器。

根据本申请的第三方面,提供了根据本申请第三方面的第一从控制器存储器缓存读取数据的方法,包括:收取DMA模块根据DMA命令指示的目的地址,通过传输层接收模块发出从目的地址获取数据的数据访问请求;传输层接收模块依据接收的目的地址,识别出目的地址被映射到控制器存储器缓存;传输层接收模块访问存储器的控制器存储器缓存,获取要访问的数据。

根据本申请的第三方面的第一从控制器存储器缓存读取数据的方法,提供了根据本申请第三方面的第二从控制器存储器缓存读取数据的方法,总线接口将从控制器存储器缓存中读出的数据提供给传输层接收模块。

根据本申请的第三方面的第一或第二从控制器存储器缓存读取数据的方法,提供了根据本申请第三方面的第三从控制器存储器缓存读取数据的方法,传输层接收模块将从控制器存储器缓存获取的要访问的数据提供给收取DMA模块。

根据本申请的第三方面的第三从控制器存储器缓存读取数据的方法,提供了根据本申请第三方面的第四从控制器存储器缓存读取数据的方法,收取DMA模块将从传输层接收模块得到的要访问的数据依据DMA命令的源地址写入存储器。

根据本申请的第三方面的一至第四从控制器存储器缓存读取数据的方法之一,提供了根据本申请第三方面的第五从控制器存储器缓存读取数据的方法,收取DMA模块生成存储器写请求提供给总线接口。

根据本申请的第三方面的一至第五从控制器存储器缓存读取数据的方法之一,提供了根据本申请第三方面的第六从控制器存储器缓存读取数据的方法,总线接口将从目的地址获取的数据写入存储器。

根据本申请的第三方面的一至第六从控制器存储器缓存读取数据的方法之一,提供了根据本申请第三方面的第七从控制器存储器缓存读取数据的方法,收取DMA模块响应于将从目的地址获取的数据写入存储器,还生成DMA命令执行结果。

根据本申请的第三方面的一至第七从控制器存储器缓存读取数据的方法之一,提供了根据本申请第三方面的第八从控制器存储器缓存读取数据的方法,收取DMA模块根据DMA命令执行结果更新存储器中的DMA命令,或将DMA命令执行结果写入存储器。

根据本申请的第四方面,提供了根据本申请第四方面的第一向控制器存储器缓存写入数据的方法,包括:外发DMA模块根据DMA命令的指示,从存储器获取要传输的数据;外发DMA模块将获取的数据与目的地址提供给传输层发送模块;传输层发送模块依据接收的目的地址,识别出目的地址被映射到控制器存储器缓存;传输层发送模块访问存储器的控制器存储器缓存,将传输层发送模块提供的数据写入存储器的控制器存储器缓存。

根据本申请的第四方面的第一向控制器存储器缓存写入数据的方法,提供了根据本申请第四方面的第二向控制器存储器缓存写入数据的方法,响应于将传输层发送模块提供的数据写入存储器的控制器存储器缓存,总线接口还生成确认消息,并将确认消息提供给传输层发送模块。

根据本申请的第四方面的第一或第二向控制器存储器缓存写入数据的方法,提供了根据本申请第四方面的第三向控制器存储器缓存写入数据的方法,传输层发送模块将确认消息提供给外发DMA模块。

根据本申请的第四方面的第一至第三向控制器存储器缓存写入数据的方法之一,提供了根据本申请第四方面的第四向控制器存储器缓存写入数据的方法,响应于收到确认消息,外发DMA模块根据DMA命令执行结果更新存储器中的DMA命令,或将DMA命令执行结果写入存储器。

根据本申请的第五方面,提供了根据本申请第五方面的第一处理密钥更新命令的方法,包括:响应于密钥更新命令,从密钥更新命令指示的逻辑地址读出数据,以及在第一地址缓存读出的数据;发起外发DMA传输,将数据从第一地址搬移到第二地址,并在搬移过程中用旧密钥解密读出的数据;发起收取DMA传输,将数据从第二地址搬移到第三地址,并在搬移过程中用新密钥加密读出的数据;将第三地址的用新密钥加密的数据写入逻辑地址。

根据本申请的第六方面,提供了根据本申请第六方面的第一更新数据密钥的方法,包括:接收密钥更新命令;根据密钥更新命令,生成外发DMA命令;使用第一密钥对密文数据解密,得到明文数据;通过环回通路,将明文数据缓存在存储设备中;响应于外发DMA命令处理完成,生成收取DMA命令;将缓存的明文数据使用第二密钥加密;将加密后的数据写入固态存储设备中。

根据本申请的第六方面的第一更新数据密钥的方法,提供了根据本申请第六方面的第二更新数据密钥的方法,密钥更新命令指示了要使用的新密钥,待更新密钥的数据的存储地址。

根据本申请的第六方面的第一或第二更新数据密钥的方法,提供了根据本申请第六方面的第三更新数据密钥的方法,存储地址为固态存储设备的逻辑地址,或者固态存储设备提供给用户的物理地址。

根据本申请的第六方面的第一或第二更新数据密钥的方法,提供了根据本申请第六方面的第四更新数据密钥的方法,根据密钥更新命令指示的存储地址,从固态存储设备的NVM芯片中读出数据,并将数据存储在缓存的第一地址。

根据本申请的第六方面的第四更新数据密钥的方法,提供了根据本申请第六方面的第五更新数据密钥的方法,缓存的第一地址存储的数据是用第一密钥加密的密文数据。

根据本申请的第六方面的第一至第五更新数据密钥的方法之一,提供了根据本申请第六方面的第六更新数据密钥的方法,根据外发DMA命令,将缓存的第一地址的密文数据传输到缓存的第二地址,其中缓存的第二地址存储所述明文数据。

根据本申请的第六方面的第一至第六更新数据密钥的方法之一,提供了根据本申请第六方面的第七更新数据密钥的方法,在根据外发DMA命令将缓存的第一地址的密文数据传输到缓存的第二地址的过程中,用第一密码对密文数据解密得到明文数据。

根据本申请的第六方面的第六或第七更新数据密钥的方法,提供了根据本申请第六方面的第八更新数据密钥的方法,外发DMA模块将通过解密模块解密的明文数据发送给传输层发送模块;传输层发送模块依据DMA传输的目的地址,将明文数据通过传输层发送模块与总线接口之间的第一环回通路提供给缓存。

根据本申请的第六方面的第八更新数据密钥的方法,提供了根据本申请第六方面的第九更新数据密钥的方法,传输层发送模块将明文数据通过第一环回通路发送给总线接口,总线接口将接收的明文数据提供给缓存。

根据本申请的第六方面的第一至第九更新数据密钥的方法之一,提供了根据本申请第六方面的第十更新数据密钥的方法,缓存是PCIe控制器的存储器或耦合到PCIe控制器的DRAM。

根据本申请的第六方面的第一至第十更新数据密钥的方法之一,提供了根据本申请第六方面的第十一更新数据密钥的方法,根据收取DMA命令,将缓存的第二地址的明文数据传输到缓存的第三地址,其中缓存的第三地址存储由第二密钥对明文数据加密后的密文数据。

根据本申请的第六方面的第一至第十一更新数据密钥的方法之一,提供了根据本申请第六方面的第十二更新数据密钥的方法,在根据收取DMA命令将缓存的第二地址的明文数据传输到缓存的第三地址,用第二密码对明文数据加密得到密文数据。

根据本申请的第六方面的第十一或第十二更新数据密钥的方法,提供了根据本申请第六方面的第十三更新数据密钥的方法,收取DMA模块请求获取缓存的第二地址的明文数据;总线接口依据DMA传输的目的地址,将明文数据通过传输层接收模块与总线接口之间的第二环回通路提供给收取DMA模块;收取DMA模块将接收的明文数据发送给加密模块;加密模块用第二密钥对明文数据加密得到密文数据,存储到缓存的第三地址。

根据本申请的第六方面的第一至第十三更新数据密钥的方法之一,提供了根据本申请第六方面的第十四更新数据密钥的方法,指示密钥更新命令处理完成。

根据本申请的第六方面的第一至第十四更新数据密钥的方法之一,提供了根据本申请第六方面的第十五更新数据密钥的方法,用第二密钥加密的密文数据写入缓存的第三地址后,指示密钥更新命令处理完成。

根据本申请的第七方面,提供了根据本申请第七方面的第一处理密钥更新命令的方法,包括:响应于密钥更新命令,从密钥更新命令指示的逻辑地址读出数据,以及在第一地址缓存读出的数据;发起外发DMA传输,将数据从第一地址搬移到第二地址,并在搬移过程中用旧密钥解密读出的数据得到明文数据,以及用新密钥加密明文数据得到密文数据;将第二地址的密文数据写入逻辑地址。

根据本申请的第七方面的第一处理密钥更新命令的方法,提供了根据本申请第七方面的第二处理密钥更新命令的方法,外发DMA模块将明文数据发送给传输层发送模块;传输层发送模块依据DMA传输的目的地址,将明文数据通过传输层发送模块与总线接口之间的第一环回通路发送给总线接口;总线接口将通过第一环回通路接收的明文数据提供给存储器访问模块;存储器访问模块将密文数据存储到缓存的第二地址。

根据本申请的第八方面,提供了根据本申请第八方面的第一处理密钥更新命令的方法,包括响应于密钥更新命令,从密钥更新命令指示的逻辑地址读出数据,以及在第一地址缓存读出的数据;发起收取DMA传输,将数据从第一地址搬移到第二地址,并在搬移过程中用旧密钥解密读出的数据得到明文数据,以及用新密钥加密明文数据得到密文数据;将第二地址的密文数据写入逻辑地址。

根据本申请的第八方面的第一处理密钥更新命令的方法,提供了根据本申请第八方面的第二处理密钥更新命令的方法,收取DMA模块通过传输层发送模块请求获取缓存的第一地址的密文数据;传输层发送模块依据DMA传输的源地址,将请求通过传输层发送模块与总线接口之间的第一环回通路发送给总线接口;总线接口将请求提供给存储器访问模块;存储器访问模块从缓存的第一地址获取密文数据,将用第一密钥解密后的明文数据提供给传输层发送模块;传输层发送模块依据DMA传输的目的地址,将请求通过第一环回通路发送给总线接口;总线接口将接收的明文数据通过加密模块提供给收取DMA模块;加密模块用第二密钥对明文数据加密得到密文数据,并存储到缓存的第三地址。

根据本申请的第九方面,提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述程序代码使所述存储设备执行根据本申请第三方面、第四方面、第五方面、第六方面、第七方面或第八方面的方法之一。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1展示了根据本申请实施例的PCIe控制器的框图;

图2展示了根据本申请实施例的传输层发送模块地址映射表;

图3是根据本申请实施例通过环回通路“发送”数据的示意图;

图4是根据本申请实施例通过环回通路“接收”数据的示意图;

图5展示了根据本申请又一实施例的PCIe控制器的框图;

图6是根据本申请又一实施例通过环回通路“发送”数据的示意图;

图7是根据本申请又一实施例通过环回通路“接收”数据的示意图;

图8是根据本申请的实施例更新数据密钥的流程图。

具体实施方式

下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1展示了根据本申请实施例的PCIe控制器的框图。如图1所示的PCIe控制器包括PCIe PHY模块110、数据链路层模块120、传输层发送模块130、传输层接收模块132、外发DMA模块134、收取DMA模块136、总线接口138、存储器140以及CPU子系统160。

PCIe PHY模块110用于处理PCIe底层协议(如物理层)。PCIe PHY模块110耦合主机(或其他PCIe设备,包括端点(Endpoint)、根联合体(Root Complex)与交换机(Switch))与数据链路层模块120。数据链路层模块120用于处理PCIe数据链路层协议。数据链路层模块120耦合到传输层发送模块130与传输层接收模块132。传输层发送模块130用于通过数据链路层模块120向主机发送TLP,传输层接收模块132用于从数据链路层模块120接收TLP。

PCIe控制器还包括外发DMA模块134、收取DMA模块136和总线接口138。传输层发送模块130通过总线接口138耦合到存储器140。传输层接收模块132通过总线接口138耦合到存储器140。从而传输层发送模块130/传输层接收模块132都能够通过总线接口138访问存储器140。外发DMA模块134与收取DMA模块136也各自通过总线接口138耦合到存储器140,并能够访问存储器140。

存储器140的部分存储空间被用作CMB。在外发DMA模块134/收取DMA模块136看来,CMB是由主机提供的存储器地址空间。外发DMA模块134通过传输层发送模块130向CMB存储空间写入数据,而收取DMA模块136通过传输层接收模块132读取CMB存储空间的数据。

外发DMA模块134用于处理从PCIe控制器到主机(或PCIe设备)的DMA传输。外发DMA模块134耦合到总线接口138,并通过总线接口138耦合存储器140或DRAM(未示出),将存储器140或DRAM中的数据以DMA方式传输给主机。可选地,CPU子系统160向存储器140填充DMA命令。外发DMA模块136从存储器140获取DMA命令,并根据DMA命令,将存储器140或DRAM中的指定数据传输到主机的指定地址。外发DMA模块136耦合到传输层发送模块130,通过传输层发送模块130将数据发送给主机。

收取DMA模块136用于处理从主机(或PCIe设备)到PCIe控制器的DMA传输。收取DMA模块136耦合到总线接口138,并通过总线接口138耦合存储器140或DRAM(未示出)。CPU子系统160将DMA命令填入存储器140。收取DMA模块136从存储器140获取DMA命令,并根据DMA命令从主机(或PCIe设备)的指定地址获取数据,并将数据写入存储器140或DRAM。收取DMA模块136还耦合到传输层发送模块130(图2中未示出),通过传输层发送模块130向主机发送发起DMA传输的数据访问请求,收取DMA模块136从传输层接收模块132接收主机提供的数据。

可选地,DRAM是PCIe控制器芯片外部的存储器,或者DRAM同PCIe控制器集成在相同芯片内。

依然可选地,提供NVRAM作为CMB。例如,采用相变存储器、MRAM(磁阻存储器)、电阻存储器(RRAM)或铁电存储器(FeRAM)等做为CMB。NVRAM也耦合到总线接口138,通过总线接口138访问NVRAM。

外发DMA模块236也被称为“Engress DMA”或“Scatter DMA”。收取DMA模块238也被称为“Ingress DMA”或“Gather DMA”。

传输层发送模块130通过总线接口138耦合到存储器140。传输层接收模块132通过总线接口138耦合到存储器140。从而传输层发送模块130/传输层接收模块132都能够通过总线接口138访问存储器140。外发DMA模块134与收取DMA模块136也各自通过总线接口138耦合到存储器140,并能够访问存储器140。

存储器140的部分存储空间被用作CMB。在外发DMA模块134/收取DMA模块136看来,CMB是由主机提供的存储器地址空间。外发DMA模块134通过传输层发送模块130向CMB存储空间写入数据,而收取DMA模块136通过传输层接收模块132读取CMB存储空间的数据。

传输层发送模块130,将部分数据(例如,具有指定标识的数据,和/或指定地址空间访问请求、和/或与指定地址空间关联的数据)发送给总线接口138,以访问存储器140,从而形成环回通路。类似地,传输层接收模块132,将部分访问主机存储器空间的请求发送给总线接口138,以访问存储器140,从而形成环回通路。

图2展示了根据本申请实施例的传输层发送模块地址映射表。如图2所示,传输层发送模块130维护如图2所示的地址映射表。通过地址映射表,将原本都指示目的端(主机或PCIe设备)地址空间的部分,映射到CMB。图2中,从地址270到地址272的范围被映射到主机(或PCIe设备),传输层发送模块130将访问地址270到地址272的TLP或访问请求通过数据链路层模块120发送给主机(或PCIe设备)。图2中,从地址272到地址274的范围被映射给CMB,传输层发送模块130将访问地址272到地址274的TLP或访问请求通过总线接口138发送给存储器140。

作为举例,仅记录地址272,将访问的地址小于地址272的TLP或访问请求发送给主机(或PCIe设备),而将访问的地址大于地址272的TLP或访问请求发送给总线接口138。

图3是根据本申请实施例通过环回通路“发送”数据的示意图。图3的实施例展示了将存储器140中的数据“发送”到CMB的过程。

为发送数据,CPU子系统160生成DMA命令,并填入存储器140。外发DMA模块134及时发现并获取待处理的DMA命令。DMA命令指示了位于存储器140中的源地址,与目的地址。作为举例,在外发DMA模块134看来,目的地址是主机(或远端PCIe设备)的地址。而实际上,目的地址由CMB提供。

外发DMA模块134根据DMA命令的指示,从向总线接口138获取要传输的数据(由①所指示)。

总线接口138访问存储器140,从存储器140读出要传输的数据,并提供给外发DMA模块134(由②所指示)。

外发DMA模块134将获取的数据以及DMA传输的目的地址发送给传输层发送模块130(由③所指示)。传输层发送模块130依据接收的目的地址,识别出目的地址被映射到CMB,从而传输层发送模块130通过环回通路向总线接口138发出存储器访问请求(由④所指示)。

总线接口138访问存储器140提供的CMB,将传输层发送模块130提供的数据写入CMB中同目的地址对应的位置(由⑤所指示)。

从而完成了将存储器140中的数据“发送”到位于存储器140的CMB的目的地址的过程。

可选地,总线接口138响应于将数据写入存储器140,还生成确认消息,并将确认消息提供给传输层发送模块130,以向DMA传输的发起方提供DMA传输结果。传输层发送模块130将确认消息提供给外发DMA模块134。外发DMA模块134根据DMA命令执行结果更新存储器140中的DMA命令,或将DMA命令执行结果写入存储器140,以向CPU子系统160指示DMA命令执行完成。

根据图3的实施例中,通过环回通路“发送”数据的过程未使用收取DMA模块136与传输层接收模块132,将其用阴影标识。

图4是根据本申请实施例通过环回通路“接收”数据的示意图。图4的实施例展示了从存储器140提供的CMB“接收”数据的过程。

图4的实施例展示了在收取DMA模块136看来,从远端设备(例如,主机或PCIe设备)的存储空间“接收”数据,并将接收的数据存储在存储器140中的过程。虽然所接收的数据看起来来自远端设备,但数据实际上存储在CMB中。

为接收数据,CPU子系统160生成DMA命令,并填入存储器140。收取DMA模块136及时发现并获取待处理的DMA命令。DMA命令指示了位于DRAM中的目的地址,与位于远端的源地址。作为举例,在收取DMA模块136看来,源地址是(看起来的)远端设备(例如,看起来是主机或远端PCIe设备)中的地址。

收取DMA模块136根据DMA命令的指示,通过传输层接收模块132向(看起来的)远端设备发出数据访问请求(由①所指示)。

传输层接收模块132依据接收的目的地址,识别出目的地址被映射到CMB,从而传输层接收模块132通过环回通路将CMB访问请求传输给总线接口138(由②所指示)。

总线接口138访问存储器140提供的CMB,以获取要访问的数据(由③所指示)。总线接口138通过环回通路将从CMB读出的数据提供给传输层接收模块132,作为对其存储器(CMB)访问请求的响应(由④所指示)。

传输层接收模块132将存储器访问结果返回给收取DMA模块136(由⑤所指示),以模拟远端设备提供的访问结果。收取DMA模块136还生成存储器写请求提供给总线接口138(由⑥所指示),以将模拟的远端设备提供的访问结果(即从CMB提供的数据)通过总线接口138写入存储器140(由⑦所指示)。

从而完成了从存储器140提供的CMB获取数据并存储到位于DRAM的目的存储空间的过程。

可选地,收取DMA模块136响应于将数据写入DRAM,还生成DMA命令执行结果。收取DMA模块136根据DMA命令执行结果更新存储器140中的DMA命令,或将DMA命令执行结果写入存储器140,以向CPU子系统160指示DMA命令执行完成。

根据图4的实施例中,通过环回通路“接收”数据的过程未使用外发DMA模块134与传输层发送模块130,将其用阴影标识。

图5展示了根据本申请又一实施例的PCIe控制器的框图。如图5所示的PCIe控制器,包括PCIe PHY模块510、数据链路层模块520、传输层发送模块530、传输层接收模块532、外发DMA模块534、收取DMA模块536、总线接口538、存储器540以及CPU子系统560。在根据图1所展示的PCIe控制器的基础上,还包括存储器访问模块550、数据保护模块552、数据保护模块554、AES解密模块556以及AES加密模块558。

存储器访问模块550用于处理访问PCIe设备存储器空间的TLP。存储器访问模块550同传输层发送模块530相耦合,通过传输层发送模块530向主机(或PCIe设备)提供存储器访问结果。传输层发送模块530,将部分数据(例如,具有指定标识的数据,和/或指定地址空间访问请求、和/或与指定地址空间关联的数据)发送给总线接口538,以访问存储器540,从而形成环回通路。由于根据本申请实施例提供了在传输层发送模块530与总线接口538之间的环回通路,存储器访问模块550发送给传输层发送模块530的部分存储器访问结果,被通过传输层发送模块530与总线接口538之间的环回通路转发给总线接口538,并通过总线接口538写入存储器540。存储器访问模块550还同传输层接收模块532相耦合。类似地,传输层接收模块532,将部分访问主机存储器空间的请求发送给总线接口538,以访问存储器540,从而形成环回通路。总线接口538从存储器540获取要访问的数据,总线接口538通过传输层接收模块532与总线接口538之间的环回通路发送给传输层接收模块532,传输层接收模块532将数据发送给收取DMA模块536。另外,主机(或PCIe设备)发出的访问PCIe设备存储器空间的TLP被传输层接收模块532发送给存储器访问模块550,存储器访问模块550根据TLP生成存储器访问结果(通过访问存储器540或由CPU子系统560处理)。

外发DMA模块534耦合到数据保护模块552,数据保护模块552用于对进出外发DMA模块534的数据进行校验,识别校验信息与传输数据的一致性,和/或为数据添加校验信息。收取DMA模块536耦合到数据保护模块554,数据保护模块554用于对进出收取DMA模块536的数据进行校验,识别校验信息与传输数据的一致性,和/或为数据添加校验信息。

外发DMA模块534通过AES解密模块556耦合到总线接口538。从总线接口538获取的数据,可选地,经AES解密模块556解密后,提供给外发DMA模块534。收取DMA模块536通过AES加密模块558耦合到总线接口538,可选地,收取DMA模块536要写入的存储器540的数据,经AES加密模块558加密后,再提供给总线接口538。

图6是根据本申请又一实施例通过环回通路“发送”数据的示意图。

如图6所示,为发送数据,CPU子系统560生成DMA命令,并填入存储器540。外发DMA模块534及时发现并获取待处理的DMA命令。DMA命令指示了位于存储器540中的源地址,与目的地址。作为举例,在外发DMA模块534看来,目的地址是主机(或远端PCIe设备)的地址。而实际上,目的地址由CMB提供。

外发DMA模块534根据DMA命令的指示,从总线接口538获取要传输的数据(由①所指示)。

总线接口538获取要传输的数据,并提供给AES解密模块556(由②所指示),AES解密模块556对数据解密,并将解密后的数据提供给外发DMA模块534。

外发DMA模块534将获取的数据以及DMA传输的目的地址发送给传输层发送模块530(由③所指示)。可选地,数据保护模块552对进出外发DMA模块534的数据进行校验,识别校验信息与传输数据的一致性,和/或为数据添加校验信息。

传输层发送模块530依据接收的目的地址,识别出目的地址被映射到CMB,从而传输层发送模块530通过环回通路向总线接口538发出存储器访问请求(由④所指示)。

总线接口538访问存储器540提供的CMB,将传输层发送模块530提供的数据写入CMB中同目的地址对应的位置(由⑤所指示)。

从而完成了将存储器540中的数据“发送”到位于存储器540的CMB的目的地址的过程。

可选地,总线接口538响应于将数据写入存储器540,还生成确认消息,并将确认消息提供给传输层发送模块530,以向DMA传输的发起方提供DMA传输结果。传输层发送模块530将确认消息提供给外发DMA模块534。外发DMA模块534根据DMA命令执行结果更新存储器540中的DMA命令,或将DMA命令执行结果写入存储器540,以向CPU子系统560指示DMA命令执行完成。

根据图6的实施例中,通过环回通路“发送”数据的过程未使用收取DMA模块536、数据保护模块554与传输层接收模块532,将其用阴影标识。

图7是根据本申请又一实施例通过环回通路“接收”数据的示意图。

如图7所示,图7的实施例展示了在收取DMA模块536看来,从远端设备(例如,主机或PCIe设备)的存储空间“接收”数据,并将接收的数据存储在存储器540中的过程。虽然所接收的数据看起来来自远端设备,但数据实际上存储在CMB中。

为接收数据,CPU子系统560生成DMA命令,并填入存储器540。收取DMA模块536及时发现并获取待处理的DMA命令。DMA命令指示了位于存储器140中的目的地址,与位于远端的源地址。作为举例,在收取DMA模块536看来,源地址是(看起来的)远端设备(例如,看起来是主机或远端PCIe设备)中的地址。

收取DMA模块536根据DMA命令的指示,通过传输层接收模块532向(看起来的)远端设备发出数据访问请求(由①所指示)。收取DMA模块536的数据保护模块554用于对进出收取DMA模块536的数据进行校验,识别校验信息与传输数据的一致性,和/或为数据添加校验信息。

传输层接收模块532依据接收的目的地址,识别出目的地址被映射到CMB,从而传输层接收模块532通过与总线接口538之间的环回通路将CMB访问请求传输给总线接口538(由②所指示)。

总线接口538访问存储器540提供的CMB,以获取要访问的数据(由③所指示)。总线接口538通过环回通路将从CMB读出的数据提供给传输层接收模块532,作为对其存储器(CMB)访问请求的响应(由④所指示)。

传输层接收模块532将存储器访问结果返回给收取DMA模块536(由⑤所指示),以模拟远端设备提供的访问结果。收取DMA模块536将存储器访问结果写入存储器540。收取DMA模块536写入存储器540的数据通过AES加密模块558与总线接口538传输给存储器540(由⑥所指示)。AES加密模块558对写请求指示的数据加密,并将存储器写请求提供给总线接口538,以将模拟的远端设备提供的访问结果(即从CMB提供的数据)通过总线接口538写入存储器540(由⑦所指示)。

从而完成了从存储器540提供的CMB获取数据并存储到位于DRAM的目的存储空间的过程。

可选地,收取DMA模块536响应于将数据写入DRAM,还生成DMA命令执行结果。收取DMA模块536根据DMA命令执行结果更新存储器540中的DMA命令,或将DMA命令执行结果写入存储器540,以向CPU子系统560指示DMA命令执行完成。

根据图7的实施例中,通过环回通路“接收”数据的过程未使用传输层发送模块530和外发DMA模块534,将其用阴影标识。

根据本申请的实施例,固态存储设备提供在固态存储设备内部更新密钥功能。作为举例,固态存储设备支持密钥更新命令。主机向固态存储设备发送密钥更新命令,密钥更新命令指示了要使用的新密钥,以及待更新密钥的数据的存储地址。存储地址是例如固态存储设备的逻辑地址,或者固态存储设备提供给用户的物理地址。

作为举例,CPU子系统560识别密钥更新命令,作为对密钥更新命令的响应,CPU子系统560控制固态存储设备从存储地址读出的数据,读出的数据是用旧密钥加密的数据。将读出的数据缓存在例如CMB中。接下来,CPU子系统560生成例如外发DMA命令,以通过本地环回通路将CMB中的加密的数据发送给例如存储器540,并在从CMB到存储器540的数据传输过程中,对加密数据用旧密钥进行解密,并用新密钥加密。以及CPU子系统560还将存储器540中的用新密钥加密的数据写入固态存储设备的指定地址的NVM芯片。

作为另一个例子,作为对密钥更新命令的响应,CPU子系统560控制固态存储设备从存储地址读出的数据,读出的数据是用旧密钥加密的数据。将读出的数据缓存在例如存储器540中。CPU子系统560生成例如收取DMA命令,以通过本地环回通路将存储器540中的加密的数据发送给例如CMB,并在从存储器540到CMB的数据传输过程中,对加密数据用旧密钥进行解密,并用新密钥加密。以及CPU子系统560还将CMB中的用新密钥加密的数据写入固态存储设备的指定地址的NVM芯片。

图8是根据本申请的实施例更新密钥的流程图。

如图8所示,固态存储设备接收主机发出的密钥更新命令(850)。

CPU子系统560(也参看图5)识别并处理密钥更新命令。CPU子系统560根据密钥更新命令指示的存储地址,从固态存储设备的NVM芯片中读出数据,并将数据缓存在存储器540或CMB中。作为举例,数据缓存在CMB中。此时,CMB中缓存的数据是用旧密钥加密后的密文数据。接下来,CPU子系统560根据密钥更新命令,生成外发DMA命令(C1)(855),以模拟将密文数据发送到远端设备(例如,主机)的过程,并在数据传输过程中,用旧密钥解密密文数据,得到加密前的明文数据。DMA命令的源地址是密文数据在CMB中的地址,而目的地址是模拟的远端设备地址。可选地,CPU子系统560将DMA命令添加到存储器540。

外发DMA模块534从存储器540获得DMA命令,根据DMA命令从CMB中获取密文数据,AES解密模块556对密文数据解密,得到明文数据(860)。

外发DMA模块534指示传输层发送模块530将明文数据发送给DMA命令的目的地址(模拟的远端设备地址)。

根据DMA命令的目的地址,传输层发送模块530通过环回通路,经总线接口538,将明文数据写入存储器540(870)。

外发DMA模块534向CPU子系统560指示DMA命令(C1)处理完成。

接下来,CPU子系统560响应于DMA命令(C1)处理完成,生成又一DMA命令(C2)(875),以模拟将明文数据从远端设备取回到CMB,并在数据传输过程中,用密钥更新命令指示的新密钥对明文数据加密(880)。DMA命令(C2)的源地址是模拟的远端设备地址(将被传输层发送模块530映射到存储器540中的明文数据),目的地址是CMB中的地址。可选地,CPU子系统560将DMA命令(C2)添加到存储器540。

收取DMA模块536从存储器540获得DMA命令(C2),根据DMA命令(C2),通过传输层接收模块532向模拟的远端设备地址发出存储器访问请求。传输层接收模块532将根据模拟的远端设备地址,通过总线接口538从存储器540获得明文数据,传输层接收模块532将明文数据发送给收取DMA模块536。收取DMA模块536将明文数据写入CMB。AES加密模块558对明文数据用密钥更新命令指示的新密钥对明文数据加密,并将密文数据存储在CMB中(890)。

接下来,收取DMA模块536向CPU子系统560指示DMA命令(C2)处理完成。继而,CPU子系统560根据密钥更新命令指示的存储地址,将CMB中经新密钥加密的数据写入固态存储设备的NVM芯片。CPU子系统560还向主机指示密钥更新命令处理完成。可选地,将用新密钥加密的密文数据写入CMB后,CPU子系统560即向主机指示密钥更新命令处理完成,以降低用户体验到的密钥更新命令的处理延迟。

本申请实施例还提供一种包含程序代码的程序,当被载入CPU并在CPU中执行时,程序使CPU执行上面提供的根据本申请实施例的方法之一。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1