首页> 中国专利> PCIe固态硬盘控制器、基于PCIe的存储系统及其数据读写方法

PCIe固态硬盘控制器、基于PCIe的存储系统及其数据读写方法

摘要

本发明公开了一种PCIe固态硬盘控制器、基于PCIe的存储系统及其数据读写方法,其中PCIe固态硬盘控制器包括PCIe控制接口、CPU、FLASH控制器、DMA模块和缓存,所述PCIe控制接口的上行端口与主机相连,还包括收发控制模块和命令/响应转发模块,所述PCIe控制接口通过收发控制模块与CPU相连,所述收发控制模块通过命令/响应转发模块与PCIe控制接口相连;所述CPU将所述PCIe固态硬盘控制器配置为主控制器或从控制器。本发明能够灵活扩展,由于主控制器和多个从控制器可同时运行,提高了性能,性能约为现有的单个设备PCIe固态硬盘的N倍;主控制器和多个从控制器分别控制相同数量的存储芯片,扩大了容量,容量约为现有的单个设备PCIe固态硬盘的N倍。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-12-25

    专利实施许可合同备案的生效 IPC(主分类):G06F3/06 合同备案号:2018430000021 让与人:湖南国科微电子股份有限公司 受让人:江苏芯盛智能科技有限公司 发明名称:PCIe固态硬盘控制器、基于PCIe的存储系统及其数据读写方法 申请公布日:20160504 授权公告日:20170322 许可种类:普通许可 备案日期:20181203 申请日:20151231

    专利实施许可合同备案的生效、变更及注销

  • 2017-03-22

    授权

    授权

  • 2016-06-01

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20151231

    实质审查的生效

  • 2016-05-04

    公开

    公开

说明书

技术领域

本发明属于数据存储技术领域,特别涉及一种PCIe固态硬盘控制器、基于PCIe的存储系统及其数据读写方法。

背景技术

随着大数据时代到来,各行各业对数据存储的需求呈爆炸式的增长。基于PCIe接口的固态硬盘,由于其接口速度上的优势,已经逐渐成为各类计算机系统的标准存储设备。

如图1所示,现有的基于PCIe接口的固态硬盘包括一个PCIe固态硬盘控制器2和若干存储芯片3(通常为FLASH闪存芯片),其中PCIe固态硬盘控制器2包括PCIe控制接口4、CPU7、FLASH控制器8、DMA模块9和缓存10,所述PCIe控制接口4的上行端口与主机1相连,所述PCIe控制接口4均与CPU7相连,所述CPU7还通过FLASH控制器8与存储芯片3相连,所述CPU7还分别与DMA模块9和缓存10相连,所述缓存10通过DMA模块9和PCIe控制接口4相连。其中PCIe控制接口4完成标准PCIe协议控制功能,CPU7负责处理主机1的命令,完成读写数据搬移的控制,DMA模块9进行读写数据搬移,FLASH控制器8实现对存储芯片3的读写控制,缓存10用于暂存待读写的数据以及CPU7运行时的数据和变量。

现有的基于PCIe接口的固态硬盘的数据读写方法包括:主机1通过PCIe控制接口4将读/写命令发送给CPU7,由CPU7解析该命令,如果是读命令,则CPU7请求FLASH控制器8把存储芯片3中的数据搬到缓存10内,然后CPU7请求DMA模块9将缓存10内的数据通过PCIe控制接口4发送到主机1的内存,最后CPU7将完成本条命令的响应通过PCIe控制接口4发送到主机1的内存,本条命令完成;如果是写命令,则CPU7请求DMA模块9将主机1的内存中的数据通过PCIe控制接口4搬移到缓存10,然后通知FLASH控制器8将数据从缓存10读出并写入存储芯片3,最后CPU7将完成本条命令的响应通过PCIe控制接口4发送到主机1的内存,本条命令完成。

现有的基于PCIe接口的固态硬盘由于受限于PCIe固态硬盘控制器2的处理能力以及存储芯片3中的NANDFlash颗粒特性,一个PCIe固态硬盘容量一般只能达到2T字节,其读写性能也不能完全匹配PCIe最大接口速率,远远小于PCIe3.0的传输速度,在某些应用场合其容量和性能仍然不能满足需求,容量有待扩大、性能有待提升。

