在基于单片机的嵌入式应用中,软件存储在非易失性存储器(通常是闪存)中并从中运行。闪存虽然为存储和执行代码提供了一种有效的介质,但从闪存中执行时,许多因素会限制确定性代码性能。影响确定性代码行为的一个重要因素是系统总线矩阵的复杂性。从 SRAM 中运行代码时,由于与闪存相同的原因,也会出现确定性代码性能问题。
非确定性代码性能主要是由于代码从存储器传播到 CPU 的时间不同造成的,而传播时间的不同与连接存储器和 CPU 的系统总线矩阵有关。如果系统中存在多个实体需要访问系统总线,非确定性代码性能问题将会更加明显。
在实时应用中,某些情况下会有一些小的、关键的代码片段要求限时执行。不建议从闪存或 SRAM 中运行这类代码,因为系统总线仲裁可能会导致达不到预期的确定性时序,也就是说,从闪存或 SRAM 中提取代码时出现了高速缓存未命中情况。