在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

CPU中的特殊指令可以加速編碼效率

LiveVideoStack ? 來(lái)源:LiveVideoStack ? 2023-02-14 13:38 ? 次閱讀

依據(jù)客戶(hù)真實(shí)需求,定制下一代CPU是我們的工作之一,我們選擇做視頻轉(zhuǎn)碼的另一個(gè)原因,是為了設(shè)計(jì)更好滿(mǎn)足音視頻領(lǐng)域需求的下一代硬件。所以今天還會(huì)給大家介紹下一代CPU中關(guān)于編解碼的特殊指令,這些特殊指令可以加速編碼效率。

今天,我分享的內(nèi)容分為三個(gè)章節(jié)。首先,使用英特爾豐富的工具鏈對(duì)視頻轉(zhuǎn)碼進(jìn)行分析。我們作為硬件廠商,本身不做音視頻轉(zhuǎn)碼業(yè)務(wù),但俗話說(shuō)“弄斧要到班門(mén)”,所以我們首先對(duì)視頻轉(zhuǎn)碼的一些典型場(chǎng)景進(jìn)行了微架構(gòu)層面的分析,為后面的優(yōu)化做好鋪墊。然后,介紹方案的核心思想,即如何重用一次編碼的信息來(lái)提高二次編碼的效率。之前提到,計(jì)算復(fù)雜度在轉(zhuǎn)碼里占了很大的成本,所以要從源頭上降低計(jì)算復(fù)雜度。最后,介紹SIMD指令集。SIMD的全稱(chēng)是Single Instruction Multiple Data,意思是單指令多數(shù)據(jù),表明一條指令可以同時(shí)操作多個(gè)數(shù)據(jù)。

01 視頻轉(zhuǎn)碼分析

首先,我們對(duì)視頻轉(zhuǎn)碼進(jìn)行分析。

7c053b66-ac23-11ed-bfe3-dac502259ad0.jpg

我們從相關(guān)市場(chǎng)獲取了圖中的數(shù)據(jù)。第一張圖表示在2020年,視頻數(shù)據(jù)在互聯(lián)網(wǎng)數(shù)據(jù)占比70%。到現(xiàn)在,視頻數(shù)據(jù)在互聯(lián)網(wǎng)數(shù)據(jù)占比已超過(guò)80%。第二張圖是PRC Video Cloud Market Forecast,圖中呈增長(zhǎng)趨勢(shì)。雖然目前共有云市場(chǎng)的增速減緩,但是視頻云的增長(zhǎng)仍有很大潛力。回到轉(zhuǎn)碼本身,第三張圖和第四張圖來(lái)自Video Developer report。從第四張圖可以看到,在2019年,H.264仍是主流視頻編碼技術(shù),90%以上仍使用H.264。其次,較多使用的是H.265,然后是VP9和AV1,H.265也在逐漸成為一種趨勢(shì)。第三張圖表示視頻編碼器開(kāi)發(fā)人員計(jì)劃在2022年投入的情況。其中,投入最多的是H.265,然后是AV1,再然后是H.266,這三個(gè)協(xié)議正在成為主流編碼器協(xié)議,我們后續(xù)將基于這些主流編碼器進(jìn)行開(kāi)發(fā)。

7c205e82-ac23-11ed-bfe3-dac502259ad0.jpg

接下來(lái)進(jìn)行直播成本分析。這是一張直播的結(jié)構(gòu)圖,主播上傳內(nèi)容到上行CDN,然后再發(fā)送到轉(zhuǎn)碼中心進(jìn)行內(nèi)容識(shí)別、截屏、錄制和轉(zhuǎn)碼,接著再分發(fā)到下行CDN。這個(gè)過(guò)程中,成本最大的是網(wǎng)絡(luò)帶寬和轉(zhuǎn)碼服務(wù)器。之前提到,網(wǎng)絡(luò)帶寬取決于觀看人數(shù)和碼率。舉個(gè)例子,觀看2M的視頻和觀看500K的視頻所需的網(wǎng)絡(luò)帶寬不同,1000個(gè)人同時(shí)觀看視頻和10個(gè)人同時(shí)觀看視頻所需的網(wǎng)絡(luò)帶寬也不同。轉(zhuǎn)碼服務(wù)取決于分辨率、碼率和視頻編碼標(biāo)準(zhǔn)等。

7c5475d2-ac23-11ed-bfe3-dac502259ad0.jpg

