পাঠ ০১ · ৫৭-এর মধ্যে · মডিউল ১
Home / Courses / Computer Architecture & Digital Logic / পরিচিতি

কম্পিউটার আর্কিটেকচার ও ডিজিটাল লজিক কী ও কেন গুরুত্বপূর্ণ

What is computer architecture & digital logic, and why it matters
৯ মিনিট পড়া শুরু · Beginner Python কোডসহ সম্পূর্ণ বাংলায়

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

  • "কম্পিউটার আর্কিটেকচার" ও "ডিজিটাল লজিক" — এই দুটি টার্মের সংজ্ঞা ও একে অপরের সাথে সম্পর্ক
  • সফটওয়্যার থেকে ট্রানজিস্টর পর্যন্ত অ্যাবস্ট্রাকশনের স্তরসমূহ, এবং এই কোর্স ঠিক কোন স্তরগুলো কভার করে
  • এই স্তর বোঝা কেন প্রতিটি প্রোগ্রামারের জন্য বাস্তবিক গুরুত্ব রাখে (দ্রুত বনাম ধীর কোড কেন আলাদা)
  • Python দিয়ে মৌলিক লজিক গেট থেকে একটি সরল হাফ অ্যাডার সার্কিট বানানোর একটি ছোট্ট প্রিভিউ

১ · কম্পিউটার আর্কিটেকচার ও ডিজিটাল লজিক কী

ডিজিটাল লজিকDigital Logic০ ও ১ — এই দুটি মাত্র মানের সিগন্যাল দিয়ে তথ্য উপস্থাপন ও প্রক্রিয়াজাত করার তত্ত্ব ও প্রকৌশল — লজিক গেট, সার্কিট এই তত্ত্বেরই বাস্তব রূপ। হলো সেই ভিত্তি যা শেখায় কীভাবে মাত্র দুটি মান — ০ ও ১ (বৈদ্যুতিক সিগন্যালে: লো ভোল্টেজ ও হাই ভোল্টেজ) — দিয়ে যুক্তি (লজিক) তৈরি করা যায়, এবং সেই যুক্তি দিয়ে গেট ও সার্কিট বানানো যায়। কম্পিউটার আর্কিটেকচারComputer Architectureডিজিটাল লজিক দিয়ে তৈরি সার্কিটগুলোকে কীভাবে সংগঠিত করলে একটি প্রোগ্রামযোগ্য, দক্ষ কম্পিউটার তৈরি হয় তার ডিজাইন-শাস্ত্র — ইনস্ট্রাকশন সেট, ডেটাপাথ, মেমরি হায়ারার্কি, পাইপলাইনিং। তখন সেই সার্কিটগুলো নিয়ে বড় প্রশ্ন করে — কীভাবে সেগুলোকে সংগঠিত করলে একটি প্রোগ্রামযোগ্য, দ্রুত, কার্যকর কম্পিউটার তৈরি হয়। সংক্ষেপে বলা যায়: ডিজিটাল লজিক হলো "ইট," কম্পিউটার আর্কিটেকচার হলো সেই ইট দিয়ে "বাড়ি বানানোর নকশা।"

সফটওয়্যার (অ্যাপ্লিকেশন + Operating System) ইনস্ট্রাকশন সেট আর্কিটেকচার (ISA) কম্পিউটার আর্কিটেকচার — CPU, ক্যাশ, ডেটাপাথ (এই কোর্স) ডিজিটাল লজিক — গেট ও ট্রানজিস্টর (এই কোর্স)
প্রতিটি প্রোগ্রাম শেষ পর্যন্ত এই পুরো স্তর পার হয়ে ট্রানজিস্টরের সুইচিং পর্যন্ত পৌঁছায় — এই কোর্স মাঝের দুটি স্তর গভীরভাবে কভার করে।

২ · এই কোর্স ঠিক কী কভার করে

ডিজিটাল লজিক (M1-M3)
বুলিয়ান অ্যালজেব্রা, লজিক গেট, কম্বিনেশনাল সার্কিট (অ্যাডার, মাল্টিপ্লেক্সার) ও সিকোয়েনশিয়াল সার্কিট (ফ্লিপ-ফ্লপ, রেজিস্টার, FSM) — কীভাবে গেট দিয়ে মেমরি ও যুক্তি তৈরি হয়।
কম্পিউটার আর্কিটেকচার (M4-M12)
কম্পিউটার আর্দমেটিক, ইনস্ট্রাকশন সেট, CPU ডেটাপাথ ও কন্ট্রোল, পাইপলাইনিং, মেমরি হায়ারার্কি ও ক্যাশ, I/O, প্যারালাল আর্কিটেকচার — কীভাবে এই সার্কিটগুলো দিয়ে একটি পূর্ণাঙ্গ CPU চলে।
Operating Systems কোর্সের সাথে সম্পর্ক

Operating Systems কোর্স শেখায় কীভাবে সফটওয়্যার CPU, মেমরি ও ডিস্কের মতো রিসোর্স ম্যানেজ করে — কিন্তু সেই রিসোর্সগুলো আসলে কী দিয়ে তৈরি, এবং কীভাবে কাজ করে, তা এই কোর্সেই শেখানো হয়। উদাহরণ: OS কোর্সে "ক্যাশ মিস হলে ধীর হয়" জানলেও, এই কোর্সে (M8) দেখবেন ঠিক কীভাবে ক্যাশ হার্ডওয়্যার ডিজাইন করা হয় এবং কেন সেই মিসটা ঘটে।

৩ · এই স্তর বোঝা কেন প্রতিটি প্রোগ্রামারের জন্য গুরুত্বপূর্ণ

আপনি হয়তো কখনো সরাসরি লজিক গেট ডিজাইন করবেন না — কিন্তু হার্ডওয়্যার কীভাবে কাজ করে তা বোঝা আপনার প্রতিদিনের কোডিং সিদ্ধান্তকেও প্রভাবিত করে —

  • ক্যাশ-বান্ধব কোড: কেন একটি 2D অ্যারে row-major ক্রমে অ্যাক্সেস করলে column-major-এর চেয়ে দ্রুত চলে (M8-এর মেমরি হায়ারার্কি বোঝালে এটি স্পষ্ট হবে)।
  • পাইপলাইন-বান্ধব কোড: কেন অতিরিক্ত শাখা-নির্ভর (branch-heavy) কোড কখনো কখনো CPU-কে ধীর করে দেয় (M7-এর পাইপলাইন হ্যাজার্ড থেকে বোঝা যাবে)।
  • সংখ্যার সীমাবদ্ধতা বোঝা: কেন ফ্লোটিং পয়েন্ট সংখ্যায় গোলমাল হয়, বা একটি ইন্টিজার "ওভারফ্লো" করে (M4-এর কম্পিউটার আর্দমেটিক থেকে বোঝা যাবে)।

৪ · একটি ছোট্ট লজিক গেট প্রিভিউ — হাফ অ্যাডার

নিচের কোড সেলে দেখা যাক ডিজিটাল লজিকের সবচেয়ে মৌলিক ব্লক — লজিক গেট — দিয়ে কীভাবে একটি ছোট্ট সার্কিট বানানো যায় যা দুটি বিট যোগ করতে পারে (এই কোর্সের M2-এ এটি বিস্তারিতভাবে আসবে)।

Python
# মৌলিক লজিক গেট -- ০ ও ১ নিয়ে কাজ করে, বাস্তব কোনো ট্রানজিস্টর নয়, শুধুই ধারণা বোঝানোর সিমুলেশন
def AND(a, b):
    return a & b

def OR(a, b):
    return a | b

def XOR(a, b):
    return a ^ b

def half_adder(a, b):
    """দুটি ১-বিট সংখ্যা যোগ করে (sum, carry) রিটার্ন করে -- M2-তে বিস্তারিত"""
    sum_bit = XOR(a, b)
    carry_bit = AND(a, b)
    return sum_bit, carry_bit

print("a  b | sum carry | দশমিকে (carry,sum)")
print("-" * 40)
for a in (0, 1):
    for b in (0, 1):
        s, c = half_adder(a, b)
        decimal_value = c * 2 + s
        print(f"{a}  {b} |  {s}    {c}   | বাইনারি '{c}{s}' = দশমিক {decimal_value}")

    
লক্ষ্য করুন a=1, b=1 হলে sum=0 কিন্তু carry=1 — অর্থাৎ ফলাফল বাইনারি "10" যা দশমিকে 2, ঠিক 1+1=2-এর সাথে মেলে। একটি একক XOR ও AND গেট দিয়েই এই যোগফল নির্ভুলভাবে বের করা যায় — এটিই দেখায় কীভাবে সরল গেট মিলিয়ে জটিল আর্দমেটিক সার্কিট তৈরি হয়।
মূল কথা · Key takeaway

কম্পিউটার আর্কিটেকচার ও ডিজিটাল লজিক একসাথে দেখায় কীভাবে একটি প্রোগ্রামের প্রতিটি লাইন শেষ পর্যন্ত লক্ষ লক্ষ ট্রানজিস্টরের সুইচিং-এ পরিণত হয়। এই কোর্স ধাপে ধাপে — গেট থেকে সার্কিট, সার্কিট থেকে CPU, CPU থেকে সম্পূর্ণ মেমরি ও I/O সিস্টেম — এই পুরো যাত্রা দেখাবে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ "ডিজিটাল লজিক" ও "কম্পিউটার আর্কিটেকচার" — এই দুটো কি একে অপরের থেকে সম্পূর্ণ আলাদা বিষয়, নাকি একে অপরের উপর নির্ভরশীল?

