Memori (komputer)

Dalam komputasi, **memori** adalah perangkat atau sistem yang digunakan untuk menyimpan informasi untuk penggunaan langsung dalam komputer atau perangkat keras komputer dan perangkat elektronik digital yang terkait. Kata *memori* sering sinonim dengan kata *[[penyimpanan utama]]* atau *[[memori utama]]*. Dalam bahasa Inggris, sinonim kuno memori adalah ***store***.

Memori komputer beroperasi dengan kecepatan yang tinggi dibandingkan dengan penyimpanan yang lebih lambat namun memberikan kapasitas lebih besar. Jika diperlukan, isi memori komputer bisa ditransfer ke penyimpanan; cara yang umum digunakan adalah melalui teknik manajemen memori yang dinamakan *[[memori virtual]]*.

Memori modern diimplementasikan sebagai memori semikonduktor, di mana memori disimpan di dalam sel memori yang dibangun dari transistor MOS dan komponen lain dalam sebuah sirkuit terpadu. Ada dua jenis memori semikonduktor, yaitu volatil and non-volatil. Contoh memori non-volatil adalah memori flash dan memori ROM, PROM, EPROM dan EEPROM. Contoh memori volatil adalah memori akses acak dinamis (DRAM), yang digunakan untuk penyimpanan utama, dan memori akses acak statik (SRAM), yang digunakan untuk cache CPU.

Sebagian besar memori semikonduktor dibagi menjadi sel memori, masing-masing menyimpan satu bit (0 atau 1). Organisasi memori flash termasuk sel yang mengandung satu bit dan sel multi-level, yang menyimpan beberapa bit per sel. Sel memori dikelompokkan menjadi kata-kata dengan panjang kata tetap, misalnya, 1, 2, 4, 8, 16, 32, 64, atau 128 bit. Setiap kata dapat diakses dengan alamat biner *N* bit, sehingga memungkinkan untuk menyimpan 2N kata dalam memori.

## Sejarah

Pada awal 1940-an, teknologi memori hanya memiliki kapasitas beberapa bit. Komputer digital elektronik yang bisa diprogram, ENIAC, menggunakan ribuan tabung vakum, bisa melakukan kalkulasi sederhana dengan 20 angka dari 10 digit desimal yang disimpan dalam tabung vakum.

Kemajuan memori komputer berikutnya adalah memori akustik garis tunda, yang dikembangkan oleh J. Presper Eckert pada awal 1940-an. Melalui tabung kaca yang diisi dengan merkuri dan ditutup dengan kristal kuarsa pada setiap ujungnya, garis tunda bisa menyimpan informasi bit dalam bentuk gelombang suara yang menyebar melalui merkuri, dengan kristal kuarsa sebagai transduser untuk membaca dan menulis bit. Kapasitas memori garis tunda hanya sampai beberapa ribu bit.

Pada 1946, dua alternatif garis tunda, tabung Williams dan tabung Selectron, muncul. Kedua-duanya menggunakan sinar elektron pada tabung kaca sebagai sarana penyimpanan. Menggunakan tabung sinar katode, Fred Williams menciptakan tabung William, memori akses acak pertama. Kapasitas tabung Williams lebih besar daripada tabung Selectron (Selectron hanya bisa menyimpan sampai 256 bit; tabung Williams bisa menyimpan ribuan bit) dan lebih murah. Namun, tabung Williams sangat sensitif terhadap gangguan lingkungan.

Memori non-volatil mulai dicari pada akhir 1940-an. Memori inti magnetik memungkinkan pengingatan kembali memori setelah pemutusan listrik. Memori ini dikembangkan oleh Frederick W. Viehe dan An Wang pada akhir 1940-an, dan diperbaiki oleh Jay Forrester dan Jan A. Rajhman pada awal 1950-an, dan dikomersialkan oleh penggunaannya dalam komputer Whirlwind pada 1953. Memori inti magnetik menjadi jenis dominan memori sampai pengembangan memori semikonduktor MOS pada 1960-an.

Memori semikonduktor pertama diimplementasikan sebagai sirkuit flip-flop pada awal 1960-an menggunakan transistor bipolar. Memori semikonduktor yang dibuat dari perangkat diskrit pertama dikirim oleh Texas Instruments kepada Angkatan Udara Amerika Serikat pada 1961. Pada tahun yang sama, konsep memori solid-state pada chip sirkuit terpadu (IC) diusulkan oleh insinyur aplikasi Bob Normal pada Fairchild Semiconductor. Chip memori semikonduktor bipolar pertama adalah SP95, dirilis oleh IBM pada 1965. Walaupun memori semikonduktor lebih cepat daripada memori inti magnetik, memori semikonduktor juga lebih besar dan lebih mahal dan tidak mengganti memori inti magnetik sampai akhir 1960-an.

### Memori MOS

Penemuan MOSFET (transistor efek-medan semikonduktor logam-oksida (bahasa Inggris: *metal–oxide–semiconductor field-effect transistor*), atau transistor MOS) oleh Mohamed M. Atalla dan Dawon Kahng pada Bell Labs pada 1959, memungkinkan penggunaan umum transistor semikonduktor logam-oksida (MOS) sebagai elemen penyimpanan sel memori. Memori MOS dikembangkan oleh John Schmidt pada Fairchild Semiconductor pada 1964. Selain lebih cepat, memori semikonduktor MOS lebih murah dan lebih hemat energi dibandingkan dengan memori inti magnetik. Pada 1965, J. Wood dan R. Ball dari Royal Radar Establishment mengusulkan sistem penyimpanan digital yang menggunakan sel memori CMOS (MOS komplementer), bersama dengan perangkat listrik MOSFET, yang digunakan untuk catu daya, pengalih kopling silang, sakelar, dan penyimpanan garis tunda. Pengembangan teknologi sirkuit terpadu MOS gerbang silikon (MOS IC) oleh Federico Faggin di Fairchild pada 1968 memungkinkan produksi chip memori MOS. Memori NMOS dikomersialkan oleh IBM pada awal 1970-an. Memori MOS menggantikan memori inti magnetik sebagai teknologi memori dominan pada awal 1970-an.

Dua jenis utama memori akses acak (RAM) adalah memori akses acak statik (SRAM) dan memori akses acak dinamis (DRAM). SRAM bipolar dikembangkan oleh Robert Norman dari Fairchild Semiconductor pada 1963, yang dilanjutkan dengan pengembangan MOS SRAM oleh John Schmidt pada Fairchild pada 1964. SRAM menjadi alternatif memori inti magnetik, tetapi memerlukan enam transistor MOS untuk setiap bit data. Penggunaan komersial SRAM dimulai sejak 1965, ketika IBM merilis chip SRAM SP95 untuk System/360 Model 95.

Toshiba merilis sel memori DRAM bipolar untuk kalkulator elektronik Toshiba Toscal BC-1411 pada 1965. Walaupun lebih cepat daripada memori inti magnetik, DRAM bipolar tidak bisa bersaing karena lebih mahal. Teknologi MOS adalah basis untuk DRAM modern. Pada 1966, Dr. Robert H. Dennard di IBM Thomas J. Watson Research Center sedang meneliti memori MOS. Ketika memeriksa karakteristik teknologi MOS, dia menemukan bahwa teknologi MOS bisa digunakan untuk membuat kapasitor, dan bahwa menyimpan muatan atau non-muatan pada kapasitor MOS bisa mewakili bit 1 dan 0, sedangkan transistor MOS bisa mengatur penulisan muatan ke kapasitor. Ini berujung ke pengembangan sel memori DRAM transistor tunggal. Pada 1967, Dennard mengajukan paten atas IBM untuk sel memori DRAM transistor tunggal, yang berdasarkan teknologi MOS. Ini berujung pada chip sirkuit terpadu DRAM komersial pertama, Intel 1103, pada Oktober 1970. Chip memori akses acak dinamis sinkronis (SDRAM) pertama, Samsung KM48SL2000, dirilis pada 1992.

Kata memori juga sering digunakan untuk memori non-volatil, atau memori flash untuk lebih spesifik. Memori flash berasal dari memori hanya baca (ROM). Memori hanya baca bisa diprogram (PROM) dikembangkan oleh Wen Tsing Chow pada 1956, ketika bekerja pada Divisi Arma dari Korporasi Amerika Serikat Bosch Arma. Pada 1967, Dawon Kahng dan Simon Sze dari Bell Labs mengusulkan bahwa gerbang mengambang perangkat semikonduktor MOS bisa digunakan untuk sel memori hanya baca yang bisa diprogram (ROM) yang memicu Dov Frohman dari Intel untuk mengembangkan EPROM (PROM yang bisa dihapus) pada 1971. EEPROM (PROM yang bisa dihapus dengan listrik) dikembangkan oleh Yasuo Tarui, Yutaka Hayashi, dan Kiyoko Naga pada Laboratorium Elektroteknikal pada 1972. Memori flash dikembangkan oleh Fujio Masuoka pada Toshiba pada awal 1980-an. Masuoka dan temannya mempresentasikan penemuan flash NOR pada 1984, dan kemudian flash NAND pada 1987. Toshiba mulai menjual memori flash NAND pada 1987.

Pengembangan teknologi dan skala ekonomi memungkinkan pembuatan komputer ***very large memory*** (VLM / memori sangat besar).

## Memori volatil

Memori volatil adalah memori komputer yang membutuhkan daya untuk menjaga informasi yang disimpan. Sebagian besar memori semikonduktor volatil adalah RAM statik (SRAM) atau RAM dinamis (DRAM). SRAM menjaga isinya selama listrik dihubungkan dan lebih mudah untuk *interfacing*, tetapi memerlukan enam transistor per bit. RAM dinamis lebih kompleks untuk *intefacing* dan kontrol, membutuhkan siklus penyegaran berkala untuk menjaga isinya, tetapi hanya memerlukan satu transistor dan kapasitor per bit, memungkinkan kapasitas yang lebih banyak dan harga per-bit yang jauh lebih rendah.

SRAM tidak bermanfaat untuk memori sistem desktop, di mana DRAM dominan, namun SRAM digunakan untuk memori cache. SRAM umum digunakan dalam sistem tertanam kecil (*embedded system*), yang mungkin hanya memerlukan puluhan kilobyte atau kurang dari itu. Teknologi memori volatil yang mencoba bersaing atau mengganti SRAM dan DRAM antara lain Z-RAM dan A-RAM.

## Memori non-volatil

Memori non-volatil adalah memori komputer yang bisa menjaga informasi yang disimpan walaupun tidak dialiri listrik. Contoh memori non-volatil antara lain memori hanya baca (lihat ROM), memori flash, sebagian besar penyimpanan magnetik (seperti hard disk drive, floppy disk, dan pita magnetik), cakram optis, dan penyimpanan komputer awal, seperti pita kertas dan *[[Punched card|punch card]]*.

Teknologi memori non-volatil yang akan datang antara lain FERAM, CBRAM, PRAM, STT-RAM, SONOS, RRAM, memori balapan, NRAM, 3D XPoint, dan memori millipede.

## Memori semi-volatil
Kategori ketiga memori adalah memori "semi-volatil". Kata ini digunakan untuk mendeskripsikan memori yang mempunyai durasi non-volatil yang terbatas setelah listrik diputus, tetapi kemudian data hilang. Tujuan umum untuk memori semi-volatil adalah memberikan kinerja tinggi/daya tahan tinggi/dll. yang terkait dengan memori volatil, sambil memberikan beberapa manfaat memori non-volatil sebenarnya.

Misalnya, beberapa jenis memori non-volatil bisa aus, di mana sel "aus" lebih volatil namun masih bekerja. Lokasi data yang sering ditulis bisa diarahkan untuk menggunakan sirkuit aus. Selama lokasi diperbarui dalam waktu retensi yang diketahui, data masih sah. JIka waktu retensi "kedaluwarsa" tanpa pembaruan, nilai disalin ke sirkuit dengan retensi yang lebih lama. Menulis ke area yang aus terlebih dahulu memungkinkan kecepatan penulisan yang tinggi dan menghindari pengausan sirkuit tidak aus.

Sebagai contoh kedua, STT-RAM bisa dibuat non-volatil dengan membangun sel besar, namun harga per bit dan daya yang diperlukan untuk menulis meningkat dan kecepatan penulisan menurun. Menggunakan sel kecil mengurangi harga, penggunaan listrik, dan mempercepat penulisan, tetapi berujung pada perilaku semi-volatil. Pada beberapa aplikasi, peningkatan volatilitas bisa dikelola untuk memberikan beberapa manfaat memori non-volatil, misalnya memutus listrik tetapi memaksa memori untuk bangun sebelum data hilang; atau dengan menyimpan cache data hanya baca dan membuang data cache jika waktu pematian melebihi ambang non-volatil.

Kata semi-volatil juga digunakan untuk mendeskripsikan perilaku semi-volatil jenis memori lain. Contohnya, memori volatil dan non-volatil bisa digabung, di mana sinyal eksternal menyalin data dari memori volatil ke memori non-volatil, tetapi jika listrik diputus tanpa penyalinan, datanya hilang. Atau, sebuah memori volatil dengan baterai, di mana jika listrik eksternal dimatikan, ada waktu tertentu di mana baterai memberi daya ke memori volatil, tetapi jika listrik dimatikan untuk waktu yang lama, baterai akan habis dan data akan hilang.

## Manajemen

Manajemen memori yang benar sangat penting agar sistem komputer bisa bekerja semestinya. Sistem operasi modern mempunyai sistem kompleks untuk mengelola memori dengan benar. Kesalahan bisa memicu bug/kutu, kinerja lambat, dan dalam kasus terburuk, pengambilalihan oleh virus dan malware.

### Bug/kutu
Manajemen memori yang salah adalah penyebab umum bug, yang termasuk jenis di bawah:

* Dalam luapan aritmetika, sebuah hasil kalkulasi lebih banyak daripada yang dibolehkan oleh memori yang dialokasikan. Misalnya, bilangan bulat 8-bit memungkinkan angka −128 sampai +127. Jika nilainya 127 dan disuruh menambahkan satu, komputer tidak bisa menyimpan angka 128 pada ruangnya. Kasus tersebut akan berujung pada operasi yang tidak diinginkan, seperti mengubah nilai angka ke −128 daripada +128.
*Kebocoran memori muncul ketika program meminta memori dari sistem operasi dan tidak pernah mengembalikan memori ketika sudah selesai. Program dengan bug ini akan memerlukan semakin banyak memori kian waktu sampai program gagal karena kehabisan memori.
*Kesalahan segmentasi terjadi ketika sebuah program mencoba mengakses memori yang tidak memiliki izin akses untuk programnya. Umumnya, program yang melakukannya akan dihentikan oleh sistem operasi.
*Luapan buffer artinya program menulis data ke akhir ruang yang dialokasi untuknya dan tetap menulis data ke memori yang dialokasikan untuk penggunaan lain. Ini bisa mengakibatkan perilaku program yang aneh, antara lain kesalahan akses memori, hasil yang salah, *crash*, atau pelanggaran keamanan sistem. Oleh karena itu, luapan buffer merupakan basis banyak kerentanan perangkat lunak dan dapat dieksploitasi secara jahat.

### Sistem komputer awal
Pada sistem komputer awal, program biasanya menentukan lokasi penulisan memori dan data apa yang ditulis. Lokasi ini adalah lokasi fisik pada perangkat keras memori sebenarnya. Pemrosesan komputer dulu yang lambat tidak memungkinkan sistem manajemen memori kompleks yang digunakan saat ini. Dan, karena kebanyakan sistem tersebut hanya melayani satu tugas secara berturut, sistem yang canggih lebih sedikit diperlukan.

Metode ini ada kelemahannya. Jika lokasi yang ditentukan salah, ini akan menyebabkan komputer untuk menulis datanya ke bagian program lain. Hasil kesalahan seperti ini tidak dapat diprediksi. Dalam sebagian kasus, data yang salah mungkin menimpa memori yang digunakan oleh sistem operasi. Cracker computer bisa memanfaatkan ini untuk membuat virus dan malware.

### Memori virtual

Memori virtual adalah sistem di mana semua memori fisik dikelola oleh sistem operasi. Ketika sebuah program membutuhkan memori, ia memintanya dari sistem operasi. Sistem operasi kemudian memilih lokasi fisik untuk meletakkan kode dan data program.

Ini memberikan banyak manfaat. Programmer komputer tidak perlu khawatir di mana datanya disimpan atau apakah komputer pengguna memiliki memori yang cukup. Ini juga memungkinkan beberapa jenis memori untuk digunakan secara bersamaan. Contohnya, beberapa data bisa disimpan dalam chip RAM fisik, dan data lain disimpan dalam hard drive (atau dalam swapfile), yang berfungsi sebagai perpanjangan hierarki cache. Ini sangat meningkatkan memori yang ada untuk program-program. Sistem operasi akan meletakkan data yang sering digunakan di RAM fisik, yang lebih cepat daripada hard disk. Ketika kapasitas RAM tidak cukup untuk menjalankan semua program saat ini, komputer bisa memakan lebih banyak waktu memindahkan data dari RAM ke disk dan sebaliknya daripada melakukan tugas; ini dikenal sebagai *[[thrashing]]*.

### Memori terproteksi

Memori terproteksi adalah sebuah sistem di mana setiap program diberikan area memori sendiri dan tidak diperbolehkan untuk keluar dari area ini. Penggunaan memori terproteksi sangat meningkatkan keandalan dan keamanan sistem komputer.

Tanpa memori terproteksi, bug dalam sebuah program bisa mengubah memori yang digunakan oleh program lain. Ini akan menyebabkan programnya untuk keluar dari memori yang dikorupsi dengan hasil yang tidak diduga. Jika memori sistem operasi dikorupsi, seluruh sistem komputer bisa hang dan harus dihidupkan kembali. Kadang-kadang, program sengaja mengubah memori yang digunakan oleh program lain. Ini dilakukan oleh virus dan malware untuk mengambilalihkan komputer. Ini juga bisa digunakan untuk program yang diinginkan yang digunakan untuk mengubah program lain; dalam era modern, ini biasanya dianggap sebagai perilaku pemrograman buruk untuk program aplikasi, tetapi mungkin digunakan oleh alat pengembangan sistem, seperti debugger, misalnya untuk memasukkan *breakpoint* atau *hook*.

Memori terproteksi memberikan program area memori mereka sendiri. Jika sistem operasi mendeteksi program yang mencoba mengubah memori yang tidak diberikan untuknya, programnya dihentikan (atau dibatasi atau dialihkan). Dengan cara ini, yang hang hanya program pelanggar, dan program lain tidak terpengaruh oleh kesalahannya (baik tidak disengaja atau disengaja).

Sistem memori terproteksi hampir selalu menyertakan memori virtual.

## Lihat juga

 
* Geometri memori
* Hierarki memori
* Pengelolaan memori
* Register prosesor menyimpan data namun biasanya tidak dikatakan sebagai memori, karena mereka hanya bisa menyimpan satu kata dan tidak menyertakan mekanisme alamat.
* Memori semikonduktor
* Unit informasi

## Catatan

## Referensi

## Bacaan lanjut
* 
*