CN105468983A - 基于sata接口的数据传输方法与装置 - Google Patents

基于sata接口的数据传输方法与装置 Download PDF

Info

Publication number
CN105468983A
CN105468983A CN201510789801.5A CN201510789801A CN105468983A CN 105468983 A CN105468983 A CN 105468983A CN 201510789801 A CN201510789801 A CN 201510789801A CN 105468983 A CN105468983 A CN 105468983A
Authority
CN
China
Prior art keywords
data
satadeviceip
satahostip
subcommand
write
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.)
Granted
Application number
CN201510789801.5A
Other languages
English (en)
Other versions
CN105468983B (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.)
Huada Yunxin Nanjing Technology 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 CN201510789801.5A priority Critical patent/CN105468983B/zh
Publication of CN105468983A publication Critical patent/CN105468983A/zh
Application granted granted Critical
Publication of CN105468983B publication Critical patent/CN105468983B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Abstract

本发明实施例公开了一种基于SATA接口的数据传输方法和装置,应用于信息安全技术领域,解决基于硬件方法实现硬盘数据安全读写效率低,系统性能损耗高的技术问题。所述方法包括:分别为SATAHOSTIP和SATADEVICEIP配置多个8K大小的缓存区;将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;将所述读取命令以读取8K数据为单位顺序拆分成多个读取子命令;控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据读取子命令读取数据、解密数据、向主机发送数据的过程。

Description

基于SATA接口的数据传输方法与装置
技术领域
本发明涉及信息安全技术领域,尤其涉及一种基于SATA接口的数据传输方法与装置。
背景技术
PC(personalcomputer,个人计算机)机通过SATA(SerialAdvancedTechnologyAttachment,串行高级技术附件)接口与硬盘进行数据传输,包括向硬盘写入数据和从硬盘读取数据。具体的,主板和硬盘通过SATAHOSTIP和SATADEVICEIP进行控制命令、状态信息及数据传输。为了保证数据传输的安全性,写入硬盘的数据需要进行加密,主机从硬盘读取数据时需要解密。
现有技术中在对数据进行加解密处理主要有软件方法和硬件方法,软件方法即在系统层之上采用软件方式对数据加解密,软件的介入势必会影响系统的性能。另外一种是在系统层之下采用硬件方法,在主板和硬盘之间加入一个安全模块,该安全模块通过SATADEVICEIP与主板相连,通过SATAHOSTIP与硬盘相连。安全模块将数据加密后写入硬盘或将数据解密后传送给主机。
相对软件方式来说,硬件方式可以提高系统性能,但是在主板和硬盘之间置入安全模块对数据进行加解密,相当于增加了数据传输的路径,与数据从主机到硬盘直传比较,数据读写的效率降低,系统性能至少损耗50%。
发明内容
本申请提供一种基于SATA接口的数据传输方法与装置,用以解决现有技术中基于硬件方法实现硬盘数据安全读写,数据读写效率降低,系统性能损耗高的技术问题。
有鉴于此,本发明第一方面提供一种基于SATA接口的数据传输方法,可包括:
分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区;
在SATADEVICEIP的FIS接收区接收主机发送的数据读取命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;
将所述读取命令以读取8K数据为单位顺序拆分成多个读取子命令;
控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据读取子命令读取数据、解密数据、向主机发送数据的过程;数据读取到SATAHOSTIP的缓存区,解密到SATADEVICEIP的缓存区。
优选的,所述根据读取子命令读取数据包括:
控制SATAHOSTIP和SATADEVICEIP分别配置读取子命令表和物理区域描述符表;
根据读取子命令表和物理区域描述符表确定当前读取子命令对应的逻辑块地址LBA;
启动SATAHOSTIP向硬盘发送当前读取子命令并接收硬盘返回的所述逻辑块地址LBA的数据。
优选的,所述方法还包括:每从硬盘读取一次数据,控制SATAHOSTIP更新读取子命令表和物理区域描述符表的配置。
本发明第二方面提供一种基于SATA接口的数据传输方法,包括:
分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区;
SATADEVICEIP的FIS接收区接收主机发送的数据写入命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;
将所述写入命令以写入8K数据为单位顺序拆分成多个写入子命令;
控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据写入子命令接收数据、加密数据、向硬盘发送数据的过程;数据从主机接收到SATADEVICEIP的缓存区,加密到SATAHOSTIP的缓存区。
优选的,所述根据写入子命令接收数据包括:
控制SATAHOSTIP和SATADEVICEIP分别配置写入子命令表和物理区域描述符表;
根据写入子命令表和物理区域描述符表确定当前写入子命令对应的逻辑块地址LBA;
启动SATAHOSTIP向硬盘发送当前写入子命令并向硬盘中所述逻辑块地址LBA写入数据。
优选的,所述方法还包括:每从主机接收一次数据,控制SATADEVICEIP更新写入子命令表和物理区域描述符表的配置。
本发明第三方面提供一种基于SATA接口的数据传输装置,包括:
第一配置单元,用于分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区;
第一复制单元,用于在SATADEVICEIP的FIS接收区接收主机发送的数据读取命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;
第一拆分单元,用于将所述读取命令以读取8K数据为单位顺序拆分成多个读取子命令;
第一控制单元,用于控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据读取子命令读取数据、解密数据、向主机发送数据的过程;数据读取到SATAHOSTIP的缓存区,解密到SATADEVICEIP的缓存区。
本发明第四方面提供一种基于SATA接口的数据传输装置,包括:
第二配置单元,用于分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区;
第二复制单元,用于SATADEVICEIP的FIS接收区接收主机发送的数据写入命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;
第二拆分单元,用于将所述写入命令以写入8K数据为单位顺序拆分成多个写入子命令;
第二控制单元,用于控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据写入子命令接收数据、加密数据、向硬盘发送数据的过程;数据从主机接收到SATADEVICEIP的缓存区,加密到SATAHOSTIP的缓存区。
与现有技术相比,本发明提供的技术方案至少具有以下优点:
在本发明提供的技术方案中,采用流水线方式读取或写入数据,具体的,分别为SATAHOSTIP和SATADEVICEIP配置多个缓存区,根据SATA协议要求,在链路层所能传输的最大数据包为8K,所以配置的缓存区以8K为单位进行划分,读取或写入数据的命令也以读取或写入8K数据进行划分,在读取数据时,按照多个读取子命令以流水线方式完成数据读取和解密过程,数据读取到SATAHOSTIP对应的缓存区,解密到SATADEVICEIP的缓存区。写入数据时,按照所述多个写入子命令以流水线方式完成数据写入和加密过程,数据从主机接收到SATADEVICEIP对应的缓存区,加密到SATAHOSTIP的缓存区。与现有技术中的安全模块实现方式来说,采用流水线方式可以大幅提高数据加解密性能,系统性能损耗有大幅下降,且数据的加解密可以从系统底层完成,对用户是完全透明的,不影响用户的使用习惯。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明中基于SATA接口的数据传输方法实施例1的流程图;
图2为本发明中基于SATA接口的数据传输方法实施例2的流程图;
图3为本发明中基于SATA接口读取数据的流水线操作示意图;
图4为本发明中基于SATA接口写入数据的流水线操作示意图;
图5为本发明中基于SATA接口的数据传输装置实施例1的结构示意图;
图6为本发明中基于SATA接口的数据传输装置实施例2的结构示意图;
图7为本发明中基于SATA接口的数据传输方法在实际应用中的一种架构图。
具体实施方式
本发明实施例提供了一种基于SATA接口的数据传输方法与装置,采用流水线操作方式实施数据的加解密过程,在现有技术的基础上提高数据加解密性能,将系统性能损耗控制在10%以内。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
首先,对本申请技术方案涉及的相关技术进行简要说明,以便于对本申请实施例描述的技术方案有更深入的理解。
主板和硬盘之间是通过SATAHOSTIP和SATADEVICEIP进行控制命令、状态信息及数据传输的,传输方法按照传输速率可分为PIO、DMA和FPDMA方法。数据流的加密一般采用对称加密算法如DES、3DES、AES、SM1和
SM4,对称加密算法加解密性能高,即可以保护用户的数据安全,又不影响用户使用的舒适度。
对本申请实施例用到的技术缩略语进行解释,本申请中用到的技术术语的解释参考表1,在后续的实施例中不再一一赘述。
表1关键术语解释和技术缩略语
本申请可用于众多通用或专用的计算和笔记本,尤其是安全计算机和保密笔记本。例如:个人计算机、服务器计算机等等。通过采用该技术可以大幅提高安全计算机和保密笔记本的系统性能,即给用户带来安全的同时又不影响用户使用的舒适度。安全计算机和保密笔记本可以广泛应用于政府、军工、金融等保密单位。
参考上述内容,下面对本申请提供的实施例进行详细、充分的公开说明。
参考图1,示出了本申请一种基于SATA接口的数据传输方法实施例1的流程图,本实施例为主机从硬盘读取数据的示例,具体可以包括以下步骤:
S11:分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区。
本实施例首先要为SATAHOSTIP和SATADEVICEIP分别配置多个缓存区,便于数据读取时的流水线处理。
由于SATA协议要求在链路层所能传输的最大数据包为8K,所以为SATAHOSTIP和SATADEVICEIP分配缓存区时以8K为单位划分。需要说明的是,在实际操作中,不一定选用大小为8K的寄存器,还可以采用比如16K、32K等大小的DPRAM(寄存器),然后以8K为单位划分,分别配置给SATAHOSTIP和SATADEVICEIP。
读取数据时,数据被读取到SATAHOSTIP对应的缓存区,然后被解密到SATADEVICEIP的缓存区,由SATADEVICEIP发送至主机。
S12:在SATADEVICEIP的FIS接收区接收主机发送的数据读取命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区。
主机从硬盘读取数据时,要发出数据读取命令,该命令由SATADEVICEIP的FIS接收区接收并存储,由于实际操作中数据要由SATAHOSTIP从硬盘读取,所以首先要将读取命令复制至SATAHOSTIP的FIS接收区。
S13:将所述读取命令以读取8K数据为单位顺序拆分成多个读取子命令。
通过步骤S11中的描述,SATA协议要求在链路层所能传输的最大数据包为8K,所以要将读取命令以读取8K数据为单位顺序进行拆分,形成多个读取子命令,每个子命令读取8K数据。主机要读取的整个数据包大小不能被8整除时,余数可以另行处理,比如按照读取8K数据正常处理。
S14:控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据读取子命令读取数据、解密数据、向主机发送数据的过程。
SATAHOSTIP从硬盘请求数据时,按照划分的子命令依次获取对应大小的数据,读取的数据缓存至SATAHOSTIP的缓存区,解密至SATADEVICEIP的缓存区,启动SATADEVICEIP将解密的数据发送至主机。
本实施例中,分别为SATAHOSTIP和SATADEVICEIP配置多个缓存区,根据SATA协议要求,在链路层所能传输的最大数据包为8K,所以配置的缓存区以8K为单位进行划分。读取数据时,按照多个读取子命令以流水线方式完成数据读取和解密过程,数据读取到SATAHOSTIP对应的缓存区,解密到SATADEVICEIP的缓存区。采用流水线的方式操作,与现有技术中的安全模块实现方式相比,可以大幅提高数据加解密性能,系统性能损耗有大幅下降,且数据的加解密可以从系统底层完成,对用户是完全透明的,不影响用户的使用习惯。
在实施例1的基础上,根据读取子命令从硬盘读取数据时的具体过程可以参考如下(以下举例是一次读取数据的过程,多个子命令的情况,需要循环执行以下步骤,直至数据读取完整):
控制SATAHOSTIP和SATADEVICEIP分别配置读取子命令表和物理区域描述符表;根据读取子命令表和物理区域描述符表确定当前读取子命令对应的逻辑块地址LBA;启动SATAHOSTIP向硬盘发送当前读取子命令并接收硬盘返回的所述逻辑块地址LBA的数据。
其中,命令表指示的是读取子命令的列表,物理区域描述符表指示了数据的缓存区的指针和数据块的大小,每个子命令对应一段待读取的数据,本步骤可以确定每一个在当前时刻要执行的子命令对应数据的逻辑块地址LBA,然后将子命令发送至硬盘,硬盘根据数据的逻辑块地址提供数据。
在实际操作中,每从硬盘读取一次数据,需要控制SATAHOSTIP更新读取子命令表和物理区域描述符表的配置,以便计算子命令对应数据的逻辑块地址。
数据读取命令执行完成后,需要向主机发送数据读取命令执行状态信息,以结束本次数据的读取过程。
参考图2,示出了本申请一种基于SATA接口的数据传输方法实施例2的流程图,本实施例为向硬盘写入数据的示例,本实施例与实施例1中从硬盘读取数据类似,相关步骤可以参考实施例1中的描述。
具体可以包括以下步骤:
S21:分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区。
S22:SATADEVICEIP的FIS接收区接收主机发送的数据写入命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区。
S23:将所述写入命令以写入8K数据为单位顺序拆分成多个写入子命令。
S24:控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据写入子命令接收数据、加密数据、向硬盘发送数据的过程。
与实施例1中不同的是,在向硬盘写入数据时,SATADEVICEIP从主机接收的数据缓存至SATADEVICEIP的缓存区,加密引擎将数据加密至SATAHOSTIP的缓存区,启动SATAHOSTIP将加密的数据发送至硬盘。
本实施例与实施例1的技术方案的实现原理有类似之处,不同的是,本实施例引用在数据的写入过程中,同样采用流水线的方式操作,可以大幅提高数据加密性能,使得系统性能损耗有大幅下降,且数据的加密可以从系统底层完成,对用户是完全透明的,不影响用户的使用习惯。
在实施例2的基础上,对于所述根据写入子命令接收数据可以参考如下过程(以一个子命令举例):
控制SATAHOSTIP和SATADEVICEIP分别配置写入子命令表和物理区域描述符表;根据写入子命令表和物理区域描述符表确定当前写入子命令对应的逻辑块地址LBA;启动SATAHOSTIP向硬盘发送当前写入子命令并向硬盘中所述逻辑块地址LBA写入数据。
该过程与根据读取子命令读取数据类似,不同的是,本步骤中,确定数据对应的LBA之后,需要向硬盘中对应的LBA写入数据。
在实际操作中,每从主机接收一次数据,需要控制SATADEVICEIP更新写入子命令表和物理区域描述符表的配置。同样的,所述数据写入命令执行完成后,需要向主机发送数据写入命令执行状态信息,以结束本次数据的写入过程。
为了更形象描述上述实施例的有益效果,参考图3-图4所示,为基于SATA接口读取和写入数据的流水线操作示意图。比如,当从硬盘读取数据时,数据的读取、数据解密和数据发送至主机几乎是同时进行的,提高了数据读取和解密的效率,从而系统性能损耗下降。
相应的,参考图5所示,示出了本申请一种基于SATA接口的数据传输装置实施例1的结构示意图,该装置具体可以包括:
第一配置单元501,用于分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区;
本实施例首先要为SATAHOSTIP和SATADEVICEIP分别配置多个缓存区,便于数据读取时的流水线处理。
由于SATA协议要求在链路层所能传输的最大数据包为8K,所以为SATAHOSTIP和SATADEVICEIP分配缓存区时以8K为单位划分。需要说明的是,在实际操作中,不一定选用大小为8K的寄存器,还可以采用比如16K、32K等大小的DPRAM(寄存器),然后以8K为单位划分,分别配置给SATAHOSTIP和SATADEVICEIP。
读取数据时,数据被读取到SATAHOSTIP对应的缓存区,然后被解密到SATADEVICEIP的缓存区,由SATADEVICEIP发送至主机。
第一复制单元502,用于在SATADEVICEIP的FIS接收区接收主机发送的数据读取命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;
主机从硬盘读取数据时,要发出数据读取命令,该命令由SATADEVICEIP的FIS接收区接收并存储,由于实际操作中数据要由SATAHOSTIP从硬盘读取,所以首先要将读取命令复制至SATAHOSTIP的FIS接收区。
第一拆分单元503,用于将所述读取命令以读取8K数据为单位顺序拆分成多个读取子命令;
由于SATA协议要求在链路层所能传输的最大数据包为8K,所以要将读取命令以读取8K数据为单位顺序进行拆分,形成多个读取子命令,每个子命令读取8K数据。主机要读取的整个数据包大小不能被8整除时,余数可以另行处理,比如按照读取8K数据正常处理。
第一控制单元504,用于控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据读取子命令读取数据、解密数据、向主机发送数据的过程;数据读取到SATAHOSTIP的缓存区,解密到SATADEVICEIP的缓存区。
SATAHOSTIP从硬盘请求数据时,按照划分的子命令依次获取对应大小的数据,读取的数据缓存至SATAHOSTIP的缓存区,解密至SATADEVICEIP的缓存区,启动SATADEVICEIP将解密的数据发送至主机。
本实施例中,第一配置单元分别为SATAHOSTIP和SATADEVICEIP配置多个缓存区,根据SATA协议要求,在链路层所能传输的最大数据包为8K,所以配置的缓存区以8K为单位进行划分。读取数据时,按照多个读取子命令以流水线方式完成数据读取和解密过程,数据读取到SATAHOSTIP对应的缓存区,解密到SATADEVICEIP的缓存区。采用流水线的方式操作,与现有技术中的安全模块实现方式相比,可以大幅提高数据加解密性能,系统性能损耗有大幅下降,且数据的加解密可以从系统底层完成,对用户是完全透明的,不影响用户的使用习惯。
在装置实施例1的基础上,第一控制单元根据读取子命令从硬盘读取数据时的具体过程可以参考如下(以读取一个8K数据为例):
控制SATAHOSTIP和SATADEVICEIP分别配置读取子命令表和物理区域描述符表;根据读取子命令表和物理区域描述符表确定当前读取子命令对应的逻辑块地址LBA;启动SATAHOSTIP向硬盘发送当前读取子命令并接收硬盘返回的所述逻辑块地址LBA的数据。
其中,命令表指示的是读取子命令的列表,物理区域描述符表指示了数据的缓存区的指针和数据块的大小,每个子命令对应一段待读取的数据,第一控制单元可以确定每一个在当前时刻要执行的子命令对应数据的逻辑块地址LBA,然后控制SATAHOSTIP将子命令发送至硬盘,硬盘根据数据的逻辑块地址提供数据。
在实际操作中,每从硬盘读取一次数据,需要控制SATAHOSTIP更新读取子命令表和物理区域描述符表的配置,以便计算子命令对应数据的逻辑块地址。
进一步的,数据读取命令执行完成后,控制SATADEVICEI向主机发送数据读取命令执行状态信息,以结束本次数据的读取过程。
相应的,参考图6所示,示出了本申请一种基于SATA接口的数据传输装置实施例2的结构示意图,该装置具体可以包括:
第二配置单元601,用于分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区;
第二复制单元602,用于SATADEVICEIP的FIS接收区接收主机发送的数据写入命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;
第二拆分单元603,用于将所述写入命令以写入8K数据为单位顺序拆分成多个写入子命令;
第二控制单元604,用于控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据写入子命令接收数据、加密数据、向硬盘发送数据的过程;数据从主机接收到SATADEVICEIP的缓存区,加密到SATAHOSTIP的缓存区。
与装置实施例1中不同的是,在向硬盘写入数据时,SATADEVICEIP从主机接收的数据缓存至SATADEVICEIP的缓存区,加密引擎将数据加密至SATAHOSTIP的缓存区,启动SATAHOSTIP将加密的数据发送至硬盘。
本实施例与装置实施例1的结构类似,不同的是,本实施例中的装置用在数据的写入过程中,同样采用流水线的方式操作,可以大幅提高数据加密性能,使得系统性能损耗有大幅下降,且数据的加密可以从系统底层完成,对用户是完全透明的,不影响用户的使用习惯。
在实施例2的基础上,对于第二控制单元根据写入子命令接收数据可以参考如下过程(以一个子命令举例):
控制SATAHOSTIP和SATADEVICEIP分别配置写入子命令表和物理区域描述符表;根据写入子命令表和物理区域描述符表确定当前写入子命令对应的逻辑块地址LBA;启动SATAHOSTIP向硬盘发送当前写入子命令并向硬盘中所述逻辑块地址LBA写入数据。
该过程与根据读取子命令读取数据类似,不同的是,本实施例中,确定数据对应的LBA之后,需要向硬盘中对应的LBA写入数据。
在实际操作中,每从主机接收一次数据,需要控制SATADEVICEIP更新写入子命令表和物理区域描述符表的配置。同样的,所述数据写入命令执行完成后,装置需要控制SATADEVICEIP向主机发送数据写入命令执行状态信息,以结束本次数据的写入过程。
本领域技术人员应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和单元并不一定是本申请所必须的。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明。
基于上述实施例的描述,下面分别以从硬盘读取数据和向硬盘写入数据进行举例说明。
以下举例中,参考图7所示的基于SATA接口的数据传输方法在实际应用中的一种架构图,其中,本申请所述的基于SATA接口的数据传输装置以CPU的形式存在,所述CPU可以承载于控制芯片。其中,CPU模块负责SATADEVICEIP、SATAHOSTIP和加密引擎的初始化配置、启动控制及状态查询处理、命令(命令)的分解和传输。SATADEVICEIP负责从主机接收写入的数据或向主机发送读取的数据。SATAHOSTIP负责向硬盘写入或读取数据。加密引擎负责在读取数据时解密数据以及在写入数据时加密数据。
在加密引擎中配置两块16K大小的DPRAM,分别作为SATADEVICE和SATAHOST的数据缓存。根据SATA协议要求在链路层所能传输的最大数据包为8K,所以从逻辑上将16K大小的DPRAM分为两个8K的DPRAM。为了更好的叙述流水作业的流程,特定义如下符号:
DPRAM_D1----表示与SATADEVICEIP相连接的第一块DPRAM;
DPRAM_D2----表示与SATADEVICEIP相连接的第二块DPRAM;
DPRAM_H1----表示与SATAHOSTIP相连接的第一块DPRAM;
DPRAM_H2----表示与SATAHOSTIP相连接的第二块DPRAM。
第一,从硬盘读取数据的流水作业过程(以下所有步骤在CPU的控制下完成)
(1)SATADEVICE初始化相关寄存器,所述相关寄存器主要包括控制寄存器和基地址寄存器等;然后建立命令头表(多个命令表的头组成的表)和FIS接收区(接收主机命令),并与主机建立通信,等待接收来自主机发送的命令。
(2)SATAHOSTIP初始化相关寄存器,与步骤(1)相似,所述相关寄存器主要包括控制寄存器和基地址寄存器等;建立命令头表和FIS接收区,并与硬盘建立通信。
(3)SATADEVICEIP的FIS接收区接收来自主机的DMAREAD(例如读取64K大小的数据)命令包。
(4)将SATADEVICEIP收到的DMAREAD命令包由SATADEVICEIP的FIS接收区复制到SATAHOSTIP的FIS接收区。
(5)将读取(例如64K)数据的命令包,以读取8K数据为一组,顺序划分为8个子命令;(若数据包的大小并不能被8整除,余数进行另外处理或作为8K数据处理)。
(6)SATAHOSTIP和SATADEVICEIP根据子命令配置命令表和物理区域描述符表PRDTABLE。
(7)SATAHOSTIP将第一个子命令(读取8K数据的子命令)发送给硬盘;在等待读取数据同时,配置加密引擎并计算第二个子命令需要读取的(逻辑地址块)LBA地址。
(8)SATAHOSTIP判断第一个8K数据是否完全读取到DPRAMH1,读完后启动加密引擎,将数据由DPRAMH1解密到DPRAMD1,同时启动SATADEVICEIP向主机发送数据。
(9)在第(8)进行的同时,CPU重新配置SATAHOSTIP的命令表,启动第二个8K数据的读取。
(10)在第(9)步进行第二个8K数据读取的同时,判断第一个8K数据是否解密完成,是否完成向主机传送。
(11)第(10)步完成后,数据读取装置重新配置加密引擎,并计算读取第三个8K子命令的LBA地址。
(12)判断第二个8K数据是否完全读取到DPRAMH2,读完后启动加密引擎,将数据由DPRAMH2解密到DPRAMD2,同时启动SATADEVICEIP向主机发送数据。
(13)在第(12)进行的同时,重新配置SATAHOSTIP的命令表,启动第三个8K数据的读取。
(14)在第(13)步进行第三个8K数据读取的同时,判断第二个8K数据是否解密完成,是否完成向主机传送。
(15)第(14)步完成后,重新配置加密引擎,并计算读取第四个8K子命令的LBA地址;跳转到第(7)步,循环至64K的数据包读取完成。
第二,向硬盘写入数据的流水作业过程(以下所有步骤在CPU的控制下完成)
(1)SATADEVICEIP初始化相关寄存器,所述相关寄存器主要包括控制寄存器和基地址寄存器等;建立命令头表和FIS接收区,并与主机建立通信,等待接收来自主机发送的命令。
(2)SATAHOSTIP初始化相关寄存器,建立命令头表和FIS接收区,并与硬盘建立通信。
(3)SATADEVICEIP的FIS接收区收到来自主机发送的DMAWRITE(例如写入64K大小数据)命令包。
(4)将收到的DMAWRITE命令包由SATADEVICEIP的FIS接收区复制到SATAHOSTIP的FIS接收区。
(5)将写入(例如64K)数据的命令包,以写入8K为一组,分为8个子命令;(若数据包的大小并不能被8整除,余数进行另外处理)。
(6)SATAHOSTIP和SATADEVICEIP根据子命令配置命令表和PRDTABLE。
(7)启动SATADEVICEIP,从主机接收第一个需要写入8K数据;在等待接收数据同时,配置加密引擎。
(8)判断第一个8K数据是否完全写入到DPRAMD1,写完后启动加密引擎,将数据由DPRAMD1加密到DPRAMH1,同时启动SATAHOSTIP向硬盘发送第一个写入8K数据包的子命令。
(9)在第(8)步进行的同时,重新配置命令表,启动SATADEVICEIP接收第二个8K数据的写入。
(10)在第(9)步进行的同时,计算下一个写入命令的LBA地址。
(11)判断第一个数据包是否加密完成,是否向硬盘写入完成。
(12)在第(11)步完成后,重新配置加密引擎,并判断第二个数据包是否完全写入DPRAMD2。
(13)在第(12)步完成后,启动加密引擎,将数据由DPRAMD2加密到DPRAMH2,同时启动SATAHOSTIP向硬盘发送第二个写入8K数据包的子命令。
(14)启动SATADEVICEIP接收第三个8K数据的写入;并计算下一个需要写入8K数据的LBA地址。
(15)在第(14)步进行第三个8K数据写入的同时,判断第二个8K数据是否加密完成,是否完成向硬盘的写入。
(16)第(15)步完成后,重新配置加密引擎,并计算读取第四个8K子命令的LBA地址;跳转到第(8)步,进行第4个8K数据的写入,循环至64K的数据包写入完成。
所有的子命令(读取或写入)执行完。向主机发送命令的状态包,并对SATAHOSTIP的某些寄存器(比如状态寄存器、控制寄存器等)进行归零处理。
数据流的加解密可以采用乒乓流水方式进行实现。流水方式实现的理想条件是各个模块同时工作,即SATADEVICEIP与主机进行数据交互动作、加密引擎的动作、SATAHOSTIP与硬盘的数据交互动作和CPU模块对各个寄存器的配置动作好似同时进行的,这样将会大幅提高加解密的性能。
以上对本申请所提供的一种基于SATA接口的数据传输方法和装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,因此,上述描述不应理解为对本申请的限制。

Claims (8)

1.基于SATA接口的数据传输方法,其特征在于,所述方法包括:
分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区;
在SATADEVICEIP的FIS接收区接收主机发送的数据读取命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;
将所述读取命令以读取8K数据为单位顺序拆分成多个读取子命令;
控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据读取子命令读取数据、解密数据、向主机发送数据的过程;数据读取到SATAHOSTIP的缓存区,解密到SATADEVICEIP的缓存区。
2.根据权利要求1所述的方法,其特征在于,所述根据读取子命令读取数据包括:
控制SATAHOSTIP和SATADEVICEIP分别配置读取子命令表和物理区域描述符表;
根据读取子命令表和物理区域描述符表确定当前读取子命令对应的逻辑块地址LBA;
启动SATAHOSTIP向硬盘发送当前读取子命令并接收硬盘返回的所述逻辑块地址LBA的数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:每从硬盘读取一次数据,控制SATAHOSTIP更新读取子命令表和物理区域描述符表的配置。
4.基于SATA接口的数据传输方法,其特征在于,所述方法包括:
分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区;
SATADEVICEIP的FIS接收区接收主机发送的数据写入命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;
将所述写入命令以写入8K数据为单位顺序拆分成多个写入子命令;
控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据写入子命令接收数据、加密数据、向硬盘发送数据的过程;数据从主机接收到SATADEVICEIP的缓存区,加密到SATAHOSTIP的缓存区。
5.根据权利要求4所述的方法,其特征在于,所述根据写入子命令接收数据包括:
控制SATAHOSTIP和SATADEVICEIP分别配置写入子命令表和物理区域描述符表;
根据写入子命令表和物理区域描述符表确定当前写入子命令对应的逻辑块地址LBA;
启动SATAHOSTIP向硬盘发送当前写入子命令并向硬盘中所述逻辑块地址LBA写入数据。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:每从主机接收一次数据,控制SATADEVICEIP更新写入子命令表和物理区域描述符表的配置。
7.基于SATA接口的数据传输装置,其特征在于,所述装置包括:
第一配置单元,用于分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区;
第一复制单元,用于在SATADEVICEIP的FIS接收区接收主机发送的数据读取命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;
第一拆分单元,用于将所述读取命令以读取8K数据为单位顺序拆分成多个读取子命令;
第一控制单元,用于控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据读取子命令读取数据、解密数据、向主机发送数据的过程;数据读取到SATAHOSTIP的缓存区,解密到SATADEVICEIP的缓存区。
8.基于SATA接口的数据传输装置,其特征在于,所述装置包括:
第二配置单元,用于分别为串行高级技术附件主机集成包SATAHOSTIP和串行高级技术附件设备集成包SATADEVICEIP配置多个8K大小的缓存区;
第二复制单元,用于SATADEVICEIP的FIS接收区接收主机发送的数据写入命令后,将SATADEVICEIP的FIS接收区的命令复制到SATAHOSTIP的FIS接收区;
第二拆分单元,用于将所述写入命令以写入8K数据为单位顺序拆分成多个写入子命令;
第二控制单元,用于控制SATAHOSTIP、SATADEVICEIP和加密引擎以流水线方式执行根据写入子命令接收数据、加密数据、向硬盘发送数据的过程;数据从主机接收到SATADEVICEIP的缓存区,加密到SATAHOSTIP的缓存区。
CN201510789801.5A 2015-11-17 2015-11-17 基于sata接口的数据传输方法与装置 Active CN105468983B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510789801.5A CN105468983B (zh) 2015-11-17 2015-11-17 基于sata接口的数据传输方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510789801.5A CN105468983B (zh) 2015-11-17 2015-11-17 基于sata接口的数据传输方法与装置

