¿Cuáles son los factores determinantes por los que los chips Intel pueden alcanzar velocidades de reloj de 4Ghz o superiores, mientras que otros procesadores como ARM no pueden? ¿Se debe a la tecnología punta de las fábricas de Intel o a la arquitectura del x86? Es difícil entender cómo un chip tan complejo como el i7 puede alcanzar velocidades tan altas.
Respuestas
¿Demasiados anuncios?La principal razón por la que los procesadores ARM no alcanzan los 4 GHz es el consumo de energía. La arquitectura, la fabricación, etc. juegan un papel importante, pero la realidad es que una tableta o un teléfono móvil tienen que durar lo máximo posible sin batería, así que todos esos factores se diseñan para que el consumo de energía sea mínimo. Cuando se busca un menor consumo de energía, se sacrifica el rendimiento debido a las opciones de diseño en el nodo, la arquitectura, etc. Una frecuencia más alta acaba con la batería porque:
P = CV 2 f
Donde C es una capacitancia, V es la tensión y f es la frecuencia. Así que varía linealmente con la frecuencia, y es por eso que el escalado de frecuencia es tan frecuente, incluso en los ordenadores portátiles.
No creo que haya una única causa, sino una combinación de varios factores diferentes.
El consumo de energía es sin duda una razón de peso, pero no la única.
Intel persigue agresivamente el último proceso, y eso le compra algo más de rendimiento. Es difícil decir exactamente cuánto, pero una afirmación típica para un nuevo proceso sería un aumento de la velocidad de alrededor del 50% con respecto al anterior.
Otra diferencia es que Intel realiza un diseño totalmente personalizado para aprovechar al máximo su propio proceso.
Arm suministra sus núcleos de diferentes formas y con diferentes condiciones de licencia, pero normalmente como "IP" genérica para que otras empresas la incorporen con su propia IP en procesos ASIC convencionales. Como tal, es más probable que las herramientas de diseño de ASIC lo traten como una "caja negra" y no esté tan optimizado como un diseño personalizado completo.
Esperemos que alguien con experiencia en ASIC corrija esta estimación : pero a partir de mis experimentos con FPGAs, una cuidadosa colocación a mano puede conseguir alrededor de un 30-50% más de rendimiento que las herramientas por sí mismas.
Si juntamos estos dos factores, es posible que la implementación de Intel del mismo diseño sea aproximadamente el doble de rápida que una implementación ASIC genérica.
ARM puede mitigar esto trabajando estrechamente con TSMC u otros fabricantes de ASIC para optimizar su núcleo para procesos ASIC específicos; no puedo decir cuántos de los núcleos ARM disponibles están optimizados de esta manera.
Un factor importante es el "caballo para los cursos".
El i7 es maravilloso en una carrera de aceleración en línea recta, pero no puede tomar curvas en absoluto.
La demanda, el consumo de energía, el coste necesario y la necesidad son todos factores.
Si realmente quisieras un ARM de 4 GHz, alguien te lo vendería relativamente pronto, si quisieras pagar lo suficiente.
El ARM Cortex A8 Freescale MCIMX535DVV2C está especificado a 1,2 GHz. hoja de datos y el MCIMX6Q4AVT10AC ARM Cortex A9 quad core a 1 GHz hoja de datos .
Con CAN, EBI/EMI, ESAI, Ethernet, GPMI, I2C, MMC/SD, PCI, SATA, SPI, UART, USB, USB OTG y periféricos dedicados a DMA, HDMI, I2S/SSI/AC97, MIPI CSI, MIMI DSI, MIPI HIS, PWM, WDT, lo más probable es que le diera a un X86 i7 una carrera inmensamente buena por su dinero en muchas áreas donde el ARM está hecho para ser utilizado.
Añadirlos como complementos externos al i7 sería "molesto" [tm], como mínimo. A 42,50 dólares en cantidades de tubo para el A9 y la mitad que para el A8 probablemente hace que el i7 parece un muy mal negocio para cualquier aplicación que el ARM es apropiado para.
Overclocking:
Todo se puede overclockear.
Algunas cosas funcionan perfectamente cuando se overclockean a una velocidad determinada.
Algunas cosas parecen funcionan perfectamente cuando se overclockean a una velocidad determinada.
Algunas cosas funcionan perfectamente la mayor parte del tiempo cuando se overclockean a una velocidad determinada.
Para valores semialeatorios de "la mayoría" y "aparecer".
YMMV, y probablemente lo hará.
Una cuestión que no se ha tratado en otras respuestas es el hecho de que, aunque los procesadores simples pueden realizar todas las operaciones utilizando una secuencia fija relativamente pequeña de pasos que se ejecutan a un ritmo fijo, un diseño de este tipo requiere que haya suficiente tiempo entre los pasos para acomodar los retrasos de propagación en el peor de los casos. Subdividir las operaciones en pasos más pequeños reducirá la propagación en el peor de los casos para cada paso, lo que permitirá realizar más pasos por segundo, pero aumentará el tiempo total de cada operación. Si una operación no requiere como entrada el resultado de una operación anterior, puede ser posible que la segunda operación se inicie mucho antes de que se complete la primera, pero para un funcionamiento realmente eficiente es necesario ir más allá. Si la operación nº 2 depende del resultado de la nº 1, pero la nº 3 no depende de ninguna de las dos primeras, un funcionamiento óptimo debería iniciar la operación nº 1, "programar" la nº 2, e iniciar la nº 3; una vez completada la operación nº 1, se puede realizar la nº 2.
Básicamente, lo que ocurre es que, aunque subdividir las instrucciones en trozos más pequeños (necesario para lograr velocidades de reloj más altas) no es difícil, hacerlo sin añadir mucha lógica de programación disminuiría tanto la cantidad de trabajo útil por ciclo que se reduciría la cantidad de trabajo por segundo. Cuanta más lógica de programación se añada, más se puede reducir el tiempo de propagación en el peor de los casos sin disminuir la cantidad de trabajo útil realizado por segundo.