Lập trình nano

Một phần của tài liệu Bài giảng: Cấu trúc máy tính và ghép nối pot (Trang 101 - 103)

c, Liên kết thông qua stack

6.2.5. Lập trình nano

Trong hình 6.10 ở trên, chúng ta đã nghiên cứu về cấu trúc của CPU, trong đó ta thấy có một vùng nhớ control store kích thước 2048 x 41 bit. Đây là vùng nhớ

chứa các vi lệnh. Các vi lệnh này sẽ được nạp vào thanh ghi điều khiển MIR để điều khiển các luồng dữ liệu trong hệ thống. Vấn đề đặt ra là ta có thể thiết kế

vùng nhớ này như thế nào

Thông thường, vùng nhớ control store sẽ lưu trữ 2048 vi lệnh khác nhau, mỗi vi lệnh có kích thước 41 bit. Tuy nhiên, nếu trong trường hợp hệ thống có nhiều vi lệnh giống nhau, chúng ta có thể tiết kiệm kích thước vùng nhớ này bằng cách là lưu trữ một vi lệnh duy nhất được gọi là nanostore và sẽ đánh chỉ số để truy cập vào các nanostore này.

Hình 6.19a chỉ ra kích thước bộ nhớ trong trường hợp cơ bản là 2048 x 41 bit. Khi đó dung lượng cần thiết của bộ nhớ là 2048 x 41 = 83968 bit

Hình 6.19. (a) Vùng nhớ control store (b) Lập trình nano

Bây giờ hãy giả sử là hệ thống của ta không sử dụng 2048 vi lệnh khác nhau mà chỉ sử dụng khoảng 100 vi lệnh. Thông thường, 100 vi lệnh này vẫn nằm trong vùng nhớ 2048 x 41 bit, trong đó có nhiều hàng có cùng một nội dung. Với mục

đích sắp xếp lại vùng nhớ đó để giảm thiểu dung lượng bộ nhớ cần sử dụng (nói cách khác là lập trình lại vùng nhớ - lập trình nano), ta có thể thực hiện như sau. Vùng nhớ thứ nhất cần dùng là vùng nhớ có tên nanoprogram được sử dụng để

chứa 100 vi lệnh khác nhau. Vùng nhớ thứ 2 là vùng nhớ microgram có 2048 hàng tương ứng với số hàng mặc định trong ARC, số cột trong mỗi hàng có số

bit tương ứng với số vi lệnh, ở đây là 100. Do đó ta cần sử dụng ở đây là k = log2(100) = 7. Vùng nhớ microgram này chứa 2048 giá trị mà mỗi giá trị mã hóa tương ứng 1 lệnh trong vùng nhớ nanoprogram. Lúc đó tổng vùng nhớ mà ta cần sử dụng là 18436 bit

Một phần của tài liệu Bài giảng: Cấu trúc máy tính và ghép nối pot (Trang 101 - 103)