Professional Documents
Culture Documents
BỘ XỬ LÝ
4.1 GIỚI THIỆU
- Tất cả các lệnh khi được thực thi đều có hai giai đoạn:
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ý
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
Bộ nhớ dữ
liệu
4.3.1. Đường dữ liệu
- Bộ nhớ lệnh:
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
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.
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
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
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
: 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”
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:
- 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ì.