Skip to content Skip to sidebar Skip to footer

Inilah Pengertian dan Fungsi Memori Komputer hingga Klasifikasinya (+ Kode Hamming)

Assalammu‘alaikum wr. wb.

Hello guys, Kembali lagi bersama Inzaghi's Blog! Pastinya Komputer membutuhkan Memori untuk menyimpan sesuatu. Baik itu Memori Utama seperti RAM dan ROM maupun Memori Sekunder seperti CD/DVD.



Sumber Artikel : Termasmedia.com dan Nesabamedia.com

Anda tentunya sudah tidak asing lagi dengan komponen yang satu ini. Memori merupakan salah satu komponen penting didalam sebuah Komputer.

Nah, pada artikel ini, saya akan menjelaskan mengenai pengertian, fungsi, karakteristik, dan cara kerja memori internal. Sama halnya pada perangkat lainnya (selain komputer), memori digunakan untuk menyimpan data/informasi sementara.

Beberapa dari kita mungkin sudah memiliki pengetahuan dasar mengenai apa itu memori dan fungsinya. Tapi, apakah kita telah mengetahui pengertian dan fungsi memori secara detail serta apa karakteristik, dan bagaimana cara kerja Memori Internal? Untuk informasi lebih lanjut mengenai pengertian memori internal, mari simak penjelasan dibawah ini.

MEMORI

A. Pengertian Memori

Memori adalah istilah umum yang mengacu ke perangkat fisik komputer apa saja yang mampu menyimpan data baik secara permanen maupun sementara. Memori termasuk komponen vital karena performa dari sebuah unit komputer salah satunya ditentukan oleh komponen ini, semakin besar ruang penyimpanan dan kecepatan dari memori, semakin bagus performa dari sebuah Unit Komputer.

Memori komputer dapat memiliki sifat volatile atau non-volatile. Memori komputer yang memiliki sifat Volatile akan kehilangan konten (data atau informasi) ketika komputer mati (kehilangan daya), sebaliknya memori komputer yang bersifat Non-Volatile akan tetap menyimpan konten sekalipun komputer dalam keadaan mati. Memori komputer dapat diklasifikasikan menjadi 2 (Dua) yaitu Memori Utama (Main Memory) dan Memori Sekunder (Secondary Memory).

Memori atau yang disebut sebagai memori fisik ataupun memori internal adalah media yang menyimpan data atau informasi sementara pada komputer . Memori merupakan komponen yang penting didalam suatu komputer yang berada didalam CPU (Central Processing Unit). Memori ini akan menyimpan setiap program dan data yang diproses oleh prosesor.

Adapun data atau informasi yang disimpan didalam memori ini bersifat sementara karena data hanya akan tersimpan selama komputer menyala atau hidup. Jadi, ketika komputer dimatikan maka data yang disimpan di memori akan hilang. Oleh karena itulah, sebelum Anda mematikan komputer, simpanlah semua data Anda kedalam media penyimpanan permanen (tetap) di Media Penyimpanan berbasis disk seperti hard disk dan floopy disk.

B. Klasifikasi Memori


1. Memori Utama (Main Memory)

Memori utama digunakan sebagai akses data cepat oleh processor dan tidak berfungsi sebagai tempat untuk menyimpan data. Memori utama dapat diklasifikasikan menjadi 2 (Dua) yaitu ROM (Read Only Memori) dan RAM (Random Access Memory) atau juga dikenal dengan Read and Write Memory (RWM).

    a. Read Only Memory (ROM)

ROM adalah jenis memori yang kontennya tidak hilang ketika komputer mati (kehilangan daya). Pada awalnya memori ini hanya bisa dibaca saja, tidak bisa dihapus dan kontennya sudah diisi pabrik pembuatnya. Saat komputer dinyalakan, sebagaian konten (instruksi) di ROM akan dipindahkan ke RAM. Instruksi-instruksi yang ada di ROM diantaranya adalah instruksi untuk membaca sistem operasi, memeriksa semua komponen dari sistem dan menampilkan pesan di layar.

Dalam perkembangannya, ROM mempunyai beberapa tipe yaitu PROM (Programmable ROM) adalah ROM yang dapat diprogram kembali satu kali, RPROM (Re-Programmable ROM) adalah ROM yang dapat diprogram sesuai keinginan, EPROM (Eraseble Programmable ROM) adalah ROM yang dapat dihapus menggunakan sinar ultraviolet dan diprogram kembali dan EEPROM (Electically Eraseble Programmable ROM) adalah ROM yang dapat dihapus dengan sinyal elektrik dan diprogram ulang. Di komputer desktop, ROM juga dikenal dengan BIOS (Basic Input/Output System) atau ROM-BIOS.

    b. Random Access Memory (RAM)

RAM adalah kumpulan chip memori berupa IC (Integrated Circuit) yang terdiri dari jutaan transistor dan kapasitor. RAM merupakan tempat penyimpanan sementara dari komputer saat dijalankan dan dapat diakses secara acak (random). Konten dari RAM dapat dirubah (diganti) dan bersifat volatile. Fungsi utama RAM adalah mempercepat pemrosesan data karena dapat disimpan dan diambil kembali dengan sangat cepat.

Semakin besar RAM yang dimiliki komputer, semakin cepat pula kinerja dari komputer tersebut. RAM dibagi menjadi 2 tipe yaitu DRAM (Dynamic RAM) adalah memori utama dari komputer (contoh FPM, EDO, SDRAM, RDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM dan DDR4 SDRAM) dan SRAM (Static RAM) adalah RAM yang digunakan sebagai cache berkecepatan Tinggi dan Buffer.

2. Memori Sekunder (Secondary Memory)

Bersifat non-volatile dan digunakan sebagai perangkat penyimpanan skala besar untuk menyimpan data dan program secara permanen. Data maupun program yang tersimpan di memori sekunder ini tetap ada dan tidak akan hilang meskipun komputer mati (tidak ada daya). Data ini bisa disalin ke berbagai macam perangkat memori sekunder lainnya dan akan tetap sama apabila dibuka di komputer lain. Memori sekunder dapat dibagi menjadi Optical Storage Device, Magnetic Storage Device dan Flash Memory Device.

    a. Optical Storage Device


Perangkat penyimpanan data berbentu kecil dan portabel serta dapat diperoleh dengan mudah dan murah di pasaran. Contohnya adalah Compact Disc (CD), DVD dan Blu-ray Disc.

    b. Magnetic Storage Device



Perangkat penyimpanan yang paling populer untuk akses langsung. Data atau infomasi di simpan di trek-trek dari permukaan disk dalam bentuk titik magnet kecil. Contohnya adalah Floppy Disc dan Hard Disc Drive.

    c. Flash Memory Device


Perangkat penyimpanan dengan desain ringan dan kecil. Perangkat ini dioperasikan dengan daya yang disediakan dari port USB komputer. Contohnya adalah USB Flash Drive, Solid State Drive.

C. Jenis-jenis Memori


Berikut dibawah ini beberapa jenis Memori Fisik atau Internal.

1. RAM (Random-Access Memory)


RAM digunakan untuk menyimpan data sementara yang dapat segera diakses oleh prosesor saat diperlukan. Karena bersifat sementara maka ketika komputer dimatikan maka data akan juga terhapus. Penyimpanan data dilakukan secara acak dan pengaksesan data oleh prosesor juga dilakukan secara acak.

2. ROM (Read-Only-Memory)


ROM adalah media penyimpanan yang bersifat permanen dan tidak memungkinkan data didalamnya dapat dimodifikasi. Artinya data pada ROM hanya dapat diakses dan dibaca oleh pengguna tanpa bisa dimodifikasi. Vendor komputer yang akan menyediakan ROM pada komputer yang berisi program ataupun data. Pada komputer, ROM umumnya disebut sebagai BIOS (Basic Input / Output System) atau ROM-BIOS.

3. SRAM (Static Random-Access Memory)


SRAM merupakan jenis RAM yang menyimpan data didalamnya selama komputer masih menyala. Berbeda dengan DRAM yang perlu disegarkan secara periodik. Kemampuan tersebut dikarenakan SRAM dirancang menggunakan transistor tanpa kapasitor. Pastinya, SRAM lebih mahal dan lebih cepat dibandingkan DRAM.

4. DRAM (Dynamic Random-Access Memory)

DRAM merupakan jenis RAM yang banyak digunakan didalam komputer sebagai memori utama yang harus disegarkan oleh CPU secara berkala agar data didalamnya tidak hilang. DRAM ini lebih lambat dari SRAM (Static Random-Access Memory).

5. SDRAM (Sychronous Dynamic Random-Access Memory)

SDRAM adalah jenis DRAM (memori komputer dinamis) yang termasuk memori komputer kategori solid-state yang telah disinkronisasi oleh clock system dimana kecepatannya lebih tinggi dari DRAM.

6. CMOS (Compmentary Meta-Oxyde Semiconductor)

CMOS adalah sebuah chip dari rangkaian terintegrasi yang digunakan di mikroprosesor, RAM statis, pengontrol mikro, dan sirkuit logika digital lainnya. CMOS sendiri merupakan bagian dari ROM.

Bukan hanya di sirkuit digital, CMOS juga digunakan di sirkuit analog seperti pengubah data, sensor gambar, dan trimancar teringtegrasi. Chip ini menggunakan baterai sebagai sumber dayanya. Nah, di CMOS inilah, berbagai pengaturan dasar komputer dilakukan dan disimpan seperti memuat sistem operasi dan pengaturan tanggal dan jam sistem.

7. DIMM (Dual in-line memory module)

DIMM terdiri dari serangkaian sirkuit terpadu DRAM. Modul-modul tersebut dipasang pada papan sirkuit dan didesain untuk digunakan pada komputer personal, server dan workstation. Terdiri dari 2 kecepatan yaitu 00MHz (PC100) dan 133MHz (PC133). DIMM 168 PIN.

8. Cache Memory

