คำถามติดแท็ก assembly

คำถามการเขียนโปรแกรมแอสเซมบลีภาษา (asm) โปรดมั่นใจว่าแท็กด้วยโปรเซสเซอร์และ / หรือชุดคำสั่งที่คุณใช้รวมถึงแอสเซมเบลอร์ คำเตือน: สำหรับแอสเซมบลี. NET ให้ใช้แท็ก [.net-assembly] แทน สำหรับ Java ASM ให้ใช้แท็ก [java-bytecode-asm] แทน

2
prefetcher L2 HW มีประโยชน์จริง ๆ หรือไม่
ฉันอยู่ที่Whisky Lake i7-8565Uและวิเคราะห์เคาน์เตอร์ที่สมบูรณ์แบบและเวลาสำหรับการคัดลอกข้อมูลขนาด 512 KiB (ขนาดแคช L2 มากกว่าสองเท่า) และต้องเผชิญกับความเข้าใจผิดบางประการเกี่ยวกับการทำงานของ L2 HW prefetcher ในIntel Manual Vol.4 MSRมี MSR 0x1A4บิต 0 เป็นสำหรับการควบคุมการใช้ prefetcher L2 HW (1 เพื่อปิดการใช้งาน) พิจารณาเกณฑ์มาตรฐานดังต่อไปนี้: memcopy.h: void *avx_memcpy_forward_lsls(void *restrict, const void *restrict, size_t); memcopy.S: avx_memcpy_forward_lsls: shr rdx, 0x3 xor rcx, rcx avx_memcpy_forward_loop_lsls: vmovdqa ymm0, [rsi + 8*rcx] vmovdqa [rdi …

2
พีซีวิดีโอฮาร์ดแวร์ที่ทันสมัยรองรับโหมดข้อความ VGA ใน HW หรือไม่ BIOS เลียนแบบ (ด้วยโหมดการจัดการระบบ) หรือไม่
สิ่งที่มันเกิดขึ้นในฮาร์ดแวร์คอมพิวเตอร์ที่ทันสมัย booted ใน 16 บิตมรดกโหมด BIOS MBR เมื่อคุณเก็บไบต์เช่น'1'(0x31) ลงในข้อความ VGA (โหมด 03) framebuffer ที่อยู่ทางกายภาพเชิงเส้นB8000? วิธีช้าเป็นmov [es:di], eaxร้านด้วยMTRRสำหรับภูมิภาคชุด UC? (การทดสอบทดลองบนแล็ปท็อป Kaby Lake iGPU หนึ่งตัวบ่งชี้ว่า clflushopt บน WC นั้นมีความเร็วเท่ากับ UC สำหรับหน่วยความจำ VGA โดยประมาณ แต่หากไม่มี clflushopt การจัดmovเก็บไปยังหน่วยความจำ WC จะไม่ออกจาก CPU และไม่อัปเดตหน้าจอเลย .) หากไม่ใช่ SMI สำหรับทุกร้านมีวิธีใดที่จะประมาณค่าใช้จ่ายนี้สำหรับหน่วยความจำ WB ในพื้นที่ผู้ใช้สำหรับการทดลองประสิทธิภาพโดยไม่ต้องบูตเครื่องใหม่ในโหมดจริงหรือไม่ (เช่นการใช้หน้า BSS เป็น framebuffer แบบหลอกที่ไม่ได้แสดงที่ใดก็ได้) ตัวอักษรที่สอดคล้องกันปรากฏขึ้นบนหน้าจอในการรีเฟรชครั้งต่อไป …


2
อะไรทำให้เกิดความแปรปรวนสูงในรอบนี้สำหรับการวนรอบแบบเรียบง่ายด้วย -O0 แต่ไม่ใช่ -O3 บน Cortex-A72
ฉันใช้การทดลองบางอย่างเพื่อรับรูทีนที่สม่ำเสมออย่างมากสำหรับโค้ดบางส่วน รหัสที่ฉันกำลังจับเวลาเป็นภาระงานที่ค่อนข้าง จำกัด ของ CPU: int cpu_workload_external_O3(){ int x = 0; for(int ind = 0; ind < 12349560; ind++){ x = ((x ^ 0x123) + x * 3) % 123456; } return x; } ฉันได้เขียนโมดูลเคอร์เนลที่ปิดใช้งานการขัดจังหวะจากนั้นเรียกใช้การทดลอง 10 ครั้งของฟังก์ชั่นด้านบนกำหนดเวลาการทดลองแต่ละครั้งโดยรับความแตกต่างในตัวนับรอบนาฬิกาจากก่อนและหลัง สิ่งอื่น ๆ ที่ควรทราบ: เครื่องคือ ARM Cortex-A72 โดยมี 4 ซ็อกเก็ตที่มี 4 คอร์แต่ละอัน (แต่ละอันมีแคช L1 …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.