1 / 70

CPU

CPU. Maszyna Turinga. Architektura von Neumanna. Architektura von Neumanna. Instrukcje i dane zapisane w tej samej pamięcie Pamięć jest sekwencyjnie adresowana Pamięć jest jednowymiarowa

nora
Télécharger la présentation

CPU

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CPU

  2. Maszyna Turinga

  3. Architektura von Neumanna

  4. Architektura von Neumanna • Instrukcje i dane zapisane w tej samej pamięcie • Pamięć jest sekwencyjnie adresowana • Pamięć jest jednowymiarowa • Znaczenie danych nie jest zapisane w pamięci znaczenie pojawia się w drodze interpretacji (np. przez CPU) • W szczególności nie są rozróżniane dane i kody rozkazów

  5. Architektura von Neumanna • Wczytywane jedno słowo pamięci na raz • Cykl wykonania instrukcji: • wczytanie kodu (Fetch) • Zdekodowani i pobranie z pamięci dodatkowych argumentów (Decode) • Egzekucja (Execute)

  6. Operacje • Opis operacji do wykonania składa się z kodu operacji i ew. argumentów • I kod i dane są liczbami, ale kiedy mówimy o kodach, zazwyczaj używamy tzw. mnemoników: ADD, SUB, MUL, DIV, AND, OR, itp. • Rozkaz do wykonania ma więc zazwyczaj postać: Kod_operacji [argument(y)], np.:ADD AX, 7INC BXJMP 32

  7. Operacje Argumenty czasem dane są jawni, czasem niejawnie (np.: INC AX – to dodawanie z niejawnym drugim argumentem 1, PUSHF – argumenty w ogóle niejawne)

  8. Kodowanie operacji Kodowanie operacji – sposób ich zapisania jako liczby – dość ważna decyzja projektowa (później)

  9. Architektura von Neumanna • Generalnie rozkazy są wczytywane z pamięci i wykonywane sekwencyjnie • Pozycja, z której został wczytany aktualnie realizowany rozkaz (adres pamięci) wskazywana jest przez tzw. IP (Instruction Pointer) czy też PC (Program Counter) • Wczytanie kodu rozkazu oraz ew. następujących po nim argumentów (operandów) zwiększa wartość licznika o stosowną liczbę pozycji • Niektóre rozkazy (np. skoki) – dość drastycznie zmieniają IP

  10. ISA • Wynikiem wszystkich decyzji dotyczących tego, jaki powinien być zbiór rozkazów, jak powinny być kodowane, w jaki sposób mają być określane argumenty jest tzw. ISA – Instruction Set Architecture – Architektura Listy Rozkazów

  11. Typowe składowe ISA • Ilość i sposób korzystania z rejestrów • Zestaw rozkazów • Tryby adresowania • Sposób kodowania rozkazów • Sposób kodowania danych

  12. Rejestry • Pamięć wewnętrzna – bardzo szybka (i bardzo droga) • Nie mylić z cache • Rejestry mogą być specjalizowane lub uniwersalne • Odwołania do pamięci mogą być realizowane albo bezpośrednio, albo za pomocą rejestrów

  13. Dostęp do pamięci

  14. Tryby adresowania • Dane następujące po kodzie operacji nie muszą być bezpośrednimi wartościami • Bardzo często są adresem pamięci, gdzie znajduje się wartość argumentu (koncept zmiennej) • Adres nie musi być podany wprost, może być podany jako przemieszczeni, jako adres indeksowany, itp.

  15. Użycie rozkazów

  16. Skoki warunkowe • Pozwalają na realizację takich struktur języków wyższego poziomu, jak pętle i instrukcje warunkowe, a więc – podstawowych konstrukcji programistycznych

  17. Realizacja pętli repeat ... ... ... until a > 0 pp: ... ... mov ax, a cmp ax, 0 jle pp

  18. Realizacja instrukcji warunkowej mov ax, a sub ax, b jg else ... ... jmp end else: ... ... end: ... if a > b then ... else ... end if;

  19. Zestaw rozkazów

  20. Kodowanie operacji • Jeśli rozkazy operują na rejestrach, a rejestrów nie jest dużo, można zastosować bardziej zwarte kodownie – nie potrzeba całych 16-tu bitów na zakodowanie jednego z ośmiu rejestrów – wystarczy 3 bity • Z drugiej strony jednym z argumentów może być 16-bitowa liczba

  21. Kodowanie operacji • Czasem stosuje się kodowanie o zmiennej długości • W 80x86 kod operacji może mieć od 1 do 17 bajtów długości • W RISC’ach stosuje się generalnie kodowanie o stałej długości • To jest ważne zagadnienie – pamięć! (np. dla osadzonych – bardzo ważne)

  22. Realizacja architektury von Neumanna

  23. CPU

  24. Jednostka kontrolna (decode & execute)

  25. Jednostka kontrolna

  26. Dwie magistrale

  27. Magistrala danych

  28. Magistrala adresowa

  29. Bloki wykonawcze

  30. Bloki wykonawcze • ALU – jednostka arytmetyczno-logiczna – odpowiedzialna za realizację operacji arytmetyczno-logicznych: AND, ADD, OR, SUB, itp... • Shifter – odpowiedzialny za realizację przesunięć bitowych – SHR, SHL, ROR, ROL • Comp – odpowiedzialny za realizację komparacji używanych w skokach warunkowych: EQ, NEQ, LE, GT, GE, LT, itp. • Np. skoki są w całości realizowane przez blok kontroli

  31. Rejestry

  32. ISA – zestaw rozkazów

  33. ISA – zestaw rozkazów

  34. Kodowanie rozkazów • Pojedyncze słowo

  35. Kodowanie rozkazów • Podwójne słowo

  36. Metoda top-down • Najpierw architektura połączenia CPU-MEM • Po drodze – architektura MEM • Ustalenie definicji wspólnych dla całego CPU • Później architektura połączenia bloków wewnątrz CPU • Na koniec realizacja bloków wewnątrz CPU

  37. Definicje globalne

  38. Definicje globalne

  39. Package

  40. Package body

  41. Library • Dwie domyślne biblioteki (nie trzeba deklarować ich użycia): • STD (bit, bit_vector, Boolean, itp...) • WORK (pakiety zadeklarowane w plikach VHDL w bieżącym projekcie) – biblioteki WORK nie trzeba deklarować, ale pakiety – tak (np. use work.cpu_lib.all;)

  42. Biblioteki • deklaracja library nazwa; posługuje się nazwą logiczną biblioteki. To, jak związać nazwę logiczną z odpowiednimi plikami VHDL rozwiązane jest w każdym pakiecie realizującym VHDL po swojemu

  43. Biblioteki w ActiveHDL

  44. Biblioteki w ActiveHDL

  45. Biblioteki w ActiveHDL

  46. Biblioteki w ActiveHDL

  47. Biblioteki w ActiveHDL

  48. Biblioteki w ActiveVHDL

  49. Top level

  50. Pamięć

More Related