ARM架構是什麼東西,不用ARM不行嗎?

9 個回答
对不起我是产品经理
2019-06-07
CPU的架構是指 CPU 接收、處理和傳輸數據的方式,及其內部元件的組織方式。

  朋友們好,我是系統軟件產品經理,計算機科學與技術工學碩士,“用大白話講解天馬行空的技術原理”踐行者。歡迎關注我,瞭解更多業界知識,和我一起探索數據後面的真相。

總算有個和我專業比較貼近的問題了,搓搓小手深呼吸,待我娓娓道來:

什麼是CPU的架構?ARM架構又是什麼?

嗯,正如我開篇引用所講,CPU的架構就是指CPU接收、處理和傳輸數據的方式,以及內部元件的組織方式。“接收、處理和傳輸數據的方式”具體的表現就是指令集;“內部元件的組織方式”的具體表現就是微內核(也就是通常說的核心)的結構組成。

下圖是一個CPU的組成

CPU的架構是指 CPU 接收、處理和傳輸數據的方式,及其內部元件的組織方式。

  朋友們好,我是系統軟件產品經理,計算機科學與技術工學碩士,“用大白話講解天馬行空的技術原理”踐行者。歡迎關注我,瞭解更多業界知識,和我一起探索數據後面的真相。

總算有個和我專業比較貼近的問題了,搓搓小手深呼吸,待我娓娓道來:

什麼是CPU的架構?ARM架構又是什麼?

嗯,正如我開篇引用所講,CPU的架構就是指CPU接收、處理和傳輸數據的方式,以及內部元件的組織方式。“接收、處理和傳輸數據的方式”具體的表現就是指令集;“內部元件的組織方式”的具體表現就是微內核(也就是通常說的核心)的結構組成。

下圖是一個CPU的組成

  • 指令集

我們目前常見的絕大多數計算機系統都採用的“馮·諾依曼”的體系結構來設計的,用簡單樸素的語言來描述就是:把CPU看做一個機器,這個機器以程序指令和數據為原材料,根據程序指令生成新的數據。

CPU的架構是指 CPU 接收、處理和傳輸數據的方式,及其內部元件的組織方式。

  朋友們好,我是系統軟件產品經理,計算機科學與技術工學碩士,“用大白話講解天馬行空的技術原理”踐行者。歡迎關注我,瞭解更多業界知識,和我一起探索數據後面的真相。

總算有個和我專業比較貼近的問題了,搓搓小手深呼吸,待我娓娓道來:

什麼是CPU的架構?ARM架構又是什麼?

嗯,正如我開篇引用所講,CPU的架構就是指CPU接收、處理和傳輸數據的方式,以及內部元件的組織方式。“接收、處理和傳輸數據的方式”具體的表現就是指令集;“內部元件的組織方式”的具體表現就是微內核(也就是通常說的核心)的結構組成。

下圖是一個CPU的組成

  • 指令集

我們目前常見的絕大多數計算機系統都採用的“馮·諾依曼”的體系結構來設計的,用簡單樸素的語言來描述就是:把CPU看做一個機器,這個機器以程序指令和數據為原材料,根據程序指令生成新的數據。

這種程序指令,是由編譯器從編程語言編寫的源碼編譯而來的,這個過程有點類似翻譯,是將程序員編寫的程序語言翻譯成機器聽得懂的語言,這種機器語言中,也有類似ABCDEFG這樣的基本元素,叫做指令。所有不重複的指令構成了指令集合ISA,通常就叫指令集我們經常說的ARMv7、ARMv8其實指的是指令集。

  • 微內核

早先的CPU結構很簡單,只有算數邏輯單元ALU、控制器和一些寄存器等;隨著集成芯片的製程不斷髮展,集成度不斷提高,現在的CPU不但包含了眾多的核心,還包含了GPU、Cache、存控模塊和其它IO模塊等。(見首圖) 這個核心就是微內核。微內核就包含了算數邏輯單元ALU、控制器和寄存器等這些核心部件。由於不同的CPU用途不同,它的計算工作方式有各自的特點,那麼根據這些特點,ALU等部件就要做出特殊的設計。我們通常說的Cortex-A53這樣的代號,指的就是ARM公司設計出來的微內核。

CPU的架構是指 CPU 接收、處理和傳輸數據的方式,及其內部元件的組織方式。

  朋友們好,我是系統軟件產品經理,計算機科學與技術工學碩士,“用大白話講解天馬行空的技術原理”踐行者。歡迎關注我,瞭解更多業界知識,和我一起探索數據後面的真相。

總算有個和我專業比較貼近的問題了,搓搓小手深呼吸,待我娓娓道來:

什麼是CPU的架構?ARM架構又是什麼?

嗯,正如我開篇引用所講,CPU的架構就是指CPU接收、處理和傳輸數據的方式,以及內部元件的組織方式。“接收、處理和傳輸數據的方式”具體的表現就是指令集;“內部元件的組織方式”的具體表現就是微內核(也就是通常說的核心)的結構組成。

下圖是一個CPU的組成

  • 指令集

我們目前常見的絕大多數計算機系統都採用的“馮·諾依曼”的體系結構來設計的,用簡單樸素的語言來描述就是:把CPU看做一個機器,這個機器以程序指令和數據為原材料,根據程序指令生成新的數據。

這種程序指令,是由編譯器從編程語言編寫的源碼編譯而來的,這個過程有點類似翻譯,是將程序員編寫的程序語言翻譯成機器聽得懂的語言,這種機器語言中,也有類似ABCDEFG這樣的基本元素,叫做指令。所有不重複的指令構成了指令集合ISA,通常就叫指令集我們經常說的ARMv7、ARMv8其實指的是指令集。

  • 微內核

早先的CPU結構很簡單,只有算數邏輯單元ALU、控制器和一些寄存器等;隨著集成芯片的製程不斷髮展,集成度不斷提高,現在的CPU不但包含了眾多的核心,還包含了GPU、Cache、存控模塊和其它IO模塊等。(見首圖) 這個核心就是微內核。微內核就包含了算數邏輯單元ALU、控制器和寄存器等這些核心部件。由於不同的CPU用途不同,它的計算工作方式有各自的特點,那麼根據這些特點,ALU等部件就要做出特殊的設計。我們通常說的Cortex-A53這樣的代號,指的就是ARM公司設計出來的微內核。

ARM的指令集和類似Cortex這樣的微內核放在一起,再加上外圍的USART GPIO SPI ADC這些外圍模塊,統稱為ARM架構。


不用ARM行不行?肯定行!但是……

看了上面的介紹,朋友們自己就能明白,ARM對外授權大致上分為三種:

第一種就是處理器授權:意思就是你需要什麼性能的處理器,ARM全都給你設計成圖紙,你只需要照著圖紙找代工廠去生產就行了;

第二種就是架構授權:意思就是把整體的組成結構,包括外圍的IO等模塊的詳細說明和如何設計都教給你,然後把指令集標準也教給你,你自己可以在這個基礎上根據自己的需求來修改核心,設計自己的CPU。這個就很熟悉了,華為,蘋果,三星都是這麼幹的。

第三種就是核心授權:意思就是核心你不能動,只能根據核心的圖紙修改外圍的模塊。

CPU的架構是指 CPU 接收、處理和傳輸數據的方式,及其內部元件的組織方式。

  朋友們好,我是系統軟件產品經理,計算機科學與技術工學碩士,“用大白話講解天馬行空的技術原理”踐行者。歡迎關注我,瞭解更多業界知識,和我一起探索數據後面的真相。

總算有個和我專業比較貼近的問題了,搓搓小手深呼吸,待我娓娓道來:

什麼是CPU的架構?ARM架構又是什麼?

嗯,正如我開篇引用所講,CPU的架構就是指CPU接收、處理和傳輸數據的方式,以及內部元件的組織方式。“接收、處理和傳輸數據的方式”具體的表現就是指令集;“內部元件的組織方式”的具體表現就是微內核(也就是通常說的核心)的結構組成。

下圖是一個CPU的組成

  • 指令集

我們目前常見的絕大多數計算機系統都採用的“馮·諾依曼”的體系結構來設計的,用簡單樸素的語言來描述就是:把CPU看做一個機器,這個機器以程序指令和數據為原材料,根據程序指令生成新的數據。

這種程序指令,是由編譯器從編程語言編寫的源碼編譯而來的,這個過程有點類似翻譯,是將程序員編寫的程序語言翻譯成機器聽得懂的語言,這種機器語言中,也有類似ABCDEFG這樣的基本元素,叫做指令。所有不重複的指令構成了指令集合ISA,通常就叫指令集我們經常說的ARMv7、ARMv8其實指的是指令集。

  • 微內核

早先的CPU結構很簡單,只有算數邏輯單元ALU、控制器和一些寄存器等;隨著集成芯片的製程不斷髮展,集成度不斷提高,現在的CPU不但包含了眾多的核心,還包含了GPU、Cache、存控模塊和其它IO模塊等。(見首圖) 這個核心就是微內核。微內核就包含了算數邏輯單元ALU、控制器和寄存器等這些核心部件。由於不同的CPU用途不同,它的計算工作方式有各自的特點,那麼根據這些特點,ALU等部件就要做出特殊的設計。我們通常說的Cortex-A53這樣的代號,指的就是ARM公司設計出來的微內核。

ARM的指令集和類似Cortex這樣的微內核放在一起,再加上外圍的USART GPIO SPI ADC這些外圍模塊,統稱為ARM架構。


不用ARM行不行?肯定行!但是……

看了上面的介紹,朋友們自己就能明白,ARM對外授權大致上分為三種:

第一種就是處理器授權:意思就是你需要什麼性能的處理器,ARM全都給你設計成圖紙,你只需要照著圖紙找代工廠去生產就行了;

第二種就是架構授權:意思就是把整體的組成結構,包括外圍的IO等模塊的詳細說明和如何設計都教給你,然後把指令集標準也教給你,你自己可以在這個基礎上根據自己的需求來修改核心,設計自己的CPU。這個就很熟悉了,華為,蘋果,三星都是這麼幹的。

第三種就是核心授權:意思就是核心你不能動,只能根據核心的圖紙修改外圍的模塊。

因為ARM指令集非常適合嵌入式系統,功耗低,標準又統一,所以現在嵌入式系統市場95%的處理器都是ARM指令集的,基本上形成了壟斷地位。

那麼我們不用ARM行不行?行是肯定行,除了ARM之外,嵌入式系統還有很多其它優秀的架構,比如MIPS、RISC-V,只是ARM從塞班時代起就基本上統治了嵌入式系統的生態,Android、iOS的應用幾乎全部都兼容ARM指令集。改用其它的指令集來設計CPU,面臨的問題就是應用太少,生態不夠成熟,被生態搞死的Windows Phone墳頭土還沒幹呢……

但是不排除眾廠商揭竿而起一起反對ARM的壟斷,改投別家的指令集——不過這個可能性那就是非常小了。

CPU的架構是指 CPU 接收、處理和傳輸數據的方式,及其內部元件的組織方式。

  朋友們好,我是系統軟件產品經理,計算機科學與技術工學碩士,“用大白話講解天馬行空的技術原理”踐行者。歡迎關注我,瞭解更多業界知識,和我一起探索數據後面的真相。

總算有個和我專業比較貼近的問題了,搓搓小手深呼吸,待我娓娓道來:

什麼是CPU的架構?ARM架構又是什麼?

嗯,正如我開篇引用所講,CPU的架構就是指CPU接收、處理和傳輸數據的方式,以及內部元件的組織方式。“接收、處理和傳輸數據的方式”具體的表現就是指令集;“內部元件的組織方式”的具體表現就是微內核(也就是通常說的核心)的結構組成。

下圖是一個CPU的組成

  • 指令集

我們目前常見的絕大多數計算機系統都採用的“馮·諾依曼”的體系結構來設計的,用簡單樸素的語言來描述就是:把CPU看做一個機器,這個機器以程序指令和數據為原材料,根據程序指令生成新的數據。

這種程序指令,是由編譯器從編程語言編寫的源碼編譯而來的,這個過程有點類似翻譯,是將程序員編寫的程序語言翻譯成機器聽得懂的語言,這種機器語言中,也有類似ABCDEFG這樣的基本元素,叫做指令。所有不重複的指令構成了指令集合ISA,通常就叫指令集我們經常說的ARMv7、ARMv8其實指的是指令集。

  • 微內核

早先的CPU結構很簡單,只有算數邏輯單元ALU、控制器和一些寄存器等;隨著集成芯片的製程不斷髮展,集成度不斷提高,現在的CPU不但包含了眾多的核心,還包含了GPU、Cache、存控模塊和其它IO模塊等。(見首圖) 這個核心就是微內核。微內核就包含了算數邏輯單元ALU、控制器和寄存器等這些核心部件。由於不同的CPU用途不同,它的計算工作方式有各自的特點,那麼根據這些特點,ALU等部件就要做出特殊的設計。我們通常說的Cortex-A53這樣的代號,指的就是ARM公司設計出來的微內核。

ARM的指令集和類似Cortex這樣的微內核放在一起,再加上外圍的USART GPIO SPI ADC這些外圍模塊,統稱為ARM架構。


不用ARM行不行?肯定行!但是……

看了上面的介紹,朋友們自己就能明白,ARM對外授權大致上分為三種:

第一種就是處理器授權:意思就是你需要什麼性能的處理器,ARM全都給你設計成圖紙,你只需要照著圖紙找代工廠去生產就行了;

第二種就是架構授權:意思就是把整體的組成結構,包括外圍的IO等模塊的詳細說明和如何設計都教給你,然後把指令集標準也教給你,你自己可以在這個基礎上根據自己的需求來修改核心,設計自己的CPU。這個就很熟悉了,華為,蘋果,三星都是這麼幹的。

第三種就是核心授權:意思就是核心你不能動,只能根據核心的圖紙修改外圍的模塊。

因為ARM指令集非常適合嵌入式系統,功耗低,標準又統一,所以現在嵌入式系統市場95%的處理器都是ARM指令集的,基本上形成了壟斷地位。

那麼我們不用ARM行不行?行是肯定行,除了ARM之外,嵌入式系統還有很多其它優秀的架構,比如MIPS、RISC-V,只是ARM從塞班時代起就基本上統治了嵌入式系統的生態,Android、iOS的應用幾乎全部都兼容ARM指令集。改用其它的指令集來設計CPU,面臨的問題就是應用太少,生態不夠成熟,被生態搞死的Windows Phone墳頭土還沒幹呢……

但是不排除眾廠商揭竿而起一起反對ARM的壟斷,改投別家的指令集——不過這個可能性那就是非常小了。


