ליבת ה-R600 – מבט לעומק
Stream Processors לפי AMD
בדיאגרמת הבלוקים של הליבות הגרפיות ראינו במרכז את יחידות העיבוד, כאשר ב-HD 2900XT ישנן 320 יחידות שכאלו ואילו ב-8800GTX קיימות 128 יחידות עיבוד בלבד, אך הסידור והיכולות שלהן הם אלו המבדילים בין הפתרון של AMD לפתרון של NVIDIA.
זוהי קבוצת ה-Stream Processors הבסיסית של AMD – ניתן לראות שקיימות בתוכה חמש יחידות עיבוד, כאשר כולן יוכלו לעבוד אך ורק אם הפקודות שרצות בהם שונות לחלוטין האחת מהשניה ובלתי תלויות אחת בשניה – כלומר לא כל יחידות העיבוד זהות. לעומת זאת, בפתרון של NVIDIA כל יחידות העיבוד זהות ולכן למרות שיש פחות יחידות עיבוד, ניתן לבצע במקביל יותר פקודות מאשר בפתרון של AMD.
Texture Units
זו הפעם הראשונה שאנו מדברים על זיכרון המטמון כאשר אנו דנים במעבדים גרפיים (GPU), ובעוד שזהו אחד הנושאים החשובים שדנים בהם במעבדים ראשיים (CPU), הרי שהנושא הוא שולי למדי כשמדברים על מעבדים גרפיים.
זיכרון המטמון נועד על מנת לאפשר גישה מהירה לנתונים (במקרה זה נתונים על טקסטורות וקודקודים) הנמצאים בזיכרון כרטיס המסך (וכעת גם יכולים להמצא בזיכרון הגרפי הוירטואלי). בדומה למעבדי CPU, גם כאן מחולק הזיכרון לשתי רמות כאשר רק הרמה הנמוכה מחולקת על פי סוגי המידע (פיקסלים או קודקודים).
Render Back-Ends
יחידה זו אחראית לצבע של כל פיקסל שמופיע על גבי המסך והיא זו שאחראית בדרך כלל על ביצוע ה-Anti Aliasing (החלקת קצוות) לתמונה, כך שיחידה יעילה יותר תוכל לשפר משמעותית את הביצועים (ב-HD 2900XT קיימות 4 יחידות שכאלו).
אך הבעיה היא שביחידות אלו אין כל חומרת עיבוד, שכן כל תפקידן הוא להעביר פקודות ביצוע ל-Stream Processors ולהנחות אותם לגבי אופן ביצוע ה-AA. לעומת זאת, בפתרון של NVIDIA עיבוד ה-AA מתבצע במעבדים ייעודיים ואינו מפריע לעיבוד התלת מימד. ממבט ראשון הדבר נראה כחסרון שכן עליה ברמת הפילטרים עלולה לגרום לירידה משמעותית בביצועי הכרטיס עקב ניצול משאבי העיבוד המוגבלים. מצד שני, היתרון בכך הוא שניתן לתכנת את עיבוד ה-AA בצורה טובה, איכותית ויעילה יותר – AMD מכנה את הרעיון CFAA (ר"ת Custom Filter Anti Aliasing). שיטה זו מאפשרת לעשות שימוש בעתיד בפרופילים חדשים ויעילים יותר עבור הפילטרים (אם יימצאו כאלו), ללא צורך בהחלפת החומרה אלא רק באמצעות עדכון הדרייבר. הדבר מאפשר ביצוע AA עד לרמה של X24, לזהות אזורים בתמונה שזקוקים ל-AA (קצוות אובייקטים) ולבצע את התהליך רק עליהם, דבר שמייעל משמעותית את כל המנגנון.
מובן שכיום קשה להבחין בהבדלים ב-AA ברמות של X8 ומעלה, אך ככל שהדרישה למסכים גדולים ורזולוציות גבוהות הולכת וגדלה, רעיון זה צפוי לצבור יותר ויותר פופולריות.
ממשק הזיכרון ושובו של ה-Ring Bus
מנגנון ה-Ring Bus עשה את דרכו לראשונה לכרטיסי המסך של חברת ATI עוד בימי ה-X1800, כאשר הייתה זו דרך יעילה במיוחד לחלוק מידע בין המעבד לזיכרון של כרטיס המסך וכן לקבל מידע חדש מאפיק ה-AGP. ובכן, ה-Ring Bus חוזר גם בסדרת ה-HD 2000, עם כמה שידרוגים משמעותיים:
השינויים נועדו כמובן על מנת לאפשר מעבר מידע רב יותר בין כל רכיבי העיבוד; ראשית, הממשק בין הליבה לזיכרון הוכפל מ-256 ביט ל-512 ביט. הדבר דומה להוספת נתיבים בכביש סואן, מה שמונע היווצרות פקקים ומאפשר תנועה מהירה יותר. שנית, המידע העובר בין הזיכרון לליבה עובר מיון וניהול, כך שמידע חשוב יותר מועבר מהר יותר. שני השיפורים הללו הופכים את ממשק הזיכרון של AMD למתקדם וליעיל ביותר בתחום כרטיסי המסך, ויש אף שיגידו לאלגנטי ביותר.
Tessellation – פסיפס, אומנות שקמה לתחייה
תכונה זו היא תוספת אותה הטמיעה AMD במעבדי סדרת ה-HD 2000, לאור הנסיון של ATI עם המעבדים הגרפיים של קונסולת ה-Xbox 360 של מיקרוסופט. אין זה סוד שסדרת כרטיסי המסך החדשה איננה הנסיון הראשון של AMD ליצור מעבד גרפי העושה שימוש ב-Unified Shaders, שכן מעבד ה-Xenos של ה-Xbox 360 פותח ויוצר על ידי ATI, ונסיונה של החברה בתחום זה עובר כעת גם למחשב האישי – בדגש על תכונת ה-Tessellation, המיובאת ישירות מהקונסולה המצליחה.
אז מה זה בעצם Tessellation? אפשר להגדיר את המושג כדרך להגדיל את כמות הקודקודים של אובייקט בתוך המעבד הגרפי ללא צורך בתכנות מראש, כך שנוצרים אובייקטים מפורטים וריאליסטיים יותר. למען הדיוק ההיסטורי יש לציין כי AMD איננה הראשונה ליישם טכנולוגיה זו במעבדים הגרפיים שלה, שכן חברת Matrox (שרק זקני השבט מכירים) ניסתה לשלב את ה-Tessellation בכרטיס ה-Parhelia שלה. הכרטיס נחל כשלון צורם, ובעקבותיו גם החברה, למרות שמבחינה טכנולוגית הוא הקדים את זמנו בשנים רבות.
ניתן לראות הדגמה של רעיון זה בתמונה הבאה:
המצב כפי שהוא כיום מתואר בתמונה השמאלית ביותר, והתוצאה לאחר ביצוע תהליך ה-Tessellation מוצגת בתמונה הימנית ביותר. המנגנון לוקח את האובייקט ומוסיף לו עוד ועוד פוליגונים ובכך מאפשר לו להיות חלק וריאליסטי יותר.
אם כן, נשאלת השאלה למה אנו צריכים את מנגנון ה-Tessellation, אם אפשר לתכנת את המשחקים מלכתחילה עם אובייקטים מסובכים ומפורטים. התשובה לכך היא פשוטה – רוחב פס. אובייקט בעל מעט קודקודים הוא בהכרח בעל נפח קטן יותר וניתן להעביר כמות גדולה של אובייקטים שכאלו במהירות למעבד הגרפי. לעומת זאת, אם נשלח אובייקטים פשוטים יותר, נוכל לשלוח כמות גדולה בהרבה של אובייקטים – ולאחר מכן, בתוך הליבה הגרפית, כל אחד מהם יעבור את תהליך הטסלציה, מה שיאפשר להגיע למקסימום אובייקטים ריאליסטיים מבלי לתפוס את כל רוחב הפס.
על הנייר כל זה אמנם נראה טוב ויפה – היכולת להגיע לריאליזם מקסימלי מבלי לקנות מעבד גרפי חזק בהרבה – אך הבעיה היא שכיום לא קיימים משחקים התומכים בטכנולוגיה וההערכות האופטימיות ביותר מדברות על טווח זמן של שנה לפחות עד שנראה יישום של הטכנולוגיה. יחד עם זאת, ייתכן שמשום שמיקרוסופט עומדת הן מאחורי ה-Xbox 360 (בו הטכנולוגיה מיושמת ואף קיימים משחקים המנצלים אותה) והן מאחורי DirectX 10 ו-Vista, נוכל לראות הרבה משחקים שינצלו את ה-Tessellation בעתיד ויהיה זה הקלף המנצח של AMD מול NVIDIA.