מעבד

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
מעבד 80486 של אינטל בתוך המארז שלו - ממדי פיסת הסיליקון שבמרכז הם 6.75x12 מילימטר

מעבד, או בשמו המלא יחידת עיבוד מרכזיתאנגלית: CPU - Central Processing Unit), הוא רכיב חומרה במחשב המבצע את הפקודות המאוחסנות בזיכרון המחשב. המעבדים המודרניים (המכונים גם מיקרו-מעבדים) בנויים על גבי שבב בודד.

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

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

מבחינה מספרית, הרוב המכריע של המעבדים המיוצרים כיום, משמשים כיחידות בקרה של מוצרי צריכה. חלק ממוצרים אלו הם ציוד הקפי של מחשבים אישיים (כגון: צגים, מדפסות, כרטיסי רשת) ואחרים אינם (מכוניות, מכונות כביסה, טלפונים סלולריים). המעבדים הללו מיועדים לשימושים ייעודיים, למשל - עיבוד אות ספרתי (DSP), מיקרו-בקר, עיבוד רשתות תקשורת (Network Processing), או עיבוד גרפי.

רקע היסטורי[עריכת קוד מקור | עריכה]

מעבד אתלון של חברת AMD בתוך התושבת שלו, על לוח האם

בשנות ה-50 וה-60 המחשבים היו עצומים בנפחם, יקרים ונדירים. כאשר הופיעו המעגלים המוכללים, המאפשרים מזעור טרנזיסטורים רבים על גבי "שבב" יחיד, הם תרמו להקטנת הנפח והוזילו בהדרגה את מחירי המחשב. כך נוצר בסוף שנות ה-60 סוג חדש של מחשב, המיני מחשב, שהורכב יותר ויותר ממעגלים מוכללים. עדיין, יחידת עיבוד מרכזית כללה מספר רב של רכיבים שונים. נקודת המפנה הבאה הייתה דחיסת יחידת עיבוד מרכזית שלמה על גבי מעגל מוכלל, שבב, יחיד. בראשית כונתה יחידה כזו מיקרו-מעבד ואילו כיום מסתפקים במונח מעבד.

המיקרו-מעבד הראשון היה ה-4004 שפותח בשנת 1971 על ידי חברת אינטל, שעסקה עד אז בפיתוח ויצור שבבי זיכרון. במקור פותח ה־4004 עבור מחשבי כיס של חברת Busicom היפנית. לעומת השבבים הייעודיים שקדמו לו הוא תוכנן כיחידת עיבוד רב תכליתית ורק התוכנה שסופקה לו ייעדה אותו למשימה הנדרשת (מעבד של מחשב כיס). יכולת החישוב של ה-4004 הייתה מוגבלת למדי והוא התבסס על פעולות של ארבע סיביות בלבד. אך מה שמנע ממנו להפוך לליבה נפוצה למחשבים רב-תכלתיים היה בעיקר הצורך ברכיבים רבים יחסית בנוסף אליו כדי להתחבר לזיכרון, רכיבי קלט/פלט וכו'.

ה-8008 שפותח בשנת 1972 הרחיב את יכולת המעבד לעבודה על שמונה סיביות אך עדיין היה במארז קטן של 18 פינים בלבד שלא איפשרו חיבור ישיר לרכיבי זיכרון חיצוני. בשנת 1974 פיתחה אינטל גרסה משוכללת יותר, ה־8080 במארז של 40 פינים. החיבור שלו לזיכרון חיצוני היה פשוט יחסית עובדה שהפכה אותו להצלחה וליחידת העיבוד המרכזית של המיקרו מחשבים הראשונים.

בעקבות ה-8080 פותחו מספר מעבדים מתחרים כגון Z80 של חברת זילוג (שהוקמה על ידי אחד המהנדסים שהיה אחראי על פיתוח ה־4004 באינטל, והיה תואם ל-8080, כלומר יכול לבצע קוד של 8080 ללא שינוי), ה-6800 של חברת מוטורולה וה־6502 של חברת MOS Technology, שהיו פופולריים במיקרו מחשבים, כולל במחשבים ביתיים, החל מאמצע שנות ה-70 של המאה ה-20.

