HTG elmagyarázza: Hogyan működik ténylegesen a CPU?

Tartalomjegyzék:

HTG elmagyarázza: Hogyan működik ténylegesen a CPU?
HTG elmagyarázza: Hogyan működik ténylegesen a CPU?

Videó: HTG elmagyarázza: Hogyan működik ténylegesen a CPU?

Videó: HTG elmagyarázza: Hogyan működik ténylegesen a CPU?
Videó: 2.4 GHz vs 5 GHz WiFi: What is the difference? - YouTube 2024, Április
Anonim
A legtöbb dolgot a számítógép viszonylag egyszerű megérteni: a RAM, a tároló, a perifériák és a szoftver mind együtt dolgoznak, hogy számítógépes működést biztosítsanak. De a rendszered szíve, a CPU, akár mágikusnak is tűnik sok technikus számára. Itt mindent megteszünk, hogy lebontsuk.
A legtöbb dolgot a számítógép viszonylag egyszerű megérteni: a RAM, a tároló, a perifériák és a szoftver mind együtt dolgoznak, hogy számítógépes működést biztosítsanak. De a rendszered szíve, a CPU, akár mágikusnak is tűnik sok technikus számára. Itt mindent megteszünk, hogy lebontsuk.

A cikk legnagyobb része a "De How Do It Know?" Című cikkből származik J. Clark Scott. Ez egy fantasztikus olvasmány, sokkal mélyebben megy, mint ez a cikk, és megéri a pár dollárt az Amazonon.

Egy megjegyzés, mielőtt elkezdenénk: a modern CPU-k nagyságrendje sokkal összetettebb, mint amit itt vázolunk. Szinte lehetetlen, hogy egy személy megértse egy chip forgalmát több mint egy milliárd tranzisztorral. Azonban az alapelvek, hogy hogyan illeszkedik együtt, ugyanaz marad, és az alapok megértése jobb megértést nyújt a modern rendszerek számára.

Kicsi kezdő

A számítógépek binárisan működnek. Csak két államot értenek: be és ki. A bináris számítások végrehajtásához a tranzisztort nevezik. A tranzisztor csak akkor engedélyezi a forrásáram áramlását a lefolyóba, ha áram van a kapun át. Lényegében ez egy bináris kapcsolót képez, amely egy második bemeneti jel függvényében levágja a vezetéket.
A számítógépek binárisan működnek. Csak két államot értenek: be és ki. A bináris számítások végrehajtásához a tranzisztort nevezik. A tranzisztor csak akkor engedélyezi a forrásáram áramlását a lefolyóba, ha áram van a kapun át. Lényegében ez egy bináris kapcsolót képez, amely egy második bemeneti jel függvényében levágja a vezetéket.

A modern számítógépek több milliárd tranzisztort használnak a számítások elvégzéséhez, de a legalacsonyabb szinteken csak egy marékra van szükségük ahhoz, hogy a legegyszerűbb összetevőket, a kapukat nevezzék.

Logikai kapuk

Stack néhány tranzisztort megfelelően, és van, amit úgy ismernek, mint logikai kapu. A logikai kapuk két bináris bemenetet, műveletet végeznek rájuk, és visszaadják a kimenetet. Az OR kapu például igaz, ha bármelyik bemenet igaz. Az AND kapu ellenőrzi, hogy mindkét bemenet igaz-e, a XOR ellenőrzi, hogy csak az egyik bemenet igaz-e, és az N változatok (NOR, NAND és XNOR) az alapkapuk fordított változatai.
Stack néhány tranzisztort megfelelően, és van, amit úgy ismernek, mint logikai kapu. A logikai kapuk két bináris bemenetet, műveletet végeznek rájuk, és visszaadják a kimenetet. Az OR kapu például igaz, ha bármelyik bemenet igaz. Az AND kapu ellenőrzi, hogy mindkét bemenet igaz-e, a XOR ellenőrzi, hogy csak az egyik bemenet igaz-e, és az N változatok (NOR, NAND és XNOR) az alapkapuk fordított változatai.

Math a kapukkal

Image
Image

Mindössze két kaput használhatunk az alapvető bináris kiegészítéshez. Ez a fenti diagram egy fél adder-t tartalmaz, amelyet a Logicly, a logikai kapuk számára ingyenes internetes játéktér létrehozásával hoztak létre. A XOR kapu itt lesz bekapcsolva, ha csak az egyik bemenet van bekapcsolva, de nem mindkettő. Az AND kapu bekapcsol, ha mindkét bemenet be van kapcsolva, de maradjon le, ha nincs bemenet. Tehát ha mindkettő be van kapcsolva, a XOR nem működik, és az AND kapu bekapcsol, két helyes válaszra:

Ez egyszerű beállítást biztosít, három különböző kimenettel: nulla, egy és kettő. De egy bit nem tud tárolni semmi magasabb, mint 1, és ez a gép nem túl hasznos, mert csak megoldja az egyik legegyszerűbb matematikai problémák lehetséges. De ez csak egy fél adder, és ha kettőt összekapcsol egy másik bemenettel, akkor egy teljes adder:
Ez egyszerű beállítást biztosít, három különböző kimenettel: nulla, egy és kettő. De egy bit nem tud tárolni semmi magasabb, mint 1, és ez a gép nem túl hasznos, mert csak megoldja az egyik legegyszerűbb matematikai problémák lehetséges. De ez csak egy fél adder, és ha kettőt összekapcsol egy másik bemenettel, akkor egy teljes adder:
A teljes adathordozónak három bemenete van - a két szám, és a "carry". A hordozót akkor használjuk, ha a végső szám meghaladja az egyetlen bitben tárolt számot. A teljes összegzőket láncolatba kell kapcsolni, és a hordozót át kell vinni egy sorozattól a másikig. A hordozót hozzáadjuk a XOR kapu eredményéhez az első félidőben, és van egy extra OR kapu, amely mindkét esetben kezelni fogja az esetet, amikor az így kell lennie.
A teljes adathordozónak három bemenete van - a két szám, és a "carry". A hordozót akkor használjuk, ha a végső szám meghaladja az egyetlen bitben tárolt számot. A teljes összegzőket láncolatba kell kapcsolni, és a hordozót át kell vinni egy sorozattól a másikig. A hordozót hozzáadjuk a XOR kapu eredményéhez az első félidőben, és van egy extra OR kapu, amely mindkét esetben kezelni fogja az esetet, amikor az így kell lennie.

Ha mindkét bemenet be van kapcsolva, a hordozón bekapcsol, és elküldi a lánc következő teljes számlálójába:

És ez annyira bonyolult, mint a kiegészítés. A több bitre történő áthelyezés lényegében csak egy teljes hosszúságú láncban lévő teljes mennyiséget jelent.
És ez annyira bonyolult, mint a kiegészítés. A több bitre történő áthelyezés lényegében csak egy teljes hosszúságú láncban lévő teljes mennyiséget jelent.

A legtöbb más matematikai művelet elvégezhető kiegészítéssel; a szorzás csak ismétlődő hozzáadás, a kivonás bizonyos képzeletbeli inverzióval végezhető el, és a megosztás csak ismételt kivonás. És bár az összes modern számítógép hardveres megoldásokkal rendelkezik a bonyolultabb műveletek felgyorsítására, technikailag mindent megtehet a teljes adderrel.

A busz és a memória

Image
Image

Jelenleg 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 fentiek szerint egy memóriakártya, amely mindent megtesz. A kapucnival alatt sok NAND kaput használ, és a való életben a tárolási technikától függően egészen más lehet, de funkciója ugyanaz. Adsz neki néhány bemenetet, kapcsolja be a 'write' bitet, és tárolja a bemeneteket a cellában. Ez nem csak memóriacellát jelent, hiszen szükségünk van arra is, hogy információt olvassunk róla. Ezt egy olyan enablerrel végezzük, amely az összes bitnek a memóriában található AND kapui gyűjteménye, mindez egy másik bemenethez, az "olvasott" bithez kötve. Az írási és olvasási biteket gyakran "set" és "enable" is nevezik.

Ez az egész csomag be van ágyazva a regiszterbe. Ezeket a regisztereket a buszhoz csatlakoztatják, ami egy csomó vezetékek, amelyek az egész rendszeren futnak, minden elemhez csatlakoztatva. Még a modern számítógépeknek is buszjuk van, bár több buszra is képesek lehetnek a multitasking teljesítmény növelése érdekében.

Mindegyik regiszternek még van írási és olvasási bitje, de ebben a beállításban a bemenet és a kimenet ugyanaz. Ez valóban jó. Például. Ha az R1 tartalmát R2-re kívánja másolni R2-be, bekapcsolná az R1 olvasási bitjét, ami az R1 tartalmát a buszra tolja. Amíg az olvasási bit be van kapcsolva, bekapcsolja az R2 írási bitjét, amely átmásolja a busz tartalmát R2-re.
Mindegyik regiszternek még van írási és olvasási bitje, de ebben a beállításban a bemenet és a kimenet ugyanaz. Ez valóban jó. Például. Ha az R1 tartalmát R2-re kívánja másolni R2-be, bekapcsolná az R1 olvasási bitjét, ami az R1 tartalmát a buszra tolja. Amíg az olvasási bit be van kapcsolva, bekapcsolja az R2 írási bitjét, amely átmásolja a busz tartalmát R2-re.

A regiszterek a RAM-ot is használják. A RAM-ot gyakran egy rácsban helyezik el, két vezetéknélküli vezetékekkel:

A dekóderek bináris bemenetet vesznek, és bekapcsolják a megfelelő számozott vezetéket. Például a "11" 3 bináris, a legmagasabb 2-bites szám, tehát a dekóder bekapcsolja a legmagasabb vezetéket. Minden metszéspontnál van egy regiszter. Mindegyik a központi buszhoz van csatlakoztatva, és egy központi írási és olvasási bemenethez. Mind az olvasási, mind az írási bemenet csak akkor kapcsol be, ha a két vezeték átengedte a regisztert is, ami lehetővé teszi, hogy kiválasszuk azt a regisztert, amelyről írni és olvasni tud. Ismét a modern RAM sokkal bonyolultabb, de ez a beállítás még mindig működik.
A dekóderek bináris bemenetet vesznek, és bekapcsolják a megfelelő számozott vezetéket. Például a "11" 3 bináris, a legmagasabb 2-bites szám, tehát a dekóder bekapcsolja a legmagasabb vezetéket. Minden metszéspontnál van egy regiszter. Mindegyik a központi buszhoz van csatlakoztatva, és egy központi írási és olvasási bemenethez. Mind az olvasási, mind az írási bemenet csak akkor kapcsol be, ha a két vezeték átengedte a regisztert is, ami lehetővé teszi, hogy kiválasszuk azt a regisztert, amelyről írni és olvasni tud. Ismét a modern RAM sokkal bonyolultabb, de ez a beállítás még mindig működik.

Az óra, a léptető és a dekóder

A nyilvántartásokat mindenhol használják, és alapvető eszközt jelentenek az adatok mozgatására és az adatok tárolására a CPU-ban. Tehát mi mondja nekik, hogy mozogjanak a dolgok körül?

Az óra a CPU magjában az első komponens, és egy meghatározott időközönként, hertzben vagy ciklusban másodpercenként kikapcsol és bekapcsol. Ez a sebesség, amelyet a CPU-k mellett hirdetnek; egy 5 GHz-es chip képes másodpercenként 5 milliárd ciklusot végrehajtani. Az óra sebessége gyakran nagyon jó mérőszám a CPU gyorsasága miatt.

Az óra három különböző állapotot tartalmaz: az alap óra, az engedélyező óra és az óra. Az alapóra fél cikluson keresztül bekapcsolva lesz, és a másik fél felé. Az engedélyezési idő használatával be lehet kapcsolni a regisztereket, és hosszabb ideig be kell kapcsolnia annak biztosítására, hogy az adatok engedélyezve legyenek. A beállított óra mindig bekapcsolt állapotban kell lennie az engedélyezési idővel, vagy helytelen adatok írhatók.
Az óra három különböző állapotot tartalmaz: az alap óra, az engedélyező óra és az óra. Az alapóra fél cikluson keresztül bekapcsolva lesz, és a másik fél felé. Az engedélyezési idő használatával be lehet kapcsolni a regisztereket, és hosszabb ideig be kell kapcsolnia annak biztosítására, hogy az adatok engedélyezve legyenek. A beállított óra mindig bekapcsolt állapotban kell lennie az engedélyezési idővel, vagy helytelen adatok írhatók.

Az óra csatlakozik a léptetőhöz, amely az egyiktől a maximális lépésig számít, és visszaállítja az egyiket, amikor elkészült. Az óra mindegyik regiszterhez csatlakozik az AND kapukhoz, amelyeket a CPU írhat:

Ezek az AND kapuk egy másik komponens, az utasításdekódoló kimenetéhez is kapcsolódnak. Az utasításdekódoló olyan utasításokat vesz, mint a "SET R2 TO R1", és dekódolja valamit, amit a CPU képes megérteni. Saját belső nyilvántartása van, az úgynevezett "utasításjegyzék", ahol az aktuális műveletet tárolják. Hogy pontosan ez történik a rendszeren, amelyen futsz, de ha dekódoljuk, bekapcsolja a helyes beállítást, és engedélyezi a helyes regiszterek bitjeit, amelyek az óra szerint kikapcsolnak.
Ezek az AND kapuk egy másik komponens, az utasításdekódoló kimenetéhez is kapcsolódnak. Az utasításdekódoló olyan utasításokat vesz, mint a "SET R2 TO R1", és dekódolja valamit, amit a CPU képes megérteni. Saját belső nyilvántartása van, az úgynevezett "utasításjegyzék", ahol az aktuális műveletet tárolják. Hogy pontosan ez történik a rendszeren, amelyen futsz, de ha dekódoljuk, bekapcsolja a helyes beállítást, és engedélyezi a helyes regiszterek bitjeit, amelyek az óra szerint kikapcsolnak.

A program utasításait a RAM-ban (vagy az L1 gyorsítótárban tárolja a modern rendszereknél, közelebb van a CPU-hoz). Mivel a programadatok a regiszterben tárolódnak, mint minden más változó, manipulálhatóak lennének, hogy ugorjanak a program körül. Így jutnak hozzá a programok a struktúrához, a hurkokhoz és a nyilatkozatokhoz. Egy ugrás utasítás beállítja az aktuális helyet a memóriában, amelyet az utasításdekódoló más helyre olvas.

Hogyan működik együtt?

Most, hogy túlságosan egyszerűsítettük a CPU működését, teljes. A fő busz kiterjed az egész rendszerre és csatlakozik az összes regiszterhez. A teljes összeadók, valamint egy csomó más művelet, be vannak csomagolva az Aritmetikai logikai egységbe vagy az ALU-ba. Ez az ALU kapcsolódni fog a buszhoz, és saját nyilvántartása is lesz a második szám tárolásához.
Most, hogy túlságosan egyszerűsítettük a CPU működését, teljes. A fő busz kiterjed az egész rendszerre és csatlakozik az összes regiszterhez. A teljes összeadók, valamint egy csomó más művelet, be vannak csomagolva az Aritmetikai logikai egységbe vagy az ALU-ba. Ez az ALU kapcsolódni fog a buszhoz, és saját nyilvántartása is lesz a második szám tárolásához.

Számítás elvégzéséhez programadatokat töltenek be a rendszer RAM-ból a vezérlőszakaszba. A vezérlő rész két számot olvasható a RAM-ból, az elsőt az ALU utasításregiszterébe terheli, majd betölti a másodikt a buszra. Eközben elküldi az ALU-nak egy utasításkódot, amely megmondja, mit kell tennie. Az ALU végzi el az összes számítást és tárolja az eredményt egy másik regiszterben, amelyet a CPU képes olvasni, majd folytatni a folyamatot.

Ajánlott: