Рекламаро пӯшед

Майк Эш дар блоги худ бахшида шудааст оқибатҳои амалии гузариш ба меъмории 64-бит дар iPhone 5S. Ин мақола ба бозёфтҳои ӯ такя мекунад.

Сабаби ин матн асосан ба он вобаста аст, ки миқдори зиёди маълумоти бардурӯғ паҳн карда мешавад, ки iPhone 5s бо протсессори 64-битии ARM воқеан барои корбарон ва бозор чӣ маъно дорад. Дар ин ҷо мо кӯшиш хоҳем кард, ки маълумоти объективӣ дар бораи кор, қобилиятҳо ва оқибатҳои ин гузариш барои таҳиягарон пешниҳод кунем.

"64 бит"

Ду қисмати протсессор мавҷуд аст, ки тамғаи "X-bit" метавонад ба онҳо ишора кунад - паҳнои регистрҳои бутун ва паҳнои нишондиҳандаҳо. Хушбахтона, дар аксари протсессорҳои муосир ин паҳнои якхелаанд, аз ин рӯ дар мавриди A7 ин маънои регистрҳои бутуни 64-бит ва нишондиҳандаҳои 64-битро дорад.

Бо вуҷуди ин, бояд қайд кард, ки "64bit" чӣ маъно надорад: Андозаи суроғаи физикии RAM. Миқдори битҳо барои муошират бо RAM (ҳамин тавр миқдори RAM-и дастгоҳ метавонад дастгирӣ кунад) ба шумораи битҳои CPU алоқаманд нест. Протсессорҳои ARM дар ҳама ҷо аз 26 то 40 бит суроғаҳо доранд ва онҳоро новобаста аз қисми боқимондаи система иваз кардан мумкин аст.

  • Андозаи автобуси маълумот. Миқдори маълумоте, ки аз RAM ё хотираи буферӣ гирифта шудааст, ба ҳамин монанд аз ин омил новобаста аст. Дастурҳои протсессори инфиродӣ метавонанд миқдори гуногуни маълумотро талаб кунанд, аммо онҳо ё ба қисмҳо фиристода мешаванд ё аз хотира бештар аз зарурӣ гирифта мешаванд. Он аз андозаи квантии маълумот вобаста аст. iPhone 5 аллакай маълумотро аз хотира дар квантҳои 64-бит қабул мекунад (ва протсессори 32-бит дорад) ва мо метавонем ба андозаи то 192 бит дучор шавем.
  • Ҳама чизе, ки ба нуқтаи шинокунанда алоқаманд аст. Андозаи чунин регистрҳо (FPU) боз аз кори дохилии протсессор вобаста нест. ARM аз қабл аз ARM64 (протсессори 64-битии ARM) 64-бит FPU-ро истифода мебарад.

Афзалиятҳо ва нуқсонҳои умумӣ

Агар мо меъмории якхелаи 32 бит ва 64 битро муқоиса кунем, онҳо умуман он қадар фарқ намекунанд. Ин яке аз сабабҳои ошуфтагии умумии мардум дар ҷустуҷӯи сабабест, ки чаро Apple дар дастгоҳҳои мобилӣ низ ба 64-бит мегузарад. Аммо, ин ҳама аз параметрҳои мушаххаси протсессори A7 (ARM64) ва чӣ гуна Apple онро истифода мебарад, на танҳо аз он, ки протсессор дорои меъмории 64-бит аст.

Аммо, агар мо то ҳол ба фарқиятҳои байни ин ду меъморӣ назар андозем, мо якчанд фарқиятҳоро хоҳем ёфт. Аён аст, ки регистрҳои бутуни 64-бит метавонанд ададҳои бутуни 64-битро самараноктар идора кунанд. Ҳатто пештар, бо онҳо дар протсессори 32-битӣ кор кардан мумкин буд, аммо ин одатан маънои тақсим кардани онҳоро ба қисмҳои дарозии 32-бит дошт, ки боиси суст шудани ҳисобҳо мешуд. Ҳамин тавр, протсессори 64-бит метавонад ба таври умум бо намудҳои 64-битӣ ҳамон тавре, ки бо намудҳои 32-битӣ зуд ҳисоб карда шавад. Ин маънои онро дорад, ки барномаҳое, ки одатан намудҳои 64-битро истифода мебаранд, метавонанд дар протсессори 64-бит хеле тезтар кор кунанд.

