עבור לתוכן

שאלה בקשר לאוגרים של המעבדים של קונסולות משחק <- רק למבינים בבקשה

Featured Replies

פורסם

שמתי לב לכך שבקונסולות PS2 יש אוגרים של 128 ביט (מעבד Emotion Engine או MIPS סדרה 4)

בכל מקרה זה לא קשור לגישה לזכרון מכיוון שהPS2 נגש רק ל4 מגה של זכרון למיטב זכרוני ככה שאין ממש מה לעשות עם 128 ביט מהבחינה הזאתי.

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

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

פורסם

אממ..

כן

פורסם

יאאאאאאאאא אל אל אללהההההההההההההההההההההההה  :bash:

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

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

במקרה של הPS2 (הMPIS IIIת 4 והפואור PC) יש בלאגן רציני בגלל כל הזיון שכל של האמושן אנג'ין\ אלטיוק\ וקטור פרוססור  ...  המעבד לא באמת 128ביט (ארכ  :pissed:) אלא שילוב מפחיד של מלא יחידות בגדלים שונים.. בכללי - 2 יחידות של 64ביט.. שגם הן מורכבות בעצם מכמה יחידות של 32ביט  אז שוב פעם יש לך יחס של 1:4 בין גודל הרגיסטר ויחידת העיבוד - אז בפקודת SIMD אתה מביא וקטור של 128ביט שיכול בעצם להיות 2 VLIW או 4 SP FP ( :xyxthumbs:)  או.. וזה אני באמת לא מבין.. 8 מילים (16 ביט).

כל זה, די דומה לחלוטין למה שהולך במעבדים של אינטל ואייאמדי מאז הפנטיום 3 (וה-SSE ).

אבל חבריה! פה עלתה השאלה המעניינת שלנו (שאני חשבתי שהוא שאל.. והוא בכלל לא התכוון).

אם היחידת עיבוד (בכל המעבדים מסתבר) היא 32ביט (SP דא), ניתן להבין שיש 4 יחידות בשביל לקיים פקודת SIMD (בינתיים הכל טוב ויפה) וזה מסביר איך זה שניתן לעבד וקטור בצורה של 2VLIW (לפחות במעבדי מוטורולה), ובהחלט ניתן להבין איך אפשר לעבד 4 נתונים של 32ביט .. אבל איך לעזאזל ניתן לעבד 8 נתונים של 16ביט?!   :nixweiss:

פורסם

מה שאתה מתאר זה לא בדיוק SIMD זה DSP.

בכל מקרה עם המבנה של הVU של הPS2 ועבודה תחת M.A.C אפשר להסביר את זה, הIntr מחובר בבאסים נפרדים של 16bit לextu. בקשר למוטרולה אין לי שמץ.

הPS2 מאפשר רק int16 נכון? כי FP16 לא אפשרי במיוחד, הEE לא תומך בדיוק חלקי.

פורסם

איזו הפתעה.. ברור שזה בדומה DSP, זה כל המטרה שה-SIMD הוכנס לשימוש במעבדים... (ראה ערך MMX).

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

אני אכנס לזה שוב היום... אחרי כל מה שקראתי אתמול נעשה לי כזה כאב ראש.. יותר מידי קיצורים חדשים להכיר :screwy:

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

פורסם

אני צריך לחפור בגיבויים היה לי את כל הwhite papers שבאים עם הSDK של הPS2. בכל מקרה אני לא חושב שאפשר יהיה להביא הסבר מדוייק על סמך הPS2 בלבד ככה שצריך לחפור עמוק גם בPPC >< יותר מידי כאב ראש הדבר הזה עושה, IB32 אני שונא אותך. :smile1:

פורסם

חחחחח ;D

מסכן IB .. הוא בכלל התכוון לשאול משהו אחרי לגמרי :lol:

