www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]調(diào)節(jié)多核處理器硬件適應(yīng)軟件設(shè)計(jì)方法

    典型的嵌入式系統(tǒng)設(shè)計(jì)人員在硬件平臺(tái)上進(jìn)行編程,他們最關(guān)注的一點(diǎn)就是硬件平臺(tái)的穩(wěn)定性。如果硬件沒有設(shè)置好,會(huì)帶來重新編寫代碼的麻煩。但是一個(gè)完全設(shè)置好的穩(wěn)定的硬件平臺(tái)還是會(huì)對(duì)其上運(yùn)行的程序有一系列的限制。這些限制 - 無論是設(shè)計(jì)結(jié)果,還是一個(gè)完全的缺陷 - 都會(huì)造成在編碼時(shí)需要迂回處理甚至重新返工的情況,給設(shè)計(jì)實(shí)現(xiàn)帶來麻煩,并且耗費(fèi)了大量的時(shí)間。

  通過將FPGA平臺(tái)和一個(gè)精心設(shè)計(jì)的多核方法結(jié)合在一起,開發(fā)人員就能以下列這種方式實(shí)現(xiàn)高性能分組處理應(yīng)用:軟件工程師能夠?qū)τ?jì)算平臺(tái)的結(jié)構(gòu)有所控制,從而大大縮短編程時(shí)間,同時(shí)降低延期交付風(fēng)險(xiǎn)。

  硬件設(shè)計(jì)流程的主要工作就是定義一塊電路板。像存儲(chǔ)器類型、總線協(xié)議和I/O這樣的基本組件已被預(yù)先定義。

  如果只使用一個(gè)固定的處理器,那它也是預(yù)先定義好的。但是,單個(gè)處理器無法運(yùn)行需要吉比特性能的算法(例如分組處理算法),此時(shí)就需要多個(gè)處理器協(xié)同工作。

  構(gòu)建一個(gè)處理構(gòu)造塊的最佳方法取決于所運(yùn)行的軟件。使用FPGA來進(jìn)行處理,就能使你在對(duì)代碼需求有了進(jìn)一步了解后,再對(duì)精確的實(shí)現(xiàn)方式做出明確的決策。全新的Tejia FP平臺(tái)在Xilin

