Stżrikerfi I
09.12.41


Lokapróf 17. desember 1994


Leyfileg hjįlpargögn: Kennslubękur og fyrirlestranótur


1. [10%] Haršur diskur hefur 1152 spor (tracks), 28 geira (sectors) meš 512 bęti į geira. Auk žess er hęgt aš lesa 448KB af disknum įn žess aš hreyfa leshausana.
a) Hver er fjöldi hliša ķ žessum harša diski og hvert er heildargeymslumagn hans?
b) Hver eru nešri mörk į žeim tķma sem tęki aš lesa allan diskinn sem lżst er hér aš ofan ef hann snżst į 3600 sn/mķn? En ef snśningshrašinn vęri 5400 sn/mķn?
c) 12 ms er algengur mešalleitartķmi į 3600 sn/mķn diski. Hver vęri sambęrilegur leitartķmi į 5400 sn/mķn diski, ef ekkert annaš snśningshrašinn breytist? (Rökstyšjiš!)



2. [15%] a) Viš höfum 8 bita stök sem viš viljum nota undir 2's complement heiltölur kódašar meš Endurbęttri Hamming kódun. Į hvaša bili eru žęr tölur sem viš getum kódaš žannig? Sżniš hvernig talan -3 er kóduš.
b) Viš höfum 16 bita stök sem viš viljum nota undir fleytitölur kódašar meš Endurbęttri Hamming kódun. Stingiš uppį skiptingu žeirra bita, sem ekki eru notašir sem varbitar, upp ķ formerkisbita, veldi og brot, žannig aš fleytitalan hegši sér eins og IEEE fleytitala. Eina skilyršiš er aš fleytitalan hafi tveggja tugastafa nįkvęmni (t.d. 9.9 <> 9.8). Hver er stęrsta og minnsta stašlaša talan sem žiš getiš tįknaš?



3. [10%] Gjörvaframleišandi nokkur višurkennir aš sumar reikniašgeršir meš 64 bita fleytitölur vinna ekki rétt. Nešri 32 bitarnir ruglast og žaš eru ašeins efstu 32 bitarnir ķ śtkomunni sem eru réttir. Śtskżriš įhrif villunar:
i) Hver eru įhrifin į nįkvęmni fleytitalnanna (ž.e. hver er nś nįkvęmnin ķ tugabrotum)?
ii) Hvaš meš stęrstu og minnstu tįknanlegar tölur, breytist žaš eitthvaš?
iii) Einhver önnur gildi sem villan hefur įhrif į?



4. [10%] Śtskżriš hvaš gerist ķ eftirfarandi 8086-smalamįlsbśtum.
              mov cl, 0                 mov cx, ax
        lyk:  mov bx, ax          upp:  shr ax, 1
              cmp bx, -1                cmp ax, 0
              je ut                     je ut
              inc bx                    sub cx, ax
              or ax, bx                 jmp upp
              inc cl              ut:
              jmp lyk
        ut:

              Bśtur I                   Bśtur II
             ---------                 ----------

Hvaša gildi hafa gistun ax og cx žegar lykkjurnar hętta? Beriš saman ašferširnar sem notašar eru ķ bśtunum tveimur.



5. [20%] Skrifiš 8086-smalamįlsstef sem er kallanlegt śr Borland C++ til aš jafna śt (smooth) gildi ķ vektor. Ef vektorinn er int A[MAX], žį er formślan er eftirfarandi
                A[i] = (A[i-1] + A[i] + A[i+1])/3.
Athugiš aš vektorgildin hęgra megin eru upphaflegu gildin ķ vektornum. Til dęmis er A[i-1] ekki žaš gildi sem var reiknaš śt ķ sķšustu ķtrun (ef viš teljum uppį viš). Stefiš fęr inn bendi (SEGM og OFFSET) į vektorinn A, lengd hans n, og tvö jašargildi, annaš fyrir A[-1], en hitt fyrir A[n]. Skķrgreining stefsins ķ C++ vęri
        void jafna(int *A, unsigned int n, int upph_gildi, int loka_gildi);
Stefiš veršur aš vera kallanlegt śr C++, žannig aš žiš megiš ekki nota neinar vķšvęrar breytur og ef žiš žurfiš stašvęrar breytur žį śthlutiš žiš žeim plįssi į staflanum. Ręšiš ašferšir til aš sleppa viš aš nota deilingu ķ stefinu.



6. [10%] Sumir RISC gjörvar geyma ķ eins konar skyndiminni sķšustu skilyrtu hoppskipanir sem voru framkvęmdar og teljara fyrir hversu oft hoppiš var tekiš į móti žvķ hve oft žaš var ekki tekiš. Žetta er sķšan notaš til aš giska į hvort hoppiš verši tekiš ķ nęsta sinn sem skipunin er framkvęmd (kallaš "dynamic branch prediction").
i) Segiš frį kostum og göllum žess aš halda svona bókhald.
ii) Nefniš a.m.k. tvęr ašrar leišir til aš giska į hvort skilyrt hopp verši tekin og beriš žęr saman viš ofangreinda ašferš.



7. [10%] Žżšiš nešangreindan forritsbśt yfir ķ HP PA-RISC kóda.
            s = 0
            for (i=1; i<=K; i++)
                s += 2*i;
Žiš fįiš ekki fullt fyrir dęmiš nema lykkjan sé žrjįr PA-RISC skipanir. Fjórar skipanir gefa 6 punkta (af 10) og fleiri skipanir hlutfallslega fęrri punkta.



8. [15%] Hverjir af nešangreindum möguleikum (a eša b) eru betri meš tilliti til skyndiminnis. Rökstyšjiš.
i)    a) for (i=0; i<10000; i++)       b) for (j=0; j<10000; j++)
           for (j=0; j<10000; j++)          for (i=0; i<10000; i++)
             A[i][j] = 2*A[i][j];             A[i][j] = 2*A[i][j];

                              -------------

ii)   a) int gildi[MAX];                b) struct stak {
         int lykill[MAX];                    int gildi;    
                                             int lykill;
                                          };
                                          struct stak S[MAX];

                              -------------

iii)  a) for (i=0; i<N; i++)           b) for (i=0; i<N; i++)
           for (j=0; j<N; j++)              for (j=0; j<N; j++)
             A[i][j] = 1/B[i][j];           {
                                              A[i][j] = 1/B[i][j];
         for (i=0; i<N; i++)                  C[i][j] += A[i][j];
           for (j=0; j<N; j++)              }  
             C[i][j] += A[i][j];