Suchen

Verteilte DMA-Architektur Höhere Bandbreite in Embedded-Anwendungen

| Autor / Redakteur: Dany Nativel* / Holger Heller

Breitbandzugang ermöglicht ein völlig neues Internet-Erlebnis und den Zugriff auf neue, datenintensive Inhalte, wie Musik und Filme. Die Mikrocontroller, auf denen diese neuen Anwendungen basieren, müssen riesige Datenmengen mit hoher Geschwindigkeiten speichern und verarbeiten.

Firma zum Thema

( Archiv: Vogel Business Media )

Neben einer hohen Datenverarbeitungsgeschwindigkeit spielt vor allem das Verschieben von Daten zwischen den Peripheriemodulen, dem Speicher und dem Prozessor eine wichtige Rolle bei MCUs, die in Breitband-Applikationen zum Einsatz kommen. Außerdem müssen sie noch eine grafische Bedienerschnittstelle unterstützen. Die Anforderungen an den Datentransfer in einem typischen MCU-System-on-Chip auf ARM-Basis sind in Bild 1 dargestellt. Bevor solche datenintensiven Anwendungen auf den Markt kamen, war der einschränkende Faktor bei den meisten Anwendungen die Fähigkeit der CPU, kleine Mengen an Daten schnell genug zu verarbeiten.

Ein 32-Bit-Prozessor, der alle Kommunikationsverbindungen und Datenübertragungsabläufe direkt verwaltet, verschiebt die von einem Peripheriemodul erhaltenen Daten zunächst in einen lokalen Scratchpad-Speicher in einem On-Chip-SRAM oder externem SDRAM. Dann werden die Daten verarbeitet und zur weiteren Übertragung wieder zu einem anderen Peripheriemodul kopiert. Dieser Load-Register-(LDR-)Store-Register-(STR-)Ablauf benötigt mindestens 15 Takte pro zu übertragendem Byte.

Bildergalerie

Konventionelle ARM9-Prozessoren mit einer Taktfrequenz von 200 MHz und einem internen Bus mit 100 MHz erreichen dabei ihre Grenzen, wenn das Peripheriemodul mit einer Datenübertragungsrate von ca. 20 MBit/s arbeitet – was nicht einmal für eine SPI-Schnittstelle oder einen SSC, ausreicht, ganz zu schweigen von einem Ethernetdatentransfer mit 100 MBit/s. Wenn die Memory Management Unit (MMU) und das Anweisungs- und Datencache deaktiviert werden, erreicht der ARM9-Controller schon bei 4 MBit/s seine Grenzen, was nicht einmal genug ist für einen Hochgeschwindigkeits-UART. Traditionell wurde dieses Problem der extremen Beschränkung der Bandbreite dadurch gelöst, dass man die Taktfrequenz des Prozessors erhöht hat.

Selbst hohe Taktraten reichen nicht mehr aus

Angesichts der steigenden Verwendung neuer Hochgeschwindigkeits-Peripheriemodule reicht aber nicht einmal mehr ein 1-GHz –Prozessor aus, um den gesamten Datentransfer abzuwickeln. Heutige Anwendungen umfassen Peripheriemodule mit hohen Bandbreiten, wie z.B. 100-MBit/s-Ethernet, 12-MBit/s-USB, 50-MBit/s-SPI, VGA-LCD-Controller und Mega-Pixel-Kameraschnittstellen. Bei 100 MBit/s ist die CPU voll und ganz damit beschäftigt, Daten hin und her zu verschieben. Die große Herausforderungen ist daher heute nicht mehr die Rechenleistung, sondern die Bandbreite.

Die Hersteller haben versucht, dieses Problem dadurch zu lösen, dass sie die On-Chip-Peripheriemodule durch zusätzliche FIFOs ergänzt haben. FIFOs können aber die Bandbreite an sich nicht erhöhen, sondern sie reduzieren lediglich die Spitzen bei der Datenübertragung, indem sie den Spitzenbedarf über eine bestimmte Zeit verteilen. Die LDR/STR-Prozessorarchitektur bedeutet, dass der Prozessor jeden einzelnen dieser Bytetransfers ausführen muss und nimmt dem Prozessor damit Taktzyklen weg, die dieser eigentlich für die Verarbeitung benötigt.

Durch Direct Memory Access (DMA) kann dieses Problem teilweise gelöst werden, da ein direkter Datentransfer von den Peripherieeinheiten in die Speicher ohne Beteiligung der CPU möglich ist, was wertvolle CPU-Takte spart. Für den Datentransfer verwendet der DMA zwar immer noch den gleichen Bus wie die CPU, aber der Datentransfer wird dadurch, was die Anzahl der Takte betrifft, mindestens 10 Mal effizienter als bei Übertragung durch den Prozessor. DMA ist eine natürliche Entwicklung bei Embedded-Architekturen, bei denen die Anzahl von On-Chip-Peripheriemodulen und die Datentransferraten exponentiell gestiegen sind.

Overhead und Komplexität vermeiden

DMA-Controller sind andererseits aber im Wesentlichen für den Datentransfer zwischen Speichern konzipiert, nicht für die Datenübertragung zwischen Peripheriemodulen und Speichern. Ein solcher DMA bietet leistungsstarke Datentransfermodi wie Scatter And Gather und Linked Lists, die bei Datentransfers zwischen Speichern sehr effizient sind, die aber für den Transfer zwischen Peripherie und Speicher nicht eingesetzt werden. Dies führt zu einem unnötigen Softwareoverhead und unnötiger Komplexität im System.

Ein optimierter Peripheral-DMA -Kanal ist ca. 10 Mal kleiner als ein Memory-to-Memory-DMA. Dies ermöglicht die Implementierung eines eigenen DMA-Kanals für jedes Peripheriemodul, ohne dass dadurch unakzeptabel hohe zusätzliche Kosten entstehen. Durch das Verschieben der DMA-Kanalkonfiguration und der Steuerregister in den Speicherbereich der Peripherie werden die Peripherietreiber erheblich vereinfacht. Der Anwendungsentwickler muss lediglich den Zielpuffer im Speicher konfigurieren, die Anzahl der Transfers angeben und den Transfervorgang initiieren. Alles andere erfolgt in Hardware; der Softwareoverhead is dabei minimal.

Wenn mehrere DMA-Controller und der Prozessor große Mengen an Daten über einen einzigen Bus verschieben, dann wird die Busbandbreite sehr schnell zu einem limitierenden Faktor. Ein mit 100 MHz getakteter 32-Bit-Bus hat eine maximale Datenübertragungsrate von 3,2 GBit/s. Das hört sich zwar zunächst nach viel an, bei vielen datenintensiven Anwendungen jedoch kann das Datenvolumen so groß sein, dass der Bus selbst zum Engpass wird. Beispiele hierfür sind unter anderem das Internet-Radio, bei dem die Audioqualität direkt abhängig ist von der Fähigkeit, einen Inhaltsdatenstrom in einem festen Zeitraster zu empfangen und zu verarbeiten, oder GPS-Satellitennavigationssysteme mit interaktiver Vektorgrafik.

Unabhängige Bussysteme

Atmel schlägt bei der Prozessorarchitektur für Anwendungen mit hohen Datenübertragungsraten einen neuen Weg ein, der die verteilte Verwendung von einfachem, siliziumeffizientem DMA innerhalb der einzelnen Peripheriemodule auf allen seinen 32-Bit-ARM7/9- und AVR-basierten Prozessoren beinhaltet. Außerdem hat das Unternehmen den Engpass auf dem internen Bus auf seinen ARM9-Chips durch Verwendung mehrerer paralleler On-Chip-Bussysteme und eines kleinen On-Chip-Scratchpad-Speichers beseitigt. Je nach der Anzahl der Peripheriemodule auf dem Chip hat eine ARM9-basierte MCU von Atmel zwischen fünf und neun unabhängige Bussysteme.

Diese Architektur verdeutlicht der in BIld 2 gezeigte AT91SAM9263. Die AHB-Matrix bietet neun parallele 32-Bit-Bussysteme für den Datentransfer zwischen dem ARM9-Prozessorkern, der Systemperipherie sowie On-Chip- und Off-Chip-Speicherbausteinen. Außerdem bietet die Schnittstelle für das Tightly Coupled Memory (TCM) zwei unabhängige Pfade zwischen dem Prozessor und dem On-Chip-RAM – für Anweisungen und Daten. Durch die beiden parallelen externen Busschnittstellen (EBI) kann der Prozessor einen externen Speicher gleichzeitig zum Holen von Anweisungen und Daten verwendeten, während ein Peripheriemodul wie z.B. der LCD-Controller einen anderen externen Speicher als Frame-Puffer verwendet.

Alle Systemperipheriemodule haben eine DMA-Schnittstelle und parallel zur AHB/APB Bridge ist ein Peripheral DMA-Controller (PDC) vorhanden, der die Verbindung zu den DMA-Schnittstellen an allen seriellen APB-Peripheriemodulen bildet. Diese Architektur zeigt, wie die Verwendung mehrerer paralleler Datenbussysteme in Verbindung mit einem verteilten DMA erfolgreich das Problem der internen Datenbandbreite in einem komplexen SOCs lösen kann.

Das oben beschriebene Konzept bietet klare Vorteile im Hinblick auf Leistungsfähigkeit, Skalierbarkeit und Kosten. Bei Atmel-MCUs kann ein Peripheral DMA Controller so eingerichtet werden, dass er automatisch, ohne irgendeine Beteiligung der CPU, Daten zwischen den Peripheriemodulen und den Speichern überträgt. Außerdem passt der PDC sein Adressierungsverfahren automatisch der Größe der zu übertragenden Daten an (Byte, Halbwort oder Wort).

Eine Datentransferrate von 20 MBit/s, die einen konventionellen 200-MHz-ARM9-Prozessor komplett zum Stillstand bringen würde, kann auf den SAM9-Prozessoren von Atmel so ausgeführt werden, dass immer noch 100% der CPU-Takte für die Verarbeitung zur Verfügung stehen. Dies gilt, wenn der Prozessor einen anderen Speicher und einen anderen Bus verwendet als der Peripheral DMA Controller.

Die Maximierung der auf dem Chip zur Verfügung stehenden Bandbreite durch Verwendung zusätzlicher Bussysteme und Speicher erhöht zwar effektiv die Systemperformance, muss aber gegen die Kosten abgewogen werden. Im oben genannten Beispiel sinkt bei gemeinsamer Nutzung eines externen 100 MHz SDRAM die Anzahl der für die Verarbeitung zur Verfügung stehenden CPU-Takte auf 78%.

Anwendungsbeispiel: Bildaufbereitung

Ein 24-Bit-Farb-VGA-Panel benötigt einen Frame Buffer mit 900 KByte. Einen so großen Speicher auf dem Chip zu integrieren ist normalerweise nicht kosteneffektiv. Der LCD-Controller muss das Display-Panel mit Hilfe eines Frame Buffer aktualisieren, der in einem externen SDRAM untergebracht ist. Die Bildwiederholrate beträgt üblicherweise 60 Frames pro Sekunde. Bei einem VGA-Panel (640 × 480 Pixel) im 24-Bit-True-Color-Modus muss die CPU sechzig Mal pro Sekunde 7,2 MBit an Daten holen, d.h. 432 MBit/s. Ein 200-MHz-ARM9-Prozessor mit einem eigenen DMA-Controller und einem zweiten internen Bus, der Programmspeicher und Frame Buffer in einem externem SDRAM über eine externe 100-MHz-32-Bit –Busschnittstelle gemeinsam nutzt, führt zu einer Reduktion der zur Verarbeitung verfügbaren CPU-Takte auf 87%.

Der nächste Schritt zur Erhöhung der Bandbreite besteht darin, zwei parallele externe Busschnittstellen zu verwenden und z.B. den Frame Buffer des LCD-Controllers in einem zweiten externen Speicher unterzubringen. Eine solche Lösung, wie sie zum Beispiel im AT91SAM9263 eingesetzt wird, ermöglicht einen maximalen Leistungszuwachs, wenn der Prozessor einen Teil der Bildverarbeitung auf einen Co-Prozessor wie z.B. einen 2D-Grafikbeschleuniger überträgt. Der Leistungszuwachs ist dabei von der Anwendung abhängig, liegt aber in jedem Fall im zweistelligen Bereich.

Bei Anwendungen mit hoher Bandbreite, bei denen große Mengen an Daten verarbeitet und übertragen werden müssen, gerät selbst ein Hochleistungsprozessor wie der ARM926EJ-SO schnell an seine Grenzen. Die Abwicklung des Datentransfers zwischen der Peripherie und den Speichern über einen Peripheral DMA Controller trägt zu einem effizienten Datentransfer bei und erhöht den Datendurchsatz im System pro Taktzyklus. Durch zusätzliche Verwendung eigener Bussysteme auf dem Chip und zu externen Speichern, die den Verkehr zur CPU und zu etwaigen Hochgeschwindigkeitsperipheriemodulen handhaben, können Engpässe auf dem Bus verhindert werden.

*Dany Nativel ist Technical Product Marketing Manager bei Atmel in Rousset, Frankreich.

(ID:207597)