Họ kiến trúc ARM

ARM (được viết cách điệu là arm, trước đây là từ viết tắt của Advanced RISC Machine, ban đầu là Acorn RISC Machine) là một họ kiến trúc dạng RISC cho các vi xử lý máy tính, được cấu hình cho các môi trường khác nhau. Arm Holdings phát triển kiến trúc và cấp phép nó cho các công ty khác, nơi mà sẽ thiết kế các sản phẩm của riêng họ để thực hiện một trong những kiến trúc đó ‍bao gồm các SoC và các module hệ thống (SoM) kết hợp với các thành phần khác nhau như bộ nhớ, giao diện, radio. Họ cũng thiết kế các lõi thực hiện tập lệnh này và cấp phép cho các thiết kế này cho các công ty đối tác để thiết kế sản phẩm của riêng họ dựa trên các lõi này.

Các bộ xử lý có kiến trúc RISC thường yêu cầu ít bóng bán dẫn hơn các bộ xử lý có kiến trúc điện toán tập lệnh phức tạp (CISC) (như bộ xử lý x86 có trong hầu hết các máy tính cá nhân), giúp cải thiện chi phí, tiêu thụ điện năng và tản nhiệt. Những đặc điểm này là mong muốn đối với các thiết bị nhẹ, di động, chạy bằng pin bao gồm cả điện thoại thông minh, máy tính xách tay và máy tính bảng và các hệ thống nhúng khác. Đối với các siêu máy tính tiêu thụ một lượng điện lớn, ARM cũng có thể là một giải pháp tiết kiệm năng lượng.

ARM Holdings định kỳ phát hành bản cập nhật cho kiến trúc. Các phiên bản kiến trúc ARMv3 đến ARMv7 hỗ trợ không gian địa chỉ 32 bit (chip tiền ARMv3, được tạo trước khi ARM Holdings được hình thành, như được sử dụng trong Acorn Archimedes, có không gian địa chỉ 26 bit) và số học 32 bit; hầu hết các kiến trúc đều có các hướng dẫn có độ dài cố định 32 bit. Phiên bản Thumb hỗ trợ một tập lệnh có độ dài thay đổi, cung cấp cả hai lệnh 32 và 16 bit để cải thiện mật độ mã. Một số lõi cũ hơn cũng có thể cung cấp thực thi phần cứng cho mã byte Java. Được phát hành vào năm 2011, kiến trúc ARMv8-A đã thêm hỗ trợ cho không gian địa chỉ 64 bit và số học 64 bit với tập lệnh có độ dài cố định 32 bit mới.

Với hơn 100 tỷ bộ xử lý ARM được sản xuất tính đến năm 2017, ARM là kiến trúc tập lệnh được sử dụng rộng rãi nhất và kiến trúc tập lệnh được sản xuất với số lượng lớn nhất. Hiện tại, các lõi Cortex được sử dụng rộng rãi, các lõi "cổ điển" cũ hơn và các biến thể lõi SecurCore chuyên dụng có sẵn cho mỗi loại này để bao gồm hoặc loại trừ các khả năng tùy chọn.

== Lịch sử phát triển ==
Nhà sản xuất máy tính Acorn Computer của Anh lần đầu tiên phát triển kiến trúc Acorn RISC Machine (ARM) vào những năm 1980 để sử dụng trong các máy tính cá nhân của mình.Các sản phẩm dựa trên ARM đầu tiên của hãng là các mô-đun đồng xử lý cho loạt máy tính BBC Micro. Sau khi máy tính BBC Micro thành công, Acorn Computer đã cân nhắc cách chuyển từ bộ xử lý MOS Technology 6502 tương đối đơn giản để giải quyết các thị trường kinh doanh giống như thị trường đã bị thống trị bởi IBM PC, được đưa ra vào năm 1981. Kế hoạch "Acorn Business Computer" (ABC) yêu cầu một số bộ xử lý thứ hai được chế tạo để hoạt động với nền tảng BBC Micro, nhưng các bộ xử lý như Motorola 68000 và National Semiconductor 32016 được coi là không phù hợp và 6502 không đủ mạnh cho giao diện người dùng dựa trên đồ họa.

