പരസ്യം അടയ്ക്കുക

മൈക്ക് ആഷ് തൻ്റെ ബ്ലോഗിൽ സമർപ്പിക്കുന്നു iPhone 64S-ൽ 5-ബിറ്റ് ആർക്കിടെക്ചറിലേക്ക് മാറുന്നതിൻ്റെ പ്രായോഗിക പ്രത്യാഘാതങ്ങൾ. ഈ ലേഖനം അദ്ദേഹത്തിൻ്റെ കണ്ടെത്തലുകളെ വരച്ചുകാട്ടുന്നു.

5-ബിറ്റ് ARM പ്രോസസറുള്ള പുതിയ iPhone 64s യഥാർത്ഥത്തിൽ ഉപയോക്താക്കൾക്കും മാർക്കറ്റിനും എന്താണ് അർത്ഥമാക്കുന്നത് എന്നതിനെക്കുറിച്ചുള്ള തെറ്റായ വിവരങ്ങൾ പ്രചരിക്കുന്നതാണ് ഈ വാചകത്തിൻ്റെ കാരണം. ഡവലപ്പർമാർക്കായി ഈ പരിവർത്തനത്തിൻ്റെ പ്രകടനം, കഴിവുകൾ, പ്രത്യാഘാതങ്ങൾ എന്നിവയെക്കുറിച്ചുള്ള വസ്തുനിഷ്ഠമായ വിവരങ്ങൾ ഇവിടെ കൊണ്ടുവരാൻ ഞങ്ങൾ ശ്രമിക്കും.

"64 ബിറ്റ്"

"എക്സ്-ബിറ്റ്" ലേബലിന് പരാമർശിക്കാൻ കഴിയുന്ന ഒരു പ്രോസസ്സറിൻ്റെ രണ്ട് ഭാഗങ്ങളുണ്ട് - പൂർണ്ണസംഖ്യ രജിസ്റ്ററുകളുടെ വീതിയും പോയിൻ്ററുകളുടെ വീതിയും. ഭാഗ്യവശാൽ, മിക്ക ആധുനിക പ്രോസസറുകളിലും ഈ വീതികൾ ഒന്നുതന്നെയാണ്, അതിനാൽ A7-ൻ്റെ കാര്യത്തിൽ ഇത് അർത്ഥമാക്കുന്നത് 64-ബിറ്റ് പൂർണ്ണസംഖ്യ രജിസ്റ്ററുകളും 64-ബിറ്റ് പോയിൻ്ററുകളും എന്നാണ്.

എന്നിരുന്നാലും, "64bit" എന്താണ് അർത്ഥമാക്കാത്തത് എന്ന് ചൂണ്ടിക്കാണിക്കേണ്ടത് പ്രധാനമാണ്: റാം ഫിസിക്കൽ അഡ്രസ് സൈസ്. റാമുമായി ആശയവിനിമയം നടത്താനുള്ള ബിറ്റുകളുടെ എണ്ണം (അങ്ങനെ ഒരു ഉപകരണത്തിന് പിന്തുണയ്ക്കാൻ കഴിയുന്ന റാമിൻ്റെ അളവ്) സിപിയു ബിറ്റുകളുടെ എണ്ണവുമായി ബന്ധമില്ല. ARM പ്രോസസറുകൾക്ക് 26-നും 40-ബിറ്റ് വിലാസങ്ങളും ഉണ്ട്, അവ മറ്റ് സിസ്റ്റങ്ങളിൽ നിന്ന് സ്വതന്ത്രമായി മാറ്റാനും കഴിയും.

  • ഡാറ്റ ബസിൻ്റെ വലുപ്പം. റാമിൽ നിന്നോ ബഫർ മെമ്മറിയിൽ നിന്നോ ലഭിക്കുന്ന ഡാറ്റയുടെ അളവ് ഈ ഘടകത്തിൽ നിന്ന് സമാനമായി സ്വതന്ത്രമാണ്. വ്യക്തിഗത പ്രോസസർ നിർദ്ദേശങ്ങൾ വ്യത്യസ്ത അളവിലുള്ള ഡാറ്റ അഭ്യർത്ഥിച്ചേക്കാം, എന്നാൽ അവ ഒന്നുകിൽ കഷണങ്ങളായി അയയ്ക്കുകയോ മെമ്മറിയിൽ നിന്ന് ആവശ്യമുള്ളതിനേക്കാൾ കൂടുതൽ സ്വീകരിക്കുകയോ ചെയ്യുന്നു. ഇത് ഡാറ്റ ക്വാണ്ടത്തിൻ്റെ വലുപ്പത്തെ ആശ്രയിച്ചിരിക്കുന്നു. ഐഫോൺ 5 ഇതിനകം മെമ്മറിയിൽ നിന്ന് 64-ബിറ്റ് ക്വാണ്ടയിൽ ഡാറ്റ സ്വീകരിക്കുന്നു (ഒപ്പം 32-ബിറ്റ് പ്രോസസറും ഉണ്ട്), കൂടാതെ നമുക്ക് 192 ബിറ്റുകൾ വരെ വലുപ്പങ്ങൾ നേരിടാം.
  • ഫ്ലോട്ടിംഗ് പോയിൻ്റുമായി ബന്ധപ്പെട്ട എന്തും. അത്തരം രജിസ്റ്ററുകളുടെ (FPU) വലിപ്പം വീണ്ടും പ്രോസസ്സറിൻ്റെ ആന്തരിക പ്രവർത്തനങ്ങളിൽ നിന്ന് സ്വതന്ത്രമാണ്. ARM64-ന് (64-ബിറ്റ് ARM പ്രൊസസർ) മുമ്പ് മുതൽ ARM 64-ബിറ്റ് FPU ഉപയോഗിക്കുന്നു.

