JVM स्टैक-आधारित और Dalvik VM रजिस्टर-आधारित क्यों है?


99

मैं उत्सुक हूं कि सूर्य ने जेवीएम को स्टैक-आधारित बनाने का फैसला क्यों किया और Google ने DalvikVM को रजिस्टर-आधारित बनाने का निर्णय लिया?

मुझे लगता है कि जेवीएम वास्तव में यह नहीं मान सकता है कि टारगेट प्लेटफॉर्म पर एक निश्चित संख्या में रजिस्टर उपलब्ध हैं, क्योंकि यह प्लेटफॉर्म स्वतंत्र होना चाहिए। इसके बाद यह सिर्फ JIT कंपाइलर को रजिस्टर-आवंटन आदि को स्थगित कर देता है। (यदि मैं गलत हूं तो मुझे सही करों।)

तो एंड्रॉइड लोगों ने सोचा, "अरे, यह अक्षम है, चलो एक रजिस्टर आधारित vm के लिए तुरंत जाएं ..."? लेकिन रुकिए, कई अलग-अलग एंड्रॉइड डिवाइस हैं, किस संख्या में रजिस्टरों ने दाल्विक को निशाना बनाया? क्या Dalvik opcodes रजिस्टर की एक निश्चित संख्या के लिए हार्डकोड किया गया है?

क्या बाजार के सभी वर्तमान Android उपकरणों में लगभग समान रजिस्टर हैं? या, क्या डेक्स-लोडिंग के दौरान किया गया एक रजिस्टर पुनः आवंटन है? यह सब एक साथ कैसे फिट होता है?


5
क्या वह Google का DalvikVM रजिस्टर-आधारित बनाने का निर्णय था? मुझे लगता है कि Google द्वारा Android इंक
रोबोएलेक्स

1
तुम बिल्कुल सही हो। (हालांकि इस सवाल के लिए बहुत प्रासंगिक नहीं है;)
aioobe

जवाबों:


69

स्टैक-आधारित VM की कुछ विशेषताएँ हैं जो जावा के डिज़ाइन लक्ष्यों के साथ अच्छी तरह से फिट हैं:

  1. स्टैक-आधारित डिज़ाइन लक्ष्य हार्डवेयर (रजिस्टरों, CPU सुविधाओं) के बारे में बहुत कम धारणाएं बनाता है, इसलिए एक विस्तृत विविधता वाले हार्डवेयर पर VM को लागू करना आसान है।

  2. चूंकि निर्देशों के लिए ऑपरेंड काफी हद तक निहित हैं, इसलिए ऑब्जेक्ट कोड छोटा हो जाएगा। यदि आप एक धीमी नेटवर्क लिंक पर कोड डाउनलोड करने जा रहे हैं तो यह महत्वपूर्ण है।

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


मैं यह भी भूल गया था कि दाल्विक के शुरुआती संस्करण में एक जेआईटी शामिल नहीं था। यदि आप सीधे निर्देशों की व्याख्या करने जा रहे हैं, तो एक रजिस्टर-आधारित योजना संभवतः व्याख्या प्रदर्शन के लिए विजेता है।


1
ठीक है, यह दिलचस्प है। तो क्या DalvikVM लक्ष्य डिवाइस पर रजिस्टरों की कोई न्यूनतम संख्या मान लेता है?
aioobe

1
इसके अलावा, मैंने पढ़ा है कि कुछ लोग अपने लैपटॉप पर एंड्रॉइड इंस्टॉल कर रहे हैं क्योंकि यह "लाइट-वेट" ओएस है ... यह एक बुरे विचार की तरह लगता है यदि लैपटॉप एआरएम नहीं है, और शायद कई रजिस्टरों के साथ एक आर्किटेक्चर है?
aioobe

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

1
मुझे याद नहीं है कि क्या Dalvik अनंत-रजिस्टर आधारित था, या एक निश्चित रजिस्टर फ़ाइल आकार था। यदि यह अनंत है, तो यह आर्किटेक्चर पर बेहतर प्रदर्शन करने की प्रवृत्ति रखता है जो आपके पास जो भी कोड चला रहे हैं उसके लिए "पर्याप्त" रजिस्टर हैं।
मार्क बेस्सी 20

अधिक विस्तृत विवरण यहां पाया जा सकता है: markfaction.wordpress.com/2012/07/15/…
noego

31

मुझे एक संदर्भ नहीं मिल रहा है, लेकिन मुझे लगता है कि सन ने स्टैक-आधारित बायोटेक दृष्टिकोण के लिए फैसला किया क्योंकि यह कुछ रजिस्टरों (जैसे IA32) के साथ आर्किटेक्चर पर जेवीएम को चलाना आसान बनाता है।

में Dalvik वी एम Internals गूगल आई / ओ 2008 से, Dalvik निर्माता दान बोर्न्स्टीन की स्लाइड 35 पर एक रजिस्टर के आधार पर वी एम को चुनने के लिए निम्नलिखित तर्क देता प्रस्तुति स्लाइड :

रजिस्टर मशीन

क्यों?

  • अनुदेश प्रेषण से बचें
  • अनावश्यक मेमोरी एक्सेस से बचें
  • निर्देश स्ट्रीम का कुशलतापूर्वक उपभोग करना (निर्देश के अनुसार उच्च अर्थ घनत्व)

और स्लाइड 36 पर:

रजिस्टर मशीन

आँकड़े

  • 30% कम निर्देश
  • 35% कम कोड इकाइयाँ
  • निर्देश धारा में 35% अधिक बाइट्स
    • लेकिन हम एक समय में दो का उपभोग करते हैं

बोर्नस्टीन के अनुसार यह "एक सामान्य अपेक्षा है कि जब आप क्लास फ़ाइलों के एक सेट को डेक्स फ़ाइलों में परिवर्तित करते हैं तो आप क्या पा सकते हैं"।

प्रस्तुति वीडियो का प्रासंगिक भाग 25:00 बजे शुरू होता है

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


13

मुझे नहीं पता कि रवि ने JVM स्टैक को आधार बनाने का फैसला क्यों किया। Erlangs आभासी मशीन, BEAM प्रदर्शन कारणों के लिए पंजीकृत है। और Dalvik भी प्रदर्शन के कारणों के आधार पर पंजीकृत होने लगते हैं।

से प्रो एंड्रॉयड 2 :

Dalvik स्टैक के बजाय मुख्य रूप से डेटा स्टोरेज की इकाइयों के रूप में रजिस्टरों का उपयोग करता है। Google परिणाम के रूप में 30 प्रतिशत कम निर्देशों को पूरा करने की उम्मीद कर रहा है।

और कोड आकार के बारे में:

Dalvik VM उत्पन्न जावा वर्ग की फ़ाइलों को लेता है और उन्हें एक या एक से अधिक Dalvik Executables (.dex) फ़ाइलों में जोड़ता है। यह कई क्लास फ़ाइलों से डुप्लिकेट जानकारी का पुन: उपयोग करता है, प्रभावी रूप से पारंपरिक .jar फ़ाइल से आधे से अंतरिक्ष की आवश्यकता (असम्पीडित) को कम करता है। उदाहरण के लिए, एंड्रॉइड में वेब ब्राउज़र ऐप की .dex फ़ाइल लगभग 200k है, जबकि समतुल्य असम्पीडित .jar संस्करण लगभग 500k है। अलार्म घड़ी की .xx फ़ाइल लगभग 50k है, और इसके .jar संस्करण में इसका आकार लगभग दोगुना है।

और जैसा कि मुझे याद है कंप्यूटर आर्किटेक्चर: एक मात्रात्मक दृष्टिकोण यह भी निष्कर्ष निकालता है कि स्टैक आधारित मशीन की तुलना में एक रजिस्टर मशीन बेहतर प्रदर्शन करती है।


2
अगर मुझे अनुमान लगाना था, तो मैं कहूंगा कि रवि ने JVM स्टैक को आधार बनाने का फैसला किया क्योंकि रजिस्टर मशीन की तुलना में इसे लागू करना आसान है। (लेकिन गैर-तुच्छ प्रदर्शन लागत पर, जैसा कि यहां उल्लेख किया गया है।)
मेसन व्हीलर

मुझे एक संदर्भ नहीं मिल रहा है, लेकिन मुझे लगता है कि सन ने स्टैक-आधारित बायोटेक दृष्टिकोण के लिए फैसला किया क्योंकि यह कम रजिस्टर आर्किटेक्चर पर जेवीएम को चलाना आसान बनाता है।
फ्लॉप

1
एक हार्डवेयर ISA के लिए, हाँ रजिस्टर मशीनों ने जीत हासिल की है। मूल रूप से प्रत्येक सीपीयू / माइक्रोकंट्रोलर एक रजिस्टर मशीन है, क्योंकि बाकी सब कुछ तुलना करके बेकार है। कुछ के पास बहुत कम रजिस्टर होते हैं, जैसे कि केवल एक संचायक और शायद एक या दो सूचक या सूचकांक रजिस्टर, लेकिन यह अभी भी सिद्धांत-गणना की भावना में एक रजिस्टर मशीन की तरह है। लेकिन हम उन वीएम के बारे में बात कर रहे हैं जिनकी व्याख्या की जाती है , इसलिए "रजिस्टर फाइल" यदि कोई है तो वास्तव में मेमोरी में होगा। जब तक आप देशी मशीन कोड को JIT- संकलित नहीं करते। स्टैक की तुलना में रेज के तेज होने के कारण बहुत अलग हैं।
पीटर कॉर्ड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.