Bài giảng Kiến trúc máy tính và hợp ngữ - Chương 04: Tổ chức hoạt động bộ vi xử lý - Lê Quốc Hòa
Là loại ngôn ngữ nhân tạo (Ví dụ: C/C++) được cấu thành bởi 2
yếu tố chính:
– Từ vựng: là các keyword (struct, enum, if, int…)
– Ngữ pháp: syntax (if(…){} else{}, do{} while()…)
• Ngôn ngữ lập trình giúp cho người sử dụng nó (gọi là lập trình
viên) có thể diễn đạt và mô tả các hướng dẫn cho máy tính hoạt
động theo ý muốn của mình.
• Độ phức tạp (trừu tượng) của các hướng dẫn này quyết định thứ
bậc của ngôn ngữ
– Độ phức tạp càng cao thì bậc càng thấp
– Ví dụ: C Sharp (C#) là ngôn ngữ bậc cao hơn C
yếu tố chính:
– Từ vựng: là các keyword (struct, enum, if, int…)
– Ngữ pháp: syntax (if(…){} else{}, do{} while()…)
• Ngôn ngữ lập trình giúp cho người sử dụng nó (gọi là lập trình
viên) có thể diễn đạt và mô tả các hướng dẫn cho máy tính hoạt
động theo ý muốn của mình.
• Độ phức tạp (trừu tượng) của các hướng dẫn này quyết định thứ
bậc của ngôn ngữ
– Độ phức tạp càng cao thì bậc càng thấp
– Ví dụ: C Sharp (C#) là ngôn ngữ bậc cao hơn C
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính và hợp ngữ - Chương 04: Tổ chức hoạt động bộ vi xử lý - Lê Quốc Hòa", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_kien_truc_may_tinh_va_hop_ngu_chuong_04_to_chuc_ho.pdf
Nội dung text: Bài giảng Kiến trúc máy tính và hợp ngữ - Chương 04: Tổ chức hoạt động bộ vi xử lý - Lê Quốc Hòa
- • Là loại ngôn ngữ nhân tạo (Ví dụ: C/C++) được cấu thành bởi 2 yếu tố chính: – Từ vựng: là các keyword (struct, enum, if, int ) – Ngữ pháp: syntax (if( ){} else{}, do{} while() ) • Ngôn ngữ lập trình giúp cho người sử dụng nó (gọi là lập trình viên) có thể diễn đạt và mô tả các hướng dẫn cho máy tính hoạt động theo ý muốn của mình. • Độ phức tạp (trừu tượng) của các hướng dẫn này quyết định thứ bậc của ngôn ngữ – Độ phức tạp càng cao thì bậc càng thấp – Ví dụ: C Sharp (C#) là ngôn ngữ bậc cao hơn C 2
- • Ngôn ngữ máy cho phép người lập trình đưa ra các hướng dẫn đơn giản mà bộ vi xử lý (CPU) có thể thực hiện được ngay • Các hướng dẫn này được gọi là chỉ thị / lệnh (instruction) hoặc mã máy (machine code) • Mỗi bộ vi xử lý (CPU) có 1 ngôn ngữ riêng, gọi là bộ lệnh (instruction set) • Trong cùng 1 dòng vi xử lý (processor family) bộ lệnh gần giống nhau Instruction set 4
- • Tập lệnh dành cho những bộ vi xử lý có kiến trúc tương tự nhau • Một số ISA thông dụng: – Dòng vi xử lý 80x86 (gọi tắt x86) của Intel • IA-16: Dòng xử lý 16 bit (Intel 8086, 80186, 80286) • IA-32: Dòng xử lý 32 bit (Intel 80368 – i386, 80486 – i486, Pentium II, Pentium III ) • IA-64: Dòng xử lý 64 bit (Intel x86-64 như Pentium D ) – MIPS: Dùng rất nhiều trong hệ thống nhúng (embedded system) – PowerPC của IBM 6
- • Không phải ai cũng muốn / có thể lập trình ngôn ngữ máy vì quá khó hiểu so với ngôn ngữ bình thường của con người Nhu cầu cần có bộ phận phiên dịch (interpreter) High-level Machine language Interpreter Laguage (C/C++) OK OK 8
- • Các mã máy chỉ là các con số (0 / 1) • Trong ngôn ngữ máy không có khái niệm biến thay vào đó là địa chỉ ô nhớ, thanh ghi (lưu trữ mã lệnh, dữ liệu) • Để dễ dàng lập trình hơn dùng ký hiệu mã giả thay cho các số biểu diễn địa chỉ ô nhớ, các tên (label, tên biến, tên chương trình) • Hợp ngữ rất gần với ngôn ngữ máy nhưng lại đủ để con người hiểu và sử dụng tốt hơn ngôn ngữ máy – Ví dụ: Ghi giá trị 5 vào thanh ghi $4 Ngôn ngữ máy: 00110100 0000100 00000000 00000101 Hợp ngữ : ori $4, $0, 5 10
- .data # data segment str: .asciiz ”hello MIPS” .text # text segment .globl main main: addi $v0, $0, 4 # 4 = print str syscall la $a0, str # load address of string syscall # execute the system call 12
- • Ta có thể hình dung như sau: What is it? What is it? High-level Assembly Machine language Compiler language Assembler Laguage temp = v[k]; lw $t0, 0($2) 0000 1001 1100 0110 v[k] = v[k+1]; lw $t1, 4($2) 1111 0101 v[k+1] = temp; sw $t1, 0($2) sw $t0, 4($2) 14
- • Trình biên dịch hợp ngữ ngôn ngữ máy • Một bộ vi xử lý (đi kèm 1 bộ lệnh xác định) có thể có nhiều Assembler của nhiều nhà cung cấp khác nhau chạy trên các OS khác nhau – Ví dụ: Cùng là kiến trúc x86, nhưng có thể dùng A86, GAS, TASM, MASM, NASM • Assembly program phụ thuộc vào Assembler mà nó sử dụng (do các mở rộng, đặc điểm khác nhau giữa các Assembler) 16
- • Bản thân Compiler cũng là chương trình, vậy nó được biên dịch bằng gì? Assembler • Sau khi đã biên dịch tập tin mã nguồn ngôn ngữ cấp cao thành tập tin mã máy (machine language), làm sao để chạy những tập tin này trên máy tính? Linker & Loader 18
- • Khi double click vào những tập tin thực thi, cần chương trình tính toán và tải vào memory để CPU xử lý Loader 20
- • MAR PC • MBR Memory • IR MBR • PC PC + 1 • Thanh ghi PC (Program Counter) – Lưu địa chỉ (address) của lệnh sắp được nạp • Thanh ghi MAR (Memory Address Register) • Control Unit di chuyển mã lệnh, có địa chỉ trong PC, vào thanh ghi IR – Lưu địa chỉ (address) sẽ được output ra Address bus • Thanh ghi MBR (Memory Buffer Register) • Mặc định, giá trị thanh ghi PC sẽ tăng – Lưu giá trị (value) sẽ được input / output từ Data bus 1 lượng = chiều dài của lệnh vừa được • Thanh ghi IR (Instruction Register) nạp – Lưu mã lệnh sẽ được xử lý tiếp 26
- • Tính địa chỉ lệnh • Nạp lệnh • Giải mã lệnh • Tính địa chỉ của toán hạng • Nạp toán hạng • Thực hiện lệnh • Tính địa chỉ của toán hạng chứa kết quả • Ghi kết quả • Các bước này được lặp đi lặp lại cho tất cả các lệnh tiếp theo • Quy trình này gọi là Instruction cycle – vòng lặp xử lý lệnh 28
- • Sách Petterson & Hennessy: Đọc chương 2 (đọc kỹ 2.12 và 2.13) • Tài liệu tham khảo: Đọc “08_HP_AppA.pdf” 30