Wyklad 1 Pojęcie architektury komputerów, modelu architekturalnego, modelu obliczeniowego, podstawowe modele obliczeniowe systemów komputerowych

Podobne dokumenty
Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Podstawy Informatyki Systemy sterowane przepływem argumentów

LEKCJA TEMAT: Zasada działania komputera.

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Logiczny model komputera i działanie procesora. Część 1.

Algorytm. Krótka historia algorytmów

Organizacja typowego mikroprocesora

Budowa komputera Komputer computer computare

Przykładowe pytania DSP 1

Technologie informacyjne - wykład 12 -

PROGRAMOWALNE STEROWNIKI LOGICZNE

Budowa i zasada działania komputera. dr Artur Bartoszewski

Projektowanie. Projektowanie mikroprocesorów

Algorytm. Krótka historia algorytmów

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Mikroprocesor Operacje wejścia / wyjścia

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Architektura systemów komputerowych

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wykład z Technologii Informacyjnych. Piotr Mika

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Sterowniki Programowalne (SP)

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Podstawy Projektowania Przyrządów Wirtualnych. Wykład 9. Wprowadzenie do standardu magistrali VMEbus. mgr inż. Paweł Kogut

Budowa Mikrokomputera

Architektura komputerów Wykład 2

PAMIĘĆ RAM. Rysunek 1. Blokowy schemat pamięci

Definicje. Algorytm to:

Programowanie sterowników PLC wprowadzenie

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Technika mikroprocesorowa

Algorytmy i schematy blokowe

JĘZYKI PROGRAMOWANIA STEROWNIKÓW

Architektura komputera

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

LEKCJA TEMAT: Współczesne procesory.

4. Procesy pojęcia podstawowe

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Struktura i działanie jednostki centralnej

UKŁADY MIKROPROGRAMOWALNE

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011

Architektura systemów komputerowych. dr Artur Bartoszewski

16. Taksonomia Flynn'a.

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

Algorytm. a programowanie -

Podstawy Informatyki Maszyna Turinga

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Architektura komputerów

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Architektura komputerów. Układy wejścia-wyjścia komputera

Opracował: Jan Front

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Architektura komputerów

Paradygmaty programowania

Kurs Zaawansowany S7. Spis treści. Dzień 1

ALGORYTMY I PROGRAMY

Wstęp do informatyki- wykład 2

Programowanie współbieżne Wykład 2. Iwona Kochańska

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Tranzystor JFET i MOSFET zas. działania

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

4. Procesy pojęcia podstawowe

Algorytmy dla maszyny PRAM

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Wstęp do informatyki- wykład 1

Sterowniki Programowalne (SP) Wykład 11

Historia modeli programowania

Programowanie komputerów

Algorytmy, reprezentacja algorytmów.

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

wagi cyfry pozycje

Podział układów cyfrowych. rkijanka

Rok akademicki: 2013/2014 Kod: EEL s Punkty ECTS: 2. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Języki programowania zasady ich tworzenia

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Zapisywanie algorytmów w języku programowania

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Procesory. Schemat budowy procesora

Programowanie Niskopoziomowe

Architektura komputerów

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

POLITECHNIKA OPOLSKA

Transkrypt:

Wyklad 1 Pojęcie architektury komputerów, modelu architekturalnego, modelu obliczeniowego, podstawowe modele obliczeniowe systemów komputerowych Części wykładu: 1. Pojęcia postawowe dotyczące środowiska sprzętowego komputera 2. Poziomy abstrakcji opisu urządzeń cyfrowych 3. Pojęcie architektura komputerów 4. Modele architekturalne systemów 5. Modele obliczeniowe

Sprzęt komputera Sygnały danych - sygnały reprezentujące dane w trakcie przemieszczania się między składowymi elementami sprzętowymi komputera (ang. data signals). Sygnały sterujące sygnały przesyłane w komputerze w celu wywoływania w nim wykonania operacji niezbędnych dla wykonania programów (ang. control signals). Bramka logiczna - podzespół (urządzenie) komputera realizujący funkcję (operację) logiczną na sygnałach wejściowych; może wypełniać funkcję sterującą - kontroluje (otwiera/zamyka) drogę dla sygnału sterującego lub sygnału danych, albo funkcję przekształcania (przetwarzania) danych - wytwarza nową wartość danej na podstawie danych wejściowych (argumentów operacji, którą realizuje) (ang. logical gate).

