עבור לתוכן

מה זה Simd?

Featured Replies

פורסם

The whole idea behind SIMD execution is that if you're performing one operation on multiple types of data, why not perform that one operation on all the data simultaneously instead of waiting for the operation to be completed on one set of data before repeating the process. Therefore we get the basic definition of SIMD, or Single Instruction Multiple Data

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

פורסם

אני שמעתי שיש את זה במעבדים , לא זכור לי מה זה בדיוק

פורסם

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

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

זה אומר למעשה שהמעבד מקבל פעם אחת הוראה והולך בעצמו לבצע אותה בלולאה.

זה חוסך הרבה רוחב פס מהזיכרון וחוסך הרבה מחזורי שעון כי המעבד כבר "יודע" מה הוא הולך לעשות בלי לגשת לזיכרון.

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

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

בשיטה הזו אתה נהיית "חכם" ואומרים לך פעם אחת איפה הערימה נמצאת

ואיפה היא צריכה להיות ואתה לא שואל שאלות באמצע.

יש כמובן הרבה פעולות כאילו וממשיכים להוסיף עוד עם התקדמות המעבדים.

הראשון שביצע פעולות SIMD היה ה פנטיום MMX (לא זוכר כמה פקודות היו), ה PIII הוסיף SSE שזה

77 פקודות וב P4 הוסיפו SSE2 שזה 144 פקודות נוספות.

ל AMD יש את המקבילה שלה עם ה 3D NOW אבל זה לא ממש תפס והם התאימו את המעבדים לסטנדרט

של אינטל.

פורסם

למעשה 3dnow נתפסה טוב מאוד היא באה לפני SSE. והיא הייתה סט הפקודות הראשון של SIMD לנקודה צפה (מספרים עשרוניים) בעוד MMX היה רק למספרים שלמים.

היו הרבה משחקים שהשתמשו ב 3Dnow כל דריברים של כרטיסי מסך ו Direct X משתמשים ב 3dnow. בזמנו היתה ל 3dnow הרבה יותר תמיכה מאפשר ל SSE... אני חושב שעד היום 3Dnow הוא סטנדרט שמיושם בהיקף של SSE.

וההסבר הקודם הוא די קולע.

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

פורסם
  • מחבר

אוקי קראתי את זה כמה פעמים ואני חושב שהבנתי

אבל יש לי שאלה

אם הבנתי נכון אז המעבד "לוקח" את ההוראה מהזיכרון ו"לוקח" את הנתונים שאותם הוא צריך לעבד

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

ועכשיו אם אני קצת יסחף הוא מאחסן את הנתונים האלה בL2 שלו או בL1?

כי כל פעם לפנות אל הזיכרון ולבקש את ההוראה זה לוקח הרבה רוחב פס?

פורסם
  • מחבר

ועוד שאלה מה ההבדל בין

SIMD לנקודה צפה (מספרים עשרוניים) בעוד MMX היה רק למספרים שלמים.

?

כמו שאמרתה?

ארכיון

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

דיונים חדשים