Apple M1 चिप का मेमोरी access तरीका
(lemire.me)"M1 का single core 28 से अधिक चरणों में memory को parallel process करता है"
-
मेमोरी access, computation से ज़्यादा महंगा होता है
-
सिद्धांततः x को access करते समय उसके पास का x+1 आदि लगभग मुफ़्त में पढ़ा जा सकता है — ऐसा naive model तर्कसंगत लग सकता है, लेकिन इससे performance की भविष्यवाणी नहीं की जा सकती
-
यह performance prediction कब विफल होती है? CPU core एक ही समय में memory के कई स्थानों को access करने की कोशिश करता है
-
अगर 7 memory access एक साथ किए जाएँ, तो यह 1 access की तुलना में धीमा होगा, लेकिन क्या यह 7 गुना धीमा होगा?
-
benchmark program के जरिए यह टेस्ट किया गया कि कितने simultaneous access (
lane, स्वतंत्र pointer-tracking routine) संभव हैं
→ जिस बिंदु पर simultaneous access performance गिरने लगती है, उसके आधार पर अनुमान लगाया गया that lane कितने हैं
- Apple M1 के एक core में 28 lane से आगे performance गिरती दिखी, इसलिए इसे 28 माना गया
→ इसलिए उच्च स्तर की parallel processing की वजह से उस naive model की cost prediction विफल हो जाती है
5 टिप्पणियां
जब भी CPU की बात आती है
https://ridibooks.com/books/443000037
यह किताब बहुत मददगार साबित हो रही है। अगर कोई शुरू से साथ-साथ समझना चाहता है, तो इसे पढ़कर पढ़ेंगे तो थोड़ा-बहुत फॉलो करना आसान लग सकता है।
RidiBooks के प्रचार से बचने के लिए (...) किताब का नाम है:
프로그래머가 몰랐던 멀티코어 CPU 이야기। खास तौर पर RidiBooks ही इसलिए, क्योंकि पेपरबुक आउट of print हो चुकी है। और e-book के लिए बची हुई एकमात्र दुकान RidiBooks ही है, इसलिए मजबूरी में वही पोस्ट किया है।किम मिनजांग जी ने ऐसी किताब भी लिखी थी... देखते-देखते 10 साल हो गए, समय सच में कितनी तेजी से बीतता है ^^;
यह वाकई मुश्किल हिस्सा है। इसे सामान्य बनाना आसान नहीं है। लेकिन आजकल CPU architectures और parallel processing के बढ़ते इस्तेमाल को देखते हुए, यह काफ़ी प्रभावी हो सकता है। इससे यह भी लगता है कि hardware architecture को बेहतर बनाने के लिए काफ़ी प्रयोग किए जा रहे हैं।
शायद इसलिए कि यह एक कंप्यूटर साइंस प्रोफेसर ने लिखा है, उन्होंने सिर्फ वही तथ्य लिखे हैं जिन्हें उन्होंने खुद समझा है..
अगर उस पोस्ट के कमेंट्स और HN के कमेंट्स को मिलाकर देखें: https://news.ycombinator.com/item?id=25659615
मूल रूप से इसे ऐसे समझा जा सकता है कि M1, 28 या उससे अधिक parallelization और L1 cache के size आदि की बदौलत, कई जगहों पर random access होने पर भी शानदार performance दिखाता है।