Berbagi teknologi

Manajemen Basis Data - Edisi 218 Memori Server (20240711)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Manajemen Basis Data - Edisi 218 Memori Server (20240711)

Penulis: Tangki Ikan Ikan Berkepala Gemuk (Yin Haiwen)
Oracle ACE Pro: Basis Data (Oracle dan MySQL)
Mitra ACE PostgreSQL
10 tahun pengalaman di industri database, saat ini terutama bergerak di bidang layanan database
Memiliki sertifikasi OCM 11g/12c/19c, MySQL 8.0 OCP, Exadata, CDP dan lainnya
Mo Tianlun MVP, Moli Star of the Year, ahli bersertifikat ITPUB, anggota Kelompok Pakar 100, dosen OCM, konsultan teknis komunitas open source PolarDB, konsultan teknis eksternal HaloDB, anggota kelompok observasi OceanBase, Asosiasi Pemuda Komunitas Teknologi MOP (Database Pemuda Asosiasi Saling Membantu Pembelajaran) Penasihat Teknis
Dia memiliki gelar seperti "Direktur", "Keamanan", dan "Musuh Terbesar Basis Data Domestik" di lingkarannya, dan bukan teroris sosial (teroris sosial) yang terkenal.
Rekening publik: Tangki ikan berkepala gendut; CSDN: Tangki ikan berkepala gendut (Yin Haiwen: Tangki ikan berkepala gendut; ITPUB: yhw1809.
Kecuali jika dicetak ulang dengan izin dan sumbernya disebutkan, semuanya adalah plagiarisme "ilegal".

Sebelumnya sudah saya jelaskan tentang hardware yang terlibat dalam server seperti CPU, SSD dan jaringan. Selain motherboard yang mengusung komponen-komponen tersebut di atas, ada juga komponen yang sangat penting yaitu memori. Dibandingkan dengan level desktop pada umumnya (PC rumahan pada umumnya ) Memori, memori server memiliki fungsi koreksi kesalahannya sendiri, yang disebut juga memori ECC (Error Checking and Correcting).
Edisi ini akan menjelaskan secara singkat cara kerja memori ECC.

1 memori

Memori merupakan komponen penting komputer, digunakan untuk menyimpan sementara data perhitungan di CPU dan bertukar data dengan memori eksternal seperti hard disk. Ini adalah jembatan antara memori eksternal dan CPU. Semua program di komputer berjalan di memori. Selama komputer mulai berjalan, sistem operasi akan mentransfer data yang perlu dihitung dari memori ke CPU untuk perhitungan. Ketika perhitungan selesai, CPU akan mengirimkan hasilnya.
Munculnya memori terutama untuk menutupi perbedaan bandwidth dan latensi yang besar antara penyimpanan eksternal dan cache bawaan CPU (yaitu L1, L2, L3). jauh lebih kecil daripada penyimpanan eksternal. Perangkat transfer data perantara dapat mempercepat persiapan data dari penyimpanan eksternal yang lebih lambat terlebih dahulu, mengurangi atau bahkan menghilangkan waktu tunggu CPU untuk memperoleh data.
Memori yang paling banyak kami gunakan di server saat ini adalah memori DDR. Saya tidak akan menjelaskan secara mendalam apa yang dimaksud dengan DDR di sini. Generasi memori utama adalah DDR4 dan DDR5. Selain memori umum, ada juga PMEM memori non-volatil berdasarkan antarmuka memori (atau antarmuka PCIe) (mengambil Intel Optane sebagai contoh), yang menyediakan bagian data yang lebih besar antara memori dan penyimpanan eksternal dan mendekati kecepatan area cache.

2 memori ECC

Secara umum, server membawa sistem bisnis yang penting. Ada banyak interferensi elektromagnetik selama pengoperasian peralatan elektronik. Interferensi elektromagnetik ini dapat menyebabkan pembalikan bit (yaitu, pertukaran 0 dan 1) selama interaksi data antara memori dan memori. CPU. , dengan cara ini, kesalahan akan terjadi dalam eksekusi data. Jika itu adalah perangkat lunak atau program PC umum, bahkan mungkin melaporkan kesalahan atau kerusakan (Lagi pula bank tidak ingin aset Anda bertambah tanpa alasan. Beberapa 0, Anda tidak ingin aset Anda berkurang).
Kemudian memori ECC muncul, secara proaktif menemukan kesalahan data dalam data dan memperbaikinya.

3 prinsip

Berikut adalah dua solusi yang relatif primitif:

3.1 Transmisi beberapa salinan

Artinya, sepotong data dikirimkan dalam 3 salinan. Jika ada masalah di mana saja pada salinan tertentu, maka dapat diperbaiki:
gambar.png
Namun masalah juga muncul. Meskipun kemungkinan terjadinya sangat rendah, jika dua bagian data mengalami bit flips pada posisi yang sama, maka akan ada masalah dengan verifikasi data dan koreksi kesalahan:
gambar.png
Masalah terbesar dalam menggunakan metode ini adalah pemborosan bandwidth IO.

3.2 Kode koreksi kesalahan

Dengan cara ini, kode koreksi kesalahan ditambahkan di awal data, yaitu kode koreksi kesalahan ditambahkan sebelum setiap bagian data. Jika angka 1 pada data adalah bilangan genap, maka kode koreksi kesalahan adalah 0, dan bila angka ganjil maka kode koreksi kesalahannya adalah 1.
gambar.png
Jika kode koreksi kesalahan tidak sesuai dengan angka 1, data dikirim ulang.
gambar.png
Hal ini juga menimbulkan masalah. Setiap verifikasi hanya dapat menentukan apakah seluruh data normal. Secara teori, koreksi kesalahan tidak dilakukan, dan transmisi ulang akan meningkatkan penundaan.
Pada saat yang sama, jika terjadi dua kesalahan data secara bersamaan, tujuan verifikasi tetap tidak dapat tercapai.

3.3 Kode Hamming

Kode Hamming adalah metode verifikasi dan koreksi kesalahan utama yang saat ini digunakan dalam memori ECC.
Mari kita lanjutkan langkah demi langkah di sini. Susun data 16-bit dengan cara berikut. Asumsikan bahwa bit 2 bertanggung jawab untuk pemeriksaan paritas di bagian kanan. Jika ada kesalahan pada data dan pemeriksaan paritas menentukan tidak ada masalah di bagian kanan, maka masalahnya ada di bagian kiri, sebaliknya masalahnya ada di bagian kanan.
gambar.png
Seperti terlihat pada gambar di bawah, bit 1 melakukan pemeriksaan paritas pada kolom 2 dan 4, kemudian bit 1 menyimpan 1. Jika pada kolom 2 dan 4 terdapat permasalahan pada parity check, maka permasalahan terdapat pada kolom 2 dan 4, sebaliknya permasalahan terdapat pada kolom 1 dan 3.
gambar.png
Kombinasi kedua metode di atas dapat dengan mudah memastikan kolom data mana yang bermasalah:
gambar.png
Selanjutnya, gunakan metode serupa, menggunakan bit 4 untuk memeriksa baris 2 dan 4, dan bit 8 untuk memeriksa bagian bawah. Melalui pemisahan baris dan pemeriksaan paritas partisi, Anda dapat menemukan lokasi spesifik kesalahan dan melakukan koreksi kesalahan (membalik) Itu dia.
gambar.png
Namun, premis dari penilaian di atas adalah bahwa ada masalah dengan data default. Setelah metode di atas digunakan untuk menilai, bit data No. 0 tidak termasuk dalam perlindungan hasil pemeriksaan paritas di atas. Oleh karena itu, kami menggunakan bit 0 untuk memverifikasi seluruh blok data menggunakan metode di 3.2.
gambar.png
Dalam hal ini, jika terdapat dua kesalahan, hasil pemeriksaan paritas disk penuh dan pemeriksaan paritas partisi akan bertentangan. Tidak mungkin menentukan lokasi kesalahan, tetapi dapat ditentukan bahwa seluruh blok data tidak normal. Kirimkan ulang saja datanya.
gambar.png
Namun ketika ada tiga kesalahan data, menjadi tidak mungkin untuk menilai.
gambar.png
Dengan cara lain, kita akan menemukan bahwa posisi kode cek semuanya 2 pangkat N:
gambar.png
Kode pemeriksaan hanya perlu ditempatkan pada pangkat ke-N dari 2. Semakin besar bloknya, semakin sedikit konten yang ditempati oleh kode koreksi kesalahan, tetapi semakin besar kemungkinan pembalikan beberapa bit. Ukuran blok transmisi ECC umum adalah 72bit, 64bit adalah data, dan 8bit adalah kode koreksi kesalahan. Oleh karena itu, umumnya memori berkapasitas 8G hanya memerlukan delapan partikel memori 1G, sedangkan memori ECC berkapasitas 8G memerlukan sembilan partikel memori 1G tambahan untuk menyimpan kapasitas kode koreksi kesalahan tambahan.
Namun, koreksi kesalahan komputer pasti tidak akan menghitung posisi kesalahan dengan cara "konyol" yang biasa. Di sini kita dapat menggunakan pesona biner untuk mencapainya.
gambar.png
Kami mengambil semua posisi yang 1 dan melakukan operasi biner vertikal OR untuk langsung mendapatkan posisi yang bermasalah:
gambar.png

Lampiran: Ada juga LDPC (Low Density Parity-Check Code), yang merupakan kode pemeriksaan paritas kepadatan rendah. Prinsip implementasi spesifik tidak akan dijelaskan di sini. Metode ini dapat menentukan masalah pembalikan multi-bit dan sering kali terjadi digunakan untuk verifikasi SSD. Karena kecepatan tinggi dan biaya implementasi memori, kode Hamming masih digunakan untuk mengimplementasikan ECC.

Meringkaskan

Masalah ini secara singkat memperkenalkan bagaimana memori ECC mengimplementasikan koreksi kesalahan.
Aturan lama adalah mengetahui apa yang tertulis.