Первый "компьютер" IBM
Aug. 14th, 2016 01:01 amНаткнулся у Ричарда Фейнмана на описание, как считали Бомбу в Лос-Аламосе. Это просто замечательно.
Ну, в общем, мы все решили, что самая главная задача - понять точно, что именно происходит во время взрыва бомбы, чтобы можно было точно указать, сколько выделяется энергии и т.д., - требовала намного больше выкладок, чем мы могли делать. Но один умный человек по имени Стэнли Френкель сообразил, что вычисления, возможно, удастся сделать на машинах IBM. Компания IBM выпускала машины для бизнеса - устройства для сложения, называемые табуляторами, и машины для умножения - мультипликаторы, в которые можно было закладывать карточки: машина считывала два числа с карточки и умножала их. Были также устройства, которые сличали числа, сортировали их и т.д.
И вот Френкель придумал замечательную программу. Если бы мы собрали довольно много таких машин в одной комнате, то мы смогли бы взять карточки и запустить их по циклу. Всякий, кто сейчас делает численные вычисления, знает точно, о чем я говорю, но тогда это было нечто новое - поточная линия из вычислительных машинок. Мы делали подобные вещи на машинках для сложения. Обычно продвигаешься шаг за шагом, проводя все выкладки самостоятельно. Но здесь все не так - сначала обращаешься к "слагателю", затем к "умножителю", опять к "слагателю" и т.д. Одним словом, Френкель спроектировал такую систему и заказал калькуляторы в компании IBM, поскольку мы поняли, что это хороший способ решения наших проблем.
При этом нам нужен был человек, который чинил бы машинки, поддерживал бы их в порядке и все такое. Военные все время собирались прислать нам такого человека из своих рядов, но дело постоянно задерживалось. Теперь мы всегда были в спешке. Все, что мы делали, мы старались делать как можно быстрее. В данном конкретном случае мы разработали все численные операции - предполагалось, что их будут делать машины - множь это, потом сделай это, потом вычти это. Мы разработали программу, но у нас пока не было машин для реальной проверки. Поэтому мы посадили в комнату девушек и снабдили каждую калькулятором Маршана: одна была "умножителем", другая - "слагателем". Еще одна возводила в куб: все, что она делала, - возводила в третью степень число на карточке и отправляла ее следующей девушке.
Так мы прошли по всему циклу, пока не "вылизали" его, не избавились от всех скрытых ошибок. Оказалось, что скорость, с которой мы теперь были в состоянии вычислять, стала чертовски большой - намного больше, чем при другом способе, когда каждый человек все шаги проделывал сам. По этой системе мы получили скорость вычислений, совпадающую с предсказываемой скоростью для машины IBM. Единственная разница состояла в том, что машины IBM не уставали и могли работать в три смены. А вот девушки через некоторое время уставали.
То есть что тут они придумали:
- программа (численный метод), как композиция элементарных операций
- виртуальную машину! (девушки с арифмометрами)
- отладка
- компьютер -- как набор специализированных модулей, которые связываются определенным образом под конкретную программу
- оперативная память -- перфокарты
- транспорт -- ручной, перемещение перфокарт от узла к узлу
и т.д.
Но и это еще не все. Параллельные вычисления!
Одна из тайных уловок при решении задач была вот какой. Задачи содержались в колоде карточек, которые должны были пройти по циклу. Сначала сложи, потом умножь - так это и шло по циклу машин в комнате, медленно двигалось по кругу. Мы придумали параллельно, но в другой фазе, запустить по циклу набор карточек другого цвета. Мы делали две или три задачи одновременно!
Частичный перезапуск в случае ошибки.
Когда пропускали карточки, машина иногда делала ошибку, или на карточке набивали не правильное число. Обычно в таких случаях нам приходилось возвращаться назад и все начинать сначала. Но мои сотрудники заметили, что ошибка в каком-то пункте в данном цикле сказывается только на соседних числах, в следующем цикле - снова на близлежащих числах и т.д. Так это и идет по всей колоде карточек. Если у вас 50 карточек и ошибка допущена в карточке Э39, она сказывается на карточках Э37, 38 и 39. В следующем цикле - на карточках Э36, 37, 38, 39 и 40. А затем она распространяется как болезнь.
Мои сотрудники обнаружили ошибку в том, что было уже сделано раньше, и у них возникла мысль - провести выкладки заново для небольшой колоды из десяти карточек вокруг ошибки. А поскольку десять карточек пройдут через машину быстрее, чем колода из пятидесяти карточек, они пропустят маленькую колоду, продолжая оперировать с пятьюдесятью карточками, в которых, как чума, распространяется ошибка. Но поскольку десять карточек будут готовы быстрее, они изолируют ошибку и исправят ее. Очень умно.
Вот как эти парни работали, чтобы увеличить скорость. Другого способа не было. Если бы им пришлось остановиться для исправления ошибки, мы бы потеряли время, а взять его нам было неоткуда.
Примерно в то же время создавался первый полноценный компьютер ЭНИАК, но основные расчеты были произведены именно описанным выше способом. Интересно, а как у нас? МЭСМ -- это 1950г, то есть расчеты по Бомбе должны были делаться тоже похожим образом. Только айбиэмовских машин у нас не было.
Ну, в общем, мы все решили, что самая главная задача - понять точно, что именно происходит во время взрыва бомбы, чтобы можно было точно указать, сколько выделяется энергии и т.д., - требовала намного больше выкладок, чем мы могли делать. Но один умный человек по имени Стэнли Френкель сообразил, что вычисления, возможно, удастся сделать на машинах IBM. Компания IBM выпускала машины для бизнеса - устройства для сложения, называемые табуляторами, и машины для умножения - мультипликаторы, в которые можно было закладывать карточки: машина считывала два числа с карточки и умножала их. Были также устройства, которые сличали числа, сортировали их и т.д.
И вот Френкель придумал замечательную программу. Если бы мы собрали довольно много таких машин в одной комнате, то мы смогли бы взять карточки и запустить их по циклу. Всякий, кто сейчас делает численные вычисления, знает точно, о чем я говорю, но тогда это было нечто новое - поточная линия из вычислительных машинок. Мы делали подобные вещи на машинках для сложения. Обычно продвигаешься шаг за шагом, проводя все выкладки самостоятельно. Но здесь все не так - сначала обращаешься к "слагателю", затем к "умножителю", опять к "слагателю" и т.д. Одним словом, Френкель спроектировал такую систему и заказал калькуляторы в компании IBM, поскольку мы поняли, что это хороший способ решения наших проблем.
При этом нам нужен был человек, который чинил бы машинки, поддерживал бы их в порядке и все такое. Военные все время собирались прислать нам такого человека из своих рядов, но дело постоянно задерживалось. Теперь мы всегда были в спешке. Все, что мы делали, мы старались делать как можно быстрее. В данном конкретном случае мы разработали все численные операции - предполагалось, что их будут делать машины - множь это, потом сделай это, потом вычти это. Мы разработали программу, но у нас пока не было машин для реальной проверки. Поэтому мы посадили в комнату девушек и снабдили каждую калькулятором Маршана: одна была "умножителем", другая - "слагателем". Еще одна возводила в куб: все, что она делала, - возводила в третью степень число на карточке и отправляла ее следующей девушке.
Так мы прошли по всему циклу, пока не "вылизали" его, не избавились от всех скрытых ошибок. Оказалось, что скорость, с которой мы теперь были в состоянии вычислять, стала чертовски большой - намного больше, чем при другом способе, когда каждый человек все шаги проделывал сам. По этой системе мы получили скорость вычислений, совпадающую с предсказываемой скоростью для машины IBM. Единственная разница состояла в том, что машины IBM не уставали и могли работать в три смены. А вот девушки через некоторое время уставали.
То есть что тут они придумали:
- программа (численный метод), как композиция элементарных операций
- виртуальную машину! (девушки с арифмометрами)
- отладка
- компьютер -- как набор специализированных модулей, которые связываются определенным образом под конкретную программу
- оперативная память -- перфокарты
- транспорт -- ручной, перемещение перфокарт от узла к узлу
и т.д.
Но и это еще не все. Параллельные вычисления!
Одна из тайных уловок при решении задач была вот какой. Задачи содержались в колоде карточек, которые должны были пройти по циклу. Сначала сложи, потом умножь - так это и шло по циклу машин в комнате, медленно двигалось по кругу. Мы придумали параллельно, но в другой фазе, запустить по циклу набор карточек другого цвета. Мы делали две или три задачи одновременно!
Частичный перезапуск в случае ошибки.
Когда пропускали карточки, машина иногда делала ошибку, или на карточке набивали не правильное число. Обычно в таких случаях нам приходилось возвращаться назад и все начинать сначала. Но мои сотрудники заметили, что ошибка в каком-то пункте в данном цикле сказывается только на соседних числах, в следующем цикле - снова на близлежащих числах и т.д. Так это и идет по всей колоде карточек. Если у вас 50 карточек и ошибка допущена в карточке Э39, она сказывается на карточках Э37, 38 и 39. В следующем цикле - на карточках Э36, 37, 38, 39 и 40. А затем она распространяется как болезнь.
Мои сотрудники обнаружили ошибку в том, что было уже сделано раньше, и у них возникла мысль - провести выкладки заново для небольшой колоды из десяти карточек вокруг ошибки. А поскольку десять карточек пройдут через машину быстрее, чем колода из пятидесяти карточек, они пропустят маленькую колоду, продолжая оперировать с пятьюдесятью карточками, в которых, как чума, распространяется ошибка. Но поскольку десять карточек будут готовы быстрее, они изолируют ошибку и исправят ее. Очень умно.
Вот как эти парни работали, чтобы увеличить скорость. Другого способа не было. Если бы им пришлось остановиться для исправления ошибки, мы бы потеряли время, а взять его нам было неоткуда.
Примерно в то же время создавался первый полноценный компьютер ЭНИАК, но основные расчеты были произведены именно описанным выше способом. Интересно, а как у нас? МЭСМ -- это 1950г, то есть расчеты по Бомбе должны были делаться тоже похожим образом. Только айбиэмовских машин у нас не было.