Bagikan melalui


Opsi Dengar Isochronous untuk Perangkat IEEE 1394

Bagian ini menjelaskan berbagai opsi mendengarkan isochronous.

Menerima atau menghapus header paket

Pengontrol host mungkin atau mungkin tidak secara otomatis menghapus header dari paket isochronous. Driver bus menetapkan bendera HOST_INFO_SUPPORTS_RETURNING_ISO_HDR anggota HostCapabilities dari struktur GET_LOCAL_HOST_INFO2 jika pengontrol host tidak secara otomatis menghapus header dari paket isochronous.

Selain itu, pengontrol host dapat mendukung pengupasan header yang dapat dikonfigurasi. Driver bus menetapkan bendera HOST_INFO_SUPPORTS_ISOCH_STRIPPING HostCapabilities jika pengontrol host dapat dikonfigurasi ke header strip. Untuk benar-benar mengonfigurasi pengontrol host untuk strip header, driver mengirimkan permintaan REQUEST_ISOCH_ALLOCATE_RESOURCES dengan set bendera RESOURCE_STRIP_ADDITIONAL_QUADLETS. Anggota nQuadletsToStrip menentukan jumlah quadlet untuk menghapus awal setiap paket. Misalnya, nQuadletsToStrip = 1 akan menghapus header paket isochronous.

Streaming versus DMA berbasis paket

Strategi DMA berbasis stream dan berbasis paket memerlukan dukungan dari pengontrol host yang mendasar. Semua pengontrol host mendukung setidaknya salah satu strategi DMA, dan pengontrol host yang mematuhi OHCI mendukung keduanya.

DMA berbasis paket dan DMA berbasis aliran memiliki karakteristik yang sama ketika semua paket berukuran sama. Tetapi dua jenis DMA memiliki karakteristik yang sangat berbeda ketika ukuran paket bervariasi.

Dalam DMA berbasis aliran, pengontrol host mengabaikan batas paket saat mengisi buffer I/O, tidak meninggalkan celah dalam data yang ditulisnya. Untuk menentukan lokasi paket tertentu, Anda harus mengetahui panjang semua paket sebelumnya.

Dalam DMA berbasis paket, pengontrol host hanya menulis satu paket isochronous per buffer. Dengan demikian dalam mode paket, pengontrol host memberi ruang pada data yang ditulisnya, sehingga setiap paket dimulai pada jarak dari awal buffer I/O yang merupakan kelipatan integral dari ukuran paket maksimum. Jika paket tertentu lebih kecil dari maksimum, data yang terletak di antara akhir paket tersebut dan awal paket berikutnya tidak terdefinisi. Jadi ketika paket lebih kecil dari ukuran maksimum, beberapa ruang buffer terbuang sia-sia. Misalnya, buffer yang cukup besar untuk menampung 10 paket selalu menyimpan tepat 10 paket, bahkan jika beberapa paket lebih kecil dari ukuran maksimum yang diizinkan.

Terlepas dari mode DMA mana yang Anda pilih, beberapa tradeoff desain berlaku. Misalnya, pilihan ukuran buffer memengaruhi performa perangkat Anda, apa pun mode DMA yang Anda gunakan. Buffer besar memberikan efisiensi karena Anda menghindari beberapa overhead yang terkait dengan inisialisasi sejumlah besar buffer. Selain itu, lebih sedikit buffer berarti bahwa lebih sedikit deskriptor DMA yang diperlukan. Di sisi lain, buffer yang lebih besar meningkatkan latensi antara awal operasi I/O dan saat di mana pengemudi bus memberi tahu pengemudi fungsi bahwa buffer penuh.

Jika pengontrol host mendukung kedua jenis DMA, driver bus mengatur pengontrol host ke default ke DMA berbasis aliran. Untuk mengatur ulang pengontrol host ke DMA berbasis paket, driver harus mengatur bendera RESOURCE_USE_PACKET_BASED saat mengalokasikan handel sumber daya.

Driver menggunakan permintaan bus REQUEST_GET_LOCAL_HOST_INFO (dengan anggota u.GetLocalHostInformation.nLevel dari IRB = GET_HOST_CAPABILITIES) untuk menentukan karakteristik pengontrol host. Pengemudi bus mengembalikan struktur GET_LOCAL_HOST_INFO2 , dan mengatur bendera dalam anggota HostCapabilities untuk menunjukkan apa yang didukung pengontrol host:

Jenis DMA Bendera HostCapabilities

berbasis aliran

HOST_INFO_STREAM_BASED

berbasis paket

HOST_INFO_PACKET_BASED