ARM的野史和個人理解隨手雜記

2021-10-07 10:34:39 字數 3500 閱讀 5891

2023年12月5日,物理學家hermann hauser和工程師chris curry,在英國劍橋創辦了cpu公司(cambridge processing unit),主要業務是為當地市場**電子裝置。2023年,cpu公司改名為acorn計算機公司。

80年代中期,acorn的乙個小團隊要為他們的下一代計算機挑選合適的處理器,根據他們提供的技術需求,在當時的市場上無法找到合適的處理器,於是acorn決定自己設計乙個處理器。乙個小團隊僅僅用了18個月就完成了從設計到實現的全過程,這是一台risc(reduced instruction set computer)指令集的計算機,叫做acorn risc machine(簡稱arm)。後來acorn公司沒落了,而處理器設計部門被分了出來,組成了一家新公司,就是大名鼎鼎的arm公司。

arm公司本身不參與終端處理器晶元的製造和銷售,而是以ip形式向其他晶元廠商授權設計方案來獲取利益。arm公司提供兩類cpu授權:核心指令集(即arm架構)授權,還有現成的cpu核心設計方案授權。業內多數手機處理器廠商選擇直接購買arm核心設計方案,然後與其他元件(如gpu、多**處理、數據機等)整合形成完整的soc片上系統。

需要注意的是,arm提供的cpu是真正意義上的cpu,即**處理器;而soc是廣義上的cpu,我們日常生活中指的cpu就是廣義cpu,即整合了很多元件的soc,像華為的麒麟系列就是直接用的arm的cortex系列核心搭建起來的。

部分廠商是基於現有的架構進行二次定製修改的,比如三星的蜂鳥hummingbird核心等都是在cortex-a8的基礎上修改的。2023年,三星正式推出exynos4 dual 4210晶元(dual代表雙核)和對應的新旗艦手機galaxy sii,同時也將「蜂鳥」改名為exynos3 single 3110(single代表單核),這正是之後exynos家族的開端。2023年第一季度,三星發布了exynos8 octa 8890(octa代表8核),它有乙個非常重大的意義在於——這是三星第一款擁有自研架構的arm晶元。所謂的自研架構,也可以稱為自研微架構,其實就是自己研究出來類似於cortex-a53,a73等類似的這些公版的核(公版微架構)。

但也有少數手機處理器廠商,如高通,直接在arm指令集的基礎上深度開發自己的處理器微架構,如高通公司的scorpion和krait,進而設計自主的cpu,具有更大的靈活性。scorpion和krait的角色就和cortex a53和cortex a57的角色類似。scorpion(蠍子)是高通根據cortex-a8修改的,關鍵的特點是同頻下更加節能約30%左右,現在的驍龍820以及835採用的是kryo架構,其中820是kryo,835是其公升級版kryo280。

可以看出,arm公司的產品發展方向是從經典型向cortex發展的,同時開闢出了三個分支,分別應用於不同領域。

arm架構,即arm的精簡指令集

,其發展是指其指令集的豐富和變化。發展到現在,arm的指令本身是32位的,但較新的arm處理器會有一種thumb的16位指令模式,這就是器架構在發展和變化。最早出現thumb指令的處理器是arm7tdmi,採用的架構從arm7的v3到v4t,可以看出其架構從armv4到armv4t的發展。

arm家族(系列)非常豐富,如arm7、arm9tdmi和cortex-a等,都是不同的家族,其中家族之間的區別在於其工作模式的不同,如arm7tdmi採用的是3級流水線模式,而arm9tdmi採用的是5級流水線模式,其中還有很多細節不一樣,具體有待深入研究。

