क्या कई CPU / कोर एक साथ एक ही RAM तक पहुँच सकते हैं?


16

मुझे लगता है कि यह होगा:

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

  2. यदि दो कोर एक ही रैम में अलग-अलग पते तक पहुंचने की कोशिश करते हैं , तो दूसरे को रैम तक पहुंचने के लिए इंतजार करना होगा ।

दूसरे शब्दों में, मुझे लगता है कि रैम गहन प्रोग्रामिंग कार्यों के लिए, मल्टीप्रोसेसिंग तब तक बहुत मदद नहीं करेगा जब तक कि यह एक ही पते से रैम को कोर में कई बार पढ़ना शामिल न हो।

तो, क्या कई CPU / कोर समान रूप से RAM का उपयोग कर सकते हैं, या क्या मैं सही कह रहा हूं?


मैं उस हार्डवेयर स्तर से बात नहीं कर सकता जिसका आप उल्लेख कर रहे हैं, लेकिन मैं कह सकता हूं कि राम गहन कार्यों को केवल उपयोग को विभाजित करके मल्टीप्रोसेसिंग द्वारा सहायता प्राप्त किया जा सकता है; यह कहना है कि यदि आपके पास 500mb का डेटा है, तो आपको जो प्रोसेस करने की आवश्यकता है, उस डेटा के 250mb / ram को एक proc और दूसरे को 250mb दें और आपने अपने संभावित थ्रूपुट को प्रभावी ढंग से दोगुना कर दिया है (RAM बैंडविड्थ प्रतिबंध समझ में नहीं आया)। इसके अलावा कि क्या हार्डवेयर ऐसा कर सकता है या नहीं, एक ही राम पते पर एक से अधिक प्रोसेसर का उपयोग करना वास्तव में बुरा विचार है, और अधिकांश बहु-खरीद कोड श्रमसाध्य रूप से इससे बचने की कोशिश करते हैं।
जिमी हॉफ

1
@JimmyHoffa लेकिन रैम बैंडविड्थ प्रतिबंध ठीक वही है जो वह बात कर रहा है (जैसा कि धारणा यह है कि कार्य मेमोरी-बाउंड है)।

@ जिमी मुझे एक ही रैम पते से पढ़ने की कोशिश करने वाले दो प्रोसेसर के साथ कोई समस्या नहीं है। मैं केवल एक समस्या देखूंगा यदि उन्होंने उसी समय इसे लिखने का प्रयास किया।
खोया

1
विशेष रूप से मल्टीकोर प्रोसेसर पर, जिनके साथ मैं काम करता था, कोर उनके स्थानीय कैश से परे कुछ भी "नहीं" जानते थे; साझा कैश के साथ सिंक करने के लिए आवश्यक सामान को निर्दिष्ट चक्र चक्रों में पारदर्शी तरीके से किया जा रहा था; प्रोग्रामर इसे nopअपने विधानसभा कोड में मैन्युअल रूप से आवश्यक राशि जोड़ने के लिए तैयार हैं
gnat

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

जवाबों:


11

सारांश: मेमोरी बस को संतृप्त करने के लिए सिंगल कोर के लिए यह आम तौर पर संभव है यदि मेमोरी एक्सेस यह सब करता है।

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


विवरण आपके द्वारा उपयोग किए जा रहे आर्किटेक्चर पर निर्भर करेगा। आधुनिक एसएमपी और एसडीआरएएम जैसा कुछ मानते हुए:

  1. यदि दो कोर रैम में एक ही पते पर पहुंचने की कोशिश करते हैं ...

    कई तरीके जा सकते हैं:

    • वे दोनों एक साथ पढ़ना चाहते हैं:

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

      • एक ही चिप पर दो कोर बस एक ही कैश में लिख रहे होंगे, और केवल एक बार रैम को फ्लश करना होगा। वास्तव में, चूँकि मेमोरी प्रति RAM से पढ़ी जाएगी और कैश लाइन पर लिखी जाएगी, इसलिए अलग-अलग लेकिन पर्याप्त पते पर लिखता है कि रैम के लिए एक सिंगल राइट में लिखा जा सकता है

      • अलग-अलग चिप्स पर दो कोर का टकराव होता है, और चिप 1 से कैश लाइन को RAM में वापस लिखना होगा, चिप 2 के कैश में लाया जाएगा, संशोधित किया जाएगा और फिर वापस लिखा जाएगा (पता नहीं कि क्या लिखने / लाने के लिए सूंघकर पता लगाया जा सकता है)

  2. अगर दो कोर अलग-अलग पते तक पहुंचने की कोशिश करते हैं ...

    एक के लिए एक का उपयोग, कैस विलंबता साधन दो आपरेशन संभवतः से अगर बस बेकार थे (अब या शायद केवल एक छोटे से) अब लेने के लिए interleaved जा सकता है।


एक अन्य सूची आइटम तब होता है जब एक कोर डीएमए हस्तांतरण शुरू करता है, जबकि लक्ष्य क्षेत्र पर apther कोर pokes।
ott--

7

तो, क्या कई CPU / कोर समान रूप से RAM का उपयोग कर सकते हैं, या क्या मैं सही कह रहा हूं?

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


3

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

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

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

बेहतर समझ के लिए: बस याद रखें कि डायरेक्ट मेमोरी एक्सेस कैसे काम करता है। सीपीयू और डीएमए डिवाइस दोनों ही बस को संबोधित कर सकते हैं, इसलिए बस के एक साथ उपयोग से एक दूसरे को बाहर करना होगा।


1

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

बेशक, यदि आप एक मल्टी-कोर ऑपरेटिंग सिस्टम कर्नेल को कोड कर रहे हैं, तो आप रैम और कैशे को बहुत बड़ा मानते हैं।

अधिकांश मल्टी-कोर प्रोसेसर के पास कैश जुटना तंत्र का कुछ रूप है । विवरण प्रोसेसर विशिष्ट हैं। चूंकि प्रोसेसर सीपीयू कैश का उपयोग कर रहे हैं , वे कभी-कभी ऐसा व्यवहार करते हैं जैसे कि प्रोसेसर के कई कोर एक साथ एक ही मेमोरी स्थान तक पहुंच रहे हैं।

C11 या C ++ 11 जैसी औद्योगिक भाषाओं के हालिया मानकों में कुछ (मल्टी-थ्रेड अवेयर) मेमोरी मॉडल है


0

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


1
इस पोस्ट को पढ़ना मुश्किल है (पाठ की दीवार)। क्या आप बेहतर आकार में आईएनजी को संपादित करेंगे ?
gnat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.