## 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 杞欢鐨勫悜鍚庡吋瀹规€с€�  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鈥慉 澶勶Г鍣ㄥ睘鎬�  #### 2.2.1 ARMv8 澶勶Г鍣� Cortex鈥慉53 澶勶Г鍣� Cortex鈥慉53 澶勶Г鍣ㄦ槸涓€娆句腑妗c€佷綆鍔熻€楀鐞嗗櫒锛屽湪鍗曚釜闆嗙兢涓叿鏈変竴鍒板洓涓唴鏍革紝姣忎釜鍐呮牳閮芥湁涓€涓狶1 缂撳瓨瀛愮郴缁熴€佷竴涓彲閫夌殑闆嗘垚 GICv3/4 鎺ュ彛鍜屼竴涓彲閫夌殑 L2 缂撳瓨鎺у埗鍣ㄣ€� Cortex鈥慉53 澶勶Г鍣ㄦ槸涓€娆鹃潪甯歌妭鑳界殑澶勭悊鍣紝鑳藉鏀寔 32 浣嶅拰 64 浣嶄唬鐮併€傚畠鎻愪緵浜嗘瘮闈炲父鎴愬姛鐨� Cortex鈥慉7 澶勭悊鍣ㄦ洿楂樼殑鎬ц兘銆傚畠鑳藉閮ㄧ讲涓虹嫭绔嬬殑搴旂敤澶勭悊鍣紝鎴栧湪 big.LITTLE 閰嶇疆涓笌 Cortex鈥慉57 澶勭悊鍣ㄩ厤瀵癸紝浠ヨ幏寰楁渶浣虫€ц兘銆佸彲鎵╁睍鎬у拰鑳芥簮鏁堢巼銆�  Cortex鈥慉53 澶勭悊鍣ㄥ叿鏈変互涓嬬壒鎬э細 - 鏈夊簭鐨勫叓绾ф祦姘寸嚎銆� - 閫氳繃浣跨敤鍒嗗眰鏃堕挓闂ㄦ帶銆佺數婧愬煙鍜岄珮绾т繚鐣欐ā寮忔潵闄嶄綆鍔熻€椼€� - 閫氳繃閲嶅鎵ц璧勬簮鍜屽弻鎸囦护瑙g爜鍣ㄦ彁楂樺弻鍙戣兘鍔涖€� - 鍔熻€椾紭鍖栫殑浜岀骇缂撳瓨璁捐鍙彁渚涳浣庣殑寤惰繜骞跺湪鎬ц兘涓庢晥鐜囦箣闂村彇寰楀钩琛°€� Cortex鈥慉57 澶勭悊鍣� Cortex鈥慉57 澶勭悊鍣ㄩ潰鍚戠Щ鍔ㄥ拰浼佷笟璁$畻搴旂敤锛屽寘鎷绠楀瘑闆嗗瀷 64 浣嶅簲鐢紝渚嬪楂樼璁$畻鏈恒€佸钩鏉跨數鑴戝拰鏈嶅姟鍣ㄤ骇鍝併€傚畠鍙互涓� Cortex鈥慉53 澶勭悊鍣ㄤ竴璧蜂娇鐢ㄥ埌 ARM big.LITTLE 閰嶇疆涓紝浠ュ疄鐜板彲鎵╁睍鐨勬€ц兘鍜屾洿楂樻晥鐨勮兘婧愪娇鐢ㄣ€� Cortex鈥慉57 澶勶Г鍣ㄥ叿鏈変笌鍏朵粬澶勭悊鍣ㄧ殑楂橀€熺紦瀛樹竴鑷存€т簰鎿嶄綔鎬э紝鍖呮嫭鐢ㄤ簬 GPU 璁$畻鐨� ARM Mali鈩㈢郴鍒楀浘褰㈠铵ゅ崟鍏�(GPU)锛屽苟涓洪珮鎬ц兘浼佷笟搴旂敤绋嬪簭鎻愪緵鍙€夌殑鍙潬鎬у拰鍙墿灞曟€у姛鑳姐€傚畠鎻愪緵浜嗘瘮 ARMv7Cortex鈥慉15 澶勭悊鍣ㄦ洿楂樼殑鎬ц兘锛屽苟鍏锋湁鏇撮珮鐨勮兘鏁堟按骞炽€傚姞瀵嗘墿灞曠殑鍖呭惈灏嗗姞瀵嗙畻娉曠殑鎬ц兘鎻愰珮浜� 10 鍊嶄簬涓婁竴浠e鐞嗗櫒銆�  Cortex鈥慉57 澶勭悊鍣ㄥ畬鍏ㄥ疄鐜颁簡 ARMv8鈥慉 鏋舵瀯銆傚畠鏀寔澶氭牳鎿嶄綔锛屽湪鍗曚釜闆嗙兢涓叿鏈変竴鍒板洓鏍稿澶勶Г銆傞€氳繃 AMBA5 CHI 鎴� AMBA 4 ACE 鎶€鏈紝鍙互瀹炵幇澶氫釜涓€鑷寸殑 SMP 闆嗙兢銆傚彲閫氳繃 CoreSight 鎶€鏈繘铷堣皟璇曞拰璺熻釜銆� Cortex鈥慉57 澶勭悊鍣ㄥ叿鏈変互涓嬬壒鎬э細 - 涔卞簭锛�15+闃舵娴佹按绾裤€� - 鐪佺數鍔熻兘鍖呮嫭璺緞棰勬祴銆佹爣璁板噺灏戝拰缂撳瓨鏌ユ壘鎶戝埗銆� - 閫氳繃閲嶅鎵э▓璧勬簮澧炲姞宄板€兼寚浠ゅ悶鍚愰噺銆傚叿鏈夋湰鍦板寲瑙g爜銆�3 瀹借В鐮佸甫瀹界殑鍔熺巼浼樺寲鎸囦护瑙g爜銆� - 鎬ц兘浼樺寲鐨� L2 缂撳瓨璁捐浣块泦缇や腑鐨勫涓牳蹇冨彲浠ュ悓鏃惰闂� L2銆