Khối điều khiển Control section

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 96 - 99)

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

6.2.2. Khối điều khiển Control section

Vi kiến trúc theo cấu trúc vi chương trình được thể hiện như hình 6.10. Trên hình thể hiện cả khối luồng dữ liệu, khối điều khiển và kết nối giữa các khối. Trung tâm của khối điều khiển là vùng nhớ kích thước 2048 word x 41 bit. Vùng nhớ này chứa dữ liệu theo hàng, mỗi một hàng điều khiển một bước trong việc thực thi lệnh. Vùng nhớ ROM này sẽ có tên là control store trong tài liệu này. Mỗi một từ 41 bit được gọi là một vi lệnh microinstruction. Khối điều khiển chịu trách nhiệm nạp vi lệnh, tương tự như với các máy tính tương tự

ARC khác. Hoạt động của các vi lệnh được điều khiển bởi thanh ghi vi lệnh MIR (microprogram instruction register), thanh ghi trạng thái %psr, và một cơ

chế để xác định vi lệnh nào sẽ được thực thi tiếp theo. Cơ chế đó bao gồm khối

điều khiển rẽ nhánh CBL (Control Branch Logic), và khối Control Store Address MUX. Ở đây cũng không cần thiết phải có một máy tính riêng biệt để

quản lý, lưu trữ địa chỉ của vi lệnh kế tiếp bởi vì địa chỉ đó được tính toán trực tiếp trong mỗi chu kỳ lệnh

Khi vi cấu trúc bắt đầu hoạt động, giả sử là lúc bắt đầu cung cấp nguồn, mạch reset (không thể hiện trên hình) sẽ nạp vi lệnh ở địa chỉ 0 trong bộ nhớ control store vào thanh ghi vi lệnh MIR và thực thi nó. Bắt đầu từ thời điểm này, các lệnh kế tiếp được thực thi từ các khối Next, Decode hay khối Jump trong khối CS Address MUX phụ thuộc vào trường COND trong thanh ghi vi lệnh MIR và khối điều khiển rẽ nhánh và logic CBL. Mỗi khi một vi lệnh được đặt vào MIR, luồng dữ liệu tương ứng sẽ được thực hiện. Đó là luồng dữ liệu nào phụ thuộc

vào nội dung của các trường cụ thể trong thanh ghi MIR

Hình 6.10. Vi kiến trúc của ARC

Cấu trúc của một vi lệnh được thể hiện trên hình 6.11. Từ bên trái sang, bắt đầu là trường A gồm 6 bit. Tổ hợp của các bit này sẽ quyết định kích hoạt luồng dữ

liệu tương ứng đi từ thanh ghi lên hệ thống bus A. Trường AMUX gồm 1 bit tiếp theo quyết định dữ liệu từ trường A decoder sẽ được nạp từ trường A trong thanh ghi MIR (AMUX = 0) hay được nạp từ trường rs1 trong thanh ghi %ir (AMUX = 1). Tương tự như vậy, trường B và C sẽ chỉ ra thanh ghi được truy xuất lên hệ thống bus B và bus C. BMUX quyết định dữ liệu trên B decoder

được lấy từ MIR (BMUX = 0) hay từ rs2 trong %ir còn CMUX quyết định dữ

liệu trên C decoder được lấy trên MIR (CMUX = 0) hay từ rd trong %ir

Tín hiệu RD và WR là các tín hiệu quyết định xem bộ nhớ được đọc hay ghi. Quá trình là đọc nếu RD = 1 và quá trình là ghi nếu WR = 1. Tín hiệu RD và WR sẽ không đồng thời là 1 tại cùng một thời điểm, nhưng có thể đồng thời là 0 khi không diễn ra quá trình truy cập bộ nhớ. Trong cả 2 quá trình đọc và ghi dữ

liệu, địa chỉ ô nhớ sẽ được lấy trực tiếp trên hệ thống bus A, dữ liệu từ ALU đi vào bộ nhớđược lấy trên bus B còn dữ liệu từ bộ nhớ đi vào ALU được lấy trên bus C. Tín hiệu RD cũng điều khiển bộ dồn kênh 64 sang 32 (bộ MUX). Đây là bộ phận lựa chọn tín hiệu trên bus C sẽ được nạp từ bộ nhớ ngoài (RD = 1) hay

được lấy từ ALU (RD = 0)

Trường ALU quyết định xem ALU sẽ thực thi hành động gì như trên hình 6.4. Có tất cả 16 lệnh mà ALU có thể thực hiện được tương ứng với 4 bit trong trường ALU. Điều này cũng có nghĩa là không có cách nào để “tắt” ALU khi không sử dụng, ví dụ như trong quá trình đọc và ghi bộ nhớ

Trường COND sẽ “chỉ dẫn” bộ vi điều khiển nạp vi lệnh kế tiếp từ bộ nhớ

control store hoặc nạp từ một vị trí được chỉ ra trong trường JUMP ADDR trong thanh ghi MIR hoặc từ một mã lệnh trong thanh ghi %ir. Trường COND được biên dịch ra bảng thể hiện trong hình 6.12. Nếu COND = 000, sẽ không có lệnh nhảy nào được tực hiện, dữ liệu trong khối Next trong khối CS Address MUX sẽ được nạp. Khối Next này được tính toán bởi một bộ đếm CSAI (Control Store address increment) thể hiện trong hình 6.10. Trong các trường hợp COND có giá trị 001, 010, 011, 100 hay 101, lệnh nhảy có điều kiện sẽ trỏ tới vùng nhớ

control store tương ứng được lưu trong trường JUMP ADDR tùy thuộc vào giá trị của các bit n, z, v, hay c hoặc bit thứ 13 trong thanh ghi %ir. Nếu COND = 110, lệnh nhảy không điều kiện sẽ được thực hiện. Trường COND là 111 chỉ ra rằng tại thời điểm đó đang diễn ra quá trình giải mã lệnh. Khi đó, lệnh kế tiếp

trong control store được nạp vào MIR được lấy từ khối Next trong CS Address MUX hoặc trong khối JUMP.

Hình 6.12. Cấu hình trường COND trong vi lệnh

Cuối cùng, trường JUMP ADDR chứa 11 bit ở tận cùng bên phải của thanh ghi MIR sẽ chứa vị trí của vi lệnh chứa trong vùng nhớ control store giúp hệ thống có thể nhảy đên vị trí bất kỳ trong vùng nhớđó.

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 96 - 99)