Использование нескольких процессоров — SMP. Компьютеры обладающие несколькими процессорами называют


Итоговый тест по теме "Устройство компьютера"

Итоговый тест по теме "Устройство компьютера"

1. Для ввода информации в компьютере используется...

  1. принтер

  2. сканер

  3. процессор

  4. ОЗУ

2. Для чего предназначена мышь?

  1. Для вывода информации

  2. Для хранения информации

  3. Для ввода информации

  4. Для обработки информации

3. В целях сохранения информации СD-ROM-диски необходимо оберегать от...

  1. механических повреждений

  2. магнитных полей

  3. холода

  4. перепадов атмосферного давления

4. Выберите строку, в которой перечислены только устройства ввода информации

  1. мышь, сканер, трекбол

  2. принтер, ОЗУ, модем

  3. джойстик, монитор, процессор

  4. клавиатура, принтер, процессор

5. Какое из перечисленных устройств лишнее?

  1. джойстик

  2. мышь

  3. световое перо

  4. принтер

6. Выберите внешнее запоминающее устройство:

  1. оперативная память

  2. винчестер

  3. видеокарта

  4. сканер

7. Какие устройства используются для долговременного хранения пользовательской информации?

  1. оперативная память

  2. дисковод

  3. жесткий магнитный диск

  4. процессор

  5. флешка

  6. лазерный диск

  7. ПЗУ

8. В какой строке перечислен минимальный набор устройств персонального компьютера?

  1. процессор, монитор, клавиатура

  2. монитор, клавиатура, винчестер, процессор, ОЗУ

  3. процессор, устройства ввода - вывода, флоппи-дисковод

9. Какую функцию выполняет клавиатура?

  1. Вывод информации

  2. Хранение информации

  3. Ввод информации

  4. Обработка информации

10. Из перечисленных ниже устройств выберите только устройства хранения информации

  1. модем

  2. оперативная память

  3. дискета

  4. постоянная память

  5. винчестер

  6. микропроцессор

  7. DVD-RОМ

  8. СD-ROМ

  9. принтер

11. Что находиться внутри системного блока?

  1. Память и процессор

  2. Память и монитор

  3. Процессор и принтер

  4. Дисковод и принтер

12. Какое из утверждений ЛОЖНО?

  1. внешняя память предназначена для долговременного хранения информации независимо от того, работает ЭВМ или нет

  2. внешняя память - это память высокого быстродействия и ограниченной емкости

  3. внутренняя память - это память высокого быстродействия и ограниченной емкости

13. Оперативная память - это память, в которой храниться...

  1. информация, присутствие которой постоянно необходимо в компьютере

  2. загрузочная информация, независимо от того работает компьютер или нет

  3. исполняемая в данный момент времени программа и данные, с которыми она непосредственно работает

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

14. Для чего предназначен монитор?

  1. Для вывода информации

  2. Для хранения информации

  3. Для ввода информации

  4. Для обработки информации

15. При выключении питания компьютера информация будет потеряна:

  1. в оперативной памяти

  2. на DVD или в ПЗУ

  3. на дисках С и D

  4. на диске А

16. Какое устройство предназначено для вывода информации на бумагу?

  1. Принтер

  2. Дисковод

  3. Монитор

17. На компьютере имеется два жестких логических диска. Укажите их имена

  1. А: и С:

  2. D: и С:

  3. А: и В:

  4. А: и D:

18.  Какие из перечисленных ниже устройств используются для вывода информации?

  1. мышь

  2. динамики

  3. принтер

  4. плоттер

  5. сканер

  6. монитор

  7. трекбол

  8. дигитайзер

19. Выберите НЕВЕРНОЕ утверждение:

  1. Процессор обрабатывает информацию

  2. Память хранит информацию

  3. Монитор выводит информацию

  4. Принтер вводит информацию

20. Во время исполнения прикладная программа хранится:

  1. в видеопамяти

  2. в процессоре

  3. в оперативной памяти

  4. в ПЗУ

21. Для чего предназначен процессор?

  1. Для вывода информации

  2. Для хранения информации

  3. Для ввода информации

  4. Для обработки информации

22. Это устройство служит для долговременного хранения информации, а так же для переноса информации с одного компьютера на другой. Назовите это устройство:

  1. Мышь

  2. Дисковод

  3. флешка

  4. Принтер

23. Укажите основные характеристики компьютера, важные для выбора и приобретения компьютера

  1. емкость оперативной памяти, тактовая частота и разрядность процессора

  2. тактовая частота и разрядность процессора, микросхема

  3. микросхема, разрядность, емкость ОЗУ

24. Название какого устройства необходимо вписать в пустой блок общей схемы компьютера?

hello_html_m7c88ac68.jpg

  1. устройства внешней памяти

  2. устройства ввода

  3. контроллер устройства ввода

  4. микросхемы

