नेटवर्क प्रोसेसर: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[File:Intel FWIXP422BB on mainboard of UMTS Router Surf@home II, o2-8338.jpg|300px|thumb|इंटेल FWIXP422BB]]एक नेटवर्क प्रोसेसर एक एकीकृत सर्किट है जिसमें विशेष रूप से [[कम्प्यूटर नेट्वर्किंग|संगणक नेट्वर्किंग]] एप्लिकेशन डोमेन पर लक्षित फीचर सेट है।
[[File:Intel FWIXP422BB on mainboard of UMTS Router Surf@home II, o2-8338.jpg|300px|thumb|इंटेल FWIXP422BB]]एक नेटवर्क प्रोसेसर एक एकीकृत सर्किट है जिसमें विशेष रूप से [[कम्प्यूटर नेट्वर्किंग|कंप्यूटर नेट्वर्किंग]] एप्लिकेशन डोमेन पर लक्षित फीचर सेट है।


नेटवर्क प्रोसेसर सामान्यतः [[सॉफ़्टवेयर]] प्रोग्राम करने योग्य उपकरण होते हैं और सामान्य प्रयोजन केंद्रीय प्रसंस्करण इकाइयों के समान सामान्य विशेषताएं होती हैं जो सामान्यतः कई अलग-अलग प्रकार के उपकरणों और उत्पादों में उपयोग की जाती हैं।
नेटवर्क प्रोसेसर सामान्यतः [[सॉफ़्टवेयर]] प्रोग्राम करने योग्य उपकरण होते हैं और सामान्य प्रयोजन केंद्रीय प्रसंस्करण इकाइयों के समान सामान्य विशेषताएं होती हैं जो सामान्यतः कई अलग-अलग प्रकार के उपकरणों और उत्पादों में उपयोग की जाती हैं।
Line 27: Line 27:
एक पैकेट प्रोसेसर के रूप में सामान्य भूमिका में, कई अनुकूलित विशेषताएं या कार्य सामान्यतः एक नेटवर्क प्रोसेसर में मौजूद होते हैं, जिनमें सम्मिलित हैं:
एक पैकेट प्रोसेसर के रूप में सामान्य भूमिका में, कई अनुकूलित विशेषताएं या कार्य सामान्यतः एक नेटवर्क प्रोसेसर में मौजूद होते हैं, जिनमें सम्मिलित हैं:


* पैटर्न मैचिंग - पैकेट स्ट्रीम में पैकेट के भीतर बिट्स या बाइट्स के विशिष्ट पैटर्न खोजने की क्षमता।
* पैटर्न मैचिंग - पैकेट स्ट्रीम में पैकेट के अन्दर बिट्स या बाइट्स के विशिष्ट पैटर्न खोजने की क्षमता।
* की लुकअप - एक परिणाम खोजने के लिए एक कुंजी (सामान्यतः एक पैकेट में एक पता) का उपयोग करके डेटाबेस लुकअप को जल्दी से करने की क्षमता, सामान्यतः [[मार्ग]] जानकारी।
* की लुकअप - सामान्यतः [[मार्ग]] जानकारी का परिणाम खोजने के लिए एक कुंजी (सामान्यतः एक पैकेट में एक पता) का उपयोग करके डेटाबेस लुकअप करने की क्षमता।
* गणना
* गणना
* डेटा बिटफ़ील्ड हेरफेर - पैकेट में निहित कुछ डेटा फ़ील्ड को बदलने की क्षमता, क्योंकि इसे संसाधित किया जा रहा है।
* डेटा बिटफ़ील्ड हेरफेर - पैकेट में निहित कुछ डेटा फ़ील्ड को बदलने की क्षमता, क्योंकि इसे संसाधित किया जा रहा है।
Line 39: Line 39:


