固态硬盘的写入方法
【技术领域】
[0001]本发明涉及一种固态硬盘的写入方法,特别是涉及固态硬盘写入数据时,在缓冲存储器中数据重新排序写入非易失性存储单元的方法。
【背景技术】
[0002]固态硬盘(Solid State Drive,简称SSD) —般由数个非易失性存储单元(Non-Volatile Memory,简称NVM)整合成为单一储存装置。由于固态硬盘传输数据的速度非常快速,有利于大量数据的传输,已成为现代计算机系统的主要数据储存装置。
[0003]如图1所示,为现有技术固态硬盘的数据写入过程。计算机系统等主机利用处理器发送具有逻辑分配地址(Logical Allocat1n Address,简称LAA)的写入数据,例如写入数据LAA(O, 8, 2,3,4, 5,6, 7,1,9, 10,11,12,13,14,15),由固态硬盘中的控制器接收写入数据,暂存在缓冲存储器,再依接收先后次序,将相对应非易失性存储单元0-7数目的写入数据,分成多个写入单位,例如写入单位I为LAA(0,8,2,3,4,5,6,7)及写入单位2为LAA(1, 9, 10,11,12,13,14,15),然后以写入单位为单位,将写入数据分送且经非易失性存储单元0-7各自的先进先出(First In First Out,简称FIFO)管道,同时平行储存至各非易失性存储单元,以提高数据的写入速度。
[0004]读取数据时,固态硬盘接收主机读取需求,分送且登记在各非易失性存储单元的读取需求伫列中。再依各非易失性存储单元伫列中读取需求的顺序,按照先进先出的原则,同时平行读取各非易失性存储单元储存的数据,由各自的先进先出管道送出,经控制器整理后,储存在主机的动态随机存储器(DRAM)中备用。因此,固态硬盘利用各非易失性存储单元各自的先进先出管道,以多管道同时平行读取数据,达到提高数据读取的速度。
[0005]然而,假如主机需要读取数据LAA(0,I, 2,3,4,5,6,7)时,因固态硬盘各非易失性存储单元受各自先进先出管道的限制,非易失性存储单元O无法同时读取送出所需的两个读取数据LAA(0,I)。仅能在第一时程先行读取数据LAA(O),随其他非易失性存储单元2,3,4,5,6,7平行读取的LAA(O, 2,3,4,5,6,7)送出,然后在第二时程非易失性存储单元O单独读取数据LAA(I)送出。使得固态硬盘读取数据的时间被迫延长,导致降低固态硬盘多管道平行读取数据的效率。
[0006]究其原因,固态硬盘虽然将接收的写入数据,分散至各非易失性存储单元,利用平行多管道以提高写入数据速度。但仅依接收先后次序,分散的写入数据,极易将具有连续或相近的逻辑分配地址的写入数据,写入同一非易失性存储单元中,导致数据读取时受先进先出管道限制的卡阻,造成固态硬盘整体读写效能的降低。因此,固态硬盘在数据的写入方法,仍有问题亟待解决。
【发明内容】
[0007]本发明的目的在提供一种固态硬盘的写入方法,藉由重新排序写入数据暂存在写入单元的缓冲地址,使写入数据依其逻辑分配地址大小,在相邻的非易失性存储单元中顺序排列,以提闻读取速度。
[0008]本发明另一目的在提供一种固态硬盘的写入方法,利用写入数据的逻辑分配地址,将地址序数除以缓冲地址数目的余数,作为写入数据暂存的缓冲地址,以重新排序写入数据。
[0009]本发明再一目的在提供一种固态硬盘的写入方法,对于已被暂存的非空白缓冲地址,利用偏移缓冲地址,重新排序写入数据的缓冲地址,以维持写入数据在相邻的非易失性存储单元中顺序排列。
[0010]为了达到前述发明的目的,本发明固态硬盘的写入方法,在缓冲存储器中规划写入单元,缓冲地址一对一对应固态硬盘的非易失性存储单元,接收具有逻辑分配地址的写入数据,利用写入数据的逻辑分配地址的地址序数除以缓冲地址数目,由其余数,取得在写入单元重新排序的缓冲地址,检查重新排序的缓冲地址不是空白,则利用偏移下一缓冲地址重新排序,检查重新排序的缓冲地址是空白,则将写入数据暂存至重新排序的缓冲地址。
[0011]本发明固态硬盘的写入方法,将写入数据暂存后,检查写入单元的缓冲地址已填满,将暂存在写入单元缓冲地址的写入数据,相对应写入非易失性存储单元储存,写入单元写入非易失性存储单元后,再检查未完成接收写入数据时,继续规划下一写入单元及接收写入数据,规划的写入单元,可清空写入单元做为下一写入单元或在缓冲存储器中另寻空间规划下一写入单元。
【附图说明】
[0012]图1为现有技术固态硬盘写入数据的示意图。
[0013]图2为本发明固态硬盘的系统结构图。
[0014]图3为本发明固态硬盘写入数据的理想储存状态图。
[0015]图4为本发明重新排序写入数据的缓冲地址的示意图。
[0016]图5为本发明偏移写入数据的缓冲地址的示意图。
[0017]图6为本发明固态硬盘写入方法的重新排序的流程图。
[0018]图7为本发明固态硬盘第一阶段写入数据的实施例的示意图。
[0019]图8为本发明固态硬盘第二阶段写入数据的实施例的示意图。
[0020]图9为本发明固态硬盘的写入方法的流程图。
[0021]附图符号说明
[0022]10 主机
[0023]11 处理器
[0024]12 动态随机存储器
[0025]20 固态硬盘
[0026]21 控制器
[0027]22 缓冲存储区
[0028]23 先进先出管道
[0029]24 非易失性存储单元
【具体实施方式】
[0030]有关本发明为实现上述目的,所采用的技术手段及其功效,兹举较佳实施例,并结合附图加以说明如下。
[0031]请参阅图2,为本发明固态硬盘20的系统结构。其中主机10设置处理器11发送写入数据及读取数据的需求,且设有动态随机存储器12暂时储存读取的数据备用。本发明的固态硬盘20连接主机10,固态硬盘20内设控制器21配合缓冲存储器22,控制由数个先进先出管道23 —对一对应连接的多个8个非易失性存储单元24,整合成为单一储存装置,作为主机的主要数据储存装置。本实施例虽以固态硬盘20包含8个第O至7个非易失性存储单元24为例说明,但固态硬盘20的非易失性存储单元24数目m,包含且不限于8个非易失性存储单元24。
[0032]主机10的处理器11发送写入数据时,由固态硬盘20中的控制器21接收写入数据,暂存在缓冲存储器22,重新排序形成写入单位。将写入单位中的写入数据经非易失性存储单元24各自的先进先出管道23,平行储存至各非易失性存储单元24。主机10读取数据时,由固态硬盘20接收读取需求,分送且登记在各非易失性存储单元24的读取需求伫列中。再依各非易失性存储单元24伫列中读取需求的顺序,按照先进先出的原则,平行读取各非易失性存储单元24储存的数据,由各自的先进先出管道23送出,供主机备用。
[0033]如图3所示,为本发明固态硬盘20写入数据的理想储存状态。由于使用者在同一工作时段,写入或读取的数据通常属于相同性质工作内容的数据,而相同性质工作内容的数据一般具有连续或相近的逻辑分配地址(LAA)。因此如能将连续或相近的逻辑分配地址,如图3依其逻辑分配地址的大小在相邻的非易失性存储单元24中的进行理想的顺序排列,就可在读取连续的逻辑分配地址数据时,例如读取
数据LAA (2,3,4,5,6,7,8,9),避免读取数据受先进先出管道23的卡阻,而可提高读取速度。
[0034]如图4所示,为本发明重新排序写入数据暂存的缓冲地址的过程。为了达到让写入数据依其逻辑分配地址在相邻的非易失性存储单元中顺序排列的目标。本发明固态硬盘的m个非易失性存储单元,针对接收主机的写入数据的逻辑分配地址LAA(η),在缓冲存储器22中规划写入单元。写入单元具有m个缓冲地址(Plane Address,简称PA),即PA (O),PA⑴,PA⑵,…,PA (m-2),PA (m-1),一对一对应m个非易失性存储单元。让暂存在每一缓冲地址PA(O)至PA(m-l)的写入数据,仅有相对应的非易失性存储单元O至m-1。接着将写入数据的逻辑分配地址LAA (η)的地址序数η除以缓冲地址数目m,由其余数k,取得写入单元的缓冲地址PA(k)。然后将原应依序暂存的写入数据LAA(η),如箭头所示移位暂存在缓冲地址PA(k),以重新排序写入数据在缓冲存储器22的写入单元的缓冲地址。
[0035]经由本发明重新排序写入数据暂存的缓冲地址。由于每一写入数据的逻辑分配地址,都依据相对写入单元的m个缓冲地址的余数依序就位,因此写入数据均能依其逻辑分配地址LAA(η)的大小,顺序排列暂存在写入单元的缓冲地址。当写入单元写入一对一对应的非易失性存储单元,也能在相邻的非易失性存储单元中,维持写入数据依其逻辑分配地址LAA (η)的大小顺序相同排列。
[0036]然而,使用者在同一工作时段,写入的数据并非全然为相同性质的工作内容,也可能属于相近性质的工作内容,因此写入数据的逻辑分配地址较为分散。更有可能在同一写入单元中,出现几个重新排序后相同缓冲地址的写入数据,以致后处理的写入数据的重新排序缓冲地址已被先处理的写入数据占据,形成非空白的缓冲地址,造成后处理的写入数据,无法依其逻辑分配地址LAA(η)的大小暂存。
[0037]如图5所示,为本发明偏移写入数据暂存的缓冲地址的过程。针对前述缓冲地址被先处理的写入数据占据的状态,本发明为了达到尽可能依逻辑分配地址的大小连续排列的状态,对写入数据的逻辑分配地址LAA (η),在重新排序取得写入单元的缓冲地址PA(k)后,先检查缓冲地址PA (k)是否空白,假如为空白,就将写入数据LAA (η)直接暂存至缓冲地址PA (k),否则检查缓冲地址PA (k)已有现有的写入数据逻辑分配地址LAA (η’)占据而为非空白时,利用偏移手段,偏移下一缓冲地址重新排序写入数据的缓冲地址,将写入数据的逻辑分配地址LAA (η)的地址序数η加I除以缓冲地址数目m的余数k+Ι,取得写入单元的缓冲地址PA (k+Ι),再检查重新排序缓冲地址的空白状态,不然继续偏移下一缓冲地址,在写入单元依序循环偏移,直到检查重新排序的缓冲地址出现空白,再将写入数据LAA(η)暂存至空白的缓冲地址。
[0038]如图6所示,为本发明固态硬盘写入方法的重新排序的流程。本发明固态硬盘对写入数据重新排序写入方法的详细步骤说明如下:在步骤Si,首先本发明固态硬盘在缓冲存储器中规划写入单元,写入单元的缓冲地址一对一对应非易失性存储单元;步骤S2,接收具有逻辑分配地址的写入数据;在步骤S3,利用写入数据逻辑分配地址的地址序数除以缓冲地址数目,由其余数,取得在写入单元重新排序的缓冲地址。接着在步骤S4,检查重新排序的缓冲地址是否为空白?假如重新排序的缓冲地址不是空白,则进入步骤S5,利用偏移手段,偏移下一缓冲地址,将地址序数加1,再回到步骤S3继续重新排序缓冲地址,假如重新排序的缓冲地址是空白,进入步骤S6直接将写入数据暂存至该缓冲地址。然后至步骤S7,等待指令,进行处理下一写入数据或其他作业。
[0039]藉由前述流程,本发明就可利用余数重新排序,让写入数据依逻辑分配地址大小的排列,而对被占重新排序缓冲地址的写入数据,利用偏移手段,偏移下一缓冲地址重新排序,写入数据的逻辑分配地址在写入单元中,虽然无法维持依逻辑分配地址大小的理想排列,但基本上写入数据的逻辑分配地址仍能依其逻辑分配地址LAA(η)的大小,大致排列在写入单元的缓冲地址,写入单元写入非易失性存储单元,也可达到在相邻的非易失性存储单元中维持依逻辑分配地址大小大致顺序排列的目的。
[0040]请同时参考图7及图8所示,图7为本发明固态硬盘第一阶段写入数据的实施例,图8为本发明固态硬盘第二阶段写入数据的实施例。举一具体实施例说明本发明固态硬盘写入数据的过程。图7中,本发明的固态硬盘在第一阶段,先在缓冲存储器22中规划写入单元1,写入单元I具有一对一对应非易失性存储单元0-7的8个缓冲地址PA(O) ,PA(I)1PA⑵,PA (3),PA (4),PA (5),PA (6),PA (7)。假设相同现有技术,接收主机发送的写入数据LAA(0,8, 2,3,4, 5,6, 7,1,9, 10,11,12,13,14,15)。对于首先接收的写入数据 LAA (O),将写入数据的逻辑分配地址LAA (O)的地址序数O除以缓冲地址数目8,由其余数0,取得重新排序在写入单元I的缓冲地址PA(O)。检查缓冲地址PA(O)为空白,如实线箭头直接将写入数据LAA(O)暂存至写入单元I的缓冲地址PA(O)。然后检查写入单元I的缓冲地址未填满,继续接收写入数据。
[0041 ] 接着对接收的写入数据LAA (8),将写入数据的逻辑分配地址LAA (8)的地址序数8除以缓冲地址数目8,由其余数0,取得重新排序在写入单元I的缓冲地址PA (O)。因缓冲地址PA (O)已被写入数据LAA(O)暂存,检查缓冲地址PA (O)为非空白,利用偏移手段,将地址序数8加I除以缓冲地址数目8,由其余数1,重新排序取得缓冲地址PA(I),再检查缓冲地址PA(I)为空白,将原应如虚线箭头暂存,改为如实线箭头将写入数据LAA(S)暂存至写入单元I的缓冲地址PA(1)。再检查写入单元I的缓冲地址未填满,继续接收写入数据。
[0042]对后续依序接收的写入数据LAA (2,3,4,5,6,7),取得重新排序在写入单元I的缓冲地址PA (2),PA (3),PA (4),PA (5),PA (6),PA (7),因检查缓冲地址均为空白,可如写入数据LAA(O),依各实线箭头直接将写入数据LAA (2,3,4,5,6,7),一一暂存至写入单元I的缓冲地址PA (2),PA (3),PA (4),PA (5),PA (6),PA (7),并——检查写入单元I的缓冲地址是否已填满,直到重新排序及暂存写入数据LAA(7)后,检查写入单元I的缓冲地址一旦填满,就同时经由先进先出管道23将暂存在写入单元I缓冲地址PA (O)的写入数据LAA(O)写入固态硬盘的非易失性存储单元0,缓冲地址PA (I)的写入数据LAA(S)写入固态硬盘的非易失性存储单元I,缓冲地址PA (2)的写入数据LAA (2)写入固态硬盘的非易失性存储单元2,缓冲地址PA(3)的写入数据LAA(3)写入固态硬盘的非易失性存储单元3,缓冲地址PA(4)的写入数据LAA (4)写入固态硬盘的非易失性存储单元4,缓冲地址PA (5)的写入数据LAA (5)写入固态硬盘的非易失性存储单元5,缓冲地址PA (6)的写入数据LAA (6)写入固态硬盘的非易失性存储单元6,缓冲地址PA (7)的写入数据LAA (7)写入固态硬盘的非易失性存储单元7,并将写入单元I清空备用,以完成第I阶段的数据写入。
[0043]接着进行本发明固态硬盘的第二阶段写入数据,图8中,先在缓冲存储器
22中将清空的写入单元I规划为写入单元2。本实施例虽以清空写入单元规划做为下一写入单元使用,但亦可在缓冲存储器22中另寻空间规划下一写入单元,以暂存写入数据作为快取数据。接着由主机继续接收写入数据LAA(I),将写入数据的逻辑分配地址LAA(I)的地址序数I除以缓冲地址数目8,由其余数I,取得重新排序在写入单元2的缓冲地址PA (I)。检查缓冲地址PA(I)为空白,如实线箭头直接将写入数据LAA(I)暂存至写入单元2的缓冲地址PA(I)。然后检查写入单元2的缓冲地址未填满,继续接收写入数据。
[0044]接着对接收的写入数据LAA (9),将写入数据的逻辑分配地址LAA (9)的地址序数9除以缓冲地址数目8,由其余数I,取得重新排序在写入单元2的缓冲地址PA (I)。因缓冲地址PA⑴已被写入数据LAA⑴暂存,检查缓冲地址PA (I)为非空白,利用偏移手段,将地址序数9加I除以缓冲地址数目8,由其余数2,重新排序取得缓冲地址PA (2),再检查缓冲地址PA (2)为空白,将原应如虚线箭头暂存,改为如实线箭头将写入数据LAA (9)暂存至写入单元2的缓冲地址PA(2)。再检查写入单元2的缓冲地址未填满,继续接收写入数据。
[0045]对后续依序接收的写入数据LAA (10,11,12,13,14),分别取得重新排序在写入单元2的缓冲地址PA⑵,PA (3),PA (4),PA (5),PA (6),因检查缓冲地址均为非空白,如写入数据LAA (9),利用偏移手段,将地址序数加I,重新排序取得在写入单元2的缓冲地址PA (3),PA (4),PA (5),PA (6),PA (7),再一一检查缓冲地址为空白,将原应如虚线箭头暂存,改为如实线箭头将写入数据直接暂存至重新排序的缓冲地址。再检查写入单元2的缓冲地址未填满,继续接收写入数据。
[0046]接着对接收的写入数据LAA(15),将写入数据的逻辑分配地址LAA(15)的地址序数15除以缓冲地址数目8,由其余数7,取得重新排序在写入单元2的缓冲地址PA (7)。因缓冲地址PA (7)已被写入数据LAA (14)暂存,检查缓冲地址PA (14)为非空白,利用偏移手段,将地址序数15加I再除以缓冲地址数目8,由其余数0,重新排序取得缓冲地址PA(O),再检查缓冲地址PA (O)为空白,将原应如虚线箭头暂存,改为如实线箭头将写入数据LAA (15)暂存至写入单元2的缓冲地址PA(O)。再检查写入单元2的缓冲地址填满,同时经由先进先出管道23将暂存在写入单元2缓冲地址的写入数据LAA(15,1,9, 10,11,12,13,14),相对应写入非易失性存储单元0-7。假如主机需要读取数据LAA(0,1,2,3,4,5,6,7)时,因数据LAA(O)与数据LAA(I)分散写入固态硬盘不同的非易失性存储单元O及非易失性存储单元I中,不会因先进先出管道的限制形成卡阻,能在第一时程就同时平行读取数据LAA (O, I, 2,3,4,5,6,7),以提高数据读取速度。
[0047]如图9所示,为本发明固态硬盘的写入方法的流程。本发明固态硬盘的写入方法详细的步骤说明如下:在步骤P1,首先本发明固态硬盘在缓冲存储器中规划写入单元;步骤P2,从主机接收写入数据;在步骤P3,利用写入数据逻辑分配地址的地址序数除以缓冲地址数目,由其余数,取得在写入单元重新排序的缓冲地址。接着在步骤P4,检查重新排序的缓冲地址是否为空白?假如重新排序的缓冲地址不是空白,则进入步骤P5,利用偏移手段,将地址序数加I,再回到步骤P3继续重新排序缓冲地址,在写入单元循环偏移缓冲地址,直到重新排序到空白的缓冲地址,假如重新排序的缓冲地址是空白,进入步骤P6直接将写入数据暂存至该缓冲地址。
[0048]接着在步骤P7,检查写入单元的缓冲地址是否填满?假如写入单元未填满,回到步骤P2,继续从主机接收写入数据,假如检查写入单元已填满,则进入步骤P8,将暂存在写入单元缓冲地址的写入数据,相对应写入非易失性存储单元储存。在步骤P9,检查是否完成接收写入数据?假如未完成接收写入数据,回到步骤P1,继续规划下一写入单元,假如完成接收写入数据,则到步骤P10,等待主机的指令。
[0049]经由前述的过程,本发明固态硬盘的写入方法,就可藉由利用接收写入数据的逻辑分配地址,将地址序数除以非易失性存储单元数目或写入单元中缓冲地址数目的余数,作为写入数据暂存在写入单元的缓冲地址,而对于已被暂存的非空白缓冲地址,则利用往下一缓冲地址偏移,作为写入数据暂存在写入单元的缓冲地址,重新排序写入数据暂存的缓冲地址,使写入数据依其逻辑分配地址,在相邻的非易失性存储单元中维持大致顺序排列,以达到提高读取速度的目的。
[0050]以上所述,仅为用以方便说明本发明的较佳实施例,本发明的范围不限于这些较佳实施例,凡依本发明所做的任何变更,在不脱离本发明的精神下,皆属本发明申请专利的范围。
【主权项】
1.一种固态硬盘的写入方法,其步骤包含: (1)在固态硬盘的缓冲存储器中规划写入单元,写入单元的缓冲地址一对一对应固态硬盘的非易失性存储单元; (2)接收具有逻辑分配地址的写入数据; (3)利用写入数据的逻辑分配地址的地址序数除以缓冲地址数目,由其余数,取得在写入单元重新排序的缓冲地址; (4)检查重新排序的缓冲地址不是空白,则利用偏移手段,将地址序数加1,再回到步骤⑶重新排序; (5)检查重新排序的缓冲地址是空白,则将写入数据暂存至重新排序的缓冲地址; (6)等待指令。2.如权利要求1所述的固态硬盘的写入方法,其中该偏移手段,在写入单元依序循环偏移下一缓冲地址,直到检查重新排序的缓冲地址出现空白,再将写入数据暂存至空白的该重新排序的缓冲地址。3.如权利要求1所述的固态硬盘的写入方法,其中该步骤(5)将写入数据暂存后,检查写入单元的缓冲地址未填满,回到步骤(2)继续接收写入数据。4.如权利要求3所述的固态硬盘的写入方法,其中该步骤(5)将写入数据暂存后,检查写入单元的缓冲地址已填满,则将暂存在写入单元缓冲地址的写入数据,相对应写入非易失性存储单元。5.如权利要求4所述的固态硬盘的写入方法,其中将写入单元写入非易失性存储单元后,再检查未完成接收写入数据时,回到步骤(I)继续规划写入单元。6.如权利要求5所述的固态硬盘的写入方法,其中将写入单元写入非易失性存储单元后,检查完成接收写入数据时,则等待指令。7.如权利要求1所述的固态硬盘的写入方法,其中该规划的写入单元,是清空写入单元做为下一写入单元。8.如权利要求1所述的固态硬盘的写入方法,其中该规划的写入单元,是在缓冲存储器中另寻空间规划下一写入单元。
【专利摘要】一种固态硬盘的写入方法,在缓冲存储器中规划写入单元,缓冲地址一对一对应固态硬盘的非易失性存储单元,接收写入数据,利用写入数据的逻辑分配地址除以缓冲地址数目,由其余数,取得在写入单元重新排序的缓冲地址,检查重新排序的缓冲地址不是空白,则利用偏移下一缓冲地址重新排序,检查重新排序的缓冲地址是空白,则将写入数据暂存至重新排序的缓冲地址,以顺序排列写入数据的逻辑分配地址。
【IPC分类】G06F3/06, G06F12/06
【公开号】CN104899155
【申请号】CN201410079814
【发明人】林政仪, 萧亦隆
【申请人】广明光电股份有限公司
【公开日】2015年9月9日
【申请日】2014年3月6日
【公告号】US20150255147