25. Какое из перечисленных ниже устройств предназначено для ввода информации?

  1. Монитор

  2. Дискета

  3. Принтер

  4. Графический планшет

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

  1. мышь

  2. клавиатура

  3. монитор

  4. сканер

27. Компьютер – это …

  1. электронное вычислительное устройство для обработки чисел

  2. универсальное электронное устройство для работы с информацией

  3. устройство для хранения информации любого вида

  4. устройство для обработки аналоговых сигналов и текстовой информации

infourok.ru

Многопроцессорность — WiKi

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

Операционная система или программа называется многопроцессорной, если способна распределять задачи между процессорами (см. многопоточность).

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

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

Процессорная симметричность

В многопроцессорной системе все центральные процессоры могут быть равными, или некоторые могут быть зарезервированы для особых целей. Комбинация конструктивных соображений программного обеспечения аппаратной и операционной системы определяет симметрию (или отсутствие её) в данной системе. Например, аппаратные или программные соображения могут потребовать, чтобы только один центральный процессор отвечал на все аппаратные прерывания, тогда как вся другая работа в системе может быть распределена одинаково среди процессоров; или выполнение кода привилегированного режима может быть ограничено только одним процессором (или определенным процессором, или только один процессор за один раз), тогда как код непривилегированного режима может быть выполнен на любой комбинации процессоров. Часто многопроцессорные системы проще проектировать, если введены такие ограничения, но они имеют тенденцию быть менее эффективными чем системы, в которых используются все центральные процессоры.

Системы, которые обрабатывают все центральные процессоры одинаково, называют системами с симметричной многопроцессорной обработкой (SMP). В системах, где все центральные процессоры не равны, системные ресурсы могут быть разделены многими способами, в том числе асимметричной многопроцессорной обработкой (ASMP), многопроцессорной обработкой с неоднородным доступом к памяти (NUMA) и кластеризованной многопроцессорной обработкой (qq.v.).

Потоки команд и данных

В многопроцессорной обработке процессоры могут использоваться для выполнения одной последовательности команд во множественных контекстах (единственная машинная команда, множественные данные или SIMD, часто используемый в векторной обработке), множественные последовательности команд в единственном контексте («множественный поток команд, одиночный поток данных» или Архитектура MISD, используемая для избыточности в отказоустойчивых системах и иногда применяемая, чтобы описать конвейерные процессоры или гиперпоточность), или множественные последовательности команд во множественных контекстах («множественный поток команд, множественные поток данных» или MIMD).

Соединения процессоров

Многопроцессорные системы с сильной связью (англ. Tightly-coupled multiprocessor systems) содержат несколько процессоров, которые подключены на шинном уровне. Эти процессоры могут иметь доступ к центральной разделяемой памяти (SMP или UMA), или могут участвовать в иерархии памяти и с локальной и с разделяемой памятью (NUMA). IBM p690 Regatta является примером мощной системы SMP. Процессоры Intel Xeon доминировали над многопроцессорным рынком для деловых PC и были единственной x86-опцией до выпуска линейки процессоров AMD Opteron в 2004 году. Обе линейки процессоров имели свой собственный встроенный кэш, но по разному обеспечивают доступ к разделяемой памяти: процессоры Xeon через общий канал, а процессоры Opteron через независимые магистрали к системной оперативной памяти.

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

Многопроцессорные системы с гибкой связью (англ. Loosely-coupled multiprocessor systems), часто называемые кластерами, основаны на множественных автономных одиночных или двойных компьютерах, связанных через высокоскоростную систему связи (например, Gigabit Ethernet). Кластер Беовульфа под управлением Linux — пример гибко связанной системы.

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

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

Многопроцессорная обработка с SISD

Основная статья: SISD

В компьютере с одиночным потоком команд и одиночным потоком данных один процессор последовательно обрабатывает команды; каждая машинная команда обрабатывает один элемент данных. Пример — фон-неймановская архитектура.

Многопроцессорная обработка SIMD

Основная статья: SIMD

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

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

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

Кроме того, программы должны быть тщательно и специально написаны, чтобы иметь возможность максимально задействовать возможности архитектуры. Часто применяются специальные оптимизирующие компиляторы, спроектированные чтобы создать код специально для использования в этой среде. Некоторые компиляторы в этой категории обеспечивают специальные конструкции или расширения, чтобы позволить программистам непосредственно определять операции, которые будут выполнены параллельно (например, операторы DO FOR ALL в Фортране, используемого на ILLIAC IV, который был многопроцессорным суперкомпьютером с SIMD-архитектурой).

Многопроцессорная обработка SIMD находит широкое применение в некоторых областях, таких как компьютерное моделирование, но малополезна в универсальном настольном компьютере и бизнес-задачах.

Многопроцессорная обработка MISD

Основная статья: MISD

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

Многопроцессорная обработка MIMD

Основная статья: MIMD

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

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

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

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

ru-wiki.org

Многопроцессорность - это... Что такое Многопроцессорность?

Многопроцессорность (Мультипроцессорность, Многопроцессорная обработка, англ. Multiprocessing) — использование пары или большего количества физических процессоров в одной компьютерной системе. Термин также относится к способности системы поддержать больше чем один процессор и/или способность распределить задачи между ними. Существует много вариантов данного понятия, и определение многопроцессорности может меняться в зависимости от контекста, главным образом в зависимости от того, как определены процессоры (много ядер в одном кристалле, множество чипов в одном корпусе, множество корпусов в одном системном модуле, и т. д.).

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

Типы

Процессорная симметричность

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

Комбинация конструктивных соображений программного обеспечения аппаратной и операционной системы определяет симметрию (или отсутствие её) в данной системе. Например, аппаратные или программные соображения могут потребовать, чтобы только один центральный процессор отвечал на все аппаратные прерывания, тогда как вся другая работа в системе может быть распределена одинаково среди процессоров; или выполнение кода привилегированного режима может быть ограничено только одним процессором (или определенным процессором, или только один процессор за один раз), тогда как код непривилегированного режима может быть выполнен на любой комбинации процессоров. Часто многопроцессорные системы проще проектировать, если введены такие ограничения, но они имеют тенденцию быть менее эффективными чем системы, в которых используются все центральные процессоры.

Системы, которые обрабатывают все центральные процессоры одинаково, называют системами с симметричной многопроцессорной обработкой (SMP). В системах, где все центральные процессоры не равны, системные ресурсы могут быть разделены многими способами, в том числе асимметричной многопроцессорной обработкой (ASMP), многопроцессорной обработкой с неоднородным доступом к памяти (NUMA) и кластеризованной многопроцессорной обработкой (qq.v.).

Потоки команд и данных

В многопроцессорной обработке процессоры могут использоваться для выполнения одной последовательности команд во множественных контекстах (единственная машинная команда, множественные данные или SIMD, часто используемый в векторной обработке), множественные последовательности команд в единственном контексте («множественный поток команд, одиночный поток данных» или Архитектура MISD, используемая для избыточности в отказоустойчивых системах и иногда применяемая, чтобы описать конвеерные процессоры или гиперпоточность), или множественные последовательности команд во множественных контекстах («множественный поток команд, множественные поток данных» или MIMD).

Соединения процессоров

Многопроцессорные системы с сильной связью (англ. Tightly-coupled multiprocessor systems) содержат несколько процессоров, которые подключены на шинном уровне. Эти процессоры могут иметь доступ к центральной разделяемой памяти (SMP или UMA), или могут участвовать в иерархии памяти и с локальной и с разделяемой памятью (NUMA). IBM p690 Regatta является примером мощной системы SMP. Процессоры Intel Xeon доминировали над многопроцессорным рынком для деловых PC и были единственной x86-опцией до выпуска линейки процессоров AMD Opteron в 2004 году. Обе линейки процессоров имели свой собственный встроенный кэш, но по разному обеспечивают доступ к разделяемой памяти: процессоры Xeon через общий канал, а процессоры Opteron через независимые магистрали к системной оперативной памяти.

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

Многопроцессорные системы с гибкой связью (англ. Loosely-coupled multiprocessor systems), часто называемые кластерами, основаны на множественных автономных одиночных или двойных компьютерах, связанных через высокоскоростную систему связи (например, Gigabit Ethernet). Кластер Беовульфа под управлением Linux — пример гибко связанной системы.

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

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

Программные реализации

Многопроцессорная обработка с SISD

Основная статья: SISD

В компьютере с одиночным потоком команд и одиночным потоком данных один процессор последовательно обрабатывает команды; каждая машинная команда обрабатывает один элемент данных. Пример — фон-неймановская архитектура.

Многопроцессорная обработка SIMD

Основная статья: SIMD

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

Многопроцессорная обработка SIMD хорошо подходит для параллельной или векторной обработки, в которой большой набор данных может быть разделён на части, которые обрабатываются идентичными, но независимым операциями. Одиночный поток команд направляет[куда?] операцию модулей мультипрограммирования для выполнения однотипных манипуляций одновременно на потенциально большом количестве данных.

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

Кроме того, программы должны быть тщательно и специально написаны, чтобы иметь возможность максимально задействовать возможности архитектуры. Часто применяются специальные оптимизирующие компиляторы, спроектированные чтобы создать код специально для использования в этой среде. Некоторые компиляторы в этой категории обеспечивают специальные конструкции или расширения, чтобы позволить программистам непосредственно определять операции, которые будут выполнены параллельно (например, операторы DO FOR ALL в Фортране, используемого на ILLIAC IV, который был многопроцессорным суперкомпьютером с SIMD-архитектурой).

Многопроцессорная обработка SIMD находит широкое применение в некоторых областях, таких как компьютерное моделирование, но малополезна в универсальном настольном компьютере и бизнес-задачах.

Многопроцессорная обработка MISD

Основная статья: MISD

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

Многопроцессорная обработка MIMD

Основная статья: MIMD

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

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

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

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

Ссылки

dic.academic.ru

Использование нескольких процессоров — SMP

Компьютеры с несколькими процессорами существуют несколько десятков лет, но сейчас наблюдается взрывообразный рост их популярности. FreeBSD обеспечивает поддержку нескольких процессоров, начиная с версии 3, однако многопроцессорные и многоядерные архитектуры еще не столь широко распространены. В современных системах используется принцип симметричной многопроцессорной обработки (Symmetric Multiprocessing, SMP), который подразумевает систему с несколькими идентичными процессорами. (Да, в некоторых многопроцессорных системах не требуется, чтобы процессоры были идентичными. Возможно, как раз такая система имеется в вашем компьютере — в виде нескольких видеокарт, у каждой из которых есть свой специальный микропроцессор, отвечающий за вывод графических изображений.)

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

В качестве программного обеспечения рабочего стола я использую WindowMaker, для отображения содержимого архивов почтовой рассылки — Firefox, a OpenOffice.org принимает текст, который я ввожу с клавиатуры. В систему постоянно прибывают сетевые пакеты, экран отображает текст, МРЗ-плеер передает мелодии Blue Oyster Cult в мои наушники — все это происходит одновременно. В действительности, «одновременно» это происходит только для моего слабого мозга. На самом деле компьютер просто очень быстро переключается с одной задачи на другую. В одну миллисекунду он посылает очередной звуковой фрагмент в мои наушники, в другую — обновляет изображение текста на экране.

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

Допущения о работе ядра

Для понимания многопроцессорной обработки и проблем, связанных с ней, необходимо углубиться в работу ядра. Все операционные системы, в которых реализуется SMP, сталкиваются с одними и теми же проблемами. Следовательно, теория, представленная здесь, подходит для различных платформ. Однако FreeBSD в какой-то мере отличается от других операционных систем, поскольку опирается на 30-летнее наследие UNIX, а дальнейшая разработка FreeBSD не прекращается ни на месяц. Следующее описание представляет собой грубое упрощение. Конструкция ядра — мудреная тема. Почти невозможно описать ее точно на уровне, понятном для непрограммистов. Вот объяснение работы ядра в самом общем виде.

FreeBSD использует процессор по принципу квантов времени (time slices). Квант времени — это временной интервал, в течение которого процессор занимается одной задачей. Один процесс может использовать процессор в течение всего кванта либо до того момента, когда задача будет выполнена. После этого может быть запущен другой процесс. Для выделения квантов времени и их распределения между программами ядро применяет систему приоритетов. Если в системе появляется процесс, приоритет которого выше приоритета текущего процесса, ядро прерывает обработку первого процесса, или вытесняет его. Обычно такой режим называют вытесняющей многозадачностью (preemptive multitasking).

Хотя ядро запущено, это еще не процесс. Ядро запускает процессы. Процесс имеет определенные структуры данных, задаваемые ядром, и ядро управляет ими так, как считает нужным. Ядро можно представить как особый процесс, сильно отличающийся от других процессов. Он не может быть прерван другими программами — нельзя набрать pkill kernel и перезагрузить систему.

Ядро сталкивается с особыми проблемами, неведомыми остальным частям системы. Представьте, что имеется некоторая программа, которая выполняет передачу данных через сеть. Ядро принимает данные от программы и помещает их в область памяти, доступную для сетевой карты. Если компьютер занимается только одной какой-то задачей, то с той областью памяти или с сетевой картой ничего не случится, пока ядро не вернется к решению этой задачи. Однако при наличии нескольких процессоров компьютер одновременно может решать сразу несколько задач. Что если разные процессоры одновременно станут передавать данные сетевой карте? Сетевая карта попадет в положение человека, которому в одно ухо кричит начальник, а в другое — мама, и что бы он ни сделал, никому не нравится. А что если один процессор попытается выделить область памяти для решения сетевых задач, а другой ту же самую область памяти — для нужд файловой системы? Ядро просто запутается, и полученные результаты вас точно не удовлетворят.

В старых ядрах разных UNIX, в том числе FreeBSD, трудности с SMP преодолеваются так: ядро объявляется невытесняемым — его работа не может быть прервана. За счет этого управление ядром становится простым и ясным: если какой-либо модуль ядра занимает участок памяти, он может рассчитывать на данный участок при выполнении следующей команды. Никакой другой модуль ядра не может захватить эту память. Когда компьютеры могли выполнять всего одну операцию в каждый конкретный момент времени, можно было делать некоторые допущения. Но стоит начать выполнять одновременно несколько операций — и все допущения идут прахом.