Cache Memory merupakan memori yang berukuran kecil, bersifat sementara, dan berkecepatan tinggi yang digunakan untuk menyimpan data ataupun instruksi yang sering diakses. Cache memory menjembatani aliran data diantara prosesor dengan memori utama atau RAM yang biasanya berkecepatan rendah.
Harga dari memori ini juga lebih mahal daripada memori utamanya. Cache memory berguna agar pemroses mengacu kepada cache memory yang kecepatan aksesnya lebih tinggi sehingga kinerja sistem meningkat.

Untuk selengkapnya, silahkan lihat Bagan Hierarki Memori dibawah ini :

Bagan Hierarki Memori

D. Fungsi Memori

Memori internal berfungsi sebagai pengingat sebagai media penyimpanan data ataupun program yang bersifat sementara. Dengan kata lain, jika komputer mati maka data pun akan hilang. Dalam penggunaannya, memori internal diakses secara langsung oleh prosesor. Adapun fungsi utama dari memori internal adalah :
  • Menyimpan data dari peranti masukan sampai data dikirimkan ke ALU (Arithmetic and Logic Unit) untuk diproses lebih lanjut.
  • Menyimpan daya hasil pemrosesan ALU (Arithmetic and Logic Unit) sebelum dikirim ke peranti keluaran.
  • Menampung instruksi ataupun program dari peranti masukan ataupun dari peranti pengingat sekunder.

E. Karakteristik Memori


Berikut dibawah ini beberapa karakteristik dari Memori Internal.

1. Lokasi Memori

Memori internal yang sering disebut sebagai memori fisik, primer ataupun utama, terletak didalam CPU dan bersifat internal terhadap sistem komputer. Nah, memori internal sendiri biasanya menggunakan media RAM.

2. Kapasitas Memori

Biasanya, kapasitas memori internal dinyatakan dalam bentuk byte (1 byte = 8 bit) atau word. Panjang word pada umumnya adalah 8, 16, dan 32 bit.

3. Satuan Transfer

Apa itu Satuan Transfer? Satuan Transfer itu sama dengan jumlah saluran data yang masuk dan keluar dari modul memori. Nah, untuk Memori Internal (Memori Utama), satuan transfer adalah jumlah bit yang dibaca atau dituliskan ke dalam memori pada suatu saat.

Mari kita lihat penjelasan dibawah ini.

    a. Word

Word biasanya sama dengan jumlah bit yang digunakan untuk merepresentasikan bilangan dan panjang instruksi kecuali VAX dan CRAY-1.
  • CRAY-1 memiliki panjang word 64 bit dengan memakai representasi integer 24 bit.
  • VAX memiliki panjang instruksi yang beragam dengan ukuran word 32 bit.
    b. Addressable Units

Pada beberapa sistem, addressable unit sama dengan Word. Adapun, hubungan antara panjang suatu Alamat (A) dengan jumlah Addressable Unit (N) adalah 2A = N.

4. Metode Akses Memori

Berikut dibawah ini empat metode akses memori.

    a. Sequential Access
  • Memori diorganisasikan menjadi unit-unit data yang disebut sebagai record.
  • Akses pada memori dibuat ke dalam bentuk urutan linier yang spesifik atau jelas.
  • Untuk memisahkan record yang ada dan membantu proses pencarian maka digunakan informasi pengalamatan.
  • Mekanisme baca atau tulis (shared read/write mechanism) digunakan secara bersama-sama dengan menuju lokasi yang diinginkan untuk mengeluarkan record.
  • Sangat beragamnya waktu access record.
  • Contoh dari sequential access adalah akses pada pita magnetik.
    b. Direct Access
  • Direct access juga menggunakan mekanisme baca atau tulis (shared read/write mechanism) tetapi setiap record dan blok memiliki alamat yang unik/khas berdasarkan lokasi fisiknya.
  • Pengaksesan pada memori dilakukan secara langsung terhadap kisaran umum (general vicinity) untuk mencapai lokasi akhir.
  • Beragamnya waktu aksesnya.
  • Contoh dari direct access adalah akses pada disk.
    c. Random Access
  • Setiap lokasi bisa dipilih secara acak dan diakses serta diberi alamat secara langsung.
  • Waktu akses pada lokasi tertentu bersifat konstan dan tidak bergantung pada urutan akses sebelumnya.
  • Contoh dari random access adalah sistem memori utama.
    d. Associative Access
  • Setiap word dapat ditemukan berdasarkan isinya dan bukan alamatnya.
  • Setiap lokasi mempunyai mekanisme pengalamatannya tersendiri.
  • Waktu pencariannya tidak bergantung secara konstan terhadap pola akses sebelumnya ataupun lokasi.
  • Contoh dari associative access adalah memori cache.

5. Kinerja Memori

Berikut dibawah ini tiga buah parameter untuk mengukur kinerja sistem memori.

    a. Waktu Akses (Access Time)

Untuk memori internal atau RAM, waktu akses adalah waktu yang diperlukan untuk melakukan operasi baca atau tulis (read/write).

    b. Waktu Siklus (Cycle Time)

Waktu siklus adalah penjumlahan dari waktu akses dan waktu transien hingga sinyal menghilang dari saluran sinyal atau untuk menghasilkan kembali data jika data ini dibaca secara destruktif.

    c. Laju Pemindahan (Transfer Rate)

Transfer rate merupakan kecepatan pemindahan data ke unit memori ataupaun data yang ditransfer dari unit memori. Pada memori internal atau RAM, transfer rate sama dengan 1/waktu siklus.

6. Jenis Fisik Memori

Adapun jenis fisik memori internal atau RAM adalah memori semikonduktor. Jenismemori ini memakai teknologi LSI atau VLSI (very large scale integration).

7. Karakteristik Fisik Memori

Memori internal atau RAM termasuk memori Volatile yang artinya bersifat sementara. Kenapa bersifat sementara? Karena data akan hilang jika komputer mati atau tidak dialiri listrik. Jadi, memori internal ini hanya digunakan untuk menyimpan program-program atau data yang sedang digunakan oleh CPU saja.

8. Organisasi

Organisasi adalah pengaturan bit dalam penyusunan word secara fisik. Kecepatan dan kapasitas memori dibedakan berdasarkan hierarki memori. Hierarki ini disusun mulai dari jenis memori yang paling cepat sampai yang paling lambat, disusun dari kapasitas yang paling kecil sampai yang paling besar, dan disusun dari harga tiap bit memorinya dari yang paling mahal sampai yang paling murah.

F. Cara Kerja Memori

Memori berbentuk seperti sel yang terdiri dari sepotong kecil informasi. Informasi didalam memori dapat berupa data ataupun instruksi kepada komputer untuk melakukan sesuatu. Data didalam memori dapat menjadi suatu perintah untuk keadaan tertentu. Informasi disimpan didalam memori sebagai angka biner. Nah, informasi yang masih belum berbentuk biner nantinya akan di-encoded (diuraikan) oleh instruksi-instruksi yang akan memecahkannya menjadi urutan angka.

Instruksi pemecahan informasi yang lebih kompleks dapat digunakan untuk menyimpan suara, gambar, video dan beragam informasi lainnya. Nah, informasi yang disimpan dalam satu sel itulah yang disebut sebagai byte. Memori bisa ditulis dan dihapus berulang kali sesuai dengan penggunaannya.

Setiap alamat dari lokasi memori dituliskan dalam bilangan heksadesimal (basis 16). Kemudian, CPU akan melacak lokasi tersebut lalu membaca dan menulis data. Adapun, transistor dan kapasitor didalam chip memori, diatur dalam bentuk baris dan juga kolom. Memori internal komputer yang paling umum adalah RAM (Random Access Memory) yang mampu menyimpan data sementara secara optimal dikarenakan dapat mengambil dan menyimpan data dengan lebih cepat.

Penyimpan data sementara pada memori internal membutuhkan aliran listrik artinya komputer haruslah menyala. Ketika komputer mati maka data pun menghilang. Apa yang terjadi saat komputer dihidupkan? Nah, saat komputer dinyalakan, beban BIOS (Basic Input Output System) dari ROM (Read – Only Memory), dan kontroler memori, mengecek semua alamat memori guna memastikan tidak ada error di dalamnya.

Pada proses ini, BIOS akan menyediakan informasi dasar tentang perangkat penyimpanan, susunan boot, dan juga komponen lainnya. Kemuidan, sistem operasi akan dimuat dari hard drive ke sistem RAM sehingga memungkinkan CPU untuk mempunyai akses langsung ke sistem operasi. Jadi, setiap aplikasi yang dijalankan pada komputer akan dimuat ke dalam RAM. Dengan adanya memori komputer, maka proses transfer data dapat menjadi lebih cepat.

Memori internal komputer bekerja dengan melibatkan proses yang saling berhubungan diantara RAM dan ROM dengan CPU (Central Processing Unit) sebagai mediatornya. Beberapa orang menambahkan RAM tambahan kedalam komputernya agar komputernya dapat bekerja lebih baik dan lebih cepat sehingga mampu mendukung pekerjaan mereka.


KODE HAMMING

A. Definisi Kode Hamming


Kode Hamming (Hamming Code) merupakan sistem yang dikembangkan dari error correction code yang mengunakan parity bit, selain Hamming Code banyak juga sistem lain yang lebih efisien dalam error correction code pada data yang terdiri dari banyak bit. Karena pengecekan secara parity ini juga maka kita dapat mengecek kode-kode yang ada. Linear Error-Correction Code memiliki berbagai keterbatasan kesalahan. Pada Hamming Code, kesalahan yang dapat diketahui hanya 1 (Satu) buah sedangkan yang dapat dideteksi adalah 2 (Dua) buah.

Data Bit
Check Bit
2
2
4
3
8
4
16
5
32
6
64
7
128
8
256
9

Terlebih pada transmisi data serial dengan kecepatan tinggi dan kualitas jalur transmisi yang rendah Kesalahan (Error) sangat mungkin terjadi, ukuran banyaknya bit error dalam blok data disebut sebagai Bit Error Rate (BER).Terdapat toleransi kesalahan bit dalam sistem transmisi data, dan batasan nilai BERdalam satu kelompok data 105 bit.

