命令设备串行怎么解决(AHCI规范简介)

雾里看花深 电脑 27

该规范定义了高级主控制器接口的功能行为和软件接口,这是一种允许软件与串行ATA设备通信的硬件机制,AHCI是一种PCI类设备,在系统内存和串行ATA设备之间充当数据移动引擎。

AHCI主机设备(HBA)支持1-32个接口,HBA必须支持ATA和ATAPII设备,必须同时支持PIO和DMA协议。HBA可以选择在每个端口上支持一个命令列表以减少开销,并通过FPDMA队列命令协议支持串行ATA本机命令队列,每个设备最多有32个条目,HBA可以选择支持64Bit寻址。

AHCI描述了一个系统内存结构,该结构包含一个用于控制和状态的通用区域,以及一个描述命令列表的条目标(不支持命令列表的HBA这个表的深度为1),每个命令列表条目都包含变成SATA设备所需的信息,以及一个指向描述符表的指针,用于在系统内存和设备之间传输数据。

AHCI包含一个PCI设备,它包含一个PCI BAR实现原生SATA功能,AHCI规定了以下的功能:

支持最多32个接口Elimination of Master / Slave Handling(没搞懂)热插拔HW Assisted Native Command QueuingCold device presence detectActivity LED generation64bit寻址大型LBA支持电源管理Staggered Spin-upSerial ATA superset registers接口复用 Port Multipler

AHCI不包含与实现串行ATA的传输层,链路层和物理层相关信息。

AHCI不指定ATA Legacy Behavior,例如Legacy IO Range,Bus Master IDE。

框图1

框图1中,一个典型的计算机系统连接了几个AHCI HBA,一个HBA卡集成在核心芯片组中,另一个位于可用的PCI总线上。最后一个HBA位于PCI桥接器的后面第二个PCI总线上,最后一个HBA端口连接到了一个Port Multipler。

框图2

框图2中,两个HBA连接到具有自己本地内存的嵌入式CPU,这种配置,很可能用于RAID类型的环境。

缩写词

RO: Read Only

RW: Read Write

RWC: Read/Write 1 to clear

RW1: Read/Write 1 to set

lmpl.SPEC: 实现特定——HBA可以自由选择实现

Hwlnit: 默认状态取决于设备和系统配置,该值在复位时被初始化,要么通过扩展ROM,要么在集成设备的情况下,由一个平台的BIOS决定

active command slot:活动命令槽

command list:命令列表,定义位于HBA内存中的命令,这是一个列表,可能包含1-32个条目,并可能包含任何类型的ATA或ATAPI命令,清楚Serial ATA设备的BSY位、DRQ位和ERR位后,该命令列表显示为高级

command slot:命令槽,命令槽位是命令列表的一个条目,命令槽包含要执行的命令,命令队列最多支持32个命令插槽。

cs:用于描述具有命令特定含义的字段

D2H:D2H是设备到HBA的缩写,串行ATA规范中类似设备到主机,D2H常用于描述FIS的传输方向

FIS:帧是主机和设备之间传输的信息或信息帧

H2D:Host to Device

HBA:主机总线适配器缩写

Port:HBA上的物理接口

PRD:物理区域描述符

Queue:指令串行ATA设备内的ATA命令队列,这与命令列表的区别在于,当HBA的命令列表中的所有命令都是SATA本机队列命令时,队列只存在于SATA设备中。

Task File:接口寄存器,用于向设备发送命令或从设备发布状态。在sata中这些寄存器作为FIS有效载荷字段的一部分进行通信,SATA规范中称为命令和控制寄存器。

system memory:用于主机处理器和串行ATA设备之间传递数据和命令信息。

AHCI工作原理

AHCI采用了总线主IDE的分散/聚集列表概念的基础,并对其进行了扩展,以减少CPU/软件的开销,并支持串行ATA特性,如热插拔,电源管理的不执行主/从仿真的情况下访问多个设备。

设备和软件之间的通信通过字节级访问从任务文件转移到位于系统内存中的命令FIS,该命令由HBA提取,大大减少了命令的设置时间,允许将更多的设备添加到单个主机控制器,软件不再通过任务文件直接与设备通信。

AHCI定义为了保持HBA相对简单,以便它可以充当数据传输器,实现AHCI的HBA在传输到设备时不需要解析任何ATA或ATAPI命令。

设备和系统内存之间所有的数据传输都是通过HBA作为系统内存的总线主机进行,无论事务是DMA类型还是PIO类型,HBA都会将数据提取并存储到内存中,从而减少CPU的压力

所有传输都使用DMA执行,不建议使用PIO命令类型,PIO对错误的支持有限,例如传输数据之前,PIO传输的结束状态字段在PIO SetUp FIS期间被传递给HBA,但是有些命令只能通过PIO命令执行,例如IDENTIFY DEVICE,一些HBA实现可能将PIO支持限制为每个命令一个DRQ数据块

AHCI定义了一种使用DMA Set up FIS实现SATA命令队列的标准机制,支持队列的HBA在系统内存中的命令列表中为所有命令分配了单独的插槽,并通过寄存器访问和HBA,

标签: 命令 设备 HBA

抱歉,评论功能暂时关闭!