Стандартный двухканальный контроллер PCI IDE — что это?
IDE — это разьем, который позволяет подключить старые жесткие диски или CD/DVD-приводы. Таких портов может быть несколько на материнке, а может быть только один. Чтобы добавить новый порт — нужно установить плату расширения, которая устанавливается в PCI-разьем материнской платы:
PCI есть устаревший, куда можно установить такие платы, как блютуз, Wi-Fi, звуковую плату, сетевую. Но это устаревший вариант, сегодня используется в материнках PCI-Express, туда можно установить все тоже самое, только еще видеокарту. Нет, в PCI тоже можно поставить видеокарту, но такие видеокарты — редкость, обычно видеокарты устанавливались в AGP (это тоже уже устаревший разьем).
Как я уже писал выше, IDE — это устаревший разьем, сегодня используется SATA. Но если их не хватает — можно точно таким же образом установить плату расширения.
Вот как выглядит стандартный двухканальный контроллер PCI IDE:
Это примерный вид. Разьемов может быть два, один, а то и четыре. Кроме IDE могут быть и другие, например SATA. Все зависит от модели устройства.
Конечно это устройство — отдельное, поэтому Windows его может просто не знать. А драйвера поставить — может тоже не сможет, по разным причинам, просто обычно Windows умеет автоматически устанавливать драйвера. Но иногда, опять же по разным причинам — этого не происходит.
Можно поставить драйвера вручную — откройте диспетчер устройств, найдите проблемное устройство, нажмите правой кнопкой и выберите пункт Свойства. Далее активируйте вкладку Сведения, там выберите пункт меню ИД оборудования, скопируйте строчку с VEN / DEV:
PS: Synaptics SMBus Driver — это только пример.
Потом с этой информацией идете в Google и вы с высокой вероятностью легко найдете драйвер.
Второй вариант — использовать утилиту DevID Agent, которая умеет сканировать компьютер на наличие устройств, где драйвер и не установлен и самостоятельно потом находить и ставить драйвер:
Перед использованием данной программы создайте точку восстановления! Утилита сама ищет и ставит драйвера, мне понравилась тем что нет рекламы, лишних опций, работает быстро. Программа простая, не содержит рекламы и лишних опций. PS: только при установке может предложить также поставить левый софт, поэтому будьте внимательны.
Надеюсь данная информация была полезной. Удачи и добра, до новых встреч друзья!
Pci ide контроллер что это
Стандартный двухканальный контроллер PCI IDE — что это?
IDE — это разьем, который позволяет подключить старые жесткие диски или CD/DVD-приводы. Таких портов может быть несколько на материнке, а может быть только один. Чтобы добавить новый порт — нужно установить плату расширения, которая устанавливается в PCI-разьем материнской платы:
PCI есть устаревший, куда можно установить такие платы, как блютуз, Wi-Fi, звуковую плату, сетевую. Но это устаревший вариант, сегодня используется в материнках PCI-Express, туда можно установить все тоже самое, только еще видеокарту. Нет, в PCI тоже можно поставить видеокарту, но такие видеокарты — редкость, обычно видеокарты устанавливались в AGP (это тоже уже устаревший разьем).
Как я уже писал выше, IDE — это устаревший разьем, сегодня используется SATA. Но если их не хватает — можно точно таким же образом установить плату расширения.
Вот как выглядит стандартный двухканальный контроллер PCI IDE:
Это примерный вид. Разьемов может быть два, один, а то и четыре. Кроме IDE могут быть и другие, например SATA. Все зависит от модели устройства.
Конечно это устройство — отдельное, поэтому Windows его может просто не знать. А драйвера поставить — может тоже не сможет, по разным причинам, просто обычно Windows умеет автоматически устанавливать драйвера. Но иногда, опять же по разным причинам — этого не происходит.
Можно поставить драйвера вручную — откройте диспетчер устройств, найдите проблемное устройство, нажмите правой кнопкой и выберите пункт Свойства. Далее активируйте вкладку Сведения, там выберите пункт меню ИД оборудования, скопируйте строчку с VEN / DEV:
PS: Synaptics SMBus Driver — это только пример.
Потом с этой информацией идете в Google и вы с высокой вероятностью легко найдете драйвер.
Второй вариант — использовать утилиту DevID Agent, которая умеет сканировать компьютер на наличие устройств, где драйвер и не установлен и самостоятельно потом находить и ставить драйвер:
Перед использованием данной программы создайте точку восстановления! Утилита сама ищет и ставит драйвера, мне понравилась тем что нет рекламы, лишних опций, работает быстро. Программа простая, не содержит рекламы и лишних опций. PS: только при установке может предложить также поставить левый софт, поэтому будьте внимательны.
Надеюсь данная информация была полезной. Удачи и добра, до новых встреч друзья!
Что такое pci ide
Здравствуйте всем! Сегодня разберем опцию PCI IDE Busmaster — что это такое в БИОСе, для чего служит, нужно ли его включать и в каких случаях.
О том, что лучше выбрать — SATA mode IDE или AHCI и чем они отличаются, можно почитать здесь.
Что такое Bus Master в BIOS
Вопреки мнению, которое может сложиться, эта функция не отвечает за переключение режима работы жесткого диска с «мастера» на №слейв» или в обратном порядке. На самом деле нужна для активации драйвера БИОС, который позволяет шине SATA переходить в режим DMA, тем самым обеспечивая прямой доступ к ОЗУ.
Вследствие этого винчестеры компьютера могут прямо обращаться к оперативной памяти, минуя CPU. Это снижает нагрузку на центральный процессор и немного ускоряет работу компьютера.
Такая опция доступна в болшинстве случаев только в современных материнских платах. Ранее за эти функции отвечал соответствующий драйвер операционной системы.
Преимущество более новой технологии в том, что функция активируется даже без загрузки Windows, а такой режим иногда может потребоваться — например, когда вы изменяете размеры томов винчестера с помощью Acronis Partition Manager или аналогичной программы.
Стоит ли активировать эту опцию
В большинстве случаев такая фича будет скорее полезной, чем вредной, поэтому лучше ее активировать.
Увеличение производительности будет пускай и небольшое, но если задействовать несколько подобных способов, в сумме вы получите весьма ощутимые проценты.
Отключить функцию может потребоваться только в случае, когда базовый драйвер БИОСа работает некорректно, вызывая различные лаги.
При этом могут происходить ошибки при загрузке Виндовс, а также вылеты в синий экран.
Также советую почитать «Включаем AHCI режим в Windows 10 разными способами». Буду признателен всем, кто расшарит этот пост в социальных сетях. До скорой встречи!
PCI IDE busmaster
Другие идентичные названия опции: IDE Bus Master, Primary IDE BusMaster.
Существует несколько опций, предназначенных для оптимизации работы контроллера шины IDE. К числу таких опций относится опция BIOS PCI IDE busmaster. Она может принимать всего два значения – Enabled (Включено) или Disabled (Выключено).
Принцип работы
Может сложиться впечатление, что опция PCI IDE busmaster служит для управления переключением шины IDE с режима Master на режим Slave и обратно. Однако на самом деле это не так и назначение функции состоит в совершенно другом. Она предназначена для включения и выключения специального драйвера BIOS, позволяющего осуществлять работу контроллера шины, а также более современного контроллера SATA в режиме DMA (Прямой доступ к памяти).
Благодаря использованию контроллерами IDE и SATA режима DMA жесткие диски компьютера могут передавать данные напрямую в оперативную память, минуя центральный процессор, что позволяет разгрузить процессор и ускорить работу жестких дисков с оперативной памятью.
Поддержка режима DMA контроллером IDE/SATA существует уже долгое время, но раньше она была реализована лишь на уровне драйверов операционной системы. Большинство современных ОС, таких, как Windows, имеют встроенный 32-битный драйвер, позволяющий контроллеру IDE/SATA осуществлять прямой доступ к памяти.
Однако современные материнские платы также поддерживают данный режим на уровне BIOS. Это позволяет контроллеру IDE/SATA работать в режиме DMA вне рамок ОС, например, при загрузке компьютера, а также в старых операционных системах типа MS-DOS.
При включении опции BIOS загрузит 16-битный драйвер DMA для контроллера IDE/SATA, что значительно ускорит работу жестких дисков с оперативной памятью, а также повысит производительность компьютера в период загрузки операционной системы или в ОС типа MS-DOS. Если вы выключите опцию, то драйвер не будет загружаться. Это не значит, однако, что оперативная память будет недоступна для контроллера IDE/SATA. Взаимодействие с памятью будет осуществляться контроллером в режиме PIO (Programmed Input/Output – Программируемый ввод/вывод). Однако в данном режиме будут использоваться ресурсы центрального процессора.
Стоит ли включать опцию?
В большинстве случаев опцию PCI IDE busmaster стоит включить. Использование прямого доступа к памяти позволит увеличить производительность жесткого диска компьютера в ОС типа MS-DOS. В частности, драйвер DMA необходим для работы многих утилит MS-DOS, таких, как Norton Ghost. Кроме того, даже если у вас установлены современные ОС, такие, как Microsoft Windows, лучше тоже включить данную опцию, чтобы жесткие диски могли бы использовать преимущества DMA до загрузки операционной системы.
Отключение опции может требоваться лишь в том случае, если встроенный в BIOS драйвер прямого доступа к памяти контроллера IDE/SATA работает нестабильно и вызывает ошибки при загрузке операционной системы.
Интерфейс IDE, ATA, PATA и ATAPI, что это такое и как он работает?
В истории ПК многие интерфейсы и типы разъемов были использованы, потому что по мере развития отрасли были приняты более современные и быстрые интерфейсы. Сегодня мы расскажем, что IDE интерфейс есть и как это работает, то, что, хотя сегодня оно уже исчезло в домашних ПК, широко используется в течение многих лет и, фактически, все еще используется в некоторых промышленных областях.
Что такое интерфейс IDE и из чего он состоит?
Параллельный ATA (PATA), первоначально AT Attachment, также известный как ATA или IDE, представляет собой стандартный интерфейс, созданный Western Digital и Compaq в 1986 году для подключения жестких дисков и приводов CD / DVD к материнской плате ПК, хотя он также использовался. вариант подключить дисководы. Стандарт по-прежнему поддерживается комитетом X3 / INCITS и использует базовые стандарты ATA и ATAPI (AT Attachment Packet Interface).
Действительно, мы говорим о том удлиненном интерфейсе со множеством разъемов (39 или 40 в зависимости от устройства), которые были у жестких дисков и оптических приводов прошлых лет, и чей кабель был серым, плоским и удлиненным с индивидуально изолированными контактами. В отличие от стандарта Serial ATA, как следует из названия, разъемы работают параллельно, что позволяет подключить более одного устройства к одному кабелю.
Очевидно, что на материнских платах был этот 40-контактный разъем для подключения кабелей, которые шли к жестким дискам и оптическим приводам точно так же, как мы теперь подключаем кабели данных SATA. Кстати, особенность этих блоков заключалась в том, что они питались от блока питания с помощью 4-контактных разъемов MOLEX, а не от современных разъемов SATA.
История и терминология интерфейса IDE
Стандарт изначально задумывался как «AT Bus Attachment», официально назывался AT Attachment и сокращался как «ATA», потому что его главной особенностью было прямое соединение с 16-битной шиной ISA, представленной IBM. Когда в 2003 году был представлен интерфейс SATA, исходный ATA был переименован в Parallel ATA или для краткости PATA.
Физические интерфейсы ATA стали стандартным компонентом любого ПК, сначала в адаптерах главной шины, иногда в звуковой карте, но в конечном итоге в виде двух физических интерфейсов, встроенных в южный мост материнской платы. Названные «первичным» и «вторичным» или «ведущим» и «ведомым» интерфейсами ATA, они были назначены базовым адресам 0x1F0 и 0x170 в шинных системах ISA.
Главный и подчиненный диски, как они работали?
Текущий интерфейс SATA работает последовательно, поэтому невозможно подключить более одного устройства к одному кабелю для передачи данных, но параллельный интерфейс IDE позволял это. Однако, когда два устройства были подключены одним и тем же кабелем, одно должно быть обозначено как устройство 0 (ведущее), а другое как устройство 1 (ведомое). Это различие было необходимо, чтобы позволить обоим накопителям использовать один и тот же кабель для передачи данных без конфликтов, и было сделано с помощью знаменитой перемычки, встроенной в жесткие диски и оптические приводы того времени.
Выбор режима работы 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 материнской платы и сферами их применения.
Сложно представить необходимость такого режима работы в составе современного ПК. Разве что в одной точке пространства и времени сойдутся найденный на антресоли старенький HDD с рабочей ОС и «самоткаными» эксклюзивными обоями рабочего стола, и безудержное желание сохранить их для потомков.
К выбору режима работы накопителя следует отнестись ответственно. Выбрать его нужно перед началом установки операционной системы! В противном случае, при его смене на уже установленной операционке, очень велика вероятность получения экрана смерти (BSOD) и отказа ПК работать.
Исправить ситуацию конечно можно, выполнив с десяток пунктов из многочисленных инструкций, коими пестрит интернет, но рациональней будет установка ОС заново, что называется с чистого листа, чем забивание «костылей» в надежде все починить.
Собирая систему важно не только правильно подобрать компоненты и подключить провода и шлейфы, также важно грамотно настроить ее конфигурацию, ведь быстродействие накопителей зависит не только от «железной» начинки, но и от способа управления ей.
990x.top
Простой компьютерный блог для души)
Стандартный двухканальный контроллер PCI IDE — что это?
Стандартный двухканальный контроллер PCI IDE — специальная плата расширения, которая содержит порт IDE для подключения устройств хранения данных, например жесткие диски, CD/DVD-приводы.
IDE — это разьем, который позволяет подключить старые жесткие диски или CD/DVD-приводы. Таких портов может быть несколько на материнке, а может быть только один. Чтобы добавить новый порт — нужно установить плату расширения, которая устанавливается в PCI-разьем материнской платы:
PCI есть устаревший, куда можно установить такие платы, как блютуз, Wi-Fi, звуковую плату, сетевую. Но это устаревший вариант, сегодня используется в материнках PCI-Express, туда можно установить все тоже самое, только еще видеокарту. Нет, в PCI тоже можно поставить видеокарту, но такие видеокарты — редкость, обычно видеокарты устанавливались в AGP (это тоже уже устаревший разьем).
Как я уже писал выше, IDE — это устаревший разьем, сегодня используется SATA. Но если их не хватает — можно точно таким же образом установить плату расширения.
Вот как выглядит стандартный двухканальный контроллер PCI IDE:
Это примерный вид. Разьемов может быть два, один, а то и четыре. Кроме IDE могут быть и другие, например SATA. Все зависит от модели устройства.
Конечно это устройство — отдельное, поэтому Windows его может просто не знать. А драйвера поставить — может тоже не сможет, по разным причинам, просто обычно Windows умеет автоматически устанавливать драйвера. Но иногда, опять же по разным причинам — этого не происходит.
Можно поставить драйвера вручную — откройте диспетчер устройств, найдите проблемное устройство, нажмите правой кнопкой и выберите пункт Свойства. Далее активируйте вкладку Сведения, там выберите пункт меню ИД оборудования, скопируйте строчку с VEN / DEV:
PS: Synaptics SMBus Driver — это только пример.
Потом с этой информацией идете в Google и вы с высокой вероятностью легко найдете драйвер.
Второй вариант — использовать утилиту DevID Agent, которая умеет сканировать компьютер на наличие устройств, где драйвер и не установлен и самостоятельно потом находить и ставить драйвер:
Перед использованием данной программы создайте точку восстановления! Утилита сама ищет и ставит драйвера, мне понравилась тем что нет рекламы, лишних опций, работает быстро. Программа простая, не содержит рекламы и лишних опций. PS: только при установке может предложить также поставить левый софт, поэтому будьте внимательны.
Надеюсь данная информация была полезной. Удачи и добра, до новых встреч друзья!
Amd pci ide controller что это
В данном материале будет простыми словами описано такое устройство как контроллер IDE/SATA.
IDE/SATA контроллер — что это такое?
Устройство (чип) на материнской плате, необходимое для функционирования подключенных жестких дисков.
Важно понимать, контроллер может быть двух вариантов:
Простыми словами — чип, благодаря которому работают порты SATA (или IDE):
К этим портам мы подключаем устройства для постоянного хранения данных — жесткие диски (HDD) или твердотельный накопитель (SSD). Также можно подключить привод CD/DVD, однако им уже мало кто пользуется. Также порты могут быть разных цветов, разница — порты имеют разную спецификацию (попросту одни работают немного медленнее чем другие, например может быть SATA 2 и 3).
Раньше некоторые материнские платы содержали сразу два интерфейса — SATA и IDE. Один был основным, а второй — функционировал за счет установки дополнительного чипа на плату.
Также такой контроллер может быть внешним, который подключается используя шину PCI-E:
Для функционирования устройства необходимо установить драйвера. Чтобы установить операционную систему на такой диск, подключенный к внешнему контроллеру — также нужно заранее подготовить драйвера, а лучше внедрить их сам образ (например утилитой nLite).
Отличия ревизий SATA
В основном отличаются скоростью:
Заключение
990x.top
Простой компьютерный блог для души)
AMD PCI Device Driver — что это за драйвер?
Драйвер контроллера PCI.
Драйвер входит в состав пакета AMD Chipset Drivers.
Скорее всего нужен для корректной работы шины PCI и для обеспечения максимальной скорости. Что такое шина PCI? Это разьем на материнской плате, часто не один, в который могут устанавливаться разные устройства — например сетевая плата, звуковая плата, внешний Wi-Fi модуль, дополнительные порты USB, и конечно же видеокарта. Последнее — пожалуй наиболее важное, поэтому ставить драйвер нужно. Тем более, что AMD добавила поддержку PCI Express 4.0, для корректной работы как раз возможно и нужен драйвер.
Windows 10 способна автоматически обновить данный драйвер. Это хорошо, но после установки, можно попробовать установить и драйвер с официального сайта AMD или с сайта вашей модели материнки. Редко, но иногда Windows ставит драйвер не очень старый, но стабильный, однако при этом не самой последней версии.
Вообще на самом деле шина называется не PCI, а PCI-E.
Вот как выглядит разьем PCI-E на материнке:
Кстати здесь первые три слева — это просто PCI, не Express, а обычные, и они существовали еще во времена Pentium 4. Сегодня их уже нет на современных платах, потому что они медленные. Три PCI, которые справа — уже современные разьемы, быстрее, скорости достаточно для современных видеокарт. PS: устройства просто PCI и PCI Express не совместимы, там элементарно физически нет совместимости.
Чтобы посмотреть установлены дрова или нет, то стоит открыть диспетчер устройств (Win + R > devmgmt.msc) и посмотреть нет ли устройства с восклицательным знаком. Второе — это открыть окно Программы и компоненты (Win + R > appwiz.cpl) и посмотреть в списке нет ли там установленных драйверов AMD PCI Device Driver, кроме этого, в этом же окне можно нажать Просмотр установленных обновлений — там тоже может быть нужная информация.
Собственно если драйвер не установлен, то может быть такая картина в диспетчере:
Надеюсь информация оказалась полезной. Удачи и добра, до новых встреч друзья!
Выбор режима работы 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 материнской платы и сферами их применения.
Сложно представить необходимость такого режима работы в составе современного ПК. Разве что в одной точке пространства и времени сойдутся найденный на антресоли старенький HDD с рабочей ОС и «самоткаными» эксклюзивными обоями рабочего стола, и безудержное желание сохранить их для потомков.
К выбору режима работы накопителя следует отнестись ответственно. Выбрать его нужно перед началом установки операционной системы! В противном случае, при его смене на уже установленной операционке, очень велика вероятность получения экрана смерти (BSOD) и отказа ПК работать.
Исправить ситуацию конечно можно, выполнив с десяток пунктов из многочисленных инструкций, коими пестрит интернет, но рациональней будет установка ОС заново, что называется с чистого листа, чем забивание «костылей» в надежде все починить.
Собирая систему важно не только правильно подобрать компоненты и подключить провода и шлейфы, также важно грамотно настроить ее конфигурацию, ведь быстродействие накопителей зависит не только от «железной» начинки, но и от способа управления ей.
990x.top
Простой компьютерный блог для души)
Стандартный двухканальный контроллер PCI IDE — что это?
Стандартный двухканальный контроллер PCI IDE — специальная плата расширения, которая содержит порт IDE для подключения устройств хранения данных, например жесткие диски, CD/DVD-приводы.
IDE — это разьем, который позволяет подключить старые жесткие диски или CD/DVD-приводы. Таких портов может быть несколько на материнке, а может быть только один. Чтобы добавить новый порт — нужно установить плату расширения, которая устанавливается в PCI-разьем материнской платы:
PCI есть устаревший, куда можно установить такие платы, как блютуз, Wi-Fi, звуковую плату, сетевую. Но это устаревший вариант, сегодня используется в материнках PCI-Express, туда можно установить все тоже самое, только еще видеокарту. Нет, в PCI тоже можно поставить видеокарту, но такие видеокарты — редкость, обычно видеокарты устанавливались в AGP (это тоже уже устаревший разьем).
Как я уже писал выше, IDE — это устаревший разьем, сегодня используется SATA. Но если их не хватает — можно точно таким же образом установить плату расширения.
Вот как выглядит стандартный двухканальный контроллер PCI IDE:
Это примерный вид. Разьемов может быть два, один, а то и четыре. Кроме IDE могут быть и другие, например SATA. Все зависит от модели устройства.
Конечно это устройство — отдельное, поэтому Windows его может просто не знать. А драйвера поставить — может тоже не сможет, по разным причинам, просто обычно Windows умеет автоматически устанавливать драйвера. Но иногда, опять же по разным причинам — этого не происходит.
Можно поставить драйвера вручную — откройте диспетчер устройств, найдите проблемное устройство, нажмите правой кнопкой и выберите пункт Свойства. Далее активируйте вкладку Сведения, там выберите пункт меню ИД оборудования, скопируйте строчку с VEN / DEV:
PS: Synaptics SMBus Driver — это только пример.
Потом с этой информацией идете в Google и вы с высокой вероятностью легко найдете драйвер.
Второй вариант — использовать утилиту DevID Agent, которая умеет сканировать компьютер на наличие устройств, где драйвер и не установлен и самостоятельно потом находить и ставить драйвер:
Перед использованием данной программы создайте точку восстановления! Утилита сама ищет и ставит драйвера, мне понравилась тем что нет рекламы, лишних опций, работает быстро. Программа простая, не содержит рекламы и лишних опций. PS: только при установке может предложить также поставить левый софт, поэтому будьте внимательны.
Надеюсь данная информация была полезной. Удачи и добра, до новых встреч друзья!
Экспресс-тестирование SATA-контроллеров в чипсетах AMD и Intel
Текущая версия методики тестирования внутренних накопителей была введена нами в употребление еще три года назад, так что на сегодня уже нуждается в обновлении, причем речь идет не только о программных компонентах, но и об аппаратном обеспечении. В связи с этим у нас возник вопрос: как соотносятся друг с другом результаты накопителей на разных контроллерах? Иными словами, не выйдет ли так, что тестирования большого практического смысла не имеют из-за слабой устойчивости результатов к изменениям конфигурации. Тем более что современные дисковые контроллеры способны работать в разных режимах и вести себя при этом могут по-разному. Некоторые читатели ранее даже делали замечания по поводу использования нами для тестов режима RAID, а не более распространенного AHCI, считая, что это сказывается на результатах. Но ведь и в случае AHCI может быть разница из-за разных драйверов — системного и поставляемого производителем контроллера. Насколько все эти опасения оправданы, имеет смысл проверить.
Тем более что был за нами и небольшой должок. Как раз три года назад мы решили попробовать сравнить реализации интерфейса SATA600 в чипсетах AMD и Intel и получили, мягко говоря, обескураживающие результаты для одного из случаев. Вот тут как раз претензии к использованию именно RAID-режима, возможно, и были обоснованы (почему — более подробно будет сказано ниже), но проверить это позднее все «руки не доходили». А тут как раз повод выдался. Причем за прошедшее время компания AMD существенным образом переработала эту составляющую своих чипсетов.
В итоге у нас получилось относительно небольшое, но представительное тестирование трех контроллеров с тремя драйверами, отчет о котором как раз и представляет собой данная статья. Но сначала — немного теории и исторических фактов.
Режимы дискового контроллера — Intel-way
Первые SATA-контроллеры в основной своей массе представляли собой немного переделанные устройства, рассчитанные еще на параллельную версию АТА-интерфейса. А иногда — даже и не переделанные: в старших моделях нередко встречались конвертеры-сериализаторы Marvel 88i8030 (в паре с привычными собственно контроллерами), а производители бюджетных карт расширений вовсю использовали гибридные чипы. Например, можно вспомнить такие продукты Promise (почему именно этой компании — понятно станет чуть позже), как FastTrak SATA150 TX2Plus и TX4. Первый (на базе чипа PDC20375) поддерживал два порта SATA150 и один канал PATA, второй (на PDC20318) — четыре порта SATA150, т. е. оба допускали подключение до четырех жестких дисков. И это количество появилось вовсе не на пустом месте, поскольку свойственно было одному из более ранних продуктов компании — FastTrak, который являлся просто двухканальным РАТА RAID-контроллером. Фактически, производители никаких революций не устраивали, просто творчески дорабатывая и перерабатывая свою продукцию. Она требовала установки собственного драйвера, для системы в любом случае представлялась SCSI-контроллером, и никаких особенностей с ее конфигурированием не было.
Однако дискретные контроллеры в те годы уже начали «выходить из моды» во всех областях массового рынка, так что нет ничего удивительного, что подобной функциональностью начали обзаводиться непосредственно чипсеты. Правильнее даже будет сказать, что активное внедрение интерфейса SATA в массы началось с того момента, как появились чипсеты с его поддержкой. И вот тут возникли различия в подходах.
Компания Intel традиционно тянула с поддержкой SATA достаточно долго, однако в итоге подошла к ней достаточно ответственно, добавив новый контроллер в южные мосты ICH5/ICH5R. Предыдущий южный мост компании, ICH4, поддерживал два канала РАТА, его «сменщик» в лице ICH5 — ровно те же два канала РАТА и еще два порта SATA150, а ICH5R позволял на последних (и только на них!) организовать RAID-массив, причем ранее функциональности RAID-контроллера чипсеты Intel вообще не предлагали. Правда, на тот момент никаких дополнительных преимуществ использование SATA не обеспечивало, поскольку в ICH5/ICH5R не была реализована поддержка таких функций, как NCQ и прочих из набора возможностей SATA AHCI, т. е., по сути, режим работы контроллера был единственным и аналогичным РАТА. А вот следующее поколение южных мостов Intel такой функциональностью обзавелось. И тут начал возникать вопрос: как это все должно работать?
К решению проблемы подошли просто. Для начала, сохранили «старый» вариант (т. е. без поддержки новомодных функций) — для сохранения совместимости с устаревшими системами, благо в 2004 году это было весьма актуально. Собственно, Windows XP (на тот момент и немалое количество лет спустя — самая современная ОС) по умолчанию ничего другого, кроме «обычного IDE», «из коробки» и не поддерживала — для более «продвинутых» режимов требовалась установка драйвера. А поскольку критической массы новых устройств с полной поддержкой нового протокола на рынке тоже не наблюдалось, многие пользователи вполне справедливо считали возню с драйверами неудобством и использовали новые контроллеры в режиме «старых». Для всех остальных были придуманы два новых режима работы: RAID и AHCI. Почему два? Потому что по сформировавшейся чуть ранее традиции создание RAID-массивов было доступно только покупателям плат с более дорогим ICH6R, но весь остальной набор функций нужно было предоставить и экономным гражданам, выбирающим ICH6. В принципе, можно было бы обойтись и двумя режимами, поскольку RAID полностью включал в себя всю функциональность AHCI, но сделать три было проще с точки зрения унификации BIOS и драйверов.
С тех пор прошло уже более 10 лет, но в общем и целом подход не изменился. Просто сейчас уже нет разделения чипсетов на «северный» и «южный» мосты, поскольку первый полностью «переместился» в процессор. Однако чипсеты по-прежнему бывают разными: дорогие поддерживают полную функциональность SATA-контроллера, включая создание RAID-массивов, а дешевые — лишь ее подмножество, без массивов. Ничего удивительного, что при таком раскладе Intel рекомендует использовать именно режим RAID во всех случаях, когда он доступен. Тем более что некоторые разработки Intel, такие как Smart Response, на деле все равно реализуются поверх массивов. Однако, несмотря на эти рекомендации, чаще всего сейчас применяется режим AHCI, благо он же, как правило, выбран по умолчанию — из-за драйверов. Дело в том, что все современные операционные системы изначально поддерживают AHCI посредством комплектных драйверов, а вот для RAID, как и ранее, нужно устанавливать ПО производителя контроллера. У Intel это в обоих случаях один и тот же программный пакет, но при работе контроллера в AHCI-режиме его можно не устанавливать вовсе, и на этапе инсталляции системы, соответствнно, его драйверы можно «не подсовывать».
Режимы дискового контроллера — AMD-style
Теперь посмотрим на то, как к поддержке SATA относился второй крупный производитель чипсетов, благо сейчас их уже фактически двое и осталось. Первое время все было очень просто: хотя AMD еще в 1999 году потребовались собственные чипсеты для массового рынка в связи с выходом в свет первых Athlon, использующих собственную же системную шину, сопутствующие микросхемы компания всегда рассматривала как побочную область деятельности. Собственно, и AMD 750, и AMD 760 были выпущены лишь для того, чтобы на рынке в любом случае присутствовал совместимый с процессорами северный мост, а вот на южные мосты сил при этом не хватило. Точнее, таковые тоже выпускались, но были настолько просты и ограничены, что производители плат их, как правило, не использовали, предпочитая продукцию VIA. А как только Athlon занял определенное место на рынке, AMD вовсе отказалась от дальнейшего развития собственных чипсетов, во всем полагаясь на партнеров. На этом «жизнь» линейки чипсетов AMD прекратилась.
Вторичный выход AMD на рынок был связан с покупкой ATI — интеграция на компьютерном рынке всегда затрагивала не только сугубо технические области. В первую очередь, понятно, компанию интересовали разработки графического подразделения ATI, но не только в области дискретных GPU: пришла пора обзаводиться и собственными интегрированными чипсетами. А они как раз у ATI были, причем изначально и для платформы AMD, и для Intel. Но южными мостами ATI самостоятельно тоже занималась не слишком уж увлеченно, не имея возможности тратить средства на «непрофильные» направления. Как при этом выпускать конкурентоспособную продукцию? Да очень просто: лицензируя разработки других производителей, а иногда и просто продавая их под своей торговой маркой. Например, первый южный мост ATI с поддержкой RAID-массивов (SB400) был на самом деле сделан ULi, а отвечающая за SATA часть вообще представляла собой два двухпортовых контроллера Silicon Image, встроенных в чип. В более позднем SB600 изменения ограничились тем, что этот контроллер стал одним четырехпортовым — для удобства использования. Этот южный мост некоторое время продавался и под маркой AMD, но «собственным» для компании в каком-то смысле можно считать уже только SB700 и последующие разработки.
Итак, именно с SB700 фактически и началась новая жизнь чипсетов AMD — более старые упоминать уже не имеет смысла. Что касается более новых, то там положение менее однозначное. Несколько лет оно было простым: все южные мосты чипсетов для платформ AM2/AM3 и все FCH для «интегрированных» платформ FM1/FM2, по сути, являлись дальнейшим развитием SB700. А интересным для нас в данном случае является то, что контроллеры этой линейки работали даже не в трех, а в четырех разных режимах. Первый — «исторический» Legacy IDE (причины, по которым он оставался востребованным, описаны выше). Второй — стандартный для современных систем AHCI-режим (тоже понятно зачем). Третий и четвертый — RAID. Почему целых два режима? Потому что поддержку RAID 0, 1 и 10 получили все южные мосты (в отличие от Intel), а вот RAID5 был доступен лишь в части модификаций, причем вышедших позднее, нежели оригинальный SB700. Но в обоих случаях программная составляющая была лицензирована у компании Promise, так что в те годы была популярна шутка, что AMD просто встроила в свои чипсеты контроллер Promise FastTrak TX4300 — точно так же, как ATI (точнее, ULi) интегрировала ранее продукты Silicon Image. Главное же, что нас в данном случае интересует — никакой совместимости режимов «снизу вверх» у дисковых контроллеров AMD нет. Это разные устройства с разными драйверами — и даже базирующиеся на разработках разных компаний.
Положение дел несколько изменилось после появления платформы FM2+ и новой линейки чипсетов, созданной специально для нее. В принципе, первые три микросхемы по основным параметрам повторяли своих предшественников, а вот программный код Promise канул в лету. Вместо этого AMD начала использовать разработки другого производителя — Dot Hill (сотрудничество с ним началось с серверных решений). Это изменение нельзя отнести к принципиальным — просто общее число режимов работы сократилось до трех (как у Intel), но полной совместимости RAID и AHCI не появилось. С другой стороны, есть у нас подозрения, что обнаруженные три года назад проблемы в RAID-режиме могли быть связаны с тем, что написанные в незапамятные времена драйверы Promise попросту никто не оптимизировал под высокоскоростные накопители, благо изначально необходимости в этом не было, а потом руки не доходили. Оптимизированный же под современные многоядерные процессоры (на что в момент заключения соглашения было обращено особое внимание) «виртуальный RAID-контроллер» может оказаться куда более производительным, чем предшественники. Понятно, что пользователям «дискретных» платформ это никак не поможет, поскольку чипсеты для них не менялись уже очень давно, а вот покупателям APU быстрый RAID может пригодиться (хотя как раз в этом случае «оптимизация под многоядерность» даст меньший эффект ввиду меньшего количества этих самых ядер). Остается только вопрос, насколько этот новый RAID быстрый. И именно на него мы в числе прочего попробуем ответить.
Тестирование
Методика тестирования
В общем и целом мы решили опираться на стандартную методику тестирования внутренних накопителей (описанную в соответствующей статье), ограничившись лишь необходимыми изменениями и сократив количество используемых тестов. На нашей базовой системе (чипсет Intel Z77) мы использовали не только режим RAID контроллера под управлением Intel Rapid Storage 10.8.0.1003, но и AHCI — как с драйвером Intel из того же пакета, так и с «системным» драйвером Microsoft, поставляемым вместе с Windows 7. В аналогичных трех программных конфигурациях мы задействовали и чипсет Intel H87, причем на плату устанавливали процессор Core i3-4170T — близкий по характеристикам к «штатному» Core i3-2100. Отметим, что ПО Intel в данном случае старше чипсета, но никаких проблем с его функционированием обнаружено не было, хотя некоторое снижение производительности относительно потенциального уровня вполне возможно. Впрочем, как раз это и интересно проверить. Тем более что системный AHCI-драйвер имеет куда более почтенный возраст.
Что касается платформы AMD, то мы воспользовались платой на чипсете A88X c процессором A10-7850K и драйверами версии 15.7.1 (до сих пор наиболее «свежими»). Разумеется, в одном из режимов тестирования также использовался и драйвер Microsoft.
Большое количество накопителей мы решили не брать, ограничившись одним SSD Sandisk Extreme Pro 480 ГБ. Этого будет достаточно, поскольку накопитель быстрый, а все протоколы работы стандартные, так что предполагать наличие индивидуальных особенностей подключаемых устройств оснований нет. Будет при таком раскладе какая-либо разница в результатах тестов — значит, она есть; не будет — значит, ей и взяться неоткуда.
Линейные операции
Вместо IOMeter мы ограничились AS SSD, поскольку для оценки контроллеров нам достаточно максимальных скоростей, которые достигаются на блоках максимального же размера. Что мы видим? RAID-режим контроллера A88X по-прежнему сильно ограничивает производительность. Особенно сильно это заметно по скорости чтения, которая в данном случае оказалась ниже скорости записи. «Универсальный» драйвер Microsoft, как видите, на этом контроллере тоже немного отстает от AHCI-драйвера AMD, но незначительно. А вот оба чипсета Intel в обоих режимах под управлением разных драйверов работают абсолютно одинаково.
Случайный доступ
Аутсайдер не изменился — это по-прежнему RAID-режим A88X, причем с разгромным счетом. Впрочем, в этом тесте A88X вообще отстает от чипсетов Intel, но это может быть связано с более низкой производительностью платформы. Примечательно, что все три чипсета при использовании драйвера Microsoft демонстрируют максимальную производительность. Разница, конечно, чаще всего микроскопическая, но она есть, и устойчивая.
Вот тест скорости записи оказался весьма интересным. Некоторые закономерности сохранились: SATA-контроллер AMD ведет себя по-разному в AHCI- и RAID-режиме, а у Intel такой «особенности» нет. В AHCI-режиме драйвер Microsoft снижает производительность A88X, но оказывается более быстрым на H87, а Z77 абсолютно все равно. К последнему, впрочем, мы были морально готовы: как уже говорилось выше, использовался более старый пакет ПО Intel, нежели чипсет, так что тут возможно всякое. Хорошо заметно также и то, что программная часть в основном влияет на работу в «нагруженном режиме», несколько выходящем за рамки «обычного использования» компьютера, что будет интересно только любителям бенчмарков с последующим «мерянием». результатами в форумах — тут удачный (или, напротив, не очень) выбор драйвера может сильно изменить картину. А при тестировании с единичной очередью первоочередными являются собственно характеристики накопителя и контроллера — зависимость от драйвера здесь несравнимо меньше.
Производительность в приложениях
Если говорить не о низкоуровневых характеристиках, а о результатах бенчмарков, имитирующих реальную работу (что, собственно, большинству пользователей и интересно), то разница между испытуемыми сильно сглаживается — настолько, что можно даже не обращать на нее внимание. Исключением (как обычно) является RAID-режима A88X, который снижает производительность примерно на 10%. Для PC Mark 7 это довольно серьезное отклонение: если вспомнить наши тестирования, то, к примеру, бюджетный OCZ Trion 100 «выбивает» на Z77 больше «попугаев», чем Sandisk Extreme Pro 480 ГБ, подключенный к A88X в RAID-режиме. Таким образом, ситуации, в которых разница между контроллерами сравнима или превышает разброс результатов между разными накопителями, вполне возможны. Есть также небольшая разница между «фирменным» и «системным» драйверами в AHCI-режиме, причем для AMD более предпочтительным является первый, а для Intel — наоборот. Однако эта разница столь невелика, что может считаться не заслуживающей внимания.
Разброс значений на разных трассах PC Mark 7 не превышает 10%, что вполне объяснимо тем, что задействовать возможности современных SSD данный пакет может разве что в RAW-режиме, когда не пытается имитировать реальную нагрузку с учетом прочих компонентов компьютера. Выделилась только наша «любимая» трасса запуска приложений, где, кстати, RAID-режим оказался самым медленным у всех контроллеров. Но практически значимым это замедление является только для А88Х, что уже не удивляет.
Работа с большими файлами
![]() |
![]() |
![]() |
Поскольку выше мы видели «вредное влияние» RAID-драйвера AMD даже на последовательные скорости чтения и записи, нет ничего удивительного в том, что мы наблюдаем разницу между испытуемыми и в этих шаблонах NASPT. Однако разница обнаруживается только в упомянутом случае — все остальные практически равны, поскольку сложных операций дисковой подсистеме здесь выполнять не приходится. Есть и некоторая «межплатформенная» разница, но не слишком большая и присутствующая лишь при сравнении чипсетов AMD и Intel, но не разных чипсетов Intel между собой.
Итого
Количество тестов по сравнению со «стандартной» методикой мы в данном случае сильно сократили, но все равно прогнали их намного больше, чем попало на диаграммы выше. Поэтому мы решили (как обычно) вычислить и общий балл, причем (тоже — как обычно) с нормированием относительно показателей типичного винчестера.
Собственно, для целей статьи хватило бы и одной этой диаграммы — остальные нужны для того, чтобы понять, как она такая получилась Как видите, в любом (даже наихудшем) случае быстрый твердотельный и механический накопители — это два разных непересекающихся мира. (Напомним, что HDD по условиям конкурса выдает ровно 1000 баллов.) А вот при одинаковом накопителе начинает сказываться и контроллер, с учетом режима его работы и конкретного драйвера. Впрочем, в случае чипсетов Intel AHCI-режим есть лишь подмножество RAID (без собственно «массивов»), да и между драйверами особой разницы не наблюдается — ПО Intel можно устанавливать, а можно не устанавливать, по вкусу. В RAID-режиме как минимум драйвер использовать придется, но без этого режима вполне можно обойтись: самый простой и удобный для пользователя (и выбираемый системными платами по умолчанию) режим AHCI со стандартным системным драйвером работает не хуже (и не лучше), так что все остальные нужны только тогда, когда пользователь точно знает, зачем. При этом включение RAID-режима просто «чтобы было» тоже ни к каким проблемам не приведет.
С платформами AMD ситуация немного иная: в данном случае использование RAID-режима, как и ранее, противопоказано. Конечно, если вам действительно нужны дисковые массивы, придется его использовать, невзирая на снижение производительности. Впрочем, подсластить пилюлю помогает то, что установка системного SSD в этом случае все равно оправдана — от винчестера даже таких «порезанных» скоростей невозможно получить и близко. Без насущной же необходимости лучше использовать режим AHCI как минимум (при наличии выбора) для тех портов, куда подключаются высокоскоростные накопители. При этом вполне оправданной является установка собственного драйвера AMD: будет немного быстрее, чем без него. Однако в целом производительность этого варианта все равно немного ниже, чем при использовании чипсетов Intel, так что для нужд тестирования платформа AMD подходит не слишком хорошо. А вот для практического использования (когда твердотельный накопитель используется не для погони за красивыми цифрами, а просто чтобы компьютер быстрее работал) реализация AHCI-режима в чипсетах AMD пригодна без оговорок.
PCI IDE Controller
IDE is a keyword which refers to the electrical specification of the cables which connect ATA drives (like hard drives) to another device. The drives use the ATA (Advanced Technology Attachment) interface. An IDE cable also can terminate at an IDE card connected to PCI.
ATAPI is an extension to ATA (recently renamed to PATA) which adds support for the SCSI command set.
Contents
Parallel/Serial ATA/ATAPI
IDE can connect up to 4 drives. Each drive can be one of the following:
- ATA (Serial): Used for most modern hard drives.
- ATA (Parallel): Commonly used for hard drives.
- ATAPI (Serial): Used for most modern optical drives.
- ATAPI (Parallel): Commonly used for optical drives.
Accessing an ATA/PATA drive works the same way as accessing a SATA drive. This also implicitly states that accessing a PATAPI ODD is the same as accessing a SATAPI ODD. An IDE driver does not need to know whether a drive is parallel or serial, it only has to know whether it’s using ATA or ATAPI.
IDE Interface
If you open your case up and take a look at your motherboard, you will most likely see one or two (or possibly more) of the slots.
The white and green ports are IDE ports, also known as channels. In this example there are both primary and secondary IDE channels which only PATA can be connected to; this means that it only supports PATA/PATAPI drives.
Each port can have a PATA cable connected to it. One master drive, or two drives (master and slave), can be connected to one PATA cable. So that leaves us with the following possibilities:
- Primary Master Drive.
- Primary Slave Drive.
- Secondary Master Drive.
- Secondary Slave Drive.
Each drive can be either PATA or PATAPI.
Serial IDE
Almost every modern (this article is probably written in early 2010 so it assumes motherboards still have ide/ahci modes) motherboard has a Serial IDE channel which allows SATA and SATAPI Drives to be connected to it. There are 4 Serial IDE Ports. Each port is connected to a drive with a SATA Cable. Basically you can only have one drive connected to the Serial IDE port. Each pair of ports (every 2 ports) form one channel.
Serial IDE also has a few possibilities:
- Primary Master, also called SATA1.
- Primary Slave, also called SATA2.
- Secondary Master, also called SATA3.
- Secondary Slave, also called SATA4.
Detecting a PCI IDE Controller
Each IDE controller appears as a device on the PCI bus and can be identified by reading the configuration space. If the class code is 0x01 (Mass Storage Controller) and the subclass code is 0x01 (IDE), the device is an IDE controller. The programming interface byte(Prog If) determines how you’ll access it.
- Bit 0: When set, the primary channel is in PCI native mode. When clear, the primary channel is in compatibility mode (ports 0x1F0-0x1F7, 0x3F6, IRQ14).
- Bit 1: When set, you can modify bit 0 to switch between PCI native and compatibility mode. When clear, you cannot modify bit 0.
- Bit 2: When set, the secondary channel is in PCI native mode. When clear, the secondary channel is in compatibility mode (ports 0x170-0x177, 0x376, IRQ15).
- Bit 3: When set, you can modify bit 2 to switch between PCI native and compatibility mode. When clear, you cannot modify bit 2.
- Bit 7: When set, this is a bus master IDE controller. When clear, this controller doesn’t support DMA.
If you want to access an IDE channel in PCI native mode or use the bus master function, you must additionally read the BARs to find which I/O ports to use.
- BAR0: Base address of primary channel in PCI native mode (8 ports)
- BAR1: Base address of primary channel control port in PCI native mode (4 ports)
- BAR2: Base address of secondary channel in PCI native mode (8 ports)
- BAR3: Base address of secondary channel control port in PCI native mode (4 ports)
- BAR4: Bus master IDE (16 ports, 8 for each channel)
Note that BAR1 and BAR3 specify 4 ports, but only the port at offset 2 is used. Offsets 0, 1, and 3 should not be accessed.
If either IDE channel is in PCI native mode, you must also read the interrupt line or interrupt pin register to determine which interrupt to use. If both channels are in PCI native mode, they’ll both share the same interrupt. The interrupt line field is only valid when using the PIC.
Detecting IDE Drives
To initialise the IDE driver, we call ide_initialise:
If you only want to support the parallel IDE, you can use these parameters:
We can assume that BAR4 is 0x0 because we are not going to use it yet. We will return to ide_initialize, which searches for drives connected to the IDE. Before we go into this function, we should write some support functions and definitions which will help us a lot.
Status
The Command/Status Port returns a bit mask referring to the status of a channel when read.
Errors
The Features/Error Port, which returns the most recent error upon read, has these possible bit masks
Commands
When you write to the Command/Status port, you are executing one of the commands below.
The commands below are for ATAPI devices, which will be understood soon.
ATA_CMD_IDENTIFY_PACKET and ATA_CMD_IDENTIFY return a buffer of 512 bytes called the identification space; the following definitions are used to read information from the identification space.
When you select a drive, you should specify the interface type and whether it is the master or slave:
Task File is a range of 8 ports which are offsets from BAR0 (primary channel) and/or BAR2 (secondary channel). To exemplify:
- BAR0 + 0 is first port.
- BAR0 + 1 is second port.
- BAR0 + 2 is the third
The ALTSTATUS/CONTROL port returns the alternate status when read and controls a channel when written to.
- For the primary channel, ALTSTATUS/CONTROL port is BAR1 + 2.
- For the secondary channel, ALTSTATUS/CONTROL port is BAR3 + 2.
We can now say that each channel has 13 registers. For the primary channel, we use these values:
- Data Register: BAR0 + 0; // Read-Write
- Error Register: BAR0 + 1; // Read Only
- Features Register: BAR0 + 1; // Write Only
- SECCOUNT0: BAR0 + 2; // Read-Write
- LBA0: BAR0 + 3; // Read-Write
- LBA1: BAR0 + 4; // Read-Write
- LBA2: BAR0 + 5; // Read-Write
- HDDEVSEL: BAR0 + 6; // Read-Write, used to select a drive in the channel.
- Command Register: BAR0 + 7; // Write Only.
- Status Register: BAR0 + 7; // Read Only.
- Alternate Status Register: BAR1 + 2; // Read Only.
- Control Register: BAR1 + 2; // Write Only.
- DEVADDRESS: BAR1 + 3; // I don’t know what is the benefit from this register.
The map above is the same with the secondary channel, but it uses BAR2 and BAR3 instead of BAR0 and BAR1.
We have defined everything needed by the driver, now lets move to an important part. We said that
- BAR0 is the start of the I/O ports used by the primary channel.
- BAR1 is the start of the I/O ports which control the primary channel.
- BAR2 is the start of the I/O ports used by secondary channel.
- BAR3 is the start of the I/O ports which control secondary channel.
- BAR4 is the start of 8 I/O ports controls the primary channel’s Bus Master IDE.
- BAR4 + 8 is the Base of 8 I/O ports controls secondary channel’s Bus Master IDE.
So we can make this global structure:
We also need a buffer to read the identification space into, we need a variable that indicates if an irq is invoked or not, and finally we need an array of 6 words [12 bytes] for ATAPI Drives:
We said the the IDE can contain up to 4 drives:
When we read a register in a channel, like STATUS Register, it is easy to execute:
We also need a function for writing to registers:
To read the identification space, we should read the Data Register as a double word 128 times. We can then copy them to our buffer.
When we send a command, we should wait for 400 nanosecond, then read the Status port. If the Busy bit is on, we should read the status port again until the Busy bit is 0; then we can read the results of the command. This operation is called «Polling». We can also use IRQs instead of polling.
After many commands, if the Device Fault bit is set, there is a failure; if DRQ is not set, there is an error. If the ERR bit is set, there is an error which is described in Error port.
If there is an error, we have a function which prints errors on screen:
Now let’s return to the initialization function:
Then we should disable IRQs in both channels by setting bit 1 (nIEN) in the Control port:
Now we need to check for drives which could be connected to each channel. We will select the master drive of each channel, and send the ATA_IDENTIFY command (which is supported by ATA Drives). If there’s no error, there are values returned in registers which determine the type of Drive; if no drive is present, there will be strange values.
Notice that if bit 4 in HDDEVSEL is set to 1, we are selecting the slave drive, if set to 0, we are selecting the master drive.
Read/Write From ATA Drive
Now we’re moving to a slightly more advanced part, it is to read and write from/to an ATA drive. There is 3 ways of addressing a sector:
- CHS (Cylinder-Head-Sector): an old way of addressing sectors in ATA drives, all ATA drives should support this way of addressing.
- LBA28: Accessing a sector by its 28-bit LBA address. All ATA drives should support this way of addressing, the problem with LBA28 Addressing is that it only allows access 128GB to be accessed, so if the disk is bigger than 128GB, it should support the LBA48 Feature Set.
- LBA48: Accessing a sector by its 48-bit LBA address. As we use integers in GCC, our maximum address in this tutorial is 32-bit long, which allows accessing a drive with a size of up to 2TB.
So we can conclude an algorithm to determine which type of Addressing we are going to use:
Reading the buffer may be done by polling or DMA. PIO: After sending the command to read or write sectors, we read or write to the Data Port (as words). This is the same way of reading identification space. DMA: After sending the command, you should wait for an IRQ, while you are waiting, Buffer is written directly to memory automatically.
We are going to use PIO as it is less complex.
We can conclude also this table:
There is something needed to be expressed here, I have told before that Task-File is like that:
- Register 0: [Word] Data Register. (Read-Write).
- Register 1: [Byte] Error Register. (Read).
- Register 1: [Byte] Features Register. (Write).
- Register 2: [Byte] SECCOUNT0 Register. (Read-Write).
- Register 3: [Byte] LBA0 Register. (Read-Write).
- Register 4: [Byte] LBA1 Register. (Read-Write).
- Register 5: [Byte] LBA2 Register. (Read-Write).
- Register 6: [Byte] HDDEVSEL Register. (Read-Write).
- Register 7: [Byte] Command Register. (Write).
- Register 7: [Byte] Status Register. (Read).
So each register between 2 to 5 should be 8-bits long. Really each of them are 16-bits long.
- Register 2: [Bits 0-7] SECCOUNT0, [Bits 8-15] SECOUNT1
- Register 3: [Bits 0-7] LBA0, [Bits 8-15] LBA3
- Register 4: [Bits 0-7] LBA1, [Bits 8-15] LBA4
- Register 5: [Bits 0-7] LBA2, [Bits 8-15] LBA5
The word [(SECCOUNT1 << 8) | SECCOUNT0] expresses the number of sectors which can be read when you access by LBA48. When you access in CHS or LBA28, SECCOUNT0 only expresses number of sectors.
- LBA0 makes up bits 0 : 7 of the LBA address when you read in LBA28 or LBA48; it can also be the sector number of CHS.
- LBA1 makes up bits 8 : 15 of the LBA address when you read in LBA28 or LBA48; it can also be the low byte of the cylinder number of CHS.
- LBA2 makes up bits 16 : 23 of the LBA address when you read in LBA28 or LBA48; it can also be the high byte of the cylinder number of CHS.
- LBA3 makes up bits 24 : 31 of the LBA48 address.
- LBA4 makes up bits 32 : 39 of the LBA48 address.
- LBA5 makes up bits 40 : 47 of LBA48 address.
Notice that the LBA0, 1 and 2 registers are 24 bits long in total, which is not enough for LBA28; the higher 4-bits can be written to the lower 4-bits of the HDDEVSEL register.
Also notice that if bit 6 of this register is set, we are going to use LBA, if not, we are going to use CHS. There is a mode which is called extended CHS.
Lets go into the code:
This function reads/writes sectors from ATA-Drive. If direction is 0 we are reading, else we are writing.
- drive is the drive number which can be from 0 to 3.
- lba is the LBA address which allows us to access disks up to 2TB.
- numsects is the number of sectors to be read, it is a char, as reading more than 256 sector immediately may performance issues. If numsects is 0, the ATA controller will know that we want 256 sectors.
- selector is the segment selector to read from, or write to.
- edi is the offset in that segment. (the memory address for the data buffer)
We don’t need IRQs, so we should disable it to prevent problems from happening. We said before that if bit 1 of the Control Register (which is called nIEN bit), is set, no IRQs will be invoked from any drives on this channel, either master or slave.
Now lets read the parameters:
Now we are going to choose the way of reading the buffer [PIO or DMA]:
Lets poll the Status port while the channel is busy:
The HDDDEVSEL register now looks like this:
- Bits 0 : 3: Head Number for CHS.
- Bit 4: Slave Bit. (0: Selecting Master Drive, 1: Selecting Slave Drive).
- Bit 5: Obsolete and isn’t used, but should be set.
- Bit 6: LBA (0: CHS, 1: LBA).
- Bit 7: Obsolete and isn’t used, but should be set.
Lets write all these information to the register, while the obsolete bits are set (0xA0):
Let’s write the parameters to registers:
If you are using LBA48 and want to write to the LBA0 and LBA3 registers, you should write LBA3 to Register 3, then write LBA0 to Register 3. ide_write function makes it quite simple, refer to the function and you will fully understand the code.
Now, we have a great set of commands described in ATA/ATAPI-8 Specification, we should choose the suitable command to execute:
There isn’t a command for doing CHS with DMA.
This ATA_CMD_READ_PIO command is used for reading in LBA28 or CHS, and the IDE controller refers to bit 6 of the HDDEVSEL register to find out the mode of reading (LBA or CHS).
After sending the command, we should poll, then we read/write a sector, then we should poll, then we read/write a sector, until we read/write all sectors needed, if an error has happened, the function will return a specific error code.
Notice that after writing, we should execute the CACHE FLUSH command, and we should poll after it, but without checking for errors.
Reading from an ATAPI Drive
Let’s move to an easier part — reading from an ATAPI drive. I will not make the function that writes to an ATAPI drive, because writing to it is very complex and is outside of the scope of this tutorial.
An ATAPI drive is different from an ATA drive, as it uses the SCSI command set instead of the ATA command set. Parameters are sent as packets, therefore it’s called the ATA Packet Interface [ATAPI].
Notice also that ATAPI drives always use IRQs and you can’t disable them. We should create a function that waits for an IRQ:
When an IRQ happens, the following function should be executed by ISR:
ide_wait_irq will go into a while loop, which waits for the variable ide_irq_invoked to be set, then clears it.
- drive is the drive number, which is from 0 to 3.
- lba is the LBA address.
- numsects is the number of sectors. It should always be 1, and if you want to read more than one sector, re-execute this function with th updated LBA address.
- selector is the Segment Selector.
- edi is the offset in the selector.
Let’s read the parameters of the drive:
Let’s setup the SCSI Packet, which is 6 words (12 bytes) long:
Now we should select the drive:
400 nanoseconds delay after this select is a good idea:
Tell the controller the size of the buffer
Now that we want to send the packet, we should first send the command «Packet»:
Here we cannot poll. We should wait for an IRQ, then read the sectors. These two operations should be repeated for each sector.
Now we should wait for an IRQ and poll until the Busy and DRQ bits are clear:
PCI IDE Controller
IDE is a keyword which refers to the electrical specification of the cables which connect ATA drives (like hard drives) to another device. The drives use the ATA (Advanced Technology Attachment) interface. An IDE cable also can terminate at an IDE card connected to PCI.
ATAPI is an extension to ATA (recently renamed to PATA) which adds support for the SCSI command set.
Contents
Parallel/Serial ATA/ATAPI
IDE can connect up to 4 drives. Each drive can be one of the following:
- ATA (Serial): Used for most modern hard drives.
- ATA (Parallel): Commonly used for hard drives.
- ATAPI (Serial): Used for most modern optical drives.
- ATAPI (Parallel): Commonly used for optical drives.
Accessing an ATA/PATA drive works the same way as accessing a SATA drive. This also implicitly states that accessing a PATAPI ODD is the same as accessing a SATAPI ODD. An IDE driver does not need to know whether a drive is parallel or serial, it only has to know whether it’s using ATA or ATAPI.
IDE Interface
If you open your case up and take a look at your motherboard, you will most likely see one or two (or possibly more) of the slots.
The white and green ports are IDE ports, also known as channels. In this example there are both primary and secondary IDE channels which only PATA can be connected to; this means that it only supports PATA/PATAPI drives.
Each port can have a PATA cable connected to it. One master drive, or two drives (master and slave), can be connected to one PATA cable. So that leaves us with the following possibilities:
- Primary Master Drive.
- Primary Slave Drive.
- Secondary Master Drive.
- Secondary Slave Drive.
Each drive can be either PATA or PATAPI.
Serial IDE
Almost every modern (this article is probably written in early 2010 so it assumes motherboards still have ide/ahci modes) motherboard has a Serial IDE channel which allows SATA and SATAPI Drives to be connected to it. There are 4 Serial IDE Ports. Each port is connected to a drive with a SATA Cable. Basically you can only have one drive connected to the Serial IDE port. Each pair of ports (every 2 ports) form one channel.
Serial IDE also has a few possibilities:
- Primary Master, also called SATA1.
- Primary Slave, also called SATA2.
- Secondary Master, also called SATA3.
- Secondary Slave, also called SATA4.
Detecting a PCI IDE Controller
Each IDE controller appears as a device on the PCI bus and can be identified by reading the configuration space. If the class code is 0x01 (Mass Storage Controller) and the subclass code is 0x01 (IDE), the device is an IDE controller. The programming interface byte(Prog If) determines how you’ll access it.
- Bit 0: When set, the primary channel is in PCI native mode. When clear, the primary channel is in compatibility mode (ports 0x1F0-0x1F7, 0x3F6, IRQ14).
- Bit 1: When set, you can modify bit 0 to switch between PCI native and compatibility mode. When clear, you cannot modify bit 0.
- Bit 2: When set, the secondary channel is in PCI native mode. When clear, the secondary channel is in compatibility mode (ports 0x170-0x177, 0x376, IRQ15).
- Bit 3: When set, you can modify bit 2 to switch between PCI native and compatibility mode. When clear, you cannot modify bit 2.
- Bit 7: When set, this is a bus master IDE controller. When clear, this controller doesn’t support DMA.
If you want to access an IDE channel in PCI native mode or use the bus master function, you must additionally read the BARs to find which I/O ports to use.
- BAR0: Base address of primary channel in PCI native mode (8 ports)
- BAR1: Base address of primary channel control port in PCI native mode (4 ports)
- BAR2: Base address of secondary channel in PCI native mode (8 ports)
- BAR3: Base address of secondary channel control port in PCI native mode (4 ports)
- BAR4: Bus master IDE (16 ports, 8 for each channel)
Note that BAR1 and BAR3 specify 4 ports, but only the port at offset 2 is used. Offsets 0, 1, and 3 should not be accessed.
If either IDE channel is in PCI native mode, you must also read the interrupt line or interrupt pin register to determine which interrupt to use. If both channels are in PCI native mode, they’ll both share the same interrupt. The interrupt line field is only valid when using the PIC.
Detecting IDE Drives
To initialise the IDE driver, we call ide_initialise:
If you only want to support the parallel IDE, you can use these parameters:
We can assume that BAR4 is 0x0 because we are not going to use it yet. We will return to ide_initialize, which searches for drives connected to the IDE. Before we go into this function, we should write some support functions and definitions which will help us a lot.
Status
The Command/Status Port returns a bit mask referring to the status of a channel when read.
Errors
The Features/Error Port, which returns the most recent error upon read, has these possible bit masks
Commands
When you write to the Command/Status port, you are executing one of the commands below.
The commands below are for ATAPI devices, which will be understood soon.
ATA_CMD_IDENTIFY_PACKET and ATA_CMD_IDENTIFY return a buffer of 512 bytes called the identification space; the following definitions are used to read information from the identification space.
When you select a drive, you should specify the interface type and whether it is the master or slave:
Task File is a range of 8 ports which are offsets from BAR0 (primary channel) and/or BAR2 (secondary channel). To exemplify:
- BAR0 + 0 is first port.
- BAR0 + 1 is second port.
- BAR0 + 2 is the third
The ALTSTATUS/CONTROL port returns the alternate status when read and controls a channel when written to.
- For the primary channel, ALTSTATUS/CONTROL port is BAR1 + 2.
- For the secondary channel, ALTSTATUS/CONTROL port is BAR3 + 2.
We can now say that each channel has 13 registers. For the primary channel, we use these values:
- Data Register: BAR0 + 0; // Read-Write
- Error Register: BAR0 + 1; // Read Only
- Features Register: BAR0 + 1; // Write Only
- SECCOUNT0: BAR0 + 2; // Read-Write
- LBA0: BAR0 + 3; // Read-Write
- LBA1: BAR0 + 4; // Read-Write
- LBA2: BAR0 + 5; // Read-Write
- HDDEVSEL: BAR0 + 6; // Read-Write, used to select a drive in the channel.
- Command Register: BAR0 + 7; // Write Only.
- Status Register: BAR0 + 7; // Read Only.
- Alternate Status Register: BAR1 + 2; // Read Only.
- Control Register: BAR1 + 2; // Write Only.
- DEVADDRESS: BAR1 + 3; // I don’t know what is the benefit from this register.
The map above is the same with the secondary channel, but it uses BAR2 and BAR3 instead of BAR0 and BAR1.
We have defined everything needed by the driver, now lets move to an important part. We said that
- BAR0 is the start of the I/O ports used by the primary channel.
- BAR1 is the start of the I/O ports which control the primary channel.
- BAR2 is the start of the I/O ports used by secondary channel.
- BAR3 is the start of the I/O ports which control secondary channel.
- BAR4 is the start of 8 I/O ports controls the primary channel’s Bus Master IDE.
- BAR4 + 8 is the Base of 8 I/O ports controls secondary channel’s Bus Master IDE.
So we can make this global structure:
We also need a buffer to read the identification space into, we need a variable that indicates if an irq is invoked or not, and finally we need an array of 6 words [12 bytes] for ATAPI Drives:
We said the the IDE can contain up to 4 drives:
When we read a register in a channel, like STATUS Register, it is easy to execute:
We also need a function for writing to registers:
To read the identification space, we should read the Data Register as a double word 128 times. We can then copy them to our buffer.
When we send a command, we should wait for 400 nanosecond, then read the Status port. If the Busy bit is on, we should read the status port again until the Busy bit is 0; then we can read the results of the command. This operation is called «Polling». We can also use IRQs instead of polling.
After many commands, if the Device Fault bit is set, there is a failure; if DRQ is not set, there is an error. If the ERR bit is set, there is an error which is described in Error port.
If there is an error, we have a function which prints errors on screen:
Now let’s return to the initialization function:
Then we should disable IRQs in both channels by setting bit 1 (nIEN) in the Control port:
Now we need to check for drives which could be connected to each channel. We will select the master drive of each channel, and send the ATA_IDENTIFY command (which is supported by ATA Drives). If there’s no error, there are values returned in registers which determine the type of Drive; if no drive is present, there will be strange values.
Notice that if bit 4 in HDDEVSEL is set to 1, we are selecting the slave drive, if set to 0, we are selecting the master drive.
Read/Write From ATA Drive
Now we’re moving to a slightly more advanced part, it is to read and write from/to an ATA drive. There is 3 ways of addressing a sector:
- CHS (Cylinder-Head-Sector): an old way of addressing sectors in ATA drives, all ATA drives should support this way of addressing.
- LBA28: Accessing a sector by its 28-bit LBA address. All ATA drives should support this way of addressing, the problem with LBA28 Addressing is that it only allows access 128GB to be accessed, so if the disk is bigger than 128GB, it should support the LBA48 Feature Set.
- LBA48: Accessing a sector by its 48-bit LBA address. As we use integers in GCC, our maximum address in this tutorial is 32-bit long, which allows accessing a drive with a size of up to 2TB.
So we can conclude an algorithm to determine which type of Addressing we are going to use:
Reading the buffer may be done by polling or DMA. PIO: After sending the command to read or write sectors, we read or write to the Data Port (as words). This is the same way of reading identification space. DMA: After sending the command, you should wait for an IRQ, while you are waiting, Buffer is written directly to memory automatically.
We are going to use PIO as it is less complex.
We can conclude also this table:
There is something needed to be expressed here, I have told before that Task-File is like that:
- Register 0: [Word] Data Register. (Read-Write).
- Register 1: [Byte] Error Register. (Read).
- Register 1: [Byte] Features Register. (Write).
- Register 2: [Byte] SECCOUNT0 Register. (Read-Write).
- Register 3: [Byte] LBA0 Register. (Read-Write).
- Register 4: [Byte] LBA1 Register. (Read-Write).
- Register 5: [Byte] LBA2 Register. (Read-Write).
- Register 6: [Byte] HDDEVSEL Register. (Read-Write).
- Register 7: [Byte] Command Register. (Write).
- Register 7: [Byte] Status Register. (Read).
So each register between 2 to 5 should be 8-bits long. Really each of them are 16-bits long.
- Register 2: [Bits 0-7] SECCOUNT0, [Bits 8-15] SECOUNT1
- Register 3: [Bits 0-7] LBA0, [Bits 8-15] LBA3
- Register 4: [Bits 0-7] LBA1, [Bits 8-15] LBA4
- Register 5: [Bits 0-7] LBA2, [Bits 8-15] LBA5
The word [(SECCOUNT1 << 8) | SECCOUNT0] expresses the number of sectors which can be read when you access by LBA48. When you access in CHS or LBA28, SECCOUNT0 only expresses number of sectors.
- LBA0 makes up bits 0 : 7 of the LBA address when you read in LBA28 or LBA48; it can also be the sector number of CHS.
- LBA1 makes up bits 8 : 15 of the LBA address when you read in LBA28 or LBA48; it can also be the low byte of the cylinder number of CHS.
- LBA2 makes up bits 16 : 23 of the LBA address when you read in LBA28 or LBA48; it can also be the high byte of the cylinder number of CHS.
- LBA3 makes up bits 24 : 31 of the LBA48 address.
- LBA4 makes up bits 32 : 39 of the LBA48 address.
- LBA5 makes up bits 40 : 47 of LBA48 address.
Notice that the LBA0, 1 and 2 registers are 24 bits long in total, which is not enough for LBA28; the higher 4-bits can be written to the lower 4-bits of the HDDEVSEL register.
Also notice that if bit 6 of this register is set, we are going to use LBA, if not, we are going to use CHS. There is a mode which is called extended CHS.
Lets go into the code:
This function reads/writes sectors from ATA-Drive. If direction is 0 we are reading, else we are writing.
- drive is the drive number which can be from 0 to 3.
- lba is the LBA address which allows us to access disks up to 2TB.
- numsects is the number of sectors to be read, it is a char, as reading more than 256 sector immediately may performance issues. If numsects is 0, the ATA controller will know that we want 256 sectors.
- selector is the segment selector to read from, or write to.
- edi is the offset in that segment. (the memory address for the data buffer)
We don’t need IRQs, so we should disable it to prevent problems from happening. We said before that if bit 1 of the Control Register (which is called nIEN bit), is set, no IRQs will be invoked from any drives on this channel, either master or slave.
Now lets read the parameters:
Now we are going to choose the way of reading the buffer [PIO or DMA]:
Lets poll the Status port while the channel is busy:
The HDDDEVSEL register now looks like this:
- Bits 0 : 3: Head Number for CHS.
- Bit 4: Slave Bit. (0: Selecting Master Drive, 1: Selecting Slave Drive).
- Bit 5: Obsolete and isn’t used, but should be set.
- Bit 6: LBA (0: CHS, 1: LBA).
- Bit 7: Obsolete and isn’t used, but should be set.
Lets write all these information to the register, while the obsolete bits are set (0xA0):
Let’s write the parameters to registers:
If you are using LBA48 and want to write to the LBA0 and LBA3 registers, you should write LBA3 to Register 3, then write LBA0 to Register 3. ide_write function makes it quite simple, refer to the function and you will fully understand the code.
Now, we have a great set of commands described in ATA/ATAPI-8 Specification, we should choose the suitable command to execute:
There isn’t a command for doing CHS with DMA.
This ATA_CMD_READ_PIO command is used for reading in LBA28 or CHS, and the IDE controller refers to bit 6 of the HDDEVSEL register to find out the mode of reading (LBA or CHS).
After sending the command, we should poll, then we read/write a sector, then we should poll, then we read/write a sector, until we read/write all sectors needed, if an error has happened, the function will return a specific error code.
Notice that after writing, we should execute the CACHE FLUSH command, and we should poll after it, but without checking for errors.
Reading from an ATAPI Drive
Let’s move to an easier part — reading from an ATAPI drive. I will not make the function that writes to an ATAPI drive, because writing to it is very complex and is outside of the scope of this tutorial.
An ATAPI drive is different from an ATA drive, as it uses the SCSI command set instead of the ATA command set. Parameters are sent as packets, therefore it’s called the ATA Packet Interface [ATAPI].
Notice also that ATAPI drives always use IRQs and you can’t disable them. We should create a function that waits for an IRQ:
When an IRQ happens, the following function should be executed by ISR:
ide_wait_irq will go into a while loop, which waits for the variable ide_irq_invoked to be set, then clears it.
- drive is the drive number, which is from 0 to 3.
- lba is the LBA address.
- numsects is the number of sectors. It should always be 1, and if you want to read more than one sector, re-execute this function with th updated LBA address.
- selector is the Segment Selector.
- edi is the offset in the selector.
Let’s read the parameters of the drive:
Let’s setup the SCSI Packet, which is 6 words (12 bytes) long:
Now we should select the drive:
400 nanoseconds delay after this select is a good idea:
Tell the controller the size of the buffer
Now that we want to send the packet, we should first send the command «Packet»:
Here we cannot poll. We should wait for an IRQ, then read the sectors. These two operations should be repeated for each sector.
Now we should wait for an IRQ and poll until the Busy and DRQ bits are clear:
Стандартный двухканальный контроллер pci ide что это
Ядром практически каждого компьютера является материнская плата. Каждое устройство, к которому компьютер обращается, должно быть подключено к материнской плате. Для таких устройств, как оптические приводы или жесткие диски, часто используется электронное оборудование встроенного привода для выполнения этого подключения. Если в системе недостаточно доступных каналов IDE для подключения всех необходимых устройств, можно использовать стандартный двухканальный контроллер IDE с интерфейсом периферийных компонентов.
Крупный план материнской платы компьютера со слотом PCI: Eray Haciosmanoglu / Hemera / Getty Images
использование
Стандартный двухканальный контроллер PCI IDE представляет собой плату, установленную в слот расширения PCI материнской платы, предоставляя место для дополнительных подключений устройств IDE. Двойной канал относится к двум портам на карте, каждый из которых работает по отдельному каналу. Поскольку IDE может поддерживать два устройства на канал или кабель, одноканальный контроллер IDE может обеспечить подключение до четырех дополнительных IDE-совместимых устройств.
Совместимость
Стандартные двухканальные контроллеры PCI IDE широко совместимы практически с любым компьютером, который может поддерживать устройства PCI. В то время как некоторые модели контроллеров IDE могут иметь несколько специфических требований, большинство современных машин не должно иметь проблем с соответствием этим спецификациям. Для устройств, подключающихся к контроллеру, если они совместимы с IDE, они должны работать с каждым контроллером IDE. Хотя IDE не так часто встречается, как это было раньше, на момент написания этой статьи она все еще была доступна на новых оптических дисках и жестких дисках. Зачастую современные IDE-совместимые устройства продаются как PATA или Parallel ATA. Нет никакой разницы между приводами PATA и IDE, и оба совместимы со стандартными контроллерами IDE.
Монтаж
Установка контроллера IDE PCI ничем не отличается от установки любого другого устройства PCI в настольный компьютер. Компьютер должен быть полностью выключен и отключен перед тем, как его открыть, и следует использовать антистатическое разрядное устройство для предотвращения повреждения или разрушения электрических компонентов компьютера, таких как материнская плата, от ударной травмы. Контроллер IDE устанавливается путем выравнивания его со слотом PCI и аккуратно, но твердо, толкая его на место. Плата контроллера IDE не должна быть взломана или встряхнута, так как это может повредить как плату, так и материнскую плату. После надежной установки устройства IDE можно подключить, а компьютер собрать и снова включить.
Предупреждение
Некоторые контроллеры PCI IDE требуют, чтобы дополнительные драйверы были установлены до того, как контроллер — и подключенные устройства — могут быть распознаны и использованы. Обратитесь к инструкциям для вашей карты контроллера для конкретных инструкций. На устройствах IDE также должны быть правильно установлены перемычки, чтобы их можно было использовать. Перемычка на устройстве IDE расположена сзади рядом с разъемом IDE. Различные положения перемычек обычно печатаются на этикетке жесткого диска. Когда два устройства подключены к одному и тому же каналу, что означает, что они используют один и тот же кабель, одно должно быть установлено на «ведущий», а другое на «ведомый». Новые накопители, как правило, поставляются с возможностью обнаружения и назначения себя с помощью настройки «выбор кабеля». Если устройства, подключенные к одному и тому же каналу, недоступны компьютеру, вам необходимо установить перемычку вручную.
Стандартный двухканальный контроллер PCI IDE — что это и зачем это?
Недавно покупали компьютер в достаточно крупном компьютерном магазине, и оказалось, что у них остался только один компьютер с материнской платой, на которой есть IDE-разъем! Все остальные системники не были оснащены материнскими платами с данным интерфейсом. Теперь о том, как подключить старый IDE жесткий диск к новому компьютеру.
На IDE — интерфейсе работали все персональные компьютеры последние двадцать лет. Ими были снабжены все материнские платы. На каждой материнской плате раньше было два таких разъема — Primary IDE и Secondary IDE. К каждому из разъемов можно было подключить до двух устройств с порядками Master и Slave, которые устанавливались с помощью перемычек — джамперов на устройствах. Это могли быть жесткие диски и CD/DVD приводы.
Мы покупали новый компьютер и хотели, чтобы к нему можно было подключить два жестких диска с IDE-разъемами. Проблема была в том, что у всех новых компьютеров разъем IDE отсутствовал напрочь. Нам очень повезло. Мы зашли к какому-то товарищу, торгующему комплектующими для ПК, у которого остался один последний двухканальный cтандартный контроллер PCI IDE.
Дальше вопрос, как подключить IDE жесткие диски к новому компьютеру, стал делом техники. PCI IDE controller вставили в PCI-слот — неожиданно, правда? В IDE разъемы PCI IDE контроллера вставили шлейфы от жестких дисков и подключили питание. Поставили новую систему на родной SATA диск системника — и вуаля! Всё работает!
PCI — это шина периферийных компонентов. То есть, фактически это сеть разъемов на материнке, которые предназначены для установки плат расширения (ТВ-тюнер, видеокарта и тп) . Конечно есть IDE-контроллеры (внешние) которые подключаются в PCI, но врядли вы имели это ввиду
IDE — это тип разъема для передачи данных. Выглядит он как прямоугольник 40*2 контактов, применяется только в дисководах, жестких дисках и сидиромах (и то старых) , то есть к PCI вообще никакого отношения нету.
USB — это протокол передачи данных посредством последовательной шины USB, за это отвечает отдельный микроконтроллер НА МАТЕРИНКЕ, КОТОРЫЙ НИКАК НЕ СВЯЗАН С PCI-СЛОТАМИ ИЛИ СЕВЕРНЫМ МОСТОМ (ide и sata разъемы) . Поэтому в литературном переводе ваш вопрос звучит как-то так: