Register eller RAM
Re: Register eller RAM
Tänk, jag som trodde det var exekveringstid man räknade.
Men då tar jag fram en CPU som har en instruktionscykel på 40 klockcykler. Den fixar loopen på EN instruktionscykel.
Men då tar jag fram en CPU som har en instruktionscykel på 40 klockcykler. Den fixar loopen på EN instruktionscykel.
Re: Register eller RAM
Nja, man räknar ju alltid exekveringstiden i instruktionscykler, sedan får man multiplicera detta med tiden för en instruktionscykel, normalt sett.
Detta eftersom man faktiskt i olika applikationer köra olika oscillatorfrekvenser.
Antalet klockcykler är en instruktion behöver är rätt ointressant, det enda intressanta är hur många instruktionscykler det tar att utföra en operation, samt vid tidskritiska applikationer hur lång tid en instruktionscykel tar.
En annan nackdel med AVR's minneshantering är att när du till exempel får ett interrupt, måste samtliga register läggas på stacken.
I en PIC räcker det i princip att byta bank.
Detta eftersom man faktiskt i olika applikationer köra olika oscillatorfrekvenser.
Hur då.Den fixar loopen på EN instruktionscykel.
Antalet klockcykler är en instruktion behöver är rätt ointressant, det enda intressanta är hur många instruktionscykler det tar att utföra en operation, samt vid tidskritiska applikationer hur lång tid en instruktionscykel tar.
En annan nackdel med AVR's minneshantering är att när du till exempel får ett interrupt, måste samtliga register läggas på stacken.
I en PIC räcker det i princip att byta bank.
Re: Register eller RAM
"sedan får man multiplicera detta med tiden för en instruktionscykel"
Precis, och tiden för en instruktionscykel är proportionell mot hur mycket klockcykler en instruktionscykel är.
Man måste inte lägga ALLA register på stacken, grundläggande programmeringskutym är att man pushar de register man använder på stacken (och popar dem före retur).
Byta bank fungerar säkert bra så länge man inte har rekursiva funktioner. Men hur löser du en rekursiv funktion på en PIC?
Precis, och tiden för en instruktionscykel är proportionell mot hur mycket klockcykler en instruktionscykel är.
Man måste inte lägga ALLA register på stacken, grundläggande programmeringskutym är att man pushar de register man använder på stacken (och popar dem före retur).
Byta bank fungerar säkert bra så länge man inte har rekursiva funktioner. Men hur löser du en rekursiv funktion på en PIC?
Re: Register eller RAM
> grundläggande programmeringskutym är att man pushar de register man använder på stacken (och popar dem före retur).
Notera att PIC (16F1xxx) har "Automatic Context Saving" vilket sparar ett antal
register "on-the-fly" vid interrupt resp vid retur utan extra processor cykler. D.v.s
• W register
• STATUS register (except for TO and PD)
• BSR register
• FSR registers
• PCLATH register
Kan vara en fördel vid korta/snabba interrupt. De sparade värderna
är tillgängliga för läsning och/eller modifiering om man vill det.
Notera att PIC (16F1xxx) har "Automatic Context Saving" vilket sparar ett antal
register "on-the-fly" vid interrupt resp vid retur utan extra processor cykler. D.v.s
• W register
• STATUS register (except for TO and PD)
• BSR register
• FSR registers
• PCLATH register
Kan vara en fördel vid korta/snabba interrupt. De sparade värderna
är tillgängliga för läsning och/eller modifiering om man vill det.
Re: Register eller RAM
Liknar lite grann Z80:s alternate register set (fanns dubbel uppsättning av de flesta register).
Jag har skissat hemma på en slags task switching (baserat på 50 Hz NMI) som utnyttjade det (men jag kom aldrig så långt med det, det var för att få lite kul med min gamla Spectravideo som jag försökte mig på det, till den hade jag extra minne som krävde bankswitching så det hade nog funkat fint med flera processer eftersom de kunde fått en egen bank att leka i).
Jag har skissat hemma på en slags task switching (baserat på 50 Hz NMI) som utnyttjade det (men jag kom aldrig så långt med det, det var för att få lite kul med min gamla Spectravideo som jag försökte mig på det, till den hade jag extra minne som krävde bankswitching så det hade nog funkat fint med flera processer eftersom de kunde fått en egen bank att leka i).