x® VirtexTM - 4 FPGA上提供了一種方法和多核基礎(chǔ)設(shè)施,使開發(fā)人員在完成代碼編寫后,對(duì)多核架構(gòu)進(jìn)行精確的配置。

  當(dāng)軟件工程師設(shè)計(jì)硬件時(shí)

  硬件和軟件設(shè)計(jì)是兩種本質(zhì)上不同的工作。無論硬件設(shè)計(jì)語言多么像一個(gè)軟件,它進(jìn)行的仍然是硬件設(shè)計(jì)。硬件語言對(duì)結(jié)構(gòu)進(jìn)行定義,并且設(shè)計(jì)流程最終要進(jìn)行結(jié)構(gòu)的實(shí)體化。但是,軟件工程師正越來越多地使用C編程技術(shù)來設(shè)計(jì)系統(tǒng)功能;現(xiàn)有的工具支持使用軟件或硬件方法來設(shè)計(jì)系統(tǒng)功能。

  軟件實(shí)現(xiàn)的方法更偏向于過程導(dǎo)向。它考慮的是“如何去做”而不是“構(gòu)建什么”的問題,因?yàn)閺膫鹘y(tǒng)觀點(diǎn)來看,已經(jīng)不需要再構(gòu)建什么了 - 硬件都已經(jīng)被構(gòu)建好了。在真正基于軟件的設(shè)計(jì)方法中,關(guān)鍵的功能不是被構(gòu)建到一種結(jié)構(gòu)中去,而是在一個(gè)已經(jīng)構(gòu)建好的系統(tǒng)中被結(jié)構(gòu)執(zhí)行的。靈活性是基于軟件的實(shí)現(xiàn)方法的優(yōu)勢(shì):在系統(tǒng)出廠后仍能快捷地對(duì)其進(jìn)行改變。雖然FPGA也能現(xiàn)場(chǎng)編程,但改變軟件設(shè)計(jì)要比構(gòu)建硬件快捷地多。

  由于硬件和軟件設(shè)計(jì)存在著差異,因此硬件和軟件的設(shè)計(jì)者所考慮的問題是不同的。硬件工程師不可能只通過改變編程語言的語法,就能轉(zhuǎn)變成軟件工程師。反之,軟件工程師也不可能因?yàn)橛布O(shè)計(jì)中需要軟件的參與,就能轉(zhuǎn)變成硬件工程師。因此,不能輕率地就讓軟件工程師加入到處理架構(gòu)的設(shè)計(jì)中來。

  此外,硬件工程師、軟件工程師或項(xiàng)目經(jīng)理都不會(huì)同意將一個(gè)基于硬件方法的設(shè)計(jì)交給一位軟件工程師去完成。軟件工程師做出關(guān)于硬件的決定時(shí)所使用的方法,極有可能得到熟悉類似編程語言的另一位軟件工程師的認(rèn)同。

  如圖1所示,并行流水線是多核分組處理引擎中處理架構(gòu)的關(guān)鍵結(jié)構(gòu)。這一引擎由一個(gè)處理器陣列加上可能存在的硬件加速器構(gòu)成。回答了下面這些問題,就等于完成了一個(gè)設(shè)計(jì)流程:

  •   需要多少個(gè)處理器?
  •   應(yīng)該如何安排這些處理器?
  •   每個(gè)處理器需要處理多少代碼和存儲(chǔ)多少本地?cái)?shù)據(jù)?
  •   代碼的哪些部分需要硬件加速

  讓我們來逐一回答這些問題,從而為軟件工程師“組裝”出一套設(shè)計(jì)方法。

  處理器的數(shù)量和配置

  所需處理器的數(shù)量可以通過對(duì)周期預(yù)算和執(zhí)行代碼所需的周期數(shù)進(jìn)行簡(jiǎn)單的數(shù)學(xué)計(jì)算得出。當(dāng)你要在規(guī)定的時(shí)間內(nèi)完成工作時(shí),周期預(yù)算就成為一個(gè)關(guān)鍵的參數(shù)。例如進(jìn)行分組處理時(shí),數(shù)據(jù)位置進(jìn)行劃分。這樣,就能夠圍繞劃分的情況來進(jìn)行硬件設(shè)計(jì),而不用根據(jù)硬件來進(jìn)行劃分。軟件工程師如何進(jìn)行設(shè)計(jì)是一個(gè)關(guān)鍵問題。Teja中集成了一組API和一個(gè)處理工具,可以用ANSI C來定義硬件平臺(tái)。此工具可執(zhí)行程序,創(chuàng)建處理平臺(tái)的定義,這些定義能夠被Xilinx嵌入式工具進(jìn)行處理。API組的內(nèi)容十分豐富,并且能夠在很靠底的硬件層次上進(jìn)行控制,但大多數(shù)軟件工程師不希望使用它們。因此,Teja中還使用參數(shù)化的方式加入了一個(gè)“典型的”流水線定義的方法。要實(shí)現(xiàn)上述示例中的流水線,只需要在配置頭文件中修改兩個(gè)簡(jiǎn)單的#define陳述式。

  下面的陳述式定義了一個(gè)兩級(jí)的流水線,在第一級(jí)使用了4個(gè)引擎,在第二級(jí)使用了2個(gè)引擎:圖1 - 并行的流水線,每個(gè)引擎由一個(gè)MicroBlaze處理器、專用存儲(chǔ)器和可選的減負(fù)器構(gòu)成。包不停地到來,而你在下一個(gè)數(shù)據(jù)包到來之前,只有那么多周期來完成你的工作。如果你的代碼需要更長(zhǎng)的時(shí)間來執(zhí)行,那么就需要添加更多的處理器。例如,如果周期預(yù)算是100個(gè)周期,而代碼執(zhí)行需要520個(gè)周期,那么你就需要6個(gè)處理器(520除以100,然后進(jìn)位到整數(shù))。你可以對(duì)處理器數(shù)量進(jìn)行調(diào)整,但必須滿足預(yù)算的要求。使用Teja工具時(shí),可以通過分析來確定周期數(shù)。

    下一個(gè)問題是如何安排這些處理器。處理這一問題最簡(jiǎn)單的辦法就是確定你是否需要?jiǎng)澐执a,來創(chuàng)建一個(gè)流水線。流水線使用較少的硬件資源,但會(huì)增加等待時(shí)間。如果你需要對(duì)代碼進(jìn)行劃分,最好選擇在一個(gè)明顯的位置(自然和直觀的位置)進(jìn)行。而沒有必要計(jì)算出周期中點(diǎn)精確的位置。

并行的流水線

