Растригин. С компьютером наедине. 1990
Страница 3 из 6
Страница 3 из 6 • 1, 2, 3, 4, 5, 6
Re: Растригин. С компьютером наедине. 1990
ФОРТРАН
Первым и самым распространенным по сей день является язык Фортран (сокращение слов ФОРмульный ТРАНслятор, т.е. формульный переводчик). Он был создан в 1956г. в ответ на практические потребности загрузки мощных компьютеров, появившихся к этому времени. Они стали простаивать из-за недостатка программ, так как программисты не справлялись с их подготовкой. Тогда решили подключить к программированию самих пользователей ЭВМ. Вот так и появился Фортран - первый язык программирования, ориентированный прежде всего на пользователей.
За более чем 30-летнюю историю Фортрана на этом языке написано такое количество нужных и важных программ, что отказаться от него или заменить каким-то новым языком не только нецелесообразно, но просто расточительно: будет утрачен огромный фонд программ, написанных на этом языке. Именно поэтому Фортран иногда называют вечным языком - он входит обязательно во все существующие серьезные программные системы и наверняка будет входить в будущие. Более половины пользователей предпочитают Фортран другим языкам. Именно они придумали лозунг: "Настоящие программисты пишут только на Фортране". Кроме шутки, здесь есть доля истины. Фортран - не застывший язык, он совершенствуется, последующие версии (Фортран-II, Фортран-IV, Фортран-77) включают все предыдущие и предоставляют дополнительные возможности.
В Фортран-программе операторы не нумеруются и выполняются в порядке их следования в программе. При необходимости изменения этого порядка используются так называемые метки - целые числа, поставленные перед соответствующими операторами. Операция присвоения в Фортране реализуется в виде равенства, например S=S+X означает, что переменной S присваивается новое значение, равное сумме предыдущего значения S и значения X. Оператор цикла здесь имеет вид: DO 5 М=1,N, т.е. делать (DO) цикл до метки 5 при М, изменяющемся от 1 до N (всего N раз), где N - заданное число.
Например, при вычислении среднего из N чисел s=1/N(x1+...+xN) удобно воспользоваться этим оператором. Для этого введем сумму m чисел: sm=x1+...+xm, тогда sm=s(m-1)+xm и s=sN/N. В результате получаем такую программу:
S=0 'Присвоение нуля начальному значению s, чтобы стереть число, которое могло остаться в ячейке S от прошлой работы компьютера.
DO 5 М=1,N 'N-кратный цикл вычисления до оператора с меткой 5, т.е. следует N раз выполнять вычисления от этого оператора (цикла) до оператора с меткой 5.
5 S=S+X(M) 'Вычисление sm=s(m-1)+xm. Х(М) соответствует xm, а 5 - метка.
S=S/N 'Деление полученной суммы sN на N.
TYPE*S 'Вывод значения S в свободном формате (это обозначено звездочкой *), т.е. значения, которое получилось (без округления), и в любом месте экрана дисплея.
Для работы этой программы следует предварительно ввести или иметь в памяти компьютера значения чисел x1, ..., xN т.е. массив Х(M).
***
Всем хорош Фортран, но все-таки сложен для многих пользователей, которым желательна прежде всего простота. И такой язык был изобретен на базе Фортрана. Это Бейсик (BASIC - многоцелевой язык символических инструкций для начинающих).
Первым и самым распространенным по сей день является язык Фортран (сокращение слов ФОРмульный ТРАНслятор, т.е. формульный переводчик). Он был создан в 1956г. в ответ на практические потребности загрузки мощных компьютеров, появившихся к этому времени. Они стали простаивать из-за недостатка программ, так как программисты не справлялись с их подготовкой. Тогда решили подключить к программированию самих пользователей ЭВМ. Вот так и появился Фортран - первый язык программирования, ориентированный прежде всего на пользователей.
За более чем 30-летнюю историю Фортрана на этом языке написано такое количество нужных и важных программ, что отказаться от него или заменить каким-то новым языком не только нецелесообразно, но просто расточительно: будет утрачен огромный фонд программ, написанных на этом языке. Именно поэтому Фортран иногда называют вечным языком - он входит обязательно во все существующие серьезные программные системы и наверняка будет входить в будущие. Более половины пользователей предпочитают Фортран другим языкам. Именно они придумали лозунг: "Настоящие программисты пишут только на Фортране". Кроме шутки, здесь есть доля истины. Фортран - не застывший язык, он совершенствуется, последующие версии (Фортран-II, Фортран-IV, Фортран-77) включают все предыдущие и предоставляют дополнительные возможности.
В Фортран-программе операторы не нумеруются и выполняются в порядке их следования в программе. При необходимости изменения этого порядка используются так называемые метки - целые числа, поставленные перед соответствующими операторами. Операция присвоения в Фортране реализуется в виде равенства, например S=S+X означает, что переменной S присваивается новое значение, равное сумме предыдущего значения S и значения X. Оператор цикла здесь имеет вид: DO 5 М=1,N, т.е. делать (DO) цикл до метки 5 при М, изменяющемся от 1 до N (всего N раз), где N - заданное число.
Например, при вычислении среднего из N чисел s=1/N(x1+...+xN) удобно воспользоваться этим оператором. Для этого введем сумму m чисел: sm=x1+...+xm, тогда sm=s(m-1)+xm и s=sN/N. В результате получаем такую программу:
S=0 'Присвоение нуля начальному значению s, чтобы стереть число, которое могло остаться в ячейке S от прошлой работы компьютера.
DO 5 М=1,N 'N-кратный цикл вычисления до оператора с меткой 5, т.е. следует N раз выполнять вычисления от этого оператора (цикла) до оператора с меткой 5.
5 S=S+X(M) 'Вычисление sm=s(m-1)+xm. Х(М) соответствует xm, а 5 - метка.
S=S/N 'Деление полученной суммы sN на N.
TYPE*S 'Вывод значения S в свободном формате (это обозначено звездочкой *), т.е. значения, которое получилось (без округления), и в любом месте экрана дисплея.
Для работы этой программы следует предварительно ввести или иметь в памяти компьютера значения чисел x1, ..., xN т.е. массив Х(M).
***
Всем хорош Фортран, но все-таки сложен для многих пользователей, которым желательна прежде всего простота. И такой язык был изобретен на базе Фортрана. Это Бейсик (BASIC - многоцелевой язык символических инструкций для начинающих).
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
БЕЙСИК
Сейчас, пожалуй, это самый популярный язык программирования и общения с ЭВМ среди начинающих пользователей. Главным его достоинством - ради этого он и был создан - является простота (его иногда в шутку называют языком для простаков). Научиться основным приемам работы с Бейсиком можно за час-полтора, именно поэтому его рекомендуют для начального обучения программированию. Но это вовсе не означает, что Бейсик не позволяет составлять программы для решения сложных задач. Просто они скорее всего будут несколько хуже, чем программы, составленные на "больших" языках. А вот простые задачи с помощью Бейсика решаются лучше: другие языки всегда обладают избыточностью, которая усложняет решение простых задач.
Сразу отметим, что Бейсик имеет несколько "диалектов" версий и единого стандарта на него нет. Есть просто Бейсик, Бейсик-плюс, расширенный Бейсик и множество других Бейсиков. Как правило, каждый новый тип компьютера снабжается своим Бейсиком, отличающимся от других. Это нужно всегда иметь в виду. Знание одного из диалектов Бейсика не гарантирует успеха в программировании на другом диалекте. Это значит, что, зная Бейсик и переходя на другой компьютер, следует всегда поинтересоваться особенностями Бейсика на этой машине.
Так уж получилось, что вопреки общему правилу машинной независимости языков высокого уровня Бейсик оказался машинно-зависимым исключением. Трудно сказать, почему так получилось. Наверное, потому, что к Бейсику разработчики компьютеров не относились серьезно и "перекраивали" его под свои концепции. С Фортраном такого произойти не могло: не удалось бы воспользоваться уже накопленными программами. На Бейсике же таких программ было немного. Именно поэтому у всех Бейсиков нет единой характерной черты, кроме простоты да возможности диалога с компьютером в процессе программирования. Такой диалог очень облегчает программирование и обеспечивается режимом интерпретации, характерным для Бейсика. В любой момент вы можете запустить написанную программу с помощью оператора RUN (прогон). Этим оператором начинается выполнение программы в режиме интерпретации, а прекращается, как только встречается оператор STOP или END (конец).
Все операторы Бейсик-программы обычно нумеруются через 10, чтобы можно было делать вставки. Номера операторов играют в Бейсике роль меток. Для записи программы используются лишь прописные латинские буквы, как в Фортране.
Основные операторы Бейсика: LET (пусть) - оператор присваивания (хотя в некоторых версиях Бейсика LET опускается); PRINT (печать) - оператор вывода результата, который выведет на печать то, что поставлено в кавычки после этого оператора и вставит полученные значения; ^ - возведение в степень; * - произведение; / - деление. Например, вычисление выражения (l,233^3.5*sin(8.35/3.7)/17,6 осуществляет следующая программа:
10 LET X = (1.23^3.5)*SIN(8.35/3.7)/17.6
20 PRINT "X=", X
30 END
RUN
при выполнении которой получим на экране дисплея (или на бумаге печатающего устройства) результат в виде X=0.090738. Например, Бейсик-программа вычисления среднего из N чисел имеет вид
10 S=0
20 FOR K=l TO N 'Заголовок цикла по К от 1 до N
30 S=S+X(K)
40 NEXT К 'Переход к следующему (next - следующий) значению К (т.е. К->К+1) и возвращение к строке 30, как к началу цикла.
50 S=S/N
60 PRINT S 'Печать результата
70 STOP
RUN
В результате работы программы на экране дисплея будет выведено полученное значение S.
Почти все современные ЭВМ, особенно персональные, снабжены транслятором с языка Бейсик, работающим в режиме интерпретации (см. гл.4). Это значит, что пользователь может выполнить сразу написанную на Бейсике часть программы.
Но не следует думать, что Бейсик - "игрушечный" язык. С его помощью можно решать достаточно сложные задачи. А для очень сложных имеется так называемый расширенный Бейсик, имеющий, например, матричные операции, которые позволяют с помощью одного оператора преобразовывать большие таблицы (матрицы). Есть версии Бейсика, работающие в режиме компиляции, что значительно ускоряет прогон программ, написанных на этом языке.
Фортран, Бейсик, Кобол, ПЛ/1 (см. рис.8 ) являются фирменными языками, т.е. языками, разработанными фирмами-изготовителями ЭВМ для эффективного использования их продукции. Но одновременно с этим языки общения человека и ЭВМ были и до сих пор являются объектом чисто научного изучения, результатом которого стала разработка международной группой ученых научно обоснованных языков программирования. И первым из них был Алгол.
Сейчас, пожалуй, это самый популярный язык программирования и общения с ЭВМ среди начинающих пользователей. Главным его достоинством - ради этого он и был создан - является простота (его иногда в шутку называют языком для простаков). Научиться основным приемам работы с Бейсиком можно за час-полтора, именно поэтому его рекомендуют для начального обучения программированию. Но это вовсе не означает, что Бейсик не позволяет составлять программы для решения сложных задач. Просто они скорее всего будут несколько хуже, чем программы, составленные на "больших" языках. А вот простые задачи с помощью Бейсика решаются лучше: другие языки всегда обладают избыточностью, которая усложняет решение простых задач.
Сразу отметим, что Бейсик имеет несколько "диалектов" версий и единого стандарта на него нет. Есть просто Бейсик, Бейсик-плюс, расширенный Бейсик и множество других Бейсиков. Как правило, каждый новый тип компьютера снабжается своим Бейсиком, отличающимся от других. Это нужно всегда иметь в виду. Знание одного из диалектов Бейсика не гарантирует успеха в программировании на другом диалекте. Это значит, что, зная Бейсик и переходя на другой компьютер, следует всегда поинтересоваться особенностями Бейсика на этой машине.
Так уж получилось, что вопреки общему правилу машинной независимости языков высокого уровня Бейсик оказался машинно-зависимым исключением. Трудно сказать, почему так получилось. Наверное, потому, что к Бейсику разработчики компьютеров не относились серьезно и "перекраивали" его под свои концепции. С Фортраном такого произойти не могло: не удалось бы воспользоваться уже накопленными программами. На Бейсике же таких программ было немного. Именно поэтому у всех Бейсиков нет единой характерной черты, кроме простоты да возможности диалога с компьютером в процессе программирования. Такой диалог очень облегчает программирование и обеспечивается режимом интерпретации, характерным для Бейсика. В любой момент вы можете запустить написанную программу с помощью оператора RUN (прогон). Этим оператором начинается выполнение программы в режиме интерпретации, а прекращается, как только встречается оператор STOP или END (конец).
Все операторы Бейсик-программы обычно нумеруются через 10, чтобы можно было делать вставки. Номера операторов играют в Бейсике роль меток. Для записи программы используются лишь прописные латинские буквы, как в Фортране.
Основные операторы Бейсика: LET (пусть) - оператор присваивания (хотя в некоторых версиях Бейсика LET опускается); PRINT (печать) - оператор вывода результата, который выведет на печать то, что поставлено в кавычки после этого оператора и вставит полученные значения; ^ - возведение в степень; * - произведение; / - деление. Например, вычисление выражения (l,233^3.5*sin(8.35/3.7)/17,6 осуществляет следующая программа:
10 LET X = (1.23^3.5)*SIN(8.35/3.7)/17.6
20 PRINT "X=", X
30 END
RUN
при выполнении которой получим на экране дисплея (или на бумаге печатающего устройства) результат в виде X=0.090738. Например, Бейсик-программа вычисления среднего из N чисел имеет вид
10 S=0
20 FOR K=l TO N 'Заголовок цикла по К от 1 до N
30 S=S+X(K)
40 NEXT К 'Переход к следующему (next - следующий) значению К (т.е. К->К+1) и возвращение к строке 30, как к началу цикла.
50 S=S/N
60 PRINT S 'Печать результата
70 STOP
RUN
В результате работы программы на экране дисплея будет выведено полученное значение S.
Почти все современные ЭВМ, особенно персональные, снабжены транслятором с языка Бейсик, работающим в режиме интерпретации (см. гл.4). Это значит, что пользователь может выполнить сразу написанную на Бейсике часть программы.
Но не следует думать, что Бейсик - "игрушечный" язык. С его помощью можно решать достаточно сложные задачи. А для очень сложных имеется так называемый расширенный Бейсик, имеющий, например, матричные операции, которые позволяют с помощью одного оператора преобразовывать большие таблицы (матрицы). Есть версии Бейсика, работающие в режиме компиляции, что значительно ускоряет прогон программ, написанных на этом языке.
Фортран, Бейсик, Кобол, ПЛ/1 (см. рис.8 ) являются фирменными языками, т.е. языками, разработанными фирмами-изготовителями ЭВМ для эффективного использования их продукции. Но одновременно с этим языки общения человека и ЭВМ были и до сих пор являются объектом чисто научного изучения, результатом которого стала разработка международной группой ученых научно обоснованных языков программирования. И первым из них был Алгол.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
АЛГОЛ
Создан в 1960г. (его поэтому иногда называют Алгол-60) и оказал большое влияние на развитие языков программирования (см. рис.8 ).
Алгол-программа всегда начинается словом begin (начало) и кончается словом end (конец), их поэтому называют операторными скобками, записывается и прописными и строчными латинскими буквами, причем в публикациях операторы записываются полужирным шрифтом. Например, оператор условного перехода if...then...else (если..., то..., иначе...), где вместо многоточий стоят различные выражения, позволяет делать многое. Например, строка программы
if A>0 then X:=A/B
означает, что при А>0 переменной X следует присвоить (:=) значение отношения А/В, а при А<=0 перейти к следующему оператору в программе. А строка
if X>=C then go to M else R:=1
означает, что при X>=C следует переходить (go to) к оператору с меткой M, а иначе (англ. else - иначе), т.е. при X<=C, переменную R приравнять к единице и перейти к следующему по порядку оператору.
Например, Алгол-программа вычисления среднего из N чисел:
begin 'Начало программы
K:=1; S:=0; 'Задание начальных значений переменных К и S
2: if K=N then go to 1 'Если K=N, то перейти к оператору с меткой 1,
else S:=S+X(K); 'иначе (при K<=N), значение S увеличить на Х(К) и перейти к следующему оператору
K:=K+1; go to 2; 'Увеличить К на единицу и перейти к оператору с меткой 2
1: S:=S/N; 'Определить среднее значение, 1 - метка
write S 'Записать результат
end 'Конец
Применяют Алгол в научно-технических расчетах и научно-исследовательских работах. Развитием Алгола-60 является Алгол-68, созданный в 1968г., который предоставляет пользователю большие возможности.
Создан в 1960г. (его поэтому иногда называют Алгол-60) и оказал большое влияние на развитие языков программирования (см. рис.8 ).
Алгол-программа всегда начинается словом begin (начало) и кончается словом end (конец), их поэтому называют операторными скобками, записывается и прописными и строчными латинскими буквами, причем в публикациях операторы записываются полужирным шрифтом. Например, оператор условного перехода if...then...else (если..., то..., иначе...), где вместо многоточий стоят различные выражения, позволяет делать многое. Например, строка программы
if A>0 then X:=A/B
означает, что при А>0 переменной X следует присвоить (:=) значение отношения А/В, а при А<=0 перейти к следующему оператору в программе. А строка
if X>=C then go to M else R:=1
означает, что при X>=C следует переходить (go to) к оператору с меткой M, а иначе (англ. else - иначе), т.е. при X<=C, переменную R приравнять к единице и перейти к следующему по порядку оператору.
Например, Алгол-программа вычисления среднего из N чисел:
begin 'Начало программы
K:=1; S:=0; 'Задание начальных значений переменных К и S
2: if K=N then go to 1 'Если K=N, то перейти к оператору с меткой 1,
else S:=S+X(K); 'иначе (при K<=N), значение S увеличить на Х(К) и перейти к следующему оператору
K:=K+1; go to 2; 'Увеличить К на единицу и перейти к оператору с меткой 2
1: S:=S/N; 'Определить среднее значение, 1 - метка
write S 'Записать результат
end 'Конец
Применяют Алгол в научно-технических расчетах и научно-исследовательских работах. Развитием Алгола-60 является Алгол-68, созданный в 1968г., который предоставляет пользователю большие возможности.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
ПАСКАЛЬ
Этот язык - прямое развитие направления Алгола (см. рис.8 ), создан в 1969г. и стал очень популярен в настоящее время. Причиной этого является прежде всего его простота. Так, описание языка Паскаль занимает всего 30 страниц текста. Именно поэтому его часто используют для обучения приемам программирования. Транслятор с Паскаля также прост и занимает мало места в памяти, что особенно важно для мини- и микроЭВМ, имеющих оперативную память малой емкости. И, наконец, в Паскале есть достаточно сильные средства для написания так называемых системных программ, для чего обычно используют язык ассемблера. Такая универсальность и компактность Паскаля сделала его наряду с Бейсиком очень популярным, особенно для персональных компьютеров. Например, Паскаль-программа вычисления среднего из N чисел:
BEGIN 'Начало программы
K:=1; S:=0; 'Задание начальных значений
WHILE K<N DO BEGIN 'Пока (WHILE) K<N, делать (DO)
S:=S+X(K); K:=K+1; 'sk=s(k-1)+xk и k:=k+1,
END 'а при K=N обращаться к следующему оператору. Конец цикла (его начало было обозначено
DO BEGIN)
WRITE ("среднее значение", S/N) 'Писать слова "среднее значение", за которыми следует значение среднего (S/N) - это вывод результата
END 'Конец
В результате работы этой программы получим следующий текст на экране дисплея:
среднее значение ...,
где вместо точек будет стоять число - полученное среднее значение.
Сравнивая приведенные программы для вычисления среднего значения, написанные на разных языках (Фортране, Бейсике, Алголе и Паскале), легко заметить, что они примерно одинаковы. И ни один из рассмотренных языков не обладает заметным преимуществом перед другими при решении этой задачи, да и других вычислительных задач. Преимущество проявляется тогда, когда придется обратиться к библиотеке программ, чтобы найти и использовать уже готовую программу для своих целей. И лучше будет тот язык, который обеспечит решение этой задачи за минимальное число обращений к памяти и не потребует высокой квалификации пользователя.
Как видно, все зависит от задачи, пользователя, организации библиотеки программ, самого компьютера, его внешней памяти и многих других обстоятельств. Так что нельзя заранее предугадать, какой язык лучше,- все зависит от обстоятельств. Это и гарантирует каждому языку широкую область применения.
Этот язык - прямое развитие направления Алгола (см. рис.8 ), создан в 1969г. и стал очень популярен в настоящее время. Причиной этого является прежде всего его простота. Так, описание языка Паскаль занимает всего 30 страниц текста. Именно поэтому его часто используют для обучения приемам программирования. Транслятор с Паскаля также прост и занимает мало места в памяти, что особенно важно для мини- и микроЭВМ, имеющих оперативную память малой емкости. И, наконец, в Паскале есть достаточно сильные средства для написания так называемых системных программ, для чего обычно используют язык ассемблера. Такая универсальность и компактность Паскаля сделала его наряду с Бейсиком очень популярным, особенно для персональных компьютеров. Например, Паскаль-программа вычисления среднего из N чисел:
BEGIN 'Начало программы
K:=1; S:=0; 'Задание начальных значений
WHILE K<N DO BEGIN 'Пока (WHILE) K<N, делать (DO)
S:=S+X(K); K:=K+1; 'sk=s(k-1)+xk и k:=k+1,
END 'а при K=N обращаться к следующему оператору. Конец цикла (его начало было обозначено
DO BEGIN)
WRITE ("среднее значение", S/N) 'Писать слова "среднее значение", за которыми следует значение среднего (S/N) - это вывод результата
END 'Конец
В результате работы этой программы получим следующий текст на экране дисплея:
среднее значение ...,
где вместо точек будет стоять число - полученное среднее значение.
Сравнивая приведенные программы для вычисления среднего значения, написанные на разных языках (Фортране, Бейсике, Алголе и Паскале), легко заметить, что они примерно одинаковы. И ни один из рассмотренных языков не обладает заметным преимуществом перед другими при решении этой задачи, да и других вычислительных задач. Преимущество проявляется тогда, когда придется обратиться к библиотеке программ, чтобы найти и использовать уже готовую программу для своих целей. И лучше будет тот язык, который обеспечит решение этой задачи за минимальное число обращений к памяти и не потребует высокой квалификации пользователя.
Как видно, все зависит от задачи, пользователя, организации библиотеки программ, самого компьютера, его внешней памяти и многих других обстоятельств. Так что нельзя заранее предугадать, какой язык лучше,- все зависит от обстоятельств. Это и гарантирует каждому языку широкую область применения.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
АДА
Этот язык создан в 1979г., является следующим продолжением направления Алгола в программировании. Его основное назначение - программирование работы самых разнообразных систем управления на ЭВМ и вообще сложных программных систем. Известно, что создание больших программных систем затрудняется тем, что они ненадежны ввиду неизбежных ошибок, допускаемых при программировании. В Аде большое внимание уделяется обеспечению надежности программ даже в ущерб легкости их написания. Поэтому основным элементом программы на языке Ада являются подпрограммы. Подпрограммы есть и в других языках, но там они играют вспомогательную, а здесь главную роль. Каждая подпрограмма состоит из двух частей: описательной и расчетной. В описательной части определяются очень подробно все логические понятия, используемые в данной подпрограмме: исходные данные, их тип, переменные, их тип, имена, возможные значения переменных и т.д. Расчетная часть подпрограммы представляет собой последовательность операторов, с помощью которых описываются действия, выполняемые подпрограммой.
Таким образом, каждая подпрограмма вполне самостоятельна и фактически является программой. Это позволяет параллельно писать и отлаживать сразу несколько подпрограмм, что очень важно при создании больших программных комплексов одновременно многими программистами. Такие комплексы необходимы для управления сложными технологическими процессами, летательными аппаратами, сложным научным экспериментом и т.д. Именно эти свойства языка Ада привлекают к нему внимание создателей больших и сложных систем управления на базе ЭВМ.
Этот язык создан в 1979г., является следующим продолжением направления Алгола в программировании. Его основное назначение - программирование работы самых разнообразных систем управления на ЭВМ и вообще сложных программных систем. Известно, что создание больших программных систем затрудняется тем, что они ненадежны ввиду неизбежных ошибок, допускаемых при программировании. В Аде большое внимание уделяется обеспечению надежности программ даже в ущерб легкости их написания. Поэтому основным элементом программы на языке Ада являются подпрограммы. Подпрограммы есть и в других языках, но там они играют вспомогательную, а здесь главную роль. Каждая подпрограмма состоит из двух частей: описательной и расчетной. В описательной части определяются очень подробно все логические понятия, используемые в данной подпрограмме: исходные данные, их тип, переменные, их тип, имена, возможные значения переменных и т.д. Расчетная часть подпрограммы представляет собой последовательность операторов, с помощью которых описываются действия, выполняемые подпрограммой.
Таким образом, каждая подпрограмма вполне самостоятельна и фактически является программой. Это позволяет параллельно писать и отлаживать сразу несколько подпрограмм, что очень важно при создании больших программных комплексов одновременно многими программистами. Такие комплексы необходимы для управления сложными технологическими процессами, летательными аппаратами, сложным научным экспериментом и т.д. Именно эти свойства языка Ада привлекают к нему внимание создателей больших и сложных систем управления на базе ЭВМ.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
КОБОЛ
Язык Кобол (COBOL - общий язык, ориентированный на экономические применения) создан в 1960г. для применения в экономике, точнее для обработки деловой информации. Кобол-программа выглядит как ряд предложений из английских слов, т.е. имеет вид текста на естественном языке, что значительно облегчает овладение этим языком пользователями - экономистами, администраторами и др. Характерной чертой его является то, что в качестве переменной может быть сложное сочетание букв, цифр и значков, например целая анкета, накладная или счет, необходимые преобразования которых и позволяют выполнять операторы Кобола.
Язык Кобол (COBOL - общий язык, ориентированный на экономические применения) создан в 1960г. для применения в экономике, точнее для обработки деловой информации. Кобол-программа выглядит как ряд предложений из английских слов, т.е. имеет вид текста на естественном языке, что значительно облегчает овладение этим языком пользователями - экономистами, администраторами и др. Характерной чертой его является то, что в качестве переменной может быть сложное сочетание букв, цифр и значков, например целая анкета, накладная или счет, необходимые преобразования которых и позволяют выполнять операторы Кобола.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
ПЛ/1
Этот язык является попыткой совместить все лучшее, что есть в Алголе и Коболе. Главная цель его создания - иметь в языке средства, необходимые всем категориям программистов. Это очень мощный язык, но и очень громоздкий (поэтому его иногда не без сарказма называют "монстром"). ПЛ/1 может эффективно обслуживать программирование как экономических, так и научно-технических задач. Характерной его чертой являются многочисленные правила умолчания, которые позволяют компьютеру (точнее, его транслятору) самому определять то, что не определено пользователем в программе. Например, используя букву N для обозначения целого числа, не нужно его специально описывать как целое (integer), как это требуется, например, в Алголе. Это сделает сам транслятор по правилу умолчания. Но для того, чтобы N могло быть десятичным числом, нужно его описать как вещественное (real). Правила умолчания помогают программировать, но затрудняют жизнь начинающим программистам: их надо знать и все время помнить.
Этот язык является попыткой совместить все лучшее, что есть в Алголе и Коболе. Главная цель его создания - иметь в языке средства, необходимые всем категориям программистов. Это очень мощный язык, но и очень громоздкий (поэтому его иногда не без сарказма называют "монстром"). ПЛ/1 может эффективно обслуживать программирование как экономических, так и научно-технических задач. Характерной его чертой являются многочисленные правила умолчания, которые позволяют компьютеру (точнее, его транслятору) самому определять то, что не определено пользователем в программе. Например, используя букву N для обозначения целого числа, не нужно его специально описывать как целое (integer), как это требуется, например, в Алголе. Это сделает сам транслятор по правилу умолчания. Но для того, чтобы N могло быть десятичным числом, нужно его описать как вещественное (real). Правила умолчания помогают программировать, но затрудняют жизнь начинающим программистам: их надо знать и все время помнить.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
GPSS - УНИВЕРСАЛЬНЫЙ ЯЗЫК МОДЕЛИРОВАНИЯ
Самым ярким представителем языков моделирования является язык GPSS, что в переводе с английского означает "общецелевая система моделирования". Этот язык высокого уровня позволяет моделировать поведение вероятностных систем, например систем массового обслуживания, вычислительных. Само по себе моделирование производится путем изменения состояния моделируемого объекта и сводится к генерации этих изменений, обычно случайных. Например, моделируя процесс обслуживания в магазине, достаточно генерировать случайные времена появления покупателей и окончание их обслуживания.
В соответствии с этим язык GPSS имеет операторы: GENERATE - генерировать и ADVANCE - задерживать (например, на время обслуживания). Числа, которые следуют за этими операторами, характеризуют свойства случайных процессов, которые моделируются. Например, GENERATE 20, 10, 10, 25, 2 означает, что надо генерировать поток клиентов, приходящих через случайные интервалы времени (20+/-10), например, секунд (т.е. интервал времени между появлением двух клиентов случаен и распределен в пределах от 10 до 30с), причем первый клиент приходит в случайный момент в интервале от 0 до 20с от начала работы (0=10-10; 20=10+10); всего должно быть смоделировано появление 25 клиентов, имеющих два приоритета - первый, идущих без очереди, и второй. Процесс обслуживания характеризуется временем пребывания клиента на месте обслуживания и моделируется оператором задержки. Например, ADVANCE 12, 8 означает, что на обслуживание клиента требуется случайное время, распределенное в интервале 12+/-8с, т.е. от 4 до 20с.
В результате такого моделирования можно определить такие важные характеристики моделируемой системы, как, например, ее пропускную способность, длину очередей, среднее время пребывания клиентов в системе и многое, что очень важно знать на стадии проектирования или анализа вероятностной системы. При этом обычно все интересующие характеристики процесса обслуживания вычисляются автоматически и остается лишь запросить нужные вам показатели моделируемого процесса.
Существующие универсальные языки моделирования GPSS, Симула, Симскрипт и другие в сочетании с универсальными языками программирования позволяют создавать специализированные пакеты моделирующих программ (см. рис.8 ) для решения таких важных практических задач, как моделирование и управление дискретным производственным процессом, процессом обработки информации вычислительной системы, транспортными потоками и др. Эти пакеты сочетают в себе достоинства языков программирования и моделирования, но в более узких специальных областях.
Самым ярким представителем языков моделирования является язык GPSS, что в переводе с английского означает "общецелевая система моделирования". Этот язык высокого уровня позволяет моделировать поведение вероятностных систем, например систем массового обслуживания, вычислительных. Само по себе моделирование производится путем изменения состояния моделируемого объекта и сводится к генерации этих изменений, обычно случайных. Например, моделируя процесс обслуживания в магазине, достаточно генерировать случайные времена появления покупателей и окончание их обслуживания.
В соответствии с этим язык GPSS имеет операторы: GENERATE - генерировать и ADVANCE - задерживать (например, на время обслуживания). Числа, которые следуют за этими операторами, характеризуют свойства случайных процессов, которые моделируются. Например, GENERATE 20, 10, 10, 25, 2 означает, что надо генерировать поток клиентов, приходящих через случайные интервалы времени (20+/-10), например, секунд (т.е. интервал времени между появлением двух клиентов случаен и распределен в пределах от 10 до 30с), причем первый клиент приходит в случайный момент в интервале от 0 до 20с от начала работы (0=10-10; 20=10+10); всего должно быть смоделировано появление 25 клиентов, имеющих два приоритета - первый, идущих без очереди, и второй. Процесс обслуживания характеризуется временем пребывания клиента на месте обслуживания и моделируется оператором задержки. Например, ADVANCE 12, 8 означает, что на обслуживание клиента требуется случайное время, распределенное в интервале 12+/-8с, т.е. от 4 до 20с.
В результате такого моделирования можно определить такие важные характеристики моделируемой системы, как, например, ее пропускную способность, длину очередей, среднее время пребывания клиентов в системе и многое, что очень важно знать на стадии проектирования или анализа вероятностной системы. При этом обычно все интересующие характеристики процесса обслуживания вычисляются автоматически и остается лишь запросить нужные вам показатели моделируемого процесса.
Существующие универсальные языки моделирования GPSS, Симула, Симскрипт и другие в сочетании с универсальными языками программирования позволяют создавать специализированные пакеты моделирующих программ (см. рис.8 ) для решения таких важных практических задач, как моделирование и управление дискретным производственным процессом, процессом обработки информации вычислительной системы, транспортными потоками и др. Эти пакеты сочетают в себе достоинства языков программирования и моделирования, но в более узких специальных областях.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
ЯЗЫКИ ОПЕРАЦИОННОЙ СИСТЕМЫ
Операционная система (ОС), на которую возлагаются функции координации работы компьютера, выступает в качестве посредника при общении человека и ЭВМ. Она имеет собственный язык - язык команд (его называют обычно языком управления заданиями), с помощью которого пользователь может управлять некоторыми функциями ОС, например указать, что делать с задачей, где получить необходимую информацию. Но ОС открывает пользователю новые сервисные возможности, значительно облегчающие ему работу с компьютером. Так, программа текстового редактора, заложенная в ОС персонального компьютера, позволяет пользователю редактировать любой текст при подготовке его к печати. Несложный язык редактирования осваивается без труда и почти мгновенно. Аналогичный язык имеет ОС и для построения диаграмм и графиков в программе графического редактора.
Уместно сказать, что если возможности компьютера по решению конкретных задач можно условно назвать его "образованностью", то сервисные возможности, заложенные в ОС, естественно назвать "воспитанностью". Так что современный компьютер - это не только образованный, но и воспитанный собеседник. Но чтобы получить пользу (и удовольствие) от общения с ним, надо прежде всего иметь представление о принципах организации языков общения с компьютером. Как показано выше, принципы их организации не слишком сложны, хотя овладение самими языками требует некоторых усилий.
***
- Послушайте, шеф - обратился Поль к Мегрэ.- Как вы относитесь к показаниям парикмахера, заведение которого находится напротив гостиницы? Не кажется ли вам, что он слишком уж много видел? Создается впечатление, что он только и делал, что наблюдал за дверями гостиницы?
- Вы думаете, что нас водят за нос? Это в принципе возможно. И было бы очень интересно узнать, кому это нужно, ведь именно через него мы выйдем на убийцу. Но как убедиться, что он врет? Докажите мне это, а я уж вытрясу из него все, что нужно.
- Доказать едва ли смогу, а вот убедить вас попробую. И вот как. Смоделируем работу парикмахерской и посмотрим, было ли у него столько времени, чтобы разглядывать того, кто заходит в гостиницу.
- Что ж,- усмехнулся Мегрэ,- это уже конкретное предложение по применению компьютера в нашем следствии. Валяйте, но только не темните и выкладывайте все предпосылки. Я ведь хорошо понимаю, что для эффективного моделирования нужно иметь точную исходную информацию об объекте.
- Хорошо. Будем моделировать моменты прихода клиентов и время и обслуживания.
- А откуда вы узнаете, когда именно приходят эти клиенты и сколько нужно времени, чтобы их обслужить?- разочарованно заметил Мегрэ.- Не морочьте мне голову! Такой информации вам никогда и нигде не получить!
- Моменты появления клиентов в парикмахерской естественно считать случайными. А вот свойства этой случайности можно определить, исходя из здравого смысла, например задавая ее среднее значение и интервал, в границах которого может изменяться эта случайная величина. Вы можете сказать, сколько примерно времени уходит на обработку Вашей головы?
- Ну, минут пятнадцать.
- А в каком интервале может изменяться эта случайная величина?
- Это зависит от парикмахера. Думаю, от 10 до 20мин. А какое это имеет отношение, ведь я не обслуживался у этого парня?
- Но ведь все парикмахеры работают примерно одинаково. Поэтому среднее время обслуживания и его разброс можно считать одинаковыми для всех. Теперь о моменте появления клиентов. В налоговом управлении я узнал, что этот парикмахер принимает клиентов 25 в день. Так что можно считать, что они заходят в среднем через 18 мин, а разброс, ну скажем, плюс-минус 6мин.
- Значит, интервал между клиентами от 12 до 24мин. Что ж, это вполне возможно.
- Вот и все, что нужно для составления программы моделирования. Ну как, шеф, правдоподобны исходные данные для модели?
- Пожалуй, да, хотя я не исключаю возможности прихода двух клиентов одновременно,- заметил Мегрэ.
- Но сознайтесь, это редкое событие. Ведь в парикмахерскую обычно ходят поодиночке. А мы моделируем средний режим работы этого заведения - такие редкие события не играют существенной роли.
- Ну ладно. Уговорили. Как же теперь это моделировать на компьютере? - спросил Мегрэ.
- Нужно составить программу моделирования. Для этого больше подойдет язык GPSS. Используем два основных оператора этого языка: GENERATE и ADVANCE. Первый моделирует моменты появления клиентов (точнее, интервалы между их появлением), а второй - время обслуживания клиентов. Числа, стоящие вслед за операторами, определяют свойства потока клиентов и времени обслуживания. Так,
GENERATE 18, 6, 10, 25
означает, что клиенты появляются в среднем через 18мин., причем сам момент появления случаен и находится в интервале (18+/-6)мин., т.е. от 12 до 24мин., которые мы согласовали. Первый клиент приходит через 10мин. после открытия парикмахерской в интервале (10++/-6)мин., т.е. от 4 до 16мин. Последняя цифра определяет число клиентов, которые нужно моделировать (это нагрузка парикмахерской за один день). Приоритетов учитывать не будем.
- Что, этим будет моделироваться работа одного дня?- спросил Мегрэ.- Но ведь один день ничего не определяет.
- Но определяет загрузку парикмахера в этот день,- перебил его Поль.- А потом сможем и повторить моделирование для любого числа дней. Но начнем с одного дня работы.
Теперь об обслуживании. Оно моделируется оператором задержки так:
ADVANCE 16, 4
т.е. время обслуживания случайное (16+/-4)мин. - от 12 до 20 мин., а в среднем 16мин.
- И это все. Неужели так просто? - изумился Мегрэ.
- Не торопитесь. Если бы язык был предназначен только для моделирования таких простых задач, то этим можно было бы ограничиться. Но язык GPSS универсальный и поэтому обладает избыточностью, необходимой для моделирования других систем. Поэтому программа моделирования кроме указанных операторов будет содержать и другие, устраняющие избыточность языка. Вот эта программа. И Поль быстро написал следующее и прокомментировал:
SIMULATE 'Нужно моделировать (симулировать) программу, а не просто просмотреть ее, например для отыскания компьютером ошибок программирования
GENERATE 18, 6, 10, 25 'Появление клиентов (этот оператор мы уже рассматривали выше)
QUEUE 1 'Стать в очередь #1. С помощью этого оператора пришедший клиент присоединяется к очереди #1. Здесь других нет, но большое число очередей предусмотрено в языке GPSS. Вот и приходится нумеровать одну очередь, хотя других нет и в помине. Это и есть устранение избыточности языка.
SEIZE A 'Занять место А (свободное кресло первым клиентом из очереди)
DEPART 1 'Покинуть очередь #1. Этот оператор логично было бы поставить перед предыдущим (сначала покинуть очередь, а затем занять кресло). Но так уж устроен язык GPSS. Так ему проще.
ADVANCE 16, 4 'Задержка на обслуживание (мы уже знаем этот оператор)
RELEASE A 'Освободить место А (освобождение парикмахера)
TERMINATE 'Завершить (Уход клиента из парикмахерской. Это не формализм, а важный момент ухода клиента из системы. В другой задаче этот клиент мог бы отправиться на следующее место обслуживания, например к маникюрше. Здесь этого не нужно).
- Вот и все! Теперь осталось ввести эту программу в память компьютера, вызвать транслятор с языка GPSS и перевести с его помощью программу на машинный язык. Полученная программа и будет выполняться компьютером.
Поль быстро набрал на клавиатуре программу и запустил ее. Через несколько секунд на экране дисплея появилось:
472 минуты 'Это означает, что с открытия парикмахерской до момента ухода 25-го клиента прошло 7ч 52мин.
Загрузка А: 86% 'Парикмахер был загружен 86% своего времени, а остальные 14% ожидал клиента и мог разглядывать вход в гостиницу. На это у него было примерно 66мин.
Максимальная очередь: 1 'Очередь не превышала одного человека
Среднее время ожидания обслуживания: 5, 13мин. и т.д. 'В среднем клиент ожидал обслуживания 5мин. 8с.
- Все эти данные вычисляются программой автоматически, и их не нужно программировать,- заметил Поль.
- Из всего этого самое интересное - 66мин. свободного времени парикмахера. Это чуть больше часа. А для наблюдения всех приведенных им сведений нужно не менее 3 часов. Но ведь день на день не приходится и, может быть, именно в тот день у него были эти 3 часа. Можно ли определить, как часто ему удается отдыхать три часа в день?
- Можно. Будем "крутить" программу одного дня до тех пор, пока свободное время не составит 30% от рабочего дня или больше.
Поль добавил несколько операторов к программе. Через несколько минут компьютер остановился и выдал на экран дисплея:
ПРОГОН #102
- Это что же,- изумился Мегрэ,- из 100 дней лишь один день он мог 3 часа наблюдать за гостиницей?! Ему можно верить с вероятностью лишь в одну сотую! Это значит, что его показания лживы.
- Выходит так,- согласился Поль.
- Немедленно вызовите мне его и выведите на печать результаты моделирования. Не думаю, что ему удастся долго запираться перед такими аргументами.
- Слушаю, шеф. Только не слишком надейтесь, что он поверит компьютеру.
- Не поверит компьютеру - поверит мне. Ведь допрашивать его будет не компьютер,- усмехнулся Мегрэ.
Операционная система (ОС), на которую возлагаются функции координации работы компьютера, выступает в качестве посредника при общении человека и ЭВМ. Она имеет собственный язык - язык команд (его называют обычно языком управления заданиями), с помощью которого пользователь может управлять некоторыми функциями ОС, например указать, что делать с задачей, где получить необходимую информацию. Но ОС открывает пользователю новые сервисные возможности, значительно облегчающие ему работу с компьютером. Так, программа текстового редактора, заложенная в ОС персонального компьютера, позволяет пользователю редактировать любой текст при подготовке его к печати. Несложный язык редактирования осваивается без труда и почти мгновенно. Аналогичный язык имеет ОС и для построения диаграмм и графиков в программе графического редактора.
Уместно сказать, что если возможности компьютера по решению конкретных задач можно условно назвать его "образованностью", то сервисные возможности, заложенные в ОС, естественно назвать "воспитанностью". Так что современный компьютер - это не только образованный, но и воспитанный собеседник. Но чтобы получить пользу (и удовольствие) от общения с ним, надо прежде всего иметь представление о принципах организации языков общения с компьютером. Как показано выше, принципы их организации не слишком сложны, хотя овладение самими языками требует некоторых усилий.
***
- Послушайте, шеф - обратился Поль к Мегрэ.- Как вы относитесь к показаниям парикмахера, заведение которого находится напротив гостиницы? Не кажется ли вам, что он слишком уж много видел? Создается впечатление, что он только и делал, что наблюдал за дверями гостиницы?
- Вы думаете, что нас водят за нос? Это в принципе возможно. И было бы очень интересно узнать, кому это нужно, ведь именно через него мы выйдем на убийцу. Но как убедиться, что он врет? Докажите мне это, а я уж вытрясу из него все, что нужно.
- Доказать едва ли смогу, а вот убедить вас попробую. И вот как. Смоделируем работу парикмахерской и посмотрим, было ли у него столько времени, чтобы разглядывать того, кто заходит в гостиницу.
- Что ж,- усмехнулся Мегрэ,- это уже конкретное предложение по применению компьютера в нашем следствии. Валяйте, но только не темните и выкладывайте все предпосылки. Я ведь хорошо понимаю, что для эффективного моделирования нужно иметь точную исходную информацию об объекте.
- Хорошо. Будем моделировать моменты прихода клиентов и время и обслуживания.
- А откуда вы узнаете, когда именно приходят эти клиенты и сколько нужно времени, чтобы их обслужить?- разочарованно заметил Мегрэ.- Не морочьте мне голову! Такой информации вам никогда и нигде не получить!
- Моменты появления клиентов в парикмахерской естественно считать случайными. А вот свойства этой случайности можно определить, исходя из здравого смысла, например задавая ее среднее значение и интервал, в границах которого может изменяться эта случайная величина. Вы можете сказать, сколько примерно времени уходит на обработку Вашей головы?
- Ну, минут пятнадцать.
- А в каком интервале может изменяться эта случайная величина?
- Это зависит от парикмахера. Думаю, от 10 до 20мин. А какое это имеет отношение, ведь я не обслуживался у этого парня?
- Но ведь все парикмахеры работают примерно одинаково. Поэтому среднее время обслуживания и его разброс можно считать одинаковыми для всех. Теперь о моменте появления клиентов. В налоговом управлении я узнал, что этот парикмахер принимает клиентов 25 в день. Так что можно считать, что они заходят в среднем через 18 мин, а разброс, ну скажем, плюс-минус 6мин.
- Значит, интервал между клиентами от 12 до 24мин. Что ж, это вполне возможно.
- Вот и все, что нужно для составления программы моделирования. Ну как, шеф, правдоподобны исходные данные для модели?
- Пожалуй, да, хотя я не исключаю возможности прихода двух клиентов одновременно,- заметил Мегрэ.
- Но сознайтесь, это редкое событие. Ведь в парикмахерскую обычно ходят поодиночке. А мы моделируем средний режим работы этого заведения - такие редкие события не играют существенной роли.
- Ну ладно. Уговорили. Как же теперь это моделировать на компьютере? - спросил Мегрэ.
- Нужно составить программу моделирования. Для этого больше подойдет язык GPSS. Используем два основных оператора этого языка: GENERATE и ADVANCE. Первый моделирует моменты появления клиентов (точнее, интервалы между их появлением), а второй - время обслуживания клиентов. Числа, стоящие вслед за операторами, определяют свойства потока клиентов и времени обслуживания. Так,
GENERATE 18, 6, 10, 25
означает, что клиенты появляются в среднем через 18мин., причем сам момент появления случаен и находится в интервале (18+/-6)мин., т.е. от 12 до 24мин., которые мы согласовали. Первый клиент приходит через 10мин. после открытия парикмахерской в интервале (10++/-6)мин., т.е. от 4 до 16мин. Последняя цифра определяет число клиентов, которые нужно моделировать (это нагрузка парикмахерской за один день). Приоритетов учитывать не будем.
- Что, этим будет моделироваться работа одного дня?- спросил Мегрэ.- Но ведь один день ничего не определяет.
- Но определяет загрузку парикмахера в этот день,- перебил его Поль.- А потом сможем и повторить моделирование для любого числа дней. Но начнем с одного дня работы.
Теперь об обслуживании. Оно моделируется оператором задержки так:
ADVANCE 16, 4
т.е. время обслуживания случайное (16+/-4)мин. - от 12 до 20 мин., а в среднем 16мин.
- И это все. Неужели так просто? - изумился Мегрэ.
- Не торопитесь. Если бы язык был предназначен только для моделирования таких простых задач, то этим можно было бы ограничиться. Но язык GPSS универсальный и поэтому обладает избыточностью, необходимой для моделирования других систем. Поэтому программа моделирования кроме указанных операторов будет содержать и другие, устраняющие избыточность языка. Вот эта программа. И Поль быстро написал следующее и прокомментировал:
SIMULATE 'Нужно моделировать (симулировать) программу, а не просто просмотреть ее, например для отыскания компьютером ошибок программирования
GENERATE 18, 6, 10, 25 'Появление клиентов (этот оператор мы уже рассматривали выше)
QUEUE 1 'Стать в очередь #1. С помощью этого оператора пришедший клиент присоединяется к очереди #1. Здесь других нет, но большое число очередей предусмотрено в языке GPSS. Вот и приходится нумеровать одну очередь, хотя других нет и в помине. Это и есть устранение избыточности языка.
SEIZE A 'Занять место А (свободное кресло первым клиентом из очереди)
DEPART 1 'Покинуть очередь #1. Этот оператор логично было бы поставить перед предыдущим (сначала покинуть очередь, а затем занять кресло). Но так уж устроен язык GPSS. Так ему проще.
ADVANCE 16, 4 'Задержка на обслуживание (мы уже знаем этот оператор)
RELEASE A 'Освободить место А (освобождение парикмахера)
TERMINATE 'Завершить (Уход клиента из парикмахерской. Это не формализм, а важный момент ухода клиента из системы. В другой задаче этот клиент мог бы отправиться на следующее место обслуживания, например к маникюрше. Здесь этого не нужно).
- Вот и все! Теперь осталось ввести эту программу в память компьютера, вызвать транслятор с языка GPSS и перевести с его помощью программу на машинный язык. Полученная программа и будет выполняться компьютером.
Поль быстро набрал на клавиатуре программу и запустил ее. Через несколько секунд на экране дисплея появилось:
472 минуты 'Это означает, что с открытия парикмахерской до момента ухода 25-го клиента прошло 7ч 52мин.
Загрузка А: 86% 'Парикмахер был загружен 86% своего времени, а остальные 14% ожидал клиента и мог разглядывать вход в гостиницу. На это у него было примерно 66мин.
Максимальная очередь: 1 'Очередь не превышала одного человека
Среднее время ожидания обслуживания: 5, 13мин. и т.д. 'В среднем клиент ожидал обслуживания 5мин. 8с.
- Все эти данные вычисляются программой автоматически, и их не нужно программировать,- заметил Поль.
- Из всего этого самое интересное - 66мин. свободного времени парикмахера. Это чуть больше часа. А для наблюдения всех приведенных им сведений нужно не менее 3 часов. Но ведь день на день не приходится и, может быть, именно в тот день у него были эти 3 часа. Можно ли определить, как часто ему удается отдыхать три часа в день?
- Можно. Будем "крутить" программу одного дня до тех пор, пока свободное время не составит 30% от рабочего дня или больше.
Поль добавил несколько операторов к программе. Через несколько минут компьютер остановился и выдал на экран дисплея:
ПРОГОН #102
- Это что же,- изумился Мегрэ,- из 100 дней лишь один день он мог 3 часа наблюдать за гостиницей?! Ему можно верить с вероятностью лишь в одну сотую! Это значит, что его показания лживы.
- Выходит так,- согласился Поль.
- Немедленно вызовите мне его и выведите на печать результаты моделирования. Не думаю, что ему удастся долго запираться перед такими аргументами.
- Слушаю, шеф. Только не слишком надейтесь, что он поверит компьютеру.
- Не поверит компьютеру - поверит мне. Ведь допрашивать его будет не компьютер,- усмехнулся Мегрэ.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
6. ВСЕМ МИРОМ (ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ)
СПЕЦИАЛИЗАЦИЯ ПРОТИВ УНИВЕРСАЛЬНОСТИ
До сих пор мы рассматривали универсальные ЭВМ, создаваемые для решения очень широкого круга задач обработки информации. Идея универсальности ЭВМ с изменяемой программой была настолько нова и необычна, что на первых порах развития вычислительной техники проектировщики и думать об ином не хотели. Да и компьютеров было слишком мало, чтобы специализировать их на какие-то конкретные задачи.
По мере применения компьютеров для решения разнообразных задач, число которых росло чрезвычайно быстро, стало ясно: универсальность это хорошо, но и некоторая специализация неплохо, а иногда и лучше универсальности. Дело в том, что задачи, решаемые компьютером, довольно естественно разбиваются на вычислительные задачи и задачи моделирования. Специфика их и породила различные языки программирования.
Всякая универсальность хороша только своей универсальностью и не более. А с решением конкретных задач специализированная ЭВМ справится всегда лучше, ведь она создана для решения этих задач. Очевидно, что и при обработке информации есть важные задачи, которые требуют для своего решения специальных компьютеров. Это не значит, что эти задачи не могут решаться на универсальной ЭВМ, но сделает она это хуже, чем специализированная. Именно это обстоятельство и заставляет создавать специализированные компьютеры, которые обеспечивают эффективное решение задач определенного класса.
Но всякая специализация приводит к расширению одной возможности за счет сужения других. Вспомним известный афоризм Козьмы Пруткова: "Всякий специалист подобен флюсу - его полнота односторонняя". Именно такая односторонность и характерна для специализированных ЭВМ. Какие же возможности расширяют они? Их много. Например, необходимость распределения больших вычислительных мощностей между многими пользователями привела к созданию вычислительных систем коллективного пользования, которые предоставляют каждому пользователю возможность выходить со своего пульта на высокопроизводительную машину. Эта система отличается от обычной ЭВМ высокой производительностью, большим числом устройств ввода-вывода и специальными средствами разделения машинного времени между пользователями, чтобы они не мешали друг другу. Но особенно много вычислительных систем создано для решения информационно-поисковых задач. Их так и называют - информационно-поисковые системы (ИПС). Они отличаются большой памятью и оперативными средствами доступа к содержимому. Для управления реальными объектами (например, технологическими процессами) также необходимы специализированные компьютерные системы. К ним предъявляются свои требования: высокая производительность и большая надежность.
Всякая четко сформулированная цель специализирует компьютер. Грубо говоря, сколько целей, столько и должно быть специализированных компьютеров. Но это, пожалуй, слишком расточительно. Поэтому стоит говорить лишь об основных целях, которые определяют облик компьютера. А их немного ... Всего две.
Все задачи, решаемые человечеством, условно и довольно грубо могут быть разделены на два больших класса: задачи, которые надо решить очень быстро, и задачи, которые надо решить очень надежно, без ошибок. Это, конечно, не значит, что при быстром решении не нужна надежность, а на надежное решение можно тратить очень много времени. Просто в разных задачах эти две противоречивые цели играют разную роль: в одних основным является время решения, а в других - надежность.
Задачи первого класса требуют большой производительности вычислительных систем, а второго - высокой надежности. Что же это за задачи?
СПЕЦИАЛИЗАЦИЯ ПРОТИВ УНИВЕРСАЛЬНОСТИ
До сих пор мы рассматривали универсальные ЭВМ, создаваемые для решения очень широкого круга задач обработки информации. Идея универсальности ЭВМ с изменяемой программой была настолько нова и необычна, что на первых порах развития вычислительной техники проектировщики и думать об ином не хотели. Да и компьютеров было слишком мало, чтобы специализировать их на какие-то конкретные задачи.
По мере применения компьютеров для решения разнообразных задач, число которых росло чрезвычайно быстро, стало ясно: универсальность это хорошо, но и некоторая специализация неплохо, а иногда и лучше универсальности. Дело в том, что задачи, решаемые компьютером, довольно естественно разбиваются на вычислительные задачи и задачи моделирования. Специфика их и породила различные языки программирования.
Всякая универсальность хороша только своей универсальностью и не более. А с решением конкретных задач специализированная ЭВМ справится всегда лучше, ведь она создана для решения этих задач. Очевидно, что и при обработке информации есть важные задачи, которые требуют для своего решения специальных компьютеров. Это не значит, что эти задачи не могут решаться на универсальной ЭВМ, но сделает она это хуже, чем специализированная. Именно это обстоятельство и заставляет создавать специализированные компьютеры, которые обеспечивают эффективное решение задач определенного класса.
Но всякая специализация приводит к расширению одной возможности за счет сужения других. Вспомним известный афоризм Козьмы Пруткова: "Всякий специалист подобен флюсу - его полнота односторонняя". Именно такая односторонность и характерна для специализированных ЭВМ. Какие же возможности расширяют они? Их много. Например, необходимость распределения больших вычислительных мощностей между многими пользователями привела к созданию вычислительных систем коллективного пользования, которые предоставляют каждому пользователю возможность выходить со своего пульта на высокопроизводительную машину. Эта система отличается от обычной ЭВМ высокой производительностью, большим числом устройств ввода-вывода и специальными средствами разделения машинного времени между пользователями, чтобы они не мешали друг другу. Но особенно много вычислительных систем создано для решения информационно-поисковых задач. Их так и называют - информационно-поисковые системы (ИПС). Они отличаются большой памятью и оперативными средствами доступа к содержимому. Для управления реальными объектами (например, технологическими процессами) также необходимы специализированные компьютерные системы. К ним предъявляются свои требования: высокая производительность и большая надежность.
Всякая четко сформулированная цель специализирует компьютер. Грубо говоря, сколько целей, столько и должно быть специализированных компьютеров. Но это, пожалуй, слишком расточительно. Поэтому стоит говорить лишь об основных целях, которые определяют облик компьютера. А их немного ... Всего две.
Все задачи, решаемые человечеством, условно и довольно грубо могут быть разделены на два больших класса: задачи, которые надо решить очень быстро, и задачи, которые надо решить очень надежно, без ошибок. Это, конечно, не значит, что при быстром решении не нужна надежность, а на надежное решение можно тратить очень много времени. Просто в разных задачах эти две противоречивые цели играют разную роль: в одних основным является время решения, а в других - надежность.
Задачи первого класса требуют большой производительности вычислительных систем, а второго - высокой надежности. Что же это за задачи?
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
ЗАЧЕМ НУЖНА ВЫСОКАЯ ПРОИЗВОДИТЕЛЬНОСТЬ?
Высокая скорость вычислений нужна для удовлетворения двух насущных потребностей человечества - решения сложных вычислительных задач и обработки больших потоков информации.
К первому классу сложных вычислительных задач относятся такие важные задачи, как составление народнохозяйственных планов, решение научных задач, возникающих в аэродинамике (например, при исследовании процесса обтекания газом профиля самолета или ракеты), в сейсмологии (например, при определении строения Земли по результатам сейсмических наблюдений), в метеорологии (например, при составлении прогнозов поведения атмосферы), в физике плазмы и т.д. Все эти задачи требуют для своего решения огромного количества "вычислительных операций - порядка 1e10-1e12 на задачу. Обычный компьютер (производительностью примерно 1e6 операций в секунду) решал бы эти задачи годами и десятилетиями. Но ответ нужен сейчас, сегодня, через час! Это и заставляет создавать СУПЕРКОМПЬЮТЕРЫ - так называют ЭВМ производительностью не менее чем 100млн. операций в секунду. Каждый такой суперкомпьютер имеет вычислительную мощность, более чем в 100 раз превышающую мощность обычного компьютера. Очевидно, что и устроен он должен быть иначе.
Другой источник задач, требующих больших вычислительных мощностей, порожден потребностью обрабатывать мощные потоки данных.
Эти потоки данных порождаются различными источниками информации. Но, пожалуй, самым мощным источником являются многочисленные датчики информации, расположенные на изучаемом или управляемом объекте, например в космосе, атмосфере, на земле и под ней, при научном эксперименте, на производстве, в больнице и т.д. Успех обычно зависит от быстроты обработки этих данных, которые следует перерабатывать со скоростью их поступления, в том темпе, в котором они поступают.
Современные средства сбора информации обладают огромной производительностью. Именно поэтому необходимо создавать вычислительные средства, способные перерабатывать потоки данных в режиме реального времени - в темпе их поступления, иначе необработанные данные будут неограниченно накапливаться и обесцениваться ввиду их неизбежного старения (особенно для задач оперативного управления). Вычислительные системы для обработки потоков данных называют системами реального времени, подчеркивая их зависимость от окружающей реальности, от внешней среды.
Если работа обычного компьютера определяется только его программой, то работа вычислительных систем реального времени зависит еще и от потока данных, и прежде всего от интенсивности этого потока, который нужно обрабатывать со скоростью его поступления в реальном времени. Именно для этого нужна высокая производительность суперкомпьютера - ему приходится "перемалывать" огромные потоки информации, поступающие от многочисленных источников. Смело можно сказать, что на любой суперкомпьютер найдется такой поток данных, с которым он не справится. Поэтому так важно создание вычислительных систем высокой и сверхвысокой производительности для обработки данных в реальном масштабе времени.
Высокая скорость вычислений нужна для удовлетворения двух насущных потребностей человечества - решения сложных вычислительных задач и обработки больших потоков информации.
К первому классу сложных вычислительных задач относятся такие важные задачи, как составление народнохозяйственных планов, решение научных задач, возникающих в аэродинамике (например, при исследовании процесса обтекания газом профиля самолета или ракеты), в сейсмологии (например, при определении строения Земли по результатам сейсмических наблюдений), в метеорологии (например, при составлении прогнозов поведения атмосферы), в физике плазмы и т.д. Все эти задачи требуют для своего решения огромного количества "вычислительных операций - порядка 1e10-1e12 на задачу. Обычный компьютер (производительностью примерно 1e6 операций в секунду) решал бы эти задачи годами и десятилетиями. Но ответ нужен сейчас, сегодня, через час! Это и заставляет создавать СУПЕРКОМПЬЮТЕРЫ - так называют ЭВМ производительностью не менее чем 100млн. операций в секунду. Каждый такой суперкомпьютер имеет вычислительную мощность, более чем в 100 раз превышающую мощность обычного компьютера. Очевидно, что и устроен он должен быть иначе.
Другой источник задач, требующих больших вычислительных мощностей, порожден потребностью обрабатывать мощные потоки данных.
Эти потоки данных порождаются различными источниками информации. Но, пожалуй, самым мощным источником являются многочисленные датчики информации, расположенные на изучаемом или управляемом объекте, например в космосе, атмосфере, на земле и под ней, при научном эксперименте, на производстве, в больнице и т.д. Успех обычно зависит от быстроты обработки этих данных, которые следует перерабатывать со скоростью их поступления, в том темпе, в котором они поступают.
Современные средства сбора информации обладают огромной производительностью. Именно поэтому необходимо создавать вычислительные средства, способные перерабатывать потоки данных в режиме реального времени - в темпе их поступления, иначе необработанные данные будут неограниченно накапливаться и обесцениваться ввиду их неизбежного старения (особенно для задач оперативного управления). Вычислительные системы для обработки потоков данных называют системами реального времени, подчеркивая их зависимость от окружающей реальности, от внешней среды.
Если работа обычного компьютера определяется только его программой, то работа вычислительных систем реального времени зависит еще и от потока данных, и прежде всего от интенсивности этого потока, который нужно обрабатывать со скоростью его поступления в реальном времени. Именно для этого нужна высокая производительность суперкомпьютера - ему приходится "перемалывать" огромные потоки информации, поступающие от многочисленных источников. Смело можно сказать, что на любой суперкомпьютер найдется такой поток данных, с которым он не справится. Поэтому так важно создание вычислительных систем высокой и сверхвысокой производительности для обработки данных в реальном масштабе времени.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
КАК ПОВЫСИТЬ БЫСТРОДЕЙСТВИЕ?
Очевидно, что производительность компьютера можно повысить, увеличив скорость работы его процессора. И в этом направлении ведутся интенсивные работы. Но каждый шаг в этом направлении дается с большим трудом. Действительно, быстродействие процессора ограничено скоростью распространения электрического сигнала, которая не может быть больше скорости света (300тыс.км/с). Следовательно, для повышения его производительности надо уменьшить размеры процессора. Но и их нельзя делать произвольно малыми. Современная микроэлектронная технология позволяет сделать процессор на кристалле в несколько квадратных миллиметров, но... не менее. Теоретические расчеты показывают, что с учетом дальнейшего развития микроэлектронной технологии производительность процессора не может быть более 300млн. операций в секунду. Это теоретический предел! А сейчас коммерческие процессоры достигают производительности в 1-10млн. операций в секунду. И именно на них следует ориентироваться при создании суперкомпьютера.
Как же, располагая сравнительно "медленными" процессорами, достичь сверхвысокой производительности вычислительных систем? Ответ здесь один...
Очевидно, что производительность компьютера можно повысить, увеличив скорость работы его процессора. И в этом направлении ведутся интенсивные работы. Но каждый шаг в этом направлении дается с большим трудом. Действительно, быстродействие процессора ограничено скоростью распространения электрического сигнала, которая не может быть больше скорости света (300тыс.км/с). Следовательно, для повышения его производительности надо уменьшить размеры процессора. Но и их нельзя делать произвольно малыми. Современная микроэлектронная технология позволяет сделать процессор на кристалле в несколько квадратных миллиметров, но... не менее. Теоретические расчеты показывают, что с учетом дальнейшего развития микроэлектронной технологии производительность процессора не может быть более 300млн. операций в секунду. Это теоретический предел! А сейчас коммерческие процессоры достигают производительности в 1-10млн. операций в секунду. И именно на них следует ориентироваться при создании суперкомпьютера.
Как же, располагая сравнительно "медленными" процессорами, достичь сверхвысокой производительности вычислительных систем? Ответ здесь один...
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
РАСПАРАЛЛЕЛИВАНИЕ
Это одновременно решение разных частей одной и той же задачи. Пусть нужно решить задачу, требующую N=1e10 машинных операций, за Т=100с. Очевидно, что для этого необходимо взять одну ЭВМ производительностью N/T операций в секунду. Но таких машин не бывает. Как же быть? Только распараллеливать! Пусть для этого мы располагаем процессорами производительностью V=1e6 операций в секунду. Тогда для решения этой задачи в указанное время нужно как минимум N/(TV)=100 таких процессоров, если, разумеется, задача допускает распараллеливание, т.е. ее можно разбить на независимые части, которые будут решаться одновременно на разных процессорах. Если это удастся сделать и загрузить решением одновременно все 100 процессоров, т.е. получить производительность 1e8 операций в секунду, то наша задача будет решена за требуемые 100с. Но для этого, как видно, нужно суметь распараллелить процесс решения задачи так, чтобы все 100 процессоров работали без простоев. Это редко когда удается и лишь для задач, составленных из независимых подзадач (для нашего примера таких подзадач должно быть 100 и все они должны быть одинаковыми, т.е. иметь трудоемкость по 1e8 операций).
Очевидно, что в других случаях понадобится еще больше процессоров. Причем вся трудность состоит в том, чтобы запрограммировать сам вычислительный процесс - указать, когда и какую часть задачи должен решать каждый процессор, откуда он должен получить исходную информацию (данные) и куда отправить полученный результат. От качества такой программы зависит эффективность решения задачи, т.е. требуемый ресурс - число процессоров, необходимое для решения поставленной задачи в заданное время.
Но не следует думать, что составить такую программу очень сложно. Дело в том, что время решения задачи зависит от загрузки этой задачей всех имеющихся в системе процессоров. И, как не странно, рецепт создания программы управления вычислительным процессором довольно прост. Надо стараться максимально загрузить каждый процессор, а значит, минимизировать его простои и работу на решение вспомогательных задач (например, на обмены информацией между процессорами, которые, вообще говоря, неизбежны). Так обычно и поступают. Поэтому все искусство программирования при решении задач на МУЛЬТИПРОЦЕССОРНОЙ вычислительной СИСТЕМЕ (именно так называют систему со многими процессорами) заключается в обеспечении минимальных временных затрат на простои процессоров и обмены данными между ними.
Структура такого мультипроцессора может быть самой разнообразной, более того, она может изменяться в процессе решения. Но прежде всего она зависит от решаемой задачи. Если задача легко членится на слабозависимые части, то следует применять так называемую параллельную обработку, которая обеспечивается набором из параллельно работающих процессоров (рис.9). Система из n взаимосвязанных процессоров (Пр1... Пр n) обрабатывает n потоков данных x1, ..., xn, преобразуемых в n потоков результатов yi, ..., yn. Связи между процессорами позволяют им обмениваться необходимой промежуточной информацией. Такую систему параллельной обработки обозначают часто ОКМД - Одиночный поток Команд (k) и Множественный поток Данных (xi, ..., xn). Одиночность потока команд заключается в том, что все процессоры выполняют одновременно только одну команду, затем другую и т.д. (на рис.9 каналы передачи команд изображены косыми стрелками).
Рис.9
Эту схему обработки часто называют векторной, а такой мультипроцессор - векторным процессором, так как с его помощью очень удобно обрабатывать n-мерные векторы, например траекторию движения летательного аппарата (в этом случае n=3, если описывается движение его центра тяжести, и n=6, если описывается движение твердого тела).
Такой способ распараллеливания естественно назвать РАСПАРАЛЛЕЛИВАНИЕМ В ПРОСТРАНСТВЕ, так как разные части одной и той же задачи решаются на разных процессорах, т.е. распределены в пространстве. Лучше всего этим способом решаются задачи со слабо связанными частями, что требует небольшого числа обменов информацией между процессорами и поэтому незначительно снижает производительность обработки, приближая ее к теоретической. А теоретическая производительность равна сумме производительностей всех процессоров системы. Она реализуется лишь для задач, все n частей которой не связаны друг с другом и имеют одинаковую трудоемкость.
Но очевидно, что далеко не все задачи имеют такую слабосвязанную структуру. Моделью программы задачи с сильносвязанной структурой является такая последовательность операторов, при которой каждый оператор исходные данные получает от предыдущего, а результат обработки направляет следующему оператору. Здесь ничего в пространстве распараллелить нельзя. Как же быть?
Если такую задачу нужно решать только один раз, то ничего не поделаешь и распараллелить ее решение не удастся. Но если ее надо решать многократно при различных исходных данных, то распараллеливать можно, но... во времени.
Идея РАСПАРАЛЛЕЛИВАНИЯ ВО ВРЕМЕНИ известна давно и широко используется в массовом производстве. Это идея конвейере (рис. 10). На вход x подается поток исходных данных (задач) и каждый i-й процессор работает по своему потоку команд ki. Задача, таким образом, решается сначала на первом процессоре, затем на втором и т.д. А в это время на первом решается другая задача при других начальных условиях и т.д. В результате одновременно в конвейере решается столько задач (с различными начальными условиями), сколько процессоров в этом конвейере. При этом каждая задача в процессе решения продвигается по конвейеру. Распараллеливание здесь происходит не только в пространстве (т.е. по разным процессорам), но и во времени.
Рис.10
Как видно, конвейер процессоров реализует Множественный поток Команд и Одиночный поток Данных - МКОД. Такая схема получила название КОНВЕЙЕРНОЙ ОБРАБОТКИ. Отличается она тем, что при обработке одного потока данных одновременно выполняются сразу несколько команд из разных потоков команд. Эта схема обработки очень удобна при работе с программой, которую нельзя разбить на независимые части, но эти части связаны лишь через данные, которые обрабатывает эта программа.
Легко заметить глубокую связь этого вида обработки с промышленным конвейером, где роль процессоров играют рабочие места, а данными являются заготовки. Так же, как у промышленного конвейера, производительность конвейерной обработки определяется числом и трудоемкостью операций, выполняемых каждым процессором: чем они меньше, тем производительнее работает конвейер.
Это одновременно решение разных частей одной и той же задачи. Пусть нужно решить задачу, требующую N=1e10 машинных операций, за Т=100с. Очевидно, что для этого необходимо взять одну ЭВМ производительностью N/T операций в секунду. Но таких машин не бывает. Как же быть? Только распараллеливать! Пусть для этого мы располагаем процессорами производительностью V=1e6 операций в секунду. Тогда для решения этой задачи в указанное время нужно как минимум N/(TV)=100 таких процессоров, если, разумеется, задача допускает распараллеливание, т.е. ее можно разбить на независимые части, которые будут решаться одновременно на разных процессорах. Если это удастся сделать и загрузить решением одновременно все 100 процессоров, т.е. получить производительность 1e8 операций в секунду, то наша задача будет решена за требуемые 100с. Но для этого, как видно, нужно суметь распараллелить процесс решения задачи так, чтобы все 100 процессоров работали без простоев. Это редко когда удается и лишь для задач, составленных из независимых подзадач (для нашего примера таких подзадач должно быть 100 и все они должны быть одинаковыми, т.е. иметь трудоемкость по 1e8 операций).
Очевидно, что в других случаях понадобится еще больше процессоров. Причем вся трудность состоит в том, чтобы запрограммировать сам вычислительный процесс - указать, когда и какую часть задачи должен решать каждый процессор, откуда он должен получить исходную информацию (данные) и куда отправить полученный результат. От качества такой программы зависит эффективность решения задачи, т.е. требуемый ресурс - число процессоров, необходимое для решения поставленной задачи в заданное время.
Но не следует думать, что составить такую программу очень сложно. Дело в том, что время решения задачи зависит от загрузки этой задачей всех имеющихся в системе процессоров. И, как не странно, рецепт создания программы управления вычислительным процессором довольно прост. Надо стараться максимально загрузить каждый процессор, а значит, минимизировать его простои и работу на решение вспомогательных задач (например, на обмены информацией между процессорами, которые, вообще говоря, неизбежны). Так обычно и поступают. Поэтому все искусство программирования при решении задач на МУЛЬТИПРОЦЕССОРНОЙ вычислительной СИСТЕМЕ (именно так называют систему со многими процессорами) заключается в обеспечении минимальных временных затрат на простои процессоров и обмены данными между ними.
Структура такого мультипроцессора может быть самой разнообразной, более того, она может изменяться в процессе решения. Но прежде всего она зависит от решаемой задачи. Если задача легко членится на слабозависимые части, то следует применять так называемую параллельную обработку, которая обеспечивается набором из параллельно работающих процессоров (рис.9). Система из n взаимосвязанных процессоров (Пр1... Пр n) обрабатывает n потоков данных x1, ..., xn, преобразуемых в n потоков результатов yi, ..., yn. Связи между процессорами позволяют им обмениваться необходимой промежуточной информацией. Такую систему параллельной обработки обозначают часто ОКМД - Одиночный поток Команд (k) и Множественный поток Данных (xi, ..., xn). Одиночность потока команд заключается в том, что все процессоры выполняют одновременно только одну команду, затем другую и т.д. (на рис.9 каналы передачи команд изображены косыми стрелками).
Рис.9
Эту схему обработки часто называют векторной, а такой мультипроцессор - векторным процессором, так как с его помощью очень удобно обрабатывать n-мерные векторы, например траекторию движения летательного аппарата (в этом случае n=3, если описывается движение его центра тяжести, и n=6, если описывается движение твердого тела).
Такой способ распараллеливания естественно назвать РАСПАРАЛЛЕЛИВАНИЕМ В ПРОСТРАНСТВЕ, так как разные части одной и той же задачи решаются на разных процессорах, т.е. распределены в пространстве. Лучше всего этим способом решаются задачи со слабо связанными частями, что требует небольшого числа обменов информацией между процессорами и поэтому незначительно снижает производительность обработки, приближая ее к теоретической. А теоретическая производительность равна сумме производительностей всех процессоров системы. Она реализуется лишь для задач, все n частей которой не связаны друг с другом и имеют одинаковую трудоемкость.
Но очевидно, что далеко не все задачи имеют такую слабосвязанную структуру. Моделью программы задачи с сильносвязанной структурой является такая последовательность операторов, при которой каждый оператор исходные данные получает от предыдущего, а результат обработки направляет следующему оператору. Здесь ничего в пространстве распараллелить нельзя. Как же быть?
Если такую задачу нужно решать только один раз, то ничего не поделаешь и распараллелить ее решение не удастся. Но если ее надо решать многократно при различных исходных данных, то распараллеливать можно, но... во времени.
Идея РАСПАРАЛЛЕЛИВАНИЯ ВО ВРЕМЕНИ известна давно и широко используется в массовом производстве. Это идея конвейере (рис. 10). На вход x подается поток исходных данных (задач) и каждый i-й процессор работает по своему потоку команд ki. Задача, таким образом, решается сначала на первом процессоре, затем на втором и т.д. А в это время на первом решается другая задача при других начальных условиях и т.д. В результате одновременно в конвейере решается столько задач (с различными начальными условиями), сколько процессоров в этом конвейере. При этом каждая задача в процессе решения продвигается по конвейеру. Распараллеливание здесь происходит не только в пространстве (т.е. по разным процессорам), но и во времени.
Рис.10
Как видно, конвейер процессоров реализует Множественный поток Команд и Одиночный поток Данных - МКОД. Такая схема получила название КОНВЕЙЕРНОЙ ОБРАБОТКИ. Отличается она тем, что при обработке одного потока данных одновременно выполняются сразу несколько команд из разных потоков команд. Эта схема обработки очень удобна при работе с программой, которую нельзя разбить на независимые части, но эти части связаны лишь через данные, которые обрабатывает эта программа.
Легко заметить глубокую связь этого вида обработки с промышленным конвейером, где роль процессоров играют рабочие места, а данными являются заготовки. Так же, как у промышленного конвейера, производительность конвейерной обработки определяется числом и трудоемкостью операций, выполняемых каждым процессором: чем они меньше, тем производительнее работает конвейер.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
МАТРИЧНАЯ ОБРАБОТКА
Так как векторная и конвейерная обработка обеспечивают высокую производительность лишь для специфических задач, то естественно их объединить для решения задач разного рода. Это делает матричная схема обработки - гибрид векторной и конвейерной схем. При этом реализуется самая сложная формула МКМД - Множественный поток Команд и Множественный поток Данных (рис.11). Такой мультипроцессор (он обведен штриховой линией) называется матричным: по своей структуре он напоминает матрицу (таблицу).
Рис.11
Примером матричной вычислительной системы является ИЛЛИАК-IV (США). Она состоит из 64 процессорных элементов (ПЭ), что обеспечивает общую производительность до 200млн. операций в секунду. У нас матричную структуру может иметь перестраиваемая вычислительная система ПС-3000. Она содержит 64 ПЭ и имеет производительность на специальных задачах до 100млн. операций в секунду.
Следует отметить, что последняя из возможных формул ОКОД - Одиночные потоки Команд и Данных - соответствует обычной однопроцессорной ЭВМ, обрабатывающей один поток данных, которая рассмотрена в гл.1.
Так как векторная и конвейерная обработка обеспечивают высокую производительность лишь для специфических задач, то естественно их объединить для решения задач разного рода. Это делает матричная схема обработки - гибрид векторной и конвейерной схем. При этом реализуется самая сложная формула МКМД - Множественный поток Команд и Множественный поток Данных (рис.11). Такой мультипроцессор (он обведен штриховой линией) называется матричным: по своей структуре он напоминает матрицу (таблицу).
Рис.11
Примером матричной вычислительной системы является ИЛЛИАК-IV (США). Она состоит из 64 процессорных элементов (ПЭ), что обеспечивает общую производительность до 200млн. операций в секунду. У нас матричную структуру может иметь перестраиваемая вычислительная система ПС-3000. Она содержит 64 ПЭ и имеет производительность на специальных задачах до 100млн. операций в секунду.
Следует отметить, что последняя из возможных формул ОКОД - Одиночные потоки Команд и Данных - соответствует обычной однопроцессорной ЭВМ, обрабатывающей один поток данных, которая рассмотрена в гл.1.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
АРХИТЕКТУРА КОМПЬЮТЕРА
Говоря о различных вычислительных системах, нельзя не упомянуть о таком очень распространенном понятии, как архитектура вычислительной системы. Это слово заимствовано из зодчества. Там оно означает потребительские характеристики строительного объекта, т.е. те, которые важны жильцам. Например, число и размер комнат, их взаимное расположение, высота потолков определяют архитектуру квартиры. Именно эти характеристики являются важнейшими для жильцов, а не способ введения коммуникаций в квартиру, что волнует эксплуатационников жэка, но не жильцов. Именно архитектура квартиры дает возможность оценить эффективность ее использования конкретной семьей со своим составом, возрастом ее членов, их потребностями и причудами. Совершенно аналогично под архитектурой вычислительной системы понимают совокупность ее свойств и характеристик, которые должен знать пользователь для эффективного использования вычислительной системы при решении своих задач. Что же это за свойства и характеристики?
Прежде всего, это правила представления и передачи информации при взаимодействии пользователя и системы, т.е. коды представления данных и машинные языки. Другим важным свойством архитектуры являются сопряжения основных устройств вычислительной системы - ее структура. Но архитектуру не следует путать со структурой. Архитектура определяет правила взаимодействия составных частей системы, регламентирует не все связи структуры, а лишь наиболее важные, т.е. те, которые нужны для грамотного использования компьютерной системы. Очевидно, что векторный, конвейерный и матричный тип мультипроцессоров образуют соответствующие типы архитектур вычислительных систем. Они имеют свои достоинства и недостатки, которые следует учитывать при решении тех или иных задач так, чтобы эффективно использовать достоинства и надежно нейтрализовать недостатки различных архитектур.
Говоря о различных вычислительных системах, нельзя не упомянуть о таком очень распространенном понятии, как архитектура вычислительной системы. Это слово заимствовано из зодчества. Там оно означает потребительские характеристики строительного объекта, т.е. те, которые важны жильцам. Например, число и размер комнат, их взаимное расположение, высота потолков определяют архитектуру квартиры. Именно эти характеристики являются важнейшими для жильцов, а не способ введения коммуникаций в квартиру, что волнует эксплуатационников жэка, но не жильцов. Именно архитектура квартиры дает возможность оценить эффективность ее использования конкретной семьей со своим составом, возрастом ее членов, их потребностями и причудами. Совершенно аналогично под архитектурой вычислительной системы понимают совокупность ее свойств и характеристик, которые должен знать пользователь для эффективного использования вычислительной системы при решении своих задач. Что же это за свойства и характеристики?
Прежде всего, это правила представления и передачи информации при взаимодействии пользователя и системы, т.е. коды представления данных и машинные языки. Другим важным свойством архитектуры являются сопряжения основных устройств вычислительной системы - ее структура. Но архитектуру не следует путать со структурой. Архитектура определяет правила взаимодействия составных частей системы, регламентирует не все связи структуры, а лишь наиболее важные, т.е. те, которые нужны для грамотного использования компьютерной системы. Очевидно, что векторный, конвейерный и матричный тип мультипроцессоров образуют соответствующие типы архитектур вычислительных систем. Они имеют свои достоинства и недостатки, которые следует учитывать при решении тех или иных задач так, чтобы эффективно использовать достоинства и надежно нейтрализовать недостатки различных архитектур.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
МАШИНЫ ПОТОКА ДАННЫХ
Выше мы рассматривали различные способы параллельной обработки информации, позволяющие значительно повысить производительность компьютера при обработке данных. Однако совершенно не обязательно, чтобы данные поступали извне в компьютер. Они могут генерироваться в самой машине как промежуточные результаты. Это позволяет использовать описанные принципы параллельной обработки для решения громоздких вычислительных задач и при отсутствии потока данных извне.
Схема обработки представлена на рис.12, где мультипроцессор (МП) реализован по матричной схеме (рис.11). Здесь потоки промежуточных результатов (данных) x1, ..., xn, получаемые в процессе решения задачи, являются исходными данными для последующих вычислений. Потоки команд k1, ..., km обеспечивают обработку поступающих на МП потоков данных, а потоки результатов y1, ..., yn поступают в ОЗУ, чтобы стать потом потоком данных.
Рис.12
Такая схема решения задачи обладает очень большой гибкостью. Здесь реализуется процесс вычислений, который управляется не программой, а потоком данных, получаемых в процессе вычислений. Это новый принцип управления, когда данные управляют процессом обработки, осуществляется он довольно просто: нужно выделять свободный процессор той части программы, для которой имеются данные.
На первый взгляд это очевидно. Не выделять же процессору задачу, не обеспеченную данными! Но последовательное применение этого подхода приводит к тому, что заранее уже нельзя сказать, какой обработкой будет занят тот или иной процессор,- все решится после его освобождения от предыдущей работы. И ему в соответствии с принципом управления данными поступит задача, для которой к этому моменту будут готовые данные. Именно так работает машина потока данных.
Так данные (точнее, моменты их появления в вычислительной системе) управляют вычислительным процессом. Легко заметить, что чем больше процессоров, тем более эффективно применение этого подхода, так как меньше вероятность, что процессоры будут простаивать в ожидании данных и данные в ожидании свободного процессора. Именно поэтому эффективность машины потока данных тем выше, чем больше процессоров она имеет.
Выше мы рассматривали различные способы параллельной обработки информации, позволяющие значительно повысить производительность компьютера при обработке данных. Однако совершенно не обязательно, чтобы данные поступали извне в компьютер. Они могут генерироваться в самой машине как промежуточные результаты. Это позволяет использовать описанные принципы параллельной обработки для решения громоздких вычислительных задач и при отсутствии потока данных извне.
Схема обработки представлена на рис.12, где мультипроцессор (МП) реализован по матричной схеме (рис.11). Здесь потоки промежуточных результатов (данных) x1, ..., xn, получаемые в процессе решения задачи, являются исходными данными для последующих вычислений. Потоки команд k1, ..., km обеспечивают обработку поступающих на МП потоков данных, а потоки результатов y1, ..., yn поступают в ОЗУ, чтобы стать потом потоком данных.
Рис.12
Такая схема решения задачи обладает очень большой гибкостью. Здесь реализуется процесс вычислений, который управляется не программой, а потоком данных, получаемых в процессе вычислений. Это новый принцип управления, когда данные управляют процессом обработки, осуществляется он довольно просто: нужно выделять свободный процессор той части программы, для которой имеются данные.
На первый взгляд это очевидно. Не выделять же процессору задачу, не обеспеченную данными! Но последовательное применение этого подхода приводит к тому, что заранее уже нельзя сказать, какой обработкой будет занят тот или иной процессор,- все решится после его освобождения от предыдущей работы. И ему в соответствии с принципом управления данными поступит задача, для которой к этому моменту будут готовые данные. Именно так работает машина потока данных.
Так данные (точнее, моменты их появления в вычислительной системе) управляют вычислительным процессом. Легко заметить, что чем больше процессоров, тем более эффективно применение этого подхода, так как меньше вероятность, что процессоры будут простаивать в ожидании данных и данные в ожидании свободного процессора. Именно поэтому эффективность машины потока данных тем выше, чем больше процессоров она имеет.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
КОМПЬЮТЕР ИЗ... КОМПЬЮТЕРОВ
Описанные архитектуры многопроцессорных вычислительных систем могут реализоваться в помощью нескольких однопроцессорных ЭВМ. В этом случае получаются многомашинные вычислительные системы. Но при этом следует помнить, что для соединения двух и более ЭВМ требуются специальные согласующие средства - адаптеры, что усложняет задачу.
Но, пожалуй, самыми распространенными средствами параллельной обработки являются ВЫЧИСЛИТЕЛЬНЫЕ КОМПЛЕКСЫ. Они образуются из имеющихся компонентов вычислительных машин путем комплексирования - объединения их в единый комплекс. В качестве таких компонентов выступают процессоры, оперативная память (ОЗУ), внешняя память (ВЗУ), каналы связи между компонентами и т.д. Всего таких компонентов с учетом различных типов и модификаций может быть сотни и тысячи. Так что процесс комплексирования системы по заданным требованиям достаточно сложен. Но зато и велик эффект. Сейчас для решения конкретных задач редко кто приобретает ЭВМ в стандартном исполнении - обычно берут ее компоненты со средствами комплексирования: адаптерами, пультами для изменения конфигурации системы, устройствами управления комплексом и т.д. Примерами таких комплексов являются выпускаемые нашей промышленностью ВК-1010 (на базе двух ЭВМ ЕС-1030), ВК-2Р-50 (на базе двух ВМ ЕС-1050), ВК-2М45 (на базе двух ЭВМ ЕС-1045) и т.д.
Описанные архитектуры многопроцессорных вычислительных систем могут реализоваться в помощью нескольких однопроцессорных ЭВМ. В этом случае получаются многомашинные вычислительные системы. Но при этом следует помнить, что для соединения двух и более ЭВМ требуются специальные согласующие средства - адаптеры, что усложняет задачу.
Но, пожалуй, самыми распространенными средствами параллельной обработки являются ВЫЧИСЛИТЕЛЬНЫЕ КОМПЛЕКСЫ. Они образуются из имеющихся компонентов вычислительных машин путем комплексирования - объединения их в единый комплекс. В качестве таких компонентов выступают процессоры, оперативная память (ОЗУ), внешняя память (ВЗУ), каналы связи между компонентами и т.д. Всего таких компонентов с учетом различных типов и модификаций может быть сотни и тысячи. Так что процесс комплексирования системы по заданным требованиям достаточно сложен. Но зато и велик эффект. Сейчас для решения конкретных задач редко кто приобретает ЭВМ в стандартном исполнении - обычно берут ее компоненты со средствами комплексирования: адаптерами, пультами для изменения конфигурации системы, устройствами управления комплексом и т.д. Примерами таких комплексов являются выпускаемые нашей промышленностью ВК-1010 (на базе двух ЭВМ ЕС-1030), ВК-2Р-50 (на базе двух ВМ ЕС-1050), ВК-2М45 (на базе двух ЭВМ ЕС-1045) и т.д.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
АССОЦИАТИВНАЯ ОБРАБОТКА
Однако производительность обработки информации вычислительной системы определяется не только работой ее процессоров. Значительное время затрачивается на поиск информации в памяти системы, что, естественно, снижает ее производительность. Дело в том, что поиск информации связан с очень распространенной задачей принятия решения в сложившейся ситуации. Заранее известно (задано, вычислено), что в определенной ситуации S надо действовать заданным образом R - это и есть решение. Ситуация и решение кодируются и запоминаются в одной ячейке памяти. Если таких ситуаций (и, соответственно, решений) немного, то особой проблемы нет - можно просмотреть подряд все ячейки памяти, определить, какая их них содержит ситуацию S, совпадающую или близкую с той S', которая сложилась, и принять решение R, соответствующее ситуации S. Но если таких ситуаций много и принимать решение нужно часто, то последовательный просмотр всех ячеек памяти займет слишком много времени, что резко снизит производительность всей системы. Как же быть?
Эту задачу решает так называемое ассоциативное запоминающее устройство (ЗУ), позволяющее обращаться к памяти не по номеру ячейки, как в обычном ЗУ, а по ее содержимому. Напомним, что обычно оперативное запоминающее устройство (ОЗУ) всякого компьютера устроено так, что оно выдает содержимое ячейки в ответ на запрос, сформулированный в виде номера (адреса) этой ячейки. Такое ОЗУ называют адресным.
При ассоциативной обработке на вход ассоциативного ЗУ подается двоичный код, описывающий сложившуюся ситуацию S', в которой необходимо принять решение. Этот код поступает на все ячейки ассоциативного ЗУ одновременно и сравнивается с их содержимым. Но так как в ячейках записаны не только ситуации, но и решения, то следует исключить из рассмотрения (замаскировать) ту часть ячейки, где нет описания ситуации.
Делается это с помощью МЕХАНИЗМА МАСКИ, который позволяет выделять и сравнивать только ситуации. Действует он следующим образом. Вместе с ситуацией в ассоциативное ЗУ поступает и маска - двоичный код, имеющий длину, равную размеру ячеек в памяти. Тот разряд, в котором маска имеет нуль, исключается из сравнения. Маска своими нулями как бы закрывает (маскирует) все, что не относится к ситуации. В результате сравниваются только те разряды кодов, которые разрешены маской, т.е. имеют в ней единицы.
Пусть, например, в трех 12-разрядных ячейках ассоциативного ЗУ записана информация о ситуации S (первые 8 разрядов) и решения R (последние 4 разряда):
ЗУ:
A1 = 1001 1101 1101
A2 = 1001 1010 1010
A3 = 1001 1001 0111
Маска:
М = 1111 1100 0000
Ситуация:
S' = 1001 1000 (0000)
В этом случае две ячейки (А2 и A3) дают совпадение с замаскированной ситуацией S'.
Из полученных двух решений нужно выбрать одно. Это делается путем уменьшения маски, т.е. увеличения числа ее единиц. При М = 1111 1110 0000, как легко видеть, получаем одну совпадающую с ситуацией S' ячейку A3 (при учете маски, разумеется), откуда и извлекается решение (оно было замаскировано) R3 = 0111, которое и принимается в сложившейся ситуации S'.
Таким образом, процесс функционирования ассоциативного ЗУ сводится к следующему. На вход ассоциативного ЗУ подаются код ситуации и маска, указывающая, какие именно признаки (разряды) этой ситуации являются существенными. По этим признакам и производится одновременное сопоставление ситуации с содержимым всех ячеек. При совпадении замаскированной ситуации с хранимой в ячейке эта ячейка посылает сигнал в управляющее устройство, которое и выбирает все содержимое этой ячейки, где содержится искомая информация о решении (она была замаскирована в процессе поиска). Если таких сигнализирующих ячеек окажется много, то управляющее устройство может увеличить число существенных признаков, пропускаемых маской, и тем самым уменьшить число таких ячеек.
Преимущество такого способа в параллельности, одновременности обращения ко всем ячейкам памяти. Чем больше ячеек памяти, тем больше эффективность ассоциативного ЗУ по сравнению с адресным, Так, оно может работать в 100, 1000 и более раз быстрее адресного ЗУ, если имеет 100 и 1000 ассоциативных ячеек памяти.
Наличие управления маской в ассоциативном ЗУ делает его гибкой системой обработки информации. Именно поэтому такие ЗУ называют АССОЦИАТИВНЫМИ ПРОЦЕССОРАМИ. Эти процессоры нашли широкое применение для управления сложными объектами.
***
Примером такого применения ассоциативных систем обработки является контроль за положением самолетов в зоне аэропорта, где ячейки ассоциативного ЗУ заполняются координатами всех самолетов. При этом ассоциативный процессор для каждого самолета определяет ближайший к нему и, если расстояние между ними станет опасным, сообщает об этом диспетчеру. Делается это следующим образом. Ячейки ассоциативного ЗУ имеют три сегмента, где записываются координаты самолета, находящегося в зоне аэропорта. Эти координаты сообщает локатор в виде двух углов, определяющих направление на самолет и расстояние до него. Информация эта обновляется с каждым оборотом антенны локатора. Ассоциативный процессор выбирает по порядку координаты одного из самолетов и подает на вход ассоциативного ЗУ с соответствующей маской. Эта маска подобрана так, что выделяет лишь те самолеты, которые находятся в опасной близости. Решением в данном случае является совпадение всех незамаскированных координат. Оно и сообщается диспетчеру. Как видно, такой ассоциативный процессор "молчит" при нормальной обстановке в зоне аэропорта и сигнализирует лишь при возникновении опасного сближения самолетов. Причем от момента возникновения аварийной ситуации до ее выявления компьютером проходит минимальное время, так как проверка близости одного из самолетов ко всем остальным, находящимся в зоне аэропорта, происходит за один такт обращения к ассоциативному ЗУ компьютера. Меньше уже нельзя!
Ассоциативная обработка позволяет значительно повысить производительность компьютера. Это повышение грубо можно оценить числом ячеек ассоциативного процессора. Именно поэтому ассоциативная обработка нашла свое применение в системах оперативного управления (таких, как описанная выше система управления аэропортом) и в компьютерах сверхвысокой производительности, за которыми закрепилось название...
Однако производительность обработки информации вычислительной системы определяется не только работой ее процессоров. Значительное время затрачивается на поиск информации в памяти системы, что, естественно, снижает ее производительность. Дело в том, что поиск информации связан с очень распространенной задачей принятия решения в сложившейся ситуации. Заранее известно (задано, вычислено), что в определенной ситуации S надо действовать заданным образом R - это и есть решение. Ситуация и решение кодируются и запоминаются в одной ячейке памяти. Если таких ситуаций (и, соответственно, решений) немного, то особой проблемы нет - можно просмотреть подряд все ячейки памяти, определить, какая их них содержит ситуацию S, совпадающую или близкую с той S', которая сложилась, и принять решение R, соответствующее ситуации S. Но если таких ситуаций много и принимать решение нужно часто, то последовательный просмотр всех ячеек памяти займет слишком много времени, что резко снизит производительность всей системы. Как же быть?
Эту задачу решает так называемое ассоциативное запоминающее устройство (ЗУ), позволяющее обращаться к памяти не по номеру ячейки, как в обычном ЗУ, а по ее содержимому. Напомним, что обычно оперативное запоминающее устройство (ОЗУ) всякого компьютера устроено так, что оно выдает содержимое ячейки в ответ на запрос, сформулированный в виде номера (адреса) этой ячейки. Такое ОЗУ называют адресным.
При ассоциативной обработке на вход ассоциативного ЗУ подается двоичный код, описывающий сложившуюся ситуацию S', в которой необходимо принять решение. Этот код поступает на все ячейки ассоциативного ЗУ одновременно и сравнивается с их содержимым. Но так как в ячейках записаны не только ситуации, но и решения, то следует исключить из рассмотрения (замаскировать) ту часть ячейки, где нет описания ситуации.
Делается это с помощью МЕХАНИЗМА МАСКИ, который позволяет выделять и сравнивать только ситуации. Действует он следующим образом. Вместе с ситуацией в ассоциативное ЗУ поступает и маска - двоичный код, имеющий длину, равную размеру ячеек в памяти. Тот разряд, в котором маска имеет нуль, исключается из сравнения. Маска своими нулями как бы закрывает (маскирует) все, что не относится к ситуации. В результате сравниваются только те разряды кодов, которые разрешены маской, т.е. имеют в ней единицы.
Пусть, например, в трех 12-разрядных ячейках ассоциативного ЗУ записана информация о ситуации S (первые 8 разрядов) и решения R (последние 4 разряда):
ЗУ:
A1 = 1001 1101 1101
A2 = 1001 1010 1010
A3 = 1001 1001 0111
Маска:
М = 1111 1100 0000
Ситуация:
S' = 1001 1000 (0000)
В этом случае две ячейки (А2 и A3) дают совпадение с замаскированной ситуацией S'.
Из полученных двух решений нужно выбрать одно. Это делается путем уменьшения маски, т.е. увеличения числа ее единиц. При М = 1111 1110 0000, как легко видеть, получаем одну совпадающую с ситуацией S' ячейку A3 (при учете маски, разумеется), откуда и извлекается решение (оно было замаскировано) R3 = 0111, которое и принимается в сложившейся ситуации S'.
Таким образом, процесс функционирования ассоциативного ЗУ сводится к следующему. На вход ассоциативного ЗУ подаются код ситуации и маска, указывающая, какие именно признаки (разряды) этой ситуации являются существенными. По этим признакам и производится одновременное сопоставление ситуации с содержимым всех ячеек. При совпадении замаскированной ситуации с хранимой в ячейке эта ячейка посылает сигнал в управляющее устройство, которое и выбирает все содержимое этой ячейки, где содержится искомая информация о решении (она была замаскирована в процессе поиска). Если таких сигнализирующих ячеек окажется много, то управляющее устройство может увеличить число существенных признаков, пропускаемых маской, и тем самым уменьшить число таких ячеек.
Преимущество такого способа в параллельности, одновременности обращения ко всем ячейкам памяти. Чем больше ячеек памяти, тем больше эффективность ассоциативного ЗУ по сравнению с адресным, Так, оно может работать в 100, 1000 и более раз быстрее адресного ЗУ, если имеет 100 и 1000 ассоциативных ячеек памяти.
Наличие управления маской в ассоциативном ЗУ делает его гибкой системой обработки информации. Именно поэтому такие ЗУ называют АССОЦИАТИВНЫМИ ПРОЦЕССОРАМИ. Эти процессоры нашли широкое применение для управления сложными объектами.
***
Примером такого применения ассоциативных систем обработки является контроль за положением самолетов в зоне аэропорта, где ячейки ассоциативного ЗУ заполняются координатами всех самолетов. При этом ассоциативный процессор для каждого самолета определяет ближайший к нему и, если расстояние между ними станет опасным, сообщает об этом диспетчеру. Делается это следующим образом. Ячейки ассоциативного ЗУ имеют три сегмента, где записываются координаты самолета, находящегося в зоне аэропорта. Эти координаты сообщает локатор в виде двух углов, определяющих направление на самолет и расстояние до него. Информация эта обновляется с каждым оборотом антенны локатора. Ассоциативный процессор выбирает по порядку координаты одного из самолетов и подает на вход ассоциативного ЗУ с соответствующей маской. Эта маска подобрана так, что выделяет лишь те самолеты, которые находятся в опасной близости. Решением в данном случае является совпадение всех незамаскированных координат. Оно и сообщается диспетчеру. Как видно, такой ассоциативный процессор "молчит" при нормальной обстановке в зоне аэропорта и сигнализирует лишь при возникновении опасного сближения самолетов. Причем от момента возникновения аварийной ситуации до ее выявления компьютером проходит минимальное время, так как проверка близости одного из самолетов ко всем остальным, находящимся в зоне аэропорта, происходит за один такт обращения к ассоциативному ЗУ компьютера. Меньше уже нельзя!
Ассоциативная обработка позволяет значительно повысить производительность компьютера. Это повышение грубо можно оценить числом ячеек ассоциативного процессора. Именно поэтому ассоциативная обработка нашла свое применение в системах оперативного управления (таких, как описанная выше система управления аэропортом) и в компьютерах сверхвысокой производительности, за которыми закрепилось название...
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
СУПЕРКОМПЬЮТЕРЫ
Все описанные выше приемы распараллеливания обработки информации направлены на повышение производительности компьютера. Эта производительность обычно измеряется так называемым флопами - количеством операций сложения с плавающей точкой в одну секунду (это самая распространенная операция). Компьютер, имеющий производительность свыше 100Мфлоп (мегафлоп), т.е. 1e8 таких операций в секунду, называют суперкомпьютером.
Одним из типичных представителей и лидером этого направления является суперкомпьютер Cray-2, имеющий производительность 1000Мфлоп и оперативную память емкостью свыше 2e8 15-разрядных слов - огромная производительность, требующая гигантской оперативной памяти. У нас направление суперкомпьютеров возглавляет ЭВМ "Эльбрус-2", имеющая 10 высокопроизводительных процессоров, каждый из которых может работать со скоростью свыше 10Мфлоп.
Сейчас в мире сравнительно немного суперкомпьютеров, всего несколько сотен - капля в море по сравнению с сотнями миллионов персональных ЭВМ. Они крайне дороги, громоздки и нуждаются в специальных программах. Напомним, что суперкомпьютер - это многопроцессорная вычислительная система, производительность которой получена за счет глубочайшего распараллеливания процесса вычислений по всем процессорам системы. Реализовать такое распараллеливание помогает искусство программиста, от которого зависит производительность суперкомпьютера при решении той или иной задачи. Создание программы для суперкомпьютера требует не только искусства, но и больших временных затрат. Именно поэтому при решении специальных задач иногда приходится отказываться от услуг универсального суперкомпьютера, а создавать специальные компьютеры, моделирующие интересующие процессы. Например, для расчета орбит взаимодействующих планет Солнечной системы был создан специализированный компьютер Digital Orrery. Работая со скоростью 10млн. операций в секунду, он позволил определить положение пяти внешних планет Солнца за 100млн. лет до и после нас.
Но вернемся к универсальным суперкомпьютерам и рассмотрим некоторые задачи, возлагаемые на них. Одной из таких задач является создание изображений. Это направление называют...
Все описанные выше приемы распараллеливания обработки информации направлены на повышение производительности компьютера. Эта производительность обычно измеряется так называемым флопами - количеством операций сложения с плавающей точкой в одну секунду (это самая распространенная операция). Компьютер, имеющий производительность свыше 100Мфлоп (мегафлоп), т.е. 1e8 таких операций в секунду, называют суперкомпьютером.
Одним из типичных представителей и лидером этого направления является суперкомпьютер Cray-2, имеющий производительность 1000Мфлоп и оперативную память емкостью свыше 2e8 15-разрядных слов - огромная производительность, требующая гигантской оперативной памяти. У нас направление суперкомпьютеров возглавляет ЭВМ "Эльбрус-2", имеющая 10 высокопроизводительных процессоров, каждый из которых может работать со скоростью свыше 10Мфлоп.
Сейчас в мире сравнительно немного суперкомпьютеров, всего несколько сотен - капля в море по сравнению с сотнями миллионов персональных ЭВМ. Они крайне дороги, громоздки и нуждаются в специальных программах. Напомним, что суперкомпьютер - это многопроцессорная вычислительная система, производительность которой получена за счет глубочайшего распараллеливания процесса вычислений по всем процессорам системы. Реализовать такое распараллеливание помогает искусство программиста, от которого зависит производительность суперкомпьютера при решении той или иной задачи. Создание программы для суперкомпьютера требует не только искусства, но и больших временных затрат. Именно поэтому при решении специальных задач иногда приходится отказываться от услуг универсального суперкомпьютера, а создавать специальные компьютеры, моделирующие интересующие процессы. Например, для расчета орбит взаимодействующих планет Солнечной системы был создан специализированный компьютер Digital Orrery. Работая со скоростью 10млн. операций в секунду, он позволил определить положение пяти внешних планет Солнца за 100млн. лет до и после нас.
Но вернемся к универсальным суперкомпьютерам и рассмотрим некоторые задачи, возлагаемые на них. Одной из таких задач является создание изображений. Это направление называют...
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
МАШИННАЯ ГРАФИКА
Каждый конструктор знает, как важно в процессе проектирования иметь хорошее представление о форме проектируемого изделия. Три вида детали, изображенные на стандартном чертеже (главный, слева и сверху), дают полную информацию о детали, но... не обладают необходимой наглядностью для человека (рис.13,а). Для преодоления этого недостатка давно придумано так называемое изометрическое изображение, показывающее деталь как бы чуть сбоку и сверху (рис.13,б). Достаточно одного взгляда на такое изображение, чтобы получить представление о форме детали. Еще лучше, если это изометрическое изображение можно поворачивать, как бы обходить вокруг детали или вращать ее перед собой (рис.13,б-д).
Рис.13
Алгоритм построения изометрического изображения по чертежу детали несложен (этому учат на первом курсе в каждом техническом вузе), но очень громоздок. И чем сложнее деталь, тем более громоздкими становятся расчеты изометрического изображения, которые нужно повторять в полном объеме для построения каждого нового ракурса.
Именно эти расчеты и возлагаются на компьютер, который полученный результат выводит на экран дисплея в виде изометрического изображения. Чтобы создать эффект вращения детали, достаточно 25 раз в секунду изменять ракурс на малый угол и строить новое изображение. Несложный расчет показывает, что для такой операции понадобится огромная производительность компьютера, который должен "вычислить" каждую точку изометрического изображения 25 раз в секунду. А этих точек на экране около миллиона! Вот и получается, что с этой задачей справляется лишь суперкомпьютер! (Заметим, что, строго говоря, не приходится обсчитывать все точки изображения: поверхность, детали формируется из плоских участков, внутренность которых окрашивается равномерно. Так, для изображения кирпича, показанного на рис.13,б-д, понадобится лишь три таких участка. Если же деталь имеет криволинейные поверхности, то размер плоских участков, образующих эту поверхность, будет очень малым, а их число соответственно большим. Так что для сложных форм вычислительные затраты на построение изображения всегда очень велики и требуют суперкомпьютера для своей реализации).
Свое практическое применение такого рода суперкомпьютерные системы машинной графики нашли в системах автоматизированного проектирования (САПР). С их помощью проектируются конструкции самолетов, ракет, автомобилей и других сложных изделий современной техники.
Каждый конструктор знает, как важно в процессе проектирования иметь хорошее представление о форме проектируемого изделия. Три вида детали, изображенные на стандартном чертеже (главный, слева и сверху), дают полную информацию о детали, но... не обладают необходимой наглядностью для человека (рис.13,а). Для преодоления этого недостатка давно придумано так называемое изометрическое изображение, показывающее деталь как бы чуть сбоку и сверху (рис.13,б). Достаточно одного взгляда на такое изображение, чтобы получить представление о форме детали. Еще лучше, если это изометрическое изображение можно поворачивать, как бы обходить вокруг детали или вращать ее перед собой (рис.13,б-д).
Рис.13
Алгоритм построения изометрического изображения по чертежу детали несложен (этому учат на первом курсе в каждом техническом вузе), но очень громоздок. И чем сложнее деталь, тем более громоздкими становятся расчеты изометрического изображения, которые нужно повторять в полном объеме для построения каждого нового ракурса.
Именно эти расчеты и возлагаются на компьютер, который полученный результат выводит на экран дисплея в виде изометрического изображения. Чтобы создать эффект вращения детали, достаточно 25 раз в секунду изменять ракурс на малый угол и строить новое изображение. Несложный расчет показывает, что для такой операции понадобится огромная производительность компьютера, который должен "вычислить" каждую точку изометрического изображения 25 раз в секунду. А этих точек на экране около миллиона! Вот и получается, что с этой задачей справляется лишь суперкомпьютер! (Заметим, что, строго говоря, не приходится обсчитывать все точки изображения: поверхность, детали формируется из плоских участков, внутренность которых окрашивается равномерно. Так, для изображения кирпича, показанного на рис.13,б-д, понадобится лишь три таких участка. Если же деталь имеет криволинейные поверхности, то размер плоских участков, образующих эту поверхность, будет очень малым, а их число соответственно большим. Так что для сложных форм вычислительные затраты на построение изображения всегда очень велики и требуют суперкомпьютера для своей реализации).
Свое практическое применение такого рода суперкомпьютерные системы машинной графики нашли в системах автоматизированного проектирования (САПР). С их помощью проектируются конструкции самолетов, ракет, автомобилей и других сложных изделий современной техники.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
МОЖНО ЛИ ПОЩУПАТЬ ВООБРАЖАЕМУЮ ДЕТАЛЬ?
Оказывается можно! И обеспечивает это все тот же суперкомпьютер. Здесь у дотошного читателя возможно возникнет коварный вопрос: "А зачем щупать то, чего не существует?" Во-первых, это просто интересно. Действительно, возможность ощупывать воображаемый и представленный компьютером на экране дисплея мир открывает совершенно новую страницу в познании.
В одном из научно-фантастических рассказов 70-х годов описывались так называемые онирофильмы, в которых сочетались зрительные и тактильные ощущения. Зритель этого фильма не только видел и слышал, но и ощущал своей кожей то, что было записано на пластинке (которую мы сейчас назвали бы магнитным диском).
То, что сделано сейчас, позволяет значительно больше. В фантастическом онирофильме человек лишь воспринимает зрительные, акустические и тактильные раздражители, записанные на носителе - диске. Но он никак не может вмешаться в действие фильма, а является лишь пассивным участником, ощущения которого соответствуют сценарию онирофильма. И если по этому сценарию зрителю (и осязателю) следует поцеловать кого-то в сцене свидания или получить по физиономии в сцене драки, то он получит все сполна независимо от того, хочет он этого или нет.
Современные компьютерные средства позволяют человеку действовать вполне самостоятельно и изучать воображаемый мир, представленный ему компьютером.
Кроме обычного познавательного интереса в такой компьютерной системе ощупывания несуществующего есть и вполне практическая необходимость. Например, рассматривая изометрическое изображение проектируемой детали на экране дисплея, конструктор наверняка захочет увидеть ее в определенном ракурсе или же найти такой ракурс. Для этого надо предоставить ему возможность поворачивать изображение так, как ему захочется, "повертеть" проектируемую деталь в руках, т.е. не только ощупать несуществующую деталь, но изменить ее положение на экране, повернуть ее в нужный ракурс и т.д., причем сделать это собственными руками. Именно такую возможность и обеспечивает компьютерная система.
Как же это реализуется? На руки оператор надевает специальные перчатки, в которых вмонтированы датчики, фиксирующие положения всех суставов кисти, т.е. углы между фалангами пальцев, углы между пальцами и т.д. Это несложные волоконно-оптические устройства, изменяющие при изгибе свое оптическое сопротивление. Так или иначе, но компьютер, получив данные обо всех углах, характеризующих состояние кисти оператора, получает представление о состоянии кисти и может изобразить кисть на экране дисплея. Кроме того, фиксируется положение кистей рук оператора в пространстве. Эти данные о реальных кистях рук оператора вводятся в память компьютера, который и выводит их изображения на экран дисплея.
Если теперь в той же памяти компьютера заложить описание детали, которую предстоит "ощупать", то нетрудно определить, когда и как изображения детали и кистей рук оператора соприкасаются. Точки прикосновения детали к кистям вычисляются компьютером, и в соответствующие места перчаток оператора посылаются сигналы на тактильные раздражители, которые вмонтированы в перчатки. При возбуждении такого раздражителя он давит на участок кисти (пальцев или ладони), расположенный под ним. Поэтому у оператора и создается впечатление прикосновения к детали. Зная положение точек "прикосновения" кистей оператора к детали, можно определить, как должна поворачиваться деталь под влиянием такого воздействия, и реализовать этот поворот на экране дисплея компьютера.
Такова в общих чертах идея взаимодействия человека с "искусственной реальностью", заложенной в память компьютера. Развивая эту идею, далее нетрудно представить, как можно будет действовать человеку в воображаемом компьютерном мире. Для этого оператору, кроме перчаток, потребуется комбинезон с датчиками положения всех частей его тела и управляемыми раздражителями, которые будут имитировать соприкосновение с миром, заложенным в память компьютера. Экран дисплея должен быть укреплен на голове оператора и его положение контролироваться компьютером. При повороте головы компьютер изменяет изображение на экране дисплея так, чтобы оператор видел именно то изображение предметов искусственного мира, которое он должен видеть при рассматривании такого мира. Этим создается не только эффект полного погружения оператора в искусственную реальность, записанную в памяти компьютера, но и тактильного взаимодействия с ней. При этом взаимодействии оператор может с помощью того же компьютера изменять тот искусственный мир, в котором он действует.
Стоит ли повторять, что для эффективной реализации такого взаимодействия необходимо иметь огромные вычислительные мощности. Такого рада задачи могут решаться только с помощью суперкомпьютеров.
А теперь рассмотрим, как суперкомпьютер может разрешать конфликты, возникающие на тернистом пути человечества.
Оказывается можно! И обеспечивает это все тот же суперкомпьютер. Здесь у дотошного читателя возможно возникнет коварный вопрос: "А зачем щупать то, чего не существует?" Во-первых, это просто интересно. Действительно, возможность ощупывать воображаемый и представленный компьютером на экране дисплея мир открывает совершенно новую страницу в познании.
В одном из научно-фантастических рассказов 70-х годов описывались так называемые онирофильмы, в которых сочетались зрительные и тактильные ощущения. Зритель этого фильма не только видел и слышал, но и ощущал своей кожей то, что было записано на пластинке (которую мы сейчас назвали бы магнитным диском).
То, что сделано сейчас, позволяет значительно больше. В фантастическом онирофильме человек лишь воспринимает зрительные, акустические и тактильные раздражители, записанные на носителе - диске. Но он никак не может вмешаться в действие фильма, а является лишь пассивным участником, ощущения которого соответствуют сценарию онирофильма. И если по этому сценарию зрителю (и осязателю) следует поцеловать кого-то в сцене свидания или получить по физиономии в сцене драки, то он получит все сполна независимо от того, хочет он этого или нет.
Современные компьютерные средства позволяют человеку действовать вполне самостоятельно и изучать воображаемый мир, представленный ему компьютером.
Кроме обычного познавательного интереса в такой компьютерной системе ощупывания несуществующего есть и вполне практическая необходимость. Например, рассматривая изометрическое изображение проектируемой детали на экране дисплея, конструктор наверняка захочет увидеть ее в определенном ракурсе или же найти такой ракурс. Для этого надо предоставить ему возможность поворачивать изображение так, как ему захочется, "повертеть" проектируемую деталь в руках, т.е. не только ощупать несуществующую деталь, но изменить ее положение на экране, повернуть ее в нужный ракурс и т.д., причем сделать это собственными руками. Именно такую возможность и обеспечивает компьютерная система.
Как же это реализуется? На руки оператор надевает специальные перчатки, в которых вмонтированы датчики, фиксирующие положения всех суставов кисти, т.е. углы между фалангами пальцев, углы между пальцами и т.д. Это несложные волоконно-оптические устройства, изменяющие при изгибе свое оптическое сопротивление. Так или иначе, но компьютер, получив данные обо всех углах, характеризующих состояние кисти оператора, получает представление о состоянии кисти и может изобразить кисть на экране дисплея. Кроме того, фиксируется положение кистей рук оператора в пространстве. Эти данные о реальных кистях рук оператора вводятся в память компьютера, который и выводит их изображения на экран дисплея.
Если теперь в той же памяти компьютера заложить описание детали, которую предстоит "ощупать", то нетрудно определить, когда и как изображения детали и кистей рук оператора соприкасаются. Точки прикосновения детали к кистям вычисляются компьютером, и в соответствующие места перчаток оператора посылаются сигналы на тактильные раздражители, которые вмонтированы в перчатки. При возбуждении такого раздражителя он давит на участок кисти (пальцев или ладони), расположенный под ним. Поэтому у оператора и создается впечатление прикосновения к детали. Зная положение точек "прикосновения" кистей оператора к детали, можно определить, как должна поворачиваться деталь под влиянием такого воздействия, и реализовать этот поворот на экране дисплея компьютера.
Такова в общих чертах идея взаимодействия человека с "искусственной реальностью", заложенной в память компьютера. Развивая эту идею, далее нетрудно представить, как можно будет действовать человеку в воображаемом компьютерном мире. Для этого оператору, кроме перчаток, потребуется комбинезон с датчиками положения всех частей его тела и управляемыми раздражителями, которые будут имитировать соприкосновение с миром, заложенным в память компьютера. Экран дисплея должен быть укреплен на голове оператора и его положение контролироваться компьютером. При повороте головы компьютер изменяет изображение на экране дисплея так, чтобы оператор видел именно то изображение предметов искусственного мира, которое он должен видеть при рассматривании такого мира. Этим создается не только эффект полного погружения оператора в искусственную реальность, записанную в памяти компьютера, но и тактильного взаимодействия с ней. При этом взаимодействии оператор может с помощью того же компьютера изменять тот искусственный мир, в котором он действует.
Стоит ли повторять, что для эффективной реализации такого взаимодействия необходимо иметь огромные вычислительные мощности. Такого рада задачи могут решаться только с помощью суперкомпьютеров.
А теперь рассмотрим, как суперкомпьютер может разрешать конфликты, возникающие на тернистом пути человечества.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
КОМПРОМИСС ИЛИ ВЫБОР
Много скандалов было (и, наверное, будет!) в жизни человечества на всех уровнях его существования - от семейного до космического. И каждый имеет одну и ту же структуру - столкновение двух сторон. При этом каждая сторона приводит очень убедительные доводы в пользу своей версии решения проблемы. В такой ситуации обычно переубедить друг друга не удается, и разражается скандал, в котором логика уступает место эмоциям. А это уже никогда не приводит к благополучному разрешению. Именно поэтому спор обычно решается "этажом выше", как говорится "барин рассудит".
Что ж, подход вполне приемлем, если конфликт не затрагивает многих и если судья располагает необходимой информацией о последствиях каждого способа разрешения конфликта (в пользу одной или другой стороны). Чаще судья старается найти компромисс, чтобы не обидеть ни одну из сторон или обидеть в наименьшей мере. Такое половинчатое решение сохраняет мир, но никак не способствует прогрессу.
Действительно, если одно предложение хорошо, а другое плохо, то их компромисс хотя и будет лучше плохого, но хуже хорошего. Нужно уметь находить лучшее решение. Но принимает решение человек, и "ничто человеческое ему не чуждо". В том числе и ошибки!
А есть ли способ избежать их? Здесь невольно вспоминается старая идея Лейбница - вычислять (без кавычек) истину. Эта идея основана на вере в возможность моделирования человеческих рассуждений. Правда, дальше этого предложения дело не пошло, ведь 300 лет назад еще не было компьютеров. Не пошло бы дело и 30 лет назад, когда компьютеры уже были, но еще малой производительности и с ничтожной памятью. Дело пошло только сейчас, когда появились суперкомпьютеры.
Моделирование рассуждений - очень громоздкая процедура, которая далеко не всякому компьютеру "по зубам". Действительно, чтобы выбрать один из нескольких вариантов решения, нужно прежде всего иметь возможность определить достоверно, к чему приведет выбор того или иного варианта решения. Это означает, что вместо обычных для человека "с одной стороны, ..., с другой..." надо иметь инструмент для вычисления всех последствий, инструмент предвидения, как будут разворачиваться события при принятии того или иного решения. Такой инструмент должен состоять по крайней мере из модели обсуждаемого события, на которое воздействуют спорные решения, и вычислительной машины, на которой "обыгрывается" эта модель.
Модель (это понятие также ввел Г.Лейбниц) представляет собой систему утверждений, с помощью которых можно определить поведение некоего явления, не прибегая к самому явлению. Например, второй закон Ньютона - это модель, которая связывает массу, силу, действующую на массу, и ускорение. Именно эта модель позволяет вычислять движение тела как результат приложения силы к этому телу без экспериментирования с ним. Именно модели позволяют достоверно предвидеть, как пойдут события в той или иной ситуации.
Созданием моделей занимается наука, которая является ничем иным, как собранием моделей окружающего нас мира. Эти модели универсальны: они позволяют описывать поведение не одного, а множества явлений одного и того же класса, и достаточно просты, чтобы при их использовании не нужно было слишком много вычислять. Ведь современная наука существует по крайней мере 300 лет (со времен Галилея), а компьютеры, способные использовать сложные модели, появились совсем недавно. Поэтому наука всегда ориентировалась на простые модели.
Но жизнь всегда сложнее! И реальные явления, волнующие нас (технические, технологические, экономические, социальные, экологические и т.д.), не удается описывать простыми моделями - уж очень сложны они сами. Именно для решения таких задач был придуман специальный метод, который получил название...
Много скандалов было (и, наверное, будет!) в жизни человечества на всех уровнях его существования - от семейного до космического. И каждый имеет одну и ту же структуру - столкновение двух сторон. При этом каждая сторона приводит очень убедительные доводы в пользу своей версии решения проблемы. В такой ситуации обычно переубедить друг друга не удается, и разражается скандал, в котором логика уступает место эмоциям. А это уже никогда не приводит к благополучному разрешению. Именно поэтому спор обычно решается "этажом выше", как говорится "барин рассудит".
Что ж, подход вполне приемлем, если конфликт не затрагивает многих и если судья располагает необходимой информацией о последствиях каждого способа разрешения конфликта (в пользу одной или другой стороны). Чаще судья старается найти компромисс, чтобы не обидеть ни одну из сторон или обидеть в наименьшей мере. Такое половинчатое решение сохраняет мир, но никак не способствует прогрессу.
Действительно, если одно предложение хорошо, а другое плохо, то их компромисс хотя и будет лучше плохого, но хуже хорошего. Нужно уметь находить лучшее решение. Но принимает решение человек, и "ничто человеческое ему не чуждо". В том числе и ошибки!
А есть ли способ избежать их? Здесь невольно вспоминается старая идея Лейбница - вычислять (без кавычек) истину. Эта идея основана на вере в возможность моделирования человеческих рассуждений. Правда, дальше этого предложения дело не пошло, ведь 300 лет назад еще не было компьютеров. Не пошло бы дело и 30 лет назад, когда компьютеры уже были, но еще малой производительности и с ничтожной памятью. Дело пошло только сейчас, когда появились суперкомпьютеры.
Моделирование рассуждений - очень громоздкая процедура, которая далеко не всякому компьютеру "по зубам". Действительно, чтобы выбрать один из нескольких вариантов решения, нужно прежде всего иметь возможность определить достоверно, к чему приведет выбор того или иного варианта решения. Это означает, что вместо обычных для человека "с одной стороны, ..., с другой..." надо иметь инструмент для вычисления всех последствий, инструмент предвидения, как будут разворачиваться события при принятии того или иного решения. Такой инструмент должен состоять по крайней мере из модели обсуждаемого события, на которое воздействуют спорные решения, и вычислительной машины, на которой "обыгрывается" эта модель.
Модель (это понятие также ввел Г.Лейбниц) представляет собой систему утверждений, с помощью которых можно определить поведение некоего явления, не прибегая к самому явлению. Например, второй закон Ньютона - это модель, которая связывает массу, силу, действующую на массу, и ускорение. Именно эта модель позволяет вычислять движение тела как результат приложения силы к этому телу без экспериментирования с ним. Именно модели позволяют достоверно предвидеть, как пойдут события в той или иной ситуации.
Созданием моделей занимается наука, которая является ничем иным, как собранием моделей окружающего нас мира. Эти модели универсальны: они позволяют описывать поведение не одного, а множества явлений одного и того же класса, и достаточно просты, чтобы при их использовании не нужно было слишком много вычислять. Ведь современная наука существует по крайней мере 300 лет (со времен Галилея), а компьютеры, способные использовать сложные модели, появились совсем недавно. Поэтому наука всегда ориентировалась на простые модели.
Но жизнь всегда сложнее! И реальные явления, волнующие нас (технические, технологические, экономические, социальные, экологические и т.д.), не удается описывать простыми моделями - уж очень сложны они сами. Именно для решения таких задач был придуман специальный метод, который получил название...
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ
Имитационная модель отличается тем, что она, во-первых, описывает, как правило, конкретное уникальное явление, а во-вторых, реализуется только на компьютере. Суть имитационного моделирования состоит в том, что все, что происходит в данном явлении, моделируется последовательно во времени и с учетом всех особенностей данного явления и обстоятельств, ему сопутствующих. Например, падение камня с горы можно имитировать, определяя его положение через равные интервалы времени. Для этого нужно знать форму и массу камня, а также рельеф, по которому ему предстоит катиться, и закон всемирного тяготения. Так что для имитационной модели всегда требуется много исходной информации, отражающей специфику моделируемого явления.
Особую роль играет имитационное моделирование в решении экологических проблем. Наша цивилизация овладела настолько мощными средствами изменения окружающего нас мира, что они начинают разрушать Природу. Примеров этому много. Так что же, отказаться от стремления благоустраивать нашу Землю? Отказаться от прогресса? От тех возможностей, которые он дал в руки человечества? Смириться? Ответ напрашивается сам собой. Просто нужно уметь предвидеть экологические последствия своих действий и выбирать то, которое минимально разрушает природу. Конечно, это не просто! Для такого предвидения необходимо создавать экологические модели и с их помощью определять, как влияют на экологию те или иные наши решения.
Экологические модели довольно четко подразделяются на локальные и глобальные. Первые характеризуют локальные изменения в экологической обстановке, например анализ последствий осушения болота, вырубки леса, отстрела дичи, аварии на химическом заводе и т.д. Каждая из таких моделей должна позволять достоверно отвечать на вопрос: "А что будет, если..." и далее следует описание возмущающего фактора, изменяющего экологическую обстановку. Это описание фактически фиксирует начальные условия, в которых начинается функционирование экологической модели. А полученный результат называют сценарием - изложением того, что и в какой последовательности произойдет, если реализуются данные возмущения.
Совершенно аналогично работают глобальные модели. Этот вид моделей отличается тем, что моделируется изменение интересующих нас факторов на всем земном шаре, т.е. реализуются глобальные сценарии. Например, именно глобальным моделированием можно выяснить последствия атомной войны или переброса рек. Как это делается?
Вся поверхность земного шара разбивается на квадраты (точнее, трапеции со сторонами вдоль широт и меридианов). На каждом таком квадрате как на основании строятся кубики (точнее, параллелепипеды) вверх (в атмосферу) и вниз (в землю на суше или в воду на больших реках, озерах, морях и океанах). Каждый такой кубик предполагается однородным - его температура, плотность влажность и т.д. одинаковы по всему объему. Каждый кубик взаимодействует только со своими соседями. Их, как легко подсчитать, шесть. Законы взаимодействия кубиков просты и легко моделируются. Например, разное давление в соседних атмосферных кубиках вызывает перемещение воздуха (обмен массой между ними) со скоростью, пропорциональной разности их давлений.
Как видно, состояние каждого кубика определяется его параметрами, например температурой, массой, давлением, концентрацией интересующих нас веществ (например, ССЬ), скоростью движения массы кубика, объемом его биомассы. Зная состояние каждого кубика, всегда можно вычислить, как оно изменится через одну, две, три и т.д. единицы времени. Эту функцию естественно возложить на компьютер.
А теперь подсчитаем загрузку этого компьютера. Она зависит от количества кубиков и числа параметров, определяющих состояние каждого кубика. Очевидно, чем меньше кубиков, тем грубее глобальная модель. Их количество должно быть не менее тысячи (по поверхности Земли), что соответствует очень грубой сетке примерно 1000*1000км. По вертикали число кубиков должно быть не менее 10, иначе нельзя будет учесть важные процессы вертикального переноса массы (осадки, испарения и т.д.). Итого число кубиков должно быть значительно более 10тыс. Пусть их будет миллион.
Число параметров, определяющих состояние каждого из этих кубиков, существенно зависит от решаемой задачи. Если это экологические задачи, то необходимо учитывать многочисленные биологические факторы, характеризующие тип и состав биологических сообществ - животных и растений. Число таких параметров доходит до тысячи. Если же решается только климатическая задача, то число параметров несколько меньше.
Итак, глобальная модель характеризуется миллиардом параметров! На каждом шаге все эти параметры изменяются. Для этого нужно решить миллиард уравнений! Обычный (миллионный) компьютер с этим не справится. Эту задачу может решить только суперкомпьютер, и то не каждый, а "миллиардник". Причем ему придется изрядно потрудиться, чтобы сделать прогноз хотя бы на 1000 этапов смены состояний модели (о меньшем числе не стоит и говорить).
Глобальное моделирование уже позволило получить ряд важных результатов. Так, были рассчитаны сценарии ядерной войны, когда возмущающим фактором явилось выделение большой энергии в ряде кубиков модели, что моделировало нанесение ядерных ударов. Дальнейшее развитие событий всем известно - возникновение гигантских лесных пожаров, дым от которых надолго закроет солнце и в результате ядерная зима, если не выпадет черный дождь. Здесь есть о чем поразмыслить и военным и политикам. Именно такие размышления привели к выводу, что ядерная война является самоубийством человечества.
Имитационная модель отличается тем, что она, во-первых, описывает, как правило, конкретное уникальное явление, а во-вторых, реализуется только на компьютере. Суть имитационного моделирования состоит в том, что все, что происходит в данном явлении, моделируется последовательно во времени и с учетом всех особенностей данного явления и обстоятельств, ему сопутствующих. Например, падение камня с горы можно имитировать, определяя его положение через равные интервалы времени. Для этого нужно знать форму и массу камня, а также рельеф, по которому ему предстоит катиться, и закон всемирного тяготения. Так что для имитационной модели всегда требуется много исходной информации, отражающей специфику моделируемого явления.
Особую роль играет имитационное моделирование в решении экологических проблем. Наша цивилизация овладела настолько мощными средствами изменения окружающего нас мира, что они начинают разрушать Природу. Примеров этому много. Так что же, отказаться от стремления благоустраивать нашу Землю? Отказаться от прогресса? От тех возможностей, которые он дал в руки человечества? Смириться? Ответ напрашивается сам собой. Просто нужно уметь предвидеть экологические последствия своих действий и выбирать то, которое минимально разрушает природу. Конечно, это не просто! Для такого предвидения необходимо создавать экологические модели и с их помощью определять, как влияют на экологию те или иные наши решения.
Экологические модели довольно четко подразделяются на локальные и глобальные. Первые характеризуют локальные изменения в экологической обстановке, например анализ последствий осушения болота, вырубки леса, отстрела дичи, аварии на химическом заводе и т.д. Каждая из таких моделей должна позволять достоверно отвечать на вопрос: "А что будет, если..." и далее следует описание возмущающего фактора, изменяющего экологическую обстановку. Это описание фактически фиксирует начальные условия, в которых начинается функционирование экологической модели. А полученный результат называют сценарием - изложением того, что и в какой последовательности произойдет, если реализуются данные возмущения.
Совершенно аналогично работают глобальные модели. Этот вид моделей отличается тем, что моделируется изменение интересующих нас факторов на всем земном шаре, т.е. реализуются глобальные сценарии. Например, именно глобальным моделированием можно выяснить последствия атомной войны или переброса рек. Как это делается?
Вся поверхность земного шара разбивается на квадраты (точнее, трапеции со сторонами вдоль широт и меридианов). На каждом таком квадрате как на основании строятся кубики (точнее, параллелепипеды) вверх (в атмосферу) и вниз (в землю на суше или в воду на больших реках, озерах, морях и океанах). Каждый такой кубик предполагается однородным - его температура, плотность влажность и т.д. одинаковы по всему объему. Каждый кубик взаимодействует только со своими соседями. Их, как легко подсчитать, шесть. Законы взаимодействия кубиков просты и легко моделируются. Например, разное давление в соседних атмосферных кубиках вызывает перемещение воздуха (обмен массой между ними) со скоростью, пропорциональной разности их давлений.
Как видно, состояние каждого кубика определяется его параметрами, например температурой, массой, давлением, концентрацией интересующих нас веществ (например, ССЬ), скоростью движения массы кубика, объемом его биомассы. Зная состояние каждого кубика, всегда можно вычислить, как оно изменится через одну, две, три и т.д. единицы времени. Эту функцию естественно возложить на компьютер.
А теперь подсчитаем загрузку этого компьютера. Она зависит от количества кубиков и числа параметров, определяющих состояние каждого кубика. Очевидно, чем меньше кубиков, тем грубее глобальная модель. Их количество должно быть не менее тысячи (по поверхности Земли), что соответствует очень грубой сетке примерно 1000*1000км. По вертикали число кубиков должно быть не менее 10, иначе нельзя будет учесть важные процессы вертикального переноса массы (осадки, испарения и т.д.). Итого число кубиков должно быть значительно более 10тыс. Пусть их будет миллион.
Число параметров, определяющих состояние каждого из этих кубиков, существенно зависит от решаемой задачи. Если это экологические задачи, то необходимо учитывать многочисленные биологические факторы, характеризующие тип и состав биологических сообществ - животных и растений. Число таких параметров доходит до тысячи. Если же решается только климатическая задача, то число параметров несколько меньше.
Итак, глобальная модель характеризуется миллиардом параметров! На каждом шаге все эти параметры изменяются. Для этого нужно решить миллиард уравнений! Обычный (миллионный) компьютер с этим не справится. Эту задачу может решить только суперкомпьютер, и то не каждый, а "миллиардник". Причем ему придется изрядно потрудиться, чтобы сделать прогноз хотя бы на 1000 этапов смены состояний модели (о меньшем числе не стоит и говорить).
Глобальное моделирование уже позволило получить ряд важных результатов. Так, были рассчитаны сценарии ядерной войны, когда возмущающим фактором явилось выделение большой энергии в ряде кубиков модели, что моделировало нанесение ядерных ударов. Дальнейшее развитие событий всем известно - возникновение гигантских лесных пожаров, дым от которых надолго закроет солнце и в результате ядерная зима, если не выпадет черный дождь. Здесь есть о чем поразмыслить и военным и политикам. Именно такие размышления привели к выводу, что ядерная война является самоубийством человечества.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ ВЫСОКОЙ НАДЕЖНОСТИ
Существует большой класс практически очень важных задач, при решении которых компьютеру нельзя ошибаться, как, например, при обработке уникальной информации или при управлении реальными процессами (технологическими, управления космическими объектами, не допускающими остановки из-за неполадок в управлении, интенсивной терапии, где малейшая заминка может стоить жизни пациенту, и многие другие). Для решения подобных задач необходимы высоконадежные системы обработки информации. Но каждый элемент вычислительной техники обладает ограниченной надежностью. На первый взгляд кажется, что, собрав вычислительную систему из элементов ограниченной надежности, мы получим систему значительно более низкой надежности, чем ее элементы. Именно так было с первыми ЭВМ - они простаивали и ремонтировались значительно дольше, чем работали, так как состояли из огромного числа ненадежных элементов. Так продолжалось до тех пор, пока вопросам надежности не стали уделять специальное внимание и создавать специальные архитектуры вычислительных систем повышенной надежности. Это достигается введением все той же параллельности, как и при создании высокопроизводительных вычислительных систем.
Одним из простейших принципов повышения надежности является дублирование (или троирование) работы системы. Возьмем, к примеру, три одинаковые ненадежные ЭВМ и введем в них одну и ту же программу. Кроме этого, организуем оперативное сопоставление результатов работы этих ЭВМ через определенные интервалы времени. Если все три результата совпадают, то естественно считать, что эти ЭВМ работают правильно (случай, когда все они ошиблись одинаково при решении одной и той же задачи, исключаем ввиду его крайне малой вероятности). Если же появляется разнобой в полученных результатах, то, очевидно, какой-то из компьютеров ошибается. Как же быть в этом случае? Довольно просто - надо голосовать! При этом каждый компьютер голосует за свой результат и несложное устройство выбирает тот результат, который собрал максимальное число голосов. Если ошибся один компьютер, то все равно будет принято правильное решение, так как два компьютера дали одинаковый результат, который, набрав два очка против одного, и будет выдан как решение тройки компьютеров. (Возможна и одинаковая ошибка двух компьютеров, и тогда будет принято ошибочное решение. Но вероятность такой ситуации крайне мала и может смело не приниматься в расчет). И только когда два компьютера ошибутся одновременно (и по-разному), голосующее устройство будет поставлено в тупик - ведь все три компьютера выдали разный результат. Но такое событие происходит очень редко. Несложные расчеты показывают, что оно произойдет один раз в 100тыс. лет, если каждый из трех компьютеров ошибается один раз за три часа своей работы.
Это при случайном сбое работы компьютера, т.е. при однократной ошибке. Если же в такой "троированной" вычислительной системе откажет один компьютер (перестанет правильно работать), то два остальных смогут некоторое время поддерживать работоспособность системы (на время ремонта вышедшего из строя компьютера). Но при этом уже сбой в работе одного из двух работающих компьютеров будет лишь фиксироваться (по несовпадению результатов), что можно использовать, например, для повторения тех вычислений, в процессе которых произошел сбой. На это есть веские основания, ведь сбой случайный и повторяется нечасто. Поэтому стратегия повторения ошибочных расчетов вполне себя оправдывает и позволяет преодолеть неприятности, вызываемые случайными сбоями в компьютере.
Легко заметить, что надежность такого комплекса из трех машин значительно превышает надежность одной машины. Но эта схема слишком расточительна - она требует утроения всего вычислительного ресурса.
Можно ограничиться удвоением, если в каждую машину встроить устройства, контролирующие правильность работы элементов ЭВМ. Такой контроль позволяет сразу отключать отказавшую ЭВМ и сигнализировать обслуживающему персоналу, какой блок отказал, чтобы его заменить на новый или сделать это автоматически. Для этого каждый блок ЭВМ следует дублировать параллельно работающим точно таким же блоком и иметь подсистему контроля правильности его работы. Тогда, снимая информацию лишь с правильно работающих элементов, получаем безостановочную систему обработки информации. Действительно, при отказе одного из элементов системы сигнал о его неисправности поступает оператору, и замена этого элемента на новый происходит без остановки системы - его функции выполняет дублер.
Всякое электронное устройство имеет очень важную характеристику - наработку на отказ (среднее число часов безотказной работы этого устройства). И только задублированные описанным образом устройства не имеют такой характеристики - они никогда не отказывают. Примером такого рода компьютера, все электронные блоки которого задублированы, является наша ЭВМ ЕС-1045. Это, естественно, не означает, что такой компьютер работает совсем безотказно. Кроме электронных блоков, всякая ЭВМ имеет механические устройства (дисководы, клавиатура пульта и т.д.), которые нельзя или очень трудно задублировать и тем более автоматически выявить их неисправность. Именно они снижают надежность компьютера.
Таким образом, вычислительные системы для самых разнообразных целей (повышенной производительности, высокой надежности и т.д.) создаются с использованием идеи распараллеливания работы различных элементов, блоков и устройств вычислительных систем. Такая параллельная обработка позволяет получать необыкновенно высокие характеристики современных вычислительных систем, что является новым шагом в развитии вычислительной техники.
***
- Давно известно,- заметил Мегрэ,- что развитие передовых областей техники в нашем мире стимулируется военными. Это понятно, у военных всегда было много средств и приоритетов, они и "заказывали музыку", точнее передовую технику. А гражданские пользовались тем, что падало с марсова стола. Так было, есть и, наверное, будет. Неужели и компьютерная техника не исключение?
- К сожалению, нет,- вздохнул Поль.- Вы помните, первый компьютер был создан в США для расчета баллистических таблиц. Именно военные приложили руку к развитию вычислительных машин. Но, к счастью, возможности компьютеров в мирной области оказались столь впечатляющими, что развитие их надолго определилось интересами науки, экономики, техники и т.д.
- Так что закон нарушен, и компьютеры восторжествовали над военными?- изумился Мегрэ.
- Да, нет,- грустно сказал Поль, - довольно скоро военные поняли, что компьютеры могут применяться не только для проектирования военной техники. А военные применения компьютера требовали от него сверхвысокой производительности, огромной памяти и надежной коммуникации с источниками информации и исполнителями. Именно в этом направлении и пошло развитие вычислительной техники. Но этого же от нее ждали и мирные области.
Наиболее интересна программа КОИ (Компьютерная Оборонная Инициатива) США, принятая в 1984г. В ней до 1993г. планируется, например, создать три вида систем. Первая - автономное транспортное средство для разведки, снабжения войск и доставки боеприпасов на поле боя. Это целиком автоматизированное самоходное средство, снабженное мощным компьютером для планирования действий исходя из обстановки. При скорости 10-20км/ч для выполнения поставленных целей (доставки грузов по пересеченной местности в заданную точку) компьютер должен иметь производительность 100млрд. операций в секунду и емкость памяти в 10-100Гбайт, т.е. 10-100млрд. байт. Конечно же, это будет многопроцессорная компьютерная система с широким распараллеливанием процесса обработки поступающей с поля боя информации.
- Это же транспортный робот, о котором давно мечтают и в сельском хозяйстве, и на производстве!- воскликнул Мегрэ.- Его почти без переделки можно будет использовать.
- Разумеется, и такая преемственность предусмотрена в КОИ,- заметил Поль.- Другая система - помощник пилота-истребителя, на которого возлагаются ведение самолета, распознавание целей, ведение боя, информирование летчика о состоянии важнейших агрегатов самолета, обработка данных, получаемых с радиолокационных станций, и т.д. Причем с летчиком эта система должна общаться на естественном языке в условиях больших ускорений, шумов и вибраций. Летчик может запросить голосом любые данные о состоянии самолета, обстановке в воздухе, попросить совета и т.д. Ответ он должен получить немедленно. Стоит ли говорить, что для создания такого помощника необходимо иметь компьютерную систему гигантской производительности - порядка 1e13 операций в секунду, т.е. десять тысяч миллиардов (!), и... малых габаритов. И, наконец, система управления боевыми действиями кораблей военно-морских сил совместно с авиацией (ее компьютеры будут расположены на каждом боевом средстве) должна обеспечить представление картины боя на дисплей в центре управления, управлять им, предлагать направления наносимых ударов, прогнозировать погоду и давать прогноз на четверо суток при запросе "а что будет, если...". Всю эту огромную работу должна выполнить компьютерная система огромной производительности.
Интересно, что основные вычислительные затраты здесь идут на подсистему видения, обработки видеоинформации, поступающей в компьютер с поля боя. Поэтому компьютерная система, активно взаимодействующая с окружающим миром через подсистему видения, должна иметь огромные вычислительные мощности для обработки видеоинформации.
- Все это очень интересно,- грустно заметил Мегрэ,- но, к сожалению, так далеко от наших с вами профессиональных интересов и забот. Ведь общаться с компьютером нам приходится через клавишный пульт. А это очень узкий канал передачи информации компьютеру. Если бы, как в этих проектах, компьютер мог видеть, то ему можно было бы давать более серьезные поручения. Ведь поговорка "Лучше один раз увидеть, чем десять раз услышать" относится и к компьютерам.
- Не тужите, шеф,- успокоил его Поль.- Такой "зрячий" компьютер вы получите наверняка. Но после того, как он будет рассекречен военными,- такова наша жизнь. Это еще не самый худший случай, когда военные передают свои разработки штатским. Волей-неволей им приходится таким образом двигать прогресс. А когда оборона не понадобится (ведь настанет же такое время?) прогресс вычислительной техники будет происходить в соответствии с нашими требованиями. Я уверен, что это не за горами.
- Вы оптимист, Поль. Но хочется надеяться, что так и будет, настанет время сыщика с компьютером (а точнее, с компьютерной системой).
Существует большой класс практически очень важных задач, при решении которых компьютеру нельзя ошибаться, как, например, при обработке уникальной информации или при управлении реальными процессами (технологическими, управления космическими объектами, не допускающими остановки из-за неполадок в управлении, интенсивной терапии, где малейшая заминка может стоить жизни пациенту, и многие другие). Для решения подобных задач необходимы высоконадежные системы обработки информации. Но каждый элемент вычислительной техники обладает ограниченной надежностью. На первый взгляд кажется, что, собрав вычислительную систему из элементов ограниченной надежности, мы получим систему значительно более низкой надежности, чем ее элементы. Именно так было с первыми ЭВМ - они простаивали и ремонтировались значительно дольше, чем работали, так как состояли из огромного числа ненадежных элементов. Так продолжалось до тех пор, пока вопросам надежности не стали уделять специальное внимание и создавать специальные архитектуры вычислительных систем повышенной надежности. Это достигается введением все той же параллельности, как и при создании высокопроизводительных вычислительных систем.
Одним из простейших принципов повышения надежности является дублирование (или троирование) работы системы. Возьмем, к примеру, три одинаковые ненадежные ЭВМ и введем в них одну и ту же программу. Кроме этого, организуем оперативное сопоставление результатов работы этих ЭВМ через определенные интервалы времени. Если все три результата совпадают, то естественно считать, что эти ЭВМ работают правильно (случай, когда все они ошиблись одинаково при решении одной и той же задачи, исключаем ввиду его крайне малой вероятности). Если же появляется разнобой в полученных результатах, то, очевидно, какой-то из компьютеров ошибается. Как же быть в этом случае? Довольно просто - надо голосовать! При этом каждый компьютер голосует за свой результат и несложное устройство выбирает тот результат, который собрал максимальное число голосов. Если ошибся один компьютер, то все равно будет принято правильное решение, так как два компьютера дали одинаковый результат, который, набрав два очка против одного, и будет выдан как решение тройки компьютеров. (Возможна и одинаковая ошибка двух компьютеров, и тогда будет принято ошибочное решение. Но вероятность такой ситуации крайне мала и может смело не приниматься в расчет). И только когда два компьютера ошибутся одновременно (и по-разному), голосующее устройство будет поставлено в тупик - ведь все три компьютера выдали разный результат. Но такое событие происходит очень редко. Несложные расчеты показывают, что оно произойдет один раз в 100тыс. лет, если каждый из трех компьютеров ошибается один раз за три часа своей работы.
Это при случайном сбое работы компьютера, т.е. при однократной ошибке. Если же в такой "троированной" вычислительной системе откажет один компьютер (перестанет правильно работать), то два остальных смогут некоторое время поддерживать работоспособность системы (на время ремонта вышедшего из строя компьютера). Но при этом уже сбой в работе одного из двух работающих компьютеров будет лишь фиксироваться (по несовпадению результатов), что можно использовать, например, для повторения тех вычислений, в процессе которых произошел сбой. На это есть веские основания, ведь сбой случайный и повторяется нечасто. Поэтому стратегия повторения ошибочных расчетов вполне себя оправдывает и позволяет преодолеть неприятности, вызываемые случайными сбоями в компьютере.
Легко заметить, что надежность такого комплекса из трех машин значительно превышает надежность одной машины. Но эта схема слишком расточительна - она требует утроения всего вычислительного ресурса.
Можно ограничиться удвоением, если в каждую машину встроить устройства, контролирующие правильность работы элементов ЭВМ. Такой контроль позволяет сразу отключать отказавшую ЭВМ и сигнализировать обслуживающему персоналу, какой блок отказал, чтобы его заменить на новый или сделать это автоматически. Для этого каждый блок ЭВМ следует дублировать параллельно работающим точно таким же блоком и иметь подсистему контроля правильности его работы. Тогда, снимая информацию лишь с правильно работающих элементов, получаем безостановочную систему обработки информации. Действительно, при отказе одного из элементов системы сигнал о его неисправности поступает оператору, и замена этого элемента на новый происходит без остановки системы - его функции выполняет дублер.
Всякое электронное устройство имеет очень важную характеристику - наработку на отказ (среднее число часов безотказной работы этого устройства). И только задублированные описанным образом устройства не имеют такой характеристики - они никогда не отказывают. Примером такого рода компьютера, все электронные блоки которого задублированы, является наша ЭВМ ЕС-1045. Это, естественно, не означает, что такой компьютер работает совсем безотказно. Кроме электронных блоков, всякая ЭВМ имеет механические устройства (дисководы, клавиатура пульта и т.д.), которые нельзя или очень трудно задублировать и тем более автоматически выявить их неисправность. Именно они снижают надежность компьютера.
Таким образом, вычислительные системы для самых разнообразных целей (повышенной производительности, высокой надежности и т.д.) создаются с использованием идеи распараллеливания работы различных элементов, блоков и устройств вычислительных систем. Такая параллельная обработка позволяет получать необыкновенно высокие характеристики современных вычислительных систем, что является новым шагом в развитии вычислительной техники.
***
- Давно известно,- заметил Мегрэ,- что развитие передовых областей техники в нашем мире стимулируется военными. Это понятно, у военных всегда было много средств и приоритетов, они и "заказывали музыку", точнее передовую технику. А гражданские пользовались тем, что падало с марсова стола. Так было, есть и, наверное, будет. Неужели и компьютерная техника не исключение?
- К сожалению, нет,- вздохнул Поль.- Вы помните, первый компьютер был создан в США для расчета баллистических таблиц. Именно военные приложили руку к развитию вычислительных машин. Но, к счастью, возможности компьютеров в мирной области оказались столь впечатляющими, что развитие их надолго определилось интересами науки, экономики, техники и т.д.
- Так что закон нарушен, и компьютеры восторжествовали над военными?- изумился Мегрэ.
- Да, нет,- грустно сказал Поль, - довольно скоро военные поняли, что компьютеры могут применяться не только для проектирования военной техники. А военные применения компьютера требовали от него сверхвысокой производительности, огромной памяти и надежной коммуникации с источниками информации и исполнителями. Именно в этом направлении и пошло развитие вычислительной техники. Но этого же от нее ждали и мирные области.
Наиболее интересна программа КОИ (Компьютерная Оборонная Инициатива) США, принятая в 1984г. В ней до 1993г. планируется, например, создать три вида систем. Первая - автономное транспортное средство для разведки, снабжения войск и доставки боеприпасов на поле боя. Это целиком автоматизированное самоходное средство, снабженное мощным компьютером для планирования действий исходя из обстановки. При скорости 10-20км/ч для выполнения поставленных целей (доставки грузов по пересеченной местности в заданную точку) компьютер должен иметь производительность 100млрд. операций в секунду и емкость памяти в 10-100Гбайт, т.е. 10-100млрд. байт. Конечно же, это будет многопроцессорная компьютерная система с широким распараллеливанием процесса обработки поступающей с поля боя информации.
- Это же транспортный робот, о котором давно мечтают и в сельском хозяйстве, и на производстве!- воскликнул Мегрэ.- Его почти без переделки можно будет использовать.
- Разумеется, и такая преемственность предусмотрена в КОИ,- заметил Поль.- Другая система - помощник пилота-истребителя, на которого возлагаются ведение самолета, распознавание целей, ведение боя, информирование летчика о состоянии важнейших агрегатов самолета, обработка данных, получаемых с радиолокационных станций, и т.д. Причем с летчиком эта система должна общаться на естественном языке в условиях больших ускорений, шумов и вибраций. Летчик может запросить голосом любые данные о состоянии самолета, обстановке в воздухе, попросить совета и т.д. Ответ он должен получить немедленно. Стоит ли говорить, что для создания такого помощника необходимо иметь компьютерную систему гигантской производительности - порядка 1e13 операций в секунду, т.е. десять тысяч миллиардов (!), и... малых габаритов. И, наконец, система управления боевыми действиями кораблей военно-морских сил совместно с авиацией (ее компьютеры будут расположены на каждом боевом средстве) должна обеспечить представление картины боя на дисплей в центре управления, управлять им, предлагать направления наносимых ударов, прогнозировать погоду и давать прогноз на четверо суток при запросе "а что будет, если...". Всю эту огромную работу должна выполнить компьютерная система огромной производительности.
Интересно, что основные вычислительные затраты здесь идут на подсистему видения, обработки видеоинформации, поступающей в компьютер с поля боя. Поэтому компьютерная система, активно взаимодействующая с окружающим миром через подсистему видения, должна иметь огромные вычислительные мощности для обработки видеоинформации.
- Все это очень интересно,- грустно заметил Мегрэ,- но, к сожалению, так далеко от наших с вами профессиональных интересов и забот. Ведь общаться с компьютером нам приходится через клавишный пульт. А это очень узкий канал передачи информации компьютеру. Если бы, как в этих проектах, компьютер мог видеть, то ему можно было бы давать более серьезные поручения. Ведь поговорка "Лучше один раз увидеть, чем десять раз услышать" относится и к компьютерам.
- Не тужите, шеф,- успокоил его Поль.- Такой "зрячий" компьютер вы получите наверняка. Но после того, как он будет рассекречен военными,- такова наша жизнь. Это еще не самый худший случай, когда военные передают свои разработки штатским. Волей-неволей им приходится таким образом двигать прогресс. А когда оборона не понадобится (ведь настанет же такое время?) прогресс вычислительной техники будет происходить в соответствии с нашими требованиями. Я уверен, что это не за горами.
- Вы оптимист, Поль. Но хочется надеяться, что так и будет, настанет время сыщика с компьютером (а точнее, с компьютерной системой).
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Re: Растригин. С компьютером наедине. 1990
7. АЛЛО, ОТВЕТЬТЕ КОМПЬЮТЕРУ! (ВЫЧИСЛИТЕЛЬНЫЕ СЕТИ)
СРЕДСТВО ПЕРЕРАСПРЕДЕЛЕНИЯ РЕСУРСОВ
Всякий, кто овладел компьютером (любым - персональным или коллективного пользования), вскоре начинает думать, как бы расширить его возможности. И дело тут вовсе не в капризах пользователя, а в ограниченных ресурсах любого компьютера. Во-первых, хотелось бы повысить производительность "своего" компьютера за счет других, которые в это время простаивают, и, во-вторых (самое главное), получить доступ к их памяти, где хранятся интересующие пользователя данные, и прежде всего программы. Если первое желание связано с вполне естественной неудовлетворенностью, которая всегда наступает вскоре после овладения любым компьютером, то второе нуждается в обосновании. Дело в том, что процесс общения со всяким компьютером сводится в конечном счете к общению с его программами. И чем больше таких программ, тем эффективнее работа компьютера. Без большого преувеличения можно сказать, что интеллектуальность компьютера пропорциональна числу его программ. Именно поэтому всякий пользователь заинтересован в расширении своего информационного ресурса, в получении большого числа разнообразных программ.
Итак, именно ограниченность ресурсов компьютера (памяти, вычислительной мощности, программного обеспечения, необходимых данных и т.д.) заставляет создавать вычислительные сети, которые позволяют почти неограниченно расширять ресурсы, необходимые пользователю. Это и определяет неослабный и устойчивый интерес, проявляемый к вычислительным сетям в последние годы.
Всякая вычислительная сеть, вообще говоря, образуется только двумя подсистемами: сетью связи и вычислительными машинами, подключенными к ней. Здесь абонентами сети связи являются компьютеры. Причем та часть, за которыми работают пользователи, называют абонентскими машинами, а остальные - главными ЭВМ или ГВМ. Именно ГВМ являются источниками ресурсов вычислительной сети, предоставляемых их пользователям.
С помощью сети связи производится передача ресурсов от одной машины к другой. Так как это надо делать быстро и надежно, то в сети связи также используются компьютеры, но специального назначения - для быстрой обработки передаваемой по сети информации. Одной из важнейших функций такой обработки является коммутация информации по различным направлениям (аналогично автоматическим телефонным станциям в сети телефонной связи). Эту функцию в вычислительной сети выполняют узлы коммутации, построенные на коммутационных машинах (обычно это мини-ЭВМ). Именно коммутационные машины обеспечивают эффективность функционирования сети связи или, как ее еще называют, коммутационной сети. Очевидно, что обмен ресурсами в вычислительной сети происходит очень быстро - со скоростью коммутации информации в сети связи. Но такое объединение средств связи с вычислительной техникой не дается даром и требует разработки специальных подсистем взаимодействия компьютеров с каналами связи.
СРЕДСТВО ПЕРЕРАСПРЕДЕЛЕНИЯ РЕСУРСОВ
Всякий, кто овладел компьютером (любым - персональным или коллективного пользования), вскоре начинает думать, как бы расширить его возможности. И дело тут вовсе не в капризах пользователя, а в ограниченных ресурсах любого компьютера. Во-первых, хотелось бы повысить производительность "своего" компьютера за счет других, которые в это время простаивают, и, во-вторых (самое главное), получить доступ к их памяти, где хранятся интересующие пользователя данные, и прежде всего программы. Если первое желание связано с вполне естественной неудовлетворенностью, которая всегда наступает вскоре после овладения любым компьютером, то второе нуждается в обосновании. Дело в том, что процесс общения со всяким компьютером сводится в конечном счете к общению с его программами. И чем больше таких программ, тем эффективнее работа компьютера. Без большого преувеличения можно сказать, что интеллектуальность компьютера пропорциональна числу его программ. Именно поэтому всякий пользователь заинтересован в расширении своего информационного ресурса, в получении большого числа разнообразных программ.
Итак, именно ограниченность ресурсов компьютера (памяти, вычислительной мощности, программного обеспечения, необходимых данных и т.д.) заставляет создавать вычислительные сети, которые позволяют почти неограниченно расширять ресурсы, необходимые пользователю. Это и определяет неослабный и устойчивый интерес, проявляемый к вычислительным сетям в последние годы.
Всякая вычислительная сеть, вообще говоря, образуется только двумя подсистемами: сетью связи и вычислительными машинами, подключенными к ней. Здесь абонентами сети связи являются компьютеры. Причем та часть, за которыми работают пользователи, называют абонентскими машинами, а остальные - главными ЭВМ или ГВМ. Именно ГВМ являются источниками ресурсов вычислительной сети, предоставляемых их пользователям.
С помощью сети связи производится передача ресурсов от одной машины к другой. Так как это надо делать быстро и надежно, то в сети связи также используются компьютеры, но специального назначения - для быстрой обработки передаваемой по сети информации. Одной из важнейших функций такой обработки является коммутация информации по различным направлениям (аналогично автоматическим телефонным станциям в сети телефонной связи). Эту функцию в вычислительной сети выполняют узлы коммутации, построенные на коммутационных машинах (обычно это мини-ЭВМ). Именно коммутационные машины обеспечивают эффективность функционирования сети связи или, как ее еще называют, коммутационной сети. Очевидно, что обмен ресурсами в вычислительной сети происходит очень быстро - со скоростью коммутации информации в сети связи. Но такое объединение средств связи с вычислительной техникой не дается даром и требует разработки специальных подсистем взаимодействия компьютеров с каналами связи.
Gudleifr- Admin
- Сообщения : 3403
Дата регистрации : 2017-03-29
Страница 3 из 6 • 1, 2, 3, 4, 5, 6
Похожие темы
» Растригин. Вычислительные машины, системы, сети... 1982
» Брябрин. Программное обеспечение персональных ЭВМ. 1990
» Броуди. Начальный курс программирования на языке ФОРТ. 1990
» Приложение. В мире науки. Занимательный компьютер. 1983-1990
» Брябрин. Программное обеспечение персональных ЭВМ. 1990
» Броуди. Начальный курс программирования на языке ФОРТ. 1990
» Приложение. В мире науки. Занимательный компьютер. 1983-1990
Страница 3 из 6
Права доступа к этому форуму:
Вы не можете отвечать на сообщения