2015-08-08 7 views
10

मल्टीकोर डिजाइन मैं कई चित्र ढूंढ पाएं का एक विवरण के लिए देखा करने के बाद में कोर के लोड और आवृत्ति बदलने के लिए जिम्मेदार है, लेकिन उन सभी को इस तरह कुछ हद तक देखने के लिए:क्या मल्टीकोर प्रोसेसर

multicore design

मुझे पता है i7z कमांड आउटपुट को देखने से अलग-अलग कोर विभिन्न आवृत्तियों पर चल सकते हैं।

यह सुझाव देगा कि कौन से कोर के बारे में निर्णय एक नई प्रक्रिया दी जाएगी और कोर की आवृत्ति को बदलने के लिए या तो ऑपरेटिंग सिस्टम या कोर के नियंत्रण ब्लॉक द्वारा किया जाता है।

मेरा प्रश्न है: प्रत्येक व्यक्तिगत कोर की आवृत्तियों को क्या नियंत्रित करता है? ऑपरेटिंग सिस्टम पर रखे गए विशिष्ट कोर के साथ READY प्रक्रिया को जोड़ने का काम है या यह प्रोसेसर के भीतर कुछ किया जाता है।

+1

@xmojmr मैंने आपके द्वारा प्रदान किए गए लिंक से कई पीडीएफ की कोशिश की है। वे सभी चित्रा 3-9, लेकिन आपके द्वारा वर्णित नहीं। क्या आप कृपया मुझे बता सकते हैं कि आपका क्या मतलब है? – v010dya

+1

खुला http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf (_Combined वॉल्यूम्स: 1 , 2 ए, 2 बी, 2 सी, 3 ए, 3 बी और 3 सी_), ctrl + f "_ प्रोसेसर फ्रीक्वेंसी_ निकालने के लिए एल्गोरिदम" – xmojmr

+1

@xmojmr वहां चर्चा किए गए सभी मॉडल (जैसा कि उस आरेख से कम तालिका में देखा गया है) सिंगल-कोर प्रोसेसर से निपटता है । तो यह वास्तव में मदद नहीं करता है। – v010dya

उत्तर

2

कोर्यूल को प्रक्रियाओं/धागे को शेड्यूल करना पूरी तरह से up to the OS है। हार्डवेयर को चलाने के लिए इंतजार कर रहे कार्यों की कोई समझ नहीं है। ओएस की प्रक्रियाओं की सूची को बनाए रखना जो चलने योग्य बनाम I/O के लिए प्रतीक्षा कर रहा है पूरी तरह से एक सॉफ्टवेयर चीज है।

एक कोर से दूसरे में एक थ्रेड माइग्रेट करना मूल कोर पर architectural state को स्मृति में संग्रहीत करने के लिए कर्नेल कोड द्वारा किया जाता है, फिर नए कोर पर ओएस कोड उस सहेजे गए राज्य को बहाल करता है और उपयोगकर्ता-स्थान निष्पादन को फिर से शुरू करता है।

पारंपरिक रूप से, आवृत्ति और वोल्टेज स्केलिंग निर्णय ओएस द्वारा किए जाते हैं। लिनक्स को एक उदाहरण के रूप में लें: निर्णय लेने वाले कोड को governor (और यह भी arch wiki link came up high on google) कहा जाता है। यह चीजों को देखता है कि वर्तमान कोर पर कितनी बार प्रक्रियाओं ने अपने पूरे time slice का उपयोग किया है। अगर राज्यपाल सीपीयू को एक अलग गति से चलाना तय करता है, तो यह परिवर्तन को लागू करने के लिए कुछ नियंत्रण रजिस्टरों को प्रोग्राम करता है। जैसा कि मैं इसे समझता हूं, हार्डवेयर right voltage to support the requested frequency चुनने का ख्याल रखता है।

जैसा कि मैं इसे समझता हूं, प्रत्येक कोर पर चल रहा ओएस स्वतंत्र रूप से निर्णय लेता है। हार्डवेयर पर जो प्रत्येक कोर को विभिन्न आवृत्तियों पर चलाने की अनुमति देता है, निर्णय लेने वाले कोड को एक-दूसरे के साथ समन्वय करने की आवश्यकता नहीं होती है। यदि एक कोर पर उच्च आवृत्ति चलाना एक उच्च वोल्टेज चिप-चौड़ा होना आवश्यक है, तो हार्डवेयर इसका ख्याल रखता है। मुझे लगता है कि डीवीएफएस (गतिशील वोल्टेज और फ्रीक्वेंसी स्केलिंग) का आधुनिक कार्यान्वयन काफी उच्च स्तर है, ओएस बस हार्डवेयर को बताता है कि एन विकल्पों में से कौन सा विकल्प चाहता है, और ऑनबोर्ड पावर माइक्रोकंट्रोलर प्रोग्रामिंग ऑसीलेटर/घड़ी डिवाइडर के विवरण का ख्याल रखता है और वोल्टेज नियामक।

