Los nuevos procesadores AMD Ryzen están en el mercado y desafortunadamente parecen carecer de juegos. Los procesadores Intel son obviamente aún más rápidos para los juegos. La gente, por supuesto, no estaba a favor de esto y AMD hizo una declaración diciendo que están actualizando el firmware o el software para acelerar Ryzen para los juegos.
¿Corregirme si me equivoco pero el procesador debe tener un firmware estático para ser compatible con el estándar x64? Si es así, ¿AMD no tendría que optimizar los juegos (software) para sus procesadores, lo que obviamente es imposible? ¿Qué está pasando allí para decir tales cosas si parece que es imposible ver las condiciones subyacentes?
Pero puedo estar equivocado (eso espero) así que la pregunta es:
¿Es posible lograr una aceleración de un procesador sin cambiar el hardware subyacente? Si es posible, ¿cómo se hace esto? ¿Hay software al lado del firmware para el procesador?
Respuestas:
Los procesadores modernos son mucho más complicados de lo que uno podría pensar. Son increíblemente complicados, casi más allá de la comprensión de una sola persona. Ampliando un breve comentario de "horta", uno podría tener todo lo siguiente:
Para empezar, casi todo el hardware interno es configurable en gran medida. Hay miles y miles de registros de configuración con millones de bits individuales que deben configurarse para que una CPU funcione. Todas las diversas capas de interacción CPU-caché tienen canalizaciones configurables, y varios retrasos en el tiempo obviamente tienen un efecto en el rendimiento general.
Hay cientos de características avanzadas que los arquitectos ponen allí que la ingeniería no tuvo tiempo de validar, por lo que cientos de características están deshabilitadas o configuradas en una configuración a prueba de fallas con "bits de pollo" . Pero pueden afinarse y habilitarse si se encuentran funcionales y útiles. Estas características mejoradas generalmente se validan en profundidad con el tiempo y se pueden habilitar gradualmente durante la vida útil de un procesador mediante varios parches de microcódigo.
Todas las CPU recientes tienen varias unidades internas controladas por microprocesadores independientes que están integrados dentro del chip de la CPU x86. Una unidad de superficie pública es la Unidad P. Los procesadores modernos no pueden funcionar sin una administración de energía agresiva, o se derretirán. Sin embargo, la administración de energía profunda está en contradicción con una política agresiva de reloj / voltaje de entrada-salida, y los cambios en la política afectan fuertemente el rendimiento general del sistema. Todos los detalles son controlados por la Unidad P y pueden optimizarse / ajustarse cargando otro parche de microcódigo, como se responde aquí.
Muchos otros aspectos de la interconexión interna están controlados por varios procesadores integrados adicionales, que pueden corregirse cargando parches de microcódigo en ellos o actualizando el BIOS si tiene acceso a estos recursos de configuración.
En resumen, si bien el hardware de la CPU está realmente cableado, la configuración de dicho hardware define su rendimiento y se puede ajustar para un mejor rendimiento del sistema mediante actualizaciones de BIOS y parches de microcódigo integrados.
fuente
Una variedad de problemas de software tanto en el sistema operativo como en los niveles de aplicación están causando un rendimiento subóptimo.
Los procesadores Ryzen de ocho núcleos consisten en dos complejos de núcleo (CCX) cada uno con cuatro núcleos y 8 MB de caché L3. El acceso al caché L3 en un CCX diferente es más lento debido a la necesidad de mover datos más lejos a lo largo del Infinity Fabric (interconexión coherente de caché patentada de AMD), lo que significa que mover hilos de un CCX a otro o comunicarse entre núcleos en diferentes CCX da como resultado Rendimiento reducido. Esta penalización recuerda lo que sucedería en un servidor multi-socket que ejecuta un sistema operativo que no es NUMA -ware.
Parece que Windows tiene una tendencia a simplemente mover procesos alrededor de diferentes núcleos y no reconoce la penalización de comunicación entre CCX . Esto significa que Windows puede poner hilos en diferentes CCX incluso cuando no sea necesario , lo que reduce el rendimiento.
El crítico alemán PC Games Hardware probó un Ryzen 7 1800X con un número variable de núcleos desactivados y descubrió que tener dos CCX con dos núcleos habilitados en cada uno produce un rendimiento más lento que tener un CCX habilitado con todos sus núcleos intactos:
Esto a pesar del hecho de que tener solo un CCX habilitado significa que solo están disponibles 8 MB de caché L3, en lugar de los 16 MB completos. Del artículo de PC Games Hardware, a través del Traductor de Google (énfasis agregado):
Este artículo de PC Perspective muestra que hay una latencia de comunicación sustancial entre los núcleos en diferentes CCX, pero muy poca latencia cuando se comunica con núcleos en el mismo CCX. Tenga en cuenta que este artículo sugiere que Windows conoce el diseño de CCX y está evitando programar subprocesos en diferentes CCX, pero los miembros de la comunidad han encontrado resultados contradictorios.
Muchos (pero no todos) los puntos de referencia de juegos muestran un mayor rendimiento cuando SMT está desactivado. Sin embargo, los rumores indican que Windows programa incorrectamente como si cada hilo de hardware como su propio núcleo fuera incorrecto . Según AMD, esto se debe al hecho de que muchas aplicaciones están optimizadas solo para procesadores Intel (lo cual no es inesperado dado que AMD ha sido MIA del mercado de procesadores de alta gama durante unos cinco años). AMD dice que están trabajando con cientos de desarrolladores de juegos para mejorar el rendimiento en los procesadores Ryzen. Sin embargo, sospecho que una actualización de Windows aún puede ayudar ajustando más finamente el programador para las características de la arquitectura Zen .
El siguiente ejemplo de Tom's Hardware demuestra un rendimiento degradado con SMT habilitado:
TechSpot realizó un análisis en profundidad del rendimiento de los juegos con SMT habilitado y deshabilitado y obtuvo resultados muy similares:
También hay problemas de administración de energía implicados en estas pruebas. La misma declaración de AMD señala que Windows no es plenamente consciente de las nuevas características en Ryzen, como el estacionamiento central y el cambio rápido de frecuencia de reloj. Esto es coherente con las mejoras de rendimiento informadas por Tom's Hardware cuando se utiliza el plan de energía de alto rendimiento (consulte el cuadro anterior, HP = Alto rendimiento). Una actualización de Windows puede agregar soporte para estas características y mejorar el rendimiento.
fuente
http://wccftech.com/amd-ryzen-launch-aftermath-gaming-performance-amd-response/
Entonces, la verdadera pregunta no es cómo puede una actualización de BIOS / firmware hacer que un procesador sea más rápido (puede hacerlo, optimización de microcódigo, etc.), es más ... cuán dañada es una CPU por un BIOS / firmware defectuoso
fuente
El BIOS generalmente se considera firmware. El BIOS puede manipular todo tipo de bits en el hardware para cambiar el funcionamiento del sistema
Entonces, sí, es completamente factible para ellos lanzar un nuevo firmware y para cosas como la velocidad del reloj, o si las prefetches están habilitadas, o si un cierto núcleo (o IIO) puede obtener ciertas preferencias en la caché que tiene el potencial de aumentar el rendimiento del juego debido para la mayoría de los juegos diseñados de una sola hebra.
fuente
No es tanto que las actualizaciones de software aceleren el procesador. Lo que todos esperan es que las actualizaciones de software harán que el software sea más adecuado para la arquitectura de Ryzen y que pueda aprovechar mejor su rendimiento.
Casi. Hay software en la CPU (microcódigo, como se mencionó anteriormente) y puede influir en el rendimiento. Básicamente, X86 solo especifica los resultados de las operaciones, el problema de los ingenieros es exactamente cómo la CPU logra esos resultados. Sin embargo, las probabilidades de que los ajustes de microcódigo desempeñen un papel importante con Ryzen son escasas, ya que la brecha de rendimiento parece aplicarse principalmente a los juegos, lo que sugiere que la CPU funciona bien, pero algunos juegos en particular no lo aprovechan bien.
El sistema operativo es responsable de tratar de garantizar que los programas se extiendan por la CPU de manera eficiente, lo que puede afectar el rendimiento, pero en términos generales ninguno de estos factores es el principal problema para una nueva arquitectura. La mayoría de las mejoras de rendimiento en casos como este se deben a que los desarrolladores escriben código más adecuado para la nueva arquitectura. Esto tiende a no suceder entre generaciones de CPU Intel ya que los cambios de diseño no son tremendamente significativos, por lo que lo que funciona bien en uno probablemente funcionará bien en otro.
Sin embargo, Ryzen es un nuevo diseño, por lo que todo lo que se ha escrito para adaptarse a otras CPU por definición no se ha escrito para adaptarse a Ryzen.
Para simplificar enormemente la situación, imagine dos procesadores:
Processor One ha estado en el mercado por un tiempo y es (por cualquier razón) muy rápido en sumar números. El software está diseñado para probar y usar la suma tanto como sea posible, para aprovechar esta capacidad.
Un procesador de la competencia aterriza en el mercado y es más débil en la suma, pero más fuerte en la multiplicación. Todo el software optimizado para usar más instrucciones con gran cantidad de adiciones funciona mal en el nuevo procesador, pero el software que no ha sido diseñado para usar muchas adiciones funciona de manera más o menos similar. Es posible que algunos programas ya multipliquen mucho y funcionarán mejor en las nuevas CPU que en el procesador uno, incluso el día del lanzamiento.
Algún tiempo después del lanzamiento, los desarrolladores comenzarán a adaptarse, utilizando más multiplicación en su software, o incluso diseñarán su software para cambiar entre rutas de código con mucha adición y otras con mucha multiplicación dependiendo de la arquitectura de CPU que se esté utilizando.
Esto es lo que está sucediendo con Ryzen: es una nueva arquitectura que los desarrolladores de software aún no han optimizado para adaptarse a las características. Con el tiempo, los desarrolladores comenzarán a ajustar su software para obtener un mejor rendimiento. Como la mayoría del software ya está diseñado para funcionar bien en las CPU de Intel (¡son bastante populares, después de todo!), Es probable que no se beneficien mucho de estos cambios.
Hay algunas cargas de trabajo en las que Intel simplemente seguirá siendo más rápido, y algunas en las que Ryzen ya es más rápido (y aún más rápido) dependiendo del comportamiento subyacente. En la situación que mencioné anteriormente, un software que solo necesita agregar cosas siempre funcionará mejor en el primer procesador, y el software que simplemente debe multiplicar las cosas siempre funcionará mejor en el segundo, pero en su mayor parte el software es complejo y Estas diferencias se nivelarán un poco.
También vale la pena señalar que lo que AMD realmente ha dicho sobre el rendimiento de los juegos es que están trabajando con los desarrolladores para optimizar los juegos. Están enviando sistemas de desarrollo a las empresas (actualmente hay 300 en la naturaleza, y apuntan a 1000 para fin de año) y están hablando con aquellos cuyos juegos funcionan mal para ayudar a abordar el problema. Hasta donde sé, no se ha hecho ninguna declaración de que AMD esté optimizando los juegos ellos mismos.
En este caso particular, Windows también está frenando a Ryzen en algunas circunstancias al tomar malas decisiones sobre qué núcleos cargar con el trabajo, y los BIOS actuales son problemáticos por razones que simplemente no pretendo saber. Sin embargo, esos problemas no pueden ser responsables de toda la brecha de rendimiento, ya que hay cargas de trabajo en las que Ryzen ya supera a Intel de manera convincente, lo que sugiere que el problema se debe al menos parcialmente (si no en su mayoría) a los programas particulares que se ejecutan, en lugar de el sistema operativo o el BIOS en su conjunto.
fuente
Por supuesto, el software puede mejorar el rendimiento de la CPU o incluso de la GPU.
Una forma es definitivamente el overclocking o algún otro tipo de mecanismo de alteración del reloj. En segundo lugar pueden ser optimizaciones de controladores. Estos incluyen mejores métodos de compresión de datos, algoritmos de decodificación más rápidos, etc ... básicamente características que ayudan a utilizar mejor el hardware. Estas características también pueden actualizarse mediante actualizaciones de firmware, que no es realmente un software (normal). Luego está el software que puede controlar la solución de enfriamiento de su computadora. Eso es muy útil para las CPU y GPU que utilizan tecnologías que aumentan el rendimiento como el Turbo boost de Intel y el GPU Nvidia. Un hardware como ese tiene ciertas limitaciones de temperatura, por lo que reducen su rendimiento, cuando se están ejecutando demasiado calientes y se aceleran dinámicamente, cuando las aplicaciones demandan una mayor potencia de cómputo, siempre que no hayan alcanzado su máximo consumo de energía y '
También hay otras opciones, pero la mayoría lo cubren. Básicamente, siempre y cuando conozca el problema y pueda manipular mediante programación la forma en que se procesan los datos (como introducir algún algoritmo de decodificación inteligente que reemplace un tipo de solución de "fuerza bruta") o manipular las reacciones del procesador a diferentes factores clave para su rendimiento. (como aumentar el enfriamiento de forma más agresiva en caso de sobrecalentamiento o monitorear las demandas de recursos de las aplicaciones y overclocking dinámico cuando se necesita más potencia de procesamiento), puede hacer mucho para mejorar (o empeorar) el rendimiento de una unidad de procesamiento.
En el caso de AMD, probablemente sea una optimización de su mecanismo de refuerzo o solución de enfriamiento. Uno o ambos de estos probablemente han sido alterados para reaccionar de manera más agresiva al aumento de la carga o la temperatura.
TL; DR: Sí, el software puede mejorar el rendimiento de un procesador. Hay muchas formas de hacerlo, como las optimizaciones de controladores y firmware, overclocks, etc. Cualquier cambio de software que prepare los datos para que sea más fácil de procesar o haga que el hardware reaccione mejor a la carga o sus limitaciones probablemente conducirán a un mayor rendimiento.
fuente
Las actualizaciones de software definitivamente pueden hacer que el sistema (incluido el procesador) funcione más rápido.
Un ejemplo muy extremo de esto son las grandes computadoras mainframe de IBM: puedes comprar más tiempo de CPU en línea, y todo lo que obtienes es una clave de licencia que tienes que ingresar en tu sistema operativo, ¡y boom !, tu sistema funciona más rápido. El truco es simple: el programador del sistema operativo a veces se negará a programar tareas y hará que la CPU se suspenda, o incluso solo ejecutará un bucle NO-OP durante un corto tiempo, para lograr un rendimiento promedio general determinado. Si paga por una licencia más costosa, el programador elimina esos NO-OP.
O, aún más drásticamente: si compra un sistema con solo 4 o 6 u 8 CPU, normalmente habrá alrededor de 16-32 instaladas realmente. El sistema operativo simplemente apaga algunos de ellos y, al ingresar una clave de licencia, puede activarlos.
Del mismo modo, los mainframes de IBM distinguen entre diferentes tipos de procesadores: procesadores Linux, procesadores Java, procesadores de transacciones, etc. En realidad, todos son el mismo procesador, pero el programador del sistema operativo se negará a programar tareas de transacción (que son las más importantes) para un Procesador Java o Linux. Solo las máquinas virtuales Java se programarán para los procesadores Java y solo las máquinas virtuales Linux se programarán para los procesadores Linux. Si desea obtener un mayor rendimiento de la transacción, debe comprar licencias para más procesadores de transacciones: nuevamente, esos son exactamente los mismos procesadores, la única diferencia es una bandera de configuración en el programador que dice "no programe tareas de transacción para esos procesadores ".
Otro ejemplo, no tan extremo, son las diferentes ediciones de Windows. Las diferentes ediciones de Windows admiten diferentes números de núcleos de CPU y diferentes cantidades de memoria. Si tiene una memoria grande y una gran cantidad de CPU, puede hacer que su sistema sea más rápido, simplemente actualizando a una edición "más grande" de Windows. Tenga en cuenta que las ediciones tienen exactamente el mismo código; hay algún interruptor de configuración en alguna parte que dice "eres una Home Edition, solo soportas 1 CPU y 128 GiByte".
fuente