GIỚI THIỆU VỀ VI XỬ LÝ ARM
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA: KỸ THUẬT ĐIỆN TỬ 2
GIỚI THIỆU VỀ VI XỬ LÝ ARM
Trang 2NỘI DUNG BÁO CÁO
Trang 3NỘI DUNG BÁO CÁO
Trang 4NỘI DUNG BÁO CÁO
– Giới thiệu chung về họ vi xử lý ARM
– Các thế hệ vi xử lý ARM
Trang 5GIỚI THIỆU CHUNG VỀ HỌ VI XỬ LÝ ARM
• ARM (Acorn RISC Machine sau là Advantage RISC Machine) là cấu trúc vi xử lý 32-bit kiểu RISC được
sử dụng rộng rãi trong các thiết kế nhúng
• Do đặc điểm tiết kiệm năng lượng, các CPU ARM chiếm ưu thế trong các sản phẩm điện tử di động.
• Ngày nay, hơn 75% CPU nhúng 32-bit là thuộc họ ARM, điều này khiến ARM trở thành cấu trúc 32-bit được sản xuất nhiều nhất trên thế giới
• CPU ARM được tìm thấy khắp nơi trong các sản phẩm thương mại điện tử, từ thiết bị cầm tay (PDA, điện thoại di động, máy đa phương tiện, máy trò chơi cầm tay, và máy tính cầm tay) cho đến các thiết bị ngoại vi máy tính (ổ đĩa cứng, bộ định tuyến
Trang 6• Nếu cầm bất kỳ chiếc điện thoại nào lên thì có tới 95% chắc chắn là nó chứa ít nhất một vi xử
lý ARM
vòng năm năm qua thì khả năng đó là 100%
khác.
khác như router không dây; máy in; thiết bị
GIỚI THIỆU CHUNG VỀ HỌ VI XỬ LÝ ARM
Trang 7• 2003, Intel mới bán được chip x86 thứ 1 tỉ
• Đối thủ sát sườn của Intel trong thế giới
PC là AMD mới cán mốc chip thứ 500 triệu vào năm nay
• Trong khi đó, ARM chỉ riêng trong năm
2009, bán được 2,8 tỉ vi xử lý, nghĩa là bán được 90 chip mỗi giây
GIỚI THIỆU CHUNG VỀ HỌ VI XỬ LÝ ARM
Trang 8• ARM không có nhà máy sản xuất và không bán chip nào dưới thương hiệu của họ Thay vào đó, họ cấp phép thiết
kế lõi CPU cho hơn 200 nhà sản xuất bán dẫn trên khắp thế giới, như Marvell Qualcomm, Texas Instruments, …
• Mỗi hãng khi nhận giấy phép này đều tự do đóng gói công nghệ ARM với những chỉnh sửa tùy ý để cho ra sản phẩm của riêng họ, tiếp thị dưới thương hiệu của riêng họ
• Ví dụ, CPU trong iPhone 3GS được bán dưới thương hiệu Samsung S5PC100, nhưng bên trong đó là lõi ARM Cortex A8 600MHz, liên kết với công nghệ xử lý đa phương tiện, tín hiệu, đồ họa của riêng Samsung
tảng Cortex A8 này và thêm các tính năng hỗ trợ đồ họa
GIỚI THIỆU CHUNG VỀ HỌ VI XỬ LÝ ARM
Trang 9• Ngay cả Intel cũng thiết kế và quảng bá chip dựa trên lõi của ARM trong vài năm dưới thương hiệu XScale
• Có thể tìm thấy vi xử lý XScale trong thiết bị BlackBerry series 8000
• Nhưng sau đó Intel bán bộ phận XScale cho Marvell vào năm 2006 với lý do nó không đem lại lợi nhuận Hai năm sau họ cho ra đời chip Atom.
• Atom được Intel thiết kế từ đầu để có thể hoạt động tốt ở điện áp cực thấp Dù vậy, các mẫu Atom đời đầu vẫn ngốn khá nhiều pin của smartphone May mắn là khi thâm nhập vào netbook, Atom phát triển như tên lửa.
• Nhưng khi thị trường netbook bắt đầu bão hoà, họ phải
GIỚI THIỆU CHUNG VỀ HỌ VI XỬ LÝ ARM
Trang 10• Medfield là một phiên bản Atom khác vừa được Intel phát triển, nhỏ tới mức có thể hoạt động ở mức điện áp rất thấp và có thể ứng dụng được trong vô số sản phẩm điện tử tiêu dùng
• Có một điều khá thú vị là dường như Intel bắt đầu làm theo cách thức của ARM khi cho phép công ty bán dẫn TSMC (Đài Loan) phát triển các sản phẩm SoC (System On Chip) tùy ý dựa trên lõi Atom của họ.
GIỚI THIỆU CHUNG VỀ HỌ VI XỬ LÝ ARM
Trang 11• Việc thiết kế ARM được bắt đầu từ năm 1983, trong một
dự án phát triển của công ty máy tính Acorn.
Furber, bắt đầu phát triển một bộ vi xử lý có nhiều điểm tương đồng với Kỹ thuật MOS 6502 tiên tiến.
vì vậy việc tạo ra một chip như vậy là một bước tiến đáng kể của công ty này
ARM1 vào năm 1985, và vào năm sau, nhóm hoàn thành sản phẩm ‘’thực’’ gọi là ARM2
tức cho phép quản lý đến 64 Mbyte địa chỉ và 16 thanh
GIỚI THIỆU CHUNG VỀ HỌ VI XỬ LÝ ARM
Trang 12NỘI DUNG BÁO CÁO
– Giới thiệu chung về họ vi xử lý ARM
– Các thế hệ vi xử lý ARM
Trang 13• Có thể nói ARM2 là bộ vi xử lý 32-bit khả dụng đơn giản nhất trên thế giới, với chỉ gồm 30.000 transistor (so với bộ vi xử lý lâu hơn bốn năm của Motorola là 68000 với khoảng 68.000 transistor)
• Sự đơn giản như vậy có được nhờ ARM không
có vi chương trình (mà chiếm khoảng ¼ đến 1/3 trong 68000) và cũng giống như hầu hết các CPU vào thời đó, không hề chứa cache
• Sự đơn giản này đưa đến đặc điểm tiêu thụ công suất thấp của ARM, mà lại có tính năng tốt hơn
cả 286
• Thế hệ sau, ARM3, được tạo ra với 4KB cache
CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 14• Vào những năm cuối thập niên 80, hãng máy tính Apple Computer bắt đầu hợp tác với Acorn để phát triển các thế hệ lõi ARM mới
• Công việc này trở nên quan trọng đến nỗi Acorn nâng nhóm thiết kế trở thành một công ty mới gọi là Advanced RISC Machines
• Kết quả sự hợp tác này là ARM6 Mẫu đầu tiên được công bố vào năm 1991.
• Apple đã sử dụng bộ vi xử lý ARM 610 dựa trên ARM6 làm cơ sở cho PDA hiệu Apple Newton.
• Vào năm 1994, Acorn dùng ARM 610 làm CPU trong các máy vi tính RiscPC của họ
CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 15• Trải qua nhiều thế hệ nhưng lõi ARM gần như không thay đổi kích thước ARM2 có 30.000 transistors trong khi ARM6 chỉ tăng lên đến 35.000
• Ý tưởng của nhà sản xuất lõi ARM là sao cho người sử dụng có thể ghép lõi ARM với một số bộ phận tùy chọn nào đó để tạo ra một CPU hoàn chỉnh, một loại CPU mà có thể tạo ra trên những nhà máy sản xuất bán dẫn
cũ và vẫn tiếp tục tạo ra được sản phẩm với nhiều tính năng mà giá thành vẫn thấp
• Thế hệ thành công nhất có lẽ là ARM7TDMI với hàng trăm triệu lõi được sử dụng trong các máy điện thoại di
CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 16• Dreamcast đưa ra bộ vi xử lý SH4 mà chỉ mượn một
số ý tưởng từ ARM (tiêu tán công suất thấp, tập lệnh gọn …) nhưng phần còn lại thì khác với ARM
• Dreamcast cũng tạo ra một chip xử lý âm thanh được thiết kế bởi Yamaha với lõi ARM7
• Bên cạnh đó, Gameboy Advance của Nintendo, dùng ARM7TDMI ở tần số 16,78 MHz
• Hãng DEC cũng bán giấy phép về lõi cấu trúc ARM (đôi khi chúng ta có thể bị nhầm lẫn vì họ cũng sản xuất ra DEC Alpha) và sản xuất ra thế hệ Strong ARM Hoạt động ở tần số 233 MHz mà CPU này chỉ tiêu tốn khoảng 1 watt công suất (những đời sau còn tiêu tốn ít công suất hơn nữa)
CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 17• Sau những kiện tụng, Intel cũng được chấp nhận sản xuất ARM và Intel đã nắm lấy cơ hội này để bổ sung vào thế hệ già cỗi i960 của họ bằng Strong ARM
sản phẩm chức năng cao gọi tên là Xscale.
CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 18CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 19CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 20CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 21CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 22CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 23CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 24CÁC THẾ HỆ VI XỬ LÝ ARM
Trang 25• Một số công ty được cấp bản quyền ARM như sau:
Trang 26NỘI DUNG BÁO CÁO
• PHẦN 1: GIỚI THIỆU HỌ VI XỬ LÝ ARM
• PHẦN 2: VI XỬ LÝ ARM7TDMI
• PHẦN 3: VI ĐIỀU KHIỂN AT91SAM7S256
• PHẦN 4: PHẦN CỨNG KIT AT91SAM7S256
• PHẦN 5: CÁC CHƯƠNG TRÌNH MẦU KIỂM
TRA CÁC KHỐI MẠCH
Trang 27NỘI DUNG BÁO CÁO
– Phần cứng vi xử lý ARM7TDMI
– Tập lệnh ARM7TDMI
– Tập lệnh THUMP ARM7TDMI
– So sánh THUMP và ARM
Trang 28VI XỬ LÝ ARM7TDMI
• ARM7TDMI là bộ vi xử lý đa dụng 32 bit trong
họ Advanced RISC machine
• ARM7TDMI ?
ARM7 - 32-bit cấu trúc RISC hiệu năng cao
T – Kiến trúc mở rộng cho Thumb
D – Gỡ rối (Debug extension)
M – Bộ nhân cao cấp (Enhanced multiplier)
I - Embedded ICE macrocell extension (mạch mô phỏng tích hợp)
Trang 29VI XỬ LÝ ARM7TDMI
– fetch, decode, execute
Trang 30VI XỬ LÝ ARM7TDMI
• ARM7TDMI có hai trạng thái hoạt động:
instructions
THUMB instructions
• Chuyển trạng thái hoạt động - Switching state
• Lệnh BX có bit trạng thái (bit 0) lập trong toán hạng thanh ghi.
• Một cách tự động khi quay về từ một ngoại lệ (exception) (IRQ, FIQ, ABORT, SWI,…), khi exception được thực hiện khi vi xử lý đang trong trạng thái THUMB.
• Thực hiện lệnh BX với bit trạng thái được xoá trong toán hạng thanh ghi
• Một cách tự động khi bộ vi xử lý trả lời một ngoại lệ Trong trường hợp
Trang 31VI XỬ LÝ ARM7TDMI
• Trạng thái thức hiện chương trình bình thường
• Thiết kế để hỗ trợ quá trình truyền dữ liệu hoặc truyền kênh
• Sử dụng cho quá trình xử lý các ngắt chung
• Chế độ bảo vệ cho hệ điều hành
• Chuyển qua sau khi bỏ dở quá trình truyền dữ liệu hoặc tiền lấy lệnh
• Chế độ đặc quyền người dùng cho hệ điều hành
Undefined (und): Entered when an undefined instruction is executed
Trang 32• Việc chuyển qua các chế độ có thể thực hiện bằng phần mềm, có thể bằng quá trình xử lý ngắt hoặc xử lý ngoại lệ.
– Hầu hết các chương trình ứng dụng sẽ thực hiện trong chế độ User Các chế độ non-user được hiểu là các chế độ đặc quyền được chuyển qua khi phục vụ ngắt, xử lý ngoại lệ hoặc các quá trình bảo vệ tài nguyên khác.
VI XỬ LÝ ARM7TDMI
Trang 33VI XỬ LÝ ARM7TDMI
– 31 thanh ghi đa năng 32-bit
– 6 thanh ghi trạng thái
• Các thanh ghi này không đồng thời truy cập được tại cùng một thời điểm, mà truy cập tuỳ theo chế độ hoạt động và trạng thái của bộ vi xử lý.
Trang 34VI XỬ LÝ ARM7TDMI
Trang 35VI XỬ LÝ ARM7TDMI
Trang 36VI XỬ LÝ ARM7TDMI
• Các thanh ghi tương ứng trong trạng thái THUMB và trạng thái ARM như sau:
Trang 37VI XỬ LÝ ARM7TDMI
• ARM7TDMI có một thanh ghi trạng thái chương trình hiện hành Current Program Status Register (CPSR), và 05 thanh ghi Saved Program Status Registers (SPSRs) sử dụng cho các quá trình xử lý ngoại lệ.
• Các chứa năng của thanh ghi này là:
Trang 38VI XỬ LÝ ARM7TDMI
• Các cờ mã điều kiện - Condition Code Flags
số học và logic, Các bit này thường được sử dụng làm điều kiện chuyển điều khiển chương trình.
• Trong trạng thái ARM, tất cả các lệnh có thể thực hiện theo điều kiện.
• Trong trạng thái THUMB, chỉ có lệnh rẽ nhán Branch được thực hiện theo điều kiện.
• Các bit điều khiển - Control Bits
Nếu bộ vi xử lý đang hoạt động trong chế độ đặc quyền, các bit này
có thể thay đổi bằng phần mềm.
• Bit này phản ánh chế độ hoạt động của bộ vi xử lý Khi bit này được lập
bộ vi xử lý thực hiện trạng thái THUMP ngược lại nó hoạt động trong trạng thái ARM Bit này cung cấp ra ngoài trên chân TBIT.
• Chú ý rằng phần mềm không thay đổi được trạng thái của TBIT trong CPSR Vì nếu vậy bộ xử lý có thể chuyển trạng thái một cách không dự
Trang 39VI XỬ LÝ ARM7TDMI
• Các bit điều khiển - Control Bits
– Các bit cấm ngắt - Interrupt disable bits:
các ngắt IRQ và FIQ.
– Các bit chế độ - Mode bits:
Chúng xác định chế độ hoạt động của bộ vi xử lý Không phải tất cả trạng thái của các bit này đều định nghĩa các chế
độ hoạt động đúng Nên nếu lập trình các bit chế độ sai bộ vi
xử lý sẽ chuyển qua trạng thái không thể phục hồi, và nó cần
Trang 40VI XỬ LÝ ARM7TDMI
• Khi có các ngoại lệ, chương trình thông thường sẽ tạm ngưng.
• ARM hỗ trợ 7 loại ngoại lệ với 7 chế độ đặc quyền để
xử lý chúng.
• Các vector ngoại lệ của ARM bao gồm:
Trang 41VI XỬ LÝ ARM7TDMI
• Khi xử lý một ngoại lệ ARM7TDMI sẽ:
– Lưu địa chỉ của lệnh kế tiếp vào thanh ghi liên kết (Link Register) thích hợp
– Chép giá trị của CPSR vào SPSR thích hợp
– Đổi các bit chế độ trong CPSR tuỳ thuộc vào loại ngoại lệ
– Đổi giá thanh ghi PC để lấy lệnh kế tiếp từ chương
Trang 42VI XỬ LÝ ARM7TDMI
• Khi kết thúc quá trình xử lý ngoại lệ:
– Chuyển Link Register, trừ đi một offset tương ứng cho thanh ghi PC (Giá trị offset sẽ tuỳ thuộc vào loại ngoại lệ)
– Chép SPSR cho CPSR trở lại
– Xoá các cờ cấm ngắt nếu chúng được lập khi chuyển qua trạng thái xử lý ngoại lệ.
Trang 43VI XỬ LÝ ARM7TDMI
– Khi bộ vi xử lý RESET Reset sẽ có:
• CPSR Supervisor + I + F
• PC 0x00000000
– Khi vi xử lý thực hiện một lệnh không định nghĩa thì
• LR_undef Undefined Instruction Address + #4
• PC 0x00000004, CPSR Undefined + I
• Return with : MOVS pc, lr
– Bỏ qua quá trình lấy lệnh từ bộ nhớ thì:
• LR_abt Aborted Instruction Address + #4, SPSR_abt CPSR
Trang 44VI XỬ LÝ ARM7TDMI
• Bỏ qua dữ liệu - Data Abort
– Khi bỏ qua việc truy cập dữ liệu từ bộ nhớ:
Trang 45VI XỬ LÝ ARM7TDMI
• Yêu cầu ngắt - Interrupt Request
– Bằng tín hiệu cung cấp tới chân IRQ
• Yêu cầu ngắt nhanh - Fast Interrupt Request
– Bằng tín hiệu cấp tới chân FIQ
Trang 46VI XỬ LÝ ARM7TDMI
ARM Instruction Set
TẬP LÊNH ARM
Trang 47ARM Instruction Set
Trang 48• Tất cả các lệnh ARM đều có thể hoạt động theo điều kiện, nghĩa là chúng có thể thực hiện hoặc không tuỳ thuộc vào giá trị của các cờ N, C, và V trong CPSR
• Mỗi lệnh chứa 4-bit điều kiện 31 tới 28
Các bit điều kiện - Condition Field (1/2)
Trang 49• Có 15 mã điều kiện, mỗi mã được ký hiệu bằng hai ký tự cuối trong lệnh gợi nhớ.
– Một lệnh rẽ nhánh (B trong assembly) trở thành BEQ cho "Branch if Equal", có nghĩa là Branch chỉ xảy ra nếu Z được lập.
Condition Field (2/2)
Trang 50• Tất cả các bộ vi xử lý ARM đều có một lệnh rẽ nhánh branch cho phép chuyển điều khiển chương trình tới hoặc lui trong khoảng 32Mbytes.
– Khi Program Counter (PC) là một trong các thanh ghi đa năng (register 15), một quá trình rẽ nhánh hoặc nhảy có thể tạo ra bằng cách ghi giá trị tới thanh ghi này.
Link sẽ cất địa chỉ của lệnh tiếp theo (địa chỉ quay về) vào thanh ghi 14 (link register hoặc LR).
nào trong vùng 4Gbyte Một giá trị 32-bit có thể nạp trực tiếp từ bộ nhớ vào thanh ghi PC, để rẽ nhánh chương trình.
điều khiển tới một địa chỉ cung cấp trong lệnh
Branch Instructions (1/2)
Trang 51• Các lệnh rẽ nhánh
B, BL Rẽ nhanh, và rẽ nhánh với link
BX Rẽ nhánh và chuyển tập lệnh
• Ví dụ:
MOV PC, #0 ; R15 = 0, chuyển tới địa chỉ 0
MOV PC, LR ; R15=R14, địa chỉ quay về sau lệnh BL
Branch Instructions (2/2)
Trang 52• ARM có 16 lệnh xử lý dữ liệu Hầu hết các lệnh
xử lý dữ liệu có hai toán hạng nguồn (Move và Move Not chỉ có 1) và chứa kết quả trong một thanh ghi (Ngoại trừ các lệnh Compare và Test chỉ thay đổi mã điều kiện - condition codes)
Data Processing (1/2)
– Một trong hai toán hạng nguồn luôn là
một thanh ghi, toán hạng kia gọi là
toán hạng dịch, và nó có thể là một số
tức thời hoặc một thanh ghi Nếu toán
hạng thứ 2 là thanh ghi, một giá trị có
thể chuyển tới nó trước khi sử dụng
Trang 53• Các lệnh xử lý dữ liệu
Data Processing (2/2)
Assembler Mnemonic OP Code Action
Trang 54Multiply Instructions (1/2)
• ARM có hai loại lệnh nhân
• Tất cả các lệnh nhân có hai toán hạng thanh ghi cung cấp giá trị để nhân
• MUL, nhân giá trị hai thanh ghi với nhau, thu gọn kết quả trong 32 bits, và chứa kết quả vào thanh ghi thứ 3.
• MLA, nhân giá trị hai thanh ghi với nhau rồi cộng với giá trị của thanh ghi thứ 3 thu gọn kết quả thành 32 bits, và chứa kết quả vào một thanh ghi thứ tư (multiply và accumulate)
MUL R4, R2, R1 ; Set R4 to value of R2 multiplied by R1
Trang 55Multiply Instructions (2/2)
• Có 4 lệnh nhân tạo ra kết quả 64-bit (long multiply)
64-bit vào thanh ghi thứ 3 và thứ 4 Một lệnh nhân có dấu
(SMULL) và một lệnh nhân không dấu (UMULL).
giá trị 64-bit của thanh ghi thứ 3 và thứ 4 chứa kết quả 64-bit trở lại thanh ghi thứ 3 và thứ 4 Cũng có một lệnh có dấu (SMLAL) và một lệnh không dấu (UMLAL) Các lệnh này thực hiện nhân dài và tổng kết quả lại.
SMULL R4, R8, R2, R3 ; R4 = bits 0 to 31 of R2xR3
; R8 = bits 32 to 63 of R2 x R3