ในโลกทุกวันนี้มันไม่สำคัญมากถ้าเป็นเช่นนั้น
การคาดคะเนสาขาแบบไดนามิก (สิ่งที่คิดมานานหลายทศวรรษ (ดูการวิเคราะห์แบบแผนการทำนายสาขาแบบไดนามิกในปริมาณงานของระบบที่เผยแพร่ในปี 1996) เป็นเรื่องธรรมดา
ตัวอย่างนี้สามารถพบได้ในหน่วยประมวลผล ARM จาก Arm Info Center เกี่ยวกับการทำนายสาขา
เพื่อปรับปรุงความแม่นยำในการทำนายสาขาการรวมกันของเทคนิคแบบคงที่และแบบไดนามิกจะใช้
คำถามคือ "การคาดคะเนสาขาแบบไดนามิกคืออะไรในโปรเซสเซอร์แขน?" การอ่านอย่างต่อเนื่องของการทำนายสาขาแบบไดนามิกแสดงให้เห็นว่ามันใช้รูปแบบการทำนาย 2 บิต (อธิบายไว้ในกระดาษ) สร้างข้อมูลเกี่ยวกับว่าสาขานั้นถูกยึดอย่างแรงหรืออ่อนแอหรือไม่
เมื่อเวลาผ่านไป (และตามเวลาที่ฉันหมายถึงไม่กี่ผ่านบล็อกที่) นี้สร้างขึ้นข้อมูลเป็นวิธีที่รหัสจะไป
สำหรับการคาดคะเนแบบคงที่มันจะดูวิธีที่รหัสดูตัวเองและวิธีที่สาขาทำในการทดสอบ - ไปยังคำสั่งก่อนหน้าหรืออีกหนึ่งในรหัส:
รูปแบบที่ใช้ในหน่วยประมวลผล ARM1136JF-S คาดการณ์ว่าสาขาที่มีเงื่อนไขไปข้างหน้าทั้งหมดจะไม่ได้รับการดำเนินการและสาขาที่ย้อนหลังทั้งหมดจะถูกนำมาใช้ ประมาณ 65% ของสาขาทั้งหมดจะถูกนำหน้าด้วยรอบที่ไม่ใช่สาขาเพียงพอที่จะคาดการณ์ได้อย่างสมบูรณ์
ดังที่ได้กล่าวไว้โดย Sparky สิ่งนี้มีพื้นฐานอยู่บนความเข้าใจที่วนซ้ำบ่อยกว่า ห่วงแยกไปข้างหลัง (มีกิ่งที่ปลายห่วงเพื่อรีสตาร์ทที่ด้านบน) - ปกติแล้วจะทำเช่นนี้
อันตรายจากการพยายามเดาตัวคอมไพเลอร์ครั้งที่สองคือคุณไม่รู้ว่ารหัสนั้นจะถูกรวบรวมได้อย่างไร (และปรับให้เหมาะสม) และส่วนใหญ่มันไม่สำคัญ ด้วยการทำนายแบบไดนามิกสองครั้งผ่านฟังก์ชั่นมันจะทำนายการข้ามคำสั่งการป้องกันเพื่อให้ได้ผลตอบแทนก่อนกำหนด หากประสิทธิภาพของท่อส่งน้ำสองท่อมีประสิทธิภาพที่สำคัญมีสิ่งอื่นที่คุณต้องกังวล
เวลาที่ใช้ในการอ่านสไตล์หนึ่งในอีกลักษณะหนึ่งนั้นมีความสำคัญมากกว่า - การทำให้โค้ดสะอาดเพื่อให้มนุษย์สามารถอ่านได้เพราะคอมไพเลอร์กำลังจะทำอะไรได้ดีไม่ว่าคุณจะยุ่งหรือเป็นอุดมคติในการเขียนโค้ด