मैंने हमेशा सोचा है कि पूर्वानुमान डेटा कहां/कैसे संग्रहीत किया जाता है? क्या कोई सीमा है? क्या यह केवल हाल ही की शाखा है? मैं ज्यादातर इंटेल आर्किटेक्चर के बारे में चिंतित हूं, लेकिन किसी भी वास्तुकला के बारे में मैं कुछ भी सीख सकता हूं।शाखा भविष्यवाणी डेटा कहां/कैसे संग्रहीत किया जाता है?
उत्तर
प्रोसेसर में कहीं आंतरिक रूप से। वास्तव में क्या किया जाता है प्रोसेसर पर निर्भर करता है।
एक बहुत ही साधारण मामले में, आप शाखा पूर्वानुमान डेटा के 4096 बिट्स ले सकते हैं। फिर प्रत्येक शाखा के लिए, आप शाखा के पते के अंतिम 12 बिट्स लेते हैं, जो 4096 विभिन्न मूल्य देता है, और इसे आपकी शाखा भविष्यवाणी डेटा में सूचकांक के रूप में ले जाता है। और चूंकि आपके पास केवल एक बिट डेटा है, इसलिए आप केवल स्टोर करते हैं कि अंतिम शाखा ली गई थी या नहीं।
लाभ यह है कि यह बहुत सस्ता है। नुकसान यह है कि दो शाखाएं बिल्कुल 4096 बाइट्स अलग-अलग तालिका में एक ही प्रविष्टि का उपयोग करती हैं। तो यदि आपका कोड हर बार इन दो शाखाओं को निष्पादित करता है, और हमेशा एक लिया जाता है और कोई कभी नहीं लिया जाता है, तो शाखा भविष्यवाणी काफी खराब होती है।
कुछ प्रोसेसर प्रति शाखा दो बिट्स का उपयोग करते हैं जिसका अर्थ है "मजबूत लिया गया", "लिया गया", "नहीं लिया गया", "मजबूत नहीं लिया गया"। हर बार जब शाखा को भविष्यवाणी की जाती है तो "मजबूत उठाया जाता है" की ओर बढ़ता है, यदि शाखा नहीं ली जाती है तो यह "मजबूत नहीं" की ओर बढ़ती है। यदि शाखाओं को आम तौर पर दुर्लभ अपवादों के साथ लिया जाता है तो यह बेहतर काम करता है।
कुछ प्रोसेसर शाखा पते के अंतिम 12 या अधिक बिट्स का उपयोग नहीं करते हैं, लेकिन वे कहते हैं कि आखिरी चार शाखाएं ली गई हैं या नहीं। मान लें कि आपके पास कोड
if (x >= 0) { ... }
if (x <= 0) { ... }
और x शायद ही कभी 0 है, लेकिन काफी यादृच्छिक रूप से सकारात्मक या नकारात्मक है। तब पहली शाखा भविष्यवाणी करना मुश्किल है, लेकिन दूसरे को पहले कभी नहीं लिया जाने के बाद कभी नहीं लिया जाता है, और यदि पहले व्यक्ति को नहीं लिया जाता है तो हमेशा लिया जाता है। इस जानकारी में मिश्रण करके, आप दूसरी शाखा के लिए शाखा पूर्वानुमान तालिका में दो प्रविष्टियों का उपयोग करते हैं, लेकिन दूसरी शाखा के लिए भविष्यवाणी बेहद सटीक होगी, भले ही शाखा को यादृच्छिक रूप से लिया गया हो या नहीं लिया गया हो।
आपको हमेशा समस्या है कि शाखा पूर्वानुमान तालिका में एक ही प्रविष्टि का उपयोग एक से अधिक शाखाओं के लिए किया जाएगा; आप बस इसके साथ रहते हैं। (इसे संभालने के लिए कुछ भी चालाक करने से बहुत अधिक भंडारण होगा। हम प्रति शाखा भविष्यवाणी 1 या 2 बिट का उपयोग कर रहे हैं ताकि हमारे पास बहुत कम भंडारण के साथ भारी टेबल हो)।
- 1. कॉन्स्ट डेटा कहां संग्रहीत किया जाता है?
- 2. शाखा भविष्यवाणी और शाखा लक्ष्य भविष्यवाणी अनुकूलन
- 3. एसक्यूएल सर्वर में डेटा कैसे संग्रहीत किया जाता है?
- 4. Magento ऑर्डर डेटा कहां संग्रहीत किया जाता है?
- 5. क्लाउडवॉच लॉग डेटा कहाँ संग्रहीत किया जाता है?
- 6. नोड.जेएस में, ढेर पर डेटा कब संग्रहीत किया जाता है?
- 7. व्यूस्टेट कहां संग्रहीत किया जाता है?
- 8. पोर्टेबल शाखा भविष्यवाणी संकेत
- 9. पॉइंटर मेटाडेटा कहां संग्रहीत किया जाता है?
- 10. TempData कहां संग्रहीत किया जाता है?
- 11. शाखा भविष्यवाणी को कैसे रद्द करें?
- 12. सबवर्सन रिपॉजिटरीज कहां से संग्रहीत किया जाता है?
- 13. निष्पादन योग्य में कोड कैसे संग्रहीत किया जाता है?
- 14. एंड्रॉइड: डेटाबेस फ़ाइलों को कहां संग्रहीत किया जाता है?
- 15. एंड्रॉइड में अनुमतियों को कहाँ संग्रहीत किया जाता है?
- 16. संग्रहित evtx फ़ाइलों को संग्रहीत किया जाता है?
- 17. "जेनकींस यूआरएल" कॉन्फ़िगरेशन कहां संग्रहीत किया जाता है?
- 18. वाईफाई पासवर्ड: यह कैसे संग्रहीत किया जाता है और कहां?
- 19. स्मृति में जहां शून्य प्रकारों को संग्रहीत किया जाता है?
- 20. मजबूत नाम कुंजी पासवर्ड कहाँ संग्रहीत किया जाता है?
- 21. मेरी प्रोजेक्ट फ़ाइलों को संग्रहीत किया जाता है
- 22. वर्डप्रेस डीबी में wp_cron कार्यों को संग्रहीत किया जाता है?
- 23. फैंटॉमजेएस कैशिंग। यह कहाँ संग्रहीत किया जाता है?
- 24. एंड्रॉइड स्टूडियो कहां मास्टर पासवर्ड संग्रहीत किया जाता है?
- 25. यूनियन सदस्यों को कैसे संग्रहीत किया जाता है?
- 26. सोनार का उल्लंघन: सुरक्षा - सरणी सीधे संग्रहीत किया जाता है
- 27. .NET "पृथक संग्रहण" कहां संग्रहीत किया जाता है?
- 28. डिस्क पर btree कैसे संग्रहीत किया जाता है?
- 29. एनजी सेवा करते समय फ़ाइलों को संग्रहीत किया जाता है?
- 30. सी में एक परिवर्तनीय नाम कैसे संग्रहीत किया जाता है?
मैं सोच रहा था कि वे इसे कोड में ऑपोड में कुछ अप्रयुक्त बिट्स में क्यों नहीं चिपकते हैं। मान लीजिए कि यह धीमी गति से धीमी होगी क्योंकि इसे राम पर वापस जाना होगा। – johnnycrash
@ जॉनीनीक्रैश, क्या छड़ी है? शाखा संकल्प कार्यक्रम में एक शाखा स्थान (एक अद्वितीय आईपी/पीसी) के प्रति स्थिर नहीं है, सबसे अच्छा उदाहरण एक लूप शाखा है - इसे केवल उस बिंदु तक लिया जाता है जब तक इसे और नहीं लिया जाता है। कुछ शाखा भविष्यवाणियों में अलग-अलग इतिहास संदर्भों में इन शाखाओं के लिए कई प्रविष्टियां होंगी। यदि दूसरी तरफ आप रनटाइम के दौरान इन बिट्स को बदलना चाहते हैं - स्व-संशोधित-कोड देखें और फिर से सोचें। – Leeor
@Leeor चूंकि यह केवल एक संकेत होगा, एक स्व-संशोधित कोड समस्या नहीं होगी। (इसके अलावा, फ्रंट एंड संशोधन कर रहा होगा।) यदि कोई प्रोग्राम/थ्रेड कोड चला रहे थे तो एक समस्या होगी, इस मामले में एक आईकैच रीफिल किसी अन्य थ्रेड के इतिहास से भविष्यवाणी कर सकता है। यह भी लिखने के लिए और गंदे कैश ब्लॉक का मतलब होगा। –