lOMoARcPSD| 58950985
KIẾN TRÚC MÁY TÍNH
Chương 1:Giới thiệu chung về máy tính.
Bus hệ thống:
A-Bus Hệ thống
D-Bus Xử lý
C-Bus…
Hoàn tất thực hiện 1 lệnh (chu kỳ lệnh)gồm hai giai đoạn chính:
1.Nhận lệnh(Fetch Cycle).
2.Thực thi lệnh(Execute Cycle).
Thông thường :Đường thẳng.
Đường ống lệnh từ VXL 8086: Rẽ nhánh.
QT: 0 – 0 = 0
1 – 0 = 1
0 – 1 = 1 :Mượn 1
1 - 1 = 0
1 Số nguyên 32 bit:
1111 0000 0101 1010 1100 0011 1011 0111
F O 5 A C 3 B 7
F05AC3B7(Digit - 7)
>= 7 N(-)
<= 7 P(+)
Hệ số 16 (Hexa): 0,1,2,…9,A,B,C….
Vd: 3F8
SUM >= 16 – ( - )
SUM <= 16 – ( giữ nguyên )
Cộng 32 bit: 1234ABCD
+ 7777
12352344
Trừ: ABCD3210
- 7777
lOMoARcPSD| 58950985
ABCCBA99
CHƯƠNG 4:Kiến trúc tập lệnh MIPS
EIU (Main pio) ALU (Số học logic)
32 thanh ghi đa năng
Mult/div(Hi,LO)
Kích thước thanh ghi: 32 bit
FPU (Copro.1) – (Dấu phẩy động ) : Arith (Số học )
32 Thanh ghi dấu phẩy động ($f0,$f1…$f51) Kích
thước thanh ghi: 32 bit
Rẽ nhánh (BNE, BEQ)
Nhảy không điều kiện:J
$31 = $RA = 20
SQRT
JR $RA
R- type ||OP^6 = (*) ||Rs^5| | Rt^5| |Rd ^5| |SA^5| | Funtion^6||
Mã ptoan t/g ng tg/ng T/đích qđ dịch mã ptoan
Fumit^6 2^6 = 64 hàm khác nhau Các
lệnh cộng / trừ số nguyên:
*add & sub: Lệnh sử lý số nguyên có dấu
*addu & subu: Lệnh sử lý số nguyên không dấu
VD:
Translation: f = (g + h) (i + j)
Translate: addu $t0, $t1, $t2
$s0 = $16
$s1 = $17
$s2 = $18
$t0 =$8
$t1 = $9
lOMoARcPSD| 58950985
$t2 = $10
$s1 *36 = 72 = $s1 *4 + $s1 * 32
$s1 = 2
Sll $s0, $s1, 2
Sll $t1, $s1, 5
S$s1 00000002
000010
:$t0 = 8 : 2^3:001000
01000000 :$t1 = 64:2^6
Multiu: $s1, $s2 #(Hi,LO) = $s1 * $s2 = 0001 | 0101
$s1 = 7 4 bit 0111 Hi | LO
$s2 = 3 0011
21 10101
7/3 = 2 = HI | LO 0001 | 0010
Dư 1 = Hi
B = A – 5
$t0 $s0
Addiu = $t0 ,$s0, -5
Lui $s1,10 # $s1 = 10 << 16
$s1 00000000
10 0000000A
000A0000
Addiu $s2,$s1,-1
Binary code
I -type : OP^6 |Rs^5 |Rt^7 | imm^16
OP^6 = Ox 9 = 001001
Rs^5 = $s1 = $17 = 10001
Rt^5 = $s2 = $18 = 10010
lOMoARcPSD| 58950985
Imm^16 = -1 _10 = 1111…111
ADDIU $s1,$0,oxAC51
$s1 = 0000AC51
Sll $s1, $s1,16
$s1 = AC510000 AC510000
ORI $s1,$s1,Ox65D9 00065D9
$s1 = AC5165D9
J -type OP^6| imm^26
Cú pháp: J _Labal(nhảy ko đk)
BEQ Rs,Rt,Label # Rs = Rt Label
BNE Rs,Rt,Label #Rs != Rt Label Địa
chỉ:
0 I1 # PC = PC + 4
4 I2 # PC = PC + 4
8 I3 # PC = PC + 4
12 I4 # PC = PC + 4
16 I5 # PC = PC + 4
Chuyển phát biểu if-else:
Giả sử a,b,c,d,e;
$s0,$s1,$s2,$s3,$s4;
Bne $s0,$s1,khác;
Addu $s2,$s3,$s4
J Exit;
Khác: subu $s2,$s3,$s4;
Exit;
Ex2: AND
If (($s1 > 0) && ($s2 < 0))
{$s3 ++;}
Bgtz $s1,L1;
lOMoARcPSD| 58950985
J next ;
L1: bgtz $s2,L2;
J next
L2: addiu $s3,1;
Next;
OR:
Lệnh truy xuất bộ nhớ(Memory):
Addiu $s1,$s2,$s3;
Addiu $s1,$s2,1;
Base (cơ sở) (Thanh cơ sở).
Offset (Độ rời – lệch).
LW Rt,imm^16(Rs): .
SW Rt,imm^16(Rs): .
8($t0):
8:Offset
Base: ($t0)
Memory[$t0 + 8]
VD: LW $t0,12 ($s0):
$t0 =Memory[$s0 + 12]
LW $t0, 24($s3)
I-type: OP^6| Rs^5| Rt^5| imm^16|
35| 19 | 8 | 24|
$s3 = 0x12004094.
[$s3 + 24]
SW $t0,256($s0). Cho
$s0 = 0x1234ABCD Địa
chỉ theo byte:
Mips Alignment restriction
(Địa chỉ của ô nhớ word phải là con số chia hết cho kích thước 1 word(4)).
lOMoARcPSD| 58950985
Big Endian: Leftmost byte is word address(Mips)
Little Endian: rightmost byte is word address.
LW Rt,imm^16(Rs)
Imm^16 = 0,4,8,12,16,..
Truy xuất byte :
LB Type, Rt, imm^16(Rs)
LBU Insigned(Type) (N)
LH Halfword
LHU
SB
SH
VD:
g = h + A[5] G/sử A
mảng các từ nhớ:
A[] ={7,0,1,4,8,9}
LW $t0,20($s3)
# $t0 = A[5] = 8
Addu $s1,$s2,$st0
VD:
A[1] = A[2] + 5
SW $t0,1($s3)
Load mở rộng giá trị ô nhớ thành số 32 bit trong thanh ghi:
LB $t0, 3($s0)
$t0 = Memory[$s0 + 3] = 0xAC
$t0 f f f f f f A C
LBU $t0,3($s0)
g/sử $s0 = 0
$t0 = 0x DD

Preview text:

lOMoAR cPSD| 58950985 KIẾN TRÚC MÁY TÍNH
Chương 1:Giới thiệu chung về máy tính. Bus hệ thống: A-Bus Hệ thống D-Bus Xử lý C-Bus…
Hoàn tất thực hiện 1 lệnh (chu kỳ lệnh)gồm hai giai đoạn chính: 1.Nhận lệnh(Fetch Cycle).
2.Thực thi lệnh(Execute Cycle).
Thông thường :Đường thẳng.
Đường ống lệnh từ VXL 8086: Rẽ nhánh. QT: 0 – 0 = 0 1 – 0 = 1 0 – 1 = 1 :Mượn 1 1 - 1 = 0 1 Số nguyên 32 bit:
1111 0000 0101 1010 1100 0011 1011 0111 F O 5 A C 3 B 7 F05AC3B7(Digit - 7) >= 7 N(-) <= 7 P(+)
Hệ số 16 (Hexa): 0,1,2,…9,A,B,C…. Vd: 3F8 SUM >= 16 – ( - )
SUM <= 16 – ( giữ nguyên ) Cộng 32 bit: 1234ABCD + 7777 12352344 Trừ: ABCD3210 - 7777 lOMoAR cPSD| 58950985 ABCCBA99
CHƯƠNG 4:Kiến trúc tập lệnh MIPS
EIU (Main pio) ALU (Số học logic) 32 thanh ghi đa năng Mult/div(Hi,LO)
Kích thước thanh ghi: 32 bit
FPU (Copro.1) – (Dấu phẩy động ) : Arith (Số học )
32 Thanh ghi dấu phẩy động ($f0,$f1…$f51) Kích thước thanh ghi: 32 bit Rẽ nhánh (BNE, BEQ)
Nhảy không điều kiện:J $31 = $RA = 20 SQRT JR $RA
R- type ||OP^6 = (*) ||Rs^5| | Rt^5| |Rd ^5| |SA^5| | Funtion^6||
Mã ptoan t/g ng tg/ng T/đích qđ dịch mã ptoan
Fumit^6 2^6 = 64 hàm khác nhau Các
lệnh cộng / trừ số nguyên:
*add & sub: Lệnh sử lý số nguyên có dấu
*addu & subu: Lệnh sử lý số nguyên không dấu VD:
Translation: f = (g + h) – (i + j) Translate: addu $t0, $t1, $t2 $s0 = $16 $s1 = $17 $s2 = $18 $t0 =$8 $t1 = $9 lOMoAR cPSD| 58950985 $t2 = $10
$s1 *36 = 72 = $s1 *4 + $s1 * 32 $s1 = 2 Sll $s0, $s1, 2 Sll $t1, $s1, 5 S$s1 00000002 000010 :$t0 = 8 : 2^3:001000 01000000 :$t1 = 64:2^6
Multiu: $s1, $s2 #(Hi,LO) = $s1 * $s2 = 0001 | 0101 $s1 = 7 4 bit 0111 Hi | LO $s2 = 3 0011 21 10101 7/3 = 2 = HI | LO 0001 | 0010 Dư 1 = Hi B = A – 5 $t0 $s0 Addiu = $t0 ,$s0, -5
Lui $s1,10 # $s1 = 10 << 16 $s1 00000000 10 0000000A 000A0000 Addiu $s2,$s1,-1 Binary code
I -type : OP^6 |Rs^5 |Rt^7 | imm^16 OP^6 = Ox 9 = 001001 Rs^5 = $s1 = $17 = 10001 Rt^5 = $s2 = $18 = 10010 lOMoAR cPSD| 58950985 Imm^16 = -1 _10 = 1111…111 ADDIU $s1,$0,oxAC51 $s1 = 0000AC51 Sll $s1, $s1,16 $s1 = AC510000 AC510000 ORI $s1,$s1,Ox65D9 00065D9 $s1 = AC5165D9 J -type OP^6| imm^26
Cú pháp: J _Labal(nhảy ko đk)
BEQ Rs,Rt,Label # Rs = Rt Label
BNE Rs,Rt,Label #Rs != Rt Label Địa chỉ: 0 I1 # PC = PC + 4 4 I2 # PC = PC + 4 8 I3 # PC = PC + 4 12 I4 # PC = PC + 4 16 I5 # PC = PC + 4
Chuyển phát biểu if-else: Giả sử a,b,c,d,e; $s0,$s1,$s2,$s3,$s4; Bne $s0,$s1,khác; Addu $s2,$s3,$s4 J Exit; Khác: subu $s2,$s3,$s4; Exit; Ex2: AND
If (($s1 > 0) && ($s2 < 0)) {$s3 ++;} Bgtz $s1,L1; lOMoAR cPSD| 58950985 J next ; L1: bgtz $s2,L2; J next L2: addiu $s3,1; Next; OR:
Lệnh truy xuất bộ nhớ(Memory): Addiu $s1,$s2,$s3; Addiu $s1,$s2,1;
Base (cơ sở) (Thanh cơ sở).
Offset (Độ rời – lệch). LW Rt,imm^16(Rs): . SW Rt,imm^16(Rs): . 8($t0): 8:Offset Base: ($t0) Memory[$t0 + 8] VD: LW $t0,12 ($s0): $t0 =Memory[$s0 + 12] LW $t0, 24($s3)
I-type: OP^6| Rs^5| Rt^5| imm^16| 35| 19 | 8 | 24| $s3 = 0x12004094. [$s3 + 24] SW $t0,256($s0). Cho
$s0 = 0x1234ABCD Địa chỉ theo byte: Mips Alignment restriction
(Địa chỉ của ô nhớ word phải là con số chia hết cho kích thước 1 word(4)). lOMoAR cPSD| 58950985
Big Endian: Leftmost byte is word address(Mips)
Little Endian: rightmost byte is word address. LW Rt,imm^16(Rs) Imm^16 = 0,4,8,12,16,.. Truy xuất byte : LB Type, Rt, imm^16(Rs) LBU Insigned(Type) (N) LH Halfword LHU SB SH VD: g = h + A[5] G/sử A là mảng các từ nhớ: A[] ={7,0,1,4,8,9} LW $t0,20($s3) # $t0 = A[5] = 8 Addu $s1,$s2,$st0 VD: A[1] = A[2] + 5 SW $t0,1($s3)
Load mở rộng giá trị ô nhớ thành số 32 bit trong thanh ghi: LB $t0, 3($s0) $t0 = Memory[$s0 + 3] = 0xAC $t0 f f f f f f A C LBU $t0,3($s0) g/sử $s0 = 0 $t0 = 0x DD