国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux drm內(nèi)存管理(一) 淺談TTM與GEM,為什么我們需要TTM和GEM?

這篇具有很好參考價值的文章主要介紹了Linux drm內(nèi)存管理(一) 淺談TTM與GEM,為什么我們需要TTM和GEM?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

@[TOC](Linux drm內(nèi)存管理(一) 為什么我們需要TTM和GEM?)

系列文章(更新中):
Linux drm內(nèi)存管理(二) TTM內(nèi)存管理基礎概念

前言

??目前Kernel中DRM中GPU的VRAM(GPU片上顯存)的管理框架是有GEM和TTM,其中TTM早于GEM出現(xiàn),GEM的出現(xiàn)是為了解決TTM復雜的使用方法,將大部分的VRAM管理實現(xiàn)邏輯交由廠商實現(xiàn)。

正文

??如果你看了何總的GEM相關的博客,我這里額外補充一點我了解到的知識點,我們都知道了內(nèi)核層的GEM指向或者說包含一片內(nèi)存,應用層只能獲取到GEM的handle,但是可以通過mmap獲取到內(nèi)核層GEM所指向的內(nèi)存,從而實現(xiàn)CPU讀寫。
??GPU可以使用自己的片上顯存,同時也能使用CPU的內(nèi)存。假設我們GEM指向的內(nèi)存都在GPU的片上顯存上,那我們多次創(chuàng)建和釋放GEM,片上顯存是如何實現(xiàn)管理的?比如第一個GEM指向的是GPU的0-16MB,第二個GEM指向的是16-32MB,第三個GEM指向的是CPU的某塊內(nèi)存。很明顯GEM只能負責完成內(nèi)存的映射,我們額外需要一個管理GEM的框架去管理顯存的分配,或者說我們需要一個框架去統(tǒng)一GPU的內(nèi)存尋址總線

思考

??我看GEM和TTM還有AMD DRM的源碼一直在思考一個問題,為什么要創(chuàng)建GEM\TTM框架去管理GPU的VRAM?
??我們都知道CPU的內(nèi)存 在Linux中通過伙伴系統(tǒng)進行管理,為什么GPU不能簡單套用CPU的內(nèi)存管理子系統(tǒng),而要額外創(chuàng)建GEM和TTM框架來管理GPU的VRAM?
??CPU 使用內(nèi)存的方法:直接用alloc_pages向伙伴系統(tǒng)申請page,伙伴系統(tǒng)找一片空閑的內(nèi)存返回,或者通過slab\slub\CMA\shmem等子系統(tǒng)間接申請page,申請成功后再對這些page進行讀寫。
??GPU和CPU類似,想辦法在顯存中找一片空閑的區(qū)域,成功找到后再對這片區(qū)域讀寫。共同點都是申請一片內(nèi)存區(qū)域,然后讀寫使用,為什么GPU要用GEM和TTM進行管理呢?
根本原因上面提到過,GPU的內(nèi)存總類很多,尋址總線無法統(tǒng)一

GPU使用內(nèi)存相比CPU有以下缺點

1.GPU的內(nèi)存種類多
??GPU有獨顯也有核顯,核顯借用CPU的RAM當作VRAM,獨顯有著自己的VRAM,當然也可以借用CPU的RAM當作VRAM,GPU的內(nèi)存種類多,既能訪問自己的顯存,也能訪問CPU的內(nèi)存,GPU的內(nèi)存總線沒有統(tǒng)一,不同的bus訪問方式甚至物理屬性不同(解釋下屬性不同:如果Texture放RAM中,S3睡眠的時候內(nèi)存是不斷電的,如果Texture放VRAM中,S3睡眠數(shù)據(jù)全丟了),所以CPU內(nèi)存管理框架無法運用在GPU上。

2.CPU與GPU之間帶寬有限
??內(nèi)存直接掛在CPU的地址和數(shù)據(jù)總線上,CPU訪問自己的內(nèi)存很簡單。
??GPU一般是掛在CPU的外設總線上例如PCIE上,所以GPU的VRAM地址需要映射后訪問。CPU和GPU不是直連,通訊帶寬是有限的,我們當然可以通過將IO映射到總線上來,通過MMIO直接進行數(shù)據(jù)傳輸,但是訪問會不斷的觸發(fā)外設的數(shù)據(jù)傳輸,而CPU和GPU的帶寬肯定沒有CPU和內(nèi)存之間的帶寬大,最好還是得借助老朋友DMA,去節(jié)省有限的帶寬

3.GPU的內(nèi)存使用方式與CPU不同
??GPU的使用上,往往使用一片顯存作為最小使用單位,例如一個Texture,Shader,而非單個字節(jié)做為最小單位。實際上對于應用層來說,我們不關心Texture被分配會在顯存的哪個位置,也不關心Texture是如何分配的,所以我們建立Buffer Object(BO)的概念,作為GPU顯存使用的最小單位。

??綜上,這就是GPU內(nèi)存管理框架產(chǎn)生的原因,我們需要一套框架去管理BO的分配與釋放,這套內(nèi)存管理框架和核心思想:應用層并不需要在乎我們BO被分配在哪,但是內(nèi)核層需要去處理GPU不同的bus,將bo放在合適的位置(例如VRAM或者是CPU的RAM)

TTM與GEM有什么不同

??TTM是用GEM的實現(xiàn)內(nèi)存管理框架(AMD提出),GEM一般被GPU廠商嵌入自己的數(shù)據(jù)結構,構造自己的內(nèi)存管理框架。

BO主要的應用場景實現(xiàn)區(qū)別

1.BO需要從VRAM 轉(zhuǎn)移到 RAM,或者是從RAM轉(zhuǎn)移到VRAM。(TTM提供實現(xiàn)接口)
2.BO需要將指向的內(nèi)存映射出來,供應用層CPU訪問。(TTM/GEM提供實現(xiàn)接口)
所以說TTM要比GEM復雜。文章來源地址http://www.zghlxwxcb.cn/news/detail-418960.html

