Aquí tenemos otro de los cambios interesantes que Intel implementa en esta nueva arquitectura, se trata de la adición de unidades de decodificación de operaciones SSE que permiten procesar bloques completos de a 2 pares, lo que implica 64bit + 64bit, anteriormente, el máximo disponible en todo momento para ejecutar instrucciones SSE era de 64bits.
Intel descubrió que en muchos programas de Encoding de Media, sobre todo Video Encoding, el CODEC encargado del encoding manda numerosas cantidades de instrucciones en grupos de 4, esto se debe a que principalmente un Encoder de Video, tal como el DivX o H264 basa sus algoritmos de compresibilidad en el analisis de la imagen por "bloques" de 4 coordenadas, estos bloques que generalmente son de 8x8, como tambien de 4x4 y 16x16 dependiendo de la compleijdad del Codec y del nivel de presición con el que esté encodeando, son recibidos por el procesador como conjuntos de operaciónes y datos en grupos de 4, este tipo de agrupación es tan común que Intel decidió implementar una unidad exclusiva para operaciones SSE (que afectan también SSE2, SSE3) y que permiten en un solo ciclo de reloj procesar 128bits (lo que equivale a este grupo de 4 datos, 32+32+32+32).
Anteriormente se debía sacrificar un ciclo de reloj para poder correr estos grupos de 4 y así utilizar 2 ciclos de reloj por cada grupo.
Ahora, tengan en cuenta, que el Core 2 Duo no dispone de 1 procesador, sinó 2, lo que implica que en el caso de un Codec de compresión de video, el Core 2 Duo "Conroe" es capaz de ejecutar (con Multithreading presente) hasta 128 bits por procesador o lo que es lo mismo que 256bits de instrucciones SSE o lo que también es lo mismo que decir hasta 8 instrucciones SSE en un solo ciclo de reloj !.
Lo que Intel denomina como Smart Memory Access es conocido mejor entre sus Ingenieros como "Hardware-Based Memory Disambiguator"
Lo que ocurre aquí es lo siguiente, recuerden que estamos lidiando con un procesador que ejecuta instrucciones fuera de orden "Out of Order Execution", este tipo de ejecución le permite decidir con libertad que tipo de instrucciones son ejecutadas y con que orden. Sin embargo, existen ciertas condiciones que deben cumplirse. El ejemplo que usa Intel es muy claro y divertido a la vez, supongamos que nos levantamos a la mañana y nos queremos poner las medias, que medias les parece que podría uno ponerse primero, la del pié izquierdo o el pie derecho? que diferencia hay !, por supuesto que ninguna, siempre y cuando no exista una condición mayor que invalide nuestra libertad de elección, como lo es... "que pasa si quiero ponerme los zapatos", esto implica, que existen ciertas reglas, no puedo ponerme la media izquierda y el zapato derecho si no cumpli primero con la condición de finalizar con las medias primero, mientras mi condición no se vea afectada por una condición siguiente en la cual me vea obligado a finalizar la primera, el orden no necesariamente tiene que ser respetado.
El ejemplo de las medias y los zapatos se aplican entonces a lo que en idioma de procesadores se conoce como "Load" y "Store"
El ejemplo de Load y Store es un ejemplo en donde una regla debe respetarse bajo la condición de que un evento debe cumplirse previamente al siguiente, por ejemplo, para que una carga se produzca, se deben haber almacenado "store" previamente todos los valores, para evitar "conflictos" de datos, porque puede darse el caso de que se desee cargar un dato que se almacenó previamente, así es que no se puede permitir "saltear" el store, esto presentó un problema para los Ingenieros de Intel, porque se da en muchos casos que en efecto, sería muy efectivo dejar que un Load salteara un Store, para evitar cuellos de botella en el procesamiento, pero sencillamente no sería posible, porque no habría manera de saber en que dirección se realizará el "store" hasta el momento que se ejecute, por consiguiente este es un problema que se mantuvo a lo largo de todo el desarrollo de la arquitectura x86 hasta ahora, ya que Intel desarrolló un mecanismo para "predecir antes de tiempo" si efectivamente un Load conflictuará con "store" y así poder permitir que este lo saltee, esto les permitió poder mejorar el tiempo de ejecución y exceptuando algunos casos donde a pesar de que la predicción no indique problema, en efecto se produzca una colisión, el mecanismo permite "recrear" el escenario para volver a ejecutar el Store y Load para evitar que esa colisión se produzca. Como estos casos de colisión son mucho menores a los casos en donde la predicción es correcta y tiene éxito, el procesador gana eficiencia al saltear stores que permiten liberar el flujo de instrucciones que de otra manera crearían paradas de espera en la ejecución.
Nuevamente, como se evitan una gran cantidad de "store" que de otra forma serían forzados, se reduce la cantidad de acciones y por consiguiente bits en movimiento que reducen el consumo de energía.
Debido a que el consumo de energía es el punto mas importante para Intel en esta nueva arquitectura, se tomaron pasos intensivos para llegar al nivel incluso mas pequeño en lo que respecta a control de la energía que se administra a cada parte del procesador.
Como dicen los Ingenieros de Intel, el acercamiento que emplearon es el mismo que el de la Ley hacia las personas, "Ninguna parte del procesador es digna de ser utilizada hasta que demuestre lo contrario", y así es, la arquitectura Core utiliza un nivel muy refinado de desactivación a nivel "gating" que le permite desactivar prácticamente enormes cantidades del procesador cuando no se usan y deberán realmente demostrar una necesidad de utilización para re-activarse, esto salva una enorme cantidad de energía que no se utilizará bajando el consumo y la generación de calor.
Existen varios modos de Sleep incluso hasta el modo que intel denomina "Deep Sleep", lo interesante de esta tecnología es la parte de "Intelligent", como su nombre lo indica, existen momentos donde en general, el procesador no se encuentra haciendo demasiadas cosas, imaginen un escenario, donde un procesador Dual Core, se encuentran en la pantalla inicial de Windows con tan solo un programa de Mensajeria y un navegador abierto, en este tipo de casos e incluso cuando nos encontramos jugando con algun juego que no utiliza Multithreading, es común que uno de los Cores (e incluso gran parte de tiempo del otro) no se utilicen, en este caso, la tecnología de ahorro de energía es capaz de desactivar enormes porciones de sistemas del procesador en desuso, incluso al nivel de dejarlo casi en standby, lo interesante es que no solo se realiza mediante Speed-steep (reducción del multiplicador) sinó que se realiza a nivel muy interno (como vemos en el gráfico) a nivel transistores, lo cual le permite tener un control casi absoluto de que es lo que hace cada parte de la arquitectura y que partes pueden desactivarse, esta tecnología se encuentra "fínamente" perfeccionada desde el Pentium-M, recuerden que su antecesor fué un procesador para computadoras portatiles donde el ahorro de energía es absolutamente importante.
Páginas: « Anterior | 1 2 3 4 5 6 7 | Siguiente »