SATA、AHCI、ATA等相关知识概述
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等相关知识概述相关推荐
- SATA、AHCI、ATA等相关知识概述(基本概念)
SATA SATA(Serial Advanced Technology Attachment,串行高级技术附件)是一种基于行业标准的串行硬件驱动器接口,是由Intel.IBM.Dell.APT.Ma ...
- 图神经网络与图注意力网络相关知识概述
#图神经网络# #图注意力网络# 随着计算机行业和互联网时代的不断发展与进步,图神经网络已经成为人工智能和大数据的重要研究领域.图神经网络是对相邻节点间信息的传播和聚合的重要技术,可以有效地将深度学习 ...
- MYSQL的重要知识概述(高级篇)
1.事务 (1)事务的语法 2.存储引擎 4.MyISAM和InnoDB表引擎的区别 5.MySQL中的utf8和utf8mb4 6.三大范式 整理仓促,文章中有任何问题,敬请提出,感谢支持,让我们共 ...
- OpenGl 之学习笔记 glTexCoord2f() 函数以及纹理相关知识总结
2. glTexCoord2f() 函数 原型:glTexCoord2f(GLfloat s,GLfloat t): s代表x坐标,t代表y坐标: s∈[0.0,1.0],t∈[0.0,1.0]: 一 ...
- SQL注入 基础概述及相关知识
SQL注入 基础概述及相关知识 SQL注入概述 SQL注入攻击简介 SQL注入攻击原理 SQL注入攻击来源 SQL注入攻击主要特点 SQL注入攻击危害 SQL注入攻击 SQL注入攻击基础概述 SQL注 ...
- DayDayUp:计算机技术与软件专业技术资格证书之《系统集成项目管理工程师》课程讲解之项目管理概述、项目管理基本基础知识、项目立项管理相关知识
DayDayUp:计算机技术与软件专业技术资格证书之<系统集成项目管理工程师>课程讲解之项目管理概述.项目管理基本基础知识.项目立项管理相关知识 目录 一.项目管理概述 1.1.项目的定义 ...
- 软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
文章目录 软件危机 软件的定义 软件危机典型表现 产生软件危机的原因 消除软件危机的方法 软件工程 什么是软件工程 软件工程的本质特征 软件工程的基本原理 软件工程方法学 传统方法学 面向对象方法学 ...
- 存储相关知识-DAS/SAN/NAS
存储相关知识-DAS/SAN/NAS 余二五 2017-11-15 22:16:00 浏览1826 服务器 主机 IP CPU 磁盘 存储 最近在看一些存储相关的东西,就顺手作了一些总结.我发现国内在 ...
- SSD固态硬盘的相关知识和选购
SSD固态硬盘的相关知识和选购 内存与外存 硬盘 固态硬盘的品牌.容量.颗粒 品牌(略) 容量(根据需求决定) 颗粒 固态硬盘的接口类型.总线通道.传输协议 固态硬盘的接口类型(插槽的形状) SATA ...
最新文章
- java源码保护技术,sourceguard
- 在VS2010中创建自定义的代码段
- Nginx的rewrite之if指令(二)
- 衡量模块独立性的两个定性标准
- 解封装(四):avformat_find_stream_info探测获取封装上下文并打印
- 如何不显示地图就获取位置数据?
- 都市调频广播 2009年节目广告运行表
- 《时代三部曲》感悟四
- 电脑如何防蹭网?使用防蹭网功能杜绝未知设备连接WiFi
- 解决易语言出现死循环代码错误提示
- python floor是什么意思_简单介绍Python中的floor()方法
- 区分IE6、IE7、IE8及标准浏览器的最佳方法
- 台积电1nm,有新进展
- 微信小程序部分面试题汇总
- 关于华硕笔记本电脑飞行堡垒系列打开TPM教程
- 阿里云CLI管理域名解析
- python 处理xml文件
- 手把手教你单片机——1602显示
- 从提高识别效果到解决部署难题,如何掌握PaddleOCR的应用之道?
- 多线程消费一个队列问题
热门文章
- SHINE OPENCART 自适应 多用途主题模板 ABC-0021
- android studio内容提供者(查看短信的猫)点击查看短信,闪退,无法显示短信内容。(附程序源代码,以及解决办法)
- 应用于大数据分析的工作流调度系统
- time datetime 总结
- java es 如何查询_使用elasticsearch的java-api进行查询
- 2023年全国最新工会考试精选真题及答案46
- 云计算机怎么分盘,电脑硬盘怎么分区
- 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码
- (一)JMeter性能测试,完整入门篇:性能测试操作步骤
- RabbitMQ的四种交换机模式