Przerzutnik - podzespół (urządzenie) komputera, umożliwiające zapamiętanie jednego bitu informacji (ang. flip-flop). Rejestr podzespół (urządzenie) komputera, umożliwiające zapamiętanie ciągu bitów (ang. register). Rejestr stanowi ciąg przerzutników. Rejestr rozkazów komputera rejestr, do którego należy wprowadzić rozkaz komputera, aby został wykonany (ang. instruction register). Rejestr buforowy rejestr pośredniczący na drodze przesyłania informacji w komputerze (ang. buffer register). Rejestr adresowy rejestr, który przechowuje ciąg binarny wykorzystywany jako adres komórki pamięci komputera (ang. address register).

Rejestr danych rejestr, który przechowuje ciąg binarny wykorzystywany jako dane dla obliczeń (ang. data register). Licznik - podzespół (urządzenie) komputera, przyjmujący określoną sekwencję stanów pod wpływem impulsów podawanych na jego wejście (ang. counter). Licznik zawiera ciąg przerzutników, których stany w danej chwili określają stan licznika (ang. counter status). Licznik rozkazów specjalny licznik w komputerze, który wyznacza adres następnego rozkazu do wykonania (ang. program counter). Blok funkcjonalny (wykonawczy), układ wykonawczy (funkcjonalny), jednostka wykonawcza (funkcjonalna) fragment sprzętu komputera (podzespół) wypełniający wydzielony zbiór operacji (funkcji) o podobnym charakterze (ang. functional unit). Blok arytmetyczno-logiczny inaczej jednostka arytmetyczno-logiczna blok funkcjonalny wykonujący arytmetyczne i logiczne operacje na danych.

Pamięć komputera - podzespół (urządzenie) komputera, umożliwiające przechowywanie informacji (ang. memory, store). Szyna (magistrala) - podzespół (urządzenie) komputera, umożliwiające przysyłanie informacji między różnymi urządzeniami (blokami) komputera (ang. bus). Procesor inaczej centralny procesor, jednostka centralna- główny podzespół komputera, wykonujący instrukcje wewnętrzne komputera (ang. processor, central procesor, central processing unit - CPU). Układ sterowania komputera inaczej układ sterujący podzespół procesora zajmujący się pobieraniem rozkazów i wytwarzaniem sygnałów sterujących pracą elementów składowych komputera (ang. control unit).

Poziomy abstrakcji opisu urządzeń cyfrowych Systemy cyfrowe i ich działanie mogą być opisywane na różnych poziomach szczegółowości, które nazywane są poziomami abstrakcji (ang. abstraction levels). Można wyróżnić 6 poziomów abstrakcji opisu systemów cyfrowych. Podane są one w tabeli poniżej. W pierwszej kolumnie podano nazwę poziomu abstrakcji. W drugiej kolumnie podano elementy składowe, które są rozważane przy opisywaniu systemu na danym poziomie abstrakcji. W trzeciej kolumnie określono ogólnie elementy (rodzaj) języka, przy pomocy którego wyrażony jest opis elementów rozważanych na danym poziomie abstrakcji.

6 poziomów abstrakcji opisu systemów cyfrowych Poziom abstrakcji Rozważane elementy Opis poprzez Poziom systemu operacyjnego Poziom ogólnego systemu Poziom procesorów Poziom bloków funkcjonalnych Poziom logiczny Poziom elektroniczny Moduły systemu operacyjnego Elementy systemu komputerowego Operacje procesora, pamięci, zespoły rejestrów, itp Bloki arytmetyczne, bloki logiczne, układ sterowania Dyrektywy systemu operacyjnego Instrukcje komputera Podstawowe instrukcje procesora Podstawowe operacje Bramki, przerzutniki Równania logiczne Tranzystory, diody itp Równania napięć, prądów