专利申请号为201310476647.7的中国专利申请公开了一种基于PCIe的存储扩展系统及存储扩展方法,将多个存储设备通过级联的方式连接。该方法虽然可以扩展存储容量,但是由于多个级联设备不能够同时工作,所以性能得不到提升。

发明内容

本发明的目的在于解决现有技术中基于PCIe接口的固态硬盘容量和性能有限的问题,提供一种PCIe固态硬盘控制器、基于PCIe的存储系统及其数据读写方法。

为解决上述技术问题,本发明所采用的技术方案是:

一种PCIe固态硬盘控制器,包括PCIe控制接口、CPU、FLASH控制器、DMA模块和缓存,所述PCIe控制接口的上行端口与主机相连,所述CPU通过FLASH控制器与存储芯片相连,所述CPU还分别与DMA模块和缓存相连,所述缓存通过DMA模块和PCIe控制接口相连,其中PCIe控制接口完成标准PCIe协议控制功能,CPU负责处理主机命令,完成读写数据搬移的控制,DMA模块进行读写数据搬移,FLASH控制器实现对存储芯片的读写控制,缓存用于暂存待读写的数据以及CPU运行时的数据和变量。还包括收发控制模块和命令/响应转发模块,所述PCIe控制接口的下行端口通过收发控制模块与CPU相连,所述收发控制模块通过命令/响应转发模块与PCIe控制接口相连;所述CPU将所述PCIe固态硬盘控制器配置为主控制器或从控制器;

若所述PCIe固态硬盘控制器被配置为主控制器,则所述PCIe固态硬盘控制器被主机侧驱动识别为存储设备,主机的命令通过PCIe控制接口和收发控制模块发送至CPU后,CPU首先判断命令是否需要转发出去,若PCIe固态硬盘控制器能独立执行完成该命令,则不转发该命令,由PCIe固态硬盘控制器执行完成该命令,当该命令执行完成后,由CPU将执行完成该命令的响应依次通过收发控制模块和PCIe控制接口发送至主机;若PCIe固态硬盘控制器不能独立执行完成该命令,则CPU将该命令依次通过收发控制模块、命令/响应转发模块和PCIe控制接口转发至外部PCIe设备,当外部PCIe设备执行完成该命令后,外部PCIe设备将执行完成该命令的响应依次经过PCIe控制接口、命令/响应转发模块和收发控制模块发送至CPU,再由CPU将响应依次通过收发控制模块和PCIe控制接口发送至主机;

若所述PCIe固态硬盘控制器被配置为从控制器,则所述PCIe固态硬盘控制器被主机侧驱动识别为PCIe设备,外部存储设备转发的主机命令依次通过PCIe控制接口、命令/响应转发模块和收发控制模块发送至CPU,由PCIe固态硬盘控制器执行完成该命令,当该命令执行完成后,由CPU将执行完成该命令的响应依次通过收发控制模块、命令/响应转发模块和PCIe控制接口发送至外部存储设备。

作为一种优选方式,所述收发控制模块包括第一支路和第二支路,所述第一支路包括接收控制状态机和接收FIFO,所述接收控制状态机的输入端与命令/响应转发模块及PCIe控制接口的PCIe接收接口相连,所述接收控制状态机的输出端通过接收FIFO与CPU的CPU接收接口相连;所述第二支路包括发送控制状态机和发送FIFO,所述CPU的CPU发送接口通过发送FIFO与发送控制状态机的输入端相连,所述发送控制状态机的输出端分别与命令/响应转发模块及PCIe控制接口的PCIe发送接口相连;所述接收控制状态机用于控制命令或响应的接收,所述发送控制状态机用于控制命令或响应的发送;所述接收FIFO用于暂存PCIe固态硬盘控制器接收进来的命令或响应,所述发送FIFO用于暂存PCIe固态硬盘控制器发送出去的命令或响应;

