Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт апр 23, 2024 19:12

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 01:12 
Не в сети

Зарегистрирован: Пт фев 20, 2009 03:50
Сообщения: 20
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
..только я другое хотел спросить (вопрос немного не в тему, но показалось, что для живой ветки о Форт-процессоре будет уместно :oops: ).

Цитата:
2. But stack processors are dead, anyway. They support no inherent parallelism. Even Hennessy and Patterson say so.

Это не Конфуций - это со странички Bernard Paysan: (http://www.jwdt.com/~paysan/4stack-faq.html)
Не знает ли кто-нибудь, что это за 2 авторитета, и что именно они хотели сказать: что у Форт-процов проблеммы с переключкой потоков,
или невозможно паралелить АЛУ именно таким образом, как на Интелообразных(x86), или Форт-проц почему-то не допускает параллельности
как таковой ("потому что нельзя";) ?

Как знающие люди отвечают на нападки таких Чемберленов?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 04:40 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
izvr писал(а):
Цитата:
2. But stack processors are dead, anyway. They support no inherent parallelism. Even Hennessy and Patterson say so.

Хороший вопрос, хотя не знаю как его приймут модераторы :D

Значится 10 лет назад, стековые процессоры из мейнстрима ушли, потому что все стали делать суперскалярные процессоры, которые могли чисто аппаратно определять независимые части кода и делать опережающее выполнение.

Например есть такой код:
c = a + b; z = x + y - если все переменные в регистрах, то сразу получается что эти две последовательности команд независимы и могут работать одновременно и это очень легко "увидеть" примитивным железом и автоматически распараллелить.
Если то-же перевести в стековую нотацию (a b x y -- c z), там уже не получается просто так, примитивными методами эти команды распараллелить.

Вот гадостность как раз была в том, что такая суперскалярность достаточно легко реализуется (для RISC там достаточно небольшое усложнение конвейера, не сильно увеличивающее общую площадь кристалла) и ЕМНИС при оптимизации в компиляторе, степень паралеллизма реально достигает чуть ли не 8 (!). С другой стороны стековые процессоры могли предложить очень простое ядро (и соответственно тьму ядер на кристалле, кстати я мечтаю, когда-же будут процессорные ядра встраивать прямо в чипы памяти), но ведь линейно программировать намного проще чем параллельно :evil:

Да, кстати в современных суперскалярах (современные это начиная с Alpha), наворотили еще круче - они делают виртуализацию регистров (переименование в виртуальный регистр потом назад) и например могут операцию "d = a + b - c" также обработать двумя потоками (реально они исполняют сразу кучу команд параллельно, а потом "разбираются", какой результат можно употребить, а какой выкинуть и пересчитать), и соответственно, во всех успешных RISC, система команд оптимизирована, чтобы можно было побольше команд параллельно выполнять на минимальных аппаратных ресурсах (а у Intel просто самые лучшие заводы в мире и самый сильный маркетинг, поэтому они до сих пор продают более сложные и тормозные процессоры :)) )


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 05:47 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
собственно говоря, Форт-процессоры очень легкие, поэтому легко наращивается большое количество ядер, см. тот же SEA24 (SEA40) как пример.
Тем более, что всеравно по этому пути пошла индустрия... А в то количество транзисторов, которое идет у современных маинстримовских процов можно впихнуть столько, нет СТОЛЬКО Форт-процессоров, что будет просто не понятно, что с таким количеством делать ;)
То есть Форт не противится явному паралелизму, и дается ему это значительно дешевле, чем тем же RISC ;)
с другой стороны параллелизм, он ведь очень разный бывает, и ничто, к примеру, не мешает выполнять одно и то же действие в коде программы одновременно на большом количестве процов. Вобщем Купман не то, чтобы не прав, одно ядро паралелить неудобно, но в целом это мало кого волнует.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 06:27 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Индустрия пошла так чтобы максимально возможно использовать то что уже наработано (в индустрии никто не делает свой Форт а стараются брать уже готовый), а для многопроцессорных систем нужно весь код переделывать и людей переучивать, и 10 лет назад еще развитых многопотоковых инструментов не было, а был еще виден приличный запас полупроводниковых технологий (всерьез ожидали процы более 5 гигагерц), и это все в комплексе как раз и помешало тогда сделать массовые многопроцессорные системы.

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