בשנת 1981 בחרה חברת IBM ב־8086 של אינטל, יורשו של ה־8080 שהרחיב את יכולת העיבוד ל-16 סיביות, בתור יחידת העיבוד המרכזית עבוד המחשב האישי שלה והפכה בכך את משפחת ה־x86 של אינטל למעבדים הפופולריים ביותר. מעט מאוחר יותר, בשנת 1984, בחרה חברת אפל במעבד מתחרה, ה־68000 של חברת מוטורולה עבור מחשבי המקינטוש, מעבד זה היה הראשון במשפחת מעבדים, ביניהם 68020, 68030 ו-68040 שהופיעו בשנים הבאות. סדרת מעבדים זו של מוטורולה הפכה לשנייה בתפוצתה אחרי המעבדים של אינטל, עד שהוחלפה בשנת 1991 במעבד ה־PowerPC שפותח במשותף על ידי מוטורולה, IBM ואפל.

בשנות ה-80 ושנות ה-90 של המאה העשרים הופיעו מעבדים חדשים רבים מחברות שונות. ביניהם MIPS של חברת MIPS Technologies, ‏ SPARC של חברת Sun Microsystems (היום אורקל), Alpha של חברת DEC (היום HP), ועוד מעבדים רבים, כולל משפחות מעבדים של אינטל ומוטורולה בארכיטקטורות שונות מ-x86 או מ-68K.

פעולת ומבנה המעבד[עריכת קוד מקור | עריכה]

כל מעבד מורכב ממספר יחידות המבצעות פעולות שונות. במעבדים מודרניים המבוססים על שיטת צינור עיבוד נתונים (Pipeline), כל אחת מיחידות אלו פועלת בנפרד.

לצורך ביצוע פקודה בודדת המעבדים משתמשים באחד מהסטים של הפעולות הבאות (תלוי במעבד):

אפשרות א':

  • Fetch - חישוב כתובת הפקודה הבאה לביצוע, וקריאת הפקודה הבאה לביצוע מהזיכרון.
  • Decode - פיענוח הפקודה, והבאת ערכי הרגיסטרים בהם הפקודה משתמשת.
  • Execute - ביצוע הפעולה האריתמטית/לוגית שהפקודה דורשת באמצעות ה-ALU. במקרה שהפקודה היא פקודת חישוב, כאן מתבצע החישוב. במקרה והפקודה היא פעולת קריאה/כתיבה בזיכרון, כאן מחושבת הכתובת של הנתון בזיכרון. במקרה של פקודת הסתעפות (Branch/Jump), כאן מחושב קיום התנאי להסתעפות, ומתבצעת ההחלטה האם להסתעף, או לא.
  • Memory - קריאה/כתיבה של נתון בזיכרון, במקרה של פקודת קריאה/כתיבה בזיכרון.
  • Write Back - כתיבת תוצאת החישוב משלב ה-Execute או תוצאת הקריאה משלב ה-Memory אל רגיסטר היעד.

אפשרות ב':

  • חישוב הכתובת בה נמצאת הפקודה הבאה
  • קריאת הפקודה הבאה לביצוע מהזיכרון
  • פיענוח הפקודה: בשלב זה המעבד מפענח מהי הפקודה שצריכה להתבצע, איזו יחידת ביצוע להפעיל ואילו משתנים מעורבים. במעבדים בעלי ארכיטקטורת CISC, פקודת אסמבלי בודדת עשויה להפוך בשלב הפיענוח למספר פקודות פנימיות של המעבד.
  • חישוב: בשלב זה קוראים ערכים מהזיכרון במידה וצריך (במעבדים מסוימים הקריאה מהזיכרון נחשבת לשלב נפרד), ובהתאם לסוג הפעולה מופעלת יחידת החישוב המתאימה של המעבד לביצוע הפעולות האריתמטיות והלוגיות הרלוונטיות.
  • כתיבה חזרה לזיכרון: הערך המחושב נכתב למקום אחסון התוצאה.

