Unified Memory Architectureとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > デジタル大辞泉 > Unified Memory Architectureの意味・解説 

ユー‐エム‐エー【UMA】

読み方:ゆーえむえー

《unified memory architecture》コンピューターメーンメモリー一部グラフィックスメモリーとして利用する技術


UMA

フルスペル:Unified Memory Architecture
読み方ユーエムエー
別名:Shared Memory ArchitectureSMA

UMAとは、パソコン画面表示用の専用メモリとして、メインメモリ一部活用する技術のことである。

UMAを使うと、画面表示用の専用メモリ用意する必要がなくなるため、製品自体コスト削減大きな効果発揮する

2010年12月現在、UMAはチップセット統合グラフィックス機能普及伴ってデスクトップパソコンノートパソコンなどのタイプに関係なく、廉価なパソコン広く採用されるようになっている

UMAの採用例としては、Intel社のi810やi815などが有名である。


ユニファイドメモリアーキテクチャ

(Unified Memory Architecture から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/07/26 14:17 UTC 版)

ユニファイドメモリーアーキテクチャ: Unified Memory Architecture、UMA)は、メインメモリーCPUだけでなく、他のデバイスにも共有して使用するメモリーアーキテクチャの一つである。まれにUniversal Memory Architectureと表記されることもある[1][2]

概要

この方式は、古くはNECPC-8001で実装された。メインメモリーの一部をVRAM(ビデオメモリー)の一部として扱い、CRTC(CRTコントローラー)にDMA転送することで、画面を表示していた。DMAが動作中CPUはメモリーバスの使用権を失い、画面表示中はCPU本来の能力を発することができなかった。そこで計算などの用途においてDMAを停止し、CPUがメインメモリーをフルにアクセスできるようにすることが一般的だった。この手法は後に、PC-8800シリーズでも使用された。

現代のこの方式の応用もまた、VRAMをメインメモリーにマッピングする場合に用いられていることが多い。このアーキテクチャがパーソナルコンピューター (PC) に適用されたときは、CPU本来の性能を発揮できないことから嫌われた。そこでCPU動作速度の低下を避けるため、メモリーバスの周波数をCPU本来のバス周波数より高く設定し、CPUからのメモリーアクセスをさまたげないよう工夫されるようになった。CPUがメモリーにアクセスする際にグラフィックスコントローラー(のちのGPU)は目的の演算を遅延することから、表示にジッターが現れることが多かった。後にこれはメモリーアクセス方式を工夫したり、あるいは最終的に画面表示に使うメモリーのみを、グラフィックスボード(ビデオカード)に搭載したりすることで解決した。しかし、さらに時代が下って再び採用され始める。PCに限らずワークステーションでも一般的であった。3Dアクセラレーターにおいて、VRAMだけでなくテクスチャメモリー(テクスチャマッピング用の画像データを保持するメモリー)、イメージキャプチャ結果を保持するメモリーとしても使われた。[要出典]

メモリーがモジュールとして増設が簡単になり、単価も下がるにしたがい、32bitアドレスのメモリー空間の上限である4GBなども普通に実装できるようになったが、ハードウェアの予約されているメモリー番地はメモリーがリニアに使えない。そのうえ、UMA方式に割く場合はさらにビデオ回路用として実メモリーを用いるので、32bitモードで動かす場合にはその部分がさらに削られる。もっとも、32bitオペレーティングシステム (OS) では、独立したビデオカードを搭載する場合であってもビデオメモリーは最初の4GBのアドレス空間内にマッピングされる必要があるため、ビデオメモリーの量だけOS側(ソフトウェア側)で利用可能なシステムメモリーの総容量が減少する[3]。つまり32bit OS環境では、大容量のビデオメモリーを搭載するビデオカードはむしろシステム全体の性能を低下させることになる。

なお、かつてSGIが、高帯域幅のUMAを採用したSGI O2英語版と呼ばれるワークステーション製品を手掛けていたことがあった[4]

UMAのメリットの一つは、グラフィックス専用のメモリーが不要になるため、コストダウンが実現できることである[5]。エントリーモデルのデスクトップPCやノートPCでは、独立したグラフィックスボードやGPU (dGPU) を搭載せず、マザーボード上に実装されたオンボードグラフィックスあるいはCPUに内蔵されたGPU (iGPU) を利用することが多い。スマートフォンタブレット、ゲーム専用機などに搭載されているSoCは、CPU・GPU・メモリー・周辺回路などを1チップ(1パッケージ)に統合している。いずれもVRAMは搭載せず、メインメモリーをCPUとGPUとで共有するUMAとなっている。

