CHƢƠNG 2 : BỘ XỬ LÝ
2. Kiến trúc CISC, RISC
Các vi xử lý hoạt động theo nguyên tắc kể trên có số lƣợng lệnh vĩ mơ lớn (thƣờng hơn 300 lệnh), có các khả năng định địa chỉ phức tạp, các lệnh này đƣợc thực hiện bằng một chuỗi vi lệnh, vi chƣơng trình. Do vậy các vi xử lý này đƣợc gọi là máy tính có tập lệnh phức tạp CISC (Complex Instruction Set Computer). Vi chƣơng trình đƣợc phát triển mạnh trong những năm 70 khi bộ nhớ chính có tốc độ truy cập tƣơng đối chậm. Lúc đó các nhà thiết kế máy tính sử dụng bộ nhớ chính tốc độ chậm để lƣu trữ các lệnh phức tạp tạo nên chƣơng trình ở mức máy. Các lệnh đó sẽ đƣợc dịch bằng vi mã trong bộ nhớ điều khiển vi chƣơng trình có tốc độ nhanh hơn. Ngày nay, các bộ nhớ chính có thời gian truy cập ngắn hơn 80ns làm cho các ƣu điểm kể trên của vi chƣơng trình khơng những biến mất mà còn gây cản trở cho hệ thống.
Trong hàng thập kỷ, các nhà khoa học máy tính đã nghiên cứu cách thức mà các máy tính hiện nay chạy chƣơng trình. Điều tra thống kê đã chỉ ra những kết luận sau:
Trong nhiều chƣơng trình điển hình đƣợc xử lý bằng bộ xử lý CISC nhƣ nói trên thì đến 80% thời gian chạy chƣơng trình đƣợc thực hiện chỉ bởi 20% số lệnh trong tập lệnh
Ví dụ: tác giả Fairclough đã chia các lệnh ra thành 8 nhóm và đã thống kê đƣợc kết quả trung bình tần suất sử dụng (xét về cả chƣơng trình và kiến trúc máy tính) của chúng nhƣ sau:
Nhóm 1 2 3 4 5 6 7 8
Tần suất % 45.28 28.73 10.75 5.92 3.91 2.93 2.05 0.44 Trong đó:
1 là nhóm các lệnh chuyển dữ liệu
2 là nhóm các lệnh thay đổi tính tuần tự của chƣơng trình (branch, call, return)
4 là nhóm các lệnh so sánh 5 là nhóm các lệnh logic 6 là nhóm các lệnh dịch 7 là nhóm các lệnh xử lý bit 8 là nhóm các lệnh vào/ra
Rõ ràng trong tổng số 8 nhóm lệnh thì 2 nhóm lệnh chuyển dữ liệu và thay đổi chƣơng trình có tần suất sử dụng chiếm đến 74%
Có những trƣờng hợp, để đạt đƣợc cùng một kết quả thì việc chạy một chuỗi lệnh đơn giản sẽ nhanh hơn là chạy một lệnh phức tạp.
Những kết luận này là tiền đề để một loại vi xử lý khác ra đời: nó hoạt động theo phƣơng pháp sử dụng tập lệnh rút gọn RISC (Reduced Instruction Set Computer). Tập lệnh ở đây đƣợc hạn chế vào các lệnh chính yếu cần thiết trong số 20% lệnh nói trên và phần cứng đƣợc thiết kế sao cho các phần tử RISC này hiểu ngay đƣợc lệnh máy do chƣơng trình cung cấp. Do đó, các lệnh loại này khơng cần chuyển cho bộ giải mã vi lệnh mà có thể thực hiện đƣợc ngay. Kiểu kiến trúc vi xử lý mới có tên gọi là RISC này cho phép thực hiện một mã thao tác chỉ trong một chu kỳ máy.
Các đặc điểm của kiến trúc RISC
Kiến trúc RISC cần có những đặc điểm sau:
- Cần có đủ số thanh ghi (thực chất là các bộ nhớ ngay trong chip, có thời gian truy cập nhanh hơn so với bộ nhớ ngồi) để khắc phục đƣợc hiệu ứng nghẽn cổ chai
- Vì các lệnh trong nhóm 2 (call, return…) thƣờng xảy ra nên yêu cầu cần có một kiến trúc tạo sự dự phòng cho việc chuyển hiệu quả các tham số giữa các thủ tục
- Các lệnh phức tạp làm tăng thời gian thiết kế, sản xuất và thử nghiệm - Nếu một bộ xử lý RISC đủ nhanh thì nó phải chạy đƣợc một lệnh trong một chu kì máy. Điều này cũng có nghĩa là sự phức tạp của các lệnh phải có giới hạn của chúng
- Kết quả tất yếu suy ra từ điều trên là một kiến trúc có hiệu quả khơng nên đƣợc vi chƣơng trình hóa vì nó phải dịch một lệnh bằng việc chạy các vi lệnh.
- Bộ xử lý hiệu quả phải có một bộ định dạng lệnh đơn. Khi đó việc giải mã lệnh có thể đƣợc thực hiện bằng một mạch logic giải mã tối thiểu
Để giảm thời gian chạy lệnh, các lệnh dài có liên quan tới các vi xử lý thế hệ 1 và 2 cần phải bỏ đi.
2.1. Bộ điều khiển vi chƣơng trình (CISC)
Hình 2.2 Nguyên tắc vận hành của bộ điều khiển dùng vi chương trình
Sơ đồ nguyên tắc của bộ điều khiển dùng vi chƣơng trình đƣợc trình bày ở hình
2.2. Trong kỹ thuật này, các đƣờng dây điều khiển của bộ đƣờng đi dữ liệu ứng với các ngã ra của một vi lệnh nằm trong bộ nhớ vi chƣơng trình. Việc điều khiển các tác vụ của một lệnh mã máy đƣợc thực hiện bằng một chuỗi các vi lệnh. Một vi máy tính nằm bên trong bộ điều khiển thực hiện từng lệnh của vi chƣơng trình này. Chính vi máy tính này điều khiển việc thực hiện một cách tuần tự các vi lệnh để hoàn thành tác vụ mà lệnh mã máy phải thực hiện. Các tác vụ của lệnh mã máy cũng tùy thuộc vào trạng thái của phần đƣờng đi dữ liệu. Bộ điều khiển bằng vi chƣơng trình đƣợc dùng rộng rãi trong các bộ xử lý CISC. Bộ xử lý này có tập lệnh phức tạp với các lệnh có chiều dài khác nhau và có dạng thức phức tạp. Trong các bộ xử lý CISC, ngƣời ta cài đặt một lệnh mã máy bằng cách viết một vi chƣơng trình. Nhƣ vậy cơng việc khá đơn giản và rất hữu hiệu. Các sai sót trong thiết kế automat điều khiển cũng dễ sửa đổi