1 / 14

5B040: Computerarchitectuur 2M200: Inleiding Computersystemen

5B040: Computerarchitectuur 2M200: Inleiding Computersystemen. Sessie 7(1): Flow of Control. Sprongen. Program counter. Program counter. Time. Time. Sequentiele programma’s en sprongen. ‘Gewone’ commando’s verhogen PC met 1. PC is dan een lineare functie in de tijd.

nubia
Download Presentation

5B040: Computerarchitectuur 2M200: Inleiding Computersystemen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 5B040: Computerarchitectuur2M200: Inleiding Computersystemen Sessie 7(1):Flow of Control

  2. Sprongen Program counter Program counter Time Time Sequentiele programma’s en sprongen • ‘Gewone’ commando’s verhogen PC met 1. PC is dan een lineare functie in de tijd. • Met sprongen wordt deze lineariteit verbroken.

  3. Procedure A Procedure B call return Subroutines: • Bestaan uit een aanroep (call) en een terugkeer (return) • Slaan terugkeeradres op in de stack (voor recursie)

  4. Voorbeeld met recursie: n! met recursieve procedure: procedure(var n:integer);var h:integer;begin if (n1) then begin h:=n; n:=n-1; fac(n); n:=h*n; endend;

  5. In assembler: Stack main: CJNE A,#01,mult CJNE A,#01,mult CJNE A,#01,mult CJNE A,#01,mult SJMP exit SJMP exit mult: PUSH ACC PUSH ACC PUSH ACC adr DEC ACC DEC ACC DEC ACC 2 ACALL main ACALL main ACALL main adr: POP B POP B POP B adr MUL A,B MUL A,B MUL A,B 3 exit: RET RET RET RET ??

  6. Coroutines: • Gaat om twee procedures die afwisselend gedeeltelijk worden uitgevoerd. • Coroutines roepen elkaar expliciet aan. • Geen call en return, maar resume opdracht. • Kunnen worden gebruikt voor simulatie van multi-processing.

  7. Stackgrootte blijft constant! (Exchange!) resume b resume a Coroutines: voorbeeld coroutine a coroutine b stack: a1 b1 a4 b3 a3 b1 a2 b4 b2 a2 b2 a3 b3 a4 b4

  8. Coroutines:nadelen voor multitasking • Maximaal 2 routines ‘tegelijk’ • Programma moet zelf ‘exchange’ uitvoeren • Geen ‘echte’ multitasking, omdat plaatsen onderbrekingen in het programma bekend zijn (nl bij de ‘exchange’ commando’s)

  9. Foutje; bedankt: TRAPS! • Traps worden veroorzaakt door uitzonderlijke gevallen in het programma (overflow etc.) • Worden gegenereerd door het programma zelf. • Roepen automatisch en onmiddelijk een speciale procedure aan (trap-handler). • Vervangen veel expliciete controles in programma’s. • Programma’s daardoor sneller (en minder fautgevoelig)

  10. Effe storen: INTERRUPTS! • Interrupts onderbreken het lopende programma van buitenaf. • Zijn qua timing onvoorspelbaar. • Voorkomen veel wachttijd van de CPU. • Kunnen veel oorzaken hebben (I/O, timer-overflow, binnenkomend gesprek bij fax) • Roepen een interrupt-handler aan.

  11. Hardware: interrupt ontvangen • Toestel geeft interrupt signaal aan CPU • CPU handelt huidige commando af en geeft bevestiging aan het toestel • Toestel geeft extra informatie (bv. IRQ-nummer, sprongadres of tabel-index) • {CPU haalt informatie op en bewaart die tijdelijk} • CPU zet PC (en vaak PSW) op de stack • CPU roept interrupt handler aan (welke dat is, is afhankelijk van de extra informatie)

  12. Hardware: interrupt (voorbeeld) I/O CPU Memory adres ACK Vector SP Tabel IRQ PSW PC Stack Hulp data

  13. Software: interrupt afhandelen • Bewaar alle registers. • Zoek uit welk toestel de interrupt veroorzaakte • Haal overige gegevens op (status etc). • Handel de interrupt af(bijv. I/O error, volgende programma starten etc.) • Geef aan toestel door dat interrupt is afgehandeld • Herstel alle registers • Geef Return From Interrupt commando

  14. Interrupts: opmerkingen • Interrupt handlers moeten transparant zijn. • Als interrupts te lang duren(langer dan de periodetijd van de interrupt)krijgt het hoofdprogramma geen kans om verder te draaien. • Voor tijdkritische interrupts(bijv. tijdens het branden van een CD)worden high-priority interrupts gebruikt. • Zijn veel beter voor multitasking dan coroutines.

More Related