Включение режима ahci для разных версий windows

Содержание:

Стабильная и быстрая работа любого компьютера зависит от многих факторов, влияющих на производительность отдельных компонентов. Одним из таких факторов является режим работы интерфейса SATA, который отвечает за весь процесс передачи данных с жестких дисков.

Современные технологии не стоят на месте, а постоянно развиваются, что приводит к некоторым конфликтам, способным возникать внутри компьютера.

Для примера следует привести некорректную работу SSD накопителя, подключенного через интерфейс SATA, запущенного в режиме IDE – устаревшем режиме работы интерфейса SATA, который не способен раскрывать потенциал современных более скоростных накопителей. Данный конфликт возможен из-за того, что производители современных материнских плат оставляют своим пользователям возможность корректной работы со старыми носителями без поддержки AHCI.

Стоит отметить, что в большинстве современных плат уже выставлен режим AHCI по умолчанию, но подобная проблема может случится при установке более современного SSD на старую плату или приобретении материнской карты с рук, где был установлен IDE режим работы.

Как включить AHCI в Windows 10 после установки

Текущие MOBO (материнские платы) по умолчанию имеют включенный AHCI в UEFI или BIOS . На некоторых старых материнских платах по умолчанию может быть включена IDE . Если вы хотите установить Windows, используя AHCI вместо IDE, вам нужно сначала включить AHCI в BIOS/UEFI. Если вы уже установили Windows 10 с IDE, но хотите режим AHCI, то этот пост поможет вам.

Что такое IDE?

Интегрированная среда разработки (IDE) — это программное приложение, которое предоставляет компьютерным программистам широкие возможности для разработки программного обеспечения. Среда IDE обычно состоит по крайней мере из редактора исходного кода, средств автоматизации сборки и отладчика. Некоторые IDE , такие как NetBeans и Eclipse , содержат необходимый компилятор, интерпретатор или оба; другие, такие как SharpDevelop и Lazarus, этого не делают. IDE иногда называют средами разработки программ (PDE).

Граница между IDE и другими частями более широкой среды разработки программного обеспечения не является четко определенной; иногда интегрируются система контроля версий или различные инструменты для упрощения построения графического интерфейса пользователя (GUI). Многие современные IDE также имеют браузер классов, браузер объектов и диаграмму иерархии классов для использования в объектно-ориентированной разработке программного обеспечения.

Разница между AHCI и IDE

AHCI и IDE — это два режима, в которых жесткий диск обменивается данными с остальной частью компьютерной системы с помощью контроллера памяти SATA. Жесткие диски SATA могут работать в обратно совместимом режиме PATA / IDE, в стандартном режиме AHCI или в зависимости от производителя RAID.

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

AHCI поддерживает некоторые важные новые функции, которые не поддерживает IDE, такие как встроенная организация очереди и горячее подключение жестких дисков. Он также предлагает улучшение производительности (скорость) по сравнению с IDE.

Включить AHCI в Windows 10 после установки

Примечание: Вы должны войти в систему как администратор, чтобы иметь возможность включить AHCI после установки Windows.

Нажмите Windows + R, в диалоговом окне «Выполнить» введите regedit , нажмите Enter, чтобы запустить редактор реестра.

На левой панели редактора реестра перейдите к расположению

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\iaStorV

На правой панели дважды щелкните значок Start DWORD, чтобы изменить его. В появившемся окне введите 0 в поле Значение. Нажмите ОК.

Снова, на левой панели редактора реестра, перейдите к расположению

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\iaStorAVC\StartOverride

На правой панели дважды щелкните 0 DWORD, чтобы изменить его. В появившемся окне введите 0 в поле Значение. Нажмите ОК.

Теперь на левой панели редактора реестра перейдите к расположению

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storahci

На правой панели дважды щелкните Start DWORD, чтобы изменить его. В появившемся окне введите 0 в поле Значение. Нажмите ОК.

