क्या हम linux को RAM की तुलना में कुछ तेज चला सकते हैं?


21

यह शायद एक मूर्खतापूर्ण सवाल है, और गलतफहमी का परिणाम हो सकता है। मैं अभी CPU का अध्ययन कर रहा हूँ, और विशेष रूप से मेमोरी। मैं अभी पढ़ रहा था कि DRAM की तुलना में SRAM कितना तेज है लेकिन ज्यादा महंगा है। SRAM बहुत महंगा है: मैं एक बिट के लिए खरीदारी की और 16 MB के साथ लगभग 400 डॉलर में बैटरी वाला SRAM कार्ड पाया।

हाल ही में एक दोस्त ने उल्लेख किया कि वह रैम में पिल्ला लाइनक्स चला रहा है, और यह तेज़ है। मैंने देखा, हालाँकि, उस छोटे से कोर लाइन को और भी छोटा किया जा सकता है ... 8 एमबी जितना छोटा! यह मुझे सोच रहा है: क्या हम SRAM में लिनक्स चला सकते हैं? क्या यह सवाल और भी अच्छा है?

इस सवाल को गूगुलाना अप्रभावी साबित हुआ, लेकिन इसने अभी और सवाल उठाए। एक L3 कैश में लिनक्स चला सकता है? Intel Core i7 में L3 Cache हो सकता है जो 8MB के लिए फिट हो ... लेकिन क्या मैं एक स्पष्ट त्रुटि कर रहा हूं? इस और 'एम्बेडेड' लिनक्स के बीच क्या अंतर है?

यह सवाल है: क्या हम SRAM या L3 कैश में लिनक्स चला सकते हैं? क्या कुछ तेज है? हम कितनी तेजी से कर सकते हैं !?

जेड।


3
एंबेडेड लिनेक्स अक्सर राम या गैर वाष्पशील मेमोरी पर चलाए जाते हैं। एंबेडेड Linuxes अक्सर बस केवल विशिष्ट हार्डवेयर पर चलने, या कम विलंबता जैसे कुछ कम आम गिरी विकल्पों का उपयोग करने के लिए नीचे छीन कर रहे हैं
जर्नीमैन गीक

2
मुझे आश्चर्य है कि क्या इस सवाल का कोई व्यावहारिक उपयोग है?
रॉबर्ट नेस्टिरोज

4
एक क्रिया के रूप में "लिनक्स" का उपयोग करने के लिए +1 (अंतिम वाक्य में)!
वोरैक

जवाबों:


20

लिनक्स, या कोई अन्य ओएस नहीं जानता कि रैम कैसे काम करता है। जब तक मेमोरी कंट्रोलर ठीक से कॉन्फिगर हो जाता है (उदाहरण के लिए नॉन-एसआरएएम के लिए रिफ्रेश रेट सेट) तब तक ओएस पर ध्यान नहीं दिया जाता है कि यह प्लेन डायनेमिक मेमोरी (प्लेन रैम), फास्ट पेज मोड रैम (एफपी रैम, C64-ish से चलता है) समय), एक्सटेंडेड डेटा आउट मोड रैम (EDO), सिंक्रोनस रैम (SDRAM), डबल डेटा रेट SDRAMS (DDR 1/2/3) जो भी हो।

वे सभी यादृच्छिक स्थानों से पढ़ने और लिखने का समर्थन करते हैं। सब काम करेंगे।

अब कैश कुछ अलग है। सामग्री को बदलने के लिए आपको इसे लिखना नहीं है। जो रास्ते में मिल जाएगा। फिर भी, यह कुछ हद तक प्रयोग करने योग्य है। मुझे पता है कि कोरबूट कैश का उपयोग बूट के दौरान एक प्रकार की मेमोरी के रूप में करता है, इससे पहले कि मेमोरी कंट्रोलर ठीक से कॉन्फ़िगर किया गया हो। (विवरण के लिए, FOSDEM 2011 के दौरान कोरबूट वार्ता से वीडियो देखें)।

तो सिद्धांत हाँ में, आप इसका इस्तेमाल कर सकते हैं।

लेकिन : व्यावहारिक कार्यों के लिए 1 जीबी 'रेगुलर' 'मीडियम स्पीड' मेमोरी वाला सिस्टम केवल कुछ एमबी की तेज मेमोरी के साथ बहुत बेहतर प्रदर्शन करेगा। जिसका मतलब है कि आपके पास तीन विकल्प हैं:

  1. सामान्य 'सस्ते' तरीके से चीजों का निर्माण करें। यदि आपको अधिक गति चाहिए तो कुछ दर्जन अतिरिक्त कंप्यूटर जोड़ें (सभी 'धीमी' मेमोरी के साथ)
  2. या कीमत के साथ एक दर्जन कंप्यूटर का निर्माण और काफी कम तो एक दर्जन बार प्रदर्शन।

बहुत दुर्लभ मामलों को छोड़कर अंतिम समझदार नहीं है।


6
सीपीयू के मॉडल विशिष्ट रजिस्टरों (MSR) के माध्यम से कई CPU एक "कैश-अस-रैम" मोड का समर्थन करते हैं। यह भी ध्यान दें कि SRAM DRAM से अधिक बिजली की खपत करता है और यह एक डिज़ाइन फैक्टर भी है। यदि CPU का कैश पर्याप्त बड़ा या कर्नेल छोटा है तो आप इस कैश-अस-रैम मोड को सक्षम कर सकते हैं और इसे CPU पर SRAM में पूरी तरह से निष्पादित कर सकते हैं। हालाँकि प्रोग्राम आदि चलाने के लिए आपके पास सीमित मात्रा में RAM होगा। क्योंकि AFAIK कैश-अस-रैम और सामान्य मोड एक साथ काम नहीं करेंगे। मैं इसके बारे में गलत हो सकता है। भले ही यह किया गया हो, इन दिनों सीपीयू की अधिकांश गति L2, L3 कैश का उपयोग करने के कारण होती है।
लॉरेंस सी

@ यह है कि लिनक्स केवल (मैप्ड) मेमोरी एड्रेस की परवाह करता है?
एल्विन वोंग

SDRAM, सिंक्रोनस D (ynamic) RAM है, जबकि SRAM Static RAM है। मुझे नहीं पता कि आपको पहले पैराग्राफ में किसका उल्लेख करना था और मेरे पास "तुच्छ" संपादन करने के लिए प्रतिनिधि नहीं है, लेकिन शायद आप इसे ठीक कर सकते हैं? इसके अलावा, अच्छा जवाब।
बजे एक CVn

मुझे स्पष्ट करने में कोई आपत्ति नहीं है, लेकिन मुझे यकीन नहीं है कि आप क्या स्पष्ट करना चाहते हैं। क्या आप इसे टिप्पणी में जोड़ सकते हैं और मैं इसे संपादित करूंगा।
हेन्नेस

जब मैंने पहली बार इस टिप्पणी को पढ़ा तो मैंने देखा, "लिनक्स, या कोई अन्य ओएस यह नहीं जानता है कि रैम कैसे काम करता है।" आपका ब्रेकडाउन एक अच्छा है: मुझे लगता है कि मुझे कोई भ्रम नहीं था कि यह "बेहतर" होगा। मैं बस सोच रहा था कि क्या यह किया जा सकता है।
जिग्गी

8

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

जब कैश तब सामान्य रैम में वापस कॉपी किया जाएगा, जब पीसी एस 3 स्लीप मोड में जाता है। यह आवश्यक है क्योंकि कैश S3 मोड में नीचे संचालित हैं।


1
सभी कॉपी / कॉपी नहीं किए जा सकेंगे। Intel / x86 कैश संरचना के लिए: यदि मेरे पास 256KiB कैश और 1024KiB कैश है, तो मैं पता 0. पढ़ सकता हूं। इसे कैश में स्थान 0. पर संग्रहीत किया जाएगा। मैं फिर पता 1 पढ़ सकता हूं, और यह स्थान 1 पर कैश में संग्रहीत किया जाएगा हालांकि, अगर मैं (256Kib + 1) से पता पढ़ता हूं, तो भी कैश में पते 1 पर संग्रहीत किया जाएगा। कैश एक अतिरिक्त (टैग) SRAM का उपयोग करता है ताकि यह इंगित किया जा सके कि दोनों में से कौन संग्रहीत है। इसका मतलब है कि कैश आकार के गुणकों से पढ़ने से काम नहीं चलेगा। (ध्यान दें कि यह एक दुर्लभ चीज होगी और आमतौर पर इसे नजरअंदाज किया जा सकता है)।
हेन्नेस

यह तो विनीत है! जब मैं सोचता हूं कि एल 3 कैश में क्या महत्वपूर्ण है, तो मैं अनाड़ी रूप से सामान क्यों करूंगा जब मैं जीनियस की एक सेना को ऐसा करने के लिए इष्टतम चीज निर्धारित कर सकता हूं, और उस इष्टतम चीज को करने के लिए सीपीयू को प्रोग्राम कर सकता हूं। सही?
जिग्गी

3

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

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


2

"क्या हम L3 कैश में लिनक्स चला सकते हैं?"

नहीं , यह संभव नहीं है क्योंकि कैश मेमोरी सीधे / रैखिक रूप से संबोधित नहीं है।
कैश मेमोरी को डिज़ाइन करने के तरीके के कारण, CPU प्रोग्राम काउंटर (IP) रजिस्ट्री कैश मेमोरी में किसी स्थान को इंगित नहीं कर सकती है।

एक CPU कैश की अपनी स्वयं की "समरूपता" होती है और यह समरूपता कैश मेमोरी में "सामान्य" मेमोरी को "मैप" करने के तरीके को परिभाषित करती है। कैशे मैमोरी की यह विशेषता इस कारण से है कि कैशे मेमोरीज इतनी तेज हैं।


1

"क्या हम L3 कैश में लिनक्स चला सकते हैं?"

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

"क्या हम SRAM में लिनक्स चला सकते हैं?"

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

"क्या कुछ तेज है? हम कितनी तेजी से कर सकते हैं?!"

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


1

486 के दिनों में मशीनों का उपयोग किया जाता था जहां सभी रैम SRAM थे। यह तब है जब 8MB बहुत था, लेकिन आपकी बाधाओं से मेल खाता है। मुझे यकीन है कि 8MB का SRAM अब पीछे की तुलना में बहुत सस्ता है।

तो, आप SRAM में Linux चला सकते हैं यदि मशीन को इस तरह बनाया गया था। यह एक सैद्धांतिक नहीं है; हो गया है।

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.