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 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
KHOA CÔNG NGHỆ ĐIỆN TỬ
Kiến trúc máy tính Chương 4 _Bộ xử lý
GV : Ths.Nguyễn Thanh Đăng
Trang 2CÂU HỎI
Câu 1: Có bao nhiêu rủi ro trong mô hình xử lý ống? Kể tên và nêu ý nghĩa của từng loại?
Câu 2: Câu lệnh lw $t0,12($s0) có ý nghĩa như thế nào?
Câu 3: Các lệnh khi được thực thi gồm mấy giai đoạn? Kể tên các giai đoạn?
Câu 4: Hiện thực phương pháp xúc tiến sớm giải quyết rủi
ro về dữ liệu có mấy loại? Hãy kể tên?
Câu 5: Các giai đoạn để xây dựng đường dữ liệu ? Hãy kể tên?
Trang 34.3 CÁC THÀNH PHẦN CƠ BẢN
CỦA 1 BỘ XỬ LÝ 4.2 MÔ HÌNH THỰC THI LỆNH
4.1 GIỚI THIỆU
Trang 54.2 Mô hình thực thi lệnh
- Tất cả các lệnh khi được thực thi đều có hai giai đoạn:
+ Giai đoạn đọc lệnh (instruction fetch)
+ Giai đoạn giải mã lệnh (instruction decode)
Trang 64.2 Mô hình thực thi lệnh
Sau 2 giai đoạn đọc lệnh và giải mã lệnh, các nhóm lệnh khácnhau sẽ yêu cầu các tác vụ và các khối chức năng khác nhau.Tuy nhiên, các lệnh trong cùng 1 nhóm lệnh (nhóm lệnh sốhọc, truy xuất dữ liệu và rẻ nhánh) sẽ có tác vụ và các khốichức năng tham gia vào tính toán khá tương tự nhau Đâychính là quy tắc “sự đơn giản tạo nên tính quy tắc” trong kiếntrúc MIPS
Trang 74.3 Các thành phần cơ bản của một bộ xử lý
4.3.1 Đường dữ liệu
4.3.2 Bộ điều khiển
Trang 94.3.1 Đường dữ liệu
Đường truyền dữ liệu bao gồm các tín hiệu dữ liệu(datasighal) và các khối chức năng (functional unit) xử lícác tín hiệu dữ liệu này Nhiệm vụ chính của đường dữliệu là xử lí dữ liệu dưới sự điều khiển của bộ điều khiển
và truyền dữ liệu qua lại giữa các khối chức năng
4.3 Các thành phần cơ bản của một bộ xử lý
Trang 104.3.1 Đường dữ liệu
Đường
dữ liệu
Bộ nhớ lệnh
Tập thanh ghi
Bộ nhớ dữ liệu Khối
ALU
Trang 114.3.1 Đường dữ liệu
- Bộ nhớ lệnh:
Bộ nhớ lệnh là nơi chứatoàn bộ các lệnh của chươngtrình đang thực thi Các lệnhđược chứa tuần tự trong bộnhớ lệnh theo mô hình lưutrữ mà bộ xử lí đó đang sửdụng (lite/big endian)
Trang 124.3.1 Đường dữ liệu
- Tập thanh ghi:
Tập thanh ghi trong kiếntrúc bộ xử lí MIPS là nơichứa tất cả 32 thanh ghi đadụng của MIPS
Trang 134.3.1 Đường dữ liệu
- Bộ nhớ dữ liệu:
Bộ nhớ dữ liệu là nơi lưu trữ
dữ liệu của các chương trìnhđang thực thi Dữ liệu đượclưu trữ tuần tự trong các ônhớ có địa chỉ xác định vàtuân theo quy tắc lưu trữ(little/big endian) của kiếntrúc bộ xử lí đang sử dụng
bộ nhớ
Trang 144.3.1 Đường dữ liệu
- Khối ALU:
Khối ALU sẽ thực hiện cácphép toán số học và sosánh để phục vụ các lệnh
số học, lệnh luận lý, lệnhtruy xuất dữ liệu, lệnh rẽnhánh có điều kiện và lệnh
so sánh
Trang 154.3.2 Bộ điều khiển
Bộ điều khiển chịu trách nhiệm phân tích lệnh đang thựcthi và sinh ra các tín hiệu để điều khiển hoạt động của cáckhối chức năng Ngoài ba tín hiệu điều khiển đã trình bày
ở trên là ghi thanh ghi, đọc bộ nhớ và ghi bộ nhớ, bộ điều
khiển còn sinh ra các tín hiệu điều khiển để xác định tác vụcủa khối ALU và để lựa chọn các đường dữ liệu
Trang 164.3.2 Bộ điều khiển
Trang 17► Mô hình bộ xử lý đơn giản (mô hình đơn chu kỳ - single-cycle) đặtmục tiêu thiết kế sao cho tất cả các lệnh đều phải được hoàn thànhtrong 1 chu kỳ.
► Quá trình thực hiện lệnh phải trãi qua 5 giai đoạn cơ bản là: đọclệnh, giải mã lệnh, thực thi lệnh, truy xuất bộ nhớ và cập nhật kết quả
4.4 Xây dựng mô hình xử lý theo mô hình đơn giản
Trang 181)Giai đoạn đọc lệnh
2)Giai đoạn giải mã lệnh
3)Giai đoạn thực thi lệnh
4)Giai đoạn truy xuất bộ nhớ5)Giai đoạn cập nhật kết quả6)Hoàn chỉnh đường dữ liệu
4.4.1 Xây dựng đường dữ liệu
Trang 19Giai đoạn đọc lệnh
Trang 20Giai đoạn đọc lệnh thì giá trị của thanh ghi PC được đưa vào bộ nhớ lệnh để truy xuất lệnh chuẩn
bị được thực thi hiện đang được lưu trữ trong bộ nhớ lệnh
Đồng thời thanh ghi PC được lên 4
để chứa địa chỉ của lệnh chuẩn bị được thực thi tiếp theo
Sau khi bộ nhớ
lệnh thực thi việc
truy xuất lệnh tại
địa chỉ được cung
cấp bởi thanh ghi
PC thì lệnh
(có kích thước 32
bit) được đưa ra
ngoài
Trang 21Giai đoạn giải mã lệnh
Trang 22Giai đoạn này có sự tham gia của tập thanh ghi để truy xuất
giá trị hai thanh ghi nguồn đối với các lệnh dạng R, lệnh rẽ
nhánh có điều kiện và lệnh lưu dữ liệu.
Còn đối với lệnh dạng I ngoài việc truy xuất giá trị của một
thanh ghi nguồn (trừ lệnh dữ liệu)thì trong giai đoạn này cần
phải mở rộng dấu giá trị số nguyên từ 16bit thành 32bit để có
thể thực hiện phép toán với giá trị 32bit truy xuất được từ
thanh ghi (được thực hiện bởi khối Mở rộng dấu)
Kết quả của giai đoạn này là các giá trị số có kích thước 32bit,
có thể được lưu trữ trong thanh ghi hoặc được thực hiện mở rộng dấu từ giá trị số nguyên 16bit tham gia trực tiếp vào lệnh
Trang 23Giai đoạn thực thi lệnh
Trang 24Sẽ khác nhau với các nhóm lệnh khác nhau, lệnh R thì giá trị truy xuất được hai thanh ghi nguồn ở giai đoạn giải mã lệnh sẽ được đưa vào khối ALU để thực hiện tác vụ tương ứng, còn lệnh I thì giá trị truy xuất được trong thanh ghi nguồn rs cùng với giá trị số nguyên được mở rộng dấu từ 16bit thành 32bit sẽ được đưa vào khối ALU để thực hiện tác vụ tương ứng
Đối với các lệnh chuyển dữ liệu thì giá trị truy xuất được ghi trong thanh ghi địa chỉ nền (rs) cùng với độ dời sau khi mở rộng dấu từ 16bit thành 32bit sẽ được đưa vào khối ALU để tính toán giá trị toán hạng bộ nhớ → thanh ghi rs đều được sử dụng để truy xuất tập thanh ghi
Trang 25Giai đoạn truy xuất bộ nhớ
Trang 26Giai đoạn này chỉ được thực hiện đối với các lệnh chuyển dữliệu đối với các lệnh ghi bộ nhớ thì cần cung cấp cho haitham số cho khối bộ nhớ dữ liệu là địa chỉ ô nhớ sẽ ghi dữliệu và giá trị sẽ ghi vào các ô nhớ thông qua hai ngõ vào làĐịa chỉ và Dữ liệu vào của khối bộ nhớ dữ liệu.
Đối với các lệnh đọc dữ liệu thì cần cung cấp cho
bộ nhớ dữ liệu địa chỉ của ô nhớ truy xuất giá trị,địa chỉ này cũng được tính toán như cách tính địachỉ đối với các lệnh ghi dữ liệu
Trang 27Giai đoạn cập nhật kết quả
Trang 28Có 2 nguồn dữ liệu để cập nhật vào thanh ghi đích này:
Các lệnh số học, lệnh so sánh, lệnh luận lý thì dữ liệu được dùng để cập nhật giá trị thanh ghi đích là giá trị
tính toán được ở khối ALU.
Lệnh đọc dữ liệu thì dữ liệu được dùng để cập nhật giá trị thanh ghi đích
là giá trị truy xuất được từ bộ nhớ dữ
liệu.
Trang 29Hoàn chỉnh đường dữ liệu
Trang 304.4.2 Xây dựng bộ điều khiển
1) Xác định các trường của lệnh
Trang 31- Trong cả 3 loại lệnh R,I,J ta có thể thấy rằng trường biểu diễn chỉ sốthanh ghi rs luôn có vị trí bit 25:21 trong khi rt là 20:16
- Thanh ghi rs là thanh ghi nguồn thứ nhất đối với lệnh R và
lệnh rẽ nhánh có điều kiện còn lệnh chuyển dữ liệu thì thanh
ghi rs là thanh ghi chứa địa chỉ nền các bit có vị trí 25:21
được trích xuất từ 32 bit lệnh đọc được từ bộ nhớ lệnh sẽ được
đưa vào ngõ vào khác nguồn 1 của tập ghi
Kết luận: bộ điều khiển cần phải có tám ngõ ra khác nhau đểlần lượt điều khiển các tín hiệu: Đích, Nguồn ALU, Nguồn
PC, Chọn dữ liệu ghi là các tín hiệu điều khiển cho các khốiMUX và Ghi thanh ghi, Đọc bộ nhớ, Ghi bộ nhớ và Hành viALU
Trang 322) Bộ điều khiển
Trang 33VD: Giả sử bộ xử lý đang thực thi lệnh ở địa chỉ 0x00001004
Trang 34Bởi vì lệnh trên là lệnh dạng R và thực hiện phép cộng hai giá trịtrong hai thanh ghi và lưu kết quả vào thanh ghi đích nên các bướcthực hiện lệnh trên được làm qua các giai đoạn sau:
1)Giai đoạn đọc lệnh
2)Giai đoạn giải mã lệnh
3)Giai đoạn thực thi lệnh
4)Giai đoạn truy xuất bộ nhớ (không tham gia)
5)Giai đoạn cập nhật kết quả
Trang 351.Giai đoạn đọc lệnh: Lệnh ở địa chỉ là 0x00001004 được đọc lên từ
bộ nhớ lệnh và kết quả của phép cộng thanh ghi PC với 4 sẽ là 0x00001008
1 Giai đoạn giải mã lệnh: Ở giai đoạn này trường opcode của lệnh
sẽ được xử lý bởi điều khiển để sinh ra giá trị cho tín hiệu điều khiển.
Vì lệnh đang thực thi là lệnh R nên chỉ số hai thanh ghi là rs và rt sẽ được đưa vào tập thanh ghi qua hai ngõ là #nguồn1 và #nguồn2 thông qua các bit ở vị trí lần lượt là 25:21 và 20:16 trích xuất từ lệnh đọc được ở bộ nhớ lệnh.
Kết quả ở giai đoạn này sẽ là giá trị đang chứa trong hai thanh ghi s1 và s2 lần lượt là 8 và 9 được đưa ra khỏi tập thanh ghi thông qua ngõ Dữ liệu 1 và Dữ liệu 2
Trang 363 Giai đoạn thực thi lệnh: Khối ALU thực hiện phép cộng hai giá trịđược đưa ra từ tập thanh ghi, giá trị ở ngõ ra Dữ liệu 1 của tập thanhghi được đưa vào ngõ vào toán hạng 1 của khối ALU trong khi ngõvào Tán hạng 2 sẽ được kết nối đến nối đến ngõ ra Dữ liệu 2 của tậpthanh ghi thông qua khối MUX có tín hiệu điều khiển là nguồn ALU
4 Giai đoạn cập nhật kết quả: Kết quả tính toán của khối ALU sẽđược đưa về tập thanh ghi tại ngõ vào Dữ liệu ghi thông qua khốiMUX có tín hiệu điều khiển Chọn DL ghi để cập nhật thanh ghi St0
Trang 374.4.4 Hiện thực lệnh rẽ nhánh không điều kiện
Mặc dù mô hình ở trên đã có thể thực thi lệnh nhưng với lệnh
rẽ nhánh không điều kiện thì vẫn chưa được hổ trợ Để thực hiệnlệnh này ta cần xem xét lại định dạng và cách thức hoạt động củalệnh (nó thuộc định dạng J)
Lệnh loại J thực hiện rẽ nhánh lập tức đến lệnh có địa chỉ là
sự kết nối 4 bit cao của giá trị PC + 4 và 28 bit của giá trị address x
4 mà không cần thực hiện bất kì lệnh nào
Trang 394.5 Xây dựng bộ xử lý theo mô hình xử lý ống
4.5.1 Minh họa mô hình xử lí ống
Mô hình tuần tự
+ A bắt đầu giặc ủi B bắtđầu giặc ủi C bắt đầugiặc ủi D bắt đầu giặc ủi+ Trải qua 4 giai đoạn (giặc,sấy, ủi, cất) mất 4 giờ/1người 16 giờ đồng hồ đểhoàn thành
Trang 40- +
Mô hình xử lý ống
- Sau khi A vừa kết thúc việc
giặc và bắt đầu việc sấy thì
máy giặc đang trống B có
thể sử dụng máy giặc trong
khi A đang sấy Mọi thứ cứ
diễn ra thay phiên liên tục
như vậy.
Hoàn thành việc giặc ủi
trong 7 giờ thay vì 16 giờ như
quy trình tuần tự
Trang 41 So với mô hình tuần tự thì thời gian hoàn thành tất cả các tảicủa mô hình xử lý ống là nhanh hơn Một cách tổng quát, khi sốlượng tải đủ lớn và thời gian thực thi các công việc trong 1 quytrình là như nhau thì thời gian hoàn thành các tải của mô hình xử
lý ống sẽ nhanh hơn mô hình tương tự n lần
Trang 42- Giai đoạn đọc lệnh (IF) : Đọc lệnh từ bộ nhớ lệnh
- Giai đoạn giải mã lệnh (ID) : Giải mã lệnh và truy suất các thanh ghi
- Giai đoạn thực thi lệnh (EX): Thực thi tác vụ của lệnh hoặc tính toán địa chỉ bộ nhớ
- Giai đoạn truy suất bộ nhớ (MEM): Truy suất toán hạng bộ nhớ
- Giai đoạn cập nhật kết quả (WB): Cập nhật giá trị thanh ghi trong tập thanh ghi
Trang 434.5.2 Vấn đề hiệu suất của mô hình đơn giản đơn chu kỳ
Độ tăng tốc = 𝑻𝒉ờ𝒊 𝒈𝒊𝒂𝒏 𝒈𝒊ữ𝒂 𝒍ệ𝒏𝒉 (Đơ𝒏 𝒄𝒉𝒖 𝒌ỳ)
𝑻𝒉ờ𝒊 𝒈𝒊𝒂𝒏 𝒈𝒊ữ𝒂 𝟐 𝒍ệ𝒏𝒉 (𝑿ử 𝒍ý ố𝒏𝒈)
Trang 44- Mô hình đơn chu kỳ mất 2400ps để hoàn thành 3 lệnh đọc dữ liệu
Trang 45Note : Thời gian chu kỳ bằng thời gian thực thi lệnh dài nhất
Trang 46- Nạp 1 từ dữ liệu bộ nhớ (Load Word – lw) vào thanh ghi
Trang 474.5.3 Xây dựng đường dữ liệu:
- Gồm 3 lệnh:
- B1 : Lệnh đọc thứ nhất
được thực thi
- B2: Lệnh đọc thứ 2 được
thực thi trong khi tập
thanh ghi đang thực thi
lệnh đọc thứ 1
- B3 : Tương tự, Lệnh đọc
thứ 3 được thực thi, trong
khi tập thanh ghi đang
thực thi lệnh đọc thứ 2
Trang 48- BNL : Khối bộ nhớ lệnh
- TTG : Tập thanh ghi
- BNDL : Bộ nhớ dữ liệu
- ALU : Thực hiện tác vụ tương ứng với lệnh đang thực hiện
Khi áp dụng mô hình xử lý ống cho kiến trúc MIPS, lệnh và
dữ liệu cũng phải được giữ cục bộ và không đổi trong suốt chu
kỳ để các khối chức năng có thể tính toán trên dữ liệu chính xáccủa chu kỳ đó Vì vậy , cần phải đặt thanh ghi ở trược các giaiđoạn để bảo đảm rằng dữ liệu đầu vào cho từng giai đoạn sẽkhông bị ảnh hưởng bởi dữ liệu ngõ ra của các giai đoạn phíatrước nó
Trang 494.5.4 Xây dựng các tín hiệu điều khiển
Trang 501.Giai đoạn đọc lệnh:
2 Giai đoạn giải mã lệnh:
Không cần bất kỳ tín hiệu điều khiển nào, lệnh chỉ đang được đọc lên
từ bộ nhớ lệnh
Là giai đoạn khối điều khiển căn cứ vào lệnh đọc được từ bộ nhớ lệnh
để sinh ra giá trị các tín hiệu điều khiển tương ứng
Trang 513 Giai đoạn thực thi lệnh:
Có 3 tín hiệu điều khiển (4bit) sẽ được sử dụng trong giai đoạn thựcthi lệnh
- Nguồn ALU
- Đích
- Hành vi ALU
Trang 524 Giai đoạn truy xuất bộ nhớ:
Dùng tín hiệu điều khiển rẽ nhánh
5 Giai đoạn cập nhật kết quả:
Sử dụng hai kết quả điều khiển
- Chọn DL ghi
- Ghi thanh ghi
Trang 544.5.5 Các rủi ro trong mô hình xử lý ống
- Có ba dạng rủi ro khác nhau:
+ Rủi ro về cấu trúc (structural hazard)+ Rủi ro về dữ liệu (data hazard)
+ Rủi ro về điều khiển (control hazard
- Rủi ro về cấu trúc: xảy ra khi tài nguyên cần dùng để tính toán hay xử
lý cho một giai đoạn nào đó chưa sẵn sàng để phục vụ cho giai đoạn đó
- Rủi ro về dữ liệu: xảy ra khi quá trình xử lý ống không thể tiếp tụcthực thi do một giai đoạn nào đó cần phải chờ giai đoạn khác hoàn thành
và cung cấp dữ liệu để tiến hành xử lý
Trang 55- Rủi ro về điều khiển: xảy ra khi bộ xử lý không biết chắc chắnrằng lệnh nào sẽ được thực thi tiếp theo Chỉ xảy ra khi bộ xử lývừa đọc lệnh rẽ nhánh có điều kiện.
- Giá trị cuối cùng chứa trong thanh ghi PC lên 4 hay cập nhật lạibằng địa chỉ đích của lệnh rẽ nhánh Do rủi ro về điều khiển chỉxảy ra đối với lệnh rẽ nhánh có điều kiện nên nó còn được gọi làrủi ro về rẽ nhánh
Trang 564.5.6 Giải quyết rủi ro về dữ liệu
- Có 3 phương pháp giải quyết rủi ro về dữ liệu
+ Phương pháp sắp xếp lại thứ tự các lệnh+ Phương pháp chựng lại
Trang 572 Phương pháp chựng lại
- Phương pháp chựng lại giải quyết được tất cả các rủi ro về dữ liệubằng cách dừng sự thực thi của ống lệnh lại cho đến khi không còn rủi
ro về dữ liệu
- Giai đoạn giải mã lệnh của lệnh sử dụng dữ liệu trùng hoặc trễ hơn
so với giai đoạn cập nhật kết quả của lệnh sinh ra dữ liệu
- So với phương pháp sắp xếp lại các lệnh thì phương pháp chựng lạigiải quyết được triệt để tất cả các rủi ro về dữ liệu Hai nhược điểmchính của phương pháp này là làm tăng thời gian thực thi do phải trìhoãn một số chu kì nhất định và cần thêm tài nguyên phần cứng đểkiểm tra các rủi ro về dữ liệu
Trang 583 Phương pháp xúc tiến sớm
Là phương pháp sử dụng dữ liệu ngay khi nó được sinh ra thay vìphải chờ cho đến khi dữ liệu được cập nhật vào tập thanh ghi rồi lạiđọc ra từ tập thanh ghi
Sub $s2, $s1, $s3And $s7, $s2, $s5
Or $s8, $s6, $s2Add $s0, $s2, $s2
Sw $15, 100($2)
Trang 60- Cũng giống như phương phápchựng lại, phương pháp xúc tiếnsớm cần phải có những khối phầncứng giúp nhận diện các rủi ro về
dữ liệu
- Khác với phương pháp chựng lại,phương pháp xúc tiến sớm khônglàm giảm hiệu suất ống lệnh vì cáclệnh được thực thi liên tục màkhông cần phải trì hoãn như trongphương pháp chựng lại
Trang 614.5.7:Hiện thực phương pháp xúc tiến sớm giải quyết rủi ro về
dữ liệu:
phương pháp xúc tiến sớm và phương phápchựng lại cần phải có thêm các khối phần cứng đểphát hiện rủi ro về dữ liệu và thực hiện truy xuất
dữ liệu cần thiết trong các thanh ghi giai đoạn đểthay thế giá trị truy xuất từ Tập thanh ghi
Trang 62HIỆN THỰC PHƯƠNG PHÁP XÚC TIẾN SỚM:
có hai trường hợp mà dữ liệu trong thanh ghi giaiđoạn được dùng để thay thế dữ liệu đọc được từ tậpthanh ghi Một là từ thanh ghi giai đoạn EX/MEM
và một là từ thanh ghi giai đoạn MEM/WB.để dễdàng phân tích và hiện thực hai trường hợp này đượcđặt tên là RỦI RO VỀ DỮ LIỆU THỰC THI và RỦI
RO VỀ DỮ LIỆU TRUY XUẤT BỘ NHỚ
4.5.7:Hiện thực phương pháp xúc tiến sớm giải quyết rủi ro về
dữ liệu:
:
Trang 63HIỆN THỰC PHƯƠNG PHÁP XÚC TIẾN SỚM
1.rủi ro về dữ liệu thực thi
2.rủi ro về dữ liệu truy xuất bộ nhớ
4.5.7:Hiện thực phương pháp xúc tiến sớm giải quyết rủi ro về
dữ liệu:
:
Trang 641.Rủi ro về dữ liệu thực thi: là trường hợp lệnh sử dụng dữ liệu ởgiai đoạn thực thi trong khi lệnh sinh ra dữ liệu vừa hoàn thànhgiai đoạn thực thi và đang ở trong giai đonạ truy xuất bộ nhớ.dữliệu được lấy từ thanh ghi giai đonạ EX/MEM thay thế dữ liệuđọc được từ tập thanh ghi.
2.Rủi ro về dữ liệu truy xuất bộ nhớ: là trường hợp lệnh sử dụng
dữ liệu ở giai đoạn thực thi trong khi lệnh sinh ra dữ liệu vừahoàn thành giai đoạn truy xuất bộ nhớ và đang ở trong giai đoạncập nhật kết quả.dữ liệu được lấy từ thanh ghi giai đonạMEM/WB để thay thế dữ liệu đọc được từ tập thanh ghi
4.5.7:Hiện thực phương pháp xúc tiến sớm giải quyết
rủi ro về dữ liệu: