一、故事前传

在之前的文章中, 我们已经针对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定义了两种低功耗的状态:PartialSlumber

  • 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:

  1. Host应用层初始化Partial/Slumber请求;

  2. Host传输层收到上层传过来Partial/Slumber请求后,转送至下一层链路层;

  3. Host链路层收到Partial/Slumber请求后,进入Partial(L_TPMPartial)或者Slumber(L_TPMSlumber),并发送Primitive基元"PMREQ_P"或者"PMREQ_S"至物理层,这个过程中,会一直发送PMREQ,直至收到物理层的回应(PMACK或者PMNAK);

  4. Host物理层通过物理链接将Primitive基元"PMREQ_P"或者"PMREQ_S"传送至Device物理层;

  5. Device物理层将收到的信息全部转送至Device链路层;

  6. Device链路层一旦收到Primitive基元"PMREQ_P"或者"PMREQ_S",就会进入PMOff 状态;

  7. 进入PMOff状态后,Device链路层会发送Primitive基元PMACK至物理层。这个过程中会发送4~16个PMACK。之后,链路层进入ChkPhyRdy状态,并向物理层发送信号,告知其进入Partial/Slumber状态;

  8. Device物理层将PMACK发送至Host物理层;

  9. Device物理层检测到链路层发送的Partial/Slumber信号后,进入Electrical Idle状态(0V, no signal);

  10. Host物理层收到PMACK后,转送至链路层;

  11. Host链路层检测到PMACK后,进入ChkPhyRdy状态,并中止发送PMREQ;

  12. 进入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解析相关推荐

  1. SATA Link Power Management的partial和slumber power state区别

    #if defined(FEATURE_SATA_DIPM_PARTIAL_FIRST)         SATA Link Power Management,顾名思义是让SATA Link的PH ...

  2. SATA系列专题之六:浅析NCQ原生指令序列

    一.故事前传 在之前的文章中, 我们已经针对SATA相关内容进行了较为详细的解析,如果感兴趣的话,请见之前文章: 1,浅析SATA Physical Layer物理层OOB信号: 2,SATA Lin ...

  3. PCIe系列专题之五:PCIe总线电源管理

    PCIe总线的电源管理包括两方面的内容: 一是基于软件控制的PCI-PM电源管理机制,这部分与PCI总线兼容: 二是基于硬件控制的ASPM电源管理机制, 不需要Host端软件口控制,PCIe链路自主管 ...

  4. SATA系列专题之二: 2.2 Link layer链路层加扰/解扰/CRC解析

    一.故事前传 我们之前说到Link layer的结构,link layer的作用大致可以包括以下几点: Frame flow control CRC的生成与检测 对数据与控制字符的Scrmable/D ...

  5. [C# 基础知识系列]专题十五:全面解析扩展方法

    引言:  C# 3中所有特性的提出都是更好地为Linq服务的, 充分理解这些基础特性后.对于更深层次地去理解Linq的架构方面会更加简单,从而就可以自己去实现一个简单的ORM框架的,对于Linq的学习 ...

  6. 【67】PCIe Power Management和linux对PME的处理

    0.Power Mangement的两种方式 PCIe spec定义的两种power management方式,一种是针对device的(其实是针对function的)Device Power Man ...

  7. PCIE协议解析 synopsys IP Power Management Capability 读书笔记(10)

    5.1.8.1 PF PCI Power Management Capability Register Details Core实现了power management Capability,该capa ...

  8. NVMe系列专题之四:寻址模型PRP和SGL解析

    我们现在讲的NVMe,主要是基于NVMe over PCIe展开的.在之前的文章中,我们提到了NVMe over PCIe系统中Host与Controller主要依靠PCIe TLPs(Memory ...

  9. NVMe系列专题之二:队列(Queue)管理

    转载链接:https://mp.weixin.qq.com/s?__biz=MzIwNTUxNDgwNg==&mid=2247484355&idx=1&sn=04f0617bf ...

最新文章

  1. 申请MVP成功,发贴祝贺!
  2. 在Mac OS X上安装 Ruby运行环境
  3. 【五线谱】符干朝向与连音线 ( 符干朝向 | 第三线以下符干朝上 | 第三线以上符干朝下 | 连音线 )
  4. upplemental Logging
  5. 关联数组不能转化为JSON字符串
  6. qt 历史记录控件_[QT] 记录一些使用技巧
  7. mfc ctabctrl 双排显示_盐城便宜的开口型双排脚手架生产厂家-斯戴博盘扣脚手架...
  8. 交换机IP-MAC地址绑定
  9. Android 应用启动速度优化
  10. 「Mac新手操作」:使用力度触控板进行“用力点按”的方法
  11. linux锐捷认证成功无法上网,锐捷认证成功但是却无法上网怎么办
  12. 小米r1d安装php,小米路由器 一键安装LLM教程
  13. java 采集器_使用jsoup来写小说采集器
  14. 八种点云聚类方法(一)— DBSCAN
  15. 正则表达式(判断中文,判断英文字母、下划线、数字)
  16. 水面倒影风格的LOGO在线做
  17. Oracle SQL_TRACE使用小结
  18. Shiro是如何进行权限管理
  19. MJ恋上数据结构(第1季 + 第2季)笔记
  20. 基于python人工智能的最全学习路线总结,思路明朗了学习才高效

热门文章

  1. //毫米到英寸,单位换算
  2. 牛客SQL 大厂面试真题 某宝店铺分析 5套代码及解析
  3. netcore在Linux后台运行at Interop.ThrowExceptionForIoErrno
  4. 论文笔记:Parallel Tracking and Verifying: A Framework for Real-Time and High Accuracy Visual Tracking...
  5. 测试用例设计方法与举例说明
  6. python人工智能应用实例_Python实现AI自动抠图实例解析
  7. 中国大学MOOC-陈越、何钦铭-数据结构-2020春期中考试
  8. QML遮罩效果Demo
  9. 蓝牙简介 | bluetooth
  10. traceroute 工作原理