একক থ্রেডটি একাধিক কোরগুলিতে কীভাবে চলবে?


61

আমি এক উচ্চ স্তরে, কীভাবে একক থ্রেডগুলি একাধিক কোর জুড়ে চলছে তা বোঝার চেষ্টা করছি। নীচে আমার সেরা বোঝার আছে। যদিও এটি সঠিক আমি বিশ্বাস করি না।

হাইপার-থ্রেডিংয়ের আমার পড়ার উপর ভিত্তি করে , দেখে মনে হচ্ছে ওএস সমস্ত থ্রেডের নির্দেশাবলী এমনভাবে সংগঠিত করে যাতে তারা একে অপরের দিকে অপেক্ষা না করে। তারপরে সিপিইউর সামনের প্রান্তটি প্রতিটি কোরকে একটি থ্রেড বিতরণ করে সেই নির্দেশাবলীকে আরও সুসংহত করে এবং যে কোনও উন্মুক্ত চক্রের মধ্যে প্রতিটি থ্রেড থেকে স্বতন্ত্র নির্দেশাবলী বিতরণ করে।

সুতরাং যদি শুধুমাত্র একটি থ্রেড থাকে তবে ওএস কোনও অপ্টিমাইজেশন করবে না। যাইহোক, সিপিইউর সম্মুখ-প্রান্ত প্রতিটি কোরের মধ্যে স্বতন্ত্র নির্দেশের সেট বিতরণ করবে।

Https://stackoverflow.com/a/15936270 অনুসারে , একটি নির্দিষ্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ কম-বেশি থ্রেড তৈরি করতে পারে, তবে এই থ্রেডগুলির সাথে কী করবেন তা নির্ধারণ করার সময় এটি অপ্রাসঙ্গিক। ওএস এবং সিপিইউ এটি পরিচালনা করে, তাই প্রোগ্রামিং ভাষা ব্যবহার না করেই এটি ঘটে।

এখানে চিত্র বর্ণনা লিখুন

কেবল পরিষ্কার করতেই, আমি একক কোরতে একাধিক থ্রেড চালানোর বিষয়ে নয়, একাধিক কোর জুড়ে একটি একক থ্রেড সম্পর্কে জিজ্ঞাসা করছি।

আমার সারসংক্ষেপে কী ভুল? থ্রেডের নির্দেশাবলী কোথায় এবং কীভাবে একাধিক কোরগুলির মধ্যে বিভক্ত? প্রোগ্রামিং ভাষার বিষয়টি কি গুরুত্বপূর্ণ? আমি জানি এটি একটি বিস্তৃত বিষয়; আমি এটির একটি উচ্চ-স্তরের বোঝার আশা করছি।


6
একক সফ্টওয়্যার থ্রেডের জন্য নির্দেশাবলীর একটি সেট অনেকগুলি কোরে চলতে পারে তবে একবারে তা নয়।
Kroltan

1
আপনি সফ্টওয়্যার থ্রেড (যা ওএস শিডিয়ুলার জড়িত) এবং হার্ডওয়্যার থ্রেড বা হাইপারথ্রেডিং (একটি সিপিইউ বৈশিষ্ট্য যা একটি কোরকে দুটির মতো আচরণ করে) মিশ্রণ করছেন।
উগোরেন

2
আমার কাছে 20 ড্রাইভার এবং 4 ট্রাক রয়েছে। কীভাবে সম্ভব যে একজন ড্রাইভার দুটি ট্রাক দিয়ে প্যাকেজ সরবরাহ করতে পারে? কীভাবে সম্ভব যে একটি ট্রাকের একাধিক ড্রাইভার থাকতে পারে? উভয় প্রশ্নের উত্তর একই। মোড় নিন
এরিক লিপার্ট

উত্তর:


84

অপারেটিং সিস্টেমটি চালানোর জন্য উপযুক্ত থ্রেডগুলিতে সিপিইউর টাইম স্লাইস সরবরাহ করে

যদি কেবল একটি কোর থাকে, তবে অপারেটিং সিস্টেমটি সেই সময়ের উপর একটি স্লাইসের জন্য সর্বাধিক যোগ্য থ্রেড নির্ধারণ করে। একটি সময় স্লাইস সমাপ্ত হওয়ার পরে, বা যখন আইওতে চলমান থ্রেড ব্লক হয়, বা প্রসেসরের বাহ্যিক ইভেন্টগুলির দ্বারা বাধা দেওয়া হয়, অপারেটিং সিস্টেমটি কোন থ্রেডটি চালানোর জন্য পুনরায় মূল্যায়ন করে (এবং এটি একই থ্রেডটি আবার বা অন্য কোনওটি চয়ন করতে পারে)।

চালনার যোগ্যতা ন্যায্যতা এবং অগ্রাধিকার এবং তাত্পর্যপূর্ণতার উপর পরিবর্তিত হয় এবং এই পদ্ধতিতে বিভিন্ন থ্রেড সময়ের স্লাইস পায়, যা অন্যদের চেয়ে কিছু বেশি।

