Sata interrupt selection msix что это

Обновлено: 06.07.2024

Операционной системе Linux часто ставят в упрек отсутствие установочных пакетов, из-за чего, мол, начинающие пользователи, особенно те, которые перешли на Linux с Windows, испытывают неудобства. Это не совсем верно, устанавливать программы в Linux можно из файлов DEB и RPM , просто этот способ инсталляции ПО не пользуется популярностью. Пользователям Windows с такими проблемами сталкиваться не приходится.

Подавляющее большинство программ для этой ОС распространяется в виде EXE -файлов, гораздо реже встречаются установщики в формате MSI .

Не так давно в запасе у Microsoft появился еще один формат установщика — APPX (AppxBundle) , предназначенный для инсталляции универсальных приложений. Сталкиваться с ним непосредственно обычно не приходится, так как устанавливаются UWP -программы из Магазина Windows. В скором будущем список «установочных» форматов пополнится еще одним — MSIX, который по замыслу разработчиков должен объединить положительные стороны EXE , MSI и APPX .

MSIX

Если планы Microsoft осуществятся, со временем MSIX может потеснить привычный EXE . Для этого у MSIX есть все преимущества — установочный пакет этого формата способен содержать в себе как классические десктопные, так и универсальные приложения.

Среди преимуществ нового формата отмечают безопасное развертывание, поддержку обновления, в том числе дифференциального, чистое удаление и повышенную безопасность. Плюс ко всему формат претендует на кроссплатформенность — поддержку API предполагается реализовать в MacOS , Linux и Android .

Стоит также отметить прозрачность нового формата.

Являясь по сути переименованным ZIP -архивом, установочный файл MSIX может быть открыт любым архиватором с поддержкой ZIP . Таким образом вы можете просмотреть содержимое инсталлятора и при необходимости извлечь данные. Что касается сторонних разработчиков, формат MSIX должен их порадовать улучшенной интеграцией с Intune и System Center ConfigMgr, а также поддержкой ПО Win32, которое нельзя преобразовать с помощью Desktop App Converter.

В настоящее время в Магазине Windows опубликован специальный инструмент MSIX Packaging Tool, позволяющее переупаковывать приложения win32 в формат MSIX , воспользоваться которым могут все разработчики, имеющие действительный аккаунт MSA .

В этом руководстве описаны основы Message Signaled Interrupts (MSIs), преимущества использования MSI, по сравнению с традиционным механизмом прерываний, как изменить Ваш драйвер, что бы он использовал MSI или MSI-X и некоторые методы диагностики, для определения причины, почему устройство не поддерживает MSI.

2. Что такое MSI ?

Message Signaled Interrupt - это запись из устройства в специальный адрес памяти, которая приводит к тому, что ЦП получает сигнал прерывания.

Возможности MSI впервые были определены в стандарте PCI 2.2 и, позднее, были доработаны в PCI 3.0 для того, что бы можно было индивидуально маскировать каждое MSI прерывание. Возможности MSI-X так же были добавлены в версии 3.0. Каждое устройство теперь может иметь большее число прерываний по сравнению с PCI и позволяет независимо настраивать каждое прерывание.

Устройство может поддерживать как MSI, так и MSI-X, но в любой момент времени может быть доступен только один из этих режимов.

3. Почему используют MSI ?

Использование MSI может дать три преимущества, по сравнению с использованием традиционной технологии линий прерывания.

Линии прерывания зачастую разделяются между несколькими устройствами. Для того, что бы обеспечить обработку разделяемых прерываний, ядро вынуждено вызывать поочерёдно все обработчики прерываний, связанный с этим прерыванием, что приводит к снижению производительности системы в целом. MSI никогда не разделяются, так что эта проблема не возникает.

