Tổng quan cơ chế MIPS

Một phần của tài liệu Tìm hiểu lý thuyết và thực nghiệm về công nghệ FPGA trong thiết kế CPU (Trang 55)

Như đã thể hiện trên hình 5.11, chúng ta cần đến một đơn vị điều khiển cho ph p lựa chọn các đầu vào, tạo ra các t n hiệu cho m i trạng thái, lựa chọn điều khiển cho bộ hợp kênh, điều khiển ALU.

2.4 Chi ti t thành ph n

Trong mục này ta s xây dựng các thành phần để có thể thực hiện các lệnh đơn

giản nhất như: load (lw), store (sw), branch equal be ; các lệnh số học – logic:

add, sub, and, or, seton lessthan slt và lệnh r nhánh bao gồm cả lệnh nhảy j .

u h n A

ALU bao gồm 4 đầu vào điều khiển, các bit này không được mã hóa và chỉ có 6 trạng thái được sử dụng trong số 16 khả năng có thể sảy ra được sử dụng để điều khiển việc t nh toán của ALU.

Phụ thuộc vào lớp lệnh mà ALU s thực hiện một trong năm lệnh đầu ở trên. NOR thì cần thiết cho lớp lệnh khác của MIPS . Để thực hiện lệnh load và store, chúng ta sử dụng ALU để t nh toán địa chỉ của vùng nhớ. Với lệnh R-type, ALU cần

phải thực hiện 1 trong 5 lệnh sau: AN , OR, subtract, add và set on less than phụ thuộc vào giá trị của 6bit ở trường function. Với lệnh r nhánh ALU thực hiện ph p trừ.

ALU control lines Function

0000 AND

0001 OR

0010 add

0110 subtract

0111 set on less than

1100 NOR

Chúng ta có thể tạo ra 4 bit ALU b ng việc sử dụng 1 đợn vị điều khiển nhỏ có các đầu vào là các trường function của lệnh và 2 bit điều khiển mà chúng ta gọi là ALUOp. ALUOp chỉ định ph p toán s được thực thi ứng với giá trị của ALUOp: 00 – load và store; 01 – beq; 10 – xác định ph p toán được mã hóa trong trường function code. Đầu ra của đơn vị điều khiển ALU là một t n hiệu 4 bit dùng để điều khiển trực tiếp ALU b ng cách tạo ra 1 trong 4 trạng thái ở bảng trên.

Bảng 2.1 Các bit điều khiển của ALU dựa vào t n hiệu điều khiển của ALUOp và các t n hiệu ở trường function code đối với các lệnh thuộc lớp R-type.

Instruction opcode ALU Op Instruction operation Function field ALU action ALU control input

LW 00 load word xxxxxx add 0010

SW 00 store word xxxxxx add 0010

Branch equal 01 branch equal xxxxxx subtract 0110

R-type 10 add 100000 add 0010

R-type 10 subtract 100010 subtract 0110

R-type 10 AND 100100 and 0000

R-type 10 OR 100101 or 0001

Trên bảng 2.1 chỉ ra cách thiết lập t n hiệu điều khiển của ALU ứng với 2 bit ALUOp và 6 bit ở function code. Với kiểu thiết kế này cho ta nhiều mức giải mã lệnh, đơn vị điều khiển ch nh s tạo ra t n hiệu của ALUOp làm đầu vào cho ALU, với kiểu đa mức giải mã lệnh s làm giảm được k ch thước của đơn vị điều khiển ch nh CU .

Bảng 2.2 ảng trạng thái của đường điều khiển ALU được gọi là Operation. Đầu vào là ALUOp và function code.

ALUOP Function field

Operation ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 0 0 x x x x x x 0010 x 1 x x x x x x 0110 1 x x x 0 0 0 0 0010 1 x x x 0 0 1 0 0110 1 x x x 0 1 0 0 0000 1 x x x 0 1 0 1 0001 1 x x x 1 0 1 0 0111

Vì chỉ có một số t trong số 64 khả năng của trường function code là cần phải quan tâm và trường function code sử dụng khi bit của ALUOp là 10. ước kế tiếp của quy trình thiết kế là dựa vào mối quan hệ giữa ALUOp và function code để thiết đơn vị điều khiển CU nh m tạo ra các t n hiệu cho ALU. (adsbygoogle = window.adsbygoogle || []).push({});

Th t ơn vị u h n h nh M n Contro n t

Để thiết kế đơn vị điều khiển chúng ta cần quan tâm đến bảng trạng thái đã chỉ ra ở bảng 2.2 tương ứng với 3 loại lệnh là: R-type, lệnh r nhánh và lệnh load store word. Có một số điểm đáng chú ý mà chúng ta cần quan tâm như sau:

 Trường opcode luôn luôn được quy định bởi các bit 31:26

 Hai thanh ghi đọc là rs và rt ở vị tr 25:21 và 20:16. Quy định này phù hợp

với 3 loại lệnh: R-type, branch equal và load store.

 16 bit được sử dụng cho lệnh load, store và r nhánh luôn luôn là 15:0

 Thanh ghi đ ch là một trong hai thanh ghi. Với lệnh load là thanh ghi rt ở vị

tr 20:16. Trong khi lệnh R-type là các bit ở vị tr 15:11 rd . Vì thế ta cần sử dụng đến bộ hợp kênh cho ph p lựa chọn nhiều đầu vào.

Field 0 rs rt rd shamt funct

Bit position 31:26 25:21 20:16 15:11 10:6 5:0 a. R-type instruction Field 35 or 43 rs rt Address Bit position 31:26 25:21 20:16 15:0 b. Load/store instruction Field 4 rs rt Address Bit position 31:26 25:21 20:16 15:0 c. Branch instruction - .

Trong đó, a khuôn dạng của lệnh R-format luôn luôn nhận giá trị opcode là 0, lệnh này có 3 thanh ghi toán hạng: rs, rt và rd. Thanh ghi rs và rt được gọi là các thanh ghi nguồn và rd được gọi là thanh ghi đ ch. ALU function là trường function được giải mã bởi bộ điều khiển ALU đã nói ở trước. R-type thực hiện các lệnh: add, sub, and, or và slt. Trường shamt chỉ được sử dụng cho lệnh shift dịch bit .

b định dạng của lệnh load opcode = 3510 và store opcode = 4310 . Thanh

ghi rs là thanh ghi cơ sở được cộng với 16 bit địa chỉ vùng nhớ. Đối với lệnh load – thanh ghi rt là thanh ghi đ ch; ngược lại đối với lệnh store – rt là thanh ghi nguồn dùng để lưu giá trị đến vùng nhớ.

c định dạng của lệnh branch equal opcode = 4 – thanh ghi rs và rt là thanh ghi nguồn dùng để so sánh 2 giá trị b ng nhau. 16bit của trường địa chỉ được mở rộng dấu, dịch bit và được cộng vào PC để xác định địa chỉ của lệnh r nhánh.

Hình 2.12 chỉ ra các thành phần mới được thêm vào để thiết kế khối điều khiển ALU, t n hiệu ghi write cho thành phần trạng thái, t n hiệu đọc cho vùng nhớ dữ liệu và t n hiệu điều khiển cho bộ hợp kênh. Vì tất cả các bộ hợp kênh có 2 đầu vào nên m i bộ hợp kênh s có một đường điều khiển. Hình 2.12 cũng chỉ ra 7 t n hiệu điều khiển; 2 bit t n hiệu điều khiển ALUOp.

ây giờ ta s xem x t đến chức năng của m i đường điều khiển và làm thế nào để thiết lập chúng. ộ điều khiển CU có thể thiết lập tất cả các t n hiệu nhưng chỉ có

1 t n hiệu giải quyết cho trường opcode của lệnh. T n hiệu điều khiển PCScr được

