• Tidak ada hasil yang ditemukan

Perangkat Keras untuk Aritmetika, CPU

N/A
N/A
Protected

Academic year: 2021

Membagikan "Perangkat Keras untuk Aritmetika, CPU"

Copied!
54
0
0

Teks penuh

(1)

Perangkat Keras untuk Aritmetika, CPU

Topik Hari ini:

Mendesain sebuah ALU

Penambah Carry-lookahead

Jam dan sirkuit sequential

Mesin finite state

CPU siklus tunggal

(2)

Hukum DeMorgan’s

A + B = A . B

A . B = A + B

(3)

Jumlah dari Perkalian

•Dapat melambangkan semua blok logika dengan operator AND, OR, NOT

Menggambar tabel kebenaran

Untuk setiap output yang true, gambarkan input-inputnya sebagai hasil perkalian

Persamaan akhir adalah jumlah dari perkalian – perkalian ini

A

B

C

E

0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 (A . B . C) + (A . C . B) + (C . B . A) •Dapat juga menggunakan “perkalian dari penjumlahan”

(4)

Algoritma Penjumlah

1

0

0

1

0

1

0

1

Sum

1

1

1

0

Carry

0

0

0

1

A

B

Cin

Sum Cout

0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1

Tabel kebenaran dari operasi ini:

Persamaan: Sum = Cin . A . B + B . Cin . A + A . Cin . B + A . B . Cin Cout = A . B . Cin + A . B . Cin + A . Cin . B + B . Cin . A = A . B + A . Cin + B . Cin

(5)

Carry Out Logic

Persamaan: Sum = Cin . A . B + B . Cin . A + A . Cin . B + A . B . Cin Cout = A . B . Cin + A . B . Cin + A . Cin . B + B . Cin . A = A . B + A . Cin + B . Cin

(6)

1-Bit ALU dengan Add, Or, And

(7)

32-bit Penjumlah Ripple Carry

1-bit ALUs dihubungkan secara seri dengan carry-out dari 1 boks disambung kan dengan carry-in dari boks berikutnya

(8)

Melakukan Pengurangan

Harus membalikkan bit – bit dari B dan menambahkan 1

•Memasukkan inverter

•Carry-in untuk bit pertama: 1

•Signal Carry-ini (untuk bit pertama) dapat disamakan dengan signal Binvert

(9)
(10)

Menjalankan slt

•Lakukan a – b dan cek tandanya

•Signal baru (Less) adalah nol untuk boks boks ALU 1 - 31

•Boks ke 31 punya sebuah unit utk mengecek overflow dan tanda - . Bit tanda

berperan sebagai signal Less untuk boks ke 0

(11)

Menjalankan beq

•Lakukan a – b dan konfirmasi bahwa hasilnya semuanya nol

(12)

Baris – baris Kontrol

Berapakah nilai – nilai dari baris – baris kontrol dan operasi apakah

(13)

Baris – baris Kontrol

Berapakah nilai – nilai dari baris – baris kontrol dan operasi apakah

yang sedang dilakukan?

Ai Bn Op AND 0 0 00 OR 0 0 01 Add 0 0 10 Sub 0 1 10 SLT 0 1 11 NOR 1 1 00

(14)

Kecepatan dari Ripple Carry

•Carry merambat melalui setiap boks: setiap boks 1-bit secara berurutan mengimplementasikan AND dan OR – delay total adalah waktu yang diperlukan untuk menempuh 64 gate!

•Kita telah melihat bawah semua persamaan logic dapat dinyatakan

sebagai penjumlahand dari perkalian – jadi memungkinkan untuk meng-hitung hasil dengan melalui hanya 2 gate!

•Perhatian: membutuhkan banyak gate – gate paralel dan mungkin

memiliki banyak input – sangat sulit membangun gate yang sangat besar ini, jadi butuh kompromi:

Jumlah gate yang moderat

Jumlah input yang moderat setiap gate-nya

(15)

Menghitung CarryOut

CarryIn1 = b0.CarryIn0 + a0.CarryIn0 + a0.b0

CarryIn2 = b1.CarryIn1 + a1.CarryIn1 + a1.b1

= b1.b0.c0 + b1.a0.c0 + b1.a0.b0 +

a1.b0.c0 + a1.a0.c0 + a1.a0.b0 + a1.b1

CarryIn32 = sebuah nilai yang sangat besar dari sebuah

perkalian besar

Implementasi potensial yang cepat sebagai hasil yang

dihitung dengan hanya melewati 2 tingkat dari logic –

(16)

Generate dan Propagate

Persamaan ditataulang:

Ci+1 = ai.bi + ai.Ci + bi.Ci

= (ai.bi) + (ai + bi).Ci

Secara verbal, pasangan bit yang terkini akan menghasilkan

(generate) sebuah carry apabila keduanya 1 dan pasangan

bit yang terkini akan meneruskan (propagate) jika sebuah

carry jika salah satunya 1

Generate signal = ai.bi

Propagate signal = ai + bi

(17)

Generate dan Propagate

c1 = g0 + p0.c0

c2 = g1 + p1.c1

= g1 + p1.g0 + p1.p0.c0

c3 = g2 + p2.g1 + p2.p1.g0 + p2.p1.p0.c0

c4 = g3 + p3.g2 + p3.p2.g1 + p3.p2.p1.g0 + p3.p2.p1.p0.c0

Salah satu,

sebuah carry telah dibuat, atau

sebuah carry telah dibuat dari langkah sebelumnya dan dirambatkan, atau sebuah carry telah dibuat dua langkah sebelumnya dan dirambatkan oleh

(18)

Membagi dan Menguasai

•Persamaan dari slide sebelumnya masih sulit untuk diimplementasikan sebagai sebuah fungsi logic – untuk bit ke 32, kita harus AND setiap bit rambatan untuk menetukan apa yang menjadi c0 (juga hasil lainnya)

•Maka, bit – bit dipecah menjadi grup (ber-empat) dan setiap grup menghitung grup-generate dan grup-propagate

•Sebagai contoh, untuk menambah 32 angka, kita bisa membagi tugas dalam sebuah pohon

.

.

.

.

.

(19)

P dan G untuk 4-bit Blocks

•Menghitung P0 dan G0 (super-propagate dan super-generate) untuk grup pertama dari 4 bit (dan sama halnya untuk grup 4 bit lainnya)

P0 = p0.p1.p2.p3

G0 = g3 + g2.p3 + g1.p2.p3 + g0.p1.p2.p3

•Carry out dari grup pertama 4 bit adalah C1 = G0 + P0.c0

C2 = G1 + P1.G0 + P1.P0.c0 …

•Dengan menggunakan sebuah pohon sub-komputasi, setiap gate

AND, OR memiliki input yang sediki dan signal logic harus menempuh serangkaian gate yang sedikit (sama dengan tinggi dari pohon).

(20)

Contoh

Add

A

0001 1010 0011 0011

and B

1110 0101 1110 1011

g

0000 0000 0010 0011

p

1111 1111 1111 1011

P

1

1

1

0

G

0

0

1

0

C4 = 1

(21)

Penjumlah Carry Look-Ahead

• 16-bit Ripple-carry

membutuhkan 32 langkah

•Desain ini butuh berapa langkah?

(22)

Clock

Sebuah mikroprosesor terdiri dari banyak sirkuit yang

ber-beda yang berjalan bersamaan – jika setiap sirkuit X

membutuhkan input saat TI

X

, membutuhkan waktu TE

X

untuk mengeksekusi, and menghasilkan output saat TO

X

,

bayangkan komplikasi dalam mengkoordinasi tugas – tugas

setiap sirkuit

Sebuah pemikiran utama (digunakan dalam hampir semua

prosesor sekarang): semua sirkuit dalam chip share sebuah

signal clock (sebuah gelombang kotak) yang memberitahu

setiap sirkuit kapan menerima input, waktu yang digunakan

untuk mengeksekusi, dan kapan mengeluarkan output

(23)

Terminologi Clock

Waktu siklus

Rising clock edge

Falling clock edge

4 GHz = clock speed = 1 = 1 .

(24)

Sirkuit Sekuensial