Когда устройство завершает запись данных в память, возникшее прерывание может достигнуть процессора раньше, чем все данные реально достигнут памяти (если устройство расположено за PCI мостом, то вероятность этого возрастает). Для того, что бы удостоверится. что все данные реально записаны в память, обработчик прерываний должен прочитать любой регистр на устройстве, которое послало прерывание. Правила выполнения транзакций на PCI требуют, что бы все данные достигли памяти до того, как можно читать регистры. Использование MSI позволяет избежать этой проблемы, так как запись в память, генерирующая прерывание, не может обогнать запись данных, поэтому, когда возникло прерывание, драйвер точно знает, что запись данных уже завершена.

PCI устройства могут поддерживать только одно классическое прерывание на функцию. Зачастую, драйвер вынужден опрашивать устройства, что бы определить, какое именно событие произошло, что в общем случае, замедляет обработку прерываний. Использование MSI дает возможность устройствам поддерживать большее количество прерываний, что позволяет каждому прерыванию придать своё назначение. Возможно так спроектировать драйвер, что нечастые прерывания (например - ошибки) будут обрабатываться своим собственным обработчиком, что позволит более эффективно реализовать путь обработки нормальных прерываний. Можно спроектировать драйвер так, что на каждую отдельную очередь пакетов сетевой карточки будет обслуживать собственный обработчик прерываний, или собственное прерывание будет у каждого порта устройства хранения данных.

4. Как использовать MSI ?

Во время аппаратной инициализации, PCI устройства настраиваются на использование классических прерываний. Переключить устройство на использование MSI или MSI-X должен драйвер устройства. Не все архитектуры поддерживают MSI и на таких машинах, вызов API функций, описанных ниже, завершится ошибкой и устройство продолжит работать в классическом режиме линий прерывания.

4.1 Включаем поддержку ядра для MSI

Для того, что бы ядро Linux поддерживало MSI, необходимо собрать его с включённой опцией CONFIG_PCI_MSI. Эта опция доступна не на всех архитектурах и она может зависеть от некоторых других опций, которые тоже должны быть установлены. Например, для х86 необходимо включить опцию X86_UP_APIC или SMP для того, что бы сделать доступной опцию CONFIG_PCI_MSI.

4.2 Используем MSI

Самая тяжёлая часть работы для драйвера делается PCI-уровнем ядра. Он должен просто запросить PCI-уровень ядра установить поддержку возможностей MSI для данного устройства.

4.2.1 pci_enable_msi

Успешный вызов этой функции выделит ОДНО прерывание устройству, независимо от того, как много MSI способно обслуживать устройство. Устройство при этом будет переключено в режим MSI. Поле dev->irq, хранящее номер прерывания, будет изменено на новый номер, который будет предоставлен MSI. Эта функция должна быт вызвана до того, как драйвер вызовет request_irq() так как включение MSI запрещает линии IRQ и драйвер не получит прерываний от старых прерываний.

4.2.2 pci_enable_msi_block

Этот вариант вызова, описанного выше, позволяет драйверу устройства запросить множество MSI. Спецификация MSI позволяет выделять прерывания в количестве, равном степени двойки, до 2^5 = 32.

Если эта функция вернула 0, то это означает успешное выделение, как минимум, столько прерываний, сколько запросил драйвер. На самом деле, их может быть выделено больше, для того, что бы удовлетворить требованию "степень двойки". В этом случае, функция разрешает MSI на этом устройстве и устанавливает поле dev->irq в первый номер прерывания, выделенный устройству. Все остальные прерывания, назначенные устройству, лежат в диапазоне от dev->irq до dev->irq + count - 1.

Если эта функция вернула отрицательное число, то это указывает на ошибку и драйвер не должен пытаться запрашивать дополнительные MSI прерывания для данного устройства. Если функция вернула положительное значение, то это значение будет меньше, чем count и оно указывает реальное количество прерываний, которые были выделены устройству. В любом случае, значение irq не изменится, а само устройство не будет переключено в режим MSI.

