اشتهار بند ڪريو

مائڪ ايش هن جي بلاگ تي وقف آئي فون 64S ۾ 5-bit فن تعمير کي تبديل ڪرڻ جا عملي اثر. هي مضمون هن جي نتيجن تي ڌيان ڏئي ٿو.

هن متن جو سبب بنيادي طور تي غلط معلومات جي وڏي مقدار ۾ پکڙجي رهيو آهي ته ڇا نئون آئي فون 5s هڪ 64-bit ARM پروسيسر سان اصل ۾ صارفين ۽ مارڪيٽ لاءِ مطلب آهي. هتي اسان ڊولپرز لاءِ هن منتقلي جي ڪارڪردگي، صلاحيتن ۽ اثرن بابت مقصدي معلومات آڻڻ جي ڪوشش ڪنداسين.

"64 بٽ"

پروسيسر جا ٻه حصا آهن جن کي "X-bit" ليبل حوالو ڏئي سگهي ٿو - انٽيجر رجسٽر جي چوٽي ۽ پوائنٽرن جي چوٽي. خوشقسمتيء سان، اڪثر جديد پروسيسرز تي اهي چوٽيون ساڳيون آهن، تنهنڪري A7 جي صورت ۾ هن جو مطلب آهي 64-bit انٽيگر رجسٽر ۽ 64-bit پوائنٽر.

بهرحال، اهو پڻ ضروري آهي ته اشارو ڪيو وڃي ته "64bit" جو مطلب ڇا ناهي: رام جسماني پتي جي ماپ. RAM سان ڳالھائڻ لاءِ بِٽس جو تعداد (اھڙيءَ طرح RAM جو مقدار ھڪ ڊوائيس سپورٽ ڪري سگھي ٿو) سي پي يو بٽ جي تعداد سان لاڳاپيل نه آھي. ARM پروسيسرز وٽ 26- ۽ 40-bit پتي جي وچ ۾ ڪٿي به آهن ۽ باقي سسٽم جي آزاديء سان تبديل ٿي سگهن ٿيون.

  • ڊيٽا بس سائيز. رام يا بفر ميموري مان حاصل ڪيل ڊيٽا جي مقدار ساڳئي طرح هن عنصر کان آزاد آهي. انفرادي پروسيسر هدايتون شايد ڊيٽا جي مختلف مقدار جي درخواست ڪري سگھن ٿيون، پر اهي يا ته ٽڪڙن ۾ موڪليا ويا آهن يا ياداشت کان ضرورت کان وڌيڪ وصول ڪيا ويا آهن. اهو منحصر آهي ڊيٽا جي مقدار جي ماپ تي. آئي فون 5 اڳ ۾ ئي 64-بٽ ڪوانٽا ۾ ميموري مان ڊيٽا حاصل ڪري ٿو (۽ هڪ 32-بٽ پروسيسر آهي)، ۽ اسان 192 بٽ تائين سائيز کي منهن ڏئي سگهون ٿا.
  • سچل نقطي سان لاڳاپيل ڪا به شيء. اهڙين رجسٽرن جي سائيز (FPU) وري پروسيسر جي اندروني ڪم کان آزاد آهن. ARM 64-bit FPU استعمال ڪري رهيو آهي ARM64 کان اڳ (64-bit ARM پروسيسر).

عام فائدا ۽ نقصان

جيڪڏهن اسان ٻي صورت ۾ هڪجهڙائي 32bit ۽ 64bit آرڪيٽيڪچر جو مقابلو ڪندا آهيون، اهي عام طور تي مختلف نه آهن. اهو عوام جي عام مونجهاري جو هڪ سبب آهي جيڪو ڳولي رهيو آهي ڇو ته ايپل موبائل ڊوائيسز ۾ 64 بٽ ڏانهن منتقل ٿي رهيو آهي. بهرحال، اهو سڀ ڪجهه A7 (ARM64) پروسيسر جي مخصوص پيٽرولن مان اچي ٿو ۽ ايپل ان کي ڪيئن استعمال ڪري ٿو، نه رڳو حقيقت اها آهي ته پروسيسر وٽ 64-bit آرڪيٽيڪچر آهي.

