Bài giảng Kiến trúc máy tính: Tuần 13 - ĐH Công nghệ thông tin

29 70 0
Bài giảng Kiến trúc máy tính: Tuần 13 - ĐH Công nghệ thông tin

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Kiến trúc máy tính: Tuần 13 giúp người học hiểu về Kỹ thuật ống dẫn. Nội dung trình bày cụ thể gồm có: Tổng quan về kỹ thuật Pipeline, những vấn đề phát sinh và hướng giải quyết trong 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 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 pipeline Slide dịch hình 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 Kỹ thuật ống dẫn (pipeline)  Pipeline là kỹ thuật mà các lệnh thực thi theo kiểu chồng lấn lên (overlap)  Ví dụ minh họa hoạt động thế nào là khơng pipeline hay pipeline: Giả sử phịng có nhiều người, người đều cần giặt quần áo bẩn Quá trình giặt quần áo bao gồm 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 Kỹ thuật ống dẫn (pipeline)  Nếu 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ủ) 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 này gọi là không pipeline  Tuy nhiên, rõ ràng người trước hoàn thành công đoạn 1, sang cơng đoạn máy giặt trống, lúc này người tiếp theo đư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ứ mới bắt đầu, mà người trước đến công đoạn thứ người tiếp theo bắt đầu công đoạn thứ nhất và tiếp tục Quá trình thực chồng lấn này gọi là pipeline 03/2017 Copyrights 2017 CE-UIT All Rights Reserved Kỹ thuật ống dẫn (pipeline) Hình ảnh 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) pipeline (hình dưới) 03/2017 Copyrights 2017 CE-UIT All Rights Reserved Kỹ thuật ống dẫn (pipeline)  Cách tiếp cận dùng kỹ thuật pipeline tiêu tốn thời gian cho tất cả các cơng việc hoàn tất các cơng việc thực song song, số cơng việc hoàn thành nhiều so với không pipeline  Chú ý, pipeline không làm giảm thời gian hoàn thành công việc mà làm giảm thời gian hoàn thành tởng số cơng việc (như ví dụ trên, thời gian cho người A hoàn thành việc giặt áp dụng pipeline hay không pipeline đều là giờ, tổng số cho 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 Kỹ thuật ống dẫn (pipeline) Tương tự việc giặt quần áo, thay lệnh phải chờ lệnh trước hoàn thành mới thực thi các lệnh chương trình xử lý thực thi theo kiểu pipeline Khi thực thi, các lệnh MIPS chia làm công đoạn: Nạp lệnh từ nhớ Giải mã lệnh đọc ghi cần thiết (MIPS cho phép đọc giải mã đồng thời) Thực thi phép tính tính tốn địa Truy xuất tốn hạng nhớ Ghi kết cuối vào ghi Vì vậy, MIPS pipeline chương này xem có cơng đoạn (cịn gọi là pipeline tầng) 03/2017 Copyrights 2017 CE-UIT All Rights Reserved An Overview of Pipelining Nạp lệnh từ nhớ − IF Giải mã lệnh và đọc các ghi − ID Thực thi − EX Truy xuất nhớ − MEM Ghi kết quả vào ghi − WB 03/2017 Copyrights 2017 CE-UIT All Rights Reserved Kỹ thuật ống dẫn (pipeline)  Xét xử lý với lệnh 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 (beq)  Giả sử thời gian hoạt động các công đoạn sau: 200 ps cho truy xuất nhớ, 200 ps cho tính toán ALU, 100 ps cho thao tác đọc/ghi ghi  So sánh thời gian trung bình giữa các lệnh thực đơn chu kỳ và pipeline 03/2017 Copyrights 2017 CE-UIT All Rights Reserved Kỹ thuật ống dẫn (pipeline) Ví dụ hình ảnh lệnh lw thực theo kiểu không pipeline, đơn chu kỳ (hình trên) có pipeline (hình dưới)  Thời gian giữa lệnh thứ nhất và thứ tư không pipeline là x 800 = 2400 ps, pipeline là x 200 = 600 ps 10 Kỹ thuật ống dẫn (pipeline) Các xung đột xảy áp dụng kỹ thuật pipeline (Pipeline Hazards): Xung đột là trạng thái mà lệnh tiếp theo thực thi chu kỳ pipeline sau (hoặc thực thi cho kết quả sai), thường ba nguyên nhân sau: Xung đột cấu trúc (Structural hazard): là lệnh dự kiến thực thi chu kỳ pipeline 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 có hai lệnh truy xuất vào tài nguyên phần cứng nào lúc Xung đột liệu (Data hazard): là lệnh dự kiến thực thi chu kỳ pipeline dữ liệu mà lệnh này cần chưa sẵn sàng Xung đột điều khiển (Control/Branch hazard): là lệnh dự kiến thực thi chu kỳ pipeline lệnh nạp vào khơng phải là lệnh cần Xung đột này xảy 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ử có nhớ đơn nhất thay hai nhớ lệnh và dữ liệu rời rạc Nếu pipeline ví dụ hình có thêm lệnh thứ tư chu kỳ pipeline từ 600 tới 800 lệnh thứ nhất thực truy xuất nhớ lấy dữ liệu lệnh thứ tư thực truy xuất nhớ lấy lệnh Do khơng có nhớ lệnh và dữ liệu riêng lẻ, trường hợp này có xung đột cấu trúc xảy 03/2017 Copyrights 2017 CE-UIT All Rights Reserved 16 Kỹ thuật ống dẫn (pipeline) Xung đột 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 cơng đoạn ID lệnh sub thực lúc với cộng đoạn EX lệnh add Trong công đoạn ID, lệnh sub cần đọc giá trị ghi $s0, giá trị mới ghi $s0 phải tới công đoạn WB lệnh add mới sẵn sàng Vì vậy, nếu thực pipeline thơng thường, trường hợp này xảy xung đột dữ liệu 03/2017 Copyrights 2017 CE-UIT All Rights Reserved 17 Kỹ thuật ống dẫn (pipeline) Xung đột 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 trường hợp này là chờ thêm hai chu kỳ xung xung clock lệnh sub mới nạp vào 03/2017 Copyrights 2017 CE-UIT All Rights Reserved 18 Kỹ thuật ống dẫn (pipeline) Xung đột liệu Thay chờ số chu kỳ đến dữ liệu cần sẵn sàng, kỹ thuật á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ư ví dụ trước, thay chờ sau hai chu kỳ rỗi mới nạp lệnh sub vào, ALU hoàn thành tính toán tởng cho lệnh add tởng này cung cấp cho công đoạn EX lệnh sub (thông qua đệ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 liệu  Kỹ thuật nhìn trước: phương pháp giải quyết xung đột dữ liệu đưa thêm vào các đệm phụ bên trong, các dữ liệu cần truy xuất từ đệm này là chờ đợi đến sẵn sàng nhớ hay ghi 03/2017 Copyrights 2017 CE-UIT All Rights Reserved 20 Kỹ thuật ống dẫn (pipeline) Xung đột liệu Lưu ý, với lệnh lw và các lệnh có chức tương tự, thơng thường kết quả cuối khơng phải hoàn tất cơng đoạn EX mà là hoàn tất công đoạn MEM 03/2017 Copyrights 2017 CE-UIT All Rights Reserved 21 Kỹ thuật ống dẫn (pipeline) Xung đột liệu Xét ví dụ sau: lw $s0, 20($t1) sub $t2, $s0, $t3 Với lệnh lw, dữ liệu mong muốn sẵn sàng sau chu kỳ pipeline (tức sau công đoạn MEM hoàn tất) Vì vậy, giả sử dữ liệu đầu công đoạn MEM lệnh lw truyền tới đầu vào công đoạn EX lệnh sub theo sau, lệnh sub phải chờ sau chu kỳ rỗi mới nạp vào 03/2017 Copyrights 2017 CE-UIT All Rights Reserved 22 Kỹ thuật ống dẫn (pipeline) Xung đột liệu Kỹ thuật forwarding hỗ trợ giải quyết xung đột dữ liệu hiệu quả, nhiên ngăn chặn tất cả các trường hợp chu kỳ rỗi 03/2017 Copyrights 2017 CE-UIT All Rights Reserved 23 Kỹ thuật ống dẫn (pipeline) Xung đột liệu Tóm lại, với kỹ thuật forwarding có:  ALU-ALU forwarding hay EX-EX forwarding (hình 1)  MEM-ALU forwarding hay MEM-EX forwarding (hình 2) Hình Hình 03/2017 24 Kỹ thuật ống dẫn (pipeline) Xung đột điều khiển  Một số lệnh nhảy có điều kiện và khơng điều kiện MIPS (branches, jumps) tạo xung đột điều kiển này Ví dụ xét đoạn chương trình sau: add $4, $5, $6 beq $1, $2, label lw $3, 300($s0) Nếu áp dụng pipeline thông thường, chu kỳ thứ ba pipeline, beq thực thi cơng đoạn ID lệnh lw nạp vào Nhưng nếu điều kiện lệnh beq xảy lệnh thực hiệp tiếp sau khơng phải là lw mà là lệnh gán nhãn ‘label’, lúc này xảy xung đột điều khiển 03/2017 Copyrights 2017 CE-UIT All Rights Reserved 25 Kỹ thuật ống dẫn (pipeline) Xung đột điều khiển  Các giải pháp giải quyết xung đột điều khiển cho lệnh nhảy có điều kiện, ví dụ với beq: Cơ bản nhất là chờ cho tới điều kiện tính toán lệnh tiếp theo mới nạp vào Ln lãng phí chu kỳ xung clock để chờ điều kiện xảy Cải tiến hơn, dùng phương pháp dự đoán Có hai cách dự đoán: dự đoán điều kiện xảy (tức nhánh nhảy tới lấy); dự đoán điều kiện không xảy (tức nhánh nhảy tới khơng lấy) Nếu dự đoán đúng, chương trình khơng lãng phí chu kỳ xung clock nào; cịn nếu dự đoán sai, lệnh nạp lại và lãng phí chu kỳ xung clock  03/2017 Các giải pháp giải quyết xung đột điều khiển (tham khảo thêm mục 4.8, sách tham khảo chính) Copyrights 2017 CE-UIT All Rights Reserved 26 Kỹ thuật ống dẫn (pipeline) Ví dụ giải xung đột điều khiển theo kiểu dự đoán điều kiện không xảy ra, tức nhánh nhảy tới không lấy (Predict Not Taken): Dự đoán Dự đoán sai 03/2017 27 Kỹ thuật ống dẫn (pipeline) Tổng kết:  Hiểu kỹ thuật ống dẫn là  Ba xung đột mà kỹ thuật ống dẫn gây ra:  Xung đột cấu trúc  Xung đột dữ liệu  Xung đột điều khiển  03/2017 Cách giải quyết xảy các xung đột Copyrights 2017 CE-UIT All Rights Reserved 28 Kỹ thuật ống dẫn (pipeline)  Lý thuyết: Đọc sách tham khảo • Mục: 4.5 • Sách: Computer Organization and Design: The Hardware/Software Interface, Patterson, D A., and J L Hennessy, Morgan Kaufman, Revised Fourth Edition, 2011  Bài tập: file đính kèm 03/2017 Copyrights 2017 CE-UIT All Rights Reserved 29 ... CE-UIT All Rights Reserved 23 Kỹ thuật ống dẫn (pipeline) Xung đột liệu Tóm lại, với kỹ thuật forwarding có:  ALU-ALU forwarding hay EX-EX forwarding (hình 1)  MEM-ALU forwarding hay MEM-EX... 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ử có nhớ đơn nhất thay hai nhớ lệnh... đoạn EX lệnh add Trong công đoạn ID, lệnh sub cần đọc giá trị ghi $s0, giá trị mới ghi $s0 phải tới công đoạn WB lệnh add mới sẵn sàng Vì vậy, nếu thực pipeline thông thường, trường hợp

Ngày đăng: 11/05/2021, 01:36

Mục lục

  • Slide 1

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • An Overview of Pipelining

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

  • Kỹ thuật ống dẫn (pipeline)

Tài liệu cùng người dùng

Tài liệu liên quan