പൈപ്പ്ലൈനിങ്ങ്കമ്പ്യൂട്ടിംഗിൽ, ഒരു പൈപ്പ്ലൈൻ, ഡാറ്റാ പൈപ്പ്ലൈൻ എന്നും അറിയപ്പെടുന്നു, ഒരു ശ്രേണിയിൽ ബന്ധിപ്പിച്ചിരിക്കുന്ന ഡാറ്റ പ്രോസസ്സിംഗ് ഘടകങ്ങളുടെ ഒരു കൂട്ടമാണ്, അവിടെ ഒരു മൂലകത്തിന്റെ ഔട്ട്പുട്ട് അടുത്തതിന്റെ ഇൻപുട്ടാണ്. ഒരു പൈപ്പ്ലൈനിന്റെ ഘടകങ്ങൾ പലപ്പോഴും സമാന്തരമായോ സമയബന്ധിതമായ രീതിയിലോ നടപ്പിലാക്കുന്നു. മൂലകങ്ങൾക്കിടയിൽ പലപ്പോഴും ബഫർ സ്റ്റോറേജ് ചിലത് ചേർക്കുന്നു. കമ്പ്യൂട്ടറുമായി ബന്ധപ്പെട്ട പൈപ്പ്ലൈനുകളിൽ ഇവ ഉൾപ്പെടുന്നു:
ചില ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ[ഉദാഹരണം ആവശ്യമാണ്] ഒരു പൈപ്പ്ലൈനിൽ നിരവധി പ്രോഗ്രാമുകൾ സ്ട്രിംഗ് ചെയ്യുന്നതിന് UNIX പോലെയുള്ള വാക്യഘടന നൽകിയേക്കാം, എന്നാൽ രണ്ടാമത്തേത് യഥാർത്ഥ പൈപ്പ്ലൈനിങ്ങിന് പകരം ലളിതമായ സീരിയൽ എക്സിക്യൂഷൻ ആയി നടപ്പിലാക്കുക-അതായത്, ഓരോ പ്രോഗ്രാമും അടുത്തത് ആരംഭിക്കുന്നതിന് മുമ്പ് പൂർത്തിയാകുന്നതുവരെ കാത്തിരിക്കുക. .[അവലംബം ആവശ്യമാണ്] ആശയവും പ്രചോദനവുംദൈനംദിന ജീവിതത്തിൽ സാധാരണയായി ഉപയോഗിക്കുന്ന ഒരു ആശയമാണ് പൈപ്പ്ലൈനിംഗ്. ഉദാഹരണത്തിന്, ഒരു കാർ ഫാക്ടറിയുടെ അസംബ്ലി ലൈനിൽ, എഞ്ചിൻ ഇൻസ്റ്റാൾ ചെയ്യുക, ഹുഡ് ഇൻസ്റ്റാൾ ചെയ്യുക, ചക്രങ്ങൾ സ്ഥാപിക്കുക എന്നിങ്ങനെയുള്ള ഓരോ നിർദ്ദിഷ്ട ജോലിയും പലപ്പോഴും ഒരു പ്രത്യേക വർക്ക് സ്റ്റേഷനാണ് ചെയ്യുന്നത്. സ്റ്റേഷനുകൾ അവരുടെ ചുമതലകൾ സമാന്തരമായി നിർവഹിക്കുന്നു, ഓരോന്നും വ്യത്യസ്ത കാറിൽ. ഒരു കാർ ഒരു ജോലി ചെയ്തുകഴിഞ്ഞാൽ, അത് അടുത്ത സ്റ്റേഷനിലേക്ക് നീങ്ങുന്നു. ടാസ്ക്കുകൾ പൂർത്തിയാക്കാൻ ആവശ്യമായ സമയത്തിലെ വ്യതിയാനങ്ങൾ അടുത്ത സ്റ്റേഷൻ ലഭ്യമാകുന്നത് വരെ "ബഫറിംഗ്" (സ്റ്റേഷനുകൾക്കിടയിലുള്ള ഒരു സ്ഥലത്ത് ഒന്നോ അതിലധികമോ കാറുകൾ പിടിക്കുക) കൂടാതെ/അല്ലെങ്കിൽ "സ്തംഭനം" (താൽക്കാലികമായി അപ്സ്ട്രീം സ്റ്റേഷനുകൾ നിർത്തുക) വഴിയും ഉൾക്കൊള്ളാൻ കഴിയും. . ഒരു കാർ കൂട്ടിച്ചേർക്കുന്നതിന് യഥാക്രമം 20, 10, 15 മിനിറ്റ് എടുക്കുന്ന മൂന്ന് ജോലികൾ ആവശ്യമാണെന്ന് കരുതുക. തുടർന്ന്, മൂന്ന് ജോലികളും ഒരു സ്റ്റേഷനാണ് നിർവഹിക്കുന്നതെങ്കിൽ, ഓരോ 45 മിനിറ്റിലും ഫാക്ടറി ഒരു കാർ ഔട്ട്പുട്ട് ചെയ്യും. മൂന്ന് സ്റ്റേഷനുകളുടെ പൈപ്പ് ലൈൻ ഉപയോഗിച്ച്, ഫാക്ടറി 45 മിനിറ്റിനുള്ളിൽ ആദ്യത്തെ കാർ ഔട്ട്പുട്ട് ചെയ്യും, തുടർന്ന് ഓരോ 20 മിനിറ്റിലും പുതിയത്. ഈ ഉദാഹരണം കാണിക്കുന്നത് പോലെ, പൈപ്പ്ലൈനിംഗ് ലേറ്റൻസി കുറയ്ക്കുന്നില്ല, അതായത്, ഒരു ഇനം മുഴുവൻ സിസ്റ്റത്തിലൂടെ കടന്നുപോകാനുള്ള ആകെ സമയം. എന്നിരുന്നാലും, ഇത് സിസ്റ്റത്തിന്റെ ത്രൂപുട്ട് വർദ്ധിപ്പിക്കുന്നു, അതായത്, ആദ്യത്തേതിന് ശേഷം പുതിയ ഇനങ്ങൾ പ്രോസസ്സ് ചെയ്യുന്ന നിരക്ക്. ഡിസൈൻ പരിഗണനകൾഘട്ടങ്ങൾ ബാലൻസ് ചെയ്യുന്നുഒരു പൈപ്പ്ലൈനിന്റെ ത്രൂപുട്ട് അതിന്റെ വേഗത കുറഞ്ഞ ഘടകത്തേക്കാൾ മികച്ചതായിരിക്കാൻ കഴിയാത്തതിനാൽ, ഡിസൈനർ ജോലിയും വിഭവങ്ങളും ഘട്ടങ്ങൾക്കിടയിൽ വിഭജിക്കാൻ ശ്രമിക്കണം, അതിലൂടെ അവയെല്ലാം അവരുടെ ജോലികൾ പൂർത്തിയാക്കാൻ ഒരേ സമയം എടുക്കും. മുകളിലുള്ള കാർ അസംബ്ലി ഉദാഹരണത്തിൽ, മൂന്ന് ടാസ്ക്കുകൾക്കും 20, 10, 15 മിനിറ്റുകൾക്ക് പകരം 15 മിനിറ്റ് വീതം എടുത്താൽ, ലേറ്റൻസി 45 മിനിറ്റായിരിക്കും, എന്നാൽ 20-ന് പകരം ഓരോ 15 മിനിറ്റിലും ഒരു പുതിയ കാർ പൂർത്തിയാക്കും. ബഫറിംഗ്അനുയോജ്യമായ സാഹചര്യങ്ങളിൽ, എല്ലാ പ്രോസസ്സിംഗ് ഘടകങ്ങളും സമന്വയിപ്പിക്കുകയും പ്രോസസ്സ് ചെയ്യുന്നതിന് ഒരേ സമയം എടുക്കുകയും ചെയ്യുന്നുവെങ്കിൽ, ഓരോ ഇനവും മുമ്പത്തെ ഒരെണ്ണം റിലീസ് ചെയ്തതുപോലെ, ഒരൊറ്റ ക്ലോക്ക് സൈക്കിളിൽ ഓരോ ഘടകത്തിനും ലഭിക്കും. അങ്ങനെ, ഇനങ്ങൾ പൈപ്പ്ലൈനിലൂടെ ജലചാലിലെ തിരമാലകൾ പോലെ സ്ഥിരമായ വേഗതയിൽ ഒഴുകും. അത്തരം "വേവ് പൈപ്പ് ലൈനുകളിൽ", ഡാറ്റാ ഇനങ്ങൾക്ക് ആവശ്യമായ സ്റ്റോറേജ് കൂടാതെ, ഘട്ടങ്ങൾക്കിടയിൽ സിൻക്രൊണൈസേഷനോ ബഫറിംഗോ ആവശ്യമില്ല. കൂടുതൽ പൊതുവെ, പ്രോസസ്സിംഗ് സമയം ക്രമരഹിതമാകുമ്പോഴോ പൈപ്പ്ലൈനിനൊപ്പം ഇനങ്ങൾ സൃഷ്ടിക്കപ്പെടുകയോ നശിപ്പിക്കപ്പെടുകയോ ചെയ്യുമ്പോൾ പൈപ്പ്ലൈൻ ഘട്ടങ്ങൾക്കിടയിൽ ബഫർ ആവശ്യമാണ്. ഉദാഹരണത്തിന്, സ്ക്രീനിൽ റെൻഡർ ചെയ്യേണ്ട ത്രികോണങ്ങൾ പ്രോസസ്സ് ചെയ്യുന്ന ഒരു ഗ്രാഫിക്സ് പൈപ്പ്ലൈനിൽ, ഓരോ ത്രികോണത്തിന്റെയും ദൃശ്യപരത പരിശോധിക്കുന്ന ഒരു ഘടകം ത്രികോണം അദൃശ്യമാണെങ്കിൽ അത് നിരസിച്ചേക്കാം, അല്ലെങ്കിൽ മൂലകത്തിന്റെ രണ്ടോ അതിലധികമോ ത്രികോണ കഷണങ്ങൾ ഭാഗികമാണെങ്കിൽ അവ ഔട്ട്പുട്ട് ചെയ്യാം. മറഞ്ഞിരിക്കുന്നു. ആപ്ലിക്കേഷൻ ആദ്യ ഘട്ടത്തിലേക്ക് ഇനങ്ങൾ ഫീഡ് ചെയ്യുകയും അവസാനത്തേതിന്റെ ഔട്ട്പുട്ട് ഉപയോഗിക്കുകയും ചെയ്യുന്ന നിരക്കുകളിലെ ക്രമക്കേടുകൾ ഉൾക്കൊള്ളാനും ബഫറിംഗ് ആവശ്യമാണ്. രണ്ട് ഘട്ടങ്ങൾക്കിടയിലുള്ള ബഫർ രണ്ട് ഘട്ടങ്ങൾക്കിടയിൽ അനുയോജ്യമായ സമന്വയവും സിഗ്നലിംഗ് ലോജിക്കും ഉള്ള ഒരു ഹാർഡ്വെയർ രജിസ്റ്ററായിരിക്കാം. ഒരു ഘട്ടം A ഒരു ഡാറ്റ ഇനം രജിസ്റ്ററിൽ സൂക്ഷിക്കുമ്പോൾ, അത് അടുത്ത ഘട്ടമായ B ലേക്ക് ഒരു "ഡാറ്റ ലഭ്യം" സിഗ്നൽ അയയ്ക്കുന്നു. B ആ ഡാറ്റ ഉപയോഗിച്ചുകഴിഞ്ഞാൽ, A യിലേക്ക് "ഡാറ്റ സ്വീകരിച്ചു" എന്ന സിഗ്നലോടെ അത് പ്രതികരിക്കുന്നു. സ്റ്റേജ് A നിർത്തുന്നു, കാത്തിരിക്കുന്നു ഈ സിഗ്നലിനായി, രജിസ്റ്ററിൽ അടുത്ത ഡാറ്റാ ഇനം സംഭരിക്കുന്നതിന് മുമ്പ്. സ്റ്റേജ് ബി നിർത്തുന്നു, "ഡാറ്റ ലഭ്യം" സിഗ്നലിനായി കാത്തിരിക്കുന്നു, അത് അടുത്ത ഇനം പ്രോസസ്സ് ചെയ്യാൻ തയ്യാറാണെങ്കിലും സ്റ്റേജ് എ ഇതുവരെ നൽകിയിട്ടില്ലെങ്കിൽ. ഒരു മൂലകത്തിന്റെ പ്രോസസ്സിംഗ് സമയം വേരിയബിൾ ആണെങ്കിൽ, മുഴുവൻ പൈപ്പ്ലൈനും പലപ്പോഴും നിർത്തേണ്ടി വന്നേക്കാം, ആ ഘടകത്തിനും മുമ്പുള്ളവയെല്ലാം അവയുടെ ഇൻപുട്ട് ബഫറുകളിലെ ഇനങ്ങൾ ഉപയോഗിക്കുന്നതിനായി കാത്തിരിക്കുന്നു. ആ ഘട്ടത്തിലെ ഇൻപുട്ട് ബഫറിൽ ഒന്നിലധികം ഇനങ്ങൾക്ക് ഇടം നൽകുന്നതിലൂടെ അത്തരം പൈപ്പ്ലൈൻ സ്റ്റാളുകളുടെ ആവൃത്തി കുറയ്ക്കാൻ കഴിയും. അത്തരത്തിലുള്ള ഒന്നിലധികം ഇനം ബഫർ സാധാരണയായി ഫസ്റ്റ്-ഇൻ, ഫസ്റ്റ്-ഔട്ട് ക്യൂ ആയി നടപ്പിലാക്കും. ക്യൂ പൂർണ്ണമാകുമ്പോൾ അപ്സ്ട്രീം ഘട്ടം നിർത്തേണ്ടി വന്നേക്കാം, എന്നാൽ കൂടുതൽ ബഫർ സ്ലോട്ടുകൾ നൽകുന്നതിനാൽ ആ ഇവന്റുകളുടെ ആവൃത്തി കുറയും. ക്യൂയിംഗ് തിയറിക്ക് ആവശ്യമായ ബഫർ സ്ലോട്ടുകളുടെ എണ്ണം പറയാൻ കഴിയും, പ്രോസസ്സിംഗ് സമയത്തിന്റെ വ്യതിയാനവും ആവശ്യമുള്ള പ്രകടനവും അനുസരിച്ച്. രേഖീയമല്ലാത്ത പൈപ്പ് ലൈനുകൾചില ഘട്ടങ്ങൾ മറ്റുള്ളവയേക്കാൾ കൂടുതൽ സമയമെടുക്കുന്നു (അല്ലെങ്കിൽ എടുത്തേക്കാം), വേഗത്തിലാക്കാൻ കഴിയുന്നില്ലെങ്കിൽ, ഒരൊറ്റ ഇൻപുട്ട് ബഫറും ഒരൊറ്റ ഔട്ട്പുട്ട് ബഫറും ഉപയോഗിച്ച് സമാന്തരമായി ആ ചുമതല നിർവഹിക്കുന്നതിന് ഡിസൈനർക്ക് രണ്ടോ അതിലധികമോ പ്രോസസ്സിംഗ് ഘടകങ്ങൾ നൽകാൻ കഴിയും. ഓരോ ഘടകവും അതിന്റെ നിലവിലെ ഡാറ്റാ ഇനം പ്രോസസ്സ് ചെയ്യുന്നത് പൂർത്തിയാകുമ്പോൾ, അത് സാധാരണ ഔട്ട്പുട്ട് ബഫറിലേക്ക് അത് ഡെലിവർ ചെയ്യുകയും സാധാരണ ഇൻപുട്ട് ബഫറിൽ നിന്ന് അടുത്ത ഡാറ്റാ ഇനം എടുക്കുകയും ചെയ്യുന്നു. "നോൺ-ലീനിയർ" അല്ലെങ്കിൽ "ഡൈനാമിക്" പൈപ്പ്ലൈൻ എന്ന ഈ ആശയം ഒരു കാത്തിരിപ്പ് ക്യൂവിൽ നിന്ന് ക്ലയന്റുകൾക്ക് സേവനം നൽകുന്ന രണ്ടോ അതിലധികമോ കാഷ്യർമാരുള്ള കടകളോ ബാങ്കുകളോ ഉദാഹരണമാണ്. ഇനങ്ങൾ തമ്മിലുള്ള ആശ്രിതത്വം ചില ആപ്ലിക്കേഷനുകളിൽ, ഒരു സ്റ്റേജ് എ വഴി ഒരു ഇനം Y പ്രോസസ്സ് ചെയ്യുന്നത് പൈപ്പ്ലൈനിന്റെ പിന്നീടുള്ള ചില ഘട്ടം ബി വഴി മുമ്പത്തെ ഇനം X പ്രോസസ്സ് ചെയ്യുന്നതിന്റെ ഫലങ്ങളെയോ ഫലത്തെയോ ആശ്രയിച്ചിരിക്കും. അങ്ങനെയെങ്കിൽ, ഇനം X ഘട്ടം ബി മായ്ക്കുന്നതുവരെ, സ്റ്റേജ് എയ്ക്ക് Y ഇനം ശരിയായി പ്രോസസ്സ് ചെയ്യാൻ കഴിയില്ല. നിർദ്ദേശ പൈപ്പ്ലൈനുകളിൽ ഈ സാഹചര്യം പലപ്പോഴും സംഭവിക്കാറുണ്ട്. ഉദാഹരണത്തിന്, Y എന്നത് ഒരു രജിസ്റ്ററിലെ ഉള്ളടക്കം വായിക്കുന്ന ഒരു ഗണിത നിർദ്ദേശമാണെന്ന് കരുതുക, അത് മുമ്പത്തെ നിർദ്ദേശം X വഴി പരിഷ്ക്കരിച്ചുവെന്ന് കരുതപ്പെടുന്നു. A എന്നത് നിർദ്ദേശ ഓപ്പറണ്ടുകൾ ലഭ്യമാക്കുന്ന ഘട്ടവും B എന്നത് ഫലം എഴുതുന്ന ഘട്ടവുമാകാം. നിർദ്ദിഷ്ട രജിസ്റ്ററിലേക്ക്. ഇൻസ്ട്രക്ഷൻ X ഘട്ടം B-യിൽ എത്തുന്നതിന് മുമ്പ് ഘട്ടം A നിർദ്ദേശം Y പ്രോസസ്സ് ചെയ്യാൻ ശ്രമിക്കുകയാണെങ്കിൽ, രജിസ്റ്ററിൽ ഇപ്പോഴും പഴയ മൂല്യം അടങ്ങിയിരിക്കാം, Y യുടെ പ്രഭാവം തെറ്റായിരിക്കും. അത്തരം പൊരുത്തക്കേടുകൾ ശരിയായി കൈകാര്യം ചെയ്യുന്നതിനായി, പൈപ്പ്ലൈനിൽ അധിക സർക്യൂട്ട് അല്ലെങ്കിൽ ലോജിക്ക് നൽകണം, അത് അവയെ കണ്ടെത്തി ഉചിതമായ നടപടിയെടുക്കുന്നു. അങ്ങനെ ചെയ്യുന്നതിനുള്ള തന്ത്രങ്ങളിൽ ഇവ ഉൾപ്പെടുന്നു:
ചെലവുകളും പോരായ്മകളും ഒരു പൈപ്പ്ലൈൻ സംവിധാനത്തിന് ഒരു സമയം ഒരു ബാച്ച് എക്സിക്യൂട്ട് ചെയ്യുന്നതിനേക്കാൾ കൂടുതൽ വിഭവങ്ങൾ (സർക്യൂട്ട് ഘടകങ്ങൾ, പ്രോസസ്സിംഗ് യൂണിറ്റുകൾ, കമ്പ്യൂട്ടർ മെമ്മറി മുതലായവ) ആവശ്യമാണ്, കാരണം അതിന്റെ ഘട്ടങ്ങൾക്ക് ആ ഉറവിടങ്ങൾ പങ്കിടാൻ കഴിയില്ല, കൂടാതെ ബഫറിംഗും അധിക സമന്വയ ലോജിക്കും ആവശ്യമായി വന്നേക്കാം. ഘടകങ്ങൾ. കൂടാതെ, പ്രത്യേക പ്രോസസ്സിംഗ് ഘടകങ്ങൾ തമ്മിലുള്ള ഇനങ്ങളുടെ കൈമാറ്റം ലേറ്റൻസി വർദ്ധിപ്പിക്കും, പ്രത്യേകിച്ച് നീണ്ട പൈപ്പ്ലൈനുകൾക്ക്. വ്യത്യസ്ത ഇനങ്ങളുടെ സംസ്കരണം തമ്മിൽ ആശ്രിതത്വം ഉണ്ടെങ്കിൽ, പ്രത്യേകിച്ചും അവ കൈകാര്യം ചെയ്യാൻ ഊഹവും ബാക്ക്ട്രാക്ക് തന്ത്രവും ഉപയോഗിക്കുകയാണെങ്കിൽ, പൈപ്പ്ലൈനിംഗിന്റെ അധിക സങ്കീർണ്ണത ചെലവ് ഗണ്യമായി വരും. തീർച്ചയായും, സങ്കീർണ്ണമായ ഇൻസ്ട്രക്ഷൻ സെറ്റുകൾക്കായി ആ തന്ത്രം നടപ്പിലാക്കുന്നതിനുള്ള ചെലവ്, RISC, VLIW പോലുള്ള കമ്പ്യൂട്ടർ ആർക്കിടെക്ചർ ലളിതമാക്കാൻ ചില സമൂലമായ നിർദ്ദേശങ്ങൾക്ക് പ്രചോദനം നൽകി. ഇൻസ്ട്രക്ഷൻ പൈപ്പ് ലൈനുകളുടെ പ്രകടനം മെച്ചപ്പെടുത്തുന്നതിനായി മെഷീൻ നിർദ്ദേശങ്ങൾ പുനഃക്രമീകരിക്കുന്നതിനുള്ള ചുമതലയും കംപൈലർമാർക്ക് ചുമത്തിയിട്ടുണ്ട്. പുതിയ സാങ്കേതികവിദ്യകൾ സമീപ വർഷങ്ങളിൽ ആപ്ലിക്കേഷനുകളുടെയും അവയുടെ അടിസ്ഥാന ഹാർഡ്വെയറിന്റെയും ആവശ്യകതകൾ പ്രാധാന്യമർഹിക്കുന്നുണ്ടെന്നത് ശരിയാണ്. ഉദാഹരണത്തിന്, ഒറ്റ നോഡ് ആപ്ലിക്കേഷനുകൾ ഉപയോഗിച്ച് പൈപ്പ് ലൈനുകൾ നിർമ്മിക്കുന്നത്, വലിയ ഡാറ്റയുടെ വോളിയവും വൈവിധ്യവും ഉപയോഗിച്ച് ഡാറ്റാ വരികളിലൂടെ സഞ്ചരിക്കുന്നത് ഇനി സാധ്യമല്ല. എന്നിരുന്നാലും, ഹഡൂപ്പ് അല്ലെങ്കിൽ അടുത്തിടെ അപ്പാച്ചെ സ്പാർക്ക് പോലുള്ള ഡാറ്റാ അനലിറ്റിക്സ് എഞ്ചിനുകളുടെ ആവിർഭാവത്തോടെ, ഒന്നിലധികം പ്രോസസ്സിംഗ് നോഡുകളിലുടനീളം വലിയ ഡാറ്റാസെറ്റുകൾ വിതരണം ചെയ്യാൻ സാധിച്ചു, ഇത് മുമ്പ് സാധ്യമായതിനേക്കാൾ നൂറുകണക്കിന് മടങ്ങ് കാര്യക്ഷമത കൈവരിക്കാൻ ആപ്ലിക്കേഷനുകളെ അനുവദിക്കുന്നു. ഈ രീതിയിലുള്ള ഡിസ്ട്രിബ്യൂട്ടഡ് പ്രോസസ്സിംഗ് ഉപയോഗിക്കുന്ന ഒരു മിഡ്-ലെവൽ പിസിക്ക് പോലും വലിയ ഡാറ്റാ പൈപ്പ്ലൈനുകളുടെ നിർമ്മാണവും നടത്തിപ്പും കൈകാര്യം ചെയ്യാൻ കഴിയും എന്നതാണ് ഇന്നത്തെ ഇതിന്റെ ഫലം. |
Portal di Ensiklopedia Dunia