Multithreading (computer architecture)
কম্পিউটার আর্কিটেকচারে, মাল্টিথ্রেডিং হল একটি সেন্ট্রাল প্রসেসিং ইউনিটের (সিপিইউ) (বা মাল্টি-কোর প্রসেসরে একটি একক কোর) ক্ষমতা যা অপারেটিং সিস্টেম দ্বারা সমর্থিত একযোগে এক্সিকিউশনের একাধিক থ্রেড সরবরাহ করে। এই পদ্ধতিটি মাল্টিপ্রোসেসিং থেকে আলাদা। একটি মাল্টিথ্রেডেড অ্যাপ্লিকেশনে, থ্রেডগুলি একক বা একাধিক কোরের সংস্থানগুলি ভাগ করে নেয়, যার মধ্যে রয়েছে কম্পিউটিং ইউনিট, সিপিইউ ক্যাশে এবং ট্রান্সলেশন লুকসাইড বাফার (টিএলবি)। যেখানে মাল্টিপ্রোসেসিং সিস্টেমে এক বা একাধিক কোরের মধ্যে একাধিক সম্পূর্ণ প্রক্রিয়াকরণ ইউনিট অন্তর্ভুক্ত থাকে, মাল্টিথ্রেডিংয়ের লক্ষ্য থ্রেড-স্তরের সমান্তরালতার পাশাপাশি নির্দেশ-স্তরের সমান্তরালতা ব্যবহার করে একক কোরের ব্যবহার বৃদ্ধি করা। যেহেতু দুটি কৌশল পরিপূরক, তাই এগুলি প্রায় সমস্ত আধুনিক সিস্টেম আর্কিটেকচারে একাধিক মাল্টিথ্রেডিং সিপিইউ এবং একাধিক মাল্টিথ্রেডিং কোর সহ সিপিইউগুলির সাথে মিলিত হয়। ওভারভিউ মাল্টিথ্রেডিং দৃষ্টান্তটি আরও জনপ্রিয় হয়ে উঠেছে কারণ 1990-এর দশকের শেষের দিক থেকে নির্দেশ-স্তরের সমান্তরালতা আরও কাজে লাগানোর প্রচেষ্টা স্থগিত হয়ে গেছে। এটি লেনদেন প্রক্রিয়াকরণের আরও বিশেষ ক্ষেত্র থেকে থ্রুপুট কম্পিউটিংয়ের ধারণাটি পুনরায় উত্থাপনের অনুমতি দেয়। যদিও একটি থ্রেড বা একক প্রোগ্রামকে আরও ত্বরান্বিত করা খুব কঠিন, বেশিরভাগ কম্পিউটার সিস্টেম আসলে একাধিক থ্রেড বা প্রোগ্রামের মধ্যে মাল্টিটাস্কিং করে। সুতরাং, যে কৌশলগুলি সমস্ত কাজের থ্রুপুটকে উন্নত করে তার ফলে সামগ্রিক কর্মক্ষমতা লাভ হয়। থ্রুপুট কম্পিউটিংয়ের জন্য দুটি প্রধান কৌশল হল মাল্টিথ্রেডিং এবং মাল্টিপ্রোসেসিং। উপকারিতা যদি একটি থ্রেডে প্রচুর ক্যাশ মিস হয়ে যায়, তবে অন্যান্য থ্রেডগুলি অব্যবহৃত কম্পিউটিং সংস্থানগুলির সুবিধা নেওয়া চালিয়ে যেতে পারে, যা দ্রুত সামগ্রিক সম্পাদনের দিকে পরিচালিত করতে পারে, কারণ শুধুমাত্র একটি থ্রেড কার্যকর করা হলে এই সংস্থানগুলি নিষ্ক্রিয় থাকত। এছাড়াও, যদি কোনও থ্রেড সিপিইউর সমস্ত কম্পিউটিং সংস্থান ব্যবহার করতে না পারে (কারণ নির্দেশাবলী একে অপরের ফলাফলের উপর নির্ভর করে), অন্য থ্রেড চালানো সেই সংস্থানগুলিকে নিষ্ক্রিয় হতে বাধা দিতে পারে। অসুবিধাগুলি ক্যাশে বা ট্রান্সলেশন লুকসাইড বাফারের (টিএলবি) মতো হার্ডওয়্যার সংস্থানগুলি ভাগ করে নেওয়ার সময় একাধিক থ্রেড একে অপরের সাথে হস্তক্ষেপ করতে পারে। ফলস্বরূপ, একটি থ্রেডের কার্যকর করার সময় উন্নত হয় না এবং হ্রাস করা যেতে পারে, এমনকি যখন শুধুমাত্র একটি থ্রেড কার্যকর করা হয়, কম ফ্রিকোয়েন্সি বা অতিরিক্ত পাইপলাইন পর্যায়ের কারণে যা থ্রেড-স্যুইচিং হার্ডওয়্যার সামঞ্জস্য করার জন্য প্রয়োজনীয়। সামগ্রিক দক্ষতা পরিবর্তিত হয়; ইন্টেল তার হাইপার-থ্রেডিং প্রযুক্তির সাথে 30 শতাংশ পর্যন্ত উন্নতির দাবি করে, যখন একটি সিন্থেটিক প্রোগ্রাম কেবল অপ্টিমাইজড নির্ভরশীল ফ্লোটিং-পয়েন্ট ক্রিয়াকলাপের একটি লুপ সম্পাদন করে যখন সমান্তরালভাবে চালানো হয় তখন আসলে একটি 100% গতির উন্নতি লাভ করে। অন্যদিকে, এম. এম. এক্স বা আল্টিভেক এক্সটেনশন ব্যবহার করে এবং ডেটা প্রিফেচগুলি সম্পাদন করে (একটি ভাল ভিডিও এনকোডার হিসাবে) হ্যান্ড-টিউন্ড অ্যাসেম্বলি ল্যাঙ্গুয়েজ প্রোগ্রামগুলি ক্যাশে মিস বা নিষ্ক্রিয় কম্পিউটিং সংস্থানগুলিতে ভুগছে না। এই ধরনের প্রোগ্রামগুলি তাই হার্ডওয়্যার মাল্টিথ্রেডিং থেকে উপকৃত হয় না এবং ভাগ করা সম্পদের জন্য বিতর্কের কারণে প্রকৃতপক্ষে অবনমিত কর্মক্ষমতা দেখতে পারে। সফ্টওয়্যারের দৃষ্টিকোণ থেকে, মাল্টিথ্রেডিংয়ের জন্য হার্ডওয়্যার সমর্থন সফ্টওয়্যারের কাছে বেশি দৃশ্যমান, যার জন্য মাল্টিপ্রোসেসিংয়ের চেয়ে অ্যাপ্লিকেশন প্রোগ্রাম এবং অপারেটিং সিস্টেম উভয় ক্ষেত্রেই আরও বেশি পরিবর্তনের প্রয়োজন হয়। মাল্টিথ্রেডিং সমর্থন করার জন্য ব্যবহৃত হার্ডওয়্যার কৌশলগুলি প্রায়শই কম্পিউটার মাল্টিটাস্কিংয়ের জন্য ব্যবহৃত সফ্টওয়্যার কৌশলগুলির সমান্তরাল। মাল্টিথ্রেডিং-এ থ্রেড সময়সূচীও একটি বড় সমস্যা। মাল্টিথ্রেডিংয়ের প্রকার ইন্টারলিভেড/টেম্পোরাল মাল্টিথ্রেডিং মোটা-দানাদার মাল্টিথ্রেডিং সবচেয়ে সহজ ধরনের মাল্টিথ্রেডিং তখন ঘটে যখন একটি থ্রেড এমন কোনও ইভেন্ট দ্বারা অবরুদ্ধ না হওয়া পর্যন্ত চলে যা সাধারণত একটি দীর্ঘ-বিলম্ব স্টল তৈরি করে। এই ধরনের স্টল একটি ক্যাশে মিস হতে পারে যা অফ-চিপ মেমরি অ্যাক্সেস করতে হবে, যা ডেটা ফিরে পেতে শত শত সিপিইউ চক্র নিতে পারে। স্টলের সমাধানের জন্য অপেক্ষা করার পরিবর্তে, একটি থ্রেডেড প্রসেসর এক্সিকিউশনকে অন্য থ্রেডে পরিবর্তন করবে যা চালানোর জন্য প্রস্তুত ছিল। শুধুমাত্র যখন পূর্ববর্তী থ্রেডের তথ্য এসে পৌঁছবে, তখন পূর্ববর্তী থ্রেডটি পুনরায় রেডি-টু-রান থ্রেডের তালিকায় রাখা হবে। উদাহরণস্বরূপঃ চক্রঃ সূত্র থেকে নির্দেশ জারি করা হয়। চক্রঃ সূত্র থেকে নির্দেশ জারি করা হয়। চক্রঃ থ্রেড থেকে নির্দেশ জারি করা হয়, যা একটি লোড নির্দেশ যা সমস্ত ক্যাশে অনুপস্থিত। চক্রঃ থ্রেড সিডিউলার আহ্বান করা হয়, থ্রেডে স্যুইচ করে। চক্রঃ সূত্র থেকে নির্দেশ জারি করা হয়। চক্রঃ সূত্র থেকে নির্দেশ জারি করা হয়। ধারণাগতভাবে, এটি রিয়েল-টাইম অপারেটিং সিস্টেমে ব্যবহৃত সমবায় মাল্টি-টাস্কিংয়ের অনুরূপ, যেখানে কাজগুলি স্বেচ্ছায় কার্যকর করার সময় ছেড়ে দেয় যখন তাদের কোনও ধরণের ইভেন্টের জন্য অপেক্ষা করতে হয়। এই ধরনের মাল্টিথ্রেডিং ব্লক, সমবায় বা মোটা-দানাদার মাল্টিথ্রেডিং হিসাবে পরিচিত। মাল্টিথ্রেডিং হার্ডওয়্যার সমর্থনের লক্ষ্য হল একটি অবরুদ্ধ থ্রেড এবং চালানোর জন্য প্রস্তুত অন্য থ্রেডের মধ্যে দ্রুত স্যুইচ করার অনুমতি দেওয়া। এক থ্রেড থেকে অন্য থ্রেডে স্যুইচ করার অর্থ হল হার্ডওয়্যারটি একটি রেজিস্টার সেট থেকে অন্যটিতে স্যুইচ করে। এই লক্ষ্য অর্জনের জন্য, প্রোগ্রাম দৃশ্যমান রেজিস্টারের জন্য হার্ডওয়্যার, পাশাপাশি কিছু প্রসেসর নিয়ন্ত্রণ রেজিস্টার (যেমন প্রোগ্রাম কাউন্টার) প্রতিলিপি করা হয়। উদাহরণস্বরূপ, দুটি থ্রেডের মধ্যে দ্রুত পরিবর্তন করতে, প্রসেসরটি দুটি সেট রেজিস্টার দিয়ে তৈরি করা হয়। মাল্টিথ্রেডিং-এর জন্য অতিরিক্ত হার্ডওয়্যার সমর্থন একটি সিপিইউ চক্রে থ্রেড স্যুইচিং করার অনুমতি দেয়, যা কর্মক্ষমতার উন্নতি নিয়ে আসে। এছাড়াও, অতিরিক্ত হার্ডওয়্যার প্রতিটি থ্রেডকে এমন আচরণ করতে দেয় যেন এটি একা সম্পাদন করছে এবং অন্যান্য থ্রেডের সাথে কোনও হার্ডওয়্যার সংস্থান ভাগ করে নিচ্ছে না, মাল্টিথ্রেডিং সমর্থন করার জন্য অ্যাপ্লিকেশন এবং অপারেটিং সিস্টেমের মধ্যে প্রয়োজনীয় সফ্টওয়্যার পরিবর্তনের পরিমাণ কমিয়ে দেয়। মাইক্রোকন্ট্রোলার এবং এমবেডেড প্রসেসরের অনেক পরিবারে একাধিক রেজিস্টার ব্যাঙ্ক রয়েছে যা ইন্টারাপ্টের জন্য দ্রুত প্রসঙ্গ পরিবর্তনের অনুমতি দেয়। এই ধরনের স্কিমগুলি ইউজার প্রোগ্রাম থ্রেড এবং ইন্টারাপ্ট থ্রেডের মধ্যে এক ধরনের ব্লক মাল্টিথ্রেডিং হিসাবে বিবেচিত হতে পারে। সূক্ষ্ম দানাদার মাল্টিথ্রেডিং সূক্ষ্ম দানাদার মাল্টিথ্রেডিং-এর উদ্দেশ্য হল এক্সিকিউশন পাইপলাইন থেকে সমস্ত ডেটা নির্ভরতার স্টলগুলি সরিয়ে ফেলা। যেহেতু একটি থ্রেড অন্যান্য থ্রেড থেকে তুলনামূলকভাবে স্বাধীন, তাই একটি পাইপলাইনিং পর্যায়ে পাইপলাইনের একটি পুরানো নির্দেশ থেকে আউটপুট প্রয়োজন হওয়ার সম্ভাবনা কম। ধারণাগতভাবে, এটি অপারেটিং সিস্টেমে ব্যবহৃত প্রিএম্পটিভ মাল্টিটাস্কিংয়ের অনুরূপ; একটি উপমা হবে যে প্রতিটি সক্রিয় থ্রেডে দেওয়া সময় স্লাইসটি একটি সিপিইউ চক্র। উদাহরণস্বরূপঃ চক্রঃ সূত্র থেকে একটি নির্দেশ জারি করা হয়। চক্রঃ সূত্র থেকে একটি নির্দেশ জারি করা হয়। এই ধরনের মাল্টিথ্রেডিংকে প্রথমে ব্যারেল প্রসেসিং বলা হত, যেখানে একটি ব্যারেলের স্ট্যাভগুলি পাইপলাইনের পর্যায় এবং তাদের কার্যকর থ্রেডের প্রতিনিধিত্ব করে। ইন্টারলিভড, প্রি-এম্পটিভ, ফাইন-গ্রেইনড বা টাইম-স্লাইসড মাল্টিথ্রেডিং হল আরও আধুনিক পরিভাষা। ব্লক ধরনের মাল্টিথ্রেডিং-এ আলোচিত হার্ডওয়্যার খরচ ছাড়াও, ইন্টারলিভড মাল্টিথ্রেডিং-এর প্রতিটি পাইপলাইন পর্যায়ের একটি অতিরিক্ত খরচ রয়েছে যা এটি যে নির্দেশটি প্রক্রিয়াকরণ করছে তার থ্রেড আইডি ট্র্যাক করে। এছাড়াও, যেহেতু পাইপলাইনে একযোগে আরও থ্রেড কার্যকর করা হচ্ছে, তাই বিভিন্ন থ্রেডের মধ্যে ধাক্কা এড়াতে ক্যাশে এবং টিএলবি-র মতো ভাগ করা সংস্থানগুলি আরও বড় হওয়া দরকার। একযোগে মাল্টিথ্রেডিং সবচেয়ে উন্নত ধরনের মাল্টিথ্রেডিং সুপারস্কেলার প্রসেসরের ক্ষেত্রে প্রযোজ্য। যেখানে একটি সাধারণ সুপারস্কেলার প্রসেসর প্রতিটি সিপিইউ চক্রে একটি থ্রেড থেকে একাধিক নির্দেশাবলী জারি করে, একযোগে মাল্টিথ্রেডিং (এসএমটি)-এ একটি সুপারস্কেলার প্রসেসর প্রতিটি সিপিইউ চক্রে একাধিক থ্রেড থেকে নির্দেশাবলী জারি করতে পারে। যে কোনও একক থ্রেডে সীমিত পরিমাণে নির্দেশ-স্তরের সমান্তরালতা রয়েছে তা স্বীকার করে, এই ধরনের মাল্টিথ্রেডিং অব্যবহৃত ইস্যু স্লটের সাথে সম্পর্কিত বর্জ্য হ্রাস করতে একাধিক থ্রেড জুড়ে উপলব্ধ সমান্তরালতা কাজে লাগানোর চেষ্টা করে। উদাহরণস্বরূপঃ চক্রঃ নির্দেশাবলী এবং সূত্র থেকে এবং সূত্র থেকে নির্দেশ একই সাথে জারি করা হয়। চক্রঃ সূত্র থেকে নির্দেশ, সূত্র থেকে নির্দেশ এবং সূত্র থেকে নির্দেশ সবই একযোগে জারি করা হয়। চক্রঃ সূত্র এবং নির্দেশাবলী এবং সূত্র থেকে নির্দেশগুলি একই সাথে জারি করা হয়। এসএমটি থেকে অন্যান্য ধরনের মাল্টিথ্রেডিংকে আলাদা করার জন্য, "টেম্পোরাল মাল্টিথ্রেডিং" শব্দটি ব্যবহার করা হয় যখন একটি সময়ে শুধুমাত্র একটি থ্রেড থেকে নির্দেশাবলী জারি করা যেতে পারে। ইন্টারলিভড মাল্টিথ্রেডিং-এর জন্য আলোচিত হার্ডওয়্যার খরচ ছাড়াও, এসএমটি-র প্রতিটি পাইপলাইন পর্যায়ে প্রক্রিয়াজাত প্রতিটি নির্দেশের থ্রেড আইডি ট্র্যাক করার অতিরিক্ত খরচ রয়েছে। আবার, বিপুল সংখ্যক সক্রিয় থ্রেড প্রক্রিয়াকরণের জন্য ক্যাশে এবং টিএলবি-র মতো ভাগ করা সংস্থানগুলির আকার নির্ধারণ করতে হবে। বাস্তবায়নের মধ্যে রয়েছে ডিইসি (পরে কম্পাক) ইভি8 (সম্পূর্ণ হয়নি), ইন্টেল হাইপার-থ্রেডিং প্রযুক্তি, আইবিএম পাওয়ার5/পাওয়ার6/পাওয়ার7/পাওয়ার8/পাওয়ার9, আইবিএম জেড13/জেড14/জেড15, সান মাইক্রোসিস্টেমস আল্ট্রাস্পার্ক টি2, ক্রে এক্সএমটি এবং এএমডি বুলডোজার এবং জেন মাইক্রোআর্কিটেকচার। বাস্তবায়নের সুনির্দিষ্ট বিষয় গবেষণার একটি প্রধান ক্ষেত্র হল থ্রেড সিডিউলার যা অবশ্যই পরবর্তী কার্যকর করার জন্য রেডি-টু-রান থ্রেডের তালিকা থেকে দ্রুত বেছে নিতে হবে, পাশাপাশি রেডি-টু-রান এবং স্থগিত থ্রেড তালিকা বজায় রাখতে হবে। একটি গুরুত্বপূর্ণ উপ-বিষয় হল বিভিন্ন থ্রেড অগ্রাধিকার স্কিম যা সময়সূচী দ্বারা ব্যবহার করা যেতে পারে। থ্রেড সিডিউলার সম্পূর্ণরূপে সফ্টওয়্যারে, সম্পূর্ণরূপে হার্ডওয়্যারে বা হার্ডওয়্যার/সফ্টওয়্যার সংমিশ্রণ হিসাবে প্রয়োগ করা যেতে পারে। গবেষণার আরেকটি ক্ষেত্র হল কোন ধরনের ঘটনা থ্রেড পরিবর্তনের কারণ হওয়া উচিতঃ ক্যাশে মিস, আন্তঃ-থ্রেড যোগাযোগ, ডি. এম. এ সমাপ্তি ইত্যাদি। যদি মাল্টিথ্রেডিং স্কিমটি বিশেষায়িত নিয়ন্ত্রণ রেজিস্টার এবং টিএলবি সহ সমস্ত সফ্টওয়্যার-দৃশ্যমান অবস্থার প্রতিলিপি তৈরি করে, তবে এটি প্রতিটি থ্রেডের জন্য ভার্চুয়াল মেশিন তৈরি করতে সক্ষম করে। এটি প্রতিটি থ্রেডকে একই প্রসেসরে নিজস্ব অপারেটিং সিস্টেম চালানোর অনুমতি দেয়। অন্যদিকে, যদি শুধুমাত্র ব্যবহারকারী-মোড অবস্থা সংরক্ষিত থাকে, তবে কম হার্ডওয়্যারের প্রয়োজন হয়, যা একই ডাই এলাকা বা ব্যয়ের জন্য একবারে আরও বেশি থ্রেড সক্রিয় করার অনুমতি দেবে। আরও দেখুন সুপার-থ্রেডিং স্পেক্যুলেটিভ মাল্টিথ্রেডিং রেফারেন্স এক্সটার্নাল লিঙ্ক এ সার্ভে অফ প্রসেসর উইথ এক্সপ্লিসিট মাল্টিথ্রেডিং, এসিএম, মার্চ 2003, থিও উঙ্গেরার, বোরুট রবি এবং জুরিজ সিল্ক অপারেটিং সিস্টেম। মাল্টিটাস্কিং, মাল্টিথ্রেডিং এবং মাল্টিপ্রোসেসিং গিক্সফোরগিক্সের মধ্যে পার্থক্য, 6 সেপ্টেম্বর 2018। কেন্দ্রীয় প্রক্রিয়াকরণ ইউনিট নির্দেশ প্রক্রিয়াকরণ মাইক্রোপ্রসেসর সমান্তরাল কম্পিউটিং থ্রেড (কম্পিউটিং)