22. maj 2003 - 10:06Der er
19 kommentarer og 1 løsning
generelle CPU spg.
Når man i en CPU har en stack(S), en stack pointer(SP), en datapointer(DPTR), en program counter(PC) og en række registre, så har jeg lidt svært ved at skelne mellem hvad der er hvad, og hvad de forskellige lagringspladser bruges til. Jeg ved at PC holder styr på hvilken instruktion der skal udføres som den næste. Disse instruktioner som PC peger på ligger i en hukommelse (Hvor ?) Desuden, hvad er det DPTR peger på? Den peger så vidt jeg ved på en addresse ude i noget ekstern RAM. Korrkt ? Hvis ja..hvorfor er det smart at bruge addresseplads derude...Altså et helt andet sted? Og til sidst, Stacken...hvad er det og hvad bruges den til. Det samme med stackpointeren? Så vidt jeg har forstået er det noget med nogle subrutinekald(interrupts). Når et sådant kommer, bliver registreværdierne pushet op på stacken. Når subrutinekaldet er færdigt, bliver disse poppet tilbage til registrene igen, så CPUen kan fortsætte hvor den slap før subrutinekaldet. Er det helt forkert forstået ? Hvis der er nogle der kan være så venlige at forklare mig alt dette lidt uddybende ville jeg være glad...Takker på forhånd.
Program kode ligger i normal hukommelse. Og PC peger på hvor man er kommet til.
Stak ligger også i normal hukommelse og bruges til: - automatisk variable (i C alle variable erklæret inde i funktioner som ikke har static keyword) - diverse i forbindelse med funktions kald - memory allokeret med alloca (hvis C koden er >20 år gammel)
SP peger på top/bund af stak. Og allokering af 4 bytes gøres ved at tælle SP 4 op eller ned (afhængig af hvordan stakken vender).
PUSH = lig en værdi på toppen af stakken POP = fjern en værdi fra toppen af stakken
oki...Lige præcis det jeg er i gang med at lære om er en mikroprocessor. En 8051'er. Så dvs. at registerværdierne ikke blir gemt på stacken vedet interrupt ?
et spørgsmål til hvis det er i orden...Du skal nok få flere pts. hvis du vil ha det. Men i den 8051 jeg læser om kører krystallen med en frekvens på 11.059MHz Hvad jeg ikke forstå er at en machincycle er på 12 crystal pulser. Betyder det så ikke at processoren kun kører med en hastighed af ca. 1 MHz ?
for at kunne virke skal de forskellige busser indin CPUen konstant synkroniseres. Det gøres med clock-pulsen der sørger for at et resultat først bliver sendt videre når den giver signal.
forestil dig fc en addition: 111111111 + 00000001
der kommer mente hele vejen op så additionen af de laveste bit er færdig længe før de højeste bit er bergnet (de skal jo vente på at menten når op til dem)
Men det er absolut ikke nogen naturlov at der skal gå en hel clockpuls imellem de synkroniseringer. i den gamle 6800 CPU var der 4 (jep FIRE) synkroniseringer for hver clock-cyklus.
De 2 er nemme nok: en når clock signalet stiger, og en når det falder De 2 andre blev lavet ev at forsinke klokken lidt og så også bruge stigende og faldende flanke der.
Den store bagdel ved metoden var så at imens 8080 kunne prale med en 2 MHz clock havde 6800 'kun' en 0,5 MHz clock. Jeg tror det var en god del af grunden til at Intel vandt CPU-krigen, de lød hurtigere, selvom der reel ikke var nogen forskel i hastigheden på de to processorer.
Yep..sorry...:) Gode svar i har givet. Tusind tak...Bukker dybt og ærbødigt :D
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.