You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Nand2Tetris Hack CPU中inM是否存在延迟的技术问询

Hack CPU 指令执行疑问:inM 是否存在延迟?

Nand2Tetris Hack CPU

假设我们有一条C指令 ADM=D+A,我对Hack CPU的执行节奏有如下理解:

  • Tick阶段:ALU根据D寄存器和A寄存器的当前输出值计算D+A,将结果同时发送给D、A寄存器,以及通过outM写入内存。此时D、A寄存器不会立即输出更新后的新值。
  • Tock阶段:D、A寄存器才会输出更新后的新值,但此时inM(内存返回给CPU的输入)是基于A寄存器的旧地址读取的——因为A寄存器的新地址要到Tock阶段才输出,导致后续指令使用的内存值是过期的。

我认为这种机制会导致CPU无法按预期工作,以下是具体示例:

初始内存状态:mem[1] = 0,mem[2] = 7
指令序列:

@2
D = 1
A = D
AMD = M+D

预期最终状态:A的值为1,mem[1]被更新为1,D的值为1。

假设前两行指令执行符合预期,此时状态为:mem[1] = 0,mem[2] = 7,D=1,A=2。从第三行开始分析:

  1. 第三行指令A = D的Tick阶段:ALU计算得到1并发送给A寄存器,但此时A寄存器输出给内存的地址仍是旧值2;
  2. 第三行的Tock阶段:A寄存器更新为1,但内存的inM已经在Tick阶段基于旧地址2读取了mem[2]=7;
  3. 第四行指令AMD = M+D执行时,会用这个旧的inM=7参与计算,最终得到结果8,和预期的1完全不符。

请问:inM是否存在这种读取延迟?


内容的提问来源于stack exchange,提问作者Oyomot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 20:52:11