•Sampai sekarang, sirkuit adalah kombinasional – ketika input berubah, outputnya akan berubah kemudian (waktu = delay logic melewati sirkuit

Combinational Circuit

Inputs Outputs

•Kita ingin clock berperan sebagai sebuah signal start dan stop – sebuah “latch” adalah sebuah alat penyimpanan yang menyimpan inputnya saat

rising clock edge dan nilainya tidak berubah sampai rising clock edge berikutnya Combinational Circuit Outputs Combinational Circuit Combinational Circuit Latch Latch Inputs Clock Clock

(25)

Sirkuit Sekuensial

•Sirkuit sekuensial: terdiri dari kombinasi sirkuit kombinasional dan elemen penyimpan

•Saat awal siklus clock, rising edge membuat kondisi

penyimpanan menyimpan beberapa nilai input

•Kondisi ini tidak berubah sepanjang siklus (sampai rising edge berikutnya

•Sirkuit kombinasional memiliki beberapa saat untuk menerima nilai dari kondisi dan inputnya serta menghasilkan output

State

Combinational Cct

Clock

Inputs Outputs

(26)

Mendesain sebuah Latch

•Sebuah S-R latch: set-reset latch

•An S-R latch: set-reset latch

Ketika Set tinggi, sebuah 1 disimpan

Ketika Reset tinggi, sebuah 0 disimpan

Ketika keduanya rendah, kondisi sebelumnya dipertahankan (maka disebut penyimpan atau elemen memori)

Ketika keduanya tinggi, outputnya tidak stabil – kondisi input ini tidak diijinkan

(27)

D Latch

•Memasukkan sebuah clock

•Nilai dari signal D input (data) disimpan jika clock tinggi – kondisi sebelum nya dipertahankan bila clock rendah

(28)

D Flip Flop

•Terminologi:

Latch: output dapat berubah setiap clock yang tinggi Flip flop: output dapat berubah hanya saat clock edge

•Dua D latch disusun seri – memastikan bahwa sebuah nilai disimpan hanya saat falling edge dari clock

(29)

Sirkuit Sekuensial

•Kita ingin clock berperan sebagai sebuah signal start dan stop – sebuah “latch adalah sebuah alat penyimpan yang menyimpan inputnya saat rising edge dari clock dan penyimpanan ini tidak berubah sampai rising edge berikutnya dari clock

Combinational Circuit Outputs Combinational Circuit Latch Latch Inputs Clock Clock

(30)

Mesin Finite State

Sebuah sirkuit sekuensial digambarkan sebuah sebuah

variasi dari tabel kebenaran – sebuah diagram finite state

(maka, sirkuit ini juga disebut sebuah mesin finite state)

Catatan: state atau kondisi hanya diperbaharui pada

clock edge

Next-state Function Output Function Current State Clock Inputs Next state Outputs

(31)

State Diagram

Setiap state digambarkan sebagai sebuah lingkaran, dilabel

dengan nilai state-nya – isi dari lingkaran adalah outputnya

Anak panah menunjukkan sebuah transisi ke state yang

lainnya, dengan input diindikasikan pada labelnya

0 1

0

1

D = 1

D = 0 D = 1

(32)

Pencacah 3-Bit

•Pertimbangkan sebuah sirkuit yang menyimpan sebuah angka dan menaikkan nilainya setiap clock edge – saat mencapai nilai tertinggi, nilainya kembali ke 0

Gambarkan state diagram:

Berapa jumlah state-nya?

(33)

Pencacah 3-Bit

000

000

001

001

010

010

011

011

100

100

101

101

110

110

111

111

•Pertimbangkan sebuah sirkuit yang menyimpan sebuah angka dan menaikkan nilainya setiap clock edge – saat mencapai nilai tertinggi, nilainya kembali ke 0

Gambarkan state diagram:

Berapa jumlah state-nya?

(34)

Pengatur Lampu Lalu Lintas

•Penjelasan masalah: sebuah lampu lalu lintas (hanya merah dan hijau); hanya salah satu dari Utara – Selatan atau Timur – Barat hanya boleh hijau (kedua arah tidak boleh merah bersamaan); terdapat detektor di jalan untuk mendeteksi adanya mobil di jalan; lampu diperbaharui setiap 30 detik; sebuah lampu hanya berubah jika terdapat sebuah mobil yang menunggu di jalan lawannya.

Tabel transisi state:

Berapa jumlah state-nya? Berapa jumlah inputnya? Berapa jumlah outputnya?

(35)

Tabel Transisi State

Penjelasan masalah: sebuah lampu lalu lintas (hanya merah dan hijau); hanya salah satu dari Utara – Selatan atau Timur – Barat hanya boleh hijau (kedua arah tidak boleh merah bersamaan); terdapat detektor di jalan untuk mendeteksi adanya mobil di jalan; lampu diperbaharui setiap 30 detik; sebuah lampu hanya berubah jika terdapat sebuah mobil yang menunggu di jalan lawannya.

Tabel transisi state:

CurrState InputEW InputNS NextState=Output

N 0 0 N

N 0 1 N

N 1 0 E

N 1 1 E

(36)

State Diagram

Tabel transisi state:

CurrState InputEW InputNS NextState=Output

N 0 0 N N 0 1 N N 1 0 E N 1 1 E E 0 0 E E 0 1 N E 1 0 E E 1 1 N

(37)

Arsitektur Dasar MIPS

Sekarang kita memahami clock dan penyimpan (storage)

dari state, kita akan mendesain CPU sederhana yang

mengeksekusi:

Matematika dasar (add, sub, and, or, slt)

Akses memori (lw dan sw)

(38)

Overview dari Implementasi

Kita butuh memori

Untuk menyimpan instruksi

Untuk menyimpan data

Sekarang ini, keduanya dianggap unit yang berbeda

Kita butuh register – register, ALU, dan banyak kontrol logic

Operasi CPU yang sama untuk setiap instruksi:

Menggunakan program counter (PC) untuk menarik

instruksi dari memori instruksi

(39)

Pandangan dari 30,000 Kaki

•Apakah peran dari unit Add?

Catatan: Kita belum menunjukkan multipleksornya

(40)

40

Metodologi Clocking

•Dimanakan diantara unit – unit ini yang membutuhkan clock?

•Apakah yang akan disimpan (latched) pada rising edge dari clock?

(41)

Implementasi Instruksi Tipe R

•Instruksi dalam bentuk add $t1, $t2, $t3

(42)

Implementasi dari Loads/Stores

• Instruksi dalam bentuk lw $t1, 8($t2) dan sw $t1, 8($t2)

(43)

Implementasi Instruksi Tipe J

(44)
(45)
(46)

46

Mesin Siklus Tunggal Vs. Ganda

Pada implementasi ini, setiap instruksi membutuhkan satu

siklus untuk selesai

waktu siklus = waktu yang dibutuhkan

untuk siklus terlama

Jika eksekusi dipecah menjadi siklus banyak (lebih cepat),

instruksi yang lebih pendek akan selesai lebih dulu

Waktu siklus = 20 ns Load Add Beq Waktu siklus = 5 ns Load Add Beq 1 cycle 1 cycle 1 cycle 4 cycles 3 cycles 2 cycles

(47)

Prosesor Siklus Ganda

(48)

Siklus 1

PC dipergunakan untuk memilih instruksi yang sesuai untuk

dikeluarkan dari unit memori

Instruksi di-latch ke register instruksi di akhir clock cycle

ALU menjalankan PC+4 dan menyimpannya di dalam PC

pada akhir clock cycle (catatan bahwa ALU bebas di

siklus ini)

Sirkuit kontrol sekarang harus “cycle-aware” – PC yang baru

tidak perlu melihat instr-memori sampai kita selesai dengan

instruksiyang sekarang

(49)

Siklus 2

Instruksi menspesifikasi nilai register yang diminta –

ini adalah pembacaan dari berkas register dan

menyim-pannya dalam latch A dan B (ini terjadi meskipun

operands tidak dibutuhkan)

16 bit terakhir dipergunakan untuk menghitung PC+4+offset

(jika instruksi ini ternyata sebuah brach) – ini di-latch

menjadi ALUOut

Catatan bahwa kita belum menentukan tipe instruksinya,

maka operasi diatas adalah “spekulatif”

(50)

Siklus 3

Operasinya tergantung dari tipe instruksi

•Akses memori: alamat dihitung dengan menambahkan offset pada nilai yang dibaca pada berkas register, hasilnya di-latch dalam ALUOut.

•ALU: Operasi ALU dilaksanakan pada nilai yang terbaca dari berkas register dan hasilnya di-latch dalam ALUOut

•Branch: ALU melaksanakan operasi untuk “beq” dan jika terjadi branch, target branch-nya (saat ini ada di ALUOut) di-latch ke PC di akhir siklus

•Catatan bahwa operasi branch berakhir pada akhir siklus 3, operasi yang lain masih berlanjut

(51)

Siklus 4

Akses memori: alamat dalam ALUOut digunakan untuk

mengambil sebuah word dalam memori – ini di-latch ke

dalam register data memori

ALU: hasil di-latch dalam ALUOut diumpankan sebagai

input pada berkas register, instruksi yang tersimpan dalam

latch-instruksi menspesifikasi dimana hasilnya harus

dituliskan

Di akhir siklus, operasi ALU dan penulisan memori telah

selesai

(52)

52

Siklus 5

Pembacaan memori: nilai yang dibaca dari memori

(dan di-latch ke dalam register data memori) sekarang

ditulis ke dalam berkas register

Ringkasan:

Branch dan jump: 3 siklus

ALU, store: 4 siklus

Akses memori: 5 siklus

ALU lebih lambat karena membutuhkan penulisan ke

berkas register

Store lebih lambat karena membutuhkan penulisan ke

data memori

Load lebih lambat kerena membutuhkan pembacaan data

memori dan penulisan ke berkas register

(53)

Rata - rata CPI

Sekarang kita bisa menghitung CPI rata – rata dari sebuah

program: jika sebuah program terdiri dari load (25%), store

(10%), branch (13%), dan operasi ALU (52%), rata – rata

CPI adalah

0.25 x 5 + 0.1 x 4 + 0.13 x 3 + 0.52 x 4 = 4.12

Anda dapat memecah desain CPU ini menjadi siklus yang

lebih pendek, contohnya, sebuah load membutuhkan 10

siklus, store 8, ALU 8, branch 6

rata – rata CPI akan

dobel, tapi juga kecepatan clocknya, kinerja netnya akan

kira – kira sama.

(54)

Kontrol Logic

•Tercatat bahwa signal – signal kontrol untuk setiap unit akan ditentukan oleh 2 faktor:

Tipe instruksi

Jumlah siklus dari instruksi ini

Maka, kontrolnya diimplementasikan sebagai sebuah mesin finite state – setiap siklus, transisi FSM ke state yang baru dengan set output tertentu (signal – signal kontrol) dan ini adalah fungsi dari inputnya (tipe instr).

Gambar

Tabel kebenaran dari operasi ini:
Tabel Transisi State
Tabel transisi state:

Referensi

Dokumen terkait

This study was conducted to compare the effectiveness between ROM and MDT-WHO regimen in the first 12 months based on the derivation in morphological index (MI) of acid-fast

Setelah itu, maka dapat dibandingkan antara usahatani padi sawah sistim irigasi dengan usahatani sistin tadah hujan yaitu pada pengelolaan, biaya produksi, produksi,

Kebutuhan masyarakat terhadap ruang publik sebagai sarana melakukan aktivitas dengan beragam kegiatan secara bersama- sama diwujudkan melalui interaksi sosial yang

Unfortunately, socio-economic planning of a country so far has yet to be committed to "happiness" despite the increasing aware- ness among socio-economic scholars about

saham menjadi kas, mereka tidak mau membayar dengan harga tinggi pada perusahaan yang memiliki DPR tinggi.. EURO 2000 memiliki data

(2006) yang mengisolasi protoplas mesofil daun anggrek Dendrobium sonia “Bom 17” dengan menggunakan larutan osmotikum manitol, bahwa waktu inkubasi yang optimal

tempat kerja yang aman, bersih dan sehat Sebagian besar Rumah Sakit kurang menggalang kemitraan untuk meningkatkan upaya pelayanan yang bersifat Preventif dan Promotif Isu