Internet ablakok Android

És fontolja meg, hogy mi történik két különböző esetben. A családi kötelékek tisztázása

* mindig aktuális kérdések, mire kell figyelni a processzor kiválasztásakor, hogy ne tévedjünk.

Célunk ebben a cikkben az összes olyan tényező leírása, amelyek befolyásolják a processzor teljesítményét és egyéb működési jellemzőit.

Bizonyára senkinek sem titok, hogy a processzor a számítógép fő számítási egysége. Azt is mondhatjuk - a számítógép legfontosabb része.

Ő foglalkozik szinte minden számítógépen előforduló folyamat és feladat feldolgozásával.

Legyen szó videó nézésről, zenéről, internetezésről, írásról és olvasásról a memóriában, 3D és videó feldolgozásáról, játékokról. És még sok más.

Ezért a választáshoz C központi NS a processzort nagyon óvatosan kell kezelni. Előfordulhat, hogy úgy döntött, hogy egy erős videokártyát és egy olyan processzort telepít, amely nem felel meg a szintjének. Ebben az esetben a processzor nem tárja fel a videokártya lehetőségeit, ami lelassítja annak működését. A processzor teljesen betöltődik és szó szerint felforr, a videokártya pedig várja a sorát, és képességeinek 60-70% -án dolgozik.

Ezért, amikor kiegyensúlyozott számítógépet választ, nem költségeket hanyagolja el a processzort egy erős videokártya javára. A processzor teljesítményének elegendőnek kell lennie a videokártya potenciáljának felszabadításához, különben csak elpazarolt pénz.

Intel vs. AMD

* örökre utolérni

Vállalat Intel, hatalmas emberi erőforrásokkal és szinte kimeríthetetlen pénzügyekkel rendelkezik. A félvezetőipar számos újítása és új technológiája származik ettől a vállalattól. Processzorok és fejlesztések Intel, átlagosan 1-1,5 évekkel a mérnöki fejlesztések előtt AMD... De mint tudod, a lehetőségért, hogy a legtöbbet birtokold modern technológiák- fizetned kell.

Processzor árpolitika Intel, mindkettőn alapul magok száma, gyorsítótár mennyisége hanem tovább is Az építészet "frissessége", teljesítmény ciklusonkéntwatt,chip technológia... A cache memória értéke, a "technikai folyamat finomságai" és mások fontos jellemzők processzorról lesz szó az alábbiakban. Az ilyen technológiák szabad frekvencia -szorzóként való birtoklásáért további összeget kell fizetnie.

Vállalat AMD, ellentétben a céggel Intel, törekszik a processzorok elérhetőségére a végfelhasználó számára és az illetékes árpolitikára.

Akár azt is mondhatná AMD– « Népi márka". Az árcédulákban nagyon vonzó áron találja meg, amire szüksége van. Általában egy évvel a megjelenés után új technológia a cégnél Intel, a technológia analógja AMD... Ha nem a legmagasabb teljesítményre törekszik, és jobban figyel az árcédulára, mint a fejlett technológiák elérhetőségére, akkor a vállalat termékei AMD- csak neked.

Árpolitika AMD, inkább a magok számán és eléggé - a gyorsítótár memória mennyiségén, az építészeti fejlesztések jelenlétén alapul. Bizonyos esetekben a harmadik szintű gyorsítótár-memória használatáért egy kis pluszt kell fizetnie ( Fenom 3 szintű gyorsítótárral rendelkezik, Athlon tartalom csak korlátozott, 2 szint). De néha AMD"Kényezteti" rajongóit a blokkolás feloldásának képessége az olcsóbb processzorok a drágábbak. Feloldhatja a rendszermagokat vagy a gyorsítótárat. Javítani Athlon előtt Fenom... Ez a moduláris felépítés és az olcsóbb modellek hiánya miatt lehetséges, AMD csak letiltja néhány drágább on-chip egységet (programozottan).

Kernels- gyakorlatilag változatlanok, csak számuk különbözik (érvényes a processzorokra 2006-2011 évek). A processzorok modularitása miatt a vállalat kiváló munkát végez az elutasított chipek értékesítésében, amelyek egyes blokkok kikapcsolásakor egy kevésbé termelékeny vonal processzorává válnak.

A cég hosszú évek óta egy teljesen új architektúrán dolgozik kódnéven Buldózer, de a belépéskor 2011 évben az új processzorok nem a legjobb teljesítményt mutatták. AMD vétkezett az operációs rendszereken, hogy nem értették a kettős magok és az "egyéb többszálúság" építészeti jellemzőit.

A vállalat képviselői szerint különleges javításokkal és javításokkal kell számolni ezen processzorok teljes teljesítményének megtapasztalására. Azonban az elején 2012 éve, a vállalat képviselői elhalasztották a frissítés kiadását az architektúra támogatása érdekében Buldózer az év második felére.

Processzor frekvencia, magok száma, többszálú.

Időkben Pentium 4és előtte - CPU frekvencia a processzor teljesítményének meghatározó tényezője volt a processzor kiválasztásakor.

Ez nem meglepő, mivel a processzor architektúrákat kifejezetten a magas frekvencia elérésére tervezték, ez különösen erősen tükröződött a processzorban. Pentium 4 az építészetről NetBurst... A magas frekvencia nem volt hatékony az architektúrában használt hosszú csővezetékkel. Még Athlon XP frekvencia 2GHz, teljesítményét tekintve magasabb volt, mint Pentium 4 c 2,4 GHz... Tehát tiszta marketing volt. E hiba után a cég Intel rájöttem a hibáimra és visszatért a jó oldalára nem a frekvenciakomponensen, hanem az óránkénti teljesítményen kezdett dolgozni. Az építészetből NetBurst Meg kellett tagadnom.

Mit mi többmagosat ad?

Négymagos processzor frekvenciával 2,4 GHz, többszálas alkalmazásokban elméletileg megközelítőleg egyenértékű lesz az egymagos processzorral, amelynek frekvenciája van 9,6 GHz vagy 2 magos processzor frekvenciával 4,8 GHz... De ez csak elméletben. Gyakorlatilag azonban két kétmagos processzor egy két foglalatú alaplapon gyorsabb lesz, mint egy 4 magos processzor ugyanazon a működési frekvencián. A busz sebessége és a memória késleltetési korlátai nyilvánvalóak.

* ugyanazok az architektúrák és a gyorsítótár -memória mennyisége

Többmagos, lehetővé teszi utasítások és számítások részenkénti végrehajtását. Például három számtani műveletet kell végrehajtania. Az első kettőt a processzor minden magján végrehajtják, és az eredményeket hozzáadják a gyorsítótárhoz, ahol a következő műveletet bármelyik szabad mag végrehajthatja. A rendszer nagyon rugalmas, de megfelelő optimalizálás nélkül előfordulhat, hogy nem működik. Ezért nagyon fontos, hogy a többmagosra optimalizáljuk az operációs rendszer környezetében lévő processzorok architektúráját.

Alkalmazások, amelyek "szeretnek" és használat többszálú: archivátorok, videolejátszók és kódolók, antivírusok, töredezettségmentesítő programok, grafikus szerkesztő , böngészők, Vaku.

Továbbá a többszálúság "szerelmeseinek" hivatkozhat az ilyen operációs rendszerekre, mint Windows 7és Windows Vista , valamint sok OS kernel alapú Linux amelyek észrevehetően gyorsabban működnek, ha van többmagos processzor.

A legtöbb játékok, ahhoz elég egy 2 magos processzor magas frekvencia... Most azonban egyre több játék jelenik meg, "kihegyezve" a többszálúsághoz. Vegyél legalább ilyeneket SandBox olyan játékok, mint Gta 4 vagy Prototípus, amelyben egy 2 magos processzoron alacsonyabb frekvenciával 2,6 GHz- nem érzi jól magát, a képsebesség 30 képkocka / másodperc alá csökken. Bár ebben az esetben valószínűleg az ilyen incidensek oka a játékok "gyenge" optimalizálása, az időhiány vagy azok "közvetett" keze, akik a játékokat a konzolról a másikra helyezték át PC.

Amikor új processzort vásárol a játékokhoz, most figyeljen a 4 vagy több magos processzorokra. De ne hanyagold el 2 nukleáris processzorok a "felső kategóriából". Néhány játékban ezek a processzorok néha jobban érzik magukat, mint néhány többmagos processzorok.

A processzor cache memóriája.

- Ez a processzor kristályának egy dedikált területe, amelyben a processzormagok, a RAM és más buszok közötti köztes adatokat dolgozzák fel és tárolják.

Nagyon magas órajel -sebességgel működik (általában maga a processzor frekvenciáján), nagyon magas áteresztőképességés a processzormagok közvetlenül működnek vele ( L1).

Miatta hiányok, a processzor tétlen lehet az időigényes feladatokban, és várja, hogy új adatok érkezzenek a gyorsítótárba feldolgozásra. Gyorsítótár is szolgálja a gyakran ismétlődő adatok nyilvántartása, amelyek szükség esetén gyorsan helyreállíthatók szükségtelen számítások nélkül, anélkül, hogy a processzort arra kényszerítenék, hogy ismét időt pazaroljon rájuk.

A teljesítményt az is növeli, hogy a gyorsítótár -memória egységes, és minden mag egyformán használhatja az abból származó adatokat. Ez további lehetőségeket biztosít a többszálú optimalizáláshoz.

Ezt a technikát most használják 3. szintű gyorsítótár... Processzorok Intel voltak processzorok megosztott L2 gyorsítótárral ( C2D E 7 ***,E 8 ***), melynek köszönhetően megjelent Ily módon növelje a többszálas teljesítményt.

A processzor túlgyorsításakor a gyorsítótár memória gyenge pontja lehet, ami megakadályozza, hogy a processzor hiba nélkül túllépjen a maximális működési frekvenciáján. Előnye azonban, hogy ugyanazon a frekvencián fog futni, mint a túlhajtott processzor.

Általában minél több a gyorsítótár, annál gyorsabb PROCESSZOR. Milyen alkalmazásokban?

Minden olyan alkalmazás, ahol sok lebegőpontos adatot, utasítást és adatfolyamot használ, aktívan használja a gyorsítótárat. Nagyon szeretik a gyorsítótárat archivátorok, videó kódolók, antivírusokés grafikus szerkesztő stb.

Kedvező a egy nagy szám gyorsítótárak tartalmazzák játékok... Különösen a stratégiai játékok, az automatikus szimulációk, az RPG -k, a SandBox és minden olyan játék, ahol sok apró részlet, részecske, geometriai elem, információáramlás és fizikai hatás található.

A gyorsítótár -memória nagyon jelentős szerepet játszik a 2 vagy több videokártyával rendelkező rendszerekben rejlő lehetőségek kiaknázásában. Végül is a terhelés egy része a processzormagok kölcsönhatására esik, mind egymással, mind több videochipből álló adatfolyamokkal. Ebben az esetben fontos a gyorsítótár rendszerezése, és a nagy volumenű L3 gyorsítótár nagyon hasznos.

Gyorsítótár, mindig védett lehetséges hibákat (ECC), amelyek észlelésekor kijavítják. Ez nagyon fontos, mert egy apró hiba a memória gyorsítótárában a feldolgozás során óriási, folyamatos hibává alakulhat, amelyből az egész rendszer leesik.

Saját technológiák.

(hiperszál, HT)–

először alkalmazták a technológiát a processzorokban Pentium 4, de nem mindig működött megfelelően, és gyakran inkább lelassította a processzort, mint gyorsította. Ennek oka a túl hosszú csővezeték és a hiányos ág -előrejelző rendszer volt. A vállalat alkalmazza Intel, nincs még analógja a technológiának, kivéve akkor az analógot? amit a cég mérnökei megvalósítottak AMD az építészetben Buldózer.

A rendszer elve olyan, hogy minden fizikai mag esetében a két számítási szál egy helyett. Vagyis ha 4 magos processzorral rendelkezik HT (Core i 7), akkor virtuális szálak vannak 8 .

