Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग · पाठ

SSE/AVX इंस्ट्रक्शन सेट का परिचय

आधुनिक SIMD इंस्ट्रक्शन सेट (SSE, AVX) और उनके रजिस्टरों का अवलोकन कीजिए, जिन्हें समानांतर डेटा प्रोसेसिंग के लिए बनाया गया है।

पाठ 2, कुल 4 में से11 चरण

SSE/AVX इंस्ट्रक्शन सेट का परिचय, CoddyKit पर Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

SIMD से आपका परिचय

इस पाठ में हम समानांतर प्रसंस्करण के लिए बनाए गए शक्तिशाली निर्देश सेटों: SSE और AVX का अध्ययन करेंगे। ये एक्सटेंशन आपके CPU को एक ही समय में डेटा के कई हिस्सों पर समान संक्रिया करने की सुविधा देते हैं।

इस तकनीक को सिंगल इंस्ट्रक्शन, मल्टिपल डेटा (SIMD) कहा जाता है। ग्राफ़िक्स रेंडरिंग, वैज्ञानिक गणनाओं और वीडियो प्रसंस्करण जैसे कार्यों को तेज़ करने के लिए यह बहुत महत्वपूर्ण है।

स्केलर बनाम वेक्टर प्रसंस्करण

मान लीजिए कि आपको संख्याओं की दो सूचियाँ जोड़नी हैं। एक पारंपरिक स्केलर प्रोसेसर उन्हें एक बार में एक जोड़ी करके जोड़ता है:

  • पहली संख्या + पहली संख्या
  • दूसरी संख्या + दूसरी संख्या
  • ...और इसी तरह।

एक वेक्टर प्रोसेसर (SIMD का उपयोग करते हुए) एक ही निर्देश में कई जोड़ियाँ जोड़ सकता है, जो बड़े डेटा समूहों के लिए काफ़ी तेज़ होता है।

SSE का परिचय

SSE का अर्थ स्ट्रीमिंग SIMD एक्सटेंशन है। Intel द्वारा प्रस्तुत SSE, x86 प्रोसेसरों में 128-बिट चौड़े रजिस्टर और निर्देश लेकर आया।

इसका अर्थ है कि SSE का एक निर्देश एक बार में 128 बिट डेटा संसाधित कर सकता है। सिंगल-प्रिसीजन फ़्लोटिंग-पॉइंट संख्याओं (प्रत्येक 32 बिट) के लिए इससे एक साथ चार संख्याएँ संसाधित की जा सकती हैं।

SSE रजिस्टर: XMM0-XMM15

SSE, XMM रजिस्टरों के एक समर्पित समूह का उपयोग करता है। ऐसे 16 रजिस्टर XMM0 से XMM15 तक नामित होते हैं। प्रत्येक XMM रजिस्टर 128 बिट चौड़ा होता है।

  • इनमें चार 32-बिट सिंगल-प्रिसीजन फ़्लोटिंग-पॉइंट संख्याएँ रखी जा सकती हैं।
  • या दो 64-बिट डबल-प्रिसीजन फ़्लोटिंग-पॉइंट संख्याएँ।
  • या सोलह 8-बिट पूर्णांक।

ये सामान्य-उद्देश्य रजिस्टरों (जैसे EAX, EBX) से अलग होते हैं।

SSE डेटा स्थानांतरण: MOVAPS

आइए एक बुनियादी SSE निर्देश MOVAPS देखें। यह निर्देश संरेखित पैक किए गए सिंगल-प्रिसीजन फ़्लोटिंग-पॉइंट मानों को स्थानांतरित करता है। यह मेमोरी से 128 बिट डेटा को XMM रजिस्टर में लोड करता है।

इस उदाहरण को चलाकर देखें (Linux x86-64 के लिए NASM सिंटैक्स का उपयोग करते हुए):

section .data
  ; Define 4 single-precision floats (128 bits total)
  my_sse_data dd 1.0, 2.0, 3.0, 4.0

section .text
  global _start

_start:
  ; Load 128 bits from my_sse_data into XMM0
  movaps xmm0, [my_sse_data]

  ; XMM0 now holds [1.0, 2.0, 3.0, 4.0]

  ; Exit the program (Linux x86/x64 syscall)
  mov eax, 1    ; sys_exit
  xor ebx, ebx  ; exit code 0
  int 0x80      ; Invoke kernel

SSE से आगे: AVX

AVX, या एडवांस्ड वेक्टर एक्सटेंशन, SIMD प्रसंस्करण का एक और उन्नत रूप है। AVX, SIMD रजिस्टरों का आकार बढ़ाकर 256 बिट कर देता है, जिससे SSE की तुलना में प्रत्येक निर्देश में संसाधित डेटा की मात्रा दोगुनी हो जाती है।

AVX ने एक नई निर्देश-एन्कोडिंग योजना (VEX प्रीफ़िक्स) और नॉन-डिस्ट्रक्टिव संक्रियाएँ भी प्रस्तुत कीं। इसका अर्थ है कि डेस्टिनेशन रजिस्टर डिफ़ॉल्ट रूप से स्रोत रजिस्टरों को अधिलेखित नहीं करते।

AVX रजिस्टर: YMM0-YMM15

AVX ने 16 नए YMM रजिस्टर प्रस्तुत किए (YMM0 से YMM15 तक)। प्रत्येक YMM रजिस्टर 256 बिट चौड़ा होता है।

  • एक YMM रजिस्टर में आठ 32-बिट सिंगल-प्रिसीजन फ़्लोट रखे जा सकते हैं।
  • या चार 64-बिट डबल-प्रिसीजन फ़्लोट।

प्रत्येक YMM रजिस्टर के निचले 128 बिट संबंधित XMM रजिस्टर के साथ ओवरलैप करते हैं (जैसे, YMM0 का निचला आधा XMM0 है)।

AVX डेटा स्थानांतरण: VMOVAPS

MOVAPS का AVX समकक्ष VMOVAPS है। 'V' प्रीफ़िक्स VEX-एन्कोड किए गए AVX निर्देश को दर्शाता है। यह निर्देश संरेखित पैक किए गए सिंगल-प्रिसीजन फ़्लोटिंग-पॉइंट मानों को स्थानांतरित करता है, लेकिन अब एक बार में 256 बिट।

यहाँ YMM रजिस्टर में 8 फ़्लोट लोड करने का एक उदाहरण है:

section .data
  ; Define 8 single-precision floats (256 bits total)
  my_avx_data dd 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0

section .text
  global _start

_start:
  ; Load 256 bits from my_avx_data into YMM0
  vmovaps ymm0, [my_avx_data]

  ; YMM0 now holds [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]

  ; Exit the program (Linux x86/x64 syscall)
  mov eax, 1    ; sys_exit
  xor ebx, ebx  ; exit code 0
  int 0x80      ; Invoke kernel

मुख्य अंतर: SSE बनाम AVX

हालाँकि SSE और AVX दोनों SIMD एक्सटेंशन हैं, AVX में महत्वपूर्ण सुधार हैं:

  • रजिस्टर का आकार: SSE 128-बिट XMM रजिस्टरों का उपयोग करता है; AVX 256-बिट YMM रजिस्टरों का।
  • डेटा प्रवाह: AVX, SSE की तुलना में प्रत्येक निर्देश में दोगुना डेटा संसाधित कर सकता है।
  • नॉन-डिस्ट्रक्टिव संक्रियाएँ: कई AVX निर्देश तीन-ऑपरैंड प्रारूप की अनुमति देते हैं, जिससे स्रोत ऑपरैंड सुरक्षित रहते हैं।
  • VEX प्रीफ़िक्स: AVX निर्देश VEX प्रीफ़िक्स का उपयोग करते हैं, जिससे अधिक लचीली एन्कोडिंग और भविष्य के एक्सटेंशन संभव होते हैं।

त्वरित जाँच: SIMD रजिस्टर

SSE और AVX रजिस्टरों के बारे में निम्न में से कौन-से कथन TRUE हैं?

पुनरावलोकन: SIMD की शक्ति

हमने SSE और AVX का परिचय दिया, जो शक्तिशाली SIMD निर्देश सेट हैं और आपके CPU को एक ही समय में कई डेटा आइटम पर संक्रियाएँ करने देते हैं। आपने इन विषयों के बारे में सीखा:

  • SIMD की संकल्पना और समानांतर प्रसंस्करण में इसके लाभ।
  • 128-बिट XMM रजिस्टरों (XMM0-XMM15) वाला SSE।
  • 256-बिट YMM रजिस्टरों (YMM0-YMM15) वाला AVX।
  • MOVAPS और VMOVAPS जैसे बुनियादी डेटा स्थानांतरण निर्देश।

डेटा-गहन कार्यों के प्रदर्शन को बेहतर बनाने के लिए इन निर्देश सेटों को समझना महत्वपूर्ण है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Assembly सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “SSE/AVX इंस्ट्रक्शन सेट का परिचय” पाठ निःशुल्क है?

हाँ—“SSE/AVX इंस्ट्रक्शन सेट का परिचय” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“SSE/AVX इंस्ट्रक्शन सेट का परिचय” में मैं क्या सीखूँगा?

आधुनिक SIMD इंस्ट्रक्शन सेट (SSE, AVX) और उनके रजिस्टरों का अवलोकन कीजिए, जिन्हें समानांतर डेटा प्रोसेसिंग के लिए बनाया गया है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“SSE/AVX इंस्ट्रक्शन सेट का परिचय” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. x87 FPU प्रोग्रामिंग की मूल बातें
  2. SSE/AVX इंस्ट्रक्शन सेट का परिचय
  3. SIMD से कोड का वेक्टरकरण
  4. फ़्लोटिंग-पॉइंट परिशुद्धता, राउंडिंग और अपवाद
← Assembly भाषा और x86 निम्न-स्तरीय सिस्टम प्रोग्रामिंग पर वापस जाएँ