Os novos processadores AMD Ryzen estão no mercado e, infelizmente, parecem não ter jogos. Os processadores Intel são obviamente ainda mais rápidos para jogos. As pessoas obviamente não eram 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 sim, 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 essas coisas se parece impossível ver as condições subjacentes?
Mas posso estar errado (espero que sim), então a pergunta é:
É possível obter uma aceleração para um processador sem alterar o hardware subjacente? Se for possível, como isso é feito? Existe software ao lado do firmware do processador?
Respostas:
Os processadores modernos são muito mais complicados do que se poderia pensar. Eles são incrivelmente complicados, quase além da compreensão de uma única pessoa. Expandindo uma breve observação de "horta", pode-se ter todo o seguinte:
Para começar, quase todo o 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 definidos para que uma CPU opere. Todas as várias camadas de interação CPU-cache têm pipelines configuráveis, e vários atrasos de tempo obviamente afetam o desempenho geral.
Existem centenas de recursos avançados que os arquitetos colocam ali que a engenharia não teve tempo de validar, portanto centenas de recursos são desabilitados ou configurados em uma 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 ativados gradualmente ao longo da vida de um processador por vários patches de microcódigo.
Todas as CPUs recentes possuem várias unidades internas controladas por microprocessadores independentes incorporados no chip da CPU x86. Uma unidade de superfície pública é a unidade P. Os processadores modernos não podem funcionar sem um gerenciamento agressivo de energia, ou eles derreterão. No entanto, o gerenciamento profundo de energia está em contradição com uma política agressiva de relógio / tensão de entrada / saída e as mudanças na política afetam fortemente o desempenho geral do sistema. Todos os detalhes são controlados pela unidade P e podem ser otimizados / ajustados carregando outro patch de microcódigo, conforme respondido aqui.
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 resumo, enquanto o hardware da CPU é realmente conectado, a configuração do hardware define praticamente seu desempenho e pode ser ajustada para obter um melhor desempenho do sistema por meio de atualizações do BIOS e patches de microcódigo incorporados.
fonte
Uma variedade de problemas de software nos níveis de sistema operacional e de aplicativo está causando desempenho abaixo do ideal.
Os processadores Ryzen de oito núcleos consistem em dois complexos de núcleo (CCXs), cada um com quatro núcleos e 8 MB de cache L3. O acesso ao cache L3 em um CCX diferente é mais lento devido à necessidade de avançar os dados ao longo do Infinity Fabric (interconexão coerente em cache proprietária da AMD), o que significa que mover threads de um CCX para outro ou se 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 seja da NUMA .
Parece que o Windows tem uma tendência a simplesmente mover processos em diferentes núcleos e não reconhece a penalidade de comunicação entre CCX . Isso significa que o Windows pode colocar threads em diferentes CCXs, mesmo quando isso não for necessário , reduzindo o desempenho.
O 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 produz um desempenho mais lento do que ter um CCX ativado com todos os seus núcleos intactos:
Isso ocorre apesar de ter apenas um CCX ativado significa que apenas 8 MB de cache L3 estão disponíveis, em vez dos 16 MB completos. No artigo Hardware de jogos para PC, via Google Translate (ênfase adicionada):
Este artigo do PC Perspective mostra que existe uma latência de comunicação substancial entre núcleos em diferentes CCXs, 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 agendar threads em diferentes CCXs, mas resultados conflitantes foram encontrados pelos membros da comunidade.
Muitos (mas não todos) benchmarks Gaming Show aumento de desempenho quando SMT está desativado. No entanto, rumores dizem que o Windows programa incorretamente como se todos os threads de hardware como seu próprio núcleo estivessem incorretos . De acordo com a AMD, isso é causado pelo fato de muitos aplicativos serem otimizados apenas para processadores Intel (o que não é inesperado, pois a AMD tem sido MIA no mercado de processadores de última geração por cinco anos). A AMD diz que está trabalhando com centenas de desenvolvedores de jogos para melhorar o desempenho nos processadores Ryzen. No entanto, suspeito que uma atualização do Windows ainda pode ajudar, ajustando com mais precisão o agendador para as características da arquitetura Zen .
O exemplo a seguir do Tom's Hardware demonstra desempenho degradado com o SMT ativado:
O TechSpot fez uma análise aprofundada do desempenho dos jogos com SMT ativado e desativado e apresentou resultados muito semelhantes:
Também há problemas de gerenciamento de energia envolvidos nesses testes. A mesma declaração da AMD observa que o Windows não está totalmente ciente dos novos recursos do Ryzen, como estacionamento principal e troca rápida de frequê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 a tabela acima, HP = alto desempenho). Uma atualização para o Windows pode adicionar suporte para esses recursos e melhorar o desempenho.
fonte
http://wccftech.com/amd-ryzen-launch-aftermath-gaming-performance-amd-response/
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 ... quão aleijada é uma CPU pelo BIOS / firmware de buggy
fonte
O BIOS é geralmente considerado como firmware. O BIOS pode modificar todos os tipos de bits no hardware para alterar a forma como o sistema é executado
Portanto, sim, é perfeitamente viável que eles realizem um novo firmware e para coisas como a velocidade do relógio, ou se as pré-configurações estão ativadas ou se um determinado núcleo - ou IIO - pode obter determinadas preferências no cache, o que tem o potencial de aumentar o desempenho dos jogos devido a para a maioria dos jogos projetados de maneira única.
fonte
Não é tanto que as atualizações de software tornem o processador mais rápido. O que todo mundo espera é que as atualizações de software tornem o software mais adequado para a arquitetura da Ryzen e capaz de alavancar melhor seu desempenho.
Quase. Há software na CPU (microcódigo, como mencionado acima) e pode influenciar o desempenho. Basicamente, o X86 especifica apenas os resultados das operações, como exatamente a CPU alcança esses resultados é o problema dos engenheiros. As chances de ajustes de microcódigo desempenhando um papel importante com a Ryzen são pequenas, já que a diferença de desempenho parece se aplicar principalmente a jogos que sugerem que a CPU tenha um bom desempenho, mas alguns jogos em particular não a aproveitam bem.
O sistema operacional é responsável por garantir que os programas sejam distribuídos de forma eficiente na CPU, o que pode afetar o desempenho, mas, em geral, nenhum desses fatores é o principal problema de uma nova arquitetura. A maioria das melhorias de desempenho em casos como esse ocorre como resultado dos desenvolvedores que escrevem código mais adequado à nova arquitetura. Isso tende a não acontecer entre gerações de CPU da Intel, pois as mudanças no design não são tremendamente significativas; portanto, o que funciona bem em um provavelmente funcionará bem em outro.
No entanto, a Ryzen é um novo design, portanto, tudo o que foi escrito para se adequar a outras CPUs, por definição, não foi escrito para se adequar à Ryzen.
Para simplificar demais a situação, imagine dois processadores:
O Processador Um está no mercado há um tempo e é (por qualquer motivo) muito rápido em adicionar números. O software foi projetado para tentar usar a adição o máximo possível, para aproveitar essa capacidade.
Um processador concorrente chega ao mercado e é mais fraco além disso, mas mais forte na multiplicação. Todo o software otimizado para usar mais instruções de adição pesada executa mal no novo processador, mas o software que não foi adaptado para usar a adição de lotes executa mais ou menos da mesma forma. Alguns softwares já podem multiplicar bastante e terão melhores resultados nas novas CPUs do que no Processador Um, 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 seu software, ou até mesmo projetar seu software para alternar entre os caminhos de códigos pesados de adição e os pesados de multiplicação, dependendo de qual arquitetura de CPU estiver sendo usada.
É o que está acontecendo com a Ryzen - é uma nova arquitetura que os desenvolvedores de software ainda não otimizaram para se adequar às características. Com o tempo, os desenvolvedores começarão a ajustar seu software para obter um melhor desempenho. Como a maioria dos softwares já foi projetada para ter um bom desempenho nos processadores Intel (eles são bastante populares, afinal!), 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 outras nas quais a Ryzen já é mais rápida (e ficará ainda mais rápida), dependendo do comportamento subjacente. Na situação mencionada acima, um software que apenas precisa adicionar coisas sempre terá melhor desempenho no primeiro processador, e software que simplesmente deve multiplicar as coisas sempre terá melhor desempenho no segundo - mas, na maioria das vezes, o software é complexo e essas diferenças se estabilizarão um pouco.
Também vale a pena notar que o que a AMD realmente disse sobre o desempenho dos jogos é que eles estão trabalhando com desenvolvedores para otimizar os jogos. Eles estão enviando sistemas de desenvolvimento para empresas (atualmente existem 300 em estado selvagem, e estão apontando para 1000 até o final do ano) e conversando com aqueles cujos jogos apresentam um desempenho ruim para ajudar a resolver o problema. Até onde eu sei, nenhuma declaração foi feita de que a AMD esteja otimizando os jogos.
Nesse caso em particular, o Ryzen também está sendo retido em algumas circunstâncias pelo Windows, tomando más decisões sobre quais núcleos carregar com o trabalho, e os BIOS atuais são problemáticos por razões que simplesmente não pretendo conhecer. No entanto, esses problemas não podem ser responsáveis por toda a lacuna de desempenho, pois há cargas de trabalho nas quais a Ryzen já supera a Intel de maneira convincente, o que sugere que o problema se deve pelo menos parcialmente (se não principalmente) aos programas específicos em execução, em vez de o SO ou BIOS como um todo.
fonte
Obviamente, o software pode melhorar o desempenho da CPU ou da GPU.
Uma maneira é definitivamente fazer overclock ou algum outro tipo de mecanismo de alteração de relógio. O segundo pode ser otimizações de driver. Isso inclui métodos melhores de compactaçã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 de aumento de desempenho, como o Turbo boost da Intel e o GPU da Nvidia. Um hardware como esse tem certas limitações de temperatura; portanto, eles diminuem o desempenho, quando estão com muito calor e fazem overclock dinâmico, quando os aplicativos exigem maior poder de computação, desde que não atinjam o consumo máximo de energia e eles '
Também existem outras opções, mas a maioria cobre isso. Basicamente, desde que você conheça o problema e possa manipular programaticamente a maneira como os dados são processados (como a introdução de um algoritmo de decodificação inteligente que substitui um tipo de solução de "força bruta") ou manipular as reações do processador a diferentes fatores-chave de seu desempenho (como aumentar o resfriamento mais agressivamente em caso de superaquecimento ou monitorar as demandas de recursos dos aplicativos e fazer overclock dinamicamente quando é necessário mais poder de processamento), 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 impulso ou solução de refrigeração. Provavelmente, um ou ambos 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 de fazer isso, 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ão a um desempenho aprimorado.
fonte
As atualizações de software podem definitivamente fazer o sistema (incluindo o processador) funcionar mais rápido.
Um exemplo muito extremo disso são os grandes computadores mainframe da IBM: você pode comprar mais tempo de CPU on-line e tudo o que obtém é uma chave de licença que precisa ser inserida no sistema operacional e o boom !, seu sistema funciona mais rápido. O truque é simples: às vezes, o agendador do sistema operacional se recusa a agendar tarefas e, em vez disso, a CPU entra no modo de suspensão, ou até mesmo executa um loop NO-OP por um curto período de tempo, para atingir um determinado rendimento 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, 6 ou 8 CPUs, normalmente haverá cerca de 16 a 32 sistemas instalados. O sistema operacional simplesmente desliga alguns deles e, ao inserir uma chave de licença, você pode ativá-los.
Da mesma forma, os mainframes da IBM distinguem entre diferentes tipos de processadores: processadores Linux, Java, Transaction etc. Eles são na verdade todos do mesmo processador, mas o planejador do 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 apenas VMs Linux serão agendadas para os processadores Linux. Se você deseja obter um desempenho mais alto da transação, é 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 agendador que diz "não agende tarefas de transação para esses processadores "
Outro exemplo, não tão extremo, são as diferentes edições do Windows. Edições diferentes do Windows suportam um número diferente de núcleos de CPU e diferentes quantidades de memória. Se você possui muita memória e um grande número de CPUs, pode acelerar seu sistema, 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ê é uma Home Edition, você suporta apenas 1 CPU e 128 GiByte".
fonte