Kiến trúc các tập lệnh CISC và RISC

Tổng quan về RISC CISC

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óa) là mộ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.

Ngày nay CPU RISC (và microcontrollers) chiếm 1 lượng lớn CPU được sử dụng. Kỹ thuật thiết kế RISC đem đến sức mạnh ngay cả ở những kích thước nhỏ, do đó nó nhanh chóng chiếm lĩnh hoàn toàn thị trường CPU nhúng công suất thấp. Đây là một thị trường cực kỳ lớn của CPU, có thể tìm thấy chúng trong xe hơi, điện thoại di động, thậm chí một số thiết bị khác có thể chứa hàng tá CPU loại này.

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 như 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ớ. Khuynh hướng thiết kế VXL này được gọi là Complex Instruction Set Computer – CISC.

Kiến trúc tập lệnh CISC

CISC là tên viết tắt của Máy tính Bộ hướng dẫn phức tạp . Các bộ xử lý CISC đã được phát triển vào những năm 1970 trước khi có sự phát triển của các bộ xử lý RISC (Máy tính Bộ hướng dẫn Giảm). Trong giai đoạn này, bộ nhớ máy tính sử dụng là “nhỏ” và “rất đắt”.

Bộ xử lý CISC rất hữu ích trong việc đơn giản hóa mã và làm cho nó ngắn hơn để giảm yêu cầu bộ nhớ. Trong bộ xử lý CISC, một lệnh đơn có ‘một số hoạt động cấp thấp’. Điều này làm cho các hướng dẫn CISC ngắn nhưng ‘phức tạp’.

Mục tiêu chính của một bộ xử lý CISC là để giảm thiểu kích thước chương trình bằng cách giảm các số hướng dẫn trong một chương trình. Điều này được thực hiện bằng cách ‘nhúng một số lệnh cấp thấp vào một lệnh phức hợp duy nhất’. Sau đó, khi được giải mã, lệnh này sẽ tạo ra một số vi lệnh để thực thi.

Bây giờ nếu một chương trình / phần mềm ngày càng được đơn giản hóa thì phần cứng phải hoạt động và phải có khả năng thực hiện các tác vụ phức tạp. Đó là lý do tại sao một bộ xử lý CISC có phần cứng phức tạp. Sơ đồ khối của kiến ​​trúc CISC được đưa ra dưới đây:

Ở đây, ta thấy có một đơn vị điều khiển vi (CU) chương trình đặc biệt sử dụng một loạt các vi lệnh của vi chương trình được lưu trữ trong “bộ nhớ điều khiển” của thiết bị điều khiển vi chương trình và tạo ra các tín hiệu điều khiển .

Bộ điều khiển truy cập các tín hiệu điều khiển do bộ điều khiển vi chương trình tạo ra và vận hành chức năng của phần cứng bộ xử lý.

Lệnh và đường dẫn dữ liệu tìm nạp mã opcode và toán hạng của các lệnh từ bộ nhớ.

Bộ nhớ cache và bộ nhớ chính là nơi hướng dẫn chương trình và toán hạng được lưu trữ.

Các lệnh CISC có bản chất phức tạp và chiếm nhiều hơn một từ trong bộ nhớ. Giống như RISC sử dụng Load / Store để truy cập toán hạng bộ nhớ, CISC có lệnh Move để truy cập toán hạng bộ nhớ.

Nhưng, không giống như Load và Store, hoạt động Move trong CISC có phạm vi rộng hơn. Các hướng dẫn CISC có thể “truy cập trực tiếp các toán hạng bộ nhớ”.

Bảng dưới cho các đặc tính của vài máy CISC tiêu biểu. Ta nhận thấy cả ba máy đều có điểm chung là có nhiều lệnh, các lệnh có chiều dài thay đổi. Nhiều cách thực hiện lệnh và nhiều vi chương trình được dùng.

Tiến bộ trong lĩnh vực mạch kết (IC) và kỹ thuật dịch chương trình làm cho các nhận định trước đây phải được xem xét lại, nhất là khi đã có một khảo sát định lượng về việc dùng tập lệnh các máy CISC.

Năm sản xuất 1973 1978 1982
Số lệnh 208 303 222
Bộ nhớ vi chương trình 420KB 480KB 640KB
Chiều dài lệnh (tính bằng bit) 16 – 48 16 – 456 6 – 321
Kỹ thuật chế tạo ECL – MSI TTl – MSI NMOS VLSI
Cách thực hiện lệnh Thanh ghi – bộ nhớ Bộ nhớ – bộ nhớ Thanh ghi – thanh ghi Thanh ghi – bộ nhớ

Bộ nhớ – bộ nhớ

Ngăn xếp Bộ nhớ- bộ nhớ

Kiến trúc tập lệnh RISC

Ví dụ, chương trình dịch đã biết sử dụng các thanh ghi và không có sự khác biệt đáng kể nào khi sử dụng ô nhớ cho các vi chương trình hay ô nhớ cho các chương trình. Điều này dẫn tới việc đưa vào khái niệm về một máy tính với tập lệnh rút gọn RISC vào đầu những năm 1980. Các máy RISC dựa chủ yếu trên một tập lệnh cho phép thực hiện kỹ thuật ống dẫn một cách thích hợp nhất bằng cách thiết kế các lệnh có chiều dài cố định, có dạng đơn giản, dễ giải mã. Máy RISC dùng kiểu thực hiện lệnh thanh ghi – thanh ghi. Chỉ có các lệnh ghi hoặc đọc ô nhớ mới cho phép thâm nhập vào ô nhớ.

– Bộ xử lý RISC có nhiều thanh ghi để giảm bớt việc thâm nhập vào bộ nhớ trong. Ngoài ra các bộ xử lý RISC đầu tiên thực hiện tất cả các lệnh trong một chu kỳ máy.

Bộ xử lý RISC có các lợi điểm sau:

– Diện tích của bộ xử lý dùng cho bộ điều khiển giảm từ 60% (cho các bộ xử lý CISC) xuống còn 10% (cho các bộ xử lý RISC). Như vậy có thể tích hợp thêm vào bên trong bộ xử lý các thanh ghi, các cổng vào ra và bộ nhớ cache…

– Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản, nhờ có nhiều thanh ghi (ít thâm nhập bộ nhớ), và nhờ thực hiện kỹ thuật ống dẫn liên tục và có hiệu quả (các lệnh đều có thời gian thực hiện giống nhau và có cùng dạng).

– Thời gian cần thiết để thiết kế bộ điều khiển là ít. Điều này góp phần làm giảm chi phí thiết kế.

– Bộ điều khiển trở nên đơn giản và gọn làm cho ít rủi ro mắc phải sai sót mà ta gặp thường trong bộ điều khiển.

Trước những điều lợi không chối cãi được, kiến trúc RISC có một số bất lợi:

Các chương trình dài ra so với chương trình viết cho bộ xử lý CISC. Điều này do các nguyên nhân sau:

+ Cấm thâm nhập bộ nhớ đối với tất cả các lệnh ngoại trừ các lệnh đọc và ghi vào bộ nhớ. Do đó ta buộc phải dùng nhiều lệnh để làm một công việc nhất định.

+ Cần thiết phải tính các địa chỉ hiệu dụng vì không có nhiều cách định vị.

+ Tập lệnh có ít lệnh nên các lệnh không có sẵn phải được thay thế bằng một

chuỗi lệnh của bộ xử lý RISC.

Các chương trình dịch gặp nhiều khó khăn vì có ít lệnh làm cho có ít lựa chọn để diễn dịch các cấu trúc của chương trình gốc. Sự cứng nhắc của kỹ thuật ống dẫn cũng gây khó khăn.

Có ít lệnh trợ giúp cho ngôn ngữ cấp cao.

Các bộ xử lý CISC trợ giúp mạnh hơn các ngôn ngữ cao cấp nhờ có tập lệnh phức tạp. Hãng Honeywell đã chế tạo một máy có một lệnh cho mỗi động từ của ngôn ngữ COBOL.

Các tiến bộ gần đây cho phép xếp đặt trong một vi mạch, một bộ xử lý RISC nền và nhiều toán tử chuyên dùng.

Thí dụ, bộ xử lý 860 của Intel bao gồm một bộ xử lý RISC, bộ làm tính với các số lẻ và một bộ tạo tín hiệu đồ hoạ.

So sánh giữa RISC và SISC

RISC CISC
Nó là một Máy tính Bộ Hướng dẫn Giảm. Nó là một máy tính tập lệnh phức tạp.
Nó nhấn mạnh vào phần mềm để tối ưu hóa tập lệnh. Nó nhấn mạnh vào phần cứng để tối ưu hóa tập lệnh.
Nó là một đơn vị lập trình có dây cứng trong Bộ xử lý RISC. Bộ vi lập trình trong Bộ xử lý CISC.
Nó yêu cầu nhiều bộ thanh ghi để lưu trữ lệnh. Nó yêu cầu một bộ thanh ghi duy nhất để lưu trữ lệnh.
RISC có giải mã lệnh đơn giản. CISC có cách giải mã lệnh phức tạp.
Sử dụng đường ống rất đơn giản trong RISC. Khó sử dụng đường ống trong CISC.
Nó sử dụng một số lượng giới hạn lệnh yêu cầu ít thời gian hơn để thực hiện các lệnh. Nó sử dụng một số lượng lớn lệnh đòi hỏi nhiều thời gian hơn để thực hiện các lệnh.
Nó sử dụng LOAD và STORE là các hướng dẫn độc lập trong việc đăng ký để đăng ký tương tác của một chương trình. Nó sử dụng lệnh LOAD và STORE trong tương tác giữa bộ nhớ với bộ nhớ của một chương trình.
RISC có nhiều bóng bán dẫn hơn trên thanh ghi bộ nhớ. CISC có các bóng bán dẫn để lưu trữ các lệnh phức tạp.
Thời gian thực thi RISC rất ngắn. Thời gian thực hiện CISC lâu hơn.
Kiến trúc RISC có thể được sử dụng với các ứng dụng cao cấp như viễn thông, xử lý hình ảnh, xử lý video, v.v. Kiến trúc CISC có thể được sử dụng với các ứng dụng cấp thấp như tự động hóa gia đình, hệ thống an ninh, v.v.
Nó có hướng dẫn định dạng cố định. Nó có hướng dẫn định dạng thay đổi.
Chương trình được viết cho kiến ​​trúc RISC cần chiếm nhiều dung lượng hơn trong bộ nhớ. Chương trình được viết cho kiến ​​trúc CISC có xu hướng chiếm ít dung lượng hơn trong bộ nhớ.
Ví dụ về RISC: ARM, PA-RISC, Power Architecture, Alpha, AVR, ARC và SPARC. Ví dụ về CISC: VAX, Motorola 68000 family, System / 360, AMD và CPU Intel x86.