RAMIĘ duże.MAŁE

Cortex A57/A53 MPCore big.LITTLE chip procesora

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

Duże i małe przełączanie klastrowe

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)

Duży, mały przełącznik w jądrze

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ń)

Duże, małe, heterogeniczne przetwarzanie wieloprocesorowe

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

Linki zewnętrzne