Tìm hiểu vi xử lý apple a5
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-TÌM HIỂU VỀ KIẾN TRÚC VI XỬ LÍ APPLE A5 THẾ HỆ THỨ NHẤT DÀNH
CHO IPAD2 VÀ IPHONE4S
Trang 2I. GIỚI THIỆU VỀ VI XỬ LÍ APPLE A5 THẾ HỆ THỨ NHẤT
1. Bước tiến mới của Apple với vi xử lý A5
Chỉ một thời gian ngắn kể từ khi ra mắt, chip A4 của Apple đã dànhđược thành công lớn với sự quan tâm của nhiều người thì ngay nămsau đó, Apple lại hâm nóng những tín đồ của mình nói riêng và giớicông nghệ nói chung bằng sản phẩm mới của họ - 1 vi xử lý đồ họa 2nhân mã hiệu SGX543 được nâng cấp từ phiên bản đơn nhân SGX535dùng trong chip A4 (còn có tên gọi khác là PowerVR535)
Điều thú vị nhất trong nước cờ này của Apple là năng lực xử lý đồ họacủa A5 tăng rất nhiều so với vi xử lý hiện tại khiến cho việc tăng độphân giải của iPad tăng lên gấp 4 lần để đạt độ phân giải của Retinatrở nên khả thi hơn bao giờ hết
Bộ xử lý A5 không đơn thuần chỉ là một CPU mà chính xác thì nó làmột chip tất cả trong một (System on Chip –SoC) -một mạch tích hợpchip có chứa tất cả các loại tín hiệu trên một nền chip duy nhất đượcthiết kế bởi Apple Inc và sản xuất bởi Samsung để thay thế cho vi xử
lí A4 trước đó Liệu rằng đây có phải là một nền tảng vững chắc chosản phẩm iPhone 5 sắp tới của Apple hay không? Chúng ta sẽ cùngxem xét về kiến trúc của bộ vi xử lý này
2. Apple A5 với bước tiến từ lõi đơn sang lõi kép
Nếu Chip SoC A4 là sự kết hợp của chip xử lí ARM Cortex-A9, nhân
đồ họa ARM Mali50 và chip quản lí bộ nhớ trong một lõi duy nhất thìchip SoC A5 được kết hợp bởi ARM Cortex-A9 MP2 với NEONSIMD và một lõi kép PowerVR SGX543MP2 GPU có thể di chuyển
35 triệu đa giác mỗi giây ở 200MHz Công nghệ NEON SIDM cungcấp tốc độ xử lí tín hiệu cao Về cơ bản, hầu hết các điện thoại thôngminh và notepads đều dựa trên bộ vi xử lý với nền tảng ARM nhưng
ở A5 có một sự khác biệt do Apple thúc đẩy sản phẩm của mình tíchhợp chặt chẽ với bộ nhớ RAM để làm giảm chi phí chip
Nhờ 2 lõi chạy ở tốc độ 1GHz nên Apple A5 cung cấp hiệu suất tănggấp 2 lần, sức mạnh đồ họa tăng gấp 7 lần so với bộ xử lý A4 với 1 lõiđơn
Thông số kĩ thuật của Apple A5:
Trang 3Mặt cắt Apple A5
II. KIẾN TRÚC VI XỬ LÝ APPLE A5
1.Sơ đồ khối bộ xử lý và bộ xử lý đồ họa
Apple hiện chỉ phát triển 2 loại SoC là A4 và A5 được dung cho iPad vàiPhone4 Thực tế, Apple lấy nguồn SoC trực tiếp từ Samsung – hãng có
Đặc tính vật lý kĩ thuậtKích thước Die 12.1mmx10.1mm=122.2mm2
Trang 4sản phẩm mang tên Exynos nhưng khi iPad ra mắt, chúng đã được đổi tên
là Apple A4 và kế tiếp đó là A5
Apple A4 là Soc tích hợp vi xử lý ARM Cortex A8 lõi đơn tốc độ từ800MHz đến 1GHz và GPU PowerVR SGX535 được sản xuất trên quytrình 45nm ở A5 sức mạnh đã được cải thiện đáng kể với việc tích hợp
vi xử lý ARM Cortex A9 lõi kép và GPU PowerVR SGX543MP2 lõi képcùng bộ nhớ RAM 512MB Dưới đây là sơ đồ khối của vi xử lý ARMCortex A9 lõi kép
Sơ đồ khối bộ xử lý ARM Cortex A9
Sự ra đời của ARM Cortex A9 MP2 được các chuyên gia đánh giá làmột bước ngoặt lịch sử cho các thiết bị di động để có thể tiến lên gần vớimột máy tính Tốc độ 1 GHz của ARM Cortex A9 lõi kép không phải là
cố định, nó hoạt động linh hoạt và có thể điều chỉnh ở một mức độ làmviệc phụ thuộc vào tải của hệ thống
Kiến trúc Cortex A9 lõi kép có một số thay đổi khác so với Cortex A8
Sự thay đổi chính và quan trọng nhất đó là việc di chuyển từ kiến trúc lõiđơn sang lõi kép Với kiến trúc này, A9 tăng cường bộ nhớ đệm so vớiA8, cho phép sắp xếp lại khả năng đọc và ghi trong quá trình làm việc.Đằng sau bộ nhớ đệm Cache L1 là sự xuất hiện của một bộ nhớ đệmCache L2 với kích thước lên đến 1 MB Mỗi lõi bộ nhớ Cache L1 cókích thước 64 KB (bao gồm 32 KB xử lý và 32 KB dữ liệu)
Trang 5Sơ đồ khối bộ xử lý đồ họa Power SGX 5XT
Đơn vị xử lý đồ họa GPU là một mạch lưu trữ hình ảnh trong một khung
và đặt nó trong chuyển động để các video hoặc hình ảnh có thể xem đượctrên màn hình Một GPU được sử dụng trong các hệ thống nhúng, điện thoại di động, máy tính để bàn,… điều khiển đồ họa máy tính và làm thay đổi đầu ra màn hình một cách hiệu quả Nó có khả năng di chuyển 1
tỉ pixel mỗi dây A5 có năng lực xử lý đồ họa tăng gấp 7 lần so với A4 nhờ Power SGX 543 lõi kép
Dòng Power SGX 5XT chưa xuất hiện trong nhiều thiết bị mà mới chỉ được tích hợp trong SoC Apple A5 được dùng trong iPad2, iPhone4S và PlayStation Vita Nếu dòng 5 chỉ có GPU lõi đơn thì 5XT dùng cho A5
hỗ trợ tới 2 lõi, mỗi lõi có tốc độ gấp 2 lần SGX540 Do đó Apple A5 có khả năng xử lí đồ họa nhanh hơn hẳn so với A4
2.Tập lệnh
2.1 Kiểu thao tác
Trang 6Bộ xử lý Cortex có hai chế độ hoạt động: chế độ Thread và chế độHandler CPU sẽ chạy ở chế độ Thread trong khi nó đang thực thi ở chế
độ nền không có ngắt xảy ra và sẽ chuyển sang chế độ Handler khi nóđang thực thi các ngắt đặc biệt (exceptions) Ngoài ra, CPU Cortex có thểthực thi mã trong chế độ đặc quyền hoặc không đặc quyền (privilegedhoặc non-privileged) Trong chế độ đặc quyền, CPU có quyền truy cập tất
cả các lệnh Trong chế độ không có đặc quyền, một số lệnh bị cấm truycập Ngoài ra, việc truy cập các thanh ghi điều khiển hệ thống trong bộ vi
xử lý Cortex cũng bị cấm Cách sử dụng ngăn xếp cũng có thể được cấuhình Ngăn xếp chính (main stack-R13) có thể được sử dụng bởi cả haichế độ Thread và Handler Chế độ Handler có thể được cấu hình để sửdụng ngăn xếp quá trình
Sau khi reset, bộ xử lý Cortex sẽ chạy trong cấu hình phẳng Cả hai chế
độ Thread và Handler được thực thi trong chế độ đặc quyền (privilegedmode), do đó, không có sự giới hạn nào về quyền truy cập vào bất kỳ tàinguyên của bộ xử lý Cả hai chế độ Thread và Handler đều sử dụng ngănxếp chính Để bắt đầu thực hiện, bộ xử lý Cortex đơn giản chỉ cần vectorreset và địa chỉ bắt đầu của ngăn xếp để được cấu hình trước khi có thểbắt đầu thực thi chương trình ứng dụng C Tuy nhiên, nếu người dùngđang sử dụng một hệ điều hành thời gian thực (RTOS) hoặc đang pháttriển một ứng dụng đòi hỏi khắc khe về độ an toàn, chip có thể được sửdụng trong chế độ cấu hình nâng cao, nơi chế độ Handler (exceptions vàRTOS) chạy trong chế độ đặc quyền và sử dụng ngăn xếp chính, trong khi
mã ứng dụng chạy trong chế độ Thread và không có đặc quyền truy cập
và sử dụng ngăn xếp quá trình Bằng cách này mã hệ thống và mã ứngdụng được phân vùng và các lỗi trong mã ứng dụng sẽ không làm choRTOS sụp đổ
Tất cả lệnh của ARM CortexA9 MP2 đều là 32bit:
- Có cấu trúc dạng load-store
Trang 7- Cấu trúc lệnh định dạng 3 địa chỉ (nghĩa là địa chỉ của 2 toán hạng nguồn và toán hạng đích đều là các địa chỉ riêng biệt)
- Mỗi chỉ lệnh thực thi một điều kiện
- Có cả chỉ lệnh load-store nhiều thanh ghi đồng thời
- Có khả năng dịch bit kết hợp ALU trong một chu kì máy
• Tải và lưu trữ hướng dẫn nhiều để tối đa hóa thông lượng dữ liệu
• Có điều kiện thực hiện hầu như tất cả các hướng dẫn để tối đa hóa thông lượng thực hiện
Những cải tiến với một kiến trúc RISC cơ bản cho phép bộ vi xử lý ARM đạt được một sự cân bằng tốt hiệu suất cao, kích thước mã nhỏ, tiêu thụ điện năng thấp, và khu vực silicon nhỏ
2.2 Tổ chức tập lệnh :
◊ Giải mã các chỉ lệnh logic bằng kết nối phần cứng
◊ Thực thi chỉ lệnh theo cấu trúc dòng chảy (hình dưới)
Trang 8◊ Một chỉ lệnh thực thi trong 1 chu kì xung nhịp
2.3 Cấu trúc load-store:
Cũng như hầu hết các bộ xử lý dùng tập lênh RISC khác, ARM Cortex A9lõi kép cũng sử dụng cấu trúc load-store Điều đó có nghĩa là: tất cả các chỉlệnh <cộng, trừ…> đều được thực hiện trên thanh ghi Chỉ có lệnh copy giátrị từ bộ nhớ vào thanh ghi<load> hoặc chép lại giá trị từ thanh ghi vào bộnhớ<store> mới có ảnh hưởng tới bộ nhớ Các bộ xử lý CISC cho phép giátrị trên thanh ghi có thể cộng với giá trị trong bộ nhớ, đôi khi còn cho phépgiá trị trên bộ nhớ có thể cộng với giá trị trên thanh ghi ARM Cortex A9 lõikép không hỗ trợ cấu trúc lệnh dạng ‘từ bộ nhớ đến bộ nhớ’ Vì thế, tất cảcác lệnh của nó có thể thuộc 1 trong 3 loại sau:
1. Chỉ lệnh xử lý dữ liệu: chỉ thay đổi giá trị trên thanh ghi
2. Chỉ lệnh truyền dữ liệu: copy giá trị từ thanh ghi vào bộ nhớ và chépgiá trị từ bộ nhớ vào thanh ghi.<load-store>
3. Chỉ lệnh điều khiển dòng lệnh: Bình thường, ta thực thi các chỉ lệnhchứa trong một vùng nhớ liên tiếp, chỉ lệnh điều khiển dòng lệnh chophép chuyển sang các địa chỉ khác nhau khi thực thi lệnh, tới nhữngnhánh cố định, <lệnh rẽ nhánh> hoặc là lưu và trở lại địa chỉ để phụchồi chuỗi lệnh ban đầu <chỉ lệnh rẽ nhánh và kết nối> hay là đè lênvùng code của hệ thống <gọi giám sát-ngắt phần mềm>
Trang 92.4Mô hình thiết kế các thanh ghi:
Để phục vụ mục đích của người dùng: ro-r12 là các thanh ghi đadụng,Stack Pionter(SP) r13, thanh ghi liên kết LR (Link Register) r14 vàr15 là thanh ghi PC, thanh ghi trạng thái chứa chương trình hiện tại(CPSR) Các thanh ghi khác được giữ lại cho hệ thống
Để thực hiện lệnh xử lý dữ liệu, các toán hạng phải được nạp vào một tậpthanh ghi trung tâm, các phép tính dữ liệu phải được thực hiện trên các thanhghi này và kết quả sau đó được lưu lại trong bộ nhớ
Các thanh ghi của vi xử lý
Trang 10
Cấu trúc của thanh ghi trạng thái chương trình hiện tại
Thanh ghi CPSR được người dùng sử dụng chứa các bit điều kiện:
• N: Negative- cờ này được bật khi bit cao nhất của kết quả xử lý ALU bằng
1
• Z: Zero- cờ này được bật khi kết quả cuối cùng trong ALU bằng 0
• C: Carry- cờ này được bật khi kết quả cuối cùng trong ALU lớn hơn giá trị32bit và tràn
• V: Overflow-cờ báo tràn sang bit dấu
Do vậy tất cả các hoạt động của chương trình tập trung xung quanh tập thanh ghi của CPU Tập thanh ghi này bao gồm 16 thanh ghi 32 bit Các thanh ghi R0-R12 là các thanh ghi đơn giản, có thể được dùng để chứa các biến của chương trình Các thanh ghi R13-R15 có chức năng đặc biệt trong CPU Cortex
Thanh ghi R13 được dùng như là con trỏ ngăn xếp (stack pointer) Thanh ghinày được chia thành nhóm (banked), cho phép CPU Cortex có hai chế độ hoạt động, mỗi chế độ có không gian ngăn xếp riêng biệt Đặc điểm này thường được hệ điều hành thời gian thực (Real Time Operating System) dử dụng để có thể chạy mã hệ thống của mình trong một chế độ bảo vệ Trong CPU Cortex có hai ngăn xếp được gọi là main stack và process stack
Thanh ghi R14 tiếp theo được gọi là thanh ghi liên kết (link register) Thanhghi này được sử dụng để lưu trữ các địa chỉ trở về khi một cuộc gọi thủ tục (call a procedure) được thực hiện Điều này cho phép CPU Cortex thực hiện rất nhanh việc nhập và thoát khỏi một thủ tục Nếu chương trình của bạn gọi sâu vào nhiều lớp chương trình con, trình biên dịch sẽ tự động lưu R14 trên ngăn xếp
Thanh ghi cuối cùng R15 là bộ đếm chương trình (Program Counter); nó là một phần của tập thanh ghi trung tâm, nó có thể đọc được và thao tác giống như bất kỳ thanh ghi nào khác
2.5 Lập trình hợp ngữ cho ARM Cortex A9
a) Lệnh xử lý dữ liệu:
Trang 11Lệnh xử lý dữ liệu cho phép thực thi các lệnh số học, logic trên các thanhghi Những phép toán dạng này có 2 tóan tử tham gia và sinh ra 1 kết quảduy nhất Trong 2 tóan hạng nguồn, toán hạng thứ 2 có thể là thanh ghi, giátrị tức thời, tóan hạng này có thể được dịch bit trước khi tham gia vào phéptính số học mà vẫn tính là trong 1 chu kì máy
+Tất cả các toán hạng đều có chiều dài 32bit
+Nếu là 1 kết quả thì nó cũng có chiều dài là 32bit <trừ trường hợp nhânsinh ra kết quả dài 64bit>
Trang 12o Chỉ lệnh load và store 1 thanh ghi
o Chỉ lệnh load và store nhiều thanh ghi
o Chỉ lệnh trao đổi giá trị các thanh ghi
c) Định địa chỉ gián tiếp qua thanh ghi
hỗ trợ 6 loại dữ liệu: +8 bit có dấu và không dấu
+16 bit có dấu và không dấu
+32 bit có dấu và không dấu
Như phần trên đề cập, các tóan tử của ARM có 32 bit, bởi vậy, khi làm việc với các dữ liệu ngắn hơn,các bit cao của toán tử sẽ được thay thế bằng bit ‘0’
b) Chế độ hoạt động
Bảng các chế độ hoạt động và sử dụng thanh ghi
Trang 13Các địa chỉ dung cho hệ thống
c) Thực thi các điều kiện
Điều kiện cần thực thi nằm trên 4 bit vao nhất của chỉ lệnh
Vị trí các bit điều kiện trong chỉ lệnh 32bit
Tổ hợp các điều kiện này được quyết định bởi các bit <N,Z,C,V> nằm trong thanh ghi trạng thái chương trình hiện tại <CPSR>
Trang 14+Lưu địa chỉ PC vào thanh ghi r14
+Lưu giá trị thanh ghi trạng thái chương trình chương trình hiện tại vào thanh ghi SPSR
+Vào chế độ giám sát và không cho phép các ngắt bình thường xảy ra
<nhưng các ngắt nhanh vẫn còn tác động> bằng cách gán
CPSR[4:0]=100112 và CPSR[7]=1
+gán PC=0x08 và thực thi các chỉ lệnh tại đấy
Để trở về lại chương trình bình thường sau SWI:
+Copy giá trị thanh ghi r14 vào PC
+Lấy lại giá trị CPSR từ SPSR
e) Lệnh xử lý dữ liệu
Mã hóa nhị phân:
Xem cấu trúc một chỉ lệnh xử lý dữ liệu:
Trang 15Phân tích:
Như đã nói ở các phần trước, mỗi chỉ lệnh của ARM có 32bit, 2 toán tử nguồn và 1 tóan tử đích Toán tử nguồn thứ nhất là 1 thanh ghi, toán tử nguồn thứ 2 có thể là 1 thanh ghi, một thanh ghi được dịch(hoặc xoay) bit, hoặc là một giá trị cụ thể
Opcode:
Có tất cả 16 lệnh opcode=[00002-11112]; tham khảo cụ thể bàng bảng sau:
Bảng Opcode
Điều kiện:
Bị ảnh hưởng bởi các bit cờ, trạng thái các cờ được quy định:
+Cờ N=1 nếu kết quả là âm <N=bit cao nhất của kết quả>
+cờ Z=1 nếu kết quả bằng 0
+Cờ C được bật nếu kết quả có nhớ từ ALU(ADD, ADC, SUB, SBC, RSB, RSC, CMP, CMN) hay từ kết quả của phép dịch bit Nếu không có phép dịch bit, cờ C được giữ giá trị trước đó
+Cờ V chỉ bị ảnh hưởng trong các phép toán số học V=1 khi có tràn từ bit 30 sang 31 Nó quan trọng chỉ trong phép toán học bù 2 có dấu
Trang 16Giả lệnh hợp ngữ trong thanh ghi từ 21-23 được cho bởi bảng sau:
Giả lệnh hợp ngữ cho phép nhân Lệnh hợp ngữ:
MUL{<cond>}{S} Rd, Rm, Rs
MLA{<cond>}{S} Rd, Rm, Rs, Rn
<mul>{<cond>}{S} RdHi, RdLo, Rm, Rs với <mul> là một trong các
lệnh(UMULL, UMLAL, SMULL, SMLAL)
g) Lệnh chuyển dữ liệu nhiều thanh ghi
Mã hóa nhị phân:
Trang 17Chú thích:
Danh sách các thanh ghi bao gồm một mảng 16 bit thay thế cho 16 thanh ghi
từ R0 đến R15 <vị trí bit tương ứng với số thứ tự thanh ghi> U=1 địa chỉ nền tăng và ngược lại, P=1, địa chỉ nền tăng trước và ngược lại
Lệnh hợp ngữ:
LDMISTM{<cond>}<add mode> Rn{!}, <registers>
h) Lệnh chuyển dữ liệu: byte không dấu và 1 word:
i) Lệnh chuyển dữ liệu: byte có dấu và nửa word
Mã hóa nhị phân:
Trang 18Mã hóa nhị phân chuyển dữ liệu dạng byte có dấu và nửa từ Chú thích
Bit S và H cho biết loại dữ liệu truyền được quy ước như bảng trên
Lệnh hợp ngữ:
Định dạng chỉ số trước: LDR|STR{<cond>}H|SHI SB Rd, [Rn, <offset>] { ! }
Định dạng chỉ số sau: LDRlSTR{<cond>}H|SHlSB Rd, [Rn], <offset>
j) Lệnh hoán đổi giá trị của bộ nhớ và thanh ghi:
Mã hóa nhị phân:
Trang 19Chú thích:
B=1=>load byte không dấu, B=0=>load word ở ô nhớ được định địa chỉ bởi
Rn tới Rd, chứa giá trị từ Rm vào ô nhớ tương ứng Rd và Rm có thể là 1 thanh ghi
Lệnh hợp ngữ:
SWP{<cond>}{B} Rd, Rm,Rn
Chú ý:
+Thanhghi PC không được dùng trong chỉ lệnh này
+Thanh ghi Rn phải khác với thanh ghi Rm và thanh ghi Rd
k) Lệnh chuyển giá trị từ thanh ghi trạng thái vào thanh ghi đa dụng:
+Chỉ có thể truy cập giá trị SPSR nhờ lệnh này
+Khi chỉnh sửa các giá trị CPSR hoặc SPSR phải chú ý các bit không được
sử dụng
l) Lệnh chuyển giá trị từ thanh ghi đa dụng vào thanh ghi trạng thái