





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