32 पॉइंट द्वारा xguru 2020-12-04 | 17 टिप्पणियां | WhatsApp पर शेयर करें
  • M1 एक CPU नहीं, बल्कि एक बड़े silicon package में कई chips को समेटे पूरा system है। CPU उनमें से सिर्फ एक हिस्सा है

→ CPU, GPU, memory, I/O controller आदि को जोड़ने वाला SoC(System on a Chip)

  • बहुत सारे general-purpose cores डालने के बजाय, इसमें खास कामों के लिए optimized chips डाले गए हैं

→ CPU : OS और apps चलाता है

→ GPU : graphics काम करता है। app UI, 2D/3D games आदि

→ ISP(Image Processing Unit) : image processing की गति बढ़ाता है

→ DSP(Digital Signal Processor) : CPU से भी ज़्यादा math-intensive काम करता है। जैसे music file decompression

→ NPU(Neural Processing Unit) : machine learning, speech recognition, camera processing आदि को accelerate करता है

→ Video Encoder/Decoder : कम power में video files/formats प्रोसेस करता है

→ Secure Enclave - encryption, authentication, security

→ UMA(Unified Memory Architecture) : CPU, GPU और दूसरे cores के बीच तेज़ information exchange

इसी वजह से ये chips image/video editing और बड़े video encoding में शानदार performance देते हैं

  • Unified Memory Architecture(UMA) में खास क्या है?

→ इससे पहले के CPU/GPU integrated chips धीमे थे

दोनों अलग-अलग memory areas को अलग-अलग तरीकों से इस्तेमाल करते थे।

ऊपर से GPU ज़्यादा heat पैदा करता है, इसलिए बड़े cooling fan वाले विशाल cards ही high performance दे पाते थे

लेकिन ऐसा होने पर दोनों के बीच बहुत सारा data copy करना पड़ता है, इसलिए PCIe जैसी bus की ज़रूरत पड़ती है

→ Unified Memory में CPU/GPU के लिए अलग allocation नहीं होता, वे बस एक ही memory साथ में इस्तेमाल करते हैं

Shared Memory से अलग, CPU और GPU एक ही समय पर access कर सकते हैं, और location info share करके access करते हैं, इसलिए copying की ज़रूरत नहीं रहती

  • अगर यह SoC तरीका इतना अच्छा है, तो दूसरे manufacturers ऐसा क्यों नहीं करते?

→ कर रहे हैं। AMD ने CPU/GPU को एक ही silicon die पर रखकर APU form factor बनाना शुरू किया

→ लेकिन इसे वास्तव में करना मुश्किल है। क्योंकि SoC का मतलब पूरे computer को एक chip पर लाना है, इसलिए यह HP या Dell जैसे computer manufacturers के लिए ज़्यादा उपयुक्त है

→ Intel और AMD का business model उन general-purpose CPUs पर आधारित है जिन्हें लोग PC motherboard में लगाते हैं,

नया SoC market अलग-अलग vendors के physical products जोड़ने का नहीं, बल्कि IP(Intellectual Property) को assemble करने का market है

→ क्या Intel, AMD, Nvidia सच में Dell या HP को IP license दे सकते हैं?

→ बेशक Intel और AMD complete SoC बेच सकते हैं, लेकिन CPU maker/PC manufacturer/MS के बीच interest conflict हो सकता है (जैसे क्या शामिल किया जाए)

→ लेकिन Apple के लिए यह आसान है। वे सब कुछ खुद बनाते हैं। "They control the whole widget"

  • CPU को तेज़ बनाना सबसे बुनियादी स्तर पर किस चुनौती का सामना है

→ M1 का तेज़ general-purpose CPU core Firestorm सच में बहुत तेज़ है। यही वह फ़र्क है जो इसे पहले के ARM designs से अलग बनाता है, जो AMD/Intel की तुलना में धीमे थे

→ Firestorm ज़्यादातर Intel/AMD Ryzen cores को speed में पीछे छोड़ देता है, जो सामान्य समझ के हिसाब से अजीब लगता है

→ तेज़ CPU बनाने की strategy क्या है?

  1. instructions को sequentially और तेज़ चलाना

  2. कई instructions को parallel में चलाना

80 के दशक में यह आसान था। बस clock frequency बढ़ा दीजिए, instructions तेज़ चलने लगते थे

Computer हर clock cycle में कुछ करता है, और यह "कुछ" बहुत छोटा होता है, इसलिए एक instruction को कई clock cycles भी लग सकते हैं

लेकिन modern era में clock frequency बढ़ाने की एक limit है

"Moore's Law का अंत"

इसलिए अब जितनी ज़्यादा instructions parallel में चलाई जा सकें, उतना महत्वपूर्ण है

  • Multi-core या Out-of-Order processors?

→ parallel execution के लिए दो approaches हैं

  1. ज़्यादा CPU cores डालना (developer की नज़र से, ज़्यादा threads जोड़ना)

सिद्धांततः processor cores कई threads चला सकते हैं (software threads)

यह thread switching के साथ चलता है, इसलिए I/O या network पर किसी चीज़ का इंतज़ार होने जैसी स्थितियों में उपयोगी है

hardware threads से speed बढ़ती है, लेकिन developer को इसका फायदा लेने के लिए code लिखना पड़ता है

server/cloud में यह model उपयुक्त है

इसीलिए Ampere जैसी कंपनियाँ 128-core वाले Altra Max जैसे cloud ARM CPUs बनाती हैं

Apple ठीक इसका उल्टा है। Apple single-user devices बनाने वाली company है

ज़्यादातर desktop software बहुत सारे cores का उपयोग करने के लिए नहीं बनाए गए हैं

games को 8 cores पर performance gain मिल सकता है, लेकिन 128 cores सिर्फ बर्बादी हैं

इसलिए कम लेकिन ज़्यादा powerful cores की ज़रूरत होती है

  1. Out-of-Order Execution(OoO) ज़्यादा instructions को parallel में चलाता है, लेकिन इसे multithreading की तरह explicitly इस्तेमाल करने की ज़रूरत नहीं होती

developer की नज़र से बस इतना दिखता है कि हर core तेज़ काम कर रहा है

memory के किसी खास location से data लाना धीमा होता है

लेकिन 1 byte लाएँ या 128 bytes, delay में फ़र्क नहीं होता

data data bus से चलता है, और bus चौड़ी हो to एक साथ कई bytes पढ़े जा सकते हैं

CPU execution के दौरान instructions के कई chunks को एक साथ handle करता है, जबकि वे instructions लिखी sequential order में होती हैं

modern microprocessors Out-of-Order execution करते हैं

यानि वे कई instructions का विश्लेषण करके देखते हैं कि क्या उनमें dependencies हैं

01: mul r1, r2, r3 // r1 ← r2 × r3

02: add r4, r1, 5 // r4 ← r1 + 5

03: add r6, r2, 1 // r6 ← r2 + 1

ऊपर के instructions में 1 और 2 dependent हैं, लेकिन 3 का उनसे कोई लेना-देना नहीं है

ऐसी स्थिति में Out-of-Order processors dependency न रखने वाले instruction 3 को parallel में चला सकते हैं

असल में CPU एक-दो नहीं, बल्कि सैकड़ों instructions के बीच dependencies पता कर सकता है

CPU instructions को node graph की तरह जोड़ता है और उसका analysis करके यह तय करता है कि कौन-से instructions parallel में चल सकते हैं और कहाँ execution से पहले result का इंतज़ार करना होगा

M1 का Firestorm core इतनी जबरदस्त speed इसलिए देता है क्योंकि इसका Out-of-Order execution बेहद शानदार है

शायद Intel/AMD सहित mainstream market के किसी और से भी बेहतर

  • फिर AMD और Intel का Out-of-Order execution M1 से धीमा क्यों है?

→ ऊपर जिस चीज़ की बात हुई, वह वास्तव में ROB(Reorder Buffer) से जुड़ी है, और यह सामान्य machine code instruction नहीं है (जो CPU memory से fetch करता है)

इन instructions को CPU Instruction Set Architecture(ISA) कहते हैं, यानी वही चीज़ें जिन्हें हम x86, ARM, PowerPC आदि कहते हैं

→ CPU अंदरूनी तौर पर programmer से छिपे हुए एक बिल्कुल अलग instruction set, यानी micro-operations (micro-ops or μops) पर चलता है, और ROB इन्हीं micro-ops से भरा होता है

→ ARM/x86 instructions को public API और micro-ops को private API समझ सकते हैं

→ CISC में instructions बड़ी और complex होती हैं, इसलिए micro-ops लगभग ज़रूरी हैं, जबकि RISC में इन्हें इस्तेमाल करना optional हो सकता है

(उदाहरण के लिए, छोटे ARM CPUs micro-ops का इस्तेमाल न भी करें। इसका मतलब यह नहीं कि वे OoO नहीं कर सकते)

→ यह महत्वपूर्ण क्यों है? क्योंकि "तेज़ speed इस बात पर निर्भर है कि ROB को कितनी जल्दी और कितना भरा जा सकता है"

→ जितनी तेज़ी से इसे भरा जाएगा, उतना ही ज़्यादा parallel execution का मौका मिलेगा और performance बढ़ेगी

→ machine code instructions decoder द्वारा micro-ops में तोड़ी जाती हैं

→ Intel/AMD cores में 4 decoders होते हैं,

जबकि Apple के पास 'पागलपन' की हद तक 8 decoders हैं, और ROB 3 गुना बड़ा है, इसलिए वह मूल रूप से 3 गुना ज़्यादा instructions रख सकता है

  • तो फिर Intel और AMD ज़्यादा instruction decoders क्यों नहीं जोड़ते?

→ यहीं से RISC की वापसी शुरू होती है। M1 Firestorm core में ARM RISC होना बहुत मायने रखता है

→ x86 instructions की लंबाई 1 से 15 bytes तक होती है, जबकि RISC fixed size का होता है

→ अगर सभी instructions की लंबाई एक जैसी हो, to बस उन्हें काटकर 8 अलग decoders में डाल दीजिए

→ लेकिन x86 में यह पता नहीं होता कि एक instruction के बाद अगला instruction कहाँ से शुरू होगा, इसलिए हर instruction को वास्तव में analyze करना पड़ता है

→ Intel और AMD इस समस्या को brute-force तरीके से handle करते हैं: हर संभावित instruction start पर decode करना

यानि गलत अंदाज़े और गलतियाँ बार-बार फेंकनी पड़ती हैं

इसीलिए ज़्यादा decoders जोड़ना मुश्किल है, जबकि Apple के लिए यह काफ़ी आसान है

→ यही वजह है कि मूल रूप से एक ही clock frequency पर यह AMD/Intel CPUs की तुलना में लगभग दोगुनी instructions handle कर सकता है

→ व्यवहार में x86 आमतौर पर complex CISC instructions कम और RISC-जैसी छोटी instructions ज़्यादा इस्तेमाल करता है, लेकिन उन 15-byte instructions को फिर भी संभालना पड़ता है, इसलिए complexity बनी रहती है

  • लेकिन AMD का Zen3 core अभी भी तेज़ नहीं है क्या?

→ benchmarks में Zen3, Firestorm से तेज़ है, लेकिन Zen3 5Ghz पर चलता है और Firestorm 3.2Ghz पर

→ Apple clock frequency इसलिए नहीं बढ़ाता क्योंकि chip बहुत गर्म हो जाएगी

→ मूल रूप से Firestorm core, Zen3 से बेहतर है

→ Zen3 ज़्यादा power खपत और heat के साथ gaming में इस्तेमाल हो सकता है, लेकिन "Apple ने वह रास्ता न चुनने का फ़ैसला किया है"

→ अगर Apple को और performance चाहिए, तो वह ज़्यादा cores जोड़ देगा। इससे कम power में ज़्यादा performance मिल सकती है

  • भविष्य

→ AMD/Intel ने खुद को दो मोर्चों पर मुश्किल में डाल लिया है

  1. उनके पास heterogeneous computing और SoC design को आगे बढ़ाने वाला business model नहीं है

  2. complex x86 CISC instructions अब legacy बन चुकी हैं, जिससे OoO performance को और बेहतर बनाना मुश्किल हो जाता है

