NM
← blog

CPU และ Register แบบค่ตเร็วติด speed

·2 min read·thaicomputer architecture

เกริ่นเล็กน้อยก่อน go

พอดีว่าผมอยากที่ deep drive ลงไปในเรื่อง fundamental ของ computer architecture เลยอยากจะเขียนเรื่องนี้ขึ้นมาเพื่อเป็นโน้ตของตัวเองอาจจะมีผิดพลาดบ้างก็ขออภัยไว้ ณ ที่นี้ด้วยนะครับ 🙏

Mental Model

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

Chef meme

How it actually work

The CPU Execution Cycle โดยที่ cpu จะทำ loop นี้ตลอด:

bash
Fetch -> Decode -> Execute -> Writeback
  • Fetch — อ่าน instruction ถัดไปจาก memory (ผ่าน Program Counter register)
  • Decode — แปลว่า instruction นั้นหมายความว่าอะไร
  • Execute — ALU (Arithmetic Logic Unit) คำนวณ
  • Writeback — เขียนผลลัพธ์กลับลง register หรือ memory

แล้ว register คืออะไร?

Register คือ ตำแหน่งเก็บข้อมูลที่เร็วที่สุดในคอมพิวเตอร์ อยู่บนชิป CPU โดยตรง

LevelSpeedSize
Register~0.3 ns8-64 bits
L1 Cache~ 1 ns32–64 KB
L2 Cache~5 ns256 KB–1 MB
L3 Cache~20 ns4–64 MB
RAM~ 100 nsGB

Register สำคัญใน x86-64:

text
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