-Mô hình lập trình: NGÔ QUANG KHÁ -Tập lệnh và cấu trúc dữ liệu: NGUYỄN KHẮC SĨ -Quản lý bộ nhớ:CAO THỊNH TỌA -Ví dụ minh họa :NGUYỄN THỊ HỒNG NHUNG Ngoài nhiệm vụ được phân công cụ th
Trang 1TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA ĐIỆN TỬ
Bộ môn: TIN HỌC CÔNG NGHIỆP
BÁO CÁO BÀI TẬP LỚN
ĐỀ TÀI: TÌM HIỂU VỀ KIẾN TRÚC CỦA ARM
Trang 2TRƯỜNG ĐHKTCN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
BÀI TẬP LỚN
Môn học: Kiến trúc máy tính
Bộ môn: Tin học công nghiệp
Sinh viên thực hiện : Ngô quang khá Nguyễn khắc sĩ
Cao thịnh tọa Nguyễn thị hồng nhung
Lớp HP:45Z
Giáo viên hướng dẫn: TH.S PHÙNG THỊ THU HIỀN
P.Trưởng bộ môn Giáo viên hướng dẫn
Phân công nhiệm vụ mỗi thành viên:
Trang 3
-Mô hình lập trình: NGÔ QUANG KHÁ
-Tập lệnh và cấu trúc dữ liệu: NGUYỄN KHẮC SĨ
-Quản lý bộ nhớ:CAO THỊNH TỌA
-Ví dụ minh họa :NGUYỄN THỊ HỒNG NHUNG
Ngoài nhiệm vụ được phân công cụ thể của từng người thì các thành viên trong nhóm đãnhiệt tình giúp đỡ ,đưa ra sự góp ý để mỗi thành viên có thể hoàn thành được phần côngviệc của mình cũng như có hoàn chỉnh bài báo cáo chung của nhóm
MỤC LỤC
Trang 4
LỜI NÓI ĐẦU………5
I) MÔ HÌNH LẬP TRÌNH……….… 7
1.1 Môhình thiết kếARM……… 7
1.2 Các thanh ghi của ARM……… …… 8
II) TẬP LỆNH VÀ CẤU TRÚC DỮ LIỆU……… 10
2.1 Kiểu dữ liệu………10
2.2 Chế độ hoạt động……… 10
2.3 Thực thi các điều kiện… ……… 11
2.4 Ngắt phần mềm<SWI>:……… 12
2.5 Lệnh xử lý dữ liệu: ……….14
2.6 lệnh cộng số học và logic……… 14
2.7 Lệnh nhân: ……… …… 15
2.8 Lệnh chuyển dữ liệu: byte không dấu và 1 word: ……….………17
2.9 Lệnh chuyển dữ liệu……… 17
2.10 Lệnh chuyển dữ liệu nhiều thanh ghi:……… 19
2.11.Lệnh hoán đổi giá trị của bộ nhớ và thanh ghi: ………19
2.12 Lệnh chuyển giá trị từ thanh ghi trạng thái vào thanh ghi đa dụng: …….……19
2.13 Lệnh chuyển giá trị từ thanh ghi đa dụng vào thanh ghi trạng thái: ……… 20
2.14 Lệnh so sánh: … ……… 21
2.15 Lệnh dịch……… ……….…22
IV )QUẢN LÝ BỘ NHỚ……… …24
3.1)Vùng RAM……… …25
3.2Vùng ROM……… ….26
3.3EPROM/Flash……… ….27
KẾT LUẬN ……….…28
TÀI LIỆU THAM KHẢO……… 29
Trang 5
LỜI NÓI ĐẦU
Kiến trúc ARM (tên gốc trước đây là Advanced RISC Machines, hiện nay làAcorn Machine) là loại kiến trúc vi xử lý 32-bit kiểu RISC (Reduced InstructionsSet Computer Máy tính với tập lệnh đơn giản hóa), mô hình bộ nhớ theo kiến trúcHarvard (tuyến dữ liệu và tuyến lệnh tách riêng), mô hình thanh ghi theo kiến trúcRegistry – Registry, được phát triển bởi tập đoàn ARM Technology, được dùngrộng rãi trong các thiết kế hệ thống nhúng Do có đặc điểm tiết kiệm năng lượng,nên các CPU ARM chiếm ưu thế trong thị trường điện tử di động, nơi mà các sảnphẩm tiêu tốn ít năng lượng được xem như là mục tiêu thiết kế hàng đầu
Ngày nay, kiến trúc ARM là kiến trúc CPU 32-bit được dùng rộng rãi nhất trên thếgiới, ước tính trên 75% CPU 32-bit nhúng là thuộc họ ARM ARM được tìm thấykhắp nơi trong các sản phẩm điện tử, từ thiết bị cầm tay (PDA, điện thoại di động,máy trò chơi cầm tay, …) cho đến các thiết bị ngoại vi của máy tính (ổ đĩa cứng,
bộ định tuyến …) Một nhánh nổi tiếng của họ ARM là các vi xử lý XScale
* ARM7: GBA, iPod
* ARM9: NDS, PSP, Sony Ericssion, BenQ
* ARM11: Apple iPhone, Nokia N93, N800
Chúng em xin chân thành cảm ơn cô giáo Thạc sĩ PHÙNG THỊ THU HIỀN đãnhiệt tình giúp đỡ em trong quá trình nghiên cứu và hoàn thành đề tài này
Trang 6
NHẬN XÉT (của giáo viên)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 7
I MÔ HÌNH LẬP TRÌNH
1.1 Mô hình thiết kế ARM
- Lõi xử lý
Dạng đơn giản của lõi xử lý gồm những phần cơ bản sau:
● Program Counter (PC): Bộ đếm chương trình: giữ địa chỉ của lệnh hiện tại
● Thanh ghi tich lũy(ACC):giữ giá trị dữ liệu khi đang làm việc
● Đơn vị sử lý số học(ALU):thực thi các lệnh nhị phân công trừ,gia tăng…
● Thanh ghi lệnh (IR): giữ tập lệnh hiện tại đang thực thi
Lõi xử lý MU0 được phát triển đầu tiên và là lõi xử lý đơn giản, có tập lệnh dài
16 bit, với 12 bit địa chỉ và 4 bit mã hóa
Cấu trúc tập lệnh lõi MU0 có dạng:
Hình1: Cấu trúc chuẩn cho tập lệnh của MU0.
- Mô hình thiết kế đường truyền dữ liệu đơn giản của lõi xử lý MU0 được mô tảtrong hình 2 Việc thiết kế ở cấp chuyển đổi mức thanh ghi (RTL): Bộ đếmchương trình (PC) chỉ đến tập lệnh cần thực thi, nạp vào thanh ghi lệnh (IR), giátrị chứa trong IR chỉ đến vùng địa chỉ ô nhớ, nhận giá trị, kết hợp với giá trị đangchứa trong thanh ghi tích lũy (ACC) qua đơn vị xử lý số học (ALU) để tạo giá trịmới, chứa vào ACC Mỗi một lệnh như vậy, tùy vào số lần truy cập ô nhớ mà tốn
số chu kỳ xung nhịp tương đương Sau mỗi lệnh thực thi, PC sẽ được tăng thêm
Trang 8
Hình 2: Đường truyền dữ liệu của lõi xử lý MU0.
1.2 Các thanh ghi của ARM
Để phục vụ mục đích của người dùng: r0 ÷ r14 là 15 thanh ghi đa dụng, r15 làthanh ghi Program Counter (PC), thanh ghi trạng thái chương trình hiện tại(CPSR-Current Program Status Register) Các thanh ghi khác được giữ lại cho hệ thống(như thanh ghi chứa các ngắt)
Các thanh ghi của ARM được mô tả trong hình 3
Hình 3: Mô hình các thanh ghi của ARM.
Trang 9
- 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
- Thanh ghi SPSR (Save Program Status Register) dùng để lưu giữ trạng thái củathanh ghi CPSR khi thay đổi chế độ
II TẬP LỆNH VÀ CẤU TRÚC DỮ LIỆU ARM:
2.1 Kiểu dữ liệu:
ARM hỗ trợ 6 loại dữ liệu:
o 8 bit có dấu và không dấu
o 16 bit có dấu và không dấu
o 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ệcvớ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’
Trang 10
2.3 Thực thi các điều kiện:
Điều kiện cần thực thi nằm trên 4 bit cao nhất của chỉ lệnh
Hình 4 : vi trí các bit điều kiện trong chỉ lệnh 32 bit
Hình vị trí các bit điều kiện trong hcir lệnh 32 bit
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
Trang 11
trạng thái chương trình hiện tại <CPSR>
+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ắtnhanh
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
Trang 12
-lệnh : SWI {<cond>} SWI_number
; SWI has routine required in bits 8-23 and data
; (if any) in bits 0-7
; Assumes R13_svc points to a suitable stack
; Get routine offset
ADR R2, Entry Table
; Get start address of entry
Trang 13mộ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:
Trang 14
Bảng 3:: 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
2.6 lệnh cộng số học và logic
2.6.1 cộng với cờ nhớ (ADC)
ADC<suffix> <dest>, <op 1>, <op 2>
dest = op_1 + op_2 + carry
ADC sẽ cộng hai toán hạng ,đặt kết quả vào thanh ghi đích.nó sử dụng một bit nhớ ,cóthể cộng số lượng lớn hơn 32 bit
128 bit numbers
128 bit result: Registers 0, 1, 2, and 3
128 bit first: Registers 4, 5, 6, and 7
128 bit second: Registers 8, 9, 10, and 11
Trang 15
ADDS R0, R4, R8 ; Add low words
ADCS R1, R5, R9 ; Add next word, with carry
ADCS R2, R6, R10 ; Add third word, with carry
ADCS R3, R7, R11 ; Add high word, with carry
Nếu thực hiện phép cộng như thế này,nên đặt S vào trạng thái của cờ nhớ được cập nhật
2.6.2 phép cộng (ADD)
ADD<suffix> <dest>, <op 1>, <op 2>
dest = op_1 + op_2
cộng hai toán hạng ,đặt kết quả vào thanh ghi đích toán hạng 1 là 1 thanh ghi ,toán hạng
2 cớ thể là một thanh ghi ,một thanh ghi dịch hoặc một giá trị tức thời
AND<suffix> <dest>, <op 1>, <op 2>
dest = op_1 AND op_2
AND sẽ thực hiện logic giữa hai toán hạng ,đặt kết quả vào thanh ghi đích ,điều nàythuận lợi cho việc tạo ra các bit bạn muốn làm việc toán hạng 1 là một thanh ghi, mộtthanh ghi dịch hoặc một giá trị tức thời:
AND<suffix> <dest>, <op 1>, <op 2>
dest = op_1 AND op_2
AND sẽ thực hiện logic giữa hai toán hạng ,đặt kết quả vào thanh ghi đích ,điều nàythuận lợi cho việc tạo ra các bit bạn muốn làm việc toán hạng 1 là một thanh ghi, mộtthanh ghi dịch hoặc một giá trị tức thời:
AND R0, R0, #3 ; R0 = Keep bits zero and one of R0, discard the rest
An AND table (result = both):
Op_1 Op_2 Result
Trang 162.7 Lệnh nhân:
Có hai lệnh khác nhau từ các lệnh số học bình thường ,ở đó có những hạn chế về toánhạng như là :
1 Tất cả các toán hạng và đích phải được đưa vào thanh ghi đơn giản
2 Ta không thể sử dụng ngay các giá trị thanh ghi dịch cho hai toán hạng
3 Đích và toán hạng phải khác thanh ghi
4 Cuối cùng ,ta không thể xác định rõ rằng R15 là đích
2.7 1 Mã hóa nhị phân:
Hình 7 : mã hóa nhị phân cho chỉ lệnh nhân
2.7.2 Phân tích:
quy tắc:
Giả lệnh hợp ngữ trong thanh ghi từ 21-23 được cho bởi bảng sau:
Bảng 4: giả lệnh hợp ngữ cho phép nhân
MLA : Multiplication with Accumulate
MLA<suffix> <dest>, <op 1>, <op 2>, <op 3>
dest = (op_1 * op_2) + op_3
MLA thực hiện như MUL, trừ khi giá trị của toán hạng 3 được công vào kết quả Điều nàyhữu ích cho chạy kết quả tổng
Trang 17
MUL : Multiplication
MUL<suffix> <dest>, <op 1>, <op 2>
dest = op_1 * op_2
MUL cung cấp 32 bit nhân số nguyên Nếu toán hạng có dấu.nó cũng được giả địnhrằng kết quả cũng chứa dấu
Trang 182.8 Lệnh chuyển dữ liệu: byte không dấu và 1 word:
Trang 19
2.9 Lệnh chuyển dữ liệu: byte có dấu và nửa word
2.9.1 Mã hóa nhị phân:
Hình 9:mã hóa nhị phân chuyển dữ liệu dạng byte có dấu và nửa word
2.9.2 Chú thích:
Bảng 5: Mã hóa loại dữ liệu
Bit S và H cho biết loại dữ liệu truyền được quy ước như bảng trên
2.9.3 Lệnh hợp ngữ:
Định dạng chỉ số trước: LDR|STR{<cond>}H|SHI SB Rd, [Rn, <oIIIIset>] { ! } Định dạng chỉ số sau: LDRlSTR{<cond>}H|SHlSB Rd, [Rn], <oIIIIset>
Trang 20
2.10 Lệnh chuyển dữ liệu nhiều thanh ghi:
P=1, địa chỉ nền tăng trước và ngược lại
2.10.3 Lệnh hợp ngữ:
LDMISTM{<cond>}<add mode> Rn{!}, <registers>
2.11 Lệnh hoán đổi giá trị của bộ nhớ và thanh ghi:
2.11.1 Mã hóa nhị phân:
Hình 11mã hóa nhị phân chỉ lệnh đổi giá trị của bộ nhớ và thanh ghi
2.11.2 Chú 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
2.11.3 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
2.12 Lệnh chuyển giá trị từ thanh ghi trạng thái vào thanh ghi đa dụng:
Trang 21
+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
2.13 Lệnh chuyển giá trị từ thanh ghi đa dụng vào thanh ghi trạng thái:
2.13.1 Mã hóa nhị phân:
Hình 13 :mã hóa nhị phân của lệnh chuyển giá trị thanh ghi đa dụng vào thanh ghi trạngthái
Trang 22
2.13.2 Lệnh hợp ngữ:
MSR{<cond>} CPSR_II, #<32-bit immediate>
MSR{<cond>}, SPSR_II, #<32-bit immediate>
MSR{<cond>} CPSR_<IIield>, Rm
MSR{<cond>} SPSR_<IIield>, Rm
- MSR –chuyển nội dung của CPSR hoặc SPSR vào trong một thanh ghi
- MSR- chuyển nội dung của thanh ghi tới CPSR tới SPSR
+Người lập trình không thay đổi được giá trị CPSR[23:0]
+Tránh truy cập SPSR khi không thật cần thiết
2.14 Lệnh so sánh
2.14.1 CMN : So sánh với số âm
CMn giống như là CMP ,trừ khi nó cho phép so sánh lại với giá trị âm nhỏ (logic không phải toán hạng bậc hai) điều đó sẽ khó đối với thành phần khác ,như là 1 tới cuối danh sách
CMN<suffix> <op 1>, <op 2>
status = op_1 - (- op_2)
CMN R0, #1 ; Compare R0 with -1
Vì vậy để so sánh với -1 chúng ta sẽ sử dụng :
CMN R0, #1 ; Compare R0 with -1
2.14.2 CMP: so sánh
CMP<suffix> <op 1>, <op 2>
status = op_1 - op_2
cmp cho phép bạn so sánh nội dung của một thanh ghi với một hanh ghi khác hoặc một giá trị tức thời ,cập nhật trạng thái cờ để cho phép điều kiện thực hiện
nó tác động một chương trình con ,nhưng không lưu trữ kết quả ở bất kỳ nơi nào ,thay vì ,cờ được cập nhật riêng
-cờ liên quan tới việc so sánh toán hạng 1 và toán hạng 2
Trang 23
2.14.3 TEQ : kiểm tra tương đương
TEQ<suffix> <op 1>, <op 2>
Status = op_1 EOR op_2
TEQ thì tương tự với TST điều khác biệt rằng tính toán số học là EOR hơn là 1 ANDCách cung cấp này cho thấy nếu các bits ở cả hai toán hạng đều giống nhau
Hoặc không ảnh hưởng tới cờ nhớ (không giống CMP)
2.14.4 TST : test bits
TST<suffix> <op 1>, <op 2>
Status = op_1 AND op_2
TsT giống như CMP không tạo ra một kết quả để đặt vào thanh ghi đích Thay vì
nó thực hiện một hoạt đọng trên hai toán hạng ,kết quả được phản ánh trong trạng thái của cờ TST được sử dụng để thấy nếu đặt một bit đặc biệt 1 toán hạng là dữ liệu word để kiểm tra và hai toán hạng là một bit mặt nạ sau khi kiểm tra ,cờ 0 sẽ được đặt ở phép toán ,or cái khác Giống như CMP ,nó không quan trọng nếu bạn quan tâm đến hậu tố S hay không
TST R0, #%1 ; Test if bit zero is set in R0
2.15 Lệnh dịch
Bộ xử lý ARM kết hợp các bộ dịch có thể sử dụng với các lệnh xử lý dữ liệu (ADC,ADD, AND, BIC, CMN, CMP, EOR, MOV, MVN, ORR, RSB, SBC, SUB, TEQ,TST).ta cũng có thể sử dụng bộ dịch để tác động đến giá trị đầu trong sựu hoạt độngcủa LDR/STR
Có 6 quy tắc cho cá bộ dịch khác nhau:
Trang 25III QUẢN LÝ BỘ NHỚ
- Trong vi điều khiển ARM, bộ nhớ nội bộ có thể có các dạng bộ nhớ như: SSRAM,
SRAM, DRAM, EPROM/Flash
Trang 26Trong cấu hình thông thường (đã được định địa chỉ), ký hiệu vùng RAM là từ địachỉ 0x0 đến 0x04000000.
Trong cấu hình Reset, ROM được ánh xạ vào không gian được ký hiệu với khảnăng truy cập RAM ở địa chỉ cao hơn
Khi truy cập vào không gian bộ nhớ 0x10000000, bộ xử lý sẽ hủy bỏ các trườnghợp ngoại lệ (sai địa chỉ)
Trang 27- Khối 16MB (khởi điểm ở 0x0) là vùng ROM, có các điểm ký hiệu tới cấu hình cơ
sở của ROM, hoặc có các vùng xếp chồng lên RAM (trong cấu hình thông
- Trong liên kết định địa chỉ, theo mặc định khi ở cấu hình Reset, EPROM và Flash
ở dưới đáy của địa chỉ bản đồ nhớ Nếu thanh ghi định địa chỉ được ghi vào, tín hiệu định địa chỉ sẽ là mức cao và bộ giải mã chuyển sang bản đồ bộ nhớ thông thường, khi đó RAM sẽ ở dưới cùng
- Nếu khi hoạt động mà hệ thống không có EPROM hay Flash, hoặc nếu muốn khởi
động từ RAM, phải gỡ liên kết định địa chỉ Tín hiệu định địa chỉ sẽ luôn ở mức cao, và việc khởi động với SSRAM sẽ ở dưới đáy của địa chỉ bản đồ nhớ
Các bộ nhớ trong vùng RAM có chức năng:
❖ SSRAM
Đồng bộ SRAM (SSRAM) được dùng để cung cấp bộ nhớ chu kỳ đơn Thiết bịSSRAM tổ chức dưới dạng 32KB x 32 bit Vùng này được sử dụng cho các trìnhgiới hạn thời gian, như là các bộ điều khiển ngắt SSRAM thường ở địa chỉ 0, cấuhình của bộ nhớ này là không bắt buộc
❖ SRAM
SRAM được dùng để thể hiện các giản đồ bộ nhớ khác nhau SRAM cho phépđiều khiển bốn mức vật lý 128KB x 8 bit để chia thành hai dãy logic của mỗi mộtmức 256KB Mỗi một dãy logic này có thể được định cấu hình 8, 16, hoặc 32 bit
bộ nhớ mở rộng SRAM mô phỏng bộ nhớ hệ thống này bằng cách chèn chính xác