sử dụng cho câu lệnh r nhánh khi có điều kiện b ng sảy ra và t n hiệu ero ở đầu ra của ALU xác nhận khi điều kiện so sánh b ng là đúng. Để tạo ra t n hiệu PCScr

chúng ta cần AN với một t n hiệu khác của CU, được gọi là t n hiệu Branch với

t n hiệu đầu ra Zero của ALU.

Khối điều khiển ALU được thêm vào. PC không cần có t n hiệu điều khiển ghi vì PC được tự động viết sau m i chu k . T n hiệu điều khiển r nhánh cũng làm

tăng giá trị PC. 9 đường điều khiển 7 từ bảng 2.3 và 2 từ ALUOp có thể được thiết lập dựa vào đơn vị điều khiển được gọi là các bit opcode.

Bảng 2.3 Ảnh hưởng của 7 t n hiệu điều khiển

T n h u T n h u h n t h ự T n h u t h ự

RegDst

Thanh ghi đ ch của lệnh viết giá trị đến thanh ghi (rt-20:16)

Thanh ghi đ ch của lệnh viết giá trị đến thanh ghi (rd-15:11)

RegWrite Không Viết giá trị đến thanh ghi

ALUScr (adsbygoogle = window.adsbygoogle || []).push({});

Toán hạng của ALU thứ 2 đến từ thanh ghi 2 Read data 2)

Toán hạng của ALU thứ 2 là bộ mở rộng dấu 16 bit

PCScr Giá trị của PC = PC 4 PC = PC địa chỉ lệnh r nhánh

MemRead Không Địa chỉ của vùng nhớ dữ liệu được đưa đến t n hiệu Read data out

MemWrite Không Địa chỉ của vùng nhớ dữ liệu được thay b ng t n hiệu Write data in

MemtoReg Viết giá trị từ ALU đến

thanh ghi Viết dữ liệu từ vùng nhớ đến thanh ghi

Khi bit điều khiển của bộ hợp kênh có giá trị t ch cực có nghĩa là bit đầu vào của bộ hợp kênh có giá trị là 1. Trước khi muốn điền bảng trạng thái cho t n hiệu điều khiển chúng ta cần xác định giá trị của opcode là 0, 1 hay X don t care . Hình 2.14 chỉ ra các t n hiệu này từ bảng 2.1, 2.3 và hình 2.14.

Hình 2.14 ộ xử lý dữ liệu đơn chu k với các t n hiệu điều khiển. Đầu vào của CU là 6 bit opcode của trường lệnh. ao gồm 3 bit điều khiển bộ hợp kênh

(RegDest, ALUScr, MemtoReg , 3 bit điều khiển việc đọc và ghi dữ liệu của thanh

ghi và vùng nhớ RegWrite, MemRead, MemWrite , 1 bit dùng để xác định lệnh r

nhánh Branch , 2 bit điều khiển ALU ALUOp . Cổng AN được sử dụng để kết

hợp t n hiệu r nhánh với t n hiệu ero của ALU, đầu ra của cổng AN dùng để xác định lệnh kế tiếp của PC.

Bảng 2.4 Thiết lập các đường điều khiển b ng cách xác định các giá trị từ trường lệnh

Instr RegDst ALUScr Mem toReg Reg Write Mem Read Mem Write Branch ALU Op1 ALU Op0 R-type 1 0 0 1 0 0 0 1 0 lw 0 1 1 1 1 0 0 0 0 sw X 1 X 0 0 1 0 0 0 beq X 0 X 0 0 0 1 0 1

òng đầu tiên của bảng xác định các lệnh của R-type (add, sub, and, or, slt .

Với tất cả các lệnh này, thanh ghi nguồn là rs và rt, thanh ghi đ ch là thanh ghi rd s quyết định các t n hiệu của ALUScr và Reg st. Khi viết giá trị đến thanh ghi Reg st có giá trị là 1 và s không đọc hoặc viết giá trị đến vùng nhớ dữ liệu. Khi t n hiệu của

lệnh r nhánh nhận giá trị 0, giá trị của PC = PC 4, giá trị của PC s được thay thế b ng địa chỉ của lệnh r nhánh nếu t n hiệu ero ở mức cao. Trường ALUOp của R- type thiết lập giá trị 10. òng thứ 2 và thứ 3 của bảng cho t n hiệu điều khiển của lệnh lw và sw, các t n hiệu ALUScr và ALUOp được sử dụng để t nh toán địa chỉ cho lệnh lw và sw. T n hiệu MemRead và MemWrite được thiết lập để truy cập đến vùng nhớ. Cuối cùng, t n hiệu Reg st và RegWrite được sử dụng cho lệnh lw và lưu trữ kết quả đến thanh ghi rt. Lệnh r nhánh tương tự như R-type vì cả 2 thanh ghi rs và rt đều là 2 toán hạng của ALU. Trường ALUOp cho lệnh r nhánh được sử dụng cho ph p trừ ALU = 01 , được sử dụng để kiểm tra điều kiện b ng. Để ý r ng, t n hiệu MemtoReg không được k ch hoạt khi t n hiệu RegWrite có giá trị b ng 0.

add t1, t2, t3. Mặc dù mọi việc sảy ra trong 1 chu k máy nhưng vẫn có 4 bước để thực hiện lệnh này. Các bước thực hiện như sau:

1. Nhận lệnh và tăng giá trị của PC.

2. Thanh ghi t2 và t3 được đọc từ tập thanh ghi, CU thiết lập các t n hiệu

điều khiển để thực hiện thao tác này.

3. ALU thực hiện đọc dữ liệu từ tập thanh ghi, sử dụng fuction code bit 5:0

để tạo ra chức năng cho ALU.

4. Kết quả của ALU được viết đến tập thanh ghi sử dụng bit 15:11 trong

trường lệnh để xác định thanh ghi đ ch t1 .

Các đường điều khiển, các liên kết được tô màu. Lệnh sw được thực thi tương tự lệnh lw. Sự khác biệt ch nh là t n hiệu điều khiển vùng nhớ là t n hiệu đọc và t n hiệu ghi. (adsbygoogle = window.adsbygoogle || []).push({});

Tương tự cho lệnh load:

lw $t1, offset($t2)

Tương tự như hình 2.15, hình 2.16 cũng thể hiện các t n hiệu t ch cực và các đơn vị chức năng cần thiết cho lệnh lw. Lệnh lw phải trải qua 5 bước sau để thực thi:

1. Nhận lệnh từ vùng nhớ lệnh và tăng giá trị PC.

2. Đọc giá trị cho t2 từ tập thanh ghi.

3. ALU t nh tổng giá trị đọc từ tập thanh ghi và mở rộng dấu 16bit, địa chỉ

offset.

4. Địa chỉ của vùng nhớ dữ liệu = tổng của ALU.

5. ữ liệu từ đơn vị vùng nhớ được viết đến tập thanh ghi, thanh ghi đ ch được

xác định bởi các b t 20:16 của trường lệnh t1 .

Cuối cùng, xem x t lệnh r nhánh cho câu lệnh branch – on –equal.

beq $t1, $t2, offset

Lệnh so sánh điều kiện b ng này cũng tương tự như câu lệnh R-format nhưng đầu ra của ALU được xác định giá trị cho PC là PC 4 hay địa chỉ của lệnh r nhánh. Câu lệnh này cũng chỉ ra 4 bước thực hiện và được thể hiện trên hình 2.17.

1. Lệnh được nhận từ vùng nhớ lệnh, tăng giá trị PC.

2. Thanh ghi t1 và t2 được đọc từ tập thanh ghi.

3. ALU thực hiện ph p toán trừ của dữ liệu được đọc từ tập thanh ghi. Giá trị

của PC 4 được cộng thêm với bộ mở rộng dấu 16bit sau khi đã dịch đi 2 bit. Kết quả s được địa chỉ của lệnh r nhánh.

4. T n hiệu ero của đầu ra ALU s được t nh toán lại và lưu vào PC.

Hình 2.17 Các thành phần và t n hiệu điều khiển cho lệnh so sánh b ng. Các đơn vị điều khiển, các liên kết được tô màu. Sau khi đọc dữ liệu từ tập thanh ghi và sử dụng ALU cho việc so sánh, kết quả đầu ra của t n hiệu ero được nạp vào PC.

Đến thời điềm này, ta có thể xác định được các lệnh thực hiện ra sao theo từng bước 1. Các chức năng điều khiển có thể được định nghĩa thông qua bảng 2.5. Đầu ra của các đường điều khiển, các đầu vào là 6bit của trường opcode – OP 5:0 được sử dụng để xác lập bảng trạng thái của quá trình mã hóa lệnh.

Bảng 2.5 Các chức năng điều khiển của lệnh đơn chu k được thể hiện trong bảng trạng thái.

Input/ Output T n h u R-format lw sw beq

Input Op5 0 1 1 0 Op4 0 0 0 0 Op3 0 0 1 0 Op2 0 0 0 1 Op1 0 1 1 0 Op0 0 1 1 0 Output RegDst 1 0 X X ALUScr 0 1 1 0

MemtoReg 0 1 X X RegWrite 1 1 0 0 MemRead 0 1 0 0 MemWrite 0 0 1 0 Branch 0 0 0 1 ALUOp1 1 0 0 0 ALUOp0 0 0 0 1

Hình 2.14 đã chỉ ra sơ đồ thực hiện cho hầu hết các lệnh được nói đến ở phần đầu tiên. Mở rộng các chức năng ở hình 2.14 ta có thể thực hiện cho lệnh nhảy. Lệnh nhảy cũng giống như lệnh r nhánh 2 bit đầu tiên luôn luôn nhận giá trị 00. 26 bit thấp của 32 bit trường lệnh được xác định địa chỉ của đ ch đến. 4bit cao của địa chỉ được thay thế b ng PC 4.

Field 000010 Address

Bit position 31:26 25:0

Hình 2.18 T n hiệu điều khiển được mở rộng từ hình 2.14 cho việc thực hiện lệnh nhảy. Một bộ hợp kênh được thêm vào để lựa chọn giá trị cho PC là địa chỉ của lệnh kế tiếp PC 4 hay giá trị của lệnh r nhánh. ộ hợp kênh được điều khiển thông qua t n hiệu nhảy. Giá trị của địa chỉ đ ch được dịch trái 2 bit trong toàn bộ giá trị 26bit. Có nghĩa là ta s được 2 bit thấp nhất mang giá trị 00, sau đó cộng 4 bit của PC 4 ta được giá trị 32bit được nạp vào giá trị cho giá trị của lệnh nhảy.

Đ nh h u n n ơn hu (adsbygoogle = window.adsbygoogle || []).push({});

Giả sử r ng thời gian thực hiện cho các đơn vị chức năng ch nh được liệt kê bên dưới:

 Đơn vị vùng nhớ: 200ps

 ALU và bộ cộng: 100ps

 Tập thanh ghi đọc và viết : 50ps

Giả sử r ng các bộ hợp kênh, đơn vị điều khiển, PC, bộ mở rộng dấu và các t n hiệu khác không có độ tr , và m i lệnh thực hiện trong 1 chu k máy. Để t nh toán hiệu năng thì các lệnh được thực hiện trên m i thành phần chức năng theo tỷ lệ:

25 cho lệnh load, 45 cho thao tác của ALU, 15 cho lệnh r nhánh và 5 cho

Một phần của tài liệu Tìm hiểu lý thuyết và thực nghiệm về công nghệ FPGA trong thiết kế CPU (Trang 55)