CN101763222A - 数据读写缓冲方法及缓冲装置 - Google Patents
数据读写缓冲方法及缓冲装置 Download PDFInfo
- Publication number
- CN101763222A CN101763222A CN200810241541A CN200810241541A CN101763222A CN 101763222 A CN101763222 A CN 101763222A CN 200810241541 A CN200810241541 A CN 200810241541A CN 200810241541 A CN200810241541 A CN 200810241541A CN 101763222 A CN101763222 A CN 101763222A
- Authority
- CN
- China
- Prior art keywords
- data
- buffer
- cache entry
- read
- flag
- 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.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种数据读写缓冲方法及缓冲装置,由存储介质中写入保留的扇区数据至缓冲区,由系统写入更新的数据至缓冲区,构成用于写入存储介质中的整个缓冲区数据。应用本发明的方法和装置,在数据缓冲读写时,仅对存储介质中未更新部分的数据进行读取,也即在写入数据时只有在需要读取数据的时候才读取,避免绝大多数不必要的读写切换,在不增加内存占用量的情况下,实现数据写入或刻录速度的大幅度提升。
Description
【技术领域】
本发明涉及数据处理领域,特别涉及其中的数据读写缓冲方法和装置。
【背景技术】
在可擦除光盘上实现通用磁盘格式(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;
如判断对应该缓冲项的有效旗标未被置位;则从存储介质中读出对应缓冲项的数据;
将对应的缓冲项的有效旗标置位;
更新缓冲区Buffer的访问时间;
将缓冲项的数据返回。
上述的数据读写缓冲方法,如果未命中缓冲区Buffer,则执行如下步骤:
51)查找是否有未使用的缓冲区Buffer,如果找到,则执行步骤52);如果未找到,则执行步骤53);
52)根据写入数据的地址,计算出缓冲区Buffer的首地址,转而执行所述步骤23)、24);
53)根据缓冲区Buffer的上一次访问时间,找到一个最久未访问的缓冲区Buffer;
54)判断是否有缓冲项的不洁旗标被置位;
55)如果有缓冲项的不洁旗标被置位,则将有效旗标和不洁旗标都为0的缓冲项对应的存储介质扇区数据读出来;
56)将缓冲区Buffer的数据写入到存储介质上;
57)将缓冲区Buffer的首地址置为一预定值,将有效旗标和不洁旗标复位;转而执行步骤52)。
在所述步骤55)中,如果未有缓冲项的不洁旗标被置位,则转而执行所述步骤57)。
所述命中缓冲区Buffer的过程包括如下步骤:根据写入数据的地址W、各个Buffer的首地址M,查找是否有包含这个写入地址的Buffer。命中判断条件是:
M≠0xFFFFFFFF且W≥M且W≤M+31
其中0xFFFFFFFF为未被使用的缓冲区Buffer的首地址赋值。
同时,本发明提出了一种数据读写缓冲装置,其用于写入存储介质中的缓冲区数据包括由存储介质中写入的保留扇区数据,和由系统中写入的更新数据。
上述的数据读写缓冲装置,写数据流程包括如下步骤:
读入扇区数据;
根据读入数据的地址,命中缓冲区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个BufferItem对应的光盘扇区地址分别为M、M+1、M+2、…、M+31。如果Buffer未被使用,首地址M赋值为0xFFFFFFFF。
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≠0xFFFFFFFF,
●W≥M
●W≤M+31
如果找到了符合条件的Buffer,执行第2)步;如果没有找到符合条件的Buffer,就执行第4)步。
2)根据下式计算Buffer Item在Buffer中的索引INDEX:
3)将数据写入到这个Bufer Item中,并将Buffer Item的Valid Flag和Dirty Flag置位。然后执行第11)步。
4)从所有Buffer中查找没有被使用的Buffer,也就是首地址M为0xFFFFFFFF的Buffer。如果找到了一个未使用的Buffer,执行第5)步,如果没有找到未被使用的Buffer,执行第6)步。
5)通过写入数据的地址W,计算Buffer的首地址M:
6)根据各个Buffer的上一次访问时,找出一个最久未被访问的Buffer。
7)判断这个找到的Buffer中,是否有Buffer Item的Dirty Flag被置位。Dirty Flag被置位,说明有由系统中读入的数据需要更新到光盘上。如果找到的Buffer中没有Dirty Flag被置位,执行第8)步,如果找到的Buffer中有Dirty Flag被置位,就执行第9)步。
8)将此Buffer的首地址M置为0xFFFFFFFF,Valid Flag和Dirty Flag复位。然后执行第5)步。
9)将Valid Flag和Dirty Flag都为0的Buffer Item对应的光盘数据读取出来。Valid Flag为1,或者是Buffer Item中的数据与光盘上的据一致,或者是Buffer Item中的数据是需要更新到光盘上的。Dirty Flag为1,说明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≠0xFFFFFFFF,
●W≥M
●W≤M+31
如果找到了符合条件的Buffer,执行第2)步;如果没有找到符合条件的Buffer,就执行第4)步。
2)判断对应Buffer Item的Valid Flag是否已经被置位;是,则执行第12)步;否,则执行第10)步;
3)从所有Buffer中查找没有被使用的Buffer,也就是首地址M为0xFFFFFFFF的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置为0xFFFFFFFF,Valid Flag和Dirty Flag复位;
9)根据写入数据的地址,计算出Buffer首地址;
10)从光盘上读出对应Buffer Item的数据;
11)将对应的Buffer Item的Valid Flag置位;
12)更新Buffer的访问时间,将Buffer Item的数据返回。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。例如,本发明不仅可以用在光盘刻录方面,所有存储介质都可以使用本发明的缓存控制方法。本发明中使用的Buffer数量,以及Buffer Item数量,可以根据实际情况进行调节,以适应各种不同的环境。
Claims (12)
1.一种数据读写缓冲方法,其特征是:由存储介质中写入保留的扇区数据至缓冲区,由系统中写入更新的数据至缓冲区,构成用于写入存储介质中的缓冲区数据。
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≠0xFFFFFFFF且W≥M且W≤M+31
其中0xFFFFFFFF为未被使用的缓冲区Buffer的首地址赋值。
9.一种数据读写缓冲装置,其特征是:其用于写入存储介质中的缓冲区数据包括由存储介质中写入的保留扇区数据,和由系统中写入的更新数据。
10.如权利要求9所述的数据读写缓冲装置,其特征是:写数据流程包括如下步骤:
读入扇区数据;
根据读入数据的地址,命中缓冲区Buffer;
将数据写入对应的缓冲项中;
将对应该缓冲项的状态进行标识;
更新缓冲区Buffer的访问时间;
11.如权利要求10所述的数据读写缓冲装置,其特征是:所述将对应该缓冲项的状态进行标识的步骤包括:使用有效旗标来标识数据是否有效,在写入数据到缓冲项时,或者在从存储介质中读取数据到缓冲项中时,有效旗标置位;使用不洁旗标来标识数据是否需要更新到存储介质上,在由系统写入数据到缓冲项时,不洁旗标置位。
12.如权利要求11所述的数据读写缓冲装置,其特征是:其读数据流程包括如下步骤:
读取扇区数据;
根据写入数据的地址,命中缓冲区Buffer;
如判断对应该缓冲项的有效旗标未被置位;则从存储介质中读出对应缓冲项的数据;
将对应的缓冲项的有效旗标置位;
更新缓冲区Buffer的访问时间;
将缓冲项的数据返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810241541A CN101763222A (zh) | 2008-12-18 | 2008-12-18 | 数据读写缓冲方法及缓冲装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810241541A CN101763222A (zh) | 2008-12-18 | 2008-12-18 | 数据读写缓冲方法及缓冲装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101763222A true CN101763222A (zh) | 2010-06-30 |
Family
ID=42494406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810241541A Pending CN101763222A (zh) | 2008-12-18 | 2008-12-18 | 数据读写缓冲方法及缓冲装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101763222A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107608630A (zh) * | 2017-09-07 | 2018-01-19 | 四川九洲北斗导航与位置服务有限公司 | 数据读写方法及装置 |
CN108416000A (zh) * | 2018-02-27 | 2018-08-17 | 百度在线网络技术(北京)有限公司 | 数据展示方法、装置、设备及存储介质 |
CN112083880A (zh) * | 2020-08-20 | 2020-12-15 | 厦门市美亚柏科信息安全研究所有限公司 | 一种手机系统文件在线修改方法、装置及存储介质 |
-
2008
- 2008-12-18 CN CN200810241541A patent/CN101763222A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107608630A (zh) * | 2017-09-07 | 2018-01-19 | 四川九洲北斗导航与位置服务有限公司 | 数据读写方法及装置 |
CN107608630B (zh) * | 2017-09-07 | 2020-09-04 | 四川九洲北斗导航与位置服务有限公司 | 数据读写方法及装置 |
CN108416000A (zh) * | 2018-02-27 | 2018-08-17 | 百度在线网络技术(北京)有限公司 | 数据展示方法、装置、设备及存储介质 |
CN112083880A (zh) * | 2020-08-20 | 2020-12-15 | 厦门市美亚柏科信息安全研究所有限公司 | 一种手机系统文件在线修改方法、装置及存储介质 |
CN112083880B (zh) * | 2020-08-20 | 2023-05-16 | 厦门市美亚柏科信息安全研究所有限公司 | 一种手机系统文件在线修改方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI380290B (en) | Disc drive and method of enhancing command executing performance thereof | |
US7515500B2 (en) | Memory device performance enhancement through pre-erase mechanism | |
KR100744122B1 (ko) | 하이브리드 하드디스크 드라이브의 제어 방법, 이에 적합한기록 매체 그리고 이에 적합한 장치 | |
USRE44128E1 (en) | Adaptive resource controlled write-back aging for a data storage device | |
US20070168606A1 (en) | Storage device using nonvolatile cache memory and control method thereof | |
US7757041B2 (en) | Storage device using nonvolatile cache memory and control method thereof | |
CN101162608B (zh) | 闪存的存储块的标识方法 | |
CN102622309B (zh) | 数据安全擦除方法及装置 | |
JP5681511B2 (ja) | 情報記録装置及び情報記録方法 | |
CN1645516B (zh) | 用于闪速存储器的数据恢复设备和方法 | |
CN101981551B (zh) | 用于高速缓存利用的设备和方法 | |
US7564721B2 (en) | Method and apparatus for improving storage performance using a background erase | |
CN106874213B (zh) | 一种融合多种机器学习算法的固态硬盘热数据识别方法 | |
CN102272855A (zh) | 存储器控制器及存储器管理方法 | |
RU2001120348A (ru) | Устройство доступа к полупроводниковой карте памяти, компьютерно-считываемый носитель записи, способ инициализации и полупроводниковая карта памяти | |
CN103092766A (zh) | 一种用于nand flash的均衡损耗实现方法 | |
JP2007529842A5 (zh) | ||
CN102135942A (zh) | 一种存储设备中实现损耗均衡的方法及存储设备 | |
CN110674056B (zh) | 一种垃圾回收方法及装置 | |
CN103631528A (zh) | 用固态硬盘作为缓存器的读写方法、系统及读写控制器 | |
CN101114508A (zh) | 信息记录装置及其控制方法 | |
CN115129262A (zh) | 一种固态硬盘垃圾回收方法、装置、设备及介质 | |
CN111580754A (zh) | 一种写友好的闪存固态盘缓存管理方法 | |
CN102981975B (zh) | 闪存数据的管理方法和系统 | |
CN101763222A (zh) | 数据读写缓冲方法及缓冲装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100630 |