CN111797046B - PCIe控制器及其数据传输方法 - Google Patents
PCIe控制器及其数据传输方法 Download PDFInfo
- Publication number
- CN111797046B CN111797046B CN202010693793.5A CN202010693793A CN111797046B CN 111797046 B CN111797046 B CN 111797046B CN 202010693793 A CN202010693793 A CN 202010693793A CN 111797046 B CN111797046 B CN 111797046B
- Authority
- CN
- China
- Prior art keywords
- module
- data
- dma
- memory
- present application
- 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.)
- Active
Links
Images
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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
- G06F13/282—Cycle stealing DMA
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
Abstract
本申请公开了PCIe控制器及数据传输方法,涉及存储控制器领域,实现了在控制器内部建立数据通路的方法。本申请的控制器,包括:传输层发送模块、传输层接收模块、CPU子系统、存储器访问模块与存储器;传输层发送模块包括第一环回控制模块,传输层接收模块包括第二环回控制模块,第一环回控制模块耦合到第二环回控制模块;存储器访问模块耦合到传输层发送模块与传输层接收模块,存储器访问模块还耦合到存储器;存储器与CPU子系统耦合。
Description
技术领域
本申请涉及电子设备,具体涉及PCIe控制器及其数据传输方法。
背景技术
PCIe协议定义了设备间通信机制。NVMe协议(也参见“NVM Express Revision1.2”(下称NVMe协议)第3章,2014年11月3日)定义了访问非易失存储设备的机制。PCIe设备提供存储器空间(MemorySpace)。耦合PCIe设备的主机可访问PCIe设备的存储器空间。PCIe规范定义了环回(Loopback)状态。在环回状态,从设备(Slave)将从主设备(Master)接收到的数据发送回主设备。
PCIe协议定义的环回,数据被发送到PCIe物理链路再从链路上返回。但是在一些情况下,仅需要使用环回的功能建立PCIe控制器内部的数据通路,而无须将数据发送到物理链路,也无须借助从设备(Slave)的PCIe控制器返回数据。但是现在并没有这种建立内部的数据通路的方法。
发明内容
本申请的目的在于提供一种支持内部环回的PCIe控制器,以及使用所提供的PCIe控制器实现内部环回数据通路,还利用内部环回数据通路更新数据密钥。
根据本申请的第一方面,提供了根据本申请第一方面的第一PCIe控制器,包括:传输层发送模块、传输层接收模块、存储器访问模块与存储器;传输层发送模块包括第一环回控制模块,传输层接收模块包括第二环回控制模块,第一环回控制模块耦合到第二环回控制模块;存储器访问模块耦合到传输层发送模块与传输层接收模块,存储器访问模块还耦合到存储器。
根据本申请的第一方面的第一PCIe控制器,提供了根据本申请第一方面的第二PCIe控制器,还包括PCIe物理层模块,所述PCIe物理层模块用于处理PCIe物理层协议。
根据本申请的第一方面的第一或第二PCIe控制器,提供了根据本申请第一方面的第三PCIe控制器,还包括数据链路层模块,所述数据链路层模块用于处理PCIe数据链路层协议。
根据本申请的第一方面的第一至第三PCIe控制器之一,提供了根据本申请第一方面的第四PCIe控制器,还包括外发DMA模块与收取DMA模块,外发DMA模块耦合到存储器与传输层发送模块;收取DMA模块耦合到存储器传输层接收模块。
根据本申请的第一方面的第一至第四PCIe控制器之一,提供了根据本申请第一方面的第五PCIe控制器,还包括CPU子系统,存储器与CPU子系统耦合。
根据本申请的第一方面的第一至第五PCIe控制器之一,提供了根据本申请第一方面的第六PCIe控制器,传输层发送模块用于发送TLP。
根据本申请的第一方面的第一至第六PCIe控制器之一,提供了根据本申请第一方面的第七PCIe控制器,传输层接收模块用于接收TLP。
根据本申请的第一方面的第一至第七PCIe控制器之一,提供了根据本申请第一方面的第八PCIe控制器,第一环回控制模块将部分TLP发送给第二环回控制模块。
根据本申请的第一方面的第八PCIe控制器,提供了根据本申请第一方面的第九PCIe控制器,第一环回控制模块将具有指定标识的TLP,和/或访问指定地址空间的TLP发送给第二环回控制模块。
根据本申请的第一方面的第一至第七PCIe控制器之一,提供了根据本申请第一方面的第十PCIe控制器,第一环回控制模块将部分数据发送给第二环回控制模块。
根据本申请的第一方面的第十PCIe控制器,提供了根据本申请第一方面的第十一PCIe控制器,第一环回控制模块将具有指定标识的数据,和/或指定地址空间访问请求、和/或与指定地址空间关联的数据发送给第二环回控制模块。
根据本申请的第一方面的第八或第九PCIe控制器,提供了根据本申请第一方面的第十二PCIe控制器,第二环回控制模块将从第一环回控制模块接收的TLP发送给存储器访问模块或收取DMA模块。
根据本申请的第一方面的第十或第十一PCIe控制器,提供了根据本申请第一方面的第十三PCIe控制器,第二环回控制模块将从第一环回控制模块接收的数据发送给存储器访问模块或收取DMA模块。
根据本申请的第一方面的第一至第十三PCIe控制器之一,提供了根据本申请第一方面的第十四PCIe控制器,存储器访问模块用于处理访问PCIe设备存储器空间的TLP。
根据本申请的第一方面的第一至第十四PCIe控制器之一,提供了根据本申请第一方面的第十五PCIe控制器,存储器访问模块通过传输层发送模块提供存储器访问结果。
根据本申请的第一方面的第一至第十五PCIe控制器之一,提供了根据本申请第一方面的第十六PCIe控制器,存储器访问模块发送给传输层发送模块的部分存储器访问结果,被第一环回控制模块转发给传输层接收模块。
根据本申请的第一方面的第一至第十六PCIe控制器之一,提供了根据本申请第一方面的第十七PCIe控制器,传输层接收模块接收访问PCIe设备的存储器空间的TLP,并发送给存储器访问模块,存储器访问模块根据TLP访问存储器。
根据本申请的第一方面的第一至第十七PCIe控制器之一,提供了根据本申请第一方面的第十八PCIe控制器,CPU子系统向存储器填充DMA命令。
根据本申请的第一方面的第一至第十八PCIe控制器之一,提供了根据本申请第一方面的第十九PCIe控制器,外发DMA模块用于发起DMA传输。
根据本申请的第一方面的第一至第十九PCIe控制器之一,提供了根据本申请第一方面的第二十PCIe控制器,外发DMA模块从存储器获取DMA命令,并根据DMA命令,将存储器或耦合到PCIe控制器的DRAM中的指定数据传输到指定地址。
根据本申请的第一方面的第一至第二十PCIe控制器之一,提供了根据本申请第一方面的第二十一PCIe控制器,外发DMA模块通过传输层发送模块发送数据。
根据本申请的第一方面的第一至第十八PCIe控制器之一,提供了根据本申请第一方面的第二十二PCIe控制器,收取DMA模块用于接收以DMA方式传输的数据。
根据本申请的第一方面的第二十二PCIe控制器,提供了根据本申请第一方面的第二十三PCIe控制器,收取DMA模块从存储器获取DMA命令,根据DMA命令从主机或PCIe设备的指定地址获取数据,并将数据写入存储器或DRAM。
根据本申请的第二方面,提供了根据本申请第二方面的第一发送数据的方法,包括:CPU子系统生成DMA命令,并提供给外发DMA模块;外发DMA模块根据DMA命令的指示,从DRAM获取要传输的数据;外发DMA模块将从DRAM中获取的数据以及DMA传输的目的地址发送给传输层发送模块;传输层发送模块通过第一环回控制模块将数据以及目的地址发送给传输层接收模块的第二环回控制模块;传输层接收模块依据收到的数据以及目的地址,通过存储器访问模块将数据写入存储器。
根据本申请的第二方面的第一发送数据的方法,提供了根据本申请第二方面的第二发送数据的方法,DMA命令指示了位于DRAM中的源地址与目的地址。
根据本申请的第二方面的第一或第二发送数据的方法,提供了根据本申请第二方面的第三发送数据的方法,存储器访问模块响应于将数据写入存储器,还生成确认消息,并将确认消息提供给传输层发送模块。
根据本申请的第二方面的第三发送数据的方法,提供了根据本申请第二方面的第四发送数据的方法,传输层发送模块依据确认消息的目的地址,将确认消息使用第一环回控制模块发送给传输层接收模块的第二环回控制模块。
根据本申请的第二方面的第三或第四发送数据的方法,提供了根据本申请第二方面的第五发送数据的方法,响应于接收确认消息,传输层接收模块将确认消息提供给外发DMA模块。
根据本申请的第二方面的第一至第五发送数据的方法之一,提供了根据本申请第二方面的第六发送数据的方法,外发DMA模块根据DMA命令执行结果更新存储器中的DMA命令。
根据本申请的第二方面的第三至第六发送数据的方法之一,提供了根据本申请第二方面的第七发送数据的方法,传输层发送模块将确认消息封装为TLP,使用第一环回控制模块发送给传输层接收模块的第二环回控制模块,传输层接收模块从第二环回控制模块接收TLP,并解析TLP识别出其为确认消息。
根据本申请的第二方面的第一至第七发送数据的方法之一,提供了根据本申请第二方面的第八发送数据的方法,传输层发送模块的第一环回控制模块与传输层接收模块的第二环回控制模块之间依据自定义的协议传输数据和/或地址。
根据本申请的第三方面,提供了根据本申请第三方面的第一获取数据的方法,包括:CPU子系统生成DMA命令,并提供给收取DMA模块;收取DMA模块根据DMA命令的指示,通过传输层发送模块发出数据访问请求;传输层发送模块使用第一环回控制模块将数据访问请求发送给传输层接收模块的第二环回控制模块;传输层接收模块依据收到的数据访问请求,通过存储器访问模块访问存储器,以获取要访问的数据;传输层发送模块使用第一环回控制模块将存储器访问结果发送给传输层接收模块的第二环回控制模块;传输层接收模块接收存储器访问结果,并将存储器访问结果提供给收取DMA模块;收取DMA模块将存储器访问结果写入存储器或DRAM。
根据本申请的第三方面的第一获取数据的方法,提供了根据本申请第三方面的第二获取数据的方法,DMA命令指示了位于DRAM中的源地址与目的地址。
根据本申请的第三方面的第一或第二获取数据的方法,提供了根据本申请第三方面的第三获取数据的方法,收取DMA模块响应于将数据写入存储器或DRAM,还生成DMA命令执行结果;并根据DMA命令执行结果更新存储器中的DMA命令。
根据本申请的第三方面的第一或第二获取数据的方法,提供了根据本申请第三方面的第四获取数据的方法,收取DMA模块响应于将数据写入DRAM,还生成DMA命令执行结果;并将DMA命令执行结果写入存储器,以向CPU子系统指示DMA命令执行完成。
根据本申请的第三方面的第一至第四获取数据的方法之一,提供了根据本申请第三方面的第五获取数据的方法,传输层发送模块依据接收的数据访问请求的目的地址,识别出目的地址被映射到传输层接收模块。
根据本申请的第三方面的第一至第五获取数据的方法之一,提供了根据本申请第三方面的第六获取数据的方法,传输层发送模块将存储器访问结果封装为TLP,使用第一环回控制模块发送给传输层接收模块的第二环回控制模块,而传输层接收模块从第二环回控制模块接收TLP,并解析TLP识别出其为存储器访问结果。
根据本申请的第三方面的第一至第六获取数据的方法之一,提供了根据本申请第三方面的第七获取数据的方法,传输层发送模块的第一环回控制模块与传输层接收模块的第二环回控制模块之间依据自定义的协议传输数据和/或地址。
根据本申请的第三方面的第一至第七获取数据的方法之一,提供了根据本申请第三方面的第八获取数据的方法,存储器访问模块从存储器获取存储器访问结果,依据源地址识别出应将存储器访问结果提交给传输层接收模块。
根据本申请的第四方面,提供了根据本申请第四方面的第一PCIe控制器,包括:传输层发送模块、传输层接收模块、存储器访问模块、外发DMA模块、收取DMA模块、加密模块、解密模块与存储器;传输层发送模块包括第一环回控制模块,传输层接收模块包括第二环回控制模块,第一环回控制模块耦合到第二环回控制模块;存储器访问模块耦合到传输层发送模块与传输层接收模块,存储器访问模块还耦合到存储器;外发DMA模块耦合到解密模块,外发DMA模块还耦合到传输层发送模块;收取DMA模块耦合到加密模块,收取DMA模块还耦合到传输层接收模块;加密模块与解密模块分别还耦合到PCIe控制器外部的DRAM。
根据本申请的第四方面的第一PCIe控制器,提供了根据本申请第四方面的第二PCIe控制器,还包括PCIe物理层模块,所述PCIe物理层模块用于处理PCIe物理层协议。
根据本申请的第四方面的第一或第二PCIe控制器,提供了根据本申请第四方面的第三PCIe控制器,还包括数据链路层模块,所述数据链路层模块用于处理PCIe数据链路层协议。
根据本申请的第四方面的第三PCIe控制器,提供了根据本申请第四方面的第四PCIe控制器,加密模块集成在收取DMA模块内部,解密模块集成在外发DMA块内部。
根据本申请的第四方面的第一至第四PCIe控制器之一,提供了根据本申请第四方面的第五PCIe控制器,加密模块用于对DMA收取模块提供的数据加密,并将加密后的数据提供给DRAM。
根据本申请的第四方面的第一至第五PCIe控制器之一,提供了根据本申请第四方面的第六PCIe控制器,解密模块用于对从DRAM获取的数据解密,并将解密后的数据提供给外发DMA模块。
根据本申请的第四方面的第一至第六PCIe控制器之一,提供了根据本申请第四方面的第七PCIe控制器,还包括:CPU子系统,存储器与CPU子系统耦合。
根据本申请的第四方面的第一至第七PCIe控制器之一,提供了根据本申请第四方面的第八PCIe控制器,传输层发送模块用于发送TLP。
根据本申请的第四方面的第一至第八PCIe控制器之一,提供了根据本申请第四方面的第九PCIe控制器,传输层接收模块用于接收TLP。
根据本申请的第四方面的第一至第九PCIe控制器之一,提供了根据本申请第四方面的第十PCIe控制器,第一环回控制模块将部分TLP发送给第二环回控制模块。
根据本申请的第四方面的第十PCIe控制器,提供了根据本申请第四方面的第十一PCIe控制器,第一环回控制模块将具有指定标识的TLP,和/或访问指定地址空间的TLP发送给第二环回控制模块。
根据本申请的第四方面的第一至第十一PCIe控制器之一,提供了根据本申请第四方面的第十二PCIe控制器,第一环回控制模块将部分数据发送给第二环回控制模块。
根据本申请的第四方面的第十二PCIe控制器,提供了根据本申请第四方面的第十三PCIe控制器,第一环回控制模块将具有指定标识的数据,和/或指定地址空间访问请求、和/或与指定地址空间关联的数据发送给第二环回控制模块。
根据本申请的第四方面的第十或第十一PCIe控制器,提供了根据本申请第四方面的第十四PCIe控制器,第二环回控制模块将从第一环回控制模块接收的TLP发送给存储器访问模块或收取DMA模块。
根据本申请的第四方面的第十三或第十四PCIe控制器,提供了根据本申请第四方面的第十五PCIe控制器,第二环回控制模块将从第一环回控制模块接收的数据发送给存储器访问模块或收取DMA模块。
根据本申请的第四方面的第一至第十五PCIe控制器之一,提供了根据本申请第四方面的第十六PCIe控制器,存储器访问模块用于处理访问PCIe设备存储器空间的TLP。
根据本申请的第四方面的第一至第十六PCIe控制器之一,提供了根据本申请第四方面的第十七PCIe控制器,存储器访问模块通过传输层发送模块提供存储器访问结果。
根据本申请的第四方面的第一至第十七PCIe控制器之一,提供了根据本申请第四方面的第十八PCIe控制器,存储器访问模块发送给传输层发送模块的部分存储器访问结果,被第一环回控制模块转发给传输层接收模块。
根据本申请的第四方面的第一至第十八PCIe控制器之一,提供了根据本申请第四方面的第十九PCIe控制器,传输层接收模块接收访问PCIe设备的存储器空间的TLP,并发送给存储器访问模块,存储器访问模块根据TLP访问存储器。
根据本申请的第四方面的第一至第十九PCIe控制器之一,提供了根据本申请第四方面的第二十PCIe控制器,CPU子系统向存储器填充DMA命令。
根据本申请的第四方面的第一至第二十PCIe控制器之一,提供了根据本申请第四方面的第二十一PCIe控制器,外发DMA模块用于发起DMA传输。
根据本申请的第四方面的第一至第二十一PCIe控制器之一,提供了根据本申请第四方面的第二十二PCIe控制器,外发DMA模块从存储器获取DMA命令,并根据DMA命令,将存储器或耦合到PCIe控制器的DRAM中的指定数据传输到指定地址。
根据本申请的第四方面的第一至第二十二PCIe控制器之一,提供了根据本申请第四方面的第二十三PCIe控制器,外发DMA模块通过传输层发送模块发送数据。
根据本申请的第四方面的第一至第二十三PCIe控制器之一,提供了根据本申请第四方面的第二十四PCIe控制器,收取DMA模块用于接收以DMA方式传输的数据。
根据本申请的第四方面的第二十四PCIe控制器,提供了根据本申请第四方面的第二十五PCIe控制器,收取DMA模块从存储器获取DMA命令,根据DMA命令从主机或PCIe设备的指定地址获取数据,并将数据写入存储器或DRAM。
根据本申请的第五方面,提供了根据本申请第五方面的第一处理密钥更新命令的方法,包括:响应于密钥更新命令,从密钥更新命令指示的逻辑地址读出数据,以及在第一地址缓存读出的数据;发起外发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模块;收取DMA模块用第二密钥对明文数据加密得到密文数据,并存储到缓存的第三地址。
根据本申请的第九方面,提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述程序代码使所述存储设备执行根据本申请第二方面、第三方面、第五方面、第六方面、第七方面或第八方面的方法之一
本申请的技术方案有以下优点:提供了PCIe控制器内部的环回机制,DMA传输的主机端可被PCIe控制器内部的存储空间或DRAM所替代,从而实现从存储器/DRAM到存储器/DRAM的DMA传输。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1展示了PCIe控制器的电路系统框图;
图2A展示了根据本申请实施例的PCIe控制器的框图;
图2B展示了根据本申请实施例的传输层发送模块地址映射表;
图3是根据本申请实施例的PCIe控制器通过环回通路“发送”数据的示意图;
图4是根据本申请实施例的PCIe控制器通过环回通路“接收”数据的示意图;
图5是根据本申请实施例的更新密钥的流程图;
图6A展示了根据本申请又一实施例的PCIe控制器的框图;
图6B是根据本申请的实施例更新数据密钥的流程图;
图7展示了根据本申请又一实施例的PCIe控制器的框图;
图8A是根据本申请的又一实施例更新数据密钥的流程图;
图8B是根据本申请的依然又一实施例更新数据密钥的流程图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1展示了PCIe控制器的电路系统框图。如图1所示,主机(host)通过PCIe PHY模块110耦合到设备。PCIe控制器包括PCIe PHY模块110、数据链路层模块120、传输层模块130、存储器140以及CPU子系统160。CPU子系统160包括一个或多个CPU。PCIe PHY模块110用于处理PCIe底层协议(如物理层)。传输层模块130与CPU子系统160子系统均可访问存储器140。数据链路层模块120用于处理PCIe数据链路层协议,传输层模块130用于处理PCIe传输层协议。传输层模块130还依据存储器空间的TLP(传输层数据包,Transaction LayerPacket)访问存储器140。以及可选地,传输层模块130将TLP写入存储器140,并由CPU子系统160从存储器140提取TLP并处理,以及传输层模块130从存储器140中获取TLP,并通过数据链路层模块120发送给主机。依然可选地,传输层模块130将TLP发送给CPU子系统160,由CPU子系统160对TLP进行处理。
可选地,传输层模块130还协助处理NVMe协议的访问请求,例如将主机发送的访问设备的存储器空间(memory space)的特定区域的请求转换成包括访问类型、存储器空间地址、和/或待写入数据的控制器寄存器访问请求,并访问存储器140或转发给CPU子系统160处理。
在NVMe 1.2版本协议中,PCIe寄存器MLBAR与MUBAR定义了用于提供NVMe控制器寄存器的存储器空间,而该地址空间的低4KB被用于属性/控制寄存器。
当要访问门铃寄存器或设备商专用寄存器时,传输层模块130根据存储器空间地址将访问请求写入存储器140的同存储器空间地址相对应的存储位置或从存储器的同存储器空间地址相对应的存储位置中读出数据并通过数据链路层模块120(以及PCIe PHY模块110)返回给主机。
当主机发送的NVMe协议的控制器寄存器访问请求要访问属性/控制寄存器时,传输层模块130生成寄存器访问消息,并将寄存器访问消息插入存储器中的消息队列。CPU子系统160中的一个或多个CPU发现在存储器140的消息队列中有待处理的消息时,取出消息,确定要访问的属性/控制寄存器以及访问类型,对寄存器访问消息进行处理,并将访问结果通过传输层模块130返回给主机。在一个例子中CPU子系统160将访问结果添加到存储器140中的消息队列,传输层模块130从消息队列中取出访问结果,并通过数据链路层模块120返回给主机。
以此方式,实现对NVMe协议中的多种控制器寄存器,并且针对控制器寄存器的不同类型、访问约束等实现有效处理。并且在NVMe协议更新后,能够通过修改CPU子系统中160运行的程序来高效地适配新版协议中引入的对控制器寄存器的访问的修改。
图2A展示了根据本申请实施例的PCIe控制器的框图。根据图2A展示的实施例的PCIe控制器,包括PCIe PHY模块210、数据链路层模块220、传输层发送模块230、传输层接收模块232、存储器访问模块234、外发DMA模块236、收取DMA模块238、存储器240以及CPU子系统260。
PCIe PHY模块210用于处理PCIe底层协议(如物理层)。PCIePHY模块210耦合主机(或其他PCIe设备,包括端点(Endpoint)、根联合体(RootComplex)与交换机(Switch))与数据链路层模块220。数据链路层模块220用于处理PCIe数据链路层协议。数据链路层模块220耦合到传输层发送模块230与传输层接收模块232。传输层发送模块230用于通过数据链路层模块220向主机发送TLP,传输层接收模块232用于从数据链路层模块220接收TLP。
根据本申请的实施例中,传输层发送模块230还包括环回控制模块,传输层接收模块232也包括环回控制模块。在一个例子中,传输层发送模块230通过其环回控制模块,将部分TLP(例如,具有指定标识的TLP,和/或访问指定地址空间的TLP)发送给传输层接收模块232的环回控制模块,而不是发送给数据链路层模块220。在又一个例子中,传输层发送模块230通过其环回控制模块将部分数据(例如,具有指定标识的数据,和/或指定地址空间访问请求、和/或与指定地址空间关联的数据)发送给传输层接收模块232的环回控制模块,而不是打包成TLP发送给数据链路层模块220。从而在PCIe协议的数据链路层,甚至传输层之上形成环回通路。
PCIe控制器还包括存储器访问模块234、外发DMA模块236、收取DMA模块238。存储器访问模块234用于处理访问PCIe设备存储器空间的TLP。存储器访问模块234同传输层发送模块230相耦合,通过传输层发送模块230向主机(或PCIe设备)提供存储器访问结果。由于根据本申请实施例中提供了环回通路,存储器访问模块234发送给传输层发送模块230的部分存储器访问结果,被通过环回通路转发给传输层接收模块232。存储器访问模块234还同传输层接收模块232相耦合。主机(或PCIe设备)发出的访问存储器空间的TLP被传输层接收模块232发送给存储器访问模块234,存储器访问模块234根据TLP生成存储器访问结果(通过访问存储器240或由CPU子系统260处理)。
外发DMA模块236用于处理从PCIe控制器到主机(或PCIe设备)的DMA传输。外发DMA模块236耦合到存储器240与DRAM,将存储器240或DRAM中的数据以DMA方式传输给主机。可选地,CPU子系统260向存储器240填充DMA命令。外发DMA模块236从存储器240获取DMA命令,并根据DMA命令,将存储器240或DRAM中的指定数据传输到主机的指定地址。外发DMA模块236耦合到传输层发送模块230,通过传输层发送模块230将数据发送给主机。
收取DMA模块238用于处理从主机(或PCIe设备)到PCIe控制器的DMA传输。收取DMA模块238耦合到存储器240与DRAM。CPU子系统260将DMA命令填入存储器240。收取DMA模块238从存储器240获取DMA命令,并根据DMA命令从主机(或PCIe设备)的指定地址获取数据,并将数据写入存储器240或DRAM。收取DMA模块238还耦合到传输层发送模块230(图2中未示出),通过传输层发送模块230向主机发送发起DMA传输的数据访问请求,收取DMA模块238从传输层接收模块232接收主机提供的数据。
可选地,DRAM是PCIe控制器芯片外部的存储器,或者DRAM同PCIe控制器集成在相同芯片内。
外发DMA模块236也被称为“EngressDMA”或“ScatterDMA”。收取DMA模块238也被称为“IngressDMA”或“GatherDMA”。
根据本申请的实施例,由于具有环回通路,DMA传输的主机端可被PCIe控制器内部的存储空间或DRAM所替代,从而实现从存储器240/DRAM到存储器240/DRAM的DMA传输。例如,外发DMA模块236通过传输层模块230发送数据,通过提供特殊标识或指定地址空间,传输层发送模块230通过其环回控制模块将外发DMA模块236提供的数据转发给传输层接收模块232的环回控制模块,传输层接收模块232将数据提供给存储器访问模块234/收取DMA模块238,以将数据写入存储器240/DRAM。
图2B展示了根据本申请实施例的传输层发送模块地址映射表。
作为一种实施方式,传输层发送模块230(参看图2A)维护如图2B所示的地址映射表。通过地址映射表,将原本都指示目的端(主机或PCIe设备)地址空间的部分,映射到传输层接收模块232。图2B中,从地址270到地址272的范围被映射到主机(或PCIe设备),传输层发送模块230将访问地址270到地址272的TLP或访问请求通过数据链路层220发送给主机(或PCIe设备)。图2B中,从地址272到地址274的范围被映射给传输层接收模块232,传输层发送模块230将访问地址272到地址274的TLP或访问请求通过自身的环回控制模块发送给传输层模块232的环回控制模块。
作为举例,仅记录地址272,将访问的地址小于地址272的TLP或访问请求发送给主机,而将访问的地址大于地址272的TLP或访问请求发送给传输层接收模块232。
图3是根据本申请实施例的PCIe控制器通过环回通路“发送”数据的示意图。作为举例,图3的实施例展示了从PCIe控制器将DRAM的数据“发送”到位于存储器240的目的存储空间的过程。
为发送数据,CPU子系统260生成DMA命令,并填入存储器240。外发DMA模块236轮询存储器240,以及时发现并获取待处理的DMA命令(由①所指示)。DMA命令指示了位于DRAM中的源地址,与目的地址。作为举例,在外发DMA模块236看来,目的地址是主机(或远端PCIe设备)中的地址。
外发DMA模块236根据DMA命令的指示,从DRAM获取要传输的数据(由②所指示)。
外发DMA模块236将从DRAM获取的数据以及DMA传输的目的地址发送给传输层发送模块230(由③所指示)。传输层发送模块230依据接收的目的地址,识别出目的地址被映射到传输层接收模块,从而传输层发送模块230通过环回通路,使用自身的环回控制模块将数据与地址传输给传输层接收模块232的环回控制模块(由④所指示)。
传输层接收模块232依据收到的目的地址和数据,通过存储器访问模块234将数据写入存储器240中同目的地址对应的位置(由⑤所指示)。
从而完成了将DRAM中的数据“发送”到位于存储器240的目的地址的过程。
可选地,存储器访问模块234响应于将数据写入存储器240,还生成确认消息,并将确认消息提供给传输层发送模块230,以向DMA传输的发起方提供DMA传输结果。传输层发明模块230依据确认消息的目的地址,识别出要通过环回通路将确认消息发送给传输层接收模块232的环回控制模块。传输层接收模块232接收确认消息,并将确认消息提供给外发DMA模块236。外发DMA模块236根据DMA命令执行结果更新存储器240中的DMA命令,或将DMA命令执行结果写入存储器240,以向CPU子系统260指示DMA命令执行完成。
可选地,传输层发送模块230将确认消息封装为TLP,而传输层接收模块232从环回通路接收TLP,并解析TLP识别出其为确认消息。依然可选地,传输层发送模块230的环回控制模块与传输层接收模块232的环回控制模块之间依据自定义的协议传输数据和/或地址。
根据图3的实施例中,通过环回通路“发送”数据的过程未使用收取DMA模块238,将其用阴影标识。
图4是根据本申请实施例的PCIe控制器通过环回通路“接收”数据的示意图。
作为举例,图4的实施例展示了PCIe控制器从存储器240获取数据并存储到位于DRAM的目的存储空间的过程。通过收取DMA模块238发起数据“接收”过程,在DMA模块238看来,是从远端设备(例如,主机或PCIe设备)的存储空间“接收”数据,并将接收的数据存储在DRAM中,虽然所接收的数据看起来来自远端设备,但数据实际上存储在存储器240。
为接收数据,CPU子系统260生成DMA命令,并填入存储器240。收取DMA模块238轮询存储器240,以及时发现并获取待处理的DMA命令(由①所指示)。DMA命令指示了位于DRAM中的目的地址,与位于远端的源地址。作为举例,在收取DMA模块238看来,源地址是(看起来的)远端设备(例如,看起来是主机或远端PCIe设备)中的地址。
收取DMA模块238根据DMA命令的指示,通过传输层发送模块230向(看起来的)远端设备发出数据访问请求(由②所指示)。
传输层发送模块230依据接收的目的地址,识别出目的地址被映射到传输层接收模块232,从而传输层发送模块230通过环回通路,使用自身的环回控制模块将数据与地址传输给传输层接收模块232的环回控制模块(由③所指示)。
传输层接收模块232依据收到的目的地址,通过存储器访问模块234,访问存储器240,以获取要访问的数据(由④所指示)。存储器访问模块从存储器240接收所访问的数据(依然由④所指示)。
存储器访问模块234通过传输层发送模块230将存储器访问结果返回给(看起来的)远端设备。传输层发送模块230依据要返回存储器访问结果的源地址识别出要通过环回通路将存储器访问结果发送给传输层接收模块232的环回控制模块(由⑤所指示)。传输层接收模块232接收存储器访问结果,并将存储器访问结果提供给收取DMA模块238(由⑥所指示)。可选地,传输层发送模块230将存储器访问结果封装为TLP,而传输层接收模块232从环回通路接收TLP,并解析TLP识别出其为存储器访问结果。依然可选地,传输层发送模块230的环回控制模块与传输层接收模块232的环回控制模块之间依据自定义的协议传输数据和/或地址。
收取DMA模块238将存储器访问结果写入DRAM(由⑦所指示)。从而完成了从存储器240获取数据并存储到位于DRAM的目的存储空间的过程。
在可选的实施方式中,存储器访问模块234从存储器240获取了存储器访问结果后(由④所指示),依据源地址识别出应将存储器访问结果提交给传输层接收模块232。接下来,传输层接收模块232将存储器访问结果供给收取DMA模块238(由⑥所指示)。收取DMA模块238将存储器访问结果写入DRAM(由⑦所指示)。从而完成从存储器240获取数据并存储到位于DRAM的目的存储空间的过程。
可选地,收取DMA模块238响应于将数据写入DRAM,还生成DMA命令执行结果。收取DMA模块238根据DMA命令执行结果更新存储器240中的DMA命令,或将DMA命令执行结果写入存储器240,以向CPU子系统260指示DMA命令执行完成。
根据图4的实施例中,通过环回通路“接收”数据的过程未使用外发DMA模块236,将其用阴影标识。
图5是根据本申请实施例的更新密钥的流程图。
固态存储设备支持数据加密,对用户写入的数据进行加密,将加密后的数据写入固态存储设备的NVM芯片。用户加密数据的密钥被记录在固态存储设备中。固态存储设备可记录多组密钥,用户可指定固态存储设备使用哪组密钥加密/解密数据。
一些情况下,用户希望变更所使用的密钥。用户通过主机,指示固态存储设备以原密钥读出位于固态存储设备的指定地址的数据(510)。数据被传输到主机。主机再指示固态存储设备以新密钥向指定地址写入所读出的数据(520)。从而实现密钥的变更。可选地,主机在步骤510与步骤520之间,向固态存储设备设置要使用的新密钥。
而根据本申请的实施例的本地环回功能,在固态存储设备内部完成密钥变更,而无须再将数据传输到主机。
图6A展示了根据本申请又一实施例的PCIe控制器的框图。
根据图6A展示的实施例的PCIe控制器,在根据图2A所展示的实施例的PCIe控制器基础上,还包括加密模块610与解密模块620。
加密模块610耦合到收取DMA模块238,用于对收取DMA模块238写入DRAM的数据加密。解密模块620耦合到外发DMA模块236,用于对外发DMA模块236从DRAM读出的数据解密。可以理解地,在可选的实施方式中,加密模块610与解密模块620可集成于DMA模块(包括外发DMA模块236与收取DMA模块238内部),或者插入到DMA模块与传输层发送模块230/传输层接收模块232之间。
根据本申请图6A实施例,固态存储设备提供在固态存储设备内部更新密钥功能。作为举例,固态存储设备支持密钥更新命令。主机向固态存储设备发送密钥更新命令,指示要使用的新密码,以及待更新密钥的数据的存储地址。作为举例,CPU子系统260识别密钥更新命令,作为对密钥更新命令的响应,CPU子系统260控制固态存储设备从存储地址读出用旧密钥加密的数据,将加密的数据缓存在例如DRAM中。接下来,CPU子系统260通过本地环回通路将DRAM中的加密的数据发送给例如存储器240,并在从DRAM到存储器240的数据传输过程中用旧密钥对数据进行解密,以模拟在图5的步骤510中,将数据解密并发送给主机的过程。接下来,CPU子系统260通过本地环回通路将存储器240中的数据传输到DRAM,并将数据用新密钥加密。以及CPU子系统260还将DRAM中的用新密钥加密的数据写入固态存储设备的指定地址的NVM芯片,以模拟图5的步骤520中,将用新密钥加密的数据写入指定地址的过程。
图6B是根据本申请的实施例更新数据密钥的流程图。
固态存储设备接收主机发出的密钥更新命令(650)。密钥更新命令指示了要使用的新密钥,待更新密钥的数据的存储地址。存储地址是例如固态存储设备的逻辑地址,或者固态存储设备提供给用户的物理地址。
CPU子系统260(也参看图6A)识别并处理密钥更新命令。CPU子系统260根据密钥更新命令指示的存储地址,从固态存储设备的NVM芯片中读出数据,并将数据缓存在例如DRAM中。作为举例,此时,DRAM中缓存的数据是用旧密钥加密后的密文数据。接下来,CPU子系统260根据密钥更新命令,生成DMA命令(C1)(655),以模拟将密文数据发送到远端设备(例如,主机)的过程,并在数据传输过程中,用旧密钥解密密文数据,得到加密前的明文数据。DMA命令的源地址是密文数据在DRAM中的地址,而目的地址是模拟的远端设备地址。可选地,CPU子系统260将DMA命令添加到存储器240。
外发DMA模块236从存储器240获得DMA命令,根据DMA命令从DRAM获取密文数据,解密模块620对密文数据解密,得到明文数据(660)。外发DMA模块236指示传输层发送模块230将明文数据发送给DMA命令的目的地址(模拟的远端设备地址)。
根据DMA命令的目的地址,传输层发送模块230通过环回通路,经传输层接收模块232、存储器访问模块234,将明文数据写入存储器240(670)。可选地,存储器访问模块234也可将明文数据写入DRAM。
外发DMA模块236向CPU子系统指示DMA命令(C1)处理完成。
接下来,CPU子系统260响应于DMA命令(C1)处理完成,生成又一DMA命令(C2)(675),以模拟将明文数据从远端设备取回到DRAM,并在数据传输过程中,用密钥更新命令指示的新密钥对明文数据加密。DMA命令(C2)的源地址是模拟的远端设备地址(将被传输层发送模块230映射到存储器240中的明文数据),目的地址是DRAM中的地址。可选地,CPU子系统260将DMA命令(C2)添加到存储器240。
收取DMA模块238从存储器240获得DMA命令(C2),根据DMA命令(C2),通过传输层发送模块230向模拟的远端设备地址发出存储器访问请求。传输层发送模块230将根据模拟的远端设备地址,通过环回通路,经传输层接收模块232与存储器访问模块234从存储器240获得明文数据,传输层接收模块232将明文数据发送给收取DMA模块238,并经加密模块610对明文数据用密钥更新命令指示的新密钥对明文数据加密,并将密文数据存储在DRAM中(690)。
接下来,收取DMA模块238向CPU子系统260指示DMA命令(C2)处理完成。继而,CPU子系统260根据密钥更新命令指示的存储地址,将DRAM中经新密钥加密的数据写入固态存储设备的NVM芯片。CPU子系统260还向主机指示密钥更新命令处理完成。可选地,将用新密钥加密的密文数据写入DRAM后,CPU子系统260即向主机指示密钥更新命令处理完成,以降低用户体验到的密钥更新命令的处理延迟。
图7展示了根据本申请又一实施例的PCIe控制器的框图。
根据图7展示的实施例的PCIe控制器,在根据图6A所展示的实施例的PCIe控制器基础上,存储器访问模块734分别与加密模块710、解密模块720耦合。以及存储器访问734还耦合到加密与解密模块750。
加密模块710耦合到收取DMA模块238,用于对收取DMA模块238写入DRAM的数据加密。解密模块720耦合到外发DMA模块236,用于对外发DMA模块236从DRAM读出的数据解密。可以理解地,在可选的实施方式中,加密模块710与解密模块720可集成于DMA模块(包括外发DMA模块236与收取DMA模块238内部),或者插入到DMA模块与传输层发送模块230/传输层接收模块232之间。
另外,加密模块710耦合到存储器访问模块734,用于对存储器访问模块734写入DRAM中的数据加密。解密模块720耦合到存储器访问模块734,用于对存储器访问模块734从DRAM读出的数据解密。可以理解地,加密模块710与解密模块720可集成于存储器访问模块734上。
加密与解密模块750对来自存储器访问模块734的数据进行加密或解密,并将加密或解密的结果存储到存储器240。加密与解密模块750对来自存储器240的数据进行加密或解密,并将加密或解密的结果提供给存储器访问模块734。
根据本申请图7实施例,固态存储设备提供在固态存储设备内部更新密钥功能。作为举例,固态存储设备支持密钥更新命令。主机向固态存储设备发送密钥更新命令,指示要使用的新密码,以及待更新密钥的数据的存储地址。作为举例,CPU子系统260识别密钥更新命令,作为对密钥更新命令的响应,CPU子系统260控制固态存储设备从存储地址读出的数据,读出的数据是用旧密钥加密的数据。将读出的数据缓存在例如DRAM中。接下来,CPU子系统260生成例如外发DMA命令,以通过本地环回通路将DRAM中的加密的数据发送给例如存储器240,并在从DRAM到存储器240的数据传输过程中,对加密数据用旧密钥进行解密,并用新密钥加密。以及CPU子系统260还将存储器240中的用新密钥加密的数据写入固态存储设备的指定地址的NVM芯片。
作为另一个例子,作为对密钥更新命令的响应,CPU子系统260控制固态存储设备从存储地址读出的数据,读出的数据是用旧密钥加密的数据。将读出的数据缓存在例如存储器240中。CPU子系统260生成例如收取DMA命令,以通过本地环回通路将存储器240中的加密的数据发送给例如DRAM,并在从存储器240到DRAM的数据传输过程中,对加密数据用旧密钥进行解密,并用新密钥加密。以及CPU子系统260还将DRAM中的用新密钥加密的数据写入固态存储设备的指定地址的NVM芯片。
图8A是根据本申请的又一实施例更新数据密钥的流程图。
固态存储设备接收主机发出的密钥更新命令(800)。密钥更新命令指示了要使用的新密钥,待更新密钥的数据的逻辑地址。CPU子系统260(也参看图7)识别并处理密钥更新命令,从逻辑地址读出数据,并存储在缓存的第一地址(810)。第一地址可以位于固态存储设备的DRAM。
作为举例,此时,DRAM的第一地址中缓存的数据是用旧密钥加密后的密文数据。接下来,CPU子系统260根据密钥更新命令,生成外发DMA命令(815),以模拟将密文数据发送到远端设备(例如,主机)的过程。数据的真实传输目的是DRAM或存储器240,并且在数据传输过程中,用旧密钥解密密文数据,得到加密前的明文数据,以及用密钥更新命令指示的新密钥加密明文数据,得到新密文数据。DMA命令的源地址是密文数据在DRAM中的地址,而目的地址是模拟的远端设备地址。模拟的远端设备地址被外发DMA模块236的环回控制模块映射到DRAM或存储器240(第二地址)。
外发DMA模块236从存储器240获得DMA命令,根据DMA命令从DRAM获取密文数据,解密模块720对密文数据解密,得到明文数据(820)。外发DMA模块236指示传输层发送模块230将明文数据发送给DMA命令的目的地址(模拟的远端设备地址)。
在一个例子中,模拟的远端设备被映射到DRAM。根据DMA命令的目的地址,传输层发送模块230通过环回通路,经传输层接收模块232、存储器访问模块734,通过加密模块710,使用新密钥对明文数据进行加密。将加密后的数据写入DRAM(830)。
在一个例子中,模拟的远端设备被映射到存储器240。根据DMA命令的目的地址,传输层发送模块230通过环回通路,经传输层接收模块232、存储器访问模块734,通过加密与解密模块750,使用新密钥对明文数据进行加密,将加密后的数据写入存储器240(830)。
响应于外发DMA命令被处理完成,CPU子系统还将第二地址(位于DRAM或存储器240)中存储的用新密钥加密后的数据写入固态存储设备的逻辑地址,以完成对密钥更新命令的处理(840)。
图8B是根据本申请的依然又一实施例更新数据密钥的流程图。
固态存储设备接收主机发出的密钥更新命令(850)。密钥更新命令指示了要使用的新密钥,待更新密钥的数据的逻辑地址。CPU子系统260(也参看图7)识别并处理密钥更新命令,从逻辑地址读出数据,并存储在缓存的第一地址(860)。第一地址位于固态存储设备的存储器240或DRAM。
在一个例子中,第一地址位于存储器240。此时,存储器240的第一地址中缓存的数据是用旧密钥加密后的密文数据。接下来,CPU子系统260根据密钥更新命令,生成收取DMA命令(865),以模拟将密文数据从远端设备(例如,主机)传输到DRAM的过程。数据的真实传输目的是DRAM,并且在数据传输过程中,用旧密钥解密密文数据,得到加密前的明文数据,以及用密钥更新命令指示的新密钥加密明文数据,得到新密文数据。DMA命令的源地址是模拟的远端设备地址(密文数据在存储器240中的地址),而目的地址是DRAM中的地址(第二地址)。模拟的远端设备地址被收取DMA模块238的环回控制模块映射到存储器240(第一地址)。
收取DMA模块236从存储器240获得DMA命令,根据DMA命令通过传输层发送模块发出从模拟的远端设备地址到目的地址的DMA传输。传输层发送模块230根据目的地址,通过环回通路,经传输层接收模块232、存储器访问模块734,通过加密与解密模块750从存储器240的第一地址获取密文数据,并对密文数据用旧密码解密(870)。
在另一个例子中,第一地址位于DRAM。此时,存储器240的第一地址中缓存的数据是用旧密钥加密后的密文数据。接下来,CPU子系统260根据密钥更新命令,生成收取DMA命令(865),以模拟将密文数据从远端设备(例如,主机)传输到DRAM的过程。数据的真实传输目的是DRAM。DMA命令的源地址是模拟的远端设备地址(密文数据在DRAM中的第一地址),而目的地址是DRAM中的地址(第二地址)。模拟的远端设备地址被收取DMA模块238的环回控制模块映射到DRAM(第一地址)。收取DMA模块236从存储器240获得DMA命令,根据DMA命令通过传输层发送模块发出从模拟的远端设备地址到目的地址的DMA传输。传输层发送模块230根据目的地址,通过环回通路,经传输层接收模块232、存储器访问模块734,通过解密模块720从DRAM的第一地址获取密文数据,并对密文数据用旧密码解密(870)。
存储器访问模块734将解密后的明文数据通过传输层发送模块230的环回控制模块发送给传输层接收模块232。传输层接收模块通过收取DMA模块238将明文数据提供给加密模块710。加密模块710用新密钥对明文数据加密,并将加密后的数据存储在DRAM(第二地址)中(880)。
响应于外发DMA命令被处理完成,CPU子系统还将第二地址(位于DRAM)中存储的用新密钥加密后的数据写入固态存储设备的逻辑地址,以完成对密钥更新命令的处理(890)。
本申请实施例还提供一种包含程序代码的程序,当被载入CPU并在CPU中执行时,程序使CPU执行上面提供的根据本申请实施例的方法之一。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本申请的很多修改和其他实施方式。因此,应该理解,本申请不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (10)
1.一种PCIe控制器,其特征在于,包括:传输层发送模块、传输层接收模块、CPU子系统、存储器访问模块与存储器;传输层发送模块包括第一环回控制模块,传输层接收模块包括第二环回控制模块,第一环回控制模块耦合到第二环回控制模块;存储器访问模块耦合到传输层发送模块与传输层接收模块,存储器访问模块还耦合到存储器;存储器与CPU子系统耦合。
2.如权利要求1所述的PCIe控制器,其特征在于,还包括外发DMA模块与收取DMA模块,外发DMA模块耦合到存储器与传输层发送模块;收取DMA模块耦合到存储器传输层接收模块。
3.如权利要求1或2所述的PCIe控制器,其特征在于,
CPU子系统向存储器填充DMA命令。
4.如权利要求2所述的PCIe控制器,其特征在于,外发DMA模块从存储器获取DMA命令,并根据DMA命令,将存储器或耦合到PCIe控制器的DRAM中的指定数据传输到指定地址。
5.一种发送数据的方法,其特征在于,包括:
CPU子系统生成DMA命令,并提供给外发DMA模块;
外发DMA模块根据DMA命令,从DRAM获取要传输的数据;
外发DMA模块将DMA传输的目的地址以及从DRAM中获取的数据发送给传输层发送模块;
传输层发送模块通过第一环回控制模块将数据以及目的地址发送给传输层接收模块的第二环回控制模块;
传输层接收模块依据收到的数据以及目的地址,通过存储器访问模块将数据写入存储器;
响应于数据写入存储器,存储器访问模块生成确认消息,并向传输层发送模块发送确认消息。
6.如权利要求5所述的方法,其特征在于,传输层发送模块依据确认消息的目的地址,将确认消息使用第一环回控制模块发送给传输层接收模块的第二环回控制模块。
7.如权利要求5或6所述的方法,其特征在于,传输层发送模块将确认消息封装为TLP,通过第一环回控制模块发送给传输层接收模块的第二环回控制模块,传输层接收模块从第二环回控制模块接收TLP,并解析TLP识别出其为确认消息。
8.一种获取数据的方法,其特征在于,包括:
CPU子系统生成DMA命令,并提供给收取DMA模块;
收取DMA模块根据DMA命令的指示,通过传输层发送模块发出数据访问请求;
传输层发送模块使用第一环回控制模块将数据访问请求发送给传输层接收模块的第二环回控制模块;
传输层接收模块依据收到的数据访问请求,通过存储器访问模块访问存储器,以获取要访问的数据;
传输层发送模块使用第一环回控制模块将存储器访问结果发送给传输层接收模块的第二环回控制模块;
传输层接收模块接收存储器访问结果,并将存储器访问结果提供给收取DMA模块;
收取DMA模块将存储器访问结果写入存储器或DRAM;
收取DMA模块生成DMA命令执行结果,并根据DMA命令执行结果更新存储器中的DMA命令。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
将DMA命令执行结果写入存储器,以向CPU子系统指示DMA命令执行完成。
10.如权利要求8或9所述的方法,其特征在于,传输层发送模块将存储器访问结果封装为TLP时,所述方法还包括:第一环回控制模块发送给传输层接收模块的第二环回控制模块;
传输层接收模块从第二环回控制模块接收TLP,并解析TLP识别出其为存储器访问结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010693793.5A CN111797046B (zh) | 2017-09-27 | 2017-09-27 | PCIe控制器及其数据传输方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710886427.XA CN107643992B (zh) | 2017-09-27 | 2017-09-27 | PCIe控制器与使用PCIe控制器的环回数据通路 |
CN202010693793.5A CN111797046B (zh) | 2017-09-27 | 2017-09-27 | PCIe控制器及其数据传输方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710886427.XA Division CN107643992B (zh) | 2017-09-27 | 2017-09-27 | PCIe控制器与使用PCIe控制器的环回数据通路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111797046A CN111797046A (zh) | 2020-10-20 |
CN111797046B true CN111797046B (zh) | 2022-04-08 |
Family
ID=61113524
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010693793.5A Active CN111797046B (zh) | 2017-09-27 | 2017-09-27 | PCIe控制器及其数据传输方法 |
CN201710886427.XA Active CN107643992B (zh) | 2017-09-27 | 2017-09-27 | PCIe控制器与使用PCIe控制器的环回数据通路 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710886427.XA Active CN107643992B (zh) | 2017-09-27 | 2017-09-27 | PCIe控制器与使用PCIe控制器的环回数据通路 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111797046B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11210247B2 (en) | 2017-09-27 | 2021-12-28 | Chengdu Starblaze Technology Co., Ltd. | PCIe controller and loopback data path using PCIe controller |
CN110134621B (zh) * | 2018-02-09 | 2023-12-19 | 北京忆芯科技有限公司 | 通过环回数据通路提供cmb |
CN110377221B (zh) * | 2018-04-13 | 2024-10-01 | 北京忆恒创源科技股份有限公司 | 双端口固态存储设备及其数据处理方法 |
CN111324414B (zh) * | 2018-12-17 | 2024-03-26 | 北京忆芯科技有限公司 | Nvm存储介质模拟器 |
WO2022036615A1 (en) * | 2020-08-20 | 2022-02-24 | Intel Corporation | Device channel protection mechanism |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1813248A (zh) * | 2003-06-30 | 2006-08-02 | 英特尔公司 | 可重寻址的虚拟dma控制和状况寄存器 |
CN101557379A (zh) * | 2009-05-21 | 2009-10-14 | 成都市华为赛门铁克科技有限公司 | 一种pcie接口的链路重组方法和装置 |
TW201122802A (en) * | 2009-12-18 | 2011-07-01 | Wistron Corp | A testing interposer card and method of testing |
US9223737B1 (en) * | 2013-03-14 | 2015-12-29 | Google Inc. | Computer interconnect isolation |
CN105988906A (zh) * | 2015-03-02 | 2016-10-05 | 鸿富锦精密工业(武汉)有限公司 | 测试卡及应用该测试卡的主板 |
CN106294228A (zh) * | 2016-08-17 | 2017-01-04 | 上海兆芯集成电路有限公司 | 输入输出扩展芯片以及其验证方法 |
CN106569736A (zh) * | 2015-10-10 | 2017-04-19 | 北京忆芯科技有限公司 | NVMe协议处理器及其处理方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7324458B2 (en) * | 2003-03-21 | 2008-01-29 | Intel Corporation | Physical layer loopback |
CN101923512B (zh) * | 2009-05-29 | 2013-03-20 | 晶天电子(深圳)有限公司 | 三层闪存装置、智能存储开关和三层控制器 |
WO2013104937A2 (en) * | 2012-01-11 | 2013-07-18 | 77 Elektronika Mũszeripari Kft. | Image processing method and apparatus |
CN103970634B (zh) * | 2014-04-24 | 2017-06-09 | 浪潮电子信息产业股份有限公司 | 一种大型互连芯片用基于添加检测逻辑的背靠背环回验证方法 |
CN104951252B (zh) * | 2015-06-12 | 2018-10-16 | 北京联想核芯科技有限公司 | 一种数据访问方法及PCIe存储设备 |
CN106843753A (zh) * | 2016-12-30 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种分布式存储中协议使用缓存的方法及装置 |
-
2017
- 2017-09-27 CN CN202010693793.5A patent/CN111797046B/zh active Active
- 2017-09-27 CN CN201710886427.XA patent/CN107643992B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1813248A (zh) * | 2003-06-30 | 2006-08-02 | 英特尔公司 | 可重寻址的虚拟dma控制和状况寄存器 |
CN101557379A (zh) * | 2009-05-21 | 2009-10-14 | 成都市华为赛门铁克科技有限公司 | 一种pcie接口的链路重组方法和装置 |
TW201122802A (en) * | 2009-12-18 | 2011-07-01 | Wistron Corp | A testing interposer card and method of testing |
US9223737B1 (en) * | 2013-03-14 | 2015-12-29 | Google Inc. | Computer interconnect isolation |
CN105988906A (zh) * | 2015-03-02 | 2016-10-05 | 鸿富锦精密工业(武汉)有限公司 | 测试卡及应用该测试卡的主板 |
CN106569736A (zh) * | 2015-10-10 | 2017-04-19 | 北京忆芯科技有限公司 | NVMe协议处理器及其处理方法 |
CN106294228A (zh) * | 2016-08-17 | 2017-01-04 | 上海兆芯集成电路有限公司 | 输入输出扩展芯片以及其验证方法 |
Non-Patent Citations (2)
Title |
---|
Performance Analysis and Evaluation of PCIe 2.0 and Quad-Data Rate InfiniBand;Matthew J.Koop;《IEEE》;20080903;第1-8页 * |
一种高速串行数据传输系统的设计与实现;刘敏;《中国优秀硕士学位论文全文数据库》;20170331(第2017年03期);I136-974 * |
Also Published As
Publication number | Publication date |
---|---|
CN107643992B (zh) | 2020-09-08 |
CN107643992A (zh) | 2018-01-30 |
CN111797046A (zh) | 2020-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111797046B (zh) | PCIe控制器及其数据传输方法 | |
US10192062B2 (en) | Encryption for XIP and MMIO external memories | |
TWI575402B (zh) | 計算裝置與資料處理方法 | |
CN108898033B (zh) | 一种基于fpga的数据加解密系统 | |
US20140310536A1 (en) | Storage device assisted inline encryption and decryption | |
TW202242693A (zh) | 用於總儲存加密之系統、方法及設備 | |
JP2004226969A (ja) | 暗号システム及び多様なモードを支援する方法 | |
EP3803672B1 (en) | Memory-efficient hardware cryptographic engine | |
CN116635820B (zh) | 用于控制计算存储处理器的方法和装置 | |
US9798901B2 (en) | Device having a security module | |
CN111566987B (zh) | 数据处理方法、电路、终端设备及存储介质 | |
CN113890728A (zh) | 基于fpga加密卡的密钥处理方法、系统、设备及介质 | |
CN110688333A (zh) | 一种基于pcie的dma数据传输系统及方法 | |
US20220029793A1 (en) | Systems, methods, and devices for key per input/output security | |
US20120084574A1 (en) | Information storage apparatus, information storage method, and electronic device | |
US11960423B2 (en) | PCIe controller and loopback data path using PCIe controller | |
CN110134621B (zh) | 通过环回数据通路提供cmb | |
CN107341130B (zh) | 具有近端数据处理引擎的芯片组 | |
US7769166B2 (en) | Dual mode AES implementation to support single and multiple AES operations | |
CN109558347B (zh) | PCIe控制器与使用PCIe控制器的密钥更新 | |
US20230185745A1 (en) | Data flow control module for autonomous flow control of multiple dma engines | |
US8380137B2 (en) | Circuit, process, and use of a memory for transmitting and/or receiving in a radio network | |
KR20090059602A (ko) | 세션 메모리 버스를 구비한 암호화 장치 | |
TWI850571B (zh) | 針對每輸入輸出密鑰安全的元件、方法以及電腦可讀取儲存元件 | |
JP2022165569A (ja) | メモリシステム、メモリデバイス、およびデータ送信方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |