घर मशरूम एक बहु-थ्रेडेड गेम इंजन आर्किटेक्चर का कार्यान्वयन। वॉन न्यूमैन वास्तुकला की अड़चन

एक बहु-थ्रेडेड गेम इंजन आर्किटेक्चर का कार्यान्वयन। वॉन न्यूमैन वास्तुकला की अड़चन

परिचय। कंप्यूटर प्रौद्योगिकी तीव्र गति से विकसित हो रही है। कंप्यूटिंग डिवाइस अधिक शक्तिशाली, छोटे, अधिक सुविधाजनक होते जा रहे हैं, लेकिन हाल ही में डिवाइस के प्रदर्शन में वृद्धि हुई है बड़ी समस्या. 1965 में, गॉर्डन मूर (इंटेल के संस्थापकों में से एक) इस निष्कर्ष पर पहुंचे कि "एक एकीकृत सर्किट चिप पर रखे गए ट्रांजिस्टर की संख्या हर 24 महीने में दोगुनी हो जाती है।"

मल्टीप्रोसेसर सिस्टम बनाने के क्षेत्र में पहला विकास 70 के दशक में शुरू हुआ। लंबे समय तकएक चिप पर ट्रांजिस्टर की संख्या में एक साथ वृद्धि के साथ घड़ी की आवृत्ति (प्रदर्शन का 80% तक केवल घड़ी आवृत्ति द्वारा निर्धारित किया गया था) को बढ़ाकर सामान्य सिंगल-कोर प्रोसेसर का प्रदर्शन बढ़ाया गया था। मौलिक कानूनभौतिकविदों ने इस प्रक्रिया को रोक दिया: चिप्स ज़्यादा गरम होने लगे, तकनीकी ने सिलिकॉन परमाणुओं के आकार के करीब पहुंचना शुरू कर दिया। इन सभी कारकों के कारण हुआ है:

  • रिसाव धाराओं में वृद्धि हुई है, जिसके परिणामस्वरूप गर्मी अपव्यय और बिजली की खपत में वृद्धि हुई है।
  • प्रोसेसर मेमोरी की तुलना में बहुत "तेज" हो गया है। कॉल विलंबता के कारण प्रदर्शन खराब हो गया था। यादृच्छिक अभिगम स्मृतिऔर डेटा को कैश में लोड करना।
  • "वॉन न्यूमैन टोंटी" जैसी कोई चीज होती है। इसका अर्थ है किसी प्रोग्राम को निष्पादित करते समय प्रोसेसर आर्किटेक्चर की अक्षमता।

मल्टीप्रोसेसर सिस्टम (समस्या को हल करने के तरीकों में से एक के रूप में) का व्यापक रूप से उपयोग नहीं किया गया था, क्योंकि उन्हें मल्टीप्रोसेसर मदरबोर्ड बनाने के लिए महंगे और कठिन की आवश्यकता थी। इसके आधार पर अन्य तरीकों से उत्पादकता में वृद्धि हुई। मल्टीथ्रेडिंग की अवधारणा प्रभावी साबित हुई - कमांड की कई धाराओं का एक साथ प्रसंस्करण।

हाइपर-थ्रेडिंग टेक्नोलॉजी (HTT) या सुपरथ्रेडिंग तकनीक जो एक प्रोसेसर को एक ही कोर पर कई प्रोग्राम थ्रेड चलाने की अनुमति देती है। कई विशेषज्ञों के अनुसार, यह एचटीटी था, जो मल्टी-कोर प्रोसेसर के निर्माण के लिए एक शर्त बन गया। एक ही समय में कई प्रोग्राम थ्रेड्स के प्रोसेसर द्वारा निष्पादन को थ्रेड-लेवल पैरेललिज़्म (टीएलपी-थ्रेड-लेवल पैरेललिज़्म) कहा जाता है।

मल्टी-कोर प्रोसेसर की क्षमता को अनलॉक करने के लिए, निष्पादन योग्य प्रोग्राम को सभी कंप्यूटिंग कोर का उपयोग करना चाहिए, जो हमेशा प्राप्त करने योग्य नहीं होता है। पुराने सीरियल प्रोग्राम जो केवल एक कोर का उपयोग कर सकते थे, अब नई पीढ़ी के प्रोसेसर पर तेजी से नहीं चलेंगे, इसलिए प्रोग्रामर नए माइक्रोप्रोसेसरों के विकास में तेजी से शामिल हो रहे हैं।

1. सामान्य अवधारणाएं

व्यापक अर्थों में वास्तुकला कई तत्वों से युक्त एक जटिल प्रणाली का वर्णन है।

विकास की प्रक्रिया में, अर्धचालक संरचनाएं (माइक्रोकिरिट्स) विकसित होती हैं, इसलिए, प्रोसेसर के निर्माण के सिद्धांत, उनकी संरचना में शामिल तत्वों की संख्या, उनकी बातचीत कैसे व्यवस्थित होती है, लगातार बदल रहे हैं। इस प्रकार, संरचना के समान मूल सिद्धांतों वाले CPU को आमतौर पर समान आर्किटेक्चर के प्रोसेसर कहा जाता है। और इन सिद्धांतों को स्वयं प्रोसेसर आर्किटेक्चर (या माइक्रोआर्किटेक्चर) कहा जाता है।

माइक्रोप्रोसेसर (या प्रोसेसर) कंप्यूटर का मुख्य घटक है। यह सूचना को संसाधित करता है, प्रोग्राम निष्पादित करता है, और सिस्टम में अन्य उपकरणों को नियंत्रित करता है। प्रोसेसर की शक्ति निर्धारित करती है कि प्रोग्राम कितनी तेजी से चलेंगे।

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

आईबीएम-संगत पीसी में उपयोग किए जाने वाले इंटेल प्रोसेसर में एक हजार से अधिक निर्देश होते हैं और एक विस्तारित निर्देश सेट वाले प्रोसेसर से संबंधित होते हैं - सीआईएससी-प्रोसेसर (सीआईएससी - कॉम्प्लेक्स इंस्ट्रक्शन सेट कंप्यूटिंग)।

1.1 उच्च प्रदर्शन कंप्यूटिंग। समानता

कंप्यूटर प्रौद्योगिकी के विकास की गति का अनुसरण करना आसान है: ENIAC (पहला इलेक्ट्रॉनिक .) से डिजिटल कम्प्यूटरसामान्य प्रयोजन) तियान्हे-2 सुपरकंप्यूटर (प्रति सेकंड 1000 ट्रिलियन फ्लोटिंग पॉइंट ऑपरेशन) के लिए प्रति सेकंड कई हजार संचालन के प्रदर्शन के साथ। इसका मतलब है कि कंप्यूटिंग की गति 60 वर्षों में एक ट्रिलियन गुना बढ़ गई है। उच्च-प्रदर्शन कंप्यूटिंग सिस्टम का निर्माण सबसे कठिन वैज्ञानिक और तकनीकी कार्यों में से एक है। जबकि कम्प्यूटेशनल गति तकनीकी साधनकेवल कुछ मिलियन गुना वृद्धि हुई है, कंप्यूटिंग की समग्र गति एक ट्रिलियन गुना बढ़ी है। यह प्रभाव कंप्यूटिंग के सभी चरणों में समांतरता के उपयोग के माध्यम से प्राप्त किया जाता है। समानांतर कंप्यूटिंग के लिए स्मृति के तर्कसंगत वितरण, सूचना हस्तांतरण के विश्वसनीय तरीकों और कम्प्यूटेशनल प्रक्रियाओं के समन्वय की खोज की आवश्यकता होती है।

1.2 सममित मल्टीप्रोसेसिंग

सममित मल्टीप्रोसेसिंग (संक्षिप्त एसएमपी) या सममित मल्टीप्रोसेसिंग मल्टीप्रोसेसर सिस्टम का एक विशेष आर्किटेक्चर है जिसमें कई प्रोसेसर की एक सामान्य मेमोरी तक पहुंच होती है। यह एक बहुत ही सामान्य वास्तुकला है, जो हाल के दिनों में व्यापक रूप से उपयोग की जाती है।

एसएमपी का उपयोग करते समय, कई प्रोसेसर एक साथ कंप्यूटर में काम करते हैं, प्रत्येक अपने स्वयं के कार्य पर। एक उच्च गुणवत्ता वाले ऑपरेटिंग सिस्टम के साथ एक एसएमपी सिस्टम प्रोसेसर के बीच कार्यों को तर्कसंगत रूप से वितरित करता है, उनमें से प्रत्येक पर एक समान लोड सुनिश्चित करता है। हालांकि, मेमोरी रिवर्सल के साथ एक समस्या है, क्योंकि यहां तक ​​कि यूनिप्रोसेसर सिस्टम को भी अपेक्षाकृत की आवश्यकता होती है बड़ा समय. इस प्रकार, एसएमपी में रैम तक पहुंच क्रमिक रूप से होती है: पहला एक प्रोसेसर, फिर दूसरा।

उपरोक्त विशेषताओं के कारण, एसएमपी सिस्टम का उपयोग विशेष रूप से वैज्ञानिक क्षेत्र, उद्योग, व्यवसाय में किया जाता है, कार्य कार्यालयों में बहुत ही कम होता है। हार्डवेयर कार्यान्वयन की उच्च लागत के अलावा, ऐसी प्रणालियों के लिए बहुत महंगे और उच्च गुणवत्ता वाले सॉफ़्टवेयर की आवश्यकता होती है जो कार्यों के बहु-थ्रेडेड निष्पादन प्रदान करते हैं। साधारण कार्यक्रम (खेल, पाठ संपादक) एसएमपी सिस्टम में प्रभावी ढंग से काम नहीं करेंगे, क्योंकि वे समानता की इस डिग्री प्रदान नहीं करते हैं। यदि आप किसी एसएमपी सिस्टम के लिए किसी प्रोग्राम को अनुकूलित करते हैं, तो यह सिंगल-प्रोसेसर सिस्टम पर काम करने के लिए बेहद अक्षम हो जाएगा, जिससे विभिन्न सिस्टमों के लिए एक ही प्रोग्राम के कई संस्करण बनाने की आवश्यकता होती है। अपवाद है, उदाहरण के लिए, एबलेटन लाइव प्रोग्राम (संगीत बनाने और डीजे-सेट तैयार करने के लिए डिज़ाइन किया गया), जिसमें मल्टीप्रोसेसर सिस्टम के लिए समर्थन है। अगर भागो नियमित कार्यक्रमएक मल्टीप्रोसेसर सिस्टम पर, यह अभी भी एक प्रोसेसर की तुलना में थोड़ा तेज चलेगा। यह तथाकथित हार्डवेयर इंटरप्ट (कर्नेल द्वारा प्रसंस्करण के लिए कार्यक्रम को रोकना) के कारण है, जिसे किसी अन्य मुफ्त प्रोसेसर पर निष्पादित किया जाता है।

एक एसएमपी सिस्टम (समानांतर कंप्यूटिंग पर आधारित किसी भी अन्य सिस्टम की तरह) मेमोरी बस बैंडविड्थ जैसे मेमोरी पैरामीटर पर बढ़ी हुई आवश्यकताओं को लागू करता है। यह अक्सर एक सिस्टम में प्रोसेसर की संख्या को सीमित करता है (आधुनिक एसएमपी सिस्टम 16 प्रोसेसर तक प्रभावी ढंग से काम करता है)।

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

यदि कोई डेटा परिवर्तन सूचनाओं का उपयोग नहीं किया जाता है, तो एक त्रुटि होगी। कैश कोहेरेंसी को ऐसे संघर्षों को हल करने और कैश में डेटा की स्थिरता बनाए रखने के लिए डिज़ाइन किया गया है।

