Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

1.

7 ARM Architecture

Chú thích: Màu vàng là nội dung chính cần lưu ý kĩ, các màu còn lại để đánh dấu những phần
có nhiều ý nhỏ.
Kiến trúc ARM đề cập đến một kiến trúc bộ xử lý đã phát triển từ các nguyên tắc thiết kế RISC
và được sử dụng trong các hệ thống nhúng. Trong này, chúng tôi cung cấp một cái nhìn tổng
quan ngắn gọn về kiến trúc ARM.
Sự phát triển của ARM:
ARM là một dòng vi xử lý và vi điều khiển dựa trên RISC được thiết kế bởi ARM Holdings,
Cambridge, Anh. Công ty không sản xuất bộ vi xử lý mà thay vào đó thiết kế bộ vi xử lý và kiến
trúc đa lõi và cấp phép chúng cho các nhà sản xuất. ARM Holdings có hai loại sản phẩm có thể
cấp phép: bộ xử lý và kiến trúc bộ xử lý. Đối với bộ xử lý, khách hàng mua quyền sử dụng thiết
kế do ARM cung cấp trong các chip của riêng họ. Đối với kiến trúc bộ xử lý, khách hàng mua
quyền thiết kế bộ xử lý của riêng họ phù hợp với kiến trúc của ARM.
Chip ARM là bộ vi xử lý tốc độ cao được biết đến với kích thước khuôn nhỏ và công suất thấp
các yêu cầu. Chúng được sử dụng rộng rãi trong điện thoại thông minh và các thiết bị cầm tay
khác, bao gồm cả trò chơi hệ thống, cũng như nhiều loại sản phẩm tiêu dùng. Chip ARM là bộ
xử lý của Apple các thiết bị iPod và iPhone phổ biến, và cũng được sử dụng trong hầu như tất cả
các điện thoại thông minh Android. Các đối tác đã xuất xưởng 16,7 tỷ chip dựa trên ARM vào
năm 2016. ARM có lẽ là kiến trúc bộ xử lý nhúng được sử dụng rộng rãi nhất, và thực sự là kiến
trúc bộ xử lý được sử dụng rộng rãi nhất trong bất kỳ loại nào trên thế giới [VANC14].
Nguồn gốc của công nghệ ARM có thể bắt nguồn từ công ty Máy tính Acorn có trụ sở tại Anh.
Trong đầu những năm 1980, Acorn đã được Tổng công ty Phát thanh truyền hình Anh (BBC)
trao một hợp đồng để phát triển một kiến trúc máy tính vi mô mới cho Dự án Văn học Máy tính
của BBC. Sự thành công của hợp đồng này cho phép Acorn tiếp tục phát triển bộ xử lý RISC
thương mại đầu tiên, Acorn RISC Máy (ARM). Phiên bản đầu tiên, ARM1, bắt đầu hoạt động
vào năm 1985 và được sử dụng cho nội bộ nghiên cứu và phát triển cũng như được sử dụng như
một bộ đồng xử lý trong máy BBC.
Trong giai đoạn đầu này, Acorn đã sử dụng công ty Công nghệ VLSI để chế tạo thực tế chip xử
lý. VLSI đã được cấp phép để tự tiếp thị chip và đã đạt được một số thành công trong việc các
công ty khác sử dụng ARM trong các sản phẩm của họ, đặc biệt như một bộ xử lý nhúng.
Thiết kế ARM phù hợp với nhu cầu thương mại ngày càng tăng về hiệu suất cao, năng lượng
thấp- bộ xử lý tiêu thụ, kích thước nhỏ và chi phí thấp cho các ứng dụng nhúng. Nhưng phát triển
hơn nữa nằm ngoài phạm vi khả năng của Acorn. Theo đó, một công ty mới đã được tổ chức, với
Acorn, VLSI và Apple Computer với tư cách là đối tác sáng lập, được gọi là ARM Ltd. Acorn
RISC Máy trở thành Máy RISC Nâng cao. ARM được mua lại bởi viễn thông Nhật Bản công ty
SoftBank Group vào năm 2016.
Tập lệnh kiến trúc:
Tập lệnh ARM rất phổ biến, được thiết kế để triển khai hiệu quả bộ xử lý và thực thi hiệu quả.
Tất cả các lệnh đều dài 32 bit và tuân theo một định dạng thông thường. Điều này làm cho ARM
ISA thích hợp để triển khai trên nhiều loại sản phẩm.

