Bagikan melalui


Kemampuan yang Disediakan oleh Port SCSI

Driver Port SCSI menyediakan kemampuan berikut:

  • Microsoft Windows mendukung sistem yang berisi berbagai jenis bus I/O dan/atau beberapa bus I/O dengan jenis yang sama. Skema penetapan alamat umum diperlukan untuk menangani variasi ini.

  • Perangkat PCI dapat memiliki port I/O dan sumber daya register memori. Alamat logis membantu membuat perbedaan ini transparan dengan driver port.

  • Beberapa sistem berisi HBA yang terhubung ke lebih dari satu bus; HBA semacam itu mungkin memerlukan beberapa set terjemahan alamat.

  • Alamat logis diperlukan untuk portabilitas di seluruh mesin berbasis CISC dan berbasis RISC.

  • Mencoba kembali IRP saat perangkat terlalu sibuk untuk memprosesnya.

    Driver kelas penyimpanan tidak perlu menerapkan algoritma untuk mencoba kembali RUNPS ketika perangkat terlalu sibuk untuk memprosesnya. Driver Port SCSI mengimplementasikan fungsionalitas ini.

  • Memberlakukan nilai batas waktu untuk permintaan.

    Driver kelas menetapkan nilai waktu habis untuk permintaan, dan Port SCSI bertanggung jawab untuk memberlakukannya. Namun, driver Port SCSI dapat memberlakukan nilai batas waktu driver kelas secara fleksibel, dengan mempertimbangkan status bus. Misalnya, jika tautan saluran fiber yang dikelola oleh Port SCSI turun selama 20 detik, Port SCSI mungkin menangguhkan penghitung waktu habis selama waktu henti, sehingga, misalnya, permintaan dengan waktu 10 detik tidak akan gagal hingga 10 detik setelah tautan muncul kembali. Port SCSI meningkatkan nilai batas waktu yang ditetapkan untuk permintaan sebagai respons terhadap peningkatan lalu lintas I/O, karena dengan lalu lintas I/O yang lebih berat, perangkat akan membutuhkan lebih banyak waktu untuk menyelesaikan permintaan.

  • Menangani kesalahan target dan pengontrol yang sibuk, serta kondisi kesalahan transportasi (dengan kata lain, kesalahan yang terkait dengan transmisi data aktual pada bus). Contohnya:

    • kesalahan paritas bus
    • waktu habis pemilihan
  • Menyediakan driver kelas dengan informasi tentang batasan adaptor host.

    Merupakan tanggung jawab pengemudi kelas untuk mengatur ukuran transfer data agar sesuai dengan batas adaptor bus host (HBA). Namun, Port SCSI menyediakan driver kelas dengan informasi yang diperlukan untuk menyelesaikan tugas ini. Port SCSI melengkungkan informasi ini dalam deskriptor adaptor (STORAGE_ADAPTER_DESCRIPTOR) sebagai respons terhadap permintaan IOCTL IOCTL_STORAGE_QUERY_PROPERTY . Driver kelas bertanggung jawab untuk memecah permintaan menjadi potongan dengan ukuran yang sesuai berdasarkan informasi yang dilaporkan dalam deskriptor ini.

  • Menerjemahkan alamat relatif bus ke alamat logis.

    Ketika dikueri, adaptor melengkapi alamat relatif bus untuk port I/O, daftar perintah, dan daftar status kontrol. Namun, pengemudi miniport tidak dapat menggunakan alamat relatif bus untuk berkomunikasi dengan adaptor bus host (HBA). Port SCSI menerjemahkan alamat relatif bus ke alamat logis, sehingga pengemudi miniport dapat mengakses alamat bus secara transparan. Ada beberapa alasan untuk ini:

  • Memastikan bahwa perangkat dan semua perangkat yang mendasarnya dinyalakan (pada status daya perangkat D0) sebelum perangkat dimulai.

    Ketika perangkat belum siap untuk dinyalakan, Port SCSI mengantre permintaan D0 untuk perangkat tersebut hingga perangkat siap.

  • Mengantrekan permintaan asinkron dari driver kelas dan meneruskannya secara sinkron ke perangkat target.

    Driver kelas tidak perlu menunggu permintaan selesai sebelum mengirim permintaan berikutnya. Port SCSI mengasumsikan tanggung jawab untuk mengantrekan permintaan ini untuk menghindari kewalahan kekuatan pemrosesan perangkat keras yang mendasarinya.

  • Mendukung manajemen internal dan eksternal antrean permintaan I/O internal.

    Sebagian besar operasi manajemen antrean dimulai oleh Port SCSI itu sendiri. Misalnya, Port SCSI membekukan antreannya ketika terjadi kesalahan dan melaporkan kondisi kesalahan ke driver kelas, sehingga driver kelas dapat merespons sebelum permintaan lebih lanjut diproses. Namun, Port SCSI juga menanggapi permintaan dari driver kelas atau driver tingkat yang lebih tinggi lainnya untuk mengunci, membuka kunci, membekukan, atau mencairkan antrean permintaan internalnya. Driver tingkat yang lebih tinggi dapat memaksa Port SCSI untuk mencairkan antrean internalnya menggunakan permintaan SRB_FUNCTION_RELEASE_QUEUE. Untuk penjelasan tentang apa artinya "membekukan," "kunci" atau "membuka" antrean, lihat Manajemen Antrean Driver Port SCSI.

  • Menerjemahkan kesalahan yang dilaporkan oleh perangkat ke dalam format data pengertian SCSI-2 untuk diproses oleh driver kelas.

Port SCSI menyediakan layanan kepada driver miniport melalui rutinitas pustaka Port SCSI. Penulis driver Miniport dapat memanggil rutinitas ini daripada mengodekan fungsionalitas yang mereka berikan ke dalam satu driver port monolitik. Beberapa layanan terpenting yang diberikan dengan menggunakan rutinitas ini adalah sebagai berikut:

  • Driver miniport Port SCSI dapat mendelegasikan banyak operasi inisialisasi yang bergantung pada OS ke rutinitas pustaka ScsiPortInitialize Port SCSI. Hal ini membuat driver miniport Port SCSI lebih portabel di berbagai versi sistem operasi. Untuk penjelasan tentang tugas inisialisasi driver miniport Port SCSI, lihat Rutinitas Driver Driver SCSI Miniport.

  • Driver miniport Port SCSI untuk perangkat non-PnP terhindar dari tugas menemukan adaptor dan melaporkan sumber daya mereka ke manajer PnP. Ini dilakukan di ScsiPortInitialize.

  • Driver miniport Port SCSI tidak menginisialisasi titik masuk pengiriman di objek driver. Driver Port SCSI melakukan ini atas nama driver miniport ketika driver miniport memanggil ScsiPortInitialize.

  • Driver miniport Port SCSI tidak mengonversi alamat relatif bus ke alamat logis menggunakan HalTranslateBusAddress. Driver miniport Port SCSI melakukan ini dengan panggilan ke ScsiPortGetDeviceBase.

Untuk ringkasan rutinitas pustaka yang disediakan Port SCSI untuk driver miniport Port SCSI, lihat Rutinitas Dukungan Driver Port SCSI.