CPU และ Register แบบค่ตเร็วติด speed
เกริ่นเล็กน้อยก่อน go
พอดีว่าผมอยากที่ deep drive ลงไปในเรื่อง fundamental ของ computer architecture เลยอยากจะเขียนเรื่องนี้ขึ้นมาเพื่อเป็นโน้ตของตัวเองอาจจะมีผิดพลาดบ้างก็ขออภัยไว้ ณ ที่นี้ด้วยนะครับ 🙏
Mental Model
โอเคก่อนอื่นเลยอยากให้ทุกคนให้มองว่า cpu คือเชฟในห้องครัวขนาดเล็ก แล้วครัวเนี่ยก็มีห้องเก็บของขนาดใหญ่ (Ram) ที่จะเก็บวัตถุดิบทั้งหมด แต่ว่าเชฟเนี่ยจะทำงานเฉพาะของที่วางไว้บน counter ครัวเท่านั้น โดย counter ครัวก็คือ Register นั้นเอง counter เนี่ยวางของได้ประมาณ 16 ชิ้น (16 general-purpose registers) โดยทุกอย่างที่เชฟทำไม่ว่าจะเป็น หั่น, ผสม, ผัดของ เกิดขึ้นบน counter การที่ไปหยิบของจากห้องเก็บของเนี่ยมันใช้เวลา แต่ถ้าทำบน counter เลยก็สามารถทำได้ทันที

How it actually work
The CPU Execution Cycle โดยที่ cpu จะทำ loop นี้ตลอด:
Fetch -> Decode -> Execute -> Writeback- Fetch — อ่าน instruction ถัดไปจาก memory (ผ่าน Program Counter register)
- Decode — แปลว่า instruction นั้นหมายความว่าอะไร
- Execute — ALU (Arithmetic Logic Unit) คำนวณ
- Writeback — เขียนผลลัพธ์กลับลง register หรือ memory
แล้ว register คืออะไร?
Register คือ ตำแหน่งเก็บข้อมูลที่เร็วที่สุดในคอมพิวเตอร์ อยู่บนชิป CPU โดยตรง
| Level | Speed | Size |
|---|---|---|
| Register | ~0.3 ns | 8-64 bits |
| L1 Cache | ~ 1 ns | 32–64 KB |
| L2 Cache | ~5 ns | 256 KB–1 MB |
| L3 Cache | ~20 ns | 4–64 MB |
| RAM | ~ 100 ns | GB |
Register สำคัญใน x86-64:
rax — ค่าที่ return จาก function
rbx — general purpose
rcx — loop counter
rdx — data / บางครั้ง I/O
rsp — Stack Pointer (ชี้ top ของ stack)
rbp — Base Pointer (ชี้ stack frame)
rip — Instruction Pointer (ชี้ instruction ถัดไป)
rsi, rdi — argument ตัวที่ 1, 2 ของ function