首页 > 其他分享 >SATA系列专题之五:Link Power Management解析

SATA系列专题之五:Link Power Management解析

时间:2024-11-05 16:02:30浏览次数:4  
标签:Management Partial Power Slumber PMREQ SATA Host 物理层

 

一、故事前传

在之前的文章中, 我们已经针对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:

标签:Management,Partial,Power,Slumber,PMREQ,SATA,Host,物理层
From: https://www.cnblogs.com/FireLife-Cheng/p/18528174

相关文章

  • SATA系列专题之二《2.2 Link layer链路层加扰/解扰/CRC解析》
    文章目录系列文章目录前言一、故事前传二、SATALinkLayer加扰/解扰解析二、SATALinkLayerCRC解析总结 前言一、故事前传我们之前说到Link layer的结构,linklayer的作用大致可以包括以下几点:Frame flowcontrolCRC的生成与检测对数据与控制字符......
  • SATA系列专题之二《2.3 Link layer链路层 Frame结构以及Primitive基元解析》
    文章目录系列文章目录前言一、故事前传二、Frame结构解析二、Primitive基元解析总结 前言  一、故事前传我们之前说到Linklayer的结构,linklayer的作用大致可以包括以下几点:FrameflowcontrolCRC的生成与检测(已解析,详细见历史文章)对数据与控制......
  • SATA系列专题之三《3.0 Transport Layer传输层概述》
    系列文章目录文章目录前言一、故事前传二、SATATransportLayer传输层概述总结 前言 一、故事前传在之前的文章中,我们有提到SATA主要包括:应用层(ApplicationLayer),传输层(TransportLayer),链路层(LinkLayer)以及物理层(PhysicalLayer),SATA结构如下图:......
  • SATA系列专题之三:3.3 Transport Layer传输层Flow Control机制解析
    一、故事前传在之前的文章中,已经解析了SATA协议的部分相关内容。较为详细解释请见之前的文章:1,浅析SATAPhysicalLayer物理层OOB信号;2,SATALinklayer链路层解析2.0-2.3;3,SATATransportlayer链路层解析3.0-3.2;我们这里主要解析TransportlayerFlowControl机制相关内容......
  • SATA系列专题之一《1.0 Physical Layer物理层OOB信号》
    文章目录前言一、SATA物理层概述二、OOB(OutofBand)信号解析三、实例解析总结前言一、SATA物理层概述说OOB之前,首先得了解一下SATA结构以及物理层的含义。SATA主要包括:应用层(ApplicationLayer), 传输层(TransportLayer),链路层(LinkLayer)、物理层(P......
  • powerdesigner导出pdf
    设置合适页面大小:当图比较多的时候,默认是无法在一个页面(默认为A4页面尺寸)展示所有的,这是有两种方式:方式一(推荐):自适应即单击Fittopage或者Centertopage导出PDF:默认打开很小(A4页面):但是放大后,清晰度杠杠的:......
  • 如何使用AdsPower指纹浏览器克服爬虫技术限制,安全高效进行爬虫!
    随着中国开发者日益成熟,应用质量明显提升,越来越多的开发者选择出海寻找机会扩大市场。但“应用出海”说起来容易,做起来难。其中,最大的困恼就是对海外市场缺乏了解。很多开发者会选择使用网络爬虫(WebCrawling)技术来搜集有价值的参考信息。但平台出于数据安全的需要,又对爬虫技......