1. 前言随着显卡硬件和应用需求的不断发展,内核社区提出了多种显存管理框架,其中 GEM(Graphics Execution Manager)和 TTM(Translation Table Maps)是最为重要的两种。本文将系统分析 TTM 与 GEM 的关系,重点阐述 TTM 如何在 GEM 基础上扩展和增强内存管理能力,并结合实际代码结构和业务场景进行剖析。2. GEM回顾GEM其设计目标是为 GPU 驱动提供一套简单、通用的显存对象管理机制,便于用户空间和内核空间之间的资源共享与同步。GEM 主要关注对象生命周期管理、mmap 映射、句柄管理等基础功能。前一篇文章DRM-01: GEM显存管理分析GEM的核心数据结构和关系,再来回顾下前面图例。核心就是图中的5个结构:drm_gem_object、drm_vma_offset_manager/drm_vma_offset_node、drm_mm/drm_mm_node。drm_gem_object:GEM 显存对象的基类,包含引用计数、内存管理、mmap 映射等通用属性。drm_vma_offset_manager/drm_vma_offset_node:用于管理 GEM 对象在虚拟地址空间中的映射区间,实现 mmap 操作的高效分配与回收。