1
Podstawy techniki
mikroprocesorowej
ETEW006
Przetwarzanie danych
Typy procesorów
Andrzej Stępień
Katedra Metrologii Elektronicznej i Fotonicznej
Little / Big Endian Machines
0
7
N
Word
8
15
N+1
High Byte
Low Byte
Low Byte
High Byte
N
N+1
N+2
N
−
1
Little Endian
memory address
0
7
N+1
Word
8
15
N
High Byte
Big Endian
High Byte
Low Byte
Low Byte
Endianness
0
15
N
Word
Low
Byte
N+1
High
Byte
8 7
0
15
N
Doubleword
Low Word
16
31
N+2
High Word
0
N
Quardword
Low Doubleword
31
32
N+4
High Doubleword
63
0
N
Double Quardword
Low Quardword
63
64
N+8
High Quardword
127
32-bit microprocessor
ARM core
word
halfword
Steve Furber: ARM System-on-chip Architecture.
Secon edition. Addison-Wesley, 2000
Figure 4-1. Fundamental
DataTypes
Intel
®
64 and IA-32 Architectures Software Developer’s Manual.
Volume 1: Basic Architecture. Intel, December 2009
Data Structure
Bit and Byte Order
Intel
®
64 and IA-32 Architectures Software Developer’s Manual
Volume 1: Basic Architecture. Intel, December 2009
Figure 1-1. Bit and Byte Order
Byte 2
Byte 3
Byte 0
Byte 1
0
4
Lowest
Address
Byte Offset
8
12
16
20
24
28
Bit Offset
0
Highest
Address
7
8
15
16
23
24
31
Intel 64 and IA-32 processors are “
little endian
” machines
Bit positions are numbered from right to left
word
aligned
in memory
Aligned
&
Unaligned
Word Data Transfer
[32:24]
[23:16]
[15:8]
[7:0]
Byte 3
Byte 2
Byte 1
Byte 0
Word Aligned
Data
Transfer
Address N + 4
Address N
Address N – 4
[32:24]
[23:16]
[15:8]
[7:0]
Word Unaligned
Data
Transfer
[23:16]
[32:24]
[15:8]
[7:0]
[23:16]
[32:24]
[15:8]
[7:0]
Address N + 4
Address N
Address N – 4
Address N + 4
Address N
Address N – 4
Address N + 4
Address N
Address N – 4
Traditionally Unaligned Data Transfer
≡≡≡≡
Exception
(unpredictable)
Cortex-M3
Aligned
&
Unaligned Data Transfers
Traditionally
(ARM processors such as the ARM7/ARM9/ARM10) allow
only
aligned transfers
:
•
word transfer
must have address
bit[1]
and
bit[0
] equal to
0
– data
can be located at 0x1000 or 0x1004, but it cannot be located in
0x1001, 0x1002, or 0x1003
•
half word transfer
must have address
bit[0]
equal to
0
– data can be
located at the address 0x1000 or 0x1002, but it cannot be 0x1001
Cortex-M3 supports
unaligned transfers on
single accesses
–
data
memory accesses can be defined as
aligned
or
unaligned
2
Numeric Data Types
Intel
®
64 and IA-32 Architectures Software Developer’s Manual
Volume 1: Basic Architecture. Intel, December 2009
fundamental data types
: bytes, words, and doublewords
numeric data types
: signed & unsigned integers, floating-point numbers
integers
:
•
unsigned integers
(unsigned binary numbers): byte (0...255), word
(0...65.535), doubleword (0...2
32
– 1), and quadword (0...2
64
– 1)
•
signed integers
(signed binary numbers), two's complement
representation: byte, word, doubleword, or quadword (sign bit is located in
bit 7 in a byte integer, bit 15 in a word integer, bit 31 in a doubleword
integer, and bit 63 in a quadword integer)
three
floating-point data types
:
•
single-precision floating-point
(length = 32 bits, precision = 24 bits)
•
double-precision floating-point
(length = 64 bits, precision = 53 bits)
•
double-extended precision floating-point
(length = 80 bits, precision =
64 bits)
data formats
for these data types correspond directly to formats specified in
the
IEEE Standard 754 for Binary Floating-Point Arithmetic
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:
register-to-register
→
przestrzeni
ą
robocz
ą
s
ą
rejestry ogólnego
przeznaczenia:
– accumulator-based
CPU, z akumulatorem zwi
ą
zana jest wi
ę
kszo
ść
instrukcji arytmetyczno-logicznych i wymiany danych
– register-based
CPU (register-to-register), 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
(
Ifetch
)
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 arytmetyczno-
logicznej, obliczenia adresu itp.
– zapisu
(
Wr
)
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.
Sekwencyjne przetwarzanie rozkazów
Sekwencyjne
(skalarne) - ka
ż
da faza wykonywana jest oddzielnie,
niezale
ż
nie od pozostałych.
Ifetch
Cycle
1
Exec
Cycle
3
Wr
Cycle
4
Cycle
5
Ifetch
Exec
Cycle
7
Wr
Cycle
8
Ifetch
Cycle
9
Ifetch
Reg/Dec
Exec
Wr
pobierania
(
Ifetch
)
rozkazu
dekodowania
(
Reg/Dec
)
rozkazu
wykonania
(
Exec
)
rozkazu
zapisu
(
Wr
)
wyniku
Reg/Dec
Cycle
2
Reg/Dec
Cycle
6
Potokowe przetwarzanie rozkazów
Ifetch
Cycle
1
Ifetch
Reg/Dec
Exec
Wr
pobierania
(
Ifetch
)
rozkazu
dekodowania
(
Reg/Dec
)
rozkazu
wykonania
(
Exec
)
rozkazu
zapisu
(
Wr
)
wyniku
Ifetch
Reg/Dec
Cycle
2
Potokowe
(strumieniowe, pipeline processing) - poszczególne fazy
ró
ż
nych rozkazów s
ą
wykonywana równocze
ś
nie.
Exec
Cycle
3
Reg/Dec
Ifetch
Wr
Cycle
4
Exec
Reg/Dec
Ifetch
Cycle
5
Wr
Exec
Reg/Dec
Ifetch
Cycle
6
Wr
Exec
Reg/Dec
Ifetch
Cycle
7
Wr
Exec
Reg/Dec
Reg/Dec
Ifetch
Cycle
8
Wr
Exec
Exec
Reg/Dec
Ifetch
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
3
Przetwarzanie potokowe - typ R
Instrukcja typu
R
(dost
ę
p do rejestru) zło
ż
ona z
4
cykli maszynowych:
• Ifetch
:
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
• Wr
:
wpis warto
ś
ci zmiennej do rejestru
Ifetch
Reg/Dec
Exec
Wr
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
Ifetch
Reg/Dec
Exec
Wr
Ifetch
Reg/Dec
Exec
Wr
Cycle 6
– typ instrukcji znany po jej zdekodowaniu (
Ifetch
&
Reg/Dec
)
Przetwarzanie potokowe - LOAD
Instrukcja typu
LOAD
zło
ż
ona z
5
cykli maszynowych:
• Ifetch
:
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
• Wr
:
wpis warto
ś
ci zmiennej do rejestru
Ifetch
Reg/Dec
Exec
Mem
Wr
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
Ifetch
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
Wr
Cycle 6 Cycle 7
– 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
Ifetch
Reg/Dec
Exec
Mem
Wr
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
Ifetch
Reg/Dec
Exec
Mem
Wr
Cycle 7
Ifetch
Reg/Dec
Exec
LOAD
LOAD
typ R
Cycle 6
• 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
Wr
Konflikt zasobów
Ifetch
Reg/Dec
Exec
Mem
Wr
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
Ifetch
Reg/Dec
Exec
Mem
Wr
Cycle 7
Ifetch
Reg/Dec
Exec
LOAD
LOAD
typ R
Cycle 6
• 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
Wr
Wr
NOP
– w jednej z faz musi wyst
ą
pi
ć
dodatkowy
cykl oczekiwania
Konflikt danych
Ifetch
Exec
Mem
Wr
Cycle 1
Cycle 3 Cycle 4
Reg/Dec
Exec
Mem
Wr
LOAD
LOAD
Cycle 6
• 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
Cycle 5
Reg/Dec
Cycle 2
Ifetch
Konflikt danych
Ifetch
Exec
Mem
Wr
Cycle 1
Cycle 3 Cycle 4
Reg/Dec
Exec
Mem
Wr
LOAD
LOAD
Cycle 6
• 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
Cycle 5
Reg/Dec
Cycle 2
Ifetch
– rozwi
ą
zaniem konfliktu jest umieszczenie mi
ę
dzy rozkazami instrukcji
niezale
ż
nej od argumentów, np. NOP lub innej (problem optymalizacji
kompilatorów – rozkazy s
ą
wykonywane nie w takiej kolejno
ś
ci jak
zostały napisane w programie)
Reg/Dec
Exec
Mem
Wr
Reg/Dec
Exec
NOP
NOP
LOAD
Ifetch
Reg/Dec
Ifetch
Ifetch
Exec
wstrzymanie
potoku
Wr
Wr
4
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
3-stage
instruction pipeline:
Fetch:
Fetching an instruction from the memory containing the code
Decode:
Decoding the instruction and prepare data path control
signals for next cycle
Execute:
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 3-stage pipeline:
Fetch:
Fetch next instruction from memory
Decode:
Decode instruction and read register operands
Execute:
Execute instruction
Data:
Access data memory, if required
Write-back: Write the result of the instruction back to the destination
memory location
T
humb only a 16-bit wide system data bus, less
power, smaller footprint, reducing system cost
D
ebug support
M
ultiplier (64-bit result)
I
n-Circuit Emulator interface
ARM7 / ARM9
(2/2)
ARM7TDMI
(ARM7TDMI-S)
Fetch
Decode
Execute
Fetch
Decode
Execute
Memory
Write
ARM9TDMI
The maximum clock frequency of the ARM9TDMI core is generally in the
range 1.8 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 30% 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 8-, 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 Am2900
(Advanced
Micro Devices)
, np.
Am2901
:
– 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, AND, XOR i XNOR
– argumenty
zawarte w: RAM, akumulatorze, zewn
ę
trznych wej
ś
ciach,
domy
ś
lna warto
ść
0,
– wynik operacji
: przeniesienie dla innych segmentów
(carry-out
f
lag)
, znak
(sign flag)
, przekroczenie zakresu
(overflow flag)
, wynik zerowy
(zero flag)
...
Properties of CISC
Hasan Krad, Aws Yousif Al-Taie: A New Trend for CISC and RISC Architectures.
Asian Journal of Infprmation Technology 6(11), 2007, p.1126
segmented memory model (INTEL x86 family)
few registers
richer instruction set, some simple, some very complex
instructions generally take more than 1 clock to execute
instructions of varaible size
instructions interface with memory in multiple mechanisms with complex
addresing modes
no pipelining
upward compatibiliry within a family
microcode control
work well with a simpler compiler
architecture designed for good performance on slow memories
Properties of RISC
Hasan Krad, Aws Yousif Al-Taie: A New Trend for CISC and RISC Architectures.
Asian Journal of Infprmation Technology 6(11), 2007, p.1126
simple primitive instructions and addressing modes
instructions execute in one clock cycle
uniformed length instructions and fixed instructions format
instructions interface with memory via fixed mechanism (load/store)
pipelining
instruction set is orthogonal (little overlapping of instruction functionality)
hardwired control (not microcode control)
complexity pushed to the compiler
large number of registers
fast floating point performance
larger cache
higher bandwidth
architecture designed for a good cost/performance
5
Cechy procesora typu CISC
(1/2)
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
J. Biernat: Architektura komputerów.
Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław 2001
Procesory
CISC
ST72334
temp
ALU
A
X
CC
Y
R0
R1
R2
R3
R4
R5
R6
R7
R0
R1
R2
R3
R4
R5
R6
R7
R0
R1
R2
R3
R4
R5
R6
R7
temp
ALU
A
PSW
C51
B
DPTR
R0
R1
R2
R3
R4
R5
R6
R7
RB0..3
temp
ALU
8086
AL
AH
BL
BH
CL
CH
DL
DH
DI
SI
BP
SP
Status
Flags
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
Procesory CISC
C51 — Formaty instrukcji
MOV
@Ri, #dana
ró
ż
ny, zmienny format rozkazów
:
1
r r r
0
1
0
0
ADD
A, Rn
0 1 1
i
1
1
1
0
dana
ACALL adr_11
0 0 0 1
0
A
A
A
adres A
CJNE
A, adr, rel
0 1 0 1
1
1
0
1
adres
rel
Procesory CISC
8086 — Formaty instrukcji
procesor:
– o zło
ż
onej li
ś
cie rozkazów maj
ą
cych
ró
ż
ny, zmienny format
Intel Architecture Software Developer’s Manual. Volume 2:
Instruction Set Reference. Intel, 1997, p.2-1
Instruction
Prefixes
Opcode
ModR/M
SIB
Dispacement
Immediate
Up to four
prefixes of
1-byte each
(optional)
1 or 2 byte
opcode
Address
displacement
of 1, 2, or 4
bytes or none
Address
displacement
of 1, 2, or 4
bytes or none
Mod
Reg/
Opcode
R/M
0
3
6
7
2
5
Scale
Index
Base
0
3
6
7
2
5
1 byte
(if required)
1 byte
(if required)
SIB (Scale-Index-Base)
Procesory CISC
cykle maszynowe
wzrost liczby taktów zegarowych przy
wzro
ś
cie zło
ż
ono
ś
ci instrukcji
C51
:
– 1
lub
2
cykle maszynowe dla wszystkich instrukcji
– 4
cykle maszynowe dla MUL AB oraz DIV AB (
TYLKO w
standardzie
)
ST7
:
– 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
)
Procesory 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
wewn
ę
trzna pami
ęć
RAM
:
MOV
A, @Ri
; A
←
(Ri)
IDATA
, i=0, 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
6
Procesory CISC
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. PROGRAMMING MANUAL.
STMicroelectronics, November 2005, p.8-29
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® 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
www.intel.com: XP SP2 vs. Intel Prescott
What is
"microcode" ?
(2/2)
MICROCODE
ENGINE
microcode engine
controls the CPU, allowing it
to perform operations with any byte, word or
double word in the 256 byte register space
instructions
to the CPU are
taken from
the
queue
and
stored temporarily
in the
instruction
register
microcode engine decodes
the instructions
and
generates
the
correct sequence
of events
to have the RALU perform the desired function
80C196KB
User's Guide.
INTEL
Corporation,
November 1990,
Order Number:
270651-003
QUEUE
Cechy procesora typu RISC
(1/2)
uproszczon
ą
struktur
ę
mikroprocesora, o
zredukowanej li
ś
cie
rozkazów
zaproponował John Cocke (IBM Research w Yorktown, New
York, 1974) wychodz
ą
c z zało
ż
enia,
ż
e 20% dost
ę
pnych instrukcji
zajmuje a
ż
80% czasu pracy procesora
skrót
RISC
(
Reduced Instruction Set Computer
) zaproponował David
Patterson (University of California, Berkeley, 1985)
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
7
Procesory RISC
MSP430
(1/2)
R2/SR/
CG1
Status
R3/
CG2
Constant Generator
R0/PC
Program Counter
R1/SP
Stack Pointer
R4
General Purpose
0
15
R14
General Purpose
R15
General Purpose
Memory Address
Bus – MAB
Memory Data
Bus – MDB
dst
scr
16-bit ALU
MCLK
MCLK
16
16
MSP430x4xx Family User’s Guide.
Texas Instruments, SLAU056G, 2007, p.3-3
Zero, Z
Carry, C
Overflow, V
Negative, N
Single-cycle register
operations
Large 16-bit register 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 word-
wide arguments
Constant generator (
CGx
)
provides six most used
immediate values and
reduces code size
.......................
Procesory RISC
MSP430 — formaty rozkazów
dest. register
0
3
B/W
As
Ad
source register
OP - Code
6
7
5
4
8
11
12
15
Format I
dest. register
0
3
B/W
Ad
0
0
0
1
OP - Code
6
7
5
4
11
12
15
Format II
Offset
0
0
0
1
OP - Code
8
10
12
15
S
9
13
Format III
As
/
Ad
Addressing Mode
Contitional and unconditional Jumps (+/– 9 bit Offset)
Ad Addressing Mode
MSP430x4xx Family User’s Guide.
Texas Instruments, SLAU056G, 2007, p.3-18
Procesory RISC
MSP430
(2/2)
16 rejestrów uniwersalnych:
– R0 – licznik rozkazów PC
– R1 – wska
ź
nik stosu SP
– R2 – rejestr statusowy SR
lub generator stałych CG1
– R3 – generator stałych CG2
– R4 .. R15 – rejestry ogólnodost
ę
pne
27 bazowych + 24 emulowane instrukcje
ortogonalne tryby adresowania - wszystkie
instrukcje ze wszystkimi trybami
adresowania i operandami
Address
Modes
Source
Address
Modes
Destination
Instructions
Address
Modes
Source
Address
Modes
Destination
Instructions
Example: Orthogonality for two operand instructions
Example: Non-Orthogonality for two operand instructions
www.ti.com
Procesory RISC
AVR — ATmega32
ATmega32A. 8-bit Microcontroller with 32K Bytes
In-System Programmable Flash. Atmel, 2008, 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 32 x 8-bit general purpose working
registers 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 32 registers can be used as three 16-bit indirect address
register pointers for Data Space addressing
– efficient address calculations
Clear Bits in Register:
CBR Rd,K
; 16
≤
d
≤
31,
; 0
≤
K
≤
255
Procesory RISC
AVR — ATmega32 Working Registers
ATmega32A. 8-bit Microcontroller with 32K Bytes
In-System Programmable Flash. Atmel, 2008, p.10
R0
R1
R2
...................
R13
R14
R15
R16
R17
...................
R26
R27
R28
R29
R30
R31
$00
$01
$02
$0D
$0E
$0F
$1D
High Byte
$1E
Low Byte
$1F
High Byte
$1A
Low Byte
$1B
High Byte
$1C
Low Byte
$10
$11
X-
pointer
register
Y-
pointer
register
Z-
pointer
register
first 32 locations of
the user Data Space
Clear Register:
CLR Rd
; 0
≤
d
≤
31
General
Purpose
Working
Registers
Procesory RISC
AVR — ATmega32 Load Memory
AVR 8-bit Instruction Set.
Atmel, 0856G–AVR–07/08
Load Indirect from Data Space to Register using Index X, Y or Z:
LD
Rd, X
; Rd
←
(X),
X: Unchanged,
0
≤
d
≤
31
LD
Rd, Y+
; Rd
←
(Y),
Y
←
Y + 1, Y: Post incremented, 0
≤
d
≤
31
LD
Rd, – Z
; Z
←
Z – 1,
Rd
←
(Z), Z: Pre decremented, 0
≤
d
≤
31
Load Indirect from Data Space to Register using Index Y or Z:
LDD Rd, Y+q
; Rd
←
(Y+q),
Y: Unchanged,
0
≤
d
≤
31,
;
q: Displacement,
0
≤
q
≤
63
Load Direct from Data Space:
LDS Rd, k
; Rd
←
(k),
0
≤
k
≤
65535,
0
≤
d
≤
31
Load Indirect from Program Memory:
LPM Rd, Z
; Rd
←
(Z),
Z: Unchanged,
0
≤
d
≤
31
LPM Rd, Z+
; Rd
←
(Z),
Z
←
Z + 1, Z: Post incremented, 0
≤
d
≤
31
8
Procesory RISC
AVR — ATmega32 Store Memory
AVR 8-bit Instruction Set.
Atmel, 0856G–AVR–07/08
Store Indirect From Register to Data Space using Index X, Y or Z:
ST
X, Rr
; (X)
←
Rr,
X: Unchanged,
0
≤
r
≤
31
ST
Y+, Rr
; (Y)
←
Rr,
Y
←
Y+1,
Y: Post incremented, 0
≤
r
≤
31
ST
–Z, Rr
; Z
←
Z – 1,
(Z)
←
Rr,
Z: Pre decremented, 0
≤
r
≤
31
Store Indirect From Register to Data Space using Index Y or Z:
STD Y+q, Rr
; (Y+q)
←
Rr, Y: Unchanged,
0
≤
r
≤
31,
;
q: Displacement,
0
≤
q
≤
63
Store Direct to Data Space:
STS k, Rr
; (k)
←
Rr,
0
≤
k
≤
65535,
0
≤
r
≤
31
Procesory RISC — ARM7
PC
(Program
Counter)
User
System
Supervisor
Abort
Undefined Interrupt
Fast
Interrupt
Privileged Modes
Exception Modes
R14_fiq
R13_fiq
R12_fiq
R11_fiq
R10_fiq
R9_fiq
R8_fiq
R14_irq
R13_irq
R14_und
R13_und
R14_abt
R13_abt
R14_svc
R13_svc
CPSR_svc
SPSR_svc
CPSR_abt
SPSR_abt
CPSR_und
SPSR_und
CPSR_irq
SPSR_irq
CPSR_fiq
SPSR _fiq
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13
(Stack Pointer
)
R14
(Link Register)
Current Program
Status Register
CPSR
CPSR
Saved Program
Status Register
ARM Architecture Reference Manual.
ARM DDI 0100E, p.A2-4
CRISC – future of processor
Hasan Krad, Aws Yousif Al-Taie: A New Trend for CISC and RISC Architectures.
Asian Journal of Infprmation Technology 6(11), 2007, p.1128
Intel’s Pentium series chips described as
CRISC
(
C
omplex-
R
educe
I
nstruction
S
et
C
omputers)
Pentium are
hybrid between CISC and RISC
architectures
Intel Core 2 Duo
dual-core (2006) and quard-core (2007) 64-bit x86
CPUs based on Intel Core microarchitecture (291 million of transistors):
•
Intel’s wide dynamic execution
•
14 pipelining stages
•
Cache: L1 – 32 + 32 KB, L2 – 4 MB (65 nm) or 6 MB (45 nm)
•
Intel’s advanced digital media boost
•
Intel’s intelligent power capability
•
Intel’s advanced smart cache
•
Intel’s smart memory access
Intel
®
64 and IA-32 Architectures Software Developer’s Manual
Volume 1: Basic Architecture. Intel, December 2009