背景技术
随着计算机技术的发展,硬盘的数据传输效率和能耗已经成为计算机系统中日益突出的性能瓶颈。目前CPU(中央处理器)与内存之间的数据吞吐量已超过10GB/秒,而硬盘的连续数据传输率只有50MB/秒左右,相差约200倍,这使得硬盘在很多时候成为系统性能的最大瓶颈。
传统的硬盘主要包括磁盘和SRAM缓存。由于磁盘采用机械式寻址方式,因此存在上述性能瓶颈问题。为改善硬盘性能,业界新发展出一种混合硬盘。混合硬盘主要包括磁盘、非易失性存储器和高速缓存,其中:
高速缓存,由DRAM或SRAM构成,其特点是读写速度快,使用寿命长,但是断电后不能保存数据;
非易失性存储器,由闪存、相变存储器(PRAM)或磁体存储器(MRAM)构成,其特点是寻址及读写速度快,断电后仍能保存数据,但是有些器件具有有限的读写寿命;
磁盘,还包括磁头、驱动马达等,其特点是使用寿命长,断电后仍能保存数据,但是寻址及读写速度慢。
向混合硬盘写入数据时,先将数据存入高速缓存,再将数据存入非易失性存储器或磁盘。从混合硬盘读取数据时,先在高速缓存中寻找,再在非易失性存储器或磁盘中寻找。可是,闪存具有有限的读写次数,而硬盘在一段时间内的读写操作具有集中于特定存储区域的特点,这使得混合硬盘的使用存在一定困难。
发明内容
本发明所要解决的技术问题是提供一种混合硬盘的数据存取方法,该方法可以提升硬盘的数据传输效率,降低硬盘的能耗,延长硬盘的使用寿命。
为解决上述技术问题,本发明混合硬盘的数据存取方法,所述混合硬盘包括磁盘、非易失性存储器和高速缓存,所述方法将所述高速缓存划分为多个数据块,并在所述高速缓存中记录每个数据块的写入次数、读取次数和标记;
所述方法将所述非易失性存储器划分为多个数据块,并在所述非易失性存储器或所述磁盘中记录每个数据块的写入次数、读取次数和标记;
当所述高速缓存的数据块中的数据已存入所述非易失性存储器或所述磁盘,该数据块标记为“空闲”;否则,该数据块标记为“更改”;
所述方法将数据存入所述高速缓存时,优先存入读取次数较少的数据块,并将该数据块标记为“更改”,更新该数据块的写入次数;
将所述高速缓存中所有标记为“更改”的数据块按照写入次数的多少分成多个先入先出队列;每个队列中的数据块的写入次数在一定范围内,不同队列中的数据块的写入次数的范围均不重合;
当所述高速缓存中的数据块的写入次数增加且仍在该数据块所在队列的写入次数的范围内,所述方法将该数据块调至该数据块所在队列的入口;当所述高速缓存中的数据块的写入次数增加且超出该数据块所在队列的写入次数的范围,所述方法将该数据块调至上一级队列的入口;
所述上一级队列的写入次数的范围大于原队列的写入次数的范围,并且所述上一级队列的写入次数的范围包括该数据块的写入次数。
本发明所述混合硬盘的数据存取方法,可以有效提升硬盘的数据传输效率,降低硬盘的能耗,延长硬盘的使用寿命。
具体实施方式
本发明所述混合硬盘的数据存取方法包括如下几种:
在写入数据时,先将数据存入所述高速缓存中,再将数据从所述高速缓存存入所述非易失性存储器,再将数据从所述非易失性存储器存入所述磁盘中;
或者在写入数据时,先将数据存入所述高速缓存中,再将数据从所述高速缓存存入所述磁盘中;
在读取数据时,先从所述高速缓存中查找数据,当所述高速缓存中找到需要读取的数据,则直接从所述高速缓存读取数据;当所述高速缓存中未找到需要读取的数据,再从所述非易失性存储器中查找数据,当所述非易失性存储器中找到需要读取的数据,则从所述非易失性存储器中读取数据;当所述非易失性存储器中未找到需要读取的数据,再从所述磁盘中查找数据。
上述混合硬盘的数据存取方法,在具体使用时,还可以采用下述方式:
将所述高速缓存划分为多个数据块,并在所述高速缓存中记录每个数据块的写入次数、读取次数和标记。将所述非易失性存储器也划分为多个数据块,并在所述非易失性存储器或所述磁盘中记录每个数据块的写入次数、读取次数和标记。
当所述高速缓存的数据块中的数据已存入所述非易失性存储器或所述磁盘,该数据块标记为“空闲”;否则,该数据块标记为“更改”(dirty)。当所述非易失性存储器的数据块中的数据已存入所述磁盘,该数据块标记为“空闲”;否则,该数据块标记为“更改”。
将数据存入所述高速缓存时,优先存入读取次数较少的数据块。存储完成后,将该数据块标记为“更改”,并更新该数据块的写入次数。
将数据从所述高速缓存存入所述非易失性存储器或所述磁盘时,优先将所述高速缓存中写入次数较少且标记为“更改”的数据块中的数据存入所述非易失性存储器或所述磁盘。存储完成后,将该数据块标记为“空闲”,并将该数据块的写入次数清零。
在计算机系统关机或重启时,将所述高速缓存中所有标记为“更改”的数据块中的数据都存入所述非易失性存储器或所述磁盘。存储完成后,将该数据块标记为“空闲”,并将该数据块的写入次数清零。
将所述高速缓存中所有标记为“更改”的数据块按照写入次数的多少分成多个先入先出队列(dirty queue)。每个队列中的数据块的写入次数在一定范围内,不同队列中的数据块的写入次数的范围均不重合。
当所述高速缓存中的数据块的写入次数增加且仍在该数据块所在队列的写入次数的范围内,所述方法将该数据块调至该数据块所在队列的入口。当所述高速缓存中的数据块的写入次数增加且超出该数据块所在队列的写入次数的范围,所述方法将该数据块调至上一级队列的入口。所述上一级队列的写入次数的范围大于原队列的写入次数的范围,并且所述上一级队列的写入次数的范围包括该数据块的写入次数。
将数据从所述高速缓存存入所述非易失性存储器或所述磁盘时,优先将所述高速缓存中写入次数较低的队列中的数据块存入所述非易失性存储器或所述磁盘。
将数据从所述高速缓存存入所述非易失性存储器时,优先存入所述非易失性存储器中写入次数较少的数据块。存储完成后,将该数据块标记为“更改”,并更新该数据块的写入次数。
当所述非易失性存储器中具有多个写入次数相同且标记为“空闲”的数据块时,优先存入所述非易失性存储器中读取次数较少、写入次数相同且标记为“空闲”的的数据块。
将数据从所述非易失性存储器存入所述磁盘时,优先将所述非易失性存储器中写入次数较少且标记为“更改”的数据块中的数据存入所述磁盘。存储完成后,将该数据块标记为“空闲”。
将所述非易失性存储器中所有标记为“更改”的数据块按照写入次数的多少分成多个先入先出队列。每个队列中的数据块的写入次数在一定范围内,不同队列中的数据块的写入次数的范围均不重合。
在更换非易失性存储器时,将所述非易失性存储器中所有标记为“更改”的数据块中的数据都存入所述磁盘。存储完成后,将该数据块标记为“空闲”。
在所述高速缓存中找到需要读取的数据时,将需要读取的数据所在的数据块的读取次数加1。
在所述高速缓存中未找到需要读取的数据,在所述非易失性存储器中找到需要读取的数据时,将需要读取的数据传送给计算机,并将存储需要读取的数据的数据块的读取次数加1。还将需要读取的数据存入所述高速缓存中标记为“空闲”的数据块,并将该数据块的读取次数和写入次数均设为1。
在所述高速缓存和所述非易失性存储器中均未找到需要读取的数据,在所述磁盘中找到需要读取的数据时,将需要读取的数据传送给计算机。还将需要读取的数据存入所述非易失性存储器中标记为“空闲”的数据块,并将该数据块的读取次数和写入次数均加1。还将需要读取的数据存入所述高速缓存中标记为“空闲”的数据块,并将该数据块的读取次数和写入次数均设为1。
所述磁盘在一定时间内无读写操作时,将所述磁盘调至节能状态或停止状态;所述磁盘在停止状态中接到读写指令时,退出停止状态。所述磁盘的节能状态包括将所述磁盘的转速降低;所述磁盘的停止状态包括将所述磁盘的转速降为零,将所述磁盘的磁头停放在非数据存储区。
所述磁盘在节能状态中,磁盘转速随着磁盘数据吞吐量的增加而增加,随着磁盘数据吞吐量的减少而减少;磁盘转速还随着磁盘读写频率的增加而增加,随着磁盘读写频率的减少而减少。换句话说,节能状态中的磁盘转速同时受到磁盘数据吞吐量和磁盘读写频率的影响。例如,磁盘转速和磁盘数据吞吐量、磁盘读写频率可按下表进行控制:
当所述非易失性存储器中的数据块的写入次数或读取次数达到预订值时,所述方法将该数据块加以屏蔽,不再使用该数据块。
当所述非易失性存储器中的数据块的写入次数或读取次数达到预订值、且该数据块标记为“更改”时,将该数据块中的数据存入所述磁盘后再加以屏蔽,不再使用该数据块。
当所述非易失性存储器中全部数据块的平均写入次数或平均读取次数达到预订值时,提示用户更换所述非易失性存储器。
当删除所述磁盘中的数据时,同时将该数据从所述高速缓存和所述非易失性存储器中删除。
通过上述混合硬盘的数据存取方法,本发明可以有效提升硬盘的数据传输效率,试验证实本发明所述混合硬盘的连续数据传输效率为传统硬盘的数倍乃至数十倍。另外,本发明还可以降低硬盘的能耗,最大降低幅度可达到U盘(便携式闪存盘)的水平。试验证实,在当前微电子技术水平和通用计算机环境下,普通硬盘的能耗通常在12瓦特以上,而本发明所述混合硬盘的最低能耗仅为2瓦特左右。并且,由于本发明采用高速缓存存储频繁读写的数据,因此减少了对非易失性存储器的读写操作;本发明采用的数据存取方法又对非易失性存储器中的各数据块进行较为均衡的读写操作,因此延长了非易失性存储器的使用寿命;本发明还通过二级缓存(高速缓存和非易失性存储器)减少了对磁盘的读写操作,因此延长了磁盘的使用寿命。