微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > RAID控制器中磁盘接口控制器流水线设计与实现

RAID控制器中磁盘接口控制器流水线设计与实现

时间:10-15 来源:互联网 点击:

  随着网络发展和计算机的普及应用,人们对存储系统的性能要求越来越高,尤其是关键事务的应用。廉价冗余磁盘阵列(RAID)采用分条和冗余的方法提高了存储系统的容量、速度和可靠性,已成为高性能数据存储的首选结构。磁盘阵列控制器是磁盘阵列的核心,多数缓存预取策略、缓存置换策略、磁盘聚合写策略、数据冗余计算、数据备份与重建均由磁盘阵列控制器完成。磁盘接口控制器主要负责磁盘组的管理及读写磁盘操作的具体实现。

  流水线技术是计算机技术中同时具备空间并行性和时间并行性的技术,它把一个顺序处理的过程分解成若干个子处理过程,每个子处理过程能在专用的独立模块上有效地并行工作。本文通过对磁盘接口控制器的流水线设计,提高了磁盘接口的吞吐率。较高的磁盘接口控制器吞吐率可以降低平均访问时间,使复杂有效的预取和置换算法方便地应用于磁盘阵列,提高缓存的命中率,从而提高磁盘阵列的整体性能。

  1 现有磁盘接口控制器设计

  磁盘接口设计方式主要有2种:(1)使用通用处理器充当磁盘接口控制器,通过在处理器上运行相应的软件完成来自控制器上其他处理器的磁盘操作请求。这种方式最大的优点就是实现简单,但缺点也很明显。每一个新的磁盘操作请求必须在前一磁盘操作请求完成之后才能启动,并且需要占用大量处理器时间的异或操作也由该处理器承担,这使得每一次磁盘操作的时间太长,进而使得磁盘接口控制器的平均磁盘访问时间过长,吞吐率较低,尤其是降级模式读操作和磁盘写操作。(2)把需要长时间占用通用处理器的异或操作独立出来,由异或专用ASIC完成此功能,其他操作仍由通用处理器运行相应的软件完成。现在的中低端磁盘阵列常采用这种方式。使用专用的ASIC分担所有的异或操作,虽然可以部分减少需要异或操作的磁盘访问时间,如降级模式读操作和磁盘写操作,但新的磁盘操作也必须在前一磁盘操作完成之后才会启动,磁盘操作过程也是按顺序执行的,整体的吞吐率仍不是很高。所以这种方式不适合于高端磁盘阵列的需要。

  2 并行流水线设计模型

  与其他磁盘接口不同,磁盘阵列中的磁盘接口除了简单地完成磁盘的读写外,还需要完成数据块的逻辑地址到实际磁盘物理地址的映射和保证数据块在磁盘阵列中可靠地存储。根据所有磁盘操作请求完成的特点,磁盘接口操作被划分为4个子任务,每一个子任务由一个独立的模块来实现。在具体实现时,这些模块可以在同一芯片内,也可以在不同芯片中。这4个模块分别是:共享缓存操作模块、异或计算操作模块、地址映射模块和磁盘操作模块。共享缓存操作模块根据给定的共享缓存数据块地址读写数据块;异或计算操作模块是在降级模式读磁盘操作和正常模式下磁盘写操作时,完成异或计算;地址映射模块主要实现磁盘数据块的放置策略,将主机访问磁盘阵列的地址,如逻辑块地址LBA、逻辑单元号LUN,转换为实际的磁盘号、柱面号、磁道号、扇区号等;磁盘操作模块主要是根据地址映射模块操作后的结果完成磁盘的读写,包括相应的协议转换。图1是同一芯片实现各模块的磁盘接口控制器的结构框图。


  实际上每个磁盘操作执行的这四个模块的次序和次数是不定的。读磁盘操作的数据流方向与写磁盘操作的数据流方向是相反的,执行这四个模块的顺序也是相反的。读写磁盘操作的各模块执行顺序如图2所示。一个磁盘操作请求只要在其执行的第一个模块空闲时便可启动,多个磁盘操作请求可以重叠的方式被磁盘接口控制器处理。理想情况下,磁盘接口控制器可以同时处理4个磁盘操作请求。


  3 关键问题分析

  磁盘接口的并行流水线设计模型在具体实现时有2个问题需要解决:(1)如何控制磁盘操作请求在模块间执行顺序和执行次数。因为在具体执行时有3种情况:4个模块每个模块执行1次、执行部分模块多次和只执行3个模块。(2)需要操作的数据块如何在模块间进行传递。

  3.1 任务通信

  要控制一个磁盘操作请求如何在模块间进行处理,一种有效的方式就是让每个模块都知道这个磁盘操作请求的具体需求。为此,一个用来描述磁盘操作请求的特殊的数据结构被引入,其结构如图3。每一个磁盘操作请求都有一个磁盘操作数据块结构,磁盘接口控制器预处理部件每收到一个来自控制器上的其他处理器的磁盘操作请求便产生相应的操作数据块结构,并根据其操作类型放入相应的模块任务池中。


每一个模块都有一个任务池来存放操作数据块结构。模块总是从自己的任务池中取操作数据块结构,然后根据数据块结构中的说明进行相应的处理,处理完成后再根据数据块结构中的说明正确地放入到下一个模块的任务池

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top