რა არის AArch64? რა უნდა იცოდეთ ამ CPU არქიტექტურის შესახებ

მიუხედავად იმისა, რომ თქვენ ალბათ იყენებდით მოწყობილობას AArch64 პროცესორით, შესაძლოა არ იცოდეთ ეს რას ნიშნავს. აი, რა უნდა იცოდეთ.

ბევრი CPU არის არქიტექტურები იქ, სადაც ყველაზე დიდია x86 და ARM. ამას რომ ვამბობთ, AArch64-მა ალბათ თქვენი რადარით გაფრინდა. საკმაოდ კარგად წაკითხულ ტექნოლოგიების მოყვარულებსაც კი შეიძლება არასოდეს სმენოდათ ამის შესახებ, მიუხედავად იმისა, რომ ის მილიონობით მოწყობილობაშია წარმოდგენილი. ისე, საქმე ის არის, რომ AArch64 არ არის იმდენად იდუმალი, რამდენადაც ძალიან დამაბნეველი ტექნიკური ტერმინია. აი, რა უნდა იცოდეთ AArch64-ის შესახებ.

AArch64 არის ARM64, ერთგვარი

წყარო: არმ

მოკლედ, AArch64 არის Arm's 64-ბიტიანი ინსტრუქციების ნაკრების არქიტექტურის (ISA) ოფიციალური სახელი, რომელიც დაინერგა Armv8-A განახლებით. იგი თითქმის ყოველთვის ეხება AArch64-ს. ზუსტად არ არის ნათელი, რატომ გამოიყენება ARM64 ხშირად AArch64-ის ნაცვლად, მაგრამ დაბნეულობის ნაწილი, როგორც ჩანს, ორი ადგილიდან გამომდინარეობს. ნაწილი იმიტომ ხდება, რომ x86-ის 64-ბიტიანი გაფართოება არის x86-64, ამიტომ ბუნებრივია ARM-ის 64-ბიტიანი გაფართოება უნდა იყოს ARM64. როგორც ჩანს, Apple ასე ფიქრობდა და AArch64-ს ARM64-ად მოიხსენიებდა 2014 წლამდე. ადამიანების უმეტესობისთვის, "AArch64 არის ARM64" არის ძალიან დამაკმაყოფილებელი ახსნა.

თუ გსურთ მიიღოთ ნამდვილად ტექნიკური, AArch64 არ არის ISA, არამედ ის აღსრულების მდგომარეობა რაც საშუალებას აძლევს ARM პროცესორებს გამოიყენონ (და მხოლოდ გამოიყენონ) ARMv8 ISA-ის A64 ინსტრუქციების ნაკრები, რომელიც პირველად დაინერგა Armv8-A არქიტექტურით. თუ ეს დამაბნეველად ჟღერს, ეს იმიტომ ხდება. მაშინაც კი, თუ თქვენ იცნობთ კომპიუტერის არქიტექტურას, ამის გაგება შეიძლება რთული იყოს, ამიტომ მე ვაპირებ ამის ახსნას ეტაპობრივად.

ასე რომ, ტექნიკურად, AArch64 არის სახელმწიფო და არა ISA, მაგრამ არავის აინტერესებს, თვით Arm-იც კი.

ARM არის დაკავშირებული ISA-ების ოჯახი და მიუხედავად იმისა, რომ სხვადასხვა ISA ჩვეულებრივ გულისხმობს შეუთავსებლობას, ეს არ არის მკაცრად სიმართლე. ARM ISA-ს სხვადასხვა ვერსიებს უწოდებენ ARMv1, ARMv2 და ა. ძირითადი განსხვავება ამ ქვე-ISA-ებს შორის არის ინსტრუქციების მინიმალური რაოდენობა, რომელსაც თითოეული იყენებს, A-პროფილი იყენებს ყველაზე მეტს და M-პროფილი ყველაზე ნაკლებს. ასე რომ, ARM ISA იყოფა ცალკეულ ვერსიებად, როგორიცაა ARMv8, შემდეგ კი ეს ვერსიები შემდგომში იყოფა ISA-ს სხვადასხვა იმპლემენტაციად.

Armv8-A არის ARMv8 ISA-ს საწყისი A-პროფილის იმპლემენტაცია, რომელმაც დაამატა ორი ახალი რამ: AArch32 და AArch64. მათ მოიხსენიებენ, როგორც მდგომარეობებს ან რეჟიმებს და ისინი საშუალებას აძლევს ARM პროცესორებს წვდომის სხვადასხვა ინსტრუქციების კომპლექტებში, AArch32-ით, რომელიც შეიცავს 32-ბიტიან A32 და T32 ინსტრუქციებს და AArch64 შეიცავს 64-ბიტიან A64-ს ინსტრუქციები. მაგალითად, თუ პროცესორი ამჟამად იმყოფება AArch64 მდგომარეობაში და სურს გამოიყენოს A32 ინსტრუქციები, მან უნდა შეცვალოს მისი მდგომარეობა AArch32-ით. გარდა ამისა, AArch64 რეჟიმში, როგორც 32-ბიტიანი, ასევე 64-ბიტიანი რეგისტრები ხელმისაწვდომია, ხოლო AArch32 რეჟიმში მხოლოდ 32-ბიტიანი რეგისტრების გამოყენებაა შესაძლებელი. ამ ყველაფრის ყველაზე დამაბნეველი ნაწილი ის არის, რომ ყველა ამ ნივთს ცვალებადად მოიხსენიებენ, როგორც ISA-ს და Arm-საც კი (კომპანია, რომელიც ავითარებს ARM ISA-ს) არის დამნაშავე ამაში.

მაგრამ თუ სუპერ ტექნიკურად ვიქნებით, სინამდვილეში ასეა: ARM ISA-ს მერვე ვერსია, ARMv8, პირველად განხორციელდა Armv8-A-ით, რომელიც შეიცავს ორ მდგომარეობას სახელწოდებით AArch32 და AArch64. როდესაც CPU არის AArch64 მდგომარეობაში, მას შეუძლია შეასრულოს 64-ბიტიანი A64 ინსტრუქციები. ასე რომ, ტექნიკურად, AArch64 არის სახელმწიფო და არა ISA, მაგრამ არავის აინტერესებს, თვით Arm-იც კი.

რატომ აქვს მნიშვნელობა 32-ბიტიან და 64-ბიტიანებს ARM-სთვის

ასე რომ, AArch64 რეალურად საკმაოდ რთულია და სიტუაციების გადართვა მხოლოდ 32-ბიტიანი და 64-ბიტიანი ინსტრუქციების გამოსაყენებლად რთულია. საქმე იმაშია, რომ 32-ბიტიანი და 64-ბიტიანი მხარდაჭერა ძალიან მნიშვნელოვანი იყო, ასე რომ, ეს უბრალოდ ასე უნდა იყოს. ეს მართლაც ორ ძირითად საკითხს მოჰყვა: ძველი 32-ბიტიანი პროგრამული უზრუნველყოფის მხარდაჭერის საჭიროება და თანამედროვე, მაღალი ხარისხის გამოთვლების განხორციელება.

თუ Arm არ შეიცავდა 32-ბიტიან პროგრამულ მხარდაჭერას პირველ 64-ბიტიან ISA-ში, ეს შეიძლება ყოფილიყო კატასტროფა, რადგან მარტივად რომ ვთქვათ, არავის სურს კოდის გადაწერა. თუ ARMv8 ყველას მოსთხოვდა ახალი პროგრამული უზრუნველყოფის დაწერა ნულიდან, მას შეეძლო ISA გადაეყვანა სიკვდილის სპირალში, სადაც არავინ აწარმოებს ან ყიდულობს. ARMv8 მოწყობილობები პროგრამული უზრუნველყოფის ნაკლებობის გამო და შემდეგ დეველოპერები არ ქმნიან აპებს მომხმარებლების ნაკლებობის გამო, უსასრულოდ, სანამ Arm არ მოუწევს მას დარეკვას ტოვებს. ასე რომ, 32-ბიტიანი მხარდაჭერა არ იყო შეთანხმებული.

მეორეს მხრივ, 64-ბიტიანი გამოთვლის დანერგვა არც იყო ვარიანტი. Intel და AMD, x86-ის უკან არსებული კომპანიები, იყენებდნენ 64-ბიტიან არქიტექტურას 2000-იანი წლების დასაწყისიდან. საოცარი პროცესორები, თუმცა იმ დროს არ ყოფილა ზარი 64-ბიტიან ARM ჩიპებზე, რადგან ტელეფონებს ისინი არ სჭირდებოდათ. მაგრამ სმარტფონის გამოგონებამ ყველაფერი შეცვალა და ყველას სურდა, რომ მათი ტელეფონები მეტი საქმის კეთებას ასრულებდნენ. 64-ბიტიანი მხარდაჭერა არა მხოლოდ დაეხმარება სმარტფონებს უფრო მძლავრი გახდნენ, არამედ გააღო კარი კომპანიებისთვის ARM ჩიპების დამზადება ბაზრებისთვის, სადაც ტრადიციულად დომინირებს x86, როგორიცაა ლეპტოპები და სერვერები.

ძირითადად, დასახელების მთელი ეს გაუგებრობა წარმოიშვა იმით, რომ Arm-ს სჭირდებოდა თავისი ტექნოლოგიის მოდერნიზაცია პრიორიტეტების ცვლილების საპასუხოდ. შესაძლოა Arm-ს არ სჭირდებოდა 64-ბიტიანი მხარდაჭერის დანერგვა ამ გზით, მაგრამ ასე მოხდა და ასე გაჩნდა AArch64. მიუხედავად იმისა, რომ AArch64 არ არის ISA, ადამიანების უმეტესობა ასე იყენებს ამ ტერმინს, უკეთესად თუ უარესად.