如果覺得我說的對你有幫助,還請動動小手點個贊、加個關注: )
歡迎朋友們在評論中發表自己的觀點。
定慧堂
2019-06-08

互聯網的基本架構是美國科學家在英語的基礎上,藉助數學、通訊學、信息學等搭建起來的,ARM是無數科學家經過長時間的研發而創新出來的,這不僅包含了科學家們的心血,還包括從古希臘開始的神學、數學、哲學和科學體系,是無法另起爐灶的,也是輕易改不掉的。

這就好比房子的承重牆和大梁都建好了,無論後期怎麼裝修,房子的框架是無法改變的。

做操作系統尤如麵點師蒸饅頭,再偉大的麵點師,首先需要合格的麵粉,而麵粉在整個生產過程中有不同層次的安全生產標準和規範:種子、種植、收割……,然後脫殼、加工……每一道工序都符合安全標準,只有這樣,麵點師才能拿到安全衛生的麵粉去蒸出合格的饅頭。

如果面沒發好或者鹼放多了導致饅頭又粘又黃,這是麵點師的責任。而選種、種植小麥,包括是選擇雜交還是轉基因,就不是麵點師可以決定和完成的了。

互聯網的基本架構是美國科學家在英語的基礎上,藉助數學、通訊學、信息學等搭建起來的,ARM是無數科學家經過長時間的研發而創新出來的,這不僅包含了科學家們的心血,還包括從古希臘開始的神學、數學、哲學和科學體系,是無法另起爐灶的,也是輕易改不掉的。

這就好比房子的承重牆和大梁都建好了,無論後期怎麼裝修,房子的框架是無法改變的。

做操作系統尤如麵點師蒸饅頭,再偉大的麵點師,首先需要合格的麵粉,而麵粉在整個生產過程中有不同層次的安全生產標準和規範:種子、種植、收割……,然後脫殼、加工……每一道工序都符合安全標準,只有這樣,麵點師才能拿到安全衛生的麵粉去蒸出合格的饅頭。

如果面沒發好或者鹼放多了導致饅頭又粘又黃,這是麵點師的責任。而選種、種植小麥,包括是選擇雜交還是轉基因,就不是麵點師可以決定和完成的了。


芯片、操作系統等網絡科技產品都是如此,每個層面都有不同的設計和器件主題,相應有不同的標準、配套和鏈接,各層次之間相互支撐、相互配合,但是不能相互替代。

在世界上所有的操作系統中,要麼一支獨秀(IOS);要麼百花齊放(android )。而之前的什麼塞班系統、windows phone等,技術上都是完美無暇,但卻敗於市場! 操作系統成功好壞與否,不是做出來就成功了,而是很多很多人用了以後都說行,才算是走在成功的路上!

所以,成功在事後,不在現在,更不在話下!操作系統還真不是一個大而全問題,而是一個產業鏈問題! 華為作為一個硬件公司,很難在芯片和系統領域有任何大的作為!

(未完待續-)

互聯網的基本架構是美國科學家在英語的基礎上,藉助數學、通訊學、信息學等搭建起來的,ARM是無數科學家經過長時間的研發而創新出來的,這不僅包含了科學家們的心血,還包括從古希臘開始的神學、數學、哲學和科學體系,是無法另起爐灶的,也是輕易改不掉的。

這就好比房子的承重牆和大梁都建好了,無論後期怎麼裝修,房子的框架是無法改變的。

做操作系統尤如麵點師蒸饅頭,再偉大的麵點師,首先需要合格的麵粉,而麵粉在整個生產過程中有不同層次的安全生產標準和規範:種子、種植、收割……,然後脫殼、加工……每一道工序都符合安全標準,只有這樣,麵點師才能拿到安全衛生的麵粉去蒸出合格的饅頭。

如果面沒發好或者鹼放多了導致饅頭又粘又黃,這是麵點師的責任。而選種、種植小麥,包括是選擇雜交還是轉基因,就不是麵點師可以決定和完成的了。


芯片、操作系統等網絡科技產品都是如此,每個層面都有不同的設計和器件主題,相應有不同的標準、配套和鏈接,各層次之間相互支撐、相互配合,但是不能相互替代。

在世界上所有的操作系統中,要麼一支獨秀(IOS);要麼百花齊放(android )。而之前的什麼塞班系統、windows phone等,技術上都是完美無暇,但卻敗於市場! 操作系統成功好壞與否,不是做出來就成功了,而是很多很多人用了以後都說行,才算是走在成功的路上!

所以,成功在事後,不在現在,更不在話下!操作系統還真不是一個大而全問題,而是一個產業鏈問題! 華為作為一個硬件公司,很難在芯片和系統領域有任何大的作為!

(未完待續-)



當下,總會有一些無知者天天臆想天開!如果真正的能夠獨立的創造一個新的系統出來,離開了幾十家合作伙伴還行?要我說,除非你用中文寫代碼,編程序,否則,別說自己獨立創造出了什麼系統!

即便是別人沒有完全斷供什麼,也不意味著別人怕你什麼?自己取得了勝利。試想,如果安卓系統全部斷網、互聯網全部斷網,你還真的能活?但道義上卻不能如此無情,這才是市場精神的本質!

據有關專家認為,“鴻蒙”是否能取代Android成功率極低,最主要難題在於兩點。

互聯網的基本架構是美國科學家在英語的基礎上,藉助數學、通訊學、信息學等搭建起來的,ARM是無數科學家經過長時間的研發而創新出來的,這不僅包含了科學家們的心血,還包括從古希臘開始的神學、數學、哲學和科學體系,是無法另起爐灶的,也是輕易改不掉的。

這就好比房子的承重牆和大梁都建好了,無論後期怎麼裝修,房子的框架是無法改變的。

做操作系統尤如麵點師蒸饅頭,再偉大的麵點師,首先需要合格的麵粉,而麵粉在整個生產過程中有不同層次的安全生產標準和規範:種子、種植、收割……,然後脫殼、加工……每一道工序都符合安全標準,只有這樣,麵點師才能拿到安全衛生的麵粉去蒸出合格的饅頭。

如果面沒發好或者鹼放多了導致饅頭又粘又黃,這是麵點師的責任。而選種、種植小麥,包括是選擇雜交還是轉基因,就不是麵點師可以決定和完成的了。


芯片、操作系統等網絡科技產品都是如此,每個層面都有不同的設計和器件主題,相應有不同的標準、配套和鏈接,各層次之間相互支撐、相互配合,但是不能相互替代。

在世界上所有的操作系統中,要麼一支獨秀(IOS);要麼百花齊放(android )。而之前的什麼塞班系統、windows phone等,技術上都是完美無暇,但卻敗於市場! 操作系統成功好壞與否,不是做出來就成功了,而是很多很多人用了以後都說行,才算是走在成功的路上!

所以,成功在事後,不在現在,更不在話下!操作系統還真不是一個大而全問題,而是一個產業鏈問題! 華為作為一個硬件公司,很難在芯片和系統領域有任何大的作為!

(未完待續-)



當下,總會有一些無知者天天臆想天開!如果真正的能夠獨立的創造一個新的系統出來,離開了幾十家合作伙伴還行?要我說,除非你用中文寫代碼,編程序,否則,別說自己獨立創造出了什麼系統!

即便是別人沒有完全斷供什麼,也不意味著別人怕你什麼?自己取得了勝利。試想,如果安卓系統全部斷網、互聯網全部斷網,你還真的能活?但道義上卻不能如此無情,這才是市場精神的本質!

據有關專家認為,“鴻蒙”是否能取代Android成功率極低,最主要難題在於兩點。


首先,如果要用“鴻蒙”取代Android,人們一般使用的文件、音頻、視頻由於格式不同,未必能於新系統開啟。

簡單說,要連接外面世界,“鴻蒙”首先要開發大量轉換器將Android可讀的文件進行轉換,世界上通用文件的格式成千上萬,這幾乎是海量的工作。

其次,最重要一點是,Android系統幾乎佔據了手機市場99%份額,大量軟件都是基於Android開發,涵括了生活各個層面。

一個新的系統基本上沒有軟件支持再強也只算是一部功能機,現在通行的在Android上用的軟件,數量之多簡直難以計算,要軟件商重新開發另一套去支持“鴻蒙”,也屬於不可能任務。

建議華為先把電腦鍵盤的字母排序改變一下,如果能夠改革成功,並被世上大部分電腦所接受。我絕對認為華為的鴻蒙系統可行。

否則,也只能算是個喊喊而已的擺拍吧! 這絕對不是貶低自己,而是認知世界,即“知止而後能定,由戒生定,由定開慧”!不是蠻幹,而是要開慧呀!

風浪過後,還有幾個人會再去關心“鴻蒙”呢?也許冷靜、協調、智鬥才是更高的智慧。面對著與己相關的系統快慢和兼容,有幾個人不是先把自己的利益和便捷放在首位呢?

(未完待續二)

互聯網的基本架構是美國科學家在英語的基礎上,藉助數學、通訊學、信息學等搭建起來的,ARM是無數科學家經過長時間的研發而創新出來的,這不僅包含了科學家們的心血,還包括從古希臘開始的神學、數學、哲學和科學體系,是無法另起爐灶的,也是輕易改不掉的。

這就好比房子的承重牆和大梁都建好了,無論後期怎麼裝修,房子的框架是無法改變的。

做操作系統尤如麵點師蒸饅頭,再偉大的麵點師,首先需要合格的麵粉,而麵粉在整個生產過程中有不同層次的安全生產標準和規範:種子、種植、收割……,然後脫殼、加工……每一道工序都符合安全標準,只有這樣,麵點師才能拿到安全衛生的麵粉去蒸出合格的饅頭。

如果面沒發好或者鹼放多了導致饅頭又粘又黃,這是麵點師的責任。而選種、種植小麥,包括是選擇雜交還是轉基因,就不是麵點師可以決定和完成的了。


芯片、操作系統等網絡科技產品都是如此,每個層面都有不同的設計和器件主題,相應有不同的標準、配套和鏈接,各層次之間相互支撐、相互配合,但是不能相互替代。

在世界上所有的操作系統中,要麼一支獨秀(IOS);要麼百花齊放(android )。而之前的什麼塞班系統、windows phone等,技術上都是完美無暇,但卻敗於市場! 操作系統成功好壞與否,不是做出來就成功了,而是很多很多人用了以後都說行,才算是走在成功的路上!

所以,成功在事後,不在現在,更不在話下!操作系統還真不是一個大而全問題,而是一個產業鏈問題! 華為作為一個硬件公司,很難在芯片和系統領域有任何大的作為!

(未完待續-)



當下,總會有一些無知者天天臆想天開!如果真正的能夠獨立的創造一個新的系統出來,離開了幾十家合作伙伴還行?要我說,除非你用中文寫代碼,編程序,否則,別說自己獨立創造出了什麼系統!

即便是別人沒有完全斷供什麼,也不意味著別人怕你什麼?自己取得了勝利。試想,如果安卓系統全部斷網、互聯網全部斷網,你還真的能活?但道義上卻不能如此無情,這才是市場精神的本質!

據有關專家認為,“鴻蒙”是否能取代Android成功率極低,最主要難題在於兩點。


首先,如果要用“鴻蒙”取代Android,人們一般使用的文件、音頻、視頻由於格式不同,未必能於新系統開啟。

簡單說,要連接外面世界,“鴻蒙”首先要開發大量轉換器將Android可讀的文件進行轉換,世界上通用文件的格式成千上萬,這幾乎是海量的工作。

其次,最重要一點是,Android系統幾乎佔據了手機市場99%份額,大量軟件都是基於Android開發,涵括了生活各個層面。

一個新的系統基本上沒有軟件支持再強也只算是一部功能機,現在通行的在Android上用的軟件,數量之多簡直難以計算,要軟件商重新開發另一套去支持“鴻蒙”,也屬於不可能任務。

建議華為先把電腦鍵盤的字母排序改變一下,如果能夠改革成功,並被世上大部分電腦所接受。我絕對認為華為的鴻蒙系統可行。

否則,也只能算是個喊喊而已的擺拍吧! 這絕對不是貶低自己,而是認知世界,即“知止而後能定,由戒生定,由定開慧”!不是蠻幹,而是要開慧呀!

風浪過後,還有幾個人會再去關心“鴻蒙”呢?也許冷靜、協調、智鬥才是更高的智慧。面對著與己相關的系統快慢和兼容,有幾個人不是先把自己的利益和便捷放在首位呢?

(未完待續二)

