נאָענט אַד

מאיק אש דעדאַקייטאַד אויף זיין בלאָג די פּראַקטיש ימפּלאַקיישאַנז פון סוויטשינג צו 64-ביסל אַרקאַטעקטשער אין די iPhone 5S. דער אַרטיקל איז באזירט אויף זיין פיינדינגז.

די סיבה פֿאַר דעם טעקסט איז דער הויפּט רעכט צו דער גרויס סומע פון ​​​​מיס אינפֿאָרמאַציע וואָס איז פאַרשפּרייטן וועגן וואָס די נייַע iPhone 5s מיט אַ 64-ביסל ARM פּראַסעסער אַקשלי מיטל פֿאַר יוזערז און די מאַרק. דאָ מיר וועלן פּרובירן צו ברענגען אָביעקטיוו אינפֿאָרמאַציע וועגן די פאָרשטעלונג, קייפּאַבילאַטיז און ימפּלאַקיישאַנז פון דעם יבערגאַנג פֿאַר דעוועלאָפּערס.

"64 ביסל"

עס זענען צוויי טיילן פון אַ פּראַסעסער וואָס די "X-ביסל" פירמע קענען אָפּשיקן צו - די ברייט פון די ינטאַדזשער רעדזשיסטערז און די ברייט פון די פּוינטערז. צומ גליק, אויף רובֿ מאָדערן פּראַסעסערז, די ווידטס זענען די זעלבע, אַזוי אין דעם פאַל פון די A7, דאָס מיטל 64-ביסל ינטאַדזשער רעדזשיסטערז און 64-ביסל פּוינטערז.

אָבער, עס איז גלייַך וויכטיק צו פונט אויס וואָס "64 ביט" טוט נישט מיינען: באַראַן גשמיות אַדרעס גרייס. די נומער פון ביטן צו יבערגעבן מיט באַראַן (אַזוי די סומע פון ​​באַראַן אַ מיטל קענען שטיצן) איז נישט שייך צו די נומער פון קפּו ביטן. ARM פּראַסעסערז האָבן ערגעץ צווישן 26- און 40-ביסל אַדרעסעס און קענען זיין טשיינדזשד ינדיפּענדאַנטלי פון די רעשט פון די סיסטעם.

  • דאַטאַ ויטאָבוס גרייס. די סומע פון ​​דאַטן באקומען פון באַראַן אָדער באַפער זכּרון איז סימילאַרלי פרייַ פון דעם פאַקטאָר. יחיד פּראַסעסער אינסטרוקציעס קען בעטן פאַרשידענע אַמאַונץ פון דאַטן, אָבער זיי זענען אָדער געשיקט אין שטיקער אָדער באקומען מער ווי דארף פון זכּרון. עס דעפּענדס אויף די גרייס פון די דאַטן קוואַנטום. די יפאָנע 5 שוין באקומט דאַטן פון די זכּרון אין 64-ביסל קוואַנטאַ (און האט אַ 32-ביסל פּראַסעסער), און מיר קענען טרעפן סיזעס אַרויף צו 192 ביץ.
  • עפּעס שייַכות צו פלאָוטינג פונט. די גרייס פון אַזאַ רעגיסטערס (FPU) זענען ווידער פרייַ פון די ינערלעך ווערקינגז פון די פּראַסעסער. ARM האט שוין ניצן 64-ביסל FPU זינט איידער ARM64 (64-ביסל ARM פּראַסעסער).

אַלגעמיינע אַדוואַנידזשיז און דיסאַדוואַנטידזשיז

אויב מיר פאַרגלייַכן אַנדערש יידעניקאַל 32 ביט און 64 ביט אַרקאַטעקטשערז, זיי זענען בכלל נישט אַזוי אַנדערש. דאָס איז איינער פון די סיבות פֿאַר דער גענעראַל צעמישונג פון דעם ציבור וואָס זוכט פֿאַר אַ סיבה וואָס עפּל איז אויך מאָווינג צו 64 ביט אין רירעוודיק דעוויסעס. אָבער, דאָס אַלע קומט פֿון די ספּעציפיש פּאַראַמעטערס פון די A7 (ARM64) פּראַסעסער און ווי עפּל ניצט עס, ניט נאָר פֿון די פאַקט אַז דער פּראַסעסער האט אַ 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-ביסל, דאָס וואָלט אַקשלי פּאַמעלעך די גאנצע סיסטעם. דער פאַקטאָר דאַרף זיין באַלאַנסט דורך מער אָפּטימיזאַטיאָנס אין אנדערע ערטער.

