Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Czym jest jednostka sterująca ?

03 Gru 2018 16:58 1629 48
  • Poziom 3  
    Witam,
    piszę pracę, i opisuje architekturę Harwardzką w której została wykonana ATmega32.
    Mam taki oto obrazek:
    Czym jest jednostka sterująca ?

    I tutaj mam pytanie do doświadczonych kolegów, czym jest "jednostka sterująca" ? Bo rozumiem, że "jednostka arytmetyczno-logiczna" to ALU.
    Dziękuje za odpowiedzi i pozdrawiam.
  • Poziom 31  
    Witam.

    Jednostka sterująca wykonuje całą pracę zarządza wszystkim zgodnie z napisanym programem.
    Tak jak widać na obrazku. Ma dostęp do pamięci rozkazów i pamięci danych ( RAM ).

    Mówiąc krótko wykonuje program.
  • Specjalista - Mikrokontrolery
    Obrazek całkowicie błędny w dolnej części, w górnej tylko częściowo. Co do terminologii - ta inna architektura (nie-Harvardzka) nazywa się zapewne Princetońska, zgadłem? ;)
  • Poziom 3  
    Źródło: Link wydaje się wiarygodne - Uniwersytet Jagielloński.

    Dodano po 52 [sekundy]:

    Dlaczego sądzisz, że obrazek jest błędny ?

    Dodano po 4 [minuty]:

    dasej napisał:
    Witam.

    Jednostka sterująca wykonuje całą pracę zarządza wszystkim zgodnie z napisanym programem.
    Tak jak widać na obrazku. Ma dostęp do pamięci rozkazów i pamięci danych ( RAM ).

    Mówiąc krótko wykonuje program.

    Dziękuję za odpowiedź!
    Jednakże chciałbym jeszcze rozwiązać wątek poruszony przez BlueDarco, aby w pracy nie było bubla.
  • Specjalista - Mikrokontrolery
    Dlatego, że w AVR (ani w żadnym innym współczesnym komputerze/mikrokontrolerze) nie ma dwóch oddzielnych szyn/połączeń dla wejścia i dla wyjścia. Inny problem z przymierzeniem AVR do obrazka:
    - gdzie znajdują się na obrazku rejestry procesora, w tym rejestry adresowe? Jeśli w "jednostce arytmetycznej" - to jakim cudem można czytać dane z pamięci programu?
    Ogólnie obrazek jest odrealniony. Jeśli juś ciąć procesor na dwa kawałki, to wypadałoby raczej ten drugi nazwać "jednostką operacji na danych" (datapath vs. control path), co zawiera w sobie i jakiś blok arytmetyczny, i rejestry, i mechanizmy adresowania. W każdym współczesnym harvardopodobnym interfejs pamięci programu ma dwukierunkowe połączenie z jednostką zajmującą się danymi, umożliwiające transfer danych i adresów w obie strony, co ma się nijak do zabytkowego harwardzkiego Mark II..

    Widać, że Autor zna komputery głównie z podręczników, a nie z doświadczenia, co zresztą można wyczuć po innych jego prezentacjach - np. niezrozumienie koncepcji RISC i CISC.

    Taka zagadka: pierwszą różnicę pomiędzy (rzekomymi) dwoma typami architektur ("Harwadzka" i ta druga), którą zauważają Ci, co piszą o dwóch typach, zna każdy. (rozdzielona/wspólna pamięć). Kto potrafi wymienić jakąś inną różnicę, która nie wynika jednoznacznie z pierwszej i dotyczy współczesnych komputerów? Jeśli tak trudno znaleźć tę drugą różnicę, za to jest mnóstwo cech wspólnych dla obu, rzekomo skrajnie różnych, architektur, to po co wprowadzać (rzekomy) dualizm i kontrast?
  • Poziom 22  
    Powinno być raczej tak:

    Czym jest jednostka sterująca ?


    AVR'y zbudowane są na zmodyfikowanej architekturze harwardzkiej.
    Pamięć danych jest oddzielona od pamięci instrukcji, ale wykorzystują one wspólną magistralę danych i adresową.
    Dostęp do instrukcji jest taki, jak by to były dane.
    Stałe można zapisywać w pamięci instrukcji (kojarzysz makrodefinicję PROGMEM dla Atmel Toolchain?).

    Odpowiadając na pytanie:
    Jednostka sterująca steruje działaniem procesora.

    To tak, jak byś chciał obsłużyć jakieś urządzenie, na przykład żelazko, nie wiedząc jak ono działa (będąc osobnikiem płci brzydkiej na pewno nie wiesz do czego to ustrojstwo służy).
    Bierzesz więc instrukcję obsługi (pobierasz rozkazy z flash'a) i czynisz według tego co zapisano.
    Jak masz sprawdzić jaki materiał prasujesz, to pobierasz dane z RAM.
    Ustawiasz odpowiednią temperaturę - majstrujesz w rejestrach urządzenia.
    Krzyczysz, aby ukochana pomachała w tę i we w tę, żelazkiem po tej koszuli - zapodajesz instrukcję ALU, bo nie masz zielonego pojęcia jak wykonywane są owe instrukcje.
  • Poziom 1  
  • Specjalista - Mikrokontrolery
    Popatrz na obrazek na samym początku wątku - wejście i wyjście rozdzielone. O tym obrazku mowa. Znasz współczesny komputer lub uC o takiej budowie?

    Ciekawe, co to takiego ta "zmodyfikowana architektura Harwardzka". Ciekawe, czy ma ona więcej cech wspólnych z "niezmodyfikowaną" "harwardzką", czy z "vonneumańską"... ;)

    Ciekawe też, w którym miejscu na obrazku kol. pimpuka znajdują się rejestry procesora?

    Moim zdanie żaden z obrazków w tym wątku nie pokazuje sensownie struktury jakiegokolwiek komputera. Taka "teoretyczna teoria dla teorii", bez związku z rzeczywistością.
  • Poziom 1  
  • Specjalista - Mikrokontrolery
    pimpuk napisał:
    AVR'y zbudowane są na zmodyfikowanej architekturze harwardzkiej.
    Pamięć danych jest oddzielona od pamięci instrukcji, ale wykorzystują one wspólną magistralę danych i adresową.
    Dostęp do instrukcji jest taki, jak by to były dane.


    Proszę, pokaż tę "wspólną magistralę" danych i adresową na schemacie blokowym klasycznych AVR.
    "Wspólna magistrala" i "dostęp do instrukcji taki, jak do danych" - to cechy architektury von Neumanna, nie występujące w "harwardzkiej".
  • Poziom 31  
    BlueDraco napisał:
    wejście i wyjście rozdzielone. O tym obrazku mowa. Znasz współczesny komputer lub uC o takiej budowie?

    Współczesnego nie znam ale na uniwersytetach lubią starocie. Poczciwa, rodzimej konstrukcji Cobra1 miała rozdzielone wejścia/wyjścia.
  • Poziom 22  
    BlueDraco napisał:

    Ciekawe, co to takiego ta "zmodyfikowana architektura Harwardzka".


    Zmodyfikowana architektura Harwardzka, to jest dokładnie to, co napisałem wcześniej.

    BlueDraco napisał:

    Ciekawe, czy ma ona więcej cech wspólnych z "niezmodyfikowaną" "harwardzką", czy z "vonneumańską"... ;).


    Ma ona po równo cech wspólnych z jedną i drugą architekturą.

    BlueDraco napisał:

    Ciekawe też, w którym miejscu na obrazku kol. pimpuka znajdują się rejestry procesora?


    Kolega tak na serio? Myślisz że jak zadasz mądre pytanie, to ludzie pomyślą, że ...

    Na obrazku nie ma zaznaczonych rejestrów.
    W jednostce sterującej jest rejestr instrukcji.
    W ALU jest rejestr danych i adresów.
    Itd. itd.

    BlueDraco napisał:

    Ciekawe, co to takiego ...

    BlueDraco napisał:

    Ciekawe, czy ma ona ...

    BlueDraco napisał:

    Ciekawe też, w którym miejscu ...


    Jak kolega taki ciekawy, to istnieją w PL uniwersytety trzeciego wieku :)
  • Specjalista - Mikrokontrolery
    No i pytań coraz więcej, bo:

    Przez wieki skrót ALU oznaczał jednostkę arytmetyczno-logiczną, czyli układ kombinacyjny, nie zawierający przerzutników ani rejestrów, Na wszelkich znanych mi obrazkach przedstawiających budowę procesorów rejestry były pokazane oddzielnie, a nie w ALU.
    We współczesnych procesorach na ogół nie ma rejestru instrukcji. Czy to świadczy o tym, że nie są one "harwardzkie" ani "vonneumańskie"? Czy raczej o tym, że Ci, co podają tę teorię niekoniecznie wiedzą coś na temat realiów budowy współczesnych komputerów?

    Wciąż nie wiem, co to jest ta "zmodyfikowana architektura harwardzka" i po czym ją poznać oraz jakie cech ma ona wspólne z "vonneumańską" a jakie z "harwardzką". Kłopot w tym, że odpowiedź na to pytanie wymagałaby podania jakiegoś sensownego zestawu cech jednej i drugiej, a z tym nasi teoretyczni architekci mają spore problemy.
    Drążę temat, bo chciałbym zrozumieć, co mają na myśli ludzie szermujący hasłami typu "harwardzka"; a tu brak konkretnych odpowiedzi. Ja znam jedną cechę - różnicę i przynajmniej z 5 wspólnych. Próby sformułowania drugiej różnicy jakoś się nie udają.
  • Poziom 1  
  • Specjalista - Mikrokontrolery
    Ano właśnie rejestru instrukcji w procesorach potokowych nie ma. Są rejestry na każdym stopniu potoku przekazujące potrzebne fragmenty instrukcji wzdłuż potoku, ale nie ma rejestru trzymającego całą instrukcję, jak to było w starych procesorach, bo nie ma takiej potrzeby.
  • Poziom 1  
  • Specjalista - Mikrokontrolery
    Tak się składa, że ne muszę nic zakładać, bo po prostu znam budowę różnych procesorów. Oczywiście, że w procesorach potokowych są różne rejestry, ale z zasady nie ma w nich rejestru instrukcji (IR), który występował w dawnych konstrukcjach procesorów, a który pokutuje do dzisiaj na obrazkach w niektórych podręcznikach jako rzekomo niezbędny w każdym procesorze. Zasadniczo w każdym procesorze jest to, co jest niezbędne do tego, by procesor działał. W każdym np. jest i musi być rejestr licznika instrukcji (PC), ale nie w każdym jest IR lub MAR (też kiedyś obowiązkowy).

    Zdaje się, że w postach powyżej mylisz PC z IR (licznik instrukcji z rejestrem instrukcji).
  • Poziom 1  
  • Specjalista - Mikrokontrolery
    stmx napisał:
    no a o czym ja pisałem wcześniej? Niekoniecznie musi być widoczny dla programisty i niekoniecznie musi być jeden.


    Wcześniej pisałeś o rejestrze instrukcji, więc chyba jednak miałem rację sugerując, że mylisz rejestr instrukcji z licznikiem instrukcji. Rejestr instrukcji nigdy nie jest widoczny dla programisty.
    Licznik instrukcji MUSI być widoczny dla programisty - i ten jest jeden. Ponadto bywają jeszcze dwa liczniki instrukcji niewidoczne dla programisty.

    Nie zapomniałem o MDR. Równie dobrze mógłbyś napisać, że zapomniałem o W i Z z 8080. MDR naprawdę mało gdzie występuje - to już prehistoria. MAR jest potrzebny w szerszej klasie architektur niż MDR.
  • Poziom 1  
  • Specjalista - Mikrokontrolery
    No to wytłumacz, z jakiego to kontekstu wyrwałem Twój jednozdaniowy post numer 14 w tym wątku, gdzie piszesz o tym, że CPU musi mieć rejestr instrukcji, żeby mieć co zapamiętać w LR. W LR to się nPC zapamiętuje, a nie IR (ale fajnie, że się dokształcasz powolutku).
    Twój pomysł z MDR w ARM też mocno chybiony. Nie ten poziom, nie ta rodzina architektur. ARM może cache i/lub kolejkę odczytów (żadna z tych struktur nie przynależy do potoku), z których to dana wędruje prościutko do rejestru procesora. MDR był potrzebny w procesorach, które mogły wykonywać np. operacje arytmetyczne z argumentami pamięciowymi, po to, żeby można było daną z pamięci np. podać na wejście ALU lub AGU; ARM tego nie potrafi, więc nie musi mieć MDR.
  • Poziom 1  
  • Specjalista - Mikrokontrolery
    PC, a dokładniej nPC w żadnej architekturze nie wskazuje aktualnie wykonywanej instrukcji, tylko następną po aktualnie wykonywanej. Tę właśnie wartość zapamiętuje się przy skoku ze śladem ( w 6502 zapamiętywało się trochę inną wartość - wskazującą na ostatni bajt instrukcji JSR).

    Co do zachowania przy kolejnych odczytach tej samej danej: zachowanie typowe dla bufora odczytu czy kolejki odczytów, czyli czegoś, co przechowuje adres i dane transakcji pamięci.
  • Poziom 1  
  • Poziom 1  
  • Specjalista - Mikrokontrolery
    W każdej architekturze istnieje dostępny programowo rejestr nPC, który zawiera adres następnej instrukcji. ARM nie jest tu wyjątkiem, a nPC czyli R15 nie jest żadną tajemnicą; jak najbardziej jest on inkrementowany przy każdej instrukcji. Gdyby nPC zawierał cokolwiek innego, procesor nie mógłby wywoływać procedur.Oprócz tego istnieje kilka (zwykle min. 2) innych, niedostępnych programowo rejestrów PC, którymi producent niekoniecznie się chwali. Jeden z nich służy do pobierania instrukcji z wyprzedzeniem. Drugi - do określenia stanu procesora podczas obsługi niektórych wyjątków. Oba z całą pewnością występują w każdym ARMie.
  • Poziom 1  
  • Poziom 1  
  • Specjalista - Mikrokontrolery
    stmx napisał:
    Procesory od swoich najprostszych modeli do najbardziej złożonych generalnie mają taką samą budowę. Różnica jest taka, że bloki są dużo bardziej złozone i często nazywają się inaczej.


    Niestety błądzisz. Można coś podobnego napisać, ale oddzielnie o starych procesorach wielocyklowych CISC (np.8080, 8086, MC68000) i oddzielnie o np. ARM, MIPS i paru innych RISCopodobnych. Stare CISC są do siebie ciut podobne. Nowe RISCowate też są do siebie podobne pod względem budowy wewnętrznej. Jedne i drugie dzieli przepaść, jeśli chodzi o samą zasadę działania i budowę. Procesor potokowy, taki jak ARM, wewnętrznie nie jest nawet podobny do wielocyklowego, takiego, jak MC68000. Ty tej różnicy, jak widać, nie rozumiesz. A ta różnica - to właśnie m.in. takie elementy jak IR, MAR czy MDR oraz szyny łączące wiele bloków procesora, niewystępujące w maszynach potokowych.
    Ciekawostką jest jednak, że trzy różne PC na ogół występują i w jednych i w drugich, chociaż sporo się różnią umieszczeniem i sposobem działania.
  • Poziom 1