Anda di halaman 1dari 38

Arsitektur Dan Organisasi Komputer

Kelompok : INTEL
Anggota :
Hanafiah
13.04.1041
Leonard Sambone
13.04.1042
Agung Dwi Priyambodo 13.04.1043
M.Ali Janudin
13.04.1048

7 Assembly Language
Programs

Sesuatu hal yang lain yang dibutuhkan untuk membangun


dan menjalankan program Assembly
1. Menyediakan info untuk assembler tentang program dan
datanya
2. instruksi non-hardware yang didukung untuk kemudahan

Topik di BAB ini


1.
2.
3.
4.
5.
6.

Mesin dan Bahasa Assembly


Assembly Direktif
intruksi pseduo
Instruksi makro
Loading dan pemutan
Berjalan ke kumpulan program

Program Bahasa
Assembly

7.1 Mesin Dan Bahasa Assembly

A
s
s
e
m
b
l
e
r

Program
Bahasa
Mesin

L
i
n
k
e
r

Eksekusi
Program
Bahasa
Mesin

l
o
a
d
e
r

Memori
Konten

Langkah Langkah dalam mengubah program bahasa assembly untuk di


eksekusi dan program berada di memori

Symbol Table
Assembly language program
addi$s0,$zero,9
sub$t0,$s0,$s0
add$t1,$zero,$zero
test:bne$t0,$s0,done
addi$t0,$t0,1
add$t1,$s0,$zero
jtest
done:sw$t1,result($gp)

Symbol
table

done
result
test

28
248
12

Location

Machine language program

000100000000100000000000000001001

400000010000100000100000000100010

800000001001000000000000000100000

1200010101000100000000000000001100

1600100001000010000000000000000001

2000000010000000000100100000100000

2400001000000000000000000000000011

2810101111100010010000000011111000

oprsrtrdshfn
Field boundaries shown to facilitate understanding
Determined from assembler
directives not shown here

Program Bahasa Assembly adalah versi dari bahasa mesin dan tabel
simbol itu yang dibuat selama proses Assembly

7.2 Assembler Directives


assembler direktif memberikan info tentang cara menerjemahkan program
tersebut tapi tidak mengarah ke generasi dari instruction machine
.macro # start macro (see Section 7.4)

.end_macro # end macro (see Section 7.4)

.text # start programs text segment

... # program text goes here

.data # start programs data segment


tiny: .byte
156,0x7a # name & initialize data byte(s)

max: .word
35000 # name & initialize data word(s)
small: .float
2E-3 # name short float (see Chapter 12)

big: .double 2E-3 # name long float (see Chapter 12)

.align
2 # align next item on word boundary
array: .space
600 # reserve 600 bytes = 150 words
str1: .ascii
a*b # name & initialize ASCII string
str2: .asciiz xyz # null-terminated ASCII string

.global main # consider main a global name

Composing Simple Assembler


Directives
Menulis assembler direktif untuk mencapai masing-masing tujuan sebagai berikut:
a. Menempatkan pesan kesalahan "Peringatan: Printer kehabisan kertas!" Di
memory
b. Mengatur konstan disebut "ukuran" dengan nilai 4
c. Mendirikan sebuah variabel integer disebut "width" dan menginisialisasi ke 4
d. Mengatur konstan disebut "pabrik" dengan nilai 1.000.000 (satu juta).
e. cadangan ruang untuk integer vektor "vektor" panjang 250.

. Penyelesaian :
a. noppr: .asciiz Warning: The printer is out of paper!
b. size: .byte 4 # small constant fits in one byte
c. width: .word 4 # byte could be enough, but ...
d. mill: .word 1000000 # constant too large for byte
e. vect: .space 1000 # 250 words = 1000 bytes

7.3 Pseudo instructions


Contoh dari one-to-one pseudo instruction: Sebagai berikut

not

$s0

# complement ($s0)

Di konversi ke Instruksi yang nyata :

