Advertisement
MateuszGrabarczyk

AK test

Dec 13th, 2022
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 14.39 KB | None | 0 0
  1. # This is a sample Python script.
  2. import random
  3. questions = [["Architektura superskalarna:", {"Umożliwia równoległe wykonywanie kilku rozkazów w jednym procesorze":"P",
  4.                                               "Wymaga zastosowania protokołu MESI":"F",
  5.                                               "Wywodzi się z architektury VLIW": "F"}],
  6.              ["Cechy architektury CISC:", {"czy występuje model wymiany danych typu pamięć - pamięć":"P",
  7.                                           "jest mała liczba rozkazów":"F",
  8.                                           "czy może być wykonana w VLIW":"F"}],
  9.              ["Cechy architektury RISC:", {"czy występuje model wymiany danych typu rej-rej":"P",
  10.                                            "jest mała liczba trybów adresowania":"P",
  11.                                            "jest wykonywanych kilka rozkazów w jednym takcie":"P",
  12.                                            "układ sterowania w postaci logiki szytej":"P",
  13.                                            "jest wykonywanych kilka instrukcji procesora w jednym rozkazie asemblerowym":"F"}],
  14.              ["Efektywne wykorzystanie równoległości na poziomie danych umożliwiają:", {"komputery wektorowe":"P",
  15.                                                                                         "komputery macierzowe": "P",
  16.                                                                                         "procesory graficzne":"P",
  17.                                                                                         " rozszerzenia SIMD procesorów superskalarnych":"P"}],
  18.              ["Hazard danych:", {" czasami może być usunięty przez zmianę kolejności wykonania rozkazów":"P",
  19.                                  "nie występuje w architekturze superskalarnej":"F",
  20.                                  " jest eliminowany przez zastosowanie specjalnego bitu w kodzie programu":"F",
  21.                                  "może wymagać wyczyszczenia potoku i rozpoczęcia nowej (...)":"F"}],
  22.              ["Jak można ominąć hazard danych:", {"przez zamianę rozkazów":"P",
  23.                                                   " poprzez rozgałęzienia":"F",
  24.                                                   "poprzez uproszczenie adresowania - adresowanie bezpośrednie":"F"}],
  25.              ["Komputery macierzowe:", {"wykonują synchroniczną operację wektorową w sieci elementów przetwarzających":"P",
  26.                                         " maja w liście rozkazów m.in. rozkazy operujące na wektorach danych":"P",
  27.                                         " maja macierzowe potokowe układy arytmetyczne":"F",
  28.                                         "maja w typowych rozwiązaniach zestaw pełnych procesów połączonych siecią połączeń":"F"}],
  29.              ["Komputery wektorowe:", {"posiadają w liście rozkazów m.in. rozkazy operujące na wektorach danych":"P",
  30.                                        "wykorzystują od kilku do kilkunastu potokowych jednostek arytmetycznych":"P",
  31.                                        " posiadają listę rozkazów operujących wyłącznie na wektorach":"F"}],
  32.              ["Mechanizm skoków opóźnionych:", {"polega na opóźnianiu wykonywania skoku do czasu wykonania rozkazu następnego za skokiem": "P",
  33.                                                 "wymaga umieszczenia rozkazu NOP za rozkazem skoku lub reorganizację programu":"P",
  34.                                                 "wymaga wstrzymania potoku na jeden takt":"F",
  35.                                                 "powoduje błąd na końcu pętli":"F"}],
  36.              ["Mechanizmy potokowe stosowane są w celu:", {"uzyskania równoległej realizacji rozkazów":"P",
  37.                                                            "przyspieszenia realizacji rozkazów":"P",
  38.                                                            "uszeregowania ciągu wykonywanych rozkazów":"F"}],
  39.              ["Metoda przemianowania rejestrów jest stosowana w celu eliminacji:", {" zależności wyjściowej między rozkazami":"P",
  40.                                                                                     "antyzależności między rozkazami":"P",
  41.                                                                                     "błędnego przewidywania rozgałęzień":"F",
  42.                                                                                     " chybionego odwołania do pamięci podręcznej":"F",
  43.                                                                                     " prawdziwej zależności danych":"F"}],
  44.              ["Moc obliczeniowa komputerów wektorowych:", {"jest odwrotnie proporcjonalna do długości taktu zegarowego":"P",
  45.                                                            "zmierza asymptotycznie do wartości maksymalnej wraz ze wzrostem długości wektora":"P",
  46.                                                            "zależy od liczby stopni potoku":"F",
  47.                                                            "jest wprost proporcjonalna do długości taktu zegarowego":"F",
  48.                                                            "zależy odwrotnie proporcjonalnie od liczby jednostek potokowych połączonych łańcuchowo":"F",
  49.                                                            "nie zależy od długości wektora":"F",
  50.                                                            "zależy liniowo od długości wektora":"F"}],
  51.              ["Model SIMD:", {" jest wykorzystywany w multimedialnych rozszerzeniach współczesnych procesorów":"P",
  52.                               " zapewnia wykorzystanie tej samej operacji na wektorach argumentów":"P",
  53.                               " był wykorzystywany tylko w procesorach macierzowych":"F"}],
  54.              ["Podstawą klasyfikacji Flynna jest:", {"Liczba strumieni rozkazów i danych w systemach komputerowych":"P"}],
  55.              ["Problemy z potokowym wykonywaniem rozkazów skoków (rozgałęzień) mogą być wyeliminowane lub ograniczone przy pomocy:", {"tablicy historii rozgałęzień":"P",
  56.                                                                                                                                       "wystawienia do programu rozkazów typu „nic nie rób":"P",
  57.                                                                                                                                       "wykorzystania techniki skoków opóźniających":"P",
  58.                                                                                                                                       "technologii MMX":"F",
  59.                                                                                                                                       "techniki wyprzedzającego pobrania argumentu":"F"}],
  60.              ["Procesory wektorowe:", {"Mogą być stosowane w systemach wieloprocesorowych":"P",
  61.                                        "mają moc kilka razy większą od procesorów skalarnych":"P"}],
  62.              ["Przetwarzanie potokowe:", {"daje przyspieszenie nie większe od liczby segmentów (stopni) jednostki potokowe":"P",
  63.                                           "nie jest realizowane dla operacji zmiennoprzecinkowych":"F",
  64.                                           "nie jest realizowane w procesorach CISC":"F",
  65.                                           "w przypadku wystąpienia zależności między danymi wywołuje błąd i przerwanie wewnętrzne":"F",
  66.                                           "jest realizowane tylko dla operacji zmiennoprzecinkowych":"F"}],
  67.              ["Przetwarzanie wielowątkowe:", {"zapewnia lepsze wykorzystanie potoków":"P",
  68.                                               "minimalizuje straty wynikające z chybionych odwołań do pamięci podręcznej":"P",
  69.                                               "nie może być stosowane w przypadku hazardu danych":"F"}],
  70.              ["Rozkazy wektorowe:", {"w komputerach wektorowych ich czas wykonania jest wprost proporcjonalny dodługości wektora":"P",
  71.                                      "są charakterystyczne dla architektury SIMD":"P",
  72.                                      "są rozkazami dwuargumentowymi i w wyniku zawsze dają wektor":"F",
  73.                                      "nie mogą być wykonywane bez użycia potokowych jednostek arytmetycznych":"F"}],
  74.              ["Rozkazy wektorowe mogą być realizowane przy wykorzystaniu:", {"Macierzy elementów przetwarzających":"P",
  75.                                                                              "Technologii MMX":"P",
  76.                                                                              "Potokowych jednostek arytmetycznych":"P",
  77.                                                                              " Zestawu procesorów superskalarnych":"F",
  78.                                                                              "Sieci połączeń typu krata":"F"}],
  79.              ["Tablica historii rozgałęzień:", {"zawiera m.in. adresy rozkazów (?) rozgałęzień":"P",
  80.                                                 "pozwala zminimalizować liczbę błędnych przewidywań rozgałęzień w zagnieżdżonej... (pętli?)":"F",
  81.                                                 "nie może być stosowana w procesorach CISC":"F",
  82.                                                 "jest obsługiwana przez jądro systemu operacyjnego":"F"}],
  83.              ["W procesorach superskalarnych:", {"jest możliwe równoległe wykonywanie kilku rozkazów w jednym procesorze(rdzeniu)":"P",
  84.                                                  "rozszerzenia architektury wykorzystujące model SIMD umożliwiają wykonanie rozkazów wektorowych":"P",
  85.                                                  "mogą wystąpić nowe formy hazardu danych: zależności wyjściowe między rozkazami oraz antyzależności":"P",
  86.                                                  "nie występuje prawdziwa zależność danych":"F",
  87.                                                  "liczba rozkazów, które procesor może wykonać w jednym takcie, zależy od liczby stopni potoku":"F",
  88.                                                  "liczba rozkazów pobieranych z pamięci, w każdym takcie musi przekraczać liczbę jednostek potokowych":"F"}],
  89.              ["W tablicy historii rozgałęzień z 1 bitem historii można zastosować następujący algorytm przewidywania (?) (najbardziej złożony):", {"przewidywanie, że kolejne wykonanie rozkazu rozgałęzienia będzie przebiegało tak samo jak poprzednie":"P",
  90.                                                                                                                                                    "skok opóźniony":"F",
  91.                                                                                                                                                    "przewidywanie, że rozgałęzienie(skok warunkowy) zawsze nastąpi":"F",
  92.                                                                                                                                                    "przewidywanie, że rozgałęzienie nigdy nie nastąpi":"F",
  93.                                                                                                                                                    "wstrzymanie napełniania potoku":"F"}],
  94.              ["Bufor zmiany kolejności (Reorder Buffer) w procesorach superskalarnych umożliwia m.in:", {"spekulatywne wykonanie rozkazów":"P",
  95.                                                                                                          "zatwierdzanie wykonanych rozkazów":"P",
  96.                                                                                                          "zmianę kolejności wykonania rozkazów dla uniknięcia hazardu danych":"P",
  97.                                                                                                          "przewidywanie rozgałęzień":"F",
  98.                                                                                                          "przełączanie wątków":"F"}],
  99.              ["Najlepsze wykorzystanie jednostek funkcjonalnych rdzenia procesora zapewnia:", {"wielowątkowość jednoczesna (współbieżna)":"P",
  100.                                                                                                "rozdzielenie wątków pomiędzy dostępne rdzenie":"P",
  101.                                                                                                "przełączanie wątków przez system operacyjny":"P",
  102.                                                                                                "wielowątkowość drobnoziarnista":"F",
  103.                                                                                                "wielowątkowość gruboziarnista":"F"}],
  104.              ["Przetwarzanie potokowe zapewnia m.in.:", {"zwiększenie przepustowości procesora (liczbę rozkazów wykonanych w jednostce czasu)":"P",
  105.                                                          "równoległe wykonywanie wielu rozkazów":"P",
  106.                                                          "skrócenie czasu wykonania pojedynczych rozkazów":"F",
  107.                                                          "zabezpieczenie przed chybieniem w dostępie do pamięci podręcznej":"F",
  108.                                                          "poprawę trafności przewidywania rozgałęzień":"F"}],
  109.              ["Przemianowanie rejestrów pozwala uniknąć hazardu spowodowanego przez:", {"wystąpienie rozgałęzienia":"F",
  110.                                                                                         "zależność wyjściową":"P",
  111.                                                                                         "chybienie przy odczycie z pamięci podręcznej":"F",
  112.                                                                                         "antyzależność":"P",
  113.                                                                                         "prawdziwą zależność danych":"F"}]
  114.              ]
  115.  
  116. oldQuestions = []
  117.  
  118. while len(oldQuestions) != len(questions):
  119.     print(100 * "\n")
  120.     question = random.choice(questions)
  121.     if question in oldQuestions:
  122.         continue
  123.     oldQuestions.append(question)
  124.  
  125.     print(question[0])
  126.     for key, value in question[1].items():
  127.         print(key)
  128.         answer = input("P or F: ")
  129.         if answer.upper() == value:
  130.             print("To jest dobra odpowiedź\n")
  131.         else:
  132.             print("ZŁA ODPOWIEDŹ!!!!!!\n")
  133.  
  134.  
  135.  
  136.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement