Koprozessor für iPhone & Co. Hat NXP seinen neuen Dual-Core-Controller mit Apple entwickelt?

Nachdem NXP mit dem Apple-M8 genannten Koprozessor im iPhone und iPad erfolgreich ist, hat der Chip-Hersteller mit dem LPC5410x eine neue Dual-Core-MCU-Familie vorgestellt. Vieles spricht dafür, dass der Chip mit Apple entwickelt wurde.

Erstmals tauchte ein NXP-Mikrocontroller als Apple-M7 im Jahr 2013 im iPhone 5S auf. Wie sein Nachfolger Apple-M8, der im iPhone 6 und im iPad Air 2 eindesignt wurde, handelt es sich um ein Derivat eines auf ARMs Cortex-M3 basierenden LPC18xx-Controllers. Für seinen Einsatzzweck bei sogenannten Always-On-Sensor-Anwendungen, d.h. das Einsammeln, Konsolidieren und Verarbeiten von Sensor-Daten, bevor diese vom Applikations-Prozessor bzw. den darauf laufenden Apps weiterverarbeitet werden, hat der Chip jedoch noch einen entscheidenen Nachteil: Der Cortex-M3 ist für die reine Überwachung der Sensoren, das Einsammeln der Daten und die Kommunikation zum Applikationsprozessor, was die Hauptaufgabe ist, eigentlich eine Hausnummer zu groß, sowohl was die Rechenleistung als auch was - und das ist das eigentliche Problem bei einem batteriebetriebenen Gerät - die Leistungsaufnahme im aktiven Modus angeht. Ausreichend wäre für diese Aufgaben zweifelsfrei ein ARM Cortex-M0+ mit seiner zweistufigen Pipeline und von-Neumann-Architektur.

Das Problem mit einem reinen Cortex-M0+-basierenden Chip würde jedoch dann auftreten, wenn es um die Zusammenführung und Verarbeitung der von den Sensoren gesammelten Daten geht: Hier wäre der M0+ potentiell überfordert und auch der M3 ist sicher nicht die allerbeste Wahl, fehlen ihm doch die Gleitkomma-Einheit und DSP-Erweiterungen des Cortex-M4F.

Auch wenn NXP offiziell natürlich keinerlei Statement zu der Geschäftsbeziehung zu Apple herausgibt, ist davon auszugehen, dass NXPs größter Kunde für Always-On-Sensor-Anwendungen beim Design des jetzt vorgestellten LPC5410x ein wichtiges Wort mitgeredet hat. Insofern bietet er einzigartige Einblicke in die Architektur des Next-Generation-Apple-M-Koprozessors, die uns bei M7 und M8 verborgen blieben.

Der LPC5410x basiert auf einer Dual-Core-Architektur mit Cortex-M4F und Cortex-M0+, die über ein nachrichtenbasiertes Mailbox-System miteinander kommunizieren. Beide können bei dem in NXPs 90-nm-Prozess gefertigten Chip bis 100 MHz getaktet werden, die Spannungsversorgung reicht von 1,62 bis 3,3 V, wobei beide Cores unabhängig im aktiven oder einem der vier Energiesparmodi betrieben werden können. NXP hat offenbar auch eingesehen, dass die bsiher bei seinen LPC-MCUs verwendetetn IP-Blöcke z.B. für A/D-Wandler nicht nur zu energiehungrig, sondern auch zu groß waren, um der gewüsnchten Preisgestaltung der Kunden zu entsprechen. In der Folge hat man diese von Grund auf neu entwickelt und einen deutlich kleineren Chip designt, der in einem 3,28x3,28 großen WLCSP-Gehäuse geliefert werden kann. Das Bild zeigt das Blockschaltbild der MCU.

Bei Ausführung von CoreMark-Code aus dem 256 bis 512 KB großen Flash-Speicher genehmigt sich der Cortex-M0+ bei 96 MHz 62,5 µA/MHz, bei 84 MHz 64,3 µA/MHz und bei 12 MHz 133,3 µA/MHz (der Cortex-M4F befindet sich im Sleep-Modus). Dies liegt nicht nur deutlich unter den Werten für den Cortex-M4F (108,3 µA/MHz bei 96 MHz, 107,1 µA/MHz bei 84 MHz und 175 µA/MHz bei 12 MHz bei Cortex-M0+ im Sleep-Modus) sondern vor allen Dingen auch unter den Werten der M3-basierten MCUs. Alle Werte wurden bei 25 °C ermittelt. Wenn man davon ausgeht, dass mindestens 80 % der Gesamtzeit im aktiven Modus ausschließlich vom M0+ abgearbeitet werden können, ist es leicht ersichtlich, welche Energieeinsparungen möglich sind.

Wie schon erwähnt, gibt es vier Energiesparmodi: Im Sleep-Modus wird der Core zusammen mit ungenutzter Peripherie angehalten, durch einen Reset oder Interrupt kann der aktive Modus innerhalb von 2,2 µs wieder aufgenommen werden. Die Leistungsaufnahme schrumpft auf 1,3 mA. Im Deep-Sleep-Modus werden neben dem SRAM lediglich der interne RC-Oszillator und der Watchdog-Timer betrieben, der Status der CPUs jedoch aufrechterhalten. Die Leistungsaufnahme beträgt je nach Versorgungsspannung 238 (1,62 V) bis 317 (3,3 V) µA. Die Aufweckzeit beträgt 17,9 µs. Ähnlich arbeitet der Chip im Power-Down-Modus, wobei der Flash jedoch statt im Stand-by-Modus zu verbleiben komplett abgeschaltet wird. Dazu kann man konfigurieren, ob auch Teile des SRAM abgeschaltet werden sollen. Die Aufweckzeit wird somit länger (23 µs), allerdings sinkt die Leistungsaufnahme nochmals deutlich: Bei 1,62 V Versorgungsspannung im Idealfall auf nur noch 3 µA (hier werden nur noch 8 KB SRAM versorgt) bis 5,4 µA (die kompletten 104 KB SRAM werden versorgt). Bei 3,3 V steigen die Werte auf 5 bzw. 6,2 µA.

Last but not least gibt es noch den Deep-Power-Down-Modus, bei dem der gesamte Chip mit Ausnahme der Echtezituhr-Power-Domain alles abgeschaltet wird. Das Aufwecken kann hier nur über einen Reset oder einen Alarm der Echtzeituhr erfolgen, die Leistungsaufnahme sinkt auf 84 bzw. 135 nA (bei 1,62 bzw. 3,3 V Versorgungsspannung).

Neben Flash und SRAM gibt es noch ein ROM mit 64 KB, das den Bootloader und APIs für PLL-Einstellungen sowie die Steuerung der Leistungsaufnahme und Flash-Programmierung enthält.

A/D-Wandler hat volle Geschwindigkeit bei 1,62 V

Bemerkenswert ist, dass der A/D-Wandler seine Abtastrate von 4,8 MSamples/s über den vollen Spannungsbereich liefert - also von 1,62 bis 3,3 V. Die I2C-Schnittstelle bietet im Slave-Modus bis zu 3,4 Mbit/s, was für die Schnittstelle zum Applikationsprozessor nützlich erscheint.

Neben seiner Funktion als Koprozessor in einem Mobilgerät, gibt es für den LPC541x sicherlich noch andere Anwendungen: Ein Beispiel ist sicherlich das Asset-Tracking, wo man heute oft noch 2-Chip-Designs findet (eine MCU für die Erfassung und eine für die Kommunikation), ein anderes Fabrikautomatisierungs-Roboter, wo die USARTs für die Steuerung der Motormodul-Schnittstellen genutzt werden können.

Interessant ist, dass NXP ein LPC54102 genanntes Sensor-Entwicklerboard anbietet, auf dem sich diverse Senoren von Bosch Sensortec befinden: Magnetometer, Beschleunigungsmesser, Gyroskop, Druck- und Temperatursensor. Wenn man bedenkt, welche Sensoren Apple derzeitig in seine Geräte eindesignt hat, ist der Rückschluß zum Next-Generation-iPhone nicht mehr so weit.

Der LPC541x ist mit seiner Dual-Core-Cortex-M-Architektur insoweit eine logische Weiterentwicklung, als dass man die meisten Tasks in Always-On-Anwendungen tatsächlich mit dem Cortex-M0+ abarbeiten und damit Energie sparen kann. Bei batteriebetriebenen Geräten, bei denen jede Minute zählt, ist dies tatsächlich ein entscheidener Fortschritt.