亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于C/C++的多核處理器設計

        2015-10-21 18:12:24姜欣寧桂小林姜晨煒
        計算機時代 2015年9期
        關鍵詞:高效率

        姜欣寧 桂小林 姜晨煒

        摘 要: 為了解決高校學生多核處理器的設計與實現(xiàn)困難的問題,介紹了一種多核處理器的設計思想和實現(xiàn)方法。該方法利用了面向對象技術將多核處理器的工作原理抽象出來,在ISE平臺上通過高級編程語言完成從模型設計到HLS編碼,再到具體硬件布局實現(xiàn)的完整過程。該方法和硬件描述語言(VHL)設計方法相比較,大大降低了FPGA設計的復雜度,提高了系統(tǒng)的開發(fā)效率,并且對于從事軟件設計的編程人員也可以通過C/C++進行FPGA的設計。它為高校學生進行多核處理器(模型機)的開發(fā)提供了一種新型的、實用的、高效的設計思路和方法。

        關鍵詞: 多核處理器; FPGA; HLS; ARM; 高效率

        中圖分類號:TP332 文獻標志碼:A 文章編號:1006-8228(2015)09-47-04

        Multi-core processor design with C/C++

        Jiang Xinning, Gui Xiaolin, Jiang Chenwei

        (Xi'an Jiaotong university institute of telecommunications, Xi'an, Shanxi 710049, China)

        Abstract: In order to solve the problem of the design and implementation of the multi-core processor for college students, this paper introduces a design idea and implementation method of multi-core processor. The method uses object-oriented technology to abstract the work principle of multi-core processor, and on the ISE platform, the complete process from the model design to the HLS encoding and then to the specific hardware layout realization, is completed through the advanced programming language. Comparing with the design method of hardware description language (VHL), this method greatly reduces the complexity of FPGA design, improves the development efficiency of the system, and ensures that the software programmer can also use C/C++ to achieve the design of FPGA. It provides a new, practical and efficient design method for college students to develop multi-core processor (model machine).

        Key words: multi-core processor; FPGA; HLS; ARM; high efficiency

        0 引言

        學習和掌握一個計算機模型機的設計和實現(xiàn)方法,對于培養(yǎng)學生理論聯(lián)系實際、創(chuàng)新能力及培養(yǎng)計算機系統(tǒng)的設計人才,都有著十分重要的意義。目前在高校的計算機專業(yè)課程實驗教學中,基本上是以單處理器為教學對象,而現(xiàn)實的應用中,主流處理器均是多核的處理器,它相對于單核處理器具有更高的指令并行執(zhí)行能力,它能大大提高指令執(zhí)行效率,進而提高整個系統(tǒng)的效率。所以開展多核處理器的研究和設計是我們教學改革的一個有益嘗試。

        我們開展單核處理器設計的實驗教學已有八年多了。利用硬件描述語言(如VHDL,Verilog HDL等)在FPGA上實現(xiàn)單核處理器的的功能設計是目前國內外比較通用的方法,相比于微處理器,它具有功耗低,設計周期短,開發(fā)費用低等特點。隨著計算機技術的迅猛發(fā)展,雙(多)核處理器被廣泛應用在各個領域,讓計算機、電子等相關專業(yè)的學生掌握其中的設計思想是十分必要的。然而,在硬件電路上完成多核處理器系統(tǒng)設計并不是一件容易的事,因為需要多方面的考慮,如系統(tǒng)的邏輯結構、復雜的接口等問題,以及較高的知識門檻和豐富的實際設計經(jīng)驗。若在教學實踐中讓學生設計,則難以在有限的時間內完成它。另外,這相關的開發(fā)資料十分匱乏。為此,本文給出了一種新的設計思想及描述了完整的實現(xiàn)的過程;較好地解決了以上問題。

        1 雙核/多核處理器系統(tǒng)設計

        1.1 開發(fā)平臺

        本項目采用了我們自己研制的“XJECA開放式計算機系統(tǒng)結構實驗系統(tǒng)(開發(fā)板)”。開發(fā)板的核心部件是Xilinx公司的Zynq-7000 All Programmable SoC(Zynq-7020)器件,它在一個芯片內將ARM雙核Cortex-A9 MPCore處理系統(tǒng)(PS)與可擴展的可編程邏輯架構(PL)完美地結合在一起。芯片內部采用了業(yè)界事實標準的AMBA總線作為片上系統(tǒng)的互連總線;它可支持雙核Cortex-A9處理器系統(tǒng)作為主控部件以及可編程邏輯的定制和外設的并行開發(fā)[9]。軟件開發(fā)平臺采用Xilinx公司的ISE14.*(或Vivado)。

        1.2 系統(tǒng)架構的設計

        本項目設計為同構的處理模塊組成多核處理器結構,類似Intel的雙核處理器的設計思路,如圖1所示。每個處理模塊中有獨自的數(shù)據(jù)和指令cache,訪存操作則通過各自的內存管理器進行,而內存管理器由統(tǒng)一的總線協(xié)調模塊管理,分配給不同的處理單元不同的訪存地址,并且解決各個處理器訪存沖突問題。這里處理單元CPU0,CPU1,CPU2…及其相對應的數(shù)據(jù)指令cache通過FPGA(PL)設計實現(xiàn),而內存管理器的總線協(xié)調模塊則用ARM(PS)來實現(xiàn)[1-8]。

        1.3 單核處理模塊的設計

        在“傳統(tǒng)”CPU(運算器、寄存器和控制器)的基礎上,另加高速緩存cache單元,構成新的單核處理模塊。

        通過Cache機制進行預測。預測數(shù)據(jù)主要是基于程序訪問的局部性原理。Cache的替換算法有很多種,本文采用了先入先出算法(FIFO)。

        1.4 指令系統(tǒng)設計

        采用自定義的定長精簡指令集。指令的長度為32位,指令格式分為6個段,各段分別表示:指令類型、尋找方式、操作碼、源操作數(shù)、目的操作數(shù)、立即數(shù)。如圖2所示。

        為便于說明,我們對功能作了簡化,在ALU中只用到十種運算,所以只用到前十個操作碼,后面22個操作碼用于以后拓展操作。而對于訪存操作來說,第24~29位代表了訪存操作的源和目的數(shù)據(jù)來源。其中第27~29位表示了源操作數(shù)的來源,第24~26位表示目的操作來源。一共有4種尋址方式,分別是寄存器尋址,直接尋找,寄存器間接尋址和立即數(shù)。

        1.5 HLS的利用

        在FPGA上進行復雜的系統(tǒng)設計,利用傳統(tǒng)的方法(硬件描述語言)設計,在時間有限的情況下會有較大的困難;為解決這一局限性問題,我們利用了高級綜合工具(HLS)的特性;能夠大幅度提高設計效率,可以站在更高的層次、以一種全新的角度來設計,即FPGA的設計更加重視“系統(tǒng)級”建模。設計的效率取決于設計者對傳統(tǒng)“軟件串行執(zhí)行”和“硬件并行執(zhí)行”的理解程度。特別適合從事傳統(tǒng)的“軟件”設計、編程人員通過HLS工具進行FPGA的設計。HLS的主要功能,包括以下方面[12-13]。

        ⑴ 可以從C語言描述級的源代碼創(chuàng)建一個RTL級實現(xiàn)。從C源代碼提取出控制和數(shù)據(jù)流。

        ⑵ 實現(xiàn)多樣的設計:較小的設計,較快速的設計,優(yōu)化的設計??梢员容^方便進行各種復雜系統(tǒng)的設計方法的“探索”。

        ⑶ 可以從C代碼提取硬件結構,包括:從C代碼中提取控制和數(shù)據(jù)通道(頂層)。在頂層控制流的一些點,將控制傳遞到子程序中;能并行地執(zhí)行子程序。

        ⑷ 通過調度和綁定過程,HLS將C代碼映射到硬件。

        ⑸ HLS工具的優(yōu)勢在可移植性及實現(xiàn)設計和IP“重用”等。

        1.6 設計步驟

        ⑴ 使用C++技術對設計好的處理器的每個部件進行編碼,并且通過HLS工具來生成對應的硬件描述語言以及對應的RTL級視圖。

        與傳統(tǒng)的硬件描述語言設計相比較,描述設計過程更抽象,它可以忽略器件的一些硬件細節(jié),相關的功能都可以交給HLS工具來自動生成。

        ⑵ 對控制器的HLS編碼,包括了取指令、指令譯碼和指令跳轉等操作,由于指令是從外部存儲器中獲取,模塊所需的接口為外部數(shù)據(jù)總線和一些讀寫控制信號,以及一些標準接口的信號。外部數(shù)據(jù)總線應該與實驗板中的核心芯片Zynq-7020內的ARM上的總線連接。

        ⑶ 多核控制器的HLS編碼,因為是同構多核系統(tǒng),所以可以將設計的單核處理模塊作為一個類來使用,同時針對這個類生成多個實例,通過多核控制器來給每個實例分配對應的內存地址空間。

        2 多核處理器的實現(xiàn)

        一個完整的多核系統(tǒng)需要把設計的處理器模塊(FPGA)與ARM配合起來使用。通過ARM來實現(xiàn)我們所設計FPGA上的多核處理器核間任務調度工作和FPGA訪存工作。這些需要對ARM進行程序開發(fā)[10-11]。

        2.1 生成Pcore

        首先需要生成處理器RTL級模型對應的Pcore,然后將其添加到ARM的外設中,建立起ARM和FPGA之間的聯(lián)系。操作步驟如下:

        使用指令創(chuàng)建Pcore;在HLS工具中選擇Directive標簽,右鍵選擇Insert Directive,在下拉框內選擇RESOURCE。RESOURCE是用于在一個RTL接口上,添加一個總線接口。這樣就為我們所需要的信號創(chuàng)建地址映射,然后就可以通過軟件訪問到。另一種方法是不在頂層模塊上使用RESOURCE命令,而是為各個信號創(chuàng)建一個單獨的接口。通過使用GPIO IP核,將這些端口連接到處理器系統(tǒng)中。最后,在HLS工具的主界面菜單下選擇Solution->Export RTL,生成Pcore核。

        2.2 ARM的編程

        ⑴ 通過創(chuàng)建一個ARM處理器系統(tǒng)(過程略),用于對HLS生成的處理器進行驗證。

        在Xilinx工具中打開Xilinx Platform Studio,創(chuàng)建一個新的設計工程。首先開始對外設參數(shù)進行配置,然后將我們上面所生成的Pcore核導入到本設計中。

        ⑵ 使用SDK設計和實現(xiàn)應用工程。

        使用SDK生成新的應用工程,導入應用程序,并對應用工程進行驗證。在SDK主界面中,創(chuàng)建一個新的應用工程,并導入用HLS生成Pcore核時的一些頭文件和定義的操作函數(shù)。配置SDK開發(fā)環(huán)境后,進行ARM模塊的編程。該模塊主要實現(xiàn)了對FPGA中的處理器進行多核控制執(zhí)行操作。最終得到執(zhí)行結果。

        3 測試結果與分析

        3.1 處理器整體結構圖

        由各部件的HLS編碼后生成最終的處理器模型,其中關鍵性的多核器件的構成十分復雜,如圖3所示(或圖略):

        從圖3中可以大致看出,這個處理器由上百個小器件通過復雜的連接構成,若單純用硬件描述語言來描述,將會是一個很大的工程;它生成的vhd文件代碼有1500多行,而用HLS來描述只需要約140行代碼。以此說明HLS技術從系統(tǒng)層面上來描述所需的應用,大大的提高了設計的效率。

        3.2 處理器的調試及仿真

        我們可以用HLS工具對設計出來的處理器在C語言模式下進行調試,以檢測設計的正確性,處理器調試程序代碼如下。

        我們先分別賦給寄存器r0,r1的值為0×100(即十進制的256),然后相加,并把結果放入內存地址5單元,最后得到了正確的結果512,這說明我們所設計的處理器在邏輯上是正確的。

        3.3 多核處理器運行分析

        本例對于不同數(shù)目的核,在處理器上運行1萬次乘法所需要的時間來進行性能比較。

        ⑴ 執(zhí)行如下代碼

        ⑵ 實驗結果分析

        不同數(shù)目核的處理器運行,經(jīng)過四次實驗后得到的結果如表1及圖4所示。

        由表1和圖4中可以看出,從單核到雙核的過程,運行效率提高的比較明顯,而從二核到四核并不是很明顯,到達八核以后,運行的效率反而比四核的要慢一些, 其原因可能是當核的數(shù)目增加時,核間任務調度的時間會變得更長,還可能跟每個核啟動的一些固有時間有關,這樣導致了當核數(shù)目增加到一定時,繼續(xù)增加反而會導致效率降低。對于本次設計的處理器系統(tǒng),運行在四核情況下能達到其最高的運行效率。

        通過在設計的處理器上分別調用其單核,雙核,四核和八核完成的實驗,得到了一些多核處理器性能方面的結論,同時也驗證了本系統(tǒng)的正確性和可執(zhí)行性。

        ⑶ FPGA資源使用情況

        從表2的FPGA資源使用情況可以看出,使用HLS工具生成的硬件電路資源利用率還是很高的。

        4 結束語

        本文利用ARM、C/C++及HLS技術,從系統(tǒng)結構框架、指令代碼系統(tǒng)、主要部件組成等方面進行了完整而全面的設計并給予驗證。闡明了該方法可以大大降低設計一個計算機(模型機)系統(tǒng)的復雜度,也證明了這種設計思路和方法的可行性。它為今后高校計算機系統(tǒng)教學中進行高效率、較復雜系統(tǒng)的設計及方法驗證提供了一種新的途徑。

        本項目仍有一些內容有待改進。例如,在HLS技術中,C對底層電路的內在關系(時序方面)還需進一步描述。今后需要在ARM中增加編譯器功能;可以將多核的任務調度功能直接加入FPGA的設計;并且使FPGA和ARM完全的獨立工作,以便FPGA的移植。

        參考文獻:

        [1] 彭曉明,郭浩然,龐建民.多核處理器——技術、趨勢和挑戰(zhàn)[J].計算機科學,2012.11.14.

        [2] 聶鵬程.多核處理器上的操作系統(tǒng)調度[D].西安電子科技大學,2013.

        [3] 朱丹.基于FPGA的多核處理器系統(tǒng)的研究與設計[D].燕山大學,2013.

        [4] 范曉亮.基于FPGA的雙核模型機CPU的設計與實現(xiàn)[D].東北大學,2008.

        [5] 章鳴嬛.基于可重構技術的雙核微處理器系統(tǒng)的設計[J].微型電腦應用,2011.7.20.

        [6] 姑蘇飄雪.龍爭虎斗AMD_lntel雙核處理器技術解析[J].電腦迷,2006.4.15.

        [7] 岳虹.嵌入式異構多核處理器設計與實現(xiàn)關鍵技術研究[D] 國防科學技術大學,2006.

        [8] 英特爾亞太研發(fā)有限公司.多核多線程技術[M].上海交通大學出版社,2011.

        [9] 何賓.Xilinx ALL Programmable Zynq-7000 SOC設計指南[M].清華大學出版社,2013.

        [10] 張亮.基于Xilinx FPGA的多核嵌入式系統(tǒng)設計基礎[J].西安電子科技大學,2011.

        [11] 李寧.ARM Cortex-A8處理器原理與應用[M].北京航空航天出版社,2012.

        [12] xilinx.Introduction to FPGA Design with Vivado HLS[M/OL].www.xilinx.com,2013.

        [13] John Curreri, Greg Stitt, and Alan D. George. High-Level Synthesis of In-Circuit Assertions for Verification, Debugging, and Timing Analysis[J]. International Journal of Reconfigurable Computing,2011.

        猜你喜歡
        高效率
        如何獲得高效率的學習狀態(tài)
        小設疑與高效率
        一種高效率單級PFC變換器的LED照明驅動電路
        電源技術(2015年2期)2015-08-22 11:28:16
        基于Si9112的高效率開關穩(wěn)壓電源
        麻豆成人在线视频| 久久精品国产99国产精品亚洲 | 最新日本一道免费一区二区| 亚洲av无码一区二区三区性色| 国产精品国产三级国产av创 | 亚洲精品中文字幕一二三四| 欧美人与动性xxxxx杂性| 丰满岳乱妇久久久| 久久精品国产亚洲AV香蕉吃奶| 街拍丝袜美腿美女一区| 99无码精品二区在线视频| 波多野结衣中文字幕久久| 午夜爽毛片| 偷拍韩国美女洗澡一区二区三区 | 欧美黑人又粗又大久久久| 久久亚洲中文字幕精品一区四| 麻豆国产精品一区二区三区| 国产无吗一区二区三区在线欢| 国产黑丝在线| 高清亚洲精品一区二区三区| 精品亚洲一区二区三区四区五区 | 久久欧美与黑人双交男男| 久久精品国产亚洲AV高清y w| 国内自拍视频一区二区三区| 野外亲子乱子伦视频丶| 提供最新的在線欧美综合一区| 国产人妖一区二区av| 无码专区一ⅴa亚洲v天堂| 一本久久a久久精品亚洲| 中文字幕成人精品久久不卡| 亚洲精品久久视频网站| 狼人香蕉香蕉在线28 - 百度| 国产爆乳乱码女大生Av| 精品国产精品久久一区免费| 亚洲欧美综合精品成人网站| 欧美变态口味重另类在线视频 | 国产精品第1页在线观看| 一区二区三区精品亚洲视频| 亚洲精品乱码久久久久久不卡| 国产精品美女久久久浪潮av| 国产麻豆剧传媒精品国产av蜜桃|