Tentamen PC-teknik 5 p Lösningar och kommentarer Program: Di2, Em3 Datum: 06-01-12 Tid: 13:30-18:30 Lokal E171 Hjälpmedel: Linjal, miniräknare, Instruktionsrepertoar för 8086 (utdelas), Lathund, Pacific C för MSDOS (utdelas), Timer 8253 (utdelas). Bilagor: ASCII-tabell, Interrupt Examinator: Anders Arvidsson Telefon: 0707-76 28 86 Examinatorn besöker tentamen. Uppgifterna redovisas direkt i frågebladet. Vid utrymmesbrist lämnas svar på separat ark, vilket då numreras och hänvisas till från uppgiftsbladet. Max poäng: 25 Betyg Poäng 3 10 4 15 5 20 1 (7)
Tentamensfrågor 1. Vad skrivs ut på skärmen då nedanstående program körs? Tips: %c skrivs ut som ASCII-tecken. (Det framgår inte så tydligt i lathunden.) #include <stdio.h> void main(void) { char tenta; char test; tenta = 251&247; tenta = tenta >> 1; test = ( E - A ) C ; } printf("%d %c", (int)tenta, test); Svar: 121 G (2 p) 2. Vad kommer registren att innehålla för värde efter att nedanstående kod exekverats? Svara decimalt! Registervärdena betraktas som positiva heltal. (3 p) shr xor mul dx,#258 al,#0ffh ah,#2 bx,#72 cl,dl bx,cl dx,#3 cx,#260 cl ax: 1020 bx: 18 cx: 260 dx: 257 2 (7)
3. Skriv ett assemblerprogram som skriver ut ett X på skärmen varje sekund (så att hela skärmen efter en tid fylls med tecknet X). Tiden mellan varje tecken får inte variera mer än 0,2 sekunder. Minst en subrutin ska användas. Variabler får deklareras i C-kod, i övrigt skrivs all kod (förutom det nödvändiga för att skapa ett kompilerbart C-program) som assemblerinlägg. Programmet körs i en evig loop och behöver inte kunna avslutas. Programmet ska delas upp i tydliga delar och kommenteras del för del så flödet enkelt går att följa. Komplettera med kommentering rad för rad om det krävs, vilket också ökar möjligheten till tröstpoäng om något syntaktisk fel gör koden felaktig. Interrupt och ASCII-tabell bifogas i detta blad, medan ett häfte om timern utdelas separat. Det kan vara smart att lösa uppgiften sist. (4 p) #include <stdio.h> subrutiner() { #asm ; *** Skriver ut ett X efter föregående tecken *** PrintX: ah,#0eh ;Teletype mode al,#'x' ;Tecknet som ska skrivas ut bh,#0 ;Screenpage 0 bl,#1 ;Ger någon färg om grafikläge int #10H ;Skriv ut tecken (AL) ret ; *** Skapar en 1 sek fördröjning *** ; Läser av timer, kanal 1, som räknar runt 18 ggr/sek Delay1s: cx,#18 ;18 varv => 1 sek Low: in al,40h ;Låg byte in al,40h ;Hög byte and al, #10000000B cmp al, #0 ;Kolla om högsta bit = 0 je Low ;I så fall kolla igen High: in al,40h ;Låg byte in al,40h ;Hög byte and al,#10000000b cmp al,#0 ;Kolla om högsta bit = 0 jne High ;Om inte (dvs om 1), kolla igen loop Low ret ;Återvänd om ej CX antal varv } #endasm void main(void) { #asm NextX: call PrintX ;Skriver ut tecken call Delay1s ;vänta 1 sek jmp NextX } #endasm 3 (7)
4. Om man ändrar en processors matningsspänning eller klockfrekvens kan effektförbrukningen (och därmed värmeutvecklingen) tänkas påverkas. Markera med kryss nedan hur effektutvecklingen beror av dessa parametrar. b) Hur beror effektförbrukningen av klockfrekvensen? Inte alls Proportionellt mot frekvensen Proportionellt mot frekvensen i kvadrat Proportionellt mot frekvensen i kubik a) Hur beror effektförbrukningen av matningsspänningen? Inte alls Proportionellt mot matningsspänningen Proportionellt mot matningsspänningen i kvadrat Proportionellt mot matningsspänningen i kubik Ett rätt => 1 p. Kryss i fel ruta => 0 p på hela uppgiften. (2 p) 5. Är LOOP en typisk CISC- eller RISC-instruktion? Ett väl motiverat svar krävs för poäng. (2 p) LOOP är en typisk CISC-instruktion eftersom den lika gärna kunde ha delats upp i mindre komplexa (redan befintliga) instruktioner, t ex DEC CX JNE adress. LOOP blir dock kortare att skriva och tar mindre plats i minnet. 6. Ett DDR SDRAM är anslutet till en 64-bitars minnesbuss där överföringshastigheten är 3200 MByte/s. Med vilken frekvens klockas minnet? (2 p) 64 bit = 8 Byte, DDR = 2 överföringar/cykel (3200/8)/2 = 200 Svar: 200 MHz 4 (7)
7. Vad avses med begreppet Super South Bridge? Nämn också två uppgifter den tar hand. (2 p) Super South Bridge = South Bridge och Super I/O i samma krets. Den tar t ex hand om tangentbord och hårddiskanslutningarna. 8. Vad avses med IRQ (redogör för innebörden/funktionen) och vad är bakgrunden till att IRQ 8 har högre prioritet än IRQ3? (2 p) IRQ = Interrupt Request = Avbrottsbegäran, d v s en signal till processorn att avbryta vad som pågår för att ta hand om något annat. Första PCn hade en IRQ-kontroller med 8 kanaler, vilket utökades till 15 genom att ytterligare en kontroller till anslöts och kopplades till första kontrollerns kanal 2, vilket innebär att kanal 8 15 har högre prioritet än 3 7. (Slå på IRQ i bokens register för mer information.) 9. Beskriv två skillnader mellan den ursprungliga standardparallellporten och en parallellport av typen ECP. (2 p) En standardparallellport har enkelriktade dataledningar medan ECP-porten är dubbelriktad. ECP-porten kan använda en DMA-kanal vilket den ursprungliga porten inte klarar. 10. Jämför SCSI med parallell ATA (av modernt snitt) beträffande hastighet och antal enheter som kan anslutas. Berätta också vilken effekt hastighetsskillnaden har på datorns totala prestanda. (Lite grova termer är tillåtna, för poäng krävs att man tydligt visar att man förstått principerna, inte att man minns exakta siffror.) (2 p) SCSI är som regel snabbare och kan ansluta fler enheter ( 7 eller 15 jämfört med 4 till en ATA-kontroller, max 2 per anslutning). Eftersom läshastigheten från disken är mycket lägre än något av gränssnittens hastighet har valet av gränssnitt ingen avgörande betydelse för prestandan (åtminstone så länge man arbetar mot en disk). 11. Moderna hårddiskar använder som regel Zoned Recording. Förklara vad detta är, varför man använder det och på vilket sätt metoden påverkar läshastigheten. (2 p) För att utnyttja ytan på diskarna maximalt sparar man fler bytes (fler sektorer) i de yttre spåren än de inre, så antal sektorer/cm blir ungefär samma. Hårddisken är alltså indelad i zoner inifrån och ut med fler sektorer/varv desto längre ut vi går. Fler sektorer/varv => fler sektorer som passerar läshuvudet/sekund => högre läshastighet i ytterkanten. 5 (7)
Bilagor Interrupt INT 16H Function 00H Read Character from Keyboard. (Waits for keystroke) Register Call Value Return Value AH 00H Scan Code AL ASCII-Character Code (=0 if extended key) INT 10H Function 0EH Write Text in Teletype mode Writes an ASCII character to the display at the current cursor position, using the specified colour (if in graphics mode), then increments the cursor position. Register AH AL BH BL Call Value 0EH ASCII value screen page foreground color in graphics mode 6 (7)
7 (7)