Bổ sung ARM ISA cơ bản là tập lệnh Thumb, là tập con được mã hóa lại của Tập lệnh ARM.
Thumb được thiết kế để tăng hiệu suất của việc triển khai ARM, sử dụng bus dữ liệu bộ nhớ 16
bit hoặc hẹp hơn và để cho phép mật độ mã tốt hơn so với do ARM cung cấp tập hướng dẫn. Tập
lệnh Thumb chứa một tập con của tập lệnh ARM 32-bit đã được giải mã thành các lệnh 16-bit.
Phiên bản được xác định hiện tại là Thumb-2.
Các sản phẩm ARM:
ARM Holdings cấp phép cho một số bộ vi xử lý chuyên dụng và các công nghệ liên quan, nhưng
phần lớn dòng sản phẩm của họ là dòng kiến trúc vi xử lý Cortex. Có ba Cortex kiến trúc, được
gắn nhãn thuận tiện bằng các chữ cái đầu A, R và M.
CORTEX-A
Dòng bộ xử lý Cortex-A là bộ xử lý ứng dụng, dành cho các thiết bị di động như điện thoại thông
minh và trình đọc sách điện tử, cũng như các thiết bị tiêu dùng như TV kỹ thuật số và cổng nhà
(ví dụ: DSL và modem Internet cáp). Các bộ xử lý này chạy ở tần số xung nhịp cao hơn (trên 1
GHz), và hỗ trợ đơn vị quản lý bộ nhớ (MMU), được yêu cầu đối với hệ điều hành đầy đủ tính
năng như Linux, Android, MS Windows và hệ điều hành di động. MMU là một mô-đun phần
cứng hỗ trợ bộ nhớ ảo và phân trang bằng cách dịch địa chỉ ảo thành địa chỉ thực; chủ đề này
được khám phá trong Chương số 8.
Hai kiến trúc sử dụng cả lệnh ARM và Thumb-2. Một số bộ xử lý trong này sê-ri là máy 32-bit
và những máy khác là máy 64-bit.
CORTEX-R
Cortex-R được thiết kế để hỗ trợ các ứng dụng thời gian thực, trong đó thời gian của các sự kiện
cần phải được kiểm soát với phản ứng nhanh chóng với các sự kiện. Chúng có thể chạy ở tần số
xung nhịp khá cao (ví dụ: 2 MHz đến 4 MHz) và có độ trễ phản hồi rất thấp. Cortex-R bao gồm
các cải tiến cho cả tập lệnh và tổ chức bộ xử lý để hỗ trợ các thiết bị thời gian thực được nhúng
sâu. Phần lớn trong số các bộ vi xử lý này không có MMU; yêu cầu dữ liệu hạn chế và số lượng
giới hạn các quy trình đồng thời loại bỏ nhu cầu hỗ trợ phần cứng và phần mềm phức tạp cho ảo
kỉ niệm. Cortex-R có Bộ bảo vệ bộ nhớ (MPU), bộ nhớ đệm và các bộ nhớ khác các tính năng
được thiết kế cho các ứng dụng công nghiệp. MPU là một mô-đun phần cứng cấm một chương
trình trong bộ nhớ từ việc vô tình truy cập bộ nhớ được gán cho một chương trình đang hoạt
động khác. Sử dụng các phương pháp khác nhau, một ranh giới bảo vệ được tạo xung quanh
chương trình và các hướng dẫn trong chương trình bị cấm tham chiếu dữ liệu bên ngoài ranh giới
đó.
Ví dụ về các hệ thống nhúng sẽ sử dụng Cortex-R là hệ thống phanh ô tô, khối lượng bộ điều
khiển lưu trữ, thiết bị mạng và in ấn.
CORTEX-M
Bộ xử lý dòng Cortex-M đã được phát triển chủ yếu cho lĩnh vực vi điều khiển, nơi nhu cầu quản
lý ngắt nhanh chóng, có tính xác định cao cùng với mong muốn về số cổng và mức tiêu thụ điện
năng thấp nhất có thể. Như với kiến trúc của dòng Cortex-R, Cortex-M có MPU nhưng không có
MMU. Cortex-M chỉ sử dụng tập lệnh Thumb-2. Các thị trường cho Cortex-M bao gồm các thiết
bị IoT, mạng cảm biến / thiết bị truyền động không dây được sử dụng trong các nhà máy và các
doanh nghiệp khác, điện tử cơ thể ô tô, v.v.
Hiện có bảy phiên bản của dòng Cortex-M:
-Cortex-M0: Được thiết kế cho các ứng dụng 8 và 16-bit, mô hình này nhấn mạnh chi phí thấp,
cực thấp sức mạnh và sự đơn giản. Nó được tối ưu hóa cho kích thước khuôn silicon nhỏ (bắt
đầu từ cổng 12k) và sử dụng trongchi phí thấp nhất.
-Cortex-M0 +: Phiên bản nâng cao của M0 tiết kiệm năng lượng hơn.
-Cortex-M3: Được thiết kế cho các ứng dụng 16 và 32 bit, mô hình này nhấn mạnh hiệu suất và
hiệu suất năng lượng. Nó cũng có các tính năng gỡ lỗi và theo dõi toàn diện để kích hoạt phần
mềm các nhà phát triển để phát triển các ứng dụng của họ một cách nhanh chóng.
-Cortex-M4: Mô hình này cung cấp tất cả các tính năng của Cortex-M3, với các hướng dẫn bổ
sung để hỗ trợ các tác vụ xử lý tín hiệu số.
-Cortex-M7: Cung cấp hiệu suất cao hơn M4. Nó vẫn chủ yếu là một máy 32-bit nhưng sử dụng
các bus dữ liệu và hướng dẫn rộng 64-bit.
-Cortex-M23: Mô hình này tương tự như M0 + và thêm các lệnh chia số nguyên và một số các
tính năng bảo mật.
-Cortex-M33: Kiểu máy này tương tự như M4 và có thêm một số tính năng bảo mật.
Trong văn bản này, chúng tôi sẽ chủ yếu sử dụng ARM Cortex-M3 làm bộ xử lý hệ thống nhúng
ví dụ của chúng tôi. Nó là loại phù hợp nhất trong tất cả các kiểu ARM để sử dụng vi điều khiển
cho mục đích chung. Cortex-M3 được sử dụng bởi nhiều nhà sản xuất sản phẩm vi điều khiển.

