Autor Tema: mdlSSE: Operaciones en punto flotante aceleradas por el CPU  (Leído 3252 veces)

0 Usuarios y 1 Visitante están viendo este tema.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
mdlSSE: Operaciones en punto flotante aceleradas por el CPU
« en: Diciembre 18, 2015, 12:36:10 am »
Este modulo se encarga de realizar operaciones aritmeticas "estandar" sobre vectores (array de 1 dimension) del tipo punto flotante (en nuestro caso, Single o Double), y obtener el resultado. La gracia está en que dichas operaciones, las realiza el CPU en 1 sola instruccion de assembler (y eventualmente en mucho menor tiempo que ejecutar una multiplicacion "estandar").
Ademas, el estandar de operaciones SSE permite realizar la misma operacion sobre 8 operandos del tipo "Single" (por ejemplo si se multiplica se realizarian las siguientes operaciones a la vez: A1*B1, A2*B2, A3*B3, A4*B4). En el caso de SS2, permite operar sobre 4 operandos, igual que el caso anterior, pero los mismos ahora son del tipo "Double".
Las operaciones incluyen: Suma, Resta, Multiplicacion, Division, Raiz cuadrada (solo del primer vector de operandos), Reciproco (solo del primer vector de operandos), Raiz cuadrada reciproca aproximada (solo del primer vector de operandos), Minimo y Maximo.

Quizas no sea muy util para el uso dia a dia, pero si en algun momento deberian realizar muchas operaciones aritmeticas con punto flotante, esto hará que funcione mucho mas rapido!

El ejemplo que inclui llama a las distintas operaciones sobre 2 vectores, de los cuales solamente le asigné el valor al primer elemento de cada uno (por eso se puede ver por ejemplo p1.v0 y p2.v0, donde p1 y p2 son los vectores, y v0 es el primer elemento de cada uno).
Ademas chequea si el CPU soporta SSE, SSE2 y SSE3 mediante la ejecucion del comando "CPUID" (ademas devuelve el CPUID, aunque no es necesario jaja).

Descargar SSE v0

Saludos!
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion