อ่าน 47 นาที
ตระกูลสถาปัตยกรรมอาร์ม
อาร์ม (เขียนด้วยตัวพิมพ์เล็ก arm ) [ a ] คือตระกูล สถาปัตยกรรมชุดคำสั่ง RISC สำหรับ โปรเซสเซอร์คอมพิวเตอร์ บริษัท อาร์ม โฮลดิ้งส์...
ตระกูลสถาปัตยกรรมอาร์ม
| นักออกแบบ | |
|---|---|
| บิต | 32 บิต , 64 บิต |
| แนะนำ | พ.ศ. 2528 |
| ออกแบบ | RISC |
| พิมพ์ | โหลด-จัดเก็บ |
| การแตกแขนง | รหัสเงื่อนไขเปรียบเทียบ และแยกสาขา |
| เปิด | ไม่; เป็นกรรมสิทธิ์ |
| แนะนำ | 2011 |
|---|---|
| เวอร์ชั่น | ARMv8-R, ARMv8-A, ARMv8.1-A, ARMv8.2-A, ARMv8.3-A, ARMv8.4-A, ARMv8.5-A, ARMv8.6-A, ARMv8.7-A, ARMv8.8-A, ARMv8.9-A, ARMv9.0-A, ARMv9.1-A, ARMv9.2-A, ARMv9.3-A, ARMv9.4-A, ARMv9.5-A, ARMv9.6-A, ARMv9.7-A |
| การเข้ารหัส | AArch64 /A64 และAArch32 /A32 ใช้คำสั่ง 32 บิต ส่วน AArch32/T32 (Thumb-2) ใช้คำสั่งผสมระหว่าง 16 บิตและ 32 บิต[ 1 ] |
| เอนเดียนเนส | ไบ (เล็กตามค่าเริ่มต้น) |
| ส่วนขยาย | SVE , SVE2, SME , SME2, AES, SM3, SM4, SHA, CRC32, RNDR, TME; บังคับใช้ทั้งหมด: Thumb-2 , Neon , VFPv4-D16, VFPv4; ล้าสมัย: ThumbและJazelle |
| ทะเบียน | |
| อเนกประสงค์ | รีจิสเตอร์จำนวนเต็ม 31 × 64 บิต[ 1 ] |
| จุดลอยตัว | รีจิสเตอร์32 × 128 บิต[ 1 ] สำหรับสเกลาร์ FP 32 บิตและ 64 บิตหรือSIMD FP หรือจำนวนเต็ม หรือการเข้ารหัส |
| เวอร์ชั่น | ARMv9-R, ARMv9-M, ARMv8-R, ARMv8-M, ARMv7-A, ARMv7-R, ARMv7E-M, ARMv7-M |
|---|---|
| การเข้ารหัส | เป็นระบบ 32 บิต ยกเว้นส่วนขยาย Thumb-2 ที่ใช้คำสั่งผสมระหว่าง 16 บิตและ 32 บิต |
| เอนเดียนเนส | ไบ (เล็กตามค่าเริ่มต้น) |
| ส่วนขยาย | Thumb , Thumb-2 , SVE, SVE2, SME, SME2, Neon , Jazelle , AES, SM3, SM4, SHA, CRC32, RNDR, DSP, Saturated, FPv4-SP, FPv5, Helium; เลิกใช้แล้วตั้งแต่ ARMv8: ThumbและJazelle |
| ทะเบียน | |
| อเนกประสงค์ | รีจิสเตอร์จำนวนเต็ม 32 บิต จำนวน 15 ตัว รวมถึง R14 (รีจิสเตอร์เชื่อมโยง) แต่ไม่รวม R15 (PC) |
| จุดลอยตัว | รีจิสเตอร์สูงสุด 32 × 64 บิต[ 2 ] SIMD/จุดลอยตัว (ตัวเลือก) |
| เวอร์ชั่น | ARMv6, ARMv5, ARMv4T, ARMv3, ARMv2 |
|---|---|
| การเข้ารหัส | เป็นระบบ 32 บิต ยกเว้นส่วนขยาย Thumb ที่ใช้คำสั่งผสมระหว่าง 16 บิตและ 32 บิต |
| เอนเดียนเนส | Bi (เล็กเหมือนค่าเริ่มต้น) ใน ARMv3 ขึ้นไป |
| ส่วนขยาย | นิ้วโป้ง , จาเซลล์ |
| ทะเบียน | |
| อเนกประสงค์ | รีจิสเตอร์จำนวนเต็ม 32 บิต จำนวน 15 ตัว รวมถึง R14 (รีจิสเตอร์เชื่อมโยง) แต่ไม่รวม R15 (PC, การกำหนดแอดเดรส 26 บิตในรุ่นเก่า) |
| จุดลอยตัว | ไม่มี |
อาร์ม (เขียนด้วยตัวพิมพ์เล็กarm ) [ a ]คือตระกูลสถาปัตยกรรมชุดคำสั่งRISC สำหรับโปรเซสเซอร์คอมพิวเตอร์บริษัทอาร์ม โฮลดิ้งส์พัฒนาสถาปัตยกรรมชุดคำสั่งและให้สิทธิ์ใช้งานแก่บริษัทอื่นๆ ที่สร้างอุปกรณ์ทางกายภาพที่ใช้ชุดคำสั่งนั้น นอกจากนี้ยังออกแบบและให้สิทธิ์ใช้งานคอร์ที่ใช้งานสถาปัตยกรรมชุดคำสั่งเหล่านี้ ด้วย
เนื่องจากต้นทุนต่ำ การใช้พลังงานต่ำ และการสร้างความร้อนต่ำ โปรเซสเซอร์ ARM จึงมีประโยชน์สำหรับอุปกรณ์ขนาดเล็ก พกพาได้ และใช้แบตเตอรี่ เช่นสมาร์ทโฟนแล็ปท็อปและแท็บเล็ตรวมถึงระบบฝังตัว[ 3 ] [ 4 ] [ 5 ] [ 6 ]อย่างไรก็ตาม โปรเซสเซอร์ ARM ยังถูกใช้สำหรับเดสก์ท็อปและเซิร์ฟเวอร์รวมถึงFugaku ซึ่ง เป็นซูเปอร์คอมพิวเตอร์ที่เร็วที่สุดในโลกตั้งแต่ปี 2020 [ 7 ]ถึงปี 2022 ด้วยชิป ARM ที่ผลิตมากกว่า 230 พันล้านชิ้น[ 8 ] [ 9 ]ตั้งแต่ปี 2003 เป็นอย่างน้อย และมีการครองตลาดเพิ่มขึ้นทุกปี ARM จึงเป็นตระกูลสถาปัตยกรรมชุดคำสั่งที่ใช้กันอย่างแพร่หลายที่สุด[ 10 ] [ 4 ] [ 11 ] [ 12 ] [ 13 ]
สถาปัตยกรรม ARM มีหลายรุ่น รุ่นแรก ARM1 ใช้ โครงสร้างภายใน 32 บิต แต่มี พื้นที่แอดเดรส 26 บิตซึ่งจำกัดหน่วยความจำหลัก ไว้ที่ 64 MB ข้อจำกัดนี้ถูกยกเลิกในซีรี่ส์ ARMv3 ซึ่งมีพื้นที่แอดเดรส 32 บิต และรุ่นต่อ ๆ มาจนถึง ARMv7 ยังคงเป็น 32 บิต สถาปัตยกรรม ARMv8-A ที่เปิดตัวในปี 2011 ได้เพิ่มการรองรับ พื้นที่แอดเดรส 64 บิตและการคำนวณเลขคณิต 64 บิตด้วยชุดคำสั่งความยาวคงที่ 32 บิตใหม่[ 14 ] Arm Holdings ยังได้ออกชุดคำสั่งเพิ่มเติมสำหรับบทบาทต่าง ๆ เช่น ส่วนขยาย "Thumb" เพิ่มคำสั่งทั้ง 32 บิตและ 16 บิตเพื่อเพิ่มความหนาแน่นของโค้ดในขณะที่Jazelleเพิ่มคำสั่งสำหรับการจัดการไบต์โค้ด Java โดยตรง การเปลี่ยนแปลงล่าสุด ได้แก่ การเพิ่มมัลติเธรดพร้อมกัน (SMT) เพื่อปรับปรุงประสิทธิภาพหรือความทนทานต่อข้อผิดพลาด[ 15 ]
ประวัติศาสตร์
บีบีซี ไมโคร
การออกแบบที่ประสบความสำเร็จอย่างกว้างขวางครั้งแรกของ Acorn ComputersคือBBC Microซึ่งเปิดตัวในเดือนธันวาคม พ.ศ. 2524 เครื่องนี้เป็นเครื่องที่ค่อนข้างธรรมดาโดยใช้ CPU MOS Technology 6502แต่ทำงานได้เร็วกว่าเครื่องคู่แข่งอย่างApple II ประมาณสองเท่า เนื่องจากการใช้หน่วยความจำเข้าถึงแบบสุ่มไดนามิก (DRAM) ที่เร็วกว่า โดยทั่วไป DRAM ในยุคนั้นมีความเร็วประมาณ 2 MHz; Acorn ได้ทำข้อตกลงกับHitachiเพื่อจัดหาชิ้นส่วนที่มีความเร็ว 4 MHz ที่เร็วกว่า[ 16 ]
โดยทั่วไปแล้วเครื่องในยุคนั้นจะใช้หน่วยความจำร่วมกันระหว่างโปรเซสเซอร์และเฟรมบัฟเฟอร์ซึ่งทำให้โปรเซสเซอร์สามารถอัปเดตเนื้อหาของหน้าจอได้อย่างรวดเร็วโดยไม่ต้องทำการรับส่งข้อมูล (I/O) แยกต่างหาก เนื่องจากเวลาในการแสดงผลวิดีโอมีความแม่นยำสูง ฮาร์ดแวร์วิดีโอจึงต้องมีสิทธิ์เข้าถึงหน่วยความจำนั้นก่อน ด้วยความแปลกประหลาดของการออกแบบของ 6502 ทำให้ CPU ปล่อยหน่วยความจำไว้โดยไม่แตะต้องเป็นเวลาครึ่งหนึ่ง ดังนั้นด้วยการทำงานของ CPU ที่ความเร็ว 1 MHz ระบบวิดีโอจึงสามารถอ่านข้อมูลในช่วงเวลาที่ไม่ได้ใช้งานเหล่านั้น โดยใช้แบนด์วิดท์ทั้งหมด 2 MHz ของ RAM ใน BBC Micro การใช้ RAM 4 MHz ทำให้สามารถใช้เทคนิคเดียวกันได้ แต่ทำงานด้วยความเร็วเป็นสองเท่า ทำให้สามารถทำงานได้ดีกว่าเครื่องอื่นๆ ที่คล้ายกันในตลาด[ 17 ]
คอมพิวเตอร์ธุรกิจเอคอร์น
ปี 1981 ยังเป็นปีที่IBM Personal Computerเปิดตัว โดยใช้Intel 8088ซึ่งเป็น CPU 16 บิต ที่เพิ่งเปิดตัวเมื่อเทียบกับการออกแบบ 8 บิตของ 6502 ทำให้มีประสิทธิภาพโดยรวมสูงขึ้น การเปิดตัวของ IBM เปลี่ยนแปลงตลาดคอมพิวเตอร์ตั้งโต๊ะอย่างสิ้นเชิง จากเดิมที่เป็นตลาดสำหรับงานอดิเรกและการเล่นเกมที่เกิดขึ้นในช่วงห้าปีก่อนหน้า เริ่มเปลี่ยนไปเป็นเครื่องมือทางธุรกิจที่จำเป็น ซึ่งการออกแบบ 8 บิตรุ่นก่อนหน้าไม่สามารถแข่งขันได้ แม้แต่ การออกแบบ 32 บิต รุ่นใหม่ ก็เริ่มออกสู่ตลาด เช่นMotorola 68000 [ 18 ]และNational Semiconductor NS32016 [ 19 ]
Acorn เริ่มพิจารณาวิธีการแข่งขันในตลาดนี้และผลิตกระดาษดีไซน์ใหม่ชื่อAcorn Business Computerพวกเขาตั้งเป้าหมายที่จะผลิตเครื่องที่มีประสิทธิภาพมากกว่า BBC Micro ถึงสิบเท่า แต่ในราคาเท่าเดิม[ 20 ]ซึ่งจะมีประสิทธิภาพเหนือกว่าและราคาต่ำกว่าพีซี ในขณะเดียวกัน การเปิดตัวApple Lisa เมื่อไม่นานมานี้ ได้นำ แนวคิด อินเทอร์เฟซผู้ใช้แบบกราฟิก (GUI) มาสู่กลุ่มผู้ใช้ที่กว้างขึ้นและชี้ให้เห็นว่าอนาคตเป็นของเครื่องที่มี GUI [ 21 ]อย่างไรก็ตาม Lisa มีราคา 9,995 ดอลลาร์ เนื่องจากอัดแน่นไปด้วยชิปสนับสนุน หน่วยความจำจำนวนมาก และฮาร์ดดิสก์ไดรฟ์ซึ่งทั้งหมดนี้มีราคาแพงมากในขณะนั้น[ 22 ]
จากนั้นวิศวกรก็เริ่มศึกษาการออกแบบ CPU ที่มีอยู่ทั้งหมด ข้อสรุปของพวกเขาเกี่ยวกับการออกแบบ 16 บิตที่มีอยู่คือมีราคาแพงกว่ามากและยัง "ค่อนข้างแย่" [ 23 ]โดยให้ประสิทธิภาพสูงกว่าการออกแบบ BBC Micro เพียงเล็กน้อยเท่านั้น นอกจากนี้ยังมักต้องการชิปสนับสนุนจำนวนมากเพื่อใช้งานแม้ในระดับนั้น ซึ่งทำให้ต้นทุนของคอมพิวเตอร์โดยรวมสูงขึ้น ระบบเหล่านี้จึงไม่บรรลุเป้าหมายการออกแบบ[ 23 ]พวกเขายังพิจารณาการออกแบบ 32 บิตใหม่ แต่มีราคาแพงกว่าและมีปัญหาเดียวกันกับชิปสนับสนุน[ 24 ]ตามที่Sophie Wilson กล่าว โปรเซสเซอร์ทั้งหมดที่ทดสอบในเวลานั้นมีประสิทธิภาพใกล้เคียงกัน โดยมีแบนด์วิดท์ประมาณ 4 Mbit/s [ 25 ] [ b ]
เหตุการณ์สำคัญสองเหตุการณ์นำพา Acorn ไปสู่ ARM เหตุการณ์แรกคือการตีพิมพ์รายงานชุดหนึ่งจากมหาวิทยาลัยแคลิฟอร์เนีย เบิร์กลีย์ซึ่งชี้ให้เห็นว่าการออกแบบชิปที่เรียบง่ายสามารถมีประสิทธิภาพสูงมาก สูงกว่าการออกแบบ 32 บิตล่าสุดในตลาด[ 26 ]เหตุการณ์ที่สองคือการที่Steve Furberและ Sophie Wilson ไปเยี่ยมชมWestern Design Centerบริษัทที่บริหารโดยBill Menschและน้องสาวของเขา Kathryn [ 27 ]ซึ่งกลายเป็นผู้สืบทอดที่สมเหตุสมผลของทีม MOS และกำลังนำเสนอเวอร์ชันใหม่ เช่นWDC 65C02ทีม Acorn เห็นนักเรียนมัธยมปลายสร้างเลย์เอาต์ชิปบนเครื่อง Apple II ซึ่งชี้ให้เห็นว่าทุกคนสามารถทำได้[ 28 ] [ 29 ]ในทางตรงกันข้าม การเยี่ยมชมบริษัทออกแบบอื่นที่ทำงานเกี่ยวกับ CPU 32 บิตสมัยใหม่เผยให้เห็นทีมงานที่มีสมาชิกมากกว่าสิบคนซึ่งอยู่ในเวอร์ชัน H ของการออกแบบแล้ว แต่ก็ยังคงมีข้อบกพร่องอยู่[ c ]สิ่งนี้ยืนยันการตัดสินใจของพวกเขาในช่วงปลายปี 1983 ที่จะเริ่มออกแบบ CPU ของตนเอง ซึ่งก็คือ Acorn RISC Machine [ 30 ]
แนวคิดการออกแบบ
การออกแบบ RISCดั้งเดิม ของ Berkeley นั้น ในแง่หนึ่งเป็นระบบสำหรับการสอน ไม่ได้ออกแบบมาเพื่อประสิทธิภาพโดยตรง ARM ได้เพิ่มแนวคิดพื้นฐานของ RISC ที่เน้นการใช้รีจิสเตอร์และการโหลด/จัดเก็บข้อมูล โดยนำเอาข้อดีของการออกแบบ 6502 มาใช้ สิ่งสำคัญที่สุดคือความสามารถในการจัดการอินเตอร์รัปต์ ได้อย่างรวดเร็ว ซึ่งทำให้เครื่องมี ประสิทธิภาพใน การรับส่งข้อมูล ที่ดี โดยไม่ต้องใช้ฮาร์ดแวร์ภายนอกเพิ่มเติม เพื่อให้การจัดการอินเตอร์รัปต์มีประสิทธิภาพใกล้เคียงกับ 6502 การออกแบบของ ARM จึงจำกัดพื้นที่แอดเดรส ทางกายภาพ ไว้ที่ 64 MB ซึ่งต้องใช้แอดเดรส 26 บิต เนื่องจากคำสั่งมีความยาว 4 ไบต์ (32 บิต) และต้องจัดเรียงให้ตรงกับขอบเขต 4 ไบต์ ดังนั้น 2 บิตล่างของแอดเดรสคำสั่งจึงเป็นศูนย์เสมอ นั่นหมายความว่าตัวนับโปรแกรม (PC) ต้องการเพียง 24 บิตเท่านั้น ทำให้สามารถจัดเก็บร่วมกับแฟล็กโปรเซสเซอร์ 8 บิต ในรีจิสเตอร์ 32 บิตเดียวได้ นั่นหมายความว่าเมื่อได้รับการขัดจังหวะ สถานะของเครื่องทั้งหมดสามารถบันทึกได้ในการดำเนินการเดียว ในขณะที่หาก PC เป็นค่า 32 บิตเต็ม จะต้องมีการดำเนินการแยกต่างหากเพื่อจัดเก็บ PC และแฟล็กสถานะ การตัดสินใจนี้ทำให้ค่าใช้จ่ายในการขัดจังหวะลดลงครึ่งหนึ่ง[ 31 ]
การเปลี่ยนแปลงอีกอย่างหนึ่ง และเป็นหนึ่งในการเปลี่ยนแปลงที่สำคัญที่สุดในแง่ของประสิทธิภาพการใช้งานจริง คือการปรับเปลี่ยนชุดคำสั่งเพื่อใช้ประโยชน์จากโหมดเพจของ DRAMโหมดเพจที่เพิ่งเปิดตัวใหม่นี้ทำให้การเข้าถึงหน่วยความจำในครั้งต่อๆ ไปทำงานได้เร็วขึ้นเป็นสองเท่า หากหน่วยความจำเหล่านั้นอยู่ในตำแหน่งเดียวกัน หรือ "เพจ" เดียวกัน ในชิป DRAM การออกแบบของ Berkeley ไม่ได้พิจารณาโหมดเพจและถือว่าหน่วยความจำทั้งหมดเท่าเทียมกัน การออกแบบของ ARM ได้เพิ่มคำสั่งการเข้าถึงหน่วยความจำแบบเวกเตอร์พิเศษที่เรียกว่า "S-cycles" ซึ่งสามารถใช้เพื่อเติมหรือบันทึกรีจิสเตอร์หลายตัวในเพจเดียวโดยใช้โหมดเพจ ซึ่งทำให้ประสิทธิภาพของหน่วยความจำเพิ่มขึ้นเป็นสองเท่าเมื่อสามารถใช้งานได้ และมีความสำคัญอย่างยิ่งสำหรับประสิทธิภาพด้านกราฟิก[ 32 ]
การออกแบบ RISC ของเบิร์กลีย์ใช้หน้าต่างรีจิสเตอร์เพื่อลดจำนวนการบันทึกและกู้คืนรีจิสเตอร์ที่เกิดขึ้นในการเรียกใช้โปรแกรมย่อยในขณะที่การออกแบบ ARM ไม่ได้นำวิธีการนี้มาใช้
วิลสันพัฒนาชุดคำสั่ง โดยเขียนโปรแกรมจำลองโปรเซสเซอร์ในภาษา BBC BASICที่ทำงานบน BBC Micro ที่มีโปรเซสเซอร์6502 ตัวที่สอง[ 33 ] [ 34 ]สิ่งนี้ทำให้วิศวกรของ Acorn เชื่อมั่นว่าพวกเขามาถูกทางแล้ว วิลสันจึงเข้าหาซีอีโอของ Acorn คือเฮอร์มันน์ เฮาเซอร์และขอทรัพยากรเพิ่มเติม เฮาเซอร์อนุมัติและรวบรวมทีมเล็กๆ เพื่อออกแบบโปรเซสเซอร์จริงโดยอิงจากสถาปัตยกรรมชุดคำสั่งของวิลสัน[ 35 ]โครงการ Acorn RISC Machine อย่างเป็นทางการเริ่มต้นในเดือนตุลาคม พ.ศ. 2526
อาร์เอ็ม1