Драйвер устройства должен решить, что делать, в случае, если pci_enable_msi_block() вернула значение, меньшее, чем запрошенный count. Некоторые устройства могут использовать меньше прерываний, чем тот максимум, который они запросили; в этом случае драйвер должен вновь вызвать pci_enable_msi_block(). Следует отметить, что успех не гарантируется, даже если значение count уменьшено до значения. которое вернул предыдущий вызов pci_enable_msi_block(). Это возможно потому, что существует множество ограничений на количество векторов прерываний, которое может выделить система; pci_enable_msi_block() будет возвращать такое значение до тех пор, пока некоторые ограничения не позволяют успешно завершить вызов.

4.2.3 pci_disable_msi

Эта функция используется для отмены действия pci_enable_msi() или pci_enable_msi_block(). Её вызов восстанавливает значение dev->irq записывая туда номер IRQ и освобождает ранее выделенные MSI. В дальнейшем эти прерывания могут быть назначены другому устройству, поэтому драйвер не должен запоминать это эти значения.

Драйвер устройства обязательно должен вызывать free_irq() для тех прерываний, для которых он вызывал request_irq() ДО вызова этой функции. При неудаче устройство останется в режиме MSI и его вектора будут потеряны. Будет выполнен отладочный вызов BUG_ON().

4.3 Использование MSI-X

MCI-X предоставляет намного более гибкие возможности, чем MSI. Она поддерживает до 2048 прерываний, каждое из которых может управляться независимо от других. Для поддержания такой гибкости, драйвер должен использовать массив структур struct msix_entry :

Это позволяет драйверу использовать разряженные номера прерываний. Например, он может использовать номера 3 и 1027 и выделить место всего под двухэлементный массив. Предполагается, что драйвер заполнит поля entry каждого элемента массива, значениями указывающими, какие номера прерываний он желает что бы ядро выделило для устройства. Ошибкой будет указание двух одинаковых значений поля entry в разных элементах массива.

4.3.1 pci_enable_msix

Вызов этой функции запрашивает у PCI-подсистемы ядра выделить nvec MSI прерываний. Аргумент entries указывает на массив структур типа msix_entry который должен имет размер не менее nvec. При успешном завершении функция вернет 0 и устройство будет переключено в режим MSI-X прерываний. В каждом элементе массива структур, поле vector получит соответствующий номер прерывания. После этого драйвер должен вызвать request_irq() для каждого значения vector, которое он собирается использовать.

Если эта функция вернула отрицательное значение, то это указывает на ошибку и драйвер не должен больше пытаться выделять MSI-X прерывания для данного устройства. Если он вернул положительное число, то оно указывает на максимальный номер вектора прерывания, который был выделен системой. См. пример ниже.

В противоположность pci_enable_msi() эта функция НЕ настраивает dev->irq. Устройство перестанет генерировать прерывания по этому номеру прерывания, при включении режима MSI-X. Драйвер устройства отвечает за отслеживание прерываний, назначенных MSI-X векторам для того, что бы он мог, в последствии, освободить их позднее.

Во время фазы инициализации, драйвер устройства должен вызвать эту функцию однократно для каждого устройства.

Идеально будет, если драйвер способен работать с разными номерами MSI-X прерываний, так есть много причин, по которым разные платформы окажутся не в состоянии выделить именно те номера, которые запросил драйвер.

Цикл запроса прерываний, решающий эту задачу, может выглядеть следующим образом:

4.3.2 pci_disable_msix

Эта функция API должна использоваться для отмены результатов действия pci_enable_msix(). Она осовбождает ранее выделенные MSI прерывания. В последствии, эти прерывания могут быть назначены другому устройству, поэтому драйвер не должен хранить и использовать значения поля vector после вызова pci_disable_msix().

Драйвер устройства обязательно должен вызывать free_irq() для всех прерываний, для которых он делал вызов request_irq(), перед вызовом этой функции. Иначе возникнет ошибка, результатом которой будет отладочная печать в BUG_ON(), устройство выйдет из режима MSI и вектор будет потерян.

