Страница 8 из 11
У меня есть одно свойство — я совершенно спокойно уживаюсь со своими сомнениями, и колебаниями, и незнанием. Думаю, гораздо интереснее жить, не зная чего-то, чем иметь ответы, которые могут оказаться неправильными. У меня есть приблизительные ответы, и сносные убеждения, и различная степень уверенности относительно различных вещей, но у меня нет абсолютной уверенности относительно всего сущего, я многого не знаю, например, имеет ли смысл вопрос, почему мы здесь, и что такой вопрос мог бы означать. Я мог бы немного подумать об этом, но, если чувствую бесперспективность этих размышлений, переключаюсь на что-нибудь другое. Ведь я и не должен знать ответ на любой вопрос. Я не чувствую страха, не зная, например, таких вещей, почему мы затерялись в загадочной Вселенной, не имея какой-либо цели, кроме пути, нам уготованного. Все это далеко от понимания — и это совершенно меня не пугает.
2. Компьютеры будущего
Через сорок лет после атомной бомбардировки Нагасаки ветеран Манхэттенского проекта Ричард Фейнман выступил с докладом в Японии. Тема доклада была мирной, тема, которая занимает многие проницательные умы: будущее компьютеров, в том числе вопросы компьютерной науки, которые сделали Фейнмана провидцем, современным Нострадамусом — нижний предел размера компьютера. Может быть, эта глава вызовет вопросы у некоторых читателей; однако это такая важная часть вклада Фейнмана в науку, что, я надеюсь, они выберут время для ее чтения, даже если пропустят некоторые сугубо технические детали. Глава заканчивается кратким обсуждением одной из любимых идей Фейнмана, которая инициировала современную революцию в нанотехнологиях.
Введение
Для меня большая честь и удовольствие присутствовать здесь в качестве докладчика в память об ученом, которого я исключительно уважал и восхищался — профессора Нишины. Приехать в Японию и рассказывать о компьютерах — это все равно что читать проповедь Будде. Но я много размышлял о компьютерах — и это единственное, о чем я мог думать, когда меня пригласили сделать доклад.
Первое, что я хотел бы сказать, — я не собирался говорить о компьютерах. Я хочу рассказать об их будущем. Однако наиболее важные разработки будущего составляют предмет, о котором я не буду говорить. Например, существует великое множество работ, посвященных разработке более интеллектуальных машин — машин, умеющих лучше взаимодействовать с людьми, так чтобы ввод и вывод данных осуществлялся с меньшими усилиями по сравнению с тем сложным программированием, которое мы имеем сегодня. Это часто называют искусственным интеллектом, но мне этот термин не нравится. Возможно, неинтеллектуальные машины могут работать даже лучше, чем интеллектуальные.
Другая проблема состоит в стандартизации языков программирования. Сегодня их существует слишком много, и мне кажется разумной идея просто выбрать один из них. (Я не решаюсь упомянуть, что в Японии должно существовать больше стандартных языков — поскольку у вас имеется четыре способа письма, я думаю, что попытки стандартизации чего-либо здесь, очевидно, приведут к еще большему числу стандартов, а не к меньшему!)
Другая интересная проблема будущего состоит в том, что лучше выполнять работу на автоматически отлаженных программах, но об этом я тоже не буду говорить. Отладка означает поиск ошибок в программе или в машине; но на редкость трудно отлаживать программы, когда они становятся все более сложными.
Еще одно направление усовершенствования — сделать машины трехмерными вместо построенных на чипах, расположенных на плоскости. Это должно быть сделано поэтапно, а не сразу — вы можете создать несколько слоев, а затем добавлять постепенно все большее их число. Другое важнейшее устройство — прибор, автоматически обнаруживающий дефектные элементы на чипе; тогда чип будет автоматически перезаписывать сам себя так, чтобы избежать дефектных элементов. В настоящее время, когда мы пытаемся делать большие чипы, в них часто образуются трещины или дефектные участки, и мы выбрасываем целиком весь чип. Если мы сможем использовать действующую часть чипа, эффективность станет намного выше. Я упоминал, что попытаюсь рассказать вам об известных мне реальных проблемах машин будущего. Однако то, о чем я хочу говорить, — простые, небольшие, технически и физически добротные вещи, которые можно в принципе сделать в соответствии с физическими законами. Иначе говоря, я хотел бы обсудить механизм, а не способ, которым мы используем машины.
Я буду рассказывать о некоторых технических возможностях для создания машин. Будут затронуты три темы. Одна — это машины с параллельной обработкой, представляющие устройства очень близкого будущего, почти настоящего, которые разрабатываются в настоящее время. Более отдаленное будущее — это вопрос о потреблении энергии машинами, который на первый взгляд кажется ограниченным, но в действительности это не так. И в заключение я буду говорить о размерах.
Всегда лучше иметь машины поменьше, и вопрос заключается в том, насколько малым может стать допустимый размер, чтобы в принципе машины согласовывались с законами природы? Я не буду обсуждать, какова и в чем состоит актуальность каждой из перечисленных проблем в будущем. Это зависит от экономических и социальных условий, и я не собираюсь ломать над ними голову.
Параллельные компьютеры
Первая тема касается параллельных компьютеров. Почти все современные компьютеры, обычные компьютеры, работают на компоновке или архитектуре, придуманной фон Нейманом[6], в которой существуют очень большая память, где хранится вся информация, и одна центральная область, в которой проводятся простые вычисления.
Мы берем одно число из одного отдела памяти, а другое — из другого отдела памяти, посылаем их в центральное арифметическое устройство для их сложения, а затем отсылаем ответ обратно в некоторое место памяти. Существует, по сути, один центральный процессор, который работает очень-очень быстро и очень напряженно, в то время как память в целом не участвует в процессе и представляет быстрый картотечный ящик с файловой структурой, который очень редко используется. Совершенно очевидно, что чем больше процессоров работают одновременно, тем быстрее мы должны выполнять вычисления. Но здесь возникает затруднение: допустим, кому-то, работающему на одном процессоре, понадобится та же самая информация из памяти, что и другому, пользующемуся другим процессором, — и тогда все перепутывается. В связи со сказанным очень трудно разместить параллельно для работы много процессоров.
Некоторые шаги в этом направлении были предприняты на так называемых векторных процессорах. Если иногда вам необходимо выполнить одинаковые действия на многих различных элементах, вы, возможно, выполняете их одновременно. В принципе можно написать правильные программы стандартным способом, и тогда интерпретирующая программа автоматически поймет, когда полезно использовать эту векторную возможность. Такая идея применяется в компьютерах американской фирмы «Cray» и в японских «суперкомпьютерах». Другой проект состоит в том, чтобы взять большое число эффективно работающих относительно простых (но не слишком упрощенных) компьютеров и соединить их вместе в некоторую структуру. Тогда все они могут работать, составляя часть схемы. Каждый компьютер является совершенно независимым, причем они будут передавать информацию от одного к другому, когда один или другой в ней нуждается. Такого рода схема реализована, например, в Калтехе (Калифорнийском технологическом институте), в гиперкубе «Cosmic Cube», и представляет только одну из многочисленных возможностей. Сегодня многие конструируют такие машины. Другая возможность — распределить очень большое число очень малых центральных процессоров вокруг памяти. Каждый процессор общается только с малой частью памяти, и существует детально разработанная система взаимосвязей между ними. Примером такой машины является the Co
6
Джон фон Нейман (1903–1957) — венгерско-американский математик, его считают одним из отцов вычислительных машин. — Примеч. ред. иностр. издания.