Professional Documents
Culture Documents
Thu Hà - Kỹ thuật xử lý đường ống
Thu Hà - Kỹ thuật xử lý đường ống
Hình 1.0-1: Các mô tả đơn giản đường ống lệnh hai công đoạn
Đường ống chia làm hai công đoạn độc lập. Công đoạn thứ nhất nạp lệnh và lưu trữ nó tạm
thời. Khi công đoạn hai bắt đầu rỗi thì công đoạn một truyền lệnh đang được lưu trữ vào công
đoạn hai. Trong khi công đoạn hai đang thực thi lệnh thì công đoạn một tiếp tục nạp lệnh tiếp
theo. Công việc đó gọi là nạp trước lệnh (instruction prefetch) hoặc là nạp gối đầu (fetch
overlap).
Hình 1.0-2: Mô tả chi tiết đường ống lệnh gồm hai công đoạn
Rõ ràng là quá trình này làm tăng tốc độ thực thi lệnh. Nếu thời gian hoạt động của các công
đoạn nạp và công đoạn thực thi bằng nhau thì chu kì lệnh sẽ giảm đi một nửa. Tuy nhiên, trong
thực tế thì tốc độ thực thi không thể tăng gấp đôi (xem minh hoạ trên hình 4-2).
Đó là do hai nguyên nhân sau đây:
Thời gian thực thi nói chung sẽ dài hơn thời gian nạp lệnh. Việc thực thi bao gồm việc đọc
và lưu trữ các toán hạng và thực hiện một vài phép toán. Do đó công đoạn nạp lệnh phải
đợi một lúc trước khi nó có thể truyền sang công đoạn hai.
Lệnh rẽ nhánh có điều kiện không cho biết địa chỉ của lệnh tiếp theo sẽ được nạp. Do đó
công đoạn nạp phải đợi cho đến khi nó nhận được địa chỉ của lệnh tiếp theo từ công đoạn
thực thi. Sau đó công đoạn thực thi có thể phải đợi trong khi lệnh mới được nạp.
Để giảm sự mất thời gian vì lý do thứ hai có thể khắc phục nhờ quy tắc đơn giản sau: Khi một
lệnh rẽ nhánh có điều kiện được chuyển từ công đoạn nạp sang công đoạn thực thi thì công đoạn
nạp sẽ nạp lệnh tiếp theo trong bộ nhớ chính sau lệnh rẽ nhánh. Nếu lệnh rẽ nhánh không được
thực hiện thì không bị mất thời gian. Nếu lệnh rẽ nhánh được thực hiện thì lệnh được nạp vào bị
loại bỏ và lệnh mới sẽ được nạp.
Để tăng tốc độ thực thi lệnh, đường ống phải có nhiều công đoạn hơn. Chúng ta hãy tách quá
trình thực hiện một lệnh thành các giai đoạn sau:
Fetch Instruction (FI): đọc lệnh tiếp theo vào bộ đệm
Decode Instruction (DI): giải mã lệnh
Calculate Operands (CO): tính các địa chỉ thực của từng toán hạng nguồn. Các địa chỉ này
có thể là địa chỉ trực tiếp, địa chỉ thanh ghi trực tiếp, địa chỉ thay thế hoặc các dạng địa chỉ
khác.
Fetch Operands (FO): nạp từng toán hạng từ bộ nhớ. Các toán hạng trong thanh ghi không
được nạp.
Execute Instruction (EI) : thực hiện phép toán được chỉ định và lưu trữ kết quả vào vị trí
toán hạng đích.
Write Operand (WO): lưu trữ kết quả vào bộ nhớ.
Với cách phân chia này, thời gian thực hiện các công đoạn khác nhau sẽ gần bằng nhau hơn.
Hình 3.3 cho thấy đường ống 6 công đoạn có thể giảm thời gian thực thi 9 lệnh từ 54 đơn vị thời
gian xuống còn 14 đơn vị thời gian.
Lệ 1 2 3 4 5 6 7 8 9 10 11 12 13 14
nh
1 F D C F E W
I I O O I O
2 F D C F E W
I I O O I O
3 F D C F EI W
I I O O O
4 F D C FO E W
I I O I O
5 F D CO F E W
I I O I O
6 F DI C F EI WO
I O O
7 FI D C FO EI WO
I O
8 F D CO FO EI W
I I O
9 F DI CO FO EI WO
I
Hình 1.0-3: Giản đồ thời gian thực hiện lệnh đường ống 6 công đoạn
Chú ý rằng trên sơ đồ của hình 1.4-3 chúng ta đã giả thiết rằng mỗi lệnh đều phải đi qua tất cả
6 công đoạn của đường ống. Điều đó không phải lúc nào cũng xảy ra. Ví dụ, lệnh nạp không cần
công đoạn WO. Tuy nhiên, để làm đơn giản phần cứng của đường ống, thời gian được cài đặt với
giả thiết rằng mỗi lệnh đều đòi hỏi tất cả 6 công đoạn. Cũng như vậy, trên giản đồ giả thiết rằng
tất cả các công đoạn có thể được thực hiện một cách song song. Đặc biệt, nó giả thiết rằng không
có xung đột bộ nhớ. Ví dụ, các công đoạn FI, FO và WO đều đòi hỏi truy nhập bộ nhớ. Trên giản
đồ giả thiết rằng tất cả các quá trình truy nhập có thể xảy ra đồng thời. Thực tế, hầu hết các hệ
thống nhớ đều không cho phép điều đó. Tuy nhiên, các giá trị cần truy nhập có thể ở trong cache
hoặc các công đoạn FO/WO có thể rỗng. Vì vậy, phần lớn thì các xung đột bộ nhớ sẽ không làm
giảm tốc độ của đường ống.
Có một vài yếu tố có thể làm giảm hiệu suất đường ống:
Nếu thời gian thực hiện 6 công đoạn không bằng nhau thì tại một số công đoạn có hiện
tượng phải đợi tương tự như trong ví dụ đường ống có hai công đoạn ở trên.
Câu lệnh rẽ nhánh có điều kiện có thể làm mất hiệu lực một số lần nạp lệnh.
Sự ngắt sẽ làm giảm hiệu suất của đường ống.
Hình 1.4.4. minh hoạ hiệu ứng rẽ nhánh có điều kiện sử dụng cùng một chương trình như hình
4.3.
1 2 3 4 5 6 7 8 9 1 1 12 1 14 15
0 1 3
Lệnh 1 FI DI CO FO EI W
O
Lệnh 2 FI DI C FO EI WO
O
Lệnh 3 FI DI CO FO EI W
O
Lệnh 4 FI DI CO FO
Lệnh 5 FI DI CO
Lệnh 6 FI DI
Lệnh 7 FI
Lệnh FI D C FO EI WO
15 I O
Lệnh FI D CO F EI W
16 I O O
Hình 1.0-4: . Hiệu ứng của lệnh rẽ nhánh có điều kiện trong việc thực hiện đường ống
lệnh
Giả thiết rằng lệnh 3 là lệnh rẽ nhánh có điều kiện tới lệnh 15. Trước khi lệnh được thực thi
thì không có cách nào biết được lệnh tiếp theo sẽ là lệnh nào. Trong ví dụ này, đường ống gọi
lệnh tuần tự tiếp theo (lệnh 4) và tiếp tục gọi các lệnh tuần tự khác.
Nạp lệnh - FI
Giải mó lệnh - DI
Rẽ nhánh có
điều kiện ?
C
K
Làm rỗng
C
đường ống Rẽ nhánh
hoặc K
ngắt ?
Xung nhịp
đồng hồ
Xung nhịp
điều khiển
tl tb
1 FI DI F EI W
O O
2 FI DI F EI W
O O
3 FI DI FO EI W
O
4 FI DI FO EI W
O
5 FI DI FO EI W
O
Bảng 4-1
Ví dụ1: Tính S khi thực hiện 5 lệnh trên hệ thống 5 công đoạn: FI, DI, FO, EI, WO
Bảng 4-1 là bảng trạng thái biểu diễn thời gian thực hiện hết 5 lệnh.
Biết tb = =80 ns.
Ta có: Tseq = 5*5*80 và Tpipe = (m+n-1)*p = (5+4)*80
Vậy theo công thức (*) và bảng trạng thái, chúng ta có:
Tseq 5 * 5 25
S tt
TPipe 9 9
Ví dụ 2: Tính S cho dãy lệnh sau
1) MOV R1,x R1 x
2) MOV R2,y R2 y
3) ADD R2, R1, R2 R2 R1+R2
4) SUB R5,R4,R3 R5 R4 – R3
5) MPY R5, R2, R5 R5 R2 * R5
Bảng 1.4-2 là bảng trạng thái biểu diễn thời gian thực hiện xong dãy lệnh trên.
Bảng 1.0-2
Từ đó chúng ta tính được hệ số tăng tốc theo lý thuyết và trên thực tế như sau:
5∗5 25 5∗5 25
S lt = = S tt = =
5+5−1 9 và 13 13
2. Hãy tính hệ số tăng tốc S=Tseq/Tpipe theo lý thuyết và thực tế khi thực hiện các lệnh sau:
1) MOV R1,a 4) MPY R2,R2,R2
2) MOV R2,b 5) ADD R2,R1,R2
3) ADD R2,R2,R1
Trên hệ thống PipeLine có
*) 5 công đoạn: FI, DI, FO, EI, WO
*) 6 công đoạn: FI, DI, CO, FO, EI, WO
(Đọc và giải thích ví dụ ở trang 795 (C-21) trongTLTK tiếng Anh- Nam và Cảnh)
3. Hóy tính hệ số tăng tốc S=Tseq/Tpipe theo lý thuyết và thực tế khi thực hiện các lệnh sau:
1) ADD R1,R2,R3 3) MPY R6,R1,R5
2) ADD R5,R2,R4
Trªn hÖ thèng PipeLine cã
*) 5 c«ng ®o¹n: FI, DI, FO, EI, WO
*) 6 c«ng ®o¹n: FI, DI, CO, FO, EI, WO
6. H·y tÝnh hÖ sè t¨ng tèc S=Tseq/Tpipe theo lý thuyÕt vµ thùc tÕ khi thùc hiÖn c¸c lÖnh
sau:
1) ADD R1,R2,R3 3) ADD R3,R1,R2
2) ADD R4,R1,R4 4) ADD R1, R1, R4
Trªn hÖ thèng PipeLine cã
*) 5 c«ng ®o¹n: FI, DI, FO, EI, WO
*) 6 c«ng ®o¹n: FI, DI, CO, FO, EI, WO
7. Tr×nh bµy kü thuËt xö lý song song møc lÖnh.
8.C¸ch ph©n lo¹i c¸c hÖ thèng ®a xö lý
9.Nªu nh÷ng ®Æc ®iÓm chÝnh vµ c¬ chÕ ho¹t ®éng cña ®a bé xö lý.