Hardware Abstraction Layer

ハードウェア抽象化レイヤー(HAL)



ハードウェア抽象化レイヤー、通称HALは、コンピュータハードウェアとそれに対応するソフトウェアの間に存在し、両者の間での情報のやり取りをスムーズにする役割を果たします。HALは特にオペレーティングシステム(OS)のカーネルハードウェアとの間で、個別のハードウェアの違いを隠す機能を持っており、これによりカーネルコードは多様なハードウェア環境でもほとんど手を加えずに動作可能です。

HALの役割と目的



一般的に、HALはPCにおいてマザーボード用ドライバの形式で実装されており、上位のプログラムはハードウェアの低レベルのコンポーネントに対して指示を出すことができます。このアプローチにより、開発者はハードウェアの詳細を気にせずにシステム設計を行うことが可能となります。特に、Microsoft WindowsのNT系OSでは、HALは重要な役割を果たしており、カーネル空間内に配置されてカーネルやドライバ、実行サービスとハードウェアの仲介を行います。

これにより、Windows NTカーネルのコードは異なるメモリ管理ユニットやI/Oバスアーキテクチャにおいても互換性を持ち、ほとんど手を加えずに移植できる形で設計されています。コードは、特別な修正を行うことなく、対象となるシステムに対して単に命令セットアーキテクチャをコンパイルするだけで実行できるのです。

他のOSにおけるHALの位置づけ



HALと呼ばれる構造は、BSDやmacOS、Linux、あるいはSolarisなどの他のオペレーティングシステムにも存在していますが、それらは必ずしもHALとして明確に識別されているわけではありません。例えば、Linuxの場合、AdeosのようなHALを動作中のカーネルに挿入することができます。また、NetBSDはHALを明確に分離しており、非常に高い移植性を誇ります。このシステムは、uvm(9)、pmap(9)、bus_space(9)、bus_dma(9)など複数のサブシステムによって構成されています。さらに、ISA、EISA、PCI、PCI-Expressなど、多様なアーキテクチャで使用されているI/Oバスも抽象化され、デバイスドライバは最小限の修正で移植が可能となっています。

HALの具体例



HALの極めて明確な例としてSystem/38|System_38やAS/400のアーキテクチャが挙げられます。これらのシステム上では、コンパイラが抽象化された機械語コードを生成し、Licensed Internal Code(LIC)がそのコードを実際に動作させるために必要なプロセッサ用コードに変換します。これにより、上位のアプリケーションやOSのコードは、System/38|System_38からAS/400に移行する際に、全く修正する必要がなくなります。これらのシステムは、異なるプロセッサを使用するにも関わらず、非常にスムーズに移行ができるのです。

HALとOSのAPIの関係



HALは、OSのAPI層よりも低位に位置します。言い換えれば、HALを介して行われる処理は、OSシステムコールに基づくAPIよりも短い時間で完了しなければなりません。このため、HALを利用することで、様々なハードウェアにおいても簡単に移植可能なOSを実現することが可能となります。特に、組み込みシステムなど多様なプラットフォームでの動作が求められる場面では、この柔軟性が非常に重要です。

HALを含む技術 - DirectXの役割



Windows向けのマルチメディア処理を行うAPIであるDirectXにもHALに関連したコンポーネントがいくつか存在します。特に、リアルタイム3次元グラフィックス処理を担当するDirect3Dでは、グラフィックスハードウェアを抽象化するためのHALデバイスが用意されています。これにより、異なるベンダーの間でのハードウェアの違いを吸収しながら、共通のDirect3D APIを通じてハードウェア機能にアクセスできるため、開発者にとって利便性が高まります。なお、DirectDrawにはユーザーモードでのエミュレーションを可能にするHardware Emulation Layer(HEL)が実装されていました。また、DirectSoundもサウンドカードの支援を利用するHALを持っていましたが、Windows Vista以降はソフトウェアエミュレーションに置き換えられています。

このように、HALはコンピュータシステムの基本的な設計原則において、ハードウェアソフトウェアの仲介を行う重要な役割を果たしていると言えます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。