Tuesday 17 April 2018

Fpga em sistemas de negociação


FPGA de Wall Street.
baixa latência, alto débito.
Por Terry Stratoudakis & # 8211; Wall Street FPGA, LLC & # 8211; New York City & # 8211; Março de 2018.
Este artigo apresenta um Sistema de Cancelamento de Ordem FIX Acelerado de Hardware. O mecanismo FIX de fonte aberta, QuickFIX é acelerado usando a tecnologia Field Programmable Gate Array (FPGA). A aceleração é realizada por uma placa de rede baseada em FPGA otimizada para QuickFIX. FIX 4.2 As mensagens Cancelar pedido são geradas inteiramente dentro do FPGA. A latência do gatilho Cancelar ordem para quando o primeiro byte está no fio é de 314 nanosegundos. A latência do gatilho de cancelamento de ordem para quando a primeira mensagem de Cancelamento de ordem FIX é inteiramente no fio é de 1.874 nanosegundos.
Introdução.
A maioria das negociações é cada vez mais feita eletronicamente usando computadores; veja a Figura 1. Os períodos de negociação máxima fornecem entre as melhores oportunidades comerciais para lucros, mas também apresentam o maior risco de perdas potenciais. Durante os períodos de pico de negociação, os dados de mercado que os sistemas de comércio devem consumir e processar surtos até o ponto em que os sistemas de negociação diminuem a velocidade e tornam-se ineficazes.
Figura 1 - Aggregate One Minute Peak Messages por segundo.
A Alta Frequência de Negociação (HFT) está impactando a dinâmica do mercado e gerou debates interessantes. Para alguns, HFT é um termo relativo. O que é chamado de HFT hoje pode ser a forma comum de negociação no futuro. E se uma empresa se engaja ou não na HFT, eles certamente precisarão proteger seus recursos de eventos como o & # 8220; Flash Crash & # 8221; de 6 de maio de 2018. É possível que uma empresa comercial usando um sistema de Cancelamento de Ordem com base em FPGA pudesse ter abandonado o mercado mais rapidamente do que qualquer outra empresa comercial - reduzindo assim as perdas em dias como este; veja a Figura 2 abaixo.
Figura 2 - Dow Jones Industrial Average em 6 de maio de 2018 (& # 8220; Flash Crash & # 8221;)
Protocolo FIX.
As empresas financeiras comunicam o mercado e comercializam dados através de padrões de mensagens, como o protocolo FIX. O Protocolo de troca de informações financeiras (FIX) é um padrão de mensagens para a troca eletrônica em tempo real de transações de títulos. O padrão FIX é gerenciado pelo FIX Protocol Limited (FPL), um organismo internacional de padrões sem fins lucrativos com membros de todos os aspectos do setor de serviços financeiros.
O software conhecido como FIX Engines é usado para processar e gerar mensagens FIX. QuickFIX é o mecanismo FIX de código aberto de facto. QuickFIX, bem como comercial e # 8220; fonte fechada e # 8221; Os motores FIX são utilizados por empresas financeiras.
As empresas financeiras estão voltando para a tecnologia de computação de alto desempenho (HPC) para fornecer essa vantagem extra sobre seus concorrentes. Todo o nível de software é otimizado, e nos últimos anos, as empresas estão otimizando o hardware de seus sistemas de negociação através do uso de hardware reconfigurável.
FPGAs: Hardware Reconfigurável.
O hardware reconfigurável, como a tecnologia Field Programmable Gate Array (FPGA), é usado para otimizar os sistemas de negociação no nível da rede. FPGAs podem ajudar na geração e processamento de dados de rede, descarregando assim determinadas tarefas do software de um sistema. O uso mais comum de FPGAs em finanças é Market Data Handling. FPGAs podem ter até 1000 núcleos para processar dados em paralelo e não têm o jitter introduzido pelos sistemas operacionais e a busca de instruções.
Um FPGA é programado usando um Idioma de Descrição de Hardware (HDL), como Verilog ou VHDL. Nem todos os algoritmos podem ser implementados em um FPGA. Isto é em parte devido à natureza dos FPGAs como uma tecnologia e também devido ao aspecto de baixo nível do HDL. O HDL requer mais conhecimento do hardware do destino do que a programação tradicional, como C ou C ++. A codificação HDL pode resultar em tempos de desenvolvimento de 3 a 5 vezes mais se o algoritmo pode mesmo ser implementado em um FPGA. Esses idiomas são difíceis de aprender e resultam em arquivos de código-fonte muito longos que muitas vezes realizam muito pouco com muito esforço. Por exemplo, o código VHDL para calcular a raiz quadrada de um número pode levar de 117 linhas para 396 linhas de código.
O protocolo FIX é baseado em string, emprestando-se a grandes benefícios de um FPGA. As funções de String estão entre as menos eficientes em uma CPU.
Plataforma tecnológica.
As tecnologias utilizadas neste sistema são PXI, FlexRIO e LabVIEW FPGA.
PXI (PCI eXtensions for Instrumentation) é um barramento de computador aberto e padronizado usando o formato CompactPCI. O PXI é baseado no barramento PCI com sincronização e sincronização integrada que é usada para encaminhar relógios e disparadores internamente. A PXI foi desenvolvida em 1997 e lançada em 1998. Hoje, a PXI é governada pela PXI Systems Alliance (PXISA), um grupo de mais de 70 empresas fretadas para promover o padrão PXI, garantir interoperabilidade e manter a especificação PXI. A PXISA também é responsável pelo bus PXI Express, que é baseado no bus de computador PCI Express encontrado em computadores mais novos.
Os sistemas PXI são compostos por três componentes básicos & # 8212; chassi, controlador e módulos periféricos. Por exemplo, um chassi montável em rack de 19 slots de 19 polegadas contém um controlador e 17 módulos de slot único. O controlador contém componentes de tamanho de laptop para compactação e pode executar o Windows, Linux e vários sistemas operacionais em tempo real. Existem módulos de 3U e 6U.
Como a PXI é baseada em tecnologias padrão de PC, como o Windows e o barramento PCI, a integração de um sistema PXI a esses sistemas é semelhante à integração desses sistemas com um PC. A PXI também oferece suporte a uma ampla gama de produtos Compact PCI, pois ambos são baseados no mesmo fator de forma.
O bus PXI combina o ônibus PCI de alta velocidade com sincronização e sincronização. O bus de disparo PXI consiste em 8 linhas de barramento de gatilho compartilhadas, um gatilho de estrela de baixa inclinação e um relógio comum de referência do sistema de 10 MHz. Usando esses recursos de sincronização, pode-se passar disparador, relógio e outros sinais entre os módulos PXI para fazer as medidas precisas e de alto desempenho.
O FlexRIO é uma plataforma de hardware reconfiguravel baseada em PXI e PXI Express desenvolvida pela National Instruments. Possui duas partes: módulos de matriz de porta programável de campo FlexRIO (FPGA) e módulos de adaptador FlexRIO. Juntos, eles formam um sistema de hardware de alto desempenho e reconfiguravel programável com software LabVIEW FPGA e sem conhecimentos de design de Hardware Description Language (HDL).
Módulos NI FlexRIO FPGA.
Os módulos FlexRIO FPGA utilizam um FPGA Virtex-5 com até 512 MB de DRAM DDR2 a bordo. Os módulos FlexRIO FPGA vêm nos formatos PXI e PXI Express e na interface para módulos adaptadores FlexRIO que fornecem E / S para o FPGA. Os módulos PXI FlexRIO possuem três (3) canais DMA para transmissão de dados de alta velocidade, enquanto os módulos PJA Flex200 de PXI possuem dezesseis (16) canais DMA. Veja a Figura 3.
A interface do módulo adaptador consiste em 132 linhas de E / S digitais de uso geral diretamente conectadas a pinos FPGA, além da potência, cronograma e circuitos suplementares necessários para definir a interface. Essas 132 linhas podem ser configuradas para operação de uma única extremidade a taxas de até 400 Mbits / s e operação diferencial a taxas de até 1 Gbit / s para uma largura de banda máxima de E / S de 66 Gbits / s (8,25 GB / s) . Todas as linhas são encaminhadas com impedância controlada, traços de comprimento combinado e os pares diferenciais são encaminhados.
O streaming de dados Peer-to-Peer é exclusivo dos módulos PXI Express NI FlexRIO FPGA. Isso permite que os bancos de até quatro (4) cartões PXI Express NI FlexRIO FPGA se comunicem de forma determinística entre si. Eles são capazes de transmitir dados entre módulos a taxas acima de 800 MB / s e latências de não mais de 10 microssegundos, pois os dados não são encaminhados através do chipset host. São suportados até 16 desses fluxos, simplificando esquemas complexos de comunicação multi-FPGA sem tributar os recursos da CPU do host.
Os cartões FlexRIO possuem RTSI, ou Real Time Signal Integration, que permite que as cartas sejam sincronizadas usando o barramento PXI. Os dispositivos habilitados para RTSI podem se comunicar diretamente em uma conexão elétrica de baixa latência.
Os módulos NI FlexRIO FPGA são acessíveis pelos sistemas operacionais Windows, Linux, PharLap e VxWorks através dos drivers NI RIO; A versão 3.5.1 dos drivers RIO foi usada para esta aplicação.
Figura 3 - Módulo FlexRIO FPGA.
FlexRIO Adapter Modules.
Os módulos adaptadores FlexRIO da National Instruments e terceiros interagem com os módulos FlexRIO FPGA através de um conector de bordo de cartão que encaminha os sinais FPGA necessários para o módulo adaptador. Os módulos adaptadores personalizados podem ser desenvolvidos com o kit de desenvolvimento de módulos de adaptador NI FlexRIO (MDK).
O Kit de Desenvolvimento do Módulo de Adaptador FlexRIO (MDK) pode ser usado para criar E / S personalizados para atender às necessidades exatas da aplicação. O conector de borda do cartão FlexRIO oferece acesso direto aos pinos de E / S digitais brutos do FPGA. Cada pino é capaz de taxas de sinalização diferencial de baixa tensão (LVDS) de até 1 Gb / s e taxas de ponta única até 400 Mb / s. Os módulos do adaptador são intercambiáveis ​​e definem as E / S disponíveis no ambiente de programação LabVIEW FPGA.
Neste documento, o Adaptador Gigabit Gigabit Prevas Mimas é usado, veja a Figura 4 abaixo.
Figura 4 - Prevas Mimas conectado ao Módulo NI FlexRIO.
LabVIEW FPGA.
FPGAs são programáveis ​​em campo, que economiza em custos de desenvolvimento e modificação. Antes de FPGAs, a lógica personalizada exigia um projeto esquemático que levava a Transferência de Nível de Registro (RTL). RTL que foi substituído por Verilog e VHDL. O aumento da capacidade de FPGA requer um maior nível de abstração. Na última década, a indústria desenvolveu HDL de alto nível. Isso permite que algoritmos mais complexos sejam implementados de forma mais oportuna.
National Instruments & # 8217; A plataforma FPVP do LabVIEW fornece uma abordagem gráfica para o desenvolvimento de lógica para um FPGA. Algoritmos financeiros complexos podem ser programados para FPGAs sem conhecimento aprofundado de design digital ou ferramentas complexas de Automação de Design Eletrônico (EDA). O LabVIEW é perfeitamente adequado para a programação FPGA porque fornece uma descrição intuitiva do paralelismo inerente que os FPGAs fornecem. Usando um alto nível, o ambiente de desenvolvimento gráfico (veja a Figura 5) do LabVIEW FPGA reduz o tempo de desenvolvimento sem comprometer os ganhos de desempenho de usar um FPGA.
Figura 5 - Diagrama de bloco da amostra do LabVIEW FPGA.
Sob o capô, o módulo LabVIEW FPGA usa técnicas de geração de código para sintetizar o ambiente de desenvolvimento gráfico para hardware FPGA que, em última instância, executa as ferramentas de síntese FPGA. Os ciclos temporizados de ciclo único (SCTL) no LabVIEW FPGA fornecem um nível de determinismo garantido para executar dentro de um período de tempo especificado de pelo menos 40 MHz. Neste artigo, utilizou-se um SCTL a 125 MHz.
O hardware personalizado pode ser usado para criar rotinas únicas de temporização e desencadeamento, controle de ultra alta velocidade, interface para protocolos digitais e aplicativos que exigem confiabilidade de hardware de alta velocidade e determinismo apertado. Neste trabalho, o LabVIEW FPGA é usado para criar um sistema baseado em hardware com conhecimento do protocolo.
Um corretor está conectado a uma troca. As mensagens comerciais entre o corretor e a troca usam o formato de protocolo FIX. O corretor envia ordens que a troca procura combinar. Todas as encomendas do corretor estão abertas até que uma ordem correspondente entre na troca. As ordens correspondentes são enviadas de volta ao corretor como executado. Em algum momento, o corretor-negociante detecta um & # 8220; evento & # 8221; resultando em sua necessidade de cancelar todas as ordens abertas. Assume-se que o evento detectado é aquele que fará com que muitos outros corretores desejem cancelar suas ordens abertas ao mesmo tempo, de modo que o tempo seria essencial e aqueles que cancelarem primeiro reduzirão suas perdas potenciais. Veja a Figura 6 abaixo.
Implementação.
Isso foi implementado usando dois computadores conectados diretamente através de um cabo Ethernet cruzado. Eles se comunicam usando o FIX 4.2 executando TCP / IP em 1 Gigabit / segundo. Ambos os computadores estão executando o Microsoft Windows XP em processadores Intel x86. Um computador representa o corretor-negociante e o outro o Exchange. O Broker-Dealer envia ao Exchange várias ordens de compra ou venda de tal forma que não executam. Após a detecção de um gatilho, o Broker-Dealer envia as mensagens de Cancelamento de Ordem FIX para todas as ordens abertas. Veja a Figura 7.
Computador comerciante-negociante.
O computador Broker-Dealer é composto de um computador conectado a um chassi PXI PXI-1033 de 5 PXI com controlador MXI-Express integrado. Duas placas PXI estão conectadas ao chassi PXI; um cartão FPGA FlexRIO PXI-7953 com um FPGA Xilinx Virtex-5 LX85 e um cartão NIQ PXI-6070E NI. O cartão FlexRIO possui um Adaptador Ethernet Gigabit Prevas Mimas que possui dois conectores RJ-45. O adaptador FlexRIO e Prevas Mimas se combina para funcionar como a placa de interface de rede (NIC) do computador Broker-Dealer. Todo o tráfego de rede passa pelo cartão FlexRIO e uma das portas do adaptador Prevas Mimas Dual Gigabit (a outra porta não está utilizada para esta aplicação).
O adaptador Prevas Mimas possui um & # 8216; PHY & # 8217; chip que converte sinais elétricos de entrada em um cabo RJ-45 para quadros Ethernet e vice-versa. Os quadros Ethernet entram no FPGA Xilinx Virtex-5 LX85 na forma de bytes (U8).
Em condições normais, o cartão FlexRIO FPGA permite que os dados da moldura Ethernet da camada 2 saia através do adaptador Prevas Mimas e passando no bus PXI para que seja acessível por programas que interagem com os drivers NI RIO.
O QuickFIX normalmente se interage com as funções do Winsock que interagem com o Windows & # 8217; pilha TCP / IP de fonte fechada. Sendo uma fonte fechada, ele não pode interagir com os drivers RIO e, portanto, o lwip, uma pilha TCP / IP de código aberto, foi selecionado. Todas as chamadas do QuickFIX & # 8217; Winsock foram modificadas para chamar a pilha TCP / IP lwip que, por sua vez, foi modificada para interface com os drivers RIO.
O cartão de aquisição de dados NI PXI-6070E foi usado para receber e transferir o gatilho Cancelar pedidos. Uma das linhas PXI RTSI foi utilizada para estabelecer uma conexão elétrica direta entre este e o cartão FlexRIO FPGA. Um botão externo foi conectado a uma das entradas digitais do cartão DAQ e # 8217; de modo que, quando pressionado, um sinal digital seria lido pelo FPGA. Isso é lido apenas em hardware sem interação pelo computador ou o software.
Computador de troca.
O computador do Exchange é composto de outro computador executando uma versão não modificada do QuickFIX em execução no modo servidor. A interface de rede é feita através da porta Gigabit Ethernet nativa. Sua função é manter um pedido aberto até que um correspondente chegue ou a ordem seja cancelada.
Vários pedidos não correspondentes são inseridos no programa QuickFIX do Broker-Dealer & # 8217 ;. Ele os envia para o computador do Exchange, que os mantém como pedidos abertos. O programa QuickFIX do Broker-Dealer & # 8217; mantém uma lista de suas próprias ordens abertas. Sempre que algum aspecto das ordens abertas muda no Broker-Dealer, o FPGA recebe uma cópia das informações de cancelamento para cada ordem aberta. Abaixo está uma mensagem FIX 4.2 Order Single (tag 35 = D) em hexadecimal offset e somente os caracteres legíveis.
Abaixo está uma amostra da mensagem FIX 4.2 ORDER CANCEL REQUEST (tag 35 = F) em hexadecimal offset e somente os caracteres legíveis.
Pressionar o botão conectado ao cartão PQX-6070E DAQ gera um gatilho Cancelar Pedidos, o que faz com que o FPGA gere uma mensagem de Cancelamento de Ordem FIX para cada uma das ordens abertas. A (s) mensagem (s) FIX são então injetadas na sessão TCP ao vivo que já existe entre as máquinas Broker-Dealer e Exchange. O computador do Exchange recebe as mensagens de Cancelamento de Ordem FIX, sem perceber que essas mensagens foram criadas pelo FPGA [e não pela QuickFIX no computador Broker-Dealer] que cancela todas as ordens referenciadas como se o corretor-negociante instruiu-o a fazê-lo.
Para todo o tráfego FIX normal, o aplicativo QuickFIX lida com a criação de cada mensagem FIX, enquanto a pilha TCP / IP do software lida com a criação de segmentos TCP e pacotes IP. Na situação em que um evento Trigger acaba de ocorrer, o FPGA lida com todas as tarefas do QuickFIX e do software TCP / IP, gerando a (s) mensagem (s) FIX, segmentos TCP e pacotes IP. À medida que a carga final está sendo transferida para o PHY, o quadro Ethernet e CRC também são calculados pelo FPGA.
Conclusão.
A tecnologia field gate programável (FPGA) foi estabelecida para dados de mercado e agora está encontrando aplicativos como a geração de mensagens comerciais. O volume de negócios e os aumentos de dados superam a tecnologia do sistema de negociação. As empresas financeiras procuram otimizar todos os aspectos do sistema comercial. Até recentemente, o software foi o foco das otimizações.
A otimização de hardware fornece a atração de criar o "sistema de negociação mais rápido e determinista do mundo" # 8201; e é a última fronteira da personalização. Isso não é sem custo, pois um sistema otimizado de hardware completamente personalizado pode facilmente se tornar um jogo de soma zero.
Usando as placas FPGA da prateleira e um Idioma de descrição de hardware de alto nível (HDL), como o LabVIEW FPGA, pode-se desenvolver um sistema de negociação acelerado por hardware com riscos e custos gerenciados. O PXI é uma plataforma para soluções baseadas em FPGA que podem integrar timestamps IEEE-1588v2 (2008) a partir de uma fonte de tempo GPS e medições de latência. As placas FPGA PXI Express podem se comunicar eficientemente entre si [sem a CPU do host] usando Streaming de dados Peer-to-Peer para fornecer sistemas de negociação multi-FPGA.
As empresas financeiras agora podem otimizar software e hardware de seus sistemas de negociação para proporcionar maior diferenciação e aumentar sua competitividade.
Sobre a Wall Street FPGA, LLC.
Wall Street FPGA, LLC (WallStreetFPGA) é uma empresa de tecnologia financeira de boutique baseada em Nova York que oferece soluções de negociação e análise financeira aceleradas, de baixa latência e de alto débito. Wall Street FPGA, LLC combina conhecimento de mercados de capitais e tecnologia disruptiva. Para obter mais informações e agendar uma demonstração, entre em contato com Terry Stratoudakis: terry @ WallStreetFPGA ou +1 (347) 228-7379. Wall Street FPGA, LLC é um membro do FIX Protocol Limited.
O autor.
Terry Stratoudakis.
Terry Stratoudakis, P. E. tem mais de doze anos de experiência em automação. Ele é especialista em aceleração de hardware usando FPGAs para métodos de Monte Carlo, matemática de matriz complexa / real e correspondência de padrões para uso em várias indústrias. Os projetos atuais incluem aceleração de hardware de sistemas de negociação, análise de dados de mercado e entrada de pedidos, bem como sistemas de medição de baixa latência.
Terry atua como Diretor Executivo da Wall Street FPGA, LLC. Terry é o co-fundador da ALE System Integration, um parceiro certificado da National Instruments. Trabalhou na Underwriters Laboratories (UL) que criou sistemas automatizados para testes de segurança de produtos; os sistemas interagiram com sistemas empresariais, bem como com uma ampla gama de equipamentos. Ele ensinou instrumentação como Assistente Adjunto Professor no New York City College of Technology.
Terry é mestre em Ciências e Bacharel em Ciências em Engenharia Elétrica pela Polytechnic University, localizado no Brooklyn, Nova York (NYU-Poly). Ele é um engenheiro profissional licenciado do estado de Nova York e um arquiteto LabVIEW certificado pela National Instruments e instrutor profissional certificado. Terry é membro da IEEE Long Island Consultants Network e Instrumentation & amp; Sociedade de Medição. Ele é membro do Comité Técnico Global (GTC), Grupo de Trabalho de Negociação de Alta Frequência e Grupo de Trabalho de Latência Inter-Party do FIX Protocol Limited (FPL).

Em busca da latência Ultra-baixa: FPGA no mercado de alta freqüência.
A negociação de alta freqüência (HFT) recebeu muita atenção nos últimos dois anos, transformando-se em um componente cada vez mais importante dos mercados financeiros. HFT é tudo sobre a velocidade: quanto mais rápido seus algoritmos de computador podem analisar bolsas de valores e executar ordens comerciais, maior será seu lucro. Então, a & # 8216; corrida de armamentos & # 8217; nesta área nunca pára com os operadores de mercado investindo continuamente em soluções mais poderosas, capazes de negociar títulos, instrumentos financeiros derivativos e outros instrumentos financeiros em questão de nanosegundos. Somente as empresas HFT que acompanham as inovações tecnológicas, poderão garantir sua vantagem competitiva no futuro.
Para reduzir o tempo necessário para os dados do mercado de ida e volta, bancos de investimento, hedge funds e investidores institucionais gastam grandes somas em software mais rápido, redes com menor latência e instalações de computação mais próximas das bolsas de valores. Quando se trata de aceleração de hardware, a solução geralmente é descarregar porções intensivas em computação de funções de negociação para GPUs, FPGAs ou processadores personalizados. As CPUs ainda são valiosas para a implementação de certas tarefas, mas não conseguem manter a velocidade de execução comercial exigida.
Como você pode ver, há uma série de métodos disponíveis para dimensionar o desempenho da computação de hardware. Mas esses são FPGAs, ou arrays de portas programáveis ​​em campo, que iniciaram a atual revolução tecnológica na área de comércio de alta freqüência.
Os chips FPGA possuem características técnicas muito específicas que lhes permitem executar certos tipos de algoritmos de negociação até 1000 vezes mais rápidos do que as soluções de software tradicionais.
Neste artigo, vamos recontá-lo em detalhes sobre essas características e sobre os benefícios significativos que os comerciantes de alta freqüência obtêm da integração do hardware FPGA em suas infra-estruturas digitais.
O que sabemos sobre FPGA?
Por mais estranho que pareça, FPGA é nada mais do que um chip contendo um milhão de blocos de lógica repetidos em todo o silício. Cada uma dessas células lógicas chamadas de tabelas de pesquisa (LUTs) inclui operações lógicas básicas, como Boolean AND, OR, NAND ou XOR. Para formar um algoritmo, os LUTs estão conectados uns aos outros em uma ordem específica por meio de switches configuráveis. Ambos os LUTs e o tecido de interconexão ao redor são programáveis, proporcionando um sistema flexível, que pode ser facilmente ajustado para implementar quase qualquer algoritmo.
O primeiro dispositivo FPGA comercialmente viável foi inventado em 1985 pelos co-fundadores da Xilinx. Nesse ponto, a capacidade do chip era relativamente pequena, então era difícil implementar uma lógica completa em uma célula. As FPGAs de hoje têm mega milhão de contagens de portões que lhes permitem acomodar projetos muito complexos e de grande escala. Não é surpreendente que esse componente seja visto como um análogo de hardware de um programa.
Controladores de latência Ultra-Low FPGA.
A capacidade de programação e a capacidade extensiva dos chips FPGA são certamente características muito importantes. Mas estas são a arquitetura paralela do hardware e a natureza determinística que a tornam uma solução definitiva para reduzir as latências de ida e volta e, assim, aumentar os volumes de comércio.
Arquitetura paralela.
Os dispositivos FPGA não possuem uma arquitetura de processador fixa, incluindo a sobrecarga do sistema operacional e todas as interfaces e interrupções típicas das CPUs. Os caminhos de processamento neste hardware são paralelos, o que significa que diferentes funções não precisam competir pelos mesmos recursos operacionais. Como resultado, um único chip FPGA pode ter 10 ou mais controles de controle executados simultaneamente em taxas diferentes.
A arquitetura paralela da FPGA é a chave por trás da sua capacidade de executar rapidamente pedidos de compra e venda. A implementação de cálculos matemáticos em um nível baixo, no entanto, é possível somente em relação a algoritmos simples que podem ser divididos em um conjunto de tarefas. Os blocos funcionais separados podem então ser processados ​​em diferentes ciclos.
O paralelismo dos dispositivos FPGA também os torna muito resilientes. Não sendo afetado pelas atualizações de software e mudanças típicas para sistemas de TI, o hardware é capaz de fornecer e manter um alto nível de serviço em todos os momentos. Ével e autônomo na natureza, um chip FPGA contribui para o bom funcionamento de toda a infra-estrutura HFT.
Ao contrário dos FPGAs, os processadores genéricos são melhores em lidar com problemas complexos que exigem menor paralelismo. Quando se trata de negociação de alta freqüência, tais problemas, por exemplo, incluem o cálculo do custo total das compras finais, as vendas e cancelamentos necessários para manter as carteiras ajustadas ao risco. Outro exemplo é a população de fontes de preços e notícias em indicadores de negociação para serem posteriormente utilizados por comerciantes e gerentes para decidir os corretos ajustes nos sistemas de negociação.
Determinismo.
A implementação de hardware de um algoritmo resulta em um alto nível de determinismo. Isso significa que, mesmo durante o mercado, irrompe quando as redes estão sobrecarregadas com informações, o FPGA transmite rapidamente os dados do local de negociação e de volta. Independentemente das condições da rede, o chip sempre passa pela mesma seqüência de estados, fornecendo a mesma saída para cada entrada.
Uma vez que a ocorrência de eventos aleatórios dentro dos caminhos de processamento é muito limitada, os componentes FPGA oferecem uma latência de processamento repetitiva e previsível. Além disso, um número finito de estados operacionais garante um menor risco de erros funcionais e uma cobertura de teste completa. Isso dá aos usuários dos sistemas acelerados por FPGA uma alta confiança na integridade de saída.
As CPUs, por outro lado, são bem conhecidas por sua aleatoriedade de processamento. Isso é devido ao sistema operacional e às interrupções conduzidas por eventos que proporcionam um número quase infinito de variações de caminho através do fluxo do programa. As CPUs tornam-se indispensáveis ​​quando se trata de alternar entre tarefas diferentes e resolver problemas que estão mudando constantemente tanto em tamanho quanto em escopo.
Acelerando o motor HFT.
Devido ao seu paralelismo e determinismo, as soluções FPGA podem acelerar significativamente a computação de modelos matemáticos e transmissão de dados para os mecanismos de correspondência das trocas. No agregado de suas capacidades, esses chips são provavelmente inferiores aos processadores padrão. Mas quando se trata da implementação simultânea de tarefas simples, repetitivas e amplas, os FPGAs superam todos os registros de velocidade já exibidos pelas CPUs.
Quais tarefas HFT podem ser processadas em FPGA.
O uso de plataformas FPGA no mercado de alta frequência permite que as empresas coletem, purifiquem, enriquecem e divulguem a crescente gama de dados financeiros que mudam rapidamente em curto prazo. Sem carregar uma CPU, o hardware FPGA é capaz de executar rapidamente várias tarefas de negociação, que entre outras incluem:
Analisando os dados recebidos, fornecendo filtragem, decodificação e normalização de dados Realizando controles de volume, preço e colateral pré-negociação Monitorando os cenários de valor e perda de carteiras financeiras de forma contínua. Cálculo de rendimentos de investimentos de renda fixa, preços de títulos e seus derivados Gerando ordens de saída, transmitindo-as aos mecanismos correspondentes.
Vantagens da arquitetura híbrida.
Para aumentar ainda mais a velocidade de operação dos sistemas baseados em FPGA, as empresas HFT podem fazer uso da chamada arquitetura híbrida. No centro desta solução de engenharia encontra-se uma combinação de núcleos de CPU rígidos com lógica programável. Ao assumir as tarefas que não exigem uma execução rápida, um processador de propósito geral descarrega significativamente um chip FPGA, permitindo que ele se concentre completamente em algoritmos sensíveis ao tempo.
A Velvetech lançou recentemente sua própria solução híbrida para sistemas acelerados por FPGA. Na arquitetura projetada por nossa empresa, a CPU possui várias funções de serviço, entre outras, estabelecendo e mantendo a conexão com trocas. Ao implementar estratégias de negociação de nossos clientes em software e hardware, somos capazes de criar sistemas que ofereçam desempenho significativo com latências minimizadas.
Bônus de Negócios da Implementação FPGA.
As empresas HFT que integram plataformas FPGA em suas infra-estruturas informáticas criam potentes motores comerciais com latência ultra baixa e excelentes capacidades computacionais. Como mostrado acima, várias operações financeiras podem ser aceleradas por meio da implementação de hardware. A velocidade é o principal benefício que os chips FPGA trazem para o negócio HFT, mas certamente não é o único. Sua integração ajuda as empresas a criar ambientes de negociação mais seguros, economizar em despesas e aumentar as receitas.
Conformidade com a segurança.
Nos últimos anos, muitos governos em todo o mundo apertaram os regulamentos sobre o gerenciamento de risco realizado pelas empresas financeiras. Em vista do aumento das responsabilidades, as empresas HFT começaram a procurar soluções digitais capazes de monitorar continuamente o valor e perdas potenciais das carteiras financeiras. Os sistemas tradicionais centrados no processador puderam ver os riscos nas carteiras apenas no final do dia e, portanto, não forneceram o nível de segurança exigido.
Os dispositivos FPGA com suas extensas capacidades de processamento tornaram-se a solução muito procurada pelas entidades envolvidas no HFT. Realizando uma avaliação em praticamente em tempo real das carteiras, eles permitiram que as empresas financeiras atendissem aos rigorosos requisitos de gerenciamento de riscos estabelecidos pelos órgãos reguladores. Ao mesmo tempo, a implementação de hardware permitiu a redução significativa dos montantes de buffers de capital necessários para suportar a negociação em trocas.
Manutenção mais barata.
Ao confiar nas placas FPGA em seu trabalho, as empresas HFT podem economizar nas despesas relacionadas à manutenção de sistemas informáticos. Manter uma rede de aproximadamente 100 máquinas com processadores genéricos pode custar facilmente vários milhares de dólares por ano. Este dinheiro vai pagar o consumo de energia, o aluguel de escritórios e o arrefecimento do sistema. Uma plataforma FPGA completamente projetada pode facilmente substituir cerca de 100 CPUs gerais, ajudando a reduzir as despesas da empresa.
Além disso, a própria natureza do hardware programável significa que não há despesas relacionadas aos chips & # 8217; fabricação. Como uma solução reconfigurável e atualizável no campo, o dispositivo FPGA pode ser facilmente modificado após a instalação para atender aos novos requisitos. Os ajustes da plataforma geralmente são realizados por meio de um programa de software especial e podem ser feitos de forma remota.
Lucros mais altos.
A integração de componentes FPGA torna o negócio de negociação de alta freqüência mais lucrativo. O aumento da rentabilidade, neste caso, correlaciona-se com a velocidade mais rápida do gerenciamento de cargas de trabalho HFT. Trocando dados rapidamente com os mercados financeiros, o hardware da FPGA permite que as empresas comerciais executem mais pedidos e obtenham maiores retornos financeiros.
Ao mesmo tempo, o uso de plataformas FPGA permite economizar despesas resultantes da manutenção de grandes conjuntos de máquinas de propósito geral. As empresas HFT também evitam pagar várias taxas decorrentes da ineficiência dos processos operacionais e a incapacidade de fornecer garantias de segurança. Uma abordagem baseada em FPGA para o design complexo do sistema conduz diretamente ao aumento da rentabilidade do negócio HFT.
Descubra o poder de nanosegundos com FPGA.
A corrida de velocidade na área de comércio de alta freqüência tem sido um fenômeno contínuo há anos e provavelmente nunca acabará. A única maneira pelas quais as empresas HFT podem manter suas posições de liderança no mercado financeiro é adotando as inovações tecnológicas emergentes. A falta de fazê-lo levará a uma perda iminente.
Um chip FPGA, que o reenviamos neste artigo, é uma dessas tecnologias emergentes recentemente. Devido à sua arquitetura paralela e natureza determinista, o hardware permite a menor latência possível no processo de execução de ordens. Accelerating the HFT engine to nanoseconds and providing a range of other business benefits, FPGA enables companies to increase trade volumes and gain higher profits.
If you are only planning to speed up your trading system with an FPGA-based platform, then start by finding the right technology partner. You need a company, which team knows all the peculiarities of HFT sphere and is able to design a custom solution that meets your specific business needs. If you still have questions about FPGA devices or do not know where to begin with your project, you can always turn to Velvetech for help.
Get the conversation started!
Do you invest in your business software wisely? Stop using old technology for new business challenges. Learn how to drive your technology innovation and stay focused on your primary business goals.
What to do when software project causes delays and cost overruns? How to avoid common mistakes when working with an outside design firm? Here are five key aspects to consider when vetting a potential software development partner for your project.
Throughout the year Velvetech worked hard to remain a trusted and reliable software development company. Looking back, we’d like to share achievements of this remarkable year.
601 Skokie Blvd., Suite 105, Northbrook, IL 60062.

Fpga in trading systems


Obter através da App Store Leia esta publicação em nosso aplicativo!
Como os sistemas HFT são implementados no FPGA hoje em dia?
Lido sobre implementações diferentes de sistemas HFT em FPGAs.
A minha pergunta é, que parte dos sistemas HFT são implementados principalmente em FPGAs hoje em dia? Os FPGAs ainda são muito populares? É apenas o manipulador de feed implementado nos FPGAs? Como alguns desses sistemas descritos acima possuem apenas um manipulador de feed implementado no FPGA, porque a estratégia muda demais ou é muito difícil de implementar em FPGAs. Outros afirmam que também implementaram estratégias de negociação em FPGAs ou usando NIC de alto desempenho em vez de FPGAs para construir sistemas HFT. Eu li sobre abordagens diferentes, mas acho difícil de comparar, pois a maioria dos resultados são testados em diferentes conjuntos de entrada.
Aqui está uma maneira de pensar sobre isso: imagine que você pode fazer algo em um ASIC (ou seja, diretamente em hardware). No entanto, o processo de fabricação é em si caro, e você obtém um design que você não pode mudar depois. Os ASICs fazem sentido para tarefas predefinidas, como a mineração Bitcoin, algoritmos bem conhecidos de processamento de dados, etc.
Por outro lado, temos CPUs comuns (assim como CPUs e GPUs de coprocessador) que são de propósito geral, mas processam um pequeno (em termos de instruções simultâneas) conjunto de instruções a uma velocidade muito alta.
FPGAs são o meio termo. Eles são "emuladores de hardware" e, como tal, podem ser considerados 10x mais lentos que o hardware real, mas ainda são mais performantes para operações simultâneas do que as CPUs, desde que você possa utilizar o dado para espalhar sua lógica de acordo.
Alguns usos de FPGAs são:
Transcepção de vídeo (por exemplo, descodificação de vídeo em HD em TVs), bem como várias placas de aquisição de dados Análise de estrutura de dados fixa (análise Regex) Simulação de sistema discreto (por exemplo, simulando o resultado de um jogo de cartas) Muitas aplicações "corretamente incorporadas", como, por exemplo, em pesquisa aeroespacial ou científica.
O problema com FPGAs para quant usa é que não é tão bom para cálculos de ponto flutuante, especialmente porque as CPUs comuns já estão otimizadas para isso com coisas como o SIMD. No entanto, para qualquer estrutura de dados de ponto fixo ou de tamanho fixo, o design FPGA permite que você configure o dispositivo para fazer muito processamento ao mesmo tempo.
Algumas coisas feitas na negociação estão usando o FPGA para manipuladores de alimentação (analisando diretamente do fluxo de rede), bem como construindo certas partes da estrutura de negociação (por exemplo, livros de pedidos) em hardware para poder lidar com a estrutura de dados em rápida mudança sem carregando a CPU.
As FPGAs visam principalmente abordar a preocupação de processamento rápido de dados sem pagar os custos de propagação. Isto é particularmente em contraste com dispositivos como GPGPU (ou qualquer placa de residência PCI, como Xeon Phi), que pagam penalidades de desempenho para obter dados de / para o dispositivo. Dito isto, as opções DMA estão melhorando a este respeito, também.
FPGA são realmente nada mais do que os mesmos blocos de lógica repetidos repetidamente em todo o silício, com switches configuráveis ​​para conectar os blocos de lógica juntos. Isso torna o FPGA muito bom - e rápido - em lidar com problemas repetitivos que podem ser descritos em um circuito de hardware que não muda durante a operação. E você pode ter literalmente milhares ou dezenas de milhares desses circuitos, todos funcionando em paralelo ao mesmo tempo, em apenas um FPGA.
A CPU, por outro lado, é baseada em ALU, que carrega instruções, carrega dados, opera nos dados, talvez armazena os resultados, e depois faz tudo de novo. Os processadores então são muito bons - e rápidos - em lidar com problemas que estão mudando continuamente - tanto em tamanho como em escopo e na alternância entre diferentes tarefas. A CPU ou o núcleo de hoje terá dezenas a centenas de ALU's com canais paralelos para dados e instruções, o que os torna muito rápidos em problemas complexos que podem ser trabalhados em paralelo.
Esses projetos tornam o FPGA mais rápido em problemas mais simples que podem ser atacados com uma vasta arquitetura paralela - como a condensação de múltiplos feeds de dados em menos de micro-segundo, de fio a fio, ou desencadear uma compra, venda ou cancelamento pré-calculados em um preço que corresponde a um padrão específico. As CPUs são mais rápidas em problemas mais complexos que exigem menor paralelismo, como o cálculo da cesta de compras, vendas e cancelamentos necessários para manter um portfólio ajustado ou integrando uma série de fontes de preços e notícias de idade e qualidade variáveis ​​em indicadores comerciais usados ​​por comerciantes e gerentes para decidir quais os ajustes que farão para o sistema de negociação.
Onde os FPGAs são usados ​​em HFT depende muito da arquitetura de determinada loja. Eles são melhor utilizados executando tarefas simples, repetitivas e amplas e realizando-as rapidamente. As CPUs são uma faca suiça que pode fazer mais qualquer coisa, especialmente onde os requisitos estão mudando e as dimensões do problema não são totalmente compreendidas desde o início.
Sua pergunta realmente não faz muito sentido. É como perguntar o quanto da fiação na infra-estrutura comercial usa fibra ótica e quanto dela usa cobre. A melhor resposta que podemos dar a você é que uma FPGA não é uma bala mágica.
Esta é uma interpretação incorreta do white paper da Cisco. Há muito pouca sobreposição entre os casos de uso do tecido de troca e os de um FPGA.
Que parte dos sistemas HFT são implementados principalmente em FPGAs hoje em dia?
Atualmente, as FPGAs são freqüentemente usadas em nossas impressoras e decodificadores de TV.
Quero destacar o bloco de "processamento de sinal digital" (DSP) com ALUs. Os FPGAs de hoje têm centenas de blocos DSP programáveis ​​- o maior que tem milhares.
Agora, de repente, você tem milhares de pequenos processadores à sua disposição, todos capazes de realizar cálculos em paralelo. Isso é muito superior ao paralelismo fornecido pelo Xeon Phi ou GPUs. Na verdade, se você estiver fazendo modelagem de preços de opções ou modelagem de risco estocástica no FPGA, você pode obter mais de 100 vezes o aumento no desempenho em comparação com as GPUs mais recentes e ainda mais em comparação com as últimas CPUs.
Junto com os blocos DSP, o outro fator importante neste ganho de desempenho é o cache de memória. O FPGA possui RAM distribuída embutida que é extremamente rápida, permitindo que a largura de banda de 100 TB / s seja alcançada no nível do datapath.
O uso de FPGAs de hoje para estratégias de algoritmos oferece um recurso de computação grande e massivamente concorrente que é capaz de dar um aumento de desempenho de 100 a 1000 vezes em comparação com GPUs ou CPUs. A principal advertência é que você teria que se tornar proficiente na escrita em Verilog ou VHDL :)
Sanjay Shah CTO Nanospeed.
Uma variedade de processadores poderosos e de vários núcleos estão começando a entrar no espaço de aceleração de hardware que anteriormente era completamente "de propriedade" por FPGAs. Empresas como a Tilera, a Adapteva e a Coherent Logix fornecem todos esses processadores aqui nos EUA, e a Enyx da França também faz incursões.
A verdadeira medida de eficácia desses processadores massivamente paralelos reside na maturidade de suas ferramentas de software. É aí que o potencial usuário deve concentrar sua atenção. Ninguém quer programar ou depurar dezenas ou centenas de núcleos usando técnicas manuais. Claro, é evidente que a largura de banda de E / S é tão importante.
Na minha experiência pessoal neste espaço, vejo a adoção pelos clientes dos processadores Coherent Logix como co-processadores ou aceleradores de hardware para aceleração de linguagem em linguagem C. Ao desfrutar do ciclo de design rápido de um ambiente baseado em C, alguns programadores podem ajustar o código para o conteúdo de seus corações e não se preocupar com a codificação HDL dispendiosa e de tempo intensivo para FPGAs.
O particionamento ideal é que as FPGAs façam o que melhor fazem - operações repetitivas corrigidas - e os processadores de vários núcleos fazem o que melhor fazem: acelerar a produtividade e a velocidade de execução dos desenvolvedores.
John Irza, Gerente de Desenvolvimento de Negócios, Coherent Logix, Inc.
Quase todas as lojas HFT usam a arquitetura FPGA. Esses dispositivos precisam ser substituídos com freqüência, pois são rapidamente superados pelas últimas melhorias em velocidade, pipelines, paralelismo, etc. A menos que você esteja pronto para investir US $ 2 milhões por ano, descubra outra estratégia. Muitas pessoas estão fazendo movimentos de preços diários com caneta e papel estão fazendo bilhões em Omaha, NB.

Fpga in trading systems


Obter através da App Store Leia esta publicação em nosso aplicativo!
How fast is state of the art HFT trading systems today?
All the time you hear about high frequency trading (HFT) and how damn fast the algorithms are. But I'm wondering - what is fast these days?
I'm not thinking about the latency caused by the physical distance between an exchange and the server running a trading application, but the latency introduced by the program itself.
To be more specific: What is the time from events arriving on the wire in an application to that application outputs an order/price on the wire? Isto é, tick-to-trade time.
Are we talking sub-millisecond? Or sub-microsecond?
How do people achieve these latencies? Coding in assembly? FPGAs? Good-old C++ code?
There's recently been published an interesting article on ACM, providing a lot of details into today's HFT technology, which is an excellent read:
You've received very good answers. There's one problem, though - most algotrading is secret. You simply don't know how fast it is. This goes both ways - some may not tell you how fast they work, because they don't want to. Others may, let's say "exaggerate", for many reasons (attracting investors or clients, for one).
Rumors about picoseconds, for example, are rather outrageous. 10 nanoseconds and 0.1 nanoseconds are exactly the same thing, because the time it takes for the order to reach the trading server is so much more than that.
And, most importantly, although not what you've asked, if you go about trying to trade algorithmically, don't try to be faster, try to be smarter. I've seen very good algorithms that can handle whole seconds of latency and make a lot of money.
I'm the CTO of a small company that makes and sells FPGA-based HFT systems. Building our systems on-top of the Solarflare Application Onload Engine (AOE) we have been consistently delivering latency from an "interesting" market event on the wire (10Gb/S UDP market data feed from ICE or CME) to the first byte of the resultant order message hitting the wire in the 750 to 800 nanosecond range (yes, sub-microsecond). We anticipate that our next version systems will be in the 704 to 710 nanosecond range. Some people have claimed slightly less, but that's in a lab environment and not actually sitting at a COLO in Chicago and clearing the orders.
The comments about physics and "speed of light" are valid but not relevant. Everybody that is serious about HFT has their servers at a COLO in the room next to the exchange's server.
To get into this sub-microsecond domain you cannot do very much on the host CPU except feed strategy implementation commands to the FPGA, even with technologies like kernel bypass you have 1.5 microseconds of unavoidable overhead. so in this domain everything is playing with FPGAs.
One of the other answers is very honest in saying that in this highly secretive market very few people talk about the tools they use or their performance. Every one of our clients requires that we not even tell anybody that they use our tools nor disclose anything about how they use them. This not only makes marketing hard, but it really prevents the good flow of technical knowledge between peers.
Because of this need to get into exotic systems for the "wicked fast" part of the market you'll find that the Quants (the folks that come up with the algorithms that we make go fast) are dividing their algos into event-to-response time layers. At the very top of the technology heap are the sub-microsecond systems (like ours). The next layer are the custom C++ systems that make heavy use of kernel bypass and they're in the 3-5 microsecond range. The next layer are the folks that cannot afford to be on a 10Gb/S wire only one router hop from the "exchange", they may be still at COLO's but because of a nasty game we call "port roulette" they're in the dozens to hundreds of microsecond domain. Once you get into milliseconds it's almost not HFT any more.
"sub-40 microseconds" if you want to keep up with Nasdaq. This figure is published here nasdaqomx/technology/
Good article which describes what is the state of HFT (in 2018) and gives some samples of hardware solutions which makes nanoseconds achievable: Wall Streets Need For Trading Speed: The Nanosecond Age.
With the race for the lowest “latency” continuing, some market participants are even talking about picoseconds–trillionths of a second.
EDIT: As Nicholas kindly mentioned:
The link mentions a company, Fixnetix, which can "prepare a trade" in 740ns (i. e. the time from an input event occurs to an order being sent).
For what its worth, TIBCO's FTL messaging product is sub-500 ns for within a machine (shared memory) and a few micro seconds using RDMA (Remote Direct Memory Access) inside a data center. After that, physics becomes the main part of the equation.
So that is the speed at which data can get from the feed to the app that makes decisions.
At least one system has claimed.
30ns interthread messaging, which is probably a tweaked up benchmark, so anyone talking about lower numbers is using some kind of magic CPU.
Once you are in the app, it is just a question of how fast the program can make decisions.
These days single digit tick-to-trade in microseconds is the bar for competitive HFT firms. You should be able to do high single digits using only software. Then <5 usec with additional hardware.
High-frequency trading has taken place at least since 1999, after the U. S. Securities and Exchange Commission (SEC) authorized electronic exchanges in 1998. At the turn of the 21st century, HFT trades had an execution time of several seconds, whereas by 2018 this had decreased to milli - and even microseconds.
it will never be under a few microseconds, because of the em-w/light speed limit, and only a lucky few, that must be in under a kilometer away, can even dream to get close to that.
Also, there is no coding, to achieve that speed you must go physical.. (the guy with the article with the 300ns switch; that is only the added latency of that switch!; equal to 90m of travel thru optical and a bit less in copper)

A Guide to the HFT Arms Race.
The big picture is that you’re jumping into the “gunslinger” business and will need to keep current (no, forget current, you need to keep ahead) to stay competitive. Reports from clients indicate that it tends to be a winner take all type of business that rewards the fastest almost exclusively. Hence the winners jumping to the latest FPGA hardware as it emerges every 18 to 24 months.
How the hardware works. Many existing automated trading systems are working in milliseconds, striving for microsecond(s), and are subject to lags under spike conditions. The lag is sometimes called “non-determinism” or the inability of the system to handle loads linearly. Anyone with a PC knows that CPUs can slow dramatically under peak loads. Shifting the bottleneck logic to an FPGA (Field Programmable Gate Array) is a means of creating a predictable, and lower latency, system.
An FPGA is simply a “box of gates” with a programmable interconnect. While they operate at clock speeds an order of magnitude below contemporary microprocessors, they do hundreds, often of thousands, of things in parallel. With competent engineering, FPGAs are many times faster than microprocessors, especially when handling streaming data feeds. Accordingly the FPGA is where you offload the bottleneck logic which is capable of being parallelized. The communication between the FPGA and the CPU goes over the PCIe bus using vendor supplied API’s.
Architectural considerations. Many teams have working trading systems on CPU based hardware. Shifting the system to new hardware involves systematically moving modules over and steps into a field called “heterogeneous processing”. Basically assigning different types of tasks to different hardware. It narrows down to a few concepts: Keep anything non critical on the CPU. CPUs are natural “traffic cops” and the easiest place to handle control and other non-latency critical logic. While the FPGAs advertise millions of gates, resources are still finite and used for non-obvious logic such as data buses and memory controllers. Routing (interconnection) of resources, just as much as gates, can also be just as much of a limiting element. Conserve the FPGA resources by keeping all non-critical logic on CPU. Keep as much as possible on single pieces of silicon. Any major accesses to memory or CPU will slow things down. Many coders say that understanding memory access is one of the larger tasks in architecting efficient systems. It is here that we need to remember that the computers that got man to the moon and back had only 8K of main memory. You can do a LOT with what is on the FPGA itself. Profiling is limited - why has no one invented a magic big red button yet? (actually, one of the authors is working on it). Basically you’re hunting for compute-bound or memory-bound CPU code to offload to an FPGA. Nothing magical is happening in the offload process. Loops are unrolled, processes are parallelized. However, there is no magic way to identify which portions of code to shift to FPGA.
Tools like Impulse C have decent visualization utilities. You can see overloaded buffers and can do some pretty cool expansions (pictured) of stage delay analysis. But the refinement is largely iterative and requires making intelligent choices in a) refactoring code into coarse grained logic (think individual processes) which the compiler can efficiently parallelize and b) experiment with breakpoints (an easy one-line function in most SW to HW compilers). Many compilers come with extensive reference designs that, realistically, are often where new coders start by splicing their code in-line or by learning from these examples. In finance, many users purchase overall trading systems turnkey applications and splice in their “secret sauce” (i. e. their specific trading algorithms)
How the software works C to VHDL to Synthesis to FPGA to 4 hours shot to heck. Since compilers cover the car payments on my Toyota, perhaps I should be more loyal. But we have to be honest and explain that, unlike CPU or GPU, the full compile to FPGA hardware can take hours and lacks some(OK most) of the back annotation detail that SW coders had in the 1990’s. It is intrinsic to the process. In this analogy, you are essentially causing a tiny circuit board (the FPGA) to be laid out in a manner optimal for your software logic. It takes a few hours to route several million gates.
Visual Studio based interface of C to FPGA hardware compilation also automatically generates stage delay analysis and compiles to FPGA running on a PCIe board.
Hand coding vs. Machine coding and QoR (Quality of Results). In the 1980’s the old dogs said HDL (hardware description languages) will never replace manual tape-out in terms of quality. None the less, as HDLs matured and the time to market advantages became obvious, HDLs largely replaced hand coding. Flash forward and it’s the same problem. but on steroids. HLLs like C, OpenCL, or Vivado HLS are rattling the cages of HDLs like Verilog or VHDL. The same arguments apply.
If time is not a concern, and you have experienced HW coders, then hand coded HDL can be superior to machine coding from HLLs. But remember this… in the 1980’s if you wanted performance you used assembly language, in the 1990’s if you wanted performance you used “C”, in the 21’st century few even remember what assembly languages looks like and “C” is so “quaint”.
If you are in HFT you are in an “arms race”. The more you tie yourself to a specific FPGA vendor’s embedded IP the more likely you are to have your lunch eaten by a competitor that can jump to another (bigger, faster) platform faster than you. Keep it generic, stay flexible! HLL designs will remain the most portable and dramatically lower your time to migrate to newer hardware. Remember the sw is the long-term investment and the hw becomes an expense item in this model, to be replaced when newer versions become available.
Example - A sub-microsecond trading appliance (pictured, and by the way, successfully deployed). This mounts a $10,000 PCIe board (with a mid-sized of the current FPGAs available) in an off the shelf 2U rack mount chassis. It uses in-band event detection technologies, originally developed for the US Department of Defense, to monitor two 10Gb/s market data feeds. It parses messages in real-time and passes the critical content to the business rules engine.
The business rules engine is written in C and is customizable. It applies pattern matching methods to real-time market feeds, producing one or more triggers for the response logic. Based on the trigger signal payload, the response logic can select one or more TCP response message templates filling in the variable data (such as FIX sequence number, quantities, prices, TCP SEQ/ACK and other overhead) as they are pushed onto the wire.
The system is engineered to be a trading appliance.
A trading system works transparently but there are many components of the software that must be configured perfectly. It is often quicker to work with known good code or a service provider.
While it necessarily requires some customization to correctly realize the client’s trading strategy in FPGA logic, the nature and scope of the customization is limited and maintains the system’s overall affordability. Variable data to the system is provided by the client’s existing trading platform and by a simple boot-time configuration file. An optional embedded MiniFIX housekeeping engine lets the entire system operate autonomously while the host trading platform concentrates on strategy synthesis only providing updates to the message templates as strategy changes. The whole system, with customer logic, typically runs >= $100k.
The Network Ecosystem.
Well, all thing being equal, the winners are playing in sub microsecond trades. But all things are not equal. Flash back a few years ago and traders were renting office space as close as possible to the actual exchange feeds in order to minimize wire length to the point of trade. Today they rent space on the exchange networking “floor”. This is called co-lo or colocation.
Zooming down inside the networking hardware we’re finding millisecond differences can occur depending on the gateway or port you get. In some countries this is dynamic, you don’t know what you’ve got till you log in. In some countries traders are allowed to “squat” on a gateway and anecdotally, we’re hearing that the lucky ones hold on to a “hot” gateway and win by milliseconds. While it is possible to temporally load balance (i. e. level the “time” playing field), we don’t see this happening. It remains a trading risk.
Other software elements in the trading system are also being accelerated. We are working with teams accelerating in-line functions such as compliance or pre-trade risk checking such as “does a guest trader have adequate balance”. Intrusion detection is another in-line function that should ideally run at low or zero latency (i. e. wire speed). Off-line functions such as Monte Carlo valuation or options analyses can run 4x faster in hardware. In the non-financial world, governments are using similar technology to execute wire-speed packet filtering applications with front-end protocol conversion.
Development methodology recap. So we generally recommend: you stay in HLL as much as possible. It is quicker, easier for C programmers, and migrates to new hardware faster. Realistically you keep an eye open for bits that can be further hand refined for speed in HDL. And overall, iterate, iterate, iterate. This is one area that is truly responsive to continual improvement.
About the authors: Brian Durwood and Nick Granny are 10 year collaborators who have created and deployed solutions for everyone from the Air Force to the Chicago Mercantile Exchange. Using Impulse Tools and IP, and MercuryMinerva Trading Systems software, the two provide turnkey systems to mid-size trading firms that are jumping in to the HFT arena. The collaboration focuses on IP that clients own, and training such that clients can make their own modifications and extensions. The authors wish to thank Ed Trexel and Richio Aikawa for their help on this article.

No comments:

Post a Comment