1. gzyueqian
      18078865874
      首頁 > 新聞中心 > > 正文

      基于Nios II雙核系統的設計與實現

      更新時間: 2007-07-24 14:13:30來源: 粵嵌教育瀏覽量:1465

        雙核處理器就是在一個處理器基板上集成兩個功能相同的處理器核心,即將兩個物理處理器核心整合入一個內核中。雙核技術的引入是提高處理器性能的行之有效的方法。由于生產技術的限制,傳統通過提升工作頻率來提升處理器性能的作法目前面臨嚴重的阻礙,高頻CPU的耗電量和發熱量越來越大,已經給整機散熱帶來十分嚴峻的考驗。雙核技術可以很好的避免這一點。增加一個內核,處理器每個時鐘周期內可執行的單元數將增加一倍。

        Nios II系列嵌入式處理器使用32位的指令集結構ISA,完全與二進制代碼兼容,它是Altera公司的第二代軟核嵌入式處理器,性能超過200DMIPS。SOPCBuilder是一個革命性的系統級開發工具,可以用來構建包括處理器、存儲器接口和I/O外設的嵌入式系統。使用Altera公司的NiosII處理器和SOPC Builder開發工具能快速地設計并實現資源共享的雙核系統。

        硬件設計

        在Nios II雙核系統中,存在兩種不同類型的雙核系統,其中一種是資源可以共享的,叫做資源共享的雙核系統,另一種則不共享資源,即處理器之間都是獨立的,叫做獨立的雙核系統。以下是兩種雙核系統的介紹。

        獨立的雙核系統

        獨立的雙核系統如圖1所示,處理器之間是完全獨立的,處嬋器不參與其他處理器的運算。也可以說它們是一個分開的系統。這種形式的雙核系統是一種非常簡單的雙核系統,只是在系統中多添加一個處理器,所能提高的系統性能有限。

        資源共享的雙核系統

        資源共享的雙核系統如圖2所示,首要考慮的是資源共享的問題,因為共享的資源能被一個以上處理器所訪問。決定系統中的哪些資源被共享,以及不同處理器之間如何共同使用這個資源是非常關鍵的問題。其中共享資源分為存儲器和外設,下面分別介紹這兩種情形。

        外設的共享

        通常情況下,Nios II雙核系統并不支持非存儲設備的共享。在雙核系統中外設的共享目前有相當的難度,的問題就是外設的中斷問題。例如,當外設能夠中斷所有的處理器時,就沒有一個可靠的辦法來保證哪個處理器做出中斷響應并進入中斷服務程序,而且,如果外設被用來作為輸入設備,就很難決定選用哪個處理器來接收輸人的數據。

        可能存在一個非常復雜的握手系統來處理此類情況,但是Nios II HAL庫并不支持這種系統。所以,在Nios II中不支持外設的共享。

        存儲器的共享

        存資源共享的雙核系統中,仔儲器是常見的共享資源。存儲器的共享既能用來在多個處理器之間進行簡單的狀態通信,也能同時被多個處理器共同進行復雜的數據結構運算。 在資源共享的雙核系統中,當存儲器用來在多個處理器之間共享數據的話,必須謹慎的進行操作,因為數據是可以讀也可以寫的。如果一個處理器在對存儲器的某一地址寫數據的同時,另一處理器也在對同一地址進行讀寫操作的話,那么就可能發生數據沖突,進而導致程序錯誤,嚴重的是可能造成系統的崩潰,必須使用一種機制來告知其他的處理器,以免發生沖突。系統中的硬件互斥核就能滿足這個要求。

        硬件互斥核

        硬件互斥核可以確保在共享資源時不發生沖突。互斥核是作為一種共享資源來使剛的,提供了一種測試和設置的操作,每個處理器在使用共享資源前,必須先測試互斥核是否可用,如果可用的話,就獲得了共享資源的使用權,當處理器使用完后,釋放互斥核。與此同時,另一個處理器就可以獲得互斥核并使用共享資源了。如果沒有這個互斥核,實現上述功能的話就需要2個單獨的測試和設置指令,這時,有可能發生"死鎖"的情況。

        互斥內核有一個簡單的Avalon從控制器接口,包含2個32位存儲器映射寄存器mutex和reset。表1所列為互斥內核寄存器映射。

        互斥內核有以下基本操作(假設多個處理器對一個瓦斥內核進行訪問,并且每個處理器都有一個獨特的標識符ID):

        (1) 當VALUE字段的值為0x0000時,互斥體可用(互斥體解除鎖定);否則,互斥體不可用(互斥體被鎖定)

        (2) mutex寄存器總是可讀的。一個處埋器(或任何Avalon主控制器外設)可通過讀取mutex寄存器來確定其當前的狀態。

        (3) mutex寄存器只在特定的條件下可寫。只有滿足下面的其中一個條件或兩個條件都滿足,才能通過寫操作來更改mutex寄存器的內容:

        mutex寄存器的VALUE字段的值為0;

        mutex寄存器OWNER字段與被寫入數據的OWNER字段相匹配。

        (4) 處理器可通過將它的ID寫入OWNER字段和向VALUE字段寫入一個非零值來獲取互斥體。然后處理器再通過驗證OWNER字段來檢查是否成功地獲得了互斥體。

        (5) 系統復位后,reset寄存器的RESET位為高。該位通過向其寫入1來清除。

        軟件設計

        在雙核系統中設計并運行軟件與單處理器系統并沒有什么太大的差別,僅僅需要考慮以下幾個方面。

        程序存儲器

        在雙核系統中,基于每個處理器的軟件設計必須擁有自己獨有的一段存儲空間,而這些存儲空間又必須同時存放在同一個物理存儲設備上。例如,在一個雙核系統中,兩個處理器都運行在SDRAM上,對于個處理器的軟件設計需要128K的程序空間,對于第二個處理器的軟件設計需要64K的空間,這時,個處理器可以使用SDRAM中0x0到0x1FFFF之間的地址空間,第二個處理器可以使用0x20000到0x2FFFF之間的地址空間。

        SOPC Builder提供了一個簡單的存儲分配原則來滿足上述要求,這個分配原則使用異常地址來決定運行那個處理器上的軟件設計。Nios II IDE終負責鏈接處理器的軟件設計并映射到存儲器中,并為每個處理器提供其擁有的段空間來運行軟件設計。如果兩個處理器的軟件設計被映射到同一個物理存儲設備上,此時每個處理器的異常地址就用來決定哪一個處理器的軟件設計能占據空間的基地址。

        對任何一個單處理器或多處理器系統來說,有5個主要的代碼段需要映射到存儲器的同定地址中,這些代碼段是:

        .text--存放實際的執行代碼
        .rodata--存放實際執行代碼中所使用的常
        .rwdata--存放讀/寫變量和指針
        Heap--自動分配的空間
        Stack--存放函數調用的參數和其他臨時的數據
       
        在多處理器系統中,可能需要僅僅使用一個存儲器來存放每個處理器的所有代碼段。在這時,每個處理器的異常地址就用來指定各個處理器之間的邊界,如圖3所示。

       

        啟動地址

        在多處理器系統中,每個處理器必須從自己的程序段中啟動,對于一個非易失性存儲器的同一地址空間上的可執行代碼的相同位,不可能啟動多個處理器。啟動存儲器和程序存儲器一樣也能被分區,但足段空間的概念和映射就不一樣了,啟動代碼通常只需要把程序代碼拷貝到所映射的存儲器中,然后跳轉到程序代碼就可以了。在同一個非易失性存儲器設備的不同段空間上啟動多處理器,只需要在存儲器上簡單的設置每個存儲器的復位地址就可以了。

        基于Nios II雙核系統的API函數

        對于Nios II處理器用戶,Altera提供了可用來訪問互斥內核硬件的驅動程序,利用驅動程序可以直接對低層的硬件進行操作。以下為API函數的說明:

        (1) altera_avalon_mutex_is_mine()
        功能:判斷CPU是否獲得了互斥核的使用權

        (2) altera_avalon_mutex_first_lock()
        功能:判斷自從復位后互斥核是否已被釋放

        (3) altera_avalon_mutex_lock()
        功能:獲得硬件互斥核,同時用參數裝載互斥核

        (4) altera_avalon_mutex_open()
        功能:檢索指向硬件互斥核的設備結構指針

        (5) altera_avalon_mutex_trylock()
        功能:嘗試鎖定硬件互斥核并立即返回
       
        (6) altera_avalon_mutex_trylock()
        功能:釋放硬件互斥核。并把存在互斥核中的值設為0。

        Nios II雙核系統的工作流程大致如下:先使用函數(4)打開互斥核,然后使用函數(2)來判斷是否已經有處理器獲得了互斥核,使用函數(5)來判斷互斥核此時是否可用,并嘗試獲得互斥核,使用函數(3)來獲得互斥核的使用權,并把其cpuid控制寄存器的值寫入mutex寄存器的OWNER字段來鎖定互斥核。隨后,使用函數(1)來判斷鎖定是否成功,在使用完互斥核之后,必須使用函數(6)來釋放互斥核。

        本文所設計的雙核系統是基于Altera公司的FPGA,因為其Nios II軟核的特點,除了具有一般FPGA的優勢之外,只要在成本允許的情況下,還可以很方便對原系統進行升級,即可以在雙核系統的基礎上方便的實現3核、4核等多核系統,獲得更高水平的計算能力和性能。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲噜噜网站在线观看 | 婷婷色香五月综合缴缴情香蕉 | 在线精品国精品国产3d | 新国产福精品利视频免费 | 婷婷丁香五月天综合资源网 | 日本亚洲五月天在线观看视频 |