اعلان بند کړئ

مایک ایش په خپل بلاګ کې وقف شوی په iPhone 64S کې د 5-bit آرکیټیکچر ته د بدلولو عملي اغیزې. دا مقاله د هغه موندنو ته اشاره کوي.

د دې متن دلیل اساسا د لوی مقدار غلط معلوماتو خپریدو له امله دی چې د نوي iPhone 5s د 64-bit ARM پروسیسر سره واقعیا د کاروونکو او بازار لپاره معنی لري. دلته به موږ هڅه وکړو چې د پراختیا کونکو لپاره د دې لیږد د فعالیت، وړتیاوو او اغیزو په اړه هدفي معلومات راوړو.

"64 بټ"

د پروسیسر دوه برخې شتون لري چې د "X-bit" لیبل ورته اشاره کولی شي - د انټیجر راجسترونو پلنوالی او د پوائنټرونو عرض. خوشبختانه ، په ډیری عصري پروسیسرونو کې دا عرضونه یو شان دي ، نو د A7 په قضیه کې دا پدې معنی ده چې د 64-bit انټیجر راجسترونه او 64-bit پوائنټرونه.

په هرصورت، دا مساوي مهم دی چې په ګوته کړئ چې "64bit" څه معنی نلري: د RAM فزیکي پته اندازه. د RAM سره د خبرو اترو لپاره د بټونو شمیر (په دې توګه د رام مقدار چې وسیله یې ملاتړ کولی شي) د CPU بټونو شمیر پورې اړه نلري. د ARM پروسیسرونه د 26- او 40-bit ادرسونو ترمینځ هرچیرې لري او د پاتې سیسټم څخه په خپلواکه توګه بدلیدلی شي.

  • د ډیټا بس اندازه. د رام یا بفر حافظې څخه ترلاسه شوي ډیټا مقدار په ورته ډول د دې فاکتور څخه خپلواک دی. د انفرادي پروسیسر لارښوونې ممکن د مختلف مقدار معلوماتو غوښتنه وکړي، مګر دوی یا په ټوټو کې لیږل کیږي یا د حافظې څخه د اړتیا څخه ډیر ترلاسه کیږي. دا د معلوماتو مقدار اندازه پورې اړه لري. iPhone 5 لا دمخه په 64-bit کوانټا کې د حافظې څخه ډیټا ترلاسه کوي (او 32-bit پروسیسر لري) ، او موږ کولی شو تر 192 بټونو پورې اندازه سره مخ شو.
  • هر هغه څه چې د تیریدو نقطې پورې تړاو لري. د دې ډول راجسترونو اندازه (FPU) بیا د پروسیسر د داخلي کارونو څخه خپلواکه ده. ARM د ARM64 (64-bit ARM پروسیسر) څخه دمخه 64-bit FPU کاروي.

عمومي ګټې او زیانونه

که موږ بل ډول ورته ورته 32bit او 64bit جوړښتونه پرتله کړو، دوی عموما دومره توپیر نلري. دا د خلکو د عمومي ګډوډۍ یو له دلیلونو څخه دی چې د یو دلیل په لټه کې دی چې ولې ایپل په ګرځنده وسیلو کې هم 64bit ته حرکت کوي. په هرصورت، دا ټول د A7 (ARM64) پروسیسر د ځانګړو پیرامیټونو څخه راځي او دا چې ایپل څنګه کاروي، نه یوازې د دې حقیقت څخه چې پروسیسر د 64-bit جوړښت لري.

په هرصورت، که موږ لاهم د دې دوو معماریو ترمنځ توپیرونو ته وګورو، موږ به ډیری توپیرونه ومومو. ښکاره خبره دا ده چې د 64-bit انټیجر راجستر کولی شي د 64-bit انټیجرونه په اغیزمنه توګه اداره کړي. حتی مخکې، دا ممکنه وه چې د 32-bit پروسیسرونو سره کار وکړي، مګر دا معمولا د 32-bit اوږد ټوټو ویشلو معنی لري، کوم چې د ورو محاسبې لامل کیږي. نو د 64-bit پروسیسر په عمومي ډول کولی شي د 64-bit ډولونو سره دومره ګړندي محاسبه کړي لکه د 32-bit سره. دا پدې مانا ده چې هغه غوښتنلیکونه چې عموما د 64-bit ډولونه کاروي کولی شي په 64-bit پروسیسر کې خورا ګړندی پرمخ بوځي.