到了這里,關于Linux drm內(nèi)存管理(一) 淺談TTM與GEM,為什么我們需要TTM和GEM?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • ThreadLocal-為什么會導致內(nèi)存泄漏

    一個Thread中存在字段為ThreadLocalMap ThreadLocal.ThreadLocalMap threadLocals = null; 也就是說我們使用threadLocal進行set操作和get操作,其實就是操作該Thread的threadLocalMap。 這個map是一個基于數(shù)組的key和value的格式,在進行get的時候,會將調(diào)用對象this作為key進行查詢。 hashMap是通過鏈表法,

    2024年02月03日
    瀏覽(35)
  • 為什么你的手機需要更大的內(nèi)存

    為什么你的手機需要更大的內(nèi)存

    可以確定的是,手機已經(jīng)先于電腦開啟了AI計算時代,新發(fā)布的手機幾乎都集成了AI處理器,那為什么你還需要更大的內(nèi)存呢,下面我們來探討下這個問題。 雖然目前新發(fā)布的手機并不都集成了AI處理器,但AI處理器已經(jīng)成為了一種趨勢和特色,越來越多的手機廠商開始開發(fā)和

    2024年02月02日
    瀏覽(29)
  • 銀河麒麟操作系統(tǒng)free查看服務器的內(nèi)存,為什么比實際物理內(nèi)存少很多?

    銀河麒麟操作系統(tǒng)free查看服務器的內(nèi)存,為什么比實際物理內(nèi)存少很多?

    銀河麒麟操作系統(tǒng)創(chuàng)建成功后,free -m命令查詢內(nèi)存大小,查詢結果比實際物理內(nèi)存小很多。 創(chuàng)建的虛擬機實際內(nèi)存為8192M。系統(tǒng)內(nèi)查詢可用內(nèi)存為6807M 使用 dmidecode -t memory 命令查看實際的硬件內(nèi)存大小, free -m 查詢系統(tǒng)內(nèi)內(nèi)存大小如下: 可以看到使用dmidecode -t memory查看的內(nèi)

    2024年02月07日
    瀏覽(32)
  • 為什么選擇C/C++內(nèi)存檢測工具AddressSanitizer?如何使用AddressSanitizer?

    目錄 1、C++程序中的內(nèi)存問題 2、AddressSanitizer是什么? 3、AddressSanitizer內(nèi)存檢測原理簡述

    2024年02月09日
    瀏覽(19)
  • kafka的堆內(nèi)存大小對kafka的影響以及為什么堆內(nèi)存大一些kafka會更穩(wěn)定

    堆內(nèi)存是Java虛擬機(JVM)用于存儲運行時數(shù)據(jù)的一部分內(nèi)存。對于Kafka Broker,它是一個由Java編寫的分布式消息系統(tǒng),因此Kafka Broker的性能和穩(wěn)定性會受到堆內(nèi)存大小的影響。 以下是堆內(nèi)存大小對Kafka的一些詳細影響: 存儲和緩存消息: Kafka Broker使用內(nèi)存來存儲消息,以支持

    2024年01月19日
    瀏覽(63)
  • 【API 管理】什么是 API 管理,為什么它很重要?

    【API 管理】什么是 API 管理,為什么它很重要?

    當今復雜的數(shù)字生態(tài)系統(tǒng)由許多相互關聯(lián)的部分組成。API 作為看門人和連接器在其中發(fā)揮著關鍵作用——提供了許多最終用戶甚至沒有注意到的自動化機會和效率。 企業(yè)密切關注 API。它們對于應用程序、數(shù)據(jù)和各種客戶交互的功能至關重要。 這使得 API 管理成為幾乎每個部

    2024年01月19日
    瀏覽(20)
  • 買手機就要買大容量的以及為什么手機內(nèi)存滿了之后會變卡

    買手機就要買大容量的以及為什么手機內(nèi)存滿了之后會變卡

    我現(xiàn)在手里正在用的這個是 IPhone XR,2019 年還是 2018 年買的,我記得買的時候已經(jīng)上市一段時間了。這個是蘋果第一款雙卡雙待的手機,到現(xiàn)在用了三四年了。 都說蘋果的手機可以用很多年還很流暢,而安卓的手機一般一兩年就卡的沒法用,需要換了。這種說法有一定的依據(jù)

    2024年02月09日
    瀏覽(22)
  • macOS Sonoma 14.3.1終于發(fā)布啦 為什么清除內(nèi)存對于提高mac性能非常重要?

    macOS Sonoma 14.3.1終于發(fā)布啦 為什么清除內(nèi)存對于提高mac性能非常重要?

    蘋果今天發(fā)布了macOS Sonoma 14.3.1,這是對去年9月發(fā)布的?macOS Sonoma?操作系統(tǒng)的微小更新。?macOS Sonoma ?14.3.1是在macOS Sonoma 14.3發(fā)布幾周后推出的。 ????macOS Sonoma 14.3?.1更新可以在所有符合條件的Mac電腦上,使用系統(tǒng)設置的軟件更新下載。 今天的更新解決了一個令人沮

    2024年02月22日
    瀏覽(23)
  • 為什么企業(yè)需要IT服務管理?

    為什么企業(yè)需要IT服務管理?

    什么是IT服務管理? 將IT服務管理功能擴展到技術服務之外,解決以業(yè)務為中心通過單一平臺,門戶和服務目錄管理服務供需,通過PaaS/低代碼開發(fā)工具加速創(chuàng)新和工作流自動化。 ? 為什么企業(yè)需要IT服務管理? 為了更好管理公司內(nèi)不同業(yè)務,員工需要IT,人力資源,設施,法

    2024年02月11日
    瀏覽(25)
  • 我們?yōu)槭裁葱枰狝PI管理系統(tǒng)?

    我們?yōu)槭裁葱枰狝PI管理系統(tǒng)?

    我們?yōu)槭裁葱枰狝PI管理系統(tǒng)? 隨著web技術的發(fā)展,前后端分離成為越來越多互聯(lián)網(wǎng)公司構建應用的方式。前后端分離的優(yōu)勢是一套Api可被多個客戶端復用,分工和協(xié)作被細化,大大提高了編碼效率,但同時也帶來一些“副作用”: 接口文檔不可靠。很多小伙伴管理接口文檔,

    2024年02月12日
    瀏覽(106)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包