Windows-ის უამრავი აპლიკაცია დაიწერა x86-ზე და მაინც შეუძლია Arm CPU-ზე მუშაობა. აი, როგორ არის შესაძლებელი.
Windows ყოველთვის შექმნილია x86 პროცესორები Intel-ისა და AMD-დან, მაგრამ მას შემდეგ რაც Windows RT გამოვიდა ათი წლის წინ სმარტფონებისთვის, ოპერაციული სისტემა ნელ-ნელა უფრო მეგობრული ხდება. Arm CPU-ები. დღეს, Windows 10 და Windows 11 გვთავაზობენ სრულ მხარდაჭერას Arm CPU-ებისთვის, მაგრამ არის დაჭერა. მიუხედავად იმისა, რომ თავად ოპერაციული სისტემა კარგად მუშაობს ამ პროცესორებზე, აპლიკაციების უმეტესობამ არ გამოუშვა Arm-თავსებადი ვერსია. მიუხედავად იმისა, რომ Windows-ს შეუძლია Arm ჩიპებზე მუშაობა, რეალურად გამოსაყენებელი რამდენიმე პროგრამის არსებობა პრობლემა იქნება.
თუმცა, Microsoft-ს აქვს ხრიკი: ემულატორი x86 აპლიკაციების გასაშვებად Arm-ზე დაფუძნებულ მანქანებზე. ეს არის მთავარი, რამაც Windows-ზე Arm-ის იმპულსი მისცა მას შემდეგ, რაც თარჯიმანი გამოვიდა 2017 წელს. აი, როგორ მუშაობს ემულატორი და რატომ უნდა გამოიყენონ ის Arm PC-ებმა, თუ სურთ x86 ჩიპებისთვის შექმნილი პროგრამული უზრუნველყოფის გაშვება.
x86 კოდის ემულაცია Arm CPU-ებისთვის რეალურ დროში
ერთი ტიპის პროცესორისთვის შექმნილი კოდის ემულაციის იდეა, რათა ის სხვაზე გაშვებული იყოს, ახალი არ არის. აი, როგორ მუშაობს თამაშის ემულაცია, რომელიც ფართოდ გამოიყენება ძველი ვიდეო თამაშების გასაშვებად ახალ მოწყობილობებზე სრულიად განსხვავებული ტექნიკით. როდესაც თქვენ აწარმოებთ x86 აპს Arm PC-ზე, Windows იღებს აპლიკაციის კოდის ბლოკებს და აგროვებს მას ისეთ რამეში, რომელიც შეიძლება იმუშაოს Arm ჩიპზე. ეს ყველაფერი კეთდება რეალურ დროში და Windows-მა უნდა შეინახოს მის მიერ თარგმნილი ყველა კოდი, რაც იმას ნიშნავს, რომ მას არ სჭირდება ხელახლა თარგმნა უსასრულოდ.
სამწუხაროდ, შესრულება უფრო უარესი იქნება იმიტირებულ აპებზე, ვიდრე აპარატურისთვის განკუთვნილი კოდი. ძნელი სათქმელია, რამდენ შესრულებას კარგავთ Windows-ზე ემულირებული კოდის გაშვებით, რადგან ტესტირების მონაცემები ძალიან მწირია, მაგრამ შედარებისთვის, Apple's Rosetta 2-ის მთარგმნელი (რომელიც x86 აპებს Arm-ადაც თარგმნის) კარგავს დაახლოებით 20%. შესაძლებელია ამ რიცხვის შემცირება, მაგრამ, როგორც წესი, ემულაცია და თარგმანი იწვევს შესრულების ჯარიმას, რაც არ უნდა მოხდეს.
რატომ ვერ მუშაობს x86 აპლიკაციები Arm-ზე ემულაციის გარეშე
შეიძლება გაინტერესებთ, რატომ უნდა დაიწეროს პროგრამული უზრუნველყოფა სპეციალურად x86, Arm და სხვა სახის პროცესორებისთვის. ეს მოდის ქვემოთ განსხვავება არქიტექტურაშიდა ამ შემთხვევაში, ჩვენ ვსაუბრობთ ინსტრუქციების ნაკრების არქიტექტურაზე (ISA). ისინი წარმოადგენენ პროცესორის ყველაზე ფუნდამენტურ დიზაინს და განსაზღვრავენ, შეიძლება თუ არა რაიმე მარტივი, როგორიცაა გამრავლება, ან რაიმე რთული, როგორიცაა AVX. ISA-ს შეცვლა გავლენას ახდენს პროგრამული უზრუნველყოფის აპარატურასთან ურთიერთქმედების ყველაზე ფუნდამენტურ გზაზე, ძირითად და ნულამდე, რომლებსაც CPU კითხულობს.
x86 არის Intel-ისა და AMD CPU-ების ISA, რომლებიც ისტორიულად ერთადერთი CPU-ები იყვნენ, რომლებზეც Windows-ზეც კი მუშაობს. Arm, იმავდროულად, ძირითადად გამოიყენებოდა სმარტფონებისთვის და კომპიუტერის პროგრამულ უზრუნველყოფასა და ტელეფონის პროგრამულ უზრუნველყოფას შორის გადახურვა ძალიან მცირეა. ბუნებრივია, პროგრამების უმეტესობა დამზადებულია x86-ისთვის ან Arm-ისთვის, ხოლო Windows on Arm-ისთვის ეს იყო დიდი პრობლემა, რადგან თარგმანი არ გამოვიდა 2020 წელს, ხოლო Windows RT (Windows-ის პირველი ვერსია Arm-ის მხარდაჭერით) გამოვიდა 2012.
დაახლოებით ათი წელი გავიდა მას შემდეგ, რაც Windows-მა დაიწყო Arm-ის მხარდაჭერა, ასე რომ, სად არის ყველა მშობლიური აპლიკაცია? მთავარი საკითხია ის, რომ დრო და გამოცდილება სჭირდება პროგრამული უზრუნველყოფის გადაწერას სხვადასხვა ISA-სთვის, განსაკუთრებით თუ დეველოპერებს სურთ ამის კარგად გაკეთება. დეველოპერები, რომლებიც სათანადო ყურადღებას არ აქცევენ აპლიკაციის ერთი ISA-დან მეორეზე გადატანას, შეიძლება გამოიწვიოს ხარვეზები და შეცდომები. ამის შესანიშნავი მაგალითია Photoshop for Windows on Arm. ის მუშაობს Windows-ზე Arm-ზე, ჯერ კიდევ Lenovo Thinkpad X13s-ის ჩვენს მიმოხილვაში, შეგვხვდა რამდენიმე შეცდომა და ბევრი გაფრთხილება, რომ OpenCL და OpenGL არ იყო მხარდაჭერილი. Windows-ზე Arm-ის გამოყენებით მომხმარებელთა გაცილებით მცირე ბაზასთან ერთად, დეველოპერებს ნაკლები სტიმული ექნებათ ზრუნვაზე.
ასე რომ, როდესაც დეველოპერებს არ შეუძლიათ ან არ სურთ რესურსები დაუთმონ მშობლიური პროგრამული უზრუნველყოფის შექმნას, ალტერნატივა არის ემულაცია. მიუხედავად იმისა, რომ x86 აპების თარგმნა Windows-ისთვის Arm-ზე არ არის სრულყოფილი, შთამბეჭდავია, რომ ის საერთოდ მუშაობს და ზოგჯერ შესრულების დაკარგვა ღირს იმის ცოდნა, რომ აპლიკაცია იმუშავებს ისე, როგორც მოსალოდნელია. ყოველ შემთხვევაში, სანამ Windows on Arm არ მიაღწევს იმ დონეს, სადაც დეველოპერები ვეღარ შეძლებენ მის იგნორირებას, თარგმანი და ემულაცია მას ძალიან საჭირო სტიმულს აძლევს მის აპარატურულ-პროგრამულ ეკოსისტემას.