Cortex-A9 w Cyclone V SoC: wielordzeniowe „serce” zestawu SoCrates, część 1

baner

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

 

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:

  • 2 kanały CAN2.0B,
  • 4 kanały I2C,
  • 4 kanały SPI.
  • 2 kanały UART,
  • 2 niezależne watchdogi,
  • 4 programowalne timery.

Wszystkie te interfejsy są dołączone do magistrali L4.
Ponadto każdy HPS wyposażono w interfejsy komunikacyjne dołączone do przełącznika L3:

  • 2 kanały USB-OTG,
  • 2 kanały gigabitowe eMAC,
  • interfejs SD/MMC.

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) 

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

 

O autorze