Geek视界
2019-06-07

    ARM是手機處理器的設計圖紙,佔領了95%以上的智能手機市場,高通、蘋果、華為、MTK的處理器無一例外的基於ARM架構,只是修改的程度不同而已,所以不用ARM架構還真不行。下文具體說一說。

    ARM是手機處理器的設計圖紙,佔領了95%以上的智能手機市場,高通、蘋果、華為、MTK的處理器無一例外的基於ARM架構,只是修改的程度不同而已,所以不用ARM架構還真不行。下文具體說一說。

    1、ARM是什麼東西?

    ARM是全球知名的半導體知識產權(IP)提供商,全世界超過95%的智能手機和平板電腦採用了ARM架構。ARM不生產自己的芯片,只出售芯片的圖紙,根據授權的方式不同分為指令集授權、軟核授權、硬核授權。ARM是一家英國公司,2016年被日本軟銀收購。

    ARM是手機處理器的設計圖紙,佔領了95%以上的智能手機市場,高通、蘋果、華為、MTK的處理器無一例外的基於ARM架構,只是修改的程度不同而已,所以不用ARM架構還真不行。下文具體說一說。

    1、ARM是什麼東西?

    ARM是全球知名的半導體知識產權(IP)提供商,全世界超過95%的智能手機和平板電腦採用了ARM架構。ARM不生產自己的芯片,只出售芯片的圖紙,根據授權的方式不同分為指令集授權、軟核授權、硬核授權。ARM是一家英國公司,2016年被日本軟銀收購。

    ARM架構的處理器採用了RISC精簡指令,功耗非常低,適合作為智能設備的處理器。ARM處理器的功耗可以做到1W以下,而X86架構的的i7處理器滿載時功耗達到100W以上。因此,ARM架構的處理器幾乎統治了所有的手機手機處理器,高通、蘋果、華為、三星、MTK的處理器無一例外的基於ARM架構。

    ARM是手機處理器的設計圖紙,佔領了95%以上的智能手機市場,高通、蘋果、華為、MTK的處理器無一例外的基於ARM架構,只是修改的程度不同而已,所以不用ARM架構還真不行。下文具體說一說。

    1、ARM是什麼東西?

    ARM是全球知名的半導體知識產權(IP)提供商,全世界超過95%的智能手機和平板電腦採用了ARM架構。ARM不生產自己的芯片,只出售芯片的圖紙,根據授權的方式不同分為指令集授權、軟核授權、硬核授權。ARM是一家英國公司,2016年被日本軟銀收購。

    ARM架構的處理器採用了RISC精簡指令,功耗非常低,適合作為智能設備的處理器。ARM處理器的功耗可以做到1W以下,而X86架構的的i7處理器滿載時功耗達到100W以上。因此,ARM架構的處理器幾乎統治了所有的手機手機處理器,高通、蘋果、華為、三星、MTK的處理器無一例外的基於ARM架構。

    前段時間,ARM公司響應美國的“禁售令”終止了與華為的業務往來,由於華為購買了ARMv8永久授權,短時間影響不大。如果ARM對於華為授權長期處於停止狀態,華為無法獲取ARMv9架構,那麼會導致華為芯片性能提升停滯,在高端芯片領域缺乏競爭力。


    2、為什麼離不開ARM?

    經過多年的發展,ARM架構處理器的“生態”已經形成,生態不是一朝一夕能夠形成的。半導體是一個國際合作行業,如果缺乏生態,那麼再好的指令集也無法在市場上獲取成功。如果華為自己設計了一個指令集,但是沒有業界大佬使用你的指令集,周邊配套設備不齊全,那麼就無法形成“生態”,intel的Atom處理器進軍智能設備處理器失敗了,就是因為“生態”的原因。所以,從這個方面來說,各大芯片設計廠商也來不開ARM。

    ARM是手機處理器的設計圖紙,佔領了95%以上的智能手機市場,高通、蘋果、華為、MTK的處理器無一例外的基於ARM架構,只是修改的程度不同而已,所以不用ARM架構還真不行。下文具體說一說。

    1、ARM是什麼東西?

    ARM是全球知名的半導體知識產權(IP)提供商,全世界超過95%的智能手機和平板電腦採用了ARM架構。ARM不生產自己的芯片,只出售芯片的圖紙,根據授權的方式不同分為指令集授權、軟核授權、硬核授權。ARM是一家英國公司,2016年被日本軟銀收購。

    ARM架構的處理器採用了RISC精簡指令,功耗非常低,適合作為智能設備的處理器。ARM處理器的功耗可以做到1W以下,而X86架構的的i7處理器滿載時功耗達到100W以上。因此,ARM架構的處理器幾乎統治了所有的手機手機處理器,高通、蘋果、華為、三星、MTK的處理器無一例外的基於ARM架構。

    前段時間,ARM公司響應美國的“禁售令”終止了與華為的業務往來,由於華為購買了ARMv8永久授權,短時間影響不大。如果ARM對於華為授權長期處於停止狀態,華為無法獲取ARMv9架構,那麼會導致華為芯片性能提升停滯,在高端芯片領域缺乏競爭力。


    2、為什麼離不開ARM?

    經過多年的發展,ARM架構處理器的“生態”已經形成,生態不是一朝一夕能夠形成的。半導體是一個國際合作行業,如果缺乏生態,那麼再好的指令集也無法在市場上獲取成功。如果華為自己設計了一個指令集,但是沒有業界大佬使用你的指令集,周邊配套設備不齊全,那麼就無法形成“生態”,intel的Atom處理器進軍智能設備處理器失敗了,就是因為“生態”的原因。所以,從這個方面來說,各大芯片設計廠商也來不開ARM。


    總之,ARM已經佔據了智能設備處理器95%以上的市場,芯片的設計、製造幾乎都圍繞著ARM,形成了ARM生態,所以離開ARM“另起爐灶”是一件非常困難的事情。

嘟嘟聊数码
2019-06-08

ARM架構本身屬於一種芯片圖紙設計方案,這個方案裡包括芯片的邏輯算法和技術架構等版權,不同於英特爾X86架構芯片,ARM公司不負責製造芯片,而是通過向其它客戶提供架構授權等方式來賺取利潤,其中包括基本架構授權和高級架構授權等模式,像蘋果和高通這樣的大客戶花高價買的授權等級較高,因此可以自行對芯片進行修改優化。

ARM架構本身屬於一種芯片圖紙設計方案,這個方案裡包括芯片的邏輯算法和技術架構等版權,不同於英特爾X86架構芯片,ARM公司不負責製造芯片,而是通過向其它客戶提供架構授權等方式來賺取利潤,其中包括基本架構授權和高級架構授權等模式,像蘋果和高通這樣的大客戶花高價買的授權等級較高,因此可以自行對芯片進行修改優化。

如今手機和平板等便攜式設備基本都是使用的ARM架構處理器,主要是因為ARM架構相比傳統X86架構芯片指令集相對精簡,不需要太大的芯片面積就可以達到不錯的性能,而且ARM架構效率很高,只需要很低的功耗就可以達到不錯的性能,可以說是目前最適合在移動設備上使用的處理器芯片,英特爾雖說也曾想進軍手機芯片行業,但是X86架構先天不適合小型設備,不是功耗大就是性能差,以失敗而告終。

ARM架構本身屬於一種芯片圖紙設計方案,這個方案裡包括芯片的邏輯算法和技術架構等版權,不同於英特爾X86架構芯片,ARM公司不負責製造芯片,而是通過向其它客戶提供架構授權等方式來賺取利潤,其中包括基本架構授權和高級架構授權等模式,像蘋果和高通這樣的大客戶花高價買的授權等級較高,因此可以自行對芯片進行修改優化。

如今手機和平板等便攜式設備基本都是使用的ARM架構處理器,主要是因為ARM架構相比傳統X86架構芯片指令集相對精簡,不需要太大的芯片面積就可以達到不錯的性能,而且ARM架構效率很高,只需要很低的功耗就可以達到不錯的性能,可以說是目前最適合在移動設備上使用的處理器芯片,英特爾雖說也曾想進軍手機芯片行業,但是X86架構先天不適合小型設備,不是功耗大就是性能差,以失敗而告終。

由於ARM的架構授權模式,這幾年又趕上手機產品的熱潮,業界很多公司正好也需要芯片,於是ARM就與很多公司產生了合作關係,比如高通,蘋果和三星等等,這些公司不需要再從零開始設計芯片,最多隻需要進行一些優化和改進,節省了大量時間和成本,同時隨著ARM芯片主導業界,系統和軟件開發者們對ARM架構芯片優化已經非常成熟,如果此時有別的公司使用其它架構芯片的話很難做到適配,即使效能不錯,但是沒有系統和軟件支持也就沒有市場可言了。

飘舞的风信子
2019-06-07

ARM架構,曾稱進階精簡指令集機器(Advanced RISC Machine)更早稱作Acorn RISC Machine,是一個32位精簡指令集(RISC)處理器架構。還有基於ARM設計的派生產品,重要產品包括Marvell的XScale架構和德州儀器的OMAP系列。

ARM家族佔比所有32位嵌入式處理器的75%,成為佔全世界最多數的32位架構。

ARM處理器廣泛使用在嵌入式系統設計,低耗電節能,非常適用移動通訊領域。消費性電子產品,例如可攜式裝置(PDA、移動電話、多媒體播放器、掌上型電子遊戲,和計算機),電腦外設(硬盤、桌上型路由器),甚至導彈的彈載計算機等軍用設施。

ARM架構包含了下述RISC特性:

讀取/儲存 架構

不支援地址不對齊內存存取(ARMv6內核現已支持)

正交指令集(任意存取指令可以任意的尋址方式存取數據Orthogonal instruction set)

大量的16 × 32-bit 寄存器陣列(register file)

固定的32 bits 操作碼(opcode)長度,降低編碼數量所產生的耗費,減輕解碼和流水線化的負擔。

大多均為一個CPU週期執行。

為了補強這種簡單的設計方式,相較於同時期的處理器如Intel 80286和Motorola 68020,還多加了一些特殊設計:

大部分指令可以條件式地執行,降低在分支時產生的負重,彌補分支預測器(branch predictor)的不足。

算數指令只會在要求時更改條件編碼(condition code)

32-bit筒型位移器(barrel shifter)可用來執行大部分的算數指令和尋址計算而不會損失效能

強大的索引尋址模式(addressing mode)

精簡但快速的雙優先級中斷子系統,具有可切換的暫存器組

有個附加在ARM設計中好玩的東西,就是使用一個4-bit 條件編碼 在每個指令前頭,表示每支指令的執行是否為有條件式的

這大大的減低了在內存存取指令時用到的編碼位,換句話說,它避免在對小型敘述如if做分支指令。有個標準的範例引用歐幾里得的最大公因子算法:

在C編程語言中,循環為:

int gcd (int i, int j)

{

while (i != j)

if (i > j)

i -= j;

else

j -= i;

return i;

}

在ARM 彙編語言中,循環為:

loop CMP Ri, Rj ; 設定條件為 "NE"(不等於) if (i != j)

; "GT"(大於) if (i > j),

; or "LT"(小於) if (i < j)

SUBGT Ri, Ri, Rj ; 若 "GT"(大於), i = i-j;

SUBLT Rj, Rj, Ri ; 若 "LT"(小於), j = j-i;

BNE loop ; 若 "NE"(不等於),則繼續迴圈

這避開了then和else子句之間的分支。

另一項指令集的特色是,能將位移(shift)和迴轉(rotate)等功能併成"資料處理"型的指令(算數、邏輯、和暫存器之間的搬移),因此舉例來說,一個C語言的敘述

a += (j << 2);

在ARM之下,可簡化成只需一個word和一個cycle即可完成的指令

ADD Ra, Ra, Rj, LSL #2

這結果可讓一般的ARM程式變得更加緊密,而不需經常使用內存存取,流水線也可以更有效地使用。即使在ARM以一般認定為慢速的速度下執行,與更復雜的CPU設計相比它仍能執行得不錯。

ARM處理器還有一些在其他RISC的架構所不常見到的特色,例如PC-相對尋址(的確在ARM上PC為16個暫存器的其中一個)以及 前遞加或後遞加的尋址模式。

另外一些注意事項是 ARM 處理器會隨著時間,不斷地增加它的指令集。某些早期的 ARM 處理器(比ARM7TDMI更早),譬如可能並未具備指令可以讀取兩 Bytes 的數量,因此,嚴格來講,對這些處理器產生程式碼時,就不可能處理如 C 語言物件中使用 "volatile short" 的資料型態。

ARM7 和大多數較早的設計具備三階段的流水線化(Pipeline):提取指令、解碼,並執行。較高效能的設計,如 ARM9,則有五階段的流水線化。提高效能的額外方式,包含一顆較快的加法器,和更廣的分支預測邏輯線路。

這個架構使用“協處理器”提供一種非侵入式的方法來延伸指令集,可透過軟件下 MCR、MRC、MRRC和MCRR 等指令來對協處理器尋址。協處理器空間邏輯上通常分成16個協處理器,編號分別從 0 至 15 ,而第15號協處理器(CP15)是保留用作某些常用的控制功能,像是使用高速緩存和記憶管理單元運算(若包含於處理器時)。

在 ARM 架構的機器中,周邊裝置連接處理器的方式,通常透過將裝置的實體暫存器對應到 ARM 的內存空間、協處理器空間,或是連接到另外依序接上處理器的裝置(如總線)。協處理器的存取延遲較低,所以有些周邊裝置(例如 XScale 中斷控制器)會設計成可透過不同方式存取(透過內存和協處理器)。

Thumb

較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式執行指令均耗用4位的情形有關。在Thumb模式下,較小的opcode有更少的功能性。例如,只有分支可以是條件式的,且許多opcode無法存取所有CPU的暫存器。然而,較短的opcode提供整體更佳的編碼密度(注:意指程式碼在內存中佔的空間),即使有些運算需要更多的指令。特別在內存埠或總線寬度限制在32 以下的情形時,更短的Thumb opcode能更有效地使用有限的內存帶寬,因而提供比32位程式碼更佳的效能。典型的嵌入式硬件僅具有較小的32-bit datapath尋址範圍以及其他更窄的16 bits尋址(例如Game Boy Advance)。在這種情形下,通常可行的方案是編譯成 Thumb 程式碼,並自行最佳化一些使用(非Thumb)32位指令集的CPU相關程式區,因而能將它們置入受限的32-bit總線寬度的內存中。

首顆具備 Thumb 技術的處理器是 ARM7TDMI。所有 ARM9 和後來的家族,包括 XScale 都納入了 Thumb 技術。

Jazelle

ARM 還開發出一項技術,Jazelle DBX (Direct Bytecode eXecution),允許它們在某些架構的硬件上加速執行Java bytecode,就如其他執行模式般,當呼叫一些無法支援bytecodes的特殊軟件時,能提供某些bytecodes的加速執行。它能在現存的ARM與Thumb模式之間互相執行。

首顆具備Jazelle技術的處理器是ARM926EJ-S:Jazelle以一個英文字母'J'標示於CPU名稱中。它用來讓手機制造商能夠加速執行Java ME的遊戲和應用程式,也因此促使了這項技術不斷地開發。

Thumb-2

Thumb-2 技術首見於 ARM1156 核心 ,並於2003年發表。Thumb-2 擴充了受限的 16-bit Thumb 指令集,以額外的 32-bit 指令讓指令集的使用更廣泛。因此 Thumb-2 的預期目標是要達到近乎 Thumb 的編碼密度,但能表現出近乎 ARM 指令集在 32-bit 內存下的效能。

Thumb-2 至今也從 ARM 和 Thumb 指令集中派生出多種指令,包含位欄(bit-field)操作、分支建表(table branches),和條件執行等功能。

ThumbEE

ThumbEE,也就是所謂的Thumb-2EE,業界稱為Jazelle RCT技術,於2005年發表,首見於 Cortex-A8 處理器。ThumbEE 提供從 Thumb-2 而來的一些擴充性,在所處的執行環境(Execution Environment)下,使得指令集能特別適用於執行階段(Runtime)的編碼產生(例如即時編譯)。Thumb-2EE 是專為一些語言如 Limbo、Java、C#、Perl 和 Python,並能讓 即時編譯器 能夠輸出更小的編譯碼卻不會影響到效能。

ThumbEE 所提供的新功能,包括在每次存取指令時自動檢查是否有無效指標,以及一種可以執行陣列範圍檢查的指令,並能夠分支到分類器(handlers),其包含一小部份經常呼叫的編碼,通常用於高階語言功能的實作,例如對一個新物件做內存配置。

