Multicore Forth,有吗?

ano*_*use 9 multicore forth

是否存在允许您充分利用多核处理器的Forth实现?

Kao*_*aos 5

我最近意识到colorForth是 Moore 先生的最新发明(不符合 ANS 标准)并用于他的新多核芯片

它在单个芯片上具有 144 台小型计算机(并且没有时钟!),以实现高效率。

编辑:实际上,colorForth 是用于芯片的 IDE。在芯片上运行的(颜色)Forth 的味道称为 arrayForth。


Ira*_*ter 3

显然。我了解的不多,参见《多核处理器、FORTH编程以及软件与硅的关系》(2008-09-24发表)。

您想要“充分利用”多核处理器。多核编程的借口是您需要性能(您只需一个 CPU 即可进行多线程)。

在这种情况下,我认为我不会使用 Forth,因为它本质上是一个解释器(是的,一个相当快的解释器)。更糟糕的是,对于现代处理器来说,每个 Forth 字调度都是间接调用,很可能是管道中断,这确实会严重影响处理器性能,而且 Forth 字执行对堆栈元素而不是寄存器进行操作。因此,通过使用 Forth,您将放弃与 C 或 C++ 甚至 Fortran 相比的计算优势。这意味着您几乎必须在 Forth 中使用多个 CPU 才能匹配更传统的编码和编译语言的性能。为什么要从劣势开始呢?

那些想用 Python 做 MP 的人也因为同样的原因让我困惑。

  • 我真的应该给你一个-1的回答,但我今天表现得很好。您将 FORTH 语言与作为间接线程代码解释器的 FORTH 的通常实现混淆了。这是一个非常常见的错误。没有任何理由不能使用传统编译器来实现 FORTH,进行传统优化,将前几个堆栈位置缓存在专用寄存器中。(请注意,寄存器匮乏的 x86 架构(包括多核部分)已经花费了大量时间来回弹堆栈元素,甚至在 C/C++ 甚至 FORTRAN 上也是如此。) (7认同)
  • @John:OP询问是否有一个实现可以让他有效地并行。我的回答:可能不会,因为大多数实现都是传统的,而这些对于并行编程来说是灾难性的。如果您知道某个实现具有您所描述的良好属性,并且可以被 OP 有效使用,欢迎您将其发布为对 OP 问题的直接答案。如果你不知道其中之一,那么我认为我的回答是合理的。成功的并行程序并不是理论上可行的。 (2认同)