Najwyższym poziomem abstrakcji opisu typowego systemu komputerowego jest poziom systemu operacyjnego. System operacyjny jest spoiwem, który wiąże w systemie komputerowym elementy sprzętowe i programowe systemu z programami użytkowymi. W skrócie, można powiedzieć, że system operacyjny wykonuje szereg funkcji związanych z utrzymywaniem systemu w stanie gotowości do pracy, wykonywaniem programów użytkowych, zabezpieczaniem poprawności działania systemu oraz ochroną programów, danych i urządzeń sprzętowych przed działaniami zagrażającymi ich bezpiecznemu istnieniu w systemie. Spełnianiem tych funkcji zajmują się różne moduły programowe należące do systemu operacyjnego. Można więc spojrzeć na system bardzo makroskopowo, poprzez wypełniane przez niego funkcje i odpowiadające im moduły. Funkcje te i moduły możemy najkrócej opisać poprzez dyrektywy, przy pomocy których te funkcje i moduły są wywoływane.

Niższym poziomem abstrakcji jest tzw. poziom ogólnego systemu. Widzimy tam system komputerowy jako aglomerację połączonych ze sobą dużych podzespołów, takich jak procesory, pamięci, urządzenia zewnętrzne i ich urządzenia sterujące, zainstalowane w komputerze. Podane wyżej elementy będą rozważane przy opisie działania systemu. Opis systemu na tym poziomie wyrazimy poprzez opis współdziałania rozważanych elementów systemu. Najprościej będzie to zrobić przez podanie typów i generalnego opisu instrukcji języka wewnętrznego komputera.

Kolejny niższy poziom abstrakcji opisu systemu jest nazwany poziomem procesorów. Na tym poziomie system widzimy poprzez własności procesorów, których znajomość jest konieczna dla napisania poprawnych programów użytkowych dla tych procesorów. Najprościej te własności wyrazić poprzez listę instrukcji (rozkazów języka wewnętrznego) tych procesorów realizujących operacje obliczeniowe.

Następny niższy poziom abstrakcji nazywamy poziomem bloków funkcjonalnych. Jeżeli chcemy przedstawić funkcjonalność procesorów bardziej szczegółowo, to możemy przejść na niższy poziom abstrakcji i wyróżnić operacje, z których wykonania składa się wykonanie rozkazów procesorów. Z tymi operacjami związane są pewne bloki wykonawcze (inaczej funkcjonalne) we wnętrzu procesora, które te operacje realizują. Na tym poziomie system widzimy jako zbiorowisko połączonych bloków funkcjonalnych. Bloki funkcjonalne najprościej opisać na tym poziomie poprzez opis wykonywanych przez nie operacji.

Niższy poziom abstrakcji opisu systemu jest poziomem układów logicznych. Na tym poziomie widzimy logiczne moduły składowe użyte do realizacji operacji bloków funkcjonalnych. Rozważanymi elementami opisu systemu komputerowego są na tym poziomie elementarne układy użyte do budowy bloków funkcjonalnych i dróg przesyłania informacji między tymi blokami, takie jak bramki logiczne, przerzutniki, itp. Te elementarne układy są opisywane za pomocą tzw. równań logicznych, wyrażających zależności między sygnałami logicznymi obecnymi na ich wejściach i wyjściach.

Jeżeli, opisując system cyfrowy, chcemy wniknąć w szczegóły budowy fizycznej bramek, przerzutników i innych elementów sprzętowy musimy zejść na poziom elektroniczny opisu systemu. Ten poziom rozważa jak bramki i przerzutniki są zbudowane z podstawowych używanych dzisiaj elementów elektronicznych takich jak tranzystory, diody, oporności, kondensatory itp. Dla opisu działania tych elementów i ich współdziałania użyjemy równań opisujących zależności między napięciami na ich końcówkach, rozpływ prądów, itp.

Należy tu powiedzieć, że zwykle, na niższych poziomach abstrakcji opisu systemów cyfrowych, stosujemy hierarchiczną metodę opisu. Polega to na tym, że przechodzimy na poziom niskiej abstrakcji jedynie dla niewielkiej liczby składników opisu widocznych na wyższym poziomie abstrakcji. Ułatwia to odbiór opisów przez osoby lub systemy z nich korzystające.

Dla opisu systemu na danym poziomie abstrakcji często stosujemy tzw. schematy blokowe, w których przedstawione są elementy systemu rozważane na danym poziomie abstrakcji oraz ich wzajemne powiązania. Schemat blokowy urządzenia (komputera) (ang. block diagram) jest to rysunek składający się ze zbioru figur geometrycznych z nazwami (prostokątów, kwadratów, kół itp.) połączonych liniami. Figury symbolizują podzespoły urządzenia.