যদি একাধিক কোর, এন থাকে তবে অপারেটিং সিস্টেমটি কোরে চালানোর জন্য সবচেয়ে উপযুক্ত এন থ্রেডগুলি নির্ধারণ করে।

প্রসেসর অ্যাফিনিটি একটি দক্ষতা বিবেচনা। প্রতিবার সিপিইউ আগের চেয়ে আলাদা থ্রেড চালায়, এটি কিছুটা ধীরে ধীরে ধীরে ধীরে ঝুঁকবে কারণ এর ক্যাশে আগের থ্রেডের জন্য উষ্ণ, তবে নতুনের চেয়ে শীতল। সুতরাং, একই সময় একই প্রসেসরে অসংখ্য সময় স্লাইসের উপরে চালানো দক্ষতার সুবিধা।

তবে অপারেটিং সিস্টেমটি বিভিন্ন সিপিইউতে একটি থ্রেড টাইম-স্লাইস সরবরাহ করতে মুক্ত, এবং এটি সমস্ত সিপিইউগুলির মাধ্যমে বিভিন্ন সময় স্লাইসে ঘোরানো যেতে পারে। @ Gnasher729 যেমন বলেছে এটি একসাথে একাধিক সিপিইউতে একটি থ্রেড চালাতে পারে না।

হাইপার হার্ডওয়্যার একটি পদ্ধতি যার দ্বারা একটি একক হয় উন্নত CPU- র কোর দুই বা ততোধিক সঞ্চালনের সমর্থন করতে পারে না বিভিন্ন একযোগে থ্রেড। (এই জাতীয় সিপিইউ অতিরিক্ত পূর্ণ কোরগুলির তুলনায় সিলিকন রিয়েল এস্টেটে কম খরচে অতিরিক্ত থ্রেড সরবরাহ করতে পারে)) এই বর্ধিত সিপিইউ কোরকে অন্যান্য থ্রেডের জন্য অতিরিক্ত রাষ্ট্রকে সমর্থন করা দরকার, যেমন সিপিইউ রেজিস্ট্রার মানগুলি, এবং সমন্বয় রাষ্ট্র এবং আচরণেরও রয়েছে যে থ্রেডগুলি বিভ্রান্ত না করে that সিপিইউর মধ্যে ক্রিয়ামূলক ইউনিট ভাগ করে নেওয়া সক্ষম করে।

হাইপারথ্রেডিং প্রোগ্রামিংয়ের দৃষ্টিকোণ থেকে একটি হার্ডওয়্যার দৃষ্টিভঙ্গি থেকে প্রযুক্তিগতভাবে চ্যালেঞ্জ করার সময়, এক্সিকিউশন মডেলটি আরও জটিল কিছু না করে কেবলমাত্র অতিরিক্ত সিপিইউ কোরগুলির থেকে থাকে। সুতরাং, অপারেটিং সিস্টেমটি অতিরিক্ত সিপিইউ কোরগুলি দেখেছে, যদিও বেশ কিছু হাইপারথ্রেড থ্রেড একটি সিপিইউ কোরের ক্যাশে আর্কিটেকচার ভাগ করে নিচ্ছে বলে কিছু নতুন প্রসেসর অ্যাফিনিটি সমস্যা রয়েছে।


আমরা নির্লজ্জভাবে ভাবতে পারি যে হাইপারথ্রেডেড কোরের উপর দুটি থ্রেড চলমান রয়েছে যা প্রতিটি তাদের নিজস্ব পুরো কোর দিয়ে যতটা দ্রুত অর্ধেক চালায় run তবে এটি অগত্যা নয়, যেহেতু একক থ্রেডের সম্পাদনটি স্ল্যাক চক্র দ্বারা পরিপূর্ণ এবং সেগুলির কিছু পরিমাণ অন্য হাইপারথ্রেড থ্রেড দ্বারা ব্যবহার করা যেতে পারে। তদ্ব্যতীত, অ-স্ল্যাক চক্রের সময়ও, একটি থ্রেড অন্যের তুলনায় বিভিন্ন কার্যকরী ইউনিট ব্যবহার করতে পারে তাই একযোগে কার্যকর কার্যকর হতে পারে। হাইপারথ্রেডিংয়ের জন্য বর্ধিত সিপিইউতে বিশেষত সেইটিকে সমর্থন করার জন্য আরও কয়েকটি ভারী ব্যবহৃত ফাংশনাল ইউনিট থাকতে পারে।


3
"এইভাবে, একই সময় একই প্রসেসরে অসংখ্য সময় স্লাইসের উপরে চালানো দক্ষতার সুবিধা" " এটা হতে হতো না সংলগ্ন সময় টুকরা? অন্যথায়, ক্যাশেগুলি অন্য থ্রেড দ্বারা মুছে যাবে, না? একটি সুন্দর ব্যাখ্যা জন্য +1।
jpmc26

2
@ লুয়ান: এইচটি প্রায়শই ভাল হয় তবে পরিস্থিতিটি আপনার বর্ণনার মতো সহজ নয়। ফ্রন্ট-এন্ড ইস্যু ব্যান্ডউইথ (ইনটেলের প্রতি ঘড়ি প্রতি 4 টি উওস, রাইজেনে 6 টি) থ্রেডগুলির মধ্যে সমানভাবে ভাগ করা হয় (যদি না কোনও স্টল না থাকে)। যদি এটি বাধা হয়ে থাকে, তবে আমি যেমন বলেছিলাম এইচটি মোটেও সহায়তা করবে না। স্কাইলেকের পক্ষে খুব ভাল সুরযুক্ত লুপের কাছে আসা অস্বাভাবিক কিছু নয়, যদি বোঝা, ALU এবং স্টোরগুলির মিশ্রণ থাকে ... ট্রানজিস্টরগুলি সস্তা হয় (এবং সবই একবারে স্যুইচ করা যায় না বা সিপিইউ গলে যাবে), সুতরাং আধুনিক x86 সিপিইউগুলির সামনের প্রান্তের ফিডের চেয়ে বেশি এক্সিকিউশন পোর্ট রয়েছে (অনেকগুলি এক্সিকিউশন ইউনিটই প্রতিলিপি করা হচ্ছে ...
পিটার কর্ডস

2
... একাধিক পোর্টে) ... এটি একটি বর্জ্যের মতো মনে হতে পারে তবে প্রায়শই একটি লুপ কেবল একবারে এক ধরণের ALU এক্সিকিউশন ইউনিট ব্যবহার করবে, তাই সমস্ত কিছুর ডুপ্লিকেট থাকা মানে যে কোনও ধরণের কোড চলছে, সেখানে একাধিক রয়েছে তার নির্দেশাবলী জন্য বন্দর। সুতরাং আপনি এইচটি থেকে উপকারের জন্য যে কারণটি উল্লেখ করেছেন তা সাধারণ নয়, যেহেতু বেশিরভাগ কোডটিতে কিছু বোঝা এবং / অথবা স্টোর থাকে ফ্রন্ট-এন্ড ব্যান্ডউইদথ গ্রহণ করা, এবং যা অবশিষ্ট থাকে তা প্রায়শই সম্পাদন ইউনিটগুলি পরিপূর্ণ করার জন্য পর্যাপ্ত হয় না।
পিটার কর্ডস

2
@ লুয়ান: এছাড়াও, ইন্টেল সিপিইউতে পূর্ণসংখ্যা এবং এফপি / ভেক্টর এক্সিকিউশন ইউনিট একই এক্সিকিউশন পোর্টগুলি ভাগ করে । উদাহরণস্বরূপ, এফপি এফএমএ / মুল / অ্যাড ইউনিটগুলি বন্দরগুলিতে 0/1 এ থাকে। তবে পূর্ণসংখ্যা গুণকটি পোর্ট 1 এও রয়েছে এবং সহজ পূর্ণসংখ্যার অপস 4 টি এক্সিকিউশন পোর্টের যে কোনওটিতে (আমার উত্তরে ডায়াগ্রাম) চলতে পারে। ইস্যু ব্যান্ডউইদথ ব্যবহার করে দ্বিতীয় থ্রেড তাদের উভয়কে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে কার্যকর করবে যদিও তারা কার্যকরকরণ ইউনিটের জন্য প্রতিযোগিতা না করে, তবে প্রায়শই ক্যাশের জন্য খুব খারাপভাবে প্রতিযোগিতা না করলে নেট নেট থ্রুটপুট লাভ হয়। এমনকি x264 / x265 (ভিডিও এনকোডারস) এর মতো সু-সুরযুক্ত উচ্চ-মধ্যবর্তী কোডগুলি এইচটি থেকে স্কাইলেকে প্রায় 15% উপকার করে।
পিটার কর্ডস

3
@ লুয়ান পিটার যা বলেছেন তা ছাড়াও আপনার দাবি যে "এইচটি এইচটি পিছনে মূল যুক্তি ছিল" ভুল। এইচটি-র পেছনের মূল যুক্তিটি ছিল যে নেটবার্স্ট মাইক্রোর্কিটেকচারটি পাইপলাইনটিকে এত চূড়ান্তভাবে প্রসারিত করেছিল (ঘড়ির গতি চালানোর উদ্দেশ্যে) যে শাখার ভুল-অনুমান এবং অন্যান্য পাইপলাইন বুদবুদগুলি একেবারে কর্মক্ষমতা মেরে ফেলেছিল । এই বৃহত ব্যয়বহুল চিপের এক্সিকিউশন ইউনিট পাইপলাইনে বুদবুদগুলির কারণে অকার্যকর সময় কাটানোর জন্য এইচটি হ'ল ইনটেলের অন্যতম সমাধান: অন্যান্য থ্রেডের কোড thoseোকানো এবং সেই ছিদ্রগুলিতে চালানো যেতে পারে।
কোডি গ্রে

24

একসাথে একাধিক কোরগুলিতে একক থ্রেড চলার মতো জিনিস নেই।

তবে এর অর্থ এই নয় যে এক থ্রেড থেকে প্রাপ্ত নির্দেশাবলী সমান্তরালে কার্যকর করা যায় না। ইন্সট্রাকশন পাইপলাইনিং এবং আউট-অফ-অর্ডার এক্সিকিউশন নামে পরিচিত এমন একটি প্রক্রিয়া রয়েছে যা এটির অনুমতি দেয়। প্রতিটি কোরের প্রচুর অপ্রয়োজনীয় সংস্থান রয়েছে যা সাধারণ নির্দেশাবলীর সাহায্যে ব্যবহার হয় না, সুতরাং একাধিক এই জাতীয় নির্দেশাবলী একসাথে চালানো যেতে পারে (যতক্ষণ না পরেরটি পূর্ববর্তী ফলাফলের উপর নির্ভর করে না)। যাইহোক, এটি এখনও একটি একক কোরের ভিতরে ঘটে।

হাইপার-থ্রেডিং এই ধারণার এক ধরণের চূড়ান্ত বৈকল্পিক, যার মধ্যে একটি কোর কেবল একটি থ্রেড থেকে নির্দেশকে সমান্তরালভাবে চালিত করে না, তবে আরও উত্সের ব্যবহার আরও অনুকূল করতে দুটি পৃথক থ্রেড থেকে নির্দেশকে মিশ্রিত করে।

সম্পর্কিত উইকিপিডিয়া এন্ট্রি: নির্দেশিকা পাইপলাইনিং , আদেশের বাইরে চলে যাওয়া


3
তারা এক সাথে চলতে পারে না, তবে তারা কি সমান্তরালভাবে চালাতে পারে? এগুলি কি একই জিনিস নয়?
ইভোরলোর

10
@ এভেরলর এখানে মূল বিষয়টি হ'ল কোর এবং একটি এক্সিকিউশন ইউনিটের মধ্যে পার্থক্য। একটি একক থ্রেড কেবল একটি কোরে চলতে পারে তবে কোনও প্রসেসর ডায়ামিক বিশ্লেষণ ব্যবহার করতে পারে যা কোন কোর দ্বারা সম্পাদিত নির্দেশাবলী একে অপরের উপর নির্ভর করে না এবং একই সাথে বিভিন্ন নির্বাহী ইউনিটগুলিকে একযোগে চালায়। একটি কোরে বেশ কয়েকটি এক্সিকিউশন ইউনিট থাকতে পারে।
ব্যবহারকারী 1937198

3
@ এভেরলর: একটি বহি-ক্রমযুক্ত সিপিইউ একক থ্রেডের নির্দেশের প্রবাহের মধ্যে নির্দেশ-স্তরের সমান্তরালতা খুঁজে পেতে এবং ব্যবহার করতে পারে । উদাহরণস্বরূপ, লুপের কাউন্টার আপডেট করা নির্দেশাবলী লুপ যে কোনও কাজ থেকে পৃথক থাকে। বা একটি a[i] = b[i] + c[i]লুপে, প্রতিটি পুনরাবৃত্তি স্বতন্ত্র, সুতরাং লোড, যুক্ত এবং বিভিন্ন পুনরাবৃত্তির স্টোরগুলি একবারে ফ্লাইটে যেতে পারে। প্রোগ্রামের ক্রম অনুসারে নির্দেশাবলী কার্যকর করা হয়েছে এমন ধারণাটি এটি সংরক্ষণ করতে হবে, তবে উদাহরণস্বরূপ ক্যাশে মিস করা কোনও স্টোর থ্রেডটি বিলম্বিত করে না (যতক্ষণ না এটি স্টোর বাফারে স্থান ছাড়িয়ে যায়)।
পিটার কর্ডস

3
@ ব্যবহারকারী 1937198: "গতিশীল বিশ্লেষণ" শব্দটি একটি জেআইটি সংকলককে আরও ভাল মানায়। আউট-অফ-অর্ডার সিপিইউগুলি সত্যই বিশ্লেষণ করে না ; এটি আরও একটি লোভী অ্যালগরিদমের মতো যা নির্দেশাবলী ডিকোড করে এবং জারি করা হয়েছে যা চালায় এবং তাদের ইনপুটগুলি প্রস্তুত রাখে। (আউট-অফ-অর্ডার রির্ডারিং উইন্ডোটি কয়েকটি মাইক্রোআরকিটেকচারাল রিসোর্স দ্বারা সীমাবদ্ধ, উদাহরণস্বরূপ ইন্টেল স্যান্ডিব্রিজে 168 উফের একটি রিঅর্ডার বাফার আকার রয়েছে experiment পরীক্ষামূলকভাবে আরওবি আকার মাপতেও দেখুন )। প্রতি ঘড়িতে 4 উপ পরিচালনা করতে হার্ডওয়্যার স্টেট-মেশিনগুলির সাহায্যে সমস্ত প্রয়োগ করা হয়েছে।
পিটার কর্ডস

3
@ লুয়ান হ্যাঁ, এটি একটি আকর্ষণীয় ধারণা ছিল তবে এওটি সংকলকরা এখনও এটি পুরোপুরি কাজে লাগানোর মতো স্মার্ট নয়। এছাড়াও, লিনাস টোরভাল্ডস (এবং অন্যরা) যুক্তি দিয়েছেন যে পাইপলাইনের অনেকটা অভ্যন্তরীণ অংশ প্রকাশ করা ভবিষ্যতের নকশাগুলির ক্ষেত্রে একটি বড় বাধা। উদাহরণস্বরূপ, আইএসএ পরিবর্তন না করে আপনি পাইপলাইনের প্রস্থকে সত্যই বাড়িয়ে তুলতে পারবেন না। অথবা আপনি এমন একটি সিপিইউ তৈরি করেন যা স্বাভাবিকভাবে নির্ভরশীলতাগুলি ট্র্যাক করে এবং সমান্তরালে দুটি ভিএলআইডাব্লু গ্রুপ জারি করে, তবে তারপরে আপনি ইপিকের সিপিইউ-জটিলতা সুবিধাটি হারিয়েছেন তবে এখনও ডাউনসাইডস রয়েছে (সংকলকটি পূরণ করতে না পারলে ইস্যু ব্যান্ডউইথ হারিয়েছে) একটি শব্দ).
পিটার কর্ডেস

22

সংক্ষিপ্তসার: একক থ্রেড প্রোগ্রামে (নির্দেশ-স্তর) সমান্তরালতা সন্ধান এবং শোষণের কাজটি সিপিইউ কোর দ্বারা চালিত খাঁটিভাবে হার্ডওয়ারে করা হয়। এবং কেবলমাত্র কয়েক শতাধিক নির্দেশাবলীর একটি উইন্ডো জুড়ে, বড় আকারের পুনঃক্রম নয়।

একক থ্রেডেড প্রোগ্রামগুলি মাল্টি-কোর সিপিইউগুলি থেকে কোনও উপকার পায় না, কেবলমাত্র একক থ্রেডযুক্ত কার্য থেকে সময় নেওয়ার পরিবর্তে অন্যান্য জিনিসগুলি অন্য কোরগুলিতে চলতে পারে।


ওএস সমস্ত থ্রেডের নির্দেশাবলী এমনভাবে সংগঠিত করে যাতে তারা একে অপরের দিকে অপেক্ষা না করে।

থ্রেডগুলির নির্দেশাবলী প্রবাহের মধ্যে ওএস তাকাবে না। এটি কেবল থ্রেডগুলিকে সূচি দেয়।

প্রকৃতপক্ষে, প্রতিটি কোর OS এর শিডিয়ুলার ফাংশনটি চালায় যখন এর পরে কী করা উচিত তা নির্ধারণ করতে হবে। শিডিং একটি বিতরণ করা অ্যালগরিদম। মাল্টি-কোর মেশিনগুলি আরও ভালভাবে বুঝতে, প্রতিটি কোরকে আলাদা করে কার্নেল চালানোর জন্য ভাবেন। একটি বহু-থ্রেড প্রোগ্রামের মতো, কার্নেলটি এমনভাবে লিখিত হয় যাতে একটি কোরতে এর কোডটি ভাগ করে নেওয়া ডেটা স্ট্রাকচার আপডেট করার জন্য (চালানোর জন্য প্রস্তুত থ্রেডগুলির তালিকার মতো) অন্য কোরগুলিতে তার কোডের সাথে নিরাপদে যোগাযোগ করতে পারে।

যাইহোক, ওএস মাল্টি-থ্রেড প্রসেসগুলি থ্রেড-লেভেল প্যারালালিজমকে কাজে লাগাতে সহায়তা করে যা ম্যানুয়ালি মাল্টি থ্রেডেড প্রোগ্রাম লিখে স্পষ্টভাবে প্রকাশ করতে হবে । (বা ওপেনএমপি বা কোনও কিছুর সাথে স্বয়ংক্রিয়ভাবে সমান্তরাল সংকলক দ্বারা )।

তারপরে সিপিইউর সামনের প্রান্তটি প্রতিটি কোরকে একটি থ্রেড বিতরণ করে সেই নির্দেশাবলীকে আরও সুসংহত করে এবং যে কোনও উন্মুক্ত চক্রের মধ্যে প্রতিটি থ্রেড থেকে স্বতন্ত্র নির্দেশাবলী বিতরণ করে।

একটি সিপিইউ কোর কেবলমাত্র নির্দেশাবলীর একটি স্ট্রিম চালাচ্ছে, যদি এটি বন্ধ না হয় (পরবর্তী বিঘ্নিত হওয়া পর্যন্ত ঘুমানো থাকে, যেমন টাইমার বিঘ্নিত হওয়া)। প্রায়শই এটি একটি থ্রেড, তবে কার্নেল হ্যান্ডলিং এবং ব্যাঘাত বা সিস্টেম কলের পরে পূর্ববর্তী থ্রেডে ফিরে আসার পরিবর্তে অন্য কিছু করার সিদ্ধান্ত নেয় যদি এটি কার্নেল বাধা হ্যান্ডলার বা বিবিধ কার্নেল কোডও হতে পারে।

হাইপারথ্রেডিং বা অন্যান্য এসএমটি ডিজাইনের সাথে একটি শারীরিক সিপিইউ কোর একাধিক "লজিক্যাল" কোরগুলির মতো কাজ করে। কোয়াড-কোর-উইথ হাইপারথ্রেডিং (4 সি 8 টি) সিপিইউ এবং একটি সরল 8-কোর মেশিন (8c8t) এর মধ্যে ওএসের দৃষ্টিভঙ্গি থেকে একমাত্র পার্থক্য হ'ল এইচটি সচেতন ওএস শারীরিক কোরের আলাদা করার জন্য থ্রেডগুলি নির্ধারণ করার চেষ্টা করবে যাতে তারা ডান হয় না ' একে অপরের সাথে প্রতিযোগিতা। হাইপারথ্রেডিং সম্পর্কে জানতেন না এমন একটি ওএসে কেবলমাত্র 8 টি কোর দেখা যাবে (আপনি যদি BIOS এ এইচটি অক্ষম না করেন তবে এটি কেবল 4 টি সনাক্ত করবে)।


" ফ্রন্ট-এন্ড" শব্দটি একটি সিপিইউ কোরের অংশটিকে বোঝায় যা মেশিন কোডটি নিয়ে আসে, নির্দেশাবলিগুলি ডিকোড করে এবং এটিকে মূলটির আউট-অফ-অর্ডার অংশে দেয় । প্রতিটি কোরের নিজস্ব ফ্রন্ট-এন্ড থাকে এবং এটি সামগ্রিকভাবে কোরটির অংশ। নির্দেশাবলী এটা নিয়ে আসে হয় কি CPU- র বর্তমানে চলমান।

মূলটির আউট-অফ-অর্ডার অংশের ভিতরে, ইনপুট অপারেন্ডগুলি প্রস্তুত হয়ে থাকে এবং একটি নিখরচায় এক্সিকিউশন পোর্ট থাকাকালীন নির্দেশাবলী (বা উফস) এক্সিকিউশন পোর্টগুলিতে প্রেরণ করা হয়। প্রোগ্রামের ক্রমে এটি হওয়ার দরকার নেই, সুতরাং এটিই একটি ওও সিপিইউ একক থ্রেডের মধ্যে নির্দেশ-স্তরের সমান্তরালতাকে কাজে লাগাতে পারে

আপনি যদি আপনার ধারণায় "কোর "টিকে" এক্সিকিউশন ইউনিট "দিয়ে প্রতিস্থাপন করেন তবে আপনি সংশোধন করতে চলেছেন। হ্যাঁ, সিপিইউ সমান্তরালভাবে এক্সিকিউশন ইউনিটগুলিতে স্বাধীন নির্দেশাবলী / উফ বিতরণ করে। (তবে এখানে একটি পরিভাষা মিশ্রণ রয়েছে, যেহেতু আপনি "ফ্রন্ট-এন্ড" বলেছিলেন যখন এটি সত্যই সিপিইউর নির্দেশনা-তফসিলকারী ওরফে রিজার্ভেশন স্টেশন যা কার্যকর করার জন্য প্রস্তুত নির্দেশ দেয়)।

আদেশ-বহিরাগত সম্পাদন কেবলমাত্র স্থানীয় স্তরে আইএলপি খুঁজে পেতে পারে, কেবল কয়েক শতাধিক নির্দেশিকা পর্যন্ত, দুটি স্বতন্ত্র লুপের মধ্যে নয় (যদি না তারা সংক্ষিপ্ত না হয়)।


উদাহরণস্বরূপ, এর asm সমতুল্য

int i=0,j=0;
do {
    i++;
    j++;
} while(42);

একই লুপের মতো দ্রুত গতিতে চলবে কেবলমাত্র ইন্টেল হাসওলে একটি কাউন্টার বাড়ানো। i++কেবলমাত্র পূর্বের মূল্যের উপর নির্ভর করে i, যখন j++কেবল পূর্বের মূল্যের উপর নির্ভর করে j, সুতরাং দুটি নির্ভরশীল শৃঙ্খলা প্রোগ্রামের ক্রমে কার্যকর হওয়া সমস্ত কিছুর মায়া না ভাঙিয়ে সমান্তরালে চলতে পারে।

X86-এ লুপটি এরকম কিছু দেখতে পাবে:

top_of_loop:
    inc eax
    inc edx
    jmp .loop

হাসওলের 4 টি পূর্ণসংখ্যক এক্সিকিউশন পোর্ট রয়েছে এবং তাদের সকলেরই অ্যাডারের ইউনিট রয়েছে, তাই incতারা সমস্ত স্বতন্ত্র থাকলে এটি প্রতি ঘড়ি প্রতি 4 টি পর্যন্ত নির্দেশের মাধ্যমে একটি আউটপুট বজায় রাখতে পারে । (প্রচ্ছন্নতা = 1 দিয়ে, সুতরাং আপনার 4 টি incনির্দেশাবলী বিমানের মাধ্যমে রেখে আউটপুট সর্বাধিকতর করতে 4 টি রেজিস্টার প্রয়োজন need ভেক্টর-এফপি মুল বা এফএমএর সাথে এটির তুলনা করুন: বিলম্বিত = 5 থ্রিপুট = 0.5 10 টি এফএমএ ফ্লাইটে রাখতে 10 ভেক্টর আহরণকারী প্রয়োজন থ্রুপুট সর্বাধিক সন্ধান করতে।

গৃহীত-শাখাটিও একটি বাধা: একটি লুপ সর্বদা পুনরাবৃত্তির জন্য কমপক্ষে একটি পুরো ঘড়ি নেয়, কারণ তোলা-শাখা থ্রুটপুট প্রতি ঘড়িতে 1 এর মধ্যে সীমাবদ্ধ। আমি পারফরম্যান্স হ্রাস না করে লুপের ভিতরে আরও একটি নির্দেশনা রাখতে পারতাম, যদি না এটি পড়ে / লেখেন eaxবা edxকোন ক্ষেত্রে এটি নির্ভরতা শৃঙ্খলা দীর্ঘায়িত করে। লুপে আরও দুটি নির্দেশাবলী স্থাপন (বা একটি জটিল মাল্টি-উওপ নির্দেশ) সামনের প্রান্তে একটি বাধা তৈরি করবে, কারণ এটি কেবলমাত্র ঘড়ির বাইরে 4 টি আউপকে অর্ডার অফ করে দেয় into ( লুপগুলি যে 4 টি উওপের একাধিক নয়: লুপ-বাফার এবং উওপ ক্যাশে জিনিসগুলিকে আকর্ষণীয় করে তোলে তার জন্য কী ঘটে যায় সে সম্পর্কে কিছু তথ্যের জন্য এই SO প্রশ্নোত্তর দেখুন ))


আরও জটিল ক্ষেত্রে, সমান্তরাল সন্ধানের জন্য নির্দেশের বৃহত্তর উইন্ডোটি অনুসন্ধান করা প্রয়োজন । (উদাহরণস্বরূপ 10 টি নির্দেশাবলীর অনুক্রম রয়েছে যা সমস্ত একে অপরের উপর নির্ভর করে, তারপরে কিছু স্বতন্ত্র)।

রি-অর্ডার বাফার ক্ষমতা হ'ল ফ্যাক্টরগুলির মধ্যে একটি যা আদেশের বাইরে থাকা উইন্ডোর আকারকে সীমাবদ্ধ করে। ইনটেল হাসওলে, এটি 192 উফস। (এবং আপনি এটি নিবন্ধভুক্ত-নামকরণ ক্ষমতা সহ ( পরীক্ষার -ফাইলের আকার )ও পরীক্ষামূলকভাবে পরিমাপ করতে পারেন )) এআরএম এর মতো স্বল্প-পাওয়ার সিপিইউ কোরের অনেক কম আরওবি আকার রয়েছে, যদি তারা অর্ডার-অফ-অর্ডার কার্যকরভাবে না করে।

এছাড়াও নোট করুন যে সিপিইউগুলিকে পাইপলাইন করা দরকার, পাশাপাশি আউট-অর্ডারও করা উচিত। সুতরাং কার্যকরভাবে কার্যকর করার আগে নির্দেশগুলি আনতে হবে এবং ডিকোড করতে হবে, বিশেষত কোনও আনতে যাওয়ার চক্র হারিয়ে যাওয়ার পরে বাফারগুলিকে রিফিল করার জন্য পর্যাপ্ত থ্রুপুট দিয়ে with শাখাগুলি কৃপণ, কারণ কোন শাখা যে পথে চলেছে তা আমরা যদি না জানি তবে কোথা থেকে আনতে হবে তা আমরা জানি না। এই কারণেই শাখা-পূর্বাভাস এত গুরুত্বপূর্ণ। (এবং আধুনিক সিপিইউগুলি কেন অনুমানমূলক মৃত্যুদণ্ড ব্যবহার করে: তারা অনুমান করে যে কোনও শাখা কোন পথে যাবে এবং সেই নির্দেশ প্রবাহটি আনয়ন / ডিকোডিং / কার্যকর করতে শুরু করবে a কোনও ভুল ধারণা পাওয়া গেলে তারা শেষ পরিচিত-ভাল অবস্থানে ফিরে যায় এবং সেখান থেকে চালানো হয়))

আপনি যদি সিপিইউ ইন্টার্নাল সম্পর্কে আরও জানতে চান , স্টেটওভারফ্লো x86 ট্যাগ উইকির কয়েকটি লিঙ্ক রয়েছে, যার মধ্যে রয়েছে আগ্নার ফগের মাইক্রোয়ার্ক গাইড এবং ডেভিড ক্যান্টারের বিশদ লিখনআপগুলি ইন্টেল এবং এএমডি সিপিইউগুলির ডায়াগ্রাম সহ। তার ইনটেল হাসওল মাইক্রোআরকিটেকচার রাইটিংআপ থেকে এটি হ্যাসওয়েল কোর (পুরো চিপ নয়) এর সম্পূর্ণ পাইপলাইনের চূড়ান্ত চিত্রটি।

এটি একক সিপিইউ কোরের একটি ব্লক ডায়াগ্রাম । একটি কোয়াড-কোর সিপিইউতে এইগুলির মধ্যে 4 টি রয়েছে একটি চিপে, প্রতিটি তাদের নিজস্ব এল 1 / এল 2 ক্যাশে (একটি এল 3 ক্যাশে, মেমরি নিয়ন্ত্রণকারী এবং সিস্টেম ডিভাইসের সাথে পিসিআই সংযোগ ভাগ করে নেওয়া) থাকে।

হাসওয়েল পূর্ণ পাইপলাইন

আমি জানি এটি অত্যধিক জটিল। ক্যান্টারের নিবন্ধে এগুলির অংশগুলি প্রদর্শন করে যেমন এক্সিকিউশন ইউনিট বা ক্যাশেগুলি থেকে পৃথকভাবে সীমান্ত সম্পর্কে কথা বলতে।


2
"একটি এক-থ্রেড প্রোগ্রামে (নির্দেশ-স্তর) সমান্তরালতা সন্ধান এবং শোষণ খাঁটিভাবে হার্ডওয়ারে সম্পন্ন করা হয়" দ্রষ্টব্য যে এটি কেবল প্রচলিত আইএসএ-তে প্রযোজ্য, ভিআইএলডাব্লুগুলিতে নয় যেখানে আইএলপি সংকলক বা প্রোগ্রামার দ্বারা সম্পূর্ণ নির্ধারিত হয়, বা হার্ডওয়্যারের মধ্যে সহযোগিতামূলকভাবে এবং সফ্টওয়্যার।
হাদি ব্রেইস 25:58

1
@ ব্যবহারকারী 7813604: হ্যাঁ। হাইপারথ্রেডিং একক থ্রেডকে সমান্তরাল করতে পারে না। এটি বিপরীতটি করে: এটি প্রতিটি কোরের একাধিক থ্রেড চালায়, প্রতি থ্রেডের কার্যকারিতা হ্রাস করে তবে সামগ্রিক থ্রুপুট বাড়িয়ে তোলে।
পিটার কর্ডেস

1
@ user7813604: ILP সমগ্র বিন্দু খুঁজে পেতে হয় এখনও বজায় রাখার যা নির্দেশাবলী সমান্তরাল চালানো যাবে বিভ্রম প্রতিটি নির্দেশ অনুক্রমে দৌড়ে প্রতিটি এক সমাপ্তি আগে পরের এক শুরু হয়। প্রচ্ছন্নতা 1-এর চেয়ে বেশি হলে একটি স্কেলার পাইপলাইন সিপিইউ কখনও কখনও নির্ভরতার জন্য স্টল করতে পারে But তবে এটি সুপারসকলার সিপিইউগুলির জন্য আরও বড় চুক্তি।
পিটার কর্ডস

1
@ ব্যবহারকারী 7813604: হ্যাঁ, আমার উত্তরটি আক্ষরিকভাবে এটি উদাহরণ হিসাবে ব্যবহার করে। উদাহরণস্বরূপ হাসওয়েল incতার 4 পূর্ণসংখ্যার ALU এক্সিকিউশন ইউনিটগুলিতে একই ঘড়ির চক্রের 4 টি পর্যন্ত নির্দেশনা কার্যকর করতে পারে ।
পিটার কর্ডেস

1
@ user7813604: হ্যাঁ, ILP কত হয় করতে সমান্তরাল কার্যকর করা। একটি আসল সিপিইউতে আইএলপিকে এটি একটি একক কোরের মধ্যে সমান্তরালভাবে চালানোর মাধ্যমে সন্ধানের এবং তার ব্যবহারের সীমাবদ্ধ ক্ষমতা থাকতে পারে, যেমন ইন্টেলের 4-প্রশস্ত সুপারক্যালার পর্যন্ত। এই উত্তরটি উদাহরণ সহ ব্যাখ্যা করার চেষ্টা করে।
পিটার কর্ডেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.