മൈക്രോകോഡ്

പ്രോസസർ രൂപകൽപ്പനയിൽ, **മൈക്രോക്കോഡ്** പ്രോസസറിന്റെ ഹാർഡ്വെയറും പ്രോഗ്രാമറുകൾ ഉപയോഗിക്കുന്ന ഇൻസ്ട്രക്ഷൻ സെറ്റും (മെഷീൻ കോഡ്) തമ്മിലുള്ള ഒരു മധ്യപാളിയാണ്. ഇത് പ്രോഗ്രാമറിന്റ നിർദ്ദേശങ്ങൾ പ്രോസസർ ഹാർഡ്വെയറിന് എളുപ്പത്തിൽ മനസ്സിലാകുന്ന രീതിയിലേക്ക് മാറ്റുന്നു. പ്രോസസ്സറിനുള്ളിലെ ഒരു അതിവേഗ മെമ്മറിയിലാണ്‌ ഇവയുണ്ടാവുക, യന്ത്രഭാഷയിലെ നിർദ്ദേശങ്ങളെ സർക്യൂട്ട് തലത്തിലെ ക്രിയകളുടെ അനുക്രമങ്ങളായി പരിവർത്തനം ചെയ്യുകയാണിവ ചെയ്യുന്നത്. യന്ത്രഭാഷയെ പ്രൊസസ്സറിന്റെ ഇലക്ട്രോണിസ് വിശദാംശങ്ങളിൽ നിന്നും മുക്തമാക്കുവാനും അതുവഴി യന്ത്രഭാഷയിലെ നിർദ്ദേശങ്ങളെ സൗകര്യപ്രദമായ രീതിയിൽ രൂപൽപ്പന ചെയ്യുവാനും ഇവ സഹായിക്കുന്നു. സങ്കീർണ്ണ പ്രവർത്തനങ്ങളെ ഒന്നിലധികം നിർദ്ദേശങ്ങളിലൂടെ പ്രാവർത്തികമാക്കിക്കൊണ്ട്  ഇലക്ട്രോണിക്ക് സർക്യൂട്ടുകളുടെ സങ്കീർണ്ണത കുറക്കുന്നതും ഇവ സാധ്യമാക്കുന്നു. മൈക്രോകോഡ് നിർമ്മിക്കുന്നതിനെ **മൈക്രോപ്രോഗ്രാമിങ്ങ്** എന്നാണറിയപ്പെടുന്നത്, ഒരു നിശ്ചിത പ്രോസസ്സറിനുള്ള മൈക്രോകോഡിനെ **മൈക്രോപ്രോഗ്രാം** എന്നും വിളിക്കുന്നു.

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

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

ചില ഹാർഡ്‌വെയർ വെണ്ടർമാർ, പ്രത്യേകിച്ച് ഐബിഎം, ഫേംവെയറിന്റെ പര്യായമായി മൈക്രോകോഡ് എന്ന പദം ഉപയോഗിക്കുന്നു. ആ രീതിയിൽ, ഒരു ഉപകരണത്തിനുള്ളിലെ എല്ലാ കോഡുകളും മൈക്രോകോഡ് അല്ലെങ്കിൽ മെഷീൻ കോഡ് പരിഗണിക്കാതെ തന്നെ മൈക്രോകോഡ് എന്ന് വിളിക്കുന്നു; ഉദാഹരണത്തിന്, ഹാർഡ് ഡിസ്ക് ഡ്രൈവുകളിൽ മൈക്രോകോഡും ഫേംവെയറും അടങ്ങിയിട്ടുണ്ടെങ്കിലും അവയുടെ മൈക്രോകോഡ് പരിഷ്കരിച്ചിട്ടുണ്ടെന്ന് പറയപ്പെടുന്നു.
## അവലോകനം
ഒരു കമ്പ്യൂട്ടറിന്റെ സോഫ്‌റ്റ്‌വെയർ സ്റ്റാക്കിലെ ഏറ്റവും താഴ്ന്ന പാളി പരമ്പരാഗതമായി പ്രോസസറിനായുള്ള റോ മെഷീൻ കോഡ് നിർദ്ദേശങ്ങളാണ്. മൈക്രോകോഡ് ചെയ്ത പ്രോസസ്സറുകളിൽ, മൈക്രോകോഡ് ആ നിർദ്ദേശങ്ങൾ ലഭ്യമാക്കുകയും നടപ്പിലാക്കുകയും ചെയ്യുന്നു. ആശയക്കുഴപ്പം ഒഴിവാക്കാൻ, മൈക്രോപ്രോഗ്രാമുമായി ബന്ധപ്പെട്ട ഓരോ ഘടകത്തെയും മൈക്രോ പ്രിഫിക്‌സ് ഉപയോഗിച്ച് വേർതിരിക്കുന്നു: ഉദാ. മൈക്രോ ഇൻസ്ട്രക്ഷൻ, മൈക്രോ അസംബ്ലർ, മൈക്രോപ്രോഗ്രാമർ, മൈക്രോ ആർക്കിടെക്ചർ മുതലായവ.

എഞ്ചിനീയർമാർ സാധാരണയായി ഒരു പ്രോസസറിന്റെ ഡിസൈൻ ഘട്ടത്തിൽ മൈക്രോകോഡ് എഴുതുന്നു, അത് ഒരു റീഡ്-ഒൺലി മെമ്മറി (ROM) അല്ലെങ്കിൽ പ്രോഗ്രാമബിൾ ലോജിക് അറേ (PLA) ഘടനയിൽ അല്ലെങ്കിൽ ഇവ രണ്ടും കൂടിച്ചേർന്ന് സംഭരിക്കുന്നു.എന്നിരുന്നാലും, സ്റ്റാറ്റിക് റാൻഡം-ആക്സസ് മെമ്മറി (SRAM) അല്ലെങ്കിൽ ഫ്ലാഷ് മെമ്മറിയിൽ സംഭരിച്ചിരിക്കുന്ന ചിലതിന് അല്ലെങ്കിൽ എല്ലാ മൈക്രോകോഡുകളുള്ള മെഷീനുകളും നിലവിലുണ്ട്. കമ്പ്യൂട്ടറുകളുടെ പശ്ചാത്തലത്തിൽ ഇത് പരമ്പരാഗതമായി റൈറ്റബിൾ കൺട്രോൾ സ്റ്റോർ ആയി സൂചിപ്പിക്കുന്നു, അത് ഒന്നുകിൽ റീഡ്-ഓൺലി അല്ലെങ്കിൽ റീഡ്-റൈറ്റ് മെമ്മറി ആകാം. പിന്നീടുള്ള സന്ദർഭത്തിൽ, ഇൻസ്ട്രക്ഷൻ സെറ്റിലെ ബഗുകൾ തിരുത്തുന്നതിനോ പുതിയ മെഷീൻ നിർദ്ദേശങ്ങൾ നടപ്പിലാക്കുന്നതിനോ മൈക്രോകോഡിൽ മാറ്റം വരുത്താനുള്ള സാധ്യതയുള്ള മറ്റൊരു സ്റ്റോറേജ് മീഡിയത്തിൽ നിന്ന് കൺട്രോൾ സ്റ്റോറിലേക്ക് സിപിയു ഇനീഷ്യലൈസേഷൻ പ്രക്രിയ വഴി മൈക്രോകോഡ് ലോഡ് ചെയ്യുന്നു.
### ഇൻസ്ട്രക്ഷൻ സെറ്റുകൾ
ഹാർഡ്വെയർ തലത്തിൽ, പ്രോസസറിന് വിവിധ ജോലികൾ ചെയ്യുന്നതിനായി വേർതിരിച്ചിരിക്കുന്ന നിരവധി സർക്ക്യൂട്ട് ഭാഗങ്ങളുണ്ട്. ഉദാഹരണത്തിന്, അരിത്മെറ്റിക് ലോജിക് യൂണിറ്റ് (ALU) എന്ന് പറയുന്ന ഒരു ഘടകം എണ്ണൽ, കൂട്ടൽ, രണ്ടുഎണ്ണങ്ങൾ തമ്മിൽ താരതമ്യം ചെയ്യുക തുടങ്ങിയ പ്രവർത്തനങ്ങൾ നടത്തുന്നു. പുറത്തുള്ള മെമ്മറിയിൽ നിന്ന് ഡാറ്റ വായിക്കാനും എഴുത്താനുമുള്ള സർക്ക്യൂട്ടുകളും പ്രോസസറിനുള്ളിലാണ്. പ്രോസസ്സിംഗ് നടക്കുമ്പോൾ ഡാറ്റ സംഭരിക്കാൻ ചെറിയ മെമ്മറി ഭാഗങ്ങളും ഉപയോഗിക്കുന്നു. കൂടാതെ, പ്രചാരത്തിലുള്ള ഡിസൈനുകളിൽ, രജിസ്റ്റർ ഫയൽ എന്ന് വിളിക്കുന്ന ഒരു ഹൈ-പെർഫോർമൻസ് മെമ്മറിയും താൽക്കാലിക മൂല്യങ്ങൾ സേവ് ചെയ്യാൻ ഉപയോഗിക്കുന്നു, ഇത് നിലവിലെ പ്രവർത്തനത്തിന് മാത്രമല്ല, മറ്റ് സമയങ്ങളിലും പ്രയോജനം ചെയ്യുന്നു.

റിസ്ക് (RISC-Reduced Instruction Set Computer) ഡിസൈനുകളിൽ ഒരു നിർദ്ദേശം ശരിയായി നടപ്പാക്കാൻ വിവിധ സർക്ക്യൂട്ടുകൾ ക്രമമായി സജീവമാക്കേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്, മെമ്മറിയിൽ നിന്ന് സംഖ്യകൾ ലോഡ് ചെയ്യാതെ രണ്ടു സംഖ്യകൾ കൂട്ടിച്ചേർക്കാൻ സാധിക്കില്ല. റിസ്ക് ആർക്കിടെക്ചറിൽ, ഈ നിർദ്ദേശങ്ങളുടെ ശരിയായ ക്രമീകരണം പ്രധാനമായും പ്രോഗ്രാമർ അല്ലെങ്കിൽ അവർ ഉപയോഗിക്കുന്ന പ്രോഗ്രാമിംഗ് ഭാഷയുടെ കമ്പൈലർ നിയന്ത്രിക്കുന്നതാണ്. ഉദാഹരണത്തിന്, രണ്ട് സംഖ്യകൾ കൂട്ടിച്ചേർക്കാൻ, കമ്പൈലർ ആദ്യം ഒന്നാം സംഖ്യയെ ഒരു റജിസ്റ്ററിലേക്ക് ലോഡ് ചെയ്യുന്നതിനുള്ള നിർദ്ദേശവും, പിന്നീടെത്ത രണ്ടാമത്തെ സംഖ്യയെ മറ്റൊരു റജിസ്റ്ററിലേക്ക് ലോഡ് ചെയ്യുന്നതിനുള്ള നിർദ്ദേശവും നൽകും. തുടർന്ന്, എഎൽയു (Arithmetic Logic Unit (ALU)) ഉപയോഗിച്ച് ആഡ് ഫങ്ഷൻ നടത്തി, തൽഫലമായി ലഭിക്കുന്ന റിസൾട്ടിനെ മെമ്മറിയിൽ തിരികെ എഴുതി സൂക്ഷിക്കുന്നതിനുള്ള നിർദ്ദേശവും കമ്പൈലർ നിർവഹിക്കും.

## അവലംബം