که څه هم 64bit د RAM ټول مقدار اغیزه نه کوي چې پروسیسر یې کارولی شي، دا کولی شي په یوه برنامه کې د RAM د لویو برخو سره کار کول اسانه کړي. هر یو پروګرام چې په 32-bit پروسیسر کې روان وي یوازې د 4 GB پته ځای لري. د دې په پام کې نیولو سره چې عملیاتي سیسټم او معیاري کتابتونونه یو څه اخلي، دا پروګرام د غوښتنلیک کارولو لپاره د 1-3 GB تر منځ ځای پریږدي. په هرصورت، که چیرې د 32-bit سیسټم له 4 GB څخه ډیر رام ولري، د دې حافظې کارول یو څه پیچلي دي. موږ باید عملیاتي سیسټم مجبور کړو چې زموږ د برنامې (د حافظې مجازی کولو) لپاره د حافظې دا لویې برخې نقشه کړي ، یا موږ کولی شو برنامه په څو پروسو باندې وویشو (چیرې چې هره پروسه بیا په تیوریکي ډول د مستقیم ادرس لپاره 4 GB حافظه شتون لري).

په هرصورت، دا "هیک" خورا ستونزمن او ورو دي چې لږترلږه غوښتنلیکونه یې کاروي. په عمل کې، په 32-bit پروسیسر کې، هر برنامه به یوازې د 1-3 GB حافظه کاروي، او ډیر موجود RAM په ورته وخت کې د ډیری پروګرامونو چلولو لپاره کارول کیدی شي یا دا حافظه د بفر (کیچنګ) په توګه وکاروي. دا کارول عملي دي، مګر موږ غواړو چې کوم پروګرام په اسانۍ سره د 4GB څخه لوی حافظې څخه کار واخلي.

اوس موږ پرله پسې (په حقیقت کې غلط) ادعا ته راځو چې د 4GB څخه ډیر حافظې پرته ، د 64-bit جوړښت بې ګټې دی. د پتې لوی ځای حتی په سیسټم کې د کم حافظې سره ګټور دی. د حافظې نقشه شوي فایلونه یو لاسي وسیله ده چیرې چې د فایل مینځپانګې برخه په منطقي ډول د پروسې له حافظې سره تړلې وي پرته لدې چې ټوله فایل په حافظه کې بار شي. په دې توګه، سیسټم کولی شي، د بیلګې په توګه، په تدریجي ډول د رام ظرفیت څخه څو ځله لوی لوی فایلونه پروسس کړي. په 32-bit سیسټم کې، دا ډول لوی فایلونه د اعتبار وړ حافظه نقشه نشي کولی، پداسې حال کې چې په 64-bit سیسټم کې، دا د کیک یوه ټوټه ده، د ډیری لوی پته ځای څخه مننه.

په هرصورت، د پوائنټرونو لویه اندازه یو لوی زیان هم راوړي: که نه نو ورته پروګرامونه په 64-bit پروسیسر کې ډیرې حافظې ته اړتیا لري (دا لوی پوائنټرونه باید په یو ځای کې زیرمه شي). څرنګه چې پوائنټرونه د برنامو بار بار برخه ده، نو دا توپیر کولی شي کیچ بار کړي، کوم چې په پایله کې د ټول سیسټم د سست چلولو لامل کیږي. نو په لید کې ، موږ لیدلی شو چې که موږ یوازې د پروسیسر جوړښت 64-bit ته بدل کړو ، نو دا به واقعیا ټول سیسټم ورو کړي. نو دا فاکتور باید په نورو ځایونو کې د لا زیاتو اصلاح کولو سره متوازن وي.

آرمکسومکس

A7، د 64-bit پروسیسر چې نوي iPhone 5s ته ځواک ورکوي، یوازې د ARM منظم پروسیسر نه دی چې د پراخو راجسترونو سره. ARM64 په زاړه، 32-bit نسخه کې لوی پرمختګونه لري.

د ایپل A7 پروسیسر.

نوم لیکنه

ARM64 د 32-bit ARM په پرتله دوه چنده ډیری انټیجر راجسترونه لري (په پام کې ونیسئ چې د راجسترونو شمیر او عرض ګډوډ نه کړئ - موږ د "64-bit" برخه کې د عرض په اړه خبرې وکړې. نو ARM64 دواړه دوه چنده پراخه راجسترونه لري او دوه چنده ډیر ثبتونه). د 32-bit ARM 16 انټیجر راجسترونه لري: یو د برنامه کاونټر (PC - د اوسني لارښوونې شمیره لري)، یو سټیک پوینټر (په پرمختګ کې فعالیت ته اشاره کوي)، د لینک راجستر (د پای وروسته بیرته راستنیدو ته اشاره د فعالیت)، او پاتې 13 د غوښتنلیک کارولو لپاره دي. په هرصورت، ARM64 32 بشپړ راجسترونه لري، پشمول یو صفر راجستر، د لینک راجستر، یو چوکاټ پوائنټر (د سټیک پوائنټر سره ورته)، او یو د راتلونکي لپاره ساتل شوی. دا موږ ته د غوښتنلیک کارولو لپاره 28 راجسترونه پریږدي، د 32-bit ARM دوه چنده څخه ډیر. په ورته وخت کې، ARM64 د 16 څخه تر 32 128-bit راجسترونو پورې د فلوټینګ پوائنټ نمبر (FPU) راجسترونو شمیر دوه چنده کړی.

