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: wiatr@uci.agh.edu.pl
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 Licznik - synchronizacja Korekcja błędów Układ transmisyjny Układ transmisyjny Filtr A Weryfikacja CRC Filtr B Weryfikacja CRC Przed rekonfiguracją Po rekonfiguracji
Struktura cztero-kontekstowego modelu FPGA 1 Pamięć konfiguracyjna 2 3 4 Logika sprzętowa Aktywna konfiguracja
Idea rekonfiguracji częściowej Logika Logika Nowa częściowa konfiguracja Pamięć konfiguracyjna przed rekonfiguracją Pamięć konfiguracyjna po rekonfiguracji
Struktura pamięci konfiguracyjnej w multikontekstowym modelu FPGA I/O Poziomy pamięci konfiguracyjnej (konteksty) Biblioteka konfiguracji sprzętowych
Architektura komórki logicznej typu Context Switching ROM (LUT) RAM (LUT) Końcowy układ M EN D Q FF CLK
System z wielokrotnym wykorzystaniem do obliczeń jednego układu FPGA FPGA Linia transmisyjna FPGA 010110... 010110... A C C A Kamera Przyjęcie danych Kompresja Wstępne przetworzenie Modulacja Pamięć konfiguracyjna 1 2 3 4
Struktura różnych architektur układów obliczeniowych Pamięć konfiguracyjna Pamięć programu ASIC D an e Rekonfigurowalny FPGA D an e Procesor D an e ASIC ASIC D an e D an e a) b) c) a) Układ rekonfigurowalny (FCCM) b) Procesor ogólnego przeznaczenia GPP c) Układy ASIC
Mikroprocesor z rekonfigurowalnym koprocesorem Główny procesor (RISC) Cache instrukcji Cache danych Globalna jednostka kontrolna Rejestry danych Matryca rekonfigurowalna Koprocesor rekonfigurowalny Interfejs jednostki
Realizacja obliczeń w systemie tradycyjnym Procesor exp() sin() Koprocesor standardowy
Realizacja obliczeń w systemie rekonfigurowalnym Procesor exp() sin() Koprocesor rekonfigurowalny
Wzrost liczby tranzystorów w układach różnego typu 200 150 100 50 0 FPGA Intel PowerPC AMD 1994 1995 1996 1997 1998 1999 2000 Lata
Układy programowalne PLD RODZAJ FIRMA BRAMKI CLB I/O REJESTRY KONFIG. Max5000 Altera 3.800 192 64 192 EPROM Max7000 Altera 5.000 256 160 256 EEPROM Flex8000 Altera 24.000 1296 204 1500 SRAM ACT2 Actel 20.000 140 998 OTP Mach400 AMD 10.000 256 146 384 ISP(EEPROM) ATV5100 Atmel 5.000 60 128 EPROM ATV6010 Atmel 10.000 6400 204 6400 EEPROM XC4000 Xilinx 250.000 8464 448 18400 SRAM XC8100 Xilinx 45.000 6144 320 3072 OTP XC7300 Xilinx 144 156 276 EPROM XC9500 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 FPGA 3 5 2 8 1 4
Struktura bloku CLB w układach XC4000
2 3 1 2 5 4 5 4 6 5 6 6 7 8 9 8 8 1 0 9 1 1 1 0 7 5 9 1 2 U 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 I C L B _ R 1 C 1 C L B _ R 2 C 1 C L B _ R 3 C 1 C L B _ R 4 C 1 C L B _ R 5 C 1 C L B _ R 6 C 1 C L B _ R 7 C 1 C L B _ R 8 C 1 C L B _ R 9 C 1 C L B _ R 1 0 C 1 - T R / - O E _ P G R I D / U 3 1 6 _ O C L B _ R 1 C 2 C L B _ R 2 C 2 C L B _ R 3 C 2 C L B _ R 4 C 2 F S / U 4 4 7 _ O C L B _ R 6 C 2 C L B _ R 7 C 2 O D E / U 3 4 3 _ G C L B _ R 9 C 2 C L B _ R 1 0 C 2 C L B _ R 1 1 C 2 C L B _ R 1 2 C 2 C L B _ R 1 C 3 O D E / H M 2 / R S 8 P H _ C E O D E / H M 2 _ Q < 0 > O D E / H M 2 _ Q < 3 > O D E / H M 2 _ Q < 5 > O D E / H M 2 _ Q < 7 > C L B _ R 7 C 3 C L B _ R 8 C 3 P R / U 3 0 5 _ P P R / Q 0 _ P - S T O P P R / N _ A D R _ P C L B _ R 1 2 C 3 O D E / H M 3 / O F L O D E / H M 3 _ S < 6 > O D E / H M 3 _ S < 4 > O D E / H M 3 _ S < 2 > O D E / H M 3 _ S < 0 > C L B 1 O D E / H M 1 _ Q < 7 > C L B _ R 7 C 4 O D E / U 4 9 3 _ Q O D E / U 3 4 9 _ Q S 1 / D E L A Y S 1 / U 3 2 5 _ O C L B _ R 1 C 5 O D E / H M 1 / R S 8 P H _ C E O D E / H M 1 _ Q < 0 > O D E / H M 1 _ Q < 3 > O D E / H M 1 _ Q < 5 > O D E / U 3 4 1 _ Q O D E / U 3 4 5 _ Q C L B _ R 9 C 5 - C A S _ P O D / C L K / 3 2 F S / U 4 4 4 _ O S 1 / B 1 _ P R I M C L B _ R 1 C 6 C L B _ R 2 C 6 O D E / H M 6 / R S 8 P H _ C E P D _ O U T 0 P D _ O U T 3 P D _ O U T 5 P D _ O U T 7 O D / U 2 7 7 / Q 1 O D / U 2 7 7 / T 1 L O / S T R F S / U 2 4 9 _ O M S _ - R A S 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 C L B _ R 1 C 7 C L B _ R 2 C 7 C L B _ R 3 C 7 C L B _ R 4 C 7 F S / U 4 4 8 _ O C L B _ R 6 C 7 F S / U 3 5 9 _ O C L B _ R 8 C 7 O D / U 2 7 7 / Q 3 L O / O B R _ Q 3 L O / O B R _ Q 2 C L B _ R 1 C 8 C L B _ R 2 C 8 C L B _ R 3 C 8 C L B _ R 4 C 8 A D R E S 1 A D R E S 2 C L B _ R 5 C 1 0 A D R E S 3 A D R E S 4 C L B _ R 6 C 1 0 C L B _ R 7 C 8 O D / R D _ O L O / U 2 6 0 / N Z 2 4 F S / U 2 5 5 _ O L O / U 2 6 0 / N Z 8 P R / O R _ P C L B _ R 1 C 9 C L B _ R 2 C 9 C L B _ R 3 C 9 C L B _ R 4 C 9 S 1 / W P I S _ A D R 3 O D / C E _ O P R / S 4 _ P M S _ - C A S A D R 3 A D R 7 A D R 8 L O / O B R _ D 1 P R / U 4 8 4 / T 1 C L B _ R 1 C 1 0 C L B _ R 2 C 1 0 C L B _ R 3 C 1 0 C L B _ R 4 C 1 0 C L B _ R 7 C 1 0 C L B _ R 8 C 1 0 C L B _ R 9 C 1 0 - M E / - W E _ P C L B _ R 1 C 1 1 C L B _ R 2 C 1 1 C L B _ R 3 C 1 1 C L B _ R 4 C 1 1 C L B _ R 5 C 1 1 C L B _ R 6 C 1 1 C L B _ R 7 C 1 1 C L B _ R 8 C 1 1 C L B _ R 1 C 1 2 C L B _ R 2 C 1 2 C L B _ R 3 C 1 2 G R I D / U 3 1 7 _ O C L B _ R 5 C 1 2 C L B _ R 6 C 1 2 G R I D / U 3 1 8 _ O C L B _ R 8 C 1 2 - C A S _ O O D / Q 0 _ O A D R 6 C L B _ R 1 0 C 1 2 A D R 5 A D R 1 C L B _ R 1 2 C 1 2 3 2 5 4 3 5 4 6 6 5 6 7 8 8 9 8 1 0 9 1 1 1 0 9 1 2 1 3 1 1 Procesor logiczny w XC4004-5PG120
Raport z implementacji procesora LUT XMAKE: begin command 'sdt2xnf -x -p4005pc84-5 ' SDT2XNF Ver. 4.20 (c) Copyright 1987-1992 Xilinx Inc. All rights reserved ppr [1.30] -- Xilinx Automatic CAE Tools + Parameters design = xi.xnf parttype = 4005PC84-5 justflatten = FALSE estimate = FALSE logfile = ppr.log + Additional Specified or Non-Default Parameters seed = 848495022 Speedfile 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 nets source 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 summary Deadline 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.8ns Selector 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.
Magistrale i rejestry Znaczenie Nazwa Kierunek magistrala danych D0-D15 wejście-wyjście magistrala adresowa A0-A19 wejście port danych P0-P15 wejście-wyjście żądanie dostępu do pamięci! MREQ wyjście odczyt / zapis pamięci R/!W wyjście zatrzymanie procesora!halt wyjście wydłużanie cyklu procesora READY wejście przerwanie maskowalne!int wejście przerwanie niemaskowalne!nmi wejście akceptacja przerwania NMI!NMIA wyjście akceptacja przerwania INT!INTA wyjście zerowanie procesora!reset wejście żądanie magistrali!busreq wejście potwierdzenie zwolnienia magistrali!busack wyjście zegar CLK wejście
Rejestry procesora Nazwa Mnemonik Liczba bitów akumulator A 16 rejestry danych D0 - D7 16 rejestry adresowe A0 - A3 20 licznik programu PC 20 wskaźnik stosu SP 20 rejestr statusowy SR 16 rejestr 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 Map Xilinx Mapping Report File for Design "procesor" Copyright (c) 1995-1998 Xilinx, Inc. All rights reserved. Design Information Command Line : map -p xc4020xl-09-ht144 -o map.ncd procesor.ngd procesor.pcf Target Device : x4020xl Target Package : ht144 Target Speed : -09 Mapper Version : xc4000xl -- M1.5.25 Mapped Date : Fri Apr 02 04:01:37 1999 Design Summary Number of errors: 0 Number of warnings: 0 Number of CLBs: 784 out of 784 100% CLB Flip Flops: 111 CLB Latches: 140 4 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: 38 IOB 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: 10817 Additional JTAG gate count for IOBs: 3072
Raport Timing Xilinx TRACE, Version M1.5.25 Copyright (c) 1995-1998 Xilinx, Inc. All rights reserved. Design file: procesor.ncd Physical constraint file: procesor.pcf Device,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 analysis 373364 items analyzed, 0 timing errors detected. Minimum period is 44.681ns. ========================================================================= ==Timing constraint: Default net enumeration 1556 items analyzed, 0 timing errors detected. Maximum net delay is 21.216ns. ------------------------------------------------------------------------- --All constraints were met. Timing summary: Timing errors: 0 Score: 0 Constraints 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 600 GMAC 2 GMAC 32 GMAC 8 MACs Proc. Virtex-E Virtex-II
Struktura układu One Chip Pamięć danych PFU (dzielona) Pamięć konfiguracyjna PFU Rdzeń CPU Logika stała Logika rekonfigurowalna
Dziękuję za uwagę