¿Cómo se puede hacer un procesador más rápido con una actualización de "software"?


120

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?


71
Es posible que desee googlear el término "microcódigo".
PlasmaHH


10
El firmware puede ser bueno o malo, o simplemente no "bueno para la aplicación". x86 no define el tiempo de instrucción, por lo que actualizar el firmware (microcódigo) para mejorar el tiempo de instrucción no interrumpe la compatibilidad con x86. Hay algunas razones potenciales por las cuales esto es factible y podría ser necesario: 1) el microcódigo inicial es un trabajo rápido y no es óptimo; 2) el microcódigo inicial funciona bien cuando el programa se compila para Ryzen, pero no si el programa se compila para x86 genérico o para el procesador de Intel, que es la mayoría del software existente.
user3528438

15
Una actualización de microcódigo puede mejorar los tiempos de instrucción, pero hay mucho más. Las CPU modernas hacen cosas como la predicción de ramales, la ejecución especulativa, la ejecución fuera de orden y más que pueden mejorar significativamente el rendimiento. Todo esto está controlado por microcódigo. Las optimizaciones de microcódigo llevan tiempo y ese producto suele ser escaso en un negocio competitivo.
LMiller7

44
Imagine que está corriendo y, por alguna razón, se niega a doblar la pierna izquierda. Esto lo hará incómodo y lento: puede aumentar fácilmente su velocidad de carrera al usar de manera más eficiente el "mismo hardware" de su pierna y doblarla de manera más efectiva. Cambiar las instrucciones del "cerebro" a la pierna aumenta dramáticamente el rendimiento.
enderland

Respuestas:


123

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:

  1. 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.

  2. 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.

  3. 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í.

  4. 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.


No estoy seguro de qué respuesta debo aceptar. La respuesta de @ bwDraco está bien, pero la suya se ajusta a la respuesta real, incluso más difícil, su respuesta es proporcionar información específica del problema.
Arthur PR

Bueno, deberías aceptar esta respuesta. Usted provenía de un entorno de electrónica, por lo que parece estar interesado en el firmware de la CPU (no en algunos cambios de Windows). @ ArthurP.R.
AnoE

3
@ ArthurP.R. Si las personas de evaluación comparativa descubrieron que Windows no programa tareas para procesadores multiproceso correctamente (trata los subprocesos como núcleos independientes), significa que AMD de alguna manera arruinó los descriptores del procesador / lo que sea, por lo que Microsoft no puede entenderlos. Si los descriptores pueden ser parcheados a los estándares de Microsoft por algún mecanismo de actualización, entonces esta sería una solución fácil de primer orden. Y has hecho una pregunta general, así que esto la responde. :-)
Ale..chenski

Es por eso que acepté su respuesta incluso si la respuesta de @bwDraco fit también está aquí
Arthur PR

102

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:

Resultado de referencia del hardware de PC Games: Battlefield 1

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):

[...] Es mucho más emocionante reconocer el hecho de que las transferencias de datos CCX interfieren entre sí en cualquier caso, a veces más, a veces con menos claridad. Las ventajas de la memoria caché L3 más grande (configuración 2 + 2) no se encuentran en ninguna parte de esta serie de medidas.

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:

Resultado del benchmark de Tom's Hardware: Ashes of the Singularity

TechSpot realizó un análisis en profundidad del rendimiento de los juegos con SMT habilitado y deshabilitado y obtuvo resultados muy similares:

Resultado de referencia de TechSpot: Deus Ex: Mankind Divided


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.


12
No estoy seguro de estar siguiendo. El OP dice explícitamente que, dado que la optimización del juego para Ryzen está fuera de discusión en esta etapa, y los errores de Windows son incluso una historia más larga, ¿cómo esta respuesta ayuda a comprender cómo las actualizaciones de firmware pueden dar esperanzas de mejorar el rendimiento?
Ale..chenski

11
Básicamente está diciendo que Windows está arruinando totalmente cómo / dónde está asignando subprocesos, causando problemas de rendimiento.
Journeyman Geek

2
@JourneymanGeek, cualquier Windows decente (no estoy seguro si W10 califica) siempre tiene un control explícito de la afinidad central a un proceso, y burlarse con afinidad siempre fue la primera herramienta en la evaluación comparativa. ¿Qué hay de nuevo entonces?
Ale..chenski

44
Desafortunadamente sí, pero las actualizaciones del kernel están en proceso. Probablemente deba esperar al kernel 4.12; 4.11 trae algunas correcciones pero no está del todo allí. phoronix.com/scan.php?page=news_item&px=Ryzen-7-Linux-4.11
bwDraco

77
@Crouchingkitten AMD solo puede entregar controladores, no actualizaciones de sistema operativo. Tales cosas no están en el grupo de tareas de AMDS.
Arthur PR

9

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

1) Los primeros BIOS de la placa base ciertamente tenían problemas: deshabilitar características no relacionadas apagaría los núcleos. Establecer overclocks de memoria en algunas placas base deshabilitaría el impulso. Algunas revisiones de BIOS producirían un rendimiento universalmente suprimido.

2) Ryzen se beneficia al deshabilitar los temporizadores de eventos de alta precisión (HPET). La resolución del temporizador de HPET puede causar un efecto de observador que puede restar rendimiento. Esta es una opción de BIOS o una función que se puede deshabilitar desde el shell de comandos de Windows.

3) Ryzen se beneficia al habilitar el perfil de potencia de alto rendimiento. Esto anula el estacionamiento central. Eventualmente tendremos un controlador que permite a las personas mantenerse equilibradas y deshabilitar el estacionamiento central de todos modos. Los jugadores también han estado haciendo esto por un tiempo. Yo hablo mal aquí. Quiero aclarar el beneficio: el modo de alto rendimiento permite que la CPU actualice su voltaje / velocidad de reloj en 1 ms, frente a los 30 ms que toma el modo equilibrado. Esto es lo que nuestro conductor logrará. Disculpas por la confusión!

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


Lo siento por preguntar sobre el lado equivocado de la pregunta. Pensé que encajaría especialmente porque también estoy interesado en información no trivial.

np, quizás sea lo suficientemente abstracto como para quedarse. Estoy siguiendo a Ryzen ya que estoy planeando una reconstrucción importante, así que estoy siguiendo todos los problemas iniciales. Como usuario de Linux, también estoy siguiendo problemas específicos de Linux. Una cosa a tener en cuenta con el Ryzen (y el núcleo zen) es que esta es la primera SMT de AMD y las indicaciones iniciales son informes de núcleos lógicos diferentes a los de Intel y BIOS / Windows podrían estar intentando utilizar todos los "núcleos" como núcleos físicos cuando la mitad son lógicos núcleos Esto afectaría SIGNIFICATIVAMENTE el rendimiento
Naib

Creo que las respuestas, los comentarios y los pensamientos sobre esta pregunta son muy importantes porque la gente necesita saber si las cosas pueden mejorar aún y hasta ahora vi que ahora puedo esperar nuevamente. Por cierto, el artículo es muy muy bueno!

Para más información sobre Ryzen ... forums.gentoo.org/viewtopic-t-1057910.html Un grupo de nosotros en la publicación del foro de gentoo y discutimos cuándo obtenemos información. En este momento, para Linux, los controladores de audio Mobo están solo en Git, del mismo modo, los monitores térmicos no existen ... El HPET y los problemas centrales son una preocupación inmediata. En este momento, AMD noquea a Intel por pura computación
Naib

1
hasta cierto punto sí. Mantengo mi afirmación de que para el Ryzen está paralizado, por lo que los BIOS / controladores lo "acelerarán"
Naib

6

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.


Esto suena interesante, ¿es posible encontrar referencias para esto? Sería muy agradable tener algunos de ellos para probarlo a la gente :)

@ ArthurP.R. Entre pcode, ucode (microcódigo) y bios, el rendimiento y la funcionalidad de un chip pueden alterarse enormemente. Esos son todos software / firmware. Fuente sabio, no, no puedo darle ninguna fuente externa para esta información (ya que es todo interno).
horta

Qué fastidio @horta, sin embargo, muchas gracias por esta información. Siéntase libre de ajustar su respuesta para incluir esta información también. ¡Merece la pena!

4

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.

¿Corregirme si me equivoco pero el procesador debe tener un firmware estático para ser compatible con el estándar x64?

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.

Si es así, ¿AMD no tendría que optimizar los juegos (software) para sus procesadores, lo que obviamente es imposible?

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.


Esta respuesta también es interesante y ni e. Gracias.
Arthur PR

1

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.


-1

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".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.