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.
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.
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.[6] Memori inti magnetik menjadi jenis dominan memori sampai pengembangan memori semikonduktor MOS pada 1960-an.[7]
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,[5] memungkinkan penggunaan umum transistor semikonduktor logam-oksida (MOS) sebagai elemen penyimpanan sel memori. Memori MOS dikembangkan oleh John Schmidt pada Fairchild Semiconductor pada 1964.[10][11] Selain lebih cepat, memori semikonduktor MOS lebih murah dan lebih hemat energi dibandingkan dengan memori inti magnetik.[10] 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.[12] Pengembangan teknologi sirkuit terpadu MOSgerbang silikon (MOS IC) oleh Federico Faggin di Fairchild pada 1968 memungkinkan produksi chip memori MOS.[13] Memori NMOS dikomersialkan oleh IBM pada awal 1970-an.[14] Memori MOS menggantikan memori inti magnetik sebagai teknologi memori dominan pada awal 1970-an.[10]
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,[7] yang dilanjutkan dengan pengembangan MOS SRAM oleh John Schmidt pada Fairchild pada 1964.[10] SRAM menjadi alternatif memori inti magnetik, tetapi memerlukan enam transistor MOS untuk setiap bit data.[15] Penggunaan komersial SRAM dimulai sejak 1965, ketika IBM merilis chip SRAM SP95 untuk System/360 Model 95.[7]
Toshiba merilis sel memori DRAM bipolar untuk kalkulator elektronik Toshiba Toscal BC-1411 pada 1965.[16][17] Walaupun lebih cepat daripada memori inti magnetik, DRAM bipolar tidak bisa bersaing karena lebih mahal.[18] 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.[15] Pada 1967, Dennard mengajukan paten atas IBM untuk sel memori DRAM transistor tunggal, yang berdasarkan teknologi MOS.[19] Ini berujung pada chip sirkuit terpadu DRAM komersial pertama, Intel 1103, pada Oktober 1970.[20][21][22] Chip memori akses acak dinamis sinkronis (SDRAM) pertama, Samsung KM48SL2000, dirilis pada 1992.[23][24]
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).[a] 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.[1][21][35]
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 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 punch card.[35]
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.[36]
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.[37]
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.[35]
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 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 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.
Register prosesor menyimpan data namun biasanya tidak dikatakan sebagai memori, karena mereka hanya bisa menyimpan satu kata dan tidak menyertakan mekanisme alamat.
↑Wood, J.; Ball, R. (Februari 1965). "The use of insulated-gate field-effect transistors in digital storage systems" [Penggunaan transistor efek-medan gerbang terisolasi dalam sistem penyimpanan digital]. 1965 IEEE International Solid-State Circuits Conference. Digest of Technical Papers. VIII: 82–83. doi:10.1109/ISSCC.1965.1157606.
↑Lojek, Bo (2007). History of Semiconductor Engineering[Sejarah Teknik Semikonduktor]. Springer Science & Business Media. hlm.362–363. ISBN9783540342588. i1103 dibuat dengan proses P-MOS 6-masker dengan mininum fitur 8 μm. Hasil produk memiliki 2 sel memori masing-masing berukuran 2.400 µm, ukuran cetakan dibawah 10 mm², dan dijual untuk $21. Pemeliharaan CS1: Status URL (link)
↑"Electronic Design"[Desain Elektronik]. Electronic Design. 41 (15–21). Hayden Publishing Company. 1993. DRAM sinkronis komersial pertama, Samsung 16-Mbit KM48SL2000, mengunakan arsitektur bank tunggal yang memungkinkan desainer sistem untuk beralih dari sistem asinkronis ke sistem sinkronis dengan mudah.
↑Tarui, Y.; Hayashi, Y.; Nagai, K. (1972). "Electrically reprogrammable nonvolatil semiconductor memory" [Memori semikonduktor non-volatil bisa diprogram melalui listrik]. IEEE Journal of Solid-State Circuits. 7 (5): 369–375. Bibcode:1972IJSSC...7..369T. doi:10.1109/JSSC.1972.1052895. ISSN0018-9200.
↑Fulford, Benjamin (24 Juni 2002). "Unsung hero"[Pahlawan tanpa tanda jasa]. Forbes. Diarsipkan dari versi aslinya tanggal 3 Maret 2008. Diakses tanggal 18 Maret 2008.
↑Masuoka, F.; Momodomi, M.; Iwata, Y.; Shirota, R. (1987). "New ultra high density EPROM and flash EEPROM with NAND structure cell" [EPROM sangat padat dan flash EEPROM dengan struktur sel NAND baru]. Electron Devices Meeting, 1987 International. IEDM 1987. IEEE. doi:10.1109/IEDM.1987.191485.
12345Stanek, William R. (2009). Windows Server 2008 Inside Out[Windows Server 2008 di Luar dan di Dalam]. O'Reilly Media, Inc. hlm.1520. ISBN978-0-7356-3806-8. Diarsipkan dari versi aslinya tanggal 2013-01-27. Diakses tanggal 2012-08-20. [...] Windows Server Enterprise mendukung penklasteran sampai klaster 8-node dan konfigurasi memori sangat besar sampai 32GB pada sistem 32-bit dan 2TB pada sistem 64-bit.
↑Montierth, Briggs, Keithley. "Semi-volatile NAND flash memory"[Memori flash NAND semi-volatil]. Diakses tanggal 20 Mei 2018. Pemeliharaan CS1: Banyak nama: authors list (link)