RAMIĘ duże.MAŁE
ARM big.LITTLE to heterogeniczna architektura obliczeniowa opracowana przez ARM Holdings , łącząca relatywnie oszczędzające baterię i wolniejsze rdzenie procesorów ( LITTLE ) z relatywnie mocniejszymi i energochłonnymi rdzeniami ( big ). Zazwyczaj tylko jedna „strona” lub druga będzie aktywna jednocześnie, ale wszystkie rdzenie mają dostęp do tych samych obszarów pamięci, więc obciążenia mogą być wymieniane między dużymi i małymi rdzeniami w locie. Celem jest stworzenie wielordzeniowego procesora , który może lepiej dostosować się do dynamicznych potrzeb obliczeniowych i zużywać mniej energii niż samo skalowanie zegara . Materiały marketingowe ARM obiecują do 75% oszczędności w zużyciu energii w przypadku niektórych działań. Najczęściej architektury ARM big.LITTLE są wykorzystywane do tworzenia wieloprocesorowych układów system-on-chip (MPSoC).
W październiku 2011 ogłoszono big.LITTLE wraz z Cortex-A7 , który został zaprojektowany tak, aby był architektonicznie kompatybilny z Cortex-A15 . W październiku 2012 ARM ogłosił wprowadzenie Cortex-A53 i Cortex-A57 ( ARMv8-A ), które są również kompatybilne, aby umożliwić ich użycie w chipie big.LITTLE. ARM ogłosił później Cortex-A12 na Computex 2013, a następnie Cortex-A17 w lutym 2014. Zarówno Cortex-A12, jak i Cortex-A17 można również sparować w konfiguracji big.LITTLE z Cortex-A7.
Problem, który rozwiązuje big.LITTLE
Dla danej biblioteki logiki CMOS moc czynna wzrasta, gdy logika przełącza się częściej na sekundę, podczas gdy upływ wzrasta wraz z liczbą tranzystorów. Tak więc procesory zaprojektowane do szybkiego działania różnią się od procesorów zaprojektowanych do oszczędzania energii. Gdy bardzo szybki , niesprawny procesor pracuje na biegu jałowym przy bardzo niskich prędkościach, procesor o znacznie mniejszym wycieku (mniej tranzystorów) może wykonać tę samą pracę. Na przykład może wykorzystywać mniejszą (mniej tranzystorów) pamięć podręczną lub prostszą mikroarchitekturę, taką jak potok . big.LITTLE to sposób na optymalizację w obu przypadkach: Moc i prędkość w tym samym systemie.
W praktyce system big.LITTLE może być zaskakująco mało elastyczny. Jednym z problemów jest liczba i rodzaje domen zasilania i zegara, które zapewnia układ scalony. Mogą one nie odpowiadać standardowym funkcjom zarządzania energią oferowanym przez system operacyjny. Innym jest to, że procesory nie mają już równoważnych możliwości, a dopasowanie właściwego zadania programowego do właściwego procesora staje się trudniejsze. Większość z tych problemów rozwiązuje się poprzez uelastycznienie elektroniki i oprogramowania.
Migracja w stanie uruchomienia
Istnieją trzy sposoby ułożenia różnych rdzeni procesora w projekcie big.LITTLE, w zależności od harmonogramu zaimplementowanego w jądrze .
Klastrowe przełączanie
Podejście oparte na modelu klastrowym jest pierwszą i najprostszą implementacją, polegającą na rozmieszczeniu procesora w identycznej wielkości klastry „dużych” lub „MAŁYCH” rdzeni. Harmonogram systemu operacyjnego może widzieć tylko jeden klaster na raz; gdy obciążenie całego procesora zmienia się z niskiego na wysokie, system przechodzi do drugiego klastra. Wszystkie istotne dane są następnie przekazywane przez wspólną pamięć podręczną L2 , aktywny klaster główny jest wyłączany, a drugi jest aktywowany. Stosowany jest Cache Coherent Interconnect (CCI). Model ten został zaimplementowany w Samsungu Exynos 5 Octa (5410).
Przełącznik w jądrze (migracja procesora)
Migracja procesora za pośrednictwem przełącznika w jądrze (IKS) polega na sparowaniu „dużego” rdzenia z „MAŁYM” rdzeniem, z możliwie wieloma identycznymi parami w jednym chipie. Każda para działa jako jeden tak zwany wirtualny rdzeń , a tylko jeden prawdziwy rdzeń jest (w pełni) zasilany i działa w danym momencie. „Duży” rdzeń jest używany, gdy zapotrzebowanie jest wysokie, a „MAŁY” rdzeń jest używany, gdy zapotrzebowanie jest niskie. Gdy zapotrzebowanie na wirtualny rdzeń zmienia się (między wysokim a niskim), przychodzący rdzeń jest zasilany, stan działania jest przesyłany , wychodzący jest wyłączany, a przetwarzanie jest kontynuowane na nowym rdzeniu. Przełączanie odbywa się za pośrednictwem cpufreq . Kompletna implementacja big.LITTLE IKS została dodana w Linuksie 3.11. big.LITTLE IKS to ulepszenie migracji klastrów ( § Przełączanie klastrów ), z tą główną różnicą, że każda para jest widoczna dla programu planującego.
Bardziej złożony układ obejmuje niesymetryczne grupowanie „dużych” i „MAŁYCH” rdzeni. Pojedynczy układ może mieć jeden lub dwa „duże” rdzenie i wiele innych „MAŁYCH” rdzeni lub odwrotnie. Nvidia stworzyła coś podobnego do tego z niskoenergetycznym „rdzeniem towarzyszącym” w Tegra 3 System-on-Chip .
Heterogeniczne wieloprzetwarzanie (globalne planowanie zadań)
Najpotężniejszym modelem wykorzystania architektury big.LITTLE jest Heterogeneous Multi-Processing (HMP), który umożliwia wykorzystanie wszystkich rdzeni fizycznych w tym samym czasie. Wątki o wysokim priorytecie lub intensywności obliczeniowej mogą w tym przypadku być przydzielane do „dużych” rdzeni, podczas gdy wątki o niższym priorytecie lub mniejszej intensywności obliczeniowej, takie jak zadania w tle, mogą być wykonywane przez „MAŁE” rdzenie.
Model ten został zaimplementowany w Samsung Exynos począwszy od serii Exynos 5 Octa (5420, 5422, 5430) oraz w procesorach Apple serii A począwszy od Apple A11 .
Planowanie
Sparowany układ umożliwia przełączanie w sposób przezroczysty dla systemu operacyjnego przy użyciu istniejącej funkcji dynamicznego skalowania napięcia i częstotliwości (DVFS). Istniejąca obsługa DVFS w jądrze (np. cpufreq
w Linuksie) po prostu widzi listę częstotliwości/napięć i przełącza się między nimi według własnego uznania, tak jak ma to miejsce na istniejącym sprzęcie. Jednak automaty z niższej półki aktywują rdzeń „Mały”, a automaty z wyższej półki aktywują rdzeń „Duży”. Jest to wczesne rozwiązanie zapewniane przez harmonogram procesora „deadline” Linuksa (nie mylić z harmonogramem we/wy o tej samej nazwie) od 2012 roku.
Alternatywnie, wszystkie rdzenie mogą zostać udostępnione harmonogramowi jądra , który zadecyduje, gdzie zostanie wykonany każdy proces/wątek. Będzie to wymagane w przypadku układu niesparowanego, ale może być również użyte w sparowanych rdzeniach. Stwarza to wyjątkowe problemy dla harmonogramu jądra, który, przynajmniej w przypadku nowoczesnego sprzętu towarowego, był w stanie założyć, że wszystkie rdzenie w systemie SMP są równe, a nie heterogeniczne . Dodatek z 2019 roku do Linuksa 5.0 o nazwie Energy Aware Scheduling jest przykładem harmonogramu, który inaczej traktuje rdzenie.
Zalety globalnego planowania zadań
- Dokładniejsza kontrola obciążeń migrowanych między rdzeniami. Ponieważ program planujący bezpośrednio przenosi zadania między rdzeniami, zmniejsza się obciążenie jądra i można odpowiednio zwiększyć oszczędność energii .
- Implementacja w harmonogramie sprawia też, że decyzje o przełączaniu są szybsze niż we frameworku cpufreq zaimplementowanym w IKS.
- Możliwość łatwej obsługi niesymetrycznych klastrów (np. z 2 rdzeniami Cortex-A15 i 4 rdzeniami Cortex-A7).
- Możliwość jednoczesnego korzystania ze wszystkich rdzeni w celu zapewnienia lepszej szczytowej przepustowości SoC w porównaniu z IKS.
Następca
W maju 2017 ARM ogłosił DynamIQ jako następcę big.LITTLE. Oczekuje się, że DynamIQ pozwoli na większą elastyczność i skalowalność podczas projektowania procesorów wielordzeniowych. W przeciwieństwie do big.LITTLE zwiększa maksymalną liczbę rdzeni w klastrze do 8, pozwala na różne projekty rdzeni w ramach jednego klastra i łącznie do 32 klastrów. Technologia oferuje również bardziej precyzyjną kontrolę napięcia na rdzeń i szybsze prędkości pamięci podręcznej L2. Jednak DynamIQ jest niekompatybilny z poprzednimi projektami ARM i początkowo jest obsługiwany tylko przez Cortex-A75 i Cortex-A55 .
Dalsza lektura
- David Zinman (25 stycznia 2013). „status big.LITTLE MP 25 stycznia 2013 r.” . LWN.net . Źródło 25 stycznia 2013 r .
- Nicolas Pitre (15 lutego 2012). „Obsługa Linuksa dla ARM big.LITTLE” . LWN.net . Źródło 18 października 2012 r .
- Paul McKenney (12 czerwca 2012). „Aktualizacja programu planującego big.LITTLE” . LWN.net . Źródło 18 października 2012 r .
- Jake Edge (5 września 2012). „KS2012: ARM: duża, MAŁA aktualizacja” . LWN.net . Źródło 18 października 2012 r .
- Jon Stokes (20 października 2011). „Nowy Cortex A7 firmy ARM jest dostosowany do supertelefonów z systemem Android” . Ars Technica . Źródło 31 października 2012 r .
- Andrew Cunningham (30 października 2012). „ARM jest 64-bitowy z nowymi projektami Cortex-A53 i Cortex-A57” . Ars Technica . Źródło 31 października 2012 r .
Linki zewnętrzne
- big.LITTLE Przetwarzanie
- Przetwarzanie big.LITTLE z ARM CortexTM-A15 i Cortex-A7 (PDF) (pełne wyjaśnienie techniczne)