Mục lục bài họcĐang ở d10-b1
← A-Level Computer Science
0/30 bài đã học xong
Chương 10 · Advanced Architecture, Networks and Computational Thinking · Bài 1/3 của chương · bài 28/30 của A-Level Computer Science

Processor architecture: RISC, CISC and pipelining

Kiến trúc bộ xử lý: RISC, CISC và đường ống lệnh
← Mục lục bài học
Lý thuyết · English

Two design philosophies

CISC provides many complex instructions, each able to do a lot, so a program needs fewer instructions but each one may take several clock cycles and the hardware is complicated. RISC provides a small set of simple instructions, each designed to complete in one cycle, so programs are longer but the hardware is simpler, uses less power and is easier to pipeline.

Why RISC won in mobile devices

Simpler hardware means lower power consumption and less heat — decisive for a phone running on a battery. The compiler does more work to turn one complex operation into several simple instructions, and that is an acceptable trade because compilation happens once while execution happens billions of times.

Pipelining

Instead of finishing one instruction before starting the next, the processor overlaps them: while instruction $1$ is being executed, instruction $2$ is being decoded and instruction $3$ fetched. With $4$ stages, four instructions take $7$ cycles instead of $16$.

The catch is a branch. When a jump is taken, the instructions already in the pipeline are the wrong ones and must be discarded, which is why processors use branch prediction to guess which way a conditional jump will go.

Parallel processing

SISD is a single processor on a single data stream. SIMD applies the same instruction to many data items at once — the model behind graphics processors, image filters and much machine learning. MIMD runs different instructions on different data, which is what a multi-core general-purpose processor does.

Why more cores does not mean proportionally more speed

A program only speeds up if the work can be divided; the part that must run sequentially sets a floor on the total time no matter how many cores are added. Add the cost of coordinating cores and sharing memory, and doubling cores rarely halves the run time — that is the evaluation point.

Giải thích tiếng Việt

Hai triết lý thiết kế

CISC cung cấp nhiều lệnh phức tạp, mỗi lệnh làm được nhiều việc, nên chương trình cần ít lệnh hơn nhưng mỗi lệnh có thể mất vài chu kỳ và phần cứng thì phức tạp. RISC cung cấp một tập nhỏ các lệnh đơn giản, mỗi lệnh được thiết kế để xong trong một chu kỳ, nên chương trình dài hơn nhưng phần cứng đơn giản hơn, tốn ít điện hơn và dễ làm đường ống hơn.

Vì sao RISC thắng ở thiết bị di động

Phần cứng đơn giản hơn nghĩa là tiêu thụ điện thấp hơn và toả ít nhiệt hơn — yếu tố quyết định với một chiếc điện thoại chạy bằng pin. Trình biên dịch phải làm nhiều việc hơn để biến một thao tác phức tạp thành vài lệnh đơn giản, và đó là đánh đổi chấp nhận được vì việc biên dịch chỉ làm một lần trong khi việc thực thi diễn ra hàng tỷ lần.

Đường ống lệnh

Thay vì làm xong một lệnh rồi mới bắt đầu lệnh sau, bộ xử lý cho chúng chồng lên nhau: trong lúc lệnh $1$ đang được thực hiện thì lệnh $2$ đang được giải mã và lệnh $3$ đang được nạp. Với $4$ pha, bốn lệnh mất $7$ chu kỳ thay vì $16$.

Vấn đề nằm ở lệnh rẽ nhánh. Khi một lệnh nhảy được thực hiện, các lệnh đã nằm sẵn trong đường ống là những lệnh SAI và phải bị xoá đi, và đó là lý do bộ xử lý dùng dự đoán rẽ nhánh để đoán xem một lệnh nhảy có điều kiện sẽ đi hướng nào.

Xử lý song song

SISD là một bộ xử lý trên một luồng dữ liệu. SIMD áp cùng một lệnh lên nhiều dữ liệu cùng lúc — mô hình đứng sau bộ xử lý đồ hoạ, các bộ lọc ảnh và phần lớn học máy. MIMD chạy các lệnh khác nhau trên các dữ liệu khác nhau, và đó chính là cách một bộ xử lý đa nhân đa dụng hoạt động.

Vì sao nhiều nhân hơn không cho tốc độ tăng tương ứng

Một chương trình chỉ nhanh lên nếu công việc chia được; phần bắt buộc phải chạy tuần tự đặt ra một mức sàn cho tổng thời gian bất kể thêm bao nhiêu nhân. Cộng thêm chi phí điều phối giữa các nhân và chia sẻ bộ nhớ, nhân đôi số nhân hiếm khi làm thời gian chạy giảm một nửa — và đó là ý ăn điểm đánh giá.

Duong ong lenh — bon lenh chay CHONG NHAULenh 1Lenh 2Lenh 3Lenh 4napgiai mathuc hienghinapgiai mathuc hiennapgiai manapck 1ck 2ck 3ck 4Khong duong ong: 4 lenh x 4 ck = 16 ck · Co duong ong: 7 ckNhung mot lenh NHAY lam ca duong ong phai xoa va nap lai
Đường ống là ý tưởng đơn giản với lợi ích lớn, nhưng dòng cuối hình mới là chỗ ăn điểm: một lệnh nhảy làm toàn bộ lợi ích đó biến mất trong vài chu kỳ.
Ví dụ — tính lợi ích của đường ống và giới hạn của đa nhân

(a) Một bộ xử lý có $5$ pha đường ống, mỗi pha $1$ chu kỳ. Tính số chu kỳ cần cho $100$ lệnh, có và không có đường ống.

(b) Một chương trình có $30\%$ khối lượng công việc bắt buộc chạy tuần tự. Giải thích vì sao tăng từ $4$ lên $8$ nhân không làm chương trình nhanh gấp đôi.

Giải.

(a) Không có đường ống. Mỗi lệnh phải đi hết $5$ pha rồi lệnh sau mới bắt đầu.

Số chu kỳ $=100\times5=\mathbf{500}$ chu kỳ.

Có đường ống. Lệnh đầu tiên mất đủ $5$ chu kỳ để đi hết đường ống; sau đó mỗi chu kỳ có thêm một lệnh hoàn thành.

Số chu kỳ $=5+(100-1)=\mathbf{104}$ chu kỳ.

Nhanh hơn khoảng $4{,}8$ lần — gần bằng số pha, và đó là quy luật chung: với $n$ pha, lợi ích tối đa tiệm cận $n$ lần khi số lệnh đủ lớn.

Nhưng đây là con số lý tưởng. Trong thực tế, mỗi lệnh nhảy được thực hiện buộc phải xoá các lệnh đã nạp sai và nạp lại từ đầu, mất khoảng $4$ chu kỳ. Một chương trình có nhiều vòng lặp và rẽ nhánh sẽ không đạt được mức $4{,}8$ lần này.

(b) Vì sao $8$ nhân không nhanh gấp đôi $4$ nhân.

Chỉ $70\%$ khối lượng công việc chia được cho nhiều nhân; $30\%$ còn lại phải chạy tuần tự và không nhanh lên chút nào dù có bao nhiêu nhân.

Giả sử một nhân mất $100$ đơn vị thời gian:

Với $4$ nhân: $30+\dfrac{70}{4}=30+17{,}5=47{,}5$ đơn vị.
Với $8$ nhân: $30+\dfrac{70}{8}=30+8{,}75=38{,}75$ đơn vị.

Nhân đôi số nhân chỉ giảm thời gian khoảng $18\%$, chứ không phải $50\%$.

Giới hạn tuyệt đối: ngay cả với vô hạn nhân, thời gian không xuống dưới $30$ đơn vị — tức nhanh nhất cũng chỉ được $3{,}3$ lần. Phần tuần tự đặt ra một mức sàn không vượt qua được.

Thêm chi phí thực tế: nhiều nhân hơn còn kéo theo chi phí điều phối và tranh chấp bộ nhớ dùng chung, nên con số thực tế còn kém hơn $38{,}75$ đơn vị đã tính ở trên.

Bẫy hay mất điểm — Viết ‘gấp đôi số nhân thì chương trình chạy nhanh gấp đôi’. Chỉ phần công việc CHIA ĐƯỢC mới nhanh lên; phần tuần tự đặt ra mức sàn, và chi phí điều phối giữa các nhân còn ăn thêm vào phần lợi ích.
Phải nhớ — RISC đơn giản và tiết kiệm điện, CISC ít lệnh nhưng phần cứng phức tạp. Đường ống cho lợi ích tiệm cận số pha nhưng bị lệnh nhảy phá. SIMD một lệnh nhiều dữ liệu, MIMD nhiều lệnh nhiều dữ liệu. Và nhiều nhân không cho tốc độ tăng tương ứng.

Đọc xong rồi — làm thử ngay

Bài tập của chương Advanced Architecture, Networks and Computational Thinking gồm 14 câu trắc nghiệm và 3 đề tự luận. Đáp án hiện ngay khi chọn, miễn phí.

Làm bài tập chương →