A teljesítménynövekedés annak köszönhető, hogy az adatok már a közepén, és nem feltétlenül először léphetnek be a folyamatba. Ha bármelyik processzor egység, amely képes végrehajtani ezt a műveletet, tétlen, akkor feladatot kap végrehajtásra. A teljesítménynövekedés nem azonos a valódi fizikai magokkal, de összehasonlítható (~ 50-75%, az alkalmazástól függően). Ritkán fordul elő, hogy egyes alkalmazásokban, A HT negatívan befolyásolja a teljesítményről. Ennek oka az alkalmazások erre a technológiára vonatkozó rossz optimalizálása, a "virtuális" szálak megértésének képtelensége és a szálak egyenletes terhelésének korlátozóinak hiánya.

TurboBoost Nagyon hasznos technológia, amely növeli a leggyakrabban használt processzormagok gyakoriságát, a terhelés szintjétől függően. Nagyon hasznos, ha az alkalmazás nem tudja, hogyan kell mind a 4 magot használni, és csak egyet vagy kettőt tölt be, miközben működési gyakoriságuk növekszik, ami részben kompenzálja a teljesítményt. Ennek a technológiának a analógja a vállalat számára AMD az a technológia Turbo Core.

, 3 tudom! utasítás... Úgy tervezték, hogy felgyorsítsa a processzort multimédia számításokat (videó, zene, 2D / 3D grafika stb.), valamint felgyorsítani az olyan programok munkáját, mint az archiválók, a képekkel és videókkal kapcsolatos programok (ezen programok utasításaival).

3tudom! - elég régi technológia AMD ami tartalmaz további utasításokat multimédiás tartalom feldolgozása mellett SSE első verzió.

* Nevezetesen, az egyetlen precíziós valós számok feldolgozásának képessége.

A legtöbb jelenléte új verzió- nagy plusz, a processzor hatékonyabban kezd el bizonyos feladatokat elvégezni megfelelő szoftveroptimalizálással. Processzorok AMD hasonló a nevük, de kissé eltérnek egymástól.

* Példa - SSE 4.1 (Intel) - SSE 4A (AMD).

Ezenkívül ezek az utasításkészletek nem azonosak. Ezek analógok, amelyekben kis különbségek vannak.

Cool'n'Quiet, SpeedStep, CoolCore, Enchanced Fél Állam (C1E) ésT... d.

Ezek a technológiák alacsony terhelés mellett csökkentik a processzor frekvenciáját azáltal, hogy csökkentik a szorzót és a feszültséget a magon, letiltják a gyorsítótár egy részét stb. Ez lehetővé teszi, hogy a processzor sokkal kevesebbet melegítsen, kevesebb energiát fogyasztjon és kevesebb zajt adjon. Ha áramra van szükség, a processzor a másodperc töredéke alatt visszatér normál állapotába. Tovább szabványos beállítások Bios szinte mindig engedélyezve, ha szükséges, letilthatók, hogy csökkentsék az esetleges "lefagyásokat" a 3D -s játékok váltásakor.

Ezen technológiák némelyike ​​szabályozza a ventilátorok sebességét a rendszerben. Például, ha a processzornak nincs szüksége fokozott hőelvezetésre, és nincs betöltve, a processzor ventilátorának sebessége csökken ( AMD Cool'n'Quiet, Intel Speed ​​Step).

Intel virtualizációs technológiaés AMD virtualizáció.

Ezek a hardvertechnológiák lehetővé teszik speciális programok használatát egyszerre több operációs rendszer futtatására, anélkül, hogy jelentős teljesítményveszteség lenne. Ezenkívül arra használják korrekt munka szerverre, mert gyakran több operációs rendszert is telepítenek.

Végrehajtás Letiltás BitésNem. eXecute Bit technológia célja, hogy megvédje számítógépét a vírustámadásoktól és szoftverhibák ami tönkreteheti a rendszert puffer túlcsordulás.

Intel 64 , AMD 64 , EM 64 T -ez a technológia lehetővé teszi, hogy a processzor 32 bites architektúrájú és 64 bites operációs rendszerben is működjön. Rendszer 64 bites- az előnyök szempontjából a hétköznapi felhasználók számára ez annyiban különbözik, hogy több mint 3,25 GB használható ebben a rendszerben véletlen hozzáférésű memória... 32 bites rendszereken használja a b O Nagyobb mennyiségű RAM nem lehetséges a korlátozott címzett memória *miatt.

A legtöbb 32 bites architektúrával rendelkező alkalmazás futtatható 64 bites operációs rendszeren.

* Mit tehet, ha még 1985 -ben senki sem gondolhatott ilyen óriási, az akkori mércével mérhető RAM -mennyiségre.

Ezenkívül.

Néhány szó arról.

Erre a pontra érdemes nagyon odafigyelni. Minél vékonyabb a technikai folyamat, annál kisebb processzor energiát fogyaszt, és ennek következtében kevesebbet melegszik. És többek között nagyobb biztonsági résszel rendelkezik a túlhajtáshoz.

Minél finomabb a technikai folyamat, annál többet tud "becsomagolni" egy chipbe (és nem csak), és növelheti a processzor képességeit. Ugyanakkor a hőveszteség és az energiafogyasztás is arányosan csökken, az alacsonyabb áramveszteségek és a magterület csökkenése miatt. Észrevehet egy tendenciát, hogy ugyanazon architektúra minden új generációjával egy új technikai folyamat során az energiafogyasztás is növekszik, de ez nem így van. Csupán arról van szó, hogy a gyártók még nagyobb teljesítmény felé haladnak, és a tranzisztorok számának növekedése miatt átlépik az előző generációs processzorok hőelvezetési vonalát, ami nem arányos a technikai folyamat csökkenésével.

Beépítve a processzorba.

Ha nincs szüksége integrált videomagra, akkor ne vásároljon vele processzort. Csak rosszabb lesz a hőelvezetés, a felesleges hő (nem mindig), a rosszabb túlhajtási potenciál (nem mindig) és a túlfizetett pénz.

Ezenkívül a processzorba épített magok csak az operációs rendszer betöltésére, az interneten való böngészésre és videók megtekintésére alkalmasak (és még akkor sem minőségi).

A piaci trendek továbbra is változnak, és lehetőség nyílik arra, hogy produktív processzort vásároljon Intel videómag nélkül egyre kevésbé esik ki. A beágyazott videomag bevezetésének kényszerítésére vonatkozó politika a processzorokkal együtt jelent meg Intel kódnevű Homokos hid, amelynek fő újítása az azonos technológiai folyamaton alapuló beágyazott kernel volt. A videó magja található közösen processzorral egy kristályon, és nem olyan egyszerű, mint a processzorok korábbi generációiban Intel... Azok számára, akik nem használják, hátrányok vannak a processzor bizonyos túlfizetése formájában, a fűtőforrás elmozdulása a hőelosztó fedél középpontjához képest. Vannak azonban pluszok is. Letiltott video mag, nagyon gyors videokódolásra használható technológia segítségével Gyors szinkronizálás ezt a technológiát támogató speciális szoftverrel párosítva. A jövőben, Intelígéretet tesz arra, hogy kiterjeszti a látókörét a beágyazott videómag párhuzamos számítástechnikai használatának.

Processzor foglalatok. Platform élettartama.


Intel durva politikája van a platformjaikra. Mindegyik élettartama (a processzorok értékesítésének kezdete és vége) általában nem haladja meg az 1,5 - 2 évet. Ezenkívül a vállalatnak több platformja is párhuzamosan fejlődik.

Vállalat AMD, ellentétes kompatibilitási politikával rendelkezik. A platformján 3, illeszkedni fog minden támogató processzor jövőbeli generációjához DDR3... Még akkor is, ha a platform kilép 3+és később akár új processzorokat is 3, vagy az új processzorok kompatibilisek lesznek a régi alaplapokkal, és fájdalommentes frissítést lehet majd végrehajtani a pénztárcához úgy, hogy csak a processzort cserélik (az alaplap, a RAM stb. cseréje nélkül) és felvillan az alaplap. Az inkompatibilitás egyetlen árnyalata lehet a típus megváltoztatásakor, mivel más processzorba épített memóriavezérlőre lesz szükség. Tehát a kompatibilitás korlátozott, és nem minden alaplap támogatja. Általában azonban egy gazdaságos felhasználó vagy azok számára, akik nem szoktak 2 évente teljesen cserélni a platformot - a processzor gyártójának választása egyértelmű - ez AMD.

A processzor hűtése.

Alapértelmezés szerint a processzor jár hozzá DOBOZ- új hűtő, amely egyszerűen megbirkózik feladataival. Ez egy alumíniumdarab, nem túl magas diszperziós területtel. A hőcsöveken és rögzített bordákon alapuló hatékony hűtőket a nagyon hatékony hőelvezetésre tervezték. Ha nem akarja szükségtelen zajt hallani a ventilátorból, akkor vásároljon alternatív, hatékonyabb hűtőt hűtőcsövekkel, vagy zárt vagy nyitott hurkú folyadékhűtő rendszert. Az ilyen hűtőrendszerek emellett lehetőséget adnak a processzor túlhajtására.

Következtetés.

A processzor teljesítményét és teljesítményét befolyásoló minden fontos szempontot figyelembe vettünk. Ismételjük meg, mire kell figyelni:

  • Válassza ki a gyártót
  • Processzor architektúra
  • Technikai folyamat
  • CPU frekvencia
  • A processzormagok száma
  • A processzor gyorsítótárának mérete és típusa
  • Technológiai és oktatási támogatás
  • Minőségi hűtés

Reméljük, hogy ez az anyag segít megérteni és eldönteni az elvárásainak megfelelő processzor választását.

saul 2015. szeptember 9 -én 13:38

Több szálú játékmotor architektúra megvalósítása

  • Intel blog,
  • Játékfejlesztés,
  • Párhuzamos programozás,
  • Weboldalfejlesztés
  • Fordítás

A többmagos processzorok megjelenésével szükségessé vált egy párhuzamos architektúrán alapuló játékmotor létrehozása. A rendszer összes processzorának - mind a grafikus (GPU), mind a központi (CPU) - használata sokkal több lehetőséget nyit meg, mint a csak GPU -n alapuló egyszálú motor. Például több CPU mag használatával javítható vizuális effektek a játékban használt fizikai objektumok számának növelésével, valamint reálisabb karakteres viselkedés elérésével a fejlett mesterséges intelligencia (AI) megvalósításán keresztül.
Tekintsük a játékmotor többszálú architektúrájának megvalósításának jellemzőit.

1. Bemutatkozás

1.1. Áttekintés

A játékmotor többszálú architektúrája lehetővé teszi a platformon lévő összes processzor képességeinek maximális kihasználását. Feltételezi a különféle funkcionális blokkok párhuzamos végrehajtását az összes rendelkezésre álló processzoron. Kiderül azonban, hogy egy ilyen rendszer megvalósítása nem olyan egyszerű. Egyedi elemek A játékmotorok gyakran kölcsönhatásba lépnek egymással, ami hibákhoz vezethet, ha egyidejűleg hajtják végre őket. Az ilyen forgatókönyvek kezelésére a motor speciális mechanizmusokat biztosít az adatok szinkronizálásához, amelyek kizárják a lehetséges zárolásokat. Az adatok egyidejű szinkronizálására szolgáló módszereket is megvalósít, ezáltal minimalizálva a végrehajtási időt.

A bemutatott anyagok megértéséhez jól kell ismerni a modern alkotási módszereket számítógépes játékok, többszálú támogatás a játékmotorokhoz, vagy általában az alkalmazások teljesítményének javítása.

2. Párhuzamos végrehajtási állapot

