Tìm Hiểu Đường Ống Lệnh Pipeline | Đại học Kinh tế Kỹ thuật Công nghiệp
Có thể xảy ra khi một lệnh cần kết quả từ lệnh trước đó. Điều này có thể dẫn đến tình trạng chờ đợi. Khi hai lệnh cần sử dụng cùng một tài nguyên. Khi có lệnh nhảy (branch) khiến không biết lệnh nào sẽ được thực thi tiếp theo. Khi lệnh tiếp theo cần dữ liệu từ lệnh trước đó chưa hoàn thành. Thiết kế một đường ống lệnh yêu cầu nhiều phần phức tạp hơn và cần nhiều kỹ thuật điều khiển.
Môn: Kiến trúc máy tính (KTMT)
Trường: Đại học Kinh tế kỹ thuật công nghiệp
Thông tin:
Tác giả:
Preview text:
Btl ktmt - kjadkjsakdjsad BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC KINH KHOA
TẾ - KỸ THUẬT CÔNG NGHIỆP
CÔNG NGHỆ THÔNG TIN
❊❊❊❊❊❊❊❊❊❊
MÔN HỌC: KIẾN TRÚC MÁY TÍNH
CHỦ ĐỀ 15: TÌM HIỂU ĐƯỜNG ỐNG LỆNH PIPELINE
Giáo viên hướng dẫn: Nguyễn Thu Hiền Nhóm: 6 Lớp: DHTI15A8HN MỤC LỤC
LỜI MỞ ĐẦU.............................................................................................................................................2
I. KHÁI NIỆM PIPELINE........................................................................................................................2
II. PHÂN LOẠI PIPELINE.......................................................................................................................2
III. QUY TRÌNH THỰC HIỆN HỆ LỆNH..............................................................................................3
IV. CÁC XUNG ĐỘT (HAZARD) TRONG KỸ THUẬT PIPELINE....................................................3 4.1.
Xung đột cấu trúc (Structural hazard):....................................................................................3 4.2.
Xung đột dữ liệu (Data hazard):................................................................................................3 4.3.
Xung đột điều khiển (Control/Branch hazard)........................................................................4
V. HỆ SỐ TĂNG TỐC PIPELINE............................................................................................................5 LỜI MỞ ĐẦU
Sự phát triển của máy tính được mô tả dựa trên sự tiến độ của các công nghệ chế tạo các
linh kiện cơ bản của máy tính như: bộ xử lý, bộ nhớ, các thiết bị ngoai vi, … Máy tính điện tử số
đã trải qua bốn thế hệ liên tiếp. Việc chuyển từ thế hệ này sang thế hệ sau được đặc trưng bằng
một sự thay đổi cơ bản về công nghệ.
Các kỹ thuật cải tiến tốc độ xử lý của máy tính không ngừng phát triển: kỹ thuật ống dẫn
(pipeline), kỹ thuật vô hướng, xử lý song song mức độ cao, … Pipelining là một phương pháp xử
lí lệnh trên một pipeline lệnh, có thể xử lí nhiều lệnh đồng thời trong cùng một khoảng thời gian.
Trong khi lệnh này đang được xử lý thì lệnh tiếp sau đó đã được nhận vào.
Trên lý thuyết, việc sử dụng kĩ thuật pipeline sẽ làm tăng tốc độ lên gần 400% nhưng thực
tế, việc tăng tốc độ được bao nhiêu còn phụ thuộc vào các kiểu xung đột khác nhau: xung đột cấu
trúc, xúc đột dữ liệu, xung đột điều khiển, …
Với tiểu luận này, chúng ta sẽ tìm hiểu về chủ đề “Đường ống lệnh pipeline”. Với thời
gian và kiến thức còn hạn chế, báo cáo không tránh khỏi những sai sót, mong cô và các bạn có
thể góp ý để bài tiểu luận của nhóm chúng em có thể hoàn thiện một cách đầy đủ nhất.
TÌM HIỂU ĐƯỜNG ỐNG LỆNH PIPELINE
I. KHÁI NIỆM 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).
Mục đích: làm tăng thông lượng bằng cách thực hiện nhiều hoạt động cùng một lúc, làm
giảm thời gian rảnh rỗi và tăng hiệu suất cho bộ xử lý. Đặc điểm:
Pipeline là kỹ thuật song song ở mức lệnh (ILP).
Một pipeline là trọn vẹn nếu nó luôn nhận một lệnh mới tại mỗi chu kỳ đồng hồ.
Một pipeline là không trọn vẹn nếu có nhiều giai đoạn trễ trong quá trình xử lý.
Số lượng giai đoạn của pipeline phụ thuộc vào thiết kế CPU: •
5 giai đoạn: pipeline đơn giản •
10 –15 giai đoạn: Pen III, M, Core 2 Duo •
20 giai đoạn: Pen IV (except Prescott) •
31 giai đoạn: Pen IV Prescott
II. PHÂN LOẠI PIPELINE
Pipeline được phân làm 2 loại: pipeline lệnh và pipeline số học. Mỗi loại có thể được thiết
kế theo 2 cách: pipeline động và pipeline tĩnh.
Pipeline tĩnh: chỉ thực hiện một thao tác như cộng hoặc nhân tại một thời điểm. Thao tác
của pipeline tĩnh chỉ được thay đổi khi dữ liệu cuối cùng đi ra khỏi đường ống.
Pipeline động: có thể thực hiện nhiều hơn một thao tác tại một thời điểm.
III. QUY TRÌNH THỰC HIỆN HỆ LỆNH
Khi thực thi, các lệnh MIPS pipeline được chia làm 5 công đoạn:
1. IF: Nạp lệnh từ bộ nhớ
2. ID: 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. EX: Thực thi các phép tính hoặc tính toán địa chỉ
4. MEM: Truy xuất các toán hạng trong bộ nhớ
5. WB: Ghi kết quả cuối vào thanh ghi.
IV. CÁC XUNG ĐỘT (HAZARD) TRONG KỸ THUẬT PIPELINE
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) •
Xung đột dữ liệu (Data hazard) •
Xung đột điều khiển (Control/Branch hazard)
4.1. Xung đột cấu trúc (Structural hazard):
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. Nguyên nhân: • Do không đủ tài nguyên •
Các đơn vị chức năng không được tổ chức để hỗ trợ pipeline một cách đầy
đủ. Vì vậy chuỗi các thành phần của các lệnh không thể được thực hiện
trong cùng một chu kì đồng hồ. Cách khắc phục: •
Nâng cao khả năng tài nguyên •
Memory/ cache: hỗ trợ nhiều thao tác đọc/ ghi cùng lúc •
Chia cache thành cache lệnh và cache dữ liệu để cải thiện truy nhập •
Lùi việc thực hiện lệnh mới 1 chu kỳ đồng hồ
4.2. Xung đột dữ liệu (Data hazard):
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.
Nguyên nhân: Do có sự phụ thuộc giữa các lệnh và chúng thì gần như đủ sự chồng
chéo trong quá trình thực hiện sẽ thay đổi thứ tự tiếp cận với các toán hạng tham gia và sự phụ thuộc.
Phân loại: Giả sử có 2 lệnh i và j cùng tác động lên một vùng nhớ, i được thực
hiện trước j. Có các loại xung đột dữ liệu sau: •
RAW (read after write): j thực hiện đọc trước khi i thực hiện thao tác ghi,
vì vậy j sẽ đọc kết quả cũ. Đây là kiểu xung đột hay gặp nhất và được khắc
phục bằng kỹ thuật forwarding. •
WAW (write after write): j thực hiện thao tác ghi dữ liệu trước khi i thực
hiện ghi dữ liệu. Do đó kết quả lưu được là kết quả của phép toán i (nếu
đúng thì phải là của j). Trường hợp này chỉ xảy ra khi thời gian để thực
hiện ghi kết quả của i lâu (nhiều chu kỳ đồng hồ). •
WAR (write after read): j thực hiện thao tác ghi dữ liệu trước khi i đọc dữ
liệu đó. Do vậy, i sẽ đọc sai dữ liệu. Cách khắc phục:
• Ngưng pipeline (stall): phải làm trễ hoặc ngưng pipeline bằng cách sử dụng
một vài phương pháp tới khi có dữ liệu chính xác
• Sử dụng complier để nhận biết RAW và:
Chèn các lệnh NO-OP (NO-OPeration instruction) vào giữa 2 lệnh có RAW
Sắp xếp lại trình tự chương trình và chèn các lệnh độc lập dữ
liệu vào vị trí giữa 2 lệnh có RAW
• Sử dụng phần cứng để xác định RAW (có trong các CPUs hiện đại)
4.3. Xung đột điều khiển (Control/Branch hazard)
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.
Nguyên nhân: Xảy ra do ảnh hưởng của câu lệnh rẽ nhánh. Có 3 loại câu lệnh rẽ nhánh: •
Lệnh rẽ nhánh không điều kiện: thường được thực hiện nếu trong chương
trình có nó, khi đó nó thiết lập một địa chỉ đích mới trong bộ đếm chương
trình chứ ít khi nó tăng lên một để trỏ vào lệnh tiếp theo. •
Lệnh rẽ nhánh có điều kiện: khi điều kiện đúng thì nó thiết lập một địa chỉ
đích mới trong bộ đếm chương trình, ngược lại thì nó tăng một để trỏ vào lệnh tiếp theo. •
Lệnh rẽ nhánh lặp: lệnh này thường lặp lại việc nhảy trở về điểm vào ban
đầu của chính nó, tuy nhiên có một cơ chế để đếm số lần hay là bằng cách
đánh dấu nào đó để thoát khỏi vòng lặp.
Cách khắc phục: Để làm giảm ảnh hưởng của việc rẽ nhánh lên hiệu năng bộ vi
xử lý, nhiều kĩ thuật đã được đưa ra: dự đoán rẽ nhánh, làm trễ việc rẽ nhánh, nhận tìm và nạp trước nhiều nhánh
V. HỆ SỐ TĂNG TỐC PIPELINE
Giả sử hệ thống Pipeline có m công đoạn, thực hiện n lệnh. Tacó hệ số tăng tốc, cũng là
hệ số tăng tốc theo lý thuyết là:
Hệ số tăng tốc thực tế: