RAID控制器中磁盘接口控制器流水线设计与实现控制器中磁盘接口控制器流水线设计与实现
在研究磁盘接口功能和现有磁盘接口设计的基础上,提出了一种带四级流水的磁盘接口设计模型,并对该模型
实现过程中的模块间通信问题和模块间缓冲管理问题进行了相应的分析和设计。通过FPGA仿真与实验结果表
明,在各种情况下,磁盘接口的吞吐率都有提高,在高写请求率和重负载两种情况下尤为显著。
随着网络发展和计算机的普及应用,人们对存储系统的性能要求越来越高,尤其是关键事务的应用。廉价冗余
流水线技术[4,5,6]是计算机技术中同时具备空间并行性和时间并行性的技术,它把一个顺序处理的过程分解成若干个子
处理过程,每个子处理过程能在专用的独立模块上有效地并行工作。本文通过对磁盘接口控制器的
1 现有磁盘接口控制器设计现有磁盘接口控制器设计
磁盘接口设计方式主要有2种:(1)使用通用处理器充当磁盘接口控制器,通过在处理器上运行相应的软件完成来自控制器上
其他处理器的磁盘操作请求。这种方式最大的优点就是实现简单,但缺点也很明显。每一个新的磁盘操作请求必须在前一磁盘
操作请求完成之后才能启动,并且需要占用大量处理器时间的异或操作也由该处理器承担,这使得每一次磁盘操作的时间太
长,进而使得磁盘接口控制器的平均磁盘访问时间过长,吞吐率较低,尤其是降级模式读操作和磁盘写操作。(2)把需要长时
间占用通用处理器的异或操作独立出来,由异或专用ASIC完成此功能,其他操作仍由通用处理器运行相应的软件完成。现在
的中低端磁盘阵列常采用这种方式。使用专用的ASIC分担所有的异或操作,虽然可以部分减少需要异或操作的磁盘访问时
间,如降级模式读操作和磁盘写操作,但新的磁盘操作也必须在前一磁盘操作完成之后才会启动,磁盘操作过程也是按顺序执
行的,整体的吞吐率仍不是很高。所以这种方式不适合于高端磁盘阵列的需要。
2 并行流水线设计模型并行流水线设计模型
与其他磁盘接口不同,磁盘阵列中的磁盘接口除了简单地完成磁盘的读写外,还需要完成数据块的逻辑地址到实际磁盘物
理地址的映射和保证数据块在磁盘阵列中可靠地存储。根据所有磁盘操作请求完成的特点,磁盘接口操作被划分为4个子任
务,每一个子任务由一个独立的模块来实现。在具体实现时,这些模块可以在同一芯片内,也可以在不同芯片中。这4个模块
分别是:共享缓存操作模块、异或计算操作模块、地址映射模块和磁盘操作模块。共享缓存操作模块根据给定的共享缓存数据
块地址读写数据块;异或计算操作模块是在降级模式读磁盘操作和正常模式下磁盘写操作时,完成异或计算;地址映射模块主
要实现磁盘数据块的放置策略[7],将主机访问磁盘阵列的地址,如逻辑块地址LBA、逻辑单元号LUN,转换为实际的磁盘号、
柱面号、磁道号、扇区号等;磁盘操作模块主要是根据地址映射模块操作后的结果完成磁盘的读写,包括相应的协议转换。图
1是同一芯片实现各模块的磁盘接口控制器的结构框图。
实际上每个磁盘操作执行的这四个模块的次序和次数是不定的。读磁盘操作的数据流方向与写磁盘操作的数据流方向是相
反的,执行这四个模块的顺序也是相反的。读写磁盘操作的各模块执行顺序如图2所示。一个磁盘操作请求只要在其执行的第
一个模块空闲时便可启动,多个磁盘操作请求可以重叠的方式被磁盘接口控制器处理。理想情况下,磁盘接口控制器可以同时
处理4个磁盘操作请求。