Számítógépes felépítés: Tankönyv. Processzorok. Számítógépes parancsrendszer. Vezérlő eszközök. Processzoron belüli információbeviteli/kimeneti rendszerek felépítése Számítógépes parancsok típusai

Számítógépek funkcionális és szerkezeti felépítése.

Kiváltók

Ez egy memóriaelem. Olyan eszköz, amely képes emlékezni, tárolni stb. információ.

Az RS flip-flop két kapuból áll, az egyik kapu az vagy nem, második és nem.

Az RS trigger megjegyzi, hogy melyik bemenete kapott utoljára eggyel egyenlő jelet. Ha a jel az S bemenetre került, akkor a flip-flop tárol egyet. Ha jelet adtak az R bemenetre, akkor a flip-flop nullát tárol.

0 1 1 - készlet 1

1 0 0 - 0. készlet

1 1 - nem megengedett

Az összeadók kaszkádban történő összekapcsolásával logikai összeadó áramkört kaphatunk tetszőleges számú számjegyű bináris számokhoz.

Az összeadók és félösszeadók egyciklusú logikai áramkörök. A triggerek többciklusúak.

A regiszterek a beléjük írt számok rögzítésére, tárolására és konvertálására szolgálnak. A trigger elemi regisztercellaként szolgál.

A számláló egy olyan egység, amely a bemeneti jelek számának felét számlálja, és az eredményeket bináris kódban rögzíti.

Ez egy absztrakt modell, amely leírja a számítógép képességeit. A megoldandó feladatok típusa, valamint az erőforrásigény és a feladatok típusa (memória, processzor jellemzői) határozza meg.

A számítógép szerkezeti felépítése egy fizikai modell, amely megállapítja az alkatrészek és blokkok sorrendjét és kapcsolatait.

A parancs olyan információgyűjtemény, bináris kód formájában, amely bizonyos mezőket foglal el, amelyek a processzornak a szükséges műveletek végrehajtásához szükségesek.

A parancsformátum a mezőinek egyeztetett szerkezete, kódja, beleértve az operandusok műveleti kódját és címét, valamint az eredmény címét.

Zsaru A1 A3 Zsaru A1 A2 A3

Zsaru. ß---a3---à

Címzési módszerek: cím és asszociatív (tartalom szerinti keresés) – az összes cella megtekintése a parancsot tartalmazó kódok azonosításához.

Cím keresése – a címcellában található szám alapján az információ lekérhető a memóriából. Külsőleg lehet explicit vagy implicit. Explicit – nem tartalmaz címkód cellákat. Az implicit címzést a veremcímzésben használják.

A verem üres írás írás olvasás B olvasás A verem üres

A verem szekvenciális memóriacellák vagy regiszterek csoportja. Nincs veremcím, és a vezérlési séma a következő szabály szerint alakul. Csak egy regiszter áll rendelkezésre olvasásra vagy írásra, egy cella a verem teteje. Az utoljára írt regiszter lesz az első.

Auto-index címzés – a modern számítógépekben használatos. A regisztermemória tartalma a művelet előtt vagy után egy állandóan meghatározott, meghatározott mennyiséggel nő vagy csökken. Ezt a típust nagy mennyiségű adat feldolgozásakor használják.



Glushkov akadémikus elve.

Univerzális információfeldolgozási eszköz (1956). Regiszterekből, összeadókból és egyéb csomópontokból áll, amelyek lehetővé teszik az információk fogadását, tárolását és átalakítását. Az információfeldolgozó eszköz időbeni működésének folyamata órajelek sorozatából áll, amelyben a kezelőegység bizonyos műveleteket hajt végre, ezek végrehajtása vezérlőjelek szerint történik.

A mikroprogram egy művelet végrehajtását biztosító mikroparancsok sorozata.

A mikroparancs vezérlőjelek sorozata.

Általános információk. Egy adott mikroprocesszor rögzített utasításkészletét hívják parancsrendszer. A processzor funkcionalitását a kombináció határozza meg alapvető parancsok különböző műveleti kódokkal. Teljes szám Mindig több parancs (műveleti kód) van a rendszerben, mint ahány alapparancs. Például az alapparancs tartalmazza a MOV dst, scr parancsot, amely biztosítja az adatok küldését a forrás scr-től a cél dst-hez. Nagyon sok ilyen parancs lehet a rendszerben. A parancsrendszert táblázat formájában mutatjuk be. A táblázat szerkezete eltérő lehet, de általában a következő információkat tartalmazza a parancsról:

  • emlékezeterősítő parancs, amely a parancs nevének rövidítése. Ehhez használja a parancs által végrehajtott művelet nevének 3-4 latin betűjét. Mnemonika egy kényelmes forma a parancs műveleti kódjának megjelenítésére. Akkor is használatos, ha egy parancsot assembly nyelven ír le. Az assembler program átalakítja a műveleti kódok mnemonikus jelölését a megfelelő bináris ekvivalensekké;
  • hexadecimális kódok parancsok;
  • a végrehajtott parancs hatása a zászlókra programállapot-regiszter;
  • bájtok száma a csapatban és gépi ciklusok és ciklusok száma, a parancs végrehajtására költött;
  • szóbeliés/vagy szimbolikus leírás a parancs által végrehajtott művelet.

Gyakran a kényelem kedvéért a parancsrendszert funkcionalitás alapján külön csoportokra osztják. Például a KR580VM80 mikroprocesszor 78 alapparancsot tartalmazó parancsrendszere 5 csoportra van osztva. Az alábbiakban röviden ismertetjük az egyes csoportok parancsainak funkcionális jellemzőit.

