Bài giảng Kiến trúc máy tính - Tuần 13: Kỹ thuật ống dẫn (Pipeline)
KIẾN TRÚC MÁY TÍNH
Tuần 13
Kỹ thuật ống dẫn
(Pipeline)
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
1
Kỹ thuật ống dẫn (pipeline)
Mục đích:
✓ Tꢀng quan vꢁ kỹ thuật Pipeline
✓ Nhꢂng vꢃn đꢁ phꢄt sinh vꢅ hưꢆng giꢇi quyꢈt trong
pipeline
Slide được dịch và cá c hì nh được lấy từ sá ch tham khảo:
Computer Organization and Design: The Hardware/Software Interface,
Patterson, D. A., and J. L. Hennessy, Morgan Kaufman, Revised Fourth Edition,
2011.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
2
Kỹ thuật ống dẫn (pipeline)
❖ Pipeline là một kỹ thuật mà trong đó các lệnh được thực thi
theo kiểu chồng lꢃn lên nhau (overlap).
❖ Ví dụ minh họa hoạt động như thꢈ nào là không pipeline hay
pipeline:
Giꢇ sử một phòng có nhiꢁu người, mỗi người đꢁu cần giặt quần áo
bẩn của mình. Quá trình giặt quần áo bao gồm 4 công đoạn:
1. Đặt quần áo bẩn vào máy giặt để giặt
2. Khi máy giặt hoàn thành, đưa quần áo ưꢆt vào máy sꢃy
3. Khi máy sꢃy hoàn thành, đặt quần áo khô lên bàn và ủi
4. Khi ủi hoàn tꢃt, xꢈp quần áo vào tủ
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
3
Kỹ thuật ống dẫn (pipeline)
✓ Nꢈu một người hoàn tꢃt tꢃt cꢇ các công đoạn giặt quần áo
(xong công đoạn ủi, xꢈp quần áo vào tủ) thì người khác mꢆi
bắt đầu (bắt đầu đặt quần áo bẩn vào máy giặt), quá trình
thực hiện này gọi là không pipeline.
✓ Tuy nhiên, rõ ràng rằng khi người trưꢆc hoàn thành công
đoạn 1, sang công đoạn 2 thì máy giặt đã trống, lúc này
người tiꢈp theo có thể đưa quần áo bẩn vào giặt. Như vậy,
người tiꢈp theo không cần phꢇi chờ người trưꢆc xong công
đoạn thứ 4 mꢆi có thể bắt đầu, mà ngay khi người trưꢆc đꢈn
công đoạn thứ 2 thì người tiꢈp theo đã có thể bắt đầu công
đoạn thứ nhꢃt và cứ tiꢈp tục như vậy. Quá trình thực hiện
chồng lꢃn này gọi là pipeline.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
4
Kỹ thuật ống dẫn (pipeline)
Hình ảnh 4 người A, B, C, D giặt
quần áo theo kiểu tiếp cận không
pipeline (hình trên) và pipeline (hình
dưới)
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
5
Kỹ thuật ống dẫn (pipeline)
✓ Cách tiꢈp cận dùng kỹ thuật pipeline tiêu tốn ít thời gian hơn cho tꢃt cꢇ các
công việc hoàn tꢃt bởi vì các công việc được thực hiện song song, vì vậy số
công việc hoàn thành trong một giờ sẽ nhiꢁu hơn so vꢆi không pipeline.
✓ Chú ý, pipeline không làm giꢇm thời gian hoàn thành một công việc mà làm
giꢇm thời gian hoàn thành tꢀng số công việc (như trong ví dụ trên, thời gian
cho người A hoàn thành việc giặt khi áp dụng pipeline hay không pipeline
đꢁu là 2 giờ, nhưng tꢀng số giờ cho 4 người A, B, C và D hoàn thành dùng
pipeline giꢇm rꢃt nhiꢁu so vꢆi không pipeline)
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
6
Kỹ thuật ống dẫn (pipeline)
Tương tự việc giặt quần áo, thay vì một lệnh phꢇi chờ lệnh trưꢆc đó hoàn thành
mꢆi được thực thi thì các lệnh trong một chương trình của bộ xử lý có thể thực
thi theo kiểu pipeline.
Khi thực thi, các lệnh MIPS được chia làm 5 công đoạn:
1. Nạp lệnh từ bộ nhớ
2. Giải mã lệnh và đọc các thanh ghi cần thiết (MIPS cho phép đọc và
giải mã đồng thời)
3. Thực thi các phép tính hoặc tính toán địa chỉ
4. Truy xuất các toán hạng trong bộ nhớ
5. Ghi kết quả cuối vào thanh ghi
Vì vậy, MIPS pipeline trong chương này xem như có 5 công đoạn (còn gọi là
pipeline 5 tầng)
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
7
1. Nạp lệnh từ bộ nhꢆ − IF
2. Giꢇi mã lệnh và đọc các thanh ghi − ID
3. Thực thi − EX
4. Truy xuꢃt bộ nhꢆ − MEM
5. Ghi kꢈt quꢇ vào thanh ghi − WB
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
8
Kỹ thuật ống dẫn (pipeline)
- Xét một bộ xử lý vꢆi 8 lệnh cơ bꢇn: load word (lw), store word (sw), add
(add), subtract (sub), AND (and), OR (or), set less than (slt), và nhꢇy vꢆi
điꢁu kiện bằng (beq).
- Giꢇ sử thời gian hoạt động các công đoạn như sau: 200 ps cho truy xuꢃt
bộ nhꢆ, 200 ps cho tính toán của ALU, 100 ps cho thao tác đọc/ghi thanh
ghi
- So sánh thời gian trung bình giꢂa các lệnh của hiện thực đơn chu kỳ và
pipeline.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
9
Kỹ thuật ống dẫn (pipeline)
Ví dụ hình ảnh 3 lệnh lw thực hiện theo kiểu không pipeline, đơn chu kỳ (hình trên)
và có pipeline (hình dưới)
→ Thời gian giꢂa lệnh thứ nhꢃt và thứ tư trong không pipeline là 3 x 800 =
2400 ps, nhưng trong pipeline là 3 x 200 = 600 ps
10
Kỹ thuật ống dẫn (pipeline)
Sự tăng tốc của pipeline
❖ Trong trường hợp lý tưởng: khi mà các công đoạn pipeline hoàn toàn bằng nhau thì
thời gian giꢂa hai lệnh liên tiꢈp được thực thi trong pipeline bằng:
Như vậy, trong ví dụ trên, thời gian giữa hai lệnh liên tiếp có pipeline bằng 160 ps (800:5 = 160)
→ Trong trường hợp lý tưởng, pipeline sẽ tăng tốc so với không pipeline với số lần đúng
bằng số tầng của pipeline.
❖ Trong thực tế: Các công đoạn thực tꢈ không bằng nhau, việc áp dụng pipeline phꢇi chọn
công đoạn dài nhꢃt để làm một chu kỳ pipeline.
Vì vậy, trong ví dụ trên, thời gian liên tiꢈp giꢂa hai lệnh pipeline là 200 ps. Và áp dụng pipeline
tăng tốc gꢃp 4 lần so vꢆi không pipeline.
Speed-up ≈ Thời gian giữa hai lệnh liên tiếp không pipeline : Thời gian giữa hai lệnh liên tiếp pipeline ≈
800 : 200 = 4 < 5 (number pipeline stages)
→ Trong thực tế, pipeline sẽ tăng tốc so với không pipeline với số lần nhỏ hơn số tầng của
pipeline.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
11
Kỹ thuật ống dẫn (pipeline)
Lưu ý, pipeline tăng tốc so với không pipeline:
❖ Kỹ thuật pipeline không giúp giꢇm thời gian thực thi
của từng lệnh riêng lẻ mà giúp giꢇm tꢀng thời gian thực
thi của đoạn lệnh/chương trình chứa nhiꢁu lệnh (từ đó
giúp thời gian trung bình của mỗi lệnh giꢇm)
❖Việc giúp giꢇm thời gian thực thi cho nhiꢁu lệnh vô cùng
quan trọng, vì các chương trình chạy trong thực tꢈ thông
thường lên đꢈn hàng tỉ lệnh.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
12
Kỹ thuật ống dẫn (pipeline)
Quy ước trình bày 5 công đoạn thực thi một lệnh của pipeline:
Lưu ý cách vẽ hình các công đoạn pipeline như sau:
✓ Khối tô đen hoàn toàn hoặc để trắng hoàn toàn: Trong mỗi công đoạn pipeline, nꢈu
lệnh thực thi không làm gì trong công đoạn này sẽ được tô trắng, ngược lại sẽ được tô
đen.
Ví dụ lệnh “add” có EX đen và MEM trắng tức lệnh này có tính toán trong công
đoạn EX và không truy xuất bộ nhớ dữ liệu trong công đoạn MEM.
✓ Các công đoạn liên qua đꢈn bộ nhꢆ và thanh ghi có thể tô nꢂa trái hoặc nꢂa phꢇi đen:
Nꢈu nꢂa phꢇi tô đen, tức công đoạn đó đang thực hiện thao tác đọc; ngược lại nꢈu nꢂa
trái tô đen, công đoạn đó đang thực hiện thao tác ghi.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
13
Kỹ thuật ống dẫn (pipeline)
Hình ảnh datapath có hỗ trợ pipeline
Chi tiết về datapath và control cho pipeline có thể xem thêm tại phần 4.6 sá ch
tham khảo chí nh.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
14
Kỹ thuật ống dẫn (pipeline)
Các xung đột có thể xảy ra khi áp dụng kỹ thuật pipeline (Pipeline Hazards):
Xung đột là trạng thái mà lệnh tiꢈp theo không thể thực thi trong chu kỳ pipeline
ngay sau đó (hoặc thực thi nhưng sẽ cho ra kꢈt quꢇ sai), thường do một trong ba
nguyên nhân sau:
❖Xung đột cấu trúc (Structural hazard): là khi một lệnh dự kiꢈn không thể
thực thi trong đúng chu kỳ pipeline của nó do phần cứng cần không thể hỗ trợ.
Nói cách khác, xung đột cꢃu trúc xꢇy ra khi có hai lệnh cùng truy xuꢃt vào một
tài nguyên phần cứng nào đó cùng một lúc.
❖Xung đột dữ liệu (Data hazard): là khi một lệnh dự kiꢈn không thể thực thi
trong đúng chu kỳ pipeline của nó do dꢂ liệu mà lệnh này cần vẫn chưa sẵn
sàng.
❖Xung đột điều khiển (Control/Branch hazard): là khi một lệnh dự kiꢈn
không thể thực thi trong đúng chu kỳ pipeline của nó do lệnh nạp vào không
phꢇi là lệnh được cần. Xung đột này xꢇy ra trong trường hợp luồng thực thi
chứa các lệnh nhꢇy.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
15
Kỹ thuật ống dẫn (pipeline)
Xung đột cấu trúc
Ví dụ vꢁ xung đột cꢃu trúc:
Giꢇ sử rằng chúng ta có một bộ nhꢆ đơn duy nhꢃt thay vì hai bộ nhꢆ lệnh và dꢂ
liệu rời rạc nhau. Nꢈu pipeline trong ví dụ ở hình trên có thêm lệnh thứ tư thì
trong chu kỳ pipeline từ 600 tꢆi 800 khi lệnh thứ nhꢃt thực hiện truy xuꢃt bộ nhꢆ
lꢃy dꢂ liệu thì lệnh thứ tư sẽ thực hiện truy xuꢃt bộ nhꢆ lꢃy lệnh. Do không có bộ
nhꢆ lệnh và dꢂ liệu riêng lẻ, trong trường hợp này sẽ có xung đột cꢃu trúc xꢇy ra.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
16
Kỹ thuật ống dẫn (pipeline)
Xung đột dữ liệu
Ví dụ cho đoạn lệnh sau: add $s0, $t0, $t1
sub $t2, $s0, $t3
Trong ví dụ trên, nꢈu áp dụng pipeline bình thường thì công đoạn
ID của lệnh sub sẽ thực hiện cùng lúc vꢆi cộng đoạn EX của lệnh
add. Trong công đoạn ID, lệnh sub sẽ cần đọc giá trị của thanh ghi
$s0, trong khi đó giá trị mꢆi của thanh ghi $s0 phꢇi tꢆi công đoạn
WB của lệnh add mꢆi sẵn sàng. Vì vậy, nꢈu thực hiện pipeline
thông thường, trường hợp này sẽ xꢇy ra xung đột dꢂ liệu
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
17
Kỹ thuật ống dẫn (pipeline)
Xung đột dữ liệu
Ví dụ cho đoạn lệnh sau: add $s0, $t0, $t1
sub $t2, $s0, $t3
Một cách giꢇi quyꢈt có thể trong trường hợp này là chờ thêm hai
chu kỳ xung xung clock thì lệnh sub mꢆi được nạp vào
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
18
Kỹ thuật ống dẫn (pipeline)
Xung đột dữ liệu
❖Thay vì chờ một số chu kỳ đꢈn khi dꢂ liệu cần sẵn sàng, một kỹ thuật có
thể được áp dụng để rút ngắn số chu kỳ rỗi, gọi là kỹ thuật nhìn trước
(forwarding hay bypassing).
Như trong ví dụ trưꢆc, thay vì chờ sau hai chu kỳ rỗi mꢆi nạp lệnh sub vào,
ngay khi ALU hoàn thành tính toán tꢀng cho lệnh add thì tꢀng này cũng
được cung cꢃp ngay cho công đoạn EX của lệnh sub (thông qua một bộ đệm
dꢂ liệu gắn thêm bên trong) để ALU tính toán kꢈt quꢇ cho sub nhanh.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
19
Kỹ thuật ống dẫn (pipeline)
Xung đột dữ liệu
❖ Kỹ thuật nhìn trưꢆc: một phương pháp giꢇi quyꢈt xung đột dꢂ liệu bằng
đưa thêm vào các bộ đệm phụ bên trong, các dꢂ liệu cần có thể được truy
xuꢃt từ bộ đệm này hơn là chờ đợi đꢈn khi nó sẵn sàng trong bộ nhꢆ hay
trong thanh ghi.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Tuần 13: Kỹ thuật ống dẫn (Pipeline)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- bai_giang_kien_truc_may_tinh_tuan_13_ky_thuat_ong_dan_pipeli.pptx