मेमोरी एक्सेस पैटर्न

From alpha
Jump to navigation Jump to search

कम्प्यूटिंग में, मेमोरी एक्सेस पैटर्न या आईओ एक्सेस पैटर्न वह पैटर्न है जिसके साथ एक सिस्टम या प्रोग्राम माध्यमिक भंडारण पर मेमोरी (कंप्यूटिंग) को पढ़ता और लिखता है।. ये पैटर्न संदर्भ की स्थानीयता के स्तर में भिन्न होते हैं और कैश (कंप्यूटिंग) प्रदर्शन को काफी प्रभावित करते हैं,[1] और समांतरता (कंप्यूटिंग) के दृष्टिकोण के लिए भी निहितार्थ हैं[2][3] और साझा मेमोरी सिस्टम में कार्यभार का वितरण।[4] इसके अलावा, कैश सुसंगतता समस्याएँ मल्टीप्रोसेसर प्रदर्शन को प्रभावित कर सकती हैं,[5] जिसका अर्थ है कि कुछ मेमोरी एक्सेस पैटर्न समानता पर एक सीमा लगाते हैं (जिसे कई प्रमुख दृष्टिकोण तोड़ना चाहते हैं)।[6] स्मृति को आमतौर पर रैंडम एक्सेस मेमोरी के रूप में वर्णित किया जाता है, लेकिन सॉफ़्टवेयर द्वारा ट्रैवर्सल अभी भी ऐसे पैटर्न प्रदर्शित करेगा जिनका उपयोग दक्षता के लिए किया जा सकता है। सिस्टम डिज़ाइनरों की सहायता के लिए विभिन्न उपकरण मौजूद हैं[7] और प्रोग्रामर VTune और Intel सलाहकार सहित मेमोरी एक्सेस पैटर्न को समझते हैं, उसका विश्लेषण करते हैं और उसमें सुधार करते हैं,[8][9][10][11][12] जीपीयू मेमोरी एक्सेस पैटर्न को संबोधित करने के लिए टूल सहित[13] मेमोरी एक्सेस पैटर्न का सुरक्षा (कंप्यूटिंग) पर भी प्रभाव पड़ता है,[14][15] जो कुछ लोगों को गोपनीयता (कंप्यूटिंग) कारणों से प्रोग्राम की गतिविधि को छिपाने की कोशिश करने के लिए प्रेरित करता है।[16][17]


उदाहरण

कुछ प्रकाशनों द्वारा अनुक्रमिक और रैखिक पैटर्न को एक-दूसरे के समकक्ष के रूप में गलत तरीके से तैयार किया गया है; जबकि वास्तविक दुनिया के कार्यभार में लगभग असंख्य पैटर्न होते हैं।[18]

अनुक्रमिक

सबसे सरल चरम अनुक्रमिक पहुंच पैटर्न है, जहां डेटा को सीधे वृद्धि/घटते पते के साथ पढ़ा जाता है, संसाधित किया जाता है और लिखा जाता है। ये एक्सेस पैटर्न प्रीफ़ेचिंग (कंप्यूटिंग) के लिए अत्यधिक उत्तरदायी हैं।

स्ट्राइड

स्ट्राइड (कंप्यूटिंग) या सरल 2डी, 3डी एक्सेस पैटर्न (जैसे, बहु-आयामी सरणियों के माध्यम से कदम उठाना) की भविष्यवाणी करना समान रूप से आसान है, और रैखिक बीजगणित एल्गोरिदम और छवि प्रसंस्करण के कार्यान्वयन में पाए जाते हैं। लूप टाइलिंग एक प्रभावी तरीका है.[19] प्रत्यक्ष मेमोरी एक्सेस वाले कुछ सिस्टम बड़े 2डी एरे और स्क्रैचपैड मेमोरी के सबटाइल के बीच डेटा स्थानांतरित करने के लिए एक स्ट्राइड मोड प्रदान करते हैं।[20]


रेखीय

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

निकटतम पड़ोसी

निकटतम पड़ोसी मेमोरी एक्सेस पैटर्न सिमुलेशन में दिखाई देते हैं, और अनुक्रमिक या स्ट्राइड पैटर्न से संबंधित होते हैं। एक एल्गोरिथ्म गणना करने के लिए डेटा तत्व के निकटतम पड़ोसियों (एक या अधिक आयामों में) से जानकारी का उपयोग करके डेटा संरचना को पार कर सकता है। ये ग्रिड पर चलने वाले भौतिकी सिमुलेशन में आम हैं।[21]निकटतम पड़ोसी क्लस्टर में अंतर-नोड संचार का भी उल्लेख कर सकता है; भौतिकी सिमुलेशन जो ऐसे स्थानीय पहुंच पैटर्न पर भरोसा करते हैं, उन्हें क्लस्टर नोड्स में विभाजित डेटा के साथ समानांतर किया जा सकता है, उनके बीच विशुद्ध रूप से निकटतम-पड़ोसी संचार होता है, जिसमें विलंबता और संचार बैंडविड्थ के लिए फायदे हो सकते हैं। यह उपयोग केस टोरस नेटवर्क टोपोलॉजी पर अच्छी तरह से मैप करता है।[22]


2डी स्थानिक रूप से सुसंगत

3डी प्रतिपादन में, बनावट मानचित्रण और छोटे आदिमों के रेखांकन (जटिल सतहों की मनमानी विकृतियों के साथ) के लिए पहुंच पैटर्न रैखिक से बहुत दूर हैं, लेकिन फिर भी स्थानिक इलाके को प्रदर्शित कर सकते हैं (उदाहरण के लिए, स्क्रीन स्पेस या बनावट स्थान में)। मॉर्टन आदेश के कुछ संयोजन के माध्यम से इसे अच्छी मेमोरी इलाके में बदला जा सकता है[23] और बनावट मानचित्रों और फ्रेम बफर डेटा (कैश लाइनों पर स्थानिक क्षेत्रों का मानचित्रण) के लिए टाइलिंग (कंप्यूटर ग्राफिक्स), या टाइल आधारित विलंबित प्रतिपादन के माध्यम से आदिम को सॉर्ट करके।[24] रैखिक बीजगणित पुस्तकालयों में मॉर्टन क्रम में मैट्रिक्स को संग्रहीत करना भी फायदेमंद हो सकता है।[25]


तितर बितर

एक तितर बितर (वेक्टर संबोधन) मेमोरी एक्सेस पैटर्न लिखने के लिए अनुक्रमिक रीड्स को अनुक्रमित/यादृच्छिक एड्रेसिंग के साथ जोड़ता है।[26] इकट्ठा करने की तुलना में, यह कैश पदानुक्रम पर कम भार डाल सकता है क्योंकि एक प्रसंस्करण तत्व अपने स्रोत डेटा के लिए पूर्वानुमानित प्रीफ़ेचिंग (या यहां तक ​​​​कि डीएमए) का उपयोग करते हुए आग और भूल तरीके से (कैश को पूरी तरह से छोड़कर) लिख भेज सकता है।

हालाँकि, इसे समानांतर करना कठिन हो सकता है क्योंकि इस बात की कोई गारंटी नहीं है कि लेखन परस्पर क्रिया नहीं करता है,[27]और कई प्रणालियाँ अभी भी यह मानकर डिज़ाइन की गई हैं कि एक हार्डवेयर कैश कई छोटे लेखन को बड़े कैश में समाहित कर देगा।

अतीत में, आगे बनावट मानचित्रण ने स्रोत बनावट की जानकारी को क्रमिक रूप से पढ़ते हुए, लिखने के साथ यादृच्छिकता को संभालने का प्रयास किया था।

PlayStation 2 कंसोल ने पारंपरिक व्युत्क्रम बनावट मानचित्रण का उपयोग किया, लेकिन EDRAM का उपयोग करके ऑन-चिप पर किसी भी बिखराव/इकट्ठा प्रसंस्करण को संभाला, जबकि मुख्य मेमोरी से 3D मॉडल (और बहुत सारे बनावट डेटा) को DMA द्वारा क्रमिक रूप से फीड किया गया था। यही कारण है कि इसमें अनुक्रमित आदिमों के लिए समर्थन का अभाव था, और कभी-कभी प्रदर्शन सूची में बनावट को प्रबंधित करने की आवश्यकता होती थी।

इकट्ठा करें

एक इकट्ठा (वेक्टर एड्रेसिंग) मेमोरी एक्सेस पैटर्न में, रीड्स को यादृच्छिक रूप से संबोधित या अनुक्रमित किया जाता है, जबकि राइट्स अनुक्रमिक (या रैखिक) होते हैं।[26]एक उदाहरण व्युत्क्रम बनावट मानचित्रण में पाया जाता है, जहां डेटा को स्कैन लाइनों में रैखिक रूप से लिखा जा सकता है, जबकि रैंडम एक्सेस बनावट पते की गणना प्रति पिक्सेल की जाती है।

स्कैटर की तुलना में, नुकसान यह है कि कैशिंग (और विलंबता को दरकिनार करना) अब छोटे तत्वों के कुशल पढ़ने के लिए आवश्यक है, हालांकि इसे समानांतर करना आसान है क्योंकि लेखन ओवरलैप न होने की गारंटी है। इस प्रकार, gpgpu प्रोग्रामिंग के लिए एकत्रित दृष्टिकोण अधिक सामान्य है,[27]जहां बड़े पैमाने पर थ्रेडिंग (समानांतरता द्वारा सक्षम) का उपयोग पढ़ने की विलंबता को छिपाने के लिए किया जाता है।[27]


संयुक्त इकट्ठा करना और बिखेरना

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

रैंडम

विपरीत छोर पर वास्तव में यादृच्छिक मेमोरी एक्सेस पैटर्न है। इनसे निपटने के लिए कुछ मल्टीप्रोसेसर सिस्टम विशेषीकृत हैं।[28] विभाजित वैश्विक पता स्थान दृष्टिकोण तुरंत डेटा के आधार पर संचालन को क्रमबद्ध करने में मदद कर सकता है (यह तब उपयोगी होता है जब समस्या *अनसॉर्ट किए गए डेटा के स्थान का पता लगाने* की होती है)।[21] डेटा संरचनाएं जो सूचक का पीछा करना पर बहुत अधिक निर्भर करती हैं, अक्सर संदर्भ के खराब इलाके का उत्पादन कर सकती हैं, हालांकि सॉर्टिंग कभी-कभी मदद कर सकती है। वास्तव में यादृच्छिक मेमोरी एक्सेस पैटर्न को देखते हुए, इसे तोड़ना संभव हो सकता है (बिखराव या इकट्ठा चरणों, या अन्य मध्यवर्ती सॉर्टिंग सहित) जो समग्र रूप से इलाके में सुधार कर सकता है; यह अक्सर समानांतर कंप्यूटिंग के लिए एक शर्त है।

दृष्टिकोण

डेटा-उन्मुख डिज़ाइन

डेटा-उन्मुख डिज़ाइन एक ऐसा दृष्टिकोण है जिसका उद्देश्य किसी प्रोग्राम के विभिन्न चरणों में डेटा को कैसे व्यवस्थित किया जाता है, इसके अनुसार संदर्भ की स्थानीयता को अधिकतम करना है, जो कि अधिक वस्तु के उन्मुख दृष्टिकोण के विपरीत है (यानी, इस तरह व्यवस्थित करना कि डेटा लेआउट स्पष्ट रूप से प्रतिबिंबित हो) एक्सेस पैटर्न)।[29]


संदर्भ की स्थानीयता के साथ तुलना करें

