A HTG elmagyarázza, hogyan működik a CPU?
A legtöbb dolog egy számítógépen viszonylag egyszerű megérteni: a RAM, a tároló, a perifériák és a szoftver együttesen működnek a számítógép működéséhez. De a rendszer szíve, a CPU, mágikusnak tűnik még sok tech embernek is. Itt mindent megteszünk, hogy lebontjuk.
Ennek a cikknek a legtöbb kutatása a J. Clark Scott „De hogyan tudom?” Című cikkéből származik. Ez egy fantasztikus olvasás, sokkal mélyebbre megy, mint ez a cikk, és megéri az Amazon néhány párját.
Egy megjegyzés, mielőtt elkezdenénk: a modern CPU-k összetettebbek, mint itt. Szinte lehetetlen, hogy egy személy megértsék a chip több árnyalatait több mint egymilliárd tranzisztorral. Azonban az alapelvek, hogy hogyan illeszkednek egymáshoz, ugyanazok maradnak, és az alapok megértése jobban megérti a modern rendszereket..
Kicsi indítás
A számítógépek binárisan működnek. Csak két állapotot értenek: be és ki. A bináris számítások elvégzéséhez a tranzisztornak nevezik. A tranzisztor csak akkor engedélyezi a forrásáramot, hogy átfolyjon rajta a csatornába, ha a kapun keresztül áram van. Ez lényegében egy bináris kapcsolót képez, amely egy második bemeneti jeltől függően levágja a vezetéket.
A modern számítógépek a számítások elvégzéséhez milliárd tranzisztorokat használnak, de a legalacsonyabb szinten csak egy maroknyi szükséges, hogy a legalapvetőbb alkotóelemeket hozza létre..
Logikai kapuk
Verem meg néhány tranzisztort megfelelően, és van egy logikai kapu. A logikai kapuk két bináris bemenetet vesznek fel, műveletet hajtanak végre rajtuk, és visszaadnak egy kimenetet. Például az OR kapu igaz, ha bármelyik bemenet igaz. Az AND-kapu ellenőrzi, hogy mindkét bemenet igaz-e, az XOR ellenőrzi, hogy csak az egyik bemenet igaz-e, és az N-variánsok (NOR, NAND és XNOR) az alapkapuk fordított változatai..
Matematika a kapukkal
Mindössze két kapu segítségével elvégezheti az alapvető bináris hozzáadást. A fenti ábra a Logicly használatával létrehozott, logikai kapuk ingyenes online játszóterét mutatja. Az XOR kapu itt bekapcsol, ha csak egy bemenet van bekapcsolva, de nem mindkettő. Az AND-kapu akkor kapcsol be, ha mindkét bemenet be van kapcsolva, de maradjon ki, ha nincs bemenet. Tehát, ha mindkettő be van kapcsolva, az XOR kikapcsol, és az AND kapu bekapcsol, és két helyes választ kap:
Ez egy egyszerű beállítást tesz lehetővé, három különböző kimenettel: nulla, egy és kettő. De egy kicsit nem lehet 1-nél magasabbat tárolni, és ez a gép nem túl hasznos, mivel csak a lehető legegyszerűbb matematikai problémák egyikét oldja meg. De ez csak egy féladagoló, és ha kettőt kettővel egy másik bemenettel csatlakoztat, akkor egy teljes összegzőt kap:
A teljes összeadónak három bemenete van: a két szám hozzáadható, és egy „hordozó”. A hordozó akkor használható, ha a végső szám meghaladja az egyetlen bitben tárolható számot. A teljes adók egy láncban lesznek összekapcsolva, és a hordozást egy összegzőről a másikra továbbítják. A hordozó a XOR-kapu eredményéhez hozzáadódik az első félidőben, és van egy extra VAGY-kapu mindkét eset kezelésére, amikor az így szükségesnek kell lennie.
Ha mindkét bemenet be van kapcsolva, a hordozó bekapcsol, és elküldi a lánc következő teljes feltöltőjének:
És ez olyan bonyolult, mint a hozzáadás. A több bitre való áttérés lényegében csak több teljes adót jelent egy hosszabb láncban.
A legtöbb más matematikai művelet kiegészítéssel is elvégezhető; a szorzás csak ismétlődik, a kivonás elvégezhető néhány apró inverzióval, és az osztás csak ismételt kivonás. És bár a modern számítógépek hardver alapú megoldásait bonyolítja le a bonyolultabb műveletek, technikailag mindent megtehet a teljes kiegészítéssel.
A busz és a memória
Most számítógépünk nem más, mint egy rossz számológép. Ez azért van, mert nem emlékszik semmire, és nem tesz semmit a kimeneteivel. A fentiekben látható egy memóriacella, amely mindezt megteheti. A motorháztető alatt sok NAND kaput használ, és a valóságban a tárolási technikától függően egészen más lehet, de funkciója azonos. Bizonyos bemeneteket ad meg, kapcsolja be az "írás" bitet, és tárolja a bemeneteket a cellában. Ez nem csak egy memóriacellák, hiszen szükségünk van arra is, hogy olvassuk el az információkat. Ezt egy olyan eszközzel hajtjuk végre, amely a memóriában lévő minden egyes bithez tartozó AND-kapu gyűjteménye, amely mindegyikhez egy másik bemenethez van kötve, az „olvasott” bithez. Az írási és olvasási biteket gyakran „set” és „enable” néven is nevezik.
Ez az egész csomag a nyilvántartásba került. Ezek a regiszterek csatlakoznak a buszhoz, amely az egész rendszer körül futó huzalköteg, amely minden komponenshez kapcsolódik. Még a modern számítógépek is rendelkeznek busszal, bár több busz is lehet, hogy javítsa a többfeladatos teljesítményt.
Minden regiszternek még van írási és olvasási bitje, de ebben a beállításban a bemenet és a kimenet ugyanaz. Ez tényleg jó. Például. Ha az R1 tartalmát át szeretné másolni R2-be, bekapcsolná az R1 olvasási bitjét, amely az R1 tartalmát a buszra tolja. Míg az olvasás bit be van kapcsolva, akkor bekapcsolja az R2 írási bitjét, amely átmásolja a busz tartalmát R2-be.
A regiszterek a RAM-ot is használják. A RAM-ot gyakran rácsba helyezik, és a vezetékek két irányban haladnak:
A dekóderek bináris bemenetet kapnak, és bekapcsolják a megfelelő számozott vezetéket. Például a „11” 3 a bináris, a legmagasabb 2-bites szám, így a dekóder bekapcsolja a legmagasabb vezetéket. Minden kereszteződésnél van egy regiszter. Mindezek a központi buszhoz és egy központi írási és olvasási bemenethez csatlakoznak. Mind az olvasási, mind az írási bemenet csak akkor fog bekapcsolódni, ha a regiszteren áthaladó két vezeték is be van kapcsolva, így lehetővé teszi, hogy kiválassza a regisztert, ahonnan írni és olvasni. Ismét a modern RAM sokkal bonyolultabb, de ez a beállítás még mindig működik.
Az óra, a Stepper és a dekóder
A nyilvántartásokat mindenütt használják, és az alapvető eszköz az adatok mozgatásához és az adatok CPU-ban való tárolásához. Tehát mi azt mondja nekik, hogy mozogjanak körül?
Az óra az első komponens a CPU magjában, és kikapcsolt állapotban, egy hertzben vagy másodpercenkénti ciklusban meghatározott időközönként kikapcsol. Ez a sebesség látható a CPU-k mellett; egy 5 GHz-es chip képes végrehajtani 5 milliárd ciklust másodpercenként. Az óra sebessége gyakran nagyon jó metrika a CPU gyorsaságához.
Az órának három különböző állapota van: az alapóra, az engedélyező óra és a beállított óra. Az alapóra fél ciklusra bekapcsol, és a másik felére kikapcsol. Az engedélyezési órát a regiszterek bekapcsolásához használják, és hosszabb ideig be kell kapcsolniuk, hogy az adatok engedélyezve legyenek. A beállított órának mindig be kell kapcsolnia az engedélyező órával, vagy pedig hibás adatok írhatók.
Az óra csatlakoztatva van a stepperhez, amely egytől a max lépésig számít, és visszaállítja magát az egyikre, ha kész. Az órát az egyes regiszterek és a CPU által írt összes regiszterhez tartozó AND kapukhoz is csatlakoztatják:
Ezek az AND kapuk egy másik komponens, az utasítás dekóder kimenetéhez is kapcsolódnak. Az utasítás dekóder olyan utasítást kap, mint a „SET R2 TO R1”, és dekódolja azt a CPU által megérteni. Saját belső nyilvántartása van, az úgynevezett „Utasítás-nyilvántartás”, amely az aktuális művelet helye. Pontosan ez hogyan megy le a futó rendszerhez, de ha dekódol, akkor bekapcsolja a helyes beállítást, és engedélyezi a helyes regiszterek bitjeit, amelyek az óra szerint kialszik..
A program utasításai RAM-ban (vagy L1 gyorsítótárban vannak a modern rendszereken, közelebb a CPU-hoz). Mivel a programadatok a regiszterekben tárolódnak, mint minden más változó, a repülésen manipulálható, hogy ugorjon a program körül. Így kapják meg a programok struktúráját, hurkokkal és állításokkal. Az ugrás utasítás beállítja a memóriában lévő aktuális helyet, amelyet az utasítás dekóder más helyről olvas.
Hogyan jön együtt
Most, a bruttó túlzott egyszerűsítése, hogy egy CPU működik, befejeződött. A fő busz az egész rendszert lefedi, és csatlakozik az összes regiszterhez. A teljes adalékok, valamint egy csomó más művelet, az aritmetikai logikai egységbe vagy az ALU-ba vannak csomagolva. Ez az ALU csatlakozik a buszhoz, és saját regiszterei is lesznek a második szám tárolására.
A számítás elvégzéséhez a programadatokat a rendszer RAM-ból töltik be a vezérlő részbe. A vezérlőszakasz két számot olvas a RAM-ból, betölti az elsőt az ALU utasításregiszterébe, majd betölti a másodikat a buszra. Közben elküldi az ALU-nak egy utasításkódot, amely elmondja, mit kell tennie. Az ALU ezután elvégzi az összes számítást és az eredményt egy másik nyilvántartásban tárolja, amelyet a CPU olvashat és folytathat a folyamatban.
Képhitel: Rost9 / Shutterstock