উত্তর:
পারফরম্যান্স লাভের জন্য আধুনিক সিপিইউগুলি প্রায়শই উপলব্ধ সিলিকনটির সর্বাধিক ব্যবহার (মেমরি পড়ুন / লেখাগুলি সহ) ব্যবহারের জন্য নির্দেশাবলী কার্যকর করে। কারণ হার্ডওয়্যার নির্দেশের অখণ্ডতা প্রয়োগ করে আপনি কখনই এটি প্রয়োগের একক থ্রেডে লক্ষ্য করবেন না। তবে অস্থির মেমরির একাধিক থ্রেড বা পরিবেশের জন্য (উদাহরণস্বরূপ মেমরি ম্যাপ করা I / O) এটি অনির্দেশ্য আচরণের দিকে নিয়ে যেতে পারে।
মেমোরি বেড়া / বাধা হ'ল নির্দেশাবলীর একটি শ্রেণি যার অর্থ মেমরি পঠন / লেখাগুলি আপনার প্রত্যাশা অনুসারে ঘটে। উদাহরণস্বরূপ একটি 'সম্পূর্ণ বেড়া' অর্থ বেড়াটির পরে তাদের আগে বেড়াটি কমিট করার আগে সমস্ত পঠিত / লিখন।
নোট মেমরি বেড়া একটি হার্ডওয়্যার ধারণা। উচ্চ স্তরের ভাষাগুলিতে আমরা মিটেক্সেস এবং সেমোফোরগুলি নিয়ে কাজ করতে ব্যবহার করি - এগুলি নিম্ন স্তরে মেমরি বেড়া ব্যবহার করে ভালভাবে প্রয়োগ করা যেতে পারে এবং মেমরির বাধাগুলির সুস্পষ্ট ব্যবহারের প্রয়োজন হয় না। মেমরি বাধা ব্যবহারের জন্য হার্ডওয়্যার আর্কিটেকচারের যত্ন সহকারে অধ্যয়ন করা প্রয়োজন এবং অ্যাপ্লিকেশন কোডের চেয়ে ডিভাইস ড্রাইভারগুলিতে বেশি পাওয়া যায়।
সংকলক অপ্টিমাইজেশান থেকে সিপিইউ পুনর্নির্মাণ আলাদা - যদিও প্রত্নতত্ত্বগুলি একই রকম হতে পারে। আপনার নির্দেশাবলীর পুনর্নির্মাণ সংকলকটি থামানোর জন্য আপনাকে পৃথক ব্যবস্থা গ্রহণ করতে হবে যদি এটি অনাকাঙ্ক্ষিত আচরণের কারণ হতে পারে (উদাহরণস্বরূপ সি এর উদ্বায়ী কীওয়ার্ডের ব্যবহার)।
অন্য প্রশ্নের আমার উত্তরটি অনুলিপি করে বলছি, প্রসেসর কোডটি অনুকূল করার জন্য কিছু কৌশলগুলি কী কী? :
সর্বাধিক গুরুত্বপূর্ণ হ'ল মেমরি অ্যাক্সেস পুনঃক্রম।
অনুপস্থিত মেমরি বেড়া বা ক্রমিক নির্দেশাবলী, প্রসেসর মেমরি অ্যাক্সেসগুলি পুনরায় অর্ডার করতে বিনামূল্যে। কিছু প্রসেসরের আর্কিটেকচারের তারা কতটা পুনঃক্রম করতে পারে তার উপর বিধিনিষেধ রয়েছে; আলফা সবচেয়ে দুর্বল হিসাবে পরিচিত (যেমন, যেটি সর্বাধিক পুনঃক্রম করতে পারে)।
লিনাক্স কার্নেল উত্স ডকুমেন্টেশন, ডকুমেন্টেশন / মেমরি-বাধা.টিএসটিএস এ বিষয়ের একটি খুব ভাল চিকিত্সা পাওয়া যাবে ।
বেশিরভাগ সময়, আপনার সংকলক বা স্ট্যান্ডার্ড লাইব্রেরি থেকে লকিং আদিম ব্যবহার করা ভাল; এগুলি ভালভাবে পরীক্ষা করা হয়, সমস্ত প্রয়োজনীয় মেমোরি বাধা জায়গায় থাকা উচিত এবং এগুলি সম্ভবত বেশ অনুকূলিতকরণ করা (আদিমালিকাগুলি লক করা অনুকূলতর; এমনকি বিশেষজ্ঞরা তাদের মাঝে মাঝে ভুলও পেতে পারেন)।
Alpha is known for being the weakest
, কেন weakest
? এটি আরও ভাল নয় যে, এটি আরও পুনর্বিন্যাস করে, ফলে ফলস্বরূপ এটি কার্যকর হবে দ্রুততর? (আমি ব্যবহারকারী আলফা নই, কিন্তু এর প্রভাব সম্পর্কে জিজ্ঞাসা করা very reordering
বনাম restricted reordering
)। সুতরাং লট রেন্ডারিংয়ের ডাউনসাইডগুলি কী কী (অপরিজ্ঞাত আচরণের ঝুঁকি ব্যতীত, তবে আমি অনুমান করব যে, বেশিরভাগ আধুনিক সিপিইউগুলির উচিত ভাল পুনর্নির্মাণের সমাধান করা এবং কেবলমাত্র সংজ্ঞায়িত পুনর্নির্মাণ কার্যকর করা উচিত, অন্যথায়, এটি তাদের যে সিদ্ধান্ত নিয়েছিল তা বোঝায় না)।
আমার অভিজ্ঞতায় এটি একটি মেমরি বাধা বোঝায় , যা একাধিক থ্রেডের মধ্যে মেমরি অ্যাক্সেসকে সিঙ্ক্রোনাইজ করার জন্য একটি নির্দেশ (স্পষ্ট বা অন্তর্নিহিত)।
আধুনিক আগ্রাসী সংকলক (তাদের নির্দেশাবলীর পুনঃক্রমের আশ্চর্য স্বাধীনতা আছে তবে সাধারণত আপনার থ্রেডগুলির কিছুই জানা থাকে না) এবং আধুনিক মাল্টিকোর সিপিইউগুলির সংমিশ্রণে সমস্যাটি দেখা দেয়।
সমস্যার একটি ভাল ভূমিকা হ'ল '' 'ডাবল-চেকড লকিংটি ভাঙ্গা' ঘোষণা '। অনেকের জন্য, এটি জাগ্রত কল ছিল যে সেখানে ড্রাগন থাকবে।
অন্তর্নিহিত পূর্ণ মেমরি বাধা সাধারণত প্ল্যাটফর্ম থ্রেড সিঙ্ক্রোনাইজেশন রুটিনগুলিতে অন্তর্ভুক্ত থাকে যা এর মূলটি আবরণ করে। তবে লক-ফ্রি প্রোগ্রামিং এবং কাস্টম, লাইটওয়েট সিঙ্ক্রোনাইজেশন নিদর্শনগুলি বাস্তবায়নের জন্য আপনার প্রায়শই কেবল বাধা বা কেবলমাত্র একমুখী বাধা প্রয়োজন।
মেমোরি বাধা, যা মেম্বার বা মেমরি বেড়া নামেও পরিচিত, হ'ল নির্দেশাবলীর একটি শ্রেণি যা একটি কেন্দ্রীয় প্রসেসিং ইউনিট (সিপিইউ) বাধা নির্দেশের আগে এবং পরে জারি করা মেমরি অপারেশনগুলিতে অর্ডারিং সীমাবদ্ধতা প্রয়োগ করে।
সিপিইউগুলি কর্মক্ষমতা অপ্টিমাইজেশন নিয়োগ করে যা মেমরি লোড এবং স্টোর ক্রিয়াকলাপ সহ অর্ডার অফ-অর্ডার কার্যকর করতে পারে। মেমোরি অপারেশনটি পুনরায় অর্ডারিং সাধারণত সম্পাদনের একক থ্রেডের মধ্যে লক্ষ্য করা যায় না, তবে সাবধানতার সাথে নিয়ন্ত্রিত না হলে সমসাময়িক প্রোগ্রাম এবং ডিভাইস ড্রাইভারদের মধ্যে অপ্রত্যাশিত আচরণের কারণ হয়। অর্ডারিং সীমাবদ্ধতার সঠিক প্রকৃতি হ'ল হার্ডওয়্যার নির্ভর, এবং আর্কিটেকচারের মেমরি মডেল দ্বারা সংজ্ঞায়িত। কিছু স্থপতি বিভিন্ন ক্রম সীমাবদ্ধতা প্রয়োগের জন্য একাধিক বাধা সরবরাহ করে।
একাধিক ডিভাইস দ্বারা ভাগ করা মেমরিতে পরিচালিত নিম্ন-স্তরের মেশিন কোড প্রয়োগ করার সময় মেমোরি বাধা সাধারণত ব্যবহৃত হয়। এই জাতীয় কোডে সিঙ্ক্রোনাইজেশন আদিম এবং মাল্টিপ্রসেসর সিস্টেমে লক-ফ্রি ডেটা স্ট্রাকচার এবং কম্পিউটার হার্ডওয়্যারের সাথে যোগাযোগ করে এমন ডিভাইস ড্রাইভার অন্তর্ভুক্ত রয়েছে।