Все еще на левой панели редактора реестра, перейдите к расположению

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storahci\StartOverride

Проверьте, есть ли у вас StartOverride.

Если папка StartOveride отсутствует, закройте редактор реестра.

Но если папка присутствует, как показано выше на скриншоте, на правой панели дважды щелкните 0 DWORD, чтобы изменить ее. В появившемся окне введите 0 в поле Значение. Нажмите ОК.

Теперь перейдите к загрузке компьютера с настройками прошивки BIOS или UEFI.

В настройках прошивки BIOS или UEFI включите AHCI и сохраните и выйдите, чтобы применить и перезагрузить компьютер.

Примечание. Настройки будут различаться в зависимости от марки и номера модели материнской платы. Обратитесь к руководству по материнской плате для более подробной информации о том, как изменить настройки SATA для него.

При загрузке Windows автоматически установит драйверы AHCI.

Когда установка драйверов завершится, вы получите запрос на перезагрузку.

Перезагрузите компьютер, и все готово.

Что такое ACHI, как проверить и включить режим на Windows 10

Включение режима AHCI для SATA накопителей позволяет задействовать технологию NCQ (Native Command Queing), DIPM (Device Initiated Power Management), а также позволяет проводить горячую замену накопителей. Все эти функции обычно уже включены по умолчанию в предустановленных системах. Они позволяют повысить производительность и скорость обмена информацией, особенно это актуально для твердотельных накопителей, для которых еще и уменьшается потребление энергии.

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

Проверяем, включен ли режим AHCI

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

Еще пользователь может открыть свойства диска в этом же диспетчере и найти нужную информацию там.

Второй способ потребует перезапуска компьютера. Для начала, пользователю потребуется зайти в bios/uefi, а потом перейти к параметрам sata, здесь и будет отображена нужная информация.

Используем редактор реестра для включения режима

В случае если выбран не тот режим, который нужен пользователю, изменить его можно через редактор реестра, при этом требуется, чтобы запись пользователя обладала правами администратора. Для начала необходимо нажать win+r и написать regedit в открывшемся окне.

После чего откроется нужная утилита, в которой можно редактировать реестр, в левой ее части, переходя по папкам, придется проделать такой путь: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\iaStorV.

В последней директории нужно найти переменную start и выставить ее значение равным нулю.

  Права администратора в Windows

Теперь, в этой же директории, потребуется открыть папку с именем StartOverride, в ней должна находиться переменная 0, значение которой также следует поставить равным нолю.

После того, как переменная будет изменена, следует пройти в директорию HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storahci. Здесь, также требуется отыскать переменную Start и поставить ей значение равное 0.

Здесь же следует зайти в каталог StartOverride, и поставить значение переменно 0 равное нолю.

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

Использование командной строки

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

  • bcdedit /set {current} safeboot minimal . После выполнения команды потребуется перезагрузить компьютер и выставить в биосе ahci.
  • bcdedit /deletevalue {current} safeboot . Эту команду надо будет ввести при следующем старте системы и после нее снова перезапустить устройтсво.

Последняя команда перезагружает компьютер в безопасном режиме, так что тоже самое можно сделать и по другому. Можно нажать win+r и набрать msconfig, здесь перейти на вкладку загрузки  и поставить галочку в безопасном режиме.

Включение AHCI в БИОСе

Тут чуть подробнее о том, где именно находится настройка, которую следует включить. Чтобы попасть в эти настройки нужно нажимать del или f2 при запуске компьютера. В uefi нужные настройки находятся на вкладке Integrated Peripherals и называется SATA Mode или Type.

  Как пользоваться программой HDDScan

В БИОСе же нужный параметр обычно находится на вкладке advanced.

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

Как включить AHCI в Windows 10 после установки

Текущие MOBO (материнские платы) по умолчанию имеют включенный AHCI в UEFI или BIOS . На некоторых старых материнских платах по умолчанию может быть включена IDE . Если вы хотите установить Windows, используя AHCI вместо IDE, вам нужно сначала включить AHCI в BIOS/UEFI. Если вы уже установили Windows 10 с IDE, но хотите режим AHCI, то этот пост поможет вам.

Что такое IDE?

Интегрированная среда разработки (IDE) — это программное приложение, которое предоставляет компьютерным программистам широкие возможности для разработки программного обеспечения. Среда IDE обычно состоит по крайней мере из редактора исходного кода, средств автоматизации сборки и отладчика. Некоторые IDE , такие как NetBeans и Eclipse , содержат необходимый компилятор, интерпретатор или оба; другие, такие как SharpDevelop и Lazarus, этого не делают. IDE иногда называют средами разработки программ (PDE).

Граница между IDE и другими частями более широкой среды разработки программного обеспечения не является четко определенной; иногда интегрируются система контроля версий или различные инструменты для упрощения построения графического интерфейса пользователя (GUI). Многие современные IDE также имеют браузер классов, браузер объектов и диаграмму иерархии классов для использования в объектно-ориентированной разработке программного обеспечения.

Разница между AHCI и IDE

AHCI и IDE — это два режима, в которых жесткий диск обменивается данными с остальной частью компьютерной системы с помощью контроллера памяти SATA. Жесткие диски SATA могут работать в обратно совместимом режиме PATA / IDE, в стандартном режиме AHCI или в зависимости от производителя RAID.

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

AHCI поддерживает некоторые важные новые функции, которые не поддерживает IDE, такие как встроенная организация очереди и горячее подключение жестких дисков. Он также предлагает улучшение производительности (скорость) по сравнению с IDE.

Включить AHCI в Windows 10 после установки

Примечание: Вы должны войти в систему как администратор, чтобы иметь возможность включить AHCI после установки Windows.

Нажмите Windows + R, в диалоговом окне «Выполнить» введите regedit , нажмите Enter, чтобы запустить редактор реестра.

На левой панели редактора реестра перейдите к расположению

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\iaStorV

На правой панели дважды щелкните значок Start DWORD, чтобы изменить его. В появившемся окне введите 0 в поле Значение. Нажмите ОК.

Снова, на левой панели редактора реестра, перейдите к расположению

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\iaStorAVC\StartOverride

На правой панели дважды щелкните 0 DWORD, чтобы изменить его. В появившемся окне введите 0 в поле Значение. Нажмите ОК.

Теперь на левой панели редактора реестра перейдите к расположению

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storahci

На правой панели дважды щелкните Start DWORD, чтобы изменить его. В появившемся окне введите 0 в поле Значение. Нажмите ОК.

Все еще на левой панели редактора реестра, перейдите к расположению

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storahci\StartOverride

Проверьте, есть ли у вас StartOverride.

Если папка StartOveride отсутствует, закройте редактор реестра.

Но если папка присутствует, как показано выше на скриншоте, на правой панели дважды щелкните 0 DWORD, чтобы изменить ее. В появившемся окне введите 0 в поле Значение. Нажмите ОК.

Теперь перейдите к загрузке компьютера с настройками прошивки BIOS или UEFI.

В настройках прошивки BIOS или UEFI включите AHCI и сохраните и выйдите, чтобы применить и перезагрузить компьютер.

Примечание. Настройки будут различаться в зависимости от марки и номера модели материнской платы. Обратитесь к руководству по материнской плате для более подробной информации о том, как изменить настройки SATA для него.

При загрузке Windows автоматически установит драйверы AHCI.

Когда установка драйверов завершится, вы получите запрос на перезагрузку.

Перезагрузите компьютер, и все готово.

Detect attached SATA devices

1) Which port is device attached

As specified in the AHCI specification, firmware (BIOS) should initialize the AHCI controller into a minimal workable state. OS usually needn’t reinitialize it from the bottom. Much information is already there when the OS boots.