Theo Sophie Wilson, tất cả các bộ xử lý được thử nghiệm tại thời điểm đó đều hoạt động giống nhau, với băng thông khoảng 4 Mbps.

Sau khi thử nghiệm tất cả các bộ xử lý có sẵn và thấy chúng thiếu, Acorn quyết định nó cần một kiến trúc mới. Lấy cảm hứng từ các bài báo từ dự án Berkeley RISC, Acorn đã cân nhắc việc thiết kế bộ xử lý của riêng mình. Chuyến thăm tới Western Design Center ở Phoenix, nơi 6502 đang được cập nhật bởi một công ty duy nhất có hiệu quả, cho thấy các kỹ sư của Acorn Steve Furber và Sophie Wilson họ không cần nguồn lực lớn và nghiên cứu hiện đại và cơ sở phát triển.

Wilson đã phát triển bộ hướng dẫn, viết mô phỏng bộ xử lý trong BBC BASIC chạy trên BBC Micro với bộ xử lý 6502 thứ 2. Điều này đã thuyết phục các kỹ sư Acorn rằng họ đang đi đúng hướng. Wilson đã tiếp cận Giám đốc điều hành của Acorn, Hermann Hauser và yêu cầu nhiều tài nguyên hơn. Hauser đã chấp thuận và tập hợp một nhóm nhỏ để triển khai mô hình của Wilson về phần cứng.

=== Acorn RISC Machine: ARM2 ===
Dự án "Acorn RISC Machine" chính thức bắt đầu vào tháng 10 năm 1983. Họ chọn VLSI Technology làm đối tác silicon, vì họ là nguồn cung cấp ROM và chip tùy chỉnh cho Acorn. Wilson và Furber trưởng nhóm thiết kế. Họ đã triển khai nó với một đặc tính hiệu quả tương tự như 6502. Mục tiêu thiết kế chính là đạt được xử lý đầu vào / đầu ra có độ trễ thấp như gián đoạn như 6502. Kiến trúc truy cập bộ nhớ của 6502 đã cho phép các nhà phát triển sản xuất máy nhanh mà không không tốn phần cứng truy cập bộ nhớ trực tiếp (DMA).

Các mẫu silicon ARM đầu tiên hoạt động tốt khi lần đầu tiên được nhận và thử nghiệm vào ngày 26 tháng 4 năm 1985.

Ứng dụng ARM đầu tiên là bộ xử lý thứ hai cho BBC Micro, nơi nó giúp phát triển phần mềm mô phỏng để hoàn thành việc phát triển các chip hỗ trợ (VIDC, IOC, MEMC) và tăng tốc phần mềm CAD được sử dụng trong phát triển ARM2. Wilson sau đó viết lại BBC BASIC bằng hợp ngữ ARM. Kiến thức chuyên sâu thu được từ việc thiết kế bộ hướng dẫn cho phép mã rất dày đặc, khiến ARM BBC BASIC trở thành một thử nghiệm cực kỳ tốt cho bất kỳ trình giả lập ARM nào. Mục đích ban đầu của một máy tính chủ yếu dựa trên ARM đã đạt được vào năm 1987 với việc phát hành Acorn Archimedes. Năm 1992, Acorn một lần nữa giành giải Queen's Award for Technology cho ARM.

ARM2 nổi bật với bus dữ liệu 32 bit, không gian địa chỉ 26 bit và 27 thanh ghi 32 bit. Tám bit từ thanh ghi bộ đếm chương trình có sẵn cho các mục đích khác; sáu bit trên cùng (có sẵn do không gian địa chỉ 26 bit) được dùng làm cờ trạng thái và hai bit dưới cùng (có sẵn vì bộ đếm chương trình luôn được căn chỉnh từ) được sử dụng cho các chế độ cài đặt. Bus địa chỉ được mở rộng lên 32 bit trong ARM6, nhưng mã chương trình vẫn phải nằm trong bộ nhớ 64MB đầu tiên ở chế độ tương thích 26 bit, do các bit dành riêng cho các cờ trạng thái. ARM2 có số lượng bóng bán dẫn chỉ 30.000, so với model 68000 cũ hơn của Motorola có khoảng 40.000. Phần lớn sự đơn giản này đến từ việc thiếu microcode (đại diện cho khoảng một phần tư đến một phần ba của 68000) và từ (giống như hầu hết các CPU trong ngày) không bao gồm bất kỳ bộ đệm nào. Sự đơn giản này cho phép tiêu thụ năng lượng thấp, nhưng hiệu năng tốt hơn so với Intel 80286. Một người kế nhiệm, ARM3, được sản xuất với bộ đệm 4 KB, giúp cải thiện hiệu năng hơn nữa.

=== Advanced RISC Machines Ltd. — ARM6 ===
Vào cuối những năm 1980, Apple Computer và VLSI Technology bắt đầu làm việc với Acorntreen phiên bản mới hơn của ARM core. Năm 1990, Acorn tách khỏi nhóm thiết kế thành một công ty mới có tên "Advanced RISC Machines Ltd"., trở thành ARM Ltd khi công ty mẹ của nó, ARM Holdings, niêm yết trên sàn London Stock Exchange và NASDAQ năm 1998. Công việc mới của Apple-ARM cuối cùng sẽ phát triển thành ARM6, được phát hành lần đầu tiên vào đầu năm 1992. Apple đã sử dụng ARM610 dựa trên ARM6 làm cơ sở cho PDA Apple Newton của họ.

=== Những giấy phép đầu tiên ===
Năm 1994, Acorn đã sử dụng ARM610 làm CPU chính trên hệ thống RiscPC của họ. DEC được cấp phép kiến trúc ARMv4 và sản xuất StrongARM. Với tốc độ 233 MHz, CPU này chỉ tiêu tốn một watt (phiên bản mới hơn tiêu thụ ít hơn nhiều). Công việc này sau đó đã được chuyển cho Intel như một phần của thỏa thuận giải quyết vụ kiện và Intel đã nắm lấy cơ hội để bổ sung dòng i960 của họ với StrongARM. Intel sau đó đã phát triển triển khai hiệu suất cao của riêng mình có tên XScale, công ty đã bán cho Marvell. Số lượng bóng bán dẫn của lõi ARM về cơ bản vẫn giống nhau trong suốt những thay đổi này; ARM2 có 30,000 transistors, trong khi ARM6 tăng lên 35,000.

=== Thị phần ===
Năm 2005, khoảng 98% tổng số điện thoại di động được bán đã sử dụng ít nhất một bộ xử lý ARM. Năm 2010,các nhà sản xuất chip dựa trên kiến trúc ARM đã báo cáo lô hàng 6,1 tỷ bộ xử lý dựa trên ARM, chiếm 95% điện thoại thông minh, 35% TV kỹ thuật số và hộp giải mã và 10% máy tính di động.Năm 2011, kiến trúc ARM 32 bit là kiến trúc được sử dụng rộng rãi nhất trong các thiết bị di động và là kiến trúc 32 bit phổ biến nhất trong các hệ thống nhúng. Trong năm 2013, 10 tỷ đã được sản xuất. và "chip dựa trên ARM được tìm thấy trong gần 60% thiết bị di động trên thế giới".

== Cấp phép ==
=== Giấy phép lõi ===
Hoạt động kinh doanh chính của ARM Holdings là bán các IP cores, các giấy phép được dùng để tạo các microcontrollers (MCUs), CPUs, và systems-on-chips dựa trên các cores của họ. Nhà sản xuất thiết kế gốc kết hợp lõi ARM với các phần khác để tạo ra sản phẩm hoàn chỉnh, điển hình là một thiết bị có thể được chế tạo trong các Nhà máy chế tạo chết bán dẫn (fabs) với chi phí thấp và vẫn mang lại hiệu suất đáng kể. Việc triển khai thành công nhất là ARM7TDMI với hàng trăm triệu được bán ra. Atmel đã là một trung tâm thiết kế tiền thân trong hệ thống nhúng dựa trên ARM7TDMI.

Các kiến trúc ARM được sử dụng trong điện thoại thông minh, PDA và các thiết bị di động khác có phạm vi từ ARMv5 đến ARMv7-A, được sử dụng trong các thiết bị cấp thấp và tầm trung, đến ARMv8-A được sử dụng trong các thiết bị cao cấp hiện tại.

Vào năm 2009, một số nhà sản xuất đã giới thiệu netbook dựa trên CPU kiến trúc ARM, cạnh tranh trực tiếp với netbook dựa trên Intel Atom. Theo công ty phân tích IHS iSuppli, vào năm 2015, các mạch tích hợp ARM có thể có trong 23% của tất cả các máy tính xách tay.

ARM Holdings cung cấp nhiều điều khoản cấp phép, khác nhau về chi phí và khả năng cung cấp. ARM Holdings cung cấp cho tất cả những người được cấp phép một mô tả phần cứng tích hợp của lõi ARM cũng như bộ công cụ phát triển phần mềm hoàn chỉnh (trình biên dịch, trình gỡ lỗi, bộ phát triển phần mềm) và quyền bán silicon được sản xuất có chứa CPU ARM.

Các gói SoC tích hợp các thiết kế cốt lõi của ARM bao gồm ba thế hệ đầu tiên của Nvidia Tegra, gia đình Quatro của CSR, Nova và NovaThor của ST-Ericsson, Precision32 MCU của Silicon Labs, các sản phẩm OMAP của Texas, các sản phẩm Hummingbird và Exynos của Samsung, A4, A5 và A5 Freescale của i.MX.

Những người được cấp phép Fabless, những người muốn tích hợp lõi ARM vào thiết kế chip của riêng họ, thường chỉ quan tâm đến việc mua lõi sở hữu trí tuệ bán dẫn đã được xác minh sẵn sàng để sản xuất. Với những khách sạn này, ARM Holdings cung cấp một mô tả danh sách mạng cổng của ARM core, cùng với một mô hình mô phỏng trừu tượng và các chương trình thử nghiệm để hỗ trợ tích hợp và xác minh thiết kế. Nhiều khách hàng tham vọng hơn, bao gồm các nhà sản xuất thiết bị tích hợp (IDM), chọn mua các vi xử lý IP dưới dạng RTL (Verilog). Với RTL tổng hợp, khách hàng có khả năng thực hiện tối ưu hóa mức độ kiến trúc và các phần mở rộng. Điều này cho phép nhà thiết kế đạt được các mục tiêu thiết kế kỳ lạ không thể có với một danh sách mạng không thay đổi (tốc độ xung nhịp cao, mức tiêu thụ điện năng rất thấp, phần mở rộng tập lệnh, v.v.). Mặc dù ARM Holdings không cấp cho khách hàng được cấp phép quyền bán lại kiến trúc ARM, nhưng khách hàng được cấp phép có thể tự do bán sản phẩm được sản xuất như thiết bị chip, bảng đánh giá và hệ thống hoàn chỉnh. Các hãng bán dẫn có thể là một trường hợp đặc biệt; họ không chỉ được phép bán silicon thành phẩm có chứa lõi ARM, mà họ còn có quyền tái sản xuất lõi ARM cho các khách hàng khác.

ARM Holdings bán IP dựa trên giá trị cảm nhận. Các lõi ARM hiệu suất thấp hơn thường có chi phí giấy phép thấp hơn các lõi hiệu suất cao hơn. Trong các điều khoản triển khai, một lõi tổng hợp có giá cao hơn một lõi cứng (hộp đen). Các vấn đề phức tạp về giá, một nhà máy có giấy phép ARM, như Samsung hoặc Fujitsu, có thể cung cấp cho khách hàng fab giảm chi phí cấp phép. Để đổi lấy việc mua lõi ARM thông qua các dịch vụ thiết kế nội bộ của nhà máy bán dẫn, khách hàng có thể giảm hoặc loại bỏ việc thanh toán phí giấy phép trả trước của ARM.

So với các nhà máy bán dẫn chuyên dụng (như TSMC và UMC) không có dịch vụ thiết kế nội bộ, Fujitsu/Samsung tính phí gấp hai đến ba lần cho mỗi wafer được sản xuất.Đối với các ứng dụng khối lượng thấp đến trung bình, một nhà máy dịch vụ thiết kế cung cấp mức giá chung thấp hơn (thông qua trợ cấp phí giấy phép). Đối với các bộ phận được sản xuất hàng loạt với khối lượng lớn, việc giảm chi phí dài hạn có thể đạt được thông qua việc định giá wafer thấp hơn sẽ giảm tác động của chi phí NRE (Kỹ thuật không định kỳ) của ARM, làm cho nhà máy chuyên dụng trở thành lựa chọn tốt hơn.

