31
CHƢƠNG 3
T CHC B X
Mục đích: Gii thiu tng quan nguyên hoạt động ca vi x lý MIPS. Đưng
dn d liu ca các loi lnh, t chc ca b tính toán lun (ALU). Nguyên lý
hoạt động ca b điều khiển và trình bày các đặc điểm cơ bản ca k thut ng dn.
3.1 GII THIU
Trong chương y gii thiu các nguyên lý và k thuật đưc t chc trong b x
lý. Cách xây dựng đường dn d liu (datapath) vi các tp lệnh bản ca MIPS.
Sau đó trình bày các khái niệm cơ bản ca k thut ng dn (pipelining).
Các lệnh cơ bản được xem xét bao gm:
Các lnh tham chiếu b nh như: load word (lw) và store word (sw)
Các lnh s hc và lun lý: add, sub, AND, OR và slt
Lnh so sánh bng beq và lnh nhy j.
Sơ đồ t chc tng quát của MIPS như sau:
Hình 3.1: Sơ đồ t chc tng quát ca MIPS1
Các lnh bắt đầu bng cách dùng thanh ghi PC (program counter) để xác định địa
ch ca lnh trong b nh lnh. Sau khi lệnh được duyt, các toán hng ca lệnh cũng
được xác định bởi các trưng ca lnh y. Da vào các toán hạng y để tính địa
ch b nh i vi lnh load và store), tính kết qu ca phép toán s học (đối vi các
lnh s hc lun lý) hoặc phép toán so sánh (đối vi lnh nhy). Nếu lệnh đang
thc hin lnh s hc lun lý, kết qu phép tính t ALU phải được ghi vào mt
thanh ghi. Nếu lệnh đang thực hin là lnh load hoc store, kết qu phép tính t ALU
dùng để xác định địa ch b nh để lưu giá trị ca thanh ghi vào b nh (store) hoc
ly giá tr t b nh đưa vào thanh ghi (load).
1 Các hình trong chương này được trích t cuốn sách “Computer organization and Design: The
hardware/software interface” (fourth edition), tác giả: David A.Patterson & John L.Hennessy.
32
3.2 ĐƢỜNG DN D LIU
Đường dn d liu gm b tính toán lun lý, các mch dch, các thanh ghi
các đường ni kết các b phn trên. Nhim v của đường dn d liệu đọc các
toán hng t các thanh ghi, thc hin các phép tính trên các toán hng này trong b
tính toán và lun lý và lưu trữ kết qu vào thanh ghi.
Đưng dn d liu ca các lnh s hc lun lý c lnh b nh thì tương đối
ging nhau. Những điểm khác bit chính gia chúng là:
Các lnh s hc lun dùng ALU vi hai toán hng nhp vào hai thanh
ghi. Trong khi các lnh b nh dùng ALU để tính địa ch vi giá tr nhp vào th
nht mt thanh ghi giá tr nhp vào th hai giá tr độ di (offset) 16 bit cn
được m rng du sang 32 bit.
Kết qu của ALU lưu vào thanh ghi đích (đối vi lnh s hc lun lý)
nhưng kết qu được lưu vào thanh ghi đích được ly t b nh i vi lnh load).
Đưng dn d liu ca các lnh s hc lun lý, các lnh b nh lnh so sánh
bằng được th hin hình 3.2. Để thc hin mt lệnh, đầu tiên lệnh đó sẽ được duyt
t b nh, lnh tiếp theo được thc hin bng cách tăng thanh ghi đếm chương trình
(program counter PC) thêm 4 bởi độ dài mi lệnh 4 byte (trong trường hp
thc hin tun t các lnh).
Trong định dng R-format (các lnh s hc lun lý), ni dung hai thanh ghi
được đọc, sau đó thực hiện phép toán tương ứng trên hai thanh ghi này và ghi kết qu
vào thanh ghi th ba. Thí d: add $t1, $t2, $t3 s đọc ni dung ca $t2 $t3 thc
hin phép tính cộng trên ALU và lưu kết qu vào $t1. Các lnh thuc nhóm y gm
có: add, sub, AND, OR slt. Trong t chức ALU thì hai đầu vào đ dài 32 bit,
một đầu ra cũng độ dài 32 bit. Ngoài ra, ALU còn tín hiu 1 bit th hin kết
qu đầu ra bng 0 các tín hiệu điu khin 4 bit s được trình y phn tiếp
theo.
Tiếp theo, chúng ta s xem xét các lnh b nh bao gm lnh load và lnh store có
định dạng như sau: lw $t1, offset_value($t2) sw $t1, offset_value($t2). Các lnh
này tính địa ch b nh bng cách cng nội dung thanh ghi sở (base register)
trong $t2 với độ di (offset) có dấu 16 bit. Đối vi lnh store thì giá tr lưu trữ vào b
nh được đọc t thanh ghi $t1. Trong khi đó lệnh load thì giá tr đọc t b nh được
ghi vào thanh ghi $t1.
Ngoài ra cn mt b chuyển đổi m rng du t 16 bit của độ di thành 32
bit tương ứng. Đi vi b nh các tín hiệu đầu vào tín hiệu đọc (MemRead)
dùng để đọc d liu và tín hiu ghi (MemWrite) để ghi d liu vào b nh.
Đối vi lnh beq ba toán hng với định dng beq $t1, $t2, offset, hai thanh ghi
được so sánh có bng nhau bng cách thc hin phép tr trong ALU. Kết qu so sánh
được xác định bng tín hiu ra Zero ca ALU. Nếu điều kin so sánh không tha
mãn thì lnh kế tiếp được thc hin (PC + 4). Nếu điều kin so sánh tha mãn thì độ
di 16 bit (m rng dấu thành 32 bit ) được dịch sang trái 2 bit (tương ng nhân vi
4) được cng vi (PC + 4) để thc hin nhảy đến địa ch đích.
33
Đối vi lnh jump (j) được thc hin bng cách thay thế 28 bit ca PC bng 26 bit
ca lệnh được dch sang trái 2 bit.
3.3 T CHC B TÍNH TOÁN VÀ LUN LÝ (ALU)
B tính toán lun (ALU) ca b x MIPS xác định các phép toán thc
hin da vào tín hiệu điều khin 4-bit:
Hình 3.2: Đường dn d liu ca ba loi lệnh cơ bản
34
Tùy thuc vào tng loi lnh, ALU s thc hin một trong các hàm trên. Đối vi
lnh load word store word, ALU thc hin phép cộng đ xác định địa ch b nh.
Đối vi dng lnh R-type, ALU thc hin một trong năm lnh (AND, OR, subtract,
add hoc slt) ph thuc vào 6-bit thp ca trường funct (function) trong định dng
lnh. Vi lnh beq, ALU s thc hin phép toán tr.
Các n hiệu điều khin 4-bit ca ALU th được to ra bng mạch điều khin
đơn giản tín hiu nhp các bit của trường funct cùng vi 2-bit điều khiển đặc
biệt (được gi ALUOp). ALUOp s xác định phép toán thc hin: giá tr 00 thc
hin phép cng cho lnh load store, 01 thc hin phép tr cho lệnh beq, đối vi
giá tr 10 thì phép toán được thc hin ph thuộc vào trường funct của định dng
lệnh. Đối vi giá tr 00 01 của ALUOp thì phép toán được thc hin không ph
thuc vào giá tr của trường funct (trong trường hp y các giá tr của trường funct
được ghi X). Các giá tr ca ALUOp được to ra bởi đơn vị điều khin chính (CU
Control Unit).
Bng 3.1: Thiết lập các bit điều khin ALU dựa vào ALUOp và trường funct
Dng lnh
ALUOp
Lnh
Mã hàm
(funct)
Phép toán
ALU
Tín hiệu điều
khin ALU (tín
hiu nhp)
LW
00
load word
××××××
add
0010
SW
00
store word
××××××
add
0010
Branch equal
01
branch equal
××××××
subtract
0110
R-type
10
add
100000
add
0010
R-type
subtract
100010
subtract
0110
R-type
10
AND
100100
AND
0000
R-type
10
OR
100101
OR
0001
R-type
10
set on less
than
101010
set on less
than
0111
3.4 B ĐIU KHIN CHÍNH (main control unit)
Để thiết kế mạch điều khiển, chúng ta xét ba định dng lệnh bn: định dng
lnh s hc và logic (R-format) opcode = 0, các lnh y ba thanh ghi toán
hng rs, rt rd. Hai thanh ghi rs và rt các thanh ghi ngun, còn rd thanh ghi
đích. Phép toán thực hiện trong ALU được xác định bởi trường funct. Định dng này
35
thc hin các lệnh add, sub, AND, OR và slt. Trường shamt được dùng cho các lnh
dch (shifts). Định dng lnh th 2 định dng cho lnh load (opcode = 35ten)
lnh store (opcode = 43ten). Thanh ghi rs thanh ghi nn, ni dung thanh ghi này
cng với địa ch offset 16 bit để xác định được địa ch b nh. Đối vi lnh load, ni
dung t b nh được chép vào thanh ghi rt. Còn vi lnh store, ni dung t thanh ghi
rt được lưu vào bộ nhớ. Định dng lnh th 3 định dng lnh nhy theo điều kin
so sánh bng (branch equal) opcode = 4. Trong định dng này hai thanh ghi rs
rt các thanh ghi nguồn được dùng để thc hin phép so sánh. Da vào kết qu so
sánh này để quyết định: hoc thc hin lnh kế tiếp (PC+4) hoc cng ni dung
(PC+4) vi địa ch 16 bit để nhảy đến địa ch đích.
Hình 3.3: Ba định dng lnh R-type, load và store, branch
T ba định dng trên, chúng ta rút ra mt s nhận xét như sau:
Trường opcode luôn v trí bit 31:26
C ba định dng thì ch đọc hai thanh ghi rs rt được định v ti v trí 25:21
và 20:16
Thanh ghi nền (base register) cho định dng lnh load và store thì luôn luôn
v trí 25:21 (rs)
Địa ch offset 16 bit cho lnh nhy theo điu kin so sánh bng, lnh load
store thì luôn v trí 15:0
Thanh ghi đích thì mt trong hai v trí: đối vi lnh load thì v trí 20:16
(rt), còn đối vi các lnh R-format thì v trí 15:11 (rd).
Các tín hiệu điều khiển được th hiện như hình 3.4. Trong hình y th hin by
đường điều khin 1-bit và một đường điều khin ALUOp 2-bit. Ngoài ra, còn có thiết
b b điu hp (multiplexor viết tt Mux: thiết b hai tín hiu đầu vào, mt tín
hiu đầu ra mt tín hiệu điều khin. Da vào tín hiệu điều khin tín hiệu đầu
ra được chn mt trong hai tín hiệu đầu vào) được dùng trong kết hp trong h
thng.