Menghitung waktu membaca model blok hard disk


8

Profesor saya memposting slide tentang cara menghitung pengambilan data dari hard disk menggunakan model blok. Spesifikasi adalah:

  • 7200 RPM
  • 5ms MENCARI
  • RATE TRANSFER 80MB / s
  • MODEL BLOCK: Ukuran blok 4KB

Saya tidak mengerti bagaimana dia melakukan perhitungan berikut atau dari mana beberapa angka berasal:

5ms + 1000/240 ms + 0.05ms = 9.216ms untuk membaca blok.

Adakah yang bisa memberitahu saya dari mana 1000/240 ms dan 0,05 ms berasal?

EDIT: JIKA angkanya benar-benar salah, bagaimana Anda melakukannya?


Ada tiga komponen. Waktu pencarian, waktu untuk data berputar di bawah kepala baca (dia mengambil setengah dari waktu rotasi lengkap sebagai rata-rata) dan waktu transfer.
David Marshall

Sebenarnya ada komponen keempat, "waktu transfer" dalam dua operasi yang berbeda dan tidak tumpang tindih. Pertama ada bacaan dari platter ke buffer sektor. Lalu ada transfer lain dari buffer sektor ke host melalui antarmuka drive (misalnya SATA). Ada kesalahpahaman yang tersebar luas bahwa kedua transfer ini dapat terjadi secara bersamaan; mereka tidak bisa. Data sektor harus divalidasi setelah dibaca dan sebelum dikirim ke tuan rumah. @ Hennes menyebutkan ini sebagai bagian dari item yang diabaikan.
serbuk kayu

Berhati-hatilah bahwa titik waktu pencarian yang lebih baik kurang dipahami oleh hampir semua orang. Mencari waktu bukanlah fungsi linier tetapi kurva berdasarkan jumlah silinder. Pencarian (menggunakan voice-coil actuator) terdiri dari fase akselerasi dan fase deselerasi dan ketika pencarian cukup lama, fase kecepatan maksimum di antaranya. Sebuah rata-rata mencari waktu harus tertimbang untuk account hanya 2 kemungkinan penuh-stroke berusaha tapi 2 * (NCYL-1) single-track berusaha, 2 * (NCYL-2) 2-track mencari ... dan NCYL "berusaha" nol waktu ketika tidak ada perjalanan kepala diperlukan.
serbuk kayu

Jawaban:


11

Disk yang dimaksud memiliki laju transfer 80 MiB / s, atau 81920 kiB / s, atau 20480 blok / s. Di sini, kami akan membulatkan ke 20.000 blok / detik, karena ini tampaknya apa yang profesor Anda lakukan. Ini sama dengan 0,05 ms untuk mentransfer blok, menjelaskan istilah terakhir dalam persamaan.

Akhirnya, selain mencari waktu (waktu untuk memindahkan kepala drive ke trek), ada juga latensi rotasi disk itu sendiri untuk menangani. Pada 7200 RPM, dalam kasus terburuk, kita harus menunggu 1 revolusi penuh, tetapi rata-rata kita harus menunggu setengah revolusi - atau 4.166ms (7200 RPM = 120 putaran / detik = 8.333 ms / putaran).

Jadi, untuk mentransfer satu blok ke komputer, kita harus menunggu yang setara Seek Time+ Rotational Latency+ Transfer Time:

5 ms + 4.166 ms + 0.05 ms = 9.216 ms

Perhatikan bahwa untuk solid-state drive, sementara tidak ada latensi rotasi untuk diperhitungkan, tentu masih ada waktu pencarian yang terukur (untuk benar-benar mengatasi konten sektor dalam memori flash) dan waktu transfer (sebagian besar dibatasi oleh bus digunakan untuk mentransfer data itu sendiri, misalnya SATA).

Jadi, secara umum, total waktu akses untuk membaca satu sektor untuk sebuah drive adalah (mengabaikan perangkat lunak):

Rotational/Hard Drive:  Seek Time + Rotational Latency + Transfer Time

Solid-State Drive:      Seek Time + Transfer Time

5

Waktu pencarian 5 ms adalah waktu bagi harddisk untuk memindahkan kepalanya ke jalur yang benar (dan untuk memilih kepala kanan, sesuatu yang juga membutuhkan waktu tetapi diabaikan oleh profesor Anda).


Setelah head berada di jalur yang benar, ia harus menunggu sektor yang tepat untuk lewat di bawah head R / W. Kami diberi bahwa itu adalah drive 7200 RPM. Itu berarti:

  • Dalam kasus terburuk, data baru saja lulus dan harus menunggu rotasi penuh.
  • Dalam kasus terbaik, sektor data baru saja tiba. Semua bahagia.
  • Dalam kasus rata - rata , drive harus menunggu setengah rotasi.

Untuk mendapatkan waktu untuk rotasi drive penuh pada drive 7200 RPM:

  • 7200 rotasi per menit (alias 7200 RPM)
  • Atau 7200/60 kali per detik.
  • Atau 120 kali per detik.
  • Atau rotasi tunggal mengambil 1 / 120 th detik.
  • Yaitu 8,3 ms

Jadi setengah rotasi harus akan mengambil setengah waktu itu, 1 / 240 th detik.

1 detik adalah 1000 ms

Ini adalah Anda 1000 / 240 ms.


Semua ini adalah waktu hingga drive dapat mulai membaca data. Masih perlu membacanya dan meneruskannya ke host.

Membaca dari drive biasanya jauh lebih cepat daripada melewatinya, jadi saya akan fokus pada bagian yang lebih lambat:

Diberikan adalah:

1) 80 MB / s TRANSFER RATE
2) MODEL BLOCK: Ukuran blok 4KB

  • 80 MiB dalam satu detik, atau 80 * 1024 KiB satu detik, atau 4 * 20 * 1024 KiB / detik.
  • Bagi dengan 20480.
  • 4 KB per 1 / 20480 th detik.
  • Atau 0,488281 ms, yang merupakan 0,05 ms terbaru Anda .


Perhatikan bahwa jawaban ini mengabaikan bahwa:

  1. drive perlu membaca data sebelum dapat mengirimkannya, ini akan membuatnya sedikit lebih lambat.
  2. Tetapi tidak ada informasi tentang seberapa cepat data dibaca dari platter. (yang merupakan masalah kecepatan rotasi, panjang data untuk dibaca, panjang data checksum dan kesenjangan antar sektor. (4KiB dapat berupa 8 bacaan "Header | data | checksum | gap" atau satu bacaan tunggal).
  3. Itu juga mengabaikan bahwa data mungkin sudah ada di cache drive.
  4. Dan itu mengasumsikan bahwa menghitung checksum membutuhkan waktu yang singkat.

Ini mungkin pertama kalinya saya melihat penyebutan waktu transfer disk yang benar yang membuat perbedaan antara platter read dan (interface) transfer. "Checksum" sebenarnya adalah Kode Koreksi Kesalahan (ECC) yang dapat mendeteksi dan memperbaiki kesalahan burst pendek.
serbuk kayu
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.