BandaAncha.eu

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate
Sobremesa

Que es el pipeline?

Este tema está cerrado a nuevas respuestas. Abre un nuevo tema para retomar la conversación.
BocaDePez
BocaDePez

no es del procesador, es del chipset de la placa base, y es una memoria intermedia de muy rapido acceso que se usa para cachear instrucciones de bajo nivel (vease assembler) del procesador 8-)

BocaDePez
BocaDePez

A groso modo:

Es una característica de los procesadores superescalares, y parte de la idea de la segmentación de instrucciones.

Un procesador superescalar (Pentium, PowePc.....) tiene varios pipelines.
Partiendo de la segmentación de instrucciones, por ejemplo. esta instruccion la dividimos en 5 etapas:
ADD R1,#4 (suma 4 al registo R1 y guardalo en R1)

-Decodificación instrucción
-Busqueda instrucción
-Busqueda operandos
-Ejecución operación.
-Guardar resultado.

En este caso hipotético el pipeline tiene las 5 etapas anteriores.

¿Que se gana con un solo pipeline?
Sería usar la segmentación, o sea quando una instrucción acaba la etapa de decodificación de instrucción seguidamente puede entrar la siguiente instrucción al pipleline para que sea decodificada y así paulatinamente.
Si sólo tuvieramos una etapa en el pipeline, hasta que no hubiera acabado de hacerlo todo no podria entrar ninguna instrucción. Así conseguimos ejecutar mas instrucciones secuencialmente pero en menos tiempo, ya que las diferentes etapas del pipleline se mantienen ocupadas.

Y como comentaba los procesadores superescalares tienen diferentes pipelines, esto hace que puedan ejecturarse todas las etapas anteriormente comentadas simultaneamente.
Por ejemplo si tenemos 4 pipelines, tendremos 4 etapas de busqueda de instrucciones, 4 etapas de busqueda de instrucción, 4 de busqueda de operandos, 4 de ejecución y 4 de guardar resultado.

Eso si, hay que tener en cuenta las dependencias entre instrucciones para ejecturar simultaneamente.

Bufff mega resumido pero ya tienes una pista.

Redpixel

Lofter

En condiciones normales el procesador (hablo d los 8086) ejecutaba las instrucciones a medida q las sacaba d la memoria del sistema, pero mientras leia la instrucion la unidad aritmetico-logica se rascaba la barriga, obligando a meter ciclos d espera ya q no tenia instrucciones q procesar, las estaba leyendo.

El pipeline es una tecnica con la q añadiendo un buffer junto al procesador mientras ejecuta una instruccion, carga la siguiente y asi sucesivamente, d ahi lo d pipeline (q viene a significar mas o menos "tuberia" o "por un tubo" xD)

El mayor avance del pentium 2 fue disponer d 2 pipelines independientes (podriamos llamarlos "canales d instrucciones") d manera q si con uno ganas n fluidez al disponer d dos, solapaba las instrucciones d tal forma q parecia q ejecutaba dos instrucciones a la vez, evidentemente la alu solo procesa una instruccion d cada vez, pero asi reducian aun mas los ciclos d espera y se aprovechan mejor los micros.

BocaDePez
BocaDePez

Esa barrita vertical partida que se utiliza como separador u ordenador lógico en Unix, Linux etc...

🗨️ 6
Stendall1

:) Te refieres a esto | no? :P

jcomas

Hola,

Yo siempre lo he llamado pipe y no pipeline.

Saludos,
Josep

🗨️ 1
Stendall1

no me lo tengais muy encuenta, hoy estoy algo pachucho.

DrMuehehe

Aunque su traducción al castellano es la misma, los textos hablan de PIPE, a secas.

(ui!, acabo de generalizar, a ver si Lofter me va a ver...) :-P

🗨️ 2
Lofter

xDDD

Pa una vez q toi d acuerdo contigo no lo estropees :)

🗨️ 1
DrMuehehe

Aún me iré a dormir contento. Pero espera, que aún no lo he hecho y todavía la puedo cagar. Paciencia.

Stendall1

