মাইক্রোপ্রসেসর বনাম মাইক্রোকন্ট্রোলার বনাম SoC
এই পাঠে যা শিখবেন
- মাইক্রোপ্রসেসর ও মাইক্রোকন্ট্রোলারের মধ্যে পার্থক্যের একটি আনুষ্ঠানিক, মাত্রা-ভিত্তিক তুলনা
- System-on-Chip (SoC) কী, এবং এটি মাইক্রোপ্রসেসর ও মাইক্রোকন্ট্রোলারের মাঝামাঝি কেন
- বাস্তব উদাহরণ — স্মার্টফোনের SoC, Raspberry Pi-শ্রেণির ডিভাইসের SoC
- একটি সত্যিকারের, চলমান সিমুলেশন — তিনটি ডিজাইনেই একই কাজের জন্য কতগুলো আলাদা ফিজিক্যাল কম্পোনেন্ট লাগে
১ · মাইক্রোপ্রসেসর ও মাইক্রোকন্ট্রোলারের আনুষ্ঠানিক পার্থক্য
L01-এ আমরা দেখেছি মাইক্রোপ্রসেসর হলো শুধু একটি প্রসেসিং কোর, আর মাইক্রোকন্ট্রোলার হলো CPU+RAM+Flash+I/O একই চিপে। এই পার্থক্যটিকে এখন কয়েকটি নির্দিষ্ট মাত্রা (dimension) ধরে আনুষ্ঠানিকভাবে সাজানো যাক — CPU, RAM, Flash/ROM, I/O পেরিফেরাল, সাধারণ ব্যবহার, ও বাস্তব উদাহরণ:
| মাত্রা | মাইক্রোপ্রসেসর | SoC | মাইক্রোকন্ট্রোলার |
|---|---|---|---|
| CPU | শুধু কোর, চিপে একাই | ইন্টিগ্রেটেড, প্রায়ই একাধিক কোর+GPU সহ | ইন্টিগ্রেটেড, সাধারণত একটি সরল কোর |
| RAM | বাহ্যিক চিপ লাগে | বাহ্যিক/প্যাকেজ-অন-প্যাকেজ চিপ লাগে | চিপের ভেতরে ইন্টিগ্রেটেড SRAM |
| Flash/ROM/স্টোরেজ | বাহ্যিক চিপ লাগে | বাহ্যিক Flash/eMMC/SD কার্ড লাগে | চিপের ভেতরে ইন্টিগ্রেটেড Flash |
| I/O পেরিফেরাল | বাহ্যিক এক্সপ্যান্ডার চিপ লাগে | অনেক কন্ট্রোলার ইন্টিগ্রেটেড (USB, ডিসপ্লে, ক্যামেরা...) | GPIO/টাইমার/ADC ইন্টিগ্রেটেড |
| সাধারণ ব্যবহার | সাধারণ-উদ্দেশ্যের কম্পিউটিং, ফুল OS | স্মার্টফোন, Raspberry Pi-শ্রেণির ডিভাইস | নির্দিষ্ট, ডেডিকেটেড এমবেডেড কাজ |
| উদাহরণ | Intel/AMD/Apple Silicon CPU | স্মার্টফোন SoC, Raspberry Pi-র SoC | ATmega328, ESP32, STM32 |
এই কোর্স Computer Architecture & Digital Logic কোর্স থেকে CPU নিজে ভেতরে কীভাবে কাজ করে তার ভিত্তি ধরে নেয় — এখানে আমরা সেই CPU-কে ঘিরে কতগুলো বাহ্যিক/ইন্টিগ্রেটেড কম্পোনেন্ট লাগে, সেই সিস্টেম-লেভেল প্রশ্নে মনোযোগ দিচ্ছি।
২ · SoC (System-on-Chip) কী
SoCSystem-on-Chipএকটি চিপে CPU + প্রায়ই GPU + মেমরি/পেরিফেরাল কন্ট্রোলার একসাথে — মাইক্রোপ্রসেসরের চেয়ে বেশি ইন্টিগ্রেটেড, কিন্তু মাইক্রোকন্ট্রোলারের চেয়ে বেশি সাধারণ-উদ্দেশ্যের। হলো একটি চিপে CPU, প্রায়ই একটি GPU, এবং মেমরি কন্ট্রোলার/USB/ডিসপ্লে/ক্যামেরার মতো নানা পেরিফেরাল কন্ট্রোলার একসাথে ইন্টিগ্রেটেড। এটি মাইক্রোপ্রসেসরের তুলনায় অনেক বেশি ইন্টিগ্রেটেড — একগাদা আলাদা গ্লু চিপ লাগে না — কিন্তু মাইক্রোকন্ট্রোলারের মতো RAM ও প্রোগ্রাম/ফাইল স্টোরেজ একই চিপে থাকে না; সেগুলো এখনও বাহ্যিক RAM চিপ (কখনও কখনও প্যাকেজ-অন-প্যাকেজ বা "PoP" আকারে একই মডিউলে বসানো, কিন্তু কার্যত আলাদা ডাই) ও বাহ্যিক Flash/eMMC/SD কার্ড হিসেবে যুক্ত করতে হয়।
স্মার্টফোনের ভেতরের প্রধান চিপ, বা Raspberry Pi-শ্রেণির সিঙ্গল-বোর্ড কম্পিউটারের কেন্দ্রীয় চিপ — এগুলো SoC-র বাস্তব উদাহরণ। এরা একটি পূর্ণাঙ্গ সাধারণ-উদ্দেশ্যের অপারেটিং সিস্টেম (Android/Linux) চালাতে পারে, যা একটি মাইক্রোকন্ট্রোলার সাধারণত পারে না — তাই SoC-কে বলা যায় "মাইক্রোপ্রসেসরের চেয়ে বেশি ইন্টিগ্রেটেড, কিন্তু মাইক্রোকন্ট্রোলারের চেয়ে বেশি সাধারণ-উদ্দেশ্যের" একটি মাঝামাঝি শ্রেণি।
৩ · তিনটি ডিজাইনের কম্পোনেন্ট সংখ্যা — একটি সিমুলেশন
L01-এর MicrocontrollerSystem ও MicroprocessorSystem ক্লাস দুটো এখানে আবার
ব্যবহার করে, তার সাথে একটি নতুন তৃতীয় ক্লাস SocSystem যোগ করা হলো। প্রতিটি ক্লাসের
components লিস্টের প্রকৃত দৈর্ঘ্য গণনা করেই তিনটি ডিজাইনের তুলনা করা হচ্ছে — কোনো সংখ্যা
আগে থেকে বসিয়ে দেওয়া হয়নি।
class MicrocontrollerSystem:
# একটি চিপে CPU + Flash + SRAM + GPIO -- সব ইন্টিগ্রেটেড (L01 দ্রষ্টব্য)
def __init__(self):
self.components = ["মাইক্রোকন্ট্রোলার IC (CPU+Flash+SRAM+GPIO একসাথে)"]
class SocSystem:
# CPU + GPU + মেমরি/পেরিফেরাল কন্ট্রোলার একই চিপে -- কিন্তু RAM ও স্টোরেজ এখনও বাহ্যিক
def __init__(self):
self.components = [
"SoC IC (CPU+GPU+মেমরি কন্ট্রোলার+I/O পেরিফেরাল কন্ট্রোলার একসাথে)",
"বাহ্যিক/PoP RAM চিপ (ডেটা মেমরির জন্য)",
"বাহ্যিক Flash/eMMC/SD কার্ড (প্রোগ্রাম ও ফাইল স্টোরেজের জন্য)",
]
class MicroprocessorSystem:
# CPU একা -- Flash, RAM, GPIO সবই আলাদা বাহ্যিক চিপ, বাসের মাধ্যমে যুক্ত (L01 দ্রষ্টব্য)
def __init__(self):
self.components = [
"CPU IC (শুধু প্রসেসিং কোর)",
"বাহ্যিক Flash/ROM চিপ (প্রোগ্রাম মেমরির জন্য)",
"বাহ্যিক RAM চিপ (ডেটা মেমরির জন্য)",
"বাহ্যিক GPIO এক্সপ্যান্ডার চিপ (I/O পিনের জন্য)",
"মেমরি-বাস কন্ট্রোলার / গ্লু লজিক",
]
systems = {
"মাইক্রোকন্ট্রোলার": MicrocontrollerSystem(),
"SoC": SocSystem(),
"মাইক্রোপ্রসেসর": MicroprocessorSystem(),
}
print("একই কাজের জন্য তিনটি ডিজাইনে প্রয়োজনীয় কম্পোনেন্ট সংখ্যা:\n")
counts = {}
for name, sysobj in systems.items():
counts[name] = len(sysobj.components)
print(f"{name}:")
for c in sysobj.components:
print(" -", c)
print(f" মোট আলাদা চিপ/কম্পোনেন্ট: {counts[name]}\n")
ranked = sorted(counts.items(), key=lambda kv: kv[1])
print("কম থেকে বেশি ইন্টিগ্রেশনের ক্রমে (কম কম্পোনেন্ট = বেশি ইন্টিগ্রেটেড):")
for name, n in ranked:
print(f" {name}: {n}টি কম্পোনেন্ট")
assert counts["মাইক্রোকন্ট্রোলার"] < counts["SoC"] < counts["মাইক্রোপ্রসেসর"], "ইন্টিগ্রেশন ক্রম প্রত্যাশিত নয়"
print("\nনিশ্চিত হলো: মাইক্রোকন্ট্রোলার < SoC < মাইক্রোপ্রসেসর -- SoC সত্যিই মাঝামাঝি অবস্থানে।")
assert লাইনটি — এটি শুধু ফলাফল প্রিন্ট করেই থামছে না, বরং কোডকে দিয়েই যাচাই
করাচ্ছে যে মাইক্রোকন্ট্রোলারের কম্পোনেন্ট সংখ্যা সত্যিই SoC-র চেয়ে কম, আর SoC-র সংখ্যা সত্যিই
মাইক্রোপ্রসেসরের চেয়ে কম। যদি কেউ ভবিষ্যতে components লিস্ট এমনভাবে বদলায় যে এই ক্রম আর
সত্যি না থাকে, তাহলে assertটি ব্যর্থ হয়ে সাথে সাথে জানিয়ে দেবে — এটাই কোড দিয়ে দাবি যাচাই
করার শক্তি।
মাইক্রোপ্রসেসর, SoC ও মাইক্রোকন্ট্রোলার একটি একক ইন্টিগ্রেশন-স্পেকট্রামের তিনটি বিন্দু — মাইক্রোপ্রসেসর সবচেয়ে কম ইন্টিগ্রেটেড কিন্তু সবচেয়ে নমনীয়, মাইক্রোকন্ট্রোলার সবচেয়ে বেশি ইন্টিগ্রেটেড কিন্তু একটি নির্দিষ্ট কাজেই সীমাবদ্ধ, আর SoC মাঝামাঝি — সাধারণ-উদ্দেশ্যের OS চালানোর ক্ষমতা রাখে অথচ একটি চিপেই অনেক কিছু গুঁজে দেয়। কোনটি "সেরা" তা নির্ভর করে কাজের ওপর — পরের পাঠে (L03) আমরা দেখব ঠিক কোন বৈশিষ্ট্যগুলো একটি সিস্টেমকে "এমবেডেড" বলে চিহ্নিত করে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ Raspberry Pi-শ্রেণির ডিভাইসের কেন্দ্রে একটি SoC থাকা সত্ত্বেও একে সরাসরি "মাইক্রোকন্ট্রোলার" বলা হয় না কেন?
কারণ এর RAM ও স্টোরেজ (SD কার্ড) এখনও বাহ্যিক, এবং এটি সাধারণত একটি পূর্ণাঙ্গ সাধারণ-উদ্দেশ্যের OS (Linux) চালায় — ব্রাউজার, একাধিক প্রোগ্রাম, ফাইল সিস্টেম সবকিছু সামলাতে পারে। মাইক্রোকন্ট্রোলার এর বিপরীতে সবকিছু এক চিপে নিয়ে একটি নির্দিষ্ট, ডেডিকেটেড কাজের জন্য ডিজাইন করা হয় — এই "সাধারণ-উদ্দেশ্য বনাম নির্দিষ্ট-কাজ" পার্থক্যটিই L03-এ এমবেডেড সিস্টেমের প্রথম বৈশিষ্ট্য হিসেবে আসবে।
প্র ০২
কোড সেলে SocSystem-এর কম্পোনেন্ট তালিকায় "বাহ্যিক Flash/eMMC/SD কার্ড" যোগ করা
হয়েছে, অথচ MicrocontrollerSystem-এ তা নেই কেন?
কারণ মাইক্রোকন্ট্রোলারের Flash মেমরি চিপের ভেতরেই ইন্টিগ্রেটেড, তাই আলাদা কোনো স্টোরেজ চিপের দরকার নেই। SoC-তে CPU/GPU/কন্ট্রোলার ইন্টিগ্রেটেড হলেও প্রোগ্রাম ও ফাইল সংরক্ষণের জন্য এখনও একটি বাহ্যিক Flash/eMMC চিপ বা SD কার্ড লাগে — এটাই SoC-কে মাইক্রোকন্ট্রোলারের চেয়ে কম ইন্টিগ্রেটেড করে রাখে।
প্র ০৩ ভবিষ্যতে কোনো SoC যদি তার RAM ও স্টোরেজ দুটোই একই প্যাকেজে ইন্টিগ্রেট করে ফেলে, তাহলে সেটি কি কার্যত মাইক্রোকন্ট্রোলার হয়ে যাবে?
পুরোপুরি না। ইন্টিগ্রেশনের মাত্রা একটি অক্ষ মাত্র — গভীরতর পার্থক্যটি হলো "সাধারণ-উদ্দেশ্য বনাম নির্দিষ্ট-কাজ" (L03-এর প্রথম বৈশিষ্ট্য)। একটি অত্যন্ত ইন্টিগ্রেটেড SoC-ও যদি একটি ফুল অপারেটিং সিস্টেম, GPU, ও একাধিক অ্যাপ্লিকেশন সমান্তরালে চালানোর জন্য ডিজাইন করা হয়, তাহলে সেটি এখনও একটি সাধারণ-উদ্দেশ্যের চিপ — মাইক্রোকন্ট্রোলারের সংজ্ঞা শুধু "এক চিপে সব" নয়, বরং "কম-পাওয়ার, কম-খরচ, একটি নির্দিষ্ট ডেডিকেটেড কাজের জন্য ডিজাইন করা" চিপ।
অনুশীলন
-
চিন্তা করুন: কোড চালানোর আগে হিসাব করুন —
SocSystem-এরcomponentsলিস্টে কতগুলো এন্ট্রি আছে, এবং তাইrankedতালিকায় SoC কোন অবস্থানে (সবচেয়ে কম, মাঝামাঝি, নাকি সবচেয়ে বেশি কম্পোনেন্টের) থাকবে?SocSystem-এর লিস্টে ৩টি এন্ট্রি আছে (SoC IC, RAM চিপ, Flash/eMMC/SD কার্ড)। যেহেতু মাইক্রোকন্ট্রোলারের ১টি ও মাইক্রোপ্রসেসরের ৫টি কম্পোনেন্ট, তাইrankedতালিকায় SoC ঠিক মাঝামাঝি অবস্থানে থাকবে। -
পরীক্ষা করুন:
SocSystem-এরcomponentsলিস্টে একটি নতুন লাইন"বাহ্যিক পাওয়ার ম্যানেজমেন্ট IC (PMIC)"যোগ করুন, তারপর Run চেপে দেখুন মোট কম্পোনেন্ট সংখ্যা ওrankedতালিকা কীভাবে বদলায়।SoC-র কম্পোনেন্ট সংখ্যা ৩ থেকে ৪ হয়ে যাবে। ক্রম তবু একই থাকবে — মাইক্রোকন্ট্রোলার (১) < SoC (৪) < মাইক্রোপ্রসেসর (৫) — তাই
assertলাইনটি এখনও পাস করবে। বাস্তবেও একটি সত্যিকারের SoC-ভিত্তিক বোর্ডে প্রায়ই একটি আলাদা PMIC লাগে একাধিক ভোল্টেজ রেইল সামলাতে, যা মাইক্রোকন্ট্রোলার বোর্ডে সাধারণত অনেক সরল থাকে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ মাইক্রোপ্রসেসর আর্কিটেকচার, এমবেডেড C, GPIO, টাইমার/PWM/ADC, সিরিয়াল প্রোটোকল, RTOS, সেন্সর/অ্যাকচুয়েটর, IoT আর্কিটেকচার, ওয়্যারলেস প্রোটোকল, MQTT/CoAP ও IoT সিকিউরিটি — বাকি পাঠগুলো শীঘ্রই যুক্ত হবে।
- Computer Architecture & Digital Logic কোর্স সহোদর কোর্স CPU/ISA/পাইপলাইনিং/ক্যাশের ভিত্তি সেই কোর্সেই তৈরি হয়েছে — এই কোর্স মাইক্রোকন্ট্রোলার-স্পেসিফিক জগতে গভীরে যায়।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems, Computer Architecture, Design and Analysis of Algorithms ও আরও অনেক কোর্স — সব এক জায়গায়।