RISC, CISC và pipeline
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| CISC/sɪsk/ | mảng lệnh phức tạp (CISC) |
| RISC/rɪsk/ | mảng lệnh đơn giản (RISC) |
| pipelining/ˈpaɪplaɪnɪŋ/ | cấp độ dòng chảy |
| Flynn's taxonomy/flɪnz tækˈsɒnəmi/ | phân loại Flynn |
| register/ˈredʒɪstə/ | Thanh ghi |
| ALU/ˌeɪ el ˈjuː/ | ALU |
| hazard/ˈhæzəd/ | xung đột |
| SIMD/ˈsɪmdiː/ | một lệnh nhiều dữ liệu (SIMD) |
| MIMD/ˈmɪmdiː/ | nhiều lệnh nhiều dữ liệu (MIMD) |
| massively parallel/ˈmæsɪvli ˈpærəlel/ | song song quy mô lớn |
| supercomputers/ˌsuːpəkəmˈpjuːtəz/ | siêu máy tính |
Điện thoại trong túi bạn không chạy Intel
- Trong ba mươi năm, các bộ xử lý nhanh nhất cũng phức tạp nhất: thêm chỉ thị, và mỗi chỉ thị làm nhiều việc hơn. Intel xây dựng đế chế dựa trên điều đó.
- Sau đó, một công ty Anh nhỏ đã đưa vào điện thoại một bộ xử lý đơn giản có chủ ý. Ít chỉ thị hơn, tất cả cùng độ dài, hầu như không chạm vào bộ nhớ. Nó không thể làm nhiều việc hơn mỗi chỉ thị, nhưng vẫn thắng.
- Nó thắng vì các chỉ thị đơn giản, đồng đều có thể được trộn xen, và trộn xen có giá trị hơn độ phức tạp.
- Bài học này là CISC và RISC, pipelining, bốn kiến trúc trong phân loại Flynn, và nơi giới hạn nhiệt và tốc độ của bộ xử lý dẫn tới.
CISC và RISC
- Một CISC, Máy tính Tập Chỉ thị Phức tạp, có nhiều, thường phức tạp chỉ thị: một chỉ thị có thể thực hiện nhiều truy cập bộ nhớ và thao tác. Chúng có độ dài biến đổi, nên giải mã rất tinh vi. Nó làm nhiều việc hơn mỗi chỉ thị, trong phần cứng. Ví dụ: Intel x86.
- Một RISC, máy tính tập lệnh rút gọn, có một tập hợp nhỏ các lệnh đơn giản, mỗi lệnh thực hiện một thao tác cơ bản, tất cả đều có chiều dài cố định và giải mã nhanh. Chỉ có tải (load) và lưu (store) truy cập bộ nhớ; mọi thứ khác là từ thanh ghi sang thanh ghi. Ví dụ: ARM.
- Các chương trình RISC dài hơn, nhưng mỗi lệnh chạy nhanh và dễ dự đoán, điều này chính xác là những gì một pipeline cần.

Nhiều hơn mỗi lệnh, hoặc nhanh hơn và dễ dự đoán hơn mỗi lệnh
Bộ xử lý RISC được đặc trưng bởi:
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
RISC giữ cho các lệnh ít, đơn giản và độ dài cố định (thường là 1 chu kỳ); CISC có nhiều lệnh phức tạp, độ dài thay đổi.
Những điểm khác biệt mà đề thi yêu cầu
| Tính năng | CISC | RISC |
|---|---|---|
| Tập lệnh | nhiều, phức tạp | ít, đơn giản |
| Chiều dài lệnh | thay đổi | cố định |
| Truy cập bộ nhớ | nhiều lệnh có thể truy cập bộ nhớ | chỉ có tải và lưu |
| Thanh ghi | ít | nhiều |
| Chu kỳ trên mỗi lệnh | thay đổi | thường là một |
| Pipeline | khó khăn | tự nhiên |
- Các chip Intel hiện đại chuyển đổi các lệnh CISC của chúng thành các vi thao tác giống RISC đơn giản hơn bên trong, đây là bằng chứng rõ ràng nhất cho thấy thiết kế nào đã thắng cuộc tranh luận.
Nối mỗi thuật ngữ với mô tả tương ứng.
Độ khó 2/5 · 140 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
RISC = đơn giản + độ dài cố định + load/store; CISC = phức tạp + độ dài thay đổi; pipeline trùng重叠 các giai đoạn để tăng tốc độ.
Trong bộ xử lý RISC, chỉ có hai loại lệnh truy cập bộ nhớ là load và ____.
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Tất cả các phép toán khác đều là từ thanh ghi sang thanh ghi. Chính giới hạn này khiến các lệnh có độ dài cố định, đồng bộ về thời gian và dễ dàng thực hiện theo kiểu đường ống.
Pipeline
- Một pipeline xử lý các lệnh theo các giai đoạn chồng lấn nhau, giống như dây chuyền lắp ráp: lấy lệnh, giải mã, thực thi trong ALU, truy cập bộ nhớ, ghi lại kết quả.
- Mỗi giai đoạn làm việc với một lệnh khác nhau cùng lúc, vì vậy khi pipeline đầy đủ, một lệnh hoàn thành sau mỗi chu kỳ.
- Nó không làm cho bất kỳ lệnh đơn lẻ nào nhanh hơn. Nó tăng thông lượng: nhiều lệnh hoàn thành hơn mỗi giây.
- Các lệnh đơn giản, chiều dài cố định của RISC khiến mỗi giai đoạn mất cùng một khoảng thời gian, đó là lý do pipeline RISC hoạt động trơn tru và CISC thì không.

Sáu lệnh đang trong quá trình xử lý, một lệnh hoàn thành mỗi chu kỳ
Cách pipeline được lấp đầy
Xét qua các chu kỳ đồng hồ. Một khi pipeline đã đầy, một lệnh mới hoàn thành sau mỗi chu kỳ — mặc dù mỗi lệnh vẫn mất nhiều giai đoạn — vì các giai đoạn của các lệnh khác nhau trùng lặp với nhau.
Khi một đường ống đầy đủ, nó hoàn thành khoảng:
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Việc chồng chéo các giai đoạn nghĩa là một lệnh mới sẽ được hoàn thành mỗi chu kỳ ngay khi đường ống đã đầy đủ.
Kỹ thuật đường ống tăng tốc bộ xử lý bằng cách:
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Các giai đoạn của các lệnh khác nhau chạy song song cùng lúc.
Ví dụ minh họa: tại sao pipeline lại nhanh hơn
- Một pipeline năm giai đoạn chạy ở tốc độ một chu kỳ mỗi giai đoạn. Giải thích tại sao nó nhanh hơn việc thực thi các lệnh lần lượt.
- Không có pipeline, mỗi lệnh chiếm dụng bộ xử lý trong toàn bộ năm giai đoạn, nên một lệnh hoàn thành sau năm chu kỳ.
- Với pipeline, đơn vị lấy lệnh bắt đầu lệnh tiếp theo trong khi lệnh hiện tại vẫn đang giải mã, nên có năm lệnh đang tiến hành đồng thời và, khi đầy đủ, một lệnh hoàn thành mỗi chu kỳ.
- Không có lệnh đơn lẻ nào được thực thi nhanh hơn; thông lượng tăng lên khoảng năm lần. Hãy nói điều đó một cách rõ ràng: đó là điểm đánh giá thường bị bỏ sót nhất.
Kỹ thuật đường ống thực sự cải thiện điều gì?
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Các giai đoạn chồng chéo, nên năm lệnh đang trong quá trình thực thi cùng lúc và một lệnh hoàn thành mỗi chu kỳ. Không có lệnh đơn lẻ nào được thực thi nhanh hơn.
Mối nguy hiểm (Hazards)
- Một mối nguy hiểm gây dừng pipeline. Mối nguy dữ liệu xảy ra khi một lệnh cần kết quả mà lệnh trước đó chưa tạo ra, nên nó phải chờ đợi.
- Mối nguy điều khiển xảy ra tại câu lệnh nhánh: cho đến khi nhánh được giải quyết, bộ xử lý không biết nên lấy lệnh tiếp theo nào.
- Cả hai đều lãng phí chu kỳ, đó là lý do các bộ xử lý dự đoán nhánh và chuyển kết quả giữa các giai đoạn.
Rủi ro dữ liệu làm tắc nghẽn đường ống khi một lệnh cần kết quả mà chưa sẵn sàng; rủi ro điều khiển phát sinh từ việc nhánh rẽ thay đổi lệnh nào sẽ chạy tiếp theo.
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Các rủi ro buộc đường ống phải bị停顿 (hoặc xua tan), đó là lý do chúng làm giảm thông lượng lý tưởng một lệnh mỗi chu kỳ.
Nối mỗi loại rủi ro đường ống với nguyên nhân gây ra nó.
Độ khó 2/5 · 140 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Cả hai đều làm tắc nghẽn đường ống và lãng phí chu kỳ, đó là lý do các bộ xử lý chuyển trực tiếp kết quả giữa các giai đoạn và dự đoán nhánh rẽ.
Thang phân loại Flynn
- Thang phân loại Flynn sắp xếp máy tính dựa trên số lượng luồng lệnh và luồng dữ liệu mà chúng có.
- SISD: một luồng lệnh, một luồng dữ liệu, một nhân đơn truyền thống.
- SIMD: một lệnh thao tác trên nhiều mục dữ liệu cùng lúc. Đây là GPU hoặc đơn vị vector của CPU, và nó phù hợp với hình ảnh, video và mảng khoa học.
- MISD: nhiều thao tác trên cùng một dữ liệu; hiếm gặp và chủ yếu mang tính lý thuyết. MIMD: nhiều bộ xử lý chạy các lệnh khác nhau trên các dữ liệu khác nhau, đây là CPU đa nhân hoặc cụm máy, và nó là dạng tổng quát nhất.

Một lệnh, nhiều mục dữ liệu
Mô tả nào đúng với SIMD? Chọn tất cả các đáp án áp dụng.
Độ khó 2/5 · 140 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Các chương trình khác nhau trên dữ liệu khác nhau là MIMD, trường hợp đa nhân. SIMD là một luồng lệnh trên nhiều luồng dữ liệu.
Máy tính song song quy mô lớn
- Một hệ thống song song quy mô lớn sử dụng hàng nghìn bộ xử lý được kết nối bởi mạng tốc độ cao, mỗi bộ xử lý có bộ nhớ riêng, trao đổi dữ liệu qua tin nhắn thay vì chia sẻ bộ nhớ.
- Nó thuộc loại MIMD, và cần phần mềm được viết đặc biệt, vì lập trình viên phải chia nhỏ vấn đề và quản lý việc giao tiếp.
- Đây chính là những gì các siêu máy tính lớn nhất làm: mô phỏng khí hậu, huấn luyện machine-learning và thiên văn vật lý đều chạy theo cách này.
Các bộ xử lý của máy tính song song quy mô lớn chia sẻ một khối bộ nhớ chung.
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Mỗi bộ xử lý có bộ nhớ riêng, và chúng trao đổi dữ liệu qua tin nhắn trên mạng nhanh. Bộ nhớ phân tán chính là ý nghĩa của thuật ngữ này.
Ví dụ minh họa: đặt máy tính
- Một card đồ họa áp dụng cùng một điều chỉnh độ sáng cho hai triệu pixel. SIMD: một lệnh, nhiều mục dữ liệu, đúng là thứ hàng nghìn nhân nhỏ của GPU được xây dựng để thực hiện.
- Một laptop bốn nhân chạy trình duyệt, trình biên dịch và trình phát nhạc cùng lúc. MIMD: các lệnh khác nhau trên các dữ liệu khác nhau, một luồng mỗi nhân.
- Một trung tâm dự báo thời tiết chia khí quyển thành lưới trên mười nghìn bộ xử lý, mỗi bộ xử lý có bộ nhớ riêng, truyền giá trị biên dưới dạng tin nhắn. Song song quy mô lớn, là một dạng của MIMD.
- Đặt tên danh mục, sau đó giải thích bằng số lượng luồng lệnh và luồng dữ liệu.
Điểm số dễ mất
- Pipeline nâng cao thông lượng; nó không rút ngắn bất kỳ lệnh đơn lẻ nào. Hãy nói điều đó.
- Trong RISC, chỉ tải và lưu mới chạm vào bộ nhớ. Một sự thật duy nhất này giải thích chiều dài cố định, nhiều thanh ghi và pipeline sạch sẽ.
- SIMD là một lệnh trên nhiều dữ liệu; MIMD là nhiều lệnh trên nhiều dữ liệu. Đếm các luồng trước khi trả lời.
- Song song quy mô lớn nghĩa là hàng nghìn bộ xử lý với bộ nhớ phân tán và truyền tin nhắn, không chỉ đơn thuần là "một chiếc máy tính nhanh".
Bạn đã nắm vững
- CISC: nhiều lệnh phức tạp, chiều dài biến đổi, nhiều hơn mỗi lệnh · RISC: ít lệnh đơn giản, chiều dài cố định, chỉ tải và lưu, nhiều thanh ghi, một chu kỳ mỗi lệnh
- pipeline chồng chéo fetch, decode, execute, memory và write-back, nên một chỉ thị hoàn thành mỗi chu kỳ khi đầy đủ: throughput cao hơn, không phải chỉ thị nhanh hơn; data hazards và control hazards làm gián đoạn nó
- Flynn: SISD, SIMD (GPU), MISD, MIMD (multi-core)
- massively parallel: hàng nghìn bộ xử lý, distributed memory, message passing, MIMD, được sử dụng bởi siêu máy tính