প্রাথমিক নিয়মগুলি মোটামুটি সহজ। এটি কোথায় জটিল হয় তা আপনার কোডটিতে কীভাবে প্রয়োগ হয় your
ক্যাশে দুটি নীতিতে কাজ করে: অস্থায়ী লোকাল এবং স্থানীয় স্থান। পূর্ববর্তীটির ধারণাটি হ'ল আপনি যদি সম্প্রতি কিছু নির্দিষ্ট ডেটা ব্যবহার করেন তবে খুব শীঘ্রই আপনার সম্ভবত এটির আবার প্রয়োজন হবে। পরবর্তীটির অর্থ হ'ল আপনি যদি সম্প্রতি এক্স ঠিকানাে ডেটা ব্যবহার করেন তবে আপনার সম্ভবত শীঘ্রই এক্স + 1 ঠিকানা প্রয়োজন।
ক্যাশে সর্বাধিক ব্যবহৃত ডেটা ব্যবহারের অংশগুলি মনে করে এটিকে সংযুক্ত করার চেষ্টা করে। এটি ক্যাশে লাইনগুলি পরিচালনা করে, সাধারণত 128 বাইট বা তার বেশি আকারের, তবে আপনার কেবলমাত্র একটি একক বাইট প্রয়োজন হলেও পুরো ক্যাশে রেখায় এটি ক্যাশে টানতে পারে। সুতরাং পরে যদি আপনার নিম্নলিখিত বাইটের প্রয়োজন হয় তবে এটি ইতিমধ্যে ক্যাশে থাকবে।
এবং এর অর্থ হ'ল আপনি সর্বদা নিজের কোডটি এই দুটি অঞ্চলের লোকালকে যথাসম্ভব শোষণ করতে চান। সমস্ত স্মৃতি ঝাঁপ দাও না। একটি ছোট এলাকায় যতটা সম্ভব কাজ করুন এবং তারপরে পরের দিকে যান এবং সেখানে যতটা সম্ভব কাজ করুন।
একটি সাধারণ উদাহরণ 200 অ্যারে ট্র্যাভারসাল যা 1800 এর উত্তর দেখিয়েছে। যদি আপনি এটি একবারে এক সারি অতিক্রম করেন, আপনি ক্রমান্বয়ে স্মৃতিটি পড়ছেন। আপনি যদি এটি কলাম অনুসারে করেন তবে আপনি একটি এন্ট্রি পড়বেন, তারপরে একেবারে পৃথক স্থানে (পরের সারিটির শুরুতে) ঝাঁপিয়ে পড়ুন, একটি প্রবেশিকা পড়ুন এবং আবার লাফ দিন। এবং অবশেষে আপনি যখন প্রথম সারিতে ফিরে আসবেন, তখন এটি আর ক্যাশে থাকবে না।
একই কোড প্রযোজ্য। লাফানো বা শাখা প্রশাখার অর্থ কম দক্ষ ক্যাশে ব্যবহার (কারণ আপনি নির্দেশাবলী ক্রমানুসারে পড়ছেন না, তবে একটি অন্য ঠিকানায় ঝাঁপিয়েছেন)। অবশ্যই, ছোট if-বিবৃতি সম্ভবত কিছু পরিবর্তন করবে না (আপনি কেবল কয়েকটি বাইট বাদ দিচ্ছেন, তাই আপনি এখনও ক্যাশেড অঞ্চলের অভ্যন্তরে এসে যাবেন), তবে ফাংশন কলগুলি সাধারণত বোঝায় যে আপনি সম্পূর্ণ আলাদা হয়ে যাচ্ছেন ঠিকানা যা ক্যাশে করা যায় না। যদিও সম্প্রতি এটি ডাকা হত না।
নির্দেশের ক্যাশে ব্যবহার সাধারণত কোনও সমস্যার তুলনায় অনেক কম। আপনার সাধারণত যা উদ্বিগ্ন হওয়া দরকার তা হ'ল ডেটা ক্যাশে।
কাঠামো বা শ্রেণিতে, সমস্ত সদস্যকে স্বচ্ছলতার সাথে স্থাপন করা হয়, যা ভাল। একটি অ্যারেতে, সমস্ত এন্ট্রিগুলি স্বচ্ছলতার সাথেও সাজানো হয়। লিঙ্কযুক্ত তালিকায় প্রতিটি নোড সম্পূর্ণ ভিন্ন স্থানে বরাদ্দ করা হয়, যা খারাপ which সাধারণভাবে পয়েন্টারগুলি অসম্পৃক্ত ঠিকানাগুলিতে ইঙ্গিত দেয়, যদি আপনি এটি অবহেলা করেন তবে সম্ভবত ক্যাশে মিসের ফলস্বরূপ।
এবং যদি আপনি একাধিক কোরকে কাজে লাগাতে চান তবে এটি সত্যিই আকর্ষণীয় হয়ে উঠতে পারে, সাধারণত, কেবলমাত্র একটি সিপিইউতে তার সময়ে এল 1 ক্যাশে কোনও প্রদত্ত ঠিকানা থাকতে পারে। সুতরাং যদি উভয় কোর ক্রমাগত একই ঠিকানায় অ্যাক্সেস করে তবে তার ফলে স্থির ক্যাশে মিস হবে, কারণ তারা ঠিকানার উপরে লড়াই করছেন।