Мајк Еш посветен на неговиот блог практичните импликации на префрлувањето на 64-битна архитектура во iPhone 5S. Оваа статија се потпира на неговите наоди.
Причината за овој текст главно се должи на големиот број дезинформации што се шират за тоа што всушност значи за корисниците и пазарот новиот iPhone 5s со 64-битен ARM процесор. Овде ќе се обидеме да донесеме објективни информации за перформансите, можностите и импликациите на оваа транзиција за програмерите.
"64 битна"
Постојат два дела на процесорот на кои може да се однесува ознаката „X-bit“ - ширината на целобројните регистри и ширината на покажувачите. За среќа, кај повеќето модерни процесори овие широчини се исти, така што во случајот со А7 тоа значи 64-битни целобројни регистри и 64-битни покажувачи.
Сепак, подеднакво е важно да се истакне што НЕ значи „64bit“: Големина на физичка адреса на RAM меморијата. Бројот на битови за комуникација со RAM меморијата (со тоа и количината на RAM меморија што уредот може да ја поддржи) не е поврзан со бројот на битови на процесорот. ARM процесорите имаат некаде помеѓу 26 и 40-битни адреси и може да се менуваат независно од остатокот од системот.
- Големина на магистралата за податоци. Количината на податоци добиени од RAM меморијата или баферската меморија е слично независна од овој фактор. Индивидуалните инструкции на процесорот може да бараат различни количини на податоци, но тие или се испраќаат на парчиња или се добиваат повеќе отколку што е потребно од меморијата. Тоа зависи од големината на податочниот квант. iPhone 5 веќе добива податоци од меморијата во 64-битни кванти (и има 32-битен процесор), а можеме да наидеме на големини до 192 бита.
- Сè што е поврзано со подвижна запирка. Големината на таквите регистри (FPU) повторно е независна од внатрешната работа на процесорот. ARM користи 64-битен FPU уште пред ARM64 (64-битен ARM процесор).
Општи предности и недостатоци
Ако ги споредиме инаку идентичните 32 битни и 64 битни архитектури, тие генерално не се толку различни. Ова е една од причините за општата збунетост на јавноста која бара причина зошто Apple преминува на 64 битни и кај мобилните уреди. Сепак, сето тоа доаѓа од специфичните параметри на процесорот A7 (ARM64) и од тоа како Apple го користи, а не само од фактот дека процесорот има 64-битна архитектура.
Меѓутоа, ако сè уште ги погледнеме разликите помеѓу овие две архитектури, ќе откриеме неколку разлики. Очигледно е дека 64-битните целобројни регистри можат поефикасно да ракуваат со 64-битни цели броеви. И порано, беше можно да се работи со нив на 32-битни процесори, но тоа обично значеше нивно делење на 32-битни долги парчиња, што предизвикуваше побавни пресметки. Така, 64-битен процесор генерално може да пресметува со 64-битни типови исто толку брзо како и со 32-битни. Ова значи дека апликациите кои обично користат 64-битни типови можат да работат многу побрзо на 64-битен процесор.
Иако 64 бит не влијае на вкупната количина на RAM меморија што може да ја користи процесорот, може да ја олесни работата со големи делови од RAM меморија во една програма. Секоја програма која работи на 32-битен процесор има само околу 4 GB адресен простор. Имајќи предвид дека оперативниот систем и стандардните библиотеки зафаќаат нешто, ова ја остава програмата со некаде помеѓу 1-3 GB за употреба во апликации. Меѓутоа, ако 32-битен систем има повеќе од 4 GB RAM, користењето на таа меморија е малку покомплицирано. Мора да прибегнеме кон принудување на оперативниот систем да ги мапира овие поголеми делови од меморијата за нашата програма (виртуелизација на меморијата), или можеме да ја поделиме програмата на повеќе процеси (каде што секој процес повторно теоретски има 4 GB меморија достапна за директно адресирање).
Сепак, овие „хакови“ се толку тешки и бавни што минимум апликации ги користат. Во пракса, на 32-битен процесор, секоја програма ќе ги користи само своите 1-3 GB меморија, а повеќе достапна RAM меморија може да се користи за да се извршуваат повеќе програми истовремено или да се користи оваа меморија како бафер (кеширање). Овие употреби се практични, но ние би сакале која било програма да може лесно да користи делови од меморијата поголеми од 4 GB.
Сега доаѓаме до честото (всушност неточно) тврдење дека без повеќе од 4 GB меморија, 64-битна архитектура е бескорисна. Поголемиот адресен простор е корисен дури и на систем со помала меморија. Датотеките мапирани со меморија се практична алатка каде дел од содржината на датотеката е логично поврзан со меморијата на процесот без да мора целата датотека да се вчита во меморијата. Така, системот може, на пример, постепено да обработува големи датотеки многу пати поголеми од капацитетот на RAM меморијата. На 32-битен систем, таквите големи датотеки не можат со сигурност да се мапираат со меморија, додека на 64-битен систем, тоа е само парче торта, благодарение на многу поголемиот адресен простор.
Меѓутоа, поголемата големина на покажувачите носи и еден голем недостаток: инаку на идентичните програми им треба повеќе меморија на 64-битен процесор (овие поголеми покажувачи мора да се складираат некаде). Бидејќи покажувачите се чест дел од програмите, оваа разлика може да го оптоварува кешот, што пак предизвикува целиот систем да работи побавно. Така, во перспектива, можеме да видиме дека ако само ја смениме архитектурата на процесорот на 64-битна, тоа всушност ќе го забави целиот систем. Значи, овој фактор треба да се избалансира со повеќе оптимизации на други места.
ARM64
А7, 64-битниот процесор кој го напојува новиот iPhone 5s, не е само обичен ARM процесор со пошироки регистри. ARM64 содржи големи подобрувања во однос на постарата, 32-битна верзија.
Регистар
ARM64 има двојно повеќе целобројни регистри од 32-битните ARM (внимавајте да не ги помешате бројот и ширината на регистрите - зборувавме за ширината во делот „64-bit“. Значи, ARM64 има и двојно пошироки регистри и двојно повеќе регистри). 32-битниот ARM има 16 целобројни регистри: еден програмски бројач (компјутер - го содржи бројот на тековната инструкција), покажувач на стек (покажувач на функција во тек), регистар за врски (покажувач за враќање по завршувањето од функцијата), а преостанатите 13 се за апликативна употреба. Сепак, ARM64 има 32 регистри со цели броеви, вклучувајќи еден нулти регистар, регистар за врски, покажувач на рамка (сличен на покажувачот на стек) и еден резервиран за иднината. Ова ни остава 28 регистри за употреба на апликации, што е повеќе од двојно повеќе од 32-битниот ARM. Во исто време, ARM64 го удвои бројот на регистри со подвижна запирка (FPU) од 16 на 32 128-битни регистри.
Но, зошто е толку важен бројот на регистри? Меморијата е генерално побавна од пресметките на процесорот и читањето/пишувањето може да потрае многу долго. Ова ќе го натера брзиот процесор да продолжи да чека за меморија и ќе ја достигнеме природната граница на брзината на системот. Процесорите се обидуваат да го сокријат овој хендикеп со слоеви на бафери, но дури и најбрзиот (L1) е сепак побавен од пресметката на процесорот. Сепак, регистрите се мемориски ќелии директно во процесорот и нивното читање/пишување е доволно брзо за да не се забави процесорот. Бројот на регистри практично значи количина на најбрза меморија за пресметките на процесорот, што во голема мера влијае на брзината на целиот систем.
Во исто време, оваа брзина има потреба од добра поддршка за оптимизација од компајлерот, така што јазикот може да ги користи овие регистри и да не мора да складира сè во општата апликација (бавната) меморија.
Сет со инструкции
ARM64, исто така, носи големи промени во комплетот инструкции. Збир на инструкции е збир на атомски операции што процесорот може да ги изврши (на пр. „ADD register1 register2“ ги собира броевите во два регистри). Функциите достапни за поединечни јазици се составени од овие упатства. Покомплексните функции мора да извршуваат повеќе инструкции, за да можат да бидат побавни.
Ново во ARM64 се инструкциите за AES шифрирање, SHA-1 и SHA-256 хаш функции. Така, наместо сложена имплементација, само јазикот ќе ја нарече оваа инструкција - што ќе донесе огромно забрзување на пресметувањето на таквите функции и се надеваме дека ќе додаде безбедност во апликациите. На пр. новиот Touch ID ги користи овие инструкции и при шифрирање, овозможувајќи вистинска брзина и безбедност (теоретски, напаѓачот би морал да го измени самиот процесор за да пристапи до податоците - што во најмала рака е непрактично со оглед на неговата минијатурна големина).
Компатибилност со 32 битни
Важно е да се спомене дека А7 може целосно да работи во 32-битен режим без потреба од емулација. Тоа значи дека новиот iPhone 5s може да работи со апликации составени на 32-битна ARM без никакво забавување. Меѓутоа, тогаш не може да ги користи новите функции на ARM64, па секогаш е вредно да се направи специјална конструкција само за А7, која би требало да работи многу побрзо.
Времето на траење се менува
Runtime е кодот кој додава функции на програмскиот јазик, кои може да ги користи додека апликацијата работи, сè до преводот. Бидејќи Apple не треба да одржува компатибилност со апликациите (дека 64-битна бинарна работа работи на 32-битна), тие би можеле да си дозволат да направат уште неколку подобрувања на јазикот Objective-C.
Еден од нив е т.н означен покажувач (означен индикатор). Нормално, објектите и покажувачите на тие објекти се складираат во посебни делови од меморијата. Сепак, новите типови на покажувачи им дозволуваат на класите со малку податоци да складираат објекти директно во покажувачот. Овој чекор ја елиминира потребата да се распредели меморија директно за објектот, само креирајте покажувач и објектот во него. Означените покажувачи се поддржани само во 64-битна архитектура, исто така поради фактот што веќе нема доволно простор во 32-битен покажувач за складирање на доволно корисни податоци. Затоа, iOS, за разлика од OS X, сè уште не ја поддржуваше оваа функција. Сепак, со доаѓањето на ARM64, ова се менува, а iOS се израмни со OS X и во овој поглед.
Иако покажувачите се долги 64 бита, на ARM64 само 33 бита се користат за сопствената адреса на покажувачот. И ако можеме со сигурност да ги демаскираме останатите битови на покажувачот, можеме да го искористиме овој простор за складирање на дополнителни податоци - како во случајот со споменатите означени покажувачи. Концептуално, ова е една од најголемите промени во историјата на Objective-C, иако не е пазарна карактеристика - така што повеќето корисници нема да знаат како Apple го движи Objective-C напред.
Што се однесува до корисните податоци што можат да се складираат во преостанатиот простор на таков означен покажувач, Objective-C, на пример, сега ги користи за складирање на т.н. референтен број (број на референци). Претходно, бројот на референци беше зачуван на друго место во меморијата, во хеш-табела подготвена за него, но ова може да го забави целиот систем во случај на голем број повици alloc/dealloc/retain/release. Табелата мораше да се заклучи поради безбедноста на конецот, така што референтниот број на два објекти во две нишки не можеше да се промени истовремено. Сепак, оваа вредност е ново вметната во остатокот од т.н isa индикатори. Ова е уште една незабележлива, но огромна предност и забрзување во иднина. Сепак, ова никогаш не може да се постигне во 32-битна архитектура.
Информациите за поврзаните објекти, дали објектот е слабо референциран, дали е неопходно да се генерира деструктор за објектот итн., исто така се ново вметнати во преостанатото место на покажувачите на објектите. Благодарение на оваа информација, Objective-C траењето е во состојба суштински да го забрза траењето, што се рефлектира во брзината на секоја апликација. Од тестирање, ова значи околу 40-50% забрзување на сите повици за управување со меморијата. Само со префрлување на 64-битни покажувачи и користење на овој нов простор.
Заклучок
Иако конкурентите ќе се обидат да ја шират идејата дека преместувањето во 64-битна архитектура е непотребно, веќе ќе знаете дека ова е само многу неинформирано мислење. Вистина е дека едноставното префрлување на 64 битни без приспособување на јазикот или апликациите на него не значи ништо - дури и го успорува целиот систем. Но, новиот A7 користи модерен ARM64 со нов сет на инструкции, а Apple се потруди да го модернизира целиот јазик Objective-C и да ги искористи новите можности - оттука и ветеното забрзување.
Овде споменавме голем број причини зошто 64-битната архитектура е вистинскиот чекор напред. Тоа е уште една револуција „под хаубата“, благодарение на која Apple ќе се обиде да остане во првите редови не само со дизајнот, корисничкиот интерфејс и богатиот екосистем, туку главно со најсовремените технологии на пазарот.
Многу неинформирани Андроид/Самсунг луѓе треба да ја прочитаат оваа статија и потоа да се сокријат во аголот.
Па, мораме да ги жалиме. Со години ги оправдуваа трагичните UX и UI на Android велејќи дека го имаат технолошки најнапредниот оперативен систем со карактеристики и сега открија дека повторно заостануваат со години :)
Ако човек не е овца и слуша реклами (а го бива во тоа), тогаш по лично искуство може да формира свое мислење :-).
Го пробувам речиси целиот натпревар и формирам свое мислење.
За мене ми треба нов мобилен телефон со супер високи перформанси, бидејќи не трошам многу на него. Тоа е Ми требаат помалку перформанси за помала цена ;-). Можеби би сакал побавен со поголема батерија.
Од друга страна, новиот прочак би бил корисен за iPad каде што има многу игри :-).
Јас сум Android/HTC :) затоа што ми е доста забавно, а моето хоби е искоренувањето и претворањето на висококвалитетниот HW во брз борец. И iOS нема да ми го дозволи тоа. (Не е ни потребно. Повеќе или помалку, iOS е дизајниран така што сè работи како што треба и не мора да правите ништо таму. Кога ќе престанам да уживам во играњето, ќе купам јаболко и ќе уживам во него). Но, не знам зошто продолжувате да се напаѓате како деца. Apple е целосно како Андроид. Тоа е исто како да споредуваш демократија со диктатура и слично... Ја гледав конференцијата кога беше претставен iPhone 5S и покрај тоа што не поседувам ништо од Apple, ми се допаднаа 64 битот и другите подобрувања што дојдоа. Но не затоа што сум искомплексиран хонимир тртко кој седи позади компјутер и брка Андроид или Епл, туку затоа што го гледам НАПРЕДОКОТ што нема да ме чека долго. Луѓето треба да почнат да работат навистина напорно за да немаат време да се занимаваат со срања, учтиво кажано.
конструктивен придонес од другата страна :) kiez би ги отворил очите на преостанатите 99% андроид позитивни
можеби прво треба да се разговара за 99% од фанатиците на јаболкото, па после да имаме конструктивен разговор
многу сложени работи објаснети едноставно... фала
Одлична статија! Да, се согласувам дека корисниците на Android/WP треба да ја читаат оваа статија како задолжително. Наместо да тролате и паметно да зборувате за тоа „како 64б е бескорисен во мобилните“…
веројатно никогаш не сте имале wp во рака, инаку не би го имале ова
Самсунг од првите успеси на пазарот на мобилни телефони не направи ништо друго освен да ја оцрни конкуренцијата, но во суштина цело ова време ги следи неговите стапки. Apple отсекогаш бил пример за технолошките компании и ако се фокусираат само на исмејување и постојано дезинформирање на клиентите, наскоро ќе се сопнат. Apple отсекогаш одел по својот пат и секогаш било прашање на многу добар тајминг, што им недостига на многу конкурентни компании во индустријата.
Може да се каже дека Самсунг јава на бранот и ги користи неговите можности. Се обложил на Андроид, има одличен HW, самиот прави многу работи, има пристојна поддршка. И како и секоја предаторска азиска компанија, таа ги користи сите можности за рекламирање. И секако дека краде и копира. Она во што е добар „коси очи“ е копирање. Многу добро пресметале дека е многу поевтино отколку да се оди по свој пат, чекор по чекор. И како силна компанија, таа едноставно може да си го дозволи ова. Сепак…
Само не ми е јасно зошто постојано се зголемува брзината на телефонот, дај ми неколку примери за што го користиш, полека нема смисла да ги зголемувам перформансите на мобилниот, но ќе го тргнам зборот маркетинг .
Игри, слабо оптимизирани игри. Исто така, Transport Tycoon на iPad 3 не работи толку непречено и во иста резолуција како што работи на работната површина. Пример.
Само не ми е јасно зошто постојано се зголемува брзината на телефонот, дај ми неколку примери за што го користиш, полека нема смисла да ги зголемувам перформансите на мобилниот, ако го тргнам зборот маркетинг од него .
За обработка на видео, аудио и слика. И на игрите.
На секој што користи iPhone само за повикување, праќање пораки и повремено читање или праќање мејлови и повремено сурфање на Интернет, ќе му треба iPhone 4. Верувам дека има многу такви корисници. Не секој има потреба од најдобриот телефон на светот :-)
овци
Зарем физичката размена меѓу хардверот и софтверот не ви значи ништо? Ова малку ме потсетува на крајот на 19 век, кога тогашните физичари велеа дека сè во физиката е веќе откриено и нема потреба да се продолжи (деценија пред теоријата на релативноста и три пред квантната теорија) .
Потрагата по најдоброто никогаш не завршува. Понекогаш софтверот води, а понекогаш хардверот. Но, ако едниот заглави, нема да го пушти другиот да си оди. Нема да бидеме толку себични кон нашите потомци :) Така да за вашиот коментар - побрзиот телефон ќе овозможи помоќни апликации, кои ќе можат да направат многу повеќе од дискови. И некогаш работи за кои ни денешните компјутери не се доволни. Иднината е возбудлива.
Точно :)
Добра статија, но не разбирам зошто Apple не стави 7GB RAM во А2. Да, мултитаскингот на iOS не е таков што нужно се потребни 2 GB, но со оглед на двојно поголемата должина на покажувачот на меморијата, би било многу посоодветно.
Но, инаку, се согласувам дека 64-битен процесор е „непотребен“ за мобилен телефон, исто како што беше непотребен ретински дисплеј или оптички глушец наместо топка - сите овие изуми беа означени како „непотребни“, но според мене точниот збор е „безвременски“, затоа што еднаш мора да дојде и Apple не се плаши да излезе со нешто ново.
Го поддржувам тоа. За жал, дури и „бескорисно“ не е точен израз. Непотребно значи нешто чиј приоритет човек не го знае. Тоа дефинитивно не е точно. На брзината можеби нема потреба од таква брзина, но дефинитивно ќе ја препознае. И кога софтверот ќе го достигне хардверот, повторно ќе има простор за подобрување.
Секако, јас сум за, мислам дека iP5 е навистина прилично брз смартфон, така што 5S воопшто не би морал да биде 64 битен. Но, еден ден некој мораше повторно да се справи со тоа и тоа беше Apple и беше сега. Колку што се сеќавам, експертите зборуваа и за тоа како 64-битните процесори ќе бидат бескорисни дури и кај компјутерите.
За мене, како ИТ лаик кој речиси не успеал матрица, заклучокот е важен. Целата статија (поддржана од коментарите) ми изгледа прилично прониклива, и иако нема да можам да ја објаснам, А7 со 64-битна архитектура е чекор напред. Фала за информацијата.
Би го уредил насловот на статијата, бидејќи е маркетиншки потег. Секоја иновација во суштина е маркетинг потег. :-)
Не мислам. На пример, Samsung користи маркетинг потези. Тие се појавуваат со RAM меморија, која на iPhone воопшто не му треба. Тие се извлекуваат со функции кои воопшто не се употребливи. Нивните намерно ги зголемуваат перформансите на процесорот за тестови. итн. Тоа е маркетинг, иако да, тоа е погрешно, со што не треба само да се извлечат ;)