Файл: Состав и свойства вычислительных систем. Информационное и математическое обеспечение вычислительных систем (Процессор ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 05.04.2023

Просмотров: 397

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Это концепция имеет несколько вариантов реализации: мелкомодульная, крупномодульная и синхронная многопоточность.

Мелкомодульная многопоточность (fine-grained multithreading) можно представить так три программных потока (А, В, С), соответствующих 12 машинным циклам. В ходе первого цикла поток А выполняет команду А1. Поскольку эта команда завершается за один цикл, при наступлении второго цикла запускается команда А2. Ее обращение в кэш первого уровня оказывается неудачным, поэтому до извлечения нужного слова из кэша второго уровня проходит два цикла. Исполнение потока продолжается в цикле 5. Как показано на рисунке № 4, потоки В и С также регулярно простаивают. В рамках такого решения вызов последующей команды до завершения предыдущей не осуществляется[5, с. 608].

Рисунок 4 – Многопоточность

При мелкомодульной многопоточности в смежных циклах запускаются разные потоки, то есть происходит зацикливание потоков, что позволяет маскировать простой. Следовательно, при наличии трех программных потоков простаивающая операция все равно завершается вовремя. При простое в 4 цикла для беспрерывной работы понадобилось бы 4 программных потока, и т. д[5, с. 609].

Так как разные программные потоки ничего не знают друг о друге, им необходим свой набор регистров. Он должен быть указан для каждой вызываемой команды, и тогда аппаратное обеспечение будет знать, к какому набору регистров при необходимости нужно обращаться. Следовательно, максимальное число одновременно исполняемых программных потоков определяется в период разработки микросхемы.

Помимо обращения к памяти, причиной простоя может стать, то что следующей команде нужен результат предыдущей, а он еще не известен.

В остальных случаях команда вызвана быть не может, так как она следует за условным переходом, направление которого еще неизвестно.

Общее правило формулируется так: если в конвейере k ступеней, но по кругу можно запустить, по меньшей мере, k программных потоков, то в одном потоке в любой отдельно взятый момент не может выполняться более одной команды, поэтому конфликты между ними исключены. В такой ситуации процессор может работать на полной скорости, без простоя.

Не всегда число доступных потоков равно числу ступеней конвейера, поэтому некоторые разработчики предпочитают крупномодульную многопоточность (coarse-grained multithreading), которую иллюстрирует рисунок №.4. Программный поток А продолжает выполняться последовательно, вплоть до простоя. При этом теряется один цикл. Далее происходит переключение на первую команду программного потока В (В 1). Так как эта команда сразу переходит в состояние простоя, в цикле 6 выполняется уже команда С1[5, с. 607].


Исходя из представленного описания есть один недостаток при простое теряется один цикл. Однако, благодаря меньшему числу потоков сокращается расход ресурсов процессора.

Кроме переключения между потоками крупномодульная многопоточность позволяет немедленно переключиться с команд, которые способны вызвать простой, не выясняя намечается простой или нет. Эта стратегия позволяет избегать бесконечных циклов. Другими словами, исполнение продолжается до того момента, пока не обнаружится возможность возникновения проблемы, после чего следует переключение. Такие частые переключения роднят крупномодульную многопоточность с мелкомодульной[5, с. 608].

Для определения команды в потоке мелкомодульная многопточность использует индетефикатор потока.

Крупномодульная многопоточность предусматривает возможность очистки конвейера перед запуском каждого последующего потока. В таком случае четко определяется идентичность потока, исполняемого в данный момент. Естественно, данная методика эффективна только в том случае, если паузы между переключениями значительно больше времени, необходимого для очистки конвейера.

В суперскалярных процессорах есть еще синхронная многопоточность (simultaneous multithreading). Она представляет усовершенствованный вариант крупномодульной многопоточности, где каждый программный поток может запускать по две команды за такт, однако в случае простоя с целью обеспечения полной загрузки процессора запускаются команды следующего потока. При синхронной многопоточности полностью загружаются все функциональные блоки. В случае невозможности запуска команды из-за занятости функционального блока выбирается команда из другого потока[5, с. 609].

1.2.3 Однокристальные мультипроцессоры

Многопоточность повышает производительность,но есть системы где многопоточности недостаточно.

Для таких случаев существуют мультипроцессорные схемы. Микросхемы, на которых устанавливается два или более процессоров, применяются в основном в профессиональных серверах и бытовой электронике.

Мультипроцессорные схемы строятся на гомогенных и гетерогенных однокристальных мультипроцессорах.

Благодаря развитию технологии СБИС (сверхбольшая интегральная схема), в настоящее время на один кристалл можно установить два или более мощных процессоров. Поскольку такие процессоры всегда обращаются к одним и тем же модулям памяти (кэшу первого и второго уровней и основной памяти), они считаются единым мультипроцессором[5, с. 613].


Как правило, они устанавливаются в крупных фермах веб-серверов. При совместном размещении двух процессоров, разделении ресурсов памяти, дисковых и сетевых интерфейсов производительность сервера во многих случаях можно удвоить, причем расходы на это возрастут в значительно меньшей степени (так как даже если мультипроцессор будет стоить в два раза больше обычного процессора, его цена составляет лишь небольшую часть общей стоимости системы) [5, с. 613].

Для малых однокристальных мультипроцессоров имеются два типовых проектных решения. В первом из них присутствует одна микросхема и два конвейера: скорость исполнения команд теоретически удваивается. Во втором решении в микросхеме предусмотрено два независимых ядра, каждое из которых содержит полноценный процессор. Ядром называется большая микросхема (например, процессор, контроллер ввода-вывода или кэш-память), которая размещается на микросхеме в виде модуля, как правило, вместе с несколькими другими ядрами[5, с. 613].

Первое решение допускает совместное потребление ресурсов (таких как функциональные блоки) процессорами; иными словами, каждый процессор может обращаться к ресурсам, не затребованным другим процессором. Второе решение требует изменения конструкции микросхемы и не предусматривает более двух процессоров[5, с. 614].

1.2.4 Сопроцессоры

Быстродействие компьютера можно увеличить за счет введения дополнительного специализированного процессора. Такие системы называются сопроцессор. Он может либо выполнить команду или набор команд от процессора, либо действует самостоятельно и выполняет свои команды. Одной из областей применения таких систем является обработка графики или выполнение вычислений с плавающей точкой[5, с. 619].

Они могут быть выполнены в отдельном корпусе, виде подключаемой платы или установлены на основной микросхеме.

1.2.5 Сетевые сопроцессоры

Два компьютера называются связанными, если они могут обмениваться информацией. Очень часто происходит путаница между понятиями компьютерная сеть и распределенная система. Основное различие в том, что в распределенной системе наличие автономных компьютеров не заметно для пользователя. Для него это единая связанная система. Достигается за счет специализированного программного обеспечения над операционной системой. Такое программное обеспечение называется связующим. Самый большой пример такой системы – интернет, в котором для пользователя все выглядит как единый документ. В компьютерной сети пользователь имеет дело непосредственно с вычислительной системой, которая даже не пытается объединить все. То есть если компьютеры в сети имеют разное аппаратное и программное обеспечение пользователь это никак не сможет изменить. Следовательно, разница заключается в программном обеспечении, а не аппаратном. Не смотря, на это они имеют много общего. Обе эти системы занимаются перемещением файлов. Хотя есть разница в то, кто перемещает эти файлы, пользователь или сама система[5, с. 620].


Вычислительные сети бывают двух типов: локальные и глобальные.

Локальные сети соединяют компьютеры находящиеся в пределах зданий, а глобальные компьютеры находящиеся на значительном расстоянии.

Примером локальной сети может служить сеть любой организации. Допустим у организации, есть несколько этажей в здании с определенным количество компьютеров, принтеров. Чтобы у сотрудников была возможность печатать документы, не обязательно каждому ставить свой принтер. А вот благодаря сетевому соединению можно организовать доступ к ним. Еще одним ресурсом являются данные хранящиеся в базе данных, так же за чет сетевого соединения можно организовать доступ к ней, ее разместить на одном специально компьютере, который называется сервер. А такая архитектура называется клиент серверной.

Глобальная сеть географически более удаленная в плоть да разных стран. Строиться она из подсетей. Взаимодействие между которыми обеспечивается с помощью линей связи и маршрутизаторов. Линии связи непосредственно переносят данные от компьютера к компьютору. А марщрутизатор производит переключение между сетями, как он обычно соединяет разные подсети. Иногда в качестве такого соединения можно использовать интернет.

Как уже было сказано, в сеть могут входить различные устройства. А обмен между ними происходит пакетами. В зависимости от вида сети и пакета, он может требовать определенной обработки. Обработка может включать в себя принятие решения куда передать пакет, разбить его ан части или наоборот собрать из частей, защиту и т.д. Все это должно происходить очень быстро[5, с. 622].

Быструю обработку можно обеспечить с помощью специализированных интегральных схем, программируемых вентельных матриц и сетевых процессоров.

Специализированные интегральные схемы запрограммирована на строго определенные действия. Производство таких схем дорого, долго и их нельзя самостоятельно перепрограммировать[5, с. 623].

Программируемые вентельные матрицы, за счет вентелей организуются переходы. Их производство и сборок значительно быстрее и дешевле, чем специализированных интегральных схем и их можно перепрограммировать, но все равно долго и дорого[5, с. 623].

Сетевые процессоры способны обрабатывать входящие и исходящие пакеты со скоростью их передачи, в режиме реального времени. Обычно они реализуются в виде съемной платы, содержащей помимо кристалла сетевого процессора, память и вспомогательную логику. К плате подключается одна или несколько сетевых линий. Процессор получает из линии пакет, обрабатывает его и передает по другой линии, если это маршрутизатор, или отправляет в главную системную шину, если это оконечное устройство, например компьютер[5, с. 623].


1.2.6 Мультипроцессоры и мультикомпьютеры

Параллельный компьютер, в котором все процессоры совместно используют общую физическую память, называется мультипроцессором, или системой с общей памятью. Все процессы, работающие в мультипроцессоре совместно, могут иметь единое виртуальное адресное пространство, отображенное на общую память. Два процесса имеют возможность легко обмениваться информацией — для этого один из них просто записывает данные в общую память, а другой их считывает[5, с. 635].

Поскольку все процессоры в мультипроцессоре используют единое адресное пространство, функционирует только одна копия операционной системы. Соответственно, имеется только одна карта страниц памяти и одна таблица процессов. Когда процесс блокируется, его процессор сохраняет свое состояние в таблицах операционной системы, а затем просматривает эти таблицы в поисках другого процесса, который нужно запустить. Именно такая организация, в основе которой лежит единая система, и отличает мультипроцессор от мультикомпьютера[5, с. 636].

Мультипроцессор, как и все компьютеры, должен содержать устройства ввода- вывода (диски, сетевые адаптеры и т. п.). В одних мультипроцессорных системах только определенные процессоры получают доступ к устройствам ввода-вывода и, следовательно, обладают специальными средствами ввода-вывода. В других мультипроцессорных системах каждый процессор может получить доступ к любому устройству ввода-вывода. Если все процессоры имеют равный доступ ко всем модулям памяти и всем устройствам ввода-вывода, и между процессорами возможна полная взаимозаменяемость, такой мультипроцессор называется симметричным (Symmetric Multiprocessor, SMP) [5, с. 636].

Во втором варианте параллельной архитектуры каждый процессор имеет собственную память, доступную только этому процессору. Такая схема называется мультикомпьютером, или системой с распределенной памятью .

Ключевое отличие мультикомпьютера от мультипроцессора состоит в том, что каждый процессор в мультикомпьютере имеет собственную локальную память, к которой этот процессор может обращаться. Таким образом, мультипроцессоры имеют одно физическое адресное пространство, разделяемое всеми процессорами, а мультикомпьютеры содержат отдельные физические адресные пространства для каждого процессора[5, с. 636].

Поскольку процессоры в мультикомпьютере не могут взаимодействовать друг с другом простыми обращениями к общей памяти, процессоры обмениваются сообщениями через связывающую их коммуникационную сеть.