Мике Асх посвећен на свом блогу практичне импликације преласка на 64-битну архитектуру у иПхоне 5С. Овај чланак се ослања на његове налазе.
Разлог за овај текст је углавном због велике количине дезинформација које се шире о томе шта нови иПхоне 5с са 64-битним АРМ процесором заправо значи за кориснике и тржиште. Овде ћемо покушати да донесемо објективне информације о перформансама, могућностима и импликацијама ове транзиције за програмере.
"64 бит"
Постоје два дела процесора на која се ознака „Кс-бит“ може односити – ширина целобројних регистара и ширина показивача. На срећу, на већини модерних процесора ове ширине су исте, тако да у случају А7 то значи 64-битне целобројне регистре и 64-битне показиваче.
Међутим, подједнако је важно истаћи шта „64бит“ НЕ значи: Величина физичке адресе РАМ-а. Број битова за комуникацију са РАМ-ом (дакле, количина РАМ-а коју уређај може да подржи) није повезан са бројем ЦПУ битова. АРМ процесори имају било где између 26- и 40-битних адреса и могу се мењати независно од остатка система.
- Величина магистрале података. Количина података примљених из РАМ-а или бафер меморије је на сличан начин независна од овог фактора. Појединачне инструкције процесора могу захтевати различите количине података, али се они или шаљу у деловима или добијају више него што је потребно из меморије. Зависи од величине кванта података. иПхоне 5 већ прима податке из меморије у 64-битним квантима (и има 32-битни процесор), а можемо наићи на величине до 192 бита.
- Било шта у вези са покретним зарезом. Величина таквих регистара (ФПУ) је поново независна од унутрашњег рада процесора. АРМ користи 64-битни ФПУ од пре АРМ64 (64-битни АРМ процесор).
Опште предности и мане
Ако упоредимо иначе идентичне 32-битне и 64-битне архитектуре, оне углавном нису толико различите. Ово је један од разлога за општу конфузију јавности која тражи разлог зашто Аппле прелази на 64-бит и на мобилним уређајима. Међутим, све долази из специфичних параметара процесора А7 (АРМ64) и начина на који га Аппле користи, а не само из чињенице да процесор има 64-битну архитектуру.
Међутим, ако ипак погледамо разлике између ове две архитектуре, наћи ћемо неколико разлика. Очигледно је да 64-битни целобројни регистри могу ефикасније да рукују 64-битним целим бројевима. И раније је са њима било могуће радити на 32-битним процесорима, али то је обично значило да се они поделе на 32-битне дугачке делове, што је изазвало спорије прорачуне. Дакле, 64-битни процесор може генерално да рачуна са 64-битним типовима једнако брзо као и са 32-битним. То значи да апликације које углавном користе 64-битне типове могу радити много брже на 64-битном процесору.
Иако 64-бит не утиче на укупну количину РАМ-а који процесор може да користи, може олакшати рад са великим деловима РАМ-а у једном програму. Сваки појединачни програм који ради на 32-битном процесору има само око 4 ГБ адресног простора. Узимајући у обзир да оперативни систем и стандардне библиотеке заузимају нешто, ово оставља програму негде између 1-3 ГБ за коришћење апликације. Међутим, ако 32-битни систем има више од 4 ГБ РАМ-а, коришћење те меморије је мало компликованије. Морамо да прибегнемо присиљавању оперативног система да мапира ове веће делове меморије за наш програм (виртуелизација меморије), или можемо да поделимо програм на више процеса (где сваки процес опет теоретски има 4 ГБ меморије доступне за директно адресирање).
Међутим, ови "хакови" су толико тешки и спори да их користи минимум апликација. У пракси, на 32-битном процесору, сваки програм ће користити само својих 1-3 ГБ меморије, а више расположиве РАМ меморије може се користити за покретање више програма истовремено или коришћење ове меморије као бафера (кеширање). Ове употребе су практичне, али бисмо желели да било који програм може лако да користи делове меморије веће од 4 ГБ.
Сада долазимо до честе (у ствари нетачне) тврдње да је без више од 4 ГБ меморије 64-битна архитектура бескорисна. Већи адресни простор је користан чак и на систему са мање меморије. Датотеке мапиране у меморију су згодан алат где је део садржаја датотеке логички повезан са меморијом процеса без потребе да се цела датотека учитава у меморију. Тако систем може, на пример, постепено да обрађује велике датотеке много пута веће од капацитета РАМ-а. На 32-битном систему, тако велике датотеке не могу се поуздано мапирати у меморију, док је на 64-битном систему то једноставно, захваљујући много већем адресном простору.
Међутим, већа величина показивача доноси и један велики недостатак: иначе идентичним програмима је потребно више меморије на 64-битном процесору (ови већи показивачи морају негде да се чувају). Пошто су показивачи чест део програма, ова разлика може да оптерети кеш меморију, што заузврат доводи до тога да цео систем ради спорије. Дакле, у перспективи, можемо видети да ако само променимо архитектуру процесора на 64-битну, то би заправо успорило цео систем. Дакле, овај фактор мора бити уравнотежен са више оптимизација на другим местима.
АРМКСНУМКС
А7, 64-битни процесор који покреће нови иПхоне 5с, није само обичан АРМ процесор са ширим регистрима. АРМ64 садржи велика побољшања у односу на старију, 32-битну верзију.
регистар
АРМ64 садржи дупло више целобројних регистара од 32-битног АРМ-а (пазите да не помешате број и ширину регистара – говорили смо о ширини у одељку „64-бит”. Дакле, АРМ64 има и дупло шире регистре и дупло више регистри). 32-битни АРМ има 16 целобројних регистара: један програмски бројач (ПЦ - садржи број тренутне инструкције), показивач стека (показивач на функцију у току), регистар везе (показивач на повратак након завршетка функције), а преосталих 13 су за употребу у апликацијама. Међутим, АРМ64 има 32 целобројна регистра, укључујући један нулти регистар, регистар везе, показивач оквира (слично показивачу стека) и један резервисан за будућност. Ово нам оставља 28 регистара за употребу у апликацијама, што је више него двоструко више од 32-битног АРМ-а. У исто време, АРМ64 је удвостручио број регистара бројева са покретним зарезом (ФПУ) са 16 на 32 128-битна регистра.
Али зашто је број регистара толико важан? Меморија је генерално спорија од ЦПУ прорачуна и читање/писање може потрајати веома дуго. Због тога би брзи процесор морао да чека на меморију, а ми бисмо достигли природно ограничење брзине система. Процесори покушавају да сакрију овај хендикеп слојевима бафера, али чак и најбржи (Л1) је и даље спорији од прорачуна процесора. Међутим, регистри су меморијске ћелије директно у процесору и њихово читање/писање је довољно брзо да не успори процесор. Број регистара практично значи количину најбрже меморије за процесорске прорачуне, што у великој мери утиче на брзину целог система.
Истовремено, овој брзини је потребна добра подршка за оптимизацију од компајлера, тако да језик може да користи ове регистре и да не мора све да складишти у општу (споро) меморију апликације.
Упутства
АРМ64 такође доноси велике промене у скупу инструкција. Скуп инструкција је скуп атомских операција које процесор може да изведе (нпр. 'АДД регистер1 регистер2' додаје бројеве у два регистра). Функције доступне појединачним језицима састоје се од ових упутстава. Сложеније функције морају извршити више инструкција, тако да могу бити спорије.
Ново у АРМ64 су упутства за АЕС енкрипцију, СХА-1 и СХА-256 хеш функције. Дакле, уместо сложене имплементације, само ће језик звати ову инструкцију – што ће донети огромно убрзање израчунавања таквих функција и, надамо се, додатну сигурност у апликацијама. На пример. нови Тоуцх ИД такође користи ова упутства у шифровању, омогућавајући стварну брзину и безбедност (у теорији, нападач би морао да модификује сам процесор да би приступио подацима – што је у најмању руку непрактично с обзиром на његову минијатурну величину).
Компатибилност са 32бит
Важно је напоменути да А7 може у потпуности да ради у 32-битном режиму без потребе за емулацијом. То значи да нови иПхоне 5с може да покреће апликације компајлиране на 32-битном АРМ-у без икаквог успоравања. Међутим, тада не може да користи нове функције АРМ64, тако да увек вреди направити посебну верзију само за А7, који би требало да ради много брже.
Промене времена извођења
Рунтиме је код који додаје функције програмском језику, које може да користи док је апликација покренута, све до превођења. Пошто Аппле не мора да одржава компатибилност апликација (да 64-битни бинарни систем ради на 32-битном), могли би себи приуштити још неколико побољшања језика Објецтиве-Ц.
Један од њих је тзв означени показивач (означен индикатор). Обично се објекти и показивачи на те објекте чувају у одвојеним деловима меморије. Међутим, нови типови показивача дозвољавају класама са мало података да складиште објекте директно у показивачу. Овај корак елиминише потребу да се меморија додели директно за објекат, само креирајте показивач и објекат унутар њега. Означени показивачи су подржани само у 64-битној архитектури и због чињенице да више нема довољно простора у 32-битном показивачу за складиштење довољно корисних података. Стога, иОС, за разлику од ОС Кс, још увек није подржавао ову функцију. Међутим, доласком АРМ64, ово се мења, а иОС је сустигао ОС Кс и по овом питању.
Иако су показивачи дугачки 64 бита, на АРМ64 се само 33 бита користе за сопствену адресу показивача. А ако смо у могућности да поуздано демаскирамо остатак битова показивача, можемо користити овај простор за складиштење додатних података – као у случају поменутих означених показивача. Концептуално, ово је једна од највећих промена у историји Објецтиве-Ц, иако није тржишна карактеристика - тако да већина корисника неће знати како Аппле напредује са Објецтиве-Ц.
Што се тиче корисних података који се могу ускладиштити у преосталом простору овако означеног показивача, Објецтиве-Ц га, на пример, сада користи за складиштење тзв. број референци (број референци). Раније је референтни број био ускладиштен на другом месту у меморији, у хеш табели припремљеној за то, али би то могло да успори цео систем у случају великог броја позива аллоц/деаллоц/ретаин/релеасе. Табела је морала да буде закључана због безбедности нити, тако да број референци два објекта у две нити није могао да се мења истовремено. Међутим, ова вредност се ново убацује у остатак тзв иса индикатори. Ово је још једна неупадљива, али огромна предност и убрзање у будућности. Међутим, ово се никада не би могло постићи у 32-битној архитектури.
Информације о придруженим објектима, да ли је објекат слабо референциран, да ли је потребно генерисати деструктор за објекат итд., такође се ново убацују на преостало место показивача на објекте. Захваљујући овим информацијама, Објецтиве-Ц рунтиме је у стању да суштински убрза време извршавања, што се огледа у брзини сваке апликације. Из тестирања, то значи око 40-50% убрзања свих позива за управљање меморијом. Само преласком на 64-битне показиваче и коришћењем овог новог простора.
Закључак
Иако ће конкуренти покушати да шире идеју да је прелазак на 64-битну архитектуру непотребан, већ ћете знати да је ово само врло необавештено мишљење. Истина је да једноставно прелазак на 64-битни без прилагођавања језика или апликација томе заправо не значи ништа – чак успорава цео систем. Али нови А7 користи модеран АРМ64 са новим скупом инструкција, а Аппле се потрудио да модернизује цео Објецтиве-Ц језик и искористи предности нових могућности – отуда обећано убрзање.
Овде смо поменули велики број разлога зашто је 64-битна архитектура прави корак напред. То је још једна револуција „испод хаубе“, захваљујући којој ће Епл покушати да остане на челу не само дизајном, корисничким интерфејсом и богатим екосистемом, већ углавном најсавременијим технологијама на тржишту.
Многи неупућени Андроид/Самсунг људи би требало да прочитају овај чланак, а затим да се сакрију у ћошак.
Па, мора нам их бити жао. Годинама су оправдавали трагични УКС и УИ Андроида говорећи да имају технолошки најнапреднији ОС са функцијама, а сада су открили да су поново годинама иза :)
Ако човек није овца и слуша рекламе (а у томе је добар), онда после личног искуства може да формира своје мишљење :-).
Покушавам скоро сву конкуренцију и формирам своје мишљење.
За мене је потребан нови мобилни телефон супер високих перформанси, јер не трошим много на њега. То је Треба ми мање перформанси за мању цену ;-). Можда бих више волео спорији са већом батеријом.
С друге стране, нови процак би био користан за иПад где има доста игрица :-).
Ја сам Андроид/ХТЦ :) јер ми је то прилично забавно, а руковање и претварање висококвалитетног ХВ-а у брзи борац је мој хоби. А иОС ми то не дозвољава. (Није ни потребно. Мање-више, иОС је дизајниран тако да све ради како треба и да ту не морате ништа да радите. Кад престанем да уживам у игри, купићу јабуку и уживати). Али не знам зашто се нападате као деца. Аппле је потпуно као Андроид. То је као да поредим демократију са диктатуром и слично... Гледао сам конференцију када је представљен иПхоне 5С и упркос чињеници да не поседујем ништа од Аппле-а, свидела ми се 64-битна и друга побољшања која су дошла. Али не зато што сам комплексан хонимир тртко који седи за рачунаром и јури Андроид или Аппле, већ зато што видим НАПРЕДАК који ме неће натерати да дуго чекам. Људи би требало да почну да раде јако напорно да немају времена да се баве срањима, уљудно речено.
конструктиван допринос са друге стране :) киез то би отворило очи преосталих 99% андроид позитивних
можда прво треба разговарати о 99% фанатика јабуке, па онда можемо конструктивно разговарати
веома сложене ствари објашњене једноставно... хвала
Одличан чланак! Да, слажем се да корисници Андроида/ВП-а морају обавезно прочитати овај чланак. Уместо тролања и паметних прича о томе „како је 64б бескористан у мобилним телефонима“…
вероватно никада нисте имали вп у руци, иначе не бисте имали ово
Од својих првих успеха на тржишту мобилних телефона, Самсунг није урадио ништа осим да је укаљао конкуренцију, али је у суштини све ово време пратио његове стопе. Аппле је одувек био узор технолошким компанијама, а ако се фокусирају само на исмевање и стално дезинформисање купаца, ускоро ће посрнути. Аппле је одувек ишао својим путем и увек је било питање веома доброг времена, што недостаје многим конкурентским компанијама у индустрији.
Могло би се рећи да Самсунг јаше на таласу и користи предности својих могућности. Кладио се на андроид, има одличан ХВ, сам прави много ствари, има пристојну подршку. И као свака грабежљива азијска компанија, користи све могућности рекламирања. И наравно краде и копира. Оно у чему су "косооки" добри је копирање. Добро су израчунали да је то много јефтиније него да иду својим путем, корак по корак. А као јака компанија, то једноставно може себи да приушти. Ипак…
Само не разумем зашто се брзина телефона стално повећава, дај ми неке примере за шта га користиш, полако ми нема смисла да повећавам перформансе мобилног телефона, али ћу избацити реч маркетинг .
Игре, лоше оптимизоване игре. Такође, Транспорт Тицоон на иПад-у 3 не ради тако глатко и у истој резолуцији као на десктопу. Пример.
Само не разумем зашто се брзина телефона стално повећава, дајте ми неке примере за шта га користите, полако ми нема смисла да повећавам перформансе мобилног телефона, ако избацим реч маркетинг из њега .
За видео, аудио и обраду слике. И на игре.
Свакоме ко користи иПхоне само за позивање, слање порука, повремено читање или слање мејлова и повремено сурфовање интернетом биће потребан иПхоне 4. Верујем да има много таквих корисника. Не треба свима најбољи телефон на свету :-)
овце
Да ли вам физички компромис између хардвера и софтвера ништа не значи? Ово ме помало подсећа на крај 19. века, када су тадашњи физичари говорили да је све у физици већ откривено и да нема потребе да се наставља (деценију пре теорије релативности и три пре квантне теорије) .
Потрага за најбољим никада не престаје. Понекад софтвер води, а понекад хардвер. Али ако се један заглави, неће пустити другог. Нећемо бити толико себични према нашим потомцима :) Па на ваш коментар - бржи телефон ће омогућити моћније апликације, које ће моћи много више од погона. А некада ствари за које ни данашњи компјутери нису довољни. Будућност је узбудљива.
Баш тако :)
Леп чланак, али не разумем зашто Аппле није ставио 7ГБ РАМ-а у А2. Да, иОС мултитаскинг није такав да је неопходно 2 ГБ, али с обзиром на дупло већу дужину показивача меморије, било би много прикладније.
Али иначе се слажем да је 64-битни процесор „непотребан“ за мобилни телефон, као што је био непотребан ретина дисплеј или оптички миш уместо куглице – сви ови изуми су означени као „непотребни“, али по мом мишљењу тачна реч је „безвремени“, јер једном мора доћи и Аппле се не плаши да смисли нешто ново.
Подржавам то. Нажалост, чак ни "бескорисно" није тачан израз. Непотребно значи нешто чији приоритет човек не познаје. То дефинитивно није тачно. Брзини можда неће бити потребна таква брзина, али ће је свакако препознати. А када софтвер ухвати корак са хардвером, поново ће бити простора за побољшање.
Наравно, ја сам за, мислим да је иП5 заиста прилично брз паметни телефон, тако да 5С уопште не би морао да буде 64-битни. Али једног дана је неко поново морао да се позабави тиме и то је био Аппле и био је сада. Откако се сећам, стручњаци су такође говорили о томе како ће 64-битни процесори бити бескорисни чак и у рачунарима.
За мене, као информатичког лаика који је умало пао на матрици, закључак је важан. Цео чланак (поткрепљен коментарима) ми делује прилично проницљиво, и иако нећу моћи да га објасним, А7 са 64-битном архитектуром је корак напред. Хвала за информације.
Уредио бих наслов чланка, јер је маркетиншки потез. Свака иновација је у суштини маркетиншки потез. :-)
Не мислим. На пример, Самсунг користи маркетиншке потезе. Појављују се са РАМ меморијом, која иПхонеу уопште није потребна. Они се извлаче са функцијама које уопште нису употребљиве. Њихово намерно повећање перформанси процесора за тестове. итд. То је маркетинг, мада да, обмањујуће је, што не би требало да се извуче ;)