Diferencia entre revisiones de «Unidad central de procesamiento»

Contenido eliminado Contenido añadido
Isha (discusión · contribs.)
m Revertidos los cambios de 200.31.33.70 a la última edición de MelancholieBot
Línea 143:
''Artículos principales: [[Procesador vectorial]] y [[SIMD]]''
 
Un menos común pero cada vez más importante paradigma de CPU (y de hecho, de computación en general) trata con '''vectores'''. Los procesadores de los que se ha hablado anteriormente son todos referidos como cierto tipo de dispositivo '''escalar'''.<ref>Earlier the term '''scalar''' was used to compare most the IPC (instructions per cycle) count afforded by various ILP methods. Here the term is used in the strictly mathematical sense to contrast with vectors. See [[scalar (mathematics)]] and [[vector (spatial)]].</ref> Como implica su nombre, los procesadores vectoriales se ocupan de múltiples piezas de datos en el contexto de una instrucción, esto contrasta con los procesadores escalares, que tratan una pieza de dato por cada instrucción. Estos dos esquemas de ocuparse de los datos son generalmente referidos respectivamente como [[SISD]] (Single Instruction, Single Data|) (Simple Instrucción, Simple Dato) y [[SIMD]] (Single Instruction, Multiple Data) (Simple Instrucción, Múltiples Datos). La gran utilidad en crear CPUs que se ocupen de vectores de datos radica en chupalaska la optimización de tareas que tienden a requerir la misma operación, por ejemplo, una suma, o un [[producto escalar]], a ser realizado en un gran conjunto de datos. Algunos ejemplos clásicos de este tipo de tareas son las aplicaciones [[multimedia]] (imágenes, vídeo, y sonido), así como muchos tipos de tareas [[computación científica|científicas]] y de ingeniería. Mientras que un CPU escalar debe completar todo el proceso de leer, decodificar, y ejecutar cada instrucción y valor en un conjunto de datos, un CPU vectorial puede realizar una simple operación en un comparativamente grande conjunto de datos con una sola instrucción. Por supuesto, esto es solamente posible cuando la aplicación tiende a requerir muchos pasos que apliquen una operación a un conjunto grande de datos.
 
La mayoría de los primeros CPU vectoriales, como el [[Cray-1]], fueron asociados casi exclusivamente con aplicaciones de investigación científica y criptografía. Sin embargo, a medida que la multimedia se desplazó en gran parte a medios digitales, ha llegado a ser significativa la necesidad de una cierta forma de SIMD en CPUs de propósito general. Poco después de que comenzara a ser común incluir [[unidad de coma flotante|unidades de coma flotante]] en procesadores de uso general, también comenzaron a aparecer especificaciones e implementaciones de unidades de ejecución SIMD para los CPU de uso general. Algunas de estas primeras especificaciones SIMD, como el [[MMX]] de Intel, fueron solamente para números enteros. Esto demostró ser un impedimento significativo para algunos desarrolladores de software, ya que muchas de las aplicaciones que se beneficiaban del SIMD trataban sobre todo con números de coma flotante. Progresivamente, éstos primeros diseños fueron refinados y rehechos en alguna de las comunes, modernas especificaciones SIMD, que generalmente están asociadas a un ISA. Algunos ejemplos modernos notables son el SSE de Intel y el AltiVec relacionado con el PowerPC (también conocido como VMX).<ref>Although SSE/SSE2/SSE3 have superseded MMX in Intel's general purpose CPU, later [[IA-32]] designs still support MMX. This is usually accomplished by providing most of the MMX functionality with the same hardware that supports the much more expansive SSE instruction sets.</ref>