ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

第四章:TTM分析: 4.5 ttm_device 设计与实现解析

2026/8/10 1:01:36 拓冰建站 浏览量
第四章:TTM分析: 4.5 ttm_device 设计与实现解析

本节是概述章节。理解ttm_device的定位,给出后续的分析思路和理解该对象的方法。

1. 概述:ttm_device 的角色定位

ttm_device是 TTM 子系统的顶层管理对象,每个 GPU 设备持有一个实例。它不直接操作具体的 BO 或物理页,而是作为"管理者的管理者"——聚合资源管理器、页池、LRU 策略、地址空间管理器等子系统,为驱动提供统一的操作入口。

从定义看其成员构成:

structttm_device{structlist_headdevice_list;// 全局设备链表节点unsignedintalloc_flags;// 分配策略标志conststructttm_device_funcs*funcs;// 驱动回调函数表structttm_resource_managersysman;// 内建的 SYSTEM 域管理器structttm_resource_manager*man_drv[TTM_NUM_MEM_TYPES];// 多域管理器数组structdrm_vma_offset_manager*vma_manager;// 用户空间 mmap 偏移管理structttm_poolpool;// 页池spinlock_tlru_lock;// LRU 全局锁structlist_headunevictable;// 不可驱逐 BO 链表structaddress_space*dev_mapping;// CPU 映射失效用structworkqueue_struct*wq;// 延迟删除工作队列};

这些成员并非随意堆砌,而是分别服务于 4.1 节提出的三大设计目标:

设计目标对应成员
统一管理异构内存域sysmanman_drv[]poolfuncs->ttm_tt_*
显存动态调度与超配lru_lockunevictablewqfuncs->evict_*funcs->move
GPU 地址映射支撑vma_managerdev_mappingfuncs->io_mem_*

不同于逐字段平铺直叙的罗列方式,这里我以"设计目标→成员归因"为主线拆解ttm_device——先问"要解决什么问题",再看"哪些成员为此而生"。这样读友们建立的是"需求→设计"的因果链,而非对孤立字段的机械记忆。


🔗 导航

  • 上一节:4.4 ttm_resource_manager的功能和实现解析
  • 下一节:4.5.1 ttm_device对三大设计目标的实现
  • 返回目录: linux drm子系统技术实现分析产品化应用分享专栏目录