Questão Como um processador pode ser feito mais rapidamente com uma atualização de “software”?


Os novos processadores AMD Ryzen estão no mercado e, infelizmente, 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 impossível ver as condições subjacentes?

Mas eu 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 para o processador? 


118


origem


Você pode querer google o termo "microcódigo". - PlasmaHH
já em SO: stackoverflow.com/questions/4366837/what-is-intel-microcode - szulat
Firmware pode ser bom ou ruim, ou simplesmente não "bom para o aplicativo". x86 não define o tempo de instrução, portanto, atualizar o firmware (microcódigo) para melhorar o tempo de instrução não quebra a compatibilidade x86. Existem algumas possíveis razões pelas quais isso é viável e pode ser necessário: 1) o microcódigo inicial é um trabalho rápido e não é ideal; 2) o microcódigo inicial funciona bem quando o programa é compilado para o Ryzen, mas não se o programa for compilado para o x86 genérico ou para o processador da intel, que é a maioria do software existente. - user3528438
Uma atualização de microcódigo pode melhorar os tempos de instrução, mas há muito mais. CPUs modernas fazem coisas como previsão de ramificação, execução especulativa, execução fora de ordem e mais que podem melhorar significativamente o desempenho. Tudo isso é controlado pelo microcódigo. As otimizações de microcódigo levam tempo e essa mercadoria está freqüentemente em falta em um negócio competitivo. - LMiller7
Imagine que você está correndo e, por algum motivo, você se recusa a dobrar a perna esquerda. Isso tornará você desajeitado e lento - você pode facilmente aumentar sua velocidade de corrida de forma mais eficiente usando o "mesmo hardware" de sua perna e dobrando-a com mais eficiência. Mudar as instruções do "cérebro" para a perna aumenta drasticamente o desempenho. - Elysian Fields


Respostas:


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. Há 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 "pedaços de frango". 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 que estão embutidos 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 fortemente o desempenho geral do sistema. Todos os detalhes são controlados pela P-Unit, e podem ser otimizados / ajustados carregando 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 seu desempenho e pode ser ajustada para melhor desempenho do sistema por meio de atualizações de BIOS e patches de microcódigo embutidos.


120



Não tenho certeza qual resposta devo aceitar. A resposta do @bwDraco é boa, mas a sua resposta se encaixa na resposta real, embora sua resposta esteja fornecendo informações específicas do problema. - Arthur P. R.
Bem, você deveria aceitar esta responda. Você veio de um ambiente de eletrônica, então você parece estar interessado sobre o Firmware da CPU (não algumas mudanças no Windows). @ ArthurP.R. - AnoE
@ ArthurP.R. Se as pessoas de benchmarking descobrissem que o Windows não agendava tarefas para processadores multithreaded adequadamente (trata os threads como núcleos independentes), isso significa que a AMD de alguma forma estragou os descritores do processador / o que quer que seja, então a Microsoft não consegue entendê-los. Se os descritores puderem ser corrigidos para os padrões da Microsoft por algum mecanismo de atualização, isso seria uma correção fácil de primeira ordem. E você fez uma pergunta geral, então isso responde. :-) - Ali Chen
É por isso que aceitei a sua resposta, mesmo que a resposta do @bwDraco também esteja aqui - Arthur P. R.


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

Processadores Ryzen 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. Esta penalidade é uma reminiscência do que aconteceria em um servidor multi-socket executando um sistema operacional que não é NUMA-consciente.

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

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

PC Games Hardware benchmark result: Battlefield 1

Isso ocorre apesar do fato de que ter apenas um CCX ativado significa que apenas 8 MB de cache L3 estão disponíveis, em vez dos 16 MB completos. Do artigo da PC Games Hardware, via Google Translate (grifo nosso):

[...] É muito mais interessante reconhecer o fato de que as transferências de dados do CCX interferem entre si em qualquer caso - às vezes mais, às vezes de forma menos clara. As vantagens do cache L3 maior (configuração 2 + 2) estão longe desta série de medições.

Este artigo de perspectiva de PC mostra que há latência de comunicação substancial entre núcleos em CCXs diferentes, mas muito pouca latência ao se comunicar com 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 aumentou desempenho quando o SMT está desativado. Contudo, rumores que afirmam que o Windows agende incorretamente como se cada thread de hardware como seu próprio núcleo estivesse incorreto. De acordo com a AMD, isso é causado pelo fato de que muitos aplicativos são otimizados apenas para processadores Intel (O que não é inesperado, dado que a AMD tem sido MIA do mercado de processadores high-end por cerca de 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 pode ajudar, ajustando melhor o agendador para as características do zen arquitetura.

Os seguintes exemplo do hardware do Tom demonstra desempenho degradado com o SMT ativado:

Tom's Hardware benchmark result: Ashes of the Singularity

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

TechSpot benchmark result: Deus Ex: Mankind Divided


Há também problemas de gerenciamento de energia implicado 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.


102



Não tenho certeza se estou seguindo. O OP diz explicitamente que, uma vez que a otimização de jogos para Ryzen está fora de questão nesta fase, e os bugs do Windows são ainda mais longos, como essa resposta ajuda a entender como as atualizações de firmware podem dar esperanças em qualquer melhoria de desempenho? - Ali Chen
Ele está basicamente dizendo que o Windows está bagunçando totalmente como / onde está alocando threads - causando problemas de desempenho. - Journeyman Geek♦
@JourneymanGeek, qualquer Windows decente (não tenho certeza se o W10 se qualifica) sempre tem controle explícito da afinidade central com um processo, e zombar com afinidade sempre foi a primeira ferramenta de benchmarking. O que há de novo então? - Ali Chen
Infelizmente sim, mas as atualizações do kernel estão em andamento. Você provavelmente precisará esperar pelo kernel 4.12; 4.11 traz algumas correções, mas não está exatamente lá. phoronix.com/scan.php?page=news_item&px=Ryzen-7-Linux-4.11 - bwDraco
@Crouchingkitten AMD só pode entregar drivers não atualizações do sistema operacional. Esse material não está no pool de tarefas AMDS. - Arthur P. R.


http://wccftech.com/amd-ryzen-launch-aftermath-gaming-performance-amd-response/

1) Os primeiros BIOS da placa-mãe estavam certamente com problemas: desativando   recursos não relacionados desligariam os núcleos. Configuração de overclock de memória   algumas placas-mãe desativariam o boost. Algumas revisões do BIOS seriam simples   produzir desempenho suprimido universalmente.

2) O Ryzen se beneficia da desativação de Temporizadores de Eventos de Alta Precisão (HPET).   A resolução do timer do HPET pode causar um efeito de observador que pode   subtrair desempenho. Esta é uma opção do BIOS, ou uma função que pode ser   desabilitado do shell de comando do Windows.

3) O Ryzen se beneficia da ativação do perfil de energia de alto desempenho.   Isso substitui o estacionamento do núcleo. Eventualmente, teremos um driver que   permite que as pessoas fiquem equilibradas e desativem o estacionamento central de qualquer maneira.   Os jogadores também vêm fazendo isso há algum tempo. Eu falei mal aqui. eu quero   para esclarecer o benefício: o modo de alto desempenho permite que a CPU atualize   sua tensão / clockspeed em 1ms, contra os 30ms que leva equilibrada   modo. Isto é o que nosso motorista realizará. Desculpas para o   confusão!

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


9



Sinto muito por perguntar do lado errado da pergunta. Eu pensei que se encaixaria especialmente porque também estou interessado em informações não triviais.
np, talvez seja abstrato o suficiente para ficar. Eu estou seguindo Ryzen como estou planejando uma grande reconstrução, então estou seguindo todos os problemas iniciais. Como usuário do Linux, também estou seguindo problemas específicos do Linux. Uma coisa a considerar com o Ryzen (e o núcleo zen) é que este é o primeiro SMT da AMD e as indicações iniciais são relatórios lógicos diferentemente do que Intel e BIOS / Windows poderiam estar tentando usar todos os núcleos como núcleos físicos quando metade são lógicos núcleos. Isso afetaria SIGNIFICATIVAMENTE o desempenho - Naib
As respostas, comentários e pensamentos sobre esta questão são muito importantes, porque as pessoas precisam saber se as coisas podem ficar ainda melhores e até agora eu vi agora que posso esperar novamente. BTW o artigo é muito muito bom!
Para mais específico de Ryzen ... forums.gentoo.org/viewtopic-t-1057910.html Muitos de nós no fórum do gentoo e discutimos quando recebemos informações. Agora para o linux os drivers de áudio mobo estão apenas no git, da mesma forma que monitores térmicos não existem ... O HPET e os principais problemas são uma preocupação imediata. Agora mesmo a AMD derruba a Intel por pura computação - Naib
até certo ponto sim. Eu mantenho minha afirmação de que para o Ryzen ele está sendo aleijado para BIOS / drivers irá "acelerar" - Naib


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 para eles lançar novos firmwares e velocidades como clock, ou se as pré-buscas estão ativadas, ou se um determinado núcleo - ou IIO - pode ter certas preferências para o cache que tem o potencial de aumentar o desempenho dos jogos. para a maioria dos jogos sendo projetados de maneira única.


6



Isso parece interessante, é possível encontrar alguma referência para isso? Seria muito bom ter alguns deles para provar isso para as pessoas :)
@ ArthurP.R. Entre pcode, ucode (microcode) e bios, o desempenho e a funcionalidade de um chip podem ser muito alterados. Esses são todos software / firmware. Fonte sábio, não, eu não posso lhe dar nenhuma fonte externa para esta informação (como tudo é interno). - horta
Que chatice @horta no entanto muito obrigado por esta informação. Sinta-se à vontade para ajustar sua resposta para incluir essas informações também. Vale a pena!


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 da Ryzen e sejam capazes de alavancar melhor seu desempenho.

Corrija-me se estiver errado, mas o processador deve ter um firmware estático para ser compatível com o padrão x64?

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 no microcódigo desempenharem um papel importante com o Ryzen são pequenas, já que a diferença 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 no 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 Processador One está no mercado há algum tempo e é (por qualquer razão) 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 forte 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.

Este é o tipo de coisa que está acontecendo com o Ryzen - é uma nova arquitetura que os desenvolvedores de software não otimizaram para se adequar às características de cada um. 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 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.

Se assim for, a AMD não teria que otimizar os jogos (software) para seus processadores, o que é obviamente impossível?

Também vale a pena notar 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.


4



Esta resposta também é interessante e ni e. Obrigado. - Arthur P. R.


É claro que o software pode melhorar o desempenho da CPU ou mesmo da GPU.

Uma maneira é definitivamente overclocking ou algum outro tipo de mecanismo de alteração de 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.

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.


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 da IBM: você pode comprar mais tempo de CPU on-line, e tudo que você obtém é uma chave de licença que você precisa inserir no 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 a 32 unidades realmente instaladas. O sistema operacional simplesmente desliga alguns deles e, ao inserir uma chave de licença, é possível ativá-los.

Da mesma forma, os mainframes IBM distinguem entre diferentes tipos de processadores: processadores Linux, processadores Java, processadores Transaction, etc. Eles são, na verdade, todos do 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 alguma opção de configuração em algum lugar que diz "você é um Home Edition, você suporta apenas 1 CPU e 128 GiByte".


-1