लेन-देन संबंधी स्मृति

From alpha
Revision as of 12:19, 12 April 2024 by Indicwiki (talk | contribs) (Created page with "कंप्यूटर विज्ञान और कंप्यूटर इंजीनियरिंग में, ट्रांसेक्शनल मे...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Jump to navigation Jump to search

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


प्रेरणा

संघर्ष के साथ दो समानांतर लेन-देन के बीच परमाणुता

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

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

def transfer_money(from_account, to_account, amount):
    """Transfer money from one account to another."""
    with transaction():
        from_account.balance -= amount
        to_account.balance   += amount

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

ट्रांजेक्शनल मेमोरी सीमित है क्योंकि इसके लिए साझा-मेमोरी एब्स्ट्रैक्शन की आवश्यकता होती है। हालाँकि ट्रांजेक्शनल मेमोरी प्रोग्राम गतिरोध उत्पन्न नहीं कर सकते हैं, फिर भी प्रोग्राम लाइवलॉक या संसाधन भुखमरी (कंप्यूटर विज्ञान) से पीड़ित हो सकते हैं। उदाहरण के लिए, लंबे लेनदेन कई छोटे लेनदेन के जवाब में बार-बार वापस आ सकते हैं, जिससे समय और ऊर्जा दोनों बर्बाद हो सकते हैं।[2]


हार्डवेयर बनाम सॉफ्टवेयर

पढ़ने और लिखने वाले बिट्स का उपयोग करके हार्डवेयर लेनदेन संबंधी मेमोरी

ट्रांजेक्शनल मेमोरी में परमाणुता के अमूर्तन के लिए संघर्षों का पता लगाने और साझा डेटा में किए गए किसी भी बदलाव को पूर्ववत करने के लिए एक हार्डवेयर तंत्र की आवश्यकता होती है।[3] हार्डवेयर ट्रांसेक्शनल मेमोरी सिस्टम में लेनदेन का समर्थन करने के लिए प्रोसेसर, कैश और बस प्रोटोकॉल में संशोधन शामिल हो सकते हैं।[4][5][6][7][8] लेन-देन में सट्टा मूल्यों को बफर किया जाना चाहिए और प्रतिबद्ध समय तक अन्य थ्रेड्स द्वारा अदृश्य रहना चाहिए। अंतर्निहित कैश सुसंगतता प्रोटोकॉल के माध्यम से लेखन प्रसार से बचते हुए बड़े बफ़र्स का उपयोग सट्टा मूल्यों को संग्रहीत करने के लिए किया जाता है। परंपरागत रूप से, बफ़र्स को मेमोरी पदानुक्रम के भीतर विभिन्न संरचनाओं जैसे स्टोर कतार या कैश का उपयोग करके लागू किया गया है। प्रोसेसर से दूर बफ़र्स, जैसे L2 कैश, अधिक सट्टा मान (कुछ मेगाबाइट तक) रख सकते हैं। वाणिज्यिक कार्यक्रमों में लेनदेन के सीमित उपयोग के कारण बफर के इष्टतम आकार पर अभी भी बहस चल रही है।[3]कैश कार्यान्वयन में, कैश लाइनों को आम तौर पर पढ़ने और लिखने वाले बिट्स के साथ बढ़ाया जाता है। जब हार्डवेयर नियंत्रक को कोई अनुरोध प्राप्त होता है, तो नियंत्रक किसी विरोध का पता लगाने के लिए इन बिट्स का उपयोग करता है। यदि समानांतर लेन-देन से क्रमबद्धता संघर्ष का पता चलता है, तो सट्टा मूल्यों को छोड़ दिया जाता है। जब कैश का उपयोग किया जाता है, तो सिस्टम कैश लाइन ग्रैन्युलैरिटी के उपयोग के कारण गलत साझाकरण का जोखिम पेश कर सकता है।[3]कई जोखिम प्रोसेसर द्वारा पेश किए गए लोड-लिंक/स्टोर-कंडीशनल (एलएल/एससी) को सबसे बुनियादी लेनदेन मेमोरी समर्थन के रूप में देखा जा सकता है; हालाँकि, एलएल/एससी आमतौर पर उस डेटा पर काम करता है जो मूल मशीन शब्द के आकार का होता है, इसलिए केवल एकल-शब्द लेनदेन समर्थित हैं।[4]हालाँकि हार्डवेयर ट्रांजेक्शनल मेमोरी सॉफ्टवेयर विकल्पों की तुलना में अधिकतम प्रदर्शन प्रदान करती है, लेकिन इस समय इसका सीमित उपयोग देखा गया है।

सॉफ़्टवेयर ट्रांसेक्शनल मेमोरी सॉफ़्टवेयर क्रम पुस्तकालय या प्रोग्रामिंग भाषा में ट्रांसेक्शनल मेमोरी शब्दार्थ प्रदान करती है,[9] और न्यूनतम हार्डवेयर समर्थन की आवश्यकता होती है (आमतौर पर एक परमाणु तुलना और स्वैप ऑपरेशन, या समकक्ष)। नकारात्मक पक्ष के रूप में, हार्डवेयर समाधानों की तुलना में सॉफ़्टवेयर कार्यान्वयन आमतौर पर प्रदर्शन दंड के साथ आते हैं। हार्डवेयर त्वरण सॉफ़्टवेयर ट्रांसेक्शनल मेमोरी से जुड़े कुछ ओवरहेड को कम कर सकता है।

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


इतिहास

ट्रांजेक्शनल मेमोरी के शुरुआती कार्यान्वयन में से एक गेटेड स्टोर बफर था जिसका उपयोग हस्तांतरण के ट्रांसम्यूटेशनल क्रूसो और स्थानांतरण दक्षता प्रोसेसर में किया जाता था। हालाँकि, इसका उपयोग केवल बाइनरी अनुवाद के लिए सट्टा अनुकूलन की सुविधा के लिए किया गया था, न कि किसी भी प्रकार की सट्टा मल्टीथ्रेडिंग, या इसे सीधे प्रोग्रामर के सामने उजागर करने के लिए। अज़ुल सिस्टम्स ने अपने जावा (प्रोग्रामिंग भाषा) उपकरणों को तेज करने के लिए हार्डवेयर ट्रांसेक्शनल मेमोरी को भी लागू किया, लेकिन यह बाहरी लोगों से छिपा हुआ था।[11] सन माइक्रोसिस्टम्स ने अपने हाई-एंड रॉक प्रोसेसर में हार्डवेयर ट्रांसेक्शनल मेमोरी और सट्टा मल्टीथ्रेडिंग का एक सीमित रूप लागू किया। इस कार्यान्वयन ने साबित कर दिया कि इसका उपयोग लॉक एलिज़न और अधिक जटिल हाइब्रिड ट्रांजेक्शनल मेमोरी सिस्टम के लिए किया जा सकता है, जहां लेनदेन को हार्डवेयर और सॉफ्टवेयर के संयोजन से नियंत्रित किया जाता है। रॉक प्रोसेसर को 2009 में Oracle Corporation द्वारा अधिग्रहण से ठीक पहले रद्द कर दिया गया था; जबकि वास्तविक उत्पाद कभी जारी नहीं किए गए थे, शोधकर्ताओं के लिए कई प्रोटोटाइप सिस्टम उपलब्ध थे।[11]

2009 में, AMD ने उन्नत तुल्यकालन सुविधा (ASF) का प्रस्ताव रखा, जो x86 एक्सटेंशन का एक सेट है जो हार्डवेयर ट्रांजेक्शनल मेमोरी सपोर्ट का बहुत सीमित रूप प्रदान करता है। लक्ष्य हार्डवेयर प्रिमिटिव प्रदान करना था जिसका उपयोग उच्च-स्तरीय सिंक्रनाइज़ेशन के लिए किया जा सकता है, जैसे सॉफ़्टवेयर ट्रांसेक्शनल मेमोरी या लॉक-फ्री एल्गोरिदम। हालाँकि, एएमडी ने यह घोषणा नहीं की है कि उत्पादों में एएसएफ का उपयोग किया जाएगा या नहीं, और यदि हां, तो किस समय सीमा में।[11]

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

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

उपलब्ध कार्यान्वयन

  • हार्डवेयर:
    • आर्म ट्रांजेक्शनल मेमोरी एक्सटेंशन (टीएमई)[13]
    • आईबीएम से ब्लू जीन/क्यू प्रोसेसर (सिकोइया सुपरकंप्यूटर)[14]
    • IBM zEnterprise EC12, ट्रांजेक्शनल मेमोरी प्रोसेसर निर्देशों को शामिल करने वाला पहला वाणिज्यिक सर्वर
    • इंटेल के ट्रांजेक्शनल सिंक्रोनाइजेशन एक्सटेंशन (टीएसएक्स), चुनिंदा हैसवेल-आधारित प्रोसेसर में उपलब्ध हैं और कॉमेट_लेक_ (माइक्रोप्रोसेसर) में हटाए जाने तक नए हैं।
    • IBM POWER8 और POWER9, Power10 में हटा दिए गए (Power_ISA#Power_ISA_v.3.1|Power ISA v.3.1)[15][16][17]
    • रॉक प्रोसेसर (Oracle Corporation द्वारा रद्द)
  • सॉफ़्टवेयर:

यह भी देखें

संदर्भ

  1. Harris, Tim; Larus, James; Rajwar, Ravi (2010-06-02). "Transactional Memory, 2nd edition". Synthesis Lectures on Computer Architecture. 5 (1): 1–263. doi:10.2200/S00272ED1V01Y201006CAC011. ISSN 1935-3235.
  2. 2.0 2.1 2.2 2.3 "Transactional Memory: History and Development". Kukuruku Hub. Retrieved 2016-11-16.
  3. 3.0 3.1 3.2 Solihin, Yan (2016). समानांतर मल्टीकोर आर्किटेक्चर के मूल सिद्धांत. Berkeley, California: Chapman & Hall. pp. 287–292. ISBN 978-1-4822-1118-4.
  4. 4.0 4.1 Herlihy, Maurice; Moss, J. Eliot B. (1993). "Transactional memory: Architectural support for lock-free data structures" (PDF). Proceedings of the 20th International Symposium on Computer Architecture (ISCA). pp. 289–300.
  5. Stone, J.M.; Stone, H.S.; Heidelberger, P.; Turek, J. (1993). "एकाधिक आरक्षण और ओक्लाहोमा अद्यतन". IEEE Parallel & Distributed Technology: Systems & Applications. 1 (4): 58–71. doi:10.1109/88.260295. S2CID 11017196.
  6. Hammond, L; Wong, V.; Chen, M.; Carlstrom, B.D.; Davis, J.D.; Hertzberg, B.; Prabhu, M.K.; Honggo Wijaya; Kozyrakis, C.; Olukotun, K. (2004). "लेन-देन संबंधी स्मृति सुसंगतता और स्थिरता". Proceedings of the 31st annual International Symposium on Computer Architecture (ISCA). pp. 102–13. doi:10.1109/ISCA.2004.1310767.
  7. Ananian, C.S.; Asanovic, K.; Kuszmaul, B.C.; Leiserson, C.E.; Lie, S. (2005). "Unbounded transactional memory". उच्च-प्रदर्शन कंप्यूटर वास्तुकला पर 11वीं अंतर्राष्ट्रीय संगोष्ठी. pp. 316–327. doi:10.1109/HPCA.2005.41. ISBN 0-7695-2275-0.
  8. "LogTM: Log-based transactional memory" (PDF). WISC.
  9. "The ATOMOΣ Transactional Programming Language" (PDF). Stanford. Archived from the original (PDF) on 2008-05-21. Retrieved 2009-06-15.
  10. Odaira, R.; Castanos, J. G.; Nakaike, T. (2013). "Do C and Java programs scale differently on Hardware Transactional Memory?". 2013 IEEE International Symposium on Workload Characterization (IISWC). p. 34. doi:10.1109/IISWC.2013.6704668. ISBN 978-1-4799-0555-3.
  11. 11.0 11.1 11.2 11.3 11.4 David Kanter (2012-08-21). "Analysis of Haswell's Transactional Memory". Real World Technologies. Retrieved 2013-11-19.
  12. "Arm releases SVE2 and TME for A-profile architecture - Processors blog - Processors - Arm Community". community.arm.com. 18 April 2019. Retrieved 2019-05-25.
  13. "ट्रांजेक्शनल मेमोरी एक्सटेंशन (टीएमई) आंतरिक". Retrieved 2020-05-05.
  14. "आईबीएम सीपीयू में ट्रांसेक्शनल मेमोरी प्लांट करता है". EE Times.
  15. Brian Hall; Ryan Arnold; Peter Bergner; Wainer dos Santos Moschetta; Robert Enenkel; Pat Haugen; Michael R. Meissner; Alex Mericas; Philipp Oehler; Berni Schiefer; Brian F. Veale; Suresh Warrier; Daniel Zabawa; Adhemerval Zanella (2014). Performance Optimization and Tuning Techniques for IBM Processors, including IBM POWER8 (PDF). IBM Redbooks. pp. 37–40. ISBN 978-0-7384-3972-3.
  16. Wei Li, IBM XL compiler hardware transactional memory built-in functions for IBM AIX on IBM POWER8 processor-based systems
  17. "Power ISA Version 3.1". openpowerfoundation.org. 2020-05-01. Retrieved 2020-10-10.
  18. Java on a 1000 Cores – Tales of Hardware/Software CoDesign on YouTube
  19. "कंट्रोल.मोनाड.एसटीएम". hackage.haskell.org. Retrieved 2020-02-06.
  20. "STMX Homepage".
  21. Wong, Michael. "C++ के लिए ट्रांजेक्शनल लैंग्वेज कंस्ट्रक्शंस" (PDF). Retrieved 12 Jan 2011.
  22. "Brief Transactional Memory GCC tutorial".
  23. "C Dialect Options - Using the GNU Compiler Collection (GCC)".
  24. "TransactionalMemory - GCC Wiki".
  25. Rigo, Armin. "Using All These Cores: Transactional Memory in PyPy". europython.eu. Retrieved 7 April 2015.
  26. "picotm - Portable Integrated Customizable and Open Transaction Manager".
  27. "Concurrent::TVar".


अग्रिम पठन

  • Harris, Tim; Larus, James R.; Rajwar, Ravi (December 2010), Transactional Memory, 2nd edition, Synthesis Lectures on Computer Architecture, vol. 5, Morgan & Claypool, pp. 1–263, doi:10.2200/S00272ED1V01Y201006CAC011
  • McKenney, Paul E.; Michael, Maged M.; Triplett, Josh; Walpole, Jonathan (July 2010). "Why the grass may not be greener on the other side: a comparison of locking vs. transactional memory". SIGOPS Oper. Syst. Rev. New York, NY, USA: ACM. 44 (3): 93–101. doi:10.1145/1842733.1842749. ISSN 0163-5980. S2CID 1917393.
  • Dave Dice, Yossi Lev, Mark Moir, Dan Nussbaum, and Marek Olszewski. (2009) "Early experience with a commercial hardware transactional memory implementation." Sun Microsystems technical report (60 pp.) SMLI TR-2009-180. A short version appeared at ASPLOS’09 doi:10.1145/1508244.1508263
  • Amy Wang, Matthew Gaudet, Peng Wu, José Nelson Amaral, Martin Ohmacht, Christopher Barton, Raul Silvera, and Maged Michael. "Evaluation of Blue Gene/Q hardware support for transactional memories Archived 2013-06-27 at the Wayback Machine". In Proceedings of the 21st international conference on Parallel architectures and compilation techniques, pp. 127–136. ACM, 2012.
  • Jacobi, C., Slegel, T., & Greiner, D. (2012, December). "Transactional memory architecture and implementation for IBM System z Archived 2016-03-04 at the Wayback Machine". In Microarchitecture (MICRO), 2012 45th Annual IEEE/ACM International Symposium on (pp. 25–36). IEEE.
  • Harold W. Cain, Maged M. Michael, Brad Frey, Cathy May, Derek Williams, and Hung Le. "Robust Architectural Support for Transactional Memory in the Power Architecture." In ISCA '13 Proceedings of the 40th Annual International Symposium on Computer Architecture, pp. 225–236, ACM, 2013. doi:10.1145/2485922.2485942


बाहरी संबंध