You are on page 1of 42

KiÕn tróc m¸y tÝnh

Ch−¬ng 4
KIẾN TRÚC RISC & KỸ THUẬT
ỐNG DẪN

ThS Nguyễn Tường Thành -


10/8/2012 Trường Đại học Quy Nhơn 1
Néi dung bµi gi¶ng

 Ch−¬ng 1: Giíi thiÖu chung


 Ch−¬ng 2: BiÓu diÓn DL & sè häc m¸y tÝnh
 Ch−¬ng 3: Bé xö lý
 Ch−¬ng 4:KiÕn tróc RISC&kỹ thuật ống
dẫn
 Ch−¬ng 5: HÖ thèng nhí
 Ch−¬ng 6: HÖ thèng vµo/ra,thiết bị ngoại vi
 Ch−¬ng 7: Ngăn xếp và chương trình con
2
Néi dung ch−¬ng 4

 Giíi thiÖu chung vÒ kiÕn tróc RISC:


 Kü thuËt èng dÉn:

3
Giới thiệu kiến trúc RISC

 Các kiến trúc với tập lệnh phức tạp CISC (Complex
Instruction Set Computer) được nghĩ ra từ những
năm 1960.

4
Giới thiệu kiến trúc RISC

 Các máy RISC dựa chủ yếu trên một tập


lệnh cho phép thực hiện kỹ thuật ống dẫn
một cách thích hợp nhất bằng cách thiết
kế các lệnh có chiều dài cố định, có dạng
đơn giản, dễ giải mã. Máy RISC dùng
kiểu thực hiện lệnh thanh ghi - thanh ghi.
Chỉ có các lệnh ghi hoặc đọc ô nhớ mới
cho phép thâm nhập vào ô nhớ. Truy
nhập bộ nhớ bằng lệnh LOAD/STORE
5
C¸c ®Æc tr−ng cña RISC

 Sè l−îng lÖnh Ýt, lÖnh cã ®é dµi cè ®Þnh.


 HÇu hÕt c¸c lÖnh truy nhËp to¸n h¹ng ë c¸c
thanh ghi. Tgian thùc hiÖn lÖnh 1 chu kú m¸y

6
Đặc trưng của RISC (tt)

Số lượng khuôn dạng lệnh là ít (<=4)


CPU có tập thanh ghi lớn.
Có ít mode địa chỉ <=4
Hỗ trợ các thao tác của ngôn ngữ bậc cao
Đều được thiết kế kiểu pipeline lệnh.

7
KỸ THUẬT ỐNG DẪN

 Đây là một kỹ thuật làm cho các giai


đoạn khác nhau của nhiều lệnh được thi
hành cùng một lúc.
 Các giai đoạn thực hiện một lệnh là: lấy
lệnh (IF:Instruction Fetch), giải mã (ID:
Instruction Decode), thi hành (EX:
Execute), thâm nhập bộ nhớ (MEM:
Memory Access), lưu trữ kết quả (RS:
Result Storing).
8
So sánh với kiểu xử lý tuần tự thông thường, 5 lệnh được
thực hiện trong 25 chu kỳ xung nhịp, thì xử lý lệnh theo
kỹ thuật ống dẫn thực hiện 5 lệnh chỉ trong 9 chu kỳ xung
nhịp.
Như vậy kỹ thuật ống dẫn làm tăng tốc độ thực hiện các
lệnh. 9
Tuy nhiên kỹ thuật ống dẫn có một số ràng buộc:
- Cần phải có một mạch điện để thi hành mỗi giai
đoạn của lệnh vì tất cả các giai đoạn của lệnh được
thi hành cùng lúc. Trong một bộ xử lý không dùng kỹ
thuật ống dẫn, ta có thể dùng bộ làm toán ALU để
cập nhật thanh ghi PC, cập nhật địa chỉ của toán hạng
bộ nhớ, địa chỉ ô nhớ mà chương trình cần nhảy tới,
làm các phép tính trên các toán hạng vì các phép tính
này có thể xảy ra ở nhiều giai đoạn khác nhau.

