ユニファイドメモリアーキテクチャ
AppleのMetal APIでは、単一の仮想メモリ領域内に存在する、アライメントされたメモリアドレスを使って、データをコピーすることなく既存のメモリ領域をラップするMTLBufferオブジェクトを直接生成することができる。また、Metalではリソース生成時にMTLStorageMode.sharedを使用することで、CPUとGPUがシステムメモリ内に割り当てられたリソースへのアクセスを共有できるが、共有メモリを使用するリソースに対して、CPUまたはGPUのどちらかでスケジュールしたすべての変更処理が、もう片方のプロセッサ上でのリソースアクセスが発生する前に完了されなければならない。つまり、MTLBuffer.contents()を使って直接ポインタを取得して共有データを読み書きすることはできるものの、任意のタイミングでCPU/GPU間のメモリ一貫性が保証されるわけではなく、ソフトウェア側の配慮が必要となる。
一見当たり前の話に聞こえるが、hUMAではない従来型のUMAではメモリという部品を容量で用途別に分けあっているだけなので、CPUとGPUで異なるアドレス空間を持ち、それぞれ個別にアドレスが振られているうえにメモリ自身もあくまで別物扱いである。それゆえに例え同じアドレス値であっても、CPU用のアドレスとGPU用のアドレスでは全く別のメモリ番地を指している。CPUとGPU間(これは、PCにおいては同時にマザーボードとビデオカード間をも指す)に接続されたバスを通して転送するしか、両者間でデータのやりとりは不可能である。しかし、先述の通りhUMAの場合は単純に同じアドレスのメモリ領域でデータを読み書きするやりとりだけで済み、ソフトウェアによるデータ転送の手間が省ける。また、2023年現在においても、GPUではCPUのようにポインタあるいは参照を駆使した複雑で柔軟なデータ構造を直接扱うことができず、GPU向けにいったん分解や再構築が必要となるが、hUMA環境ではそのまま扱えるようになる。
なお、HSA規格を管理しているHSA Foundationの活動は、2020年を最後に止まっている。
PCに限らずワークステーションでも一般的であった。3Dアクセラレーターにおいて、VRAMだけでなくテクスチャメモリ(テクスチャマッピング用の画像データを保持するメモリ)、イメージキャプチャ結果を保持するメモリとしても使われた。
メモリがモジュールとして増設が簡単になり、単価も下がるにしたがい、32bitアドレスのメモリ空間の上限である4GBなども普通に実装できるようになったが、ハードウェアの予約されているメモリ番地はメモリがリニアに使えない。そのうえ、UMA方式に割く場合はさらにビデオ回路用として実メモリを用いるので、32bitモードで動かす場合にはその部分がさらに削られる。もっとも、32bitオペレーティングシステム (OS) では、独立したビデオカードを搭載する場合であってもビデオメモリは最初の4GBのアドレス空間内にマッピングされる必要があるため、ビデオメモリの量だけOS側(ソフトウェア側)で利用可能なシステムメモリの総容量が減少する。つまり32bit OS環境では、大容量のビデオメモリを搭載するビデオカードはむしろシステム全体の性能を低下させることになる。
なお、かつてSGIが、高帯域幅のUMAを採用したSGI O2(英語版)と呼ばれるワークステーション製品を手掛けていたことがあった。
ヘテロジニアス・ユニフォームメモリアクセス (heterogeneous Uniform Memory Access) とは、UMAの中でもさらに統合が進み、CPUとGPUがメモリマップまで統合されているUMAのことを指す。AMDがHSA (Heterogeneous System Architecture) の鍵となる技術の一つとして発表した。
CPUとGPUで同じメモリマップを共有しているということは、必然的にGPU側もページフォールトに対応し、MMUで仮想メモリ管理が可能となっていることになる。また、hUMAではCPUとGPUのメモリ一貫性(メモリコヒーレンス/メモリコヒーレンシ)がハードウェアレベルで確保されており、CPUとGPUが扱うデータの一貫性や同期をソフトウェア側で気にする必要がなくなる。これはGPUを汎用目的に利用するGPGPUにおいて大きなメリットとなる。
つまり、hUMA環境において、あるメモリアドレスは、CPUやGPUにかかわらず同じアドレス空間内の同じメモリ番地を指すということである。