A parancsok 1-3 bájt hosszúságúak. A műveleti kód mindig a parancs első bájtjába kerül. A parancs második bájtja az azonnali operandus vagy portcím számára van lefoglalva, a második és harmadik bájt a memóriacella címe. A parancsok csak egy memóriacím explicit beállítását teszik lehetővé, azaz az unicast parancsok osztályába tartoznak. A parancsok leírásánál használja a következő megnevezéseket:

  • src, dst – 8 bites forrás és cél. A forrás vagy cél lehet a 8 bites A, B, C, D, E, H regiszterek valamelyike, vagy egy M memóriacella, amelyhez a küldött bájt címét tartalmazó H L regiszterpár biztosítja a hozzáférést. A műveleti kódban a forrás src és a cél dst három bites SSS és DDD kódként van megadva;
  • RP – BC, DE, N L, A + RP (jelregiszter) vagy SP veremmutató kétbites kódja;
  • adat, adat 16 – 8 és 16 bites operandus;
  • addr, port – 16 bites memóriacím és 8 bites portcím;
  • (addr), (SP) – a memóriacella tartalma a megadott címeken;
  • (SP)+, -(SP) – utólagos növelés és növelés előtti műveletek a veremmel. Parancsok továbbítása. A csoport tartalmazza a programokban leggyakrabban használt adatátviteli utasításokat, amelyek forrásai és rendeltetési helyei lehetnek belső processzorregiszterek, főmemória és külső eszközök. A parancsok nincsenek hatással az állapotregiszter jelzőire.

A parancsemlékeztető tükrözi a végrehajtott művelet jellemzőit és a címzési módszert. Például a mnemonikus MOV, MVI az operandusok mozgását jelzi; LDA, LDAX, LXI, LHLD – rakodáshoz (Load); STA, STAX, SHLD – a mentéshez. A bájtokkal végzett műveletekhez a MOV, MVI, LDA, STA, LDAX, STAX mnemonikus jeleket használjuk; szavakkal végzett műveletekhez – LXI, LLLD, SHLD. Az akkumulátor tartalmának betöltésekor és mentésekor a közvetlen címzést az LDA és STA, a közvetett címzést pedig az LDAX és a STAX mnemotechnika tükrözi.

A csoport csapatait a táblázat foglalja össze. 5.8. Lehetővé teszik, hogy:

  • adatátviteli művelet a forrás (src) és a cél (dst) között, amely dst ← src (1. parancs) formában van írva. A források és a célállomások belső nyilvántartások általános rendeltetésű(A, B, C, D, E, H) és M memóriacella. Bármilyen kombináció megengedett, M ​​← M kivételével, azaz az M memóriacella újratöltése nem megengedett;
  • terhelés az általános célú regisztereket és az M cellát a második B2 bájttal (2. parancs), valamint a BC, DE, HL regiszterpárokat (beleértve az SP veremmutatót is) a második B2 és harmadik B3 bájttal (3. parancs), és a B3 mindig betöltődik a magasabb regiszterek (B, D, H) párok, B2 – alacsony regiszterek (C, E, L);
  • szállítmányozás adatok az A akkumulátor és a fő memória között (4÷7 parancs), az akkumulátor és egy külső eszköz között (8., 9. parancs). Az A akkumulátor és a memória közötti átvitel során a memóriacellák címei a BC, DE regiszterpárokban vagy a parancs harmadik és második bájtjában (B3B2) találhatók;

5.8. táblázat

Mnemonika

Kivégezve

művelet

műveleteket

dst src

A (addr)

Megjegyzések: RP – BC, DE, HL, A + RP (feature register) vagy SP veremmutató 2 bites kódja; B – bájtok, U – ciklusok, T – ciklusok.

  • szállítmányozás adatok egy pár HL regiszter és a memória között (10., 11. csapat). Ebben az esetben az L regiszter operandusa a parancs harmadik és második bájtjából kialakított B3B2 címû cellába, a H regiszterbõl pedig egy eggyel magasabb címre kerül. A visszirányú továbbítás során a B3B2 címû cellából elõször az elsõ operandust töltjük be az L regiszterbe, majd a másodikat a B3B2+1 címû cellából töltjük be a H regiszterbe;
  • szállítmányozás regiszterpárok közötti adatok, beleértve egy párat az A akkumulátorból és az RP jellemzőregiszterből, valamint a veremből (12., 13. csapat). A verembe íráskor a veremmutató tartalma eggyel csökken, és az SP-1 címen az első operandus betöltődik a B, D, H vagy A regiszterek valamelyikébe, majd a veremmutató tartalma csökken. ismét eggyel, és a második operandus betöltődik az SP–2 címen a C, E, L vagy RP regiszterből. Amikor a veremből kiugrik, a C, E, L vagy RP regiszterek egyikébe először a veremmutató SP címével rendelkező cellában tárolt operandus kerül. A tartalmat ezután eggyel növeljük az SP + 1 címen lévő cellából, a második operandust betöltjük a B, D, H vagy A regiszterek egyikébe, és a veremmutató tartalmát ismét eggyel növeljük. érték SP + 2. Megjegyzendő, hogy az A, RP regiszterpárok (kódja RP = 11) veremből történő betöltésekor az RP attribútumregiszter triggereinek állapota megváltozik. Ez az egyetlen parancs (az összes adatátviteli parancs közül), amely hatással van az attribútumokra;
  • szállítmányozás egy HL regiszterpár tartalma az SP veremmutatóba és a PC programszámlálóba (14., 15. utasítás);
  • csere adatok a HL és DE regiszterpárok, a HL regiszterpár és a verem között (16., 17. utasítás). Cserekor a HL regiszterpár tartalma a DE párba vagy verembe, a DE regiszterpár vagy verem tartalma pedig a HL párba kerül. A csereműveletet a "↔" szimbólum jelzi.

Aritmetikai parancsok. A mikroprocesszor számítási képességei a 8 bites operandusok egyszerű összeadási és kivonási utasításaira korlátozódnak. Szorzási és osztási műveletek valósulnak meg programozottan. A parancskészlet (5.9. táblázat) lehetővé teszi a következők végrehajtását:

  • kiegészítésÉs kivonás 8 bites operandusok átvitellel és anélkül (l÷8 utasítás), míg az egyik operandus mindig az akkumulátorban van, a második pedig valamelyik általános célú regiszterben (M memóriacella) vagy a parancs második bájtja . A többbájtos számok összeadásakor és kivonásakor a jellemzőregiszter C átviteli jelének értékét figyelembe vevő parancsokat használjuk. Ugyanebből a célból a 9-es paranccsal hozzáadhatja egy HL-regiszterpár tartalmát egy 16 bites címezhető regiszterrel;
  • számtan összehasonlítás az A akkumulátor tartalma az egyik általános célú Rn regiszter (M memóriacella) vagy a második B2 bájt (10+11 parancsok) tartalmával. Ebben az esetben az A – Rn vagy az A – B2 kivonás történik. Az összehasonlítás eredményét a jellemzőregiszter triggerjelei határozzák meg: ha Z = 1, akkor A = Rn vagy A = B2; ha S = 1, akkor A > Rn vagy A > B2. Az akkumulátor tartalma nem változik;
  • növekedésÉs csökkenésáltal 1 (növekedésÉs csökkenés) regiszterek és regiszterpárok tartalma. Amikor gyakran programozunk

5.9. táblázat

Mnemonika

Elvégzendő művelet

műveleteket

A ← A + src + C

A ←A – src – C

A ← A + adat + CY

A ← A – adatok

A ← A – adat – CY

A – scr (összehasonlítás)

A – scr (összehasonlítás)

dst ← dst – 1

A ← 2/10 korrekció A

szükség van az operandus értékének eggyel növelésére vagy csökkentésére. Ehhez használhatjuk az A + B2 összeadás vagy az A – B2 kivonás műveleteit, a B2 = 1-et írva a programba Az utasításrendszer azonban speciális utasításokat (12-5-15) ad a 8-, ill. 16 bites operandusok;

decimális korrekció az akkumulátor tartalmát a BCD 8421 számtani műveleteinek végrehajtása után (16. utasítás). Ebben az esetben az akkumulátor tartalma két nibble-ként jelenik meg, amelyek mindegyike egy decimális számjegynek felel meg. A korrekció tizedesjegy-javítási blokk segítségével történik az 5.2. §-ban (99. o.) meghatározott szabályok szerint.

Logikai műveleti parancsok. Ennek a csoportnak a parancsai (5.10. táblázat) lehetővé teszik a következők végrehajtását:

  • kettős logikai műveletek szorzás(ÉS), kiegészítés(VAGY) és kizárólagos VAGY 8 bites operandusok felett (1÷6 utasítás). A logikai műveletek bitenkéntiek, és mind a nyolc operandusbitre függetlenül hajtódnak végre. A nem címezhető operandus az akkumulátorban található, és oda kerül a művelet eredménye is. A második operandus az egyik általános célú regiszter (M memóriacella) vagy az utasítás második bájtjának tartalma;
  • megfordítani az A elem tartalma (7. parancs);
  • zászló parancsok (8, 9) megfordítvaÉs installációk az attribútumregiszter átviteli triggerének C bitje;
  • kétféle ciklikus eltolódások akkumulátor tartalma balra és jobbra (Yul-13 parancsok). Az első típusú eltolás (váltások átvitel nélkül) úgy valósul meg, hogy az összes akkumulátor triggert egy gyűrűbe zárják a második típusú eltolásokkal (eltolódások átvitellel vagy kiterjesztett műszakokkal), az attribútumregiszter C átviteli triggerét is bevezetik; gyűrű. A parancsrendszerben hiányzó logikai és aritmetikai eltolások mindkét irányban úgy valósíthatók meg, hogy először a C bitet 0-ra vagy 1-re állítjuk egy kiterjesztett eltolás mellett.

Vezérlő átviteli parancsok. A vezérlés átadásakor a memóriacellák tartalmának szekvenciális lekérési folyamata megszakad, és a processzor egy másik memóriaterületre kerül. Jelölje ki

5.10. táblázat

Mnemonika

Kivégezve

művelet

műveleteket

A ← A l src – szorzás

A ← A v src – összeadás

A ← A © src – nem. VAGY

A ← A l adatok

A ← A © adatok

háromféle vezérlésátviteli parancs: parancsok átmenet adott címen (JMP), hívás szubrutinok (CALL) és visszatérés szubrutinból (RET). Ezek közé tartozik feltétlenÉs feltételes csapatok. A feltételes parancsok az attribútumregiszter (vagy állapot) négy triggerének (Z, C, S, P) valamelyikének jelértéke által meghatározott zászló állapotától függően hajtanak végre átmenetet, hívnak meg egy szubrutint és térnek vissza egy szubrutinból. . A 8080-as processzor négy jelző (Z, C, P, S) mindkét állapotát (1 és 0) használja, így minden parancshoz 8 opció tartozik (5.11. táblázat). Az attribútum (feltétel) megnevezését a J**, C**, R** feltételes parancsok emlékeztetőjében a csillagok (**) helyett jelzik. Például az NC attribútum, amelynél az átmeneti feltételek teljesültnek tekinthetők, ha C = 0, megfelel a JNC parancsnak.

Mind a feltételes, mind a feltétel nélküli ugrások és szubrutinhívások egy teljes 16 bites továbbítási címet használnak a vezérlés átviteléhez a 64 kilobájtos memóriaterület bármely pontjára.

5.11. táblázat

