¿Un simulador de sistema que permita modificaciones de verilog?

0

Mi investigación actual es sobre seguridad de hardware contra ataques de software, por lo que quería ejecutar algunos ataques de código C de muestra con un simulador. ¿Los simuladores x86-64 (es decir, Marssx86 o QEMU) permiten que el usuario modifique la arquitectura agregando el código verilog? ¿Hay un simulador x86 (64 o 32 bits) que cree un procesador usando verilog?

    
pregunta nice_remark

3 respuestas

0

Dudo mucho que cualquier simulador se acerque a ese nivel bajo. Todos los simuladores, como QEMU, hacen que las instrucciones de un entorno virtual se ejecuten en el procesador host. Si está "emulando" (yo uso ese término sin apretar) una arquitectura en otra (por ejemplo, uno de los muchos conjuntos ARM en un i386), al simulador no le importa cómo se ejecutaría un procesador ARM, solo le importa lo que se espera. El resultado de cada instrucción podría ser.

Los procesadores hacen mucho para obtener el resultado deseado de cada instrucción, y los procesadores modernos tienen complejidad en términos de líneas de instrucción, predicción de ramificación, almacenamiento en caché, procesamiento paralelo, etc. Ninguno de estos es necesario para obtener el resultado deseado en un simulador, ya que están diseñados para el rendimiento.

Nadie invertiría el tiempo (especialmente en software libre) para diseñar, por ejemplo, un procesador x86 desde cero en Verilog y luego ejecutar simulaciones en el nivel de hardware. Aparte de cualquier cosa, una simulación de este tipo demoraría una eternidad en ejecutarse; los meros nanosegundos tardarían minutos en simularse.

    
respondido por el Tom Carpenter
0

Este tipo de simuladores funcionan en un alto nivel de abstracción. Esa es la única manera de obtener un nivel razonable de rendimiento. No utilizan verilog internamente ni hay una manera de conectar una simulación de verilog a una simulación de software de esta manera.

Lo que recomendaría hacer es encontrar una arquitectura de código abierto con la que puedas jugar. x86 es tremendamente complejo, así que algo más simple como quizás RISC-V sería una mejor idea. En ese caso, puede tener todo el procesador como HDL (tal vez verilog, tal vez VHDL, tal vez algún lenguaje nuevo de alto nivel que genere Verilog / VHDL) y puede hacer todos los cambios que desee e incluso dejarlo en un FPGA. y ejecutarlo en tiempo real.

    
respondido por el alex.forencich
0
  

¿Los simuladores x86-64 (es decir, Marssx86 o QEMU) permiten que el usuario modifique la arquitectura agregando el código verilog?

No, absolutamente no.

QEMU opera en el nivel de instrucción. No emula la microarquitectura del procesador en absoluto.

Marss86 emula la microarquitectura de un procesador Intel x86, pero solo a un nivel relativamente alto. Se centra principalmente en simular el tiempo de las instrucciones (por ejemplo, el comportamiento de la caché y la canalización); la ejecución de la instrucción es manejada por QEMU. En esencia, es la simulación de los efectos que tiene la microarquitectura en el tiempo, no los detalles esenciales de cómo se implementa esa microarquitectura.

  

¿Hay un simulador x86 (64 o 32 bits) que cree un procesador utilizando verilog?

No tengo conocimiento de ninguno, y es poco probable que exista uno fuera de los licenciatarios x86, ya que el código infringiría varias patentes críticas de Intel y AMD.

Lectura entre líneas un poco: si desea implementar una CPU moderna, simulable / sintetizable en un HDL, eche un vistazo a RISC-V.

    
respondido por el duskwuff

Lea otras preguntas en las etiquetas