nor

$s0,$s0,$zero

# complement ($s0)

Contoh dari one-to-several pseudo instruction: Sebagai berikut

abs

$t0,$s0

# put |($s0)| into $t0

Di konversi ke deretan istruksi yang nyata : Sebagai Berikut

add
slt
beq
sub

Jan. 2011

$t0,$s0,$zero
$at,$t0,$zero
$at,$zero,+4
$t0,$zero,$s0

#
#
#
#

copy x into $t0


is x negative?
if not, skip next instr
the result is 0 x

Computer Architecture, InstructionSet Architecture

Slide 7

MiniMIPS
Copy
Pseudoinstructions
Arithmetic

Shift
Logic
Memory access
Control transfer

Pseudoinstruction

Usage

Move

move

regd,regs

Load address

la

regd,address

Load immediate

li

regd,anyimm

Absolute value

abs

regd,regs

Negate

neg

regd,regs

Multiply (into register)

mul

regd,reg1,reg2

Divide (into register)

div

regd,reg1,reg2

Remainder

rem

regd,reg1,reg2

Set greater than

sgt

regd,reg1,reg2

Set less or equal

sle

regd,reg1,reg2

Set greater or equal

sge

regd,reg1,reg2

Rotate left

rol

regd,reg1,reg2

Rotate right

ror

regd,reg1,reg2

NOT

not

reg

Load doubleword

ld

regd,address

Store doubleword

sd

regd,address

Branch less than

blt

reg1,reg2,L

Branch greater than

bgt

reg1,reg2,L

Branch less or equal

ble

reg1,reg2,L

Branch greater or equal

bge

reg1,reg2,L

7.4 Macro instructions


Makro adalah sebuah mekanisme untuk
meberikan nama ke deretan istruksi yang sering
digunakan ( Notasi Singkat )
.macro name(args) # macro and arguments named
...
.end_macro

# instrs defining the macro


# macro terminator

Bagaimana perbedaan macro dari psuedo instruction ?


Pseudo yang telah ditetapkan, diperbaiki, dan terlihat seperti
instruksi mesin Macro ditetapkan pengguna dan mirip dengan
prosedur (memiliki argumen)
Bagaimana perbedaan makro dari prosedur?
Kontrol ditransfer dan kembali dari prosedur Setelah makro sudah
diganti, tidak ada jejak tetap

Makro untuk Menemukan Tiga Nilai


Terbesar
Penulisan Makro untuk menentukan Tiga Nilai Terbesar dari register dan untuk
menempatkan hasilnya dalam register keempat..

Penyelesaian :
.macro mx3r(m,a1,a2,a3)
move
m,a1
bge
m,a2,+4
move
m,a2
bge
m,a3,+4
move
m,a3
.endmacro

# macro and arguments named


#
#
#
#
#
#

assume (a1) is largest; m = (a1)


if (a2) is not larger, ignore it
else set m = (a2)
if (a3) is not larger, ignore it
else set m = (a3)
macro terminator

Jika makro digunakan sebagai mx3r ($ t0, $ s0, $ S4, $ s3), assembler menggantikan
argumen m, a1, a2, a3 dengan $ t0, $ s0, $ S4, $ s3, berurutan

7.5 Linking and Loading

linker memiliki tanggung jawab sebagai berikut:


Memastikan penafsiran yang benar (resolusi) dari label di semua modul
Menentukan penempatan teks dan data segmen dalam memori
Mengevaluasi semua alamat data dan label instruksi
Membentuk program yang dapat dieksekusi tanpa referensi yang belum
terselesaikan
loader yang bertugas sebagai berikut:
Menentukan kebutuhan memori program dari header
Menyalin teks dan data dari file program yang dieksekusi ke dalam
memori
Memodifikasi (pergeseran) alamat, di mana diperlukan, selama
penyalinan
Menempatkan parameter Program ke stack (seperti dalam prosedur
panggilan)
Melakukan inisialisasi semua register mesin, termasuk stack pointer
Melompat ke routine start-up yang memanggil routine utama program

