Может быть, я совершенно не прав, может быть, они действительно знают все эти вещи, но я не понимаю, в чем я не прав. Видите ли, у меня есть преимущество - я понимаю, как тяжело добывать истинное знание, как тщательно надо перепроверить результаты экспериментов, как легко ошибиться и оказаться в дураках. Я понимаю, что значит узнать что-то стоящее, и поэтому, видя, как они получают информацию, я не верю, что они осмысливают ее - они не выполняют необходимой работы, не выполняют необходимых проверок, не уделяют работе должного внимания. Я очень сомневаюсь в том, что они делают все это по недомыслию: я полагаю, что они сознательно пугают людей. Я так думаю. Я не знаю жизнь во всех деталях, но таково мое мнение.
Сомнения и колебания
Если вы ждете, что наука даст все ответы на волнующие нас вопросы: кто мы есть, где мы существуем, что такое Вселенная и многие-многие другие, то вы легко можете разрушить иллюзии и начнете искать мистические ответы на эти вопросы. Может ли ученого удовлетворить мистический ответ, я не знаю, поскольку ученому важно понимать - не важно что. Так или иначе, если я чего-то не понимаю, я думаю о том, как мне в этом разобраться, как проанализировать, пытаюсь выяснить, насколько далеко здесь можно продвинуться. Люди скажут: "Вы ищете основные законы физики?" Нет же, я просто смотрю, смогу ли узнать больше о нашем мире, и если выяснится, что существует простой основной закон, который объясняет все, это было бы очень здорово - настоящее открытие. И да будет так!
Может статься, что мир подобен луковице с миллионом слоев, и мы придем в отчаяние, устав рассматривать эти слои, но это не значит, что нет способа познания мира и природы вещей. У Природы свой путь, и когда мы собираемся исследовать этот путь, нет смысла ставить конкретные задачи, нужно просто попытаться как можно больше узнать о мире, в котором мы живем. Может статься, что мы не сумеем получить ответы на все свои вопросы, но я этого и не жду. Мое любопытство в науке состоит в том, чтобы просто узнать о мире что-то новое, и чем больше я узнаю, тем будет лучше для познания.
Существуют предположения, что человек в отличие от животных занимает особое место в этом мире. Мне хотелось бы исследовать эти тайны, но я не особенно доверяю историям, которые были придуманы о наших взаимоотношениях со Вселенной, так как они кажутся слишком простыми, слишком ассоциированными, слишком частными и провинциальными. Возьмем Землю. Он, Бог, пришел на землю - это один из аспектов Бога, - пришел на землю и наблюдает, что там происходит. Это не количественное соотношение. В любом случае с этим нет смысла спорить, и я не буду с этим спорить. Я только попытаюсь объяснить вам, почему научный взгляд на вещи, которого я придерживаюсь, повлиял на мою веру. Если это истинно и если различные религии имеют различные теории на этот счет, то как совместить это с вашим собственным знанием? Вы начинаете удивляться, у вас закрадываются сомнения. А как только вы начинаете сомневаться, просто, предположительно сомневаться, вы задаете себе вопрос: а можно ли доверять науке? Вы говорите: нет, вы не знаете, что есть истина, вы только пытаетесь найти ее и, возможно, идете неверным путем.
Отталкивайтесь в понимании религии из посылки, что все неверно. Но как только вы это сделаете, вы начнете соскальзывать с высоты, которую будет трудно восстановить. С научной точки зрения или с точки зрения моего отца, мы должны понять, что такое истина и что может быть или не может быть истиной. И раз вы начали сомневаться, - а это неотъемлемая часть моего характера, - сомневаться и задавать вопросы, ваша вера становится менее твердой.
У меня есть одно свойство - я совершенно спокойно уживаюсь со своими сомнениями, и колебаниями, и незнанием. Думаю, гораздо интереснее жить, не зная чего-то, чем иметь ответы, которые могут оказаться неправильными. У меня есть приблизительные ответы, и сносные убеждения, и различная степень уверенности относительно различных вещей, но у меня нет абсолютной уверенности относительно всего сущего, я многого не знаю, например, имеет ли смысл вопрос, почему мы здесь, и что такой вопрос мог бы означать. Я мог бы немного подумать об этом, но, если чувствую бесперспективность этих размышлений, переключаюсь на что-нибудь другое. Ведь я и не должен знать ответ на любой вопрос. Я не чувствую страха, не зная, например, таких вещей, почему мы затерялись в загадочной Вселенной, не имея какой-либо цели, кроме пути, нам уготованного. Все это далеко от понимания - и это совершенно меня не пугает.
2. Компьютеры будущего
Через сорок лет после атомной бомбардировки Нагасаки ветеран Манхэттенского проекта Ричард Фейнман выступил с докладом в Японии. Тема доклада была мирной, тема, которая занимает многие проницательные умы: будущее компьютеров, в том числе вопросы компьютерной науки, которые сделали Фейнмана провидцем, современным Нострадамусом - нижний предел размера компьютера. Может быть, эта глава вызовет вопросы у некоторых читателей; однако это такая важная часть вклада Фейнмана в науку, что, я надеюсь, они выберут время для ее чтения, даже если пропустят некоторые сугубо технические детали. Глава заканчивается кратким обсуждением одной из любимых идей Фейнмана, которая инициировала современную революцию в нанотехнологиях.
Введение
Для меня большая честь и удовольствие присутствовать здесь в качестве докладчика в память об ученом, которого я исключительно уважал и восхищался - профессора Нишины. Приехать в Японию и рассказывать о компьютерах - это все равно что читать проповедь Будде. Но я много размышлял о компьютерах - и это единственное, о чем я мог думать, когда меня пригласили сделать доклад.
Первое, что я хотел бы сказать, - я не собирался говорить о компьютерах. Я хочу рассказать об их будущем. Однако наиболее важные разработки будущего составляют предмет, о котором я не буду говорить. Например, существует великое множество работ, посвященных разработке более интеллектуальных машин - машин, умеющих лучше взаимодействовать с людьми, так чтобы ввод и вывод данных осуществлялся с меньшими усилиями по сравнению с тем сложным программированием, которое мы имеем сегодня. Это часто называют искусственным интеллектом, но мне этот термин не нравится. Возможно, неинтеллектуальные машины могут работать даже лучше, чем интеллектуальные.
Другая проблема состоит в стандартизации языков программирования. Сегодня их существует слишком много, и мне кажется разумной идея просто выбрать один из них. (Я не решаюсь упомянуть, что в Японии должно существовать больше стандартных языков - поскольку у вас имеется четыре способа письма, я думаю, что попытки стандартизации чего-либо здесь, очевидно, приведут к еще большему числу стандартов, а не к меньшему!)
Другая интересная проблема будущего состоит в том, что лучше выполнять работу на автоматически отлаженных программах, но об этом я тоже не буду говорить. Отладка означает поиск ошибок в программе или в машине; но на редкость трудно отлаживать программы, когда они становятся все более сложными.
Еще одно направление усовершенствования - сделать машины трехмерными вместо построенных на чипах, расположенных на плоскости. Это должно быть сделано поэтапно, а не сразу - вы можете создать несколько слоев, а затем добавлять постепенно все большее их число. Другое важнейшее устройство - прибор, автоматически обнаруживающий дефектные элементы на чипе; тогда чип будет автоматически перезаписывать сам себя так, чтобы избежать дефектных элементов. В настоящее время, когда мы пытаемся делать большие чипы, в них часто образуются трещины или дефектные участки, и мы выбрасываем целиком весь чип. Если мы сможем использовать действующую часть чипа, эффективность станет намного выше. Я упоминал, что попытаюсь рассказать вам об известных мне реальных проблемах машин будущего. Однако то, о чем я хочу говорить, - простые, небольшие, технически и физически добротные вещи, которые можно в принципе сделать в соответствии с физическими законами. Иначе говоря, я хотел бы обсудить механизм, а не способ, которым мы используем машины.
Я буду рассказывать о некоторых технических возможностях для создания машин. Будут затронуты три темы. Одна - это машины с параллельной обработкой, представляющие устройства очень близкого будущего, почти настоящего, которые разрабатываются в настоящее время. Более отдаленное будущее - это вопрос о потреблении энергии машинами, который на первый взгляд кажется ограниченным, но в действительности это не так. И в заключение я буду говорить о размерах.
Всегда лучше иметь машины поменьше, и вопрос заключается в том, насколько малым может стать допустимый размер, чтобы в принципе машины согласовывались с законами природы? Я не буду обсуждать, какова и в чем состоит актуальность каждой из перечисленных проблем в будущем. Это зависит от экономических и социальных условий, и я не собираюсь ломать над ними голову.
Параллельные компьютеры
Первая тема касается параллельных компьютеров. Почти все современные компьютеры, обычные компьютеры, работают на компоновке или архитектуре, придуманной фон Нейманом, в которой существуют очень большая память, где хранится вся информация, и одна центральная область, в которой проводятся простые вычисления.
Мы берем одно число из одного отдела памяти, а другое - из другого отдела памяти, посылаем их в центральное арифметическое устройство для их сложения, а затем отсылаем ответ обратно в некоторое место памяти. Существует, по сути, один центральный процессор, который работает очень-очень быстро и очень напряженно, в то время как память в целом не участвует в процессе и представляет быстрый картотечный ящик с файловой структурой, который очень редко используется. Совершенно очевидно, что чем больше процессоров работают одновременно, тем быстрее мы должны выполнять вычисления. Но здесь возникает затруднение: допустим, кому-то, работающему на одном процессоре, понадобится та же самая информация из памяти, что и другому, пользующемуся другим процессором, - и тогда все перепутывается. В связи со сказанным очень трудно разместить параллельно для работы много процессоров.
Некоторые шаги в этом направлении были предприняты на так называемых векторных процессорах. Если иногда вам необходимо выполнить одинаковые действия на многих различных элементах, вы, возможно, выполняете их одновременно. В принципе можно написать правильные программы стандартным способом, и тогда интерпретирующая программа автоматически поймет, когда полезно использовать эту векторную возможность. Такая идея применяется в компьютерах американской фирмы "Cray" и в японских "суперкомпьютерах". Другой проект состоит в том, чтобы взять большое число эффективно работающих относительно простых (но не слишком упрощенных) компьютеров и соединить их вместе в некоторую структуру. Тогда все они могут работать, составляя часть схемы. Каждый компьютер является совершенно независимым, причем они будут передавать информацию от одного к другому, когда один или другой в ней нуждается. Такого рода схема реализована, например, в Калтехе (Калифорнийском технологическом институте), в гиперкубе "Cosmic Cube", и представляет только одну из многочисленных возможностей. Сегодня многие конструируют такие машины. Другая возможность - распределить очень большое число очень малых центральных процессоров вокруг памяти. Каждый процессор общается только с малой частью памяти, и существует детально разработанная система взаимосвязей между ними. Примером такой машины является the Connection Machine (машина с переменной структурой связей с параллельными процессорами), созданная в MIT (Массачусетсом технологическом институте). Она имеет 64 000 процессоров и систему маршрутизации, в которой каждые 16 могут переговариваться с другими 16, и, таким образом, получается 4000 возможностей маршрутного соединения.
Многие научные задачи, такие, например, как прохождение волн через некоторые материалы, можно было бы очень легко решить, применив параллельное соединение процессоров. Дело в том, что происходящее в данной части пространства в некоторый момент времени может быть определено локально - нужно только знать давление и напряжение от соседних объемов. Ответ можно вычислить одновременно для каждого объема, и эти граничные условия соединяются с различными объемами. Вот почему такой тип модели работает для решения подобных задач. Если задача достаточно обширна, следует выполнить большой объем вычислений. Параллельное соединение компьютеров может значительно ускорить время решения задачи, и этот принцип применяется не только в решении научных задач.
Куда подевалось предубеждение двухлетней давности, будто параллельное программирование трудновыполнимо? Выходит, то, что было сложным и почти невыполнимым, вскоре станет обычной программой и продемонстрирует на примере этой программы эффективность параллельного соединения компьютеров. Принимая во внимание, что мы имеем возможность параллельных вычислений, нужно полностью переписать программы, по-новому переосмыслив, что происходит внутри машины. Невозможно эффективно использовать старые программы. Это колоссальное неудобство для большинства промышленных приложений, из-за этого идея может натолкнуться на значительное сопротивление. Но большие программы, как правило, дело ученых или специалистов - умных и способных программистов. Они любят свое дело и горят желанием начать все заново. Они готовы переписать программы, если это позволит сделать их более эффективными. Итак, следует перепрограммировать тяжелые, огромные программы новым способом, и когда все в конце концов придут к этому, появится все больше и больше новых программ и программисты научатся с ними работать.
Снижение энергетических потерь
Вторая тема, о которой я хочу рассказать, - это энергетические потери в компьютерах. Тот факт, что они должны охлаждаться, является очевидным ограничением для создания больших компьютеров - уже немало усилий потрачено для охлаждения такой машины. Я хотел бы объяснить, что это просто результат плохой разработки и не содержит ничего фундаментального. Внутри компьютера каждый бит информации контролируется проводом, находящимся под тем или иным напряжением. Это называется "один бит", и нам нужно менять напряжение на проводе от одного значения до другого, увеличивать или снимать с него заряд. Я приведу аналогию с водой: мы наполняем сосуд водой до определенного уровня или опустошаем его до другого уровня. Это только аналогия - если вам нравится более реалистическая задача с подачей электричества, вы можете придумать более точную электрическую схематику. То, что мы сделаем сейчас, есть аналог происходящего в случае с водой: наполним сосуд, наливая в него воду до верхнего края (Рис. 1), и будем понижать ее уровень, открыв нижний кран и позволив всей воде вытечь из сосуда. В обоих случаях существуют потери энергии из-за внезапного перепада уровня воды от высоты верхнего уровня, до которого она была налита, до нижнего уровня дна, и когда вы начинаете снова наливать воду - наоборот. В случае напряжения и заряда возникает та же самая ситуация.
Это аналогично тому, как объяснял мистер Беннет, управляя автомобилем, - он начинает двигаться при включении зажигания и останавливается при нажатии на тормоз. Каждый раз при включении зажигания и затем при нажатии на тормоз вы теряете мощность. Другой способ провести аналогию с автомобилем - обеспечение связи колес с маховиками. Когда автомобиль останавливается, скорость маховика увеличивается; таким образом, сохраняя энергию, связь может заработать, и автомобиль опять начнет двигаться. Аналог с водой будет следующим: пусть у вас есть U-образная трубка с краном в центре на ее дне, соединяющая два рукава U-образной трубки (Рис. 2). Мы начинаем заполнять ее доверху справа, причем левая часть остается пустой, кран перекрыт. Если теперь открыть кран, вода будет перетекать в другую часть трубки, мы снова своевременно перекроем кран, вода сохранится в левой стороне. Теперь мы хотим двигаться в другую сторону - снова откроем кран, и вода потечет обратно, мы ее там опять сохраним. Но налицо некоторые потери, вода уже не поднялась так же высоко, как прежде, и нам надо добавить немного воды, чтобы скорректировать потерю - потеря энергии много меньше, чем в методе прямого заполнения. Эта хитрость использует инерцию воды, аналог этого для электричества - индуктивность. Однако на современных кремниевых транзисторах очень трудно скомпенсировать индуктивность на чипах. Поэтому эта методика не слишком удобна при существующей технологии.
Еще один способ - наполнить резервуар с помощью источника напряжения, который устанавливается лишь не намного выше уровня воды. Источник своевременно поднимается, когда мы заполняем резервуар (Рис. 3),так что перепад уровня воды всегда мал на протяжении всего опыта. Таким же образом мы могли бы воспользоваться выпускным отверстием для понижения уровня в резервуаре, но сбрасывать воду вблизи верха и низа трубки так, чтобы тепловые потери в месте расположения транзистора не возникали или были небольшими. Реальный объем потерь будет зависеть от того, насколько велико расстояние между источником напряжения и поверхностью воды, когда мы наполняем резервуар. Этот метод соответствует изменению со временем подачи напряжения на источник. Итак, если пользоваться источником с меняющимся со временем напряжением, то можно применять этот метод. Безусловно, существуют потери энергии в самом источнике, но все они локализованы в одном месте, где несложно создать одну большую индуктивность. Эта схема называется "горячие часы", так как источник напряжения работает одновременно и как часы, которые фиксируют продолжительность чего-либо. Кроме того, нам не требуется дополнительного сигнала часов, чтобы измерять циклы, как это делается в обычных конструкциях.