





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