Cortex-A9 w Cyclone V SoC: wielordzeniowe „serce” zestawu SoCrates, część 1
Opracowane przez ARM jednostki centralne Cortex-A9 należą do rodziny rdzeni mikroprocesorowych, będących zaawansowanym rozwinięciem funkcjonalnym coraz bardziej popularnych rdzeni mikrokontrolerowych Cortex-M, które zdominowały oferty produkcyjne większości liczących się na świecie producentów mikrokontrolerów. Rodzina Cortex-A składa się obecnie z ośmiu rdzeni, których podstawowe cechy zestawiono w tabeli 1. W zestawieniu pominięto rdzenie z serii Cortex-A50, które należą do innej generacji rozwiązań niż klasyczne Cortex-A.
Tab. 1. Podstawowe cechy dostępnych obecnie rdzeni Cortex-A
Rdzeń | Cortex-A5 | Cortex-A5 MPCore | Cortex-A7 MPCore | Cortex-A8 | Cortex-A9 | Cortex-A9 MPCore | Cortex-A12 | Cortex-A15 MPCore |
Architektura | ARMv7 | ARMv7 + MP | ARMv7 +MP+LPAE | ARMv7 | ARMv7 | ARMv7 +MP | ARMv7 +MP+LPAE | ARMv7 +MP+LPAE |
Kontroler przerwań | GIC-390 | Zintegrowany GIC | GIC-400 | GIC-390 | GIC-390 | Zintegrowany GIC | GIC-400 | Zintegrowany GIC |
Kontroler L2 Cache | L2C-310 | L2C-310 | Zintegrowany | Zintegrowany | L2C-310 | L2C-310 | Zintegrowany | Zintegrowany |
DMIPS/MHz | 1,6 | 1,6/rdzeń | 1,9/rdzeń | 2,0 | 2,5 | 2,5/rdzeń | 3,0 | 4/rdzeń |
LPAE – Large Physical Address Extension, MP – Multi Processor, GIC – Generic Interrput Controller
Zalety rdzeni Cortex-A9 doceniło wielu producentów układów SoC oraz klasycznych mikroprocesorów. Układy z tymi rdzeniami oferują m.in. Freescale (rodzina i.MX6), Nvidia (Tegra 2 i Tegra 3), Samsung (rodzina Exynos 4), STMicroelectronics (SPEAr 13×0), Texas Instruments (OMAP44xx), stosuje je także firma Apple w swoich procesorach A5, Sony w konsoli PlayStation Vita. |
Jak widać, wybór rdzenia Cortex-A9 do układów SoC nie był przypadkowy, bowiem prędkość wykonywania programu jest duża (do 2,5 DMIPS/MHz), pobór mocy niewielki, a dodatkowe wyposażenie tworzące bezpośrednie otoczenie rdzenia (jak koprocesor multimedialny NEON, sprzętowy koprocesor Javy o nazwie Jazelle, interfejs wspomagający zarządzanie pamięcią systemową MMU i jej ochronę w systemach operacyjnych TrustZone czy koprocesory zmiennoprzecinkowe) tworzą z niego uniwersalną platformę sprzętową o dużej wydajności do zastosowań embedded . Dodatkowym atutem rdzeni Cortex-A9 zastosowanych w układach Cyclone V SoC jest wysoka maksymalna częstotliwość taktowania, wynosząca do 925 MHz (w obecnie produkowanych wersjach układów), a ich elastyczność zwiększają konfigurowalne zasoby FPGA zintegrowane w strukturze układów Cyclone V SoC (rodzinę tych układów opisaliśmy w artykule).
Rys. 1. Schemat blokowy układów Cyclone V SoC
Na rysunku 1 pokazano schemat blokowy układów Cyclone V SoC z zaznaczeniem podziału na część mikroprocesorową HPS (Hard Processor System) i FPGA, pomiędzy którymi komunikację zapewnia specjalny interfejs HPS-FPGA. Każda część układu SoC ma własne linie GPIO, kontrolery zewnętrznych pamięci, systemy generacji sygnałów zegarowych i wiele innych elementów, które umożliwiają ich – w razie takiej potrzeby – rozdzielną pracę (możliwa jest konfiguracja, w której mikroprocesor wykonuje program a logika zaimplementowana w FPGA wykonuje niezależnie własne zadania).
Wyposażenie dwurdzeniowego mikroprocesora w układzie Cyclone V SoC Pomimo nowatorskiej konstrukcji i budowy, układy Cyclone V SoC charakteryzują się wyposażeniem peryferyjnym identycznym z dostępnym u klasycznych konkurentów. Każdy blok HPS w u prezentowanych SoC wyposażono w obsługiwane sprzętowo:
Wszystkie te interfejsy są dołączone do magistrali L4.
|
Producent układów Cyclone V SoC wprowadził do produkcji układy wyposażone w dwa rdzenie Cortex-A9MPCore (od Multi Processor Core), które są zmodyfikowaną wersją standardowych Cortex-A9. Modyfikacja miała na celu usprawnienie współpracy wielu rdzeni, co wymusiło wbudowanie w CPU jednostki SCU (Snoop Control Unit), która odpowiada za sprzętowe wspomaganie arbitrażu, transferu danych, zarządzania zawartością pamięci cache i wielu innych procesów niezbędnych do synchronizacji pracy rdzeni w systemach wieloprocesorowych. Altera produkuje układy SoC wyposażone w dwa rdzenie, zapowiadane sa także wersje 4-rdzeniowe.
Na rysunku 2 pokazano konfigurację otoczenia CPU oraz zasoby komunikacyjne, zapewniające łączność jednostki centralnej z pamięcią SDRAM, pozostałymi peryferiami systemowymi (interfejs SD/MMC, USB, pamięć NAND Flash, Ethernet itp.) oraz matrycą FPGA. Jak widać, do komunikacji z pomiędzy CPU i FPGA zastosowano 64-bitowe interfejsy AXI (Advanced eXtensible Interface), niezależnie w kierunku „do” i „z” FPGA, wspomagane 32-bitowym interfejsem AXI w kierunku „do” FPGA. Jednostki CPU mają także dostęp do specjalnego interfejsu o nazwie FPGA Manager, za pomocą którego mogą konfigurować i rekonfigurować matrycę FPGA lub jej fragmenty podczas pracy układu.
Rys. 2. Schemat blokowy bloku HPS w układach Cyclone V SoC (widoczne dwa rdzenie Cortex-A9MPCore)
ARM Cortex-A9 w wersji MPCore – rdzeń dla systemów wielordzeniowych Zastosowane w układach SoC Altery rdzenie Cortex-A9 MPCore są zmodyfikowaną wersją rdzeni Cortex-A9, zoptymalizowaną do implementacji w systemach wielordzeniowych. Wyposażono je w blok SCU (Snoop Control Unit), która zajmuje się wspomaganiem arbitrażu, zarządzaniem zawartością pamięci cache, wymianą danych pomiędzy rdzeniami i innymi funkcjami charakterystycznymi dla systemów wieloprocesorowych. W układach SoC produkowanych obecnie przez firmę Altera są stosowane dwurdzeniowe CPU, taktowane sygnałem zegarowym o częstotliwości do 925 MHz. |
Standardowym wyposażeniem bloku HPS jest sprzętowy kontroler SDRAM, który umożliwia wygodną i bezpieczną (z punktu widzenia działania systemu operacyjnego) współpracę obydwu CPU z pamięciami DDR2/LPDDR2, DDR3 i podobnych o pojemności do 4 Gsłów (8-/16- i 32-bitowych). Kontroler SDRAM wyposażono w blok ECC (Error Correction Code), który jest niezbędnym elementem wyposażenia systemów z pamięciami SDRAM. Dlaczego ECC jest niezbędny?
Ze względu na duże pojemności pamięci SDRAM, niskie napięcie ich zasilania, a także bardzo duże prędkości transmisji danych do i z pamięci, nieuniknione jest powstawanie błędów zarówno podczas prowadzenia transmisji, jak i podczas przechowywania danych w pamięci. Komórki pamięci SDRAM wymagają ciągłego odświeżania, bowiem dane są w nich przechowywane w postaci ładunków w kondensatorach o niewielkich pojemnościach. Ładunek ten jest narażony na modyfikacje wynikające z upływności dielektryka kondensatora, zakłóceń EMC oraz promieniowania jonizującego. Warto zwrócić uwagę na to, że występujące w naturze okresowe zwiększanie się poziomu natężenia promieniowania kosmicznego (znanego m.in. pod nazwą „wiatr słoneczny”) bez mechanizmów ECC uniemożliwiłoby prawidłowe funkcjonowanie urządzeń z pamięcią DRAM na półkuli Ziemi wystawionej bezpośrednio na strumień promieniowania jonizującego.
Tab. 2. Zestawienie czasów MTBF dla występowania pojedynczych błędów w pamięci o pojemności 1 GB i 7-bitowym słowem ECC
W tabeli 2 pokazano średnie czasy MTBF dla przykładowych pamięci z 7-bitowym znacznikiem ECC oraz bez niego. Jak widać, konieczność stosowania ECC nie budzi żadnych wątpliwości, z tego powodu Altera zastosowała w układach Cyclone V SoC mechanizm sprzętowy pokazany na rysunku 3. Zaimplementowany algorytm ECC umożliwia wykrywanie błędów pojedynczych i podwójnych w każdym słowie i gwarantuje ich natychmiastową korekcję oraz sygnalizację wystąpienia błędów nienaprawialnych.
Rys. 3. Schemat blokowy mechanizmu ECC stosowanego w układach Cyclone V SoC