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

ทําไมฉันจึงอาจเห็นปัญหาการทํางานสอดคล้องกันกับแคชในการออกแบบ SoC ที่ใช้ Linux OS

สิ่งแวดล้อม

  • Intel® Quartus® Prime Standard Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    คำอธิบาย

    เนื่องจาก Linux BSP เริ่มต้นไม่เปิดใช้งานแคชและการออกอากาศการบํารุงรักษา TLB (บิต0 ของการลงทะเบียน ACTLR เหลืออยู่ '0') ในโหมด SMP ปัญหาการทํางานร่วมกันแคชอาจพบเห็นได้

    สําหรับคําอธิบายบิตนี้ โปรดดูที่ ส่วนที่ 1.7.3 การดําเนินการบํารุงรักษาที่แพร่ภาพใน ARM A9 MPCore Technical Reference Manual[2]:

    โปรเซสเซอร์ทั้งหมดที่ทํางานในโหมด SMP บนโดเมนที่สอดคล้องกันเดียวกันสามารถส่งและรับการดําเนินการ TLB และ Cache Maintenance คู่มืออ้างอิงสถาปัตยกรรม ARM ให้ข้อมูลโดยละเอียดเกี่ยวกับการดําเนินการออกอากาศ โปรเซสเซอร์ Cortex-A9 ในคลัสเตอร์ A9-MP จะกระจายการดําเนินการบํารุงรักษาที่ออกอากาศได้เมื่อทํางานในโหมด SMP (ACTLR SMP=1) และเมื่อเปิดใช้งานการออกอากาศการดําเนินการบํารุงรักษา (ACTLR FW=1) โปรเซสเซอร์ Cortex-A9 สามารถรับและดําเนินการบํารุงรักษาการออกอากาศเมื่อทํางานในโหมด SMP, ACTLR SMP=1

    ความละเอียด

    ขอแนะนําให้ตั้งค่าทั้ง ACTLR FW และ ACTLR SMP ไปยัง 1 เราสามารถตั้งค่าบิตผ่านการแก้ไขรหัส Linux ใน proc-v7 ไฟล์ S ดังนี้:

    #ifdef CONFIG_SMP
    ALT_SMP(mrc p15, 0, r0, c1, c0, 1)
    ALT_UP(mov r0, #(1 << 6)) @ ปลอมเพื่อ UP
    tst r0, #(1 << 6) ที่เปิดใช้งานโหมด SMP/nAMP?
    orreq r0, r0, #(1 << 6) @ เปิดใช้งานโหมด SMP/nAMP
    orreq r0, r0, r10 @ เปิดใช้งานบิต SMP เฉพาะ CPU
    orr r0, r0, #(1) @ เพิ่มบรรทัดนี้เปิดใช้งาน ACTLR[0]
    mcreq p15, 0, r0, c1, c0, 1
    #endif

     

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

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

    Cyclone® V FPGA และ SoC FPGA
    Intel® Arria® 10 FPGA และ SoC FPGA

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