SMP: первая попытка

Первая реализация поддержки SMP в FreeBSD была довольно проста. Процессы распределялись между процессорами так, чтобы нагрузка была приблизительно равномерной. Для ядра существовала специальная «блокировка» (lock). Для выполнения кода ядра процессор должен был захватить «блокировку», проверив перед этим, доступна ли она. Если «блокировка» была доступна, он захватывал ее и запускал ядро. Если же «блокировка» была недоступна, процессор знал, что ядро выполняется другим процессором, и переключался на обработку чего-то другого. Эта «блокировка» называлась Big Giant Lock (BGL). В такой системе ядро знало, что его данные не затронет ни один процесс. По существу, данная схема гарантировала, что ядро будет запущено только на одном процессоре, как это всегда и было.

Такая стратегия была довольно эффективной в случае двух процессоров. На двухпроцессорной машине можно было запустить базу данных среднего уровня и веб-сервер и быть уверенным, что подсистема процессоров не станет причиной снижения производительности. Если один процессор был занят обслуживанием веб-страниц, то другой мог обрабатывать запросы к базам данных. Однако на машине с восемью процессорами вас поджидали трудности. Значительную часть времени система ждала, пока освободится BGL!

Такая упрощенная реализация SMP неэффективна и немасштабируема. В руководствах по SMP этот метод упоминается редко, поскольку он довольно неуклюж. Тем не менее он лучше методов организации SMP, предлагаемых другими системами. Например, по умолчанию в двухпроцессорной системе Windows 2000 один процессор выделяется для пользовательского интерфейса, а другой — для всего остального. Это решение тоже редко упоминается в руководствах, хотя благодаря ему интерфейс становится быстрым, и мышь не замирает при увеличении нагрузки на систему.*

Современная реализация SMP

Новый метод симметричной многопроцессорной обработки данных был реализован в версии FreeBSD 5.0 и продолжает совершенствоваться по сей день. В операционной системе FreeBSD блокировка BGL была раздроблена на множество маленьких блокировок, и теперь каждая подсистема ядра использует для решения своих задач минимальную возможную блокировку.

Изначально блокировки были реализованы в таких базовых элементах инфраструктуры ядра, как планировщик (часть ядра, которая занимается распределением квантов времени между задачами), сетевой стек, стек дисковых операций ввода-вывода и т. д. Это сразу положительно сказалось на производительности, потому что в то время, как один процессор занимался планированием задач, другой мог заниматься обработкой сетевого трафика. Затем блокировки были сдвинуты еще глубже — в различные компоненты ядра. Для каждой части сетевого стека была создана своя блокировка, для каждой части подсистемы ввода-вывода — своя и т.д., что позволило ядру одновременно выполнять несколько операций. Такие отдельные подпроцессы ядра называются потоками (threads). Каждый тип блокировки предъявляет свои собственные требования. Вам встретится упоминание самых разных типов блокировок, таких как мьютексы, sx-блокировки, rw-блокировки, спин-блокировки и семафоры. У каждого из этих типов есть как преимущества, так и недостатки, и задействовать их в программном коде ядра нужно особенно аккуратно.

Проблема дробления блокировок на самом деле гораздо сложнее, чем может показаться. Если раздробить блокировки чересчур тонко, то основным занятием ядра станет не обработка данных, а обслуживание блокировок. Если же раздробить блокировки недостаточно тонко, то система будет простаивать в ожидании освобождения блокировок. Степень дробления, достаточная для обеспечения высокой эффективности в двухпроцессорной системе, может оказаться совершенно неприемлемой в тридцатидвухпроцессорной системе. Поиск оптимального решения занял годы и будет продолжаться в течение всей жизни FreeBSD.

Проблемы SMP: взаимоблокировка, клинч и нарушение порядка приобретения блокировок

Все блокировки ядра применяются по сложным правилам и взаимодействуют друг с другом миллионом способов. Правила защищают от непреднамеренного взаимовлияния блокировок. Предположим, что потоку ядра А потребовались ресурсы Y и Z; потоку ядра В также потребовались ресурсы Y и Z, но при этом поток В должен сначала захватить ресурс Z, а потом Y. Если поток А захватит ресурс Y, а поток В в это же время захватит ресурс Z, то поток А остановится в ожидании освобождения ресурса Z, а поток В — в ожидании освобождения ресурса Y. Такой клинч дестабилизирует систему и, скорее всего, приведет к ее остановке. Правильная установка блокировок поможет избежать этой проблемы.

