Central processing unit
A központi feldolgozó egység (CPU) minden számítógép fontos része. A CPU jeleket küld a számítógép többi részének vezérlésére, majdnem úgy, mint ahogyan az agy vezérli a testet.
A CPU egy elektronikus gép, amely a számítógépen végrehajtandó feladatok listája, az úgynevezett utasítások alapján dolgozik. Az utasítások listáját beolvassa, és az egyes utasításokat sorrendben lefuttatja (végrehajtja). A CPU által futtatható utasítások listája egy számítógépes program.
Az órajelet, vagyis a CPU belső alkatrészeinek sebességét hertzben (Hz) mérik. A modern processzorok gyakran olyan gyorsan futnak, hogy helyette a gigahertz (GHz) mértékegységet használják. Egy GHz 1 000 000 000 ciklus másodpercenként.
Az asztali (otthoni) számítógépekben használt CPU-k többsége az Intel vagy az Advanced Micro Devices (általában AMD) által gyártott mikroprocesszor. Néhány más CPU-t gyártó vállalat az ARM, az IBM és az AMD az ATI Technologies alatt, amely jelenleg vezető szerepet tölt be. A legtöbb CPU-jukat beágyazott rendszerekben használják, speciálisabb dolgokhoz, például mobiltelefonokban, autókban, játékkonzolokban vagy a hadseregben.
Pentium CPU egy számítógépben
A CPU-k típusai
A 20. században a mérnökök számos különböző számítógép-architektúrát találtak fel. Manapság a legtöbb asztali számítógép 32 bites vagy 64 bites CPU-t használ. A 32 bites CPU utasításai jól kezelik a 32 bites méretű adatokat (a legtöbb utasítás 32 bites CPU-ban 32 bitben "gondolkodik"). Hasonlóképpen, a 64 bites CPU jól kezeli a 64 bites méretű adatokat (és gyakran jól kezeli a 32 bites adatokat is). A CPU által legjobban kezelt adatméretet gyakran a CPU szóméretének nevezik. Sok régi, a 70-es, 80-as évekből és a 90-es évek elejéről származó CPU (és sok modern beágyazott rendszer) 8 vagy 16 bites szómérettel rendelkezik. Amikor a CPU-kat a 20. század közepén feltalálták, sokféle szómérettel rendelkeztek. Egyeseknél az utasítások és az adatok szómérete különböző volt. A kevésbé népszerű szóméreteket később már nem használták.
A legtöbb CPU mikroprocesszor. Ez azt jelenti, hogy a CPU egyetlen chip. Egyes mikroprocesszorral ellátott chipek más alkatrészeket is tartalmaznak, és teljes egychipes "számítógépek". Ezt nevezik mikrokontrollernek.
Regiszterek
Amikor a CPU egy számítógépes programot futtat, valahol tárolnia kell azokat az adatokat, amelyekkel az utasítások dolgoznak (az adatokat, amelyeket olvasnak és írnak). Ezt a tárolóhelyet regiszternek nevezzük. A CPU általában sok regiszterrel rendelkezik. A regiszterekhez nagyon gyorsan kell hozzáférni (olvasni és írni). Ezért magának a CPU-chipnek a részét képezik.
Memória
Az összes adat regiszterekben való tárolása a legtöbb CPU-t túl bonyolulttá (és nagyon drágává) tenné. Ezért a regiszterek általában csak azokat az adatokat tárolják, amelyeken a CPU "éppen most" dolgozik. A program által használt többi adatot a RAM-ban (memóriában) tárolják. A mikrokontrollerek kivételével a RAM-ot általában a CPU-n kívül, külön chipeken tárolják.
Amikor a CPU adatokat akar olvasni vagy írni a RAM-ban, akkor kiad egy címet az adott adathoz. A RAM-ban minden egyes bájtnak van egy memóriacíme. A címek mérete gyakran megegyezik a szómérettel: Egy 32 bites CPU 32 bites címeket használ stb. A kisebb CPU-k, például a 8 bites CPU-k azonban gyakran a szóméretnél nagyobb címeket használnak. Ellenkező esetben a program maximális hossza túl rövid lenne.
Mivel a címek mérete korlátozott, a memória maximális mérete is korlátozott. A 32 bites processzorok általában legfeljebb 4 GB RAM-ot tudnak kezelni. Ennyi különböző bájtot lehet kiválasztani egy 32 bites cím segítségével (minden bitnek két értéke lehet - 0 és 1 -, és 232 bájt 4 GB-ot jelent). Egy 64 bites processzor akár 16 EB RAM-ot is képes lehet kezelni (16 exabájt, kb. 16 milliárd GB, azaz 16 milliárd milliárd milliárd bájt). Az operációs rendszer korlátozhatja ennél kisebb mennyiség használatára.
A RAM-ban tárolt információ általában illékony. Ez azt jelenti, hogy a számítógép kikapcsolásakor eltűnik.
Cache
A modern számítógépeken a RAM sokkal lassabb, mint a regiszterek, így a RAM elérése lassítja a programokat. A memóriaelérések felgyorsítása érdekében a RAM és a CPU fő részei közé gyakran egy gyorsabb memóriatípust, úgynevezett gyorsítótárat helyeznek. A gyorsítótár általában magának a CPU-chipnek a része, és bájtonként sokkal drágább, mint a RAM. A gyorsítótár ugyanazokat az adatokat tárolja, mint a RAM, de általában sokkal kisebb. Ezért előfordulhat, hogy a program által használt összes adat nem fér el a gyorsítótárban. A gyorsítótár igyekszik olyan adatokat tárolni, amelyeket valószínűleg sokat fognak használni. Ilyenek például a nemrég használt adatok és a memóriában a nemrég használt adatokhoz közeli adatok.
Gyakran van értelme a "gyorsítótárnak a gyorsítótárhoz", ahogyan a RAM-nak is van értelme a gyorsítótárhoz. A többszintű gyorsítótárban több gyorsítótár van, amelyeket L1 gyorsítótárnak, L2 gyorsítótárnak és így tovább neveznek. Az L1 gyorsítótár a leggyorsabb (és bájtonként a legdrágább) gyorsítótár, és a CPU-hoz "legközelebb" van. Az L2 gyorsítótár egy lépéssel arrébb van, és lassabb, mint az L1 gyorsítótár, stb. Az L1 gyorsítótár gyakran tekinthető az L2 gyorsítótár gyorsítótárának, stb.
Buszok
A számítógép-buszok a CPU által a RAM-mal és a számítógép más alkatrészeivel való kommunikációra használt vezetékek. Majdnem minden CPU rendelkezik legalább egy adatbusszal - az adatok olvasására és írására - és egy címbusszal - a címek kiadására. A CPU-n belüli egyéb buszok adatokat továbbítanak a CPU különböző részeihez.
Utasításkészletek
Az utasításkészlet (más néven ISA - Instruction Set Architecture) egy olyan nyelv, amelyet egy adott CPU közvetlenül megért. Ezeket a nyelveket gépi kódnak vagy binárisnak is nevezik. Megmondják, hogyan utasítjuk a CPU-t különböző dolgok elvégzésére, például adatok betöltésére a memóriából egy regiszterbe, vagy két regiszter értékeinek összeadására. Az utasításkészletben minden utasításnak van egy kódolása, ami azt jelenti, hogy az utasítás bitek sorozataként van leírva.
Az olyan programozási nyelveken, mint a C és a C++ írt programokat a CPU nem tudja közvetlenül futtatni. Le kell fordítani őket gépi kódra, mielőtt a CPU lefuttatná őket. A fordító egy olyan számítógépes program, amely ezt a fordítást végzi.
A gépi kód csak 0-k és 1-ek sorozata, ami megnehezíti az emberek számára az olvasást. Az olvashatóság érdekében a gépi kódú programokat általában assembly nyelven írják. Az assembly nyelv 0 és 1 helyett szöveget használ: Például az "LD A,0" parancsot írhatod, hogy a 0 értéket töltsd be az A regiszterbe. Az assembly nyelvet gépi kódra fordító programot asszemblernek nevezzük.
Funkcionalitás
Íme néhány alapvető dolog, amit egy CPU képes elvégezni:
- Adatok olvasása a memóriából és adatok írása a memóriába.
- Adj hozzá egy számot egy másik számhoz.
- Tesztelje, hogy egy szám nagyobb-e egy másik számnál.
- Egy szám áthelyezése egyik helyről a másikra (például egyik regiszterből a másikba, vagy egy regiszter és a memória között).
- Ugrás az utasításlista egy másik helyére, de csak akkor, ha valamilyen teszt igaz (például csak akkor, ha az egyik szám nagyobb, mint a másik).
Még nagyon bonyolult programok is készíthetők sok ilyen egyszerű utasítás kombinálásával. Ez azért lehetséges, mert minden egyes utasítás végrehajtása nagyon rövid időt vesz igénybe. Sok CPU ma már több mint 1 milliárd (1 000 000 000 000) utasítást képes végrehajtani egyetlen másodperc alatt. Általánosságban elmondható, hogy minél többet tud egy CPU egy adott idő alatt elvégezni, annál gyorsabb. A processzor sebességének egyik mérési módja a MIPS (Million Instructions Per Second - millió utasítás másodpercenként). A flopok (lebegőpontos műveletek másodpercenként) és a CPU órajele (általában gigahertzben mérve) szintén alkalmasak annak mérésére, hogy egy processzor mennyi munkát képes elvégezni egy bizonyos idő alatt.
A CPU logikai kapukból épül fel; nincsenek mozgó alkatrészei. A számítógép CPU-ja elektronikusan kapcsolódik a számítógép más részeihez, például a videokártyához vagy a BIOS-hoz. Egy számítógépes program úgy tudja vezérelni ezeket a perifériákat, hogy számokat olvas vagy ír a számítógép memóriájának speciális helyeire.
Utasítási csővezetékek
A CPU által végrehajtott minden egyes utasítás általában több lépésben történik. Például az "INC A" utasítás (az A regiszterben tárolt érték eggyel történő növelése) futtatásának lépései egy egyszerű CPU-n a következők lehetnek:
- Olvassa be az utasítást a memóriából,
- dekódolja az utasítást (kitalálja, hogy mit csinál az utasítás), és
- adjon hozzá egyet az A regiszterhez.
A CPU különböző részei különböző dolgokat végeznek. Gyakran lehetséges, hogy egyes lépéseket különböző utasításokból egyszerre futtassunk, ami gyorsabbá teszi a CPU-t. Például beolvashatunk egy utasítást a memóriából, miközben dekódolunk egy másik utasítást, mivel ezek a lépések különböző modulokat használnak. Ezt úgy lehet elképzelni, mintha egyszerre több utasítás lenne "a csővezetéken belül". A legjobb esetben az összes modul egyszerre dolgozik különböző utasításokon, de ez nem mindig lehetséges.
Memóriakezelő egységek (MMU-k) és virtuális memória
A modern CPU-k gyakran használnak memóriakezelő egységet (MMU). Az MMU egy olyan komponens, amely a CPU-tól érkező címeket (általában) különböző RAM-címekre fordítja. MMU használata esetén a programban használt címek (általában) nem a "valódi" címek, ahol az adatokat tárolják. Ezt nevezzük virtuális (a "valós" memória ellentéte) memóriának. Az alábbiakban felsorolunk néhány okot, amiért jó, ha van MMU:
- Az MMU képes "elrejteni" más programok memóriáját egy program elől. Ez úgy történik, hogy a program futása közben semmilyen címet nem fordít le a "rejtett" címekre. Ez azért jó, mert így a programok nem tudják olvasni és módosítani más programok memóriáját, ami javítja a biztonságot és a stabilitást. (A programok nem "kémkedhetnek" egymás után, vagy nem "léphetnek egymás lábára".)
- Sok MMU képes a memória egyes részeit nem írhatóvá, nem olvashatóvá vagy nem futtathatóvá tenni (ami azt jelenti, hogy a memória adott részében tárolt kód nem futtatható). Ez stabilitási és biztonsági okokból, valamint egyéb okokból is jó lehet.
- Az MMU-k lehetővé teszik, hogy a különböző programok különböző "nézetekkel" rendelkezzenek a memóriáról. Ez számos különböző helyzetben hasznos. Például mindig lehetséges, hogy egy program "fő" kódja ugyanazon a (virtuális) címen legyen, anélkül, hogy más programokkal ütközne. Ez akkor is hasznos, ha sok különböző kódrészlet van (könyvtárakból), amelyeket a programok megosztanak egymással.
- Az MMU-k lehetővé teszik, hogy a könyvtárak kódja minden egyes programfuttatáskor más-más címen jelenjen meg. Ez azért jó, mert ha nem tudjuk, hol vannak a dolgok a memóriában, akkor a hackerek számára gyakran nehezebbé válik, hogy a programokat rossz dolgokra késztessék. Ezt nevezik címtartomány randomizálásnak.
- A fejlett programok és operációs rendszerek trükköket alkalmazhatnak az MMU-kkal, hogy elkerüljék az adatok másolását a memória különböző helyei között.
Több mag
A többmagos processzorok a 21. század elején váltak általánossá. Ez azt jelenti, hogy több processzort építettek ugyanarra a chipre, így egyszerre több utasítás futtatására is képesek. Egyes processzorok akár harminckét maggal is rendelkezhetnek, mint például az AMD Epyc 7601.
Gyártók
A következő vállalatok gyártanak számítógépes CPU-kat:
- ARM
- Intel
- Advanced Micro Devices
- MCST
- SRISA
- Sun Microsystems
További információk
- Mikroprocesszor
- ALU
- Végrehajtási egység
- Lebegőpontos egység
- Intel
- AMD
Kérdések és válaszok
K: Mi az a CPU?
V: A CPU (központi feldolgozó egység) minden számítógép fontos része. Jeleket küld a számítógép többi részének vezérlésére, majdnem úgy, mint ahogyan az agy vezérli a testet. A CPU egy elektronikus gép, amely bizonyos feladatok elvégzésére szolgáló utasítások listája alapján dolgozik.
K: Hogyan működik a CPU?
V: A CPU beolvassa az utasítások listáját, és sorrendben lefuttatja (végrehajtja) az egyes utasításokat. A CPU által lefuttatható utasítások listája egy számítógépes program.
K: Miben mérik a CPU órajelét vagy sebességét?
V: A CPU belső részeinek órajelét vagy sebességét hertzben (Hz) mérik. A modern processzorok gyakran olyan gyorsan futnak, hogy helyette a gigahertz (GHz) mértékegységet használják - egy GHz 1 000 000 000 ciklus másodpercenként.
K: Kik azok a vállalatok, amelyek CPU-kat gyártanak?
V: Néhány vállalat, amely CPU-kat gyárt, az Intel, az Advanced Micro Devices (AMD), az ARM (amelyet nemrég vásárolt fel az Nvidia), az IBM és az AMD az ATI Technologies keretében, amely jelenleg piacvezető.
K: Hol használják a legtöbb CPU-t?
V: Az asztali számítógépekben használt CPU-k többsége az Intel vagy az AMD által gyártott mikroprocesszor, míg a legtöbbet beágyazott rendszerekben használják, amelyek speciálisabb dolgokban, például mobiltelefonokban, autókban, videojáték-konzolokban vagy katonai alkalmazásokban használatosak.