UMAのデメリットは、パフォーマンスがメモリーに律速され、各々のプロセッサの能力を最大限に活かすことができない可能性があること、また拡張性に乏しいことである。例えばグラフィックスボードに実装されるVRAMには帯域幅の大きいGDDR系メモリーやHBMが使われることが多いが、UMAでは通例DDR系メモリーとなるため、GPUの性能を活かしきれない。また、CPUと比較すると、並列化しやすいGPUは半導体プロセスルールの微細化に伴う性能向上率が高く、旧製品の性能陳腐化が激しいが、UMA環境ではグラフィックスボードだけを交換・増設して性能を向上させるようなことができない。メモリーも統合されたSoCの場合は、メモリーだけを後から交換・増設することができない。

NUMA

複数のCPUが共有するメインメモリーにアクセスする対称型マルチプロセッサにおいて、そのメモリーアクセスのことを「Uniform Memory Access」と呼ぶ[6]。この言葉はNUMANon-Uniform Memory Access)ではないことを強調して指す言葉であり、あまり一般的ではない[要出典]

従来型のPCアーキテクチャやSoC、Xbox 360などでUMAと呼ばれているアーキテクチャーは、あくまでもメモリーの部品としての共用であり、CPUとGPUのメモリーマップ(メモリー空間)までは統合されていない。これはUMAの中でもNUMAとして分類される[7]。従来型のUMAでは、CPUとGPUはそれぞれのメモリー空間に存在するデータをお互いに直接共有・読み書きすることができず、都度データ転送(コピー)が必要になる。

hUMA

ヘテロジニアス・ユニフォームメモリーアクセス (heterogeneous Uniform Memory Access) とは、UMAの中でもさらに統合が進み、CPUGPUがメモリーマップまで統合されているUMAのことを指す。AMDがHSA (Heterogeneous System Architecture) の鍵となる技術の一つとして発表した[7]

CPUとGPUで同じメモリーマップを共有しているということは、必然的にGPU側もページフォールトに対応し、MMUで仮想メモリー管理が可能となっていることになる。また、hUMAではCPUとGPUのメモリー一貫性(メモリーコヒーレンス/メモリーコヒーレンシー)がハードウェアレベルで確保されており、CPUとGPUが扱うデータの一貫性や同期をソフトウェア側で気にする必要がなくなる[8]。これはGPUを汎用目的に利用するGPGPUにおいて大きなメリットとなる。

つまり、hUMA環境において、あるメモリーアドレスは、CPUやGPUにかかわらず同じアドレス空間内の同じメモリー番地を指すということである。一見当たり前の話に聞こえるが、hUMAではない従来型のUMAではメモリーという部品を容量で用途別に分けあっているだけなので、CPUとGPUで異なるアドレス空間を持ち、それぞれ個別にアドレスが振られているうえにメモリー自身もあくまで別物扱いである。それゆえに例え同じアドレス値であっても、CPU用のアドレスとGPU用のアドレスでは全く別のメモリー番地を指している。CPUとGPU間(これは、PCにおいては同時にマザーボードビデオカード間をも指す)に接続されたバスを通して転送するしか、両者間でデータのやりとりは不可能である。しかし、先述の通りhUMAの場合は単純に同じアドレスのメモリー領域でデータを読み書きするやりとりだけで済み、ソフトウェアによるデータ転送の手間が省ける。また、2023年現在においても、GPUではCPUのようにポインタあるいは参照を駆使した複雑で柔軟なデータ構造を直接扱うことができず、GPU向けにいったん分解や再構築が必要となるが、hUMA環境ではそのまま扱えるようになる。

なお、HSA規格を管理しているHSA Foundationの活動は、2020年を最後に止まっている[9][10]

API側のUMA対応

前述のように、従来型のUMAでは、CPUとGPUのメモリー空間が異なるため、たとえ同一の物理メモリー上に存在するデータであっても、お互いに直接読み書きすることができず、データ転送が必要になってしまう。データ転送処理にはDirect3DDirectX)あるいはOpenGLのようなグラフィックスAPIや、CUDAあるいはOpenCLのようなコンピューティングAPIを利用するが、このコピー処理および同期にかかるコストは、特にGPUの演算結果をCPU側で読み出して利用する場合にボトルネックとなる。しかし先進的なAPIの中には、UMAに対応した最適化機能を持つものも存在する。

OpenCL

