Foundationপ্রথম নীতি থেকে
LEVEL 3

CPU আর্কিটেকচার

CPU Architecture

এই মডিউল যে প্রশ্নের উত্তর দেয়`a = b + c` লিখলে সিলিকনের ভেতর ঠিক কী কী ঘটে?

CPU একটা instruction কীভাবে চালায়? ISA কী এবং কেন এটা hardware আর software-এর মধ্যকার contract? Pipeline, cache, branch prediction — এগুলো performance-এর জন্য যে সব চালাকি, সেগুলো কীভাবে কাজ করে এবং কখন ভেঙে পড়ে।

১৭ লেসন৩ প্রজেক্ট~১৩০ ঘণ্টাপড়ার সময় ১৭ ঘণ্টা0%

লেসন

  1. 01ISA — Hardware আর Software-এর মধ্যেকার চুক্তিISA হলো একটা নির্দিষ্ট, লিখিত vocabulary — instruction, register, আচরণ — যেটা মেনে চললে যেকোনো compiler-লেখা প্রোগ্রাম, আর যেকোনো সঠিকভাবে বানানো CPU, একে অপরকে বোঝে; ভেতরের circuit যা-ই হোক না কেন। আজ থেকে Level 2-এর গেট-লেভেল জগৎ ছেড়ে আমরা সেই চুক্তির স্তরে উঠছি।মাঝারি৫০ মিনিটEXPERIMENTBUILD
  2. 02RISC বনাম CISC — Instruction Set ডিজাইনের দুই প্রতিদ্বন্দ্বী দর্শনCISC আর RISC দুইটা প্রতিদ্বন্দ্বী উত্তর একই প্রশ্নের — একটা instruction-এ কতটা কাজ গুঁজে দেওয়া উচিত? ইতিহাস (VAX থেকে Berkeley RISC), hardware trade-off (fixed বনাম variable length), আর সবচেয়ে চমকপ্রদ মোড় — আধুনিক 'CISC' x86-64 ভেতরে আসলে RISC-সদৃশ micro-op-এ চলে — মিলিয়ে দেখব এই বিভাজনটা আজও কেন প্রাসঙ্গিক, অথচ শুদ্ধ কৃষ্ণ-শুভ্র না।মাঝারি৫৫ মিনিটEXPERIMENTBUILD
  3. 03Register, Program Counter, আর Flags — CPU-র নিজের 'ভেরিয়েবল'Level 2-এর register file হার্ডওয়্যারটাই এখন ISA-স্তরে ফিরে আসছে — কতগুলো general-purpose register, প্রতিটা কত চওড়া, আর দুইটা বিশেষ-উদ্দেশ্য register (PC, SP) কীভাবে fetch-decode-execute আর function call সম্ভব করে। সাথে flags register — Level 2-র subtractor/comparator লেসনের ZF/CF/OF/SF সার্কিট এবার conditional branch-এর ভিত্তি হিসেবে কাজে লাগবে, আর RISC-V-র flags-বিহীন design দেখাবে এটাও একটা choice, বাধ্যতা না।মাঝারি৫০ মিনিটEXPERIMENTBUILD
  4. 04Instruction Encoding — একটা instruction কীভাবে বিটে পরিণত হয়একটা instruction আসলে একটা নির্দিষ্ট প্যাটার্নে সাজানো বিট মাত্র — opcode কোন কাজ, funct3/funct7 কোন variant, rd/rs1/rs2 কোন register, immediate কোন constant, সব ফিক্সড বিট-পজিশনে। RV32I-তে এই প্যাটার্ন সবসময় ৩২ বিট, ছয়টা format-এর একটায় পড়ে; x86-64-তে এই প্যাটার্ন ১ থেকে ১৫ byte পর্যন্ত বদলাতে পারে — আর এই একটা পার্থক্যই pipelining-কে সহজ বা কঠিন করে দেয়।কঠিন১ ঘণ্টাEXPERIMENTBUILD
  5. 05Addressing Modes — অপারেন্ড আসলে কোথায় থাকেএকটা instruction-এর operand field-এ যা লেখা থাকে তা প্রায়ই মান নিজেই না — বরং মান কোথায় খুঁজতে হবে তার একটা রেসিপি। Immediate সরাসরি মান দেয়, register direct একটা রেজিস্টারের মান দেয়, বাকি সব mode আসলে একটা effective address গণনা করে — register indirect, base+displacement, PC-relative, indexed — প্রতিটাই এক-একটা ভিন্ন গণনা। RISC ইচ্ছাকৃতভাবে এই তালিকা ছোট রাখে যাতে সেই গণনা সবসময় একটাই সরল ADD হয়, hardware-এ একটাই পথ লাগে।মাঝারি৫০ মিনিটEXPERIMENTBUILD
  6. 06Fetch-Decode-Execute Cycle — a = b + c সিলিকনে ঠিক কী ঘটায়`a = b + c` লিখলে compiler চারটা RV32I instruction বানায় (দুইটা lw, একটা add, একটা sw)। প্রতিটা instruction CPU-তে একই পাঁচ ধাপ পার হয় — FETCH (PC থেকে instruction memory-তে পড়া, PC+4), DECODE (opcode থেকে control signal, register file read), EXECUTE (ALU-তে গণনা — ঠিকানা অথবা প্রকৃত যোগফল), MEMORY (load/store হলে data memory), WRITEBACK (register file-এ ফলাফল)। এই চক্র প্রতি clock cycle-এ পুনরাবৃত্ত হয় — এটাই Level ২-র toy CPU-র হুবহু সেই datapath+control, শুধু এবার একটা real ISA চালাচ্ছে।কঠিন১ ঘণ্টা ১০ মিনিটEXPERIMENTBUILD
  7. 07Memory Hierarchy — দ্রুত, বড়, সস্তা: তিনটার মধ্যে দুটো বাছুনএকটা একক memory প্রযুক্তি দ্রুত, বড়, সস্তা — তিনটাই দিতে পারে না। তাই CPU একটা সিঁড়ি বানায় — register থেকে HDD পর্যন্ত, প্রতি ধাপে ধীর কিন্তু বড়। এই সিঁড়িটা কাজ করে শুধু একটা কারণে: locality of reference — প্রোগ্রাম যা এইমাত্র access করেছে বা যা কাছাকাছি, সেটাই আবার লাগবে।মাঝারি৫০ মিনিটEXPERIMENTBUILD
  8. 08Cache Organization — বিশাল ঠিকানাকে ছোট array-তে গুঁজে দেওয়াএকটা cache বিশাল address space-কে ছোট array-তে map করে address-কে tag+index+offset-এ ভেঙে — direct-mapped (এক ঠিকানা = এক line, সস্তা কিন্তু conflict-prone), fully-associative (যেকোনো line, conflict নেই কিন্তু ব্যয়বহুল parallel search), আর মাঝামাঝি, বাস্তবে সবচেয়ে ব্যবহৃত set-associative।কঠিন১ ঘণ্টা ৫ মিনিটEXPERIMENTBUILD
  9. 09Cache Policies — কাকে বিদায় করব, কখন লিখব, আর গড়ে কত সময় লাগেSet পূর্ণ হলে কে যাবে (LRU/FIFO/random — সত্যিকারের LRU ব্যয়বহুল, তাই pseudo-LRU tree), আর write কখন memory পর্যন্ত পৌঁছাবে (write-through সরল কিন্তু bandwidth-ভারী, write-back দ্রুত কিন্তু dirty bit ও consistency জটিলতা আনে) — এই দুই সিদ্ধান্তই AMAT = hit_time + miss_rate × miss_penalty সূত্রে মিলে সিস্টেমের গড় গতি নির্ধারণ করে।কঠিন১ ঘণ্টাEXPERIMENTBUILD
  10. 10Pipelining ও Hazard — Assembly Line নীতি সিলিকনেSingle-cycle CPU-তে instruction একটার পর একটা সম্পূর্ণ শেষ হয়; pipelining-এ সেগুলো ওভারল্যাপ করে চলে — কিন্তু সেই ওভারল্যাপই structural, data, আর control hazard নামের তিনটা নতুন সমস্যা তৈরি করে।অ্যাডভান্সড১ ঘণ্টা ১০ মিনিটEXPERIMENTBUILD
  11. 11Forwarding ও Stalling — Data Hazard-এর দুইটা সমাধানএকই data hazard-এর দুইটা সমাধান — stalling (নিরাপদ, ধীর) আর forwarding (দ্রুত, কিন্তু load-use hazard-এ এক cycle stall এখনো অনিবার্য)।কঠিন১ ঘণ্টা ৫ মিনিটEXPERIMENTBUILD
  12. 12Branch Prediction — না জেনেই সঠিক অনুমান করাBranch-এর ফলাফল না জেনেই CPU-কে fetch চালিয়ে যেতে হয় — তাই এটা একটা শিক্ষিত অনুমান করে, আর ভুল হলে পুরো speculatively-করা কাজ ফেলে দেয়; একটা 2-bit saturating counter এই অনুমানকে আশ্চর্যজনকভাবে নির্ভুল করে তোলে।কঠিন১ ঘণ্টা ৫ মিনিটEXPERIMENTBUILD
  13. 13Superscalar ও Out-of-Order Execution — যখন ক্রম নিজেই আলোচনার বিষয়Superscalar একসাথে একাধিক instruction execute করার হার্ডওয়্যার ক্ষমতা দেয়; out-of-order execution সেই ক্ষমতা পুরোপুরি কাজে লাগায় — program-এর লেখা ক্রম না মেনে, যেই instruction প্রস্তুত সেটাই আগে চালিয়ে, তবু ফলাফল যেন মূল ক্রমেই ঘটেছে এমন দেখানো।অ্যাডভান্সড১ ঘণ্টা ১৫ মিনিটEXPERIMENTBUILD
  14. 14Register Renaming ও Reorder Buffer — মিথ্যা নির্ভরতা ভাঙাWAR/WAW হলো নকল dependency — একই register-নাম পুনর্ব্যবহারের কাকতাল, সত্যিকারের data flow নয়। Register renaming সেটা ভাঙে, আর reorder buffer এলোমেলো execution-কে সাজানো commit-এ ফেরায়।অ্যাডভান্সড১ ঘণ্টা ৫ মিনিটEXPERIMENTBUILD
  15. 15SIMD — একটা Instruction, বহু Dataএকটা instruction একসাথে বহু data element-এ কাজ করে — parallelism-এর সম্পূর্ণ ভিন্ন একটা অক্ষ, যা multimedia থেকে আজকের machine learning পর্যন্ত সবখানে লুকিয়ে আছে।কঠিন৫৫ মিনিটEXPERIMENTBUILD
  16. 16Interrupt, Exception, Trap — যখন CPU স্বাভাবিক ক্রম ভাঙেতিনটা ভিন্ন কারণে CPU হঠাৎ তার স্বাভাবিক sequential পথ ছেড়ে দেয় — বাইরের ঘটনা (interrupt), নিজের ভুল (exception), আর ইচ্ছাকৃত অনুরোধ (trap) — কিন্তু ভেতরের mechanism-টা তিনটাতেই এক।কঠিন১ ঘণ্টাEXPERIMENTBUILD
  17. 17DMA আর I/O — CPU-কে কপি করা থেকে মুক্তিএকটা device থেকে memory-তে ডেটা আনতে CPU-কে প্রতিটা byte নিজে কপি করতে হলে তার পুরো সময় সেখানেই যেত। DMA একটা dedicated controller-কে সেই কাজ দিয়ে CPU-কে মুক্ত করে — আর কাজ শেষে জানায় ঠিক আগের লেসনের সেই interrupt দিয়ে।কঠিন৫৫ মিনিটEXPERIMENTBUILD

যা যা থাকছে

  • ISA — hardware/software contract
  • RISC vs CISC, x86-64 vs ARM64 vs RISC-V
  • Register file, PC, stack pointer, flags
  • Instruction encoding ও decoding
  • Fetch-decode-execute cycle বিস্তারিত
  • Addressing modes
  • Memory hierarchy introduction
  • Cache — direct mapped, set associative, fully associative
  • Cache lines, tags, replacement policy, write policy
  • Pipelining ও hazards (structural, data, control)
  • Forwarding ও stalling
  • Branch prediction
  • Superscalar ও out-of-order execution
  • Register renaming, reorder buffer
  • SIMD — SSE, AVX, NEON
  • Interrupts, exceptions, traps
  • DMA ও I/O

প্রজেক্ট

CPU Emulator

●●●●○

RISC-V RV32I emulator — fetch/decode/execute loop নিজে লেখা।

Cache Simulator

●●●○○

Memory trace খেয়ে hit/miss rate বের করা, associativity নিয়ে experiment।

Pipeline Visualizer

●●●●○

Hazard ও stall সহ 5-stage pipeline animate করা।