10
- Phải có nhiều thanh ghi khác nhau dùng cho các tác vụ đọc và viết.
- Trong một máy có kỹ thuật ống dẫn, có khi kết quả của một tác vụ
trước đó, là toán hạng nguồn của một tác vụ khác. Như vậy sẽ có
thêm những khó khăn mà ta sẽ đề cập ở mục tới.
- Cần phải giải mã các lệnh một cách đơn giản để có thể giải mã
và đọc các toán hạng trong một chu kỳ duy nhất của xung nhịp.
- Cần phải có các bộ làm tính ALU hữu hiệu để có thể thi hành lệnh
số học dài nhất, có số giữ, trong một khoảng thời gian ít hơn một
chu kỳ của xung nhịp.
- Cần phải có nhiều thanh ghi lệnh để lưu giữ lệnh mà chúng ta phải
xem xét cho mỗi giai đoạn thi hành lệnh.
- Cuối cùng phải có nhiều thanh ghi bộ đếm chương trình PC để có
thể tái tục các lệnh trong trường hợp có ngắt quãng.
11
Khó khăn trong kĩ thuật ống dẫn
2.1. Khó khăn do cấu trúc
Đây là khó khăn do thiếu bộ phận chức năng, ví dụ trong
một máy tính dùng kỹ thuật ống dẫn phải có nhiều ALU,
nhiều PC, nhiều thanh ghi lệnh IR ... Các khó khăn này được
giải quyết bằng cách thêm các bộ phận chức năng cần thiết
và hữu hiệu.
2.2. Khó khăn do số liệu:
Lấy ví dụ trường hợp các lệnh liên tiếp sau:
Lệnh 1: ADD R1, R2, R3
Lệnh 2: SUB R4, R1, R5
Lệnh 3: AND R6, R1, R7
Lệnh 4: OR R8, R1, R9
12
CHƯƠNG 4: KỸ THUẬT PIPELINING

13
CHƯƠNG 4: KỸ THUẬT PIPELINING

2.3. Khó khăn do điều khiển


Các lệnh làm thay đổi tính thi hành các lệnh một cách
tuần tự (nghĩa là PC tăng đều đặn sau mỗi lệnh), gây
khó khăn về điều khiển.
 Các lệnh này là lệnh nhảy đến một địa chỉ tuyệt đối
chứa trong một thanh ghi, hay lệnh nhảy đến một địa
chỉ xác định một cách tương đối so với địa chỉ hiện
tại của bộ đếm chương trình PC. Các lệnh nhảy trên
có thể có hoặc không điều kiện.

14
CHƯƠNG 3: KỸ THUẬT PIPELINING

3.1. Kỹ thuật Pipelining

3.2. Điều khiển Pipelining


CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.1. Tuần tự Von Neumann và Pipeline
* Cấu trúc tuần tự:
+ Thực hiện các lệnh một cách tuần tự.
+ 5 khâu :
- IF (Instruction Fetch) : Nhận lệnh
- ID (Instruction Decode) : Giải mã lệnh
- DF (Data Fetch) : Nhận dữ liệu
- EX (Execution) : Thực hiện lệnh
- DS (Data Save) : Lưu kết quả
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.1. Tuần tự Von Neumann và Pipeline
* Cấu trúc tuần tự:
+ Ví dụ:
- Giả sử mỗi lệnh thực hiện trong 1 chu kì τ
- Mỗi khâu thực hiện trong thời gian τ /5
- Với n lệnh :
Ttuần tự = τ *n
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.1. Tuần tự Von Neumann và Pipeline
* Cấu trúc tuần tự:
+ Hạn chế:
- Các lệnh được thực hiện liên tiếp nhau
- Lệnh trước thực hiện xong mới đến lệnh sau
- Xuất hiện khoảng thời gian rỗi (stall) giữa các khâu
Kỹ thuật pipeline được đưa ra để tận dụng những stall này,
từ đó tăng tốc độ cho vi xử lý
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.1. Tuần tự Von Neumann và Pipeline
* Cấu trúc Pipeline:
+ 5 khâu của một lệnh trong MIPS (Microprocessor without
Interlocked Pipeline Stages)

