ID บทความ: 000076983 ประเภทข้อมูล: การแก้ไขปัญหา การตรวจสอบครั้งล่าสุด: 13/12/2011

อาจสูญเสียการสั่งซื้อระหว่างธุรกรรมการอ่านและการเขียนใน RapidIO I/O Avalon-MM Master

สิ่งแวดล้อม

  • Intel® Quartus® II Subscription Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    ปัญหาสำคัญ

    คำอธิบาย

    การอ่านของ RapidIO MegaCore function I/O Avalon-MM Master พอร์ตการเขียนอาจแสดงธุรกรรมการอ่านและเขียนใน Avalon-MM อินเตอร์เฟซในลําดับที่แตกต่างจากที่ปรากฏใน RapidIO เชื่อม โยง โดยเฉพาะอย่างยิ่ง หาก RapidIO IP Core ได้รับการอ่าน ร้องขอแพ็กเก็ตบนลิงก์ RapidIO เร็วๆ นี้หลังจากได้รับหลาย แพคเก็ตคําขอเขียน ธุรกรรมการอ่านอาจเสร็จสมบูรณ์ก่อนหน้านี้ ธุรกรรมการเขียนทั้งหมดเสร็จสมบูรณ์

    ภาพต่อไปนี้แสดงตัวอย่างสถานการณ์ ซึ่งปัญหาอาจเกิดขึ้นได้

    สถานะ I/O Avalon-MM Master จากที่อ่าน r5 ทรานแซคชันสามารถผ่านธุรกรรมการเขียนได้อย่างน้อยหนึ่งรายการ

    ในรูปภาพ คอร์ 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 หมายเลขธุรกรรมจะบ่งบอกถึง ในลําดับที่ธุรกรรมได้รับมาจากเลเยอร์การขนส่ง ซึ่งเป็นลําดับที่ธุรกรรมควรเสร็จสิ้น อย่าง ไร ก็ ตาม การสั่งซื้อทรานแซคชันจะสูญหายไปในสถานการณ์ตัวอย่างต่อไปนี้:

    1. พอร์ตการเขียนหลักส่งคําขอ w0 เพื่อAvalon-MM Slave 0
    2. Avalon-MM Slave 0 ตอบสนองโดยการประเมินwaitrequest
    3. พอร์ตการอ่านหลักส่งคําขอ r5 ไปยัง Avalon-MM Slave 0.
    4. 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

    ผลิตภัณฑ์ที่เกี่ยวข้อง

    บทความนี้จะนำไปใช้กับ 1 ผลิตภัณฑ์

    อุปกรณ์ที่ตั้งโปรแกรมได้ Intel®

    เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทำขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรอ้างอิงว่าสมบูรณ์หรือถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคำแปล เวอร์ชันภาษาอังกฤษจะมีผลเหนือกว่าและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้