इंटेल की "टर्बो" सुविधा, जो अधिकतम टिकाऊ आवृत्ति के ऊपर आवृत्ति को बढ़ा देती है, हार्डवेयर में निर्णय लेती है। किसी भी समय ओएस उच्चतम विज्ञापित आवृत्ति का अनुरोध करता है, जब बिजली और ठंडा करने की अनुमति देता है तो सीपीयू टर्बो का उपयोग करता है।

इंटेल का स्काइलेक इसे एक कदम आगे ले जाता है: ओएस हार्डवेयर के लिए वैकल्पिक रूप से बाधाओं के साथ डीवीएफएस पर पूर्ण नियंत्रण रख सकता है। इससे मिलीसेकंड के समय-समय पर माइक्रोसॉन्ड से माइक्रोसॉन्ड तक प्रतिक्रिया हो सकती है। यह वास्तव में विस्फोटक वर्कलोड में बेहतर प्रदर्शन की अनुमति देता है, क्योंकि यह उपयोगी होने पर टर्बो के लिए अधिक बिजली बजट उपलब्ध है। कुछ बेंचमार्क इस बात को देखने के लिए काफी विस्फोटक हैं, जैसे कुछ ब्राउज़र/जावास्क्रिप्ट वाले आईआईआरसी।

वहाँ IDF2015, check out the slides and/or archived webcast पर Skylake की नई ऊर्जा प्रबंधन के बारे में एक पूरी बात थी। अंतर को स्पष्ट करने के लिए पुरानी विधि को भी बहुत विस्तार से वर्णित किया गया है, इसलिए यदि आप मेरे सारांश से अधिक विस्तार चाहते हैं तो आपको वास्तव में इसे देखना चाहिए। (अन्य आईडीएफ वार्ता की सूची here है, लिंक के लिए Agner Fog's blog पर धन्यवाद)

+0

ठीक है। मुझे पूरा यकीन है कि यह एक स्वीकार्य उत्तर होगा, लेकिन मुझे आपके द्वारा प्रदान की गई सारी जानकारी को अवशोषित करने के लिए कुछ टोम लें। – v010dya

1

मूल आवृत्ति कोर के "ऑसीलेटर" पर लागू एक दिए गए वोल्टेज द्वारा नियंत्रित होती है।

यह वोल्टेज ऑपरेटिंग सिस्टम द्वारा बदला जा सकता है लेकिन सीपीयू में उच्च तापमान का पता लगाने पर इसे BIOS द्वारा भी बदला जा सकता है।

+1

मैंने आपको एक उपहार दिया है, क्योंकि आपने अधिकांश प्रश्नों का उत्तर दिया है। लेकिन क्या आप कुछ समझाने में मदद कर सकते हैं। ओएस ऑसीलेटर को कमांड भेजना चाहता है, वास्तव में क्या हो रहा है कि यह आदेश निष्पादित करने के लिए लोड किया गया है। क्या इसे कोर में लोड करने की आवश्यकता है जिसे बदला जाएगा या कोई कोर करेगा (क्या कोई कोर किसी अन्य कोर के ऑसीलेटर को कमांड भेज सकता है या ओएस निष्पादन के लिए विशिष्ट कोर में कमांड लोड करता है)। – v010dya

+0

वोलोडिया, दुर्भाग्य से मुझे इस प्रश्न के लिए सटीक उत्तर नहीं पता है। हालांकि, पीसी आर्किटेक्चर के बारे में मेरे ज्ञान के आधार पर, मेरी शर्त यह है कि कोई भी कोर नौकरी कर सकता है। –

+1

@ v010dya ये प्रक्रिया पूरी तरह से स्वतंत्र हैं, इसलिए कोई भी कोर इसे कर सकता है। वास्तव में, जवाब सरल नहीं है क्योंकि बहुत सी चीजें हो रही हैं। ओएस एक "अनुरोध" उत्पन्न करता है, जो संबंधित नियंत्रकों (ड्राइवरों के माध्यम से) को पास किया जाता है। फिर नियंत्रक "अपना काम" करते हैं। लेकिन ओएस के हस्तक्षेप के बिना आवृत्ति भी बदला जा सकता है। उदाहरण के लिए (सरलीकृत) - एक "BIOS" (यह एक BIOS नहीं है, लेकिन सादगी के लिए ...) कोर के भार के आधार पर आवृत्ति बदलता है। इस मामले में ओएस कोर लोड करता है, हां, लेकिन सीपीयू पर कोई वास्तविक नियंत्रण नहीं है। आदि ... –

संबंधित मुद्दे