SATA系列专题之四:4.0 Command Layer命令层概述

一、故事前传

在之前的文章中, 我们已经介绍了传输层(Transport Layer),链路层(Link Layer)以及物理层(Physical Layer)的相关内容。详见前期文章:

1,浅析SATA Physical Layer物理层OOB信号;

2,SATA Link Layer链路层解析2.0-2.3;

3,SATA Transport Layer传输层解析3.0-3.4;

我们这里主要解析Command layer命令层相关内容。

二、SATA Command Layer命令层概述

当Host要下发一个command时,步骤大致如下:

  1. Host软件先初始化Shadow register;

  2. 软件下发cmd, 将payload content的资讯,先写到shadow command block register和shadow control block register里;

  3. 应用层将shadow register的内容发送传输层,并产生FIS,,

  4. 通过FIS传到device的command register block和control register block;

     

#shadow command block 映射到 command register block;

#shadow control block 映射到 control register block;

图片

这里要先提一下Shadow register:

这其实是个和硬件有关的概念。有些register是2层的,第一层是供CPU访问,第二层供HW访问。

图片

  1. 这是同一个Register,不是2个Register,只不过分了2层。形象的讲上层是下层的Shadow。

  2. CPU在写Register的时候,会先写在上层的Shadow Register,硬件update之后才会在下层供HW访问的Register开始执行。

  3. 因为真正生效的执行HW动作的是下面这层,而上面这层只是将CPU(也就是将软件)的信息**到,等下个硬件周期才会执行。

posted @ 2024-11-05 15:59  咸鱼书生  阅读(23)  评论(0编辑  收藏  举报