Kiến trúc máy tính là bộ môn trong nhiều ngành về phần cứng, slide bài giảng của Gv Nguyễn Thanh Đăng hy vọng sẽ giúp bạn đọc hiểu rõ về môn Học kiến trúc máy tính, cũng như giúp các bạn sinh viên có tài liệu tham khảo từ đại học Công nghiệp thành phố Hồ Chí Minh
Trang 1KIẾN TRÚC TẬP LỆNH
Gv: Ths Nguyễn Thanh Đăng
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TPHCM
KHOA
CÔNG NGHỆ ĐIỆN TỬ
Trang 2MỤC LỤC
2.1 - Giới Thiệu
2.2 - Kiến Trúc CISC và RISC
2.3 - Các thành phần cơ bản của máy tính
2.4 - Kiến Trúc tập lệnh MIPS
2.5 - Gọi thủ tục và hàm
2.6 - Định dạng lệnh MIPS và cách mã hóa địa chỉ 2.7 - Kết chương
Trang 3Câu hỏi:
1.Những đặc điểm nổi bật nào khiến cho các Kỹ Sư
máy tính chuyển hướng sang tiếp cập kiến trúc RISC
Họ tập trung vào khai thác ưu điểm nào của kiến trúc RISC đưa vào CISC
2 Trình bày cấu trúc cơ bản của máy tính
3 So sánh toán hạng thanh ghi & toán hạng bộ nhớ?
4 So sánh “lệnh đọc dữ liệu” với “lệnh lưu dữ liệu
5 Hãy phân biệt 3 định dạng R, I, J thông qua các lệnh
mà chúng hướng tới
Trang 42.1 Giới Thiệu:
Ngôn ngữ là 1 hệ thống giao tiếp bao gồm âm thanh,
từ ngữ và ngữ pháp được sử dụng bởi những người
trong 1 đất nước cụ thể hoặc trong 1 loại công việc
là ngôn ngữ của máy tính Ngôn ngữ là gì?
Lệnh tập lệnh
Trang 5Mục tiêu
MIPS (Microprocessor without Interlocked
Pipeline Stages) ở cả 2 dạng hợp ngữ và ngôn ngữ máy
o Lịch sử MIPS: Đại học Standford (1981)
MIPS Technologies
o Ứng dụng MIPS: hệ thống nhúng, nền tảng cho
kiến trúc tập lênh sau này
o Phương pháp của kiến trúc MIPS: phương
pháp ánh xạ và quản lý địa chỉ
Trang 62.2 Kiến trúc CISC và RISC
A Ngôn ngữ lập trình
o Nhiều, mạnh, phức tạp phát triển ứng dụng
(chính xác cho từng ứng dụng, chi tiết hóa mục
đích)
o Hạn chế: khoảng cách ngữ nghĩa giữa NNLT &
tác vụ cung cấp của kiến trúc máy tính
Giải quyết: xây dựng kiến trúc máy tính hỗ trợ
lớn các loại lệnh phức tạp với nhiều phương pháp
tính toán địa chỉ khác nhau
Mục tiêu
Làm giảm độ phức tạp của trình biên dịch
Cải tiến thời gian thực thi
Hoàn thành tác vụ với ít số lượng lệnh hợp ngữ.
Trang 7B Kiến trúc CISC (Complex Instruction Set Computer)
2.2 Kiến trúc CISC và RISC
Đặc điểm:
- 120 – 350 lệnh
- Số lượng thanh thi khá ít (8 -24 thanh ghi)
- Tham khảo bộ nhớ thông qua nhiều phương
pháp tính toán địa chỉ khác nhau (12 – 24)
- CPI trung bình trong khoảng từ 2 - 15
KHÔNG ĐẠT HIỆU QUẢ SỬ DỤNG PHẦN CỨNG CAO
Trang 8C Kiến trúc RISC (Reduced Instruction Set Computer)
2.2 Kiến trúc CISC và RISC
Đặc điểm:
- Ít hơn 100 lệnh, kích thước cố định (32 bit)
- Số lượng thanh ghi GPRs nhiều (32 – 192)
Trang 9kiến trúc CISC và ưu điểm của kiến trúc RISC
Gia tăng số lượng thanh ghi
Kỹ thuật xử lý ống
Trang 112.3 Các thành phần cơ bản của máy tính
Trang 122.3 Các thành phần cơ bản của máy tính
2.3.1 Bộ xử lý trung tâm (CPU)
Tập thanh ghi
Thanh ghi bộ đếm
chương trình
Khối số học vàlogic(ALU)
Khối điều khiển
Trang 132.3 Các thành phần cơ bản của máy tính
2.3.1 Bộ xử lý trung tâm (CPU)
Tập thanh ghi
• Lưu trữ tạm thời các lệnh, dữ liệu cho CPU xử lý
• Kích thước nhỏ, tốc độ làm việc cao (~CPU)
• MIPS chuẩn: 32bit
Thanh ghi
bộ đếm chương trình
• Lưu trữ địa chỉ của lệnh sẽ được thực thi tiếp theo ngay sau lệnh đang được xử lý
• Chỉ được cập nhật bởi phần cứng.
Khối Khối
số học và logic (ALU
• Thực hiện các phép tính số học( + /) và các phép toán luận lý( NOT, AND, OR, XOR)
Khối điều khiển • Điều khiển việc thực thi các lệnh
Trang 142.3 Các thành phần cơ bản của máy tính
2.3.2 Bộ nhớ chính
Bộ nhớ chính
Nơi lưu trữ chương trình
và dữ liệu cần thiết cho
chương trình
Ô nhớ 1 byte( 8 bit)
Từ nhớ
Trang 152.3 Các thành phần cơ bản của máy tính
2.3.2 Bộ nhớ chính
MIPS
Từ nhớ = 4 byte liên tục bắt đầu từ byte
có địa chỉ chia hết cho 4
Big Endian: byte dữ liệu
có trọng số lớn nhất ==> ô
nhớ có địa chỉ thấp nhất
Trang 162.3 Các thành phần cơ bản của máy tính 2.3.2 Bộ nhớ chính
Bộ nhớ chính trong kiến trúc MIPS
Trang 17Câu hỏi 2
Trình bày cấu trúc cơ bản của máy tính.
Trang 182.4 Kiến trúc tập lệnh MIPS
Trang 192.4.5 Nhóm lệnh di chuyển dữ liệu
Trang 20• Nền tảng cho nhiều kiến trúc tập lệnh thế hệ mới
Trang 222.4.1 Giới thiệu
Kiến trúc MIPS chuẩn 32 bit có những đặc điểm:
• Một lệnh hợp ngữ tương đương một lệnh máy
• Có kích thước 32 bit
• Chỉ suy nhất một tác vụ thực hiện trong một lệnh
Trang 232.4.5 Nhóm lệnh di chuyển dữ liệu
Trang 254 Thiết kế tốt đòi hỏi sự thỏa hiệp tốt
1 Đơn giản tạo nên tính quy tắc
2 Càng nhỏ
sẽ càng nhanh
Nguyên tắc chính trong thiết kế:
Trang 262.4.5 Nhóm lệnh di chuyển dữ liệu
Trang 27Các thanh
ghi
Địa chỉ bộ nhớ
Một số nguyên
• Toán hạng là các đối tượng sẽ được xử lý bởi các lệnh hoặc các toán tử
2.4.3 Các toán hạng của MIPS
• Các lệnh MIPS chỉ hỗ trợ ba loại toán hạng:
Trang 282.4.3 Các toán hạng của MIPS
Toán hạng thanh ghi:
• Có nhiều lệnh số học sử dụng các thanh ghi là toán hạng
• MIPS có tệp 32 thanh ghi 32-bit
•Đánh số từ 0 đến 31
•32-bit dữ liệu được gọi là 1
“từ”(“word”)
Trang 292.4.3 Các toán hạng của MIPS
Toán hạng thanh ghi:
• Được đặt tên gợi nhớ bắt đầu bằng ký hiệu
“$” và theo sau tên của thanh ghi
Trang 302.4.3 Các toán hạng của MIPS
Ví dụ toán hạng thanh ghi:
Trang 312.4.3 Các toán hạng của MIPS
Toán hạng bộ nhớ:
• Bộ nhớ chính dùng để lưu trữ toán hạng có dạng cấu trúc phức tạp như dãy hay cấu trúc
• Sử dụng cho các phép số học
• Nạp các giá trị từ bộ nhớ vào các thanh ghi
• Lưu giữ các kết quả trong thanh ghi ra bộ nhớ
• Bộ nhớ được định vị theo đơn vị từng byte
• 1 từ được sắp xếp gồm 4 bytes trong bộ nhớ
• Địa chỉ truy xuất = Địa chỉ biểu diễn * 4 byte
• MIPS chứa dữ liệu theo byte có giá trị lớn nằm
ở địa chỉ thấp
Trang 322.4.3 Các toán hạng của MIPS
Ví dụ toán hạng bộ nhớ:
Trang 332.4.3 Các toán hạng của MIPS
Toán hạng số nguyên:
• MIPS cho phép các số nguyên (dương hoặc âm) được tham giao vào một số lệnh như là một toán hạng
• Các số nguyên tham gia làm toán hạng sẽ được mã hóa trực tiếp thành các bit nhị phân trong lệnh máy
Tính toán các số nguyên sẽ nhanh chóng và thuận tiện thay vì phải tiếp cần theo cách truy xuất bộ nhớ tương ứng dành cho các số nguyên
Trang 342.4.5 Nhóm lệnh di chuyển dữ liệu
Trang 352.4.4 Nhóm lệnh số học và luận lý
Ồn
Toán hạng đích
nguồn Định dạng lệnh số học và luận lý gồm 4 phần:
Trang 36 Các lệnh số học và luận lý không chấp nhận toán hạng bộ nhớ
Thực hiện phép toán số học và luận lý trên hai toán hạng nguồn
và ghi kết quả vào toán hạng đích
• Lệnh số học chuẩn
• Lệnh luận lý chuẩn
• Toán hạng nguồn 1 bắt buộc phải là thanh ghi
• Toán hạng nguồn 2 có thể là thanh ghi hoặc số
nguyên tùy vào từng lệnh
Trang 382.4.4 Nhóm lệnh số học và luận lý
Ví dụ các lệnh số học:
Trang 392.4.4 Nhóm lệnh số học và luận lý
Các lệnh luận lý thực hiện xử lý một nhóm bit trong một thanh ghi hoặc xử lý từng bit thay vì xả thanh ghi 32 bit
Ví dụ lệnh luận lý
Thanh ghi $s1 có giá trị 0x12345678
Yêu cầu thực hiện lệnh sau:
s11 $s2, $s1, 4
• Kết quả:
• $s2 = 0x23456780
Trang 40Câu hỏi 3: So sánh toán hạng thanh ghi & toán hạng bộ nhớ?
Trang 41Nhóm lệnh di chuyển
dữ liệu
Nhóm lệnh hỗ trợ ra quyết định
Gọi thủ tục và hàm
Nội dung
2.4.4
2.4.5
2.5
Trang 42Các lệnh số học và luận lý chỉ có thể xử lí các toán hạng là
thanh ghi hoặc số nguyên Nên các giá trị được lưu trữ trong bộ nhớ cần phải được nạp vào các thanh ghi trước khi tham gia vào các lệnh số học hoặc luận lý.
2.4.4: Nhóm lệnh di chuyển dữ liệu
Lệnh Thanh ghi dữ liệu Toán hạng bộ nhớ
Các lệnh đọc dữ liệu Các lệnh lưu dữ liệu
Trang 43Các lệnh đọc dữ liệu:
Lệnh đọc dữ liệu:
- Dữ liệu trong ô nhớ có địa chỉ được xác định bằng toán hạng
bộ nhớ sẽ được sao chép và ghi vào thanh ghi dữ liệu.
- Dữ liệu được chứa trong thanh ghi là dữ liệu sẽ tham gia vào
phép tính số học và luận lý nên được lưu trữ theo trọng số và độc lập với cách lưu trữ của bộ nhớ.
Bộ nhớ Dữ liệu Thanh ghi
Trang 44Các lệnh đọc dữ liệu:
Trang 45Các lệnh lưu dữ liệu:
Lệnh lưu dữ liệu:
- Sao chép nội dung một thanh ghi hoặc một phần
nội dung thanh ghi xuống các ô nhớ trong bộ nhớ.
- Lệnh lưu dữ liệu không xét đến dấu của giá trị sẽ
được lưu trữ
Bộ nhớ
Thanh ghi Dữ liệu
Trang 46Các lệnh lưu dữ liệu:
Trang 48Lệnh rẽ nhánh khi bằng nhau Lệnh rẽ nhánh khi không bằng nhau
Rẽ nhánh có điều kiện:
beq register1, register2, L1
Nếu giá trị chứa trong 2 thanh
ghi 1 và 2 bằng nhau thì lệnh
được gán nhãn L1 thực thi
Ngược lại lệnh ngay phía sau
lệnh rẽ nhánh beq thực thi
bne register1, register2, L1
Nếu giá trị chứa trong 2 thanhghi 1 và 2 khác nhau thì lệnhđược gán nhãn L1 thực thi.Ngược lại lệnh ngay phía saulệnh rẽ nhánh bne thực thi
Trang 49Thay vì thực hiện lệnh tiếp theo thì bộ xử lí sẽ
thực hiện lệnh được lưu trong thanh ghi
Thực hiện ngay việc rẽ nhánh đến lệnh
có nhãn L1
Ngoài việc thực hiện rẽ nhánh đến lệnh có nhãn L1thì lệnh còn lưu địa chỉ của lệnh tiếp theo vàothanh ghi đặc biệt $ra
Trang 50Các lệnh so sánh:
Trang 522
3
4 6
Thực hiện các lệnh của thủ tục
Trang 532
3
4 6
1
Thủ tục cần sử dụng
nhiều thanh ghi hơn các
thanh ghi dành riêng.
Khi lưu giá trị thanh ghi vào stack
cần giảm địa chỉ thanh ghi $sp đi
một từ nhớ (4 byte) Ngược lại khi
lấy giá trị một thanh ghi ra khỏi
stack cần tăng địa chỉ thanh ghi $sp
lên một từ nhớ.
Các thanh ghi đa dụng nếu được sử dụng trong thủ tục phải đảm bảo giá trị của chúng trước và sau khi hoàn tất thủ tục phải giống nhau.
Các thanh ghi này sẽ được lưu trữ trong bộ nhớ gọi là
“chồng”.
MIPS sử dụng một thanh ghi chuyên biệt ($sp) để lưu trữ địa chỉ của phần tử đầu tiên trên đỉnh stack trong bộ nhớ
Lưu trữ các thanh ghi khi sử dụng trong thủ tục
5
Thủ tục chỉ cần lưu các
thanh ghi chứa giá trị cần
được sử dụng sau khi thủ
tục kết thúc.
Trang 54Thủ tục lồng nhau:
Thủ tục không gọi thêm bất kì thủ tục nào khác trong quá trình thực hiện được gọi
là thủ tục “lá” Không phải mọi thủ tục đều là thủ tục “lá” vì một thủ tục có thể
gọi một thủ tục khác hay chính nó Các thủ tục dạng này gọi là thủ tục lồng nhau.
- Vấn đề 1: MIPS chỉ sử dụng thanh ghi $ra để lưu trữ địa chỉ trả về chương trình gọi Mà thủ tục được gọi lại gọi một thủ tục khác hoặc chính nó Lúc này thanh ghi được cập nhật lại ở lần gọi tiếp theo Nếu giá trị cũ không
được giữ lại thì không thể quay về chương trình gọi đầu tiên Vì vậy thủ
tục được gọi từ chương trình chính cần phải lưu trữ thanh ghi $ra vào
stack.
- Vấn đề 2: Lưu trữ các thanh ghi có thể được sử dụng sau khi thủ tục được gọi kết thúc Các thanh ghi cần được lưu trữ theo nguyên tắc sau khi thực hiện việc gọi thủ tục lồng nhau
Trang 55Câu hỏi 4
So sánh “lệnh đọc dữ liệu” với “lệnh lưu
dữ liệu:
Trang 562.6 ĐỊNH DẠNG LỆNH MIPS
VÀ CÁCH MÃ HÓA ĐỊA CHỈ
Trang 572.6.1.Định dạng lệnh MIPs
2.6.2 Mã hóa địa chỉ nhóm lệnh rẽ nhánh
Trang 58●Máy tính, vi xử lý chỉ có thể hiểu được các lệnh máy – 100100101101
●Hợp ngữ
( $s0)
Mã Hóa ●Mã máy 01101010
Trang 59Toán hạng thanh ghi $s0-$s7
Toán hạng bộ nhớ 4 ($s0)
Toán hạng số nguyên -210 = 111111102
Trang 602.6.1.Định dạng lệnh MIPs
Định dạng R (Register)
6bit 5bit 5bit 5bit 5bit 6bit
Chỉ mã hóa các lệnh có toán hạng là thanh ghi
Trang 64Định dạng J (Jump)
Mã hóa hai lệnh rẽ nhanh j và jal
6bit 26bit
Trang 65Câu hỏi 5
Hãy phân biệt 3 định dạng R,I,J thông qua các lệnh mà chúng hướng tới.
Trang 662.7 Kết chương
Tập lệnh MIPS: nhóm lệnh số học và luận lý
nhóm lệnh chuyển dữ liệunhóm lệnh hộ trợ tra quyết định
Khi mã hóa xuống thành các lệnh máy : 32bit và phân thành 3 địnhdạng R, I, J
ᴥ R: mã hóa các lệnh chỉ dùng thanh ghi làm các toán hạngcùng với hai lệnh dịch trái, phải
ᴥ I: mã hóa các lệnh có số nguyên trong toán hạng
ᴥ J: mã hóa 2 lệnh j và jal.
Các lệnh rẽ nhánh: mã hóa các lệnh, các thanh ghi toán hạng và tínhtoán địa chỉ