• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于動(dòng)芯基帶芯片的多核并行同步仿真平臺(tái)

      2017-04-19 10:18:02
      關(guān)鍵詞:指令集基帶模擬器

      周 鳴

      (重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)

      基于動(dòng)芯基帶芯片的多核并行同步仿真平臺(tái)

      周 鳴

      (重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)

      為了對(duì)物理層代碼進(jìn)行驗(yàn)證與分析,提出了一種基于動(dòng)芯基帶芯片的多核仿真平臺(tái)。該平臺(tái)采用多線程技術(shù),通過(guò)共享內(nèi)存和信號(hào)量分別實(shí)現(xiàn)了多核間的通信和同步功能。實(shí)驗(yàn)結(jié)果表明,該仿真平臺(tái)可以正確模擬多核間的并行運(yùn)行情況,并驗(yàn)證物理層代碼的正確性。該仿真平臺(tái)在動(dòng)芯基帶芯片設(shè)計(jì)實(shí)現(xiàn)方面發(fā)揮了巨大作用。

      物理層代碼;多線程;共享內(nèi)存;信號(hào)量

      引 言

      隨著基帶芯片的結(jié)構(gòu)以及處理過(guò)程越來(lái)越復(fù)雜,研發(fā)所需的時(shí)間越來(lái)越長(zhǎng),成本也越來(lái)越高。在芯片研發(fā)的過(guò)程中,設(shè)計(jì)者需要一個(gè)軟件仿真系統(tǒng)來(lái)對(duì)處理器的功能和物理層代碼進(jìn)行驗(yàn)證[1]。一方面,軟件仿真系統(tǒng)在芯片沒(méi)有制造出來(lái)之前,就可以讓物理層代碼在仿真平臺(tái)上運(yùn)行調(diào)試,這樣應(yīng)用程序設(shè)計(jì)和處理器結(jié)構(gòu)設(shè)計(jì)可以同時(shí)進(jìn)行,大大縮短了芯片開(kāi)發(fā)周期;另一方面,芯片在設(shè)計(jì)驗(yàn)證時(shí)經(jīng)常需要改動(dòng),如果都使用樣本進(jìn)行評(píng)估,所需要的時(shí)間和成本是無(wú)法估計(jì)的,而使用仿真平臺(tái)對(duì)處理器結(jié)構(gòu)進(jìn)行評(píng)估所需的時(shí)間和成本會(huì)大大降低。目前,模擬器已經(jīng)成為處理器設(shè)計(jì)和制造過(guò)程中不可或缺的一部分[2]。

      動(dòng)芯基帶芯片是中科院計(jì)算機(jī)所研發(fā)的針對(duì)基帶數(shù)字信號(hào)處理的可重構(gòu)和可擴(kuò)展的基帶芯片。目前,動(dòng)芯基帶芯片缺少一種方便實(shí)用的針對(duì)SoC的軟件仿真工具,在芯片設(shè)計(jì)之初很難對(duì)物理層算法進(jìn)行評(píng)估及量化分析,使得這種基于工程師經(jīng)驗(yàn)的SoC設(shè)計(jì)方法難以在大規(guī)模SoC設(shè)計(jì)空間中找到一種滿足應(yīng)用需求的最合理的點(diǎn)。此外,在軟基帶的設(shè)計(jì)方法中,片上多核應(yīng)用程序的調(diào)試問(wèn)題也非常突出。

      目前,采取的解決方案是將多核應(yīng)用程序分片在單核上執(zhí)行并調(diào)試,然后將多核程序在RTL層進(jìn)行仿真調(diào)試。但是該方案仿真速度慢,需要程序員了解硬件的并行執(zhí)行邏輯,會(huì)使用硬件仿真工具,而且在RTL調(diào)試過(guò)程中,不能像高級(jí)語(yǔ)言調(diào)試那樣可以隨時(shí)查看變量,隨時(shí)設(shè)置斷點(diǎn)等,具有很大的限制,所以在多核芯片上,移植及仿真調(diào)試運(yùn)行第三方的軟件程序非常困難。因此,急需一款基于動(dòng)芯基帶芯片的多核仿真平臺(tái)來(lái)支持芯片的使用和推廣。當(dāng)前,已經(jīng)擁有一個(gè)良好的開(kāi)發(fā)基礎(chǔ):完整的動(dòng)芯DSP開(kāi)發(fā)工具,其中包括模擬器、編譯器、調(diào)試器和集成開(kāi)發(fā)環(huán)境,這些條件完全可以支撐開(kāi)發(fā)一款基于動(dòng)芯基帶芯片的多核仿真平臺(tái)。

      1 總體設(shè)計(jì)思想

      基于動(dòng)芯基帶芯片的多核仿真平臺(tái)的核心是多線程技術(shù)[3]。使用多線程,可以對(duì)SoC上各硬件的并行情況進(jìn)行較高程度的模擬。仿真平臺(tái)的結(jié)構(gòu)如圖1所示。

      圖1 仿真平臺(tái)結(jié)構(gòu)圖

      平臺(tái)主要由DSP模塊、共享內(nèi)存模塊和調(diào)試器模塊組成。其中,共享內(nèi)存模塊使用全局變量模擬,其余模塊使用線程模擬。在整個(gè)多核仿真平臺(tái)中,最重要的部分是DSP模塊,其基礎(chǔ)是動(dòng)芯DSP指令集模擬器。動(dòng)芯DSP指令集模擬器采用C語(yǔ)言開(kāi)發(fā),完全模擬了硬件功能實(shí)現(xiàn),包括所有指令功能的實(shí)現(xiàn)、流水線結(jié)構(gòu)、跳轉(zhuǎn)預(yù)測(cè)、多指令并行(VLIW)、數(shù)據(jù)的裝載與導(dǎo)出、變量的打印、與調(diào)試器的連接等諸多功能,除此之外,模擬器還肩負(fù)起了數(shù)據(jù)并行度探索、程序執(zhí)行周期數(shù)統(tǒng)計(jì)等Profiling信息統(tǒng)計(jì)的責(zé)任。指令集模擬器只模擬硬件執(zhí)行指令的行為,只是功能上的實(shí)現(xiàn),并不涉及到信號(hào)線,只是模擬一條條指令執(zhí)行后的寄存器、MEMORY的實(shí)時(shí)情況,所以在涉及此模擬器前不用去過(guò)多地關(guān)注硬件的布線等細(xì)節(jié),應(yīng)該更多地關(guān)注處理器的功能、結(jié)構(gòu)、指令的執(zhí)行、BYPASS、多通路等。由于多核仿真平臺(tái)實(shí)現(xiàn)不需要對(duì)DSP指令集模擬器內(nèi)部結(jié)構(gòu)進(jìn)行修改,只是添加了一些用于通信同步的指令,所以為了方便多核模擬器的實(shí)現(xiàn)以及對(duì)DSP內(nèi)部數(shù)據(jù)的保護(hù),將整個(gè)DSP指令集模擬器都封裝到一個(gè)DSP類中。這樣通過(guò)將實(shí)例化的多個(gè)DSP對(duì)象傳進(jìn)對(duì)應(yīng)線程,就可以在完全繼承DSP指令集模擬器全部功能的基礎(chǔ)上實(shí)現(xiàn)多核DSP并行的目標(biāo)。

      從單核指令集模擬器到多核指令集模擬器,最重要的是解決多核間的通信以及同步問(wèn)題。本文的思想是將多核間的問(wèn)題轉(zhuǎn)換成多線程間的問(wèn)題,將多線程間用于通信以及同步的函數(shù)以指令的形式添加到指令集模擬器中,同時(shí)在編譯器中也相應(yīng)地加入這些指令,程序員就可以通過(guò)調(diào)用這些指令來(lái)解決多核間的通信同步問(wèn)題。并行調(diào)試問(wèn)題的解決方案是將每個(gè)DSP核都與一個(gè)GDB相連,并通過(guò)遠(yuǎn)程調(diào)試的方法調(diào)試相應(yīng)DSP核上的應(yīng)用程序。

      啟動(dòng)多核仿真平臺(tái)之前,通過(guò)命令行參數(shù)對(duì)DSP核的個(gè)數(shù)、DSP內(nèi)存、寄存器大小和各DSP核上物理層代碼進(jìn)行配置,除了DSP核個(gè)數(shù)之外,其余都是通過(guò)讀取配置文件實(shí)現(xiàn)的。啟動(dòng)之后,主線程會(huì)根據(jù)命令行的參數(shù)啟動(dòng)各DSP核對(duì)應(yīng)的線程,并將所需要的數(shù)據(jù)存入DSP線程的內(nèi)存空間中,此時(shí)仿真平臺(tái)便可以運(yùn)行物理層代碼。

      2 多核關(guān)鍵技術(shù)及實(shí)現(xiàn)

      2.1 核間通信

      在多核仿真平臺(tái)中,每個(gè)DSP核都是通過(guò)一個(gè)線程來(lái)表示的,因此多核間的通信和同步問(wèn)題就轉(zhuǎn)化成線程間的通信和同步問(wèn)題。在線程中,它們之間的通信通過(guò)共享內(nèi)存來(lái)實(shí)現(xiàn),即在程序中新建一個(gè)全局變量的數(shù)組SM,這樣,各個(gè)線程就可以對(duì)這個(gè)數(shù)組讀寫數(shù)據(jù),進(jìn)而實(shí)現(xiàn)核間的數(shù)據(jù)交換。但是在SoC中,各個(gè)DSP只能通過(guò)指令向本地的局部地址中讀寫數(shù)據(jù),不能直接向全局地址的共享內(nèi)存中讀寫數(shù)據(jù)。為了解決此問(wèn)題,在局部地址中分配一塊和共享內(nèi)存同樣大小的內(nèi)存空間,并保證兩塊內(nèi)存空間中的數(shù)據(jù)具有一致性,為簡(jiǎn)化實(shí)現(xiàn)過(guò)程,將局部地址和全局地址的起始地址均設(shè)為0x9000 0000,其結(jié)構(gòu)如圖2所示。

      圖2 共享內(nèi)存結(jié)構(gòu)圖

      但是,這種簡(jiǎn)單的通信方式會(huì)造成一個(gè)嚴(yán)重的后果:多個(gè)線程同時(shí)訪問(wèn)全局變量SM,會(huì)造成數(shù)據(jù)混亂。為了解決這個(gè)問(wèn)題,需要通過(guò)加鎖的方式對(duì)共享內(nèi)存中的數(shù)據(jù)進(jìn)行保護(hù)。在此基礎(chǔ)上考慮了兩種線程鎖:互斥鎖和讀寫鎖。相較于互斥鎖,讀寫鎖具有更好的適用性,可以有多個(gè)線程同時(shí)占用讀模式的讀寫鎖,但是只能有一個(gè)線程占用寫模式的讀寫鎖,具有很高的并行性,因此,選擇讀寫鎖來(lái)保護(hù)共享內(nèi)存中的數(shù)據(jù)。將新增的讀寫指令添加到編譯器中,程序員即可調(diào)用匯編語(yǔ)言來(lái)實(shí)現(xiàn)多核間的讀寫功能,其使用方法與線程中的讀寫鎖使用方法一致,匯編語(yǔ)言和讀寫鎖函數(shù)對(duì)照如表1所列。

      表1 讀寫指令對(duì)照表

      2.2 核間同步

      多核間同步可以理解為在物理層算法人員的調(diào)度下,各核可以按照指定的先后次序運(yùn)行。因此需要設(shè)計(jì)同步指令,可以實(shí)現(xiàn)多核間的同步功能。同樣的,實(shí)現(xiàn)核間同步也可以轉(zhuǎn)換成線程間的同步問(wèn)題。在線程同步中,主要有兩種方法可以考慮:條件變量和信號(hào)量。相比于條件變量,信號(hào)量有以下優(yōu)點(diǎn):信號(hào)的遞增與減少會(huì)被系統(tǒng)自動(dòng)記住,系統(tǒng)內(nèi)部有一個(gè)計(jì)數(shù)器實(shí)現(xiàn)信號(hào)量,不必?fù)?dān)心會(huì)丟失,而喚醒一個(gè)條件變量時(shí),如果沒(méi)有相應(yīng)的線程在等待該條件變量,這次喚醒將會(huì)丟失。因此,從SoC實(shí)際情況考慮,本文使用信號(hào)量來(lái)設(shè)計(jì)多核仿真平臺(tái)的同步指令。將新增的同步指令添加到編譯器中,程序員即可調(diào)用匯編語(yǔ)言來(lái)實(shí)現(xiàn)多核間的同步功能,使用方法與線程中的信號(hào)量使用方法一致,匯編語(yǔ)言和讀寫鎖函數(shù)對(duì)照如表2所列。其中,匯編語(yǔ)言的mode值可以根據(jù)程序員需要自由選擇,范圍是0~31,這樣,程序員就可以使用多個(gè)信號(hào)量來(lái)控制多核間的同步。

      表2 同步指令對(duì)照表

      2.3 調(diào)試模塊

      圖4 并行同步調(diào)試驗(yàn)證圖

      本文采用兩種方法對(duì)調(diào)試模塊進(jìn)行研究:一是在動(dòng)芯DSP開(kāi)發(fā)工具調(diào)試器的基礎(chǔ)上,通過(guò)將調(diào)試器與各個(gè)核進(jìn)行通信,從而實(shí)現(xiàn)多核并行調(diào)試的目的,但是DSP模擬器采用GDB調(diào)試,在設(shè)計(jì)多核調(diào)試時(shí)受制于已有的框架,增加多核調(diào)試器設(shè)計(jì)的難度;二是針對(duì)整個(gè)多核仿真器重新開(kāi)發(fā)調(diào)試器,這樣做不會(huì)受制于已有的平臺(tái),但是工作量大,需要從頭做起。通過(guò)研究發(fā)現(xiàn),動(dòng)芯DSP的調(diào)試器從整體上來(lái)說(shuō)也適用于多核仿真平臺(tái)調(diào)試器,其框架只具有很小的限制性。因此,只需要將調(diào)試器在模擬器這一端做少量的修改,即可將動(dòng)芯DSP指令集模擬器的調(diào)試器移植到多核仿真平臺(tái)調(diào)試器。

      動(dòng)芯DSP指令集模擬器調(diào)試器的方案是通過(guò)GDB對(duì)指令集模擬器上的應(yīng)用程序進(jìn)行遠(yuǎn)程調(diào)試。Socket是模擬器與GDB的通信方式,其中,DSP模擬器作為Socket通信的服務(wù)端,GDB作為Socket的客戶端,RSP作為兩者通信協(xié)議。多核仿真平臺(tái)調(diào)試器設(shè)計(jì)結(jié)構(gòu)如圖3所示,將DSP線程作為Socket通信的服務(wù)端,且每個(gè)DSP線程都有一個(gè)GDB客戶端與之相連,這樣就可以同時(shí)使用多個(gè)GDB并行調(diào)試多核仿真平臺(tái),最終完成多核仿真平臺(tái)調(diào)試器的設(shè)計(jì)工作。

      圖3 調(diào)試模塊結(jié)構(gòu)圖

      從單核調(diào)試器轉(zhuǎn)到多核調(diào)試器,從進(jìn)程的角度觀察,就是從一個(gè)DSP模擬器進(jìn)程和一個(gè)GDB進(jìn)程之間的關(guān)系到一個(gè)多核模擬器進(jìn)程與多個(gè)GDB進(jìn)程之間的關(guān)系。其實(shí)現(xiàn)的方案是將DSP模擬器進(jìn)程中公共RSP轉(zhuǎn)變?yōu)槎嗪四M器中各DSP線程私有的RSP。本文需要做的工作就是將RSP中用來(lái)存儲(chǔ)調(diào)試信息的數(shù)據(jù)在DSP類中重新聲明。這樣RSP的性質(zhì)就從公共的變?yōu)榫€程私有的。完成以上工作就可以同時(shí)打開(kāi)多個(gè)GDB調(diào)試器,對(duì)每個(gè)DSP核上運(yùn)行的物理層代碼進(jìn)行調(diào)試。

      假設(shè)啟動(dòng)兩個(gè)核的多核仿真平臺(tái),此時(shí)需要打開(kāi)3個(gè)終端,終端1用來(lái)啟動(dòng)多核仿真平臺(tái),終端2和終端3用來(lái)打開(kāi)GDB對(duì)物理層應(yīng)用程序進(jìn)行調(diào)試,各終端命令行實(shí)現(xiàn)過(guò)程如下所示:

      終端1:./dongxin -z 2 -j 20000 -k 20001。

      終端2:Dongxin-gdb a.out;target remoter:20000;load。

      終端3:Dongxin-gdb b.out;target remoter:20001;load。

      其中,z后面的數(shù)字表示啟動(dòng)的DSP核個(gè)數(shù),j和k后面的數(shù)字分別為核1和核2與對(duì)應(yīng)GDB連接的端口號(hào),a.out和b.out分別表示在核1和核2上運(yùn)行的應(yīng)用程序的二進(jìn)制代碼。

      3 多核仿真平臺(tái)功能驗(yàn)證

      首先對(duì)多核仿真平臺(tái)的并行、多核同步、調(diào)試模塊三部分進(jìn)行驗(yàn)證。使用第2.3節(jié)中介紹的方法啟動(dòng)兩個(gè)DSP核的多核仿真平臺(tái),并對(duì)各個(gè)DSP核上的代碼進(jìn)行調(diào)試,過(guò)程如圖4所示。

      通過(guò)與圖5中的源代碼進(jìn)行對(duì)比,可以看出第2個(gè)終端和第3個(gè)終端可以正確地對(duì)各個(gè)DSP上的應(yīng)用程序進(jìn)行并行調(diào)試,此過(guò)程驗(yàn)證了多核仿真平臺(tái)并行和調(diào)試模塊的正確性。繼續(xù)執(zhí)行源代碼,當(dāng)終端2執(zhí)行到__asm__("sem_wait 0")指令時(shí),應(yīng)用程序掛起,等到終端3程序執(zhí)行完__asm__("sem_post 0")指令后,終端2中的應(yīng)用程序又可以繼續(xù)執(zhí)行,此過(guò)程驗(yàn)證了多核仿真平臺(tái)多核同步的正確性。

      圖5 應(yīng)用程序源代碼

      接下來(lái),主要對(duì)多核間的通信進(jìn)行驗(yàn)證。同樣,先打開(kāi)調(diào)試界面,然后對(duì)核1和核2上的應(yīng)用程序進(jìn)行調(diào)試,過(guò)程如圖6所示,當(dāng)兩個(gè)核同時(shí)對(duì)共享內(nèi)存數(shù)據(jù)進(jìn)行讀操作時(shí),兩個(gè)核上的程序可以并行執(zhí)行;當(dāng)核2在進(jìn)行讀操作時(shí),核1的寫操作不能執(zhí)行,核1會(huì)掛起;當(dāng)核1在進(jìn)行寫操作時(shí),核2的讀操作不能執(zhí)行,核2會(huì)掛起。這個(gè)功能與多線程中的讀寫鎖功能一致,驗(yàn)證了多核仿真平臺(tái)通信的正確性。

      圖6 多核通信驗(yàn)證圖

      結(jié) 語(yǔ)

      [1] 吳哲凱.可配置多核仿真器的研究與實(shí)現(xiàn)[D].南京:東南大學(xué),2012.

      [2] 林明亮.基于SimpleScalar的擁有存儲(chǔ)與總線擴(kuò)展能力的異構(gòu)多核仿真器[D].上海:上海交通大學(xué),2007.

      [3] 羅漢青,梁利平,葉甜春.一種多核指令集仿真器構(gòu)建技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2013,30(10):3035-3037.

      [4] 李德明,全盛程,葉進(jìn).基于SoC的多核處理器并行仿真機(jī)制的研究[J].微電子學(xué)與計(jì)算機(jī),2014,31(2):23-26.

      [5] 付琳,胡錦,梁利平.指令集仿真器的關(guān)鍵技術(shù)[J].計(jì)算機(jī)應(yīng)用,2015,35(5):1421-1425.

      [6] 蘇雅麗.一種多核處理器時(shí)鐘精確并行仿真技術(shù)[J].赤峰學(xué)院學(xué)報(bào):自然科學(xué)版,2015,31(3):12-13.

      [7] 喻之斌,金海,鄒南海.計(jì)算機(jī)體系結(jié)構(gòu)軟件模擬技術(shù)[J].軟件學(xué)報(bào),2008,19(4):1051-1068.

      [8] 高翔,張福新,等.基于龍芯CPU的多核全系統(tǒng)仿真器SimOS-Goodson[J].軟件學(xué)報(bào),2007,18(4):1047-1055.

      [9] 戴鵬,魏來(lái),王明江,等.一種多核處理系統(tǒng)通信機(jī)制的仿真模型[J].微電子學(xué)與計(jì)算機(jī),2012,29(6):1-6.

      V.Kamakoti, SHAKTI Processors: An Open-Source Hardware Initiative[C]//29th International Conference on VLSI Design and 2016 15th International Conference on Embedded Systems (VLSID), Kolkata, India, 2016.

      [5] PULPino User Manul[EB/OL].[2016-09].http://www.pulp-platform.org/documentation/.

      [6] Michael Zimmer, David Broman, Chris Shaver,et al.FlexPRET: A Processor Platform for Mixed-Criticality Systems[C]//Proceedings of the 20th IEEE Real-Time and Embedded Technology and Application Symposium (RTAS), April, 2014.

      [7] PEYRET Thomas, VENTROUX Nicolas, OLIVIER Thomas.HETEROGENEOUS MULTICORE BASED ON RISC-V PROCESSORS AND FD-SOI SILICON PLATFORM[C]//4th RISC-V Workshop Proceedings, 2016.

      雷思磊(工程師),主要研究方向?yàn)樘幚砥骷軜?gòu)、嵌入式處理器應(yīng)用等。

      (責(zé)任編輯:楊迪娜 收稿日期:2016-09-12)

      Multi-core Parallel Synchronous Simulation Platform Based on Dongxin Baseband Chip

      Zhou Ming

      (College of Communication and Information Engineering,Chongqing University of Posts and Communications,Chongqing 400065,China)

      In order to check and analyze the physical layer code,a multi-core simulation platform based on Dongxin baseband chip is proposed.The platform uses the multithread technology to realize the function of communication and synchronization between cores by shared memory and semaphore.The experiment results show that the platform can correctly simulate the parallel operation between cores and verify the correctness of the physical layer code.This simulation platform plays a huge role on implementation of Dongxin baseband chip.

      physical layer code;multithread;shared memory;semaphore

      TP337

      A

      ?士然

      2016-11-18)

      猜你喜歡
      指令集基帶模擬器
      了不起的安檢模擬器
      盲盒模擬器
      劃船模擬器
      3DNow指令集被Linux淘汰
      實(shí)時(shí)微測(cè)量系統(tǒng)指令集及解析算法
      2014年LTE基帶收益占蜂窩基帶收益50%以上
      動(dòng)態(tài)飛行模擬器及其發(fā)展概述
      AIS基帶信號(hào)的接收與處理
      什么是AMD64
      數(shù)字基帶系統(tǒng)的System View仿真設(shè)計(jì)
      邵武市| 藁城市| 德令哈市| 山阴县| 靖安县| 湖北省| 黔西县| 山阴县| 万山特区| 合山市| 葫芦岛市| 东乌珠穆沁旗| 乳山市| 怀远县| 磴口县| 丰宁| 柏乡县| 轮台县| 阿拉善右旗| 鞍山市| 保定市| 五指山市| 永川市| 弋阳县| 邳州市| 苍溪县| 张北县| 友谊县| 麻城市| 高邮市| 汉阴县| 佛山市| 长海县| 沧源| 邯郸县| 潞城市| 余庆县| 文昌市| 沧源| 德清县| 泽州县|