CPU és memória

CPU ciklusa

Egy utasítás végrehajtásakor a processzor folyamatosan ismétlődve végigmegy egy néhány lépéses cikluson, amely a fetch, decode, execute és store műveletekből áll. Az utasítást a memóriából kell kiolvasni, értelmezni, majd végrehajtani. Ezt követően jön a következő utasítás hasonló lépésekkel, és így tovább.

Regiszter

A processzor memóriaelemei a regiszterek. Kis méretűek, gyors elérésűek és ideiglenesen tárolják az aktuális számítások adatait, memóriacímeket és egyéb információkat. Vannak általános célú és speciális regiszterek, például a programszámláló, az utasítésregiszter és állapotregiszterek.

Arithmetic Logic Unit

Az ALU feladata az aritmetikai (összeadás, kivonás stb.) és a logikai műveletek (AND, NAND stb.) végrehajtása, miközben együttműködik a regiszterekkel és a vezérlőegységgel. Egy processzormagban egy ALU található.

Memória típusai

Több különböző típusa van a memóriának, két csoportja az áramtalanítás után felejtő (volatile) memória és a nem felejtő (non-volatile). A típusok eltérnek továbbá sebességben, gyártási költségben, kapacitásban. Több típust is tartalmaz egy MCU, mindegyiknek megvan a felhasználási területe a rendszeren belül.

RAM (SRAM, DRAM)

Az SRAM (Static RAM) gyors, de drága, a DRAM (Dynamic RAM) olcsóbb, de lassabb. Maga a RAM véletlen hozzáférésű memória, ami azt jelenti, hogy bármely részéhez rögtön, véletlen sorrendben hozzá lehet férni.

ROM

Nem felejtő memória, amely csak olvasásra használatos. Általában firmware tárolására használják, altípusai a PROM, EPROM vagy EEPROM (például Flash). Korlátozott az élettartamuk, emiatt a Flash tárolók egy külön vezérlőegységgel szórják szét hatékonyan az információt, akár gyorsítótárral kiegészülve.

Adatáramlás

A processzor, memória és perifériák között a kommunikáció buszokon zajlik, azaz minden információ felkerül a buszra, az elemek pedig leveszik onnan a számukra szükségeseket. Egy egyszerű mikrovezérlő is számtalan különböző buszrendszert tartalmaz, architektúrától és a rendelkezésre álló perifériáktól függ a feladatuk.

Példa:
ADD R1, R1, R2

A példában az R1 és R2 regiszterek, amelyek jelenleg valamilyen értéket tárolnak. A CPU az utasítást binárisan kapja meg, a konkrét számsor architektúrától függ. Az utasítás szövegesen kifejezve azt mondja, hogy az R1 és R2 értékét össze kell adni, az eredményt pedig beírni az R1 regiszterbe. Más programnyelven: R1 = R1 + R2.

1. Fetch

A PC (Program Counter vagy Instruction Pointer) megadja, hogy a következő utasítás milyen memóriahelyen található, innen olvassa azt be a CPU. Az utasítás az utasításregiszterbe (IR) kerül, majd léptet egyet a PC.

2. Decode

A processzorban található vezérlőegység (CU) felismeri, hogy összeadás műveletre van szükség, amit az ALU fog végrehajtani. Azonosítja az operandusokat, azaz a két regisztert, mint forrást (R1 és R2) és a célt (R1).

3. Execute

A két regiszter értéke az adatbuszon keresztül eljut az ALU-ba, amely elvégzi az összeadás műveletet, ezután az eredmény a kimenetére kerül. Nyilván vannak olyan műveletek, amelyeket nem az ALU végez el (pl. LOAD).

4. Store

Az ALU kimenetéről az összeadás eredménye bekerül az R1 regiszterbe, az utasítás ezzel teljesült.