基于NiosII的SOPC多處理器系統(tǒng)設計方法
發(fā)布時間:2007/4/23 0:00:00 訪問次數(shù):440
李蘭英 李霄燕
兩個或多個微處理器一起工作來完成某個任務的系統(tǒng)稱為“多處理器系統(tǒng)”。傳統(tǒng)基于單片機的多處理器系統(tǒng)結構復雜,可靠性差;而基于32位的嵌入式軟核處理器NiosII的SOPC(可編程片上系統(tǒng))多處理器系統(tǒng)解決方案,從根本上改變了多處理器系統(tǒng)的設計理念和方法。使用Altera公司的NiosII軟核處理器和SOPC Builder工具,可以快速地設計和建立共享資源的多處理器系統(tǒng)。多處理器系統(tǒng)一般用于工作站和使用分載(load-sharing)的復雜算法(稱為“對稱多處理器SMP”)的高端PC計算。對于大部分嵌入式系統(tǒng),當SMP的開銷太大時,使用多個處理器執(zhí)行不同的任務,實現(xiàn)不同的功能正引起越來越多的關注。Altera公司的FPGA為開發(fā)非對稱的嵌入式多處理器系統(tǒng)提供了一個理想的平臺。為了提供理想的系統(tǒng)性能,使用SOPC Builder工具可以很容易地對硬件進行修改和調整,從而很快完成不同配置系統(tǒng)的設計、編譯和評估[1]。
本文將對基于NiosII的SOPC多處理器系統(tǒng)的實現(xiàn)原理、設計流程和方法進行詳細的討論。
1 NiosIl多處理器系統(tǒng)硬件設計
QuartusII 5.0及以上版本支持多處理器系統(tǒng)的創(chuàng)建和調試。多個NiosII處理器能夠有效地共享系統(tǒng)資源。由于SOPC Builder允許用戶輕松添加多個處理器到系統(tǒng)中,因此建立多處理器系統(tǒng)的難點已不再是硬件的排列和連接,而在于多個處理器的軟件設計,使它們正常操作,相互之間不產生沖突。NiosII多處理器系統(tǒng)分為2類:一類是共享資源的多處理器系統(tǒng);另一類處理器相互獨立,之間不進行信息交換。
2 Niosll多處理器系統(tǒng)的資源共享
資源共享是多處理器系統(tǒng)的強大功能,但必須仔細考慮所要共享的資源,以及不同處理器如何使用共享資源。
2.1 共享存儲器
在多處理器系統(tǒng)中最普遍的共享資源是存儲器。共享存儲器用于存放任何數(shù)據(jù),從指示處理器間通信狀態(tài)的簡單標志,到被多個處理器同時進行計算的復雜數(shù)據(jù)結構。
如果存儲器中包含不只一個處理器的程序代碼,那么每個處理器需要有不同的存儲地址。對于程序空間,處理器不能共享存儲器的同一區(qū)域。如果共享數(shù)據(jù)存儲器,則存儲器的數(shù)據(jù)需要從端口與共享存儲器的處理器的數(shù)據(jù)主端口連接。多處理器之間共享數(shù)據(jù)存儲器比共享指令存儲器困難,原因是數(shù)據(jù)存儲器可讀/寫。如果某一處理器正在對共享存儲器的特定區(qū)域進行寫操作,而同時另一個處理器正在對同一區(qū)域進行讀或寫操作,則很可能出現(xiàn)數(shù)據(jù)錯誤,至少使應用程序出錯,甚至使系統(tǒng)崩潰。
共享存儲器的處理器需要一個機制來通知其他處理器何時正在使用共享資源,以便不受其他處理器的干擾。
2.2 硬件互斥核
NiosII處理器允許使用其硬件互斥核部件對共享資源進行保護處理。這個硬件互斥核不是一個NioslI處理器內部的部件,而是一個稱為Mutex的SOPC Builder組件。
互斥核也可看作一種共享資源,提供一個原子的“測試和置位”操作,處理器測試Mutex是否可行。如果可行,就在某個操作中獲取它。當處理器結束與Mutex相關的共享資源使用時,釋放該Mutex;此時,另一個處理器可能獲取了Mutex,使用共享資源;コ夂嗽谖锢砩喜⒉荒芊乐官Y源同時被多個處理器訪問。運行在處理器上的軟件必須被設計為在訪問相關共享資源之前總是獲取Mutex的。
在大部分情況下,多個處理器之間應該使用互斥核來保護共享資源。然而,也有一些不需要互斥核的,例如對于單方向或循環(huán)的消息緩沖隊列,此時只有一個處理器往存儲器的某個特殊位置寫數(shù)據(jù)。
一般地,NiosII不支持多個處理器之間非存儲器外設的共享,NiosII硬件抽象層(HAL)庫也不支持。NiosIIHAL提供訪問Mutex核的API函數(shù)如表1所列。
2.3 多處理器地址空間的重疊
在單處理器系統(tǒng)中,不允許多于一個的從外設具有相同的地址空間,原因是這將引起矛盾。然而,在多處理器系統(tǒng)中,只要外設被不同的處理器控制,那么不同的從外設就可以具有相同的基地址。
李蘭英 李霄燕 兩個或多個微處理器一起工作來完成某個任務的系統(tǒng)稱為“多處理器系統(tǒng)”。傳統(tǒng)基于單片機的多處理器系統(tǒng)結構復雜,可靠性差;而基于32位的嵌入式軟核處理器NiosII的SOPC(可編程片上系統(tǒng))多處理器系統(tǒng)解決方案,從根本上改變了多處理器系統(tǒng)的設計理念和方法。使用Altera公司的NiosII軟核處理器和SOPC Builder工具,可以快速地設計和建立共享資源的多處理器系統(tǒng)。多處理器系統(tǒng)一般用于工作站和使用分載(load-sharing)的復雜算法(稱為“對稱多處理器SMP”)的高端PC計算。對于大部分嵌入式系統(tǒng),當SMP的開銷太大時,使用多個處理器執(zhí)行不同的任務,實現(xiàn)不同的功能正引起越來越多的關注。Altera公司的FPGA為開發(fā)非對稱的嵌入式多處理器系統(tǒng)提供了一個理想的平臺。為了提供理想的系統(tǒng)性能,使用SOPC Builder工具可以很容易地對硬件進行修改和調整,從而很快完成不同配置系統(tǒng)的設計、編譯和評估[1]。 本文將對基于NiosII的SOPC多處理器系統(tǒng)的實現(xiàn)原理、設計流程和方法進行詳細的討論。 1 NiosIl多處理器系統(tǒng)硬件設計 QuartusII 5.0及以上版本支持多處理器系統(tǒng)的創(chuàng)建和調試。多個NiosII處理器能夠有效地共享系統(tǒng)資源。由于SOPC Builder允許用戶輕松添加多個處理器到系統(tǒng)中,因此建立多處理器系統(tǒng)的難點已不再是硬件的排列和連接,而在于多個處理器的軟件設計,使它們正常操作,相互之間不產生沖突。NiosII多處理器系統(tǒng)分為2類:一類是共享資源的多處理器系統(tǒng);另一類處理器相互獨立,之間不進行信息交換。 2 Niosll多處理器系統(tǒng)的資源共享 資源共享是多處理器系統(tǒng)的強大功能,但必須仔細考慮所要共享的資源,以及不同處理器如何使用共享資源。 2.1 共享存儲器 在多處理器系統(tǒng)中最普遍的共享資源是存儲器。共享存儲器用于存放任何數(shù)據(jù),從指示處理器間通信狀態(tài)的簡單標志,到被多個處理器同時進行計算的復雜數(shù)據(jù)結構。 如果存儲器中包含不只一個處理器的程序代碼,那么每個處理器需要有不同的存儲地址。對于程序空間,處理器不能共享存儲器的同一區(qū)域。如果共享數(shù)據(jù)存儲器,則存儲器的數(shù)據(jù)需要從端口與共享存儲器的處理器的數(shù)據(jù)主端口連接。多處理器之間共享數(shù)據(jù)存儲器比共享指令存儲器困難,原因是數(shù)據(jù)存儲器可讀/寫。如果某一處理器正在對共享存儲器的特定區(qū)域進行寫操作,而同時另一個處理器正在對同一區(qū)域進行讀或寫操作,則很可能出現(xiàn)數(shù)據(jù)錯誤,至少使應用程序出錯,甚至使系統(tǒng)崩潰。 共享存儲器的處理器需要一個機制來通知其他處理器何時正在使用共享資源,以便不受其他處理器的干擾。 2.2 硬件互斥核 NiosII處理器允許使用其硬件互斥核部件對共享資源進行保護處理。這個硬件互斥核不是一個NioslI處理器內部的部件,而是一個稱為Mutex的SOPC Builder組件。 互斥核也可看作一種共享資源,提供一個原子的“測試和置位”操作,處理器測試Mutex是否可行。如果可行,就在某個操作中獲取它。當處理器結束與Mutex相關的共享資源使用時,釋放該Mutex;此時,另一個處理器可能獲取了Mutex,使用共享資源;コ夂嗽谖锢砩喜⒉荒芊乐官Y源同時被多個處理器訪問。運行在處理器上的軟件必須被設計為在訪問相關共享資源之前總是獲取Mutex的。 在大部分情況下,多個處理器之間應該使用互斥核來保護共享資源。然而,也有一些不需要互斥核的,例如對于單方向或循環(huán)的消息緩沖隊列,此時只有一個處理器往存儲器的某個特殊位置寫數(shù)據(jù)。 一般地,NiosII不支持多個處理器之間非存儲器外設的共享,NiosII硬件抽象層(HAL)庫也不支持。NiosIIHAL提供訪問Mutex核的API函數(shù)如表1所列。 2.3 多處理器地址空間的重疊 在單處理器系統(tǒng)中,不允許多于一個的從外設具有相同的地址空間,原因是這將引起矛盾。然而,在多處理器系統(tǒng)中,只要外設被不同的處理器控制,那么不同的從外設就可以具有相同的基地址。
深圳服務熱線:13692101218 13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)

深圳市碧威特網(wǎng)絡技術有限公司
付款方式