Presentation laddar. Vänta.

Presentation laddar. Vänta.

William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.

Liknande presentationer


En presentation över ämnet: "William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer."— Presentationens avskrift:

1 William Sandqvist william@kth.se Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer vid dataöverföring

2 William Sandqvist william@kth.se Buffertminnet är en ring En cirkulär buffer är som ett dataminne. Tar adresserna slut, börjar det om från början, dvs. slår runt – som vägmätaren på en bil

3 William Sandqvist william@kth.se C-funktioner void Putbuffer(char c) { buffer[tail] = c; if (tail == LENGTH) tail = 0; else tail++; } char Getbuffer(void) { char c; c = buffer[head]; if (head == LENGTH) head = 0; else head++; return c; }

4 William Sandqvist william@kth.se C-testprogram #include #define LENGTH 3 void Putbuffer(char); char Getbuffer(void); char buffer[LENGTH]; int head = 0; int tail = 0; int main(void) { Putbuffer('1'); Putbuffer('2'); Putbuffer('3'); Putbuffer('4'); Putbuffer('5'); printf("LENGTH = %d\n", LENGTH); printf("%c\n", Getbuffer()); system("PAUSE"); return 0; }

5 William Sandqvist william@kth.se LENGTH 3 eller 6 ?

6 William Sandqvist william@kth.se Buffertens storlek bufferten måste vara rätt dimensionerad, dvs talet LENGTH måste vara tillräckligt stort om ”tail” hinner upp ”head” blir det overflow overflow kan accepteras vid tex video och musik, men i allmänhet måste man ta hand om overflow tex. genom att ”stoppa” Putbuffer() eller ”dynamiskt öka” LENGTH

7 William Sandqvist william@kth.se Anpassa dataöverföringshastigheter Modem med buffer 56 Kbps Dator systembuss 400 Mbps Bufferten ger interrupt när den blir full och stoppar dataöverföringen från datorn Datorn kan göra annat nyttigt när överföringen stoppats

8 William Sandqvist william@kth.se Bufferstorlekens påverkan Bufferstorleken påverkar antalet Interrupt/Context switch. Ryms hela datamängden i bufferten blir det inga interrupt! (64 kByte buffer)

9 William Sandqvist william@kth.se Sifferexempel: Buffer Size = 4B (  Burd, table 6-4) Antag att datamängden 64 Kbyte (65536) ska överföras över en 32 bitars buss, dvs. med 4 Byte /T BUS 65536 /4 = 16384 T BUS Med Buffer Size 4 Byte blir det ett Off och ett On avbrott efter var fjärde överförd byte! Operativsystemet gör då ”Context switch” för att processorn ska kunna göra annat. Vi antar att detta tar 10 busscykler, 10 T BUS. (65536/4)*(10+10) = 327680 T BUS Totalt: 16384+327680 = 344064 T BUS !

10 William Sandqvist william@kth.se Buffer Size = 1024 Byte (  Burd, table 6-4) Samma datamängd 64 Kbyte (65536) ska överföras över en 32 bitars buss, dvs. med 4 Byte /T BUS 65536 /4 = 16384 T BUS Bufferstorleken ökas nu till 1024 Byte. Det blir ett Off och ett On avbrott efter var 1024 överförd byte! Antag att ”Context switch” som tidigare tar 10 T BUS. (65536/1024)*(10+10) = 1280 T BUS Totalt: 16384+1280 = 17664 T BUS ! Förbättring med 95%!


Ladda ner ppt "William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer."

Liknande presentationer


Google-annonser