Dalam penanganan kesalahan (error handling) bit terkirim tahapan utama dalam penerimaan data adalah deteksi kesalahan bit terkirim, selanjutnya dilakukan koreksi terhadap Kesalahan (Error). Perbaikan data bisa dilakukan oleh penerima atau pengirim melalui permintaan pengiriman ulang data, permintaan ini melalui sinyal NAK dari penerima ke pengirim.

Seperti telah dijelaskan sebelumnya bahwa proses deteksi kesalahan melalui bit yang ditambahkan (redundant bit) ke dalam data, dengan metode pengkodean tersebut dapat ditentukan kesalahan bitnya. Sistem pengkodean yang lain yang dapat digunakan dalam komunikasi data adalah kode Hamming.

Konsep Dasar Kode Hamming

Konsep Dasar Kode Hamming adalah dengan menggunakan bit pariti untuk disisipkan pada posisi tertentu dalam blok data, dengan demikian memungkinkan untuk dapat digunakan dalam pemeriksaan kesalahan dalam blok data. Aturan untuk menyatakan bit Hamming adalah melalui pendekatan 2n, nilai n dan n adalah bilangan bulat positif, cara untuk menentukan bit Hamming adalah sebagai berikut:
  • Data = 1011 → penyisipan bit Hamming adalah 101x1xx
  • Nilai x dapat dipilih 1 atau 0 dan disisipkan pada data
  • Menentukan jumlah modulo-2bit-1 agar data berpariti genap.
Bit ke-           7   6   5   4   3   2   1
Data              1   0   1   x   1   x   x

Langkah selanjutnya adalah menentukan bit-Hamming yang harus disisipkan ke dalam bit-bit data, dalam hal ini semua bit yang ditandai dengan hurf x adalah tempat posisi bit Humming yang seharus disisipkan. Dengan demikian data yang semula terdiri dari 4 bit data maka pada akhirnya jumlah bit adalah 7 bit.

Tabel penentuan bit-Hamming :

Bit Hamming ke-
Memeriksa Bit Data
Keterangan Membuat Paritas Genap
1
Posisi 3, 5, dan 7
Diberi Logika 1
2
Posisi 3, 6, dan 7
Diberi Logika 0
4
Posisi 5, 6, dan 7
Diberi Logika 0

Bit-Hamming disisipkan ke dalam data, sehingga menjadi :

Bit ke-           7   6   5   4   3   2   1
Data             1   0   1    0   1   0   1

Deteksi data error yang diakibatkan data berubah saat transmisi, diasumsikan terjadi perubahan pada bit ke 3 dari nilai logika 1 menjadi logika 0. Sehingga data yang diterima sebgai berikut :

Bit ke-           7   6   5   4   3   2   1
Data             1   0   1   0   0   0   1

Pemeriksaan data melalui bit-bit Hamming ditemukan error berikut posisi bitnya, pada contoh terjadi Error pada posisi bit ke 3.

Tabel penentuan error(modulo-2)

Bit Hamming ke-
Memeriksa Bit Data
Paritas (Mod 2)
1
Posisi 3, 5, dan 7
Ganjil (ada kesalahan) → 1
2
Posisi 3, 6, dan 7
Ganjil (ada kesalahan) → 1
4
Posisi 5, 6, dan 7
Genap (benar) → 0

Berdasarkan tabel penentuan Error diperoleh nilai Biner 011, yang berarti bisa ditentukan kesalahan adalah pada posisi bit ke 3 pada data.

Perbaikan logika bit dapat dilakukan dengan melakukan inverting bit ke dari data, dengan demikian tidak diperlukan lagi pengiriman NAK ke pengirim untuk melakukan pengiriman ulang

Penerapan Kode Hamming

Kode Hamming digunakan untuk mendeteksi error dan perbaikan kode pesan terkirim, kode koreksi error adalah sebuah algoritma untuk mendeteksi adanya kesalahan dalam pesan yang dikirimkan sekaligus memperbaiki pesan tersebut sehingga pesan dapat tersampaikan dengan benar melalui sistem transmisi data melalui sistem jaringann berbasis pada isi pesan itu sendiri. Sedang Error dapat terjadi yang disebabkan oleh berbagai sebab, sebuah bit dalam pesan mungkin ditambah, terhapus atau berubah. Kode koreksi Error  banyak diaplikasikan pada CD player, high speed modem, dan cellular phone. Deteksi error lebih sederhana dibanding perbaikan sebuah error. Sebagai contoh pengujian digit sering kali dijumpai secara embedded pada sejumlah credit card dengan tujuan mendeteksi keslahan. Berikut merupakan sebuah contoh bagaimana mendeteksi dan memperbaiki kesalahan pada pesan yang dikirimkan :

Aturan main :
  1. Data asli yang akan dikirimkan dinyatakan dalam variabel Di dan check bit dengan (Cj ).
  2. Posisi biner diawali dari bit 1, posisi check bit Cj pada 2n,yaitu 1, 2, 4, 8, …
  3. Penentuan  check bit dilakukan melalui EXOR untuk semua bit data.