بهرحال، جيڪڏهن اسان اڃا تائين انهن ٻن فن تعمير جي وچ ۾ اختلافن تي نظر رکون ٿا، اسان کي ڪيترائي اختلاف ملندا. واضح طور تي اهو آهي ته 64-bit انٽيگر رجسٽرڊ 64-bit انٽيگرز کي وڌيڪ موثر طريقي سان سنڀالي سگھن ٿا. ان کان اڳ به، انهن سان گڏ 32-bit پروسيسر تي ڪم ڪرڻ ممڪن هو، پر ان جو مطلب عام طور تي انهن کي 32-bit ڊگھي ٽڪرن ۾ ورهائڻ هوندو هو، جنهن ڪري حسابن کي سست ڪيو ويندو هو. تنهن ڪري هڪ 64-bit پروسيسر عام طور تي 64-bit قسمن سان حساب ڪري سگهي ٿو جيئن 32-bit وارن سان. هن جو مطلب آهي ته ايپليڪيشنون جيڪي عام طور تي 64-bit قسم استعمال ڪن ٿيون 64-bit پروسيسر تي تمام تيز هلائي سگهن ٿيون.

جيتوڻيڪ 64bit ريم جي ڪل مقدار کي متاثر نٿو ڪري جيڪا پروسيسر استعمال ڪري سگهي ٿي، اهو هڪ پروگرام ۾ رام جي وڏي مقدار سان ڪم ڪرڻ آسان بڻائي سگهي ٿو. 32-bit پروسيسر تي هلندڙ ڪو به پروگرام صرف 4 GB جي ايڊريس اسپيس آهي. انهي حساب ۾ رکڻ ته آپريٽنگ سسٽم ۽ معياري لائبريريون ڪجهه وٺن ٿيون، هي پروگرام ڇڏي ٿو 1-3 GB جي وچ ۾ ايپليڪيشن استعمال لاءِ. بهرحال، جيڪڏهن 32-bit سسٽم ۾ 4 GB کان وڌيڪ ريم آهي، انهي ياداشت کي استعمال ڪرڻ ٿورو وڌيڪ پيچيده آهي. اسان کي آپريٽنگ سسٽم کي مجبور ڪرڻو پوندو ته ميموري جي انهن وڏين حصن کي اسان جي پروگرام (ميموري ورچوئلائيزيشن) لاءِ نقشي ۾ ٺاهيو، يا اسان پروگرام کي ڪيترن ئي عملن ۾ ورهائي سگهون ٿا (جتي هر عمل ۾ وري نظرياتي طور تي 4GB ميموري موجود آهي سڌو ايڊريسنگ لاءِ).

بهرحال، اهي "هيڪ" تمام ڏکيا ۽ سست آهن جيڪي گهٽ ۾ گهٽ ايپليڪيشنون انهن کي استعمال ڪن ٿيون. عملي طور تي، هڪ 32-bit پروسيسر تي، هر پروگرام صرف پنهنجي 1-3 GB ميموري استعمال ڪندو، ۽ وڌيڪ دستياب ريم هڪ ئي وقت ۾ ڪيترن ئي پروگرامن کي هلائڻ لاء استعمال ڪري سگهجي ٿو يا هن ميموري کي بفر (ڪيشنگ) طور استعمال ڪري سگهجي ٿو. اهي استعمال عملي آهن، پر اسان چاهيون ٿا ته ڪنهن به پروگرام کي آسانيءَ سان استعمال ڪرڻ جي قابل ٿي 4GB کان وڏي ميموري جو حصو.

ھاڻي اچون ٿا بار بار (اصل ۾ غلط) دعويٰ ته 4GB کان وڌيڪ ميموري کان سواءِ، 64-bit فن تعمير بيڪار آھي. هڪ وڏي پتي واري جاءِ مفيد آهي جيتوڻيڪ سسٽم تي گهٽ ميموري سان. ميموري-ميپ ٿيل فائلون هڪ آسان اوزار آهن جتي فائل جي مواد جو حصو منطقي طور تي پروسيس جي ميموري سان ڳنڍيل آهي بغير پوري فائل کي ميموري ۾ لوڊ ڪيو وڃي. ان ڪري، سسٽم ڪري سگھي ٿو، مثال طور، تدريجي طور تي وڏي فائلن کي پروسيس ڪري سگھي ٿو رام جي گنجائش کان ڪيترائي ڀيرا. 32-bit سسٽم تي، اهڙيون وڏيون فائلون معتبر طور تي ميموري ميپ نه ٿي سگھن ٿيون، جڏهن ته 64-bit سسٽم تي، اهو ڪيڪ جو هڪ ٽڪرو آهي، تمام وڏي ايڊريس اسپيس جي مهرباني.

بهرحال، پوائنٽرز جي وڏي سائيز پڻ هڪ وڏو نقصان آڻيندو آهي: ٻي صورت ۾ هڪجهڙائي واري پروگرامن کي 64-bit پروسيسر تي وڌيڪ ميموري جي ضرورت هوندي آهي (اهي وڏا پوائنٽرز کي ڪنهن جاء تي محفوظ ڪرڻ گهرجي). جيئن ته پوائنٽر پروگرامن جو بار بار حصو آهن، اهو فرق ڪيش تي بار آڻي سگهي ٿو، جنهن جي نتيجي ۾ سڄي سسٽم کي سست هلائڻ جو سبب بڻائيندو آهي. تنهنڪري نقطي نظر ۾، اسان ڏسي سگهون ٿا ته جيڪڏهن اسان صرف پروسيسر آرڪيٽيڪچر کي 64-bit ۾ تبديل ڪيو، اهو اصل ۾ سڄي سسٽم کي سست ڪري ڇڏيندو. تنهن ڪري هن عنصر کي ٻين هنڌن تي وڌيڪ اصلاحن سان متوازن ٿيڻو پوندو.

ARM64

A7، 64-bit پروسيسر نئين آئي فون 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 فلوٽنگ پوائنٽ نمبر (FPU) رجسٽرن جي تعداد کي 16 کان 32 128-bit رجسٽر کان ٻيڻو ڪيو.

پر رجسٽرن جو تعداد ايترو ضروري ڇو آهي؟ ياداشت عام طور تي سي پي يو جي حسابن جي ڀيٽ ۾ سست آهي ۽ پڙهڻ/لکڻ تمام گهڻو وقت وٺي سگھي ٿو. ان سان تيز پروسيسر کي ميموري جو انتظار ڪرڻو پوندو ۽ اسان سسٽم جي قدرتي رفتار جي حد تائين پهچي وينداسين. پروسيسر هن معذور کي لڪائڻ جي ڪوشش ڪندا آهن بفرن جي تہن سان، پر اڃا به تيز ترين هڪ (L1) اڃا تائين پروسيسر جي حساب کان سست آهي. بهرحال، رجسٽر ميموري سيلز آهن سڌو سنئون پروسيسر ۾ ۽ انهن جي پڙهڻ/لکڻ ڪافي تيز آهي پروسيسر کي سست نه ڪرڻ لاءِ. رجسٽرن جو تعداد عملي طور تي پروسيسر جي حساب لاء تيز ترين ياداشت جي مقدار جو مطلب آهي، جيڪو تمام سسٽم جي رفتار کي متاثر ڪري ٿو.

ساڳئي وقت، هن رفتار کي ڪمپلر کان سٺي اصلاح جي مدد جي ضرورت آهي، انهي ڪري ته ٻولي اهي رجسٽر استعمال ڪري سگهي ٿي ۽ عام ايپليڪيشن (سست) ميموري ۾ هر شيء کي ذخيرو ڪرڻ جي ضرورت ناهي.

هدايتون مقرر

ARM64 پڻ هدايتون سيٽ ۾ وڏيون تبديليون آڻيندو آهي. هڪ هدايتون سيٽ ايٽمي عملن جو هڪ سيٽ آهي جيڪو هڪ پروسيسر انجام ڏئي سگهي ٿو (مثال طور 'ADD register1 register2' ٻن رجسٽرن ۾ نمبر شامل ڪري ٿو). انفرادي ٻولين ۾ موجود ڪم انهن هدايتن تي مشتمل آهن. وڌيڪ پيچيده افعال کي وڌيڪ هدايتن تي عمل ڪرڻ گهرجي، تنهنڪري اهي سست ٿي سگهن ٿيون.

