Storage
Teknologi dan Tren Penyimpanan
Teknologi dan Tren Penyimpanan
Lokalitas Referensi
Caching dalam Hirarki Memori
Memori Akses Acak (RAM)
Fitur Utama:
RAM biasanya dikemas sebagai chip.
Unit penyimpanan dasar biasanya adalah sel (satu bit per sel).
Beberapa chip RAM membentuk sebuah memori.
RAM Statis (SRAM)
Setiap sel menyimpan satu bit dengan rangkaian empat atau enam transistor.
Mempertahankan nilai tanpa batas waktu selama tetap diberi daya.
Relatif tidak sensitif terhadap gangguan listrik (EMI), radiasi, dll.
Lebih cepat dan lebih mahal daripada DRAM.
RAM Dinamis (DRAM)
Setiap sel menyimpan satu bit dengan sebuah kapasitor. Satu transistor digunakan untuk akses.
Nilai harus disegarkan setiap 10-100 ms.
Lebih sensitif terhadap gangguan (EMI, radiasi, …) daripada SRAM.
Lebih lambat dan lebih murah daripada SRAM.
Ringkasan SRAM vs DRAM
Fitur | SRAM | DRAM |
|---|---|---|
Transistor | 4 atau 6 | 1 |
Waktu Akses | 1X | 10X |
Perlu Refresh | Tidak | Ya |
EDC | Mungkin | Ya |
Biaya | 100x | 1X |
Aplikasi | Cache | Memori utama |
Organisasi DRAM Konvensional
d x w DRAM:
total bit diorganisasikan sebagai d supercell dengan ukuran w bit.
Contoh: Chip DRAM 16 x 8
16 supercell, masing-masing 8 bit.
Membaca Supercell DRAM (Contoh: 2,1)
Langkah 1(a): Row access strobe (RAS) memilih baris 2.
Langkah 1(b): Baris 2 disalin dari array DRAM ke buffer baris.
Langkah 2(a): Column access strobe (CAS) memilih kolom 1.
Langkah 2(b): Supercell (2,1) disalin dari buffer ke jalur data dan akhirnya kembali ke CPU.
Modul Memori
Contoh: Modul memori 64 MB terdiri dari delapan DRAM 8Mx8.
Doubleword 64-bit pada alamat memori utama A terdiri dari bit dari masing-masing delapan chip DRAM.
DRAM yang Ditingkatkan
Sel DRAM dasar tidak berubah sejak penemuannya pada tahun 1966.
Inti DRAM dengan logika antarmuka yang lebih baik dan I/O yang lebih cepat:
DRAM Sinkron (SDRAM)
Menggunakan sinyal clock konvensional alih-alih kontrol asinkron.
Memungkinkan penggunaan kembali alamat baris (misalnya, RAS, CAS, CAS, CAS).
DRAM sinkron laju data ganda (DDR SDRAM)
Double edge clocking mengirimkan dua bit per siklus per pin.
Berbagai jenis dibedakan oleh ukuran buffer prefetch kecil:
DDR (2 bit), DDR2 (4 bit), DDR3 (8 bit).
- Pada tahun 2010, menjadi standar untuk sebagian besar sistem server dan desktop
- Intel Core i7 hanya mendukung DDR3 SDRAM.
Memori Nonvolatile
DRAM dan SRAM adalah memori volatile; mereka kehilangan informasi jika dimatikan.
Memori nonvolatile mempertahankan nilai bahkan jika dimatikan.
Read-only memory (ROM): diprogram selama produksi.
Programmable ROM (PROM): dapat diprogram sekali.
Eraseable PROM (EPROM): dapat dihapus secara massal (UV, Sinar-X).
Electrically eraseable PROM (EEPROM): kemampuan penghapusan elektronik.
Flash memory: EEPROM dengan kemampuan penghapusan sebagian (sektor).
Aus setelah sekitar 100.000 penghapusan.
Kegunaan Memori Nonvolatile:
Program firmware disimpan dalam ROM (BIOS, pengendali untuk disk, kartu jaringan, akselerator grafis, subsistem keamanan,…).
Solid state disk (menggantikan disk berputar dalam thumb drive, ponsel pintar, pemutar mp3, tablet, laptop, …).
Cache disk.
Struktur Bus Tradisional yang Menghubungkan CPU dan Memori
Bus adalah kumpulan kabel paralel yang membawa alamat, data, dan sinyal kontrol.
Bus biasanya digunakan bersama oleh beberapa perangkat.
Komponen:
Chip CPU (ALU, File register, Antarmuka bus)
Memori utama
Jembatan I/O
Bus sistem
Bus memori
Transaksi Pembacaan Memori
CPU menempatkan alamat A pada bus memori.
Memori utama membaca A dari bus memori, mengambil word x, dan menempatkannya di bus.
CPU membaca word x dari bus dan menyalinnya ke register %eax.
Transaksi Penulisan Memori
CPU menempatkan alamat A pada bus. Memori utama membacanya dan menunggu word data yang sesuai tiba.
CPU menempatkan word data y di bus.
Memori utama membaca word data y dari bus dan menyimpannya di alamat A.
Apa yang Ada Di Dalam Hard Disk?
Komponen:
Spindle
Arm
Actuator
Platters
Elektronik (termasuk prosesor dan memori!)
Konektor SCSI
Geometri Disk
Disk terdiri dari platter, masing-masing dengan dua permukaan.
Setiap permukaan terdiri dari cincin konsentris yang disebut track.
Setiap track terdiri dari sektor yang dipisahkan oleh celah.
Geometri Disk (Tampilan Multi-Platter)
Track yang sejajar membentuk silinder.
Kapasitas Disk
Kapasitas: jumlah bit maksimum yang dapat disimpan.
Vendor menyatakan kapasitas dalam satuan gigabyte (GB), di mana 1 GB = Byte.
Kapasitas ditentukan oleh faktor teknologi ini:
Recording density (bit/in): jumlah bit yang dapat diperas ke dalam segmen 1 inci dari sebuah track.
Track density (track/in): jumlah track yang dapat diperas ke dalam segmen radial 1 inci.
Areal density (bit/in): hasil perkalian dari recording density dan track density.
Disk modern membagi track menjadi subset yang tidak beririsan yang disebut recording zone.
Setiap track dalam sebuah zone memiliki jumlah sektor yang sama, ditentukan oleh keliling track terdalam.
Setiap zone memiliki jumlah sektor/track yang berbeda.
Menghitung Kapasitas Disk
Kapasitas = (# byte/sektor) x (rata-rata # sektor/track) x (# track/permukaan) x (# permukaan/platter) x (# platter/disk)
Contoh:
512 byte/sektor
300 sektor/track (rata-rata)
20.000 track/permukaan
2 permukaan/platter
5 platter/disk
Kapasitas =
Operasi Disk (Tampilan Single-Platter)
Permukaan disk berputar pada tingkat rotasi tetap.
Dengan bergerak secara radial, arm dapat memposisikan head baca/tulis di atas track mana pun.
Head baca/tulis terpasang di ujung arm dan terbang di atas permukaan disk pada bantalan udara tipis.
Operasi Disk (Tampilan Multi-Platter)
Head baca/tulis bergerak serempak dari silinder ke silinder.
Akses Disk
Seek: Memindahkan head ke track yang benar.
Rotational Latency: Menunggu sektor yang diinginkan berputar di bawah head.
Data Transfer: Membaca atau menulis data di sektor.
Akses Disk – Komponen Waktu Layanan
Waktu layanan mencakup Seek time, Rotational Latency, dan Data Transfer time.
Waktu Akses Disk
Rata-rata waktu untuk mengakses beberapa sektor target diperkirakan oleh:
Seek time () - Waktu untuk memposisikan head di atas silinder yang berisi sektor target. Khasnya adalah 3—9 ms.
Rotational latency () - Waktu menunggu bit pertama dari sektor target lewat di bawah head baca/tulis.
Khasnya (Revolusi Per Menit).
Transfer time () - Waktu untuk membaca bit di sektor target.
T_{\text{avg transfer}} = 1/\text{RPM} \times 1/(\text{rata-rata # sektor/track}) \times 60 \,\text{detik}/1 \,\text{menit}
Contoh Waktu Akses Disk
Diketahui:
Tingkat rotasi = 7.200 RPM
Rata-rata seek time = 9 ms.
Rata-rata # sektor/track = 400.
Diturunkan:
.
Poin penting:
Waktu akses didominasi oleh seek time dan rotational latency.
Bit pertama dalam sebuah sektor adalah yang paling mahal, sisanya gratis.
Waktu akses SRAM adalah sekitar 4 ns/doubleword, DRAM sekitar 60 ns
Disk sekitar 40.000 kali lebih lambat dari SRAM, 2.500 kali lebih lambat dari DRAM.
Blok Disk Logis
Disk modern menyajikan tampilan abstrak yang lebih sederhana dari geometri sektor yang kompleks:
Set sektor yang tersedia dimodelkan sebagai urutan blok logis berukuran b (0, 1, 2, …)
Pemetaan antara blok logis dan sektor (fisik) aktual
Dikelola oleh perangkat keras/firmware yang disebut disk controller.
Mengonversi permintaan untuk blok logis menjadi tripel (permukaan, track, sektor).
Memungkinkan controller untuk menyisihkan silinder cadangan untuk setiap zone.
Memperhitungkan perbedaan dalam “kapasitas terformat” dan “kapasitas maksimum”.
Bus I/O
Komponen:
Chip CPU (ALU, File register, Antarmuka bus)
Memori utama
Jembatan I/O
Bus sistem
Bus memori
Disk controller
Adaptor grafis
USB controller
Mouse, Keyboard, Monitor
Bus I/O disk
Slot ekspansi untuk perangkat lain seperti adaptor jaringan.
Membaca Sektor Disk
CPU memulai pembacaan disk dengan menulis perintah, nomor blok logis, dan alamat memori tujuan ke port (alamat) yang terkait dengan disk controller.
Disk controller membaca sektor dan melakukan transfer direct memory access (DMA) ke memori utama.
Ketika transfer DMA selesai, disk controller memberi tahu CPU dengan interupsi (yaitu, menegaskan pin “interupsi” khusus pada CPU).
Solid State Disk (SSD)
Halaman: 512 hingga 4KB, Blok: 32 hingga 128 halaman
Data dibaca/ditulis dalam satuan halaman.
Halaman hanya dapat ditulis setelah bloknya dihapus
Sebuah blok aus setelah 100.000 penulisan berulang.
Flash translation layer mengelola pemetaan blok logis ke lokasi fisik dan pemerataan keausan.
Karakteristik Kinerja SSD
Sequential read tput: 550 MB/s
Sequential write tput: 470 MB/s
Random read tput: 365 MB/s
Random write tput: 303 MB/s
Rata-rata seq read time: 30 us
Rata-rata seq write time: 60 us
Sumber: Spesifikasi produk Intel SSD 730.
Akses sekuensial lebih cepat daripada akses acak
Tema umum dalam hirarki memori
Penulisan acak agak lebih lambat
Menghapus blok membutuhkan waktu yang lama (~1 ms)
Memodifikasi halaman blok mengharuskan semua halaman lain disalin ke blok baru
Pada SSD sebelumnya, celah baca/tulis jauh lebih besar.
Tradeoff SSD vs Disk Berputar
Keuntungan
Tidak ada bagian yang bergerak → lebih cepat, lebih sedikit daya, lebih kokoh
Kerugian
Memiliki potensi untuk aus
Dimitigasi oleh “wear leveling logic” di flash translation layer
Contohnya, Intel SSD 730 menjamin 128 petabyte ( byte) penulisan sebelum aus
Pada tahun 2015, sekitar 30 kali lebih mahal per byte
Aplikasi
Pemutar MP3, ponsel pintar, laptop
Mulai muncul di desktop dan server
Tren Penyimpanan
Tren dalam teknologi DRAM, SRAM, dan Disk dari tahun 1980 hingga 2010, menunjukkan perubahan dalam $/MB, waktu akses, dan ukuran tipikal.
Kecepatan terus meningkat pesat, sementara biaya menurun.
Tingkat Clock CPU
Tingkat clock CPU dari tahun 1980 hingga 2010, menunjukkan perubahan dalam tingkat clock, waktu siklus, core, dan waktu siklus efektif.
Menyoroti titik infleksi dalam sejarah komputer ketika desainer mencapai “Power Wall”.
Kesenjangan CPU-Memori
Kesenjangan antara DRAM, disk, dan kecepatan CPU semakin lebar.
Grafik yang menggambarkan peningkatan perbedaan antara waktu siklus CPU, waktu akses DRAM, waktu akses SSD, dan seek time Disk dari tahun 1985 hingga 2015.
Lokality untuk Menyelamatkan!
Lokalitas adalah kunci untuk menjembatani kesenjangan CPU-Memori.
Lokalitas
Prinsip Lokalitas: Program cenderung menggunakan data dan instruksi dengan alamat yang dekat atau sama dengan yang telah mereka gunakan baru-baru ini
Lokalitas temporal:
Item yang baru-baru ini direferensikan cenderung direferensikan lagi dalam waktu dekat
Lokalitas spasial:
Item dengan alamat terdekat cenderung direferensikan bersamaan dalam waktu
Contoh Lokalitas
Contoh kode:
sum = 0;
for (i = 0; i < n; i++)
sum += a[i];
return sum;
Referensi data:
Mereferensikan elemen array secara berurutan (pola referensi stride-1)
Lokalitas spasial.
Mereferensikan variabel sum setiap iterasi
Lokalitas temporal.
Referensi instruksi:
Mereferensikan instruksi secara berurutan
Lokalitas spasial.
Berputar melalui loop berulang kali
Lokalitas temporal.
Estimasi Kualitatif Lokalitas
Klaim: Mampu melihat kode dan mendapatkan rasa kualitatif dari lokalitasnya adalah keterampilan kunci bagi seorang programmer profesional.
Contoh 1:
int sum_array_rows(int a[M][N]) {
int i, j, sum = 0;
for (i = 0; i < M; i++)
for (j = 0; j < N; j++)
sum += a[i][j];
return sum;
}
Lokalitas yang baik sehubungan dengan array a.
Contoh 2:
int sum_array_cols(int a[M][N]) {
int i, j, sum = 0;
for (j = 0; j < N; j++)
for (i = 0; i < M; i++)
sum += a[i][j];
return sum;
}
Lokalitas yang buruk sehubungan dengan array a.
Contoh 3:
int sum_array_3d(int a[M][N][N]) {
int i, j, k, sum = 0;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
for (k = 0; k < M; k++)
sum += a[k][i][j];
return sum;
}
Permutasi loop untuk pola referensi stride-1.
Hirarki Memori
Beberapa sifat fundamental dan abadi dari perangkat keras dan perangkat lunak:
Teknologi penyimpanan cepat lebih mahal per byte, memiliki kapasitas yang lebih kecil, dan membutuhkan lebih banyak daya (panas!).
Kesenjangan antara CPU dan kecepatan memori utama semakin lebar.
Program yang ditulis dengan baik cenderung menunjukkan lokalitas yang baik.
Sifat-sifat fundamental ini saling melengkapi dengan indah.
Mereka menyarankan pendekatan untuk mengatur memori dan sistem penyimpanan yang dikenal sebagai hirarki memori.
Contoh Hirarki Memori
Tingkat:
Register (L0)
L1 cache (SRAM)
L2 cache (SRAM)
Memori utama (DRAM)
Penyimpanan sekunder lokal (disk lokal)
Penyimpanan sekunder jarak jauh (tape, sistem file terdistribusi, server Web)
Karakteristik:
Lebih kecil, lebih cepat, lebih mahal per byte pada tingkat yang lebih tinggi.
Lebih besar, lebih lambat, lebih murah per byte pada tingkat yang lebih rendah.
Cache
Cache: Perangkat penyimpanan yang lebih kecil dan lebih cepat yang bertindak sebagai area pementasan untuk subset data dalam perangkat yang lebih besar dan lebih lambat.
Ide mendasar dari hirarki memori:
Untuk setiap k, perangkat yang lebih cepat dan lebih kecil di tingkat k berfungsi sebagai cache untuk perangkat yang lebih besar dan lebih lambat di tingkat k+1.
Mengapa hirarki memori berfungsi?
Karena lokalitas, program cenderung mengakses data di tingkat k lebih sering daripada mereka mengakses data di tingkat k+1.
Dengan demikian, penyimpanan di tingkat k+1 dapat lebih lambat, dan dengan demikian lebih besar dan lebih murah per bit.
Ide Besar: Hirarki memori menciptakan kumpulan penyimpanan besar yang harganya sama dengan penyimpanan murah di dekat bagian bawah, tetapi yang menyajikan data ke program pada tingkat penyimpanan cepat di dekat bagian atas.
Konsep Cache Umum
Memori dipartisi menjadi blok.
Cache menyimpan subset dari blok ini.
Data disalin dalam unit transfer berukuran blok.
Konsep Cache Umum: Hit
Data dalam blok b dibutuhkan.
Blok b ada di cache: Hit!
Konsep Cache Umum: Miss
Data dalam blok b dibutuhkan.
Blok b tidak ada di cache: Miss!
Blok b diambil dari memori.
Blok b disimpan di cache.
Kebijakan penempatan: menentukan ke mana b pergi
Kebijakan penggantian: menentukan blok mana yang dikeluarkan (korban)
Konsep Caching Umum: Jenis-Jenis Cache Miss
Cold (compulsory) miss
Cold miss terjadi karena cache kosong.
Conflict miss
Sebagian besar cache membatasi blok di tingkat k+1 ke subset kecil (kadang-kadang singleton) dari posisi blok di tingkat k.
Contohnya, Blok i di tingkat k+1 harus ditempatkan di blok (i mod 4) di tingkat k.
Conflict miss terjadi ketika cache tingkat k cukup besar, tetapi beberapa objek data semuanya memetakan ke blok tingkat k yang sama.
Contohnya, Mereferensikan blok 0, 8, 0, 8, 0, 8, … akan selalu miss.
Capacity miss
Terjadi ketika set blok cache aktif (working set) lebih besar dari cache.
Contoh Caching dalam Hirarki
Caching terjadi di berbagai tingkatan dalam sistem komputer, dari perangkat keras hingga perangkat lunak.
Contohnya termasuk:
Register CPU menyimpan word dari L1 cache.
L1 cache menyimpan blok dari L2 cache.
L2 cache menyimpan blok dari memori utama.
Memori utama menyimpan halaman dari disk lokal (Virtual Memory).
Web browser menyimpan halaman web dari disk lokal (Browser cache).
Angka Latensi yang Harus Diketahui Setiap Programmer
Latensi kunci dalam sistem komputer, dinyatakan dalam nanodetik.
Contohnya termasuk:
Referensi L1 cache: 1ns
Branch mispredict: 3ns
Referensi L2 cache: 4ns
Mutex lock/unlock: 17ns
Referensi memori utama: 100ns
SSD random read:
Disk seek:
Menyoroti perbedaan besar dalam waktu akses antara tingkat yang berbeda dari hirarki memori.
Ringkasan
Kesenjangan kecepatan antara CPU, memori, dan penyimpanan massal terus melebar.
Program yang ditulis dengan baik menunjukkan sifat yang disebut lokalitas.
Hirarki