Stik USB: pengisian daya tidak dapat diabaikan





Di Internet, ada kerusuhan yang disebut "mengapa mengisi daya USB flash drive." Sekilas memang lucu, tapi saya mengusulkan untuk berpikir ulang dan memahami masalahnya. Setelah membaca artikel ini, Anda juga akan mulai mengisi daya flash drive.



Secara pribadi, kepala perancang salah satu perusahaan industri radio-elektronik membuang tautan ke artikel dengan kata-kata "Anda ingin meringkik?"



Beberapa tautan terkait:





Tentu saja, saya tertawa, tetapi tidak atas apa yang Anda pikirkan. Saya harus mengambil bagian dalam pengembangan solid-state drive berdasarkan memori flash NAND, termasuk untuk stik USB. Pada pandangan pertama, bagi orang yang paham teknologi, tampaknya jelas bahwa menghubungkan drive ke pengisi daya tidak ada artinya, karena selain memasok daya, tidak ada tindakan lain yang dilakukan dengan drive, oleh karena itu, kami tidak akan mendapatkan apa pun kecuali pembuangan panas. Di Internet ada banyak "wahyu" yang berbeda, tawa kecil dan bahkan olok-olok terang-terangan atas orang-orang miskin yang bertanya apakah layak mengisi daya flash drive. Anda mungkin tertawa, tetapi saya melihat dengan mata kepala sendiri bagaimana para pengembang flash drive "mengisi" produk mereka dengan memasangnya di pengisi daya untuk sementara waktu!



Flash drive USB adalah perangkat penyimpanan blok: seluruh ruang alamat dibagi menjadi sektor 512-byte. Sistem operasi dapat mengakses alamat sektor tertentu (LBA) dan membaca atau menimpanya, semuanya sederhana.



Sekarang mari kita lihat di bawah kap flash drive kita ...



Flash drive mencakup sirkuit mikro:



  • pengontrol;
  • Memori flash NAND.


Sirkuit mikro memori disusun dengan cara yang agak spesifik dalam hal menangani, menulis, dan menyimpan data, yang ditentukan oleh arsitekturnya (dan kita harus menyukainya apa adanya). Aturan berikut ditentukan untuk NAND-flash:



  • Memori dibagi menjadi blok-blok dengan urutan Megabyte;
  • Sebelum menulis ke blok memori, itu harus dihapus. Saat dihapus, semua byte data di blok disetel ke 0xFF;
  • Blok tersebut terdiri dari halaman, berukuran puluhan kilobyte;
  • , ;
  • ;
  • .


Di sini, seperangkat aturan ini mengubah tindakan sederhana (dari sudut pandang pengguna) cara menulis satu sektor ke flash drive USB menjadi teka-teki nyata bagi pengembang pengontrol flash drive yang sama ini.







Coba bayangkan bagaimana Anda akan menyelesaikan masalah ini, dan Anda akan melihat kemiripan dengan Menara mainan Hanoi .



Untuk "berteman" dengan pengalamatan blok yang ramah pengguna dari drive dan pengalamatan yang ramah sadis dari memori flash NAND, sebuah prosesor berputar di dalam pengontrol flash drive, yang mengimplementasikan algoritma terjemahan alamat, alias FTL (Flash Translation Layer). Tugas dari algoritma FTL meliputi:



  • membangun dan memelihara tabel pemetaan halaman;
  • Pengumpulan sampah;
  • memakai leveling blok memori flash NAND.


Orang yang berpengetahuan luas akan mengatakan bahwa ada juga tugas lain, seperti melacak blok memori flash NAND yang buruk (pengelolaan blok yang buruk), tetapi saya tidak ingin membicarakannya sekarang, karena ini tidak berlaku untuk kasus saat ini ...



Program pendidikan kecil tentang poin yang ditunjukkan :



Pemetaan halaman



Nah, di sini, mungkin, semuanya jelas ... Ruang alamat logis dari drive (LBA) diterjemahkan ke dalam alamat blok dan halaman memori flash NAND (alamat fisik) melalui array besar, indeksnya adalah singkatan dari LBA, dan nilai elemennya adalah alamat fisik. Jika perlu untuk menulis ulang satu halaman, maka data halaman ini ditulis ke blok bebas secara berurutan, dan kemudian, dalam array, nomor halaman diganti dengan yang baru ditulis. Ketika seorang siswa membeli flash drive 32GB dan menemukan bahwa itu hanya 29 GB, siswa tersebut belum tahu bahwa bukan orang Cina yang mencuri ruang yang hilang di pabrik, tetapi para pengembang algoritma FTL. Untuk dapat menulis data ke drive.







Pengumpulan sampah



Dan apa yang akan terjadi pada halaman yang kehilangan relevansinya? Data yang tertulis di dalamnya tidak lagi diperlukan, tetapi kami tidak dapat menghapusnya, karena penghapusan hanya diperbolehkan dalam blok, dan di blok yang sama mungkin masih terdapat halaman yang sebenarnya. Cepat atau lambat, situasi akan berkembang ketika kita tidak lagi memiliki blok gratis tempat kita dapat menulis halaman. Tapi, di blok yang tersisa, di sana-sini akan ada halaman yang tidak relevan. Untuk mencegah hal ini terjadi, fungsionalitas "pengumpul sampah" berputar di drive, yang terlibat dalam menemukan blok "bocor", yang memiliki jumlah halaman relevan paling sedikit, dan mentransfer halaman sebenarnya ke blok baru. Karenanya, blok "bocor" benar-benar dibebaskan dari halaman sebenarnya dan dapat dihapus ... Dan di blok baru, semua halaman tetap relevan. Mengingatkan pada defragmentasi.







Keausan leveling



Tidak ada yang bertahan selamanya di bawah bulan, terutama flash NAND. Kebetulan memori flash NAND memiliki sumber daya yang terbatas, yang diekspresikan oleh sejumlah siklus penghapusan blok (usia blok). Balok yang telah terhapus lebih sering (balok lama) lebih mungkin gagal daripada balok yang tidak terlalu aus (balok muda).



Pernahkah Anda berpikir untuk memindahkan tabel FAT dari alamat nol drive ke tempat lain agar tidak menghapus lubang di ruang alamat flash drive? Ini tidak mungkin dan tidak boleh dipikirkan. Karena mekanisme leveling keausan blok bekerja di flash drive. Intinya adalah blok muda dipaksa bertukar tempat dengan yang lama, sehingga keausan semua blok seragam selama pengoperasian drive. Jadi drive memiliki kesempatan untuk hidup bahagia selamanya sampai semua bloknya mati dalam satu hari.







Dan sekarang tentang hal utama - mengapa "mengisi" flash drive?



1) Pernahkah Anda mengalami situasi di mana Anda akan mencuci kaus kaki Anda hari demi hari, tetapi setiap malam ternyata tidak? Dan kemudian tibalah saatnya sehingga tidak ada lagi kaus kaki bersih yang tersisa untuk besok! Dan kemudian Anda harus mengorbankan tidur untuk mencuci kaus kaki Anda. Lebih buruk lagi jika Anda harus terlambat bekerja dengan pengering rambut di tangan.



Hal yang sama terjadi dengan algoritma pengumpulan sampah di FTL. Pengguna sering menggunakan USB flash drive untuk mentransfer beberapa data dari satu komputer ke komputer lainnya. Dalam hal ini, skenario tindakannya adalah sebagai berikut: colokkan flash drive USB ke komputer - tulis file dengan cepat - cabut flash drive USB - jalankan ke komputer lain - colokkan flash drive USB - baca file. Setelah beberapa saat, pengguna mulai menyadari bahwa hard disknya lambat. Biasanya, dalam kasus seperti itu, mereka berdosa karena fakta bahwa β€œini hanya flash drive lama yang murah. Di sini, saya akan membeli yang baru, itu akan terbang! " Dan itu akan benar-benar terjadi! Tapi dia, kemungkinan besar, akan mengalami nasib yang sama setelah beberapa waktu. Faktanya adalah bahwa skenario "film pendek" seperti itu tidak memungkinkan algoritma pengumpulan sampah untuk melepaskan blok untuk penulisan, yang cepat atau lambat akan mengarah pada fakta bahwa tidak akan ada lagi blok gratis.Dan kemudian pengontrol dipaksa untuk pertama-tama berurusan dengan membebaskan blok, dan kemudian hanya menulis file Anda kepada mereka, karenanya hilangnya kecepatan. Agar siap menerima data Anda dengan kecepatan penuh, drive perlu waktu istirahat untuk "mencuci kaus kaki" sebelumnya. Seperti yang Anda duga, "mengisi daya" flash drive akan mengatasi masalah ini, memberikan cukup waktu kepada pengontrol untuk memulihkan ketertiban dalam data.







2) Masalah kurangnya "waktu pribadi" dari pengontrol juga relevan untuk algoritme perataan keausan. Algoritme Wear Leveling dijalankan oleh pengontrol saat drive dalam keadaan idle, sementara tidak ada tugas untuk menulis atau membaca data pengguna. Jika drive bekerja dalam mode "film pendek", maka tidak ada waktu untuk meratakan keausan blok. Keausan balok yang tidak merata mengarah pada fakta bahwa balok lama gagal. Pada saat yang sama, jumlah blok yang tersedia untuk menulis berkurang hingga saat kritis tiba ketika tidak akan ada blok gratis untuk menulis, meskipun memori flash-NAND secara keseluruhan belum usang dan dapat berfungsi untuk waktu yang lama.







3) Evolusi telah mengajari kita untuk mengubur barang berharga yang kita sayangi di suatu tempat yang jauh dari lorong. Ini bekerja dengan baik untuk harta karun dan pulau tak berpenghuni. Tetapi dengan data digital dan NAND, yang terjadi adalah sebaliknya. Tentunya, Anda pernah mengalami kasus ketika Anda melemparkan beberapa foto dari pernikahan seorang teman ke flash drive, flash drive diletakkan di laci selama setahun (menurut Anda, aman dan sehat), dan kemudian beberapa foto hanya setengah terbaca. Faktanya adalah bahwa informasi yang pernah direkam dalam memori flash NAND dapat "membusuk" seiring waktu. Produsen memori tidak menjamin retensi data 100%, tetapi hanya mengumumkan kemungkinan kesalahan bit.



Tentu saja, pengontrol drive memecahkan masalah menghilangkan kesalahan bit dengan menambahkan kode yang berlebihan ke data, tetapi tidak peduli seberapa besar kode ini, seiring waktu, muatan dalam sel memori NAND menghilang, dan jumlah kesalahan bit dapat melebihi kemampuan koreksi apa pun. Anda tidak dapat meninggalkan data untuk waktu yang lama di memori flash NAND, Anda harus menjaganya. Yaitu - menimpa secara berkala. Pengontrol yang benar secara berkala membaca ulang data, memeriksa jumlah kesalahan bit dan menulis ulang data jika perlu (hingga jumlah kesalahan bit melebihi nilai yang diperbolehkan). Tentu saja, pengontrol juga membutuhkan "waktu luang" untuk ini.



Dari semua hal di atas, saya akan merangkum: jangan ragu untuk "mengisi" flash drive, ini memiliki efek menguntungkan pada kecepatan dan keandalannya. Dan jika teknisi memukul Anda, beri mereka tautan ke artikel ini.



All Articles