כיצד פועל תרגום x86 ב-Windows on Arm?

click fraud protection

הרבה יישומי Windows נכתבו עבור x86, ובכל זאת יכולים לעבוד על מעבדי Arm. הנה איך זה אפשרי.

חלונות תמיד נוצרו עבור מעבדי x86 של אינטל ו-AMD, אבל מאז שיצאה Windows RT לפני עשור לסמארטפונים, מערכת ההפעלה הפכה לאט לאט ידידותית יותר מעבדי זרוע. כיום, גם Windows 10 וגם ווינדוס 11 מציעות תמיכה מלאה עבור מעבדי Arm, אבל יש מלכוד. בעוד שמערכת ההפעלה עצמה פועלת בסדר גמור במעבדים אלה, רוב היישומים לא השיקו גרסה תואמת Arm. למרות ש-Windows יכול לרוץ על שבבי Arm, יש מעט תוכניות לשימוש בפועל תהיה בעיה.

עם זאת, למיקרוסופט יש טריק בשרוול: אמולטור להפעיל אפליקציות x86 על מכונות מבוססות Arm. זה הדבר המרכזי שהעניק ל-Windows on Arm את המומנטום שלו מאז יציאת המתרגם ב-2017. הנה איך האמולטור עובד, ולמה מחשבי Arm PC צריכים להשתמש בו אם הם רוצים להפעיל תוכנה המיועדת לשבבי x86.

הדמיית קוד x86 עבור מעבדי Arm בזמן אמת

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

לרוע המזל, הביצועים יהיו גרועים יותר באפליקציות מחקות בהשוואה לקוד המיועד לחומרה. קשה לומר כמה ביצועים אתה מפסיד על ידי הפעלת קוד חיקוי ב-Windows מכיוון שנתוני הבדיקה דלילים מאוד, אבל לשם השוואה, מתרגם Rosetta 2 של אפל (שגם מתרגם אפליקציות x86 ל-Arm) מאבד כ-20%. אפשר לצמצם את המספר הזה, אבל בדרך כלל, אמולציה ותרגום מביאים לעונש ביצוע לא משנה מה.

מדוע יישומי x86 לא יכולים לפעול על Arm ללא אמולציה

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

x86 הוא ה-ISA של מעבדי אינטל ו-AMD, שהיו היסטוריים המעבדים היחידים ש-Windows אפילו יכולה לרוץ עליהם. זרוע, בינתיים, שימשה בעיקר עבור סמארטפונים, והחפיפה בין תוכנת המחשב לתוכנת הטלפון היא קטנה מאוד. מטבע הדברים, רוב התוכניות מיוצרות עבור x86 או עבור Arm, ועבור Windows on Arm, זו הייתה בעיה גדולה מכיוון התרגום לא יצא ב-2020, בעוד ש-Windows RT (הגרסה הראשונה של Windows שתומכת ב-ARM) יצאה ב- 2012.

עבר כעשור מאז החלה Windows לתמוך ב-Arm, אז איפה כל האפליקציות המקוריות? הבעיה העיקרית היא שלוקח זמן ומומחיות לשכתב תוכנה עבור ISA אחר, במיוחד אם מפתחים רוצים לעשות זאת היטב. מפתחים שלא מקפידים על העברה של אפליקציה מ-ISA אחד לאחר עלולים לגרום לתקלות ובאגים. דוגמה מצוינת לכך היא Photoshop עבור Windows on Arm. זה פועל באופן מקורי על Windows on Arm, עדיין בסקירה שלנו על Lenovo Thinkpad X13s, נתקלנו במספר שגיאות והמון אזהרות ש-OpenCL ו-OpenGL לא נתמכו. יחד עם בסיס משתמשים קטן בהרבה באמצעות Arm ב-Windows, יש פחות תמריץ למפתחים לדאוג.

לכן, כאשר מפתחים לא יכולים או לא רוצים להקדיש את המשאבים ליצירת תוכנה מקורית, האלטרנטיבה היא אמולציה. למרות שתרגום אפליקציות x86 עבור Windows on Arm אינו מושלם, מרשים שהוא עובד בכלל, ולפעמים לאבד ביצועים כדאי לדעת שהאפליקציה תפעל כמצופה. לפחות עד ש-Windows on Arm יגיע לנקודה שבה מפתחים כבר לא יכולים להתעלם ממנה, תרגום ואמולציה נותנים לה דחיפה נחוצה מאוד לאקוסיסטם החומרה-תוכנה שלה.