स्टालिन कंपाइलर क्रूरता से अनुकूलन करता है, लेकिन कैसे?


14

जेएम सिसकींड के शोध कथन में कहा गया है:

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

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

सिसिंड, जेएम 2000 ए। प्रवाह-निर्देशित हल्के सीपीएस रूपांतरण। तैयारी में।

सिसिंड, जेएम 2000 बी। प्रवाह-निर्देशित पॉलीविरेंस। तैयारी में।

सिसिंड, जेएम 2000 सी। प्रवाह-निर्देशित प्रतिनिधित्व चयन। तैयारी में।

सिसिंद, जेएम 2000 डी। प्रवाह-निर्देशित भंडारण प्रबंधन। तैयारी में

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

जवाबों:


11

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

मानक एमएल के लिए एमएलटन कंपाइलर एक समान काम करता है ( http://mlton.org/ )। इसके बारे में एक प्रस्तुति (कम से कम) है: http://mlton.org/pages/References/attachments/060916-mlton.pdf

पहले काम क्रेग चैम्बर्स और उनके समूह द्वारा वाशिंगटन विश्वविद्यालय में किया गया था (उदाहरण के लिए: http://www.cs.washington.edu/research/projects/cecil/www/pubs/jdean-thesis.html )। यह स्व और बाद में सेसिल / भंवर के संदर्भ में किया गया था।

स्कीम / लिस्प समुदाय में संभवतः अधिक काम है। आप शायद "संपूर्ण कार्यक्रम अनुकूलन" पर विचार करना चाहते हैं।

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