יחידות המרכיבות את המעבד[עריכת קוד מקור | עריכה]

במיקרו-מעבד כל היחידות השונות יושבות על אותו השבב, והחלוקה ליחידות קיימת רק בשלב התכנון. החלוקה ושמות היחידות שונות במעט ממעבד אחד למשנהו, אבל מעבדים מודרניים מורכבים בדרך-כלל מהיחידות הבאות:

יחידות הקיימות בכל מעבד[עריכת קוד מקור | עריכה]

  • אוגרים (Registers או "רגיסטרים"): כל אוגר הוא יחידה אחת של זיכרון פנימי מהיר ביותר הנמצא לרוב בתוך יחידת העיבוד המרכזית של מחשב אשר מאפשר אחסון ערכים, בדרך כלל זמנית, עבור פעולות בסיסיות שונות מסט הפקודות של המעבד (חיבור, חיסור, והשוואה). יש מעבדים בהם האוגרים הם ייעודיים, כלומר פעולות מסוימות מוגבלות לאוגר או אוגרים מסוימים, ולעומתם מעבדים אחרים (בדרך כלל מסוג RISC) בהם לכל האוגרים פונקציונליות זהה.
  • יחידת בקרה: יחידה האחראית על שלבי הקריאה והפיענוח של פקודות.
  • יחידה אריתמטית-לוגית (ALU): יחידה זו מבצעת פעולות במספרים שלמים (חיבור, חיסור, השוואה) ופעולות לוגיות שונות (כדוגמת שער לוגי NAND, NOR, NOT, וכדומה). היחידה נחשבת ללב המעבד, ויעילותה היא החשובה ביותר בביצועי המעבד כולו[דרוש מקור].

יחידות נפוצות הקיימות במעבדים מסוימים אך לא בהכרח בכל המעבדים[עריכת קוד מקור | עריכה]

  • זיכרון מטמון: זיכרון מהיר במיוחד, המותקן על המעבד. יש מעבדים בהם זיכרון המטמון מוגבל לפקודות בלבד, אחרים בהם המטמון משותף לפקודות ונתונים, ואחרים בהם יש מטמונות נפרדים לקוד ולנתונים. נהוג לסווג את זיכרון המטמון הבנוי על שבב המעבד לשלושה סוגים. יש מעבדים ללא מטמון, או עם חלק אך לא כל סוגי המטמון המתוארים:
    • L0: המטמון המהיר ביותר, אך גם המוגבל ביותר בגדלו. בדרך כלל פועל בקצב השעון של המעבד עצמו.
    • L1: מטמון פחות מהיר וגדול יותר מ-L0
    • L2: מטמון מהיר פחות וגדול יותר מ-L1. בשבבים מרובי מעבדים, לפעמים מטמון L2 משותף למספר מעבדים.
  • יחידת ניבוי קפיצות: בשפת האסמבלי ישנן פקודות קפיצה המורות למעבד לעבור לביצוע פקודה בכתובת מסוימת שאינה בהכרח הכתובת הבאה בזיכרון. פקודות קפיצה אלו הן ברובן מותנות, כלומר: הקפיצה תבוצע רק אם תנאי מסוים יתקיים. כדי שניתן יהיה לקרוא ולפענח את הפקודה הבאה לפני שידוע אם התנאי אכן מתקיים או לא, המעבד מנסה לנחש האם הקפיצה תבוצע.
  • יחידת נקודה צפה (FPU): יחידה זו מבצעת פעולות במספרים ממשיים. במעבדים ישנים (לדוגמה 80386), לא הייתה במעבד יחידה כזו והיה צורך בשבב חיצוני שיבצע את הפעולות במספרים ממשיים. כיום זהו חלק אינטגרלי מהמעבד עצמו.
  • בקר אפיק נתונים: אפיק הנתונים (bus) הוא האמצעי המקשר בין המעבד לבין הזיכרון וההתקנים החיצוניים במחשב. לצורך סינכרון התקשורת באפיק הנתונים יש צורך בבקר (controller) שתפקידו לווסת ולפקח על התעבורה באפיק. בעבר גם יחידה זו הייתה בשבב נפרד וכיום זהו חלק מהמעבד עצמו. יחידה זו הייתה צוואר הבקבוק של המעבד, בגלל שהקריאה והכתיבה לזיכרון היו נמוכים באופן משמעותי ממהירות המעבד עצמו, והוא היה צריך להמתין מחזורי שעון על מנת לבצע את הקריאה. עם ההתקדמות הועלתה מהירותו ובמעבדי פנטיום 4 החדישים היא עומדת על 1066 מגה-הרץ. שהיא כשליש ממהירות המעבד עצמו. תפקידו של זיכרון מטמון L2 הוא לגשר על הפער בין מהירות המעבד למהירות הערוץ.

