2009-05-23 13 views
5

Primera pregunta Desde el punto de vista de un programador C, ¿cuáles son las diferencias entre los procesadores Intel Core y sus equivalentes AMD ?Intel Core para un programador C

Segunda pregunta relacionada creo que hay algunas instrucciones que diferencian entre los procesadores Intel Core de los otros procesadores y vis-versa. ¿Qué tan importantes son esas instrucciones? ¿Están siendo tenidos en cuenta por los compiladores? ¿Funcionarían mejor si hubiera algún compilador especial de Intel solo para la familia Core?

+1

¿Podría explicar su segunda pregunta, tal vez? :) – Skurmedel

+0

Sí, ¿a qué instrucciones se refiere específicamente? – none

Respuesta

4
  1. Si está programando código de nivel de usuario y la mayoría del código controlador, no hay muchas diferencias (una excepción es la disponibilidad de ciertos conjuntos de instrucciones - que pueden diferir para diferentes procesadores, véase más adelante). Si está escribiendo un código kernel que trata con funciones específicas de la CPU (creación de perfiles usando contadores internos, administración de memoria, administración de energía, virtualización), las arquitecturas difieren en la implementación, a veces en gran medida.

  2. La mayoría de los compiladores no aprovechan automáticamente las instrucciones de SSE. Sin embargo, la mayoría proporciona intrínsecas basadas en SSE, lo que le permitirá escribir código SSE. El subconjunto de todos los niveles de SSE disponibles difiere según la arquitectura y el fabricante de cada procesador.

Consulte el listado de instrucciones de this page. Siga los enlaces para ver en qué arquitecturas se admiten las instrucciones específicas. Además, lea los manuales de desarrollo de arquitectura Intel y AMD para obtener detalles exactos sobre el soporte y la implementación de cualquiera y todos los conjuntos de instrucciones.

4

Primera pregunta Desde el punto de vista de un programador C, ¿cuáles son las diferencias entre procesadores Intel Core y sus equivalentes de AMD?

Las diferencias más significativas probablemente solo aparezcan en códigos altamente especializados que utilizan las instrucciones de nueva generación, tales como vector maths, parallelization, SSE.

¿Funcionarían mejor si hubiera algún compilador especial de Intel solo para la familia Core?

No estoy seguro si es consciente de ello, pero hay un compilador específicamente para núcleos Intel: icc. En general, se considera que es el mejor compilador desde el punto de vista de la optimización.

Es posible que desee comprobar su wikipedia article.

+0

Supongo que son compiladores normales. No especialmente hecho para la familia Core si lo hice bien. – tarek

+0

¿Estás adivinando? Es posible que desee proporcionar algunos detalles adicionales sobre a qué se refiere exactamente. Eso nos ayudaría a dejar de adivinar :-) – none

+0

Ese compilador no es específicamente para Core (http://en.wikipedia.org/wiki/Intel_Core). Tiene una generación de código específica para Pentium 3, Pentium 4 y Core 2 (que no debe confundirse con Core). Ver http://www.intel.com/software/products/compilers/docs/clin/main_cls/copts/common_options/option_march.htm –

1

De acuerdo con el artículo Intel Core Wikipedia, hubo notables mejoras en SSE, SSE2, y SSE3 instrucciones. Estas instrucciones son SIMD (mismas instrucciones, datos múltiples), lo que significa que están diseñadas para aplicar una única operación aritmética a un vector de valores. Sin duda son importantes y han sido utilizados por compiladores como GCC para quite awhile.

Por supuesto, los procesadores AMD recientes han adoptado las instrucciones más recientes de Intel, y viceversa. Esta es una tendencia continua.

Cuestiones relacionadas