Читаем Радость познания полностью

Куда подевалось предубеждение двухлетней давности, будто параллельное программирование трудновыполнимо? Выходит, то, что было сложным и почти невыполнимым, вскоре станет обычной программой и продемонстрирует на примере этой программы эффективность параллельного соединения компьютеров. Принимая во внимание, что мы имеем возможность параллельных вычислений, нужно полностью переписать программы, по-новому переосмыслив, что происходит внутри машины. Невозможно эффективно использовать старые программы. Это колоссальное неудобство для большинства промышленных приложений, из-за этого идея может натолкнуться на значительное сопротивление. Но большие программы, как правило, дело ученых или специалистов — умных и способных программистов. Они любят свое дело и горят желанием начать все заново. Они готовы переписать программы, если это позволит сделать их более эффективными. Итак, следует перепрограммировать тяжелые, огромные программы новым способом, и когда все в конце концов придут к этому, появится все больше и больше новых программ и программисты научатся с ними работать.

<p>Снижение энергетических потерь</p>

Вторая тема, о которой я хочу рассказать, — это энергетические потери в компьютерах. Тот факт, что они должны охлаждаться, является очевидным ограничением для создания больших компьютеров — уже немало усилий потрачено для охлаждения такой машины. Я хотел бы объяснить, что это просто результат плохой разработки и не содержит ничего фундаментального. Внутри компьютера каждый бит информации контролируется проводом, находящимся под тем или иным напряжением. Это называется «один бит», и нам нужно менять напряжение на проводе от одного значения до другого, увеличивать или снимать с него заряд. Я приведу аналогию с водой: мы наполняем сосуд водой до определенного уровня или опустошаем его до другого уровня. Это только аналогия — если вам нравится более реалистическая задача с подачей электричества, вы можете придумать более точную электрическую схематику. То, что мы сделаем сейчас, есть аналог происходящего в случае с водой: наполним сосуд, наливая в него воду до верхнего края (Рис. 1),и будем понижать ее уровень, открыв нижний кран и позволив всей воде вытечь из сосуда. В обоих случаях существуют потери энергии из-за внезапного перепада уровня воды от высоты верхнего уровня, до которого она была налита, до нижнего уровня дна, и когда вы начинаете снова наливать воду — наоборот. В случае напряжения и заряда возникает та же самая ситуация.

Это аналогично тому, как объяснял мистер Беннет, управляя автомобилем, — он начинает двигаться при включении зажигания и останавливается при нажатии на тормоз. Каждый раз при включении зажигания и затем при нажатии на тормоз вы теряете мощность. Другой способ провести аналогию с автомобилем — обеспечение связи колес с маховиками. Когда автомобиль останавливается, скорость маховика увеличивается; таким образом, сохраняя энергию, связь может заработать, и автомобиль опять начнет двигаться. Аналог с водой будет следующим: пусть у вас есть U-образная трубка с краном в центре на ее дне, соединяющая два рукава U-образной трубки (Рис. 2).Мы начинаем заполнять ее доверху справа, причем левая часть остается пустой, кран перекрыт. Если теперь открыть кран, вода будет перетекать в другую часть трубки, мы снова своевременно перекроем кран, вода сохранится в левой стороне. Теперь мы хотим двигаться в другую сторону — снова откроем кран, и вода потечет обратно, мы ее там опять сохраним. Но налицо некоторые потери, вода уже не поднялась так же высоко, как прежде, и нам надо добавить немного воды, чтобы скорректировать потерю — потеря энергии много меньше, чем в методе прямого заполнения. Эта хитрость использует инерцию воды, аналог этого для электричества — индуктивность. Однако на современных кремниевых транзисторах очень трудно скомпенсировать индуктивность на чипах. Поэтому эта методика не слишком удобна при существующей технологии.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже