数据读写缓冲方法及缓冲装置的制作方法

文档序号:6471958阅读:197来源:国知局
专利名称:数据读写缓冲方法及缓冲装置的制作方法
数据读写缓冲方法及缓冲装置
技术领域
本发明涉及数据处理领域,特别涉及其中的数据读写缓冲方法和装置。
背景技术
在可擦除光盘上实现通用磁盘格式(UDF)文件系统,写入数据需要使用数据包写入(Packet-Writing)方式,常用的可擦除光盘包括CD-RW、 DVD+/-RW、 DVD-RAM。Packet-Writing方式中,每次写入的数据的扇区数必须是一个Packet,每次写入数据的首地址必须是Packet的整数倍。目前,Packet-Writing的实现是一个Read-Modify-Write过程,在连续写入大量数据的时候,会出现每次写入32个扇区数据,就需要一次Read/Write的切换,极大地影响写入性能,而且光驱频繁地进行Read/Write切换,会降低光驱的使用寿命。图1所示为一种现有技术的实现方式。例如,在超声系统中,可擦写光盘上实现UDF文件系统,存储大量病人信息到光盘,使用Read-Modify-Write过程实现的Packet-Writing,必然导致频繁地在光盘上进行读写切换,从而影响病人信息的刻录速度。
例如,以现有的某款刻录机刻录4速DVD+RW光盘为例,使用这种方法,连续刻录100M数据,需要大约800秒,也就是说,刻录速度是0. 125M/秒。这个速率在一定程度上限制了可编辑UDF光盘功能的开发和实现。

发明内容
本发明的主要目的是在存储大量数据时避免频繁的读/写切换,提高数据读写的效率。 为实现上述目的,本发明提出一种数据读写缓冲方法,其特征是由存储介质中写入保留的扇区数据至缓冲区,由系统中写入更新的数据至缓冲区,构成用于写入存储介质中的缓冲区数据。
上述的数据读写缓冲方法,写数据流程包括如下步骤
21)读入扇区数据; 22)根据读入数据的地址,命中缓冲区Buffer ;
23)将数据写入对应的缓冲项中;
24)将对应该缓冲项的状态进行标识;
25)更新缓冲区Buffer的访问时间。 上述的数据读写缓冲方法,所述将对应该缓冲项的状态进行标识的步骤包括使用有效旗标来标识数据是否有效,在写入数据到缓冲项时,或者在从存储介质中读取数据到缓冲项中时,有效旗标置位;使用不洁旗标来标识数据是否需要更新到存储介质上,在由系统写入数据到缓冲项时,不洁旗标置位。
上述的数据读写缓冲方法,其读数据流程包括如下步骤
读取扇区数据; 根据写入数据的地址,命中缓冲区Buffer ;
4
如判断对应该缓冲项的有效旗标未被置位;则从存储介质中读出对应缓冲项的数据; 将对应的缓冲项的有效旗标置位;
更新缓冲区Buffer的访问时间;
将缓冲项的数据返回。 上述的数据读写缓冲方法,如果未命中缓冲区Buffer,则执行如下步骤 51)查找是否有未使用的缓冲区Buffer,如果找到,则执行步骤52);如果未找到,
则执行步骤53); 52)根据写入数据的地址,计算出缓冲区Buffer的首地址,转而执行所述步骤23)、24); 53)根据缓冲区Buffer的上 一 次访问时间,找到 一 个最久未访问的缓冲区Buffer j 54)判断是否有缓冲项的不洁旗标被置位; 55)如果有缓冲项的不洁旗标被置位,则将有效旗标和不洁旗标都为0的缓冲项对应的存储介质扇区数据读出来; 56)将缓冲区Buffer的数据写入到存储介质上; 57)将缓冲区Buffer的首地址置为一预定值,将有效旗标和不洁旗标复位;转而执行步骤52)。 在所述步骤55)中,如果未有缓冲项的不洁旗标被置位,则转而执行所述步骤57)。 所述命中缓冲区Buffer的过程包括如下步骤根据写入数据的地址W、各个Buffer的首地址M,查找是否有包含这个写入地址的Buffer。命中判断条件是
OxFFFFFFFF且W > M且W《M+31其中OxFFFFFFFF为未被使用的缓冲区Buffer的首地址赋值。 在所述步骤52)中,通过写入数据的地址W,计算缓冲区Buffer的首地址M:
M = L『/32」x32 ,其中的符号L」为向下取整。 同时,本发明提出了一种数据读写缓冲装置,其用于写入存储介质中的缓冲区数据包括由存储介质中写入的保留扇区数据,和由系统中写入的更新数据。
上述的数据读写缓冲装置,写数据流程包括如下步骤
读入扇区数据; 根据读入数据的地址,命中缓冲区Buffer ;
将数据写入对应的缓冲项中;
将对应该缓冲项的状态进行标识;
更新缓冲区Buffer的访问时间。 上述的数据读写缓冲装置,所述将对应该缓冲项的状态进行标识的步骤包括使用有效旗标来标识数据是否有效,在写入数据到缓冲项时,或者在从存储介质中读取数据到缓冲项中时,有效旗标置位;使用不洁旗标来标识数据是否需要更新到存储介质上,在由系统写入数据到缓冲项时,不洁旗标置位。
上述的数据读写缓冲装置,其读数据流程包括如下步骤
读取扇区数据; 根据写入数据的地址,命中缓冲区Buffer ; 如判断对应该缓冲项的有效旗标未被置位;则从存储介质中读出对应缓冲项的数 据; 将对应的缓冲项的有效旗标置位;
更新缓冲区Buffer的访问时间;
将缓冲项的数据返回。 本发明在数据缓冲读写时,仅对存储介质中未更新部分的数据进行读取,也即在 写入数据时只有在需要读取数据的时候才读取,避免绝大多数不必要的读写切换,在不增 加内存占用量的情况下,实现数据写入或刻录速度的大幅度提升。 本发明记录Buffer的使用情况,在连续写入大量数据的时候,根据该使用情况, 绝大多数情况下不需要从光盘上读取数据,使本发明可以避免绝大多数读写切换,写入刻 录速度提升幅度更为显著。 应用本发明的方法,由于读写切换频率降低,可以大幅减少刻录数据时光驱读写 切换次数,可以延长光驱驱动器的寿命,有利于保护驱动器,提高访问外设的可靠性;而且 降低了功耗。使用本发明提出的方法,以背景技术中所提及的刻录机刻录4速DVD+RW光盘 为例,每秒钟能够达到4. 6M/秒,性能整整提高了 36. 8倍。 本发明中使用的Buffer数量,以及Buffer Item数量,可以根据实际情况进行调 节,可以灵活适应于各种不同的环境。 本发明目前投入应用于超声系统中,极大地减少用户导出病人检查数据的时间, 以每天刻录20个病人,每个病人2幅Bitmap图片为例,每天就需要刻录大约90M数据,那 么,使用现有技术实现需要大约720秒,而使用本发明的方法,仅仅需要20多秒就可以刻录 完成。


图1是现有技术中采用Packet-Wrting实现方式的流程图;
图2是本发明实施例的缓存概要图;
图3是本发明实施例的写数据流程图;
图4是本发明实施例的读数据流程图。
具体实施方式
下面通过具体的实施例并结合附图对本发明作进一步详细的描述。
本例中以可擦写光盘读写存储为例,如图2所示,高速缓冲存储器Cache —共有5 个缓冲区Buffer,每个Buffer由32个2048字节组成,这样,每个Buffer中可以容纳光盘的 32个扇区的数据。以下,将Buffer中的一个2048字节区域当作一个缓冲项Buffer Item。
每一个Buffer都有一个首地址M,此首地址M是Buffer中第一个Buffer Item对 应的光盘扇区地址。那么,32个Bufferltem对应的光盘扇区地址分别为M、M+l、M+2、…、 M+31 。如果Buffer未被使用,首地址M赋值为OxFFFFFFFF。 Buffer中每一个Buffer Item使用一个有效旗标Valid Flag来标识数据是否有效。在写入数据到Buffer Item时,或者在从光盘中读取数据到Buffer Item中时,Valid Flag置位。 Buffer中每一个Buffer Item使用一个不洁旗标Dirty Flag来标识数据是否需 要更新到光盘上。在写入数据到Buffer Item时,Dirty Flag置位。 每一个Buffer拥有一个属性,用于记录此Buffer最后被访问的时间,依据这个属 性,可以从Cache中找到最久未被访问的Buffer。
图3描述了写入数据的过程 1)根据写入数据的地址W、各个Buffer的首地址M,查找是否有包含这个写入地址 的Buffer。判断条件是
參M - OxFFFFFFFF,
參W > M
參W《M+31 如果找到了符合条件的Buffer,执行第2)步;如果没有找到符合条件的Buffer, 就执行第4)步。 2)根据下式计算Buffer Item在Buffer中的索引INDEX :
/M)^T =『—L『/32」x32,其中符号L」为向下取整。 3)将数据写入到这个Bufer Item中,并将Buffer Item的Valid Flag和Dirty Flag置位。然后执行第11)步。 4)从所有Buffer中查找没有被使用的Buffer,也就是首地址M为OxFFFFFFFF的 Buffer。如果找到了一个未使用的Buffer,执行第5)步,如果没有找到未被使用的Buffer, 执行第6)步。 5)通过写入数据的地址W,计算Buffer的首地址M : M^『/32」x32,其中的符号L」为向下取整,之后执行第3)步。 6)根据各个Buffer的上一次访问时,找出一个最久未被访问的Buffer。 7)判断这个找到的Buffer中,是否有Buffer Item的Dirty Flag被置位。Dirty
Flag被置位,说明有由系统中读入的数据需要更新到光盘上。如果找到的Buffer中没有
Dirty Flag被置位,执行第8)步,如果找到的Buffer中有Dirty Flag被置位,就执行第
9)步。 8)将此Buffer的首地址M置为OxFFFFFFFF, Valid Flag和Dirty Flag复位。然 后执行第5)步。 9)将Valid Flag和Dirty Flag都为0的Buffer Item对应的光盘数据读取出来。 Valid Flag为l,或者是Buffer Item中的数据与光盘上的据一致,或者是Buffer Item中 的数据是需要更新到光盘上的。Dirty Flag为l,说明Buffer Item中的数据是由系统中 读入需要更新到光盘上的。在由系统中连续写入大量数据的时候,绝大多数情况下,所有的 Buffer Item的Dirty Flag将会是被置位的,这种情况下,就不需要从光盘上读取数据,这 就是本例可以避免绝大多数读写切换的关键。 10)将找到的Buffer中的数据写入到光盘;然后执行第8)步。
11)更新Buffer的访问时间,然后返回成功。 图4描述了读取数据的流程。其中,与写入数据不一样是,从光盘上读取数据到Buffer Item后,只将Valid Flag置位。将Valid Flag置位之后,以后在需要读取这个 Buffer Item对应的数据的时候,就不需要再去读取光盘了。读取数据的流程如下
1)根据写入数据的地址W、各个Buffer的首地址M,查找是否有包含这个写入地址 的Buffer。判断条件是
參M - OxFFFFFFFF,
參W > M
參W《M+31 如果找到了符合条件的Buffer,执行第2)步;如果没有找到符合条件的Buffer, 就执行第4)步。 2)判断对应Buffer Item的Valid Flag是否已经被置位;是,则执行第12)步; 否,则执行第10)步; 3)从所有Buffer中查找没有被使用的Buffer,也就是首地址M为OxFFFFFFFF的 Buffer。如果找到了一个未使用的Buffer,执行第9)步,如果没有找到未被使用的Buffer, 执行第4)步。 4)根据各个Buffer的上一次访问时间,找出一个最久未被访问的Buffer。
5)判断是否有Buffer Item的Dirty Flag被置位;如是,则执行下一步;如否,则 执行第8)步; 6)将Valid Flag和Dirty Flag都为0的Buffer Item对应的光盘扇区数据读出 来; 7)将Buffer数据写入到光盘上; 8)将此Buffer的首地址M置为OxFFFFFFFF, Valid Flag和Dirty Flag复位; 9)根据写入数据的地址,计算出Buffer首地址; 10)从光盘上读出对应Buffer Item的数据; 11)将对应的Buffer Item的Valid Flag置位; 12)更新Buffer的访问时间,将Buffer Item的数据返回。 以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定 本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在 不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的 保护范围。例如,本发明不仅可以用在光盘刻录方面,所有存储介质都可以使用本发明的缓 存控制方法。本发明中使用的Buffer数量,以及Buffer Item数量,可以根据实际情况进 行调节,以适应各种不同的环境。
权利要求
一种数据读写缓冲方法,其特征是由存储介质中写入保留的扇区数据至缓冲区,由系统中写入更新的数据至缓冲区,构成用于写入存储介质中的缓冲区数据。
2. 如权利要求1所述的数据读写缓冲方法,其特征是写数据流程包括如下步骤21) 读入扇区数据;22) 根据读入数据的地址,命中缓冲区Buffer ;23) 将数据写入对应的缓冲项中;24) 将对应该缓冲项的状态进行标识;25) 更新缓冲区Buffer的访问时间。
3. 如权利要求2所述的数据读写缓冲方法,其特征是所述将对应该缓冲项的状态进行标识的步骤包括使用有效旗标来标识数据是否有效,在写入数据到缓冲项时,或者在从存储介质中读取数据到缓冲项中时,有效旗标置位;使用不洁旗标来标识数据是否需要更新到存储介质上,在由系统写入数据到缓冲项时,不洁旗标置位。
4. 如权利要求3所述的数据读写缓冲方法,其特征是其读数据流程包括如下步骤读取扇区数据;根据读入数据的地址,命中缓冲区Buffer ;如判断对应该缓冲项的有效旗标未被置位;则从存储介质中读出对应缓冲项的数据;将对应的缓冲项的有效旗标置位;更新缓冲区Buffer的访问时间;将缓冲项的数据返回。
5. 如权利要求3或4所述的数据读写缓冲方法,其特征是如果未命中缓冲区Buffer,则执行如下步骤51) 查找是否有未使用的缓冲区Buffer,如果找到,则执行步骤52);如果未找到,则执行步骤53);52) 根据写入数据的地址,计算出缓冲区Buffer的首地址,转而执行所述步骤23)、24)、25);53) 根据缓冲区Buffer的上一次访问时间,找到一个最久未访问的缓冲区Buffer ;54) 判断是否有缓冲项的不洁旗标被置位;55) 如果有缓冲项的不洁旗标被置位,则将有效旗标和不洁旗标都为0的缓冲项对应的存储介质扇区数据读出来;56) 将缓冲区Buffer的数据写入到存储介质上;57) 将缓冲区Buffer的首地址置为一预定值,将有效旗标和不洁旗标复位;转而执行步骤52)。
6. 如权利要求5所述的数据读写缓冲方法,其特征是在所述步骤55)中,如果未有缓冲项的不洁旗标被置位,则转而执行所述步骤57)。
7. 如权利要求3或4所述的数据读写缓冲方法,其特征是所述命中缓冲区Buffer的过程包括如下步骤根据写入数据的地址W、各个Buffer的首地址M,查找是否有包含这个写入地址的Buffer。命中判断条件是M - OxFFFFFFFF且W > M且W《M+31其中OxFFFFFFFF为未被使用的缓冲区Buffer的首地址赋值。
8. 如权利要求5所述的数据读写缓冲方法,其特征是在所述步骤52)中,通过写入数据的地址W,计算缓冲区Buffer的首地址M:似二L『/32」x32,其中的符号L」为向下取整。1
9. 一种数据读写缓冲装置,其特征是其用于写入存储介质中的缓冲区数据包括由存储介质中写入的保留扇区数据,和由系统中写入的更新数据。
10. 如权利要求9所述的数据读写缓冲装置,其特征是写数据流程包括如下步骤读入扇区数据;根据读入数据的地址,命中缓冲区Buffer ;将数据写入对应的缓冲项中;将对应该缓冲项的状态进行标识;更新缓冲区Buffer的访问时间;
11. 如权利要求10所述的数据读写缓冲装置,其特征是所述将对应该缓冲项的状态进行标识的步骤包括使用有效旗标来标识数据是否有效,在写入数据到缓冲项时,或者在从存储介质中读取数据到缓冲项中时,有效旗标置位;使用不洁旗标来标识数据是否需要更新到存储介质上,在由系统写入数据到缓冲项时,不洁旗标置位。
12. 如权利要求11所述的数据读写缓冲装置,其特征是其读数据流程包括如下步骤读取扇区数据;根据写入数据的地址,命中缓冲区Buffer ;如判断对应该缓冲项的有效旗标未被置位;则从存储介质中读出对应缓冲项的数据;将对应的缓冲项的有效旗标置位;更新缓冲区Buffer的访问时间;将缓冲项的数据返回。
全文摘要
本发明公开了一种数据读写缓冲方法及缓冲装置,由存储介质中写入保留的扇区数据至缓冲区,由系统写入更新的数据至缓冲区,构成用于写入存储介质中的整个缓冲区数据。应用本发明的方法和装置,在数据缓冲读写时,仅对存储介质中未更新部分的数据进行读取,也即在写入数据时只有在需要读取数据的时候才读取,避免绝大多数不必要的读写切换,在不增加内存占用量的情况下,实现数据写入或刻录速度的大幅度提升。
文档编号G06F3/06GK101763222SQ20081024154
公开日2010年6月30日 申请日期2008年12月18日 优先权日2008年12月18日
发明者李理, 杨燕泉 申请人:深圳迈瑞生物医疗电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1