Carmi Merimovich

כרמי מרימוביץ

אתר אישי

מה עושה המעבד?

במושגי תוכנה המעבד נמצא בלולאה אינסופית של ביצוע פקודות. לפקודות אלו קוראים פקודות מכונה. יש מעבדים עם פקודות מכונה באורך קבוע. לדוגמא, במעבדי risc-v אורך פקודה הוא תמיד ארבעה בתים. לעומת זאת במעבדי x86 פקודות יכולות להיות באורך של בית אחד ועד 15 בתים. הפקודות נמצאות בזכרון העבודה.

איך המעבד יודע מאיפה לשלוף פקודה? מוקצה לכך אוגר. בדרך כלל הוא נקרא pc (ראשי תיבות של program counter). אבל שמות כמו ip (ראשי תיבות של instruction pointer) בהחלט קיימים.

להלן המבנה במעבדי risc-v.

for (;;) {
   ir ← mem[pc] // fetch bytes 4 at address pc
   Decode instruction
   Execute instruction
   pc ← pc + 4 // Usually!
}

יש לשים לב שב-riscv קידום ה-pc לפקודה העוקבת נעשה לאחר ביצוע הפקודה. כלומר, במהלך ביצוע פקודה המספר ב-pc הוא כתובת הפקודה המבצעת.

ברוב המעבדים בני ימינו ה-pc מקודם ישר לאחר שליפת הפקודה מהזיכרון ולכן במהלך ביצוע פקודה המספר ב-pc הוא כתובת הפקודה העוקבת לפקודה המתבצעת. כך הדבר, לדוגמא במעבדי x86.

for (;;) {
   ir ← mem[ip] // fetch bytes len at address ip
   ip ← ip + len
   Decode instruction
   Execute instruction
}

כדאי לשים לב לעובדה הבאה. כיון שהמעבד מבצע פקודות תמיד, אזי כשהוא מתחיל לעבוד צריך להיות בזיכרון בכתובת שמופיעה ב-pc פקודת מכונה. מין הסתם צריכה להיות שם תוכנית שלמה.

לכן בכל מחשב שהוא יש תמיד איזשהו סוג של זכרון עבודה לא נדיף (לדוגמא rom) שיכיל את התוכנית הראשונה שרצה על המחשב.