圖1 - 并行的流水線,每個(gè)引擎由一個(gè)MicroBlaze處理器、專用存儲(chǔ)器和可選的減負(fù)器構(gòu)成。

  假設(shè)你要用6個(gè)處理器構(gòu)成一個(gè)兩級(jí)流水線。那么你現(xiàn)在就需要計(jì)算出每一級(jí)所需的處理器的數(shù)量;先通過分析來確定每個(gè)劃分的周期數(shù),如后再用它去除以周期預(yù)算,就可以得到每一級(jí)所需的處理器的數(shù)量。。因此,如果第一個(gè)劃分需要380個(gè)周期,則它需要4個(gè)處理器;這樣第二級(jí)就需要140個(gè)周期,從而需要兩個(gè)處理器。(兩個(gè)劃分所需的周期數(shù)之和實(shí)際上不一定正好等于未劃分的程序所需的周期數(shù),但會(huì)非常接近,因此在這里可以近似看作相等。)因此,這個(gè)兩級(jí)的流水線的第一級(jí)需要4個(gè)處理器,第二級(jí)需要2個(gè)處理器。如果有足夠的邏輯資源,使用Xilinx MicroBlazeTM軟核,就能夠?qū)嶓w化任何這樣的流水線。

  相比較而言,在一個(gè)固定的流水線結(jié)構(gòu)中,每一級(jí)的處理器數(shù)量都已經(jīng)

預(yù)先確定。因此就只能強(qiáng)制使用一種專門的劃分方法,實(shí)現(xiàn)這一劃分就會(huì)需要相當(dāng)長(zhǎng)的時(shí)間。相反地,如果每一級(jí)使用的處理器數(shù)量不同,流水線就可以定制,并且可以是不規(guī)則的。因此能夠從任何位置進(jìn)行劃分。這樣,就能夠圍繞劃分的情況來進(jìn)行硬件設(shè)計(jì),而不用根據(jù)硬件來進(jìn)行劃分。

  軟件工程師如何進(jìn)行設(shè)計(jì)是一個(gè)關(guān)鍵問題。Teja中集成了一組API和一個(gè)處理工具,可以用ANSI C來定義硬件平臺(tái)。此工具可執(zhí)行程序,創(chuàng)建處理平臺(tái)的定義,這些定義能夠被Xilinx嵌入式工具進(jìn)行處理。API組的內(nèi)容十分豐富,并且能夠在很靠底的硬件層次上進(jìn)行控制,但大多數(shù)軟件工程師不希望使用它們。因此,Teja中還使用參數(shù)化的方式加入了一個(gè)“典型的”流水線定義的方法。要實(shí)現(xiàn)上述示例中的流水線,只需要在配置頭文件中修改兩個(gè)簡(jiǎn)單的#define陳述式。

  下面的陳述式定義了一個(gè)兩級(jí)的流水線,在第一級(jí)使用了4個(gè)引擎,在第二級(jí)使用了2個(gè)引擎:

  #define PIPELINE_LENGTH 2

  #define PIPELINE_CONFIG {4,2};

  由上述陳述式和預(yù)設(shè)的配置程序,TejaCC程序就能構(gòu)建出流水線。當(dāng)然,無論由于什么原因使得流水線的配置需要發(fā)生改變時(shí),只要使用與上面相似的方法進(jìn)行編輯即可。

  存儲(chǔ)器

  第三個(gè)問題跟所需的存儲(chǔ)器數(shù)量有關(guān)。在一個(gè)典型的系統(tǒng)中,所能存儲(chǔ)的代碼和數(shù)據(jù)的數(shù)量是固定的。如果你的設(shè)計(jì)沒有滿足這一要求,就需要做大量的工作來將多出的內(nèi)容壓縮到存儲(chǔ)空間中。但是在使用FPGA時(shí),只要所需存儲(chǔ)器的數(shù)量在芯片所能提供的范圍之內(nèi),就能夠按照實(shí)際需要為每個(gè)處理器分配存儲(chǔ)空間。在更典型的情況下,所有的存儲(chǔ)空間的大小都相同(由于每個(gè)塊的最小容量為2k,這就限制了進(jìn)行微調(diào)的程度)。

配置并行流水線的流程

圖2 - 配置并行流水線的流程

  代碼編譯時(shí)提供所需存儲(chǔ)器的大小,并且可以使用下面的陳述式來編輯配置頭文件,在這個(gè)示例中為代碼和數(shù)據(jù)存儲(chǔ)分配的存儲(chǔ)空間均為8KB:

  #define CPE_CODE_MEM_SIZE_KB 8

  #define CPE_DATA_MEM_SIZE_KB 8

  使用減負(fù)器來加快處理速度

  第四個(gè)問題和創(chuàng)建硬件加速器有關(guān)。可能有一部分程序會(huì)占用太多的周期。要減少周期就需要更多的處理器,而使用硬件加速器就能減少處理器的數(shù)量。只要硬件加速器比其所替代的處理器占用更少的門,就能夠減少整個(gè)硬件實(shí)現(xiàn)的面積。

  Teja有一項(xiàng)功能就是用來從代碼中直接創(chuàng)建這樣的加速器或減負(fù)器。通過對(duì)程序進(jìn)行注釋,此功能就可創(chuàng)建:

  •   實(shí)現(xiàn)代碼的硬件邏輯
  •   通過系統(tǒng)接口在處理器基礎(chǔ)設(shè)施中添加加速器
  •   調(diào)用原型替換程序中最初的代碼
  •   在將減負(fù)器集成于系統(tǒng)之前,先使用測(cè)試臺(tái)對(duì)其進(jìn)行驗(yàn)證。

  一旦創(chuàng)建了減負(fù)器,周期數(shù)就會(huì)減少,因此你需要重新安排處理器。但由于重新定義流水線結(jié)構(gòu)的操作十分方便,因此這是一項(xiàng)很簡(jiǎn)單的任務(wù)。

  一個(gè)簡(jiǎn)單直接的方法

  將前面所述的步驟組合在一起,就產(chǎn)生了圖2中所示的設(shè)計(jì)流程。你可以先定義減負(fù)器(對(duì)于明顯需要減負(fù)器的任務(wù)),或在配置好流水線之后再定義減負(fù)器(如果現(xiàn)有的代碼使用了太多的處理器)。

  軟件工程師所能控制的是一些在他們看來自然和簡(jiǎn)單的參數(shù),這里使用自然的軟件語言(ANSI C)來表達(dá)這些參數(shù)。對(duì)硬件進(jìn)行實(shí)體化的所有細(xì)節(jié)都由TejaCC程序來處理,它會(huì)為Xilinx嵌入式開發(fā)系統(tǒng)(EDK)創(chuàng)建一個(gè)項(xiàng)目。剩下的編譯/綜合/布局/布線和產(chǎn)生比特流以及鏡像代碼的工作全都由EDK來完成。

    在這種方式下,電路板可以由硬件工程師設(shè)計(jì),但通過使用FPGA,硬件工程師能夠?qū)⒆罱K的實(shí)現(xiàn)中硬件配置的關(guān)鍵部分,留給軟件設(shè)計(jì)者去完成。這一方法還支持在設(shè)計(jì)即將完成時(shí)對(duì)電路板進(jìn)行改動(dòng)(例如,由于性能原因要對(duì)存儲(chǔ)器的類型和容量進(jìn)行改動(dòng))。由于Teja工具能創(chuàng)建FPGA的硬件定義,其中包括存儲(chǔ)器控制器和其他外設(shè),因此設(shè)計(jì)人員可以輕松地調(diào)節(jié)電路板。最終的結(jié)果是,由于硬件實(shí)現(xiàn)可以適應(yīng)軟件的變化,因此軟件設(shè)計(jì)者不再需要花費(fèi)大量的時(shí)間來圍繞一個(gè)固定的硬件設(shè)置編寫程序。

  通過利用靈活的Virtex - 4 FPGA和MicroBlaze核,Teja FP環(huán)境和基本結(jié)構(gòu)使得所有這一切都變成了可能。有了這一強(qiáng)大的工具,你就能夠?qū)㈤_發(fā)周期縮短幾周甚至幾個(gè)月。

  Teja還提供了一些高級(jí)應(yīng)用程序,這些應(yīng)用程序能用來啟動(dòng)一個(gè)項(xiàng)目,并減少所需的工作量。將一個(gè)靈活省時(shí)的設(shè)計(jì)方法和一個(gè)事先定義好的應(yīng)用程序結(jié)合起來使用,網(wǎng)絡(luò)設(shè)備的制造者就能更快地完成他們的設(shè)計(jì)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

