मेटास्टेबिलिटी क्या है?


15

इलेक्ट्रॉनिक्स में विकिपीडिया लेख मेटास्टेबिलिटी से :

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

यह एक अच्छी परिभाषा है, लेकिन एक आवेदन में इसका क्या मतलब है?

एक इलेक्ट्रॉनिक्स डिजाइनर के दृष्टिकोण से, यह कब हो सकता है और इस प्रकार की विफलता चिंता का विषय कहां होनी चाहिए, इसके कुछ उदाहरण हैं।

क्या अधिक व्यावहारिक या लागू परिभाषा है - कुछ अधिक विशिष्ट शब्दों में?


2
: लेज़्ली लैंपॉर्ट (वह की $ \ LaTeX $ प्रसिद्धि) इस पत्र में metastability का अच्छा वर्णन लिखा research.microsoft.com/users/lamport/pubs/buridan.pdf
markrages

@ चिह्न ब्रिलियंट यह गिरने वाली बिल्लियों और बट्टे वाले टोस्ट के साथ भी हो सकता है ।
जंग

जवाबों:


15

त्वरित उत्तर: यदि आप सेटअप का उल्लंघन करते हैं और फ्लिप फ्लॉप के इनपुट पर समय रखते हैं, तो आउटपुट कुछ समय के लिए अप्रत्याशित होगा। उस अप्रत्याशित उत्पादन को मेटा-स्टेबल (या मेटास्टेबिलिटी) कहा जाता है।

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

हालांकि यह अप्रत्याशित है कि समय की राशि कुछ हद तक अनुमानित है। मेटास्टेबल अवधि की लंबाई निर्धारित करने वाले दो मुख्य कारक हैं: फ्लिप-फ्लॉप की गति, और आपको "किनारे के करीब" कैसे समय मिला।

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

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

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

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


3
पशु के प्रकार पर कोई निर्भरता बलिदान?
जंग

11

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

भंडारण तत्वों को बनाने के लिए स्थिर संतुलन का उपयोग विद्युत प्रणालियों में किया जाता है। अस्थिर equlibria अच्छे भंडारण तत्व नहीं बनाते हैं (क्योंकि वे आसानी से अपना राज्य खो देते हैं), लेकिन अक्सर एक परजीवी राज्य के रूप में मौजूद होते हैं।

एक आम डिजिटल स्टोरेज तत्व क्रॉस-कपल्ड इनवर्टर की एक जोड़ी है:

लूप से जुड़े दो इनवर्टर, आउटपुट-टू-इनपुट

भंडारण तत्व में दो स्थिर अवस्थाएँ होती हैं, एक जहाँ बाईं ओर का नोड आपूर्ति वोल्टेज पर होता है और दाईं ओर का नोड जमीन पर होता है, और दूसरा विपरीत स्थिति में। एक अस्थिर अवस्था भी होती है, जिसमें प्रत्येक नोड कुछ मध्यवर्ती वोल्टेज पर होता है।

यह समझने के लिए कि अस्थिर स्थिति कैसे उत्पन्न होती है, एक पलटनेवाला के लिए स्थानांतरण फ़ंक्शन को याद करें। ट्रांसफर फ़ंक्शन का प्लॉट किसी दिए गए इनपुट वोल्टेज के लिए इन्वर्टर के आउटपुट वोल्टेज को दर्शाता है।

इन्वर्टर ट्रांसफर फ़ंक्शन

पलटनेवाला गैर-रैखिक है; एक गैर-रैखिक सर्किट का अनुमानित समाधान प्राप्त करने का एक सरल तरीका सर्किट विशेषताओं की साजिश है; चौराहों के प्लॉट समाधान हैं, या दूसरे शब्दों में, उन बिंदुओं पर जहां सर्किट के सभी घटकों की विद्युत विशेषताओं को संतुष्ट किया जाता है। सामान्यतः यह iv भूखंडों के साथ किया जाता है जैसा कि विकिपीडिया पर इस डायोड उदाहरण में दिया गया है । हालाँकि, इनवर्टर के लिए, हम इसे vv प्लॉट्स के साथ करेंगे। भूखंड पर एक दूसरे इन्वर्टर ट्रांसफर फ़ंक्शन को ओवरले करना (कुल्हाड़ियों की अदला-बदली के साथ, क्योंकि दूसरा इन्वर्टर पीछे की तरफ है:

बैक-टू-बैक इनवर्टर के लिए ओवरले ट्रांसफर फ़ंक्शन

भूखंडों के तीन चौराहे हैं: एक पर (0, बनाम), एक पर (बनाम, 0), और एक पर (Vs / 2, Vs / 2)। (Vs / 2, Vs / 2) राज्य मेटास्टेबल है। या तो नोड के एक छोटे से गड़बड़ी के बाद, सर्किट लगभग हमेशा स्थिर राज्यों में से एक (बनाम / 2, बनाम / 2) पर लौटने के बजाय बस जाएगा।

ड्यूल-इनवर्टर स्टोरेज एलिमेंट के लिए वैल्यू लिखने का तरीका इनवर्टर की तुलना में एक ड्राइवर का उपयोग करके वांछित मान में से एक नोड को मजबूर करना है। ऐसा करने का एक सामान्य तरीका एक पास ट्रांजिस्टर है:

क्रॉस ट्रांजिस्टर के साथ क्रॉस-युग्मित इनवर्टर

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

मेटास्टेबिलिटी के बारे में चिंता कब करें

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

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

कुछ सामान्य स्थितियाँ जहाँ मेटास्टेबिलिटी एक चिंता का विषय है:

  • एक बाहरी इनपुट का नमूनाकरण तर्क, उदाहरण के लिए, सामने के पैनल पर एक स्विच, या मॉनिटर सर्किट का आउटपुट जो किसी भी समय (अंडरवॉल्टेज, ओवरटेम्प) में संक्रमण कर सकता है।
  • कई घड़ियों का उपयोग करके लॉजिक जो एक समकालिक संबंध नहीं है। यह अक्सर I / O इंटरफेस के साथ उत्पन्न होता है, जिसमें विशेष रूप से घड़ी की आवश्यकता होती है, लेकिन आंतरिक रूप से तब भी होता है जब चिप के विभिन्न भागों में अलग-अलग प्रदर्शन आवश्यकताएं होती हैं। उदाहरण के लिए, आपके 3 गीगाहर्ट्ज सीपीयू में सभी तर्क वास्तव में 3 गीगाहर्ट्ज पर नहीं चल रहे हैं। (एक CPU एक महान उदाहरण नहीं है, हालांकि, चूंकि सीपीयू में कई घड़ियां एक दूसरे के तुल्यकालिक गुणक हैं)।

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

+1 यह अच्छा सामान है लेकिन यह @David Kessner के जवाब को पढ़ने के बाद अधिक समझ में आता है। ग्राफिक्स के लिए +2।
जंग

3

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

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

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


2

क्लासिक मामला यह है कि यदि आप एक तुल्यकालिक कुंडी के लिए सेटअप / होल्ड बार का उल्लंघन करते हैं, और एक ऐसा मुद्दा है जिसके लिए आपको FPGAs (जब मुझे यकीन है कि Xilinx और Altera का इस पर ध्यान होगा) को डिजाइन करने की जानकारी होनी चाहिए। यदि कोई संकेत किसी भी यादृच्छिक समय पर आ सकता है, तो आप कभी भी यह सुनिश्चित नहीं कर सकते हैं कि जब आप इसे देखते हैं, तो यह सेटअप / होल्ड विंडो विंडो के भीतर नहीं बदल रहा है। क्या हो सकता है कि घड़ी की धार के बाद निर्दिष्ट समय पर उच्च या निम्न स्तर के लैच आउटपुट के बजाय, यह स्थिर अवस्था में बसने से पहले थोड़ी देर के लिए हो सकता है। इसे रोकने का सामान्य तरीका 2-चरण कुंडी का उपयोग करना है, या तो एक ही घड़ी या विलंबित या आउट-ऑफ़-द-चरण घड़ी के साथ आपकी विलंबता आवश्यकताओं और मेटास्टेबिलिटी की संभावना के बीच संतुलन पर निर्भर करता है। यह पहली कुंडी समय को स्थिर करने से पहले दूसरी कुंडी को स्थिर अवस्था में ले जाने की अनुमति देता है। संयोग से, यह कुछ ऐसा है जो माइक्रोकंट्रोलर्स को आंतरिक रूप से निपटना पड़ता है, क्योंकि बाहरी I / O सिग्नल आमतौर पर CPU घड़ी के लिए अतुल्यकालिक होते हैं, इसलिए I / O पोर्ट में अक्सर समस्याओं से बचने के लिए दोहरी लैचिंग की व्यवस्था होती है, और सॉफ़्टवेयर को इसके बारे में चिंता करने की आवश्यकता नहीं होती है। । 6502 के साथ एक समस्या के बारे में कई साल पहले पढ़ने वाली एक अस्पष्ट याद, जहां डेटा की एक बस रीड जो सेटअप / होल्ड टाइम कल्पना के बाहर बदल जाती थी, एक पते के लिए एक शाखा का कारण बन सकती थी जो न तो शाखा लक्ष्य थी और न ही अगला निर्देश, जैसा कि कुछ आंतरिक था राज्य मेटास्टेबल गया। यह वीडियो कुछ उदाहरण दिखाता है: 6502 के साथ एक समस्या के बारे में कई साल पहले पढ़ने वाली एक अस्पष्ट याद, जहां डेटा की एक बस रीड जो सेटअप / होल्ड टाइम कल्पना के बाहर बदल जाती थी, एक पते के लिए एक शाखा का कारण बन सकती थी जो न तो शाखा लक्ष्य थी और न ही अगला निर्देश, जैसा कि कुछ आंतरिक था राज्य मेटास्टेबल गया। यह वीडियो कुछ उदाहरण दिखाता है: 6502 के साथ एक समस्या के बारे में कई साल पहले पढ़ने वाली एक अस्पष्ट याद, जहां डेटा की एक बस रीड जो सेटअप / होल्ड टाइम कल्पना के बाहर बदल जाती थी, एक पते के लिए एक शाखा का कारण बन सकती थी जो न तो शाखा लक्ष्य थी और न ही अगला निर्देश, जैसा कि कुछ आंतरिक था राज्य मेटास्टेबल गया। यह वीडियो कुछ उदाहरण दिखाता है:http://www.youtube.com/watch?v=tKHCwjWMMyg

एक सादृश्य यदि आप किसी को गेंद फेंकते हैं - वे या तो इसे पकड़ लेते हैं या इसे छोड़ देते हैं / चूक जाते हैं, इसलिए फेंकने से दिए गए समय के बाद, वे या तो इसे पकड़े रहेंगे या नहीं। लेकिन कभी-कभी वे इसे पकड़ने या छोड़ने से पहले थोड़ी देर के लिए झड़ जाएंगे, इसलिए उनका राज्य न तो पकड़ रहा है और न ही गिराया जा रहा है - यह मेटास्टेबल स्थिति है!


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

यह कुछ ऐसा था जो मैंने 20 साल पहले दूसरे या तीसरे हाथ से सुना था, लेकिन यह उन लोगों से उत्पन्न हुआ था जो बिल्कुल जानते थे कि वे क्या कर रहे थे - यह बीबीसी माइक्रो के लिए 6502 सेकंड प्रोसेसर पर ट्यूब इंटरफ़ेस के साथ करना था, और स्थिति पढ़ना झंडे, और एक बार-ना-ब्लू-मून की घटना थी, लेकिन लगातार इतना था कि यह उत्पाद लॉन्च में देरी कर रहा था। जरूरी नहीं कि इसे अंतिम 2 चक्रों की आवश्यकता होगी क्योंकि पाइप लाइन के विभिन्न चरणों में सिग्नल संभवतः आंतरिक रूप से लैच किए जा रहे हैं। मुझे लगता है कि यह उस समय उपलब्ध सबसे तेज़ 6502 संस्करण भी था - 3MHz 65C02 ISTR।
मिसेइलेक्ट्रिकस्टफ

दिलचस्प। [BTW, क्या स्टैक एक्सचेंज के बिना विराम चिह्न का उपयोग करने का कोई तरीका है?] उदाहरण के "ADC 0xD000" के सामान्य व्यवहार में, पता चौथे चक्र के चरण 1 पर आउटपुट होगा, और चरण के अंत में डेटा लैच किया जाएगा। उस चक्र के 2। यह डेटा अगले चक्र के चरण 1 में ALU में फीड होगा (जो निम्नलिखित निर्देश के लिए opcode होगा)। उसके बाद का चक्र ऑपरचंद का होगा। यदि चीजें उस समय भी अस्थिर थीं, तो सिस्टम पिघल सकता है, लेकिन ऐसा लगता है कि गतिशील रजिस्टरों को दो बार स्थानांतरित कर दिया गया है, इसलिए यह संभावना नहीं है।
सुपरकाट

मैं यह नहीं कहना चाहता कि 6502 को प्रभावित करने के लिए डेटा-बस मेटास्टेबिलिटी के लिए यह असंभव है, क्योंकि मुझे पता है कि कुछ अन्य अजीब व्यवहार हैं जिन्हें मैं समझा नहीं सकता। उदाहरण के लिए, डेटा बस घड़ी के चरण 2 के दौरान लीच की जाती है, और निम्न चरण 1 के दौरान कार्य किया जाता है। इस प्रकार यह कोई फर्क नहीं पड़ता कि चरण 2 के दौरान परिवर्तन होता है बशर्ते कि यह अंत में स्थिर हो। कुछ अनिर्दिष्ट निर्देश हैं, हालांकि, जिसका व्यवहार चक्र के पहले भाग के दौरान डेटा बस की सामग्री से प्रभावित होता है (C64 और Apple जैसी मशीनों पर प्रदर्शन जो चरण 1 के दौरान वीडियो लाते हैं)। मुझे नहीं पता कि कैसे ...
सुपरकैट

... उन निर्देशों का व्यवहार वास्तव में शुरुआती डेटा बस व्यवहार से प्रभावित हो रहा है, लेकिन मुझे संदेह है कि यह अजीब तरह की दौड़ की स्थिति है। IIRC, opcodes में से एक LDA #imm, LDX #imm, और TAX के लिए डिकोड पैटर्न से मेल खाता है, इसलिए ALU के आउटपुट को इसके इनपुट पर वापस मैप किया जा रहा है। अजीब।
सुपरकाट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.