एसएमपी सिस्टम फ्लिन (स्टैनफोर्ड यूनिवर्सिटी में प्रोफेसर, पालिन एसोसिएट्स के सह-संस्थापक) के अनुसार एमआईएमडी (मल्टी-इन-स्ट्रक्शन मल्टी डेटा - मल्टीपल इंस्ट्रक्शन स्ट्रीम और मल्टीपल डेटा स्ट्रीम के साथ कंप्यूटिंग सिस्टम) का एक उपसमूह है। इस वर्गीकरण के अनुसार, समानांतर प्रणालियों की लगभग सभी किस्मों को एमआईएमडी के लिए जिम्मेदार ठहराया जा सकता है।

मेमोरी उपयोग के सिद्धांत के अनुसार विभाजन के आधार पर मल्टीप्रोसेसर सिस्टम का प्रकारों में विभाजन होता है। इस दृष्टिकोण ने निम्नलिखित महत्वपूर्ण प्रकारों को अलग करना संभव बना दिया:

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

इन प्रणालियों में शामिल हैं:

  • सिस्टम जहां डेटा का प्रतिनिधित्व करने के लिए केवल व्यक्तिगत प्रोसेसर कैश का उपयोग किया जाता है (कैश-ओनली मेमोरी आर्किटेक्चर)।
  • विभिन्न प्रोसेसरों के लिए स्थानीय कैश सुसंगतता वाले सिस्टम (कैश-सुसंगत NUMA)।
  • प्रावधान के साथ सिस्टम सार्वजनिक अभिगमहार्डवेयर स्तर पर गैर-कैश सुसंगत NUMA के कार्यान्वयन के बिना प्रोसेसर की व्यक्तिगत मेमोरी के लिए।

वितरित साझा मेमोरी का उपयोग करके मल्टीप्रोसेसर सिस्टम बनाने की समस्या का सरलीकरण प्राप्त किया जाता है, लेकिन इस पद्धति से समानांतर प्रोग्रामिंग की जटिलता में उल्लेखनीय वृद्धि होती है।

1.3 एक साथ बहु सूत्रण

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

1.4 मल्टी-कोर

मल्टीथ्रेडिंग तकनीक सॉफ्टवेयर स्तर पर मल्टी-कोर का कार्यान्वयन है। प्रदर्शन में और वृद्धि, हमेशा की तरह, प्रोसेसर के हार्डवेयर में बदलाव की आवश्यकता है। सिस्टम और आर्किटेक्चर की जटिलता हमेशा प्रभावी नहीं होती है। एक विपरीत राय है: "सरल सब कुछ सरल है!"। दरअसल, प्रोसेसर के प्रदर्शन को बढ़ाने के लिए, इसकी घड़ी की आवृत्ति को बढ़ाना, तार्किक और हार्डवेयर घटकों को जटिल करना बिल्कुल भी आवश्यक नहीं है, क्योंकि यह मौजूदा तकनीक को युक्तिसंगत और परिष्कृत करने के लिए पर्याप्त है। यह विधि बहुत लाभदायक है - प्रोसेसर की गर्मी लंपटता को बढ़ाने की समस्या को हल करने की आवश्यकता नहीं है, माइक्रोकिरिट्स के उत्पादन के लिए नए महंगे उपकरण विकसित करना। इस दृष्टिकोण को मल्टी-कोर तकनीक के हिस्से के रूप में लागू किया गया था - एक चिप पर कई कंप्यूटिंग कोर का कार्यान्वयन। यदि आप मूल प्रोसेसर लेते हैं और कई प्रदर्शन संवर्द्धन को लागू करने से प्रदर्शन लाभ की तुलना करते हैं, तो यह स्पष्ट है कि मल्टी-कोर तकनीक सबसे अच्छा विकल्प है।

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

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

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

सचमुच 6-7 साल पहले, मल्टी-कोर प्रोसेसर व्यावहारिक रूप से अनसुने थे। नहीं, एक ही आईबीएम कंपनी के मल्टी-कोर प्रोसेसर पहले मौजूद थे, लेकिन पहले दोहरे कोर प्रोसेसर की उपस्थिति डेस्कटॉप संगणक, केवल 2005 में हुआ था, और इस प्रोसेसर को पेंटियम डी कहा जाता था। साथ ही, 2005 में, AMD का डुअल-कोर Opteron जारी किया गया था, लेकिन सर्वर सिस्टम के लिए।

इस लेख में, हम ऐतिहासिक तथ्यों में विस्तार से नहीं जाएंगे, लेकिन सीपीयू की विशेषताओं में से एक के रूप में आधुनिक मल्टी-कोर प्रोसेसर पर चर्चा करेंगे। और सबसे महत्वपूर्ण बात - हमें यह पता लगाने की जरूरत है कि यह मल्टी-कोर प्रोसेसर के लिए और आपके और मेरे लिए प्रदर्शन के संदर्भ में क्या देता है।

मल्टी-कोर के साथ बेहतर प्रदर्शन

कई कोर के कारण प्रोसेसर के प्रदर्शन को बढ़ाने का सिद्धांत थ्रेड्स के निष्पादन को विभाजित करना है ( विभिन्न कार्य) कई कोर के लिए। संक्षेप में, आपके सिस्टम पर चलने वाली लगभग हर प्रक्रिया में कई थ्रेड होते हैं।

मैं तुरंत एक आरक्षण कर दूंगा कि ऑपरेटिंग सिस्टम वस्तुतः अपने लिए कई थ्रेड बना सकता है और यह सब एक ही समय में कर सकता है, भले ही प्रोसेसर भौतिक रूप से सिंगल-कोर हो। यह सिद्धांत समान विंडोज मल्टीटास्किंग को लागू करता है (उदाहरण के लिए, एक ही समय में संगीत सुनना और टाइप करना)।


आइए उदाहरण के लिए लेते हैं एंटीवायरस प्रोग्राम. हमारे पास कंप्यूटर को स्कैन करने वाला एक थ्रेड होगा, दूसरा - एंटी-वायरस डेटाबेस को अपडेट करना (सामान्य अवधारणा को समझने के लिए हमने सब कुछ सरल कर दिया है)।

और विचार करें कि दो अलग-अलग मामलों में क्या होगा:

ए) सिंगल कोर प्रोसेसर।चूंकि एक ही समय में दो धागे चल रहे हैं, इसलिए हमें उपयोगकर्ता (नेत्रहीन) के लिए निष्पादन की यह एक साथ बनाने की आवश्यकता है। ऑपरेटिंग सिस्टम मुश्किल करता है:इन दो थ्रेड्स के निष्पादन के बीच एक स्विच होता है (ये स्विच तात्कालिक होते हैं और समय मिलीसेकंड में होता है)। यही है, सिस्टम ने अपडेट को थोड़ा "निष्पादित" किया, फिर अचानक स्कैनिंग पर स्विच किया, फिर अपडेट करने के लिए वापस आ गया। इस प्रकार, आपके और मेरे लिए, ऐसा लगता है कि ये दोनों कार्य एक साथ किए जा रहे हैं। लेकिन क्या खो रहा है? बेशक, प्रदर्शन। तो चलिए दूसरा विकल्प देखते हैं।

b) प्रोसेसर मल्टी-कोर है।पर ये मामलायह स्विच नहीं होगा। सिस्टम स्पष्ट रूप से प्रत्येक थ्रेड को एक अलग कोर पर भेजेगा, जिसके परिणामस्वरूप, हमें थ्रेड से थ्रेड में स्विचिंग से छुटकारा पाने की अनुमति मिलेगी जो प्रदर्शन के लिए हानिकारक है (आइए स्थिति को आदर्श बनाएं)। दो थ्रेड एक साथ चलते हैं, यह मल्टी-कोर और मल्टी-थ्रेडिंग का सिद्धांत है। अंततः, हम सिंगल-कोर प्रोसेसर की तुलना में मल्टी-कोर प्रोसेसर पर स्कैन और अपडेट बहुत तेजी से करेंगे। लेकिन एक पकड़ है - सभी प्रोग्राम मल्टी-कोर का समर्थन नहीं करते हैं। हर कार्यक्रम को इस तरह से अनुकूलित नहीं किया जा सकता है। और सब कुछ उतना ही परिपूर्ण होता है जितना हमने वर्णन किया है। लेकिन हर दिन, डेवलपर्स अधिक से अधिक प्रोग्राम बनाते हैं जिनका कोड मल्टी-कोर प्रोसेसर पर निष्पादन के लिए पूरी तरह से अनुकूलित होता है।

क्या मल्टी-कोर प्रोसेसर आवश्यक हैं? हर रोज तार्किकता

पर प्रोसेसर का विकल्पकंप्यूटर के लिए (अर्थात्, कोर की संख्या के बारे में सोचते समय), किसी को मुख्य प्रकार के कार्यों को निर्धारित करना चाहिए जो वह करेगा।

कंप्यूटर हार्डवेयर के क्षेत्र में ज्ञान में सुधार करने के लिए, आप इसके बारे में सामग्री पढ़ सकते हैं प्रोसेसर सॉकेट .

शुरुआती बिंदु को डुअल-कोर प्रोसेसर कहा जा सकता है, क्योंकि सिंगल-कोर समाधानों पर लौटने का कोई मतलब नहीं है। लेकिन डुअल-कोर प्रोसेसर अलग हैं। यह "सबसे" ताज़ा सेलेरॉन नहीं हो सकता है, या यह आइवी ब्रिज पर एक कोर i3 हो सकता है, जैसे AMD - Sempron या Phenom II। स्वाभाविक रूप से, अन्य संकेतकों के कारण, उनका प्रदर्शन बहुत अलग होगा, इसलिए आपको सब कुछ व्यापक रूप से देखने और दूसरों के साथ मल्टी-कोर की तुलना करने की आवश्यकता है। प्रोसेसर विशेषताएं.

उदाहरण के लिए, आइवी ब्रिज पर कोर i3 में हाइपर-ट्रेडिंग तकनीक है, जो आपको एक साथ 4 थ्रेड्स को संसाधित करने की अनुमति देती है (ऑपरेटिंग सिस्टम 2 भौतिक के बजाय 4 तार्किक कोर देखता है)। और वही सेलेरॉन इस तरह का घमंड नहीं करता है।

लेकिन आइए आवश्यक कार्यों पर सीधे विचार करें। ऑफिस के काम और इंटरनेट पर सर्फिंग के लिए अगर कंप्यूटर की जरूरत है तो उसके लिए एक ड्यूल-कोर प्रोसेसर काफी है।

जब गेमिंग प्रदर्शन की बात आती है, तो आपको अधिकांश खेलों में आराम से रहने के लिए 4 कोर या अधिक की आवश्यकता होती है। लेकिन यहां बहुत कुछ सामने आता है: सभी खेलों में 4-कोर प्रोसेसर के लिए अनुकूलित कोड नहीं होता है, और यदि वे अनुकूलित हैं, तो यह उतना कुशल नहीं है जितना हम चाहेंगे। लेकिन, सिद्धांत रूप में, खेलों के लिए अब इष्टतम समाधान ठीक 4 वां कोर प्रोसेसर है।


आज, वही 8-कोर एएमडी प्रोसेसर गेम के लिए बेमानी हैं, यह कोर की संख्या है जो बेमानी है, लेकिन प्रदर्शन बराबर नहीं है, लेकिन उनके पास अन्य फायदे हैं। ये वही 8 कोर उन कार्यों में बहुत मदद करेंगे जहां उच्च गुणवत्ता वाले बहु-थ्रेडेड लोड के साथ शक्तिशाली काम की आवश्यकता होती है। इसमें शामिल है, उदाहरण के लिए, वीडियो का प्रतिपादन (गणना), या सर्वर कंप्यूटिंग। इसलिए, ऐसे कार्यों के लिए 6, 8 या अधिक कोर की आवश्यकता होती है। हां, और जल्द ही गेम उच्च-गुणवत्ता वाले 8 और . को लोड करने में सक्षम होंगे अधिक कोर, इसलिए भविष्य में, सब कुछ बहुत गुलाबी है।

यह मत भूलो कि अभी भी बहुत सारे कार्य हैं जो सिंगल-थ्रेडेड लोड बनाते हैं। और आपको अपने आप से यह प्रश्न पूछना चाहिए: क्या मुझे इस 8-कोर की आवश्यकता है या नहीं?

संक्षेप में, मैं एक बार फिर ध्यान देना चाहूंगा कि मल्टी-कोर के फायदे "भारी" कम्प्यूटेशनल मल्टी-थ्रेडेड काम के दौरान प्रकट होते हैं। और यदि आप अत्यधिक आवश्यकताओं के साथ गेम नहीं खेलते हैं और विशिष्ट प्रकार के काम नहीं करते हैं जिसके लिए अच्छी कंप्यूटिंग शक्ति की आवश्यकता होती है, तो महंगे मल्टी-कोर प्रोसेसर पर पैसा खर्च करने का कोई मतलब नहीं है (

मल्टीथ्रेडिंग के सिद्धांत से निपटने के बाद, आइए एक व्यावहारिक उदाहरण पर विचार करें - पेंटियम 4। पहले से ही इस प्रोसेसर के विकास के चरण में, इंटेल इंजीनियरों ने बिना बदलाव किए इसके प्रदर्शन को बढ़ाने पर काम करना जारी रखा। सॉफ्टवेयर इंटरफ़ेस. पांच सरल तरीकों पर विचार किया गया:

घड़ी की आवृत्ति बढ़ाना;

एक चिप पर दो प्रोसेसर लगाना;

नए कार्यात्मक ब्लॉकों का परिचय;

कन्वेयर विस्तार;

मल्टीथ्रेडिंग का उपयोग करना।

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

दूसरी विधि - एक चिप पर दो प्रोसेसर रखना - अपेक्षाकृत सरल है, लेकिन इसमें चिप के कब्जे वाले क्षेत्र को दोगुना करना शामिल है। यदि प्रत्येक प्रोसेसर को अपनी कैश मेमोरी प्रदान की जाती है, तो प्रति वेफर चिप्स की संख्या आधी हो जाती है, लेकिन इसका मतलब उत्पादन की लागत से दोगुना भी है। यदि दोनों प्रोसेसर में साझा कैश मेमोरी है, तो कब्जे वाले स्थान में उल्लेखनीय वृद्धि से बचा जा सकता है, लेकिन इस मामले में एक और समस्या उत्पन्न होती है - प्रति प्रोसेसर कैश मेमोरी की मात्रा आधी हो जाती है, और यह अनिवार्य रूप से प्रदर्शन को प्रभावित करता है। इसके अलावा, जबकि पेशेवर सर्वर एप्लिकेशन कई प्रोसेसर के संसाधनों का पूरा लाभ उठा सकते हैं, पारंपरिक डेस्कटॉप प्रोग्रामआंतरिक समानता बहुत कम हद तक विकसित होती है।

नए कार्यात्मक ब्लॉकों की शुरूआत भी मुश्किल नहीं है, लेकिन यहां संतुलन बनाना महत्वपूर्ण है। एक दर्जन ALU का क्या मतलब है यदि चिप पाइपलाइन को उस दर पर आदेश जारी नहीं कर सकती है जो उन सभी ब्लॉकों को लोड कर सकती है?

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

अंत में, आप मल्टीथ्रेडिंग लागू कर सकते हैं। इस तकनीक का लाभ एक अतिरिक्त की शुरूआत है कार्यक्रम प्रवाह, आपको उन हार्डवेयर संसाधनों का उपयोग करने की अनुमति देता है जो अन्यथा निष्क्रिय हो जाएंगे। प्रयोगात्मक अध्ययनों के परिणामों के आधार पर, इंटेल डेवलपर्स ने पाया कि कई अनुप्रयोगों के लिए मल्टीथ्रेडिंग को लागू करते समय चिप क्षेत्र में 5% की वृद्धि 25% की प्रदर्शन वृद्धि देती है। ज़ीऑन 2002 में मल्टीथ्रेडिंग का समर्थन करने वाला पहला इंटेल प्रोसेसर था। इसके बाद, 3.06 गीगाहर्ट्ज़ से शुरू होकर, मल्टीथ्रेडिंग को पेंटियम 4 लाइन में पेश किया गया। इंटेल पेंटियम 4 हाइपरथ्रेडिंग में मल्टीथ्रेडिंग के कार्यान्वयन को बुलाता है।

* हमेशा सामयिक मुद्दे, प्रोसेसर चुनते समय आपको क्या ध्यान देना चाहिए, ताकि गलती न हो।

इस लेख में हमारा लक्ष्य उन सभी कारकों का वर्णन करना है जो प्रोसेसर के प्रदर्शन और अन्य प्रदर्शन विशेषताओं को प्रभावित करते हैं।

यह शायद किसी के लिए रहस्य नहीं है कि प्रोसेसर कंप्यूटर की मुख्य कंप्यूटिंग इकाई है। आप यह भी कह सकते हैं - कंप्यूटर का सबसे महत्वपूर्ण हिस्सा।

यह वह है जो कंप्यूटर में होने वाली लगभग सभी प्रक्रियाओं और कार्यों को संभालता है।

चाहे वह वीडियो देखना हो, संगीत हो, इंटरनेट पर सर्फिंग करना हो, मेमोरी में लिखना और पढ़ना हो, 3डी और वीडियो को प्रोसेस करना हो, गेम हो। और भी कई।

इसलिए, चुनने के लिए सीकेंद्रीय पीप्रोसेसर, बहुत सावधानी से व्यवहार किया जाना चाहिए। यह पता चल सकता है कि आप एक शक्तिशाली वीडियो कार्ड और एक प्रोसेसर स्थापित करने का निर्णय लेते हैं जो इसके स्तर के अनुरूप नहीं है। इस मामले में, प्रोसेसर वीडियो कार्ड की क्षमता को प्रकट नहीं करेगा, जो इसके काम को धीमा कर देगा। प्रोसेसर पूरी तरह से लोड हो जाएगा और सचमुच उबाल जाएगा, और वीडियो कार्ड अपनी बारी की प्रतीक्षा करेगा, इसकी क्षमताओं के 60-70% पर काम करेगा।

इसीलिए, संतुलित कंप्यूटर चुनते समय, नहींलागत प्रोसेसर की उपेक्षा करेंएक शक्तिशाली वीडियो कार्ड के पक्ष में। वीडियो कार्ड की क्षमता को अनलॉक करने के लिए प्रोसेसर की शक्ति पर्याप्त होनी चाहिए, अन्यथा यह सिर्फ पैसा फेंका जाता है।

इंटेल बनाम। एएमडी

*हमेशा के लिए पीछा करें

निगम इंटेल, विशाल है मानव संसाधनों द्वारा, और लगभग अटूट वित्त। सेमीकंडक्टर उद्योग में कई नवाचार और नई प्रौद्योगिकियां इसी कंपनी से आती हैं। प्रोसेसर और विकास इंटेल, औसतन के लिए 1-1,5 इंजीनियरों के विकास के वर्षों आगे एएमडी. लेकिन जैसा कि आप जानते हैं, आपको सबसे आधुनिक तकनीकों के अवसर के लिए भुगतान करना होगा।

प्रोसेसर मूल्य निर्धारण नीति इंटेल, पर आधारित है कोर की संख्या, कैश राशि, लेकिन यह भी पर वास्तुकला की "ताजगी", प्रति घड़ी प्रदर्शनवाट,चिप प्रक्रिया प्रौद्योगिकी. कैश मेमोरी का मूल्य, "तकनीकी प्रक्रिया की सूक्ष्मता" और प्रोसेसर की अन्य महत्वपूर्ण विशेषताओं पर नीचे विचार किया जाएगा। फ्री फ़्रीक्वेंसी मल्टीप्लायर जैसी तकनीकों को रखने के लिए, आपको अतिरिक्त राशि का भुगतान भी करना होगा।

कंपनी एएमडी, कंपनी के विपरीत इंटेल, अंतिम उपभोक्ता के लिए अपने प्रोसेसर की उपलब्धता और एक सक्षम मूल्य नीति के लिए प्रयास करता है।

कोई यह भी कह सकता है कि एएमडी– « लोगों की मुहर". इसके प्राइस टैग्स में आपको वह मिलेगा जो आपको बेहद आकर्षक कीमत पर चाहिए। आमतौर पर एक नई तकनीक की शुरुआत के एक साल बाद, कंपनी इंटेल, से प्रौद्योगिकी का एक एनालॉग एएमडी. यदि आप उच्चतम प्रदर्शन का पीछा नहीं कर रहे हैं और उन्नत तकनीकों की उपस्थिति की तुलना में मूल्य टैग पर अधिक ध्यान देते हैं, तो कंपनी के उत्पाद एएमडी- सिर्फ तुम्हारे लिए।

मूल्य नीति एएमडी, कोर की संख्या पर अधिक और कैश मेमोरी की मात्रा पर बहुत कम, वास्तु सुधार की उपस्थिति पर आधारित है। कुछ मामलों में, तीसरे स्तर की कैश मेमोरी रखने के अवसर के लिए, आपको थोड़ा अतिरिक्त भुगतान करना होगा ( Phenomकैश मेमोरी स्तर 3 है, Athlonकेवल सीमित, 2 स्तरों वाली सामग्री)। लेकिन कभी - कभी एएमडीअपने प्रशंसकों को खराब करता है अनलॉक करने की क्षमताअधिक महंगे वाले के लिए सस्ता प्रोसेसर। आप कोर या कैशे मेमोरी को अनलॉक कर सकते हैं। सुधार करना Athlonइससे पहले Phenom. मॉड्यूलर आर्किटेक्चर और कुछ सस्ते मॉडल की कमी के कारण यह संभव है। एएमडीबस कुछ अधिक महंगे ऑन-चिप ब्लॉक (सॉफ़्टवेयर द्वारा) अक्षम करता है।

नाभिक- व्यावहारिक रूप से अपरिवर्तित रहते हैं, केवल उनकी संख्या भिन्न होती है (प्रोसेसर के लिए मान्य .) 2006-2011 वर्षों)। अपने प्रोसेसर की मॉड्युलैरिटी के कारण, कंपनी अस्वीकृत चिप्स को बेचने का एक उत्कृष्ट काम करती है, जो कि जब कुछ ब्लॉक बंद हो जाते हैं, तो कम उत्पादक लाइन से प्रोसेसर बन जाते हैं।

कंपनी कोड नेम के तहत कई सालों से पूरी तरह से नए आर्किटेक्चर पर काम कर रही है बुलडोज़र, लेकिन रिलीज के समय 2011 साल, नए प्रोसेसर ने सर्वश्रेष्ठ प्रदर्शन नहीं दिखाया। एएमडीऑपरेटिंग सिस्टम पर पाप किया है कि वे दोहरे कोर और "अन्य मल्टीथ्रेडिंग" की वास्तुशिल्प विशेषताओं को नहीं समझते हैं।

कंपनी के प्रतिनिधियों के अनुसार, आपको इन प्रोसेसर के पूर्ण प्रदर्शन को महसूस करने के लिए विशेष सुधार और पैच की प्रतीक्षा करनी चाहिए। हालाँकि, शुरुआत में 2012 वर्ष, कंपनी के प्रतिनिधियों ने वास्तुकला का समर्थन करने के लिए एक अद्यतन जारी करना स्थगित कर दिया बुलडोज़रवर्ष की दूसरी छमाही के लिए।

प्रोसेसर आवृत्ति, कोर की संख्या, मल्टीथ्रेडिंग।

कभी कभी पेंटियम 4और उसके सामने सीपीयू आवृत्ति, प्रोसेसर चुनते समय मुख्य प्रोसेसर प्रदर्शन कारक था।

यह आश्चर्य की बात नहीं है, क्योंकि प्रोसेसर आर्किटेक्चर को विशेष रूप से उच्च आवृत्तियों को प्राप्त करने के लिए डिज़ाइन किया गया था, यह विशेष रूप से प्रोसेसर में परिलक्षित होता था पेंटियम 4वास्तुकला पर नेटबर्स्ट. वास्तुकला में उपयोग की जाने वाली लंबी पाइपलाइन के साथ उच्च आवृत्ति प्रभावी नहीं थी। और भी एथलॉन एक्सपीआवृत्ति 2 है GHZ, प्रदर्शन के मामले में से अधिक था पेंटियम 4सी 2.4GHz. तो यह बात थी शुद्ध जलविपणन। इस त्रुटि के बाद, कंपनी इंटेलमुझे अपनी गलतियों का एहसास हुआ और अच्छे पक्ष में वापसमैंने आवृत्ति घटक पर नहीं, बल्कि प्रति घड़ी प्रदर्शन पर काम करना शुरू किया। वास्तुकला से नेटबर्स्टमना करना पड़ा।