Кстати, реально таки уже есть пригодные для микросхем полупроводники до 100ГГц (60ГГц уже даже немножко производят), но там техпроцесс заметно отличается от типично кремниевого и ввиду неясности ситуации с нанотехнологиями и с квантовыми компьютерами, никто не торопится уходить с кремния - будут его мучить до самого конца.

Нанотехнологии могут "выстрелить" в ближайшие 5-10 лет, и дать гигантский прыжок сложности вычислительных устройств, а квантовые вычисления могут вообще опрокинуть мир, ввиду того что теоритически возможный в ближайшее время квантовый вычислитель на 1024 кубита, теоритически способен работать одновременно с жутким количеством состояний, порядка 2^50 (что для обычных компьютеров очень-очень далекая цифра).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 07:37 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Суперскалярная архитектура, была шагом вперед для некоего времени, но сейчас, как мне кажется, она уже является тормозом. Распараллеливание вычислений на уровне автомата бесконечно продолжаться не может.
Даже сейчас, для увеличения скорости на суперскалярах, программист подстраивается под процессор и пишет код так, чтобы он распараллеливался лучше. Только это, как мне кажется, тупиковый путь.

Лучше уж сразу параллельный код писать. Не умеем правда. Так ведь когда-то и простой код писать не умели, но научились же! И параллельному программированию научимся. Если будет на чем учиться!

А софт-процессоры для этого ой как могут пригодиться! Для того, чтобы с одной стороны легко получить кучу параллельных процессоров, а с другой отрабатывать их взаимодействие в параллельном потоке исполнения. Так что, еще и не факт, что наш любимый Форт так и останется в хвосте толстого мейнстрима.
Надо всего лишь поднапрячь мозги и понять, как лучше все это сделать.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 08:30 
mOleg писал(а):
То есть Форт не противится явному паралелизму, и дается ему это значительно дешевле, чем тем же RISC ;)
.


Есть ли работы по распарралеливанию Java байт кода?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 11:06 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
WingLion писал(а):
Суперскалярная архитектура, была шагом вперед для некоего времени, но сейчас, как мне кажется, она уже является тормозом. Распараллеливание вычислений на уровне автомата бесконечно продолжаться не может.
Даже сейчас, для увеличения скорости на суперскалярах, программист подстраивается под процессор и пишет код так, чтобы он распараллеливался лучше. Только это, как мне кажется, тупиковый путь.

Лучше уж сразу параллельный код писать. Не умеем правда. Так ведь когда-то и простой код писать не умели, но научились же! И параллельному программированию научимся. Если будет на чем учиться!

А софт-процессоры для этого ой как могут пригодиться! Для того, чтобы с одной стороны легко получить кучу параллельных процессоров, а с другой отрабатывать их взаимодействие в параллельном потоке исполнения. Так что, еще и не факт, что наш любимый Форт так и останется в хвосте толстого мейнстрима.
Надо всего лишь поднапрячь мозги и понять, как лучше все это сделать.

Полностью согласен и поддерживаю.

simne писал(а):
Лучше чтоб не напрягать ничего а чтоб оно само сразу лучше получалось

А вот в этом и проблема - люди хотят получить результат ничего не делая. Так не бывает.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 12:04 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
mOleg писал(а):
...с другой стороны параллелизм, он ведь очень разный бывает, и ничто, к примеру, не мешает выполнять одно и то же действие в коде программы одновременно на большом количестве процов. Вобщем Купман не то, чтобы не прав, одно ядро паралелить неудобно, но в целом это мало кого волнует.


