You are on page 1of 76

CHƯƠNG 4:

BỘ XỬ LÝ
4.1 GIỚI THIỆU

4.2 MÔ HÌNH THỰC THI LỆNH

4.3 CÁC THÀNH PHẦN CƠ BẢN


CỦA 1 BỘ XỬ LÝ
4.1. Giới thiệu
Chương 4 sẽ trình bày 2 dạng hiện thực khác nhau của máy tính
theo kiến trúc MIPS. Cách hiện thực thứ nhất khá đơn giản khi mà ở
đó mỗi lệnh sẽ được hoàn thành trong 1 chu kì xung nhịp. Tuy
nhiên, nếu thực hiện cách này tuy đơn giản nhưng hiệu suất không
cao và chỉ mang tính chất tham khảo. Cách thực hiện thứ 2 là cách
hiện thực được sử dụng nhiều trong thực tế hơn, đó là cách thực
hiện theo cơ chế ống (pipeline), do đó hiệu suất của cách thực hiện
theo cơ chế xử lí ống sẽ cao hơn so với cách hiện thực theo mô hình
đơn giản.
4.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)


4.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ác
nhau 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ối
chức năng tham gia vào tính toán khá tương tự nhau. Đây
chính là quy tắc “sự đơn giản tạo nên tính quy tắc” trong kiến
trúc MIPS
4.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


4.3. Các thành phần cơ bản của một bộ xử lý

Quá trình thực thi các lệnh MIPS dù theo mô hình đơn giản
hay mô hình xử lí ống thì bộ xử lý theo kiến trúc MIPS
cũng sẽ cần những thành phần cơ bản bao gồm: bộ nhớ
lệnh, tập thanh ghi, khối ALU và bộ nhớ dữ liệu.
4.3. Các thành phần cơ bản của một bộ xử lý
4.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.1. Đường dữ liệu
Bộ nhớ
lệnh

Khối Đường Tập thanh


ALU dữ liệu ghi

Bộ nhớ dữ
liệu
4.3.1. Đường dữ liệu
- Bộ nhớ lệnh:

Bộ nhớ lệnh là nơi chứa


toàn bộ các lệnh của chương
trì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ưu
trữ mà bộ xử lí đó đang sử
dụng (lite/big endian).
4.3.1. Đường dữ liệu
- Tập thanh ghi:

Tập thanh ghi trong kiến


trúc bộ xử lí MIPS là nơi
chứa tất cả 32 thanh ghi đa
dụng của MIPS.
4.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 được
lư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ến
trúc bộ xử lí đang sử dụng
bộ nhớ.
4.3.1. Đường dữ liệu
- Khối ALU:

Khối ALU sẽ thực hiện các


phép toán số học và so
sánh để phục vụ các lệnh
số học, lệnh luận lý, lệnh
truy xuất dữ liệu, lệnh rẽ
nhánh có điều kiện và lệnh
so sánh
4.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ực
thi và sinh ra các tín hiệu để điều khiển hoạt động của các
khố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.
4.3.2. Bộ điều khiển
4.4 Xây dựng mô hình xử lý theo mô hình đơn giản

► Mô hình bộ xử lý đơn giản (mô hình đơn chu kỳ - single-cycle) đặt


