上海交通大学
硕士学位论文
SATA及ADMA控制器Linux操作系统驱动的设计与实现
姓名:孙文波
申请学位级别:硕士
专业:软件工程
指导教师:尤晋元
20050218
上海交通大学
学位论文原创性声明
本人郑重声明是本人在导师的指导下
除文中已经注明引用的内容外
对本文的研究做出重要贡献的个人和集体
本人完全意识到本声明的法律结果由本人承担
孙文波
日期
上海交通大学
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留
同意学校保留并向国家有关部门或机构送交论文的复印件和电子版
本人授权上海交通大学可以将本学位论文的全部或部分内容编入有关数据库进行检索缩印或扫描等复制手段保存和汇编本学位论文
本学位论文属于
不保密
请在以上方框内打
学位论文作者签名
尤晋元 孙文波
日期 2005年 2 月 18 日
SATA及ADMA控制器Linux操作系统驱动的设计与实现
摘要
信息时代为了进一步满足企业及个人用户对存储系统产品的高性能及低费用的双重需求
本文正是针对上述需求
该存储系统硬件上采用SATA 磁盘及SATA 控制器含ADMA功能涉及IDE/ATA和SCSI总线技术及协议则还要在驱动的上层实现iSCSI技术
本文的重心在于如何驱动SATA磁盘及ADMA控制器并实现一些关键功能
实验结果表明对于大批量数据存取
并且也不逊色于采用SCSI磁盘的高端存储系统在数据存取速度上赶超SCSI也不是没有可能同时基于SATA的存储系统也将会向用户提供更好的性价比
本文探讨了基于本系统ADMA控制器以及驱动软件
iSCSI网络存储及TOE技术的存储
系统产品开发
关键词SCSI子系统及总线NCQ
热插拔
Abstract
At the age of information, it’s very important for the local or remote data storage and backup. Now, for meeting farther the needs of enterprise and individual on the storage system product that is high performance and low cost, the development of storage system product has formed a great power based on SATA hard-disk.
In order for the above needs, in this paper, the OS device driver of a new storage peripheral has been designed and implemented, in this storage system, the hardware adopts SATA hard-disk and SATA Controller (i.e. ADMA Controller, including the ADMA ), for the development of software, the Linux OS is used, involving the bus technology and protocol of IDE/ATA and SCSI. If the network storage or RAID are needed, they may been realized by iSCSI and RAID technology. This paper highlights how to drive SATA and ADMA Controller based on some important functions for high performance.
The result of experiment indicates: the performance of system gets to the expected aim. To a large data transfer, its performance exceeds that of system based on the IDE hard-disk, and don’t get behind the performance of system based on the SCSI hard-disk. Along with the transition of the standard of SATA from SATA1.0 to SATA2.0 and SATA3.0, in the future, the speed of SATA hard-disk will probably go beyond that of SCSI hard-disk and many developments will been made based on SATA. At the same time, the storage system based on SATA will provide user with high performance and low cost.
In the end, this paper probes into the development of the storage system product that involving the RAID hard-disk array, iSCSI network storage and TOE (TCP/IP Offload Engine ) technology based on the system that includes SATA hard-disk, ADMA controller and Driver, and put forward suggestions to future work.
Key words:SATA and ADMA Controller; SCSI Subsystem and Bus; ADMA ; NCQ ; ADMA Tagged Command
第一章 引 言
1.1 Linux块驱动特点
操作系统的主要任务之一是控制所有的输入/输出设备(也即I/O设备)
对其管理的好坏8
替用户来驱动设备还要提供设备无关性
达到操作简便11
I/O设备被分为三类字符设备和网络设备
块设备用来存储定长且可随机访问的数据块,对块设备的所有操作都以块为单位进行
出于性能的考虑提高读写效率
12块设备的这些特点,
导致了块设备驱动程序有别于其它两类设备
其种类繁多
IDE/ATA块设备以及SCSI块设备
1.2.1 IDE块设备
IDE即Integrated Drive Electronics
成在一起的硬盘驱动器Advanced Technology Attachment
ATA接口发展到今IDEEIDE Enhanced
IDE/Fast ATAFastATA-2Ultra ATA/33
Ultra ATA/100及Ultra ATA/133
可达133MB/sD??ü??μíí?ê±????μíá?
1.2.2 SCSI块设备
SCSI即Small Computer System Interface(小型计算机系统接口)
SCSI广泛应用于如光驱MO磁带机打印机SCSI接口按其发展时期可细分为SCSI-1
Wide SCSIUltra160 SCSI及Ultra320 SCSI 等等
SCSI接口的块设备属于高性能的数据存储设备因此通常用于高端电脑但同时它的价格也很昂贵
但其I/O控制方式却分为四种
程序中断控制方式DMA
下面将做一一简介
它是早期的计算机系统对I/O设备 的一种管理方式完全用程序直接控制数据在CPU和外部设备之
间的传输显然CPU大量的时间用于循环检测上因此在现代计算机系统中已很少应用这种控制方式
外设有了反映其自身状态的能力 便以中断请求方式主动向CPU报告
这种方式称为程序中断控制方式并使输入但是
各种设备频繁地产生I/O中断耗费了大量的时间
DMA
DMA方式就是在进行数据传送时
由硬件中的DMA控制器接管总线控制权
数据不经过CPU而直接在内存和I/O设备之间进行成块传输
22降低了系统的复杂
性但是使得CPU处理的效率下降可以采用CPU和DMA交替访问内存的方法
来提高整个系统的效率
它使各种外设 能以标准的接口方式连接到系统中它的引入使得数据的输入输出成为一个独立的系统它独立
于CPU来管理和控制I/O操作通道不仅实现了CPU与通道的并行操作这样极大地提高了整个系统的效率主机控制器和设备之间采用四级连接按照信息交换方式和连接的设备类型不同字节多路通道通道的I/O操作由两种指令实现控制通道技术被普遍使用在大但也有一些微机吸取了大
设计了具有通道作用的芯片IOP
总之
是计算机技术的重要进步
长期以来
随着并行ATA接口数据传输速率的不断提升达133MB/s无论是物理性能并行总线的局限性已经越来越明显
但是随着CPU的速度越来越快
显现出愈来愈明显的性能瓶颈
为了克服这种现状
串行技术在人们的印象中一直是慢速的代名词
虽然收发数据也都是串行的无论是物理特性还是逻辑功能这使得ATA突然有了脱胎换骨的改变
而SATA磁盘出现的开始就是万转的
连接便捷且支持热插拔
市场及应用不断成熟目前部分SATA磁盘的成本就已经
同并行ATA磁盘(也即IDE磁盘)的成本相持平不管从那个方面对两者进行比较PATA磁盘将会被淘汰
在低端存储领域在高端存储领域
因为SATA从各方面来讲未来大有赶超SCSI的趋势而SATA存储产品的出色表现也让高高在上的企业级人士刮目相看若要追求高性能的数据存储用户肯定会选择SATA存储产品
如下着重分析一下在企业级应用中
1.4.1.1 可靠性
可靠性可能是企业级用户最为关注的话题
即SCSI=高可靠性其实接口在硬盘上就是一块PCB电路板
如磁头轴承磁头臂以及磁盘
例如
1.4.1.2 性能
SCSI硬盘目前的最高转速可达15000rpm更高的转速可以获得更高的寻址速度但15000rpm并不是市场的主流仍以10000rpm为主
我们可以从以下两个方面进行讨论
SCSI目前最高的水平是320MB/s但SCSI总线是共享的
这就意味着当SCSI通道内的硬盘实际带宽总和超过320MB/s时4块SCSI硬盘就基本达到了实际带宽总和SATA则没有这个问题5块SCSI硬盘系统的数据传输率仍然是有限的320MB/s 然而5块SATA的系统则能够达到750MB/s
TCQTagged Command Queuing
但这也只能怪PATA并没有发挥ATA完全的优势
就加入了TCQ功能WD公司率先在Raptor上支持了这一技术
NCQNative Command QueuingRaptor虽然支持的是PATA中的相关功能著名的硬盘网站StorageReview.com在将其与希捷Cheetah 10K.6 SCSI硬盘对比测试
后得出结论
虽然Raptor的TCQ只支持32级队列深度
事实上很少有硬盘能真正用上256级命令队列
显然是SATA占优
你就深有体会了而计划上市的SCSI硬盘只达到300GB的水平这就意味着在同一总容量下从而节约总成本
基于
SATA系统的成本比SCSI降低了百分之四十之多
SATA硬盘还具备热插拔能力
如在机架式服务器中使用SCSI-SATA以及SATA端口位增器另外
如WD的Raptor就采用了可以感应高速旋转所产生的振动并校正磁头寻址的旋转加速前馈技术
Rotational Accelerometer Feed Forward
同时它还具有类似于SCSI的企业扩展SMART访问Enterprise
Extensions S.M.A.R.T. Accessed以便在出现错误前提前向RAID控制器
预警
目前包括EMCHPSun
体现了SATA硬盘在企业级应用中的强大潜力
当然比如在双机热备应用中
而现在的SATA则不行
在SATA-II标准中它将允许在一个硬盘有两个接口
我们可以发现在中低端的企业级的应用环境中
在搭建相应的企业级产品时
1.4.2 ADMA背景介绍
在PATASATA磁盘能提供更好的性价比
SATA磁盘拥有优异的功能和性能这就需要相应的I/O控制器来提供强有力的支持
支持NCQ以及多发命令
系统连接示意图见图1-1
图 1-1 SATA及SATA控制器连接示意图
Figure 1-1 The Connection Sketch Map of SATA and SATA Controller
本文将要涉及的ADMA控制器即是一种功能和性能都非常优异的SATA控制器
ADMA即自动DMA
通过处理这些任务甚至比SCSI控制器效率更高ADMA控制器减少了主机干扰
结合使用具有NCQ特性的万转SATA硬盘可以极大提高数据传输速度
ADMA存储系统能提高生产力和系统数据整合能力
通过ADMA存储系统可以提供企业级的SATA解决方案
在存储系统产品的企业级应用中
那么ADMA控制器及其存储系统对发挥高性能SATA磁盘的潜力和解决数据传输速度瓶颈及提高整个系统性能上将会是个理想的选择
我的论文工作的主要目标就是设计和实现Linux操作系统下的SATA及ADMA控制器的驱动程序设计与实现SATA及ADMA控制器的诸多功能和发挥它们的性能总线及协议分析选型
ADMA Engine的控制与管理
ADMA命令队列标记的设计与实现
中断处理程序的实现及驱动对多个ADMA控制器的支持
第二章 SATA及ADMA控制器及其相关技术简介
2.1 SATA
SATA (即串行ATA)是英特尔公司在2000年IDF
英特尔开发者论坛
串行ATA是相对于并行ATA硬盘内部总线而言的一种串行架构
然后沿数据线以比并行ATA更高的速率将数据分组进行传输
而且准确性极高
SATA以连续串行的方式传送资料此做法能减小接口的针脚数目第1针发出3针供电, 这样能降低电力消耗使用电压250mV
,传统的IDE则需要5伏特1
采用SATA接口的块设备相对IDE/ATA及SCSI接口的块设备而言
l 首先传输更稳定
每次只传送一位数据通过串行接口缆线与SATA 硬盘连接搭配提高了设计上的弹性针脚的减少使得信号传输时干扰更小
l 其次连接更简单SATA硬盘可以 轻松达到150MB/sSATA3.0可以实现600MB/s的传输速度
每个通道都可以独享带宽
另外
l 第三适用范围更广但已经有 两年的开发历史目前
SATA块设备在传输速度上大有赶超SCSI块设备性能的趋势
SATA块设备拥有如此优异的功能和性能
甚至比IDE/ATA相关产品的价格还要低
鉴于以上SATA技术及其产品的显著特点
2.2 ADMA
ADMA即Automatic Direct Memory Access
3运行速度也越来越快
外设及其控制器的性能也有待提高
即串行ATA硬盘这是存储外设的一次重大革新既然存储外设速度提升了于是出现了与之配套的采用ADMA技术的ADMA控制器
后来便迅速在一些设备厂商中出现应用该项技术的产品后续将会介绍ADMA Engine
它在数据I/O传输方式上等同于DMACPU让出总线的控制权
在ADMA控制器的控制下
虽然ADMA与DMA在数据I/O传输方式上相同
DMA处理大批量数据传输
也即若干个DMA数据传输形成DMA链交由ADMA控制与处理
34
只是在ADMA操作开始和结束时
总之该项技术尤其适用于大规模大批量数据传输
2.3 ADMA控制器
ADMA控制器用来管理多个SATA块设备
ADMA控制器主要实现了ADMA技术
为了能发挥ADMA的强大性能
因为ADMA控制器是以板卡的形式插在PCI或PCI-X总线插槽上的
图 2-1 ADMA控制器系统架构图
Figure 2-1 The System Architecture Map of ADMA Controller
ADMA Engine是ADMA控制器的核心部分
状态和数据寄存器以及用于传输数据的FIFO等
34
图 2-2 ADMA Engine系统架构图
Figure 2-2 The System Architecture Map of ADMA Engine
ADMA Engine中包含了CPB 命令链及APRD
数据链的接口
其结构见图2-3
图 2-3 CPB命令链及APRD数据链结构图
Figure 2-3 The Structure Map of CPB Command Chain and APRD Data Chain
此外
2.4 SATA命令排队及ADMA命令标记
命令排队技术在优化驱动器命令执行次序
但是它需要有块设备的支持
也即TCQ
也即NCQ
但是它们的思想和目的却是一致的
块设备所使用的本地命令排队技术作以简要介绍
是对SATA 1.O标准的扩展
它允许同时对一个SATA驱动器发出多条命令
驱动器可以动态地对命令队列中的未完成的命令重排序或重新调度2NCQ还有一个重
要的机制它仍然会允许主机再发一个命令给驱动器
以上SATA的命令排队技术并不需要驱动的支持
在ADMA Engine的CPB命令链中一旦启动ADMA Engine进行数据传输那么该CPB的地址信息被暂时存入CPB Lookup Table中
若该CPB随后又得到了运行时机
3若CPB不加标记
那么就等待然后后续的CPB才能运行