Podstawy Techniki Mikroprocesorowej Architektury mikroprocesorów Wydział Elektroniki Mikrosystemów i Fotoniki dr inż. Piotr Markowski Na prawach rękopisu. Na podstawie dokumentacji ATmega8535, www.atmel.com.
Architektura komputerów Podział ze względu na strukturę pamięci: Podział ze względu na instrukcje procesora:
Architektura komputerów: von Neumanna Pierwsza architektura komputerowa, rok 1945. ALU układ sterujący CPU
Architektura komputerów: Harwardzka Prostsza budowa (w stosunku do von Neumanna). ALU układ sterujący CPU
AVR mapy pamięci 0 32 rej. uniwersalne 31 0 64 rej. specjalne 63 0 511 RAMEND 512 bajtów SRAM
Architektura komputerów: von Neumanna vs Harwardzka von Neumanna Harwardzka
Architektura komputerów: zmodyfikowana Harwardzka ALU układ sterujący CPU
Architektura komputerów: CISC (Complex Instruction Set Computer) lata 60 XX wieku (droga pamięć - trzeba ją oszczędzać) Stosowane: rodzina procesorów x86 (PC) R8C25 (Renesas)
Architektura komputerów: RISC (Reduced Instruction Set Computer) 80% instrukcji CISC było nieużywane początek lat 70 XX wieku wdrożenie koncepcji RISC (projekt IBM 801) Stosowane przeszłość: Amiga, MAC (ustąpiły CISC) obecnie: smartfony, tablety, mikrokontrolery (ARM7) (PIC, AVR)
MIKROPROGRAM CISC vs RISC PC PM D PC PM IR D INSTRUKCJE WYKONYWANE PRZEZ HARDWARE µpc µpm Dµ wykonanie instr. (cykle zegarowe) wykonanie instr. (cykle zegarowe)
CISC vs RISC - Kompleksowy zestaw instrukcji, wielocyklowe - Każda instr. może odnosić się do pamięci - Brak potoków - Instrukcje zamieniane na mikroprogram - Różne formaty instrukcji - Wiele trybów adresowania pamięci - Proste instrukcje, jednocyklowe - Tylko LOAD/STORE odnoszą się do pamięci - Potoki - Instrukcje wykonywane przez hardware - Jeden format instrukcji - Niewiele trybów adresowania pamięci
CISC vs RISC 1 2 3 Pamięć 1 2 3 4 R1 R2
CISC vs RISC - Kompleksowy zestaw instrukcji, wielocyklowe - Każda instr. może odnosić się do pamięci - Brak potoków - Instrukcje zamieniane na mikroprogram - Różne formaty instrukcji - Wiele trybów adresowania pamięci - Proste instrukcje, jednocyklowe - Tylko LOAD/STORE odnoszą się do pamięci - Potoki - Instrukcje wykonywane przez hardware - Jeden format instrukcji - Niewiele trybów adresowania pamięci
CISC vs RISC 100101101101110 001001111011100 10011011101101101111011101 00110111001111011100110110 01110111011101100110100110 11110111011100110011100110 10110110011011001101101110 1011100 100101101101110 001001111011100 001001111011100 100101101101110 110101100010011 110111010111001 010101100010011 110111010111001
RISC
CISC vs RISC - Kompleksowy zestaw instrukcji, wielocyklowe - Każda instr. może odnosić się do pamięci - Brak potoków - Instrukcje zamieniane na mikroprogram - Różne formaty instrukcji - Wiele trybów adresowania pamięci - Proste instrukcje, jednocyklowe - Tylko LOAD/STORE odnoszą się do pamięci - Potoki - Instrukcje wykonywane przez hardware - Jeden format instrukcji - Niewiele trybów adresowania pamięci
CISC vs RISC - Mało rejestrów - Dużo rejestrów - więcej linii kodu - nawet 4x szybszy - Mniej tranzystorów, niższa cena
RISC potoki (pipeline) Zwiększają szybkość procesorów RISC Pob Dek Wyk P Z Pob Dek Wyk P Z Pob Dek Wyk P Z Pob Dek Wyk P Z Pob Dek Wyk P Z Pob pobranie instrukcji Dek dekodowanie instr. Wyk wykonanie instr. P dostęp do pamięci Z zapis wyniku
RISC potoki (pipeline) Krok potoku Cykl zegarowy 1 2 3 4 5 6 Pobranie LDI ADD Dekodowanie LDI ADD Wykonanie LDI ADD Dostęp LDI ADD Zapis LDI ADD
RISC potoki (pipeline) LDI R16,105 BRNE etykieta ADD R16,R18 Krok potoku Cykl zegarowy 1 2 3 4 5 6 Pobranie LDI ADD Dekodowanie LDI ADD Wykonanie LDI ADD Dostęp LDI ADD Zapis LDI ADD
RISC potoki (pipeline) Liczba kroków potoku: klasycznie: AVR, PIC: Intel Xeon: Xelerated X10q Network Processor: Po co tyle?? Procesor fully pipelined
Budowa mikrokontrolera ATmega8535
ATmega8535 Porty I/O Urządzenia peryferyjne CPU
ATmega8535 - CPU CPU: Jednostka Arytmetyczno-Logiczna (ALU) Rejestry uniwersalne Status Register (SREG) Wskaźnik Stosu (SP) Licznik rozkazów (PC) RISC architektura Harwardzka rodzina AVR typ ATmega 1-poziomowy potok
Arithmetic Logic Unit Działanie ALU: 1) wczytanie 2) wczytanie 3) pobranie 4) wykonanie 5) inkrementacja
w1,w2 Status Register I obsługa przerwań on/off T bit magazynujący (storage) H Half carry przeniesienie z bitu 3 przy op. arytmet. S Sign - XOR flag N i V V zmiana z 01111111 na 10000000 N gdy MSB = 1 Z gdy 00000000 C Carry przeniesienie
w1,w2 Pamięć ATmega8535 Pamięć programu FLASH EEPROM, 8 kb kod programu Pamięć danych SRAM, 512 B bieżące dane tymczasowe rejestry Pamięć dodatkowa, użytkownika EEPROM, 512 B
w1,w2 Pamięć programu FLASH EEPROM zorganizowana jako 4 K x 16 bajtów ($FFF) podzielona na PROGRAM SECTION oraz BOOT SECTION przechowuje program załadowany do mikrosterownika
w1,w2 Pamięć programu licznik rozkazów Program Counter 11 10 9 8 7 6 5 4 3 2 1 0 PC (FLASH EEPROM $000 - $FFF)
w1,w2 Pamięć danych SRAM, rejestry 32 rej. uniwersalne 64 rej. specjalne Mapa pamięci danych 512 bajtów SRAM
w1,w2 SRAM Stos Wskaźnik stosu (Stack Pointer) wskazuje SPL, SPH 512 wierszy, 512 kb Dekrementacja SP Konieczna inicjalizacja stosu Wierzchołek stosu
w1,w2 Rejestry Rejestry specjalne: do sterowania urządzeniami wewnętrznymi - 64 szt. (str. 299) - nazwy to skróty (SREG = Status Register) Rejestry uniwersalne: - do wykonywania operacji (arytmetycznych, logicznych itp.) - 32 szt. - nazwy: R0 R31 (w tym X, Y, Z)