## 2. ARMv8鈥慉 鏋舵瀯鍜屽铵ゅ櫒  

ARM 鏋舵瀯鍙互杩芥函鍒� 1985 骞达紝浣嗗畠骞舵病鏈夊仠婊烇ェ鍓嶃€傜浉鍙嶏紝瀹冧粠鏃╂湡鐨� ARM 鍐呮牳寮€濮嬪ぇ瑙勬ā鍙戝睍锛屾瘡涓€姝ラ兘澧炲姞浜嗙壒鎬�
鍜屽姛鑳斤細

- ARMv4 鍙婃洿鏃╃増鏈�
  杩欎簺鏃╂湡鐨勫铵ゅ櫒浠呬娇鐢� ARM 32 浣嶆寚浠ら泦銆侫RMv4T ARMv4T 鏋舵瀯灏� Thumb 16 浣嶆寚浠ら泦娣诲姞鍒� ARM 32 浣嶆寚浠ら泦銆傝繖鏄涓€涓幏寰楀箍娉涜鍙殑鏋舵瀯銆傚畠鐢� ARM7TDMI庐鍜� ARM9TDMI庐澶勶Г鍣ㄥ疄鐜�
- ARMv5TE ARMv5TE 
  鏋舵瀯澧炲姞浜嗗 DSP 绫诲瀷鎿嶄綔鐨勬敼杩涳紝楗卞拰绠楁硶锛屼互鍙婄敤浜� ARM 鍜� Thumb 浜掗€氥€� ARM926EJ鈥慡庐瀹炵幇浜嗚繖涓灦鏋勩€�
- ARMv6 ARMv6 
  杩涜浜嗗椤瑰寮猴紝鍖呮嫭鏀寔鏈榻愮殑鍐呭瓨璁块棶銆佸鍐呭瓨鏋舵瀯鐨勯噸澶э鏀逛互鍙婂澶氬鐞嗗櫒鐨勬敮鎸併€傛澶栵紝杩樺寘鎷鍦� 32 浣嶅瘎瀛樺櫒涓殑瀛楄妭鎴栧崐瀛椾笂鎿嶄綔鐨� SIMD 鎿嶄綔鐨勪竴浜涙敮鎸併€� ARM1136JF鈥慡庐瀹炵幇浜嗚繖涓灦鏋勩€� ARMv6 鏋舵瀯杩樻彁渚涗簡涓€浜涘彲閫夋墿灞曪紝鐗瑰埆鏄� Thumb鈥�2 鍜屽畨鍏ㄦ墿灞�(TrustZone庐)銆俆humb鈥�2 灏� Thumb 鎵╁睍涓烘贩鍚堥暱搴︾殑 16 浣嶅拰 32 浣嶆寚浠ら泦銆�
- ARMv7-A ARMv7-A 
  鏋舵瀯寮哄埗瑕佹眰 Thumb鈥�2 鎵╁睍锛屽苟娣诲姞浜嗛珮绾� SIMD 鎵╁睍 (NEON)銆傚湪 ARMv7 涔嬪墠锛屾墍鏈夊唴鏍搁兘閬靛惊鍩烘湰鐩稿悓鐨勬灦鏋勬垨鍔熻兘闆嗐€備负浜嗗府鍔╄В鍐宠秺鏉ヨ秺澶氱殑铳у悓搴旂敤绋嬪簭锛孉RM 寮曞叆浜嗕竴缁勬灦鏋勯厤缃枃浠讹細
  (1)ARMv7-A
  (2)ARMv7-M
  (3)ARMv7-R



### 2.1 ARMv8-A

ARMv8鈥慉 鏋舵瀯鏄拡瀵瑰簲鐢ㄧ▼搴忛厤缃枃浠剁殑鏈€鏂颁竴浠� ARM 鏋舵瀯銆� ARMv8 杩欎釜鍚嶇О鐢ㄤ簬鎻忚堪鏁翠綋鏋舵瀯锛岀幇鍦ㄥ寘鎷� 32 浣嶆墽琛岀姸鎬佸拰 64 浣嶆墽琛岀姸鎬併€傚畠寮曞叆浜嗕娇鐢� 64 浣嶅瀵勫瓨鍣ㄦ墽琛岀殑鑳斤锛屽悓鏃朵繚鎸佷笌鐜版湁 ARMv7 杞欢鐨勫悜鍚庡吋瀹规€с€�

![image-20220314221123659](pictures/armv8_overview/image-20220314221123659.png)

ARMv8鈥慉 鏋舵瀯寮曞叆浜嗚澶氭洿鏀癸紝鍙互璁捐鍑烘€ц兘鏄剧潃鎻愰珮鐨勫鐞嗗櫒瀹炵幇锛�

- 澶х墿鐞嗗湴鍧€(Large physical address)
  杩欎娇澶勭悊鍣ㄨ兘澶熻闂秴杩� 4GB 鐨勭墿鐞嗗唴瀛樸€�
- 64 浣嶈櫄鎷熷鍧€(64-bit virtual addressing)
  杩欎娇铏氭嫙鍐呭瓨瓒呭嚭 4GB 闄愬埗銆傝繖瀵逛簬浣跨敤鍐呭瓨鏄犲皠鏂囦欢 I/O 鎴栫█鐤忓鍧€鐨勭幇浠f闈㈠拰鏈嶅姟鍣ㄨ蒋浠跺緢閲嶈銆�
- 鑷姩浜嬩欢淇″彿(Automatic event signaling)
  杩欏彲浠ュ疄鐜拌妭鑳姐€侀珮鎬ц兘鐨勮嚜鏃嬮攣
- 鏇村ぇ鐨勫瘎瀛樺櫒鏂囦欢(Larger register files)
  31 涓� 64 浣嶉€氱敤瀵勫瓨鍣ㄥ彲鎻愰珮鎬ц兘骞跺噺灏戝爢鏍堜娇鐢ㄣ€�
- 楂樻晥鐨� 64 浣嶇珛鍗崇敓鎴�(Efficient 64-bit immediate generation)
  瀵规枃瀛楁睜鐨勯渶姹傝緝灏�
- 杈冨ぇ鐨� PC 鐩稿瀵诲潃鑼冨洿(Large PC-relative addressing range)
  涓€涓� +/鈥�4GB 鐨勫鍧€鑼冨洿锛岀敤浜庡湪鍏变韩搴撳拰涓庝綅缃棤鍏崇殑鍙墽铷堟枃浠朵腑杩涜鏈夋晥鐨勬暟鎹鍧€銆�

- 棰濆鐨� 16KB 鍜� 64KB 缈昏瘧棰楃矑(Additional 16KB and 64KB translation granules)
  杩欓檷浣庝簡缈昏瘧鍚庡缂撳啿鍖�(TLB) 鏈懡涓巼鍜岄〉闈㈤亶鍘嗘繁搴︺€�
- 鏂扮殑寮傚父妯″瀷(New exception model)
  杩欓檷浣庝簡鎿嶄綔绯荤粺鍜岀铵ょ▼搴忚蒋浠剁殑澶嶆潅鎬с€�
- 楂樻晥鐨勭紦瀛樼铵ょ悊Efficient cache management)
  鐢ㄦ埛绌洪棿缂撳瓨鎿嶄綔鎻愰珮浜嗗姩鎬佷唬鐮佺敓鎴愭晥鐜囥€備娇鐢ㄦ暟鎹紦瀛橀浂鎸囦护蹇€熸竻闄ゆ暟鎹紦瀛樸€�
- 纭欢鍔犻€熷瘑鐮佸(Hardware-accelerated cryptography)
  鎻愪緵 3 鍒� 10 鍊嶆洿濂界殑杞欢鍔犲瘑鎬ц兘銆傝繖瀵逛簬灏忕矑搴﹁В瀵嗗拰鍔犲瘑闈炲父鏈夌敤锛屽洜涓哄お灏忚€屾棤娉曟湁鏁堝湴鍗歌浇鍒扮‖浠跺姞閫熷櫒锛屼緥濡� https銆�
- 鍔犺浇鈥戣幏鍙栥€佸瓨鍌ㄢ€戦噴鏀炬寚浠�(Load-Acquire, Store-Release instructions)
  涓撲负 C++11銆丆11銆丣ava 鍐呭瓨妯″瀷鑰岃璁°€傚畠浠€氳繃娑堥櫎鏄惧紡鍐呭瓨灞忛殰鎸囦护鏉ユ彁楂樼嚎绋嬪畨鍏ㄤ唬鐮佺殑鎬ц兘銆�
- NEON 鍙岀簿搴︽诞鐐归珮绾� SIMD(NEON double-precision floating-point advanced SIMD)
  杩欎娇寰� SIMD 鐭ゾ鍖栬兘澶熷簲鐢ㄤ簬鏇村箍娉涚殑绠楁硶闆嗭紝渚嬪绉戝璁$畻銆侀珮鎬ц兘璁$畻(HPC) 鍜岃秴绾ц绠楁満銆�



### 2.2 ARMv8鈥慉 澶勶Г鍣ㄥ睘鎬�  

![image-20220314222155065](pictures/armv8_overview/image-20220314222155065.png)



#### 2.2.1 ARMv8 澶勶Г鍣�  

Cortex鈥慉53 澶勶Г鍣�  

Cortex鈥慉53 澶勶Г鍣ㄦ槸涓€娆句腑妗c€佷綆鍔熻€楀鐞嗗櫒锛屽湪鍗曚釜闆嗙兢涓叿鏈変竴鍒板洓涓唴鏍革紝姣忎釜鍐呮牳閮芥湁涓€涓狶1 缂撳瓨瀛愮郴缁熴€佷竴涓彲閫夌殑闆嗘垚 GICv3/4 鎺ュ彛鍜屼竴涓彲閫夌殑 L2 缂撳瓨鎺у埗鍣ㄣ€�

Cortex鈥慉53 澶勶Г鍣ㄦ槸涓€娆鹃潪甯歌妭鑳界殑澶勭悊鍣紝鑳藉鏀寔 32 浣嶅拰 64 浣嶄唬鐮併€傚畠鎻愪緵浜嗘瘮闈炲父鎴愬姛鐨� Cortex鈥慉7 澶勭悊鍣ㄦ洿楂樼殑鎬ц兘銆傚畠鑳藉閮ㄧ讲涓虹嫭绔嬬殑搴旂敤澶勭悊鍣紝鎴栧湪 big.LITTLE 閰嶇疆涓笌 Cortex鈥慉57 澶勭悊鍣ㄩ厤瀵癸紝浠ヨ幏寰楁渶浣虫€ц兘銆佸彲鎵╁睍鎬у拰鑳芥簮鏁堢巼銆�

![image-20220314222413650](pictures/armv8_overview/image-20220314222413650.png)

Cortex鈥慉53 澶勭悊鍣ㄥ叿鏈変互涓嬬壒鎬э細

- 鏈夊簭鐨勫叓绾ф祦姘寸嚎銆�
- 閫氳繃浣跨敤鍒嗗眰鏃堕挓闂ㄦ帶銆佺數婧愬煙鍜岄珮绾т繚鐣欐ā寮忔潵闄嶄綆鍔熻€椼€�
- 閫氳繃閲嶅鎵ц璧勬簮鍜屽弻鎸囦护瑙g爜鍣ㄦ彁楂樺弻鍙戣兘鍔涖€�
- 鍔熻€椾紭鍖栫殑浜岀骇缂撳瓨璁捐鍙彁渚涳浣庣殑寤惰繜骞跺湪鎬ц兘涓庢晥鐜囦箣闂村彇寰楀钩琛°€�

Cortex鈥慉57 澶勭悊鍣�
Cortex鈥慉57 澶勭悊鍣ㄩ潰鍚戠Щ鍔ㄥ拰浼佷笟璁$畻搴旂敤锛屽寘鎷绠楀瘑闆嗗瀷 64 浣嶅簲鐢紝渚嬪楂樼璁$畻鏈恒€佸钩鏉跨數鑴戝拰鏈嶅姟鍣ㄤ骇鍝併€傚畠鍙互涓� Cortex鈥慉53 澶勭悊鍣ㄤ竴璧蜂娇鐢ㄥ埌 ARM big.LITTLE 閰嶇疆涓紝浠ュ疄鐜板彲鎵╁睍鐨勬€ц兘鍜屾洿楂樻晥鐨勮兘婧愪娇鐢ㄣ€�

Cortex鈥慉57 澶勶Г鍣ㄥ叿鏈変笌鍏朵粬澶勭悊鍣ㄧ殑楂橀€熺紦瀛樹竴鑷存€т簰鎿嶄綔鎬э紝鍖呮嫭鐢ㄤ簬 GPU 璁$畻鐨� ARM Mali鈩㈢郴鍒楀浘褰㈠铵ゅ崟鍏�(GPU)锛屽苟涓洪珮鎬ц兘浼佷笟搴旂敤绋嬪簭鎻愪緵鍙€夌殑鍙潬鎬у拰鍙墿灞曟€у姛鑳姐€傚畠鎻愪緵浜嗘瘮 ARMv7Cortex鈥慉15 澶勭悊鍣ㄦ洿楂樼殑鎬ц兘锛屽苟鍏锋湁鏇撮珮鐨勮兘鏁堟按骞炽€傚姞瀵嗘墿灞曠殑鍖呭惈灏嗗姞瀵嗙畻娉曠殑鎬ц兘鎻愰珮浜� 10 鍊嶄簬涓婁竴浠e鐞嗗櫒銆�

![image-20220314222701135](pictures/armv8_overview/image-20220314222701135.png)

Cortex鈥慉57 澶勭悊鍣ㄥ畬鍏ㄥ疄鐜颁簡 ARMv8鈥慉 鏋舵瀯銆傚畠鏀寔澶氭牳鎿嶄綔锛屽湪鍗曚釜闆嗙兢涓叿鏈変竴鍒板洓鏍稿澶勶Г銆傞€氳繃
AMBA5 CHI 鎴� AMBA 4 ACE 鎶€鏈紝鍙互瀹炵幇澶氫釜涓€鑷寸殑 SMP 闆嗙兢銆傚彲閫氳繃 CoreSight 鎶€鏈繘铷堣皟璇曞拰璺熻釜銆�

Cortex鈥慉57 澶勭悊鍣ㄥ叿鏈変互涓嬬壒鎬э細

- 涔卞簭锛�15+闃舵娴佹按绾裤€�
- 鐪佺數鍔熻兘鍖呮嫭璺緞棰勬祴銆佹爣璁板噺灏戝拰缂撳瓨鏌ユ壘鎶戝埗銆�
- 閫氳繃閲嶅鎵э▓璧勬簮澧炲姞宄板€兼寚浠ゅ悶鍚愰噺銆傚叿鏈夋湰鍦板寲瑙g爜銆�3 瀹借В鐮佸甫瀹界殑鍔熺巼浼樺寲鎸囦护瑙g爜銆�
- 鎬ц兘浼樺寲鐨� L2 缂撳瓨璁捐浣块泦缇や腑鐨勫涓牳蹇冨彲浠ュ悓鏃惰闂� L2銆