কম্পিউটার হোক বা স্মার্টফোন, মেমোরি বা র্যাম খুবই গুরুত্বপুর্ণ একটি ভুমিকা পালন করে থাকে। মেমোরি রয়েছে নানান রকমের, এগুলোর বৈশিষ্ট, কিছু ক্ষেত্রে কাজও আলাদা আলাদা, এগুলোর performance,ability,speed ও এক রকম নয়। রয়েছে নানান রকমের form factor, একই সাথে রয়েছে ram বা মেমোরি সম্পর্কিত বিভিন্ন terms যেমন timing,bus speed ইত্যাদি। গত বছর থেকে বাজারে আস্তে আস্তে জায়গা দখল করছে DDR5 র্যাম, আমরা জানি ওদিকে গ্রাফিক্স কার্ডগুলোতেও এক বিশেষ মেমোরির উপস্থিতি লক্ষ করা যায়। সব মিলিয়ে আজকের আর্টিকেলে আলোচনা হবে মেমোরি সংক্রান্ত সবকিছু নিয়েই, আশা করা যায় এই একটি আর্টিকেল থেকে সকল ধরনের মেমোরি,তাদের কাজ,বৈশিষ্ট্য,পার্থক্য ও তাতপর্য সম্পর্কে পাঠক ভালোমত অবগত হয়ে যাবেন।
পোস্টটি কয়েক ভাগে ভাগ করা হয়েছেঃ
পোস্টটির বিষয়বস্তু অনেকগুলো হওয়ায় আমরা পাঠকের সুবিধার্থে দুই পর্বে প্রকাশ করার সিদ্ধান্ত নিয়েছি। দুটি পর্বই একসাথে পাবলিশ করা হবে ও লিঙ্ক করে দেওয়া হবে।
প্রথম অংশে মেমোরি কি, র্যাম কেন বলা হয়, volatility, HDD-CPU-RAM এর সম্পর্ক, র্যাম এর বেসিক অপারেশন সম্পর্কে ধারণা দেওয়া হয়েছে। এরপর SRAM vs DRAM এর comparison ও ROM,ROM এর প্রকারভেদ সম্পর্কে আলোচনা করা হয়েছে। এই পর্যন্ত অনেকেরই boring লাগতে পারে জটিল লাগতে পারে।
তবে তার পর থেকে আমাদের দৈনন্দিন জীবনের পিসির যে RAM, তার বিভিন্ন terminology যেমন Speed,Cache Latency,Capacity, DDR,LPDDR,GDDR,DDR-L ,DIM, RAM VS VRAM ইত্যাদি terms নিয়ে দ্বিতীয় পর্বে আলোচনা করা হয়েছে যা আমাদের ধারণা বেশিরভাগ পাঠকেরই ভালো লাগবে।
মেমোরি কি? র্যামই বা কেন? What is memory! why the heck it’s called RAM!
প্রাথমিকভাবে কম্পিউটারের যেকোনো ডেটা একটা স্টোরেজ ডিভাইসে রাখা থাকে যা অপরিবর্তিত অবস্থায় কয়েকশো বছর ,হাজার বছর একই রকম থাকতে পারে কোনো রকমের damage ছাড়া। কোনো রকমের power cut, System shut down/disconnection এর ফলে এই data গুলো লস হওয়ার সম্ভাবনা থাকে না। কারণ এগুলো Non-volatile । এই ধরনের স্টোরেজ ডিভাইস নানান রকমের নানান টেকনোলজির হতে পারে যেমন hard disk drive, SATA SSD Drive,Flash memories (pendrives and memory cards, PCIe based storages), DVD ইত্যাদি। সাধারণত এই ধরনের স্টোরেজ গুলোতে ডেটা রাখা ও যায়, সেখান থেকে read ও করা যায়, মডিফাই/এডিট ডিলিট কপি কাট করা যায়।
তবে মাথায় রাখতে হবে এই ডিভাইসগুলো কেবল মাত্র স্টোরেজ (idle অবস্থায় তথ্য/ডেটা সংরক্ষণ করার জন্যই ব্যবহার করা হয়) , যখনই এই স্টোর করা data আমরা কোনোভাবে ব্যবহার করতে যাব,কোনো সফটওয়্যার/প্রোগ্রাম/কমান্ড দিয়ে একে ব্যবহার করবো/প্লে করবো/চালাবো/এক্সেস করতে চাইবো, তখনই নতুন এক ধরনের মেমোরি বা স্টোরেজের দরকার হয় আমাদের। সেটিই প্রাইমারী মেমোরি বা RAM (Random access memory), যেকোনো ডেটা এক্সেস করতেই আমাদের কোনো না কোনো প্রোগ্রাম এর দরকার হয়, সেই প্রোগ্রাম প্রথমত ইন্সটলড থাকে স্থায়ীভাবে স্টোরেজ এ, তারপর সেটা চালু করলে তা প্রসেসরের সরাসরি এক্সেসের জন্য টেম্পোরারি ভাবে যেখানে স্টোর করা হয় সেটাই হচ্ছে প্রাইমারী মেমোরি,আমাদের কম্পিউটারের ক্ষেত্রে RAM (Random Access Memory)। যেকোনো ফাইল চালাতেই প্রোগ্রাম লাগে,সবার আগে সেই প্রোগ্রামকে নিজে মেমোরির ব্লকে চালু হতে হয়,তারপর তার সাহায্যে অন্য ফাইল এক্সেস/create/modify/play করা যায়।
সাধারণ ধারণাঃ
প্রসেসর সরাসরি পারমানেন্ট স্টোরেজ থেকে কিছুই প্লে/এক্সেস/এডিট/মডিফাই করতে পারে না, বরং তাকে সেটা প্রথমে র্যামে লোড করতে হয়, এক্ষেত্রে প্রথমে যে প্রোগ্রাম দ্বারা ডেটা এক্সেস করা হবে সেটি আগে মেমোরিতে চালু হয়, অর্থাৎ সেই প্রোগ্রাম এর প্রয়োজনীয় সকল ফাইল র্যামে লোড হয়,তারপর সেই প্রোগ্রাম আমাদের কাঙ্ক্ষিত ফাইলটি প্লে করে (র্যামে স্টোর করে)। এখানে প্রসেসর র্যাম থেকে তা এক্সিকিউট/এক্সেস/মডিফাই/প্লে করতে থাকে।
ধরুন আপনি একটি গান চালাবেন, সেখানে ডাবল ক্লিক করলে প্রসেসর সবার আগে ঐ গানের ফাইল টাইপের সাথে যে প্রোগ্রাম এসোসিয়েট করা আছে তাকে মেমোরিতে লোড করে ও চালু করে, তারপর সেই প্রোগ্রাম চালু হয়ে ওই গানকে মেমোরি/র্যামে লোড করে ও প্রসেসর তখন তা প্রসেসিং করে প্লে করে অডিও আউটপুট আকারে।
আমরা তো সবাই মাইক্রোসফট ওয়ার্ডে কাজ করেছি কমবেশি, লিখতে গিয়ে যদি কখনো অনাকাঙ্খিত ভাবে পিসি অফ হয়ে যায় বা বিদ্যুৎ চলে যায়, সেক্ষেত্রে আমরা যতটুকু কাজ সেভ করিনি, ততটুকু হারিয়ে ফেলি। অর্থাৎ র্যামে বা প্রাইমারী মেমোরিতে সবকিছুই temporarily ,অস্থায়ীভাবে স্টোর হয়, যতক্ষণ প্রোগ্রাম চালু থাকে, যতক্ষণ প্রসেসিং চলে, ঠিক ততটুকু সময়ই এখানে ডেটা স্টোর থাকে, নতুন মডিফাই/সৃষ্টি হওয়া ডেটা/ফাইল রেজাল্ট সবই এখানে থাকে যতক্ষণ না প্রোগ্রাম আমরা ক্লোজ করি ও নতুন ফাইল/প্রোগ্রাম/রেজাল্টকে সংশ্লিষ্ট প্রোগ্রাম এর মাধ্যমে কমান্ড দিয়ে সেভ করি।
Volatile
র্যামে বা মেমোরিতে ডেটা স্থায়ীভাবে থাকতে পারেনা, প্রথমত প্রোগ্রাম এর কাজ শেষ,মেমোরি থেকেও সেই সংশ্লিষ্ট ফাইলগুলো যে ব্লক দখল করে রেখেছিল তা থেকে বের করে দেওয়া হয় ও ওই জায়গা খালি হয়ে যায়, নতুন তৈরী ফাইলগুলোও সরাসরি বাদ হয়ে যায় ,এক্ষেত্রে আমাদের নতুন রেজাল্ট/মডিফাইড/নিউ ভার্সনের ফাইল গুলোকে সংশ্লিষ্ট প্রোগ্রাম দিয়ে সেভ করতে হবে permanently হার্ড ড্রাইভ বা যেকোনো স্থায়ী স্টোরেজ সিস্টেমে।
এইযে ডেটা ধরে রাখতে না পারা, পাওয়ার কাট বা প্রোগ্রাম অফ এর সময় সব বাদ হয়ে যাওয়া, এই প্রবণতা বা বৈশিষ্ট্যকে বলা হয় volatility, র্যাম বা প্রাইমারী মেমোরি এজন্য volatile প্রকৃতির।
primary storage গুলোকে আমরা যদি মানুষের স্থায়ী স্মৃতির সাথে তুলনা করি,সেক্ষেত্রে RAM বা primary memory কে short term memory বলা যেতে পারে।
আমরা সবাই PCIe 3.0/4.0 NVMe এর নাম শুনেছি, এটি Nand Flash chip based Memory যা Non-volatile, স্থায়ীভাবে ডাটা ধরে রাখতে পারে (তবে still এগুলো primary memory হিসেবে ব্যবহ্বত হয়না , এর কারণটাও আমরা একটু অনুধাবন করতে পারি,যদি আমরা PCIe NVMe/SATA SSD এর বৈশিষ্ট্য recall করি, এদের Lifetime রয়েছে, MTBF (mean time before failure ) রয়েছে, TBW রয়েছে (Terabytes-written), সেই পরিমাণ ডেটা রাইট এর পর কার্যত এসএসডিটি একটি ROM বা read only memory/storage এ পরিণত হয় (ROM এর ব্যাপারে আমরা পরে আসবো), আর যে পরিমাণ data এর চাপ প্রতি সেকেন্ডে একটি primary memory/ram কে নিতে হয়, তা যদি এসএসডিকে দেওয়া হয় তা কয়েক দিনে না হলেও কয়েক সপ্তাহের মধ্যে নিঃশেষ হয়ে যাবে। মুল কথা write amount এর limitation থাকায় SSD কে ram হিসেবে ব্যবহার সম্ভব না। এও আমরা ভালোমত জানি যে ব্যবহারের সাথে সাথে SSD এর Health কমতে থাকে।
কেন প্রসেসর সরাসরি Hard disk drive/secondary storage এক্সেস করতে পারেনা
আমাদের প্রশ্ন আসতে পারে যে কেন সরাসরি প্রসেসর র্যম এর জায়গায় হার্ড ড্রাইভকে সরাসরি ব্যবহার করতে পারে না। এর উত্তর হলো হার্ডড্রাইভ এর সাথে প্রসেসর এর data কেন্দ্রিক সরাসরি সম্পর্ক,contact সম্ভব হয় না, একদিকে motherboard এর front side bus এ কানেক্টেড থাকে প্রসেসর, অন্যদিকে northbridge chip গুলো র্যাম-প্রসেসরের ডেটা আদান প্রদান নিয়ন্ত্রণ করে। আর southbridge চিপগুলো আবার র্যামের সাথে হার্ডড্রাইভ বা সেকেন্ডারি স্টোরেজ এর ডেটা আদান প্রদান নিয়ন্ত্রণ করে। ফলে এখানে Secondary storage-CPU সরাসরি কোনো contact হচ্ছে না।এজন্যই প্রসেসরকে র্যামের মাধ্যমেই HDD এর সাথে data আদান প্রদান করতে হয়।
আরেকটি বড় কারণ হচ্ছে প্রসেসরের তুলনায় secondary storage গুলো অনেক অনেক বেশি ধীরগতির হয়ে থাকে। ফলে ডাটা সাপ্লাই যদি সরাসরি হার্ডড্রাইভ থেকে হয়ে থাকে, সেক্ষেত্রে প্রসেসরকে অনেক সময় ,বিশেষ করে মাল্টিটাস্কিং এর সময় বারবার অপেক্ষা করতে হবে প্রসেসর এর জন্য, যাতে প্রসেসরকে স্টোরেজ প্রয়োজনীয় ফাইল/তথ্য/ডেটা দিতে পারে। বেশিরভাগ ক্ষেত্রেই হার্ডড্রাইভ বা সেকেন্ডারি স্টোরেজ এ কাজ করতে ব্যর্থ হবে, প্রসেসর যত শক্তিশালীই হোক সে এক রকম অলস বসে অপেক্ষা করবে, সিস্টেম unstable হয়ে যাবে, কাজ গুলো হয়ে যাবে অনেক ধীরগতির।আর উপরে আমরা এটাও উল্লেখ করলাম যে HDD থেকে অপেক্ষাকৃত অনেক ফাস্ট হওয়া সত্বেও Limited write amount,vulnerability, limited health এর কারণে SSD দিয়েও সুবিধা করা সম্ভব হবে না।
তাছাড়া এই স্টোরেজ গুলোর অপারেশন,গঠন ও প্রসেসরের জন্য সুবিধাজনক নয়, যেমন SATA HDD গুলো serially ডেটা আদান প্রদান করে, অর্থাৎ একবারে একটি করে তথ্য read/write হবে। অন্যদিকে আধুনিক প্রসেসরগুলো parallel , একই সময় একাধিক লেন, লাইন থেকে একই ধরনের ডেটা প্রসেস করতে পারে।
আরো পড়ুনঃ EPIC (Explicitly Parallel Instruction Computing)
বরং যখন DMA বা Direct Memory Access ফিচার ছিল না, তখন সরাসরি প্রসেসরগুলো এই স্টোরেজগুলোকে এক্সেস করতো,যা অনেকটাই স্লো করে দিত গতি।
র্যামকে কেন র্যাম (RAM, Random access memory) বলা হয়
RAM এর পুর্ণরুপ Random Access Memory, চলুন একটু নামকরণ এর যৌক্তিকতা/কারণ জেনে নেওয়া যাক। Random Access Memory এই কারণেই বলা হয় যে যেকোনো পজিশনের যেকোনো ক্লাসের address সরাসরি ঝামেলা ছাড়াই একই স্পিডে একই রকমের পরিশ্রম করে প্রসেসর বা অন্য কোনো সংশ্লিষ্ট ডিভাইস ব্যবহার করতে পারে। যেকোনো র্যান্ডম ইনফরমেশন কোনো ডিভাইসের পক্ষে ঝামেলা ছাড়াই, অন্য এড্রেস রিড/রাইট বা এক্সেসের দরকার ছাড়াই র্যাম থেকে সরাসরি এক্সেস করা সম্ভব হয়।যেকোনো address কেই সমান latency/delay তে এক্সেস করা যায় র্যাম থেকে, অর্থাৎ আমরা ram এর কোন block এর এড্রেস/ইনফরমেশন ব্যবহার করতে চাচ্ছি তার জন্য time delay/difficulty সবসময়ই সমান থাকবে। এখানে অনুমতিপ্রাপ্ত ডিভাইস সরাসরি যেই লোকেশন/যেই ব্লক ইচ্ছা সেই ব্লক থেকে ইনফরমেশন নিতে পারে বা ইনফরমেশন রাখতে পারে, এর জন্য তাকে অন্য ব্লক পাড়ি দিতে হয় না, কোনো সিকোয়েন্স বজায় রাখতে হয় না। যেকোনো order এ একই রকমের ease এর সাথে এক্সেস করা যায়।
ব্যাপারটা আসলে সহজ নয়,প্রথম দিকে মেমোরি থেকে এভাবে তথ্য এক্সেস করা যেত না, delay line মেমোরি কিংবা magnetic drum memory গুলোতে randomly ডেটা এক্সেস/স্টোর করা যেত না। বরং অপেক্ষা করতে হত।
র্যামের/মেমোরির বেসিক অপারেশনঃ
কম্পিউটার মেমোরির মুলত দুই ধরনের বেসিক অপারেশন রয়েছে, একটা হলো Read operation,আরেকটি হচ্ছে write operation। উভয় ক্ষেত্রেই memory address এর দরকার হয়। read operation non destructive কারণ এটি data modification করে না, অন্যদিকে write operation destructive প্রকৃতির কারণ এটি মেমোরির ব্লকের আগের data/information কে replace করে।
প্রসেসর যখন কোনো instruction পায়, তখন সেটা (instruction টিতে মেমোরির কোনো address বা location থাকতে পারে যেখান থেকে প্রয়োজনীয় date read বা write করা লাগবে)।এ এই এড্রেসকে পাঠানো হয় র্যাম কন্ট্রোলারে ,তখন র্যাম কন্ট্রোলার এই request টিকে organize করে ও উপযুক্ত address লাইনে পাঠায়, যাতে করে address line সংলগ্ন ট্রাঞ্জিস্টর গুলো সেল গুলোকে খুলে বা ওপেন করে যাতে করে ক্যাপাসিটর ভ্যালু গুলো read করা যায়। DRAM এ নির্দিষ্ট পরিমাণ চার্জের উপরের চার্জকে ১ ও তার থেকে কম চার্জের ক্ষেত্রে ০ দিয়ে represent করা হয়।
DRAM এর ক্ষেত্রে প্রতিটি capacitor এর data পড়ার আগে তাকে power refresh করে নিতে হয় যাতে করে value read টি valid হয়।
মেমোরি ইউনিটের address ও ডাটা সিস্টেম বাসের এড্রেস ও data bus এ কানেক্টেড থাকে। read,write সিগনাল আসে control bus থেকে। Memory এর characterization এর জন্য দুটি metric ব্যবহার হয়। access time ,আরেকটি হচ্ছে cycle টাইম। একটি ডাটা মেমোরি এড্রেস থেকে এক্সেস করতে যে সময় লাগে তাই হচ্ছে এক্সেস টাইম, অন্যদিকে দুটি successive read/right অপারেশন এর মধ্যবর্তী সর্বনিম্ন সময়কে বলা হয় cycle time।
https://youtu.be/-aQOv3T7P8E
read cycle এর ধাপসমুহঃ
- address bus এ যেই লোকেশন এ read করা হবে তার address পাঠানো।
- control bus এ read control signal activate করা।
- এই পর্যায়ে মেমোরি উক্ত এড্রেস লোকেশন থেকে ডেটা সংগ্রহ করে data bus এ রাখে সেজন্য অপেক্ষা করা।
- data bus থেকে data read করা।
- memory read control signal বন্ধ করে read cycle শেষ করা।
write cycle এর ধাপসমুহঃ
- address bus এ যেই লোকেশন এ write করা হবে তার address পাঠানো।
- data bus এ যেই ডাটা write হবে তা রাখা।
- control bus এ write control signal এক্টিভেট করা।
- নির্দিষ্ট লোকেশনে data store করা।
- memory write control signal বন্ধ করে write cycle শেষ করা।
DRAM Vs SRAM
র্যামের মধ্যে আবার দুই রকমের প্রকারভেদ রয়েছে, SRAM বা স্টাটিক র্যাম, DRAM বা ডাইনামিক র্যাম।আমাদের সিস্টেমে মুলত যে র্যাম ব্যবহার করা হয় primary memory হিসেবে তা হলো DRAM, এর বৈশিষ্ট্য হচ্ছে এটি অত্যন্ত dense ,প্রতি বিটের জন্য একটি করে ট্রাঞ্জিস্টর ও ক্যাপাসিটর থাকে। অনেক বেশি bits অনেক ছোট chip এর মধ্যে রাখা যায়,দাম বা বানানোর খরচ কম, সাইজ ও বেশি। এটি ছোট ছোট capacitors দিয়ে তৈরী, বিট গুলো যেখানে চার্জ হিসেবে থাকে, dynamic হওয়ায় প্রতি মিলিসেকেন্ডে ,প্রতিটা keystroke এর সাথে এর মধ্যকার data পরিবর্তিত হয়। একই সাথে এর আরেকটি বৈশিষ্ট্য হচ্ছে প্রতিনিয়ত এটিকে power refreshed করতে হয় না হলে data গুলো capacitor এ যে electrical charge আকারে রয়েছে সেগুলো drain হয়ে যাবে ও data লস হয়ে যাবে।
অন্যদিকে, SRAM এর জন্য power refresh হওয়ার দরকার হয় না, এটি DRAM অপেক্ষা কম denser, এটি তৈরীতে খরচ বেশি হয় এবং DRAM থেকে অনেক বেশি ফাস্ট। এর access time 2ns বা এর ও কম হয়ে থাকে এতে করে 500 Mhz বা এর থেকে বেশি প্রসেসরের সাথে খাপ খাইয়ে নিতে পারে । এতে প্রতি বিটের জন্য ৬টি ট্রাঞ্জিস্টর থাকে, কোনো ক্যাপাসিটর থাকে না,যেহেতু কোনো ক্যাপাসিটর থাকে না, কোনো চার্জ হারানোর সম্ভাবনাও থাকে না ফলে power refresh এর ও দরকার হয় না। lower density এর কারণে আকারেও অনেক বড় হয় SRAM. একটি ৬৪ মেগাবাইটের ডির্যাম মডিউল যে আকারের হয়ে থাকে, একটি ২ মেগাবাইটের SRAM ও একই আকারের হয়ে থাকে ও উভয় ক্ষেত্রে খরচ এর পরিমাণ ও এক হয়ে থাকে। সেই হিসেবে SRAM ,DRAM থেকে প্রায় ৩০ গুণ আকারে বড় ও দামী।
যেহেতু SRAM অনেক বেশি দামী,আকারে বড়, এটিকে মেইন মেমোরি হিসেবে ব্যবহার করা কঠিন হওয়ায় পিসি ডিজাইনাররা অন্য উপায়ে, cost effective পদ্ধতিতে এটিকে ব্যবহার করেন, এক্ষেত্রে আমাদের কম্পিউটারের প্রসেসরে L1,L2 বা L3 Cache হিসেবে ব্যবহার করা হয় একে। এতে খরচ তুলনামুলক কম হয়ে থাকে, এই মেমোরির স্পিড প্রসেসরের স্পিডের মতই হয়ে থাকে।
SDRAM
SDRAM বলতে Synchronous dynamic random access memory (SDRAM) বুঝানো হয়। এই মেমোরির বৈশিষ্ট্য হচ্ছে এটি প্রসেসরের টাইমিং,ফ্রিকোয়েন্সির সাথে synchronize করতে পারে, এই প্রযুক্তিতে র্যামের স্পিড অনেকটাই বাড়ানো সম্ভব হয়েছে ফলে প্রসেসরের উচ্চ গতির সাথে খাপ খাওয়াতে পারছে র্যাম গুলো। এই বৈশিষ্ট্যের জন্য মেমোরি মডিউল data access এর জন্য একদম accurate clock cycle জানতে পারে, CPU কেও আর cycle গুলোর মাঝে অপেক্ষা করতে হয়না।SDRAM এ Pipelining নামের একটি পদ্ধতি ব্যবহার করা হয় যার ফলে একটি ডেটার প্রসেসিং শেষ হওয়ার আগেই অন্য ডেটার acceptance সম্ভব হয়।
ROM VS RAM
ROM বলতে Read only Memory বোঝানো হয় যাতে constantly data modify,change,rewrite,write করা যায় না। বরং তার মধ্যে যা ডাটা আছে তা read ই করা যায়। ROM এ ডাটা আলাদা করে রাইট করা অনেক পরিশ্রমসাপেক্ষ ও জটিল বিষয়, আমাদের কম্পিউটারের BIOS কিন্ত মুলত ROM ভিত্তিক প্রোগ্রাম। এছাড়া আমরা DVD,CD ড্রাইভ এর কথা জানি সেগুলো read only. তবে বিশেষ প্রক্রিয়ায় এই ROM এর data মুছে ফেলা যায়, নতুন DATA দিয়ে প্রতিস্থাপন করা যায় যার ভিত্তিতে ROM এর বেশ কিছু প্রকারভেদ রয়েছে। যেমন-
PROM,EPROM,EEPROM
Prom এর full form হচ্ছে programmable ROM এটি একবারই Write করা যায় বা program করা যায়,write করার সময় কোনো error হলে ডিভাইসটি unusable হয়ে যায়। example:bios, এছাড়াও cell phones, video game consoles, RFID tags, medical devices এ PROM এর ব্যবহার রয়েছে।
EPROM বলতে erasable programmable ROM বোঝায় যার মধ্যকার date erase করে নতুন data দ্বারা প্রতিস্থাপিত করা যায়। EPROM এর data Ultraviolet Light দিয়ে erase করা সম্ভব। এর উদাহরণ হচ্ছে CD,DVD।
EEPROM বলতে Electrically erasable ROM বুঝানো হয়।যা electric charge ব্যবহার করে rewrite করা সম্ভব। এই বৈষিষ্ট্যের দিক দিয়ে Pendrive/flash memories কে EEPROM বলা যায় যদিও সেগুলো ROM নয়, কার্যত স্টোরেজ ডিভাইস হিসেবেই কাজ করে।এছাড়াও credit card, SIM card, key-less entry,OTP ইত্যাদি ডিভাইসে EEPROM এর ব্যবহার রয়েছে।