Acorn เลือกVLSI Technologyเป็น "พันธมิตรด้านซิลิคอน" เนื่องจากเป็นแหล่ง ROM และชิปแบบกำหนดเองสำหรับ Acorn Acorn เป็นผู้ออกแบบ และ VLSI เป็นผู้จัดวางและผลิต ตัวอย่างซิลิคอน ARM ชุดแรกทำงานได้อย่างถูกต้องเมื่อได้รับและทดสอบครั้งแรกในวันที่ 26 เมษายน พ.ศ. 2528 [ 3 ]รู้จักกันในชื่อ ARM1 เวอร์ชันเหล่านี้ทำงานที่ความเร็ว 6 MHz [ 36 ]
แอปพลิเคชันแรกของ ARM คือการใช้เป็นโปรเซสเซอร์ตัวที่สองสำหรับ BBC Micro ซึ่งช่วยในการพัฒนาซอฟต์แวร์จำลองเพื่อช่วยให้การพัฒนาชิปสนับสนุน (VIDC, IOC, MEMC) เสร็จสมบูรณ์ และเร่งความเร็วซอฟต์แวร์ CADที่ใช้ในการพัฒนา ARM2 ต่อมา วิลสันได้เขียนBBC BASIC ใหม่ด้วย ภาษาแอสเซมบลี ARM ความรู้เชิงลึกที่ได้จากการออกแบบชุดคำสั่งทำให้โค้ดมีความหนาแน่นมาก ทำให้ ARM BBC BASIC เป็นแบบทดสอบที่ดีเยี่ยมสำหรับโปรแกรมจำลอง ARM ใดๆ ก็ตาม
ระบบประเมินผล ARM ที่มี CPU ARM1 และจัดหาเป็นโปรเซสเซอร์ตัวที่สองสำหรับเครื่อง BBC Micro และ Master วางจำหน่ายตั้งแต่เดือนกรกฎาคม พ.ศ. 2529 [ 37 ]ภายใต้แบรนด์ Acorn OEM Products ให้กับนักพัฒนาและนักวิจัย[ 38 ]
โปรเซสเซอร์ตัวที่สอง A500 ซึ่งเป็นโปรเซสเซอร์ตัวที่สอง BBC Micro และ Master ที่ใช้ ARM1 เพิ่มเติม มีชิปเซ็ตสนับสนุน ARM (VIDC, IOC, MEMC) สามารถสร้างเอาต์พุตวิดีโอ[ 39 ]และทำงานได้อย่างอิสระจากโฮสต์ BBC Micro
อาร์เอ็ม2
ผลลัพธ์จากการจำลองบนบอร์ด ARM1 นำไปสู่การเปิดตัวการออกแบบ ARM2 ในช่วงปลายปี 1986 ซึ่งทำงานที่ความเร็ว 8 MHz และเวอร์ชันที่เร่งความเร็วขึ้นในช่วงต้นปี 1987 ที่ความเร็ว 10 ถึง 12 MHz [ d ]การเปลี่ยนแปลงที่สำคัญในสถาปัตยกรรมพื้นฐานคือการเพิ่มตัวคูณ Boothซึ่งก่อนหน้านี้การคูณต้องดำเนินการในซอฟต์แวร์[ 41 ]นอกจากนี้ โหมด Fast Interrupt reQuest ใหม่ หรือ FIQ ช่วยให้สามารถแทนที่รีจิสเตอร์ 8 ถึง 14 เป็นส่วนหนึ่งของการขัดจังหวะได้ ซึ่งหมายความว่าคำขอ FIQ ไม่จำเป็นต้องบันทึกรีจิสเตอร์ ทำให้การขัดจังหวะเร็วขึ้นอีก[ 42 ]
การใช้งาน ARM2 ครั้งแรกเกิดขึ้นในเครื่องพัฒนา Acorn A500 ภายใน[ 43 ]และ คอมพิวเตอร์ส่วนบุคคล Acorn Archimedesรุ่น A305, A310 และ A440 ซึ่งเปิดตัวเมื่อวันที่ 6 มิถุนายน พ.ศ. 2530
จากการทดสอบด้วย เกณฑ์มาตรฐาน Dhrystoneพบว่า ARM2 มีประสิทธิภาพมากกว่าระบบทั่วไปที่ใช้โปรเซสเซอร์ 68000 ความเร็ว 7 MHz เช่นAmigaหรือMacintosh SE ประมาณเจ็ดเท่า เร็วกว่าIntel 80386 ที่ทำงานที่ความเร็ว 16 MHz ถึงสองเท่า และมีความเร็วใกล้เคียงกับ ซูเปอร์มินิคอมพิวเตอร์แบบมัลติโปรเซสเซอร์VAX-11/784 ระบบเดียวที่เหนือกว่าคือเวิร์กสเตชันที่ใช้สถาปัตยกรรม RISC Sun SPARCและMIPS R2000 [ 44 ]นอกจากนี้ เนื่องจาก CPU ได้รับการออกแบบมาสำหรับ I/O ความเร็วสูง จึงตัดชิปสนับสนุนหลายตัวที่พบในเครื่องเหล่านี้ออกไป โดยเฉพาะอย่างยิ่ง ไม่มี ตัวควบคุม การเข้าถึงหน่วยความจำโดยตรง (DMA) เฉพาะ ซึ่งมักพบในเวิร์กสเตชัน ระบบกราฟิกก็ถูกทำให้ง่ายขึ้นโดยอิงจากสมมติฐานพื้นฐานชุดเดียวกันเกี่ยวกับหน่วยความจำและเวลา ผลลัพธ์ที่ได้คือการออกแบบที่เรียบง่ายอย่างมาก ให้ประสิทธิภาพเทียบเท่ากับเวิร์กสเตชันราคาแพง แต่มีราคาใกล้เคียงกับเดสก์ท็อปในปัจจุบัน[ 44 ]
ARM2 มีบัสข้อมูล32 บิต พื้นที่แอดเดรส 26 บิตและรีจิสเตอร์ 32 บิต จำนวน 27 ตัวซึ่งสามารถเข้าถึงได้ 16 ตัวในแต่ละครั้ง (รวมถึงพีซี ) [ 45 ] ARM2 มีจำนวนทรานซิสเตอร์เพียง 30,000 ตัว[ 46 ]เมื่อเทียบกับรุ่น 68000 ของ Motorola ที่เก่ากว่าถึง 6 ปี ซึ่งมีทรานซิสเตอร์ประมาณ 68,000 ตัว ความเรียบง่ายส่วนใหญ่มาจากการไม่มีไมโครโค้ด ซึ่งคิดเป็นประมาณหนึ่งในสี่ถึงหนึ่งในสามของทรานซิสเตอร์ในรุ่น 68000 และการไม่มี แคช (เช่นเดียวกับซีพียูส่วนใหญ่ในยุคนั้น) ความเรียบง่ายนี้ทำให้ ARM2 มีการใช้พลังงานต่ำและมีแพ็คเกจระบายความร้อนที่ง่ายกว่าเนื่องจากมีทรานซิสเตอร์ที่ใช้พลังงานน้อยลง อย่างไรก็ตาม ARM2 ให้ประสิทธิภาพที่ดีกว่าIBM PS/2 Model 50 รุ่น ปี 1987 ซึ่งในตอนแรกใช้Intel 80286ให้ประสิทธิภาพ 1.8 MIPS ที่ 10 MHz และต่อมาในปี 1987 PS/2 70 ให้ประสิทธิภาพ 2 MIPS โดยใช้Intel 386 DX ที่ 16 MHz [ 47 ] [ 48 ]
ARM3 ซึ่งเป็นรุ่นต่อมา ถูกผลิตขึ้นโดยมีแคชขนาด 4 KB ซึ่งช่วยปรับปรุงประสิทธิภาพให้ดียิ่งขึ้นไปอีก[ 49 ]บัสแอดเดรสถูกขยายเป็น 32 บิตใน ARM6 แต่รหัสโปรแกรมยังคงต้องอยู่ภายในหน่วยความจำ 64 MB แรกในโหมดความเข้ากันได้แบบ 26 บิต เนื่องจากบิตที่สงวนไว้สำหรับแฟล็กสถานะ[ 50 ]
ในปี พ.ศ. 2531 Sanyo ได้กลายเป็น แหล่งผลิตอันดับสองของโลกสำหรับ ARM2 และชิปเซ็ตที่เกี่ยวข้องภายใต้ข้อตกลงกับ VLSI Technology [ 51 ]
บริษัท แอดวานซ์ ริสซี แมชชีนส์ จำกัด – อาร์เอ็ม6

ในช่วงปลายทศวรรษ 1980 Apple ComputerและVLSI Technologyเริ่มทำงานร่วมกับ Acorn ในการพัฒนา ARM core เวอร์ชันใหม่ ในปี 1990 Acorn ได้แยกทีมออกแบบออกไปตั้งเป็นบริษัทใหม่ชื่อ Advanced RISC Machines Ltd. [ 52 ] [ 53 ] [ 54 ]ซึ่งต่อมากลายเป็น ARM Ltd. เมื่อบริษัทแม่Arm Holdings plc เข้าจดทะเบียนในตลาดหลักทรัพย์ลอนดอนและNasdaqในปี 1998 [ 55 ]ผลงานใหม่ของ Apple–ARM นี้จะพัฒนาไปเป็น ARM6 ซึ่งเปิดตัวครั้งแรกในช่วงต้นปี 1992 Apple ใช้ ARM610 ที่ใช้ ARM6 เป็นพื้นฐานสำหรับApple Newton PDA ของพวกเขา
ผู้ได้รับใบอนุญาตกลุ่มแรก
ในปี 1994 Acorn ใช้ ARM610 เป็นหน่วยประมวลผลกลาง (CPU) หลักในคอมพิวเตอร์RiscPC ของพวกเขา DECได้รับอนุญาตให้ใช้สถาปัตยกรรม ARMv4 และผลิตStrongARM [ 56 ] ที่ความเร็ว 233 MHz CPU นี้ใช้พลังงานเพียงหนึ่งวัตต์ (รุ่นใหม่กว่าใช้พลังงานน้อยกว่ามาก) งานนี้ต่อมาถูกส่งต่อให้ Intel เป็นส่วนหนึ่งของการประนีประนอมคดีความ และ Intel ใช้โอกาสนี้เพื่อเสริม กลุ่มผลิตภัณฑ์ i960 ของตน ด้วย StrongARM ต่อมา Intel ได้พัฒนาการใช้งานประสิทธิภาพสูงของตนเองชื่อXScaleซึ่งต่อมาได้ขายให้กับMarvellจำนวนทรานซิสเตอร์ของแกน ARM ยังคงเหมือนเดิมตลอดการเปลี่ยนแปลงเหล่านี้ ARM2 มีทรานซิสเตอร์ 30,000 ตัว[ 57 ]ในขณะที่ ARM6 เพิ่มขึ้นเพียง 35,000 ตัว[ 58 ]
ส่วนแบ่งการตลาด
ในปี 2548 โทรศัพท์มือถือที่ขายได้ประมาณ 98% ใช้โปรเซสเซอร์ ARM อย่างน้อยหนึ่งตัว[ 59 ]ในปี 2553 ผู้ผลิตชิปที่ใช้สถาปัตยกรรม ARM รายงานการจัดส่งโปรเซสเซอร์ ARM จำนวน 6.1 พันล้านชิ้น ซึ่งคิดเป็น 95% ของสมาร์ทโฟน 35% ของโทรทัศน์ดิจิทัลและกล่องรับสัญญาณและ 10% ของคอมพิวเตอร์พกพาในปี 2554 สถาปัตยกรรม ARM 32 บิตเป็นสถาปัตยกรรมที่ใช้กันอย่างแพร่หลายที่สุดในอุปกรณ์พกพาและเป็นสถาปัตยกรรม 32 บิตที่ได้รับความนิยมมากที่สุดในระบบฝังตัว[ 60 ]ในปี 2556 มีการผลิต 10 พันล้านชิ้น[ 61 ]และ "ชิป ARM พบได้ในอุปกรณ์พกพาเกือบ 60 เปอร์เซ็นต์ของโลก" [ 62 ]
การออกใบอนุญาต