ARM64 ۾ نئون AES انڪرپشن، SHA-1 ۽ SHA-256 هيش افعال لاءِ هدايتون آهن. تنهنڪري هڪ پيچيده عمل جي بدران، صرف ٻولي هن هدايت کي سڏيندو - جيڪو اهڙين ڪمن جي حساب سان وڏي رفتار آڻيندو ۽ اميد آهي ته ايپليڪيشنن ۾ سيڪيورٽي شامل ڪئي ويندي. مثال نئين ٽچ آئي ڊي انهن هدايتن کي انڪرپشن ۾ پڻ استعمال ڪري ٿي، حقيقي رفتار ۽ سيڪيورٽي جي اجازت ڏئي ٿي (نظريي ۾، هڪ حملي ڪندڙ کي ڊيٽا تائين رسائي حاصل ڪرڻ لاءِ پروسيسر کي پاڻ کي تبديل ڪرڻو پوندو - گهٽ ۾ گهٽ چوڻ لاءِ اهو غير عملي آهي ان جي ننڍڙي سائيز).

32bit سان مطابقت

اهو ذڪر ڪرڻ ضروري آهي ته A7 مڪمل طور تي 32-bit موڊ ۾ هلائي سگھي ٿو بغير ڪنهن ايموليشن جي. ان جو مطلب اهو آهي ته نئون آئي فون 5s بغير ڪنهن سستي جي 32-bit ARM تي گڏ ڪيل ايپليڪيشنن کي هلائي سگھي ٿو. بهرحال، پوءِ اهو نئون ARM64 افعال استعمال نٿو ڪري سگهي، تنهن ڪري اهو هميشه لاءِ فائديمند هوندو آهي خاص تعمير ڪرڻ لاءِ صرف A7 لاءِ، جنهن کي تمام تيز هلڻ گهرجي.

هلندڙ وقت ۾ تبديليون

رن ٽائم اهو ڪوڊ آهي جيڪو پروگرامنگ ٻولي ۾ افعال شامل ڪري ٿو، جنهن کي اهو استعمال ڪرڻ جي قابل هوندو آهي جڏهن ايپليڪيشن هلندي هجي، ترجمي کان پوءِ تائين. جيئن ته ايپل کي ايپليڪيشن مطابقت برقرار رکڻ جي ضرورت ناهي (جيڪو 64-بٽ بائنري 32-بٽ تي هلندو آهي)، اهي مقصد-سي ٻولي ۾ ڪجهه وڌيڪ بهتر ڪرڻ جي متحمل ٿي سگهن ٿا.

انهن مان هڪ کي سڏيو ويندو آهي نشان لڳل (نشان ٿيل اشارو). عام طور تي، شيون ۽ اشارو انهن شين ڏانهن ياداشت جي الڳ حصن ۾ ذخيرو ٿيل آهن. جڏهن ته، نوان پوائنٽر قسمون اجازت ڏين ٿيون ڪلاسن کي ٿوري ڊيٽا سان گڏ شيون سڌو سنئون پوائنٽر ۾ ذخيرو ڪرڻ لاء. اهو قدم ميموري کي سڌو سنئون اعتراض لاء مختص ڪرڻ جي ضرورت کي ختم ڪري ٿو، صرف ان جي اندر هڪ پوائنٽر ۽ اعتراض ٺاهيو. ٽيگ ٿيل پوائنٽر صرف 64-بٽ آرڪيٽيڪچر ۾ سپورٽ ڪيا ويا آهن انهي حقيقت جي ڪري ته 32-بٽ پوائنٽر ۾ ڪافي جڳهه نه آهي ڪافي مفيد ڊيٽا محفوظ ڪرڻ لاءِ. تنهن ڪري، iOS، OS X جي برعڪس، اڃا تائين هن خاصيت جي حمايت نه ڪئي آهي. بهرحال، ARM64 جي اچڻ سان، اهو تبديل ٿي رهيو آهي، ۽ iOS انهي سلسلي ۾ OS X سان گڏ پڪڙي ورتو آهي.

جيتوڻيڪ پوائنٽر 64 بٽ ڊگھا آھن، ARM64 تي صرف 33 بٽ استعمال ٿيندا آھن پوائنٽر جي پنھنجي ايڊريس لاءِ. ۽ جيڪڏهن اسان قابل اعتماد طور تي باقي پوائنٽر بٽس کي ختم ڪرڻ جي قابل آهيون، اسان اضافي ڊيٽا کي ذخيرو ڪرڻ لاء هن جڳهه کي استعمال ڪري سگهون ٿا - جيئن ذڪر ڪيل ٽيگ ٿيل پوائنٽرز جي صورت ۾. تصوراتي طور تي، هي Objective-C جي تاريخ ۾ سڀ کان وڏي تبديلين مان هڪ آهي، جيتوڻيڪ اهو هڪ قابل بازار خاصيت ناهي - تنهنڪري اڪثر صارفين کي خبر ناهي ته ايپل ڪيئن مقصد-سي کي اڳتي وڌائي رهيو آهي.

جيئن ته مفيد ڊيٽا لاءِ جيڪو محفوظ ڪري سگهجي ٿو اهڙي ٽيگ ٿيل پوائنٽر جي باقي جاءِ ۾، Objective-C، مثال طور، هاڻي ان کي استعمال ڪري رهيو آهي ذخيرو ڪرڻ لاءِ نام نهاد. حوالو شمار (حوالن جو تعداد). اڳي، حوالن جي ڳڻپ کي ميموري ۾ مختلف هنڌن تي محفوظ ڪيو ويندو هو، ان لاءِ تيار ڪيل هيش ٽيبل ۾، پر اهو سڄو سسٽم سست ڪري سگهي ٿو وڏي تعداد ۾ alloc/dealloc/retain/release calls جي صورت ۾. ٿريڊ جي حفاظت جي ڪري ٽيبل کي بند ڪرڻو پيو، ان ڪري ٻن موضوعن ۾ ٻن شين جو حوالو شمار هڪ ئي وقت تبديل نه ٿي سگهيو. بهرحال، هي قدر نئين طور تي شامل ڪيو ويو آهي باقي نام نهاد آهي اشارا. هي هڪ ٻيو غير واضح آهي، پر مستقبل ۾ وڏو فائدو ۽ تيز رفتار. بهرحال، اهو 32-bit فن تعمير ۾ ڪڏهن به حاصل نه ٿي سگهيو.

لاڳاپيل شيون بابت معلومات، ڇا اعتراض ضعيف طور تي حوالو ڏنو ويو آهي، ڇا اهو ضروري آهي ته اعتراض لاء هڪ ڊسٽرڪٽر پيدا ڪرڻ وغيره وغيره، پڻ نئين طور تي شامل ڪئي وئي آهي باقي شين جي پوائنٽن جي جڳهه ۾. هن معلومات جي مهرباني، مقصد-سي. رن ٽائم بنيادي طور تي رن ٽائم کي تيز ڪرڻ جي قابل آهي، جيڪو هر ايپليڪيشن جي رفتار ۾ ظاهر ٿئي ٿو. جاچ کان، هن جو مطلب آهي 40-50٪ تيز رفتار سڀني ميموري مئنيجمينٽ ڪالن جي. بس 64-bit پوائنٽر کي تبديل ڪندي ۽ هن نئين جاء کي استعمال ڪندي.

نتيجو

جيتوڻيڪ حریف اهو خيال پکيڙڻ جي ڪوشش ڪندا ته 64-bit آرڪيٽيڪچر ڏانهن منتقل ٿيڻ غير ضروري آهي، توهان اڳ ۾ ئي ڄاڻو ٿا ته اهو صرف هڪ بلڪل اڻ ڄاڻايل راء آهي. اهو سچ آهي ته توهان جي ٻولي يا ايپليڪيشنن کي اپنائڻ کان سواءِ 64-bit تي سوئچ ڪرڻ جو اصل مطلب ڪجهه به نه آهي - اهو به پوري سسٽم کي سست ڪري ٿو. پر نئون A7 جديد ARM64 استعمال ڪري ٿو هڪ نئين هدايت واري سيٽ سان، ۽ ايپل سڄي Objective-C ٻولي کي جديد بڻائڻ ۽ نئين صلاحيتن جو فائدو وٺڻ جي تڪليف ورتي آهي - تنهن ڪري واعدو ڪيل رفتار.

هتي اسان ڪيترن ئي سببن جو ذڪر ڪيو آهي ڇو ته 64-bit آرڪيٽيڪچر صحيح قدم اڳتي آهي. اهو هڪ ٻيو انقلاب آهي "هيڊ هيٺ"، جنهن جي مهرباني ايپل نه رڳو ڊزائن، يوزر انٽرفيس ۽ امير ماحوليات سان، پر خاص طور تي مارڪيٽ تي سڀ کان وڌيڪ جديد ٽيڪنالاجي سان گڏ رهڻ جي ڪوشش ڪندو.

ذريعو: mikeash.com
.