0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

CPU與GPU維護數(shù)據(jù)結構來保證環(huán)形緩沖區(qū)的正確工作

Dbwd_Imgtec ? 來源:未知 ? 作者:李倩 ? 2018-03-30 15:01 ? 次閱讀

drm 給 GPU 發(fā)送硬件命令時,會將命令放置在一個環(huán)形緩沖區(qū),顯卡將會從這個環(huán)形緩沖區(qū)取命令執(zhí)行。它的工作原理基于一個循環(huán)隊列,數(shù)據(jù)存放在一個環(huán)裝區(qū)域。CPU 會將命令從隊列尾插入,GPU 會從隊頭取數(shù)據(jù),隊頭和隊尾在不斷地更新中。這個環(huán)形緩沖區(qū)存放在 GTT 內(nèi)存中,以便顯卡可以訪問到。

CPU 和 GPU 將各自維護一些數(shù)據(jù)結構來保證環(huán)形緩沖區(qū)的正確工作。這些 數(shù)據(jù)結構有緩沖區(qū)的基地址,緩沖區(qū)大小,寫指針和讀指針。其中寫指針和讀指針分別指向 CPU 將要寫入命令的地址和 GPU 將要讀取命令的地址。當這一次的讀取命令或者寫入命令結束之后,這兩個指針都會往前移動。當指針到達隊列的末尾時,將會移到隊列的頭部繼續(xù)執(zhí)行。如果我們不加處理的話,就可能會發(fā)生讀指針讀取了沒有寫入新命令的地址, 或者是寫指針把命令寫到了命令還沒有被 處理的區(qū)域。

因而當 CPU 寫入命令時,它應該通知 GPU。而 GPU 在讀取命令之后,應該通知 CPU。通知操作借由寫 CPU 中的讀指針副本和 GPU 中的寫指針副本完成。環(huán)形緩沖區(qū)示意圖如下圖。

初始階段,讀指針和寫指針指向同一區(qū)域,隨著程序的運行,讀指針和寫指針可能會再次相遇,這時有可能是隊列空,也有可能是隊列滿,為了避免二義性,我們避免發(fā)生隊列滿的情況,總在隊列將滿時,將命令流裝入新的緩沖區(qū)。那么驅(qū)動要時時監(jiān)控著緩沖區(qū)的操作,當隊列空時停止讀取,當隊列將滿時,將讀操作掛起。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10699

    瀏覽量

    209353
  • gpu
    gpu
    +關注

    關注

    27

    文章

    4591

    瀏覽量

    128141
  • 數(shù)據(jù)結構

    關注

    3

    文章

    568

    瀏覽量

    40030

原文標題:CPU 與 GPU 之間的緩沖區(qū)