7.6 Running Assembler


Programs
Spim adalah simulator yang dapat menjalankan
program MiniMIPS
Nama spim berasal dari membalikkan huruf MIPS
Tiga versi spim yang tersedia untuk di download
secara gratis :
PCSpim untuk mesin Windows
xspim untuk X-windows
spim untuk sistem Unix
Anda dapat men-download spim dari:
http://www.cs.wisc.edu/~larus/spim.html

Input/Output Conventions for MiniMIPS


Table 7.2

Input/output and control functions of syscall in PCSpim.


Arguments

Result

1 Print integer

Integer in $a0

Integer displayed

2 Print floating-point

Float in $f12

Float displayed

3 Print double-float

Double-float in $f12,$f13

Double-float displayed

4 Print string

Pointer in $a0

Null-terminated string displayed

Cntl

Input

Output

($v0) Function

5 Read integer

Integer returned in $v0

6 Read floating-point

Float returned in $f0

7 Read double-float

Double-float returned in $f0,$f1

8 Read string

Pointer in $a0, length in $a1

String returned in buffer at pointer

9 Allocate memory

Number of bytes in $a0

Pointer to memory block in $v0

10 Exit from program


Jan. 2011

Program execution terminated


Computer Architecture, InstructionSet Architecture

Slide 13

Menu bar

PCSpim
User
Interface

Tools bar

PCSpim
File Simulator Window Help

File
Open
Sav e Log File
Ex it

Simulator
Clear Regis ters
Reinitializ e
Reload
Go
Break
Continue
Single Step
Multiple Step ...
Breakpoints ...
Set Value ...
Disp Symbol Table
Settings ...

Window
Tile
1 Messages
2 Tex t Segment
3 Data Segment
4 Regis ters
5 Console
Clear Console
Toolbar
Status bar

Status bar

Registers
PC
= 00400000
Status = 00000000
R0
R1

(r0) = 0
(at) = 0

EPC
= 00000000
Cause = 00000000
HI
= 00000000
LO
= 00000000
General Registers
R8 (t0) = 0
R16 (s0) = 0
R24
R9 (t1) = 0
R17 (s1) = 0
R25

Text Segment
[0x00400000]
[0x00400004]
[0x00400008]
[0x0040000c]
[0x00400010]

0x0c100008
0x00000021
0x2402000a
0x0000000c
0x00000021

jal 0x00400020 [main]


addu $0, $0, $0
addiu $2, $0, 10
syscall
addu $0, $0, $0

;
;
;
;
;

43
44
45
46
47

Data Segment
DATA
[0x10000000]
[0x10000010]
[0x10000020]

0x00000000 0x6c696146 0x20206465


0x676e6974 0x44444120 0x6554000a
0x44412067 0x000a4944 0x74736554

Messages
See the file README for a full copyright notice.
Memory and registers have been cleared, and the simulator rei
D:\temp\dos\TESTS\Alubare.s has been successfully loaded

For Help, press F1

Base=1; Pseudo=1, Mapped=1; LoadTrap=0

8 Instruction Set
Variations

The MiniMIPS set instruksi hanya satu contoh


Bagaimana set instruksi mungkin berbeda dari miniMIPS instruction set
Filosofi desain RISC dan CISC set instruksi

Topics in This Chapter


8.1 Complex Instructions
8.2 Alternative Addressing Modes
8.3 Variations in Instruction Formats
8.4 Instruction Set Design and Evolution
8.5 The RISC/CISC Dichotomy
8.6 Where to Draw the Line
Jan. 2011

Computer Architecture, Instruction-Set Architecture

Slide 15

Review of Some Key Concepts


Macroinstruction

Instruction
Instruction
Instruction
Instruction

Berbeda dari Prusedur, di


dalam makro diganti
dengan instuksi yg setara

