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

ทําไมคอมไพเลอร์ Nios II C-to-Hardware (C2H) ของฉันจึงสร้างการเร่งความเร็วล้มเหลวเมื่อรหัสต้นทางมีตัวดําเนินการเปลี่ยนตัวแปร

สิ่งแวดล้อม

  • โปรเซสเซอร์ Intel® Nios® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    คำอธิบาย

    สาเหตุที่เป็นไปได้ที่การออกแบบไม่ตรงตามเวลาคือมีหนึ่งหรือหลายชิฟเตอร์บาร์เรลในซีรีส์ที่มีตรรกะการรวมอื่น ๆ เมื่อใดก็ตามที่มีการใช้ตัวดําเนินการ Shift กับตัวดําเนินการผันแปร เช่น "a = b << c; " Nios® II C2H สร้างตรรกะ Barrelshift ตรรกะ Barrelshift ที่สร้างขึ้นโดย C2H ใช้ตัวกล้ําสัญญาณแบบ Combinatorial Multiplexers จํานวนมากซึ่งอาจส่งผลต่อการกําหนดเวลาของการออกแบบได้อย่างมาก  ตัวอย่างสองตัวอย่างต่อไปนี้แสดงซอร์สโค้ดที่อาจทําให้เกิดการเสื่อมสภาพของเวลาเนื่องจากการเปลี่ยนแปลงแบบ Barrel


    อินพุตแบบกะรวม:

    ด้านล่างเป็นตัวอย่างของอินพุตการเปลี่ยนแปลงแบบรวมในชิฟเตอร์บาร์เรลที่อาจทําให้เกิดการเสื่อมสภาพของเวลา

    int a, b, c, d, result, shift_distance;
    result = (a b c d) >> shift_distance;

    ผลลัพธ์เพิ่มเติมจะถูกใช้เป็นตัวดําเนินการไปยังตัวดําเนินการกะ ดังนั้นพาธการกําหนดเวลาที่ยาวจึงถูกสร้างขึ้นระหว่างอินพุตเพิ่มเติมและ 'ผลลัพธ์' หากต้องการเพิ่มจํานวนไปป์ไลน์ ให้กําหนดผลลัพธ์เพิ่มเติมให้กับตัวแปรชั่วคราวตามที่แสดงไว้ด้านล่าง:

    int a, b, c, d, addition_result, shift_distance;
    addition_result = a b c d;
    result = addition_result >> shift_distance;


    เอาต์พุตแบบชิฟต์เชิงรวม:

    ด้านล่างเป็นตัวอย่างของการเปลี่ยนแปลงแบบรวมจากชิฟเตอร์บาร์เรลที่อาจทําให้เกิดการเสื่อมสภาพของเวลา

    int a, b, c, d, result, shift_distance;
    result = (a >> shift_distance) b c d;

    ผลลัพธ์ของกะจะถูกใช้เป็นตัวดําเนินการกับตัวดําเนินการเพิ่มเติม ดังนั้นพาธการกําหนดเวลาแบบยาวจึงถูกสร้างขึ้นระหว่าง 'a' และ 'result' หากต้องการเพิ่มจํานวนไปป์ไลน์ ให้กําหนดผลลัพธ์ของการเปลี่ยนแปลงให้กับตัวแปรตามที่แสดงด้านล่าง:

    int a, b, c, d, result, shift_result, shift_distance;
    shift_result = a >> shift_distance;
    result = shift_result b c d;

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

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

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

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