3. Cấu trúc và tính năng của một số chíp vi xử lý hiện đại
3.2. Cấu trúc RISC, CISC
RISC: (Reduced Instruction-set Computer) CISC: (Complete Instruction-set Computer)
Hình 2.36. Cấu trúcRISC, CISC co bản của máy tính
-Cách đơn giản nhất để có thể khảo sát những ưu nhược điểm của kiến trúc IUSC là so sánh việc thực hiện một phép toán đối với loại kiến trúc CISC trước đây. Giả sử ta phải thực hiện một lệnh nhân hai toán hạng được lưu giữ trong bộ nhớ.
-Hình 2.36 mô tả tổ chức của một máy tính. Bộ nhớ được tạo từ các ô nhớ từ 1: 1 (hàng 1: cột 1) đến 6:4 (hàng 6: cột 4). Khối thực hiện lệnh có nhiệm vụ thực hiện các lệnh tính toán x (nhân), : (chia), + (cộng) và - (trừ).
Tất nhiên, khối thực hiện tính toán chỉ có thể làm việc với các dữ liệu (toán hạng) đã được chứa sẵn ở một trong các thanh ghi A, B, C, D, E hoặc F. Giả sử ta phải tìm tích 2 số, số thứ nhất được chứa ở ô 2:3 và số thứ hai ở ô 5:2, kết quả sẽ được lưu lại vào ô 2:3. Bây giờ ta sẽ tiếp cận cách giải quyết vấn đề trên hai loại CPU, CISC và RISC.
-Trên CPU CISC: ưu tiên hàng đầu của loại CPU này là hoàn thiện một công việc với ít lệnh nhất có thể. Điều này có thể thực hiện nhờ vào việc xây dựng một phần cứng CPU có khả năng hiệu được và thực hiện được một chuỗi các tác nghiệp. Trong trường hợp cụ thể này, CISC sẽ có một lệnh xác định duy nhất, tạm gọi là MULT, mà khi thực hiện, lệnh sẽ nạp hai giá trị toán hạng vào 2 thanh ghi sau đó thực hiện phép nhân rồi ghi kết quả vào một thanh ghi tương ứng. Như vậy công việc sẽ được thể hiện bằng một lệnh như sau:
MULT 2:3,5:2
- Lệnh MULT là một lệnh hoàn thiện (complex). Lệnh làm việc trực tiếp trên băng nhớ của máy tính, chứ không cần người lập trình phải dùng lệnh gọi hay nạp nội dung, ghi nội dung vào ô nhớ. Lệnh rất gần với ngôn ngữ bậc cao. Giả sử ta gọi "a" là giá trị của toán hạng trong ô nhớ 2:3 và "b" là giá trị toán hạng trong ô nhớ 5:2, thì lệnh tương ứng trong ngôn ngữ C là "a = a * b” ưu điểm lớn nhất của hệ thống CISC là chương trình dịch phải làm rất ít việc khi dịch một chương trình, hay một lệnh của ngôn ngữ bậc cao sang ngôn ngữ máy. Vì độ dài của mã lệnh rất nhỏ, nên hệ thống cũng cần ít RAM hơn để ghi nhớ lệnh. Dĩ nhiên, việc thiết kế cấu trúc loại CISC đặc biệt sẽ phải tích hợp các lệnh hoàn thiện bằng phần cứng.
- Trên CPU RISC: các CPU loại RISC chỉ sử dụng các lệnh (lnstruction) có thể thực hiện được trong một chu kỳ xung nhịp. Như vậy lệnh MULT được mô tả ở phần trên được chia thành 3 lệnh nhỏ hơn. “LOAD”
chuyển dữ liệu (toán hạng) từ ô nhớ vào thanh ghi; “PROD" thực hiện phép nhân hai toán hạng được lưu giữ trong các thanh ghi, và lệnh "STORE" sẽ thực hiện việc chuyển kết quả tính toán ghi vào ô nhớ.
- Để thực hiện được phép nhân hai toán hạng, người lập trình phải mã hóa thành 4 lệnh như sau: LOAD A, 2:3
LOAD B, 5:2 PROD A, B STORE 2:3, A
- Có thể thấy rằng với cấu trúc RISC, không thuận lợi lắm cho hoàn thành phép toán nhân hai số vì phải viết nhiều dòng lệnh hơn, cần nhiều RAM hơn đế lưu giữ các lệnh mức assembly. Chương trình dịch cũng phải thiện hiện nhiều việc hơn để chuyển đổi các lệnh của ngôn ngữ bậc cao sang mã máy. Thế nhưng, chiến lược RISC đã mang đến nhiều thuận lợi quan trọng. Vì mỗi lệnh chỉ cần một chu kỳ xung nhịp để thực hiện, toàn bộ chương trình cũng sẽ chỉ cần số chu kỳ xung nhịp như khi thực hiện lệnh MULT ở hệ thống CISC. Nhưng kiến trúc RISC với hệ lệnh rút gọn cần ít linh kiện và không gian cho mạch tích hợp, bỏ qua được các thanh ghi đa năng. Hơn nữa, mỗi lệnh chỉ thực thi trong một chu kỳ xung nhịp nên việc tổ chức đường ống cũng đơn giản hơn nhiều.
- Việc tách lệnh "LOAD" và lệnh "STORE" đã đơn giản hóa đáng kể khối lượng công việc CPU phải thực hiện. Sau khi thực hiện lệnh MULT ở cấu trúc CISC, CPU tự động xóa nội dung các thanh ghi. Nếu một toán hạng nào đó còn tiếp tục được sử dụng cho lệnh tiếp theo, CPU phải nạp lại. Ở cấu
trúc RISC, nội dung của toán hạng vẫn được giữ lại cho đến khi một giá trị mới được nạp vào.
- Cuối cùng, để so sánh một cách toàn diện hơn, công thức sau được dùng để đánh giá khả năng tính toán, xử lý của các loại CPU:
- CISC cố gắng giảm số lệnh trong một chương trình, hy sinh số chu kỳ thực hiện một lệnh trong khi RISC theo chiến lược ngược lại.
- Chỉ các chip họ x86 vẫn trung thành với kiến trúc CISC, dĩ nhiên không được thông dụng lắm vì những lý do khác: Trước hết do sự phát triển vũ bão của công nghệ tích hợp mạch, trong công nghệ sản xuất linh kiện điện tử. Sự giảm giá đến mức khó hiểu của bộ nhớ RAM cũng làm đảo lộn cách nhìn nhận những nhược điểm của các CPU theo kiến trúc RISC. Giá lMbyte RAM năm 1977 là khoảng 5.000USD, nhưng đến năm 1994 là khoảng 6USD, còn đến năm 2005 là khoảng hơn 0,2 USD. Công nghệ chương trình dịch (compiler technology) cũng trở nên hoàn thiện hơn nên CPU loại RISC cùng với bộ nhớ RAM dung lượng lớn và công nghệ phần mềm đã trở thành lý tưởng hơn nhiều đối với các hãng sản xuất máy tính.