arm的每乙個家族系列都由不同的成員,比如arm9tdmi中就包含了arm920t、arm922t和arm940t等,其中相同點是其核心的工作模式都是採用arm9tdmi的工作模式,不同之處在於以arm9tdmi為核心的外圍快取記憶體和mmu(memory managing unit 記憶體管理單元)各有區別。另外,對於獲得arm最高授權的第三方廠商,也可以自己修改arm處理核的架構從而開發出屬於自己公司的處理器,如三星、蘋果等公司開發的處理器就是基於arm處理器作出的不同程度的修改和優化,但會歸入arm的某些家族系列,如下圖所示:

微控制器(scm,single chip microcomputer)本義為單片微型計算機,是指一塊晶元就能實現運算和控制的功能,是採用超大規模積體電路技術把具有資料處理能力的**處理器cpu隨機儲存器ram、唯讀儲存器rom、多種i/o口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調變電路、模擬多路轉換器、a/d轉換器等電路)整合到一塊矽片上構成的乙個小而完善的微型計算機系統,在工業控制領域的廣泛應用。從上世紀80年代,由當時的4位、8位微控制器,發展到現在的32位300m的高速微控制器。

微控制器的結構一般如下:

早期的微控制器功能比較簡單,從4位發展到8位,由於8位微控制器的價效比高,在中小規模應用場合佔據了主流,是微控制器的乙個發展方向,典型的代表由intel公司的51微控制器系列,其結構如下圖所示。

但微控制器的發展不止於此。從以前的8位發展到現在32位甚至是64位,微控制器經歷了從mcu(微控制器)到soc(片上系統)的變化。其中mcu階段中最成功的當屬於st公司的stm32系列。stm32是基於arm cortex-m家族的微處理器搭配外圍部件形成的晶元。其指令集區別於51系列,是一種risc(精簡指令集)。

至於soc片上系統,實際上是指微控制器發展的更高階段,是隨著ic技術等的提高,系統整合度越來越大,能夠將更多元件如影象處理器,dsp和更大儲存能力的dram和rom等高度整合在乙個晶元上形成乙個完整的系統,能在晶元上執行系統級別的**。

目前soc是乙個微控制器的乙個發展方向,實際上由於很多的問題尚未解決,比較外設的統一介面,模擬電路和數位電路的不相容等,soc還是一項有待發展的技術。但可以看到,隨著整合度的越來越高,越來越多的晶元上整合了越來越多的功能單元,如麒麟990上的基帶晶元和5g晶元,實際上不是乙個mcu本該具有的功能,而是對soc的追求。類似的情況還有很多。

下圖是s3c2440的內部結構圖。可以看出,s3c2440是乙個近乎完整的系統,整合了以arm920t為核心的處理器,能夠擴充套件ram、rom等儲存器,整合了lcd控制器等功能到一塊晶元上,同時自帶了pll片上時鐘發生器,擴充套件了多種型別的外設介面,相當於乙個完整的計算機系統。所以,可以說s3c2440是乙個從mcu到soc的乙個過渡階段。

suid和sgid的個人理解

uid是使用者id,gid是組id,它們的許可權有rwx,檔案位置在 etc passwd和 etc group 目錄預設許可權是755,檔案預設許可權是644,預設掩碼是022,suid的特殊許可權是4 命令的本身也是檔案相關 sgid的特殊許可權是2 和目錄相關 striky的特殊許可權是1 防...

arm載入域和執行域的理解

般而言,乙個程式包括唯讀的 段和可讀寫的資料段。在arm的整合開發環境中,唯讀的 段和常量被稱作ro段 readonly 可讀寫的全域性變數和靜態變數被稱作rw段 readwrite rw段中要被初始化為零的變數被稱為zi段 zeroinit 對於嵌入式系統而言,程式映象都是儲存在flash儲存器等...

關於char 和char 的個人理解

今天白天練習一些程式設計題遇到了乙個問題,是 寫好後總是莫名出現段錯誤,再三檢查語法和演算法,百思不得其解。之後突然想到,可能是把char 和char搞混了。原本應該是 char a hello 寫成了char a hello 在這之前我一直以為兩者沒有區別,然後仔細的思考了一番,發現了問題的所在。...