В прошлый раз мы пытались сравнивать процессор и компьютер на уровне их элементарных структурных единиц — нейрона и транзистора — и пришли к выводу, что это сопоставление имеет право на жизнь.
Но в мозге не бывает «просто нейронов»: все они входят в состав неких функциональных отделов. Можно ли найти их аналоги у процессора? Да, но, как мы увидим, в распределении функций по выделенным отделам мозг продвинулся куда дальше процессора: несмотря на стремительный прирост ядер, у «электронных мозгов» лишь совсем недавно появились истинно специализированные области.
Среди общих свойств процессора и мозга есть одно, пожалуй, важнейшее: и тому и другому приходится решать множество довольно далёких друг от друга задач. Вот, например, мозг: он слушает звук вокруг нас, он перерабатывает зрительную информацию, он следит за положением тела в пространстве, наблюдает за дыханием и температурой тела, даёт мышцам сигналы на сокращение и расслабление, запоминает и вспоминает, эмоционально переживает и планирует, чем бы заняться… И это, конечно, далеко не полный перечень его обязанностей.
С процессором ситуация похожая: мы печатаем текст в Word’е, слушаем музыку в Winamp’е, рисуем в Photoshop’е — и одновременно с этим процессор способен, например, обновлять систему. Разумеется, процессор может по очереди выполнять инструкции, связанные с каждой такой задачей: особенности машинной кибернетики позволяют делать это с огромной быстротой. Однако со временем программы усложнились, и, соответственно, возросли требования к процессору, так что разработчикам пришлось поделить последний на части и включить в его структуру функциональные подразделения — примерно как в мозге.
Перечислять все специализированные отделы человеческого мозга, вероятно, ни к чему, достаточно назвать лишь некоторые. Вот, скажем, всем известный мозжечок — отдел мозга, отвечающий за равновесие, мышечный тонус, координацию движений и т. п.; без мозжечка мы не смогли бы ни автомобилем управлять, ни текст набирать, ни рисовать. Или, к примеру, продолговатый мозг, от которого зависят дыхательные рефлексы, работа сердца и пищеварительного аппарата. Или лимбическая система, которая и обонянием занимается, и эмоциями, и памятью. Или зрительная кора, которая, как ясно из названия, обрабатывает зрительные импульсы…
Специализация мозга; разными цветами обозначены отделы коры и подкорковые структуры (иллюстрация Fernando Da Cunha).Мы беспорядочно назвали несколько отделов, манкируя их более детальной «пропиской». Специалист же на нашем месте не преминул бы указать, что зрительная кора есть часть большого отдела — так называемой коры большого мозга, а мозжечок и продолговатый мозг в кору совсем не входят, то есть представляют собой более крупные систематические единицы, и у того же мозжечка вообще есть собственная кора. И это, безусловно, даёт более полное представление о специализации мозга, хотя, наверное, неподготовленный читатель может запутаться. Последнее особенно справедливо, если вспомнить, что специализация касается и нейронов. То есть даже по внешнему виду нейроны мозга порой сильно отличаются друг от друга (например, по числу отростков-дендритов), а уж на молекулярно-биохимическом и функциональном уровне они и подавно принципиально разнятся. Они используют разные нейромедиаторы и специализируются на информации разного рода, и знаменитое функциональное деление коры мозга на цитоархитектонические поля Бродмана как раз основывается на связи особенностей строения нейронов с их специализацией в смысле функционирования.
Понятно, что специализация и распределение функций по зонам улучшают производительность, как и всякое разделение труда. В случае живой системы ни о чём другом и речи быть не может: представим, что звуковым и зрительным раздражениям пришлось бы стоять в очереди, пока мозг не проконтролирует очередное дыхательное движение. Но процессоры до недавнего времени так и работали, пока их не научились «специализировать». Один из аспектов такой профессионализации — это ядра, физические или функциональные. Ядра могут выполнять одни и те же задачи, или же некоторые из них могут специализироваться на каких-то конкретных операциях, и такая гетерогенная архитектура ещё сильнее сближает процессор и мозг.
Серверный процессор AMD серии Opteron 6000 с двенадцатью вычислительными ядрами (фото Bit-Tech.net).В серверных системах число ядер может достигать 64, но разработчики говорят и о куда большей цифре, однако это пока область экспериментов. Их количество определяет максимально возможное число одновременно обрабатываемых потоков данных. В зависимости от ситуации нагрузка может перераспределяться между всеми доступными ядрами или направляться на какое-то одно ради экономии энергии. Вообще, и число ядер, и их производительность стали расти, когда на одной площадке попробовали размещать всё больше транзисторов. Из чего следует, что сами транзисторы устремились к миниатюризации. Скажем, чипы AMD серии APU (Accelerated Processing Unit) изготавливаются по 28-нанометровой методике.
К слову, из-за уменьшения размера новых транзисторов снижается активное напряжение переключения, то есть для их включения и выключения нужно меньше электроэнергии, и процессор в целом становится всё более энергосберегающим.
Если мы говорим об одинаковых ядрах, то их, пожалуй, можно сравнить с разными уровнями мозговых аналитических центров — но сравнение это будет верно лишь отчасти. Если взять для примера те же зрительные анализаторы, то многие, вероятно, слышали такие формулировки, как «первичная зрительная кора», «вторичная зрительная кора», «третичная зрительная кора»… Это деление отражает иерархию аналитических работ: если первичная зрительная кора отвечает только на визуальный стимул сам по себе, то вышестоящие анализаторы, формируя ответ на зрительное раздражение, учитывают некие данные из кратковременной памяти, концентрацию внимания и т. п. В случае же с процессорными ядрами все они работают над одной и той же задачей, но при этом сосредоточены на разных частях инструкции.
Говоря о многоядерности, нельзя не упомянуть многопоточность — один из главных принципов работы современных процессоров, когда один процесс можно выполнить в несколько разных потоков. В качестве аналогии тут часто приводят пример с несколькими поварами, которые готовят одно и то же блюдо, но выполняют разные части рецепта. А вот другая аналогия, более, может быть, искусственная: представьте, что вы рисуете сразу двумя руками, и пока одна чертит что-то в одном месте, вторая стирает лишние штрихи, оставшиеся от первой руки; потом или они меняются местами, или одна вовсе отдыхает, или ищет на столе новый карандаш.
Многопоточность — понятие, скажем так, более программистское, или, точнее, лежащее между «физикой» hardware и «лирикой» software. Как процессы делятся на потоки, в каких взаимоотношениях потоки находятся друг к другу — всё это зависит от логической конструкции, входящей в микроархитектуру ядра и процессора, а также от логики операционной системы. Можно сказать, что многопоточность действительно создаёт иллюзию работы мозга: мы не отслеживаем постоянно работу мозжечка, который наблюдает за тем, чтобы мы не свалились со стула, и точно так же при работе за компьютером мы не видим множества событий, происходящих «за кадром». Но если бы эта аналогия была полной, а наш мозг был многопоточным, пусть и с несколькими ядрами, это означало бы, что несколько задач выполнялось бы по кусочкам, и пока одни мозговые ядра делали бы один кусочек одной задачи, другие готовились бы выполнить другой кусочек другой задачи.
Комбинация многопоточности и многоядерности может ещё сильнее углубить специализацию в процессоре — и этим ещё на шаг приблизить его к мозгу. Если вернуться к процессорам AMD, то, например, гибридные APU A-серии (последний Kaveri A10-7850k) имеют при себе встроенный видеоконтроллер Radeon с несколькими сотнями потоковых процессоров, который занимается графикой. В этом смысле его вполне можно уподобить зрительной (точнее, графической) коре.
В Kaveri есть специальный медиаускоритель, который был представлен два года назад в процессорах Trinity. Новая его версия поддерживает разрешения 4K, а также возможность постобработки видео. Помимо этого, можно отметить и AMD TrueAudio, раздел процессора, который позволяет получить 32-канальный объёмный звук. Эти специализированные подразделы отличаются от обычных ядер, поскольку они занимаются лишь определённого рода задачами, что и делает их похожими на мозговые выделенные зоны.
Структурная схема процессора AMD Kaveri.Впрочем, говоря о специализации мозга и разбивке процессора на ядра, следует помнить одну важную вещь. Каждое следующее поколение процессоров отталкивается от предыдущей архитектуры, но саму эту архитектуру нигде у себя не прячет. У мозга же в процессе эволюции каждое следующее новшество накладывалось на предыдущее, так что нынешний мозг состоит из множества разновозрастных структур (разного эволюционного возраста). Функции, конечно, перестраивались, но старые структуры своих функций полностью не лишались, поэтому теперь иногда один и тот же процесс (скажем, эмоциональный ответ) находится под контролем нескольких структур, включая кору и лимбическую систему. Такой множественный контроль позволяет мозгу распределить управление и повысить надёжность: при отказе одного руководящего центра его работу возьмёт на себя другой. Впрочем, это касается далеко не всех функций.
Итак, мы пришли к следующему выводу: несмотря на то что в чипах есть некая внутренняя специализация, до уровня мозга им далеко: у процессоров нет, допустим, отдельных структур для текстовых программ, для антивирусов, для музыкальных проигрывателей. Да и нужны ли они? Ведь с такой скоростью выполнения инструкций со всеми этими задачами можно расправляться, грубо говоря, одним набором транзисторов, нужно лишь правильно распределить время работы и умело разбить каждую задачу на фрагменты.
Цитоархитектонические поля Бродмана — отделы коры больших полушарий головного мозга, отличающиеся по своей цитоархитектонике (строению на клеточном уровне); разница в строении нейронов совпадает с разными задачами, которые выполняют разные поля.
Ядра процессора — физические и (или) логические части процессора, позволяющие выполнять параллельные потоки команд.
Многопоточность — способность операционной системы разбивать один процесс на несколько потоков, которые могут обрабатываться без предписанного порядка во времени.