ปัญหาสำคัญ
การอ่านของ RapidIO MegaCore function I/O Avalon-MM Master พอร์ตการเขียนอาจแสดงธุรกรรมการอ่านและเขียนใน Avalon-MM อินเตอร์เฟซในลําดับที่แตกต่างจากที่ปรากฏใน RapidIO เชื่อม โยง โดยเฉพาะอย่างยิ่ง หาก RapidIO IP Core ได้รับการอ่าน ร้องขอแพ็กเก็ตบนลิงก์ RapidIO เร็วๆ นี้หลังจากได้รับหลาย แพคเก็ตคําขอเขียน ธุรกรรมการอ่านอาจเสร็จสมบูรณ์ก่อนหน้านี้ ธุรกรรมการเขียนทั้งหมดเสร็จสมบูรณ์
ภาพต่อไปนี้แสดงตัวอย่างสถานการณ์ ซึ่งปัญหาอาจเกิดขึ้นได้
ในรูปภาพ คอร์ RapidIO IP Avalon-MM Master Write พอร์ตมีธุรกรรมการขอเขียน w0 พร้อมส่งไปยัง Avalon-MM Slave 0 และพอร์ตอ่าน RapidIO IP core Avalon-MM Master มี ทรานแซคชันคําขออ่าน r5 ที่พร้อมส่งไปยังAvalon-MM เดียวกัน Slave, Avalon-MM Slave 0 หมายเลขธุรกรรมจะบ่งบอกถึง ในลําดับที่ธุรกรรมได้รับมาจากเลเยอร์การขนส่ง ซึ่งเป็นลําดับที่ธุรกรรมควรเสร็จสิ้น อย่าง ไร ก็ ตาม การสั่งซื้อทรานแซคชันจะสูญหายไปในสถานการณ์ตัวอย่างต่อไปนี้:
- พอร์ตการเขียนหลักส่งคําขอ w0 เพื่อAvalon-MM Slave 0
- Avalon-MM Slave 0 ตอบสนองโดยการประเมิน
waitrequest
- พอร์ตการอ่านหลักส่งคําขอ r5 ไปยัง Avalon-MM Slave 0.
- Avalon-MM Slave 0 จะดึงข้อมูลและถ่ายโอนข้อมูลไปยัง พอร์ตการอ่าน Avalon-MM Master เพื่อตอบสนองต่อคําขอ r5 ก่อนหน้านี้ ทรานแซคชัน w0 เสร็จสมบูรณ์
สถานการณ์เดียวกันนี้อาจเกิดขึ้นกับ w1, w2, w3 หรือ w4 ที่กําลังทําอยู่ รอ ในทํานองเดียวกัน w0 อาจถูกเลื่อนออกไป แต่ยังคงเสร็จสมบูรณ์ก่อน r5 แต่ w1 ยังไม่เสร็จสมบูรณ์ก่อน r5 และอื่นๆ สถานการณ์เดียวกัน และอาจเกิดขึ้นในทางทฤษฎีกับธุรกรรมการอ่าน r0 และ w1 เขียนทรานแซคชัน อย่างไรก็ตาม ข้อมูลจําเพาะ RapidIO ไม่ได้ระบุไว้ล่วงหน้า ทรานแซคชันการเขียนจากการส่งทรานแซคชันการอ่าน
เพื่อป้องกันไม่ให้ธุรกรรม NREAD
ผ่าน
ในลําดับของ NWRITE
ธุรกรรมก่อนหน้า
ตรวจสอบให้แน่ใจว่าได้หน่วงเวลาเพียงพอระหว่างธุรกรรมการเขียนและ
ธุรกรรมการอ่านบนลิงก์ RapidIO ตัวอย่างเช่น คุณสามารถ
ทําธุรกรรมขั้นสุดท้าย NWRITE
เป็น NWRITE_R
ธุรกรรม
แต่ส่งธุรกรรมไปที่ NREAD
ลิงก์เท่านั้น
หลังจากที่คุณได้รับการ NWRITE_R
ตอบรับแล้ว
ปัญหานี้จะได้รับการแก้ไขใน RapidIO เวอร์ชั่นในอนาคต ฟังก์ชัน MegaCore