Mikroproceor Szkoła Główna Służby Pożarniczej Zakład Informatyki i Łączności November 7, 2016
1 Model von Neumanna 2 ALU 3 CPU 4 Cykl rozkazów 5 Kodowanie rozkazów 6 Programowanie 7 Mikroproceor
Programowanie wczenych komputerów Programowanie wczenych komputerów (np. ENIAC) polegało na fizycznym przełączaniu przewodów. Pamięć była wykorzytywana tylko do przechowywania danych przetwarzanych przez program.
Komputer według Johna Von Neumanna Obecne komputery realizują model zaproponowany przez Johna Von Neumanna w 1946 r.: - Proceor (Central Proceing Unit CPU) wykonuje program zbudowany ze kończonej, zdefiniowanej dla danej architektury lity rozkazów. - Program oraz dane ą przechowywane w pamięci. John von Neumann (1903-1957) inżynier chemik, fizyk, matematyk i informatyk
Elementy ytemu mikroproceorowego Pamięć Mikroproceor Układy Wejścia-Wyjścia We/Wy magitrala terująca magitrala adreowa magitrala danych
Magitrale Wzytkie moduły ą połączone za pośrednictwem magitral, które łużą do przeyłania: - danych, - adreów, - ygnałów terujących Szyna główna magitrala terująca magitrala adreowa magitrala danych
Schemat blokowy komputera Układy We/wy Mikroproceor Pamięć Układ terowania Program ALU Rejetry Dane Dane Sterowanie
Arithmetic Logic Unit ALU
Rejetry przeuwające R IN CI R0 R1 8 bit in SHR 8 bit out CO OUT L OUT CO R0 R1 8 bit in SHL 8 bit out CI IN
EXOR a b 00100000 00011111 równe a więkze a b y a b y a b y 0 0 0 0 1 1 1 0 1 1 1 0 równe a więkze
ALU a b OR AND NOT EXOR E E E E a więkze równe Z zero y a b ci op ALU y co a więkze równe zero ci SHR SHL ADD E E E co 000 ADD Dodaj 001 SHR Przeuń w prawo 010 SHL Przeuń w lewo 011 NOT Zaprzeczenie 100 AND Iloczyn 101 OR Suma 110 XOR Excluive or 111 CMP Porównaj op 3x8
CPU MAR TMP R0 R1 R2 R3 e e e e bu 1 A B ALU op co a> eq z CU Układ terowania RAM ACC e e źródło: na podtawie [1]
Zegar Clock clk clk d clk clk d clk e clk Clock clk clk e clk
Stepper clk Stepper reet krok 1 krok 2 krok 3 krok 4 krok 5 krok 6 krok 7 clk krok 1 krok 2 krok 3 krok 4 krok 5 krok 6 krok 7 źródło: na podtawie [1]
CU clk Clock clk clk e reet Stepper 1 2 3 4 5 6 7 bu1 RAM ACC R0 R1 R2 R3 do ALU MAR ACC RAM TMP R0 R1 R2 R3 źródło: na podtawie [1]
CU clk Clock clk clk e reet Stepper 1 2 3 4 5 6 7 bu1 RAM ACC R0 R1 R2 R3 do ALU MAR ACC RAM TMP R0 R1 R2 R3 źródło: na podtawie [1]
CPU MAR TMP R0 R1 R2 R3 e e e e bu 1 A B ALU op co a> eq z CU Układ terowania RAM ACC e IAR e IR e źródło: na podtawie [1]
Cykl rozkazowy mikroproceora Pobierz rozkaz Zwiękz licznik rozkazów Faza pobrania Zdekoduj rozkaz Wykonaj rozkaz Faza wykonania
CU clk Clock clk clk e reet Stepper 1 2 3 4 5 6 7 bu1 IAR RAM ACC IR MAR IAR ACC do ALU IR źródło: na podtawie [1]
Cykl rozkazów ALU ACC bu1 1 IAR 1 IR MAR ALU bu1 2 MAR ACC IAR IR ALU bu1 3 MAR ACC IAR IR
Kodowanie rozkazów - ALU 2 8 =256 rozkazów Intrukcja ALU Operacja 000 - ADD 001 - SHL 010 - SHR 011 - NOT 100 - AND 101 - OR 110 - XOR 111 - CMP Rejetr A 00 - REG 0 01 - REG 1 10 - REG 2 11 - REG 3 Rejetr B 00 - REG 0 01 - REG 1 10 - REG 2 11 - REG 3 ADD REG1 REG2 1 000 01 10 10000110 1 Rejetr Intrukcji
Kodowanie rozkazów - inne Intrukcja ŁADUJ/ZAPISZ Rejetr A 00 - REG 0 01 - REG 1 10 - REG 2 11 - REG 3 LD REG1 REG2 0 000 01 10 00000110 0 - ŁADUJ 1 - ZAPISZ Rejetr B 00 - REG 0 01 - REG 1 10 - REG 2 11 - REG 3 0 0 0 Rejetr Intrukcji
CU clk Clock clk clk e reet Stepper 1 2 3 4 5 6 7 bu1 IR IAR RAM ACC do ALU Układ kombinacyjny MAR IAR ACC IR źródło: na podtawie [1]
CPU MAR TMP R0 R1 R2 R3 e e e e bu 1 A B ALU op C A E Z Flagi CU Układ terowania RAM ACC e IAR e IR e źródło: na podtawie [1]
Ta, daa!
Program krok po kroku Ale jak to działa?
Programowanie Język wyokiego poziomu Kod Aemblera Kod mazynowy (C, Java, Pacal, Perl,...) #include <tdio.h> main() { int a, b, c; a=1; b=2; c=a+b; if(c<10) { printf("c mniejze od 10\n"); } } Kompilator.file "helo.c".ection.rodata.lc0:.tring "c mniejze od 10\n".text.globl main.type main, @function main: puhl %ebp movl %ep, %ebp ubl $24, %ep andl $-16, %ep movl $0, %eax ubl %eax, %ep movl $1, -4(%ebp) movl $2, -8(%ebp) movl -8(%ebp), %eax addl -4(%ebp), %eax movl %eax, -12(%ebp) cmpl $9, -12(%ebp) jg.l2 ubl $12, %ep puhl $.LC0 call printf addl $16, %ep.l2: leave ret.ize main,.-main 001010101010101 101101110101011 101010101001010 110101010101001 000101010100101 001010101001001 101010101001011 101010100101010 101010100010000 010100101000011 000000101010100 010101010101111 000111101010101 101010111110101 111101110001111 101010111101011 Aembler
Microproceor Zawarcie wzytkich podzepołów wchodzących w kład CPU w jednym chipie dało początek ery mikroproceorów. Pierwzy komercyjny mikroproceor o nazwie Intel 4004 zaprojektowany zotał przez Federico Faggina w 1971 roku. Parametry: - zegar 108 khz - 0,09 MIPS - zyna danych 4 bity - ilość tranzytorów 2 300, - wymiar technologiczny 10 mikronów - pamięć adreowalna 640 bajtów - pamięć programu 4 kilobajty używany w kalkulatorach Buicom Pierwzym na świecie proceorem był ściśle tajny "chip" F14 CADC używany w amolocie Grumman F-14 Tomcat. Informacja ta zotała podana do publicznej wiadomości w 1998 roku
Federico Faggin Zawarcie wzytkich podzepołów wchodzących w W 1970 wpólnie z trzema innymi inżynierami kład CPU w jednym chipie dało (Marcianem początek Hoffem, ery Stanleyem Mazorem i mikroproceorów. Maatohim Shimą) opracował pierwzy 4-bitowy mikroproceor, Intel 4004. Wpółtworzył także pierwzy proceor 8-bitowy, Intel 8008 Faggin opuścił Intel aby założyć firmę Zilog, producenta Z80. Federico Faggin (ur. 1941 r.) włoki fizyk, pecjalita inżynierii elektrycznej, uważany za jednego z twórców mikroproceora.
Mikrokontroler AVR WE/WY TIMER Pobierz rozkaz MAGISTRALA DANYCH Zwiękz licznik rozkazów EEPROM FLASH AVR CPU RAM Zdekoduj rozkaz Wykonaj rozkaz Pośrednie i bezpośrednie adreowanie