a korábbi tervek, például a Babbage difference engine és az 1970-es évek mainframe punch card rendszereinek hagyatékai jelentős hatással vannak a mai számítógépes rendszerekre. Az első cikk ebben a történelmi sorozat, Számítógép, történelem, modern számítógépek sysadmins, azt beszéltük meg, hogy több prekurzorok, hogy a modern számítógépes felsorolt jellemzők, amelyek meghatározzák, hogy mit nevezünk számítógép ma.,

ebben a cikkben a központi feldolgozó egységet (CPU) tárgyalom, beleértve annak összetevőit és funkcionalitását. Sok téma utal vissza az első cikkre, ezért feltétlenül olvassa el, ha még nem tette meg.

A központi feldolgozó egység (CPU)

a CPU a modern számítógépekben a Babbage difference engine “Malom” megtestesülése. A központi feldolgozó egység kifejezés a számítógépes idő ködéből származik, amikor egyetlen hatalmas szekrény tartalmazta a gép szintű program utasításainak értelmezéséhez szükséges áramkört, valamint a szolgáltatott adatokon végzett műveleteket., A központi feldolgozó egység a csatlakoztatott perifériák összes feldolgozását is elvégezte. A perifériák között voltak nyomtatók, Kártyaolvasók, valamint korai tárolóeszközök, például dob-és lemezmeghajtók. A modern perifériák maguk is jelentős mennyiségű feldolgozási energiával rendelkeznek, és bizonyos feldolgozási feladatokat ki is töltenek a CPU-ból. Ez felszabadítja a CPU-t a bemeneti / kimeneti feladatoktól úgy, hogy annak teljesítménye az adott elsődleges feladatra kerüljön.

a korai számítógépek csak egy CPU-val rendelkeztek, és egyszerre csak egy feladatot tudtak végrehajtani.,

ma megtartjuk a CPU kifejezést, de most egy tipikus alaplapon található processzorcsomagra utal. Az 1. ábra egy szabványos Intel processzorcsomagot jelenít meg.

Kép

1. Ábra: Az Intel Core i5 processzor csomag (Jud McCranie keresztül Wikimedia Commons, CC BY-SA 4.0).

itt valójában semmi más, mint maga a processzorcsomag. A processzorcsomag egy chip, amely egy fémtartályba zárt processzort(processzorokat) tartalmaz, és egy kis nyomtatott áramköri (PC) táblára van szerelve., A csomagot egyszerűen az alaplap CPU aljzatába dobják, és reteszelő karral rögzítik. A CPU hűtő csatlakozik a processzor csomag. Számos különböző fizikai aljzat létezik, amelyek meghatározott számú érintkezővel rendelkeznek,ezért elengedhetetlen a megfelelő csomag beszerzése az alaplap aljzatához, ha saját számítógépeket készít.

hogyan működik a CPU

nézzük meg részletesebben a CPU-t. A 2. ábra egy hipotetikus CPU fogalmi diagramja, így könnyebben megjelenítheti az összetevőket., A RAM és a rendszeróra azért árnyékolt, mert nem része a CPU-nak, és csak az egyértelműség kedvéért jelenik meg. Ezenkívül a CPU óra és a vezérlőegység között nincs kapcsolat a CPU komponensekkel. Elég annyit mondani, hogy az óráról és a vezérlőegységről érkező jelek minden más alkatrész szerves részét képezik.

kép

2.ábra: egy tipikus CPU egyszerűsített fogalmi diagramja.

Ez a kialakítás nem tűnik különösebben egyszerűnek, de a valóság még bonyolultabb., Ez a szám elegendő a célunkhoz anélkül, hogy túlságosan összetett lenne.

aritmetikai logikai egység

az aritmetikai logikai egység (ALU) a számítógép munkáját végző aritmetikai és logikai függvényeket hajtja végre. Az A és B regiszterek tartalmazzák a bemeneti adatokat, az akkumulátor pedig megkapja a művelet eredményét. Az utasításregiszter tartalmazza az ALU által végrehajtandó utasításokat.

például két szám hozzáadásakor az egyik szám az a regiszterbe kerül, a másik a B regiszterbe. Az ALU elvégzi a kiegészítést, majd az eredményt az akkumulátorba helyezi., Ha a művelet logikai, akkor az összehasonlítandó adatok a bemeneti regiszterekbe kerülnek. Az összehasonlítás eredménye, egy 1 vagy 0, az akkumulátorba kerül. Függetlenül attól, hogy ez logikai vagy számtani művelet, az akkumulátor tartalmát ezután a program által az eredményhez fenntartott gyorsítótár helyére helyezzük.

van egy másik típusú művelet, amelyet az ALU hajt végre. Az eredmény egy cím a memóriában, amelyet egy új hely kiszámításához használnak a memóriában a betöltési utasítások megkezdéséhez. Az eredmény az utasításmutató-regiszterbe kerül.,

Utasításregiszter és pointer

az utasításmutató megadja azt a helyet a memóriában, amely tartalmazza a CPU által végrehajtandó következő utasítást. Amikor a CPU befejezi az aktuális utasítás végrehajtását, a következő utasítás betöltődik az utasításregiszterbe az utasításmutató által mutatott memóriahelyről.

Miután az utasítás betöltődik az utasításregiszterbe, az utasításregiszter mutatót egy utasításcím növeli. A növekmény lehetővé teszi, hogy készen álljon a következő utasítás áthelyezésére az utasításregiszterbe.,

gyorsítótár

a CPU soha nem fér hozzá közvetlenül a RAM-hoz. A Modern CPU-knak van egy vagy több gyorsítótár-rétege. A CPU számítási képessége sokkal gyorsabb, mint a RAM azon képessége, hogy adatokat szolgáltasson a CPU-nak. Ennek okai nem tartoznak e cikk hatálya alá, de a következő cikkben tovább fogom vizsgálni.

Cache memória gyorsabb, mint a rendszer RAM, és közelebb van a CPU, mert a processzor chip. A gyorsítótár adattárolást és utasításokat biztosít annak megakadályozására, hogy a CPU arra várjon, hogy az adatok lekerüljenek a RAM-ból., Amikor a CPU-nak adatokra van szüksége—és a program utasításait is adatnak kell tekinteni—, a gyorsítótár meghatározza, hogy az adatok már a CPU-nak vannak-e tárolva.

Ha a kért adat nincs a gyorsítótárban, akkor a RAM-ból lekérik, és prediktív algoritmusokkal több adatot mozgatnak a RAM-ból a gyorsítótárba. A gyorsítótár-vezérlő elemzi a kért adatokat, és megpróbálja megjósolni, hogy milyen további adatokra lesz szükség a RAM-ból. Betölti a várt adatokat a gyorsítótárba., Azáltal, hogy bizonyos adatokat a RAM-nál gyorsabb gyorsítótárban tart a CPU-hoz, a CPU elfoglalt maradhat, nem pedig az adatokra váró ciklusokat.

az egyszerű CPU-nak három gyorsítótárszintje van. A 2-es és 3-as szinteket úgy tervezték, hogy előre jelezzék, milyen adatokra és programutasításokra lesz szükség a következő lépésben, áthelyezzék ezeket az adatokat a RAM-ból, és egyre közelebb vigyék a CPU-hoz, hogy szükség esetén készen álljanak. Ezek a gyorsítótár-méretek általában 1 MB-tól 32 MB-ig terjednek, a processzor sebességétől és rendeltetésszerű használatától függően.

az 1. szintű gyorsítótár a legközelebb van a CPU-hoz. A CPU-ban kétféle L1 gyorsítótár létezik., Az L1I az utasítás gyorsítótár, az L1d pedig az adat gyorsítótár. Az 1. szintű gyorsítótár mérete általában 64 KB-tól 512 KB-ig terjed.

Memory management unit

a memory management unit (MMU) kezeli az adatáramlást a fő memória (RAM) és a CPU között. Emellett biztosítja a többfeladatos környezetben szükséges memóriavédelmet, valamint a virtuális memóriacímek és a fizikai címek közötti konverziót.

CPU óra és vezérlőegység

az összes CPU komponenst szinkronizálni kell, hogy zökkenőmentesen működjenek együtt., A vezérlőegység ezt a funkciót az órajel által meghatározott sebességgel hajtja végre, és felelős a többi egység műveleteinek irányításáért a CPU egészére kiterjedő időzítési jelek használatával.

Random access memory (RAM)

bár a RAM, vagy fő tároló, látható ez a diagram, a következő, ez nem igazán része a CPU. Feladata, hogy programokat, adatokat tároljon úgy, hogy azok készen álljanak a használatra, amikor a CPU-nak szüksége van rájuk.