Jejejejeje, vamos por partes, en cuanto al iluminati del chipset, voy a tener que quitarle la razon de una forma detallada, clara y concisa, como diria Moriarti:
Ja Je Ji Jo Ju.
Bien habiendo dejado claro este punto, vamos a lo siguiente, inexactitudes varias, el pentium 2 no tiene 2 pipelines, de hecho el primer procesador que tuvo 2 pipelines fue el 486, y el primer pentium ya tuvo 4;
La alu, la tenia el spectrum(que tiempos aquellos), y en aquel tiempo la llamabamos por sus siglas en ingles ula, de la revista microhobby, de los chistes de los usuarios que venian al final:
¿No es verdad angel de amor, que en esta apartada orilla, mas clara la ula brilla y se procesa mejor? :) (creo que era eso)
A lo que vamos, la alu en los Spectrum, era un intregrado que entre otras cosas se encargaba de generar la señal de video para la television leyendo el contenido de la memoria de video.
A ver, en cuanto a avances en arquitecturas derivadas de x86:
El del 286 fueron sus 20 bytes para el direccionamiento de memoria, aqui aparecio por primera vez la memoria expandida y se sobrepaso el limite de los 640 kb de memoria.
El 386 fue el primer procesador de 32 bits de que pudimos disfrutar en los PCs, y ademas con este avance se llego a poder direccionar 4 gb de memoria.
El 486 fue el primero en implementar tecnologia pipeline, con sus dos pipelines.
El 486 DX consiguio otro gran avance al integrar dentro de la circuiteria de la cpu el coprocesador, que desde el 286 iba en un zocalo aparte.
El Pentium fue un salto cualitativo y cuantitativo, al integrar 4 pipelines, ademas de otras tecnicas como prediccion de saltos.
El Pentium MMX fue otro salto al incluir instrucciones especificas para rutinas de tratamiento de sonido, y video entre otros.
El Pentium Pro fue el primero en incluir la cache que antiguamente iba en placa, dentro del mismo layer del procesador, en las siguientes versiones de procesadores se ha conseguido entre otras cosas hacer que la cache vaya a la misma frecuencia de reloj del procesador etc...
Y asi seguiriamos con las SSE , SSE2, etc, siempre hablando de Intel, en el caso de AMD estarian las 3DNOW y las 3DNOW2, los pipelines para coprocesador etc..

Ahora en cuanto al pipeline,el chaval que lo ha explicado antes va bien pero con unos cuantos matices:

Las etapas de una pipeline realmente son
FETCH, lee los opcodes de la instruccion y los datos inmediatos.
DECODE, decodifica el opcode, carga los datos inmediatos dentro de registros internos del procesador.
CALCULATE ADDRESS OF OPERANDS, calcula las direciones de los operandos para acceder y seleccionar los registros de operandos a utilizar (Algunas veces llamado DECODE 2).
EXECUTE, Ejecuta las instrucciones (cargando los operandos de la memoria si es necesario) y escribe los resultados en los registros internos.
WRITEBACK Escribe los resultados de memoria-operando de vuelta en la memoria.

OPTIMIZE.TXT Michael Kunstelj.

🗨️ 6
Lofter

Ains, el primer micro q tenia pipeline n la familia x86 (no habia mencionado quien fue el 1º pero ahora q lo dices) decir q el 486 tenia... se le llamó asi pero no era como lo conocemos hoy dia, aun asi no era d lo q se hablaba. El pentium II tenia 2 pipelines... INDEPENDIENTES al igual q el pentium III pero al no disponer d segmentacion d instrucciones los puristas dicen q tenia 1/2 pipeline, d todas las tablas q tengo por ahi esta es la mas clara: www.io.com/~kazushi/PC/X86-cmp.html confundes las entradas d precarga (prefetch) con el pipeline, sin buffer no hay pipeline, es pipe a secas y gracias.

Pero lo mejor d todo ha sido leer "El del 286 fueron sus 20 bytes para el direccionamiento de memoria, aqui aparecio por primera vez la memoria expandida y se sobrepaso el limite de los 640 kb de memoria." todavia estoy llorando d la risa, es decir q direcciona 2 ^(20 *8) bits (o eran posiciones d memoria... jode q oxidado tengo el ensamblador...) el q quiera q lo calcule (bajo riesgo d colapsar la calculadora) pero vamos, como pista, pa q coño quiere el 386 y posteriores direccionar 4 GB si el 286 movia teras y teras xDDDDDDDDDDD

El 286 usaba direcciones d memoria d 20 BITS... esto es lo q pasa cuando uno se enrrolla hablando d cosas q no vienen a cuento...

P.D. Mecachis n los smilies

🗨️ 5
Stendall1

Por supuesto, he metido la gamba con lo de los 20 bytes, queria decir bits, como seguro que sabias antes de liarte a calcular el direccionamiento de 20 bytes.
En cuanto a lo de la pipeline, creo que me he equivocado y el primero en tener mas de 1 pipeline fue el 586, hace un monton que lei del tema y se me habran olvidado algunas cosas, lo siento, en todo caso parece que no hay mucho consenso sobre el tema, he estado buscando y en varios sitios he visto que ponen cosas totalmente distintas, por ejemplo:
(link roto)
(link roto)
(link roto)
y en la url que tu has dado pone que ya el P MMX tenia 2 pipelines, y no veo que ponga si las del P II son o no independientes, como no sea lo del superpipelined.

🗨️ 4
Lofter

Lo d superpipelined se refiere a eso entre otras cosas, d q los pipelines del pII son independientes m acuerdo porq cuando salio el micro dieron la brasa a gusto repitiendolo. En la practica supongo q será mas complejo todavia, pero el q consiga entender la arquitectura d los micros actuales sin tirarse d los pelos le podemos dar un premio.

Respecto al consenso tienes razon, no lo hubo ni lo habrá, supongo q se debe a q a medida q evolucionaba la tecnica fueron cambiando el concepto asi q mejor saber a grandes rasgos cual es el concepto q entenderlo y terminar n el psiquiatrico, no crees?

Y eso q no hemos hablado d los pipelines d los micros graficos, ahi si q nos puede dar un soponcio a todos, arquitecturas d 256 bits (y los d intel y amd partiendose los cuernos con los micros d 64... xD) unidades d proceso paralelo...

🗨️ 1
BocaDePez
BocaDePez

Com he contado antes, un pipeline surge de las técnicas de segmentación de una instrucción.
El buffer que se comenta por aquí, en mi opinión no tiene nada que ver con el pipeline en si, pero si en su rendimiento (politicas de memoria cache de busqueda y almacenamiento de datos).

Respecto a las etapas de segmentación de un pipeline, no son 5 exactas, esto depende de la arquitectura de un procesador. Por ejemplo estoy seguro que un procesador de IBM no tendra las mismas etapas que uno de intel o un Risc de powerpc. Incluso me atrevería a decir que la segmentación de un pipeline varia entre el Pentium I al Pentium 4.

Tambien hay que decir que en la etapa de ejecución pude haber una bifurcación en el propio pipeline para datos enteros o de coma flotante, y ejecutarse paralelamente los dos en el mismo pipe.

La definición clave de un procesador superescalar (multiples pipelines con supersegmentacion en ellas) es:

Mejorar el rendimiento de velocidad de ejecución aprovechando el paralelismo a nivel de instrucción.
(Sacado del tal Stallings. Ed. McGrawill).

Inconvenientes de un superescalar:
-Dependencia de datos (RAW)
-Outputdependency (WAW)
-Antidependency (WAR)
-Conflicto por obtener recursos.
-Dependencias relativas al procedimiento (bifurcaciones).

Tecnicas para evitar las dependencias y mejorar el rendimeinto:
-Caminos de realimentación en el propio pipleline.
-Renombrado de registros dinamicos.
-Predicción de saltos.
-Reordenación de codigo.
-Ejecución fuera de orden

y hay mas y en cada procesador se mejan y se añanden de nuevas.

Coño que he hecho el examen de Arquitectura de computadores hace un mes y aun me acuerdo.... jejej

Redpixel

🗨️ 1
BocaDePez
BocaDePez

q me deje llevar por la sobriedad y el alzheimer y referiome yo al L2 CACHE tambien llamado PIPELINE, listos q soys unos listos............ ale q apruebe el xavalote este el trabajo

:-P :-P :-P 8-)