Multiprocessing ( Multiprocessing , Multiprocessing , English Multiprocessing ) - egy pár vagy több fizikai processzor használata egy számítógépes rendszerben.
Egy eszközt akkor nevezünk többprocesszorosnak , ha két vagy több fizikai processzorral rendelkezik .
Egy operációs rendszert vagy programot akkor nevezünk többprocesszorosnak, ha képes feladatokat elosztani a processzorok között (lásd a többszálú ).
Ennek a koncepciónak számos változata létezik, és a többfeldolgozás definíciója a kontextustól függően változhat, főleg attól függően, hogy a processzorokat hogyan határozták meg ( sok mag egy chipben , sok chip egy csomagban, sok csomag egy rendszermodulban stb. ).
A többfeldolgozást néha több párhuzamos szoftverfolyamat végrehajtásának nevezik egy rendszeren, szemben egyetlen folyamat egy adott időpontban történő végrehajtásával. A többfeladatos vagy többprogramozási kifejezések azonban megfelelőbbek ennek a koncepciónak a leírására, amelyet többnyire szoftverben valósítanak meg , míg a többfeldolgozó kifejezés alkalmasabb több hardverprocesszor használatának leírására. Egy rendszer nem lehet egyszerre többprocesszoros és többprogramozott, csak a kettő közül az egyik, vagy egyik sem.
Többprocesszoros rendszerekben az összes CPU egyenlő lehet, vagy egyesek speciális célokra vannak fenntartva. A hardver és az operációs rendszer szoftver tervezési szempontjainak kombinációja határozza meg a szimmetriát (vagy annak hiányát) egy adott rendszerben. Például hardveres vagy szoftveres megfontolások megkövetelhetik, hogy csak egy központi processzor válaszoljon az összes hardveres megszakításra, míg a rendszerben végzett összes többi munka egyenlően oszlik el a processzorok között; vagy a privilegizált módú kód végrehajtása csak egy processzorra korlátozható (vagy egy adott processzorra, vagy egyszerre csak egy processzorra), míg a nem privilegizált módú kód a processzorok bármely kombinációján végrehajtható. A többprocesszoros rendszereket gyakran könnyebb megtervezni, ha ilyen megszorításokat írnak elő , de általában kevésbé hatékonyak, mint az összes CPU-t használó rendszerek.
Azokat a rendszereket, amelyek minden CPU-t egyformán kezelnek, szimmetrikus többfeldolgozó (SMP) rendszereknek nevezzük. Azokon a rendszereken, ahol nem minden CPU egyenlő, a rendszererőforrások sokféle módon megoszthatók, beleértve az aszimmetrikus többfeldolgozást ( ASMP ), a nem egységes memóriaelérési többfeldolgozást (NUMA) és a fürtözött többfeldolgozást (qq.v.).
A többfeldolgozás során a processzorok egyetlen utasítássorozat végrehajtására használhatók több kontextusban (egy gépi utasítás , több adat vagy SIMD , gyakran használják a vektoros feldolgozásban), több utasítássorozat egyetlen kontextusban ("több utasításfolyam, egyetlen adatfolyam" " vagy MISD architektúra , amelyet hibatűrő rendszerek redundanciájára használnak, és néha csővezetékes processzorok vagy hiperszálak leírására használják ) , vagy több utasítássorozatot többféle környezetben ("több utasításfolyam, több adatfolyam" vagy MIMD ).
A szorosan csatolt többprocesszoros rendszerek több processzort tartalmaznak , amelyek a busz szintjén vannak csatlakoztatva . Ezek a processzorok hozzáférhetnek egy központi megosztott memóriához (SMP vagy UMA), vagy részt vehetnek egy memóriahierarchiában helyi és megosztott memóriával (NUMA). Az IBM p690 Regatta egy példa az erőteljes SMP rendszerre. Az Intel Xeon processzor uralta az üzleti PC-k többprocesszoros piacát, és az egyetlen x86 -os opció volt az AMD Opteron processzorvonalának 2004-es megjelenéséig. Mindkét processzorsor saját chip-gyorsítótárral rendelkezett, de különböző módokon biztosít hozzáférést a megosztott memóriához: a Xeon processzorok közös csatornán, az Opteron processzorok pedig a rendszer RAM-hoz vezető független autópályákon keresztül.
A többprocesszoros (többmagos) chipek egynél több processzort tartalmaznak egyetlen chipen, és a szorosan csatolt többfeldolgozás legszélsőségesebb formájának tekinthetők. A több processzorral rendelkező nagyszámítógépes rendszerek gyakran erősen csatolt rendszerek.
A lazán csatolt többprocesszoros rendszerek , amelyeket gyakran fürtöknek is neveznek, több önálló egy vagy kettős számítógépen alapulnak, amelyek nagy sebességű kommunikációs rendszeren (például Gigabit Etherneten ) keresztül kapcsolódnak össze . A Linuxot futtató Beowulf-fürt egy példa a rugalmasan összekapcsolt rendszerre.
A szorosan összekapcsolt rendszerek jobban teljesítenek, és fizikailag kisebbek, mint a rugalmasan csatolt rendszerek, de történelmileg nagy kezdeti beruházást igényeltek, és gyorsan leértékelődnek ; a rugalmasan összekapcsolt rendszerek csomópontjai általában olcsó számítógépek, és független gépként használhatók, ha eltávolítják a fürtből.
A szorosan összekapcsolt rendszerek általában sokkal energiahatékonyabbak , mint a klaszterek. Jelentős energiahatékonyság érhető el, ha az ilyen rendszerekben lévő alkatrészeket előre úgy tervezték meg, hogy egy adott rendszerben működjenek, míg a rugalmasan csatolt rendszerek gyakran olyan alkatrészeket használnak, amelyeket a rendszerek szélesebb osztályában való működésre terveztek.
Egyetlen utasításfolyammal és egyetlen adatfolyammal rendelkező számítógépben egy processzor szekvenciálisan dolgozza fel az utasításokat; minden gépi utasítás egy adatelemet dolgoz fel. Ilyen például a Neumann-féle építészet .
Egy egyetlen utasításfolyammal és több adatfolyammal rendelkező számítógépben egy processzor egy utasításfolyamot dolgoz fel, amelyek mindegyike párhuzamos számításokat végezhet egy adathalmazon.
A SIMD multiprocessing kiválóan alkalmas párhuzamos vagy vektoros feldolgozásra, melynek során egy nagy adathalmaz felosztható részekre, amelyeket azonos, de független műveletekkel dolgozunk fel. Egyetlen utasításfolyam irányítja a többprogramozó modulok működését, hogy egyidejűleg hasonló manipulációkat hajtsanak végre potenciálisan nagy mennyiségű adaton.
Bizonyos típusú számítástechnikai alkalmazások esetében az ilyen típusú architektúra jelentősen növelheti a teljesítményt az időráfordítás tekintetében. Ennek az architektúrának azonban az a hátránya, hogy a rendszer nagy része tétlen lesz olyan programok vagy rendszerfeladatok végrehajtása közben, amelyek nem oszthatók modulokra (alfeladatokra), amelyek párhuzamosan feldolgozhatók.
Ezenkívül a programokat körültekintően és konkrétan kell megírni, hogy teljes mértékben ki tudják használni az architektúra képességeit. Gyakran léteznek speciális optimalizáló fordítók, amelyeket kifejezetten ebben a környezetben való használatra terveztek. Néhány fordító ebben a kategóriában speciális konstrukciókat vagy bővítményeket biztosít, amelyek lehetővé teszik a programozók számára, hogy közvetlenül határozhassanak meg párhuzamosan végrehajtandó műveleteket (például a Fortran DO FOR ALL utasításai , amelyeket az ILLIAC IV -en használnak , amely egy SIMD-architektúra többprocesszoros szuperszámítógép volt).
A SIMD multiprocessing széles körben alkalmazható bizonyos területeken, például számítógépes szimulációkban , de kevés haszna van az általános célú asztali és üzleti alkalmazásokban.
A többszörös utasításfolyammal és egyetlen adatfolyammal végzett többfeldolgozás főként a redundancia előnyét kínálja, mivel a többprogramozó modulok ugyanazon az adatokon ugyanazokat a feladatokat látják el, csökkentve a hibás eredmények lehetőségét, ha valamelyik modul meghibásodik. A MISD architektúra lehetővé teszi a számítások eredményeinek összehasonlítását a hibák észlelése érdekében. A redundancián és a hibatűrésen kívül az ilyen típusú többfeldolgozásnak kevés előnye van. Ráadásul nagyon drága. Nem növeli a teljesítményt.
A MIMD multiprocessing architektúra sokféle feladatra alkalmas, amelyek teljesen független és párhuzamos utasítások végrehajtását valósítják meg különböző adatkészletekre vonatkozóan. Emiatt, és mivel egyszerűen megvalósítható, a MIMD uralja a többfeldolgozást.
A feldolgozás több szálra oszlik, amelyek mindegyike saját processzor hardverállapottal rendelkezik, egyetlen szoftver által meghatározott folyamaton belül vagy több folyamaton belül. Mivel a rendszerben több szál várja a végrehajtást (rendszer- vagy felhasználói szálak), ez az architektúra hatékonyan használja ki a hardvererőforrásokat.
A MIMD-ben patthelyzet és erőforrás-ellenállási problémák merülhetnek fel, mivel az erőforrásokhoz hozzáférni próbáló szálak előre nem látható módon ütközhetnek. A MIMD speciális kódolást igényel a számítógép operációs rendszerében, de nem igényel változtatásokat az alkalmazásprogramokban, kivéve, ha maguk a programok több szálat használnak (a MIMD a legtöbb operációs rendszerben transzparens az egyszálú programok számára, ha maguk a programok nem tagadják meg a vezérlést a OS). Előfordulhat, hogy mind a rendszer-, mind a felhasználói szoftvereknek programozási konstrukciókat, például szemaforokat kell használniuk, hogy megakadályozzák, hogy az egyik szál megzavarja a másikat, ha ugyanazokra az adatokra hivatkoznak. Ez növeli a kód bonyolultságát, csökkenti a teljesítményt, és nagymértékben megnöveli a szükséges tesztelések számát, bár ez általában nem elegendő a többfeldolgozás előnyeinek kiküszöböléséhez.
Az ilyen konfliktusok hardver szinten merülhetnek fel a processzorok között, és általában hardverben, vagy szoftver és hardver kombinációjával kell megoldani.