Microinstruction
Microinstruction
Microinstruction
Microinstruction
Microinstruction

Format instruksi untuk simple RISC design


R

31

31

31

op

25

rs

20

rt

15

rd

10

sh

fn

6 bits

5 bits

5 bits

5 bits

5 bits

6 bits

Opcode

Source
register 1

Source
register 2

Destination
register

Shift
amount

Opcode
extension

op

25

rs

20

rt

15

operand / offset

6 bits

5 bits

5 bits

16 bits

Opcode

Source
or base

Destination
or data

Immediate operand
or address offset

op
6 bits
Opcode

Jan. 2011

25

jump target address

Semua yang sama


panjang
Fields digunakan
secara konsisten
(decoding sederhana)

Dapat memulai
pembacaan register
Memory word address (byte address divided by 4)
bahkan sebelum
decoding instruksi
Computer Architecture, Instruction0

1 0 0 0 0 0 0 0 0 0 0 0 260 bits
0 0 0 0 0 0 0 1 1 1 1 0 1

Set Architecture

Slide 16

8.1 Complex Instructions


Table 8.1 (partial) Contoh-contoh complex instruction di dalam dua popular
microprocessor moderen dan dua keluarga komputer

Machine

Instruction

Effect

Pentium

MOVS

Memindahkan satu element dalam string byte, kata,


atau kata ganda menggunakan alamat yang
ditentukan dalam dua pointer register, setelah operasi,
kenaikan atau penurunan register untuk menunjukan
ke elemen string berikutnya

PowerPC

cntlzd

Menghitung jumlah 0s berturut-turut dalam register


source yang ditentukan dimulai dengan bit posisi 0
dan menempatkan hitungan dalam tujuan register

IBM 360-370

CS

Bandingkan dan swap : membandingkan isi register


dengan sebuah lokasi memori; jika tidak sama,
memuat memory word kedalam register, jika sama
simpan konten dari register yang berbeda kelokasi
yang sama.

Digital VAX

POLYD

Jan. 2011

Evaluasi polinomial dengan aritmatika flp ganda:


Mengevaluasi polinomial dalam x, dengan presisi yg
sangat tinggi dalam hasil yg menengah. mengunakan
tabel koefisien yang lokasinya di dalam memori di
Computer
Architecture,
berikan
didalamInstructioninstruksi
Slide 17
Set Architecture

Beberapa rincian dari contoh complex


instruction
0000 0010 1100 0111
Source
string

Destination
string

cntlzd

6 leading 0s

(Count leading 0s)

0000 0000 0000 0110

POLYD

(Polynomial evaluation in
double floating-point)

Coefficients

cn1xn1 + . . . + c2x2 + c1x + c0

MOVS

(Move string)

Jan. 2011

Computer Architecture, InstructionSet Architecture

Slide 18

Manfaat dan kerugian dari Complex


instruction
Sedikit instruksi didalam
memori (memori lebih sedikit)
Akses memori yg lebih sedikit
untuk instruksi

format yang lebih kompleks


(Decoding lebih lambat)
kurang fleksibel (Satu
algoritma untuk evaluasi
polinomial atau pemilahan
mungkin tidak menjadi yang
terbaik dalam semua kasus)

Program dapat menjadi lebih


mudah untuk ditulis / dibaca /
dipahami
Potensi eksekusi lebih cepat
Jika interupsi diproses di akhir
siklus instruksi, Mesin
(Langkah-langkah yang
mungkin menjadi kurang
kompleks masih dilakukan
responsif terhadap Peristiwa
berurutan dalam beberapa
siklus, tetapi kontrol hardware
waktu-kritis (interrupt
dapat lebih cepat dari loop
handling)
software)
Computer Architecture, Instruction-

Jan. 2011

Set Architecture

Slide 19

8.2 Mode Pengalamatan Alternanive


Addressing

Instruction

Other elements involved


Some place
in the machine

