智能可缩放存储切换架构的制作方法

文档序号:6568665阅读:356来源:国知局
专利名称:智能可缩放存储切换架构的制作方法
智能可缩放剤都刀换架构
相关申请的交叉引用
本申请要求2005年8月25日提交的、发明名称为"SMART SCALABLE STORAGE SWITCH ARCHITECTURES申请号为60/711,863 (律师案号 59472-8092.US00)的美国临时专利申请的优先权,在此引用其作为参考。
背景
存储系统经常使用多个磁盘驱动器来提供例如容错、增加的吞吐量、增加 的存储量和可扩展性的特征。例如,镜像使用了两个或多个驱动器来存储数据 的复制副本,从而在其中一个驱动器出现故障时仍然可以从另一个驱动器中读 取数据。条带化允许将数据划分成可同时并行写入(读出)两个或多个驱动器 的部分,以提供增加的吞吐量。级联组合了两个或多个驱动器,从而允许比可 从单个磁盘驱动器中获得的更高的存储量。虽然这种特征已变为在企业类存储 解决方案中是通用的,但是这^f寺征在用户系统中仍然是罕见的。组装这种系 统的成本和复杂性Slh了许多用户禾,这些高级剤樹寺征。
对商品、用户级别的存储硬件的设计限制还防止用户从这些高级存储特征 中获益。例如,许多计算机系统限制了可由单个主机寻址的磁盘驱动器数量。 串行高级技术附加^S (SATA) 1.0规范(可从www.serialata.org网页中获得) 仅支持将单个磁盘驱动器连接到主机。随后添加了附加寻址方案,即SATA n 端口乘法规范(可从www.serialata.om网页中获得),它允许主机对15 ,理磁 盘驱动器进行寻址,但并非所有主机都支持该最新规范,而该主机计算机系统 管理多个驱动器涉及对许多用户很困难的附加复杂性和配置。该最终结果就是 用户无法获得易于使用、低成本且能够提供对企业类计算机系统有效的高端存 微寺征的硬件。

提供了一种利用商品、用户级别的存储设备来提供高级存储特征的系统和 方法。高级存储系统是一种连接在计算机系统与一个或多,理磁盘驱动器之 间的元件。高级存储系统的主机接口将它自身作为虚拟磁盘驱动器呈现给计算 机系统,它执行用户级别的存储硬件的命令,该用户级别的存储硬件为计算机 系统的主机控制器所熟知。同样地,高级存储系统的存储设备将它自身驱动器 作为用户级别的主机控制器呈现给一个或多个磁盘驱动,而不管与它相连的物 理存储设备的实际拓扑结构是什么。首先,高级存储系统接收从计算机系统到 虚拟设备的命令,并将该命令映射成一个或多个物理命令。接下来,将鹏寸的 物理命令发送到物理磁盘驱动器来执行命令实体。最后,组合来自于物理磁盘 驱动器的应答,并把对虚拟命令的单个应答发送回计算机系统。该系统为用户 提供了一种简单的方法来组合低成本、用户级别的硬件,以向计算机系统添加 高级存^^寺征。
提供此概述是为了以简化方式介绍将在以下详细说明中进一步描述的的概 念的选择。此概述并不旨在标识请求保护的主题的关键特征或基本特征,也不 旨在用来限制请求傲户的主题的范围。
附图扭,


图1是示出一个实施例中的高级存储系统的元件的框图; 图2示出一个实施例中的级联的高级存储系统设备的拓扑结构; 图3是示出一个实施例中的对系统元件进行虚拟至,理舰的处理流程图; 图4是示出一个实施例中的对元件进行虚拟到物理映射以生自拟响应的 处理流程图5示出一个实施例中的各种存储架构;
图6示出一个实施例中的SteelVine结构的各种应用;
图7示出一个实施例中的策略与机制的分离;
图8示出一个实施例中的虚拟命令向物理命令的转换;
图9示出一个实施例中的SteelVine元件的逻辑层;
图IO示出一个实施例中的物理磁盘区域向虚拟驱动器的转换;
图ii示出一个实施例中的M级糊理m区域来创建虚拟驱动器;
图12示出一个实施例中的存储子系统软件元件的高级视图。
详细说明
提供一种利用商品、用户级别的存储设备来提供高级存储特征的方法和系 统。例如,高级存储系统允剤顿多个现行的硬盘驱动器来衛共容错存储系统。 该高级存储系统是一种连接在计算机系统与一个或多个物理皿驱动器之间的 元件。高级存储系统的主机接口将它自身作为虚拟磁盘驱动器呈现纟射十穀几系 统,该虚拟磁盘驱动器执行用户级别的存储硬件的命令,该命令为计算机系统
的主机控制器所熟知。例如,高级存储系统可作为单个硬盘驱动器向计^5fL系
统显现。同样地,高级存储系统的存储设备接口将它自身驱动器作为用户级别 的主机控制器呈现给一个或多个磁盘驱动,而不管所连接的物理存储设备的实 际拓扑结构是什么。例如,高级存储系统可以连接到两个物理驱动器,这两个 物理驱动器作为单个虚拟磁盘驱动器向计算机系统显现,而且每一个磁盘驱动 器会相信其为连接到该系统的唯一驱动器。计算机系统、高级存储系统和磁盘 驱动器之间的每一个连接都形成一个数据通道。首先,高级存储系统接收从计 算机系统去往虚拟驱动器的命令,并把该命令鹏t成一个或多个物理命令。例 如,该存储系统可接收从虚拟驱动器上的一个位置中读取一兆字节 的命令, 该虚拟驱动器实际上存储在两个不同的物理驱动器。接下来,将鹏寸的物理命 令发送到物理磁盘驱动器以执行命令实质。例如,可以将虚拟读取命令分成两 个单独的读取命令,这两个单独的读取命令被发送到各个物理磁盘驱动器驱动 器以使其读取该数据的不同部分。最后,组合来自该物理磁盘驱动器的应答,
并舰该虚拟命令的单个应答发送回计^m系统。例如,可以把从两个#^虫的
磁盘驱动器中读取的数据组合成单个应答,就像是从单个磁盘驱动器中接收了 该数据一样。为了降低成本,可以在单个芯片上提供高级存储系统。该系统为 用户提供了一种简单的方法来组合低成本、用户级别的硬件以向计算机系统添 加高级存储特征。
在某些实施例中,在制造过程中高级存储系统被配置成J^共特定的特征, 以致于无需用户酉己置。例如,高级存储系统可被配置成级联与之相连的附加磁 盘驱动器。用户购买该高级存储系统和几个硬盘驱动器。计算机系统知道随着 在高级存储系统上连接每一个新的驱动器,单个虚拟驱动器的容量增加。用户 甚至能够在稍后购买附加的驱动器来添加更大的存储容量,而无需重新配置主 机系统。还可以将高级存储系统配置成提供镜像以防止丢失数据。当用户连接
附加的硬盘驱动器时,每一个硬盘驱动器上的数据被镜像到其他驱动器上,从 而在一个驱动器出现故障时,可以在另一个磁盘驱动器上存取(例如,读出、 写入等)数据。可以通过一系列的硬件管脚或超践,或者在制造过程中使特定 的固件图像闪存至係统,来配置高级存储系统。例如,系统可使用策略表来以 性能指示的方式指定配置信息。当设备内的控制逻辑达到判定点且必须从多种 可能性中选择一种做法时,参考该表并执行由该表指定的动作。这允许仅通过 修改策略表的内容来使用相同的硬件以暴露不同的特征。还可提供硬件管脚来 超驰策略表内特定的策略以允许附力啲丽己置性,而无需修改该策略表。
在某些实施例中,可以级联高级存储系统与其他这种系 提供附加的存 储特征。例如,高级存储系统的一个实例可被连接到主机计算机系统,而高级 存储系统的另一个实例可被连接到该第一实例。这样,就可由普通用户轻易地 组合复杂的存储拓扑结构。例如,高级存储系统的配置成级联与之相连的设备 的实例可被连接到主机控制器,而其他被配置成对相连的驱动器提供镜像的实 例可被连接到该第一实例,以便于创建大容量、镜像的虚拟存储设备。主机系 统还可以只看到单个大的磁盘驱动器,但可使用标准的磁盘驱动器命令来与相 连的存储设备通信。高级存储系统的每一实例都把在主机接口上接收的虚拟命 令转换成物理命令,其中该物理命令被发送到存储接口上的M相连驱动器(级 联的高级存储系统实例又可将此物理命令视为虚拟命令)。
在某些实施例中,高级存储系统分离主机与高级存储系统之间的确认周期 和高级存储系统与相连设备之间的确认周期。例如,高级存储系统可以投机性 地确认已经响应在主机接口上接收的虚拟命令而写入了数据,这甚至是在执行 该命令的物理驱动器确认该操作的成与败之前。在其中利用了高级存储系统来 级联多个物理驱动器的拓扑结构中,投机性的确认通过减少由每一层在命令接 收时与命令完成和确认时之间的延迟而导致的等待时间来提高性能。该系统还 可以通OT指示成功的请求作出响应来隐藏对失败于主机计算机系统的物理命 令的重新尝试,然后重新尝试该物理命令直至它成功。在一些瞎形中分片段执 行整个存储操作,例如分块写入大量数据,从而在高级存储系统投机性地确认
一个块的成功写Aft终失败时,该系统可以报告整个存储操作失败。这允许系
统获得附加的性能,同时保持了主机系乡就操作的成功或失败的看法的统一性。 在某些实施例中,高级存储系统将几个缓慢的数据通道合并成一个快速的
通道。例如,如果高级存储系统连接到两个执行SATAI规范的物理磁盘驱 动器,其,传输率为1.5吉比特每秒(Gbps),贝搞级存储系统可向计算机系 统提供SATAn规范的主机接口,其f^传输率为3.0Gbps。高级存储系统对磁 盘驱动器进行并行i卖写,而且计算机系会1/人两个驱动器合并的吞P土量中受益。
在某些实施例中,高级存储系统自动选择用于在多个驱动器和级联的高级 存储系统元件当中发送存储命令的路线。高级存储系统可以禾i』用网格拓扑结构 来以通过最小化驱动与主机计算机系统之间的瑕歐次数减少等待时间的方式对 每一个驱动器进行存取驱动器。例如,可以连接多个高级存储系统元件来形成 网格。可以在该网格内以多种不同的方式来路由命令。例如,可以通过一连串 10个高级存储系统元件来向驱动器皿命令,但这会导致完成该命令要非常高 的等待时间。相反,高级存储系统元件将彼ltkM信以选择去往级联的磁盘驱动 器的最快路径。
在某些实施例中,高级存储系统在附连了新的驱动器时自动对其进行重新 配置。例如,当用户把第四个驱动器附连到系统上时,高级存储系统就会自动 级联该驱动器与其他驱动器以增加现有虚拟巻的大小。同样地,高级存储系统 会自动使用该新的驱动器作为对其他巻的镜像。该判定可以基于多个因素,例 如对高级存储系统的配置、现有的和新的驱动器的大小以及驱动器速度。例如, 如果该配置指示应当执行镜像,贝U高级存储系统就可以^顿单个相连的75吉比 特(GB)磁盘驱动器来镜像其H个相连的25GB驱动器。同样地,如果已经 连接了两个1.5 Gbps驱动器,则该系统就会配置新的3.0 Gbps驱动器作为镜像, 这是因为它可以同时写入两个原始驱动器的同一时间量内进行写入。因为该系 统不需要外部配置,所以它可用在其中不能有其他存储系统的情况下。例如, 机顶盒、个人录像机、MP3播放和其他WA式设备tlW从附加存储和诸如容错 那样的高级特征中受益,但是没有配置用户接口、或在一些情形中甚至是其他 存储系统会需要的用于显示一配置用户接口的硬件。
在某些实施例中,高级存储系统在虚拟到物理转换状态信息中记录所附连 的物理驱动器的序列号。对驱动器的标识允许更多响应于外部事件而篡改的策 略,例如附连新的或之前见过的驱动器。当插入驱动器时,将其与己知物理驱 动器的列 行比较。如果识别了该新附连的驱动器,而该驱动器附连到不同 的物理接口,则自动更新转换信息来说明该再定位。如果没有识别该驱动器,
则某些高级存储系统的实施例将更新转换信息来以任何可行的增强存取模式 (例如,镜像、条带、级联)添加新的驱动器(或其部分)。在某些高级存储系 统的实施例中,不对该转换添加新的物理驱动器,从而防lW其进行存取直至 采取另外的用户动作。高级存储系统可^f共各种驱动器锁定特征来^J户对物理
驱动器的存取。现代SATA磁盘驱动器支持来自主机、用以锁定和解锁驱动器 并在该驱动器本身内存储口令的命令。在一个实施例中,驱动器存取命令的虚 拟到物理转换包括对这种驱动器锁定命令的支持。例如,当接收来自主机的对 锁定(或解锁)驱动器的请求时,向适当的一组物理驱动器转发该命令。这种 实施例允许主机设备本身绑定虚拟驱动器,从而表现出该虚拟驱动器中的所有 物理驱动元件对其他任何主机设备都是不可存取的(无适当的口令)驱动器。 在某些实施例中,高级存储系统在内部执行所有驱动器锁定任务。当附连新的 物理驱动器时,向该驱动器发送驱动器锁定请求,并在虚拟到物理转换状态信 息中存储口令。随后,当在主机接口上接fet虚拟驱动器的存取请求时,将其 转换成一tW适当驱动器的存取,每一个存取都优先于使用先前存储口令的驱 动器解锁请求。这将物理驱动绑定到特定的高级存储系统实例驱动器,从而表 现出它们无法为其他樹可主机设备所存取(无适当的口令)。
图1是示出一个实施例中的高级存储系统元件的框图。主机计穀几系统廳 被连接到高级存储系统150,而高级存储系统150被连接到一个或多个磁盘驱动 器(例如,180和190)。主机计算机100包括与诸如磁盘驱动或高级存储系统 150的存储设备通信的主机控制器105驱动器。高级存储系统150包括主机接口 元件155、配置元件160、虚拟到物理 ]"元件165和设备接口元件170。主机 接口元件155与主机控制器105通信以执行存储命令。/Ai机控制器105接收 的存储命令被视为对由高级存储系统150呈现给主机计算机系统100的虚拟驱 动器的虚拟命令。配置元件160存储关于高级存储系统150的配置信息,例如 连接多少个驱动器以及正在使用每一个驱动器来提供哪些存《樹寺征(例如,条 带化、镜像或级联)。虚拟到物理鹏寸元件165基于配置元件160存储的配置将 从主机接口 155接收的虚拟命令,成向设备接口 170发出的物理命令。虚拟 到物理鹏才元件165还将从设备接口元件170接收的物理响应鹏寸成Mil主机 接口 155发送到主机计^m 100的虚拟响应。设皿口元件170与一个或多个 物理磁盘驱动器(或附加的高级存储系统)通信以执行存储命令。
在其上实现该系统的计算设备可包括中央处理单元、存储器、输入设备(例 如,鄉和定位设备)、输出设备(例如,显示设备)和存储设备(例如,磁盘 驱动器)。存储器和存储设备是计#|几可读介质,它可包含实现该系统的指令。 另外,可以通过数据传输介质存储或发送数据结构和消息结构,该数据传输介 质诸如通信链路上的信号。可以使用各种通信链路,例如因特网、局域网、广 域网、点对点拨号连接、手机网等。
可以在各种运行环境中实现该系统的实施例,包括个人计算机、服务器计 算机、手持或膝上型设备、多处理器系统、基于多处理器的系统、可编,翻户 电子设备、数码相机、网络PC、小型计^^几、大型计^#1、包括以上任何系统 或设备的分布式计算环境等。计算机系统可以是手机、个人数字助理、智能电 话、个人计算机、可编程用户电子设备、数码相机等。
可在由一个或多个计算机或其他设备来执行的诸如禾骄块的计算机可执行 指令的通用上下文来描述该系统。通常,禾辦士央包括执行特殊任务或实现特定 抽象数据类型的例私禾聘、鄉、元件、数据结构等。通常,可以在各种环 境中根据需要组合或分布禾骄块的功能块。
图2示出一个实施例中的级联高级存储系统设备的拓扑结构。主机计^M
205连接到高级存储系统元件210。高级存储系统元件210对主机计算机205显 现为单个标准的磁盘驱动器270。高级存储系统元件210连接至傑一磁盘驱动器 215、第二磁盘驱动器220和另一高级存储系统元件225。高级存储系统元件225 与相关联的磁盘驱动器230和240可对第一高级存{诸^;<牛210显5见为该实施例 中的另一磁盘驱动器250,或者两个元件可以包J砖用通信通道(例如独,接 或在数据通道上发送的定制协议),这允许这两个元件相互了解并交换配置信 息。第二高级存储系统元件225连接到第一磁盘驱动器230和第二磁盘驱动器 240。可以按照多种方式来配置该系统。例如,第一高级存储系统元件210可被 配置成提供两个驱动器215与220的级联,并且第二高级存储系统225可被配 置成利用另一对磁盘驱动器230和240来提供级联的磁盘驱动器215与220的 镜像。
图3是示出一个实施例中的对系统虚拟至IJ物理^I寸元件的处M:程的流程 图。当接tt自高级存储系统的主机接口的命令时,调用该元件。在框310,该 元fHt收导向高级存储系统所提供的虚拟磁盘驱动器的命令。在框320,该元件
将虚拟命令ttf成一个或多,理命令。在框330,该元件获得通过鹏t产生的 下一个物理命令。在框340,该元件向适当的物理设备发送该物理命令。在框 350,该元ft^收来自物理设备的对该命令的应答。在某些实施例中, #可 以不等待该来自物理设备的应答。例如,该元件可以假设命令将会成功并在接 收至(J所有物理应答之前对该虚拟命令作出响应,或者该元件可以在检查物理响 应之前等待直至:E^所有物理命令。在判定框360,如果存在多个通过鹏才产生 的物理命令,则该元件返回框330以获得下一个物理命令,否则该元件就继续 进行到框370。在框370,该元件就基于所接收的物理响应(如果有的话)生成 虚拟响应。在框380,该元件向计tm系统或设备総该虚拟响应,其中该元件 从该计^l几系统或设备中接收虚拟命令。然后该元件结束。
图4是示出一个实施例中的处理虚拟到物理,元件以生成虚拟响应的流 程图。在框410,该元件等待对物理命令的物理响应,其中该物理命令向磁盘驱 动器或其他设备发出。在判定框420,如果物理命令成功,则i亥元件继续进行到 框430,否则该元件继续进行到框460。在框430,该元件向虚拟响应添加来自 于物理响应、应当包含在该虚拟响应中的所有数据(诸如,如果物理命令从磁 盘驱动器中读取数据)。判决框440,如果存在更多发出的物理命令,则该元件 返回框410以等待下一个物理响应,否则该元件继续进行到框450。在框450, 该元件通过发送成功响应和所有所包含的数据来报告该虚拟命令的成功。在框 460,如果该命令失败,则该元件发送指示该虚拟命令没有成功的失败响应。在 成功或失败响应发^后,该元件结束。
其他实施例
现在将描述高级存储系统的其他几个实施例。第一个实施例描述了一种称 为StedVine的高级存储系统架构。其他诸如Polaris、 Pico和Milkyway那样的 实施例描述了该SteeMne架构的硬件实施例,即在芯片解决方案上提供了完整 的存储系统,使高级存储特征m用户市场。
SteelVine架构,于最近定义的SATA存储接口标准以创建一种全新的产 品类型艮P,芯片上存储子系统(SSoC)。基于SteelVine架构的SSoC f始所 有的SATA规范,并以全新且新颖的方式来解释和使用它们。该架构利用新的 SATA标准来将之前仅在高端、企业级存储子系统中可用的功能带入用量庞大、 低成本、基于商品的计算竞技场。
StedVine元件将标准的端口倍增器概念扩展为包含高级企业存储性能,诸 如灵甜也虚拟化一组物理驱动器的能力、对原生命令队列(NCQ)的支持和RAID (-1、 0、 I和IO)性能。为此,我们认为首先是StedVine产品提供了"增强的" 端口倍增器功能。
在某些实施例中,这些产品被实现为支持大量硬件、微码密集的芯片上存 储子系统(SSoC)。在标准的SATA主机适配器和m驱动器看来,这些产品表 现为"SATA电缆内的凸起部分,,艮P,它们表现为对主机的目标,反之亦然。为 了创建其属性不同于可用的物理驱动器的属性的虚拟驱动器的幻像,将主机生 成的并导向虚拟驱动器的命令包转换成新的指向所附连的物理驱动器的命令 包。由SSoC进行的转换以线速基于包含在该元件内的配置繊进行。该转换还 包括响应于单个传入的虚拟命令(例如,在镜像的虚拟驱动器上进行多次写入, 进行跨越多个级联驱动器的读取等)而生成多个物理驱动器命令。
重要的是要注意,尽管在高级描述中相类似,但SteelVine SSoC还是在架 构和功會让与标准的外部RAID控制器有很大的区别。特别是,SteelVine元件 并不被实现为通用处理器硬件;tJ:的软件。这意tt SteelVine SSoC可以低得 多的成本和复杂性按单个低成本单芯片桠元端口倍增器元件的规模来实现线速 性能。通过将单个的强制解决方案应用于许多问题来降低复杂性和消除管理成 本。例如,i顿单賴像来掛共增强的可靠性。该解决方案相X寸于传统奇偶RAID 解决方案在处理式和存储器资源方面需求更小,并通过使用低(甚至是降低的) 成本磁盘驱动器来实现其可靠性。
在某些实施例中,SteelVine架构通过应用模型来递送存储。用户不必了解 (或甚至知道)任何有关其如何运行的内容,它们仅仅是在它们愿意以对该J^共 的业务支付的成本获得就它们的理解而言(例如、大的、快速的、可靠的等)、 它们需要的功能。该基于应用的解决方案有助于销售用量庞大的产品。不能期 望该用量庞大类型的用户知道RAID意歸什么,更不必说了解它如何运行正 常足以判断哪些配置方案适合于它们。此外,该应用解决方案最小化存储服务 与主机计算机之间的接口。这是对用户的主要优点,因为它意味着可以无需改 变或配置主机而获得需要的存储服务。在主机硬件、BIOS、 OS和应用看来就 像是物理磁盘的存储设备可递送高级功肖^而无需对主机进行任何修改或添加任 何东西。
通过策略与机制的仔细分离,SteelVine架构有可能在广泛的不同4顿场景 内将SSoC应用于高可縮放性、高触摸性的RAID阵列,该广泛的不同使用场景 包括从源自工厂设置的固定配置到无需用户设置要求而进行任何动作(例如, 看起来像是单个驱动器的多驱动器单元,艮口,虹驱动器,或在3.5英寸封套 内的4个2.5英寸驱动器,该3.5英寸封套包括单个电源接头和主机端口),该 RAID阵列允许用户定义策略,且该阵列的每一个动作都受到仔细监控和登记。
以下章节定义了系统上下文,其中以SteelVme架构为基础的产品在该系统 上下文中运行,描述由该架构提供的关键特征,并提供了对主要实现问题的概 述,其中该主要实现问题围绕着4顿Polaris和Milkyway硬件的存储子系统。
SteelVine存储子系统鹏
SATA被设计成主机总线适配器(HBA)与磁盘驱动器之间的点对点连接。 由于SATA链路的带宽(即,1.5 Gbps、 3 Gbps或6 Gbps) ^!当前石鹏驱动 器的带宽,所以有可能将多个驱动器连接到单个SATA (主机)端口而不超出即 使是最漫的SATA^g各的带宽性能。为此,定义了SATA端口倍增器(PM)规 范,它允许在单个主机端口上附连多个驱动器。虽然SATAPM规范定义了单个 的多工或网络集线M型设备,但是硅图像扩展了该规范来创建一种新型设备, 即增强的端口倍增器(EPM)。 EPM是芯片上存储子系统(SSoC),它提供除了 PM的基本网络集线麟型功能之外通常与大的、昂贵的、复杂的存储阵列控制 器相关联的功能。
StedVine元{恍物理驱动器的集合转换戯个数量的虚拟驱动器,其中每
一个虚拟驱动器的属性都可增3驅过物理驱动器的属性(例如,更大、更决或 更可靠),其中虚拟驱动器根据物理驱动器的属性而创建。另外,更多的高级
SteelVine元件(例如,Milyway)包括添加的网格路由性能,该网格路由性倉誕 过允许在结构内连接元件来提供可縮放性。这允许将潜在的大量物理驱动器映 射到一lilt拟驱动器上,这些虚拟驱动器Xt潜在的大量主机可用。
SteelVine系列元件的一个设计目的是以对主机完,明的方式执行所有要 求的物理驱动器增强。实际上,SteelVine元件在线路看来就像是"凸起部分"; 它在主机看来就像是PM,且在驱动器看來就像是HBA。在主机看来,实际上 不可能在SteelVine元j顿供的虚拟驱动器与具有相同属性(例如,大小、速度 或可靠性)的物理驱动器之间进行区分。这确保了与多种主机系统之间的互用
性,而且消除了对开发、安装和支持大套的定制主机侧软件(应用程序、驱动
器、BIOS等)的需求。
将SteelVine系列中的最初产品(即,独立PM和EPM (Polaris)以及可縮 放的EPM (Mlkyway))设计皿单个高度集成的芯片上存储子系统(SSoC) 内递送完整的存储子系统性能。虽然SteelVine元件(及其相关的芯片上^A软 件)确实提供了几乎是完整的存储子系统功能,可能需要少量附加的元件(例 如,外部EEPROM、 LED、 LM87环境控制元件等)来创建完整的存储子系统。 以下描述为完整的子系统所需的元件以及包括完整的基于Polaris的存储子系统 的所有主要实体。
SteelVine架构的应用
以下段落提供这样一种描述,其中StedVine架构适应于存储接口体系, 该架构如何与当今现有的其他架构相关,且基于该架构的产品会如何显现。
StedVme架构是以创建具有在物理驱动器之上增强的属性的虚拟驱动器的 概念为基础的,其中物理驱动器根据其属性而组成。在该架构中,提供了这些 增强,同时向主机呈现物理驱动劉糊有的相同接口。结果,SteelVine架构可 以向所有支持SATA存储的系统^f共益处,而无需对现有的主机软件进行添加 或修改。这使SteelVine架构^lz:于BIOS、设备驱动器、文件系统、OS或应用 禾辨,而且能够在无一般的大量兼容测试需求负担的情况下被引入。它还消除 了高级存储功能与主机系统之间无法预料禾环合乎要求的所有类型的交互作用 的机会,这一般与RAID硬件的j顿有关联。
以低级抽象来引入存储功能增强的能力麟了广泛的益处。SteelVine架构 以其中一个最低级存储接口体系为中心即i央存取接口。对给定类型的驱动器 而言低于该级别的只有类型物理、链路和传输接口层。在驱动器协议系列内(例 如,SCSI)可以存在许多不同的子协议(例如,Ultra 320)以及许多不同类型 的物理、l!5各和传输接口 (例如,SAS、力铜FC等)。虽然在不同类型的磁盘 驱动器所提供的本地接口内存在许多差异(而且驱动器的±央级别协议规范还可 在它们的规范当中存在极大的不同),由现代磁盘驱动器提供的i央存取的通用抽 象保存了在所有类型的驱动器当中的通用性。
在最常见的捐媳中,如今流行的所有磁盘驱动器劍共了一组通用的读/写块 语义,它们遵循了以下原则
发起者(例如,主机)向选定的目标设备(例如,物理驱动器)发出命令;
该命令包括指示了将执行的命令类型(例如,读、写等)的操作码,还包 括启始±央地址和对启动后将影响多少±央进行的计数;
如果该命令是读取命令,则目标设备以要求数量的i央作出响应,从开始于 戶尼合定的块地址的驱动器中进衍卖取;
如果该命令是写入命令,则由激盾该命令的魏者劍共将写入该驱动器(开 始于给定的块地址)的指定数量的块。
虽然细节和术语改变了,但是i央级别接口的通用性质是相同的,不管包含 的是何种类型顿区动器。如今翻用的驱动器协议称为SCSI和ATA。这些协议 各自具有不同的涉及目标设备(例如,目标端口地ijl^t逻辑单元编号(LUN))
和存储位置(例如,逻辑i央地i顿块编号)的方式。然而,SCSI和ATA根本上 主要以相同的方式操作;它们基于设定的开始地址提供对给定数量的固定大小 单元(即,块鋼区)进蹄和写操作。 对比SteelVine与其他存储子系统架构
为了帮助理解SteelVine架构,对如今主导的存储架构进行研究。最简单和 最通用的存储架构类型称为直接附连存储(DAS)。在DAS中,经由HBA将磁 盘驱动器附连到专用主机。虽然存在几种该方案的变形(例如,包括多点总线 或网络集线器/多路飾器/交换机),它们允许将多个驱动器连接到单个HBA端 口,但通常随时将每一个驱动器连接到单个主机。DAS模型向主机提供了低成 本和复杂性的存储,其中成本因变于连接到主机的驱动器、电缆和HBA的数量, 而复杂性涉及安装HBA (及其必要的驱动器和支持软件)以及在HBA的存储 端口上附连驱动器。在包括一个以上主机的系统中,该方案具有低利用率的缺 陷,这是因为存储资源被分割且每一个驱动器皮绑定到单个主机。在这种瞎况 下,有可能某些主机具有过多的能力,而其他主机的能力太低。唯一的解决方 案是添加附加的驱动器。然而,在DAS架构中添加或移动驱动器会是,和昂 贵(就时间和精力而言)的实践,这是因为要添加或移除驱动器就必须频繁地 切断主机。除ltb^外,DAS子系统的可靠性和可用粗顷向于比需要的略少。这 归因于这样一种事实即,任何主机、驱动器或电缆连接装置的故障都导致在 受影响的驱动器上丢^t数据的存取。
开发存储区网络(SAN)来解决DAS架构的关于大型企业系统的缺陷。在该架构方案中定义了专业化存储网络(即,光纤通道(FC)),它允许以(不同
程度上)灵活的方式将驱动驗继接到一组主机。在SAN中,有可能细分驱 动器并将它们的各个部分分配到指定主机。如果特定主机失效,备选主机还可 能接管一组驱动器。该架构的优势在于允许(稍微动态地)灵活地对主机重新 分配驱动器(及其部分),从而产生可能相X寸于DAS架构更大的 可用性和 对驱动器更高的禾拥率。然而,SAN架构就存储(包括驱动器、电缆和控帝螺) 的价格与对于设置和管理该存储子系统的复杂性而言成本相当高。
DAS和SAN架构都是运行在i央级别上的存储子系统。然而,称为网络附 连存储(NAS)的下一级架构运行在文#^象级别上。NAS架构包括充当文4牛 服务器的主机,它连接到驱动器集合(通常经由DAS架构)并在网络(一般是 局域网)上iHiM其他主机的文件存取。因为NAS架构运行在不同的抽象级别, 所以不可能在其特性(例如,价格、性能、复杂性)与此处所述其他架构的那 性之间进行直接对比。
最后,在图5中示出该StedMne架构,它与DAS禾口 SAN架构共享特性。 在某种意义上,StedVine架构樹共了一幹'盒内SAN",其中由驱动器阵列表示 的存储性能可以按照直接且经济合算的方式与一组主机相关联。SteelMne架构 在DAS架构的成本级别和简单性上递送SAN架构的灵活性和有效性。另外, SteelVine架构对存储体系的i央级别寻址,而且同样地,对NAS架构内文件服务 器元糊共益处。
在此应当注意的是不对不同的RAID级别寻址。它们并不表现出存储架构, 而是一系列存储子系统实现技术,用于提供增强级别的存储功能。在某些 SteelVme架构的实施例中,借助于简单强制手段(例如,镜像,相对于奇偶RAID) 来创建所需级别的性能和可靠性,用以实现价格/性能目标并满足为最初的 SteelVuie产品选择的用量庞大、对成本敏感的目标市场的必要条阵。本领域的 普通技术人员将理解还可以使用其他通用的方法来实现RAID功能(例如,奇 偶RAID)。
SteelVine架构的示例实施例
可在多种不同场景中应用SteelVine架构以其不同的(或增强的)特性来创 建虚拟驱动器的能力,这^f寺性超出了创建虚拟驱动器所依据的物理驱动器的 那些特征,其中这些不同的场景是从连接到单个主机的少量驱动器到较大的充
当大主机集合的驱动器阵列。在该范围的低端,可组合几个(例如,2个至4 个)2.5英寸驱动器与单个SteelVuie SSoC来创建适合于规范3.5英寸驱动器封 装内的±央,而且该块包括单个SATA端口和单个电源接头。虽然在物aUl表lL 为单个3,5英寸驱动器,但是这种单元可以劍共大量不同的特征,包括高度可靠 的(即,透明镜像的)驱动器或多个虚拟驱动器(每一个都包括它们自己的关 于大小、性能和可靠性的专门特性)。同样地,可以把多个(例如,2个至4个) 3.5英寸驱动器组合到一个构建块(Brick)内,而且它们也具有单个SATA和电 源接头。
可以将构建块用作构建各种不同类型存储阵列时的基本构件。图6示出了 某些可以利用构建±姊仓犍的不同类型的架构。在图6a中,将四个驱动器的构 建块用作标准桌面侧PC塔内的单个存储单元。在i敏用中,构建i央仅占用连接 歪l住板的单个SATA连接,而不管它呈现出的虚拟驱动器的数量。其优点在于 SATA端口以有限的数量可用。图6b示出独立的外部配置中的相同基本构建块。 在该应用中,构建i央具有它自己的封装和电源,并经由外部SATA (eSATA)连 接来与主机相连。独立的构建块还可以包括一个附加的接口 (例如,RS232、 USB、以太网等)以供对该阵列的频带外监控或控制。构建i央还可包括存储l 设备端口 (例如,紧凑型闪存)来允许向构建块的SteelVine SSoC中加载配置
信息或从中存出配置信息。
利用StedVine架构的可縮放特征,可如图6c所^i也将几个构建土央组合至瞎 于机架的存储阵列中(称为架位(Shelf))。在该示例中,四个构建块共享一对 冗余的电源供给,而且每一个构建i央都连接到中央控制器,该中央控制器可提 供附加的功能(例如,奇偶RAID,转换成诸如FC或SCSI的另一存储接口, 等等)。架位的驱动 可 : StedMne SSoC相连,而且它们可经由eSATA连 接与一个或多个主机或控制器相连。
最后,图6d示出这样一个示例,其中多个架位彼此相连以创建存储机架。 可以按照多种不同的拓扑结构来配置这种存储机架,这取决于每一个架位内的 驱动器如何连接到SteelVine元件以及该架位内的元件如何互连。在一种极端情 况下,旨机架可以通过单个SATA连接来与主机相连。
存储阵列控制器元件
典型的基于Polaris的存储子系统由三个顶层类实体组成,即如图12所示的
主机、存储阵列控制器和驱动器。该图还示出从事制造基于SteelVine的存储子 系统的顶层硬件禾嗽件元件。如图所示,主机硬件包括某种形式的主机总线适 配器(HBA),它连接主机的内部I/0总线与存储互连链路,其中该存储互连链 路与存储阵列控制器相连。
某些存储阵列控制器支持除了其主要存储互连链路之外的连接。这些链路 可以仅旨在供偶尔i顿(例如,在工厂中,现场重新配置等),或者它们可以提 供'长期的"附连,该'长期的"附连允许对存储阵列控制器进行动态存取(例如监 控、代码更新、策略输入等)。我们称这些"频带外的"机制为追加的互连链足各。 可以利用各种不同的通信技术(例如,以太网、USB、 RS232、 WiFi等)来实 现这些频带外的通信信道,而且这些通信信道可以包括在其上分层放置广、泛的 不同通信协议(例如,HTIP、 TCP/IP、专有协议等)。还可通迚'频带内的"通 信信道来提供与频带外的信道所提供功能相同的功能,艮P,通过在主要存储互 连链路内创建子信道(例如,SATA)。
除了追加的通信^^各之外,存储子系统还可^f共一会砂卜部可存取的I/O设 备,在此称其为"面板"。该面板可将任何来自单个LED和开关I/0的动作提供 给非常精心帝怖的带有音频输出端的彩色触摸屏LCD。就像频带外的信道那样, 面板可向用户呈现关于存储子系统的状态信息,而且可采用来自用户的输入用 以配置和管理目的。面板还可向用户提供可移动形式的非易失性存储接口 (例 如,USB、紧凑型闪存等),它可以用来M^和恢复存储阵列控制器的配置和状 剤言息。
为了支持各种各样的频带外的口和广泛的不同类型的面板,可把当前一代 的SteelVine SSoC设计成包括对外部微控制器的单个接口。可选髓当的微控 制器来处理所需的频带外通信链路以及所需形式的面板。外部微控制器轻易地 舰外部控制接口与SSoC接口。正如稍后戶腿,还可i顿这對卜部微控制器来 实现对于给定的存储子系统的策略。
值得注意的是,可通过分离的微处理器来处理后面的这些功能中的每一个 功能,或者可将几个(或甚至是全部)这些功能组合到一个公共微处理器内。 为简单起见,在该讨论中,我们描述了一种单独的外部微处理器,它处理戶万有 所需功能。该文件中的示例J顿了单个SSoC;然而,SteelVine架构允许将多个 SSoC组合到单个逻辑实体内,且在具有集合的资源之和的情况下具有与单个
SSoC几乎相同的性能和功能。因此,可以把单个SSoC用作对可縮放元件集合 的简化表示(例如,Milkyway)。 硬件元件
存储阵列控制器硬件通常包括对多个驱动器与主机的存储链路之间的互连 进行管理的元件,以及其他对分选的动作迸行管理的硬件单元,其中这些硬件 单元与所组装的驱动器集合的物理封装有关。这些与物理驱动器封装有关的动 作通称为机架管理(EM),并且包括如下功能控制LED和监控电源、,、 Mit等。基于StedVine的存储阵列控制器硬件主要包括(一个或多个)SteelVine SSoC,而且经常包括附加的微控制器来处理机架管理、主机与存储阵列控制器 之间的频带外通信以及用于SteelVine SSoC的外部策略逻辑。
在Polaris SSoC内,嵌有硅图像所有权的微控制器(内部称为Pico)执行所 有初始化、控制面、虚拟化和外部接口功能。Pico CPU是一种高性能、低成本、 内嵌32比特RISC的处理器,它具有Harvard存储架构(即,分离的指令和数 据存储器)。指令存储器由64KB的片上SRAM组成,f^存储器由16KB的片 上SRAM组成。4OT—个分离的控制寄存器地址空间来与Polaris芯片上的各个 功能单^1信。
Mlkyway SSoC提供了 Polaris特征的超集,它包括添加用于内部互连的一 组内部交换链路(ISL)连接、硬件支持路由层、增强的mA式处理器(g卩,Pico n)和交叉开关(相对于总线)。内部交换链路(ISL)端口和路由硬件允i^E Milkyway SSoC组合到一种结构内,它允许縮放Polaris的功能以在公共存储子 系统内包括大量主机和驱动器端口。在稍后的小节中将衛共对ISL链路及其创 建可縮放的存储阵列控制器的用途的进一步描述。
Pico n是为StedVine系列SSoC设计的第二代^A式控制器,并结合在 Polaris内发现的优于Pico I芯片的大量改善。包含在Pico n内的优于Pico I的增 强为增加四个地址断点寄存器和单步调试方式(均用于支持基于gdb的调试), 放宽分支指令校准限制,以及删除未使用(加载和旋转)的指令。不管它们有 何差异,相同的工具链支持PicoI和Picon。
软件元件
除了以上定义的硬件元件之外,基于Polaris的存储子系统包括各种不同的 软件元件。在顶层上,在这类系统中有几种不同类型的软件,每一个软件根据 系统内该软件所存在的层、该软件在其内执行的环境的限制、以及该软件本身 的特性(例如,并发程度、实时等)来区分。可以把主机内的软件类型分成以 下类型设备驱动器、系统软件和应用禾將软件。
设备驱动器是这样一种代码,它借助于HBA硬件来管理存f,接并向主机 内更高层的软ft^供对存储子系统的特征和性能的存取。虽然该代码应当在很
大禾雖上不知道Polaris与标准PM的任何不同,但是存在大量供应商指定的对 PM规范的寄存器集合的扩展,即设备驱动器会了解以便于充分禾,Polaris设 备。另外,设备驱动器应当支持传送子系统生成事件的基于3晚询方式。这意 为了允许主机软件逐渐察觉存储子系统内显著的状 化(例如,驱动器 上鹏线、EM事件等),必须支持某种回调或Pllh输入输出控制(ioctl)类型 的机制。同样地,如果有必要通过频带内的通信(即,禾,SATA链路)来与 Polaris子系M信,则设备驱动器应当提供对此的支持(或至少是不fflih其发 生)。这(一般)是核心层代码,即高度OS (以及版本)专用的,需要深Ai也 理解内核编程以及大量系统硬件详尽知识(包括主机、HBA、 Polaris、 EM和驱 动器的相关知识)。其效果反应在整体系统层性能中。
系统软件包括低层系统代码,该低层系统代码与设备驱动器交互并执纟亍不 涉超接的用户交互的功能。例如,监控存储子系统射艮告所有的异常瞎况(例 如,驱动器故障、温度或电压偏移等)的后台程序可在后台运行,注册其对设 备驱动器的兴趣,并在其任一监控事件发生时获得通知。同样,后台,歸可存 在以处理策略事件(例如,驱动器上鹏线转变),并响应于某种预定义策略逻 辑的执行而执行对SSoC状态的更新(例如,在添加新的驱动器时,将其级联到 给定逻辑驱动器的末端,或者启动关于镜像集的重建操作)。这类代码需要了解 系统层(但不必是核心层的)编程,而且适度地深入了解基于SteelMne子系统 的特征和功能。这并不倾向于成为高性會域资源约束的代码。
应用辦软件作为标准应用辦而运行在OS顶层,而且通常执行涉及直接 用户交互的功能,例如提供对存储子系统所提供特征的用户存取的图形用户接 口 (GUI)或命令行接口 (CLI)代码。这类代码要求强调人为因素方面更甚于 存储子系统的任一特定技术细节,而且应该集中在如何抽象并向用户提供底层 性能。该代码在资源丰富的环境中允许,其中唯一盼性能问题倾向于人成为与 交互相关联的问题。
存储子系统内存在的软件分为两大类固件和微码。
固件是在存储子系统内的支持微控制器上运行的代码。该代码执行诸如
EM、外部通信和SteelVme策略功能等的事瞎,并旨在在与主机软件相比资源 限制更多且性能敏感的环境内运行。否则,该代码在本质上类似于上述有关主 机的系统软件。该代码可以在标准实日彌作系统(RTOS)或定帝啲运行日彌作 系统之上运行。在很大程度上,固件将在存储子系统内执行低层的硬件操纵。 极端地,该固件可以提供相当高级的功能,例如通过以太网连接提供对子系统 的外部(频带外)存取的网络服务器。然而,事实是它必须在低成*/性能的微 型控制器上运行,该微型控制器要求写入不同于类似基于主机版本的代码。
微码是在StedVine元件上运行以实现SSoC本身功能的特定类型代石马。 SteelVine元件包括硅元件(即,Polaris)和微码元件。微码密切参与SSoC的操 作,因此微码需要深度了解芯片本身的最详细细节。它在高度资源约束和性能 敏感的环境内运行。它涉及较高的并发程度,并要求遵守特定的编码因素以符 合所有约束条件。经常对此代石骗供某种形式的定制运行环境,这是因为标准 的RTOS通常不能在此JOT。
内部交换链路(ISL)互连结构
不是以树就是以网格拓扑结构的方式连接在一起的(即,级联的)高级存 储设备可确定它们与类似的高级存储设备互连。该确定可根据特定端口、开关 设备、协议信号等的使用来进行。 一旦被确定,该元件就可^ffi通信方法而非 标准的磁盘接口协议(例如,SATA)。这样一种通信方法是内部交换链路(ISL) 协议。在ISL的一个实施例中,当総与接收设备之间存在一个以上的路径时, 实现ISL的高级存储设备将利用最有效的路径M31网格路由消息。ISL协议在 任意互连拓扑结构内提供了有效的基于消息的通信。在ISL网络内,每一个高 级存储设备被视为是该网络的一个节点,并被赋予唯一的节点ID。 ISL把每一 个消息分成小单元,称为流控制单元(或微片),它们在节点之间Sit信息。每 一个微片以一个单元发送,但消息中的后续微片会因为接收节点中的拥塞而被 P腺。每一 ISL链路都是全只1X的,而且每一个方向被逻辑i戯吩成两个或多 个虚拟信道(VC)。消息的所有微片都将使用任一给定链路的单个VC。虽然由 于流控制而阻挡了一个VC上的消息,但是不同的消息可利用另一个VC而在 链路上继续前行。在一实施例中,其中一个VC专供短消息之用。在初始时和
当为网络添加节点或从网络移除节点时,ISL节点交换"洪水演貧,(flood routing) 消息。这些消息包含始发节点的ID和该徵良離的"中转"(或中介)节点的数 量。通过存储消息至哒的链路和对每个其它节点的最小瑕歐计数,节点就可确 定用于向网络中每个其它节点发送消息的最佳输出链路。该信息存储在路由表 中。丢弃且不转送来自给定节点的后来洪流演算消息,它包括比已知差的頃歐 计数。这确保路由处理快速终止。如果到另一个节点的距离(即,瑕歐计数) 在一个以上的链路上相同,就可在任一这些链路上发送消息。这用来实现链路 中的负载共享。每个消息的第一微片包括期望目标节点的节点数量。当消息的 第一个微片到达节点时,检验该微片以确定该消息要求的目的地。如果该目的 地是接收节点,则该消息(包括第一微片和在同~^路的同一 VC上的一个或 多个后续微片)被该节点所接受,并被引导至唭中指定的虛拟驱动器。否则, 查阅路由表以确定用于向目的的节点转发该消息的最佳输出链路。如果一个以 上链路可用,就向还未使用的链S繊供优于已经使用的链路的优先权,或者向 最近较少^ffl的链^^f共优于最近较多^ffl的链路的优先权。 平衡的可縮放元件设计
平衡的子系统被定义为按照确保在通常的使用过程中无单独的资源成为 "瓶颈"的方式提供。StedVme架构解决的主要难题在于允许通过^f顿单个元件 并保持平衡来创建广泛范围的子系统尺寸。SteelVmeSSoC的笼统抽象模型具有 针对不同类型链路(例如,主机SATA、驱动器SATA禾口ISL)的未定义数量的 端口。然而,对特定数量的每一类^5各的选择是在SteelVine元件设计中的重要 问题。除了选裤一类端口的数量之外,专用于实现SteelVine功能(例如,虚 拟化、增强等)的资源的数量是所得SSoC的成本与性能的主要决定因素。 SteelVine架构被定义成使扩駐机与驱动器连接的数量能仅利用少量(理想地,
一种)元件类型跨宽泛范围地(独;ii也)縮放。
为了支持利用单个、低成本元件的较高的可縮放程度,就必须创建可构建 成较大子系统的原子单元。该原子单元充当公共构件以利用广泛范围的不同数 量的主机和驱动器端口来创建存储开关。该解决方案优于不是招致有关包括未 使用端口的开关的额外费用、就是招致针对每一种不同大小开关实例的分离的 NRE畅的备选方案。此外,适当定义的构彭央单元将包含实现最小子系统的 所有基层功能所需的最小资源数量,同时包括足够的资源以确保所得的子系统
保持平衡(即,没有因任何给定类的资源类型数量不足而出现瓶颈),这是因为 组合了更多的单元救犍不断增大的子系统。
通过一种结构来实现可縮放性,并通过组合包括在原子构建块内资源的定 义与这些±央组合在其中的拓扑结构来实现平衡。超立方体的维度限定了可能的 可縮放程度。根据灵活的路由结构,该互连拓扑结构可以是任意的,其中某些 将比其他的更好。等待时间和带宽是围绕着开关可縮放性的主要问题。瑕歐计 数限定了等待时间。维度和拓扑结构限定了带宽。N维超立方体是理想的拓扑 结构,这是因为它最小化平均的瑕歐长度并提供统一的二等分带宽(即,获得
相等的集合带宽,而不管你从哪里对该架构进行二等分)。ISL端口的数量限定
了该超立方体的维度。在最糟的情况下,所有主机都试图存取距离主机节点最
远的驱动器,从而每一个节点都必须支mM信量,以及来自该节点的本地
主机的通信量(前往远程节点)和来自本地驱动器的通信量(前往远程节点/主 机)。
为了实现较高的可縮放程度和优化它们的价格/性能特征,利用大量"平衡
的"的主机、驱动器和交换机间链路与相关资源来构造SteelVine元件。在此将平 衡的元件设计定义成其中单个芯片具有足够(带宽和计算)资源来支持主丰/V驱 动器交互的元件,而且当添加了附力啲芯片时,每一个附加的芯片提供了为确 保齡子系统保持平衡所需的资源。 策略与机制的分离
在这种系统的设计中,经常有较好的设计实践来分离策略(即,应该做什 么)与机制(即,如何进行)。已经利用脑海里的这些原则设计了 SteelVineSSoC, 从而产生了几种不同的设计方案,以下描述主要的类型。
在基于SteelVme的产品中,微码的主要功能是实现提供了基本功能SSoC (即,SATAPM功能,添加了虚拟化和RAID特征)的机制,连同一组其他的 低层机制(例如,从磁盘到石驢的复制、夕卜部通信、远程存取等)。该代码执行 子系统要求的所有"恒稳态"操作。然而,当某些"异常'事件发生时(例如,驱动 器故障、新的驱动器上线、驱动器离线等),就必须对如何响应该事州故出判决。 把货略"元件定义成处理这些事件并确定响应于它们中的每一个而要采取的适 当动作。该逻辑以称为策略模块的代码来实现,其中可以在几个不同的位置上 执行该代码(如图7所示)。
^A式策略
在第一个示例方案中(即,图7a),把策略模i央嵌入SSoC本身内。当策略 事件发生时,调用策略模块,而且芯片判定它自己需要做什么而无需参考任何 外部实体。该策略判定处理的唯一外部输入来自经由芯片上的通用输入管脚来 递送的短接选择。根据这些短接选择管脚的设置,可以从相同的策略块中引出 不同盼性能,或替换地,可以选择完全不同的^A^策略。
该策略逻辑与SSoC微码中的机制分离,而且在策略模i央与杨O机制之间存 在明确定义的接口。可以往SSoC内加载任意的策略模块(只要芯片的代码与数 据空间允许)。策略模块的执t预常不是时间严格的,所以性能相关因薪艮小(而 且应该在SSoC内适当降低的优先级上执行策略模块)。
因为这类嵌入式策略可以仅依赖于相当稳定的信息,基于该信息可将如何 对不同事件作出反应作为判定基础,所以可使用这类嵌入式策略来实现相当简 单的策略。性能约束条件以及代码和数据大小限审鹏禁止实现要求过度,计 算的策略。在SSoC的EEPROM中存储与实行中的策略有关的回归状剤言息, 其中该SSoC的EEPROM空间非常有限。
对于大多数成本敏感的应用程序来说,使用嵌入式策略最好被限制为仅仅 是最简单和通用的策略。这是因为即使为了容易地添加和移除而模块化该策略 模块,也必须在每次策略模块改变时重新使SSoC完全生效(因为它表示不同的 微码)。此外,如果可能的话,很有可能不以嵌入的方式来实现任何将需要参考 外部实体或用户的策略。
本地外部策略
在图7b中例示了第二种用于运行策略模块的方案,其中在SSoC本身的外 部(或本地)的微型控制器内实现该策略模块。可利用更加放宽的(尽管仍然 不是完全无约束的)资源约束来实现更复杂的策略。由于非常低成本的单芯片 微控制器(例如,PIC)的存在,所以该解决方案的附加成本可以非常低。该解 决方案允许产生和确认策略自由的(B卩,纯粹机制的)SSoC,其中可以通过添 加一个小元件(等效于基于I2C的EEPROM)来添加定制的策略。替换地,可 4顿更高功能的微型控制器,该微型控制器还可以提供对存储子系统的外部(频 带外的)接口的支持,例如,以太网、USB或RS232链路、紧凑型闪存或PCMCIA 卡接口、 IS07816智能卡接口,或者802.*或蓝牙无线链路。
可以通过外部接口雜择或配置策略。该解决方案具有附加的益处,它允 许在存储子系统之外存储与策略模块相关的状态信息。外部处理器(尤其是具 有外部通信链路或固态存储设,口的处理器)可以提供一种将临界状态M3、 到"离站/远程"位置的手段。这防止驱动器在策略处理器皮替换时而变得无法存 取。
以这种方式来配置外部策略控制器使得所有可能的事件能在无需用户干预 的情况下处理,即,做正确的事情而无需请求用户输入。这意味着对于许多事 件而言,可以采取一种简化的、强制或最糟情况类型的动作。例如,必须以简 单的响应来回答对新的驱动器出现在系统内时应当做什么的问题,该简单响应
总是正确ite行而不管情形如何,例如,总是以确定性的方式把新的驱动器分
配给预定义的逻辑驱动器,对'空闲池"分配新的驱动器,并等待用户指引的配 置等。
基于主机的策略
最后,图7c所示的方案表示了在主tlh实现策略模块的情况。可以利用该
解决方案来实现任意复杂的(且规定的)策略,而且该策略要求人工介入。
该方案有可能与以上定义的本地外部策略示例相同,其中主机执行策略模
±央而非本地微控制器。在该情形中,可把基于主机的策略模i央称为"后台"处理,
即,应用程序可以运行在主机上而无需任何用户可见的表现形式。在本地外部 策略的情况下,主机可代替策略处理器,并运行相同的策略计算作为主机后台
程序。后台程序可以设置在主机上并安静ite行,对来自存储子系统的事件作
出响应,并向SSoC状态发送更新。有可能包括完全 页定义的策略模块,它运行 在主机上作为后台程序而无需任何用户输入,或者有可能包括根据用户定义的 配置文件、CLI或GUI配置和驱动的策略模块。
在为了确定响应来自存储子系统的事件所要采取的适当动作而应当参考用 户时,存在许多情况。除上述后台程序解决方案之夕卜(不涉及任何以恒稳态操 作与用户的交互),有可能包括在策略判定处理中涉及用户的策略。可以创建基 于CLI和GUI的应用禾M^^ig行人在回路中的策略模i央。这些应用禾,处理来 自于存储子系统的事件,产生与用户的效(例如,通过弹出窗口),并更新存 储子系统的状态。
可经由频带内(即,禾佣SATA链路)或频带夕卜(即,利用某种诸如以太
网、USB、 RS232、 WiFi、蓝牙那样的辅助连接)通信链路来执行存储子系统与 其基于主机的策略模块之间的互连。在以下章节中将更详细地描述用来与外部 策略模块通信的协议和X寸频带内相对频带外通信链路的使用。 策略实g^择
无论4OT以上哪一种方案来实现策略,StedVine SSoC丰几制与其策略t莫i央之 间的接口都在逻辑上保持一致。由SSoC机制生成的事件(一般涉及驱动器的加 入和离开)去至lj策略模块。然后,该策略模土央运行某个逻辑来判断作为响应应 该执行什么动作(一般包括更新SSoC的虚拟表)。禾,更新机制将这些动作应 用到SteelVineSSoC。
还值得注意的是,除了上^H种方案之外,还存在各种混合方案用以实5见 基于SteelVine的存储系统的策略模块。例如,可以f顿不是主机的非本地微控 制器。在较大的系统中可以存在多个主机,其中该较大的系统包括StedVine存 储,而且可以假设单个主机执行对于较大系统中每一个SSoC的策略功能。
以上定义的每一种方案(以及各种混合选择)都具有不同的益处、成本、 性能和限制。第一种方案(嵌入式策略)具有与单芯片解决方案相关的简单性 和低成本优势。虽然可能利用该解决方案来实现许多有用的策略,但它是最受 限制的方案。第二种方案(本地外部策略)在相当大范围的不同成本上提供广 泛的性能,其中该大范围的不同成本是从略高于单芯片解决方案到喲氐于基于 主机的解决方案。事实是可以把外部策略模i央"机载'到用于其他功能的微控制 器上(例如,机架管理和外部接口处理器),使该解决方案成为合乎需要的方案。 虽然可以认为第三种方案是最具成本效率的(利用主机内现有的资源),但是该 方案具有显著的缺陷。基于主机的策略解决方案运行计数器来达到创建存储子 系统的目的,其表现为使用简单的电子设备,它对任何主机起作用且无需用户 干预来执行它们定义的功能。基于主机的解决方案要求在主析上安装软件,其 中必须创建该软件并确认供具有许多版本的OS使用。该解决方案TO费主机资
源,倾向于每单元要比较小的mx式控制器昂贵得多。此外,如果主机的置换
导致了策略屑擅信息的损失,就会折就 的存取。 SteelVineSSOC的特征
StedVine架构可以存在许多不同的实现方式,但位于i魏构杨。、的元件都 共享一个通用特征集并导致一个通用特性集。在本小节中定义了旨SteelVine SSoC系列的通用特性集,并在以下小节中描述由特定实现来实施的特征子集 (基于Polaris和Milkyway硬件)。
在主机看来,SteelVine元件表现为标准端口倍增器背后的一个物理驱动器 集。这些呈现在主机面前的驱动器不是(必然为)实际的物理驱动器,它们实 际上是虚拟驱动器。它们对主机显现为其附加的(有利的)特性(例如,大小、 速度和可靠性)不同于物理驱动器的那些特性的驱动器,其中根据物理驱动器 的那^t性来创建该虚拟驱动器。SteelVine元件的主要功能^3It盾一套明确定 义的规则以及某种(固定或动态可变的)配置数据,以该SteelVine元件的有效 物理驱动器集为基础创建和保持虚拟驱动器。
主机应该无法(在理论上)检测到呈现在它面前的虚拟驱动器不是实际的 物理驱动器(利用所定义的附游性)。可出于各种实际目的将此幻像撇开一边, 然而出于所有的意图和目的却难以区分SteelVine SSoC所创建的虚拟驱动器与 物理驱动器。同样地,在极度退化的情况下,可以配置SteelVine元件以劍共与 标准的、桠元的SATA端口倍增器的功能相同的功能。
通舰主机生成的SATA命令流执行转换来创建虚拟驱动器的抽象。招艮 大程度上可以通过简单的表格查询操作来实现这些转换,其中可以快速且轻易 地把导向虚拟驱动器的命令(即,虚拟命令)转换成一个或多个物理驱动器上 的(可能多个)命令(即,物理命令)。在一些情形中,可以通过替换命令中的 fM轻易地进行转换(例如,目标驱动器和起始扇区)。其他情况要求响应于单 个虚拟命令而生成多个物理命令,例如,跨越级联的物理驱动器,复制对镜像 集的写入等。在前一情况下,可使用简单的表格査询功能来执行从虚拟到物理 命令的转换。在后一种情况下,必须存在某种为了执行所需的分岔/^类型操 作和处理各种异常情况(例如,驱动器故障、命令重试等)而执行的附加逻辑。
可以禾拥端口倍增器规范所提供的寻址机帝睞完成对多个虚拟驱动器的支 持。在非常高层的视图看来,由主机发布的SATA命夠括 包,该 包 定义了将要执行的操作类型,加上执行给定操作所需的自变量。虽然存在许多 不同类型的命令,但是关键的感兴趣的那些命令,一系列磁盘存储i央(还称 为扇区)执行读取或写入操作的命令。 一般的读取操作具有这样的自变量读 取起始块地址(通常称为逻^i央地址(LBA)的48比特值)和要读取的块的编 号。主机向驱动器发送该命令(从磁盘中的给定位置),并返回所需数据块。同
样地,写入命令具有相同的地址和计数自变量,而且还包括要写入该磁盘(在
给定的位置上)的数据±央。除lfet外,SATA端口倍增器规范允许包含附加的自 变量,即从最多达14个不同的物理驱动器中选择哪一个作为给定命令的目标。 为了创建虚拟驱动器,StedVine元fH吏用目标驱动器编号総择转换信息,其 中该转换信息定义了给定的虚拟驱动器,并以该信息为基础生成一个或多个物 理命令,其中这^t/理命^a括适当的物理LBA和i央编号。该读胁写入 并
不被修改为这些转换中的一部分。在图8中显示了从虚拟到物理的命令转换示 例。目标ID选择i"顿明卜賴格,并跑始LBA和土央计数自变量定义将j顿
哪一铺格条目来虚拟化特定命令。 组合SteelVine元件
StedVine架构提供了"级耽'SteelVine设备以允许从单个主机端口存取大量 物理设备的育g力。
SATA n端口倍增器规范提供了 4比特的目标寻址,这允许存取最多达15 个物理磁盘驱动器。该规范明确规定了不能级联端口倍增器。该约束的基本原 理是不存在用于将磁盘寻址延伸至低层处理器的机制。然而,可以利用SteelVine 的虚拟化能力来克服劍蹄U。例如,主机不能连接到简单的端口倍增器(根据 SATA n规范实现),其中在端口倍增器上的每一个驱动器端口都被连接到实现 单个虚拟磁盘的StedVine设备。在该StedVine设备以下可以是几个虚拟化后(例 如,级联、条带化等)向端口倍增器劍共单个虚拟驱动器的物理驱动器。这样, 克月盯对端口倍增器规范的单层限制。
注意,反而是以上示例中处于低层的SteelVine设备可以连接到附加 SteelVine设备,该SteelVine设备又虚拟化几个更多的物理驱动器,再次向以上 设备呈现单个虚拟驱动器。在某种意义上,上面的SteelVine设备创建了新的虚 拟驱动器,它包括其他由低层SteelVine设皿供的虚拟驱动器。很明显实际上 对按照该方式 联的StedVine设备的层数没有限制。注意,对于无法与简单 端口倍增器(g卩,非可察觉的端口倍增器)通信的主机而言,顶层设备相反可 以是向相连主机劍共单个虚拟驱动親见图的SteelVine设备,艮口,可以{柳顶层 简单端口倍增器,但这在该场景中并不如此要求。
由于SteelVine设备的每一层都按指数规律递增可以存取的物理驱动器的数 量,因此实际上不可能限制能够与主机相连的物理驱动器的数量。然而,存在
对可用的级联深度的实际限制。例如,将预料每一层因附加的等待时间而稍微 降低整体性能。
当虚拟化一组物理驱动器时,所执行转换的本质是利用发往虚拟驱动器的
命令中逻微地址(LBA)的一部分鄉择 开始的低层或构成的驱动器(物 理驱动器或级联的虚拟驱动器),并用LBA的余下部分,择元件设备内的地 址。也就是说,虚拟化允许部分LBA提供附啲比特用于離寻址。也就是说, 级联如何克服SATAII端口倍增器规范内固有的4比特地址限制。 功能逻辑层
SteelVine架构掛共除了根据一组物理驱动器创建虚拟驱动器之外相当多的 功能。除了基本的SATA端口倍增麟功能和以上定义的简单虚拟紋外,提 供了产生增强的虚拟驱动器功能(例如,提高的速度和可靠度)所需的特征以 及为了将驱动器和主机的数M放,过单个SSoC所llj共的数量所需的那些 特征。图9示出规范的StedVine SSoC,它的外部接口包括某数目的与(一个或 多个)主机相连的高速端口、几个驱动器和其他可能的这种SSoC (为了容许縮 放到超过单个芯片所支持的主机和驱动皿量)。
以下把SteelWine架构中整组特性定义为一组在逻辑上独立的层。图9所示 的功能逻辑层出现在提出了功能的用途分级结构和抽象的各功能存在的相关层 的组织当中。(这些层未必是必须被实现为独立的功能,此外,荆一所有的这些 特征都必须出现在特定产品当中)。
以下的小节描述了规范SteelVine元件的不同逻辑功能。这些功能包括支 持SATA驱动器所需的机制、允许存取大量远程驱动器的特性(通过由StedVine 元件集合构成的结构)、基本的从虚拟到物理转换的逻辑(g卩,在物理驱动器的 区域之外创建虚拟驱动器)、提供虚拟驱动髒寺性的附加增强的机制(例如,速 度或可靠性)、用于把虚拟驱动器^1"到特定目标ID的机制(对于给定主机) 以及允i恍SATA协议转换戯他(可能是更高层的)助、议的特性。
SATA层
在某些实施例中,SteelVineSSoC的主要外部接口连接(g卩,主机和驱动器 端口)全都是SATA接口,为此StedVine元件架构中的第一逻辑层涉及支持 SATA接口。除了由SATA I规范的SATA物理、链路和传输层定义的基本能力 之外,该层还劍共对在SATAII规范中定义的原生命令队列(NCQ)和在SATA
端口倍增器规范中定义的特性的支持。
在Steel Vine元件上有两种S ATA接口,即目标(g卩,主机)端口和启动器 (即,驱动器)端口。如上所述,SteelVine架构力求顿元件内将包含的每一种 链路的数量的选择上获得平衡。除lfet外,在SteelVineSSoC内的SATA端口之 间不存在其它差异,每一种SATA端口将具有相同的功能,而且在特定类型的 端口的於实例之间不应当存在特殊化或差异。特别是,即使SATA端口倍增 器规范要求特别处理物理驱动器端口 O(为了支持遗留的启动操作),在SteelVine 元件上的物理驱动器端口之间也不应该存在差异。这是必要的,因为(以下所 述的)虚拟化和舰功能允许i顿倒可物理驱动器来创建虚拟驱动器0。
物理、^g各和传输子层
针对SteelVine元件而作出的硬件/软件实现折衷受至批良策略/机制分离原 则的严重影响。这些方针提出了一种方法,其中由在某类处理器上运行的软件 控制数据包,但数据本身通过专门的硬件流动。该方法分离数据面(即,高性 能、低层的数据移动机制)与控制面(g卩,具有更长时间常量的高层、面向控 制逻辑,从而性能约束不那么严格)。在此所采用的硬件/软#^斤衷方法提出应当 在此提微更件机制来实现SATA物理、链路和传输层的所有标准化特性。
这意 硬件机制最大可能地实现在SATA规范中定义的逻辑(g卩,状态 机)以允许主机和驱动器端口以标准方继作用。然而,应当存在"勾连,(hook) 以允许将不同的策略应用到这些机制。M SATA端口应当有可能自动生自 各种标准SATA事件(例如,初始化、空闲、电源管理、仲麟)的响应,而 同时由微码定义的软件策略逻辑以与给定策略一致的方式检测、响应并生成事 件。例如,虽然硬ft^共自动检测SATA,包内CRC差错(即,FIS)的机 制题当的,但^X寸响应于这一事件应采取什么动作(例如,立即发送差错元, 记录该事件并传递FIS等)的判定,应当归该实现的策略部分负责。
这不意味着应当在这一低层抽象上设计机制,即,每当事件发生时,它们 简单地生成一个信号,并留待软件来处理它。相反,适当的硬件/软i抖斤衷允许 该软件为公用策略情况选择某些预定的(标准)性能,并放AX寸非标准情况的 软件定,辑,即,何时要实现不f始在SATA规范中定义的性能的策略。良 好的机制设计不会把策略选择限制为仅仅是那些已经先验的,而将允许在一组 功育鹏件之外构造广泛的不同性能。这一设计方法的目的是将此定义机帝啲抽 象层提升到最高的可能的层,而无需占用策略判定,即,试图包含硬件内尽可 能多的功能特随至硬件将限制该机制i顿范围的点。
与这些设计原则相一致地,多路分角tt硬件机制中将要处理的传入FIS是
完全适当的,例如,分离导向虚拟驱动器的FIS与,到端口倍增器控制端口 或存储机架管理桥的那些FIS。同样地,应在硬件中处理低层^S各功能皿当的 (例如,自动协商链路速度、空闲生成、链路仲裁、电源管理),而软件具有超 驰"标准"性能的能力,例如,允许强制链路速度达到给定速率,而不管自动协 商阶段所产生的结果是什么。对硬件机制而言实现影子寄存器并支持驱动器端 口的逻辑也^S当的。
SATA机制允许不同的策略应用于何处的一个示例是如何处理链路层确认。 虽然SATA端口倍增器规范声明链路层确认必须由驱动器进行并通过PM透明 地传递,但是可以通过主机数据包的投机性确认来实现性能优化(有良好的 CRC)。可以在特定情况下应用该优化,而且确定何时适于优化和何时不应进行 优化归策略逻辑负责。
另一个示例涉及应用到主机与驱动器之间M包的排队或缓冲的策略。假 设主机链路可能能够以高于驱动器可支持的速度运行,则如果在驱动器和主机 之间进行直接连接的话,主机链路的利用率就会受到损失。主机链路会以1.5 Gbps的有效速 代它能够进行的3 Gbps运行。 一种可选的4娥高主机^^各的 利用率的方法(它在基于SteelVine的系统内可能是关键的、性能受到限制的量 度)将涉M来自于驱动器的FIS进行缓冲,并将它们顿发向主机。虽然该 技术将在某些情况下(即,当在同一主机链路;ti:存取一个以上驱动器时)增 加主机链路的吞吐量,但这是以增加等待时间为代价皿行的(当存取仅单个 顿区动器时导致吞吐量受损)。因此,当(或如果)繊行缓冲时,它变成一种 策略判定。底层硬件机帝l伎持由策略模i央在给定的时间点进行任何选择。
端口倍增器
SATAn端口倍增器(PM)规范定义了一种简单的寻址方案,它允i^C一 个以上的目标设备连接到单个启动器的链路。这倾向于使多个驱动器能连接到 单个主机端口,而且合理地给出3 Gbps的SATA n带宽和当前(巻)驱动器的 带宽(它的读取头信道提供了显著小于700Mbps的恒定带宽)。
PM规范在FIS报头中定义了四个针对地址的保留比特(称为目标ID),其
中该保留比特用来按照一类标准的集线器或多路复用器,择特定驱动器。利
用该目标ID字段来从多达16个不同的目标中选择一个目标。把PM定义成包 括单个主机端口和多达14个驱动器端口——从0至N-1 其进行(连续地) 编号,其中N是由PM实例提供的端口总数。目标ID0^^有的,即它用于实 ayt留的兼容性。这意 连接到端口 0的驱动器将加快旋转,而且即使在主 机控制器不为PM所察觉时(即,不知道FIS报头中的目标ED或无法选择FIS 报头中的目标ID)也是可启动的。将目标ID 15定义成用来与PM本身交谈的 端口。该端口提供了对一组(规范的和由供应商定义的)可寻址并读聰写入为 32比f封直的寄存器的存取。
可以在一旁再设置一个目标ID以用作存储机架管理桥(SEMB)功能的地 址。该地址通常比PM所支持的最大数量物理驱动器的地址大1 (即,目标ID N+l )。该功能起桥的作用,从而在主机与连接到该PM的存储机架处理器(SEP) 之间透明地转发命令和响应。
SATA主机控制器要么为PM所察觉(意 它们可以生成并响应于FIS报 头中的非零目标ID字段),要么就不为PM所察觉(意tt它们在FIS目标ID 字段内插入零,否则就略去该字段)。SATA主机控制器还可支持基于命令的交 换或基于FIS的交换。基于命令的交换涉及每次仅向给定目标设备发出单* 令。只有在命令已经完成之后,主析才可以向另一目标发出新命令。虽然该方 齒介格比较低廉(因为它更简单而需要更少的资源来实现),但是它限制了可以 实现的并发量,因而限制了存储子系统的性能。利用基于FIS的命令,主机可 具有多个发向不同目标的未完成命令,并处理这样一个事实,即响应FIS可来 自于所有未完成命鲍含于其上的目标。这可通舰每一个未完成命令保存分 离的上下文并使响应与适当的上下文相关联(通过"标记"机制)来实现。该方 法以附加的硬件成本价格和主机控制器内的复杂性来产生更高的系统性能。主 机控制器是实现基于命令的交换还是基于FIS的交舰于PM兼容设备是相当 透明的。在以下关于NCQ的章节中进一步描述了上下文和标记的概念。
应当注意,SteelVine元件使用PM规范的寻址特性来选择虚拟驱动器。 SteelVine还可使用(目标ID 15)供应商定义的寄存器和SEMB功能。禾佣这 些PM特性来保持与PM规范的文字相一致(如果不是精神上的),并樹共对 SteelVineSSoC的独特特性的支持。
原生命令队列(NCQ)
SATA规范的对任一基于SATA的系统盼性能具有显著影响的另4争性称为 本机命令队列(NCQ)。该特性在其他存储接口 (例如,SCSI)中发现,并涉及 允许每次在给定驱动器上有多个未完成的命令。这意味着由驱动器进行的命令 执行无需严格同步;主机可以在之前发出的命令已经完成之前向驱动器发出附 加的命令。NCQ暗示可以按照与在驱动器上接收命令飾l,不同的纟,来执行 该命令。NCQ的益处是大量的,而且包Mffl过使命令发出与命令响应交迭来提 高的性能,从而允许隐藏等待时间(结果增加繁忙的存储子系统的整##吐量)。 另外,关于驱动器如今一次可以存取一个以上命令的事实意味着它们可以以增 加的该磁盘中有关所请求寻道操作的当前旋转位置的知识为基础,进行更有效 的磁头调度。
当请求在该线路的主机和目标终端(以及它们之间的任何东西)上都创建 多个'上下文"时支持NCQ是非常资源集中的。每个上下文都保存未完成事务的 状态(可包括未完成FIS的副本、DMA状态、差错状态等)。为此,主才鹏制 器和支持SATA NCQ协议的驱动器都不是广泛可用的,而且当NCQ变得可用 时,它将会(至少是一开始)是可用的SATAHBA和驱动器的子集内的成本增 加的特性。尽管如此,有可能IOT该协议来提高基于SteelVine的存储子系统所 提供的性能。SteelVine设备允许主机在同一目标设备上具有多个未完成的命令, 即使物理驱动器并不^j共对NCQ协议的支持。SM过支持流水线操作来提高性 能,它允许通过覆盖命令发布和运行来隐藏等待时间。
NCQ协议允许向^目标设备发布多达31个未完成的命令。端口倍增器 允许每个HBA端口存在多达14个目标。因此,SATA主丰鹏制蹄可能在每 个主机端口上包括多达(14*31=) 434个未完成的任务。这表g个主t鹏制器 包括(抑制性的)大量上下文。如果StedVine SSoC要支持该最大数量的未完 成命令,它同样必须要支持非常大量的上下文。幸运的是,模拟已经显示响应 于在每个目标上支持4个以上的未完成任务存在 递减,而且NCQ协议允许 进程中的未完成命令少于该最大数量的未完成命令。
SteelVine SSoC可经它们输出的每个虚拟驱动器提供某固定数量的未完成 命令,而且该数量可以显著小于该最大指定极限434。实际上,SSoC可经虚拟 驱动器支持数量动态可变的多个未完成命令。这可以通过以下操作进行在每
一个排队命令至哒SSoC时从公共池中分酉让下文,向主丰腿回带有清空忙碌位 (BSY)的FIS直至不存在空闲的上下文。此时,SteelVine元件可以仅仅是等待, 直至在为等待中的虚拟驱动器清空BSY比特之前上下文变为空闲的为止。由于 独立的ATA寄存器组存在于每一个目标ID (因而,每一个虚拟驱动器)的HBA 上,所以该活动具有独立舰每一个虚拟驱动器进行命令发布速率的"流控制" 效果。
应当注意,NCQ协议^il于对PM的支持(尽管在SteelVine架构中支持所 有的特性),而且NCQ可与为PM所察觉或不为PM所察觉的主机控制器一起 舰。
虚拟化层
虚拟化层负责在一个或多个(本地或远程的)物理驱动器之外创建虚拟驱 动器。虚拟化可以仅包括把虚拟驱动器定义为物理驱动器上块的(可能是适当 的)子集。在此情况下,所需的全部是把LBA从虚拟驱动器的地址空间转换成 物理驱动器上的适当地址。虚拟化还允许创建由多个物理驱动器中相邻构件组 成的虚拟驱动器。在此情况下,给定的虚拟命令可定义影响多,理驱动器(即, 跨越两賴理驱动器之间边界的读/写操作)的操作,因此,必须生成多^t)理 命令。该虚拟化层负责把虚拟命令分成特定数量的物理命令(各自包含适当字 段值),并将来自这,理命令的结果组合成组合虚拟响应。
在某些实施例中,禾1J用查询表(LUT)与一组状态机的组合来实现虚拟化 层。在这一实5贩程中,LUT负责把虚拟命令的起始LBA和块计数字段转换成 它们的物理值,并有可能生成多个物理命令的字段。状态机负责把多个物理命 令分X/^成单个虚拟响应,并处理可能从这些操作中产生的所有异常条件。 就像多个物理响应被组合成响应于虚拟命令返回到主机的虚拟响应一样,由于 发布多个物理命令弓胞的异常在递送到主机之前被组合成虚拟的异常(而且有 可能是受抑制的)。
读/写虚拟命令的起始LBA和±央计数字段被分解成一个或多个部分,然后被 转换以将其鹏寸到给定物理驱动器的适当部分。然而,不管因该虚拟化动作所 产生的物理命令的数量有多少,总是保持一不变~~即所有物理命令的块计数 字段之和等于虚拟命令的i央计数字段之和。虚拟化层转换地址,并且有时发布 它们作为多个子参考,但精确地产生了与主机请求的读/写 —样多的读/写数据。
虚拟化层所操作的基本单元是连续范围的磁盘块,在此称为区域。可由该 层组合一个或多个物理驱动器区域来创建虚拟驱动器。在该文件中,来自多个
驱动器的区域的组合称为级联或RAID-1 (g卩,独57謝介的 阵列的特性,与 条带化(RAID0)相比它甚至更少与冗余相关)。在以下小节中描述了区域的概 念和它们在级联中的使用。 物理磁盘区域
在该文件中,区域被定义成单个物理驱动器中连续范围的块(范围从1到 全部)。有可能定义重叠区域,而且可以把单个区域定义成包括齡驱动器,但 一个区 £法,多个物理驱动器。
在图10中,根据由单,理驱动器的一小部分组成的单个区域来创建虚拟 驱动器(Vi)。所示的物理驱动器(Pj)包括i央地址空间,其范围从0 (该驱动 器上的第一个块)到Mj (该驱动器上最后一个块的LBA)。该示例中使用的注 释把区域(Ro)表示为多元组(Pj, SQ, Q)),它包括该物理驱动器的标识符, 其中在该物理驱动器上定义区域(Pj)和该区域的起始i央地址(S。)和l央计数(Q))。 该给定物理驱动器中定义的区域可向主mM现为虚拟驱动器Vi。由表示该区域 的多元组来定义这一虚拟驱动器,该多元组以(Ro)、它的起始LBA (0)和它 的最大LBA (Mi,在此情况下等于(Q)-l))为基础。
在所示的示例中,把在该区域上发布的读/写存取命賴示为另一个三元组, 它定义了受到给定虚拟命令影响的区域Ri的子集。该三元组根据其起始LBA (Sv)和i央计数(Cv)来描述虚拟命令。该示例还显示由虚拟化产生的物理命令, 它由包括该事务的起始(物理)地址(So认)和块计数(O的三元组组成。 注意,在此简单的情况下,命令类型保留了相同的内容,而且该i央计数字段并 未变为虚拟化处理的一部分。
这示出了虚拟化层的最基本的目的——即,为了把虚拟驱动器的±央地址空 间转换至lj区域的i央地址空间之上。由于这两个地址空间之间存在简单的线性关 系,因此可轻易地以类LUT实5腿行转换,而无需附加的逻辑。该虛拟化层的 应用示例包括在单个较大的物理驱动器之外创建多个较小的虚拟驱动器;在 多个较小的物理驱动器之外创建单个较大的虚拟驱动器;以及在多个物理驱动 器的快速区域之外创建较大的、比均f鼓快的虚拟驱动器。
级联(RAID-1)
虚拟化层的区域抽象的扩展即是主张级联即,创建由一个以上区域的 线性组合构成的虚拟驱动器。该特性可用于在一组两个或更多较小区域(来自 于不同或相同的驱动器)之外创建单个较大的虚拟驱动器。该特性最简单的用 法是利用该组中全部物理驱动器的组合能力来把多个完整的物理驱动器组合成 单个虚拟驱动器。
图11提供把两个来自不同物理驱动器的区域级联成单个虚拟驱动器的示 例。在该示例中,可由包含区域列表的三元组(Li, 0, Mi),示虚拟驱动器 (Vi),该区域列表包括Vi (按照它们出现在虚拟地址空间中的顺序)、起始±央地 址(0)和最大有效块地址(Mi,它等于组合区域大小之和减l,即(Ci。+Qrl))。
不存在对区域选择的限制,这些区域可参与创建级联的虚拟驱动器(除了 那些应用到区 身的,例如,非重叠的连^i央组等)。
增强层
虚拟化层涉及创建仅是在大小上有所不同的虚拟驱动器,否则虚拟驱动器 就与物理驱动器共享所有相同的特性,其中根据这些特性构建虚拟驱动器。根 据虚拟化层所提供的基本功能构建后,增强层以(有可能是级联的)区域集合 开始并对其应用小附加功能集,以便于创建具有优于其组成物理驱动器的增强 特性的虚拟驱动器。
增强层按照增强底层物理驱动器的性能和可靠性的各种方式来组合多个区 域。虽然这^#性在很多方面与系统内发现的提供各种不同RAID功能的特性 相似,但是增强层在几个重要方面有所不同。把该层的特性定义成能够轻易且 低廉地集成到单个低成本SSoC中,而且仍然能够以"线速"(即,按照与HBA 与驱动器之间直接连接的性能级别相等的性能级别)进行操作的功能。这意味 着由这部分SteelVine架构提供的机制往往实1^来很容易和廉价,而且使用了 简单的强制技术。例如,用简单的镜像(RAID 1)来代替奇偶RAID (例如, RAID 5)以允许简单的低成本实现,而无需相当多数量的处理功率和存储器。
增强层的关键技术包括条带化(RAID 0)、镜像(RAID 1)以及它们的组 合(例如,RAID 10和RAID 01)。这^ff性被加于虚拟化层所定义的那些特性 之上,在以下小节中将对其进行更详细的描述。
条带化(RAID0)
如果存取模式是随机的(例如,在某种服务器或多用户系^h),则获得多 个报头并发移动的益处,条带应当足够大,从而单独的读/写事务并不经常i^越 条带边界,而是不会太大以致于无法获得具有并发寻道的统计益处。如果存在 任何类型的位置,或存在多个较大的连纟;ii卖取操作,就不会产生所要求的性能, 但是使用对多用户系统上文件系统的特有类随机存取,这变得非常好使。条带 化的目的是使报头加倍且更多的吞吐量~~fi粒并行性。
镜像(RAID1)
该架构允许多,像的驱动器,然而Polaris和Milkyway包括两路和四路 镜像约束。如果任何物理命令失败(将使驱动器不相容),i魏构就复制写入操 作并使虚拟命令失败。该架构还处理故障异常,并交替迸fi^取操作以共享加 敏^t员。该架构f顿起始LBA (中间字比特)作为选择器,而且在其一开始读 取设备时并不切换。该架构遍郎宗驱动器序列号以判断是否换出驱动器(其中 镜像鎖各会是不相容的)。
在某些实施例中,所有的写入操作都送往该镜像集的所有成员。读取操作 来自该集内的仅一个驱动器,但通常从同一驱动器中读取出扇区。该架构利用 简单的确定性方案来在该集中选择从哪一个驱动器读出。为了确保优良的连续 读取性能O100MB)而将大±,于较大的边界上,并允许寻道重叠以提高关于 随机读取操作的性能。
无论何时确定镜像集不相容都必须进行重建操作。在非易失性存储器上标 记该重建,从而该架构将继续尝试重建直至镜像都同步为止。当尝试同步磁盘 时,该架构跟踪"指针"在哪里,艮卩,该分界线在复制的与未复制的驱动器区 域之间的何处。复制对指针后面的块的写入操作(即,写入与其同步的区域内), 同时6^t同步的驱动器进行在指针之前的写入操作。
在某些实施例中,该架构保持非易失性存储内的指针,从而如果电源断开, 就可以在电源恢复时在其断开的位置获得重建。在每次递增指针,M非易失性 存储器进行写入操作过于昂贵时(即,写入块),该架构仅在规贝啲检査点更新 非易失性存储器,这减少了在重启日微行的重复工作量。
SteelVine实现使用公平共享的调度,旨来实现重建功能。这允许重建活动 消耗除了主机所4顿资源之外的全部有效资源,并在主机希望消耗全部资源时, 为重建所f顿的资源量提供下限。这意赠如果主机不施加负载,则重建活动
将获得全部资源,而且该重建将在最短的时间量内完成。如果主机施加百分之 一负载,则重建活动将获得受保障的最少量资源(例如,百分之二十),以使该 重建将在有限的时间周期内完成。这意味着当主机试图把重建活动压榨至小于 劇氐量时,主机获f纖止该点它想要的顿周肌然后将主机固定在i娠。 鹏层
SteelVine架构中的下一层称为^f层。它在主机F1S内目标ID字段与前面 的层定义的虚拟驱动器之间提供了一种简单水平的间接寻址。该 提供了对 基于LUT的实现的操作,其中以传入FIS目标ID字段内的值为基础来执行对 鹏寸表内的哪一个"页面'的选择。
此功能略微变得更有趣的就是在把物理驱动器"标识映射"到虚拟驱动器 时。这意IW虚拟化层把虚拟驱动器定义成由完整的物理驱动器构成的区域, 而皿该虚拟驱动器不进行增强。以这种操作模式,StedVineSSoC动作相当像 端口倍增器,且仅仅是把针对给定目标ID (g卩,虚拟驱动器)的所有命令直接 传送到期望的物理驱动器。然而,,层允许重新 1"物理驱动器端口,艮P, 目标IDO不必鹏顿働理驱动器端口 0,而可以舰到任一个物理驱动器端口。 该特性提供了优于简单端口倍增器所提供灵活度的提高的灵活度,而且可用于 重新分配物理端口 (例如,出于布局或封装便利性的原因)。
除lfet外,鹏寸层允许创建多个'视图",即取决于i柳哪一个目标ID可按 照各种不同的方式来存取给定的物理驱动器。例如,可以级联一个构建块中的 四个驱动器,并向主机呈现为虚拟驱动器编号O。同时,SteelVine SSoC可被配 置成允许利用从1到4的目标ID编号,作为单个(标识鹏才的)驱动器的要 存取的驱动器作出相同的许可。这可用来允许对虚拟驱动器中各个组成驱动器 的管理性存取,例如,用以支持修复或监视动作。
转换层
虽然SteelVine架构以SATA存M^路协议为基础,但是存在有大量其他抽 象的高层存储协议(例如SCSI、 iSCSI、 CIFS、 NFS等)。StedVine架构中的顶 层称为转换层,而且它是在此可以把主机存取协议从本地SATA协议转换成实 质上任何所需主机接口协议的点。此外,这是其中可以把SteelVine架构提供的 基本面向i央业务转换成文件级别业务的地方。
标准的SATA特征
SteelMne架构SSoC已被定义湖顷应各种SATA规范。然而,已经以j顿规 范特性的方式(同时仍然保留在该规范所设定的边界内)采取重要的特权。例 如,ATA规范掛共了一种适当灵活的机帝睐声明和启用由设鍋供的功能和特 性,而且SteelVine元件采用了该规范的这方面。ATA规范定义了一种数据结构 (即,IDENT)和协议(禾佣标识命令),它们允许设备声明它所支持的(预定 义的)特性。此外,SATA允许主机在设备所提供的那對寺性(例如,DMA模 式、在多i娥作中要转换的块的编号等)当中选择(或启用)特定的特性。SteelVine 元件为它所提供的每一个虚拟驱动器合成适当的IDENT数据结构,并指示该元 件支持的特定特性。
SATA被定义成与PATA设备撰写的软件(包括设备驱动器、OS和应用程 序代码)向后兼容。主机软件与PATA和SATA硬件之间的主要接口是一组称为 Taskfile (任务文件)的寄存器。ATA寄存器集(或Taskfile)原先由8个单字节 寄存器组成,其定义为 、 ^^/特性、扇区计数、扇区编号、柱面低、柱 面高、设备头和状态V命令寄存器。
开始时通过设备的物理属'舰设备寻址,艮卩,柱面、头和扇区。然而,随 着时间的流逝,用一种称为逻辑块地址(LBA)的扩展和简化的线性寻址方式 来代替该寻址方式(称为C/H/S)。为了保持向后兼容性,该初始寄存皿定义 用于新的寻址方式(即,扇区编号寄存器用于LBA[7: 0],柱面低用于LBA[15: 8],柱面高用于LBA[23: 16]和部分设备头驱动器用于LBA[27: 24])。这供28 比特块寻址方案使用,它(在使用典型的512字节i央大小时)产生128 GB的最 大可寻址范围——该大小很快被有效的驱动器大小超越。响应于此,ATA标准 创建'扩展的寄存器"。可以向每一个LBA和扇区计数寄存器按顺序写入两字节, 从而按照与遗留软件向后兼容的方式将它们扩展成16比特值,其中该遗留软件 仅处理8比特寄存器。该扩展容许48比特的LBA空间,它产生128 PB的最大 可寻址驱动器大d^^即应该是持续至少几年的大小,禁止在基本存储技术中 任何类型的突破。
HBA与设备之间的ATA事夠括并不涉及W传输的命令(即,非数据命 令)和 传输命令。对于涉及数据移动的命令而言,该ATA规范定义了多个 不同的数据传输模式,每一个都相继地劍共更高级的性能。这两种主要的数据 传输模式称为编程!/O (PIO)和直接存储器存取(DAM)。 ATA寄存器集还包 括其中称为控制块的一对寄存器(除了前述统称为命令块的8个寄存器)。该控 制块寄存器包括可选的状态V设紛空帝瞎存器和驱动器地址寄存器。 SATA规范
SATAI规范定义第一代SATA,它包括1.5 GbpsSATAPHY、链路、传输禾口 协议的全部基本特性。SATA H规范提供对SATA I规范的增强,它在该规范的 所有层上劍共附啲特性和能力。在PHY层,新的规范提供对底板互连和异步 信号恢复的准则,以及为定义更高速的链路速度(即,3Gbps)和自动协商过程 所必需的信息,该自动协商过程使主机与设备旨腿到最高通用链路速度设置。
在协议层上,为支持新的命令排队特性而对设备命令协议作出改变。原生 命令队列(NCQ)是该新协议的名称,它容许在给定设备上发布多个未完成的 命令,并允许以不同于发布顺序的)(鹏舰回这醜令。NCQ支持通过聚集中 断而不魏每个命令进行中断来提高系统性能,这在大量命令运行时会变得昂 贵。而且,在主机控制器内的多个上下文允许在驱动器需要的任何时候EM回 空转状态,皿提高了性能。
对SATAn的另一个补充衛共称为端口倍增器(PM)能力的特性。该特性 允许将单个SATA主机端口连接到多达15个驱动器。该规范允i转ij建简单的、 单层的类似集线器的设备,它以对主机和设备透明的方式将单个主机端口扇出 到多个驱动器端口。该规范明确地禁止级联PM设备。
PM规范利用FIS报头中4个未j顿的比特来樹共对目标驱动器端口的寻 址。这些比特形成称为目标端口字段的字段,其中多路复用设备使用该字段来 选择要4顿的目的地(驱动器)端口。在正常操作中,HBA对它发送到PM的 每一个FIS报头添加一地址。 一旦接收来自该主机的FIS, PM设备就检查FIS 报头内的地址字段,清空目标端口字段,并向选定的目标端口发送该FIS。同样 地,修改来自驱动器端口的FIS以在该FIS的报头中包括它们的传入端口地址, 更新该FIS的CRC以反映报头内的变化,并向主机端口转发该FIS。如果传入 的FIS的CRC ^i正先收,PM设备就必须广播劣质的CRC,而且不往该FIS内 写入优质的(重新生成的)CRC舰其进行掩码。
基于Polaris的存储子系统
作为要实现的SteelVine系列SSoC中的第一个,Polaris提供i^构中定义 功能的子集。Milkyway M完整的StedVine架构的第一次全面实现。Polaris被
固定为单个主机、5个驱动器的独立产品,而Milkyway允许用多个主机端口和 大量驱动器端口来构建子系统。可以禾蹄基于Polaris的硬件来构建广泛的感兴 趣的存储子系统。以下小节研究利用(增强的)Polaris的端口倍增器功能及其 相关联微码参与存储阵列控制器的创建的硬件和软件。
Polaris SSoC的主要外部接口由一个SATA n主机端口和5个SATA n驱动 器端口乡賊。另外,Polaris SSoC具有各种辅助I/O接口,包括LED驱动器、 I2C总线和几个GPIO线路。这些外部接口必需且足以支持基本的5个驱动器到 1个主机的SATA多路复用器功能以及所有对Polaris定义的"增强"功能。
在内部,该硬件由駄式处理器、 移动引擎、各个SATA端口的资源 (即,PHY、链路和传输逻辑,以及一组充当该链路的FIFO缓冲器的寄存器) 和各种支持功能的逻辑。每个端口 FIFO中的每一t皿接至臓路,而另一端 连接到公共内部总线。该数据移动功能单元可被引导成在所定义的FIFO缓冲器 集之间移动数据。它允许进行驱动器到主机和主机到驱动器的传输加上驱动器 向驱动器的传输。
该mx式处理器通过加载和存储来存取该内部资源(例如,每个端口逻辑、
FEFO、 i^移动器和其他VO接口逻辑),其中通过该^A^处理器的特定控制 寄存器地址空间(包括在系统控制处理器(SCP)寄存器空间内定义的16个寄 存器的16个库)鄉行该加载和存储。这些寄存器的一部分(例如,那離制 SATA PHY、 EEPROM写入操作、软件复位等的寄存器)被保护以防止意外存 取。
Polaris SSoC利用外部的连接l2c的EEPROM来包含微码、配置状态和策 略相关状态。在通电时,微码被自动读入微微(Pico)指令存储内,并利用简单 硬件校验和机制来舰。
该Polaris硬件包括)^微微(Pico)处理器进行重置的软件重置寄存器,但 它并不强迫重载微码。当主机端口上出现COM-RESET频带夕卜信号时,生成不 可掩码的中断(NM),它导致硬重置(强迫重载微码)。微码加载和验证被设 计成在少于1秒的实际时间内完成。
系统控制处理器(SCP)
在Polaris的设计中,尝i爐硬件中实现该设计的l^面部分,并通过在系 统控制处理器(SCP)(称为Pico)上执行微码来仅执行更高级别的控制面功能。
对于每一^NI路而言,在硬件中实现完整的SATA物理、链路和传输层。大多 数辅助接口功能(例如,I2C、 EEPROM和LED)都包括某一禾號上的硬件支 持,并由专用的硬件功能单元执行大多数成批的数据移动。Pico微码负责实现 大多数由SSoC掛共的功能,包括初始化、虚拟化、镜像、条带化、端口之间 的FIS移动、对异常情况的处理、机架管理功能等。
由于它实现成批的SSoC功能,因此Pico处理器的性能就影响基于Polaris 的系统的整体性能。Pico是具有双发布、對以RISC的指令集的简单的、駄式 的32比#^制处理器,它具有32个寄存器、7级管线和Harvard存储器架构,。 Pico I支t射十数l定时器和外部中断,但是并不^f共对乘法或除法运算的硬件 支持。用于Polaris中的Pico I处理器不支持浮点,无MMU,无高速缓存,而 且不进行无 :W的运行。它在150 MHz上运行,具有针对指令存储的64K SRAM 和针对 存储器的16KB SRAM。
除下述硬件资源之外,还存在附加的寄存器库,它提供对SCP的基本支持。 这些统称为CPU寄存器,并包括处理微态(PS)、中断掩码、中断未决、异 常禾號计数器和计数器/定时器寄存器。
已经为Pico开发了一种以Gnu编译器禾旨组为基础的完整工具链。该Pico 工具链包 彌译器(gcc)、汇编器(gas)、调试器(gdb)以及Gnu二元实用程 序(bintools)。
分割-合并引擎(SME)
内部的数据移动器功能(称为分割-合并引擎(SME))实质上是一种智能 的片上DMA控制器,它在SCP寄存器地址空间内的位置之间(即,在寄存器、 FIFO和存储之间)移动双字。SME负责SATA端口之间所有的数据移动活动, 而且还能微行复杂的分散-集中操作以支持驱动器虚拟化功能,包括条带化和镜像。
SME还支持驱动器到驱动器的复制。这在謝彌如镜像集重建操作、M3、 等操作时劍共系统层性能。该特性不仅 > Polaris主机^^各上的负载,还M^、 这些带宽密集的数据复制操作对主机的影响。这意味着这些复制操作在相当大 量的处理周期、存储器和I/O带宽方面并不对主机施加负载,而且不损耗Polaris
主机链路。
主机SATA端口
主机端口在主机与Polaris之间实现SATA连接的目标终端。与主机端口相 关联的资源包括为实现SATA协议的PHY、链路和传输层而必需的逻辑、 一组 用来控制该连接的控制与状态寄存器,以及一组充当传A^输出FIS报头的缓 冲器的寄存器。
主机端口的逻辑处S^f有必要的通电和低层同步动作,以及SATA链路元 的链路层握手与交换。自动处理该SATA协议处理的某些方面(例如,生成 ALIGN、 CONT、 SOF/EOF、 X-RDY、 HOLD、 R—IP、 WTRM等元)。然而, 由该链路上特定元的接收而产生的中断,并生成其他链路元(例如,R_OK、 R—ERR、 P—SYNC等)归Polaris微码负责。iMil^ltt机端口的控制与状态 寄存器舰行。主机端口逻離验传入FIS上的CRC,并在控制与状态寄存器 中指示校验结果。同样地,该逻辑生成针X寸传出FIS的CRC。已经作出特定的 调整以允许故意在传出FIS上生成劣质的CRC。该部分逻辑通过FIS目标ID字 段^t传入FIS进行某种低层多路分解。该端口逻戰示识目的地为地址15的FIS (即,PM15)以及被寻址到该SEMB逻辑的FIS (g卩,PMN+1,其中通过^S 主机端口控制与状态寄存器中的值来定义N),并对每一种情况生成适当的中 断。中断在主机端口上出现其他事件时生成,而且可以通W"适当的端口控制 寄存器进行写入来清空所有中断。
传入FIS的报头被自动存放在缓冲寄存器内,同时通过SME把FIS的主体 (或有效载荷)直接转送至目标设备。向缓冲寄存器内写入传出FIS的报头的动 作触发该端口将FIS发送回主机。就像端口的控制与状态寄存器一样,该缓冲 寄存器存在于SCP寄存器地址空间内,且被读取写入为双字(即,32比特)值。
驱动器SATA端口
Polaris上的5个驱动器端口充当Polaris与其驱动器之间的SATA连接的启 动器端。所有的驱动器端口大多数彼此相同,而且大多数在对主机端口的功能 和实现上是相同的。驱动器端口与主机端口的不同之处在于其控制与状态寄存 器内包含一些附加字段,例如,启用对端口的旁路和直穿操作的比特,用于操 纵端口内SStatus影子寄存器中X比特的比特,以及与连接到每一个驱动器端口 的FIOF相关联的字段。
除具有主机端口的控制与状态寄存器字段的超集之外,每一个驱动器端口 包括对SRAM值得的全FIS (g口, 8KB),其中该FIS作为FIFO进行管理。利
用该SRAM来缓冲移入或移出每一个端口驱动器的FIS。驱动器端口的FIFO可 以充当在SME控制下的FIS传送的源或目的地。该设计期待由SME弓|擎将FIS 送入和送出驱动器端口 FIFO,但是还允许SCP (在DWORD边界上)直^i卖 写该FIFO。
在Polaris内包括特定的硬件特性来支持实5MFIS的"直穿"路由,用以允 许在接收到所有字节之前,向FIS的目的地端口传送该FIS。对该特性的支持有 助于实现峰性能级别,否则当设皿疔审储和转发"类操作时将会为每一事务 添加大量等待时间(引入相当大的等待时间惩罚,但是可以对设备关于吞吐量 的性能有可以忽略的影响)。主机和驱动器端口逻辑内的特定特性允许fflil操纵 相应端口的控制寄存器来激活该特性。
而且,在主机和驱动器端口内都存在控制寄存器,该主机和驱动器端口允 许对物理层的SATA接口逻 行配置。
机架管理支持功能
Polaris SSoC支持标准的SATA机制来与标准规范的存储机架处理器(SEP) 通过接口相连。如上所述,SATA存储机架管理桥(SEMB)特性允许Polaris 元件通过SAF-TE协议或通过SES协议充当HBA与SEP之间的桥。
SEP可以跨越大范围的成本、大小和复杂性,但一般来说,SEP倾向于比 Polaris元件花费得更多且更大,而且比SteelVineSSoC包括更多的主机软件。为 了启用为简单的机架管M务所必需的基本特性,在成本和复杂性与SteelVine 元件中的那些一致的更多的层面上,Polaris可支持使用更简单的低成:W境监 控芯片(例如,国家半导体的LM87)。用微码实5M"低成本EM元件的支持, 并通3iX^示准SEMB协议的SMG专有扩展来^f共对低j^ EM元件的支持。
LM 87是一串8比特范围寄存器,可以对它们进衍卖聰写入以劍共状态和 设置值。LM87事务是真正简单的~~^取分组(i2caddr、 regaddr),根据响 应获得M字节,写入分组(i2caddr、 regaddr、数据字节)。
虽然可Mii简单的I2C总线接口来供应SEMB的基本功能,但是Polaris提 供专用硬件以支,f^些SEMB功能。除了可主/从的IC总线之外,还存在专用 的存储器i央(1KB)和像DMA单元那样发挥作用的逻辑,而且该逻辑可用来 在EM IC总线上、在SEMB存储器和设备之间传送数据块。可用两个不同的I2C 目标地ijBW EM I2C总线进纟彌程。
因为明确定义且高度样式化SEMB I2C事务,所以Polaris SEMB逻辑劍共 对这些事务的支持。具体地说,SEMB逻辑自动接收(6个或7个字节的)SEMB 分组报头,并生舰Polaris微码的中断,该Polaris微码处舰传入分组的部署。
可以将SEMB逻辑设置成自动在每一个分组的末端添加校验和,并生成传 入分组的校验和(以由微码根据在每一个分组的^处接收的itt校验)。
SEMB逻辑在SEMB存储器与EM I2C总线之间移动数据,而且利用SME 在主机与SEMB存储器之间移动数据(以与在FIFO与主机之间移动数据FIS 相同的方式)。
SEMB逻辑可以部分地解析并分解传入SEP分组报头(提取sepStat字段、 CRC等),它可包括仅有报头的分组(g卩,没有 ),或者报头和数据分组。
可以将EMI2C上Tx 率设置成N种选择中的一种。可以舰微码来设 置针对SEMB逻辑的独立的M信号。微码在重置时发送探针分组以査看EM fC上是否存在SEMB,并注意此以便在主机请求返回对PMN+1端口的签名时, 它可以适当地作出响应。
可以在由SCP存取的双字中读/写该SEMB存储器。SEMB逻辑包括允许 超时中断的定时器,从而可以检测悬置的EM 12C事务。
LED控制逻辑
SteelVine元件的另一,性^M3! LED来判断物理驱动 态的能力。不 同的存储应用禾歸要求不同类型的夕卜部标己,因此SteelVine元件必须支持不同 的LED特性。例如,企业产品要求除那些指示故障的,新己之外不樹共LED标 记,而用户产品要求驱动器动作和电源t斜己。
Polaris具有对闪烁的LED标记以及允许自动显示驱动器动作的硬件支持。 重要的是提供对这些功能的硬件支持,因为以微码来执行这些功能的开销将会 是昂贵的。Polaris在每个驱动器端口上包括两个LED,对主机端口有两个LED 和四个系统LED。 ^端口的LED对可以八种不同模式中的一种 行操作, 其中这八种不同的操作模式表示根据LED状态的不同情况。可开关每一个LED 或使其闪烁。它们取决于是否处于企业模式而不同地动作。可编程^端口 LED 对之一以响应于该动作而触发(打开或关闭数十毫秒)。该自动闪烁促4M定的 LED以大约1秒的循环时间触发状态。
系统LED可由微码直,制且无任何硬件支持(除打开或关闭它们之外)。 在Polaris中,还Jlf共对外部EEPROM的存取的支持,该外部EEPROM用 于存储所有异常微码、虚拟化状态和其他关于该设备的酉虚信息。 Polaris软件鹏
如图12所示,基于Polaris的存储子系统的软件元件由三种不同类型的软件 构成。^H个部分存在于三个不同的位置在SSoC上、在对该SSoC的本地的 板上和在主机上。以该Polaris SSoC为基础的不同存储产品仅仅在类型规范和为 传递期望功能所需软件的数量上不同。该不同数量的资源可用于略有不同地实 现的这些不同类型软件要求中的每一个。要将软件工程内相同的最佳实,用 至树该软件的开发中,而不管讨论中的软件类型为何。
在以下小节中(高层次地)描述用于基于Polaris的存储子系统的^H类不 同软件的每一种,从主机软件开始,移至本地控制器上的软件,并以专门的 Polaris SSoC上的软件结束。除ifet外,还描述存储子系统内软件之间的各个关 键接口。这包括用于定义和实现策略模块、监控子系统的操作并更新该Polaris SSoC内微码的接口。
主机软件
运行在主机侧的软件由系统层软件和在标准的、资源丰富的主机环境内运 行的应用层软件构成,几乎不具有约束。最小化为给定的基于Polaris的存储产 品所需的系统层软件的量是合乎需求的。这是因为与为每一个新的OS和平台版 本对驱动器进行连续传入端口和兼容测试有关的高成本。可以以在无人工介入 的情况下运行的后台程序的形式递送某种系统软件,诸如将存储子系统的特性 嗍顿舰有系统管理控制台中的策略或适配器。
设备驱动器
在最低层上,存在在设备驱动器内实现的功能。这可包括各种各样的低层 特性,例如产生回调(至ioctl)作为进行对来自存储子系统中感兴趣事件的异 步通知的结果,并允许(ioctl等)访问Polaris硬件的低层特性。StedVine架构 的目的之一是允许添加对主tUt明的功能。这意赠必然有可能用Polaris硬件 来构建存储子系统,其中该Polaris硬件适当地用现有(遗留的)设备驱动器来 操作。给定子系统的特定特性可仅通过特定设备驱动器访问,但通过标准发行 的设备驱动器来推导子系统的大多数值是合乎需求的。
应用
在顶层是AX,应用禾,,例如与用户交互的CLI和GUI。 CLI可以启
用脚本或其他管理功能。Gui可以简化aM;抽象的操作。
外部接口層库
该架构可提供一种外部接口程序库来存取该系统的特性。这样,可以除去
如何与子系统通信的细节并对子系统的不同元件^^i也作出改变。所有主机SW
(除设备驱动器之外)可以使用公共库来确保统一地存取特性瓶高便携性。 外部控制器固件
在基于Polaris的存储子系统中发现几种不同的^A^控制器,包括用于机 架管理、外部接口处理和实现外部策略的处理器。虽然可通过单独的处理器来 处理功能,或者可以将功能一起集聚在公共处理器上,但是在这些处理器上执 行的软件类型在本质上是相似的,而且在此称为固件。固件具有与主机软件和 微码一样的特性。然而,固件执行环境一般具有相比于一般的主机环境较少的 相关资源,但比对Polaris微码可用的资源多不少。运行时环境可以和用于微码 或商业RTOS甚至是Unix衍生版(Knoppix、 eCos等)的环境相同。接口封装 是用来提供期望外部接口 (例如,网络服务器、协议、链路接口等)、HTIP、 TCP/IP、 USB等的固件模i央,这取决于要向存储子系统樹共明附外部接口。例 如,Polaris可以劍共串行或USB端口^ii行CLI以进行配置、监控或魏,或 者还能够运行网络服务器和连接以太网来允许来自网络浏览器的控审iJ/监控。
SSoC微码
在Polaris SSoC上运行的代码通常称为微码,并由几个关键部分组成,包括 公共业务部分、应用禾旨特有部分和(可任选地)^A策略模块。由于对不同 的产品定义不同的特性集,因Jt[^1敫码的改^^该囿于该策略模块。
存在广泛范围的不同的^顿模型,其范围从非接角蟣置到高接触管理系统。 根据该部件所^細的模式,可要求从无附加软件到庞大数量的软件。
结论
根据前述内容,可以理解在此为了其例示的目的而描述高级存储系统的特 定实施例,但是可在不脱离本发明精神和范围的情况下作出各种修改。例如, 尽管存储设备在以上一般指的是磁盘驱动器形式,但是可以^顿大量不同的不 是以磁盘为基础的存储设备,例如闪存设备、磁带机和其他存储技术。同样地, 尽管以SATA接口的形式描述存储接口,但是其他存储接口也可用于高级存储
系统,例如并行高级技术附加(PATA)、通用串行总线(USB)、固件和光纤通 道。还可以用诸如在定制ASIC上的硬件或软件方式或者舰〗顿通用计穀几系 统来实现高级存储系统。因此,除所附权利要粒外,本发明并不受限。
权利要求
1、一种将物理驱动器呈现为一个或多个虚拟驱动器的系统,包括主机接口元件,它被配置成接收虚拟命令;映射元件,它被配置成将所述虚拟命令映射成一个或多个映射命令;设备接口元件,它被配置成向一个或多个设备发送所述映射命令。
2、 根据权禾腰求1戶服的系统,其特征在于,戶脱舰元件在帝隨所 述系统时被配置。
3、 根据权利要求1戶服的系统,其特征在于,戶腿,元件配置可通 过修改一组硬件管脚的连接来改变。
4、 根据权利要求1戶,的系统,其特征在于,戶,鹏寸元件配置可通 过修改策略表来改变。
5、 根据权利要求1戶脱的系统,其特征在于,所述嗍寸元件配置响应 于将新设备驱动器连接到所述设备接口元件而自动改变。
6、 根据权利要求1所述的系统,其特征在于,所述设皿口元件被连 接到所述系统的第二实例中的主机接口元件,从而可以级联存储设备。
7、 根据权禾腰求6戶脱的系统,其特征在于,可由主机计^n系统存取的所述级联的存储设备超出了自然由所述主机计算机系统所支持的存储设备 的数量。
8、 根据权禾腰求6戶脱的系统,其特征在于,戶腿设緒口元件自动 选择用以存取级自理设备的路径。
9、 根据权禾腰求1戶脱的系统,其特征在于,戶脱主机接口元件在接 收到对鹏才命令作出的响应之前发i^t虚拟命令的响应。
10、 根据权利要求1戶脱的系统,其特征在于,所述主机接口元件以比 连接到戶,设 口元件的存储设备所支1魏率快的速率进^1信。
11、 根据权利要求1所述的系统,还包括用于管理戶,系统的配置的配 置元件。
12、 根据权利要求1戶脱的系统,其特征在于,戶腿主机接口元件利用 SATA命令与戶皿计算机系 信。
13、 根据权利要求1所述的系统,其特征在于,所述设,口元件利用SATA命令与至少一个设备通信。
14、 根据权利要求1臓的系统,其特征在于,臓主机接口元條受 SATA端口倍增器命令。
15、 根据权利要求1戶脱的系统,其特征在于,戶脱主机接口元倂妾受 SATANCQ命令。
16、 根据权利要求1戶脱的系统,其特征在于,鹏命令是物理命令。
17、 根据权利要求1戶腿的系统,其特征在于,舰命令是虚拟命令。
18、 根据权禾腰求1戶舰的系统,其特征在于,戶腿一个或多个设备中 的至少一个是物理设备。
19、 根据权利要求1所述的系统,其特征在于,所述一个或多个设备中 的至少一个是虚拟设备。
20、 一种在存储系统内将物理驱动器呈现为一个或多个虚拟驱动器的方 法,所述方飽括接收虚拟命令;将所述虚拟命令 成一个或多个鹏寸命令; 向一个或多个设备发送所述Mf命令; 接fet戶腐一个或多个鹏命令的响应;以及 发送基于所述响应的虚拟响应。
21、 根据权禾腰求20戶舰的方法,包括接收配置信息,并且其中鹏才所述虚拟命^&括^fflfM接收的配置信息。
22、 根据权禾腰求21戶脱的方法,其特征在于,戶腿配置信息在制造所 述系统时接收。
23、 根据权利要求21所述的方法,其特征在于,所述配置信息响应于将新设备驱动器连接至j戶;M设皿口元件而自动改变。
24、 根据权利要求20戶皿的方法,其特征在于,发送0M鹏寸命4^括 向所述系统的第二实例发送命令,从而可以级联存储设备。
25、 根据权禾腰求24戶脱的方法,其特征在于,可由主机接口存取的级 联存储设备超出自然由所述主机计算机系统支持的数量。
26、 根据权禾腰求20戶脱的方法,其特征在于,在接收到对舰命令作出的响应之前,戶;M虚拟响应。
27、 根据权禾腰求20戶脱的方法,其特征在于,以比向物理设备鋭映 射命令的速率快的速率接收虚拟命令。
28、 根据权利要求20戶;M的方法,其特征在于,鹏寸命令是物理命令。
29、 根据权利要求20戶腿的方法,其特征在于,鹏寸命令是虚拟命令。
30、 根据权利要求20戶做的方法,其特征在于,所述一个或多个设备中 的至少一个是物理设备。
31、 根据权禾腰求20戶脱的方法,其特征在于,戶腿一个或多个设备中 的至少一个是虚拟设备。
32、 一种计算4几可读介质,包括用于通过包含以下步骤的方法控制存储 系统将物理驱动器呈现为一个或多个虚拟驱动器的指令接收虚拟命令;将戶皿虚拟命令鹏才成一个或多个鹏寸命令; 向一个或多个设备发送所述,命令; 接4树^M—个或多个鹏寸命令的响应;以及 发送基于爿M响应的虚拟响应。
33、 根据权禾腰求32戶微的计穀几可读介质,其特征在于,戶腿设織 口向所述系统的第二实例发送物理命令,从而可以级联存储设备。
全文摘要
本发明提供了一种利用商品、用户级别的存储设备来提供高级存储特征的系统和方法。高级存储系统是一种连接在计算机系统与一个或多个物理磁盘驱动器之间的元件。高级存储系统的主机接口将它自身作为虚拟磁盘驱动器呈现给计算机系统,它执行用户级别的存储硬件的命令,该用户级别的存储硬件为计算机系统的主机控制器所熟知。同样地,高级存储系统的存储设备将它自身驱动器作为用户级别的主机控制器呈现给一个或多个磁盘驱动,而不管与它相连的物理存储设备的实际拓扑结构是什么。该系统为用户提供了一种简单的方法来组合低成本、用户级别的硬件,用以向计算机系统添加附加的高级存储特征。
文档编号G06F12/00GK101356506SQ200680030571
公开日2009年1月28日 申请日期2006年8月24日 优先权日2005年8月25日
发明者B·K·舒米特, J·D·诺斯科特, J·G·汉科 申请人:晶像股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1