引言
对于computer architecture也好,ASIC也好,模拟器是很重要的,这个前面也说过。一般情况下,simulator可分为两种,一种是解释型的,一种是翻译型的。解释型的,就是在主机的memory里面create一个目标机的structure,然后根据指令的功能,来操作虚拟的structure,来模拟实现真实环境的操作。翻译型的,就是把目标机的程序翻译成主机的程序,直接在主机上执行。
解释型的也叫ISS(instruction set simulator)。有的只是功能模拟(eg,or1ksim),这个可以通过创建虚拟体系结构来实现。
但是很多情况下需要cycle accurate simulation(eg,gem5,simplescaler)。肿么办呢?
需要解决两个主要问题:
1》怎么用串行语言模拟并行操作,即,同一周期内,前面的模拟不会影响后面的模拟。本例子采用逆序模拟。
2》怎么实现周期精确,尤其对于exception process。采用更小cycle操作。由于本例太简单,无法体现。
这一小节就以一个简单的例子来说明CAS的基本原理。
4.1 要模拟的电路
假如咱们想用C语言模拟下面的一个组合逻辑电路和时序逻辑电路混合的电路。
4.2 C语言实现
/*
*f