Linie łączące przedstawiają możliwe powiązania (współdziałanie) między podzespołami, np. przesyłanie informacji, przesyłanie sygnałów sterujących itp. Dobór podzespołów przedstawionych w schemacie blokowym zależy od poziomu szczegółowości z jaką rozpatrywane jest działanie urządzenia a więc poziomu abstrakcji.

Pojęcie architektura komputerów Definicję pojęcia architektury podał w 1964 G. Amdahl, projektant słynnej serii komputerów IBM System/360, używanych w latach 60-tych. Architektura komputera (ang. computer architecture) jest to charakterystyka komputera, którą musi znać programista, aby napisać poprawny program w języku wewnętrznym dla tego komputera. Niemal taka sam znajomość cech komputera jest potrzebna dla pisania programów w języku asemblera, definicję te więc można zmodyfikować wprowadzając w języku wewnętrznym lub asemblerze.

Zgodnie z definicją Amdahla na architekturę komputera składają się: schemat blokowy komputera, opis rejestrów, struktura i opis pamięci, opis bloków funkcjonalnych opis listy rozkazów opis podstawowych mechanizmów sterujących, takich jak układ przerwań, układy synchronizacji, itp.

Architektura komputera wyznacza poziom abstrakcji wiedzy o komputerze potrzebny do napisania programu w języku wewnętrznym komputera lub języku asemblera. Ten poziom abstrakcji wyznacza niezbędną strukturę komputera i odpowiadający jej schemat blokowy. Organizacja logiczna komputera jest to realizacja architektury komputera na poziomie układów logicznych, rejestrów, pamięci i bloków funkcjonalnych. Poziom abstrakcji rozpatrywany w organizacji logicznej komputera jest znacznie niższy niż przy rozpatrywaniu architektury komputera, gdyż uwzględnia układy logiczne, które w architekturze komputera nie są uwzględniane.

Możliwe są dwa sposoby rozpatrywania architektury: Exo-architektura (architektura zewnętrzna )- opisywane urządzenie traktuje się całościowo jako blok (element składowy schematu blokowego) i podaje się jego opis funkcjonalny. Endo-architektura (architektura wewnętrzna) - opis urządzenia na poziomie abstrakcji niższym (bardziej szczegółowym) niż poziom exoarchitektury, opisuje się schemat blokowy oraz własności i działanie elementów tego schematu.

Bardziej ogólna definicja architektury urządzeń, przeznaczona nie tylko dla rozpatrywania komputerów, została podana w 1981 przez S. Dasguptę: "Architektura jest to opis urządzenia (komputera lub jego elementu) na danym poziomie abstrakcji" albo "definicja sprzęgu (interfejsu) między różnymi poziomami abstrakcji opisu urządzenia (komputera lub jego elementu), potrzebnego do zrozumienia działania urządzenia (komputera, elementu) na tym niższym poziomie".

Na rysunku poniżej pokazano kolejne poziomy abstrakcji opisu architektury systemu komputerowego i jego elementów. Najwyższy poziom abstrakcji jest to poziom globalnych własności systemu, na którym podajemy jego exo-architekturę. Zawiera ona cechy systemu istotne z punktu widzenia wykorzystania systemu jako elementu składowego większych struktur np. struktur multi-systemowych. Endo-architektura systemu to jego struktura w rozłożeniu na mniejsze bloki np. procesory, bloki pamięci i elementy łączące oraz ich cechy ogólne wraz z ogólnym sposobem współpracy. Elementy systemu widzianego na tym poziomie możemy opisywać podając ich exo-architekturę, użyteczną dla budowy z nich całego systemu lub tez możemy wejść w ich endo-architekturę czyli ich strukturę i opis funkcjonalny w rozbiciu na mniejsze elementy składowe. Aby zrozumieć działanie systemu na kolejnych, malejących poziomach abstrakcji, musimy, zgodnie ze definicją Dasgupty, znać endo-architekturę systemu odpowiadającą dekompozycji na elementy składowe o zadanym niższym poziomie szczegółowości.

Architektura globalna (exo-architektura) systemu komputerowego C Architektura szczegółowa (endo-architektura) systemu komputerowego P 1 P 2 P k Sieć łącząca M 1 M 2 M i Procesory Bloki pamięci

Architektura globalna (exo-architektura) procesora P Architektura szczegółowa (endo-architektura) procesora Zespół Rejestrów Układ Sterowania Magistrala systemowa Blok Funkcjonalny 1 Blok Funkcjonalny n

Architektura ogólna (exo-architektura) bloku funkcjonalnego Blok Funkcjonalny Architektura szczegółowa (endo-architektura) bloku funkcjonalnego

Pojęcie "modelu architekturalnego" komputera Model architekturalny komputera określa w jaki sposób będą wykonywane obliczenia w danym komputerze.

Na model architekturalny komputera składa się 5 podstawowych elementów: 1. Podstawowe operacje obliczeniowe czyli podstawowe operacje komputera i typy danych określone przez listę instrukcji wewnętrznych. 2. Definicja przestrzeni adresowych dostępnych dla obliczeń (mechanizm dostępu do danych). 3. Sterowanie operacjami obliczeniowymi ( zasady odwzorowania problemu obliczeniowego na podstawowe operacje obliczeniowe i określania kolejności ich wykonania - mechanizm sterowania w programach). 4. Zasady komunikacji między komputerami pracującymi równolegle. 5. Zasady synchronizacji wymiany informacji.

Model architekturalny von Neumana: 1. Procesor wykonuje obliczenia zgodnie z programem, składającym się z instrukcji wewnętrznych, zapamiętanych w pamięci operacyjnej. 2. Instrukcje wykonują operacje na danych ulokowanych w pamięci i rejestrach. 3. Pamięć instrukcji wewnętrznych i danych jest wspólna. 4. Procesor ma układ sterowania, który szeregowo pobiera kolejne instrukcje z pamięci i steruje ich wykonaniem w komputerze.

Model von Neumana pochodzi z projektu elektronicznej maszyny EDVAC oraz maszyny IAS opublikowanego w 1946 na Uniwersytecie Princeton w USA przez prof. Johna von Neumana. Koncepcje von Neumana okazały się być wcześniej zrealizowane w Iowa State College w USA w 1939 r w maszynie ABC (Atanasov-Berry Computer), a pózniej w maszynie ENIAC na Uniwersytecie Pensylvania, która była pierwszą elektroniczną (lampową) maszyną cyfrową. Pamięć Blok arytmetyczno - logiczny ALU Układy We / Wy Układ sterowania Ogólny schemat blokowy komputera o architekturze von Neumana

Harvardzki model architekturalny (ang. Harvard architecture): 1. Procesor wykonuje obliczenia zgodnie z programem, składającym się z instrukcji wewnętrznych, zapamiętanych w pamięci operacyjnej. 2. Instrukcje wykonują operacje na danych ulokowanych w pamięci i rejestrach. 3. Pamięć instrukcji wewnętrznych i danych jest rozdzielna. 4. Układ sterowania pobiera kolejne instrukcje z pamięci równolegle z dostępem do danych dla innych rozkazów.

Model pochodzi z maszyny Mark I (przekaźnikowa pamięć danych, pamięć instrukcji na taśmie papierowej), zbudowanej w 1944 na Uniwersytecie Harvard w USA. Pamięć danych Pamięć instrukcji Blok arytmetyczno - logiczny ALU Układ sterowania Układy We / Wy Ogólny schemat blokowy komputera o architekturze harvardzkiej

Pojęcie modelu obliczeniowego Model obliczeniowy (ang. computational model) określa w jaki sposób będą programowane i wykonywane obliczenia w programie. Na model obliczeniowy składa się: model architekturalny systemu język programowania.

Podstawowe modele obliczeniowe wykorzystywane w informatyce. Model obliczeniowy Model architekturalny Język programowania Model von Neumana (sterowany przepływem sterowania w programie) Model sterowany przepływem danych w programie (ang. data flow driven) Model sterowany żądaniami obliczeń (aplikacyjny, redukcyjny) Model programowania obiektowego Model programowania logicznego Maszyna von Neumana Komputer sterowany przepływem danych (ang. data flow computer) Komputer redukujący zapisy instrukcji do danych Komputer zorientowany obiektowo Komputer zorientowany na programowanie logiczne Imperatywny Graf przepływu danych w programie lub język pojedyńczych przypisań Funkcjonalny czyli aplikacyjny Obiektowy lub zorientowany obiektowo Logiczny Model Turinga Maszyna Turinga Dane na taśmie wraz z tablicą przejść stanów

Model obliczeniowy von Neumana (klasyczny) Instrukcje obliczeniowe wykonują operacje na danych zapisanych w pamięci i rejestrach komputera. Kolejność wykonywania instrukcji w programie jest ustalona przez programistę poprzez kolejność ich zapisu w programie oraz instrukcje zmiany sterowania: skok, wywołanie podprogramu, powrót z podprogramu, itp. W modelu architekturalnym von Neumana kolejność wykonywania instrukcji zapisanych w pamięci wyznacza licznik rozkazów (ang. program counter), który zawiera zawsze adres następnej instrukcji w pamięci. O ile aktualny rozkaz nie jest rozkazem zmiany sterowania, to jako następny wykonany jest rozkaz o adresie wziętym z licznika rozkazów komputera. O ile aktualnym rozkazem jest rozkaz zmiany sterowania w programie, to ustawia on nową zawartość licznika rozkazów tj. nowy adres następnej instrukcji do wykonania.

Język programowania stanowi w tym modelu język w jakim zapisano program przed wykonaniem a więc język maszynowy. W języku maszynowym programista lub kompilator określa bezpośrednio (explicite) i dokładnie jakie instrukcje (obliczenia) maja się wykonać i dokładnie w jakiej kolejności. Takie języki programowania nazywane są językami imperatywnymi.

Przykład Obliczenie: y = (a+c)*(b+5)+a*c) drukuj y dla a=1, b=2, c=3. Budowa instrukcji komputera użytych poniżej w programie realizującym obliczenie y.: operacja adres/wartość argumentu 1 adres/wartość argumentu 2 adres wyniku

Program jest zapisany w pamięci komputera w komórkach odpowiadających kolejnym adresom począwszy od a 1. Wykonanie programu rozpoczyna się od instrukcji zapisanej pod adresem a 1. Po wykonaniu każdej instrukcji, komputer wykonuje instrukcję zapisaną pod następnym adresem pamięci. Steruje tym zwiększająca się o jeden zawartość licznika rozkazów.

Ilustracja modelu obliczeniowego von Neumana Licznik rozkazów Instrukcje programu Dane/wyniki 1 :a 2 :b a 1 3 :c a : 1 a +1 : 1 a +2 : 1 a +3 : 1 a +4 : 1 a +5 : 1 + a c k1 + b 5 k2 * a c k3 * k1 k2 k4 + k3 k4 k5 drukuj k5 - - :k1 :k2 :k3 :k4 :k5

Model obliczeniowy sterowany przepływem danych W modelu obliczeniowym sterowanym przepływem danych kolejność wykonania instrukcji programu nie jest wyznaczana przez programistę, lecz przez gotowość wszystkich danych wejściowych instrukcji. Wszystkie instrukcje gotowe do wykonania, w sensie dostępności ich danych wejściowych, powinny wykonać się równolegle. Po wykonaniu tych instrukcji, wytworzone przez nich wyniki częściowe są rozprowadzane do wszystkich instrukcji programu, które z nich korzystają. W ten sposób przepływ obliczonych wyników (danych dla innych instrukcji) zapewnia gotowość instrukcji i wyznacza kolejność ich wykonania w programie.

Model architekturalny komputera sterowanego przepływem danych zakłada, że dla każdej instrukcji gotowej do wykonania będzie dostępny odrębny procesor. Model ten zapewnia równoległy przepływ danych między tymi procesorami. W praktyce takie założenia mogą być spełnione tylko dla ograniczonej liczby instrukcji w programie. W związku z tym, w praktyce, model architekturalny sterowany przepływem danych jest realizowany w oparciu o ograniczoną liczbę procesorów typu von Neumana. W systemie takim istnieje blok przeglądania instrukcji programu pod względem ich gotowości do wykonania. Spośród instrukcji gotowych, kieruje się do równoległego wykonania tylko liczbę odpowiadającą faktycznej liczbie dostępnych procesorów. Po ich wykonaniu, rozsyła się wyniki między instrukcjami. Następnie, wyznacza się instrukcje gotowe do wykonania i znów kieruje się do wykonania ich liczbę ograniczoną faktyczną dostępnością procesorów wykonawczych.

Językiem programowania w modelu obliczeniowym sterowanym przepływem danych jest graf instrukcji programu połączonych krawędziami, które są określone przez wskaźniki rozpływu wyników obliczeń między instrukcjami. Inną formą języka programowania w tym modelu są tzw. języki pojedyńczych przypisań (ang. single assignment languages), gdzie wykorzystuje się zmienne, reprezentujące dane i wyniki obliczeń, którym nadaje się wartości tylko raz w trakcie wykonywania programu. Obydwie formy języka programowania określają jakie obliczenia mają być wykonane, nie określając dokładnie ich kolejności. Takie języki programowania nazywamy językami deklaratywnymi.

Przykład Obliczenie: y := (a+c)*(b+5)+a*c drukuj y dla a=1, b=2, c=3. Budowa instrukcji komputera: operacja pole argumentu 1 pole argumentu 2 adres przesłania wyniku

Ilustracja modelu obliczeniowego sterowanego przepływem danych Dane wejściowe: Instrukcje: a: 1 b: 2 c: 3 i : + P P i (1) 1 4 i : + P 5 i (2) 2 4 i : * P P i (2) 3 5 i 4 : * P P i 5 (1) i 5 : * P P i 6 (1) i 6 : drukuj P - -

W powyższym przykładzie, a, b, c, symbolizują adresy komórek pamięci komputera, w których przechowuje się wartości danych wejściowych dla zmiennych a, b, c, użytych w formule obliczania wartości y. i 1,...,i 6 są to adresy pod którymi zapisano w pamięci komputera instrukcje programu. Wewnątrz instrukcji znajdują się pola do wpisania danych początkowych dla programu lub wyników wykonania innych instrukcji. Są one oznaczone literą P. Polom tym są przypisane identyfikatory1 i 2. Na początku następuje wpisanie danych wejściowych do wszystkich instrukcji, które z nich korzystają. Wykonują się równolegle wszystkie instrukcje, które mają gotowe (wpisane) wszystkie dane wejściowe. Po wykonaniu każdej instrukcji, jej wynik jest rozsyłany do wszystkich instrukcji wskazanych w prawym skrajnym polu instrukcji podany jest adres instrukcji w pamięci oraz numer pola (w nawiasie). Obliczenie zostaje zakończone po wykonaniu instrukcji spod adresu i 6.

Model obliczeniowy sterowany żądaniami obliczeń Jest to model obliczeniowy, w którym kolejność wykonywania obliczeń w programie nie jest określona przez programistę i nie zależy od ich porządku w programie. W modelu tym instrukcja (pakiet obliczeniowy) jest aktywowana do wykonania, o ile jej wyniki są potrzebne dla wykonania innej instrukcji. Instrukcja zostaje wykonana o ile ma dostarczone wszystkie potrzebne argumenty w postaci liczbowej. Wykonanie instrukcji zamienia ją na wartość wytworzonego przez nią wyniku (redukuje do wyniku), który staje się wtedy dostępny dla innych instrukcji. Stąd taki model obliczeniowy nazywamy również modelem redukcyjnym (ang. graph reduction model).

Inna odmiana modelu sterowanego żądaniami obliczeń, powoduje przepisywanie potrzebnych formuł obliczeniowych z aktywowanych pakietów instrukcji do pakietów instrukcji aktywujących, dotąd aż w rozszerzonym aktywującym pakiecie zawarte będą wszystkie niezbędne formuły do obliczenia żądanej wartości. Przepisywanie formuł jest równoważne przykładaniu (ang. application) formuł (funkcji) z pakietów aktywujących do formuł (funkcji) z pakietów aktywowanych. Dlatego taki model obliczeniowy nazywamy również modelem aplikacyjnym (ang. applicative model) lub modelem funkcyjnym (ang. functional model). Do zapisu programu używamy w tym przypadku deklaratywnych języków programowania nazywanych językami funkcyjnymi (ang. functional languages).

Przykład Obliczenie: y := (a+c)*(b+5)+a*c drukuj y dla a=1, b=2, c=3. Budowa pakietu instrukcji komputera: operacja adres pakietu dostarczającego argument 1 adres pakietu dostarczającego argument 2 pole wyniku

Ilustracja modelu obliczeniowego sterowanego przepływem żądań obliczeń Dane wejściowe: a: 1 b: 2 c: 3 Instrukcje: i 1 : + P i 2 : + 5 P i 3 : * P i 4 : * P i 5 : * P i 6 : drukuj - P

W powyższym przykładzie, a, b, c, symbolizują adresy komórek pamięci komputera, w których przechowuje się wartości danych wejściowych dla zmiennych a, b, c, użytych w formule obliczania wartości y. i 1,...,i 6 są to adresy pod którymi zapisano w pamięci komputera pakiety instrukcji programu. Wewnątrz każdej instrukcji znajdują się pola wskazujące instrukcje, które mają wytworzyć argumenty dla tej instrukcji. Istnieje też pole do wpisania wyniku wykonania tej instrukcji, oznaczone literą P. Na początku następuje próba wykonania aktywacja instrukcji spod adresu i 6. Instrukcja, która jest aktywowana może się wykonać, jeśli są gotowe wszystkie potrzebne jej dane wejściowe. O ile dane te nie są gotowe, następuje aktywacja wyliczających je instrukcji. Instrukcja spod adresu i 6 aktywuje instrukcję spod i 5. Ta z kolei aktywuje instrukcje spod i 3, i 4., itd. Instrukcje spod i 1, i 2, i 3 pobierają dane wejściowe i wykonują się jako pierwsze, zapełniając swoje pola P. Ich wyniki w polach P są dostarczone do instrukcji, które ich potrzebują. Obliczenie zostaje zakończone po wykonaniu instrukcji spod adresu i 6.

Model obliczeniowy Turinga. Ten model obliczeniowy został zaproponowany w 1937 r przez A. Turinga z Uniwersytetu Cambridge w Anglii jako pierwszy uniwersalny model obliczeniowy. Służył dla porównywania własności różnych algorytmów i programów pochodzących z różnych komputerów, metodą przedstawienia ich w tym modelu obliczeniowym. Jest używany do dzisiaj w tym celu przez teoretyków informatyki. Model Turinga obejmuje model architekturalny maszynę Turinga oraz odpowiedni dla tego modelu specjalny język programowania.

Następujące elementy składają się na model architekturalny Turinga: 1. Skończony alfabet symboli: a, b, c,, m. 2. Skończony zbiór stanów: stan początkowy S0, stan S1, stan S2,, stan końcowy Sk. 3. Nieskończona taśma z polami na zapis symboli z alfabetu. 4. Głowica czytająco/pisząca na taśmie, która może przesuwać się o jedno pole w zadanym kierunku, 5. Diagram przejść między stanami tablica przejść, określająca następny stan, zapis symbolu pod głowicą i kierunek następnego ruchu.

6. Działanie mechanizmu sterowania maszyna w stanie i czyta znak z pod głowicą, dla stanu i oraz znaku z maszyna określa z tabeli przejść: stan, do którego ma przejść, znak, który ma być wpisany w polu pod głowicą, kierunek ruchu głowicy o 1 miejsce, głowica wpisuje nowy znak i przesuwa się w zadanym kierunku. 7. Instrukcje to znak, stan, kierunek. Język programowania w tym modelu obliczeniowym stanowi alfabet symboli i tablica przejść stanów maszyny.

Schemat maszyny Turinga

Przykład Dodawanie liczb całkowitych (model obliczeniowy takiego dodawania) w maszynie Turinga: Notacja zapisu składników i wyniku: jednorodne ciągi znaków 1 w liczbie równej wartości składnika lub wyniku, zapisane w polach odseparowanych znakami X. Na taśmie zapisane są dane sześcio-pozycyjne: 4 oraz 5 XX001111X111110XX Program startuje z lewego X przesuwa głowicę w prawo aż do pierwszego X po ciągu zer i jedynek, zastępuje to X przez 1, następnie przesuwa się w prawo do ostatniej jedynki, zastępuje tę jedynkę przez O. Taśma po wykonaniu operacji zawiera kod liczby 9: XX0011111111100XX.