1. F (Fetch) : Nhận lệnh.


2. D (Decode) : Giải mã lệnh.
3. X (Execution) : Thực hiện lệnh.
4. M (Memory Access) : Truy nhập bộ nhớ.
5. W (Result Write Back) : Ghi kết quả
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.1. Tuần tự Von Neumann và Pipeline
* Cấu trúc Pipeline:
+ Mô hình Pipeline lý tưởng: thông lượng trung bình là 1 CPI
(Clock Cycle per Instruction)
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.1. Tuần tự Von Neumann và Pipeline
* Cấu trúc Pipeline:
+ Mô hình Pipeline lý tưởng: Tpipeline = τ + τ * (n-1)/m
- Tính toán:
Thời gian để thực hiện 1 công đoạn là τ /5.
Thời gian để thực hiện 1 lệnh là τ
Thời gian để thực hiện 2 lệnh là τ + τ /5
Thời gian để thực hiện 3 lệnh là τ + τ *2/5

Thời gian để thực hiện n lệnh là τ + τ *(n-1)/5
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.1. Tuần tự Von Neumann và Pipeline
* Định nghĩa Pipelining:
+ Kỹ thuật thực hiện lệnh trong đó các lệnh được thực hiện
theo kiểu gối đầu nhằm tận dụng những khoảng thời gian rỗi
(stalls) giữa các công đoạn (stages), qua đó làm tăng tốc độ
thực hiện lệnh của VXL.
+ Trong trường hợp không có xung đột có thể tăng tốc độ vi
xử lý lên 400%.
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.2. Xung đột (Hazard)
* Xung đột cấu trúc (Structural Hazard)
* Xung đột dữ liệu (Data Hazard)

* Xung đột điều khiển (Control Hazard)


CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.2. Xung đột (Hazard)
+ Xung đột cấu trúc: xảy ra khi có 2 lệnh cùng cố gắng sử
dụng cùng 1 nguồn tại cùng 1 thời điểm
- Khi 2 lệnh cùng ghi kết quả vào 1 thanh ghi:
ADD R1, R2, R3
SUB R1, R4, R5
- Khi cả 2 lệnh cùng truy cập vào 1 ô nhớ tại cùng một
thời điểm.
- Khi cả 2 lệnh cùng yêu cầu một bộ tính toán số học (bộ
cộng, bộ nhân, bộ chia).
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.2. Xung đột (Hazard)
+ Xung đột cấu trúc:
- Xung đột xảy ra khi
việc nạp lệnh và đọc
dữ liệu từ bộ nhớ diễn
ra cùng lúc

- Những kí hiệu “o” chèn vào tượng trưng cho chu kì trễ (stall
cycles) sẽ được sử dụng nếu ta sử dụng bộ nhớ đơn lưu trữ cả
lệnh vào dữ liệu
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.2. Xung đột (Hazard)
+ Xung đột cấu trúc:
- Khi cả stage X và D đều yêu cầu bộ cộng, mà chỉ có 1 bộ cộng
trong VXL
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.2. Xung đột (Hazard)
+ Xung đột dữ liệu:
- RAW (Read after Write):
Instruction 1: ADD R2, R1, R3 R2 <- R1 + R3
Instruction 2: ADD R4, R2, R3 R4 <- R2 + R3

I1 F D X M W
I2 F D X M W
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.2. Xung đột (Hazard)
+ Xung đột dữ liệu:
- WAR (Write after Read):
Instruction 1: ADD R1, R2, R3 R1 <- R2 + R3
Instruction 2: ADD R3, R4, R5 R3 <- R4 + R5

I1 F D X M W
I2 F D X M W
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.2. Xung đột (Hazard)
+ Xung đột dữ liệu:
- WAW (Write after Write)
Instruction 1: ADD R2, R1, R3 R2 <- R1 + R3
Instruction 2: ADD R2, R4, R7 R2 <- R4 + R7

