之前回顾了
SES
的基础知识以及几种在实际应用下的实现方式,最后说一下
SGPIO
,通用串行输入
/
输出总线。很多做硬件设计的同学对
GPIO
,通用输入
/
输出非常的了解,而
SGPIO
是把通用目的
I/O
信号来串行化的一种方法。
SGPIO
定义了
Initiator
初始端
(
比如一个主机适配器
)
和
Target
目的端(比如放置磁盘的背板)之间的通信,通常情况下
Target
目的端可以把
Initiator
初始端的输出信号转换成多个并行的
LED
信号。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
其实
SGPIO
是和
SES
没有任何关系的标准,
SES
是通过
SCSI
的命令集来实现对磁盘状态灯、温度、风扇等元素的管理,而
SGPIO
相对于
SES
来说功能简单的很多,仅仅是对磁盘状态灯的管理。比如,
RAID5
组中的某个磁盘由于
ECC
错误导致“
Failed
”掉线,
RAID5
变成
Degraded
降级状态,而这个时候
Initiator
控制端比如卡或者控制器等,可以通过
SGPIO
来让那颗磁盘的状态灯变成红色,从而系统管理员可以发现并更换问题磁盘。
SGPIO
总线共有四个信号线,分别是
SClock
,
SLoad
,
SDataOut
,
SDataIn
,如下图所示,其中前
3
个是从
Initiator
发送到
Target
的,而最后一个是从
Target
发送到
Initiator
。
SClock
是时钟信号,
SLoad
是一个位流传输的最后时钟,
SDataOut
是串行的数据输出位流,而
SDataIn
是串行的数据输入位流,
SDataIn
不是所有的
SGPIO
设备都支持的,是可选的。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
SGPIO
总线通过以上
4
组信号就可以控制磁盘灯的状态,一般来说支持
3
种状态,
Activity
,
Locate
和
Error
。这是一个相对比较独立的标准,因为它独立的定义了物理层、协议层和应用层等等。在实际的应用中,目前最为流行的莫过于在
SAS HBA
或者
RAID
卡的
X4
宽接口中,如果卡端支持
SGPIO
的话,这种宽接口标准正好包含了除了数据通路之外的
SGPIO
信号接口,如下图所示,通过一个统一的包含数据、
SGPIO
信号的线缆就可以实现数据的传输以及磁盘信号灯的控制,实现方式比较简单。
SES Over I2C
是通过卡上面的
I2C
接口采用特殊的线缆来管理,所以可以称作带外管理;而对于
SGPIO
来说,可以称作带内管理。
当然,除了卡支持
SGPIO
外,磁盘背板也需要支持
SGPIO
,而目前最为流行的是采用
AMI
公司的
9071/9072
芯片,这种芯片支持两种方式的机箱管理,一种是
SES Over I2C
,另外一种就是
SGPIO
。对于
SGPIO
标准的详细定义,可以参照
SFF-8485
的规格书,由
SFF
标准委员会制定
, [url]ftp://ftp.seagate.com/sff[/url]
转载于:https://blog.51cto.com/songchengyong/149276