NEON

進階 SIMD 延伸集,業界稱為NEON技術,它是一個結合 64 和 128 bit 的 SIMD(Single Instruction Multiple Data 單指令多重數據)指令集,其針對多媒體和訊號處理程式具備標準化加速的能力。NEON 可以在 10 MHz 的 CPU 上執行 MP3 音效解碼,且可以執行 13 MHz 頻率以下的 GSM AMR (Adaptive Multi-Rate) 語音編碼。NEON具有一組廣泛的指令集、各自的寄存器陣列,以及獨立執行的硬件。NEON 支援 8-, 16-, 32- 和 64-bit 的整數及單精度浮點數據,並以 SIMD 的方式運算,執行圖形和遊戲處理中關於語音/視訊的部分。SIMD 在 向量超級處理機 中是個決定性的要素,它具備同時多項處理功能。在 NEON 技術中,SIMD 最高可支援到同時 16 個運算。

VFP

VFP 是在協同處理器針對ARM架構的衍生技術。它提供低成本的單精度和倍精度浮點運算能力,並完全相容於ANSI/IEEE Std 754-1985 二進制浮點算數標準。VFP 提供大多數適用於浮點運算的應用,例如PDA、智慧手機、語音壓縮與解壓、3D圖像以及數位音效、打印機、機上盒,和汽車應用等。VFP 架構也支援 SIMD(單指令多重數據)平行化的短向量指令執行。這在圖像和訊號處理等應用上,非常有助於降低編碼大小並增加輸出效率。

在ARM-based處理器中,其他可見的浮點、或 SIMD 的協同處理器還包括了 FPA, FPE, iwMMXt。他們提供類似 VFP 的功能但在opcode層面上來說並不具有相容性。

ARM 公司本身並不靠自有的設計來製造或出售 CPU ,而是將處理器架構授權給有興趣的廠家。ARM 提供了多樣的授權條款,包括售價與散播性等項目。對於授權方來說,ARM 提供了 ARM 內核的整合硬件敘述,包含完整的軟件開發工具(編譯器、debugger、SDK),以及針對內含 ARM CPU 硅芯片的銷售權。對於無晶圓廠的授權方來說,其希望能將 ARM 內核整合到他們自行研發的芯片設計中,通常就僅針對取得一份生產就緒的知識產權內核(IP Core)認證。對這些客戶來說,ARM 會釋出所選的 ARM 核心的版圖,連同抽象模擬模型和測試程式,以協助設計整合和驗證。需求更多的客戶,包括整合元件製造商(IDM)和晶圓廠家,就選擇可合成的RTL(寄存器傳輸級,如 Verilog)形式來取得處理器的知識產權(IP)。藉著可整合的 RTL,客戶就有能力能進行架構上的最佳化與加強。這個方式能讓設計者完成額外的設計目標(如高震盪頻率、低能量耗損、指令集延伸等)而不會受限於無法更動的電路圖。雖然 ARM 並不授予授權方再次出售 ARM 架構本身,但授權方可以任意地出售製品(如芯片元件、評估板、完整系統等)。商用晶圓廠是特殊例子,因為他們不僅授予能出售包含 ARM 內核的硅晶成品,對其它客戶來講,他們通常也保留重製 ARM 內核的權利。

就像大多數 IP 出售方,ARM 依照使用價值來決定 IP 的售價。在架構上而言,更低效能的 ARM 內核比更高效能的內核擁有較低的授權費。以硅芯片實作而言,一顆可整合的內核要比一顆硬件宏(黑箱)內核要來得貴。更復雜的價位問題來講,持有 ARM 授權的商用晶圓廠(例如韓國三星和日本富士通)可以提供更低的授權價格給他們的晶圓廠客戶。透過晶圓廠自有的設計技術,客戶可以更低或是免費的ARM預付授權費來取得 ARM 內核。相較於不具備自有設計技術的專門半導體晶圓廠(如臺積電和聯電),富士通/三星對每片晶圓多收取了兩至三倍的費用。對中少量的應用而言,具備設計部門的晶圓廠提供較低的整體價格(透過授權費用的補助)。對於量產而言,由於長期的成本縮減可藉由更低的晶圓價格,減少ARM的NRE成本,使得專門的晶圓廠也成了一個更好的選擇。

許多半導體公司持有 ARM 授權:Atmel、Broadcom、Cirrus Logic、Freescale(於2004從摩托羅拉公司獨立出來)、富士通、英特爾(藉由和Digital的控訴調停)、IBM,英飛凌科技,任天堂,恩智浦半導體(於2006年從飛利浦獨立出來)、OKI電氣工業,三星電子,Sharp,STMicroelectronics,德州儀器 和 VLSI等許多這些公司均擁有各個不同形式的ARM授權。雖然ARM的授權項目由保密合約所涵蓋,在智慧財產權工業,ARM是廣為人知最昂貴的CPU內核之一。單一的客戶產品包含一個基本的 ARM 內核可能就需索取一次高達美金20萬的授權費用。而若是牽涉到大量架構上修改,則費用就可能超過千萬美元。

目前也有其他很多架構,如X86,powerPC,MIPS,RISC-V,等。現在華為海思用的最後一種,龍芯用的RISC指令集,類似MIPS,你可以看我另外一篇有專門介紹。看發展,RISC-V近幾年興起,估計會大有可為。


ARM架構,曾稱進階精簡指令集機器(Advanced RISC Machine)更早稱作Acorn RISC Machine,是一個32位精簡指令集(RISC)處理器架構。還有基於ARM設計的派生產品,重要產品包括Marvell的XScale架構和德州儀器的OMAP系列。

ARM家族佔比所有32位嵌入式處理器的75%,成為佔全世界最多數的32位架構。

ARM處理器廣泛使用在嵌入式系統設計,低耗電節能,非常適用移動通訊領域。消費性電子產品,例如可攜式裝置(PDA、移動電話、多媒體播放器、掌上型電子遊戲,和計算機),電腦外設(硬盤、桌上型路由器),甚至導彈的彈載計算機等軍用設施。

ARM架構包含了下述RISC特性:

讀取/儲存 架構

不支援地址不對齊內存存取(ARMv6內核現已支持)

正交指令集(任意存取指令可以任意的尋址方式存取數據Orthogonal instruction set)

大量的16 × 32-bit 寄存器陣列(register file)

固定的32 bits 操作碼(opcode)長度,降低編碼數量所產生的耗費,減輕解碼和流水線化的負擔。

大多均為一個CPU週期執行。

為了補強這種簡單的設計方式,相較於同時期的處理器如Intel 80286和Motorola 68020,還多加了一些特殊設計:

大部分指令可以條件式地執行,降低在分支時產生的負重,彌補分支預測器(branch predictor)的不足。

算數指令只會在要求時更改條件編碼(condition code)

32-bit筒型位移器(barrel shifter)可用來執行大部分的算數指令和尋址計算而不會損失效能

強大的索引尋址模式(addressing mode)

精簡但快速的雙優先級中斷子系統,具有可切換的暫存器組

有個附加在ARM設計中好玩的東西,就是使用一個4-bit 條件編碼 在每個指令前頭,表示每支指令的執行是否為有條件式的

這大大的減低了在內存存取指令時用到的編碼位,換句話說,它避免在對小型敘述如if做分支指令。有個標準的範例引用歐幾里得的最大公因子算法:

在C編程語言中,循環為:

int gcd (int i, int j)

{

while (i != j)

if (i > j)

i -= j;

else

j -= i;

return i;

}

在ARM 彙編語言中,循環為:

loop CMP Ri, Rj ; 設定條件為 "NE"(不等於) if (i != j)

; "GT"(大於) if (i > j),

; or "LT"(小於) if (i < j)

SUBGT Ri, Ri, Rj ; 若 "GT"(大於), i = i-j;

SUBLT Rj, Rj, Ri ; 若 "LT"(小於), j = j-i;

BNE loop ; 若 "NE"(不等於),則繼續迴圈

這避開了then和else子句之間的分支。

另一項指令集的特色是,能將位移(shift)和迴轉(rotate)等功能併成"資料處理"型的指令(算數、邏輯、和暫存器之間的搬移),因此舉例來說,一個C語言的敘述

a += (j << 2);

在ARM之下,可簡化成只需一個word和一個cycle即可完成的指令

ADD Ra, Ra, Rj, LSL #2

這結果可讓一般的ARM程式變得更加緊密,而不需經常使用內存存取,流水線也可以更有效地使用。即使在ARM以一般認定為慢速的速度下執行,與更復雜的CPU設計相比它仍能執行得不錯。

ARM處理器還有一些在其他RISC的架構所不常見到的特色,例如PC-相對尋址(的確在ARM上PC為16個暫存器的其中一個)以及 前遞加或後遞加的尋址模式。

另外一些注意事項是 ARM 處理器會隨著時間,不斷地增加它的指令集。某些早期的 ARM 處理器(比ARM7TDMI更早),譬如可能並未具備指令可以讀取兩 Bytes 的數量,因此,嚴格來講,對這些處理器產生程式碼時,就不可能處理如 C 語言物件中使用 "volatile short" 的資料型態。

ARM7 和大多數較早的設計具備三階段的流水線化(Pipeline):提取指令、解碼,並執行。較高效能的設計,如 ARM9,則有五階段的流水線化。提高效能的額外方式,包含一顆較快的加法器,和更廣的分支預測邏輯線路。

這個架構使用“協處理器”提供一種非侵入式的方法來延伸指令集,可透過軟件下 MCR、MRC、MRRC和MCRR 等指令來對協處理器尋址。協處理器空間邏輯上通常分成16個協處理器,編號分別從 0 至 15 ,而第15號協處理器(CP15)是保留用作某些常用的控制功能,像是使用高速緩存和記憶管理單元運算(若包含於處理器時)。

在 ARM 架構的機器中,周邊裝置連接處理器的方式,通常透過將裝置的實體暫存器對應到 ARM 的內存空間、協處理器空間,或是連接到另外依序接上處理器的裝置(如總線)。協處理器的存取延遲較低,所以有些周邊裝置(例如 XScale 中斷控制器)會設計成可透過不同方式存取(透過內存和協處理器)。

Thumb

較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式執行指令均耗用4位的情形有關。在Thumb模式下,較小的opcode有更少的功能性。例如,只有分支可以是條件式的,且許多opcode無法存取所有CPU的暫存器。然而,較短的opcode提供整體更佳的編碼密度(注:意指程式碼在內存中佔的空間),即使有些運算需要更多的指令。特別在內存埠或總線寬度限制在32 以下的情形時,更短的Thumb opcode能更有效地使用有限的內存帶寬,因而提供比32位程式碼更佳的效能。典型的嵌入式硬件僅具有較小的32-bit datapath尋址範圍以及其他更窄的16 bits尋址(例如Game Boy Advance)。在這種情形下,通常可行的方案是編譯成 Thumb 程式碼,並自行最佳化一些使用(非Thumb)32位指令集的CPU相關程式區,因而能將它們置入受限的32-bit總線寬度的內存中。

首顆具備 Thumb 技術的處理器是 ARM7TDMI。所有 ARM9 和後來的家族,包括 XScale 都納入了 Thumb 技術。

Jazelle

ARM 還開發出一項技術,Jazelle DBX (Direct Bytecode eXecution),允許它們在某些架構的硬件上加速執行Java bytecode,就如其他執行模式般,當呼叫一些無法支援bytecodes的特殊軟件時,能提供某些bytecodes的加速執行。它能在現存的ARM與Thumb模式之間互相執行。

首顆具備Jazelle技術的處理器是ARM926EJ-S:Jazelle以一個英文字母'J'標示於CPU名稱中。它用來讓手機制造商能夠加速執行Java ME的遊戲和應用程式,也因此促使了這項技術不斷地開發。

Thumb-2

Thumb-2 技術首見於 ARM1156 核心 ,並於2003年發表。Thumb-2 擴充了受限的 16-bit Thumb 指令集,以額外的 32-bit 指令讓指令集的使用更廣泛。因此 Thumb-2 的預期目標是要達到近乎 Thumb 的編碼密度,但能表現出近乎 ARM 指令集在 32-bit 內存下的效能。

Thumb-2 至今也從 ARM 和 Thumb 指令集中派生出多種指令,包含位欄(bit-field)操作、分支建表(table branches),和條件執行等功能。

ThumbEE

ThumbEE,也就是所謂的Thumb-2EE,業界稱為Jazelle RCT技術,於2005年發表,首見於 Cortex-A8 處理器。ThumbEE 提供從 Thumb-2 而來的一些擴充性,在所處的執行環境(Execution Environment)下,使得指令集能特別適用於執行階段(Runtime)的編碼產生(例如即時編譯)。Thumb-2EE 是專為一些語言如 Limbo、Java、C#、Perl 和 Python,並能讓 即時編譯器 能夠輸出更小的編譯碼卻不會影響到效能。

ThumbEE 所提供的新功能,包括在每次存取指令時自動檢查是否有無效指標,以及一種可以執行陣列範圍檢查的指令,並能夠分支到分類器(handlers),其包含一小部份經常呼叫的編碼,通常用於高階語言功能的實作,例如對一個新物件做內存配置。

NEON

進階 SIMD 延伸集,業界稱為NEON技術,它是一個結合 64 和 128 bit 的 SIMD(Single Instruction Multiple Data 單指令多重數據)指令集,其針對多媒體和訊號處理程式具備標準化加速的能力。NEON 可以在 10 MHz 的 CPU 上執行 MP3 音效解碼,且可以執行 13 MHz 頻率以下的 GSM AMR (Adaptive Multi-Rate) 語音編碼。NEON具有一組廣泛的指令集、各自的寄存器陣列,以及獨立執行的硬件。NEON 支援 8-, 16-, 32- 和 64-bit 的整數及單精度浮點數據,並以 SIMD 的方式運算,執行圖形和遊戲處理中關於語音/視訊的部分。SIMD 在 向量超級處理機 中是個決定性的要素,它具備同時多項處理功能。在 NEON 技術中,SIMD 最高可支援到同時 16 個運算。

VFP

VFP 是在協同處理器針對ARM架構的衍生技術。它提供低成本的單精度和倍精度浮點運算能力,並完全相容於ANSI/IEEE Std 754-1985 二進制浮點算數標準。VFP 提供大多數適用於浮點運算的應用,例如PDA、智慧手機、語音壓縮與解壓、3D圖像以及數位音效、打印機、機上盒,和汽車應用等。VFP 架構也支援 SIMD(單指令多重數據)平行化的短向量指令執行。這在圖像和訊號處理等應用上,非常有助於降低編碼大小並增加輸出效率。

在ARM-based處理器中,其他可見的浮點、或 SIMD 的協同處理器還包括了 FPA, FPE, iwMMXt。他們提供類似 VFP 的功能但在opcode層面上來說並不具有相容性。

ARM 公司本身並不靠自有的設計來製造或出售 CPU ,而是將處理器架構授權給有興趣的廠家。ARM 提供了多樣的授權條款,包括售價與散播性等項目。對於授權方來說,ARM 提供了 ARM 內核的整合硬件敘述,包含完整的軟件開發工具(編譯器、debugger、SDK),以及針對內含 ARM CPU 硅芯片的銷售權。對於無晶圓廠的授權方來說,其希望能將 ARM 內核整合到他們自行研發的芯片設計中,通常就僅針對取得一份生產就緒的知識產權內核(IP Core)認證。對這些客戶來說,ARM 會釋出所選的 ARM 核心的版圖,連同抽象模擬模型和測試程式,以協助設計整合和驗證。需求更多的客戶,包括整合元件製造商(IDM)和晶圓廠家,就選擇可合成的RTL(寄存器傳輸級,如 Verilog)形式來取得處理器的知識產權(IP)。藉著可整合的 RTL,客戶就有能力能進行架構上的最佳化與加強。這個方式能讓設計者完成額外的設計目標(如高震盪頻率、低能量耗損、指令集延伸等)而不會受限於無法更動的電路圖。雖然 ARM 並不授予授權方再次出售 ARM 架構本身,但授權方可以任意地出售製品(如芯片元件、評估板、完整系統等)。商用晶圓廠是特殊例子,因為他們不僅授予能出售包含 ARM 內核的硅晶成品,對其它客戶來講,他們通常也保留重製 ARM 內核的權利。

就像大多數 IP 出售方,ARM 依照使用價值來決定 IP 的售價。在架構上而言,更低效能的 ARM 內核比更高效能的內核擁有較低的授權費。以硅芯片實作而言,一顆可整合的內核要比一顆硬件宏(黑箱)內核要來得貴。更復雜的價位問題來講,持有 ARM 授權的商用晶圓廠(例如韓國三星和日本富士通)可以提供更低的授權價格給他們的晶圓廠客戶。透過晶圓廠自有的設計技術,客戶可以更低或是免費的ARM預付授權費來取得 ARM 內核。相較於不具備自有設計技術的專門半導體晶圓廠(如臺積電和聯電),富士通/三星對每片晶圓多收取了兩至三倍的費用。對中少量的應用而言,具備設計部門的晶圓廠提供較低的整體價格(透過授權費用的補助)。對於量產而言,由於長期的成本縮減可藉由更低的晶圓價格,減少ARM的NRE成本,使得專門的晶圓廠也成了一個更好的選擇。

許多半導體公司持有 ARM 授權:Atmel、Broadcom、Cirrus Logic、Freescale(於2004從摩托羅拉公司獨立出來)、富士通、英特爾(藉由和Digital的控訴調停)、IBM,英飛凌科技,任天堂,恩智浦半導體(於2006年從飛利浦獨立出來)、OKI電氣工業,三星電子,Sharp,STMicroelectronics,德州儀器 和 VLSI等許多這些公司均擁有各個不同形式的ARM授權。雖然ARM的授權項目由保密合約所涵蓋,在智慧財產權工業,ARM是廣為人知最昂貴的CPU內核之一。單一的客戶產品包含一個基本的 ARM 內核可能就需索取一次高達美金20萬的授權費用。而若是牽涉到大量架構上修改,則費用就可能超過千萬美元。

目前也有其他很多架構,如X86,powerPC,MIPS,RISC-V,等。現在華為海思用的最後一種,龍芯用的RISC指令集,類似MIPS,你可以看我另外一篇有專門介紹。看發展,RISC-V近幾年興起,估計會大有可為。



ARM架構,曾稱進階精簡指令集機器(Advanced RISC Machine)更早稱作Acorn RISC Machine,是一個32位精簡指令集(RISC)處理器架構。還有基於ARM設計的派生產品,重要產品包括Marvell的XScale架構和德州儀器的OMAP系列。

ARM家族佔比所有32位嵌入式處理器的75%,成為佔全世界最多數的32位架構。

ARM處理器廣泛使用在嵌入式系統設計,低耗電節能,非常適用移動通訊領域。消費性電子產品,例如可攜式裝置(PDA、移動電話、多媒體播放器、掌上型電子遊戲,和計算機),電腦外設(硬盤、桌上型路由器),甚至導彈的彈載計算機等軍用設施。

ARM架構包含了下述RISC特性:

讀取/儲存 架構

不支援地址不對齊內存存取(ARMv6內核現已支持)

正交指令集(任意存取指令可以任意的尋址方式存取數據Orthogonal instruction set)

大量的16 × 32-bit 寄存器陣列(register file)

固定的32 bits 操作碼(opcode)長度,降低編碼數量所產生的耗費,減輕解碼和流水線化的負擔。

大多均為一個CPU週期執行。

為了補強這種簡單的設計方式,相較於同時期的處理器如Intel 80286和Motorola 68020,還多加了一些特殊設計:

大部分指令可以條件式地執行,降低在分支時產生的負重,彌補分支預測器(branch predictor)的不足。

算數指令只會在要求時更改條件編碼(condition code)

32-bit筒型位移器(barrel shifter)可用來執行大部分的算數指令和尋址計算而不會損失效能

強大的索引尋址模式(addressing mode)

精簡但快速的雙優先級中斷子系統,具有可切換的暫存器組

有個附加在ARM設計中好玩的東西,就是使用一個4-bit 條件編碼 在每個指令前頭,表示每支指令的執行是否為有條件式的

這大大的減低了在內存存取指令時用到的編碼位,換句話說,它避免在對小型敘述如if做分支指令。有個標準的範例引用歐幾里得的最大公因子算法:

在C編程語言中,循環為:

int gcd (int i, int j)

{

while (i != j)

if (i > j)

i -= j;

else

j -= i;

return i;

}

在ARM 彙編語言中,循環為:

loop CMP Ri, Rj ; 設定條件為 "NE"(不等於) if (i != j)

; "GT"(大於) if (i > j),

; or "LT"(小於) if (i < j)

SUBGT Ri, Ri, Rj ; 若 "GT"(大於), i = i-j;

SUBLT Rj, Rj, Ri ; 若 "LT"(小於), j = j-i;

BNE loop ; 若 "NE"(不等於),則繼續迴圈

這避開了then和else子句之間的分支。

另一項指令集的特色是,能將位移(shift)和迴轉(rotate)等功能併成"資料處理"型的指令(算數、邏輯、和暫存器之間的搬移),因此舉例來說,一個C語言的敘述

a += (j << 2);

在ARM之下,可簡化成只需一個word和一個cycle即可完成的指令

ADD Ra, Ra, Rj, LSL #2

這結果可讓一般的ARM程式變得更加緊密,而不需經常使用內存存取,流水線也可以更有效地使用。即使在ARM以一般認定為慢速的速度下執行,與更復雜的CPU設計相比它仍能執行得不錯。

ARM處理器還有一些在其他RISC的架構所不常見到的特色,例如PC-相對尋址(的確在ARM上PC為16個暫存器的其中一個)以及 前遞加或後遞加的尋址模式。

另外一些注意事項是 ARM 處理器會隨著時間,不斷地增加它的指令集。某些早期的 ARM 處理器(比ARM7TDMI更早),譬如可能並未具備指令可以讀取兩 Bytes 的數量,因此,嚴格來講,對這些處理器產生程式碼時,就不可能處理如 C 語言物件中使用 "volatile short" 的資料型態。

ARM7 和大多數較早的設計具備三階段的流水線化(Pipeline):提取指令、解碼,並執行。較高效能的設計,如 ARM9,則有五階段的流水線化。提高效能的額外方式,包含一顆較快的加法器,和更廣的分支預測邏輯線路。

這個架構使用“協處理器”提供一種非侵入式的方法來延伸指令集,可透過軟件下 MCR、MRC、MRRC和MCRR 等指令來對協處理器尋址。協處理器空間邏輯上通常分成16個協處理器,編號分別從 0 至 15 ,而第15號協處理器(CP15)是保留用作某些常用的控制功能,像是使用高速緩存和記憶管理單元運算(若包含於處理器時)。

在 ARM 架構的機器中,周邊裝置連接處理器的方式,通常透過將裝置的實體暫存器對應到 ARM 的內存空間、協處理器空間,或是連接到另外依序接上處理器的裝置(如總線)。協處理器的存取延遲較低,所以有些周邊裝置(例如 XScale 中斷控制器)會設計成可透過不同方式存取(透過內存和協處理器)。

Thumb

較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式執行指令均耗用4位的情形有關。在Thumb模式下,較小的opcode有更少的功能性。例如,只有分支可以是條件式的,且許多opcode無法存取所有CPU的暫存器。然而,較短的opcode提供整體更佳的編碼密度(注:意指程式碼在內存中佔的空間),即使有些運算需要更多的指令。特別在內存埠或總線寬度限制在32 以下的情形時,更短的Thumb opcode能更有效地使用有限的內存帶寬,因而提供比32位程式碼更佳的效能。典型的嵌入式硬件僅具有較小的32-bit datapath尋址範圍以及其他更窄的16 bits尋址(例如Game Boy Advance)。在這種情形下,通常可行的方案是編譯成 Thumb 程式碼,並自行最佳化一些使用(非Thumb)32位指令集的CPU相關程式區,因而能將它們置入受限的32-bit總線寬度的內存中。

首顆具備 Thumb 技術的處理器是 ARM7TDMI。所有 ARM9 和後來的家族,包括 XScale 都納入了 Thumb 技術。

Jazelle

ARM 還開發出一項技術,Jazelle DBX (Direct Bytecode eXecution),允許它們在某些架構的硬件上加速執行Java bytecode,就如其他執行模式般,當呼叫一些無法支援bytecodes的特殊軟件時,能提供某些bytecodes的加速執行。它能在現存的ARM與Thumb模式之間互相執行。

首顆具備Jazelle技術的處理器是ARM926EJ-S:Jazelle以一個英文字母'J'標示於CPU名稱中。它用來讓手機制造商能夠加速執行Java ME的遊戲和應用程式,也因此促使了這項技術不斷地開發。

Thumb-2

Thumb-2 技術首見於 ARM1156 核心 ,並於2003年發表。Thumb-2 擴充了受限的 16-bit Thumb 指令集,以額外的 32-bit 指令讓指令集的使用更廣泛。因此 Thumb-2 的預期目標是要達到近乎 Thumb 的編碼密度,但能表現出近乎 ARM 指令集在 32-bit 內存下的效能。

Thumb-2 至今也從 ARM 和 Thumb 指令集中派生出多種指令,包含位欄(bit-field)操作、分支建表(table branches),和條件執行等功能。

ThumbEE

ThumbEE,也就是所謂的Thumb-2EE,業界稱為Jazelle RCT技術,於2005年發表,首見於 Cortex-A8 處理器。ThumbEE 提供從 Thumb-2 而來的一些擴充性,在所處的執行環境(Execution Environment)下,使得指令集能特別適用於執行階段(Runtime)的編碼產生(例如即時編譯)。Thumb-2EE 是專為一些語言如 Limbo、Java、C#、Perl 和 Python,並能讓 即時編譯器 能夠輸出更小的編譯碼卻不會影響到效能。

ThumbEE 所提供的新功能,包括在每次存取指令時自動檢查是否有無效指標,以及一種可以執行陣列範圍檢查的指令,並能夠分支到分類器(handlers),其包含一小部份經常呼叫的編碼,通常用於高階語言功能的實作,例如對一個新物件做內存配置。

NEON

進階 SIMD 延伸集,業界稱為NEON技術,它是一個結合 64 和 128 bit 的 SIMD(Single Instruction Multiple Data 單指令多重數據)指令集,其針對多媒體和訊號處理程式具備標準化加速的能力。NEON 可以在 10 MHz 的 CPU 上執行 MP3 音效解碼,且可以執行 13 MHz 頻率以下的 GSM AMR (Adaptive Multi-Rate) 語音編碼。NEON具有一組廣泛的指令集、各自的寄存器陣列,以及獨立執行的硬件。NEON 支援 8-, 16-, 32- 和 64-bit 的整數及單精度浮點數據,並以 SIMD 的方式運算,執行圖形和遊戲處理中關於語音/視訊的部分。SIMD 在 向量超級處理機 中是個決定性的要素,它具備同時多項處理功能。在 NEON 技術中,SIMD 最高可支援到同時 16 個運算。

VFP

VFP 是在協同處理器針對ARM架構的衍生技術。它提供低成本的單精度和倍精度浮點運算能力,並完全相容於ANSI/IEEE Std 754-1985 二進制浮點算數標準。VFP 提供大多數適用於浮點運算的應用,例如PDA、智慧手機、語音壓縮與解壓、3D圖像以及數位音效、打印機、機上盒,和汽車應用等。VFP 架構也支援 SIMD(單指令多重數據)平行化的短向量指令執行。這在圖像和訊號處理等應用上,非常有助於降低編碼大小並增加輸出效率。

在ARM-based處理器中,其他可見的浮點、或 SIMD 的協同處理器還包括了 FPA, FPE, iwMMXt。他們提供類似 VFP 的功能但在opcode層面上來說並不具有相容性。

ARM 公司本身並不靠自有的設計來製造或出售 CPU ,而是將處理器架構授權給有興趣的廠家。ARM 提供了多樣的授權條款,包括售價與散播性等項目。對於授權方來說,ARM 提供了 ARM 內核的整合硬件敘述,包含完整的軟件開發工具(編譯器、debugger、SDK),以及針對內含 ARM CPU 硅芯片的銷售權。對於無晶圓廠的授權方來說,其希望能將 ARM 內核整合到他們自行研發的芯片設計中,通常就僅針對取得一份生產就緒的知識產權內核(IP Core)認證。對這些客戶來說,ARM 會釋出所選的 ARM 核心的版圖,連同抽象模擬模型和測試程式,以協助設計整合和驗證。需求更多的客戶,包括整合元件製造商(IDM)和晶圓廠家,就選擇可合成的RTL(寄存器傳輸級,如 Verilog)形式來取得處理器的知識產權(IP)。藉著可整合的 RTL,客戶就有能力能進行架構上的最佳化與加強。這個方式能讓設計者完成額外的設計目標(如高震盪頻率、低能量耗損、指令集延伸等)而不會受限於無法更動的電路圖。雖然 ARM 並不授予授權方再次出售 ARM 架構本身,但授權方可以任意地出售製品(如芯片元件、評估板、完整系統等)。商用晶圓廠是特殊例子,因為他們不僅授予能出售包含 ARM 內核的硅晶成品,對其它客戶來講,他們通常也保留重製 ARM 內核的權利。

