Hablemos en profundidad de la microarquitectura del K7 vs pIV, veo que es un tema interesante y siempre ha sido parte de mis charlas.
****Cuando el pIV(Willamette 256kb L2) salio la mercado fue una gran innovacion en lo que era microarquitectura x86 desde el P6.
Pensad que INTEL sabe que el factor CLAVE en la venta de procesadores es algo psicologico, y son los Mhz del intern clock.
Veremos por encima los esfuerzos de los señores de Oregon (Intel) en lo relativo a su pipeline, trace cache, x2 ALU, etc...
Dada la tremenda complejidad de la microestructura de un procesador vamos a dividirlo en 2 grandes grupos: "Front-End" y "Back-End".
Asi por lo tanto cuando las instrucciones son fetched desde la memoria o cache han de ser decodificadas e inyectadas hacia el Motor de Ejecucion. Este fetching, decodificacion e inyectado se produce en el Front-End. Por lo tanto interpretamos el Front-End como un paso intermedio entre la cache y el motor de ejecucion. El motor de ejecucion sabreis que en el residen la FPU,IEU,ALU,etc..
Una vez que abandonan el motor de ejecucion son repetidamente inyectadas en la DRAM.
"Este proceso de Fetching (o agarrado)de la instruccion de la cache, decodificacion de manera que el micro pueda entender y posterior ejecucion e inyeccion (escritura) en la DRAM confirman los 4 pasos basicos de la estructura de una pipeline de 4 pasos".
Cada paso de la pipeline requiere 1 solo clock para ser completada y que la instruccion sea movida hacia otro paso. Asi que cuanto mas rapido sea mejor.
Una vez observados los pasos basicos en el pipeline de 4 pasos y entendidos los metodos de ejecucion de pipeline veamos que:
Esta pipeline NO es mas que un datapath en el interior del procesador y como hemos dicho antes solo experimentan un delay de 1 ciclo de reloj. He aqui una de las GRANDES diferencias del pIV sobre el K7. En pIV ese delay es de 0.5 ciclos per clock. Esto explica el porque de un mayor numero de pasos.
Como sabemos todos, el pIV tiene una pipeline ULTRA-profunda de 20 pasos, esto es lo que INTEL denomina arquitectura NetBurst, cierto que son mas pasos, pero tb han eliminado puertas logicas en sus ciclos de reloj.
Como sabreis estos 20 pasos de su pipeline ultraprofunda, son debidos en su mayoria a la complejidad de las instrucciones x86 y a que tieene que traducirlas a otras mas sencillas y facilmente direccionables, aunque NO lo creais, un gran error del pIV es que aun tiene que convertir esas instrucciones x86 en microOPS.
Como ibamos diciendo y diferenciando la micro-arquitectura en un FRONT-End y un BACK-End, podemos imaginar un flujo de datos constante desde la cache hasta la salida del Back-End y posterior escritura/inyeccion en memoria.
El pIV, tiene unas unidades funcionales con una pipeline MUY profunda, esto quiere decir que cada unidad de ejecucion individual del back end tiene gran cantidad de execution-slots para completar, al igual que os conte en la Teoria del Bandwidth en la GUIA para MAX FPS, es necesario que estos execution-slots este constantemente llenos y eso solo es posible mediante unos buffers MUY profundos que puedan guardar gran cantidad de instrucciones para asegurar un flujo uniforme.
El pIV puede "manejar" 126 instrucciones en varios procesos de ejecucion simultaneos y facilitan una salida hacia la DRAM desde las unidades de ejecucion (Back-End)
Esta pipeline de 20 pasos tiene ciertas ventajas en dtdas aplicaciones 3D y sobre todo en Streaming pero a su vez tiene un grave problema y es que a veces el procesador no obtiene esos datos a la suficiente velocidad de la cache L1(fetching propiamente dixo) y los buffers no son llenados convenientemente y esa pipe tan profunda no es convenientemente alimentada provocando las denominadas burbujas de la pipeline. Ojo!, no creais que no ocurren en la pipeline mas corta del K7, pero los ciclos son evidentemente menores.
Asi que podemos entender el arma de doble filo del pIV, cuanto mas larga es la pipeline, mas problema de burbujas de ejecucion.
Asi que, cuando los diseñadores de pIV aprovecharon su mejor tecnologia para manufacturar micros con una mayor frecuencia de reloj, tenian MUY presente los posibles problemas de una pipeline tan larga en su front-end (Teoria mia).
Asi que tuvieron MUXO cuidado en evitar esas burbujas. Asi que esta es la razon de la gran cantidad de transistores en el front end del pIV para aliviar los efectos negativos de la pipeline ultraprofunda tan arraigada al arquitectura del pIV.
Para solventar este problema de la pipe de 20 pasos veremos la 2ª gran diferencia con el K7, esta es como la denominada Trace Cache.
Pues bien, esta trace cache es la INCLUSION de parte de la CACHE L1 en el FRONT END y es sencillamente una idea genial, permitidme la analogia, al igual que el opteron integra memory controller en su microarquitectura, aqui los de Oregon integran L1 en su FRONT-End, porque?¿----> Para reducir delays. Los mismos que se generan en las burbujas se palian en la trace cache.
El modelo de microarquitectura del K7, las instrucciones x86 son inyectadas desde la instruction cache hasta el decodificado de instrucciones para dividirlas en otras mas sencillas y clasificables denominadas micro-OPS. Estas instrucciones son "divididas" cada vez que una instruccion se ejecuta y añade unas cuantos pasos de pipeline en el ppio de la pipe en concreto.
Asi que para un bloque de codigos que solo se repiten un par o 3 de veces solo hay pocos ciclos de perdida. SIn embargo para un bloque de codigos con cientos de loops, como pasa en aplicaciones multimedia hay una gran cantidad de delays ya que esas instrucciones son constantemente "divididas".
Intel pasa de dividir constantemente esos loops y no tiene porque estar convirtiendolas en micro-OPS cada vez que se ejecutan. Aqui se "ahorran" una gran cantidad de ciclos de reloj (Multimedia Streaming, Aplicaciones 3D,....)
El mecanismo en el pIV es sencillo tb, las instrucciones son fetched de la cache de instrucciones (L2) y son inyectadas, decodificadas y enviadas al motor de ejecucion (2xALU, 1 LSU, FPU con MMX, SSE, SSEII).
Este motor de ejecucion las reorganiza en mini-estructuras denominadas TRACES. Estas son las unidades que ejecuta el 99% del tiempo.
Esta trace cache opera siempre alimentando con traces almacenados al motor de ejecucion. Cuando ocurre un cache-MISS acude a la cache L2 la traduce a micro-OPS y construye otro segmento para poder enviar ya como TRACE al motor de ejecucion.
Otra gran diferencia del pIV con el K7 es que este ultimo reserva gran cantidad de transistores al decodificador de x86 para que este las traduzca a MACROOPS (version del K7 de microOPS) para poder alimentar el motor de ejecucion constantemente.
Para finalizar enumeramos los 20 pasos de la pipeline del pIV.
*Paso 1 y 2: Trace Cache: La trace cache fetchs un puntero de la siguiente instruccion de la misma.
*Paso 3 y 4: Estos 2 pasos fetchs una instruccion de la trace cache y la mueven al motor de ejecucion.
*Paso 5: Este paso sirve para asegurarse de que la señal se transmite correctamente en el chip, necesario debido a las enormes velocidades de reloj que alcanzan sus integrados.
*Paso 6-7-8: Estos pasos manejan la localizacion de los registros en la microarquitectura del micro
*Paso 9: Queuing: De 2 tipos, de Memoria y Aritmetico, entendedlo como puertas de enlace hacia las unidades funcionales del motor de ejecucion (ALU, FPU,etc...)
*Paso 10-11-12: Reorganizacion: Aqui es donde las operaciones para cada unidad funcional del motor de ejecucion son preperadas para ser ejecutadas.
Este paso es el MAS COMPLEJO de todos y por tanto consume gran cantidad de ciclos. Prepara operaciones a la 2xALU del pIV, a operaciones de memoria del LSU, etc..
*Paso 13-14: Pasos intermedios hasta el paso de Registro pre-ejecucion
*Paso 15-16: Registro, instrucciones son cargadas para la inminente ejecucion.
*Paso 17: Ejecucion: Al fin!!!, son ejecutadas las instrucciones por sus unidades funcionales correspondientes. Si la instruccion es un ADD, pues es una adicion de numeros, si es un MUL, una multiplicacion de numeros....
***Microarquitectura del K7: EN ppio gracias al cielo que aparecio el K7, en concreto el Tbird con su full speed L1 cache. Anda que no las he montado IO gordas con los Tbird 1000 mhz y mis peltier...
IO personalmente estaba harto de el dominio completo de INTEL en el Mercado, esto era un hecho objetivo claramente. Pero AMD resurgio...
Pues bien el K7 no ofrece una gran evolucion estructural, es tan solo que el lleva "MAS" de todo
*MAS FPUŽs, y MAS independientes, MAS pasos de pipeline y MAS rendimiento.
Ya sabemos las dif entre Front-END y Back-END, en el Back estan las unidades operacionales, en concreto el K7 integra 3 IEUŽs y 3 FPUŽs [Es decir mas que el pIV, es 1 de los porqués de mi afirmacion de que corren mas]. El K7 posee una FPU full pipelined y es capaz de procesar 3 operaciones de Punto Flotante por ciclo de reloj.
FPU del K7 tiene 3 unidades:
FMul:MUL,DIV,MMX Integer,3DNow MUL
FAdd:ADD,SUBS 3DNow ADD
FStore:Store FP y numeros MMX
Por tanto la FPU del K7 es sencillamente asombrosa!!!
Como sabeis, las operaciones de coma flotante son complejas y requieren varios pasos para completarse. Empezamos con 2 numeros, realizamos una serie de operaciones con ellos y obtenemos un resultado. Esto es una adicion de coma flotante, Pues bien, es bastante mas complejo las multiplicaciones de coma flotante ya que estas ultimas requieren un algoritmo y por lo tanto una circuiteria adecuada. Pues bien, el K7 es capaz de operar con una suma, multiplicacion y un comando de LOAD al mismo tiempo.
Pues bien, como todos sabreis el K7 tiene una pipeline de 15 pasos, y es MUY profunda por lo tanto, solo 5 menos que el pIV. Para esto tiene un organizador de 36 entradas hacia la FPU que alimenta de registros al Registro de 88 entradas previo a la FPU con sus 3 unidades. Daos cuenta que la estrategia del K7 es esto, una siemple pipeline supercargada de transistores hacia la triple FPU.
INstrucciones de Decodificacion:
Como antes hemos comentado, las instrucciones x86 que salen de la cache hacia el Back END no son digeribles por el motor de ejecucion, son grandes y pesadas instrucciones CISC y el K7 al igual q el pIV es una CPU RISC. ASi que el motor de ejecucion al igual que nosotros preferimos la carne en pequeños pedazos y no en filetes de 20 Kg, deben ser transferidas en otras mas pequeñas llamadas OPS.
Cuando una instruccion x86 entra en el Front-End, se decodifica en macroOP. Estas son las digeridas posteriormente en la FPU convertidas en OPS
Una vez que las MacroOPS dejan el decodificador , se inyectan al ICU, que es la parte mas importante del xip. Este puede manejar 72 MacroOPS a traves de los diferentes procesos de la ejecucion
Vemos claramente que la FPU es asombrosa y ahi es donde le gana la partida a los pIV.
Quiero felicitaros porque en este momento NO hay un foro en España donde se discutan cuestiones tan tecnicas
Hay q ver como han subido el nivel de estos foros
H