Publications (2)

Publication Number Publication Date
CN105468983A true CN105468983A (zh) 2016-04-06
CN105468983B CN105468983B (zh) 2020-01-03

Family

ID=55606668

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510789801.5A Active CN105468983B (zh) 2015-11-17 2015-11-17 基于sata接口的数据传输方法与装置

Country Status (1)

Country Link
CN (1) CN105468983B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109558347A (zh) * 2017-09-27 2019-04-02 成都忆芯科技有限公司 PCIe控制器与使用PCIe控制器的密钥更新
CN110554833A (zh) * 2018-05-31 2019-12-10 北京忆芯科技有限公司 存储设备中并行处理io命令
CN115795519A (zh) * 2023-01-18 2023-03-14 苏州浪潮智能科技有限公司 数据加解密处理方法、装置、电子设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1641522A (zh) * 2004-01-16 2005-07-20 西北工业大学 计算机硬盘数据加密方法及其装置
CN101008931A (zh) * 2005-11-18 2007-08-01 伊诺瓦科技股份有限公司 加/解密串行式先进技术附属件装置及方法
CN101349999A (zh) * 2008-09-12 2009-01-21 戴葵 一种用于移动存储的安全适配器装置及其操作方法
CN101488112A (zh) * 2009-02-18 2009-07-22 浪潮电子信息产业股份有限公司 一种多主机接口sas/sata硬盘实时加解密的方法
CN102012882A (zh) * 2009-09-08 2011-04-13 同方股份有限公司 一种基于系统级芯片的高速数据流加密传输方法
CN102111263A (zh) * 2011-02-21 2011-06-29 山东中孚信息产业股份有限公司 一种数据流加密的方法
CN102567252A (zh) * 2010-12-09 2012-07-11 北京华虹集成电路设计有限责任公司 一种硬盘和主机之间数据传输方法和系统
CN103345453A (zh) * 2013-06-27 2013-10-09 清华大学 支持sata接口的硬盘数据加密卡及加解密方法
CN104217180A (zh) * 2014-09-07 2014-12-17 杭州华澜微科技有限公司 一种加密存储盘

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1641522A (zh) * 2004-01-16 2005-07-20 西北工业大学 计算机硬盘数据加密方法及其装置
CN101008931A (zh) * 2005-11-18 2007-08-01 伊诺瓦科技股份有限公司 加/解密串行式先进技术附属件装置及方法
CN101349999A (zh) * 2008-09-12 2009-01-21 戴葵 一种用于移动存储的安全适配器装置及其操作方法
CN101488112A (zh) * 2009-02-18 2009-07-22 浪潮电子信息产业股份有限公司 一种多主机接口sas/sata硬盘实时加解密的方法
CN102012882A (zh) * 2009-09-08 2011-04-13 同方股份有限公司 一种基于系统级芯片的高速数据流加密传输方法
CN102567252A (zh) * 2010-12-09 2012-07-11 北京华虹集成电路设计有限责任公司 一种硬盘和主机之间数据传输方法和系统
CN102111263A (zh) * 2011-02-21 2011-06-29 山东中孚信息产业股份有限公司 一种数据流加密的方法
CN103345453A (zh) * 2013-06-27 2013-10-09 清华大学 支持sata接口的硬盘数据加密卡及加解密方法
CN104217180A (zh) * 2014-09-07 2014-12-17 杭州华澜微科技有限公司 一种加密存储盘

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109558347A (zh) * 2017-09-27 2019-04-02 成都忆芯科技有限公司 PCIe控制器与使用PCIe控制器的密钥更新
CN109558347B (zh) * 2017-09-27 2023-04-28 成都忆芯科技有限公司 PCIe控制器与使用PCIe控制器的密钥更新
CN110554833A (zh) * 2018-05-31 2019-12-10 北京忆芯科技有限公司 存储设备中并行处理io命令
CN110554833B (zh) * 2018-05-31 2023-09-19 北京忆芯科技有限公司 存储设备中并行处理io命令
CN115795519A (zh) * 2023-01-18 2023-03-14 苏州浪潮智能科技有限公司 数据加解密处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN105468983B (zh) 2020-01-03