I1 F D X M W
I2 F D X M W
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.2. Xung đột (Hazard)
+ Xung đột điều khiển:
- Control Hazard xảy ra khi có lệnh rẽ nhánh
- Khi lệnh rẽ nhánh được yêu cầu thực hiện, con trỏ bộ đếm
chương trình (PC) sẽ chuyển tới địa chỉ đích bằng cách cộng
thêm 4
 Nhảy tới đúng địa chỉ đích: rẽ nhánh Taken
 Trường hợp ngược lại gọi là nhánh Untaken.
- Khi lệnh i có nhánh taken thì PC sẽ không thay đổi như
bình thường tới hết khâu M (memory access)
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.1. Kỹ thuật Pipelining
3.1.2. Xung đột (Hazard)
+ Xung đột điều khiển:
- Phương pháp đơn giản nhất để khắc phục control hazard là
gây trễ kịp thời trên pipeline để phát hiện nhánh cho đến khâu
M, sử dụng giá trị mới của PC.
F D X M W
Lệnh nhánh
Nhánh kế thừa F Stall Stall F D X M W

F D X M W
Nhánh kế thừa +1
F D X M W
Nhánh kế thừa +2
F D X M
Nhánh kế thừa +3
F D X
Nhánh kế thừa +4
F D
Nhánh kế thừa +5
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.2. Điều khiển Pipelining
+ Xung đột (Hazard) là một yếu tố quan trọng ảnh hưởng trực
tiếp tới tốc độ của VXL trong kỹ thuật Pipeline
+ Một số kỹ thuật giải quyết xung đột chủ yếu:

- Chèn trễ
- Tổ chức lại các lệnh
- Sử dụng đường dữ liệu nội đặc biệt
- Tomasulo
- Định biểu
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.2. Điều khiển Pipelining
3.2.1. Chèn trễ
+ Kỹ thuật chèn trễ được sử dụng khá hữu hiệu để giải quyết các
xung đột về cấu trúc cũng như về dữ liệu:
+ Ví dụ:

+ Xung đột dữ liệu xảy ra khi lệnh 1 chưa lưu kết quả vào R1 thì
lệnh 2 đã thực hiện trừ R1 cho R5 (RAW)
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.2. Điều khiển Pipelining
3.2.1. Chèn trễ
+ Chèn trễ:

+ Kỹ thuật chèn trễ này hoạt động khá ổn định, tuy nhiên vẫn còn
chưa tận dụng được nhiều chu kỳ nhàn rỗi của máy, do đó hiệu
suất chưa cao.
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.2. Điều khiển Pipelining
3.2.2. Tổ chức lại các lệnh
+ Kỹ thuật này đòi hỏi trình dịch phải dự đoán được sự phụ thuộc
dữ liệu giữa các lệnh, qua đó thay đổi trật tự thực hiện lệnh
CHƯƠNG 4: KỸ THUẬT PIPELINING
3.2. Điều khiển Pipelining
3.2.3. Sử dụng đường dữ liệu nội đặc biệt
+ Giá trị của biến sẽ được cập nhập rất sớm nhờ sử dụng đường
dữ liệu nội đặc biệt. Điều này làm giảm số chu kỳ nhàn rỗi trong
pipeline và tăng tốc độ VXL
C¸c kiÕn tróc song song møc lÖnh

37
Siêu ống dẫn

38
Siêu ống dẫn
 Hình 7.3 trình bày thí dụ về siêu ống dẫn bậc 2, có so sánh
với siêu ống dẫn đơn giản. Ta thấy trong một chu kỳ Tc, máy
dùng kỹ thuật siêu ống dẫn làm 2 lệnh thay vì làm 1 lệnh trong
máy dùng kỹ thuật ống dẫn bình thường. Trong máy tính siêu
ống dẫn, tốc độ thực hiện lệnh tương đương với việc thực hiện
một lệnh trong khoảng thời gian Tc/n. Các bất lợi của siêu ống
dẫn là thời gian thực hiện một giai đoạn con ngắn Tc/n và việc
trì hoãn trong thi hành lệnh nhảy lớn.

39
superscala

40
VLIW (Very Long Instruction Word

41
KiÕn tróc m¸y tÝnh

HÕt ch−¬ng 4

ThS Nguyễn Tường Thành -


10/8/2012 Trường Đại học Quy Nhơn 42

You might also like