新聞中心

        EEPW首頁 > 嵌入式系統 > 業界動態 > 選擇最適處理器核心架構 嵌入式應用提高性價比

        選擇最適處理器核心架構 嵌入式應用提高性價比

        作者: 時間:2016-05-23 來源:新電子 收藏

          現階段半導體晶片商多采用ARM的核心,來制造旗下或微控制器等產品。ARM的核心可分為A、R、M三個系列,各有不同性能,因此晶片商也須依各自瞄準的市場、功耗需求和作業系統等差異,來選擇較適合的核心,藉以制造性價比佳的產品。

        本文引用地址:http://www.104case.com/article/201605/291453.htm

          現今應用內須用到諸多,因此半導體廠商也積極投入布局,舉例來說安謀國際(ARM)的處理器便廣泛應用于領域。ARM Cortex-A系列處理器經常使用在需要多功能作業系統(Rich OS)或高效能的應用中,Cortex-R系列處理器擁有較佳的即時效能,Cortex-M系列處理器則用于微控制器等類型的小型應用。

          目前采用Cortex-M的產品范圍涵蓋非常多樣化的選項,從外型設計小巧、功耗低的Cortex-M0,其使用在深層嵌入、對成本敏感的應用如智慧型感測器節點上,到應用在大眾市場的微控制器的Cortex-M3及Cortex-M4。最佳的則是Cortex-M7,其具備更高的效能,可以執行密集運算的工作負載,像是訊號處理等。

          Cortex-M處理器采用的ARMv6-M和ARMv7-M架構,是更為簡易且邏輯化的程式設計模型,專為簡易使用所設計。處理器核心本身在設定上較彈性,能夠用于更多樣化的實作。

          雖然Cortex-M核心的簡易性對大部分的應用來說是較佳的優勢,但仍有其他應用需要更多功能、效能更高的環境。此類應用同樣重視效率和耗電量,且經常需要Linux或Android等類型的平臺作業系統。采用此類型的作業系統,則能夠使用應用范圍更廣、更具多功能且復雜的軟體生態系統,開發新的契機。

          Cortex-M處理器的設計并非針對這些高階的作業系統,因此未包含其所需要的特定必要功能。舉例來說,這些處理器未具備記憶體管理單元(MMU),在無法支援虛擬記憶體環境的情況下,當然也就不支援這一類的作業系統。若某項應用需要更多功能的作業環境,首選的通常是較高效率的Cortex-A核心。這些核心提供平臺作業系統所需的較進階功能,同時仍相當重視功耗,整體來說是更為高階且彈性化的程式設計模型。

          有鑒于此,ARM Cortex-A處理器多部署于各種深度嵌入的應用,尤其是在需要Linux或其他多功能作業系統的市場。

          圖1顯示Cortex-A處理器目前的應用范圍,重點在于其中的較低功耗核心。本文以此一系列中的最新型Cortex-A32處理器為主。

          

         

          圖1 Cortex-A處理器與架構

          Cortex-A32是進入Cortex-A系列較理想的入門款,可用于需要多功能作業系統環境,或從Cortex-A處理器所提供的效能及功能中獲益的應用。該處理器為目前擁有低功耗的ARMv8-A處理器,為穿戴式裝置、物聯網(IoT)和多功能嵌入式應用,尤其是需要Linux這一類平臺作業系統之應用的較佳選擇。

          搶攻32位元運算市場 A系列新處理器功耗更低

          Cortex-A32在ARM架構中扮演著獨特的角色。其采用ARMv8-A架構,但僅支援32位元的運算。圖2顯示Cortex-A32如何融入ARMv8-A架構設定,以及與Cortex-A35的差異。

          

         

          圖2 Cortex-A32與Cortex-A35比較

          Cortex-A35同時采用32位元的AArch32和64位元的AArch64兩種執行狀態,能夠完整提供ARMv8-A架構的64位元功能。另一方面,Cortex-A32則只采用32位元的AArch32執行狀態。移除了64位元的功能以后,不僅體積縮減,對于不需要64位元功能的使用來說,更能降低其功耗。盡管嵌入式領域中有許多應用都可從64位元的執行中獲益,但有許多仍著重在32位元,且將在可預見的未來保持現況,而這些應用便是Cortex-A32的目標市場。

          AArch32執行狀態為更早期的Cortex-A處理器所采用的ARMv7-A架構的進化版。據了解,Cortex-A32即使不具備64位元的功能,但仍提供某些重要的強化,因此功耗還是優于Cortex-A7和Cortex-A5。

          此外,對于仍采用這些舊版ARM處理器的延伸設計,或以此相同市場為目標的新設計而言,Cortex-A32仍是理想選擇。

          AArch32優于ARMv7-A的特點包括:

          .新增許多新指令,加密演算功能效能更佳

          .新加入Load Acquire和Store Release指令,提供更有效率的記憶體排序功能,符合最新的C++11記憶體排序語法

          .額外的純量與SIMD浮點指令

          .廣泛的系統控制指令

          這些額外功能提供更佳的效能,更勝舊版32位元ARMv7-A處理器。

          Cortex-A32匯流排介面加入了先進同步擴展(ACE),因此能通過Cortex-A32來建構完全同步的多重處理系統,提高所需要的更高效能。

          假如空間或耗電量為主要的限制,Cortex-A32也有變體版本,特別針對單處理器應用最佳化,省略互連邏輯,以節省更多的功耗。

          Cortex-A32透過Large Physical Address Extension(LPAE)擴大了定址實體記憶體空間,超越Cortex-A5所提供的32位元(4GB)空間,可提供40位元定址空間。

          核心本身也整合其他多項有助于改善功耗的進階功能,包括更彈性化的電源管理、更細微分布的電力區域,并使用保存功率閘級。

          ARMv7-M與ARMv8-A AArch32架構比較

          下文將比較ARMv7-M與ARMv8-A AArch32的架構特色與差異。

          ARMv7-M架構特色

          ARM Cortex-M處理器系采用ARMv7-M架構設定,Cortex-M0和Cortex-M0+則采用類似的ARMv6-M架構。

          此架構與先前的ARM架構有許多共同的特色,且經過特殊設計,以支援深層嵌入、低成本的即時微控制器應用。所以移除了舊架構的許多功能,但也加入新功能,制造出一個更像類微控制器的程式設計模型。

          舉體來說,從舊型處理器(像是常見的ARM7TDMI)的變動可總結如下:

          .作業模式的數量從七個以上大幅減少到兩個:Handler模式和Thread模式。其中一項模式(Handler模式)具選擇性優先權限。

          .暫存器檔經過簡化。雖然開放供程式設計人員使用的暫存器基本上仍同樣是十六個,舊型架構中所用的備份暫存器復制機制也大幅減少,因此只有Stack Pointer(r13)會在兩個作業模式中加以暫存。備份暫存器為選擇性使用,甚至可以省略。

          .最大的變動在于異常模式。由于一般的微控制器應用可能會有大量的晶片周邊中斷,所以標準的巢狀向量中斷控制器(Nested Vectored Interrupt Controller, NVIC)規格會包含在架構中,所有的Cortex-M核心均包含該規格。同樣地,異常處理模式已在包含處理常式位址的向量表上加以標準化。內容的儲存與回復作業完全在硬體上實作,簡化寫入中斷處理的軟體工作,如此可在實作時達到非常低且可預測的中斷延遲時間。

          .ARMv7-M定義選擇性的記憶體保護架構,該架構與某些舊型ARM處理器所用的架構類似。裸機系統或在即時作業系統(RTOS)下運作的系統由于通常不需要虛擬記憶體,因此不支援虛擬記憶體。

          .為支援各種即時作業系統的運作和執行,有些標準的晶片周邊也會在架構中加以定義,如SysTick Timer。

          .為縮小處理器核心的大小,ARMv7-M處理器的運行限縮到只有Thumb指令集(包含Thumb-2延伸),僅執行最小的子集,進而實現最小的核心。

          ARMv8-A AArch32特色

          Cortex-A處理器采用ARMv7-A或ARMv8-A架構設定。ARMv8-A處理器提供AArch32執行狀態,為32位元ARMv7-A架構的向下相容演化版。這些架構可實現專門設計用來支援Linux、Android、Windows等平臺作業系統的功能,而這些系統需要虛擬記憶體環境。

          其與Cortex-M處理器核心截然不同的特定功能包括:

          .有七個以上的作業模式:User、Supervisor、阻斷要求(IRQ)、快速中斷(Fast Interrupt, FIQ)、Undefined、Abort、System。每一模式皆用于處理特定類型事件(例如IRQ模式便是設計用于處理IRQ中斷)。AArch32亦支援Hyp和Monitor這兩個額外的模式,這兩個模式分別用于虛擬化及ARM TrustZone技術。

          .除了可用的登錄數量相同(16),AArch32還有許多與上述作業模式相關的“備份”暫存器。進入相關的作業模式時,這些暫存器將取代User模式下的暫存器。如此可簡化許多異常處理工作,但也表示機器的管理和初始化工作將增加。

          .其異常模式極為不同,其原型存在于最早的ARM架構裝置中。具體來說,向量表包含一組可執行的指令集,而不是位址,且內容的儲存與回復Restore工作幾乎完全交給程式設計人員執行。

          .最大的差異是加入了記憶體管理單元,可執行核心所核發之虛擬位址,以及記憶體系統所需要的實體位址間的轉譯。如此便能實作完全的隨選分頁虛擬記憶體環境,以供Linux等平臺作業系統使用。

          ARMv7-M與AArch32的差異

          從采用Cortex-M處理器的系統轉換到采用Cortex-A32處理器時,有許多新功能值得關注。

          雖然這兩種架構有許多類似之處(如備份暫存器和指令集之間有許多相同點),但重要的是ARMv8-A架構的AArch32執行狀態所含的許多功能,均是以舊型架構的功能為基礎。

          接下來說明AArch32所具備,但為ARMv7-M所無或差異極大的功能。

          作業模式

          如圖3所示,ARMv7-M只定義兩個作業模式:Thread模式與Handler模式。若無需要,Handler模式可選擇性取消優先權限,雖然這項功能未必須要在軟體內使用。Handler模式適用于處理異常,Thread模式則用于使用者處理程序。這兩個模式轉換基本上是自動的,會在特定事件下發生,如圖3所示。例如,發生異常時會自動進入Handler模式,異常處理完成時則會退出Handler模式。SVCall指令為主要的方法,軟體用其來進入Handler模式(也可將啟用的IRQ設定為待處理狀態,以執行Handler)。

          

         

          圖3 ARMv7-M作業模式

          圖4則顯示AArch32執行狀態支援的作業模式。與ARMv7-M相較,AArch32有七個基本模式,其中五個指定用于處理特定異常。例如,取得FIQ異常時會進入FIQ模式;若發生未定義指令等情形,會進入Undef模式。

          

         

          圖4 AArch32作業模式

          模式的轉換通常為自動發生,但也可在Current Program Status Register(CPSR)中寫入Mode欄位,用軟體控制來完整切換模式。其細節描述如下。與SVCall指令類似,SVC指令用于讓軟體引發SVC異常并進入SVC模式。

          圖4中未顯示AArch32所支援的另兩個模式(為節省空間),也就是Hyp模式(用于Hypervisor)與Monitor模式(用于TrustZone安全性)。相關主題較為復雜,本文不予討論。


        上一頁 1 2 下一頁

        關鍵詞: 處理器 嵌入式

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 抚宁县| 南江县| 松滋市| 读书| 黔东| 修文县| 高邑县| 阳信县| 定日县| 五家渠市| 调兵山市| 扶绥县| 宜昌市| 琼海市| 保靖县| 宣恩县| 舟山市| 吕梁市| 安宁市| 巴南区| 兴文县| 周口市| 安泽县| 犍为县| 大埔县| 宁晋县| 醴陵市| 天镇县| 北流市| 孝义市| 内黄县| 舟曲县| 磐安县| 雅江县| 措美县| 富平县| 若羌县| 赞皇县| 怀安县| 高台县| 宁蒗|