সহজে শিখি Direct Memory Access কি এবং কেন ব্যবহার করা হয়।
আসল টপিকে আসার আগে বাস্তব জীবনের একটা কথা শেয়ার করি। আমরা সবাই কমবেশী আমলাতান্ত্রিক জটিলতার কথা জানি। দেখা যায় কোন কাজ করতে হলে অনেক মানুষের হাতে ঘুরে তারপর মূল যায়গায় পৌছায়। এতে প্রচুর পরিমাণ সময় নষ্ট হয়। যদি সরাসরি কাজ করা যেত তাহলে খুব সহজেই কাজ শেষ করা যেত তাইনা?
এখন আসি, কম্পিউটার কে বানিয়েছে? মানুষ ! তাহলে মানুষের ব্যক্তি জীবনের ঘটনাও তো এইসব ডিভাইসেও দেখা যাবে স্বাভাবিক তাইনা?
তো, কম্পিউটারের প্রসেসর মহাশয় অনেক ব্যস্ত থাকেন। দেখা গেল কোন I/O পেরিফেরাল(সহজ ভাবে এক্সট্রা এখন আমরা যেসব ডিভাইস ইউজ করি যেমনঃ পেনড্রাইভ ইত্যাদী) এর দরকার হলো মেমোরীতে থাকা কোন ডাটা এক্সেস করার। এখন সাধারণত আমলা অর্থাৎ প্রসেসরের কাছে গিয়ে বলল, “ভাই আমার একটু মেমরী এক্সেস লাগবে” ।প্রসেসর বলল, “ আচ্ছা আমি এনে দিচ্ছি”। প্রসেসর এরপর নিয়ে এসে আবার হ্যান্ডওভার করল I/O ডিভাসের কাছে। ২ ধাপে কাজটা করতে গিয়ে সময়য় বেশি লাগল। ধরে নিলাম ২টা Cycle খচর হলো। আবার Processor বা CPU অনেক কাজে ব্যস্ত থাকে, তাকে দিয়ে এই কাজ করালেও তো সময় বেশি লাগবে তাইনা !
যাক একটা গান আছে না, “এমন যদি হতো আমি পাখির মতো, উড়ে উড়ে বেড়াই সারাক্ষণ”
যাক যদি I/O ডিভাইস সরাসরি মেমোরীর কাছে রিকোয়েস্ট করতে পারত তাহলে এতো ধাপ পার হওয়ার দরকার হতো না। মানে সময় কম লাগত। তো কি করা যায়?
সিনেমার মতো এখানেও সুপারম্যান হাজির থুক্কু “DMA” কন্ট্রোলার এসে বলল এখন থেকে আমি সকল জনগনের (I/O Devices) এর সুখ দুঃখের (Memory Access Requests) কথা শুনে সরকারকে (Memory) কে জানাব।
এইবার দেখা হেল, I/O ডিভাইসগুলো DMA(Direct Memory Access) কন্ট্রোলারের মাধ্যমে মেমরী এক্সেস করতে পারছে। এইবার সময় লাগল কম ! ধরে নিলাম ১ টি Cycle খরচ হলো।
তো, মূলত এটাই হলো DMA এর কাজ। এখন কিভাবে আসলে কাজ করে সেটা নিচে আলোচনা করলাম।
এখন উপরের চিত্র হচ্ছে DMA না থাকলে কি হতো। আর নিচের চিত্রে DMA থাকলে কিভাবে কাজ করে সেটা দেখানো হলো।
৪ টি ধাপে কাজটি হবে যথাঃ
১) প্রথমে ডিভাইস DMA কন্ট্রোলারের কাছে রিকোয়েস্ট পাঠাবে যে ওর মেমরী এক্সেস দরকার বা সে ডাটা আদান প্রদান করতে ইচ্ছুক।
২) DMA তখন CPU কে জানায় আপনি এইবার থামেন। BUS গুলো ছেড়ে দিন আমি এখন এটা ইউজ করব
৩) CPU এরপর Hold হয়ে থাকে, BUS গুলো ছেড়ে দেয় যাতে এগুলো নিয়ে DMA কন্ট্রোলার কাজ করতে পারে।
৪) DMA কন্ট্রোলার সব পেয়ে এখন খুশিতে কাজটি করে দেয় আর এই সময়ে CPU অন্য কাজ করতে থাকে।
আর এভাবেই DMA কাজ করে।
আর হ্যা, এই BUS মানে মালঞ্চ বাস না, Address, Data and Control Bus বুঝিয়েছি। সোজা কথায় যেইসব লাইনের মাধ্যমে ডাটা, এড্রেস বা সিগনাল আদান প্রদান করা যায়।
এই আর্টিকেলটি ইনফরম্যালি লিখা। তাই পরীক্ষায় খাতায় কেউ এভাবে লিখলে মেমরী এক্সেস হোক না হোক যিনি খাতা দেখবেন তাঁর শূন্য নম্বর দেয়ার ইচ্ছাটা অনেক বেড়ে যাবে। এটি শুধু বুঝার জন্য দেয়া। অনেক বই আর্টিকেলে ফরম্যালি ব্যাপারটা এক্সপ্লেইন করা হয়েছে।
আজকের মতো এখানেই শেষ। আবারো আসিব ফিরে এই মিডিয়ামে, কোন এক টপিক নিয়ে !
Image Ref: Click Here