Beberapa ide konyol untuk produsen hard drive

Hard drive baru-baru ini kehilangan posisi dalam pertarungan melawan SSD, di sisi yang ada kecepatan dan kurangnya ketakutan panik terhadap getaran, menghemat sendiri hanya karena biaya yang murah untuk menempatkan gigabyte data dan siklus penulisan ulang yang lebih banyak. Mari kita pikirkan apakah beberapa ide berikut akan membantu memberikan permulaan untuk HDD.

Hard disk terdiri dari satu atau beberapa disk tipis dengan permukaan feromagnetik yang dipasang pada spindle, dipintal oleh mesin hingga kecepatan beberapa ribu putaran per menit. Bagian terpisah adalah blok kepala yang bergerak di sepanjang jari-jari disk. Jika sistem sebelumnya digunakan yang memindahkan blok kepala dalam garis lurus (seperti sistem yang digunakan dalam CD / DVD), sekarang rocker biasanya digunakan. Kepala dipasang di salah satu ujung balok, dan sistem bergerak terletak di sisi lain. Pada awalnya, servos bertanggung jawab atas semua gerakan, tetapi setelah mereka belajar bagaimana membuat magnet yang kuat "banyak dan murah", mekanisme interaksi medan magnet magnet dan medan elektromagnetik dari kumparan kawat yang memasok arus listrik mulai digunakan.

Sebagai penyimpanan, hard drive menyediakan tiga dimensi:
  • ilinder - adalah jarak tertentu dari pusat disk, di mana operasi baca, tulis berlangsung, dan sebelum Anda memulainya, Anda perlu memindahkan blok kepala ke satu atau silinder lain;
  • head - masing-masing sisi disk pada permukaan data yang dapat ditempatkan, dan di mana head masing-masing ditempatkan, ada juga konsep "trek" yang mendefinisikan data yang ditempatkan pada permukaan tertentu pada silinder yang diberikan;
  • segmen - sepotong lingkar trek yang terletak di salah satu permukaan kerja di mana sepotong data sebenarnya berada.


Untuk membaca segmen data, hard disk harus memindahkan blok kepala ke silinder yang diinginkan, pilih aliran data dari kepala yang diinginkan dan tunggu sampai disk berubah menjadi segmen yang diinginkan di bawah blok kepala dan hanya dengan demikian data dapat dibaca atau ditulis.
Waktu akses untuk data bervariasi tergantung pada seberapa beruntungnya Anda, dan ada beberapa situasi.

Kasus 1: Anda beruntung, dan setelah menerima perintah untuk membaca, hard disk melihat bahwa blok kepala terletak pada silinder yang diinginkan, mulai membaca data dan membaca segmen pertama adalah yang Anda butuhkan. Untuk menghitung seberapa beruntungnya Anda, mari kita coba menghitung berapa lama operasi ini akan berlangsung:
Tentukan variabelnya:
  • t1 adalah waktu perintah dikirim ke hard drive;
  • t2-waktu pemrosesan perintah oleh hard disk;
  • t3- ;
  • t4- ;
  • t5- ;
  • t6-

t3 dan t4 untuk kasus yang dijelaskan cenderung nol dan kami akan mengabaikannya, serta waktu transmisi dari perintah t1 (untuk 10-12 byte dari perintah ini akan menjadi 1/100 bagian dari data) dan waktu pemrosesan dari perintah t2 (tergantung pada kompleksitas perhitungan dan kecepatan prosesor, tetapi kami menganggap bahwa cukup cepat untuk mengabaikan periode ini).

Tetap ada t5 dan t6 untuk menghitung nilai-nilai ini, kami mengambil karakteristik antarmuka dan pembacaan aliran dari disk (kecepatan membaca sejumlah segmen dalam satu baris dari satu trek). Untuk kesederhanaan perhitungan, kami mendefinisikan bahwa segmen 1000 byte (pada kenyataannya itu adalah 512 atau 4.096 byte data ditambah sejumlah data layanan tertentu), dan streaming membaca sebagai 50 Mb / s (ada lebih banyak, ada lebih sedikit).

t5 - 1000 byte * (1 / 50.000.000 byte / s) = 20 μs per baca / tulis dari satu segmen
t6 - tergantung pada kecepatan transfer data, mari kita hitung untuk antarmuka yang berbeda:

IDE
  • DMA33 - 33 Mb / s = 1000 * (1/33 000 000) = 30 μs (lebih dari waktu yang dihabiskan untuk membaca)
  • DMA66 - 66 Mb / s = 1000 * (1/66 000 000) = 15 μs
  • DMA100 - 100 Mb / s = 1000 * (1/100 000 000) = 10 μs

SATA
  • SATA I -1500 Gbit / s = 150 Mb / s = 1000 * (1/150 000 000) = 6,6 μs
  • SATA II / SAS -3000 Gbit / s = 300 Mb / s = 1000 * (1/300 000 000) = 3,3 μs
  • SATA III / SAS 2-6000 Gb / s = 600 Mb / s = 1000 * (1/600 000 000) = 1,6 μs


Mengapa saya membagi kecepatan SATA dengan 10 meskipun byte adalah 8 bit? Faktanya adalah bahwa transmisi terjadi dalam mode serial dan untuk mentransfer data dengan andal, baik sinyal sinkronisasi (start dan stop bit, halo port COM ) digunakan atau data dikodekan agar tidak mendapatkan saluran jenuh pada output , pengkodean digunakan sedemikian rupa sehingga meskipun oleh nilai stream byte asli (semua 0 atau 255), sebagai hasilnya kita mendapatkan kombinasi dengan jumlah nol dan yang sama, frekuensi sinyal juga berkurang karena transcoding sinyal (ya, frekuensi lebih rendah dan kecepatan lebih tinggi).

Secara total, kami mendapatkan bahwa jika Anda beruntung, Anda akan menerima data Anda dalam 21,6 - 50 μs, dan dari perhitungan dalam kasus ini Anda memahami mengapa pabrikan membuat antarmuka berkecepatan tinggi baru, meskipun fakta bahwa kecepatan membaca dari disk jauh lebih lambat (semakin cepat antarmuka komunikasi, lebih cepat, data Anda dapat ditransfer dari saat siap antara pengirim dan penerima).

Kasus 2: Anda tidak seberuntung itu, dan Anda perlu memindahkan kepala blok ke silinder lain, dan setelah silinder yang diinginkan ditemukan, Anda harus menunggu sampai disk berputar 180 derajat untuk mengakses segmen yang diinginkan.

Sayangnya, saya tidak tahu tentang waktu pemindahan dan pemosisian head, tetapi Anda dapat menghitung berapa banyak waktu yang dibutuhkan untuk memindahkan segmen dalam lingkaran, dan mengambil waktu pemosisian yang sama dengan setengah waktu rotasi disk, dan nilai ini diketahui, jadi kami mempertimbangkan waktu rotasi disk (setengah untuk pemosisian , setengah putaran disk baca).

Untuk menghitung, Anda perlu mengetahui berapa banyak putaran terjadi per detik, dan kemudian mencari periode dengan membagi 1 dengan jumlah putaran:

5400 rpm - 1 (5400/60) = 11ms
5900 rpm - T = 10 ms
7200 rpm - T = 8 ms
10.000 rpm - T = 6 ms
15.000 rpm - T = 4 ms

Apakah Anda menemukan makna yang dikenal? Baik! Waktu akses data rata-rata untuk disk kira-kira sama atau sama dengan periode rotasi disk, mengapa rata-rata? Karena ada:

Kasus 3: Anda kurang beruntung, blok kepala berada pada silinder pertama, dan segmen pada bagian terakhir, waktu pergerakan blok kepala hampir atau sebanyak periode rotasi disk setelah blok kepala diposisikan pada silinder yang diinginkan, dan membaca data dimulai, ternyata kami mendapat segmen berikutnya setelah yang diinginkan, dan untuk membacanya, Anda perlu menunggu sampai disk membuat revolusi lain, sementara saya tidak mengatakan apa-apa tentang kasus 4: ketika data bukan dari waktu pertama (dan mungkin berikutnya) pr baca (hitung berapa lama, Minium * T 2 vol.).

Kesimpulan apa yang bisa dibuat pada tahap ini? "Eureka: kamu perlu memutar gelendong hingga 100500 revolusi!". Tapi tidak semuanya begitu sederhana, jika Anda berputar di atas korsel, Anda harus tahu bahwa jika korsel tidak berputar terlalu cepat, maka mudah untuk tetap di sana di bagian mana pun, jika korsel dipelintir terlalu cepat, satu-satunya cara untuk tetap adalah lebih dekat dengan pusat dan pegang erat-erat. Apa yang akan terjadi pada disk jika disk dilepas dengan kuat: pertama, tepi disk akan mulai menyebar ke arah yang berbeda karena gaya sentrifugal, dan disk akan mulai mengembang pada awalnya, bertambah dalam arah yang berbeda, dan karena kecepatan rotasi tidak berkurang, dan karena ukuran disk meningkat, ukuran disk meningkat, sentrifugal juga meningkat kekuatan, yang mengarah pada penghancuran ikatan molekul dan kita mendapatkan "bigbadabum", dan beberapa potong dari disk.Itu karena aksi gaya sentrifugal, cakram berkecepatan tinggi membuat diameter lebih kecil sehingga mereka tidak sobek.

Di sini muncul ide konyol pertama : mengapa tidak mungkin untuk membuat dua blok kepala saling berhadapan satu sama lain (dan jika berhasil dengan dua, maka coba 3, 4 bahkan bisa 5, 6). Apa ini memberi kita:

1) dengan peningkatan jumlah bagian, keandalan sistem "menurun", tetapi karena kita mendapatkan sistem cadangan, kita "meningkatkan keandalan".

2) blok kepala bergerak secara sinkron (pulsa yang disebabkan oleh gerakan kepala tidak bekerja selama pembacaan / penulisan data), dan jika segmen baru saja lolos, blok kepala kedua akan mendapatkan kesempatan untuk membacanya melalui T rev / 2 (untuk ini, dalam kasus klasik, kita perlu itu akan memutar gelendong dua kali lebih cepat).

3) blok kepala bekerja pada tugas yang terpisah (pengaruh impuls pergerakan blok kepala tidak penting untuk operasi baca / tulis), pengontrol, mengetahui di mana segmen ini atau itu berada, dapat memindahkan blok kepala yang paling menguntungkan dalam posisi, untuk mengurangi waktu yang hilang pada rotasi poros dan jumlah operasi input / output akan berlipat ganda.

4) Ada dua situasi ketika kita perlu memproses sejumlah besar data sekaligus:

-kopi / pindahkan file besar (Hai Blu-ray);
-baca-ubah-tulis satu file (halo ke database).

Dalam versi klasik hard disk, saat menyalin, kita membaca blok data ke buffer, memindahkan blok kepala ke bagian lain, menulis data, mengembalikan sepotong data baru, dengan sejumlah kecil buffer, kita kehilangan banyak waktu untuk memindahkan blok kepala dengan sejumlah besar data . Dalam hal modifikasi satu file, kita mengisi buffer, memodifikasinya (ini dapat dilakukan bersamaan dengan membaca, segera setelah data pertama dalam konfigurasi yang diinginkan diterima), dan setelah modifikasi kita menulis. Dalam skema yang dimodifikasi, kita dapat menyalin file dengan kecepatan maksimum, membaca data dengan satu blok kepala, dan menulis blok kedua dengan kecepatan tertinggi, yang akan bergantung terutama pada fragmentasi file, sekarang untuk hard drive ini dimungkinkan jika dua drive digunakan , satu baca,menulis ke yang lain.

Aspek kedua dari operasi hard disk adalah keandalannya, dan khususnya kerusakan khusus, kami menghilangkan kerusakan logika program, ini perlu diperbaiki di tempat lain, saya hanya akan mengumumkan kegagalan fungsi yang tergantung pada fitur desain hard disk:
  • macet spindle selama start-up (well, ada kemungkinan untuk menggulir spindle dengan tindakan eksternal, memulai disk, membaca data dan mengirimkannya ke tempat lain);
  • kemacetan gelendong selama operasi (di sini konsekuensinya sudah tergantung pada keberuntungan Anda);
  • , , , () ( , );
  • , , , , , ;
  • , , , , .

Semua orang tahu bahwa nilai terbesar bukanlah biaya hard drive (hi $ -y), tetapi gigabytes "informasi bermanfaat" yang dikumpulkan dengan cermat. Untuk menyimpan data, sistem RAID dari berbagai tingkatan digunakan, untuk itu diperlukan beberapa hard drive. Di sinilah ide konyol kedua muncul : menggunakan teknologi RAID dalam satu drive.

Dalam hal kegagalan disk lengkap, itu pasti tidak akan menghemat, tetapi dalam kasus kehilangan data dari 1-2 segmen, itu akan sepenuhnya membantu untuk memperbaiki situasi.

Pendekatan pertama, yang mudah diimplementasikan oleh perangkat lunak, adalah menempatkan seluruh permukaan, atau hanya data penting atau penting (0 segmen, tabel partisi, file konfigurasi sistem) menggunakan teknologi RAID 5: A + B = Jumlah, mendapatkan dua bagian dari tiga kita dapat dengan mudah mengembalikan yang ketiga, mirror atau duplikasi cukup banyak digunakan, misalnya, beberapa entri Master File Table digandakan dalam NTFS, tetapi ini tidak menghemat banyak jika terjadi kegagalan serius, di samping itu, "mirror" kehilangan setengah dari volume dalam double, sementara dalam kasus pengumpulan statistik segmen yang tidak dapat dibaca, adalah mungkin untuk mewujudkan kemungkinan penempatan data pada "A + B + C + D + E + E + F + G = I" kita akan kehilangan 1/9 volume, tetapi akan meningkatkan peluang pemulihan data jika kehilangan satu segmen data.

Pendekatan kedua, terkait dengan modifikasi logika operasi pengontrol, adalah menggunakan data dengan checksum untuk menempatkan data tidak pada satu trek, tetapi pada permukaan disk yang berbeda, implementasi ini akan menyelamatkan situasi ketika salah satu kepala kerja berhenti merespons sepenuhnya, kami selalu membaca nilai dari permukaan lain akan menerima data awal, tetapi dengan menyimpan data kita dapat dengan tenang menenangkan penderitanya.

Sebenarnya, ide konyol ketiga (meskipun menyangkut drive eksternal sebagai kelas) adalah sebagai berikut: delegasikan dukungan untuk alokasi file dan dukungan sistem file ke pengontrol disk.

terima kasih: owniumo
Sudah memiliki: Hard drive kinetik untuk penyimpanan objek yang skalabel


Bagaimana ini akan membantu: prosesor pusat hanya akan mentransfer deskriptor file, dan bagian apa yang dibutuhkannya, berhenti terganggu oleh gangguan yang terkait dengan pembangunan rantai FAT, misalnya, dan pengontrol akan menghitung di mana potongan yang ditentukan disimpan dan memberikan pengontrol hanya potongan file yang diinginkan dari file tersebut.

Anda dapat menerapkan ini:
  • pengembangan dan penggantian firmware pabrik (mungkin pada perangkat keras saat ini, tetapi mahal dalam hal modifikasi berikutnya, dan jumlah opsi disk, halo untuk pengembang aplikasi seluler);
  • pengembangan sistem file yang akan mendukung firmware dari produsen disk;
  • pengembangan dan implementasi bahasa pemrograman ke dalam firmware dengan bantuan yang Anda dapat menggambarkan pekerjaan dengan sistem file

Inilah sebenarnya tiga ide konyol yang sulit untuk diuji sendiri, tetapi mereka tidak memberikan Anda tidur yang tenang.

PS Penggunaan acak atas merek dagang atau paten terdaftar adalah acak. Semua ide asli tersedia untuk digunakan di bawah perjanjian lisensi bukit semut .

Source: https://habr.com/ru/post/id383225/


All Articles