Como um processador pode ser mais rápido com uma atualização de “software”?

120

Os novos processadores AMD Ryzen estão no mercado e, infelizmente, eles parecem não ter jogos. Processadores Intel são obviamente ainda mais rápidos para jogos. As pessoas, claro, não estavam a favor disso e a AMD fez uma declaração dizendo que está atualizando o firmware ou software para acelerar o Ryzen para jogos.

Corrija-me se estiver errado, mas o processador deve ter um firmware estático para ser compatível com o padrão x64? Se assim for, a AMD não teria que otimizar os jogos (software) para seus processadores, o que é obviamente impossível? O que está acontecendo lá para dizer tais coisas, se parece que é impossível ver as condições subjacentes?

Mas posso estar errado (espero que sim), então a pergunta é:

É possível obter um aumento de velocidade para um processador sem alterar o hardware subjacente? Se é possível, como isso é feito? Existe software ao lado do firmware do processador?

    
por Arthur P. R. 07.03.2017 / 22:45

7 respostas

122

Os processadores modernos são muito mais complicados do que se imagina. Eles são incrivelmente complicados, quase além da compreensão de uma única pessoa. Expandindo uma breve observação por "horta", pode-se ter todos os itens a seguir:

  1. Para começar, quase todo hardware interno é configurável em grande medida. Existem milhares e milhares de registros de configuração com zilhões de bits individuais que devem ser configurados para uma CPU operar. Todas as várias camadas de interação de cache de CPU têm pipelines configuráveis, e vários atrasos de temporização obviamente afetam o desempenho geral.

  2. Existem centenas de recursos avançados colocados por arquitetos que a engenharia não teve tempo de validar, então centenas de recursos estão desabilitados ou configurados em configuração à prova de falhas com "chicken bits ". Mas eles podem ser ajustados e ativados se forem funcionais e úteis. Esses recursos de aprimoramento geralmente são validados em profundidade ao longo do tempo e podem ser gradualmente ativados ao longo da vida de um processador por vários patches de microcódigo.

  3. Todas as CPUs recentes possuem várias unidades internas que são controladas por microprocessadores independentes incorporados no chip da CPU x86. Uma unidade de superfície pública é a P-Unit. Os processadores modernos não podem funcionar sem um gerenciamento de energia agressivo, ou eles irão derreter. No entanto, o gerenciamento de energia profunda está em contradição com uma política agressiva de relógio / tensão de entrada / saída, e mudanças na política afetam strongmente o desempenho geral do sistema. Todos os detalhes são controlados pela P-Unit, e podem ser otimizados / ajustados carregando outro outro patch de microcódigo, como respondido aqui.

  4. Muitos outros aspectos da interconexão interna são controlados por vários processadores embarcados adicionais, que podem ser corrigidos carregando patches de microcódigo neles ou atualizando o BIOS se ele tiver acesso a esses recursos de configuração.

Em suma, enquanto o hardware da CPU é realmente hardwired, a configuração do referido hardware praticamente define o seu desempenho, e pode ser ajustado para um melhor desempenho do sistema por meio de atualizações do BIOS e patches de microcódigo embutidos.

    
por 08.03.2017 / 00:58
102

Uma variedade de problemas de software no sistema operacional e nos níveis de aplicativos está causando desempenho abaixo do ideal.

Os processadores Ryteen de oito núcleos consistem em dois complexos principais (CCXs), cada um com quatro núcleos e 8 MB de cache L3. Acessar o cache L3 em um CCX diferente é mais lento devido à necessidade de mover dados mais distantes ao longo do Infinity Fabric (interconexão cache-coherent proprietária da AMD), o que significa que mover threads de um CCX para outro ou comunicar entre núcleos em diferentes CCXs resulta em desempenho reduzido. Essa penalidade é uma reminiscência do que aconteceria em um servidor com vários soquetes executando um sistema operacional que não é NUMA .

Aparece O Windows tem a tendência de simplesmente mover processos em torno de diferentes núcleos e não reconhece a penalidade de comunicação entre o CCX . Isso significa que o Windows pode colocar threads em diferentes CCXs mesmo quando isso não for necessário , reduzindo o desempenho.

Revisor alemão PC Games Hardware testou um Ryzen 7 1800X com diferentes números de núcleos desativados e descobriram que ter dois CCXs com dois núcleos ativados em cada um deles produz um desempenho mais lento do que ter um CCX ativado com todos os seus núcleos intactos:

