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时,步骤大致如下:
Host软件先初始化Shadow register;
软件下发cmd, 将payload content的资讯,先写到shadow command block register和shadow control block register里;
应用层将shadow register的内容发送传输层,并产生FIS,,
通过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访问。
这是同一个Register,不是2个Register,只不过分了2层。形象的讲上层是下层的Shadow。
CPU在写Register的时候,会先写在上层的Shadow Register,硬件update之后才会在下层供HW访问的Register开始执行。
因为真正生效的执行HW动作的是下面这层,而上面这层只是将CPU(也就是将软件)的信息**到,等下个硬件周期才会执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术