Возможно, вам приходилось увидеть на экране сообщение о неверном порядке приобретения блокировок — Lock Order Reversal (LOR), которое означает, что порядок приобретения блокировок был нарушен. Хотя это предупреждение не всегда свидетельствует о неминуемой гибели, тем не менее его не следует оставлять без внимания.

Параметр настройки ядра WITNESS позволяет активизировать функцию слежения за порядком приобретения блокировок. По умолчанию, в версии FreeBSD-current (глава 13) параметр WITNESS включен, и если вы отправите отчет о проблемах в вашей системе, команда разработчиков может попросить вас активизировать этот параметр. WITNESS вынуждает ядро инспектировать каждую операцию приобретения блокировки на предмет нарушения порядка следования, что снижает производительность системы. Тем не менее использование параметра WITNESS, чтение сообщений и реакция на них- это неоценимый способ помочь в улучшении FreeBSD.

Реакция на нарушение порядка приобретения блокировок

При получении одного из сообщений Lock Order Reversal, скопируйте его целиком. Эти сообщения дополнительно протоколируются в файле /var/log/messages. Получив сообщение, проверьте страницу с сообщениями Lock Order Reversal по адресу http://sources.zabbadoz.net/freebsd/lor.html. Здесь содержится список всех ранее встреченных сообщений о нарушении порядка приобретения блокировок. Сравните первые несколько строк из этого списка со своим сообщением LOR. Если ваше сообщение присутствует в списке, сопутствующий комментарий позволит вам понять, что делать. Многие сообщения LOR, представленные на этой странице, не представляют опасности, а некоторые уже исправлены в более поздних версиях FreeBSD.

Если ваше сообщение LOR отсутствует в списке на сайте, просмотрите архивы почтовых рассылок. Если ваше сообщение LOR встретится в почтовой рассылке, прочитайте сообщение и выполните рекомендуемые действия. Не стоит посылать сообщение «и у меня тоже» в почтовую рассылку, если разработчик явно не выразил желание получать уведомления о сообщении LOR данного типа.

Если вам встретилось совершенно новое сообщение LOR, поздравляю! Обнаружение нового сообщения LOR такое же редкое событие, как открытие нового вида насекомых, — вы не сможете дать этому сообщению свое имя, но это очень поможет проекту FreeBSD. Отошлите отчет о проблеме, как описано в главе 21. Укажите полную информацию о своей системе, особенно о том, какие задачи решались во время появления сообщения.

Процессоры и SMP

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

Несколько процессоров — это отдельные чипы на материнской плате (то есть то, что мы привыкли называть процессорами), способные сотрудничать друг с другом. Все процессоры в таких системах независимы, каждый из них обладает полным комплектом особенностей (такими как регистры, кэш и т. д.) и каждый управляется своим собственным аппаратным окружением.

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

HyperThreading — это технология компании Intel, позволяющая одноядерному процессору разбить себя на два виртуальных процессора. Однако виртуальный процессор нельзя назвать полноценным процессором, поскольку второй виртуальный процессор задействуется, только когда первый (основной) простаивает в ожидании какого-либо события. Строго говоря, SMP — это симметричная многопроцессорная обработка, то есть все процессоры должны быть идентичны. Виртуальный процессор не обладает такой же производительностью, как реальный, поэтому их нельзя рассматривать как идентичные. Теоретически возможно написать планировщик задач, который будет использовать преимущества этой технологии, но для большинства типов решаемых задач в этом практически нет никакой пользы. Ни одна из UNIX-подобных операционных систем не обладает планировщиком, который бы полностью поддерживал все возможности технологии HyperThreading. Кроме того, эта технология таит в себе различные проблемы, связанные с безопасностью. Задача, исполняемая на одном виртуальном процессоре, может перехватывать данные, например ключи шифрования, принадлежащие задаче, исполняемой на другом виртуальном процессоре. По этой причине в операционной системе FreeBSD поддержка HyperThreading отключена по умолчанию. Если вам будет интересно попробовать эту технологию в действии на процессорах Intel, установите параметр sysctl machdep.hyperthreading_allowed в значение 1 и оцените производительность приложений. Для систем, где отсутствуют внешние пользователи, описанная выше проблема безопасности, вероятно, не имеет большого значения. (Если у вас реализованы виртуальные системы в клетках, это означает, что у вас имеются внешние пользователи.)

Применение SMP

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

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

