6427| 18
|
SoC廣納軟硬體架構 H.264/AVC倚重矽智財核心 |
文.鍾慶豐
隨著影音設備需求量增加,從手持裝置播放器到家庭娛樂系統,大量網路應用需求與高品質影音條件,使多媒體SoC設計成為眾家爭食之地。尤其是對視訊影音編解碼(CODEC)需求,H.264/AVC編碼雖僅是SoC應用產業一小部分,卻揭示另一種更具彈性的架構設計與智慧財產權保護方式。 電子設計自動化帶動IP Core概念 在電子設計自動化(Electronic Design Automation, EDA)趨勢裡,「智慧財產核心(Intellectual Property Core, IP Core)」設計概念是主流趨勢。利用IP Core概念,可使廠商重複使用前元件進行新產品設計,以節省時間,並對關鍵技術進行保護。 將重點放在可架構IP Core部分與其可架構之原理上,在理想IP Core狀態應要包含整個技術可攜部分,使其易被安插到其他設計方法或加入其他技術。這些可攜部分可依據重要性或執行比例分類。以目前IP Cores來說,可分成三種類別,分別是「硬體核心(Hard Core)」、「韌體核心(Firm Core)」與「軟體核心(Soft Core)」。 硬體核心之IP Core比起其他兩種較無彈性,且可攜性也較差,適合隨插即用(Plug-and- play)應用領域。如同硬體核心,韌體核心可依據應用種類之不同而攜帶一些可取代性資料。 在這三種核心中,最具彈性是軟體核心,其可存在於硬體涵蓋一些邏輯閘與相關相互連結之IC列表互連清單(Netlist)或是硬體HDL碼(Hardware Description Language Code)內。 為使產品達最大效率,採用單純硬體核心或軟體核心產品較少見,大多數採取軟、硬體核心混合設計方式。但這種設計之初須先將權責分明。何處屬軟體保留部分,何處要加入硬體互連清單須要先規畫清楚,其方式可分成原始碼層級(Source-level)與二元碼層級(Binary-level)兩種。 軟/硬體之分割概念 為使關鍵核心可實作在現場可編程閘陣列(FPGA)以增加執行效能,通常在設計演算法時須將軟、硬體實作予以切割分開,以往這種切割是利用跨部門會議由手動方式完成。 隨著科技進步,現今透過電腦輔助方法可助處理這類工作,如HandedC、SA-C、SiliconC或由A. Fin, F. Fummi等人提出高階語言SystemC。這種軟硬體分割能力最近更被內建於自動化編譯器(Compiler)CatapultC或XPRES中。這些編譯器基礎方法為軟硬體分割的問題提供較佳技術方案,除增加客觀上評估價值外,也減少不必要的會議,且有效提升整體效能。 在早期手動切割時代,須根據演算法分塊後,針對程式化原始碼部分(Source Code)進行分割。但此作法在知識專業導向市場裡,頗受應用上的限制,而無法被廣泛採用,另一種二元(Binary)分割操作方式便趁勢而起。 採取二元分割方法有兩個好處,首先可隱藏演算法架構,使其擁有更多市場應用性;其次確保二進位碼經編譯後仍可執行並連結,可架構式應用IP Core概念也因此產生。 這種分割方式較大的缺點是速度會慢於原始碼分割方式。若從工具觀點來看,二元分割法可避開程式語言實作、編譯器或是整合式設計環境(Integrated Design Een- vironment, IDE)環境限制。 也就是說,二元碼形成可來自任何一種語言,並可與協力廠商物件碼(Object Code)相互搭配使用而不需原始程式碼。這方面應用已有商業產品出現,如Critical Blue。 即使有缺點存在,二元碼的應用似乎仍潛力無窮,因此其進一步發展—動態二元分割(Dynamic Binary Partition)便高度被關注,即是廣為人知的Warp處理(Warp Processing)。在Warp處理中,晶片上工具可動態偵測到正在執行的二元核心,並將其解譯(Decompile)為控制/資料流圖形,再合成重置與引導該核心在可架構的邏輯結構上。 不過要將這些工具實作在晶片上似乎不可行,除精簡演算法架構外,還需一些主導廠商獨有的技巧。Warp處理的潛力在於可打開整個微處理器市場的軟、硬體切割商機,也為長久以來資訊技術之智慧財產權問題提供暫時解套方案。 不過,為補償二元分割與原始碼分割在速度上差異,G. Stitt及F. Vahid利用現有進階解譯方法發展出新合成方法(Synthesis-focused)來從二進位資料中還原高階指令,如Loop指令或Array指令。雖然這種改良仍無法使二元分割完全取代高階原始碼分割,但至少對二元分割方法而言,提供更好的執行速度,使其更易被接受。 二進位層級軟硬體分割 二進位層級的軟、硬體分割主要將軟體二進碼核心分成硬體實作與軟體實作兩大部分。軟體二進碼模式的保留部分可被用在未來加入新的指令以及與硬體區域通訊之用,其架構如圖1。 [attach]2211[/attach] 圖1 將軟體二進碼核心分成為硬體實作以及軟體實作這兩大部分之簡易流程 圖1說明二進位層級的軟硬體分割運作概況,一開始時軟體工程師先用如C高階語言開發欲切割的軟體,並編譯該程式。在編譯過程中,編譯器會從函式庫連結額外物件碼,並盡可能最佳化其產生之機械碼以形成軟體的二進碼。二進位層級軟硬體分割器利用解譯過程還原高階訊息,以作為進行軟、硬體分割及合成時重要依據。 載入硬體的分割程序裡,會利用軟硬體效能評估等資訊先偵測哪些二進位碼是放在硬體內實作的。在合成過程(Synthesis Procedure)裡,二進碼從軟體區域被轉換到硬體互連清單裡,之後二進碼更新器會修改原始軟體二進碼,並自軟體移除剛剛那些已加入硬體互連清單的區塊部分。同時,它會在軟體二進碼裡面加入新指令,以提供軟體與該硬體區域通訊之用。最後硬體新互連清單結合軟體以更新的二進碼成位元檔,此二元檔可被用在架構微處理器與FPGA平台之用。 . 解譯程序回覆高階資訊 在二元分割方法裡,解譯程序舉足輕重。因為解譯程序可被用來回復合成工具(Systhesis Tool)所需之高階資訊,以合成有效硬體。因此,若缺乏原始程式可用高階資訊,合成工具依舊可進行硬體互連清單轉換工作,只是其硬體執行效率會慢於其他以編譯器為基礎的方法。因編譯器執行工作時,如展開迴圈以利平行化處理,需一些原始程式可用的高階資訊,若無經過解譯過程,則二進位合成方法便無法展開迴圈,如此便喪失可用的平行處理能力(Parallelism),因迴圈結構在二進位層級裡並非可被明確判別。而在二進位合成時,其解譯過程可分成數個步驟來完成。剛開始時,為符合二進位語法會將二進位轉換為指令集(Instruction Set),然後解譯器分別從這些指令集分析並創出控制/資料流程圖(Control/Data Flow Graph, CDFG),之後解譯器完成控制結構之回復,以識別CDFG內對應迴圈或分歧指令區域,移除並最佳化指令集重複不必要之處。 不過解譯過程通常可回復足夠的高階資訊以供合成器轉換軟體二元碼到硬體的互連清單,因此這些高階資訊只要非完全無法回復,通常影響不大。另一個解譯部分之挑戰,屬Array回復部分以及偵測Array所對應記憶體區域,解譯器無法提供這些陣列區域完全回復保證,且其能回復的陣列要符合一定正規表示方式。 這些區域可能會存在回復不完全的問題,尤其是在程式碼中大量使用函數指標或轉換敘述時,會產生大量間接跳躍,導致解譯器失去流程分析能力。換句話說,多數解譯器僅認得正規Array表示法,因此對於非正規化的陣列表示方式便可能無法辨識該陣列所在。 理想狀態下,在FPGA裡這些陣列會被儲存在不同記憶體位置,以達到平行存取各陣列目的。不過受限於阿姆達爾定律(Amdahl's Law),軟體中能選擇為硬體的區域主要是基於執行比例以獲得最大速度。此原理在設計高度運算複雜度的可架構式H.264/AVC編碼晶片時亦同。因H.264/AVC支援三種不同資料轉換,例如Luma DC用4×4轉換、Chroma DC用2×2轉換,而其他資料仍用4×4轉換,但這些轉換是整數轉換運算,因此在實作上多利用轉移及增加來完成。為取得更大應用彈性,SoC設計趨勢將結合複雜的通訊架構,並搭配異質性可程式單元(Heterogeneous Programmable Units),以求在多效能與成本取捨下,取得更多優勢。不過欲設計這種異質性MP-SoC架構,雖然有潛在最佳化空間可發揮,但仍需系統層面(System-level)設計環境,以及可用來評估架構的取代性方法。 . 善用模擬器避免設計失敗 目前大多數實作裡,SoC仍遵循傳統方法設計,包含流程循序性與實作分離性,通常分成軟體與硬體,或軟體、韌體與硬體。設計到最後,這些處理器、匯流排、記憶體與其他IC區塊才利用以HDL基礎的實作加以整合。正因SoC具有高度複雜性,故早期在缺乏系統整合下,SoC不是設計過度(Over-designed)就是無法滿足特定要求。尤其是軟體效能,如處理器負載或軟體回應時間,很難不藉由模擬方式加以模型化以取得精確預測,因此軟體的效能至今仍深深影響共享通訊與記憶體架構部分。 欲解決該問題,早期是利用成本來換取架構上的調整,而所幸解決方法不斷推陳出新,如在2004年時A. Wieferink及F. Kogel等人發表基於系統層級的處理器/通訊共探索(Co-exploration),其使用名為LISA架構描述語言(Architecture Description Language, ADL)作為處理器架構的系統層級描述方法,並基於循環精確之異動模型(Transaction-level Modeling, TLM)捕捉通訊架構與周邊裝置。在該論述中,詳盡說明處理器模型與通訊模型。在其處理器模型裡,將處理器模型化成兩種主要抽象層級,一稱為指令精確(Instruction Accurate, IA),另一稱為循環精確(Cycle-accurate, CA)。IA模式不考慮管線效應(Pipeline Effects);CA模式則可完全模擬處理器管線。至於其通訊模組的拓撲架構可能是點對點、匯流排式或2003年Kogel等人提議一般網路晶片架構。 H.264/AVC 編解碼之SoC設計概念
購買主題
已有 7 人購買
本主題需向作者支付 3 元Chipcoin 才能瀏覽
| |
| |
| |
回復 1# 的帖子
評分
| ||||||||
| ||
| ||
| |
| ||
評分
| ||||||||
| ||
| ||
首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司
GMT+8, 2025-2-23 01:54 AM , Processed in 0.213013 second(s), 23 queries .
Powered by Discuz! X3.2
© 2001-2013 Comsenz Inc.