→ बेशक game over नहीं हुआ है। clock और बढ़ाओ, cooling और बढ़ाओ, ज़्यादा cores इस्तेमाल करो..

→ Intel की स्थिति और खराब है। core speed में वह पहले ही Firestorm से पीछे है, ऊपर से SoC में डाला गया GPU भी कमज़ोर है

→ बहुत सारे cores server के लिए निश्चित ही अच्छे हैं, लेकिन Amazon और Ampere 128-core के साथ आक्रामक हैं। Intel/AMD को दोनों तरफ़ लड़ना पड़ रहा है

→ अच्छी बात यह है कि AMD/Intel के उलट Apple chips को खुले market में नहीं बेचता

→ अभी तुरंत नहीं, लेकिन PC users धीरे-धीरे Apple की ओर शिफ्ट होंगे, और Apple PC market में अपना हिस्सा बढ़ाएगा

17 टिप्पणियां

 
shaha 2022-04-05

आप वाकई बहुत अच्छा लिखते हैं

 
hoking337 2020-12-07

इतनी आसान और समझने में सरल तरीके से बढ़िया ढंग से व्यवस्थित करके समझाने के लिए धन्यवाद। बेस्ट!

 
dreamydh 2020-12-05

अच्छी सामग्री के लिए धन्यवाद।

 
xguru 2020-12-05

धन्यवाद!!

 
pilgwon 2020-12-04

मैं M1 डिवाइस खरीदना चाहता था, लेकिन लगता है कि उसकी जगह शेयर खरीदने चाहिए थे..

अच्छा लेख, धन्यवाद!

 
xguru 2020-12-05

मैं भी इस बात के पक्ष में हूँ कि Apple stock की future value ऊँची होगी.

लगता है कि कभी न कभी सच में Apple Car आ जाएगी.

 
functor 2020-12-04

लगता है Weak memory model धीरे-धीरे और ज़्यादा महत्वपूर्ण होता जा रहा है.. Apple अब सच में chip से लेकर assembly, hardware, OS, और app तक सब कुछ खुद बनाने वाली (Jobs का सपना) closed company बनती जा रही है.

मैं भी अपना अगला device m1 Mac mini या MacBook Air लेने के बारे में सोच रहा हूँ..

 
xguru 2020-12-05

मैं भी 2015 MacBook Pro से M1 पर जा रहा हूँ.. कहते हैं कि यह साल के अंत में नहीं तो अगले साल की शुरुआत में आएगा!

 
hankpark 2020-12-06

आज चेक किया, तो यह भारत में लॉन्च हो चुका है!

 
shawnkim 2020-12-04

वाह! गुरुजी, आप सच में कमाल हैं!!

 
xguru 2020-12-05

धन्यवाद ;)

 
ffdd270 2020-12-04

उस लेख में लेखक ने RISC/CISC की तुलना पर भी लिखा है, और मैं उसे ज़ोरदार तरीके से recommend करता हूँ। ऐसी instruction architecture आखिर क्यों बनी, इसे बहुत ही सहज और धाराप्रवाह तरीके से समझाया गया है।

 
xguru 2020-12-06

मूल रूप से लगता है कि वह अच्छे लेखक हैं। यह लेख भी काफ़ी लंबा है, लेकिन फिर भी बहुत आसानी से पढ़ा जाता है।

 
jun0683 2020-12-04

वाह, बहुत अच्छी सामग्री है।

 
xguru 2020-12-05

धन्यवाद!

 
godrm 2020-12-04

ऐसा लग रहा है जैसे फिर से computer architecture की क्लास सुन रहा हूँ, हाहा

आखिरकार, Apple की संरचना ऐसी है कि उसे वही काम लगातार और बेहतर करना ही है, जिसमें वह सबसे अच्छा है

 
xguru 2020-12-04

Intel और AMD का अब क्या होगा..

आज अपलोड किए गए GeekNews Podcast के एपिसोड 16 में M1 chip की Memory-Order trick के बारे में संक्षेप में बताया था, लेकिन यह उससे अलग और काफ़ी विस्तार से लिखा गया लेख है.

लगता है अगले हफ्ते के podcast में भी इस पर फिर बात होगी ^^;