2011-09-10 15 views
13

Rozważ komputer wielopoziomowy, w którym wszystkie poziomy są różne. Na każdym poziomie znajdują się instrukcje, które są m razy silniejsze niż poziomy poniżej; to znaczy, że jeden poziom r instrukcji może wykonać pracę z poziomem m r-1 instrukcji, Jeśli program poziomu 1 wymaga k sekund do uruchomienia, jak długo równoważne programy przyjmą na poziomach 2, 3 i 4, przy założeniu instrukcji n poziomu r są wymagane do interpretacji pojedynczej instrukcji r + 1?Problem z logiką komputera

To jest rozwiązanie, które wymyśliłem. Czy ktoś może potwierdzić lub skomentować?

To jest rozwiązanie, które wymyśliłem. Czy ktoś może weryfikować lub komentować?

Level (r)  Level-1 Instructions (m)   Time 
4    m^3        t(q) ==(m^3q+n+nm+nm^2) (k/q) 
3    m^2      t(q) =(m^2q+n+nm)(k/q) 
2    m        t(q) = (mq+n)(k/q) 
1    1        t(q) = k 

w celu obliczenia wykonania t (q) dla danego programu, zawierającej Poziom Q-1 instrukcji, należy wziąć pod uwagę zarówno wykładniczo coraz poziomie-1 instrukcji każda instrukcja poziom R oznacza (pokazany jako m^(r-1)) oraz dodatkową liczbę instrukcji poziomu 1 wymaganą do interpretacji dla każdej warstwy, na której program jest wykonywany (pokazany jako nm^(r-1)). Dodatkowe instrukcje poziomu 1 używane do interpretacji przez niższe poziomy należy również dodać do końcowych równań dla r> 2. Na koniec dla każdego równania możemy określić liczbę sekund, które program musi wykonać, mnożąc całkowitą liczbę instrukcji poziomu 1 używanych przez czas wykonania jednego cyklu poziomu 1, jak obliczono przez (k/q).

Nota prawna: To jest praca domowa, zadanie zostało już przekazane. Po prostu nie mogę uzyskać semantyki tego problemu i naprawdę chciałbym to zrozumieć.

+0

Wskazówka: Utwórz tabelę, której kolumny są oznaczone w następujący sposób: Poziom, NumInstrukcjeInProgram, InstrukcjePerSecond, TotalTime. Pierwszy wiersz będzie wynosił 1, N, N/k, k. Kontynuuj wypełnianie kolejnych wierszy. –

+0

Nie sądzę, że problem określa, czy wszystkie instrukcje mają wykonać taką samą liczbę zegarów. – Novikov

+0

Wypełniałem tabelę, po prostu mam problemy z semantyką dokładnie, co rozumie się przez każdą ze zmiennych i jak mogę je uwzględnić w wartościach tabel. – MarathonStudios

Odpowiedz

0

Problem po prostu stwierdza, że ​​jeśli to ma k jednostkę czasu na poziomie 1 następnie jednostki k/m to Wezmę na drugim poziomie, jak w ...

0

To tylko funkcja rekurencyjna:

t(q, r) = q*k if r == 1 
t(q, r) = q*t(m, r-1) + t(n, r-1) 

Teraz wyjaśnił:

This is obvious since it was stated in the question (I parameterized k as the elementary unit, k is the time for one level 1 instruction): 
t(q, r) = q*k if r == 1 

The amount of time it takes to execute a function with q r-1 instructions 
t(q, r) = 
      q times the amount of the time it takes for m level r-1 instruction 
      q*t(m, r-1) 
         plus the time it takes for n level r-1 instructions 
         + t(n, r-1) 
0

Nie jestem pewna definicja zadaniem jest kompletne, ponieważ jeśli to nie widzę żadnego innego rozsądny sposób rozwiązać, niż go uprościć.

Więc oto kilka rzeczy bym zakładają:

  1. t (q, 1) = k (mamy za zadanie odnaleźć t (q, r)) => t (1,1) = q/k, dlaczego? Ponieważ jeśli nie zakładamy czasu zależy tylko od liczby instrukcji, a nie od typu instrukcji, to w rzeczywistości nie można tego zadania rozwiązać. W takim przypadku q nie będzie postrzegana jako liczba i nie możemy założyć, że inny zestaw instrukcji zajęłby mniej lub więcej czasu w zależności od liczby instrukcji. Podsumowując, jeśli chodzi o moje czytanie w tym zadaniu, odnoszą one czas tylko do liczby instrukcji.
  2. jeśli program jest natywny na jednym poziomie "r", wówczas będzie musiał wykonać instrukcje innego poziomu, aby je zinterpretować (uczynić je natywnymi). W definicji zadania nie ma nic, co zmusza do interpretowania tylko instrukcji r + 1 poziomu. W rzeczywistości, ponieważ zaczynamy od poziomu pierwszego, "instrukcje n poziomu r są wymagane do interpretacji pojedynczej instrukcji r + 1" byłoby całkiem bezużyteczne, jeśli nie możemy założyć, co mówię powyżej.
  3. także instrukcje poziom q X Po interpretować należy zawsze konwertować do poziomu q instrukcji Y, inne imadło możemy nigdy nie poznać czas realizacji innego poziomu, ponieważ liczba instrukcji mogą znacznie różnić (jak w realnym świecie)

więc tutaj jest odpowiedź z tych warunków:

q=number of level one program instructions 
t(q, r)=time necessary to execute q **level 1** instructions on level r comp 
t(1, r)=time necessaty to execute one instruction on level r comp 
t(1, 1)=time necessary to execute one instruction on level 1 comp 
t(q, 1)/m^(r-1)=time to execute q **native** instructions on level r comp 

t(q, 1)=k 
t(1, 1)=k/q 
t(q,r)=(time to interpret q non-native instructions/convert them to native) + (time to actually execute the code) 
t(q,r)=t(qn, 1)/m^(r-1) + t(q, 1)/m^(r-1) 
t(q,r)=(time to execute qn native instructions) + (time to execute q native instructions) 
t(q,r)=nt(q, 1)/m^(r-1) + t(q, 1)/m^(r-1) 
t(q,r)=(n+1)t(q, 1)/m^(r-1) 
t(q,r)=(n+1)k/m^(r-1) 

Jeżeli którykolwiek z 3 założenia są błędne, trzeba wprowadzić nowe nieznane funkcje więc odpowiedź będzie stać tylko równanie nieznanych funkcji, które byłyby bezużyteczne, ale o wiele więcej bezużyteczny niż ten. Ten jest po prostu ładniejszy :)

Btw Musisz spojrzeć na swoje ćwiczenia na uniwersytecie, aby zobaczyć, jak podobne zadania zostały rozwiązane, aby upewnić się, że podejście do problemu jest prawidłowe.

1

Myślę, że wszyscy robią to zbyt skomplikowane. Stwierdzenie problemu mówi, innymi słowy, że każda warstwa działa m razy szybciej niż warstwa powyżej. Dlatego warstwa 2 kończy programy w 1/m czasie, warstwa 3 w 1/m * 1/m i tak dalej. Więc Końcowe równanie jest po prostu:

t (q) = k/(m ** q)

Powiązane problemy