想象一个带有一个SATA控制器的系统。如果控制器在IDE模式下运行,它将显示在设备管理器中,如下所示:
Windows 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上,因为“主要”频道和“次要”频道大大降低了“第三”频道的可能性,而不是“0”频道,“1”频道,“2”频道等等)
答案 0 :(得分:1)
稍后但可能对其他人有用。
让我们补充一些说明。有SATA主机控制器和AHCI接口(高级主机控制器接口)。并且有SATA驱动器(或任何其他具有AHCI接口的设备)。
SATA主机控制器(HC)有许多端口。从理论上讲,最多可以有32个SATA端口,但不能少于1个(没有任何端口,HC本身没有任何意义)。实际端口的数量取决于实现。 PC中使用的通用HC芯片更可能具有1个或2个端口。 SATA驱动器连接到端口。因此,如果SATA HC有2个端口,则最多可以连接2个SATA驱动器/设备。
在现实生活中,一切都更有趣。正如@Ross Ridge在评论中提到的,可以使用端口倍增器。 Port Multiplier用于增加可连接的设备数量。端口倍增器再次连接到SATA HC 端口(不是主机控制器本身)。一个乘法器到一个端口。第二个乘法器可以连接到其他端口等。乘法器的支持是实现定义的。一些HC可以与他们合作,有些可能不会。乘法器有16个端口。端口' 0xF'是乘法器的特殊控制端口。因此最多可以连接15个设备。
所以以上都是关于SATA规范的。考虑列出的问题本身:
操作系统驱动程序可以按照自己的方式枚举和命名驱动器。就像你提到Secondary IDE Channel
或ATA 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?
。有端口。端口数是实现定义的。如果您知道主板上的SATA主控制器地址为CAP
寄存器,则4个低位为Number of Ports - 1
。 PS:你需要一个驱动程序来直接访问物理内存,所以......