Multithreading (computer architecture)
کمپیوٹر فن تعمیر میں، ملٹی تھریڈنگ ایک سنٹرل پروسیسنگ یونٹ (سی پی یو) (یا ملٹی کور پروسیسر میں ایک واحد کور) کی صلاحیت ہے جو آپریٹنگ سسٹم کے تعاون سے بیک وقت عمل درآمد کے متعدد دھاگے فراہم کرتی ہے۔ یہ نقطہ نظر ملٹی پروسیسنگ سے مختلف ہے۔ ملٹی تھریڈڈ ایپلی کیشن میں، دھاگے ایک یا ایک سے زیادہ کور کے وسائل کا اشتراک کرتے ہیں، جس میں کمپیوٹنگ یونٹس، سی پی یو کیشے، اور ٹرانسلیشن لک سائیڈ بفر (ٹی ایل بی) شامل ہیں۔ جہاں ملٹی پروسیسنگ سسٹم میں ایک یا زیادہ کور میں متعدد مکمل پروسیسنگ یونٹس شامل ہوتے ہیں، ملٹی تھریڈنگ کا مقصد تھریڈ لیول متوازی کے ساتھ ساتھ انسٹرکشن لیول متوازی کا استعمال کرکے ایک واحد کور کے استعمال کو بڑھانا ہے۔ چونکہ دونوں تکنیکیں تکمیلی ہیں، اس لیے وہ تقریبا تمام جدید سسٹمز آرکیٹیکچرز میں متعدد ملٹی تھریڈنگ سی پی یوز کے ساتھ اور متعدد ملٹی تھریڈنگ کورز والے سی پی یوز کے ساتھ مل کر کام کرتی ہیں۔ جائزہ ملٹی تھریڈنگ پیراڈائم زیادہ مقبول ہو گیا ہے کیونکہ 1990 کی دہائی کے آخر سے تعلیمی سطح کی متوازییت کو مزید بروئے کار لانے کی کوششیں رک گئی ہیں۔ اس نے تھرو پٹ کمپیوٹنگ کے تصور کو ٹرانزیکشن پروسیسنگ کے زیادہ خصوصی شعبے سے دوبارہ ابھرنے کی اجازت دی۔ اگرچہ کسی ایک دھاگے یا واحد پروگرام کو مزید تیز کرنا بہت مشکل ہے، لیکن زیادہ تر کمپیوٹر سسٹم دراصل متعدد دھاگوں یا پروگراموں کے درمیان ملٹی ٹاسکنگ کرتے ہیں۔ اس طرح، وہ تکنیکیں جو تمام کاموں کی کارکردگی کو بہتر بناتی ہیں، مجموعی کارکردگی کے فوائد کا باعث بنتی ہیں۔ تھرو پٹ کمپیوٹنگ کے لیے دو بڑی تکنیکیں ملٹی تھریڈنگ اور ملٹی پروسیسنگ ہیں۔ فوائد اگر کسی دھاگے میں بہت زیادہ کیش چھوٹ جاتی ہے، تو دوسرے دھاگے غیر استعمال شدہ کمپیوٹنگ وسائل سے فائدہ اٹھانا جاری رکھ سکتے ہیں، جس سے مجموعی طور پر تیزی سے عمل درآمد ہو سکتا ہے، کیونکہ اگر صرف ایک دھاگے کو انجام دیا جاتا تو یہ وسائل بے کار ہو جاتے۔ نیز، اگر کوئی تھریڈ سی پی یو کے تمام کمپیوٹنگ وسائل کو استعمال نہیں کر سکتا (کیونکہ ہدایات ایک دوسرے کے نتائج پر منحصر ہوتی ہیں)، تو دوسرا تھریڈ چلانے سے ان وسائل کو بیکار ہونے سے روکا جا سکتا ہے۔ نقصانات ہارڈ ویئر کے وسائل جیسے کیشز یا ٹرانسلیشن لک سائیڈ بفرز (ٹی ایل بی) کا اشتراک کرتے وقت متعدد دھاگے ایک دوسرے کے ساتھ مداخلت کر سکتے ہیں۔ نتیجے کے طور پر، تھریڈ سوئچنگ ہارڈ ویئر کو ایڈجسٹ کرنے کے لیے ضروری کم فریکوئنسیز یا اضافی پائپ لائن مراحل کی وجہ سے، ایک تھریڈ پر عمل درآمد کا وقت بہتر نہیں ہوتا ہے اور اسے خراب کیا جا سکتا ہے، یہاں تک کہ جب صرف ایک تھریڈ پر عمل درآمد ہو رہا ہو۔ مجموعی کارکردگی مختلف ہوتی ہے ؛ انٹیل اپنی ہائپر تھریڈنگ ٹیکنالوجی کے ساتھ 30 فیصد تک بہتری کا دعوی کرتا ہے، جبکہ ایک مصنوعی پروگرام صرف غیر مرضی کے مطابق منحصر فلوٹنگ پوائنٹ آپریشنز کا لوپ انجام دیتا ہے جب متوازی طور پر چلتا ہے تو دراصل 100% رفتار میں بہتری حاصل کرتا ہے۔ دوسری طرف، ایم ایم ایکس یا الٹی ویک ایکسٹینشنز کا استعمال کرتے ہوئے ہاتھ سے ٹیون کیے گئے اسمبلی زبان کے پروگرام اور ڈیٹا پریفیچ انجام دینے والے (ایک اچھے ویڈیو انکوڈر کے طور پر) کیش مس یا آئیڈل کمپیوٹنگ وسائل کا شکار نہیں ہوتے ہیں۔ اس طرح کے پروگرام ہارڈ ویئر ملٹی تھریڈنگ سے فائدہ نہیں اٹھاتے ہیں اور واقعی مشترکہ وسائل کے تنازعہ کی وجہ سے خراب کارکردگی دیکھ سکتے ہیں۔ سافٹ ویئر کے نقطہ نظر سے، ملٹی تھریڈنگ کے لیے ہارڈ ویئر سپورٹ سافٹ ویئر کو زیادہ نظر آتا ہے، جس میں ملٹی پروسیسنگ کے بجائے ایپلیکیشن پروگراموں اور آپریٹنگ سسٹم دونوں میں زیادہ تبدیلیوں کی ضرورت ہوتی ہے۔ ملٹی تھریڈنگ کی حمایت کے لیے استعمال ہونے والی ہارڈ ویئر تکنیک اکثر کمپیوٹر ملٹی ٹاسکنگ کے لیے استعمال ہونے والی سافٹ ویئر تکنیک کے متوازی ہوتی ہیں۔ تھریڈ شیڈولنگ بھی ملٹی تھریڈنگ میں ایک بڑا مسئلہ ہے۔ ملٹی تھریڈنگ کی اقسام انٹرلییوڈ/ٹیمپورل ملٹی تھریڈنگ موٹے دانوں والی ملٹی تھریڈنگ سب سے آسان قسم کی ملٹی تھریڈنگ اس وقت ہوتی ہے جب ایک دھاگہ اس وقت تک چلتا ہے جب تک کہ اسے کسی ایونٹ کے ذریعے بلاک نہیں کیا جاتا ہے جو عام طور پر ایک طویل تاخیر والا اسٹال بناتا ہے۔ اس طرح کا اسٹال ایک کیش مس ہو سکتا ہے جسے آف چپ میموری تک رسائی حاصل کرنی پڑتی ہے، جس میں ڈیٹا کو واپس آنے میں سینکڑوں سی پی یو سائیکل لگ سکتے ہیں۔ اسٹال کے حل ہونے کا انتظار کرنے کے بجائے، ایک تھریڈڈ پروسیسر عمل کو دوسرے تھریڈ میں بدل دیتا جو چلانے کے لیے تیار تھا۔ صرف اس صورت میں جب پچھلے دھاگے کا ڈیٹا پہنچ جائے، تو پچھلے دھاگے کو چلانے کے لیے تیار دھاگوں کی فہرست میں واپس رکھا جائے گا۔ مثال کے طور پر: سائیکل: دھاگے سے ہدایات جاری کی جاتی ہیں۔ سائیکل: دھاگے سے ہدایات جاری کی جاتی ہیں۔ سائیکل: تھریڈ سے ہدایات جاری کی جاتی ہیں، جو کہ ایک لوڈ انسٹرکشن ہے جو تمام کیشز میں چھوٹ جاتی ہے۔ سائیکل: تھریڈ شیڈولر کو بلایا جاتا ہے، تھریڈ پر چلا جاتا ہے۔ سائیکل: دھاگے سے ہدایات جاری کی جاتی ہیں۔ سائیکل: دھاگے سے ہدایات جاری کی جاتی ہیں۔ تصوراتی طور پر، یہ ریئل ٹائم آپریٹنگ سسٹمز میں استعمال ہونے والی کوآپریٹو ملٹی ٹاسکنگ کی طرح ہے، جس میں کام رضاکارانہ طور پر عمل درآمد کا وقت چھوڑ دیتے ہیں جب انہیں کسی قسم کے ایونٹ کا انتظار کرنے کی ضرورت ہوتی ہے۔ اس قسم کی ملٹی تھریڈنگ کو بلاک، کوآپریٹو یا موٹے دانے والی ملٹی تھریڈنگ کے نام سے جانا جاتا ہے۔ ملٹی تھریڈنگ ہارڈ ویئر سپورٹ کا مقصد بلاک شدہ دھاگے اور چلانے کے لیے تیار دوسرے دھاگے کے درمیان فوری تبدیلی کی اجازت دینا ہے۔ ایک دھاگے سے دوسرے دھاگے میں منتقل ہونے کا مطلب ہے کہ ہارڈ ویئر ایک رجسٹر سیٹ کو دوسرے میں استعمال کرنے سے بدل جاتا ہے۔ اس مقصد کو حاصل کرنے کے لیے، پروگرام کے مرئی رجسٹروں کے ہارڈ ویئر کے ساتھ ساتھ کچھ پروسیسر کنٹرول رجسٹروں (جیسے پروگرام کاؤنٹر) کو نقل کیا جاتا ہے۔ مثال کے طور پر، دو دھاگوں کے درمیان تیزی سے تبدیل کرنے کے لیے، پروسیسر کو رجسٹروں کے دو سیٹوں کے ساتھ بنایا جاتا ہے۔ ملٹی تھریڈنگ کے لیے اضافی ہارڈ ویئر سپورٹ تھریڈ سوئچنگ کو ایک سی پی یو سائیکل میں کرنے کی اجازت دیتا ہے، جس سے کارکردگی میں بہتری آتی ہے۔ نیز، اضافی ہارڈ ویئر ہر تھریڈ کو ایسا برتاؤ کرنے کی اجازت دیتا ہے جیسے وہ تنہا انجام دے رہا ہو اور کسی ہارڈ ویئر کے وسائل کو دوسرے تھریڈز کے ساتھ شیئر نہ کر رہا ہو، جس سے ملٹی تھریڈنگ کی حمایت کے لیے ایپلی کیشن اور آپریٹنگ سسٹم کے اندر درکار سافٹ ویئر تبدیلیوں کی مقدار کو کم سے کم کیا جا سکے۔ مائکرو کنکولرز اور سرایت شدہ پروسیسرز کے بہت سے خاندانوں میں متعدد رجسٹر بینک ہوتے ہیں جو رکاوٹوں کے لیے فوری سیاق و سباق کو تبدیل کرنے کی اجازت دیتے ہیں۔ اس طرح کی اسکیموں کو یوزر پروگرام تھریڈ اور انٹرپٹ تھریڈز کے درمیان بلاک ملٹی تھریڈنگ کی ایک قسم سمجھا جا سکتا ہے۔ فائن گرینڈ ملٹی تھریڈنگ فائن گرینڈ ملٹی تھریڈنگ کا مقصد عمل درآمد کی پائپ لائن سے ڈیٹا پر انحصار کرنے والے تمام اسٹالوں کو ہٹانا ہے۔ چونکہ ایک دھاگہ دوسرے دھاگوں سے نسبتا آزاد ہوتا ہے، اس لیے ایک پائپ لائننگ مرحلے میں ایک ہدایت کا امکان کم ہوتا ہے جس کے لیے پائپ لائن میں پرانی ہدایت سے آؤٹ پٹ کی ضرورت ہوتی ہے۔ تصوراتی طور پر، یہ آپریٹنگ سسٹم میں استعمال ہونے والی پری ایمپٹو ملٹی ٹاسکنگ سے ملتا جلتا ہے۔ ایک مشابہت یہ ہوگی کہ ہر فعال دھاگے کو دیا گیا ٹائم سلائس ایک سی پی یو سائیکل ہے۔ مثال کے طور پر: سائیکل: دھاگے سے ایک ہدایت جاری کی جاتی ہے۔ سائیکل: دھاگے سے ایک ہدایت جاری کی جاتی ہے۔ اس قسم کی ملٹی تھریڈنگ کو پہلے بیرل پروسیسنگ کہا جاتا تھا، جس میں بیرل کے ڈنڈے پائپ لائن کے مراحل اور ان کے عمل درآمد کے دھاگوں کی نمائندگی کرتے ہیں۔ انٹرلییوڈ، پری ایمپٹو، فائن گرینڈ یا ٹائم سلائسڈ ملٹی تھریڈنگ زیادہ جدید اصطلاحات ہیں۔ بلاک قسم کے ملٹی تھریڈنگ میں زیر بحث ہارڈ ویئر کے اخراجات کے علاوہ، انٹرلییوڈ ملٹی تھریڈنگ میں ہر پائپ لائن مرحلے کی اضافی لاگت ہوتی ہے جو اس کی ہدایت کے تھریڈ آئی ڈی کو ٹریک کرتی ہے جس پر وہ کارروائی کر رہی ہے۔ نیز، چونکہ پائپ لائن میں بیک وقت مزید دھاگے چلائے جا رہے ہیں، اس لیے مختلف دھاگوں کے درمیان ٹکرانے سے بچنے کے لیے کیش اور ٹی ایل بی جیسے مشترکہ وسائل کو بڑا ہونا ضروری ہے۔ بیک وقت ملٹی تھریڈنگ سب سے جدید قسم کی ملٹی تھریڈنگ کا اطلاق سپر اسکالر پروسیسرز پر ہوتا ہے۔ جبکہ ایک عام سپر اسکالر پروسیسر ہر سی پی یو سائیکل میں ایک تھریڈ سے متعدد ہدایات جاری کرتا ہے، بیک وقت ملٹی تھریڈنگ (ایس ایم ٹی) میں ایک سپر اسکالر پروسیسر ہر سی پی یو سائیکل میں متعدد تھریڈز سے ہدایات جاری کر سکتا ہے۔ اس بات کو تسلیم کرتے ہوئے کہ کسی بھی ایک دھاگے میں ہدایات کی سطح کے متوازی کی محدود مقدار ہوتی ہے، اس قسم کی ملٹی تھریڈنگ غیر استعمال شدہ ایشو سلاٹس سے وابستہ فضلے کو کم کرنے کے لیے متعدد دھاگوں میں دستیاب متوازی کا استحصال کرنے کی کوشش کرتی ہے۔ مثال کے طور پر: سائیکل: ہدایات اور دھاگے سے اور دھاگے سے ہدایات بیک وقت جاری کی جاتی ہیں۔ سائیکل: دھاگے سے ہدایات، دھاگے سے ہدایات، اور دھاگے سے ہدایات سبھی بیک وقت جاری کی جاتی ہیں۔ سائیکل: دھاگے اور ہدایات اور دھاگے سے ہدایات سبھی بیک وقت جاری کی جاتی ہیں۔ ملٹی تھریڈنگ کی دیگر اقسام کو ایس ایم ٹی سے ممتاز کرنے کے لیے، "عارضی ملٹی تھریڈنگ" کی اصطلاح اس بات کی نشاندہی کرنے کے لیے استعمال کی جاتی ہے جب ایک وقت میں صرف ایک دھاگے سے ہدایات جاری کی جا سکتی ہیں۔ انٹرلییوڈ ملٹی تھریڈنگ کے لیے زیر بحث ہارڈ ویئر کے اخراجات کے علاوہ، ایس ایم ٹی کے پاس ہر پائپ لائن مرحلے کی اضافی لاگت ہوتی ہے جس میں ہر ہدایت کی تھریڈ آئی ڈی پر کارروائی کی جاتی ہے۔ ایک بار پھر، مشترکہ وسائل جیسے کیشے اور ٹی ایل بی کو بڑی تعداد میں فعال دھاگوں پر کارروائی کے لیے سائز کا ہونا پڑتا ہے۔ نفاذ میں ڈی ای سی (بعد میں کمپیک) ای وی 8 (مکمل نہیں ہوا)، انٹیل ہائپر تھریڈنگ ٹیکنالوجی، آئی بی ایم پاور 5/پاور 6/پاور 7/پاور 8/پاور 9، آئی بی ایم زیڈ 13/زیڈ 14/زیڈ 15، سن مائیکرو سسٹمز الٹرا ایس پی اے آر سی ٹی 2، کری ایکس ایم ٹی، اور اے ایم ڈی بلڈوزر اور زین مائیکرو آرکیٹیکچرز شامل ہیں۔ نفاذ کی تفصیلات تحقیق کا ایک بڑا شعبہ تھریڈ شیڈولر ہے جسے اگلے عمل کے لیے تیار تھریڈز کی فہرست میں سے فوری طور پر انتخاب کرنا چاہیے، ساتھ ہی ساتھ چلانے کے لیے تیار اور رکے ہوئے تھریڈ کی فہرستوں کو برقرار رکھنا چاہیے۔ ایک اہم ذیلی موضوع مختلف تھریڈ ترجیحی اسکیمیں ہیں جو شیڈولر کے ذریعے استعمال کی جا سکتی ہیں۔ تھریڈ شیڈولر کو مکمل طور پر سافٹ ویئر میں، مکمل طور پر ہارڈ ویئر میں، یا ہارڈ ویئر/سافٹ ویئر کے امتزاج کے طور پر لاگو کیا جا سکتا ہے۔ تحقیق کا ایک اور شعبہ یہ ہے کہ کس قسم کے واقعات کو تھریڈ سوئچ کا سبب بننا چاہیے: کیش مس، انٹر تھریڈ کمیونیکیشن، ڈی ایم اے تکمیل وغیرہ۔ اگر ملٹی تھریڈنگ اسکیم تمام سافٹ ویئر سے نظر آنے والی حالت کی نقل بناتی ہے، بشمول مراعات یافتہ کنٹرول رجسٹر اور ٹی ایل بی، تو یہ ہر دھاگے کے لیے ورچوئل مشینیں بنانے کے قابل بناتی ہے۔ یہ ہر تھریڈ کو ایک ہی پروسیسر پر اپنا آپریٹنگ سسٹم چلانے کی اجازت دیتا ہے۔ دوسری طرف، اگر صرف یوزر موڈ کی حالت کو محفوظ کیا جاتا ہے، تو کم ہارڈ ویئر کی ضرورت ہوتی ہے، جو ایک ہی ڈائی ایریا یا لاگت کے لیے ایک وقت میں زیادہ تھریڈز کو فعال ہونے دے گا۔ سپر تھریڈنگ قیاس آرائی پر مبنی ملٹی تھریڈنگ حوالہ جات بیرونی لنکس ایک سروے آف پروسیسرز ود ایکسپلیسیٹ ملٹی تھریڈنگ، اے سی ایم، مارچ 2003، بذریعہ تھیو انگیرر، بورٹ روبی اور جوریج سلک آپریٹنگ سسٹم۔ ملٹی ٹاسکنگ، ملٹی تھریڈنگ اور ملٹی پروسیسنگ گیکس فار گیکس کے درمیان فرق، 6 ستمبر 2018۔ سنٹرل پروسیسنگ یونٹ انسٹرکشن پروسیسنگ مائکرو پروسیسرز متوازی کمپیوٹنگ تھریڈز (کمپیوٹنگ)