Figure 1.16: Cung cấp sơ đồ khối của vi điều khiển EFM32 từ Silicon Labs. Con số cũng hiển thị
chi tiết bộ xử lý Cortex-M3 và các thành phần cốt lõi. Chúng ta lần lượt kiểm tra từng cấp độ.
Lõi Cortex-M3 sử dụng các bus riêng biệt cho các lệnh và dữ liệu. Sự sắp xếp này là đôi khi
được gọi là kiến trúc Harvard, trái ngược với kiến trúc von Neumann, sử dụng các bus tín hiệu
và bộ nhớ giống nhau cho cả lệnh và dữ liệu. Bằng cách có thể đọc cả một hướng dẫn và dữ liệu
từ bộ nhớ cùng một lúc, bộ xử lý Cortex-M3 có thể thực hiện nhiều hoạt động song song, tăng
tốc độ thực thi ứng dụng. Lõi chứa một bộ giải mã cho Thumb, một ALU nâng cao với hỗ trợ
phần cứng nhân và chia, điều khiển logic và giao diện với các thành phần khác của bộ xử lý. Đặc
biệt, có một giao diện cho bộ điều khiển ngắt vectơ (NVIC) và mô-đun macrocell theo dõi nhúng
(ETM).
Lõi là một phần của mô-đun được gọi là bộ xử lý Cortex-M3. Thuật ngữ này hơi gây hiểu lầm,
bởi vì thông thường trong tài liệu, thuật ngữ lõi và bộ xử lý được xem là tương đương. Ngoài ra
đối với lõi, bộ xử lý bao gồm các yếu tố sau:
-NVIC: Cung cấp khả năng xử lý ngắt có thể định cấu hình cho bộ xử lý. Nó tạo điều kiện cho độ
trễ thấp xử lý ngoại lệ và ngắt, và kiểm soát việc quản lý nguồn.
-ETM: Một thành phần gỡ lỗi tùy chọn cho phép xây dựng lại quá trình thực thi chương trình.
ETM là được thiết kế để trở thành một công cụ gỡ lỗi tốc độ cao, công suất thấp, chỉ hỗ trợ theo
dõi hướng dẫn.
- Debug access port (DAP)(cổng truy cập gỡ lỗi): Cung cấp giao diện để truy cập gỡ lỗi bên
ngoài vào bộ xử lý.
- Debug logic (gỡ lỗi logic): Chức năng gỡ lỗi cơ bản bao gồm tạm dừng bộ xử lý, một bước, lõi
bộ xử lý đăng ký quyền truy cập, không giới hạn điểm ngắt phần mềm và toàn quyền truy cập bộ
nhớ hệ thống.
- ICode interface(giao diện Icode): Tìm nạp các lệnh từ không gian bộ nhớ mã.
- SRAM & peripheral interface: Giao diện đọc / ghi vào bộ nhớ dữ liệu và các thiết bị ngoại vi.
- Bus matrix (ma trận bus): Kết nối lõi và giao diện gỡ lỗi với các bus bên ngoài trên vi điều
khiển.
-Memory protection unit (phần bảo vệ bộ nhớ): Bảo vệ dữ liệu quan trọng được sử dụng bởi hệ
điều hành khỏi người dùng ứng dụng, tách các tác vụ xử lý bằng cách không cho phép truy cập
vào dữ liệu của nhau, vô hiệu hóa truy cập vào các vùng bộ nhớ, cho phép các vùng bộ nhớ được
xác định là chỉ đọc và phát hiện truy cập bộ nhớ không mong muốn có khả năng phá vỡ hệ
thống.
Phần trên của Hình 1.16 cho thấy sơ đồ khối của một bộ vi điều khiển điển hình được xây dựng
với Cortex-M3, trong trường hợp này là vi điều khiển EFM32. Bộ vi điều khiển này được bán
trên thị trường để sử dụng rộng rãi nhiều loại thiết bị, bao gồm đo lường năng lượng, khí đốt và
nước; hệ thống báo động và an ninh; công nghiệp các thiết bị tự động hóa; thiết bị tự động hóa
gia đình; phụ kiện thông minh; và các thiết bị sức khỏe và thể dục. Chip silicon bao gồm 10 khu
vực chính:
-Core and memory (lõi và bộ nhớ): Vùng này bao gồm bộ xử lý Cortex-M3, dữ liệu RAM tĩnh
(SRAM) bộ nhớ và bộ nhớ flash để lưu các lệnh chương trình và dữ liệu ứng dụng không thay
đổi. Bộ nhớ flash không dễ bay hơi (dữ liệu không bị mất khi tắt nguồn) và vì vậy rất lý tưởng
cho việc này mục đích. SRAM lưu trữ dữ liệu biến đổi. Khu vực này cũng bao gồm một giao
diện gỡ lỗi, làm cho dễ dàng lập trình lại và cập nhật hệ thống tại hiện trường.
+RAM tĩnh (SRAM) là một dạng bộ nhớ truy cập ngẫu nhiên được sử dụng cho bộ nhớ
đệm; xem Chương 6.
+Bộ nhớ flash là một dạng bộ nhớ linh hoạt được sử dụng cả trong vi điều khiển và bộ
nhớ ngoài; nó là được thảo luận trong Chương 7.