Nézzük meg a táblázatban bemutatott parancsok jellemzőit. 5.12.

A három bájtos JMP utasítás segítségével valósul meg feltétlen irányítás átadása. Ebben az esetben a parancs második és harmadik bájtja (a program folytatási címe) a PC parancsszámlálóba kerül (a B3 tartalma a magasabb rendű, a B2 az alsóbbrendű bitekben van).

Csapatok feltételes vezérlés transzferek J** a számítási folyamat feltételtől függő elágazását valósítja meg. Ha a feltétel (IGEN) teljesül, a parancs második és harmadik bájtja bekerül a PC-számlálóba, ellenkező esetben (NO) a számláló tartalma 3 egységgel nő. A program a programszámlálóban található címen folytatódik, azaz. a következő parancstól.

5.12. táblázat

Mnemonika

Kivégezve

művelet

műveleteket

Csapatok feltétlen(HÍVÁS) és feltételes(VEL**) hívásokat a fő memória másik részében tárolt szubrutinokhoz való hozzáférésre szolgálnak. Ezek az utasítások mindig lehetővé teszik a megszakított főprogramhoz való visszatérést a PC-programszámláló tartalmának a veremben való tárolásával. A visszaküldési művelet végrehajtása után:

  • at feltétlen hívja vagy feltétel teljesítése a parancs második és harmadik bájtja bekerül a PC-programszámlálóba;
  • at feltétel teljesítésének elmulasztása a programszámláló tartalma 3 egységgel nő.

A program a PC programszámlálójában található címen folytatódik.

A készlet olyan parancsokat tartalmaz, amelyek lehetővé teszik a megvalósítást feltétlen(RET) és feltételes (K**) irányítás átadása a visszaadáshoz a megszakított programhoz. Ezen utasítások végrehajtásakor a visszatérési cím átíródik a veremből a PC-programszámlálóba, amelyhez az utólagos növekmény címzési módszert alkalmazzuk. Ha a visszatérési feltétel nem teljesül (feltételes parancs esetén), akkor a programszámláló PC tartalmának eggyel növelésével át kell térni a következő parancsra. A visszatérési utasítások egybájtos utasítások, mivel a veremmutató SP tárolja a verem helyének címét a megszakított program visszatérési címével együtt.

A PCHL utasítás betölti a programszámláló PC-t a HL regiszterpárban tárolt címmel.

Általános vezetői csapatok. Ennek a csoportnak a parancsai (5.13. táblázat) a mikroprocesszor működési módjának beállítására szolgálnak. Az RST utasítás a mikroprocesszor újraindítására és a megszakítások szervizelésére szolgál. A végrehajtás során:

  • a programszámláló tartalma a veremmutatóban kialakított SP – 1, SP – 2 címeken kerül át a verembe, ami biztosítja a főprogramhoz való visszatérést;
  • A 8 megszakítási szolgáltatási program egyikének 16 bites címe elküldésre kerül a programszámlálónak.

5.13. táblázat

Mnemonika

Kivégezve

művelet

műveleteket

–(SP) ← PC ← 8×n, n = 0 – 7

Megszakítások engedélyezése

Megszakítások letiltása

A maszk olvasása

A maszk felszerelése

Nincs művelet

Az EI megszakítás engedélyezése parancs egyetlen állapotba állítja az INTE megszakítás engedélyezése triggert, így a mikroprocesszor válaszol a megszakítási kérésekre. A DI interrupt disable parancs az INTE flip-flop értékét nullára állítja. Az üres NOP utasítás a programozható késleltetési hurkokban használatos. A HLT stop parancs leállítja a program végrehajtását.

Fontos szerves része A számítógép architektúrája parancsok rendszere. Ellenére nagy számban számítógépek változatai, a legalacsonyabb („gép”) szinten sok közös vonás van bennük. Bármely számítógép parancsrendszere szükségszerűen tartalmazza az információfeldolgozási parancsok alábbi csoportjait. 1. Adatátviteli (cenzus) parancsok, amelyek információkat másolnak egyik helyről a másikra. 2. Aritmetikai műveletek, amelyeknek tulajdonképpen a számítástechnika a nevét köszönheti. Természetesen a számítási műveletek aránya egy modern számítógépben érezhetően csökkent, de továbbra is fontos szerepet töltenek be a programokban. Megjegyzendő, hogy az alapvető aritmetikai műveletek általában tartalmazzák az összeadást és a kivonást (ez utóbbi leggyakrabban ilyen vagy olyan módon összeadássá redukálódik). Ami a szorzást és az osztást illeti, sok számítógépben a szerint hajtják végre speciális programok. 3. Logikai műveletek, amelyek lehetővé teszik a számítógép számára a feldolgozott információ elemzését. A legegyszerűbb példák az összehasonlítás, valamint a jól ismert AND, OR, NOT (inverzió) logikai műveletek. Ezenkívül gyakran hozzáadják az egyes kódbitek elemzését, visszaállítását és telepítését. 4. A bináris kód balra és jobbra vált. A parancscsoport fontosságának bizonyításához elegendő felidézni az oszlopszorzás szabályát: minden következő szorzatot egy ilyen sémában írnak le, egy számjegyet balra tolva. Egyes speciális esetekben a szorzást és osztást általában eltolás helyettesítheti (ne feledje, hogy egy nulla jobbra adásával vagy eltávolításával, azaz egy tizedes szám tényleges eltolásával 10-szeresére növelheti vagy csökkentheti). 5. Parancsok információ bevitelére és kiadására külső eszközökkel való cseréhez. Egyes számítógépekben a külső eszközök speciális szolgáltatási memóriacímek, így a bevitel és a kimenet népszámlálási parancsokkal történik. 6. Nemlineáris algoritmusokat megvalósító vezérlőparancsok. Ez elsősorban a feltételes és feltétel nélküli ugrásokat, valamint a szubrutin hívására szolgáló parancsokat (ugrás visszatéréssel) tartalmazza. Egyes számítógépek speciális parancsokkal rendelkeznek a hurkok szervezésére, de ez nem szükséges: egy hurok redukálható a feltételes és feltétel nélküli átmenetek egyik vagy másik kombinációjára. Gyakran ugyanaz a parancscsoport tartalmaz néhány műveletet a processzor vezérlésére, mint például a „stop” vagy a NOP („no operation”). Néha egy speciális csoportba különülnek el. A processzoreszköz bonyolultságának növekedésével a vezérlőbitek állapotát elemző és azokra ható parancsok száma is növekszik. Itt példaként megnevezhetjük a processzor működési mód bitjeit és a külső eszközökről érkező megszakítási mechanizmusok vezérlőbitjeit. Mostanában mindent nagy szerepet Az utasításkészlet az egyik adatformátumból a másikba (például 8 bitesről 16 bitesre stb.) történő konvertálásra szolgáló parancsokat tartalmaz, amelyek jelentősen leegyszerűsítik az adatfeldolgozást különböző típusok , de elvileg több egyszerűbb parancsból álló sorozattal is helyettesíthető. Tekintettel a parancsrendszerre, nem lehet nem említeni két modern, egymással versengő irányt a felépítésében: egy számítógép teljes parancskészlettel CISC (Complex Instruction Set Computer) és egy korlátozott készlettel - RISC (Reduced Instruction Set Computer). A megosztottság abból adódik, hogy a számítógépnek legtöbbször az utasításkészlet egy kis részét kell végrehajtania, míg a többit szórványosan használják (egy népszerű cikk ezt viccesen a következő vizuális hasonlat formájában fogalmazza meg: „20 a lakosság %-a issza meg a sör 80%-át.” Így, ha jelentősen korlátozza a műveletek halmazát a legegyszerűbbre és a legrövidebbre, de gondosan optimalizálja azokat, akkor egy meglehetősen hatékony és gyors RISC gépet kap. Igaz, a sebességért fizetnie kell az „eldobott” parancsok szoftverben való megvalósításának szükségességével, de gyakran ez a fizetés indokolt: például tudományos számítások vagy számítógépes grafika esetében a sebesség sokkal fontosabb, mint a programozási problémák. A korszerű mikroprocesszorok utasításrendszerével kapcsolatos kérdéseket a fejezet későbbi részében részletesebben tárgyaljuk. Összefoglalva ismét hangsúlyozzuk, hogy az alapvető parancskészlet meglehetősen keveset változott a számítógépek gyors fejlődése során. Ugyanakkor a memóriában lévő információ helyének címének jelzésének módszerei jelentős változásokon mentek keresztül, és külön figyelmet érdemelnek. A számítógépes parancs általában két részből áll - működési és címből. A műveleti rész (más néven műveleti kód - OPC) jelzi, hogy milyen műveletet kell végrehajtani az információval. A cím rész leírja, hogy hol tárolják a felhasznált információkat. Előfordulhat, hogy néhány gépműködés-vezérlő parancsnak nincs cím része, például egy stop parancsban; a működtető rész mindig ott van. A műveleti kód egy bizonyos hagyományos számnak tekinthető a parancsrendszerek általános listájában. Alapvetően ez a lista bizonyos belső mintáknak megfelelően épül fel, bár ezek nem mindig nyilvánvalóak. A cím rész sokkal változatosabb, ezért érdemes részletesebben megvizsgálni. Mindenekelőtt megjegyezzük, hogy az utasítások a benne szereplő operandusok számától függően lehetnek egy-, két- vagy háromcíműek. Az első számítógépek rendelkeztek a legegyszerűbb és legintuitívabb háromcímes parancsrendszerrel. Például: vegyen számokat az A1 és A2 memóriacímekből, adja össze őket, és helyezze az összeget az A3 címre. Ha a művelet szükséges kisebb szám címeket, akkor az extra címeket egyszerűen nem használták fel. Tegyük fel, hogy a népszámlálási műveletben csak az A1 és az A3 információ forrás és vevő cellája volt feltüntetve, az A2 tartalmának pedig nem volt jelentése. A háromcímes parancsot könnyű volt megfejteni, és kényelmes volt a használata, de a RAM mennyiségének növekedésével a hossza túlságosan nagy lett. Valójában a parancs hossza három cím hosszának és a műveleti kódnak az összege. Ebből például az következik, hogy egy szerény, 1024 cellás RAM esetén egy parancs cím részének kiírásához 3 * 10 = 30 bináris bitre van szükség, ami technikai megvalósítás szempontjából nem túl kényelmes. Ezért megjelentek a kétcímes gépek, amelyekben az eredmény rögzítésére szolgáló cím kiiktatásával csökkentették a parancs hosszát. Az ilyen számítógépekben a művelet eredménye egy speciális regiszterben (összeadóban) maradt, és alkalmas volt a későbbi számításokhoz. Egyes gépeken az eredményt az egyik operandus helyett írták. A parancs további egyszerűsítése unicast gépek létrehozásához vezetett. Tekintsük egy ilyen számítógép parancsrendszerét egy konkrét egyszerű példán keresztül. Tegyük fel, hogy össze kell adnunk az A1 és A2 RAM-című cellákban tárolt számokat, és az összeget az A3-as cellába kell helyeznünk. A probléma megoldásához egy unicast gépnek három parancsot kell végrehajtania: bontsa ki az A1 cella tartalmát az összeadóba; add hozzá az összeadót az A2-ből származó számmal; írd az eredményt az összeadóból A3-ba. Úgy tűnhet, hogy egy unicast gépnek háromszor annyi parancsra van szüksége egy feladat elvégzéséhez, mint egy háromcímes gépnek. Valójában ez nem mindig van így. Próbálja meg megtervezni a saját programját az A5 = (A1 + A2)*AZ/A4 kifejezés kiszámításához, és látni fogja, hogy három háromcímes parancsra lesz szüksége, és csak öt unicast parancsra. Így egy unicast gép bizonyos szempontból még hatékonyabb, mivel nem ír a memóriába felesleges köztes eredményeket. A teljesség kedvéért szót kell ejteni egy olyan cím nélküli (nullacímű) gép megvalósításának lehetőségéről, amely speciális memóriarendezési módot - verem - használ. Egy ilyen gép alapelveinek megértéséhez elég részletes magyarázatra lenne szükség. Manapság gyakorlatilag nem használnak cím nélküli számítógépeket. Ezért csak arra szorítkozunk, hogy megemlítsük azt a tényt, hogy néhány programozható mikroszámológép (például „BZ-21” és „BZ-34” és hasonlók) egy hasonló elrendezésű parancsrendszer volt az alapja. Eddig a gépi utasítás szerkezetének leírásánál az információ címének intuitív fogalmát használtuk. Tekintsük most részletesebben és szigorúbban a RAM-elemek kezelésének kérdését. A memóriát legegyszerűbben az első két generáció számítógépeiben szervezték meg. Különálló cellákból állt, amelyek mindegyikének tartalmát egyetlen egységként olvasták vagy írták. Minden memóriacellának saját száma volt, amelyet címnek neveztek. Nyilvánvalóan a szomszédos RAM-cellák címei egymást követő egész számok, pl. eggyel különböznek. A szóban forgó számítógépek csak egy típusú adatokat (valós számokat) használtak, hosszuk megegyezett a gépi utasítás hosszával, és egybeesett a gép memóriájának és összes többi eszközének kapacitásával. Például rámutatunk arra, hogy egy tipikus második generációs számítógép cellája 36 bináris bitből állt. Nagyon gyakran egy programnak az volt a célja, hogy ugyanazokkal a képletekkel dolgozzon fel bizonyos mennyiségű egymás után elhelyezkedő cellák tartalmát (nyelveken magas szintű az ilyen jellegű struktúrákat később tömböknek nevezték). A számítógépek első két generációja speciális mechanizmusokat biztosított az információtömbök ciklikus feldolgozásához. Erre a célra a gépi utasításokban a szokásos címek mellett olyan módosítható címeket is lehetett használni, amelyekben egy speciális vezérlőbitet egyre állítottak. A parancs végrehajtásakor az így megjelölt módosított címeket a speciális indexcellákból származó értékkel adtuk hozzá. Az indexcellák tartalmának változtatásával lehetőség nyílt a tömb különböző elemeinek elérésére. Külön hangsúlyozzuk, hogy a kapott cím kialakítása a parancs végrehajtásának időpontjában a vezérlőegységben történt, így az eredeti parancs a RAM-ban változtatás nélkül elmentésre került. A leírt címmódosítási mechanizmus jelentősen leegyszerűsítette a ciklikus programok írását, mint például az egymást követő RAM-cellák összegének megtalálását, az egyes memóriaszakaszok másolását stb. A harmadik generációs számítógépekben a memóriaépítés ideológiája jelentősen megváltozott: a RAM-mal történő cseréhez szükséges minimális információ mennyiségét 8 bináris számjegyre szabták, azaz. egy bájt. Lehetővé vált többféle adat feldolgozása: szöveges karakterek (1 bájt), egész számok (2 bájt), valós számok hétköznapi vagy dupla pontossággal (4 vagy 8 bájt). Ezzel kapcsolatban egy új, hagyományos információmérési egységet vezettek be - a gépszót. 4 bájt volt, és megfelelt a szabvány hosszának valós szám. Az összes információ mennyiségét olyan egységekben kezdték mérni, amelyek a szó többszörösei: kettős szó, félszó stb. Természetesen a cím (RAM cellaszám) a bájtszervezésű gépekben elkezdett egy külön bájtra utalni; A memória bájtok száma eggyel nő. Egy szó több egymást követő bájtból áll. Egy szó címeként célszerű az azt alkotó bájtok egyikének címét venni (általában a legkisebb számú bájtot használják). Így a szavak címei már nem változnak egy után; növekményük a gépi szó bájtban mért hosszától függ, és egyenlő néggyel. A gépi szó méretét láthatóan a feldolgozott információ formátumai alapján választották meg, nem pedig az eszközök bitkapacitásával összefüggésben. Ennek megerősítésére álljon itt néhány tény az EC család tipikus harmadik generációs számítógépeiről. Az EC-1022 modell aritmetikai-logikai egysége 16, az EC-1033 32, az EC-1050 pedig 64 bites volt. Ugyanakkor az ES-1022 és ES-1033 RAM-hoz való hozzáféréshez 4 bájt, az ES-1050 esetében 8 bájt (és az ES-1045 esetében 16 bájt) lett kiválasztva. Így a számok sokfélesége azt jelzi, hogy 32 bit (4 bájt) nem valami technikailag lefoglalt információmennyiség. Számos további funkció jelent meg a harmadik generációs autókban: különböző hosszúságú parancsok az adatok címzési módjától függően, speciális ultra-random regisztermemória megléte, a tényleges RAM-cím kiszámítása több regiszter összegeként stb. Mindezt a negyedik generációs számítógépekben fejlesztették tovább, amelyeknél a mikroprocesszor bitkapacitása az egyik a legfontosabb jellemzőket. A negyedik generációs számítógépmemória szerkezeti jellemzőinek vizsgálatát a következő fejezetre halasztjuk.

A számítógép-architektúra fontos eleme az utasításrendszer, ezért ezt a kérdést tovább fogjuk vizsgálni.

Alatt csapat megérteni a bináris kódok formájában bemutatott információk összességét, amelyek a processzornak a következő lépés végrehajtásához szükségesek.

A parancskódban bizonyos bitek (mezők) vannak lefoglalva, hogy információkat tartalmazzanak:

A művelet típusáról,

azon RAM cellák címei, amelyekben a feldolgozott adatokat tárolják,

Memóriacellák címei, ahová a művelet eredménye meg lesz írva.

Egy előre egyeztetett mezőszerkezetet hívunk, amely lehetővé teszi a számítógép számára, hogy felismerje a parancskód összetevőit Parancs formátum .

A parancsformátumok példái az 5. ábrán láthatók.

5. ábra

A parancskód fő eleme a műveleti kód (OPC), amely meghatározza, hogy milyen műveleteket kell végrehajtani ezen a parancson. A formátum N legjelentősebb bitje van hozzárendelve.

A fennmaradó bitek tartalmazzák az A1-et és az A2-t - az operandusok címét, az A3-at - az eredmény címét.

A mezők elosztása a parancsformátumban változhat a címzési mód megváltoztatásakor.

A parancs hossza a címmezők számától függ. A címek száma alapján a csapatokat cím nélküliekre osztják; egy-, két-, háromcímű.

Emlékezzünk vissza, hogy a parancskód információkat tartalmaz azokról az adatokról, amelyeken valamilyen műveletet végre kell hajtani. Ezeket az adatokat operandusoknak nevezzük. Az operandusok általában a számítógép RAM-jában vagy regisztermemóriájában találhatók. Az operandusok memóriában való megtalálásának módja az utasítás formátumát is meghatározza.

Az operandusok memóriában történő keresésének két különböző alapelve van: asszociatív és cím:

- Asszociatív keresés (keresés egy memóriacella tartalma alapján) magában foglalja az összes memóriacella tartalmának megtekintését, hogy azonosítsa a parancs által meghatározott asszociatív jellemzőt tartalmazó kódot.

- Címkeresés feltételezi, hogy az operandus a parancscímmezőben megadott címen található.

Különbséget teszünk az operandus végrehajtó címe és az utasítás címkódja között.

Operandus végrehajtási cím a memóriacella számának bináris kódja, amellyel az operandust írjuk vagy olvassuk.

Parancs cím kódja bináris kódnak nevezzük a parancs címmezőjében, melynek segítségével elő kell állítani az operandus végrehajtó címét. Számítógépben a címkód és a végrehajtó cím nem esik egybe, így a címzési mód úgy definiálható, hogy a parancs címkódjából a végrehajtó címet képezzük.

Ezeket a fogalmakat a továbbiakban az operandusok megszólítási módszereinek leírásánál fogjuk használni.

Az operandusok címzésének módszerei az operandusok memóriában való keresésének típusától függően osztályozhatók:

1) címinformáció jelenlétével a parancsban, hogy:

-explicit címzés. Ezzel a kódolási módszerrel a parancsnak van egy operandus címmezője;



- implicit címzés. Ennél a metódusnál nincs címmező az utasításban, és az operandus címét a műveleti kód implikálja. Például a cél-vevő címe kizárható az utasításból, ami azt jelenti, hogy az eredményt a második operandus helyére írjuk.

2) a RAM-hoz való hozzáférés gyakorisága szerint:

- közvetlen címzés. Közvetlen címzéssel az operandus közvetlenül a parancs címmezőjében található (6. ábra).

6. ábra

- közvetlen címzés (azonnali címzés). Közvetlen címzéssel az operandus a parancsmezőben található címkód segítségével érhető el. Ebben az esetben a végrehajtó cím egybeesik a parancskód címével. Ezt a következő ábra szemlélteti (7. ábra).

7. ábra

- közvetett címzés. Közvetett címzés esetén az utasításkód megadja annak a memóriacellának a címét, amelyben nem maga az operandus található, hanem a címe, amelyet pointernek nevezünk. Ezt a következő ábra szemlélteti (8. ábra).

7. ábra

3) a memóriacellák címképzésének módszere szerint:

- Abszolút címzés tételezzük fel, hogy egy memóriacella címének bináris kódja teljes egészében kinyerhető vagy az utasítás címmezőjéből, vagy közvetett címzés esetén más cellából.

- Relatív címzés Tegyük fel, hogy az operandus bináris kódja több összetevőből áll:

B - alapkód;

És - index kód;

C - offset kód.

Ezeket az összetevőket különféle kombinációkban használják.

A relatív címzés típusai:



9. ábra

A regisztermemória az operandus címének kialakítására szolgál.

A tömbben lévő i operandus címét az operandustömb S eltolás által megadott kezdőcímének és az egyik regisztermemória regiszterbe írt i indexnek az összegeként határozzuk meg, amelyet indexregiszternek nevezünk.

Az indexregiszter címét a parancsban az Ai indexcímmező adja meg.

Minden i-edik ciklusban az indexregiszter tartalma állandó értékkel, általában 1-gyel változik.

Ha olyan tömböket használó programokkal szeretne dolgozni, amelyek hasonló műveleteket igényelnek a tömbelemeken, kényelmes az ilyen típusú címzés használata.

2) Auto-index címzés. Az automatikus indexelés során az RP regiszterben található közvetett címet a művelet végrehajtása előtt vagy után konstans mértékben növeli (auto-növekményes címzés) vagy csökkenti (automatikus dekrementális címzés).

3) Veremcímzés. A veremmemóriát széles körben használják a modern számítógépekben. Bár a verem hozzáférési címe nem szerepel a parancsban, a vezérlő áramkör generálja (9. ábra):

9. ábra

Egy rekord olvasásához csak egy regiszter áll rendelkezésre – a verem teteje.

Ezt a címzési módszert különösen a programmegszakító rendszer használja szubrutinok hívásakor.

A veremmemória a normál memória tetejére kerül megvalósításra veremmutató és automatikus indexelési címzés segítségével. Logikailag a veremhez hozzárendelt memóriacellák úgy vannak rendezve, hogy az utoljára írt címet olvassák be először, és az első írt címet olvassák utoljára. Ezt a logikai szervezetet egy speciális számláló alkotja. Ezt a számlálót SP veremmutatónak nevezik, amely egy mikroprocesszor-regiszter. Az a memóriacella, amelyben pillanatnyilagírható, például egy szubrutinból származó visszatérési címet hívjuk meg a verem tetején . A verem rendezésére szánt memóriacellák számát ún veremmélység . Az utolsó memóriacella, amelybe írni lehet, meghívásra kerül a verem alja . A verembe való írás autodekrementális címzéssel, az olvasás pedig autoinkrementális címzéssel történik (10. ábra).

10. ábra

Példa. C-ben írt szubrutin meghívása.

A C nyelvben az alprogramokat függvényeknek nevezzük. Egy függvénynek lehetnek argumentumai és lokális változói, azaz olyan változók, amelyek csak a függvény végrehajtása során léteznek. Tegyük fel, hogy egy függvény két integer típusú x és y bemeneti argumentumtól függ, és három a, b és c helyi változót használ, szintén egész típusú. A függvény egész értéket ad vissza.

Alprogram:

Fő program:

Például a program egy bizonyos pontján egy f függvényt hívunk meg x = 2, y = 3 argumentumokkal. A hívó program az f függvény x és y argumentumainak tényleges értékét a verembe tolja, a függvény első argumentuma a verem tetején, a második argumentum pedig alatta. Amikor egy függvényhívási utasítás végrehajtásra kerül, a visszatérési cím is a verem tetejére kerül. Amikor az f függvény elindul, a verem így néz ki:

A végrehajtás előtt az f függvénynek meg kell ragadnia egy memóriaterületet a veremben az a, b, c lokális változóihoz.

A megvalósított gépi műveletek halmaza alkotja parancsrendszer .

A számítógéptípusok nagy száma ellenére a legalacsonyabb („gépi”) szinten sok közös vonás van bennük.

Bármely számítógép parancsrendszere szükségszerűen tartalmazza az információfeldolgozási parancsok következő csoportjait:

1. Adatátviteli (cenzus) parancsok, amelyek információkat másolnak egyik helyről a másikra.

Csere processzor regiszterek között,

CPU és RAM,

Processzor és periféria telepítések.

2. Aritmetikai műveletek. Az alapvető aritmetikai műveletek általában az összeadást és a kivonást foglalják magukban (ez utóbbi leggyakrabban összeadásból következik). Ami a szorzást és az osztást illeti, sok számítógépben speciális algoritmusok segítségével hajtják végre.

3. Logikai műveletek, amelyek lehetővé teszik a számítógép számára a feldolgozott információ elemzését. Például összehasonlítási műveletek vagy a jól ismert logikai műveletek ÉS, VAGY, NEM. Ezenkívül gyakran hozzáadják az egyes kódbitek elemzését, alaphelyzetbe állítását és telepítését.

4. A bináris kód balra és jobbra vált. A parancscsoport fontosságának bizonyításához elegendő felidézni az oszlopszorzás szabályát: minden következő szorzatot egy ilyen sémában írnak le, egy számjegyet balra tolva. Egyes speciális esetekben a szorzást és osztást általában eltolás helyettesítheti (ne feledje, hogy egy nulla jobbra adásával vagy eltávolításával, azaz egy tizedes szám tényleges eltolásával 10-szeresére növelheti vagy csökkentheti).

5. Parancsok információ bevitelére és kiadására külső eszközökkel való cseréhez. Egyes számítógépekben a külső eszközök speciális szolgáltatási memóriacímek, így a bevitel és a kimenet népszámlálási parancsokkal történik.

6. Nemlineáris algoritmusokat megvalósító vezérlőparancsok. Ez elsősorban a feltételes és feltétel nélküli ugrásokat, valamint a szubrutin eléréséhez szükséges parancsokat (ugrás visszatéréssel) tartalmazza. Egyes számítógépek speciális parancsokkal rendelkeznek a hurkok szervezésére, de ez nem szükséges: egy hurok redukálható a feltételes és feltétel nélküli átmenetek egyik vagy másik kombinációjára. Gyakran ugyanez a parancscsoport tartalmaz néhány műveletet a processzor vezérlésére – például a „stop” vagy a NOP („nincs művelet”). Néha egy speciális csoportba különülnek el.

Tekintettel a parancsrendszerre, nem lehet nem említeni két modern, egymással versengő irányt a felépítésében: egy számítógép teljes parancskészlettel CISC (Complex Instruction Set Computer) és egy korlátozott készlettel - RISC (Reduced Instruction Set Computer). A felosztás abból fakadt, hogy a számítógépnek legtöbbször a parancskészletének egy kis részét kell végrehajtania, a többit pedig alkalmanként. Így, ha jelentősen korlátozza a műveletek halmazát a legegyszerűbbre és a legrövidebbre, akkor egy meglehetősen hatékony és gyors RISC-gépet kap. Igaz, a sebességért fizetnie kell az „eldobott” parancsok szoftverben való megvalósításának szükségességével, de gyakran ez a fizetés indokolt: például tudományos számításoknál vagy számítógépes grafikánál a sebesség sokkal fontosabb, mint a programozási problémák.