4.3.3 Таблица MSI-X

В элементе MSI-X capability указывается BAR и смещение для указания на таблицу MSI-X. Этот адрес устанавливается PCI подсистемой ядра и не должен использоваться напрямую драйвером устройства. Если драйвер намеревается маскировать / размаскировать некотрое прерывание, то он должен делать это вызывая disable_irq() / enable_irq().

4.4 Управление устройствами, в которых реализовано как MSI так и MSI-X

Если устройство реализует оба механизма - как MSI так и MSI-X, то на нем может быть запущен любой из этих режимов, но не оба вместе. Это требование спецификации PCI, которое обусловлено PCI уровнем ядра. Вызов pci_enable_msi() когда уже активен PCI-X или вызов pci_enable_msix() в то время, когда уже активен MSI, будет иметь результатом ошибку. Если драйвер устройства желает переключиться между режимами MSI / MCI-X он должен, прежде всего, остановить устройство, затем переключиться в традиционный режим линий IRQ, выполнить вызов pci_enable_msi() / pci_enable_msix() и только после этого продолжить работу. Не предполагается, что это - распространённая операция, но она может быть полезна для целей отладки и тестирования во время разработки.

4.5 Когда стоит использовать MSI ?

4.5.1 Выбор между MSI-X и MSI

Если Ваше устройство поддерживает и MSI и MSI-X, предпочтительно, что бы Вы использовали возможности MSI-X. Как упоминалось выше, MSI-X поддерживает любое количество номеров прерываний от 1 до 2048. В то время, как MSI ограничен 32 прерываниями. Кроме того, так как вектора прерываний MSI должны быть расположены последовательно, система, возможно, окажется не в состоянии выделить так много векторов MSI, как для MSI-X. На некоторых платформах, все MSI прерывания передаются на один набор процессоров, тогда как все прерывания MSI-X могут быть нацелены на различные ЦП.

4.5.2 Spinlocks

Большинство драйверов устройств имеют спинлоки, связанные с каждым устройством, которые захватываются обработчиком прерываний. При работе с линиями прерывания или единственным прерыванием MSI, нет необходимости запрещать прерывания (ядро Linux гарантирует, что одно и тоже прерывание не будет повторно входимым). Если же устройство работает с множеством прерываний, то драйвер должен запретить прерывания пока сохраняется блокировка. Если устройство пошлет другое прерывание, драйвер войдет в клинч, пытаясь рекурсивно получить спинлок.

Есть два решения. Первое заключается в использовании вызовов функций API spin_lock_irqsave() или spin_lock_irq() (Смотри Documentation/DocBook/kernel-locking). Второе заключается в использовании флага IRQF_DISABLED при вызове request_irq(), так что ядро будет запускать обработчик прерываний при запрещённых прерываниях.

Если Ваш обработчик MSI прерываний не захватывает блокировку на все время, пока он работает, первое решение является более предпочтительным. Второе решение обычно предпочитается тогда, когда нужно избежать двух переходов из состояния запрета прерывания в состояние разрешения и обратно.

4.6 Как узнать, поддерживает ли устройство MSI/MSI-X ?

Использование 'lspci -v' (как root) может показать на некоторых устройствах возможности "MSI", "Message Signalled Interrupts" или "MSI-X". Each of these capabilities has an 'Enable' flag which will be followed with either "+" (enabled) or "-" (disabled). Каждая из этих возможностей имеет флаг 'Enable', который следует за ней и выглядит как "+" (включено) or "-" (выключено).

5.Проблемы MSI

Некоторые чипсеты PCI или устройства, как известно, не поддерживают MSI. Стек PCI предоставляет три метода для запрета MSI :

  1. Глобально
  2. На всех устройствах за конкретным мостом
  3. На единственном устройстве

5.1. Глобальный запрет MSI

Некоторые чипсеты не поддерживают совсем или поддерживают MSI неправильно. Если Вам повезет, то производитель, знающий об этом, отметит это в таблице ACPI FADT. В этом случае, ядро Linux автоматически запретит MSI. Некоторые платы не включают эту информацию в таблицу и тогда мы должны определять это самостоятельно. Наиболее полный список таких плат можно найти рядом с функцией quirk_disable_all_msi() в файле drivers/pci/quirks.c.

5.2. Запрет MSI ниже моста

Некоторые мосты не способны правильно направлять MSI между ветвями. В этом случае необходимо запретить MSI для всех устройств за этим мостом.

Некоторые мосты позволяют Вам включать MSI путём изменения некоторых бит в их конфигурационном пространстве PCI (Особенно - чипсеты Hypertransport такие, как nVidia nForce и Serverworks HT2000). Ядро Linux, главным образом, знает об этих проблемах и автоматически разрешает MSI, если это возможно. Если у Вас мост, о котором ядро Linux ничего не знает, Вы можете включить MSI в конфигурационном пространстве, используя любой метод, про который Вы знаете, что он работает, а затем включить MSI на мосте, следующим образом :

где $bridge - PCI адрес моста, который Вы включаете (eg 0000:00:0e.0).

Для запрета MSI выдайте команду echo 0 вместо 1. Выполнять такие действия необходимо с осторожностью, так как они могут нарушить обработку прерываний у всех устройств, расположенных ниже моста.

5.3. Запрет MSI на одном устройстве

Известно, что на некоторых устройствах MSI реализован с ошибками. Обычно, такие устройства управляются индивидуальными драйверами, но иногда необходимо управлять ими с помощью различных уловок. Некоторые драйверы имеют опцию для запрета MSI. Хотя это является простейшим выходом для разработчика драйвера, нельзя признать это хорошей идеей и не следует подражать такому решению.

5.4. Определение причины запрета MSI на устройстве

Из трёх предыдущих разделов Вы могли увидеть, что есть множество причин, по которым MSI отключен на данном устройстве. Вашим первым шагом должна быть внимательная проверка файла dmesg для выяснения того, включены ли MSI на Вашей машине. Кроме того, Вам необходимо проверить файл .config и убедится, что опция CONFIG_PCI_MSI включена.

