M1, RISC-V के उभार का संकेत देता है
(medium.com/@erik-engheim)"M1 पैरेडाइम शिफ्ट की शुरुआत के रूप में RISC-V के लिए मददगार होगा, लेकिन वैसा नहीं जैसा आप सोचते हैं"
"M1 चिप इतना तेज़ क्यों है?" लिखने वाले इंजीनियर का यह फ़ॉलो-अप लेख है। इसमें RISC-V के भविष्य का दिलचस्प नज़रिये से अनुमान लगाया गया है।
M1 के प्रदर्शन के कारण:
-
बहुत सारे decoders और OoO out-of-order execution
-
GPU, NPU, DSP जैसे कई dedicated chips
यह लेख दूसरे बिंदु, यानी Heterogeneous कंप्यूटिंग, पर अधिक विस्तार से बात करता है।
Dedicated chips को कई नामों से बुलाया जा सकता है, लेकिन यहाँ उन सबको Coprocessor (या Accelerator) कहा गया है।
-
Coprocessor कोई पूरी तरह नया ट्रेंड नहीं है
-
1985 में आए Amiga 1000 में भी ऑडियो/ग्राफ़िक्स के लिए coprocessors थे, और GPU भी एक coprocessor है
-
Google का TPU (Tensor Processing Unit) भी मशीन लर्निंग के लिए optimized coprocessor है
[ Coprocessor क्या है ]
-
CPU से अलग, यह अपने आप काम नहीं कर सकता। सिर्फ coprocessor डाल देने से कंप्यूटर नहीं बन जाता; यह बस किसी खास काम में अच्छा special-purpose processor होता है
-
शुरुआती उदाहरण Intel का 8087 Floating Point Unit (FPU) था। Intel 8086 integer गणना में अच्छा था, लेकिन floating-point operations में नहीं
-
Integer गणना से floating-point operations को emulate किया जा सकता था, लेकिन वह धीमा था। यह वैसा ही है जैसे शुरुआती microprocessors जोड़/घटाव तो कर सकते थे, लेकिन गुणा नहीं; इसलिए कई बार जोड़ करके multiplication करना पड़ता था
-
यानी, "जटिल गणितीय गणनाओं को सरल कामों की पुनरावृत्ति से संसाधित किया जा सकता है"
-
सभी coprocessors मूल रूप से यही करते हैं। CPU भी coprocessor का काम कर सकता है; बस simple operations को बार-बार दोहराना पड़ता है
-
शुरुआती GPU की ज़रूरत इसलिए पड़ी क्योंकि लाखों polygons/pixels पर एक ही गणना को दोहराना CPU पर बहुत समय लेता था
[ Coprocessor में डेटा कैसे In/Out होता है ]
-
Mouse/keyboard/screen से लेकर GPU/FPU/Neural Engine तक, सभी coprocessors किसी खास memory तक पहुँचकर data को पढ़ते और लिखते हैं
-
ये काम device drivers संभालते हैं, इसलिए सामान्य software developers को यह सब देखने की ज़रूरत नहीं पड़ती
→ DMA (Direct Memory Access) controller वगैरह यही काम करते हैं
-
DOS के दौर में C/C++ में pointers की मदद से video memory address को सीधे access करके pixels बदले जा सकते थे
-
Coprocessors इसी तरह काम करते हैं; NPU, GPU, T1 आदि सभी के पास अपने communication addresses होते हैं, और वे asynchronous communication कर सकते हैं
-
CPU पहले Neural Engine या GPU को भेजे जाने वाले पूरे command sequence को memory में रखता है, फिर उसका address Neural Engine/GPU को बताता है
-
CPU को coprocessor के command और data process करने तक इंतज़ार नहीं करना पड़ता, इसलिए यहाँ interrupts की ज़रूरत होती है
[ Interrupts कैसे काम करते हैं ]
-
Graphics/network cards PC में लगते हैं और उनके लिए assigned interrupt lines होती हैं
-
यह CPU से सीधे जुड़ी लाइन की तरह काम करती है; activate होते ही CPU बाकी काम छोड़कर interrupt handle करता है
-
असल में CPU अपनी current position और registers को memory में save कर देता है ताकि बाद में वापस लौट सके
-
फिर interrupt table में जाकर देखता है कि कौन-सा काम करना है। इस table में interrupt trigger होने पर चलने वाले program addresses होते हैं
-
Programmer को यह सब दिखाई नहीं देता; उसे यह किसी event पर register की गई callback function जैसा लगता है। Device driver low-level पर यह सब संभालता है
-
यह समझाने का कारण यह है कि coprocessor इस्तेमाल करते समय भीतर क्या होता है, यह जानने से यह समझ आता है कि वास्तविक communication में क्या-क्या शामिल है
-
Interrupts का उपयोग करने से बहुत सारे काम parallel में होते हैं
→ जब CPU mouse की वजह से interrupt होता है, तब application network card से image ला सकता है; mouse हिलने के बाद CPU नए coordinates लेता है और उन्हें GPU को भेजकर नए स्थान पर mouse cursor draw कराता है। जब GPU cursor draw कर रहा होता है, तब CPU network से आई image को process करना शुरू कर सकता है
- ऐसे interrupts का उपयोग करके M1 के Neural Engine को जटिल machine learning tasks भेजे जा सकते हैं ताकि WebCam से चेहरों की पहचान हो सके। क्योंकि image data को Neural Engine process करता है, इस दौरान कंप्यूटर और CPU दूसरे काम करते हुए भी user को responsive बने रह सकते हैं
[ The Rise of RISC-V ]
-
2010 में UC Berkeley की parallel computing lab ने ऐसे भविष्य की दिशा में काम किया जहाँ coprocessors का उपयोग और अधिक होगा
-
उन्होंने Moore's Law के अंत को इस रूप में देखा कि general-purpose CPU cores को और निचोड़कर आसानी से performance नहीं बढ़ाई जा सकती
→ इसलिए special hardware coprocessors की ज़रूरत बढ़ी
- Clock frequency को heat और power consumption जैसी सीमाओं की वजह से आसानी से नहीं बढ़ाया जा सकता
→ इसका एक तरीका बहुत सारे decoders और OoO out-of-order execution है
→ देखें: "M1 चिप इतना तेज़ क्यों है?" https://hi.news.hada.io/topic?id=3315
[ Transistor budget CPU cores पर खर्च करें या Coprocessor पर ]
-
सिर्फ 128 cores तक बढ़ा देने से desktop system ज़्यादा efficient नहीं हो जाता
-
1980 के शुरुआती दौर में अगर 20,000 transistors का budget होता, तो 15,000 transistors लगाकर CPU बना लेना पर्याप्त था
-
अगर CPU 100 तरह के अलग-अलग काम करता है, और उनमें से हर एक काम के लिए अलग coprocessor बनाने में 1,000 transistors लगें, तो सभी कामों के लिए coprocessors बनाने में 100,000 transistors चाहिए होंगे, जो budget से बाहर है
[ Transistors बढ़ने के साथ रणनीति बदली ]
-
शुरुआती design में general-purpose computing पर ध्यान देना ज़रूरी था, लेकिन आज इतने अधिक transistors उपलब्ध हैं कि सवाल यह है कि उनका किया क्या जाए
-
इसलिए coprocessors को design करना एक बड़ा काम बन गया है। कई नए coprocessors बनाने पर बहुत research हो रही है
-
इस research में अक्सर accelerators को बहुत बुनियादी, लगभग naive स्थिति से विकसित करना पड़ता है
-
CPU के विपरीत, ये हर चरण के instructions को पढ़कर process नहीं करते, इसलिए memory access या data cleanup जैसी चीज़ें खुद नहीं जानते
-
इसका सरल समाधान है कि controller के रूप में एक simple CPU का उपयोग किया जाए
-
यानी, पूरे coprocessor system को ऐसी specialized accelerator circuitry के रूप में बनाया जाता है जिसे एक simple CPU नियंत्रित करता है ताकि खास काम तेज़ किए जा सकें
→ उदाहरण के लिए Neural Engine/Tensor Processing Unit जैसे chips बड़े registers को manipulate कर सकते हैं जिनमें matrices store की जा सकें
[ RISC-V को Accelerators को नियंत्रित करने के लिए custom बनाया गया है ]
-
यही RISC-V के design का उद्देश्य था
-
इसमें सामान्य CPU tasks के लिए 40~50 instructions का एक minimal instruction set है
→ x86 CPU में 1500 instructions का set है
-
बड़े fixed instruction set के बजाय, RISC-V को extensions की अवधारणा के इर्द-गिर्द design किया गया है
-
क्योंकि सभी coprocessors अलग होते हैं, इसलिए RISC-V को इस तरह configure किया जा सकता है कि उसमें core instruction set के साथ coprocessor की ज़रूरत के मुताबिक extension instructions भी हों
लेख का मुख्य तर्क यही है:
-
Apple का M1 पूरी industry को ऐसे भविष्य की ओर ले जाएगा जहाँ coprocessors हावी होंगे
-
और इन coprocessors को बनाने में "RISC-V पहेली का एक अहम हिस्सा" होगा
[ RISC-V से Coprocessor बनाने के फायदे ]
-
Chip बनाना जटिल और महंगा काम है
-
Chip verification के tools बनाना, test programs चलाना, diagnosis करना और बाकी बहुत-सी चीज़ों के लिए भारी effort चाहिए
-
यही आज ARM के मूल्य का एक हिस्सा है। उसके पास बड़ा ecosystem है, इसलिए designs को verify और test करना संभव है
-
इसलिए अपना खुद का instruction set रखना अच्छा विचार नहीं है
-
RISC-V में standards हैं जिनके आधार पर कई कंपनियाँ tools बना सकती हैं, और ecosystem बनने से कई कंपनियाँ burden साझा कर सकती हैं
-
फिर ARM का ही उपयोग क्यों न किया जाए? क्योंकि ARM एक general-purpose CPU के रूप में बना है और उसका fixed instruction set बड़ा है
-
ग्राहक मांग और RISC-V से प्रतिस्पर्धा के कारण ARM ने भी 2019 में extensions के लिए instruction set public किया
-
लेकिन समस्या अब भी वही है कि इसे शुरू से इस काम के लिए design नहीं किया गया था
→ पूरा ARM toolchain यह मानकर चलता है कि बड़ा ARM instruction set implement किया गया है
→ लेकिन coprocessors बड़े instruction set को चाहते भी नहीं और उनकी ज़रूरत भी नहीं होती
→ Coprocessors ऐसे tool ecosystem को पसंद करते हैं जो minimal fixed base instruction set और extensions की अवधारणा पर बना हो
- यह क्यों फायदेमंद है, इसका insight Nvidia के RISC-V उपयोग से मिलता है
→ बड़े GPU को controller के रूप में किसी तरह का general-purpose CPU चाहिए होता है
→ Nvidia ने FALCON: FAst Logic CONtroller नाम की chip बनाई और उसका उपयोग किया
→ कम लागत, उच्च दक्षता
-
RISC-V का instruction set छोटा और सरल है, इसलिए यह ARM समेत सभी competitors से आगे निकलता है
-
Nvidia ने RISC-V चुनकर छोटे chips और न्यूनतम power consumption को संभव बनाया
-
Extension mechanism का उपयोग करके ज़रूरत के काम के लिए केवल आवश्यक instructions ही जोड़े जा सकते हैं
[ ARM नया x86 बन जाएगा ]
-
विडंबना यह है कि हम ऐसा भविष्य देख सकते हैं जहाँ Mac और PC दोनों ARM पर चलेंगे
-
लेकिन उनके आसपास का custom hardware RISC-V आधारित coprocessors से भरा होगा
-
जैसे-जैसे coprocessors आम होंगे, SoC पर ARM से ज़्यादा RISC-V chips हो सकते हैं
-
भविष्य ARM or RISC-V नहीं, बल्कि ARM and RISC-V होगा
[ ARM, RISC-V coprocessors की सेना का नेतृत्व करेगा ]
-
General-purpose ARM processors केंद्र में होंगे, और उनके साथ graphics, encryption, video compression, machine learning और signal processing संभालने वाली RISC-V coprocessors की सेना होगी
-
UC Berkeley के प्रोफेसर David Patterson और उनकी टीम ने इस भविष्य को आते देखा और RISC-V को उसी के अनुरूप ढाला
-
हर तरह के special hardware और microcontrollers RISC-V में गहरी रुचि दिखा रहे हैं, और आज ARM जिन कई क्षेत्रों पर हावी है, वहाँ RISC-V पहुँच सकता है
[ क्या RISC-V को main CPU के रूप में इस्तेमाल नहीं किया जा सकता? ]
-
बहुत से लोग पूछते हैं कि ARM को पूरी तरह RISC-V से क्यों न बदल दिया जाए
-
कुछ लोगों का कहना है कि RISC-V का अत्यधिक सरल instruction set, ARM और x86 जैसा high performance नहीं दे पाएगा
-
लेकिन RISC-V को main processor के रूप में पर्याप्त रूप से इस्तेमाल किया जा सकता है, और performance कोई मूल समस्या नहीं है
→ बस, ARM जैसा high-performance RISC-V बनाने वाला कोई चाहिए
→ यानी यह संभव है, लेकिन मुद्दा momentum का है। MacOS और Windows पहले से ही ARM पर चल रहे हैं
→ इसलिए अल्पावधि में MS या Apple किसी और hardware transition के लिए मेहनत नहीं करेंगे
8 टिप्पणियां
दिलचस्प है। अच्छे सारांश के लिए धन्यवाद।
अब वह दिन भी आएगा जब स्कूलों में architecture की क्लास x86 या amd64 नहीं, बल्कि arm या risc-v को आधार बनाकर पढ़ाई जाएगी..
पहले यहाँ ARM के एक पूर्व इंजीनियर द्वारा RISC-V की आलोचना वाला लेख भी पोस्ट हुआ था।
https://hi.news.hada.io/topic?id=3137
ऊपर की बात के अनुसार, RISC-V अपनाने वाली chips की विविधता बढ़ना शायद इरादतन ही होगा।
यह लगातार और दिलचस्प होता जा रहा है.
Intel और AMD की प्रतिक्रिया को लेकर उत्सुकता बढ़ रही है.
जहाँ तक मुझे पता है, चीन लगभग पूरी तरह RISC-V पर दांव लगा रहा है.. सच में कल्पना भी नहीं कर सकता कि भविष्य कैसा होगा
मुझे भी चीन का ख़याल आया। अगर अमेरिका की रोक-टोक लगातार झेल रही Huawei आगे आकर इसे main CPU के तौर पर बनाने की कोशिश करे, तो क्या होगा, हाहा
Huawei के लिए स्थिति ऐसी है कि वह न सिर्फ ARM बल्कि TSMC भी इस्तेमाल नहीं कर सकता, इसलिए कहना गलत नहीं होगा कि high-performance CPU development खुद ही लगभग बर्बाद हो चुकी है। हाँ, अगर बात उनकी अपनी network equipment की हो, जहाँ प्रदर्शन की मांग अपेक्षाकृत कम है, तो शायद अलग बात हो सकती है.
लेकिन कई दूसरी कंपनियाँ RISC-V का इस्तेमाल कर रही हैं, इसलिए लगता है कि नतीजे इन्हीं कंपनियों से सामने आएँगे।
आह, मैंने यह सोचा ही नहीं था कि खुद TSMC ही अटका हुआ है। जब तक SMIC 7nm से आगे बढ़कर 5nm तक की process नहीं बना लेता, तब तक यह मुश्किल ही लगता है।
ये वाकई बहुत अच्छा लिखते हैं। यह भी मैंने बड़े दिलचस्पी से पढ़ा।
RISC-V के एक और विकल्प बनने की संभावना के बारे में बहुत लोगों ने अनुमान लगाया था,
लेकिन इस तरह सहायक प्रोसेसर के लिए यह एक बेहतरीन चिप बन सकता है, इस नज़रिए से मैंने नहीं सोचा था।