संदर्भ की स्थानीयता मेमोरी एक्सेस पैटर्न द्वारा प्रदर्शित संपत्ति को संदर्भित करती है। एक प्रोग्रामर संदर्भ के स्थान को बेहतर बनाने के लिए मेमोरी एक्सेस पैटर्न (एल्गोरिदम को फिर से काम करके) बदल देगा,[30] और/या समानता की संभावना बढ़ाने के लिए।[26] एक प्रोग्रामर या सिस्टम डिज़ाइनर फ्रेमवर्क या एब्स्ट्रैक्शन (उदाहरण के लिए, टेम्पलेट (सी++)सी++)|सी++ टेम्प्लेट या उच्च-क्रम फ़ंक्शन) बना सकता है जो एनकैप्सुलेशन (कंप्यूटर प्रोग्रामिंग) एक विशिष्ट मेमोरी एक्सेस पैटर्न है।[31][32] मेमोरी एक्सेस पैटर्न के लिए अलग-अलग विचार संदर्भ की स्थानीयता से परे समानता में दिखाई देते हैं, अर्थात् पढ़ने और लिखने का पृथक्करण। उदाहरण के लिए: भले ही पढ़ना और लिखना पूरी तरह से स्थानीय हो, डेटा निर्भरता के कारण समानांतर होना असंभव हो सकता है; पढ़ने और लिखने को अलग-अलग क्षेत्रों में अलग करने से एक अलग मेमोरी एक्सेस पैटर्न प्राप्त होता है, जो शुरू में शुद्ध स्थानीयता के संदर्भ में बदतर दिखाई दे सकता है, लेकिन आधुनिक समानांतर हार्डवेयर का लाभ उठाने के लिए वांछनीय है।[26]

संदर्भ की स्थानीयता व्यक्तिगत चर को भी संदर्भित कर सकती है (उदाहरण के लिए, प्रोसेसर रजिस्टर में उन्हें कैश करने के लिए संकलक की क्षमता), जबकि मेमोरी एक्सेस पैटर्न शब्द केवल इंडेक्सेबल मेमोरी (विशेष रूप से मुख्य मेमोरी) में रखे गए डेटा को संदर्भित करता है।

यह भी देखें

संदर्भ

  1. "डेटा उन्मुख डिजाइन" (PDF).
  2. Jang, Byunghyun; Schaa, Dana; Mistry, Perhaad & Kaeli, David (2010-05-27). "डेटा-समानांतर आर्किटेक्चर में मेमोरी प्रदर्शन को बेहतर बनाने के लिए मेमोरी एक्सेस पैटर्न का उपयोग करना". IEEE Transactions on Parallel and Distributed Systems. New York: IEEE. 22 (1): 105–118. doi:10.1109/TPDS.2010.107. eISSN 1558-2183. ISSN 1045-9219. S2CID 15997131. NLM unique id 101212014.
  3. Jeffers, James; Reinders, James; Sodani, Avinash (2016-05-31). ज़ीऑन फाई अनुकूलन. ISBN 9780128091951.
  4. "पीजीएएस-आधारित डेटा एक्सेस पैटर्न के लिए कोड ट्रांसफॉर्मेशन की ऊर्जा और प्रदर्शन का विश्लेषण" (PDF).
  5. "एम्बेडेड कई-कोर सिस्टम के लिए मेमोरी एक्सेस पैटर्न के साथ कैश सुसंगत आर्किटेक्चर को बढ़ाना" (PDF).
  6. "इंटेल टेरास्केल" (PDF).
  7. मेमोरी एक्सेस पैटर्न का विश्लेषण. WWC '98. 29 November 1998. p. 105. ISBN 9780769504506.
  8. "क्वाड एक मेमोरी एक्सेस पैटर्न विश्लेषक" (PDF).
  9. "Dymaxion: Optimizing Memory Access Patterns for Heterogeneous Systems" (PDF).
  10. "सूचक गहन और संख्यात्मक कार्यक्रमों के लिए मेमोरी एक्सेस वर्गीकरण योजना का मूल्यांकन". 1996. CiteSeerX 10.1.1.48.4163. {{cite journal}}: Cite journal requires |journal= (help)
  11. Matsubara, Yuki; Sato, Yukinori (2014). "Online Memory Access Pattern Analysis on an Application Profiling Tool". 2014 Second International Symposium on Computing and Networking. pp. 602–604. doi:10.1109/CANDAR.2014.86. ISBN 978-1-4799-4152-0. S2CID 16476418.
  12. "Putting Your Data and Code in Order: Data and layout".
  13. CuMAPz: a tool to analyze memory access patterns in CUDA. Dac '11. 5 June 2011. pp. 128–133. doi:10.1145/2024724.2024754. ISBN 9781450306362. S2CID 16065152.
  14. "संसाधन-विवश उपकरणों के लिए मेमोरी एक्सेस पैटर्न सुरक्षा" (PDF).
  15. "कैश हमलों को समझना" (PDF).
  16. "क्लाउड में डेटा की सुरक्षा करना".
  17. साथ----अनभिज्ञ-राम--- "बूस्टिंग-क्लाउड-सुरक्षा-के साथ----अनभिज्ञ-राम". 24 September 2013. {{cite web}}: Check |url= value (help)proposed RAM design avoiding memory-access-pattern vulnerabilities
  18. Chuck Paridon. "Storage Performance Benchmarking Guidelines - Part I: Workload Design" (PDF). In practice, IO access patterns are as numerous as the stars
  19. "टाइलिंग और डेटा इलाके के लिए अनुकूलन" (PDF).paper covers loop tiling and implication for parallel code
  20. "Optimal 2D Data Partitioning for DMA Transfers on MPSoCs" (PDF).
  21. 21.0 21.1 "विभाजित वैश्विक पता स्थान प्रोग्रामिंग". YouTube.covers cases where PGAS is a win, where data may not be already sorted, e.g., dealing with complex graphs - see "science across the irregularity spectrum".
  22. "एचपीसी अनुप्रयोगों के मेमोरी एक्सेस पैटर्न में स्थानीयता की मात्रा निर्धारित करना" (PDF).mentions nearest neighbor access patterns in clusters
  23. "टेक्सचर मैपिंग के लिए कैश आर्किटेक्चर का डिज़ाइन और विश्लेषण" (PDF).see morton order,texture access pattern
  24. "मॉर्टन ने टेक्सचरिंग में तेजी लाने का आदेश दिया" (PDF).
  25. "Morton-order Matrices Deserve Compilers' Support Technical Report 533" (PDF).discusses the importance of morton order for matrices
  26. 26.0 26.1 26.2 26.3 "जीपीजीपीयू स्कैटर बनाम इकट्ठा". Archived from the original on 2016-06-14. Retrieved 2016-06-13.
  27. 27.0 27.1 27.2 जीपीयू रत्न. 2011-01-13. ISBN 9780123849892.deals with "scatter memory access patterns" and "gather memory access patterns" in the text
  28. "Cray and HPCC: Benchmark Developments and Results from the Past Year" (PDF).see global random access results for Cray X1. vector architecture for hiding latencies, not so sensitive to cache coherency
  29. "डेटा उन्मुख डिजाइन" (PDF).
  30. "ऑप्टिमाइज़-डेटा-स्ट्रक्चर-और-मेमोरी-एक्सेस-पैटर्न-टू-इंप्रूव-डेटा-लोकैलिटी".
  31. "SoCs में एक्सेलेरेटर के लिए टेम्पलेट-आधारित मेमोरी एक्सेस इंजन" (PDF).
  32. "एमटीपीएस सी++ जेनेरिक लाइब्रेरी के साथ बहु-लक्ष्य वैश्वीकरण" (PDF).a C++ template library for producing optimised memory access patterns