مګر ولې د راجسترونو شمیر دومره مهم دی؟ حافظه عموما د CPU محاسبې په پرتله ورو ده او لوستل / لیکل خورا اوږد وخت نیسي. دا به ګړندی پروسیسر رامینځته کړي چې حافظې ته انتظار ته دوام ورکړي او موږ به د سیسټم طبیعي سرعت حد ته ورسوو. پروسیسر هڅه کوي چې دا خنډ د بفرونو پرتونو سره پټ کړي، مګر حتی ترټولو ګړندی (L1) لاهم د پروسیسر حساب څخه ورو دی. په هرصورت، راجسترونه په مستقیم ډول په پروسیسر کې د حافظې حجرې دي او د دوی لوستل / لیکل دومره ګړندي دي چې پروسیسر ورو نه کړي. د راجسترونو شمیر په عملي ډول د پروسیسر محاسبې لپاره د ګړندۍ حافظې مقدار معنی لري ، کوم چې د ټول سیسټم سرعت خورا اغیزه کوي.

په ورته وخت کې، دا سرعت د کمپیلر څخه ښه اصلاح کولو ملاتړ ته اړتیا لري، ترڅو ژبه وکولی شي دا راجسترونه وکاروي او د عمومي غوښتنلیک (سست) حافظې کې هرڅه ذخیره کولو ته اړتیا نلري.

د لارښوونې ترتیب

ARM64 هم د لارښوونې سیټ کې لوی بدلونونه راوړي. د لارښوونې سیټ د اټومي عملیاتو یوه ټولګه ده چې یو پروسیسر یې ترسره کولی شي (د مثال په توګه 'ADD register1 register2' په دوه راجسترونو کې شمیرې اضافه کوي). د انفرادي ژبو لپاره موجود دندې د دې لارښوونو څخه جوړ شوي دي. ډیر پیچلي فعالیتونه باید ډیر لارښوونې اجرا کړي، نو دوی کولی شي ورو وي.

په ARM64 کې نوي د AES کوډ کولو، SHA-1 او SHA-256 هش فنکشن لپاره لارښوونې دي. نو د پیچلي پلي کولو پرځای ، یوازې ژبه به دې لارښوونې ته زنګ ووهي - کوم چې به د ورته دندو محاسبه کولو کې لوی سرعت راوړي او امید لري په غوښتنلیکونو کې امنیت اضافه کړي. د مثال په توګه نوی ټچ ID دا لارښوونې په کوډ کولو کې هم کاروي، د ریښتیني سرعت او امنیت لپاره اجازه ورکوي (په تیوري کې، برید کوونکی باید ډاټا ته د لاسرسي لپاره پخپله پروسیسر بدل کړي - کوم چې لږ تر لږه د دې کوچني اندازې په پام کې نیولو سره غیر عملي وي).

د 32bit سره مطابقت

دا مهمه ده چې یادونه وشي چې A7 کولی شي په بشپړ ډول په 32-bit حالت کې پرته د تقلید اړتیا ته لاړ شي. دا پدې مانا ده چې نوی آی فون 5s کولی شي په 32-bit ARM کې ترتیب شوي غوښتنلیکونه پرته له کوم سستۍ پرمخ بوځي. په هرصورت، بیا دا نشي کولی د نوي ARM64 افعال وکاروي، نو دا تل د ارزښت وړ وي چې یوازې د A7 لپاره ځانګړی جوړ کړئ، کوم چې باید ډیر ګړندی پرمخ بوځي.

د چلولو وخت بدلونونه

Runtime هغه کوډ دی چې د پروګرام کولو ژبې ته فنکشن اضافه کوي، کوم چې دا د کارولو توان لري کله چې غوښتنلیک روان وي، تر ژباړې وروسته. څنګه چې ایپل د غوښتنلیک مطابقت ساتلو ته اړتیا نلري (چې 64-bit بائنری په 32-bit کې چلیږي) ، دوی کولی شي د هدف - C ژبې ته یو څه نور پرمختګونه وکړي.