Implied

Lets
refresh
our
memory
(from
Chap. 5)

Extend,
if required

Immediate
Reg spec

Register

Reg file

Constant offset

Base
Reg base

PC-relative

Reg file

Reg
data

Constant offset

Reg data

Mem
Add addr

Mem
Add addr

PC

Pseudodirect

Operand

PC

Mem
Memory data

Mem
Memory data

Mem
addr Memory Mem
data

Figure 5.11 Skema representasi mode pengalamatan di MiniMIPS.


Jan. 2011

Computer Architecture, InstructionSet Architecture

Slide 20

Table 6.2

Addressing Mode Examples in the MiniMIPS ISA

Instruction

Usage

Instruction

Usage

Load upper immediate

lui

rt,imm

Move from Hi

mfhi

rd

Add

add

rd,rs,rt

Move from Lo

mflo

rd

Subtract

sub

rd,rs,rt

Add unsigned

addu

rd,rs,rt

Set less than

slt

rd,rs,rt

Subtract unsigned

subu

rd,rs,rt

Add immediate

addi

rt,rs,imm

Multiply

mult

rs,rt

Set less than immediate

slti

rd,rs,imm

Multiply unsigned

multu rs,rt

AND

and

rd,rs,rt

Divide

div

rs,rt

OR

or

rd,rs,rt

Divide unsigned

divu

rs,rt

XOR

xor

rd,rs,rt

Add immediate unsigned

addiu rs,rt,imm

NOR

nor

rd,rs,rt

Shift left logical

sll

rd,rt,sh

AND immediate

andi

rt,rs,imm

Shift right logical

srl

rd,rt,sh

OR immediate

ori

rt,rs,imm

Shift right arithmetic

sra

rd,rt,sh

XOR immediate

xori

rt,rs,imm

Shift left logical variable

sllv

rd,rt,rs

Load word

lw

rt,imm(rs)

Shift right logical variable

srlv

rd,rt,rs

Store word

sw

rt,imm(rs)

Shift right arith variable

srav

rd,rt,rs

Jump

Load byte

lb

rt,imm(rs)

Jump register

jr

rs

Load byte unsigned

lbu

rt,imm(rs)

Branch less than 0

bltz

rs,L

Store byte

sb

rt,imm(rs)

Branch
equal
Jan. 2011

beq

Computer Architecture,
Instructionrs,rt,L
Jump
and link

jal

Branch not equal

bne

rs,rt,L

Set Architecture

System call

syscall

Slide 21

Mode Pengelamatan yang lebih rumit


Addressing

Instruction

Other elements involved

Indexed

Reg file
Index reg
Base reg
Increment amount

Update
(with base)

Base reg

Update
(with index ed)

Reg file

Increment
amount

Indirect

Reg file

Base reg
Index reg

Operand

x := B[i]

Mem
Mem
Add addr Memory data

x := Mem[p]
p := p + 1

Mem
Incre- addr
Mem
Memory data
ment

Mem
Mem
Add addr Memory data

x := B[i]
i := i + 1

Increment
Mem data

PC
Memory
Mem addr
This part maybe replaced with any
Mem addr,
other form of address specif ication
2nd access

Memory
Mem data,
2nd access

t := Mem[p]
x := Mem[t]
x := Mem[Mem[p]]

Figure 8.1 Skema representasi dari mode pengalamatan


yang lebih rumit yang tidak didukung di MiniMIPS.
Jan. 2011

Computer Architecture, InstructionSet Architecture

Slide 22

Kegunaan dari beberapa Mode Pengalamatan yang rumit


Update mode: XORing a string of bytes
loop: lb
xor
addi
bne

$t0,A($s0)
$s1,$s1,$t0
$s0,$s0,-1
$s0,$zero,loop

One instruction with


update addressing

Indirect mode: Case statement


