TL; ড
সংক্ষিপ্ত পাইপলাইনগুলির অর্থ দ্রুত ঘড়ির গতি, তবে থ্রুপুট হ্রাস পেতে পারে। এছাড়াও, নীচে উত্তর # 2 এবং 3 দেখুন (সেগুলি সংক্ষিপ্ত, আমি প্রতিশ্রুতি দিচ্ছি)।
দীর্ঘ সংস্করণ:
এখানে কয়েকটি বিষয় বিবেচনা করতে হবে:
- সমস্ত নির্দেশাবলী একই সময় নেয় না
- সমস্ত নির্দেশাবলী অবিলম্বে কী করা হয়েছিল (বা এমনকি দশ বা বিশ) নির্দেশাবলী ফিরে আসে তার উপর নির্ভর করে না
খুব সরলীকৃত পাইপলাইন (আধুনিক ইন্টেল চিপগুলিতে যা ঘটে যায় তা জটিলতার বাইরে) এর বেশ কয়েকটি স্তর রয়েছে:
আনুন -> ডিকোড -> মেমোরি অ্যাক্সেস -> কার্যকর করুন -> লিখনব্যাক -> প্রোগ্রামের কাউন্টার আপডেট
প্রতিটিতে -> সময় ব্যয় হয়। অধিকন্তু, প্রতিটি টিক (ঘড়ির চক্র), সমস্ত কিছু এক স্তর থেকে পরের দিকে চলে যায়, তাই আপনার ধীরতম ধাপ সমস্ত স্তরের গতি হয়ে যায় (এটি তাদের পক্ষে যথাসম্ভব দৈর্ঘ্যের সমান হওয়ার জন্য অর্থ প্রদান করে)।
ধরা যাক আপনার কাছে 5 টি নির্দেশনা রয়েছে এবং আপনি এগুলি সম্পাদন করতে চান (উইকিপিডিয়া থেকে তোলা ছবি, এখানে পিসি আপডেট হয় নি)। এটি দেখতে এটি দেখতে হবে:
যদিও প্রতিটি নির্দেশ সম্পূর্ণ করতে 5 টি ঘড়ি চক্র গ্রহণ করে, প্রতিটি চক্রে পাইপলাইন থেকে একটি সমাপ্ত নির্দেশ আসে। যদি প্রতিটি পর্যায়ে সময় লাগে 40 এনএস, এবং মধ্যবর্তী বিটের জন্য 15 এনএস (উপরে আমার ছয় পর্যায়ের পাইপলাইন ব্যবহার করে), প্রথম নির্দেশটি বের করতে 40 * 6 + 5 * 15 = 315 এনএস লাগবে।
বিপরীতে, যদি আমি পাইপলাইনটি সম্পূর্ণরূপে মুছে ফেলি (তবে সমস্ত কিছু একই রাখি) তবে প্রথম নির্দেশটি পেতে কেবল 240 এনএস লাগবে। ("প্রথম" নির্দেশিকাটি বের করার জন্য গতির এই পার্থক্যটিকে বিলম্বতা বলা হয় through এটি সাধারণত থ্রুপুটের চেয়ে কম গুরুত্বপূর্ণ, যা প্রতি সেকেন্ডে নির্দেশের সংখ্যা)।
যদিও আসল ভিন্নটি হ'ল পাইপলাইনযুক্ত উদাহরণে, আমি প্রতি 60 এনএসে একটি নতুন চালিকা তৈরি করেছি (প্রথমটির পরে)। পাইপলাইনবিহীন একটিতে, এটি প্রতিবার 240 লাগে। এটি দেখায় যে পাইপলাইনগুলি থ্রুপুট উন্নত করতে ভাল।
এটি আরও একধাপ এগিয়ে নিয়ে যাওয়ার পরে মনে হবে মেমোরি অ্যাক্সেসের পর্যায়ে আমার একটি সংযোজন ইউনিট লাগবে (ঠিকানা গণনার জন্য)। এর অর্থ হ'ল যদি এমন কোনও নির্দেশ থাকে যা মেম স্টেজটি সেই চক্রটি ব্যবহার করে না তবে আমি আরও একটি সংযোজন করতে পারি। আমি একক টিকের একটি প্রসেসরে দুটি ক্রিয়াকলাপ পর্যায় (মেমরি অ্যাক্সেসের পর্যায়ে থাকা) করতে পারি (সময়সূচীটি একটি দুঃস্বপ্ন, তবে সেখানে যাওয়া যাক না Additionally লাফানোর ক্ষেত্রে, তাই আমি এক টিকে তিনটি সংযোজন রাজ্যগুলি করতে পারি)। পাইপলাইন রেখে, এটি এমনভাবে ডিজাইন করা যেতে পারে যে দুটি (বা আরও) নির্দেশাবলী মূল্যবান সময় সাশ্রয় করে বিভিন্ন ধাপ (বা লিপফোগ স্টেজ ইত্যাদি) ব্যবহার করতে পারে।
নোট করুন যে এটি করার জন্য, প্রসেসরগুলি অনেকগুলি "ম্যাজিক" করে ( অর্ডার এক্সিকিউশন , শাখার পূর্বাভাসের বাইরে এবং আরও অনেক কিছু), তবে এটি পাইপলাইন ছাড়া একাধিক নির্দেশকে দ্রুত বাইরে আসতে দেয় (নোটগুলি যে খুব বেশি দীর্ঘ পরিচালনা করা খুব কঠিন, এবং কেবলমাত্র পর্যায়গুলির মধ্যে অপেক্ষা করে একটি উচ্চ ব্যয় ব্যয় করা)। ফ্লিপ সাইডটি হ'ল আপনি যদি পাইপলাইনটি খুব দীর্ঘ করেন তবে আপনি একটি উন্মাদ ঘড়ির গতি পেতে পারেন তবে মূল সুবিধাটি হারাতে পারেন (একই ধরণের যুক্তি যা একাধিক স্থানে থাকতে পারে এবং একই সাথে ব্যবহার করা যেতে পারে) )।
উত্তর # 2:
সিমড (একক নির্দেশনা একাধিক ডেটা) প্রসেসর (বেশিরভাগ জিপিইউ) তথ্যের বিটগুলিতে প্রচুর কাজ করে তবে তাদের করতে এটি বেশি সময় নেয়। সমস্ত মান পড়তে বেশি সময় লাগে (মানে ধীরে ধীরে ঘড়ি, যদিও কিছুটা বিস্তৃত বাস পেয়ে এটি অফসেট) তবে আপনি একসাথে আরও অনেক নির্দেশনা পেতে পারেন (চক্র প্রতি আরও কার্যকর নির্দেশিকা)।
উত্তর # 3:
কারণ আপনি একটি কৃত্রিমভাবে চক্র গণনা দীর্ঘায়িত করতে "প্রতারণা" করতে পারেন যাতে আপনি প্রতিটি চক্রের দুটি নির্দেশনা করতে পারেন (কেবল ঘড়ির গতি অর্ধেক)। একটির বিপরীতে প্রতি দুটি টিককে কেবল কিছু করা সম্ভব (2x ঘড়ির গতি দেওয়া, তবে নির্দেশে দ্বিতীয়টি পরিবর্তন করা যায় না)।