我們對(duì)頭部的互聯(lián)網(wǎng)廠商進(jìn)行了分析。如第一張圖所示,主要有兩個(gè)成本,一個(gè)是Traffic price,即帶寬成本,另一個(gè)是轉(zhuǎn)碼成本。第二張圖表示直播一小時(shí)內(nèi),轉(zhuǎn)碼和帶寬的比例,圖的橫軸是觀看人數(shù),縱軸是轉(zhuǎn)碼和帶寬費(fèi)用的比例。可以看到,當(dāng)觀眾數(shù)大于等于50時(shí),帶寬成為主要的成本。舉個(gè)例子,頂級(jí)流量主播的一場(chǎng)直播的帶寬成本要幾百萬(wàn),此時(shí)轉(zhuǎn)碼成本只有幾千塊,相對(duì)帶寬成本幾乎可以忽略。但對(duì)于數(shù)量眾多的小主播來(lái)講,觀眾數(shù)可能只有十幾個(gè),此時(shí)的帶寬較低,所以轉(zhuǎn)碼成本成為主要的成本。針對(duì)這兩種情況,在帶寬成本較大時(shí),我們以?xún)?yōu)化帶寬為主,在轉(zhuǎn)碼成本較大時(shí),我們以?xún)?yōu)化轉(zhuǎn)碼速度/轉(zhuǎn)碼性能為主。

7c82b2a8-ac23-11ed-bfe3-dac502259ad0.jpg

接下來(lái),介紹幾款好用的英特爾的工具。首先是V-Tune,是一個(gè)可以快速發(fā)現(xiàn)應(yīng)用程序瓶頸的可視化的工具。左下圖展示了一個(gè)例子,可以看到,我們可以知道轉(zhuǎn)碼里每個(gè)函數(shù)占用的CPU時(shí)間,雙擊就可進(jìn)入code,精確定位哪行code的占比較高,所以可以清楚地知道熱點(diǎn)函數(shù)在哪里。我們支持CPU、GPUFPGA,也支持多語(yǔ)言和多操作系統(tǒng)。V-Tune的優(yōu)點(diǎn)是直觀,缺點(diǎn)是會(huì)為系統(tǒng)帶來(lái)一定的負(fù)擔(dān)。

另一個(gè)工具是Emon,其用于low-level層面的數(shù)據(jù)抓取。Emon的優(yōu)點(diǎn)是可以直接抓取Performance Monitoring Units(PMUs),即寄存器的值,因此功率消耗較少。觀察右上圖,可以知道CPU的利用率、AVX指令集的使用比例,也可以知道該函數(shù)是Backend_Bound還是Frontend_Bound。因此,可以清楚知道系統(tǒng)的問(wèn)題在哪里。

7cc77ac8-ac23-11ed-bfe3-dac502259ad0.jpg

利用剛才介紹的工具,可以估計(jì)轉(zhuǎn)碼消耗的算力。可以看到,在某一個(gè)轉(zhuǎn)碼場(chǎng)景里,編碼過(guò)程中的運(yùn)動(dòng)估計(jì)(Motion Estimation)占比超過(guò)40%,但不同的場(chǎng)景情況有所不同,舉個(gè)例子,將8K的數(shù)據(jù)轉(zhuǎn)換成360P的數(shù)據(jù)時(shí),解碼消耗的算力大于轉(zhuǎn)碼消耗的算力。在大部分情況下,若考慮幀決策等,運(yùn)動(dòng)估計(jì)的占比將超過(guò)50%,因此這成為了我們關(guān)注的熱點(diǎn)。

02重用運(yùn)動(dòng)矢量等信息提高轉(zhuǎn)碼效率和質(zhì)量

接下來(lái),介紹方案的核心思想。

7cef2758-ac23-11ed-bfe3-dac502259ad0.jpg

我們現(xiàn)在考慮轉(zhuǎn)碼,比如將H.264或H.265轉(zhuǎn)換成H.266或AV1。在一次編碼時(shí),我們可以獲得slice type、mb qp和mb partition等信息。在現(xiàn)在的編解碼方式中,解碼之后這些信息就會(huì)被舍棄。而我們的核心思想是,在二次編碼中重用一次編碼的信息。通過(guò)粗略計(jì)算,在大部分場(chǎng)景下,重用一次編碼信息可以減少大約67%的運(yùn)算量。