Similar Documents

Publication Publication Date Title
US20230110230A1 (en) Technologies for secure i/o with memory encryption engines
CN108604214B (zh) 用于高速外围组件互连(PCIe)系统的内联密码引擎(ICE)
CN105243344B (zh) 具有硬盘加密功能的芯片组以及主机控制器
US8161222B1 (en) Method and system and apparatus for use in data storage
JP6067757B2 (ja) ストレージ装置とホスト間でデータ伝送を保護するためのストレージ・コントローラ・バス・インターフェースの使用
US10810138B2 (en) Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME)
JP2016517241A (ja) ストレージデバイスによって支援されるインライン暗号化および暗号化解除
JP2019505924A5 (zh)
US8843768B2 (en) Security-enabled storage controller
US9419972B2 (en) Two dimensional direct memory access scheme for enhanced network protocol processing performance
CN105354503B (zh) 储存装置数据加解密方法
CN103020537A (zh) 数据加密方法和装置、数据解密方法和装置
CN107092835A (zh) 一种虚拟存储盘的计算机数据加密装置及方法
CN102567252A (zh) 一种硬盘和主机之间数据传输方法和系统
CN106991061A (zh) 一种sata硬盘密码模块及其工作方法
CN105468983A (zh) 基于sata接口的数据传输方法与装置
US11558175B2 (en) Cryptographic data communication apparatus
EP3279824B1 (en) Data-at-rest (dar) encryption for integrated storage media
US11909856B2 (en) Cryptographic data communication apparatus
CN106970889B (zh) 一种sata桥接芯片及其工作方法
CN117083612A (zh) 处置未对齐事务以用于内联加密
US20210319121A1 (en) Concurrent volume and file based inline encryption on commodity operating systems
US20130103953A1 (en) Apparatus and method for encrypting hard disk

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100089 Floor 12 1506, Building A 1, 66 Zhongguancun East Road, Haidian District, Beijing

Applicant after: Beijing Huahong Integrated Circuit Design Co.,Ltd.

Address before: 100015, No. 66 East Zhongguancun Road, Beijing, building No. 1, building 12, 1501-1510, Haidian District

Applicant before: BEIJING HUAHONG INTEGRATED CIRCUIT DESIGN Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20191127

Address after: 100015 Beijing city Chaoyang District Gaojiayuan No.

Applicant after: BEIJING HUADA ZHIBAO ELECTRONIC SYSTEM Co.,Ltd.

Applicant after: Beijing Huahong Integrated Circuit Design Co.,Ltd.

Address before: 100089 Floor 12 1506, Building A 1, 66 Zhongguancun East Road, Haidian District, Beijing

Applicant before: Beijing Huahong Integrated Circuit Design Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220216

Address after: 211100 floor 5, building 9, zone B, artificial intelligence Industrial Park, No. 266, Chuangyan Road, Qilin scientific innovation park, Nanjing, Jiangsu Province

Patentee after: Huada Yunxin (Nanjing) Technology Co.,Ltd.

Address before: 100015 Beijing city Chaoyang District Gaojiayuan No.

Patentee before: BEIJING HUADA ZHIBAO ELECTRONIC SYSTEM Co.,Ltd.

Patentee before: Beijing Huahong Integrated Circuit Design Co.,Ltd.