IssoocorreapesardofatodequeterapenasumCCXhabilitadosignificaqueapenas8MBdecacheL3estãodisponíveis,emvezdos16MBcompletos.DoartigodoPCGamesHardware,viaGoogleTranslate(grifonosso):

[...]ItismuchmoreexcitingtorecognizethefactthattheCCXdatatransfersinterferewitheachotherinanycase-sometimesmore,sometimeslessclearly.TheadvantagesofthelargerL3cache(2+2configuration)arenowherewithinthismeasurementseries.

Este artigo de perspectiva do PC mostra que há uma latência de comunicação substancial entre os núcleos em diferentes CCXs, mas muito pouca latência ao se comunicar com os núcleos no mesmo CCX. Observe que este artigo sugere que o Windows está ciente do design do CCX e está evitando o agendamento de threads em CCXs diferentes, mas os resultados conflitantes foram encontrados pelos membros da comunidade.

Muitos (mas não todos) benchmarks de jogos mostram um desempenho aumentado quando o SMT está desativado. No entanto, rumores esse estado que o Windows programa incorretamente como se cada encadeamento de hardware como seu próprio núcleo estivesse incorreto . Segundo a AMD, isso é causado pelo fato de que muitos aplicativos são otimizados apenas para processadores Intel (o que não é inesperado, já que a AMD tem sido MIA do mercado de processadores high-end há cinco anos). A AMD diz que está trabalhando com centenas de desenvolvedores de jogos para melhorar o desempenho dos processadores Ryzen. No entanto, suspeito que uma atualização do Windows ainda possa ajudar ajustando melhor o agendador para as características da arquitetura Zen .

O seguinte exemplo do Tom's Hardware demonstra um desempenho degradado com o SMT ativado:

A TechSpot fez uma análise detalhada do desempenho dos jogos com o SMT ativado e desativado e apresentou resultados muito semelhantes:

Também há problemas de gerenciamento de energia implicados nesses testes. A mesma declaração da AMD observa que o Windows não está totalmente ciente dos novos recursos do Ryzen, como o estacionamento do núcleo e a comutação rápida de freqüência de clock. Isso é consistente com as melhorias de desempenho relatadas pelo Tom's Hardware ao usar o plano de energia de alto desempenho (consulte o gráfico acima, HP = alto desempenho). Uma atualização para o Windows pode adicionar suporte para esses recursos e melhorar o desempenho.

    
por 08.03.2017 / 01:09
9

link

1) Early motherboard BIOSes were certainly troubled: disabling unrelated features would turn off cores. Setting memory overclocks on some motherboards would disable boost. Some BIOS revisions would plain produce universally suppressed performance.

2) Ryzen benefits from disabling High Precision Event Timers (HPET). The timer resolution of HPET can cause an observer effect that can subtract performance. This is a BIOS option, or a function that can be disabled from the Windows command shell.

3) Ryzen benefits from enabling the High Performance power profile. This overrides core parking. Eventually we will have a driver that allows people to stay on balanced and disable core parking anyways. Gamers have been doing this for a while, too. I misspoke, here. I want to clarify the benefit: High Performance mode allows the CPU to update its voltage/clockspeed in 1ms, vs. the 30ms that it takes balanced mode. This is what our driver will accomplish. Apologies for the confusion!

Portanto, a verdadeira questão não é como uma atualização de BIOS / firmware pode tornar um processador mais rápido (isso pode ser feito, otimização de microcódigo, etc.), é mais ... como aleijado é uma CPU de BIOS / firmware com bugs

    
por 07.03.2017 / 23:00
6
O

BIOS é geralmente considerado como firmware. O BIOS pode girar todos os tipos de bits no hardware para alterar a forma como o sistema é executado

Então, sim, é totalmente viável lançar novo firmware e, por exemplo, velocidades de clock ou se as pré-buscas estão ativadas, ou se um determinado núcleo - ou IIO - pode obter certas preferências para o cache que tem o potencial de aumentar desempenho de jogos devido à maioria dos jogos serem projetados de maneira única.

    
por 07.03.2017 / 22:53
4

Não é tanto que as atualizações de software tornem o processador mais rápido. O que todos esperam é que as atualizações de software tornem o software mais adequado para a arquitetura do Ryzen e sejam capazes de alavancar melhor seu desempenho.

Correct me if I'm wrong but the processor must have a static firmware to be compatible to the x64 standard?

Quase. Há software na CPU (microcódigo, como mencionado acima) e pode influenciar o desempenho. Basicamente, o X86 apenas especifica os resultados das operações, como exatamente a CPU alcança esses resultados é o problema dos engenheiros. As probabilidades de ajustes de microcódigo que desempenham um papel importante no Ryzen são escassas, já que a lacuna de desempenho parece se aplicar principalmente a jogos que sugerem que o processador funciona bem, mas alguns jogos em particular não o utilizam bem.

O Sistema Operacional é responsável por tentar garantir que os programas sejam distribuídos pela CPU com eficiência, o que pode afetar o desempenho, mas, em geral, nenhum desses fatores é o principal problema para uma nova arquitetura. A maioria das melhorias de desempenho em casos como esse ocorre como resultado de desenvolvedores que escrevem código mais adequado à nova arquitetura. Isso tende a não acontecer entre gerações de CPUs Intel, já que as mudanças de design não são tremendamente significativas, então o que funciona bem em um provavelmente funcionará bem em outro.

No entanto, Ryzen é um novo design, então tudo que foi escrito para se adequar a outros processadores por definição não foi escrito para se adequar ao Ryzen.

Para simplificar excessivamente a situação, imagine dois processadores:

  • O Processor One está no mercado há algum tempo e é (por qualquer motivo) muito rápido em adicionar números. O software é projetado para tentar usar o máximo possível, para aproveitar essa habilidade.

  • Um processador concorrente chega ao mercado e é mais fraco na adição, mas mais strong na multiplicação. Todo o software otimizado para usar mais instruções de adição pesada tem um desempenho ruim no novo processador, mas o software que não foi adaptado para usar a adição de lotes tem um desempenho mais ou menos similar. Alguns softwares já podem fazer muita multiplicação, e farão melhor nas novas CPUs do que no Processor One, mesmo no dia do lançamento.

Algum tempo após o lançamento, os desenvolvedores começarão a se adaptar, usando mais multiplicação em seus softwares, ou até mesmo projetarão seu software para alternar entre caminhos de código com adição pesada, e multiplicação pesada dependendo de qual arquitetura de CPU está sendo usada. / p>

Isso é o que está acontecendo com o Ryzen - é uma nova arquitetura que os desenvolvedores de software não otimizaram para se adequarem às características de agora. Com o tempo, os desenvolvedores começarão a ajustar o software para ter um desempenho melhor. Como a maioria dos softwares já foi projetada para ter um bom desempenho nos processadores da Intel (afinal, eles são bastante populares!), Eles provavelmente não se beneficiarão muito dessas mudanças.

Existem algumas cargas de trabalho nas quais a Intel simplesmente permanecerá mais rápida, e algumas que o Ryzen já é mais rápido (e vai ficar ainda mais rápido) dependendo do comportamento subjacente. Na situação que dei acima, um software que só precisa adicionar coisas sempre terá um melhor desempenho no primeiro processador, e o software que simplesmente deve multiplicar as coisas sempre terá um desempenho melhor no segundo - mas a maior parte do software é complexa e essas diferenças vão se nivelar um pouco.

If so wouldn't AMD have to optimize the games(software) for their processors which is obviously impossible?

Vale a pena notar também que o que a AMD disse sobre o desempenho dos jogos é que eles estão trabalhando com os desenvolvedores para otimizar os jogos. Eles estão enviando sistemas de desenvolvimento para empresas (atualmente existem 300 em estado selvagem, e eles estão apontando para 1000 até o final do ano) e conversando com aqueles cujos jogos têm um desempenho ruim para ajudar a resolver o problema. Até onde sei, nenhuma declaração foi feita de que a AMD está otimizando os jogos.

Nesse caso específico, Ryzen também está sendo impedido em algumas circunstâncias pelo Windows tomar decisões erradas sobre quais núcleos carregar com o trabalho, e os BIOS atuais são problemáticos por motivos que simplesmente não pretendo saber. No entanto, essas questões não podem ser responsáveis por toda a lacuna de desempenho, pois há cargas de trabalho nas quais a Ryzen supera de maneira convincente a Intel, o que sugere que a questão é pelo menos parcialmente (se não principalmente) dos programas específicos sendo executados o sistema operacional ou o BIOS como um todo.

    
por 09.03.2017 / 15:48
1

Claro, o software pode melhorar o desempenho da CPU ou mesmo da GPU.

Um caminho é definitivamente o overclocking ou algum outro tipo de mecanismo de alteração do relógio. Segundo pode ser otimizações de driver. Estes incluem melhores métodos de compressão de dados, algoritmos de decodificação mais rápidos, etc ... basicamente recursos que ajudam a utilizar melhor o hardware. Esses recursos também podem ser atualizados por atualizações de firmware, o que não é realmente um software (regular). Depois, há um software que pode controlar a solução de refrigeração do seu computador. Isso é muito útil para CPUs e GPUs que utilizam tecnologias que aumentam o desempenho, como o Turbo boost da Intel e o aumento de GPU da Nvidia. Hardware como esse tem certas limitações de temperatura, então eles diminuem seu desempenho, quando eles estão muito quentes e dinamicamente overclock, quando os aplicativos exigem maior poder de computação, desde que eles não tenham atingido seu consumo máximo de energia e eles são legais o suficiente .

Há outras opções também, mas elas geralmente cobrem isso. Basicamente, desde que você conheça o problema e possa programaticamente manipular a maneira como os dados são processados (como introduzir algum algoritmo de decodificação inteligente que substitua um tipo de solução de "força bruta") ou manipular as reações do processador a diferentes fatores-chave para seu desempenho (como aumentar o resfriamento de forma mais agressiva em caso de superaquecimento ou monitorar as demandas de recursos dos aplicativos e fazer overclocking dinâmico quando mais energia de processamento é necessária), você pode fazer muito para melhorar (ou piorar) o desempenho de uma unidade de processamento. / p>

No caso da AMD, é provavelmente uma otimização de seu mecanismo de reforço ou solução de resfriamento. Um ou ambos provavelmente foram alterados para reagir de forma mais agressiva ao aumento de carga ou temperatura.

TL; DR: Sim, o software pode melhorar o desempenho de um processador. Há muitas maneiras que podem ser feitas, como otimizações de driver e firmware, overclocks, etc. Qualquer alteração de software que prepare dados para facilitar o processamento ou fazer com que o hardware reaja melhor à carga ou suas limitações provavelmente levará a um aumento de desempenho.

    
por 08.03.2017 / 00:53
-1

Atualizações de software podem definitivamente fazer o sistema (incluindo o processador) funcionar mais rápido.

Um exemplo muito extremo disso são grandes computadores mainframe IBM: você pode comprar mais tempo de CPU on-line, e tudo que você tem é uma chave de licença que você precisa entrar em seu sistema operacional, e boom !, seu sistema roda mais rápido. O truque é simples: o agendador do SO às vezes apenas se recusa a agendar tarefas e fazer com que a CPU durma, ou até mesmo executar um loop NO-OP por um curto período de tempo, para atingir um determinado throughput médio geral. Se você pagar por uma licença mais cara, o agendador removerá os NO-OPs.

Ou, ainda mais drasticamente: se você comprar um sistema com apenas 4 ou 6 ou 8 CPUs, normalmente haverá cerca de 16-32 unidades realmente instaladas. O sistema operacional simplesmente desliga alguns deles e, ao inserir uma chave de licença, você pode ativá-los.

Da mesma forma, os mainframes IBM distinguem entre diferentes tipos de processadores: processadores Linux, processadores Java, processadores de transações, etc. Eles são na verdade todos o mesmo processador, mas o agendador de SO se recusará a agendar tarefas de transação (que são as mais importantes) ) para um processador Java ou Linux. Somente Java VMs serão agendadas para os processadores Java e somente as VMs Linux serão agendadas para os processadores Linux. Se você deseja obter um desempenho de Transação mais alto, é necessário comprar licenças para mais processadores de Transação: novamente, esses são exatamente os mesmos processadores, a única diferença é um sinalizador de configuração no programador que diz "não agendar tarefas de transação nesses processadores ".

Outro exemplo, não tão extremo, são as diferentes edições do Windows. Diferentes edições do Windows oferecem suporte a diferentes números de núcleos de CPU e diferentes quantidades de memória. Se você tiver memória grande e um grande número de CPUs, poderá tornar seu sistema mais rápido, apenas atualizando para uma edição "maior" do Windows. Observe que as edições têm exatamente o mesmo código; existe apenas uma opção de configuração em algum lugar que diz "você é um Home Edition, você suporta apenas 1 CPU e 128 GiByte".

    
por 11.03.2017 / 02:03

Tags