रैम (किसी भी प्रकार) का उपयोग समय इतनी धीमी गति से क्यों घटता है?


22

यह आलेख बताता है कि DDR4 SDRAM में लगभग 8x अधिक बैंडविड्थ DDR1 SDRAM है। लेकिन कॉलम पता सेट करने से लेकर डेटा उपलब्ध होने तक का समय केवल 10% (13.5ns) घटा है। एक त्वरित खोज से पता चलता है कि सबसे तेज़ एसिंक्स का उपयोग समय। SRAM (18 साल की उम्र) 7ns है। एसडीआरएएम का उपयोग समय इतनी धीरे-धीरे कम क्यों हो गया है? क्या इसका कारण आर्थिक, तकनीकी या मौलिक है?


1
एक और संभावित कारण यह हो सकता है कि यह आवश्यक नहीं है?
सेबेस्टियन वैन डेन ब्रोक

उदाहरण के लिए खोज में डेटा को अधिक तेजी से कम करने के लिए कम पहुंच समय आवश्यक है।
आर्सेनी

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

1
विकिपीडिया के अनुसार DDR3-2200 में 6.36 ns का फर्स्ट वर्ड लेटेंसी है, यानी कि FR4 पर 3ft के आसपास प्रचार करने के लिए कितना समय लगता है, मैं कहूंगा कि हम भौतिक सीमाओं के बहुत करीब हैं
मार्क Omo

जवाबों:


33

यह इसलिए है क्योंकि विलंबता को कम करने के लिए DRAM की बैंडविड्थ को बढ़ाना आसान और सस्ता है। राम की एक खुली पंक्ति से डेटा प्राप्त करने के लिए, एक गैर तुच्छ राशि आवश्यक है।

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

इसके विपरीत, विलंबता को कम करने के लिए पूरे ऑपरेशन को फैलाने की आवश्यकता होती है, जो बहुत कठिन है। सबसे अधिक संभावना है, राम के हिस्सों को उच्च गति सीपीयू के समान प्रक्रिया पर बनाया जाना चाहिए, लागत में काफी वृद्धि करना (उच्च गति प्रक्रिया अधिक महंगी है, साथ ही प्रत्येक चिप को 2 अलग-अलग प्रक्रियाओं से गुजरना होगा)।

यदि आप RAM और हार्ड डिस्क / SSD के साथ CPU कैश की तुलना करते हैं, तो स्टोरेज बड़ा होने, और स्टोरेज तेज़ होने के बीच एक उलटा संबंध है। एक L1 $ बहुत तेज़ है, लेकिन केवल 32 और 256kB डेटा के बीच पकड़ बना सकता है। इसका कारण इतना तेज़ है क्योंकि यह छोटा है:

  • इसका उपयोग करके इसे सीपीयू के बहुत करीब रखा जा सकता है, जिसका अर्थ है कि इसे प्राप्त करने के लिए डेटा को कम दूरी तय करनी होगी
  • इस पर तारों को छोटा किया जा सकता है, जिसका अर्थ है कि डेटा को उस पार यात्रा करने में कम समय लगता है
  • यह बहुत अधिक क्षेत्र या कई ट्रांजिस्टर नहीं लेता है, इसलिए यह एक गति अनुकूलित प्रक्रिया पर बना है और प्रति बिट संग्रहीत शक्ति का उपयोग करना बहुत महंगा नहीं है

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


21
बहुत बढ़िया जवाब। मैं केवल भौतिक दूरी कारक पर जोर देना चाहता हूं: शायद 10 सेंटीमीटर की दूरी पर रैम की छड़ी, सिग्नल की गति के रूप में प्रकाश की गति का 1/3 से 1/2, प्लस पीसीबी पटरियों को रूट और मैच करने के लिए कुछ अतिरिक्त लंबाई, आप कर सकते हैं आसानी से 2ns दौर यात्रा के समय पर हो। अगर ~ 15% आपकी देरी अटूट सार्वभौमिक गति सीमा के कारण होती है ... तो आप मेरी राय में अच्छा कर रहे हैं।
mbrig

1
L1 को विशिष्ट रूप से भी व्यवस्थित किया गया है, सीधे कोर में है जो इसका उपयोग करता है, और SRAM का उपयोग करता है।
जंगल

@ वन और इसके आकार में काफी सख्त सीमा है - इसे बहुत बड़ा बनाइए, और इसे इतनी जल्दी रखने का कोई तरीका नहीं है।
लुआं