對(duì)于這種思路,大家可能有很多問(wèn)題。比如,當(dāng)幀率或分辨率在轉(zhuǎn)碼前后發(fā)生變化時(shí),會(huì)不會(huì)出現(xiàn)一些新的問(wèn)題。因此,雖然方案的原理比較直接,但實(shí)際應(yīng)用時(shí)需要解決很多“并發(fā)癥”。特別是,我們要考慮如何一方面提升轉(zhuǎn)碼速度,另一方面保證轉(zhuǎn)碼質(zhì)量,否則轉(zhuǎn)碼質(zhì)量不好,即使轉(zhuǎn)碼速度很快,也不能投入實(shí)用。

7d1ea988-ac23-11ed-bfe3-dac502259ad0.png

舉個(gè)例子說(shuō)明如何重用一次編碼的信息來(lái)提高視頻質(zhì)量。JND是一種感知編碼技術(shù),在左上的圖中,四個(gè)block中只有左下的block的值為1,其余block的值為0。但對(duì)于人眼來(lái)說(shuō),可以忽略數(shù)值1,即四個(gè)block的值可以都為0。這是JND的核心思想:過(guò)濾人眼感觸不到的信息。對(duì)此,經(jīng)典的方法是使用雙邊濾波器等進(jìn)行過(guò)濾,但這些方法都是無(wú)差別的濾波,容易造成“誤傷”。而現(xiàn)在由于掌握一次編碼信息,我們知道哪些信息可以被平滑,哪些信息必須保留,通過(guò)設(shè)置權(quán)重的方式來(lái)進(jìn)行“區(qū)別對(duì)待”。這樣做可以帶來(lái)兩個(gè)好處,一是可以提高主觀視覺(jué)的質(zhì)量,二是在限定碼率的情況下,可以將碼率用在刀刃上,大幅度地提高客觀質(zhì)量。比如,將一個(gè)原碼率是50Mbps的視頻轉(zhuǎn)碼為2Mbps的視頻,采用我們的方式就可以較大地提高質(zhì)量。

7d42c566-ac23-11ed-bfe3-dac502259ad0.jpg

另一種方式是使用一次編碼的殘差。在H.264和H.265里,有two-path的算法,但這個(gè)算法通常不被使用。這是因?yàn)椋m然經(jīng)過(guò)一次編碼可以掌握大概的信息,并且在此基礎(chǔ)上二次編碼的結(jié)果更精準(zhǔn),編碼質(zhì)量更高且碼率更低,但是這會(huì)大幅度地增加計(jì)算量,推高轉(zhuǎn)碼成本和延遲。為了解決這個(gè)問(wèn)題,我們直接重用一次編碼的信息來(lái)實(shí)現(xiàn)類(lèi)似二次編碼的效果。

03SIMD指令集加速轉(zhuǎn)碼熱點(diǎn)函數(shù)

最后,介紹如何用SIMD指令集加速轉(zhuǎn)碼熱點(diǎn)函數(shù)。

至強(qiáng)服務(wù)器平臺(tái)SIMD指令集經(jīng)迭代了很多代,大家比較熟知的比如AVX2,AVX512等。第二代至強(qiáng)可擴(kuò)展平臺(tái)在AVX512的基礎(chǔ)上支持了INT8數(shù)據(jù)精度,第三代支持BF16指令集,2023年初量產(chǎn)的第四代平臺(tái)的AI性能在BF16和INT8上較上一代提升了8倍,其中加入了AMX 指令集,也可以理解為在CPU內(nèi)部有一塊硬件加速器。比如INT8的算力,一顆CPU的性能接近200T,很多以前在CPU上無(wú)法完成的運(yùn)算現(xiàn)在都成為可能。

7d6cc9e2-ac23-11ed-bfe3-dac502259ad0.jpg

最后介紹一個(gè)例子,說(shuō)明如何使用SIMD指令集優(yōu)化視頻編碼。在H.264中有一個(gè)大小為16×16的宏塊,需要對(duì)其求和或平方和,那么如何用avx512對(duì)其進(jìn)行加速呢?需要執(zhí)行以下幾步。首先,將16個(gè)int8的數(shù)據(jù)載入到mm128寄存器中。然后,將int8數(shù)據(jù)轉(zhuǎn)換成int32,這是因?yàn)橛袝r(shí)候運(yùn)算結(jié)果為負(fù)數(shù),而int8無(wú)法表示負(fù)數(shù)。接著,將16個(gè)int32數(shù)據(jù)水平相加,這需要消耗0.5個(gè)指令周期,而手動(dòng)計(jì)算則需要8次計(jì)算,因此極大地提高了效率。最后,將16個(gè)int32平方后再水平相加。經(jīng)過(guò)這樣的處理,性能可提高16倍或8倍(若為一條指令則提高16倍,若為兩條指令則提高8倍)。






