为什么加速处理器会导致错过实时系统的最后期限?

时间:2012-04-11 15:24:35

标签: embedded real-time timing

对此有点困惑。如果我加快处理器的速度,那么完成一项任务会不会花费更少的时间,从而更快地完成截止日期?

感谢

4 个答案:

答案 0 :(得分:6)

答案是由于速度更快,可能会出现新的资源冲突。这被称为Graham的异常:如果在多处理器上调度任务集以使调度长度最小化,则增加处理器,减少执行时间或削弱优先级约束可以增加调度长度。注意目标(最小化计划长度)。但是,如果任务有最后期限并且目标是满足所有任务期限,那么异常就可以很容易地显示出来。有关操作系统的书籍中的示例插图都有详细记录。

另见:

  • Andersson,B。; Jonsson,J。; ,“抢占式多处理器调度异常”,并行和分布式处理研讨会。,Proceedings International,IPDPS 2002,Abstracts and CD-ROM,vol。,no。,pp.12-19,2002。doi:10.1109/IPDPS.2002.1015483
  • Grahamm R. L.,“Bounds on Multiprocessing Timing Anomalies”,SIAM Journal of Applied Mathematics,Vol。 17,No。2(1969年3月),第416-429页。

答案 1 :(得分:5)

这种事情发生了,道格拉斯已经解释了格拉汉姆的异常。我将尝试用一个小例子来解释它。我希望这样可以更容易理解发生了什么:

如果您正在处理多个并发任务和固定速度的共享资源(例如通信通道),则会出现异常现象。

在实时系统环境中的一个很好的例子是数据采集。如果必须从模数转换器读取x毫秒的数据,则无论CPU速度如何,它都将花费x毫秒。在我的例子中,我称之为'IO-time'或'io-task'。

现在考虑以下情况:

您有一个任务(A),其中包括:

  • 4毫秒CPU计算
  • 4毫秒IO时间(保存数据)

第二个任务(B)将由硬件事件启动,包括:

  • 4毫秒IO时间(负载数据)
  • 2毫秒CPU时间

第二项任务以毫秒3开始。

IO和CPU是共享资源。它们可以并行运行,但IO或CPU一次只能处理一个作业。

一个可能的计划如下:

timestamp:   cpu/io   job:
---------------------------------------------
t=0          event    <--- hardware event triggers task-a
t=0          cpu      start of task-a (4 ms)
t=3          event    <--- hardware event triggers task-b
t=3          io       start of task-b (4 ms)
t=4          cpu      task-a done
t=7          io       task-b done
t=7          io       start of task-a (4 ms)
t=7          cpu      start of task-b (2 ms)
t=9          cpu      task-b done
t=10         io       task-a done

现在我们将CPU功率加倍,这样cpu的运行速度就会快两倍:

timestamp:   cpu/io   job:
---------------------------------------------
t=0          event    <--- hardware event triggers task-a
t=0          cpu      start of task-a (2 ms)
t=2          cpu      task a done
t=2          io       start of task a (4 ms)
t=3          event    <--- hardware event triggers task-b, but can't start
                           because io-bus is busy. Must wait.
t=6          io       task a done
t=6          io       start of task b (4 ms)
t=10         io       task b done
t=10         cpu      start of task b (1 ms)
t=11         cpu      task b done

正如您所看到的,与较慢的cpu场景相比,CPU速度的提高导致两个任务稍后完成一毫秒。这是因为固定速度共享资源在硬件事件发生时很忙。

这只是一毫秒,但这些事情可能会加起来并可能导致错过最后期限。

答案 2 :(得分:2)

取决于......加速处理器不会影响系统的其他部分(内存访问时间,传播延迟等)。提高处理器速度会使这些事情占用任务处理时间的更大部分。

如果处理器速度增加,传播可能会超过一个时钟周期,可能会因重试而导致延迟,具体取决于系统的设置方式。

如果根据处理器将截止时间与计数器或计时器相关联,则它也将按比例增加,因为计数器没有主存储器访问。

根据您的特定设置,其中任何一个都可能是因素之一。

答案 3 :(得分:1)

可能 - 但是许多用于加速处理器(例如缓存)的技术也使它们难以预测。大多数这些技术以最坏的情况为代价改善了平均情况(通常相当多) - 例如,使用缓存,在最坏的情况下,从内存中获取的速度可能比没有缓存时慢。缓存因为除了从内存中获取的时间之外,还有一些时间来搜索缓存以查看数据是否存在。

不幸的是,对于实时调度,您关心的主要是最差情况,而不是普通情况,因此即使这样的优化使得大多数代码的大多数代码更快,它仍然可以导致错过了实时系统的截止日期。