case: lw
$t0,0($s0) # get s
add $t0,$t0,$t0 # form 2s
add $t0,$t0,$t0 # form 4s
la
$t1,T
# base T
add $t1,$t0,$t1
lw
$t2,0($t1) # entry
jr
$t2
Jan. 2011

Computer Architecture, InstructionSet Architecture

Branch to location Li
if s = i (switch var.)
T
T+4
T+8
T + 12
T + 16
T + 20

L0
L1
L2
L3
L4
L5

Slide 23

8.3 Variasi Format Instruksi


0-, 1-, 2-, dan 3 alamat instruksi di MiniMIPS
Category

Format

Opcode

Description of operand(s)
One implied operand in register $v0

0-address

1-address

2-address

0 rs rt

24 mult

Two source registers addressed, destination implied

3-address

0 rs rt rd

32 add

Destination and two source registers addressed

12 syscall
Address

Jump target addressed (in pseudodirect form)

Figure 8.2 Contoh dari MiniMIPS instruksi dengan 0-3


alamat; bidang yang diarsir belum digunakan.

Jan. 2011

Computer Architecture, InstructionSet Architecture

Slide 24

Zero-Address Architecture: Stack Machine


Stack menyimpan semua operands (Mengganti file Register)
Operasi Load/Store menjadi push/pop
Operasi Arithmetic/logic hanya memerlukan sebuah opcode : pop
operand dari puncak stack dan push hasilnya ke stack
Example: Evaluating the expression (a + b) (c d)
Push a

Push b

Add

Push d

Push c

Subtract

Multiply

b
a

a+b

d
a+b

c
d
a+b

cd
a+b

Result

Polish string: a b + d c

Jika sebuah variabel digunakan lagi, Anda mungkin harus push


beberapa kali
Special instructions seperti Duplicate dan Swap menjadi sangat
Computer Architecture, Instructionmembantu
Jan. 2011
Slide 25
Set Architecture

One-Address Architecture: Accumulator


Machine
Akumulator, register khusus yang melekat pada ALU, selalu
menampung operand 1 dan operation result
Hanya satu operan yang perlu ditetapkan oleh instruksi
Example: Evaluating the expression (a + b) (c d)
Load
add
Store
load
subtract
multiply

a
b
t
c
d
t

Didalam branch instructions, Kondisi atau


target address harus tersirat
Branch to L if acc negative

Jika register x adalah negative skip the next


instruction
Menyimpan isi akumulator dalam memori (contoh di atas)
Tidak ada penyimpanan yang diperlukan untuk a + b + c + d + . . .
(accumulator)
Jan. 2011

Computer Architecture, InstructionSet Architecture

Slide 26

Two-Address Architectures
Dua alamat dapat digunakan dalam berbagai cara
Operand1/result and operand 2
Condition to be checked and branch target address
Example: Evaluating the expression (a + b) (c d)
load
add
load
subtract
multiply

$1,a
$1,b
$2,c
$2,d
$1,$2

Instructions of a hypothetical
two-address machine

Variasi yang mengunakan salah satu alamat seperti pada oneaddress machine dan yang kedua untuk menentukan cabang di
setiap instruksi
Jan. 2011

Computer Architecture, InstructionSet Architecture

Slide 27

Example of a Complex Instruction Format


Instruction prefixes (zero to four, 1 B each)

Operand/address
size overwrites and
other modifiers

Mod Reg/Op R/M Scale Index Base

Opcode (1-2 B)

ModR/M

SIB

Offset or displacement (0, 1, 2, or 4 B)

Most memory
operands need
these 2 bytes

Instructions can
contain
up to 15 bytes

Immediate (0, 1, 2, or 4 B)
Components that form a variable-length IA-32 (80x86) instruction.
Jan. 2011

Computer Architecture, InstructionSet Architecture

Slide 28

Some of IA-32s Variable-Width Instructions


Type

Format (field widths shown)

1-byte

5 3

2-byte

4 4

3-byte

4-byte

5-byte

4 3

6-byte

