Építsünk Processzort Avagy mi is kell hozzá
Szóhossz és címtartomány meghatározása Legyen 8 bites, vagyis 1 bájtos (Ez mindig használatos) Címtartomány legyen két szó hosszú = 16 bit, 64 k (Ha józanul használjuk sok mindenre elég) Címtartomány bővítés: 3 bájt 24 bit = 16 M, 3 bájtos cím kezelése nehézkes, jobb megoldás a cím szegmentálása 4 bájt 32 bit = 4 M Közbülső cím tartomány, pl. 20 bit = 1 M előfordul, de belső kezelése bonyolultabb lehet. Tok lábszámra is gondolni kellene. Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Regiszterek - Legyen Akkumulátor - Kell egy rejtett közbülső regiszter az Aritmetika bemenetén - + legalább 6 regiszter - Lehessen (összerendelve) párosával is kezelni őket - Műveletek legyenek vonatkoztathatóak mindegyikre, (legalább néhányra), vagyis az Aritmetika kijelölt helyről kijelölt helyre is dolgozzon - Legyenek betölthetőek Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Aritmetika Legyen jelző (flag) bitekkel ellátva Elvégzendő műveletek (értelem szerint, külön parancsra, jelző bitek bevonásával is): - összeadás, 16 bites is - kivonás,16 bites is - növelés (increment), 16 bites is - csökkentés (decrement), 16 bites is - betöltés,16 bites is - komplementálások - forgatások (shift, rotate) - Logikai (bit) műveletek (ÉS, VAGY, KIZÁRÓ_VAGY, EKVIVALENCIA) - Perifériára vonatkozó be és kivitel Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Egyéb műveletek - Szubrutin hívása - Szubrutinból való visszatérés - Címnövelés művelet nélkül (NOP) - Megállítás (HALT) - Blokkos átvitelek - Megszakítás kiszolgáló utasítások Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Jelző bitek (flag-ek) - Signum MSB bit vizsgálatához - Zero flag (Minden bit 0) - P Paritas (1-k száma páros) - Túlcsordulás - Átvitel (Carry) - Közbülső átvitel, tetrád határán BCD-nél érdekes - Összeadás/kivonás jelzése - Megszakítás engedélyezése/tiltása Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Szubrutin híváskor mentés - Árnyék regiszterbe (pl. ’ regiszterek). Ez lehet külön utasítással is. - Verem tárba (STACK) címkezelés csökkenő, vagyis mélyülő irány Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Címszámlálók - Program cím - Veremtár (Stack) cím - Index regiszter 1, - Index regiszter 2 - Címző regiszter pár kezeléséhez Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Cím műveletek - Növelés 1-el, - Növelés 2-vel - Csökkentés 2-vel - Betöltés - Hozzáadás - Levonás - 0-ba állítás (PC, a RESET hatására) - Maximális értékre állítás (Stack, a RESET hatására) Cím módosítás végrehajtása címkezelésre épített aritmetikával Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Utasítás feldolgozása - Utasítás regiszter (Ebbe kerül a memóriából kiolvasott utasítás) - Utasítás dekóder. Értelmezi az utasítást, és előállítja a belső részek ütemezett vezérlő jeleit. Adatforrás (Regiszter) kijelölése, ha kell a következő memória cím(ek) beolvasását vezérli. - Memória cím műveletek vezérlése - Aritmetika vezérlő jelei - Aritmetika kiegészítések vezérlő jelei, pl. Paritásképzés, BCD korrekció, léptetés vezérlések, stb. - Flag-ek beíró jelei - Külvilág vezérlő jelei Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Megszakítás kezelése - Megszakítás engedélyezés/tiltás kezelése - Az Engedélyezés végrehajtás egy utasítás lehívó ciklussal való késleltetése - Megszakítás elfogadás vizsgálati helyének kijelölése - Kérelem sorba állítás - Megszakítással kapcsolatos bejövő, vagy belső utasítás, illetve adat kezelése - Megszakítás elfogadási sorozat vezérlése - Veremtár (Stack) kezelése, első a cím mentése - Megszakítási rutin kezdőcím beállítása - - Megszakítás befejezése utasítással kapcsolatos ciklus(ok) szervezése. - Stack kezelés, visszatérési prioritás kezelése. Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Vezérlő (Control) jelek előállítása) - Utasítás lehívás (Fetch, vagy M1 ciklus) - Memória művelet jelzése {tri-state} - Periféria művelet jelzése (ha külön van ilyen) {tri-state} - Megszakítás művelet jelzése (ha külön van ilyen) - Megállítás: Halt művelet jelzése (ha külön van ilyen) - Olvasás ciklus {tri-state} - Írás ciklus {tri-state} - Felfüggesztés kérelem elfogadó jel kezelése Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Bemenő jelek - Órajel. Általában technológiai okokból, valamely különleges feltétellel rendelkezik - RESET Aszinkron általános törlő jel. Minimális hossza, és a vezérlő jelekhez megkívánt szinkronizmusa betartandó. - Megszakításkérések: - Engedélyezhető. ez a „Maszkolható”, - Mindig érvényre jutó, nem maszkolható. - Végrehajtás várakoztatás kérése Wait, vagy Ready bemenet - Működés felfüggesztés kérése (BUSREQ) Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Adatforgalom - Kétirányú sínmeghajtón keresztül - Tri-state állapotba vezérelhető - Az utasítás is itt jut be Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Cím meghajtás Tri-state kimeneti meghajtó Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Utasítás fajták Külön tárgyalandó kérdés - Milyeneket és mennyit akarunk Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Egy lehetséges utasítás készlet: Utasítások csoportjai: Aritmetikai utasítások Logikai utasítások Boole műveletek Adatmozgató utasítások Program elágazások Vezérlő utasítások Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Utasítások lehetséges szerkezetei: Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Aritmetikai utasítások (1) Összeadás Akkuhoz átvitel bittel, és nélküle: - Konstans - Regisztertartalom, - direkt címzett bájt - indirekt címzett bájt Kivonás Akkuból kölcsön bittel, és nélküle: - Konstans - Regisztertartalom, - direkt címzett bájt - indirekt címzett bájt Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Aritmetikai utasítások (2) Inkrementálás: - Konstans(ot) - Regisztertartalom, - Direkt címzett bájt - Indirekt címzett bájt - Adat címző regiszteren keresztül címzett tartalom Dekrementálás: - Konstans - Regisztertartalom, - Direkt címzett bájt - Indirekt címzett bájt Helyesbítés BCD számok összeadása után Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Logikai utasítások (1) ÉS (AND) Akkuhoz (eredmény A-ba kerül) - Konstans - Regisztertartalom, - direkt címzett bájt - indirekt címzett bájt Direkt címzett bájt (direkt helyére kerül) .- Akku .- Konstans VAGY (OR) Akkuhoz (eredmény A-ba) - Konstans - Regisztertartalom, - direkt címzett bájt - indirekt címzett bájt Direkt címzett bájt (direkt helyére kerül) .- Akku .- Konstans Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Logikai utasítások (2) KIZÁRÓ-VAGY (EXOR) Akkuhoz (A-ba) - Konstans - Regisztertartalom, - direkt címzett bájt - indirekt címzett bájt EKVIVALENCIA (EXNOR) Akkuhoz (A-ba) - Konstans - Regisztertartalom, - direkt címzett bájt - indirekt címzett bájt Direkt címzett bájt (direkt helyére kerül) .- Akku .- Konstans Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Logikai utasítások (3) Akku nullázása Akku bitenkénti negálása Akku balra (MSB felé) forgatása Carryn keresztül / nélkül Akku jobbra (LSB felé) forgatása Carryn keresztül / nélkül Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Adatmozgató utasítások (1) Akkuba töltés forrás: - Konstans - Regisztertartalom, - Direkt címzett bájt - Indirekt címzett bájt - Periféria Regiszterbe töltés forrás: - Konstans - Akkumulátor - direkt címzett bájt - Periféria Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Adatmozgató utasítások (2) Direkt címzett bájtba töltés forrás: - Konstans - Regiszter tartalom - Akkumulátor - direkt címzett bájt - indirekt címzett bájt Direkt címzett bájt (direkt helyére kerül) .- Akku .- Konstans Indirekt címzett bájtba töltés forrás: - Konstans - Akkumulátor - direkt címzett bájt Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Adatmozgató utasítások (3) Adat címző regiszterbe töltés forrás: - Konstans - Regiszter(ek) - Memóriából olvasott adat Relatív címzett programbájt beolvasása - Adatcímző regiszter-pár szerint - PC szerint Memóriában lévő adattár olvasása/ írása MOVX - 16 bites indirekt cím ((HL regiszter-pár)) Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Adatmozgató utasítások (4) Veremtár műveletek: - Mentés - Visszaolvasás - () Akkuval kapcsolatos cserék - Regisztertartalommal - direkt címzett bájttal - indirekt címzett bájttal Akku alsó négy bit felcserélése - indirekt címzett bájt alsó négy bitjével Akku felső, alsó tetrád felcserélése Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Boole műveletek (1) Vizsgálat: - Carryt (Flag biteket) - kijelölt bitet Törlés: - Carryt (Flag biteket) - kijelölt bitet 1-re állítás: - Carryt - kijelölt bitet Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Boole műveletek (2) Negálás: - Carryjé - kijelölt bité Carry és a kijelölt bit/ kijelölt bit negáltja - ÉS kapcsolata - VAGY kapcsolata Kijelölt bit betöltése - Carrybe Carry betöltése - kijelölt bitbe Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Programelágazások (1) Abszolút ugrás - 16 bites cím szerint Hívás abszolút címzéssel - 16 bites cím szerint Feltételes ugrás - Jelzők (Flagek) szerint - Relatív +- adott távon (többnyire 255 címen) belül - Indirekt (A) plus (HL, vagy index regiszter) - ha Akku 0/ nem 0 - A és direkt címzett bájt tartalma eltér/megegyezik - A és konstans eltér/megegyezik - ha regisztertartalom és a konstans eltér/megegyezik - ha az indirekt címzett bájt és a konstans eltér/megegyezik Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Programelágazások (2) Regisztertartalom dekrementálása, ugrás, ha nem 0 Regisztertartalom inkrementálása, ugrás, ha nem 0 Ugrás, ha a kijelölt bit 0/1 - Carry (Flag bitek) - kijelölt bit Ugrás, ha a kijelölt bit 1, majd a bit törlése Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Visszatérés szubrutinból - RET Bármely szubrutint lezárja - RETI Megszakítás szubrutint lezárja, feldolgozott megszakítás kérelmet törli (Egyes megoldásokban a periféria is feldolgozza) - RETN Nem maszkolható megszakítás kérelmet befejezi, a maszkolható engedélyező bitjét visszaállítja Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Vezérlő utasítások NOP: - Címet eggyel növeli HALT - Megállítja a működést (Alvó üzemmód) STOP - kikapcsolja a processzort (Csak a RESET-re éled újra) EI - Engedélyezi a megszakítást DI - Tiltja a megszakítás elfogadását Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Felhasználandó áramkörök - Tri-state kimenetű regiszterek (belső sínekhez) - Sín leválasztó erősítők - Aritmetikai-logikai elem ALU(k) - Léptető, vagyis Shifter - Paritás-generáló áramkör - Multiplexerek - Dekóderek, vagy PROMOK - Ütemvezérlő. Regiszter, vagy számláló alapú (esetleg mindegyik) - Flip-flopok - Kapuk Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Processzorhoz felhasználandó áramkörök (1) Tri-state kimenetű regiszterek (belső sínekhez) Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Processzorhoz felhasználandó áramkörök (2) Sín leválasztó erősítők Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Processzorhoz felhasználandó áramkörök (3) Aritmetikai-logikai elem ALU(k) Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Processzorhoz felhasználandó áramkörök (4) Léptető, vagyis Shifter Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Processzorhoz felhasználandó áramkörök (5) Paritás-generáló áramkör Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Processzorhoz felhasználandó áramkörök (6) Multiplexerek Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Processzorhoz felhasználandó áramkörök (7) Dekóderek, és/vagy PROMOK Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Processzorhoz felhasználandó áramkörök (8) - Ütemvezérlő, Regiszter, vagy számláló alapú (esetleg mindegyik) pl. a felépítés szükséglete szerinti ROM-s vezérléssel - Flip-flopok - Kapuk Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Működési ciklusok (ütemek) kialakításai Egy ütem: - 10-12 óraütem (azonos él) - 3-4 óraütem, él helyzete is fontos lehet - 1 (2) óraütem, él helyzete fontos példák (Z-80 elemi ciklusai) fóliáról Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Összetett utasítás időbeli lefolyása (1) CALL (szubrutin hívó utasítás és lefolyása) Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.
Összetett utasítás időbeli lefolyása (2) Grosz Imre f. doc. Építsünk Processzort 2005. 03. 29.