CN1503140A - Bios存储阵列 - Google Patents

Bios存储阵列 Download PDF

Info

Publication number
CN1503140A
CN1503140A CNA2003101179203A CN200310117920A CN1503140A CN 1503140 A CN1503140 A CN 1503140A CN A2003101179203 A CNA2003101179203 A CN A2003101179203A CN 200310117920 A CN200310117920 A CN 200310117920A CN 1503140 A CN1503140 A CN 1503140A
Authority
CN
China
Prior art keywords
memory device
data
memory
computing equipment
firmware
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.)
Granted
Application number
CNA2003101179203A
Other languages
English (en)
Other versions
CN1327354C (zh
Inventor
Rk
R·K·纳拉瓦迪
D·邰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1503140A publication Critical patent/CN1503140A/zh
Application granted granted Critical
Publication of CN1327354C publication Critical patent/CN1327354C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Abstract

本发明描述了这样的方法、装置和机器可读媒体,其中BIOS初始化代码将一个或多个存储设备划分为两个或更多部分。此外,BIOS设备处理程序可以使用所分割的存储设备的部分以实施提供一个或多个RAID水平的属性的存储阵列。

Description

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可以并行地或以不同的顺序执行所示的各种操作。
虽然参考实例性实施例已经描述了本发明的某些特征,但是这些描述并不是限制性的。对本发明所属的技术领域的普通技术人员来说是显然的实例性实施例的各种修改以及本发明的其它实施例都被认为落在本发明的精神和范围内。

Claims (20)

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所述的方法,其中
划分第一存储设备包括设定第一存储设备的最大可存取扇区以限定第一存储设备的第一部分和第二部分,和
划分第二存储设备包括设定第二存储设备的最大可存取扇区以限定第二存储设备的第一部分和第二部分。
CNB2003101179203A 2002-11-26 2003-11-26 用于创建存储阵列的计算设备、固件和方法 Expired - Fee Related CN1327354C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/305727 2002-11-26
US10/305,727 US7143234B2 (en) 2002-11-26 2002-11-26 Bios storage array
US10/305,727 2002-11-26

Publications (2)

Publication Number Publication Date
CN1503140A true CN1503140A (zh) 2004-06-09
CN1327354C CN1327354C (zh) 2007-07-18

Family

ID=32325499

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003101179203A Expired - Fee Related CN1327354C (zh) 2002-11-26 2003-11-26 用于创建存储阵列的计算设备、固件和方法

Country Status (7)

Country Link
US (1) US7143234B2 (zh)
EP (1) EP1573542A2 (zh)
JP (1) JP2006507603A (zh)
KR (1) KR100829651B1 (zh)
CN (1) CN1327354C (zh)
AU (1) AU2003286914A1 (zh)
WO (1) WO2004049158A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100458677C (zh) * 2005-11-16 2009-02-04 国际商业机器公司 配置一个或多个存储阵列的装置与方法
US7669008B2 (en) 2007-02-09 2010-02-23 International Business Machines Corporation Destage management of redundant data copies
CN101923518A (zh) * 2009-06-12 2010-12-22 三星电子株式会社 存储器系统、操作方法和数据加载的方法
CN102906714A (zh) * 2010-05-05 2013-01-30 马维尔国际贸易有限公司 缓存存储适配器架构

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454555B2 (en) * 2003-06-12 2008-11-18 Rambus Inc. Apparatus and method including a memory device having multiple sets of memory banks with duplicated data emulating a fast access time, fixed latency memory device
US7418621B2 (en) * 2005-02-24 2008-08-26 Dot Hill Systems Corp. Redundant storage array method and apparatus
JP5320678B2 (ja) * 2007-02-20 2013-10-23 日本電気株式会社 データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US10579282B1 (en) * 2016-03-30 2020-03-03 EMC IP Holding Company LLC Distributed copy in multi-copy replication where offset and size of I/O requests to replication site is half offset and size of I/O request to production volume
KR20180023784A (ko) * 2016-08-25 2018-03-07 삼성전자주식회사 사전 부팅 환경에서 raid 볼륨에 접근하는 데이터 저장 시스템 및 방법
JP6662530B1 (ja) * 2018-11-16 2020-03-11 Necプラットフォームズ株式会社 制御装置、ディスクアレイシステム及びデータ入出力方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694581A (en) * 1993-09-07 1997-12-02 Industrial Technology Research Institute Concurrent disk array management system implemented with CPU executable extension
US6098119A (en) * 1998-01-21 2000-08-01 Mylex Corporation Apparatus and method that automatically scans for and configures previously non-configured disk drives in accordance with a particular raid level based on the needed raid level
JP2000132915A (ja) * 1998-10-22 2000-05-12 Matsushita Electric Ind Co Ltd ディスク装置およびそのデータ処理方法
US6401183B1 (en) * 1999-04-01 2002-06-04 Flash Vos, Inc. System and method for operating system independent storage management
US6681290B2 (en) * 2001-01-29 2004-01-20 International Business Machines Corporation Physical data layout to reduce seeks in a raid system
US20020156971A1 (en) * 2001-04-19 2002-10-24 International Business Machines Corporation Method, apparatus, and program for providing hybrid disk mirroring and striping
JP2003216341A (ja) * 2002-01-22 2003-07-31 American Megatrends Inc コンピュータシステム、HD(HardDisk)制御方法、及びRAIDプログラム
US7383576B2 (en) * 2004-04-23 2008-06-03 Microsoft Corporation Method and system for displaying and managing security information
KR100673329B1 (ko) * 2005-02-03 2007-01-24 학교법인 대전기독학원 한남대학교 그리드 환경에서 인증서를 이용한 사용자 역할/권한 설정 시스템 및 그 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100458677C (zh) * 2005-11-16 2009-02-04 国际商业机器公司 配置一个或多个存储阵列的装置与方法
US7669008B2 (en) 2007-02-09 2010-02-23 International Business Machines Corporation Destage management of redundant data copies
CN101923518A (zh) * 2009-06-12 2010-12-22 三星电子株式会社 存储器系统、操作方法和数据加载的方法
CN102906714A (zh) * 2010-05-05 2013-01-30 马维尔国际贸易有限公司 缓存存储适配器架构

Also Published As

Publication number Publication date
JP2006507603A (ja) 2006-03-02
US7143234B2 (en) 2006-11-28
KR20050086832A (ko) 2005-08-30
KR100829651B1 (ko) 2008-05-16
CN1327354C (zh) 2007-07-18
EP1573542A2 (en) 2005-09-14
AU2003286914A8 (en) 2004-06-18
WO2004049158A2 (en) 2004-06-10
US20040103260A1 (en) 2004-05-27
AU2003286914A1 (en) 2004-06-18
WO2004049158A3 (en) 2005-08-04

Similar Documents

Publication Publication Date Title
CN101047010B (zh) 用于最大化raid系统中受保护数据量的方法和系统
US7206899B2 (en) Method, system, and program for managing data transfer and construction
US8738994B2 (en) Memory controller, memory system, and operating method
US7475279B2 (en) Data storage system, data storage control device, and write error diagnosis method for disks thereof
US20100250829A1 (en) System, method, and computer program product for sending logical block address de-allocation status information
US20100251009A1 (en) System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US20080005386A1 (en) DMA circuit
US20170270000A1 (en) Method for storage management and storage device
US20060064568A1 (en) Integrated circuit capable of mapping logical block address data across multiple domains
CN1327354C (zh) 用于创建存储阵列的计算设备、固件和方法
CN103544995A (zh) 一种坏道修复方法及装置
CN111324414B (zh) Nvm存储介质模拟器
US7921265B2 (en) Data access method, channel adapter, and data access control device
EP0662660A1 (en) An improved data storage device and method of operation
US7114014B2 (en) Method and system for data movement in data storage systems employing parcel-based data mapping
US7353328B2 (en) Memory testing
US7418548B2 (en) Data migration from a non-raid volume to a raid volume
US8516190B1 (en) Reporting logical sector alignment for ATA mass storage devices
CN109584943B (zh) 一种评估存储介质的方法及装置
US20210157488A1 (en) Disk offset-distance awareness data placement for storage system data protection
CN1601484A (zh) 磁盘数据备份系统及其方法
CN112230855A (zh) 固态硬盘及其读写方法
US6915475B1 (en) Data integrity management for data storage systems
CN1735855A (zh) 用于处理数据传送的方法和装置
CN116069266B (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070718

Termination date: 20181126