就像大多數 IP 出售方,ARM 依照使用價值來決定 IP 的售價。在架構上而言,更低效能的 ARM 內核比更高效能的內核擁有較低的授權費。以硅芯片實作而言,一顆可整合的內核要比一顆硬件宏(黑箱)內核要來得貴。更復雜的價位問題來講,持有 ARM 授權的商用晶圓廠(例如韓國三星和日本富士通)可以提供更低的授權價格給他們的晶圓廠客戶。透過晶圓廠自有的設計技術,客戶可以更低或是免費的ARM預付授權費來取得 ARM 內核。相較於不具備自有設計技術的專門半導體晶圓廠(如臺積電和聯電),富士通/三星對每片晶圓多收取了兩至三倍的費用。對中少量的應用而言,具備設計部門的晶圓廠提供較低的整體價格(透過授權費用的補助)。對於量產而言,由於長期的成本縮減可藉由更低的晶圓價格,減少ARM的NRE成本,使得專門的晶圓廠也成了一個更好的選擇。

許多半導體公司持有 ARM 授權:Atmel、Broadcom、Cirrus Logic、Freescale(於2004從摩托羅拉公司獨立出來)、富士通、英特爾(藉由和Digital的控訴調停)、IBM,英飛凌科技,任天堂,恩智浦半導體(於2006年從飛利浦獨立出來)、OKI電氣工業,三星電子,Sharp,STMicroelectronics,德州儀器 和 VLSI等許多這些公司均擁有各個不同形式的ARM授權。雖然ARM的授權項目由保密合約所涵蓋,在智慧財產權工業,ARM是廣為人知最昂貴的CPU內核之一。單一的客戶產品包含一個基本的 ARM 內核可能就需索取一次高達美金20萬的授權費用。而若是牽涉到大量架構上修改,則費用就可能超過千萬美元。

目前也有其他很多架構,如X86,powerPC,MIPS,RISC-V,等。現在華為海思用的最後一種,龍芯用的RISC指令集,類似MIPS,你可以看我另外一篇有專門介紹。看發展,RISC-V近幾年興起,估計會大有可為。




ARM架構,曾稱進階精簡指令集機器(Advanced RISC Machine)更早稱作Acorn RISC Machine,是一個32位精簡指令集(RISC)處理器架構。還有基於ARM設計的派生產品,重要產品包括Marvell的XScale架構和德州儀器的OMAP系列。

ARM家族佔比所有32位嵌入式處理器的75%,成為佔全世界最多數的32位架構。

ARM處理器廣泛使用在嵌入式系統設計,低耗電節能,非常適用移動通訊領域。消費性電子產品,例如可攜式裝置(PDA、移動電話、多媒體播放器、掌上型電子遊戲,和計算機),電腦外設(硬盤、桌上型路由器),甚至導彈的彈載計算機等軍用設施。

ARM架構包含了下述RISC特性:

讀取/儲存 架構

不支援地址不對齊內存存取(ARMv6內核現已支持)

正交指令集(任意存取指令可以任意的尋址方式存取數據Orthogonal instruction set)

大量的16 × 32-bit 寄存器陣列(register file)

固定的32 bits 操作碼(opcode)長度,降低編碼數量所產生的耗費,減輕解碼和流水線化的負擔。

大多均為一個CPU週期執行。

為了補強這種簡單的設計方式,相較於同時期的處理器如Intel 80286和Motorola 68020,還多加了一些特殊設計:

大部分指令可以條件式地執行,降低在分支時產生的負重,彌補分支預測器(branch predictor)的不足。

算數指令只會在要求時更改條件編碼(condition code)

32-bit筒型位移器(barrel shifter)可用來執行大部分的算數指令和尋址計算而不會損失效能

強大的索引尋址模式(addressing mode)

精簡但快速的雙優先級中斷子系統,具有可切換的暫存器組

有個附加在ARM設計中好玩的東西,就是使用一個4-bit 條件編碼 在每個指令前頭,表示每支指令的執行是否為有條件式的

這大大的減低了在內存存取指令時用到的編碼位,換句話說,它避免在對小型敘述如if做分支指令。有個標準的範例引用歐幾里得的最大公因子算法:

在C編程語言中,循環為:

int gcd (int i, int j)

{

while (i != j)

if (i > j)

i -= j;

else

j -= i;

return i;

}

在ARM 彙編語言中,循環為:

loop CMP Ri, Rj ; 設定條件為 "NE"(不等於) if (i != j)

; "GT"(大於) if (i > j),

; or "LT"(小於) if (i < j)

SUBGT Ri, Ri, Rj ; 若 "GT"(大於), i = i-j;

SUBLT Rj, Rj, Ri ; 若 "LT"(小於), j = j-i;

BNE loop ; 若 "NE"(不等於),則繼續迴圈

這避開了then和else子句之間的分支。

另一項指令集的特色是,能將位移(shift)和迴轉(rotate)等功能併成"資料處理"型的指令(算數、邏輯、和暫存器之間的搬移),因此舉例來說,一個C語言的敘述

a += (j << 2);

在ARM之下,可簡化成只需一個word和一個cycle即可完成的指令

ADD Ra, Ra, Rj, LSL #2

這結果可讓一般的ARM程式變得更加緊密,而不需經常使用內存存取,流水線也可以更有效地使用。即使在ARM以一般認定為慢速的速度下執行,與更復雜的CPU設計相比它仍能執行得不錯。

ARM處理器還有一些在其他RISC的架構所不常見到的特色,例如PC-相對尋址(的確在ARM上PC為16個暫存器的其中一個)以及 前遞加或後遞加的尋址模式。

另外一些注意事項是 ARM 處理器會隨著時間,不斷地增加它的指令集。某些早期的 ARM 處理器(比ARM7TDMI更早),譬如可能並未具備指令可以讀取兩 Bytes 的數量,因此,嚴格來講,對這些處理器產生程式碼時,就不可能處理如 C 語言物件中使用 "volatile short" 的資料型態。

ARM7 和大多數較早的設計具備三階段的流水線化(Pipeline):提取指令、解碼,並執行。較高效能的設計,如 ARM9,則有五階段的流水線化。提高效能的額外方式,包含一顆較快的加法器,和更廣的分支預測邏輯線路。

這個架構使用“協處理器”提供一種非侵入式的方法來延伸指令集,可透過軟件下 MCR、MRC、MRRC和MCRR 等指令來對協處理器尋址。協處理器空間邏輯上通常分成16個協處理器,編號分別從 0 至 15 ,而第15號協處理器(CP15)是保留用作某些常用的控制功能,像是使用高速緩存和記憶管理單元運算(若包含於處理器時)。

在 ARM 架構的機器中,周邊裝置連接處理器的方式,通常透過將裝置的實體暫存器對應到 ARM 的內存空間、協處理器空間,或是連接到另外依序接上處理器的裝置(如總線)。協處理器的存取延遲較低,所以有些周邊裝置(例如 XScale 中斷控制器)會設計成可透過不同方式存取(透過內存和協處理器)。

Thumb

較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式執行指令均耗用4位的情形有關。在Thumb模式下,較小的opcode有更少的功能性。例如,只有分支可以是條件式的,且許多opcode無法存取所有CPU的暫存器。然而,較短的opcode提供整體更佳的編碼密度(注:意指程式碼在內存中佔的空間),即使有些運算需要更多的指令。特別在內存埠或總線寬度限制在32 以下的情形時,更短的Thumb opcode能更有效地使用有限的內存帶寬,因而提供比32位程式碼更佳的效能。典型的嵌入式硬件僅具有較小的32-bit datapath尋址範圍以及其他更窄的16 bits尋址(例如Game Boy Advance)。在這種情形下,通常可行的方案是編譯成 Thumb 程式碼,並自行最佳化一些使用(非Thumb)32位指令集的CPU相關程式區,因而能將它們置入受限的32-bit總線寬度的內存中。

首顆具備 Thumb 技術的處理器是 ARM7TDMI。所有 ARM9 和後來的家族,包括 XScale 都納入了 Thumb 技術。

Jazelle

ARM 還開發出一項技術,Jazelle DBX (Direct Bytecode eXecution),允許它們在某些架構的硬件上加速執行Java bytecode,就如其他執行模式般,當呼叫一些無法支援bytecodes的特殊軟件時,能提供某些bytecodes的加速執行。它能在現存的ARM與Thumb模式之間互相執行。

首顆具備Jazelle技術的處理器是ARM926EJ-S:Jazelle以一個英文字母'J'標示於CPU名稱中。它用來讓手機制造商能夠加速執行Java ME的遊戲和應用程式,也因此促使了這項技術不斷地開發。

Thumb-2

Thumb-2 技術首見於 ARM1156 核心 ,並於2003年發表。Thumb-2 擴充了受限的 16-bit Thumb 指令集,以額外的 32-bit 指令讓指令集的使用更廣泛。因此 Thumb-2 的預期目標是要達到近乎 Thumb 的編碼密度,但能表現出近乎 ARM 指令集在 32-bit 內存下的效能。

Thumb-2 至今也從 ARM 和 Thumb 指令集中派生出多種指令,包含位欄(bit-field)操作、分支建表(table branches),和條件執行等功能。

ThumbEE

ThumbEE,也就是所謂的Thumb-2EE,業界稱為Jazelle RCT技術,於2005年發表,首見於 Cortex-A8 處理器。ThumbEE 提供從 Thumb-2 而來的一些擴充性,在所處的執行環境(Execution Environment)下,使得指令集能特別適用於執行階段(Runtime)的編碼產生(例如即時編譯)。Thumb-2EE 是專為一些語言如 Limbo、Java、C#、Perl 和 Python,並能讓 即時編譯器 能夠輸出更小的編譯碼卻不會影響到效能。

ThumbEE 所提供的新功能,包括在每次存取指令時自動檢查是否有無效指標,以及一種可以執行陣列範圍檢查的指令,並能夠分支到分類器(handlers),其包含一小部份經常呼叫的編碼,通常用於高階語言功能的實作,例如對一個新物件做內存配置。

NEON

進階 SIMD 延伸集,業界稱為NEON技術,它是一個結合 64 和 128 bit 的 SIMD(Single Instruction Multiple Data 單指令多重數據)指令集,其針對多媒體和訊號處理程式具備標準化加速的能力。NEON 可以在 10 MHz 的 CPU 上執行 MP3 音效解碼,且可以執行 13 MHz 頻率以下的 GSM AMR (Adaptive Multi-Rate) 語音編碼。NEON具有一組廣泛的指令集、各自的寄存器陣列,以及獨立執行的硬件。NEON 支援 8-, 16-, 32- 和 64-bit 的整數及單精度浮點數據,並以 SIMD 的方式運算,執行圖形和遊戲處理中關於語音/視訊的部分。SIMD 在 向量超級處理機 中是個決定性的要素,它具備同時多項處理功能。在 NEON 技術中,SIMD 最高可支援到同時 16 個運算。

VFP

VFP 是在協同處理器針對ARM架構的衍生技術。它提供低成本的單精度和倍精度浮點運算能力,並完全相容於ANSI/IEEE Std 754-1985 二進制浮點算數標準。VFP 提供大多數適用於浮點運算的應用,例如PDA、智慧手機、語音壓縮與解壓、3D圖像以及數位音效、打印機、機上盒,和汽車應用等。VFP 架構也支援 SIMD(單指令多重數據)平行化的短向量指令執行。這在圖像和訊號處理等應用上,非常有助於降低編碼大小並增加輸出效率。

在ARM-based處理器中,其他可見的浮點、或 SIMD 的協同處理器還包括了 FPA, FPE, iwMMXt。他們提供類似 VFP 的功能但在opcode層面上來說並不具有相容性。

ARM 公司本身並不靠自有的設計來製造或出售 CPU ,而是將處理器架構授權給有興趣的廠家。ARM 提供了多樣的授權條款,包括售價與散播性等項目。對於授權方來說,ARM 提供了 ARM 內核的整合硬件敘述,包含完整的軟件開發工具(編譯器、debugger、SDK),以及針對內含 ARM CPU 硅芯片的銷售權。對於無晶圓廠的授權方來說,其希望能將 ARM 內核整合到他們自行研發的芯片設計中,通常就僅針對取得一份生產就緒的知識產權內核(IP Core)認證。對這些客戶來說,ARM 會釋出所選的 ARM 核心的版圖,連同抽象模擬模型和測試程式,以協助設計整合和驗證。需求更多的客戶,包括整合元件製造商(IDM)和晶圓廠家,就選擇可合成的RTL(寄存器傳輸級,如 Verilog)形式來取得處理器的知識產權(IP)。藉著可整合的 RTL,客戶就有能力能進行架構上的最佳化與加強。這個方式能讓設計者完成額外的設計目標(如高震盪頻率、低能量耗損、指令集延伸等)而不會受限於無法更動的電路圖。雖然 ARM 並不授予授權方再次出售 ARM 架構本身,但授權方可以任意地出售製品(如芯片元件、評估板、完整系統等)。商用晶圓廠是特殊例子,因為他們不僅授予能出售包含 ARM 內核的硅晶成品,對其它客戶來講,他們通常也保留重製 ARM 內核的權利。

就像大多數 IP 出售方,ARM 依照使用價值來決定 IP 的售價。在架構上而言,更低效能的 ARM 內核比更高效能的內核擁有較低的授權費。以硅芯片實作而言,一顆可整合的內核要比一顆硬件宏(黑箱)內核要來得貴。更復雜的價位問題來講,持有 ARM 授權的商用晶圓廠(例如韓國三星和日本富士通)可以提供更低的授權價格給他們的晶圓廠客戶。透過晶圓廠自有的設計技術,客戶可以更低或是免費的ARM預付授權費來取得 ARM 內核。相較於不具備自有設計技術的專門半導體晶圓廠(如臺積電和聯電),富士通/三星對每片晶圓多收取了兩至三倍的費用。對中少量的應用而言,具備設計部門的晶圓廠提供較低的整體價格(透過授權費用的補助)。對於量產而言,由於長期的成本縮減可藉由更低的晶圓價格,減少ARM的NRE成本,使得專門的晶圓廠也成了一個更好的選擇。

