a Custom Performance Counter (PMC),自定义性能计数器:这是一种用于测量程序执行时的各种性能指标的工具,如指令数、分支数、缓存命中率等。它通过在编译器或硬件中插入一些特殊的指令或寄存器来实现。它可以用于优化程序性能、分析程序行为、检测程序异常等目的。
影子堆栈a shadow stack:这是一种用于保护程序返回地址的机制,防止栈溢出或其他攻击导致的返回地址篡改。它通过在程序运行时维护一个与正常栈平行的影子栈,用于存储函数的返回地址,而不是在正常栈中存储。在函数返回时,它会从影子栈中取出返回地址,并与正常栈中的返回地址进行比较,如果不一致,则说明发生了攻击。
AddressSanitizer:这是一种用于检测程序内存错误的工具,如缓冲区溢出、悬空指针、内存泄漏等。它通过在编译器中插入一些检测代码来实现。它使用了一种直接映射的影子内存方案来记录每个内存字节的状态,如可读、可写、已释放等。在程序访问内存时,它会通过影子内存来检查是否发生了非法访问。
Chisel:这是一种用于硬件设计的编程语言,它基于Scala语言,可以生成Verilog代码或C++模拟器。它可以用于描述复杂的硬件结构和行为,以及进行高层次的抽象和优化。
Xilinx Vivado:这是一种用于FPGA设计的软件工具,它可以进行综合、布局、布线、时序分析、仿真等操作。它可以支持多种FPGA器件和编程语言,以及提供多种优化策略和调试功能。
RTL:这是一种用于硬件设计的抽象层次,它表示寄存器传输级别(Register Transfer Level),即以寄存器为单位描述数据流和逻辑控制。它可以用于生成硬件电路的网表或代码,以及进行功能验证和性能评估³。
FireSim:这是一种用于FPGA仿真的软件工具,它可以在云端或本地部署基于FPGA的计算机系统,并运行真实的软件负载。它可以用于测试和评估不同的硬件架构和配置,以及进行性能分析和调优。
Virtex UltraScale+ FPGA:这是一种由Xilinx公司生产的高性能FPGA器件,它采用了14nm/16nm FinFET工艺和3D IC技术,提供了高密度、高带宽、高并行的特点。它可以用于处理复杂的计算密集型应用,如网络、机器学习、雷达等。
网表:这是一种用于描述硬件电路结构的数据格式,它包含了电路中各个元件(如门、触发器、寄存器等)以及它们之间的连接关系。它可以用于进行布局、布线、仿真等操作,以及生成可编程逻辑器件(如FPGA)的配置文件。