পাঠ ০২ · ৫৭-এর মধ্যে · মডিউল ১
Home / Courses / Microprocessors, Embedded Systems & IoT / মাইক্রোপ্রসেসর বনাম SoC

মাইক্রোপ্রসেসর বনাম মাইক্রোকন্ট্রোলার বনাম SoC

Microprocessor vs microcontroller vs SoC
৭ মিনিট পড়া মধ্যম · Intermediate Python সিমুলেশনসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • মাইক্রোপ্রসেসর ও মাইক্রোকন্ট্রোলারের মধ্যে পার্থক্যের একটি আনুষ্ঠানিক, মাত্রা-ভিত্তিক তুলনা
  • 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-কে বলা যায় "মাইক্রোপ্রসেসরের চেয়ে বেশি ইন্টিগ্রেটেড, কিন্তু মাইক্রোকন্ট্রোলারের চেয়ে বেশি সাধারণ-উদ্দেশ্যের" একটি মাঝামাঝি শ্রেণি।

মাইক্রোপ্রসেসর ৫টি কম্পোনেন্ট লাগে SoC ৩টি কম্পোনেন্ট লাগে মাইক্রোকন্ট্রোলার ১টি কম্পোনেন্ট লাগে
ইন্টিগ্রেশনের মাত্রা বাড়ার সাথে সাথে বাহ্যিক কম্পোনেন্টের সংখ্যা কমে — মাইক্রোপ্রসেসর সবচেয়ে কম ইন্টিগ্রেটেড, মাইক্রোকন্ট্রোলার সবচেয়ে বেশি, আর SoC এই দুইয়ের মাঝামাঝি — পরের কোড সেলে এই সংখ্যাগুলো সত্যিই গণনা করা হয়েছে।

৩ · তিনটি ডিজাইনের কম্পোনেন্ট সংখ্যা — একটি সিমুলেশন

L01-এর MicrocontrollerSystem ও MicroprocessorSystem ক্লাস দুটো এখানে আবার ব্যবহার করে, তার সাথে একটি নতুন তৃতীয় ক্লাস SocSystem যোগ করা হলো। প্রতিটি ক্লাসের components লিস্টের প্রকৃত দৈর্ঘ্য গণনা করেই তিনটি ডিজাইনের তুলনা করা হচ্ছে — কোনো সংখ্যা আগে থেকে বসিয়ে দেওয়া হয়নি।

Python
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টি ব্যর্থ হয়ে সাথে সাথে জানিয়ে দেবে — এটাই কোড দিয়ে দাবি যাচাই করার শক্তি।
মূল কথা · Key takeaway

মাইক্রোপ্রসেসর, 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, ও একাধিক অ্যাপ্লিকেশন সমান্তরালে চালানোর জন্য ডিজাইন করা হয়, তাহলে সেটি এখনও একটি সাধারণ-উদ্দেশ্যের চিপ — মাইক্রোকন্ট্রোলারের সংজ্ঞা শুধু "এক চিপে সব" নয়, বরং "কম-পাওয়ার, কম-খরচ, একটি নির্দিষ্ট ডেডিকেটেড কাজের জন্য ডিজাইন করা" চিপ।

অনুশীলন

  1. চিন্তা করুন: কোড চালানোর আগে হিসাব করুন — SocSystem-এর components লিস্টে কতগুলো এন্ট্রি আছে, এবং তাই ranked তালিকায় SoC কোন অবস্থানে (সবচেয়ে কম, মাঝামাঝি, নাকি সবচেয়ে বেশি কম্পোনেন্টের) থাকবে?

    SocSystem-এর লিস্টে ৩টি এন্ট্রি আছে (SoC IC, RAM চিপ, Flash/eMMC/SD কার্ড)। যেহেতু মাইক্রোকন্ট্রোলারের ১টি ও মাইক্রোপ্রসেসরের ৫টি কম্পোনেন্ট, তাই ranked তালিকায় SoC ঠিক মাঝামাঝি অবস্থানে থাকবে।

  2. পরীক্ষা করুন: 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 ও আরও অনেক কোর্স — সব এক জায়গায়।
আগের পাঠ
মাইক্রোপ্রসেসর, মাইক্রোকন্ট্রোলার ও এমবেডেড সিস্টেম কী