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

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

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

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

Добавлен: 05.04.2023

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

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

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

1.3.3 Coma

NUMA- и CC-NUMA-машины обладают одним серьезным недостатком: обращения к удаленной памяти выполняются гораздо медленнее, чем к локальной. В CC-NUMA-машине эта разница в производительности в какой-то степени нивелируется за счет кэш-памяти[5, с. 664].

Однако если объем запрашиваемых удаленных данных значительно превышает вместимость кэш-памяти, постоянно будут происходить кэш-промахи, что негативно скажется на производительности.

Высокую производительность имеют UMA-машины, но число процессоров в них невелико, к тому же они довольно дороги. NC-NUMA-машины хорошо масштабируются, но в них требуется ручное или полуавтоматическое размещение страниц памяти, результаты которого часто плачевны. Дело в том, что очень непросто предсказать, где и какие страницы могут понадобиться, кроме того, страницы трудно перемещать из-за их больших размеров. CC-NUMA-машины, такие как мультипроцессор Sun Fire Е25К, начинают работать очень медленно, если большому числу процессоров требуются большие объемы удаленных данных. Так или иначе, каждая из этих схем имеет существенные недостатки[5, с. 665].

Однако существует мультипроцессор, в котором все эти проблемы решаются за счет использования основной памяти каждого процессора в качестве кэш-памяти. Такая система называется СОМА (Cache Only Memory Access — доступ только к кэш-памяти). В ней страницы не имеют собственных «домашних» машин, как в системах NUMA и CC-NUMA, фактически, страницы в этой системе вообще не имеют «прописки» [5, с. 665].

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

К сожалению, ничего идеального не бывает. С системой СОМА связаны две новые проблемы:

  • Как размещаются строки кэша?
  • Что делать, когда удаляемая из памяти строка является последней копией?

Первая проблема связана со следующим фактом. Как известно, диспетчер памяти выполняет трансляцию виртуального адреса в физический. Если после трансляции оказывается, что строки нет в «настоящем» аппаратном кэше, очень трудно сказать, есть вообще искомая строка в основной памяти или ее там нет. Аппаратная поддержка механизма разбиения памяти на страницы здесь не поможет, поскольку каждая страница состоит из большого количества отдельных строк кэша, которые располагаются в системе независимо друг от друга. Даже если известно, что строки в основной памяти нет, как выяснить, где она есть? В данном случае нельзя спросить об этом «домашнюю» машину потерявшейся страницы, поскольку таковой машины в системе просто нет[5, с. 666].


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

Другое решение — отображать страницы целиком, но при этом не требовать наличия всех строк кэша. Тогда для каждой страницы потребуется аппаратно построить битовую карту, где каждой строке соответствует 1 бит, который и укажет на присутствие или отсутствие этой строки. В этой схеме, которая называется простой схемой СОМА, если строка присутствует, она должна находиться в правильной позиции на своей странице. Если она отсутствует, то любая попытка использовать ее должна вызывать исключение, которое позволит программно найти и задействовать нужную строку[5, с. 66].

Таким образом, система будет искать только те строки, которые действительно находятся в удаленной памяти. Еще одно решение — предоставить каждой странице «домашнюю» машину (домашнюю в том смысле, что в каталоге для нее выделяется запись, а не в том, что на этой машине хранятся данные). Тогда чтобы выяснить, где искать строку, можно отправить сообщение ее домашней машине. Другое решение — организовать память в виде древовидной структуры и искать, двигаясь вверх, пока строка не будет найдена.

Вторая проблема связана с удалением последней копии. Как и в CC-NUMA- машине, строка кэша может одновременно находиться в нескольких узлах. Если происходит кэш-промах, строку нужно прочитать, а это обычно означает ее удаление. А что произойдет, если выбранная строка окажется последней копией? В этом случае ее нельзя удалять[5, с. 666].

Одно из возможных решений — вернуться к каталогу и проверить, существуют ли другие копии. Если да, то строку можно смело удалять. Если нет, ее нужно где-то разместить. Другое решение — пометить одну из копий каждой строки кэша как главную и никогда ее не удалять. При таком подходе проверять каталог не потребуется. В любом случае СОМА-машина потенциально должна иметь более высокую производительность, чем CC-NUMA, но пока было создано всего несколько СОМА-машин, а для реализации всего их потенциала нужно накопить некоторый опыт[5, с. 666].

1.3.4 Мультикомпьютеры

В категорию MIMD входят два вида процессоров с параллельной архитектурой: мультипроцессоры и мультикомпьютеры. Мульти процессоры могут иметь общую память, доступ к которой выполняется обычными командами LOAD и STORE.


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

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

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

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

Каждый узел в мультикомпьютере состоит из одного или нескольких процессоров, ОЗУ (общего для процессоров только данного узла), дисковода и (или) других устройств ввода-вывода, а также коммуникационного процессора. Коммуникационные процессоры связаны между собой высокоскоростной коммуникационной сетью (см. далее подраздел «Коммуникационные сети»). Используется множество различных топологий, схем коммутации и алгоритмов выбора маршрута, однако у всех мультикомпьютеров есть общая черта: когда программа выполняет примитив send, коммуникационный процессор извещается об этом и передает блок данных в целевую машину (возможно, после предварительного запроса и получения разрешения) [5, с. 666].

2. Информационное и математическое обеспечение ВС

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


Все программное обеспечение можно разделить на системное и прикладное.

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

Системное программное обеспечение включает в себя:

- операционную систему – обеспечивает эффективное функционирование компьютера в различных режимах, а так же работу программ и взаимодействие пользователя и устройств компьтера:

- сервисные программы – расширяют возможности операционной системы, предоставляя дополнительные услуги

- инструментальные программные средства – предназначены для разработки и отладки ПО

- системы технического обслуживания – диагностик, поиск неисправностей в компьютере[1, с. 340].

Прикладное программное обеспечение предназначено для решения одной конкретной задачи пользователя или комплекса задач.

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

Специализация пакета определяется характером решаемых задач (пакеты для разработки экономических документов, рекламных роликов, планирования и др.) или необходимостью управления специальной техникой (управление сложными технологическими процессами, управление бортовыми системами кораблей, самолетов и т.п.). Такие специальные пакеты программ могут иcпользовать отдельные подразделения, службы, отделы учреждений, предприятий, фирм для разработки различных планов, проектов, документов, исследований. В некоторых случаях прикладное программное обеспечение может иметь очень сложную структуру, включающую библиотеки, каталоги, программы-диспетчеры и другие обслуживающие компоненты. Программы прикладного программного обеспечения разрабатываются с учетом группы пользователей. Оно комплектуется в зависимости от места и роли автоматизированного рабочего места (АРМ) работника, использующего в своей деятельности компьютер. В ПО ПК обычно включают небольшое число пакетов программ (табличный процессор, текстовый редактор, система управления базами данных и др.), ориентированных на работу с документами[4, с. 105].


2.1 Операционная система

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

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

Поэтому ОС взаимодействует с одной стороны с пользователями, предоставляя им более удобный интерфейс, программное окружение, где запускаются и исполняются другие программы, а с другой стороны ресурсами компьютера, процессами обработки информации[1, с. 341].

Управление ресурсами заключается в упрощении доступа к ним,а так же динамическое распределение их между конкурирующими за них процессами[1, с. 342].

Ресурсы бывают двух видов: аппаратные( процессор, дополнительный процессор, основная память, внешняя память, принтер и тд.) и программные( все доступные пользователю программы управления вычислительным процессом).

Управление процессами позволяет создавать эффективные режимы работы компьютера:

- однопользовательские и многопользовательские( сколько пользователей одновременно могут использовать этот компьютер)

- однопрограммный(однозадачный) и много программный( многозадачный). Многозадачный можно разделить на :

Пакетной обработки – пользователь не участвует, предварительно программа собирается в пакет для решения задачи

Разделения времени – каждый пользователь имеет доступ к системе в определенный промежуток времени

Реального времени – гарантированное обслуживание одновременно каждого запроса[1, с. 342].

2.2 Инструментальные программные средства

Инструментальные программные средства составляют языки программирования, языковые трансляторы, редакторы, средства отладки и другие вспомогательные программы.

Языки программирования служат средством передачи информации, средством записи текстов исходных программ.

В настоящее время известно несколько сотен языков программирования, которые используют пользователи при разработке своих заданий. Появление новых типов ЭВМ, например ПК, и новых областей их применения способствует появлению следующих поколений языковых средств, в большей степени отвечающих требованиям потребителей[4, с. 113].