mục tiêu thiết kế sao cho tất cả các lệnh đều phải được hoàn thành
trong 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à: đọc
lệ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.1 Xây dựng đường dữ liệu

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ớ
5)Giai đoạn cập nhật kết quả
6)Hoàn chỉnh đường dữ liệu
Giai đoạn đọc lệnh
Giai đoạn đọc lệnh thì giá trị của thanh ghi PC được
Đồng
Sau
đưakhi
thời
vàobộbộ thanh
nhớ lệnh
nhớ
ghi
thực
lệnh
PC
để thi
được
truyviệc
lên
truy
xuất
4chuẩn
đểlệnh
xuất
lệnh
chứa
bịtạiđược
địa chỉ
địathực của
chỉ thi
được lệnh
cung
hiện chuẩnbởibị
cấpđược
đang lưuđược
thanhtrữghithực
PC bộ
trong thinhớ
thì tiếp
lệnh lệnh
(có kích thước 32 theo
bit) được đưa ra ngoài
Giai đoạn giải mã lệnh
Giai đ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
Giai đoạn thực thi lệnh
Sẽ 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
Giai đoạn truy xuất bộ nhớ
Giai đ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 hai
tham 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 địa
chỉ đối với các lệnh ghi dữ liệu.
Giai đoạn cập nhật kết quả
nhật vào thanh ghi đích này:
Có 2 nguồn dữ liệu để cập
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.
Hoàn chỉnh đường dữ liệu
4.4.2 Xây dựng bộ điều khiển
1) Xác định các trường của lệnh
- 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ối
MUX và Ghi thanh ghi, Đọc bộ nhớ, Ghi bộ nhớ và Hành vi
ALU.
2) Bộ điều khiển
VD: Giả sử bộ xử lý đang thực thi lệnh ở địa chỉ 0x00001004
Bở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ước thự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ả
1.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
3. 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 thanh
ghi đượ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ập
thanh 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ối
MUX có tín hiệu điều khiển Chọn DL ghi để cập nhật thanh ghi St0.
4.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ện
lệnh này ta cần xem xét lại định dạng và cách thức hoạt động của
lệ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.
4.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

+ A bắt đầu giặt ủi  B bắt


đầu giặc ủi  C bắt đầu
giặ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ờ/1
người  16 giờ đồng hồ để
hoàn thành

Mô hình tuần tự
- 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ặt 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ặt ủi
trong 7 giờ thay vì 16 giờ như
quy trình tuần tự

Mô hình xử lý ống
 So với mô hình tuần tự thì thời gian hoàn thành tất cả các tải
củ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 quy
trì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
- 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
4.5.2 Vấn đề hiệu suất của mô hình đơn giản đơn chu kỳ

Độ tăng tốc =
- Mô hình đơn chu kỳ mất 2400ps để hoàn thành 3 lệnh đọc dữ liệu
- Mô hình xử lý ống chỉ mất 1400ps.
 Do đó Độ tăng tốc của mô hình xử lý ống so với mô hình đơn chu
kỳ là hơn 1.7 lần (2400/1400)
 Mô hình xử lí ống giúp cải thiện hiệu suất hệ thống bằng cách gia
tăng lưu lượng lệnh được thực thi.
Note : Thời gian chu kỳ bằng thời gian thực thi lệnh dài nhất
Chu kỳ : 800ps
Chu kỳ cho các lệnh 200ps
Giả sử có 1.000.000 lệnh
+ Thời gian thực thi mô hình đơn chu kỳ :
800 x 1.000.000 =800.000.000ps
+ Thời gian thực thi mô hình xử lý ống
1.000.000 x 200 +4 x 200 = 2.000.800ps
Vậy Mô hình xử lý ống giúp cải thiện hiệu suất hệ thống
bằng cách gia tăng lưu lượng lệnh được thực thi
Cấu trúc lệnh trong MIPS

- Nạp 1 từ dữ liệu bộ nhớ (Load Word – lw) vào thanh ghi


Ví dụ : lw $s1, 10 ( $s0 )
- Lưu 1 từ dữ liệu thanh ghi (Store Word – sw) vào bộ nhớ
Ví dụ : sw $t0, 12 ($s0)
- Lệnh cộng (Add)
Ví dụ : $s0, $s1, $s2
- Lệnh trừ (Subtract – Sub)
Ví dụ : $s3, $s4, $s5
4.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
- 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ác
củ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ía
trước nó
4.5.4 Xây dựng các tín hiệu điều khiển
1.Giai đoạn đọc 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.