Các công ty đã thiết kế chip với lõi ARM bao gồm công ty con Annapurna Labs của Amazon.com, Analog Devices, Apple, AppliedMicro (bây giờ là: MACOM Technology Solutions), Atmel, Broadcom, Cypress Semiconductor, Freescale Semiconductor (bây giờ là NXP Semiconductors), Maxim Integrated, Nvidia, NXP, Qualcomm, Renesas, Samsung Electronics, ST Microelectronics, Texas Instruments và Xilinx.

=== Giấy phép kiến trúc ===
Các công ty cũng có thể có được giấy phép kiến trúc ARM để thiết kế lõi CPU của riêng họ bằng cách sử dụng các bộ hướng dẫn ARM. Các lõi này phải tuân thủ đầy đủ kiến trúc ARM. Các công ty đã thiết kế các lõi thực hiện kiến trúc ARM bao gồm Apple, ApplicationMicro, Broadcom, Cavium (hiện tại: Marvell), Nvidia, Qualcomm và Samsung Electronics.

== Các dạng lõi ==
ARM Holdingscung cấp một danh sách các nhà cung cấp triển khai lõi ARM trong thiết kế của họ (sản phẩm tiêu chuẩn dành riêng cho ứng dụng (ASSP), bộ vi xử lý và vi điều khiển).

== Kiến trúc 32-bit ==
Kiến trúc ARM 32-bit, như ARMv7-A (dùng trên AArch32), là kiến trúc thông dụng nhất được sử dụng trên các thiết bị di động từ năm 2011.

== Các lưu ý về thiết kế ==
Để đạt được một thiết kế gọn, đơn giản và nhanh, các nhà thiết kế ARM xây dựng nó theo kiểu nối cứng không có vi chương trình, giống với bộ vi xử lý 8-bit 6502 đã từng được dùng trong các máy vi tính trước đó của hãng Acorn.

Cấu trúc ARM bao gồm các đặc tính của RISC như sau:

- Cấu trúc nạp/lưu trữ.
- Không cho phép truy xuất bộ nhớ không thẳng hàng (bây giờ đã cho phép trong lõi Arm v6)
- Tập lệnh trực giao
- File thanh ghi lớn gồm 16 x 32-bit
- Chiều dài mã máy cố định là 32 bit để dễ giải mã và thực hiện pipeline, để đạt được điều này phải chấp nhận giảm mật độ mã máy.
- Hầu hết các lệnh đều thực hiện trong vòng một chu kỳ đơn.

So với các bộ vi xử lý cùng thời như Intel 80286 và Motorola 68020, trong ARM có một số tính chất khá độc đáo như sau:
- Hầu hết tất cả các lệnh đều cho phép thực thi có điều kiện, điều này làm giảm việc phải viết các tiêu đề rẽ nhánh cũng như bù cho việc không có một bộ dự đoán rẽ nhánh.
- Trong các lệnh số học, để chỉ ra điều kiện thực hiện, người lập trình chỉ cần sửa mã điều kiện
- Có một thanh ghi dịch đóng thùng 32-bit mà có thể sử dụng với chức năng hoàn hảo với hầu hết các lệnh số học và việc tính toán địa chỉ.
- Có các kiểu định địa chỉ theo chỉ số rất mạnh
- Có hệ thống con thực hiện ngắt hai mức ưu tiên đơn giản nhưng rất nhanh, kèm theo cho phép chuyển từng nhóm thanh ghi.

== Hệ điều hành hỗ trợ ==
=== Các hệ điều hành 32-bit ===
==== Lịch sử hệ điều hành ====
Máy tính cá nhân dựa trên ARM 32 bit đầu tiên, Acorn Archimedes, đã chạy một hệ điều hành tạm thời có tên Arthur, phát triển thành RISC OS, được sử dụng trên các hệ thống dựa trên ARM sau này của Acorn và các nhà cung cấp khác. Một số máy Acorn cũng có Unix port gọi là RISC iX. (Không được nhầm lẫn với RISC/os, một biến thể Unix hiện đại cho kiến trúc MIPS.)