若所述PCIe固态硬盘控制器被配置为主控制器,则主机的命令依次通过PCIe控制接口的PCIe接收接口、接收控制状态机和接收FIFO发送至CPU,CPU首先判断命令是否需要转发出去,若PCIe固态硬盘控制器能独立执行完成该命令,则不转发该命令,由PCIe固态硬盘控制器执行完成该命令,当该命令执行完成后,由CPU将执行完成该命令的响应依次通过发送FIFO、发送控制状态机和PCIe控制接口的PCIe发送接口发送至主机;若PCIe固态硬盘控制器不能独立执行完成该命令,则CPU将该命令依次通过发送FIFO、发送控制状态机、命令/响应转发模块和PCIe控制接口转发至外部PCIe设备,当外部PCIe设备执行完成该命令后,外部PCIe设备将执行完成该命令的响应依次经过PCIe控制接口、命令/响应转发模块、接收控制状态机和接收FIFO发送至CPU,再由CPU将响应依次通过发送FIFO、发送控制状态机和PCIe控制接口的PCIe发送接口发送至主机;

若所述PCIe固态硬盘控制器被配置为从控制器,则外部存储设备转发的主机命令依次通过PCIe控制接口、命令/响应转发模块、接收控制状态机和接收FIFO发送至CPU,由PCIe固态硬盘控制器执行完成该命令,当该命令执行完成后,由CPU将执行完成该命令的响应依次通过发送FIFO、发送控制状态机、命令/响应转发模块和PCIe控制接口发送至外部存储设备。

作为一种优选方式,所述命令/响应转发模块包括路由消息组帧模块和路由消息解帧模块;所述路由消息组帧模块的输入端与收发控制模块相连,路由消息组帧模块的输出端与PCIe控制接口相连;所述路由消息解帧模块的输入端与PCIe控制接口相连,路由消息解帧模块的输出端与收发控制模块相连;所述路由消息组帧模块将收发控制模块发送过来的命令/响应组帧后发送至PCIe控制接口;所述路由消息解帧模块将PCIe控制接口发送过来的命令/响应解帧后发送至收发控制模块。

作为一种优选方式,所述命令/响应转发模块包括路由消息组帧模块和路由消息解帧模块;所述路由消息组帧模块的输入端与发送控制状态机的输出端相连,路由消息组帧模块的输出端与PCIe控制接口相连;所述路由消息解帧模块的输入端与PCIe控制接口相连,路由消息解帧模块的输出端与接收控制状态机的输入端相连;所述路由消息组帧模块将发送控制状态机发送过来的命令/响应组帧后发送至PCIe控制接口;所述路由消息解帧模块将PCIe控制接口发送过来的命令/响应解帧后发送至接收控制状态机。

基于同一个发明构思,本发明还提供了一种基于PCIe的存储系统,包括PCIeswitch和N个所述的PCIe固态硬盘控制器,其中PCIeswitch的上行端口与主机相连,所述N个PCIe固态硬盘控制器均与PCIeswitch的下行端口相连,所述N个PCIe固态硬盘控制器由1个被配置为主控制器的PCIe固态硬盘控制器和N-1个被配置为从控制器的PCIe固态硬盘控制器组成,其中主控制器和各个从控制器与相同数量的存储芯片相接,各个存储芯片之间组合成RAID。

基于同一个发明构思,本发明还提供了一种数据读写方法,利用所述的基于PCIe的存储系统,包括步骤:

A.主机的命令依次通过PCIeswitch、主控制器中的PCIe控制接口和收发控制模块发送至主控制器中的CPU后,主控制器中的CPU根据该命令的地址、长度信息,以及主控制器与从控制器组成的RAID模式,计算该条命令需要由主控制器和哪些从控制器来完成,若主控制器能独立执行完成该命令,则不转发该命令,由主控制器执行完成该命令,当该命令执行完成后,由主控制器中的CPU将执行完成该命令的响应依次通过主控制器中的收发控制模块、PCIe控制接口和PCIeswitch发送至主机,数据读写过程结束;若主控制器不能独立执行完成该命令,执行步骤B;

B.主控制器中的CPU将该命令依次通过主控制器中的收发控制模块、命令/响应转发模块、PCIe控制接口和PCIeswitch转发至相应的从控制器的PCIe控制接口,并经由从控制器的命令/响应转发模块、收发控制模块至从控制器的CPU,由从控制器执行完成该命令,当从控制器执行完成该命令后,从控制器的CPU将执行完成该命令的响应依次经过从控制器中的收发控制模块、命令/响应转发模块发送至从控制器的PCIe控制接口,该响应再依次通过PCIeswitch、主控制器中的命令/响应转发模块、收发控制模块至主控制器中的CPU,主控制器中的CPU将该响应依次通过主控制器中的收发控制模块、PCIe控制接口和PCIeswitch发送至主机,数据读写过程结束。

本发明能够灵活扩展,由于主控制器和多个从控制器可同时运行,本发明提高了性能,性能约为现有的单个设备PCIe固态硬盘的N倍;主控制器和多个从控制器分别控制相同数量的存储芯片,本发明扩大了容量,容量约为现有的单个设备PCIe固态硬盘的N倍。

附图说明

图1为现有的基于PCIe接口的固态硬盘结构示意图。

图2为本发明PCIe固态硬盘控制器一实施例的结构示意图。

图3为图2中收发控制模块的结构示意图。

图4为图2中命令/响应转发模块的结构示意图。

图5为本发明基于PCIe的存储系统的结构示意图。

图6为本发明数据读写方法一实施例的流程图。

其中,1为主机,2为PCIe固态硬盘控制器,3为存储芯片,4为PCIe控制接口,5为命令/响应转发模块,51为路由消息组帧模块,52为路由消息解帧模块,6为收发控制模块,61为接收控制状态机,62为接收FIFO,63为发送控制状态机,64为发送FIFO,7为CPU,8为FLASH控制器,9为DMA模块,10为缓存,11为PCIeswitch。

具体实施方式

本发明英文符号技术术语含义说明如下:

PCIe:高速总线接口标准。

NANDFlash:一种闪存存储介质。

Flash:存储芯片的一种。

DMA:directmemoryaccess,直接内存存取,通常用来进行大量数据的搬移。

FIFO:firstinfirstout,先进先出队列,在本发明中指进行先进先出管理的数据缓存。

PCIeswitch:PCIe扩展器,可以把路PCIe接口扩展为多路PCIe接口。

CPU:CentralProcessingUnit,中央处理器。

RAID:RedundantArraysofIndependentDisks,磁盘阵列。

PCIeID:PCIe固态硬盘控制器被分配的编号。

AHCI:SerialATAAdvancedHostControllerInterface,高级主机控制器接口,是一种PCI类设备。用于主机软件同SATA设备之间通信,所以该协议承载的是ATA命令。

AHCIPCIe固态硬盘:以PCIe作为物理接口,以AHCI作为上层接口的固态硬盘。

如图2所示,本发明PCIe固态硬盘控制器的一实施例包括包括PCIe控制接口4、CPU7、FLASH控制器8、DMA模块9和缓存10,所述PCIe控制接口4的上行端口与主机1相连,所述CPU7通过FLASH控制器8与存储芯片3相连,所述CPU7还分别与DMA模块9和缓存10相连,所述缓存10通过DMA模块9和PCIe控制接口4相连,其中PCIe控制接口4完成标准PCIe协议控制功能,CPU7负责处理主机1的命令,完成读写数据搬移的控制,DMA模块9进行读写数据搬移,FLASH控制器8实现对存储芯片3的读写控制,缓存10用于暂存待读写的数据以及CPU7运行时的数据和变量,还包括收发控制模块6和命令/响应转发模块5,所述PCIe控制接口4通过收发控制模块6与CPU7相连,所述收发控制模块6通过命令/响应转发模块5与PCIe控制接口4相连;所述CPU7将所述PCIe固态硬盘控制器2配置为主控制器或从控制器;由PCIe固态硬盘控制器2中的CPU7根据PCIe固态硬盘控制器2的特定管脚的值,来配置本PCIe固态硬盘控制器2为主控制器或从控制器。