8
8

8
32

32

Opcode

Description of operand(s)

PUSH

3-bit register specification

JE

4-bit condition, 8-bit jump offset

MOV

8-bit register/mode, 8-bit offset

XOR

8-bit register/mode, 8-bit base/index,


8-bit offset

ADD

3-bit register spec, 32-bit immediate

TEST

8-bit register/mode, 32-bit immediate

Figure 8.3 misalnya Instruksi 80x86 lebar mulai dari 1


hingga 6 byte; instruksi yang lebih luas (hingga 15 bytes)
juga ada
Jan. 2011

Computer Architecture, InstructionSet Architecture

Slide 29

8.4 Desain Set Instruksi and Evolusi


Atribut yang diinginkan dari sebuah set instruksi :
Konsisten , dengan seragam dan aturan umum yang berlaku.
Orthogonal , dengan fitur independen noninterfering.
Transparan , tanpa efek samping terlihat karena rincian pelaksanaan
Easy to lear/user(sering produk sampingan dari tiga atribut di atas ).
Extensible , sehingga memungkinkan penambahan kemampuan masa
depan.
Efisien , baik dari segi kebutuhan memori dan realisasi hardware.

Processor
design
team

New
machine
project

Instruction-set
definition

Implementation

Performance
objectives

Fabrication &
testing

Sales
&
use

?
Tuning &
bug fixes
Feedback

Figure 8.4

Desain Prosesor dan Implementasi Proses.

8.5 The RISC/CISC


Dichotomy
RISC ( reduced instruction set komputer ) filsafat : Kompleks set
instruksi yang tidak diinginkan karena dimasukkannya mekanisme
untuk menafsirkan semua kemungkinan kombinasi dari opcodes dan
operan mungkin memperlambat operasi bahkan sangat sederhana
Fitur arsitektur RISC :
1.set instruksi kecil , masing-masing dieksekusi di sekitar waktu yang sama
2.Load / store arsitektur ( yang lebih mengarah ke register )
3.mode pengalamatan yang terbatas untuk menyederhanakan perhitungan alamat
4.Sederhana , format instruksi yang seragam ( kemudahan decoding )

RISC / CISC Perbandingan melalui Hukum Generalized Amdahl

ISA memiliki dua kelas sederhana (S) dan kompleks (C) instruksi.
Pada implementasi referensi dari ISA, instruksi kelas-S account
untuk 95% dari waktu berjalan untuk program menarik. Sebuah
versi RISC mesin sedang dipertimbangkan yang mengeksekusi
hanya petunjuk kelas-S secara langsung dalam perangkat keras,
dengan instruksi kelas C diperlakukan sebagai petunjuk semu.
Diperkirakan dalam versi RISC, instruksi kelas-S akan berjalan
20% lebih cepat sementara instruksi kelas-C akan melambat
dengan faktor 3. Apakah pendekatan RISC menawarkan lebih baik
atau kinerja buruk dibandingkan dengan implementasi referensi?
Solusinya : Per asumsi, 0,95 dari pekerjaan dipercepat dengan
faktor 1,0 / 0,8 = 1,25, sedangkan sisanya 5% diperlambat
dengan faktor 3. RISC speedup adalah 1 / [0.95 / 1.25 + 0,05 x 3]
= 1.1. Dengan demikian, peningkatan 10% dalam kinerja dapat
diharapkan dalam versi RISC.

Beberapa Manfaat Tersembunyi dari


RISC
Pada Contoh 8.1, kita menetapkan bahwa faktor
speedup dari 1,1 dapat diharapkan dari versi RISC
mesin hipotetis.
Ini bukan seluruh cerita, namun !.
Jika speedup 1,1 datang dengan beberapa biaya
tambahan, maka salah satu mungkin sah
bertanya-tanya apakah itu layak biaya dan usaha
desain.
produk yang lebih

murah dan waktu


