Gli Fpga migliorano le prestazioni finanziarie

Dall’avvento del commercio elettronico, una corsa verso la velocità ha portato alla costruzione di piattaforme di commercio più veloci e intelligenti. Intelligente e veloce si traduce in denaro. La piattaforma commerciale che sia in grado di identificare un’opportunità di scambio commerciale e di eseguirla per prima avrà la meglio. Il tempo di risposta è diminuito da secondi a millisecondi a microsecondi. Il passaggio verso tempi di risposta dell’ordine dei microsecondi e al di sotto dei microsecondi, semplicemente non è possibile con il software tradizionale o con semplici architetture hardware, un fatto che sta spingendo verso l’adozione della tecnologia Fpga in sistemi con latenza ultra ridotta. Tuttavia, la programmazione di Fpga richiede lo sviluppo e la migrazione delle strategie esistenti di scambio commerciale (scritte in C e in C++) nel linguaggio macchina Hdl, il che rappresenta un insieme sostanzialmente diverso di abilità rispetto alla programmazione in C e in C++ standard, e richiede investimenti in personale, strumenti e tempo. Sono disponibili i compilatori da C a Hdl, che trasportano il codice C esistente verso un linguaggio di descrizione hardware (Hdl), e sono più veloci rispetto allo sviluppo del codice usando l’Hdl da zero. Tuttavia, chi lavora nel trasporto del codice deve avere familiarità con la programmazione hardware o deve seguire delle linee guida specifiche allo scopo di generare codice accettabile. Anche in questo caso, il codice ottenuto potrebbe essere opaco e meno efficiente rispetto al codice sviluppato in modo nativo in Hdl. Per ridurre il rischio insito nello sviluppo del codice Hdl in modo nativo su una scheda Ethernet Fpga, tagliando al contempo il tempo di sviluppo, AdvancedIO è stata pioniere nell’uso di infrastrutture Fpga per le comunicazioni Ethernet a 10 Gigabit. Il nostro insieme di strumenti di sviluppo dell’infrastruttura fornisce l’infrastruttura necessaria per assicurare la rapida adozione di servizi finanziari e consente la portabilità diretta verso le ultime generazioni di schede Fpga. Esso integra e ottimizza tutte le funzionalità di base richieste per sviluppare le applicazioni, minimizzando i costi di licenza verso terzi e accorciando i tempi del ciclo di sviluppo. I gruppi di sviluppo possono quindi integrare uno strumento di compilazione da C a Hdl all’interno dell’infrastruttura e di conseguenza dispongono di una scelta di opzioni per lo sviluppo di componenti diversi delle applicazioni. In realtà, entrambi i metodi trovano spazio all’interno del progetto. Laddove l’efficienza e il codice compatto sono essenziali o nei casi in cui i componenti sono usati in più progetti, è meglio sviluppare i componenti Hdl in modo nativo, usando l’infrastruttura expressXG. Nei casi in cui sia necessario ottenere un time to market rapido e la personalizzazione del progetto, e dove il codice sia disponibile in C, potrebbe essere desiderabile usare un tool compilatore da C a Hdl. Questo approccio fornisce una risposta alla barriera legata al timore che molti nell’industria finanziaria provano per gli Fpga, senza compromettere le prestazioni.

Il commercio algoritmico
In un sistema di commercio algoritmico, gli algoritmi che girano su computer ad alte prestazioni gestiscono gli affari e prendono decisioni. Tali sistemi usano più tecniche per minimizzare la latenza e ottenere un vantaggio competitivo. Queste tecniche includono la co-locazione con diversi scambi, l’uso di reti con il percorso più breve e l’utilizzo della tecnologia 10GE per ottenere una latenza inferiore. Il commercio in borsa è riservato a broker-operatori e a società di mercato che sono membri del mercato di scambio. Alcune di queste società forniscono servizi ad altre società e consentono loro di usare l’Accesso Diretto al Mercato agli ordinativi di scambio attraverso i propri conti. Le società che forniscono l’Accesso Diretto al Mercato devono effettuare controlli di gestione dei rischi pre-trade per limitare la propria esposizione finanziaria e soddisfare i requisiti normativi. Per fare ciò, devono adottare server con software per effettuare controlli su tutti gli scambi che passano attraverso i propri conti. Questo deve aver luogo in tempo reale, perché ogni ritardo significa svantaggio. Le piattaforme pre-trade esistenti per la gestione del rischio basate su software richiedono tempi dell’ordine delle decine di microsecondi per effettuare i controlli richiesti dalle disposizioni sulle transazioni finanziarie. Chiaramente, questo non è abbastanza rapido per gli investitori di oggi. La Fig. 1 mostra gli elementi di un sistema di scambio semplificato. In realtà, un ATS potrebbe avere molti più elementi, come server aggiuntivi o nuvole di calcolo per eseguire algoritmi più sofisticati che non discuteremo qui. Un sistema di scambi commerciali potrebbe connettersi direttamente a più scambi o attraverso uno o più server di interfaccia di scambio, reti di comunicazione elettronica o altri mezzi. In più, i firewall e i sistemi di rilevazione delle intrusioni sono componenti chiave di una infrastruttura commerciale robusta.