Гарчанде ки 64bit ба ҳаҷми умумии хотираи RAM, ки протсессори истифода бурда метавонад, таъсир намерасонад, он метавонад кор бо қисмҳои калони RAM дар як барномаро осонтар кунад. Ҳар як барномаи ягонае, ки дар протсессори 32-бит кор мекунад, танҳо тақрибан 4 ГБ фазои суроға дорад. Бо дарназардошти он, ки системаи оператсионӣ ва китобхонаҳои стандартӣ чизеро ишғол мекунанд, ин барномаро дар ҷое аз 1 то 3 ГБ барои истифодаи барнома мегузорад. Аммо, агар системаи 32-бит зиёда аз 4 ГБ хотираи оперативӣ дошта бошад, истифодаи он хотира каме мушкилтар аст. Мо маҷбурем, ки системаи пардозандаро маҷбур кунем, ки ин қисмҳои хотираи калонтари барномаи худро харита кунад (виртуализатсияи хотира) ё мо метавонем барномаро ба якчанд равандҳо тақсим кунем (дар он ҷо ҳар як раванд боз аз ҷиҳати назариявӣ 4 ГБ хотираи дастрас барои суроғаи мустақим мавҷуд аст).

Аммо, ин "хакерҳо" чунон душвор ва сустанд, ки ҳадди аққал барномаҳо аз онҳо истифода мебаранд. Дар амал, дар протсессори 32-бит, ҳар як барнома танҳо 1-3 ГБ хотираи худро истифода мебарад ва RAM бештар дастрасро метавон барои иҷро кардани якчанд барнома дар як вақт истифода бурд ё ин хотираро ҳамчун буфер (кэш) истифода бурд. Ин истифодаҳо амалӣанд, аммо мо мехоҳем, ки ҳама гуна барномаҳо тавонанд ба осонӣ қисмҳои хотираи аз 4 ГБ калонтарро истифода баранд.

Акнун мо ба даъвои зуд-зуд (воқеан нодуруст) мерасем, ки бе хотираи зиёда аз 4 ГБ меъмории 64-бит бефоида аст. Фазои суроғаи калонтар ҳатто дар системае, ки хотираи кам дорад, муфид аст. Файлҳои хариташудаи хотира як воситаи қулай мебошанд, ки дар он як қисми мундариҷаи файл ба хотираи раванд мантиқӣ пайваст карда мешаванд, бе он ки тамоми файл ба хотира бор карда шавад. Система метавонад, масалан, тадриҷан файлҳои калонро аз иқтидори RAM чанд маротиба калонтар коркард кунад. Дар системаи 32-битӣ, чунин файлҳои калон наметавонанд ба таври боэътимод харитаи хотира карда шаванд, дар ҳоле ки дар системаи 64-битӣ, ба шарофати фазои суроғаи хеле калонтар он як пораи торт аст.

Бо вуҷуди ин, андозаи калонтари нишондиҳандаҳо як камбудии калон дорад: дар акси ҳол, барномаҳои якхела дар протсессори 64-бит ба хотираи бештар ниёз доранд (ин нишондиҳандаҳои калонтар бояд дар ҷое нигоҳ дошта шаванд). Азбаски нишондиҳандаҳо як қисми зуд-зуд дар барномаҳо мебошанд, ин фарқият метавонад ба кэш бор кунад, ки дар навбати худ боиси суст шудани тамоми система мегардад. Ҳамин тавр, дар оянда мо мебинем, ки агар мо танҳо меъмории протсессорро ба 64-бит иваз кунем, он воқеан тамоми системаро суст мекунад. Ҳамин тавр, ин омил бояд бо оптимизатсияи бештар дар ҷойҳои дигар мувозинат карда шавад.