RISC versi arsitektur juga:
Mengurangi usaha dan tim ukuran untuk desain
yang pendek untuk
Mempersingkat pengujian dan debugging fase
kepasar

dokumentasi disederhanakan dan pemeliharaan .

MIPS Penilaian Kinerja untuk standar


An m-MIPS processor dapat mengeksekusi m jutaan instruksi per detik
Membandingkan prosesor m-MIPS dengan prosesor 10m-MIPS
Seperti membandingkan dua orang yang membaca halaman m dan
halaman 10m per jam
10 pages / hr
100 pages / hr

Membaca 100 halaman per jam, dibandingkan dengan 10


halaman per jam, mungkin tidak memungkinkan Anda untuk
menyelesaikan tugas membaca hal yang sama di 1/10 waktu
Jan. 2011

Computer Architecture, InstructionSet Architecture

Slide 34

RISC / CISC Konvergensi


Desain RISC awal:
CDC 6600, superkomputer yang sangat inovatif dari pertengahan 1960-an
IBM 801, berpengaruh chip tunggal proyek prosesor dari akhir 1970-an

-Pada awal 1980-an, dua proyek membawa RISC ke permukaan:


UC Berkeley RISC 1 dan 2, pelopor dari SPARC Sun
Stanford MIPS, kemudian dipasarkan oleh sebuah perusahaan
dengan nama yang sama
-Sepanjang tahun 1980, ada perdebatan panas tentang manfaat
relatif dari RISC dan CISC arsitektur.
-Sejak tahun 1990-an, perdebatan telah didinginkan!
-hardware kita sekarang dapat menikmati kedua set manfaat
dengan memiliki instruksi yang kompleks secara otomatis
diterjemahkan ke urutan instruksi yang sangat sederhana yang
kemudian dieksekusi pada RISC berbasis

8.6 Where to Draw Line


The ultimate reduced instruction set computer (URISC):
Berapa banyak instruksi yang benar-benar diperlukan untuk perhitungan
yang berguna?
Hanya satu!
kurangi source1 dari sumber 2, menggantikan sumber 2 dengan hasilnya, dan
melompat untuk menargetkan alamat jika hasilnya negatif
Form Bahasa Assembly:
label: dest urisc, src 1, Target
Instruksi Pseudo dapat disintesis menggunakan instruksi tunggal:
stop: .word 0
start: urisc dest,dest,+1 # dest = 0
urisc temp,temp,+1 # temp = 0
urisc temp,src,+1
# temp = -(src)
urisc dest,temp,+1 # dest = -(temp); i.e. (src)
...
# rest of program

Beberapa Petunjuk Pseudo Berguna


untuk URISC
Menulis urutan instruksi yang dihasilkan oleh assembler URISC
untuk setiap petunjuk semu berikut.
parta: uadd dest,src1,src2 # dest=(src1)+(src2)
partc: uj
label
# goto label
Solusi :
AT1 dan at2 adalah lokasi memori sementara untuk perakit
menggunakan
parta: urisc
urisc
urisc
urisc
urisc
partc: urisc
urisc

at1,at1,+1
at1,src1,+1
at1,src2,+1
dest,dest,+1
dest,at1,+1
at1,at1,+1
at1,one,label

#
#
#
#
#
#
#

at1 = 0
at1 = -(src1)
at1 = -(src1)(src2)
dest = 0
dest = -(at1)
at1 = 0
at1 = -1 to force jump

URISC Hardware
URISC instruction:

Word 1

Word 2

Word 3

Source 1

Source 2 / Dest

Jump target

Comp
0

C in

PC in

MDR in

P
C

Adder
N in

R in

Write

Read

MAR in

Z in
N

M
D
R

1 Mux 0

M
A
R

Memory
unit

PCout

Figure 8.5 Format instruksi dan struktur perangkat keras


untuk URISC.
Jan. 2011

Computer Architecture, InstructionSet Architecture

Slide 38

Anda mungkin juga menyukai