5.1.8 · HinglishInstruction Set Architecture (ISA)

RISC-V extensions (M, A, F, D, V, C)

3,502 words16 min readRead in English

5.1.8 · Hardware › Instruction Set Architecture (ISA)


The Six Standard Extensions

M Extension: Integer Multiplication and Division

Ye kyun exist karta hai: Multiplication ke liye dedicated hardware chahiye (Wallace trees, Booth encoders). Ek minimal CPU die area bachane ke liye ise omit karta hai. Lekin crypto, DSP, ya general compute ke liye, hardware multiply essential hai.


A Extension: Atomic Memory Operations

Ye kyun exist karta hai: Atomics ke bina, lock implement karne ke liye interrupts disable karne padte hain (user mode mein possible nahi) ya busy-waiting with race conditions. A extension compare-and-swap ko ek single hardware instruction banata hai.


F Extension: Single-Precision Floating-Point

Ye kyun exist karta hai: Floating-point math ke liye specialized units chahiye (exponent alignment, normalization). Ek tiny microcontroller ko ye nahi chahiye; ek graphics chip ko chahiye.


D Extension: Double-Precision Floating-Point

Alag kyun? Kaafi embedded systems (audio codecs, sensors) ko sirf single-precision chahiye. Register width double karna silicon area aur power cost karta hai.


V Extension: Vector Operations

Ye kyun exist karta hai: Modern workloads (image processing, ML, physics) same operation arrays pe perform karte hain. Ek scalar CPU ek cycle mein ek element process karta hai; ek vector CPU ek cycle mein 4–64 elements process karta hai.


C Extension: Compressed Instructions

Ye kyun exist karta hai: Instruction memory expensive hai (especially embedded systems pe). Agar ADDI x8, x8, 8 (har function epilogue mein use hota hai) 32 ki jagah 16 bits mein fit ho sake, toh ek typical program mein billions of bytes bach jaate hain.


Extension Naming Convention


Recall Ek 12 Saal Ke Bachche Ko Samjhao

Socho tum Lego robots bana rahe ho. Base RISC-V kit (RV32I) mein sirf itne pieces hain ki ek robot chal sake. Lekin kya ho agar tum chahte ho ki tumhara robot:

  • Math homework jaldi kare → M extension add karo (multiplier gear).
  • Apne dost ke robot ko bina dhakka diye high-five kare → A extension add karo (atomic handshake).
  • Ude (air resistance calculate karna padega) → F/D extensions add karo (decimals ke liye calculator).
  • Painting kare (ek saath bahut saare pixels process karo) → V extension add karo (kaafi paintbrushes ek saath kaam karti hain).
  • Tumhari jeb mein fit ho → C extension add karo (instructions chhoti fold karo).

RISC-V tumhe sirf wo pieces khareedne deta hai jo chahiye. Ek chhota robot (smartwatch chip) flying aur painting parts skip karta hai. Ek bada robot (server CPU) ke paas sab kuch hota hai. Ye har robot ko saare possible attachments carry karne pe majboor karne se sasta aur zyaada efficient hai.



Connections


#flashcards/hardware

RISC-V mein M extension kya add karta hai? :: Integer multiply (MUL, MULH) aur divide (DIV, REM) instructions. Iske bina, software ko shift-add loops se emulate karna padta hai (100× slow).

