Chương 11: Kỹ thuật ống dẫn và kiến trúc nâng cao TS. Phạm Công Thắng Bộ môn hệ thống nhúng Khoa Công Nghệ Thông Tin Trường Đại học Bách Khoa Đại học Đà Nẵng CuuDuongThanCong.com https://fb.com/tailieudientucntt • Kiến trúc RISC và CISC • Pipeline • Superscalar Processors • Branch Prediction, Register Renaming • Multiprocessor • Mô hình SIMD • Mô hình MIMD • Mạng kết nối 2 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiến trúc CISC và RISC • CISC (Complex Instruction Set Computer) • Máy tính với tập lệnh phức tạp, chẳng hạn như dòng chip x86 của Intel). • Những nhà thiết kế VXL cố gắng để mỗi lệnh có thể thực hiện càng nhiều chức năng càng tốt. Điều này dẫn đến một lệnh sẽ làm tất cả công việc • Ví dụ nạp 2 số cần cộng, cộng chúng lại, và cuối cùng lưu trở lại vào bộ nhớ.
Cũng lệnh đó lại có thể đọc một số từ thanh ghi và số còn lại từ bộ nhớ sau đó lưu kết quả vào bộ nhớ.com https://fb.com/tailieudientucntt Kiến trúc CISC và RISC • RISC (viết tắt của Reduced Instructions Set Computer) • Máy tính với tập lệnh đơn giản hóamột phương pháp thiết kế các bộ vi xử lý (VXL) theo hướng đơn giản hóa tập lệnh, trong đó thời gian thực thi tất cả các lênh đều như nhau. • Hiện nay các bộ vi xử lý RISC phổ biến là ARM, SuperH, MIPS, SPARC, DEC Alpha, PA-RISC, PIC, và PowerPC của IBM.com https://fb.com/tailieudientucntt Kiến trúc CISC và RISC 5 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiến trúc CISC và RISC • Khác biệt giữa RISC so với CISC • CISC • Được thiết kế nhằm tạo thuận lợi cho các nhà lập trình ứng dụng bằng cách rút gọn nhiều câu lệnh đơn giản, thông dụng thành một câu lệnh thực thi dài. Điều này làm cho CISC xử lý chậm hơn nhưng lại đạt yếu tố thân thiện. • RISC • Thực hiện nhanh nhưng kém thân thiện hơn, mỗi câu lệnh đơn giản trong RISC phục vụ cho một mục đích hẹp rất cụ thể, thực hiện rất nhanh và các lệnh này được tiến hành song song.
RISC đòi hỏi nhà lập trình phải kiên nhẫn, giỏi và một trình biên dịch được tối ưu kỹ lưỡng.com https://fb.com/tailieudientucntt Pipeline • Trong các máy tính hiện đại, CPU được tổ chức để song song hoá nhiều công đoạn trong một chu kỳ xử lý lệnh. • CPU không chỉ lấy từng lệnh ở bộ nhớ mà lấy cả khối lệnh đặt sẵn trên cache để giảm thiểu thời gian do truy cập bộ nhớ nhiều lần. • Khi nhiều lệnh đã được đưa lên cache thì trong khi đang thực hiện một lệnh, có thể đồng thời đọc dữ liệu cho một lệnh thứ hai và giải mã một lệnh thứ 3 theo thứ tự. Cơ chế này gọi là pipeline (đường ống) 7 CuuDuongThanCong.com https://fb.com/tailieudientucntt Pipeline • Giả sử có 5 lệnh và mỗi lệnh được thực hiện trong cùng một khoản thời gian.
Mỗi lệnh được thực hiện trong 5 giai đoạn va mỗi giai đoạn được thực hiện trong 1 chu kỳ xung nhịp. • 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), • Truy nhập bộ nhớ (MEM: Memory Access), • Lưu trữ kết quả (RS: Result Storing).com https://fb.com/tailieudientucntt Pipeline • Kiểu xử lý tuần tự thong thường, 5 lệnh được thực hiện trong 25 chu kỳ xung nhịp • Thi xử ly lệnh theo kỹ thuật ống dẫn thực hiện 5 lệnnh chỉ trong 9 chu kỳ xung nhịp.com https://fb.com/tailieudientucntt Pipeline • Kỹ thuật ống dẫn làm tăng tốc độ thực hiện các lệnh. 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.
• Phải có nhiều thanh ghi khác nhau dùng cho các tác vụ đọc và viết (trong ví dụ tại một chu kỳ xung nhịp, ta thấy cùng một lúc có 2 tác vụ đọc (ID, MEM) và 1 tác vụ viết (RS).com https://fb.com/tailieudientucntt Pipeline • Kỹ thuật ống dẫn có một số ràng buộc (tiếp) • 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.com https://fb.com/tailieudientucntt Pipeline • Khó khăn trong kỹ thuật ống dẫn • Khó khăn do cấu trúc • Khó khăn do số liệu • Khó khăn do điều khiển 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt Pipeline • 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. Do vậy cần thêm các bộ phận chức năng cần thiết và hữu hiệu.com https://fb.com/tailieudientucntt Pipeline • Khó khăn do số liệu • Toán tử kết quả của lệnh trước có thể chỉ có thể được dùng cho lệnh sau sau giai đoạn MEM của nó, nhưng toán tử được dùng cho lệnh sau vào giai đoạn EX của lệnh trước. Để khắc phục khó khăn này, một bộ phận phần cứng được dùng để đưa kết quả từ ngã ra ALU trực tiếp vô một trong các thanh ghi ngã vào 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt Pipeline • 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.com https://fb.com/tailieudientucntt Hyper Pipeline • Máy tính có kỹ thuật siêu ống dẫn bậc n: • Chia các giai đoạn của kỹ thuật ống dẫn đơn giản, mỗi giai đoạn được thực hiện trong khoản thời gian Tc, thành n giai đoạn con thực hiện trong khoản thời gian Tc/n. • Độ hữu hiệu của kỹ thuật này tương đương với việc thi hành n lệnh trong mỗi chu kỳ Tc.com https://fb.com/tailieudientucntt Hyper Pipeline • Ví dụ về siêu ống dẫn bậc 2 • Trong khoảng thời gian Tc, máy có siêu ống dẫn làm 2 lệnh thay vì 1 lệnh như trong máy có kỹ thuật ống dẫn đơn giản.com https://fb.com/tailieudientucntt Hyper Pipeline • Ví dụ về siêu ống dẫn bậc 2 • 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àm1 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. • Nếu lệnh thứ i là một lệnh nhảy tương đối thì lệnh này được giải mã trong giai đoạn ID, địa chỉ nhảy đến được tính vào giai đoạn EX, lệnh phải được nhảy tới là lệnh thứ i+4, vậy có trì trệ 3 lệnh thay vì 1 lệnh trong kỹ thuật ống dẫn bình thường.com https://fb.com/tailieudientucntt Đặc điểm Pipeline • 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ộtpipeline là không trọnvẹ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 đơngiả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 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt SUPERSCALAR • Siêu vô hướng • Máy tính siêu vô hướng có thể thực hiện đồng thời nhiều lệnh lệnh trong một chu kỳ xung nhịp 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt SUPERSCALAR • Trong một máy tính siêu vô hướng phần cứng phải quản lý việc đọc và thi hành đồng thời nhiều lệnh => phải có khả năng quản lý các quan hệ giữa số liệu với nhau. • Cần phải chọn các lệnh có khả năng được thi hành cùng một lúc. • Năm 1992 người ta thấy xuất hiện các bộ xử lý có nhiều bộ thực hiện tác vụ độc lập với nhau (nhiều ALU, bộ tính toán số lẻ, nạp dữ liệu, lưu dữ liệu, nhảy), có thể thực hiện song song nhiều lệnh (lệnh tính số nguyên, số lẻ, lệnh bộ nhớ, lệnh nhảy.
Số lệnh có thể được thi hành song song càng nhiều thì phần cứng thực hiện việc này càng phức tạp. • Những bộ xử lý đầu tiên đưa ra thị trường dùng kỹ thuật này là các bộ xử lý Intel i860 và IBM RS/6000. Các bộ xử lý này có khả năng thực hiện song song nhiều tác vụ trên số nguyên và trên số lẻ.com https://fb.com/tailieudientucntt SUPERSCALAR 22 CuuDuongThanCong.com https://fb.com/tailieudientucntt Superscalar • Trong kiến trúc siêu vô hướng, việc xử lý một lệnh được cắt ra rất nhỏ và nhiều lệnh được xử lý đồng thời miễn là không gây ra tranh chấp dữ liệu. • Hai lệnh có tranh chấp dữ liệu là lệnh này có sử dụng kết quả do lệnh kia tạo ra.
Trong trường hợp đó bắt buộc phải tôn trọng thứ tự. Sau đó bộ xử lý sẽ liên kết kết quả các xử lý các thành phần. • Điều phức tạp nhất trong xử lý cả một dãy lệnh còn liên quan tới việc “gọi nhầm” một dãy lệnh từ bộ nhớ lên cache theo thứ tự bình thường do hiện tượng rẽ nhánh 23 CuuDuongThanCong.com https://fb.com/tailieudientucntt Pipeline hazard • Đầu ra mong muốn luôn là 0 (false) • Nhưng trong một số trường hợp, đầu ra là 1 (true) Hazard 24 CuuDuongThanCong.com https://fb.com/tailieudientucntt Pipeline hazard • Xung đột tàinguyên • Xung đột dữ liệu(hầu hết là RAW hay Read After Write Hazard) • Các lệnh rẽ nhánh 25 CuuDuongThanCong.com https://fb.