Тенденции развития компьютерных технологий
Сегодня вы ежедневно видите вокруг множество компьютеров, самых разнообразных по назначению, конструкции и внешнему виду. Все они относятся к четвёртому поколению электронных вычислительных машин (ЭВМ), которые сейчас называют компьютерами.
Настольные персональные компьютеры, состоящие из системного блока и подключённых к нему внешних устройств, появились в конце XX века.
Многие современные компьютеры (в том числе и настольные!) изготавливаются как моноблоки (панельные компьютеры): в одном корпусе смонтированы все узлы компьютера, в том числе монитор. К моноблокам относятся также все планшетные компьютеры и смартфоны. Моноблокам с сенсорными экранами (реагирующими на прикосновение) не нужны клавиатура и мышь, поэтому они часто используются в системах автоматизации.
Промышленные компьютеры на предприятиях применяют для управления сложной техникой, например в автоматизированных системах управления технологическими процессами (АСУ ТП). Они часто устанавливаются рядом с оборудованием и поэтому должны надёжно работать в неблагоприятных условиях: при вибрации, повышенной влажности, меняющейся температуре, пыли, перепадах давления.
Отличительная черта XXI века — увеличение мобильности пользователей, которые хотят иметь возможность в любой момент посмотреть новости, прочитать сообщения электронной почты и ответить на них, обратиться к информационным системам и т. п.
Мобильным называется устройство, которое:
- находится постоянно с пользователем;
- готово к работе в любой момент;
- является персональным, обычно защищено паролем;
- может подключаться к компьютерным сетям.
В портативных компьютерах — их называют ноутбуками (от английского слова notebook — тетрадь, блокнот) или ультрабуками — все устройства смонтированы в одном корпусе. По своим возможностям они сейчас практически не уступают настольным компьютерам.
Стремительно растёт популярность планшетных компьютеров, в которых для ввода данных нажимают пальцем на сенсорный экран.
Приборы бытовой электроники всё больше и больше приближаются к компьютерам по своим возможностям. Например, смартфоны выполняют функции и сотового телефона, и небольшого, но достаточно мощного компьютера. Уменьшение размеров компьютеров позволяет встраивать их в часы и даже в очки.
Встроенные компьютеры (англ, embedded computers) — это компьютеры, которые входят в состав устройства, которым они управляют. В отличие от универсальных компьютеров они могут решать только заранее определённые задачи, программы для решения которых заранее введены в их память. Они должны иметь небольшие размеры и вес и потреблять кяк можно меньше электроэнергии.
Сейчас встроенные компьютеры:
- обрабатывают звук и видео в реальном времени;
- управляют работой станков с числовым программным управлением (ЧПУ);
- управляют работой банкоматов и платёжных терминалов;
- управляют медицинскими приборами;
- управляют самолётами и судами и решают многие другие задачи.
В любом современном автомобиле установлено несколько цифровых управляющих устройств, и их программное обеспечение не уступает по сложности программному обеспечению настольных компьютеров.
Главный элемент встроенного компьютера — микроконтроллер — миниатюрный компьютер, в котором на одном кристалле кремния объединены процессор, оперативная и постоянная память, каналы ввода и вывода данных.
Встроенные компьютеры — основа систем управления роботами. На современных заводах используется огромное количество промышленных роботов — станков с ЧПУ. Такие станки обрабатывают детали по заложенной в них программе. Для того чтобы перестроить станок на изготовление другого типа деталей, достаточно просто заменить программу. Роботы используются на конвейерных линиях, изготавливающих микросхемы для компьютеров: процессоры, память и др. Нас окружают автоматизированные системы, которые тоже можно назвать роботами, например система управления движением поездов метро, система управления отоплением дома.
Важное направление в компьютерах четвёртого поколения — параллельная (одновременная) обработка данных.
Параллельные вычисления — это вычисления на многопроцессорных системах, при которых одновременно выполняются многие действия, необходимые для решения одной или нескольких задач.
Если решаемую задачу удаётся разбить на независимые друг от друга подзадачи, то их не обязательно делать друг за другом, а можно для экономии времени выполнять одновременно, поручив каждую задачу отдельному процессору. Более того, все современные процессоры — многоядерные, т. е. фактически в одном кристалле «упакованы» несколько процессоров. Это позволяет проводить параллельные вычисления даже на одном компьютере.
Различают два вида параллельных вычислений — по задачам и по данным. Параллельное выполнение задач означает, что каждый процессор выполняет свою собственную программу (задачу). Такой режим работы используется в многозадачных операционных системах и серверах. Разделить задачи между процессорами (или ядрами одного процессора) легко, но при этом трудно обеспечить их равномерную загрузку.
При параллельной работе с данными несколько процессоров совместно решают одну задачу. Например, можно разделить обработку 1000 элементов массива между 10 процессорами, и тогда каждому придётся обработать всего по 100 чисел. В этом случае нагрузка на процессоры будет практически одинаковой. Но появляются другие проблемы, которые затрудняют параллельную реализацию алгоритмов:
- время выполнения программы увеличивается из-за передачи исходных данных и результатов вычислений между процессорами;
- часто одному процессору просто приходится простаивать, пока другой не закончит свою часть вычислений; например, нельзя получить окончательную сумму чисел, пока не готово хотя бы одно из слагаемых, вычисляемых другими процессорами;
- в параллельных алгоритмах появляются дополнительные действия, связанные с распределением и организацией вычислений;
- параллельный алгоритм, как правило, требует дополнительной памяти по сравнению с последовательным.
Существуют два подхода к организации параллельных вычислений. В первом из них все процессоры берут данные из общей памяти. В этом случае легко написать параллельную программу, но зато память, с которой одновременно работают все процессоры, сильно перегружается (на практике из-за этого невозможно использовать более 16-32 процессоров). Второй подход — объединение независимых процессоров, каждый из которых имеет свою память (такая память называется распределённой). Это напоминает компьютерную сеть из отдельных машин. Во время вычислений процессоры меньше мешают друг другу, зато необходимо специально организовывать передачу данных между ними.
Мощные многопроцессорные компьютеры, в которых выполняется параллельная обработка данных, называют суперкомпьютерами. Все развитые страны ведут жёсткую конкуренцию в области суперкомпьютеров, поскольку обладание такой техникой позволяет решать стратегически важные вычислительные задачи:
- исследование геофизики Земли, прогнозирование изменений климата на планете;
- создание математических моделей молекул (полимеров, кристаллов и т. п.), синтез новых материалов и лекарств;
- расчёт процессов горения и взрыва, а также моделирование других физических задач (обтекание летательных аппаратов, расчёт на прочность кузовов автомобилей);
- моделирование и прогнозирование ситуации в экономике;
- моделирование работы человеческого мозга;
- расчёты процессов нефте и газодобычи, а также сейсморазведки недр;
- проектирование новых электронных устройств.
Приведём несколько примеров применения суперкомпьютеров. Исследователи фирмы IBM на протяжении десятилетий изучают деятельность мозга и пытаются моделировать её. В 2009 году появилось сообщение о том, что полученная в рамках проекта модель мозга по своим возможностям превзошла уровень кошки: моделируется 1 миллиард нейронов и 10 триллионов связей между ними! Модель работает на базе суперкомпьютера Blue Gene/P, имеющего 147 456 процессоров и 144 Тбайт оперативной памяти.
По данным компании Ford Motor, благодаря детальному моделированию на суперкомпьютере количество разрушаемых в крэштестах автомобилей удаётся сократить на треть.
Применение суперкомпьютеров для расчёта состава лекарств позволяет уменьшить срок их разработки с нескольких лет до полугода.
Мощные компьютеры используются при создании компьютерных спецэффектов в кино. Например, в фильме «Властелин колец» фирме WET A Digital потребовалось столько суперкомпьютеров, что Новая Зеландия вышла на первое место в мире по их количеству на душу населения.
В 2009 году в МГУ им. М. И. Ломоносова введён в строй самый мощный российский суперкомпьютер «Ломоносов» производительностью около 400 Тфлопс). В его состав входят 8892 многоядерных процессора (общее число ядер — 35 776). На момент запуска, «Ломоносов» занимал в мировом рейтинге суперкомпьютеров Тор500 двенадцатое место. В 2014 году запущен новый суперкомпьютер «Ломоносов-2», который работает в несколько раз быстрее своего предшественника.
Вычислительные задачи, которые ставятся перед современными компьютерами, стали настолько сложны, что решить их за приемлемое время с помощью одного компьютера уже невозможно. Для получения нужных результатов учёным требуется обрабатывать петабайты данных, и даже их хранение представляет собой серьёзную проблему. Поэтому возникла идея объединить мощность многих компьютеров для решения особо сложных задач.
Первым шагом в этом направлении стало создание кластеров (англ, cluster). Так называют группу компьютеров, которые обычно расположены в одном или нескольких соседних зданиях и объединены в локальную сеть. Компьютеры в кластере работают совместно, выполняя общую задачу, и для пользователя кластер выглядит как одна мощная вычислительная система.
Как правило, все компьютеры в кластере строятся на одинаковой аппаратуре, используют одно и то же специальное программное обеспечение и решают одну задачу. Таким образом, кластер может в некоторых случаях заменить суперкомпьютер. Программное обеспечение для кластерных систем должно быть написано специально «под задачу», т. е. сразу решать произвольные задачи на кластере не получится.
Иногда кластеры собираются из обычных рабочих станций (англ. COW: Cluster of Workstation). Они относительно дёшевы и высокопроизводительны.
Развитие этой идеи привело к разработке распределённых вычислительных систем. Их также называют грид-системами (от англ, grid — сетка, решётка).
Распределённая система — это группа независимых компьютеров, которая для пользователей представляет собой единую вычислительную систему.
Компьютеры, объединённые в грид-систему, могут располагаться в любых точках земного шара. Для их связи используются не высокоскоростные локальные сети (как в кластерах), а сеть Интернет. Узлы распределённой системы обмениваются данными в виде сообщений, они могут строиться на любой аппаратуре и использовать различные операционные системы. В грид-систему могут входить как обычные персональные компьютеры, так и мощные кластеры. Любой узел в любой момент может отключиться или вновь подключиться к распределённой системе, при этом работа всей системы не нарушается. Фактически грид-система представляет собой виртуальный суперкомпьютер (его также называют мета-компьютером).
Для распределённых вычислений лучше всего подходят задачи переборного и поискового типа, где отдельные узлы практически не взаимодействуют друг с другом. Специальная программа на компьютере пользователя соединяется с управляющим узлом и получает от него очередную порцию работы. Выполнив задание, узел передаёт обратно отчёт о полученном результате (например, о том, что цель поиска достигнута). Таким образом, объединяя в грид-систему большое количество обычных персональных компьютеров, можно достичь вычислительной мощности мощнейших суперкомпьютеров.
Согласно исследованиям, 90% пользователей загружает свой процессор менее, чем на 40%. Поэтому каждый из нас может принять посильное участие в решении научных задач, добровольно подключив свой компьютер к системе распределённых вычислений в рамках одного из проектов, например с помощью системы BOINC (англ. Berkeley Open Infrastructure for Network Computing — открытая инфраструктура для сетевых вычислений университета Беркли). Например, с помощью распределённых вычислений выполняется поиск новых больших простых чисел.
В мае 2016 года в распределённой сети BOINC было более 350 000 участников и около миллиона компьютеров общей производительностью 11,6 петафлопс.
Сейчас мы используем всё более сложные программы, которые требуют для своей работы всё более мощных компьютеров. Нам нужно обрабатывать всё большие объёмы данных, и эти данные нужно где-то хранить, поэтому мы приобретаем всё более дорогие компьютеры. Но, как правило, такие сложные задачи нужно решать довольно редко, и гигабайты данных нам тоже нужны не каждый день. Поэтому появилась идея временно арендовать нужные ресурсы, используя для решения сложных задач мощности серверов в Интернете.
Облачные вычисления (англ, cloud computing) — технология обработки данных, при которой компьютерные ресурсы предоставляются пользователю как интернет-сервис.
Термины «облако» и «облачные вычисления» впервые использовал в одном из своих докладов глава компании Google Эрик Шмидт в 2006 году. После его выступления эта модель стала активно развиваться.
Слово «облако» используется как образ сложной системы, за которым скрываются все технические детали. Пользователь имеет доступ к своим данным, но не должен заботиться об аппаратном и программном обеспечении системы, с которой он работает. Все данные постоянно хранятся на серверах в Интернете и для обработки временно копируются на компьютер пользователя (игровую приставку, ноутбук, смартфон и т. д.).
Сегодня практически все ведущие компьютерные компании (в том числе Google, Microsoft, Amazon, IBM) предлагают свои облачные технологии. Пользователь получает вычислительные мощности и программное обеспечение как услугу, которую должен обеспечить провайдер.
Существует три основные модели облачных вычислений:
- программное обеспечение как услуга (англ. SaaS: Software as a Service), пользователь арендует программное обеспечение провайдера, которое работает в облаке;
- платформа как услуга (англ. PaaS: Platform as a Service), пользователь получает возможность разрабатывать или развёртывать готовые программы с помощью инструментов и языков программирования, которые поддерживает провайдер;
- инфраструктура как услуга (англ. IaaS: Infrastructure as а Service), пользователь получает все средства для установки и выполнения любых нужных ему программ, включая операционные системы.
Использование облачных технологий даёт значительные преимущества как для компаний, так и для обычных пользователей:
- данные в облаке доступны из любой точки, где есть доступ в Интернет;
- данные надёжно хранятся в центрах обработки данных (ЦОД) крупных компаний;
- доступны большие вычислительные мощности для хранения и обработки данных;
- уменьшаются затраты — не нужно покупать дорогостоящие компьютеры и нанимать специалиста по обслуживанию локальных сетей; оплата начисляется только за фактически использованные ресурсы.
Однако у облачных технологий есть и недостатки. В первую очередь они связаны с тем, что ваши данные попадают в руки разработчика облачного программного обеспечения, который теоретически может воспользоваться ими, как захочет. Нередко пользователь не может полностью удалить с серверов свои данные, и они могут храниться годами на дисках провайдера.
В конце XX века много шума наделал японский проект пятого поколения (1982-1992 годы). Было заявлено, что в основе компьютеров пятого поколения будут уже не вычисления, а логические заключения, т. е. произойдёт переход от обработки данных к обработке знаний. Машину обещали научить воспринимать речевые команды человека, читать рукописный текст, анализировать графические изображения и делать многие другие нетривиальные для компьютера вещи. Планы проекта были грандиозны. Но, несмотря на щедрое финансирование и передовые позиции японских технологий, успехи оказались весьма скромными. На основе программного моделирования на компьютерах четвёртого поколения удалось реализовать лишь отдельные детали проекта, причём реальная машина, работающая на базе логических выводов, так и не вышла за стены лабораторий.
Таким образом, создание принципиально новых компьютеров пятого поколения закончилось неудачей. Все компьютеры, используемые в настоящее время, по-прежнему построены на базе идей четвёртого поколения. Классификация поколений «замерла» в ожидании новых революционных идей.
Такие идеи особенно необходимы ещё и потому, что увеличивать быстродействие процессоров бесконечно не получится из-за ограничений, связанных с действием законов физики.
Для того чтобы обрабатывать данные, части процессора должны обмениваться сигналами. Скорость передачи электрических сигналов огромна, но не бесконечна — она не может быть больше, чем скорость света в вакууме. Поэтому единственный способ снизить время передачи данных — уменьшать размеры элементов процессора. Но при этом появляются другие проблемы:
- чем мельче детали, тем сложнее их изготовить с нужной точностью;
- при обмене сигналами электронные схемы сильно нагреваются и при перегреве могут перестать работать. Чем мельче элементы, тем труднее охладить процессор;
- если «провода», проводящие электрический ток, расположить слишком близко, между ними может произойти короткое замыкание и вся схема выйдет из строя.
Сейчас для увеличения быстродействия применяют многоядерные процессоры. Однако этот подход тоже не решает всех проблем.
- Далеко не все задачи можно разделить на части, которые могут выполняться одновременно (параллельно).
- Обмен данными между процессорами происходит медленнее, чем внутри одного процессора. Из-за этих потерь времени вся экономия от параллельных вычислений может быть «съедена», так что никакого увеличения скорости работы не получится.
Поэтому постоянно идёт поиск неэлектронных средств хранения и обработки данных. В первую очередь учёные попытались использовать в качестве носителя информации свет — так появились оптические процессоры. В них можно применять параллельную обработку данных, например одновременно выполнять какую- то операцию со всеми пикселями изображения. В 2003 году был выпущен оптический процессор Enlight256, у которого оптическое ядро, а входные и выходные данные представлены в электронном виде. Быстродействие этого процессора — 8 триллионов операций в секунду. Он состоит из 256 лазеров, набора линз и фотоприёмников. Оптические процессоры используются в военной технике и при обработке видеоданных в реальном времени.
Большие надежды связаны с разработкой квантовых компьютеров, в которых применяются идеи квантовой физики, описывающей законы микромира и поведение отдельных элементарных частиц. Данные для обработки в квантовом компьютере записываются в систему кубитов — квантовых битов. Затем с помощью специальных операций состояние этой системы изменяют по определённому алгоритму. Конечное состояние системы кубитов — это и есть ответ в задаче. Особые свойства кубитов позволяют организовать параллельную обработку данных, так же как и в многопроцессорных системах. Поэтому многие задачи, для решения которых сейчас не хватает вычислительных ресурсов (например, раскрытие шифров), будут достаточно быстро решены, как только квантовый компьютер будет построен.
В некоторых лабораториях ведётся разработка биологических компьютеров (биокомпьютеров), которые работают, как живой организм. Ячейки памяти биокомпьютеров — это молекулы сложных органических соединений, например молекулы ДНК, в которых хранится наследственная информация. Сам процесс вычислений — это химическая реакция, результат — состав и строение получившей молекулы.
Проводятся также исследования и в области нанотехнологий, с помощью которых планируют построить транзистор размером с молекулу.