background image

1

Podstawy techniki 

mikroprocesorowej 

ETEW006

Typy procesorów

Przetwarzanie danych

Andrzej Stępień

Katedra Metrologii Elektronicznej i Fotonicznej

C

omplex 

I

nstruction 

S

et 

C

omputer 

[1#3] 

http://en.wikipedia.org/wiki/Complex_instruction_set_computing

wspomaganie j

ę

zyków wysokiego poziomu

:

– p

ę

tle programowe

– wywołania podprogramów, funkcji

– przenoszenie parametrów do/z podprogramów, funkcji

– optymalizacja kodu wynikowego programu

– ograniczenie ilo

ś

ci odwoła

ń

 do pami

ę

ci

– obni

ż

enie kosztów systemu procesorowego (mniejsze  wymagania 

dotycz

ą

ce pami

ę

ci)

Complex Instruction Set Computer  

[2#3]

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/Complex_instruction_set_computing

cechy

procesorów typu  

CISC

:

du

ż

a liczba instrukcji, prostych i zło

ż

onych

niewielka optymalizacja wykonywanych  rozkazów, du

ż

a liczba cykli 

maszynowych  konieczna do wykonania rozkazów  (zwykle dłu

ż

ej ni

ż

 1 

cykl maszynowy)

zmienny rozmiar instrukcji, rozkazy o zmiennym formacie (długo

ś

ci) 

ż

norodne i zło

ż

one tryby adresowania (przy dost

ę

pie do pami

ę

ci)

wspomaganie wykonywanych  rozkazów  mikrokodami (microcode)

segmentowy model pami

ę

ci (adresowanie segmentowe)

mały zestaw rejestrów strukturalnych (dla u

ż

ytkownika)

Complex Instruction Set Computer  

[3#3]

cechy

procesorów typu  

CISC

:

bezpo

ś

redni dost

ę

p do danych w pami

ę

ci, bez konieczno

ś

ci 

kopiowania zawarto

ś

ci pami

ę

ci do rejestrów roboczych

zło

ż

ono

ść

 i mała efektywno

ść

 (szybko

ść

działania dekodera 

rozkazów

trudno

ś

ci z racjonalnym wykorzystaniem zasobów procesora; przy 

prostych, elementarnych operacjach wykorzystanie niewielkiej cz

ęś

ci 

zasobów procesora

brak przetwarzania  potokowego

słaba wydajno

ść

  operacji zmiennoprzecinkowych

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/Complex_instruction_set_computing

Procesory  CISC
C51 — Formaty instrukcji

MOV

@Ri, #dana

ż

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

C500 Architecture and Instruction Set. User’s  Manual. 

Infineon, July 2000

Procesory  CISC
8086  — Formaty instrukcji

procesor:

– o zło

ż

onej li

ś

cie rozkazów maj

ą

cych 

ż

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

do czterech 

1-bajtowych 

prefixów

(opcjonalnie)

1 lub 2 

bajty Op-

Code

przesuni

ę

cie 

adresu 

(address 

displacement)

0, 1, 2 lub 4

bajty

Mod

Reg/

Opcode

R/M

0

3

6

7

2

5

Scale

Index

Base

0

3

6

7

2

5

1 bajt 

(je

ś

li 

wymagany)

1 bajt 

(je

ś

li 

wymagany)

SIB (Scale-Index-Base)

przesuni

ę

cie 

adresu 

(address 

displacement)

0, 1, 2 lub 4

bajty

background image

2

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 (dane)

:

MOV

A, @Ri

; A 

(Ri)

IDATA

,  i=0, 1

lub

MOV

@Ri, addr

; (Ri)

IDATA

(addr)

DATA

zewn

ę

trzna pami

ęć

 RAM (dane)

:

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

C500 Architecture and Instruction Set. User’s  Manual. 

Infineon, July 2000

Cechy  procesora  typu  CISC 

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

Czym jest "microcode" ?  

[1#2]

Zło

ż

ono

ść

mikroprocesora (miliony tranzystorów) i oprogramowania 

(miliony linii  kodu 

ź

ródłowego) sprzyja powstawaniu bł

ę

dów projektantów 

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)

Procesory

, np. firmy Intel, mog

ą

 zawiera

ć

 sprz

ę

towe 

ę

dy działania

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 GuideINTEL Corporation, November 1990, Order Number: 270651-003

www.intel.com: XP SP2 vs. Intel Prescott

Czym jest

"microcode" ? 

[2#2]

MICROCODE

ENGINE

instrukcje dla procesora s

ą

 pobierane z kolejki 

(queue) i tymczasowo przechowywane w 
rejestrze rozkazów

maszyna stanów ’microcode’ dekoduje 
instrukcje i generuje prawidłow

ą

 (koryguje) ich 

sekwencj

ę

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 konstrukcji procesorów rodziny ARM

Reduced Instruction Set Computer  

[2#2]

cechy

procesorów typu  

RISC

:

– proste instrukcje i tryby adresowania

– jednolity format oraz stała długo

ść

 instrukcji, ortogonalno

ść

 instrukcji

– jednolite zasady dost

ę

pu do pami

ę

ci (load/store)

– przetwarzanie potokowe (pipelining)

– instrukcje wykonywane zwykle w 1 cyklu maszynowym

– sterowanie przepływem rozkazów realizowane sprz

ę

towo (brak mikro-kodów, 

eliminacja mikroprogramowania)

– wi

ę

ksze mo

ż

liwo

ś

ci wyboru uniwersalnych rejestrów mikroprocesora

– dobra wydajno

ść

 operacji zmiennoprzecinkowych

– implementacja pami

ę

ci podr

ę

cznych (cache)

– wykonanie operacji równowa

ż

nej wymaga wi

ę

kszej liczby rozkazów w 

procesorze RISC ni

ż

 w procesorze CISC

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

background image

3

Procesor  RISC
Cortex-M0/M0+  

[1#3]

ARM Cortex™-M Programming Guide to

Memory Barrier Instructions. Application Note 321. ARM DAI 0321A, p.3

The 

ARM Cortex-M 

processors are high performance, low cost, low power, 

32-bit RISC processors

, designed for microcontroller applications. 

The range includes the Cortex-M3, Cortex-M4, 

Cortex-M0, Cortex-M0+

and Cortex-M1 processors. 

The 

Cortex-M1

processor is targeted at implementation in 

FPGA

devices.

Cortex-M

processors 

differ

from 

other ARM 

processors, including the 

Cortex-A/R 

processors, because they 

only execute Thumb instructions

They are based on the ARMv7-M and

ARMv6-M

architectures and have an 

efficient instruction 

pipeline

, with 

low-latency Interrupt Service Routine 

(ISR) entry and exit.

Procesor  RISC
Cortex-M0/M0+  

[2#3]

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

Cortex-M0

Cortex-M0+

32-bit processor core

von Neumann architecture

3-stage pipeline 

2-stage pipeline

ARMv6-M Thumb

®

instruction set; Thumb-2 technology

Optional

ARMv6-M compliant 24-bit SysTick timer

32-bit hardware multiplier

:

– single-cycle multiplier, in designs optimized for high performance
– 32-cycle multiplier, in designs optimized for low area

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
– dedicated Non-Maskable Interrupt (NMI) input
– support for both level-sensitive and pulse-sensitive interrupt lines

optional Wake-up Interrupt Controller (WIC), providing ultra-low power sleep
mode support

optional Memory Protection Unit (MPU)

Low power sleep-mode entry using 

Wait For Interrupt 

(WFI)

Wait For Event 

(WFE) instructions, or the return from interrupt sleep-on-exit feature

Procesor  RISC

Cortex-M0/M0+  

[3#3]

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

Optional

Wakeup

Interrupt

Controller

(WIC)

Optional

Memory

Protection

Unit

(MPU)

Cortex-M0

Cortex-M0+

processor

core

Nested

Vectored

Interrupt

Controller

(NVIC)

Breakpoint

&

Watchpoint

Units

Optional

Debug

Access

Port

Debugger

interface

Bus matrix

Cortex-M0/

M0+

Components

Cortex-M0/

M0+

Processor

Interrupts

Optional

single cycle

I/O port

Optional

Serial-Wire or 

JTAG debug port

Execution Trace Interface

System

timer

(SysTick 

Timer)

AHB-Lite 

interface

to system

Procesor typu CRISC

Procesory firmy Intel’s z serii Pentium nazwano 

CRISC

(

C

omplex-

R

educe 

I

nstruction 

S

et 

C

omputers) 

Procesory serii Pentium s

ą

 

hybryd

ą

procesorów CISC i RISC

64-bitowe procesory serii x86 

Intel Core 2 Duo

(2006 – dwurdzeniowe i 

2007 – czterordzeniowe) s

ą

 oparte na architekturze Intel Core 

microarchitecture (291 million  of transistors)

Hasan Krad, Aws Yousif Al-Taie: A New Trend for CISC and RISC  Architectures
Asian Journal of Information Technology 6(11), 2007, p.1128

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

Intel

® 

64 and IA-32 Architectures Software Developer’s Manual. Volume 1: Basic Architecture. 

Intel, December 2009

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 

(

Fetch

)

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.

background image

4

Sekwencyjne przetwarzanie rozkazów

Sekwencyjne

(skalarne) - ka

ż

da faza wykonywana jest oddzielnie, 

niezale

ż

nie od pozostałych.

Fetch

Cycle

1

Exec

Cycle

3

Wr

Cycle

4

Cycle

5

Fetch

Exec

Cycle

7

Wr

Cycle

8

Fetch

Cycle

9

Fetch

Reg/Dec

Exec

Wr

pobierania 

(

Fetch

)

rozkazu

dekodowania 

(

Reg/Dec

)

rozkazu

wykonania 

(

Exec

)

rozkazu

zapisu

(

Wr

wyniku

Reg/Dec

Cycle

2

Reg/Dec

Cycle

6

Potokowe przetwarzanie rozkazów

Fetch

Cycle

1

Fetch

Reg/Dec

Exec

Wr

pobierania 

(

Fetch

)

rozkazu

dekodowania 

(

Reg/Dec

)

rozkazu

wykonania 

(

Exec

)

rozkazu

zapisu

(

Wr

wyniku

Fetch

Reg/Dec

Cycle

2

Potokowe

(strumieniowe, pipeline processing) - poszczególne  fazy 

ż

nych rozkazów  s

ą

 wykonywana równocze

ś

nie.

Exec

Cycle

3

Reg/Dec

Fetch

Wr

Cycle

4

Exec

Reg/Dec

Fetch

Cycle

5

Wr

Exec

Reg/Dec

Fetch

Cycle

6

Wr

Exec

Reg/Dec

Fetch

Cycle

7

Wr

Exec

Reg/Dec

Reg/Dec

Fetch

Cycle

8

Wr

Exec

Exec

Reg/Dec

Fetch

Problem

czynno

ść

czas trwania

pranie 

30 minut

suszenie

40 minut

prasowanie + składanie

20 minut

Ala

Bartek

Czesiek

Dorota

pior

ą

, susz

ą

, prasuj

ą

 i składaj

ą

:

Czynności  wykonywane  szeregowo

Ala

Bartek

Dorota

30

40

20

30

40

20

Czesiek

30

40

20

30

40

20

16

00

17

00

18

00

19

00

20

00

21

00

22

00

sumaryczny czas 

wynosi 

6

godzin

przetwarzanie sekwencyjne

Czynności  
wykonywane  
równolegle

Ala

Bartek

Dorota

30

Czesiek

16

00

17

00

18

00

19

00

20

00

sumaryczny czas 

wynosi 

3,5

godziny

40

40

Czynności  
wykonywane  
równolegle

Ala

Bartek

Dorota

30

Czesiek

16

00

17

00

18

00

19

00

20

00

sumaryczny czas 

wynosi 

3,5

godziny

• przetwarzanie

równoległe, 

potokowe

(

pipeline

) nie skraca czasu trwania 

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

• przetwarzanie  potokowe umo

ż

liwia równoczesne  wykonywanie 

niezale

ż

nych  zada

ń

 (

multiple tasks

)

• teoretyczna szybko

ść

 jest równa liczbie niezale

ż

nych  faz (

pipe stages

)

• ró

ż

ne długo

ś

ci niezale

ż

nych faz ograniczaj

ą

 szybko

ść

 przetwarzania

40

40

?

?

?

konflikt

background image

5

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:

• Fetch

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

Fetch

Reg/Dec

Exec

Wr

Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5

Fetch

Reg/Dec

Exec

Wr

Fetch

Reg/Dec

Exec

Wr

Cycle 6

– typ instrukcji znany po jej zdekodowaniu  (

Fetch

Reg/Dec

)

Przetwarzanie potokowe  - LOAD 

Instrukcja typu 

LOAD

zło

ż

ona z 

5

cykli maszynowych:

• Fetch

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

Fetch

Reg/Dec

Exec

Mem

Wr

Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5

Fetch

Reg/Dec

Exec

Mem

Wr

Fetch

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

Fetch

Reg/Dec

Exec

Mem

Wr

Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5

Fetch

Reg/Dec

Exec

Mem

Wr

Cycle 7

Fetch

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

Fetch

Reg/Dec

Exec

Mem

Wr

Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5

Fetch

Reg/Dec

Exec

Mem

Wr

Cycle 7

Fetch

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 (

NOP

)

Konflikt  danych

Fetch

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

Fetch

background image

6

Konflikt  danych

Fetch

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

Fetch

Reg/Dec

Fetch

Fetch

Exec

wstrzymanie 

potoku

Wr

Wr

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.

Procesor  RISC: Cortex-M0/M0+

ARM Cortex™-M Programming Guide to

Memory Barrier Instructions. Application Note 321. ARM DAI 0321A, p.16

dwie (16-bitowe) instrukcje s

ą

 

pobierane równocze

ś

nie

pobranie

(fetch)

dekodowanie

(decode)

wykonanie 1

(execution)

pobranie

(fetch)

dekodowanie

(decode)

wykonanie 2

(execution)

pobranie

(fetch)

dekodowanie

(decode)

wykonanie 3

(execution)

pobranie

(fetch)

dekodowanie

(decode)

wykonanie 4

(execution)

Rysunek 3

Przetwarzanie potokowe 
w procesorze Cortex-M0

instrukcja 1

instrukcja 2

instrukcja 3

instrukcja 4

dwie (16-bitowe) instrukcje s

ą

 

pobierane równocze

ś

nie

pobranie

(fetch)

wykonanie 1

(execution)

pobranie

(fetch)

wykonanie 2

(execution)

pobranie

(fetch)

wykonanie 3

(execution)

pobranie

(fetch)

wykonanie 4

(execution)

Rysunek 4

Przetwarzanie potokowe 
w procesorze Cortex-M0+

instrukcja 1

instrukcja 2

instrukcja 3

instrukcja 4

Skrócenie cykli maszynowych

:

szybsza reakcja na przerwania (Interrupt entry) oraz skoki (Branch)

szybsze GPIO oraz dost

ę

p do układów peryferyjnych (peripheral access)

Mark Dunnett, Senior Field Application Engineer:

ARM Cortex-M0+ Core. Technical Introduction.

Hitex: ARM – The New Standard Across the Board ? 

Freescale, May 2012, p.17

Cortex-M0+

Przetwarzanie potokowe 

(Pipelining)

MCS51
Typy danych

Typ danej

Bity

Bajty

Zakres warto

ś

ci

bit

1

0 or 1

signed 

char

8

1

–128 .. 0 ......  +127

unsigned 

char

8

1

0 ......... 255

signed 

short int

16

2

–32 768 .. 0 .. +32 767

unsigned 

short int

16

2

0 .... 65 535

signed 

int

16

2

–32 768 .. 0 .. +32 767

unsigned 

int

16

2

0 .... 65 535

signed 

long int

32

4

–2 147 483 648 .. 0 .. +2 147 483 647

unsigned 

long int

32

4

0 .... 4 294 967 295

float

32

4

±1.175494E–38 .. 0 .. ±3.402823E+38

double

32

4

±1.175494E–38 .. 0 .. ±3.402823E+38

sbit

1

0 or 1

sfr

8

1

0 ......... 255

sfr16

16

2

0 .... 65 535

Uwaga: dane typu: 

bit

sbit

sfr

oraz 

sfr16

nie wyst

ę

puj

ą

 w standardzie 

ANSI C. To unikatowa cecha kompilatora Cx51.

Cx51 User's Guide. 

ARM Ltd and ARM Germany GmbH.

MSP430
Typy danych

Typ danej

Rozmiar

Zakres warto

ś

ci

Uporz

ą

dkowanie

bool 

8 bitów

0 lub 1

1

char

8 bitów 

0 ...... 255

1

signed 

char

8 bitów 

–128 .. 0 ...... 127 

1

unsigned 

char

8 bitów 

0 ...... 255 

1

signed 

short

16 bitów 

–32 768 .. 0 .. 32 767

2

unsigned 

short

16 bitów 

0 .. 65 535

2

signed 

int

16 bitów 

–32 768 .. 0 .. 32 767

2

unsigned 

int

16 bitów 

0 .. 65 535

2

signed 

long

32 bity 

–2

31

.. 0 ..  2

31

–1

2

unsigned 

long

32 bity 

0 ..  2

32

–1

2

signed 

long long

64 bity 

–2

63

.. 0 .. 2

63

–1

2

unsigned 

long long

64 bity 

0 .. 2

64

–1

2

MSP430 IAR C/C++ Compiler Reference Guide

for Texas Instruments’ MSP430 Microcontroller Family. 

IAR Systems, Tab. 30 – Integer types

background image

7

ARM
Typy danych

RealView

®

Compilation Tools. Compiler Reference Guide. 

Version 4.0. ARM DUI 0348C, Tab.5.2

Rozmiar

Typ 

w bitach

Uporz

ą

dkowanie w bajtach

char

8

1 bajt (byte-aligned)

short

16

2 pół-słowo (halfword-aligned)

int

32

4 słowo (word-aligned)

long

32

4 słowo (word-aligned)

long long

64

8 podwójne-słowo (doubleword-aligned)

float

32

4 słowo (word-aligned)

double

64

8 podwójne-słowo (doubleword-aligned)

long double

64

8 podwójne-słowo (doubleword-aligned)

All pointers

32

4 słowo (word-aligned)

bool (C++ only)

8

1 bajt (byte-aligned)

_Bool (C only)

8

1 bajt (byte-aligned)

wchar_t (C++ only)

16

2 pół-słowo (halfword-aligned)

Bajt, pół-słowo 

(half-word)

, słowo 

(word)

podwójne słowo 

(double word)

..

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

Double Quardword

Low Quardword

63

64

N+8

High Quardword

127

32-bit microprocessor

ARM core 

2)

word

halfword

1)

Figure 4-1. Fundamental 

DataTypes

1)

Intel

® 

64 and IA-32 Architectures Software Developer’s 

Manual. Volume 1: Basic Architecture. Intel, December 2009

2)

Steve Furber: ARM System-on-chip Architecture.

Second edition. Addison-Wesley, 2000

0

N

Quardword

Low Doubleword

31

32

N+4

High Doubleword

63

Kolejność bajtów 

(Byte order /  Endianness)

Format: Little / Big  Endian

0

7

A

8

15

A+1

bardziej

znacz

ą

cy bajt 

(High-order Byte)

Low Byte

High Byte

?

?

A

A+1

A+2

A

1

format: Little Endian

adres pami

ę

ci

(memory address)

A+1

A

format: Big Endian

High Byte

?

?

Low Byte

mniej

znacz

ą

cy bajt 

(Low-order Byte)

0

7

8

15

bardziej

znacz

ą

cy bajt 

(High-order Byte)

mniej

znacz

ą

cy bajt 

(Low-order Byte)

Cortex-M0
Kolejność zapisu bajtów 

(Endianness)

Cortex™-M0 Devices. Generic User Guide. 

ARM DUI 0497A, p.2-17

Cortex-Mx

taktuje pami

ęć

 jak liniowy zbiór bajtów ponumerowanych 

narastaj

ą

co od warto

ś

ci zerowej

Bajty

o numerach 0-3 przechowuj

ą

  pierwsze (32–bitowe) zapisane 

słowo, bajty o numerach 4-7 przechowuj

ą

 drugie (32–bitowe) zapisane 

słowo itp.

Kolejno

ść

zapisywanych  bajtów w pami

ę

ci zale

ż

y  od implementacji 

zastosowanej przez producenta mikrokontrolera

Stosowane dwa 

formaty zapisów

:

little-endian

(LPC1114–Cortex-M0, STM32L053–Cortex-M0+, ..)

byte-invariant big-endian

jako big-endian (zachowanie zgodno

ś

ci  z 

procesorami ARM7TDMI i ujednolicenie sposobu przesyłania  danych 
we wn

ę

trzu procesora)

Cortex-M0
Format  little endian

16

23

A+2

24

31

A+3

B3

najbardziej

znacz

ą

cy b

ajt 

(most significant byte)

(msbyte)

B0

?

B2

bardziej

znacz

ą

cy bajt 

0

7

A

8

15

A+1

B1

mniej

znacz

ą

cy b

ajt

B0

najmniej

znacz

ą

cy bajt 

(least significant byte)

(lsbyte)

A

A

1

adres pami

ę

ci

(memory address)

B1

A+1

B2

A+2

B3

A+3

?

A+4

Cortex™-M0 Devices. Generic User Guide. 

ARM DUI 0497A, p.2-18

format 

little-endian

lsbyte

msbyte

Implementacja przez 

producentów 

mikrokontrolerów

Cortex-M0
Format  byte-invariant  big-endian 

(BE8)

16

23

A+2

24

31

A+3

B0

najbardziej

znacz

ą

cy b

ajt 

(most significant byte)

(msbyte)

B1

bardziej

znacz

ą

cy bajt 

Cortex™-M0 Devices. Generic User Guide. 

ARM DUI 0497A, p.2-18

0

7

A

8

15

A+1

B2

mniej

znacz

ą

cy b

ajt

B3

najmniej

znacz

ą

cy bajt 

(least significant byte)

(lsbyte)

A

A

1

adres pami

ę

ci

(memory address)

A+1
A+2
A+3
A+4

B0

?

B1
B2
B3

?

w procesorach Cortex-Mx 
format big-endian zast

ą

piono 

formatem 

byte-invariant big-endian

lsbyte

msbyte

background image

8

sposób składowania  danych w pami

ę

ci  tak, by mogły by

ć

 efektywnie 

wykorzystane

procesory 

ARM

maj

ą

 

bajtowy

(8-bitowy), 

pół-słowowy

(16-bitowy) i 

słowowy

(32-bitowy) dost

ę

p do danych w pami

ę

ci 

1)

kompilator

procesorów 

ARM

rozmieszcza dane w pami

ę

ci wg. zasady:

2)

ARM Uporządkowanie danych

(Data alignment)

typ

liczba 

rozmieszczenie w pami

ę

ci

bajtów

char

1

od dowolnego adresu

short

2

od adresu podzielnego przez 2 bez reszty

float, int, long

4

od adresu podzielnego przez 4 bez reszty

long long, double

8

od adresu podzielnego przez 4 bez reszty

1)

Big and Little Endian Byte Addressing. App Note 61

ARM, 

DAI 0061A, p.4

2)

ARM

®

Compiler toolchain. Using the Compiler. Version 4.1. 

ARM DUI 0472C, p.6-43

ARM - efektywne programowanie w C

Struktury danych w pamięci 

(Little-Endian Memory System)

struct {

char

a;

int

b

;

char

c

;

short d

;

}

b

23 .. 16

wolne

d

7 ..  0

b

31 .. 24

wolne

d

15 ..  8

b

15 .. 8

wolne

wolne

b

7 .. 0

a

c

+0

+1

+2

+3

+0

+4

+8

Adres

uporz

ą

dkowanie zmiennych w pami

ę

ci

struct {

char

a;

char

c

short d

;

int

b

;

}

b

23 .. 16

d

7 ..  0

b

31 .. 24

d

15 ..  8

b

15 .. 8

b

7 .. 0

a

c

+0

+1

+2

+3

+0

+4

Adres

uporz

ą

dkowanie zmiennych w pami

ę

ci

efektywne wykorzystanie pami

ę

ci

A. Sloss, D. Symes, C. Wright: ARM System Developer’s 

Guide. Desining and Optimizing System Software. 

Morgan Kaufmann, 2004

USB Device  Descriptor
Example

code  struct  usb_st_device_descriptor  usb_device_descriptor =
{

0x12, 

/* Size of this descriptor in bytes 

*/

0x01, 

/* DEVICE descriptor type 

*/

0x1001, 

/* Binay Coded Decimal Spec. release 

*/

0x00, 

/* Class code assigned by the USB 

*/

0x00, 

/* Sub-class code assigned by the USB

*/

0x00, 

/* Protocol code assigned by the USB 

*/

0x08, 

/* Max packet size for EP0 (8, 16, 32, 64)

*/

0x

EB03

/* Vendor ID (

0x03EB

- Atmel)

*/

0x

0320

/* Product ID assigned by the manufacturer 

(

0x2003

- HID Keyboard)

*/

0x0001, 

/* Device release number 

*/

0x01,

/* Index of manu. string descriptor 

*/

0x02, 

/* Index of prod. string descriptor 

*/

0x03, 

/* Index of S.N. string descriptor 

*/

0x01 

/* Number of possible configurations 

*/

};

Problemy i pytania

1. Jakie typy danych okre

ś

laj

ą

 skróty: char, short, int, float ?

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 ?

4. Jaka jest kolejno

ść

 bajtów zmiennej typu word przy zapisie typu little-endian ?

5. Jaka jest kolejno

ść

 bajtów zmiennej typu word przy zapisie typu big-endian ?

6. Jaki jest wpływ uporz

ą

dkowania danych w pami

ę

ci na szybko

ść

 działania CPU ?

7. Jakie fazy mo

ż

na wyró

ż

ni

ć

 w trakcie wykonywania rozkazu przez procesor ?

8. Na czym polega przetwarzanie sekwencyjne (skalarne) ?

9. Jakie s

ą

 wady i zalety przetwarzania sekwencyjnego ?

10. Na czym polega przetwarzanie potokowe (strumieniowe) ?

11. Jakie s

ą

 wady i zalety przetwarzania potokowego ?

12. Jakie typy konfliktów wyst

ę

puj

ą

 przy przetwarzaniu potokowym ?

13. Co oznaczaj

ą

 poj

ę

cia: CISC oraz RISC ?

14. Jakie s

ą

 wady i zalety procesorów typu CISC ?

15. Jakie s

ą

 wady i zalety procesorów typu RISC ?