SATA系列专题之五:Link Power Management解析
一、故事前传
在之前的文章中, 我们已经针对SATA的主要结构进行了较为详细的解析,详见前期文章:
1,浅析SATA Physical Layer物理层OOB信号;
2,SATA Link Layer链路层解析2.0-2.3;
3,SATA Transport Layer传输层解析3.0-3.4;
4,SATA Command Layer命令层解析4.0-4.1;
我们这里主要解析一下SATA Link Power Management的相关内容。
二、SATA Link Power Management解析
一般情况下,SATA Phys会处在Phy Rdy状态(Standby),确保Host与Device之间正常通信。如果SATA host一直处在Idle的情况,并不需要SATA interface处于通信状态,而此时,SATA Phys仍处在Phy Rdy状态(Standby),这样是不是有点浪费呢?
基于降低能效的考虑,SATA Spec定义了两种低功耗的状态:Partial和Slumber。
Partial: 功耗大约75mW, 比Standby状态功耗约200mW低了一多半, 从Partial状态退回Phy Rdy的时间不能超过10us.
Slumber: 功耗大约25mW, 比Partial状态功耗更低,从Slumber状态退回Phy Rdy的时间也相对较长,但不能超过10ms。
在Link Power Management协议中有四个关键的Primitive基元参与:
PMREQ_S: 请求进入Slumber状态, 这个基元会被一直发送,知道收到对方的回应(PMACK或者PMNAK).
PMREQ_P: 请求进入Partial状态, 这个基元会被一直发送,知道收到对方的回应(PMACK或者PMNAK).
PMACK:对PMREQ_S或者PMREQ_P的回应,接受进入Slumber或者Partial的请求。
PMNAK:对PMREQ_S或者PMREQ_P的回应,不接受进入Slumber或者Partial的请求。
生来平等,Host与Device均可以发起请求(HIPM/DIPM),进入Partial/Slumber。
HIPM = Host Initiated Link Power Management
DIPM = Device Initiated Link Power Management
我们针对HIPM举例,解析一下Link Power Management Protocol:
Host应用层初始化Partial/Slumber请求;
Host传输层收到上层传过来Partial/Slumber请求后,转送至下一层链路层;
Host链路层收到Partial/Slumber请求后,进入Partial(L_TPMPartial)或者Slumber(L_TPMSlumber),并发送Primitive基元"PMREQ_P"或者"PMREQ_S"至物理层,这个过程中,会一直发送PMREQ,直至收到物理层的回应(PMACK或者PMNAK);
Host物理层通过物理链接将Primitive基元"PMREQ_P"或者"PMREQ_S"传送至Device物理层;
Device物理层将收到的信息全部转送至Device链路层;
Device链路层一旦收到Primitive基元"PMREQ_P"或者"PMREQ_S",就会进入PMOff 状态;
进入PMOff状态后,Device链路层会发送Primitive基元PMACK至物理层。这个过程中会发送4~16个PMACK。之后,链路层进入ChkPhyRdy状态,并向物理层发送信号,告知其进入Partial/Slumber状态;
Device物理层将PMACK发送至Host物理层;
Device物理层检测到链路层发送的Partial/Slumber信号后,进入Electrical Idle状态(0V, no signal);
Host物理层收到PMACK后,转送至链路层;
Host链路层检测到PMACK后,进入ChkPhyRdy状态,并中止发送PMREQ;
进入ChkPhyRdy后,Host链路层会向物理层发送信号,告知其进入Partial/Slumber状态。然后Host物理层进入进入Electrical Idle状态(0V, no signal);
从上面的Protocol中,我们可以看到,一旦进入Partial/Slumber状态,Link Phy就会进入electrical idle。如果要从Partial/Slumber状态中唤醒,就需要依赖COMWAKE OOB信号重新建立Link。
有关OOB信号的详细介绍请见之前文章:
浅析SATA Physical Layer物理层OOB信号;
此外,由于Link Power Mangement是选择性的,所以并不要求所有的device一定要支持这个功能。一块SSD是否支持,可以查看其Identity Drive data:
SATA系列专题之五:Link Power Management解析相关推荐
- SATA Link Power Management的partial和slumber power state区别
#if defined(FEATURE_SATA_DIPM_PARTIAL_FIRST) SATA Link Power Management,顾名思义是让SATA Link的PH ...
- SATA系列专题之六:浅析NCQ原生指令序列
一.故事前传 在之前的文章中, 我们已经针对SATA相关内容进行了较为详细的解析,如果感兴趣的话,请见之前文章: 1,浅析SATA Physical Layer物理层OOB信号: 2,SATA Lin ...
- PCIe系列专题之五:PCIe总线电源管理
PCIe总线的电源管理包括两方面的内容: 一是基于软件控制的PCI-PM电源管理机制,这部分与PCI总线兼容: 二是基于硬件控制的ASPM电源管理机制, 不需要Host端软件口控制,PCIe链路自主管 ...
- SATA系列专题之二: 2.2 Link layer链路层加扰/解扰/CRC解析
一.故事前传 我们之前说到Link layer的结构,link layer的作用大致可以包括以下几点: Frame flow control CRC的生成与检测 对数据与控制字符的Scrmable/D ...
- [C# 基础知识系列]专题十五:全面解析扩展方法
引言: C# 3中所有特性的提出都是更好地为Linq服务的, 充分理解这些基础特性后.对于更深层次地去理解Linq的架构方面会更加简单,从而就可以自己去实现一个简单的ORM框架的,对于Linq的学习 ...
- 【67】PCIe Power Management和linux对PME的处理
0.Power Mangement的两种方式 PCIe spec定义的两种power management方式,一种是针对device的(其实是针对function的)Device Power Man ...
- PCIE协议解析 synopsys IP Power Management Capability 读书笔记(10)
5.1.8.1 PF PCI Power Management Capability Register Details Core实现了power management Capability,该capa ...
- NVMe系列专题之四:寻址模型PRP和SGL解析
我们现在讲的NVMe,主要是基于NVMe over PCIe展开的.在之前的文章中,我们提到了NVMe over PCIe系统中Host与Controller主要依靠PCIe TLPs(Memory ...
- NVMe系列专题之二:队列(Queue)管理
转载链接:https://mp.weixin.qq.com/s?__biz=MzIwNTUxNDgwNg==&mid=2247484355&idx=1&sn=04f0617bf ...
最新文章
- 申请MVP成功,发贴祝贺!
- 在Mac OS X上安装 Ruby运行环境
- 【五线谱】符干朝向与连音线 ( 符干朝向 | 第三线以下符干朝上 | 第三线以上符干朝下 | 连音线 )
- upplemental Logging
- 关联数组不能转化为JSON字符串
- qt 历史记录控件_[QT] 记录一些使用技巧
- mfc ctabctrl 双排显示_盐城便宜的开口型双排脚手架生产厂家-斯戴博盘扣脚手架...
- 交换机IP-MAC地址绑定
- Android 应用启动速度优化
- 「Mac新手操作」:使用力度触控板进行“用力点按”的方法
- linux锐捷认证成功无法上网,锐捷认证成功但是却无法上网怎么办
- 小米r1d安装php,小米路由器 一键安装LLM教程
- java 采集器_使用jsoup来写小说采集器
- 八种点云聚类方法(一)— DBSCAN
- 正则表达式(判断中文,判断英文字母、下划线、数字)
- 水面倒影风格的LOGO在线做
- Oracle SQL_TRACE使用小结
- Shiro是如何进行权限管理
- MJ恋上数据结构(第1季 + 第2季)笔记
- 基于python人工智能的最全学习路线总结,思路明朗了学习才高效
热门文章
- //毫米到英寸,单位换算
- 牛客SQL 大厂面试真题 某宝店铺分析 5套代码及解析
- netcore在Linux后台运行at Interop.ThrowExceptionForIoErrno
- 论文笔记:Parallel Tracking and Verifying: A Framework for Real-Time and High Accuracy Visual Tracking...
- 测试用例设计方法与举例说明
- python人工智能应用实例_Python实现AI自动抠图实例解析
- 中国大学MOOC-陈越、何钦铭-数据结构-2020春期中考试
- QML遮罩效果Demo
- 蓝牙简介 | bluetooth
- traceroute 工作原理