多核數(shù)字信號(hào)處理器TMS320C66x應(yīng)用與開(kāi)發(fā) 課件【ch03】多核數(shù)字信號(hào)處理軟件系統(tǒng)的構(gòu)建_第1頁(yè)
多核數(shù)字信號(hào)處理器TMS320C66x應(yīng)用與開(kāi)發(fā) 課件【ch03】多核數(shù)字信號(hào)處理軟件系統(tǒng)的構(gòu)建_第2頁(yè)
多核數(shù)字信號(hào)處理器TMS320C66x應(yīng)用與開(kāi)發(fā) 課件【ch03】多核數(shù)字信號(hào)處理軟件系統(tǒng)的構(gòu)建_第3頁(yè)
多核數(shù)字信號(hào)處理器TMS320C66x應(yīng)用與開(kāi)發(fā) 課件【ch03】多核數(shù)字信號(hào)處理軟件系統(tǒng)的構(gòu)建_第4頁(yè)
多核數(shù)字信號(hào)處理器TMS320C66x應(yīng)用與開(kāi)發(fā) 課件【ch03】多核數(shù)字信號(hào)處理軟件系統(tǒng)的構(gòu)建_第5頁(yè)
已閱讀5頁(yè),還剩75頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

多核數(shù)字信號(hào)處理軟件系統(tǒng)的構(gòu)建“電子信息科學(xué)與工程類(lèi)專(zhuān)業(yè)規(guī)劃教材多核數(shù)字信號(hào)處理器TMS320C66x應(yīng)用與開(kāi)發(fā)第三章01ccs的簡(jiǎn)介及安裝ccs的簡(jiǎn)介及安裝TI公司為開(kāi)發(fā)人員提供了WindowsLinux和MacOs版本的集成開(kāi)發(fā)環(huán)境CCS。CCS包含一套用于開(kāi)發(fā)和調(diào)試嵌入式應(yīng)用程序的工具,其中包括源代碼編輯器、C/C++編譯器項(xiàng)目生成環(huán)境、調(diào)試器、分析器等。CCS的功能十分強(qiáng)大,它集成了代碼的編輯、編譯鏈接和調(diào)試等功能,其主要功能如下。1、集成可視化代碼編輯界面:可直接編寫(xiě).c.cpp.h文件.cmd文件等。2、集成代碼生成工具:包括代碼編輯器、C/C++編譯器、鏈接器等,將代碼的編輯、編譯、鏈接和調(diào)試等功能集成到一個(gè)開(kāi)發(fā)環(huán)境中。ccs的簡(jiǎn)介及安裝3、基本調(diào)試工具:可以裝入執(zhí)行代碼,查看寄存器窗口、存儲(chǔ)器窗口、反匯編窗口和變量窗口,并且支持源代碼級(jí)調(diào)試。4、斷點(diǎn)工具:能在調(diào)試程序的過(guò)程中,設(shè)置軟件斷點(diǎn)、硬件斷點(diǎn)、數(shù)據(jù)空間讀/寫(xiě)斷點(diǎn)、條件斷點(diǎn)(使用GEL編寫(xiě)表達(dá)式)等。5、探針調(diào)試工具(probepints):可用于算法仿真、數(shù)據(jù)監(jiān)視等。6、性能分析工具(profilepoints):可用于評(píng)估代碼執(zhí)行的時(shí)鐘數(shù)。7、實(shí)時(shí)分析和數(shù)據(jù)可視化工具:如數(shù)據(jù)的圖形顯示工具,可繪制時(shí)域/頻域波形、眼圖、星座圖等,并具有自動(dòng)刷新功能。ccs的簡(jiǎn)介及安裝8、提供DSP/BIOS工具:增強(qiáng)對(duì)代碼的實(shí)時(shí)分析能力,如分析代碼執(zhí)行的效率、調(diào)度程序執(zhí)行的優(yōu)先級(jí),方便管理和使用系統(tǒng)資源(代碼/數(shù)據(jù)占用空間、中斷服務(wù)程序的調(diào)用、定時(shí)器使用等),從而減少開(kāi)發(fā)人員對(duì)硬件資源熟悉程度的依賴(lài)。CCS尤為重要的特點(diǎn)是提供了配置、構(gòu)造、跟蹤和分析程序的工具,并在基本代碼生成工具的基礎(chǔ)上增加了調(diào)試和實(shí)時(shí)分析功能,為使用者提供了方便、實(shí)用的開(kāi)發(fā)工具,從而加速了實(shí)時(shí)、嵌入式信號(hào)處理的開(kāi)發(fā)過(guò)程。ccs的簡(jiǎn)介及安裝CCS的安裝過(guò)程如下:(1)打開(kāi)CCS安裝包,雙擊ccssetup5.5安裝程序,出現(xiàn)如圖3-1所的界面,選中“Iacceptthetermsofthelicenseagreement”選項(xiàng),單擊“Next”按鈕。ccs的簡(jiǎn)介及安裝(2)彈出如圖3-2所示界面,選擇安裝路徑,單擊“Next”按鈕。ccs的簡(jiǎn)介及安裝(3)彈出如圖3-3所示界面,選擇安裝模式,單擊“Next”按鈕。ccs的簡(jiǎn)介及安裝(4)彈出如圖3-4所示界面,選擇C6000多核DSP,單擊“Next”按鈕。ccs的簡(jiǎn)介及安裝5)彈出如圖3-5所示界面,選擇安裝組件,單擊“Next”按鈕。ccs的簡(jiǎn)介及安裝(6)彈出如圖3-6所示界面,選擇仿真器,單擊“Next”按鈕。應(yīng)注意第三方仿真器需要單獨(dú)安裝。ccs的簡(jiǎn)介及安裝(3)彈出如圖3-3所示界面,選擇安裝模式,單擊“Next”按鈕。ccs的簡(jiǎn)介及安裝(3)彈出如圖3-3所示界面,選擇安裝模式,單擊“Next”按鈕。ccs的簡(jiǎn)介及安裝(7)彈出如圖3-7所示界面,程序準(zhǔn)備開(kāi)始安裝,單擊“Next”按鈕。(8)安裝結(jié)束后,生成如圖3-8所示圖標(biāo)。02創(chuàng)建一個(gè)軟件工程創(chuàng)建一個(gè)軟件工程下面給出建立一個(gè)軟件工程的詳細(xì)過(guò)程。(1)單擊菜單Project一NewCCSProject命令,進(jìn)入如圖3-9所示界面,輸入工程名單擊“Finish”按鈕,創(chuàng)建一個(gè)CCS工程。(2)單擊菜單FileNew-TargetConfigurationFile命令,創(chuàng)建一個(gè)配置文件,單擊“Finish”按鈕。創(chuàng)建一個(gè)軟件工程(3)彈出如圖3-11所示界面,對(duì)配置文件進(jìn)行設(shè)置。03軟件并行化設(shè)計(jì)軟件并行化設(shè)計(jì)硬件的并行化顯著提升了處理能力,但多核處理器的引入也給軟件開(kāi)發(fā)人員帶來(lái)了新的挑戰(zhàn),他們必須掌握多核處理器的開(kāi)發(fā)技術(shù)。任務(wù)并行化是指軟件中多任務(wù)的并行執(zhí)行。在單核處理器上,任務(wù)必須共享同一個(gè)處理器,同一時(shí)間只能有一個(gè)任務(wù)在執(zhí)行。在多核處理器上,任務(wù)可以在多核上并行運(yùn)行,從而實(shí)現(xiàn)更高的執(zhí)行效率。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)1、并行處理模式將應(yīng)用程序映射到多核處理器需要做的第一步是對(duì)任務(wù)進(jìn)行并行化分析并選擇最適合的處理模式。并行處理的3種主要模式包括/從模式、數(shù)據(jù)流模式和OpenMP模式。(1)主/從模式主/從模式表現(xiàn)為集中控制下的任務(wù)分布式執(zhí)行。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)一個(gè)主核將復(fù)雜任務(wù)分解為多個(gè)并行執(zhí)行的任務(wù),主核負(fù)責(zé)調(diào)度需要執(zhí)行的任務(wù),這些任務(wù)被分配給任何可用的核(從核)進(jìn)行處理。主核還必須向從核提供所需的數(shù)據(jù)。適合主/從模式的應(yīng)用程序內(nèi)部包括許多小的獨(dú)立任務(wù),這些任務(wù)使用單核的處理資源就可以完成處理。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)采用主/從模式的程序通常包含大量的控制代碼,而且需要經(jīng)常隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器,而每次存儲(chǔ)器訪(fǎng)問(wèn)量相對(duì)較少,代碼計(jì)算量通常較大。采用主/從模式的應(yīng)用程序通常運(yùn)行在像Liux、SYS/BIOS這樣的高級(jí)操作系統(tǒng)上,高級(jí)操作系統(tǒng)主要負(fù)責(zé)調(diào)度多任務(wù)的并行執(zhí)行。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)(2)數(shù)據(jù)流模式數(shù)據(jù)流模式表現(xiàn)為任務(wù)的分布式控制和執(zhí)行。每個(gè)核使用算法處理一個(gè)數(shù)據(jù)塊,然后將處理結(jié)果傳遞給另一個(gè)核來(lái)進(jìn)一步處理。第一個(gè)核的數(shù)據(jù)通常來(lái)自傳感器或FPGA的輸出接口,接收需要處理的原始數(shù)據(jù)。調(diào)度是根據(jù)數(shù)據(jù)的可用性觸發(fā)的。適合數(shù)據(jù)流模式的應(yīng)用程序通常包含多個(gè)復(fù)雜計(jì)算的組件。這些組件彼此依賴(lài)但計(jì)算量巨大,不適合在單核上運(yùn)行。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)數(shù)據(jù)流模式通常在實(shí)時(shí)操作系統(tǒng)上運(yùn)行,其中最小化處理延遲是數(shù)據(jù)流模式中最重要的問(wèn)題。圖3-13給出了一個(gè)數(shù)據(jù)流模式處理的例子。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)(3)OpenMP模式OpenMP是一種應(yīng)用程序編程接口(API,ApplicationProgrammingInterface),可以用C/C++或FORTRAN語(yǔ)言在共享存儲(chǔ)器并行結(jié)構(gòu)(SMP,Shared-MemoryParallel)中開(kāi)發(fā)多線(xiàn)程應(yīng)用程序。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)OpenMP對(duì)SMP的應(yīng)用進(jìn)行了標(biāo)準(zhǔn)化,它是一個(gè)友好的API,有很多優(yōu)點(diǎn)。首先,該API易于使用和實(shí)現(xiàn),一旦程序員確定了并行區(qū)域并插入相應(yīng)的OpenMP結(jié)構(gòu),編譯器和系統(tǒng)將完成剩余的工作。其次,OpenMP對(duì)順序編碼器友好,也就是說(shuō),當(dāng)程序員對(duì)一個(gè)連續(xù)的代碼塊進(jìn)行并行化時(shí),不必創(chuàng)建完全獨(dú)立的多核程序版本,OpenMP支持一種漸進(jìn)的并行化方法,程序員只需專(zhuān)注于對(duì)小的代碼塊進(jìn)行并行化。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)圖3-14顯示了OpenMP中fork-jon模式是如何實(shí)現(xiàn)的。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)當(dāng)前應(yīng)用程序中實(shí)現(xiàn)并行任務(wù)必須通過(guò)手動(dòng)來(lái)解決。TI公司正在開(kāi)發(fā)代碼生成工具允許用戶(hù)自動(dòng)將任務(wù)映射到獨(dú)立的核中。即使在識(shí)別并行任務(wù)之后,在多核系統(tǒng)中的映射和調(diào)度任務(wù)仍然需要仔細(xì)規(guī)劃。多核體系結(jié)構(gòu)中的軟件建模分為4個(gè)步驟:分塊一合并一組合一映射,用于指導(dǎo)并行應(yīng)用程序的設(shè)計(jì)。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)(1)分塊在分塊過(guò)程中,將應(yīng)用程序劃分為模塊或子系統(tǒng),對(duì)模塊或子系統(tǒng)中的計(jì)算(讀、執(zhí)行、寫(xiě))進(jìn)行復(fù)雜度分析,并分析每個(gè)模塊或子系統(tǒng)的耦合性和內(nèi)聚力。對(duì)于一個(gè)應(yīng)用程序,評(píng)估計(jì)算量的最簡(jiǎn)單的方法是在各個(gè)模塊或子系統(tǒng)的入口和出口收集時(shí)間戳,通過(guò)對(duì)比,得到每個(gè)模塊或子系統(tǒng)的吞吐量。評(píng)估應(yīng)包括在更新緩存過(guò)程中未命中指令和數(shù)據(jù)緩存的開(kāi)銷(xiāo)。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)對(duì)模塊或子系統(tǒng)耦合度的評(píng)估可以確定模塊或子系統(tǒng)間的相互依賴(lài)性。評(píng)估包括子系統(tǒng)內(nèi)函數(shù)的數(shù)量和全局?jǐn)?shù)據(jù)。對(duì)子系統(tǒng)內(nèi)聚程度的評(píng)估可以得到內(nèi)在各個(gè)模塊的相互依賴(lài)程度,它體現(xiàn)子系統(tǒng)內(nèi)所有函數(shù)協(xié)同工作。如果單個(gè)算法必須使用子系統(tǒng)中的每個(gè)函數(shù),則說(shuō)明具有很高的內(nèi)聚力;如果有多個(gè)算法,每個(gè)算法在子系統(tǒng)中只使用少量函數(shù),則說(shuō)明了具有低內(nèi)聚力。具有高內(nèi)聚力的子系統(tǒng)易于模塊化,更容易支持分塊。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)(2)合并將應(yīng)用程序劃分為模塊或子系統(tǒng)需要找到耦合度低且高內(nèi)聚力的地方。如果一個(gè)模塊和外部有太多的關(guān)聯(lián),則它應(yīng)與另一個(gè)模塊合并,從而減少耦合并增加內(nèi)聚力。分塊過(guò)程還需要考慮模塊的吞吐量,以確保其適合單核運(yùn)行。在將軟件模塊化后,需要評(píng)估模塊間的控制和數(shù)據(jù)通信需求??刂屏骺梢宰R(shí)別獨(dú)立的控制路徑,有助于確定系統(tǒng)中的并發(fā)任務(wù)。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)數(shù)據(jù)流有助于確定對(duì)象和數(shù)據(jù)同步需求??刂屏鞔砟K之間的執(zhí)行路徑。處理序列中不在同一核上的模塊必須依賴(lài)消息傳遞機(jī)制來(lái)同步它們的執(zhí)行,并且可能需要在模塊間進(jìn)行數(shù)據(jù)傳輸,這兩種行為都可能引入延遲。應(yīng)用控制流可以幫助實(shí)現(xiàn)模塊分組,并最大化系統(tǒng)的吞吐量。圖3-15給出了一個(gè)控制流的例子。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)(3)組合組合階段確定是否將分塊階段標(biāo)識(shí)的任務(wù)組合起來(lái),以便提供更小數(shù)量的任務(wù),當(dāng)然組合后的任務(wù)將會(huì)變大。組合還包括確定是否復(fù)制數(shù)據(jù)或進(jìn)行計(jì)算。將具有低計(jì)算需求和高耦合的相關(guān)模塊合并在一起,或?qū)⒕哂休^高計(jì)算量和高通信成本的模塊分解成具有較低成本的小模塊。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)(4)映射是將模塊、任務(wù)或子系統(tǒng)分配給各個(gè)核的過(guò)程。根據(jù)前面分塊、合并和組合的結(jié)果,來(lái)確定并發(fā)性和模塊的耦合性。在這個(gè)階段,要考慮可以部署在軟件中的硬件加速器和其他相關(guān)因素。基于所選擇的編程模式是主/從模式或數(shù)據(jù)流模式,子系統(tǒng)被分配到不同的核上??紤]到處理器間的通信延遲和參數(shù)轉(zhuǎn)換,有必要在映射的第一次迭代中保留一些可用的計(jì)算資源、L2存儲(chǔ)器和通信帶寬。應(yīng)用程序映射到多核處理器軟件并行化設(shè)計(jì)1.數(shù)據(jù)物理搬移數(shù)據(jù)物理搬移可以通過(guò)幾種不同的技術(shù)來(lái)完成:1)共享存儲(chǔ)器——使用發(fā)送方和接收方都可以訪(fǎng)問(wèn)的物理存儲(chǔ)器;2)專(zhuān)用存儲(chǔ)器——用于在專(zhuān)用發(fā)送和接收緩沖區(qū)之間的轉(zhuǎn)換;3)轉(zhuǎn)換存儲(chǔ)器緩沖區(qū)——將存儲(chǔ)器緩沖區(qū)的所有權(quán)從發(fā)送方轉(zhuǎn)換到接收方,并不傳輸內(nèi)容;4)OpenMP中的數(shù)據(jù)搬移——通過(guò)確定數(shù)據(jù)范圍來(lái)決定是復(fù)制數(shù)據(jù)還是共享數(shù)據(jù)。處理器間的通信軟件并行化設(shè)計(jì)(1)共享存儲(chǔ)器使用共享緩沖區(qū)并不意味著一定要使用相同的共享存儲(chǔ)器。相反,它意味著一個(gè)消息緩沖區(qū)被設(shè)置在一個(gè)由發(fā)送方和接收方都可以訪(fǎng)問(wèn)的存儲(chǔ)器中,收發(fā)方分別負(fù)責(zé)一部分處理。發(fā)送方將消息發(fā)送到共享緩沖區(qū)并通知接收方。接收方通過(guò)將源緩沖區(qū)中的內(nèi)容復(fù)制到目標(biāo)緩沖區(qū)來(lái)獲得消息,并通知發(fā)送方緩沖區(qū)是空閑的。當(dāng)多個(gè)內(nèi)核從共享存儲(chǔ)器訪(fǎng)問(wèn)數(shù)據(jù)時(shí)重要的是保持?jǐn)?shù)據(jù)的一致性。處理器間的通信軟件并行化設(shè)計(jì)(2)專(zhuān)用儲(chǔ)存器當(dāng)每個(gè)內(nèi)核使用共享存儲(chǔ)器的專(zhuān)用區(qū)域或本地存儲(chǔ)器傳輸數(shù)據(jù)時(shí),通常使用這種方法。由于數(shù)據(jù)保存在本地可以減少開(kāi)銷(xiāo),數(shù)據(jù)搬移可以通過(guò)內(nèi)核間直接通信或KeyStone系列器件中的多核導(dǎo)航器來(lái)實(shí)現(xiàn)。內(nèi)核之間的直接通信與共享存儲(chǔ)器一樣,包括通知和轉(zhuǎn)移階段,根據(jù)用例不同可以通過(guò)push或pul1模式來(lái)完成。處理器間的通信軟件并行化設(shè)計(jì)(3)轉(zhuǎn)換存儲(chǔ)器緩沖區(qū)發(fā)送方和接收方可以使用相同的物理存儲(chǔ)器,但與上面的共享存儲(chǔ)器傳輸不同,發(fā)送方和接收方通過(guò)轉(zhuǎn)移緩沖區(qū)所有權(quán)來(lái)交換數(shù)據(jù),這時(shí)數(shù)據(jù)不會(huì)通過(guò)消息路徑傳輸,發(fā)送方只需傳遞一個(gè)指向數(shù)據(jù)緩沖區(qū)的指針,接收方直接使用來(lái)自原始存儲(chǔ)器緩沖區(qū)的內(nèi)容。處理器間的通信軟件并行化設(shè)計(jì)(4)OpenMP中的數(shù)據(jù)搬移程序員可以通過(guò)使用OpenMP編譯器指令中的子句private、shared和default來(lái)管理不同范圍的數(shù)據(jù)。如前所述,OpenMP編譯器指令為#pragmaompconstruct[clause[clause]...],數(shù)據(jù)范圍后面緊跟著括號(hào)中的變量表。例如,#pragmaompparallelprivate(I,j)。處理器間的通信軟件并行化設(shè)計(jì)2.多核導(dǎo)航器數(shù)據(jù)搬移多核導(dǎo)航器通過(guò)把數(shù)據(jù)封裝在描述符中,再將描述符作為消息在硬件隊(duì)列之間搬移它們。隊(duì)列管理器子系統(tǒng)(OMSS)是多核導(dǎo)航器的核心部分,它控制硬件隊(duì)列的行為并使能描述符的路由。多核導(dǎo)航器中的DMA被稱(chēng)為PKTDMA,PKTDMA在隊(duì)列和外設(shè)之間搬移描述符。處理器間的通信軟件并行化設(shè)計(jì)3.通知和同步多核模式要求完成多核間的同步并在核之間發(fā)送通知。一個(gè)典型的同步例子是當(dāng)一個(gè)核完成系統(tǒng)初始化,其他的核才能繼續(xù)執(zhí)行。在并行處理中,fork-join模式需要在核之間進(jìn)行同步,通知和同步可以使用多核導(dǎo)航器或CPU實(shí)現(xiàn)。當(dāng)數(shù)據(jù)從一個(gè)核傳輸?shù)搅硪粋€(gè)核時(shí),需要通知接收核。如前所述,多核導(dǎo)航器提供了多種方法來(lái)通知接收核數(shù)據(jù)是可用的。處理器間的通信軟件并行化設(shè)計(jì)4.多核導(dǎo)航器通知方法多核導(dǎo)航器完成消息封裝,并在硬件隊(duì)列之間搬移消息,每個(gè)目的地都有一個(gè)或多個(gè)專(zhuān)用的接收隊(duì)列。接收方訪(fǎng)問(wèn)接收隊(duì)列中描述符的方法包括非阻塞的輪詢(xún)、阻塞的輪詢(xún)、基于中斷的通知、延遲(交錯(cuò))中斷通知和基于Qos(QualityofService)的通知。處理器間的通信軟件并行化設(shè)計(jì)KeyStone系列的TCI66x和C66x處理器的主要數(shù)據(jù)傳輸引擎是EDMA(增強(qiáng)DMA)模塊和PKTDMA(數(shù)據(jù)包DMA,多核導(dǎo)航器的一部分)模塊。數(shù)據(jù)傳輸引擎為高速通信提供支持,C66x處理器的高速外設(shè)接口可以通過(guò)PKTDMA實(shí)體接收和發(fā)送數(shù)據(jù)。此外,PKTDMA用于在核和其他協(xié)處理器之間搬移數(shù)據(jù),比如FFT協(xié)處理器等。數(shù)據(jù)傳輸引擎軟件并行化設(shè)計(jì)1.PKTDMAPKTDMA是多核導(dǎo)航器的一部分。每個(gè)PKTDMA都有一個(gè)單獨(dú)的硬件路徑用于接收和發(fā)送數(shù)據(jù),每個(gè)方向都有多個(gè)DMA通道用于數(shù)據(jù)傳輸。當(dāng)發(fā)送數(shù)據(jù)時(shí),PKTDMA將描述符中封裝的數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)流,接收到的數(shù)據(jù)流則被重新封裝到描述符中,并被路由到目的地。PKTDMA作為外設(shè)或協(xié)處理器的一部分,可以把數(shù)據(jù)路由到不同內(nèi)核或不同目的地。此外,在隊(duì)列管理器中的基礎(chǔ)結(jié)構(gòu)PKTDMA支持內(nèi)核之間的通信。數(shù)據(jù)傳輸引擎軟件并行化設(shè)計(jì)2.EDMA軟件可以為每個(gè)核分配相應(yīng)的區(qū)域,這些區(qū)域包括通道和參數(shù)存儲(chǔ)區(qū)。事件到通道的路由和EDMA中斷是完全可編程的。由于所有事件、中斷和通道參數(shù)都是可以獨(dú)立控制的這意味著這些資源一旦分配給一個(gè)核,該核在訪(fǎng)問(wèn)資源之前不需要仲裁。此外,C66x處理器提供了一種復(fù)雜的機(jī)制,確保由某個(gè)核發(fā)起的EMDA傳輸在地址轉(zhuǎn)換和權(quán)限方面保持相同存儲(chǔ)器訪(fǎng)問(wèn)屬性。數(shù)據(jù)傳輸引擎軟件并行化設(shè)計(jì)3.以太網(wǎng)網(wǎng)絡(luò)協(xié)處理器(NetCP,NetworkCoprocessor)外設(shè)支持以太網(wǎng)通信。它有兩個(gè)SGMII端口(10/100/1000)和包加速器。a包加速器支持的路由包括:基于L2地址(最多64個(gè)不同地址)路由、L3地址(最多64個(gè)不同地址路4地址(最多8192個(gè)地址)路由或L2、L3和I4地址的任何組合的路由。數(shù)據(jù)傳輸引擎軟件并行化設(shè)計(jì)4.串行RapidlO串行RapidIo支持DirectIO和Messaging協(xié)議,允許每個(gè)內(nèi)核使用這些協(xié)議。DSP發(fā)起DirectIO傳輸時(shí),需要使用負(fù)載存儲(chǔ)單元。每個(gè)器件有多個(gè)LSU(個(gè)數(shù)取決于器件),LSU之間相互獨(dú)立,每個(gè)LSU可以向任何物理鏈接提交業(yè)務(wù)。LSU可以分配給單獨(dú)的內(nèi)核,之后核不需要仲裁訪(fǎng)問(wèn)。數(shù)據(jù)傳輸引擎軟件并行化設(shè)計(jì)5.天線(xiàn)接口A(yíng)IF2天線(xiàn)接口支持許多無(wú)線(xiàn)標(biāo)準(zhǔn),如WCDMA、LTE、WMAX、TD-SCDMA和GSM/EDGE。可以使用DMA模塊直接訪(fǎng)問(wèn)AIF2,也可以使用PKTDMA進(jìn)行基于數(shù)據(jù)包的訪(fǎng)問(wèn),PKTDMA是AIF2的一部分。數(shù)據(jù)傳輸引擎軟件并行化設(shè)計(jì)6.PCIExpressKeyStone系列的TCI66x和C66x器件中PCIExpress引支持3種操作模式:rootcomplex、endpoint和legacyendpoint。PCIExpress外設(shè)使用內(nèi)置的DMA控制器,將與外界交互的數(shù)據(jù)直接搬移到芯片內(nèi)部或外部的存儲(chǔ)器單元中。數(shù)據(jù)傳輸引擎軟件并行化設(shè)計(jì)7.HyperLinkKeyStone系列的TCI66x和C66x器件中的HyperLink外設(shè)允許器件通過(guò)HyperLink接口讀寫(xiě)具備HyperLink接口器件的存儲(chǔ)器。此外,HyperLink接口允許向與HyperLink連接的另一端設(shè)備發(fā)送事件和中斷。HyperLink外設(shè)使用內(nèi)置的DMA控制器對(duì)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行讀取和寫(xiě)入。數(shù)據(jù)傳輸引擎軟件并行化設(shè)計(jì)當(dāng)在KeyStone器件上共享資源時(shí),系統(tǒng)中所有內(nèi)核都要遵循統(tǒng)一的協(xié)議。協(xié)議可能依賴(lài)于共享的資源,但所有內(nèi)核都必須遵循相同的規(guī)則。內(nèi)核之間信令傳遞可以使用直接信令或原子仲裁,在內(nèi)核中,可以使用一個(gè)全局標(biāo)志或一個(gè)OS信號(hào)量。不建議使用唯一的全局標(biāo)志在內(nèi)核之間進(jìn)行仲裁,這是因?yàn)闉榱舜_保更新是原子性的,會(huì)造成很大開(kāi)銷(xiāo)。共享資源管理軟件并行化設(shè)計(jì)在KeyStone系列的TCI66x和C66x件中,每個(gè)內(nèi)核都有本地L1/L2存儲(chǔ)器,可以對(duì)任何共享的內(nèi)部和外部存儲(chǔ)器進(jìn)行訪(fǎng)問(wèn)。建議每個(gè)內(nèi)核從共享存儲(chǔ)器執(zhí)行部分或整個(gè)代碼,而數(shù)據(jù)主要使用本地存儲(chǔ)器。如果需要預(yù)加載數(shù)據(jù),則需要更高的帶寬;如果后面沒(méi)有讀取數(shù)據(jù),則無(wú)須從外部存儲(chǔ)器預(yù)加載。每個(gè)內(nèi)核可以分別控制一個(gè)存儲(chǔ)器段(16MB)的預(yù)取和緩存。存儲(chǔ)器管理軟件并行化設(shè)計(jì)SYS/BIOS為所有TI公司C64x和C66x器提供配置平臺(tái)。在多核片上系統(tǒng)的SYS/BIOS配置中本地L2內(nèi)存(LL2RAM)和共享L2內(nèi)存(SL2RAM)都有單獨(dú)的內(nèi)存段。空間分配應(yīng)根據(jù)在核間有多少應(yīng)用程序是通用的,再通過(guò)不同的配置來(lái)最小化操作系統(tǒng)和應(yīng)用程序在內(nèi)存中所占用的空間。DSP代碼和數(shù)據(jù)映像軟件并行化設(shè)計(jì)1、單映像單映像應(yīng)用程序在所有內(nèi)核中共享一些代碼和數(shù)據(jù)存儲(chǔ)器,這樣就在所有內(nèi)核上加載和運(yùn)行完全相同的應(yīng)用程序。如果運(yùn)行一個(gè)完全共享的應(yīng)用程序(當(dāng)所有內(nèi)核執(zhí)行相同的程序時(shí)),那么器件只需要一個(gè)項(xiàng)目,同樣,只需要一個(gè)SYS/BIOS配置文件。DSP代碼和數(shù)據(jù)映像軟件并行化設(shè)計(jì)2.多映像在這個(gè)場(chǎng)景中,每個(gè)內(nèi)核運(yùn)行一個(gè)不同的獨(dú)立應(yīng)用程序。這要求為放置在共享存儲(chǔ)區(qū)域(L2或DDR)中的任何代碼或數(shù)據(jù)分配一個(gè)唯一的地址范圍,以防止其他內(nèi)核訪(fǎng)問(wèn)相同的存儲(chǔ)器區(qū)域。每個(gè)應(yīng)用程序的SYS/BIOS配置文件負(fù)責(zé)調(diào)整存儲(chǔ)器區(qū)域的位置,以確保多個(gè)內(nèi)核不會(huì)訪(fǎng)問(wèn)重疊的存儲(chǔ)器范圍。DSP代碼和數(shù)據(jù)映像軟件并行化設(shè)計(jì)3.具有共享代碼和數(shù)據(jù)的多映像在此場(chǎng)景中,在不同內(nèi)核上運(yùn)行的不同應(yīng)用程序共享一個(gè)通用代碼映像。在多個(gè)應(yīng)用程序之間共享通用代碼減少了內(nèi)存需求,同時(shí)仍然允許不同的內(nèi)核運(yùn)行不同的應(yīng)用程序。通過(guò)使用部分鏈接可以將單映像和多映像技術(shù)結(jié)合起來(lái)。從部分鏈接的映像產(chǎn)生的輸出可以與其他模塊或應(yīng)用程序再次鏈接。DSP代碼和數(shù)據(jù)映像軟件并行化設(shè)計(jì)4.器件引導(dǎo)圖3-22所示例子給出如何使用這些程序從3個(gè)獨(dú)立的可執(zhí)行文件中創(chuàng)建一個(gè)啟動(dòng)表。DSP代碼和數(shù)據(jù)映像軟件并行化設(shè)計(jì)1.調(diào)試和工具類(lèi)別系統(tǒng)調(diào)試軟件并行化設(shè)計(jì)2.跟蹤日志在工作過(guò)程中必須對(duì)每個(gè)內(nèi)核上運(yùn)行的代碼進(jìn)行檢測(cè),并配置可用的硬件仿真邏輯來(lái)生成日志,對(duì)器件執(zhí)行的軟件和數(shù)據(jù)流進(jìn)行跟蹤。此過(guò)程支持在開(kāi)發(fā)期間或部署系統(tǒng)之后發(fā)現(xiàn)任何問(wèn)題并進(jìn)行調(diào)試。可以一直啟用跟蹤日志,也可以只在調(diào)試期間啟用。系統(tǒng)調(diào)試軟件并行化設(shè)計(jì)3.系統(tǒng)跟蹤系統(tǒng)跟蹤是一種收集系統(tǒng)級(jí)執(zhí)行數(shù)據(jù)的技術(shù),它對(duì)應(yīng)用程序的干擾較小或沒(méi)有干擾。系統(tǒng)跟蹤最初部署在C66x多核器件上,在C6x上不可用。通過(guò)系統(tǒng)跟蹤,傳統(tǒng)上由代碼捕獲的統(tǒng)計(jì)數(shù)據(jù)現(xiàn)在可以使用內(nèi)置在SoC中的邏輯自動(dòng)捕獲,而無(wú)須消耗寶貴的系統(tǒng)資源。通過(guò)系統(tǒng)跟蹤,輸出的每個(gè)消息都被分配一個(gè)系統(tǒng)級(jí)的時(shí)間戳,它支持整個(gè)系統(tǒng)的同步。系統(tǒng)跟蹤可以生成兩種類(lèi)型的消息:硬件消息和軟件消息。系統(tǒng)調(diào)試04軟件優(yōu)化設(shè)計(jì)軟件優(yōu)化設(shè)計(jì)推薦的軟件開(kāi)發(fā)流程是使用C6000代碼生成工具來(lái)輔助優(yōu)化,而不是通過(guò)手工編寫(xiě)匯編代碼。軟件開(kāi)發(fā)流程包括3個(gè)階段,如果在編寫(xiě)和調(diào)試代碼時(shí)遵循該軟件開(kāi)發(fā)流程,就可以獲得最佳性能。表3-8列出了軟件開(kāi)發(fā)流程中的3個(gè)階段及每個(gè)階段的目標(biāo)。代碼優(yōu)化軟件優(yōu)化設(shè)計(jì)代碼優(yōu)化軟件優(yōu)化設(shè)計(jì)1.編寫(xiě)C/C++代碼(1)代碼編原則a.因?yàn)镃6000編譯器將long數(shù)據(jù)類(lèi)型用于40位操作,所以在代碼中應(yīng)避免假定int和long類(lèi)型數(shù)據(jù)大小相同。b.盡可能在定點(diǎn)乘法輸入中使用short數(shù)據(jù)類(lèi)型。c.對(duì)循環(huán)計(jì)數(shù)器使用imt或無(wú)符號(hào)int數(shù)據(jù)類(lèi)型,而不用short或無(wú)符號(hào)short數(shù)據(jù)類(lèi)型,這樣做可以避免不必要的符號(hào)擴(kuò)展指令。代碼優(yōu)化軟件優(yōu)化設(shè)計(jì)(2)代碼性能分析a.代碼性能的一個(gè)初步衡量標(biāo)準(zhǔn)為代碼運(yùn)行時(shí)間,采用C/C++語(yǔ)言的clock()和printf()函數(shù)對(duì)特定代碼段的性能進(jìn)行計(jì)時(shí)及顯示??梢杂锚?dú)立仿真器(load6x)來(lái)運(yùn)行該代碼段注意應(yīng)減去調(diào)用clock()函數(shù)產(chǎn)生的時(shí)間。b.使用獨(dú)立仿真器的profile模式可通過(guò)使用-g選項(xiàng)執(zhí)行l(wèi)ad6x來(lái)完成。profle結(jié)果將保存在后綴名為.vaa的文件中。代碼優(yōu)化軟件優(yōu)化設(shè)計(jì)2.編譯C/C++代碼C6000編譯器通過(guò)將C/C++代碼轉(zhuǎn)換成更高效的匯編語(yǔ)言源代碼來(lái)支持高級(jí)語(yǔ)言。編譯器工具包括一個(gè)shell程序(cl6x),可以一步進(jìn)行編譯、匯編優(yōu)化、匯編和鏈接程序。3.代碼性能分析在大型應(yīng)用中,對(duì)最重要的代碼進(jìn)行優(yōu)化是十分有意義的。優(yōu)化的前提是對(duì)代碼進(jìn)行性能分析,使用獨(dú)立仿真器(load6x)進(jìn)行性能分析是較為常用的方法。代碼優(yōu)化軟件優(yōu)化設(shè)計(jì)4.控制代碼優(yōu)化(1)在結(jié)構(gòu)中入restrict關(guān)鍵字來(lái)限定指針雖然軟件流水線(xiàn)循環(huán)一般處理的是基于數(shù)組的數(shù)據(jù)結(jié)構(gòu),但控制代碼通常處理的是以某種方式鏈接在一起的復(fù)雜結(jié)構(gòu)。因此,在討論對(duì)這些數(shù)據(jù)結(jié)構(gòu)的控制代碼進(jìn)行優(yōu)化時(shí),必須考慮對(duì)這些數(shù)據(jù)結(jié)構(gòu)的尋址情況。代碼優(yōu)化軟件優(yōu)化設(shè)計(jì)(2)優(yōu)化if語(yǔ)句C6000編譯器在編譯小型if語(yǔ)句時(shí),會(huì)進(jìn)行如下轉(zhuǎn)換:轉(zhuǎn)換結(jié)果如下:代碼優(yōu)化軟件優(yōu)化設(shè)計(jì)(3)處理函數(shù)調(diào)用函數(shù)調(diào)用是被禁止優(yōu)化的,包含調(diào)用的循環(huán)不能被軟件流水線(xiàn)優(yōu)化。調(diào)度、寄存器分配和其他優(yōu)化也受到跨函數(shù)調(diào)用的約束。因此,大的或很少被調(diào)用的函數(shù)最好單獨(dú)使用。如果對(duì)性能要求高或者經(jīng)常被調(diào)用的函數(shù)被注釋為內(nèi)聯(lián)函數(shù),那么將提高調(diào)用的效率。(4)優(yōu)化大的控制代碼循環(huán)代碼優(yōu)化軟件優(yōu)化設(shè)計(jì)5.浮點(diǎn)、向量/矩陣運(yùn)算的優(yōu)化浮點(diǎn)運(yùn)算需要考慮的因素如下:1)對(duì)浮點(diǎn)運(yùn)算進(jìn)行優(yōu)化的時(shí)機(jī);2)降低在定點(diǎn)運(yùn)算中進(jìn)行的縮放和舍入消耗的運(yùn)算周期;3)使用倒數(shù)和開(kāi)均方倒數(shù)指令;4)快速數(shù)據(jù)格式轉(zhuǎn)換。代碼優(yōu)化軟件優(yōu)化設(shè)計(jì)6.軟件流水線(xiàn)優(yōu)化C6000處理器可以針對(duì)循環(huán)代碼進(jìn)行加速,這在數(shù)字信號(hào)處理、圖像處理和其他以循環(huán)為中心的處理例程中非常有利,其中軟件流水線(xiàn)技術(shù)對(duì)提高循環(huán)代碼性能的貢獻(xiàn)最大。代碼優(yōu)化軟件優(yōu)化設(shè)計(jì)1.緩存性能特征高速緩存的性能主要取決于緩存行的重用。如果內(nèi)存中的一行還沒(méi)有緩存,對(duì)它進(jìn)行訪(fǎng)問(wèn)就會(huì)導(dǎo)致內(nèi)核停頓。如果該行已經(jīng)保存在緩存中,那么后續(xù)訪(fǎng)問(wèn)就不會(huì)導(dǎo)致停頓。由此可見(jiàn),該行在緩存中重用得越頻繁,停頓的影響越小。因此,對(duì)一個(gè)應(yīng)用進(jìn)行優(yōu)化的重要目標(biāo)之一就是使緩存行重用最大化,這可以通過(guò)適當(dāng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論