dynamiczna lista rozkazów procesora · 2011. 6. 12. · act2 actel 20.000 140 998 otp mach400 amd...
TRANSCRIPT
Dynamiczna lista rozkazów procesora implementowanego
w układzie FPGA
prof. dr hab. inż. Kazimierz Wiatr
Katedra Elektroniki
Wydział
Elektrotechniki, Automatyki, Informatyki i Elektroniki
email: [email protected]
ZAGADNIENIA
Cel
Rekonfigurowalne układy PLD
Koprocesor reprogramowalny
Opracowany procesor
Interface użytkownika
Wnioski
Rekonfiguracja częściowa układu programowalnego
Licznik -
synchronizacja
Korekcja błędów
Układ transmisyjny
WeryfikacjaCRC
Filtr A
Przed rekonfiguracją Po rekonfiguracji
Licznik -
synchronizacja
Korekcja błędów
Układ transmisyjny
WeryfikacjaCRC
Filtr B
Struktura cztero-kontekstowego modelu FPGA
Pamięć
konfiguracyjnaLogika sprzętowa
1
Aktywna konfiguracja
2
3
4
Idea rekonfiguracji częściowej
Logika
Nowa częściowa konfiguracja
Pamięć
konfiguracyjna przed rekonfiguracją
Pamięć
konfiguracyjna po rekonfiguracji
Logika
Struktura pamięci konfiguracyjnej w multikontekstowym
modelu FPGA
Biblioteka konfiguracji sprzętowych
I/O
Poziomypamięci konfiguracyjnej (konteksty)
Architektura komórki logicznej typu Context Switching
END Q
FFCLK
ROM(LUT)
RAM(LUT)
Końcowy układ
M
System z wielokrotnym wykorzystaniem do obliczeń
jednego układu FPGA
Linia transmisyjna
Kamera
FPGA
A→C
Przyjęcie danych
KompresjaWstępne przetworzenie
Modulacja
Pamięć
konfiguracyjna
FPGA
C→A
1
2
3
4
010110... 010110...
Struktura różnych architektur układów obliczeniowych
a) Układ rekonfigurowalny
(FCCM)
b) Procesor ogólnego przeznaczenia GPP
c) Układy ASIC
Rekonfigurowalny
FPGA
Pamięć
konfiguracyjna
a)
Pamięć
programuDane
ASIC
Dane
Dane
ASIC
ASIC
ProcesorDane
Dane
b) c)
Mikroprocesor z rekonfigurowalnym
koprocesorem
Główny procesor (RISC)
Cache instrukcji
Cache danych
Interfejs jednostki
Koprocesor
rekonfigurowalny
Globalna jednostka kontrolna
Rejestry danych
Matryca
rekonfigurowalna
Realizacja obliczeń w systemie tradycyjnym
Koprocesor standardowy
÷
sin()
exp()Procesor
Realizacja obliczeń w systemie
rekonfigurowalnym
Koprocesor
rekonfigurowalny
÷ sin()exp()Procesor
Wzrost liczby tranzystorów w układach różnego typu
1994
1995
1996
1997
1998
1999
2000AMD
PowerPC
Intel
FPGA
0
50
100
150
200
Lata
Układy programowalne PLD
RODZAJ FIRMA BRAMKI CLB I/O REJESTRY KONFIG.Max5000 Altera 3.800 192 64 192 EPROMMax7000 Altera 5.000 256 160 256 EEPROMFlex8000 Altera 24.000 1296 204 1500 SRAMACT2 Actel 20.000 140 998 OTPMach400 AMD 10.000 256 146 384 ISP(EEPROM)
ATV5100 Atmel 5.000 60 128 EPROMATV6010 Atmel 10.000 6400 204 6400 EEPROMXC4000 Xilinx 250.000 8464 448 18400 SRAMXC8100 Xilinx 45.000 6144 320 3072 OTPXC7300 Xilinx 144 156 276 EPROMXC9500 Xilinx 12.800 576 232 576 ISP(EEPROM)
VIRTEX Xilinx 1.124.022 6144 512 24576 SRAM (2,5V)
VIRTEX II Xilinx 10.000.000 15360 1108 61440 SRAM (2,5V)
Układy FPGA serii XC4000
Połączenia w układach FPGA3 12 85
4
Struktura bloku CLB w układach XC4000
Procesor logiczny w XC4004-5PG120
1
2
G R _G R _ G R I G R I G R I G R I G R I G R _ G R I G R _ D O 7 U 1 5 F 1 3 G R _ G R _ G R _ U 1 1 G R _ G R _ G R _ G R _ G R I G R _ G R _ U 1 2
1
3
U 1 2
1
2
9G R I D / U
3 1 6 _ O
C L B _ R 1
2 C 2
C L B _ R 1
2 C 3
S 1 / U 3 2
5 _ O
S 1 / B 1 _
P R I M
M S _ - R A
S
L O / O B R
_ Q 2
P R / O R _
P
P R / U 4 8
4 / T 1
A D R 5 A D R 1 C L B _ R 1
2 C 1 2
1
1
1
3
7
5
1
0- T R / - O
E _ P
C L B _ R 1
1 C 2
- S T O P P R / N _ A
D R _ P
F S / U 4 4
4 _ O
L O / S T R F S / U 2 4
9 _ O
L O / U 2 6
0 / N Z 8
A D R 3 A D R 7 A D R 8 L O / O B R
_ D 1
1
2
9
1
1
9C L B _ R 1
0 C 1
C L B _ R 1
0 C 2
P R / Q 0 _
P
S 1 / D E L
A Y
- C A S _ P O D / C L K
/ 3 2
L O / O B R
_ Q 3
F S / U 2 5
5 _ O
M S _ - C A
S
- M E / - W
E _ P
A D R 6 C L B _ R 1
0 C 1 2
1
0
1
1
1
0
8C L B _ R 9
C 1
C L B _ R 9
C 2
P R / U 3 0
5 _ P
O D E / U 3
4 9 _ Q
C L B _ R 9
C 5
O D / U 2 7
7 / T 1
O D / U 2 7
7 / Q 3
L O / U 2 6
0 / N Z 2 4
P R / S 4 _
P
C L B _ R 9
C 1 0
- C A S _ O O D / Q 0 _
O
9
1
0
8
9C L B _ R 8
C 1
O D E / U 3
4 3 _ G
C L B _ R 8
C 3
O D E / U 4
9 3 _ Q
O D E / U 3
4 5 _ Q
O D / U 2 7
7 / Q 1
C L B _ R 8
C 7
O D / R D _
O
O D / C E _
O
C L B _ R 8
C 1 0
C L B _ R 8
C 1 1
C L B _ R 8
C 1 2
8
9
8
7C L B _ R 7
C 1
C L B _ R 7
C 2
C L B _ R 7
C 3
C L B _ R 7
C 4
O D E / U 3
4 1 _ Q
P D _ O U T
7
F S / U 3 5
9 _ O
C L B _ R 7
C 8
S 1 / W P I
S _ A D R 3
C L B _ R 7
C 1 0
C L B _ R 7
C 1 1
G R I D / U
3 1 8 _ O
8
8
6
6C L B _ R 6
C 1
C L B _ R 6
C 2
O D E / H M
2 _ Q < 7 >
C L B 1 O D E / H M
1 _ Q < 7 >
P D _ O U T
5
C L B _ R 6
C 7
A D R E S 3 A D R E S 4 C L B _ R 6
C 1 0
C L B _ R 6
C 1 1
C L B _ R 6
C 1 2
7
6
5
6C L B _ R 5
C 1
F S / U 4 4
7 _ O
O D E / H M
2 _ Q < 5 >
O D E / H M
3 _ S < 0 >
O D E / H M
1 _ Q < 5 >
P D _ O U T
3
F S / U 4 4
8 _ O
A D R E S 1 A D R E S 2 C L B _ R 5
C 1 0
C L B _ R 5
C 1 1
C L B _ R 5
C 1 2
5
6
4
5C L B _ R 4
C 1
C L B _ R 4
C 2
O D E / H M
2 _ Q < 3 >
O D E / H M
3 _ S < 2 >
O D E / H M
1 _ Q < 3 >
P D _ O U T
0
C L B _ R 4
C 7
C L B _ R 4
C 8
C L B _ R 4
C 9
C L B _ R 4
C 1 0
C L B _ R 4
C 1 1
G R I D / U
3 1 7 _ O
6
4
4
5C L B _ R 3
C 1
C L B _ R 3
C 2
O D E / H M
2 _ Q < 0 >
O D E / H M
3 _ S < 4 >
O D E / H M
1 _ Q < 0 >
O D E / H M
6 / R S 8 P
H _ C E
C L B _ R 3
C 7
C L B _ R 3
C 8
C L B _ R 3
C 9
C L B _ R 3
C 1 0
C L B _ R 3
C 1 1
C L B _ R 3
C 1 2
5
3
2
1C L B _ R 2
C 1
C L B _ R 2
C 2
O D E / H M
2 / R S 8 P
H _ C E
O D E / H M
3 _ S < 6 >
O D E / H M
1 / R S 8 P
H _ C E
C L B _ R 2
C 6
C L B _ R 2
C 7
C L B _ R 2
C 8
C L B _ R 2
C 9
C L B _ R 2
C 1 0
C L B _ R 2
C 1 1
C L B _ R 2
C 1 2
4
5
3
2C L B _ R 1
C 1
C L B _ R 1
C 2
C L B _ R 1
C 3
O D E / H M
3 / O F L
C L B _ R 1
C 5
C L B _ R 1
C 6
C L B _ R 1
C 7
C L B _ R 1
C 8
C L B _ R 1
C 9
C L B _ R 1
C 1 0
C L B _ R 1
C 1 1
C L B _ R 1
C 1 2
2
32
U 1 1U 1 1 C 2 G R I G R I G R I G R I U 1 4 D O 1 U 4 _ D O 5 G R I G 1 G R I H 2 J 1 H 3 G R I G R I G R I G R I J 3 G R I G R I G R IG R I
3
Raport z implementacji procesora LUT
XMAKE:
begin command
'sdt2xnf -x -p4005PC84-5 'SDT2XNF
Ver. 4.20(c)
Copyright
1987-1992
Xilinx Inc.
All rights reservedppr
[1.30] --
Xilinx Automatic
CAE
Tools+ Parameters
design
= xi.xnf parttype
= 4005PC84-5justflatten
= FALSEestimate
= FALSElogfile
=
ppr.log + Additional Specified or Non-Default Parameters
seed
= 848495022Speedfile version
9,
revision
8.+
Converting
XNF to MXN @ 13:03:45 [00:00:13]Preliminary evaluation of your selected part, 4005PC84:
89% utilization of io pins. ( 85
of
95) 40% utilization of function generators. (116
of
288) 37% utilization of clb flip-flops. (106
of
288) 25% utilization of bus resources. ( 12
of
48)This includes
50
function generators and
50
flip-flops inside hard macros,
which cannot be used
for
other purposes.This includes
4 CLB
flip-flops that must be left unoccupied,
because
4
netssource an odd number of
DFF C
pins.The preliminary checks say the design
will
fit. PPR will
proceed
to
the next stage.You selected what appears
to
be the best available part.
Resource_usage:
Pips
1442,
Feeds
38,
Locals
502,
Doubles
213, Longs
115,
Globals
9,
Dec_lines
2 # of unrouted connections: 0. + Generating
.LCA
File
@ 13:05:45 [00:02:13]
Begin work
on a 19.8ns
path with
1
pins. (slack
13.5ns).
Timing analysis summaryDeadline Actual(*)
label: [qualifier]pad to pad <auto> 56.2ns <default>
Selector
net:
Default clock
to
setup
<auto> 40.5ns (rising edges)clock
to
setup
<auto> 8.5ns (falling edges)clock
to
setup
<auto> 7.9ns (rising
to
falling edge) pad to
setup
<auto> 42.0ns
clock
to pad <auto> 64.8nsSelector
net: ODE/CLK_OUT clock
to pad 33.3ns 19.8ns TS1: DO* Selector
net: PR/N_ADR_P clock
to
setup
33.3ns 19.1ns TS2:clock
to
setup
33.3ns 9.1ns TS2: (from other)clock
to pad <auto> 19.0ns
+ Making Report File
@ 13:07:52 [00:04:20]-
ppr
@ 1996/11/20 13:07:56 [00:04:24]= ----
@ 1996/11/20 00:04:14 [00:04:14]XMAKE:
begin command 'makebits
-r2 -s0 xi.lca'Xilinx
LCA MAKEBITS
Ver. 4.31
ended normally
Opis opracowanego procesora•
architektura umożliwiająca definiowanie przez użytkownika własnych rozkazów;•
16-to bitowa magistrala danych;•
20-to bitowa magistrala adresowa;•
16-to bitowy port we/wy;•
możliwość
bezpośredniego adresowania 1 MB pamięci;•
możliwość
wykonywania operacji na bitach;•
108 rozkazów, które można podzielić
na grupy:•
przesłań•
arytmetyczne•
logiczne•
bitowe•
skoków•
sterujące•
wejścia-wyjścia•
użytkownika•
cztery sposoby adresowania pamięci:•
natychmiastowe•
bezpośrednie•
rejestrowe•
rejestrowe pośrednie•
dwie linie przerwań;•
osiem 16-to bitowych rejestrów danych oraz akumulator;•
cztery 20-to bitowe rejestry adresowe;16-to bitowy rejestr statusowy w którym bity od 9 do 15 są wolne, tzn. mogą byćużyte przez użytkownika
Procesor funkcjonalnie składa się
z trzech głównych bloków:
B1 -
blok sterujący magistralą
adresową, danych oraz sygnałami zapisu/odczytu; B2 -
blok testujący zewnętrzne linie sterujące; B3 -
blok dekodujący i wykonujący rozkazy.
Znaczenie Nazwa Kierunek
magistrala danych D0-D15 wejście-wyjściemagistrala adresowa A0-A19 wejścieport danych P0-P15 wejście-wyjścieżądanie dostępu do pamięci ! MREQ wyjścieodczyt / zapis pamięci R/!W wyjściezatrzymanie procesora !HALT wyjściewydłużanie cyklu procesora READY wejścieprzerwanie maskowalne !INT wejścieprzerwanie niemaskowalne !NMI wejścieakceptacja przerwania NMI !NMIA wyjścieakceptacja przerwania INT !INTA wyjściezerowanie procesora !RESET wejścieżądanie magistrali !BUSREQ wejściepotwierdzenie zwolnienia magistrali !BUSACK wyjściezegar CLK wejście
Magistrale i rejestry
Rejestry procesora
Nazwa Mnemonik Liczba bitów
akumulator A 16rejestry danych D0 - D7 16rejestry adresowe A0 - A3 20licznik programu PC 20wskaźnik stosu SP 20rejestr statusowy SR 16rejestr kierunku portu PD 16
Przykładowa implementacja
W procesorze tym zaimplementowano następujące rozkazy:
LD A,nn LD A,(ss) LD (ss),A LD r,A
LD r,r LD ra,ss LD ra,A PUSH A
POP A PUSH SR ADC nn ADC (ss)
SBC nn SBC r ROR A SLA A
SRA A AND nn XOR nn NOT A
BIT b,A SET b,A NEG b,A SET C
NEG C SET b,SR NEG b,SR JP ss
JP_C ss JP_NC ss JR_Z,e CALL ss
RET RETI RETN NOP
HALT EI DI LD A,P.
LD P,A LD PD,A
Raport MapXilinx Mapping Report File for Design "procesor"
Copyright (c) 1995-1998 Xilinx, Inc. All rights reserved.
Design InformationCommand Line : map -p xc4020xl-09-ht144 -o map.ncd procesor.ngd procesor.pcfTarget Device : x4020xlTarget Package : ht144Target Speed : -09Mapper Version : xc4000xl -- M1.5.25Mapped Date : Fri Apr 02 04:01:37 1999
Design SummaryNumber of errors: 0Number of warnings: 0Number of CLBs: 784 out of 784 100%
CLB Flip Flops: 111CLB Latches: 1404 input LUTs: 1355 (3 used as route-throughs)3 input LUTs: 276 (30 used as route-throughs)
Number of bonded IOBs: 64 out of 113 56%IOB Flops: 38IOB Latches: 1
Number of clock IOB pads: 1 out of 12 8%Number of BUFGLSs: 8 out of 8 100%6 unrelated functions packed into 6 CLBs.(Less than 1% of the CLBs used are affected.)
Total equivalent gate count for design: 10817Additional JTAG gate count for IOBs: 3072
Raport TimingXilinx TRACE, Version M1.5.25Copyright (c) 1995-1998 Xilinx, Inc. All rights reserved.Design file: procesor.ncdPhysical constraint file: procesor.pcfDevice,speed: xc4020xl,-09 (x1_0.45 1.24 PRELIMINARY)Report level: error report, limited to 3 items per constraint---------------------------------------------------------------------------WARNING:bastw:170 - No timing constraints found, doing default enumeration.===========================================================================Timing constraint: Default period analysis373364 items analyzed, 0 timing errors detected.Minimum period is 44.681ns.===========================================================================Timing constraint: Default net enumeration1556 items analyzed, 0 timing errors detected.Maximum net delay is 21.216ns.---------------------------------------------------------------------------All constraints were met.Timing summary:
Timing errors: 0 Score: 0Constraints cover 373364 paths, 1556 nets, and 5614 connections (100.0%coverage)Design statistics:
Minimum period: 44.681ns (Maximum frequency: 22.380MHz)Maximum net delay: 21.216ns
Analysis completed Fri Apr 02 04:06:23 1999
Interface użytkownika
Dodawanie rozkazu
Opis rozkazu w kodzie języka VHDL
Poprawianie rozkazu
Usuwanie rozkazu
Tworzenie pliku wynikowego
Symulacja funkcjonalna
Symulacja po implementacji w XC4020XL
Wymogi obliczeniowe systemów obliczeniowych nieustannie rosną
szybkość akwizycji 1000 do 5000 obrazów na sekundęrozdzielczość 128x128 i 256x256
napływ pikseli do 327,68 MHz (3,1 ns)standardowo 14,75 MHz (67,8 ns)
Wzrastają
bardzo szybko pojemności i szybkość
układów FPGA
Moce obliczeniowe układów FPGA wielokrotnie przekraczają
moce procesorów ogólnego przeznaczenia
Miliardy operacji MAC/s
8 MACs Proc. Virtex-E Virtex-II
2 GMAC32 GMAC
600 GMAC
Struktura
układu
One Chip
Pamięć
danych PFU
(dzielona)
Pamięćkonfigura-
cyjna
PFU
Rdzeń
CPU
Logika stała
Logika
rekonfigurowalna
Dziękuję za uwagę