Little / Big Endian Machines Podstawy techniki mikroprocesorowej ETEW6 Przetwarzanie danych Typy procesorów Andrzej Stępień Katedra Metrologii Elektronicznej i Fotonicznej Little Endian 7 Word High Byte Low Byte +1 +2 +1 memory address 1 High Byte Low Byte Big Endian 7 Word High Byte Low Byte +1 Low Byte High Byte Endianness 245471.pdf IA-2 Intel Architecture. Software Developer s Manual. Volume 1: Basic Architecture 127 2-bit microprocessor ARM core Double Quardword High Quardword + halfword word Word 7 High Low Byte Byte +1 1 16 Doubleword High Word Low Word +2 6 2 1 Quardword High Doubleword Low Doubleword 64 6 +4 Low Quardword Algorytm algorytm (algorithm) - przepis rozwiązania określonego zagadnienia, sposób postępowania doprowadzający do rozwiązania problemu; algorytm złożony jest z: sformułowania problemu do rozwiązania określenia danych wejściowych i postaci wyników przedstawienia działania, jego struktury w postaci ciągu operacji, np. arytmetycznych, logicznych, podstawień itp. elementami struktury algorytmu są: sekwencja element wyboru warunku pętla umożliwiająca wielokrotną realizację określonych operacji T sekwencja 1 warunek 1 T sekwencja 2 sekwencja warunek 2 Optymalizacja, przetwarzanie danych Optymalizacja kompilatorów: rozkazy wykonywane przez procesor realizują funkcje, które najczęściej powtarzają się podczas kompilacji lista rozkazów dostosowana do potrzeb kompilatorów, a nie własności procesora założenia przydatne przy projektowaniu nowych konstrukcji procesorów Sposób przetwarzania danych - obciążenie rejestrów procesora i pamięci: -to- przestrzenią roboczą są rejestry ogólnego przeznaczenia: accumulator-based CPU, z akumulatorem związana jest większość instrukcji arytmetyczno-logicznych i wymiany danych -based CPU (-to-), rolę akumulatora pełnią rejestry ogólnego przeznaczenia memory-to-memory bloki pamięci traktowane są jako przestrzeń robocza, zastępująca rejestry ogólnego przeznaczenia Przetwarzanie rozkazów Przetwarzanie rozkazów sposób wykonania rozkazu w procesorze: podział wykonywanego rozkazu na standardowe fazy: pobierania () rozkazu z pamięci i umieszczenia w wewnętrznym rejestrze rozkazów lub pamięci buforującej, dekodowania (Reg/Dec) rozkazu, ustalenie typu wykonywanej operacji, np. pobrania argumentów, wykonania (Exec) rozkazu, np. wymaganej operacji arytmetycznologicznej, obliczenia adresu itp. zapisu () wyniku w rejestrach lub pamięci, w przetwarzaniu sekwencyjnym (skalarnym) każda faza wykonywana jest oddzielnie, niezależnie od pozostałych, w przetwarzaniu potokowym, strumieniowym (pipeline processing) poszczególne fazy różnych rozkazów są w zasadzie wykonywane równocześnie. 1
Sekwencyjne przetwarzanie rozkazów Potokowe przetwarzanie rozkazów Sekwencyjne (skalarne) - każda faza wykonywana jest oddzielnie, niezależnie od pozostałych. Potokowe (strumieniowe, pipeline processing) - poszczególne fazy różnych rozkazów są wykonywana równocześnie. 1 4 5 7 Reg/Dec dekodowania (Reg/Dec) rozkazu Exec 2 pobierania () rozkazu wykonania (Exec) rozkazu zapisu () wyniku 6 9 1 Reg/Dec dekodowania (Reg/Dec) rozkazu Exec 2 pobierania () rozkazu wykonania (Exec) rozkazu zapisu () wyniku 4 5 6 7 Reg/Dec Exec Reg/Dec Konflikty przy przetwarzaniu potokowym zasobów ten sam zasób wykorzystywany jest przez dwie lub więcej faz równocześnie (ALU, rejestry lub pamięć): każda operacja zapisu do rejestrów lub pamięci może być w konflikcie z fazą pobrania rozkazu lub argumentów danych jeśli argumentem następnego rozkazu jest wynik poprzedniego, który nie został obliczony: wykonanie następnego rozkazu musi być wstrzymane z powodu niedostępności argumentu sterowania gdy wykonywany jest rozkaz skoku warunkowego zależny od wskaźników ustalanych przez poprzednie, jeszcze nie zakończone rozkazy Przetwarzanie potokowe - typ R Instrukcja typu R (dostęp do rejestru) złożona z 4 cykli maszynowych: : pobranie kodu instrukcji z pamięci programu Reg/Dec: pobranie zawartości rejestru i dekodowanie instrukcji Exec: ALU wykonuje operację na zawartości 2 rejestrów : wpis wartości zmiennej do rejestru 1 2 4 5 6 typ instrukcji znany po jej zdekodowaniu ( & Reg/Dec) Przetwarzanie potokowe - LOAD Instrukcja typu LOAD złożona z 5 cykli maszynowych: : pobranie kodu instrukcji z pamięci programu Reg/Dec: pobranie zawartości rejestru i dekodowanie instrukcji Exec: obliczenie adresu zmiennej w pamięci danych Mem: odczyt wartości zmiennej z pamięci danych : wpis wartości zmiennej do rejestru 1 2 4 5 Mem Mem 6 7 Mem instrukcja wykonywana w 5 niezależnych blokach funkcjonalnych każda instrukcja korzysta tylko 1 raz z pojedynczego bloku funkcjonalnego pobranie kodu następnej instrukcji możliwe po zakończeniu poprzedniego czas trwania pojedynczej instrukcji wynosi 5 cykli maszynowych średni czas trwania instrukcji w programie wynosi 1 cykl maszynowy Konflikt zasobów zasobów ten sam zasób wykorzystywany jest przez dwie lub więcej faz równocześnie (ALU, rejestry lub pamięć): każda operacja zapisu do rejestrów lub pamięci może być w konflikcie z fazą pobrania rozkazu lub argumentów LOAD LOAD typ R 1 2 4 5 Mem Mem w jednej z faz musi wystąpić dodatkowy cykl oczekiwania 6 OP 7 2
LOAD Konflikt danych danych jeśli argumentem następnego rozkazu jest wynik poprzedniego, który nie został obliczony: wykonanie następnego rozkazu (zatrzymanie potoku) wstrzymane z powodu niedostępności argumentu LOAD OP OP 1 2 4 5 Mem LOAD 6 Reg/Dec Exec Mem wstrzymanie potoku Reg/Dec Exec Mem rozwiązaniem konfliktu jest umieszczenie między rozkazami instrukcji niezależnej od argumentów, np. OP lub innej (problem optymalizacji kompilatorów rozkazy są wykonywane nie w takiej kolejności jak zostały napisane w programie) Eliminacja konfliktów powielenie niektórych wewnętrznych układów i równoległe wykonywanie tych samych operacji prowadzi do struktury superskalarnej, czasy realizacji poszczególnych faz mogą się różnić w zależności od typu wykonywanej operacji, takty zegarowe muszą być tak dobrane, aby dłużej trwające fazy były wykonywane przez całkowitą liczbę tych taktów, np. jałowe takty oczekiwania, do skrócenia czasu wykonywanych operacji przyczynia się umieszczenie argumentów w wewnętrznych rejestrach, a nie w pamięci; procesor musi być wyposażony w dużą liczbę wewnętrznych rejestrów, zmniejszeniu liczby rozkazów potrzebnych do wykonania zadania sprzyja duża długość słowa maszynowego. ARM7 / ARM9 (1/2) ARM7 processors have a -stage instruction pipeline: Fetch: Decode: Execute: Fetching an instruction from the memory containing the code Decoding the instruction and prepare data path control signals for next cycle The instruction gets executed on the data path specified and the result is written back to the destination Higher performance ARM9 derivatives use a 5-stage pipeline to compensate for the memory access bottleneck of the -stage pipeline: Fetch: Decode: Execute: Data: Fetch next instruction from memory Decode instruction and read operands Execute instruction Thumb only a 16-bit wide system data bus, less power, smaller footprint, reducing system cost Debug support Multiplier (64-bit result) In-Circuit Emulator interface Access data memory, if required ite-back: ite the result of the instruction back to the destination memory location ARM7 / ARM9 (2/2) ARM7TDMI (ARM7TDMI-S) Fetch Decode Execute ARM9TDMI Fetch Decode Execute Memory ite The maximum clock frequency of the ARM9TDMI core is generally in the range 1. to 2.2 times the clock frequency of the ARM7TDMI core when compared on the same silicon process. Reducing the number of cycles for loads and stores gives a significant improvement in program execution time as typically around % of instructions are loads or stores. Architektura procesora typu Bit Slice każdy blok funkcjonalny tworzą oddzielne układy zwane segmentami, np. ALU, rejestry istnieje możliwość wzajemnej współpracy (połączenia) segmentów w celu zbudowania procesora o zadanej długości słowa, np. dysponując procesorem 4-bitowym można zbudować procesor -, 16-, 24-..-bitowy mikrokod procesora (microcode) jest pamiętany w pamięci ROM lub szybkiej pamięci RAM (dynamiczne mikroprogramowanie) najpopularniejszym procesorem segmentowym jest seria Am29 (Advanced Micro Devices), np. Am291: struktura: 4-bitowa ALU, 16x4-bitowa pamięć RAM (rejestry), akumulator Q wykonywane operacje: dodawanie z przeniesieniem (addition with carry), odejmowanie z pożyczką (subtraction with borrow), OR, AD, XOR i XOR argumenty zawarte w: RAM, akumulatorze, zewnętrznych wejściach, domyślna wartość, wynik operacji: przeniesienie dla innych segmentów (carry-out flag), znak (sign flag), przekroczenie zakresu (overflow flag), wynik zerowy (zero flag)... Cechy procesora typu CISC (1/2) J. Biernat: Architektura komputerów. Oficyna Wydawnicza Politechniki ocławskiej, ocław 21 CISC (Complex Instruction Set Computer) - procesor: o złożonej liście rozkazów mających różny, zmienny format z małym zestawem rejestrów strukturalnych (dla użytkownika) predefiniowane przeznaczenie rejestrów, np. A (akumulator), rejestry indeksowe do adresowania pamięci (wiele rozkazów wykonujących operacje na komórkach pamięci) o rozbudowanych trybach adresowania trudności z racjonalnym wykorzystaniem zasobów procesora; przy prostych, elementarnych operacjach wykorzystanie niewielkiej części zasobów procesora wzrost liczby taktów zegarowych przy wzroście złożoności instrukcji
Procesory SI DI CISC DH DL R7 R7 R6R7 R6R7 R5R6 R5R6 R4R5 R4R5 RR4 RR4 R2R R2R R1R2 R1R2 RR1 RR1 R R CH BH AH Status Flags BP SP CL BL AL RB.. B ALU 6 temp A C51 temp procesor: z małym zestawem rejestrów strukturalnych (dla użytkownika) predefiniowane przeznaczenie rejestrów, np. A (akumulator), rejestry indeksowe do adresowania pamięci (wiele rozkazów wykonujących operacje na komórkach pamięci) trudności z racjonalnym wykorzystaniem zasobów procesora; przy prostych, elementarnych operacjach wykorzystanie niewielkiej części zasobów procesora X Y A ST724 temp C51 Formaty instrukcji różny, zmienny format rozkazów: 1 1 r r r ADD A, Rn 1 1 1 1 1 i dana A A A 1 adres A MOV @Ri, #dana ACALL adr_11 PSW ALU CC ALU 1 1 1 1 1 adres rel CJE A, adr, rel DPTR Intel Architecture Software Developer s Manual. Volume 2: Instruction Set Reference. Intel, 1997, p.2-1 6 Formaty instrukcji Instruction Prefixes Up to four prefixes of 1-byte each (optional) procesor: o złożonej liście rozkazów mających różny, zmienny format Opcode ModR/M SIB Dispacement Immediate 1 or 2 byte opcode 7 6 5 2 Mod Reg/ Opcode 1 byte 1 byte (if required) (if required) R/M displacement displacement of 1, 2, or 4 of 1, 2, or 4 bytes or none bytes or none 7 6 5 2 Scale Index Base SIB (Scale-Index-Base) cykle maszynowe C51: ST7: wzrost liczby taktów zegarowych przy wzroście złożoności instrukcji 1 lub 2 cykle maszynowe dla wszystkich instrukcji 4 cykle maszynowe dla MUL AB oraz DIV AB (TYLKO w standardzie) od 2 do 7 cykli maszynowych dla większości instrukcji od 5 do 9 cykli maszynowych dla instrukcji CALL 12 cykli maszynowych dla MUL Y,A (brak instrukcji DIV) C51 dostęp do pamięci CISC (Complex Instruction Set Computer) - procesor: predefiniowane przeznaczenie rejestrów, np. A (akumulator), rejestry indeksowe do adresowania pamięci (wiele rozkazów wykonujących operacje na komórkach pamięci) o rozbudowanych trybach adresowania wewnętrzna pamięć RAM: MOV A, @Ri ; A (Ri) IDATA, i=, 1 lub MOV @Ri, addr ; (Ri) IDATA (addr) DATA zewnętrzna pamięć RAM: MOVX A, @DPTR ; A (DPTR) XDATA lub MOVX A, @Ri) ; A (256 P2 + Ri) XDATA pamięć kodu (stałe): MOVC A, @A+PC ; A (A + PC) CODE ST7 dostęp do pamięci CISC (Complex Instruction Set Computer) - procesor: predefiniowane przeznaczenie rejestrów, np. A (akumulator), rejestry indeksowe do adresowania pamięci (wiele rozkazów wykonujących operacje na komórkach pamięci) o rozbudowanych trybach adresowania ld A, $55 ; A (55h), Direct ld A, (X) ; A (X), Indexed, no offset ld A, ($55,X) ; A (55h + X), Indexed & offset ld A, [$55] ; A ((55h)), Indirect & pointer ld A, ([$55],X) ; A ((55h) + X Indirect indexed & pointer ld A, #$55 ; A 55h, Immediate ST7 FAMILY. PROGRAMMIG MAUAL. STMicroelectronics, ovember 25, p.-29 4
www.intel.com: XP SP2 vs. Intel Prescott Cechy procesora typu CISC (2/2) statystyka działania systemów operacyjnych i programów użytkowych wskazuje na częste wykonywanie operacji prostych i rzadkie złożonych sterowanie przepływem rozkazów realizowane programowo (mikro-kody); łatwa realizacja sterowania wykonywania złożonych rozkazów wymagających różnych okresów czasu What is "microcode"? (1/2) Anything sufficiently complex that has been handcrafted by humans will contain errors. Modern software has millions of lines of source code, and modern processors have millions of transistors, so this applies to both. Microsoft Operating Systems arrive on CD that is built to a particular Service Pack level, and errors found after that was made will be fixed via patches downloaded from their web site. Intel processors are manufactured to a particular stepping level, and errors found after that was made may be fixed via microcode updates sent to the processor, typically by BIOS on every system startup. Microcode updates are not stored permanently within the processor; they vanish when the power is cut, so every boot has to re-assert them. Intel IXP12 etwork. Processor Family. Microcode Programmer s Reference Manual. ITEL Corporation, March 22, Part umber: 274-11 C196KB User's Guide. ITEL Corporation, ovember 199, Order umber: 27651- What is "microcode"? (2/2) microcode engine controls the CPU, allowing it to perform operations with any byte, word or double word in the 256 byte space instructions to the CPU are taken from the queue and stored temporarily in the instruction microcode engine decodes the instructions and generates the correct sequence of events to have the RALU perform the desired function Cechy procesora typu RISC (1/2) uproszczoną strukturę mikroprocesora, o zredukowanej liście rozkazów zaproponował John Cocke (IBM Research w Yorktown, ew York, 1974) wychodząc z założenia, że 2% dostępnych instrukcji zajmuje aż % czasu pracy procesora MICROCODE EGIE QUEUE skrót RISC (Reduced Instruction Set Computer) zaproponował David Patterson (University of California, Berkeley, 195) C196KB User's Guide. ITEL Corporation, ovember 199, Order umber: 27651- obecnie skrót RISC tłumaczony jako Rational Instruction Set Computer idea RISC została wykorzystana w mikroprocesorze SPARC firmy Sun Microsystem; początek powstania tego co jest znane jako technologia MIPS, np. w komputerach Silicon Graphics, procesorze Alpha firmy DEC Cechy procesora typu RISC (2/2) prosta struktura wewnętrzna sterowanie przepływem rozkazów realizowane sprzętowo (brak mikro-kodów, eliminacja mikroprogramowania) uproszczenie trybów adresowania, zwykle jednolity format rozkazów (stała długość kodów instrukcji) większe możliwości wyboru uniwersalnych rejestrów mikroprocesora architektura typu load/store, przetwarzanie danych w oparciu o rejestry, a nie bezpośrednio na zawartości pamięci szybsze działanie ideałem jest wykonanie każdej instrukcji w jednym cyklu procesora zmniejszenie liczby taktów zegarowych tworzących cykl maszynowy (przetwarzanie potokowe) ułatwienie opracowania, wytworzenia i testowania: nowego mikroprocesora systemu operacyjnego i programu użytkowego kompilatora wysokiego poziomu wykonanie operacji równoważnej wymaga większej liczby rozkazów w procesorze RISC niż w procesorze CISC MSP4 (1/2) Single-cycle operations Large 16-bit file reduces fetches to memory 16-bit address bus allows direct access and branching throughout entire memory range 16-bit data bus allows direct manipulation of wordwide arguments Constant generator (CGx) provides six most used immediate values and reduces code size Memory Data Bus MDB 16 Zero, Z Carry, C Overflow, V egative, R/PC R1/SP Program Counter Stack Pointer R2/SR/CG1 Status R/CG2 Constant Generator R4 R14 R dst Memory Bus MAB General Purpose... General Purpose General Purpose 16-bit ALU scr 16 MCLK MSP4x4xx Family User s Guide. Texas Instruments, SLAU56G, 27, p.- 5
MSP4x4xx Family User s Guide. Texas Instruments, SLAU56G, 27, p.-1 MSP4 formaty rozkazów MSP4 (2/2) OP - Code 12 12 11 7 6 5 4 source Ad B/W 11 1 OP - Code B/W As 7 6 5 4 Ad dest. As/Ad ing Mode dest. Ad ing Mode Format I Format II 16 rejestrów uniwersalnych: R licznik rozkazów PC R1 wskaźnik stosu SP R2 rejestr statusowy SR lub generator stałych CG1 R generator stałych CG2 R4.. R rejestry ogólnodostępne 27 bazowych + 24 emulowane instrukcje www.ti.com Destination Source Instructions Example: Orthogonality for two operand instructions Source 1 12 1 OP - Code 1 9 S Offset Contitional and unconditional Jumps (+/ 9 bit Offset) Format III ortogonalne tryby adresowania - wszystkie instrukcje ze wszystkimi trybami adresowania i operandami Destination Instructions Example: on-orthogonality for two operand instructions AVR ATmega2 ATmega2A. -bit Microcontroller with 2K Bytes In-System Programmable Flash. Atmel, 2, p.7 AVR uses a Harvard architecture with separate memories and buses for program and data (data space: Register File, I/O memory and internal SRAM or/and external SRAM if applicable) instructions in the program memory are executed with a single level pipelining while one instruction is being executed, the next instruction is pre-fetched from the program memory (enables instructions to be executed in every clock cycle) fast-access Register File contains 2 x -bit general purpose working s with a single clock cycle access time allows single-cycle Arithmetic Logic Unit (ALU) operation in a typical ALU operation, two operands are output from the Register File, the operation is executed, and the result is stored back in the Register File in one clock cycle six of the 2 s can be used as three 16-bit indirect address pointers for Data Space addressing efficient address calculations AVR ATmega2 Working Registers Clear Register: CLR Rd ; d 1 General Purpose Working Registers Clear Bits in Register: CBR Rd,K ; 16 d 1, ; K 255 ATmega2A. -bit Microcontroller with 2K Bytes In-System Programmable Flash. Atmel, 2, p.1 R R1 R2... R1 R14 R R16 R17... R26 R27 R2 R29 R R1 $ $1 $2 $D $E $F $1 $11 first 2 locations of the user Data Space $1A Low Byte $1B High Byte $1C Low Byte $1D High Byte $1E Low Byte $1F High Byte X-pointer Y-pointer Z-pointer AVR -bit Instruction Set. Atmel, 56G AVR 7/ AVR ATmega2 Load Memory AVR -bit Instruction Set. Atmel, 56G AVR 7/ AVR ATmega2 Store Memory Load Indirect from Data Space to Register using Index X, Y or Z: LD Rd, X ; Rd (X), X: Unchanged, d 1 LD Rd, Y+ ; Rd (Y), Y Y + 1, Y: Post incremented, d 1 LD Rd, Z ; Z Z 1, Rd (Z), Z: Pre decremented, d 1 Load Indirect from Data Space to Register using Index Y or Z: LDD Rd, Y+q ; Rd (Y+q), Y: Unchanged, d 1, ; q: Displacement, q 6 Load Direct from Data Space: LDS Rd, k ; Rd (k), k 6555, d 1 Load Indirect from Program Memory: LPM Rd, Z ; Rd (Z), Z: Unchanged, d 1 LPM Rd, Z+ ; Rd (Z), Z Z + 1, Z: Post incremented, d 1 Store Indirect From Register to Data Space using Index X, Y or Z: ST X, Rr ; (X) Rr, X: Unchanged, r 1 ST Y+, Rr ; (Y) Rr, Y Y+1, Y: Post incremented, r 1 ST Z, Rr ; Z Z 1, (Z) Rr, Z: Pre decremented, r 1 Store Indirect From Register to Data Space using Index Y or Z: STD Y+q, Rr ; (Y+q) Rr, Y: Unchanged, r 1, ; q: Displacement, q 6 Store Direct to Data Space: STS k, Rr ; (k) Rr, k 6555, r 1 6