בכל מקרה, כשתמצא את הפייפרים המתאימים (כמה שיותר מפורטים על הVU's , לא משנה איזה מהם.. ) תשלח לי אותם...

לגבי ה-PPC וה-MIPS 3 (כמו שאמרתי.. זה בתכלס מעבדים די דומים) , זה לא כזה קריטי.. השאלה שלי היא די כללית ומצידי תבחר כל מעבד אחר...

שני דברים שאני רוצה להבין:

איך ניתן לחשב בעזרת שתי יחידות 32ביט נתון יחיד של 64ביט.

איך ניתן לחשב בעזרת יחידה אחת של 32ביט שני נתונים של 16ביט.

מאוחר יותר היום שיהיה לי כח אני אחפור שוב בכתבות שמצאתי (ולמה רק ארס טכניקה מעמיקים בזה? איפה כל שאר האתרים?! :nixweiss:) ונראה אם תהיה תשובה.

בכל מקרה, למה אין איזה מעצב מעבדים פה שיענה על השאלות הבאמת שוות? :P

ומה עם שאר האנשים שמבקרים בפורום? 15 אלף משתמשים, בסך הכל 50 צפיות באשכול.. ורק שלושה משתתפים פה?

פורסם
  • מחבר

דוגמא נשמה , אין בעד מה :)

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

דוגמא ד"א יותר מדי ראשי תיבות יש לך שמה :) אתה מריץ אותי לוויקיפדיה .

בעניין השני נתוים של 16 ביט , זה כל הרעיון של SIMD , איך זה מתבצע בדיוק זה כבר שאלה יותר קשה , נדמה לי שעל זה המאמר של ארס מדבר לא ? ואין לי מושג בקשר לדיוק FP של הEE.

בכל מקרה באמת בשביל מה שלחנו פה אנשים לטכניון ? מה מלמדים אותכם שמה ? פויה! אתם צריכים לדעת כאלו דברים! :D

פורסם

לא לא.. שוב פעם לא הבנת :-)

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

לדוגמא- אם אני עושה את החישוב (בעשרוני ) של הערך 5555 ומוסיף לו 10 יצא לך 5565 אבל זה לא שווה ערך לחישוב של 55 +10 55 +10 שזה 65 65 אז אם אני רוצה לחשב ערך של 64ביט ומפצל אותו לשתי ערכים של 32ביט (חותך באמצע כמו שנעשה באוגר SIMD, בשביל הזנה ליחידת עיבוד שהיא 32ביט) צריך להיות סוג של מנגנון כלשהו שמתקן את הטעות הזאת.. אני מנסה להבין מה הולך שם.

ולגבי חישוב מקביל של שני ערכי 16ביט.. זה בכלל לא מובן :-)

מי פה בטכניון אגב?

פורסם
  • מחבר

מור שובל (MorTitsKing או משהוא כזה)

בכל מקרה אני לא בטוח שהבנתי את הכוונה - אני משער שהמעבד מקבל פקודה שמכוונת ליחידת SIMD ומצויין שם גם את גודל הדיוק\מספר המשתנים

ככה שאם זה Sadd8 (פקודה שאני המצאתי ... אני לא באמת יודע ASM של SSE , בכל מקרה הכוונה לחיבור שני משתנים של 8ביט) ואח"כ הוא יקבל 16 ביט הוא פשוט יחלק אום באמצע כי המידע לא צריך להקרא ככה : 1010101010101010 אלא ככה 10101010 , 10101010

אני בכל מקרה זז לעשות יומיים בישיבה בגליל , אז אני לא אהיה כאן לפני יום חמישי , אז תנסו להבין את השאלות שלי לבד :)

פורסם

בעעע... שוב פעם.. לא מעניין אותי איך הוא קורא את המידע..

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

פורסם

היא לא.

אתה בעצם מעבד יח' של 16byte(128bit) בעזרת פקודות SIMD מיוחדות. אתה טוען יח' של 16byte לזכרון שיכולה להכיל 8 int16 בתוכה. הפעולות שאתה מבצע אתה מבצע על יח' 16byte שלמות לא על int16 בודדות. הדבר הזה לא יעיל להרבה דברים, אבל לפעולות כמו פענוח DVD, סרטים, ועיבוד תמונה צורת העבודה הזאת יעילה להחריד.

פורסם
  • מחבר

דוגמא אין דרך יותר טובה לתאר את ההרגשה שלי כלפי התגובה של icebreak :)

בכל מקרה שאלה אחרת שלי - האם מישהוא טרח אי פעם ליצר מעבד עם יכולות איכסון משתני int של יותר מ64 ביט באוגר יחיד ? אם לא למה לא ? אין לזה מספיק שוק בישומים מדעיים?

ארכיון

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

דיונים חדשים