Один процессор может выполнять только одну операцию в каждый конкретный момент времени, один процесс может выполняться только на одном процессоре в каждый конкретный момент времени. Большинство процессов не могут выполнять свою работу сразу на нескольких процессорах. Исключение составляют многопоточные программы, как будет показано ниже, в этой же главе. Некоторые программы преодолевают это ограничение, запуская сразу несколько процессов, что позволяет операционной системе распределять их между процессорами. Такая методика уже много лет применяется в Apache. Многопоточные программы написаны специально для выполнения на нескольких процессорах и используют другую методику. Многие многопоточные программы просто создают несколько потоков обработки данных и распределяют исполнение потоков между несколькими процессорами, что представляет собой простую и достаточно эффективную реализацию параллельных вычислений. Другие программы вообще не используют преимущества многопроцессорных систем. Если один из процессоров занят на все сто процентов, а другие практически простаивают, следовательно, запущена программа, не поддерживающая многопроцессорную обработку данных. Более подробно о вопросах производительности мы поговорим в главе 19.

SMP и make(1)

Утилита make(1), которая выполняет сборку программ, может запускать сразу несколько процессов. Если программа написана аккуратно, ее сборка может выполняться сразу несколькими процессами. Такой подход не поможет увеличить скорость сборки маленьких программ, но при сборке крупных программных продуктов, таких как сама операционная система FreeBSD (глава 13) или OpenOffice.org, наличие нескольких процессоров может существенно ускорить процесс сборки. Чтобы указать системе, сколько процессов следует запускать одновременно, нужно передать утилите make(1) ключ -j и число процессов. Оптимальным выбором будет число процессоров или ядер плюс один. Например, в двухпроцессорной системе, где каждый процессор имеет по два ядра, можно было бы запустить пять процессов сборки программы.

# make -j5 all install clean

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

В главе 19 представлены различные способы оценки и измерения производительности.

freebsdguide.ru

Процессор

Процессор

Процессор (микропроцессор, центральный процессор, CPU) – основная микросхема компьютера, в которой и производятся все вычисления. Он представляет из себя большую микросхему (например, размеры микропроцессора Pentium примерно 5*5*0,5 см), которую можно легко найти на материнской плате. На процессоре установлен большой медный ребристый радиатор, охлаждаемый вентилятором. Конструктивно процессор состоит из ячеек, в которых данные могут не только храниться, но и изменяться. Внутренние ячейки процессора называют регистрами. Важно также отметить, что данные, попавшие в некоторые регистры, рассматриваются не как данные, а как команды, управляющие обработкой данных в других регистрах. Среди регистров процессора есть и такие, которые в зависимости от своего содержания способны модифицировать исполнение команд. Таким образом, управляя засылкой данных в разные регистры процессора, можно управлять обработкой данных. На этом и основано исполнение программ.

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

Адресная шина. У процессоров Intel Pentium (а именно они наиболее распространены в персональных компьютерах) адресная шина 32-разрядная, то есть состоит из 32 параллельных линий. В зависимости от того, есть напряжение на какой-то из линий или нет, говорят, что на этой линии выставлена единица или ноль. Комбинация из 32 нулей и единиц образует 32-разрядный адрес, указывающий на одну из ячеек оперативной памяти. К ней и подключается процессор для копирования данных из ячейки в один из своих регистров.

Шина данных. По этой шине происходит копирование данных из оперативной памяти в регистры процессора и обратно. В компьютерах, собранных на базе процессоров Intel Pentium, шина данных 64-разрядная, то есть состоит из 64 линий, по которым за один раз на обработку поступают сразу 8 байтов.

Шина команд. Для того чтобы процессор мог обрабатывать данные, ему нужны команды. Он должен знать, что следует сделать с теми байтами, которые хранятся в его регистрах. Эти команды поступают в процессор тоже из оперативной памяти, но не из тех областей, где хранятся массивы данных, а оттуда, где хранятся программы. Команды тоже представлены в виде байтов. Самые простые команды укладываются в один байт, однако есть и такие, для которых нужно два, три и более байтов. В большинстве современных процессоров шина команд 32-разрядная (например, в процессоре Intel Pentium), хотя существуют 64-разрядные процессоры и даже 128-разрядные.

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

Совместимость процессоров. Если два процессора имеют одинаковую систему команд, то они полностью совместимы на программном уровне. Это означает, что программа, написанная для одного процессора, может исполняться и другим процессором. Процессоры, имеющие разные системы команд, как правило, несовместимы или ограниченно совместимы на программном уровне.

Группы процессоров, имеющих ограниченную совместимость, рассматривают как семейства процессоров. Так, например, все процессоры Intel Pentium относятся к так называемому семейству х86. Родоначальником этого семейства был 16-разрядный процессор Intel 8086, на базе которого собиралась первая модель компьютера IBM PC. Впоследствии выпускались процессоры Intel 80286, Intel 80386, Intel 80486, Intel Pentium 60,66,75,90,100,133; несколько моделей процессоров Intel Pentium MMX, модели Intel Pentium Pro, Intel Pentium II, Intel Celeron, Intel Xeon, Intel Pentium III (см. рис. 2.3,а), Intel Pentium IV и другие. Все эти модели, и не только они, а также многие модели процессоров компаний AMD (см. рис. 2.3,б) и Cyrix относятся к семейству х86 и обладают совместимостью по принципу «сверху вниз».

Рис. 2.3. Микропроцессоры, разработанные фирмами Intel и AMD:

а) CPU Intel Pentium 4 2.8 ГГц; б) CPU Intel Pentium III 550 МГц ;

в) CPU AMD K6-3-450 МГц

Принцип совместимости «сверху вниз» – это пример неполной совместимости, когда каждый новый процессор «понимает» все команды своих предшественников, но не наоборот. Это естественно, поскольку двадцать лет назад разработчики процессоров не могли предусмотреть систему команд, нужную для современных программ. Благодаря такой совместимости на современном компьютере можно выполнять любые программы, созданные в последние десятилетия для любого из предшествующих компьютеров, принадлежащего той же аппаратной платформе.

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

Рабочее напряжение процессора обеспечивает материнская плата, поэтому разным маркам процессоров соответствуют разные материнские платы (их надо выбирать совместно). По мере развития процессорной техники происходит постепенное понижение рабочего напряжения. Ранние модели процессоров х86 имели рабочее напряжение 5 В. С переходом к процессорам Intel Pentium оно было понижено до 3,3 В, а в настоящее время оно составляет менее 3 В. Причем ядро процессора питается пониженным напряжением 2,2 В. Понижение рабочего напряжения позволяет уменьшить расстояния между структурными элементами в кристалле процессора до десятитысячных долей миллиметра, не опасаясь электрического пробоя. Пропорционально квадрату напряжения уменьшается и тепловыделение в процессоре, а это позволяет увеличивать его производительность без угрозы перегрева.

Разрядность процессора показывает, сколько бит данных он может принять и обработать в своих регистрах за один раз (за один такт). Первые процессоры х86 были 16-разрядными. Начиная с процессора 80386 они имеют 32-разрядную архитектуру. Современные процессоры семейства Intel Pentium остаются 32-разрядными, хотя и работают с 64-разрядной шиной данных (разрядность процессора определяется не разрядностью шины данных, а разрядностью командной шины).

В основе работы процессора лежит тот же тактовый принцип, что и в обычных часах. Исполнение каждой команды занимает определенное количество тактов. В настенных часах такты колебаний задает маятник; в ручных механических часах их задает пружинный маятник; в электронных часах для этого есть колебательный контур, задающий такты строго определенной частоты. В персональном компьютере тактовые импульсы задает одна из микросхем, входящая в микропроцессорный комплект (чипсет), расположенный на материнской плате. Чем выше частота тактов, поступающих на процессор, тем больше команд он может исполнить в единицу времени, тем выше его производительность. Первые процессоры х86 могли работать с частотой не выше 4,77 МГц, а сегодня рабочие частоты, некоторых процессоров уже превосходят 500 миллионов тактов в секунду (500 МГц).

Тактовые сигналы процессор получает от материнской платы, которая, в отличие от процессора, представляет собой не кристалл кремния, а большой набор проводников и микросхем. По чисто физическим причинам материнская плата не может работать со столь высокими частотами, как процессор. Сегодня ее предел составляет 100-133 МГц. Для получения более высоких частот в процессоре происходит внутреннее умножение частоты на коэффициент 3; 3,5; 4; 4,5; 5 и более.

Обмен данными внутри процессора происходит в несколько раз быстрее, чем обмен с другими устройствами, например с оперативной памятью. Для того чтобы уменьшить количество обращений к оперативной памяти, внутри процессора создают буферную область – так называемую кэш-память. Это как бы «сверхоперативная память». Когда процессору нужны данные, он сначала обращается в кэш-память, и только если там нужных данных нет, происходит его обращение в оперативную память. Принимая блок данных из оперативной памяти, процессор заносит его одновременно и в кэш-память. «Удачные» обращения в кэш-память называют попаданиями в кэш. Процент попаданий тем выше, чем больше размер кэш-памяти, поэтому высокопроизводительные процессоры комплектуют повышенным объемом кэш-памяти.

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

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

studfiles.net


Читайте также
  • Гиперскоростная звезда – более 1.000.000 миль в час
    Гиперскоростная звезда – более 1.000.000 миль в час
  • Астрономы обнаружили самую большую спиральную галактику
    Астрономы обнаружили самую большую спиральную галактику
  • Млечный путь содержит десятки миллиардов планет, схожих с Землей
    Млечный путь содержит десятки миллиардов планет, схожих с Землей
  • Млечный путь разорвал своего спутника на четыре отдельных хвоста
    Млечный путь разорвал своего спутника на четыре отдельных хвоста
  • Найден источник водородных газов для нашей Галактики
    Найден источник водородных газов для нашей Галактики