CppCon 2017: Design Patterns for Low-Level-Real-Time Rendering by Nicolas Guillemot 리뷰


Discrete GPU Memory Management

CPU는 System Memory(RAM)이라는 Own Memory를 가지고 있다. 메모리 접근을 위해 CPU는 MMU(Memory Management Unit)을 사용한다. MMU는 다양한 기능이 있는데, 그 중 하나로 실제로 물리 메모리에서는 연속적이지 않은 페이지를 개발자에게 연속적으로 존재하는 것처럼 보이게하는 가상화 기능이 있다. 또한, MMU는 파일시스템에 페이지를 임시로 보관해놓는 방식으로 메모리 부족을 해결한다. 마찬가지로 GPU도 Video Memory(VRAM)이라는 Own Memory를 가지는데, CPU와 유사하게 GPU 또한 MMU를 가지고 있다. 이외에 위의 그림에서 노란색과 보라색 박스를 보면 물리적으로 CPU 메모리에 존재하는 데이터를 CPU와 GPU의 MMU를 통해 접근하는게 가능하며, 그 반대 또한 가능하다. 마지막으로, 물리적인 System Memory와 Video Memory 서로간의 직접적인 Copy를 가능하게 하는 DMA Engine 또한 존재한다.

Integrated Video Memory Management

위의 경우에는 CPU에 결합된 형태인 Integrated Video Memory Management이다. CPU와 GPU가 물리적으로 동일한 메모리를 소유하고 있으며 각자 자신의 MMU를 통해 메모리에 접근한다. 따라서, 각자가 자기 자신만의 Virtual Address Space를 가진다.


Reference

  1. Youtube(CppCon 2017: Nicolas Guillemot “Design Patterns for Low-Level Real-Time Rendering”)
  2. Render graphs and Vulkan - a deep dive by Maister





© 2020.11. by snowapril

Powered by snowapril