許多半導體公司持有 ARM 授權:Atmel、Broadcom、Cirrus Logic、Freescale(於2004從摩托羅拉公司獨立出來)、富士通、英特爾(藉由和Digital的控訴調停)、IBM,英飛凌科技,任天堂,恩智浦半導體(於2006年從飛利浦獨立出來)、OKI電氣工業,三星電子,Sharp,STMicroelectronics,德州儀器 和 VLSI等許多這些公司均擁有各個不同形式的ARM授權。雖然ARM的授權項目由保密合約所涵蓋,在智慧財產權工業,ARM是廣為人知最昂貴的CPU內核之一。單一的客戶產品包含一個基本的 ARM 內核可能就需索取一次高達美金20萬的授權費用。而若是牽涉到大量架構上修改,則費用就可能超過千萬美元。

目前也有其他很多架構,如X86,powerPC,MIPS,RISC-V,等。現在華為海思用的最後一種,龍芯用的RISC指令集,類似MIPS,你可以看我另外一篇有專門介紹。看發展,RISC-V近幾年興起,估計會大有可為。





ARM架構,曾稱進階精簡指令集機器(Advanced RISC Machine)更早稱作Acorn RISC Machine,是一個32位精簡指令集(RISC)處理器架構。還有基於ARM設計的派生產品,重要產品包括Marvell的XScale架構和德州儀器的OMAP系列。

ARM家族佔比所有32位嵌入式處理器的75%,成為佔全世界最多數的32位架構。

ARM處理器廣泛使用在嵌入式系統設計,低耗電節能,非常適用移動通訊領域。消費性電子產品,例如可攜式裝置(PDA、移動電話、多媒體播放器、掌上型電子遊戲,和計算機),電腦外設(硬盤、桌上型路由器),甚至導彈的彈載計算機等軍用設施。

ARM架構包含了下述RISC特性:

讀取/儲存 架構

不支援地址不對齊內存存取(ARMv6內核現已支持)

正交指令集(任意存取指令可以任意的尋址方式存取數據Orthogonal instruction set)

大量的16 × 32-bit 寄存器陣列(register file)

固定的32 bits 操作碼(opcode)長度,降低編碼數量所產生的耗費,減輕解碼和流水線化的負擔。

大多均為一個CPU週期執行。

為了補強這種簡單的設計方式,相較於同時期的處理器如Intel 80286和Motorola 68020,還多加了一些特殊設計:

大部分指令可以條件式地執行,降低在分支時產生的負重,彌補分支預測器(branch predictor)的不足。

算數指令只會在要求時更改條件編碼(condition code)

32-bit筒型位移器(barrel shifter)可用來執行大部分的算數指令和尋址計算而不會損失效能

強大的索引尋址模式(addressing mode)

精簡但快速的雙優先級中斷子系統,具有可切換的暫存器組

有個附加在ARM設計中好玩的東西,就是使用一個4-bit 條件編碼 在每個指令前頭,表示每支指令的執行是否為有條件式的

這大大的減低了在內存存取指令時用到的編碼位,換句話說,它避免在對小型敘述如if做分支指令。有個標準的範例引用歐幾里得的最大公因子算法:

在C編程語言中,循環為:

int gcd (int i, int j)

{

while (i != j)

if (i > j)

i -= j;

else

j -= i;

return i;

}

在ARM 彙編語言中,循環為:

loop CMP Ri, Rj ; 設定條件為 "NE"(不等於) if (i != j)

; "GT"(大於) if (i > j),

; or "LT"(小於) if (i < j)

SUBGT Ri, Ri, Rj ; 若 "GT"(大於), i = i-j;

SUBLT Rj, Rj, Ri ; 若 "LT"(小於), j = j-i;

BNE loop ; 若 "NE"(不等於),則繼續迴圈

這避開了then和else子句之間的分支。

另一項指令集的特色是,能將位移(shift)和迴轉(rotate)等功能併成"資料處理"型的指令(算數、邏輯、和暫存器之間的搬移),因此舉例來說,一個C語言的敘述

a += (j << 2);

在ARM之下,可簡化成只需一個word和一個cycle即可完成的指令

ADD Ra, Ra, Rj, LSL #2

這結果可讓一般的ARM程式變得更加緊密,而不需經常使用內存存取,流水線也可以更有效地使用。即使在ARM以一般認定為慢速的速度下執行,與更復雜的CPU設計相比它仍能執行得不錯。

ARM處理器還有一些在其他RISC的架構所不常見到的特色,例如PC-相對尋址(的確在ARM上PC為16個暫存器的其中一個)以及 前遞加或後遞加的尋址模式。

另外一些注意事項是 ARM 處理器會隨著時間,不斷地增加它的指令集。某些早期的 ARM 處理器(比ARM7TDMI更早),譬如可能並未具備指令可以讀取兩 Bytes 的數量,因此,嚴格來講,對這些處理器產生程式碼時,就不可能處理如 C 語言物件中使用 "volatile short" 的資料型態。

ARM7 和大多數較早的設計具備三階段的流水線化(Pipeline):提取指令、解碼,並執行。較高效能的設計,如 ARM9,則有五階段的流水線化。提高效能的額外方式,包含一顆較快的加法器,和更廣的分支預測邏輯線路。

這個架構使用“協處理器”提供一種非侵入式的方法來延伸指令集,可透過軟件下 MCR、MRC、MRRC和MCRR 等指令來對協處理器尋址。協處理器空間邏輯上通常分成16個協處理器,編號分別從 0 至 15 ,而第15號協處理器(CP15)是保留用作某些常用的控制功能,像是使用高速緩存和記憶管理單元運算(若包含於處理器時)。

在 ARM 架構的機器中,周邊裝置連接處理器的方式,通常透過將裝置的實體暫存器對應到 ARM 的內存空間、協處理器空間,或是連接到另外依序接上處理器的裝置(如總線)。協處理器的存取延遲較低,所以有些周邊裝置(例如 XScale 中斷控制器)會設計成可透過不同方式存取(透過內存和協處理器)。

Thumb

較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式執行指令均耗用4位的情形有關。在Thumb模式下,較小的opcode有更少的功能性。例如,只有分支可以是條件式的,且許多opcode無法存取所有CPU的暫存器。然而,較短的opcode提供整體更佳的編碼密度(注:意指程式碼在內存中佔的空間),即使有些運算需要更多的指令。特別在內存埠或總線寬度限制在32 以下的情形時,更短的Thumb opcode能更有效地使用有限的內存帶寬,因而提供比32位程式碼更佳的效能。典型的嵌入式硬件僅具有較小的32-bit datapath尋址範圍以及其他更窄的16 bits尋址(例如Game Boy Advance)。在這種情形下,通常可行的方案是編譯成 Thumb 程式碼,並自行最佳化一些使用(非Thumb)32位指令集的CPU相關程式區,因而能將它們置入受限的32-bit總線寬度的內存中。

首顆具備 Thumb 技術的處理器是 ARM7TDMI。所有 ARM9 和後來的家族,包括 XScale 都納入了 Thumb 技術。

Jazelle

ARM 還開發出一項技術,Jazelle DBX (Direct Bytecode eXecution),允許它們在某些架構的硬件上加速執行Java bytecode,就如其他執行模式般,當呼叫一些無法支援bytecodes的特殊軟件時,能提供某些bytecodes的加速執行。它能在現存的ARM與Thumb模式之間互相執行。

首顆具備Jazelle技術的處理器是ARM926EJ-S:Jazelle以一個英文字母'J'標示於CPU名稱中。它用來讓手機制造商能夠加速執行Java ME的遊戲和應用程式,也因此促使了這項技術不斷地開發。

Thumb-2

Thumb-2 技術首見於 ARM1156 核心 ,並於2003年發表。Thumb-2 擴充了受限的 16-bit Thumb 指令集,以額外的 32-bit 指令讓指令集的使用更廣泛。因此 Thumb-2 的預期目標是要達到近乎 Thumb 的編碼密度,但能表現出近乎 ARM 指令集在 32-bit 內存下的效能。

Thumb-2 至今也從 ARM 和 Thumb 指令集中派生出多種指令,包含位欄(bit-field)操作、分支建表(table branches),和條件執行等功能。

ThumbEE

ThumbEE,也就是所謂的Thumb-2EE,業界稱為Jazelle RCT技術,於2005年發表,首見於 Cortex-A8 處理器。ThumbEE 提供從 Thumb-2 而來的一些擴充性,在所處的執行環境(Execution Environment)下,使得指令集能特別適用於執行階段(Runtime)的編碼產生(例如即時編譯)。Thumb-2EE 是專為一些語言如 Limbo、Java、C#、Perl 和 Python,並能讓 即時編譯器 能夠輸出更小的編譯碼卻不會影響到效能。

ThumbEE 所提供的新功能,包括在每次存取指令時自動檢查是否有無效指標,以及一種可以執行陣列範圍檢查的指令,並能夠分支到分類器(handlers),其包含一小部份經常呼叫的編碼,通常用於高階語言功能的實作,例如對一個新物件做內存配置。

NEON

進階 SIMD 延伸集,業界稱為NEON技術,它是一個結合 64 和 128 bit 的 SIMD(Single Instruction Multiple Data 單指令多重數據)指令集,其針對多媒體和訊號處理程式具備標準化加速的能力。NEON 可以在 10 MHz 的 CPU 上執行 MP3 音效解碼,且可以執行 13 MHz 頻率以下的 GSM AMR (Adaptive Multi-Rate) 語音編碼。NEON具有一組廣泛的指令集、各自的寄存器陣列,以及獨立執行的硬件。NEON 支援 8-, 16-, 32- 和 64-bit 的整數及單精度浮點數據,並以 SIMD 的方式運算,執行圖形和遊戲處理中關於語音/視訊的部分。SIMD 在 向量超級處理機 中是個決定性的要素,它具備同時多項處理功能。在 NEON 技術中,SIMD 最高可支援到同時 16 個運算。

VFP

VFP 是在協同處理器針對ARM架構的衍生技術。它提供低成本的單精度和倍精度浮點運算能力,並完全相容於ANSI/IEEE Std 754-1985 二進制浮點算數標準。VFP 提供大多數適用於浮點運算的應用,例如PDA、智慧手機、語音壓縮與解壓、3D圖像以及數位音效、打印機、機上盒,和汽車應用等。VFP 架構也支援 SIMD(單指令多重數據)平行化的短向量指令執行。這在圖像和訊號處理等應用上,非常有助於降低編碼大小並增加輸出效率。

在ARM-based處理器中,其他可見的浮點、或 SIMD 的協同處理器還包括了 FPA, FPE, iwMMXt。他們提供類似 VFP 的功能但在opcode層面上來說並不具有相容性。

ARM 公司本身並不靠自有的設計來製造或出售 CPU ,而是將處理器架構授權給有興趣的廠家。ARM 提供了多樣的授權條款,包括售價與散播性等項目。對於授權方來說,ARM 提供了 ARM 內核的整合硬件敘述,包含完整的軟件開發工具(編譯器、debugger、SDK),以及針對內含 ARM CPU 硅芯片的銷售權。對於無晶圓廠的授權方來說,其希望能將 ARM 內核整合到他們自行研發的芯片設計中,通常就僅針對取得一份生產就緒的知識產權內核(IP Core)認證。對這些客戶來說,ARM 會釋出所選的 ARM 核心的版圖,連同抽象模擬模型和測試程式,以協助設計整合和驗證。需求更多的客戶,包括整合元件製造商(IDM)和晶圓廠家,就選擇可合成的RTL(寄存器傳輸級,如 Verilog)形式來取得處理器的知識產權(IP)。藉著可整合的 RTL,客戶就有能力能進行架構上的最佳化與加強。這個方式能讓設計者完成額外的設計目標(如高震盪頻率、低能量耗損、指令集延伸等)而不會受限於無法更動的電路圖。雖然 ARM 並不授予授權方再次出售 ARM 架構本身,但授權方可以任意地出售製品(如芯片元件、評估板、完整系統等)。商用晶圓廠是特殊例子,因為他們不僅授予能出售包含 ARM 內核的硅晶成品,對其它客戶來講,他們通常也保留重製 ARM 內核的權利。

就像大多數 IP 出售方,ARM 依照使用價值來決定 IP 的售價。在架構上而言,更低效能的 ARM 內核比更高效能的內核擁有較低的授權費。以硅芯片實作而言,一顆可整合的內核要比一顆硬件宏(黑箱)內核要來得貴。更復雜的價位問題來講,持有 ARM 授權的商用晶圓廠(例如韓國三星和日本富士通)可以提供更低的授權價格給他們的晶圓廠客戶。透過晶圓廠自有的設計技術,客戶可以更低或是免費的ARM預付授權費來取得 ARM 內核。相較於不具備自有設計技術的專門半導體晶圓廠(如臺積電和聯電),富士通/三星對每片晶圓多收取了兩至三倍的費用。對中少量的應用而言,具備設計部門的晶圓廠提供較低的整體價格(透過授權費用的補助)。對於量產而言,由於長期的成本縮減可藉由更低的晶圓價格,減少ARM的NRE成本,使得專門的晶圓廠也成了一個更好的選擇。

許多半導體公司持有 ARM 授權:Atmel、Broadcom、Cirrus Logic、Freescale(於2004從摩托羅拉公司獨立出來)、富士通、英特爾(藉由和Digital的控訴調停)、IBM,英飛凌科技,任天堂,恩智浦半導體(於2006年從飛利浦獨立出來)、OKI電氣工業,三星電子,Sharp,STMicroelectronics,德州儀器 和 VLSI等許多這些公司均擁有各個不同形式的ARM授權。雖然ARM的授權項目由保密合約所涵蓋,在智慧財產權工業,ARM是廣為人知最昂貴的CPU內核之一。單一的客戶產品包含一個基本的 ARM 內核可能就需索取一次高達美金20萬的授權費用。而若是牽涉到大量架構上修改,則費用就可能超過千萬美元。

目前也有其他很多架構,如X86,powerPC,MIPS,RISC-V,等。現在華為海思用的最後一種,龍芯用的RISC指令集,類似MIPS,你可以看我另外一篇有專門介紹。看發展,RISC-V近幾年興起,估計會大有可為。






ARM架構,曾稱進階精簡指令集機器(Advanced RISC Machine)更早稱作Acorn RISC Machine,是一個32位精簡指令集(RISC)處理器架構。還有基於ARM設計的派生產品,重要產品包括Marvell的XScale架構和德州儀器的OMAP系列。

ARM家族佔比所有32位嵌入式處理器的75%,成為佔全世界最多數的32位架構。