若所述PCIe固态硬盘控制器2被配置为主控制器,则所述PCIe固态硬盘控制器2被主机1侧驱动识别为存储设备,主机1的命令通过PCIe控制接口4和收发控制模块6发送至CPU7后,CPU7首先判断命令是否需要转发出去,若PCIe固态硬盘控制器2能独立执行完成该命令,则不转发该命令,由PCIe固态硬盘控制器2执行完成该命令,当该命令执行完成后,由CPU7将执行完成该命令的响应依次通过收发控制模块6和PCIe控制接口4发送至主机1;若PCIe固态硬盘控制器2不能独立执行完成该命令,则CPU7将该命令依次通过收发控制模块6、命令/响应转发模块5和PCIe控制接口4转发至外部PCIe设备,当外部PCIe设备执行完成该命令后,外部PCIe设备将执行完成该命令的响应依次经过PCIe控制接口4、命令/响应转发模块5和收发控制模块6发送至CPU7,再由CPU7将响应依次通过收发控制模块6和PCIe控制接口4发送至主机1;

若所述PCIe固态硬盘控制器2被配置为从控制器,则所述PCIe固态硬盘控制器2被主机1侧驱动识别为PCIe设备,外部存储设备转发的主机1的命令依次通过PCIe控制接口4、命令/响应转发模块5和收发控制模块6发送至CPU7,由PCIe固态硬盘控制器2执行完成该命令,当该命令执行完成后,由CPU7将执行完成该命令的响应依次通过收发控制模块6、命令/响应转发模块5和PCIe控制接口4发送至外部存储设备。

图3为图2中收发控制模块6的结构示意图。收发控制模块6跟CPU7、命令/响应转发模块5和PCIe控制接口4三个模块对接,完成数据路由的功能。CPU7通过收发控制模块6,可以发送帧到主机1,也可以通过收发控制模块6接收主机1发过来的帧。当PCIe固态硬盘控制器2被配置为主控制器时,CPU7通过收发控制模块6将命令转发给从控制器,并通过收发控制模块6接收从控制器发回的响应;通过收发控制模块6接收主机1的命令,和发送响应到主机1。当PCIe固态硬盘控制器2被配置为从控制器时,CPU7通过收发控制模块6接收主控制器转发过来的命令,并通过收发控制模块6转发响应到主控制器。

所述收发控制模块6包括第一支路和第二支路,所述第一支路包括接收控制状态机61和接收FIFO62,所述接收控制状态机61的输入端与命令/响应转发模块5及PCIe控制接口4的PCIe接收接口相连,所述接收控制状态机61的输出端通过接收FIFO62与CPU7的CPU7接收接口相连;所述第二支路包括发送控制状态机63和发送FIFO64,所述CPU7的CPU7发送接口通过发送FIFO64与发送控制状态机63的输入端相连,所述发送控制状态机63的输出端分别与命令/响应转发模块5及PCIe控制接口4的PCIe发送接口相连;所述接收控制状态机61用于控制命令或响应的接收,所述发送控制状态机63用于控制命令或响应的发送;所述接收FIFO62用于暂存PCIe固态硬盘控制器2接收进来的命令或响应,所述发送FIFO64用于暂存PCIe固态硬盘控制器2发送出去的命令或响应;

若所述PCIe固态硬盘控制器2被配置为主控制器,则主机1的命令依次通过PCIe控制接口4的PCIe接收接口、接收控制状态机61和接收FIFO62发送至CPU7,CPU7首先判断命令是否需要转发出去,若PCIe固态硬盘控制器2能独立执行完成该命令,则不转发该命令,由PCIe固态硬盘控制器2执行完成该命令,当该命令执行完成后,由CPU7将执行完成该命令的响应依次通过发送FIFO64、发送控制状态机63和PCIe控制接口4的PCIe发送接口发送至主机1;若PCIe固态硬盘控制器2不能独立执行完成该命令,则CPU7将该命令依次通过发送FIFO64、发送控制状态机63、命令/响应转发模块5和PCIe控制接口4转发至外部PCIe设备,当外部PCIe设备执行完成该命令后,外部PCIe设备将执行完成该命令的响应依次经过PCIe控制接口4、命令/响应转发模块5、接收控制状态机61和接收FIFO62发送至CPU7,再由CPU7将响应依次通过发送FIFO64、发送控制状态机63和PCIe控制接口4的PCIe发送接口发送至主机1;

若所述PCIe固态硬盘控制器2被配置为从控制器,则外部存储设备转发的主机1的命令依次通过PCIe控制接口4、命令/响应转发模块5、接收控制状态机61和接收FIFO62发送至CPU7,由PCIe固态硬盘控制器2执行完成该命令,当该命令执行完成后,由CPU7将执行完成该命令的响应依次通过发送FIFO64、发送控制状态机63、命令/响应转发模块5和PCIe控制接口4发送至外部存储设备。

图4为图2中命令/响应转发模块5的结构示意图。命令/响应转发模块5是命令/响应的转发路径,路由消息组帧模块51和路由消息解帧模块52负责根据PCIe规定的用户自定消息帧格式进行组帧和解帧。

所述命令/响应转发模块5包括路由消息组帧模块51和路由消息解帧模块52;所述路由消息组帧模块51的输入端与发送控制状态机63的输出端相连,路由消息组帧模块51的输出端与PCIe控制接口4相连;所述路由消息解帧模块52的输入端与PCIe控制接口4相连,路由消息解帧模块52的输出端与接收控制状态机61的输入端相连;所述路由消息组帧模块51将发送控制状态机63发送过来的命令/响应组帧后发送至PCIe控制接口4;所述路由消息解帧模块52将PCIe控制接口4发送过来的命令/响应解帧后发送至接收控制状态机61。

图5为本发明基于PCIe的存储系统的结构示意图。基于PCIe的存储系统包括PCIeswitch11和5个所述的PCIe固态硬盘控制器,其中PCIeswitch11的上行端口与主机1相连,所述5个PCIe固态硬盘控制器2均与PCIeswitch11的下行端口相连,所述5个PCIe固态硬盘控制器2由1个被配置为主控制器的PCIe固态硬盘控制器2和4个被配置为从控制器的PCIe固态硬盘控制器2组成,其中主控制器和各个从控制器与相同数量的存储芯片3相接,各个存储芯片3之间组合成RAID。其中最左边的PCIe固态硬盘控制器2被配置为主控制器,其余的4个PCIe固态硬盘控制器2都被配置为从控制器。主控制器的特征在于能够被主机1侧驱动识别为一个存储设备,并能将主机1的命令通过PCIeswitch11路由到从控制器,从控制器的特征在于只能被主机1侧驱动识别为一个PCIe设备,并能够将命令完成的响应通过PCIeswitch11路由到主控制器。图5中的基于PCIe的存储系统性能约为现有的单个设备PCIe固态硬盘的5倍;容量约为现有的单个设备PCIe固态硬盘的5倍。

主控制器的工作过程如下:

主机1的读写命令经PCIeswitch11和PCIe控制接口4,由收发控制模块6发送到CPU7。CPU7根据命令中的地址、长度信息,以及主控制器与从控制器组成的RAID模式,计算本条命令需要由哪些PCIe固态硬盘控制器2(主控制器和某些从控制器)来完成,判断这条命令是否需要转发到从控制器。如果需要转发至从控制器,则将需要转发至的从控制器的PCIeID号和转发标志同本命令一起发送给收发控制模块6,收发控制模块6的发送状态机根据CPU7发送过来的信息,将命令发送给命令/响应转发模块5进行PCIe自定义消息的组帧,再由PCIe控制接口4和PCIeswitch11发送到从控制器。PCIeswitch11会根据该消息中的识别号(PCIeID号),将主机1的命令发送给相应的从控制器。如果不需要转发给从控制器,则CPU7解析该命令,如果是读命令,CPU7请求FLASH控制器8把数据搬到缓存10内,然后CPU7请求DMA将数据通过PCIe控制接口4和PCIeswitch11发送到主机1的内存。最后CPU7将完成本条命令的响应通过收发控制模块6、PCIe控制接口4和PCIeswitch11发送到主机1的内存,本条命令完成。如果是写命令,CPU7请求DMA将数据通过PCIeswitch11、PCIe控制接口4搬移到缓存10,然后通知FLASH控制器8将数据从缓存10读出写入存储芯片3,最后CPU7将完成本条命令的响应通过收发控制模块6、PCIe控制接口4和PCIeswitch11发送到主机1的内存,本条命令完成。

从控模式的工作过程如下:

命令/响应转发模块5通过PCIeswitch11和PCIe控制接口4接收到内含主控制器转发过来的主机1的命令的PCIe自定义消息,将消息解帧后,取出命令内容,通过收发控制模块6发给CPU7。CPU7解析命令,如果是读命令,CPU7请求FLASH控制器8把数据搬到缓存10内,然后CPU7请求DMA将数据通过PCIe控制接口4和PCIeswitch11发送到主机1的内存,最后将完成本条命令的响应以PCIe自定义消息的格式,通过收发控制模块6和命令/响应转发模块5发送给主控制器。如果是写命令,CPU7请求DMA将数据通过PCIeswitch11、PCIe控制接口4搬移到缓存10,然后通知FLASH控制器8将数据从缓存10读出写入存储芯片3,最后将完成本条命令的响应以PCIe自定义消息的格式,通过收发控制模块6、命令/响应转发模块5、PCIe控制接口4和PCIeswitch11发送给主控制器。PCIeswitch11会根据该消息中的识别号,将响应发送给主控制器。主控制器的命令/响应转发模块5接收到内含响应的PCIe自定义消息后,将该消息解帧,并将响应内容发送给CPU7,CPU7再通过收发控制模块6的发送状态机将响应发送到主机1的内存,本条命令完成。

主控制器和从控制器的区别在于:

第一,主控制器中,主机1的命令直接从主机1的内存中获取,经图2中路径①②到达CPU7;从控制器中,主机1的命令是由主机1经主控制器中的路径①②③⑤⑦到达PCIeswitch11,再经PCIeswitch11路由到从控制器,经从控制器中的路径⑧⑥②到达CPU7。

第二,主控制器中,响应直接通过路径③④发送到主机1的内存;从控制器中,响应经过③⑤⑦到达PCIeswitch11,再经PCIeswitch11路由到主控制器,经主控制器中的路径⑧⑥②③④到达主机1。

从控制器只被识别为PCIe设备:从控制模式在初始化PCIe配置空间时,不初始化配置空间基准地址,或者初始化该PCIe设备为未定义的设备,则主机1的驱动不会识别该PCIe设备为存储设备,只会识别为PCIe设备。

PCIe固态硬盘控制器2PCIeID号的获取方法:由CPU7软件根据主控制器或者从控制器连接的PCIeswitch11的端口号,以及PCIe固态硬盘控制器2被分配的PCIeID号,由PCIe设备枚举规则,来计算其他PCIe固态硬盘控制器2的PCIeID号,并配置到相应寄存器。如,主控制器连接PCIeswitch11的端口1,其被分配的PCIeID号为0:02:0(总线号:设备号:功能号),则接在端口2上的从控制器的PCIeID号为0:03:0,接在端口3上的从控制器的PCIeID号为0:04:0。

利用所述的基于PCIe的存储系统,本发明一种数据读写方法,包括步骤:

A.主机1的命令依次通过PCIeswitch11、主控制器中的PCIe控制接口4和收发控制模块6发送至主控制器中的CPU7后,主控制器中的CPU7根据该命令的地址、长度信息,以及主控制器与从控制器组成的RAID模式,计算该条命令需要由主控制器和哪些从控制器来完成,若主控制器能独立执行完成该命令,则不转发该命令,由主控制器执行完成该命令,如果是读命令,则在主控制器内部,CPU7请求FLASH控制器8把存储芯片3中的数据搬到缓存10内,然后CPU7请求DMA模块9将缓存10内的数据通过PCIe控制接口4和PCIeswitch11发送到主机1的内存,最后CPU7将完成本条命令的响应通过收发控制模块6、PCIe控制接口4和PCIeswitch11发送到主机1的内存,本条命令完成,数据读写过程结束;如果是写命令,则在主控制器内部,CPU7请求DMA模块9将主机1的内存中的数据通过PCIeswitch11和PCIe控制接口4搬移到缓存10,然后CPU7通知FLASH控制器8将数据从缓存10读出并写入存储芯片3,最后CPU7将完成本条命令的响应通过PCIe控制接口4和PCIeswitch11发送到主机1的内存,本条命令完成,数据读写过程结束。若主控制器不能独立执行完成该命令,执行步骤B;

B.主控制器中的CPU7将该命令依次通过主控制器中的收发控制模块6、命令/响应转发模块5、PCIe控制接口4和PCIeswitch11转发至相应的从控制器的PCIe控制接口4,并经由从控制器的命令/响应转发模块5、收发控制模块6至从控制器的CPU7,由从控制器执行完成该命令,如果是读命令,则在从控制器内部,CPU7请求FLASH控制器8把存储芯片3中的数据搬到缓存10内,然后CPU7请求DMA模块9将缓存10内的数据通过PCIe控制接口4和PCIeswitch11发送到主机1的内存,本条命令完成;如果是写命令,则在从控制器内部,CPU7请求DMA模块9将主机1的内存中的数据通过PCIeswitch11和PCIe控制接口4搬移到缓存10,然后CPU7通知FLASH控制器8将数据从缓存10读出并写入存储芯片3,本条命令完成;当从控制器执行完成该命令后,从控制器的CPU7将执行完成该命令的响应依次经过从控制器中的收发控制模块6、命令/响应转发模块5发送至从控制器的PCIe控制接口4,该响应再依次通过PCIeswitch11、主控制器中的命令/响应转发模块5、收发控制模块6至主控制器中的CPU7,主控制器中的CPU7将该响应依次通过主控制器中的收发控制模块6、PCIe控制接口4和PCIeswitch11发送至主机1,数据读写过程结束。

图6为本发明数据读写方法一实施例的流程图。其中主控为主控制器的简称,从控为从控制器的简称。

下面以AHCIPCIe固态硬盘为例,对本发明作进一步说明。本实施例包含一个含有至少2个下行端口和1个上行端口的PCIeswitch11,一个配置为主控制器的AHCIPCIe固态硬盘控制器2,以及至少一个配置为从控制器的AHCIPCIe固态硬盘控制器2,还包含多片分别由主控制器和从控制器控制的NANDFlash存储芯片3。主控制器和从控制器分别跟PCIeswitch11的下行端口相连,并组成RAID0。主控制器接在PCIeswitch11的端口1,其他从控制器依次往后接。其中每个主控制器和从控制器控制相同数量的存储芯片3,以便组合成RAID。

上述存储系统工作步骤如下:

步骤1,系统上电,各主控制器和从控制器完成初始化,包括CPU7读取PCIe固态硬盘控制器2的特定管脚的值来设置PCIe固态硬盘控制器2为的主控制器或从控制器,以及通过初始化PCIe的配置空间使主控制器能被主机1的驱动识别为存储设备,从控制器只能识别为PCIe设备。

步骤2,根据PCIe协议规定,主控制器和各从控制器与PCIeswitch11链路训练并建立链路。

步骤3,各控制器获取其它PCIe固态硬盘控制器2的PCIeID。

步骤4,主控制器从主机1的内存获取命令,并根据该命令的地址、长度等信息和本存储系统组成RAID0的条带的大小,计算出有数据块需要写入或者读出的从控制器,并将命令经PCIeswitch11转发给这些从控制器。

步骤5,根据AHCI协议,设备在获取主机1的命令后,需要从主机1的内存获取完成该命令需要的表项,这些表项的内容是主机1为完成本次命令而分配的内存地址信息,本次命令涉及到的要搬移的数据均放在这些内存地址。因此,从控制器在收到命令后,向主机1的内存获取完成此条命令对应的表项,根据表项中的内存地址信息,完成相应数据块搬移。完成后将命令完成的响应消息经PCIeswitch11转发给主控制器。

步骤6,根据AHCI协议,设备在完成命令后,需要发送命令完成响应和中断消息到主机1的内存。主控制器在收到所有命令命中PCIe固态硬盘控制器2(即本条命令涉及到的所有主控制器和从控制器)发送的的命令完成响应消息后,向主机1的内存发送命令完成响应消息和中断,本命令完成,本次数据读写过程结束。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号