- Parallel I/O ports(cổng I/O song song): Có thể cấu hình cho nhiều loại sơ đồ I / O song song.
- Serial interfaces(giao diện nối tiếp): Hỗ trợ nhiều sơ đồ I / O nối tiếp khác nhau.
- Analog interfaces(giao diện tương tự): Logic tương tự-kỹ thuật số và kỹ thuật số-tương tự để hỗ
trợ các cảm biến và cơ cấu chấp hành.
- Timers and triggers(bộ hẹn giờ và bộ kích hoạt): Theo dõi thời gian và đếm các sự kiện, tạo
dạng sóng đầu ra và kích hoạt các hành động được hẹn giờ trong các thiết bị ngoại vi khác.
- Clock management(quản lý đồng hồ): Điều khiển đồng hồ và bộ dao động trên chip. Nhiều
đồng hồ và bộ dao động
được sử dụng để giảm thiểu tiêu thụ điện năng và cung cấp thời gian khởi động ngắn.
- Energy management(quản lý năng lượng): Quản lý các chế độ hoạt động năng lượng thấp khác
nhau của bộ xử lý và thiết bị ngoại vi để cung cấp quản lý thời gian thực nhu cầu năng lượng để
giảm thiểu năng lượng sự tiêu thụ.
- Security(bảo mật): Con chip bao gồm triển khai phần cứng của Tiêu chuẩn mã hóa nâng cao
(AES).
-Bus 32-bit: Kết nối tất cả các thành phần trên chip.
- Peripheral bus(bus ngoại vi): Một mạng cho phép các mô-đun ngoại vi khác nhau giao tiếp trực
tiếp với nhau mà không liên quan đến bộ xử lý. Điều này hỗ trợ hoạt động quan trọng về thời
gian và giảm chi phí phần mềm.
So sánh hình 1.16 với hình 1.2, bạn sẽ thấy có nhiều điểm giống nhau và giống nhau về tổng thể
cấu trúc thứ bậc. Tuy nhiên, lưu ý rằng cấp cao nhất của hệ thống máy tính vi điều khiển là chip
đơn, trong khi đối với máy tính đa lõi, cấp cao nhất là bo mạch chủ chứa một số khoai tây chiên.
Một sự khác biệt đáng chú ý khác là không có bộ nhớ đệm, trong bộ xử lý Cortex-M3 hoặc trong
bộ vi điều khiển nói chung, đóng một vai trò quan trọng nếu mã hoặc dữ liệu nằm ở bên ngoài kỉ
niệm. Mặc dù số chu kỳ để đọc lệnh hoặc dữ liệu thay đổi tùy thuộc vào lần truy cập bộ nhớ
cache hoặc bỏ lỡ, bộ nhớ đệm cải thiện đáng kể hiệu suất khi sử dụng bộ nhớ ngoài. Chi phí như
vậy là không cần thiết cho vi điều khiển.

You might also like