Programmierbare Logik & Embedded Computing

SBC auf Xilinx-FPGA - Es geht auch ohne Motherboard

Seite: 2/3

Anbieter zum Thema

Auf dem Application Layer läuft die Kommunikation mit ATA-Befehlen. Man könnte viele dieser Befehle als finite Zustandsmaschine in FPGA-Hardware implementieren. Doch eine Software-Implementierung ist viel effizienter und flexibler. Dazu bietet der Open-Source Linux-Kernel eine bekannt gute Implementierung.

Vorinstallierter FullGNU/Linux-Stack

Sie folgt dem ATA-Standard und hat sich in Millionen Bausteinen bewährt. Die Linux ATA Library (libATA) verarbeitet mehr als 100 ATA-Befehle, u.a. Datentransfers, aber auch SMART (Self-Monitoring Analysis and Reporting Technology) und Sicherheit (Secure Erase and Device Locking).

Diese Codebasis erfordert jedoch die Implementierung von hardware-abhängiger Software in Gestalt von Linux-Gerätetreibern (Linux-Kernel-Module). Die in Bild 2 gezeigte Missing Link Electronics „Soft“-Hardwareplattform kommt von ASICs World Service, mit vorinstalliertem FullGNU/Linux Software-Stack, getestetem und optimiertem Gerätetreiber für den SATA Host IP-Kern. Die Integration eines SATA IP-Kerns in ein FPGA-basiertes System bietet diverse Freiheitsgrade. Das volle Ausschöpfen der Systemeigenschaften erfordert somit gute Kenntnisse, nicht nur über Software oder Hardware – sondern über beides.

Bild 3 zeigt Beispiele der Systemintegration eines SATA IP-Kerns. Naheliegend ist ein IP-Kern als Slave am Bus (Option A), wobei die CPU die Transfers zwischen Speicher und IP absolviert. Dabei laufen die Daten zwei Mal über den Systembus. Bei niedrigen Datenraten genügt diese einfach zu implementierende Methode. Damit kann man die CPU aber nur für einen kleinen Application-Layer nutzen, denn die meiste Zeit ist sie mit dem Kopieren von Daten beschäftigt.

Systembus-Last verringern

Wenn die CPU mit einem vollständigen Betriebssystem laufen muss, hat das einen starken Effekt auf die Leistungsfähigkeit. In diesem Fall sollte man die CPU-Last durch eine spezielle Copy Engine reduzieren, etwa die Xilinx Central DMA (B). Dabei laufen die Daten immer noch zweimal über den Bus, doch die CPU verbringt nicht ihre Zeit mit Kopieren.

Trotzdem ist die Leistungsfähigkeit eines Systems mit vollem Betriebssystem weit entfernt von einer Standalone-Applikation, und beide liegen unterhalb der theoretisch möglichen Performance. Die dritte Option (C) ändert das, indem sie die Systembus-Last reduziert und einfache spezifische Copy Engines über den Xilinx Streaming NPI Port und den Multiport Memory Controller (MPMC) verwendet. Das bringt die Standalone-Applikation auf das theoretische Limit.

Allerdings ist die Linux-Performance eines solchen Systems immer noch begrenzt. In der Standalone-Applikation liegt der Engpass bekanntlich nicht im Interconnect, sondern im Linux-Speichermanagement, mit Blöcken von Seitengröße, in typischen Systemen also 4096 Bytes. Mit einer einfachen DMA Engine und in 4096-Byte-Blocks im RAM verteiltem Speicherplatz bewegt jeder Transfer nur 4096 Bytes. Die Architektur-Option D löst dieses Problem.

Höherer Transferumfang

Ein Beispiel: Der PowerPC PPC440-Kern im Virtex-5 FXT FPGA enthält spezifische Engines für SGDMA. Damit hat die DMA-Engine einen Pointer für eine Liste von Speichereinträgen und sendet und entnimmt Daten zu und von dieser Liste. Das vergrößert den Transferumfang und bringt das System sehr dicht an die Standalone-Performance.

Artikelfiles und Artikellinks

(ID:28607560)