Harvard 与冯·诺依曼结构如何影响嵌入式存储访问?
Harvard 结构让指令和数据拥有独立存储或通路,可并行访问;冯·诺依曼结构共享存储与总线。现代 MCU 常是改进型 Harvard:统一地址空间,但内部指令、数据总线和 Cache 分离。
Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
Harvard 结构让指令和数据拥有独立存储或通路,可并行访问;冯·诺依曼结构共享存储与总线。现代 MCU 常是改进型 Harvard:统一地址空间,但内部指令、数据总线和 Cache 分离。
寄存器位可能是写 1 清零、读清零、只写命令或硬件并发更新;普通 `reg |= mask` 会先读出全部位再写回,可能清除状态或覆盖硬件新值。必须按手册使用专用 SET/CLEAR 寄存器或精确写值。
传统 RISC 强调规则编码、Load/Store 和便于流水,CISC 提供更复杂多样的指令与寻址;现代处理器常把复杂指令译成内部微操作,也让 RISC ISA 加入丰富扩展,边界已经模糊。
流水线把取指、译码、执行等阶段重叠,让稳态下单位时间完成更多指令;单条指令仍需经过多个阶段。数据相关、结构冲突、分支和异常会造成停顿、转发或清空。
必须保存足以让任务恢复后像从未离开一样继续执行的寄存器状态,包括栈指针、被调用者保存寄存器和必要控制状态;异常硬件可能自动保存一部分,端口汇编保存剩余部分。FPU 状态可按需处理。
抢占式调度可在更高优先级任务就绪时切换,响应快但共享数据同步更复杂;协作式调度依赖任务主动让出,行为直观、切换点少,但一个任务不让出就会拖住全系统。
常见匹配优先考虑设备树 compatible/of_match_table,也可能使用 ACPI、id_table 或设备与驱动名称。匹配成功后 Driver Core 调用 probe,驱动再通过标准资源接口获取 MMIO、IRQ、Clock 等。
信号可能在任意指令点打断当前线程,许多库函数持有内部锁或修改全局状态,重入会死锁或破坏数据。Handler 只能调用异步信号安全函数,常见做法是设置 sig_atomic_t 标志或写 Self-Pipe/Eventfd 通知主循环。