background image

1

Podstawy techniki 

mikroprocesorowej 

ETEW006

Struktura mikroprocesora i 

mikrokontrolera. Architektury 

von Neumanna i harwardzka

Andrzej Stępień

Katedra Metrologii Elektronicznej i Fotonicznej

Dekoder Instrukcji i Licznik Rozkazów

Jednostka 

Arytmetyczno–

–Logiczna

Wewn

ę

trzna magistrala adresowa i danych

Rejestry

Robocze

Licznik

Rozkazów

Licznik

Rozkazów

Dekoder

Instrukcji

Dekoder

Instrukcji

Rejestr

Statusowy

Bufor

Danych

Wewn

ę

trzna

Danych

Wewn

ę

trzna

Pami

ęć

Danych

Wewn

ę

trzna

Programu

Wewn

ę

trzna

Pami

ęć

Programu

Bufor

Bufor

Adresowy

Zasilanie

Układy

Taktuj

ą

ce

CLK
???

Wska

ź

nik

Stosu

Kontroler
Przerwa

ń

Zewn

ę

trzne

Przerwania

Licznik rozkazów

(Program 

Counter Instruction Pointer, 

Register) – licznik adresuj

ą

cy 

pami

ęć

 kodu programu 

(wykonywanego programu)

dane

Zewn

ę

trzna

Magistrala

Danych

Zewn

ę

trzna

Magistrala

Adresowa

Rejestr dekoduj

ą

cy  instrukcje

(Instruction Decoder) – blok 

funkcjonalny odpowiadaj

ą

cy za dekodowanie  i synchronizacj

ę

 

wykonywanych instrukcji (programu)

Magistrale

Jednostka 

Arytmetyczno–

–Logiczna

Wewn

ę

trzna magistrala danych

Rejestry

Robocze

Licznik

Rozkazów

Licznik

Rozkazów

Instrukcji

Dekoder

Instrukcji

Rejestr

Statusowy

Bufor

Danych

Bufor

Adresowy

Zewn

ę

trzna

Magistrala

Danych

Zewn

ę

trzna

Magistrala

Adresowa

• wewn

ę

trzna

(Internal Bus- do wymiany informacji w 

wewn

ę

trznej strukturze mikroprocesora, 

mikrokontrolera

• zewn

ę

trzna

(External Bus- do komunikacji 

mikroprocesora, mikrokontrolera z układami 
zewn

ę

trznymi, np. pami

ę

ciami, układami wej

ś

ciowo-

wyj

ś

ciowymi; magistrala zewn

ę

trzna jest oddzielona 

od magistrali wewn

ę

trznej za po

ś

rednictwem buforów; 

Magistrala

(Bus) - to zespół linii, przewodów  słu

żą

cych 

do przesyłania informacji o tym samym charakterze oraz 
układy steruj

ą

ce przepływem informacji:

Zasilanie

Magistrala adresowa i danych

Jednostka 

Arytmetyczno–

–Logiczna

Wewn

ę

trzna magistrala danych

Rejestry

Robocze

Licznik

Rozkazów

Licznik

Rozkazów

Instrukcji

Dekoder

Instrukcji

Rejestr

Statusowy

Bufor

Danych

Bufor

Adresowy

Zewn

ę

trzna

Magistrala

Danych

Zewn

ę

trzna

Magistrala

Adresowa

Magistrala adresowa

(Address Bus) -

przesyłanie adresów pami

ę

ci lub układów 

wej

ś

ciowo-wyj

ś

ciowych:

– jednokierunkowa, 2-stanowa

– jednokierunkowa, 3-stanowa ze stanem 

wysokiej impedancji (3-state impedance) 
w trybie HOLD lub DMA

Magistrala danych

(Data Bus) - przesyłanie 

danych do/z pami

ę

ci lub układów wej

ś

ciowo-

wyj

ś

ciowych (dwukierunkowa, 3-stanowa ze 

stanem wysokiej impedancji)

Zasilanie, Taktowanie, Sterowanie ..

Jednostka 

Arytmetyczno–

–Logiczna

Wewn

ę

trzna magistrala adresowa i danych

Rejestry

Robocze

Licznik

Rozkazów

Licznik

Rozkazów

Dekoder

Instrukcji

Dekoder

Instrukcji

Rejestr

Statusowy

Bufor

Danych

Zewn

ę

trzna

Magistrala

Danych

Zewn

ę

trzna

Magistrala

Adresowa

Wewn

ę

trzna

Danych

Wewn

ę

trzna

Pami

ęć

Danych

Wewn

ę

trzna

Wewn

ę

trzna

Pami

ęć

Programu

Bufor

Bufor

Adresowy

Zasilanie

Układy

Taktuj

ą

ce

CLK

RD, WR

???

Wska

ź

nik

Stosu

Kontroler
Przerwa

ń

Zewn

ę

trzne

Przerwania

Magistrala steruj

ą

ca

(

Control Bus

) - sterowanie pami

ę

ci i 

układów wej

ś

ciowo-wyj

ś

ciowych, np. zapis/odczyt do/z 

pami

ę

ci/układów wej

ś

ciowo-wyj

ś

ciowych, chwilowe 

wstrzymanie pracy mikroprocesora lub mikrokontrolera, 
zgłoszenie przerwania itp.:

– jednokierunkowa, 2-stanowa

– jednokierunkowa, 3-stanowa w trybie HOLD / DMA

Magistrala zasilaj

ą

ca

(

Power Bus

) - rozdzielenie  zasilania 

ze wzgl

ę

du  na redukcj

ę

 zakłóce

ń

 i zmniejszenie obci

ąż

enia 

pr

ą

dowego 

ś

cie

ż

ek zasilaj

ą

cych na płytce drukowanej; ró

ż

ne 

napi

ę

cia rdzenia procesora i układów we/wy

Rejestry Robocze

Jednostka 

Arytmetyczno–

–Logiczna

Wewn

ę

trzna magistrala danych

Rejestry

Robocze

Licznik

Rozkazów

Licznik

Rozkazów

Dekoder

Instrukcji

Dekoder

Instrukcji

Rejestr

Statusowy

Bufor

Danych

Bufor

Bufor

Adresowy

Zewn

ę

trzna

Magistrala
Danych

Zewn

ę

trzna

Magistrala
Adresowa

Rejestr Roboczy

(Working Register) – wewn

ę

trzny 

układ pami

ę

ciowy mikroprocesora, blok 

funkcjonalny zbudowany z przerzutników 
(najcz

ęś

ciej typu D) słu

żą

cy do chwilowego 

zapami

ę

tywania danych i wyników 

przetwarzania  lub wykonywania  operacji na 
swojej zawarto

ś

ci; liczba przerzutników 

wyznacza liczb

ę

 bitów rejestru

Register File

– zestaw rejestrów 

(an array of processor registers)

Register Bank

– rejestry grupowane w zestawy 

(banki), np. w C51 4 banki rejestrów,
w ARM7 banki rejestrów zale

ż

ne od trybu pracy

background image

2

Bank rejestrów  

(Register Bank)

zawiera okre

ś

lon

ą

 liczb

ę

 

(bank, stron

ę

, grup

ę

, tablic

ę

rejestrów

(np. 8 rejestrów w MCS51, 5 rejestrów w ARM7/9 lub Cortex-Ax)

aktywny

(w danej chwili)

mo

ż

e by

ć

tylko jeden bank 

(strona, grupa, tablica)

brak dodatkowych instrukcji 

(w zestawie  instrukcji procesora – ISA

Instruction Set Architecture)

przy dost

ę

pie do wybranego banku rejestrów

w zestawie 

instrukcji procesora 

(

ISA

: Instruction Set Architecture) mog

ą

 

wyst

ą

pi

ć

 

dodatkowe instrukcje

do 

zmiany

aktywnego 

banku rejestrów

dane

mog

ą

 by

ć

 

zapisywane

lub 

odczytywane tylko

aktywnego banku

rejestrów

; mog

ą

 istnie

ć

  instrukcje lub sposoby (wynikaj

ą

ce z architektury 

procesora) do przenoszenia danych z jednego banku do drugiego

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

C500 Architecture and Instruction Set.  User’s  Manual. Infineon, July 2000

UM10120. LPC2131/2/4/6/8 User manual. NXP, Rev. 4 — 23 April 2012

MCS51
Banki  rejestrów

128 BYTES 

ON-CHIP

DATA MEMORY,  

STACK, 

4 REG. BANKS  R[7:0]

DATA

IDATA

00h

7Fh

R0

R1

R6

R7

00h

01h

06h

07h

02h .. 05h

R0

R1

R6

R7

08h

09h

0Eh

0Fh

0Ah .. 0Dh

R0

R1

R6

R7

10h

11h

16h

17h

12h .. 15h

R0

R1

R6

R7

18h

19h

1Eh

1Fh

1Ah .. 1Dh

BIT0..7

20h

RB0

RB1

RB2

RB3

RB3

RB2

RB1

RB0

21h .. 7Fh

bank RB0 wybrany po 

zerowaniu procesora 

(RESET)

C500 Architecture and Instruction Set. 
User’s  Manual. 
Infineon, July 2000

numer

banku

ATmega 
Rejestry  ogólnego  przeznaczenia

ATmega8/8L. 8-bit with 8KBytes

In-System Programmable Flash. Atmel, Rev.2486AA–AVR–02/2013

R0
R1
R2

.....

R13
R14
R15
R16
R17

.....

R26
R27

R28
R29

R30
R31

Rejestr–X

Rejestr–Y

Rejestr–Z

ka

ż

dy rejestr ma przypisany 

adres pami

ę

ci danych

rejestry s

ą

 mapowanie 

bezpo

ś

rednio do pierwszych 

32 bajtów w przestrzeni 
danych u

ż

ytkownika (Data 

Space)

nie jest to fizyczna pami

ęć

 

SRAM procesora

; taka 

organizacja zapewnia du

żą

 

elastyczno

ść

 w dost

ę

pie do 

rejestrów

Adr = 0x00

0x01
0x02

0x0D
0x0E
0x0F

0x10
0x11

0x1A
0x1B

0x1C
0x1D
0x1E

0x1F

R26

R27

R28

R29

R30

R31

rejestry R26 .. R31 

pełni

ą

dodatkowe 

funkcje 

s

ą

 stosowane jako 

16-bitowe rejestry 
wska

ź

nikowe 

w trybie 

po

ś

redniego 

adresowania przestrzeni 
danych

ATmega8 
Pamięć 
danych

ATmega8/8L. 8-bit with 8KBytes

In-System Programmable Flash. Atmel, Rev.2486AA–AVR–02/2013, fig 8

$0000
$0001

.....

$001E
$001F

Bank rejestrów

(Register file)

R0
R1

.....

R30
R31

Rejestry we/wy

(I/O Registers)

$0020
$0021

.....

$005E
$005F

$00
$01

.....

$3E
$3F

Przestrze

ń

 pami

ę

ci danych

(Data Address Space)

Wewn

ę

trzna pami

ęć

 SRAM

(Internal SRAM)

$0060
$0061

.....

$045E
$045F

Figure 8. Mapa 

pami

ę

ci 

danych
(Data 
Memory 
Map)

1Kbyte Internal 

SRAM

ARM7  Rejestry  i  wyjątki 

(Exceptions)

User

System

Supervisor

Abort

Undefined   Interrupt

Fast

Interrupt

tryb uprzywilejowany (Privileged Modes)

tryby wyj

ą

tków (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

SPSR_svc

SPSR_abt

SPSR_und

SPSR_irq

SPSR _fiq

R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13 

(SP)

R14 

(LR)

re

je

s

tr

y

n

ie

b

a

n

k

o

w

a

n

e

re

je

s

tr

y

b

a

n

k

o

w

a

n

e

PC

CPSR

S. Furber: ARM System-on-chip architecture. 
Addison-Wesley Professional, 2nd Edition, 2000 

Rejestry  Cortex-A8

User

System

Super-

visor

Abort

Unde-

fined

Interrupt

Fast

Interrupt

tryb uprzywilejowany (Privileged Modes)

tryby wyj

ą

tków (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

SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR _fiq

R0

R1
R2
R3

R4
R5

R6

R7

R8
R9

R10
R11
R12

R13

(Stack Pointer)

R14  

(Link Register)

u

n

b

a

n

k

e

d

 

re

g

is

te

rs

b

a

n

k

e

d

 

re

g

is

te

rs

PC 

(Program Counter)

CPSR 

(Current Program Status Register)

Saved Program

Status Register

tryb 

ARM

tryb

Thumb

Cortex™-A8. Technical Reference Manual. 

Revision: r3p2. ARM, DDI 0344K, fig. 2-10

Secure

monitor

R14_mon

R13_mon

SPSR_mon

efekt dwóch stanów pracy: 
– bezpiecze

ń

stwa 

(Secure state)

– braku bezpiecze

ń

stwa 

(Nonsecure state)

background image

3

Cortex

M

Rejestry ogólnego przeznaczenia

rejestry ogólnego przeznaczenia rdzenia

(General Purpose  ARM Core Register)

Link Register (LR)

Program Counter (PC)

Stack 

Pointer (SP)

ARMv6-M Architecture Reference Manual. 

ARM DDI 0419C, September 2010

ARMv7-M Architecture Reference Manual. 

ARM DDI 0403D, Errata 2010_Q3

rejestry 

(Low

Register)

rejestry

(High

Register)

R0
R1
R2
R3
R4
R5
R6
R7
R8
R9

R10
R11
R12

R13 (PSP)

R14

PC

R13 (MSP)

rejestry dost

ę

pne przez 

wszystkie 16-bitowe 

instrukcje

Thumb 

wszystkie 32-bitowe

instrukcje

Thumb-2

p

rzy

p

a

d

k

o

w

e

 w

a

rt

o

ś

c

re

je

s

tr

ó

w

 p

o

 s

ta

n

ie

 R

E

S

E

T

rejestry dost

ę

pne przez 

wszystkie 32-bitowe 

instrukcje

Thumb-2

nie wszystkie 16-bitowe

instrukcje

Thumb

xPSR

PRIMASK

FAULTMASK

BASEPRI

CONTROL

Program status 

register

Interrupt 

mask 

registers

Control register

Special registers

Cortex

M

Rejestry wskaźnika stosu  

(Stack Pointer)

MSP

PSP

Main Stack Register

(SP_main po Reset)

Process Stack Register

(SP_process)

Link Register (LR)
Program Counter (PC)

Stack Pointer (SP)

ARMv6-M Architecture Reference Manual. 

ARM DDI 0419C, September 2010

ARMv7-M Architecture Reference Manual. 

ARM DDI 0403D, Errata 2010_Q3

R0
R1
R2
R3
R4
R5
R6
R7
R8
R9

R10
R11
R12

R14

PC

2 najmniej znacz

ą

ce bity wska

ź

nika stosu 

(MSP lub PSP) s

ą

 zawsze równe 0, co 

oznacza, 

ż

e s

ą

 zawsze  wyrównane  do słowa 

(

word aligned

)

R13 (PSP)

R13 (MSP)

rejestry ogólnego przeznaczenia rdzenia

(General Purpose  ARM Core Register)

rejestry 

(Low

Register)

rejestry

(High

Register)

Rejestry — ALU — Status
Dodawanie dziesiętne: 

3

8

6

4

10

2

Krok 1

dodawanie jedno

ś

ci

ALU

4-bit

BCD 

reg_1=

8

reg_2=

4

wynik=

2

przeniesienie

=

1

Krok 2

dodawanie dziesi

ą

tek

ALU

4-bit

BCD 

reg_1=

3

reg_2=

6

wynik=

0

przeniesienie

=

1

najcz

ęś

ciej

Akumulator

status
(setki)

status

(dziesi

ą

tki)

Rejestry Robocze, Statusowy i ALU

Jednostka 

Arytmetyczno–

–Logiczna

Wewn

ę

trzna magistrala danych

Rejestry

Robocze

Licznik

Rozkazów

Licznik

Rozkazów

Instrukcji

Dekoder

Instrukcji

Rejestr

Statusowy

Bufor

Danych

Bufor

Adresowy

Zewn

ę

trzna

Magistrala
Danych

Zewn

ę

trzna

Magistrala
Adresowa

Rejestry Robocze (Working Registers)

– zespół 

przerzutników przechowuj

ą

cych  argumenty 

operacji wykonywanych przez jednostk

ę

 

arytmetyczno-logiczn

ą

, argumenty instrukcji itp. 

ALU (Arithmetic Logic Unit)

– jednostka 

wykonuj

ą

ca podstawowe  operacje arytmetyczno-

logiczne, np. dodawanie (+) i odejmowanie 
arytmetyczne (–), negacj

ę

 arytmetyczn

ą

, iloczyn i 

sum

ę

 logiczn

ą

 (AND, OR), sum

ę

 logiczn

ą

 z 

wył

ą

czno

ś

ci

ą

 (XOR), negacj

ę

 logiczn

ą

 (NOT)

przesuni

ę

cia (SHIFT

), 

obroty

(

ROTATE) itp. 

Rejestr Statusowy (Status Register)

– rejestr z 

1-bitowymi wynikami operacji wykonywanych 
przez jednostk

ę

 arytmetyczno-logiczn

ą

np. C, Z, N, V itp. 

Układ arytmrtyczno-logiczny

(Arithmetic 

&

Logic Unit)

model ALU 

(Arithmetic & Logic Unit) zaproponowany 

w 1945 roku przez Johna von Neumanna przy  spisie 
zało

ż

e

ń

 dla nowego komputera EDVAC

układ cyfrowy do wykonywania

:

operacji arytmetycznych  (dodawanie, odejmowanie, mno

ż

enie, dzielenie  ..) 

operacji logicznych (and, or, xor) pomi

ę

dzy dwiema liczbami 

operacji jednoargumentowych  takie jak przesuni

ę

cie bitów (shift, rotate)

negacja logiczna (not) lub arytmetyczna 

wykonywanie działa

ń

 na liczbach całkowitych bez znaku (kod binarny) lub 

liczbach całkowitych ze znakiem (kod uzupełnienia do dwóch, U2)

jednostka zmiennoprzecinkowa (Floating Point Unit) równie

ż

 wykonuje 

operacje arytmetyczne na dwóch warto

ś

ciach, jednak s

ą

 to liczby w 

reprezentacji zmiennoprzecinkowej, pojedynczej precyzji (zwykle standard 
IEEE 754)

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

http://pl.wikipedia.org/wiki/Jednostka_arytmetyczno-logiczna

UM10398. LPC111x/LPC11Cxx User manual. NXP, Rev. 12.3 — 10 June 2014

Akumulator

MCS51

:

ACC

– adres akumulatora (0xE0)

A – skrót akumulatora w mnemonikach (np. MOV A, #12h) 

w akumulatorze jeden z argumentów i wynik operacji:

– arytmetycznych: dodawania, odejmowania, mno

ż

enia, dzielenia, 

– operacji logicznych: and, or, xor, not, przesuni

ę

cia, obrotu, wymiany

Brak akumulatora

:

AVR, ATmega

(8-bitowy)

MSP430

(16-bitowy)

ARM7/9

Cortex-A/R/M

(32- i 64-bitowy)

C500 Architecture and Instruction Set.  User’s  Manual. Infineon, July 2000

background image

4

Rejestr Statusowy  

[1#2]

Jednostka 

Arytmetyczno–

–Logiczna

Wewn

ę

trzna magistrala danych

Rejestry

Rejestry

Robocze

Licznik

Rozkazów

Licznik

Rozkazów

Dekoder

Instrukcji

Dekoder

Instrukcji

Rejestr

Statusowy

Bufor

Danych

Bufor

Bufor

Adresowy

Zewn

ę

trzna

Magistrala
Danych

Zewn

ę

trzna

Magistrala
Adresowa

PSW (Program Status Word Register

– rejestr 

stanu (statusu) procesora po wykonanej operacji 
zawieraj

ą

cy 

znaczniki

(

Flags

), 1-bitowe 

informacje o przebiegu lub wyniku 
wykonywanych operacji, np. dla 8-bitowych liczb:

(Carry)

– przeniesienie, przekroczenie zakresu liczb 

całkowitych bez znaku (np.: 0 .. 255)

AC (Auxiliary Carry)

– przeniesienie połówkowe, 

stosowane przy korekcji dziesi

ę

tnej (BCD)

OV (Overflow)

– nadmiar, przekroczenie zakresu liczb 

całkowitych ze znakiem (np.: 

128 .. +127)

(Zero)

– warto

ść

 zerowa

(Parity)

– parzysto

ść

(Sign)

– znak liczby, rozró

ż

nienie liczb dodatnich i 

ujemnych zapisanych w kodzie U2

Rejestr Statusowy  

[2#2]

RS1 RS0

OV

F1

P

CY AC

F0

MCS51

S

V

N

Z

C

I

T

H

ATmega

ATmega8/8L. 8-bit with 8KBytes 
In-System Programmable Flash.
Atmel, Rev.2486Z–AVR–02/11, p.11

C500 Architecture and Instruction Set. 
User’s  Manual. 
Infineon, July 2000, p.2-3

CPU

OFF GIE

N

Z

C

SCG

1

SCG

0

OSC

OFF

MSP430

V

Reserved

MSP430x4xx Family. 
User’s Guide
TI, SLAU056K, 
December 2012, p.3-6

N Z C V

27

6

23

5

0

Exception 

number

24

31 30 29 28

Res

Reserved

T

Cortex™-

M0

(-M0+)

Devices. Generic User Guide. ARM DUI 0497A, 8 October 2009, p.2-4

Architektura  komputera

Architektura von Neumana  

[1#5]

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

J. Biernat: Architektura komputerów. Oficyna Wydawnicza Politechniki Wrocławskiej, 2001

Najstarsze maszyny obliczeniowe 

(komputery) miały 

stały kod 

(zasad

ę

działania, np. kalkulator:

wykonywanie podstawowych  operacji matematycznych

wykluczone inne zastosowania, np. jako edytor tekstu, konsola do gier

Zmiana zasady działania to 

komputery przechowuj

ą

ce program

:

b

ę

d

ą

cy uporz

ą

dkowanym, szczegółowym  opisem wykonywanych oblicze

ń

zło

ż

ony  z zestawu instrukcji przechowywanych  w pami

ę

ci (zestaw instrukcji 

tworzy program działania)

Matematyk 

Alan Turing 

(University of Cambridge) przedstawił w London 

Mathematical Society (1936) koncepcj

ę

 

uniwersalnej maszyny 

obliczeniowej 

(znana jako Uniwersalna  maszyna Turinga) 

nieograniczonymi mo

ż

liwo

ś

ciami, 

zasobami

(pami

ę

ci

ą

)

zawieraj

ą

cymi 

zarówno instrukcje oraz dane

John von Neumann poznał Alana Turinga w 1935 w University of Cambridge

Architektura  komputera
Architektura von Neumana  

[2#5]

Projekt ENIAC

, nad którym pracowali 

J. Presper Eckert 

oraz 

John

Mauchly

w Moore School of Electrical Engineering (University of 

Pennsylvania) zakładał 

jednolity sposób pami

ę

tania kodu programu i 

danych

, niezale

ż

nie  od koncepcji Alana Turinga.

John von Neumann

, który był zaanga

ż

owany  w Projekcie Manhattan w 

Los Alamos National Laboratory (projekt bomby atomowej wymagał 
ogromnych ilo

ś

ci  oblicze

ń

)

doł

ą

czył do J. P. Eckert’a oraz J.

Mauchly’ego

.

w lecie 1944 roku 

Herman Heine Goldstine 

(matematyk i współtwórca 

komputera ENIAC)

w nazwał niedoko

ń

czony projekt koncepcj

ą

 von 

Neumanna

, ku konsternacji Eckert’a i Mauchly'ego; dokument ten został 

przeczytany przez dziesi

ą

tki kolegów  von Neumann’a w Ameryce i 

Europie, a 

nazwa zasady działania pozostała do dzisiaj

.

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

J. Biernat: Architektura komputerów. Oficyna Wydawnicza Politechniki Wrocławskiej, 2001

Architektura  komputera
Architektura von Neumana  

[3#5]

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

Pami

ęć

 (Memory) zawiera 

kod programu i dane (oblicze

ń

)

Architektura  komputera
Architektura von Neumana  

[4#5]

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

http://pl.wikipedia.org/wiki/Architektura_von_Neumanna

Komputer o architekturze von Neumann’a

tworz

ą

:

pami

ęć

 komputerowa 

(Memory) przechowuj

ą

ca 

instrukcje programu oraz dane programu; ka

ż

da 

komórka pami

ę

ci ma unikatowy identyfikator 

nazywany jej adresem

jednostka steruj

ą

ca 

(Control Unit) 

odpowiedzialna  za pobieranie danych i instrukcji 
z pami

ę

ci oraz ich sekwencyjne przetwarzanie

jednostka arytmetyczno-logiczna 

(Arithmetic

Logic Unit) odpowiedzialna za wykonywanie 
podstawowych  operacji arytmetycznych

urz

ą

dzenia wej

ś

cia/wyj

ś

cia 

(Input / Output) 

słu

żą

ce do interakcji z operatorem

background image

5

Architektura  komputera
Architektura von Neumana  

[5#5]

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

http://pl.wikipedia.org/wiki/Architektura_von_Neumanna

System komputerowy 

zbudowany w oparciu o 

architektur

ę

 

von Neumanna 

powinien:

– mie

ć

 

sko

ń

czon

ą

i funkcjonalnie pełn

ą

 

list

ę

rozkazów 

(Instruction Set Architecture)

– mie

ć

 mo

ż

liwo

ść

 

wprowadzenia programu do 

systemu komputerowego poprzez urz

ą

dzenia 

zewn

ę

trzne

i jego 

przechowywanie w pami

ę

ci 

w sposób identyczny jak danych

– dane i instrukcje 

w takim systemie powinny by

ć

 

jednakowo dost

ę

pne dla procesora

– informacja jest tam przetwarzana  dzi

ę

ki 

sekwencyjnemu odczytywaniu instrukcji z 
pami

ę

ci komputera i wykonywaniu 

tych 

instrukcji

w procesorze.

Architektura von NEUMANNa

albo Kod albo Dane

Data & Addr Bus

Bufor

Danych

Bufor

Adresowy

Licznik

Licznik

Rozkazów

addr_1

addr_1+1

addr_1+2

addr_2

addr_2+1

addr_2+2

addr_3

addr_3+1

addr_3+2

CPU

Pami

ęć

Danych i Programu

instr

Dane

Adres

Danych lub Instrukcji

MEM

RD

MEM

WR

data

In

s

tr

u

k

c

je

NAPRZEMIENNY  DOST

Ę

DO DANYCH  LUB INSTRUKCJI

Dekoder 

Instrukcji

Architektura von NEUMANN’a
Pamięć i układy we/wy

addr1

addr2

Pami

ęć

 

programu 

(Program

Memory)

Mapowanie 

układów we/wy 

w przestrzeni pami

ę

ci 

(Memory Mapped I/O)

addr1

addr2

addr3

Data 

&

Program

Memory

Układy

we / wy

(I/O)

Pami

ęć

 

Danych

(Data

Memory)

addr??????

Układy

we / wy

(I/O)

ż

ne

instrukcje

??????

ż

ne

zasady

dost

ę

pu

??????

Architektura von NEUMANNa

Wady

Zalety

addr1

addr2

addr3

Pami

ęć

Danych 

i

Programu

Urz

ą

dzenia

we/wy

te same magistrale dla kodu i danych

(prostota układów 

adresuj

ą

cych i dekoduj

ą

cych):

adresowa (Address Bus)

danych (Data Bus)

steruj

ą

ca (WR#/MemWr#, RD#/MemRd#, OE#/CS# itp.)

zwykle, 

liniowe adresowanie

przestrzeni pami

ę

ci

warto

ść

 adresu decyduje o dost

ę

pie do pami

ę

ci

programu, danych lub układów we/wy

brak ró

ż

nych instrukcji

przy dost

ę

pie do kodu programu 

(ROM/Flash)

i danych (RAM)

uproszczona struktura kompilatora

mo

ż

liwo

ść

 

uruchomienia

programu 

dynamicznie

zapisanego w pami

ę

ci RAM (danych, szybko

ść

 RAM – Flash)

mo

ż

liwo

ść

 

wykonania samomodyfikuj

ą

cego

si

ę

 

kodu

programu, np. szyfrowanie kodu

Architektura von-NEUMANN’a  
Cortex-M0  

[NXP LPC1114]

CPU

Data

Addr

Pami

ęć

 programu

(Program Memory

32KB

MAX

on-chip Flash)

0x1000 0000

0x0000 0000

Zarezerwowane (Reserved)

32-bity

32-bity

Zarezerwowane (Reserved)

0x4000 0000

0x5000 0000

0xE000 0000

UM10398. LPC111x/LPC11Cxx User manual. 

NXP, Rev. 12.3 — 10 June 2014, fig. 7

0x0001 0000

0x1000 2000

Zarezerwowane (Reserved)

1 GB

0x4008 0000

Zarezerwowane (Reserved)

0x5020 0000

Zarezerwowane (Reserved)

Własna magistrala peryferii

(PPB Private Peripheral Bus)

0xE010 0000

Zarezerwowane (Reserved)

0xFFFF FFFF

Pami

ęć

 danych

(Data Memory – 8KB

MAX

SRAM)

Peryferia typu APB

(APB Peripherals)

Peryferia typu AHB

(AHB Peripherals)

4 GB

Rdze

ń

 (core): NVIC, SysTick, 

System Control Block;
(only word)

AHB – Advanced High-performance Bus
APB – Advanced Peripheral Bus

pozostałe peryferia

GPIO PIO3..PIO0

0x1FFF 0000

0x1FFF 4000

16KB BootLoader

Przetwarzanie
sygnałów

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

Pobranie dwóch argumentów 

(współczynniki i warto

ś

ci 

wej

ś

ciowe/wyj

ś

ciowe)

w jednym cyklu instrukcji

instrukcje dodawania i mno

ż

enia

obsługa buforów (buforów pier

ś

cieniowych)

sprz

ę

towe opó

ź

nienia

Architektura Harvard

– fizyczne 

rozdzielenie  pami

ę

ci i dost

ę

pu 

do instrukcji oraz danych  

(efektywny dost

ę

p do pami

ę

ci)

Pami

ęć

instrukcji

Pami

ęć

danych

Układy 

we/wy

ALU

Jednosta
steruj

ą

ca

współczynniki w 

kodzie programu

(ROM)

dane 

wej

ś

ciowe/wyj

ś

ciowe w 

pami

ę

ci danych (RAM)

y[n]

=     

a[k]

x[n–k]

+     

b[j]

y[n–j]

Σ

Σ

k

j

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

J. Biernat: Architektura komputerów. Oficyna Wydawnicza Politechniki Wrocławskiej, 2001

background image

6

Architektura HARVARD

i Kod i Dane

Internal Data Bus

Dekoder

Dekoder

Instrukcji

Bufor

Adresowy

Licznik

Licznik

Rozkazów

CPU

obliczanie

adresu

pami

ę

ci danych

Internal Address Bus

Bufor

Adresowy

Bufor

Danych

RAM

RD

RAM

WR

addr_2

addr_2+1

addr_2+2

Pami

ęć

Danych

Dane

Adres

Danych

Bufor

Instrukcji

ROM

RD

ROM

WR

addr_1

addr_1+1

addr_1+2

Pami

ęć

Programu

Instrukcje

Adres

Instrukcji

data

instr

RÓWNOCZENY  DOST

Ę

DO DANYCH  I INSTRUKCJI

Architektura  Harvard

ż

ne magistrale pami

ę

ci programu i danych

Pami

ęć

programu

(Program

Memory)

Pami

ęć

Danych

(Data

Memory)

wykorzystuje 

fizycznie rozdzielne pami

ę

ci

instrukcji (kodu) i danych

ka

ż

dy 

rodzaj pami

ę

ci 

jest 

dost

ę

pny

za po

ś

rednictwem 

innej magistrali

instrukcje

dane

(argumenty) mog

ą

 by

ć

 

pobrane

jednocze

ś

nie, 

równolegle

CPU

Instr

Addr

Data

Addr

Architektura  Harvard
Pamięć  i  układy we/wy

addr1

addr2

addr3

addr4

rozdzielone układy we/wy

Pami

ęć

Programu

lub

pami

ęć

danych

addr5

addr6

Układy

we/wy

addr7

addr8

rozdzielone pami

ę

ci

Pami

ęć

programu

(Program

Memory)

Pami

ęć

Danych

(Data

Memory)

Architektura  HARVARD
Wady i Zalety

CPU

Instr

Addr

Data

Addr

rozdzielone magistrale dla kodu i danych

(zło

ż

ona struktura układów 

adresuj

ą

cych i dekoduj

ą

cych), 

du

ż

a szybko

ść

 

wykonywanego

programu 

ze 

wzgl

ę

du

na równoczesny dost

ę

p do kodu i danych

łatwo

ść

 implementacji przetwarzania potokowego

ż

ne instrukcje

przy dost

ę

pie do kodu programu (ROM/Flash) i danych (RAM)

nie

ma mo

ż

liwo

ś

ci 

uruchomienia

programu 

dynamicznie

zapisanego w pami

ę

ci 

RAM (danych)

zerowa warto

ść

 adresu kodu (np. 24-bitowe adresowanie) nie jest tym samym co 

zerowa warto

ść

 adresu danych (np. 8-bitowe adresowanie)

trudno

ś

ci z implementacj

ą

,

du

ż

a liczba wyprowadze

ń

Pami

ęć

programu

(Program

Memory)

Pami

ęć

Danych

(Data

Memory)

Zmodyfikowana Architektura
HARVARD  

[1#4]

Pami

ęć

 kodu 

(instrukcje)

i pami

ęć

 danych zajmuj

ą

 ró

ż

n

ą

 przestrze

ń

 

adresow

ą

 ale wykorzystuj

ą

 wspólne magistrale adresow

ą

 i danych

Zawarto

ść

 pami

ę

ci kodu i pami

ę

ci danych jest w ró

ż

ny, sprz

ę

towy 

sposób dost

ę

pna do jednostki centralnej CPU 

(cecha konstrukcyjna 

CPU); 

instrukcje i dane s

ą

 dost

ę

pne w ró

ż

ny sposób

Zmodyfikowana architektura Harvard

, odmiana ‚czystej’ architektury 

Harvard, 

umo

ż

liwia dost

ę

p do zawarto

ś

ci pami

ę

ci kodu 

(instrukcji)

tak, jak gdyby były to 

dane

(wi

ę

kszo

ść

  współczesnych komputerów, 

które wykorzystuj

ą

  architektur

ę

 Harvard w rzeczywisto

ś

ci korzysta ze 

zmodyfikowanej  architektury Harvard), np. 

Cortex-M3

(architektura 

ARMv7-M)

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

ARM

®

Developer Suite. Developer Guide. ARM DUI 0056D, November 2001, Version 1.2

Zmodyfikowana Architektura
HARVARD  

[2#4]

Pami

ęć

Kodu

Programu

(Flash)

Pami

ęć

Danych

(RAM)

P0

P2

adres

bufor

ALE

CPU

MCS51

PSEN#

RD#

WR#

A

15..8

A

7..0

D

7..0

adres/dane

Pami

ęć

 kodu 

(instrukcje)

i pami

ęć

 danych zajmuj

ą

 ró

ż

n

ą

 przestrze

ń

 

adresow

ą

 ale wykorzystuj

ą

 wspólne magistrale adresow

ą

 i danych:

oznacza ró

ż

ne typy pami

ę

ci, 

ż

ne warto

ś

ci (struktury 

binarne)

w strukturze von NEUMANNa i 
zmodyfikowanej strukturze 
HARVARD  interpretacja 
zawarto

ś

ci (struktury binarnej) 

zerowego adresu w pami

ę

ci 

kodu i w pami

ę

ci danych zale

ż

wył

ą

cznie od realizowanego 

programu (zwykle wymaga 
u

ż

ycia  innych instrukcji, np. 

MOVC i MOVX w MCS51)

w strukturze HARVARD  zerowy adres w pami

ę

ci kodu i w pami

ę

ci danych

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

ARM

®

Developer Suite. Developer Guide. ARM DUI 0056D, November 2001, Version 1.2

background image

7

Zmodyfikowana Architektura
HARVARD  

[3#4]

Zawarto

ść

 pami

ę

ci kodu i pami

ę

ci danych jest w ró

ż

ny, sprz

ę

towy 

sposób dost

ę

pna przez jednostk

ę

 centraln

ą

 CPU:

w strukturze HARVARD  rozdzielony  sposób dost

ę

pu do obu typów 

pami

ę

ci

w zmodyfikowanej strukturze HARVARD 

rozdzielony dost

ę

p jedynie 

do pami

ę

ci podr

ę

cznej 

(I-Cache, D-Cache)

oraz TCM

ARM

(Tightly 

Coupled Memory

1

– pami

ę

ci konfigurowalnej, poł

ą

czonej, 

ś

ci

ś

le 

powi

ą

zanej ale jednolity dla pozostałych pami

ę

ci

równoczesny dost

ę

p do pami

ę

ci kodu 

(instrukcje) 

danych

(dane), 

wi

ę

ksza szybko

ść

 realizacji programu

z punktu widzenia programisty zmodyfikowana architektura 
HARVARD zachowuje si

ę

 jako struktura von NEUMANNa 

(mo

ż

liwo

ść

 

samomodyfikacji programu), z wyj

ą

tkiem dost

ę

pu do Cache i TCM

1

) ARM

®

Developer Suite. Developer Guide. 

ARM DUI 0056D, November 2001, Version 1.2, p.7-2

Zmodyfikowana Architektura
HARVARD  

[4#4]

Instrukcje i dane s

ą

 dost

ę

pne w ró

ż

ny sposób:

w komputerze MARK I kod programu wprowadzany za pomoc

ą

 ta

ś

my 

papierowej, a dane pami

ę

tane w układach elektro-mechanicznych

w strukturze HARVARD, np. w mikrokontrolerach serii PIC (Microchip) 
stosowane 12-bitowe adresowanie pami

ę

ci kodu (Flash) i 8-bitowe 

adresowanie pami

ę

ci danych (RAM)

w strukturze von NEUMANN’a (ARM7TDMI) i zmodyfikowanej 
HARVARD  (ARM9, Cortex-M3) jednolity sposób dost

ę

pu do:

pami

ę

ci kodu (Flash) dost

ę

p 16-bitowy (rozkazy  Thumb) 

32-bitowy (rozkazy ARM w ARM7 lub Thumb-2 w Cortex-M3)

danych (RAM) – mo

ż

liwy  8-, 16- i 32-bitowy dost

ę

p do danych

Alokacja  programu

Alokacja programu

(program allocation) - sposób rozmieszczenia 

programu w pami

ę

ci komputera, mikrokomputera, mikrokontrolera:

– program 

nieprzesuwalny

, absolutny (absolute file or segment) -

bezwzgl

ę

dne adresy rozkazów ustalane na etapie pisania programu, 

np. 

start procesora

,

wektory przerwa

ń

, fizyczne obszary pami

ę

ci, 

bankowanie pami

ę

ci

– program 

przesuwalny

relokowalny (relocatable file or segment) -

kod programu nie zale

ż

y od miejsca zajmowanego w pami

ę

ci i mo

ż

by

ć

 przemieszczany  bez dodatkowych przeadresowa

ń

, np. 

kompilatory j

ę

zyków wysokiego poziomuprogramy biblioteczne

ARM Compiler v5.04 for µVision armasm User Guide. Keil Software - ARM, 2014

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) 

słowowy (32-bitowy) dost

ę

p do danych w pami

ę

ci 

1)

kompilator procesorów ARM rozmieszcza dane w pami

ę

ci wg. zasady:

2)

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 8 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

Problemy i pytania

1.

Co to jest ALU ?

2.

Do czego słu

żą

 rejestry robocze procesora ?

3.

Wyja

ś

ni

ć

 ró

ż

nice mi

ę

dzy poj

ę

ciami: ‘register bank’ i ‘register file’.

4.

Jak

ą

 rol

ę

 w procesorze pełni akumulator ?

5.

Po co w mikroprocesorze rejestr statusowy ?

6.

Jakie informacje zawieraj

ą

 rejestry statusowe mikroprocesorów ?

7.

Czym si

ę

 ró

ż

ni

ą

 tryby: ‘microprocessor mode’ i ‘microcontroller mode’ ?

8.

Co mo

ż

e by

ć

 

ź

ródłem zerowania (Reset) mikroprocesora/mikrokontrolera ?

9.

Co to jest alokacja programu ?

10. Jakie s

ą

 typy alokacji programów ? Poda

ć

 przykłady.

11. Na czym polega architektura von-Neumanna ?

12. Na czym polega architektura Harvard ?

13. Poda

ć

 wady i zalety architrktury von-Neumanna i Harvard.

14. Na czym polega zmodyfikowana architektura Harvard ? 

15. Wyja

ś

ni

ć

 poj

ę

cia ‘Memory Mapped I/O’ i ‘Isolated I/O’.