首頁> 現代都市> 重生1993:大國重工> 第38章 一代敲定 二代搭建數學模型

第38章 一代敲定 二代搭建數學模型

2026-06-21 12:18:14 作者: 番茄炒西紅柿加糖
  三天後,整套VCD解碼在仿真環境連續跑了七十二小時,拷機過程中雖零星出現過小故障,但眾人當場排查修復,完整跑完全程。

  陳鋒把這段時間測試的日誌從頭翻到尾再梳理了一遍。

  本書由𝕥𝕨𝕜𝕒𝕟.𝕔𝕠𝕞全網首發

  DSP的溫度曲線在最初兩小時爬升了一段,之後一直保持平穩,沒有再往上走。

  單層PCB的電源紋波比預期大了百分之十五,不過始終沒有超出DSP的工作範圍。

  改裝的雷射頭讀了一百多張碟,有七張出現了跳軌,基本都是劃痕嚴重的舊碟,其餘正常碟片全通過。

  ……

  陳鋒將測試記錄本交給劉教授:「我們目前能做的只有這些,其他的一時半會也找不出來。」

  劉教授接過記錄本,將它放在桌上,隨後對一直等在一旁的趙蕭吩咐道:「趙蕭,你把我們這邊最終技術參數表進行匯總,等過兩天交到川飛那邊去。」

  趙蕭在另一個本子上開始記錄:解析度256×192,幀率27,量化矩陣參數中頻步長加粗,運動搜索範圍正負四,色度處理採用亮度復用,內存搬運按行預取……

  寫完,他長鬆一口氣:「終於不用再改這破代碼了。」

  陳鋒笑了笑,將一個新本子拿出來,上面赫然寫著:

  二代方案。

  DSP緊耦合併行,兩個DSP。

  左邊標註DSP1—碼流解析/VLD/宏塊控制;右邊標註DSP2—IDCT/運動補償/像素重構。

  趙蕭臉色一白,忍不住開始嘟囔道:「陳鋒,你還是人嗎?大家已經連續熬了十來天了,你得讓我們緩緩。」

  「你之前不是說並行更簡單嗎?現在機會來了,趙師兄是時候證明自己了。」

  「我呸,我什麼時候說過。」趙蕭矢口否認起來。

  這時,劉教授拿起陳鋒的新本子,他指著兩個方塊之間的那條箭頭:「硬體握手用什麼方式?」

  陳鋒見狀在紙上補了一行字:雙口RAM桌球緩衝,幀級切換。


  然後又在下面畫了一個時序圖,標明了兩個DSP的工作周期和握手信號的觸發時機。

  劉教授點了點頭,坐回自己的位置,翻開TMS320C25手冊,去找雙處理器應用那一章。

  趙蕭嘴巴上雖然說著不願意,但還是湊過來。

  他看了一會兒,指著DSP2後面的運動補償道:「運動補償應該還能再拆。

  全局運動矢量和局部運動矢量分開算,一個DSP可能忙不過來。」

  陳鋒咬著筆尖想了想,隨後在那行字旁邊加了一個括號,括號里寫著可進一步拆分。

  隨後又拿出一張草稿,開始分析、手繪。

  他將DSP2的任務分成了三個子模塊:IDCT、全局運動補償、局部運動補償。

  但很快他又在全局運動補償上面畫了一個叉,邏輯太複雜,一個DSP搞不定,要拆就只能再加晶片,三個難度只會更大。

  他把那個小框圖裡面重新寫寫上:維持原分工,優先保證流水線不打斷,如果有更優解再嘗試。

  這時劉教授從手冊上抬起頭,指著手冊上的消息道:

  「雙DSP的供電和時鐘分配不能共用一路。

  單層PCB的電源噪聲已經夠大了,兩顆DSP同時跑,互相干擾,會出問題。」

  陳鋒聞言,把這句話記在紙上,在二代方案的待辦事項里加了一條:雙DSP獨立供電,時鐘走線等長匹配。

  趙蕭看著陳鋒只記錄劉教授的話,嚷嚷道:「那板子又要改成雙層了嗎?這成本不是又要往上走。」

  陳鋒搖了搖頭:「先走通再說,成本的事,後面再砍。還有如果你能再多解決一個問題,那就按你的方案來。」

  趙蕭想了想,最後選擇閉上了嘴,顯然他不想給自己找事,畢竟現在並行還沒有處理完,如果再多一件事,那他豈不是又要熬一段時間。

  陳鋒側頭看向劉教授:「老師,我們可以先搭建數學模型嗎?」

  劉教授點了點頭,他用粉筆在黑板上先把一代方案的性能參數寫上去。

  幀率27幀/秒,每幀解碼時間約37毫秒。


  隨後拆解這37毫秒的構成:

  DSP總周期=碼流解析周期+IDCT周期+運動補償周期+內存搬運周期+系統開銷。

  碼流解析大概占了百分之十五;IDCT占了百分之三十五;運動補償占了百分之三十;內存搬運占了百分之十五;剩下百分之五是各種跳轉和同步開銷。

  劉教授在下面畫了一條橫線,另起一行,寫上雙DSP理論模型。

  他把任務分成兩組,A組碼流解析加一部分內存搬運;B組IDCT加運動補償加剩餘內存搬運。

  劉教授看向陳鋒:「上課講得阿姆達爾定律聽懂了嗎?」

  陳鋒點了點頭,隨後只見劉教授開始在黑板寫:加速比=1/(f_A+f_B/2+f_sync)。

  寫完,劉教授開始講解:「你可以再聽聽,這是並行DSP標準加速計算公式。

  f_A:必須串行、沒辦法拆分的代碼占比,咱們一代解碼固定15%,這部分只能第一顆DSP單獨跑,另一顆晶片插不上手;

  f_B:可以拆分、雙晶片同時運算的並行代碼占比,對應咱們後端解碼,占85%;

  f_{sync}:雙DSP數據對接、緩存握手產生的同步耗時損耗。

  套入我們現有一代實測參數計算:

  1/(0.15+0.85/2)=1/(0.15+0.425)=1/0.575≈1.74

  意思就是:拋開同步損耗,雙DSP理論運行速度是原版單DSP的1.74倍。

  一代穩態幀率27幀,換算下來理論極限幀率47幀。」

  趙蕭盯著算式皺眉:「紙面數據很漂亮?」

  「純理想理論峰值。」陳鋒同樣皺著眉道,「這1.74倍加速、47幀幀率,剔除了所有硬體開銷。

  真機上機後受各類硬體損耗限制,實際幀率一定會大幅低於理論計算值。」

  劉教授點了點頭,把粉筆放下:「陳鋒說得對,理論值確實是47,但實際能做到多少,看硬體設計和代碼質量。」

  陳鋒盯著黑板若有所思起來,最後在筆記本上寫了一行結論:二代方案理論幀率45+,工程目標40。

  等陳鋒記錄寫完這些,劉教授繼續在黑板上寫下:數學模型的核心——任務劃分粒度。

  隨後他把一幀的解碼過程畫成一條時間軸,標出每個階段的起止時間。

  趙蕭指著時間軸上的一個節點:「宏塊級並行。一幀里有幾百個宏塊,每個宏塊可以獨立解碼。

  DSP1解奇數宏塊,DSP2解偶數宏塊,不需要同步,解完拼起來就行。」

  劉教授否了這個想法:「運動補償需要參考相鄰宏塊。

  奇數宏塊和偶數宏塊之間有依賴關係,除非把參考幀提前拆開,否則沒法並行。」

  陳鋒想了一會兒,向劉教授問道:「如果我們改為幀級並行。

  一幀一幀輪著來,DSP1解第N幀,DSP2解第N+1幀。

  沒有依賴,不需要同步,但延遲會增加一幀時間。這個是否可行?」

  「延遲一幀問題不大。VCD又不是打遊戲,用戶感覺不到。」趙蕭一邊回應著陳鋒,一邊望向劉教授。

  「理論行得通,我們先試試……」


上一章 書籤 目錄 下一章

關閉
Δ