cap.5 sisteme cu microprocesor motorola mc680x0cpop/cursuri_smp/smp7/smp7... · cap.5 sisteme cu...

27
Cap.5 Sisteme cu microprocesor Motorola MC680x0 Sunt procesoare CISC care au evoluat in paralel cu microprocesoarele INTEL 80x86. Generatia 680x0 a inceput cu microprocesorul 68000, un procesor pe 16 biti, urmandu-i microprocesorul 68020 - procesor pe 32 biti, actualmente existand in paralel cu Pentium INTEL si microprocesoare Motorola MC68060. Vom studia sistemele cu microprocesot Motorola 68020. 5.1. Microprocesorul MC68020 5.1.1. Pini si semnale MC68020 are 132 de pini si date pa 32 biti, iar MC68000 are 64 pini si date pe 16 biti. Semnale: 1

Upload: others

Post on 22-Feb-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Cap.5 Sisteme cu microprocesor Motorola MC680x0

Sunt procesoare CISC care au evoluat in paralel cu microprocesoarele INTEL 80x86. Generatia 680x0 a inceput cu microprocesorul 68000, un procesor pe 16 biti, urmandu-i microprocesorul 68020 - procesor pe 32 biti, actualmente existand in paralel cu Pentium INTEL si microprocesoare Motorola MC68060.

Vom studia sistemele cu microprocesot Motorola 68020. 5.1. Microprocesorul MC68020 5.1.1. Pini si semnale MC68020 are 132 de pini si date pa 32 biti, iar MC68000 are 64 pini si date pe 16 biti.

Semnale:

1

Observatie: Semnalele dintre paranteze sunt pentru microprocesorul MC 68000, iar celelate sunt pentru MC 68020.

Spatiul de adresare: • 68000 => 10M direct68020 => 4G direct in fiecare din cele 8 spatii de adresare

Descrierea semnalelor: 1. FC0:2 (Function Code) Identifica spatiul de adresare pentru fiecare ciclu de magistrala.

FC2 FC1 FC0 Spatiul de adresare

0 0 0 Rezervat (nedefinit)

0 0 1 Spatiu date utilizator (accese mem.-instr.)

0 1 0 Spatiu program utilizator (instructiuni)

0 1 1 Rezervat (nedefinit) (definitii utilizator)

1 0 0 Rezervat (nedefinit) (definitii utilizator)

1 0 1 Spatiul date supervizor (accese mem.-instr.)

1 1 0 Spatiul program supervizor (accese mem.-instr.)

1 1 1 CPU spatiu (recunoasteri intreruperi)

( 1 1 1 ) la MC 68020 este folosit si pentru recunoastere breakpoint si operatii coprocesor. 2. A0:31 (A1:23) - iesiri de adresa cu trei stari.

La MC 68000 bitul A0 este folosit intern pentru a genera /UDS si /LDS.

3. /UDS, /LDS (Upper/Lower Data Strobe) - indica daca datele sunt transferate pe octetul superior sau inferior sau pe ambii octeti.

/UDS /LDS R | /W D8:15 D0:7 Operatii H H - - - - L L H Date 8:15 Date 0:7 Citire cuvant H L L - Date 0:7 Citire octet L H H Date 8:15 - Citire octet L L L Date 8:15 Date 0:7 Scriere cuvant H L L Date 0:7 Date 0:7 Scriere octet L H L Date 8:15 Date 8:15 Scriere octet

2

4. D0:31 (D0:15) - semnale bidirectionale de date cu trei stari; - se pot transfera 8b, 16b, 24b sau 32b per ciclu. 5. SIZ1, SIZ0 (Transfer Size) - iesiri trei stari ce indica numarul de octeti ramasi de transferat pe ciclul curent. - Codificare marime: SIZ1 SIZ0 Marime

0 1 Octet

1 0 Cuvant

1 1 3 octeti

0 0 Cuvant lung

OP3 Op2 |OP3 OP1 |OP2 |OP3

OP0 OP1 OP2 OP3 31 0

- Codificare offset adresa:

A1 A0 Offset

0 0 + 0 octeti ( incepand cu D31:D24)

0 1 + 1 octet ( incepand cu D23:D16)

1 0 + 2 octeti ( incepand cu D15:D8)

1 1 + 3 octeti ( incepand cu D7 : D0)

- Porturile: Port pe 32 de biti: D31 D0

Oct0 Oct1 Oct2 Oct3

Port pe 16 biti: D15 D0

Oct0 Oct1

Oct2 Oct3

Port pe 8 biti: D8 D0

Oct0 Oct1 Oct2 Oct3

- la citire date se respecta alinierea dupa offset (vezi mai jos) - la scriere alinierea dupa offset este:

3

SIZ1 SIZ0 A1 A0 octet: 0 1 * * 3 | 3 | 3 | 3 cuvant: 1 0 * 0 2 | 3 | 2 | 3 1 0 * 1 2 | 2 | 3 | 2 3 octeti: 1 1 0 0 1 | 2 | 3 | 0 1 1 0 1 1 | 1 | 2 | 3 - penrtu ca procesorul primeste D31 : D0

1 1 1 0 1 | 2 | 1 | 2 1 1 1 1 1 | 1 | 2 | 1 Cuvant lung: 0 0 0 0 0 | 1 | 2 | 3 0 0 0 1 0 | 0 | 1 | 2 0 0 1 0 0 | 1 | 0 | 1 0 0 1 1 0 | 0 | 1 | 0 - pentru specificarea portului se folosesc semnalele /DSACK0, /DSACK1. 6. Semnale control

MC 68020 initiaza un ciclu de magistrala furnizand adresa, marimea, codul fuctional, citire/scriere, inhibare cache si /ECS.

/OCS (Operand Cycle Start): - indica inceputil primului ciclu extern pentru o instructiune prefetch sau transfer de date. - este activat impreuna cu /ECS /ECS (External Cycle Start) - indica inceputul unui ciclu de magistrala de orice tip

Port cuv. lung Port cuvant Port octetMarime transfer SIZ1 SIZ0 A1 A0 D31:24 D23:16 D15:8 D7:0 D31:24 D23:16 D31:24

Octet 0 1 0 0 OP3 OP3 OP3 0 1 0 1 OP3 OP3 OP3 0 1 1 0 OP3 OP3 OP3 0 1 1 1 OP3 OP3 OP3

Cuvant 1 0 0 0 OP2 OP3 OP2 OP3 OP2 1 0 0 1 OP2 OP3 OP2 OP2 1 0 1 0 OP2 OP3 OP2 OP3 OP2 1 0 1 1 OP2 OP2 OP2

3 octeti 1 1 0 0 OP1 OP2 OP3 OP1 OP2 OP1 1 1 0 1 OP1 OP2 OP3 OP1 OP1 1 1 1 0 OP1 OP2 OP1 OP2 OP1 1 1 1 1 OP1 OP1 OP1

Cuvant lung 0 0 0 0 OP0 OP1 OP2 OP3 OP0 OP1 OP0 0 0 0 1 OP0 OP1 OP2 OP0 OP0 0 0 1 0 OP0 OP1 OP0 OP1 OP0 0 0 1 1 OP0 OP0 OP0

4

R/(W)': - citire (=1) / scriere (=0) /RMC (Read-Modify-Write Cycle): - este activat la inceputul primului ciclu de operatii RMC si ramane activ pe timpul tuturor ciclurilor de

operatii RMC. /AS (Address Strobe): - indica adresa valida pe magistrala de adrese; /DS (Data Strobe): - indica date valide pe magistrala de date; /DBEN (Data Buffer Enable): - semnal de activare buffere de date externe; - la citire este activat 1 ciclu de ceas dupa inceperea unui ciclu de magistrala si dezactivat odata ce /DS

este dezactivat; - la scriere este activat odata cu activarea lui /AS si tinut activ pe durata ciclului. /DACK1, /DSACK0 (Data Transfer and Size Acknowledge): - indica terminarea unei operatii cerute de transfer de date. - Codificare: /DSACK1 /DSACK