OpenCLのclCreateBuffer()flags引数にCL_MEM_USE_HOST_PTRまたはCL_MEM_ALLOC_HOST_PTRを使用することで、ホスト(CPU)側に割り当てられたメモリーをバッファとして使用できる[11]。UMA環境では、(GPUなどの)デバイス固有のルールに従ってこれらを利用することで、バッファ読み書きの際にコピーが不要となる「ゼロコピーバッファー」を実現することができる可能性がある。例えばIntel Graphicsでは、4096バイト境界でアライメントされ、64バイトの倍数のサイズを持つ既存のメモリー領域をバッファとして使うことで、ゼロコピーバッファを実現することができる[12]。ただし実装依存であり、UMA環境だからといって必ずしもゼロコピーバッファになるとは限らない。

OpenCL 2.0では、共有仮想メモリー(Shared Virtual Memory, SVM)の機能が追加され、ホストとデバイスで仮想メモリー空間を共有できるようになった[13]。SVMにより、UMA環境ではゼロコピーが実現できるようになるだけでなく、ポインタを使用した複雑なデータ構造をデバイス側で利用することもできるようになる[14]

Direct3D

Microsoft Windows 10で追加されたDirect3D 11.3および12では、UMA環境の場合は冗長なコピーを減らすことのできる機能を持つ[15][2]。Direct3D 12では、通常のUMAとキャッシュコヒーレントなUMAを区別することもできる[16]

Metal

AppleのMetal APIでは、単一の仮想メモリー領域内に存在する、アライメントされたメモリーアドレスを使って、データをコピーすることなく既存のメモリー領域をラップするMTLBufferオブジェクトを直接生成することができる[17]。また、Metalではリソース生成時にMTLStorageMode.sharedを使用することで、CPUとGPUがシステムメモリー内に割り当てられたリソースへのアクセスを共有できるが、共有メモリーを使用するリソースに対して、CPUまたはGPUのどちらかでスケジュールしたすべての変更処理が、もう片方のプロセッサ上でのリソースアクセスが発生する前に完了されなければならない[18]。つまり、MTLBuffer.contents()を使って直接ポインタを取得して共有データを読み書きすることはできるものの、任意のタイミングでCPU/GPU間のメモリー一貫性が保証されるわけではなく、ソフトウェア側の配慮が必要となる。

Apple Silicon

2020年にAppleは、従来からiPhoneiPadなどで採用されていたARMアーキテクチャベースのApple製SoCを、Macコンピュータにも採用するにあたって、Appleシリコンという総称で再定義した[19][20]。2020年末以降は、MacでもIntelのx86ベースプロセッサに代わって、Apple M1のようなApple SoCが搭載されるようになった。これらのApple SoCではUMAが採用されているが、Apple Silicon GPU環境におけるMetal APIでは、CPUとGPUとで共有可能なMTLBufferMTLTextureを生成することができる[18]。これによりゼロコピーを実現することができ、パフォーマンスと効率が向上する[21]。従来のIntelプロセッサを搭載したIntel Mac環境でも統合GPUに関してはUMAとなっており、MTLBufferに関しては共有モードを利用できるものの、MTLTextureに関しては共有モードを利用できなかった。

なお、Apple GPU環境であっても、すべてのリソースに対して共有モードを設定するのではなく、リソースアクセスの傾向に応じて適切なストレージモードを選択する必要がある[22]

脚注

  1. ^ Illustrated parts catalog | HP® Customer Support
  2. ^ a b UMA Optimizations CPU Accessible Textures and Standard Swizzle - Win32 apps | Microsoft Learn
  3. ^ Windows 7 ベースのコンピューターで使用可能なメモリが搭載されているメモリより少ない - Microsoft サポート
  4. ^ インターネットマガジン バックナンバーアーカイブ 1997/10
  5. ^ Insider's Computer Dictionary:UMA (Unified Memory Architecture) とは? - @IT
  6. ^ Insider's Computer Dictionary:UMA (Uniform Memory Access、Uniform Memory Architecture) とは? [マルチプロセッサ] - @IT
  7. ^ a b 米田聡 (2013年4月30日). “AMD,次期主力APU「Kaveri」で対応する新技術「hUMA」を発表。CPUとGPUが同じメモリ空間を共有可能に”. 4Gamer.net. 2013年7月13日閲覧。
  8. ^ 【後藤弘茂のWeekly海外ニュース】CPUとGPUのメモリ空間を統一するAMDの「hUMA」アーキテクチャ - PC Watch
  9. ^ News – Heterogeneous System Architecture Foundation
  10. ^ HSA Foundation | GitHub
  11. ^ clCreateBuffer | OpenCL 1.0 Specification
  12. ^ OpenCL* 1.2 の活用: インテル® プロセッサー・グラフィックスでバッファーコピーを最小限に抑えてパフォーマンスを向上する方法 | iSUS
  13. ^ OpenCL 2.0勉強会#1:Shared Virtual MemoryなどのOpenCLのバッファー関連まとめ - Fixstars Tech Blog /proc/cpuinfo
  14. ^ OpenCL™ 2.0 Shared Virtual Memory Overview
  15. ^ Unified Memory Architecture - Win32 apps | Microsoft Learn
  16. ^ D3D12_FEATURE_DATA_ARCHITECTURE (d3d12.h) - Win32 apps | Microsoft Learn
  17. ^ makeBuffer(bytesNoCopy:length:options:deallocator:) | Apple Developer Documentation
  18. ^ a b MTLStorageMode.shared | Apple Developer Documentation
  19. ^ Apple、MacにAppleシリコンを搭載することを発表 - Apple (日本)
  20. ^ 「iPhone」「Mac」など全製品でApple Silicon採用、使い勝手を仮想体験 | 日経クロステック(xTECH)
  21. ^ Apple at Work - M1の概要
  22. ^ Choosing a Resource Storage Mode for Apple GPUs | Apple Developer Documentation