പൊതുവായ ഗുണങ്ങളും ദോഷങ്ങളും

സമാനമായ 32 ബിറ്റ്, 64 ബിറ്റ് ആർക്കിടെക്ചറുകൾ ഞങ്ങൾ താരതമ്യം ചെയ്താൽ, അവ പൊതുവെ വ്യത്യസ്തമല്ല. മൊബൈൽ ഉപകരണങ്ങളിലും ആപ്പിൾ 64 ബിറ്റിലേക്ക് മാറുന്നതിൻ്റെ കാരണം അന്വേഷിക്കുന്ന പൊതുജനങ്ങളുടെ പൊതുവായ ആശയക്കുഴപ്പത്തിനുള്ള ഒരു കാരണമാണിത്. എന്നിരുന്നാലും, ഇതെല്ലാം A7 (ARM64) പ്രോസസറിൻ്റെ നിർദ്ദിഷ്ട പാരാമീറ്ററുകളിൽ നിന്നാണ് വരുന്നത്, ആപ്പിൾ അത് എങ്ങനെ ഉപയോഗിക്കുന്നു എന്നതിൽ നിന്നാണ്, പ്രോസസറിന് 64-ബിറ്റ് ആർക്കിടെക്ചർ ഉണ്ട് എന്ന വസ്തുതയിൽ നിന്ന് മാത്രമല്ല.

എന്നിരുന്നാലും, ഈ രണ്ട് വാസ്തുവിദ്യകൾ തമ്മിലുള്ള വ്യത്യാസങ്ങൾ നമ്മൾ ഇപ്പോഴും നോക്കുകയാണെങ്കിൽ, നമുക്ക് നിരവധി വ്യത്യാസങ്ങൾ കണ്ടെത്താനാകും. 64-ബിറ്റ് പൂർണ്ണസംഖ്യ രജിസ്റ്ററുകൾക്ക് 64-ബിറ്റ് പൂർണ്ണസംഖ്യകളെ കൂടുതൽ കാര്യക്ഷമമായി കൈകാര്യം ചെയ്യാൻ കഴിയും എന്നതാണ് വ്യക്തമായ ഒന്ന്. മുമ്പുതന്നെ, 32-ബിറ്റ് പ്രോസസറുകളിൽ അവരുമായി പ്രവർത്തിക്കുന്നത് സാധ്യമായിരുന്നു, എന്നാൽ ഇത് സാധാരണയായി അവയെ 32-ബിറ്റ് നീളമുള്ള കഷണങ്ങളായി വിഭജിക്കുകയായിരുന്നു, ഇത് മന്ദഗതിയിലുള്ള കണക്കുകൂട്ടലുകൾക്ക് കാരണമായി. അതിനാൽ 64-ബിറ്റ് പ്രോസസറിന് 64-ബിറ്റ് തരങ്ങളെപ്പോലെ വേഗത്തിൽ 32-ബിറ്റ് തരങ്ങൾ ഉപയോഗിച്ച് കണക്കുകൂട്ടാൻ കഴിയും. ഇതിനർത്ഥം സാധാരണയായി 64-ബിറ്റ് തരങ്ങൾ ഉപയോഗിക്കുന്ന ആപ്ലിക്കേഷനുകൾക്ക് 64-ബിറ്റ് പ്രോസസറിൽ വളരെ വേഗത്തിൽ പ്രവർത്തിക്കാൻ കഴിയും എന്നാണ്.

പ്രോസസറിന് ഉപയോഗിക്കാനാകുന്ന റാമിൻ്റെ മൊത്തം അളവിനെ 64ബിറ്റ് ബാധിക്കില്ലെങ്കിലും, ഒരു പ്രോഗ്രാമിൽ വലിയ റാമുകൾ ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നത് ഇത് എളുപ്പമാക്കും. 32-ബിറ്റ് പ്രോസസറിൽ പ്രവർത്തിക്കുന്ന ഏതൊരു പ്രോഗ്രാമിനും ഏകദേശം 4 GB വിലാസ ഇടം മാത്രമേയുള്ളൂ. ഓപ്പറേറ്റിംഗ് സിസ്റ്റവും സ്റ്റാൻഡേർഡ് ലൈബ്രറികളും എന്തെങ്കിലും എടുക്കുന്നു എന്നത് കണക്കിലെടുക്കുമ്പോൾ, ഇത് ആപ്ലിക്കേഷൻ ഉപയോഗത്തിനായി 1-3 GB ഇടയിൽ എവിടെയെങ്കിലും പ്രോഗ്രാം ഉപേക്ഷിക്കുന്നു. എന്നിരുന്നാലും, 32-ബിറ്റ് സിസ്റ്റത്തിന് 4 ജിബിയിൽ കൂടുതൽ റാം ഉണ്ടെങ്കിൽ, ആ മെമ്മറി ഉപയോഗിക്കുന്നത് അൽപ്പം സങ്കീർണ്ണമാണ്. ഞങ്ങളുടെ പ്രോഗ്രാമിനായി (മെമ്മറി വെർച്വലൈസേഷൻ) മെമ്മറിയുടെ ഈ വലിയ ഭാഗങ്ങൾ മാപ്പ് ചെയ്യാൻ ഞങ്ങൾ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തെ നിർബന്ധിക്കേണ്ടതുണ്ട്, അല്ലെങ്കിൽ നമുക്ക് പ്രോഗ്രാമിനെ ഒന്നിലധികം പ്രോസസുകളായി വിഭജിക്കാം (ഓരോ പ്രക്രിയയ്ക്കും വീണ്ടും സൈദ്ധാന്തികമായി 4GB മെമ്മറി നേരിട്ട് വിലാസത്തിനായി ലഭ്യമാണ്).

എന്നിരുന്നാലും, ഈ "ഹാക്കുകൾ" വളരെ ബുദ്ധിമുട്ടുള്ളതും മന്ദഗതിയിലുള്ളതുമാണ്, കുറഞ്ഞത് ആപ്ലിക്കേഷനുകൾ അവ ഉപയോഗിക്കുന്നു. പ്രായോഗികമായി, ഒരു 32-ബിറ്റ് പ്രോസസറിൽ, ഓരോ പ്രോഗ്രാമും അതിൻ്റെ 1-3 GB മെമ്മറി മാത്രമേ ഉപയോഗിക്കൂ, കൂടുതൽ ലഭ്യമായ റാം ഒരേ സമയം ഒന്നിലധികം പ്രോഗ്രാമുകൾ പ്രവർത്തിപ്പിക്കാനോ ഈ മെമ്മറി ഒരു ബഫറായി ഉപയോഗിക്കാനോ കഴിയും (കാഷിംഗ്). ഈ ഉപയോഗങ്ങൾ പ്രായോഗികമാണ്, എന്നാൽ ഏത് പ്രോഗ്രാമിനും 4GB-യിൽ കൂടുതലുള്ള മെമ്മറി കഷണങ്ങൾ എളുപ്പത്തിൽ ഉപയോഗിക്കാൻ കഴിയണമെന്ന് ഞങ്ങൾ ആഗ്രഹിക്കുന്നു.

4GB-ൽ കൂടുതൽ മെമ്മറി ഇല്ലെങ്കിൽ, 64-ബിറ്റ് ആർക്കിടെക്ചർ ഉപയോഗശൂന്യമാണ് എന്ന പതിവ് (യഥാർത്ഥത്തിൽ തെറ്റായ) അവകാശവാദത്തിലേക്ക് ഞങ്ങൾ ഇപ്പോൾ വരുന്നു. മെമ്മറി കുറവുള്ള സിസ്റ്റത്തിൽ പോലും വലിയ അഡ്രസ് സ്പേസ് ഉപയോഗപ്രദമാണ്. മെമ്മറി-മാപ്പ് ചെയ്‌ത ഫയലുകൾ, ഫയലിൻ്റെ ഉള്ളടക്കത്തിൻ്റെ ഒരു ഭാഗം ലോജിക്കലായി പ്രോസസ്സിൻ്റെ മെമ്മറിയുമായി ബന്ധിപ്പിച്ചിരിക്കുന്ന ഒരു ഹാൻഡി ടൂളാണ്, മുഴുവൻ ഫയലും മെമ്മറിയിലേക്ക് ലോഡ് ചെയ്യാതെ തന്നെ. അങ്ങനെ, സിസ്റ്റത്തിന്, ഉദാഹരണത്തിന്, റാം ശേഷിയേക്കാൾ പലമടങ്ങ് വലിയ ഫയലുകൾ ക്രമേണ പ്രോസസ്സ് ചെയ്യാൻ കഴിയും. ഒരു 32-ബിറ്റ് സിസ്റ്റത്തിൽ, അത്തരം വലിയ ഫയലുകൾ വിശ്വസനീയമായി മെമ്മറി-മാപ്പ് ചെയ്യാൻ കഴിയില്ല, അതേസമയം 64-ബിറ്റ് സിസ്റ്റത്തിൽ, ഇത് ഒരു കേക്ക് കഷണമാണ്, വളരെ വലിയ വിലാസ സ്ഥലത്തിന് നന്ദി.

എന്നിരുന്നാലും, പോയിൻ്ററുകളുടെ വലിയ വലിപ്പവും ഒരു വലിയ പോരായ്മ കൊണ്ടുവരുന്നു: അല്ലെങ്കിൽ സമാനമായ പ്രോഗ്രാമുകൾക്ക് 64-ബിറ്റ് പ്രോസസറിൽ കൂടുതൽ മെമ്മറി ആവശ്യമാണ് (ഈ വലിയ പോയിൻ്ററുകൾ എവിടെയെങ്കിലും സൂക്ഷിക്കേണ്ടതുണ്ട്). പോയിൻ്ററുകൾ പ്രോഗ്രാമുകളുടെ പതിവ് ഭാഗമായതിനാൽ, ഈ വ്യത്യാസം കാഷെ ഭാരപ്പെടുത്തും, ഇത് മുഴുവൻ സിസ്റ്റവും മന്ദഗതിയിലാക്കുന്നു. അതിനാൽ വീക്ഷണകോണിൽ, പ്രോസസർ ആർക്കിടെക്ചർ 64-ബിറ്റിലേക്ക് മാറ്റിയാൽ, അത് യഥാർത്ഥത്തിൽ മുഴുവൻ സിസ്റ്റത്തെയും മന്ദഗതിയിലാക്കുമെന്ന് നമുക്ക് കാണാൻ കഴിയും. അതിനാൽ മറ്റ് സ്ഥലങ്ങളിൽ കൂടുതൽ ഒപ്റ്റിമൈസേഷനുകൾ വഴി ഈ ഘടകം സന്തുലിതമാക്കേണ്ടതുണ്ട്.

ARM64

പുതിയ iPhone 7s-ന് കരുത്ത് പകരുന്ന 64-ബിറ്റ് പ്രോസസറായ A5, വിശാലമായ രജിസ്റ്ററുകളുള്ള ഒരു സാധാരണ ARM പ്രോസസർ മാത്രമല്ല. ARM64-ൽ പഴയ 32-ബിറ്റ് പതിപ്പിനേക്കാൾ വലിയ മെച്ചപ്പെടുത്തലുകൾ അടങ്ങിയിരിക്കുന്നു.

ആപ്പിൾ എ7 പ്രൊസസർ.

രജിസ്ട്രി

ARM64-ൽ 32-ബിറ്റ് ARM-ൻ്റെ ഇരട്ടി പൂർണ്ണസംഖ്യ രജിസ്റ്ററുകൾ ഉണ്ട് (രജിസ്റ്ററുകളുടെ എണ്ണവും വീതിയും ആശയക്കുഴപ്പത്തിലാക്കാതിരിക്കാൻ ശ്രദ്ധിക്കുക - "64-ബിറ്റ്" വിഭാഗത്തിൽ ഞങ്ങൾ വീതിയെക്കുറിച്ച് സംസാരിച്ചു. അതിനാൽ ARM64 ന് ഇരട്ടി വീതിയുള്ള രജിസ്റ്ററുകളും ഇരട്ടി രജിസ്റ്ററുകളും ഉണ്ട്. രജിസ്റ്ററുകൾ). 32-ബിറ്റ് ARM-ന് 16 പൂർണ്ണസംഖ്യ രജിസ്റ്ററുകൾ ഉണ്ട്: ഒരു പ്രോഗ്രാം കൌണ്ടർ (PC - നിലവിലെ നിർദ്ദേശങ്ങളുടെ എണ്ണം അടങ്ങിയിരിക്കുന്നു), ഒരു സ്റ്റാക്ക് പോയിൻ്റർ (പുരോഗമിച്ചുകൊണ്ടിരിക്കുന്ന ഒരു ഫംഗ്ഷനിലേക്കുള്ള ഒരു പോയിൻ്റർ), ഒരു ലിങ്ക് രജിസ്റ്റർ (അവസാനത്തിനു ശേഷമുള്ള റിട്ടേണിലേക്കുള്ള ഒരു പോയിൻ്റർ പ്രവർത്തനത്തിൻ്റെ), ശേഷിക്കുന്ന 13 എണ്ണം ആപ്ലിക്കേഷൻ ഉപയോഗത്തിനുള്ളതാണ്. എന്നിരുന്നാലും, ഒരു സീറോ രജിസ്റ്റർ, ഒരു ലിങ്ക് രജിസ്റ്റർ, ഒരു ഫ്രെയിം പോയിൻ്റർ (ഒരു സ്റ്റാക്ക് പോയിൻ്ററിന് സമാനമായത്) എന്നിവയുൾപ്പെടെ 64 പൂർണ്ണസംഖ്യ രജിസ്റ്ററുകൾ ARM32 ന് ഉണ്ട്. ഇത് ആപ്ലിക്കേഷൻ ഉപയോഗത്തിനായി 28 രജിസ്റ്ററുകൾ ഞങ്ങൾക്ക് നൽകുന്നു, 32-ബിറ്റ് ARM-ൻ്റെ ഇരട്ടിയിലധികം. അതേ സമയം, ARM64 ഫ്ലോട്ടിംഗ് പോയിൻ്റ് നമ്പർ (FPU) രജിസ്റ്ററുകളുടെ എണ്ണം 16 ൽ നിന്ന് 32 128-ബിറ്റ് രജിസ്റ്ററുകളായി ഇരട്ടിയാക്കി.

എന്നാൽ രജിസ്റ്ററുകളുടെ എണ്ണം വളരെ പ്രധാനമായിരിക്കുന്നത് എന്തുകൊണ്ട്? മെമ്മറി സാധാരണയായി സിപിയു കണക്കുകൂട്ടലുകളേക്കാൾ മന്ദഗതിയിലാണ്, വായന/എഴുത്ത് വളരെ സമയമെടുക്കും. ഇത് വേഗതയേറിയ പ്രോസസറിന് മെമ്മറിക്കായി കാത്തിരിക്കേണ്ടി വരും, കൂടാതെ ഞങ്ങൾ സിസ്റ്റത്തിൻ്റെ സ്വാഭാവിക വേഗത പരിധിയിൽ എത്തുകയും ചെയ്യും. ബഫറുകളുടെ പാളികൾ ഉപയോഗിച്ച് ഈ വൈകല്യം മറയ്ക്കാൻ പ്രോസസ്സറുകൾ ശ്രമിക്കുന്നു, എന്നാൽ ഏറ്റവും വേഗതയേറിയ ഒന്ന് (L1) പോലും പ്രോസസ്സറിൻ്റെ കണക്കുകൂട്ടലേക്കാൾ വേഗത കുറവാണ്. എന്നിരുന്നാലും, രജിസ്റ്ററുകൾ പ്രോസസറിൽ നേരിട്ട് മെമ്മറി സെല്ലുകളാണ്, അവയുടെ റീഡിംഗ്/റൈറ്റിംഗ് പ്രോസസറിനെ മന്ദഗതിയിലാക്കാത്തത്ര വേഗതയുള്ളതാണ്. രജിസ്റ്ററുകളുടെ എണ്ണം പ്രായോഗികമായി അർത്ഥമാക്കുന്നത് പ്രോസസ്സറിൻ്റെ കണക്കുകൂട്ടലുകൾക്കായുള്ള ഏറ്റവും വേഗതയേറിയ മെമ്മറിയുടെ അളവാണ്, ഇത് മുഴുവൻ സിസ്റ്റത്തിൻ്റെയും വേഗതയെ വളരെയധികം ബാധിക്കുന്നു.

അതേ സമയം, ഈ വേഗതയ്ക്ക് കമ്പൈലറിൽ നിന്ന് നല്ല ഒപ്റ്റിമൈസേഷൻ പിന്തുണ ആവശ്യമാണ്, അതുവഴി ഭാഷയ്ക്ക് ഈ രജിസ്റ്ററുകൾ ഉപയോഗിക്കാനും പൊതുവായ ആപ്ലിക്കേഷനിൽ (സ്ലോ) മെമ്മറിയിൽ എല്ലാം സംഭരിക്കേണ്ടതില്ല.

ഇൻസ്ട്രക്ഷൻ സെറ്റ്

ARM64 ഇൻസ്ട്രക്ഷൻ സെറ്റിലും വലിയ മാറ്റങ്ങൾ കൊണ്ടുവരുന്നു. ഒരു പ്രൊസസറിന് ചെയ്യാൻ കഴിയുന്ന ആറ്റോമിക് പ്രവർത്തനങ്ങളുടെ ഒരു കൂട്ടമാണ് ഇൻസ്ട്രക്ഷൻ സെറ്റ്. വ്യക്തിഗത ഭാഷകൾക്ക് ലഭ്യമായ പ്രവർത്തനങ്ങൾ ഈ നിർദ്ദേശങ്ങൾ ഉൾക്കൊള്ളുന്നു. കൂടുതൽ സങ്കീർണ്ണമായ പ്രവർത്തനങ്ങൾ കൂടുതൽ നിർദ്ദേശങ്ങൾ നടപ്പിലാക്കണം, അതിനാൽ അവ മന്ദഗതിയിലാകും.

ARM64-ൽ പുതിയത് AES എൻക്രിപ്ഷൻ, SHA-1, SHA-256 എന്നീ ഹാഷ് ഫംഗ്ഷനുകൾക്കുള്ള നിർദ്ദേശങ്ങളാണ്. അതിനാൽ സങ്കീർണ്ണമായ ഒരു നിർവ്വഹണത്തിനുപകരം, ഭാഷ മാത്രമേ ഈ നിർദ്ദേശത്തെ വിളിക്കൂ - ഇത് അത്തരം ഫംഗ്‌ഷനുകളുടെ കണക്കുകൂട്ടലിന് വലിയ വേഗത്തിലാക്കുകയും ആപ്ലിക്കേഷനുകളിൽ സുരക്ഷ വർദ്ധിപ്പിക്കുകയും ചെയ്യും. ഉദാ. പുതിയ ടച്ച് ഐഡി എൻക്രിപ്ഷനിലും ഈ നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്നു, ഇത് യഥാർത്ഥ വേഗതയും സുരക്ഷയും അനുവദിക്കുന്നു (സിദ്ധാന്തത്തിൽ, ഒരു ആക്രമണകാരി ഡാറ്റ ആക്‌സസ് ചെയ്യുന്നതിന് പ്രോസസർ തന്നെ പരിഷ്‌ക്കരിക്കേണ്ടിവരും - അതിൻ്റെ മിനിയേച്ചർ വലുപ്പം നൽകിയാൽ അത് അപ്രായോഗികമാണ്).

32 ബിറ്റുമായുള്ള അനുയോജ്യത

എമുലേഷൻ ആവശ്യമില്ലാതെ തന്നെ A7 ന് 32-ബിറ്റ് മോഡിൽ പൂർണ്ണമായി പ്രവർത്തിക്കാനാകുമെന്നത് എടുത്തുപറയേണ്ടതാണ്. പുതിയ iPhone 5s-ന് 32-ബിറ്റ് ARM-ൽ കംപൈൽ ചെയ്‌തിരിക്കുന്ന ആപ്ലിക്കേഷനുകൾ വേഗത കുറയാതെ പ്രവർത്തിപ്പിക്കാൻ കഴിയുമെന്നാണ് ഇതിനർത്ഥം. എന്നിരുന്നാലും, അതിന് പുതിയ ARM64 ഫംഗ്‌ഷനുകൾ ഉപയോഗിക്കാൻ കഴിയില്ല, അതിനാൽ A7-ന് വേണ്ടി മാത്രം ഒരു പ്രത്യേക ബിൽഡ് നിർമ്മിക്കുന്നത് എല്ലായ്പ്പോഴും മൂല്യവത്താണ്, അത് വളരെ വേഗത്തിൽ പ്രവർത്തിക്കും.

റൺടൈം മാറ്റങ്ങൾ

റൺടൈം എന്നത് പ്രോഗ്രാമിംഗ് ഭാഷയിലേക്ക് ഫംഗ്‌ഷനുകൾ ചേർക്കുന്ന കോഡാണ്, അത് ആപ്ലിക്കേഷൻ റൺ ചെയ്യുമ്പോൾ അത് വിവർത്തനം ചെയ്യുന്നതുവരെ ഉപയോഗിക്കാൻ കഴിയും. ആപ്പിളിന് ആപ്ലിക്കേഷൻ അനുയോജ്യത നിലനിർത്തേണ്ടതില്ല (64-ബിറ്റ് ബൈനറി 32-ബിറ്റിൽ പ്രവർത്തിക്കുന്നു), ഒബ്ജക്റ്റീവ്-സി ഭാഷയിൽ കുറച്ച് കൂടി മെച്ചപ്പെടുത്തലുകൾ നടത്താൻ അവർക്ക് താങ്ങാനാവും.

അവരിൽ ഒരാൾ വിളിക്കപ്പെടുന്നവയാണ് ടാഗ് ചെയ്ത പോയിൻ്റർ (അടയാളപ്പെടുത്തിയ സൂചകം). സാധാരണയായി, ഒബ്‌ജക്റ്റുകളും ആ വസ്തുക്കളിലേക്കുള്ള പോയിൻ്ററുകളും മെമ്മറിയുടെ പ്രത്യേക ഭാഗങ്ങളിൽ സൂക്ഷിക്കുന്നു. എന്നിരുന്നാലും, പുതിയ പോയിൻ്റർ തരങ്ങൾ ചെറിയ ഡാറ്റയുള്ള ക്ലാസുകളെ പോയിൻ്ററിൽ നേരിട്ട് ഒബ്ജക്റ്റുകൾ സംഭരിക്കുന്നതിന് അനുവദിക്കുന്നു. ഈ ഘട്ടം ഒബ്‌ജക്റ്റിനായി മെമ്മറി നേരിട്ട് അനുവദിക്കേണ്ടതിൻ്റെ ആവശ്യകത ഇല്ലാതാക്കുന്നു, ഒരു പോയിൻ്ററും അതിനുള്ളിലെ ഒബ്‌ജക്റ്റും സൃഷ്‌ടിക്കുക. ടാഗ് ചെയ്‌ത പോയിൻ്ററുകൾ 64-ബിറ്റ് ആർക്കിടെക്‌ചറിൽ മാത്രമേ പിന്തുണയ്‌ക്കുകയുള്ളൂ. അതിനാൽ, iOS, OS X-ൽ നിന്ന് വ്യത്യസ്തമായി, ഈ സവിശേഷതയെ ഇതുവരെ പിന്തുണച്ചിട്ടില്ല. എന്നിരുന്നാലും, ARM32-ൻ്റെ വരവോടെ, ഇത് മാറുകയാണ്, ഐഒഎസ് ഇക്കാര്യത്തിലും OS X-നെ പിടികൂടി.

പോയിൻ്ററുകൾക്ക് 64 ബിറ്റുകൾ നീളമുണ്ടെങ്കിലും, ARM64-ൽ പോയിൻ്ററിൻ്റെ സ്വന്തം വിലാസത്തിനായി 33 ബിറ്റുകൾ മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ. ബാക്കിയുള്ള പോയിൻ്റർ ബിറ്റുകളെ വിശ്വസനീയമായി അൺമാസ്ക് ചെയ്യാൻ ഞങ്ങൾക്ക് കഴിയുമെങ്കിൽ, ടാഗ് ചെയ്‌ത പോയിൻ്ററുകളുടെ കാര്യത്തിലെന്നപോലെ അധിക ഡാറ്റ സംഭരിക്കുന്നതിന് ഈ സ്‌പെയ്‌സ് ഉപയോഗിക്കാം. ആശയപരമായി, ഒബ്ജക്റ്റീവ്-സിയുടെ ചരിത്രത്തിലെ ഏറ്റവും വലിയ മാറ്റങ്ങളിൽ ഒന്നാണിത്, ഇത് വിപണനം ചെയ്യാവുന്ന ഒരു സവിശേഷതയല്ലെങ്കിലും - അതിനാൽ ഒബ്ജക്റ്റീവ്-സി എങ്ങനെ മുന്നോട്ട് കൊണ്ടുപോകുന്നുവെന്ന് മിക്ക ഉപയോക്താക്കൾക്കും അറിയില്ല.

അത്തരം ടാഗ് ചെയ്‌ത പോയിൻ്ററിൻ്റെ ശേഷിക്കുന്ന സ്ഥലത്ത് സംഭരിക്കാൻ കഴിയുന്ന ഉപയോഗപ്രദമായ ഡാറ്റയെ സംബന്ധിച്ചിടത്തോളം, ഒബ്‌ജക്റ്റീവ്-സി, ഉദാഹരണത്തിന്, ഇപ്പോൾ വിളിക്കപ്പെടുന്നവ സംഭരിക്കുന്നതിന് ഇത് ഉപയോഗിക്കുന്നു. റഫറൻസ് എണ്ണം (റഫറൻസുകളുടെ എണ്ണം). മുമ്പ്, റഫറൻസ് കൗണ്ട് മെമ്മറിയിൽ മറ്റൊരു സ്ഥലത്ത്, അതിനായി തയ്യാറാക്കിയ ഒരു ഹാഷ് ടേബിളിൽ സംഭരിച്ചിരുന്നു, എന്നാൽ ഇത് ധാരാളം alloc/dealloc/retain/release കോളുകളുടെ കാര്യത്തിൽ ഇത് മുഴുവൻ സിസ്റ്റത്തെയും മന്ദഗതിയിലാക്കിയേക്കാം. ത്രെഡ് സുരക്ഷ കാരണം ടേബിൾ ലോക്ക് ചെയ്യേണ്ടിവന്നു, അതിനാൽ രണ്ട് ത്രെഡുകളിലെ രണ്ട് ഒബ്‌ജക്റ്റുകളുടെ റഫറൻസ് എണ്ണം ഒരേ സമയം മാറ്റാൻ കഴിഞ്ഞില്ല. എന്നിരുന്നാലും, ഈ മൂല്യം പുതിയതായി വിളിക്കപ്പെടുന്ന ബാക്കിയുള്ളവയിലേക്ക് ചേർത്തു isa സൂചകങ്ങൾ. ഇത് മറ്റൊരു അവ്യക്തമാണ്, എന്നാൽ ഭാവിയിൽ വലിയ നേട്ടവും ത്വരിതപ്പെടുത്തലും. എന്നിരുന്നാലും, 32-ബിറ്റ് ആർക്കിടെക്ചറിൽ ഇത് ഒരിക്കലും നേടാനാവില്ല.

അനുബന്ധ ഒബ്‌ജക്‌റ്റുകളെക്കുറിച്ചുള്ള വിവരങ്ങൾ, ഒബ്‌ജക്‌റ്റ് ദുർബലമായി പരാമർശിച്ചിട്ടുണ്ടോ, ഒബ്‌ജക്റ്റിനായി ഒരു ഡിസ്ട്രക്‌റ്റർ സൃഷ്‌ടിക്കേണ്ടത് ആവശ്യമാണോ, മുതലായവ, ഒബ്‌ജക്‌റ്റിലേക്കുള്ള പോയിൻ്ററുകളുടെ ശേഷിക്കുന്ന സ്ഥലത്ത് പുതുതായി ചേർത്തിരിക്കുന്നു. ഈ വിവരത്തിന് നന്ദി, ഒബ്‌ജക്റ്റീവ്-സി ഓരോ ആപ്ലിക്കേഷൻ്റെയും വേഗതയിൽ പ്രതിഫലിക്കുന്ന റൺടൈം അടിസ്ഥാനപരമായി വേഗത്തിലാക്കാൻ റൺടൈമിന് കഴിയും. ടെസ്റ്റിംഗിൽ നിന്ന്, എല്ലാ മെമ്മറി മാനേജ്‌മെൻ്റ് കോളുകളുടെയും 40-50% വേഗത വർദ്ധിപ്പിക്കും. 64-ബിറ്റ് പോയിൻ്ററുകളിലേക്ക് മാറി ഈ പുതിയ സ്പേസ് ഉപയോഗിക്കുന്നതിലൂടെ മാത്രം.

ഉപസംഹാരം

64-ബിറ്റ് ആർക്കിടെക്ചറിലേക്ക് മാറുന്നത് അനാവശ്യമാണെന്ന ആശയം മത്സരാർത്ഥികൾ പ്രചരിപ്പിക്കാൻ ശ്രമിക്കുമെങ്കിലും, ഇത് വളരെ വിവരമില്ലാത്ത അഭിപ്രായം മാത്രമാണെന്ന് നിങ്ങൾക്ക് ഇതിനകം തന്നെ അറിയാം. നിങ്ങളുടെ ഭാഷയോ ആപ്ലിക്കേഷനുകളോ പൊരുത്തപ്പെടുത്താതെ 64-ബിറ്റിലേക്ക് മാറുന്നത് യഥാർത്ഥത്തിൽ ഒന്നും അർത്ഥമാക്കുന്നില്ല എന്നത് ശരിയാണ് - ഇത് മുഴുവൻ സിസ്റ്റത്തെയും മന്ദഗതിയിലാക്കുന്നു. എന്നാൽ പുതിയ A7 ഒരു പുതിയ ഇൻസ്ട്രക്ഷൻ സെറ്റിനൊപ്പം ഒരു ആധുനിക ARM64 ഉപയോഗിക്കുന്നു, കൂടാതെ ഒബ്ജക്റ്റീവ്-സി ഭാഷ മുഴുവനായി നവീകരിക്കാനും പുതിയ കഴിവുകൾ പ്രയോജനപ്പെടുത്താനും ആപ്പിൾ ബുദ്ധിമുട്ടി - അതിനാൽ വാഗ്ദാനം ചെയ്ത വേഗത.

64-ബിറ്റ് ആർക്കിടെക്ചർ മുന്നോട്ടുള്ള ശരിയായ ചുവടുവയ്പ്പിനുള്ള കാരണങ്ങൾ ഞങ്ങൾ ഇവിടെ സൂചിപ്പിച്ചിട്ടുണ്ട്. ഇത് "ഹൂഡിന് കീഴിലുള്ള" മറ്റൊരു വിപ്ലവമാണ്, ഇതിന് നന്ദി, ഡിസൈൻ, ഉപയോക്തൃ ഇൻ്റർഫേസ്, സമ്പന്നമായ ആവാസവ്യവസ്ഥ എന്നിവയിൽ മാത്രമല്ല, പ്രധാനമായും വിപണിയിലെ ഏറ്റവും ആധുനിക സാങ്കേതികവിദ്യകൾക്കൊപ്പം മുൻനിരയിൽ തുടരാൻ ആപ്പിൾ ശ്രമിക്കും.

ഉറവിടം: mikeash.com
.