SATA学习笔记 12 ---SATA Command Protocol

本文详细介绍了SATA命令协议,包括Command的传播和交互过程,重点关注数据传输的PIO、DMA、DMA Queued及FPDMA命令。讨论了各种数据传输方式的工作原理,如DMA的单命令执行和DMA Queued的多命令并发,以及它们在现代SATA设备中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Command Protocol

  • SATA有很多种Command,总体可以分为12类。每一类中的所有Command执行时的FIS的交互过程时一致的。
  • 下表的统计不是最新的,具体看ATA8-ACS
    在这里插入图片描述

1.1 Command的传播过程

  • 软件在shadow register中填好对应的Command block(除command field)、Control block;最后在command field中填入要发送的command的编码。
  • HBA会去发送一个H2D给Device
  • Device收到后,解析得到command编码,然后再执行相应的操作

1.2 数据相关Command总结

  • 用于数据传输的主要有4中:PIO、DMA、DMA Queued、FPDMA
  • PIO:传输速率慢,需要CPU参与,现在一般不使用
  • DMA:代表普通的DMA,一次只能执行一个命令,命令执行完到下一个命令传给Device会有一段空窗期。
  • DMA Queued:代表可以outstanding的DMA,最多支持32个(【疑问】命令间不支持乱序返回?)一般的device也不支持这个,而是直接使用FPDMA(NCQ)。
  • FPDMA:用于支持NCQ特性Device的命令。最多支持32个命令outstanding,Device调整收到的命令的优先级,以最快的速度完成command。反回的Data(不同命令的)可能时乱序的(不同TAG间不保序,但是一旦该TAG的命令开始执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值