सीपीयू आर्किटेक्चर प्रक्रियात्मक रनटाइम के प्रति पक्षपाती हैं?


13

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

मुझे इस बात का आभास है कि सी। जैसे प्रक्रियात्मक रनटाइम के लिए वर्तमान सीपीयू डिज़ाइन को अधिक अनुकूलित किया जा सकता है। यदि हम इसके बजाय समवर्ती रनटाइम के लिए ऑप्टिमाइज़ करने जा रहे हैं, तो सीपीयू अलग कैसे दिखेंगे?

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

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

सीपीयू आर्किटेक्चर समवर्ती कोड पर प्रक्रियात्मक कोड के पक्षपाती हैं; या आधुनिक सीपीयू पर्याप्त रूप से सामान्य उद्देश्य हैं जो एक उच्च समवर्ती भाषा को नुकसान नहीं पहुंचाते हैं?


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

@ गिल्स हां। हालांकि एक अलग सवाल, यह वास्तव में एक दिलचस्प अवलोकन है - शायद इटेनियम में पके हुए समानांतरवाद आधुनिक समवर्ती भाषाओं के लिए बेहतर होगा?
पहर

@ गिल्स: और इसी तरह, नए मिल आर्किटेक्चर को समानता और कम लागत वाले स्विच को ध्यान में रखकर बनाया गया है। उदाहरण के लिए, सभी "प्रक्रियाओं" के लिए एक एकल वर्चुअल एड्रेस स्पेस का उपयोग करके, यह पिछले कैश स्तर और डिवाइस नियंत्रकों के बीच टीएलबी को पीछे धकेलता है (स्लाइड देखें millcomputing.com/docs/memory का 49 )।
मैथ्यू एम।

1
@pedAntic रस्ट को रनटाइम की आवश्यकता एक गलत धारणा है जो बनाना आसान है: chat.stackoverflow.com/transcript/message/24171983#24171983 । आपका प्रश्न इस ग़लतफ़हमी का समर्थन करता है जो रुस्त के लिए अच्छी बात नहीं है।
आर्टेमग्र सिप

1
@pedAntic आप देखते हैं, रस्ट का एक समवर्ती रनटाइम (हरे रंग के थ्रेडिंग के लिए) था, लेकिन यह अब और नहीं करता है। अभी Rust समरूप प्रदर्शन प्रोफ़ाइल के संबंध में C के समान ही समान रूप से लीग में है। C से एकमात्र अंतर यह है कि Rust में स्थैतिक विश्लेषण अधिकांशतः सुरक्षित बनाता है।
आर्टेमग्र सिप

जवाबों:


1

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

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

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

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


0

बिना किसी संदेह के, हाँ।

विशेष रूप से, C99 द्वारा निहित संचार मॉडल साझा-मेमोरी है। अधिक उन्नत समवर्ती भाषाओं में समृद्ध संचार मॉडल हैं, जैसे संदेश गुजरने वाले चैनल (जैसे जंग में)।

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

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