এগুলো ঘনিষ্ঠভাবে যুক্ত — একে অপরের উপর নির্ভরশীল স্তর। ডিজিটাল লজিক ছাড়া কম্পিউটার আর্কিটেকচারের কোনো বাস্তব ভিত্তি থাকত না (কোন হার্ডওয়্যার দিয়ে ডিজাইন বাস্তবায়িত হবে?), আর কম্পিউটার আর্কিটেকচার ছাড়া ডিজিটাল লজিকের গেটগুলো বিক্ষিপ্ত টুকরো হয়েই থাকত, কোনো উদ্দেশ্যপূর্ণ সিস্টেমে পরিণত হতো না। প্রথমটি "কীভাবে তৈরি করব," দ্বিতীয়টি "কীভাবে সংগঠিত করব যাতে কাজে লাগে।"

প্র ০২ Operating Systems কোর্স আর এই কোর্স — দুটোই তো "হার্ডওয়্যার" নিয়ে কথা বলে। তাহলে পার্থক্য কোথায়?

OS কোর্স হার্ডওয়্যারকে একটি প্রদত্ত জিনিস হিসেবে ধরে নিয়ে সেটা কীভাবে ব্যবস্থাপনা (শিডিউলিং, মেমরি বণ্টন) করা হয় তা শেখায় — সফটওয়্যার পার্সপেক্টিভ থেকে। এই কোর্স উল্টো দিক থেকে আসে — সেই হার্ডওয়্যারটা আসলে কীভাবে ডিজাইন করা হয় তা শেখায় — গেট থেকে শুরু করে সম্পূর্ণ CPU পর্যন্ত। দুটো একসাথে মিললেই একটি কম্পিউটার সিস্টেমের সম্পূর্ণ চিত্র পাওয়া যায়।

প্র ০৩ উপরের কোড সেলে a=1, b=1 হলে "sum" মাত্র ০ কেন — যোগফল কি ভুল হয়ে গেল?

ভুল নয় — এটিই ঠিক কারণ যে "carry" আলাদাভাবে দরকার। 1+1 বাইনারিতে "10" (দশমিকে 2) — এই দুই-অঙ্কের ফলাফলের ডান অঙ্কটাই "sum" (এখানে 0) আর বাম অঙ্কটাই "carry" (এখানে 1)। একটি একক বিট আউটপুট দিয়ে 1+1=2 প্রকাশ করা অসম্ভব, তাই হাফ অ্যাডারের দুটো আলাদা আউটপুট দরকার — এই কারণেই M2-তে "ফুল অ্যাডার" শেখানো হবে, যা একাধিক বিট মিলিয়ে carry ঠিকভাবে পরের বিটে পাঠায়।

অনুশীলন

  1. চিন্তা করুন: আপনার ফোন বা কম্পিউটারে একটি সাধারণ ক্যালকুলেটর অ্যাপে 5+3 টাইপ করলে, শেষ পর্যন্ত এটি কোন কোন স্তর পার হয়ে ফলাফল দেখায় তার একটি তালিকা বানান (এই পাঠের চিত্রটি দেখে সাহায্য নিন)।

    ক্যালকুলেটর অ্যাপ (সফটওয়্যার) → অপারেটিং সিস্টেম প্রসেসটি চালায় → ISA-এর একটি "add" ইনস্ট্রাকশনে রূপান্তরিত হয় → CPU-এর ডেটাপাথ (এই কোর্সের M6) সেই ইনস্ট্রাকশন এক্সিকিউট করে → ভেতরে একটি অ্যাডার সার্কিট (M2-এ শেখানো ফুল অ্যাডার) প্রকৃত বাইনারি যোগফল বের করে → যা শেষমেশ লজিক গেট ও ট্রানজিস্টরের সুইচিং দিয়ে বাস্তবায়িত হয়।

  2. পরীক্ষা করুন: উপরের কোড সেলে half_adder ফাংশনে একটি তৃতীয় প্যারামিটার carry_in যোগ করার কথা ভাবুন (এখনো কোড পরিবর্তন করবেন না) — এটি কেন দরকার হতে পারে?

    হাফ অ্যাডার শুধু দুটি একক বিট যোগ করতে পারে — কিন্তু বাস্তব সংখ্যা (যেমন 8-বিট বা 32-বিট) যোগ করতে হলে প্রতিটি বিট-পজিশনে আগের পজিশন থেকে আসা "carry" যোগ করাও দরকার। এই তৃতীয় ইনপুট (carry_in) যুক্ত সংস্করণকেই "ফুল অ্যাডার" বলা হয় — যা M2-এর দ্বিতীয় পাঠে (রিপল ক্যারি অ্যাডার) বিস্তারিত দেখবেন।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

কোর্সে ফিরে যান
Computer Architecture & Digital Logic — সব পাঠ