0

H H - inserare stari WAIT in ciclul curent de magistrala H L - terminare ciclu - marimea mag. date port este 8 biti L H - terminare ciclu - marimea mag. date port este 16 biti L L - terminare ciclu - marimea mag. date port este 32 biti

La MC68000: /DTACK: - acceptare transfer date; pana la primirea lui se insereaza automat stari WAIT. E (Enable): - ceas activare periferice (fE = 1/10 CLK; 6 CLK = low; 4 CLK = high) VPA (Valid Peripheral Address): - cerere date de la periferice; VMA (Valid Memory Address): - semnal de raspuns la VPA. 7. Semnale de intrerupere: /IPL2:0 (Interrupt Priority Level): - cereri de intrerupere codificate pe nivelul de intrerupere de la circuitul prioritar; - sunt decodificate intern; - /IPL2 reprezinta cel mai semnificativ bit. /IPEND (Interrupt Pending): - intrerupere in asteptare, ce a depasit masca prioritatii intreruperii curente din registrul de stare (SR). /AVEC (Autovector): - cere un autovector in timpul unui ciclu de recunoastere intrerupere (cand dispozitivul care a dat

intreruperea nu poate furniza un numar de vector).

5

8. Semnale control arbitrare magistrala: /BR (Bus Request): - cere de la un dispozitiv extern sa devina master pe magistrala; /BG (Bus Grant): - raspunsul la receptionarea unui /BR. /BGACK (BG Acknowledge): - raspunsul dispozitivului care a facut /BR ca a primit /BG. 9. Semnale control exceptii magistrala: /RESET - semnal bidirectional de initializare (ca iesire initializeaza doar dispozitivele externe) /HALT - indica suspendarea activitatii procesorului; sau cand este utilizat cu /BERR indica reintrarea procesorului in ciclul curent care a produs eroarea magistralei. La MC68000 poate fi si iesire pentru a indica o dubla conditie de eroare. /BERR (Bus Error): - semnal de eroare; indica operatie nevalida, sau cu /HALT duce la reintrare in ciclul curent. 10. Control cahe - /CDIS (Cache Disable) dezactiveaza cache-ul on-chip pentru un utilizator. 11. CLK - semnal ceas. 5.1.2. Diagrama bloc MC68020

6

5.1.3. Caracteristici: - cod obiect compatibil cu MC68000; - interfatare VIDE Graphics; - Cache de instr. on-chip; - Interfatare cu coprocesor ( MC68881 si MC68882 ) si cu MMU paginat ( MC68851 ) - Microarhitectura pipelined; - Suport total pentru memorie virtuala; - 4G direct adresabil x 8 spatii de adresare; - 16 registre pe 32 biti, cu scop general; - 2 registri pe 32 biti pentru 'stack pointer' si 5 registre de control speciale; - 8 moduri de adresare si 7 tipuri de date; - frecventa de lucru selectabila: 12.5, 16.67, 20, 25, 33.33 MHz; - 2 moduri de lucru: utilizator (user) si supervizor (supervisor). 5.1.4. Model programare (registre): 1. registre generale (pot fi utilizate si ca registre index);

a) D0 ÷D7 = 8 registre de date pe 32 biti (pot fi operanzi pe 8, 16 sau 24 de biti); b) A0 ÷A6 = 7 registre de adrese pe 32 biti (pot fi registre baza adresa)

31 16 15 0 Extindere semn Adresa operand 16b

31 0

Adresa operand 32 biti c) A7 - registru adresa pe 32 biti sau indicator stiva utilizator ( USP - User Stack Pointer);

2. PC - registru control program pe 32 de biti;

3. CCR - registru conditie cod (Condition Code Register)

15 8 7 0 0

CCR - contine octetul inferior al SR. 4. A7' (ISP) - registru adresa sau indicator stiva intrerupere (Interrupt Stack Pointer) in nivel supervisor

5. A7'' (MSP) - registru adresa sau indicator stiva master (Master SP) in nivel supervisor

ISP sau MSP activ in mod nivel supervisor se numeste SSP (Supervisor Stack Pointer);

6. Registru de stare SR (Status Register):

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

T1 T0 S M 0 I2 I1 I0 0 0 0 X N Z V C

T1, T0 - activare Trace

- mod de operare software echivalent modului hardware single-step.

S - supervisor / utilizator (1/0);

M - master / interrupt (1/0);

7

I2, I1, I0 - masca prioritate intreruperi;

X - extend; N - negative; Z - zero; V - overflow; C - carry.

SR0:7 => continut CCR in mod User.

7. Registru vector baza (VBR - Vector Base Register)

- contine adresa tabelei de vectori exceptii din memorie.

- Deplasamentul unui vector exceptii este adunat la (VBR) pentru a accesa tabela de vectori exceptii.

8. Registre cod functional alternant

• SFC (System Function Code)

• DFC (Data Function Code)

Atat SFC cat si DFC au 3 biti.

- contine valoarea spatiului de adresare (FC2:0)

9. Registre cache:

• Control (CARC - Address Control Register)

• Adresa (CAAR - Cache Address Register)

La MC 680000 avem:

• D0 ÷ D7 pe 32 biti

• A0 ÷ A6 pe 32 biti

• A7 ={USP / SSP} pe 32 biti

• PC (pe 32 de biti care utilizeaza doar 24 biti)

• SR (pe 16Biti ⇒ 0:7=User Byte; 8:15=System Byte);

are C, V, Z, N, X, I0:2, S si T= SR15.

5.1.5. Organizarea datelor si capabilitati de adresare

1. Operanzii instructiunilor

- pot sa rezide in registrele memoriei, insructiunile insele, de asemenea si in coprocesor;

- un operand poate fi: un singur bit, un camp de biti (1÷32), un octet, un cuvant, un cuvant lung, un

cvadruplu cuvant;

- marimea operandului este sau codificata explicit in instructiune sau definita implicit de operatia

instructiunii; instructiunile coprocesorului pot specifica orice marime de operand.

2. Organizarea datelor

- operanzi date pe 1, 8, 16, 32 si 64 biti;

8

- adrese pe 16 sau 32 biti;

- campuri de biti 1÷32 biti;

- date BCD (impachetate: 2 digiti/octet; neimpachetate: 1 digit/octet).

3. Moduri de adresare

a) directa la registru:

- de date: EA = Dn /* Dn

- de adresa EA = An /* An

b) indirecta la registru:

- de adresa: EA = (An) /*(An)

- de adresa cu postincrement: EA = (An)+ /* (An)

- de adresa cu predecrement: EA = -(An) /* -(An)

- de adresa cu deplasament: EA = (An) + d16 /*(d16, An)

c) indirecta la registru cu indexare:

- adresa cu deplasament pe 8 biti: EA = (An) + (Xn) + d8 /*(d8, An, Xn)

- adresa cu deplasament bazat: EA = (An) + (Xn) + bd /*(bd, An, Xn)

d) indirecta la memorie:

- postindexata: EA = (bd+An) + Xn.SIZE*SCALE + od /* ([bd, An], Xn, od)

- preindexata: EA = (bd+An + Xn.SIZE*SCALE) + od /* ([bd, An, Xn], od)

e) indirecta la PC cu deplasament:

EA = (PC) + d16 /* (d16, PC)

f) indirecta la PC cu index:

- cu deplasament pe 8 biti: EA=(PC) + (Xn) + d8 /* (d8, PC, Xn)

- cu deplasament bazat: EA=(PC) + (Xn) + bd /* (bd, PC, Xn)

g) indirecta la memorie prin PC:

- postindexata: EA = (bd+PC) + Xn.SIZE*SCALE + od /* ([bd, PC], Xn, od)

- preindexata EA = (bd + PC + Xn.SIZE*SCALE) + od /* ([bd, PC, Xn], od)

h) absoluta:

- scurta: operandul in memorie si adresa lui in cuvant extensie /* (xxx).W

- lunga: operandul in memorie si adresa lui in 2 cuvinte extensie /* (xxx).L

i) imediata:

- operandul este una sau amandoua cuvinte extensie. /* #(data)

9

Notatii:

EA - adresa efectiva;

An - registrul adresa numarul n;

Dn - registrul date numarul n;

Xn - registrul de adresa sau date utilizat ca registru index;

SIZE - marime index ( W = cuvant; L = cuvant lung );

SCALE - factor de scala (1, 2, 4, 8 pentru cuvant sau cuvant lung sau 8 pentru cvadruplu cuvant);

PC - contor program;

dn - deplasament de marime n;

bd - deplasament baza;

od - deplasament exterior;

( ) - adresare indirecta la registru;

[ ] - adresare indirecta la memorie.

4. Capabilitati de adresare ale familiei MC680x0

- compatibilitatea codului obiect a unui procesor anterior cu noii membri ai familiei.

Pentru MC68020:

- Instructiunea cu o singura adresa efectiva este in formatul cuvantului instructiune.

Anumite moduri de adresare indexate sau indirecte utilizeaza cuvantul instructiune urmat de un cuvant

extensie format scurt (brief) sau cuvant extensie format complet (full).

Format instructiune cu o singura adresa:

15 6 5 4 3 2 1 0 X ………………………………………………X Mod Registru

Cuvant extensie format scurt:

15 14 13 12 11 10 9 8 7 0 D/A Reg W/L Scala 0 Deplasament

Cuvant extensie format complet:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D/A Reg W/L Scala 1 BS IS Marime BD 0 I/IS

BD ( 0, 1 sau 2 cuvinte)

OD ( 0, 1 sau 2 cuvinte)

10

Registrul instructiune: numar registru general

Registrul extensie: numar registru index

D/A tip registru index ( 0 = Dn, 1 = An)

W/L: marime index ( 0 = cuvant ext. cu semn, 1 = cuvant lung )

Scala = factor scala ( 00 = 1; 01 = 2; 10 = 4; 11 = 8 )

OD: deplasament exterior;

BS: suprimare registru baza (0 = adaugare reg.baza; 1 = suprimare reg.baza)

IS: suprimare index (0 = evaluare si adaugare operand index; 1 = suprimare operand index)

BD: baza deplasament

00 = rezervat;

01 = fara deplasament (null)

10 = deplasament cuvant;

11 = deplasament cuvant lung.

I/IS: index/indirect selectie;

a) I/IS1:0 = 01 - fara OD

= 10 - cu OD cuvant

= 11 - cu OD lung.

b) IS; I/IS2:0 = 0000 si 1000 - fara indirectare memorie

= 0100 si 1100÷1111 – rezervati

c) IS; I/IS2 = 00a) - indirect preindexat

= 01a) - indirect postindexat

= 10a) - indirect la memorie.

La MC68000 cuvantul ext. este cel scurt de la MC68020 cu scala 00.

5. Alte structuri de date

a) Stiva sistem (System Stack)

Reg. A7 este utilizat ca indicator stiva (SP);

Bitii M si S din registrul de stare SR spun care indicator stiva este utilizat.

S = 0 => mod utilizator => USP este stiva sistem

S = 1 => mod supervisor => M = 1 -> MSP

M = 0 -> ISP

11

Modul S, M = 10 este cel initial pentru MC 68020 dupa reset si corespunde modului supervizor al MC

68010, 68008.

SSP refera MSP sau ISP.

Fiecare stiva sistem umple memoria de la adrese mari catre mici.

Actiuni:

- o subrutina CALL salveaza PC in stiva sistem activa si il restaureaza tot de acolo;

- in timpul procesarii unei intreruperi sau exceptii, PC si SR sunt salvati in stiva supervizor (ISP sau

MSP).

b) Stive program utilizator

Utilizatorul poate implementa stive cu registrul de adrese (An; n=0:6) indirect cu postincrementare si

predecrement mod adresare.

Stivele pot umple memoria in ambele directii.

Indicatii:

- utilizare mod predecremental pentru a decrementa registrul inainte ca sa fie utilizat continutul sau ca

indicator de stiva;

- utilizare mod postdecremental pentru a incrementa registrul dupa ….

- Implementarea stivei de la adrese H la adrese L:

-(An) = push; (An)+=pop.

- Implementare stiva adrese L la adrese H:

(An)+=push -(An)=pop

c) Cozi program utilizator

Ca la stive progr. Utilizator dar folosind reg. de adr. An si Am

An - pentru "push"; Am - pentru "pop".

Implementam coada H -> L -(An) - pentru "push";

-(Am) - pentru "pop".

Implementam coada L -> H (An)+ - pentru "push";

(Am)+ - pentru "pop".

12

5.1.6. Niveluri de privilegiu

a) Supervizor b) Utilizator

a) Cel mai privilegiat; toate instructiunile sunt executabile.

S = 1 Intr-un SO multitasking este mai eficient sa avem un spatiu de stiva supervizor asociata cu fiecare task

utilizator ( MSP ) si un spatiu separat de stiva pentru intreruperi asociate task-urilor ( ISP ). M = 1 => MSP. M = 0 => ISP.

SO seteaza MSP pentru fiecare task pentru a pointa la un spatiu relativ taskului din spatiul de date supervizor. MSP poate mentine separat informatia de control task pentru fiecare task utilizator. In executie si software-ul actualizeaza indic. MSP cand are loc o comutare de task-uri.

ISP poate fi utilizata in informatia de control intreruperi si spatiu de lucru asa cum cer rutinele de intreruperi.

Cu M = 0 avem aceleasi operatii ca la modulul supervizor al MC 68000, 68008, 68010. M este afectat de instructiunile:

MOVE la SR, ANDi la SR, EORi la SR, Ori la SR si RTE; De asemenea, procesorul salveaza automat valoarea lui M si o sterge in SR, ca parte a procesarii unei

exceptii pentru intreruperi. Toate exceptiile sunt executate la nivel supervizor. Toate ciclurile de magistrala generate in timpul procesarii exceptiei sunt referinte supervizor si toate

accesele la stiva utilizeaza indicatorii stivei supervizoare active. b) Cel mai putin privilegiat;

Majoritatea instructiunilor se executa la orice nivel de privilegiu, dar anumite instructiuni sunt privilegiate si se pot executa numai la nivel supervizor ( ex. STOP, RESET).

Pentru a preveni ca un program utilizator sa intre pe nivel supervizor, exceptand o maniera controlata, instructiunile care pot altera bitul S din registrul de stare SR sunt privilegiate.

Schimbarea nivelului de privilegiu

Pentru a schimba nivelul de prijilegiu de la utilizator la supervizor trebuie sa apara una din conditiile care fac ca procesorul sa execute procesarea unei exceptii. Aceasta cauzeaza o schimbare de la mod master la mod intrerupere.

Procesarea exceptiei salveaza valorile curente S si M in stiva supervizoare activa si apoi seteaza S fortand procesorul in nivel de privilegiu supervizor.

Cand exceptia procesata este o intrerupere si M este setat, atunci M este sters, punand procesorul in mod intrerupere. Executia instructiunii continua la nivel supervizor pentru a procesa conditia exceptiei.

Pentru reintoarcere in nivel privilegiat utilizator, o rutina sistem trebuie sa execute una din instructiunile:

MOVE la SR ANDi la SR EORi la SR Ori la SR sau RTE; aceste instructiuni pot modifica bitul S din SR.

13

5.1.7. Operare pe magistrala:

1. Ciclul "Read" (MC 68020)

Exemplu pentru citirea cuvintelor lungi de la porturi de 16b si 32b,

14

Obs.

- daca la sfarsitul lui S2 nu se primeste un /DSACKi activ, se insereaza intre S3 si S4 stari WAIT pana se

primeste.

- Oricare /AS sau /DS sezactivat in S5 duce la dezactivarea /DSACKi de catre dispozitivul extern.

- Oricare /AS si /DS raman active pana la S5

- /DSACKi ramane activ pana la dezactivarea /AS sau /DS

- datele sunt active incepand cu S4 si pana la S0

- /DBEN devine activ la inceputul lui S2 si este dezactivat la S5.

La MC 68000:

- are un ciclu citire cu S0÷S7

- A1:23, FC0:2 devin valide la inceput S1 si dezactivate la sfarsit S7

- /AS, /UDS, /LDS devin active la inceput S2

- /(R/W) este activ pe 1 de la inceputul S0

- /DTACK este luat in considerare la sfarsitul S4 (daca apare la inceput S3), altfel se insereaza stari

WAIT inainte de S5

- datele sunt preluate la inceput S5 si sunt valide pana la sfarsit S7

- /AS, /USD, /LDS sunt dezactivate la inceput S7, dupa care va fi dezactivat si /DTACK

- pe D8:15 se citesc octetii pari, iar pe D0:7 cei impari

2. Ciclul "Write" (MC 68020)

Exemplu pentru a scrie un cuvant lung la port 8b.

Obs:

- ca la citire cu exceptia datelor care sunt activate incepand cu S2 si /DBEN care devine activ la S1si

ramane activ pe durata intregii scrieri.

15

La MC 68000:

- are un ciclu scriere cu S0÷S9;

- A1:23, FC0:2 devin active la S1 si sunt dezactivate la sfarsitul lui S9

- /AS si R/(W)' devin active la S2 si sunt dezactivate la inceputul lui S9 si respectiv sfarsitul lui S9

- /UDS, /LDS devin active la S4 si sunt dezactivate la inceputul S9

- datele sunt valide incepand cu S3 si pana la sfarsitul lui S9

- /DTACK este luat in considerare la sfarsitul lui S6 , astfel se insereaza stari WAIT inainte de S7

- dupa dezactivarea /AS, /UDS, /LDS, este dezactivat si /DTACK

- pe D8:15 se scriu octeti pari iar pe D0:7 se scriu cei impari.

16

3. Ciclul "Write-Modify-Write" (MC 68020)

- executa o citire, modifica conditionat datele in UAL si poate sa scrie datele la memorie

- este o operatie indivizibila furnizand capabilitati de semafoare pentru sisteme multiprocesor

- procesorul activeaza pe tot ciclul semnalul /RMC si in acest timp nu raspunde cu /BG la un /BR

- operatia read-modify-write este utilizata doar in instr.

TAS ( test and set )

CAS si CAS2 ( compare and swap )

Obs.

- daca /DSACK nu este recunoscut la inceput S3, se insereaza stari WAIT inainte de S1

- la sfarsit S4 procesorul memoreaza datele

- pe perioada starilor intermediare Si (idle) nu se activeaza noi semnale de control

- S6÷S11 apar doar daca se cere si scriere

- Daca e cazul, A2:31 pot fi schimbate pe S6.

La MC 68000:

- are: read = S0÷S7

modify = S8, S9

write = S10÷S17

- A1:23 si FC0:2 sunt valide din S1 pana la S17 (inclusiv)

- /AS activ de la S2 la S7

- /UDS sau /LDS activ pe S2÷S7 si S12÷S17

- R/(W)' este 1 pana la S10 si apoi 0 pana la S17 (inclusiv)

- /DTACK este recunoscut la S5 (si dezactivat la S7) si la S15 (si dezactivat la S17)

- date in S3÷S7 si memorie la S5 si date out S11÷S17 (inclusiv).

17

18

4. Ciclul recunoastere intrerupere (MC 68020)

La MC 68000: - /IPL0:2 devin active pe sf. ciclului curent, dupa care se intra in ciclul de recunoastere intrerupere care

are S0÷S7; - A4:23 = adr, A1:3 = nivel intrerupere, FC0:2 =111 devin valide in S1-S7 (inclusiv); - /AS devine activ pe S2÷S7; /USD ramane pe 1 ca si R/(W)'; - /DTACK este recunoscut pe S5 (si dezactivat dupa dezactivarea /AS, altfel apar stari WAIT) - pe D0÷D7 apare vector de la port pe S4÷S7 (inclusiv) si este memorat pe S5.

19

5.1.8.Arbitrare pe magistrala

La MC 68000:

20

5.1.10. Memoria cache on-chip

- este cu mapare directa si 64 de intrari care constau dintr-un camp tag cu 24 de biti de adresa si valoare

FC2, un bit de validare (V) si 32 de biti (2 cuvinte) de instructiuni date.

Daca este activ, cache-ul de instructiuni este utilizat pentru a memora instr. Prefetch. Oricand apare un fetch de instructiune, cache-ul (daca este activ) este verificat intai pentru a vedea daca cuvantul cerut este in cache (conf. figura). Daca V=0 si iesire comparator “=” => hit. Daca V=1 sau iesire comparator ≠ => miss si se face autoactualizarea. CACR

31 7 6 5 4 3 2 1 0 0 ………0 0 0 0 0 C CE F E

C – enable cache = 1 – activ F – freeze cache = 1 – nu se pot inlocui CE – clear entry = 1 – sterge intrare cache C – clear cache = 1 – sterge toate intrarile cache.

CACR 5÷31 = rezervati.

CAAR

31 8 7 2 1 0 TAG INDEX

21

5.1.10 Interfatare cu coprocesor

5.1.11 Interfatarea sincrona MC 68000 cu periferice 6800

22

23

/DTACK nu e utilizat pentru ca nu e vorba de transfer asincron de date;

E = 1/8 CLK.

Ex. A) interfatarea cu MC 6821S (PIA) (Peripheral Interface Adapter)

Logica de decrementare CS este functie de spatiul de adresare; CS2 poate fi chiar /VMA.

7 6 5 4 3 2 1 0

IRQ1 IRQ2 CA2 Control DDRA Access CA1 Control

CRA (CRB)

La operare cu MC 6821s avem:

- nu mai sunt folosite /VPA si /VMA;

- /AS intra intra in logica de codificare /CS2 anterioara iar iesirea ei merge astfel incat merge la /CL

bistabilelor si la /OE (Latch-buff-data) fara sa se mai combine cu /VMA sau INTACK.

B. Interfatarea cu MC 6850 (ACIA – Asinchronous Communications Interface Adapter)

24

Obs.

Pentru CS0, CS1, /CS2 pot folosi logica similara ca la MC 6821, la fel si pentru /VPA si bufferul de

date.

Programare:

ORG $ 00000000 ACIASR EQU $ Adr1 (fie $ 00F3FF00) ACIACR EQU $ Adr1 ACIADR EQU $ Adr2 (fie $ 00F3FF02) ACIATR EQU $ Adr2 SYSTACK EQU $ Adr3 (fie $ 00020000) RESET EQU $ Adr4 (fie $ 00000008)

DC.L SYSTACK DC.L RESET

MOVE.B # $03, ACIACR ; RESET ACIA MOVE.B # $51, ACIACR ; INIT ACIA

ERROR MOVE.B ACIASR, D0 ; GET STATUS AND.B #$7C, D0 ; MASK IRQ, TDRA, RDA BNE ERROR ; ANY ERRORS?

READS1 BTST #01, ACIASR ; BNE READS1 ; MOVE.B ACIADR, D0 ; READ CHAR READS2 BTST #02, ACIASR ; ESTE TDRA SET? BNE READS2 ; MOVE.B D0, ACIATR ; TRANSMIT CHAR BRA ERROR ; START OVER END .

25

C. Interfatarea cu MC6844 (DMA) si MC 6854 (ADLC– Advanced Date Link Control)

- operare sincrona

- Interfata asincrona cuprinde bufferele bidirectionale de date si logica aferenta.

26

D. Lucrul cu intreruperi

27