The Port Implemented register (HBA_MEM.pi) is a 32 bit value and each bit represents a port. If the bit is set, the according port has a device attached, otherwise the port is free.

2) What kind of device is attached

There are four kinds of SATA devices, and their signatures are defined as below. The Port Signature register (HBA_PORT.sig) contains the device signature, just read this register to find which kind of device is attached at the port. Some buggy AHCI controllers may not set the Signature register correctly. The most reliable way is to judge from the Identify data read back from the device.

#define	SATA_SIG_ATA	0x00000101	// SATA drive
#define	SATA_SIG_ATAPI	0xEB140101	// SATAPI drive
#define	SATA_SIG_SEMB	0xC33C0101	// Enclosure management bridge
#define	SATA_SIG_PM	0x96690101	// Port multiplier
 
#define AHCI_DEV_NULL 0
#define AHCI_DEV_SATA 1
#define AHCI_DEV_SEMB 2
#define AHCI_DEV_PM 3
#define AHCI_DEV_SATAPI 4
 
#define HBA_PORT_IPM_ACTIVE 1
#define HBA_PORT_DET_PRESENT 3
 
void probe_port(HBA_MEM *abar)
{
	// Search disk in implemented ports
	uint32_t pi = abar->pi;
	int i = ;
	while (i<32)
	{
		if (pi & 1)
		{
			int dt = check_type(&abar->portsi);
			if (dt == AHCI_DEV_SATA)
			{
				trace_ahci("SATA drive found at port %d\n", i);
			}
			else if (dt == AHCI_DEV_SATAPI)
			{
				trace_ahci("SATAPI drive found at port %d\n", i);
			}
			else if (dt == AHCI_DEV_SEMB)
			{
				trace_ahci("SEMB drive found at port %d\n", i);
			}
			else if (dt == AHCI_DEV_PM)
			{
				trace_ahci("PM drive found at port %d\n", i);
			}
			else
			{
				trace_ahci("No drive found at port %d\n", i);
			}
		}
 
		pi >>= 1;
		i ++;
	}
}
 
// Check device type
static int check_type(HBA_PORT *port)
{
	uint32_t ssts = port->ssts;
 
	uint8_t ipm = (ssts >> 8) & 0x0F;
	uint8_t det = ssts & 0x0F;
 
	if (det != HBA_PORT_DET_PRESENT)	// Check drive status
		return AHCI_DEV_NULL;
	if (ipm != HBA_PORT_IPM_ACTIVE)
		return AHCI_DEV_NULL;
 
	switch (port->sig)
	{
	case SATA_SIG_ATAPI
		return AHCI_DEV_SATAPI;
	case SATA_SIG_SEMB
		return AHCI_DEV_SEMB;
	case SATA_SIG_PM
		return AHCI_DEV_PM;
	default
		return AHCI_DEV_SATA;
	}
}

How to Manage Your Multiple Drives on Windows 10 PC

Some users concern the performance will be affected when adding a new drive. Some other people worry the Windows system won’t boot once convert RAID to AHCI. For these questions, you just need a powerful software to manage the multiple drives.

MiniTool Partition Wizard Pro-Ultimate and Server Edition provides you with effective solutions to manage your RAID partition including copy volume, move/resize volume, format partition, etc. With this tool, you don’t have to worry about the system boot issue and performance. Here we take the copy volume feature for example.

Step 1. Open this program to get its main interface, and then select the volume that you want to copy and click on the Copy Partition feature on the left pane.

Step 2. Then select the target volume that you want a copy to and click the Next to continue.

Note: The data on the target volume will be destroyed, please make sure the important data has been backed up in advance.

Step 3. Now, you can specify the destination volume based on your demands. After that, click on Finish to confirm.

Step 4. Click on Apply to execute this operation.

Комментарии

2011.04.27 10:54:39 #cid2287

Есть ли возможность посмотреть в ubuntu в каком режиме работает винт? (в биосе нет настроек). И как включить AHCI режим?

2011.04.27 15:49:17 #cid2290

Не винт, контроллер.

dmesg | grep NCQ

ata1.00

: 976773168 sectors, multi 0: LBA48NCQ (depth 31/32)

В убунте NCQ (Native Command Queuing) для устройств с AHCI должен включаться автоматически.

Обычно такое бывает с компьютерами «Vista Ready». Режим AHCI включен по умолчанию, настройка из биоса убрана. Сделано для того, чтобы обычный пользователь не смог установить ХР (в её инсталляторе нет нужных драйверов, а в стандартный IDE мы переключиться не можем).

Результат сговора микрософта с производителями.

В данном случае он, скорее всего, уже включен.

Дмитрий
2013.02.05 17:49:43 #cid54641

Добрый день. Помогите разобраться. Сейчас стоит Windows XP на HDD. Хочу поставить SSD и на него windows 7, с возможностью выбора загрузки XP или 7. МП — GA-MA770-US3 есть 6 sata_2 ( 4 + 2 ).

Сам вопрос В какой sata подключать SSD и HDD на МП, так чтобы SSD работал в ACHI, а HDD осталься в IDE mode?

В BIOS есть три пункта меню OnChip SATA Controller OnChip SATA Type OnChip SATA Port4/5 Что в них выставить ?

2013.02.05 19:42:47 #cid54649

#cid54641, Дмитрий

Так не получится. Режим AHCI включается для всего контроллера, то есть — для всех каналов SATA одновременно. Если не ошибаюсь. Скорее всего — не ошибаюсь.

Встречный вопрос: зачем оставлять на «старых» каналах SATA (куда подключен диск ХР) режим IDE? Сменить драйвер контроллера, чтобы ХР не вываливалась в синий экран — это минутное дело, а работать будет ощутимо быстрее.

Дмитрий
2013.02.06 11:07:34 #cid54693

#cid54649,

Так не получится. Режим AHCI включается для всего контроллера, то есть — для всех каналов SATA одновременно. Если не ошибаюсь. Скорее всего — не ошибаюсь.

Встречный вопрос: зачем оставлять на «старых» каналах SATA (куда подключен диск ХР) режим IDE? Сменить драйвер контроллера, чтобы ХР не вываливалась в синий экран — это минутное дело, а работать будет ощутимо быстрее.

Спасибо за ответ. Почитал мануал, в BIOS можно оказывается выставить режим ACHI для ( sata_0 — sata_3 ), sata_4 и sata_5 можно в режим IDE.

Смену драйвера контроллера при установленной ОС не разу не делал. На XP стоит сервер, если не получится не хочется все заново ставить.

2013.02.06 16:29:36 #cid54708

#cid54693, Дмитрий

Похоже, повезло с мамой.

1. Вручную, принудительно меняешь драйвер для системного диска. 2. Перезагружаешь — сразу заходишь в BIOS (!) и меняешь режим на AHCI. 3. Если вдруг после загрузки вылетит синий экран (неправильно что-то сделал, драйвер не подошёл и т.д.) — ничего страшного. Просто возвращаешь IDE Mode, нормально загружаешься и спокойно ищешь, в чём была ошибка.

Для системы это не страшнее того, что делаешь ты. Если ХР переживёт смену режима работы доп. контроллера, то переживёт и смену основного, на котором работает.

2013.02.07 09:38:31 #cid54771

#cid54708,

Интуитивная понятность зашкаливает

Ide mode или ahci mode. В чем разница?

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

В основном, трудность пользователей возникает при выборе режима работы жесткого диска — AHCI, RAID или IDE. Поскольку RAID параметр для обычного пользователя не интересен, поскольку он подразумевает создание программного или физического массива дисков и предназначен в основном для серверов, то его рассматривать не будем, а ограничимся параметрами AHCI mode или IDE mode.

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

 IDE MODE

