Э. Таненбаум - Архитектура компьютера (1127755), страница 155
Текст из файла (страница 155)
Далее следует методика жесткого разделения ресурсов (рагИ)опт гезопгсе зйайпй) между программными потоками. К примеру, если в процессоре предусмотрена очередь между двумя функциональными ступенями конвейера, то половину слогов можно отдавать потоку 1, другую половину — потоку 2. Разделение ресурсов легко реализуется, не ведет к дисбалансу и обеспечивает полную независимость программных потоков друг от друга.
При полном разделении всех ресурсов один процессор фактически превращается в два. С другой стороны, может сложиться такая ситуация, при которой один программный поток не использует ресурсы, которые могли бы пригодиться второму потоку, но в отношении которых у него нет полномочий доступа. В результате ресурсы, которые в иной ситуации могли бы быть задействованы, простаивают. Противоположность жесткого разделения — полное разделение ресурсов (1ц11 гезопгсе зЬаг1пй). В этой схеме к нужным ресурсам может получить доступ любой программный поток, а обслуживаются они в порядке поступления запросов на доступ.
Рассмотрим ситуацию, в которой быстрый поток, состоящий преимущественно из операций сложения и вычитания, сосуществует с медленным потоком, реализующим операции умножения и деления. Если команды вызываются 612 Глава 8. Параллельные компьютерные архитектуры в с Ь Ф о. 8 в и а и и с Вз и В 5 о л с ой 8 с з о о. з с и с Оа с н з с с с В Ы Ф в в х Х Ф с ж Ф 3 Фо сс Б О. Рис. ВЛ. Разделение ресурсов между программными потоками в микроархитектуре Мвтвигзъ реализованной в Рептют 4 из памяти быстрее, чем выполняются операции умножения и деления, число команд, вызванных в рамках медленного потока н поставленных в очередь на конвейер, будет постепенно расти. В конечном итоге эти команды заполнят очередь, в результате быстрый поток из-за нехватки места в ней остановится.
Полное разделение ресурсов решает проблему неоптимального расходования общих ресурсов, но создает дисбаланс их потребления — один поток может замедлить или остановить другой. Промежуточная схема реализуется в рамках порогового разделения ресурсов (гЬгезЬо!д гезоцгсе зЬаппя). Согласно этой схеме любой программный поток может динамически получать определенный (ограниченный) объем ресурсов.
Применительно к реплицированным ресурсам этот подход обеспечивает гибкость без угрозы простоя одного из программных потоков из-за невозможности получения ресурсов. Если, к примеру, запретить каждому из потоков занимать больше 3/4 очереди команд, повышенное потребление ресурсов медленным потоком не помешает исполнению быстрого. Модель гиперпоточности Репйпш 4 объединяет разные стратегии разделения ресурсов. Таким образом, предпринимается попытка решить все проблемы, связанные с каждой стратегией. Дублирование реализуется в отношении ресурсов, доступ к которым постоянно требуется обоим программным потокам (в частности, в отношении счетчика команд, таблицы отображения регистров н контроллера прерываний).
Дублирование этих ресурсов увеличивает площадь микросхемы всего лишь на 5 % — согласитесь, вполне разумная плата за многопоточность. Ресурсы, доступные в таком объеме, что практически исключается вероятность их захвата одним потоком (например, строки кэша), распределяются динамически. Доступ к ресурсам, контролирующим работу конвейера (в частности, его многочисленные очереди), разделяется — каждому программному потоку отдается половина слогов.
Главный конвейер архитектуры ХегЬнгзц реализованной в Репйшп 4, изображен на рис. 8.7; белые и серые области на этой иллюстрации обозначают механизм распределения ресурсов между белым и серым программными потоками. Внутрипроцессорный параллелизм 613 Как видим, все очереди на этой иллюстрации разделены — каждому программному потоку выделяется по половине слотов. Ни один из программных потоков не может ограничить работу другого. Блок распределения и подмены также разделяется.
Ресурсы планировщика разделяются динамически, но на основе некоего порогового значения — таким образом, ни один из потоков не может занять все слоты очереди. Для всех остальных ступеней конвейера имеет место полное разделение. Впрочем, с многопоточностью не все так просто. Даже у такой прогрессивной методики есть недостатки.
Жесткое разделение ресурсов не связано с серьезными издержками, а вот динамическое разделение, в особенности с учетом пороговых величин, требует отслеживать потребление ресурсов на этапе исполнения. Кроме того, в некоторых случаях программы значительно лучше работают без многопоточности, чем с ней. Предположим, к примеру, что при наличии двух программных потоков для нормального функционирования каждому из них требуется 3/4 каша. Если бы они выполнялись поочередно, каждый показал бы достаточную эффективность при небольшом количестве кэш-промахов (как известно, связанных с дополнительными издержками).
В случае параллельного исполнения кэш-промахов у каждого было бы значительно больше, и конечный результат оказался бы хуже, чем без многопоточности. Дополнительные сведения о механизме многопоточности Репг1шп 4 можно почерпнуть в 175, 119, 210~. Однокристальные мультипроцессоры Многопоточность позволяет добиться существенного повышения производительности при разумных затратах, однако некоторым приложениям нужна значительно большая производительность, и многопоточностью тут уже не обойтись. Для таких приложений существуют мультипроцессорные схемы.
Микросхемы, на которых устанавливается два или более процессоров, применяются преимущественно в профессиональных серверах и бытовой электронике. Обо всем этом мы сейчас поговорим. Гомогенные однокристальные мультипроцессоры Благодаря развитию технологии СБИС (сверхбольшая интегральная схема), в настоящее время на один кристалл можно установить два или более мощных процессоров. Поскольку такие процессоры всегда обращаются к одним и тем же модулям памяти (кэшу первого и второго уровней и основной памяти), они, как мы выяснили в главе 2, считаются единым мультипроцессором.
Как правило, они устанавливаются в крупных фермах веб-серверов. При совместном размещении двух процессоров, разделении ресурсов памяти, дисковых и сетевых интерфейсов производительность сервера во многих случаях можно удвоить, причем расходы на это возрастут в значительно меньшей степени (так как даже если мультипроцессор будет стоить в два раза больше обычного процессора, не стоит забывать, что его цена составляет лишь небольшую часть общей стоимости системы). 614 Глава 8.
Параллельные компьютерные архитектуры Для малых однокристальных мультипроцессоров имеются два типовых проектных решения. В первом из них (рис. 8.8, а) присутствует одна микросхема и два конвейера — таким образом, скорость исполнения команд теоретически удваивается. Во втором решении (рис. 8.8, б) в микросхеме предусмотрено два независимых ядра, каждое из которых содержит полноценный процессор. Ядром называется большая микросхема (например, процессор, контроллер ввода-вывода или кэш-память), которая размещается на микросхеме в виде модуля, как правило, вместе с несколькими другими ядрами.
Ко Коне Рис. 8.8. Однокристальные мультилроцессорьк микросхема с двумя конвейерами (а); микросхема с двумя ядрами (б) Первое решение допускает совместное потребление ресурсов (таких как функциональные блоки) процессорами; иными словами, каждый процессор может обращаться к ресурсам, не затребованным другим процессором. Второе решение требует изменения конструкции микросхемы и не предусматривает более двух процессоров. Здесь следует заметить, что разместить на одной микросхеме два или несколько ядер процессоров не так уж сложно.
Далее по мере изложения мы еще вернемся к теме мультипроцессоров. В этой главе мы в основном рассматриваем темы, относящиеся к мультипроцессорам на основе однопроцессорных микросхем, но многие из них применимы и к микросхемам с несколькими процессорами. Гетерогенные однокристальные мультипроцессоры Помимо серверов, однокристальные мультипроцессоры используются во встроенных системах — по большей части в аудиовизуальной бытовой электронике: телевизорах, ьтЪЧ)-плеерах, видеокамерах, игровых приставках, сотовых телефонах и т.
д. Подобные системы отличаются повышенными требованиями к производительности и жесткими ограничениями. Несмотря на различия во внешнем виде, по существу, эти устройства представляют собой миниатюрные компьютеры с одним или несколькими процессорами, модулями памяти, контроллерами и специализированными устройствами ввода-вывода. К примеру, сотовый телефон — это компьютер, оснащенный процессором, памятью, компактной клавиатурой, микрофоном, системой воспроизведения звукового сигнала и беспроводным сетевым адаптером. Внутрипроцессорный параллелизм 615 Рассмотрим для примера портативный ?)Ч?)-плеер. Размещенный в нем компьютер призван выполнять несколько функций: 1.
Управление дешевым и ненадежным сервоприводом, регулирующим положение головки. 2. Преобразования аналогового сигнала в цифровую форму. 3. Коррекция ошибок. 4. Дешифрирование и управление правами. 5. Декомпрессия данных видеоформата МРЕС-2. 6. Декомпрессия звуковых данных. 7. Кодирование выходных данных для воспроизведения в телевизионных системах ХТ8С, РА1. или 8ЕСАМ. Все эти функции должны выполняться в реальном времени с соблюдением жестких требований по качеству обслуживания, энергопотреблению, отводу тепла, размерам, весу и стоимости.
Данные на ?ЭЧП-носителях хранятся в виде длинной спирали (см., например, рис. 2.20). Головка воспроизведения должна следовать по спирали вращающегося диска. Цена таких устройств остается невысокой благодаря относительно простой механической конструкции и жесткому программному контролю положения головки. С головки поступает аналоговый сигнал, который перед обработкой необходимо преобразовать в цифровой формат. После оцифровки проводится интенсивная программная коррекция ошибок, которые возникают при прессовке дисков. Видеоданные сохраняются на носителе в формате МРЕС-2, для декомпрессии которого требуются сложные вычисления типа преобразований Фурье.