==== Hệ điều hành nhúng ====
Kiến trúc ARM 32 bit được hỗ trợ bởi một số lượng lớn hệ điều hành nhúng và thời gian thực, bao gồm:

- A2
- Android
- ChibiOS/RT
- Deos
- DRYOS
- eCos
- embOS
- FreeRTOS
- Integrity
- Linux
- Micro-Controller Operating Systems
- MQX
- Nucleus PLUS
- NuttX
- OSE
- OS-9
- Pharos
- Plan 9
- PikeOS
- QNX
- RIOT
- RTEMS
- RTXC Quadros
- SCIOPTA
- ThreadX
- TizenRT
- T-Kernel
- VxWorks
- Windows Embedded Compact
- Windows 10 IoT Core
- Zephyr

==== Hệ điều hành di động ====
Kiến trúc ARM 32 bit là môi trường phần cứng chính cho hầu hết các hệ điều hành thiết bị di động như:

- Android
- Bada
- BlackBerry OS/BlackBerry 10
- Chrome OS
- Firefox OS
- MeeGo
- Sailfish
- Symbian
- Tizen
- Ubuntu Touch
- webOS
- Windows RT
- Windows Mobile
- Windows Phone
- Windows 10 Mobile

Trước đây, nhưng bây giờ đã ngừng:

- iOS 10 và trước đó

==== Hệ điều hành Desktop/server ====
Kiến trúc ARM 32 bit được RISC OS hỗ trợ và nhiều hệ điều hành tương tự Unix bao gồm:

- FreeBSD
- NetBSD
- OpenBSD
- OpenSolaris
- Một vài bản phân phối Linux như:
- Debian
- Gentoo
- Ubuntu

=== Hệ điều hành 64-bit ===
==== Hệ thống nhúng ====
- Integrity
- OSE
- SCIOPTA

==== Hệ điều hành di động ====
- iOS hỗ trợ ARMv8-A in iOS 7 and later on 64-bit Apple SoCs. iOS 11 and later only supports 64-bit ARM processors and applications.
- Android supports ARMv8-A in Android Lollipop (5.0) and later.

==== Hệ điều hành Desktop/server ====
- Hỗ trợ cho ARMv8-A đã được tích hợp vào Linux kernel version 3.7 vào cuối 2012. ARMv8-A được hỗ trợ bởi một số bản phân phối Linux như:
- Debian
- Ubuntu
- Fedora
- openSUSE
- SUSE Linux Enterprise
- Hỗ trợ cho ARMv8-A đã được tích hợp vào FreeBSD vào cuối năm 2014.
- OpenBSD đã thử nghiệm hỗ trợ ARMv8 vào năm 2017.
- NetBSD có hỗ trợ ARMv8 kể từ đầu năm 2018.
- Windows 10 - chạy các ứng dụng 32bit "x86 và ARM 32 bit", cũng như các ứng dụng dekstop ARM64 gốc. Hỗ trợ cho các ứng dụng ARM 64-bit trong Windows Store sắp ra mắt.

=== Porting đến hệ điều hành 32- hay 64-bit ARM ===
Các ứng dụng Windows được biên dịch lại cho ARM và được liên kết với Winelib từ dự án Wine có thể chạy trên 32-bit hoặc 64-bit ARM trong Linux (hoặc FreeBSD hoặc các hệ điều hành đủ tương thích khác). File nhị phân x86, e.g. khi không được biên dịch đặc biệt cho đã được trình diễn trên ARM bằng cách sử dụng QEMU với Wine (trên Linux và hơn thế nữa), nhưng không hoạt động ở tốc độ tối đa hoặc khả năng tương tự như với Winelib.

== Xem thêm ==
- ARM big.LITTLE – Kiến trúc điện toán không đồng nhất của ARM
- ARM Accredited Engineer – chương trình chứng nhận
- ARMulator – một trình mô phỏng tập lệnh
- Amber (processor core) – lõi xử lý tương thích ARM nguồn mở
- Meltdown (lỗ hổng bảo mật)

== Liên kết ngoài ==
- , ARM Ltd.
- ARM Virtualization Extensions
- ARM Assembler Programming; tutorial, resources, and examples
- The ARM microcontroller Wiki
- GCC ARM improvement project
- Debian GNU/Linux on ARM