ARM64

די A7, די 64-ביסל פּראַסעסער וואָס מאַכט די נייַע iPhone 5s, איז נישט בלויז אַ רעגולער ARM פּראַסעסער מיט ברייט רעדזשיסטערז. ARM64 כּולל הויפּט ימפּרווומאַנץ איבער די עלטערע 32-ביסל ווערסיע.

עפּל אַ 7 פּראַסעסער.

רעגיסטרי

ARM64 האלט צוויי מאָל ווי פילע ינטאַדזשער רעדזשיסטערז ווי 32-ביסל ARM (זייט אָפּגעהיט ניט צו צעמישן די נומער און ברייט פון רעדזשיסטערז - מיר גערעדט וועגן ברייט אין די "64-ביסל" אָפּטיילונג. אַזוי 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 ביט

עס איז וויכטיק צו דערמאָנען אַז די A7 קענען לויפן גאָר אין 32-ביסל מאָדע אָן די נויט פֿאַר עמיאַליישאַן. עס מיטל אַז די נייַע יפאָנע 5 ס קענען לויפן אַפּלאַקיישאַנז קאַמפּיילד אויף 32-ביסל ARM אָן קיין סלאָודאַון. אָבער, עס קען נישט נוצן די נייַע ARM64 פאַנגקשאַנז, אַזוי עס איז שטענדיק ווערטיק צו מאַכן אַ ספּעציעל בויען נאָר פֿאַר די A7, וואָס זאָל לויפן פיל פאַסטער.

רונטימע ענדערונגען

רונטימע איז דער קאָד וואָס מוסיף פאַנגקשאַנז צו די פּראָגראַממינג שפּראַך, וואָס עס איז ביכולת צו נוצן בשעת די אַפּלאַקיישאַן איז פליסנדיק, ביז נאָך איבערזעצונג. זינט עפּל טוט נישט דאַרפֿן צו האַלטן אַפּלאַקיישאַן קאַמפּאַטאַבילאַטי (אַז אַ 64-ביסל ביינערי לויפט אויף 32-ביסל), זיי קען פאַרגינענ זיך צו מאַכן אַ ביסל מער ימפּרווומאַנץ צו די אָביעקטיוו-C שפּראַך.

איינער פון זיי איז די אַזוי גערופענע טאַגד טייַטל (געצייכנט גראדן). נאָרמאַללי, אַבדזשעקץ און אָנווייַז צו די אַבדזשעקץ זענען סטאָרד אין באַזונדער פּאַרץ פון זכּרון. אָבער, נייַ טייַטל טייפּס לאָזן קלאסן מיט קליין דאַטן צו קראָם אַבדזשעקץ גלייַך אין די טייַטל. דעם שריט ילימאַנייץ די נויט צו אַלאַקייט זיקאָרן גלייַך פֿאַר די כייפעץ, נאָר שאַפֿן אַ טייַטל און די כייפעץ ין עס. טאַגד פּוינטערז זענען געשטיצט בלויז אין 64-ביסל אַרקאַטעקטשער אויך רעכט צו דעם פאַקט אַז עס איז ניט מער גענוג פּלאַץ אין אַ 32-ביסל טייַטל צו קראָם גענוג נוציק דאַטן. דעריבער, יאָס, ניט ענלעך OS X, האט נישט נאָך שטיצן דעם שטריך. אָבער, מיט דעם אָנקומען פון ARM64, דאָס איז טשאַנגינג, און יאָס איז אויך געכאפט מיט OS X אין דעם אַכטונג.

כאָטש פּוינטערז זענען 64 ביץ לאַנג, אויף די ARM64 בלויז 33 ביץ זענען געניצט פֿאַר די טייַטל ס אייגענע אַדרעס. און אויב מיר זענען ביכולת צו רילייאַבלי אַנמאַסק די רעשט פון די טייַטל ביטן, מיר קענען נוצן דעם פּלאַץ צו קראָם נאָך דאַטן - ווי אין דעם פאַל פון די דערמאנט טאַגד פּוינטערז. קאַנסעפּטשואַלי, דאָס איז איינער פון די ביגאַסט ענדערונגען אין דער געשיכטע פון ​​אָביעקטיוו-C, כאָטש עס איז נישט אַ מאַרקאַטאַבאַל שטריך - אַזוי רובֿ יוזערז וועלן נישט וויסן ווי עפּל איז מאָווינג אָביעקטיוו-C פאָרויס.

ווי פֿאַר די נוציק דאַטן וואָס קענען זיין סטאָרד אין די רוען פּלאַץ פון אַזאַ אַ טאַגד טייַטל, אָביעקטיוו-C, למשל, איז איצט ניצן עס צו קראָם די אַזוי גערופענע. רעפֿערענץ ציילן ( נומער פון באַווייַזן). ביז אַהער, די רעפֿערענץ ציילן איז געווען סטאָרד אין אַ אַנדערש אָרט אין זכּרון, אין אַ כאַש טיש צוגעגרייט פֿאַר אים, אָבער דאָס קען פּאַמעלעך די גאנצע סיסטעם אין די פאַל פון אַ גרויס נומער פון אַלאָק / דעאַללאָק / ריטיין / מעלדונג קאַללס. דער טיש האט צו זיין פארשפארט רעכט צו פאָדעם זיכערקייַט, אַזוי די רעפֿערענץ ציילן פון צוויי אַבדזשעקץ אין צוויי פֿעדעם קען נישט זיין געביטן אין דער זעלביקער צייט. אָבער, דעם ווערט איז ניי ינסערטאַד אין די רעשט פון די אַזוי גערופענע טאַטעשי ינדיקאַטאָרס. דאָס איז אן אנדער ינגקאַנספּיקוואַס, אָבער ריזיק מייַלע און אַקסעלעריישאַן אין דער צוקונפֿט. אָבער, דאָס קען קיינמאָל זיין אַטשיווד אין אַ 32-ביסל אַרקאַטעקטשער.

אינפֿאָרמאַציע וועגן פֿאַרבונדן אַבדזשעקץ, צי דער כייפעץ איז שוואַך רעפערענסט, צי עס איז נייטיק צו דזשענערייט אַ דעסטרוקטור פֿאַר די כייפעץ, אאז"ו ו, איז אויך ניי אַפּלייינג אין די רוען אָרט פון אָנווייַז צו די אַבדזשעקץ. א דאנק די אינפֿאָרמאַציע, די אָביעקטיוו-C רונטימע איז ביכולת צו פונדאַמענטאַלי פאַרגיכערן די רונטימע, וואָס איז שפיגלט אין די גיכקייַט פון יעדער אַפּלאַקיישאַן. פֿון טעסטינג, דאָס מיטל וועגן 40-50% ספּידאַפּ פון אַלע זיקאָרן פאַרוואַלטונג רופט. נאָר דורך באַשטימען צו 64-ביסל פּוינטערז און ניצן דעם נייַ פּלאַץ.

מסקנא

כאָטש קאָמפּעטיטאָרס וועלן פּרובירן צו פאַרשפּרייטן דעם געדאַנק אַז מאַך צו אַ 64-ביסל אַרקאַטעקטשער איז ומנייטיק, איר וועט שוין וויסן אַז דאָס איז נאָר אַ זייער אַנינפאָרמד מיינונג. עס איז אמת אַז פשוט באַשטימען צו 64 ביט אָן אַדאַפּטינג די שפּראַך אָדער אַפּלאַקיישאַנז צו עס טוט נישט טאַקע מיינען עפּעס - עס אפילו סלאָוז אַראָפּ די גאנצע סיסטעם. אָבער די נייַע A7 ניצט אַ מאָדערן ARM64 מיט אַ נייַע ינסטרוקטיאָנס שטעלן, און עפּל האט גענומען די צרה צו פאַרהייַנטיקן די גאנצע אָביעקטיוו-C שפּראַך און נוצן די נייַע קייפּאַבילאַטיז - דערפאר די צוגעזאגט ספּידאַפּ.

דאָ מיר האָבן דערמאנט אַ גרויס נומער פון סיבות וואָס אַ 64-ביסל אַרקאַטעקטשער איז די רעכט שריט פאָרויס. עס איז אן אנדער רעוואָלוציע "אונטער די קאַפּטער", דאַנק צו וואָס עפּל וועט פּרובירן צו בלייַבן אין די פאָרפראַנט ניט בלויז מיט פּלאַן, באַניצער צובינד און רייַך יקאָוסיסטאַם, אָבער דער הויפּט מיט די מערסט מאָדערן טעקנאַלאַדזשיז אויף די מאַרק.

מקור: mikeash.com
.