Procesory sygnałowe
Wykład 3
Architektura procesora
ADSP-21065L
Dr inż. Robert
Wielgat
Podstawowe parametry
techniczne procesora ADSP-
21065L
ADSP 21065L
Częstotliwość zegara
systemowego
66 MHz
Długość cyklu maszynowego
15 ns
Szybkość wykonywania
operacji
zmiennoprzecinkowych
132 MFLOPS, Max 198 MFLOPS
Czas wykonywania
1024 punktowej FFT
279 μs
Czas mnożenia macierzy
[3x3]*[3x1], [4x4]*[4x1]
136 ns, 242 ns
Czas wykonywania dzielenia
91 ns
Rozmiar wewnętrznej pamięci
RAM
544 Kbit
Cechy procesora ADSP-21065L
• Konfigurowalna
dwu-portowa pamięć wewnętrzna 544 Kbit
• Możliwość zaadresowania 256 MB pamięci zewnętrznej w
organizacji 32-bitowej
• Moc obliczeniowa 198 MFLOPS (operacje zmiennoprzecinkowe
na słowach 32-bitowych) i 198 MOPS (operacje
stałoprzecinkowe na słowach 32-bitowych)
• Zintegrowany interfejs SDRAM
• Dwa dwukierunkowe porty szeregowe
• 16 kanałowy tryb przesyłu I2S
• Dwa timery z opcjami PWM oraz przechwytywania zdarzeń
• 12 programowalnych Wejść/Wyjść
• 10 kanałów DMA
• Bezpośrednie podłączenie do innych procesorów ADSP-
21065L
• Asembler kompatybilny z wszystkimi procesorami typu SHARC
• Napięcie zasilania 3.3 V, Obudowa MQFP 208-końcówek,
Architektura super Harward
Port
zewnętrz
ny
Port
zewnętrz
ny
Jądro
procesor
a
Jądro
procesor
a
Dwuportowa
pamięć
wielodostępna
Dwuportowa
pamięć
wielodostępna
Procesor urządeń
we/wy
oraz
kontroler DMA
Procesor urządeń
we/wy
oraz
kontroler DMA
System
magistrali
System
magistrali
Schemat blokowy ADSP-
21065L
Charakterystyka
architektury procesora
ADSP-21065L
1. Jądro procesora DSP,
2. Dwu-portowy dostęp do pamięci (rozkazy, dane)
3. Zewnętrzny port do dołączenia pamięci zewnętrznej
oraz urządzeń WE/WY. Rozmiar 64Mx32 bity (24 bitowy
adres)
4. Procesor WE/WY oraz kontroler DMA
•
Procesor WE/WY zawierający układ sterujący oraz
dwa porty szeregowe mogące pracować z pełną
częstotliwością procesora (maksymalny transfer
danych 30 Mbit/s). Porty mogą pracować w jednym z
trzech trybów pracy: standardowym, I
2
S, TDM.
•
10-kanałowy kontroler DMA. Transfer DMA
obejmujący zarówno dane jak i kody instrukcji jest
możliwy pomiędzy pamięcią wewnętrzną RAM,
zewnętrzną pamięcią RAM, portem szeregowym i
urządzeniami peryferyjnymi
Jądro procesora ADSP-
21065L
Jądro procesora ADSP-
21065L
Timer 1
Timer 1
Timer 2
Timer 2
Pamięć
podręczna
(cache)
instrukcji
32 x 48 bitów
Pamięć
podręczna
(cache)
instrukcji
32 x 48 bitów
Generator
adresu 1 (DAG
1)
8 x 4 x 32
Generator
adresu 1 (DAG
1)
8 x 4 x 32
Generator
adresu 2 (DAG
2)
8 x 4 x 32
Generator
adresu 2 (DAG
2)
8 x 4 x 32
Sekwenter
programowy
Sekwenter
programowy
Rejestr
Magistral
(PX)
Rejestr
Magistral
(PX)
Mnożarka
Mnożarka
Zbiór
rejestrów
16 x 40 bitów
Zbiór
rejestrów
16 x 40 bitów
Shifter
Shifter
ALU
ALU
Jednostki obliczeniowe
32
24
40
48
DMA Bus
PMA Bus
DMD Bus
PMD Bus
Jednostki obliczeniowe
Mnożarka
Mnożarka
Zbiór
rejestrów
10-portowy
16 x 40
bitów
Zbiór
rejestrów
10-portowy
16 x 40
bitów
Shifte
r
Shifte
r
ALU
ALU
40
48
DMD Bus
PMD Bus
MR
2
MR
2
MR
1
MR
1
MR
0
MR
0
Jednostki obliczeniowe
w ADSP-21065L
Jednostka arytmetyczno-logiczna (ALU).
Realizuje
stadardowe operacje arytmetczne i logiczne na
liczbach stało- i zmienno-przecinkowych.
Mnożarka (ang. Multiplier).
Realizuje operacje
mnożenia stało- i zmienno- przecinkowego oraz
podwójne operacje typu mnożenie/dodawanie i
mnożenie/odejmowanie.
Shifter.
Realizuje wszelkiego rodzaju operacje na
bitach (przesuwanie, rotacja, ekstrakcja itp.)
Jednostki obliczeniowe przechowują operandy
wejściowe i wyniki obliczeń w 10- portowym
zbiorze rejestrów.
Jednostki obliczeniowe –
zbiór rejestrów
Mnożarka
Mnożarka
Zbiór
rejestrów
10-portowy
16 x 40
bitów
Zbiór
rejestrów
10-portowy
16 x 40
bitów
Shifte
r
Shifte
r
ALU
ALU
40
48
DMD Bus
PMD Bus
MR
2
MR
2
MR
1
MR
1
MR
0
MR
0
Jednostki obliczeniowe – zbiór
rejestrów
•
Zawiera dwie grupy 16 rejestrów: pierwotnych i wtórnych.
•
Szerokość danych w każdym z rejestrów jest równa 40 bitów.
•
32-bitowe dane zawsze są wyrównywane do lewej. W trakcie
odczytu danej procesor ignoruje osiem mniej znaczących
bitów. Podczas zapisu ustawia natomiast osiem zer.
•
Dostęp do zbioru rejestrów przez magistrale danych: PM i DM
odbywa się w jednym cyklu.
•
Dane przesyłane pomiędzy zbiorem rejestrów a magistralami
danych: PM i DM są zawsze 40-bitowe.
•
Transfer danych pomiędzy zbiorem rejestrów a 48-bitową
magistralą danych PM uwzględnia 40 bardziej znaczących
bitów. Osiem mniej znaczących bitów jest ustawianych na
zero.
•
Jeżeli na operand i wynik operacji przeznaczy się ten sam
rejestr odczyt następuje w pierwszej połowie cyklu, natomiast
zapis w drugiej.
•
Jeżeli w tym samym cyklu występuje kilka żądań zapisu do
jednego rejestru, to realizowany jest zapis danej ze źródła o
najwyższym priorytecie (DM lub rejestry uniwersalne, PM,
ALU, Mnożarka, Shifter).
Jednostki obliczeniowe –
jednostka arytmetyczno-
logiczna
Mnożarka
Mnożarka
Zbiór
rejestrów
10-portowy
16 x 40
bitów
Zbiór
rejestrów
10-portowy
16 x 40
bitów
Shifte
r
Shifte
r
ALU
ALU
40
48
DMD Bus
PMD Bus
MR
2
MR
2
MR
1
MR
1
MR
0
MR
0
Jednostki obliczeniowe –
jednostka arytmetyczno-
logiczna
Jednostka arytmetyczno-logiczna (ALU) realizuje następujące
operacje:
•
Stało- i zmiennoprzecikowe:
dodawanie, odejmowanie,
podwójne dodawanie/odejmowanie, średnia.
•
Zmienno-przecinkowe:
binarny logarytm, skalowanie,
mantysa.
•
Stało-przecinkowe:
dodawanie z przeniesieniem, odejmowanie
z pożyczką, inkrementacja, dekrementacja
•
Logiczne:
AND, OR, XOR, NOT
•
Funkcje:
ABS, przejścia, Min, Max, Clip, porównanie
•
Konwersja danych
•
Odwrotność, odwrotność pierwiastka kwadratowego.
Wszystkie operacje realizowane przez ALU zwracają
jeden wynik
z
wyjątkiem:
1. Operacji podwójnego dodawania/odejmowania: zwraca
dwa
wyniki
2. Operacji porównania:
nie zwraca wyniku
, a jedynie modyfikuje
flagi.
Jednostki obliczeniowe –
mnożarka
Zbiór
rejestrów
10-portowy
16 x 40
bitów
Zbiór
rejestrów
10-portowy
16 x 40
bitów
Shifte
r
Shifte
r
ALU
ALU
40
48
DMD Bus
PMD Bus
Mnożarka
Mnożarka
MR
2
MR
2
MR
1
MR
1
MR
0
MR
0
Jednostki obliczeniowe –
mnożarka
Mnożarka wykonuje operacje mnożenia na liczbach
stało- i zmienno przecinkowych oraz operacje
mnożenia z akumulacją
Stałoprzecinkowe instrukcje mnożarki operują na
danych 32 bitowych i dają rezultat 80 bitowy.
Dotyczy to liczb ułamkowych i naturalnych bez i
ze znakiem.
Zmiennoprzecinkowe instrukcje mnożarki operują na
danych 32 i 40-bitowych i dają rezultat
odpowiednio 32 i 40-bitowy.
Jednostki obliczeniowe –
mnożarka
Do wybranego rejestru ze zbioru rejestrów są zapisywane
bity 63-32 wyniku ułamkowego oraz bity 31-0 wyniku
naturalnego.
8 najstarszych bitów w rejestrze jest wypełnianych
zerami
Jednostki obliczeniowe –
shifter
Mnożarka
Mnożarka
Zbiór
rejestrów
10-portowy
16 x 40
bitów
Zbiór
rejestrów
10-portowy
16 x 40
bitów
Shifte
r
Shifte
r
ALU
ALU
40
48
DMD Bus
PMD Bus
MR
2
MR
2
MR
1
MR
1
MR
0
MR
0
Jednostki obliczeniowe –
shifter
Jednostki obliczeniowe –
shifter
Jednostki obliczeniowe –
shifter
Wyjątki obsługiwane
przez ADSP-21065L
Rejestry ASTAT i STKY
Rejestr ASTAT – flagi
generowane przez ALU
AZ - wynik zerowy lub niedomiar (ang. Underflow) w
operacji zmiennoprzecinkowej
AV - przepełnienie (ang. Overflow)
AN - ujemny wynik operacji
AC - przeniesienie w operacji stałoprzecinkowej
AS - znak operandu X w jednostce ALU (rozkazy ABS,
MANT)
AI - niedozwolona operacja zmiennoprzecinkowa
AF - ostatnią operacją w jednostce ALU była operacja
zmiennoprzecinkowa
CACC (0-7) - Akumulacyjny rejestr porównań ( wyniki 8
ostatnich rozkazów porównań)
Rejestr ASTAT – flagi
generowane przez pozostałe
urządzenia
MN - ujemny wynik operacji z mnożarki
MV - przepełnienie (ang. Overflow) mnożarki
MU - niedomiar (ang. Underflow) w wyniku z mnożarki
MI - niedozwolona operacja zmiennoprzecinkowa w
mnożarce
SV – przepełnienie (ang. overflow) shiftera lub bity po
lewej stronie MSB
SZ - wynik zerowy z shiftera
SS – znak operandu wejściowego w shifterze
BTF – flaga testująca bity rejestrów systemowych (ang.
Bit Test Flag) wykorzystywana np. w operacji XOR
FLG (0-3) – flagi uniwersalne służące do komunikacji z
urządzeniami zewnętrznymi
Rejestr STKY – opis wybranych
flag
AUS – niedomiar z operacji zmiennoprzecinkowej w ALU
AVS – przepełnienie z operacji zmiennoprzecinkowej w
ALU
AOS - przepełnienie z operacji stałoprzecinkowej w ALU
AIS - niedozwolona operacja zmiennoprzecinkowa w ALU
MOS - przepełnienie z operacji stałoprzecinkowej w
mnożarce
MVS – przepełnienie z operacji zmiennoprzecinkowej w
mnożarce
MUS – niedomiar z operacji zmiennoprzecinkowej w
mnożarce
MIS - niedozwolona operacja zmiennoprzecinkowa w
mnożarce
Operacje wielofunkcyjne
Literatura
1. Analog Devices, ADSP-21065L SHARC
®
DSP. User’s
Manual, USA, 2003. (Rozdziały: „Preface”,
„Introduction”, „Computation Units”)
Dokumentację można pobrać ze strony
2. Jacek Augustyn, „Asemblery μC51, ADSP-21065L
SHARC”, Wydawnictwa Naukowo-Dydaktyczne PWSZ
w Tarnowie, Wyd. IGSMiE PAN, Kraków 2006,
Rozdział 9