یو له دوی څخه تش په نامه دی نښه شوی نښه (په نښه شوی شاخص). په عموم ډول، د دغو شیانو لپاره توکي او اشارې د حافظې په جلا برخو کې ساتل کیږي. په هرصورت، د پوائنټر نوي ډولونه ټولګیو ته اجازه ورکوي چې لږ معلومات ولري ترڅو شیان په مستقیم ډول په پوینټر کې ذخیره کړي. دا مرحله په مستقیم ډول د اعتراض لپاره د حافظې تخصیص کولو اړتیا له مینځه وړي، یوازې یو پوائنټر او د هغې دننه اعتراض جوړ کړئ. ټګ شوي پوائنټرونه یوازې په 64-bit جوړښت کې ملاتړ کیږي د دې حقیقت له امله چې په 32-bit پوینټر کې د کافي ګټور ډیټا ذخیره کولو لپاره کافي ځای شتون نلري. له همدې امله، iOS، د OS X برعکس، لا تر اوسه د دې خصوصیت ملاتړ نه کوي. په هرصورت، د ARM64 په راتګ سره، دا بدلیږي، او iOS په دې برخه کې د OS X سره هم اړیکه نیولې ده.

که څه هم پوائنټرونه 64 بټونه اوږد دي، په ARM64 کې یوازې 33 بټونه د پوائنټر د خپل پته لپاره کارول کیږي. او که موږ وکولی شو د پوائنټر پاتې برخې په باوري ډول خلاص کړو ، موږ کولی شو دا ځای د اضافي معلوماتو ذخیره کولو لپاره وکاروو - لکه څنګه چې د ذکر شوي ټاګ شوي پوائنټرونو په حالت کې. په مفهوم سره، دا د Objective-C په تاریخ کې یو له سترو بدلونونو څخه دی، که څه هم دا د بازار موندنې ځانګړتیا نه ده - نو ډیری کاروونکي به نه پوهیږي چې ایپل څنګه هدف-C مخ په وړاندې ځي.

لکه څنګه چې د ګټورو معلوماتو لپاره چې د داسې ټګ شوي پوائنټر په پاتې ځای کې زیرمه کیدی شي ، د مثال په توګه ، Objective-C اوس دا د تش په نامه ذخیره کولو لپاره کاروي. د حوالې شمیره (د حوالې شمیره). پخوا، د حوالې شمیره په حافظه کې په بل ځای کې ذخیره شوې وه، د دې لپاره چمتو شوي هش میز کې، مګر دا کولی شي د ډیری شمیر alloc/dealloc/retain/releas calls په صورت کې ټول سیسټم ورو کړي. جدول باید د تار د خوندیتوب له امله تړل شوی وي، نو په دوه تارونو کې د دوو شیانو د حوالې شمیره په ورته وخت کې نشي بدلیدلی. په هرصورت، دا ارزښت په دې وروستیو کې په نورو نومونو کې تازه داخل شوی آا شاخصونه دا یو بل ناڅرګند دی، مګر په راتلونکي کې لویه ګټه او سرعت. په هرصورت، دا هیڅکله په 32-bit جوړښت کې نشي ترلاسه کیدی.

د اړوندو شیانو په اړه معلومات، ایا اعتراض په ضعیف ډول حواله شوی، ایا دا اړینه ده چې د څیز لپاره یو تخریب کونکی رامینځته کړي، او داسې نور، د شیانو لپاره د پوائنټرونو پاتې ځای کې هم نوي داخل شوي دي. د دې معلوماتو څخه مننه، هدف-C د چلولو وخت په بنسټیز ډول د رن ټایم سرعت کولو وړ دی، کوم چې د هر غوښتنلیک په سرعت کې منعکس کیږي. د ازموینې څخه ، دا پدې معنی ده چې د حافظې مدیریت ټولو تلیفونونو شاوخوا 40-50٪ سرعت. یوازې د 64-bit پوینټرونو ته د بدلولو او د دې نوي ځای په کارولو سره.

پایله

که څه هم سیالي کونکي به هڅه وکړي دا مفکوره خپره کړي چې د 64-bit جوړښت ته حرکت کول اړین ندي ، تاسو به دمخه پوه شئ چې دا یوازې یو خورا ناخبره نظر دی. دا ریښتیا ده چې په ساده ډول 64 بټ ته بدلول پرته له دې چې ژبه یا غوښتنلیکونه دې ته تطبیق کړي واقعیا هیڅ معنی نلري - دا حتی ټول سیسټم ورو کوي. مګر نوی A7 د نوي لارښوونې سیټ سره عصري ARM64 کاروي ، او ایپل د ټول Objective-C ژبې عصري کولو او له نوي وړتیاو څخه ګټه پورته کولو کې ستونزه لري - له همدې امله ژمنه شوې سرعت.

دلته موږ یو لوی شمیر دلیلونه ذکر کړل چې ولې د 64-bit جوړښت سم ګام دی. دا یو بل انقلاب دی "د هود لاندې" ، له دې امله مننه چې ایپل به نه یوازې د ډیزاین ، کارونکي انٹرفیس او بډایه ایکوسیستم سره په لومړي سر کې پاتې کیدو هڅه وکړي ، بلکه په عمده توګه په بازار کې د خورا عصري ټیکنالوژیو سره.

سرچینه: mikeash.com
.