ARM處理器廣泛使用在嵌入式系統設計,低耗電節能,非常適用移動通訊領域。消費性電子產品,例如可攜式裝置(PDA、移動電話、多媒體播放器、掌上型電子遊戲,和計算機),電腦外設(硬盤、桌上型路由器),甚至導彈的彈載計算機等軍用設施。

ARM架構包含了下述RISC特性:

讀取/儲存 架構

不支援地址不對齊內存存取(ARMv6內核現已支持)

正交指令集(任意存取指令可以任意的尋址方式存取數據Orthogonal instruction set)

大量的16 × 32-bit 寄存器陣列(register file)

固定的32 bits 操作碼(opcode)長度,降低編碼數量所產生的耗費,減輕解碼和流水線化的負擔。

大多均為一個CPU週期執行。

為了補強這種簡單的設計方式,相較於同時期的處理器如Intel 80286和Motorola 68020,還多加了一些特殊設計:

大部分指令可以條件式地執行,降低在分支時產生的負重,彌補分支預測器(branch predictor)的不足。

算數指令只會在要求時更改條件編碼(condition code)

32-bit筒型位移器(barrel shifter)可用來執行大部分的算數指令和尋址計算而不會損失效能

強大的索引尋址模式(addressing mode)

精簡但快速的雙優先級中斷子系統,具有可切換的暫存器組

有個附加在ARM設計中好玩的東西,就是使用一個4-bit 條件編碼 在每個指令前頭,表示每支指令的執行是否為有條件式的

這大大的減低了在內存存取指令時用到的編碼位,換句話說,它避免在對小型敘述如if做分支指令。有個標準的範例引用歐幾里得的最大公因子算法:

在C編程語言中,循環為:

int gcd (int i, int j)

{

while (i != j)

if (i > j)

i -= j;

else

j -= i;

return i;

}

在ARM 彙編語言中,循環為:

loop CMP Ri, Rj ; 設定條件為 "NE"(不等於) if (i != j)

; "GT"(大於) if (i > j),

; or "LT"(小於) if (i < j)

SUBGT Ri, Ri, Rj ; 若 "GT"(大於), i = i-j;

SUBLT Rj, Rj, Ri ; 若 "LT"(小於), j = j-i;

BNE loop ; 若 "NE"(不等於),則繼續迴圈

這避開了then和else子句之間的分支。

另一項指令集的特色是,能將位移(shift)和迴轉(rotate)等功能併成"資料處理"型的指令(算數、邏輯、和暫存器之間的搬移),因此舉例來說,一個C語言的敘述

a += (j << 2);

在ARM之下,可簡化成只需一個word和一個cycle即可完成的指令

ADD Ra, Ra, Rj, LSL #2

這結果可讓一般的ARM程式變得更加緊密,而不需經常使用內存存取,流水線也可以更有效地使用。即使在ARM以一般認定為慢速的速度下執行,與更復雜的CPU設計相比它仍能執行得不錯。

ARM處理器還有一些在其他RISC的架構所不常見到的特色,例如PC-相對尋址(的確在ARM上PC為16個暫存器的其中一個)以及 前遞加或後遞加的尋址模式。

另外一些注意事項是 ARM 處理器會隨著時間,不斷地增加它的指令集。某些早期的 ARM 處理器(比ARM7TDMI更早),譬如可能並未具備指令可以讀取兩 Bytes 的數量,因此,嚴格來講,對這些處理器產生程式碼時,就不可能處理如 C 語言物件中使用 "volatile short" 的資料型態。

ARM7 和大多數較早的設計具備三階段的流水線化(Pipeline):提取指令、解碼,並執行。較高效能的設計,如 ARM9,則有五階段的流水線化。提高效能的額外方式,包含一顆較快的加法器,和更廣的分支預測邏輯線路。

這個架構使用“協處理器”提供一種非侵入式的方法來延伸指令集,可透過軟件下 MCR、MRC、MRRC和MCRR 等指令來對協處理器尋址。協處理器空間邏輯上通常分成16個協處理器,編號分別從 0 至 15 ,而第15號協處理器(CP15)是保留用作某些常用的控制功能,像是使用高速緩存和記憶管理單元運算(若包含於處理器時)。

在 ARM 架構的機器中,周邊裝置連接處理器的方式,通常透過將裝置的實體暫存器對應到 ARM 的內存空間、協處理器空間,或是連接到另外依序接上處理器的裝置(如總線)。協處理器的存取延遲較低,所以有些周邊裝置(例如 XScale 中斷控制器)會設計成可透過不同方式存取(透過內存和協處理器)。

Thumb

較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式執行指令均耗用4位的情形有關。在Thumb模式下,較小的opcode有更少的功能性。例如,只有分支可以是條件式的,且許多opcode無法存取所有CPU的暫存器。然而,較短的opcode提供整體更佳的編碼密度(注:意指程式碼在內存中佔的空間),即使有些運算需要更多的指令。特別在內存埠或總線寬度限制在32 以下的情形時,更短的Thumb opcode能更有效地使用有限的內存帶寬,因而提供比32位程式碼更佳的效能。典型的嵌入式硬件僅具有較小的32-bit datapath尋址範圍以及其他更窄的16 bits尋址(例如Game Boy Advance)。在這種情形下,通常可行的方案是編譯成 Thumb 程式碼,並自行最佳化一些使用(非Thumb)32位指令集的CPU相關程式區,因而能將它們置入受限的32-bit總線寬度的內存中。

首顆具備 Thumb 技術的處理器是 ARM7TDMI。所有 ARM9 和後來的家族,包括 XScale 都納入了 Thumb 技術。

Jazelle

ARM 還開發出一項技術,Jazelle DBX (Direct Bytecode eXecution),允許它們在某些架構的硬件上加速執行Java bytecode,就如其他執行模式般,當呼叫一些無法支援bytecodes的特殊軟件時,能提供某些bytecodes的加速執行。它能在現存的ARM與Thumb模式之間互相執行。

首顆具備Jazelle技術的處理器是ARM926EJ-S:Jazelle以一個英文字母'J'標示於CPU名稱中。它用來讓手機制造商能夠加速執行Java ME的遊戲和應用程式,也因此促使了這項技術不斷地開發。

Thumb-2

Thumb-2 技術首見於 ARM1156 核心 ,並於2003年發表。Thumb-2 擴充了受限的 16-bit Thumb 指令集,以額外的 32-bit 指令讓指令集的使用更廣泛。因此 Thumb-2 的預期目標是要達到近乎 Thumb 的編碼密度,但能表現出近乎 ARM 指令集在 32-bit 內存下的效能。

Thumb-2 至今也從 ARM 和 Thumb 指令集中派生出多種指令,包含位欄(bit-field)操作、分支建表(table branches),和條件執行等功能。

ThumbEE

ThumbEE,也就是所謂的Thumb-2EE,業界稱為Jazelle RCT技術,於2005年發表,首見於 Cortex-A8 處理器。ThumbEE 提供從 Thumb-2 而來的一些擴充性,在所處的執行環境(Execution Environment)下,使得指令集能特別適用於執行階段(Runtime)的編碼產生(例如即時編譯)。Thumb-2EE 是專為一些語言如 Limbo、Java、C#、Perl 和 Python,並能讓 即時編譯器 能夠輸出更小的編譯碼卻不會影響到效能。

ThumbEE 所提供的新功能,包括在每次存取指令時自動檢查是否有無效指標,以及一種可以執行陣列範圍檢查的指令,並能夠分支到分類器(handlers),其包含一小部份經常呼叫的編碼,通常用於高階語言功能的實作,例如對一個新物件做內存配置。

NEON

進階 SIMD 延伸集,業界稱為NEON技術,它是一個結合 64 和 128 bit 的 SIMD(Single Instruction Multiple Data 單指令多重數據)指令集,其針對多媒體和訊號處理程式具備標準化加速的能力。NEON 可以在 10 MHz 的 CPU 上執行 MP3 音效解碼,且可以執行 13 MHz 頻率以下的 GSM AMR (Adaptive Multi-Rate) 語音編碼。NEON具有一組廣泛的指令集、各自的寄存器陣列,以及獨立執行的硬件。NEON 支援 8-, 16-, 32- 和 64-bit 的整數及單精度浮點數據,並以 SIMD 的方式運算,執行圖形和遊戲處理中關於語音/視訊的部分。SIMD 在 向量超級處理機 中是個決定性的要素,它具備同時多項處理功能。在 NEON 技術中,SIMD 最高可支援到同時 16 個運算。

VFP

VFP 是在協同處理器針對ARM架構的衍生技術。它提供低成本的單精度和倍精度浮點運算能力,並完全相容於ANSI/IEEE Std 754-1985 二進制浮點算數標準。VFP 提供大多數適用於浮點運算的應用,例如PDA、智慧手機、語音壓縮與解壓、3D圖像以及數位音效、打印機、機上盒,和汽車應用等。VFP 架構也支援 SIMD(單指令多重數據)平行化的短向量指令執行。這在圖像和訊號處理等應用上,非常有助於降低編碼大小並增加輸出效率。

在ARM-based處理器中,其他可見的浮點、或 SIMD 的協同處理器還包括了 FPA, FPE, iwMMXt。他們提供類似 VFP 的功能但在opcode層面上來說並不具有相容性。

ARM 公司本身並不靠自有的設計來製造或出售 CPU ,而是將處理器架構授權給有興趣的廠家。ARM 提供了多樣的授權條款,包括售價與散播性等項目。對於授權方來說,ARM 提供了 ARM 內核的整合硬件敘述,包含完整的軟件開發工具(編譯器、debugger、SDK),以及針對內含 ARM CPU 硅芯片的銷售權。對於無晶圓廠的授權方來說,其希望能將 ARM 內核整合到他們自行研發的芯片設計中,通常就僅針對取得一份生產就緒的知識產權內核(IP Core)認證。對這些客戶來說,ARM 會釋出所選的 ARM 核心的版圖,連同抽象模擬模型和測試程式,以協助設計整合和驗證。需求更多的客戶,包括整合元件製造商(IDM)和晶圓廠家,就選擇可合成的RTL(寄存器傳輸級,如 Verilog)形式來取得處理器的知識產權(IP)。藉著可整合的 RTL,客戶就有能力能進行架構上的最佳化與加強。這個方式能讓設計者完成額外的設計目標(如高震盪頻率、低能量耗損、指令集延伸等)而不會受限於無法更動的電路圖。雖然 ARM 並不授予授權方再次出售 ARM 架構本身,但授權方可以任意地出售製品(如芯片元件、評估板、完整系統等)。商用晶圓廠是特殊例子,因為他們不僅授予能出售包含 ARM 內核的硅晶成品,對其它客戶來講,他們通常也保留重製 ARM 內核的權利。

就像大多數 IP 出售方,ARM 依照使用價值來決定 IP 的售價。在架構上而言,更低效能的 ARM 內核比更高效能的內核擁有較低的授權費。以硅芯片實作而言,一顆可整合的內核要比一顆硬件宏(黑箱)內核要來得貴。更復雜的價位問題來講,持有 ARM 授權的商用晶圓廠(例如韓國三星和日本富士通)可以提供更低的授權價格給他們的晶圓廠客戶。透過晶圓廠自有的設計技術,客戶可以更低或是免費的ARM預付授權費來取得 ARM 內核。相較於不具備自有設計技術的專門半導體晶圓廠(如臺積電和聯電),富士通/三星對每片晶圓多收取了兩至三倍的費用。對中少量的應用而言,具備設計部門的晶圓廠提供較低的整體價格(透過授權費用的補助)。對於量產而言,由於長期的成本縮減可藉由更低的晶圓價格,減少ARM的NRE成本,使得專門的晶圓廠也成了一個更好的選擇。

許多半導體公司持有 ARM 授權:Atmel、Broadcom、Cirrus Logic、Freescale(於2004從摩托羅拉公司獨立出來)、富士通、英特爾(藉由和Digital的控訴調停)、IBM,英飛凌科技,任天堂,恩智浦半導體(於2006年從飛利浦獨立出來)、OKI電氣工業,三星電子,Sharp,STMicroelectronics,德州儀器 和 VLSI等許多這些公司均擁有各個不同形式的ARM授權。雖然ARM的授權項目由保密合約所涵蓋,在智慧財產權工業,ARM是廣為人知最昂貴的CPU內核之一。單一的客戶產品包含一個基本的 ARM 內核可能就需索取一次高達美金20萬的授權費用。而若是牽涉到大量架構上修改,則費用就可能超過千萬美元。

目前也有其他很多架構,如X86,powerPC,MIPS,RISC-V,等。現在華為海思用的最後一種,龍芯用的RISC指令集,類似MIPS,你可以看我另外一篇有專門介紹。看發展,RISC-V近幾年興起,估計會大有可為。






平286578216
2019-06-07

難道離開哪一個人或哪個公司地球就不會轉嗎?中國市埸這麼大由國家家政府主導計劃經濟建立一個在中國及友好國家範圍內建立一套類似,ARM架構不行嗎?近20億人口的大市埸!偏要相信西方的ARM,只要好用易懂就行!因為美帝西方逼著我們國家單幹!相信華為公司好樣的!說不定幾年後,咱設計的架構生態即便宜又市場大,西方又要向我們國家標準靠攏!

全利88
2019-06-08

技術細節我也不懂,給你說二個比喻吧。

你去四兒子店買車了,出門才發現,有車沒公路?你該怎麼辦?請專業搬家公司,把車搬回家,放家裡看吧。

第二個例子,可能更貼切。

天空很自由吧?天高任鳥飛……

要是沒空管……有幾個敢飛上天的?

ARM就是空管!

光明右使8787
2019-06-08

原則上安卓APP能運行在任何一種芯片上,只要移植安卓環境到目標芯片上即可。但這是理論上的,實際上不同芯片指令集有差異,如果APP越過JVM運行平臺直接調用了底層的一些資源,那這個APP只能在指定芯片上編譯運行,一般APP都只適配了ARM,那其它芯片就有兼容性問題。

事實上能跨平臺運行的APP並不多,特別是遊戲類視頻類要用硬件加速的,幾乎都不能跨平臺運行。

所以,安卓發展到今天,其實是越來越為ARM量身定製了,早已失去了跨平臺的優勢。

X86 MIPS平臺上的安卓幾乎已經消聲匿跡。

我不是天使lala
2019-06-07

我理解的是,arm架構類似一道題的公式,然後下游企業為解過程。

你可以不用公式,那麼你自己創造公式。

可能有點不確切,而且是,題的公式,還要很多人去解,沒人用的公式,大家都不去套,那就去沒用的公式。

小學水平哈😂

相關推薦

推薦中...