L1d कैश को विलंबता के लिए भारी रूप से अनुकूलित किया जा सकता है, उदाहरण के लिए सेट में सभी तरीकों के समानांतर टैग और डेटा प्राप्त करना। इसलिए जब कोई टैग मिलान करता है तो डेटा को आउटपुट में बदल देता है, बजाय इसे SRAM से लाने की आवश्यकता के। यह पते के उच्च बिट्स पर TLB लुकअप के साथ समानांतर में भी हो सकता है, यदि इंडेक्स बिट्स किसी पते के ऑफसेट-भीतर-पृष्ठ भाग से आते हैं। (ताकि आकार पर एक हार्ड सीमा है, @Luaan की तरह उल्लेख किया: आकार / संबद्धता <= के लिए काम देखें इस VIPT = PIPT गति हैक के लिए पेज आकार। VIPT कैश:? TLB और कैश के बीच कनेक्शन )
पीटर Cordes

6

C_Elegans जवाब का एक हिस्सा प्रदान करता है - यह कठिन है एक मेमोरी चक्र की समग्र विलंबता को कम करना है।

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

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


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

आधुनिक इंटेल सीपीयू पर, मेमोरी लेटेंसी सिंगल-कोर बैंडविड्थ के लिए सीमित कारक है : बैंडविड्थ मैक्स_कंसीसेंसी / लेटेंसी से अधिक नहीं हो सकती है, और एक कोर में उड़ान में ऑफ-कोर अनुरोधों के लिए सीमित क्षमता है। (रिंग बस में अधिक हॉप्स से अधिक uncore विलंबता के साथ) एक कई कोर जिऑन है बदतर है और अधिक DRAM नियंत्रकों के बावजूद, क्वाड-कोर डेस्कटॉप चिप की तुलना में सिंगल-कोर बैंडविड्थ। एकल-थ्रेडेड मेमोरी थ्रूपुट के लिए ब्रॉडवेल-ई की तुलना में स्काईलेक इतना बेहतर क्यों है? । यह कई कोर Xeon पर मेमोरी बी / डब्ल्यू को संतृप्त करने के लिए कई और धागे लेता है।
पीटर कॉर्ड्स

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

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

2

मेरे पास इतना अंतर्दृष्टि नहीं है, लेकिन मुझे उम्मीद है कि यह थोड़ा सा है।

आर्थिक

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

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

तकनीकी

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

मौलिक

एक उदाहरण के रूप में (दोनों सर्किट हैं): अधिक गति प्राप्त करने का सबसे आसान तरीका (एसएसडी द्वारा उपयोग किया जाता है), बस कई घटकों पर लोड फैलाना है, इस तरह से 'प्रसंस्करण' गति भी बढ़ जाती है। एक ही समय में 1 यूएसबी स्टिक से डेटा पढ़ने के बजाय, एक ही समय में 8 यूएसबी स्टिक रीडिंग का उपयोग करने और परिणामों के संयोजन की तुलना करें।


1
SSDs को SDRAM विलंबता के साथ वास्तव में क्या करना है?
C_Elegans

@C_Elegans वे दोनों सर्किट हैं, इस 'सामान्य' सवाल के लिए मुझे नहीं लगता कि इतना अंतर है।
मिशेल किजर्स

2
एक पेज खोलने के लिए समय की मात्रा वास्तव में इतना कम नहीं हुई है कि प्रीचार्ज चक्र के कारण; एक दशक पहले की तुलना में आवश्यक ऊर्जा की मात्रा आज बहुत भिन्न नहीं है। मेरे अनुभव में पहुँच समय पर हावी है।
पीटर स्मिथ

5
@MichelKeijzers जब वे दोनों सर्किट होते हैं, SSDs और SDRAM बहुत अलग उपयोग के मामलों की सेवा करते हैं, और डेटा भंडारण के लिए विभिन्न तकनीकों का उपयोग करते हैं। इसके अतिरिक्त, यह कहते हुए कि सीपीयू को वास्तव में तेज रैम की आवश्यकता नहीं है, बहुत अधिक समझ में नहीं आता है, पूरे कारण से अधिकांश आधुनिक सीपीयू में कैश के 3 स्तर हैं क्योंकि सीपीयू की सेवा के लिए उनके रैम को पर्याप्त तेज नहीं बनाया जा सकता है।
C_Elegans

1
आपने कहा कि बड़े भंडारण के लिए एसएसडी हैं। क्या आपका मतलब तेज था ? एक hdd की तुलना में ssd में स्टोरेज की समान राशि प्राप्त करना अधिक महंगा है। SSDs का मुख्य विक्रय बिंदु गति और शायद शोर और विश्वसनीयता है। क्षमता के लिए, HDD अभी भी बेहतर हैं
user198712
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.