浅析SAS协议(1):基本介绍
文章目录
- 概述
- SAS协议发展历程
- SAS技术特性
- SAS设备拓扑
- SAS phy
- SAS地址
- SAS设备类型
- SAS协议分层
- 参考链接
概述
SAS,全称Serial Attached SCSI,即串行连结SCSI,是一种采用了串行总线的高速互连技术。通过物理上使用串行总线连结,在链路上传输SCSI协议标准命令,SAS替代了早期的并行SCSI总线传输技术,相较于后者,SAS实现了更高的传输速率、更方便的连接以及更高的扩展性。当前,SAS在服务器以及存储阵列中广泛应用,主要用于连接硬盘和硬盘框。
SAS协议发展历程
SAS协议自2005年发布SAS 1.0版本后,先后又发布了2.0、3.0以及4.0版本,每个新发布的版本传输速率较于上一代都实现了翻倍。当前,市面上应用最广泛的主要是SAS 3.0(12G SAS),涉及的产品很多,其后的SAS 4.0版本也逐渐有厂商发布了对应的存储设备,后续会陆续应用到市场当中。
| 协议版本 | 速率 | 发布时间 |
|---|---|---|
| SAS-1 | 3Gbps | 2005 |
| SAS-2 | 6Gbps | 2009 |
| SAS-3 | 12Gbps | 2013 |
| SAS-4 | 24Gbps | 2019/2020 |
SAS技术特性
SAS支持以下技术特性:
- 采用串行总线技术,可以实现更高带宽的硬件链路,目前应用最广泛的SAS 3.0版本,单条链路可以支持到12Gbps/s的速率;
- 点对点的结构,可提供端点间固定的带宽,避免了共享总线带来的瓶颈效应;
- 全双工的数据传输,SAS的物理链路包含了发送和接收两组差分信号线路,可以实现双边同时传输数据,提高数据的吞吐量;
- 高扩展性:SAS协议支持使用Expander设备扩展连接SAS设备,最高可在一个SAS域内支持65535的设备数量;
- 兼容性:SAS在链路协议以及接口上均实现了对SATA的兼容,支持接入SATA盘,并传输SATA数据帧。
SAS设备拓扑
SAS在实际应用场景中,主要用来接入硬盘以及硬盘框,如下图,是一个基础的SAS组网模型,其中,SAS主机适配器作为启动器,可以直连SAS或SATA设备;同时还接入了一个Expander设备,从而可以扩展更多的SAS设备。

SAS总线通过点对点的方式将两个设备连结到一起,连接点称为端口。每个SAS设备至少需要包含一个端口,对于SAS HBA和Expander设备通常会包含多个端口。一个SAS端口由一个或以上的Phy(对应于一条物理链路)组成,如果端口中仅有一个Phy,该端口被称为窄端口,如上图中x1端口;有包括多于一个的Phy,则称其为宽端口,如上图中x4宽端口。
在对SAS组网模型有了一个基础的认识后,我们再来看一下SAS设备拓扑相关的其它一些基本术语和概念。
SAS phy
SAS phy是一个逻辑概念,包含了一个收发器,可以在物理链路上实现发送或接收数据。当连接两个设备时,设备间的链路示意图如下:

可以看到,SAS的一条物理链路包含了两组差分信号对,分别用于发送和接收方向,并且允许同时在两个方向上进行传输,即全双工。
SAS地址
SAS地址是一个64位长度的标识符。对于设备中每个phy都配置了一个SAS地址,并且如果多个phy需要组成宽端口,需要配置相同的SAS地址。SAS协议规定,SAS地址应该使用NAA IEEE注册格式进行定义,如下:

如果SAS地址的所有字段全为0,则会被视为无效的标识。
SAS设备类型
SAS协议定义了两种类型的SAS设备:End Device和Expander Device,其中:
- End Device:SAS协议定义不是Expander设备的设备都属于End Device,包括SAS主机适配器、SAS硬盘等。End device不具备转发能力;
- Expander Device:可以提供设备扩展能力,允许系统接入更多的SAS设备。
SAS协议分层
SAS协议分为6个层次,从低到高依次是物理层、Phy层、链路层、端口层、传输层和应用层:

各个分层功能描述如下:
- 物理层(physical layer):主要定义了SAS线缆和接口的规范,电气特性和SAS phy层中用于SAS收发器的测试条件;
- Phy层(phy layer):负责传输上层协议的比特流,定义了编码方案、供电/复位序列等;
- 链路层(link layer):定义了如何控制phy层连接管理。链路层根据所处理的协议不同还分为SSP链路层(串行SCSI协议链路层)、STP链路层(串行隧道协议链路层)、SMP链路层(串行管理协议链路层);
- 端口层(port layer):描述的是链路层和传输层的接口,包括如何请求、中断、如何选择建立连接。SAS端口层可以通过相关的SAS链路层同接口中所有的phy进行通讯;
- 传输层(transport layer):主要负责SAS帧的封装和分解。具体的来说传输层能从端口层接收SAS帧并且解析,然后将SAS帧内要传输的内容发送给应用层,反之依然。根据所处理的具体协议不同,传输层分为:SSP传输层(串行SCSI协议传输层)、STP传输层(串行隧道协议传输层)和SMP传输层(串行管理协议传输层);
- 应用层(application layer):描述了如何在不同类型的应用下使用SAS的细节,它产生请求并且向相关的传输层发送请求(比如,SCSI应用层给SSP传输层发送请求,要求向一个SSP目标端口发送一条SCSI命令),并且从相关的传输层接收请求响应结果。
参考链接
- 《SAS Protocol Layer》
- 《SAS Storage Archteciture》
相关文章:
浅析SAS协议(1):基本介绍
文章目录概述SAS协议发展历程SAS技术特性SAS设备拓扑SAS phySAS地址SAS设备类型SAS协议分层参考链接概述 SAS,全称Serial Attached SCSI,即串行连结SCSI,是一种采用了串行总线的高速互连技术。通过物理上使用串行总线连结,在链路…...
93.【Vue-细刷-02】
Vue-02(十六)、基本列表渲染 (v-for)1.使用v-for遍历数组2.使用v-for遍历对象3.使用v-for遍历字符串(十七)、列表过滤 (filter())1.⭐JS中Change属性的原生状态⭐2.使用watch监听实现3.const {xxx} this 在Vue的作用⭐⭐4.JS箭头函数参数的简写⭐5.使用computed进行计算实现(最…...
Allegro负片层不显示反盘的原因和解决办法
Allegro负片层不显示反盘的原因和解决办法 在用Allegro做PCB设计的时候,负片设计是较为常用的一种方式,有时会出现打开负片层却看不到反盘的情况,如下图 L2层是负片层 L2层仍然只能看到盘 如何才能看到反盘显示的效果,具体操作如下 首先确定L2层层叠里面设置的是负片...
ACM数论 裴蜀定理(贝祖定理)
一.内容定义 「裴蜀定理」,又称贝祖定理(Bzouts lemma)。是一个关于最大公约数的定理。其内容定义为:对于不全为零的任意整数 a 和 b,记二者的最大公约数为 g 即 gcd(a,b) g,则对于任意整数 x 和 y 都一定…...
基础篇—CSS Position(定位)解析
CSS Position(定位) position 属性指定了元素的定位类型。 position 属性的五个值: relativefixedabsolutesticky元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非是先设定position属性。他们也有不同的工作方式,这取决于定位方法。 1、static…...
正则表达式与grep
基本正则表达式BRE集合 匹配字符匹配次数位置锚定 符号作用^尖角号,用于模式的最正常,如“^haha”,匹配以haha单词开头的行$美元符,用于模式的最右侧,如“haha$”,表示haha单词结尾的行^$组合符ÿ…...
开发必备的IDEA 插件!效率提升 50 倍!
日常开发中,面向百度编程的程序员,很多时候,你跟大佬级别的差距,可能不仅仅是知识面的差距,还有就是开发效率的差距。以下是我常用的几个IDEA插件,废话不多说,直接肝干货! 1. Codot…...
aws eks 集群访问ecr仓库拉取镜像的认证逻辑
本文主要讨论三个问题 ecr帮助程序在docker上如何配置eks集群访问ecr仓库的逻辑kubelet授权ecr的源码分析 ecr帮助程序 在docker环境下,可以通过在$HOME/.docker/config.json中指定凭证管理程序 docker login aws同样提供了证书助手,避免手动执行ecr认…...
Linux Socket Buffer介绍
一. 前言 Linux内核网络子系统的实现之所以灵活高效,主要是在于管理网络数据包的缓冲器-socket buffer设计得高效合理。在Linux网络子系统中,socket buffer是一个关键的数据结构,它代表一个数据包在内核中处理的整个生命周期。 二. Socket Bu…...
ACL与NAT
ACL---访问控制列表,是一种策略控制工具 功能:1.定义感兴趣流量(数据层面 ) 2.定义感兴趣路由(控制层面) ACL 条目表项组成: 编号规则:步数或者跳数默认值为5,…...
使用gdb来debug程序并查找Segmentation fault原因
GDB 调试前言GDB基础用法1.启动及退出调试2.设置参数3.执行程序4.流程控制5.设置断点6.输出信息7.查看栈帧8.info命令9.显示源码GDB调试coredump文件关注公众号【程序员DeRozan】,回复【1207】,免费获取计算机经典资料及现金红包 前言 在开发程序时&…...
vbs简单语法及简单案例
文章目录一、简单语法1、变量2、输入3、输出4、选择语句5、循环二、用记事本编译中文乱码问题三、制作一个简单vbs脚本表白一、简单语法 1、变量 语法: dim 变量名例: dim a,b a1 b2 msgbox ab运行: 2、输入 语法:InputBox(…...
学板绘课程学费一般多少钱
学板绘课程学费一般多少钱?培训机构的费用和师资、模式有关,价格贵不贵要结合相同类型的机构多多对比。因为好些平台做了很多的宣传广告,运营成本很高, 终羊毛出在羊身上,这样的机构知名度很高,但是性价比不…...
48.在ROS中实现local planner(1)- 实现一个可以用的模板
有了之前45.在ROS中实现global planner(1)- 实现一个可以用模板的global planner的经验, 现在再去创建一个local planner的包就容易多了 1. 创建包 创建 cd ~/pibot_ros/ros_ws/src # 这里可以使用自己的ros workspace catkin_create_pkg sample_loc…...
jenkins基础部署
一、jenkins是什么1.Jenkins的前身是Hudson,采用JAVA编写的持续集成开源工具。Hudson由Sun公司在2004年启动,第一个版本于2005年在java.net发布。2007年开始Hudson逐渐取代CruiseControl和其他的开源构建工具的江湖地位。在2008年的JavaOne大会上在开发者…...
Unity3D -知识点(1)
1.场景视图鼠标滚轮:场景放大缩小鼠标右键:场景左右平移场景编辑器中,能看到什么?网格,每一格大小为1unit,建模不同,规定不同,(对应屏幕上100个像素)世界坐标系y轴向上为正x轴向右为…...
【学习笔记】NOIP暴零赛3
博弈(game) 观察到博弈过程中胜负态不会发生改变,那么求出从每个棋子出发能走的最长链,然后背包即可。 复杂度O(nm)O(nm)O(nm)。 #include<bits/stdc.h> #define ll long long #define pb push_back using namespace std; const int mod9982443…...
Java JSR规范列表
Java JSR规范列表目录概述需求:设计思路实现思路分析1.JSR2.JSR方法3.web service4.Webservice:5.数据处理器拓展实现参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,m…...
Java必备小知识点1
Java程序类型: Applications和AppletApplications:是指在计算机操作系统中运行的程序。是完整的程序,能独立运行。被编译后,用普通的Java解释器就可以使其边解释边执行。必定含有一个main方法,程序执行时,首先寻找main方法&#x…...
JavaScript作用域、闭包
文章目录作用域、作用域链作用域作用域链循环中的作用域自由变量、闭包自由变量闭包的定义、表现、应用如何确定在闭包中获取正确的变量总结作用域、作用域链 作用域 编程语言中存储、访问、修改变量当中的值是一项基本能力、存储变量、访问变量必须按照一定的规则࿰…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...
DeepSeek越强,Kimi越慌?
被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...
路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...
