PCI IDE/(P)ATA区别

Dav*_*lai 3 hardware driver pci

我读过一些关于PCI和IDE/ATA的文章,现在有点糊涂了。PCI 类 0x01(大容量存储控制器)包含一个 IDE (0x01) 和一个 ATA (0x05) 子类。但是,从https://superuser.com/questions/341452/whats-the-difference-between-ata-pata-and-ide

该标准被命名为 IBM PC/AT 的“AT 附件”(这意味着高级技术,但 ATA 不是高级技术附件)。但 IDE 和 ATA 是同义词。ATA 是一个更好的术语。

那么,如果它们相同,为什么它们有 2 个不同的子类?另外,在这篇文章中提到

两种类型的驱动器(SATA 和 PATA)都是 IDE 设备。

...但是当我在 oracle VM 中配置虚拟机时,有不同的:IDE、SATA 等...控制器。

此外,这篇文章:https : //sg.answers.yahoo.com/question/index?qid=20090723091840AA40xd6 说明 IDE 和 PCI 用于不同的连接,但我认为 ATA“控制器”已连接到 PCI公共汽车,这就是为什么我必须在那里检查它们。

它们是不同的...... PCI用于声卡视频卡等...... IDE用于CD ROMS硬盘驱动器软盘驱动器等......

在 VirtualBox 中,当我连接 IDE、软盘控制器、SCSI 或任何存储设备时,它会出现在 PCI 总线上,就像声卡和网卡一样。

我读的文章越多,我就越困惑。对它们进行一些清晰的描述会很好。

myr*_*ack 5

术语“IDE”、“ATA”和“PATA”可以互换使用。一般都是指传统的40/44pin带状线硬盘接口。请注意,PCI 或 PCI Express IDE/ATA/PATA 控制器可以在以下两种模式之一下运行:

  1. 传统模式 - 从原始 PC 模拟传统 ISA 总线 IDE 控制器。使用 IRQ 14 和 15。IRQ 不能像普通 PCI 设备一样共享/重新映射。仅支持有限数量的 IDE 通道(主要/次要)。自 PC 诞生以来,向后兼容所有操作系统。

  2. 本机模式 - 就像传统的 PCI 设备一样。IRQ 编号不是固定的,可以与其他 PCI 设备共享。支持系统中任意数量的控制器。需要 Windows 2000 或更高版本。

随着 SATA 的引入,我们又多了一层兼容性。SATA 控制器通常可以配置为以下两种模式之一:

  1. IDE 模式 - 像传统的 IDE/ATA/PATA 控制器一样工作。允许与旧操作系统(Windows XP 及更早版本)向后兼容。请注意,在 IDE 模式下,您仍然可以选择 Legacy 与 Native 模式,如上所列。

  2. AHCI 模式 - SATA 控制器的现代编程接口。Windows Vista 及更高版本本机支持。

因此,SATA 控制器可以是:

  • AHCI模式
  • IDE 模式 -> 原生
  • IDE 模式 -> 传统

为了让事情变得混乱,一些 BIOS 将 IDE 模式称为“Legacy”,而将 AHCI 模式称为“Native”。此外,并非上面列出的所有模式都一定适用于您的芯片组/BIOS。较旧的芯片组可能不支持 AHCI。一些较新的芯片组不再支持旧模式。此外,在具有多个 SATA 端口的主板上,可能会限制哪些端口可以处于哪种模式。

清如泥?伟大的!现在,这如何映射到 PCI 类代码?在 PCI 基类 01h(大容量存储)下,PCI 规范中定义了几个子类。有三个与您的问题相关。

  • 子类 01h = IDE 控制器

    • 大多数 IDE/ATA/PATA 控制器将使用这个子类

    • IDE 模式下的 SATA 控制器也是如此

    • Both Legacy and Native Mode IDE controller will use this subclass. You query other bits in the register map to determine which mode you are in.

  • Sub-class 05h = ATA Controller with ADMA

    • This is a special case IDE/ATA controller with special DMA capabilities.

    • I have never seen an Intel or AMD chipset that uses this sub-class.

  • Sub-class 06h = SATA Controller

    • Typically this means a SATA controller in AHCI mode.

    • However, some early SATA controllers had a proprietary interface.

    • The Programming Interface register will tell you what mode it is in.

As for Oracle VM, it probably gives you a choice of which mode the "virtual" HDD is presented to the guest Operating System. I do not have a copy in front of me though. Just glancing at the documentation, it looks like there are choices for IDE (not clear if Native/Legacy/AHCI) or SCSI.