http://www.ai.mit.edu/projects/im/cam8/

CAM8: a Parallel, Uniform, Scalable Architecture for Cellular Automata Experimentation
Код:
CAM8 is the latest product of over a decade of Cellular Automata (CA) machine and modeling research by the Information Mechanics group at the MIT Lab for Computer Science. CAM8 is a parallel, uniform, scalable architecture offering unprecedented performance in the fine-grained modeling of spatially-extended systems. It provides a general-purpose instrument for the systematic exploration of a new band of the computational spectrum. We have provided hardware, in the form of CAM8, and software, in the form of a programming environment based on Forth, for experimentation in this realm. Preliminary forms of documentation for the hardware and software are available


P.S. Только последняя новость 2001г.
Неперспективно или слишком специфичные задачи решают?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 16:51 
Не в сети
Аватара пользователя

Зарегистрирован: Вт ноя 06, 2007 21:23
Сообщения: 227
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
simne писал(а):
Кстати, вот почитайте:
http://en.wikipedia.org/wiki/Transputer
- они выпустились 25 лет назад, имели параллельный компилятор и тд...

Последние данные по выпуску транспьютеров заканчиваются 1998 годом, может и позже было, но не знаю...
Явный параллелизм - машина шестого поколения...
параллелить можно по разному: операционные блоки, команды разные (SIMD или MIMD)...
вообще параллелить каждый узел ЭВМ :))
если судить по книгам, то ничего нового в теории с 1990 года почти нет.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 18:22 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
VoidVolker писал(а):
simne писал(а):
Лучше чтоб не напрягать ничего а чтоб оно само сразу лучше получалось

А вот в этом и проблема - люди хотят получить результат ничего не делая. Так не бывает.

Не совсем так. Я написал: делать как обычно но чтобы результат получился лучше.
Вообще все с нуля переделывать это несколько нездорово и главное неестественно (вся жизнь основана на преемственности, а природа мудра).

И собственно суперскалярность, VLIW и EPIC (явный параллелизм) это все технологии которые позволяли получать лучший результат не переделывая все с нуля, или хотя-бы не переделывать программу, а просто перекомпилировать и сразу получить лучший результат.

Кстати, у Форта в этом смысле есть преимущество - тк его обычно можно достаточно надежно декомпилировать и перекомпилировать заново с новой оптимизацией.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 18:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
simne писал(а):
Поясните, пожалуйста вашу мысль:
WingLion писал(а):
Даже сейчас, для увеличения скорости на суперскалярах, программист подстраивается под процессор и пишет код так, чтобы он распараллеливался лучше. Только это, как мне кажется, тупиковый путь.


например, я знаю, что вычисления a=b+c и d=e+f на некоем процессоре будут сделаны параллельно, посему в программе так и пишу, стараясь так делать во всей программе, возможно, даже в ущерб каким-то иным функциям. A теперь представим, что мне надо таким образом сложить тысячу пар чисел, я напишу программу, которая будет брать эти числа последовательно и складывать.

Да, процессор быть может распознает параллельные сложения и в таком случае, и мои массивы просуммируются в два раза быстрее, чем на одном ALU. Однако, если у меня в кристалле может находится 1000 сумматоров, то я формально могу ту же 1000 суммирований сделать за один такт. И, если распределение этих 1000 операций отдать железяке, то схема будет дико сложной. И это вместо того, чтобы те же железные ресурсы пустить на что-то более полезное, чем распределение операций по куче ALU.

simne писал(а):
- не пойму - вот сейчас программист уже пишет параллельный код, и лучше писать сразу параллельный код


Не видел ни разу параллельного кода :( если не считать теоретические построения Чепыженко с TTA архитектурой, но там параллельность натуральная, а не суперскалярная.


simne писал(а):
Лучше чтоб не напрягать ничего а чтоб оно само сразу лучше получалось Laughing


Сами только кошки родятся, а программы сами по себе не пишутся, сколько об этом ни мечтай.

simne писал(а):
а сейчас вот кремниевая микроэлектроника выдохлась.


Выдохлась не электроника, а люди, эту электронику делающие... им хочется, чтобы "оно само сразу получалось" (c)

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 18:39 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Alexander писал(а):
параллелить можно по разному...

если судить по книгам, то ничего нового в теории с 1990 года почти нет.

Ну да, верно - интенсивные исследования шли в кибернетике с 1960-х до конца 1980-х, пока не были исследованы все направления, сулившие эффективный выход нового (хорошее отношение вложений и выхода).
- Это так практически во всех областях науки и техники - движемся циклами - во время застоя накапливается некоторое количество идей, потом бах! - революция (кстати часто с крупным кризисом), и идеи находят свои реализации, потом опять застой с накоплением, и тд..

Сейчас как раз все что можно было разглядеть "невооруженным глазом" (без поллитры) уже реализуется или запатентовано, и можно ожидать что-то нового либо в областях с которыми раньше не работали (например кластерные вычисления или массивный параллелизм с более сотни выч узлов), либо на стыках - там где обычно узкоспециалисты не работают потому что не могут быть специалистами сразу в нескольких областях.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 19:04 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
WingLion писал(а):
A теперь представим, что мне надо таким образом сложить тысячу пар чисел, я напишу программу, которая будет брать эти числа последовательно и складывать.


И правильно. С нынешними инструментами это эффективный путь. С другими инструментами может быть эффективнее по-другому.

Вообще основной принцип языков высокого уровня (как и вообще развития науки и техники), состоит в том что люди работают с все более крупными и сложными абстракциями - когда-то первые компьютеры программировались выключателями, потом появился машкод, потом ассемблер, потом макроассемблер и тп.
Вот например возможен такой инструмент который будет принимать на вход не последовательность как решить задачу, а конкретно фразу означающую "сложить тысячу пар чисел" и при доступности нужного железа сразу компилировать в 1000 параллельно работающих кодов - такая парадигма программирования, когда не говорится как именно делать а только говорится что делать, называется декларативное программирование.

WingLion писал(а):
Не видел ни разу параллельного кода :( если не считать теоретические построения Чепыженко с TTA архитектурой, но там параллельность натуральная, а не суперскалярная.


Человек может увидеть только то для чего открыт его разум, и открыть может только он сам, если у него есть к этому желание.
Вот конкретно VHDL (да и Verilog) все делают параллельно. Хотя по сути это ассемблеры, но все равно параллельные ассемблеры.

WingLion писал(а):
simne писал(а):
Лучше чтоб не напрягать ничего а чтоб оно само сразу лучше получалось Laughing


Сами только кошки родятся, а программы сами по себе не пишутся, сколько об этом ни мечтай.


Сами не пишутся, безусловно, но зачем-же выбрасывать то что уже наработано?

WingLion писал(а):
simne писал(а):
а сейчас вот кремниевая микроэлектроника выдохлась.


Выдохлась не электроника, а люди, эту электронику делающие... им хочется, чтобы "оно само сразу получалось" (c)

Там еще в конце слово лучше :))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 19:04 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Электроника приближается к рубежу, когда экстенсивное развитие застрянет из-за того, что некуда больше мельчить транзисторы.
Память-процессор, по-моему нет программера, который об этом не мечтал бы


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 22:21 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
мндя, какой-то очень общий разговор.
по поводу автоматического распаралеливания кода есть замечание. Дело в том, что Форт ведь никак не определяет, где работает слово, к примеру, я для форка сделал запуск задачи в виде ( [params] # xt --> ) START
то есть любое слово может быть запущено как задача. Но даже это по сути не обязательно, в Форте любое слово может выполняться где угодно!!!
это значить, что распределенные вычисления очень даже просто реализовать, имхо.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB