อ่าน 4 นาที
การเพิ่มประสิทธิภาพขั้นสูงสุด
การปรับแต่ง ขั้นสูงสุด (Superoptimization) คือกระบวนการที่ คอมไพเลอร์ ค้นหาลำดับที่เหมาะสมที่สุดโดยอัตโนมัติสำหรับลำดับคำสั่งที่ปราศจากลูป...
การเพิ่มประสิทธิภาพขั้นสูงสุด
การปรับแต่ง ขั้นสูงสุด (Superoptimization)คือกระบวนการที่คอมไพเลอร์ค้นหาลำดับที่เหมาะสมที่สุดโดยอัตโนมัติสำหรับลำดับคำสั่งที่ปราศจากลูป โดยทั่วไปแล้วคอมไพเลอร์ในโลกแห่งความเป็นจริงไม่สามารถสร้าง โค้ด ที่เหมาะสมที่สุด ได้อย่างแท้จริง และในขณะที่การปรับแต่งโค้ดมาตรฐานส่วนใหญ่ของคอมไพเลอร์ช่วยปรับปรุงโค้ดได้เพียงบางส่วนเท่านั้น เป้าหมายของตัวปรับแต่งขั้นสูงสุดคือการค้นหาลำดับที่เหมาะสมที่สุด หรือรูปแบบมาตรฐานตัวปรับแต่งขั้นสูงสุดสามารถใช้เพื่อปรับปรุงตัวปรับแต่งทั่วไปได้โดยการเน้นโอกาสที่พลาดไป เพื่อให้มนุษย์สามารถเขียนกฎเพิ่มเติมได้
ประวัติศาสตร์
คำว่า superoptimization ถูกบัญญัติโดยAlexia Massalinในบทความปี 1987 เรื่องSuperoptimizer: A Look at the Smallest Program [ 1 ] คำ ว่า "program optimization" ถูกนำมาใช้กับสาขาที่ไม่ได้มุ่งหวังที่จะเพิ่มประสิทธิภาพ แต่เพียงแค่ปรับปรุงเท่านั้น ความเข้าใจผิดนี้ทำให้ Massalin ต้องเรียกระบบของเธอว่า superoptimizer ซึ่งจริงๆ แล้วเป็นตัวเพิ่มประสิทธิภาพเพื่อค้นหาโปรแกรมที่เหมาะสมที่สุด[ 2 ]
ในปี พ.ศ. 2535 GNU Superoptimizer (GSO) ได้รับการพัฒนาเพื่อรวมเข้ากับGNU Compiler Collection (GCC) [ 3 ] [ 4 ]ต่อมาได้มีการพัฒนาและขยายแนวคิดเหล่านี้เพิ่มเติม
เทคนิค
โดยทั่วไป การปรับแต่งขั้นสูงสุดจะดำเนินการผ่านการค้นหาแบบครบถ้วนด้วยกำลัง ทั้งหมด ในพื้นที่ของลำดับคำสั่งที่ถูกต้อง วิธีนี้มีค่าใช้จ่ายสูงและไม่สามารถนำไปใช้ได้จริงกับคอมไพเลอร์ทั่วไป อย่างไรก็ตาม ได้มีการแสดงให้เห็นแล้วว่ามีประโยชน์ในการปรับแต่งลูปภายในที่สำคัญต่อประสิทธิภาพ นอกจากนี้ยังสามารถใช้ตัวแก้ปัญหา SMTเพื่อแก้ปัญหา ซึ่งจะช่วยปรับปรุงประสิทธิภาพการค้นหาได้อย่างมาก (แม้ว่าอินพุตที่ซับซ้อนกว่าบล็อกพื้นฐานจะยังไม่สามารถเข้าถึงได้) [ 5 ]
ในปี พ.ศ. 2544 การเพิ่มประสิทธิภาพสูงสุดที่มุ่งเน้นเป้าหมายได้รับการสาธิตในโครงการ Denali โดยการวิจัยของ Compaq [ 6 ]ในปี พ.ศ. 2549 การเขียนโปรแกรมเชิงประกาศชุดคำตอบ ถูกนำไปใช้กับการเพิ่มประสิทธิภาพสูงสุดใน โครงการ Total Optimisation using Answer Set Technology (TOAST) [ 7 ]ที่มหาวิทยาลัยบาธ[ 8 ] [ 9 ]
การเพิ่มประสิทธิภาพขั้นสูงสามารถใช้เพื่อสร้าง ตัวเพิ่มประสิทธิภาพช่องมองทั่วไปโดยอัตโนมัติ[ 10 ]
เครื่องมือเพิ่มประสิทธิภาพขั้นสูงที่เปิดให้ใช้งานได้ทั่วไป
มีโปรแกรมเพิ่มประสิทธิภาพขั้นสูงหลายตัวที่สามารถดาวน์โหลดได้ฟรี
- สำหรับชุดคำสั่งตระกูล x86:
- สำหรับ ARM:
- ตัวเพิ่มประสิทธิภาพขั้นสูงแบบไร้ขอบเขต[ 5 ]แปลง LLVM IR เป็นแอสเซมบลี ARMv7-A
- สำหรับระบบฝังตัว:
- สำหรับ JVM:
- สำหรับ LLVM IR:
- สำหรับ WebAssembly
- slumps [ 20 ]ให้การเพิ่มประสิทธิภาพสูงสุดสำหรับโปรแกรม WASM โดยอิงจาก souper
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเพิ่มประสิทธิภาพขั้นสูงสุด
การปรับแต่ง ขั้นสูงสุด (Superoptimization) คือกระบวนการที่ คอมไพเลอร์ ค้นหาลำดับที่เหมาะสมที่สุดโดยอัตโนมัติสำหรับลำดับคำสั่งที่ปราศจากลูป...
ประวัติศาสตร์
คำว่า superoptimization ถูกบัญญัติโดย Alexia Massalin ในบทความปี 1987 เรื่อง Superoptimizer: A Look at the Smallest Program [ 1 ] คำ ว่า "program optimization" ถูกนำมาใช้กับสาขาที่ไม่ได้มุ่งหวังที่จะเพิ่มประสิทธิภาพ แต่เพียงแค่ปรับปรุงเท่านั้น...
เทคนิค
โดยทั่วไป การปรับแต่งขั้นสูงสุดจะดำเนินการผ่าน การค้นหาแบบครบถ้วนด้วยกำลัง ทั้งหมด ในพื้นที่ของลำดับคำสั่งที่ถูกต้อง วิธีนี้มีค่าใช้จ่ายสูงและไม่สามารถนำไปใช้ได้จริงกับคอมไพเลอร์ทั่วไป อย่างไรก็ตาม...
เครื่องมือเพิ่มประสิทธิภาพขั้นสูงที่เปิดให้ใช้งานได้ทั่วไป
มีโปรแกรมเพิ่มประสิทธิภาพขั้นสูงหลายตัวที่สามารถดาวน์โหลดได้ฟรี