Армстроном

A7, протсессори 64-бит, ки iPhone 5s-и навро таъмин мекунад, на танҳо протсессори муқаррарии ARM бо регистрҳои васеътар аст. ARM64 дорои беҳбудиҳои ҷиддиро нисбат ба версияи кӯҳнаи 32-бит дорад.

Протсессори Apple A7.

Нишондиҳанда

ARM64 нисбат ба 32-битии ARM ду маротиба зиёдтар регистрҳои бутунро дар бар мегирад (эҳтиёт бошед, ки шумора ва паҳнои регистрҳоро омехта накунед - мо дар бораи паҳно дар бахши "64-бит" сӯҳбат кардем. Ҳамин тавр, ARM64 ҳам регистрҳои васеъ ва ҳам ду маротиба зиёдтар дорад. қайд мекунад). ARM-и 32-бит аз 16 регистрҳои бутун дорад: як ҳисобкунаки барномавӣ (PC - рақами дастури ҷорӣро дар бар мегирад), нишондиҳандаи стек (нишондиҳанда ба функсияи иҷрошаванда), регистри истинод (нишондиҳанда барои бозгашт пас аз анҷом) аз функсия) ва 13 боқимонда барои истифодаи барнома мебошанд. Аммо, ARM64 дорои 32 регистри бутун, аз ҷумла як реестри сифрӣ, реестри истинод, нишондиҳандаи чаҳорчӯба (монанди нишондиҳандаи стек) ва яке барои оянда маҳфуз аст. Ин ба мо 28 регистрро барои истифодаи барномаҳо мегузорад, ки беш аз ду баробар аз 32-битии ARM. Ҳамзамон, ARM64 шумораи регистрҳои рақами шинокунандаро (FPU) аз 16 то 32 регистрҳои 128-битӣ ду баробар зиёд кард.

Аммо чаро шумораи реестрҳо ин қадар муҳим аст? Хотира умуман нисбат ба ҳисобҳои CPU сусттар аст ва хондан/навиштан метавонад вақти хеле дарозро талаб кунад. Ин протсессори тезро маҷбур мекунад, ки интизори хотираро нигоҳ дорад ва мо ба ҳадди суръати табиии система расидем. Протсессорҳо кӯшиш мекунанд, ки ин нуқсонро бо қабатҳои буферҳо пинҳон кунанд, аммо ҳатто зудтарин (L1) нисбат ба ҳисобкунии протсессор сусттар аст. Аммо, регистрҳо ҳуҷайраҳои хотираи мустақим дар протсессори мебошанд ва хондан/навиштани онҳо ба қадри кофӣ зуд аст, ки протсессоро суст накунад. Шумораи регистрҳо амалан маънои ҳаҷми хотираи тезтарин барои ҳисобҳои протсессориро дорад, ки ба суръати тамоми система таъсири калон мерасонад.

Дар айни замон, ин суръат ба дастгирии хуби оптимизатсия аз компилятор ниёз дорад, то забон ин регистрҳоро истифода барад ва набояд ҳама чизро дар хотираи умумӣ (суст) нигоҳ дорад.

Маҷмӯи дастур

ARM64 инчунин ба маҷмӯи дастурҳо тағйироти ҷиддӣ меорад. Маҷмӯи дастурҳо маҷмӯи амалҳои атомист, ки протсессор метавонад иҷро кунад (масалан, 'ADD register1 register2' ададҳоро дар ду регистр илова мекунад). Функсияҳое, ки барои забонҳои алоҳида дастрасанд, аз ин дастурҳо иборатанд. Функсияҳои мураккабтар бояд дастурҳои бештарро иҷро кунанд, то онҳо сусттар шаванд.

Нав дар ARM64 дастурҳо оид ба рамзгузории AES, функсияҳои hash SHA-1 ва SHA-256 мебошанд. Ҳамин тавр, ба ҷои татбиқи мураккаб, танҳо забон ин дастурро меномад, ки он ба ҳисобкунии чунин функсияҳо суръати бузург меорад ва умедворем, ки амният дар барномаҳо илова карда шавад. масалан. ID-и нави Touch инчунин ин дастурҳоро дар рамзгузорӣ истифода мебарад, ки суръат ва амнияти воқеиро фароҳам меорад (аз ҷиҳати назария, ҳамлакунанда бояд худи протсессоро барои дастрасӣ ба додаҳо тағир диҳад - агар ҳадди аққал бо назардошти андозаи миниатюрии он амалан ғайриимкон бошад).

Мутобиқат бо 32bit

Бояд қайд кард, ки A7 метавонад пурра дар реҷаи 32-бит бидуни ниёз ба эмуляция кор кунад. Ин маънои онро дорад, ки iPhone 5s-и нав метавонад замимаҳои дар 32-битии ARM тартибдодашударо бидуни сустшавӣ иҷро кунад. Аммо, он гоҳ он функсияҳои нави ARM64-ро истифода бурда наметавонад, аз ин рӯ ҳамеша барои сохтани як сохтори махсус танҳо барои A7, ки бояд тезтар кор кунад, муфид аст.

Тағйироти вақти корӣ

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 суст кунад. Аз сабаби бехатарии ришта ҷадвал бояд қулф карда шавад, аз ин рӯ шумораи истинодҳои ду объект дар ду ришта дар як вақт тағир дода намешавад. Аммо, ин арзиш ба боқимондаи ба ном нав ворид карда мешавад Иш нишондиҳандаҳо. Ин боз як бартарии ноаён, вале бузург ва суръат дар оянда аст. Аммо, ин ҳеҷ гоҳ дар меъмории 32-бит ба даст оварда намешавад.

Маълумот дар бораи объектҳои алоқаманд, ки оё ба объект заиф истинод шудааст, оё зарурати тавлиди харобкунанда барои объект ва ғайра, инчунин ба ҷои боқимондаи нишондодҳои объектҳо ба нав ворид карда мешавад.. Ба шарофати ин маълумот, Objective-C вақти корӣ қодир аст, ки вақти корро ба таври куллӣ суръат бахшад, ки дар суръати ҳар як барнома инъикос меёбад. Аз санҷиш, ин маънои тақрибан 40-50% суръати тамоми зангҳои идоракунии хотираро дорад. Танҳо тавассути гузаштан ба нишондиҳандаҳои 64-бит ва истифодаи ин фазои нав.

Хулоса

Ҳарчанд рақибон кӯшиш мекунанд, ки ақидаро паҳн кунанд, ки гузаштан ба меъмории 64-бит нолозим аст, шумо аллакай хоҳед донист, ки ин танҳо як андешаи хеле бехабар аст. Дуруст аст, ки гузариш ба 64-бит бидуни мутобиқ кардани забон ё замимаҳои шумо ҳеҷ маъно надорад - он ҳатто тамоми системаро суст мекунад. Аммо A7-и нав як ARM64-и муосирро бо маҷмӯи дастурҳои нав истифода мебарад ва Apple барои навсозии тамоми забони Objective-C ва истифода аз қобилиятҳои нав душворӣ кашидааст - аз ин рӯ суръати ваъдашуда.

Дар ин ҷо мо шумораи зиёди сабабҳоро зикр кардем, ки чаро меъмории 64-бит қадами дуруст ба пеш аст. Ин боз як инқилоби "дар зери сарпӯш" аст, ки ба шарофати он Apple кӯшиш хоҳад кард, ки на танҳо бо тарроҳӣ, интерфейси корбар ва экосистемаи бой, балки асосан бо технологияҳои муосиртарин дар бозор дар сафи пеш бимонад.

Сарчашма: mikeash.com
.