当前位置: 首页 > 专利查询>英特尔公司专利>正文

对盘驱动事务处理采用存取日志制造技术

技术编号:2877638 阅读:131 留言:0更新日期:2012-04-11 18:40
盘驱动程序(10)包括一个存取日志(20),用于记录与硬盘驱动器(30)的最近的交互。在向内存(40)缓存写的写操作期间,在存取硬盘驱动器(30)之前可以参考存取日志(20)。在存取硬盘驱动器(30)期间的预取额外数据的读操作期间也参考存取日志(20)。在确定是否要预取时,考虑由操作系统(60)使用额外的高速缓存。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及盘驱动程序,更具体来说,涉及在盘驱动器操作期间存储缓冲器的使用。
技术介绍
在计算机系统中,设备驱动程序是控制硬件设备的软件程序。例如,带有键盘、鼠标和硬盘驱动器的计算机系统可包括有键盘驱动程序、鼠标驱动程序和硬盘驱动程序。在基于个人电脑的系统中,设备驱动程序通常接合在其它软件程序与由设备驱动程序控制的设备之间。操作系统中通常包括各种设备驱动程序,尽管新的设备驱动程序例如可以在加载新硬件设备时被装入计算机系统。操作系统与设备驱动程序协作,让特定设备服务请求。例如,当用户指示操作系统“加载”或“执行”应用程序时,该应用程序通常被存储在硬盘驱动器上。应用程序的“加载”实质上是一个请求,要求从硬盘驱动器读取该应用程序并将该程序写入内存。应用程序然后可以从内存运行。操作系统于是将该读请求发送到服务硬盘驱动器的盘驱动程序。盘驱动程序将“加载应用程序”的命令翻译成硬盘驱动程序命令,以从应用程序的存储位置提取数据。例如,盘驱动程序可以发出“读扇区”命令,标识应用程序被存储在硬盘驱动器上什么地方以及应用程序要被传送到内存中的什么地方。盘驱动程序因此起着请求程序与硬盘驱动器之间的翻译器的作用。从内存向硬盘驱动器传送的写操作的操作也类似。无论是读操作还是写操作,盘驱动器存取通常比内存存取慢得多。因此,除了翻译特定的软件请求,盘驱动程序还分配一部分内存-有时称作高速缓存或缓冲器,以减少硬盘驱动器存取次数,由此改善系统性能。例如,当作出对特定扇区或扇区组的读请求时,盘驱动程序可以将另外的未被请求的扇区“预取”到内存的缓冲器部分中。预取预期随后将有对这些尚未被请求的扇区的请求。对于写操作来说,缓冲器可以被用来存储写数据。为了使硬盘驱动器存取次数最小化,盘驱动程序还可以在内存缓冲器中为一些写操作存储数据。然后,在晚些时候,盘驱动程序可以对硬盘驱动器执行一次写操作,以一次性完成所有的写操作。然而,盘驱动程序不可能总是将来会从出现那些硬盘驱动器请求。在有些情况中,最优化性能的试图的结果会适得其反。如果一批被预取的扇区实际上总是不被从内存中检索,则会降低性能。只是因为,检索另外的未被使用的扇区是需要时间的。同样,一个被缓存的写,如果不马上与另一个写组合,则只会延迟希望对硬盘驱动器的写,由此产生的风险例如是,如果计算机系统被无意地断电,则数据可能丢失。所以,继续需要一种改善读预取或写缓冲器操作或二者的性能的盘驱动程序。附图说明图1是按照一个实施例的系统的框图;图2A和2B是表示按照一个实施例的写缓存的示意图;图3A和3B是表示按照一个实施例的读预取的示意图;图4是表示按照一个实施例的存取日志(log)的示意图;图5是按照一个实施例的运行中的系统的流程图;图6是按照一个实施例的系统的框图。具体实施例方式按照若干实施例,存取日志可以在可能的情况下辅助盘驱动程序减少硬盘驱动器存取,以改善驱动器性能。存取日志存储关于对硬盘驱动器的最近存取的信息。驱动程序可以在参考存取日志后智能地执行读预取和/或写缓冲器操作,这样可以避免对硬盘驱动器的不必要的存取,还让硬盘驱动程序得到所请求的服务。在图1中,按照一个实施例,系统100包括盘驱动程序10,它包含存取日志20。盘驱动程序10是操作系统60的一部分。如在
技术介绍
部分所解释的那样,盘驱动程序10包括用于与硬盘驱动器30通信的命令。在一个实施例中,系统100是基于处理器的系统100,诸如个人计算机系统。相应地,盘驱动程序10、操作系统60以及其它软件是由处理器(未予示出)执行的,这种处理器例如是基于X86的微处理器、微控制器、奔腾微处理器,等等。系统100还包括内存40和硬盘驱动器30。在计算机系统100通电期间,内存40可以存储包含存取日志20的盘驱动程序10、操作系统软件60以及应用程序。内存可以是多种随机存取存储器中的一种,例如动态随机存取存储器(DRAM)、闪存、同步DRAM(SDRAM)、以及静态RAM(SRAM)、单直插式内存模块(SIMM)、或双直插式内存模块(DIMM)。硬盘驱动器30可以是集成驱动电子(IDE)驱动器、增强型IDE(EIDE)、小型计算机系统接口(SCSI)驱动器、增强型小型器件接口(ESDI)驱动器、冗余独立盘阵列(RAID)驱动器等等。硬盘驱动器30通过总线26与内存40相连。操作系统60和盘驱动程序协作,服务存取硬盘驱动器30的请求。对于读盘操作来说,所请求的数据从硬盘驱动器30经总线26被传送到内存40。对于写盘操作来说,所请求的数据从内存40经总线26被传送到硬盘驱动器30。所以,操作系统60和盘驱动程序10可以控制硬盘驱动器30与内存40之间的传送。在有些实施例中,存取日志20可以被盘驱动程序10用于读盘和写盘这两种操作。在一个实施例中,存取日志20含有关于对硬盘驱动器30的最近存取的信息。盘驱动程序10可以用存取日志20的“驱动器存取历史”来评估某操作是不是写缓存或读预取操作的较好的候选对象。例如,存取日志20可以含有对事务处理的类型的指示,即对硬盘驱动器30执行的是读操作还是写操作。另外,存取日志20还可以指示硬盘驱动器30的哪个区或哪些区被存取过。存取日志20也可以含有对存取时间的指示。在有些实施例中,存取日志20是有时间限制的,可用的是预定时间期间的驱动器活动历史。在其它实施例中,存取日志20是有大小限制的,只保持预定数量的事务处理。这样一种存取日志20可以像先进先出(FIFO)存储器那样工作,以最新的数据替换最老的数据。在图2A中,内存40可以包括一个名为写数据42的区,该区例如用于执行写盘操作。写数据42包括数据块44、46和48。数据块44、46和48可以代表扇区,其中一个扇区一般有512个字节;也可以代表扇区分组,或者代表其它原子数据单元。在图2A中,为了传送写数据42,可以进行对硬盘驱动器30的三次独立的存取。在一个写操作中,可以将块44从内存40传送到硬盘驱动器30。在第二个写操作中,可以将块46从内存40传送到硬盘驱动器30。在第三个写操作中,可以将块48从内存40传送到硬盘驱动器30。在图2B中,内存40包括写缓冲器50。在有些实施例中,写缓冲器50可以起着临时存储位置的作用,用于存储要送往硬盘驱动器30的数据。通过使用写缓冲器50,盘驱动程序10可以将对硬盘驱动器30的三次存取转换成一次存取。在第一个写操作中,将块44从内存40传送到写缓冲器50。作为内存至内存的传送,这个操作一般比内存至盘的操作快得多。在第二个写操作中,将块46从内存40传送到写缓冲器50,作为第二个内存至内存的传送。在第三个写操作中,将块48从内存40的写数据42部分传送到写缓冲器50。在后来的某个时间,盘驱动程序10可以指令进行第四个写操作,这时要在写缓冲器50与硬盘驱动器30之间执行。由于在先的三次内存至内存传送,该在内存40与硬盘驱动器之间的传送可以包括被存储在写缓冲器50中的全部三个块。盘驱动程序10可以因为写缓冲器50满、有“保存”(save)操作被启动、或者根据其它条件而执行该第四个写操作。当然,图2B中所示的传送对一定的块44、46和48来说是效率更高的。例如,如果块44、46、48是在硬盘驱动器30上的相邻位置存储本文档来自技高网
...

【技术保护点】
一种方法,包含:接收一个要向盘驱动器的某区写数据的请求;检索盘驱动器的以前被写区的存取日志;和根据存取日志向内存写数据。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:AD胡夫曼
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术