[go: up one dir, main page]

CN102567252A - 一种硬盘和主机之间数据传输方法和系统 - Google Patents

一种硬盘和主机之间数据传输方法和系统 Download PDF

Info

Publication number
CN102567252A
CN102567252A CN2010105817059A CN201010581705A CN102567252A CN 102567252 A CN102567252 A CN 102567252A CN 2010105817059 A CN2010105817059 A CN 2010105817059A CN 201010581705 A CN201010581705 A CN 201010581705A CN 102567252 A CN102567252 A CN 102567252A
Authority
CN
China
Prior art keywords
sata
data
prd
host
fis
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.)
Pending
Application number
CN2010105817059A
Other languages
English (en)
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 HUAHONG INTEGRATED CIRCUIT DESIGN Co Ltd
Original Assignee
BEIJING HUAHONG INTEGRATED CIRCUIT DESIGN 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 BEIJING HUAHONG INTEGRATED CIRCUIT DESIGN Co Ltd filed Critical BEIJING HUAHONG INTEGRATED CIRCUIT DESIGN Co Ltd
Priority to CN2010105817059A priority Critical patent/CN102567252A/zh
Publication of CN102567252A publication Critical patent/CN102567252A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明实施例公开了一种硬盘与主机之间数据传输方法和系统,通过采用基于SATA接口的控制芯片同时控制SATA DEVICE IP与SATA HOST IP,完成对数据的加密和解密操作,且由于所述主机与SATA DEVICE IP之间的DMA传输方式,以及,硬盘与SATA HOST IP之间采用DMA传输方式,不仅满足了主机与硬盘之间的数据传输安全性能要求,且保证了在资源受限的情况下高速的传输速度;同时,采用循环读取或写入额定大小缓冲区的方法,解决了数据缓冲区小的问题,所述SATA HOST IP和所述SATA DEVICE IP利用极少的内存,而完成数据传输,节省了数据处理的空间,提高了数据的传输速率。

Description

一种硬盘和主机之间数据传输方法和系统
技术领域
本发明涉及通信技术领域,更具体地说,涉及一种硬盘与主机之间数据传输方法和系统。
背景技术
基于SATA协议(硬盘与主机之间一种串行通信协议)的数据传输,比较常用的直接内存访问DMA和第一方直接内存访问FPDMA,所述DMA传输方法不需要处理干预,每执行一个命令进行一个状态交互;所述FPDMA传输方法采用本地命令队列NCQ技术,可在连续执行32个命令后再返回一个状态,传输速率较高,不论是DMA方法还是FPDMA方法,都需要在主机端和设备端建立物理区域描述符表,每个PRD TABLE都含有多个PRD ITEM,所述PRDITEM是PRD TABLE中的物理区域描述符PRD的项目。
为了实现通过硬件加解密数据保护用户信息,需在主机与硬盘之间增加一个控制芯片,该控制芯片实现的功能是能够所述主机和硬盘之间的数据传输时,进行数据加解密来确保通信安全。所述DMA本身由于每完成一次数据的读写,都需要一次命令和状态的交互,传输速率较低;而所述FPDMA由于采用了所述NCQ技术而出现占用资源大的问题。
由此,鉴于该控制芯片的存在,现有的所述DMA和FPDMA的两种常用传输方法在进行主机和硬盘间数据交互的同时,还受到所述控制芯片的影响,所需要的资源受到限制,数据传输速率会进一步受到影响,从而出现数据传输速度缓慢的问题。
发明内容
有鉴于此,本发明提供一种硬盘与主机之间数据传输方法和系统,在实现硬盘和主机间加解密功能的同时,提高了数据交互的速度。
一种硬盘与主机之间数据传输方法,主机与串行高级技术附件主机端集成包SATA DEVICE IP建立通信,硬盘与串行高级技术附件设备端集成包SATA HOST IP建立通信,所述SATA DEVICE IP与所述SATA HOST IP均受到基于SATA接口的控制芯片控制:
该方法包括:
主机向硬盘发送H2D FIS命令;
当所述SATA DEVICE IP接收到所述H2D FIS命令时,所述基于SATA接口的控制芯片的中央处理器CPU控制所述SATA DEVICE IP向所述SATAHOST IP发送该H2D FIS命令,当所述SATA HOST IP接收到所述H2D FIS命令时,所述CPU控制所述SATA DEVICE IP与所述SATA HOST IP建立物理区域描述符表PRD TABLE;
所述SATA HOST IP向所述硬盘发送此H2D FIS命令;
硬盘向所述SATA HOST IP返回与所述H2D FIS命令对应的数据及状态信息并由所述SATA DEVICE IP转发至主机。
该实施方式通过主机与SATA DEVICE IP之间的DMA传输方式,以及,硬盘与SATA HOST IP之间采用DMA传输方式,并利用所述基于SATA接口的控制芯片同时控制所述SATA DEVICE IP与SATA HOST IP,完成命令、数据和状态的处理和传输,实现了在资源受限的情况下可进行加解密的高速数据传输。
优选地,所述方法还包括:
判断所述H2D FIS命令的类型,当所述H2D FIS命令为直接内存访问命令DMA命令时:
在所述SATA DEVICE IP接收到所述DMA命令时,确定SATA DEVICEIP的PRD TABLE的最大的物理区域描述符数PRD ITEM数,具体为:
判断所述DMA命令的扇区计数sector_count是否大于所述SATADEVICE IP可建立的PRD的项目PRD ITEM数PRD_ITEM_MAX_NUM,具体为:
当所述sector_count>PRD_ITEM_MAX_NUM,则取所述sector_count=sector_count-PRD_ITEM_MAX_NUM,并建立PRD_ITEM_MAX_NUM个PRD ITEM的PRD TABLE;
当所述0<sector_count<PRD_ITEM_MAX_NUM,则建立sector_count个PRD ITEM的PRD TABLE;
在所述SATA HOST IP接收到所述DMA命令时,确定SATA HOST IP的PRD TABLE的PRD ITEM数,具体为:
判断所述DMA命令的sector_count是否大于所述SATA HOST IP所能处理的最大扇区数SC_MAX_NUM,具体为:
当所述sector_count>SC_MAX_NUM,则取sector_count=sector_count-SC_MAX_NUM,并建立SC_MAX_NUM个PRD ITEM的PRD TABLE;
当所述0<sector_count<SC_MAX_NUM,则取sector_count个PRD ITEM的PRD TABLE。
优选地,判断所述DMA命令是读命令DMA READ命令,或是写命令DMA WRITE命令,当所述DMA命令是DMA READ时:
所述SATA HOST IP在收到所述硬盘发送的数据时,产生中断,并向基于SATA接口的控制芯片的加解密模块发送数据进行解密;
将解密后的数据存储在SATA DEVICE IP的数据缓冲区;
在所述SATA DEVICE IP被激活时,参照建立的所述SATA DEVICE IP的PRD TABLE从所述SATA DEVICE IP的数据缓冲区循环读取数据,并将读取的数据发送至主机;
判断所述SATA DEVICE IP的PDTR寄存器控制位的状态,根据状态位判断所述SATA DEVICE IP缓冲区的数据是否读取完毕,并在读取完毕时,将状态信息STATUS FIS发送至主机;
当所述DMA命令是DMA WRITE时,所述SATA DEVICE IP收到主机写入的数据时,产生中断,并向基于SATA接口的控制芯片的加解密模块发送数据进行加密;
将加密后的数据发送并存储在SATA HOST IP的数据缓冲区;
在所述SATA HOST IP被激活时,按照建立的所述SATA HOST IP的PRDTABLE从所述SATA HOST IP的数据缓冲区中循环读取数据并写入硬盘;
判断所述SATA HOST IP的P1IS寄存器控制位DPS的状态,根据该状态位判断所述SATA HOST IP缓冲区的数据是否写入完毕,并根据P1IS中的另一寄存器控制位DHRS判断是否收到来自所述硬盘的状态信息STATUS FIS,在所述SATA HOST IP收到硬盘发送的状态信息STATUS FIS后,将所述STATUS FIS转发至所述SATA DEVICE IP;
当所述SATA DEVICE IP接收到该STATUS FIS时,判断所述SATADEVICE IP的PDTR寄存器控制位的状态,根据状态位判断所述SATADEVICE IP缓冲区的数据是否写入完毕,并在写入完毕时,将状态信息STATUS FIS发送至主机。
上述实施方式在采用循环读取或写入额定大小缓冲区的方法,解决了数据缓冲区小的问题,所述SATA HOST IP和所述SATA DEVICE IP利用极少的内存,而完成数据传输,节省了数据处理的空间,提高了数据的传输速率。
优选地,所述方法还包括:所述CPU对所述SATA HOST IP和所述SATADEVICE IP进行初始化,所述主机与所述SATA DEVICE IP建立通信,所述硬盘与所述SATA HOST IP建立通信。
优选地,所述方法还包括:所述SATA DEVICE IP和所述SATA HOST IP通过生成中断状态寄存器判断是否接收到所述H2D FIS,具体为:当确认接收到所述H2D FIS时,建立所述PRD TABLE;否则放弃建立所述PRD TABLE。
优选地,所述方法还包括:判断所述SATA DEVICE IP是否被激活,如被激活则接收由所述SATA HOST IP从硬盘读取的数据,循环读取所述数据缓冲区的数据,将读取的数据发送至主机;否则激活所述SATA DEVICE IP。
优选地,所述方法还包括:判断所述SATA HOST IP是否被激活,如被激活则接收由所述SATA DEVICE IP收到的从主机写入的数据,循环读取所述数据缓冲区的数据并将所述数据写入硬盘;否则将所述SATA HOST IP进行激活。
上述的实施方式是在主机与所述硬盘之间进行读写操作时,所需的建立通信及集成包激活的动作,完善了数据传输的性能要求。
一种硬盘与主机之间数据传输系统,包括:主机、基于SATA接口的控制芯片,串行高级技术附件主机端集成包SATA DEVICE IP、串行高级技术附件设备端集成包SATA HOST IP和硬盘,其中:
所述主机与所述SATA DEVICE IP建立通信、所述硬盘与所述SATAHOST IP建立通信,所述基于SATA接口的控制芯片控制所述SATA DEVICEIP与所述SATA HOST IP;
所述主机向硬盘发送H2D FIS命令;
当所述SATA DEVICE IP接收到所述H2D FIS命令时,所述基于SATA接口的控制芯片的中央处理器CPU控制所述SATA DEVICE IP向所述SATAHOST IP发送该H2D FIS命令,当所述SATA HOST IP接收到所述H2D FIS命令时,所述CPU控制所述SATA DEVICE IP与所述SATA HOST IP建立物理区域描述符表PRD TABLE;
所述SATA HOST IP向所述硬盘发送此H2D FIS命令;
硬盘向所述SATA HOST IP返回与所述H2D FIS命令对应的数据及状态信息并由所述SATA DEVICE IP转发至主机。
该系统与方法相对应,采用基于SATA接口的控制芯片同时控制SATADEVICE IP与SATA HOST IP,完成对数据的加密和解密操作,将DMA传输方式与中间方的DMA处理方法结合,使主机与硬盘之间的数据传输安全且高速。
从上述的技术方案可以看出,本发明实施例通过采用所述基于SATA接口的控制芯片同时控制SATA DEVICE IP与SATA HOST IP,完成对数据的加密和解密操作,且由于所述主机与SATA DEVICE IP之间的DMA传输方式,以及,硬盘与SATA HOST IP之间采用DMA传输方式,不仅满足了主机与硬盘之间的数据传输安全性能要求,且保证了在资源受限的情况下高速的传输速度;同时,采用循环读取或写入额定大小缓冲区的方法,解决了数据缓冲区小的问题,所述SATA HOST IP和所述SATA DEVICE IP利用极少的内存,而完成数据传输,节省了数据处理的空间,提高了数据的传输速率。同时,本发明公开了与方法对应的系统,所述系统采用基于SATA接口的控制芯片同时控制SATA DEVICE IP与SATA HOST IP,完成对数据的加密和解密操作,将DMA传输方式与中间方的DMA处理方法结合,使主机与硬盘之间的数据传输安全且高速。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种硬盘与主机之间数据传输方法流程图;
图2为本发明实施例公开的一种硬盘与主机之间数据传输方法流程图;
图3为本发明实施例公开的一种硬盘与主机之间数据传输方法流程图;
图4为本发明实施例公开的一种硬盘与主机之间数据传输系统结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词、简写或缩写总结如下:
SATA:Serial Advanced Technology Attachment,串行高级技术附件;
IP:Integrate Packet,集成包;
SATA HOST IP:SATA主机端集成包;
SATA DEVICE IP:SATA设备端集成包;
DMA:Direct Memory Access,直接内存访问;
DMA READ:从硬盘读数据到主机内存;
DMA WRITE:从主机内存写入数据到硬盘;
FPDMA:First-party DMA,第一方的直接内存访问;
NCQ-Native Command Queue,本地命令队列;
MPDMA:Middle-party DMA,中间方的直接内存访问;
FIS:Fis Information Structure,帧信息结构体;
PRD:Physical Region Descriptor,物理区域描述符;
PRD TABLE:物理区域描述符表;
PRD ITEM:PRD TABLE中的PRD项;
Sector_count:扇区计数;
PRD_ITEM_MAX_NUM;最大PRD ITEM数;
SC_MAX_NUM:最大扇区数。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种硬盘与主机之间数据传输方法和系统,在实现硬盘和主机间加解密功能的同时,提高了数据交互的速度。
在进行实施例的描述前,需要明确的是:由于本发明采用了控制芯片中的中央处理器CPU同时控制SATA DEVICE IP和SATA HOST IP,用于完成对通信数据的加密和解密的操作,本发明的实施例中采用了不使用NCQ机制,以适应该种应用场景下的缓冲区有限的情况。
在实施例中,需要指出的是,结合实际应用的情况,在所述SATA DEVICEIP端,采用了不发送DMA SETUP FIS的SEGMENT方法,以适应实际应用中的PRD ITEM不足的情况出现。
从主机端发送命令,在硬盘端返回数据和处理数据后的状态,中间所经历的这一过程在本实施例中,可以成为是MPDMA,即,中间方的DMA处理方,在本说明书中的实施例中,该MPDMA方法的最终目的是将主机和硬盘的通讯过程在加解密的应用需求下,能够实现高速传输数据,并实现主机与硬盘在宏观上的DMA传输。
图1示出了一种硬盘与主机之间数据传输方法,主机与串行高级技术附件主机端集成包SATA DEVICE IP建立通信,硬盘与串行高级技术附件设备端集成包SATA HOST IP建立通信,所述SATA DEVICE IP与所述SATAHOST IP均受到基于SATA接口的控制芯片控制:
该方法包括:
步骤101:主机向硬盘发送H2D FIS命令;
步骤102:当所述SATA DEVICE IP接收到所述H2D FIS命令时,所述基于SATA接口的控制芯片的中央处理器CPU控制所述SATA DEVICE IP向所述SATA HOST IP发送该H2D FIS命令;
步骤103:当所述SATA HOST IP接收到所述H2D FIS命令时,所述CPU控制所述SATA DEVICE IP与所述SATA HOST IP建立物理区域描述符表PRD TABLE;
步骤104:所述SATA HOST IP向所述硬盘发送此H2D FIS命令;
步骤105:硬盘向所述SATA HOST IP返回与所述H2D FIS命令对应的数据及状态信息并由所述SATA DEVICE IP转发至主机。
本实施例中,通过采用所述基于SATA接口的控制芯片同时控制SATADEVICE IP与SATA HOST IP,完成对数据的加密和解密操作,且由于所述主机与SATA DEVICE IP之间的DMA传输方式,以及,硬盘与SATA HOSTIP之间采用DMA传输方式,不仅满足了主机与硬盘之间的数据传输安全性能要求,且保证了在资源受限的情况下高速的传输速度。
图2示出了又一种硬盘与主机之间数据传输方法,在基于图1的应用场景下,该实施方式集中体现的是,主机在读取硬盘时,采用本发明的数据处理方法,包括:
步骤201:主机向硬盘发送H2D FIS命令;
步骤202:在所述SATA DEVICE IP接收到所述H2D FIS命令时,判断所述H2D FIS命令的类型,若所述H2D FIS命令为属性设置命令或PIO命令,则将该H2D FIS命令由所述SATA HOST IP转发至硬盘,并由硬盘向主机返回数据及状态信息;
当所述H2D FIS命令为直接内存访问命令DMA命令时,执行步骤203;
步骤203:当所述DMA命令为DMA READ命令时,由所述SATADEVICE IP将该命令发送至SATA HOST IP;
该步骤具体为:
对于所述SATA DEVICE IP来说:首先判断判断所述DMA命令的扇区计数sector_count是否大于所述SATA DEVICE IP可建立的PRD的项目PRDITEM数PRD_ITEM_MAX_NUM,具体为:
当所述sector_count>PRD_ITEM_MAX_NUM,则取所述sector_count=sector_count-PRD_ITEM_MAX_NUM,并建立PRD_ITEM_MAX_NUM个PRD ITEM的PRD TABLE;
当所述0<sector_count<PRD_ITEM_MAX_NUM,则建立sector_count个PRD ITEM的PRD TABLE;
对于所述SATA HOST IP来说:在所述SATA HOST IP接收到所述DMA命令时,确定SATA HOST IP的PRD TABLE的PRD ITEM数,具体为:
判断所述DMA命令的sector_count是否大于所述SATA HOST IP所能处理的最大扇区数SC_MAX_NUM,具体为:
当所述sector_count>SC_MAX_NUM,则取sector_count=sector_count-SC_MAX_NUM,并建立SC_MAX_NUM个PRD ITEM的PRD TABLE;
当所述0<sector_count<SC_MAX_NUM,则取sector_count个PRD ITEM的PRD TABLE。
步骤204:按照确定的PRD ITEM数将所述命令由所述SATA HOST IP转发至硬盘;
步骤205:所述硬盘发送与该DMA READ命令对应的数据至所述SATAHOST IP;
步骤206:所述SATA HOST IP在CPU的控制下产生中断,并向所述基于SATA接口的控制芯片的加解密模块发送数据;
步骤207:所述加解密模块对数据进行解密后,存储至SATA DEVICE IP的数据缓冲区;
步骤208:判断SATA DEVICE IP是否被激活,如被激活进行步骤209;
步骤209:参照建立的所述SATA DEVICE IP的PRD TABLE从所述SATA DEVICE IP的数据缓冲区循环读取数据,并将读取的数据发送至主机;否则激活所述SATA DEVICE IP,执行所述步骤209;
于此同时,判断sector_count是否大于所述SATA HOST IP所能处理的最大扇区数SC_MAX_NUM,具体为:
当所述sector_count>SC_MAX_NUM,则取sector_count=sector_count-SC_MAX_NUM,并建立SC_MAX_NUM个PRD ITEM的PRD TABLE,并按确定后的PRD ITEM数循环读取数据,直至所述0<sector<SC_MAX_NUM;
当所述0<sector_count<SC_MAX_NUM,则取sector_count个PRD ITEM的PRD TABLE并按确定后的PRD ITEM数读取数据;
步骤210:所述SATA DEVICE IP接收所述SATA HOST IP的数据,并将数据发送至主机完毕后,所述SATA DEVICE IP的PISR寄存器会产生中断,其中PISR中的DPS位被置1,同时PCMDR寄存器中的DPP会被置1;
判断PDTR寄存器中的b0位是否是0,若是0,则执行步骤211;若所述PDTR寄存器中b0位不为0,则将中断寄存器PISR的DPS位和控制寄存器PCMDR中的DPP位置0,继续等待被解密的数据。
步骤211:所述SATA DEVICE IP的PRD_ITEM_MAX_NUM个PRDITEM中的数据已经传输完毕,向主机发送读入完毕的状态信息,并会判断sector_count是否大于PRD_ITEM_MAX_NUM,若sector_count>PRD_ITEM_MAX_NUM,则循环进行步骤203-步骤210;若所述PDTR寄存器中b0位不为0,则将中断寄存器PISR的DPS位和控制寄存器PCMDR中的DPP位置0,继续等待被解密的数据。
本实施例中,采用循环读取额定大小缓冲区的方法实现了从硬盘向SATAHOST IP,以及所述SATA DEVICE IP接收到所述SATA HOST IP发送的数据时,进行寄存器的相关控制位的判断,且所述SATA HOST IP和所述SATADEVICE IP各拥有额定大小的缓冲区用于建立PRD TABLE,实际应用中,所述SATA DEVICE IP可以构建PRD_ITEM_MAX_NUM个PRD ITEM,而SATA HOST IP构建的PRD ITEM略小于PRD_ITEM_MAX_NUM,由于当一个PRD ITEM被处理后,所述SATA DEVICE IP的PCMDR寄存器中的DPP位会被置1,这样会挂起所有的活动,直至该位被清零。
图3示出了一种硬盘与主机之间数据传输方法,在基于图1的应用场景下,该实施方式集中体现是,在主机向硬盘写入数据时,采用本发明的数据处理方法,包括:
步骤301:主机向硬盘发送H2D FIS命令;
步骤302:在所述SATA DEVICE IP接收到所述H2D FIS命令时,判断所述H2D FIS命令的类型,若所述H2D FIS命令为属性设置命令或PIO命令,则将该H2D FIS命令由所述SATA HOST IP转发至硬盘,并由硬盘向主机返回数据及状态信息;
当所述H2D FIS命令为直接内存访问命令DMA命令时,执行步骤303;
步骤303:当所述DMA命令为DMA WRITE命令时,由所述SATADEVICE IP将该命令发送至SATA HOST IP;
该步骤具体为:
对于所述SATA DEVICE IP来说:首先判断判断所述DMA命令的扇区计数sector_count是否大于所述SATA DEVICE IP可建立的PRD的项目PRDITEM数PRD_ITEM_MAX_NUM,具体为:
当所述sector_count>PRD_ITEM_MAX_NUM,则取所述sector_count=sector_count-PRD_ITEM_MAX_NUM,并建立PRD_ITEM_MAX_NUM个PRD ITEM的PRD TABLE;
当所述0<sector_count<PRD_ITEM_MAX_NUM,则建立sector_count个PRD ITEM的PRD TABLE;
对于所述SATA HOST IP来说:在所述SATA HOST IP接收到所述DMA命令时,确定SATA HOST IP的PRD TABLE的扇区数,具体为:
判断所述DMA命令的sector_count是否大于所述SATA HOST IP所能处理的最大扇区数SC_MAX_NUM,具体为:
当所述sector_count>SC_MAX_NUM,则取sector_count=sector_count-SC_MAX_NUM,并建立SC_MAX_NUM个PRD ITEM的PRD TABLE;
当所述0<sector_count<SC_MAX_NUM,则取sector_count个PRD ITEM的PRD TABLE。
步骤304:所述SATA HOST IP根据寄存器判断接收到该DMA ACTIVEFIS,经过所述SATA HOST IP传输至主机。
步骤305:所述主机将要写入的数据发送至所述SATA DEVICE IP中;
步骤306:所述SATA DEVICE IP收到主机写入的数据时,产生中断,并向基于SATA接口的控制芯片的加解密模块发送数据进行加密;
步骤307:将加密后的数据发送并存储在SATA HOST IP的数据缓冲区;
步骤308:判断所述SATA HOST IP是否被激活,如被激活,执行步骤309;
步骤309:按照建立的所述SATA HOST IP的PRD TABLE从所述SATAHOST IP的数据缓冲区中循环读取数据并写入硬盘,否则激活所述SATAHOST IP,执行步骤309;
与此同时,判断是否sector_count>SC_MAX_NUM时,确定所述SATAHOST IP的PRD TABLE的PRD ITEM数,并按照确定后的PRD ITEM数循环写入数据,直至所述0<sector_count<SC_MAX_NUM;
当0<sector_count<SC_MAX_NUM时,则取sector_count个PRD ITEM的PRD TABLE并按确定后的PRD ITEM数写入数据;
步骤310:判断PDTR寄存器中的b0位是否是0,若是0,则所述SATADEVICE IPPRD_ITEM_MAX_NUM个PRD ITEM中的数据已经传输完毕,向主机发送写入完毕的状态信息,并会判断sector_count是否大于PRD_ITEM_MAX_NUM,若sector_count>PRD_ITEM_MAX_NUM,则循环进行步骤303-步骤310;若所述PDTR寄存器中b0位不为0,则将中断寄存器PISR的DPS位和控制寄存器PCMDR中的DPP位置0,继续等待被加密的数据。
需要说明的是:
在判断PDTR寄存器中的b0位是否是0的之前,还要判断所述SATAHOST IP的P1IS寄存器控制位DPS的状态,根据该状态位判断所述SATAHOST IP缓冲区的数据是否写入完毕,并根据P1IS中的另一寄存器控制位DHRS判断是否收到来自所述硬盘的状态信息STATUS FIS。
在SATA HOST IP收到硬盘发送的状态信息STATUS FIS后,将其转发至SATA DEVICE IP,再由SATA DEVICE IP发送至主机。
本实施例体现是从所述主机将数据写入硬盘的过程,与图2对应的说明类似,在写入数据时通过判断缓冲区的大小及状态信息发送时的状态位判断,保证了在执行写命令时的,缓冲区充分利用和数据的高效率传输。
上述两个实施例列举出了硬盘与主机之间进行命令传达、数据读写、状态信息上传的过程,运用了本发明中的数据传输方法,基于本说明书的图1对应的图示和说明的核心思想上,不仅实现了在所述硬盘和主机进行数据加解密的安全性能的要求及保证了在数据处理时的高速性,解决了数据缓冲区小的问题。
图4示出了一种硬盘与主机之间数据传输系统,包括:
主机401、基于SATA接口的控制芯片402,串行高级技术附件主机端集成包SATA DEVICE IP403、串行高级技术附件设备端集成包SATA HOSTIP404和硬盘405,其中:
所述主机401与所述SATA DEVICE IP403建立通信、所述硬盘405与所述SATA HOST IP404建立通信,所述基于SATA接口的控制芯片402控制所述SATA DEVICE IP403与所述SATA HOST IP404;
所述主机401向硬盘405发送H2D FIS命令;
当所述SATA DEVICE IP403接收到所述H2D FIS命令时,所述基于SATA接口的控制芯片402的中央处理器CPU控制所述SATA DEVICE IP向所述SATA HOST IP404发送该H2D FIS命令,当所述SATA HOST IP404接收到所述H2D FIS命令时,所述CPU控制所述SATA DEVICE IP403与所述SATA HOST IP404建立物理区域描述符表PRD TABLE;
所述SATA HOST IP404向所述硬盘405发送此H2D FIS命令;
硬盘405向所述SATA HOST IP404返回与所述H2D FIS命令对应的数据及状态信息并由所述SATA DEVICE IP403转发至主机401。
该系统与方法相对应,采用基于SATA接口的控制芯片同时控制SATADEVICE IP与SATA HOST IP,完成对数据的加密和解密操作,将DMA传输方式与中间方的DMA处理方法结合,使主机与硬盘之间的数据传输安全且高速。
综上所述:
本发明的实施例通过采用所述基于SATA接口的控制芯片同时控制SATA DEVICE IP与SATA HOST IP,完成对数据的加密和解密操作,且由于所述主机与SATA DEVICE IP之间的DMA传输方式,以及,硬盘与SATAHOST IP之间采用DMA传输方式,不仅满足了主机与硬盘之间的数据传输安全性能要求,且保证了在资源受限的情况下高速的传输速度;同时,采用循环读取或写入额定大小缓冲区的方法,解决了数据缓冲区小的问题,所述SATAHOST IP和所述SATA DEVICE IP利用极少的内存,而完成数据传输,节省了数据处理的空间,提高了数据的传输速率。同时,本发明公开了与方法对应的系统,所述系统采用基于SATA接口的控制芯片同时控制SATA DEVICE IP与SATA HOST IP,完成对数据的加密和解密操作,将DMA传输方式与中间方的DMA处理方法结合,使主机与硬盘之间的数据传输安全且高速。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种硬盘与主机之间数据传输方法,其特征在于,主机与串行高级技术附件主机端集成包SATA DEVICE IP建立通信,硬盘与串行高级技术附件设备端集成包SATA HOST IP建立通信,所述SATA DEVICE IP与所述SATAHOST IP均受到基于SATA接口的控制芯片控制,该方法包括:
主机向硬盘发送H2D FIS命令;
当所述SATA DEVICE IP接收到所述H2D FIS命令时,所述基于SATA接口的控制芯片的中央处理器CPU控制所述SATA DEVICE IP向所述SATAHOST IP发送该H2D FIS命令,当所述SATA HOST IP接收到所述H2D FIS命令时,所述CPU控制所述SATA DEVICE IP与所述SATA HOST IP建立物理区域描述符表PRD TABLE;
所述SATA HOST IP向所述硬盘发送此H2D FIS命令;
硬盘向所述SATA HOST IP返回与所述H2D FIS命令对应的数据及状态信息并由所述SATA DEVICE IP转发至主机。
2.根据权利要求1所述的传输方法,其特征在于,还包括:
判断所述H2D FIS命令的类型,当所述H2D FIS命令为直接内存访问命令DMA命令时:
在所述SATA DEVICE IP接收到所述DMA命令时,确定SATA DEVICEIP的PRD TABLE的最大的物理区域描述符数PRD ITEM数,具体为:
判断所述DMA命令的扇区计数sector_count是否大于所述SATADEVICE IP可建立的PRD的项目PRD ITEM数PRD_ITEM_MAX_NUM,具体为:
当所述sector_count>PRD_ITEM_MAX_NUM,则取所述sector_count=sector_count-PRD_ITEM_MAX_NUM,并建立PRD_ITEM_MAX_NUM个PRD ITEM的PRD TABLE;
当所述0<sector_count<PRD_ITEM_MAX_NUM,则建立sector_count个PRD ITEM的PRD TABLE;
在所述SATA HOST IP接收到所述DMA命令时,确定SATA HOST IP的PRD TABLE的PRD ITEM数,具体为:
判断所述DMA命令的sector_count是否大于所述SATA HOST IP所能处理的最大扇区数SC_MAX_NUM,具体为:
当所述sector_count>SC_MAX_NUM,则取sector_count=sector_count-SC_MAX_NUM,并建立SC_MAX_NUM个PRD ITEM的PRD TABLE;
当所述0<sector_count<SC_MAX_NUM,则取sector_count个PRD ITEM的PRD TABLE。
3.根据权利要求2所述的方法,其特征在于,判断所述DMA命令是读命令DMA READ命令,或是写命令DMA WRITE命令,当所述DMA命令是DMA READ时:
所述SATA HOST IP在收到所述硬盘发送的数据时,产生中断,并向基于SATA接口的控制芯片的加解密模块发送数据进行解密;
将解密后的数据存储在所述SATA DEVICE IP的数据缓冲区;
在所述SATA DEVICE IP被激活时,参照建立的所述SATA DEVICE IP的PRD TABLE从所述SATA DEVICE IP的数据缓冲区循环读取数据,并将读取的数据发送至主机;
判断所述SATA DEVICE IP的PDTR寄存器控制位的状态,根据状态位判断所述SATA DEVICE IP缓冲区的数据是否读取完毕,并在读取完毕时,将状态信息STATUS FIS发送至主机;
当所述DMA命令是DMA WRITE时,所述SATA DEVICE IP收到主机写入的数据时,产生中断,并向基于SATA接口的控制芯片的加解密模块发送数据进行加密;
将加密后的数据发送并存储在SATA HOST IP的数据缓冲区;
在所述SATA HOST IP被激活时,按照建立的所述SATA HOST IP的PRDTABLE从所述SATA HOST IP的数据缓冲区中循环读取数据并写入硬盘;
判断所述SATA HOST IP的P1IS寄存器控制位DPS的状态,根据该状态位判断所述SATA HOST IP缓冲区的数据是否写入完毕,并根据P1IS中的另一寄存器控制位DHRS判断是否收到来自所述硬盘的状态信息STATUS FIS,在所述SATA HOST IP收到硬盘发送的状态信息STATUS FIS后,将所述STATUS FIS转发至所述SATA DEVICE IP;
当所述SATA DEVICE IP接收到该STATUS FIS时,判断所述SATADEVICE IP的PDTR寄存器控制位的状态,根据状态位判断所述SATADEVICE IP缓冲区的数据是否写入完毕,并在写入完毕时,将状态信息STATUS FIS发送至主机。
4.根据权利要求1所述的方法,其特征在于,还包括:所述CPU对所述SATA HOST IP和所述SATA DEVICE IP进行初始化,所述主机与所述SATA DEVICE IP建立通信,所述硬盘与所述SATA HOST IP建立通信。
5.根据权利要求1所述的方法,其特征在于,还包括:所述SATA DEVICEIP和所述SATA HOST IP通过生成中断状态寄存器判断是否接收到所述H2DFIS,具体为:当确认接收到所述H2D FIS时,建立所述PRD TABLE;否则放弃建立所述PRD TABLE。
6.根据权利要求3所述的方法,其特征在于,还包括:判断所述SATADEVICE IP是否被激活,如被激活则接收由所述SATA HOST IP从硬盘读取的数据,循环读取所述数据缓冲区的数据,将读取的数据发送至主机;否则激活所述SATA DEVICE IP。
7.根据权利要求3所述的方法,其特征在于,还包括:判断所述SATAHOST IP是否被激活,如被激活则接收由所述SATA DEVICE IP收到的从主机写入的数据,循环读取所述数据缓冲区的数据并将所述数据写入硬盘;否则将所述SATA HOST IP进行激活。
8.一种硬盘与主机之间数据传输系统,其特征在于,包括:主机、基于SATA接口的控制芯片,串行高级技术附件主机端集成包SATA DEVICE IP、串行高级技术附件设备端集成包SATA HOST IP和硬盘,其中:
所述主机与所述SATA DEVICE IP建立通信、所述硬盘与所述SATAHOST IP建立通信,所述基于SATA接口的控制芯片控制所述SATA DEVICEIP与所述SATA HOST IP;
所述主机向硬盘发送H2D FIS命令;
当所述SATA DEVICE IP接收到所述H2D FIS命令时,所述基于SATA接口的控制芯片的中央处理器CPU控制所述SATA DEVICE IP向所述SATAHOST IP发送该H2D FIS命令,当所述SATA HOST IP接收到所述H2D FIS命令时,所述CPU控制所述SATA DEVICE IP与所述SATA HOST IP建立物理区域描述符表PRD TABLE;
所述SATA HOST IP向所述硬盘发送此H2D FIS命令;
硬盘向所述SATA HOST IP返回与所述H2D FIS命令对应的数据及状态信息并由所述SATA DEVICE IP转发至主机。
CN2010105817059A 2010-12-09 2010-12-09 一种硬盘和主机之间数据传输方法和系统 Pending CN102567252A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010105817059A CN102567252A (zh) 2010-12-09 2010-12-09 一种硬盘和主机之间数据传输方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010105817059A CN102567252A (zh) 2010-12-09 2010-12-09 一种硬盘和主机之间数据传输方法和系统

Publications (1)

Publication Number Publication Date
CN102567252A true CN102567252A (zh) 2012-07-11

Family

ID=46412703

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010105817059A Pending CN102567252A (zh) 2010-12-09 2010-12-09 一种硬盘和主机之间数据传输方法和系统

Country Status (1)

Country Link
CN (1) CN102567252A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103345453A (zh) * 2013-06-27 2013-10-09 清华大学 支持sata接口的硬盘数据加密卡及加解密方法
CN105279107A (zh) * 2015-11-13 2016-01-27 北京华虹集成电路设计有限责任公司 一种防止从盘启动的方法及系统
CN105468983A (zh) * 2015-11-17 2016-04-06 北京华虹集成电路设计有限责任公司 基于sata接口的数据传输方法与装置
CN105550605A (zh) * 2015-12-16 2016-05-04 北京华虹集成电路设计有限责任公司 一种加/解密引擎及其实现方法
CN106095713A (zh) * 2016-06-06 2016-11-09 深圳市硅格半导体股份有限公司 报文通信方法及装置
CN107145198A (zh) * 2017-04-19 2017-09-08 深圳市同泰怡信息技术有限公司 一种提升服务器对硬盘兼容能力的方法及其主板
CN113688073A (zh) * 2021-09-07 2021-11-23 天津津航计算技术研究所 一种sata从设备ip核测试系统
CN114721984A (zh) * 2022-03-30 2022-07-08 湖南长城银河科技有限公司 面向低延时应用的sata接口数据传输方法和系统
WO2023160639A1 (zh) * 2022-02-24 2023-08-31 华为技术有限公司 数据处理方法、直接内存访问引擎和计算设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060117189A1 (en) * 2000-11-03 2006-06-01 Chung-Yen Chiu Cryptographic serial ATA apparatus and method
US20070260756A1 (en) * 2006-01-05 2007-11-08 Pao-Ching Tseng Method for Processing Command via SATA Interface
US20090234994A1 (en) * 2008-03-14 2009-09-17 Kyutaeg Oh Method, apparatus, and system for port multiplier enhancement
CN101800071A (zh) * 2009-02-10 2010-08-11 三星电子株式会社 固态盘设备及其编程失败处理方法
CN101840306A (zh) * 2009-03-18 2010-09-22 研祥智能科技股份有限公司 VxWorks操作系统中实现驱动SATA设备的方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060117189A1 (en) * 2000-11-03 2006-06-01 Chung-Yen Chiu Cryptographic serial ATA apparatus and method
US20070260756A1 (en) * 2006-01-05 2007-11-08 Pao-Ching Tseng Method for Processing Command via SATA Interface
US20090234994A1 (en) * 2008-03-14 2009-09-17 Kyutaeg Oh Method, apparatus, and system for port multiplier enhancement
CN101800071A (zh) * 2009-02-10 2010-08-11 三星电子株式会社 固态盘设备及其编程失败处理方法
CN101840306A (zh) * 2009-03-18 2010-09-22 研祥智能科技股份有限公司 VxWorks操作系统中实现驱动SATA设备的方法和系统

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103345453B (zh) * 2013-06-27 2016-02-24 清华大学 基于支持sata接口的硬盘数据加密卡进行加密的方法
CN103345453A (zh) * 2013-06-27 2013-10-09 清华大学 支持sata接口的硬盘数据加密卡及加解密方法
CN105279107A (zh) * 2015-11-13 2016-01-27 北京华虹集成电路设计有限责任公司 一种防止从盘启动的方法及系统
CN105468983B (zh) * 2015-11-17 2020-01-03 北京华大智宝电子系统有限公司 基于sata接口的数据传输方法与装置
CN105468983A (zh) * 2015-11-17 2016-04-06 北京华虹集成电路设计有限责任公司 基于sata接口的数据传输方法与装置
CN105550605A (zh) * 2015-12-16 2016-05-04 北京华虹集成电路设计有限责任公司 一种加/解密引擎及其实现方法
CN106095713A (zh) * 2016-06-06 2016-11-09 深圳市硅格半导体股份有限公司 报文通信方法及装置
CN107145198A (zh) * 2017-04-19 2017-09-08 深圳市同泰怡信息技术有限公司 一种提升服务器对硬盘兼容能力的方法及其主板
CN107145198B (zh) * 2017-04-19 2020-04-17 深圳市同泰怡信息技术有限公司 一种提升服务器对硬盘兼容能力的方法及其主板
CN113688073A (zh) * 2021-09-07 2021-11-23 天津津航计算技术研究所 一种sata从设备ip核测试系统
CN113688073B (zh) * 2021-09-07 2024-07-09 天津津航计算技术研究所 一种sata从设备ip核测试系统
WO2023160639A1 (zh) * 2022-02-24 2023-08-31 华为技术有限公司 数据处理方法、直接内存访问引擎和计算设备
CN114721984A (zh) * 2022-03-30 2022-07-08 湖南长城银河科技有限公司 面向低延时应用的sata接口数据传输方法和系统
CN114721984B (zh) * 2022-03-30 2024-03-26 湖南长城银河科技有限公司 面向低延时应用的sata接口数据传输方法和系统

Similar Documents

Publication Publication Date Title
CN102567252A (zh) 一种硬盘和主机之间数据传输方法和系统
EP2803012B1 (en) Using storage controller bus interfaces to secure data transfer between storage devices and hosts
US9076003B2 (en) Method and apparatus for transparently encrypting and decrypting computer interface data
US7320071B1 (en) Secure universal serial bus
CN104378649B (zh) 一种利用国密sm1算法对视频流进行实时加密的方法及系统
CN1319294A (zh) 具有保密功能的适配器及使用这种适配器的计算机保密系统
JP2008269363A (ja) 記憶制御装置および記憶制御方法
JP2014530371A (ja) ファイル暗号化方法及び装置、ファイル復号方法及び装置
CN103345453B (zh) 基于支持sata接口的硬盘数据加密卡进行加密的方法
CN101308475A (zh) 安全移动存储系统及其使用方法
KR100954649B1 (ko) 데이터 암호화 장치, 데이터 복호화 장치 및 데이터 암호화 방법
CN101894235B (zh) 一种智能卡安全会话系统
CN102081713A (zh) 一种用于防止数据泄密的办公系统
CN103986717A (zh) 网络数据安全传输与存储系统及方法
CN106991061A (zh) 一种sata硬盘密码模块及其工作方法
CN100437618C (zh) 一种便携式信息安全设备
CN101398790B (zh) 以全盘加密整合外部nvram
KR101534566B1 (ko) 클라우드 가상 데스크탑 보안 통제 장치 및 방법
CN102739393B (zh) 基于apb总线的硬件加密uart装置
CN106326757A (zh) 一种存储系统的数据加密装置
CN106951790B (zh) Usb存储介质透明加密方法
US12267413B2 (en) Integrated circuit module functioning for information security
CN105472030A (zh) 一种基于iSCSI的远程镜像方法及系统
CN200994141Y (zh) 一种带有pci接口的网络加密卡
CN105468983A (zh) 基于sata接口的数据传输方法与装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20120711

C20 Patent right or utility model deemed to be abandoned or is abandoned