分类: 服务器与存储
2011-02-12 10:47:11
2对差分信号线进行数据同步收发。
一个PHY就是一个收发器。现在市场上常见的速率为3G。
SAS利用8b10b编码。8bit会编程10bit。
SAS依靠double-word结构。每个dword由4byte组成。经过编码后一个dword会变成40bit。
有三种dword
1、 data dword:用于数据传输
primitive:用于特殊信号和控制功能
2、 invalid dword:非法dword
同网络报文很类似的,有头有尾有CRC,
initiator和target连接后,就在双方之间传送dwords。连接会有三个过称:建立、通信和移除阶段。
当建立连接的时候,就指定了互相传输的协议(SSP,SMP,STP)。SSP/STP协议时,处理一条命令,会发生多次连接打开和中断。SMP协议时,只有一个完整的单一连接。
有多少个PHY就只能有多少连接,即连接数不可能超过物理PHY的数量。
initiator和target的port用于独一无二的SAS address,expander设备也是如此。下图是wide和narrow通过expander互联的连接图。
若initiator和target的PHY直连,即全部都在一个expander内,则PHY之间只有一个potential pathway存在。但是当两者之间需跨越expander则将有多条potential pathway。如下图HOST和机柜1之间的PHY只有一条potential pathway,但是HOST和机柜2之间则有4条potential pathway。由于相同链路和PHY之间会存在不同的potential pathway,那么必然会存在竞争。如机柜A和B之间只有4条potential pathway,如果两个HOST都发起请求,肯定有4个会失败。
当OPEN address的报文到达expander,如果该连接的path 资源已经已经被占用,那么将会blocked该forward进程,需要等待直到资源释放。也就是说,一条物理PHY间的链路,只能有一条一个方向的pathway存在。但是会出现一个deaklock。如下图,HOST1想和DISK4建立连接,而DISK4也想和HOST1建立连接,那么谁都无法占用这个pathway。这就好比一条独木桥上的两只山羊….
更复杂的情况如下:
如何从deadlock恢复?利用每个expander 的PHY的timeout定时器。此时会强制backoff该request为最低优先级并发送OPEN_REJECT的primitive dword。这会释放path 资源。若还是deadlock,那么pathway timeout会逐步让这些request expire,直到deadlock被打破。
chinaunix网友2011-03-06 08:43:47
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com