ใบอนุญาตหลัก
ธุรกิจหลักของ Arm Holdings คือการจำหน่ายIP coreซึ่งผู้ได้รับอนุญาตจะนำไปใช้สร้างไมโครคอนโทรลเลอร์ (MCU) ซีพียูและระบบบนชิป ( SCP ) โดยใช้ core เหล่านั้นผู้ผลิตตามแบบ (OEM) จะนำ ARM core มาประกอบกับชิ้นส่วนอื่นๆ เพื่อสร้างอุปกรณ์ที่สมบูรณ์ ซึ่งโดยทั่วไปแล้วสามารถผลิตได้ในโรงงานผลิตเซมิคอนดักเตอร์ (fab) ที่มีอยู่แล้ว ด้วยต้นทุนต่ำและยังคงให้ประสิทธิภาพที่สูง การใช้งานที่ประสบความสำเร็จมากที่สุดคือARM7TDMIซึ่งมียอดขายหลายร้อยล้านชิ้นAtmelเป็นศูนย์ออกแบบบุกเบิกในระบบฝังตัวที่ใช้ ARM7TDMI
สถาปัตยกรรม ARM ที่ใช้ในสมาร์ทโฟน PDA และอุปกรณ์พกพา อื่นๆ มีตั้งแต่ ARMv5 ถึงARMv8- A
ในปี พ.ศ. 2552 ผู้ผลิตบางรายได้เปิดตัวเน็ตบุ๊กที่ใช้ซีพียูสถาปัตยกรรม ARM เพื่อแข่งขันโดยตรงกับเน็ตบุ๊กที่ใช้Intel Atom [ 63 ]
บริษัท Arm Holdings เสนอเงื่อนไขการอนุญาตใช้งานที่หลากหลาย ซึ่งแตกต่างกันทั้งในด้านต้นทุนและสิ่งที่ส่งมอบ Arm Holdings มอบคำอธิบายฮาร์ดแวร์ที่สามารถบูรณาการได้ของแกนประมวลผล ARM ให้แก่ผู้ได้รับอนุญาตทุกราย รวมถึงชุดเครื่องมือพัฒนาซอฟต์แวร์ที่สมบูรณ์ ( คอม ไพเลอร์ดีบักเกอร์ชุดพัฒนาซอฟต์แวร์ ) และสิทธิ์ในการจำหน่าย ชิป ซิลิคอน ที่ผลิตแล้ว ซึ่งมีซีพียู ARM อยู่ภายใน
แพ็คเกจ SoC ที่รวมการออกแบบหลักของ ARM ได้แก่ Nvidia Tegra สามรุ่นแรก, ตระกูล Quatro ของ CSR plc, Nova และ NovaThor ของ ST-Ericsson, MCU Precision32 ของ Silicon Labs, ผลิตภัณฑ์ OMAP ของ Texas Instruments, ผลิตภัณฑ์ Hummingbird และExynos ของ Samsung, A4 , A5และA5Xของ Apple และi.MXของNXP
ผู้ได้รับอนุญาตแบบ Fablessที่ต้องการรวมแกนประมวลผล ARM เข้ากับการออกแบบชิปของตนเอง มักสนใจเพียงแค่การซื้อแกนประมวลผลเซมิคอนดักเตอร์ที่เป็นทรัพย์สินทางปัญญา (IP) ที่พร้อมสำหรับการผลิตและได้รับการตรวจสอบแล้ว สำหรับลูกค้ากลุ่มนี้ Arm Holdings จะส่งมอบ คำอธิบาย เน็ตลิสต์ของเกตสำหรับแกนประมวลผล ARM ที่เลือก พร้อมด้วยแบบจำลองการจำลองแบบนามธรรมและโปรแกรมทดสอบเพื่อช่วยในการรวมและการตรวจสอบการออกแบบ ลูกค้าที่มีความทะเยอทะยานมากกว่า รวมถึงผู้ผลิตอุปกรณ์แบบบูรณาการ (IDM) และผู้ประกอบการโรงหล่อ เลือกที่จะซื้อ IP ของโปรเซสเซอร์ใน รูปแบบ RTL ที่สามารถสังเคราะห์ได้ ( Verilog ) ด้วย RTL ที่สามารถสังเคราะห์ได้ ลูกค้าสามารถทำการปรับแต่งและขยายระดับสถาปัตยกรรมได้ ซึ่งช่วยให้นักออกแบบบรรลุเป้าหมายการออกแบบที่แปลกใหม่ซึ่งไม่สามารถทำได้ด้วยเน็ตลิสต์ที่ไม่ได้รับการแก้ไข ( ความเร็วสัญญาณนาฬิกาสูงการใช้พลังงานต่ำมาก การขยายชุดคำสั่ง ฯลฯ) แม้ว่า Arm Holdings จะไม่ให้สิทธิ์แก่ผู้ได้รับอนุญาตในการขายต่อสถาปัตยกรรม ARM เอง แต่ผู้ได้รับอนุญาตสามารถขายผลิตภัณฑ์ที่ผลิตแล้วได้อย่างอิสระ เช่น อุปกรณ์ชิป บอร์ดประเมินผล และระบบที่สมบูรณ์โรงหล่อเชิงพาณิชย์อาจเป็นกรณีพิเศษ ไม่เพียงแต่พวกเขาจะได้รับอนุญาตให้ขายชิปซิลิคอนสำเร็จรูปที่มีแกนประมวลผล ARM เท่านั้น แต่โดยทั่วไปแล้วพวกเขายังมีสิทธิ์ในการผลิตแกนประมวลผล ARM ใหม่ให้กับลูกค้ารายอื่นอีกด้วย
บริษัท Arm Holdings กำหนดราคาทรัพย์สินทางปัญญา (IP) โดยพิจารณาจากมูลค่าที่รับรู้ได้ โดยทั่วไปแล้ว คอร์ ARM ที่มีประสิทธิภาพต่ำจะมีค่าลิขสิทธิ์ต่ำกว่าคอร์ที่มีประสิทธิภาพสูงกว่า ในแง่ของการใช้งานจริง คอร์ที่สามารถสังเคราะห์ได้จะมีต้นทุนสูงกว่าคอร์แบบมาโคร (blackbox) ที่เข้มงวด สิ่งที่ทำให้เรื่องราคามีความซับซ้อนมากขึ้นคือ โรงงานผลิตชิปที่ถือลิขสิทธิ์ ARM เช่น Samsung หรือ Fujitsu สามารถเสนอค่าลิขสิทธิ์ที่ลดลงให้กับลูกค้าได้ โดยแลกกับการได้รับคอร์ ARM ผ่านบริการออกแบบภายในของโรงงานผลิตชิป ลูกค้าสามารถลดหรือยกเลิกการจ่ายค่าลิขสิทธิ์ล่วงหน้าให้กับ ARM ได้
เมื่อเทียบกับโรงงานผลิตเซมิคอนดักเตอร์เฉพาะทาง (เช่นTSMCและUMC ) ที่ไม่มีบริการออกแบบภายในองค์กร Fujitsu/Samsung คิดราคาต่อแผ่นเวเฟอร์ ที่ผลิตได้สูงกว่าสองถึงสามเท่า สำหรับการใช้งานในปริมาณน้อยถึงปานกลาง โรงงานผลิตที่มีบริการออกแบบภายในองค์กรจะให้ราคาโดยรวมที่ต่ำกว่า (ผ่านการอุดหนุนค่าลิขสิทธิ์) สำหรับชิ้นส่วนที่ผลิตจำนวนมาก การลดต้นทุนในระยะยาวที่สามารถทำได้ผ่านราคาเวเฟอร์ที่ต่ำลงจะช่วยลดผลกระทบของต้นทุน NRE ( วิศวกรรมที่ไม่เกิดขึ้นซ้ำ ) ของ ARM ทำให้โรงงานผลิตเฉพาะทางเป็นตัวเลือกที่ดีกว่า
บริษัทต่างๆ ที่พัฒนาชิปที่มีแกนประมวลผลที่ออกแบบโดย Arm ได้แก่Annapurna Labs ซึ่ง เป็นบริษัทในเครือของAmazon.com [ 64 ] Analog Devices , Apple , AppliedMicro (ปัจจุบันคือMACOM Technology Solutions [ 65 ] ), Atmel , Broadcom , Cavium , Cypress Semiconductor , Freescale Semiconductor (ปัจจุบันคือNXP Semiconductors ), Huawei , Intel , Maxim Integrated , Nvidia , NXP , Qualcomm , Renesas , Samsung Electronics , ST Microelectronics , Texas InstrumentsและXilinx
สร้างขึ้นบนลิขสิทธิ์เทคโนโลยี ARM Cortex
ในเดือนกุมภาพันธ์ 2016 ARM ได้ประกาศใบอนุญาตเทคโนโลยี Built on ARM Cortex ซึ่งมักเรียกสั้นๆ ว่าใบอนุญาต Built on Cortex (BoC) ใบอนุญาตนี้อนุญาตให้บริษัทต่างๆ สามารถร่วมมือกับ ARM และทำการปรับเปลี่ยนการออกแบบ ARM Cortex ได้ การปรับเปลี่ยนการออกแบบเหล่านี้จะไม่ถูกเปิดเผยให้กับบริษัทอื่นๆ การออกแบบคอร์แบบกึ่งกำหนดเองเหล่านี้ยังให้ความเป็นอิสระในการใช้แบรนด์ ตัวอย่างเช่นKryo 280
บริษัทที่เป็นผู้ได้รับอนุญาตในปัจจุบันของเทคโนโลยี Built on ARM Cortex ได้แก่ Qualcomm [ 66 ]
ใบอนุญาตทางสถาปัตยกรรม
บริษัทต่างๆ สามารถขอรับ ใบอนุญาตสถาปัตยกรรม ARM เพื่อออกแบบแกนประมวลผล CPU ของตนเองโดยใช้ชุดคำสั่ง ARM ได้ แกนประมวลผลเหล่านี้ต้องเป็นไปตามสถาปัตยกรรม ARM อย่างสมบูรณ์ บริษัทที่ออกแบบแกนประมวลผลที่ใช้สถาปัตยกรรม ARM ได้แก่ Apple, AppliedMicro (ปัจจุบันคือAmpere Computing ), Broadcom, Cavium (ปัจจุบันคือ Marvell), Digital Equipment Corporation , Intel, Nvidia, Qualcomm, Samsung Electronics, Fujitsuและ NUVIA Inc. (ซึ่งถูก Qualcomm ซื้อกิจการในปี 2021)
ARM Flexible Access
เมื่อวันที่ 16 กรกฎาคม 2562 ARM ได้ประกาศ ARM Flexible Access ซึ่งให้สิทธิ์การเข้าถึงทรัพย์สินทางปัญญา (IP) ของ ARM ที่รวมอยู่ในแพ็กเกจอย่างไม่จำกัดสำหรับการพัฒนา โดยจะต้องเสียค่าธรรมเนียมใบอนุญาตต่อผลิตภัณฑ์เมื่อลูกค้าเข้าสู่ขั้นตอนการผลิตชิปหรือการสร้างต้นแบบ[ 67 ] [ 68 ]
75% ของทรัพย์สินทางปัญญาใหม่ล่าสุดของ ARM ในช่วงสองปีที่ผ่านมา ได้ถูกรวมอยู่ใน ARM Flexible Access แล้ว ณ เดือนตุลาคม 2562:

- ซีพียู: Cortex-A5 , Cortex-A7 , Cortex-A32 , Cortex-A34 , Cortex-A35 , Cortex-A53 , Cortex-R5 , Cortex-R8 , Cortex-R52 , Cortex-M0 , Cortex-M0+ , Cortex-M3 , Cortex-M4 , Cortex-M7 , Cortex-M23 , Cortex-M33
- หน่วยประมวลผลกราฟิก (GPU): Mali-G52 , Mali-G31รวมถึงชุดพัฒนาไดรเวอร์ Mali (DDK)
- การเชื่อมต่อ: CoreLink NIC-400, CoreLink NIC-450, CoreLink CCI-400, CoreLink CCI-500, CoreLink CCI-550, ADB-400 AMBA, XHB-400 AXI-AHB
- ตัวควบคุมระบบ: CoreLink GIC-400, CoreLink GIC-500, PL192 VIC, BP141 TrustZone Memory Wrapper, CoreLink TZC-400, CoreLink L2C-310, CoreLink MMU-500, BP140 Memory Interface
- ระบบรักษาความปลอดภัย IP: CryptoCell-312, CryptoCell-712, เครื่องกำเนิดเลขสุ่มแท้จริง TrustZone
- ตัวควบคุมอุปกรณ์ต่อพ่วง: PL011 UART, PL022 SPI, PL031 RTC
- การดีบักและการติดตาม: CoreSight SoC-400, CoreSight SDC-600, CoreSight STM-500, CoreSight System Trace Macrocell, CoreSight Trace Memory Controller
- ชุดอุปกรณ์ออกแบบ: Corstone-101, Corstone-201
- ส่วนประกอบทางกายภาพ (Physical IP): Artisan PIK สำหรับ Cortex-M33 TSMC 22ULL ซึ่งรวมถึงคอมไพเลอร์หน่วยความจำ ไลบรารีลอจิก GPIO และเอกสารประกอบ
- เครื่องมือและวัสดุ: Socrates IP Tooling, ARM Design Studio, Virtual System Models
- การสนับสนุน: การสนับสนุนทางเทคนิคมาตรฐานของ ARM, การฝึกอบรมออนไลน์ของ ARM, การอัปเดตการบำรุงรักษา, เครดิตสำหรับการฝึกอบรมในสถานที่ และการตรวจสอบการออกแบบ
แกนกลาง
| สถาปัตยกรรม | ความกว้างบิต แกนหลัก | แกนกลาง | ประวัติโดยย่อ | อ้างอิง | |
|---|---|---|---|---|---|
| บริษัท อาร์ม จำกัด | บุคคลที่สาม | ||||
อาร์เอ็มวี1 | อาร์เอ็ม1 | คลาสสิก | |||
อาร์เอ็มวี2 | 32 | อาร์เอ็ม2 , อาร์เอ็ม250, อาร์เอ็ม3 | แอมเบอร์ , STORM Open Soft Core [ 69 ] | คลาสสิก | |
อาร์เอ็มวี3 | 32 | อาร์เอ็ม6 , อาร์เอ็ม7 | คลาสสิก | ||
อาร์เอ็มวี4 | 32 | อาร์เอ็ม8 | StrongARM , FA526, ZAP หน่วยประมวลผลหลักแบบโอเพนซอร์ส | คลาสสิก | |
อาร์เอ็มวี4ที | 32 | ARM7TDMI , ARM9TDMI , SecurCore SC100 | คลาสสิก | ||
อาร์เอ็มวีที | 32 | ARM7EJ , ARM9E , ARM10E | XScale , FA626TE, Feroceon, PJ1/โมฮอว์ก | คลาสสิก | |
อาร์เอ็มวี6 | 32 | อาร์เอ็ม11 | คลาสสิก | ||
อาร์เอ็มวี6เอ็ม | 32 | ARM Cortex-M0 , ARM Cortex-M0+ , ARM Cortex-M1 , SecurCore SC000 | |||
อาร์เอ็มวี7เอ็ม | 32 | อาร์เอ็ม คอร์เท็กซ์-เอ็ม3 , เซเคอร์คอร์ เอสซี300 | หน่วยประมวลผลการเคลื่อนไหวApple M7 | ไมโครคอนโทรลเลอร์ | |
อาร์เอ็มวี7อีเอ็ม | 32 | อาร์เอ็ม คอร์เท็กซ์-เอ็ม4 , อาร์เอ็ม คอร์เท็กซ์-เอ็ม7 | ไมโครคอนโทรลเลอร์ | ||
อาร์เอ็มวี8เอ็ม | 32 | ARM Cortex-M23 , [ 71 ] ARM Cortex-M33 [ 72 ] | ไมโครคอนโทรลเลอร์ | ||
อาร์เอ็มวี8.1-เอ็ม | 32 | ARM Cortex-M55 , ARM Cortex-M85 | ไมโครคอนโทรลเลอร์ | ||
อาร์เอ็มวี7อาร์ | 32 | ARM Cortex-R4 , ARM Cortex-R5 , ARM Cortex-R7 , ARM Cortex-R8 | |||
อาร์เอ็มวี8-อาร์ | 32 | อาร์เอ็ม คอร์เท็กซ์-อาร์52 | เรียลไทม์ | ||
64 | อาร์เอ็ม คอร์เท็กซ์-อาร์82 | เรียลไทม์ | |||
อาร์เอ็มวี7เอ | 32 | ARM Cortex-A5 , ARM Cortex-A7 , ARM Cortex-A8 , ARM Cortex-A9 , ARM Cortex-A12 , ARM Cortex-A15 , ARM Cortex-A17 | Qualcomm Scorpion / Krait , PJ4/Sheeva, Apple Swift ( A6 , A6X ) | ||
อาร์เอ็มวี8เอ | 32 | ARM Cortex-A32 [ 78 ] | แอปพลิเคชัน | ||
| ARM Cortex-A35 , [ 79 ] ARM Cortex-A53 , ARM Cortex-A57 , [ 80 ] ARM Cortex-A72 , [ 81 ] ARM Cortex-A73 [ 82 ] | X-Gene , Nvidia Denver 1/2 , Cavium ThunderX , AMD K12 , Apple Cyclone ( A7 )/Typhoon ( A8 , A8X )/Twister ( A9 , A9X )/Hurricane+Zephyr ( A10 , A10X ), Qualcomm Kryo , Samsung M1/M2 ("Mongoose")/M3 ("Meerkat") | แอปพลิเคชัน | |||
| ARM Cortex-A34 [ 88 ] | แอปพลิเคชัน | ||||
อาร์เอ็มวี8.1-เอ | 64/32 | คาเวียม ธันเดอร์เอ็กซ์2 | แอปพลิเคชัน | ||
อาร์เอ็มวี8.2-เอ | 64/32 | ARM Cortex-A55 , [ 90 ] ARM Cortex-A75 , [ 91 ] ARM Cortex-A76 , [ 92 ] ARM Cortex-A77 , ARM Cortex-A78 , ARM Cortex-X1 , ARM Neoverse N1 | Nvidia Carmel , Samsung M4 ("Cheetah"), Fujitsu A64FX (ARMv8 SVE 512-bit) | แอปพลิเคชัน | |
64 | ARM Cortex-A65 , ARM Neoverse E1พร้อมมัลติเธรดดิ้งพร้อมกัน (SMT), ARM Cortex-A65AE [ 96 ] (รวมถึง ARMv8.4 Dot Product ด้วย สร้างขึ้นสำหรับงานที่สำคัญด้านความปลอดภัย เช่นระบบช่วยเหลือผู้ขับขี่ขั้นสูง (ADAS)) | Apple Monsoon+Mistral ( A11 ) (กันยายน 2017) | แอปพลิเคชัน | ||
อาร์เอ็มวี8.3-เอ | 64/32 | แอปพลิเคชัน | |||
64 | Apple Vortex+Tempest ( A12 , A12X , A12Z ), Marvell ThunderX3 (v8.3+) [ 97 ] | แอปพลิเคชัน | |||
อาร์เอ็มวี8.4-เอ | 64/32 | แอปพลิเคชัน | |||
64 | อาร์เอ็ม นีโอเวิร์ส วี1 | แอปเปิลสายฟ้า+ฟ้าร้อง ( A13 ), แอปเปิลไฟร์สตอร์ม+น้ำแข็งสตอร์ม ( A14 , M1 ) | แอปพลิเคชัน | ||
อาร์เอ็มวี8.5-เอ | 64/32 | แอปพลิเคชัน | |||
64 | แอปพลิเคชัน | ||||
อาร์เอ็มวี8.6-เอ | 64 | Apple Avalanche+Blizzard ( A15 , M2 ), Apple Everest+Sawtooth ( A16 ), [ 98 ] Apple Coll ( A17 ), Apple Ibiza/Lobos/Palma ( M3 ) | แอปพลิเคชัน | ||
อาร์เอ็มวี8.7-เอ | 64 | แอปพลิเคชัน | |||
อาร์เอ็มวี8.8-เอ | 64 | แอปพลิเคชัน | |||
อาร์เอ็มวี8.9-เอ | 64 | แอปพลิเคชัน | |||
อาร์เอ็มวี9.0-เอ | 32/64 | ARM Cortex-A510 (A510 r1 / 2024 Refresh) [ 100 ] | แอปพลิเคชัน | ||
64 | ARM Cortex-A510 , ARM Cortex-A710 , ARM Cortex-A715 , ARM Cortex-X2 , ARM Cortex-X3 , ARM Neoverse E2 , ARM Neoverse N2 , ARM Neoverse V2 | แอปพลิเคชัน | |||
อาร์เอ็มวี9.1-เอ | 64 | แอปพลิเคชัน | |||
อาร์เอ็มวี9.2-เอ | 64 | ARM Cortex-A520 , ARM Cortex-A720 , ARM Cortex-X4 , ARM Neoverse V3 , [ 103 ] ARM Cortex-X925 , [ 104 ] ARM Cortex-A320 [ 105 ] | Apple Donan/BravaChop/Brava ( Apple M4 ), [ 106 ] Apple Tupai/ตาฮิติ ( A18 ) | แอปพลิเคชัน | |
อาร์เอ็มวี9.3-เอ | 64 | รอประกาศ | แอปพลิเคชัน | ||
อาร์เอ็มวี9.4-เอ | 64 | รอประกาศ | แอปพลิเคชัน | ||
อาร์เอ็มวี9.5-เอ | 64 | รอประกาศ | แอปพลิเคชัน | ||
อาร์เอ็มวี9.6-เอ | 64 | รอประกาศ | แอปพลิเคชัน | ||
อาร์เอ็มวี9.7-เอ | 64 | รอประกาศ | แอปพลิเคชัน | ||
- แม้ว่าดาต้าพาธและรีจิสเตอร์ CPU ส่วนใหญ่ ในโปรเซสเซอร์ ARM รุ่นแรกๆ จะเป็น 32 บิต แต่ หน่วยความจำที่ สามารถเข้าถึงได้นั้นจำกัดอยู่ที่ 26 บิตโดยบิตบนจะถูกใช้สำหรับแฟล็กสถานะในรีจิสเตอร์ตัวนับโปรแกรม
- ^ a b c ARMv3 มีโหมดความเข้ากันได้เพื่อรองรับที่อยู่ 26 บิตของสถาปัตยกรรมเวอร์ชันก่อนหน้า โหมดความเข้ากันได้นี้เป็นตัวเลือกใน ARMv4 และถูกลบออกทั้งหมดใน ARMv5
Arm จัดทำรายชื่อผู้จำหน่ายที่ใช้แกน ARM ในการออกแบบ (ผลิตภัณฑ์มาตรฐานเฉพาะแอปพลิเคชัน (ASSP) ไมโครโปรเซสเซอร์ และไมโครคอนโทรลเลอร์) [ 112 ]
ตัวอย่างการใช้งานของแกนประมวลผล ARM

หน่วย ประมวลผล ARM ถูกนำไปใช้ในผลิตภัณฑ์หลายอย่าง โดยเฉพาะอย่างยิ่งใน PDAและสมาร์ทโฟนตัวอย่างด้าน คอมพิวเตอร์ ได้แก่อุปกรณ์Surface รุ่นแรก Surface 2และPocket PCของMicrosoft (หลัง ปี 2002 ), iPadของAppleและแท็บเล็ตEee Pad TransformerของAsus รวมถึงแล็ปท็อป Chromebookหลายรุ่น นอกจากนี้ยังมีสมาร์ท โฟนiPhoneและเครื่องเล่นมีเดียพกพาiPodของ Apple , กล้องดิจิทัลCanon PowerShot , เครื่องเล่น เกมไฮบริด Nintendo Switch , เครื่องเล่นเกมพกพาWii และระบบนำทางแบบเลี้ยวต่อเลี้ยวTomTomอีกด้วย
ในปี พ.ศ. 2548 Arm ได้มีส่วนร่วมในการพัฒนา คอมพิวเตอร์ SpiNNakerของมหาวิทยาลัยแมนเชสเตอร์ซึ่งใช้แกนประมวลผล ARM เพื่อจำลองสมองของมนุษย์[ 113 ]
ชิป ARM ยังถูกนำไปใช้ในRaspberry Pi , BeagleBoard , BeagleBone , PandaBoardและคอมพิวเตอร์แบบบอร์ดเดี่ยว อื่นๆ เนื่องจากมีขนาดเล็ก ราคาไม่แพง และใช้พลังงานน้อยมาก
สถาปัตยกรรม 32 บิต