После этого, выполнив команду 'lspci -t' Вы получите список мостов, расположенных выше Вашего устройства. Просмотр содержимого файла /sys/bus/pci/devices/*/msi_bus скажет Вам, включен ли (1) или выключен (0) MSI. Если Вы обнаружите 0 в файле msi_bus относящемуся к мосту корнем PCI и устройством, то MSI будет запрещен для всей ветви.

Полезно так же проверить сам драйвер, что бы выяснить, поддерживает ли он MSI. Такой драйвер должен содержать вызовы функций pci_enable_msi(), pci_enable_msix() or pci_enable_msi_block().

MSIX — это формат пакетов приложений Windows для упаковки всех приложений для Windows усовершенствованным способом. Формат пакета MSIX позволяет сохранить функциональные возможности существующих пакетов приложений и (или) установочных файлов наряду с новыми, современными функциями упаковки и развертывания приложений Win32, WPF и Windows Forms.

MSIX позволяет предприятиям всегда быть в курсе последних событий и гарантировать, что их приложения всегда актуальны. Это дает возможность IT-персоналу и разработчикам предоставлять ориентированное на пользователя решение и одновременно снижать стоимость владения приложением за счет сокращения необходимости его переупаковки.

Основные особенности

  • "Надежность". По сравнению с миллионами установок с гарантированным удалением MSIX обеспечивает надежную установку с показателями успешного выполнения на уровне 99,96 %.
  • Оптимизация пропускной способности сети. MSIX уменьшает влияние на пропускную способность сети, загружая блок 64 КБ. Это делается с помощью файла AppxBlockMap.xml, который содержится в пакете приложения MSIX (дополнительные сведения см. ниже). MSIX предназначен для современных систем и облака.
  • Оптимизация дискового пространства. В MSIX не нужно дублировать файлы между приложениями, а Windows управляет общими файлами между приложениями. Приложения по-прежнему независимы друг от друга, поэтому обновления не повлияют на другие приложения, предоставляющие общий доступ к файлу. Чистое удаление гарантировано, даже если платформа управляет общими файлами между приложениями.

Ключевые моменты

  • Упаковка существующих приложений для Windows. С помощью средства упаковки MSIX можно создать пакет MSIX для любого приложения Windows старой или новой версии. Средство упаковки MSIX упрощает процесс упаковки, предоставляя интерактивный пользовательский интерфейс или командную строку для преобразования и упаковки приложений Windows.
  • Установка пакетов приложений MSIX. Устанавливайте и обновляйте любые пакеты приложений MSIX, размещенные как локально, так и в сетях распространения содержимого, с помощью Установщика приложений.
  • Применение исправлений среды выполнения к упакованным приложениям.Платформа поддержки пакетов — это набор средств с открытым кодом, который помогает применять исправления к существующему классическому приложению, когда у вас нет доступа к исходному коду для работы в контейнере MSIX.
  • Использование MSIX на разных платформах. Благодаря пакету SDK MSIX с открытым кодом пакеты MSIX более универсальны и не зависят от платформы. Пакет SDK предоставляет все API-интерфейсы, необходимые для проверки, подтверждения и распаковки пакета приложения на любой платформе, включая Windows 10 и ОС, отличные от Windows 10.

Вводное видео к MSIX и ресурсам

В этом видео представлены основные способы, благодаря которым упаковка файлов в формате MSIX поможет вам упростить и оптимизировать установку и развертывание приложений.

Посетите страницу технического сообщества MSIX, чтобы просматривать обсуждения и следить за новостями о MSIX. Дополнительные ресурсы по изучению MSIX см. в этой статье.

Внутри пакета MSIX

Диаграмма пакетов MSIX

Полезные данные приложения

Файлы полезных данных приложения — это файлы кодов приложений и активов, которые создаются при построении приложения.

AppxBlockMap.xml

Файл сопоставления блоков пакета — это XML-документ, содержащий список файлов приложения вместе с индексами и криптографическими хэшами для каждого блока данных, который хранится в пакете. Файл сопоставления блоков проверяется и защищается цифровой подписью при подписании пакета. Файл сопоставления блоков позволяет добавочно загружать и проверять MSIX-пакеты, а также поддерживает дифференциальные обновления файлов приложений после их установки.

AppxManifest.xml

Манифест пакета представляет собой XML-документ, содержащий информацию, необходимую системе для развертывания, отображения и обновления MSIX-приложений. Эта информация включает в себя идентификатор пакета, зависимости пакета, требуемые возможности, визуальные элементы и точки расширения.

AppxSignature.p7x

AppxSignature.p7x создается после подписания пакета. Все MSIX-пакеты должны быть подписаны перед установкой. С помощью AppxBlockmap.xml платформа может установить пакет и пройти проверку.

Поддерживаемые платформы

Полный список платформ, поддерживающих MSIX, см. в этой статье.

Преимущества контейнеров для приложений

Приложения, упакованные с помощью MSIX, запускаются в упрощенном контейнере приложений. Процесс приложения MSIX и его дочерние процессы запускаются внутри контейнера и изолируются с помощью файловой системы и виртуализации реестра. Все приложения MSIX могут читать глобальный реестр. MSIX-приложение записывает данные в свой виртуальный реестр и в папку данных приложения. Они будут удалены при деинсталляции или сбросе приложения. Другие приложения не имеют доступа к виртуальному реестру или виртуальной файловой системе приложения MSIX.

Выбор режима работы SATA (IDE, AHCI, RAID), NVMe

Идеальная сборка — это когда каждый компонент системы работает со 100% отдачей. Казалось бы, такая тривиальная задача, как подключение жесткого диска к материнской плате не должна вызвать особых затруднений. Подключаем HDD к соответствующему разъему, и, вуаля — в системе есть место для развертывания операционки и хранения файлов. Но не все так просто!

Чтобы познать дзен сборки и получить оптимальную по определенным параметрам (быстродействие, надежность и т. д.) систему, нужно обладать определенным пониманием логики работы современных протоколов и алгоритмов передачи данных, знанием режимов работы контроллера HDD на материнке и умениями в области их практического использования.

BIOS и UEFI — разница есть!

Прежде чем рассматривать режимы работы SATA, следует познакомиться и рассмотреть различия между BIOS (базовая система ввода/вывода) и UEFI (унифицированный интерфейс расширяемой прошивки), ведь именно с их помощью придется вносить изменения в конфигурацию системы.

BIOS-ом называют управляющую программу, «зашитую» в чип материнской платы. Именно она отвечает за слаженную работу всех подключенных к материнке устройств.

Начиная с 2012–2013 годов, большинство материнских плат снабжается UEFI — усовершенствованной управляющей программой, наделенной графическим интерфейсом и поддерживающей работу с мышью. Но, что называется «по старинке», оба варианта, на бытовом уровне, называют BIOS.

Даже неискушенному пользователю понятно, что причиной столь радикальной смены курса при создании UEFI стало не желание производителей «приблизить» интерфейс к конечному пользователю ПК, сделать его более удобным и понятным, а более веские причины.

Таким весомым аргументом стало ограничение на возможность работы с накопителями большого объема в изначальной версии BIOS. Дело в том, что объем диска ограничен значением, приблизительно равным 2,1 ТБ. Взять эту планку без кардинальных изменений управляющего софта было невозможно. К тому же БИОС работает в 16-битном режиме, используя при этом всего 1 МБ памяти, что в комплексе приводит к существенному замедлению процесса опроса (POST-опрос) устройств и началу загрузки из MBR области с установленной «осью».

UEFI лишена вышеперечисленных недостатков. Во-первых, расчетный теоретический порог объема дисковой подсистемы составляет 9,4 ЗБ (1 зеттабайт = 10 21 байт), а во-вторых, для загрузки операционки используется стандарт размещения таблиц разделов (GPT), что существенно ускоряет загрузку операционной системы.

Разметка жестких дисков

Как говорилось ранее, у стандартов BIOS и UEFI — различный подход к разметке области жесткого диска. В BIOS используется так называемая главная загрузочная запись (MBR), которая четко указывает считывающей головке HDD сектор, с которого нужно начать загрузку ОС.

В UEFI это реализовано иначе. В этом стандарте используется информация о физическом расположении таблиц разделов на поверхности HDD.

Как это работает?

Каждому разделу жесткого диска присваивается свой собственный уникальный идентификатор (GUID), который содержит всю необходимую информацию о разделе, что существенно ускоряет работу с накопителем. К тому же при использовании GPT риск потерять данные о разделе минимальны, поскольку вся информация записывается как в начальной области диска, так и дублируется в конце, что повышает надежность системы в целом.


Для понимания — при использовании MBR, информация о загрузочной области находится только в начале диска, в строго определенном секторе и никак не дублируется, поэтому, при ее повреждении, загрузить операционную систему с такого диска будет невозможно. Систему придется устанавливать заново.

Еще одно существенное отличие — при использовании «старого» BIOS и MBR на диске можно максимально создать четыре логических раздела. В случае необходимости создания их большего количества придется доставать свой шаманский бубен и прибегнуть к определенным действиям на грани магии и «химии». По сути, предстоит проделать трюк с одним из основных разделов. Сначала преобразовать его в расширенный, а затем создать внутри него нужное количество дополнительных разделов. В случае использования стандарта GPT все это становится неактуальным, поскольку изначально в ОС Windows, при использовании новой философии разметки HDD, пользователю доступно создание 128 логических разделов.

Что касается физической разбивки диска на логические разделы, то здесь нужно четко понимать задачи, под которые они создаются. Нужно приучить себя четко разделять данные пользователя и системные файлы. Исходя из этого, логических дисков в системе должно быть как минимум два. Один под операционку, второй под пользовательские данные.

Оптимальный вариант — иметь в ПК два физических диска. SSD объемом 120–240 ГБ под систему и быстрые игрушки и HDD под документы и файлы мультимедиа необходимого объема.

В некоторых случаях можно еще разделить том пользовательских данных на два раздела. В одном хранить важные файлы (те, что нужно сохранить любой ценой) и текущие, утрата которых не критична и их легко будет восстановить с просторов интернета (музыка, фильмы и т. д.). И, конечно же, приучить себя регулярно сохранять резервную копию раздела с важными данными (облачные хранилища, внешний HDD и т. д.), чтобы не допустить их потери.

Режимы работы SATA

Покончив с необходимым теоретическим минимумом, следует определиться с выбором режима работы контроллера HDD материнской платы и сферами их применения.


  • IDE — самый простой и безнадежно устаревший вариант, использование которого было актуально лет n-цать назад. Представляет собой эмуляцию работы жесткого диска PATA. Режим находит применение при работе с устаревшим оборудованием или программным обеспечением, требующим устаревших операционных систем. Современные SSD в таком режиме работать не будут!

Сложно представить необходимость такого режима работы в составе современного ПК. Разве что в одной точке пространства и времени сойдутся найденный на антресоли старенький HDD с рабочей ОС и «самоткаными» эксклюзивными обоями рабочего стола, и безудержное желание сохранить их для потомков.

  • AHCI — режим работы современного накопителя, предоставляющий расширенный функционал и дополнительные «плюшки». В первую очередь — возможность «горячей» замены жестких дисков. Для домашнего ПК или офисной машины — это не очень актуально, а вот в случае с серверным оборудованием, такая возможность поможет сэкономить много времени и нервов системного администратора. Во-вторых, наличие реализованного алгоритма аппаратной установки очередности команд (NCQ), существенно ускоряющей работу накопителя и производительность системы в целом. Это достигается за счет грамотного и оптимального алгоритма движения считывающей головки по блину классического HDD или более эффективного использования ячеек памяти в случае SSD накопителя.


  • RAID — возможность организации совместной работы нескольких накопителей в едином дисковом массиве. В зависимости от задач, можно объединить диски в систему повышенной надежности (RAID 1) информация в которой будет дублироваться на каждый из дисков массива, или высокопроизводительную систему (RAID 0 или RAID 5), когда части одного файла одновременно записываются на разные диски, существенно сокращая при этом время обращения к дисковому массиву.
  • NVMe — абсолютно новый стандарт, специально разработанный под SSD-накопители. Поскольку твердотельные диски уже «выросли» из протокола передачи данных SATA-III, и берут новые вершины в передаче данных по интерфейсу PCI-E, обеспечивая при этом наивысшую скорость выполнения операций чтения/записи. При этом по скорости превосходят своих SSD-собратьев, работающих в режиме AHCI, практически вдвое.

К выбору режима работы накопителя следует отнестись ответственно. Выбрать его нужно перед началом установки операционной системы! В противном случае, при его смене на уже установленной операционке, очень велика вероятность получения экрана смерти (BSOD) и отказа ПК работать.


Собирая систему важно не только правильно подобрать компоненты и подключить провода и шлейфы, также важно грамотно настроить ее конфигурацию, ведь быстродействие накопителей зависит не только от «железной» начинки, но и от способа управления ей.

Читайте также: