一种NVMe控制器的制作方法

文档序号:23176937发布日期:2020-12-04 14:07阅读:161来源:国知局
一种NVMe控制器的制作方法

本实用新型涉及电子技术领域,尤其涉及一种nvme控制器。



背景技术:

hdd和早期的寄存器模块绝大多数都是使用sata接口,使用的是ahci(advancedhostcontrollerinterface)协议,在hdd时代或者寄存器模块早期,ahci协议和sata接口足够满足系统的性能需求,但是随着底层闪存技术的发展,寄存器模块盘的性能得到极大提升,ahci协议和sata接口已经不能满足如今寄存器模块性能的需求了,在这种背景下,nvme(non-volatilememoryexpress)协议应运而生,nvme协议是运行在pcie接口上的协议标准,具有低时延、高性能、低功耗等优点,作为一种新兴的通信协议,现在并没有通用的nvme控制器。



技术实现要素:

本实用新型的目的就在于为了解决上述问题而提供一种nvme控制器。

本实用新型通过以下技术方案来实现上述目的:

一种nvme控制器,包括命令队列处理模块、完成队列处理模块、数据缓存模块、访问模块、寄存器模块、随机存取存储器、内存模块、高速串行总线和中央处理器,所述命令队列处理模块、所述完成队列处理模块、所述数据缓存模块、所述访问模块均与高速串行总线电连接,所述访问模块与所述中央处理器电连接,所述随机存取存储器与所述命令队列处理模块电连接,所述内存模块与所述数据缓存模块电连接。

具体地,所述命令队列处理模块包括sq管理模块、sq缓存模块和prplist模块,所述sq管理模块、所述sq缓存模块和所述prplist模块电连接;

所述sq管理模块接收命令指令,并将其打包成nvme协议规定的读写命令,完成对寄存器模块数据的读写操作;

所述sq缓存模块用于缓存读写命令;

所述prplist模块用于缓存prplist数据;

所述随机存取存储器用于存储读写命令和prplist数据。

具体地,所述数据缓存模块包括数据处理模块和缓存模块,所述数据处理模块通过所述缓存模块与所述高速串行总线电连接,所述数据处理模块与所述内存模块电连接;

所述内存模块用于存储所述寄存器模块写入或读取的数据;

所述数据处理模块用于将所述寄存器发送的非对齐的读写命令转换为所述内存模块支持的对齐的读写命令;

所述缓存模块用于预取数据,所述缓存模块的写通道包括5组缓存fifo,所述缓存模块的读通道包括6组缓存fifo。

优选地,所述访问模块通过locabus总线与所述中央处理器电连接。

本实用新型的有益效果在于:

本实用新型一种nvme控制器基于现有的nvme标准协议,实现了对寄存器模块的读写操作,提供了一组简单的外部接口供使用,并达到了较高的读写带宽。

附图说明

图1是本实用新型所述的一种nvme控制器的结构示意图;

图2是本实用新型所述命令队列处理模块的示意图。

具体实施方式

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

为使本申请的目的、技术方案和优点更加清楚,下面结合图1和图2对本实用新型作进一步说明:

一种nvme控制器,包括命令队列处理模块sq、完成队列处理模块cq、数据缓存模块、访问模块cpu_accrss_regs、寄存器模块ssd、随机存取存储器ram、内存模块ddr、高速串行总线pcie和中央处理器cpu,命令队列处理模块sq、完成队列处理模块cq、数据缓存模块、访问模块cpu_accrss_regs均与高速串行总线pcie电连接,访问模块cpu_accrss_regs与中央处理器cpu电连接,随机存取存储器ram与命令队列处理模块sq电连接,内存模块ddr与数据缓存模块电连接。

命令队列处理模块sq包括sq管理模块、sq缓存模块cache和prplist模块,sq管理模块、sq缓存模块cache和prplist模块电连接;

sq管理模块接收命令指令,并将其打包成nvme协议规定的读写命令,完成对寄存器模块ssd数据的读写操作;sq缓存模块cache用于缓存读写命令;prplist模块用于缓存prplist数据;随机存取存储器ram用于存储读写命令和prplist数据。命令队列处理模块sq将命令和prplist都存储在随机存取存储器ram中,没有写入内存模块内,主要是为了减少读延迟

命令队列处理模块sq向外提供一组自定义的命令接口,包括命令id、内存地址、寄存器模块ssd的逻辑地址、数据大小、命令类型、使能和将满信号,命令队列处理模块sq接收来自外部模块的命令,将其打包成nvme协议规定的读写命令,完成对寄存器模块ssd数据的读写操作。

完成队列处理模块cq的结构比较简单,主要用于接收并分析寄存器模块ssd返回的命令响应,判断对应的命令是否出错,对于出错的命令将被提取出需要的命令信息写入fifo中以供中央处理器cpu读取分析错误;正确的命令则将命令id返回给命令队列处理模块sq进行分析管理。

数据缓存模块包括数据处理模块dq和缓存模块cache,数据处理模块dq通过缓存模块cache与高速串行总线pcie电连接,数据处理模块dq与内存模块ddr电连接;内存模块ddr用于存储寄存器模块ssd写入或读取的数据;

数据处理模块dq用于将寄存器发送的非对齐的读写命令转换为内存模块ddr支持的对齐的读写命令;缓存模块cache用于预取数据,缓存模块cache的写通道包括5组缓存fifo,缓存模块cache的读通道包括6组缓存fifo。

数据缓存模块连接高速串行总线pcie,接收来自寄存器模块ssd的读写命令,对于内存模块ddr来说,读写命令都是按照32字节对齐的操作,数据缓存模块需要将寄存器模块ssd发来的非对齐命令转换成相应的对齐命令,才能正确访问内存模块ddr。为保证读写带宽,进行了预取的操作,设立缓存模块cache,因为寄存器模块ssd一个4kb的数据是顺序的,因此采用fifo代替随机存取存储器ram实现,简化了逻辑操作。

这样在读数据处理模块dq的数据侧从fifo中读取出数据的延迟远小于从内存模块ddr中读取数据的延迟;在写数据处理模块dq数据侧,数据写入fifo中时是以burst的形式写的,提高了内存模块ddr带宽的利用效率。同时考虑到寄存器模块ssd发起的多个4kb的读写命令有可能会乱序,因此设计了多个这样的fifo对读写数据进行缓存来保序。对于sq和prplist以及其他的非数据处理模块dq数据,另外有一个fifo进行存储。

优选地,访问模块cpu_accrss_regs通过locabus总线与中央处理器cpu电连接。

通过localbus总线连接中央处理器cpu,自定义了一种通信协议用于中央处理器cpu发起读写寄存器模块ssd的操作,中央处理器cpu发起的读写命令会被写入fifo中,逻辑会将命令发送给高速串行总线pcie,完成对寄存器模块ssd的读写操作。

在以下描述中,对“一个实施例”、“实施例”、“一个示例”、“示例”等等的引用表明如此描述的实施例或示例可以包括特定特征、结构、特性、性质、元素或限度,但并非每个实施例或示例都必然包括特定特征、结构、特性、性质、元素或限度。另外,重复使用短语“根据本申请的一个实施例”虽然有可能是指代相同实施例,但并非必然指代相同的实施例。

对所公开的实施例的上述说明,是本领域专业技术人员能够实现或使用本实用新型。对这些实施例的多种修改对本领域的专业技术人员来说将使显而易见的,本文所定义的一般原理可以在不脱离实用新型的精神或范围的情况下,在其他实施例中实现。因此,本实用新型将不会被限制与本文所示的这些实施例,而是要符合与本文所公开的原理和新颖性特点相一致的最宽的范围。

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