文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32進階之串口環(huán)形緩沖區(qū)實現(xiàn)

    完了數(shù)據(jù),‘0’地址空間的數(shù)據(jù)進行釋放掉,列隊頭指向下一個可以處理數(shù)據(jù)的地址‘1’。從而實現(xiàn)整個環(huán)形緩沖區(qū)
    發(fā)表于 06-08 14:03

    MCU進階之串口環(huán)形緩沖區(qū)實現(xiàn)

    歌曲一步步用代碼實現(xiàn)吧:從隊列到串口緩沖區(qū)的實現(xiàn)串口環(huán)形緩沖區(qū)收發(fā):在很多入門級教程中,我們知道的串口收發(fā)都是:接收一個數(shù)據(jù),觸發(fā)中斷,然
    發(fā)表于 08-17 13:11

    STM32串口環(huán)形緩沖區(qū)的實現(xiàn)

    [RINGBUFF_LEN];}RingBuff_t;RingBuff_t ringBuff;//創(chuàng)建一個ringBuff的緩沖區(qū)②初始化結構體相關信息:使得我們的環(huán)形緩沖區(qū)是頭尾相連
    發(fā)表于 10-16 11:40

    基于ARM和FPGA的環(huán)形緩沖區(qū)接口設計方案

    高速數(shù)據(jù)收發(fā)情況下,需要設計一種合理的緩沖區(qū)進行數(shù)據(jù)傳輸速率的匹配和緩沖。另外,對于ARM CPU來說,由于
    發(fā)表于 05-30 05:00

    環(huán)形緩沖區(qū)的設計分享!

    以下內(nèi)容轉自網(wǎng)絡,感謝網(wǎng)友:玩笑joker 環(huán)形緩沖區(qū)是嵌入式系統(tǒng)中十分重要的一種數(shù)據(jù)結構,比如在一個視頻處理的機制中,環(huán)形緩沖區(qū)就可以理
    發(fā)表于 10-28 23:29

    環(huán)形緩沖區(qū)簡介

    程序中,經(jīng)常使用環(huán)形緩沖器作為數(shù)據(jù)結構存放通信中發(fā)送和接收的數(shù)據(jù)。環(huán)形
    發(fā)表于 08-17 06:56

    請問串口的DMA接收緩沖區(qū)是不是環(huán)形緩沖區(qū)

    、系統(tǒng)在創(chuàng)建DMA緩沖區(qū)的時候,建立了put_index和get_index,會隨著數(shù)據(jù)的寫入和讀取修改它們的值;3、以上兩個相互配合,客觀上將DMA的緩沖區(qū)維護成了一個
    發(fā)表于 08-30 14:27

    環(huán)形緩沖區(qū)讀寫操作的分析與實現(xiàn)

    環(huán)形緩沖區(qū)是嵌入式系統(tǒng)中一種重要的常用數(shù)據(jù)結構。在多任務環(huán)境下實現(xiàn)時,如果有多個讀寫任務,一般需要用信號量保護多個任務共享的環(huán)形
    發(fā)表于 04-15 11:35 ?40次下載

    環(huán)形緩沖區(qū)的實現(xiàn)原理

    在通信程序中,經(jīng)常使用環(huán)形緩沖區(qū)作為數(shù)據(jù)結構存放通信中發(fā)送和接收的數(shù)據(jù)。環(huán)形
    的頭像 發(fā)表于 03-22 10:03 ?7408次閱讀
    <b class='flag-5'>環(huán)形</b><b class='flag-5'>緩沖區(qū)</b>的實現(xiàn)原理

    緩沖區(qū)是啥意思 STM32串口數(shù)據(jù)接收之環(huán)形緩沖區(qū)

    完成。 缺點: ①緩沖數(shù)據(jù)組數(shù)一定,且有多變量,代碼結構不太清晰。 ②接收數(shù)據(jù)長度可能大于數(shù)組大小,也可能小于數(shù)組大小。不靈活,需要接收數(shù)據(jù)
    的頭像 發(fā)表于 07-22 15:33 ?1.1w次閱讀

    STM32串口數(shù)據(jù)接收 --環(huán)形緩沖區(qū)

    程序中,經(jīng)常使用環(huán)形緩沖器作為數(shù)據(jù)結構存放通信中發(fā)送和接收的數(shù)據(jù)。環(huán)形
    發(fā)表于 12-28 19:24 ?30次下載
    STM32串口<b class='flag-5'>數(shù)據(jù)</b>接收 --<b class='flag-5'>環(huán)形</b><b class='flag-5'>緩沖區(qū)</b>

    環(huán)形緩沖區(qū)簡介 STM32環(huán)形緩沖區(qū)示例

    在單片機中串口通信是我們使用最頻繁的,使用串口通信就會用到串口的數(shù)據(jù)接收與發(fā)送,環(huán)形緩沖區(qū)方式接收數(shù)據(jù)可以更好的保證
    的頭像 發(fā)表于 05-31 11:27 ?5802次閱讀
    <b class='flag-5'>環(huán)形</b><b class='flag-5'>緩沖區(qū)</b>簡介 STM32<b class='flag-5'>環(huán)形</b><b class='flag-5'>緩沖區(qū)</b>示例

    STM32進階之串口環(huán)形緩沖區(qū)實現(xiàn)

    碼代碼的應該學數(shù)據(jù)結構都學過隊列。環(huán)形隊列是隊列的一種特殊形式,應用挺廣泛的。因為有太多文章關于這方面的內(nèi)容,理論知識可以看別人的,下面寫得挺好的:STM32進階之串口環(huán)形緩沖區(qū)實現(xiàn)
    發(fā)表于 12-06 10:00 ?2768次閱讀

    環(huán)形緩沖區(qū)的實現(xiàn)思路

    單片機程序開發(fā)一般都會用到UART串口通信,通過通信實現(xiàn)上位機和單片機程序的數(shù)據(jù)交互。通信中為了實現(xiàn)正常的收發(fā),一般都會有對應的發(fā)送和接收緩存暫存通信數(shù)據(jù)。這里使用
    的頭像 發(fā)表于 01-17 15:07 ?1474次閱讀

    C++環(huán)形緩沖區(qū)設計與實現(xiàn)

    Buffer) 環(huán)形緩沖區(qū)(Circular Buffer),也被稱為循環(huán)緩沖區(qū)(Cyclic Buffer)或者環(huán)形隊列(Ring Buffer),是一種
    的頭像 發(fā)表于 11-09 11:21 ?1271次閱讀
    C++<b class='flag-5'>環(huán)形</b><b class='flag-5'>緩沖區(qū)</b>設計與實現(xiàn)