1

想象一个带有一个 SATA 控制器的系统。如果控制器在 IDE 模式下运行,它将显示在设备管理器中,如下所示:

视窗XP:

IDE controller's name
Primary IDE Channel
Secondary IDE Channel

Windows >= Vista:

IDE controller's name
ATA Channel 0
ATA Channel 1

如果控制器在 AHCI 模式下运行,它将在 XP 和 >= Vista 上显示为“SATA AHCI 控制器”。

AHCI 模式下的 SATA 控制器最多支持 32 个设备(32 位掩码表示设备连接)。我认为这只是软件限制,鉴于每个设备都需要单独的通道,因此不太可能存在这样的系统,其中 SATA 控制器与所有 32 个通道“连接”。但我认为 32 是一个数字,意味着控制器可以处理两个以上的设备,因此具有两个以上的通道。所以,我想问一下SATA控制器在实践中通常有多少通道。ATA控制器有两个通道,那么是不是说SATA控制器在IDE模式下为了软件兼容性有相同的通道数呢?或者它有两个以上的通道,但在 IDE 模式下只有前两个通道可用?(至少在 XP 上,因为“主要”渠道和“次要”渠道

4

1 回答 1

2

稍晚一点,但可能对其他人有用。

让我们添加一些说明。有带有AHCI接口(Advanced Host Controller Interface)的SATA Host Controller。并且有SATA驱动器(或任何其他具有AHCI接口的设备)。

SATA 主机控制器 (HC) 有许多端口。理论上最多可以有 32 个 SATA 端口,但不少于 1 个(没有任何端口 HC 本身没有任何意义)。实际端口的数量取决于实现。PC 中使用的一般 HC 芯片更可能有 1 或 2 个端口。SATA 驱动器连接到端口。因此,如果 SATA HC 有 2 个端口,则最多可以连接 2 个 SATA 驱动器/设备。

在现实生活中,一切都更加有趣。正如@Ross Ridge 在评论中提到的,可以使用端口倍增器。端口倍增器是增加可以连接的设备数量。同样,端口倍增器是连接到 SATA HC端口(而不是主机控制器本身)的设备。一个乘数到一个端口。第二个乘法器可以连接到其他端口等。乘法器的支持是实现定义的。有些 HC 可以与他们合作,有些则不能。乘法器有 16 个端口。端口'0xF'是乘法器的特殊控制端口。因此最多可以连接 15 个设备。

所以以上都是关于SATA规范的。考虑列出的问题本身:

  • 操作系统驱动程序可以以自己的方式枚举和命名驱动器。就像你提到的Secondary IDE ChannelATA Channel 1. 名字更有可能是带有并行接口的驱动器的遗留物。事实上,“通道”这个词甚至不在 SATA AHCI 规范中。有端口:)

  • 一些 fu... 驱动程序可能暗示“软件限制”,例如不支持乘法器或仅使用一个端口。定期更新驱动程序。

  • thus providing Windows with a way to change such options like enable/disable DMA mode. Windows DMA 模式与 SATA 驱动器无关。SATA 主机控制器使用特殊缓冲区来分配从驱动器接收到的数据。DMA mode在这种情况下,更像是操作系统如何访问这些缓冲区,而不是 HC 如何与连接的驱动器通信。

  • Also can you tell me what is the maximum number of ATA Channels that SATA controller can have?. 有端口。端口的数量是实现定义的。如果您知道主板读取CAP寄存器上 SATA Host Controller 的地址,则低 4 位是Number of Ports - 1. PS:您将需要一个驱动程序来直接访问物理内存,所以......

于 2017-04-24T00:12:20.673 回答