Режим IDE практически всегда включен по умолчанию и обеспечивает совместимость со всеми типами «компьютерного железа». Это один из самых старых способов коммуникации любого типа накопителей с материнской платой — хоть привода оптических дисков, хоть жесткого. Подключение по шине IDE осуществляется при помощи 80-жильного плоского кабеля. Большим плюсом использования IDE-интерфейса является возможность параллельного подключения двух устройств на один интерфейс, например, жесткого диска и CD или DVD ROM.  Для питания устройства в этом случае используется 4-контактный разъем типа molex.

Важно: при использовании IDE диска или IDE шлейфа (через переходник) при подключении жесткого диска, режим AHCI работать не будет! Попытка переключения приведет к возникновению ошибки и появлению «экрана смерти»!

AHCI MODE

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

Более высокая скорость обращения к диску обеспечивается при помощи технологии NCQ, позволяющей перестраивать очередность чтения файлов с поверхности жесткого диска в зависимости от их расположения.

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

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

«Горячее» подключение или замена жесткого диска — несомненный плюс использования режима AHCI. При подключении SATA диска с активированным в BIOS режимом AHCI, накопитель определяется моментально системой и после подачи питания готов к работе. Практически так, как определяется флешка, установленная в USB порт.

AHCI или IDE что лучше?

В первую очередь необходимо отметить использование твердотельных дисков (SSD) для установки операционной системы — в этом случае вариантов выбора режима подключения нет — только AHCI.

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

Единственное условие активации режима AHCI при уже установленной системе Windows — необходимость установки драйверов и внесения изменения в реестр.

Как переключить ahci на ide в биосе?

Для переключения режима в BIOS необходимо найти пункт «Controller Mode» или подобный, в котором имеется возможность выбрать режим IDE, AHCI, RAID или Compatibility. Хотя в зависимости от производителя BIOS данный параметр может находиться в различных меню.

Переключение режимов ahci и ide – Вариант 1

Переключение режимов ahci и ide – Вариант 2

Переключение режимов ahci и ide – Вариант 3

Переключение режимов ahci и ide – Вариант 4

Переключение режимов ahci и ide – Вариант 5

Example — Read hard disk sectors

The code example shows how to read «count» sectors from sector offset «starth:startl» to «buf» with LBA48 mode from HBA «port». Every PRDT entry contains 8K bytes data payload at most.

#define ATA_DEV_BUSY 0x80
#define ATA_DEV_DRQ 0x08
 
