http://en.wikipedia.org/wiki/Complex_instruction_set_computing
Complex Instruction Set Computer
[1#3]
Podstawy techniki
wspomaganie języków wysokiego poziomu:
mikroprocesorowej
pętle programowe
ETEW006
wywołania podprogramów, funkcji
przenoszenie parametrów do/z podprogramów, funkcji
Typy procesorów
optymalizacja kodu wynikowego programu
Przetwarzanie danych
ograniczenie ilości odwołań do pamięci
obniżenie kosztów systemu procesorowego (mniejsze wymagania
Andrzej Stępień
dotyczące pamięci)
Katedra Metrologii Elektronicznej i Fotonicznej
Pravin R. Lakhe: A Technology In Pravin R. Lakhe: A Technology In
Most Recent Processor Instruction Set Computers (CRISC): A Survey. Most Recent Processor Instruction Set Computers (CRISC): A Survey.
International Journal of Innovative Research & Studies, June 2013, Page 710 716 International Journal of Innovative Research & Studies, June 2013, Page 710 716
http://en.wikipedia.org/wiki/Complex_instruction_set_computing http://en.wikipedia.org/wiki/Complex_instruction_set_computing
Complex Instruction Set Computer [2#3] Complex Instruction Set Computer [3#3]
cechy procesorów typu CISC:
cechy procesorów typu CISC:
duża liczba instrukcji, prostych i złożonych
bezpośredni dostęp do danych w pamięci, bez konieczności
niewielka optymalizacja wykonywanych rozkazów, duża liczba cykli
kopiowania zawartości pamięci do rejestrów roboczych
maszynowych konieczna do wykonania rozkazów (zwykle dłużej niż 1
złożoność i mała efektywność (szybkość) działania dekodera
cykl maszynowy)
rozkazów
zmienny rozmiar instrukcji, rozkazy o zmiennym formacie (długości)
trudności z racjonalnym wykorzystaniem zasobów procesora; przy
różnorodne i złożone tryby adresowania (przy dostępie do pamięci)
prostych, elementarnych operacjach wykorzystanie niewielkiej części
zasobów procesora
wspomaganie wykonywanych rozkazów mikrokodami (microcode)
brak przetwarzania potokowego
segmentowy model pamięci (adresowanie segmentowe)
słaba wydajność operacji zmiennoprzecinkowych
mały zestaw rejestrów strukturalnych (dla użytkownika)
Intel Architecture Software Developer s Manual.
C500 Architecture and Instruction Set. User s Manual.
Volume 2: Instruction Set Reference. Intel, 1997, p.2-1
Infineon, July 2000
Procesory CISC Procesory CISC
C51 Formaty instrukcji 8086 Formaty instrukcji
procesor:
o złożonej liście rozkazów mających
różny, zmienny format rozkazów: różny, zmienny format
Instruction
Opcode ModR/M SIB Dispacement Immediate
Prefixes
0 0 1 0 1 r r r ADD A, Rn
do czterech 1 lub 2 1 bajt 1 bajt przesunięcie przesunięcie
1-bajtowych bajty Op- (jeśli (jeśli adresu adresu
0 1 1 1 0 1 1 i dana MOV @Ri, #dana
prefixów Code wymagany) wymagany) (address (address
(opcjonalnie) displacement) displacement)
0, 1, 2 lub 4 0, 1, 2 lub 4
A A A 0 0 0 0 1 adres A ACALL adr_11
bajty bajty
7 6 5 3 2 0 7 6 5 3 2 0
1 0 1 1 0 1 0 1 adres rel CJNE A, adr, rel
Reg/
Mod R/M Scale Index Base
Opcode
SIB (Scale-Index-Base)
1
C500 Architecture and Instruction Set. User s Manual.
Infineon, July 2000
Procesory CISC
Cechy procesora typu CISC
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
statystyka działania systemów operacyjnych i programów
użytkowych wskazuje na częste wykonywanie operacji prostych
wewnętrzna pamięć RAM (dane):
i rzadkie złożonych
MOV A, @Ri ; A ! (Ri)IDATA, i=0, 1
lub MOV @Ri, addr ; (Ri)IDATA ! (addr)DATA
sterowanie przepływem rozkazów realizowane programowo
zewnętrzna pamięć RAM (dane): (mikro-kody); łatwa realizacja sterowania wykonywania złożonych
MOVX A, @DPTR ; A ! (DPTR)XDATA rozkazów wymagających różnych okresów czasu
lub MOVX A, @Ri) ; A ! (256"P2 + Ri)XDATA
pamięć kodu (stałe):
MOVC A, @A+PC ; A ! (A + PC)CODE
80C196KB User's Guide.
www.intel.com: XP SP2 vs. Intel Prescott
INTEL Corporation, November 1990, Order Number: 270651-003
instrukcje dla procesora są pobierane z kolejki
Czym jest
(queue) i tymczasowo przechowywane w
Czym jest "microcode" ? [1#2]
"microcode" ? rejestrze rozkazów
[2#2]
maszyna stanów microcode dekoduje
Złożoność mikroprocesora (miliony tranzystorów) i oprogramowania
instrukcje i generuje prawidłową (koryguje) ich
(miliony linii kodu zródłowego) sprzyja powstawaniu błędów projektantów
sekwencję
sprzętu i oprogramowania
Dla systemów operacyjnych (np. Microsoft Windows) są dostępne pakiety
programów (Service Pack), których zadaniem jest eliminacja błędów
znalezionych w dostępnym oprogramowaniu (strony internetowe) MICROCODE
ENGINE
Procesory, np. firmy Intel, mogą zawierać sprzętowe błędy działania,
QUEUE
których eliminacja jest możliwa przez aktualizację mikrokodu procesora
Aktualizacje mikrokodu są przechowywane nie w procesorze, są tracone po
wyłączeniu zasilania procesora (aktualizacja przez BIOS przy każdym
starcie systemu operacyjnego)
Intel IXP1200 Network. Processor Family. Microcode Programmer s Reference Manual.
INTEL Corporation, March 2002, Part Number: 278304-011
80C196KB User's Guide. INTEL Corporation, November 1990, Order Number: 270651-003
Pravin R. Lakhe: A Technology In
Most Recent Processor Instruction Set Computers (CRISC): A Survey.
International Journal of Innovative Research & Studies, June 2013, Page 710 716
http://en.wikipedia.org/wiki/Reduced_instruction_set_computing
Cechy procesora typu RISC [1#2]
Reduced Instruction Set Computer [2#2]
cechy procesorów typu RISC:
uproszczoną strukturę mikroprocesora, o zredukowanej liście
rozkazów zaproponował John Cocke (IBM Research w Yorktown, New proste instrukcje i tryby adresowania
York, 1974) wychodząc z założenia, że 20% dostępnych instrukcji
jednolity format oraz stała długość instrukcji, ortogonalność instrukcji
zajmuje aż 80% czasu pracy procesora
jednolite zasady dostępu do pamięci (load/store)
przetwarzanie potokowe (pipelining)
skrót RISC (Reduced Instruction Set Computer) zaproponował David
instrukcje wykonywane zwykle w 1 cyklu maszynowym
Patterson (University of California, Berkeley, 1985)
sterowanie przepływem rozkazów realizowane sprzętowo (brak mikro-kodów,
eliminacja mikroprogramowania)
obecnie skrót RISC tłumaczony jako
Rational Instruction Set większe możliwości wyboru uniwersalnych rejestrów mikroprocesora
Computer
dobra wydajność operacji zmiennoprzecinkowych
implementacja pamięci podręcznych (cache)
wykonanie operacji równoważnej wymaga większej liczby rozkazów w
idea RISC została wykorzystana w konstrukcji procesorów rodziny ARM
procesorze RISC niż w procesorze CISC
2
Cortex"!-M0 Technical Reference Manual.
ARM Cortex"!-M Programming Guide to
Rev. r0p0. ARM DDI 0432C, p.2-2
Memory Barrier Instructions. Application Note 321. ARM DAI 0321A, p.3
Cortex"!-M0+ Technical Reference Manual.
Rev. r0p1. ARM DDI 0484C, p.2-2
Procesor RISC
Procesor RISC
Cortex-M0/M0+ [2#3]
Cortex-M0/M0+ [1#3]
Cortex-M0 Cortex-M0+
The ARM Cortex-M processors are high performance, low cost, low power, 32-bit processor core, von Neumann architecture
32-bit RISC processors, designed for microcontroller applications. 3-stage pipeline 2-stage pipeline
ARMv6-M Thumb instruction set; Thumb-2 technology
The range includes the Cortex-M3, Cortex-M4, Cortex-M0, Cortex-M0+, Optional ARMv6-M compliant 24-bit SysTick timer
and Cortex-M1 processors. 32-bit hardware multiplier:
single-cycle multiplier, in designs optimized for high performance
32-cycle multiplier, in designs optimized for low area
The Cortex-M1 processor is targeted at implementation in FPGA devices.
The ability to have deterministic, fixed-latency, interrupt handling NVIC features:
1, 2, 4, 8, 16, 24, or 32 external interrupt inputs, each with four levels of priority
Cortex-M processors differ from other ARM processors, including the
dedicated Non-Maskable Interrupt (NMI) input
Cortex-A/R processors, because they only execute Thumb instructions.
support for both level-sensitive and pulse-sensitive interrupt lines
optional Wake-up Interrupt Controller (WIC), providing ultra-low power sleep
They are based on the ARMv7-M and ARMv6-M architectures and have an
mode support
efficient instruction pipeline, with low-latency Interrupt Service Routine
optional Memory Protection Unit (MPU)
(ISR) entry and exit.
Low power sleep-mode entry using Wait For Interrupt (WFI), Wait For Event
(WFE) instructions, or the return from interrupt sleep-on-exit feature
Cortex"!-M0 Technical Reference Manual.
Rev. r0p0. ARM DDI 0432C, p.2-2
Cortex"!-M0+ Technical Reference Manual.
Rev. r0p1. ARM DDI 0484C, p.2-2
Procesor RISC
Procesor typu CRISC
Cortex-M0/M0+ [3#3]
Cortex-M0/M0+ Components
Execution Trace Interface
Hasan Krad, Aws Yousif Al-Taie: A New Trend for CISC and RISC Architectures.
Asian Journal of Information Technology 6(11), 2007, p.1128
Cortex-M0/M0+ Processor
Interrupts
Pravin R. Lakhe: A Technology In Most Recent Processor Instruction Set Computers (CRISC):
Nested
Cortex-M0 Breakpoint A Survey. International Journal of Innovative Research & Studies, June 2013, Page 710 716
Vectored
Cortex-M0+ &
Interrupt
Intel 64 and IA-32 Architectures Software Developer s Manual. Volume 1: Basic Architecture.
processor Watchpoint
Controller
Intel, December 2009
core Units
(NVIC)
Optional Optional
Optional
Procesory firmy Intel s z serii Pentium nazwano CRISC (Complex-
Memory
Wakeup Debugger
Debug
Protection
Interrupt interface Reduce Instruction Set Computers)
Access
Unit
Controller
(MPU) Port
System
(WIC)
timer
(SysTick
Procesory serii Pentium są hybrydą procesorów CISC i RISC
Timer)
Bus matrix
64-bitowe procesory serii x86 Intel Core 2 Duo (2006 dwurdzeniowe i
2007 czterordzeniowe) są oparte na architekturze Intel Core
AHB-Lite Optional Optional microarchitecture (291 million of transistors)
interface single cycle Serial-Wire or
to system I/O port JTAG debug port
Optymalizacja
Przetwarzanie rozkazów
Przetwarzanie Danych
Przetwarzanie rozkazów sposób wykonania rozkazu w procesorze:
Optymalizacja kompilatorów:
podział wykonywanego rozkazu na standardowe fazy:
rozkazy wykonywane przez procesor realizują funkcje, które najczęściej
powtarzają się podczas kompilacji pobierania (Fetch) rozkazu z pamięci i umieszczenia w wewnętrznym
rejestrze rozkazów lub pamięci buforującej,
lista rozkazów dostosowana do potrzeb kompilatorów, a nie własności
procesora
dekodowania (Reg/Dec) rozkazu, ustalenie typu wykonywanej operacji,
założenia przydatne przy projektowaniu nowych konstrukcji procesorów np. pobrania argumentów,
wykonania (Exec) rozkazu, np. wymaganej operacji arytmetyczno-
Sposób przetwarzania danych - obciążenie rejestrów procesora i pamięci:
logicznej, obliczenia adresu itp.
register-to-register przestrzenią roboczą są rejestry ogólnego
przeznaczenia:
zapisu (Wr) wyniku w rejestrach lub pamięci,
accumulator-based CPU, z akumulatorem związana jest
w przetwarzaniu sekwencyjnym (skalarnym) każda faza wykonywana jest
większość instrukcji arytmetyczno-logicznych i wymiany danych
oddzielnie, niezależnie od pozostałych,
register-based CPU (register-to-register), rolę akumulatora pełnią
rejestry ogólnego przeznaczenia w przetwarzaniu potokowym, strumieniowym (pipeline processing)
memory-to-memory bloki pamięci traktowane są jako przestrzeń poszczególne fazy różnych rozkazów są w zasadzie wykonywane
robocza, zastępująca rejestry ogólnego przeznaczenia równocześnie.
3
Sekwencyjne przetwarzanie rozkazów Potokowe przetwarzanie rozkazów
Sekwencyjne (skalarne) - każda faza wykonywana jest oddzielnie, Potokowe (strumieniowe, pipeline processing) - poszczególne fazy
niezależnie od pozostałych. różnych rozkazów są wykonywana równocześnie.
Cycle Cycle Cycle Cycle
1 2 3 4
Cycle Cycle Cycle Cycle Cycle
1 2 3 4 Cycle Cycle Cycle Fetch Reg/Dec Exec Wr 5
Cycle
Cycle
5 6 7 8 Cycle
Fetch Reg/Dec Exec Wr Fetch Reg/Dec Exec Wr 6
9
Cycle
Fetch Reg/Dec Exec Wr Fetch Reg/Dec Exec Wr 7
Cycle
Fetch Fetch Reg/Dec Exec Wr 8
Fetch pobierania (Fetch) rozkazu Fetch pobierania (Fetch) rozkazu
Fetch Reg/Dec Exec Wr
Reg/Dec Reg/Dec Fetch Reg/Dec Exec
dekodowania (Reg/Dec) rozkazu dekodowania (Reg/Dec) rozkazu Reg/Dec Exec
Fetch Reg/Dec
Exec wykonania (Exec) rozkazu Exec wykonania (Exec) rozkazu
Fetch
Wr zapisu (Wr) wyniku Wr zapisu (Wr) wyniku
Problem
Czynności wykonywane szeregowo
Ala, Bartek, Czesiek i Dorota piorą, suszą, prasują i składają:
1600 1700 1800 1900 2000 2100 2200
czynność czas trwania
30 40 20 30 40 20 30 40 20 30 40 20
Ala
pranie 30 minut
Bartek
suszenie 40 minut
Czesiek
sumaryczny czas
wynosi 6 godzin
prasowanie + składanie 20 minut
Dorota
przetwarzanie sekwencyjne
1600 1700 1800 1900 2000 1600 1700 1800 1900 2000
Czynności Czynności
30 40 40 30 40 40
wykonywane wykonywane
równolegle równolegle
?
?
?
Ala Ala
konflikt
" przetwarzanie równoległe, potokowe (pipeline) nie skraca czasu trwania
Bartek Bartek
poszczególnych faz ale skraca czas trwania całego zadania
" czas trwania poszczególnych faz w przetwarzaniu potokowym jest równy
najdłużej trwającej fazie
Czesiek Czesiek
" przetwarzanie potokowe umożliwia równoczesne wykonywanie
niezależnych zadań (multiple tasks)
sumaryczny czas sumaryczny czas
wynosi 3,5 godziny " teoretyczna godziny
wynosi 3,5 szybkość jest równa liczbie niezależnych faz (pipe stages)
Dorota Dorota
" różne długości niezależnych faz ograniczają szybkość przetwarzania
4
Konflikty przy przetwarzaniu
Przetwarzanie potokowe - typ R
potokowym
Instrukcja typu R (dostęp do rejestru) złożona z 4 cykli maszynowych:
zasobów ten sam zasób wykorzystywany jest przez dwie lub więcej
" Fetch: pobranie kodu instrukcji z pamięci programu
faz równocześnie (ALU, rejestry lub pamięć):
" Reg/Dec: pobranie zawartości rejestru i dekodowanie instrukcji
każda operacja zapisu do rejestrów lub pamięci może być w
" Exec: ALU wykonuje operację na zawartości 2 rejestrów
konflikcie z fazą pobrania rozkazu lub argumentów
" Wr: wpis wartości zmiennej do rejestru
danych jeśli argumentem następnego rozkazu jest wynik
poprzedniego, który nie został obliczony: Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6
wykonanie następnego rozkazu musi być wstrzymane z powodu
Fetch Reg/Dec Exec Wr
niedostępności argumentu
Fetch Reg/Dec Exec Wr
Fetch Reg/Dec Exec Wr
sterowania gdy wykonywany jest rozkaz skoku warunkowego zależny
od wskazników ustalanych przez poprzednie, jeszcze nie zakończone
rozkazy
typ instrukcji znany po jej zdekodowaniu (Fetch & Reg/Dec)
Przetwarzanie potokowe - LOAD
Konflikt zasobów
Instrukcja typu LOAD złożona z 5 cykli maszynowych:
" Fetch: pobranie kodu instrukcji z pamięci programu
" zasobów ten sam zasób wykorzystywany jest przez dwie lub więcej
" Reg/Dec: pobranie zawartości rejestru i dekodowanie instrukcji
faz równocześnie (ALU, rejestry lub pamięć):
" Exec: obliczenie adresu zmiennej w pamięci danych
" Mem: odczyt wartości zmiennej z pamięci danych każda operacja zapisu do rejestrów lub pamięci może być w
konflikcie z fazą pobrania rozkazu lub argumentów
" Wr: wpis wartości zmiennej do rejestru
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
Fetch Reg/Dec Exec Mem Wr Cycle 6 Cycle 7
Fetch Reg/Dec Exec Mem Wr
LOAD Fetch Reg/Dec Exec Mem Wr
Fetch Reg/Dec Exec Mem Wr
Fetch Reg/Dec Exec Mem Wr
LOAD
instrukcja wykonywana w 5 niezależnych blokach funkcjonalnych
Fetch Reg/Dec Exec Wr
typ R
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 danych
Konflikt zasobów
" danych jeśli argumentem następnego rozkazu jest wynik poprzedniego,
który nie został obliczony:
" zasobów ten sam zasób wykorzystywany jest przez dwie lub więcej
wykonanie następnego rozkazu (zatrzymanie potoku) wstrzymane z
faz równocześnie (ALU, rejestry lub pamięć):
powodu niedostępności argumentu
każda operacja zapisu do rejestrów lub pamięci może być w
konflikcie z fazą pobrania rozkazu lub argumentów
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6
LOAD Fetch Reg/Dec Exec Mem Wr
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7
Fetch Reg/Dec Exec Mem Wr
LOAD
Fetch Reg/Dec Exec Mem Wr
LOAD
Fetch Reg/Dec Exec Mem Wr
LOAD
Fetch Reg/Dec Exec NOP Wr
Wr
typ R
w jednej z faz musi wystąpić dodatkowy
cykl oczekiwania (NOP)
5
Konflikt danych
Eliminacja konfliktów
" danych jeśli argumentem następnego rozkazu jest wynik poprzedniego,
który nie został obliczony:
" powielenie niektórych wewnętrznych układów i równoległe
wykonanie następnego rozkazu (zatrzymanie potoku) wstrzymane z
wykonywanie tych samych operacji prowadzi do struktury
powodu niedostępności argumentu
superskalarnej,
" czasy realizacji poszczególnych faz mogą się różnić w zależności od
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6
typu wykonywanej operacji,
LOAD Fetch Reg/Dec Exec Mem Wr
" takty zegarowe muszą być tak dobrane, aby dłużej trwające fazy były
Ifetch Reg/Dec Exec Wr wstrzymanie
LOAD NOP Fetch Reg/Dec Exec Mem Wr
wykonywane przez całkowitą liczbę tych taktów, np. jałowe takty
potoku
NOP Fetch Reg/Dec Exec Wr oczekiwania,
LOAD Fetch Reg/Dec Exec Mem Wr
" do skrócenia czasu wykonywanych operacji przyczynia się
umieszczenie argumentów w wewnętrznych rejestrach, a nie w pamięci;
rozwiązaniem konfliktu jest umieszczenie między rozkazami instrukcji procesor musi być wyposażony w dużą liczbę wewnętrznych rejestrów,
niezależnej od argumentów, np. NOP lub innej (problem optymalizacji
kompilatorów rozkazy są wykonywane nie w takiej kolejności jak " zmniejszeniu liczby rozkazów potrzebnych do wykonania zadania
sprzyja duża długość słowa maszynowego.
zostały napisane w programie)
Mark Dunnett, Senior Field Application Engineer:
ARM Cortex"!-M Programming Guide to
ARM Cortex-M0+ Core. Technical Introduction.
Memory Barrier Instructions. Application Note 321. ARM DAI 0321A, p.16
Hitex: ARM The New Standard Across the Board ?
Freescale, May 2012, p.17
Cortex-M0+
Procesor RISC: Cortex-M0/M0+
Przetwarzanie potokowe (Pipelining)
pobranie dekodowanie wykonanie 1
instrukcja 1 (fetch) (decode) (execution)
pobranie dekodowanie wykonanie 2
instrukcja 2 (fetch) (decode) (execution)
pobranie dekodowanie wykonanie 3
instrukcja 3
(fetch) (decode) (execution)
pobranie dekodowanie wykonanie 4
instrukcja 4 (fetch) (decode) (execution)
dwie (16-bitowe) instrukcje są
pobierane równocześnie
Rysunek 3 Przetwarzanie potokowe
w procesorze Cortex-M0
pobranie wykonanie 1
instrukcja 1 (fetch) (execution)
pobranie wykonanie 2
instrukcja 2 (fetch) (execution)
pobranie wykonanie 3
instrukcja 3
(fetch) (execution)
pobranie wykonanie 4
Skrócenie cykli maszynowych:
instrukcja 4 (fetch) (execution)
szybsza reakcja na przerwania (Interrupt entry) oraz skoki (Branch)
dwie (16-bitowe) instrukcje są
szybsze GPIO oraz dostęp do układów peryferyjnych (peripheral access)
pobierane równocześnie
Rysunek 4 Przetwarzanie potokowe
w procesorze Cortex-M0+
Cx51 User's Guide. MSP430 IAR C/C++ Compiler Reference Guide
ARM Ltd and ARM Germany GmbH. for Texas Instruments MSP430 Microcontroller Family.
IAR Systems, Tab. 30 Integer types
MCS51
MSP430
Typy danych
Typy danych
Typ danej Bity Bajty Zakres wartości
bit 1 0 or 1
Typ danej Rozmiar Zakres wartości Uporządkowanie
signed char 8 1 128 .. 0 ...... +127
unsigned char 8 1 0 ......... 255
bool 8 bitów 0 lub 1 1
signed short int 16 2 32 768 .. 0 .. +32 767
char 8 bitów 0 ...... 255 1
unsigned short int 16 2 0 .... 65 535
signed char 8 bitów 128 .. 0 ...... 127 1
signed int 16 2 32 768 .. 0 .. +32 767
unsigned char 8 bitów 0 ...... 255 1
unsigned int 16 2 0 .... 65 535
signed short 16 bitów 32 768 .. 0 .. 32 767 2
signed long int 32 4 2 147 483 648 .. 0 .. +2 147 483 647
unsigned short 16 bitów 0 .. 65 535 2
unsigned long int 32 4 0 .... 4 294 967 295
signed int 16 bitów 32 768 .. 0 .. 32 767 2
float 32 4 ą1.175494E 38 .. 0 .. ą3.402823E+38
unsigned int 16 bitów 0 .. 65 535 2
double 32 4 ą1.175494E 38 .. 0 .. ą3.402823E+38
signed long 32 bity 231 .. 0 .. 231 1 2
sbit 1 0 or 1
unsigned long 32 bity 0 .. 232 1 2
sfr 8 1 0 ......... 255
signed long long 64 bity 263 .. 0 .. 263 1 2
sfr16 16 2 0 .... 65 535
unsigned long long 64 bity 0 .. 264 1 2
Uwaga: dane typu: bit, sbit, sfr oraz sfr16 nie występują w standardzie
ANSI C. To unikatowa cecha kompilatora Cx51.
6
1)
Intel 64 and IA-32 Architectures Software Developer s
RealView Compilation Tools. Compiler Reference Guide.
Manual. Volume 1: Basic Architecture. Intel, December 2009
Version 4.0. ARM DUI 0348C, Tab.5.2
2)
Steve Furber: ARM System-on-chip Architecture.
Second edition. Addison-Wesley, 2000
ARM
Bajt, pół-słowo (half-word), słowo (word),
Typy danych
podwójne słowo (double word) ..
Rozmiar
15 8 7 0
Typ w bitach Uporządkowanie w bajtach
High Low
Word
char 8 1 bajt (byte-aligned) 32-bit microprocessor halfword Byte Byte
ARM core 2)
short 16 2 pół-słowo (halfword-aligned) N+1 N
word
int 32 4 słowo (word-aligned)
31 1615 0
long 32 4 słowo (word-aligned)
High Word Low Word
1) Doubleword
Figure 4-1. Fundamental
long long 64 8 podwójne-słowo (doubleword-aligned)
N+2 N
DataTypes
float 32 4 słowo (word-aligned)
double 64 8 podwójne-słowo (doubleword-aligned)
63 32 31 0
long double 64 8 podwójne-słowo (doubleword-aligned) High Doubleword Low Doubleword
Quardword
All pointers 32 4 słowo (word-aligned)
N+4 N
Double Quardword
bool (C++ only) 8 1 bajt (byte-aligned)
127 64 63 0
_Bool (C only) 8 1 bajt (byte-aligned)
High Quardword Low Quardword
wchar_t (C++ only) 16 2 pół-słowo (halfword-aligned)
N+8 N
Cortex"!-M0 Devices. Generic User Guide.
ARM DUI 0497A, p.2-17
Kolejność bajtów (Byte order / Endianness) Cortex-M0
Format: Little / Big Endian Kolejność zapisu bajtów (Endianness)
Cortex-Mx taktuje pamięć jak liniowy zbiór bajtów ponumerowanych
format: Little Endian format: Big Endian
narastająco od wartości zerowej
15 8 7 0 15 8 7 0
bardziej mniej bardziej mniej Bajty o numerach 0-3 przechowują pierwsze (32 bitowe) zapisane
znaczący bajt znaczący bajt znaczący bajt znaczący bajt
słowo, bajty o numerach 4-7 przechowują drugie (32 bitowe) zapisane
(High-order Byte) (Low-order Byte) (High-order Byte) (Low-order Byte)
słowo itp.
A+1 A A A+1
Kolejność zapisywanych bajtów w pamięci zależy od implementacji
zastosowanej przez producenta mikrokontrolera
A+2
? ?
Stosowane dwa formaty zapisów:
A+1 High Byte Low Byte
adres pamięci
little-endian (LPC1114 Cortex-M0, STM32L053 Cortex-M0+, ..)
(memory address)
Low Byte High Byte
A
byte-invariant big-endian jako big-endian (zachowanie zgodności z
A-1 ? ? procesorami ARM7TDMI i ujednolicenie sposobu przesyłania danych
we wnętrzu procesora)
Cortex"!-M0 Devices. Generic User Guide. Cortex"!-M0 Devices. Generic User Guide.
ARM DUI 0497A, p.2-18 ARM DUI 0497A, p.2-18
Cortex-M0 Cortex-M0
Format little endian Format byte-invariant big-endian (BE8)
31 24 23 16 15 8 7 0
31 24 23 16 15 8 7 0
B0 B3
B3 B0 B1 B2
najbardziej najmniej
B2 B1
najbardziej najmniej bardziej mniej
znaczący bajt znaczący bajt
bardziej mniej
znaczący bajt znaczący bajt znaczący bajt znaczący bajt
(most significant byte) (least significant byte)
znaczący bajt znaczący bajt
(most significant byte) (least significant byte)
(msbyte) (lsbyte)
(msbyte) (lsbyte)
A+3 A+2 A+1 A
A+3 A+2 A+1 A
A-1
?
A-1 ?
A
B0 msbyte
adres pamięci
A lsbyte
B0
adres pamięci
(memory address) A+1 B1
Implementacja przez
(memory address) A+1 B1
producentów
A+2 B2
B2
A+2 mikrokontrolerów
lsbyte
A+3 B3
A+3 B3 msbyte
A+4 ?
A+4 ?
w procesorach Cortex-Mx
format format big-endian zastąpiono
little-endian
formatem byte-invariant big-endian
7
1)
A. Sloss, D. Symes, C. Wright: ARM System Developer s
Big and Little Endian Byte Addressing. App Note 61. ARM,
Guide. Desining and Optimizing System Software.
DAI 0061A, p.4
Morgan Kaufmann, 2004
2)
ARM Compiler toolchain. Using the Compiler. Version 4.1.
ARM DUI 0472C, p.6-43
ARM - efektywne programowanie w C
ARM Uporządkowanie danych
Struktury danych w pamięci
(Data alignment)
(Little-Endian Memory System)
struct { uporządkowanie zmiennych w pamięci
sposób składowania danych w pamięci tak, by mogły być efektywnie
char a;
Adres +3 +2 +1 +0
wykorzystane
int b;
wolne wolne wolne a
+0
char c;
b31 .. 24 b23 .. 16 b15 .. 8 b7 .. 0
+4
procesory ARM mają bajtowy (8-bitowy), pół-słowowy (16-bitowy) i short d;
słowowy (32-bitowy) dostęp do danych w pamięci 1) } +8 d15 .. 8 d7 .. 0 wolne c
2)
kompilator procesorów ARM rozmieszcza dane w pamięci wg. zasady:
efektywne wykorzystanie pamięci
typ liczba rozmieszczenie w pamięci
bajtów
struct {
char 1 od dowolnego adresu uporządkowanie zmiennych w pamięci
char a;
short 2 od adresu podzielnego przez 2 bez reszty
Adres +3 +2 +1 +0
char c;
float, int, long 4 od adresu podzielnego przez 4 bez reszty
d15 .. 8 d7 .. 0 c a
short d; +0
long long, double 8 od adresu podzielnego przez 4 bez reszty
int b;
b31 .. 24 b23 .. 16 b15 .. 8 b7 .. 0
+4
}
USB Device Descriptor
Problemy i pytania
Example
1. Jakie typy danych określają skróty: char, short, int, float ?
code struct usb_st_device_descriptor usb_device_descriptor =
2. Jaki jest zakres zmienności danych typu: char, short, int, float ?
{
3. Ile bajtów liczą zmienne typu: bajt, half-word, word, double-word ?
0x12, /* Size of this descriptor in bytes */
0x01, /* DEVICE descriptor type */ 4. Jaka jest kolejność bajtów zmiennej typu word przy zapisie typu little-endian ?
0x1001, /* Binay Coded Decimal Spec. release */
5. Jaka jest kolejność bajtów zmiennej typu word przy zapisie typu big-endian ?
0x00, /* Class code assigned by the USB */
6. Jaki jest wpływ uporządkowania danych w pamięci na szybkość działania CPU ?
0x00, /* Sub-class code assigned by the USB */
7. Jakie fazy można wyróżnić w trakcie wykonywania rozkazu przez procesor ?
0x00, /* Protocol code assigned by the USB */
0x08, /* Max packet size for EP0 (8, 16, 32, 64) */ 8. Na czym polega przetwarzanie sekwencyjne (skalarne) ?
0xEB03, /* Vendor ID (0x03EB - Atmel) */
9. Jakie są wady i zalety przetwarzania sekwencyjnego ?
0x0320, /* Product ID assigned by the manufacturer
10. Na czym polega przetwarzanie potokowe (strumieniowe) ?
(0x2003 - HID Keyboard) */
11. Jakie są wady i zalety przetwarzania potokowego ?
0x0001, /* Device release number */
0x01, /* Index of manu. string descriptor */
12. Jakie typy konfliktów występują przy przetwarzaniu potokowym ?
0x02, /* Index of prod. string descriptor */
13. Co oznaczają pojęcia: CISC oraz RISC ?
0x03, /* Index of S.N. string descriptor */
14. Jakie są wady i zalety procesorów typu CISC ?
0x01 /* Number of possible configurations */
15. Jakie są wady i zalety procesorów typu RISC ?
};
8
Wyszukiwarka
Podobne podstrony:
4 Typy instrukcji Tryby?resowania 15 www (1)2 Architektura 15 www7 Stos 15 wwwprzetwórstwo projekt 01 15Definicje procesu i pod procesowego (1) (1) 153&7W5 procesy grupoweXI2011 www12 DMA 15 www13 Power 15 www8 Przerwania 15 www6 Pamieci ROM RAM 15 www9 Liczniki 15 www5 Architektura MCU 15 www (1)Typy zachowań w procesie komunikowania sięcentralne procesy przetwarzania słuchowego u dzici kształconych i niekształconych muzyczniewięcej podobnych podstron