Masalah Kritis
Bacaan master I/O fungsi RapidIO MegaCore Avalon-MM port tulis dapat menyajikan transaksi baca dan tulis di Avalon-MM antarmuka dalam urutan yang berbeda dari yang muncul di RapidIO Link. Lebih spesifik lagi, jika inti RapidIO IP menerima pembacaan minta paket pada tautan RapidIO segera setelah menerima beberapa paket permintaan tulis, transaksi baca mungkin telah selesai sebelumnya semua transaksi tulis telah selesai.
Gambar berikut mengilustrasikan contoh keadaan di mana masalah dapat terjadi.
Pada gambar, inti RapidIO IP Avalon-MM master tulis port memiliki transaksi permintaan tulis w0 yang siap dikirim ke Avalon-MM slave 0, dan port baca inti IP RapidIO Avalon-MM telah transaksi permintaan baca r5 yang siap dikirim ke Avalon-MM yang sama slave, Avalon-MM slave 0. Penomor transaksi menunjukkan pesanan di mana transaksi tiba dari lapisan Transport, yang merupakan urutan penyelesaian transaksi. Namun pemesanan transaksi hilang dalam contoh skenario berikut:
- Port tulis master mengirimkan permintaan w0 untuk Avalon-MM slave 0.
- Avalon-MM slave 0 merespons dengan menegaskan
waitrequest. - Port baca master mengirimkan permintaan r5 ke Avalon-MM slave 0.
- Avalon-MM slave 0 mengambil dan mentransfer data ke port baca master Avalon-MM sebagai respons terhadap permintaan r5 — sebelumnya transaksi w0 selesai.
Skenario yang sama dapat terjadi dengan w1, w2, w3, atau w4 sedang Ditangguhkan. Demikian pula, w0 mungkin ditangguhkan tetapi masih lengkap sebelumnya r5, tetapi w1 tidak lengkap sebelum r5, dan sebagainya. Skenario yang sama secara teoritis dapat terjadi dengan transaksi baca r0 dan w1 tulis transaksi. Namun, spesifikasi RapidIO tidak menghalangi transaksi tulis dari lulus transaksi baca.
NREAD Mencegah kelulusan transaksi
setiap dalam NWRITE urutan transaksi yang mendahului
memastikan keterlambatan yang memadai antara transaksi penulisan dan
baca transaksi pada tautan RapidIO. Misalnya, Anda dapat
melakukan transaksi NWRITE_R akhir NWRITE
alih-alih, dan kirim NREAD transaksi hanya pada tautan
setelah Anda menerima NWRITE_R respons.
Masalah ini akan diperbaiki dalam versi RapidIO di masa mendatang Fungsi MegaCore.