Teen MULH variants (MULH, MULHU, MULHSU) kyun hain?
Kyunki 32×32→64 multiplication ek two-part result produce karta hai. MULH (signed×signed), MULHU (unsigned×unsigned), aur MULHSU (signed×unsigned) upper 32 bits ke liye alag sign-extension requirements handle karte hain.
A extension mein LR.W kya karta hai?
Load-Reserved: ek word load karta hai aur address ko reservation register mein mark karta hai. Agar koi doosra core us cache line pe write kare, toh reservation invalidate ho jaati hai (SC.W ke zariye atomic compare-and-swap enable karta hai).
SC.W (Store-Conditional) atomicity kaise ensure karta hai?
Ye tab succeed karta hai jab LR.W ki reservation abhi valid ho. Success pe 0 return karta hai, failure pe 1. Agar doosra core address pe write kare, reservation break ho jaati hai aur SC.W fail karta hai, retry force karta hai.
F aur D extensions mein kya fark hai?
F 32-bit (single-precision) floating-point add karta hai; D 64-bit (double-precision) add karta hai. D ke liye wider register files chahiye (64-bit f0–f31) aur scientific computing ke liye zaroori hai jahan 23-bit mantissa (F) ki precision kaafi nahi hoti.
IEEE 754 exponent single ke liye 127 ya double ke liye 1023 se biased kyun hai?
Exponents ki unsigned integer comparison allow karne ke liye. Bias ke saath, bada exponent → bada biased value, signed comparison logic avoid karta hai. Bias = 2^(e-1) - 1 range ko symmetrically center karta hai.
V extension mein vsetvli kya karta hai?
"Vector set length immediate": vl (vector length) ko min(requested, max_elements) set karta hai. Hardware ka chosen actual vl return karta hai. Ye strip-mining loops enable karta hai jo un arrays handle karte hain jo vector width se evenly divisible nahi hain.
RISC-V ka V extension AVX-512 jaisi fixed ki jagah variable-length kyun hai?
Portability. Fixed-length sab implementations ko same register size rakhne pe majboor karta hai (chhoti chips ke liye mehenga). Variable-length (VLEN) ek phone chip ko 128-bit vectors aur ek server ko 2048-bit vectors use karne deta hai same software ke saath.
C extension se space savings kitni hai?
~25% code size reduction. Common instructions (stack operations, chhote immediates, frequent registers) 32 bits se 16 bits mein compress ho jaate hain. Sab instructions compress nahi hote, isliye 50% ki jagah 25%.
C extension 16-bit aur 32-bit instructions mein fark kaise karta hai?
Bits [1:0] se. C instructions [1:0] ≠ 11 rakhte hain (00, 01, 10). Standard 32-bit instructions hamesha [1:0] = 11 rakhte hain. Hardware in bits check karke decode karta hai.
"RV64GC" ka matlab kya hai?
RV64 (64-bit base) + G (general = IMAFD = Integer + Multiply + Atomics + single-Float + Double) + C (Compressed). Ye ek full-featured ISA ke liye common shorthand hai.
C extension sab instructions compress kyun nahi kar sakta?
Encoding space ki wajah se. 16 bits mein teen 5-bit register addresses (15 bits) plus opcode nahi aa sakta. Solution: sirf common patterns compress karo (sp-relative, a0–a7 arguments) ya x8–x15 ke liye 3-bit fields use karo (8 registers).
A extension mein AMOADD.W ka kya purpose hai?
Ek instruction mein atomic read-modify-write: mem[rs1] read karo, rs2 add karo, write back karo, old value return karo. Common atomic operations ke liye LR/SC loop (4 instructions) se faster hai.
V extension ko "strip-mining" loop kyun chahiye?
Kyunki array sizes hamesha vector width ke multiples nahi hoti. Strip-mining har iteration mein min(vl, remaining_elements) process karta hai, last iteration mein "tail" naturally handle karta hai jahan vl < max_elements hota hai.
MULH vs MUL kab use karein?
Arbitrary-precision arithmetic ke liye dono use karo. MUL lower 32 bits deta hai, MULH upper 32 bits deta hai. Mila ke, ye BigInt multiplication ya overflow detection ke liye poora 64-bit product banate hain.

Concept Map

minimal, boots software

optional independently added

32x32 gives 64-bit

sign handling

needs hardware

read-modify-write

RV32I RV64I base ISA

Modular Extensions

Cost matches application needs

M Extension multiply divide

A Extension atomic ops

F Extension single-float

D Extension double-float

V Extension vector

C Extension compressed

MUL lower / MULH upper

MULH MULHU MULHSU

Wallace trees Booth encoders

LR SC AMO instructions