Bios存储阵列的制作方法

文档序号:6420890阅读:183来源:国知局
专利名称:Bios存储阵列的制作方法
技术领域
本发明涉及一种BIOS存储阵列。
背景技术
存储阵列有助于增加数据存取性能和/或增加容错度。在实施一个或多个RAID(低廉的存储盘的冗余阵列)水平时通常描述这种存储阵列。例如,RAID水平0或RAID 0一般是指包括这样的两个或更多的存储设备的存储阵列其中在该阵列的存储设备上对数据读和写分条(stripe)。在阵列的存储设备上对数据读和写分条可能增加读和写性能,因为基本上并行地存取该阵列的存储设备以满足读或写请求。然而,RAID 0阵列不提供冗余,由此不能增加该阵列的容错度。结果,如果RAID 0阵列的任何存储设备故障,则一般该阵列的所有的数据都会丢失,因为与所失效的存储设备关联的数据散布在整个阵列中。
RAID水平1或RAID 1一般是指包括这样的两个或更多的存储设备的存储阵列其中数据写镜向到每个存储设备。将数据写镜向到该阵列的每个存储设备一般会增加该阵列的容错度,因为如果该阵列的任何存储设备失效,则数据可以仍然从该阵列的另一存储设备中恢复。然而,由于将数据镜向到阵列的其它的存储设备要求附加的数据写,因此镜向数据写可能降低写性能。如果在该阵列的存储设备上对读平衡/分条,则镜向数据可以增加读性能。然而,许多实施方案简单地将所有的读请求指向到该阵列的单个存储设备,并且响应于失效仅从该阵列的其它的存储设备中进行读。
最后,RAID水平0+1或RAID 0+1一般是指包括这样的四个或更多的存储设备的存储阵列其中将数据写镜向到分条的阵列。例如,RAID 0+1阵列可以包括第一RAID 0阵列和第二RAID 0阵列。该阵列可以进一步根据RAID 1将数据写到第一RAID 0阵列并可以将该数据镜向到第二RAID 0阵列。此外,镜向数据写一般会增加该阵列的容错度,但是由于附加的写的缘故降低了写性能。然而,通过在它们的相应的阵列的存储设备上对数据分条的第一和第二RAID 0阵列可以弥补某些写性能降低。