Limitazione delle soluzioni basate su software
Un ATS deve essere in grado di ricevere più dati in ingresso dal mercato, di decodificare i diversi protocolli usati, di filtrare i simboli di scambio desiderati e di inviarli a “cestelli” predefiniti che gli algoritmi di scambio (TA) analizzeranno. Una volta che i TA decidono che uno scambio debba essere effettuato, inviano una richiesta al sistema di gestione degli ordini (OMS), che comunica con il server di interfaccia di scambio o con gli scambi stessi, effettua gli ordini e riceve le conferme. Un server ATS può anche contrassegnare i dati in ingresso con una marca temporale ultra accurata e inviarla per l’archiviazione. La marca temporale e la cattura dei dati di mercato possono essere effettuati sia sullo stesso server o su un server separato. Un ATS potrebbe ricevere dati da più scambi a una velocità dati aggregata che supera i 6 Gbps. Recentemente, il Nasdaq ha dichiarato la propria intenzione di offrire connettività a 40 GBps ai propri clienti dei data centre, soggetti ad approvazione normativa. Questa velocità crescente dei dati sta ponendo uno sforzo significativo sui processori a livello di sistema e si sta sottraendo dall’importante compito di analizzare i dati e di prendere decisioni sugli scambi commerciali. I test sui file server che usano schede di interfaccia di rete 10GE standard hanno mostrato che quando si effettuano trasferimenti Tcp attraverso i propri stack nativi, anche i processori da 2,2 GHz possono essere utilizzati pressoché al 100% solo eseguendo i protocolli IP, pur raggiungendo solo velocità di trasmissione dati di meno di 5 GBps. Per ovviare a questa situazione, un approccio consiste nell’usare un componente hardware noto come unità di decongestionamento del Tcp o Toe per accelerare lo stack di rete. Questo porta a qualche miglioramento nel tempo di risposta. Anche con il Toe effettuato sulla scheda di rete, la quantità di dati che passa al processore principale è così grande da provocare un ritardo inaccettabile. Un Fpga fornisce un livello di parallelismo alle applicazioni finanziarie che è impossibile da eguagliare con processori con funzione generica. I progettisti si stanno ora sforzando di concentrare il massimo numero possibile di funzionalità all’interno di questi Fpga. Per ridurre la latenza, è necessario filtrare i dati rilevanti alla scheda di rete prima di passarli al processore principale di sistema. Quando l’intero carico di lavoro è svolto a livello dell’Fpga, il tempo di risposta è più veloce. Inoltre, un Fpga fornirà lo stesso tempo di risposta indipendentemente dal livello del carico. Questo non è vero con un normale processore. Quando un processore è soggetto a un carico ridotto, il tempo di risposta è prevedibile, ma con un carico elevato il tempo di risposta aumenta e diventa imprevedibile. Attualmente la comunicazione fra processori e schede Ethernet avviene attraverso il bus Pci Express. In teoria, un bus Pci Express Gen 2 a 8 canali offre prestazioni di picco da 4 Gbps. Tuttavia, Pci Express è soggetto a latenze intrinseche ai driver dei dispositivi e alla gestione degli interrupt del sistema operativo. Esistono chiari vantaggi nell’effettuare calcoli finanziari sulla scheda di rete senza dover attraversare il bus Pci Express verso il processore host. La tecnologia Fpga è un candidato eccellente per le applicazioni finanziarie grazie alla sua capacità di elaborare enormi quantità di dati in tempo reale, in modo coerente e con latenza ridotta. In termini semplici, un Fpga fornisce un livello di parallelismo impossibile da eguagliare. A causa delle maggiori prestazioni e della straordinaria velocità che stanno fornendo ai sistemi di scambi commerciali, i progettisti stanno cercando di concentrare il maggior numero possibile di funzionalità all’interno di questi Fpga, per ridurre il tempo di risposta.

I vantaggi della tecnologia Fpga
Una soluzione in cui un Fpga esegue gli scambi sulle schede Ethernet presenta molti vantaggi:
-    l’esecuzione di scambi nei pressi dell’interfaccia fisica della rete elimina le latenze causate dai bus host, dal processore host e dal sistema operativo. Questo migliora drasticamente il tempo di risposta allo scambio.
-    Gli Fpga assicurano velocità in tempo reale, consentendo l’esecuzione di parte dell’algoritmo che individua e agisce sulle opportunità di scambio pressoché istantaneamente, prima che altri neppure notino l’opportunità.
-    Gli Fpga possono essere riprogrammati durante il funzionamento, consentendo di cambiare i parametri e di aggiornare gli algoritmi per mantenere il vantaggio rispetto alla concorrenza.
-    Gli Fpga sono eccellenti nell’elaborazione parallela, che consente loro di agire su più scambi commerciali simultaneamente.

Le applicazioni finanziarie con latenza super ridotta sono difficili da realizzare, dato che devono operare in tempo reale con una banda molto elevata e devono eseguire algoritmi complessi, e per questo richiedono architetture speciali, che devono tenere in considerazione la necessità di bilanciare algoritmi intensivi dal punto di vista computazionale con la necessità di velocità di risposta immediata agli scambi. I progettisti devono rimuovere i colli di bottiglia e minimizzare le latenze nelle comunicazioni e nell’elaborazione. Per evitare le latenze associate con il bus di sistema host, è importante scegliere Fpga potenti per eseguire le parti essenziali degli algoritmi di scambio commerciale, assieme a quantità considerevoli di memoria Sram e Sdram e alle porte di comunicazione con latenza ultra-ridotta. La programmazione di un Fpga attraverso un modulo hardware disponibile in commercio richiede più sforzi e un insieme di competenze specifiche per creare il software per processori singoli o multicore. Queste caratteristiche potrebbero aumentare il rischio percepito relativamente agli Fpga e le tempistiche di realizzazione, portando alcuni responsabili di progetto ad evitarli e ripiegando su realizzazioni software subottimali. In più, gli algoritmi di scambio esistenti sono scritti pressoché esclusivamente in C e in C++ e trasportarli in codice Hdl non è banale. Ci sono stati numerosi approcci alla semplificazione del compito di programmare gli Fpga, come i core sintetizzati dedicati, i core software e i tool per trasportare il codice C nei linguaggi Hdl, ma al momento non esiste un sostituto della programmazione Hdl diretta.

Tool Hdl nativi e tool da C a Hdl
Uno studio effettuato presso la George Washington University ha esaminato i tool in linguaggio ad alto livello che generano codice Hdl per Fpga usati in computer riconfigurabili ad alte prestazioni, e hanno sviluppato degli indicatori per misurare l’efficienza e la produttività dei vari tool rispetto all’Hdl nativo. I risultati mostrano che i tool da Hll a Hdl hanno ridotto il tempo di sviluppo anche del 61% in relazione al tool usato. Tuttavia, i risultati hanno anche mostrato che il codice ottenuto è meno efficiente rispetto al codice Hdl nativo, con l’area di utilizzo in aumento anche del 36% e una riduzione della frequenza anche del 50%. Inoltre, la ricerca evidenzia una riduzione considerevole nelle rese quando si usano alcuni di questi tool. In più, il codice che questi tool hanno generato è opaco, il che rende sfidante la ricerca di errori a livello di Hdl.. Prevediamo che, con la realizzazione su Fpga di algoritmi più complessi, vedremo più risparmi nel tempo con l’uso dei tool di conversione da Hll a Hdl. Questo è vero in particolar modo quando gli algoritmi sono già disponibili in C e devono essere trasportati in Hdl piuttosto che essere scritti prima in C e quindi trasportati. È importante ricordare che C e Hdl sono diversi, e non tutto quello che è scritto in C si traduce bene in Hdl. Esistono attualmente diverse varianti o sottoinsiemi del linguaggio C in uso presso i produttori. È in corso un tentativo di standardizzare OpenCL, uno standard aperto per processori moderni di programmazione parallela cross-piattaforma che sono stati adattati per l’uso su Fpga.

Ambiente di sviluppo Fpga in Hdl
Un approccio per semplificare e ridurre il ciclo di sviluppo consiste nell’usare una struttura scritta in Hdl nativo che sia ottimizzata per la latenza e le prestazioni. La struttura astrae i dettagli dei protocolli Ethernet e delle interfacce, dei controllori di memoria e delle interfacce della matrice ospite, riducendo i tempi di sviluppo di algoritmi dedicati. Questo consente agli sviluppatori di concentrarsi sullo sviluppo delle applicazioni e sull’integrazione. Un’infrastruttura di sviluppo adeguata deve assicurare la portabilità dell’applicazione fra famiglie di Fpga e all’interno della stessa famiglia di schede. Questo riduce i costi della migrazione futura o dei cicli di aggiornamento. Abbiamo realizzato e validato la nostra infrastruttura di sviluppo sulle varie famiglie di schede 10GE ad alte prestazioni di AdvancedIO Systems. La scheda V5022, ottimizzata per gli scambi commerciali, include la famiglia Virtex-6 HXT di Fpga di Xilinx, che offre un gran numero di risorse logiche per la realizzazione di algoritmi complessi. Dispone di due banchi indipendenti di un massimo di 8 Gbyte, di Sdram Ddr3 da 533 MHz e di quattro banchi indipendenti di un massimo di 144 Mbit, Sdram QDRII+ da 533 MHz, Sram QDRII+ da 350 MHz, ideale per algoritmi avanzati che richiedono una memoria temporanea o lookup table ultra veloci. La scheda V5022 ha quattro porte 10GE e offre una riduzione significativa della latenza misurata dal cavo ottico all’interfaccia Mac (Strato 2) all’interno del dispositivo Fpga. La scheda V5022 supporta un’interfaccia host Pci Express Gen 2. Una porta integrata ad alta velocità assicura comunicazioni ultra veloci fra diverse schede all’interno del sistema, senza la necessità di usare il bus di sistema host, fornendo un’ulteriore riduzione della latenza. Questo fornisce la piattaforma di scambio con capacità aggiuntiva di elaborazione ad alta velocità per la realizzazione di algoritmi di scambio commerciale più complessi. L’infrastruttura di sviluppo fornisce le principali funzionalità che devono essere integrate all’interno della scheda per assicurare che tutto funzioni come dovrebbe. L’ambiente di sviluppo offre un grande valore per i responsabili di progetto e aiuta con il time-to-market. AdvancedIO ha svolto un lavoro completo per assicurare che la propria infrastruttura sia ottimizzata per fornire le migliori prestazioni possibili, che occupi un ingombro ridotto e funzioni in modo efficiente. Questo lascia disponibili il grosso delle risorse Fpga per lo sviluppo delle applicazioni. Ad esempio, sulla scheda V5022 e quando si usa il dispositivo Virtex-6 HX565T, l’infrastruttura occupa meno del 7,5% delle risorse dell’Fpga. Queste includono un’interfaccia PCIe, quattro interfacce 10GE, due controllori Sdram e quattro controllori Sram. L’ambiente di sviluppo fornisce un “ambiente completo” in cui i programmatori possono sviluppare le proprie applicazioni.

Velocità, responsività e prevedibilità
Nel settore degli scambi finanziari, la spinta verso una maggiore velocità e verso la latenza ultra ridotta necessita dell’adozione della tecnologia Fpga. Gli utenti in questo settore affrontano molte sfide, inclusa la scarsa familiarità con la progettazione Fpga, diversi insiemi di competenze e un’ampia base di codice esistente nei linguaggi di alto livello, fra gli altri. Il nostro ambiente di sviluppo promette di semplificare e di abbreviare lo sviluppo di applicazioni su schede Ethernet Pci Express ad alte prestazioni alimentate da Fpga. Per assistere al trasporto del codice C esistente o nei casi in cui il time-to-market è essenziale, proponiamo di integrare un compilatore da C a Hdl all’interno di questo ambiente. Riteniamo che expressXG, integrato con un compilatore da C a Hdl, assisterà nell’adozione della tecnologia Fpga, migliorando la velocità, la responsività e la prevedibilità dei sistemi di scambi commerciali.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome