Buscando una ALU de código abierto

2

Estoy buscando una ALU abierta para calcular varias ecuaciones como estas:

y1 = e^((constant1 - x)^2/(2*x))
y2 = constant2/y1
y3 = y2*constant3 + x*constant4

Donde x es la entrada de mi sistema y y3 es la salida.

Preferiría que la ALU admitiera operaciones de punto flotante. ¿Dónde puedo encontrar una ALU de punto flotante abierta o libre?

    
pregunta Peterstone

2 respuestas

5

Como procesador y diseñador de un microprocesador de código abierto, puedo decirle que será difícil encontrar lo que está buscando.

La multiplicación, la resta y la suma son muy factibles en hardware, pero los números irracionales, los poderes arbitrarios y la división son difíciles, si no imposibles de hacer, en el hardware digital. Puede ser más fácil hacerlo en electrónica analógica si sus ecuaciones tienen una tolerancia para errores. De lo contrario, deberás encontrar algunos trucos para obtener lo que necesitas.

Si el rendimiento no es crítico, sería mejor que lo hicieras en el software.

A partir de esta y algunas de sus otras preguntas, creo que es posible que deba volver a definir su problema o encontrar una alternativa mejor que no dependa tanto de las matemáticas complicadas.

Puede que no sea posible hacer lo que necesita, en hardware y puede que necesite recurrir a la emulación de software.

    
respondido por el sybreon
1

Hay varias ALU de código abierto disponibles. En particular, hay al menos una ALU de código abierto en algún lugar de cada CPU de código abierto.

El sitio web de Open Cores , en la pestaña "Núcleo aritmético", tiene un montón de proyectos, algunos de ellos implican un punto flotante. También tiene un montón de CPU en la pestaña "Procesador", algunos de los cuales aparentemente incluyen FPUs - OpenFire, S1 Core (OpenSPARC), Zet (x86), y probablemente algunos otros.

Esta tabla de núcleos blandos de CPU incorporados tiene una columna que indica cuáles tener una FPU y otra columna que indique cuáles son de código abierto; varios de ellos son ambos.

Casi cualquier ALU puede realizar cualquier operación de punto flotante. Hay varios enfoques, incluyendo:

  • usa una CPU con solo una ALU entera; emular todas las operaciones de punto flotante en el software. Tal vez puedas compila tu código con el -msoft-float option o --con la opción sin-fp. O tal vez desee portar manualmente biblioteca de punto flotante como fp-bit.c, ieeelib o soft-fp o otra emulación de punto flotante biblioteca .
  • usa una CPU con un simple ALU de punto flotante (alias FPU) que solo hace sumar, restar, multiplicar, y unos pocos operaciones de utilidad; emular más Operaciones complicadas como dividir en software.
  • utiliza una CPU con una más complicada ALU de punto flotante (también conocida como FPU); solo emular operaciones realmente complicadas como cosh (), asin (), etc.

Como otros carteles ya lo han señalado, realizar cálculos de punto flotante en un FPGA puede no ser la forma más fácil o más económica de lograr sus objetivos. Muchas personas que usan FPGA prefieren usar cálculos de punto fijo si es posible. A menudo, un microprocesador estándar se ajusta mejor que un FPGA.

    
respondido por el davidcary

Lea otras preguntas en las etiquetas