hey guys, sorry for the english. is there that AMD processor doesn't support SSe and SSE2 and just 3DNOW? and vice versa? ( i mean intel doesn't support 3DNOW?) yours, Moti.
אבל כיום כבר כמעט ואין. SSE2 כמובן תמצא רק במעבדים החדשים ביותר, אבל קשה מאוד למצוא היום מעבדים שלא תומכים ב-SSE ו-3dNow! - שנראים מבוססים בתעשייה כבר כמעט כמו MMX.
מן הסתם ברור לי ש-SSE היה קיים כבר מאיזור הפנטיום 3 ו-SSE2 כבר מהפנטיום 4 (ווילמייט איזה יופי אפשר לעוות את השם הזה). בכל אופן ו-3dnow שיך למעבדי AMD. שאלתי אם אני אכתוב תוכנית שחלק מהקוד שלה הוא פקודות SSE או SSE2 היא תרוץ במלואה על מעבד AMD? ואם אני אכתוב תוכנית עם 3dnow היא תרוץ בכלל על אינטל? זו שאלתי. ברור לי שרק ממעבד מסויים אבל זה מראש לא קריטי. רק לדעת שמעבדי AMD תומכים בסט פקודות SSE ו-SSE2. שלך, מוטי.
אבל SSE ו-SSE2 יש *רק* באינטל. המקבילות הן 3DNOW ו-3DNOW2 לדעתי. אני לא סגור על זה אבל נדמה לי שסט הפקודות פשוט שונה ויש אופטימיזציות עבור כל ארכיטקטורה בנפרד.
אז ככה כולם תומכים בMMX כל האתלונים תומכים ב 3dnow אתלון XP תומך ב-SSE אתלון 64 תומך ב-SSE2 המכנה המשותף הוא MMX - נתמך בכולם. אפשרות נוספת היא לכתוב קוד עבור כל אחת מהאפשרויות
לא ידעתי. זאת אומרת שגם Athlon XP-M כלומר זה שבניידים? מעניין מאוד. אני מניח שאינטל לא תומכת ב-3dnow. זה שווה בדיקה תודה רבה לך. לגבי MMX ידעתי את זה ונכון, אבל מדובר במשהו פרימיטיבי יחסית ל-SSE בכלל. לגבי כתיבה של קוד לכל אחד - חחח (אין לי כוח במילים אחרות). תודה רבה רבה.
אתה יכול לממש פונקציות שונות לכל אחד מהמקרים, אח"כ לברר מול ה-CPU שלך במה הוא תומך ולהשתמש בסט הפונקציות הנכון. ככה תבטיח ניצולת מקסימלית על כל פלטפורמה, ויפסיק לעניין אותך מי תומך במה ולמה.
ברגע שזה מגיע ל-Low Level. אפשר בשפת C להשתשמש ב-#if וכו. אבל באסמבלי מדובר בדבר שונה לגמרי כי עצם העבודה ברמה נכומה שונה. למשל לשמירה של אוגרים מסויימים צריך להגדיר דברים אחרים. (למשל למעבר בין ביצוע של FPU ל-MMX או SSE צריך להשתמש בפקודה EMMS (אם אני לא טועה) וכן האלה. ואני לא מכיר את המקבילות על AMD. ואני גם אצטרך שתי פלטפורמות לבדיקה (עוד כסף)) לא יודע. אני אישית כמה שאני מתעב את אינטל מעדיף להשאר נאמן להם (לא מאמין שאני אומר את זה) אבל אולי דברים ישתנו. חוץ מזה. ברגע שעובדים עם הרבה פונקציות, נניח פונקציה אחת ל-AMD ופונקציה אחרת שעושה בדיוק את אותו הדבר על אינטל הקטע שזה עניין של עיקרון. בסוף Cyrix ואלוהים יודע מי עוד יתחיל להפליץ מעבדים של X86 אבל עם סט פקודות דומה (שזה רק חיבור חיסור ופעולות אריתמטיות אחרות (שיפטים)) ובסוף נגיע למצב שבו כמו עניין הגרפיקה על המחשבים (כל יצרן בחר לעצמו איך לממש מה) -> אנרכיה -> (אני לא צריך להסביר מה בהמשך) כי במקום לשקוד על פיתוח ומחקר אנשים יהיו אחראים לכצתיבה של קוד ודרייברים חדשים חדשות לבקרים לכל מעבד שקיים (לא צריך להרחיב גם לגבי המצב עם לוחות האם). סתם לא שווה את המאמץ. (להשקיע את סוף חיי בכתיבה של דרייברים) מוטי.