hogyan működik

a CPU-k olyan cikluson dolgoznak, amelyet a vezérlőegység kezel, és amelyet a CPU óra szinkronizál., Ezt a ciklust CPU utasításciklusnak nevezzük, amely egy sor fetch / decode / execute komponensből áll. Az utasítás, amely statikus adatokat vagy mutatókat tartalmazhat változó adatokra, lekérésre kerül, majd az utasításregiszterbe kerül. Az utasítás dekódolva van, minden adat az A és B adatregiszterekbe kerül. Az utasítás az A és B regiszterek segítségével kerül végrehajtásra, az eredmény az akkumulátorba kerül. A CPU ezután növeli az utasításmutató értékét az előző hosszával, majd újra elindul.

az alapvető CPU utasításciklus így néz ki.,

Kép

3. Ábra: Az alapvető CPU utasítás ciklus.

A sebesség szükségessége

bár az alap CPU jól működik, az egyszerű cikluson futó CPU-k még hatékonyabban használhatók. Több stratégia is van a CPU teljesítményének növelésére, ezek közül kettőt itt nézünk meg.

Turbófeltöltő az utasítás ciklus

Egy probléma korai CPU tervezők találkozott volt elvesztegetett idő, a különböző CPU alkatrészek., A CPU teljesítményének javítására irányuló egyik első stratégia a CPU utasításciklusának egyes részeinek átfedése volt, hogy a CPU különböző részeit teljes mértékben kihasználhassa.

például, ha az aktuális utasítás dekódolva van, a következő lekérésre kerül, majd az utasításregiszterbe kerül. Amint ez megtörtént, az utasításmutató frissül a következő utasítás memóriacímével. Az átfedő Használati ciklusok használatát a 4. ábra szemlélteti.,

Kép

4. Ábra: A CPU utasítás ciklus átfedés.

Ez a kialakítás szépnek és simának tűnik, de az olyan tényezők, mint az I/O várakozás, megzavarhatják az áramlást. Ha nincs megfelelő adat vagy utasítás a gyorsítótárban, akkor az MMU-nak meg kell találnia a megfelelőeket, és át kell helyeznie őket a CPU-ra, ami eltarthat egy ideig. Bizonyos utasítások több CPU-ciklust is igényelnek, mint mások, ami zavarja a sima átfedést.

Mindazonáltal ez egy hatékony stratégia a CPU teljesítményének javítására.,

Hyperthreading

a CPU teljesítményének javítására irányuló másik stratégia a hyperthreading. A Hyperthreading egy processzormagot két CPU-hoz hasonlóan működtet, két adat-és utasításfolyamot biztosítva. Egy második utasításmutató és utasításregiszter hozzáadása a hipotetikus CPU-hoz, amint az az 5. ábrán látható, úgy működik, mint két CPU, két különálló utasításfolyamot hajt végre minden egyes utasításciklus során. Továbbá, amikor egy végrehajtási adatfolyam leáll, miközben várja az adatokat—ismét az utasítások is ADATOK-a második végrehajtási adatfolyam folytatja a feldolgozást., Minden mag, amely végrehajtja a hyperthreading egyenértékű két CPU annak képességét, hogy feldolgozza az utasításokat.

kép

5.ábra: a CPU fogalmi rajza a hyperthreading.

ne feledje, hogy ez egy nagyon egyszerűsített diagram és magyarázat a hipotetikus CPU. A valóság sokkal összetettebb.

több terminológia

találkoztam egy csomó különböző CPU terminológia., A terminológia egy kicsit explicitebb meghatározásához nézzük meg magát a CPU-t a lscpu parancs használatával.

a fent látható Intel processzor egy olyan csomag, amely az alaplap egyetlen aljzatába csatlakozik. A processzor csomag hat magot tartalmaz. Mindegyik mag képes hipertrófiára, így mindegyik két egyidejű szálat futtathat összesen 12 CPU-ra.

my definitions:

  • Core-a core a legkisebb fizikai hardveregység, amely képes a feldolgozás feladatának elvégzésére. Egy ALU-t és egy vagy két támogató regisztert tartalmaz., A második regiszterkészlet és a támogató áramkör lehetővé teszi a hipertrófiát. Egy vagy több magot egyetlen fizikai csomagba lehet kombinálni.
  • CPU-egy logikai hardveregység, amely képes egyetlen végrehajtási szál feldolgozására. A központi feldolgozó egység kifejezés modern használata azon szálak teljes számára utal, amelyeket egy processzorcsomag egyszerre képes végrehajtani. Az egymagos processzor, amely nem támogatja a hyperthreading-t, egyetlen CPU-nak felel meg. Ebben az esetben a CPU és a core szinonimák., Az egymagos hyperthreading processzor két CPU funkcionális megfelelője. A nyolc maggal rendelkező hyperthreading processzor 16 CPU funkcionális megfelelője.
  • csomag-a fizikai összetevő, amely egy vagy több magot tartalmaz, például a fenti 1.ábrán látható.
  • Processzor – 1) olyan eszköz, amely feldolgozza a program utasításait az adatok manipulálásához. 2) gyakran használják szinonimájaként csomag.,
  • Socket-néha a csomag másik szinonimájaként használják, de pontosabban az alaplap fizikai aljzatára utal, amelybe a processzor Csomag be van helyezve.

a socket, processor és package kifejezéseket gyakran egymással felcserélve használják, ami némi zavart okozhat. Mint a fenti lscpu parancs eredményekből kiderül, az Intel saját terminológiát biztosít nekünk, és ezt tekintem a hiteles forrásnak., A valóságban mindannyian különböző módon használjuk ezeket a kifejezéseket, de mindaddig, amíg egy adott ponton megértjük egymást, ez az, ami igazán számít.

vegye figyelembe, hogy a fenti processzornak két 1.szintű gyorsítótára van, mindegyik 512 KiB, egy az utasításokhoz (L1i), egy pedig az adatokhoz (L1d). Az 1-es szintű gyorsítótár a legközelebb áll a CPU-hoz, és gyorsítja a dolgokat, hogy az utasítások és adatok ezen a ponton elkülönüljenek. A 2-es és a 3-as szintű gyorsítótárak nagyobbak, de mindegyikben léteznek utasítások és adatok.

mit jelent mindez?

jó kérdés., A mainframes korai napjaiban minden számítógépnek csak egyetlen CPU-ja volt, és nem volt képes egynél több program egyidejű futtatására. A mainframe futtathatja a bérszámfejtést, majd a készletnyilvántartást, majd az ügyfelek számlázását stb., de egyszerre csak egy alkalmazás futhat. Minden programnak be kellett fejeznie, mielőtt a rendszerüzemeltető elindíthatja a következőt.

néhány korai próbálkozás egyszerre több program futtatására egyszerű megközelítést alkalmazott, és egyetlen CPU jobb kihasználására irányult., Például a program1-et és a program2-t betöltötték, a program1 pedig addig futott, amíg le nem blokkolták, várva, hogy az I / O bekövetkezzen. Ekkor a program2 addig futott, amíg le nem blokkolták. Ez a megközelítés az úgynevezett multi-feldolgozás, valamint segített, hogy teljes mértékben kihasználja az értékes számítógépes idő.

korai kísérletek multitasking minden részt váltás a végrehajtási összefüggésben egy CPU nagyon gyorsan között a végrehajtási folyamok több feladatot. Ez a gyakorlat nem igaz multitasking ahogy megértjük, mert a valóságban, csak egy szál végrehajtás feldolgozása egy időben. Helyesen nevezik időmegosztásnak.,

a Modern számítógépek, az intelligens óráktól és táblagépektől a szuperszámítógépekig, mind támogatják a valódi multitasking-et több CPU-val. Több CPU lehetővé teszi a számítógépek számára, hogy egyszerre több feladatot futtassanak. Minden CPU a többi CPU-val egyidejűleg végzi saját funkcióit. Egy nyolcmagos processzor hyperthreading (azaz 16 CPU) képes futtatni 16 feladatok egyszerre.

végső gondolatok

egy koncepcionalizált és egyszerűsített CPU-t néztünk meg, hogy egy kicsit megismerjük a struktúrákat. Ebben a cikkben alig fedeztem fel a processzor funkcionalitásának felületét., Többet megtudhat azáltal, hogy a beágyazott linkeket az általunk feltárt témákhoz veszi.

ne feledje, hogy a diagramok és leírások ebben a cikkben tisztán fogalmi, és nem jelentenek semmilyen tényleges CPU.

a sorozat következő részében a RAM-ot és a lemezmeghajtókat különböző típusú tárolóként tekintem meg, és miért van szükség mindegyikre a modern számítógépekhez.