CDC 6600
תיאור > המעבד המרכזי

פרק זה לוקה בחסר. אנא תרמו לוויקיפדיה ו.  חסרים: משלים ל-1, אוגרים, מרחב כתובות של 24 סיביות, מיעון.
המעבד המרכזי בנוי בארכיטקטורת RISC, עם רוחב מילה של 60 סיביות. הוא מכיל 10 יחידות עיבוד עצמאיות שאחראיות על פעולות כמו כפל נקודה צפה (שתי יחידות), חיבור וחילוק נקודה צפה (יחידה אחת לכל פעולה), ובדומה יחידות לפעולות במספרים שלמים ופעולות לוגיות. אין לו גישה לעולם החיצון, כלומר לקלט ופלט, אלא לזיכרון המחשב בלבד. הוא נשלט על ידי אחד המעבדים ההיקפיים, מספר 0.
דגם חלש יותר של המעבד המרכזי, עם יחידת עיבוד יחידה, הוצג מאוחר יותר, ב-CDC-6400 (בדגמים נוספים שני מעבדים "חלשים" או מעבד "חלש" ומעבד "חזק").
יחידות העיבוד העצמאיות מאפשרות לתוכנה שנכתבת היטב לגרום למספר פעולות להתבצע במקביל: ניתן להתחיל פעולת חיבור או כפל נוספת אחרי פעולת כפל, בלי להמתין לסיום הפעולה הראשונה, בתנאי שתוצאת הפעולה אינה אחד האופרנדים בפעולות הבאות. בפעולות מסוימות יכולת זו מכפילה או משלשת את עצמתו החישובית של המחשב.
היעד העיקרי של המחשב הוא ביצוע מהיר של פעולות על מספרים המבוטאים בייצוג נקודה צפה, ובהתאם היחידות:
מכפלה בנקודה צפה - שתי יחידות, 10 מחזורי שעון
חילוק נקודה צפה - 19 מחזורי שעון
חיבור נקודה צפה
חיבור שלמים (60 סיביות), מבוטאים בשיטת משלים ל-1
הוספת 1 (increment), התוצאה נשמרת באוגר ומועתקת לזיכרון
Shift
פעולות לוגיות
קפיצה מותנית
באופן תאורטי, כשהתכנה מצליחה לנצל את כל יחידות העיבוד, המחשב מבצע 3 מיליון FLOPS (או 3 MFLOPS). מעשית, תוכניות פורטרן הפיקו מהמחשב באופן עקבי 0.5 MFLOPS, בעזרת מהדרים שהגיעו בהמשך, ובתכנות זהיר בשפת סף ניתן להפיק ביצועים גבוהים מעט יותר.
פרק זה לוקה בחסר. אנא תרמו לוויקיפדיה ו.
סט הפקודות
פקודות המחשב הן בנות 15 או 30 סיביות. כל מילה יכולה להכיל עד ארבע פקודות, עם מספר מגבלות: פקודה של 30 סיביות חייבת לשכון במילה אחת, ופקודה שמהווה יעד של קפיצה, מותנית או לא מותנית, חייבת להופיע בתחילת המילה.
מילת הפקודה בנויה מהפקודה עצמה, שתופסת 6 סיביות, ואחריה עד שלושה אופרנדים בני שלוש סיביות, כשכל אופרנד מצביע על אחד האוגרים בפקודה באורך 15, או שני אופרנדים של אוגרים, ואופרנד אחד באורך 18 סיביות המציין כתובת, בפקודה באורך 30. בסט הפקודות 64 פקודות שונות, כולל NOP, כשחלק גדול יחסית מהן מכוון לפעולות נקודה צפה.
גישת המעבד הראשי לזיכרון היא יחסית, ומממשת רמת הגנה, שמאפשרת טעינת והרצת מספר תוכניות של משתמשים שונים, שלכל אחת מהן מוקצה מרחב זיכרון פרטי שלתוכניות המשתמשים האחרים אין גישה אליו. שני אוגרים ייעודיים מחזיקים את "כתובת הבסיס" וגודל הזיכרון ששייכים לתוכנית שרצה כעת. בכל גישה לזיכרון מושווית הכתובת ל"תקרה", ואם היא גבוהה ממנה, התוכנית נעצרת עם שגיאה.
מלבד פקודות, המעבד מזהה עוד שלושה סוגי נתונים, שכולם מורכבים ממילה אחת של 60 סיביות: מספר נקודה צפה, מספר שלם ארוך (המעבד יכול לעבוד עם שלמים באורך עד 48 סיביות), בשיטת משלים ל-1, או עד עשרה תווים בקידוד קנייני של CDC, כשכל תו תופס שש סיביות.
מרחב הזיכרון הוא בן 24 סיביות, אך חומרת החשב לא תומכת במלואו.
למעבד שמונה אוגרים בני 60 סיביות, המכונים X0 עד X7, ו-16 אוגרים המשמשים לכתובות, בני 24 סיביות, בשתי קבוצות: אוגרים A0 עד A7 מכונים "כתובת", ו-B0 עד B7 מכונים "increment". לחלק מאוגרי הכתובת תפקיד מיוחד: כתיבה לכתובת A1 עד A5 גורמת כתוצאת לוואי לקריאת תוכן הכתובת לאוגרים X1 עד X5 בהתאמה, וכתיבה ל-A6 או A7 גורמת לכתיבת תוכן X6 או X7 לכתובת המתאימה בזיכרון. ל-A0 אין תפקיד דומה, והקונוונציה היא שבאוגר X0 נשמר תמיד ערך 0.
מנקודת הראות של המעבד הראשי, הזיכרון הוא "יחסי": שני אוגרים מיוחדים מסמנים את כתובת הייחוס, וגודל הזיכרון המוקצה לתהליך. כל גישה לזיכרון היא יחסית לכתובת הייחוס (כלומר גישה לכתובת 0 משמעה למעשה גישה לכתובת הייחוס, וגישה לכתובת 1 משמעה הכתובת הבאה אחרי כתובת הייחוס). בכל גישה לזיכרון מושווית הכתובת היחסית לגודל הזיכרון המוקצה, ואם היא גדולה ממנו, כלומר התהליך ניסה לגשת לכתובת מחוץ ל"בלוק" שהוקצה לו, נוצרת שגיאה והתהליך נעצר. כך ניתן להחזיק מספר תהליכים "חיים", וכאשר בתהליך מסוים המעבד הראשי ממתין לפעולת קלט פלט ארוכה שמבוצעת על ידי מעבד היקפי, ניתן להעביר אותו לביצוע תהליך אחר, שלא זקוק לקלט/פלט, תוך שמירת התהליך הראשון חי ומוגן. בכך נשמר ניצול מרבי של משאבי המחשב.
כל הפעולות האריתמטיות והלוגיות מבוצעות רק בין אוגרים, בניגוד למחשבי CISC אפייניים, בהם יש אופני מיעון מורכבים (כמו פעולות אריתמטיות בין אוגר ובין תוכן תא בזיכרון).
מעבד היקפי 0 יכול להורות למעבד המרכזי לעבור ממשימה למשימה, על ידי ביצוע פעולת exchange: המעבד המרכזי עוצר את הריצה, ושומר את מצבו, כלומר תוכן האוגרים השונים, ל"בסיס" בלוק הזיכרון. הערכים של כתובת הייחוס וגודל הבלוק של המשימה הבאה נמעודכנים, המעבד קורא את המצב של המשימה מבסיס בלוק הזיכרון החדש, ומתחיל בביצוע המשימה במקום בו הופסקה בפעם הקודמת.
למעבדים ההיקפיים גישה מלאה לזיכרון כולו, בנוסף לזיכרון הפרטי שיש לכל אחד מהם.