ARM体系结构及内核回顾总结(一)
??? ARM是什么,自不必多說,相信能點進來的也盡知曉。
??? 真正開始了解ARM,是從12年入職開始,那時僅僅知道ARM是個做CPU的其它就一概不知了,后來才漸漸知道SOC,知道嵌入式,知道ARM。
??? 入職一開始,作為一個完全無關專業,只是了解C/C++編程的人,對所謂SOC完全一頭霧水,連SOC的名稱意義也是度娘教的。因此一開始也就是學習一些簡單的小模塊,譬如UART、TIMER、RTC,稍復雜一點的譬如DMA,接觸到的最復雜的就算是SD模塊了。當初是和另外一位新入職的同事再USB和SD之間各挑一個,于是現在他依然坐著USB,只不過經歷了musb,而我則經歷了不同的模塊,譬如I2S、BLG,甚至客串過I2C、SSP等,最后便接觸ARM核相關。對于ARM的了解,也因此其實并不算深入,對于其發展歷程或是技術改革路線,因眼界所限,自然也無可說,此處只就我所有限的了解來溫習一下。
1 ARM簡介
??? ARM的含義很多,僅就技術而言,值得一提的是Advanced RISC Machines這個含義,表明了其所屬于的技術體系,即RISC體系,它有別于CISC體系,如桌面PC所常用的x86處理器。他們之間的區別在于前者以指令精簡為主要考量,而單指令所實現的功能為次要;后者以單指令實現的功能為主要,指令的統一性或簡潔性為次要。至于之間具體優劣勢對比,百度資料無數,在此略過不提。
1.1 從結構說起
??? 舉凡處理器,總逃不過幾大經典結構組成--運算器、控制器,以及寄存器、高速緩存和總線,而處理器和存儲器以及輸入輸出設備則構成了電子計算機。
??? ARM的組成自然不例外,以下為ARM1176JZF的結構框圖:
呃,至于沒找到ALU及控制器。。。文檔上是說ALU在interger core部分,控制器也應是包含其中。
??? 以上即算是ARM核的經典結構:integer core、指令預取單元、存取單元、浮點運算單元、cache、tcm以及各種接口包括l2接口、jtag接口、ETM接口等。
??? 那么,我需要按上面的各個接口模塊挨個說明嗎,自然是不需要的。
??? 對于軟件人員來說,以上的模塊中所涉及到的,需要仔細了解的,也就是integer core中的部分,cache,tcm等。而至于jtag,在調試中是必須用到的,但是又是與軟件完全不相關的。
??? integer core是整個CPU的核心,其中包含了指令的執行,數據的處理等等,在其中,和其它外設模塊一樣,軟件需要仔細了解的就是寄存器。對于一個硬件模塊,寄存器是軟件與硬件交互的窗口,對硬件行為的任何控制以及其運行狀態的了解,都是通過對寄存器的讀寫操作來實現的。CPU也是如此,其通用寄存器組以及特殊寄存器,以及協處理器中的寄存器組均是控制處理器運行,以及了解處理器運行狀態的關鍵。
??? 對于CPU的工作分析,我們通常可以從兩方面入手,一為指令,一為數據。在integer core部分,二者其實可分也不可分的,每條指令的執行,即伴隨著數據的運算。而在它之外,數據和指令則相互分開為兩條線,即所謂哈弗結構。從內核中出來,最先經過的即為Level 1 Memory,即cache與tcm,他們分別氛圍icache與dcache,itcm與dtcm,分別在指令線與數據線上。
??? 從l1出來則為l2,在ARMM11中未有繼承L2CACHE,但是提供了L2 data/instruction interface,數據和指令即分別從這兩個接口進入l1。
??? 而另外一個重要的部分即為VIC interface,即中斷處理器接口,負責中斷的輸入,即IRQ與FIQ異常信號的輸入。
??? JTAG interface,是調試時幾乎必須用到的,但是卻又是完全不需要了解的。
??? 嗯,該睡覺了,本節結束!
轉載于:https://www.cnblogs.com/iambobor/p/3577425.html
總結
以上是生活随笔為你收集整理的ARM体系结构及内核回顾总结(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android APK方式换肤实现原理
- 下一篇: android.database.cur