অ্যালগরিদম বিশ্লেষণে আমরা ক্রিয়াকলাপ এবং পদক্ষেপগুলি গণনা করি। এটি মূলত ন্যায্য হয় যখন কম্পিউটার একটি অপারেশন করার জন্য প্রয়োজনীয় ডেটা আনার চেয়ে বেশি সময় নেয়। আজকাল একটি অপারেশন সম্পাদনের খরচ মেমরি থেকে ডেটা আনার খরচের তুলনায় উল্লেখযোগ্যভাবে কম৷
অনেক অ্যালগরিদমের রান টাইম অপারেশনের সংখ্যার পরিবর্তে মেমরি রেফারেন্সের সংখ্যা (ক্যাশে মিস হওয়ার সংখ্যা) দ্বারা প্রভাবিত হয়৷ সুতরাং, যখন আমরা কিছু অ্যালগরিদম তৈরি করার চেষ্টা করব, তখন আমাদের শুধুমাত্র ক্রিয়াকলাপের সংখ্যা নয়, মেমরি অ্যাক্সেসের সংখ্যাও কমাতে হবে। এছাড়াও অ্যালগরিদম ডিজাইন করার উপর ফোকাস করতে হবে যা মেমরির লেটেন্সি লুকিয়ে রাখে।
ধরুন একটি সাধারণ কম্পিউটার মডেল রয়েছে যেখানে কম্পিউটারের মেমরিতে একটি L1 ক্যাশে, একটি L2 ক্যাশে এবং প্রধান মেমরি রয়েছে। আমরা ALU ব্যবহার করে কিছু গাণিতিক ও যৌক্তিক অপারেশন করি
এটি হল এর ব্লক ডায়াগ্রাম -
ডায়াগ্রাম থেকে আমরা মেমরি এবং ক্যাশের আকার সম্পর্কে কিছু জ্ঞানও পেতে পারি। প্রধান মেমরি মূলত শত শত বা হাজার হাজার এমবি। যেখানে L2 ক্যাশে MBs এর কিছু ভগ্নাংশ এবং L1 ক্যাশে কিছু KB। রেজিস্টার সাইজ কিছু বিট. যখন আমরা একটি প্রোগ্রাম নির্বাহ করি, তখন সমস্ত ডেটা মেমরিতে থাকে। যদি আমরা ADD এর মত কিছু অপারেশন যোগ করি, তাহলে প্রথম নম্বরটি রেজিস্টারে সংরক্ষণ করা হবে, রেজিস্টারে ডেটা যোগ করা হবে, তারপর ফলাফলটি মেমরিতে লেখা হবে।
একটি চক্র এমন সময়ের দৈর্ঘ্য হতে দিন যা ইতিমধ্যেই রেজিস্টারে থাকা ডেটা যোগ করতে হবে। L1 ক্যাশে থেকে একটি রেজিস্টারে ডেটা লোড করার জন্য সময় প্রয়োজন মনে করুন এই মডেলে দুটি চক্র রয়েছে৷ যদি প্রয়োজনীয় ডেটা L1 ক্যাশে না থাকে তবে L2 ক্যাশে উপস্থিত থাকে, আমরা একটি L1 ক্যাশে মিস পাই এবং প্রয়োজনীয় ডেটা L2 ক্যাশে থেকে L1 ক্যাশে নেওয়া হয় এবং 10টি চক্রে নিবন্ধন করা হয়। যখন আমাদের প্রয়োজনীয় ডেটা L2 ক্যাশেও না থাকে, তখন আমাদের কাছে একটি L2 ক্যাশে মিস থাকে এবং প্রয়োজনীয় ডেটা প্রধান মেমরি থেকে L2 ক্যাশে, L1 ক্যাশে এবং 100টি চক্রে রেজিস্টারে নেওয়া হবে। তারপরে লেখার ক্রিয়াকলাপটিকে একটি চক্র হিসাবে গণনা করা হয় এমনকি যখন ডেটা মূল মেমরিতে লেখা হয়, কারণ পরবর্তী অপারেশনে যাওয়ার আগে আমরা সম্পূর্ণ লেখার জন্য অপেক্ষা করি না