Из википедии:
Hardware Abstraction Layer (HAL, Слой аппаратных абстракций) — слой абстрагирования, реализованный в программном обеспечении, находящийся между физическим уровнем аппаратного обеспечения и программным обеспечением, запускаемом на этом компьютере. HAL предназначен для скрытия различий в аппаратном обеспечении от основной части ядра операционной системы, таким образом чтобы большая часть кода, работающая в режиме ядра не нуждалась в изменении при её запуске на системах с различным аппаратным обеспечением. На персональных компьютерах HAL, по существу, может рассматриваться как драйвер материнской платы, позволяющий взаимодействовать инструкциям высокоуровневых языков программирования с низкоуровневыми компонентами, такими как аппаратное обеспечение, к примеру напрямую с аппаратным обеспечением.
В операционных системах семейства Windows NT HAL является частью ядра[1][2]. Это обеспечивает портируемость кода ОС Windows NT, работающего в режиме ядра на различные виды процессоров, с различными блоками управления памятью и на ряд систем с различными архитектурами шин ввода/вывода; большая часть этого кода выполняется без изменений на этих системах, при компиляции для системы команд оговоренных выше систем. К примеру рабочие станции, основанные на SGI Intel x86 были не совместимы с IBM PC-совместимыми рабочими станциями, но благодаря HAL Windows NT мог запускаться на них.