wtorek, 17 stycznia 2012

Jednostki obliczeniowe w smartfonach

ARM to architektura procesorów 32-bitowych typu RISC. Są szeroko stosowane na rynku elektronicznym i zajmują ponad 75% rynku 32-bitowych procesorów, oraz ok. 98% rynku telefonów i smartfonów.
Firma ARM Ltd. zajmuje się sprzedażą tylko samej architektury rdzenia. Produkcją procesorów zajmują się firmy odkupujące licencję od ARM Ltd.. Są to mi. Samsung, Apple, Quallcomm, IBM. Współpracują one także przy tworzeniu samej architektury z firmą ARM Ltd..
Swój wkład w architekturę procesorów ARM mają także firmy:
  • Analog Devices
  • Infineon
  • Marvell (dawniej Intel, linia procesorów PXA)
  • Freescale (odłam od Motoroli)
  • NEC
  • NXP (dawniej Philips, seria Nexperia )
  • Texas Instruments (linia procesorów OMAP)
  • Toshiba
  • NetSilicon
  • Atmel
Najczęściej wykorzystywanymi procesorami w obecnej chwili w nowych smartfonach są procesory ARM Cortex-A9. Są to procesory o wysokiej wydajności, bardzo niskim poborze mocy, z wbudowaną komórką w pamięci podręcznej L1 zapewniającą pełną integrację z podsystemem pamięcią wirtualnej. W procesorach Cortex-A9 zaimplementowano architekturę ARMv7-A umożliwiającą odczyt 32-bitowych instrukcji ARM, 16-bitowych i 32-bitowych instrukcji Thumb, oraz 8-bitowego bit-kod Java w trybie Jazelle.[1]
Procesor ten daje możliwość skalowania od 1 do 4 rdzeni o częstotliwości taktowania do 2GHz. Składa się on z koprocesora przypadającego na każdy rdzeń. Właściwych rdzenni. Pamięci wykonywalnej dla każdego rdzenia. Szeregu modułów synchronizujących pracę rdzeni i czuwających nad prawidłowym jego działaniem. Interfejsu za pomocą którego odbywa się komunikacja ze sprzętem. Moduł pokazany na samej górze schematu ułatwia pracę osobom projektującym układy SoC, umożliwiając szybkie wykrywanie błędów w układzie.
Mechanizm MPCore użyty w procesorach Context-A9 oraz we wcześniejszych modelach, jak również w najnowszym, Context A-15, jest to mechanizm zarządzający spójnością pomiędzy procesorami i rozdzieleniem pomiędzy nie linie kodu do wykonania. Jest to realizowane poprzez oznaczenie wszystkich linii kodu i przepisanie im flaga stanu. Sprzęt automatycznie zarządza wszystkimi stanami i liniami przenosząc je do poszczególnych pamięci podręcznych L1 każdego procesora. Funkcjonalność ta jest zaimplementowana w module Snoop Control Unit (SCU).


Schemat budowy procesora ARM Context-A9 MPCore
Schemat budowy procesora ARM Context-A9 MPCore

Mechanizm SCU zmienia sposób rozdzielania kodu wykonywalnego między procesorami jakie znamy z pecetów, gdzie przydzielaniem poszczególnych zadań do procesorów zajmuje się system operacyjny. Dane do przetworzenia trafiają po wstępnym przetworzeniu z jednego procesora do pamięci współdzielonej RAM lub L2 po czym dopiero, przesyłane są do innego procesora. w przypadku SCU część kodu jest automatycznie przenoszona do procesora, który potrzebuje tych danych lub jest najmniej obciążony, z pominięciem przenoszenia ich do pamięci współdzielonej. Redukuje to ruch między procesorami i pamięcią, co zwiększa wydajność procesora
Zastosowano w nich także technologię NEON. Jest to technologia oparta o 128-bitowy koprocesor ogólnego przeznaczenia typu SIMD[2], mający skutecznie przyspieszyć przetwarzanie bieżących i przyszłych formatów multimedialnych w celu zapewnienia elastycznego i potężnego przyspieszenia dla konsumentów aplikacji multimedialnych, zapewniając znacznie lepszy interfejs użytkownika. Technologia NEON może przyspieszyć przetwarzania sygnałów multimedialnych i algorytmów, takich jak kodowania/dekodowania plików wideo, sygnału audio i przetwarzania mowy, przetwarzania obrazu, przetwarzanie grafiki 2D/3D, wsparcie dla gier, wsparcie w telefonii i syntezy dźwięku przez co kilkakrotnie przyspiesza wykonywanie tych operacji przez procesor. Spełnia także zadania koprocesora FPU[3]
Aby procesor mógł się komunikować zastosowano standard AMBA AXI. AMBA jest otwartym protokółem łączności i zarządzania między funkcjonalnymi blokami układu SoC. Ułatwia projektowanie wieloprocesorowych układów z wieloma kontrolerami i urządzeniami peryferyjnymi. AXI jest ostatnią generacją protokołu AMBA o bardzo dużej wydajności i ograniczonym zużyciu energii.
Po za tym dochodzi do tego także moduł Generic Interrupt Controller and Distribution, czyli standardowy kontroler przerwań, zapewniający elastyczne podejście do komunikacji między procesorami, routingu i zarządzania priorytetami przerwań. Obsługuje do 224 niezależnych przerwań, pod kontrolą oprogramowania. Przerwania mogą być rozłożone między CPU i urządzeniami peryferyjnymi, oraz przesyłane między systemem operacyjnym i warstwą zarządzania. Ta elastyczność routingu, oraz wsparcie dla wirtualizacji przerwań w systemie operacyjnym stanowi jedną z kluczowych funkcji, dającą zwiększenie możliwości rozwiązania z wykorzystaniem menedżera parawirtualizacji.

[1] Jazelle – Stosowana w procesorach ARM do wykonywania kodu bajtowego Java. Korzysta z nisko poziomowego tłumaczenia binarnego, co umożliwia szybkie przejście z kodu bajtowego Java do natywnych instrukcji ARM.
[2] SIMD (ang. Single Instruction, Multiple Data) – jeden z podstawowych rodzajów architektur komputerowych według taksonomii Flynna, obejmujący systemy, w których przetwarzanych jest wiele strumieni danych w oparciu o pojedynczy strumień rozkazów. Architektura SIMD jest charakterystyczna dla komputerów wektorowych.
[3] FPU (ang. Floating Point Unit), jednostka zmiennoprzecinkowa to układ scalony wspomagający procesor w obliczeniach zmiennoprzecinkowych. W większości współczesnych konstrukcji, koprocesor arytmetyczny, a także jednostki obsługujące bardziej skomplikowane obliczenia (np. instrukcje wektorowe) są zintegrowane z procesorem w jednym układzie.

Brak komentarzy:

Prześlij komentarz