CN103942005B - 一种固态硬盘及其控制装置、系统、方法 - Google Patents

一种固态硬盘及其控制装置、系统、方法 Download PDF

Info

Publication number
CN103942005B
CN103942005B CN201310022799.XA CN201310022799A CN103942005B CN 103942005 B CN103942005 B CN 103942005B CN 201310022799 A CN201310022799 A CN 201310022799A CN 103942005 B CN103942005 B CN 103942005B
Authority
CN
China
Prior art keywords
solid state
order
field
state hard
hard disc
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
Application number
CN201310022799.XA
Other languages
English (en)
Other versions
CN103942005A (zh
Inventor
黎智
李欣
王灿
杨继涛
张琴
李程
向志华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhongxin Information Technology Co ltd
Original Assignee
Guangdong Huasheng Ltd Data Solid State Storage
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Huasheng Ltd Data Solid State Storage filed Critical Guangdong Huasheng Ltd Data Solid State Storage
Priority to CN201310022799.XA priority Critical patent/CN103942005B/zh
Publication of CN103942005A publication Critical patent/CN103942005A/zh
Application granted granted Critical
Publication of CN103942005B publication Critical patent/CN103942005B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明涉及计算机领域,尤其涉及一种固态硬盘及其对应的控制装置、控制系统和控制方法。本发明提供一种固态硬盘及其对应的控制装置、控制系统和控制方法,该方法包括:创建一条原生命令队列NCQ,并将VendorSpecific指令写入NCQ的LBAField字段;向固态硬盘下发该NCQ命令;固态硬盘接收NCQ命令后,解析其LBAField字段,判断LBAField字段是否携带VendorSpecific指令代码;若判断为是,则根据VendorSpecific指令执行相应的操作,并反馈执行结果。本发明利用NCQ下发VendorSpecific指令,在不支持VendorSpecific命令的主机环境上同样实现VendorSpecific对应的功能。

Description

一种固态硬盘及其控制装置、系统、方法
技术领域
本发明涉及计算机领域,尤其涉及一种固态硬盘及其对应的控制装置、控制系统和控制方法。
背景技术
固态硬盘(Nand Flash)由控制单元和存储单元(FLASH芯片)组成,简单的说就是用固态电子存储芯片阵列而制成的硬盘,固态硬盘的接口规范和定义、功能及使用方法上与普通硬盘的相同,在产品外形和尺寸上也与普通硬盘一致(参见中国专利申请“基于固态硬盘的计算机系统”CN201210000778.3)。
目前固态硬盘广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等领域。虽然目前成本较高,但也正在逐渐普及到DIY市场。固态硬盘相对于传统硬盘,具有速度快、响应延时低、抗震动、静音等优点。
但是由于存储介质的改变,需要根据固态硬盘的特性提供一些功能,供主机调用以获取高的性能及增加可靠性。这些功能一般都是采用Vendor Specific命令进行实现(参见中国专利申请“原生SATA的固态硬盘控制器”CN200810032053.6、美国专利“NAND flashmemory”US8233325以及“Increased NAND flash memory read throughput”US8174892)。
但是在实际应用中,部分RAID卡、HBA卡、SPS(SATA Port Selector)芯片存在对ATA命令部分支持的情况,特别是对于ATA协议(ATA串行传输是一种高速的ATA协议。串行传输使用了G比特技术和8b/10b编码)中规定的Vendor Specific命令会出现不支持的情况。导致在这种主机环境下这些Vendor Specific命令无法下发,固态硬盘不能得到合适的配置,从而不能发挥出应有的性能及获得可靠性的提升。
即使在支持Vendor Specific命令的主机环境中。由于SATA(Serial AdvancedTechnology Attachment,一种基于行业标准的串行硬件驱动器接口)协议规定,NCQ(Native Command Queue)命令和非NCQ命令不能混合执行,当下发这些为固态硬盘设计的Vendor Specific命令时,必须先停止业务(即NCQ命令),这样会造成性能的短暂下降。
发明内容
为解决上述现有技术中存在的技术问题,本发明提供一种固态硬盘及其对应的控制装置、控制系统和控制方法,本发明提供的技术方案主要是利用NCQ命令下发VendorSpecific指令代码,在不支持Vendor Specific命令的主机环境上同样实现VendorSpecific命令对应的功能,从而避免在某些主机环境上无法下发Vendor Specific命令的情况。同时本发明提供的技术方案可以将下发Vendor Specific命令对固态硬盘性能造成的影响降到最低程度,保证固态硬盘在各种环境下均可以按照设计目的获得高的性能和良好的可靠性。
为解决上述技术问题,本发明提供一种固态硬盘控制方法,包括:
创建一条原生命令队列NCQ,并将设定的Vendor Specific指令代码写入到NCQ命令的LBA Field字段;
向固态硬盘下发携带有所述Vendor Specific指令代码的NCQ命令;
所述固态硬盘接收所述NCQ命令后,解析其LBA Field字段,并判断所述LBA Field字段是否携带Vendor Specific指令代码;
若所述判断为是,则根据所述Vendor Specific指令代码执行相应的操作,并反馈执行结果。
其中,所述判断所述LBA Field字段是否携带Vendor Specific指令代码之后还包括:若所述判断为否,则进一步判断所述LBA Field字段是否在所述固态硬盘的读写范围内;
若判断为是,则执行相应读写操作,包括:读取固态硬盘上的相应数据和/或将相应数据写入固态硬盘;若判断为否,则反馈命令失败。
其中,所述NCQ命令包括:READ FPDMA QUEUED命令和/或WRITE FPDMA QUEUED命令;
所述NCQ命令的LBA Field字段的有效值为48Bit,并定义0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围为Vendor Specific指令代码。
其中,所述固态硬盘接收所述NCQ命令后,解析其LBA Field字段,并判断所述LBAField字段是否携带Vendor Specific指令代码,包括
固态硬盘接收所述NCQ命令后,解析其LBA Field字段,若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围内,则判定其为Vendor Specific指令代码;若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围外,则进一步判断其是否在所述固态硬盘的读写范围内。
其中,所述根据所述Vendor Specific指令代码执行相应的操作,并反馈执行结果,包括:
若所述Vendor Specific指令代码被携带在READ FPDMA QUEUED命令中,则根据所述Vendor Specific指令代码,在固态硬盘中查询相应的数据并反馈给主机,并通知主机命令处理完成;
若所述Vendor Specific指令代码被携带在WRITE FPDMA QUEUED命令中,则根据所述Vendor Specific指令代码,在固态硬盘中执行相应的设置操作,并通知主机命令处理完成。
其中,所述若所述Vendor Specific指令代码被携带在WRITE FPDMA QUEUED命令中,则根据所述Vendor Specific指令代码,在固态硬盘中执行相应的设置操作,并通知主机命令处理完成中,还包括:
如果设置不成功,则通知主机命令处理失败;并将错误的原因记录在NCQ CommandError Log中,待主机读取。
相应的,本发明还提供一种固态硬盘控制装置,包括:
代码植入模块,用于创建原生命令队列NCQ,并将设定的Vendor Specific指令代码写入到NCQ命令的LBA Field字段;
命令下发模块,用于向固态硬盘下发携带有所述Vendor Specific指令代码的NCQ命令;使所述固态硬盘接收所述NCQ命令后,解析其LBA Field字段,并判断所述LBA Field字段是否携带Vendor Specific指令代码;若所述判断为是,则根据所述Vendor Specific指令代码执行相应的操作,并反馈执行结果。
其中,所述代码植入模块包括:
命令创建单元,用于创建所述NCQ命令,所述NCQ命令包括:READ FPDMA QUEUED命令和/或WRITE FPDMA QUEUED命令;
代码植入单元,用于在命令创建单元所创建的NCQ命令的LBA Field字段写入Vendor Specific指令代码;所述NCQ命令的LBA Field字段的有效值为48Bit,并定义0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围为Vendor Specific指令代码。
相应的,本发明还提供一种固态硬盘,包括:
命令解析模块,用于在接收到NCQ命令后,解析其LBA Field字段,并判断所述LBAField字段是否携带Vendor Specific指令代码;所述NCQ命令是由主机创建,并将设定的Vendor Specific指令代码写入到NCQ命令的LBA Field字段后向固态硬盘下发的;
命令执行模块,用于在所述命令解析模块判定所述NCQ命令的LBA Field字段携带Vendor Specific指令代码时,根据所述Vendor Specific指令代码执行相应的操作,并反馈执行结果。
其中,所述命令解析模块包括:
第一解析单元,用于在接收到NCQ命令后,解析其LBA Field字段,并判断所述LBAField字段是否携带Vendor Specific指令代码;
第二解析单元,用于在所述第一解析单元判定所述LBA Field字段未携带VendorSpecific指令代码时,进一步判断所述LBA Field字段是否在所述固态硬盘的读写范围内;若判断为是,则命令执行模块执行相应读写操作,包括:读取固态硬盘上的相应数据和/或将相应数据写入固态硬盘;若判断为否,则反馈命令失败。
其中,所述第一解析单元用于在接收所述NCQ命令后,解析其LBA Field字段,若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围内,则判定其为VendorSpecific指令代码;若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围外,则通知所述第二解析单元进一步判断其是否在所述固态硬盘的读写范围内。
其中,所述命令执行模块包括:
第一执行单元,用于在所述Vendor Specific指令代码被携带在READ FPDMAQUEUED命令中时,根据所述Vendor Specific指令代码,在固态硬盘中查询相应的数据并反馈给主机;
第二执行单元,用于在所述Vendor Specific指令代码被携带在WRITE FPDMAQUEUED命令中时,根据所述Vendor Specific指令代码,在固态硬盘中执行相应的设置操作;
执行反馈单元,用于在所述第一执行单元和/或第二执行单元执行相应的VendorSpecific指令代码后,通知主机命令处理完成。
其中,所述执行反馈单元还用于在所述第二执行单元执行设置操作不成功时,通知主机命令处理失败;并将错误的原因记录在NCQ Command Error Log中,待主机读取。
最后,本发明还提供一种固态硬盘控制系统,该系统包括上述固态硬盘控制装置以及上述固态硬盘。
本发明提供的固态硬盘及其对应的控制装置、控制系统和控制方法,利用NCQ命令下发Vendor Specific指令代码的方式,在不支持Vendor Specific命令的主机环境上同样实现Vendor Specific命令对应的功能,从而避免在某些主机环境上无法下发VendorSpecific命令的情况,同时可以将下发Vendor Specific命令对固态硬盘性能造成的影响降到最低程度。
进一步的,在本发明提供的技术方案中,由于NCQ命令具有并发和乱序执行的特性,在利用NCQ命令执行Vendor Specific指令的时候,不会对进行中的业务(即读写NCQCommand)产生影响,保持比较平稳的性能。
进一步的,在本发明提供的技术方案中,NCQ命令作为SATA协议中非常重要的一种传输协议,READ FPDMAQUEUED和WRITE FPDMA QUEUED命令是RAID卡、HBA卡及SPS芯片均需要支持的命令,使用该方案,保证了为提升固态硬盘性能和可靠性设计的Vendor Specific指令可以在不同平台及主机上得以执行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图;
图1为本发明提供的固态硬盘控制方法第一实施例流程示意图;
图2为本发明提供的固态硬盘控制方法第二实施例流程示意图;
图3为本发明提供的固态硬盘控制方法第三实施例流程示意图;
图4为本发明提供的固态硬盘控制装置实施例结构示意图;
图5为本发明实施例提供的固态硬盘第一实施例结构示意图。
具体实施方式
本发明提供的固态硬盘及其对应的控制装置、控制系统和控制方法,利用NCQ命令下发Vendor Specific指令代码的方式,在不支持Vendor Specific命令的主机环境上同样实现Vendor Specific命令对应的功能,从而避免在某些主机环境上无法下发VendorSpecific命令的情况,同时本发明提供的技术方案可以将下发Vendor Specific命令对固态硬盘性能造成的影响降到最低程度。
参见图1为本发明提供的固态硬盘控制方法第一实施例流程示意图。如图1所示,该固态硬盘控制方法包括:
步骤S101,创建一条NCQ命令(Native Command Queuing,原生命令队列),并将设定的Vendor Specific指令代码写入到NCQ命令的LBA Field字段。更为具体的,NCQ技术是一种使硬盘内部优化工作负荷执行顺序,通过对内部队列中的命令进行重新排序实现智能数据管理,改善硬盘因机械部件而受到的各种性能制约。当用户的应用程序发送多条指令到用户的硬盘,NCQ硬盘可以优化完成这些指令的顺序,从而降低机械负荷达到提升性能的目的。
步骤S102,向固态硬盘下发携带有所述Vendor Specific指令代码的NCQ命令。
步骤S103,所述固态硬盘接收所述NCQ命令后,解析其LBA Field字段,并判断所述LBA Field字段是否携带Vendor Specific指令代码。若所述判断为是,则执行步骤S104;若判断为否,则执行步骤S105。需要说明的是,步骤S105及其之后的步骤为本发明实施例提供优选实施步骤,本领域技术人员可以理解的是,步骤S101至S104已经构成完整的技术方案,可以解决本发明所希望解决的技术问题。
步骤S104,根据所述Vendor Specific指令代码执行相应的操作,并反馈执行结果。
优选的,该固态硬盘控制方法还进一步包括:
步骤S105,若在步骤S103中判定所述LBA Field字段未携带Vendor Specific指令代码,则进一步判断所述LBA Field字段是否在所述固态硬盘的读写范围内;若判断为是,则执行步骤S106,若判断为否,则执行步骤S107
步骤S106,则执行相应读写操作,包括:读取固态硬盘上的相应数据和/或将相应数据写入固态硬盘。
步骤S107,反馈命令执行失败。
在本实施例中,由于NCQ命令具有并发和乱序执行的特性,本发明提供的固态硬盘控制方法利用NCQ命令执行Vendor Specific指令的时候,不会对进行中的业务(即读写NCQCommand)产生影响,保持比较平稳的性能。同时,NCQ命令作为SATA协议中非常重要的一种传输协议,READ FPDMAQUEUED和WRITE FPDMA QUEUED命令是RAID卡、HBA卡及SPS芯片均需要支持的命令,使用该方案,保证了为提升固态硬盘性能和可靠性设计的Vendor Specific指令可以在不同平台及主机上得以执行。
更为具体的,在本实施例中,所述NCQ命令包括:READ FPDMA QUEUED(CommandCode 0x60)命令和/或WRITE FPDMA QUEUED(Command Code 0x61)命令。
READ FPDMA QUEUED主要用于查询类的Vendor Specific指令。WRITE FPDMAQUEUED用于设置类的Vendor Specific指令。
READ FPDMA QUEUED命令和WRITE FPDMA QUEUED命令的LBA Field字段的有效值为48Bit,在本发明中,定义0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围为Vendor Specific指令代码,即利用这两条命令的LBA Field用来存放相应的Vendor Specific指令,在此情况下,最多可支持256个Vendor Specific指令。
LBA Field在正常的业务中存放的是主机需要访问的盘片地址,在一个LogicBlock为512Bytes的情况下,0xFFFFFFFFFF00对应的容量是131071TB,而目前固态硬盘的单盘最大容量还不到1TB。在一定时间内,单盘的容量也不会到这么大,故本发明提供的技术方案不会和正常的读写命令产生冲突。
本实施例提供的该固态硬盘控制方法利用NCQ命令下发Vendor Specific指令代码的方式,在不支持Vendor Specific命令的主机环境上同样实现Vendor Specific命令对应的功能,从而避免在某些主机环境上无法下发Vendor Specific命令的情况,同时可以将下发Vendor Specific命令对固态硬盘性能造成的影响降到最低程度。
在如图2和图3所示的两个固态硬盘控制方法实施例中,将分别以NCQ命令为READFPDMA QUEUED命令和NCQ命令为WRITE FPDMA QUEUED命令时的情况分别进行更加详细的描述本发明提供的固态硬盘控制方法的流程步骤。
需要说明的是READ FPDMA QUEUED命令和WRITE FPDMA QUEUED命令这两条命令除了数据准备部分是按照本发明实施例提供的方案处理外,其他的传输过程,交互过程,错误处理过程均是按照SATA协议的规范进行。
参见图2为本发明提供的固态硬盘控制方法第二实施例流程示意图。如图所示,该固态硬盘控制方法包括:
步骤S201,主机组建一条READ FPDMA QUEUED命令,并将设定好的VendorSpecific指令代码写入到LBA Field,然后将该命令下发给固态硬盘。
步骤S202,固态硬盘接收到该READ FPDMA QUEUED命令后,解析其LBA Field字段。若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围内,则判定其为VendorSpecific指令代码,执行步骤S203;若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围外,则进一步判断其是否在所述固态硬盘的读写范围(Disk Size)内,若在Disk Size 的范围内,则执行步骤S204。如果LBA Field的范围不在上述两种情况的范围内,则返回主机命令执行错误。
步骤S203,LBA的数值是Vendor Specific指令的范围,进入相应的VendorSpecific指令处理流程,将数据准备好。
步骤S204,LBA的数值不是在Vendor Specific指令的范围,但是在Disk Size 的范围内,则读取固态硬盘上的相应数据。
步骤S205,在步骤S203或步骤204将数据准备完成后,将数据返回给主机,然后通知主机命令处理完成。
参见图3为本发明提供的固态硬盘控制方法第三实施例流程示意图。如图所示,该固态硬盘控制方法包括:
步骤S301,主机组建一条WRITE FPDMA QUEUED命令,并将设定好的VendorSpecific指令代码写入到LBA Field,然后将该命令下发给固态硬盘,且主机随后将数据下发到该固态硬盘。
步骤S302,固态硬盘接收到该WRITE FPDMA QUEUED命令命令后,解析其LBA Field字段。若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围内,则判定其为Vendor Specific指令代码,执行步骤S303;若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围外,则进一步判断其是否在所述固态硬盘的读写范围(Disk Size)内,若在Disk Size 的范围内,则执行步骤S304。如果LBA Field的范围不在上述两种情况的范围内,则返回主机命令执行错误。
步骤S303,LBA的数值是Vendor Specific指令的范围,进入相应的VendorSpecific指令处理流程,在固态硬盘中执行相应的设置操作。
步骤S304,LBA的数值不是在Vendor Specific指令的范围,但是在Disk Size 的范围内,则将主机下发的数据写入固态硬盘。
步骤S305,在步骤S303或步骤304执行完成后,通知主机命令处理完成。优选的,若步骤S303执行设置操作不成功,则通知主机命令处理失败;并将错误的原因记录在NCQCommand Error Log中,待主机读取。
本发明提供的固态硬盘控制方法,利用NCQ命令下发Vendor Specific指令代码的方式,在不支持Vendor Specific命令的主机环境上同样实现Vendor Specific命令对应的功能,从而避免在某些主机环境上无法下发Vendor Specific命令的情况,同时可以将下发Vendor Specific命令对固态硬盘性能造成的影响降到最低程度。
进一步的,由于NCQ命令具有并发和乱序执行的特性,在利用本发明提供的技术方案的NCQ命令执行Vendor Specific指令的时候,不会对进行中的业务(即读写NCQCommand)产生影响,保持比较平稳的性能。
进一步的,NCQ命令作为SATA协议中非常重要的一种传输协议,READ FPDMAQUEUED和WRITE FPDMA QUEUED命令是RAID卡、HBA卡及SPS芯片均需要支持的命令,使用该方案,保证了为提升固态硬盘性能和可靠性设计的Vendor Specific指令可以在不同平台及主机上得以执行。
参见图4,为本发明提供的固态硬盘控制装置实施例结构示意图,如图所示,该装置包括:
代码植入模块1,用于创建原生命令队列NCQ,并将设定的Vendor Specific指令代码写入到NCQ命令的LBA Field字段。
命令下发模块2,用于向固态硬盘下发携带有所述Vendor Specific指令代码的NCQ命令;所述固态硬盘接收所述NCQ命令后,解析其LBA Field字段,并判断所述LBA Field字段是否携带Vendor Specific指令代码;若所述判断为是,则根据所述Vendor Specific指令代码执行相应的操作,并反馈执行结果。
更为具体的,所述代码植入模块1包括:命令创建单元11和代码植入单元12。
命令创建单元11,用于创建所述NCQ命令,所述NCQ命令包括:READ FPDMA QUEUED命令和/或WRITE FPDMA QUEUED命令。READ FPDMA QUEUED主要用于查询类的VendorSpecific指令。WRITE FPDMA QUEUED用于设置类的Vendor Specific指令。
代码植入单元12,用于在命令创建单元11所创建的NCQ命令的LBA Field字段写入Vendor Specific指令代码。更为具体的,所述NCQ命令的LBA Field字段的有效值为48Bit,在本发明中定义0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围为Vendor Specific指令代码。即利用这两条命令的LBA Field用来存放相应的Vendor Specific指令,在此情况下,最多可支持256个Vendor Specific指令。
LBA Field在正常的业务中存放的是主机需要访问的盘片地址,在一个LogicBlock为512Bytes的情况下,0xFFFFFFFFFF00对应的容量是131071TB,而目前固态硬盘的单盘最大容量还不到1TB。在一定时间内,单盘的容量也不会到这么大,该方案不会和正常的读写命令产生冲突。
本发明提供的固态硬盘控制装置利用NCQ命令下发Vendor Specific指令代码的方式,在不支持Vendor Specific命令的主机环境上同样实现Vendor Specific命令对应的功能,从而避免在某些主机环境上无法下发Vendor Specific命令的情况,同时可以将下发Vendor Specific命令对固态硬盘性能造成的影响降到最低程度。
进一步的,由于NCQ命令具有并发和乱序执行的特性,在利用本发明提供的技术方案的NCQ命令执行Vendor Specific指令的时候,不会对进行中的业务(即读写NCQCommand)产生影响,保持比较平稳的性能。
进一步的,NCQ命令作为SATA协议中非常重要的一种传输协议,READ FPDMAQUEUED和WRITE FPDMA QUEUED命令是RAID卡、HBA卡及SPS芯片均需要支持的命令,使用该方案,保证了为提升固态硬盘性能和可靠性设计的Vendor Specific指令可以在不同平台及主机上得以执行。
参见图5,为本发明实施例提供的固态硬盘第一实施例结构示意图。本实施例提供的固态硬盘可以与上一实施例中的固态硬盘控制装置配合,构成完整的固态硬盘控制系统,并实施本发明提供的固态硬盘控制方法实施例中的控制流程和步骤。如图5所示,该固态硬盘包括:命令解析模块3和命令执行模块4。
命令解析模块3,用于在接收到NCQ命令后,解析其LBA Field字段,并判断所述LBAField字段是否携带Vendor Specific指令代码;所述NCQ命令是由主机(固态硬盘控制装置)创建,并将设定的Vendor Specific指令代码写入到NCQ命令的LBA Field字段后向固态硬盘下发的。
命令执行模块4,用于在所述命令解析模块3判定所述NCQ命令的LBA Field字段携带Vendor Specific指令代码时,根据所述Vendor Specific指令代码执行相应的操作,并反馈执行结果。
进一步的,该命令解析模块3包括:第一解析单元31和第二解析单元32。
第一解析单元31,用于在接收到NCQ命令后,解析其LBA Field字段,并判断所述LBA Field字段是否携带Vendor Specific指令代码。若LBA Field字段中Vendor Specific指令代码的设定方式与上一实施例相同,则在本实施例中,第一解析单元31在接收所述NCQ命令后解析其LBA Field字段,若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围内,则判定其为Vendor Specific指令代码;若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围外,则通知所述第二解析单元32进一步判断其是否在所述固态硬盘的读写范围内。
第二解析单元32,用于在所述第一解析单元31判定所述LBA Field字段未携带Vendor Specific指令代码时,进一步判断所述LBA Field字段是否在所述固态硬盘的读写范围内;若判断为是,则通知命令执行模块4按照现有技术中的NCQ命令执行相应读写操作,包括:读取固态硬盘上的相应数据和/或将相应数据写入固态硬盘;若判断为否,则反馈命令失败。
进一步的,所述命令执行模块4包括:第一执行单元41、第二执行单元42和执行反馈单元43。
第一执行单元41,用于在第一解析单元31判定所述Vendor Specific指令代码被携带在NCQ命令的LBA Field字段中,且该NCQ命令为READ FPDMA QUEUED时,根据所述Vendor Specific指令代码,在固态硬盘中查询相应的数据并反馈给主机(固态硬盘控制装置)。
第二执行单元42,用于在用于在第一解析单元31判定所述Vendor Specific指令代码被携带在NCQ命令的LBA Field字段中,且该NCQ命令为WRITE FPDMA QUEUED时,根据所述Vendor Specific指令代码,在固态硬盘中执行相应的设置操作。
执行反馈单元43,用于在所述第一执行单元41和/或第二执行单元42执行相应的Vendor Specific指令代码后,通知主机命令处理完成。优选的,执行反馈单元43在所述第二执行单元42执行设置操作不成功时,通知主机命令处理失败;并将错误的原因记录在NCQCommand Error Log中,待主机读取。
需要说明的是,本实施例提供的固态硬盘对于READ FPDMA QUEUED命令和WRITEFPDMA QUEUED命令这两条命令除了数据准备部分是按照本发明实施例提供的方案处理外,其他的传输过程,交互过程,错误处理过程均是按照SATA协议的规范进行。
本发明提供的固态硬盘,可以接收主机利用NCQ命令下发Vendor Specific指令代码的方式,在不支持Vendor Specific命令的主机环境上同样实现Vendor Specific命令对应的功能,从而避免在某些主机环境上无法下发Vendor Specific命令的情况,同时可以将下发Vendor Specific命令对固态硬盘性能造成的影响降到最低程度。
进一步的,由于NCQ命令具有并发和乱序执行的特性,在利用本发明提供的技术方案的NCQ命令执行Vendor Specific指令的时候,不会对进行中的业务(即读写NCQCommand)产生影响,保持比较平稳的性能。
进一步的,NCQ命令作为SATA协议中非常重要的一种传输协议,READ FPDMAQUEUED和WRITE FPDMA QUEUED命令是RAID卡、HBA卡及SPS芯片均需要支持的命令,使用该方案,保证了为提升固态硬盘性能和可靠性设计的Vendor Specific指令可以在不同平台及主机上得以执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (14)

1.一种固态硬盘控制方法,其特征在于,包括:
创建一条原生命令队列NCQ,并将设定的Vendor Specific指令代码写入到NCQ命令的LBA Field字段;
向固态硬盘下发携带有所述Vendor Specific指令代码的NCQ命令;
所述固态硬盘接收所述NCQ命令后,解析其LBA Field字段,并判断所述LBA Field字段是否携带Vendor Specific指令代码;
若所述判断为是,则根据所述Vendor Specific指令代码执行相应的操作,并反馈执行结果。
2.如权利要求1所述的固态硬盘控制方法,其特征在于,所述判断所述LBA Field字段是否携带Vendor Specific指令代码之后还包括:
若所述判断为否,则进一步判断所述LBA Field字段是否在所述固态硬盘的读写范围内;若所述判断为是,则执行相应读写操作,包括:读取固态硬盘上的相应数据和/或将相应数据写入固态硬盘;若判断为否,则反馈命令失败。
3.如权利要求1或2所述的固态硬盘控制方法,其特征在于,所述NCQ命令包括:READFPDMA QUEUED命令和/或WRITE FPDMA QUEUED命令;
所述NCQ命令的LBA Field字段的有效值为48Bit,并定义0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围为Vendor Specific指令代码。
4.如权利要求3所述的固态硬盘控制方法,其特征在于,所述固态硬盘接收所述NCQ命令后,解析其LBA Field字段,并判断所述LBA Field字段是否携带Vendor Specific指令代码,包括
固态硬盘接收所述NCQ命令后,解析其LBA Field字段,若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围内,则判定其为Vendor Specific指令代码;若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围外,则进一步判断其是否在所述固态硬盘的读写范围内。
5.如权利要求3所述的固态硬盘控制方法,其特征在于,所述根据所述VendorSpecific指令代码执行相应的操作,并反馈执行结果,包括:
若所述Vendor Specific指令代码被携带在READ FPDMA QUEUED命令中,则根据所述Vendor Specific指令代码,在固态硬盘中查询相应的数据并反馈给主机,并通知主机命令处理完成;
若所述Vendor Specific指令代码被携带在WRITE FPDMA QUEUED命令中,则根据所述Vendor Specific指令代码,在固态硬盘中执行相应的设置操作,并通知主机命令处理完成。
6.如权利要求5所述的固态硬盘控制方法,其特征在于,所述若所述Vendor Specific指令代码被携带在WRITE FPDMA QUEUED命令中,则根据所述Vendor Specific指令代码,在固态硬盘中执行相应的设置操作,并通知主机命令处理完成中,还包括:
如果设置不成功,则通知主机命令处理失败;并将错误的原因记录在NCQ CommandError Log中,待主机读取。
7.一种固态硬盘控制装置,其特征在于,包括:
代码植入模块,用于创建原生命令队列NCQ,并将设定的Vendor Specific指令代码写入到NCQ命令的LBA Field字段;
命令下发模块,用于向固态硬盘下发携带有所述Vendor Specific指令代码的NCQ命令;使所述固态硬盘接收所述NCQ命令后,解析其LBA Field字段,并判断所述LBA Field字段是否携带Vendor Specific指令代码;若所述判断为是,则根据所述Vendor Specific指令代码执行相应的操作,并反馈执行结果。
8.如权利要求7所述的固态硬盘控制装置,其特征在于,所述代码植入模块包括:
命令创建单元,用于创建所述NCQ命令,所述NCQ命令包括:READ FPDMA QUEUED命令和/或WRITE FPDMA QUEUED命令;
代码植入单元,用于在命令创建单元所创建的NCQ命令的LBA Field字段写入VendorSpecific指令代码;所述NCQ命令的LBA Field字段的有效值为48Bit,并定义0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围为Vendor Specific指令代码。
9.一种固态硬盘,其特征在于,包括:
命令解析模块,用于在接收到NCQ命令后,解析其LBA Field字段,并判断所述LBAField字段是否携带Vendor Specific指令代码;所述NCQ命令是由主机创建,并将设定的Vendor Specific指令代码写入到NCQ命令的LBA Field字段后向固态硬盘下发的;
命令执行模块,用于在所述命令解析模块判定所述NCQ命令的LBA Field字段携带Vendor Specific指令代码时,根据所述Vendor Specific指令代码执行相应的操作,并反馈执行结果。
10.如权利要求9所述的固态硬盘,其特征在于,所述命令解析模块包括:
第一解析单元,用于在接收到NCQ命令后,解析其LBA Field字段,并判断所述LBAField字段是否携带Vendor Specific指令代码;
第二解析单元,用于在所述第一解析单元判定所述LBA Field字段未携带VendorSpecific指令代码时,进一步判断所述LBA Field字段是否在所述固态硬盘的读写范围内;若判断为是,则命令执行模块执行相应读写操作;若判断为否,则反馈命令失败。
11.如权利要求10所述的固态硬盘,其特征在于,所述第一解析单元用于在接收所述NCQ命令后,解析其LBA Field字段,若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围内,则判定其为Vendor Specific指令代码;若所述LBA Field字段在0xFFFFFFFFF00-0xFFFFFFFFFFFF的范围外,则通知所述第二解析单元进一步判断其是否在所述固态硬盘的读写范围内。
12.如权利要求9所述的固态硬盘,其特征在于,所述命令执行模块包括:
第一执行单元,用于在所述Vendor Specific指令代码被携带在READ FPDMA QUEUED命令中时,根据所述Vendor Specific指令代码,在固态硬盘中查询相应的数据并反馈给主机;
第二执行单元,用于在所述Vendor Specific指令代码被携带在WRITE FPDMA QUEUED命令中时,根据所述Vendor Specific指令代码,在固态硬盘中执行相应的设置操作;
执行反馈单元,用于在所述第一执行单元和/或第二执行单元执行相应的VendorSpecific指令代码后,通知主机命令处理完成。
13.如权利要求12所述的固态硬盘,其特征在于,所述执行反馈单元还用于在所述第二执行单元执行设置操作不成功时,通知主机命令处理失败;并将错误的原因记录在NCQCommand Error Log中,待主机读取。
14.一种固态硬盘控制系统,其特征在于,包括:如权利要求7或8所述的固态硬盘控制装置;以及如权利要求9至13中任一项所述的固态硬盘。
CN201310022799.XA 2013-01-22 2013-01-22 一种固态硬盘及其控制装置、系统、方法 Active CN103942005B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310022799.XA CN103942005B (zh) 2013-01-22 2013-01-22 一种固态硬盘及其控制装置、系统、方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310022799.XA CN103942005B (zh) 2013-01-22 2013-01-22 一种固态硬盘及其控制装置、系统、方法

Publications (2)

Publication Number Publication Date
CN103942005A CN103942005A (zh) 2014-07-23
CN103942005B true CN103942005B (zh) 2017-03-08

Family

ID=51189690

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310022799.XA Active CN103942005B (zh) 2013-01-22 2013-01-22 一种固态硬盘及其控制装置、系统、方法

Country Status (1)

Country Link
CN (1) CN103942005B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113093992A (zh) * 2021-03-24 2021-07-09 深圳大普微电子科技有限公司 一种命令的解压方法、系统及固态硬盘
CN113127389B (zh) * 2021-04-16 2022-08-26 无锡众星微系统技术有限公司 Sas stp业务加速方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101339492A (zh) * 2008-08-11 2009-01-07 湖南源科创新科技股份有限公司 原生sata的固态硬盘控制器
CN101751962A (zh) * 2008-12-08 2010-06-23 西部数据技术公司 利用原生命令排队标记实现磁盘驱动器的信息保护

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1934751B1 (en) * 2005-08-25 2017-11-08 Lattice Semiconductor Corporation Smart scalable storage switch architecture
JP5091788B2 (ja) * 2008-07-15 2012-12-05 株式会社東芝 Nand型フラッシュメモリ

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101339492A (zh) * 2008-08-11 2009-01-07 湖南源科创新科技股份有限公司 原生sata的固态硬盘控制器
CN101751962A (zh) * 2008-12-08 2010-06-23 西部数据技术公司 利用原生命令排队标记实现磁盘驱动器的信息保护

Also Published As

Publication number Publication date
CN103942005A (zh) 2014-07-23

Similar Documents

Publication Publication Date Title
US9519499B2 (en) Method for dispatching central processing unit of hotspot domain virtual machine and virtual machine system
JP5147584B2 (ja) ストレージサブシステム及びコントローラによるコマンド実行方法
US20170046091A1 (en) Storage tiering based on virtual machine operations and virtual volume type
EP2568385A1 (en) Automatic thin provisioning method and device
CN109542645A (zh) 一种调用服务的方法、装置、电子设备及存储介质
CN103678143B (zh) 文件存储方法、装置及电子设备
WO2016107340A1 (zh) 业务请求处理方法和装置
US10089266B2 (en) Power saving feature for storage subsystems
CN106383742B (zh) 一种基于linux的IO调度方法
CN103942005B (zh) 一种固态硬盘及其控制装置、系统、方法
US10592107B2 (en) Virtual machine storage management queue
CN115408108A (zh) 一种云环境下的i/o卸载方法、设备、系统及存储介质
CN107682389A (zh) 一种执行网络请求的方法、终端及计算机可读存储介质
WO2021035761A1 (zh) 一种固态硬盘混合读写的实现方法以及装置
US8078771B2 (en) Sending large command descriptor block (CDB) structures in serial attached SCSI (SAS) controller
CN102393838B (zh) 数据处理方法及装置、pci-e总线系统、服务器
KR101200997B1 (ko) 멀티 pci 버스 스위칭을 갖는 raid 컨트롤러
EP2454671A2 (en) Inserting a gap in information sent from a drive to a host device
EP2527973A1 (en) Computer system with multiple operation modes and method of switching modes thereof
CN101765829B (zh) 用于管理数据存储系统的逻辑分区中初始程序加载的方法和系统
CN110753040B (zh) 一种请求处理的方法及装置
CN104516681B (zh) 数据储存系统及其控制方法
CN105808556A (zh) 一种数据库的操作方法及数据库引擎
CN106557385B (zh) 数据快照方法和存储设备
EP2703988A2 (en) Storage device, control method for storage device and control program

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160629

Address after: 511457 Guangdong city of Guangzhou province Nansha District Port Road No. 80, room 805

Applicant after: Guangdong Huasheng Data Solid State Storage Co.,Ltd.

Address before: 3, building 1, building B5, Qingyang headquarters, No. 610000, flying way, Sichuan, Chengdu

Applicant before: Wang Can

Applicant before: Li Zhi

Applicant before: Li Xin

Applicant before: Yang Jitao

Applicant before: Li Cheng

Applicant before: Zhang Qin

Applicant before: Xiang Zhihua

C14 Grant of patent or utility model
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Solid state disk and control device, system and method thereof

Effective date of registration: 20200629

Granted publication date: 20170308

Pledgee: GUANGDONG ELECTRONICS INFORMATION INDUSTRY Group Ltd.

Pledgor: Guangdong Huasheng Data Solid State Storage Co.,Ltd.

Registration number: Y2020440000171

PE01 Entry into force of the registration of the contract for pledge of patent right
TR01 Transfer of patent right

Effective date of registration: 20240519

Address after: Building 6 (North), 1st Floor, No. 1 Shuangqing Road, Haidian District, Beijing, 100000, 123-6

Patentee after: Beijing Zhongxin Information Technology Co.,Ltd.

Country or region after: China

Address before: Room 805, No. 80 Jingang Avenue, Nansha District, Guangzhou City, Guangdong Province, 511457

Patentee before: Guangdong Huasheng Data Solid State Storage Co.,Ltd.

Country or region before: China