क्याहम मल्टी-कोर देता है?

क्वाड कोर संसाधक 2.4 गीगाहर्ट्ज, बहु-थ्रेडेड अनुप्रयोगों में, सैद्धांतिक रूप से की आवृत्ति वाले सिंगल-कोर प्रोसेसर के लगभग बराबर होगा 9.6GHzया आवृत्ति के साथ 2-कोर प्रोसेसर 4.8 GHz. लेकिन बस इतना ही सिद्धांत रूप में. वास्तव मेंदूसरी ओर, दो सॉकेट मदरबोर्ड में दो दोहरे कोर प्रोसेसर एक ही ऑपरेटिंग आवृत्ति पर एक 4-कोर प्रोसेसर से तेज होंगे। बस की गति सीमा और स्मृति विलंबता स्वयं को महसूस कराती है।

* समान आर्किटेक्चर और कैश मेमोरी की मात्रा के अधीन

मल्टी-कोर, भागों में निर्देशों और गणनाओं को निष्पादित करना संभव बनाता है। उदाहरण के लिए, आपको तीन अंकगणितीय संचालन करने की आवश्यकता है। पहले दो को प्रत्येक प्रोसेसर कोर पर निष्पादित किया जाता है और परिणाम कैश मेमोरी में जोड़े जाते हैं, जहां अगली क्रिया उनके साथ किसी भी मुक्त कोर द्वारा की जा सकती है। सिस्टम बहुत लचीला है, लेकिन उचित अनुकूलन के बिना यह काम नहीं कर सकता है। इसलिए, OS वातावरण में प्रोसेसर के आर्किटेक्चर के लिए मल्टी-कोर का अनुकूलन बहुत महत्वपूर्ण है।

ऐप्स जो "प्यार" और उपयोगबहु सूत्रण: संग्रहकर्ता, वीडियो प्लेयर और एन्कोडर, antiviruses, डीफ़्रेग्मेंटर प्रोग्राम, ग्राफिक संपादक, ब्राउज़रों, चमक.

साथ ही, मल्टीथ्रेडिंग के "प्रशंसकों" में ऐसे ऑपरेटिंग सिस्टम शामिल हैं: विंडोज 7तथा विंडोज विस्टा, उतने कि जितने अधिक ओएस, कर्नेल के आधार पर लिनक्स, जो एक मल्टी-कोर प्रोसेसर के साथ काफी तेजी से चलते हैं।

अधिकांश खेल, कभी-कभी उच्च आवृत्ति पर 2-कोर प्रोसेसर काफी होता है। अब, हालांकि, सब कुछ सामने आता है और खेलमल्टीथ्रेडिंग के लिए "तेज"। कम से कम ये लो सैंडबॉक्सजैसे खेल जीटीए 4या प्रोटोटाइप, जिसमें नीचे की आवृत्ति के साथ 2-कोर प्रोसेसर पर 2.6 गीगाहर्ट्ज़- आप सहज महसूस नहीं करते हैं, फ्रेम दर 30 फ्रेम प्रति सेकंड से कम हो जाती है। हालांकि इस मामले में, इस तरह की घटनाओं का सबसे अधिक कारण खेलों का "कमजोर" अनुकूलन, समय की कमी या उन लोगों के "प्रत्यक्ष नहीं" हाथ हैं जिन्होंने गेम को कंसोल से स्थानांतरित किया है। पीसी.

खेलों के लिए नया प्रोसेसर खरीदते समय, अब आपको 4 या अधिक कोर वाले प्रोसेसर पर ध्यान देना चाहिए। लेकिन फिर भी, "ऊपरी श्रेणी" से 2-कोर प्रोसेसर की उपेक्षा न करें। कुछ खेलों में, ये प्रोसेसर कभी-कभी कुछ मल्टी-कोर वाले से बेहतर महसूस करते हैं।

प्रोसेसर कैश।

- यह प्रोसेसर चिप का एक समर्पित क्षेत्र है, जिसमें इंटरमीडिएट डेटा को प्रोसेसर कोर, रैम और अन्य बसों के बीच संसाधित और संग्रहीत किया जाता है।

यह बहुत उच्च घड़ी की गति से चलता है (आमतौर पर प्रोसेसर की आवृत्ति पर), इसमें बहुत अधिक बैंडविड्थ होती है, और प्रोसेसर कोर इसके साथ सीधे काम करते हैं ( एल1).

उसकी वजह से कमी, प्रोसेसर समय लेने वाले कार्यों में निष्क्रिय हो सकता है, कैश में नए डेटा के संसाधित होने की प्रतीक्षा कर रहा है। साथ ही कैश मेमोरी के लिए कार्य करता हैबार-बार दोहराए जाने वाले डेटा के रिकॉर्ड जिन्हें अनावश्यक गणना के बिना आवश्यक होने पर जल्दी से बहाल किया जा सकता है, बिना प्रोसेसर को फिर से उन पर समय बिताने के लिए मजबूर किए।

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

इस तकनीक का अब उपयोग किया जाता है स्तर 3 कैश. प्रोसेसर के लिए इंटेलसंयुक्त स्तर 2 कैश वाले प्रोसेसर थे ( सी2डी ई 7***,ई8***), जिसकी बदौलत यह तरीका मल्टीथ्रेडेड परफॉर्मेंस को बढ़ाता हुआ दिखाई दिया।

प्रोसेसर को ओवरक्लॉक करते समय, कैश मेमोरी एक कमजोर बिंदु बन सकती है, जिससे प्रोसेसर को बिना किसी त्रुटि के अधिकतम ऑपरेटिंग आवृत्ति से अधिक ओवरक्लॉक करने से रोका जा सकता है। हालांकि, इसका फायदा यह है कि यह ओवरक्लॉक्ड प्रोसेसर की तरह ही फ्रीक्वेंसी पर चलेगा।

सामान्य तौर पर, कैश मेमोरी जितनी बड़ी होती है, और तेजसी पी यू। किन अनुप्रयोगों में?

सभी अनुप्रयोगों में जहां बहुत सारे फ्लोटिंग पॉइंट डेटा, निर्देश और थ्रेड्स का उपयोग किया जाता है, कैश मेमोरी का सक्रिय रूप से उपयोग किया जाता है। कैश मेमोरी बहुत लोकप्रिय है संग्रहकर्ता, वीडियो एन्कोडर, antivirusesतथा ग्राफिक संपादकआदि।

के अनुकूल एक बड़ी संख्या मेंकैश हैं खेल. विशेष रूप से रणनीतियों, ऑटो-सिम, आरपीजी, सैंडबॉक्स और सभी गेम जहां बहुत सारे छोटे विवरण, कण, ज्यामिति तत्व, सूचना प्रवाह और भौतिक प्रभाव होते हैं।

कैश मेमोरी 2 या अधिक वीडियो कार्ड वाले सिस्टम की क्षमता को अनलॉक करने में बहुत महत्वपूर्ण भूमिका निभाती है। आखिरकार, लोड का कुछ हिस्सा आपस में और कई वीडियो चिप्स की धाराओं के साथ काम करने के लिए प्रोसेसर कोर की बातचीत पर पड़ता है। यह इस मामले में है कि कैश मेमोरी का संगठन महत्वपूर्ण है, और बड़े वॉल्यूम के तीसरे स्तर की कैश मेमोरी बहुत उपयोगी है।

कैश मेमोरी हमेशा संभावित त्रुटियों से सुरक्षा से लैस होती है ( ईसीसी), जिसका पता चलने पर, उन्हें सही किया जाता है। यह बहुत महत्वपूर्ण है, क्योंकि कैश मेमोरी में एक छोटी सी त्रुटि, प्रसंस्करण के दौरान, एक विशाल, निरंतर त्रुटि में बदल सकती है, जिससे पूरा सिस्टम "लेट" हो जाएगा।

कॉर्पोरेट प्रौद्योगिकियां।

(हाइपर थ्रेडिंग, हिंदुस्तान टाइम्स)–

पहली बार प्रौद्योगिकी को प्रोसेसर में लागू किया गया था पेंटियम 4, लेकिन यह हमेशा सही ढंग से काम नहीं करता था और अक्सर इसे तेज करने से अधिक प्रोसेसर को धीमा कर देता था। इसका कारण बहुत लंबी पाइपलाइन और अधूरी शाखा भविष्यवाणी प्रणाली थी। कंपनी द्वारा लागू इंटेल, अभी तक तकनीक का कोई एनालॉग नहीं है, अगर एक एनालॉग नहीं माना जाता है तो? कंपनी के इंजीनियरों ने क्या लागू किया एएमडीवास्तुकला में बुलडोज़र.

प्रणाली का सिद्धांत ऐसा है कि प्रत्येक भौतिक कोर के लिए, दो कंप्यूटिंग धागे, एक के बजाय। यानी, अगर आपके पास 4-कोर प्रोसेसर है हिंदुस्तान टाइम्स (कोर मैं 7), तो आपके पास वर्चुअल थ्रेड हैं 8 .

प्रदर्शन लाभ इस तथ्य के कारण प्राप्त किया जाता है कि डेटा पहले से ही इसके बीच में पाइपलाइन में प्रवेश कर सकता है, और जरूरी नहीं कि शुरुआत में। यदि इस क्रिया को करने में सक्षम कुछ प्रोसेसर इकाइयाँ निष्क्रिय हैं, तो उन्हें निष्पादित करने के लिए एक कार्य प्राप्त होता है। प्रदर्शन वृद्धि वास्तविक भौतिक कोर के समान नहीं है, लेकिन तुलनीय (~ 50-75%, आवेदन के प्रकार के आधार पर)। यह काफी दुर्लभ है कि कुछ अनुप्रयोगों में, HT नकारात्मक रूप से प्रभावित करता हैप्रदर्शन पर। यह इस तकनीक के लिए अनुप्रयोगों के खराब अनुकूलन के कारण है, यह समझने में असमर्थता कि "आभासी" धागे हैं और समान रूप से धागे को लोड करने के लिए सीमाओं की कमी है।

टर्बोबढ़ावा - एक बहुत ही उपयोगी तकनीक जो उनके कार्यभार के स्तर के आधार पर सबसे अधिक उपयोग किए जाने वाले प्रोसेसर कोर की आवृत्ति को बढ़ाती है। यह बहुत उपयोगी है जब कोई एप्लिकेशन सभी 4 कोर का उपयोग नहीं कर सकता है, और केवल एक या दो लोड करता है, जबकि उनकी आवृत्ति बढ़ जाती है, जो आंशिक रूप से प्रदर्शन के लिए क्षतिपूर्ति करती है। कंपनी में इस तकनीक का एक एनालॉग एएमडी, तकनीक है टर्बो कोर.

, 3 अभी व!निर्देश. में प्रोसेसर को गति देने के लिए डिज़ाइन किया गया मल्टीमीडियागणना (वीडियो, संगीत, 2 डी / 3 डी ग्राफिक्स, आदि), साथ ही अभिलेखागार, छवियों और वीडियो के साथ काम करने के लिए कार्यक्रम (इन कार्यक्रमों द्वारा निर्देशों के समर्थन के साथ) जैसे कार्यक्रमों के काम में तेजी लाते हैं।

3अभी व! - काफी पुरानी तकनीक एएमडी, जिसमें मल्टीमीडिया सामग्री के प्रसंस्करण के लिए अतिरिक्त निर्देश शामिल हैं एसएसईपहला संस्करण.

* अर्थात्, एकल परिशुद्धता की वास्तविक संख्या की धारा प्रसंस्करण की संभावना।

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

* उदाहरण - एसएसई 4.1 (इंटेल) - एसएसई 4ए (एएमडी)।

इसके अलावा, ये निर्देश सेट समान नहीं हैं। ये एनालॉग हैं, जिनमें थोड़े अंतर हैं।

शांत' शांत, स्पीडस्टेप, कूलकोर, बढ़ी आधा राज्य (सी1ई) तथाटी. डी.

ये प्रौद्योगिकियां, कम लोड पर, गुणक और कोर वोल्टेज को कम करके, कैश के हिस्से को अक्षम करके, प्रोसेसर की आवृत्ति को कम करती हैं। यह प्रोसेसर को बहुत कम गर्म करने और कम ऊर्जा की खपत करने, कम शोर करने की अनुमति देता है। यदि शक्ति की आवश्यकता है, तो प्रोसेसर एक सेकंड के विभाजन में अपनी सामान्य स्थिति में वापस आ जाएगा। मानक सेटिंग्स पर बायोसलगभग हमेशा सक्षम, यदि वांछित है, तो उन्हें 3D गेम में स्विच करते समय संभावित "फ़्रीज़" को कम करने के लिए अक्षम किया जा सकता है।

इनमें से कुछ प्रौद्योगिकियां सिस्टम में प्रशंसकों की गति को नियंत्रित करती हैं। उदाहरण के लिए, यदि प्रोसेसर को बढ़ी हुई गर्मी लंपटता की आवश्यकता नहीं है और लोड के तहत नहीं है, तो प्रोसेसर पंखे की गति कम हो जाती है ( एएमडी कूल'एन'क्विट, इंटेल स्पीड स्टेप).

इंटेल वर्चुअलाइजेशन टेक्नोलॉजीतथा एएमडी वर्चुअलाइजेशन।

ये हार्डवेयर प्रौद्योगिकियां, विशेष कार्यक्रमों की सहायता से, कई ऑपरेटिंग सिस्टमों को एक साथ चलाने की अनुमति देती हैं, बिना किसी महत्वपूर्ण प्रदर्शन के नुकसान के। इसके अलावा, इसका उपयोग . के लिए किया जाता है सही संचालनसर्वर, क्योंकि अक्सर, उनके पास एक से अधिक OS स्थापित होते हैं।

निष्पादित बंद करना काटातथानहीं निष्पादित काटाकंप्यूटर को वायरस के हमलों और सॉफ़्टवेयर बग से बचाने के लिए डिज़ाइन की गई एक तकनीक जो सिस्टम क्रैश का कारण बन सकती है बफ़र अधिकता.

इंटेल 64 , एएमडी 64 , ईएम 64 टी - यह तकनीक प्रोसेसर को 32-बिट आर्किटेक्चर के साथ OS में और 64-बिट आर्किटेक्चर के साथ OS में काम करने की अनुमति देती है। व्यवस्था 64 बिट- फायदों के मामले में औसत यूजर के लिए यह अलग बात है कि इस सिस्टम में 3.25 जीबी से ज्यादा रैम का इस्तेमाल किया जा सकता है। 32 बिट सिस्टम पर, b . का प्रयोग करें के बारे मेंएड्रेसेबल मेमोरी की सीमित मात्रा के कारण अधिक रैम संभव नहीं है* ।

32-बिट आर्किटेक्चर वाले अधिकांश एप्लिकेशन 64-बिट OS वाले सिस्टम पर चलाए जा सकते हैं।

* क्या करें अगर 1985 में, उस समय के मानकों के अनुसार, इतनी विशाल रैम के बारे में कोई सोच भी नहीं सकता था।

इसके अतिरिक्त।

. के बारे में कुछ शब्द

यह बात ध्यान देने योग्य है करीबी ध्यान. तकनीकी प्रक्रिया जितनी पतली होती है, प्रोसेसर उतना ही कम ऊर्जा की खपत करता है और परिणामस्वरूप, यह कम गर्म होता है। और अन्य बातों के अलावा - इसमें ओवरक्लॉकिंग के लिए सुरक्षा का एक उच्च मार्जिन है।

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

प्रोसेसर में बनाया गया है।

यदि आपको एक एकीकृत वीडियो कोर की आवश्यकता नहीं है, तो आपको इसके साथ एक प्रोसेसर नहीं खरीदना चाहिए। आपको केवल बदतर गर्मी अपव्यय, अतिरिक्त गर्मी (हमेशा नहीं), खराब ओवरक्लॉकिंग क्षमता (हमेशा नहीं), और अधिक भुगतान प्राप्त होगा।

इसके अलावा, वे कोर जो प्रोसेसर में बने हैं, केवल ओएस लोड करने, इंटरनेट पर सर्फिंग और वीडियो देखने के लिए उपयुक्त हैं (और फिर भी किसी भी गुणवत्ता के नहीं)।

बाजार के रुझान अभी भी बदल रहे हैं और एक उत्पादक प्रोसेसर खरीदने का अवसर इंटेलवीडियो कोर के बिना, यह कम और कम होता जाता है। अंतर्निहित वीडियो कोर को जबरन थोपने की नीति, प्रोसेसर के साथ दिखाई दी इंटेलकूटनाम सैंडी ब्रिज, जिनमें से मुख्य नवाचार एक ही निर्माण प्रक्रिया पर अंतर्निहित कोर था। वीडियो कोर स्थित है संयुक्त रूप सेप्रोसेसर के साथ एक क्रिस्टल पर, और प्रोसेसर की पिछली पीढ़ियों की तरह सरल नहीं है इंटेल. जो लोग इसका उपयोग नहीं करते हैं, उनके लिए प्रोसेसर के लिए कुछ अधिक भुगतान के रूप में नुकसान हैं, गर्मी वितरण कवर के केंद्र के सापेक्ष हीटिंग स्रोत का विस्थापन। हालाँकि, प्लसस भी हैं। अक्षम वीडियो कोर, प्रौद्योगिकी का उपयोग करके बहुत तेज़ वीडियो एन्कोडिंग के लिए उपयोग किया जा सकता है त्वरित सिंकविशेष सॉफ्टवेयर के साथ मिलकर जो इस तकनीक का समर्थन करता है। भविष्य में, इंटेलसमानांतर कंप्यूटिंग के लिए अंतर्निर्मित वीडियो कोर का उपयोग करने के क्षितिज का विस्तार करने का वादा करता है।

प्रोसेसर के लिए सॉकेट। प्लेटफार्म जीवनकाल.


इंटेलअपने प्लेटफार्मों के लिए एक कठिन नीति का नेतृत्व करता है। प्रत्येक का जीवनकाल (इसके लिए प्रोसेसर की बिक्री की शुरुआत और समाप्ति की तारीख) आमतौर पर 1.5 - 2 वर्ष से अधिक नहीं होती है। इसके अलावा, कंपनी के पास कई समानांतर विकासशील प्लेटफॉर्म हैं।

कंपनी एएमडी, विपरीत संगतता नीति है। उसके मंच के लिए एएम 3, भावी पीढ़ियों के सभी प्रोसेसर जो समर्थन करते हैं डीडीआर3. प्लेटफॉर्म पर जाने पर भी AM3+और बाद में, या तो नए प्रोसेसर के तहत एएम 3, या नए प्रोसेसर पुराने के साथ संगत होंगे motherboards, और केवल प्रोसेसर (मदरबोर्ड, रैम, आदि को बदले बिना) को बदलकर और मदरबोर्ड को फ्लैश करके वॉलेट के लिए दर्द रहित अपग्रेड करना संभव होगा। असंगति की एकमात्र बारीकियां प्रकार बदलते समय हो सकती हैं, क्योंकि प्रोसेसर में निर्मित एक अलग मेमोरी कंट्रोलर की आवश्यकता होगी। इसलिए संगतता सीमित है और सभी मदरबोर्ड द्वारा समर्थित नहीं है। लेकिन सामान्य तौर पर, एक किफायती उपयोगकर्ता के लिए या जो हर 2 साल में प्लेटफॉर्म को पूरी तरह से बदलने के आदी नहीं हैं - प्रोसेसर निर्माता की पसंद समझ में आती है - यह एएमडी.

सीपीयू कूलिंग।

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

निष्कर्ष।

सभी महत्वपूर्ण पहलूप्रोसेसर के प्रदर्शन और प्रदर्शन को प्रभावित करने वाले कारकों पर विचार किया गया है। आइए संक्षेप में बताएं कि किन बातों का ध्यान रखना चाहिए:

  • निर्माता का चयन करें
  • प्रोसेसर आर्किटेक्चर
  • प्रक्रिया प्रौद्योगिकी
  • सीपीयू आवृत्ति
  • प्रोसेसर कोर की संख्या
  • प्रोसेसर कैश आकार और प्रकार
  • प्रौद्योगिकियों और निर्देशों के लिए समर्थन
  • गुणवत्ता ठंडा

हमे आशा हैं दी गई सामग्रीआपकी अपेक्षाओं को पूरा करने वाले प्रोसेसर के चुनाव को समझने और निर्णय लेने में आपकी सहायता करेगा।

शाऊल 9 सितंबर 2015 13:38 बजे

मल्टी-थ्रेडेड गेम इंजन आर्किटेक्चर को लागू करना

  • इंटेल ब्लॉग,
  • खेल का विकास,
  • समानांतर प्रोग्रामिंग,
  • वेबसाइट निर्माणकार्य
  • अनुवाद

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

1 परिचय

1.1. समीक्षा

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

प्रस्तुत सामग्री को समझने के लिए, आपको की अच्छी समझ होनी चाहिए आधुनिक तरीकेकंप्यूटर गेम बनाना, गेम इंजन के लिए मल्टीथ्रेडिंग का समर्थन करना, या सामान्य रूप से अनुप्रयोगों के प्रदर्शन में सुधार करना।

2. समानांतर निष्पादन की स्थिति

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

2.1 रन स्टेट्स

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


चित्र 1. फ्री स्टेपिंग मोड में निष्पादन की स्थिति

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


चित्रा 2. हार्ड स्टेपिंग मोड में निष्पादन की स्थिति

2.2. डेटा सिंक्रनाइज़ेशन

एकाधिक सिस्टम द्वारा साझा किए गए डेटा को संशोधित करने के परिणामस्वरूप परस्पर विरोधी परिवर्तन हो सकते हैं। इस मामले में, संदेश प्रणाली को सही कुल मूल्य चुनने के लिए एक एल्गोरिथ्म प्रदान करने की आवश्यकता है। निम्नलिखित मानदंडों के आधार पर दो मुख्य दृष्टिकोण हैं।
  • समय: अंतिम मूल्य किया गया अंतिम परिवर्तन है।
  • प्राथमिकता: अंतिम मूल्य सर्वोच्च प्राथमिकता के साथ सिस्टम द्वारा किया गया परिवर्तन है। यदि सिस्टम की प्राथमिकता समान है, तो आप परिवर्तनों के समय को भी ध्यान में रख सकते हैं।
सभी अप्रचलित डेटा (किसी भी मानदंड के अनुसार) को केवल अधिलेखित किया जा सकता है या अधिसूचना कतार से बाहर रखा जा सकता है।
चूंकि कुल मूल्य उस क्रम पर निर्भर कर सकता है जिसमें परिवर्तन किए गए हैं, इसलिए कुल डेटा के सापेक्ष मूल्यों का उपयोग करना बहुत मुश्किल हो सकता है। ऐसे मामलों में, आपको उपयोग करना चाहिए सम्पूर्ण मूल्य. फिर, स्थानीय डेटा को अपडेट करते समय, सिस्टम पुराने मानों को नए के साथ बदल सकता है। इष्टतम समाधान के आधार पर निरपेक्ष या सापेक्ष मूल्यों का चयन करना है विशिष्ट स्थिति. उदाहरण के लिए, सामान्य डेटा जैसे स्थिति और अभिविन्यास में पूर्ण मान होना चाहिए क्योंकि जिस क्रम में परिवर्तन किए जाते हैं वह उनके लिए महत्वपूर्ण है। सापेक्ष मूल्यों का उपयोग किया जा सकता है, उदाहरण के लिए, एक कण उत्पादन प्रणाली के लिए, क्योंकि कणों के बारे में सभी जानकारी केवल अपने आप में संग्रहीत होती है।

3. इंजन

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


चित्रा 3. इंजन की सामान्य वास्तुकला

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

इंटरफेस का उपयोग करके इंजन और सिस्टम की बातचीत की जाती है। उन्हें इस तरह से लागू किया जाता है कि इंजन को सिस्टम के कार्यों तक और सिस्टम को इंजन के प्रबंधकों तक पहुंच प्रदान करने के लिए।
इंजन का विस्तृत आरेख परिशिष्ट A, "इंजन आरेख" में दिया गया है।

वास्तव में, सभी प्रणालियाँ एक दूसरे से स्वतंत्र हैं (देखें खंड 2, "समवर्ती निष्पादन स्थिति"), जिसका अर्थ है कि वे अन्य प्रणालियों के संचालन को प्रभावित किए बिना समानांतर में क्रियाओं को निष्पादित कर सकते हैं। हालाँकि, किसी भी डेटा परिवर्तन में कुछ कठिनाइयाँ होंगी, क्योंकि सिस्टम को एक दूसरे के साथ बातचीत करनी होगी। निम्नलिखित मामलों में सिस्टम के बीच सूचना का आदान-प्रदान आवश्यक है:

  • साझा डेटा में बदलाव के बारे में किसी अन्य सिस्टम को सूचित करने के लिए (उदाहरण के लिए, वस्तुओं की स्थिति या अभिविन्यास);
  • उन कार्यों को करने के लिए जो इस प्रणाली के लिए उपलब्ध नहीं हैं (उदाहरण के लिए, एआई सिस्टम रे क्रॉसिंग टेस्ट करने के लिए वस्तु के ज्यामितीय या भौतिक गुणों की गणना के लिए सिस्टम को कॉल करता है)।
पहले मामले में, पिछले अनुभाग में वर्णित राज्य प्रबंधक का उपयोग सूचना के आदान-प्रदान के प्रबंधन के लिए किया जा सकता है। (राज्य प्रबंधक के बारे में अधिक जानकारी के लिए खंड 3.2.2, “राज्य प्रबंधक” देखें।)
दूसरे मामले में, एक विशेष तंत्र को लागू करना आवश्यक है जो आपको एक प्रणाली से दूसरे द्वारा उपयोग के लिए सेवाएं प्रदान करने की अनुमति देगा। इस तंत्र का पूरा विवरण खंड 3.2.3, सेवा प्रबंधक में दिया गया है।

3.1. रूपरेखा

ढांचा इंजन के सभी तत्वों को संयोजित करने का कार्य करता है। यह वह जगह है जहां इंजन को प्रारंभ किया जाता है, प्रबंधकों के अपवाद के साथ, जो विश्व स्तर पर तत्काल होते हैं। यह दृश्य जानकारी भी संग्रहीत करता है। अधिक लचीलापन प्राप्त करने के लिए, दृश्य को एक तथाकथित सार्वभौमिक दृश्य के रूप में लागू किया जाता है, जिसमें सार्वभौमिक वस्तुएं होती हैं। वे कंटेनर हैं जो दृश्य के विभिन्न कार्यात्मक भागों को जोड़ते हैं। विवरण के लिए खंड 3.1.2 देखें।
मुख्य गेम लूप भी ढांचे में लागू किया गया है। योजनाबद्ध रूप से, इसे निम्नानुसार दर्शाया जा सकता है।


चित्र 4. मुख्य खेल लूप

इंजन एक खिड़की वाले वातावरण में चलता है, इसलिए गेम लूप में पहला कदम सभी लंबित ओएस विंडो संदेशों को संसाधित करना है। यदि ऐसा नहीं किया जाता है, तो इंजन OS संदेशों का जवाब नहीं देगा। दूसरे चरण में, शेड्यूलर टास्क मैनेजर का उपयोग करके टास्क असाइन करता है। यह प्रक्रिया नीचे खंड 3.1.1 में विस्तृत है। उसके बाद, राज्य प्रबंधक (खंड 3.2.2 देखें) इंजन सिस्टम में किए गए परिवर्तनों के बारे में जानकारी भेजता है जो इसे प्रभावित कर सकता है। अंतिम चरण में, निष्पादन की स्थिति के आधार पर, ढांचा यह निर्धारित करता है कि इंजन को समाप्त करना है या जारी रखना है, उदाहरण के लिए, अगले दृश्य पर जाने के लिए। पर्यावरण प्रबंधक में इंजन की स्थिति के बारे में जानकारी संग्रहीत की जाती है। विवरण के लिए खंड 3.2.4 देखें।

3.1.1. समयबद्धक
अनुसूचक एक निर्दिष्ट आवृत्ति पर निष्पादन संदर्भ घड़ी उत्पन्न करता है। यदि बेंचमार्किंग मोड के लिए आवश्यक है कि अगला ऑपरेशन पिछले एक के पूरा होने के तुरंत बाद शुरू हो, तो चक्र के अंत की प्रतीक्षा किए बिना, आवृत्ति असीमित हो सकती है।
एक घड़ी संकेत पर, शेड्यूलर, कार्य प्रबंधक की सहायता से, सिस्टम को निष्पादन मोड में डालता है। फ्री स्टेपिंग मोड (धारा 2.1.1) में, शेड्यूलर पोल सिस्टम यह निर्धारित करने के लिए कि किसी कार्य को पूरा करने के लिए उन्हें कितने टिक की आवश्यकता है। पोल के परिणामों के आधार पर, शेड्यूलर यह निर्धारित करता है कि कौन से सिस्टम चलने के लिए तैयार हैं और कौन से विशेष चक्र में काम पूरा करेंगे। यदि किसी सिस्टम को निष्पादित करने के लिए अधिक समय की आवश्यकता होती है, तो अनुसूचक टिक्स की संख्या को बदल सकता है। हार्ड स्टेपिंग मोड (धारा 2.1.2) में, सभी सिस्टम एक ही घड़ी चक्र पर निष्पादन शुरू करते हैं और समाप्त करते हैं, इसलिए शेड्यूलर सभी सिस्टम के निष्पादन को समाप्त करने की प्रतीक्षा करता है।
3.1.2. सार्वभौमिक दृश्य और वस्तुएं
यूनिवर्सल सीन और ऑब्जेक्ट अन्य प्रणालियों में कार्यान्वित कार्यक्षमता के लिए कंटेनर हैं। वे पूरी तरह से इंजन के साथ बातचीत के लिए अभिप्रेत हैं और कोई अन्य कार्य नहीं करते हैं। हालांकि, अन्य प्रणालियों पर उपलब्ध सुविधाओं का लाभ उठाने के लिए उन्हें बढ़ाया जा सकता है। यह कमजोर युग्मन के लिए अनुमति देता है। वास्तव में, सार्वभौमिक दृश्य और वस्तुएं अन्य प्रणालियों के गुणों को उनसे बंधे बिना उपयोग कर सकती हैं। यह वह गुण है जो एक दूसरे पर प्रणालियों की निर्भरता को बाहर करता है और उनके लिए एक साथ काम करना संभव बनाता है।
नीचे दिया गया चित्र सार्वभौमिक दृश्य और वस्तु के विस्तार को दर्शाता है।


चित्रा 5. सार्वभौमिक दृश्य और वस्तु का विस्तार

निम्नलिखित उदाहरण में एक्सटेंशन के सिद्धांत पर विचार करें। मान लीजिए कि एक सार्वभौमिक सार्वभौमिक दृश्य विस्तारित है, दृश्य को ग्राफिकल, भौतिक और अन्य गुणों के उपयोग के लिए विस्तारित किया गया है। इस मामले में, विस्तार का "चित्रमय" हिस्सा प्रदर्शन को शुरू करने के लिए जिम्मेदार होगा, और इसका "भौतिक" हिस्सा गुरुत्वाकर्षण जैसे ठोस पदार्थों के लिए भौतिक कानूनों को लागू करने के लिए जिम्मेदार होगा। दृश्यों में वस्तुएं होती हैं, इसलिए एक सामान्य दृश्य में कई सामान्य वस्तुएं भी शामिल होंगी। ग्राफिकल, भौतिक और अन्य गुणों का उपयोग करने के लिए सामान्य वस्तुओं को भी बढ़ाया जा सकता है। उदाहरण के लिए, स्क्रीन पर किसी ऑब्जेक्ट को खींचना लागू किया जाएगा ग्राफिक कार्यविस्तार, और ठोस पदार्थों की परस्पर क्रिया की गणना - भौतिक।

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

3.2. प्रबंधकों

प्रबंधक इंजन के संचालन का प्रबंधन करते हैं। वे सिंगलटन ऑब्जेक्ट हैं, जिसका अर्थ है कि प्रत्येक प्रबंधक प्रकार का केवल एक उदाहरण है। यह आवश्यक है क्योंकि प्रबंधक संसाधनों के दोहराव से अनिवार्य रूप से अतिरेक होगा और प्रदर्शन पर नकारात्मक प्रभाव पड़ेगा। इसके अलावा, प्रबंधक सभी प्रणालियों के लिए सामान्य कार्यों को लागू करने के लिए जिम्मेदार हैं।
3.2.1. कार्य प्रबंधक
थ्रेड पूल में सिस्टम कार्यों के प्रबंधन के लिए कार्य प्रबंधक जिम्मेदार है। इष्टतम एनएक्स स्केलिंग सुनिश्चित करने के लिए और अनावश्यक थ्रेड्स को असाइन किए जाने से रोकने के लिए, ऑपरेटिंग सिस्टम में ओवरहेड स्विचिंग ओवरहेड को समाप्त करने के लिए, थ्रेड पूल प्रति प्रोसेसर एक थ्रेड बनाता है।

शेड्यूलर कार्य प्रबंधक को निष्पादित करने के लिए कार्यों की एक सूची देता है, साथ ही यह जानकारी भी देता है कि किन कार्यों को पूरा करना है। यह जानकारी प्राप्त करता है विभिन्न प्रणालियाँ. प्रत्येक सिस्टम को निष्पादित करने के लिए केवल एक कार्य मिलता है। इस विधि को कार्यात्मक अपघटन कहा जाता है। हालांकि, डेटा प्रोसेसिंग के लिए, ऐसे प्रत्येक कार्य को मनमाने ढंग से उप-कार्यों (डेटा अपघटन) में विभाजित किया जा सकता है।
क्वाड-कोर सिस्टम के लिए थ्रेड्स के बीच कार्यों के वितरण का एक उदाहरण नीचे दिया गया है।


चित्र 6. कार्य प्रबंधक द्वारा उपयोग किए जाने वाले थ्रेड पूल का उदाहरण

मुख्य कार्यों तक पहुंच के लिए अनुसूचक अनुरोधों को संसाधित करने के अलावा, कार्य प्रबंधक आरंभीकरण मोड में काम कर सकता है। यह क्रमिक रूप से प्रत्येक थ्रेड से सिस्टम को पोल करता है ताकि वे काम के लिए आवश्यक स्थानीय डेटा स्टोर को इनिशियलाइज़ कर सकें।
कार्य प्रबंधक को लागू करने के लिए युक्तियाँ परिशिष्ट डी में दी गई हैं, कार्यों को लागू करने के लिए युक्तियाँ।

3.2.2. राज्य प्रबंधक
राज्य प्रबंधक संदेश तंत्र का हिस्सा है। यह परिवर्तनों को ट्रैक करता है और उनके बारे में उन सभी प्रणालियों को सूचनाएं भेजता है जो इन परिवर्तनों से प्रभावित हो सकते हैं। अनावश्यक सूचनाएं न भेजने के लिए, राज्य प्रबंधक इस बारे में जानकारी संग्रहीत करता है कि किसी विशेष मामले में किस सिस्टम को सूचित करना है। यह तंत्र प्रेक्षक पैटर्न के आधार पर कार्यान्वित किया जाता है (देखें परिशिष्ट सी, प्रेक्षक (डिजाइन पैटर्न))। संक्षेप में, इस पैटर्न में एक "पर्यवेक्षक" का उपयोग शामिल है जो विषय में किसी भी बदलाव को देखता है, जबकि परिवर्तन नियंत्रक उनके बीच मध्यस्थ के रूप में कार्य करता है।

तंत्र निम्नानुसार काम करता है। 1. प्रेक्षक परिवर्तन नियंत्रक (या राज्य प्रबंधक) को बताता है कि वह परिवर्तनों के लिए किन विषयों की निगरानी करना चाहता है। 2. विषय अपने सभी परिवर्तनों के नियंत्रक को सूचित करता है। 3. ढांचे के संकेत पर, नियंत्रक पर्यवेक्षक को विषय में परिवर्तन के बारे में सूचित करता है। 4. पर्यवेक्षक अद्यतन डेटा प्राप्त करने के लिए विषय को अनुरोध भेजता है।

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

ढांचा इसके लिए दो राज्य प्रबंधक प्रदान करता है: दृश्य स्तर पर और वस्तु स्तर पर परिवर्तनों को संभालने के लिए। आमतौर पर, दृश्य और वस्तु संदेश एक दूसरे से स्वतंत्र होते हैं, इसलिए दो अलग-अलग प्रबंधकों का उपयोग करने से अनावश्यक डेटा को संसाधित करने की आवश्यकता समाप्त हो जाती है। लेकिन अगर दृश्य को किसी वस्तु की स्थिति को ध्यान में रखना है, तो इसके परिवर्तनों की अधिसूचना प्राप्त करने के लिए इसे पंजीकृत किया जा सकता है।

अनावश्यक सिंक्रनाइज़ेशन न करने के लिए, राज्य प्रबंधक कार्य प्रबंधक द्वारा बनाए गए प्रत्येक थ्रेड के लिए अलग से परिवर्तन सूचनाओं की एक कतार बनाता है। इसलिए, कतार तक पहुँचने के लिए किसी सिंक्रनाइज़ेशन की आवश्यकता नहीं है। खंड 2.2 एक विधि का वर्णन करता है जिसका उपयोग निष्पादन के बाद कतारों को मर्ज करने के लिए किया जा सकता है।


चित्र 7. की सूचना आंतरिक परिवर्तनसार्वभौम वस्तु

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

3.2.3. सेवा प्रबंधक
सर्विस मैनेजर सिस्टम को अन्य सिस्टम की सुविधाओं तक पहुंच प्रदान करता है जो अन्यथा उनके लिए अनुपलब्ध होती। यह समझना महत्वपूर्ण है कि कार्यों को इंटरफेस के माध्यम से एक्सेस किया जाता है न कि सीधे। सिस्टम इंटरफेस के बारे में जानकारी सेवा प्रबंधक में भी संग्रहीत की जाती है।
एक दूसरे पर सिस्टम निर्भरता से बचने के लिए, उनमें से प्रत्येक के पास सेवाओं का केवल एक छोटा सा सेट होता है। इसके अलावा, किसी विशेष सेवा का उपयोग करने की क्षमता सिस्टम द्वारा ही नहीं, बल्कि सेवा प्रबंधक द्वारा निर्धारित की जाती है।


चित्र 8. सेवा प्रबंधक उदाहरण

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

3.2.4। पर्यावरण प्रबंधक
  • पर्यावरण प्रबंधक इंजन के लिए रनटाइम वातावरण प्रदान करता है। इसके कार्यों को सशर्त रूप से निम्नलिखित समूहों में विभाजित किया जा सकता है।
  • चर: इंजन के सभी भागों द्वारा उपयोग किए जाने वाले सामान्य चर के नाम और मूल्य। आमतौर पर, किसी दृश्य या कुछ उपयोगकर्ता सेटिंग्स को लोड करते समय चर मान निर्धारित किए जाते हैं। इंजन और विभिन्न सिस्टम अनुरोध भेजकर उन तक पहुंच सकते हैं।
  • निष्पादन: निष्पादन डेटा, जैसे किसी दृश्य का पूरा होना या कार्यक्रम का निष्पादन। इन मापदंडों को सिस्टम और इंजन दोनों द्वारा सेट और अनुरोध किया जा सकता है।
3.2.5. प्लेटफार्म प्रबंधक
प्लेटफ़ॉर्म मैनेजर ऑपरेटिंग सिस्टम कॉल के लिए एक एब्स्ट्रैक्शन लागू करता है और साधारण एब्स्ट्रैक्शन से परे अतिरिक्त कार्यक्षमता भी प्रदान करता है। इस दृष्टिकोण का लाभ एक ही कॉल के भीतर कई विशिष्ट कार्यों का एनकैप्सुलेशन है। यही है, उन्हें प्रत्येक कॉलिंग तत्व के लिए अलग से लागू करने की आवश्यकता नहीं है, इसे ओएस कॉल के विवरण के साथ ओवरलोड करना।
एक उदाहरण के रूप में, सिस्टम के गतिशील पुस्तकालय को लोड करने के लिए प्लेटफ़ॉर्म प्रबंधक को कॉल करने पर विचार करें। यह न केवल सिस्टम को बूट करता है, बल्कि फंक्शन एंट्री पॉइंट भी प्राप्त करता है और लाइब्रेरी के इनिशियलाइज़ेशन फंक्शन को कॉल करता है। प्रबंधक लाइब्रेरी डिस्क्रिप्टर को भी स्टोर करता है और इंजन के समाप्त होने पर उसे उतार देता है।

प्लेटफ़ॉर्म प्रबंधक प्रोसेसर के बारे में जानकारी प्रदान करने के लिए भी जिम्मेदार है, जैसे कि समर्थित SIMD निर्देश, और प्रक्रियाओं के लिए एक विशेष मोड के संचालन को आरंभ करने के लिए। अन्य सिस्टम क्वेरी फ़ंक्शन का उपयोग नहीं किया जा सकता है।

4. इंटरफेस

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

इंटरफेस एक मानक एक्सेस विधि का उपयोग करने के लिए आवश्यक कार्यों के एक सेट को परिभाषित करते हैं। यह ढांचे को विशिष्ट प्रणालियों के कार्यान्वयन विवरण जानने से बचाता है, क्योंकि यह केवल कॉल के एक विशिष्ट सेट के माध्यम से उनके साथ बातचीत कर सकता है।

4.1. विषय और प्रेक्षक इंटरफेस

सब्जेक्ट और ऑब्जर्वर इंटरफेस का मुख्य उद्देश्य यह रजिस्टर करना है कि किस ऑब्जर्वर को किन विषयों के बारे में नोटिफिकेशन भेजना है, साथ ही ऐसी नोटिफिकेशन भी भेजना है। एक पर्यवेक्षक से पंजीकरण और डिस्कनेक्ट करना उनके इंटरफ़ेस कार्यान्वयन में शामिल सभी अभिनेताओं के लिए मानक विशेषताएं हैं।

4.2. प्रबंधक इंटरफेस

प्रबंधक, सिंगलटन ऑब्जेक्ट होने के बावजूद, केवल ढांचे के लिए सीधे पहुंच योग्य हैं। अन्य सिस्टम केवल उन इंटरफेस के माध्यम से प्रबंधकों तक पहुंच सकते हैं जो उनकी समग्र कार्यक्षमता के केवल एक सबसेट का प्रतिनिधित्व करते हैं। आरंभीकरण के बाद, इंटरफ़ेस को सिस्टम में भेज दिया जाता है, जो इसका उपयोग प्रबंधक के कुछ कार्यों के साथ काम करने के लिए करता है।
सभी प्रबंधकों के लिए कोई एकल इंटरफ़ेस नहीं है। उनमें से प्रत्येक का अपना अलग इंटरफ़ेस है।

4.3. सिस्टम इंटरफेस

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

4.4. इंटरफेस बदलें

ये इंटरफेस सिस्टम के बीच डेटा ट्रांसफर करने का काम करते हैं। किसी विशेष प्रकार के परिवर्तन करने वाली सभी प्रणालियों को इस इंटरफ़ेस को लागू करना चाहिए। ज्यामिति एक उदाहरण है। ज्यामिति इंटरफ़ेस में किसी तत्व की स्थिति, अभिविन्यास और पैमाने का निर्धारण करने के तरीके शामिल हैं। कोई भी प्रणाली जो ज्यामिति में परिवर्तन करती है, उसे एक इंटरफ़ेस लागू करना चाहिए ताकि बदले गए डेटा तक पहुंच के लिए अन्य प्रणालियों के ज्ञान की आवश्यकता न हो।

5. सिस्टम

सिस्टम इंजन का हिस्सा है जो गेम की कार्यक्षमता को लागू करने के लिए जिम्मेदार है। वे सभी बुनियादी कार्य करते हैं जिनके बिना इंजन का कोई मतलब नहीं होता। इंजन और सिस्टम के बीच इंटरेक्शन इंटरफेस का उपयोग करके किया जाता है (देखें खंड 4.3, "सिस्टम इंटरफेस")। यह आवश्यक है ताकि इंजन के बारे में जानकारी के साथ ओवरलोड न करें विभिन्न प्रकार केसिस्टम इंटरफेस एक नई प्रणाली को जोड़ना बहुत आसान बनाते हैं क्योंकि इंजन को सभी कार्यान्वयन विवरणों को ध्यान में रखने की आवश्यकता नहीं होती है।

5.1. प्रकार

मानक गेम घटकों के अनुरूप इंजन सिस्टम को कई पूर्व-निर्धारित श्रेणियों में विभाजित किया जा सकता है। उदाहरण के लिए: ज्यामिति, ग्राफिक्स, भौतिकी (कठोर निकायों का टकराव), ध्वनि, इनपुट प्रोसेसिंग, एआई और एनीमेशन।
गैर-मानक कार्यों वाले सिस्टम एक अलग श्रेणी के हैं। यह समझना महत्वपूर्ण है कि किसी विशेष श्रेणी के डेटा को संशोधित करने वाली कोई भी प्रणाली उस श्रेणी के इंटरफ़ेस से अवगत होनी चाहिए, क्योंकि इंजन ऐसी जानकारी प्रदान नहीं करता है।

5.2. तंत्र के अंश

प्रत्येक प्रणाली के लिए, कई घटकों को लागू करने की आवश्यकता होती है। यहाँ उनमें से कुछ हैं: प्रणाली, दृश्य, वस्तु और कार्य। ये सभी घटक परस्पर क्रिया करते हैं विभिन्न भागयन्त्र।
नीचे दिया गया चित्र विभिन्न घटकों के बीच परस्पर क्रिया को दर्शाता है।


चित्रा 9. सिस्टम घटक

इंजन के सिस्टम के बीच कनेक्शन का एक विस्तृत आरेख परिशिष्ट बी में दिया गया है, "इंजन और सिस्टम के बीच बातचीत की योजना।"

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

कुछ मामलों में, सिस्टम ऑब्जेक्ट को सामान्य ऑब्जेक्ट या उसके एक्सटेंशन में से किसी एक में परिवर्तन को ध्यान में रखना होगा। इस उद्देश्य के लिए, आप एक विशेष लिंक बना सकते हैं जो आपको किए गए परिवर्तनों को ट्रैक करने की अनुमति देगा।

5.2.4। एक कार्य
कार्य घटक, या सिस्टम कार्य, दृश्य को संसाधित करने के लिए उपयोग किया जाता है। कार्य को कार्य प्रबंधक से दृश्य को अद्यतन करने के लिए एक आदेश प्राप्त होता है। यह दृश्य वस्तुओं पर सिस्टम फ़ंक्शन चलाने के लिए एक संकेत है।
किसी कार्य के निष्पादन को उप-कार्यों में विभाजित किया जा सकता है, उन्हें कार्य प्रबंधक की सहायता से और अधिक में वितरित किया जा सकता है अधिकधाराएँ यह कई प्रोसेसर में इंजन को स्केल करने का एक सुविधाजनक तरीका है। इस विधि को डेटा अपघटन कहा जाता है।
दृश्य कार्यों को अद्यतन करने की प्रक्रिया में वस्तुओं को बदलने की जानकारी राज्य प्रबंधक को दी जाती है। राज्य प्रबंधक के विवरण के लिए खंड 3.2.2 देखें।

6. सभी घटकों का मेल

ऊपर वर्णित सभी तत्व आपस में जुड़े हुए हैं और एक पूरे का हिस्सा हैं। इंजन के संचालन को सशर्त रूप से निम्नलिखित चरणों में वर्णित कई चरणों में विभाजित किया जा सकता है।

6.1. प्रारंभिक चरण

इंजन का काम प्रबंधकों के आरंभीकरण और ढांचे के साथ शुरू होता है।
  • फ्रेमवर्क सीन लोडर को कॉल करता है।
  • यह निर्धारित करने के बाद कि दृश्य किस सिस्टम का उपयोग करेगा, लोडर प्लेटफॉर्म मैनेजर को उपयुक्त मॉड्यूल लोड करने के लिए कहता है।
  • प्लेटफ़ॉर्म प्रबंधक उपयुक्त मॉड्यूल लोड करता है और उन्हें इंटरफ़ेस प्रबंधक को भेजता है, फिर उन्हें एक नई प्रणाली बनाने के लिए कहता है।
  • मॉड्यूल लोडर को सिस्टम इंस्टेंस के लिए एक पॉइंटर लौटाता है जो सिस्टम इंटरफेस को लागू करता है।
  • सेवा प्रबंधक उन सभी सेवाओं को पंजीकृत करता है जो सिस्टम मॉड्यूल प्रदान करता है।


चित्रा 10. इंजन के प्रबंधकों और प्रणालियों का प्रारंभ

6.2. दृश्य लोडिंग चरण

लोडर को नियंत्रण वापस कर दिया जाता है, जो दृश्य को लोड करता है।
  • लोडर एक सार्वभौमिक दृश्य बनाता है। सिस्टम दृश्यों को तत्काल करने के लिए, यह सामान्य दृश्य की कार्यक्षमता का विस्तार करते हुए सिस्टम इंटरफेस को कॉल करता है।
  • एक सामान्य दृश्य परिभाषित करता है कि प्रत्येक सिस्टम दृश्य कौन सा डेटा बदल सकता है और इसे किन परिवर्तनों के बारे में सूचित किया जाना चाहिए।
  • उन दृश्यों का मिलान करने के बाद जो कुछ परिवर्तन करते हैं और उनके बारे में अधिसूचित होना चाहते हैं, सामान्य दृश्य इस जानकारी को राज्य प्रबंधक को भेजता है।
  • प्रत्येक दृश्य वस्तु के लिए, लोडर एक सामान्य वस्तु बनाता है, फिर यह निर्धारित करता है कि कौन से सिस्टम सामान्य वस्तु का विस्तार करेंगे। सिस्टम ऑब्जेक्ट्स के बीच पत्राचार उसी योजना के अनुसार निर्धारित किया जाता है जिसका उपयोग दृश्यों के लिए किया जाता है। यह राज्य प्रबंधक को भी पारित किया जाता है।
  • परिणामी दृश्य इंटरफेस का उपयोग करते हुए, लोडर सिस्टम ऑब्जेक्ट्स के उदाहरण बनाता है और सामान्य वस्तुओं का विस्तार करने के लिए उनका उपयोग करता है।
  • निष्पादन के दौरान कार्य प्रबंधक को यह जानकारी देने के लिए शेड्यूलर अपने मुख्य कार्यों के बारे में जानकारी के लिए दृश्य इंटरफेस पूछता है।


चित्रा 11. सार्वभौमिक दृश्य और वस्तु का प्रारंभ

6.3. खेल चक्र का चरण

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


चित्र 12. कार्य प्रबंधक और कार्य

6.3.2. डेटा अपडेट
वर्तमान चक्र के सभी कार्यों के पूरा होने के बाद, मुख्य गेम लूप राज्य प्रबंधक को डेटा अपडेट चरण शुरू करने के लिए कहता है।
  • राज्य प्रबंधक संचित सूचनाओं को वितरित करने के लिए बदले में अपने प्रत्येक परिवर्तन नियंत्रक को कॉल करता है। नियंत्रक जाँचता है कि कौन से पर्यवेक्षक प्रत्येक विषय के लिए परिवर्तन सूचनाएँ भेजेंगे।
  • यह तब वांछित पर्यवेक्षक को बुलाता है और परिवर्तन की सूचना देता है (अधिसूचना में विषय के इंटरफ़ेस के लिए एक सूचक भी शामिल है)। लूज स्टेपिंग मोड में, ऑब्जर्वर चेंज कंट्रोलर से बदले हुए डेटा को प्राप्त करता है, लेकिन हार्ड स्टेपिंग मोड में, इसे विषय से ही अनुरोध करना होगा।
  • आमतौर पर, सिस्टम ऑब्जेक्ट परिवर्तन सूचनाएं प्राप्त करने में रुचि रखने वाले पर्यवेक्षक समान सामान्य ऑब्जेक्ट से जुड़े अन्य सिस्टम ऑब्जेक्ट होते हैं। यह आपको परिवर्तन करने की प्रक्रिया को समानांतर में किए जा सकने वाले कई कार्यों में विभाजित करने की अनुमति देता है। सिंक्रनाइज़ेशन प्रक्रिया को सरल बनाने के लिए, आप सभी संबंधित जेनेरिक ऑब्जेक्ट एक्सटेंशन को एक कार्य में जोड़ सकते हैं।
6.3.3. निष्पादन की जाँच करें और बाहर निकलें
गेम लूप में अंतिम चरण रनटाइम की स्थिति की जांच करना है। ऐसी कई अवस्थाएँ हैं: कार्य, विराम, अगला दृश्य, आदि। यदि कार्य स्थिति का चयन किया जाता है, तो लूप का अगला पुनरावृत्ति प्रारंभ हो जाएगा। "निकास" स्थिति का अर्थ है कि लूप समाप्त हो गया है, संसाधन जारी किए गए हैं, और एप्लिकेशन बाहर निकल गया है। आप अन्य राज्यों को लागू कर सकते हैं, जैसे "रोकें", "अगला दृश्य", आदि।

सात निष्कर्ष

इस लेख का मुख्य विचार धारा 2, "समवर्ती निष्पादन स्थिति" में दिया गया है। कार्यात्मक अपघटन और डेटा अपघटन के लिए धन्यवाद, न केवल इंजन के मल्टीथ्रेडिंग को महसूस करना संभव है, बल्कि इसकी मापनीयता को और भी अधिक के लिए महसूस करना संभव है। बड़ी मात्राभविष्य में कोर। डेटा को अद्यतित रखते हुए सिंक्रोनाइज़ेशन ओवरहेड को समाप्त करने के लिए, संदेश तंत्र के अलावा राज्य प्रबंधकों का उपयोग करें।

ऑब्जर्वर पैटर्न मैसेजिंग इंजन की एक विशेषता है। इंजन के लिए इसे लागू करने का सबसे अच्छा तरीका चुनने के लिए यह कैसे काम करता है, इसकी अच्छी समझ होना जरूरी है। वास्तव में, यह विभिन्न प्रणालियों के बीच बातचीत के लिए एक तंत्र है, जो सामान्य डेटा के सिंक्रनाइज़ेशन को सुनिश्चित करता है।

कार्यभार के वितरण में कार्य प्रबंधन एक महत्वपूर्ण भूमिका निभाता है। परिशिष्ट डी गेम इंजन के लिए एक प्रभावी कार्य प्रबंधक बनाने के लिए सुझाव प्रदान करता है।

जैसा कि आप देख सकते हैं, गेम इंजन की मल्टीथ्रेडिंग एक अच्छी तरह से परिभाषित संरचना और संदेश विनिमय तंत्र के कारण संभव है। इसकी मदद से आप आधुनिक और भविष्य के प्रोसेसर के प्रदर्शन में काफी सुधार कर सकते हैं।

परिशिष्ट ए। इंजन योजनाबद्ध

प्रसंस्करण मुख्य गेम लूप से शुरू होता है (चित्र 4, "मेन गेम लूप" देखें)।


परिशिष्ट बी। इंजन और सिस्टम के बीच बातचीत की योजना


परिशिष्ट सी. प्रेक्षक (डिजाइन पैटर्न)

ऑब्जर्वर पैटर्न को ऑब्जेक्ट-ओरिएंटेड डिज़ाइन तकनीक पुस्तक में विस्तार से वर्णित किया गया है। डिजाइन पैटर्न, गामा ई।, हेल्म आर।, जॉनसन आर।, व्लिसाइड्स जे। इसे पहली बार 1995 में एडिसन-वेस्ले द्वारा अंग्रेजी में प्रकाशित किया गया था।

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


चित्रा 13. पैटर्न "पर्यवेक्षक"

इस मॉडल का उपयोग करने की प्रक्रिया नीचे वर्णित है।

  1. परिवर्तन नियंत्रक एक पर्यवेक्षक और एक विषय पंजीकृत करता है जिसके बारे में वह अधिसूचित होना चाहता है।
  2. परिवर्तन नियंत्रक वास्तव में एक पर्यवेक्षक है। ऑब्जर्वर की जगह वह सब्जेक्ट के साथ अपना रजिस्ट्रेशन करा लेता है। परिवर्तन नियंत्रक अपने पर्यवेक्षकों और विषयों की सूची भी उनके पास पंजीकृत रखता है।
  3. विषय अपने पर्यवेक्षकों की सूची में एक पर्यवेक्षक (अर्थात एक परिवर्तन नियंत्रक) जोड़ता है जो इसके परिवर्तनों के बारे में अधिसूचित होना चाहते हैं। कभी-कभी परिवर्तनों के प्रकार को अतिरिक्त रूप से इंगित किया जाता है, जो यह निर्धारित करता है कि पर्यवेक्षक की रुचि किन परिवर्तनों में है। यह आपको परिवर्तन सूचनाएं भेजने की प्रक्रिया को कारगर बनाने की अनुमति देता है।
  4. डेटा या स्थिति बदलते समय, विषय पर्यवेक्षक को कॉलबैक तंत्र के माध्यम से सूचित करता है और बदले हुए प्रकारों के बारे में जानकारी देता है।
  5. परिवर्तन नियंत्रक परिवर्तन सूचनाओं की एक कतार बनाता है और उन्हें वस्तुओं और प्रणालियों के बीच वितरित करने के लिए एक संकेत की प्रतीक्षा करता है।
  6. वितरण के दौरान, परिवर्तन नियंत्रक वास्तविक पर्यवेक्षकों से बात करता है।
  7. पर्यवेक्षक विषय से परिवर्तित डेटा या स्थिति के बारे में जानकारी का अनुरोध करते हैं (या इसे सूचनाओं के साथ प्राप्त करते हैं)।
  8. किसी पर्यवेक्षक को हटाने से पहले, या यदि उसे अब किसी विषय के बारे में सूचित करने की आवश्यकता नहीं है, तो वह परिवर्तन नियंत्रक में उस विषय से सदस्यता समाप्त कर देता है।
कार्य वितरण को लागू करने के कई अलग-अलग तरीके हैं। हालांकि, वर्कर थ्रेड्स की संख्या को उपलब्ध प्लेटफॉर्म लॉजिकल प्रोसेसर्स की संख्या के बराबर रखना सबसे अच्छा है। कार्यों को एक विशिष्ट धागे से न बांधने का प्रयास करें। विभिन्न प्रणालियों के कार्यों का निष्पादन समय हमेशा मेल नहीं खाता है। इससे वर्कर थ्रेड्स के बीच असमान लोड वितरण हो सकता है और दक्षता प्रभावित हो सकती है। इस प्रक्रिया को आसान बनाने के लिए, जैसे कार्य प्रबंधन पुस्तकालयों का उपयोग करें

साइट पर नया

>

सबसे लोकप्रिय