流水賬式的推文比較亂,不夠系統(tǒng),也形成不了好的宣傳效應(yīng),所以我整理了一個(gè)硬件基礎(chǔ)知識(shí)框架,后面推文會(huì)圍繞這個(gè)展開,中間也會(huì)穿插一些項(xiàng)目和實(shí)際應(yīng)用例程。

關(guān)鍵字: 硬件 項(xiàng)目 例程

Linux內(nèi)核是從V2.6開始引入設(shè)備樹的概念,其起源于OF:OpenFirmware, 用于描述一個(gè)硬件平臺(tái)的硬件資源信息,這些信息包括:CPU的數(shù)量和類別、內(nèi)存基地址和大小、總線和橋、外設(shè)連接、中斷控制器和中斷使用情...

關(guān)鍵字: Linux內(nèi)核 硬件 CPU

2020 年,公司處理器產(chǎn)品四核龍芯 3A5000/3B5000 研制成功。龍芯 3A5000/3B5000 基于龍芯 3A4000/3B4000 進(jìn)行工藝升級(jí),主頻 2.3-2.5GHz, 單核通用處理性能是龍芯 3A...

關(guān)鍵字: 處理器 芯片 市場(chǎng)化

自主研發(fā)芯片對(duì)其自身有更為實(shí)際的意義。首先,自主研發(fā)芯片可以減輕對(duì)上游供應(yīng)鏈的依賴。其次,自主芯片更方便打造出獨(dú)家特色產(chǎn)品,增強(qiáng)產(chǎn)品在市場(chǎng)上的競(jìng)爭(zhēng)力。再次,自主研發(fā)芯片能降低成本,提高利潤(rùn)。

關(guān)鍵字: 芯片 處理器 市場(chǎng)

本文中,小編將對(duì)無線模塊予以介紹,如果你想對(duì)無線模塊的詳細(xì)情況有所認(rèn)識(shí),或者想要增進(jìn)對(duì)它的了解程度,不妨請(qǐng)看以下內(nèi)容哦。

關(guān)鍵字: 無線模塊 寄存器 處理器

珀金埃爾默日前推出Cellaca PLX圖像式細(xì)胞分析系統(tǒng),這是業(yè)界第一款能讓研究人員在單個(gè)自動(dòng)化工作流中實(shí)現(xiàn)對(duì)細(xì)胞樣本多個(gè)關(guān)鍵質(zhì)量屬性進(jìn)行分析和評(píng)估的臺(tái)式平臺(tái),包括對(duì)細(xì)胞性質(zhì)、質(zhì)量和數(shù)量的分析評(píng)估。擁有尖端技術(shù)的Cel...

關(guān)鍵字: AC EXCEL 硬件 自動(dòng)化

(全球TMT2022年10月11日訊)近日,昆侖芯(北京)科技有限公司的第二代云端通用人工智能計(jì)算處理器昆侖芯2代AI芯片及AI加速卡與飛槳完成III級(jí)兼容性測(cè)試,兼容性表現(xiàn)良好。 產(chǎn)品兼容性證明 本次...

關(guān)鍵字: 人工智能 加速卡 處理器 模型

上周說開始盤三極管,周末我專門花時(shí)間去研究了小伙伴的留言,又去翻了模電的書,目的是尋找好的切入點(diǎn)。去翻課本,發(fā)現(xiàn)課本上總是會(huì)從三極管的發(fā)展歷程講起,談?wù)勅龢O管的物理構(gòu)成,分析內(nèi)部載流子的傳輸過程,電流的分配關(guān)系等等。這些...

關(guān)鍵字: 三極管 內(nèi)部載流子 硬件

(全球TMT2022年10月8日訊)愛立信全新上線超過200個(gè)AI App的業(yè)務(wù)持續(xù)性解決方案,進(jìn)一步保障并增強(qiáng)了CSP移動(dòng)網(wǎng)絡(luò)業(yè)務(wù)持續(xù)運(yùn)行的效率和健壯性。該方案由愛立信與運(yùn)營(yíng)商聯(lián)合開發(fā),主要用于運(yùn)維過程中的預(yù)測(cè)性維護(hù)...

關(guān)鍵字: AMD 處理器 愛立信 EPYC

臺(tái)北2022年10月3日 /美通社/ -- AMD EPYC在CPU市場(chǎng)上始終處于變革性顛覆者的地位。從早期7001系列處理器推出高達(dá)32核、128 條PCIe Gen3通道到現(xiàn)在的"米蘭"7003系...

關(guān)鍵字: AMD 處理器 EPYC BSP

嵌入式教程

6897 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