bool read(HBA_PORT *port, uint32_t startl, uint32_t starth, uint32_t count, uint16_t *buf)
{
	port->is = (uint32_t) -1;		// Clear pending interrupt bits
	int spin = ; // Spin lock timeout counter
	int slot = find_cmdslot(port);
	if (slot == -1)
		return false;
 
	HBA_CMD_HEADER *cmdheader = (HBA_CMD_HEADER*)port->clb;
	cmdheader += slot;
	cmdheader->cfl = sizeof(FIS_REG_H2D)sizeof(uint32_t);	// Command FIS size
	cmdheader->w = ;		// Read from device
	cmdheader->prdtl = (uint16_t)((count-1)>>4) + 1;	// PRDT entries count
 
	HBA_CMD_TBL *cmdtbl = (HBA_CMD_TBL*)(cmdheader->ctba);
	memset(cmdtbl, , sizeof(HBA_CMD_TBL) +
 		(cmdheader->prdtl-1)*sizeof(HBA_PRDT_ENTRY));
 
	// 8K bytes (16 sectors) per PRDT
	for (int i=; i<cmdheader->prdtl-1; i++)
	{
		cmdtbl->prdt_entryi.dba = (uint32_t) buf;
		cmdtbl->prdt_entryi.dbc = 8*1024-1;	// 8K bytes (this value should always be set to 1 less than the actual value)
		cmdtbl->prdt_entryi.i = 1;
		buf += 4*1024;	// 4K words
		count -= 16;	// 16 sectors
	}
	// Last entry
	cmdtbl->prdt_entryi.dba = (uint32_t) buf;
	cmdtbl->prdt_entryi.dbc = (count<<9)-1;	// 512 bytes per sector
	cmdtbl->prdt_entryi.i = 1;
 
	// Setup command
	FIS_REG_H2D *cmdfis = (FIS_REG_H2D*)(&cmdtbl->cfis);
 
	cmdfis->fis_type = FIS_TYPE_REG_H2D;
	cmdfis->c = 1;	// Command
	cmdfis->command = ATA_CMD_READ_DMA_EX;
 
	cmdfis->lba0 = (uint8_t)startl;
	cmdfis->lba1 = (uint8_t)(startl>>8);
	cmdfis->lba2 = (uint8_t)(startl>>16);
	cmdfis->device = 1<<6;	// LBA mode
 
	cmdfis->lba3 = (uint8_t)(startl>>24);
	cmdfis->lba4 = (uint8_t)starth;
	cmdfis->lba5 = (uint8_t)(starth>>8);
 
	cmdfis->countl = count & 0xFF;
	cmdfis->counth = (count >> 8) & 0xFF;
 
	// The below loop waits until the port is no longer busy before issuing a new command
	while ((port->tfd & (ATA_DEV_BUSY | ATA_DEV_DRQ)) && spin < 1000000)
	{
		spin++;
	}
	if (spin == 1000000)
	{
		trace_ahci("Port is hung\n");
		return FALSE;
	}
 
	port->ci = 1<<slot;	// Issue command
 
	// Wait for completion
	while (1)
	{
		// In some longer duration reads, it may be helpful to spin on the DPS bit 
		// in the PxIS port field as well (1 << 5)
		if ((port->ci & (1<<slot)) == ) 
			break;
		if (port->is & HBA_PxIS_TFES)	// Task file error
		{
			trace_ahci("Read disk error\n");
			return FALSE;
		}
	}
 
	// Check again
	if (port->is & HBA_PxIS_TFES)
	{
		trace_ahci("Read disk error\n");
		return FALSE;
	}
 
	return true;
}
 
// Find a free command list slot
int find_cmdslot(HBA_PORT *port)
{
	// If not set in SACT and CI, the slot is free
	uint32_t slots = (port->sact | port->ci);
	for (int i=; i<cmdslots; i++)
	{
		if ((slots&1) == )
			return i;
		slots >>= 1;
	}
	trace_ahci("Cannot find free command list entry\n");
	return -1;
}

Что такое NVMe?

NVM Express – тип накопителя семейства SSD, который подключают с помощью шины PCI Express.

Новый интерфейс NVMe был разработан для уменьшения задержек и увеличения производительности в работе твердотельных накопителей. NVMe использует новое ПО и механизм обработки очередей, а также более эффективный высокий параллелизм накопительных устройств.

Обычные SSD осуществляют свою работу с помощью интерфейса SATA, что приводит к ряду ограничений и уменьшению скорости передачи данных, невзирая на технические характеристики самого накопителя. Фактически подключение к новому интерфейсу снимает те ограничения, которые имеют накопители, работающие по стандарту SATA.

История создания NVMe

Первая дискуссия о появлении нового стандарта образовалась на форуме разработчиков компании Intel в далеком 2007 году. В этом же году была собрана группа разработчиков во главе c Intel для проработки интерфейса NVMHCI. Спецификация NVMHCI 1.0 была завершена весной 2008 года, а начальная версия NVMe 1.0 была выпущена только к марту 2011 года.

Впервые контроллеры для NVMe были анонсированы в 2012 году фирмой ITD.

Первые же накопители с NVMe для ПК и серверов были выпущены компанией Samsung в 2013 году. Скорость чтения данных устройств достигала  3 ГБ/с, что являлось неким прорывом в области твердотельных накопителей.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector