LIBSAS/SAS驱动代码分析之SAS基本概念

admin2025-10-02 18:12:543292

SAS (Serial Attached SCSI)是一种点对点的在存储设备之间进行数据传输的串行协议。目前大部分SAS控制器支持的是SAS-3,支持12Gbit/s速率;之前看到有国外友商传了一个PATCH,支持22.5Gbit/s,应该是支持SAS-4。貌似SAS-5也在开发中,支持45Gbit/s速率。

SAS控制器硬件实现了SAS协议,对于SAS控制器来说,SAS驱动是其应用层的操作。在软件(包括OS和SAS驱动)准备好命令和数据后,SAS控制器进行命令的解析和数据在内存和硬盘之间的搬移。

SAS协议定义如下:从下到上分别为SAS物理层,SAS phy层,SAS link层(支持SSP/STP/SMP link层),SAS port层,SAS传输层,SAS应用层。

下面介绍几个基本概念:

(1) PHY: PHY是一组两个差分信号对,一个用于发送,另一个用于接受。每个PHY都有一个SAS地址,和唯一的PHY ID。

(2) PORT: PORT包含一个或多个PHY。PORT分为宽端口和窄端口,窄端口表示PORT只包含一个PHY,宽端口表示包含超过一个PHY。

(3) SAS expander设备和SAS end设备:

SAS设备包含一个或多个SAS PORT,每个SAS PORT包含一个或多个PHY。

SAS expander设备包含两个或更多外部的expander port。SAS end设备仅包含一个PORT。

SAS设备拓扑可分为直连情况和expander情况。下面分别列出一个直连情况和expander情况的例子。

直连情况时硬盘直接与SAS控制器相连,每个硬盘通过LOCAL PHY连接到SAS控制器,由于SAS控制器的local PHY有限,因此所能连接的硬盘数也较少。

Expander情况时硬盘通过expander来连接SAS控制器,expander就是一个扩展器,expander可以通过一个或多个local PHY连接SAS控制器,而硬盘与expander之间通过remote PHY来连接,同时多个PHY组成一个port。如上图4个硬盘通过4个remote PHY与expander相连,而expander通过一个local PHY连接到SAS控制器,相当于4个硬盘共享1个local PHY。

搜索一下