top of page

 10 de Mayo 2018

 

Porque puede funcionar un programa en una computadora y en otra no funciona si ambas son de la misma marca, mismo modelo, mismo procesador, en fin son computadoras idénticas.

 

 Este problema se me presento cuando una cadena de tiendas de autoservicio compró más de 2000 computadoras, las cuales ya no corrían su programa de cobro, se me pidió una opinión y después de varios días de realizar pruebas en diferentes versiones de procesadores y esta fue la conclusión final.

Los procesadores anteriores que utilizaban al cobrar eran de AMD y corrían sin ningún problema la aplicación, por costo se volvió a recurrir a la compra de equipos AMD, pero esta vez con procesadores más nuevos, con lo cual vino la catástrofe, la aplicación simplemente generaba una pantalla azul, esto porque se solicitaba al procesador una acción que ya no tenía programada en su microcódigo generando una NMI (Interrupción No Mascarable). Enseguida explico las causas por las que algunos programas dejan de funcionar al cambiar la computadora y con todo igual y seguir usando el mismo sistema operativo, mismo procesador, misma tarjeta de video, en fin computadoras idénticas, pero diferente revisión de microcódigo en el procesador.

 

 Cuando se desarrolla un procesador, se desarrolla en base a los lenguajes de programación que existen en ese momento. Conforme pasa el tiempo los diseñadores de procesadores optan por incluir nuevas funcionalidades en los procesadores, esto lo hacen incluyendo un código con un mayor número de instrucciones o quitando o complementando código que ya no se usa dentro del procesador. Este código interno se desarrolla para cada tipo de procesador que implementa el soporte para el conjunto de instrucciones. En procesadores de PC las instrucciones que se manejan son en base a x86, este código se llama microcódigo. El microcódigo se puede actualizar para corregir o mitigar los errores de la CPU. No se puede actualizar directamente, sino que muchas veces se hace en base a la actualización de BIOS o actualizándolo únicamente en base al sistema operativo. Pondré cuatro ejemplos en los que el microcódigo genero los errores en los programas y la única solución es o actualizar el microcódigo, si es que está disponible o definitivamente cambiar el procesador o el equipo.

 

EJEMPLO 1

A continuación pongo un ejemplo copiado y Documentado por Firefox

Actualización del microcódigo del procesador

Algunos errores de la CPU pueden hacer que Firefox se congele. Por ejemplo, se sabe que Firefox 57 y las versiones posteriores fallan ocasionalmente en las CPU Broadwell-U (procesador i7) con un microcódigo antiguo, algo que no ocurre con las versiones más recientes de microcódigo Broadwell-U.

Las actualizaciones de microcódigo se pueden cargar en la CPU mediante firmware (generalmente llamado BIOS, incluso en equipos que, técnicamente, tienen firmware UEFI y no el BIOS antiguo) o mediante el sistema operativo. Las actualizaciones de microcódigo no continúan durante el reinicio, por lo que en el caso de un sistema de arranque dual, si la actualización del microcódigo no se hace a través del BIOS, hay que actualizarlo en ambos sistemas operativos.

Para permitir que Windows cargue el microcódigo actualizado en la CPU, asegúrate de que Windows Update está habilitado y configurado para instalar actualizaciones.

COMENTARIO. Es claro que en los párrafos anteriores de este ejemplo el parche que se aplica es a nivel de sistema operativo y esto sirve para complementar los vectores de interrupción al iniciar el sistema operativo.

Para ver la microarquitectura del procesador y qué revisión de microcódigo está en uso, ejecuta el comando regedit HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0 en el Símbolo del sistema de Windows. (Puedes abrir la ventana de comando si seleccionas Windows + R, escribes cmd y presionas Return). La línea etiquetada como "VendorIdentifier" muestra el proveedor de la CPU (GenuineIntel para Intel o AuthenticAMD para AMD). La línea etiquetada como "Identificador" le da a la microarquitectura tres números: "Familia", "Modelo" y "Paso".

Estos números son importantes para identificar si un fallo específico de la CPU puede ser relevante para la CPU de tu equipo. La línea etiquetada "Actualizar revisión" muestra la revisión actual de microcódigo (para la microarquitectura particular) con ceros en ambos lados. Por ejemplo, Update Revision REG_BINARY 000000001E000000 significa que la revisión es 1E (hexadecimal). La línea etiquetada "Revisión de actualización anterior" muestra la revisión de microcódigo cargada desde el BIOS.

Si el proveedor es Genuine Intel, la familia es 6, el modelo es 61 y el paso es 4, para evitar bloqueos con Firefox 57 o posterior, la revisión del microcódigo debe ser 1A o superior.

 

EJEMPLO 2. Copiado de las páginas de Soporte Técnico de entusiastas Linux.

Ejemplo de una actualización de microcódigo para Linux Debian

Actualmente Intel y AMD ofrecen actualizaciones a sus microcódigo con la finalidad de corregir errores o mejorar el comportamiento de sus productos, ya que no es posible escribir directamente el firmware del CPU la actualización del microcódigo debe aplicarse en cada inicio del sistema, su instalación en Debian y derivados es bastante sencilla.

En el caso de Debian primero debe comprobar que su repositorio principal en el archivo /etc/apt/sources.list contenga el parámetro “non-free” y luego realizar el proceso que se describe a continuación, para los derivados solo debe ejecutar los siguientes comandos (como root).

  • Para CPU Intel.

# apt update

# apt install intel-microcode

  • Para CPU AMD.

# apt update

# apt install amd64-microcode

En el caso de openSUSE los paquetes se llaman ucode-intel y ucode-amd respectivamente, y, en el caso de CentOS el nombre del paquete es microcode_ctl.x86_64.

Después de instalar y reiniciar podemos comprobar que el microcode se aplicó correctamente ejecutando el siguiente comando (como root).

# dmesg | grep microcode

En el caso de que al ejecutar el comando el resultado no sea similar a este puede deberse a que su equipo no es compatible con el microcódigo o que no lo necesita.

 

 

EJEMPLO 3.

Otro ejemplo documentado por Intel

Tras la actualización del procesador Intel® se recibió un Error de actualización de microcódigo

Última revisión: 22-Aug-2017

ID del artículo: 000006993

Procesadores de Intel® permiten actualizaciones de software menores dentro del BIOS de la motherboard específicos al procesador de versión. El procesador de versión es similar a la versión del hardware. A medida que se realizan modificaciones menores en el diseño del procesador, como correcciones de erratas, se aumenta el número de versión.

Si el BIOS no identifica correctamente la versión del procesador, podría presentarse uno de los siguientes errores de actualización de microcódigo:

  • Error: Actualización requerida del microcódigo

  • Error: Microcódigo no se encontró en el BIOS del sistema para la CPU instalada

  • Error: Datos de actualización del BIOS incorrectos

Para resolver un error de actualización de microcódigo, póngase en contacto con el fabricante del sistema o motherboard para los archivos y las instrucciones de actualización de BIOS.

Antes de instalar la revisión del BIOS, verifique la opción de Permitir la actualización del BIOS esté activada en el BIOS (si corresponde).

Si el fabricante del sistema o la motherboard no proporcionan archivos de actualización del BIOS, no puede validar para su uso con el procesador instalado. En este caso, el procesador es incompatible con la motherboard.

 

EJEMPLO 4. Obtenido de la página del fabricante de Warcraft.

Aquí te muestro otro ejemplo con el juego Warcraft

Error #132 Con Procesadores AMD

SOPORTE TÉCNICO DE warcraft


abr 18, 2013

Actualmente estamos investigando un asunto que está causando que jugadores reciban un error #132 al intentar de jugar el juego. Este asunto está afectando principalmente a jugadores con procesadores AMD C-60 (HD 6290 grafico integrado) y AMD E-350 (HD 6310 grafico integrado), pero puede haber otros.

Mientras que los errores #132 tienen diferentes causas, este error en particular puede ser identificado usando la información en el error.

El error dirá ‘Exception: 0x80000003 (BREAKPOINT)’ y los gráficos posiblemente también sean AMD.

 

Lamentablemente en este momento no hay una solución definitiva, pero recomendamos intentar de probar el juego con controladores antiguos (Como el 12.8: 32-bit/64-bit). 

Si estas recibiendo este error, por favor pega una copia del error más reciente y una copia del reporte Dxdiag de tu sistema.

Proporcionare información adicional cuando la tengamos.

 

Este es un ejemplo claro de una incompatibilidad del código en el cual se programo la aplicación en base a los procesadores de ese momento y el microcódigo de los procesadores, el cual al ser lanzado un nuevo procesador complementado o recortado genera este tipo de fallas.

Este error es sencillo de detectar si checamos la versión del procesador como se indico anteriormente en el registro y encontramos versiones diferentes de procesadores  

Procesadores iguales pero con diferente microcódigo. Aparentemente iguales, pero con versiones diferentes.

bottom of page