А.Н. Томилин - Вычислительные системы (2006), страница 17
Описание файла
PDF-файл из архива "А.Н. Томилин - Вычислительные системы (2006)", который расположен в категории "". Всё это находится в предмете "вычислительные сети и системы" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 17 страницы из PDF
вы управляете наиболее эффективным прохождением команд. Эффективным в томсмысле, что вы стараетесь параллельно запустить исполнение действий на реально имеющихся параллельных устройствах. Т.е. это программное управление параллелизмом. То жесамое, когда мы говорили о зацеплении конвейера: нужно как-то сделать, чтобы результатпошёл не в регистр, а на вход следующего функционального конвейерного устройства, както соответствующие команды транслятором подготовить.
Т.е. использование параллелизмааппаратуры во многом зависит от программирования (либо в самой программе, либо оттранслятора). Вспомним слово «суперскалярный», когда (вы богатые) хороший микропроцессор содержит ещё и некоторые функциональные устройства, которые можно запустить впринципе параллельно. Во многих случаях, даже в литературе, есть такой момент. Кроме вопросов, связанных с функциональными устройствами, считается, что есть следующие 3 устройства, которые могут работать параллельно:y устройство выполнения целочисленных операций;y устройство выполнения вещественных операций;y устройство загрузки/записи.Рассуждения ведутся следующие. Да, они будут работать параллельно, но если у васимеется задача (нить вычислений), где вычисления выполняются с целыми числами, то, вообще говоря, 1-е будет использоваться, а 2-е — простаивать.
Если у вас идёт вычислениесерьёзной задачи, где вы работаете с вещественными данными, то 2-е будет работать, а 1- е— простаивать. Как сделать, чтобы они по возможности работали параллельно? Это одинвариант, а второй вариант, который я только что рассказал, когда суперскалярный процессор,имеется сложитель, умножитель, делитель.
Как сделать, чтобы они работали параллельно?Только что я говорил, что есть вариант программистский. А есть вариант, когда всюоптимизацию берёт на себя аппаратура. Она берёт на себя эту оптимизацию вот каким способом. Процессор имеет 2 счётчика. Т.е. аппаратно, согласно этим счётчикам команд, процессор сам ведёт не одну нить вычислений, а несколько. Называется эта техника HyperThreading. Т.е. устройство управления процессора само анализирует команды, смотрит, какие оно может выполнить из какой ветви так, чтобы было максимально загружено.
Оно ищеткоманды из двух или нескольких таких потоков, которые могли бы быть выполнены параллельно. Т.е. мы имеем на одном физическом процессоре (микропроцессоре) несколько логических процессоров. И эти логические процессоры должна учитывать операционная система.Операционная система, ориентируясь на этот процессор, ориентирует несколько нитей одной задачи или разных задач, т.е.
выполняются одновременно. Если есть устройства, которые могут работать одновременно, то по возможности они загружаются тем, что есть нити.И вот этот подход Hyper-Threading много значил. Иногда бывало так, что его делают, а дляопределённого класса задач выключают, потому что, например, две целочисленных ветвипараллельно выполнялись хуже, чем последовательно. Вот эти системы в многих чипа реализовывались.50Отсюда несколько, может быть, противоположная — это многоядерность. Она не совсем противоположная.Несколько в сторону отойду, вспомню одну историю. Виктор Александрович Поспелов— это ведущий специалист в области искусственного интеллекта. Это мой товарищ, мой однокурсник, больше того, из некоей более близкой небольшой группы.
Он в области искусственного интеллекта, в области задач искусственного интеллекта, он конечно, один из крупнейших специалистов. К сожалению, последние 7 лет ему очень тяжело: он упал, пробил голову на конференции (со второго этажа на первый получилось падение), несколько месяцевкомы, продолжает сейчас лечение. Он не говорит, но на это надежда ещё остаётся. 7 лет неговорит, научился хорошо говорить слово «да». Но прекрасно всё понимает. Когда он вышелиз комы, то «верхнее сознание» его возродилось мгновенно: память, понимание той областидеятельности, в которой он.
При этом в начале он потерял возможность читать и считать, т.е.он даже не мог складывать однозначные числа. Его учили. Наконец, всё это преодолено. Сним непрерывно занимаются, идут упражнения на голову, упражнения для физики, всё этоделается, но вот пока воз не движется. Дело в том, что мне удалось сподвигнуть его на одиншаг вперёд. А было это так.
Я к нему пришёл, мы часто к нему ходим (вдвоём, втроём и т.д.),он был в разных местах, в разных клиниках, у нас здесь в Москве клиника по восстановлению речи после черепно-мозговых травм. И вот как-то раз я к нему пришёл и один был. Какбеседа проходила: я рассказываю что к чему, он вытаскивает фотографии. Закончилось всё, явыдохся. Он на меня посмотрел: «Ну!». Мы всегда, когда входим, пишем ему в тетрадке, ктокогда пришёл. Я попросил книжку. «А!» Хорошо, взял книжку и начал делать надпись однойрукой (другая не действовала). Делает надпись и посматривает в эту тетрадку. И тут до менядошло: он не может писать из головы.
До этого всяческие упражнения, например, переченьсуществительных и надо разделить на 3 колонки (автомобили, фрукты, овощи), он всё блестяще делает, но он списывает начертания. И я понял, что пора действовать. Я подошёл, демонстративно закрыл, и сказал: «Ты же мне хочешь что-то сказать? Ты же мне только чтонаписал послание. Напиши!» Видели бы вы, что с ним сделалось: он весь покрылся потом,вращался на каталке со страшной силой, на меня злобно сверкал, рычал буквально.
Потомподъехал, взял карандаш, рука у него вся дрожала, весь напрягся и вывел большую букву«В». И опять на меня: «Гм!» Давай дальше, я опять не понимаю. Он опять промучился, ноуже побыстрее и написал вторую букву «И», очень аккуратно. Я всё понял: «Извини, пожалуйста. Я очень спешил, я не успел». Он всё понял: «А…» Он хотел написать слово «вино».Мы когда приходили, мы притаскивали грамм 100 когорчику. Конечно, он ждал, а я пришёл«пустой».Так вот, о чём речь, здесь идёт о его докторской диссертации. Он в своё время защитилблестяще кандидатскую диссертацию, а речь тогда шла о новых вещах: о явно параллельныхалгоритмах, т.е.
о распределении вычислений на разные машины. Очень интересно он отвечал на вопросы. Ему задавались вопросы, как обычно, когда доклад делают. Он говорил:«Суть данного вопроса говорит о том, что задавший вопрос не понимает…»Проходит 3 года, и он обращается ко мне: «Вот я подготовил докторскую диссертацию.Хорошо бы, чтобы ваш Институт точной механики и вычислительной техники дал бы мнеотзыв как головная организация». Я посмотрел, и мне показалось, что он продолжает эксплуатировать эту же идею, не внеся чего-то такого, что соответствовало новому принципиальному решению в этом направлении. Как-то вот побольше всего, более основательно продвинута тема, но ничего такого.
Что ж мне делать? Я пошёл к Лебедеву и сказал: «СергейАлексеевич, вот тут докторская работа моего друга. Я хотел бы, что бы вы посмотрели и сказали». Взял работу, говорит: «Через недельку зайди ко мне». Я зашёл. «Знаешь, я посмотрелэту диссертацию. Ведь что он хочет? Он хочет одну задачу распараллелить на многие процессоры. А мы что хотим сделать? Собрать многие задачи в одну машину. У нас разные направления, и мы вряд ли можем быть таким сверхкомпетентным местом для оценки его результатов». Я передал, что мы вряд ли дадим отзыв, он на меня дулся года 3, но защитилдиссертацию, правда, не без чёрных шаров.51Вот тут мы, как бы, в один процессор организуем hyper-threading, устройство управления во всю старается подобрать на имеющихся ресурсах, которые могут быть параллельноиспользованы, соответствующие действия.
Очень интересный и плодотворный подход.И вот появляется многоядерность: в каждом ядре свой hyper-treading. Что такое многоядерность? В этом ничего принципиально нового нет.Реально многопроцессорность:ОПК2К2К1К1ЯдроЯдроУУАЛУК1 — кэш 1-го уровняК2 — кэш 2-го уровняСовсем уж загрубляя, можно сказать так, что это 3 разные интегральные схемы, они всенаходятся на плате. В случае многоядерности происходит следующее:ОПК2К1К1ЯдроЯдроКэш второго уровня уже общий.
Т.е. у вас интегральная схема двухядерного процессора. Связей стало меньше — это, во-первых, меньше по месту, с энергетикой стало получше.Т.е. целый ряд аспектов чисто технического характера приводит как к определённому ускорению, так и к уменьшению связей. А что касается нашего разговора о hyper-threading’е, тоон здесь точно так же может идти как отдельный логический процессор в каждом ядре. Т.е.сама многоядерность — вещь скорее техническая, которая должна привести к ускорению,удешевлению, где удастся.А делить физический процессор на несколько логических — это принципиальная вещь.Теперь осталось нам немножко с RISC’ом. Это тоже ведь стремление повысить производительность, с производительностью стоимость связана.
Было замечено, что для многихзадач вычислительного характера используется не очень много команд. И решили сделатьпроцессор, который в своих основных схемах имеет возможность выполнять только ограниченный набор команд (схем поменьше, а значит, и быстрее выполнять эти команды). Команда выполнялась за такт, была возможность конвейерной реализации или векторной. Все команды выполнялись за одинаковое время, данные для выполнения команд всегда находилисьна регистрах, заранее туда занесённые, результаты тоже помещались на регистры. Чтобы впамяти команды всегда располагались одинаково.
Вот у вас команда:КОП4р4р4р4рЗначит всего 16 операций (4 разряда под КОП). Допустим 16 регистров, тогда 4 разрядадля адресации регистра. И так каждая команда, т.е. одно и тоже, всё одинаково. Отсюдаможно построить молотилку более выгодную. Рабочие станции стали делать, где много вы52числений производится, с так называемой, RISC’овой системой команд (reduce instruction setcommand — сокращённая система команд).