CN105607874B - Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器 - Google Patents

Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器 Download PDF

Info

Publication number
CN105607874B
CN105607874B CN201511023341.1A CN201511023341A CN105607874B CN 105607874 B CN105607874 B CN 105607874B CN 201511023341 A CN201511023341 A CN 201511023341A CN 105607874 B CN105607874 B CN 105607874B
Authority
CN
China
Prior art keywords
control module
module
frame
sata
cpu
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
CN201511023341.1A
Other languages
English (en)
Other versions
CN105607874A (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.)
Hunan Goke Microelectronics Co Ltd
Original Assignee
Hunan Goke Microelectronics Co Ltd
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 Hunan Goke Microelectronics Co Ltd filed Critical Hunan Goke Microelectronics Co Ltd
Priority to CN201511023341.1A priority Critical patent/CN105607874B/zh
Publication of CN105607874A publication Critical patent/CN105607874A/zh
Application granted granted Critical
Publication of CN105607874B publication Critical patent/CN105607874B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Abstract

本发明公开了一种SATA协议加速模块、主机与硬盘通信方法及固态硬盘控制器,其中加速模块包括接收控制模块、发送控制模块、信息提取模块、DMA接口控制模块、CPU接口控制模块、寄存器控制模块、指令执行模块和指令RAM模块,其中接收控制模块与SATA接口控制模块相连,接收控制模块通过信息提取模块、CPU接口控制模块与CPU相连,CPU接口控制模块通过寄存器控制模块与指令执行模块相连,CPU接口控制模块与指令RAM模块相连,指令执行模块还分别与信息提取模块、接收控制模块、指令RAM模块和发送控制模块相连。本发明能够减少SATA接口协议消耗带来的性能损失,突破SATA接口的性能瓶颈,提高SATA接口和固态硬盘的性能;支持SATA协议的扩展升级,减少电路改动带来的风险及成本。

Description

SATA协议加速模块、主机与硬盘通信方法及固态硬盘控制器
技术领域
本发明属于及计算机系统的存储技术领域,特别涉及一种应用于固态硬盘控制器的SATA协议加速模块、主机与基于SATA接口的固态硬盘之间通信的方法及该固态硬盘控制器。
背景技术
固态硬盘(Solid State drive)是使用闪存等作为存储介质的硬盘,固态硬盘主机侧的接口与传统硬盘一样,多采用SATA接口。
SATA(Serial Advanced Technology Attachment)是一种高速串行接口,其协议分为4层,物理层、链路层、传输层以及命令层。物理层主要负责链路串并转换,链路层主要负责与对端进行链路级别的握手,传输层主要负责帧的构建和解析,命令层主要负责进行ATA命令的交互。
如图1所示,现有的基于SATA接口的固态硬盘包括固态硬盘控制器、Flash颗粒5、和Dram颗粒6,其中固态硬盘控制器包括SATA接口控制模块1、CPU2、Dram控制模块3和Flash接口控制模块4,所述SATA接口控制模块1和主机相连,SATA接口控制模块1分别通过CPU2和Dram控制模块3与Flash接口控制模块4相连,Flash接口控制模块4与Flash颗粒5相连,Dram控制模块3与Dram颗粒6相连。
SATA接口控制模块1负责实现固态硬盘跟主机的连接控制;CPU2负责处理来自主机的ATA命令,以及通过Flash接口控制模块4管理Flash颗粒5;Dram控制模块3负责管理Dram颗粒6;Flash接口控制模块4负责实现对Flash颗粒5的操作。
在图1所示的架构中,SATA接口控制模块1以硬件电路实现SATA协议中的前三层(包括物理层、链路层、传输层),SATA协议中的命令层由CPU2以及其运行的固件实现。SATA接口控制模块1将从主机收到的ATA命令发送给CPU2,CPU2根据SATA协议完成跟主机的交互动作。同时,CPU2还要根据SATA命令层协议检查ATA命令的正确性,如果命令层的交互出现异常,还要负责根据协议要求完成异常处理。这种由CPU2来处理SATA命令层的方式非常慢,CPU2会花费很大一部分资源和时间去解析和完成SATA命令层的协议交互,由于嵌入式CPU2在处理协议事务上速度不会很快,完成一个简单的比较运算都会花费多个时钟周期,更何况是要完成命令层中复杂的交互流程,这必然会导致SATA接口的性能带宽由于协议开销被消耗掉一部分,从而影响整个固态硬盘的性能。
申请号为CN201210369554的中国专利公开了一种基于协处理器的SATA控制器,使用microblaze(某FPGA公司提供的CPU软核)加固件软件代码的方式,实现SATA控制器中传输层状态机的跳转。该方法虽然增加了SATA控制器的灵活性,但是由于其使用的也是标准的嵌入式CPU加C语言代码,所以其效果跟上述现有一般固态硬盘控制器架构中的处理方式基本相同,不会减少完成SATA协议带来的时间开销,SATA接口的性能不能达到最大。
由于固态硬盘的存储介质多采用NAND Flash颗粒,在多通道并发模式下,访问NAND Flash颗粒的性能带宽会比SATA接口的最大理论带宽要大,所以现有架构的固态硬盘控制器中,SATA接口成了限制固态硬盘设备性能的瓶颈。
发明内容
现有基于SATA接口的固态硬盘中,由于CPU花费很大一部分资源和时间来实现SATA命令层,从而造成固态硬盘性能低。本发明的目的在于,针对上述现有技术的不足,提供一种SATA协议加速模块、主机与硬盘通信方法及固态硬盘控制器。
为解决上述技术问题,本发明所采用的技术方案是:
一种应用于固态硬盘控制器的SATA协议加速模块,包括接收控制模块、发送控制模块、信息提取模块、DMA接口控制模块、CPU接口控制模块、寄存器控制模块、指令执行模块和指令RAM模块,其中接收控制模块与SATA接口控制模块相连,接收控制模块通过DMA接口控制模块与Dram控制模块相连,接收控制模块依次通过信息提取模块、CPU接口控制模块与CPU相连,CPU接口控制模块通过寄存器控制模块与指令执行模块相连,CPU接口控制模块与指令RAM模块相连,指令执行模块还分别与信息提取模块、接收控制模块、指令RAM模块和发送控制模块相连,DMA接口控制模块还与发送控制模块相连,发送控制模块还与SATA接口控制模块相连;其中,
接收控制模块用于通过SATA接口控制模块接收来自主机的数据帧和非数据帧,同时根据指令执行模块的控制传递接收到的数据帧和非数据帧,其中数据帧通过DMA接口控制模块传递至Dram控制模块,由Dram控制模块中的DMA搬移到Dram颗粒;非数据帧传递至信息提取模块;
发送控制模块用于接收指令执行模块和DMA接口控制模块的请求传输SATA帧,并将接收到的内容通过SATA接口控制模块传至主机;其中非数据帧的内容由指令执行模块提供,数据帧的内容由DMA接口控制模块提供;
信息提取模块一方面用于将接收到的非数据帧中的主机发送到设备的帧通过CPU接口控制模块发送至CPU,另一方面用于从接收到的非数据帧中的主机发送到设备的帧中提取出ATA命令信息以及控制和状态信息;
DMA接口控制模块用于数据帧的传输,根据接收控制模块和发送控制模块的请求,通过Dram控制模块将数据从Dram颗粒读取或写入;
CPU接口控制模块用于适配CPU总线接口时序;
寄存器控制模块用于控制指令执行模块的运行,寄存器控制模块内部包括寄存器和命令描述符;寄存器的内容由CPU控制,寄存器的值用于控制指令执行模块的跳转判断、操作执行行为;命令描述符是描述一条ATA命令详细信息的数据结构,所述ATA命令详细信息包括命令类型,命令TAG,搬移数据的长度、地址以及控制信息,命令描述符由CPU根据收到的主机发送到设备的帧产生,并写入寄存器控制模块内部的命令描述符RAM;
指令RAM模块中用于存储指令序列,所述指令序列根据SATA命令层协议生成并由CPU写入;
指令执行模块用于根据SATA命令层的协议处理收到的ATA命令,指令执行模块通过解析指令序列并执行操作来控制SATA帧的收发,完成SATA命令层交互;指令执行模块包括三个基本操作:接收帧并跳转、发送帧并跳转、根据跳转条件跳转,发送帧的内容和跳转条件由信息提取模块、寄存器和命令描述符提供。
作为一种优选方式,所述指令序列中指令的数据结构为“操作码+控制码+跳转码”,其中,
操作码用于控制本指令序列所在状态的行为操作,所述行为操作包括三种,第一种为从主机接收预期的帧,并跳转到另一个状态;第二种为发送一个帧到主机,并跳转到另一个状态;第三种为不接收也不发送帧,并跳转到另一个状态;
控制码包含需要发送到主机的帧的相关信息或者预期从主机接收到的帧的相关信息,所述相关信息来源于信息提取模块和寄存器控制模块;
跳转码包含跳转到下一个状态的条件和下一个状态的地址信息,跳转条件包括是否成功发送帧到主机、接收到的帧是否符合预期、数据帧是否成功发送或者接收完成、是否检测到有SATA异常,不同的条件跳转到不同的状态。
进一步地,指令RAM模块中的指令序列是在上电时由CPU写入指令RAM模块。
基于同一个发明构思,本发明还提供一种主机与基于SATA接口的固态硬盘之间通信的方法,利用所述的SATA协议加速模块,包括如下过程:
利用接收控制模块通过SATA接口控制模块接收来自主机的数据帧和非数据帧,同时根据指令执行模块的控制传递接收到的数据帧和非数据帧,其中数据帧通过DMA接口控制模块传递至Dram控制模块,由Dram控制模块中的DMA搬移到Dram颗粒;非数据帧传递至信息提取模块;
利用发送控制模块接收指令执行模块和DMA接口控制模块的请求传输SATA帧,并将接收到的内容通过SATA接口控制模块传至主机;其中非数据帧的内容由指令执行模块提供,数据帧的内容由DMA接口控制模块提供;
利用信息提取模块一方面将接收到的非数据帧中的主机发送到设备的帧通过CPU接口控制模块发送至CPU,另一方面从接收到的非数据帧中的主机发送到设备的帧中提取出ATA命令信息以及控制和状态信息;
利用DMA接口控制模块传输数据帧,并根据接收控制模块和发送控制模块的请求,通过Dram控制模块将数据从Dram颗粒读取或写入;
利用CPU接口控制模块适配CPU总线接口时序;
利用寄存器控制模块控制指令执行模块的运行;
利用CPU控制寄存器的内容;利用CPU根据收到的主机发送到设备的帧产生命令描述符并写入命令描述符RAM;根据SATA命令层协议生成指令序列并由CPU写入指令RAM模块中;
利用指令执行模块根据SATA命令层的协议处理收到的ATA命令,利用指令执行模块通过解析指令序列并执行操作来控制SATA帧的收发,完成SATA命令层交互。
作为一种优选方式,还包括利用CPU将指令序列写入指令RAM模块中。
基于同一个发明构思,本发明还提供一种固态硬盘控制器,包括SATA接口控制模块、CPU、Dram控制模块和Flash接口控制模块,SATA接口控制模块通过Dram控制模块与Flash接口控制模块相连,CPU与Flash接口控制模块相连,还包括所述的SATA协议加速模块,所述接收控制模块与发送控制模块均与SATA接口控制模块相连,所述DMA接口控制模块与Dram控制模块相连,所述CPU接口控制模块与CPU相连。
本发明在SATA接口控制模块与CPU之间增加了一个SATA协议加速模块,用于协助CPU处理SATA ATA命令交互,以加速处理SATA命令层协议,能够减少SATA接口协议消耗带来的性能损失,突破了SATA接口的性能瓶颈,提高了SATA接口和固态硬盘的性能;本发明能够实现所有SATA命令层协议以及用户自定义命令,指令序列支持功能可配置,可根据要实现的功能重新设计,当需要升级或更改功能时,只需要重新编制相应的指令序列,由CPU重新配置即可,不用更改硬件电路,支持SATA协议的扩展升级,减少电路改动带来的风险及成本。
附图说明
图1为现有基于SATA接口的固态硬盘结构示意图。
图2为本发明SATA协议加速模块一实施例的结构示意图。
图3为本发明指令序列中指令的数据结构示意图。
图4为本发明指令RAM模块中指令序列的分布示意图。
图5为本发明固态硬盘控制器的结构示意图。
图6为一次NCQ读命令交互过程示意图。
其中,1为SATA接口控制模块,2为CPU,3为Dram控制模块,4为Flash接口控制模块,5为Flash颗粒,6为Dram颗粒,7为SATA协议加速模块,71为接收控制模块,72为发送控制模块,73为指令RAM模块,74为信息提取模块,75为指令执行模块,76为寄存器控制模块,77为CPU接口控制模块,78为DMA接口控制模块。
具体实施方式
本发明中英文符号含义说明如下:
SATA:Serial Advanced Technology Attachment,一种高速串行接口。
FIS:SATA协议中用来进行数据交互的帧。
NCQ:SATA协议中规定的一种命令类型。
ATA:Advanced Technology Attachment,标准硬盘规范命令集。
DMA:Direct Memory Access,直接内存存取,通常用来进行大量数据的搬移。
CPU:Central Processing Unit,中央处理器。
RAM:Random Access Memory,随机存取存储器。
Dram:Dynamic Random Access Memory,动态随机存取存储器。
H2D FIS:主机发送到设备的帧。
D2H FIS:设备发送到主机的帧。
TAG:命令的标签位。
Flash:存储芯片的一种。
NAND Flash:一种闪存存储介质。
如图2所示,本发明一种应用于固态硬盘控制器的SATA协议加速模块7主要由以下硬件模块构成:接收控制模块71、发送控制模块72、信息提取模块74、DMA接口控制模块78、CPU接口控制模块77、寄存器控制模块76、指令执行模块75和指令RAM模块73;其中接收控制模块71与SATA接口控制模块1相连,接收控制模块71通过DMA接口控制模块78与Dram控制模块3相连,接收控制模块71依次通过信息提取模块74、CPU接口控制模块77与CPU2相连,CPU接口控制模块77通过寄存器控制模块76与指令执行模块75相连,CPU接口控制模块77与指令RAM模块73相连,指令执行模块75还分别与信息提取模块74、接收控制模块71、指令RAM模块73和发送控制模块72相连,DMA接口控制模块78还与发送控制模块72相连,发送控制模块72还与SATA接口控制模块1相连;其中,
接收控制模块71跟SATA接口控制模块1对接,用于通过SATA接口控制模块1接收来自主机的数据帧和非数据帧,同时根据指令执行模块75的控制传递接收到的数据帧和非数据帧,其中数据帧通过DMA接口控制模块78传递至Dram控制模块3,由Dram控制模块3中的DMA搬移到Dram颗粒6;非数据帧是携带主机命令和控制信息的帧,传递至信息提取模块74,由信息提取模块74提取命令、地址、长度、控制等相关信息;
发送控制模块72用于接收指令执行模块75和DMA接口控制模块78的请求传输SATA帧,并将接收到的内容通过SATA接口控制模块1传至主机;其中非数据帧(主要用来跟主机进行控制交互的帧)的内容由指令执行模块75提供,数据帧(主机命令涉及的要搬移的数据)的内容由DMA接口控制模块78提供;
信息提取模块74一方面用于将接收到的非数据帧中的主机发送到设备的帧通过CPU接口控制模块77发送至CPU2,另一方面用于从接收到的非数据帧中的主机发送到设备的帧中提取出ATA命令信息以及控制和状态信息,这些信息就是ATA协议中的task fileregister信息;
DMA接口控制模块78就是普通的DMA模块,用于数据帧的传输,根据接收控制模块71和发送控制模块72的请求,通过Dram控制模块3将数据从Dram颗粒6读取或写入;
CPU接口控制模块77用于适配CPU2总线接口时序;
寄存器控制模块76用于控制指令执行模块75的运行,寄存器控制模块76内部包括寄存器和命令描述符;寄存器的内容由CPU2控制,寄存器的值用于控制指令执行模块75的跳转判断、操作执行行为;命令描述符是描述一条ATA命令详细信息的数据结构,所述ATA命令详细信息包括命令类型,命令TAG,搬移数据的长度、地址以及控制信息,命令描述符由CPU2根据收到的主机发送到设备的帧产生,并写入寄存器控制模块76内部的命令描述符RAM,指令执行模块75通过命令描述符的内容,来完成SATA命令层交互;
指令RAM模块73中用于存储指令序列,所述指令序列根据SATA命令层协议生成并由CPU2写入;指令RAM模块73中的指令序列是在上电时由CPU2写入指令RAM模块73;如图4所示为本发明指令RAM模块73中指令序列的分布示意图。
指令执行模块75用于根据SATA命令层的协议处理收到的ATA命令,指令执行模块75通过解析指令序列并执行操作来控制SATA帧的收发,完成SATA命令层交互;指令执行模块75包括三个基本操作:接收帧并跳转、发送帧并跳转、根据跳转条件跳转,发送帧的内容和跳转条件由信息提取模块74、寄存器和命令描述符提供。指令执行模块75设计为类似CPU的工作原理,CPU2可以通过寄存器、命令描述符控制指令执行模块75的操作序列。上电后,指令序列处于“等待初始化”状态,CPU2内的固件检测到COMRESET中断,执行相关的复位操作后,通过控制寄存器控制模块76中的寄存器,促使执行初始化指令序列,向主机发送D2HFIS,然后指令序列跳转到IDLE状态,等待收到主机命令。当收到主机命令后,指令序列根据命令类型跳转到相应状态。
根据SATA命令层协议,完成一类命令可能需要执行多条指令。可事先制定好处理各类SATA命令的指令序列,这些指令序列分布在指令RAM模块73中的不同地址区域。上电后CPU2将这些指令序列放在指令RAM模块73。待SATA链路连接成功后,SATA协议加速模块7随即启动,进入LINKUP状态,向主机发送D2H FIS,然后跳转到IDLE状态,等待接收命令,然后根据接收到命令跳转到不同地址执行,完成该命令后再跳转到IDLE状态。
SATA协议加速模块7能够收到主机发过来的任何帧,并能从中提取关键信息,也能控制向主机发送的帧的内容和时机,该SATA协议加速模块7包含一个存储指令序列的指令RAM模块73,该SATA协议加速模块7所有的操作都是通过执行指令RAM模块73中的指令序列实现的,并且指令序列可以重新制定再由CPU2写进指令RAM模块73。
本发明SATA协议加速模块7包含硬件电路和特定的指令序列,以一种类似于CPU的工作方式,通过执行特定的指令序列,可以非常灵活简便地实现SATA命令层协议,可以协助处理所有SATA命令以及其他用户自定义命令。
如图3所示,所述指令序列中指令的数据结构为“操作码+控制码+跳转码”,其中,
操作码用于控制本指令序列所在状态的行为操作,所述行为操作包括三种,第一种为从主机接收预期的帧,并跳转到另一个状态;第二种为发送一个帧到主机,并跳转到另一个状态;第三种为不接收也不发送帧,并跳转到另一个状态;
控制码包含需要发送到主机的帧的相关信息或者预期从主机接收到的帧的相关信息,所述相关信息来源于信息提取模块74和寄存器控制模块76;
跳转码包含跳转到下一个状态的条件和下一个状态的地址信息,跳转条件包括是否成功发送帧到主机、接收到的帧是否符合预期、数据帧是否成功发送或者接收完成、是否检测到有SATA异常,不同的条件跳转到不同的状态。
使用该指令结构的每一条指令都可以完成诸如发送一条帧到主机、从主机接收帧等操作。多条指令序列即可完成一条ATA命令的交互。
所述的指令序列中的指令由操作码、控制码、跳转码三部分组成,且不限于这三部分。该指令能完成发送帧、比较收到的帧、判断数据是否传输完成等相关操作,任何能完成此功能的指令的数据结构(不限于上述的三部分组成),都应视为本发明申请要求的权利。
下面给出指令序列的简要数据结构示例,该示例不构成对本发明的限制。
操作码:
控制码:
跳转码:
一种主机与基于SATA接口的固态硬盘之间通信的方法,利用所述的SATA协议加速模块7,包括如下过程:
利用接收控制模块71通过SATA接口控制模块1接收来自主机的数据帧和非数据帧,同时根据指令执行模块75的控制传递接收到的数据帧和非数据帧,其中数据帧通过DMA接口控制模块78传递至Dram控制模块3,由Dram控制模块3中的DMA搬移到Dram颗粒6;非数据帧传递至信息提取模块74;
利用发送控制模块72接收指令执行模块75和DMA接口控制模块78的请求传输SATA帧,并将接收到的内容通过SATA接口控制模块1传至主机;其中非数据帧的内容由指令执行模块75提供,数据帧的内容由DMA接口控制模块78提供;
利用信息提取模块74一方面将接收到的非数据帧中的主机发送到设备的帧通过CPU接口控制模块77发送至CPU2,另一方面从接收到的非数据帧中的主机发送到设备的帧中提取出ATA命令信息以及控制和状态信息;
利用DMA接口控制模块78传输数据帧,并根据接收控制模块71和发送控制模块72的请求,通过Dram控制模块3将数据从Dram颗粒6读取或写入;
利用CPU接口控制模块77适配CPU2总线接口时序;
利用寄存器控制模块76控制指令执行模块75的运行;
利用CPU2控制寄存器的内容;利用CPU2根据收到的主机发送到设备的帧产生命令描述符并写入命令描述符RAM;根据SATA命令层协议生成指令序列并由CPU2写入指令RAM模块73中;利用CPU2将指令序列写入指令RAM模块73中。
利用指令执行模块75根据SATA命令层的协议处理收到的ATA命令,利用指令执行模块75通过解析指令序列并执行操作来控制SATA帧的收发,完成SATA命令层交互。
如图5所示,本发明一种固态硬盘控制器包括SATA接口控制模块1、CPU2、Dram控制模块3和Flash接口控制模块4,SATA接口控制模块1通过Dram控制模块3与Flash接口控制模块4相连,CPU2与Flash接口控制模块4相连,还包括所述的SATA协议加速模块7,所述接收控制模块71与发送控制模块72均与SATA接口控制模块1相连,所述DMA接口控制模块78与Dram控制模块3相连,所述CPU接口控制模块77与CPU2相连。
本发明主要使用硬件实现SATA命令层,完成一条SATA命令交互只需要执行几个指令,只需要几个时钟周期,比使用CPU2来处理快很多,并且还释放了部分CPU2资源。特别是针对NCQ读命令的交互,如图6的NCQ读命令交互流程,使用本发明方法的固态硬盘,在收到携带命令的主机发送到设备的帧后,能在几个指令周期后向主机发送D2H FIS,这样主机就能立即下发下一条NCQ命令。而使用现有技术即CPU2处理的固态硬盘,从收到主机发送到设备的帧到回送D2H FIS会花费上百个指令周期,比本发明所述的方法花费指令周期长得多。

Claims (6)

1.一种应用于固态硬盘控制器的SATA协议加速模块,其特征在于,包括接收控制模块(71)、发送控制模块(72)、信息提取模块(74)、DMA接口控制模块(78)、CPU接口控制模块(77)、寄存器控制模块(76)、指令执行模块(75)和指令RAM模块(73),其中接收控制模块(71)与SATA接口控制模块(1)相连,接收控制模块(71)通过DMA接口控制模块(78)与Dram控制模块(3)相连,接收控制模块(71)依次通过信息提取模块(74)、CPU接口控制模块(77)与CPU(2)相连,CPU接口控制模块(77)通过寄存器控制模块(76)与指令执行模块(75)相连,CPU接口控制模块(77)与指令RAM模块(73)相连,指令执行模块(75)还分别与信息提取模块(74)、接收控制模块(71)、指令RAM模块(73)和发送控制模块(72)相连,DMA接口控制模块(78)还与发送控制模块(72)相连,发送控制模块(72)还与SATA接口控制模块(1)相连;其中,
接收控制模块(71)用于通过SATA接口控制模块(1)接收来自主机的数据帧和非数据帧,同时根据指令执行模块(75)的控制传递接收到的数据帧和非数据帧,其中数据帧通过DMA接口控制模块(78)传递至Dram控制模块(3),由Dram控制模块(3)中的DMA搬移到Dram颗粒(6);非数据帧传递至信息提取模块(74);
发送控制模块(72)用于接收指令执行模块(75)和DMA接口控制模块(78)的请求传输SATA帧,并将接收到的内容通过SATA接口控制模块(1)传至主机;其中非数据帧的内容由指令执行模块(75)提供,数据帧的内容由DMA接口控制模块(78)提供;
信息提取模块(74)一方面用于将接收到的非数据帧中的主机发送到设备的帧通过CPU接口控制模块(77)发送至CPU(2),另一方面用于从接收到的非数据帧中的主机发送到设备的帧中提取出ATA命令信息以及控制和状态信息;
DMA接口控制模块(78)用于数据帧的传输,根据接收控制模块(71)和发送控制模块(72)的请求,通过Dram控制模块(3)将数据从Dram颗粒(6)读取或写入;
CPU接口控制模块(77)用于适配CPU(2)总线接口时序;
寄存器控制模块(76)用于控制指令执行模块(75)的运行,寄存器控制模块(76)内部包括寄存器和命令描述符;寄存器的内容由CPU(2)控制,寄存器的值用于控制指令执行模块(75)的跳转判断、操作执行行为;命令描述符是描述一条ATA命令详细信息的数据结构,所述ATA命令详细信息包括命令类型,命令TAG,搬移数据的长度、地址以及控制信息,命令描述符由CPU(2)根据收到的主机发送到设备的帧产生,并写入寄存器控制模块(76)内部的命令描述符RAM;
指令RAM模块(73)中用于存储指令序列,所述指令序列根据SATA命令层协议生成并由CPU(2)写入;
指令执行模块(75)用于根据SATA命令层的协议处理收到的ATA命令,指令执行模块(75)通过解析指令序列并执行操作来控制SATA帧的收发,完成SATA命令层交互;指令执行模块(75)包括三个基本操作:接收帧并跳转、发送帧并跳转、根据跳转条件跳转,发送帧的内容和跳转条件由信息提取模块(74)、寄存器和命令描述符提供。
2.如权利要求1所述的应用于固态硬盘控制器的SATA协议加速模块,其特征在于,所述指令序列中指令的数据结构为“操作码+控制码+跳转码”,其中,
操作码用于控制本指令序列所在状态的行为操作,所述行为操作包括三种,第一种为从主机接收预期的帧,并跳转到另一个状态;第二种为发送一个帧到主机,并跳转到另一个状态;第三种为不接收也不发送帧,并跳转到另一个状态;
控制码包含需要发送到主机的帧的相关信息或者预期从主机接收到的帧的相关信息,所述相关信息来源于信息提取模块(74)和寄存器控制模块(76);
跳转码包含跳转到下一个状态的条件和下一个状态的地址信息,跳转条件包括是否成功发送帧到主机、接收到的帧是否符合预期、数据帧是否成功发送或者接收完成、是否检测到有SATA异常,不同的条件跳转到不同的状态。
3.如权利要求1或2所述的应用于固态硬盘控制器的SATA协议加速模块,其特征在于,指令RAM模块(73)中的指令序列是在上电时由CPU(2)写入指令RAM模块(73)。
4.一种主机与基于SATA接口的固态硬盘之间通信的方法,其特征在于,利用如权利要求1或2所述的SATA协议加速模块,包括如下过程:
利用接收控制模块(71)通过SATA接口控制模块(1)接收来自主机的数据帧和非数据帧,同时根据指令执行模块(75)的控制传递接收到的数据帧和非数据帧,其中数据帧通过DMA接口控制模块(78)传递至Dram控制模块(3),由Dram控制模块(3)中的DMA搬移到Dram颗粒(6);非数据帧传递至信息提取模块(74);
利用发送控制模块(72)接收指令执行模块(75)和DMA接口控制模块(78)的请求传输SATA帧,并将接收到的内容通过SATA接口控制模块(1)传至主机;其中非数据帧的内容由指令执行模块(75)提供,数据帧的内容由DMA接口控制模块(78)提供;
利用信息提取模块(74)一方面将接收到的非数据帧中的主机发送到设备的帧通过CPU接口控制模块(77)发送至CPU(2),另一方面从接收到的非数据帧中的主机发送到设备的帧中提取出ATA命令信息以及控制和状态信息;
利用DMA接口控制模块(78)传输数据帧,并根据接收控制模块(71)和发送控制模块(72)的请求,通过Dram控制模块(3)将数据从Dram颗粒(6)读取或写入;
利用CPU接口控制模块(77)适配CPU(2)总线接口时序;
利用寄存器控制模块(76)控制指令执行模块(75)的运行;
利用CPU(2)控制寄存器的内容;利用CPU(2)根据收到的主机发送到设备的帧产生命令描述符并写入命令描述符RAM;根据SATA命令层协议生成指令序列并由CPU(2)写入指令RAM模块(73)中;
利用指令执行模块(75)根据SATA命令层的协议处理收到的ATA命令,利用指令执行模块(75)通过解析指令序列并执行操作来控制SATA帧的收发,完成SATA命令层交互。
5.如权利要求4所述的主机与基于SATA接口的固态硬盘之间通信的方法,其特征在于,还包括利用CPU(2)将指令序列写入指令RAM模块(73)中。
6.一种固态硬盘控制器,包括SATA接口控制模块(1)、CPU(2)、Dram控制模块(3)和Flash接口控制模块(4),SATA接口控制模块(1)通过Dram控制模块(3)与Flash接口控制模块(4)相连,CPU(2)与Flash接口控制模块(4)相连,其特征在于,还包括如权利要求1至3任一项所述的SATA协议加速模块,所述接收控制模块(71)与发送控制模块(72)均与SATA接口控制模块(1)相连,所述DMA接口控制模块(78)与Dram控制模块(3)相连,所述CPU接口控制模块(77)与CPU(2)相连。
CN201511023341.1A 2015-12-31 2015-12-31 Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器 Active CN105607874B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201511023341.1A CN105607874B (zh) 2015-12-31 2015-12-31 Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201511023341.1A CN105607874B (zh) 2015-12-31 2015-12-31 Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器

Publications (2)

Publication Number Publication Date
CN105607874A CN105607874A (zh) 2016-05-25
CN105607874B true CN105607874B (zh) 2017-03-22

Family

ID=55987837

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201511023341.1A Active CN105607874B (zh) 2015-12-31 2015-12-31 Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器

Country Status (1)

Country Link
CN (1) CN105607874B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095713B (zh) * 2016-06-06 2019-05-03 深圳市硅格半导体股份有限公司 报文通信方法及装置
TWI620067B (zh) * 2016-12-01 2018-04-01 英業達股份有限公司 伺服器系統與讀取方法
CN111367839B (zh) * 2020-02-21 2021-06-29 苏州浪潮智能科技有限公司 一种主机端与fpga加速器之间的数据同步方法
CN112559406B (zh) * 2020-12-22 2021-11-19 无锡众星微系统技术有限公司 Sata传输层状态机优化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101599004A (zh) * 2009-07-10 2009-12-09 中国科学院光电技术研究所 基于fpga的sata控制器
CN102890622A (zh) * 2012-09-29 2013-01-23 无锡众志和达存储技术股份有限公司 一种基于协处理器的sata控制器
CN103106169A (zh) * 2013-01-28 2013-05-15 无锡众志和达存储技术股份有限公司 基于aurora协议的高速总线接口的扩展架构
CN104462181A (zh) * 2014-10-08 2015-03-25 记忆科技(深圳)有限公司 一种ssd后端数据通路管理加速模块及ssd设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014081719A1 (en) * 2012-11-20 2014-05-30 Peddle Charles I Solid state drive architectures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101599004A (zh) * 2009-07-10 2009-12-09 中国科学院光电技术研究所 基于fpga的sata控制器
CN102890622A (zh) * 2012-09-29 2013-01-23 无锡众志和达存储技术股份有限公司 一种基于协处理器的sata控制器
CN103106169A (zh) * 2013-01-28 2013-05-15 无锡众志和达存储技术股份有限公司 基于aurora协议的高速总线接口的扩展架构
CN104462181A (zh) * 2014-10-08 2015-03-25 记忆科技(深圳)有限公司 一种ssd后端数据通路管理加速模块及ssd设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《基于RAID-5的SATA磁盘阵列控制芯片设计》;叶波等;《微电子学》;20101031;第40卷(第5期);697-700,704 *

Also Published As

Publication number Publication date
CN105607874A (zh) 2016-05-25

Similar Documents

Publication Publication Date Title
CN105607874B (zh) Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器
CN101221541B (zh) 用于soc的可编程通信控制器
EP3092567B1 (en) System and method for isolating i/o execution via compiler and os support
CN102609222B (zh) 基于命令描述符的闪存控制方法
US11003429B1 (en) Compile-time scheduling
CN111190842B (zh) 直接存储器访问、处理器、电子设备和数据搬移方法
US20180181503A1 (en) Data flow computation using fifos
US10761822B1 (en) Synchronization of computation engines with non-blocking instructions
CN106844017A (zh) 用于网站服务器处理事件的方法和设备
WO2011041150A1 (en) Multi-processor based programmable logic controller and method for operating the same
WO2020034500A1 (zh) 一种基于二值化算法的加速控制系统、芯片及机器人
EP4066124A1 (en) Tile subsystem and method for automated data flow and data processing within an integrated circuit architecture
WO2022001128A1 (zh) Fpga板卡内存数据的读取方法、装置及介质
WO2017206151A1 (zh) 在单任务系统中实现多任务的方法、装置及单任务系统
US11467946B1 (en) Breakpoints in neural network accelerator
CN117118828B (zh) 一种协议转换器、电子设备及一种配置方法
CN108829530B (zh) 一种图像处理方法及装置
CN103218343A (zh) 采用数据驱动机制多处理器间数据通信电路
US11237994B2 (en) Interrupt controller for controlling interrupts based on priorities of interrupts
CN104890861A (zh) 多旋翼飞行器的控制方法及多旋翼飞行器
CN108628693A (zh) 处理器调试方法和系统
CN105677606A (zh) 总线设备的热插拔方法及总线装置
CN107277062A (zh) 数据包的并行处理方法及装置
CN109992539A (zh) 双主机协同工作装置
CN108196849A (zh) 一种低延迟指令调度器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20160525

Assignee: Jiangsu Xinsheng Intelligent Technology Co., Ltd.

Assignor: GOKE MICROELECTRONICS CO., LTD.

Contract record no.: 2018430000021

Denomination of invention: SATA (Serial advanced technology attachment) protocol acceleration module, host and hard disk communication method, as well as solid state drive controller

Granted publication date: 20170322

License type: Common License

Record date: 20181203