Сколько физических каналов у контроллера SATA?

Представьте себе систему с одним контроллером 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, он будет отображаться как «Контроллер SATA AHCI» как в XP, так и >= Vista.

Контроллер SATA в режиме AHCI поддерживает до 32 устройств (32-битная маска указывает на подключение устройства). Я думаю, что это просто ограничение программного обеспечения, учитывая, что для каждого устройства требуется отдельный канал, маловероятно, что существует такая система, где контроллер SATA «зашит» всеми 32 каналами. Но я думаю, что 32 — это число, означающее, что контроллер может работать с более чем двумя устройствами и, следовательно, имеет более двух каналов. Итак, я хочу спросить, сколько каналов SATA-контроллер часто имеет на практике. Контроллер ATA имеет два канала, значит ли это, что контроллер SATA имеет такое же количество каналов для совместимости программного обеспечения в режиме IDE? А может у него больше двух каналов, но в режиме IDE будут доступны только первые два канала? (по крайней мере, на XP, потому что «первичный» канал и «вторичный» канал значительно уменьшают вероятность «третьего» канала, чего нельзя сказать о канале «0», «1», «2» и т. д.)


person igntec    schedule 31.01.2015    source источник
comment
Вы не упомянули ни одной причины, связанной с программированием, почему вам нужно это знать.   -  person Ross Ridge    schedule 31.01.2015
comment
Я хочу выяснить, какие порты использует конкретный жесткий диск, и попытаться выполнить некоторую команду ATA (без каких-либо ioctl). Мы можем получить информацию о ресурсах, перечислив дисковые контроллеры. И чтобы правильно написать какой-то код, мне нужно знать, ограничен ли контроллер двумя каналами, такими как ATA Channel 0 и ATA Channel 1, или он может иметь больше каналов при работе в режиме IDE.   -  person igntec    schedule 31.01.2015
comment
Я не понимаю, как в этом случае должно иметь значение фактическое количество физических портов SATA. Как вы выдаете команды ATA без ioctl? В любом случае, вы, похоже, предполагаете, что можно подключить только 0 или 1 диск, но на самом деле множители портов SATA можно использовать для подключения до 15 дисков к физическому порту. Также вы, кажется, предполагаете стандартизированную иерархию устройств в Windows для драйверов контроллера SATA, но, похоже, это не так. Мой контроллер Marvel AHCI имеет дочерние узлы ATA Channel 0, но мой контроллер Intel AHCI имеет диски как непосредственные дочерние узлы.   -  person Ross Ridge    schedule 01.02.2015
comment
Спасибо за информацию об иерархии контроллеров Marvel AHCI, поэтому их контроллер сообщает о двух каналах ATA помимо самого себя, тем самым предоставляя Windows возможность изменять такие параметры, как включение/отключение режима DMA. Поэтому, когда вы устанавливаете флажок DMA, Windows сообщает об этом драйверу Marvel, и драйвер сообщает контроллеру, какой режим он должен использовать для определенного устройства, хотя драйвер работает с контроллером через интерфейс, определенный AHCI (что подразумевает только режим DMA), так что это очевидно, здесь происходят какие-то нестандартные вещи, зависящие от производителя.   -  person igntec    schedule 01.02.2015
comment
Также можете ли вы сказать мне, какое максимальное количество каналов ATA может иметь контроллер SATA? И что меня особенно интересует, так это тот же ли набор регистров для множителей портов SATA, что и для жестких дисков SATA и компакт-дисков.   -  person igntec    schedule 01.02.2015
comment
Опять вы делаете ложные предположения. Реализация драйвера контроллера Marvel AHCI работает не так, как вы описываете. Контроллер AHCI аппаратно не поддерживает фактические каналы ATA. Вы можете загрузить спецификацию AHCI от Intel, чтобы узнать, как реализованы контроллеры AHCI. Вам необходимо обновить свой вопрос, указав фактическую причину, по которой вы хотите это сделать, иначе он будет закрыт за то, что он не по теме.   -  person Ross Ridge    schedule 01.02.2015


Ответы (1)


Чуть позже, но, возможно, будет полезно для других.

Добавим некоторые уточнения. Имеется хост-контроллер SATA с интерфейсом AHCI (расширенный интерфейс хост-контроллера). И есть диск SATA (или любое другое устройство с интерфейсом AHCI).

Хост-контроллер SATA (HC) имеет несколько портов. Теоретически портов SATA может быть до 32, но не меньше 1 (ну без какого-либо порта HC сам по себе не имеет смысла). Количество фактических портов зависит от реализации. Общие микросхемы HC, используемые в ПК, чаще всего имеют 1 или 2 порта. Диски SATA подключены к портам. Таким образом, если SATA HC имеет 2 порта, можно подключить до 2 дисков/устройств SATA.

В жизни все еще интереснее. Как упоминал в комментариях @Ross Ridge, можно использовать множители портов. Множитель портов предназначен для увеличения количества устройств, которые можно подключить. Опять же, множитель порта — это устройство, подключенное к порту 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: вам понадобится драйвер для прямого доступа к физической памяти, так что...

person user3124812    schedule 24.04.2017