Language agnostic 避免处理器中的定时问题
我正在写一个(非常缓慢和原始的)处理器的模拟 例如:假设时钟速度为恒定的1Hz。我假设这意味着每秒可以/将处理1条指令。有些指令比其他指令耗时更长。添加1+0所需的时间少于1+7。(后者会导致进位波动,这需要非零的时间。) 我需要在所有其他指令完成后才能执行指令 我是否需要:Language agnostic 避免处理器中的定时问题,language-agnostic,cpu,Language Agnostic,Cpu,我正在写一个(非常缓慢和原始的)处理器的模拟 例如:假设时钟速度为恒定的1Hz。我假设这意味着每秒可以/将处理1条指令。有些指令比其他指令耗时更长。添加1+0所需的时间少于1+7。(后者会导致进位波动,这需要非零的时间。) 我需要在所有其他指令完成后才能执行指令 我是否需要: 时间最长的指令需要多长时间并将时钟速度设置为大于该值 创建一个有状态的监视程序,在前一条指令完成之前不允许执行未来的指令 我完全误解了这个问题吗 在#1中,似乎我仍在冒着在下一次开始之前指令不完整的竞争条件的风险。在#2中
我如何解决这个问题?对于真正的处理器如何处理这个问题,有什么提示吗?您熟悉吗?首先,处理器在每个时钟周期执行一组微指令,这些通常涉及将总线切换到寄存器或ALU(算术逻辑单元)之类的事情,下一条微指令可能会对寄存器或ALU进行时钟设置,以处理总线上的数据。大多数汇编级指令都是由一系列微指令组成的。加法指令只需要几条微指令,但除法可能需要更多。大多数微控制器记录每个汇编级指令需要多少周期 对于更复杂的微控制器,还有一个指令管道(如cat所述),这意味着处理器可以在上一个on完成之前开始执行下一条指令的一部分。对于预测分支之类的概念,这可能变得非常复杂
通常,当您模拟数字电子设备时,您使用基于事件的模型,因为电子系统是并发的,但也有需要建模的传播延迟。我记得在Uni使用PSpice和MicroSim这样的工具做得非常好。(1)就是时钟。你不应该有比赛条件;执行add需要x ns;这只钟慢了。x