O jornalista técnico Igor Oskolkov, do
3DNews.ru , testou recentemente a versão publicamente disponível do painel de avaliação ou, como o fornecedor o chama, o complexo de software e hardware do desenvolvedor, sob o codinome BFK 3.1 com o russo SoC Baikal-T1 baseado no MIPS Arquitetura P5600 Warrior. Aqui está a tradução em inglês de seu texto, que foi
publicado pela primeira vez em russo por servernews.ru .
Para começar, devemos enfatizar que o BFK 3.1 é um complexo de software / hardware para desenvolvedores (continuaremos chamando-o de conselho) e não a base para a construção de produtos finais. Ninguém sensato usará esta placa para construir um sistema. Primeiro, esse sistema será excessivamente caro. Em segundo lugar, essa ideia não tem sentido. Essa placa é necessária para desenvolver e depurar software e avaliar o desempenho do processador e sua compatibilidade com outros equipamentos. É incorreto comparar o BFK 3.1 com microcomputadores de placa única como Raspberry Pi ou Cubieboard, embora formalmente esteja muito próximo deles.

Placas de desenvolvimento semelhantes são oferecidas por outros fornecedores de processadores. Dependendo do tipo e do equipamento incorporado, os preços dessas placas podem variar de centenas a milhares de dólares. O que é importante na placa BFK 3.1, é a primeira placa com o SoC Baikal-T1, disponível praticamente para todos, e não limitado a um círculo estreito de indivíduos e organizações, como costumava ser com os processadores russos antes . Custa uma fortuna - 650 USD - é caro, mas o fornecedor não pode oferecer um preço mais baixo, levando em consideração o volume relativamente pequeno da produção dessas placas.
O que os clientes obtêm após o registro do produto é o acesso à biblioteca de documentação de engenharia de acesso limitado e o design da placa de circuito impresso no formato Altium Designer. Isso irá acelerar e simplificar significativamente o processo de criação de suas próprias soluções de hardware e software com base nas placas BFK 3.1 e nos SoCs Baikal-T1.
A própria placa é equipada com um processador com uma fita básica. Quase todas as interfaces do processador têm saídas para a placa, apenas uma porta de 10 GbE não. A própria placa mede 229 × 191 mm (FlexATX). Possui duas portas SATA-3 (versão do controlador 3.1), um slot SO-DIMM para o módulo de memória DDR3-1600, duas portas Gigabit Ethernet RJ-45, um conector USB 2.0 tipo A e duas portas USB Mini-B necessárias para depuração , um conector PCI-E 3.0 x4. Há também um GPIO de 40 pinos (seu controlador principal é de 32 bits).


Para fonte de alimentação, é necessário qualquer módulo ATX 2.0 com 200 watts ou superior. Esse valor é claramente dado com uma margem enorme, mesmo levando em consideração o consumo de dispositivos PCI-E e SATA. A placa possui botões "liga / desliga" e "redefinição de energia" separados. Iniciar a placa é extremamente simples: instale o módulo de memória, conecte o PSU, conecte o PC à porta mini-USB superior, execute o emulador de terminal favorito com suporte para portas COM (
você pode precisar de um driver para a própria ponte - use este link ). Bem, é isso, pressione o botão "on" e selecione o item desejado no menu de inicialização.


A placa possui dois módulos de memória NOR: 16 MB e 32 MB. O primeiro é inicializável, contém o próprio firmware. Aqui tudo é padrão: U-Boot + Linux-kernel + imagem mínima do BusyBox. É possível inicializar a partir da rede através de um servidor NFS ou TFTP. Para sistemas embarcados, será suficiente. Nesses casos, o produto final é uma placa relativamente compacta com RAM e ROM já soldadas do volume necessário e um ambiente de software pré-programado e otimizado para uma gama específica de tarefas. Como um exemplo, pode-se pensar em roteadores SOHO.

A segunda opção para usar esta placa é o lançamento de um sistema operacional completo. É o que faremos para os testes. O
fornecedor oferece uma versão ligeiramente modificada do Debian 9 com um kernel do SDK. Observe que eles próprios não remontam todo o software. Repositórios prontos do Debian mipsel-branches são usados, portanto não há otimizações para este processador em particular. No entanto, também existem conjuntos Astra Linux Special Edition para dispositivos Tavolga Terminal 2BT1 com o mesmo SoC Baikal-T1. Mas eles, infelizmente, não estão disponíveis abertamente. Além disso, o suporte ao Alt Linux e Buildroot é esperado e existe a possibilidade de executar o OpenWRT / LEDE.

Para iniciar o sistema operacional Debian, é necessário obter as imagens, o firmware e o ramdisk do kernel do SDK. O próprio SDK também inclui ferramentas auxiliares para compilação cruzada, scripts para criar uma imagem de ROM e uma VM preparada para QEMU, onde você pode pré-depurar seus programas. A experiência com o Debian 9 no BFK 3.1 ainda não é perfeitamente tranquila: após a instalação, será necessário procurar nas configurações e instalar algum software, mas não há problemas especiais com isso. É uma pena que ainda não exista documentação completa para este painel: é preciso descobrir por tentativa e erro ou perguntar diretamente ao fornecedor.

Para executar os testes, conectou a placa a uma antiga pelos padrões atuais da Kingston SSDNow V para o sistema operacional e ao módulo de memória Samsung DDR3L-1600 de 4 GB. Isso é suficiente para se familiarizar com os recursos do SoC. Houve mais uma nuance - por causa dos recursos do controlador, nem toda a memória do módulo SO-DIMM é visível. Outro ponto importante lida com as compilações básicas de programas de teste a partir do código fonte: tudo foi feito diretamente no BFK 3.1. Onde necessário, as chaves do compilador são especificadas.

O processo de construção, devemos dizer, nem sempre é indolor. Em algum lugar, tivemos que pesquisar os parâmetros de otimização para obter um melhor resultado. Algo estava indo bem, mas quando executado, falhou ou não funcionou corretamente. Às vezes, havia um sentimento geral de que o fornecedor não suspeitava da existência de outras plataformas além das x86. E isso se aplica não apenas ao software. Em particular, no PCI-E, provavelmente, as GPUs modernas não funcionarão, pois, de acordo com o fornecedor, quase todas elas exigem a presença de UEFI / BIOS x86. Além disso, pode haver problemas com dispositivos que usam, por exemplo, uma ponte PCI PCI-E.
Características do SoC Baikal-T1Vamos revisar brevemente o próprio processador para começar. O Baikal-T1 possui dois núcleos de 32 bits baseados na arquitetura P5600 Warrior (MIPS32 Release 5), com suporte de hardware para virtualização. Cada núcleo recebeu um cache L1 de 64 KB para dados e instruções. Ambos os núcleos têm um cache L2 comum de 1 MB. Além disso, cada núcleo possui sua própria FPU suportando SIMD de 128 bits. Todos os núcleos, L2 e FPU, operam na mesma frequência de 1,2 GHz. O processador é capaz de executar até quatro operações inteiras, até duas operações em números de ponto flutuante de precisão dupla ou quatro precisão única por ciclo de clock. Isso fornece um desempenho teórico máximo de 4,8 GFlops FP64 (2 núcleos 1,2 GHz × 2 FP64) ou 9,6 GFlops FP32. No entanto, em um nível prático, para abrir o potencial do SoC (como as pessoas gostam de postar nos comentários), uma otimização manual do código e o compilador que “conhece” o FPU / SIMD são necessários.

Na realidade, por exemplo, uma versão não otimizada do Linpack, compilada pelo GCC aberto, produz um resultado muito abaixo do esperado. Essa situação é bastante normal para arquiteturas novas ou específicas (como Elbrus). Isso deve ser levado em consideração ao avaliar os resultados abaixo. Outro ponto importante para preocupações são as notórias vulnerabilidades de Meltdown e Spectre. Os blocos computacionais no MIPS32r5 são superescalares e capazes de executar extraordinariamente instruções de execução, mas claramente não se fala em especulação profunda. O
fornecedor principal emitiu um aviso sobre a possível presença de Spectre (não Meltdown) nos núcleos "limpos" do P5600 / P6600. De acordo com o fornecedor, no caso de Baikal-T1, o código oficial de verificação de vulnerabilidade não produz um resultado, mas é muito cedo para afirmar com absoluta certeza que o SoC não é afetado pela vulnerabilidade. O fornecedor planeja organizar uma hackathon para verificar novamente a segurança do SoC.

Os núcleos do SoC se comunicam via barramento AXI com o restante dos componentes. Todas as interfaces de alta velocidade têm suporte para DMA. O próprio controlador de memória de canal único suporta DDR3-1600 com ECC. A capacidade máxima de CPU suportada da RAM é de 8 GB. Há outra nuance - o controlador de memória possui um barramento de dados de 32 bits e 8 bits de ECC e suporta o trabalho com chips de memória com uma largura de 8 a 32 bits. Para produtos acabados com módulos adequados já soldados, ele não apresenta problemas, mas a placa verá apenas metade do volume declarado com os SO-DIMMs convencionais, pois eles geralmente "olham" para fora com uma interface de 64 bits. E sua velocidade, obviamente, será menor - até 6,4 GB / s.
O interior do SoC pode
ser admirado neste link .
O SoC requer uma tensão de 0,95 V para a fonte de alimentação e o consumo de energia reivindicado não é superior a 5 watts. Durante os testes, a CPU aqueceu até 60 com um pequeno grau positivo de Celsius. O resfriamento ativo não é necessário; no entanto, no caso fechado, o radiador não será supérfluo. A frequência dos núcleos é ajustada dinamicamente no intervalo de 200 a 1500 MHz, mas isso requer suporte do SO, até o momento na versão atual do Debian, a frequência pode ser definida na inicialização do sistema. De qualquer forma, durante uma operação de baixa carga, um núcleo pode desligar-se automaticamente. Com preço de 65 USD, o Baikal-T1 é fabricado na fábrica TSMC de 28 nm.
CoremarkAgora vamos diretamente aos benchmarks. O primeiro da fila - CoreMark - é uma referência especializada, usada para avaliar o desempenho de processadores e SoC para sistemas embarcados. Para falar a verdade, foi com o anúncio de um novo registro do CoreMark que a Imagination Technologies começou a contar a história sobre as vantagens do núcleo do MIPS P5600 Warrior. A verdade é que, naquela época, era um único núcleo de simulação em FPGA rodando a 20 MHz. Aí estava tudo no recorde do megahertz por núcleo do valor CoreMark: 5.61, mas, na realidade, vale a pena contar com o valor de 5. O fornecedor principal até apontou a maior eficiência do P5600 em comparação com os processadores Intel para desktop . Formalmente, o Baikal-T1 é o líder em termos de megahertz e megahertz por núcleo. Na prática, para obter desempenho em termos absolutos, o fornecedor usa métodos extensivos, aumentando as frequências e o número de núcleos.

Infelizmente, a base de resultados do CoreMark não é preenchida com muito cuidado; portanto, tivemos que selecionar manualmente testes para chips de núcleo duplo com características de frequência próximas às do Baikal-T1 e também uma indicação explícita de que o teste havia usado dois fluxos. Para comparação, incluímos intencionalmente uma amostra de quatro núcleos. Em geral, pode-se classificar os resultados de referência por vários critérios. No entanto, produz imediatamente muitas nuances: primeiro, os núcleos IP do ARM e do MIPS são licenciados para empresas de terceiros, portanto a implementação do mesmo design pode variar significativamente; segundo, depende muito da otimização do código do software, suas compilações e tempo de execução.
Para o nosso teste básico, usamos o GCC 6.3 com as seguintes opções: -O3 -DMULTITHREAD = 2 -DUSE_PTHREAD -unroll-all-loops -fgcse-sm - fgcse-las -finline-limit = 1000 -hard-float -mtune = p5600 . Os
testes do fornecedor também incluíram o ambiente comercial do Sourcery CodeBench. A seguir, nas tabelas, são aceitas as seguintes designações: "teste oficial" - para os resultados publicados no site do fornecedor; "Precomp" - para executar arquivos de benchmark binários fornecidos pelo fornecedor da CPU; "W / opt". - nossas próprias versões a partir do código-fonte aberto, com as chaves indicadas; "Opt." - compilação cruzada com SDK e utilitários comerciais pelas “receitas” do fornecedor. A otimização manual permite obter um melhor desempenho, que é claramente visível na tabela de resultados. No entanto, não precisamos classificar as chaves e digitar o código, enquanto os desenvolvedores de software Baikal-T1 definitivamente precisam lidar com isso regularmente.
Benchmarks clássicosDo
mesmo documento, pode-se escolher os resultados dos benchmarks clássicos da "velha escola". O teste de fluxo para largura de banda de memória foi compilado para um encadeamento com as seguintes chaves: -mtune = p5600 -O2 -funroll-all-loops. Seu resultado representa cerca da metade da velocidade teórica da RAM.

Tudo dito acima sobre o CoreMark se aplica ao Dhrystone2 (que lida com computação inteira), que foi compilado na base com um mínimo de chaves: -O3 -funroll-all-loops -mtune = p5600. Infelizmente, como nos exemplos acima, a base de medidas não é um exemplo de precisão. Para comparação, foram obtidos alguns resultados para cálculos de 32 bits com indicação explícita de otimizações. Infelizmente, eles não publicam modelos de CPU específicos ou pelo menos gerações. Além disso, o assunto é complicado pela presença do TurboBoost ou aumento similar de curto prazo (e esse teste é apenas um curto) na frequência base do processador, o que lubrifica a imagem geral. Novamente, a situação se repete no teste com o CoreMark - em termos de megahertz, o desempenho do P5600 não é ruim.

Porém, outras CPUs modernas aumentam o desempenho aumentando a frequência, suportando instruções de 64 bits e também o número de núcleos ao mesmo tempo. Os resultados da pedra de amolar são basicamente os mesmos, apenas a diferença entre o aumento dos fluxos e o uso das instruções vetoriais é ainda mais impressionante. Ah, sim, para criar tudo isso, tivemos que ajustar levemente o código removendo chamadas não essenciais para as verificações de montagem x86 e extensões x86, necessárias apenas para a identificação da CPU.

Para uma verificação rápida dos adaptadores Gigabit Ethernet, usamos o utilitário iperf 3.1.3, que demonstrou que, para conexões unidirecionais, a velocidade é de 940 Mb / s, mas em duplex, infelizmente, a velocidade era de 1,2 Gb / s. Ao explicar esse fato, observou-se que é necessário um pequeno ajuste no nível do software para obter desempenho total.
Phoronix Test SuiteSabemos que essa idéia cheira a loucura, pois o PTS (https://www.phoronix-test-suite.com/) geralmente não é projetado para esses sistemas. A construção ocorre diretamente na máquina de teste, portanto, no caso do Baikal-T1, isso é extremamente longo, bem como a duração da maioria dos testes. Excluímos alguns testes excluídos do pacote: aqueles que falharam na compilação ou que foram executados indecentemente por um longo tempo, mesmo em PCs "adultos". O primeiro problema, em teoria, pode ser tratado manualmente, customizando os parâmetros de construção. Porém, novamente, não tínhamos essa tarefa e, de qualquer forma, é improvável que os resultados do teste atinjam os valores máximos possíveis.

Todos os resultados do teste estão disponíveis neste
link . A rigor, tudo isso é uma reserva para o futuro, pois no momento não temos nada para comparar. Mais tarde, poderemos ver quanto melhor (ou não) os resultados se tornam após a correção da compilação e otimização. Para os curiosos, só podemos mencionar algumas configurações aleatórias de benchmarks coincidentes dos processadores chineses Loongson Godson 3A3000 (4 núcleos a 1,5 Hz, cache L2 1 MB, cache L3 8 MB, 28 nm, 30 W). Ambas as CPUs são semelhantes em novos problemas de arquitetura e otimização de software para essa arquitetura. Até agora, os chineses estão à frente com uma grande margem em termos absolutos, mas em termos de núcleo, MHz e consumo, os resultados são um pouco menos inequívocos.

Conclusão
Baikal-T1 é notável como o produto moderno, os desenvolvedores russos foram capazes de implementar por uma equipe relativamente pequena dentro de um prazo aceito pela indústria. O preço é razoável (comparado a outros processadores russos) e está disponível no mercado. Mas seu sucesso (ou fracasso) pode realmente ser avaliado somente após um ano ou dois - tudo depende de quem e em que volumes usarão esse SoC em seus produtos. No momento, apenas alguns dos produtos finais são anunciados publicamente - https://baik.al/sdelano. Todos esses são exemplos típicos das áreas de aplicação do Baikal-T1. Também gostaríamos de ver mais das soluções NAS / SAN, IoT e SDR. No entanto, não se trata mais de hardware. A própria CPU é realmente boa, especialmente ao avaliar seu desempenho relativo, e não absoluto. Mas ainda existem muitos problemas e rugas de software. Falando especificamente sobre a placa BFK3.1, ela possui uma documentação bastante fraca. Globalmente, a questão é a seguinte: quem usará o software para essa arquitetura? Quem desenvolverá as ferramentas que tornam esse processo o mais fácil possível? Haverá uma comunidade forte o suficiente de desenvolvedores de software? Por exemplo, o suporte à virtualização de hardware, mencionado na descrição da CPU, apareceu apenas no verão do ano passado, com o lançamento do kernel Linux 4.12. E, em geral, imaginamos o que acontecerá ao lado da arquitetura MIPS. Há cinco anos, a escolha dessa arquitetura específica para novos produtos era bastante razoável. E agora? É a questão ...