Многоядерный Форт, есть такой?

Существует ли такая реализация Форта, которая позволяет в полной мере использовать преимущества многоядерных процессоров?


person anonymouse    schedule 11.04.2011    source источник


Ответы (4)


Недавно мне стало известно о colorForth, последнем изобретении г-на Мура (не совместимом с ANS), которое используется на его новые многоядерные чипы.

Он оснащен 144 небольшими четвертыми компьютерами на одном чипе (и без часов!) для высокой эффективности.

РЕДАКТИРОВАТЬ: На самом деле, colorForth - это IDE, используемая для чипов. Разновидность (цвета)Форта, работающего на чипе, называется arrayForth.

person Kaos    schedule 24.08.2011
comment
Теперь Зеленые массивы открыли Институт ArrayForth. Пока что нужно пройти только один вводный курс; но больше находится в стадии разработки. - person Kaos; 15.03.2012

По всей видимости. Я мало что об этом знаю, см. Многоядерные процессоры, программирование FORTH и взаимосвязь между программное обеспечение и кремний (опубликовано 24 сентября 2008 г.).

Вы хотите использовать все преимущества многоядерных процессоров. Оправдание для многоядерного программирования заключается в том, что вам нужна производительность (вы можете выполнять многопоточность только с одним процессором).

В таком случае я бы не стал использовать Форт, так как это по сути интерпретатор (да, довольно быстрый). Хуже того, для современных процессоров каждая отправка слов на Форте, являющаяся косвенным вызовом, скорее всего, является разрывом конвейера, что действительно снижает производительность процессора, а выполнение слов на Форте работает с элементами стека, а не с регистрами. Таким образом, используя Forth, вы отказываетесь от вычислительного преимущества по сравнению с C, C++ или даже Fortran. Это означает, что вам почти гарантированно придется использовать более одного процессора с Forth, чтобы соответствовать производительности более традиционно кодируемого и компилируемого языка. Зачем начинать с недостатка?

Парни, которые хотят сделать MP с Python, меня озадачивают по той же причине.

person Ira Baxter    schedule 11.04.2011
comment
Вы бы действительно классифицировали Форт как интерпретатор? Наверняка вам решать, что компилировать, а что интерпретировать? - person sheepez; 24.04.2011
comment
@sheepez: Да, он не генерирует машинные инструкции, поэтому его нельзя назвать компилятором собственного кода. На самом деле то, что он генерирует, не очень сложно: для каждого слова Forth сохраните указатель, соответствующий этому слову Forth. Насколько я знаю, он скомпилирует любую последовательность слов Forth; семантические проверки полностью оставлены на время выполнения. Это соответствует тому, что обычно делают интерпретаторы. - person Ira Baxter; 25.04.2011
comment
На самом деле существуют реализации, которые компилируют слова в последовательности собственных инструкций CALL. Некоторые даже встраивают определенные слова. - person Tangent 128; 26.05.2011
comment
Я действительно должен угостить вас -1 за этот ответ, но сегодня я вежлив. Вы путаете язык FORTH с обычной реализацией FORTH в качестве интерпретатора кода с косвенным потоком. Это очень распространенная ошибка. Нет никакой причины, по которой FORTH нельзя было бы реализовать с помощью традиционного компилятора, выполняющего традиционную оптимизацию и кэширующего первые несколько ячеек стека в выделенных регистрах. (И обратите внимание, что архитектура x86 с дефицитом регистров, включая многоядерные части, УЖЕ тратит много времени на перемещение элементов стека, даже на C/C++ или даже на FORTRAN.) - person John R. Strohm; 05.06.2011
comment
@John: OP спросил, есть ли реализация, которая позволила бы ему эффективно работать параллельно. Мой ответ: скорее всего нет, так как большинство реализаций традиционны, и они губительны для параллельного программирования. Если вы знаете об одной реализации, которая обладает описанными вами приятными свойствами и может быть эффективно использована OP, вы можете опубликовать ее как прямой ответ на вопрос OP. Если вы не знаете ни одного, то я думаю, что мой ответ разумен. Успешные параллельные программы — это не то, что теоретически возможно. - person Ira Baxter; 05.06.2011

Существуют реализации Forth, работающие на «голом железе», которые ДЕЙСТВИТЕЛЬНО компилируют машинный код, и если вы проведете небольшое исследование перед тем, как начать печатать, вы увидите, что на самом деле:

  1. Форт — это персональная система, которую Чак Мур использует с 1958 года.
  2. Форт — это язык, компилятор и операционная система, интерактивный отладчик (где вы получаете представление о том, что он «интерпретируется»), «голое железо», задуманное Чаком, система Форт становится еще лучше, если учесть, что весь этот МИР для работы требуется всего 2 регистра, АЛУ и счетчик команд. Программирование на Форте полностью отличается от того, из чего, вероятно, сделана ваша операционная система, и поэтому я думаю, что действительно следует взглянуть на «голое железо» или даже на родные (да, есть собственные процессоры стековых машин) Форты, прежде чем судить, что есть что.
  3. именно эти «голые» реализации Forth использовались в течение десятилетий и до сих пор широко используются во встроенных устройствах, где ваша настольная ОС, вероятно, никогда не должна быть.
person aaron peacock    schedule 30.06.2011
comment
ой, извините, я должен был просто добавить комментарий выше ... не хотел давать ответ. на самом деле я не такой парень, как ответ. - person aaron peacock; 30.06.2011
comment
Я не думаю, что это решает вопрос? - person num1; 13.01.2017

Многоядерное программирование Forth возможно с iForth. Существуют 32/64-битные реализации, которые работают на Win7, Linux и OS X. iForth генерирует собственный код: http://home.iae.nl/users/mhx/i4faq.html

person marcel hendrix    schedule 06.11.2011