Stack puke 是计算机中的处理器在遇到异常时保存其内部状态的过程的名称。 该术语来自对过程可视化方式的描述——处理器将其内脏“吐”到堆栈中。 这里的堆栈是一个包含指令的 LIFO 数据结构。 LIFO 的意思是后进先出,它描述了一种处理数据的方式。 具体来说,接收到的最后一位数据在处理后最先发送出去。 计算中的 LIFO 结构有很多用途——语法分析、递归函数、表达式求值等等。
堆栈呕吐的过程并不普遍——只有一些处理器架构会这样做。 要使用较旧的 example – 摩托罗拉 68020 就是这样做的。 如果遇到某种异常或错误,堆栈 puke 进程将运行。 它用于在处理和解决错误时保存重要的内部状态信息。 保存内部状态信息的过程可能需要一段时间,并会导致处理器性能下降。 对于具有长流水线的处理器来说尤其如此。 当然,速度变慢的原因有很多,而不仅仅是因为堆栈呕吐。
提示:时间长是相对的。 所花费的时间通常以时钟周期来衡量,这在现代 CPU 中是非常短的时间周期。
在摩托罗拉 68020 的例子中,一个堆栈 puke 可以“反刍”多达 92 字节的数据。 当它遇到总线故障时可能会发生这种情况,因为 example.