* प्रोसेसर की [[सीपीयू पाइपलाइन]] - पाइपलाइन के प्रत्येक चरण में एक प्रोसेसर होता है जो ऊपर सूचीबद्ध कार्यों में से एक का प्रदर्शन करता है।
* प्रोसेसर की [[सीपीयू पाइपलाइन]] - पाइपलाइन के प्रत्येक चरण में एक प्रोसेसर होता है जो ऊपर सूचीबद्ध कार्यों में से एक का प्रदर्शन करता है।
* कई प्रोसेसर के साथ [[समानांतर कंप्यूटिंग]], अक्सर [[मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर)]] सहित।
* [[मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर)]] सहित अधिकांश कई प्रोसेसर के साथ [[समानांतर कंप्यूटिंग]]
* विशिष्ट [[माइक्रोकोड]]ेड इंजन हाथ में कार्यों को अधिक कुशलता से पूरा करने के लिए।
* विशिष्ट [[माइक्रोकोड|माइक्रोकोडेड]] इंजन हाथ में कार्यों को अधिक कुशलता से पूरा करने के लिए उपयोग किया जाता है।
* [[मल्टी-कोर (कंप्यूटिंग)]] आर्किटेक्चर के आगमन के साथ, उच्च परत (OSI मॉडल|L4-L7) प्रसंस्करण के लिए नेटवर्क प्रोसेसर का उपयोग किया जा सकता है।
* [[मल्टी-कोर (कंप्यूटिंग)]] आर्किटेक्चर के आगमन के साथ, उच्च परत (OSI मॉडल L4-L7) प्रसंस्करण के लिए नेटवर्क प्रोसेसर का उपयोग किया जा सकता है।
 
इसके अतिरिक्त, यातायात प्रबंधन, जो L2-L3 नेटवर्क प्रसंस्करण में एक महत्वपूर्ण तत्व है और विभिन्न प्रकार के सह-प्रोसेसरों द्वारा निष्पादित किया जाता है, का एक अभिन्न अंग बन गया है नेटवर्क प्रोसेसर आर्किटेक्चर, और इसके सिलिकॉन क्षेत्र (रियल एस्टेट) का एक बड़ा हिस्सा एकीकृत यातायात प्रबंधक को समर्पित है।<ref>{{Cite book|url=http://www.cse.bgu.ac.il/npbook/|title=नेटवर्क प्रोसेसर: आर्किटेक्चर, प्रोग्रामिंग और कार्यान्वयन|last=Giladi|first=Ran|publisher=Morgan Kaufmann|year=2008|isbn=978-0-12-370891-5|series=Systems on Silicon}}</ref> आधुनिक नेटवर्क प्रोसेसर कोर (कुछ डेटा शब्द) के बीच छोटे संदेशों के आदान-प्रदान के लिए अनुकूलित कम-विलंबता उच्च-थ्रूपुट ऑन-चिप इंटरकनेक्शन नेटवर्क से भी लैस हैं। इस तरह के नेटवर्क को साझा मेमोरी के मानक उपयोग के अलावा कुशल इंटर-कोर संचार के लिए एक वैकल्पिक सुविधा के रूप में इस्तेमाल किया जा सकता है।<ref>{{cite conference|last1=Buono|first1=Daniele|last2=Mencagli|first2=Gabriele|date=21–25 July 2014|title=नेटवर्क प्रोसेसर पर ठीक-ठाक समानता के लिए रन-टाइम तंत्र: TILEPro64 अनुभव|url=http://pages.di.unipi.it/mencagli/publications/preprint-hpcs-2014.pdf|url-status=live|conference=2014 International Conference on High Performance Computing Simulation (HPCS 2014)|location=Bologna, Italy|pages=55–64|doi=10.1109/HPCSim.2014.6903669|isbn=978-1-4799-5313-4|archive-url=https://web.archive.org/web/20190327010533/http://pages.di.unipi.it/mencagli/publications/preprint-hpcs-2014.pdf|archive-date=27 March 2019}} [https://archive.org/details/RunTimeMechanismsForFineGrainedParallelism Alt URL]</ref>
 


इसके अतिरिक्त, ट्रैफ़िक प्रबंधन, जो OSI मॉडल#लेयर 2: डेटा लिंक लेयर-OSI मॉडल#लेयर 3: नेटवर्क लेयर नेटवर्क प्रोसेसिंग में एक महत्वपूर्ण तत्व है और विभिन्न सह-प्रोसेसरों द्वारा निष्पादित किया जाता है, का एक अभिन्न अंग बन गया है नेटवर्क प्रोसेसर आर्किटेक्चर, और इसके सिलिकॉन क्षेत्र (रियल एस्टेट) का एक बड़ा हिस्सा एकीकृत यातायात प्रबंधक को समर्पित है।<ref>{{Cite book|url=http://www.cse.bgu.ac.il/npbook/|title=नेटवर्क प्रोसेसर: आर्किटेक्चर, प्रोग्रामिंग और कार्यान्वयन|last=Giladi|first=Ran|publisher=Morgan Kaufmann|year=2008|isbn=978-0-12-370891-5|series=Systems on Silicon}}</ref> आधुनिक नेटवर्क प्रोसेसर कोर (कुछ डेटा शब्द) के बीच छोटे संदेशों के आदान-प्रदान के लिए अनुकूलित कम-विलंबता उच्च-थ्रूपुट ऑन-चिप इंटरकनेक्शन नेटवर्क से भी लैस हैं। इस तरह के नेटवर्क को साझा मेमोरी के मानक उपयोग के अलावा कुशल इंटर-कोर संचार के लिए एक वैकल्पिक सुविधा के रूप में इस्तेमाल किया जा सकता है।<ref>{{cite conference|last1=Buono|first1=Daniele|last2=Mencagli|first2=Gabriele|date=21–25 July 2014|title=नेटवर्क प्रोसेसर पर ठीक-ठाक समानता के लिए रन-टाइम तंत्र: TILEPro64 अनुभव|url=http://pages.di.unipi.it/mencagli/publications/preprint-hpcs-2014.pdf|url-status=live|conference=2014 International Conference on High Performance Computing Simulation (HPCS 2014)|location=Bologna, Italy|pages=55–64|doi=10.1109/HPCSim.2014.6903669|isbn=978-1-4799-5313-4|archive-url=https://web.archive.org/web/20190327010533/http://pages.di.unipi.it/mencagli/publications/preprint-hpcs-2014.pdf|archive-date=27 March 2019}} [https://archive.org/details/RunTimeMechanismsForFineGrainedParallelism Alt URL]</ref>




Line 73: Line 75:
{{Hardware acceleration}}
{{Hardware acceleration}}
{{Authority control}}
{{Authority control}}
[[Category:एम्बेडेड माइक्रोप्रोसेसर]]
[[Category: चिप पर नेटवर्क]]
[[Category: नेटवर्किंग हार्डवेयर]]
[[Category: हार्डवेयर त्वरण]]
[[Category: अनुप्रयोग-विशिष्ट एकीकृत परिपथ]]
[[Category: चिप पर सिस्टम]]


 
[[Category:CS1 English-language sources (en)]]
[[Category: Machine Translated Page]]
[[Category:CS1 errors]]
[[Category:Collapse templates]]
[[Category:Created On 16/12/2022]]
[[Category:Created On 16/12/2022]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with script errors]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia metatemplates]]
[[Category:अनुप्रयोग-विशिष्ट एकीकृत परिपथ]]
[[Category:एम्बेडेड माइक्रोप्रोसेसर]]
[[Category:चिप पर नेटवर्क]]
[[Category:चिप पर सिस्टम]]
[[Category:नेटवर्किंग हार्डवेयर]]
[[Category:हार्डवेयर त्वरण]]

Latest revision as of 21:25, 18 January 2023

इंटेल FWIXP422BB

एक नेटवर्क प्रोसेसर एक एकीकृत सर्किट है जिसमें विशेष रूप से कंप्यूटर नेट्वर्किंग एप्लिकेशन डोमेन पर लक्षित फीचर सेट है।

नेटवर्क प्रोसेसर सामान्यतः सॉफ़्टवेयर प्रोग्राम करने योग्य उपकरण होते हैं और सामान्य प्रयोजन केंद्रीय प्रसंस्करण इकाइयों के समान सामान्य विशेषताएं होती हैं जो सामान्यतः कई अलग-अलग प्रकार के उपकरणों और उत्पादों में उपयोग की जाती हैं।

विकास का इतिहास

आधुनिक दूरसंचार नेटवर्क में, सूचना (आवाज, वीडियो, डेटा) को पैकेट (सूचना प्रौद्योगिकी) डेटा (जिसे पैकेट बदली कहा जाता है) के रूप में स्थानांतरित किया जाता है, जो पुराने दूरसंचार नेटवर्क के विपरीत है, जो सार्वजनिक स्विच किए गए टेलीफोन नेटवर्क (जैसे एनालॉग संकेत) या एनालॉग जैसे टीवी/रेडियो नेटवर्क के रूप में जानकारी ले जाता है। इन पैकेटों के प्रसंस्करण के परिणामस्वरूप एकीकृत सर्किट (आईसी) का निर्माण हुआ है जो पैकेट डेटा के इस रूप से निपटने के लिए अनुकूलित हैं। नेटवर्क प्रोसेसर में विशिष्ट विशेषताएं या आर्किटेक्चर होते हैं जो इन नेटवर्कों के अन्दर पैकेट प्रोसेसिंग को बढ़ाने और अनुकूलित करने के लिए प्रदान किए जाते हैं।

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

