用于圖像處理器的并行Turbo 譯碼方法
【專利摘要】本發明提出一種用于圖像處理器的并行Turho譯碼方法。包括以下步驟:接收待處理編碼數據,并將編碼數據分為多個編碼塊,其中,每個編碼塊包括前向狀態變量和后向狀態變量;對前向狀態變量和后向狀態變量進行并行遞推計算,以獲得遍歷網格的多個狀態的變量值;根據遍歷網格的多個狀態的變量值獲得多個比特的對數似然比信息;以及對多個比特的對數似然比信息進行迭代運算直至滿足預設條件時,輸出譯碼序列。根據本發明實施例的方法,通過Turbo譯碼的并行性和圖像處理器的多核特性,實現了譯碼的稿吞吐速率,同時保證了譯碼的誤比特率性能。
【專利說明】用于圖像處理器的并行Turbo譯碼方法
【技術領域】
[0001]本發明涉及電子信息【技術領域】,特別涉及一種用于圖像處理器的并行Turbo譯碼方法。
【背景技術】
[0002]1993年,C.Berrou等人提出了 Turbo碼的編譯碼方案,打破了將截止速率作為可靠通信速率門限的觀念,誤比特率達到了接近Shannon極限的性能。Turbo碼的提出,使人們更關注基于概率的軟判決迭代譯碼方法。由于Turbo碼接近Shannon極限的誤比特率性能,它被廣泛用于無線通信系統中。
[0003]由于Turbo碼的譯碼使用軟輸入軟輸出(SISO)譯碼器,需要迭代譯碼、交織和解交織的過程,導致了較大的譯碼延時。隨著下一代移動通信系統的飛速發展,Turbo碼的現有譯碼方法已漸漸不能滿足高吞吐量、低時延的要求。
[0004]當前研究和采用比較多的Turbo譯碼加速方法是在FPGA和ASIC平臺上設計并行化的Turbo譯碼電路。基于FPGA/ASIC的Tutoo譯碼方法雖然能夠顯著提高譯碼吞吐速率,滿足通信系統實時性要求,但電路靈活性差,通常難以適用于多種體制、多種參數并存的無線通信系統需求,而且開發周期長,維護和升級成本較高。而隨著基于通用處理器(GeneralPurpose Processor-GPP)的軟件無線電(Software Radio-SR)技術的不斷發展,越來越多的研究開發人員考慮在GPP平臺上實現和優化Turbo譯碼算法,其中GPU就是一種很好的GPP備選平臺。GPP原本用于圖像計算,隨著科技的發展,GPU逐漸開始用于通用計算目的,即所謂的GPGPU (General Purpose GPU)。利用GPU的多核特性實現Turbo譯碼的并行,不但能夠滿足實時性要求,而且具有很高的靈活性,易于修改和維護,升級成本低。因此,從GPP-SR應用的角度看,相比FPGA和ASIC,用GPU實現Turbo譯碼并行化是靈活性更高、升級維護更方便的實現方案。
[0005]CUDA (Compute Unified Device Architecture),是一種由 NVIDIA 推出的通用并行計算架構,該架構使GPU能夠解決復雜的計算問題。它包含了 CUDA指令集架構(ISA)以及GPU內部的并行計算引擎。開發人員可以使用C語言為CUDA架構編寫程序,通過核函數(kernel)定義各線程操作,通過多線程并發執行達到超高計算性能。
[0006]支持CUDA的GPU包含多個多核流處理器(stream multiprocessor, SM),每個SM內含8個單指令多數據流(SIMD)的核。CUDA將多個線程劃分為線程塊(block),每32個warp成一個線程束(warp)。如果warp內的32個線程都執行同樣的指令,那么32個操作可以同時進行,并在4個指令周期內完成。訪問存儲器經常會造成線程操作的延遲等待,GPU通過切換執行不同warp來隱藏訪存造成的延時。GPU可使用的存儲器有全局存儲器、共享存儲器、常量存儲器和寄存器。后三種存儲器位于片上,能夠提供快速訪問。其中每個線程可以有各自獨立的寄存器,而共享存儲器的數據可被一個block內的線程共享,從而實現線程通信。每個block的共享存儲器分為16個bank,數據依次存儲在這些bank中。當不同的線程訪問同一個bank中的數據時,會發生bank沖突,造成等待延時。常量存儲器大多情況下被用來存儲不變的只讀數據。由于GPU的片上存儲器資源十分有限,因此合理地分配存儲器來最小化訪存延時顯得尤為重要。
[0007]目前關于Turbo譯碼器的GPU實現的研究較少,且大都基于較早的GPU硬件平臺,計算能力為1.X,并行方法和性能都受到了一定的限制,例如Wu, M., Yang Sun, Cavallaro,J.R., " Implementation of a3GPP LTE turbo decoder accelerator on GPU, " SignalProcessing Systems(SIPS),2010IEEE Workshop on, vol., n0., pp.192-197,6_80ct.2010中使用的GPU型號是NVIDIA Tesla C1060,其計算能力是1.3。
【發明內容】
[0008]本發明的目的旨在至少解決上述的技術缺陷之一。
[0009]為此,本發明的目的在于提出一種用于圖像處理器的并行Turbo譯碼方法。
[0010]為達到上述目的,本發明的實施例提出一種用于圖像處理器的并行Turbo譯碼方法,包括以下步驟:接收待處理編碼數據,并將所述編碼數據分為多個編碼塊,其中,每個編碼塊包括前向狀態變量和后向狀態變量;對所述前向狀態變量和后向狀態變量進行并行遞推計算,以獲得遍歷網格的多個狀態的變量值;根據所述遍歷網格的多個狀態的變量值獲得多個比特的對數似然比信息;以及對所述多個比特的對數似然比信息進行迭代運算直至滿足預設條件時,輸出譯碼序列。
[0011]根據本發明實施例的方法,通過Turbo譯碼的并行性和圖像處理器的多核特性,實現了譯碼的稿吞吐速率,同時保證了譯碼的誤比特率性能。
[0012]在本發明的一個實施例中,所述接收待處理編碼數據,并將所述編碼數據分為多個編碼塊之后還包括:通過保護機制對所述前向狀態變量和后向狀態變量進行保護。
[0013]在本發明的一個實施例中,所述保護機制包括前次迭代值初始化法、雙訓練窗口法或雙滑動窗訓練法。
[0014]在本發明的一個實施例中,對所述每個編碼塊的前向狀態變量和后向狀態變量進行并行遞推計算通過N個分組線程實現,其中,N為正整數。
[0015]在本發明的一個實施例中,所述通過N個分組線程對所述每個編碼塊的前向狀態變量和后向狀態變量進行并行遞推計算,進一步包括:通過N/2個分組線程對所述前向狀態變量進行并行遞推計算;以及通過剩余N/2個分組線程對所述后向狀態變量進行并行遞推計算。
[0016]在本發明的一個實施例中,所述N個分組線程對所述每個編碼塊的前向狀態變量和后向狀態變量進行并行遞推計算中每個線程運算互不干擾。
[0017]在本發明的一個實施例中,所述對數似然比信息通過如下計算,所述公式
【權利要求】
1.一種用于圖像處理器的并行Turbo譯碼方法,其特征在于,包括以下步驟: 接收待處理編碼數據,并將所述編碼數據分為多個編碼塊,其中,每個編碼塊包括前向狀態變量和后向狀態變量; 對所述前向狀態變量和后向狀態變量進行并行遞推計算,以獲得遍歷網格的多個狀態的變量值; 根據所述遍歷網格的多個狀態的變量值獲得多個比特的對數似然比信息;以及 對所述多個比特的對數似然比信息進行迭代運算直至滿足預設條件時,輸出譯碼序列。
2.如權利要求1所述的用于圖像處理器的并行Turbo譯碼方法,其特征在于,所述接收待處理編碼數據,并將所述編碼數據分為多個編碼塊之后還包括: 通過保護機制對所述前向狀態變量和后向狀態變量進行保護。
3.如權利要求2所述的用于圖像處理器的并行Turbo譯碼方法,其特征在于,所述保護機制包括前次迭代值初始化法、雙訓練窗口法或雙滑動窗訓練法。
4.如權利要求1所述的用于圖像處理器的并行Turbo譯碼方法,其特征在于,對所述每個編碼塊的前向狀態變量和后向狀態變量進行并行遞推計算通過N個分組線程實現,其中,N為正整數。
5.如權利要求4 所述的用于圖像處理器的并行Turbo譯碼方法,其特征在于,所述通過N個分組線程對所述每個編碼塊的前向狀態變量和后向狀態變量進行并行遞推計算,進一步包括: 通過N / 2個分組線程對所述前向狀態變量進行并行遞推計算;以及 通過剩余N/2個分組線程對所述后向狀態變量進行并行遞推計算。
6.如權利要求4所述的用于圖像處理器的并行Turbo譯碼方法,其特征在于,所述N個分組線程對所述每個編碼塊的前向狀態變量和后向狀態變量進行并行遞推計算中每個線程運算互不干擾。
7.如權利要求1所述的用于圖像處理器的并行Turbo譯碼方法,其特征在于,所述對數似然比信息通過如下計算,所述公式為,
Λ (.0 = IHHX [fV, ^ J , ) + ^ ,(.Sk—j.,S^ ) -f ,:1,(,? )j —[?f — ι{Λ1.-1) +十 (?)!Η—τ
-二 mη-K Ai(Xik) — IiiiRX Λ"K)..S',S 其中,Λ(4)為對數似然比信息,a (Sk^1)為前向狀態變量,Yk(Sk^17Sk)為sk_jp sk之間的分支度量,i3k(sk)為后向狀態變量,S+為是有序偶(?+ sk)的子集即信息比特4 =1的狀態子集,s_為信息比特4 二0的狀態子集,4為信息比特,A1(A)為第i個比特為I的概率,Λη(χ;)為第i個比特為O的概率。
【文檔編號】H03M13/29GK103475380SQ201310404408
【公開日】2013年12月25日 申請日期:2013年9月6日 優先權日:2013年9月6日
【發明者】汪玉, 陳翔, 朱繼, 溫子煜, 楊華中 申請人:清華大學