מושגים בסיסיים במיקרו-מעבדים[עריכת קוד מקור | עריכה]

  • מהירות שעון או תדר עבודה: בכל מעבד ישנו מתנד היוצר אות שעון. אות זה מווסת את קצב פעולת המעבד. ככלל, ככל שמהירות השעון גבוהה יותר כך המעבד מהיר יותר, אם כי אין זה הפרמטר היחיד הקובע את מהירות המעבד. במחשב IBM-PC הראשון היה מעבד 8086 הייתה מהירות שעון של 4.77MHz, כלומר 4.77 מיליון מחזורים לשנייה. במעבדי "פנטיום 4" שנמכרו בשנת 2004 מהירות שעון של עד 3.8GHz, כלומר 3.8 מיליארד מחזורים לשנייה (אבל אין פקודה בודדת שמתבצעת בקצב הזה).
  • צינור עיבוד נתונים (Pipeline): שיטת פעולה של מעבד בה מחולקת העבודה למספר שלבים המבוצעים במקביל. לדוגמה: בזמן שתוצאות הוראה אחת נכתבות לזיכרון, ההוראה הבאה מתבצעת, וההוראה הבאה אחריה כבר מפוענחת. מעבד ה-8086 לא היה בנוי בשיטת צינור עיבוד נתונים ולכן היה צריך לחכות שהוראה תתבצע עד תומה לפני שהמעבד התחיל לבצע את ההוראה הבאה. מסיבה זו במעבד זה לכל הוראה לקח משך זמן של 3-4 מחזורי שעון כדי להתבצע. ככל שהעבודה מחולקת לחלקים קטנים יותר כך ניתן להפעיל את המעבד בתדר גבוה יותר, אלא שיש לכך מחיר: במעבד בעל צינור עבודה ארוך במיוחד, אם התבצעה טעות בשלב מוקדם (לדוגמה, יחידת הניבוי ביצעה ניחוש מוטעה לגבי הכתובת של ההוראה הבאה) ייקח זמן רב יותר להתאושש מהטעות.
  • סופר-סקלאר: מעבד המכיל מספר יחידות המסוגלות לבצע פעולות שונות השייכות לאותו שלב בצינור הביצוע במקביל. לדוגמה, מעבד עשוי להכיל יחידה אחת עבור פעולת החילוק ויחידה נפרדת עבור פעולת הכפל, וכך ניתן לבצע את פעולת הכפל של ההוראה הבאה לפני שפעולת החילוק הסתיימה.
  • Out of order machine: מעבדים מודרניים סופר-סקלאריים מסוגלים לשנות את סדר ביצוע הפעולות כדי להפעיל כמה יחידות חישוב במקביל וליעל את קצב העבודה של המחשב. הרעיון הוא שכאשר פקודה מסוימת מחכה לתוצאות של חישובים שטרם הסתיימו, ניתן לבצע בינתיים את הפעולות הבאות אחריה, כל עוד פעולות אלו אינן תלויות בחישובים שטרם הסתיימו.
  • פעולות למחזור שעון (instructions per cycle): מרכיב נוסף המשפיע על מהירות המעבד בנוסף למהירות השעון שלו הוא מספר הפעולות שהמעבד מסוגל לבצע במחזור שעון. מעבד ה-8086 לדוגמה היה מסוגל לבצע פעולה בארבעה מחזורי שעון. מעבדים מודרניים כגון "פנטיום 4", "אתלון" של חברת AMD ו-PowerPC של IBM ו"מוטורולה" מסוגלים לבצע יותר מאשר פעולה אחת בכל מחזור של השעון.
  • CISC לעומת RISC: המעבדים הראשונים תוכננו לפני המצאת צינור עיבוד הנתונים ולכן שפת הסף שלהם איפשרה ביצוע פעולות מורכבות יחסית שאינן יכולות להתחלק באופן יעיל לחלקים קטנים יותר. מעבדים אלו כונו מעבדי CISC (ר"ת של Complex Instruction Set Computer). עם המצאת השיטה של צינור עיבוד הנתונים, פותחו מעבדים חדשים עם שפה שהותאמה במיוחד לשיטה זו. שפת המכונה של מעבדים אלו הכילה פקודות פשוטות יותר אותן קל לחלק לשלבים, ולכן כונו RISC (ר"ת של Reduced Instruction Set Computer). אף על פי שמעבדי RISC נחשבו ליעילים יותר, מעבדי "אינטל" ותואמיהם (כולל המעבדים של AMD) המשיכו לעבוד בשיטת ה-CISC כדי לשמור על תאימות לשפת המכונה של המעבדים הקודמים. לעומתם, ה-PowerPC המשמש במחשבי המקינטוש הוא מעבד RISC. עם זאת, עם הזמן הצטמצם הפער בביצועים בין CISC ל-RISC, כאשר מעבדי CISC מודרניים כגון "פנטיום-4" ו"אתלון" מתרגמים כל פקודה בשפת המכונה המורכבת שלהם לשפת RISC פנימית.

תהליך יצור המעבד[עריכת קוד מקור | עריכה]

המעבדים, כמו כל המעגלים המשולבים, מיוצרים בתהליך המייצר שכבות שונות של "מזהמים" (חומרים זרים בריכוז נמוך) ב"תמונה" מוגדרת מראש, בתוך פרוסה של חומר מוליך למחצה (לרוב סיליקון), וכמו כן "תוספות" של חומרים נוספים (למשל מוליכים) על פני הפרוסה. את התמונה משליכם על הפרוסה בתהליך המכונה פוטוליתוגרפיה, במהלכו נסרקת התבנית של המעגל באמצעות קרן לייזר באורך גל מסוים ומועתקת אל שכבה דקה של מוליך למחצה, כגון סיליקון. מפאת גודלם הזעיר של הרכיבים, כל גרגיר אבק קטנטן עלול לקלקל את הרכיב, ולכן מייצרים את המעבדים באזורים מיוחדים הנקראים חדרים נקיים, שבהם רמת החלקיקים באוויר נמוכה פי 1,000 מחדר ניתוח והטכנאים לבושים בחליפות מיוחדות המכונות בעגה Bunny-Suits. בתהליך זה מדפיסים מספר רב של מעבדים על פרוסת סיליקון, אותה חותכים למעבדים רבים בסיום התהליך.

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

עובי ההדפסה של קווי המתאר של מוליכי המעבד קטן משנה לשנה, על מנת שיהיה אפשר לחסוך בהספק, להעלות את מהירות השעון של המעבד ולבנות מעבדים מורכבים יותר על ידי הגדלת מספר הרכיבים או לחלופין להגדיל את מספר המעבדים מפרוסה אחת, דבר המביא לרווחים גדולים יותר. באמצע 2004 רוחב תעלת הטרנזיסטורים של המעבד עמד במעבדי אינטל החדשים על 90nm (ננומטר). ביולי 2005 יוצרו מעבדי אינטל בטכנולוגיה של עד 65nm, חברת AMD התחילה לעבור לטכנולוגיה זו בסוף 2006. בתחילת שנת 2008 החלה "אינטל" לייצר בטכנולוגיית 45nm ובאמצע 2008 גם AMD החלה באותה שיטת יצור. בשנת 2010 חברת Intel החלה לשווק מעבדים שיוצרו בטכנולוגיית 32nm.

מעבד מרובה ליבות[עריכת קוד מקור | עריכה]

מעבד דו ליבתי של חברת AMD

בעשור הראשון של המאה ה-21, לאחר שהתברר כי קיימת בעיה פיזיקלית להאיץ את מהירות המעבד, מעבר למה שהושג, התחילה מגמה ליצירת מספר מעבדים על שבב אחד. שבב זה בנוי ממספר מעבדים (בתצורה כזו, המעבדים נקראים לפעמים גם "ליבות") ולעתים משתפים משאבים כגון זיכרון מטמון. מעבדים אלו פועלים במקביל, ומעצימים את היכולות החישובית של המחשב שמשתמש בהם, תוך שימוש בטכניקות של עיבוד מקבילי.

מעבדים מרובי ליבות אינם יכולים להריץ מספר תהליכים, הקשורים לאותו יישום, במקביל בליבות שונות, ללא תכנון מראש על ידי המתכנת. הם כן יכולים לעבוד על שני יישומים במקביל על ידי הפרדת תהליכי הזיכרון שלהם, דבר המסייע בעיקר לתהליכים במחשב שאינם זקוקים לתהליכים נוספים (אשר מורכבים ומתעכבים) וחוסך את זמן ההמתנה לתהליך שמתעכב, ובכך מתקבל ליישום זמן תגובה טובה טוב יותר. רוב היישומים הקיימים כיום אינם מנצלים עדיין יתרון זה, אך מערכות ההפעלה המודרניות דוגמת לינוקס, חלונות ומקינטוש מנצלות ריבוי ליבות כדי להריץ מספר יישומים במקביל. בהיעדר ריבוי ליבות, נאלצות מערכות ההפעלה לחלק את זמן המעבד בין כל היישומים, כדי לתת למשתמש תחושה של פעולה במקביל.

מגמה זו של ריבוי ליבות החלה בעשור הראשון של המאה ה-21, הדבר גרם להגדלת כוח המחשוב ולחלוקת נטל המחשוב למספר מוקדים במקביל. בתחילה נוצרו מעבדים עם שתי ליבות. ביוני 2005 הכריזה חברת AMD על מעבדי 64 ביט כפולי ליבה למחשבים שולחניים. באוקטובר 2005 הכריזה חברת "אינטל" על מעבדים דו-ליבתיים לשרתים. עם שיווק ה"פלייסטיישן 3" של חברת "סוני" בנובמבר 2006, חדרה מגמה זו לשוק קונסולות המשחקים, עם מעבד שמונה ליבות עוצמתי של חברת "IBM" שהותקן בקונסולה זו. בתחילת 2008 התפשטה מגמה זו גם למעבדים זעירים למחשבי כף יד וטלפונים סלולריים, כאשר "אינטל" הכריזה על מעבד "Atom". ברבע הראשון של שנת 2008 כבר ניתן היה לרכוש מחשבים אישיים שמותקנים עליהם מעבדים מרובעי ליבות, כאשר כיום מעבד בעל 4 ליבות הפך לסטנדרט וניתן לרכוש גם מעבדים משושי ואף מתומני ליבות.

חברות לייצור מעבדים[עריכת קוד מקור | עריכה]

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

  • Simple-086, פרויקט קוד פתוח של תכנון מעבד ב- Verilog המסביר על מבנה המעבד.