DMA (Direct Memory Access) Pada komputer
DMA
(Direct Memory Access) adalah suatu hardware spesial (chip) yang dapat
mengontrol aliran bit data antara memory (RAM) dan beberapa controller
dari I/O devices tanpa memerlukan interferensi dari CPU secara terus
menerus. (Mengakses dan mengontrol memori sistem tanpa interferensi CPU
secara terus menerus).
Fungsi dari DMA sendiri adalah agar CPU dapat melakukan pekerjaan atau instruksi yang berbeda ketika melakukan operasi baca tulis dari perangkat peripheral. Tanpa adanya DMA CPU akan terus sibuk melakukan operasi baca tulis (transfer data) dan tidak dapat melakukan atau menyelesaikan instruksi yang lain. Dengan adanya DMA, CPU cukup mempersiapkan DMA chip dengan cara memberikan beberapa informasi seperti jumlah data bit yang ditransfer, alamat dari device dan memory yang diperlukan dan arah dari aliran data tersebut, setelah itu DMA chip sendiri yang akan menyelesaikannya. DMA chip akan melakukan interupt, ketika pekerjaannya sudah selesai. Selama DMA chip melakukan tugasnya hingga munculnya interupt, CPU dapat menyelesaikan instruksi yang lainnya.
DMA chip atau DMA controller sangat beragam tergantung dari teknologi yang ditanamkan padanya, untuk menjelaskan cara kerjanya akan digunakan jenis yang paling sederhana, yaitu DMA chip yang menangani sebuah transfer setiap waktunya. Berikut ini cara kerjanya:
Pertama CPU akan memprogram atau mengeset DMA chip dengan mengatur registerinya, agar DMA chip mengetahui apa saja yang perlu ditransfer dan kemana informasi tersebut perlu ditransfer. Selain itu CPU juga akan memberikan command atau perintah pada disk controller untuk membaca data dari disk dan menuliskannya pada internal buffer, serta melakukan checksum untuk memastikan tidak adanya error yang terjadi ketika membaca dan menuliskan data dari disk menuju internal buffer. Bila tidak ada terjadi error maka DMA chip dapat memulai untuk melakukan transfer. DMA chip akan melakukan request kepada disk controller untuk melakukan transfer data menuju main memory (RAM). Selama melakukan transfer menuju memory akan terjadi bus cycle, dan setiap kali selesai menuliskan data pada memory, disk controller akan mengirim suatu sinyal (acknowledgement signal) pada DMA chip. Kemudian DMA chip akan menaikkan alamat memory untuk digunakan dan melakukan pengurangan pada counter bit data. Proses dari DMA chip melakukan request sampai disk controller mengirimkan sinyal kembali pada DMA chip akan terus berlangsung hingga counter mencapai 0. Ketika counter mencapai 0, maka DMA chip akan melakukan interupt dan memberitahukan pada CPU bahwa proses transfer sudah selesai. Semua transfer data dan sinyal ini dikirimkan melalui suatu bus yang menghubungkan CPU, DMA chip (controller), Disk controller dan main memory. Berikut ini gambar untuk mempermudah penjelasan:
Prinsip kerja DMA
• CPU akan mendelegasikan kerja I/O kepada DMA
• CPU hanya akan terlibat pada awal proses untuk memberikan instruksi lengkap pada DMA dan akhir proses saja
• CPU dapat menjalankan proses lainnya tanpa banyak terganggu dengan interupsi
• Melaksanakan transfer data secara mandiri :
1. DMA memerlukan pengambilalihan kontrol bus dari CPU
2. DMA akan menggunakan bus bila CPU tidak menggunakannya atau DMA memaksa CPU untuk menghentikan sementara penggunaan bus
3. Teknik cyclestealing, modul DMA mengambil alih siklus bus
• CPU akan mendelegasikan kerja I/O kepada DMA
• CPU hanya akan terlibat pada awal proses untuk memberikan instruksi lengkap pada DMA dan akhir proses saja
• CPU dapat menjalankan proses lainnya tanpa banyak terganggu dengan interupsi
• Melaksanakan transfer data secara mandiri :
1. DMA memerlukan pengambilalihan kontrol bus dari CPU
2. DMA akan menggunakan bus bila CPU tidak menggunakannya atau DMA memaksa CPU untuk menghentikan sementara penggunaan bus
3. Teknik cyclestealing, modul DMA mengambil alih siklus bus
Tiga langkah dalam transfer DMA:
1. Prosesor menyiapkan DMA transfer dengan menyedia kan data-data dari perangkat, operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yang ditransfer.
2. Pengendali DMA memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca data), sampai seluruh blok sudah di transfer.
3. Pengendali DMA meng-interupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.
Pada dasarnya, DMA mempunyai dua metode yang berbeda dalam mentransfer data. Metode yang pertama ialah metode yang sangat baku dan sederhana disebut HALT, atau Burst Mode DMA, karena pengendali DMA memegang kontrol dari sistem bus dan mentransfer semua blok data ke atau dari memori pada single burst. Selagi transfer masih
dalam prosres, sistem mikroprosessor diset idle, tidak melakukan instruksi operasi untuk menjaga internal register. Tipe operasi DMA seperti ini ada pada kebanyakan komputer.
Metode yang kedua, mengikutsertakan pengendali DMA untuk memegang kontrol dari sistem bus untuk jangka waktu yang lebih pendek pada periode dimana mikroprosessor sibuk dengan operasi internal dan tidak membutuhkan akses ke sistem bus. Metode DMA ini disebut cycle stealing mode. Cycle stealing DMA lebih kompleks untuk diimplementasikan
dibandingkan HALT DMA, karena pengendali DMA harus mempunyai kepintaran untuk merasakan waktu pada saat sistem bus terbuka.
1 Operasi Logika
Dalam rangkaian
logika terdapat operasi dasar untuk menunjukkan suatu perilaku dari
operasi-operasi tersebut, operasi ini biasanya ditunjukkan dengan menggunakan
suatu tabel kebenaran. Tabel kebenaran berisi statemen-statemen bernilai
TRUE(T) and FALSE(F) yang dalam tabel dilambangkan dengan “1” untuk TRUE(benar)
dan “0” untuk FALSE(salah). Berikut operasi-operasi dasar logika yang
dijelaskan dengan tabel kebenaran :
a. Operasi
INVERS (NOT)
A
|
A’
|
0
|
1
|
1
|
0
|
Operasi INVERS / NOT
merupakan suatu operasi yang menghasilkan keluaran nilai kebalikannya. Operasi
INVERS /
NOT dilambangkan
dengan tanda single apostrope ( ‘ ).
Operasi ini akan mengubah logik 1
menjadi 0 dan sebaliknya.
A
|
B
|
A.B
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
b. Operasi
AND
Operasi AND merupakan
operasi boolean yang yang akan memghasilkan nilai 1 ketika dipasangkan dengan 1
pula. Operasi AND dilambangkan dengan dot ( . ). Operasi ini hanya akan
menghasilkan nilai benar jika kedua variabel bernilai benar, selain itu akan
bernilai salah.
c.
Operasi OR
A
|
B
|
A+B
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
Operasi OR merupakan
operasi yang hanya akan menghasilkan nilai benar(1) jika salah satu variabelnya
bernilai benar(1) serta akan menghasilkan nilai salah jika kedua variabelnya
bernilai salah. Operasi OR dilambangkan dengan plus (+).
Operasi Turunan
A
|
B
|
(A+B)’
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
0
|
d. Operasi
logika NOR
Operasi NOR merupakan
perpaduan dari operasi INVERS / NOT dan OR. Operasi NOR kan menghasilkan
keluaran OR yang di inverskan. Operasi NOR mempunyai dua buah lambang yaitu
lambang OR (+) dan INVERS / NOT ( ‘ ).
e. Operasi
logika NAND
A
|
B
|
(A.B)’
|
0
|
0
|
1
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
0
|
Operasi NAND
merupakan perpaduan dari operasi INVERS/NOT dan AND. Operasi NAND akan
menghasilkan keluaran AND yang di inverskan. Operasi NAND mempunyai dua buah
lambang yaitu lambang AND ( . ) dan INVERS / NOT ( ‘ ).
A
|
B
|
A’.B + A.B’
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
0
|
f.
Operasi logika EXOR
EXOR berarti
exklusive OR. Operasi XOR akan menghasilkan keluaran 1(benar) jika jumlah
masukan yang bernilai 1(benar) berjumlah ganjil. Operasi XOR merupakan hasil
dari
(a’.b) + (a.b’).
g.
Operasi logika EXNOR
A
|
B
|
A’+B . A+B’
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
EXNOR berarti
exklusive NOR. Operasi ini akan menghasilkan keluaran 1(benar) jika jumlah
masukan yang bernilai 1(benar) berjumlah genap atau tidak ada sama sekali.
Operasi XOR merupakan hasil dari a’+b . a+b’.
A
|
B
|
C
|
A’
|
B’
|
C’
|
AB
|
BC
|
A’BC
|
AB’C
|
ABC’
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
2. Gerbang Logika
Gerbang logika sering juga disebut gerbang
logika Boolean yang merupakan sebuah sistem pemrosesan dasar yang dapat
memproses input-input yang berupa bilangan biner menjadi sebuah output yang berkondisi yang akhirnya
digunakan untuk proses selanjutnya.
Gerbang logika dapat mengkondisikan input – input yang masuk kemudian
menjadikannya sebuah output yang sesuai dengan apa yang ditentukan. Terdapat
tiga gerbang logika dasar, yaitu : gerbang AND, gerbang OR, gerbang NOT. Ketiga
gerbang ini menghasilkan gerbang berikutnya, yaitu : gerbang NAND, gerbang NOR,
gerbang XOR, gerbang XNOR.
Istilah masukan bernilai tinggi adalah masukan
bernilai 1, masukan bernilai rendah adalah masukan bernilai 0, begitu juga
untuk keluaran, dimana ”A” dan ”B” merupakan masukan dan “Y“ merupakan
keluaran.
a.
Gerbang NOT
Gerbang NOT merupakan gerbang logika yang hanya
memiliki satu masukan dan satu
keluaran. Jika masukan logika
“1“ maka keluarannya akan
berubah menjadi “0“ begitu pula
sebaliknya.
b.
Gerbang AND
Gerbang AND mempunyai dua atau lebih masukan tetapi
hanya satu keluaran. Dalam
gerbang AND, untuk menghasilkan
keluaran tinggi maka semua
masukan harus bernilai tinggi.
Jika dinotasikan ke dalam
operasi matematika, maka gerbang
AND merupakan operasi
perkalian bilangan biner A x B = Y / A.B = Y
c. Gerbang OR
Gerbang OR akan memberikan keluaran tinggi jika salah
satu atau semua masukan bernilai tinggi, sehingga dapat dikatakan
bahwa gerbang OR hanya memiliki keluaran rendah jika semua
masukan bernilai rendah. Jika dinotasikan ke dalam operasi
matematika, maka gerbang OR merupakan operasi penjumlahan
bilangan biner A+B =Y
d.
Gerbang NOR (NOT-OR)
Gerbang NOR (NOT-OR) merupakan penggabungan
gerbang OR dan NOT yang keluarannya merupakan kebalikan
dari gerbang OR. Dari tabel kebenaran gerbang NOR diatas
terlihat bahwa keluaran “Y“ gerbang NOR merupakan kebalikan dari
gerbang OR, keluaran gerbang NOR hanya akan bernilai logika “1“
jika kedua masukan-nya memiliki tingkat logika “0“.
e.
Gerbang NAND (NOT-AND)
Gerbang NAND (NOT-AND) merupakan penggabungan
gerbang AND dan NOT yang
keluaran-nya merupakan kebalikan
gerbang AND. Keluaran gerbang
NAND hanya akan bernilai
logika “0“ jika kedua
masukannya memiliki tingkat logika “1“,
selain daripada itu
keluarannya akan memiliki nilai logika “1“.
f.
Gerbang XOR
Gerbang XOR atau biasa disebut juga sebagai Eksklusif-OR.
Gerbang XOR akan menghasilkan
keluaran rendah jika semua
masukan bernilai rendah atau
semua masukan bernilai tinggi
atau dengan kata lain bahwa
XOR akan menghasilkan keluaran
rendah jika masukan bernilai
sama semua.
g. Gerbang XNOR
Gerbang XNOR atau biasa disebut juga Eksklusif-NOR
merupakan gabungan dua gerbang
logika yaitu gerbang XOR
dan NOT. Keluaran dari gerbang
XNOR merupakan kebalikan
dari gerbang XOR.
Adapun Rangkaian aritmatika dasar yang termasuk ke dalam
rangkaian kombinasional yaitu suatu rangkaian yang outputnya tidak tergantung
pada kondisi output sebelumnya, hanya tergantung pada present state dari input.
a. Half Adder dan Full Adder
Sebuah rangkaian kombinasional
yang melaksanakan penjumlahan 2 digit biner disebut dengan half adder,
sedangkan rangkaian yang melaksanakan penjumlahan 3 bit disebut full adder.
Rangkaian full adder dapat tersusun dari dua buah half adder.
Half
Adder Full Adder
b. Half Substractor dan Full Substractor
Rangkaian half substractor hampir sama dengan rangkaian half adder. D
(Difference) ekivalen dengan S (sum), dan B (borrow) ekivalen dengan C (carry)
pada half adder. Kedua rangkaian ini melakukan operasi pengurangan biner. Half
substractor untuk pengurangan satu bit biner, sedangkan full substractor untuk
pengurangan lebih dari satu bit biner.
Half Substractor Full
Substractor
c. Multiplexer
Multiplexer merupakan
rangkaian logika yang berfungsi memilih data yang ada pada input-nya untuk
disalurkan ke output-nya dengan bantuan selektor.
Multiplexer disebut juga
sebagai pemilih data (data selector). Multiplexer juga merupakan rangkaian yang
memiliki fungsi untuk memilih dari 2n bit data input ke satu tujuan output.