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来控制

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

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

    SATA SATA(Serial Advanced Technology Attachment,串行高级技术附件)是一种基于行业标准的串行硬件驱动器接口,是由Intel.IBM.Dell.APT.Ma ...

  2. 图神经网络与图注意力网络相关知识概述

    #图神经网络# #图注意力网络# 随着计算机行业和互联网时代的不断发展与进步,图神经网络已经成为人工智能和大数据的重要研究领域.图神经网络是对相邻节点间信息的传播和聚合的重要技术,可以有效地将深度学习 ...

  3. MYSQL的重要知识概述(高级篇)

    1.事务 (1)事务的语法 2.存储引擎 4.MyISAM和InnoDB表引擎的区别 5.MySQL中的utf8和utf8mb4 6.三大范式 整理仓促,文章中有任何问题,敬请提出,感谢支持,让我们共 ...

  4. OpenGl 之学习笔记 glTexCoord2f() 函数以及纹理相关知识总结

    2. glTexCoord2f() 函数 原型:glTexCoord2f(GLfloat s,GLfloat t): s代表x坐标,t代表y坐标: s∈[0.0,1.0],t∈[0.0,1.0]: 一 ...

  5. SQL注入 基础概述及相关知识

    SQL注入 基础概述及相关知识 SQL注入概述 SQL注入攻击简介 SQL注入攻击原理 SQL注入攻击来源 SQL注入攻击主要特点 SQL注入攻击危害 SQL注入攻击 SQL注入攻击基础概述 SQL注 ...

  6. DayDayUp:计算机技术与软件专业技术资格证书之《系统集成项目管理工程师》课程讲解之项目管理概述、项目管理基本基础知识、项目立项管理相关知识

    DayDayUp:计算机技术与软件专业技术资格证书之<系统集成项目管理工程师>课程讲解之项目管理概述.项目管理基本基础知识.项目立项管理相关知识 目录 一.项目管理概述 1.1.项目的定义 ...

  7. 软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型

    文章目录 软件危机 软件的定义 软件危机典型表现 产生软件危机的原因 消除软件危机的方法 软件工程 什么是软件工程 软件工程的本质特征 软件工程的基本原理 软件工程方法学 传统方法学 面向对象方法学 ...

  8. 存储相关知识-DAS/SAN/NAS

    存储相关知识-DAS/SAN/NAS 余二五 2017-11-15 22:16:00 浏览1826 服务器 主机 IP CPU 磁盘 存储 最近在看一些存储相关的东西,就顺手作了一些总结.我发现国内在 ...

  9. SSD固态硬盘的相关知识和选购

    SSD固态硬盘的相关知识和选购 内存与外存 硬盘 固态硬盘的品牌.容量.颗粒 品牌(略) 容量(根据需求决定) 颗粒 固态硬盘的接口类型.总线通道.传输协议 固态硬盘的接口类型(插槽的形状) SATA ...

最新文章

  1. java源码保护技术,sourceguard
  2. 在VS2010中创建自定义的代码段
  3. Nginx的rewrite之if指令(二)
  4. 衡量模块独立性的两个定性标准
  5. 解封装(四):avformat_find_stream_info探测获取封装上下文并打印
  6. 如何不显示地图就获取位置数据?
  7. 都市调频广播 2009年节目广告运行表
  8. 《时代三部曲》感悟四
  9. 电脑如何防蹭网?使用防蹭网功能杜绝未知设备连接WiFi
  10. 解决易语言出现死循环代码错误提示
  11. python floor是什么意思_简单介绍Python中的floor()方法
  12. 区分IE6、IE7、IE8及标准浏览器的最佳方法
  13. 台积电1nm,有新进展
  14. 微信小程序部分面试题汇总
  15. 关于华硕笔记本电脑飞行堡垒系列打开TPM教程
  16. 阿里云CLI管理域名解析
  17. python 处理xml文件
  18. 手把手教你单片机——1602显示
  19. 从提高识别效果到解决部署难题,如何掌握PaddleOCR的应用之道?
  20. 多线程消费一个队列问题

热门文章

  1. SHINE OPENCART 自适应 多用途主题模板 ABC-0021
  2. android studio内容提供者(查看短信的猫)点击查看短信,闪退,无法显示短信内容。(附程序源代码,以及解决办法)
  3. 应用于大数据分析的工作流调度系统
  4. time datetime 总结
  5. java es 如何查询_使用elasticsearch的java-api进行查询
  6. 2023年全国最新工会考试精选真题及答案46
  7. 云计算机怎么分盘,电脑硬盘怎么分区
  8. 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码
  9. (一)JMeter性能测试,完整入门篇:性能测试操作步骤
  10. RabbitMQ的四种交换机模式