Untuk disk baca aliran data pada dasarnya:
- setelah unit baca / tulis berada pada silinder yang diminta, kepala r / w yang diminta dipilih.
- di setiap sektor, ID sektor dibaca. Jika nomor sektor yang dibaca cocok dengan nomor sektor yang diminta, maka data sektor tersebut dibaca.
- data sektor dibaca sebagai aliran bit serial, dan dikonversi ke byte.
- byte dari sektor disimpan dalam buffer sektor (biasanya SRAM di controller); ini penyangga sektor berbeda dari "cache disk".
- setelah seluruh sektor dibaca, data divalidasi menggunakan ECC, dan mungkin diperbaiki.
- setelah divalidasi, data sektor ditransfer dari pengontrol ke PC host. Catatan: keberadaan buffer sektor ini tidak dikenal, dan ada informasi yang luas bahwa kecepatan transfer pada antarmuka host (egATA) terikat atau dibatasi oleh laju bit pada kepala R / W. Itu sepenuhnya salah, karena kedua transfer data ini adalah operasi yang independen dan berurutan dan tidak bersamaan.
- karena PC menerima data dari pengontrol disk melalui antarmuka ATA, PC dapat menggunakan I / O yang diprogram (CPU berulang kali membaca register data port ATA dan menyalin nilai ke memori tujuan) atau DMA (pengontrol DMA adalah setup untuk menyalin N byte dari register data port ATA ke buffer memori tanpa intervensi CPU lebih lanjut).
- "buffer" memori PC yang menerima data dapat berupa buffer aplikasi (saat menggunakan blok I / O system call ), atau bisa menjadi buffer sistem internal di bawah kendali sistem file, atau bahkan program atau memori data jika data berasal dari swap area (atau file halaman).
Tulis ke disk serupa, kecuali bahwa data ditransfer dari PC ke pengontrol disk, ECC dihitung, sektor yang diminta ditemukan, dan kemudian data ditulis dari buffer sektor ke platter.
Untuk kredit tambahan:
Bacalah tentang transfer " scatter-gathering ", yang menggunakan rantai DMA dan daftar alamat-panjang memori dan panjang buffer. Alih-alih satu buffer memori besar yang bersebelahan, transfer "sebar-kumpul" memungkinkan penggunaan buffer memori yang tidak berdekatan untuk dikumpulkan untuk permintaan I / O disk.