A párhuzamos állapot kulcsfontosságú fogalom a többszálúságban. Csak a játékmotort külön rendszerekre osztva, amelyek mindegyike a saját módjában működik, és gyakorlatilag nem lép kapcsolatba a motor többi részével, érhetjük el a párhuzamos számítástechnika legnagyobb hatékonyságát és csökkenthetjük a szinkronizáláshoz szükséges időt. Nem lehet teljesen elkülöníteni a motor egyes részeit az összes megosztott erőforrás kizárásával. Azonban az olyan műveletekhez, mint például az objektumok helyzetére vagy tájolására vonatkozó adatok beszerzése, az egyes rendszerek az adatok helyi másolatait használhatják a megosztott erőforrások helyett. Ez lehetővé teszi az adatfüggőség minimalizálását a motor különböző részein. Az egyes rendszerek által végrehajtott megosztott adatok változásairól értesítik az államkezelőt, amely sorba állítja őket. Ezt hívják üzenetküldési módnak. Ez a mód feltételezi, hogy a feladatok befejezése után a motorrendszerek értesítést kapnak a változásokról, és ennek megfelelően frissítik belső adataikat. Ez a mechanizmus jelentősen csökkentheti a szinkronizálási időt és a rendszerek egymástól való függését.

2.1 Végrehajtási állapotok

A végrehajtási állapotkezelő hatékony működéséhez ajánlott a műveletek szinkronizálása egy adott órával. Ez lehetővé teszi, hogy minden rendszer egyszerre fusson. Ebben az esetben az órajelnek nem kell megfelelnie a képsebességnek. És az óra ciklusok időtartama nem függhet a frekvenciától. Kiválasztható úgy, hogy egy órajel ciklus megfeleljen egy képkocka átviteléhez szükséges időnek (méretétől függetlenül). Más szóval, a kullancsok gyakoriságát vagy időtartamát az állami menedzser konkrét megvalósítása határozza meg. Az 1. ábra egy „ingyenes” lépésről lépésre történő működési módot mutat be, amelyhez nem szükséges, hogy minden rendszer ugyanazon órajelen belül végezzen műveletet. Azt az üzemmódot, amelyben minden rendszer befejezi a műveletek végrehajtását egy órajel alatt, "kemény" lépésmódnak nevezik. Vázlatosan a 2. ábrán látható.


1. ábra Végrehajtási állapot szabad, lépésről-lépésre módban

2.1.1. Ingyenes lépésről-lépésre mód
Ingyenes, lépésről lépésre üzemmódban minden rendszer folyamatosan működik egy előre meghatározott ideig, amely a számítások következő részének elvégzéséhez szükséges. A „szabad” elnevezést azonban nem szabad szó szerint érteni: a rendszereket nem szinkronizálják tetszőleges időpontban, csak „szabadon” választhatják meg a következő szakasz befejezéséhez szükséges óraciklusok számát.
Általában ebben a módban nem elegendő egyszerű értesítést küldeni az állapotváltozásról az állapotkezelőnek. Szükséges továbbá a frissített adatok átvitele. Ennek oka az lehet, hogy a megosztott adatokat megváltoztató rendszer futó állapotban lehet, miközben egy másik, az adatokra váró rendszer készen áll a frissítésre. Ebben az esetben több memóriára van szükség, mivel több másolatot kell készíteni az adatokról. Ezért az "ingyenes" rezsim nem tekinthető univerzális megoldásnak minden alkalomra.
2.1.2. Kemény lépés mód
Ebben az üzemmódban a feladatok végrehajtása minden rendszeren egy órajel alatt fejeződik be. Ez a mechanizmus egyszerűbben megvalósítható, és nem igényli a frissített adatok továbbítását az értesítéssel együtt. Valójában szükség esetén az egyik rendszer egyszerűen kérhet új értékeket egy másik rendszertől (természetesen a futási ciklus végén).
Kemény módban ál -szabad léptető üzemmódot valósíthat meg a számítások különböző lépések közötti elosztásával. Különösen erre lehet szükség az AI számításokhoz, ahol a kezdeti "közös célt" az első órajelben számítják ki, amelyet a következő szakaszokban fokozatosan finomítanak.


2. ábra Végrehajtási állapot kemény lépésről lépésre

2.2. Adatok szinkronizálása

Ha a megosztott adatokat több rendszer módosítja, akkor a változások ütközéséhez vezethet. Ebben az esetben az üzenetküldő rendszernek algoritmust kell biztosítania a helyes összérték kiválasztásához. Az alábbi szempontok alapján két fő megközelítés létezik.
  • Idő: A végső érték az utolsó módosítás.
  • Prioritás: Az összeg a legnagyobb prioritású rendszer által végrehajtott módosítás. Ha a rendszerek prioritása azonos, akkor a változás idejét is figyelembe veheti.
Minden elavult adat (bármely feltétel esetén) egyszerűen felülírható vagy kizárható az értesítési sorból.
Mivel a teljes érték változhat a változtatások sorrendjétől függően, nagyon nehéz lehet a teljes adat relatív értékeinek használata. Ilyen esetekben abszolút értékeket kell használni. Ezután a helyi adatok frissítésekor a rendszerek egyszerűen lecserélhetik a régi értékeket újakra. Az optimális megoldás az, hogy az adott helyzettől függően abszolút vagy relatív értékeket választanak. Például az általános adatoknak, például a pozíciónak és a tájolásnak abszolútnak kell lenniük, mert a változtatások sorrendje fontos. A relatív értékek például részecskegeneráló rendszerhez használhatók, mivel a részecskékkel kapcsolatos összes információ csak abban tárolódik.

3. Motor

A motor fejlesztésekor a fő hangsúly a funkcionalitás további bővítéséhez szükséges rugalmasságon van. Ez bizonyos korlátok (pl. Memória) esetén optimalizálja a használatát.
A motor nagyjából két részre osztható: keretrendszer és menedzserek. A keretrendszer (lásd a 3.1. Szakaszt) a játék olyan részeit tartalmazza, amelyek futásidőben replikálódnak, azaz több esetben is léteznek. Ez magában foglalja a játék fő hurkának végrehajtásában részt vevő elemeket is. A menedzserek (lásd a 3.2. Szakaszt) olyan Singleton -objektumok, amelyek felelősek a játék logikájának végrehajtásáért.
Az alábbiakban a játék motorjának diagramja látható.


3. ábra A motor általános felépítése

Kérjük, vegye figyelembe, hogy a funkcionális játékmodulok vagy rendszerek nem a motor részei. A motor csak egyesíti őket, összekötő elemként működik. Ez a moduláris felépítés lehetővé teszi a rendszerek szükség szerinti be- és kirakodását.

A motor és a rendszerek kölcsönhatása interfészek segítségével történik. Ezeket úgy hajtják végre, hogy hozzáférést biztosítsanak a motorhoz a rendszerek funkcióihoz, és a rendszerekhez - a motor vezetőihez.
A motor részletes diagramját az A függelék, Motor diagramja tartalmazza.

Gyakorlatilag minden rendszer független egymástól (lásd a 2. szakaszt, "Egyidejű végrehajtási állapot"), vagyis párhuzamosan hajthat végre műveleteket anélkül, hogy befolyásolná más rendszerek működését. Az adatok megváltoztatása azonban bizonyos nehézségekkel jár, mivel a rendszereknek kölcsönhatásba kell lépniük egymással. A rendszerek közötti információcsere a következő esetekben szükséges:

  • egy másik rendszer tájékoztatása az általános adatok (például az objektumok helyzete vagy tájolása) változásáról;
  • olyan funkciók elvégzésére, amelyek ehhez a rendszerhez nem állnak rendelkezésre (például az AI rendszer a rendszer geometriai vagy fizikai tulajdonságait kiszámító rendszerhez fordul, hogy elvégezze a sugár metszésvizsgálatát).
Az első esetben az információcsere ellenőrzésére az előző részben leírt állami menedzser szolgálhat. (Az állami menedzserről további információt a 3.2.2. Szakaszban, "Az államkezelő" című részben talál.)
A második esetben egy speciális mechanizmust kell végrehajtani, amely az egyik rendszer szolgáltatásait biztosítja a másik használatához. Teljes leírás ezt a mechanizmust a 3.2.3. szakasz - „Szolgáltatáskezelő” írja le.

3.1. Keretrendszer

A keretet a motor összes elemének kombinálására használják. Itt inicializálják a motort, a menedzserek kivételével, akik globálisan megjelennek. Ezenkívül információkat tárol a helyszínről. A nagyobb rugalmasság érdekében a jelenetet úgynevezett generikus jelenetként valósítják meg, amely általános objektumokat tartalmaz. Ezek konténerek, amelyek egyesítik a jelenet különböző funkcionális részeit. Részletekért lásd a 3.1.2.
A fő játékhurok a keretben is megvalósul. Vázlatosan a következőképpen ábrázolható.


4. ábra A játék fő hurka

A motor ablakos környezetben fut, így a játékhurok első lépéseként fel kell dolgozni a befejezetlen OS ablaküzeneteket. Ha ezt nem teszi meg, a motor nem válaszol az operációs rendszer üzeneteire. A második lépésben az ütemező a feladatkezelő segítségével rendel hozzá feladatokat. Ezt a folyamatot az alábbi 3.1.1. Szakasz részletezi. Ezt követően az államvezető (lásd a 3.2.2. Szakaszt) információkat küld a motorrendszerekben végrehajtott változtatásokról, amelyek munkáját ez befolyásolhatja. Az utolsó lépésben a végrehajtási státusztól függően a keret meghatározza, hogy le kell -e állítani vagy folytatni kell a motort, például a következő jelenetre való áttéréshez. A motor állapotára vonatkozó információkat a környezetkezelő tárolja. A részleteket lásd a 3.2.4.

3.1.1. Ütemezés
Az ütemező végrehajtási referencia órát állít elő meghatározott sebességgel. Ha a benchmark mód megköveteli, hogy a következő művelet az előző befejezése után azonnal induljon, anélkül, hogy megvárná az óra végét, a frekvencia korlátlan lehet.
Órajel esetén az ütemező a feladatkezelő segítségével futtatja a rendszereket futási módba. Szabad léptetés módban (2.1.1. Szakasz) az ütemező lekérdezi a rendszereket, hogy meghatározza, hány órajelre van szükségük a feladat elvégzéséhez. A felmérés eredményei alapján az ütemező határozza meg, hogy mely rendszerek állnak készen a végrehajtásra, és melyek azok, amelyek egy adott időpontban befejezik munkájukat. Az ütemező módosíthatja a kullancsok számát, ha egy rendszer végrehajtása tovább tart. Kemény léptetés módban (2.1.2. Szakasz) minden rendszer ugyanabban az órajelciklusban indul és fejeződik be, így az ütemező várja, hogy minden rendszer befejezze a végrehajtást.
3.1.2. Sokoldalú jelenet és tárgyak
Az általános jelenetek és objektumok más rendszerekben megvalósított funkcionalitás tárolói. Kizárólag a motorral való interakcióra szolgálnak, és semmilyen más funkciót nem látnak el. Ezek azonban kibővíthetők, hogy kihasználják a más rendszerek számára elérhető funkciókat. Ez lehetővé teszi a laza csatolást. Valóban, egy univerzális jelenet és tárgyak felhasználhatják más rendszerek tulajdonságait anélkül, hogy azokhoz kötődnének. Ez a tulajdonság kizárja a rendszerek egymástól való függőségét, és lehetővé teszi azok egyidejű működését.
Az alábbi diagram egy univerzális jelenet és tárgy kiterjesztését mutatja.


5. ábra Az univerzális jelenet és tárgy kibővítése

Nézzük meg a bővítmények működését a következő példában. Tegyük fel, hogy az univerzális univerzális jelenet kiterjesztése megtörténik, a jelenet kibővül a grafikus, fizikai és egyéb tulajdonságok felhasználásával. Ebben az esetben a kiterjesztés „grafikus” része lesz felelős a kijelző inicializálásáért, „fizikai” része pedig a szilárd anyagok fizikai törvényeinek végrehajtásáért, például a gravitációs erőért. A jelenetek tárgyakat tartalmaznak, így egy általános jelenet több általános objektumot is tartalmaz. Az általános objektumok kiterjeszthetők és kiterjeszthetők grafikus, fizikai és egyéb tulajdonságokra is. Például egy objektumnak a képernyőn történő rajzolását grafikus bővítő függvények hajtják végre, a szilárd anyagok kölcsönhatásának kiszámítását pedig fizikai.

A motor és a rendszerek kölcsönhatásának részletes diagramját a B. függelék "A motor és a rendszerek kölcsönhatásának sémája" tartalmazza.
Meg kell jegyezni, hogy az általános jelenet és az általános objektum felelős az összes "kiterjesztésük" regisztrálásáért az állapotkezelőben, hogy minden kiterjesztés értesülhessen a más kiterjesztések (azaz más rendszerek) által végrehajtott módosításokról. Példa erre egy grafikus kiterjesztés, amelyet regisztráltak, hogy értesítést kapjon a fizikai kiterjesztés által végrehajtott pozíció- és tájolási változásokról.
A rendszerkomponensekkel kapcsolatos részletekért lásd: 5.2. Szakasz, Rendszerkomponensek.

3.2. Menedzserek

A vezetők irányítják a motor munkáját. Ezek Singleton objektumok, vagyis minden típusú kezelő csak egy példányban érhető el. Erre azért van szükség, mert a menedzser erőforrásainak megkettőzése elkerülhetetlenül redundanciához vezet, és negatívan befolyásolja a teljesítményt. Ezenkívül a vezetők felelősek minden rendszer közös funkcióinak megvalósításáért.
3.2.1. Feladatkezelő
A feladatkezelő felelős a szálkészlet rendszerfeladatainak kezeléséért. A szálkészlet minden processzorhoz egy szálat hoz létre, hogy biztosítsa az optimális n-szeres skálázást és megakadályozza a szükségtelen szálak hozzárendelését, kiküszöbölve a szükségtelen feladatváltást az operációs rendszerben.

Az ütemező elküldi a feladatkezelőnek a végrehajtandó feladatok listáját, valamint információt arról, hogy mely feladatokra kell várni a befejezésig. Ezeket az adatokat tőle kapja különböző rendszerek... Minden rendszer csak egy feladatot kap. Ezt a módszert funkcionális bomlásnak nevezik. Az adatfeldolgozáshoz azonban minden ilyen feladat tetszőleges számú részfeladatra osztható (adatbontás).
Az alábbiakban egy példa látható a feladatok szétosztására szálak között négymagos rendszer esetén.


6. ábra Példa egy feladatkezelő által használt szálkészletre

A fő feladatokhoz való hozzáférés ütemező kéréseinek feldolgozása mellett a feladatkezelő inicializálási módban is dolgozhat. Sorrendben lekérdezi a rendszereket minden szálról, hogy inicializálni tudják a működéshez szükséges helyi adattárolókat.
A feladatkezelő megvalósításával kapcsolatos tippeket a D. függelék, Tippek a feladatok végrehajtásához tartalmazza.

3.2.2. Államigazgató
Az államkezelő az üzenetkezelő motor része. Figyelemmel kíséri a változásokat, és értesítéseket küld róluk minden rendszernek, amelyet ezek a változások érinthetnek. Annak érdekében, hogy ne küldjön ki felesleges értesítéseket, az államkezelő tárolja az információkat arról, hogy mely rendszerekről kell értesíteni az adott esetben. Ezt a mechanizmust az Observer minta segítségével valósítják meg (lásd C. függelék, Observer (tervezési minta)). Röviden, adott sablon magában foglalja a megfigyelő használatát, aki figyelemmel kíséri a tárgyban bekövetkezett változásokat, míg a köztük lévő közvetítő szerepet a változásvezérlő játssza.

A mechanizmus a következőképpen működik. 1. A megfigyelő megmondja a változásvezérlőnek (vagy állapotmenedzsernek), hogy mely entitásokat szeretné nyomon követni a változásokhoz. 2. Az alany értesíti az irányítót minden változtatásáról. 3. A keretrendszer jelzésére a vezérlő értesíti a megfigyelőt a témában bekövetkezett változásokról. 4. A megfigyelő kérést küld az alanynak frissített adatok fogadására.

Szabad léptetés módban (lásd a 2.1.1. Szakaszt) ennek a mechanizmusnak a megvalósítása némileg bonyolultabbá válik. Először is a frissített adatokat el kell küldeni a változási értesítéssel együtt. Ebben a módban az igény szerinti küldés nem alkalmazható. Valóban, ha a kérelem beérkezésekor a változtatásokért felelős rendszer még nem fejeződött be, akkor nem tud frissített adatokat szolgáltatni. Másodszor, ha egy rendszer még nem áll készen a változások fogadására az óra ciklus végén, akkor az államkezelőnek ragaszkodnia kell a megváltozott adatokhoz, amíg az összes fogadásra regisztrált rendszer készen áll.

A keretrendszer két állami menedzsert biztosít erre: a jelenetek és az objektumok szintjén végrehajtott változtatások feldolgozására. A jelenetekhez és objektumokhoz tartozó üzenetek általában függetlenek egymástól, így két külön kezelő használata kiküszöböli a felesleges adatok feldolgozásának szükségességét. De ha a jelenetnek figyelembe kell vennie egy objektum állapotát, regisztrálhatja, hogy értesítéseket kapjon a változásairól.

A szükségtelen szinkronizálás elkerülése érdekében az állapotkezelő a feladatkezelő által létrehozott minden szálhoz külön generál egy változásértesítési sort. Ezért nincs szükség szinkronizálásra a sor elérésekor. A 2.2 szakasz leír egy módszert, amellyel végrehajtás után egyesíthetők a sorok.


7. ábra Egy általános objektum belső változásainak értesítése

A változásértesítéseket nem kell egymás után küldeni. Van egy módja annak, hogy párhuzamosan küldje őket. Egy feladat végrehajtásakor a rendszer minden objektumával működik. Például, amikor a fizikai objektumok kölcsönhatásba lépnek egymással, a fizikai rendszer vezérli mozgásukat, az ütközések kiszámítását, új cselekvő erőket stb. Az értesítések fogadásakor a rendszerobjektum nem lép kölcsönhatásba a rendszer többi objektumával. Kölcsönhatásba lép a hozzá tartozó általános objektumkiterjesztésekkel. Ez azt jelenti, hogy az általános objektumok most függetlenek egymástól, és egyszerre frissíthetők. Ez a megközelítés nem zárja ki a szélső eseteket, amelyeket figyelembe kell venni a szinkronizálási folyamat során. Lehetővé teszi azonban a párhuzamos végrehajtási mód használatát, amikor úgy tűnt, hogy csak egymás után lehet cselekedni.

3.2.3. Szolgáltatásmenedzser
A szolgáltatásmenedzser hozzáférést biztosít a rendszerekhez más rendszerek olyan funkcióihoz, amelyek egyébként nem lennének elérhetőek számukra. Fontos megérteni, hogy a funkciók interfészeken keresztül érhetők el, nem közvetlenül. A rendszer interfészekkel kapcsolatos információkat a szolgáltatáskezelő is tárolja.
A rendszerek egymásrautaltságának kiküszöbölése érdekében mindegyiknek csak egy kis szolgáltatása van. Ezenkívül az adott szolgáltatás használatának képességét nem maga a rendszer határozza meg, hanem a szolgáltatásmenedzser.


8. ábra Példa szolgáltatásmenedzserre

A szolgáltatásmenedzsernek más funkciója is van. Hozzáférést biztosít a rendszerekhez más rendszerek tulajdonságaihoz. A tulajdonságok rendszerspecifikus értékek, amelyeket az üzenetkezelő rendszer nem kommunikál. Ez lehet a képernyő felbontásának bővítése egy grafikus rendszerben vagy a gravitáció nagysága egy fizikai rendszerben. A szolgáltatásmenedzser ezeket az adatokat a rendszerek rendelkezésére bocsátja, de közvetlenül nem irányítja őket. A tulajdonságváltozásokat speciális sorba helyezi, és csak a szekvenciális végrehajtás után teszi közzé. Kérjük, vegye figyelembe, hogy egy másik rendszer tulajdonságaihoz való hozzáférésre ritkán van szükség, és nem szabad visszaélni vele. Például szüksége lehet rá a drótváz mód be- vagy kikapcsolására a grafikus rendszerben a konzol ablakából, vagy a képernyő felbontásának megváltoztatására a lejátszó kérésére a felhasználói felületről. Ez a lehetőség elsősorban olyan paraméterek beállítására szolgál, amelyek képkockánként nem változnak.

3.2.4. Környezetvédelmi vezető
  • A környezetkezelő biztosítja a motor futási idejű környezetét. Funkcióit feltételesen a következő csoportokra oszthatjuk.
  • Változók: a motor minden része által használt gyakori változók neve és értéke. Általában a változók értékeit a jelenet betöltésekor vagy bizonyos esetekben határozzák meg egyéni beállítások... A motor és a különböző rendszerek kérés elküldésével férhetnek hozzá.
  • Végrehajtás: végrehajtási adatok, például egy jelenet vagy a program végrehajtásának befejezése. Ezeket a paramétereket mind a rendszerek, mind a motor beállíthatja és kérheti.
3.2.5. Platformkezelő
A platformkezelő kivonatot hajt végre az operációs rendszer hívásaihoz, és az egyszerű absztrakción túl további funkciókat is biztosít. Ennek a megközelítésnek az az előnye, hogy több tipikus funkciót foglal magában egyetlen hívásban. Vagyis nem kell azokat külön -külön megvalósítani minden egyes hívó esetében, túlterhelve az operációs rendszer hívásainak részleteivel.
Példaként tekintse meg a platformkezelő hívását a rendszer dinamikus könyvtárának betöltéséhez. Nem csak a rendszert tölti be, hanem megkapja a függvények belépési pontjait, és meghívja a könyvtár inicializáló függvényét. A menedzser a könyvtár leíróját is tárolja, és a motor leállítása után kirakja.

A platformkezelő felelős továbbá a processzorra vonatkozó információk, például a támogatott SIMD utasítások, valamint a folyamatok egy adott működési módjának inicializálásáért. A rendszerek nem használhatnak más függvényeket lekérdezések generálásához.

4. Interfészek

Az interfészek a kommunikáció eszközei a keretrendszer, a menedzserek és a rendszerek között. A keretrendszer és a menedzserek a motor részei, így közvetlenül kölcsönhatásba léphetnek egymással. A rendszerek nem tartoznak a motorhoz. Sőt, mindegyikük különböző funkciókat lát el, ami azt eredményezi, hogy egyetlen interakciós módszert kell létrehozni velük. Mivel a rendszerek nem tudnak közvetlenül kapcsolatba lépni a menedzserekkel, más hozzáférési módot kell biztosítaniuk. Azonban a vezetők nem minden funkciója nyitott a rendszerek felé. Néhányuk csak a keretrendszer számára elérhető.

Az interfészek határozzák meg a használathoz szükséges funkciókészletet standard módszer hozzáférés. Ez kiküszöböli annak szükségességét, hogy a keretrendszer ismerje az egyes rendszerek megvalósításának részleteit, mivel csak meghatározott hívásokon keresztül léphet velük kapcsolatba.

4.1. Tárgy és megfigyelő interfészek

Az alany és a megfigyelő felületek fő célja, hogy regisztrálja, mely megfigyelőkről küldjön értesítést, és küldjön ilyen értesítéseket. A megfigyelővel való regisztrálás és a kapcsolat megszakítása minden alany standard funkciója, beleértve a kezelőfelület megvalósítását.

4.2. Kezelői interfészek

A menedzserek, bár Singleton objektumok, közvetlenül csak a keretrendszerhez férnek hozzá. Más rendszerek csak olyan interfészeken keresztül férhetnek hozzá a menedzserekhez, amelyek teljes funkcionalitásuknak csak töredékét képviselik. Az inicializálás után az interfész átkerül a rendszerhez, amely azt használja bizonyos kezelői funkciók kezelésére.
Nincs egyetlen kezelőfelület minden menedzsernek. Mindegyiknek saját külön kezelőfelülete van.

4.3. Rendszer interfészek

Ahhoz, hogy egy keretrendszer hozzáférhessen a rendszerkomponensekhez, interfészekre van szüksége. Nélkülük mindenki támogatása új rendszer a motort külön kell megvalósítani.
Minden rendszer négy komponenst tartalmaz, tehát négy interfésznek kell lennie. Mégpedig: rendszer, jelenet, tárgy és feladat. Részletes leírás lásd az 5. szakaszt, Rendszerek. Az interfészek az alkatrészek elérésének eszközei. A rendszerfelületek lehetővé teszik jelenetek létrehozását és törlését. A jelenetfelületek viszont lehetővé teszik objektumok létrehozását és megsemmisítését, valamint információt kérhetnek a rendszer fő feladatáról. A feladatfelületet főleg a feladatkezelő használja, amikor feladatokat állít be a szálkészletbe.
Mivel a jelenetnek és a tárgynak, a rendszer részeként, kölcsönhatásba kell lépnie egymással és az univerzális jelenettel, valamint a tárgyhoz, amelyhez kapcsolódnak, felületeik is az alany és a megfigyelő felületei alapján jönnek létre.

4.4. Interfészek módosítása

Ezek az interfészek arra szolgálnak, hogy adatokat továbbítsanak a rendszerek között. Minden rendszernek, amely bizonyos típusú változtatásokat hajt végre, ilyen interfészt kell megvalósítania. A geometria egy példa. A geometria felület interfészeket tartalmaz az elem helyzetének, tájolásának és léptékének meghatározására. Minden olyan rendszernek, amely megváltoztatja a geometriát, olyan interfészt kell megvalósítania, hogy a más rendszerekre vonatkozó információk ne legyenek szükségesek a megváltozott adatok eléréséhez.

5. Rendszerek

A rendszerek a motor azon részei, amelyek felelősek a játékfunkciók megvalósításáért. Minden alapvető feladatot elvégeznek, amelyek nélkül a motornak nem lenne értelme. A motor és a rendszerek közötti interakció interfészek segítségével történik (lásd 4.3. Szakasz, "Rendszerinterfészek"). Erre azért van szükség, hogy ne terhelje túl a motort a különféle rendszerekre vonatkozó információkkal. Az interfészek sokkal könnyebbé teszik az új rendszer hozzáadását, mivel a motornak nem kell figyelembe vennie a megvalósítás minden részletét.

5.1. Típusok

A motorrendszerek nagyjából több, előre meghatározott kategóriába sorolhatók szabványos alkatrészek játékok. Például: geometria, grafika, fizika (szilárd ütközés), hang, bemeneti feldolgozás, AI és animáció.
A nem szabványos funkciókkal rendelkező rendszerek külön kategóriába tartoznak. Fontos megérteni, hogy minden olyan rendszernek, amely módosítja egy adott kategória adatait, tisztában kell lennie az adott kategória interfészével, mivel a motor nem szolgáltat ilyen információt.

5.2. Rendszer összetevők

Minden rendszerhez több összetevőt kell megvalósítani. Néhány közülük: rendszer, jelenet, objektum és feladat. Mindezeket az alkatrészeket arra használják, hogy kölcsönhatásba lépjenek a motor különböző részeivel.
Az alábbi ábra a különböző komponensek közötti kölcsönhatásokat mutatja be.


9. ábra A rendszer összetevői

A motorrendszerek közötti kapcsolatok részletes diagramját a B. függelék, „A motor és a rendszerek közötti kölcsönhatás sémája” tartalmazza.

5.2.1. Rendszer
A "rendszer" összetevő, vagy egyszerűen a rendszer felelős a rendszer erőforrásainak inicializálásáért, amelyek gyakorlatilag nem változnak a motor működése során. Például a grafikus rendszer elemzi az erőforrás -címeket, hogy meghatározza a helyüket, és felgyorsítsa a betöltést az erőforrás használatakor. A képernyő felbontását is beállítja.
A rendszer a keret fő belépési pontja. Információt nyújt önmagáról (például a rendszer típusáról), valamint módszereket jelenetek létrehozására és törlésére.
5.2.2. Színhely
A jelenetkomponens vagy a rendszer jelenete felelős az aktuális jelenethez társított erőforrások kezeléséért. Az általános jelenet a rendszer jeleneteit használja a funkciók kibővítésére, funkcionalitásuk kihasználásával. Példa erre egy fizikai jelenet, amelyet új játékvilág létrehozására használnak, és a jelenet inicializálásakor meghatározza a benne lévő gravitációs erőket.
A jelenetek módszereket kínálnak az objektumok létrehozására és megsemmisítésére, valamint egy "feladat" összetevőt a jelenet feldolgozásához és egy módszert a hozzáféréshez.
5.2.3. Egy tárgy
Az objektumkomponens vagy a rendszerobjektum a jelenethez tartozik, és általában ahhoz kapcsolódik, amit a felhasználó lát a képernyőn. Egy általános objektum egy rendszerobjektumot használ a funkciók kibővítésére azáltal, hogy a tulajdonságait sajátjaként tárja fel.
Példa erre egy általános objektum geometriai, grafikai és fizikai kiterjesztése, amely egy fagerendát jelenít meg a képernyőn. A geometriai tulajdonságok tartalmazzák az objektum helyzetét, tájolását és léptékét. A grafikus rendszer egy speciális rácsot fog megjeleníteni. A fizikai rendszer pedig egy merev test tulajdonságaival ruházza fel, hogy kiszámítsa a más testekkel való kölcsönhatásokat és a ható gravitációs erőket.

Bizonyos esetekben egy rendszerobjektumnak figyelembe kell vennie az általános objektum vagy annak egyik kiterjesztésének változásait. Ebből a célból létrehozhat egy speciális kapcsolatot, amely nyomon követi a végrehajtott módosításokat.

5.2.4. Feladat
A feladatkomponens vagy rendszerfeladat a jelenet feldolgozására szolgál. A feladat parancsot kap a jelenet frissítésére a feladatkezelőtől. Ez jelzés arra, hogy a rendszerfunkciókat jelenetobjektumokon futtassa.
Egy feladat végrehajtása részfeladatokra osztható, és a feladatkezelő segítségével is elosztható még nagyobb számú szálra. azt kényelmes módja a motor méretezése több processzorra. Ezt a módszert nevezzük adatbontásnak.
A jelenetfeladatok frissítésének folyamatában az objektumváltozásokkal kapcsolatos információkat továbbítják az államkezelőnek. Az állami menedzser részleteit lásd a 3.2.2.

6. Az összes összetevő kombinálása

A fent leírt összes elem összefügg egymással, és egy egész részét képezi. A motor munkája nagyjából több szakaszra osztható, amelyeket a következő fejezetekben ismertetünk.

6.1. Inicializációs fázis

A motor a vezetők és a keretrendszer inicializálásával indul.
  • A keretrendszer hívja a jelenet betöltőt.
  • Miután meghatározta, hogy a jelenet mely rendszereket használja, a betöltő felhívja a platformkezelőt, hogy betöltse a megfelelő modulokat.
  • A platformkezelő betölti a megfelelő modulokat, és átadja azokat a felületkezelőnek, majd felhívja őket egy új rendszer létrehozására.
  • A modul egy mutatót küld vissza a rendszerpéldányra, amely megvalósítja a rendszerinterfészt a betöltő számára.
  • A szolgáltatásmenedzser regisztrálja a rendszermodul által nyújtott összes szolgáltatást.


10. ábra A vezetők és a motorrendszerek inicializálása

6.2. Jelenet betöltési szakasz

A vezérlés visszatér a rakodóhoz, amely betölti a jelenetet.
  • A rakodógép általános jelenetet hoz létre. A rendszerjelenetek példányosításához a rendszer interfészeket hívja meg, kiterjesztve az általános jelenet funkcionalitását.
  • Az univerzális jelenet határozza meg, hogy az egyes rendszerjelenek milyen adatokat módosíthatnak, és értesítést kap arról, hogy milyen változásokat kell kapnia.
  • Azáltal, hogy illeszti a jeleneteket, amelyek bizonyos változtatásokat hajtanak végre, és értesítést akarnak kapni róluk, az általános jelenet továbbítja ezeket az információkat az állami menedzsernek.
  • A jelenet minden objektumához a betöltő generál egy általános objektumot, majd meghatározza, hogy mely rendszerek fogják kiterjeszteni az általános objektumot. A rendszerobjektumok közötti megfelelést a jelenetekhez használt séma szerint határozzák meg. Az államigazgatónak is átadják.
  • A betöltő a kapott jelenetfelületeket használja a rendszerobjektumok példányosításához és az általános objektumok kiterjesztéséhez.
  • Az ütemező lekérdezi a jelenetfelületeket az elsődleges feladataikhoz, hogy futásidőben át tudják adni ezeket az információkat a feladatkezelőnek.


11. ábra Az univerzális jelenet és tárgy inicializálása

6.3. A játékciklus szakasza

  • A platformkezelő ablaküzenetek és az aktuális platform működéséhez szükséges egyéb elemek feldolgozására szolgál.
  • Ezután a vezérlés átkerül az ütemezőhöz, amely megvárja, amíg az óra vége folytatódik.
  • Az óra végén, ingyenes lépésről lépésre, az ütemező ellenőrzi, hogy mely feladatokat hajtották végre. Az összes befejezett feladat (azaz futásra kész) átkerül a feladatkezelőhöz.
  • Az ütemező határozza meg, hogy mely feladatokat kell végrehajtani az aktuális kullancsban, és várja, hogy azok befejeződjenek.
  • Kemény lépésben ezek a műveletek minden lépésben megismétlődnek. Az ütemező minden feladatot átad a menedzsernek, és várja, hogy azok befejeződjenek.
6.3.1. A feladat elvégzése
Az irányítás a feladatkezelőre kerül.
  • Sorba állítja az összes fogadott feladatot, majd a szabad szálak megjelenésekor megkezdi a végrehajtást. (A feladatok végrehajtásának folyamata a rendszerektől függően eltérő. A rendszerek csak egy feladattal dolgozhatnak, vagy egyszerre több feladatot is feldolgozhatnak a sorból, ezzel megvalósítva a párhuzamos végrehajtást.)
  • A végrehajtás során a feladatok a teljes jelenettel vagy csak bizonyos objektumokkal dolgozhatnak, megváltoztatva azok belső adatait.
  • A rendszereket értesíteni kell az általános adatok (pl. Helyzet vagy tájolás) változásairól. Ezért a feladat végrehajtásakor a rendszer jelenete vagy objektuma értesíti a megfigyelőt minden változásról. Ebben az esetben a megfigyelő ténylegesen változásvezérlőként működik, amely az állami menedzser része.
  • A változásvezérlő sorban generálja a változásértesítéseket a további feldolgozáshoz. Figyelmen kívül hagyja az adott megfigyelőt nem érintő változásokat.
  • Bizonyos szolgáltatások használatához egy feladat felveszi a kapcsolatot a szolgáltatáskezelővel. A szolgáltatáskezelő lehetővé teszi más rendszerek tulajdonságainak megváltoztatását is, amelyek nem érhetők el az üzenetküldő motorban (például az adatbeviteli rendszer megváltoztatja a képernyő kiterjesztését - ez a grafikus rendszer tulajdonsága).
  • A feladatok kapcsolatba léphetnek a környezetkezelővel is környezeti változók beszerzése és a végrehajtási állapot megváltoztatása érdekében (a végrehajtás szüneteltetése, a következő jelenethez való lépés stb.).


12. ábra Feladatkezelő és feladatok

6.3.2. Adatok frissítése
Az aktuális kullancs összes feladatának elvégzése után a fő játékhurok felhívja az államkezelőt, hogy kezdje meg az adatfrissítési fázist.
  • Az államvezető sorra hívja fel minden változásvezérlőjét, hogy elküldje a felhalmozott értesítéseket. A vezérlő ellenőrzi, hogy mely megfigyelőknek kell minden változásról értesítést küldeni.
  • Ezután felhívja a kívánt megfigyelőt, és tájékoztatja a változásról (az értesítés tartalmaz egy mutatót is a tárgyfelületre). Szabad léptetés módban a megfigyelő megváltozott adatokat kap a változtatásvezérlőtől, de kemény léptetés esetén magától az alanytól kell kérnie.
  • A rendszerobjektum -változásról szóló értesítések fogadása iránt érdeklődő megfigyelők általában más rendszerobjektumok, amelyek ugyanahhoz az általános objektumhoz vannak társítva. Ez lehetővé teszi, hogy a változtatások végrehajtásának folyamatát több, párhuzamosan végrehajtható feladatra osztja. A szinkronizálási folyamat egyszerűsítése érdekében egyesítheti az összes kapcsolódó általános objektum -bővítményt egyetlen feladatban.
6.3.3. A haladás ellenőrzése és kilépés
A játékkör utolsó lépése a futási idő állapotának ellenőrzése. Számos ilyen állapot létezik: futás, szüneteltetés, következő jelenet, stb. Ha a "futó" állapot van kiválasztva, akkor a ciklus következő iterációja indul. A kilépési állapot a ciklus végét, az erőforrások felszabadítását és az alkalmazásból való kilépést jelenti. Más állapotok is megvalósíthatók, például "szünet", "következő jelenet" stb.

7. Következtetés

Ennek a cikknek az alapgondolata a "Párhuzamos végrehajtás állapota" 2. szakaszban található. A funkcionális bontásnak és az adatok bontásának köszönhetően nemcsak a motor többszálúságát lehet megvalósítani, hanem a jövőben még nagyobb számú magra méretezhetőségét is. A szinkronizálás költségeinek kiküszöbölése érdekében, miközben adatait naprakészen tartja, az üzenetkezelés mellett állami kezelőket is használhat.

Az Observer minta az üzenetküldő motor függvénye. Fontos, hogy jól megértsük, hogyan működik, hogy kiválasszuk a motor megvalósításának legjobb módját. Valójában ez a különböző rendszerek közötti interakció mechanizmusa, amely biztosítja a közös adatok szinkronizálását.

A feladatkezelés fontos szerepet játszik a terheléselosztásban. A D. függelék tippeket ad egy hatékony feladatkezelő létrehozásához egy játékmotorhoz.

Amint láthatja, a játékmotor többszálú használata lehetséges a jól meghatározott struktúrának és üzenetküldési mechanizmusnak köszönhetően. Jelentősen javíthatja a jelenlegi és a jövőbeli processzorok teljesítményét.

A. függelék A motor vázlata

A feldolgozás a fő játékhurokból indul (lásd a 4. ábrát, „A fő játékhurok”).


B. függelék A motor és a rendszerek közötti kölcsönhatás sémája


C. függelék Megfigyelő (tervezési minta)

Az Observer mintát részletesen leírja az Objektumorientált tervezési technikák könyv. Design Patterns ", E. Gamma, R. Helm, R. Johnson, J. Vlissides (" Design Patterns: Elements of Reusable Object-Oriented Software ", Gamma E., Helm R., Johnson R., Vlissides J.). Tovább angol nyelv először 1995-ben adta ki Addison-Wesley.

Ennek a modellnek az alapgondolata a következő: ha egyes elemeket értesíteni kell más elemek változásairól, akkor nem kell végignézniük az összes lehetséges változtatás listáját, próbálva megtalálni benne a szükséges adatokat. A modell egy színész és egy megfigyelő jelenlétét feltételezi, amelyek segítségével értesítéseket küldhet a változásokról. A megfigyelő figyelemmel kíséri a témában bekövetkezett változásokat. A változásvezérlő közvetítőként működik e két komponens között. A következő ábra ezt az összefüggést szemlélteti.


13. ábra Megfigyelő sablon

Ennek a modellnek a használatát az alábbiakban ismertetjük.

  1. A változásvezérlő regisztrálja azt a megfigyelőt és tárgyat, amelyről értesíteni szeretné.
  2. A változásvezérlő valójában megfigyelő. A megfigyelő helyett a témával együtt regisztrálja magát. A változásvezérlő emellett saját listát vezet a megfigyelőkről és a velük regisztrált alanyokról.
  3. Az alany egy megfigyelőt (azaz változásvezérlőt) ad hozzá azoknak a megfigyelőknek a listájához, akik értesítést akarnak kapni a változásokról. Néha a változás típusát is feltüntetik, ami meghatározza, hogy a megfigyelő mely változások iránt érdeklődik. Ez lehetővé teszi a változásokról szóló értesítések küldésének folyamatának egyszerűsítését.
  4. Az adatok vagy állapotok megváltoztatásakor az alany visszahívási mechanizmuson keresztül értesíti a megfigyelőt, és információt közöl a megváltozott típusokról.
  5. A változásvezérlő értesítési sort generál a változásokról, és várja, hogy egy jel továbbítsa azokat az objektumoknak és rendszereknek.
  6. A kiosztás során a változásvezérlő valódi megfigyelőkkel beszél.
  7. A megfigyelők információt kérnek az alanytól a megváltozott adatokról vagy állapotokról (vagy értesítésekkel együtt kapják meg őket).
  8. Egy megfigyelő törlése előtt, vagy ha már nem kell értesítenie egy tárgyról, eltávolítja az előfizetést az adott témáról a változásvezérlőben.
Sokan vannak különböző utak feladatelosztás megvalósítása. A legjobb azonban, ha a dolgozói szálak számát a rendelkezésre álló platform logikai processzorok számával egyenlőnek tartják. Próbálja meg nem kötni a feladatokat egy adott szálhoz. A különböző rendszerek feladatainak végrehajtási ideje nem mindig esik egybe. Ez a munkaterhek egyenetlen eloszlásához vezethet a munkavállalói szálak között, és befolyásolhatja a hatékonyságot. A folyamat megkönnyítése érdekében használjon olyan feladatkezelő könyvtárakat, mint a

Miután foglalkoztunk a többszálúság elméletével, vegyünk egy gyakorlati példát - Pentium 4. Már az e processzor fejlesztési szakaszában az Intel mérnökei tovább dolgoztak a teljesítmény növelésén anélkül, hogy változtattak volna a programozási felületen. Öt legegyszerűbb módszert vettünk figyelembe:
1. Növelje az órajel frekvenciáját.
2. Két processzor elhelyezése egy mikroáramkörön.
3. Új funkcionális blokkok bevezetése.
1. A szállítószalag meghosszabbítása.
2. Többszálúság használata.
A teljesítmény javításának legnyilvánvalóbb módja az órajel növelése más paraméterek megváltoztatása nélkül. Általános szabály, hogy minden következő processzormodell valamivel magasabb órajelű, mint az előző. Sajnos az órajel-frekvencia egyenes vonalú emelkedésével a fejlesztők két problémával szembesülnek: az energiafogyasztás növekedésével (ami fontos a hordozható számítógépek és más elemekkel működő számítástechnikai eszközök esetében) és a túlmelegedéssel (ami hatékonyabb hő létrehozását igényli) mosogató).
A második módszer - két processzor elhelyezése egy mikroáramkörön - viszonylag egyszerű, de magában foglalja a mikroáramkör által elfoglalt terület megduplázását. Ha minden processzort saját gyorsítótárral látunk el, akkor a tálon lévő chipek száma a felére csökken, de ez a termelési költségek megduplázódását is jelenti. Ha mindkét processzor számára megosztja a gyorsítótárat, elkerülhető a lábnyom jelentős növekedése, de ebben az esetben újabb probléma merül fel - a processzoronkénti gyorsítótár -memória mennyisége a felére csökken, és ez elkerülhetetlenül befolyásolja a teljesítményt. Ezenkívül, bár a professzionális kiszolgálóalkalmazások képesek teljes mértékben kihasználni több processzor erőforrásait, a hagyományos asztali programoknál a belső párhuzamosság sokkal kevésbé fejlett.
Az új funkcionális blokkok bevezetése szintén nem nehéz, de itt fontos az egyensúly megteremtése. Mi értelme van egy tucat ALU blokknak, ha a mikroáramkör nem tud olyan sebességgel kiadni parancsokat a szállítószalagnak, hogy lehetővé teszi ezeknek a blokkoknak a betöltését?
A megnövelt számú lépcsős szállítószalag, amely képes a feladatokat kisebb szegmensekre osztani és rövid időn belül feldolgozni, egyrészt növeli a termelékenységet, másrészt növeli a rosszul előre jelzett átmenetek, gyorsítótár kihagyások, megszakítások negatív következményeit és egyéb események, amelyek megzavarják a normál folyamatfeldolgozási parancsokat a processzorban. Ezenkívül a kiterjesztett csővezeték lehetőségeinek teljes körű megvalósításához szükség van az órajel -frekvencia növelésére, és ez, mint tudjuk, megnövekedett energiafogyasztáshoz és hőelvezetéshez vezet.
Végül megvalósíthatja a többszálasítást. Ennek a technológiának az az előnye, hogy egy további szoftver szálat vezet be, amellyel olyan hardver erőforrásokat hozhat be, amelyek egyébként tétlenek lennének. A kísérleti vizsgálatok eredményei szerint az Intel fejlesztői azt találták, hogy a chipterület 5% -os növekedése, ha sok alkalmazásnál többszálúságot hajtanak végre, 25% -os teljesítménynövekedést eredményez. Az első Intel processzor, amely támogatta a többszálasítást, a 2002 -es Xeon volt. Ezt követően, a 3,06 GHz -es frekvenciaváltástól kezdve a többszálú bevezetést a Pentium 4 vonalába vezették be.
A hiperszálazás alapelve két szoftver szál (vagy folyamat - egyidejű végrehajtása - a processzor nem tesz különbséget folyamatok és szoftver szálak) egyidejű végrehajtása. Az operációs rendszer fontolóra veszi a hiperszámozást Pentium processzor 4 kettős processzoros komplexumként, megosztott gyorsítótárakkal és fő memóriával. Az operációs rendszer külön -külön végzi el az ütemezést minden programszálra. Így két alkalmazás futhat egyszerre. Például, levelező programüzeneteket küldhet vagy fogadhat háttér míg a felhasználó interakcióba lép az interaktív alkalmazással - vagyis a démon és a felhasználói program egyidejűleg fut, mintha két processzor állna a rendszer rendelkezésére.
Azok az alkalmazásprogramok, amelyek több programszálként is futtathatók, mindkét "virtuális processzort" használhatják. Például a videószerkesztő programok általában lehetővé teszik a felhasználók számára, hogy szűrőket alkalmazzanak minden képkockára. Ezek a szűrők beállítják a keretek fényerejét, kontrasztját, színegyensúlyát és egyéb tulajdonságait. Ilyen helyzetben a program egy virtuális processzort rendelhet páros képkockák feldolgozásához, egy másikat pedig páratlan képkockák feldolgozásához. Ebben az esetben a két processzor egymástól teljesen függetlenül fog működni.
Mivel a szoftver szálak ugyanazokhoz a hardver erőforrásokhoz férnek hozzá, e szálak összehangolása szükséges. A Hyperthreading összefüggésében az Intel négy hasznos stratégiát azonosított az erőforrás -megosztás kezelésére: erőforrás -duplikáció, valamint kemény, küszöbértékű és teljes erőforrás -megosztás. Nézzük meg ezeket a stratégiákat.
Kezdjük az erőforrások megkettőzésével. Mint tudják, egyes erőforrások megkettőződnek a programfolyamatok szervezése céljából. Például, mivel minden programszál egyéni vezérlést igényel, szükség van egy második utasításszámlálóra. Ezenkívül be kell írni egy második táblázatot az építészeti regiszterek (EAX, EBX stb.) Fizikai nyilvántartásokhoz való hozzárendeléséhez; Hasonlóképpen, a megszakításvezérlő megismétlődik, mivel az egyes szálak megszakításának kezelése egyenként történik.
A következő a technika kemény megosztottság erőforrások (megosztott erőforrás -megosztás) a programfolyamok között. Például, ha a processzor sorban áll a folyamat két funkcionális szakasza között, akkor a rések fele az 1. szálnak, a másik fele a 2. szálnak adható. Az erőforrások megosztása könnyen megvalósítható, nem vezet egyensúlyhiányhoz és biztosítja a programszálak teljes függetlenségét egymástól. Az összes erőforrás teljes megosztásával egy processzor valójában ketté válik. Másrészt előfordulhat olyan helyzet, hogy az egyik programszál nem használ erőforrásokat, amelyek hasznosak lehetnek a második szál számára, de amelyekhez nincs hozzáférési jogosultsága. Ennek eredményeként az egyébként felhasználható erőforrások tétlenek.
A kemény megosztás ellentéte a teljes erőforrás -megosztás. Ebben a sémában bármely programszál hozzáférhet a szükséges erőforrásokhoz, és a kiszolgálás a hozzáférési kérelmek fogadásának sorrendjében történik. Tekintsünk egy olyan helyzetet, amikor egy gyors összefolyás, amely elsősorban összeadásból és kivonásból áll, együtt él egy lassú folyammal, amely végrehajtja a szorzási és osztási műveleteket. Ha az utasításokat gyorsabban hívják a memóriából, mint a szorzási és osztási műveleteket, akkor a lassú szálon belül meghívott és a folyamatba sorba helyezett utasítások száma fokozatosan nő. Végül ezek a parancsok kitöltik a sort, ennek eredményeként a gyors áramlás helyhiány miatt leáll. A teljes erőforrás -megosztás megoldja a közös erőforrások nem optimális felhasználásának problémáját, de kiegyensúlyozatlanságot okoz a fogyasztásban - az egyik szál lelassíthatja vagy megállíthatja a másikat.
A közbenső rendszert a küszöbértékű erőforrás -megosztás keretében valósítják meg. E séma szerint bármely programszál dinamikusan megszerezhet bizonyos (korlátozott) mennyiségű erőforrást. Ha a replikált erőforrásokra alkalmazzák, ez a megközelítés rugalmasságot biztosít anélkül, hogy leállna a fenyegetés az egyik programszálban, mivel nem tud forrásokat beszerezni. Ha például megtiltja, hogy mindegyik szál elfoglalja a parancssor több mint 3/4 -ét, akkor a lassú szál megnövekedett erőforrás -fogyasztása nem akadályozza meg a gyors végrehajtását.
A Pentium 4 hiperszálas modell különböző erőforrás-megosztási stratégiákat egyesít. Így az egyes stratégiákkal kapcsolatos összes problémát megpróbálják megoldani. A többszörözést olyan erőforrásokkal kapcsolatban hajtják végre, amelyeket mindkét programszál folyamatosan igényel (különösen az utasításszámláló, a regiszterleképezési táblázat és a megszakításvezérlő vonatkozásában). Ezen erőforrások megkettőzése csak 5% -kal növeli a mikroáramkör területét - egyetértek, meglehetősen elfogadható ár a többszálas. Az erőforrásokat, amelyek olyan kötetben állnak rendelkezésre, hogy gyakorlatilag lehetetlen őket egyetlen szállal rögzíteni (például gyorsítótár -sorok), dinamikusan osztják ki. A folyamat működését vezérlő erőforrásokhoz (különösen a számos sorhoz) való hozzáférés megosztott - a rések fele minden programszálhoz van rendelve. Ábrán látható a Pentium 4 Netburst architektúra fővezetéke. 8,7; ezen az illusztráción a fehér és szürke területek az erőforrás -allokációs mechanizmust képviselik a fehér és a szürke programfolyamok között.
Amint láthatja, ezen az ábrán az összes sor elkülönül - minden programszálhoz a helyek fele tartozik. Egyik szál sem korlátozhatja a másik munkáját. Az elosztási és helyettesítési blokk is fel van osztva. Az ütemező erőforrásait dinamikusan, de bizonyos küszöbértékek alapján osztják meg, így egyetlen szál sem tudja elfoglalni a sor összes helyét. A szállítószalag minden más szakaszában teljes elválasztás történik.
A többszálúság azonban nem ilyen egyszerű. Még ennek a progresszív technikának is vannak hátrányai. A merev erőforrás -megosztás nem jár jelentős költségekkel, de a dinamikus particionálás, különösen a küszöbértékek tekintetében, megköveteli az erőforrás -fogyasztás nyomon követését futásidőben. Ezenkívül bizonyos esetekben a programok lényegesen jobban teljesítenek többszálúság nélkül, mint vele. Tegyük fel például, hogy ha két szállal rendelkezik, mindegyikhez a gyorsítótár 3/4 -e szükséges a megfelelő működéshez. Ha sorra hajtanák végre őket, mindegyik elegendő hatékonyságot mutatna kis számú gyorsítótár -kihagyással (mint tudják, többletköltségekkel járnak). Párhuzamos végrehajtás esetén mindegyiknek lényegesen több cache kihagyása lenne, és a végeredmény rosszabb lenne, mint többszálúság nélkül.
További információ a RepPit 4 többszálú mechanizmusáról a.

Miután foglalkoztunk a többszálúság elméletével, vegyünk egy gyakorlati példát - Pentium 4. Már az e processzor fejlesztési szakaszában az Intel mérnökei tovább dolgoztak a teljesítmény növelésén anélkül, hogy változtattak volna a programozási felületen. Öt legegyszerűbb módszert vettünk figyelembe:

Az órajel gyakoriságának növelése;

Két processzor elhelyezése egy mikroáramkörön;

Új funkcionális blokkok bevezetése;

A szállítószalag meghosszabbítása;

A multithreading használata.

A teljesítmény javításának legnyilvánvalóbb módja az órajel növelése más paraméterek megváltoztatása nélkül. Általános szabály, hogy minden következő processzormodell valamivel magasabb órajelű, mint az előző. Sajnos az órajel-frekvencia egyenes vonalú emelkedésével a fejlesztők két problémával szembesülnek: az energiafogyasztás növekedésével (ami fontos a hordozható számítógépek és más elemekkel működő számítástechnikai eszközök esetében) és a túlmelegedéssel (ami hatékonyabb hő létrehozását igényli) mosogató).

A második módszer - két processzor elhelyezése egy mikroáramkörön - viszonylag egyszerű, de magában foglalja a mikroáramkör által elfoglalt terület megduplázását. Ha minden processzort saját gyorsítótárral látunk el, akkor a tálon lévő chipek száma a felére csökken, de ez a termelési költségek megduplázódását is jelenti. Ha mindkét processzor számára megosztja a gyorsítótárat, elkerülhető a lábnyom jelentős növekedése, de ebben az esetben újabb probléma merül fel - a processzoronkénti gyorsítótár -memória mennyisége a felére csökken, és ez elkerülhetetlenül befolyásolja a teljesítményt. Ezenkívül, bár a professzionális kiszolgálóalkalmazások képesek teljes mértékben kihasználni több processzor erőforrásait, a hagyományos asztali programoknál a belső párhuzamosság sokkal kevésbé fejlett.

Az új funkcionális blokkok bevezetése szintén nem nehéz, de itt fontos az egyensúly megteremtése. Mi értelme van egy tucat ALU blokknak, ha a mikroáramkör nem tud olyan sebességgel kiadni parancsokat a szállítószalagnak, hogy lehetővé teszi ezeknek a blokkoknak a betöltését?

A megnövelt számú lépcsős szállítószalag, amely képes a feladatokat kisebb szegmensekre osztani és rövid időn belül feldolgozni, egyrészt növeli a termelékenységet, másrészt növeli a rosszul előre jelzett átmenetek, gyorsítótár kihagyások, megszakítások negatív következményeit és egyéb események, amelyek megzavarják a normál folyamatfeldolgozási parancsokat a processzorban. Ezenkívül a kiterjesztett csővezeték lehetőségeinek teljes körű megvalósításához szükség van az órajel -frekvencia növelésére, és ez, mint tudjuk, megnövekedett energiafogyasztáshoz és hőelvezetéshez vezet.

Végül megvalósíthatja a többszálasítást. Ennek a technológiának az az előnye, hogy egy további szoftver szálat vezet be, amellyel olyan hardver erőforrásokat hozhat be, amelyek egyébként tétlenek lennének. A kísérleti tanulmányok eredményei szerint az Intel fejlesztői azt találták, hogy a chipterület 5% -os növekedése, amikor sok alkalmazásnál többszálúságot hajt végre, 25% -os teljesítménynövekedést eredményez. Az első Intel processzor, amely támogatta a többszálasítást, a 2002 -es Heon volt. Ezt követően, a 3,06 GHz -es frekvenciaváltástól kezdve a többszálú bevezetést a Pentium 4 vonalába vezették be.

Bevezetés. A számítástechnika gyorsan fejlődik. A számítástechnikai eszközök egyre erősebbek, kompaktabbak és kényelmesebbek, de az utóbbi időben az eszközök teljesítményének javítása nagy problémává vált. 1965 -ben Gordon Moore (az Intel egyik alapítója) arra a következtetésre jutott, hogy "az integrált áramköri chipre helyezett tranzisztorok száma 24 havonta megduplázódik".

Az első fejlesztések a többprocesszoros rendszerek létrehozása területén a 70 -es években kezdődtek. Hosszú ideig a hagyományos egymagos processzorok teljesítménye az órajel gyakoriságának növelésével nőtt (a teljesítmény akár 80% -át is csak az óra frekvenciája határozta meg), miközben a chipen lévő tranzisztorok egyidejűleg növekedtek. A fizika alapvető törvényei leállították ezt a folyamatot: a chipek túlmelegedni kezdtek, a technológiai pedig közelíteni kezdett a szilícium atomok méretéhez. Mindezek a tényezők ahhoz vezettek, hogy:

  • a szivárgási áramok megnövekedtek, aminek következtében megnőtt a hőtermelés és az energiafogyasztás.
  • a processzor sokkal "gyorsabb" lett, mint a memória. A teljesítmény romlott a RAM -hoz való hozzáférés késleltetése és az adatok gyorsítótárba való betöltése miatt.
  • van olyan, hogy "von Neumann szűk keresztmetszet". Ez azt jelenti, hogy a processzor architektúrája nem hatékony, amikor végrehajt egy programot.

A többprocesszoros rendszereket (mint a probléma megoldásának egyik módját) nem használták széles körben, mivel költséges és nehezen gyártható többprocesszoros rendszereket igényeltek. alaplapok... Ennek alapján a termelékenység más módon is nőtt. A többszálúság koncepciója hatékonynak bizonyult - több parancsfolyam egyidejű feldolgozása.

Hyper-Threading Technology (HTT) vagy Hyper-Threading Technology, amely lehetővé teszi a processzor számára, hogy több szálat futtasson egyetlen magon. Számos szakértő szerint a HTT vált a többmagos processzorok létrehozásának előfeltételévé. Azokat a processzorokat, amelyek egyszerre több szálat hajtanak végre, szálszintű párhuzamosságnak (TLP-szálszintű párhuzamosság) nevezzük.

A többmagos processzorban rejlő lehetőségek kiaknázásához a futtatható programnak minden számítási magot fel kell használnia, ami nem mindig érhető el. A régi szekvenciális programok, amelyek csak egy magot használhatnak, már nem fognak gyorsabban futni az új generációs processzorokon, ezért a programozók egyre inkább részt vesznek az új mikroprocesszorok fejlesztésében.

1. Általános fogalmak

Az építészet a legtágabb értelemben egy összetett rendszer leírása, amely sok elemből áll.

A fejlesztés során a félvezető szerkezetek (mikroáramkörök) fejlődnek, ezért az építési processzorok elvei, összetételükben lévő elemek száma, kölcsönhatásuk megszervezésének módja folyamatosan változnak. Így az azonos tervezési alapelvekkel rendelkező CPU -kat általában azonos architektúrájú processzoroknak nevezik. És ezeket az elveket processzor -architektúrának (vagy mikroarchitektúrának) nevezik.

A mikroprocesszor (vagy processzor) a számítógép fő alkotóeleme. Feldolgozza az információkat, futtat programokat és vezérli a rendszer többi eszközét. A programok gyors futása a processzor teljesítményétől függ.

A mag bármely mikroprocesszor gerincét képezi. Több millió tranzisztorból áll, amelyek szilícium chipen helyezkednek el. A mikroprocesszor speciális cellákra van osztva, amelyeket regisztereknek neveznek Általános rendeltetésű(RON) A processzor munkája általában abból áll, hogy utasításokat és adatokat kér le a memóriából egy bizonyos sorrendben, és végrehajtja azokat. Ezenkívül a számítógép sebességének növelése érdekében a mikroprocesszor belső gyorsítótárral van felszerelve. A cache memória az belső emlékezet pufferként használt processzor (a RAM -val folytatott kommunikáció megszakadása elleni védelem).

Az IBM -kompatibilis számítógépekben használt Intel processzorok több mint ezer utasítással rendelkeznek, és kiterjesztett utasításkészlettel rendelkező processzoroknak nevezik őket - CISC -processzorok (CISC - Complex Instruction Set Computing).

1.1 Nagy teljesítményű számítástechnika. Párhuzamosság

A számítástechnika fejlődésének üteme könnyen nyomon követhető: az ENIAC-tól (az első általános digitális számítógép), amely több ezer műveletet tesz lehetővé másodpercenként, a Tianhe-2 szuperszámítógépig (1000 billió lebegőpontos művelet másodpercenként). Ez azt jelenti, hogy a számítás sebessége ezermilliárdszorosára nőtt 60 év alatt. A nagy teljesítményű számítási rendszerek létrehozása az egyik legnehezebb tudományos és műszaki probléma. Tekintettel arra, hogy a számítások sebessége technikai eszközök csak néhány milliószor nőtt, a számítástechnika teljes sebessége ezermilliárdszorosára nőtt. Ez a hatás a párhuzamosságnak a számítás minden szakaszában történő alkalmazása miatt érhető el. A párhuzamos számítástechnika megköveteli a racionális memóriaelosztás keresését, az információátvitel megbízható módjait és a számítási folyamatok összehangolását.

1.2 Szimmetrikus többfeldolgozás

A szimmetrikus többprocesszoros (rövidített SMP) vagy szimmetrikus többfeldolgozás a többprocesszoros rendszerek speciális architektúrája, amelyben több processzor fér hozzá a megosztott memóriához. Ez egy nagyon gyakori architektúra, amelyet az utóbbi időben meglehetősen széles körben használnak.

Az SMP használatakor egyszerre több processzor dolgozik a számítógépen, mindegyik saját feladatával. A kiváló minőségű operációs rendszerrel rendelkező SMP rendszer racionálisan osztja el a feladatokat a processzorok között, egyenletes terhelést biztosítva mindegyiknek. A memóriahozzáféréssel azonban gond van, mert ehhez még az egyprocesszoros rendszerek is viszonylag sok időt vesznek igénybe. Így a RAM -hoz való hozzáférés az SMP -ben sorrendben történik: először az egyik processzor, majd a második.

A fent felsorolt ​​jellemzők miatt az SMP rendszereket kizárólag a tudományos területen, az iparban, az üzleti életben és rendkívül ritkán használják munkahelyeken. A hardver megvalósításának magas költségei mellett az ilyen rendszerekhez nagyon drága és kiváló minőségű szoftverre van szükség, amely többszálas feladatok végrehajtását biztosítja. Rendszeres programok (játékok, szövegszerkesztők) nem fog hatékonyan működni az SMP rendszerekben, mivel nem biztosítanak ilyen mértékű párhuzamosságot. Ha bármilyen programot adaptál egy SMP rendszerhez, akkor rendkívül nem lesz hatékony az egyprocesszoros rendszereken való munka, ami azt eredményezi, hogy ugyanazon program több verzióját kell létrehozni a különböző rendszerekhez. Kivételt képez például az ABLETON LIVE program (zene létrehozására és Dj-szettek előkészítésére), amely támogatja a többprocesszoros rendszereket. Ha egy normál programot többprocesszoros rendszeren futtat, akkor is egy kicsit gyorsabban fog futni, mint egy egyprocesszoros rendszeren. Ennek oka az úgynevezett hardver megszakítás (a program leállítása a rendszermag általi feldolgozásra), amelyet egy másik szabad processzor hajt végre.

Az SMP rendszer (mint bármely más, párhuzamos számításon alapuló rendszer) fokozott követelményeket támaszt az ilyen memóriaparaméterekkel, például a memóriabusz sávszélességével szemben. Ez gyakran korlátozza a processzorok számát a rendszerben (a modern SMP rendszerek 16 processzorig hatékonyan működnek).

Mivel a processzorok megosztott memóriával rendelkeznek, szükség van annak ésszerű használatára és az adatok koordinálására. Egy többprocesszoros rendszerben kiderül, hogy több gyorsítótár működik egy megosztott memória erőforrásnál. A gyorsítótár -koherencia egy gyorsítótár -tulajdonság, amely biztosítja a megosztott erőforrás egyes gyorsítótáraiban tárolt adatok integritását. Ez a koncepció- a memóriakoherencia fogalmának egy speciális esete, ahol több mag fér hozzá a megosztott memóriához (mindennapos a modern többmagos rendszerekben). Ha ezeket a fogalmakat általánosságban írjuk le, a kép a következő lesz: ugyanaz az adatblokk tölthető be különböző gyorsítótárakba, ahol az adatokat különböző módon dolgozzák fel.

Ha nem használ semmilyen adatmódosítási értesítést, akkor hiba lép fel. A gyorsítótár -koherencia célja az ilyen konfliktusok feloldása és az adatok konzisztenciájának fenntartása a gyorsítótárakban.

Az SMP rendszerek a Flynn számítástechnikai rendszerek osztályozásának MIMD (multi-instruction multi data) alcsoportja (a Stanford Egyetem professzora, a Palyn Associates társalapítója). E besorolás szerint szinte minden párhuzamos rendszer típusa MIMD -nek minősíthető.

A többprocesszoros rendszerek típusokra való felosztása a memóriahasználat elve szerinti felosztás alapján történik. Ez a megközelítés lehetővé tette a következő fontos típusok megkülönböztetését

többprocesszoros rendszerek - multiprocesszorok (többprocesszoros rendszerek megosztott megosztott memóriával) és multicomputers (külön memóriával rendelkező rendszerek). A párhuzamos számítástechnikában használt megosztott adatok szinkronizálást igényelnek. Az adatok szinkronizálásának feladata az egyik legfontosabb probléma, és annak megoldása a többprocesszoros és többmagos fejlesztésben, és ennek megfelelően a szükséges szoftver a mérnökök és programozók prioritása. Az adatok megosztása a memória fizikai lefoglalásával történhet. Ezt a megközelítést nevezik nem egységes memóriahozzáférésnek (NUMA).

Ezek a rendszerek a következők:

  • Rendszerek, ahol csak az egyes processzor-gyorsítótárakat használják az adatok bemutatására (csak gyorsítótár-memória architektúra).
  • Rendszerek, amelyek a helyi gyorsítótárak koherenciáját biztosítják a különböző processzorok számára (gyorsítótár-koherens NUMA).
  • Rendszerek, amelyek megosztott hozzáféréssel rendelkeznek az egyes processzormemóriákhoz a gyorsítótár nélküli koherens NUMA hardver megvalósítása nélkül.

A többprocesszoros rendszerek létrehozásának problémáját egyszerűsítik az osztott megosztott memória használatával, de ez a módszer a párhuzamos programozás összetettségének észrevehető megnövekedéséhez vezet.

1.3 Egyidejű többszálúság

A szimmetrikus többfeldolgozás fenti hátrányai alapján a teljesítmény javításának más módjait is érdemes fejleszteni és fejleszteni. Ha elemzi a processzor egyes tranzisztorainak munkáját, akkor nagyon figyelni tud Érdekes tény- a legtöbb számítási művelet végrehajtásakor nem a processzor minden összetevője érintett (a legújabb tanulmányok szerint az összes tranzisztor körülbelül 30% -a). Így ha a processzor mondjuk egy egyszerű számtani műveletet hajt végre, akkor a processzor nagy része tétlen, ezért más számításokhoz is használható. Tehát, ha abban a pillanatban a processzor valós műveleteket hajt végre, akkor egy egész számtani műveletet lehet betölteni a szabad részbe. A processzor terhelésének növelése érdekében létrehozhat műveletek spekulatív (vagy előrejelző) végrehajtását, ami sok bonyolultságot igényel a processzor hardver logikájában. Ha előre definiál a programban szálakat (parancssorokat), amelyek egymástól függetlenül is végrehajthatók, akkor ez jelentősen leegyszerűsíti a feladatot (ez a módszer könnyen megvalósítható hardver szinten). Ezt az elképzelést, amely Dean Tulsené (ő fejlesztette ki 1955-ben a Washingtoni Egyetemen), szimultán többszálúságnak nevezik. Később az Intel fejlesztette hyper threading néven. Így egyetlen, több szálat végrehajtó processzort észlel az operációs rendszer. Windows rendszer mint a több processzor. Ennek a technológiának a használata ismét megfelelő szintű szoftvert igényel. A többszálas technológia maximális hatása körülbelül 30%.

1.4 Többmagos

A többszálú technológia a többmagos szoftver implementációja. A teljesítmény további növelése, mint mindig, a processzor hardverének megváltoztatását igényli. A rendszerek és architektúrák komplikációja nem mindig hatékony. Ezzel ellentétes vélemény van: „minden ötletes egyszerű!”. Valójában a processzor teljesítményének növelése érdekében egyáltalán nem szükséges növelni az órajel frekvenciáját, megnehezíteni a logikai és hardveres összetevőket, mivel elég csak a meglévő technológia racionalizálása és finomítása. Ez a módszer nagyon előnyös - nincs szükség a processzor hőelvezetésének növelésének problémájának megoldására, új drága berendezések fejlesztésére a mikroáramkörök előállításához. Ezt a megközelítést a többmagos technológia keretében hajtották végre - több számítási mag megvalósítása egyetlen kristályon. Ha az eredeti processzort vesszük és összehasonlítjuk a teljesítménynövekedést a teljesítmény javításának több módszerének megvalósításakor, akkor nyilvánvaló, hogy a többmagos technológia használata a legjobb megoldás.

Ha összehasonlítjuk a szimmetrikus többprocesszor és a többmagos architektúrát, akkor szinte azonosak lesznek. Az alapvető gyorsítótár többszintű lehet (helyi és megosztott, és a RAM -ból származó adatok közvetlenül betölthetők az L2 gyorsítótárba). A többmagos processzor architektúra megfontolt előnyei alapján a gyártók erre összpontosítanak. Ez a technológia meglehetősen olcsónak és univerzálisnak bizonyult, ami lehetővé tette, hogy széles piacra vigyük. Ezenkívül ez az architektúra saját kiigazításokat hajtott végre Moore törvényében: "a processzorban a számítási magok száma 18 havonta megduplázódik".

Ha megnézzük a modern számítógépes hardverpiacot, láthatjuk, hogy a négy- és nyolcmagos processzorral rendelkező eszközök dominálnak. Ezenkívül a processzorgyártók azt állítják, hogy hamarosan több száz processzormagot tartalmazó processzorok kerülnek a piacra. Amint már sokszor elhangzott, a többmagos architektúra teljes potenciálja csak kiváló minőségű szoftverrel tárul fel. Így a számítógépes hardver és szoftver gyártási területe nagyon szorosan összefügg.