Untuk penentuan kode humming dari 4 bit data, maka terdapat D1, D2, D3 dan D4 dan untuk check bit 2n didapat C0, C1 dan C2, sebagai berikut :

Cj = (2n)26252423222120
Posisi bit1

1

1

1

1

0

1

0

1

1

0

0

0

1

1

0

1

0

0

0

1

KodeD4D3D2C2D1C1C0

C0 = D1 xor D2 xor D4

C1= D1 xor D3 xor D4

C2 = D2 xor D3 xor D4


Untuk melihat Contoh lengkapnya, silahkan lihat di sini (Finnasuroso.wordpress.com).

Rumus Perhitungan posisi Check Bit Ci = 2i-1 

Check Bit
Posisi
C1
1
C2
2
C3
4
C4
8
C5
16
C6
32
C7
64
C8
128
C9
256

Untuk bisa memahami tentang penanganan Error, kita perlu melihat dari dekat tentang apa yang disebut error itu. Biasanya, sebuah frame terdiri dari m bit data (yaitu pesan) dan r redundan, atau check bits. Ambil panjang total sebesar n (yaitu, n = m+r). Sebuah satuan n-bit yang berisi data dan checkbit sering kali dikaitkan sebagai codeword n-bit.
Ditentukan 2 buah codeword: 10001001 dan 10110001. Disini kita dapat menentukan berapa banyak bit yang berkaitan berbeda. Dalam hal ini, terdapat 3 bit yang berlainan. Untuk menentukannya cukup melakukan operasi EXCLUSIVE OR pada kedua codeword, dan menghitung jumlah bit 1 pada hasil operasi. Jumlah posisi bit dimana 2 codeword berbeda disebut jarak Hamming (Hamming, 1950).

Hal yang perlu diperhatikan adalah bahwa bila 2 codeword terpisah dengan jarak Hamming d, maka akan diperlukan error bit tunggal d untuk mengkonversi dari yang satu menjadi yang lainnya.

Pada sebagian besar aplikasi transmisi data, seluruh 2m pesan data merupakan data yang legal. Tetapi sehubungan dengan cara penghitungan check bit, tidak semua 2n digunakan. Bila ditentukan algoritma untuk menghitung check bit, maka akan dimungkinkan untuk membuat daftar lengkap codeword yang legal. Dari daftar ini dapat dicari 2 codeword yang jarak Hamming-nya minimum. Jarak ini merupakan jarak Hamming bagi kode yang lengkap.
Sifat-sifat pendeteksian error dan perbaikan error suatu kode tergantung pada jarak Hamming-nya. Untuk mendeteksi d error, anda membutuhkan kode dengan jarak d+1 karena dengan kode seperti itu tidak mungkin bahwa error bit tunggal d dapat mengubah sebuah codeword yang valid menjadi codeword valid lainnya. Ketika penerima melihat codeword yang tidak valid, maka penerima dapat berkata bahwa telah terjadi error pada transmisi. Demikian juga, untuk memperbaiki error d, anda memerlukan kode yang berjarak 2d+1 karena hal itu menyatakan codeword legal dapat terpisah bahkan dengan perubahan d, codeword orisinil akan lebih dekat dibanding Codeword lainnya, maka perbaikan error dapat ditentukan secara unik.

Sebagai sebuah contoh sederhana bagi kode pendeteksian Error, ambil sebuah kode dimana parity bit tunggal ditambahkan ke data. Parity bit dipilih supaya jumlah bit-bit 1 dalam codeword menjadi genap (atau ganjil). Misalnya, bila 10110101 dikirimkan dalam parity genap dengan menambahkan sebuah bit pada bagian ujungnya, maka data itu menjadi 101101011, sedangkan dengan parity genap 10110001 menjadi 101100010. Sebuah kode dengan parity bit tunggal mempunyai jarak 2, karena sembarang error bit tunggal menghasilkan sebuah codeword dengan parity yang salah. Cara ini dapat digunakan untuk mendeteksi erro-error tunggal.

Sebagai contoh sederhana dari kode perbaikan error, ambil sebuah kode yang hanya memiliki empat buah codeword valid :

0000000000,0000011111,1111100000 dan 1111111111

Kode ini mempunyai jarak 5, yang berarti bahwa code tersebut dapat memperbaiki error ganda. Bila codeword 0000011111 tiba, maka penerima akan tahun bahwa data orisinil seharusnya adalah 0000011111. Akan tetapi bila error tripel mengubah 0000000000 menjadi  0000000111, maka error tidak akan dapat diperbaiki.
Bayangkan bahwa kita akan merancang kode dengan m bit pesan dan r bit check yang akan memungkinkan semua error tunggal bisa diperbaiki. Masing-masing dari 2m pesan yang legal membutuhkan pola bit n+1. Karena jumlah total pola bit adalah 2n, kita harus memiliki (n+1)2m £ 2n.

Dengan memakai n = m + r, persyaratan ini menjadi (m + r + 1)£2r. Bila m ditentukan, maka ini akan meletakkan batas bawah pada jumlah bit check yang diperlukan untuk mengkoreksi error tunggal.

Dalam kenyataannya, batas bawah teoritis ini dapat diperoleh dengan menggunakan metoda Hamming (1950). Bit-bit codeword  dinomori secara berurutan, diawali dengan bit 1 pada sisi paling kiri. Bit bit yang merupakan pangkat 2 (1,2,4,8,16 dan seterusnya) adalah bit check. Sisanya (3,5,6,7,9 dan seterusnya) disisipi dengan m bit data. Setiap bit check memaksa parity sebagian kumpulan bit, termasuk dirinya sendiri,  menjadi genap (atau ganjil). Sebuah bit dapat dimasukkan dalam beberapa komputasi parity. Untuk mengetahui bit check dimana bit data pada posisi k berkontribusi, tulis ulang k sebagai jumlahan pangkat 2. Misalnya, 11=1+2+8 dan 29=1+4+8+16. Sebuah bit dicek oleh bit check yang terjadi pada ekspansinya (misalnya, bit 11 dicek oleh bit 1,2 dan 8).

Ketika sebuah codeword tiba, penerima menginisialisasi counter ke nol. Kemudian codeword memeriksa setiap bit check, k (k=1,2,4,8,....) untuk melihat apakah bit check tersebut mempunyai parity yang benar. Bila tidak, codeword akan menambahkan k ke counter. Bila counter sama dengan nol setelah semua bit check diuji (yaitu, bila semua bit checknya benar), codeword akan diterima sebagai valid. Bila counter tidak sama dengan nol, maka pesan mengandung sejumlah bit yang tidak benar. Misalnya bila bit check 1,2, dan 8 mengalami kesalahan (error), maka bit inversinya adalah 11, karena itu hanya satu-satunya yang diperiksa oleh bit 1,2, dan 8. Gambar 3.10 menggambarkan beberapa karakter ASCII 7-bit yang diencode sebagai codeword 11 bit dengan menggunakan kode Hamming. Perlu diingat bahwa data terdapat pada posisi bit 3, 5, 6, 7, 9, 10, 11.

Kode Hamming hanya bisa memperbaiki error tunggal. Akan tetapi, ada trick yang dapat digunakan untuk memungkinkan kode Hamming dapat memperbaiki error yang meletup. Sejumlah k buah codeword yang berurutan disusun sebagai sebuah matriks, satu codeword per baris. Biasanya, data akan ditransmisikan satu baris codeword sekali, dari kiri ke kanan. Untuk mengkoreksi error yang meletup, data harus ditransmisikan satu kolom sekali, diawali dengan kolom yang paling kiri. Ketika seluruh k bit telah dikirimkan, kolom kedua mulai dikirimkan, dan seterusnya. Pada saat frame tiba pada penerima, matriks direkonstruksi, satu kolom per satuan waktu. Bila suatu error yang meletup terjadi, paling banyak 1 bit pada setiap k codeword akan terpengaruh. Akan tetapi kode Hamming dapat memperbaiki satu error per codeword, sehingga seluruh blok dapat diperbaiki. Metode ini memakai kr bit check untuk membuat km bit data dapat immune terhadap error tunggal yang meletup dengan panjang k atau kurang.

Proses Pendeteksian Error

Berikut, inilah cara mendeteksi Error :
  • Hitung panjang data masukan dari metode hamming code yang merupakan hasil penjumlahan dari panjang data masukan dengan panjang check bit. Panjang data keluaran dari metode hamming code sama dengan panjang data masukan dari metode hamming code.
  • Tandai posisi bit yang merupakan posisi dari check bit. Posisi selain posisi check bit merupakan posisi data bit.
  • Tentukan rumus perhitungan dari masing-masing check bit.untuk n = 1 hingga jumlah dari check bit, lakukan hal berikut:
  • Catat semua posisi dimana bit n dari member position bernilai 1, kecuali posisi bit itu sendiri. Member position merupakan bentuk biner dari posisi bit. Rumus dari check bit n sama dengan operasi XOR dari posisi-posisi yang dicatat.

B. Kode Hamming dalam Bahasa C dan C++

Sumber Artikel : Thecrazyprogrammer.com [Lalu diterjemahkan melalui Google Translate]

Di sini Anda akan mendapatkan program untuk kode hamming dalam C dan C++. Kode Hamming adalah metode deteksi kesalahan dan koreksi kesalahan yang populer dalam komunikasi data. Kode Hamming hanya dapat mendeteksi kesalahan 2 bit dan memperbaiki kesalahan satu bit yang berarti tidak dapat memperbaiki kesalahan burst jika mungkin terjadi saat transmisi data.

Kode Hamming menggunakan bit redundan (bit ekstra) yang dihitung menurut rumus di bawah ini : -


Dimana r adalah jumlah bit redundan yang dibutuhkan dan m adalah jumlah bit data.

R dihitung dengan menempatkan r = 1, 2, 3, 4, … sampai persamaan di atas menjadi benar.

R1 bit ditambahkan pada posisi 20

R2 bit ditambahkan pada posisi 21

R3 bit ditambahkan pada posisi 22 dan seterusnya.

Bit redundan ini kemudian ditambahkan ke data asli untuk perhitungan kesalahan di ujung penerima.

Di ujung penerima dengan bantuan paritas genap (umumnya) posisi bit yang salah diidentifikasi dan karena data dalam biner, kami melengkapi posisi bit yang salah untuk mengoreksi data yang diterima.

Indeks paritas masing-masing dihitung untuk r1, r2, r3, r4 dan seterusnya.


Program untuk Kode Hamming dalam C

#include<stdio.h>
 
void main() {
    int data[10];
    int dataatrec[10],c,c1,c2,c3,i;
 
    printf("Enter 4 bits of data one by one\n");
    scanf("%d",&data[0]);
    scanf("%d",&data[1]);
    scanf("%d",&data[2]);
    scanf("%d",&data[4]);
 
    //Calculation of even parity
    data[6]=data[0]^data[2]^data[4];
    data[5]=data[0]^data[1]^data[4];
    data[3]=data[0]^data[1]^data[2];
 
    printf("\nEncoded data is\n");
    for(i=0;i<7;i++)
        printf("%d",data[i]);
 
    printf("\n\nEnter received data bits one by one\n");
    for(i=0;i<7;i++)
        scanf("%d",&dataatrec[i]);
 
    c1=dataatrec[6]^dataatrec[4]^dataatrec[2]^dataatrec[0];
    c2=dataatrec[5]^dataatrec[4]^dataatrec[1]^dataatrec[0];
    c3=dataatrec[3]^dataatrec[2]^dataatrec[1]^dataatrec[0];
    c=c3*4+c2*2+c1;
 
    if(c==0) {
    printf("\nNo error while transmission of data\n");
    }
    else {
    printf("\nError on position %d",c);
    printf("\nData sent : ");
        for(i=0;i<7;i++)
        printf("%d",data[i]);
           
    printf("\nData received : ");
        for(i=0;i<7;i++)
        printf("%d",dataatrec[i]);
    printf("\nCorrect message is\n");
 
    //if errorneous bit is 0 we complement it else vice versa
        if(dataatrec[7-c]==0)
        dataatrec[7-c]=1;
        else
        dataatrec[7-c]=0;
        for (i=0;i<7;i++) {
        printf("%d",dataatrec[i]);
        }
    }
}
Program untuk Kode Hamming dalam C++

#include<iostream>
 
using namespace std;
 
int main() {
    int data[10];
    int dataatrec[10],c,c1,c2,c3,i;
 
    cout<<"Enter 4 bits of data one by one\n";
    cin>>data[0];
    cin>>data[1];
    cin>>data[2];
    cin>>data[4];
 
    //Calculation of even parity
    data[6]=data[0]^data[2]^data[4];
    data[5]=data[0]^data[1]^data[4];
    data[3]=data[0]^data[1]^data[2];
 
    cout<<"\nEncoded data is\n";
    for(i=0;i<7;i++)
        cout<<data[i];
       
    cout<<"\n\nEnter received data bits one by one\n";
    for(i=0;i<7;i++)
        cin>>dataatrec[i];
   
    c1=dataatrec[6]^dataatrec[4]^dataatrec[2]^dataatrec[0];
    c2=dataatrec[5]^dataatrec[4]^dataatrec[1]^dataatrec[0];
    c3=dataatrec[3]^dataatrec[2]^dataatrec[1]^dataatrec[0];
    c=c3*4+c2*2+c1;
   
    if(c==0) {
    cout<<"\nNo error while transmission of data\n";
    }
    else {
    cout<<"\nError on position "<<c;
    cout<<"\nData sent : ";
    for(i=0;i<7;i++)
        cout<<data[i];
           
    cout<<"\nData received : ";
        for(i=0;i<7;i++)
        cout<<dataatrec[i];
    cout<<"\nCorrect message is\n";
           
    //if errorneous bit is 0 we complement it else vice versa
        if(dataatrec[7-c]==0)
        dataatrec[7-c]=1;
        else
        dataatrec[7-c]=0;
        for (i=0;i<7;i++) {
        cout<<dataatrec[i];
        }
    }
return 0;
}
Output

Hasilnya akan seperti ini setelah Anda lakukan Running Program (Sebagai Contoh) :

Enter 4 bits of data one by one
1
0
1
0

Encoded data is
1010010

Enter received data bits one by one
1
0
1
0
0
1
0

No error while transmission of data

Jika hasilnya "No error while transmission of data", artinya Data yang kamu masukkan itu Benar dan tidak ada Error. Sebaliknya, jika ada pesan tambahan, artinya Data yang kamu masukkan itu Salah dan ada Error.


Itulah Materi tentang Fungsi Memori Komputer beserta Kode Hamming. Semoga bermanfaat bagi Anak IT.

Terima Kasih 😄😘👌👍 :)

Wassalammu‘alaikum wr. wb.

Ads