สถาปัตยกรรม ARM 32 บิต ( ARM32 ) เช่นARMv7-A (ซึ่งใช้ AArch32 ดูส่วนเกี่ยวกับ Armv8-Aสำหรับข้อมูลเพิ่มเติม) เป็นสถาปัตยกรรมที่ใช้กันอย่างแพร่หลายที่สุดในอุปกรณ์เคลื่อนที่ในปี 2554 [ 60 ]
นับตั้งแต่ปี 1995 คู่มืออ้างอิงสถาปัตยกรรม ARMเวอร์ชันต่างๆ(ดู§ ลิงก์ภายนอก ) เป็นแหล่งข้อมูลหลักเกี่ยวกับสถาปัตยกรรมโปรเซสเซอร์ ARM และชุดคำสั่ง โดยแยกแยะอินเทอร์เฟซที่โปรเซสเซอร์ ARM ทุกตัวต้องรองรับ (เช่น ความหมายของคำสั่ง) ออกจากรายละเอียดการใช้งานที่อาจแตกต่างกันไป สถาปัตยกรรมได้มีการพัฒนาไปตามกาลเวลา และสถาปัตยกรรมเวอร์ชันเจ็ด ARMv7 ได้กำหนด "โปรไฟล์" สถาปัตยกรรมไว้สามแบบ:
- โปรไฟล์ A หรือโปรไฟล์ "แอปพลิเคชัน" ถูกนำไปใช้โดยคอร์ 32 บิตใน ตระกูล Cortex-Aและคอร์ที่ไม่ใช่ ARM บางตัว
- โปรไฟล์ R หรือโปรไฟล์ "เรียลไทม์" ถูกนำมาใช้ในคอร์ของซีรี่ส์Cortex-R
- โปรไฟล์ M หรือโปรไฟล์ "ไมโครคอนโทรลเลอร์" ซึ่งถูกนำไปใช้โดยคอร์ส่วนใหญ่ในซีรี่ส์Cortex-M
แม้ว่าโปรไฟล์สถาปัตยกรรมจะถูกกำหนดขึ้นครั้งแรกสำหรับ ARMv7 แต่ต่อมา ARM ได้กำหนดสถาปัตยกรรม ARMv6-M (ซึ่งใช้โดย Cortex M0 / M0+ / M1 ) เป็นส่วนย่อยของโปรไฟล์ ARMv7-M โดยมีจำนวนคำสั่งน้อยกว่า
เวอร์ชันสถาปัตยกรรม
- อาร์เอ็มวี1
การกำหนดแอดเดรสแบบ 26 บิต - ล้าสมัยตั้งแต่เดือนมิถุนายน พ.ศ. 2543 [ 114 ]
- อาร์เอ็มวี2
คำสั่งคูณและคูณสะสม; การสนับสนุนโคโปรเซสเซอร์ - ตัวแปรทั้งหมดล้าสมัยตั้งแต่เดือนมิถุนายน พ.ศ. 2543 [ 114 ]
- อาร์เอ็มวี2เอ
คำสั่งโหลดและจัดเก็บข้อมูลแบบอะตอมิก
- อาร์เอ็มวี3
การกำหนดแอดเดรส 32 บิต[ 114 ] - ตัวแปรทั้งหมดล้าสมัยตั้งแต่เดือนกรกฎาคม พ.ศ. 2548 [ 115 ]
- อาร์เอ็มวี3จี
- ไม่มีการรองรับการกำหนดแอดเดรสแบบ 26 บิต[ 114 ]
- อาร์เอ็มวี3เอ็ม
- การคูณแบบยาวและแบบมีเครื่องหมาย[ 114 ]
- อาร์เอ็มวี4
คำสั่งโหลดและจัดเก็บฮาล์ฟเวิร์ด; คำสั่งโหลดไบต์และฮาล์ฟเวิร์ดที่ขยายเครื่องหมาย; การสนับสนุนการกำหนดแอดเดรส 26 บิตถูกลบออก[ 114 ]
- อาร์เอ็มวี5
คำสั่งนับศูนย์นำหน้า[ 114 ] - ล้าสมัยตั้งแต่เดือนกรกฎาคม พ.ศ. 2548 [ 115 ]
- อาร์เอ็มวี5ที
- ARMv5 บวกกับ Thumb เวอร์ชัน 2 [ 114 ]
- อาร์เอ็มวีที
- ARMv5T พร้อมคำสั่ง DSP ที่ได้รับการปรับปรุง[ 114 ]
- ARMv5TExP
- ARMv5TE แต่ไม่มี
LDRD,MCRR,MRRC,PLD, และSTRDคำสั่ง DSP ที่ได้รับการปรับปรุง[ 114 ]
- อาร์เอ็มวี6
ARMv5TEJ เต็มรูปแบบ; คำสั่งการกลับไบต์; คำสั่งการโหลดและการจัดเก็บการเข้าถึงแบบพิเศษ; คำสั่งการขยายเครื่องหมายและการขยายศูนย์ของไบต์และครึ่งเวิร์ด; คำสั่งสื่อ SIMD; การสนับสนุนการเข้าถึงที่ไม่ตรงแนว[ 115 ]
- อาร์เอ็มวี6เค
- ARMv6 plus คำสั่งเพื่อรองรับระบบมัลติโปรเซสเซอร์[ 116 ]
- อาร์เอ็มวี7
- อาร์เอ็มวี7เอ, อาร์เอ็มวี7อาร์
- การหารแบบมีเครื่องหมายและไม่มีเครื่องหมาย (ไม่บังคับ); คำสั่งเกี่ยวกับหน่วยความจำและตัวกั้นการซิงโครไนซ์; คำสั่งแนะนำการโหลดล่วงหน้า[ 116 ]
- อาร์เอ็มวี7เอ็ม
- นิ้วโป้ง-2 เท่านั้น[ 117 ]
- อาร์เอ็มวี8
- นำเสนอ สถานะการทำงานสองแบบคือ AArch32 และAArch64โดยแบบแรกนั้นรองรับชุดคำสั่ง ARM 32 บิต ที่เรียกว่า A32 และชุดคำสั่ง Thumb-2 ที่เรียกว่า T32 ส่วนแบบหลังนั้นรองรับชุดคำสั่งใหม่ที่มีรีจิสเตอร์ 64 บิต จำนวน 32 ตัว ที่เรียกว่า A64
- ARMv8-A AArch32, ARMv8-R AArch32
- คำสั่งโหลด-รับและจัดเก็บ-ปล่อย คำสั่งการเข้ารหัส ส่วนขยายคำสั่งตัวกั้นข้อมูล คำสั่งส่งเหตุการณ์ในพื้นที่[ 118 ]
- อาร์เอ็มวี8เอ็ม
- เฉพาะ Variant Thumb-2 เท่านั้น[ 119 ]
โหมด CPU
ยกเว้นในโปรไฟล์ M สถาปัตยกรรม ARM 32 บิตจะระบุโหมด CPU หลายโหมด ขึ้นอยู่กับคุณสมบัติสถาปัตยกรรมที่นำมาใช้ ในช่วงเวลาใดเวลาหนึ่ง CPU สามารถอยู่ในโหมดเดียวเท่านั้น แต่สามารถเปลี่ยนโหมดได้เนื่องจากเหตุการณ์ภายนอก (การขัดจังหวะ) หรือโดยโปรแกรม[ 120 ]
- โหมดผู้ใช้:โหมดเดียวที่ไม่ได้รับสิทธิ์พิเศษ
- โหมด FIQ:โหมดพิเศษที่เข้าสู่การทำงานเมื่อใดก็ตามที่โปรเซสเซอร์ยอมรับคำขอขัดจังหวะแบบรวดเร็ว
- โหมด IRQ:โหมดพิเศษที่เข้าสู่การทำงานเมื่อใดก็ตามที่โปรเซสเซอร์รับสัญญาณขัดจังหวะ
- โหมดผู้ดูแลระบบ (svc):โหมดพิเศษที่จะเข้าสู่เมื่อใดก็ตามที่ CPU ถูกรีเซ็ตหรือเมื่อมีการเรียกใช้คำสั่ง SVC
- โหมดยกเลิก:โหมดพิเศษที่จะเข้าสู่โหมดนี้เมื่อเกิดข้อผิดพลาดในการยกเลิกการดึงข้อมูลล่วงหน้าหรือข้อผิดพลาดในการยกเลิกข้อมูล
- โหมดที่ไม่กำหนด:โหมดพิเศษที่เข้าสู่เมื่อใดก็ตามที่เกิดข้อผิดพลาดคำสั่งที่ไม่กำหนด
- โหมดระบบ (ARMv4 ขึ้นไป):เป็นโหมดพิเศษเพียงโหมดเดียวที่ไม่สามารถเข้าใช้งานได้ด้วยข้อยกเว้น สามารถเข้าใช้งานได้โดยการเรียกใช้คำสั่งที่เขียนค่าลงในบิตโหมดของรีจิสเตอร์สถานะโปรแกรมปัจจุบัน (CPSR) จากโหมดพิเศษอื่น (ไม่ใช่จากโหมดผู้ใช้)
- โหมดมอนิเตอร์ (ARMv6 และ ARMv7 Security Extensions, ARMv8 EL3):มีการเพิ่มโหมดมอนิเตอร์เพื่อรองรับการขยาย TrustZone ในคอร์ ARM
- โหมด Hyp (ARMv7 Virtualization Extensions, ARMv8 EL2):โหมดไฮเปอร์ไวเซอร์ที่รองรับข้อกำหนดการจำลองเสมือนของ Popek และ Goldbergสำหรับการทำงานที่ไม่ปลอดภัยของ CPU [ 121 ] [ 122 ]
- โหมดเธรด (ARMv6-M, ARMv7-M, ARMv8-M):โหมดที่สามารถระบุได้ทั้งแบบมีสิทธิ์พิเศษหรือไม่มีสิทธิ์พิเศษ นอกจากนี้ยังสามารถระบุได้ว่าจะใช้ตัวชี้สแต็กหลัก (MSP) หรือตัวชี้สแต็กของกระบวนการ (PSP) ในรีจิสเตอร์ CONTROL ด้วยสิทธิ์พิเศษ โหมดนี้ออกแบบมาสำหรับงานของผู้ใช้ในสภาพแวดล้อม RTOS แต่โดยทั่วไปจะใช้ในระบบ bare-metal สำหรับ super-loop
- โหมด Handler (ARMv6-M, ARMv7-M, ARMv8-M):โหมดเฉพาะสำหรับการจัดการข้อยกเว้น (ยกเว้น RESET ซึ่งจะถูกจัดการในโหมด Thread) โหมด Handler ใช้ MSP เสมอและทำงานในระดับสิทธิ์พิเศษ
ชุดคำสั่ง
การใช้งาน ARM ในรุ่นแรกนั้นเป็นการเชื่อมต่อแบบตายตัวโดยไม่มีไมโครโค้ดเหมือนกับ โปรเซสเซอร์ 6502 แบบ 8 บิต ที่เรียบง่ายกว่ามาก ซึ่งใช้ในไมโครคอมพิวเตอร์ Acorn รุ่นก่อนๆ
สถาปัตยกรรม ARM 32 บิต (และสถาปัตยกรรม 64 บิตส่วนใหญ่) ประกอบด้วยคุณสมบัติ RISC ดังต่อไปนี้:
- สถาปัตยกรรมแบบโหลด-จัดเก็บ
- สถาปัตยกรรมเวอร์ชันดั้งเดิมไม่รองรับการเข้าถึงหน่วยความจำที่ไม่ตรง แนว ARMv6 และเวอร์ชันต่อมา ยกเว้นไมโครคอนโทรลเลอร์บางเวอร์ชัน รองรับการเข้าถึงที่ไม่ตรงแนวสำหรับคำสั่งโหลด/จัดเก็บแบบครึ่งเวิร์ดและเวิร์ดเดียว โดยมีข้อจำกัดบางประการ เช่น ไม่รับประกัน ความเป็นอะตอม[ 123 ] [ 124 ]
- ไฟล์รีจิสเตอร์แบบเดียวกันขนาด 16 × 32 บิต(รวมถึงตัวนับโปรแกรม ตัวชี้สแต็ก และรีจิสเตอร์ลิงก์)
- คำสั่งชุด Thumb มีความกว้างคงที่ที่ 32 บิต เพื่อให้การถอดรหัสและการประมวลผลแบบไปป์ไลน์ ง่ายขึ้น แต่ก็แลกมาด้วยความหนาแน่นของโค้ด ที่ลดลง ต่อมาชุดคำสั่ง Thumbได้เพิ่มคำสั่ง 16 บิต และเพิ่มความหนาแน่นของโค้ดขึ้น
- ส่วนใหญ่เป็นการประมวลผลภายในรอบสัญญาณนาฬิกาเดียว
เพื่อชดเชยการออกแบบที่เรียบง่ายกว่าเมื่อเทียบกับโปรเซสเซอร์อย่าง Intel 80286 และMotorola 68020จึงมีการเพิ่มคุณลักษณะการออกแบบเพิ่มเติมบางอย่าง:
- การประมวลผลแบบมีเงื่อนไขสำหรับคำสั่งส่วนใหญ่ช่วยลดภาระการทำงานของคำสั่งกระโดด และชดเชยการขาดตัวทำนายคำสั่งกระโดดในชิปรุ่นแรกๆ
- คำสั่งทางคณิตศาสตร์จะเปลี่ยนแปลงรหัสเงื่อนไขเฉพาะเมื่อต้องการเท่านั้น
- ตัวเลื่อนบิตแบบ 32 บิตสามารถใช้งานได้โดยไม่ลดประสิทธิภาพการทำงานกับคำสั่งทางคณิตศาสตร์และการคำนวณที่อยู่ส่วนใหญ่
- มีโหมดการกำหนดแอดเดรส แบบดัชนี ที่ มีประสิทธิภาพสูง
- รีจิสเตอร์ลิงก์ช่วยให้สามารถเรียกฟังก์ชันลีฟได้อย่างรวดเร็ว
- ระบบย่อย การขัดจังหวะแบบ 2 ระดับความสำคัญที่เรียบง่ายแต่รวดเร็วได้สลับกลุ่มรีจิสเตอร์แล้ว
คำสั่งทางคณิตศาสตร์
สถาปัตยกรรม ARM มีฟังก์ชันการคำนวณเลขจำนวนเต็มสำหรับการบวก ลบ และคูณ และบางเวอร์ชันของสถาปัตยกรรมนี้ยังรองรับการหารด้วย
ARM รองรับการคูณ 32 บิต × 32 บิต โดยให้ผลลัพธ์เป็น 32 บิต หรือ 64 บิต ก็ได้ แม้ว่าคอร์ Cortex-M0 / M0+ / M1 จะไม่รองรับผลลัพธ์ 64 บิตก็ตาม[ 125 ]คอร์ ARM บางตัวยังรองรับการคูณ 16 บิต × 16 บิต และ 32 บิต × 16 บิต ด้วย
คำสั่งหารมีเฉพาะในสถาปัตยกรรม ARM ต่อไปนี้เท่านั้น:
- สถาปัตยกรรม Armv7-M และ Armv7E-M มีคำสั่งหารเสมอ[ 126 ]
- สถาปัตยกรรม Armv7-R จะมีคำสั่งหารอยู่ในชุดคำสั่ง Thumb เสมอ แต่สามารถเลือกที่จะอยู่ในชุดคำสั่ง 32 บิตก็ได้[ 127 ]
- สถาปัตยกรรม Armv7-A มีคำสั่งหารเป็นตัวเลือก คำสั่งเหล่านี้อาจไม่ได้ถูกนำไปใช้ หรือนำไปใช้เฉพาะในชุดคำสั่ง Thumb หรือนำไปใช้ทั้งในชุดคำสั่ง Thumb และ ARM หรือนำไปใช้หากมีการรวมส่วนขยายการจำลองเสมือน[ 127 ]
ทะเบียน
| ผู้ใช้ | ระบบ | บริการ | เกี่ยวกับ | และ | irq | ฟิก |
|---|---|---|---|---|---|---|
| อาร์0 | ||||||
| อาร์1 | ||||||
| อาร์2 | ||||||
| อาร์3 | ||||||
| อาร์4 | ||||||
| อาร์5 | ||||||
| อาร์6 | ||||||
| อาร์7 | ||||||
| อาร์8 | R8_fiq | |||||
| อาร์9 | R9_fiq | |||||
| อาร์10 | R10_fiq | |||||
| อาร์11 | R11_fiq | |||||
| อาร์12 | R12_fiq | |||||
| อาร์13 | R13_svc | R13_abt | R13_und | อาร์13_เออร์ค | R13_fiq | |
| อาร์14 | R14_svc | R14_abt | R14_und | อาร์14_เออร์ค | R14_fiq | |
| อาร์15 | ||||||
| ซีพีเอสอาร์ | ||||||
| SPSR_svc | SPSR_abt | SPSR_und | SPSR_irq | SPSR_fiq | ||
รีจิสเตอร์ R0 ถึง R7 มีค่าเหมือนกันในทุกโหมดการทำงานของ CPU และจะไม่ถูกแบ่งเป็นกลุ่ม (banked)
รีจิสเตอร์ R8 ถึง R12 เหมือนกันในทุกโหมดการทำงานของ CPU ยกเว้นโหมด FIQ โหมด FIQ มีรีจิสเตอร์ R8 ถึง R12 ที่แตกต่างกันออกไป
R13 และ R14 เป็นรีจิสเตอร์ที่ใช้ร่วมกันในทุกโหมดการทำงานของ CPU ยกเว้นโหมดระบบ กล่าวคือ แต่ละโหมดที่สามารถเข้าใช้งานได้เนื่องจากข้อผิดพลาดจะมี R13 และ R14 ของตัวเอง โดยทั่วไปแล้ว รีจิสเตอร์เหล่านี้จะเก็บค่าตัวชี้สแต็กและที่อยู่ส่งคืนจากฟังก์ชันตามลำดับ
ชื่อเรียกอื่น:
- R13 ยังถูกเรียกว่า SP ซึ่งเป็นตัวชี้สแต็ก (stack pointer )
- R14 เรียกอีกอย่างว่า LR ซึ่งย่อมาจากLink Register
- R15 ยังถูกเรียกว่า PC ซึ่งย่อมาจากProgram Counter
รีจิสเตอร์สถานะโปรแกรมปัจจุบัน (CPSR) มี 32 บิตดังต่อไปนี้[ 128 ]
- M (บิต 0–4) คือบิตโหมดของโปรเซสเซอร์
- บิต T (บิตที่ 5) คือบิตสถานะของนิ้วโป้ง
- F (บิตที่ 6) คือบิตสำหรับปิดใช้งาน FIQ
- บิต I (บิตที่ 7) คือบิตสำหรับปิดใช้งาน IRQ
- บิต A (บิตที่ 8) คือบิตสำหรับปิดใช้งานการยกเลิกข้อมูลที่ไม่แม่นยำ
- E (บิตที่ 9) คือบิตแสดงลำดับไบต์ของข้อมูล
- IT (บิตที่ 10–15 และ 25–26) คือบิตสถานะเงื่อนไข "ถ้าเป็นเช่นนั้น"
- GE (บิตที่ 16–19) คือบิตที่แสดงค่ามากกว่าหรือเท่ากับ
- DNM (บิตที่ 20–23) คือบิตที่ห้ามแก้ไข
- J (บิตที่ 24) คือบิตสถานะของ Java
- บิต Q (บิตที่ 27) คือบิตที่ทำให้เกิดการล้นค่าแบบเหนียว (sticky overflow bit)
- V (บิตที่ 28) คือบิตเกิน (overflow bit)
- บิต C (บิตที่ 29) คือบิตทด/ยืม/ขยาย
- Z (บิตที่ 30) คือบิตศูนย์
- N (บิตที่ 31) คือบิตแสดงค่าลบ/น้อยกว่า
การดำเนินการแบบมีเงื่อนไข
คำสั่ง ARM เกือบทุกคำสั่งมีคุณสมบัติการดำเนินการแบบมีเงื่อนไขที่เรียกว่าpredicationซึ่งถูกนำไปใช้ด้วยตัวเลือกโค้ดเงื่อนไข 4 บิต (predicate) เพื่อให้สามารถดำเนินการแบบไม่มีเงื่อนไขได้ โค้ด 4 บิตตัวใดตัวหนึ่งจะทำให้คำสั่งนั้นถูกดำเนินการเสมอ สถาปัตยกรรม CPU อื่นๆ ส่วนใหญ่จะมีโค้ดเงื่อนไขเฉพาะในคำสั่งสาขาเท่านั้น[ 129 ]
แม้ว่าเงื่อนไขจะใช้บิตถึง 4 บิตจากทั้งหมด 32 บิตในรหัสคำสั่ง ซึ่งทำให้จำนวนบิตที่ใช้สำหรับการเลื่อนตำแหน่งในคำสั่งการเข้าถึงหน่วยความจำลดลงอย่างมาก แต่ก็ช่วยหลีกเลี่ยงคำสั่งการกระโดดเมื่อสร้างรหัสสำหรับifคำสั่ง ขนาดเล็ก นอกจากจะกำจัดคำสั่งการกระโดดแล้ว ยังช่วยรักษาไปป์ไลน์การดึง/ถอดรหัส/ประมวลผลไว้ได้ โดยเสียค่าใช้จ่ายเพียงหนึ่งรอบการทำงานต่อคำสั่งที่ถูกข้ามไป
อัลกอริทึมที่เป็นตัวอย่างที่ดีของการทำงานแบบมีเงื่อนไขคืออัลกอริทึมยูคลิด แบบใช้การลบ เพื่อหาตัวหารร่วมมากในภาษาโปรแกรม Cอัลกอริทึมนี้สามารถเขียนได้ดังนี้:
int gcd ( int a , int b ) { while ( a != b ) // เราเข้าลูปเมื่อ a < b หรือ a > b แต่ไม่ใช่เมื่อ a == b if ( a > b ) // เมื่อ a > b เราทำสิ่งนี้a -= b ; else // เมื่อ a < b เราทำสิ่งนั้น (ไม่จำเป็นต้องใช้ "if (a < b)" เนื่องจากมีการตรวจสอบ a != b ในเงื่อนไข while แล้ว) b -= a ; return a ; }สามารถเขียนอัลกอริธึมเดียวกันนี้ใหม่ให้ใกล้เคียงกับคำสั่ง ARM เป้าหมาย ได้ดังนี้:
ลูป: // เปรียบเทียบ a และ b GT = a > b ; LT = a < b ; NE = a != b ;// ดำเนินการตามผลลัพธ์ของแฟล็กหาก( GT ) a -= b ; // ลบ *เฉพาะ* เมื่อมากกว่าหาก( LT ) b -= a ; // ลบ *เฉพาะ* เมื่อน้อยกว่าหาก( NE ) goto loop ; // วนลูป *เฉพาะ* เมื่อค่าที่เปรียบเทียบไม่เท่ากันส่งคืนค่าa ;และเขียนโค้ดด้วยภาษาแอสเซมบลีดังนี้:
; กำหนดค่า a ให้กับรีจิสเตอร์ r0 และ b ให้กับ r1 วนซ้ำ: CMP r0 , r1 ; ตั้งเงื่อนไข "NE" ถ้า (a ≠ b) ; "GT" ถ้า (a > b) ; หรือ "LT" ถ้า (a < b) SUBGT r0 , r0 , r1 ; ถ้า "GT" (มากกว่า) แล้ว a = a − b SUBLT r1 , r1 , r0 ; ถ้า "LT" (น้อยกว่า) แล้ว b = b − a BNE วนซ้ำ; ถ้า "NE" (ไม่เท่ากัน) แล้ววนซ้ำB lr ; ส่งคืนซึ่งช่วยหลีกเลี่ยงการใช้เงื่อนไขขอบเขตของ คำสั่ง then`and` elseหากr0`and` และ ` r1or` เท่ากันSUBคำสั่งทั้งสองจะไม่ถูกดำเนินการ ทำให้ไม่จำเป็นต้องใช้เงื่อนไขขอบเขตเพื่อตรวจwhileสอบที่ด้านบนของลูป ตัวอย่างเช่น หากSUBLEใช้ `<>` (น้อยกว่าหรือเท่ากับ)`
หนึ่งในวิธีที่โค้ด Thumb ให้การเข้ารหัสที่หนาแน่นกว่าคือการลบตัวเลือกสี่บิตออกจากคำสั่งที่ไม่ใช่คำสั่งกระโดด
คุณสมบัติอื่นๆ
อีกหนึ่งคุณสมบัติของชุดคำสั่งนี้คือความสามารถในการรวมการเลื่อนบิตและการหมุนบิตเข้ากับคำ สั่ง การประมวลผลข้อมูล (การคำนวณทางคณิตศาสตร์ ตรรกะ และการย้ายค่าระหว่างรีจิสเตอร์) ดังนั้น ตัวอย่างเช่น คำสั่งใน ภาษา ซี :
a += ( j << 2 );สามารถแสดงเป็นคำสั่งคำเดียว รอบเดียวได้: [ 130 ]
เพิ่มRa , Ra , Rj , LSL #2ผลลัพธ์ที่ได้คือโปรแกรม ARM ทั่วไปจะมีความหนาแน่นมากกว่าที่คาดไว้ โดยมีการเข้าถึงหน่วยความจำน้อยลง ดังนั้นจึงใช้ไปป์ไลน์ได้อย่างมีประสิทธิภาพมากขึ้น
โปรเซสเซอร์ ARM ยังมีคุณสมบัติที่หาได้ยากในสถาปัตยกรรม RISC อื่นๆ เช่น การกำหนดแอดเดรสแบบสัมพันธ์กับ PC (อันที่จริง บน ARM 32 บิต[ 1 ] PCเป็นหนึ่งในรีจิสเตอร์ 16 ตัว) และโหมดการกำหนดแอดเดรสแบบก่อนและหลังการเพิ่มค่า
ชุดคำสั่งของ ARM มีจำนวนเพิ่มขึ้นเรื่อย ๆ ตามกาลเวลา ตัวอย่างเช่น โปรเซสเซอร์ ARM รุ่นแรก ๆ บางรุ่น (ก่อน ARM7TDMI) ไม่มีคำสั่งสำหรับจัดเก็บค่าขนาดสองไบต์
ท่อส่งและปัญหาการนำไปใช้งานอื่นๆ
ARM7 และรุ่นก่อนหน้ามีไปป์ไลน์ สามขั้นตอน ได้แก่ การดึงข้อมูล การถอดรหัส และการประมวลผล ส่วนการออกแบบที่มีประสิทธิภาพสูงกว่า เช่น ARM9 มีไปป์ไลน์ที่ซับซ้อนกว่า โดย Cortex-A8 มีถึงสิบสามขั้นตอน การเปลี่ยนแปลงเพิ่มเติมเพื่อเพิ่มประสิทธิภาพ ได้แก่ตัวบวก ที่เร็วขึ้นและตรรกะ การคาดการณ์การแตกแขนงที่ครอบคลุมมากขึ้นตัวอย่างเช่น ความแตกต่างระหว่างคอร์ ARM7DI และ ARM7DMI คือตัวคูณที่ได้รับการปรับปรุง จึงมีการเพิ่มตัวอักษร "M" เข้าไป
โคโปรเซสเซอร์
สถาปัตยกรรม ARM (ก่อน ARMv8) นำเสนอวิธีการขยายชุดคำสั่งโดยไม่รบกวนการทำงานเดิม โดยใช้ "โคโปรเซสเซอร์" ที่สามารถเข้าถึงได้โดยใช้คำสั่ง MCR, MRC, MRRC, MCRR และคำสั่งที่คล้ายกัน พื้นที่โคโปรเซสเซอร์ถูกแบ่งออกเป็น 16 โคโปรเซสเซอร์ตามตรรกะ โดยมีหมายเลขตั้งแต่ 0 ถึง 15 โคโปรเซสเซอร์หมายเลข 15 (cp15) สงวนไว้สำหรับฟังก์ชันควบคุมทั่วไปบางอย่าง เช่น การจัดการแคชและ การทำงาน ของ MMUบนโปรเซสเซอร์ที่มี MMU
ในเครื่องที่ใช้สถาปัตยกรรม ARM อุปกรณ์ต่อพ่วงมักจะเชื่อมต่อกับโปรเซสเซอร์โดยการแมปรีจิสเตอร์ทางกายภาพของอุปกรณ์เหล่านั้นไปยังพื้นที่หน่วยความจำ ARM พื้นที่โคโปรเซสเซอร์ หรือโดยการเชื่อมต่อกับอุปกรณ์อื่น (บัส) ซึ่งเชื่อมต่อกับโปรเซสเซอร์อีกที การเข้าถึงโคโปรเซสเซอร์มีความหน่วงต่ำกว่า ดังนั้นอุปกรณ์ต่อพ่วงบางอย่าง เช่น ตัวควบคุมการขัดจังหวะ XScale จึงสามารถเข้าถึงได้ทั้งสองวิธี คือ ผ่านหน่วยความจำและผ่านโคโปรเซสเซอร์
ในบางกรณี นักออกแบบชิปจะรวมฮาร์ดแวร์โดยใช้กลไกโคโปรเซสเซอร์เท่านั้น ตัวอย่างเช่น หน่วยประมวลผลภาพอาจเป็นแกน ARM7TDMI ขนาดเล็กที่รวมกับโคโปรเซสเซอร์ที่มีการทำงานเฉพาะเพื่อรองรับชุดคำสั่งพื้นฐานสำหรับการแปลงรหัส HDTV โดยเฉพาะ
การดีบัก
โปรเซสเซอร์ ARM รุ่นใหม่ทั้งหมดมีฟังก์ชันการดีบักด้วยฮาร์ดแวร์ ทำให้ดีบักซอฟต์แวร์สามารถดำเนินการต่างๆ เช่น การหยุด การก้าวทีละขั้น และการตั้งจุดหยุดของโค้ดโดยเริ่มจากรีเซ็ต ฟังก์ชันเหล่านี้สร้างขึ้นโดยใช้ การสนับสนุน JTAGแม้ว่าคอร์รุ่นใหม่บางรุ่นจะรองรับโปรโตคอล "SWD" แบบสองสายของ ARM เองก็ตาม ในคอร์ ARM7TDMI ตัวอักษร "D" หมายถึงการสนับสนุนการดีบัก JTAG และตัวอักษร "I" หมายถึงการมีอยู่ของโมดูลดีบัก "EmbeddedICE" สำหรับคอร์ ARM7 และ ARM9 นั้น EmbeddedICE ผ่าน JTAG เป็นมาตรฐานการดีบักโดยพฤตินัย แม้ว่าจะไม่ได้รับการรับประกันทางสถาปัตยกรรมก็ตาม
สถาปัตยกรรม ARMv7 กำหนดฟังก์ชันการดีบักพื้นฐานในระดับสถาปัตยกรรม ซึ่งรวมถึงเบรกพอยต์ วอชพอยต์ และการเรียกใช้คำสั่งใน "โหมดดีบัก" ฟังก์ชันที่คล้ายกันนี้เคยมีอยู่ใน EmbeddedICE มาก่อนแล้ว รองรับการดีบักทั้งโหมด "หยุดทำงาน" และโหมด "ตรวจสอบ" กลไกการส่งข้อมูลที่ใช้ในการเข้าถึงฟังก์ชันการดีบักนั้นไม่ได้ระบุไว้ในระดับสถาปัตยกรรม แต่โดยทั่วไปแล้วการใช้งานจะรองรับ JTAG
มีสถาปัตยกรรมดีบัก ARM "CoreSight" แยกต่างหาก ซึ่งไม่ใช่ข้อกำหนดทางสถาปัตยกรรมสำหรับโปรเซสเซอร์ ARMv7
พอร์ตการเข้าถึงการดีบัก
พอร์ตการเข้าถึงการดีบัก (DAP) เป็นการใช้งานอินเทอร์เฟซการดีบัก ARM [ 131 ] มีการใช้งานที่รองรับสองแบบที่แตกต่างกัน คือ พอร์ตการดีบัก JTAG แบบอนุกรม (SWJ-DP) และพอร์ตการดีบักแบบอนุกรม (SW-DP) [ 132 ] CMSIS-DAP เป็นอินเทอร์เฟซมาตรฐานที่อธิบายวิธีการที่ซอฟต์แวร์ดีบักต่างๆ บนพีซีโฮสต์สามารถสื่อสารผ่าน USB กับเฟิร์มแวร์ที่ทำงานบนฮาร์ดแวร์ดีบักเกอร์ ซึ่งจะสื่อสารผ่าน SWD หรือ JTAG กับ CPU ARM Cortex ที่เปิดใช้งาน CoreSight [ 133 ] [ 134 ] [ 135 ]
คำแนะนำในการปรับปรุง DSP
เพื่อปรับปรุงสถาปัตยกรรม ARM สำหรับการประมวลผลสัญญาณดิจิทัลและแอปพลิเคชันมัลติมีเดีย จึงมีการเพิ่มคำสั่ง DSP ลงในชุดคำสั่ง[ 136 ]คำสั่งเหล่านี้แสดงด้วยตัวอักษร "E" ในชื่อของสถาปัตยกรรม ARMv5TE และ ARMv5TEJ ตัวแปร E ยังหมายถึง T, D, M และ I ด้วย
คำสั่งใหม่เหล่านี้พบได้ทั่วไปใน สถาปัตยกรรม ตัวประมวลผลสัญญาณดิจิทัล (DSP) ซึ่งรวมถึงรูปแบบต่างๆ ของ การคูณและสะสมแบบมีเครื่องหมาย การบวกและการลบแบบอิ่มตัวและการนับศูนย์นำหน้า
ส่วนขยายของชุดคำสั่งหลักนี้ ซึ่งเปิดตัวครั้งแรกในปี 1999 นั้นแตกต่างจากโคโปรเซสเซอร์ DSP รุ่นก่อนหน้าของ ARM ที่รู้จักกันในชื่อ Piccolo ซึ่งใช้ชุดคำสั่งที่แตกต่างและไม่เข้ากัน โดยการดำเนินการนั้นเกี่ยวข้องกับตัวนับโปรแกรมแยกต่างหาก[ 137 ]คำสั่ง Piccolo ใช้ไฟล์รีจิสเตอร์ที่แตกต่างกันจำนวน 16 รีจิสเตอร์ขนาด 32 บิต โดยคำสั่งบางคำสั่งจะรวมรีจิสเตอร์เพื่อใช้เป็นตัวสะสมขนาด 48 บิต และคำสั่งอื่นๆ จะระบุรีจิสเตอร์ครึ่งขนาด 16 บิต คำสั่งบางคำสั่งสามารถทำงานกับค่า 16 บิตสองค่าพร้อมกันได้ การสื่อสารกับไฟล์รีจิสเตอร์ Piccolo เกี่ยวข้องกับ คำสั่ง โหลดไปยัง Piccoloและจัดเก็บจากโคโปรเซสเซอร์ Piccolo ผ่านบัฟเฟอร์สองตัวที่มีรายการขนาด 32 บิตจำนวน 8 รายการ Piccolo ได้รับการอธิบายว่าคล้ายคลึงกับวิธีการอื่นๆ โดยเฉพาะอย่างยิ่ง SH-DSP ของ Hitachi และ 68356 ของ Motorola Piccolo ไม่ได้ใช้หน่วยความจำเฉพาะที่และอาศัยแบนด์วิดท์ของแกน ARM สำหรับการดึงตัวดำเนินการ DSP ซึ่งส่งผลกระทบต่อประสิทธิภาพการทำงานพร้อมกัน[ 138 ]ชุดคำสั่งเฉพาะของ Piccolo ยังพิสูจน์ได้ว่าไม่ใช่ "เป้าหมายคอมไพเลอร์ที่ดี" [ 137 ]
ส่วนขยาย SIMD สำหรับมัลติมีเดีย
นำเสนอในสถาปัตยกรรม ARMv6 ซึ่งเป็นต้นแบบของ Advanced SIMD หรือที่รู้จักกันในชื่อ Neon [ 139 ]
จาเซลล์
Jazelle DBX (Direct Bytecode eXecution) เป็นเทคนิคที่ช่วยให้สามารถ ประมวล ผลไบต์โค้ดของ Javaได้โดยตรงในสถาปัตยกรรม ARM ในฐานะสถานะการประมวลผลที่สาม (และชุดคำสั่ง) นอกเหนือจากโหมด ARM และ Thumb ที่มีอยู่เดิม การรองรับสถานะนี้แสดงด้วยตัวอักษร "J" ในสถาปัตยกรรม ARMv5TEJ และในชื่อคอร์ ARM9EJ-S และ ARM7EJ-S การรองรับสถานะนี้เป็นสิ่งจำเป็นตั้งแต่ ARMv6 เป็นต้นไป (ยกเว้นโปรไฟล์ ARMv7-M) แม้ว่าคอร์รุ่นใหม่กว่าจะมีเพียงการใช้งานแบบง่ายๆ ที่ไม่มีการเร่งความเร็วด้วยฮาร์ดแวร์ก็ตาม
นิ้วโป้ง
เพื่อปรับปรุงความหนาแน่นของโค้ดที่คอมไพล์แล้ว โปรเซสเซอร์ตั้งแต่ ARM7TDMI (เปิดตัวในปี 1994 [ 140 ] ) ได้นำเสนอชุดคำสั่งThumb ที่บีบอัด ซึ่งมีสถานะเป็นของตัวเอง (ตัวอักษร "T" ใน "TDMI" บ่งบอกถึงคุณสมบัติ Thumb) เมื่ออยู่ในสถานะนี้ โปรเซสเซอร์จะดำเนินการชุดคำสั่ง Thumb ซึ่งเป็นการเข้ารหัส 16 บิตขนาดกะทัดรัดสำหรับชุดย่อยของชุดคำสั่ง ARM [ 141 ]คำสั่ง Thumb ส่วนใหญ่จะถูกแมปโดยตรงกับคำสั่ง ARM ปกติ การประหยัดพื้นที่มาจากการทำให้ตัวถูกดำเนินการของคำสั่งบางส่วนเป็นแบบโดยปริยายและจำกัดจำนวนความเป็นไปได้เมื่อเทียบกับคำสั่ง ARM ที่ดำเนินการในสถานะชุดคำสั่ง ARM
ใน Thumb นั้น โอเปอเรเตอร์โค้ด 16 บิตมีฟังก์ชันการทำงานน้อยกว่า ตัวอย่างเช่น มีเพียงคำสั่งกระโดดแบบมีเงื่อนไขเท่านั้น และโอเปอเรเตอร์โค้ดหลายตัวถูกจำกัดให้เข้าถึงได้เพียงครึ่งหนึ่งของรีจิสเตอร์อเนกประสงค์ทั้งหมดของ CPU เท่านั้น โอเปอเรเตอร์โค้ดที่สั้นกว่าทำให้ความหนาแน่นของโค้ดโดยรวมดีขึ้น แม้ว่าการทำงานบางอย่างจะต้องการคำสั่งเพิ่มเติมก็ตาม ในสถานการณ์ที่ความกว้างของพอร์ตหน่วยความจำหรือบัสถูกจำกัดไว้ที่น้อยกว่า 32 บิต โอเปอเรเตอร์โค้ด Thumb ที่สั้นกว่าจะช่วยเพิ่มประสิทธิภาพเมื่อเทียบกับโค้ด ARM 32 บิต เนื่องจากอาจต้องโหลดโค้ดโปรแกรมลงในโปรเซสเซอร์น้อยลงผ่านแบนด์วิดธ์หน่วยความจำที่จำกัด
แตกต่างจากสถาปัตยกรรมโปรเซสเซอร์ที่มีคำสั่งความยาวแปรผัน (16 หรือ 32 บิต) เช่น Cray-1 และHitachi SuperHชุดคำสั่ง ARM และ Thumb นั้นทำงานแยกจากกัน ฮาร์ดแวร์ฝังตัว เช่นGame Boy Advanceโดยทั่วไปจะมี RAM จำนวนเล็กน้อยที่สามารถเข้าถึงได้ด้วยเส้นทางข้อมูล 32 บิตเต็มรูปแบบ ส่วนใหญ่จะเข้าถึงผ่านเส้นทางข้อมูลรอง 16 บิตหรือแคบกว่า ในสถานการณ์เช่นนี้ การคอมไพล์โค้ด Thumb และปรับแต่งส่วนที่ใช้ CPU มากที่สุดบางส่วนด้วยตนเองโดยใช้คำสั่ง ARM 32 บิตเต็มรูปแบบ โดยวางคำสั่งที่กว้างกว่าเหล่านี้ไว้ในหน่วยความจำที่เข้าถึงได้ผ่านบัส 32 บิต มักจะเหมาะสมกว่า
โปรเซสเซอร์ตัวแรกที่มีตัวถอดรหัสคำสั่ง Thumb คือ ARM7TDMI โปรเซสเซอร์ทั้งหมดที่รองรับชุดคำสั่ง 32 บิต ตั้งแต่ ARM9 เป็นต้นไป รวมถึง XScale ก็มีตัวถอดรหัสคำสั่ง Thumb ด้วย ซึ่งประกอบด้วยคำสั่งที่นำมาจาก Hitachi SuperH (1992) ซึ่งได้รับอนุญาตจาก ARM [ 142 ]ตระกูลโปรเซสเซอร์ขนาดเล็กที่สุดของ ARM (Cortex M0 และ M1) ใช้ชุดคำสั่ง Thumb 16 บิตเท่านั้นเพื่อให้ได้ประสิทธิภาพสูงสุดในแอปพลิเคชันที่มีต้นทุนต่ำที่สุด โปรเซสเซอร์ ARM ที่ไม่รองรับการกำหนดแอดเดรส 32 บิตก็จะไม่มี Thumb เช่นกัน
นิ้วโป้ง-2
เทคโนโลยี Thumb-2ถูกนำมาใช้ในแกนประมวลผล ARM1156ซึ่งประกาศในปี 2546 Thumb-2 ขยายชุดคำสั่ง 16 บิตที่จำกัดของ Thumb ด้วยคำสั่ง 32 บิตเพิ่มเติม เพื่อให้ชุดคำสั่งมีขอบเขตที่กว้างขึ้น จึงทำให้ได้ชุดคำสั่งที่มีความยาวแปรผันได้ เป้าหมายที่ระบุไว้สำหรับ Thumb-2 คือการบรรลุความหนาแน่นของโค้ดที่คล้ายกับ Thumb พร้อมประสิทธิภาพที่คล้ายกับชุดคำสั่ง ARM บนหน่วยความจำ 32 บิต
Thumb-2 ขยายชุดคำสั่ง Thumb ด้วยการจัดการบิตฟิลด์ การกระโดดไปยังตาราง และการดำเนินการแบบมีเงื่อนไข ในขณะเดียวกัน ชุดคำสั่ง ARM ก็ได้รับการขยายเพื่อรักษาฟังก์ชันการทำงานที่เทียบเท่ากันในทั้งสองชุดคำสั่ง ภาษาแอสเซมบลีแบบรวม (Unified Assembly Language หรือ UAL) ใหม่รองรับการสร้างคำสั่ง Thumb หรือ ARM จากซอร์สโค้ดเดียวกัน เวอร์ชันของ Thumb ที่พบในโปรเซสเซอร์ ARMv7 นั้นมีความสามารถเทียบเท่ากับโค้ด ARM (รวมถึงความสามารถในการเขียนตัวจัดการการขัดจังหวะ) อย่างไรก็ตาม ต้องใช้ความระมัดระวังเล็กน้อย และการใช้คำสั่ง "IT" (if-then) ใหม่ ซึ่งอนุญาตให้ดำเนินการคำสั่งต่อเนื่องได้สูงสุดสี่คำสั่งโดยขึ้นอยู่กับเงื่อนไขที่ทดสอบ หรือเงื่อนไขผกผัน เมื่อคอมไพล์เป็นโค้ด ARM คำสั่งนี้จะถูกละเว้น แต่เมื่อคอมไพล์เป็น Thumb จะสร้างคำสั่งจริง ตัวอย่างเช่น:
; ถ้า (r0 == r1) CMP r0 , r1 ITE EQ ; ARM: ไม่มีโค้ด ... Thumb: คำสั่ง IT ; จากนั้น r0 = r2; MOVEQ r0 , r2 ; ARM: มีเงื่อนไข; Thumb: เงื่อนไขผ่าน ITE 'T' (จากนั้น) ; มิฉะนั้น r0 = r3; MOVNE r0 , r3 ; ARM: มีเงื่อนไข; Thumb: เงื่อนไขผ่าน ITE 'E' (มิฉะนั้น) ; โปรดจำไว้ว่าคำสั่ง MOV ของ Thumb ไม่มีบิตสำหรับเข้ารหัส "EQ" หรือ "NE"ชิป ARMv7 ทั้งหมดรองรับชุดคำสั่ง Thumb ชิปทั้งหมดในซีรี่ส์ Cortex-A ที่รองรับ ARMv7 ชิปทั้งหมดในซีรี่ส์ Cortex-R และชิปทั้งหมดในซีรี่ส์ ARM11 รองรับทั้ง "สถานะชุดคำสั่ง ARM" และ "สถานะชุดคำสั่ง Thumb" ในขณะที่ชิปใน ซีรี่ส์ Cortex-Mรองรับเฉพาะชุดคำสั่ง Thumb เท่านั้น[ 143 ] [ 144 ] [ 145 ]
สภาพแวดล้อมการประมวลผลด้วยนิ้วหัวแม่มือ (ThumbEE)
ThumbEE (เรียกผิดว่าThumb-2EEในเอกสาร ARM บางฉบับ) ซึ่งวางจำหน่ายในชื่อ Jazelle RCT [ 146 ] (Runtime Compilation Target) ได้รับการประกาศในปี 2548 และเลิกใช้ในปี 2554 โดยปรากฏครั้งแรกใน โปรเซสเซอร์ Cortex-A8 ThumbEE เป็นสถานะชุดคำสั่งที่สี่ ซึ่งทำการเปลี่ยนแปลงเล็กน้อยกับชุดคำสั่งขยาย Thumb-2 การเปลี่ยนแปลงเหล่านี้ทำให้ชุดคำสั่งเหมาะสมเป็นพิเศษสำหรับโค้ดที่สร้างขึ้นในขณะรันไทม์ (เช่น โดยการคอมไพล์ JIT ) ในสภาพแวดล้อมการดำเนินการ แบบจัดการ ThumbEE เป็นเป้าหมายสำหรับภาษาต่างๆ เช่นJava , C# , PerlและPythonและอนุญาตให้คอมไพล์เลอร์ JITส่งออกโค้ดที่คอมไพล์แล้วที่มีขนาดเล็กกว่าโดยไม่ลดประสิทธิภาพ
คุณสมบัติใหม่ที่ ThumbEE นำเสนอ ได้แก่ การตรวจสอบตัวชี้ว่างอัตโนมัติในทุกคำสั่งโหลดและจัดเก็บ คำสั่งสำหรับตรวจสอบขอบเขตของอาร์เรย์ และคำสั่งพิเศษที่เรียกแฮนด์เลอร์ นอกจากนี้ เนื่องจากใช้เทคโนโลยี Thumb-2 ThumbEE จึงสามารถเข้าถึงรีจิสเตอร์ r8–r15 (ซึ่งเป็นที่เก็บสถานะ Java VM ของ Jazelle/DBX) [ 147 ]แฮนด์เลอร์เป็นส่วนเล็ก ๆ ของโค้ดที่ถูกเรียกใช้บ่อย ซึ่งมักใช้ในการใช้งานภาษาโปรแกรมระดับสูง เช่น การจัดสรรหน่วยความจำสำหรับวัตถุใหม่ การเปลี่ยนแปลงเหล่านี้มาจากการนำโอเปรนด์จำนวนหนึ่งมาใช้ใหม่ และการรู้ว่าแกนหลักอยู่ในสถานะ ThumbEE ใหม่
เมื่อวันที่ 23 พฤศจิกายน 2011 Arm ได้ยกเลิกการใช้งานชุดคำสั่ง ThumbEE [ 148 ]และ Armv8 ได้ลบการสนับสนุน ThumbEE ออกไป
เลขทศนิยม (VFP)
เทคโนโลยี VFP (Vector Floating Point) เป็น ส่วนขยายของ หน่วยประมวลผลจุดลอยตัว (FPU) สำหรับสถาปัตยกรรม ARM [ 149 ] (ใช้งานแตกต่างกันใน Armv8 – ไม่มีการกำหนดหน่วยประมวลผลร่วมไว้ที่นั่น) โดยให้ การคำนวณ จุดลอยตัวแบบความแม่นยำเดี่ยวและ ความแม่นยำคู่ที่มีต้นทุนต่ำ ซึ่งสอดคล้องกับมาตรฐาน ANSI/IEEE Std 754-1985 สำหรับการคำนวณเลขจุดลอยตัวแบบไบนารีอย่าง สมบูรณ์ VFP ให้การคำนวณจุดลอยตัวที่เหมาะสมสำหรับแอปพลิเคชันที่หลากหลาย เช่น PDA สมาร์ทโฟน การบีบอัดและคลายการบีบอัดเสียง กราฟิกสามมิติและเสียงดิจิทัล เครื่องพิมพ์ กล่องรับสัญญาณ และแอปพลิเคชันยานยนต์ สถาปัตยกรรม VFP มีจุดประสงค์เพื่อรองรับการทำงานของคำสั่ง "โหมดเวกเตอร์" สั้นๆ แต่คำสั่งเหล่านี้ทำงานกับแต่ละองค์ประกอบเวกเตอร์ตามลำดับ ดังนั้นจึงไม่ได้ให้ประสิทธิภาพของการ ประมวลผลแบบขนานเวกเตอร์แบบ คำสั่งเดียว ข้อมูลหลายรายการ (SIMD) อย่างแท้จริง ดังนั้นโหมดเวกเตอร์นี้จึงถูกลบออกหลังจากเปิดตัวได้ไม่นาน[ 150 ]เพื่อแทนที่ด้วย Advanced SIMD ที่ทรงพลังกว่ามาก ซึ่งเรียกอีกอย่างว่า Neon
อุปกรณ์บางอย่าง เช่น ARM Cortex-A8 มี โมดูล VFPLite ที่ลดขนาดลง แทนที่จะเป็นโมดูล VFP เต็มรูปแบบ และต้องการรอบสัญญาณนาฬิกามากกว่าประมาณสิบเท่าต่อการดำเนินการ float [ 151 ]สถาปัตยกรรมก่อน Armv8 ใช้การคำนวณจุดลอยตัว/SIMD ด้วยอินเทอร์เฟซโคโปรเซสเซอร์ หน่วยคำนวณจุดลอยตัวและ/หรือ SIMD อื่นๆ ที่พบในโปรเซสเซอร์ที่ใช้ ARM โดยใช้อินเทอร์เฟซโคโปรเซสเซอร์ ได้แก่FPA , FPE, iwMMXtซึ่งบางส่วนถูกนำไปใช้ในซอฟต์แวร์โดยการดักจับ แต่สามารถนำไปใช้ในฮาร์ดแวร์ได้ พวกมันมีฟังก์ชันการทำงานบางอย่างเหมือนกับ VFP แต่ไม่ เข้า กันได้กับรหัสคำสั่ง FPA10 ยังให้ความแม่นยำที่เพิ่มขึ้นแต่ใช้การปัดเศษที่ถูกต้อง (ตามข้อกำหนดของ IEEE 754) เฉพาะในความแม่นยำเดี่ยวเท่านั้น[ 152 ]
- วีเอฟพีวีวี1
- ล้าสมัย
- วีเอฟเอฟวี2
- VFPv2 เป็นส่วนขยายเสริมของชุดคำสั่ง ARM ในสถาปัตยกรรม ARMv5TE, ARMv5TEJ และ ARMv6 โดยมีรีจิสเตอร์ FPU ขนาด 64 บิต จำนวน 16 ตัว
- VFPv3 หรือ VFPv3-D32
- VFPv3 ถูกนำไปใช้ในโปรเซสเซอร์ ARMv7 Cortex-A8 และ A9 ส่วนใหญ่ สามารถใช้งานร่วมกับ VFPv2 ได้ ยกเว้นว่าจะไม่สามารถดักจับข้อผิดพลาดเกี่ยวกับเลขทศนิยมได้ VFPv3 มีรีจิสเตอร์ FPU ขนาด 64 บิต จำนวน 32 ตัวเป็นมาตรฐาน เพิ่มคำสั่ง VCVT สำหรับแปลงระหว่างค่าสเกลาร์ เลขทศนิยม และเลขฐานสอง และเพิ่มโหมดทันทีให้กับ VMOV เพื่อให้สามารถโหลดค่าคงที่ลงในรีจิสเตอร์ FPU ได้
- วีเอฟเอฟวี3-ดี16
- เช่นเดียวกับข้างต้น แต่ใช้รีจิสเตอร์ FPU 64 บิตเพียง 16 ตัวเท่านั้น นำไปใช้งานบนโปรเซสเซอร์ Cortex-R4 และ R5 และTegra 2 (Cortex-A9)
- วีเอฟพีวีวี3-เอฟ16
- ไม่ค่อยพบเห็นทั่วไป เนื่องจากรองรับรูปแบบการจัดเก็บข้อมูลแบบจุดลอยตัวความแม่นยำครึ่งหนึ่ง (16 บิต) ตามมาตรฐาน IEEE754-2008
- VFPv4 หรือ VFPv4-D32
- ใช้งานบนโปรเซสเซอร์ Cortex-A12 และ A15 ARMv7 โดย Cortex-A7 มีตัวเลือก VFPv4-D32 ในกรณีที่ FPU มี Neon [ 153 ] VFPv4 มีรีจิสเตอร์ FPU 64 บิต 32 ตัวเป็นมาตรฐาน เพิ่มการรองรับความแม่นยำครึ่งหนึ่งเป็นรูปแบบการจัดเก็บและ คำสั่ง การคูณสะสมแบบรวมเข้ากับคุณสมบัติของ VFPv3
- วีเอฟเอฟวี4-ดี16
- เช่นเดียวกับข้างต้น แต่มีรีจิสเตอร์ FPU 64 บิตเพียง 16 ตัวเท่านั้น ใช้งานบนโปรเซสเซอร์ Cortex-A5 และ A7 ในกรณีที่ไม่มี Neon สำหรับ FPU [ 153 ]
- วีเอฟพีวี5-ดี16-เอ็ม
- ใช้งานได้บน Cortex-M7 เมื่อมีตัวเลือกแกนประมวลผลจุดลอยตัวแบบความแม่นยำเดี่ยวและความแม่นยำคู่
ในDebian Linuxและระบบปฏิบัติการที่พัฒนาต่อยอดจาก Debian เช่นUbuntuและLinux Mintนั้นarmhf ( ARM hard float ) หมายถึงสถาปัตยกรรม ARMv7 ซึ่งรวมถึงส่วนขยายฮาร์ดแวร์จุดลอยตัว VFP3-D16 เพิ่มเติม (และ Thumb-2) ด้านบน แพ็กเกจซอฟต์แวร์และเครื่องมือคอมไพเลอร์แบบครอสคอมไพล์จะใช้คำต่อท้าย armhf เทียบกับ arm/armel เพื่อแยกความแตกต่าง[ 154 ]
SIMD ขั้นสูง (นีออน)
ส่วน ขยาย SIMD ขั้นสูง (หรือที่รู้จักกันในชื่อNeonหรือ "MPE" Media Processing Engine) เป็นชุดคำสั่ง SIMD แบบผสม 64 บิตและ128 บิตซึ่งให้การเร่งความเร็วแบบมาตรฐานสำหรับแอปพลิเคชันการประมวลผลสื่อและสัญญาณ Neon มีอยู่ในอุปกรณ์ Cortex-A8 ทั้งหมด แต่เป็นตัวเลือกในอุปกรณ์ Cortex-A9 [ 155 ] Neon สามารถถอดรหัสเสียง MP3 บน CPU ที่ทำงานที่ 10 MHz และสามารถเรียกใช้ ตัวแปลงสัญญาณเสียง GSM adaptive multi-rate (AMR) ที่ 13 MHz มีชุดคำสั่งที่ครอบคลุม ไฟล์รีจิสเตอร์แยกต่างหาก และฮาร์ดแวร์การประมวลผลอิสระ[ 156 ] Neon รองรับข้อมูลจำนวนเต็ม 8, 16, 32 และ 64 บิต และข้อมูลจุดลอยตัวความแม่นยำเดี่ยว (32 บิต) และการดำเนินการ SIMD สำหรับการจัดการการประมวลผลเสียงและวิดีโอ รวมถึงการประมวลผลกราฟิกและเกม ใน Neon นั้น SIMD รองรับการดำเนินการได้สูงสุด 16 รายการพร้อมกัน ฮาร์ดแวร์ Neon ใช้รีจิสเตอร์จุดลอยตัวเดียวกันกับที่ใช้ใน VFP อุปกรณ์ต่างๆ เช่น ARM Cortex-A8 และ Cortex-A9 รองรับเวกเตอร์ 128 บิต แต่จะประมวลผลทีละ 64 บิต[ 151 ]ในขณะที่ซีพียูที่มีประสิทธิภาพสูงกว่าบางตัว เช่น Cortex-A15 สามารถประมวลผลทีละ 128 บิตได้[ 157 ] [ 158 ]
ข้อบกพร่องอย่างหนึ่งของ Neon ในอุปกรณ์ Armv7 คือมันจะล้างตัวเลขย่อยปกติ ทั้งหมด ให้เป็นศูนย์ และเป็นผลให้ คอมไพเลอร์ GCCจะไม่ใช้มันเว้นแต่-funsafe-math-optimizationsจะเปิดใช้งาน ซึ่งอนุญาตให้สูญเสียตัวเลขที่ผิดเพี้ยน Neon "Enhanced" ที่กำหนดไว้ตั้งแต่ Armv8 ไม่มีข้อบกพร่องนี้ แต่ในGCC 8.2ยังคงต้องใช้แฟล็กเดียวกันเพื่อเปิดใช้งานคำสั่ง Neon [ 159 ]ในทางกลับกัน GCC ถือว่า Neon ปลอดภัยบน AArch64 สำหรับ Armv8
ProjectNe10 เป็นโครงการโอเพนซอร์สแรกของ ARM (นับตั้งแต่เริ่มก่อตั้ง แม้ว่าพวกเขาจะซื้อโครงการเก่าที่ปัจจุบันชื่อMbed TLS มาแล้วก็ตาม ) ไลบรารี Ne10 เป็นชุดฟังก์ชันทั่วไปที่มีประโยชน์ซึ่งเขียนด้วยภาษา Neon และ C (เพื่อความเข้ากันได้) ไลบรารีนี้สร้างขึ้นเพื่อให้ผู้พัฒนาสามารถใช้การเพิ่มประสิทธิภาพของ Neon โดยไม่ต้องเรียนรู้ Neon แต่ยังทำหน้าที่เป็นชุดตัวอย่างโค้ด Neon intrinsic และโค้ดแอสเซมบลีที่ได้รับการปรับแต่งอย่างสูงสำหรับรูทีน DSP การคำนวณทางคณิตศาสตร์ และการประมวลผลภาพทั่วไป ซอร์สโค้ดมีให้ใช้งานบน GitHub [ 160 ]
เทคโนโลยีฮีเลียม ARM
Helium คือส่วนขยายเวกเตอร์โปรไฟล์ M (MVE) ซึ่งเพิ่มคำสั่งสเกลาร์และเวกเตอร์มากกว่า 150 รายการ[ 161 ]
ส่วนขยายด้านความปลอดภัย
TrustZone (สำหรับโปรไฟล์ Cortex-A)
ส่วนขยายด้านความปลอดภัย ซึ่งวางจำหน่ายในชื่อเทคโนโลยี TrustZone นั้นมีอยู่ในสถาปัตยกรรมโปรไฟล์แอปพลิเคชัน ARMv6KZ และรุ่นต่อมา โดยเป็นทางเลือกที่มีต้นทุนต่ำกว่าการเพิ่มคอร์ความปลอดภัยเฉพาะอีกตัวให้กับ SoC ด้วยการจัดเตรียมโปรเซสเซอร์เสมือนสองตัวที่ได้รับการสนับสนุนจากการควบคุมการเข้าถึงตามฮาร์ดแวร์ ซึ่งทำให้คอร์แอปพลิเคชันสามารถสลับระหว่างสองสถานะที่เรียกว่าโลก (เพื่อลดความสับสนกับชื่ออื่นๆ สำหรับโดเมนความสามารถ) เพื่อป้องกันการรั่วไหลของข้อมูลจากโลกที่น่าเชื่อถือมากกว่า ( โลกที่ปลอดภัย ) ไปยังโลกที่น่าเชื่อถือน้อยกว่า ( โลกปกติ ) [ 162 ]การสลับโลกนี้โดยทั่วไปจะเป็นอิสระจากความสามารถอื่นๆ ทั้งหมดของโปรเซสเซอร์ ดังนั้นแต่ละโลกจึงสามารถทำงานได้อย่างอิสระจากกันในขณะที่ใช้คอร์เดียวกัน จากนั้นหน่วยความจำและอุปกรณ์ต่อพ่วงจะรับรู้ถึงโลกการทำงานของคอร์และอาจใช้สิ่งนี้เพื่อควบคุมการเข้าถึงความลับและรหัสบนอุปกรณ์[ 163 ]
โดยทั่วไป ระบบปฏิบัติการที่มีฟังก์ชันการทำงานมากมายจะทำงานในโลกที่มีความน่าเชื่อถือน้อยกว่า โดยมีโค้ดเฉพาะด้านความปลอดภัยขนาดเล็กกว่าอยู่ในโลกที่มีความน่าเชื่อถือมากกว่า โดยมีเป้าหมายเพื่อลดพื้นที่การโจมตี แอ ปพลิเคชันทั่วไป ได้แก่ ฟังก์ชัน DRMสำหรับควบคุมการใช้สื่อบนอุปกรณ์ที่ใช้ ARM [ 164 ]และป้องกันการใช้งานอุปกรณ์โดยไม่ได้รับอนุญาต
ในทางปฏิบัติ เนื่องจากรายละเอียดการใช้งานเฉพาะของการใช้งาน TrustZone ที่เป็นกรรมสิทธิ์ไม่ได้ถูกเปิดเผยต่อสาธารณะเพื่อการตรวจสอบ จึงไม่ชัดเจนว่ามีการรับประกันในระดับใดสำหรับแบบจำลองภัยคุกคาม ที่กำหนด แต่ระบบเหล่านี้ไม่ได้ปลอดภัยจากการโจมตี[ 165 ] [ 166 ]
Open Virtualization [ 167 ]เป็นการใช้งานแบบโอเพนซอร์สของสถาปัตยกรรมโลกที่เชื่อถือได้สำหรับ TrustZone
AMDได้อนุญาตและรวมเทคโนโลยี TrustZone เข้าไว้ในเทคโนโลยี Secure Processor ของตน[ 168 ] APU ของ AMDประกอบด้วยโปรเซสเซอร์ Cortex-A5 สำหรับจัดการการประมวลผลที่ปลอดภัย ซึ่งเปิดใช้งานในบางผลิตภัณฑ์ แต่ไม่ใช่ทุกผลิตภัณฑ์[ 169 ] [ 170 ] [ 171 ]อันที่จริงแล้ว แกน Cortex-A5 TrustZone ได้ถูกรวมไว้ในผลิตภัณฑ์ AMD รุ่นก่อนหน้า แต่ไม่ได้เปิดใช้งานเนื่องจากข้อจำกัดด้านเวลา[ 170 ]
Samsung Knoxใช้ TrustZone เพื่อวัตถุประสงค์ต่างๆ เช่น การตรวจจับการแก้ไขเคอร์เนล การจัดเก็บใบรับรอง และการรับรองคีย์[ 172 ]
TrustZone สำหรับ Armv8-M (สำหรับโปรไฟล์ Cortex-M)
ส่วนขยายด้านความปลอดภัย ซึ่งวางจำหน่ายในชื่อ TrustZone สำหรับเทคโนโลยี Armv8-M ได้รับการแนะนำในสถาปัตยกรรม Armv8-M แม้ว่าจะมีแนวคิดที่คล้ายคลึงกับ TrustZone สำหรับ Armv8-A แต่ก็มีการออกแบบสถาปัตยกรรมที่แตกต่างกัน เนื่องจากการสลับโลกจะดำเนินการโดยใช้คำสั่งสาขาแทนที่จะใช้ข้อยกเว้น[ 173 ]นอกจากนี้ยังรองรับการจัดการการขัดจังหวะแบบสลับที่ปลอดภัยจากโลกใดก็ได้โดยไม่คำนึงถึงสถานะความปลอดภัยในปัจจุบัน คุณสมบัติเหล่านี้ร่วมกันให้การเรียกใช้ที่มีความหน่วงต่ำไปยังโลกที่ปลอดภัยและการจัดการการขัดจังหวะที่ตอบสนองได้ดี ARM มีสแต็กอ้างอิงของโค้ดโลกที่ปลอดภัยในรูปแบบของ Trusted Firmware สำหรับ M และPSA Certified
การป้องกันหน้าเว็บที่ไม่สามารถเรียกใช้งานได้
ตั้งแต่ ARMv6 สถาปัตยกรรม ARM รองรับ การป้องกันเพจ แบบไม่ต้องเรียกใช้งานซึ่งเรียกว่าXNหรือeXecute Never [ 174 ]
ส่วนขยายที่อยู่ทางกายภาพขนาดใหญ่ (LPAE)
ส่วนขยายที่อยู่ทางกายภาพขนาดใหญ่ (LPAE) ซึ่งขยายขนาดที่อยู่ทางกายภาพจาก 32 บิตเป็น 40 บิต ได้ถูกเพิ่มเข้าไปในสถาปัตยกรรม Armv7-A ในปี 2011 [ 175 ]
ขนาดที่อยู่ทางกายภาพอาจมีขนาดใหญ่ขึ้นในโปรเซสเซอร์ที่ใช้สถาปัตยกรรม 64 บิต (Armv8-A) ตัวอย่างเช่น มีขนาด 44 บิตใน Cortex-A75 และ Cortex-A65AE [ 176 ]
อาร์มวี8-อาร์ และ อาร์มวี8-เอ็ม
สถาปัตยกรรมArmv8-RและArmv8-Mซึ่งประกาศหลังจากสถาปัตยกรรม Armv8-A นั้น มีคุณสมบัติบางอย่างร่วมกับ Armv8-A อย่างไรก็ตาม Armv8-M ไม่ได้รวมคำสั่ง AArch64 แบบ 64 บิตไว้ และ Armv8-R เดิมทีก็ไม่ได้รวมคำสั่ง AArch64 ไว้เช่นกัน คำสั่งเหล่านั้นถูกเพิ่มเข้าไปในArmv8-Rในภายหลัง
อาร์มวี8.1-เอ็ม
สถาปัตยกรรม Armv8.1-M ซึ่งประกาศในเดือนกุมภาพันธ์ 2019 เป็นการปรับปรุงสถาปัตยกรรม Armv8.M โดยมีคุณสมบัติใหม่ ๆ ดังนี้:
- ส่วนขยายชุดคำสั่งเวกเตอร์แบบใหม่ ส่วนขยายเวกเตอร์ M-Profile (MVE) หรือ Helium ใช้สำหรับการประมวลผลสัญญาณและแอปพลิเคชันการเรียนรู้ของเครื่อง
- การปรับปรุงชุดคำสั่งเพิ่มเติมสำหรับลูปและคำสั่งกระโดด (ส่วนขยายคำสั่งกระโดดที่มีค่าใช้จ่ายในการดำเนินการต่ำ)
- คำแนะนำสำหรับการรองรับเลขทศนิยมความแม่นยำครึ่งหนึ่ง
- การปรับปรุงชุดคำสั่งสำหรับการจัดการ TrustZone สำหรับหน่วยประมวลผลทศนิยม (FPU)
- คุณสมบัติหน่วยความจำใหม่ในหน่วยป้องกันหน่วยความจำ (MPU)
- การปรับปรุงด้านการดีบัก รวมถึงหน่วยตรวจสอบประสิทธิภาพ (PMU), ส่วนขยายการดีบักที่ไม่ต้องใช้สิทธิ์พิเศษ และการสนับสนุนการดีบักเพิ่มเติม มุ่งเน้นไปที่การพัฒนาแอปพลิเคชันการประมวลผลสัญญาณ
- ส่วนขยายความน่าเชื่อถือ ความพร้อมใช้งาน และความสามารถในการให้บริการ (RAS)
สถาปัตยกรรม 64/32 บิต

อาร์มวี8
อาร์มวี8-เอ
Armv8-A (มักเรียกว่า ARMv8 ในขณะที่ Armv8-R ก็มีให้ใช้งานเช่นกัน) ซึ่งประกาศในเดือนตุลาคม 2554 [ 14 ] แสดงถึงการเปลี่ยนแปลงพื้นฐานของสถาปัตยกรรม ARM โดยรองรับ สถานะการทำงาน สองสถานะ ได้แก่ สถานะ 64 บิตชื่อAArch64และสถานะ 32 บิตชื่อAArch32ในสถานะ AArch64 จะรองรับชุดคำสั่ง A64 แบบ 64 บิตใหม่ ในสถานะ AArch32 จะรองรับชุดคำสั่งสองชุด ได้แก่ ชุดคำสั่ง 32 บิตดั้งเดิมชื่อA32และชุดคำสั่ง Thumb-2 แบบ 32 บิตชื่อT32 AArch32 ให้ ความเข้ากันได้ ของพื้นที่ผู้ใช้กับ Armv7-A สถานะของโปรเซสเซอร์สามารถเปลี่ยนแปลงได้เมื่อมีการเปลี่ยนแปลงระดับข้อยกเว้น สิ่งนี้ทำให้แอปพลิเคชัน 32 บิตสามารถทำงานในสถานะ AArch32 ภายใต้ระบบปฏิบัติการ 64 บิตที่มีเคอร์เนลทำงานในสถานะ AArch64 และอนุญาตให้ระบบปฏิบัติการ 32 บิตทำงานในสถานะ AArch32 ภายใต้การควบคุมของไฮเปอร์ไวเซอร์ 64 บิต ที่ทำงานในสถานะ AArch64 [ 1 ] ARM ประกาศคอร์ Cortex-A53 และ Cortex-A57 เมื่อวันที่ 30 ตุลาคม 2012 [ 80 ] Apple เป็นบริษัทแรกที่วางจำหน่ายคอร์ที่เข้ากันได้กับ Armv8-A ในผลิตภัณฑ์สำหรับผู้บริโภค ( Apple A7ในiPhone 5S ) AppliedMicroโดยใช้FPGAเป็นบริษัทแรกที่สาธิต Armv8-A [ 177 ] SoC Armv8-A ตัวแรกจากSamsungคือ Exynos 5433 ที่ใช้ในGalaxy Note 4ซึ่งมีคลัสเตอร์สองคลัสเตอร์ของคอร์ Cortex-A57 และ Cortex-A53 สี่ตัวในการกำหนดค่าbig.LITTLEแต่จะทำงานเฉพาะในโหมด AArch32 เท่านั้น[ 178 ]
Armv8-A ทำให้ VFPv3/v4 และ SIMD ขั้นสูง (Neon) เป็นมาตรฐานสำหรับทั้ง AArch32 และ AArch64 นอกจากนี้ยังเพิ่มคำสั่งการเข้ารหัสที่รองรับAES , SHA-1 / SHA-256และเลขคณิตฟิลด์จำกัด[ 179 ] AArch64 ได้รับการแนะนำใน Armv8-A และการแก้ไขในภายหลัง AArch64 ไม่ได้รวมอยู่ในสถาปัตยกรรม Armv8-R และ Armv8-M แบบ 32 บิต
โปรเซสเซอร์ ARMv8-A สามารถรองรับ AArch32 หรือ AArch64 อย่างใดอย่างหนึ่งหรือทั้งสองอย่างได้ โดยอาจรองรับทั้ง AArch32 และ AArch64 ในระดับข้อยกเว้นที่ต่ำกว่า และรองรับเฉพาะ AArch64 ในระดับข้อยกเว้นที่สูงกว่า[ 180 ]ตัวอย่างเช่น ARM Cortex-A32 รองรับเฉพาะ AArch32 [ 181 ] ARM Cortex-A34 รองรับ เฉพาะ AArch64 [ 182 ]และARM Cortex-A72รองรับทั้ง AArch64 และ AArch32 [ 183 ]โปรเซสเซอร์ ARMv9-A ต้องรองรับ AArch64 ในทุกระดับข้อยกเว้น และอาจรองรับ AArch32 ที่ EL0 [ 180 ]
อาร์มวี8-อาร์
มีการเพิ่มการสนับสนุน AArch64 เสริมลงในโปรไฟล์ Armv8-R โดยคอร์ ARM ตัวแรกที่ใช้งานคือ Cortex-R82 [ 184 ]ซึ่งเพิ่มชุดคำสั่ง A64
อาร์มวี9
อาร์มวี9-เอ
สถาปัตยกรรมที่ได้รับการปรับปรุงซึ่งประกาศในเดือนมีนาคม พ.ศ. 2564 เน้นที่การดำเนินการที่ปลอดภัยและการแบ่งส่วน[ 185 ] [ 186 ]โปรเซสเซอร์ ARMv9-A รุ่นแรกวางจำหน่ายในช่วงปลายปีนั้น รวมถึง Cortex-A510, Cortex-A710 และ Cortex-X2 [ 187 ] [ 188 ]
ระบบอาร์มพร้อมใช้งาน
Arm SystemReady เป็นโปรแกรมการปฏิบัติตามข้อกำหนดที่ช่วยให้มั่นใจได้ถึงความสามารถในการทำงานร่วมกันของระบบปฏิบัติการบนฮาร์ดแวร์ที่ใช้ Arm ตั้งแต่เซิร์ฟเวอร์ศูนย์ข้อมูลไปจนถึงอุปกรณ์ปลายทางอุตสาหกรรมและอุปกรณ์ IoT องค์ประกอบหลักของโปรแกรมนี้คือข้อกำหนดสำหรับฮาร์ดแวร์และเฟิร์มแวร์ขั้นต่ำที่ระบบปฏิบัติการและไฮเปอร์ไวเซอร์สามารถพึ่งพาได้ ข้อกำหนดเหล่านี้คือ: [ 189 ]
- สถาปัตยกรรมระบบพื้นฐาน (BSA) [ 190 ]และส่วนเสริมเฉพาะกลุ่มตลาด (เช่น PC BSA, Server BSA) [ 191 ]
- ข้อกำหนดการบูตพื้นฐาน (BBR) [ 192 ]และข้อกำหนดด้านความปลอดภัยการบูตพื้นฐาน (BBSR) [ 193 ]
ข้อกำหนดเหล่านี้ได้รับการพัฒนาร่วมกันโดยArmและพันธมิตรในคณะกรรมการที่ปรึกษาด้านสถาปัตยกรรมระบบ (SystemArchAC)
Architecture Compliance Suite (ACS) คือเครื่องมือทดสอบที่ช่วยตรวจสอบการปฏิบัติตามข้อกำหนดเหล่านี้ เอกสาร Arm SystemReady Requirements Specification ระบุข้อกำหนดของการรับรอง[ 194 ]
โปรแกรมนี้เปิดตัวโดยArmในปี 2020 ใน งาน DevSummit ครั้งแรก ส่วนโปรแกรมรุ่นก่อนหน้าคือ Arm ServerReady เปิดตัวในปี 2018 ในงาน Arm TechCon ปัจจุบันโปรแกรมนี้ประกอบด้วยสองระดับ:
- กลุ่ม SystemReady: กลุ่มนี้เน้นการทำงานร่วมกันของระบบปฏิบัติการสำหรับสภาพแวดล้อม Advanced Configuration and Power Interface (ACPI)ซึ่งระบบปฏิบัติการทั่วไปสามารถติดตั้งบนฮาร์ดแวร์ใหม่หรือเก่าได้โดยไม่ต้องแก้ไข กลุ่มนี้มีความเกี่ยวข้องกับระบบที่ใช้สภาพแวดล้อมWindows , Linux , VMwareและBSD [ 195 ]
- แถบ SystemReady Devicetree: แถบนี้ช่วยเพิ่มประสิทธิภาพการติดตั้งและการบูตสำหรับระบบฝังตัวซึ่งdevicetreeเป็นวิธีการที่นิยมใช้ในการอธิบายฮาร์ดแวร์ โดยเน้นที่ความเข้ากันได้ในอนาคต ซึ่งใช้ได้กับ ระบบปฏิบัติการ Linuxและ สภาพแวดล้อม BSDโดยเฉพาะ[ 196 ]
ได้รับการรับรองจาก PSA
PSA Certifiedซึ่งเดิมชื่อ Platform Security Architecture เป็นกรอบงานความปลอดภัยและแผนการประเมินที่ไม่ขึ้นกับสถาปัตยกรรม มีจุดประสงค์เพื่อช่วยรักษาความปลอดภัย ของอุปกรณ์ Internet of Things (IoT) ที่สร้างขึ้นบนโปรเซสเซอร์ระบบบนชิป (SoC) [ 197 ]มีการนำมาใช้เพื่อเพิ่มความปลอดภัยในกรณีที่สภาพแวดล้อมการดำเนินการที่เชื่อถือได้ อย่างสมบูรณ์ มีขนาดใหญ่หรือซับซ้อนเกินไป[ 198 ]
สถาปัตยกรรมนี้ได้รับการแนะนำโดยArmในปี 2017 ในงานTechCon ประจำปี [ 198 ] [ 199 ]แม้ว่ารูปแบบนี้จะไม่ขึ้นกับสถาปัตยกรรมใดๆ แต่ก็ได้รับการนำไปใช้ครั้งแรกบนแกนประมวลผล Arm Cortex-M ที่ออกแบบมาสำหรับการใช้งานไมโครคอนโทรลเลอร์ PSA Certified มีโมเดลภัยคุกคามและการวิเคราะห์ความปลอดภัยที่เปิดให้ใช้งานได้ฟรี ซึ่งแสดงให้เห็นถึงกระบวนการในการตัดสินใจเกี่ยวกับคุณสมบัติด้านความปลอดภัยในผลิตภัณฑ์ IoT ทั่วไป[ 200 ]นอกจากนี้ยังให้แพ็คเกจอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) ที่ดาวน์โหลดได้ฟรี ข้อกำหนดทางสถาปัตยกรรม การใช้งานเฟิร์มแวร์โอเพนซอร์ส และชุดทดสอบที่เกี่ยวข้อง[ 201 ]
หลังจากการพัฒนากรอบความปลอดภัยทางสถาปัตยกรรมในปี 2017 โครงการรับรอง PSA Certifiedได้เปิดตัวสองปีต่อมาในงาน Embedded World ในปี 2019 [ 202 ] PSA Certified นำเสนอโครงการประเมินความปลอดภัยหลายระดับสำหรับผู้จำหน่ายชิป ผู้ให้บริการระบบปฏิบัติการ และผู้ผลิตอุปกรณ์ IoT [ 203 ]การนำเสนอในงาน Embedded World ได้แนะนำผู้จำหน่ายชิปให้รู้จักกับการรับรองระดับ 1 ร่างการป้องกันระดับ 2 ก็ได้ถูกนำเสนอในเวลาเดียวกัน[ 204 ]การรับรองระดับ 2 กลายเป็นมาตรฐานที่ใช้งานได้ในเดือนกุมภาพันธ์ 2020 [ 205 ]
การรับรองนี้สร้างขึ้นโดยผู้มีส่วนได้ส่วนเสียร่วมของ PSA เพื่อเปิดใช้งานแนวทางการรักษาความปลอดภัยโดยการออกแบบสำหรับผลิตภัณฑ์ IoT ที่หลากหลาย ข้อกำหนดที่ได้รับการรับรองจาก PSA นั้นไม่ขึ้นกับการใช้งานและสถาปัตยกรรม ดังนั้นจึงสามารถนำไปใช้กับชิป ซอฟต์แวร์ หรืออุปกรณ์ใดๆ ก็ได้[ 206 ] [ 204 ]การรับรองนี้ยังช่วยขจัดความแตกแยกในอุตสาหกรรมสำหรับผู้ผลิตและนักพัฒนาผลิตภัณฑ์ IoT อีกด้วย [ 207 ]
การสนับสนุนระบบปฏิบัติการ
ระบบปฏิบัติการ 32 บิต
ระบบปฏิบัติการในอดีต
คอมพิวเตอร์ส่วนบุคคลแบบ 32 บิตเครื่องแรกที่ใช้สถาปัตยกรรม ARM คือAcorn Archimedesซึ่งเดิมทีตั้งใจจะใช้ระบบปฏิบัติการที่ชื่อว่าARXแต่เครื่องเหล่านี้มาพร้อมกับRISC OSซึ่งถูกนำไปใช้ในระบบ ARM รุ่นต่อมาของ Acorn และผู้ผลิตรายอื่นๆ ด้วย เครื่อง Acorn รุ่นแรกๆ บางเครื่องยังสามารถใช้ ระบบปฏิบัติการ Unixเวอร์ชันดัดแปลงที่เรียกว่าRISC iX ได้ด้วย (ทั้งสองอย่างนี้ไม่ควรสับสนกับRISC/osซึ่งเป็นระบบปฏิบัติการ Unix เวอร์ชันร่วมสมัยสำหรับสถาปัตยกรรม MIPS)
ระบบปฏิบัติการฝังตัว
สถาปัตยกรรม ARM 32 บิตได้รับการสนับสนุนจากระบบปฏิบัติการ ฝังตัวและเรียลไทม์จำนวนมากรวมถึง:
- เอ2
- แอนดรอยด์
- ชิบิโอเอส/อาร์ที
- เดออส
- ดรายอส
- อีคอส
- เอ็มโบส
- ฟรีบีเอสดี
- ฟรีอาร์ทีโอเอส
- ความซื่อสัตย์
- ลินุกซ์
- ระบบปฏิบัติการไมโครคอนโทรลเลอร์
- เอ็มเบด
- มินิกซ์ 3
- เอ็มคิวเอ็กซ์
- นิวเคลียสพลัส
- นัทเอ็กซ์
- โอเคแอล4
- ระบบปฏิบัติการฝังตัว (OSE)
- OS-9 [ 208 ]
- ฟาโรส[ 209 ]
- แผน 9
- ไพค์โอเอส[ 210 ]
- คิวเอ็นเอ็กซ์
- ไรออต
- RTEMS
- RTXC Quadro
- SCIOPTA [ 211 ]
- เธรดเอ็กซ์
- ไทเซนอาร์ที
- ที-เคอร์เนล
- วีเอ็กซ์เวิร์คส์
- Windows Embedded Compact
- Windows 10 IoT Core
- เซเฟอร์
ระบบปฏิบัติการอุปกรณ์เคลื่อนที่
ณ เดือนมีนาคม 2024 สถาปัตยกรรม ARM 32 บิตเคยเป็นสภาพแวดล้อมฮาร์ดแวร์หลักสำหรับระบบปฏิบัติการอุปกรณ์พกพาส่วนใหญ่ เช่น ระบบต่อไปนี้ แต่แพลตฟอร์มเหล่านี้จำนวนมาก เช่น Android และ Apple iOS ได้พัฒนาไปใช้สถาปัตยกรรม ARM 64 บิตแล้ว:
เคยมีจำหน่าย แต่ปัจจุบันเลิกจำหน่ายแล้ว:
- บาดา
- ระบบปฏิบัติการ BlackBerry / BlackBerry 10
- Firefox OS
- มีโก
- ระบบปฏิบัติการนิวตัน
- iOS 10 และรุ่นก่อนหน้า
- Android 13 และรุ่นก่อนหน้า
- ซิมเบียน
- วินโดวส์ 10 มือถือ
- วินโดวส์ อาร์ที
- วินโดวส์โฟน
- วินโดวส์ โมบายล์
ระบบปฏิบัติการเดสก์ท็อปและเซิร์ฟเวอร์
สถาปัตยกรรม ARM 32 บิตได้รับการสนับสนุนโดย RISC OS และระบบปฏิบัติการ ที่คล้าย Unix หลายระบบ รวมถึง:
- ฟรีบีเอสดี
- เน็ตบีเอสดี
- โอเพ่นบีเอสดี
- OpenSolaris [ 212 ]
- ระบบปฏิบัติการ Linuxหลายตัวเช่น:
- เดเบียน
- อาร์มเบียน
- เจนทู
- อูบุนตู
- ระบบปฏิบัติการ Raspberry Pi (เดิมชื่อ Raspbian)
- สแล็คแวร์
ระบบปฏิบัติการ 64 บิต
ระบบปฏิบัติการฝังตัว
- ความซื่อสัตย์[ 213 ]
- โอส[ 214 ]
- SCIOPTA [ 211 ]
- seL4 [ 215 ]
- ฟาโรส[ 209 ]
- ฟรีอาร์ทีโอเอส
- QNX [ 216 ]
- VxWorks [ 217 ]
- เซเฟอร์
ระบบปฏิบัติการอุปกรณ์เคลื่อนที่
- ระบบปฏิบัติการ Androidรองรับ Armv8-A ในAndroid Lollipop (5.0) และเวอร์ชันที่ใหม่กว่า
- iOSรองรับ Armv8-A ในiOS 7 และเวอร์ชันที่ใหม่กว่า บน ชิปประมวลผล Apple SoCแบบ 64 บิต ส่วนiOS 11และเวอร์ชันที่ใหม่กว่า รวมถึงiPadOSรองรับเฉพาะโปรเซสเซอร์และแอปพลิเคชัน ARM แบบ 64 บิตเท่านั้น
- HarmonyOSได้รับการพัฒนาขึ้นโดยเฉพาะสำหรับโปรเซสเซอร์ ARM โดยเริ่มตั้งแต่การเปิดตัวในปี 2024 ในเวอร์ชัน 5.0 และเวอร์ชันต่อๆ ไป
- โมเบียน
- โพสต์มาร์เก็ตโอเอส
- อาร์คลิวนซ์ ลินุกซ์ อาร์เอ็ม
- มานจาโร[ 218 ]
ระบบปฏิบัติการเดสก์ท็อปและเซิร์ฟเวอร์
- การสนับสนุน Armv8-A ถูกรวมเข้ากับเคอร์เนล Linuxเวอร์ชัน 3.7 ในช่วงปลายปี 2012 [ 219 ] Armv8-A ได้รับการสนับสนุนจาก ระบบปฏิบัติการ Linuxหลายระบบเช่น:
- การสนับสนุน Armv8-A ถูกรวมเข้ากับFreeBSDในช่วงปลายปี 2014 [ 228 ]
- OpenBSDรองรับ Armv8 ตั้งแต่ปี 2023 [ 229 ]
- NetBSDรองรับ Armv8 ตั้งแต่ต้นปี 2018 [ 230 ]
- Windows - Windows 10รันแอปพลิเคชัน 32 บิต " x86และ 32 บิต ARM" [ 231 ]รวมถึงแอปเดสก์ท็อป ARM64 ดั้งเดิม[ 232 ] [ 233 ] Windows 11รันแอป ARM64 ดั้งเดิม และยังสามารถรันแอป x86 และ x86-64 ผ่านการจำลองได้อีกด้วย การสนับสนุนแอป ARM 64 บิตในMicrosoft Storeมีให้บริการตั้งแต่เดือนพฤศจิกายน 2018 [ 234 ]
- macOSรองรับ ARM ตั้งแต่ปลายปี 2020 โดยเวอร์ชันแรกที่รองรับ ARM คือmacOS Big Sur [ 235 ] Rosetta 2 เพิ่มการรองรับ แอปพลิเคชัน x86-64แต่ไม่ได้รองรับการจำลองเสมือนของแพลตฟอร์มคอมพิวเตอร์ x86-64 [ 236 ]
การพอร์ตไปยังระบบปฏิบัติการ ARM 32 บิตหรือ 64 บิต
แอปพลิเคชัน Windows ที่คอมไพล์ใหม่สำหรับ ARM และเชื่อมโยงกับ Winelib จาก โครงการ Wineสามารถทำงานบน ARM 32 บิตหรือ 64 บิตใน Linux, FreeBSD หรือระบบปฏิบัติการอื่นๆ ที่เข้ากันได้[ 237 ] [ 238 ]ไบนารี x86 เช่น เมื่อไม่ได้คอมไพล์เป็นพิเศษสำหรับ ARM ได้รับการสาธิตบน ARM โดยใช้QEMUกับ Wine (บน Linux และอื่นๆ) แต่ไม่ทำงานด้วยความเร็วเต็มที่หรือความสามารถเดียวกันกับ Winelib
หมายเหตุ
- ^เดิมทีเป็นตัวย่อของ Advanced RISC Machinesและเดิมทีคือ Acorn RISC Machine
- ^เมื่อใช้คำขนาด 32 บิต ความเร็ว 4 เมกะบิตต่อวินาที จะเท่ากับ1 MIPS
- ^เอกสารอ้างอิงที่มีอยู่ไม่ได้ระบุว่าทีมออกแบบนี้คือทีมใด แต่เมื่อพิจารณาจากช่วงเวลาและประวัติการออกแบบในยุคนั้นแล้ว มีความเป็นไปได้ว่านี่คือทีมของ National Semiconductor ซึ่งชิป NS32016 ของพวกเขามีข้อบกพร่องจำนวนมาก
- ^แมตต์ อีแวนส์ตั้งข้อสังเกตว่าดูเหมือนว่าเวอร์ชันที่เร็วกว่าจะถูกจัดกลุ่มให้สูงขึ้น และดูเหมือนว่าจะไม่มีการเปลี่ยนแปลงพื้นฐานใดๆ [ 40 ]
ดูเพิ่มเติม
- Amber – แกนประมวลผลแบบโอเพนซอร์สที่ใช้งานร่วมกับ ARM ได้
- AMULET – การใช้งานสถาปัตยกรรม ARM แบบอะซิงโครนัส
- ซิลิคอนแอปเปิล
- โปรแกรมรับรองวิศวกรที่ได้รับการรับรองจาก ARM
- ARM big.LITTLE – สถาปัตยกรรมประมวลผลแบบเฮเทอโรจีนัสของ ARM
- ARMulator – โปรแกรมจำลองชุดคำสั่ง
- การเปรียบเทียบโปรเซสเซอร์ ARM
- การเปรียบเทียบสถาปัตยกรรมชุดคำสั่ง
- Meltdown (ช่องโหว่ด้านความปลอดภัย) [ 239 ]
- คอมพิวเตอร์ชุดคำสั่งลดรูป (RISC)
- RISC-V
- สเปกเตอร์ (ช่องโหว่ด้านความปลอดภัย)
- Unicore – สถาปัตยกรรม 32 รีจิสเตอร์ที่พัฒนาต่อยอดมาจาก ARM 32 บิตเป็นหลัก
อ่านเพิ่มเติม
อาร์เอ็ม 1
- เฟอร์เบอร์, สตีฟ (1989). "4. การนำ ARM ไปใช้" . สถาปัตยกรรมและองค์กร VLSI RISC . เล่มที่ 56. เทย์เลอร์ แอนด์ ฟรานซิส. หน้า 225– 316. ISBN 0-8247-8151-1.
- Shirriff, Ken (กุมภาพันธ์ 2016). "การวิศวกรรมย้อนกลับของไมโครอินสตรักชันของโปรเซสเซอร์ ARM1 "
- "ภายในหน่วยประมวลผลทางคณิตศาสตร์และตรรกะ (ALU) ของ armv1 — ไมโครโปรเซสเซอร์ ARM ตัวแรก" Dave 's Hacks . 2015.
ลิงก์ภายนอก
คู่มือสถาปัตยกรรม
- บริษัท อาร์เอ็ม จำกัด (1996–2005). "คู่มืออ้างอิงสถาปัตยกรรมอาร์เอ็ม" . documentation-service.arm.com . สืบค้นเมื่อ16 กรกฎาคม 2021 .- รองรับ ARMv4, ARMv4T, ARMv5T, (ARMv5TExP), ARMv5TE, ARMv5TEJ และ ARMv6
- บริษัท อาร์เอ็ม จำกัด (2007–2018). "คู่มืออ้างอิงสถาปัตยกรรม Armv6-M" . เอกสารประกอบของอาร์เอ็ม. สืบค้นเมื่อ17 กรกฎาคม 2021 .
- ARM Limited (2007–2018). "คู่มืออ้างอิงสถาปัตยกรรม ARM รุ่น ARMv7-A และ ARMv7-R" . เอกสารประกอบของ ARM . สืบค้นเมื่อ17 กรกฎาคม 2021 .
- บริษัท อาร์เอ็ม จำกัด (2006–2021). "คู่มืออ้างอิงสถาปัตยกรรม ARMv7-M" . เอกสารประกอบของอาร์เอ็ม. สืบค้นเมื่อ24 สิงหาคม 2022 .
- ARM Limited (2013–2022). "คู่มืออ้างอิงสถาปัตยกรรม ARM สำหรับสถาปัตยกรรม A-profile" . เอกสารประกอบ ARM . สืบค้นเมื่อ24 สิงหาคม 2022 .
- ARM Limited (2016–2020). "คู่มืออ้างอิงสถาปัตยกรรม ARM ฉบับเพิ่มเติม - ARMv8 สำหรับโปรไฟล์สถาปัตยกรรม ARMv8-R AArch32" เอกสารประกอบ ARM . สืบค้นเมื่อ 17 กรกฎาคม 2021
- ARM Limited (2020–2022). "คู่มืออ้างอิงสถาปัตยกรรม ARM ฉบับเพิ่มเติม - Armv8 สำหรับโปรไฟล์สถาปัตยกรรม Armv8-R AArch64" เอกสารประกอบ ARM . สืบค้นเมื่อ24 สิงหาคม 2022 .
- ARM Limited (2015–2022). "คู่มืออ้างอิงสถาปัตยกรรม Armv8-M" . เอกสารประกอบของ ARM . สืบค้นเมื่อ24 สิงหาคม 2022 .
- ARM Limited (2021). "สถาปัตยกรรมชุดคำสั่ง Arm Armv9-A A64" . เอกสารประกอบของ ARM . สืบค้นเมื่อ17 กรกฎาคม 2021 .
- "ส่วนขยายการจำลองเสมือนของ ARM"เก็บถาวรจากต้นฉบับเมื่อวันที่ 18 ธันวาคม 2013
บัตรอ้างอิงฉบับย่อ
คำแนะนำ
- ภาพย่อถูกเก็บถาวรเมื่อวันที่ 20 มิถุนายน 2020 ที่Wayback Machine
- ARM และ Thumb-2 ถูกเก็บถาวรเมื่อวันที่ 20 มิถุนายน 2020 ที่Wayback Machine
- Vector Floating Point ถูกเก็บถาวรเมื่อวันที่ 19 มิถุนายน 2020 ที่Wayback Machine
รหัสปฏิบัติการ
- ภาพย่อถูกเก็บถาวรเมื่อวันที่ 30 กรกฎาคม 2022 ที่Wayback Machineไฟล์เก็บถาวรเพิ่มเติม: ลิงก์ที่เลิกใช้แล้ว
- ARM เก็บถาวรเมื่อวันที่ 7 มิถุนายน 2022 ที่Wayback Machineเอกสารเก็บถาวรเพิ่มเติม: ลิงก์ที่เลิกใช้แล้ว
- คำสั่งแอสเซมเบลอร์ของ GNU ถูกเก็บถาวรเมื่อวันที่ 30 เมษายน 2022 ที่Wayback Machineเอกสารเก็บถาวรเพิ่มเติม: ลิงก์ที่เลิกใช้แล้ว
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ตระกูลสถาปัตยกรรมอาร์ม
อาร์ม (เขียนด้วยตัวพิมพ์เล็ก arm ) [ a ] คือตระกูล สถาปัตยกรรมชุดคำสั่ง RISC สำหรับ โปรเซสเซอร์คอมพิวเตอร์ บริษัท อาร์ม โฮลดิ้งส์...
บีบีซี ไมโคร
การออกแบบที่ประสบความสำเร็จอย่างกว้างขวางครั้งแรกของ Acorn Computers คือ BBC Micro ซึ่งเปิดตัวในเดือนธันวาคม พ.ศ.
คอมพิวเตอร์ธุรกิจเอคอร์น
ปี 1981 ยังเป็นปีที่ IBM Personal Computer เปิดตัว โดยใช้ Intel 8088 ซึ่งเป็น CPU 16 บิต ที่เพิ่งเปิดตัวเมื่อเทียบกับการออกแบบ 8 บิต ของ 6502 ทำให้มีประสิทธิภาพโดยรวมสูงขึ้น การเปิดตัวของ IBM เปลี่ยนแปลงตลาดคอมพิวเตอร์ตั้งโต๊ะอย่างสิ้นเชิง...
แนวคิดการออกแบบ
การออกแบบ RISC ดั้งเดิม ของ Berkeley นั้น ในแง่หนึ่งเป็นระบบสำหรับการสอน ไม่ได้ออกแบบมาเพื่อประสิทธิภาพโดยตรง ARM ได้เพิ่มแนวคิดพื้นฐานของ RISC ที่เน้นการใช้รีจิสเตอร์และการโหลด/จัดเก็บข้อมูล โดยนำเอาข้อดีของการออกแบบ 6502 มาใช้...