2. Giai đoạn giải mã 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.
3. 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ực
thi lệnh
- Nguồn ALU
- Đích
- Hành vi ALU
4. 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
4.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ục
thự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ý.
- Rủi ro về điều khiển: xảy ra khi bộ xử lý không biết chắc chắn
rằ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ại
bằ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.
4.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
+ Phương pháp xúc tiến sớm

1. Phương pháp sắp xếp lại thứ tự các lệnh


- Là phương pháp được thực hiện bởi trình biên dịch trong quá trình
biên dịch chương trình mà không cần bất kỳ sự hỗ trợ phần cứng nào.
=> Nếu hai lệnh có quan hệ dữ liệu với nhau và giữa chúng có ít nhất
hai lệnh độc lập dữ liệu với chúng thì hai lệnh quan hệ dữ liệu này sẽ
không có rủi ro về dữ liệu.
2. 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ệu
bằ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ại
giải quyết được triệt để tất cả các rủi ro về dữ liệu. Hai nhược điểm
chí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.
3. 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, $s3
And $s7, $s2, $s5
Or $s8, $s6, $s2
Add $s0, $s2, $s2
Sw $15, 100($2)
- Cũng giống như phương pháp
chựng lại, phương pháp xúc tiến
sớm cần phải có những khối phần
cứ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ông
làm giảm hiệu suất ống lệnh vì các
lệnh được thực thi liên tục mà
không cần phải trì hoãn như trong
phương pháp chựng lại.
  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:

Như đã trình bày ở phần trước, phương pháp xúc


tiến sớm và phương pháp chự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.
 
  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:
HIỆ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ập
thanh 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:

: 1.rủi ro về dữ
HIỆN liệu thực thi
THỰC
PHƯƠNG
PHÁP
XÚC TIẾN
SỚM 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:
1.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ành giai đ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ừa
hoàn thành giai đoạn truy xuất bộ nhớ và đang ở trong giai đoạn
cậ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:
Để tồn tại một
Lệnh sử dụng dữ liệu phải đang ở
rủi ro về dữ giai đoạn thực thi lệnh vì giai đoạn
liệu thì cần này lệnh sử dụng dữ liệu thực sự
phải có hai dùng dữ liệu tính toán.
lệnh có quan
hệ dữ liệu với Lệnh sinh ra dữ liệu phải vừa
nhau và hai hoàn thành giai đoạn thực
lệnh này phải thi lệnh hoặc vừa hoàn thành giai
đoạn truy xuất bộ nhớ.
thỏa mãn hai
điều kiện:
Xây dựng khối điều khiển “xúc tiến sớm”

-Khi xuất hiện rủi ro về dữ liệu thực thi thì giá trị ngĩ vào TOÁN HẠNG 1
hoặc TOÁN HẠNG 2 của khối ALU sẽ được thay thế bằng giá trị truy xuất
từ thanh ghi giai đoạn EX/MEM.do đó,nhiệm vụ của khối xúc tiến sớm là
sinh ra tín hiệu điều hiển F1 hoặc F2 tương ứng để hai khối MUX được điều
khiển bởi hai tín tín hiệu này lựa chọn chính xác tín hiệu cho các ngõ vào của
khối ALU.

-Hai khối MUX được điều khiển bởi hai tín hiệu F1 và F2 có tất cả ba ngỏ
vào lần lượt là giá trị đọc được từ tập thanh ghi,giá trị truy xuất từ thanh ghi
giai đoạn EX/MEM và giá trị truy xuất từ thanh ghi giai đoạn MEM/WB.để
có thể xây dựng khối xúc tiến sớm,các quy ước về tín hiệu điều khiển F1 và
F2 như bảng sau sẽ được sử dụng:
Xây dựng khối điều khiển “xúc tiến sớm”

Giá trị tín hiệu Nguồn Giải thích


F1=002 ID/EX Giá trị ngõ vào toán hạng 1 của khối ALU có
từ tập thanh ghi

F1=012 EX/MEM Giá trị ngỏ vào toán hạng 1 của khối ALU là
ngỏ ra của khối ALU ở chu kì trước

F1=102 MEM/WB Giá trị ngỏ vào toán hạng 1 của khối ALU là
ngõ ra của khôi ALU ở hai chu kì trước hoặc
giá trị từ ngỏ ra của bộ nhớ dữ liệu ở chu kì
trước
F2=002 ID/EX Giá trị ngõ vào 0 của khối MUX trước ngỏ
vào toán hạng 2 của khối ALU có từ tập
thanh ghi
4.5.9: Giải quyết rủi ro về điều khiển:
Rủi ro về điều khiển xảy ra khi bộ xử lý thực thi các lệnh rẻ nhánh có
điều kiện chưa xác định được lệnh tiếp theo sẽ thực thi là lệnh nào
trong hai lệnh:
(1): ngay sau lệnh rẻ nhánh có điều kiện tức là điều kiện rẻ nhánh
không đúng và thanh ghi PC sẽ được tăng lên lệnh 4.
(2): lệnh ở địa chỉ đích của lệnh rẻ nhánh, tức là điều kiện rẻ nhánh
đúng và thanh ghi PC
-Để tiến hành trì hoản sự thực thi của bộ xử lý cần tiến hành hai công
việc lần lượt là:
(1) dừng các giai đoạn còn lại của lệnh sử dụng dữ liệu bằng cách
gán tất cả cá tín hiệu điều khiển tương ứng của lệnh này là 0.
(2) giữ nguyên giá trị thanh ghi PC và thanh ghi giai đoạn IF/ID.
Đường dữ liệu và các tín hiệu điều khiển kiến trúc MIPS theo mô hình xử lý ống thực hiện
phương pháp Chựng lại để giải quyết rủi ro về dữ liệu do lệnh đọc
Trong kiến trúc trên,khối kiểm tra rủi ro sẽ có các tín hiệu ngỏ vào:

- Tín hiệu điều khiển ID/EX.đọc bộ nhớ dùng để xác định lệnh ở giai
đoạn thực thi lệnh có phải là lệnh đọc bộ nhớ hay không.
- Chỉ số thanh ghi ID/EX.rt là thanh ghi đích của lệnh đọc bộ nhớ.
- Chỉ số thanh ghi nguồn thứ nhất IF/ID.rs và Chỉ số thanh ghi nguồn
thứ hai IF/ID.rt của lệnh đang thực thi ở giai đoạn mã lệnh.
- Nếu tồn tại một rủi ro về dữ liệu do lệnh đọc thì khối kiểm tra rủi ro
sẽ tạo ra giá trị 1 tại ngõ ra rủi ro để cho phép khối MUX được điều
khiển bởi nó gán giá trị 0 cho tất cả các tín hiệu điều khiển ở các giai
đoạn sau của lệnh đang ở giai đoạn giải mã lệnh.
Như vậy, rủi ro về dữ liệu đã được giải quyết triệt để bằng
cách kết hợp cả hai phương pháp là XÚC TIẾN và CHỰNG
LẠI.rủi ro cuối cùng tồn tại trong quá trìnhxử lý ống đối với
kiến trúc MIPSlà rủi ro về điều khiển.rủi ro này sẽ được
giải quyếtcũng như làm giảm thiểu ảnh hưởng trong phần
tiếp theo.
4.5.9: Giải quyết rủi ro về điều khiển:
A:Phương pháp tiên đoán:
- Phương pháp này sẽ phần nào làm giảm thiểu ảnh số chu kỳ cần phải chựng lại.
- Phương pháp này cũng làm giảm ảnh hưởng việc trì hoãn sự thực thi lệnh tiếp theo
trong trường hợp xảy ra rủi ro về điều khiển.
- Phương pháp này sẽ giả sử rằng lệnh rẻ nhánh sẽ có điều khiện rẽ nhánh đúng
(hoặc giả sử điều khiện rẽ nhánh sai) để ngay lập tức đọc và thực thi lệnh tiếp
theo thay vì thực hiện chựng lại.
- Trong trường hợp việc tiên đoán là đúng thì quá trình thực thi tiếp tục diễn ra bình
thường, ngược lại nếu việc tiên đoán là sai thì ba lệnh đang được thực thi do việc
tiên đoán sai gây ra xóa và tiến hành thực thi lại lệnh đúng.
4.5.9: Giải quyết rủi ro về điều khiển:
A: Phương pháp tiên đoán:

Có 2 phương pháp tiên đoán:

phương pháp tiên đoán tĩnh

phương pháp tiên đoán động


4.5.9: Giải quyết rủi ro về điều khiển:
A:Phương pháp tiên đoán:

Có 2 phương pháp tiên đoán:


- Phương pháp tiên đoán tĩnh: là phương pháp luôn tiên đoán lệnh rẽ nhánh sẽ
xảy ra hoặc ngược lại luôn tiên đoán lệnh rẽ nhánh không xảy ra. Nhược điểm,
là đối với các vòng lặp việc tiên đoán không rẽ nhánh không xảy ra sẽ gây ra
hàng loạt các tiên đoán sai.
- Phương pháp tiên đoán động: sẽ căn cứ vào lịch sử các lệnh rẽ nhánh trước đó
mà quyết định xem sẽ thực hiện tiên đoán lệnh rẻ nhánh đang thực thi là xảy ra
hay không xảy ra để thưc hiện phương pháp này cần phải có thêm 1 khối chức
năng để lưu lại hành vi thực sự của các lệnh rẽ nhánh trong quá khứ gọi là
BỘ ĐỆM TIÊN ĐOÁN RẼ NHÁNH.
4.5.9: Giải quyết rủi ro về điều khiển:
A:Phương pháp tiên đoán:

- Mặc dù phương pháp tiên đoán rẽ nhánh giúp làm giảm thời gian xử lý
trong trường hợp tiên đoán chính xác,nhưng phương pháp này vẫn cần ống
lệnh chựng lại ba chu kỳ trong trường hợp tiên đoán sai.
- Việc chựng lại này sẽ làm giảm thiểu suất của bộ xử lý.
- Trong trường hợp nếu việc tiên đoán lệnh rẽ nhánh là sai thì chỉ cần xóa đi
một lệnh ngay sau lệnh rẽ nhánh thay vì ba lệnh như trước đây khi thực hiện
việc cập nhật thanh ghi PC trong giai đoạn truy xuất bộ nhớ.
 
Đường dữ liệu và các tín hiệu điều khiển kiến trúc MIPS theo mô hình xử lý ống thực hiện
phương pháp làm giảm ảnh hưởng của rủi ro về điều khiển
4.5.9: giải quyết rủi ro về điều khiển:
B: Làm giảm ảnh hưởng của rủi ro về điều khiển:
Trong bộ xử lý MIPS này:
- Khối so sánh bằng được thực hiện ngay tại ngõ ra dữ liệu của khối tập thanh ghi
nhằm so sánh hai giá trị truy xuất được từ tập thanh ghi.
- Ngõ ra của khối so sánh bằng này được dung để điều khiển việc cập nhật địa chỉ
đích của lệnh rẽ nhánh vào thanh ghi PC thay cho tín hiệu ZERO tại khối ALU.
- Tín hiệu ngõ ra của khối so sánh bằng được dung để khối điều khiển quyết định
xem việc tiên đoán rẽ nhánh là đúng hay sai.
- Nếu việc tiên đoán lệnh rẻ nhánh là sai thì tín hiệu IF.Flush sẽ được tích cực và
thanh ghi giai đoạn IF/ID sẽ bị xóa.
- Việc xóa giá trị thanh ghi IF/ID này chính là quá trình làm ống lệnh chựng lại
một chu kì.

You might also like