आईएसए गलतियों को माफ नहीं करता है

-X86 एक ऐतिहासिक गलतफहमी है, - मास्टर और 80 में पोलिमिक उत्साह नहीं खोया।
"वास्तव में, वह सर्वर बाजार का 95% हिस्सा है," मैंने सुस्त जवाब दिया। मैं सौ बार हैक किए गए विषय पर बहस नहीं करना चाहता
- और मैं पहले से ही इन उपसर्गों में भ्रमित हूं, - शिक्षाविद ने भरोसा नहीं किया। - प्रति निर्देश 15 बाइट्स, यह अकल्पनीय है!
- ठीक है, बर्फ नहीं, बिल्कुल। लेकिन कौन बेहतर है?
- हाँ, किसी को भी, कम से कम एआरएम-ए।
"मैं अभी भी नहीं समझ पाया हूँ।" गुणा के साथ जोड़ होना चाहिए?
- चाहिए।
- और तार्किक संचालन के साथ बदलाव?
- हाँ।
- और सेव के साथ डाउनलोड भी। उन्हें कैसे कहा जाता है और इनकोडिंग में क्या अंतर है?

हमेशा की तरह, मुझे बहुत बाद में शिक्षक की शुद्धता का एहसास हुआ। जब मैं किसी भी तरह खुद को खुश करने के लिए एक उदास सर्दियों की शाम में आदेशों के डिकोडर लिखने के लिए बैठ गया। मैं VHDL पर ARM के लिए एक साधारण डिकोडर (और मैं इसे इतना जानता हूं) को एक दो दिनों में चित्रित करने में कामयाब रहा। सच है, मुझे पश्चाताप हुआ, मेरे पास एक धोखा पत्र था। :)

छवि

X86 के लिए यह एक हफ्ते, या दो, या एक महीने के लिए संभव नहीं था ... यहां तक ​​कि मूल सेट के लिए भी।

यहाँ अंतर केवल R86C में नहीं है (कम इंस्टीट्यूशन सेट कम्प्यूटिंग के लिए) ARM के लिए और CISC (कॉम्प्लेक्स इंस्ट्रक्शन सेट) X86 के लिए। अंतर ऐतिहासिक विकास के मार्ग में नहीं है। 40 से अधिक साल पहले, और यह सब 1978 में शुरू हुआ, X86 ISA (इंस्ट्रक्शन सेट आर्किटेक्चर) अपने स्वयं के आंतरिक तर्क के साथ कमांड का काफी कॉम्पैक्ट सेट था। लेकिन समय बीत गया, बस की क्षमता में वृद्धि हुई, रजिस्टरों का विस्तार (सिमडी सहित) हुआ, और टीमों की संख्या लगातार बढ़ रही थी। फिर एक व्यक्ति ने X86 में निर्देशों की संख्या को गिनने के लिए एक दिलचस्प प्रयास किया । वह मैनुअल खोलने के लिए बहुत आलसी था या नहींऔर उन्हें गिनें, या तो उन्हें "नॉनलेस" ऑपकोड्स (ऐसी टीमें जिनका नाम भी नहीं है) के अस्तित्व के बारे में पता था, या वे तर्क के सर्वनाश में विश्वास करते थे। जैसा कि यह समझना आसान है, तर्क शक्तिहीन था। :) वैसे, मैंने वर्ष (या पीढ़ी के अनुसार) में X86 निर्देशों की संख्या में वृद्धि का एक ग्राफ खोजने की कोशिश की। मैं अभी तक नहीं कर सका (शायद किसी के पास है?) लेकिन मुझे यहां ऐसी तस्वीर मिली

छवि

ईमानदार होने के लिए, मुझे नहीं पता कि X86 ISA में कितने निर्देश हैं। लेकिन मुझे अच्छी तरह से याद है कि मैंने खुद विकास में निवेश किया था, बिना यह महसूस किए कि आईएसए में हर नए बिट को "हमेशा के लिए" रखने का लेबल है। और इंटेल पर मेरे जैसे कई हजार "निर्माता" थे। और अपनी सभी कल्पनाओं को अंकित करने के लिए बिट्स में लगातार कमी थी। :) सभी नए उपसर्गों को मौजूदा कमांड सेट में जोड़ा गया था: REX, VEX ... पिछले चार-बाइट (EVEX) एक्सटेंशन को AVX-512 के लिए पेश किया गया था। वैसे, इन 4 बाइट्स में एआरएम कमांड ( एसवीई को ध्यान में रखते हुए ) का पूरा सेट हटा दिया जाता है। एआरएम शुरुआत में सरलता, कॉम्पैक्टनेस और एक्स्टेंसिबिलिटी के बुनियादी सिद्धांतों पर अपनी कमांड प्रणाली का निर्माण करते हुए दूसरे रास्ते पर चला गया।

अंतर को समझा जा सकता है यदि हम प्रोग्रामर के दृष्टिकोण से सर्किट डिजाइनर के दृष्टिकोण पर स्विच करते हैं। और यह ज्ञात है कि ट्रांजिस्टर एक महान चीज है, लेकिन यह धीरे-धीरे स्विच करता है और बेशर्मी से ऊर्जा को नष्ट कर देता है। और अन्य चीजें समान होने के नाते, यह बेहतर होगा अगर उनमें से कम थे। अब, x86 निर्देशों के लिए डिकोडिंग एल्गोरिथ्म पर एक नज़र डालें (जिस समस्या को मैं हल करने की कोशिश कर रहा था)।

छवि

और जैसा कि वे कहते हैं, एआरएम और एक्स 86 के लिए इनपुट पथ (सामने के छोर) में अंतर महसूस करते हैं। यहां यह तर्क दिया जा सकता है कि सामने का छोर कर्नेल का एक बहुत छोटा हिस्सा है, केवल 10% के बारे में। हां, लेकिन यह मत भूलो कि यह सभी तर्क चिप पर कोर की संख्या से गुणा किया जाता है। और यह गंभीर है।

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

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

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

All Articles