通过在附图中举例的方式而非限制性的方式示出了在此所描述的本发明。为说明的清楚简洁,在附图中所示的元件不必按比例绘制。例如,为了清楚,某些元件的尺寸相对于其它的元件尺寸放大了。此外,根据需要在所有的附图中重复某些参考标号以指示对应的或类似的元件。
附图1所示为至少包括一个存储设备的实例性计算设备。
附图2所示为附图1的计算设备的实例性存储阵列。
附图3所示为初始化附图2的阵列的实例性方法。
附图4所示为从附图2的阵列中读出和写到其中的实例性方法。
附图5所示为附图1的计算设备的另一实例性存储阵列。
附图6所示为初始化附图5的阵列的实例性方法。
附图7所示为从附图5的阵列中读出和写到其中的实例性方法。
具体实施例方式
在下文的详细描述中,描述许多特定的细节以完整地理解本发明。然而,可以不需要这些特定的细节而实施本发明。在其它的情况下,没有详细描述十分公知的方法、程序、部件和电路以便突出本发明。此外,虽然某些实施例并不限于这些特定的实例,但是仍然给出实例性的尺寸/型号/数值/范围。
在本说明书中“一个实施例”、“一种实施例”、“一种实例性实施例”等是指所描述的实施例可以包括特定的特征、结构或特性,但每个实施例可以不必包括特定的特征、结构或特性。此外,这种术语并不必指相同的实施例。此外,在结合一种实施例描述特定的特征、结构或特性时,建议在本领域普通技术人员的知识范围内结合其它的实施例实施这种特征、结构或特性,不管是否清楚地描述了它。
此外,在此使用术语“第一”、“第二”、“第三”等作为标记以区别类似地命名的部件和/或操作。具体地说,这种术语不用于表示和也不意味着表示部件/或操作的顺序。此外,这种术语不用于表示和也不意味着表示一个部件和/或操作具有比其它的部件和/或操作更重要。
附图1示出了计算设备100的实例性实施例。计算设备100可以包括通过处理器总线耦合到芯片组104的一个或多个处理器1021...102P。芯片组104一般通过包括芯片组104的芯片或一个或多个封装的集成电路设备将一个或多个处理器1021...102P与存储器106、固件108、存储设备(SD)控制器110、一个或多个存储设备1121...112D和其它的设备114(例如,鼠标、键盘、视频控制器、软盘、网络接口控制器、调制解调器等)互联。具体地说,通过各种桥路和总线可以将其它的设备114耦合到芯片组104,比如外设部件互连(PCI)总线、加速图形端口(AGP)总线、通用串行总线(USB)总线、低引线计数(LPC)总线、其它的I/O总线和/或相关的桥路。
SD控制器110一般提供从通过一种或多种总线耦合到SD控制器110的存储设备1121...112D中读取数据或将数据写入到其中的接口。在一个实施例中,SD控制器110嵌入在芯片组104中。然而,在另一实施例中,SD控制器110与芯片组104分离,并且通过插入在计算设备100的插槽(例如,PCI(外设部件互连)插槽、PCI Epress插槽、ISA(工业标准结构)插槽和/或某些其它类型的外设部件的互联)中的内插卡可以提供它。此外,通过由存储设备1121...112D所支持的存储接口协议SD控制器110可以与存储设备1121...112D接口。例如,SD控制器110和存储设备1121...112D可以支持如下的一个或多个接口协议IDE(集成驱动电子技术)、ATA(高级技术附接)、串行ATA、SCSI(小型计算机系统接口)和/或串行SCSI。
固件108可以包括基本输入/输出系统(BIOS)代码116。BIOS 116可以包括一个或多个处理器1021...102P可以执行以存取并初始化计算设备100的部件的指令和程序。在一个实施例中,BIOS 116可以包括一个或多个处理器1021...102P可以执行以初始化一个或多个存储设备1121...112D的SD初始化代码118。此外,BIOS 116可以包括SD处理程序120以从一个或多个存储设备1121...112D中读取数据并将数据写入到一个或多个存储设备1121...112D中。在一个特定的实施例中,SD初始化代码118可以将中断矢量(比如,例如中断矢量13H)与SD处理程序120关联起来。因此,一个或多个处理器1021...102P可以响应软件中断,比如,在x86个人计算机中的软件中断13H,它通常与BIOS代码关联以存取I ED硬盘,来执行SD处理程序120。
存储器106可以包括提供处理器1021...102P可以向其中读和写数据的可寻址的存储单元的一个或多个存储器。具体地说,在一个实施例中,存储器106可以包括BIOS数据区122和操作系统124。一个或多个处理器1021...102P可以执行操作系统124以存取和控制计算设备100的控制部件并给用户提供操作环境以与计算设备100交互作用。此外,存储器106可以使用一种或多种存储器技术实施,例如动态随机存取存储(DRAM)设备、同步随机动态随机存取存储(SDRAM)设备、双数据率(DDR)SDRAM、四倍数据率(QDR)SDRAM设备或其它的易失性或非易失性存储设备。
为方便,BIOS 116、SD初始化代码118、SD处理程序120、操作系统124、引导装入程序和/或其它的软件/固件在此描述为执行一种或多种操作。然而,应该理解的是,计算设备100的硬件(例如处理器1021...102P)可以响应执行BIOS 116、SD初始化代码118、SD处理程序120、操作系统124、引导装入程序和/或其它的软件/固件的指令而执行这种操作。
现在参考附图2,所示的实例性存储阵列200实施RAID 0+1。如图所示,存储阵列200可以包括两个存储设备1121,1122,而常规的RAID 0阵列要求至少四个存储设备。如所描述,第一存储设备1121包括第一部分2021和第二部分2022,第一存储设备1122包括第一部分2041和第二部分2042。一般地,第一存储设备1121的第一部分2021和第二存储设备1122的第一部分2041组合以形成第一RAID 0阵列2061,在其中对在第一部分2021,2041上数据被分条。类似地,第二存储设备1122的第二部分2042和第一存储设备1121的第二部分2022组合以形成第二RAID 0阵列2062,在其中在第二部分2042,2022上数据被分条。此外,第一阵列RAID 0阵列2061和第二RAID 0阵列2062组合以形成在其中第一RAID 0阵列2061的数据被镜向第二RAID 0阵列2062的RAID 1阵列。
例如,如附图2所示,将数据划分为块A...H并写入到阵列200中。作为将块A...H写入到阵列200中的结果,块A...H可以写入到第一RAID0阵列2061中并镜向到第二RAID 0阵列2062。此外,存储设备1121,1122的第一部分2021,2041上可以对写入到第一RAID 0阵列2061的央A...H分条。具体地说,块A,C,E和G可以写入到第一存储设备1121的第一部分2021,块B,D,F和H可以写入到第二存储设备1122的第一部分2041。类似地,在存储设备1121,1122的第二部分2022,2042上可以对写入到第二RAID 0阵列2062的块A...H分条。具体地说,块A,C,E和G可以写入到第二存储设备1122的第二部分2042,块B,D,F和H可以写入到第一存储设备1121的第二部分2022。
在一个实施例中,第一存储设备1121作为主设备耦合到第一IDE总线或通道中,第二存储设备1122作为主设备耦合到第二IDE总线或通道。通过将两个存储设备1121,1122耦合到不同的总线,SD处理程序120可以请求SD控制器110并行或基本并行地存取存储设备1121,1122。与非镜向存储设备系统相比,数据镜向一般使写入到存储设备1121,1122中的字节数加倍,由此使在总线上传输的字节数加倍。然而,在两个存储设备1121,1122和它们相关的总线2081,2082上对数据分条一般提供了具有单个总线和单个存储设备的存储设备系统的两倍的带宽。因此,尽管进行数据镜向,附图2的阵列仍然可以实现与单个存储设备相等效的数据性能。此外,由于在存储设备1121,1122上可以对读请求分条并且并行地服务,因此附图2的RAID 0+1阵列可以实现接近单个存储设备系统的两倍的数据读性能。此外,附图2的阵列可以完美地容许第一存储设备1121或第二存储设备1122的故障,因为一个存储设备的所有的数据都镜向到其它的存储设备。
在附图3中,示出了形成附图2的阵列的实例性方法。在一个实施例中,计算设备100可以响应各种事件(例如,系统加电事件、系统复位事件等)执行附图3的方法。此外,在一个实施例中计算设备100可以在调用操作系统124或用于调用操作系统124的执行的引导装入程序之前执行附图3的方法。
在方块300中,SD初始化代码118可以安装SD处理程序120。在一个实施例中,SD初始化代码可以将SD处理程序120从固件108拷贝到存储器106中并可以将与中断13H相关的中断矢量更新指向到存储在存储器106中的SD处理程序120的进入点。此外,SD初始化代码118可以将与另一中断比如中断40H相关的中断矢量更新以指向在历史上与中断13H已经关联的BIOS 116的常规SD处理程序(未示)的进入点。因此,在一个实施例中的处理器1021...102P可以响应13H执行SD处理程序120并响应中断40H执行常规的SD处理程序。然而,应该理解的是,对于给定的计算机结构,SD初始化代码118可能需要执行附加的和/或不同的操作以将SD处理程序120与特定的中断关联。此外,SD初始化代码118可以将SD初始化代码118与不同的中断和/或多个中断关联。
在方块302中SD初始化代码118可以进一步确定是否存在连接到SD控制器110的至少两个可用的存储设备1121...112D。为此,SD初始化代码118可以执行各种测试和/诊断。例如,SD初始化代码118可以确定SD控制器110的每个通道是否耦合到一个或多个存储设备1121...112D。此外,SD初始化代码118可以执行一种或多种诊断测试以确认耦合到SD控制器110的每个存储设备1121...112D是否正在正确地工作,并且使没有正确地工作的SD控制器110和/或存储设备1121...112D的通道禁止。应该理解的是,这种测试和诊断一般取决于由SD控制器110和存储设备1121...112D所使用的存储技术。结果,SD初始化代码118可能仅支持某些存储技术,并且使用各种测试和诊断技术可以实施它,例如读取存储设备的状态寄存器和/或确定数据是否成功地写入到存储设备和/或从其中读出。
响应确定没有存在至少两个可用的存储设备,在方块304中的SD初始化代码118可以禁止RAID支持并退出。否则,在方块306中SD初始化代码118可以更新BIOS数据区122以给操作系统124报告耦合到SD控制器110的存储设备和/或阵列的数量。在一个实施例中,SD初始化代码118可以报告每个RAID 0+1阵列作为单个存储设备,尽管每个RAID 0+1阵列包括两个存储设备1121...112D。因此,在这种实施例中SD初始化代码118通过将在方块302中获得的可用的存储设备1121...112D的可用数量简单地除以2可以获得存储设备1121...112D的有效数量。因此,如果SD初始化代码118检侧两个存储设备1121,1122,则SD初始化代码118可以更新BIOS数据区122以将单个存储设备报告给操作系统124。
在方块308中SD初始化代码118可以获得存储设备1121...112D的参数。在一个实施例中,SD初始化代码118可以给每个ATA存储设备1121...112D发布IDENTIFY DEVICE命令以获得512字节的设备标识数据。在一个实施例中,设备标识数据可以包括逻辑柱面的数量、逻辑头的数量和每逻辑轨道的逻辑扇区的数量,这些数量一起限定了存储设备112的支持的几何结构。此外,该设备标识数据可以包括逻辑柱面的当前数量、逻辑头的当前数量和每轨道的逻辑扇区的当前数量,这些数量一起限定了存储设备112的支持的当前几何结构。该标识数量也包括扇区的当前存储容量和用户可寻址的扇区的总数,这中的任何一个都可用于确定该存储设备的当前存储容量。此外,该设备标识数据可以包括关于工作参数例如与DMA传输、命令集、PIO模式、功率管理等相关的参数的信息。
在方块310中,SD初始化代码118可以将第一存储设备1121划分为基本相等的两部分2021,2022,并将第二存储设备1122划分为基本相等的两部分2041,2042。在一个实施例中,SD初始化代码118通过给第一存储设备1121发布SET MAX命令可以将第一存储设备1121划分为第一部分2021和第二部分2022,该命令将第一存储设备1121的最大可存取扇区设定到第一存储设备1121的最小部分2021,2022中的扇区的数量。类似地,SD初始化代码118通过给第二存储设备1122发布SETMAX命令可以将第二存储设备1122划分为第一部分2041和第二部分2042,该命令将第二存储设备1122的最大可存取扇区设定到第二存储设备1122的最小部分2041,2042中的扇区的数量。
在方块312中的SD初始化代码118可以基于该设备标识数据初始化存储设备1121,1122和SD控制器110以获得更好的性能。具体地说,SD初始化代码118可以对存储设备1121,1122和SD控制器110进行编程以便实现由存储设备1121,1122和SD控制器110所支持的最高性能设置。例如,SD初始化代码118可以对存储设备1121,1122和SD控制器进行编程以便最快地支持PIO、多字节DMA、超DMA模式等。
在方块314中SD初始化代码118可以更新BIOS数据区122以给操作系统124报告第一存储设备1121的容量等于最小的部分2021,2022的容量。此外,SD初始化代码118可以更新BIOS数据区122以给操作系统124报告第二存储设备1122等于最小部分2041,2042的容量。因此,SD初始化代码118基本保留用于实施RAID水平和/或数据冗余的存储设备1121,1122的存储容量的一半。
在附图4中,示出了存取附图2的存储阵列200的实例性方法。在方块400中,SD处理程序120接收将数据读或写到存储阵列200中的请求。在一个实施例中,SD处理程序120可以响应各种事件接收这种请求,比如应用程序和/或操作系统124请求从存储阵列200中读数据或将数据写入其中。具体地说,应用程序和/或操作系统124可以产生导致提供给与中断13H相关的SD处理程序120的请求参数的中断13H。
在方块402中SD处理程序120确定该请求是否有效。在一个实施例中,SD处理程序120可以确定所请求的扇区是否对应于存储阵列200的第一部分2021,2041的可存取扇区。例如,该请求可以提供标识LBA(逻辑块寻址)地址或CHS(柱面/磁头/扇区)地址的扇区计数和开始扇区。SD处理程序120可以从开始扇区和扇区计数中确定结束扇区。此外,SD处理程序120基于通过BIOS数据区122所指示的最大可存取扇区可以确定开始扇区和结束扇区是否位于第一部分2021,2041的可存取扇区中。响应确定该请求无效,SD处理程序120可以终止该请求并给产生请求的应用程序和/或操作系统124提供指示发生的错误的退出消息或退出代码(方块404)。
在方块406中,SD处理程序120可以发布一系列指令给执行所请求的传输的存储阵列200的存储设备1121,1122。例如,响应从存储阵列200中读取数据条的请求,SD处理程序120将一系列的读命令发布给存储设备1121,1122,该命令使存储设备1121,1122从第一部分2021,2022返回所请求的数据。应该理解的是,所产生的读命令数量取决于所请求的数据量和每个块的大小两者。例如,响应使用32千字节块从存储阵列200中请求64千字节的数据的请求,SD处理程序120可以给第一存储设备1121发布第一读命令以获得第一32千字节块,并可以给第二存储设备1122发布第二读命令以获得第二32千字节块。此外,如果产生了读错误,则SD处理程序120可以发布第三读命令和第四读命令给存储设备1121,1122以从第二部分2022,2042中获得第一32千字节块和第二32千字节块的镜向拷贝。
类似地,响应给存储阵列200中写入数据条的请求,SD处理程序120将一系列的写命令发布给存储设备1121,1122,该命令使存储设备1121,1122将请求的数据存储到第一部分2021,2022并将该数据镜向到第二部分2022,2042。例如,响应使用32千字节块将64千字节的数据写到存储阵列200的请求,SD处理程序120可以给第一存储设备1121发布第一写命令,该第一写命令使第一32千字节块存储在第一部分2021中,并可以给第二存储设备1122发布第二写命令,该第二写命令使第二32千字节块写在第一部分2041中。此外,SD处理程序120可以给第二存储设备1122发布第三写命令,该第三写命令使第一32千字节块镜向到第二部分2042,给第一存储设备1121发布第四写命令,该第四写命令使第二32千字节块镜向到第二部分2022。
在方块408中SD处理程序120可以确定所请求的传输是否成功地完成。响应确定该请求成功地完成,在块410中SD处理程序120可以确定并给操作系统124提供指示该请求成功完成的退出代码。此外,如果该请求是读请求,则SD处理程序120可以进一步给该应用程序和/或操作系统124提供所请求的数据、所请求的数据的指针,或将所请求的数据存储在由应用程序和/或操作系统124所请求的单元。响应确定该请求还没有成功完成,在方块404中SD处理程序120可以终止并给应用程序和/或操作系统124提供指示该请求失败的退出代码。
现在参考附图5,所示为另一存储阵列500。如图所示,存储阵列500可以包括单个的存储设备1121,而常规的存储阵列比如RAID 0和RAID 1阵列要求至少两个存储设备。如上文所描述,存储设备1121可以包括第一部分2021和第二部分2022。一般地,第一部分2021和第二部分2022组合以形成RAID 1阵列,在该阵列中第一部分2021的数据镜向到第二部分2022。例如,如附图5所示,可以将数据划分为块A...D,块A...D可以写入到第一部分2021并镜向到存储设备1121的第二部分2022。
与非镜向存储设备相比,数据的镜向一般使写入到存储设备1121中的字节数加倍。因此,存储阵列500可以实现非镜向存储设备的一半的数据写性能。然而,存储阵列500可以实现接近非镜向存储设备的读性能的数据读性能,因为通过存储设备1121的一部分可以服务于读请求。此外,存储阵列500通过重试对存储设备1121的第二部分2022的请求可以较好地容许从第一部分2021中读数据的失败。这样,存储阵列500可以容许间歇存储或设备错误,并且可以给数据提供某些保护以防止故障的存储设备所造成的数据损失。
在附图6中,示出了形成附图5的存储阵列500的实例性方法。在一个实施例中,计算设备100可以响应各种事件(例如,系统加电事件、系统复位事件等)执行附图6的方法。此外,在一个实施例中计算设备100可以在调用操作系统124或用于调用操作系统124的执行的引导装入程序之前执行附图5的方法。在方块600中,SD初始化代码118可以安装SD处理程序120。在一个实施例中,SD初始化代码可以以类似于附图的方块300的方式安装SD处理程序120。
在方块602中SD初始化代码118可以进一步确定是否存在连接到SD控制器110的至少一个可用的存储设备1121...112D。为此,SD初始化代码118可以以类似于附图3的方块302的方式执行各种测试和/诊断。响应确定没有存在至少一个可用的存储设备,在方块604中的SD初始化代码118可以禁止RAID支持并退出。否则,在方块606中SD初始化代码118可以更新BIOS数据区122以给操作系统124报告耦合到SD控制器110的存储设备和/或阵列的数量。在方块608中SD初始化代码118可以获得存储设备1121...112D的参数。此外,SD初始化代码118可以以类似于附图3的方块308的方式获得可用的存储设备的参数。
在块610中,SD初始化代码118可以将第一存储设备1121划分为基本相等的两部分2021,2022。在一个实施例中,SD初始化代码118通过给第一存储设备1121发布SET MAX命令可以将第一存储设备1121划分为第一部分2021和第二部分2022,该命令将第一存储设备1121的最大可存取扇区设定到第一存储设备1121的最小部分2021,2022中的扇区的数量。
在块612中SD初始化代码118可以基于该设备标识数据初始化存储设备1121,1122和SD控制器110以获得更好的性能。具体地说,SD初始化代码118可以对存储设备1121,1122和SD控制器110进行编程以便实现由存储设备1121,1122和SD控制器110所支持的最高性能设置。例如,SD初始化代码118可以对存储设备1121,1122和SD控制器进行编程以便最快地支持PIO、多字节DMA、超DMA模式等。
在块614中SD初始化代码118可以更新BIOS数据区122以给操作系统124报告存储设备1121的容量等于最小的部分2021、2022的容量。因此,SD初始化代码118基本保留用于实施RAID水平和/或数据冗余的存储设备1121的存储容量的一半。
在附图7中,示出了存取附图5的存储阵列500的实例性方法。在方块700中,SD处理程序120接收将数据读或写到存储阵列500中的请求。在一个实施例中,SD处理程序120可以响应各种事件接收这种请求,比如应用程序和/或操作系统124请求从存储阵列500中读数据或将数据写入其中。具体地说,应用程序和/或操作系统124可以产生导致提供给与中断13H相关的SD处理程序120的请求参数的中断13H。
在方块702中SD处理程序120确定该请求是否有效。在一个实施例中,SD处理程序120可以确定所请求的扇区是否对应于存储阵列500的第一部分2021的可存取扇区。响应确定该请求无效,SD处理程序120可以终止该请求并给产生请求的应用程序和/或操作系统124提供指示发生的错误的退出消息或退出代码(方块704)。
在方块706中,SD处理程序120可以给存储阵列500的存储设备1121发布实施所请求的传输的一系列命令。例如,响应使用32千字节块从存储阵列500中请求64千字节的数据的请求,SD处理程序120可以给第一存储设备1121发布第一读命令以从第一部分2021中获得第一和第二32千字节块。此外,如果产生了读错误,则SD处理程序120可以发布第第二读命令给存储设备1121以从第二部分2022中获得第一和第二32千字节块的镜向拷贝。
类似地,响应给存储阵列500中写入数据条的请求,SD处理程序120将一系列的写命令发布给存储设备1121,该命令使存储设备1121将请求的数据存储到第一部分2021并将该数据镜向到第二部分2022。例如,响应使用32千字节块将64千字节的数据写到存储阵列500的请求,SD处理程序120可以给存储设备1121发布第一写命令,该第一写命令使第一和第二32千字节块写入到第一部分2021中。此外,SD处理程序120可以给存储设备1121发布第第二写命令,该第二写命令使第一和第二32千字节块镜向到第二部分2022。
在方块708中SD处理程序120可以确定所请求的传输是否成功地完成。响应确定该请求成功地完成,在块710中SD处理程序120可以确定并给操作系统124提供指示该请求成功完成的退出代码。此外,如果该请求是读请求,则SD处理程序120可以进一步给该应用程序和/或操作系统124提供所请求的数据、所请求的数据的指针,或将所请求的数据存储在由应用程序和/或操作系统124所请求的单元。响应确定该请求还没有成功完成,在方块704中SD处理程序120可以终止并给应用程序和/或操作系统124提供指示该请求失败的退出代码。
响应执行机器可读媒体的指令,比如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、高速存储设备和/或电、光、声或其它形式的传播信号比如载波、红外信号、数字信号、模拟信号,计算设备100可以执行在附图3、4、6和7中所示的全部操作或其子集。此外,虽然附图3、4、5、6和7示出了操作顺序,但是在某些实施例中计算设备100可以并行地或以不同的顺序执行所示的各种操作。
虽然参考实例性实施例已经描述了本发明的某些特征,但是这些描述并不是限制性的。对本发明所属的技术领域的普通技术人员来说是显然的实例性实施例的各种修改以及本发明的其它实施例都被认为落在本发明的精神和范围内。
权利要求
1.一种计算设备,包括;处理器在处理器和至少一个存储设备之间传输数据的控制器,与控制器分离的固件,该固件包括在通过处理器执行时使处理器如下运行的指令将至少一个存储设备划分为多个部分,和从所述至少一个存储设备的多个部分中创建存储阵列。
2.权利要求1所述的计算设备,进一步包括操作系统,响应于被执行,该操作系统使处理器通过固件的存储设备处理程序存取至少一个存储设备。
3.权利要求2所述的计算设备,其中该操作系统产生使处理器调用存储设备处理程序的执行的中断。
4.权利要求1所述的计算设备,其中所述的至少一个存储设备包括第一存储设备和第二存储设备,和所述固件包括响应于被执行使处理器将第一存储设备划分为第一部分和第二部分并将第二存储设备划分为第一部分和第二部分的指令。
5.权利要求4所述的计算设备,其中该固件包括响应于被执行使处理器在第一存储设备的第一部分和第二存储设备的第二部分上对数据分条的指令。
6.权利要求4所述的计算设备,其中该固件包括响应于被执行使处理器将第一存储设备的第一部分的数据镜向到第二设备的第二部分和将第二存储设备的第一部分的数据镜向到第一存储设备的第二部分的指令。
7.用于一种计算设备,包括一个或多个存储设备,固件,所述固件包括响应于被执行使计算设备如下运行的多条指令通过报告第一存储设备的存储容量基本为它的总的存储容量的一半限定第一存储设备的第一部分和第二部分,和形成包括第一存储设备的第一部分和第二部分的存储阵列。
8.权利要求7所述的固件,进一步包括使计算设备如下运行的指令将数据写到第一存储设备的第一部分,和将该数据镜向到第一存储设备的第二部分。
9.权利要求7所述的固件,进一步包括使计算设备如下运行的指令通过报告第二存储设备的存储容量基本为它的总的存储容量的一半限定第二存储设备的第一部分和第二部分,和创建包括第二存储设备的第一部分和第二部分的存储阵列。
10.权利要求9所述的固件,进一步包括使计算设备如下运行的指令对在第一存储设备的第一部分和第二存储设备的第一部分上的数据分条。
11.权利要求9所述的固件,进一步包括使计算设备如下运行的指令将写到第一存储设备的第一部分和第二存储设备的第一部分的数据镜向到第一存储设备的第二部分和第二存储设备的第二部分。
12.权利要求9所述的固件,进一步包括使计算设备如下运行的指令将写到第一存储设备的第一部分的数据镜向到第二存储设备的第二部分,和将写到第二存储设备的第一部分的数据镜向到第一存储设备的第二部分。
13.权利要求12所述的固件,进一步包括使计算设备如下运行的指令对在第一存储设备和第二存储设备的第一部分上的数据分条。
14.一种方法,包括将第一存储设备划分为第一多个部分,报告第一存储设备具有等于所述第一多个部分的最小部分的存储容量的存储容量,和给第一存储设备发布命令以将数据传递到所述第一多个部分和/或从其传递。
15.权利要求14所述的方法,进一步包括响应第一存储设备处理所述命令将数据传输给第一存储设备的第一部分并将数据镜向给第一存储设备的第二部分。
16.权利要求14所述的方法,进一步包括将第二存储设备划分为所述第二多个部分,报告第二存储设备具有等于所述第二多个部分的最小部分的存储容量的存储容量,和给第二存储设备发布命令以将数据传输到第二多个部分和/或从其传递。
17.权利要求16所述的方法,进一步包括响应第一存储设备和第二存储设备处理它们相应的命令对在第一存储设备的第一部分和第二存储设备的第一部分上的数据分条。
18.权利要求16所述的方法,进一步包括响应第一存储设备和第二存储设备处理它们相应的命令将到第一存储设备的第一部分和第二存储设备的第一部分的数据分条并将该数据镜向到第一存储设备的第二部分和第二存储设备的第二部分。
19.权利要求16所述的方法,进一步包括响应第一存储设备和第二存储设备处理它们相应的命令对来自第一存储设备的第一部分和第二存储设备的第一部分的数据分条。
20.权利要求16所述的方法,其中划分第一存储设备包括设定第一存储设备的最大可存取扇区以限定第一存储设备的第一部分和第二部分,和划分第二存储设备包括设定第二存储设备的最大可存取扇区以限定第二存储设备的第一部分和第二部分。
全文摘要
本发明描述了这样的方法、装置和机器可读媒体,其中BIOS初始化代码将一个或多个存储设备划分为两个或更多部分。此外,BIOS设备处理程序可以使用所分割的存储设备的部分以实施提供一个或多个RAID水平的属性的存储阵列。
文档编号G06F12/00GK1503140SQ200310117920
公开日2004年6月9日 申请日期2003年11月26日 优先权日2002年11月26日
发明者R·K·纳拉瓦迪, D·邰, R K 纳拉瓦迪 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1