審核編輯:劉清

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

    關(guān)注

    45

    文章

    3655

    瀏覽量

    134894
  • 編解碼
    +關(guān)注

    關(guān)注

    1

    文章

    140

    瀏覽量

    19635
  • SIMD
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    10311
  • 視頻轉(zhuǎn)碼
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7511

原文標(biāo)題:基于運(yùn)動(dòng)矢量重用的轉(zhuǎn)碼優(yōu)化

文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CPU(中央處理器)的概念、結(jié)構(gòu)特點(diǎn)和在系統(tǒng)的地位

    ? CPU 在整個(gè)計(jì)算機(jī)系統(tǒng)扮演“大腦”與“指揮官”的角色。它負(fù)責(zé)從存儲(chǔ)器取出指令,解析并執(zhí)行各種邏輯、算術(shù)、控制和數(shù)據(jù)處理任務(wù) ? CPU
    的頭像 發(fā)表于 01-14 13:57 ?159次閱讀

    TMS320C62x DSP CPU指令集參考指南

    電子發(fā)燒友網(wǎng)站提供《TMS320C62x DSP CPU指令集參考指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-17 16:24 ?0次下載
    TMS320C62x DSP <b class='flag-5'>CPU</b>和<b class='flag-5'>指令</b>集參考指南

    如何提高編碼器的工作效率與作用

    編碼器是一種將信號(hào)或數(shù)據(jù)從一種形式或格式轉(zhuǎn)換為另一種形式的設(shè)備。在工業(yè)自動(dòng)化、通信、計(jì)算機(jī)等領(lǐng)域中,編碼器扮演著至關(guān)重要的角色。提高編碼器的工作效率和作用
    的頭像 發(fā)表于 11-24 10:12 ?232次閱讀

    如何限制容器可以使用的CPU資源

    默認(rèn)情況下容器可以使用的主機(jī) CPU 資源是不受限制的。和內(nèi)存資源的使用一樣,如果不對(duì)容器可以使用的 CPU 資源進(jìn)行限制,一旦發(fā)生容器內(nèi)程序異常使用
    的頭像 發(fā)表于 10-24 17:04 ?281次閱讀
    如何限制容器<b class='flag-5'>可以</b>使用的<b class='flag-5'>CPU</b>資源

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】--了解算力芯片CPU

    并行執(zhí)行不同的指令,這樣就可以同時(shí)處理多個(gè)指令,從而提高處理器的性能。CPU流水線的起點(diǎn)就是從指令緩存(ImstructionCache,簡(jiǎn)
    發(fā)表于 10-20 12:03

    CPU時(shí)鐘周期、機(jī)器周期和指令周期的關(guān)系

    CPU時(shí)鐘周期、機(jī)器周期和指令周期是計(jì)算機(jī)體系結(jié)構(gòu)中三個(gè)緊密相連且至關(guān)重要的概念,它們共同構(gòu)成了CPU執(zhí)行指令和處理數(shù)據(jù)的基本時(shí)間框架。以下是對(duì)這三個(gè)周期之間關(guān)系的詳細(xì)解析。
    的頭像 發(fā)表于 09-26 15:38 ?3497次閱讀

    CISC(復(fù)雜指令集)與RISC(精簡(jiǎn)指令集)的區(qū)別  

    。這種架構(gòu)會(huì)增加CPU結(jié)構(gòu)的復(fù)雜性和對(duì)CPU工藝的要求,但對(duì)于編譯器的開(kāi)發(fā)十分有利。比如上面的例子,C程序 的a*=b就可以直接編譯為一條乘法指令
    發(fā)表于 07-30 17:21

    AGV輪轂電機(jī)編碼

    編碼器還可以提供電機(jī)的絕對(duì)位置信息,這對(duì)于AGV系統(tǒng)的定位和校準(zhǔn)至關(guān)重要。在AGV系統(tǒng),一般會(huì)使用Z信號(hào)來(lái)表示編碼器的絕對(duì)位置。Z信號(hào)是一個(gè)特殊
    的頭像 發(fā)表于 07-22 11:33 ?562次閱讀
    AGV輪轂電機(jī)<b class='flag-5'>中</b>的<b class='flag-5'>編碼</b>器

    數(shù)控車(chē)床t指令對(duì)刀步驟

    精度的關(guān)鍵步驟。通過(guò)對(duì)刀,可以確保刀具與工件之間的相對(duì)位置準(zhǔn)確,從而保證加工尺寸的準(zhǔn)確性。 提高生產(chǎn)效率:通過(guò)對(duì)刀,可以減少加工過(guò)程的誤差,提高加工
    的頭像 發(fā)表于 06-07 09:50 ?2016次閱讀

    CPU寄存器的用途

    在計(jì)算機(jī)體系結(jié)構(gòu),中央處理單元(CPU)無(wú)疑是整個(gè)系統(tǒng)的核心。CPU負(fù)責(zé)執(zhí)行指令、處理數(shù)據(jù)、控制計(jì)算機(jī)系統(tǒng)的運(yùn)行等關(guān)鍵任務(wù)。而在這個(gè)過(guò)程
    的頭像 發(fā)表于 05-30 17:09 ?1533次閱讀

    微軟推進(jìn)CPU指令集更新,舊版CPU或無(wú)法運(yùn)行Edge瀏覽器

    按照微軟的計(jì)劃,Microsoft Edge 126.0正式版將于2024年6月13日發(fā)布。屆時(shí),未支持SSE3指令集的舊CPU用戶(hù)可能需繼續(xù)使用現(xiàn)有的版本。
    的頭像 發(fā)表于 05-18 10:33 ?1010次閱讀

    什么是RISC-V?RISC-V指令集的優(yōu)勢(shì)

    CPU 支持的所有指令指令的字節(jié)級(jí)編碼就是這個(gè) CPU指令集架構(gòu)(Instruction
    發(fā)表于 03-05 10:31 ?913次閱讀
    什么是RISC-V?RISC-V<b class='flag-5'>指令</b>集的優(yōu)勢(shì)

    服務(wù)器CPU核心和線程到底是什么?

    CPU核心作為CPU(中央處理單元)的主要處理單元。該組件從計(jì)算機(jī)內(nèi)存讀取并執(zhí)行指令。每個(gè)核心一次只能運(yùn)行一項(xiàng)任務(wù),因此具有多個(gè)核心的 CPU
    的頭像 發(fā)表于 03-04 17:09 ?1430次閱讀

    【米爾-全志T113-i開(kāi)發(fā)板試用】JPG硬件編碼的實(shí)現(xiàn)、YUV轉(zhuǎn)換neon加速和對(duì)比測(cè)試

    T113-i只支持jpg/mjpg編碼,并不支持mpeg4/h263/h264/h265/av1這些 也行吧,我們還可以拿這個(gè)加速JPG圖片編碼 開(kāi)發(fā)環(huán)境配置 基礎(chǔ)開(kāi)發(fā)環(huán)境搭建參考上
    發(fā)表于 02-12 14:06

    ARM編碼方式與尋址方式有何不同?

    ARM的編指方式與尋址方式有何不同? ARM處理器是一種廣泛應(yīng)用的微處理器架構(gòu),被廣泛用于移動(dòng)設(shè)備、嵌入式設(shè)備以及智能家居等領(lǐng)域。在ARM架構(gòu)編碼方式和尋址方式是兩個(gè)關(guān)鍵概念,它們?cè)?b class='flag-5'>指令
    的頭像 發(fā)表于 01-29 18:10 ?733次閱讀
    主站蜘蛛池模板: 天堂网ww| 免费视频你懂得| 扒开末成年粉嫩的小缝强文| 黑人边吃奶边扎下面激情视频| 人与禽性视频77777| 日本黄色免费在线| 欧美三级视频网| 精品国产成人系列| 国产一级特黄特色aa毛片| 高清激情小视频在线观看| 最新大黄网站免费| 天天爱综合| 国产精品久久久久久久免费 | 黄的三级在线播放| 丁香六月婷婷激情| 天天做天天爱天天综合网 | 99久久综合给久久精品| 天天透天天干| 干夜夜| 一区二区三区视频观看| 中国黄色一级毛片| 色国产在线视频一区| 久久综合香蕉久久久久久久| 国产日本特黄特色大片免费视频| 亚洲黄色小说网站| 国产色在线 | 亚洲| 亚洲区一二三四区2021| 一个人看aaaa免费中文| 日韩欧美亚洲综合一区二区| 久久精品国产亚洲5555| 亚洲最大毛片| 成人影院在线观看视频| 日本精品卡一卡2卡3卡四卡三卡| 性欧美网站| 久草a视频| 天堂网www天堂在线网| 欧美系列在线观看| 亚洲吊丝网| 国产在线美女| 免费看美女午夜大片| 亚洲人成网i8禁止|