发明内容
本发明的目的在于提供一种固态硬盘的数据处理的方法和设备,通过减少固态硬盘垃圾回收过程中的有效数据的搬移操作,以提高垃圾回收的效率和固态硬盘的使用性能。
本发明的一方面提供一种固态硬盘的数据处理的方法,所述方法包括:接收第一数据的写入命令,响应于所述写入命令,确定一个空白的块,其中,所述写入命令用于指示将所述第一数据写入所述一个空白的块中,所述一个空白的块包括的页均为空白页,且所述一个空白的块仅用于存储所述第一数据;接收所述第一数据;将所述第一数据从所述一个空白的块开始写入。
可选地,在所述方法中,所述将所述第一数据从所述一个空白的块开始写入的步骤还包括:每当一个空白的块被写满而还未完全写入所述第一数据时,将所述第一数据中未写入的内容从另一个空白的块接着写入。
可选地,在所述方法中,第一数据包括多个数据段,所述接收所述第一数据的步骤包括:分别接收第一数据包括的多个数据段,所述将所述第一数据从所述一个空白的块开始写入的步骤包括:从所述一个空白的块的起始地址开始写入所述多个数据段,其中,存储第一个数据段的物理地址的起始地址为所述一个空白的块的起始地址,存储第一个数据段之后的任意一个数据段的物理地址与存储上一个数据段的物理地址相邻。
可选地,在所述方法中,所述将所述第一数据从所述一个空白的块开始写入的步骤还包括:每当一个空白的块被写满而还未完全写入所述多个数据段时,将所述多个数据段中未写入的数据段从另一个空白的块的起始地址接着写入,其中,当存储上一个数据段的物理地址的结束地址是一个块的结束地址时,存储所述任意一个数据段的物理地址从另一个空白的块的起始地址开始。
可选地,在所述方法中,所述多个数据段被划分为多个数据段组,所述将所述第一数据从所述一个空白的块开始写入的步骤包括:每当接收到一个数据段组时,执行一次写入,其中,每当一个空白的块被写满而还存在未被完全写入的一个数据段组和/或还存在未被写入的数据段组时,将所述未完全写入的一个数据段组的未写入的部分和/或存在的未被写入的数据段组从另一个空白的块接着写入。
可选地,所述方法还包括:在接收第一数据的写入命令之后,向主机发送所述确定的一个空白的块的标识号;接收所述空白的块的标识号;将所述第一数据从所述一个空白的块开始写入的步骤包括:根据所述空白的块的标识号,将所述第一数据从所述空白的块的标识号所指示的空白的块开始写入。
可选地,在所述方法中,当在接收第一数据的写入命令的同时并行接收到其它多个数据的写入命令时,针对每个数据,分别确定一个空白的块,分别接收所述第一数据和所述其它多个数据,并将每个数据分别从针对每个数据分别确定的一个空白的块开始写入。
可选地,所述方法还包括:接收第二数据的删除命令;将存储所述第二数据的块中的所有页设置为无效页。
可选地,在完成所述第一数据的写入后,所述方法还包括:将写入所述第一数据的块中的空白页设置为填充页;或将写入所述第一数据的块中的空白页设置为无效页。
可选地,所述方法还包括:接收第二数据的删除命令;将存储所述第二数据的页设置为无效页;在存储所述第二数据的块中搜索填充页,并将搜索到的填充页设置为无效页。
本发明的另一方面提供一种固态硬盘的数据处理的设备,所述设备包括:写入命令接收单元,接收第一数据的写入命令,响应于所述写入命令,确定一个空白的块,其中,所述写入命令用于指示将所述第一数据写入所述一个空白的块中,所述一个空白的块包括的页均为空白页,且所述一个空白的块仅用于存储所述第一数据;第一数据接收单元,接收所述第一数据;写入单元,将所述第一数据从所述一个空白的块开始写入。
可选地,在所述设备中,写入单元每当一个空白的块被写满而还未完全写入所述第一数据时,将所述第一数据中未写入的内容从另一个空白的块接着写入。
可选地,在所述设备中,第一数据包括多个数据段,第一数据接收单元分别接收第一数据包括的多个数据段,写入单元从所述一个空白的块的起始地址开始写入所述多个数据段,其中,存储第一个数据段的物理地址的起始地址为所述一个空白的块的起始地址,存储第一个数据段之后的任意一个数据段的物理地址与存储上一个数据段的物理地址相邻。
可选地,在所述设备中,写入单元每当一个空白的块被写满而还未完全写入所述多个数据段时,将所述多个数据段中未写入的数据段从另一个空白的块的起始地址接着写入,其中,当存储上一个数据段的物理地址的结束地址是一个块的结束地址时,存储所述任意一个数据段的物理地址从另一个空白的块的起始地址开始。
可选地,在所述设备中,所述多个数据段被划分为多个数据段组,每当第一数据接收单元接收到一个数据段组时,写入单元执行一次写入,其中,每当一个空白的块被写满而还存在未被完全写入的一个数据段组和/或还存在未被写入的数据段组时,写入单元将所述未完全写入的一个数据段组的未写入的部分和/或存在的未被写入的数据段组从另一个空白的块接着写入。
可选地,所述设备还包括:标识号发送单元,在接收第一数据的写入命令之后,向主机发送所述确定的一个空白的块的标识号;标识号接收单元,接收所述空白的块的标识号;其中,写入单元根据所述空白的块的标识号,将所述第一数据从所述空白的块的标识号所指示的空白的块开始写入。
可选地,在所述设备中,当写入命令接收单元在接收第一数据的写入命令的同时并行接收到其它多个数据的写入命令时,写入命令单元针对每个数据,分别确定一个空白的块,第一数据接收单元分别接收所述第一数据和所述其它多个数据,写入单元将每个数据分别从针对每个数据分别确定的一个空白的块开始写入。
可选地,所述设备还包括:删除命令接收单元,接收第二数据的删除命令;第一设置单元,将存储所述第二数据的块中的所有页设置为无效页。
可选地,所述设备还包括:第二设置单元,在完成所述第一数据的写入后,将写入所述第一数据的块中的空白页设置为填充页;或将写入所述第一数据的块中的空白页设置为无效页。
可选地,所述设备还包括:删除命令接收单元,接收第二数据的删除命令;第三设置单元,将存储所述第二数据的页设置为无效页;搜索单元,在存储所述第二数据的块中搜索填充页,并将搜索到的填充页设置为无效页。
在根据本发明示例性实施例的固态硬盘的数据处理的方法和设备中,由于在写入数据的流程中将写入的数据仅写入到了空白的块中,保证了每个块中只保存了一个数据,在删除数据后,即将存储了待删除的数据的页标记成无效后,存储被删除数据的块中只包括无效页和空白页或者只包括无效页,不包括有效页,因此在擦除该块的垃圾回收过程中,无需进行有效数据的搬移,提高了垃圾回收的效率和固态硬盘的使用效率。
将在接下来的描述中部分阐述本发明另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本发明的实施而得知。
具体实施方式
下面参照附图详细描述本发明的实施例。
图4示出根据本发明的示例性实施例的数据处理方法中的写入数据的流程图。
参照图4,在步骤S10,接收第一数据的写入命令,响应于所述写入命令,确定一个空白的块。这里,所述写入命令用于指示将所述第一数据写入所述一个空白的块中。所述一个空白的块包括的页均为空白页,且所述一个空白的块仅用于存储所述第一数据。
主机在接收到写入第一数据的请求时,将先向SSD发送第一数据的写入命令,SSD在接收到该命令后将确定一个空白的块。例如,SDD可以通过搜索来确定一个空白的块。之后SSD向所述主机返回对该命令的执行结果(如成功或失败)。此外,SSD也可向主机返回所述确定的一个空白的块的标识号,该标识号可以是SSD自定义的标识号,该标识号与所述空白的块的物理地址之间具有对应关系,当然也可以采用其它可行的方式,本实施例对于空白的块的标识号的具体形式不作具体限定。
在接收到上述执行结果后,主机将向SSD发送所述第一数据。主机还可以向SSD发送所述一个空白的块的标识号。这里,主机可以在发送第一数据之前,也可以在发送第一数据段的同时发送所述一个空白的块的标识号。也就是说,所述方法还可包括接收所述一个空白的块的标识号。
相应地,在步骤S20,接收所述第一数据。
主机在接收到写入所述第一数据的请求后,可以把所述第一数据分割为多个数据段,在接收到上述执行结果后,再将所述多个数据段分别发送给SSD。其中,每一个数据段的大小可以小于一个页的大小。例如,一个页的大小可以是一个数据段的大小的整数倍。相应地,在步骤S20中SSD分别接收由所述第一数据分割成的多个数据段。
在步骤S30,将所述第一数据从所述一个空白的块开始写入。这里,可以根据接收的空白的块的标识号来将所述第一数据从所述空白的块的标识号所指示的空白的块开始写入。也就是说,从在步骤S 10中确定的一个空白的块中开始写入所述第一数据。例如,可以从所述一个空白的块的起始地址开始写入所述第一数据。
这里,每当一个空白的块被写满而还未完全写入所述第一数据时,将所述第一数据中未写入的内容从另一个空白的块接着写入。例如,将所述第一数据中未写入的内容从另一个空白的块的起始地址接着写入。
在步骤S20中分别接收由第一数据分割成的多个数据段的情况下,在步骤S30中,从一个空白的块开始写入所述多个数据段。存储第一个数据段的物理地址的起始地址为一个空白的块的起始地址,存储第一个数据段之后的任意一个数据段的物理地址与存储上一个数据段的物理地址相邻。
在每当一个空白的块被写满而还未完全写入所述多个数据段时,将所述多个数据段未写入的数据段从另一个空白的块接着写入。也就是说,当存储上一个数据段的物理地址的结束地址是一个块的结束地址时,存储所述任意一个数据段的物理地址从另一个空白的块的起始地址开始。
所述多个数据段可以被划分为多个数据段组,在步骤S30中,每当接收到一个数据段组时,执行一次写入,并且每当一个空白的块被写满而还存在未被完全写入的一个数据段组和/或还存在未被写入的数据段组时,将所述未完全写入的一个数据段组的未写入的部分和/或存在的未被写入的数据段组从另一个空白的块接着写入。
具体说来,所述一个数据段组可以由多个连续且数据大小之和等于一个页的大小的数据段组成。由于SSD写入的基本单位是页,而每个数据段的大小小于一个页的大小,为了实现存储空间的有效利用,所以在步骤S30中不会马上将在步骤S20中接收的一个数据段进行写入,而是将接收到的数据段进行缓存,直到在步骤S20中多次接收的连续的数据段的大小之和等于一个页的大小,也就是说在步骤S30中缓存的多个连续的数据段的大小之和等于一个页的大小时,在步骤S30中才将缓存的多个连续的数据段写入与所述多个数据段的逻辑地址对应的物理地址(页)中。也就是说,在步骤S30中,每当接收到一个数据段组时,执行一次写入。
在步骤S20中SSD分别接收由所述第一数据分割成的多个数据段的方案中,所述方法还可以包括:针对任意一个数据段,接收申请用于存储数据段的空间的请求。所述请求可以包括所述任意一个数据段的数据大小以及上述在步骤S10中确定的一个空白的块的标识号。例如,主机在向SSD发送任意一个数据段之前,可以先向SSD发送用于申请存储数据段的空间的请求,SSD接收申请用于存储数据段的空间的请求,SSD可以响应于所述请求,根据所述请求中包括数据大小以及标识号来分配存储所述数据段的存储空间,根据所述存储空间的物理地址与逻辑地址的对应关系向主机返回所述逻辑地址。示例性地,所述分配的存储空间的物理地址可以用于指示存储数据段的位、所述位所在的页以及所述位所在的块。
对于第一个数据段,分配的存储空间可以是从上述搜索的一个空白的块的起始地址开始且不小于所述第一个数据段的大小。
对于第一个数据段之后的任意一个数据段,分配的存储空间可以是从上一个数据段的物理地址的结束地址开始且不小于所述任意一个数据段的大小。
当存储上一个数据段的物理地址的结束地址是一个块的结束地址时,搜索另一个空白的块,将从所述另一个空白的块的起始地址开始且不小于所述任意一个数据段的大小的存储空间分配给任意一个数据段。需要说明的是,SSD可以将所述标识号与上述一个空白的块的物理地址的对应关系取消,再建立所述标识号与搜索的另一个空白的块的物理地址的对应关系,从而,SSD可以在上一个数据段的物理地址的结束地址是一个块的结束地址时,根据所述请求中包括的数据大小以及标识号来分配所述任意一个数据段的存储空间。
在主机接收到SSD返回的逻辑地址之后,主机再向SSD发送所述任意一个数据段以及所述返回的逻辑地址,在步骤S20中接收到所述任意一个数据段以及逻辑地址之后,由于SSD写入的基本单位是页,而一个页的大小是所述任意一个数据段的大小的整数倍,所以在步骤S30中不会马上将在步骤S20中接收的数据段进行写入,而是将接收到的数据段进行缓存,直到在步骤S20中多次接收的且逻辑地址连续的数据段的大小之和等于一个页的大小,也就是说在步骤S30中缓存的多个逻辑地址连续的数据段的大小之和等于一个页的大小时,在步骤S30中才将缓存的多个逻辑地址连续的数据段写入与所述多个数据段的逻辑地址对应的物理地址(页)中。
由于对于第一个数据段,分配的存储空间可以是从上述搜索的一个空白的块的起始地址开始且不小于第一个数据段的大小,因此,在步骤S30中,可以将第一个数据段写入所述存储空间,即从上述搜索的一个空白的块的起始地址开始且不小于所述第一个数据段的大小的存储空间。
对于第一个数据段之后的任意一个的数据段,分配的存储空间可以是从上一个数据段的物理地址的结束地址开始且不小于所述任意一个数据段的大小,在步骤S30中,可以将任意一个数据段写入分配的存储空间,即从上一个数据段的物理地址的结束地址开始且不小于所述任意一个数据段的大小。
当存储上一个数据段的物理地址的结束地址是一个块的结束地址时,任意一个数据段的存储空间为从搜索的另一个空白的块的起始地址开始且存储大小不小于所述任意一个数据段的大小,在步骤S30中,可以将任意一个数据段写入分配的存储空间,即从搜索的另一个空白的块的起始地址开始且存不小于所述任意一个数据段的大小。
当在步骤S10中,接收第一数据的写入命令的同时,并行接收到其它多个数据的写入命令时,针对每个数据,分别确定一个空白的块,在S20中,分别接收所述第一数据和所述其它多个数据,在S30中,将每个数据分别从针对每个数据分别确定的一个空白的块开始写入。这里每个数据的接收以及写入过程可参照上述第一数据的接收和写入过程。
在根据本发明的示例性实施例中,由于在写入数据的流程中将写入的数据写入到了空白的块中,保证了每个块中只保存了一个数据,按照现有的删除流程删除数据后,即将存储了待删除的数据的页标记成无效后,被删除数据所在的块中只包括无效页和空白页或者只包括无效页,不包括有效页,因此在擦除该块的垃圾回收过程中,无需进行有效数据的搬移,提高了垃圾回收的效率和固态硬盘的使用效率。
此外,对于所有主机都使用根据本发明的示例性实施例的数据处理方法来处理数据的情况,本发明还可对现有的删除流程进行改进,例如,在接收到删除数据的命令之后,将待删除的数据所在的块的所有页设置为无效页。图5是示出根据本发明的示例性实施例的固态硬盘的数据处理方法中的删除数据的流程图。
参照图5,在步骤S40,接收第二数据的删除命令。作为示例,主机可以在接收到删除请求后,对接收到的删除请求进行处理,再将处理过的删除请求作为删除命令发送给SSD。所述删除请求可以包括所述第二数据的逻辑地址。
在步骤S50,将存储所述第二数据的块中的所有页设置为无效页。现有的SSD中的页根据使用状态一般分为三种:空白页、有数据且数据有效的有效页、有数据且数据无效的无效页。在步骤S50,将存储所述第二数据的页所在的块中的所有页的使用状态由有效更改为无效。
这里,在步骤S40和S50之间可以根据接收到的删除请求确定存储所述第二数据的物理地址,所述物理地址指示存储所述第二数据的页以及存储所述第二数据的页所在的块。这里,存储所述第二数据的页所在的块也可以称为存储所述第二数据的块。具体说来,可根据第二数据的逻辑地址以及逻辑地址与物理地址的对应关系确定存储所述第二数据的物理地址。逻辑地址与物理地址的对应关系存储在SSD中。
在根据本发明的另一个示例性实施例中,数据写入的流程还可以在完成第一数据的写入之后,再将写入所述第一数据的块中的空白页设置为填充页或者无效页,从而可以在数据删除的流程中,在将存储了待删除的数据的页设置为无效之后,再在存储所述待删除的数据的块中搜索填充页,并将搜索到的填充页设置为无效页,这样将更适用于SSD的主机中部分主机使用现有的数据处理方法,部分主机使用根据本发明示例性实施例的数据处理的方法的情况。所述填充页为用不同于有效数据的其他预定数据填充的页,其是本发明中除上述现有技术中的页的三种的使用状态之外的第四种使用状态。
图6示出根据本发明的另一示例性实施例的固态硬盘的数据处理方法中的写入数据的流程图。
在步骤S601,接收第一数据的写入命令,响应于所述写入命令,确定一个空白的块。
在步骤S602,接收所述第一数据。
在步骤S603,将所述第一数据从所述一个空白的块开始写入。
这里,可分别参照图4中的步骤S10、S20和S30来执行步骤S601、S602和S603。
在步骤S604,在第一数据的写入完成之后,将写入所述第一数据的块中的空白页设置为填充页。也就是说,将写入所述第一数据的块中的空白页用不同于有效数据的其他预定数据来进行填充。
在另一个实施例中,在步骤S604,在第一数据的写入完成之后,可将写入所述第一数据的块中的空白页设置为无效页。
图7示出根据本发明的另一示例性实施例的固态硬盘的数据处理方法中的删除数据的流程图。
在步骤S701,接收第二数据的删除命令。
在步骤S702,将存储所述第二数据的页设置为无效页。
在步骤S703,在存储所述第二数据的块中搜索填充页,并将搜索到的填充页设置为无效页。
这里,可参照图5中的步骤S40来执行步骤S701,还可参照图5中的方式来确定存储所述第二数据的页和块。
对于在写入数据的流程中,在第一数据的写入完成之后,将写入所述第一数据的块中的空白页设置为无效页的另一个实施例中,在删除数据时,可以不执行S703。
以下将结合图8-图10来描述根据本发明另一示例性实施例的写入数据的流程、删除数据的流程、垃圾回收的过程。
图8示出根据本发明示例性实施例的写入数据的流程在SSD中分别写入第三数据和第四数据后的数据分布示例。如图8所示,第三数据和第四数据的大小都小于一个块的大小,第三数据的全部数据写入到了第一块中,第一块中未写入第三数据的页被预定数据进行了填充,第四数据的全部数据写入到了第二块中,第二块中未写入第四数据的页被预定数据进行了填充。
图9示出根据本发明示例性实施例的删除数据的流程将图8中的第三数据删除之后的SSD中数据分布的示例。如图9所示,第一块存储第三数据的页以及被预定数据填充的页都被设置为了无效页,也就是说第一块中的所有页被设置为了无效页,由于第二块中没有存储第三数据的页,所以不需要对第二块进行处理。
图10示出将图9中的第一块进行擦除的流程图。如图10所示,由于第一块中的页都是无效页,没有有效数据,不需要进行有效数据的搬移,直接可以将第一块进行擦除。
因此,根据本发明示例性实施例的数据处理的方法来写入数据以及删除数据,可以实现垃圾回收过程中的有效数据的零搬移。
本领域技术人员可以理解,上述图8-图10中的实施方式不用于限制本发明,例如,图8中的第一块中未被第三数据写入的页可以不被预定数据进行填充,而是被设置为无效页,在图9中的删除流程中,由于第一块中未被第三数据写入的页已被设置为无效页,第一块中没有填充页,因此不需要搜索填充页,也可实现垃圾回收过程中的有效数据的零搬移。
图11是示出根据本发明的示例性实施例的固态硬盘的数据处理设备中的写入数据模块的结构框图。参照图11,根据本发明的示例性实施例的固态硬盘的数据处理的设备中的写入数据模块包括:写入命令接收单元1101、第一数据接收单元1102和写入单元1103。
写入命令接收单元1101接收第一数据的写入命令,响应于所述写入命令,确定一个空白的块。这里,所述写入命令用于指示将所述第一数据写入所述一个空白的块中。所述一个空白的块包括的页均为空白页,且所述一个空白的块仅用于存储所述第一数据。
主机在接收到写入第一数据的请求时,将先向SSD发送第一数据的写入命令,写入命令接收单元1101在接收到该命令后将确定一个空白的块。例如,写入命令接收单元1101可以通过搜索来确定一个空白的块。之后SSD向所述主机返回对该命令的执行结果(如成功或失败)。此外,所述设备还可以包括标识号发送单元(未示出),标识号发送单元用于向主机返回所述确定的一个空白的块的标识号。该标识号可以是SSD自定义的标识号,该标识号与所述空白的块的物理地址之间具有对应关系,当然也可以采用其它可行的方式,本实施例对于空白的块的标识号的具体形式不作具体限定。
在接收到上述执行结果后,主机将向SSD发送所述第一数据。主机还可以向SSD发送所述一个空白的块的标识号。这里,主机可以在发送第一数据之前,也可以在发送第一数据段的同时发送所述一个空白的块的标识号。相应地,所述设备还可以包括标识号接收单元(未示出),所述标识号接收单元用于接收主机发送的空白的块的标识号。
第一数据接收单元1102接收所述第一数据。
主机在接收到写入所述第一数据的请求后,可以将把所述第一数据分割为多个数据段,在接收到上述执行结果后,再将所述多个数据段分别发送给SSD。每个数据段的大小可以小于一个页的大小。例如,一个页的大小可以是一个数据段的大小的整数倍。相应地,第一数据接收单元1102分别接收由所述第一数据分割成的多个数据段。
写入单元1103将所述第一数据从所述一个空白的块开始写入。这里,可以根据接收的空白的块的标识号来将所述第一数据从所述空白的块的标识号所指示的空白的块开始写入。也就是说,从写入命令接收单元1101确定的一个空白的块中开始写入所述第一数据。例如,可以从所述一个空白的块的起始地址开始写入所述第一数据。
这里,每当一个空白的块被写满而还未完全写入所述第一数据时,写入单元1103将所述第一数据中未写入的内容从另一个空白的块接着写入。例如,写入单元1103将所述第一数据中未写入的内容从另一个空白的块的起始地址接着写入。
在第一数据接收单元1102分别接收由第一数据分割成的多个数据段的情况下,写入单元1103从一个空白的块开始写入所述多个数据段。存储第一个数据段的物理地址的起始地址为一个空白的块的起始地址,存储第一个数据段之后的任意一个数据段的物理地址与存储上一个数据段的物理地址相邻。
在每当一个空白的块被写满而还未完全写入所述多个数据段时,写入单元1103将所述多个数据段未写入的数据段从另一个空白的块接着写入。也就是说,当存储上一个数据段的物理地址的结束地址是一个块的结束地址时,存储所述任意一个数据段的物理地址从另一个空白的块的起始地址开始。
所述多个数据段可以被划分为多个数据段组,每当第一数据接收单元1102接收到一个数据段组时,写入单元1103执行一次写入,并且每当一个空白的块被写满而还存在未被完全写入的一个数据段组和/或还存在未被写入的数据段组时,写入单元1103将所述未完全写入的一个数据段组的未写入的部分和/或存在的未被写入的数据段组从另一个空白的块接着写入。
具体说来,所述一个数据段组可以由多个连续且数据大小之和等于一个页的大小的数据段组成。由于SSD写入的基本单位是页,而每个数据段的大小小于一个页的大小,为了实现存储空间的有效利用,所以写入单元1103不会马上将第一数据接收单元1102接收的一个数据段进行写入,而是将第一数据接收单元1102接收到的数据段进行缓存,直到在第一数据接收单元1102多次接收的连续的数据段的大小之和等于一个页的大小,也就是说在缓存的多个连续的数据段的大小之和等于一个页的大小时,写入单元1103才将缓存的多个连续的数据段写入与所述多个数据段的逻辑地址对应的物理地址(页)中。也就是说,每当第一数据接收单元1102接收到一个数据段组时,写入单元1103执行一次写入。
在第一数据接收单元1102分别接收由所述第一数据分割成的多个数据段的方案中,所述设备还可以包括空间请求接收单元(未示出),针对任意一个数据段,空间请求接收单元接收用于申请存储数据段的空间的请求。所述请求可以包括所述任意一个数据段的数据大小以及上述写入命令接收单元1101确定的一个空白的块的标识号。例如,主机在向SSD发送任意一个数据段之前,可以先向SSD发送用于申请存储数据段的空间的请求,空间请求接收单元接收申请用于存储数据段的空间的请求,并响应于所述请求,根据所述请求中包括数据大小以及标识号来分配存储所述数据段的存储空间,根据所述存储空间的物理地址与逻辑地址的对应关系向主机返回所述逻辑地址。示例性地,所述分配的存储空间的物理地址可以用于指示存储数据段的位、所述位所在的页以及所述位所在的块。
对于第一个数据段,分配的存储空间可以是从上述搜索的一个空白的块的起始地址开始且不小于所述第一个数据段的大小。
对于第一个数据段之后的任意一个数据段,分配的存储空间可以是从上一个数据段的物理地址的结束地址开始且不小于所述任意一个数据段的大小。
当存储上一个数据段的物理地址的结束地址是一个块的结束地址时,搜索另一个空白的块,将从所述另一个空白的块的起始地址开始且不小于所述任意一个数据段的大小的存储空间分配给任意一个数据段。需要说明的是,SSD可以将所述标识号与上述一个空白的块的物理地址的对应关系取消,再建立所述标识号与搜索的另一个空白的块的物理地址的对应关系,从而,SSD可以在上一个数据段的物理地址的结束地址是一个块的结束地址时,根据所述请求中包括的数据大小以及标识号来分配所述任意一个数据段的存储空间。
在主机接收到SSD返回的逻辑地址之后,主机再向SSD发送所述任意一个数据段以及所述返回的逻辑地址,在第一数据接收单元1102接收到所述任意一个数据段以及逻辑地址之后,由于SSD写入的基本单位是页,而一个页的大小是所述任意一个数据段的大小的整数倍,所以写入单元1103不会马上将第一数据接收单元1102接收的数据段进行写入,而是将接收到的数据段进行缓存,直到第一数据接收单元1102多次接收的且逻辑地址连续的数据段的大小之和等于一个页的大小,也就是说在缓存的多个逻辑地址连续的数据段的大小之和等于一个页的大小时,写入单元1103才将缓存的多个逻辑地址连续的数据段写入与所述多个数据段的逻辑地址对应的物理地址(页)中。
由于对于第一个数据段,分配的物理地址存储空间可以是从上述搜索的一个空白的块的起始地址开始且不小于第一个数据段的大小,因此,写入单元1103可以将第一个数据段写入所述存储空间,即从上述搜索的一个空白的块的起始地址开始且不小于第一个数据段的大小的存储空间。
对于第一个数据段之后的任意一个的数据段,分配的存储空间可以是从上一个数据段的物理地址的结束地址开始且不小于所述任意一个数据段的大小,写入单元1103可以将任意一个数据段写入分配的存储空间,即从上一个数据段的物理地址的结束地址开始且不小于所述任意一个数据段的大小。
当存储上一个数据段的物理地址的结束地址是一个块的结束地址时,任意一个数据段的存储空间为从搜索的另一个空白的块的起始地址开始且存储大小不小于所述任意一个数据段的大小,写入单元1103可以将任意一个数据段写入分配的存储空间,即从搜索的另一个空白的块的起始地址开始且存不小于所述任意一个数据段的大小相。
当写入命令接收单元1101接收第一数据的写入命令的同时,并行接收到其它多个数据的写入命令时,针对每个数据,写入命令接收单元1101分别确定一个空白的块,第一数据接收单元1102分别接收所述第一数据和所述其它多个数据,写入单元1103将每个数据分别从针对每个数据分别确定的一个空白的块开始写入。这里每个数据的接收以及写入过程可参照上述第一数据的接收和写入过程。
在根据本发明的示例性实施例中,由于在写入数据模块将写入的数据写入到了空白的块中,保证了每个块中只保存了一个数据,按照现有的删除流程删除数据后,即将存储了待删除的数据的页标记成无效后,被删除数据所在的块中只包括无效页和空白页或者只包括无效页,不包括有效页,因此在擦除该块的垃圾回收过程中,无需进行有效数据的搬移,提高了垃圾回收的效率和固态硬盘的使用效率。
此外,对于所有主机都使用根据本发明的示例性实施例的数据处理的设备来处理数据的情况,本发明还可对现有的删除流程进行改进,例如,在接收到删除数据的命令之后,将待删除的数据所在的块的所有页都设置为无效页。图12是示出根据本发明的示例性实施例的固态硬盘的数据处理方法中的删除数据模块的结构框图。参照图12,根据本发明的示例性实施例的固态硬盘的数据处理设备中的删除数据模块包括:删除命令接收单元1201和第一设置单元1202。
删除命令接收单元1201接收第二数据的删除命令。作为示例,主机可以在接收到删除请求后,对接收到的删除请求进行处理,再将处理过的删除请求作为删除命令发送给SSD。所述删除请求可以包括所述第二数据的逻辑地址。
第一设置单元1202将存储所述第二数据的块中的所有页设置为无效页。第一设置单元1202将存储所述第二数据的页所在的块中的所有页的使用状态由有效更改为无效。
这里,所述删除数据模块还可以包括物理地址确定单元(未示出)。所述物理地址确定单元根据接收到的删除请求确定存储所述第二数据的物理地址,所述物理地址指示存储所述第二数据的页以及存储所述第二数据的页所在的块。这里,存储所述第二数据的页所在的块也可以称为存储所述第二数据的块。具体说来,所述物理地址确定单元可根据第二数据的逻辑地址以及逻辑地址与物理地址的对应关系确定存储所述第二数据的物理地址。逻辑地址与物理地址的对应关系存储在SSD中。
在根据本发明的另一个示例性实施例中,数据写入模块还可以在完成第一数据的写入之后,再将写入所述第一数据的块中的空白页设置为填充页或者无效页,从而可以在数据删除的流程中,在将存储了待删除的数据的页设置为无效页之后,再在存储所述待删除的数据的块中搜索填充页,并将搜索到的填充页设置为无效页,这样将更适用于SSD的主机中部分主机使用现有的数据处理方法,部分主机使用根据本发明示例性实施例的数据处理的方法的情况。所述填充页为用不同于有效数据的其他预定数据填充的页,其是本发明中除上述现有技术中的页的三种的使用状态之外的第四种使用状态。
图13示出根据本发明的另一示例性实施例的固态硬盘的数据处理方法中的写入数据模块的结构框图。参照图13,根据本发明的另一示例性实施例的固态硬盘的数据处理方法中的写入数据模块包括写入命令接收单元1301、第一数据接收单元1302、写入单元1303和第二设置单元1304。
写入命令接收单元1301接收第一数据的写入命令,响应于所述写入命令,确定一个空白的块。
第一数据接收单元1302接收所述第一数据。
写入单元1303将所述第一数据从所述一个空白的块开始写入。
这里,写入命令接收单元1301、第一数据接收单元1302和写入单元1303的功能可分别参照图11中的第一数据接收单元1101、第一数据接收单元1102和写入单元1103。
第二设置单元1304在第一数据的写入完成之后,将写入所述第一数据的块中的空白页设置为填充页。也就是说,第二设置单元1304将写入所述第一数据的块中的空白页用不同于有效数据的其他预定数据来进行填充。
在另一个实施例中,第二设置单元1304在第一数据的写入完成之后,可将写入所述第一数据的块中的空白页设置为无效页。
图14示出根据本发明的另一示例性实施例的固态硬盘的数据处理方法中的删除数据模块的结构框图。参照图14,根据本发明的另一示例性实施例的固态硬盘的数据处理方法中的删除数据模块包括:删除命令接收单元1401、第三设置单元1402和搜索单元1403。
删除命令接收单元1401接收第二数据的删除命令。
第三设置单元1402将存储所述第二数据的页设置为无效页。
搜索单元1403在存储所述第二数据的块中搜索填充页,并将搜索到的填充页设置为无效页。
这里,删除命令接收单元1401的功能可参照图12中的删除命令接收单元1201,还可参照图12中的方式来确定存储所述第二数据的页和块。
对于写入数据模块中的第二设置单元在第一数据的写入完成之后,将写入所述第一数据的块中的空白页设置为无效页的另一个实施例中,其删除数据模块可以不包括搜索单元1403。
在根据本发明示例性实施例的固态硬盘的数据处理的方法和设备中,由于在写入数据的流程中将写入的数据仅写入到了空白的块中,保证了每个块中只保存了一个数据,在删除数据后,即将存储了待删除的数据的页标记成无效后,存储被删除数据的块中只包括无效页和空白页或者只包括无效页,不包括有效页,因此在擦除该块的垃圾回收过程中,无需进行有效数据的搬移,提高了垃圾回收的效率和固态硬盘的使用效率。根据本发明的固态硬盘的数据处理的方法和设备可应用于各种数据的存储处理,对于大型数据中心的服务器中的数据存储处理,效果更佳。此外,由于采用日志结构合并(LOGStructured-Merge,LSM)的文件组织形式的系统对于数据的处理只包括写入和删除两种操作,因此根据本发明的固态硬盘的数据存储处理的方法和设备可较好地应用于采用LSM的文件组织形式的系统。
此外,应该理解,根据本发明的示例性实施例的固态硬盘的数据处理的方法也可实现为计算机可读记录介质上的计算机可读代码。计算机可读记录介质是可存储其后可由计算机系统读出的数据的任意数据存储装置。计算机可读记录介质的示例包括:只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘、光数据存储装置和载波(诸如经有线或无线传输路径通过互联网的数据传输)。计算机可读记录介质也可分布于连接网络的计算机系统,从而计算机可读代码以分布式存储和执行。此外,完成本发明的功能程序、代码和代码段可容易地被与本发明相关的领域的普通程序员在本发明的范围之内解释。
此外,根据本发明的示例性实施例的固态硬盘的数据处理的设备中的各个单元可被实现硬件组件。本领域技术人员根据限定的各个单元所执行的处理,可以例如使用现场可编程门阵列(FPGA)或专用集成电路(ASIC)来实现各个单元。
尽管已经参照其示例性实施例具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本发明的精神和范围的情况下,可以对其进行形式和细节上的各种改变。