PowerPoint Presentation VŨ NGỌC THANH SANG TRỊNH TẤN ĐẠT KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC SÀI GÒN Email trinhtandatsgu edu vn Website https sites google comsitettdat88 BỘ VI XỬ LÝ mailto trinhtandatsgu edu vn https sites google comsitettdat88 Nội Dung Khoa Công Nghệ Thông Tin – Đại học Sài Gòn Kiến Trúc Máy Tính • Tổ chức bộ vi xử lý (CPU) • Đơn vị xử lý • Thanh ghi • Tập lệnh • Kỹ thuật ống dẫn Pipeline • Siêu vô hướng (superscalar) TỔ CHỨC BỘ VI XỬ LÝ TRUNG TÂM (CPU) – CẤU TRÚC CƠ BẢ.
Trang 3TỔ CHỨC BỘ VI XỬ LÝ TRUNG TÂM (CPU) – CẤU TRÚC CƠ BẢN
❑Cấu trúc cơ bản bao gồm:
• Đơn vị điều khiển (Control Unit – CU)
• Đơn vị số học và logic (Arithmetic and Logic Unit –
ALU)
• Tập thanh ghi (Register File – RF), bộ nhớ (memory)
và các thanh buses để kết nối các thành phần.
Trang 4TỔ CHỨC BỘ VI XỬ LÝ TRUNG TÂM (CPU) – CẤU TRÚC CƠ BẢN
• Đơn vị điều khiển (Control Unit – CU): điều khiển hoạt động của máy tính theo chương trình đã thiết
kế sẵn.
• Đơn vị số học và logic (Arithmetic and Logic Unit – ALU): Thực hiện các phép toàn số học và phép toán
logic.
• Tập thanh ghi (Register File – RF): Lưu trữ các thông tin tạm thời phục vụ cho hoạt động của CPU.
• Đơn vị nối ghép bus (Bus Interface Unit – BIU): kết nối và trao đổi thông tin giữa bus bên trong
(Internal Bus) và bus bên ngoài (External Bus)
Trang 5ĐƠN VỊ ĐIỀU KHIỂN – CONTROL UNIT
• Chức năng của đơn vị điều khiển:
o Điều phối chuỗi di chuyển dữ liệu vào, ra và giữa nhiều đơn
vị của bộ xử lý.
o Giải mã các lệnh để xác định các phép tính mà lệnh yêu cầu.
o Điều khiển dòng dữ liệu bên trong bộ xử lý.
o Nhận chuỗi tín hiệu điều khiển đã chuyển đổi từ tập lệnh của các thanh ghi.
o Điều khiển các đơn vị thực thi (ALU, thanh ghi, …) chứa trong CPU.
o Đảm nhiệm đa tác vụ: Nạp (fetching), giải mã (Decoding),
thực thi lệnh, lưu trữ kết quả.
Các cờ cho biết trạng thái của CPU
Trang 6ĐƠN VỊ ĐIỀU KHIỂN - CONTROL UNIT
• Gồm 2 loại:
o Đơn vị điều khiển vi chương trình (Microprogrammed Control Unit)
o Đơn vị điều khiển phần cứng (Hardwired Control Unit)
Trang 7ĐƠN VỊ ĐIỀU KHIỂN VI CHƯƠNG TRÌNH – MICROPROGRAMMED CONTROL UNIT
• Bộ nhớ vi chương trình (ROM) lưu trữ các vi
Trang 8ĐƠN VỊ ĐIỀU KHIỂN PHẦN CỨNG – HARDWIRED CONTROL UNIT
Trang 9TẬP THANH GHI
• Là thành phần lưu dữ liệu bên trong CPU
• Mỗi thanh ghi có độ dài nhất định (32 bit, 16 bit hoặc 8 bit) tùy theo kiến trúc và được
nhận biết bằng một tên riêng
• Tùy vào độ dài và chức năng mà thanh ghi có công dụng chứa dữ liệu hoặc kết quả củaphép toán, hoặc là các địa chỉ dùng để định vị bộ nhớ khi cần thiết
• Nội dung của thanh ghi được truy xuất thông qua tên riêng của nó, do đó tên thanh ghi là
từ khóa quan trọng cần phải lưu ý trong lập trình
Trang 10PHÂN LOẠI CÁC THANH GHI
• Thanh ghi địa chỉ: quản lý địa chỉ của bộ nhớ hay cổng IO
• Thanh ghi dữ liệu: chứa tạm thời các dữ liệu
• Thanh ghi đa năng: có thể chứa địa chỉ hoặc dữ liệu
• Thanh ghi điều khiển/trạng thái: chứa các thông tin điều khiển và trạng thái của CPU
• Thanh ghi lệnh: chứa lệnh đang được thực hiện
Trang 11MỘT SỐ THANH GHI ĐIỂN HÌNH
• Các thanh ghi địa chỉ (Address Register)
o Bộ đếm chương trình PC (Program Counter)
o Con trỏ dữ liệu DP (Data Pointer)
o Con trỏ ngăn xếp SP (Stack Pointer)
o Thanh ghi cơ sở và thanh ghi chỉ số (Base Register & Index Register)
• Các thanh ghi dữ liệu (Data Register)
• Thanh ghi trạng thái (Status Register)
Trang 12THANH GHI CON TRỎ DỮ LIỆU – DATA POINTER
• Chứa địa chỉ của ô nhớ dữ liệu mà CPU muốn truy cập
• Thường có nhiều thanh ghi con trỏ dữ liệu cho phép chương trình có thể truy cập nhiều vùng nhớ đồng thời
Trang 13NGĂN XẾP - STACK
• Ngăn xếp là vùng nhớ có cấu trúc LIFO (Last In - First Out) hoặc FILO (First In - Last Out)
• Ngăn xếp thường dùng để phục vụ cho chương trình con
• Đáy ngăn xếp là một ô nhớ xác định
• Đỉnh ngăn xếp là thông tin nằm ở vị trí trên cùng trong ngăn xếp
• Đỉnh ngăn xếp có thể bị thay đổi
Trang 14STACK POINTER
• Chứa địa chỉ của ô nhớ đỉnh ngăn xếp
• Khi cất một thông tin vào ngăn xếp:
o Thao tác PUSH
o Nội dung của SP tự động tăng
o Thông tin được cất vào ô nhớ đang trỏ bởi SP
• Khi lấy một thông tin ra khỏi ngăn xếp:
o Thao tác POP
o Thông tin được đọc từ ô nhớ đang trỏ bởi SP
o Nội dung của SP tự động giảm
• Khi ngăn xếp rỗng, SP trỏ vào đáy
Trang 15THANH GHI CƠ SỞ VÀ THANH GHI CHỈ SỐ
• Thanh ghi cơ sở: chứa địa chỉ của ngăn nhớ cơ sở (địa chỉ cơ sở)
• Thanh ghi chỉ số: chứa độ lệch địa chỉ giữa ngăn nhớ mà CPU cần truy cập so với ngăn nhớ cơ sở (chỉ số)
• Địa chỉ của ngăn nhớ cần truy cập = địa chỉ cơ sở + chỉ số
Trang 16THANH GHI DỮ LIỆU – DATA REGISTER
• Chứa các dữ liệu tạm thời hoặc các kết quả trung gian
• Cần có nhiều thanh ghi dữ liệu
• Các thanh ghi số nguyên: 8, 16, 32, 64 bit
• Các thanh ghi số dấu chấm động: 32, 64, 80 bit
Trang 17THANH GHI TRẠNG THÁI– STATUS REGISTER
• Còn gọi là thanh ghi cờ (Flags Register) hoặc từ trạng thái chương trình PSW (Program Status Word)
• Chứa các thông tin trạng thái của CPU
o Các cờ phép toán: báo hiệu trạng thái của kết quả phép toán
o Các cờ điều khiển: biểu thị trạng thái điều khiển của CP
Trang 18CỜ PHÉP TOÁN
• Zero Flag (cờ rỗng): được thiết lập lên 1 khi kết quả của phép toán bằng 0
• Sign Flag (cờ dấu): được thiết lập lên 1 khi kết quả phép toán nhỏ hơn 0 (kết quả âm)
• Carry Flag (cờ nhớ): được thiết lập lên 1 nếu phép toán có nhớ ra ngoài bit cao nhất → cờ báo tràn với số không dấu
• Overflow Flag (cờ tràn): được thiết lập lên 1 nếu cộng hai số nguyên cùng dấu mà kết quả
có dấu ngược lại → cờ báo tràn với số có dấu
Trang 19CỜ ĐIỀU KHIỂN
• Interrupt Flag (Cờ cho phép ngắt):
o Nếu IF = 1 → CPU ở trạng thái cho phép ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới
o Nếu IF = 0 → CPU ở trạng thái cấm ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới
• Direction Flag (Cờ hướng):
o Nếu DF=0 → Truy cập bộ nhớ theo hướng tang
o Nếu DF=1 →Truy cập bộ nhớ theo hướng giảm
Trang 20TẬP THANH GHI – VÍ DỤ
Ví dụ: Tập thanh ghi ARM
Trang 21TẬP LỆNH – KHÁI NIỆM
• Tập đầy đủ các lệnh mà bộ xử lý có thể hiểu được và thực thi:
• Mỗi lệnh là các mã nhị phân (binary) được biểu diễn bởi những mã hợp lệnh (Assembly codes), ví dụ: ADD, SUB, LOAD, STORE,…
• Thể hiện tổng quát mặt logic của kiến trúc máy tính với các thanh registers, hoạt động củaALU, kiểu dữ liệu,…
• Việc thiết kế tập lệnh là quan trọng cho thiết kế CPU
• Mỗi một kiến trúc máy tính có một tập lệnh và một CPU đặc thù
Trang 22o Toán hạng nguồn: dữ liệu vào của thao tác.
o Toán hạng đích: dữ liệu ra của thao tác
o Toán hạng: Thanh ghi, bộ nhớ, thiết bị ngoại vi,…
Trang 23BIỂU DIỄN LỆNH
• Ví dụ: 1 lệnh 16 bit có 2 toán hạng
• Chuỗi các bit được chia thành các trường
• Biểu diễn tượng trưng: Cả mã lệnh lẫn các toán hạng
• Ví dụ: ADD A, B
Op-code Operand Reference Operand Reference
Trang 242 địa chỉ
toán hạng
Một toán hạng vừa là nguồn, vừa là đích Toán hạng còn lại là toán hạng nguồn
Trang 25CISC VỚI RISC
• CISC:Complex Instruction Set Computer:
o Máy tính với tập lệnh đầy đủ
o Ví dụ: Intel x86, Motorola 680x0
• RISC:Reduced Instruction Set Computer:
o Máy tính với tập lệnh thu gọn
o Ví dụ: SunSPARC, Power PC, MIPS, ARM
• RISC đối nghịch với CISC
Trang 26CÁC ĐẶC TRƯNG CỦA CISC
• Số lượng lệnh nhiều (vài trăm lệnh) → Dễ lập trình, chương trình ngắn hơn (chiếm ít bộnhớ)
• Truy cập toán hạng ở các thanh ghi lẫn bộ nhớ
• Cấu trúc CPU phức tạp
• Thời gian thực hiện lệnh cần nhiều chu kỳ máy
• Số lượng khuôn dạng lệnh lớn
• CPU có tập thanh ghi nhỏ
• Có nhiều mode địa chỉ
• Một số lệnh không có mạch phần cứng riêng (cần có vi chương trình để thực hiện)
Trang 27CÁC ĐẶC TRƯNG CỦA RISC
• Số lượng lệnh ít (vài chục lệnh) và cơ bản nhất → Khó lập trình, chương trình dài hơn
• Hầu hết các lệnh truy cập toán hạng ở các thanh ghi
• Cấu trúc CPU đơn giản
• Thời gian thực hiện lệnh là một chu kỳ máy
• Số lượng khuôn dạng lệnh ít (<=4)
• CPU có tập thanh ghi lớn
• Có ít mode địa chỉ (<=4)
Trang 28NHẬN XÉT ẢNH HƯỞNG CỦA SỐ ĐỊA CHỈ TOÁN HẠNG
• Càng ít địa chỉ, các lệnh càng đơn giản hơn, cần ít thanh ghi, chương trình có nhiều lệnh hơn, tuy nhiên chương trình sẽ nhận lệnh và thực thi thanh hơn.
• Càng nhiều địa chỉ, các lệnh càng phức tạp hơn, cần nhiều thanh ghi, chương trình có ít lệnh hơn, nhưng chương trình sẽ thực thi chậm hơn.
Trang 29PHÂN LOẠI TOÁN HẠNG
• Địa chỉ: Số nguyên không dấu.
• Số: Nguyên, thực, dấu chấm động,…
• Ký tự: ASCII, Unicode,…
• Dữ liệu logic: bits, flag.
Trang 30• Chuyển dữ liệu (I/O).
• Lưu dữ liệu (main memory).
• Điều khiển:
o Kiểm tra và rẽ nhánh
Trang 31TẬP CÁC MÃ LỆNH DI CHUYỂN DỮ LIỆU
MOVE Copy dữ liệu từ nguồn đến đíchLOAD Nạp dữ liệu từ bộ nhớ đến bộ xử lýSTORE Cất dữ liệu từ bộ xử lý đến bộ nhớEXCHANGE Hoán đổi nội dung của nguồn và đíchCLEAR Chuyển các bit 0 vào toán hạng đíchSET Chuyển các bit 1 vào toán hạng đích
Trang 32TẬP CÁC MÃ LỆNH XỬ LÝ DỮ LIỆU (HOẶC LỆNH SỐ HỌC)
ADD Cộng hai toán hạngSUBTRACT Trừ hai toán hạngMULTIPLY Nhân hai toán hạngDIVIDE Chia hai toán hạngABSOLUTE Lấy trị tuyệt đối toán hạngNEGATE Đổi dấu toán hạng (lấy 0 trừ toán hạng)INCREMENT Tăng toán hạng thêm 1
DECREMENT Giảm toán hạng đi 1
Trang 33LỆNH ADD, SUB (THEO KIẾN TRÚC ARM)
• Trong một vài trường hợp, các phép cộng cần có lệnh nhớ (carry instruction) với mã lệnhADC để đảm bảo kết quả chính xác
• Mã lệnh ADD(S), việc thêm S để bit nhớ có thể cập nhật
• Tương tự với phép cộng, phép trừ cũng có lệnh nhớ là SBC
• Ngoài ra, trong phép trừ có mã lệnh nghịch đảo (reverse subtract instruction – RSB)
• Ví dụ: SUB r1, r2 #10 [r2] – 10, trong khi RSB r1, r2 #10 10 – [r2]
Trang 34LỆNH ADD, SUB (THEO KIẾN TRÚC ARM)
Phép cộng precision Khi r0 được cộng vào r1, kết quả sẽ được lưu vào r2 và bit nhớ
Single-sẽ được lưu vào cờ nhớ
Phép cộng double-precision Khi r0 được cộng vào r2, kết quả nhớ được lưu vào bit nhớ Khi r1 được cộng vào r3, bit nhớ sẽ được cộng vào kết quả của phép cộng.
Trang 35LỆNH NEGATE, COMPARE (THEO KIẾN TRÚC ARM)
• Phép phủ định trừ một số với giá trị 0 Ví dụ: phủ định của r0 là 0 – r[0]
• Không có mã lệnh phủ định, do đó ta sử dụng mã lệnh nghịch đảo của phép trừ RSB Ngoài ra
có thể sử dụng lệnh MVN trong tập lệnh logic số học
• Trong phép so sánh, sẽ có 2 trường hợp: ẩn (implicit) và hiện (explicit)
• Ví dụ:
o Trường hợp ẩn SUB r1, r1 #1, nếu phép tính cho kết quả 0 thì bit Z sẽ được lưu vào thanh
ghi mã điều kiện
o Trường hợp hiện: CMP r1, r0 Kết quả so sánh sẽ được cập nhật vào bit trạng thái Phép so sánh điều chỉnh ngữ cảnh của thanh ghi mã điều kiện và được sử dụng để xác định chương
Trang 36LỆNH MULTIPLY (THEO KIẾN TRÚC ARM)
• Tính toán dựa trên 2 toán hạng m-bit, cho ra kết quả 2m-bit ➔ Độ dài bit kết quả tăng gấp đôi
• Để giải quyết vấn đề, máy tính sẽ tự động cắt bớt độ dài của kết quả Ví dụ: 32-bit nhân 32-bit
sẽ tạo ra kết quả 32-bit thay vì 64-bit Hoặc tạo ra câu lệnh có 4 toán hạng: 2 cho toán hạng
nguồn, 2 cho toán hạng đích
• Không thể áp dụng phép nhân cho cả hai giá trị đã khai báo (signed) và chứ khai báo
(unsigned), phải dùng riêng biệt trong hai trường hợp
• Một số vi xử lý (microprocessor) cung cấp các phép nhân cho hai giá trị, cung cấp phép nhânhoàn chỉnh cho 16-bit và 32-bit với kết quả 32-bit, 64-bit
Trang 37LỆNH MULTIPLY (THEO KIẾN TRÚC ARM)
• Một số mã lệnh khác cho phép nhân được miêu tả trong bảng trên
• Lưu ý: Phép nhân sẽ không cùng loại với các loại tập mã lệnh khác như ADD hoặc AND, vì
không thể nhân với hằng số và dịch sang phép toán thứ hai
Trang 38LỆNH MULTIPLY (THEO KIẾN TRÚC ARM)
• Mã lệnh: Mul Rd, Rm, Rs Tính kết quả của hai biến số nguyên 32-bit đã khai báo và lưu trữ tạithanh ghi 32-bit Rm, Rs Kết quả sẽ được lưu vào thanh ghi 32-bit Rd (thanh ghi lưu 64-bit với32-bit bậc thấp)
• Ví dụ: cho 2 số nguyên là 121 và 96:
Trang 39LỆNH MULTIPLY (THEO KIẾN TRÚC ARM)
• Ngoài ra, ARM cũng cung cấp một dạng mã lệnh 4 toán hạng để thực thi phép nhân và cộng kết
quả thành tổng cuối cùng gọi là MLA: MLA Rd, Rm, Rs, Rn
• Ví dụ
Trang 40LỆNH DIVIDE (THEO KIẾN TRÚC ARM)
• Có các vấn đề và đặc trưng tương tự như phép nhân
• Với ARM sẽ không có áp dụng phép chia trong mô hình cơ bản, người lập trình sẽ phải viếtchương trinh hoạt động cho phần mềm
Trang 41TẬP CÁC MÃ LỆNH LOGIC
AND Thực hiện phép AND hai toán hạng
OR Thực hiện phép OR hai toán hạngXOR Thực hiện phép XOR hai toán hạngNOT Đảo bit của toán hạng (lấy bù 1)TEST Thực hiện phép AND hai toán hạng để lập cờ
Trang 42TẬP CÁC MÃ LỆNH LOGIC – VÍ DỤ
• Kiến trúc ARM cung cấp lệnh xóa bit (bit clear instruction – BIC) Ví dụ: BIC r0 r1 r2
[r0] [r1].[r2] BIC sẽ chép bits vào vị trí toán hạng đầu tiên tới vị trí đích khi phản hồibit từ toán hạng thứ 2 là 0, ngược lại sẽ xóa bit khi phản hồi là 1
Trang 43CÁC TOÁN HẠNG DỊCH – SHIFT OPERATIONS
• Phép dịch sẽ di chuyển 1 bit ký tự hoặc nhiều khoảng trống sang phải hoặc trái.
• Tuy nhiên, khi dịch chuyển chuỗi bit ký tự, giá trị bit cuối sẽ bị loại bỏ và bit mới sẽ được thêm vào đầu cuối còn lại.
• Ví dụ
Trang 44CÁC TOÁN HẠNG DỊCH – SHIFT OPERATIONS
• Giá trị 0 được dịch vào, giá trị bit được dịch
ra ngoài sẽ được sao chép vào bit nhớ của thanh ghi mã điều kiện (CCR).
Phép dịch logic
Trang 45CÁC TOÁN HẠNG DỊCH – SHIFT OPERATIONS
• Với dịch sang phải, giá trị số sẽ nhâncho 2, ngược lại dịch sang trái sẽ chia cho 2
• Ký hiệu của 2 giá trị số bổ sung sẽđược giữ lại
• Bit bị dịch chuyển ra ngoài sẽ được
Phép dịch số học
Trang 46CÁC TOÁN HẠNG DỊCH – SHIFT OPERATIONS
• Bit bị dịch chuyển ra sẽ được sao chépvào bit trống vào đầu cuối (không bit nào bị mất khi xoay), đồng thời đượclưu vào bit nhớ
Xoay
Trang 47CÁC LỆNH NHẬP XUẤT CHUYÊN DỤNG
INPUT : Copy dữ liệu từ một cổng xác định đưa đến đích
thiết bị → bộ nhớOUTPUT: Copy dữ liệu từ nguồn đến một cổng xác định
bộ nhớ → thiết bị
Trang 48CÁC LỆNH CHUYỂN ĐIỀU KHIỂN
• JUMP (BRANCH): Lệnh rẽ nhánh không điều kiện.
• CONDITIONAL JUMP : Lệnh rẽ nhánh có điều kiện.
• CALL : Lệnh gọi chương trình con.
• RETURN : Lệnh trở về từ chương trình con.
Trang 49LỆNH RẼ NHÁNH KHÔNG ĐIỀU KIỆN
• Với rẽ nhánh không có điều kiện của ARM có dạng đích B, nơi B đánh dấu tới địa chỉ nhánh đích (branch target address – BTA) Địa chỉ
nhánh đích là nơi lệnh tiếp theo sẽ thực thi.
• Thường được dùng để gọi lại một điểm thường dùng ➔ Được gọi là lệnh “get me back”
• Ví dụ:
Trang 50LỆNH RẼ NHÁNH CÓ ĐIỀU KIỆN
• Với rẽ nhánh có điều kiện của ARM sẽ gần giống với các vi xử lý RISC
và CISC, bao gồm phép nhớ Bcc và địa chỉ đích - vị trí lưu 1 trong 16 điều kiện cần thỏa mãn cho việc chọn nhánh, đồng thời là nơi lưu lệnh thực thi tiếp theo ghi đã chọn nhánh.
• Ví dụ:
Chuyển sang
mã hợp ngữ
Trang 51LỆNH RẼ NHÁNH CÓ ĐIỀU KIỆN
Điều kiện thực thi và phép nhớ điều khiển nhánh của ARM
Trang 52LỆNH CALL
• Gọi chương trình con.
• Cất nội dung PC (chứa địa chỉ của lệnh kế tiếp) ra Stack.
• Nạp vào PC địa chỉ lệnh đầu tiên của chương trình con được gọi.
• Bộ xử lý được chuyển sang thực hiện chương trình con tương ứng.
Trang 53LỆNH RETURN
• Trở về từ chương trình con.
• Lấy địa chỉ của lệnh_kế_tiếp được cất ở Stack nạp trả lại cho PC.
• Bộ xử lý được điều khiển quay trở về thực hiện tiếp lệnh nằm sau lệnh CALL.
Trang 54TẬP MÃ LỆNH ĐIỀU KHIỂN HỆ THỐNG
WAIT Tạm dừng thực hiện chương trình, lặp kiểm tra điều kiện cho
đến khi thoả mãn thì tiếp tục thực hiện.
NO OPERATION Không thực hiện gì cả
Trang 55HOẠT ĐỘNG CỦA CHU TRÌNH LỆNH
1 Nạp lệnh (Fetch Instruction – FI).
2 Giải mã lệnh (Decode Instruction – DE).
3 Nạp toán hạng (Fetch Operands – FO).
4 Thực hiện lệnh (Execute Instruction –
EI).
5 Ghi toán hạng (Write Operands – WO).
6 Ngắt (Interrupt Instructions – II).
Trang 56CHU TRÌNH FETCH/ EXECUTE
• CPU đưa địa chỉ của lệnh cần nhận
từ Bộ đếm chương trình (program counter - PC) ra bus địa chỉ.
Bộ đếm chương trình (program counter - PC):
Chứa địa chỉ cho chương trình tiếp theo cần thực thi (con trỏ chỉ đến vị trí bộ nhớ chứa chương trình thực thi kế tiếp).
Trang 57CHU TRÌNH FETCH/ EXECUTE
• Thanh ghi bộ đệm nhớ (Memory Buffer Register - MBR): Lưu trữ dữ
liệu vừa được đọc từ bộ nhớ chính
Thanh ghi địa chỉ bộ nhớ (Memory
Address Register -MAR): Lưu trữ
các địa chỉ xác định vị trí của bộnhớ chính để đọc và ghi các phéptính