প্রসেসরের ক্যাশ মেমোরি নিয়ে যত কথা

ক্যাশ মেমোরি (Cache Memory) নাম না শুনে থাকলেও ক্যাশ ফাইলস এর নাম আমরা অনেকেই শুনেছি। বিশেষ করে এন্ড্রয়েড ব্যবহারকারীরা। তবে একটু খেয়াল করলে আমরা জানতে পারি যে, প্রসেসরেরও ক্যাশ মেমোরি আছে। কিন্তু তা নিয়ে কখনো ভাবি না। যদিও বা খেয়াল করে থাকি তাহলে দেখতে পাবো যে তা পরিমাণে খুবই কম থাকে,যেমন: ১০ বা ১২ মেগাবাইট বা এর কমবেশি।

র‍্যাম এর প্রকারভেদ

কম্পিউটার বা সমজাতীয় কোনও ডিভাইসে ৩ ধরনের মেমোরি থাকে। ROM,DRAM,SRAM. ডি-র‍্যাম কে আমরা সাধারণত র‍্যাম বলি। DRAM হলো ডায়নামিক র‍্যাম এবং SRAM  হলো স্ট্যাটিক র‍্যাম। SRAM ই হলো মূলত ক্যাশ মেমোরি। সবচেয়ে ছোট এবং সবচেয়ে ফাস্ট হলো এই মেমোরি। এটি সফটওয়্যার দ্বারা এক্সেসেবল না, সম্পূর্ণ সিপিইউ দ্বারা নিয়ন্ত্রিত।

আগে আসি এই ক্যাশ মেমোরি কিভাবে কাজ করে?

ধরুন আপনার কলম এর কালি শেষ। এখন টেবিলে থাকা কলমের প্যাকেট থেকে আরেকটি কল বের করবেন। আর তা না থাকলে বা অন্য কলম চাইলে তবে দোকান থেকে কিনে আনতে হবে। আর যদি কলমদানি  আপনার পছন্দের কলম থাকে তবে পুরো প্রক্রিয়াটি দ্রুত হয়ে যাবে। এখন এই ঘটনাকে আমরা কম্পিউটারের সাথে তুলনা করলে , টেবিলে থাকা কলমের প্যাকেট টি হলো DRAM আর দোকান হলো হার্ডডিস্ক। আর কলমদানি হলো এই ক্যাশ মেমোরি।  হয়তো কিছুটা আন্দাজ করতে পারছেন ক্যাশ মেমোরি কি তাহলে?

অর্থাৎ কোনও ডাটা যদি বারবার ব্যবহার করা হয় তাহলে সে কাজটা দ্রুত করার জন্য প্রসেসর এর মেমোরি তার এড্রেস কপি করে রাখে। যেনো পরবর্তী সময় একই কাজ করতে গেলে ডিলে না হয়।

ক্যাশ মেমোরি কিভাবে কাজকরে তা বুঝতে হলে প্রথমে জানতে হবে, প্রসেসর কিভাবে একটি ডাটাকে প্রসেস করে।

কোনও ডাটা প্রসেস করতে হলে প্রথমে সে ডাটাকে লুকাপ করতে হবে। এখন প্রসেসর জানে না সে ডাটা কোথায় আছে। প্রসেসর তখন ডি-র‍্যাম কে কমান্ড দেয় সে ডেটা এর লোকেশন খুঁজে বের করতে। ডি-র‍্যাম তখন কাঙ্ক্ষিত ডাটা খোজা  শুরু করে এবং ডাটার লোকেশন টা প্রসেসরে পাঠায়। তারপর তা আসে ক্যাশ মেমোরিতে এবং তখন শুরু হয় প্রসেসিং এর কাজ। যদি প্রয়োজনীয় ডাটা এর লোকেশনটা সিপিইউ এর ক্যাশ মেমোরিতে থাকতো তবে ডি-র‍্যাম এর কমান্ড করে ডিলে করা লাগতো না।  এই ডিলে কে বলা হয় ক্যাশ ল্যাটেজ। এখন তাহলে একটা প্রশ্ন থেকে যায়, ক্যাশ মেমোরি আসলে কি স্টোর করে থাকে?

এখানে গতানুগতিক ভুল সবাই করে, অনেকে ব্যাখ্যা করে ক্যাশ মেমোরি পুরো ডাটার একটা কপি করে নিজের কাছে রাখে।  এখন ক্যাশ মেমোরির এর সাইজ খুবই কম কিন্তু প্রয়োজনের চেয়ে এই ক্যাশ মেমোরি অনেক বেশিই। ক্যাশ মেমোরিতে থাকতে পারে কিছু কমান্ড, র‍্যাম থেকে পাওয়া প্রয়োজনীয় কিছু ফাইলের লোকেশন, কিছু ফাইলের স্ট্রাকচার কোড ইত্যাদি। ক্যাশ এ যে প্রোগ্রামের ডাটা থাকে সে প্রোগ্রামটি প্রসেসরের পুরো ফ্রিকোয়েন্সি ব্যবহার করে খুবই দ্রুত কাজ করতে পারে। ফাইলের লোকেশন ডাটা যদি ক্যাশ মেমোরিতে না পাওয়া যায় তবে সিস্টেম বা প্রোগ্রাম ল্যাগ করে থাকে।

আমরা একটু খেয়াল করলে দেখতে পাবো, প্রসেসর এ কোর নামে কয়েকটা অংশ রয়েছে। প্রসেসর এর কাজ ভাগ করে নেয় এই কোর গুলো। ক্যাশ মেমোরি ৩ ভাগে থাকে।  Level1,Level2 & Level3. লেভেল-১ আর ২ সব কোরের নিজস্ব ক্যাশ ম্যামোরি। একটি হলো কোডের অংশ আরেকটি হলো মেমোরি ইনডেক্স এর অংশ। বাকি যে লেভেল ৩ এর ক্যাশ মেমোরি আছে তা হলো সব কোরের সাথে কানেক্ট থাকা ক্যাশ মেমোরি। এর মাধ্যমে কোর গুলো সমন্বয় করে কাজ করে থাকে।

 

এতো কিছুর পর একটা কথা সবার চিন্তায় আসে, ক্যাশ মেমোরি যখন এতো জরুরি তাহলে এটাকে বাড়িয়ে কয়েক জিবি বা টেরাবাইট এ করা হয় না কেনো?

সবচেয়ে শক্তিশালী সুপার কম্পিউটারে কোর আছে ১০৬৪৯৬০০ টি এবং প্রতিটি কোরের ক্যাশ মেমোরি ৬৪কিলোবাইট। খুব ব্যায়সম্পন্ন হওয়ায় ক্যাশ মেমোরি বাড়ানো সম্ভব হয়ে উঠে না । আবার আরেকটি সমস্যা হলো , ফাইল যদি সরাসরি ক্যাশ মেমোরিতে থাকে তবে তা প্রসেসর এর ফিজিক্যাল ড্যামেজ করতে পারে। এই ক্যাশ ফাইল কিন্তু এন্ড্রয়েড এর ক্যাশ ফাইলস এর মতো ক্লিন মাস্টার দিয়ে ডিলিট করা যায় না:3

 

Comments are closed.