Khối điều khiển đường ống dẫn (Control pipeline)

Một phần của tài liệu THIẾT KẾ VÀ ỨNG DỤNG BỘ VI XỬ LÝ 32 BIT DÙNG NGÔN NGỮ VHDL (Trang 64)

Tập lệnh được chuyển qua 4 giai đoạn trong đường ống dẫn: nhận lệnh (I),

đọc lệnh (R), thực thi lệnh (E) và ghi lại dữ liệu (W). Tín hiệu điều khiển ở mỗi giai đoạn sẽ kiểm soát các phần của bộ phận đường dữ liệu tương ứng để thực hiện chức năng đọc, thực thi và ghi. Các thanh ghi sẽ lưu trữ dữ liệu tương ứng tại mỗi phần của đường dữ liệu. Bằng cách này, dữ liệu được truyền qua đường dữ liệu trong các giai đoạn R, E và W. Có đến 3 tập lệnh có thểđược thực hiện cùng 1 lúc trong đường dẫn dữ liệu. Lệnh đọc dữ liệu, thực thi và ghi kết quả có thể được thực hiện trong mỗi chu kỳ xung clock.

Tín hiệu Miêu tả Bits Đồng bộ

BY2A Bypass kết quả vào A-Input của ALU 1 Đồng bộ

BY2B Bypass kết quả vào B-Input của ALU 1 Đồng bộ

BY2C Lựa chọn tín hiệu bypass từ cache 1 Đồng bộ

DSP Giảm con trỏ ngăn xếp ( decrement stack pointer) 1 Đồng bộ

IPC Tăng bộđếm chương trình ( increment program

ISP Tăng con trỏ ngăn xếp ( increment stack pointer) 1 Đồng bộ

SPC

BYC2A_W

Chọn PC hoạc Register ( 00 : Register File, 01: Program Counter, 10: Bypass RF từ cache với dữ

liệu từ Write nếu dep/break/dep

2 Đồng bộ

R[13] & LIM

BYC2B_W

2 bit điều khiển: LSB được gắn với bit 13 của opcode

000: Register File, 001: Immediate, 11X: Long Immediate, 100: Bypass RF từ cache với dữ liệu từ

write nếu dep/break/dep

3 Đồng bộ

RDCE Tín hiệu cho phép đọc dữ liệu từ cache ( mặc định:

ghi vào tập thanh ghi từ ALU) 1 Đồng bộ WR Tín hiệu cho phép ghi và thanh ghi ( write

Register) 1 Đồng bộ

WPC Tín hiệu cho phép ghi vào PC ( write Program

Counter) 1 Đồng bộ

WPC2S Tín hiệu cho phép ghi từ PC vào Stack ( write PC

to Stack) 1 Đồng bộ

WS2PC Tín hiệu cho phép ghi từ Stack vào PC ( write

Stack to Program Counter) 1 Đồng bộ WDC Tín hiệu cho phép ghi dữ liệu vào Cache ( write

data cache) 1 Đồng bộ

Bng 4.7: Mô tả chức năng các tín hiệu Hoạt động của luồng dữ liệu ở mỗi giai đoạn : (adsbygoogle = window.adsbygoogle || []).push({});

INSTRUCTION-STAGE (I) : nhận lệnh từ bộ nhớ

READ-STAGE (R): Được nêu trên trong giai đoạn này bộđiều khiển sẽđọc lệnh, tách ra được RS, RS2. Từđó, bộđiều khiển quyết định hai giá trị ngõ vào để

RS: Bit (18:14) quyết định giá trị của thanh ghi A sẽ được truyền vào từ

thanh ghi nào. Kết hợp với mã lệnh còn cho phép ta chọn giá trịđưa vào thanh ghi A sẽ là tập thanh ghi hay giá trị PC.

RS2: Giá trị của thanh ghi B bị chi phối bởi ba yếu tố: + Bit immediate: bit (13)

+ Source2: bit (4:0)

+ Giá trị immediate: bit (12:0)

Khi bit immediate = 0, giá trị của thanh ghi B sẽđược đưa từ tập thanh ghi. Lúc đó địa chỉ của thanh ghi được qui định bởi source2 bit (4:0). Khi bit immediate = 1, giá trị của thanh ghi B sẽ được đưa trực tiếp thông qua giá trị

immediate: bit (12:0). Đặc biệt đối với các lệnh JUMPR, CALLR giá trị long- immediate sẽ là 32 bit theo cấu trúc nhưđã trình bày trên phần opcode.

EXECUTION-STAGE (E): lệnh được thực hiện trong giai đoạn thực thi lệnh. Bốn bit cuối (28:25) của 7 bit mã lệnh chỉ rõ hoạt động của ALU, chúng

được nối vào bộ ALU. Tất cả các lệnh đều liên quan đến hoạt động của ALU ngoại trừ RET. Đối với RET, bit (28) là 0 nói lên rằng không có phép toán nào của ALU được thực hiện.

WRITE-STAGE (W): trong giai đoạn ghi, kết quả được ghi vào tập thanh ghi. Trong trường hợp lệnh LOAD/STORE, dữ liệu thích hợp sẽđược ghi lần lượt vào RF/Cache. Thanh ghi đích {bit (23:19)} được nối với tập thanh ghi cho 1 trong 2 trường hợp:

Khi dữ liệu được ghi vào tập thanh ghi, địa chỉ đích đơn giản chỉ xác định rõ địa chỉ của thanh ghi mà dữ liệu trong đó được lưu trữ.

Khi dữ liệu được chuyển từ tập thanh ghi tới bộ nhớ đệm, địa chỉ đích được sử dụng như là địa chỉ nguồn.

Các lệnh được chuyển từ bộ nhớ chỉ lệnh vào giai đoạn nhận lệnh I (Instruction stage) trên cạnh lên của xung clock (phase 1). Sự dịch chuyển của các thanh ghi I, R, E và W được thực hiện trên cạnh xuống của tín hiệu xung clock

(phase 2), W lấy từ E, E lấy từ R, R lấy từ I và thanh ghi I sẽ load các lệnh mới từ

bộ nhớ.

Một phần của tài liệu THIẾT KẾ VÀ ỨNG DỤNG BỘ VI XỬ LÝ 32 BIT DÙNG NGÔN NGỮ VHDL (Trang 64)