四条指令一共几拍
运行下面这段程序,填写它打印出来的结果。 PROG = [0b00001001, 0b01000111, 0b10000011, 0b11000000] def decode(w): return (w >> 6) &
自己写:一拍一拍地走
补全 tick:每调用一次算一拍,按「取指 → 译码 → 执行」三拍一循环,返回这一拍在干什么。
一条指令占了哪几拍
给每一拍编号,找出第二条指令占用的是第几到第几拍(从 0 开始编号)。
算一算每条指令平均几拍
用总拍数除以指令条数,得到 CPI(每条指令的周期数)。再算一次「如果停机那条不算」的 CPI。⚠️ 一律用拍数,不用秒。
trace 是拿来干什么的
把每一拍的状态都记下来,形成一份 trace。它最大的用处是【0】。
看 trace 时最该盯什么
拿到一份 trace,最该盯的是【0】。
R0 一路上的值
运行下面这段程序,填写它打印出来的结果。 PROG = [0b00001001, 0b01000111, 0b10000011, 0b11000000] def decode(w): return (w >> 6) &
一行完整的 trace
运行下面这段程序,填写它打印出来的结果。 PROG = [0b00001001, 0b01000111, 0b10000011, 0b11000000] def decode(w): return (w >> 6) &
自己写:记一份 trace
补全循环体:每执行完一条指令,记一行「PC-操作码-R0」。
从 trace 反推出程序
只给你一份 trace,把每一行的操作码取出来,还原出这段程序做了哪三件事。