नेटवर्क प्रोसेसर का उपयोग कई अलग-अलग प्रकार के नेटवर्किंग हार्डवेयर के निर्माण में किया जाता है जैसे:

पुनः कॉन्फ़िगर करने योग्य मैच-टेबल्स

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

आरएमपी पाइपलाइन विवरण

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

फ्लेक्स एनआईसी[4] इस मॉडल को नेटवर्क इंटरफ़ेस नियंत्रक पर लागू करने का प्रयास करता है, जिससे प्रोटोकॉल लचीलेपन को बनाए रखते हुए और सीपीयू ओवरहेड को बढ़ाए बिना सर्वर उच्च गति पर पैकेट भेजने और प्राप्त करने की अनुमति देता है।

सामान्य कार्य

एक पैकेट प्रोसेसर के रूप में सामान्य भूमिका में, कई अनुकूलित विशेषताएं या कार्य सामान्यतः एक नेटवर्क प्रोसेसर में मौजूद होते हैं, जिनमें सम्मिलित हैं:

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

स्थापत्य प्रतिमान

उच्च डेटा-दरों से निपटने के लिए, कई वास्तुशिल्प प्रतिमानों का सामान्यतः उपयोग किया जाता है:

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



अनुप्रयोग

नेटवर्क प्रोसेसर के सामान्य कार्य का उपयोग करते हुए, एक सॉफ्टवेयर प्रोग्राम एक एप्लिकेशन को लागू करता है जिसे नेटवर्क प्रोसेसर निष्पादित करता है, जिसके परिणामस्वरूप भौतिक उपकरण का एक टुकड़ा कार्य करता है या एक सेवा प्रदान करता है। नेटवर्क प्रोसेसर पर चलने वाले सॉफ़्टवेयर के रूप में सामान्यतः लागू किए गए कुछ एप्लिकेशन प्रकार हैं:[7]

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

यह भी देखें


संदर्भ

  1. Bosshart, Pat; Gibb, Glen; Kim, Hun-Seok; Varghese, George; McKeown, Nick; Izzard, Martin; Mujica, Fernando; Horowitz, Mark (2013-08-01). "फॉरवर्डिंग मेटामोर्फोसिस: एसडीएन के लिए हार्डवेयर में फास्ट प्रोग्रामेबल मैच-एक्शन प्रोसेसिंग" (in English). {{cite journal}}: Cite journal requires |journal= (help)
  2. 2.0 2.1 Gibb, Glen; Varghese, George; Horowitz, Mark; McKeown, Nick (October 2013). "पैकेट पार्सर्स के लिए डिजाइन सिद्धांत". Architectures for Networking and Communications Systems: 13–24. doi:10.1109/ANCS.2013.6665172. ISBN 978-1-4799-1641-2. S2CID 12282067.
  3. "P4: प्रोग्रामिंग प्रोटोकॉल-स्वतंत्र पैकेट प्रोसेसर | acm sigcomm". www.sigcomm.org (in English). Retrieved 2022-03-26.
  4. Kaufmann, Antoine; Peter, SImon; Sharma, Naveen Kr.; Anderson, Thomas; Krishnamurthy, Arvind (2016-03-25). "FlexNIC के साथ उच्च निष्पादन पैकेट प्रोसेसिंग". Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems. ASPLOS '16. New York, NY, USA: Association for Computing Machinery: 67–81. doi:10.1145/2872362.2872367. ISBN 978-1-4503-4091-5. S2CID 9625891.
  5. Giladi, Ran (2008). नेटवर्क प्रोसेसर: आर्किटेक्चर, प्रोग्रामिंग और कार्यान्वयन. Systems on Silicon. Morgan Kaufmann. ISBN 978-0-12-370891-5.
  6. Buono, Daniele; Mencagli, Gabriele (21–25 July 2014). नेटवर्क प्रोसेसर पर ठीक-ठाक समानता के लिए रन-टाइम तंत्र: TILEPro64 अनुभव (PDF). 2014 International Conference on High Performance Computing Simulation (HPCS 2014). Bologna, Italy. pp. 55–64. doi:10.1109/HPCSim.2014.6903669. ISBN 978-1-4799-5313-4. Archived (PDF) from the original on 27 March 2019. Alt URL
  7. Comer, Douglas E. (2005). नेटवर्क प्रोसेसर का उपयोग कर नेटवर्क सिस्टम डिजाइन: Intel 2XXX संस्करण. Addison-Wesley. ISBN 978-0-13-187286-8.