SATA、AHCI、ATA等相关知识概述(基本概念)

news/2024/12/2 13:07:07/

SATA
SATA(Serial Advanced Technology Attachment,串行高级技术附件)是一种基于行业标准的串行硬件驱动器接口,是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范。现在主流为SATA3.0,速率可达到6.0Gbps.SATA Spec中定义了物理层、链路层、传输层的标准,以及传输协议、关键数据结构FIS等的定义,SATA下面有2中mode可以选择:AHCI和IDE


IDE
IDE的英文全称为“IntegratedDrive Electronics”,即“电子集成驱动器”,它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。又称PATA接口,最大速率为133MB/s,现在已经完全被SATA所取代,但是为了兼容的原因,不管是BIOS还是OS下仍然保留IDE模式,该模式可以将SATA盘映射模拟成普通IDE硬盘,无需额外加载SATA驱动。但不支持任何SATA接口的新特性


AHCI 
AHCI(Serial ATA AdvancedHost Controller Interface),又名串行ATA高级主控接口/高级主机控制器接口。AHCI通过包含一个PCI BAR(基址寄存器),来实现原生SATA功能,允许存储驱动程序启用高级串行 ATA 功能。
AHCI模式是专门为SATA接口而设计,支持SATA接口特性,诸如本机命令队列(NCQ)和热插拔。但是需要用户在BIOS中选择AHCI模式,方便操作系统自动加载AHCI驱动。AHCI 协议主要定义了Host端的寄存器、错误处理、电源管理等


ATA和ATAPI
ATA和ATAPI是广为使用的IDE和EIDE设备的相关标准,与SATA、AHCI有着密切的关系。
ATA是AT Attachment的缩写,意思是AT计算机上的附加设备。ATA可以使用户方便地在PC机上连接硬盘,但有时这样还不够。有些用户需要通过同样方便的手段连接CDROM、磁带机、MO驱动器等设备,所以就有了ATAPI
ATAPI标准就是为了解决在IDE/EIDE接口上连接多种设备而制定的。ATAPI是AT Attachment Packet Interface的缩写,意思是AT计算机上附加设备的包接口。支持ATAPI的IDE/EIDE接口可以像连接硬盘一样连接ATAPI设备。目前几乎所有的IDE/EIDE接口都支持ATAPI。


BIOS中初始化SATA HDD流程:
1  初始化南桥中相关的寄存器,根据BIOS设定选择使用AHCI模式还是IDE模式,现在默认为AHCI模式,以此为例
  AHCI一般在南桥中对应于Device31 Function2 的PCI配置空间,其下有6个port,可以接出来6个SATA插槽, 连接6个SATA HDD设备
2 PCI扫描阶段,为AHCI Controller分配所需的MMIO空间等
3 枚举Slave device:
   (1). 检测port上面是否接有device,通过检测寄存器来确定,如存在Device,其Link状态会有所改变
   (2).存在device则发命令让其Spinup起来
   (3). 获取device的相关信息。device(如HDD)中存在微处理器、Firmware、存储芯片等,当Host发送命令到Device之后,device会执行Protocol规定的动作,完成和Host之间的信息交互。


   信息交互的过程涉及到Protocol、command、FIS等知识点,在此以获取identifydata为例来说明:

   参考ATA-ACS Spec中 IDENTIFY DEVICE - ECh, PIO Data-In;
   Host发送IDENTIFY DEVICE命令给Device,其command值为ECh,采用的是PIO Data-In command Protocol,其过程为
   <1>Host发送H2D register FIS 给Device,该FIS中包含command=ECh
   <2>device 接到H2D之后看到ECh的command,知道其采用的PIO Data-In Protocol,故传送一个D2H的PIO Setup FIS通知Host已经准备好了,可以开始传送Data FIS了
   <3>Host接到D2H的PIO Setup FIS,开始从Device端接收Data FIS
   <4>当Data传完或者在传输的过程中发现有Error发生,则device发送一个D2H register FIS通知Host状态
   
   在上述过程中涉及到的command的定义参考ATA8-ACS Spec、FIS和command protocol的介绍参考SATA Spec;至于发送command命令和等待命令完成则是通过读取寄存器的值来进行,可以参考AHCI Spec
   
   除了上述的PIO data-in protocol,SATA Spec中还定义了其他的一些Protocol:Nodata command Protocol、PIO Data-out command Protocol、DMA Data in\out command protocol等;
   
   PIO和DMA的区别为
   PIO的英文拼写是“Programming Input/Output Model”, PIO模式是一种通过CPU执行I/O端口指令来进行数据的读写的数据交换模式。是最早先的硬盘数据传输模式,数据传输速率低下,CPU占有率也很高,大量传输数据时会因为占用过多的CPU资源而导致系统停顿,无法进行其它的操作。PIO数据传输模式又分为PIO mode 0、PIO mode 1、PIO mode 2、PIO mode 3、PIO mode 4几种模式,数据传输速率从3.3MB/s到16.6MB/s不等。受限于传输速率低下和极高的CPU占有率,这种数据传输模式很快就被淘汰
   
   DMA是一项1997初才开始广泛采用的新的ATA/IDE接口协议,所以又称Ultra ATA。Ultra DMA采用总线主控方式,在硬盘上有DMA直接内存访问控制器。由于在数据传输过程中不需CPU的干预,因而节约了宝贵的CPU资源,使得CPU可以腾出大量的时间处理其它的数据和程序要求。其次,Ultra DMA把IDE命令的时钟脉冲的上升沿和下降沿都用作内存读写选通信号,使得每半个时钟周期就可以传输一次数据,也就使最大外部数据传输率从每秒16.6MB倍增,现在使用的UltraDMA 6最大为133 MB/s
   
   AHCI 每个Port都包含有2个主要的DMA engine,一个用来遍历commandlist,由PxCMD.ST来控制;另一个将接收到的FIS copy到memory,由PxCMD.FRE来控制


http://www.ppmy.cn/news/639024.html

相关文章

AHCI,SATA,NVME

1、AHCI&#xff1a;Advanced Host Controller Interface 高级主机控制器接口 由Intel定义的技术标准&#xff0c;规定SATA HBA&#xff08;Host Bus Adaptor&#xff09;的实现行为。 主机系统内存和attached存储设备之间数据的交换。 http://zidi.cc/archives/315 AHCI…

Oops是什么有什么用

什么是Oops Oops在字面上的意思就是“哎呀&#xff0c;不小心”表示把事情搞砸了&#xff0c;所以当内核发出这个消息的时候就表示内核出了一些问题了。 Oops有何用 内核打印出的Oops信息能够帮助我们很快得追查到错误得源头。 不过需要我们配置内核得时候打开相应的配置&a…

linux 开启ahci_AHCI (简体中文)

翻译状态:本文是 AHCI 的翻译。上次翻译日期:2019-10-26。如果英文版本有所更改,则您可以帮助同步翻译。 AHCI, Advanced Host Controller Interface 的缩写,意思是 高级主机控制器接口, 这是一种SATA设备特有的工作模式.通常AHCI需要通过BIOS来开启或关闭,通过BIOS启用AH…

SATA、AHCI、ATA等相关知识概述

SATA SATA&#xff08;Serial Advanced Technology Attachment&#xff0c;串行高级技术附件&#xff09;是一种基于行业标准的串行硬件驱动器接口&#xff0c;是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范。现在主流为SATA3.0&#xff0c;速率可达到…

Spring Security 6.x 系列【62】扩展篇之用户登录日志

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 概述2. 登录日志表设计3.1 用户代理3.2 IP、地理位置2.3 建表SQL3. 实战…

高性能计算开发软件培训班-选猿代码科技IT培训机构!

学习CPU并行程序性能优化的意义&#xff1a; 学习CPU计算是现代计算机科学中不可或缺的一部分。掌握CPU计算原理和应用&#xff0c;能够提高我们的编程技能和解决问题的能力&#xff0c;帮助我们更好地应对计算机科学领域中的挑战和机遇。此外&#xff0c;CPU计算在计算机体系结…

华为云焕新数字生活,打造情景化智能产业链条

华为云焕新数字生活&#xff0c;打造情景化智能产业链条 华为云协同数字音频转换带来情景化便利&#xff0c;助力用户、企业实现质变飞跃。云上平台推出多款数字情景化工具、产品&#xff0c;以多个维度实施效能合作。华为云服务平台进一步探究数字情景化模式&#xff0c;打造出…

华为云车联网解决方案

【摘要】 华为云车联网解决方案 前言 随着互联网、物联网的快速发展&#xff0c;源于物联网的车联网也渐渐兴起&#xff1b;我国车联网技术从2009年起步至今&#xff0c;从只能实现基本导航、救援&#xff0c;发展到实时通信、车载系统远程监控&#xff0c;依托于人工智能、语…