関連項目

外部リンク


Unified Memory Architecture (UMA)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/20 18:27 UTC 版)

ビデオカード」の記事における「Unified Memory Architecture (UMA)」の解説

Unified Memory Architecture (UMA) とは、独立したビデオメモリ持たずメインメモリCPU共有するシステムである。シェアードメモリ(シェアメモリ)・共有メモリなどとも呼ばれるメインメモリ同世代専用ビデオメモリ比較する低速であり、システムメモリ帯域共有するためシステムパフォーマンスが低下するなどのデメリットがある。反面実装面積少なく省スペース性に優れる、部品点数少なく安価であるなどのメリットがあり、チップセット統合グラフィックス機能多く採用されている。SoCではeDRAMにより性能問題対処している事例もある。 メインメモリ高速化に伴い単体型のグラフィックチップにおいてもNVIDIA社のTurbo CacheAMD社のHyperMemoryなどメインメモリビデオメモリ領域として利用する技術登場している。

※この「Unified Memory Architecture (UMA)」の解説は、「ビデオカード」の解説の一部です。
「Unified Memory Architecture (UMA)」を含む「ビデオカード」の記事については、「ビデオカード」の概要を参照ください。


Unified Memory Architecture

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/23 19:50 UTC 版)

オンボードグラフィック」の記事における「Unified Memory Architecture」の解説

チップセット統合グラフィックス場合フレームバッファ用いビデオメモリVRAM)はメインメモリ共有するものが一般的である。これを Unified Memory Architecture(以下UMA)または Shared Memory Architecture(同SMA)と呼称する。UMAでは専用ビデオメモリを必要としないためコスト削減でき、かつ実装面積節約にも繋がる。これらのメリットにより、チップセット統合グラフィックス用いている製品ではほとんど全てUMA採用している。 反面UMAによりビデオメモリ用として確保され領域オペレーティングシステムOS)からは使用できなくなり実効メモリ容量減少する。さらにビデオメモリとしては低速メインメモリを使うためグラフィックス性能低下繋がり、またメモリ帯域侵食されプロセッサ性能低下するため、システム全体性能低下に繋がる場合もある。 UMAによりビデオメモリ領域として確保される容量は、システムBIOSユーザー設定するものと、デバイスドライバにより自動的に設定されるものとがある。後者起動するアプリケーションによって確保されるVRAM容量動的に変化する。 なお、これらの弱点を補うため、ALi Aladdin TNT2や以下に記載Local Frame Buffer (Side Port Memory) のように、チップセット内蔵グラフィックありながら外部VRAMサポートするものや、一部Intel Iris Graphicsのように、eDRAM形式でのVRAM搭載するものも存在する。以下に記載のあるi810DCもeDRAM形式でのVRAM搭載した統合チップセットである。

※この「Unified Memory Architecture」の解説は、「オンボードグラフィック」の解説の一部です。
「Unified Memory Architecture」を含む「オンボードグラフィック」の記事については、「オンボードグラフィック」の概要を参照ください。

ウィキペディア小見出し辞書の「Unified Memory Architecture」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Unified Memory Architecture」の関連用語

Unified Memory Architectureのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Unified Memory Architectureのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2024 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリUMAの記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのユニファイドメモリアーキテクチャ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのビデオカード (改訂履歴)、オンボードグラフィック (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS