Smp что это такое

Симметричная мультипроцессорность

Smp что это такое. 48px Question book 4.svg. Smp что это такое фото. Smp что это такое-48px Question book 4.svg. картинка Smp что это такое. картинка 48px Question book 4.svg

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

Содержание

Преимущества и недостатки

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

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

Проблемы

Ограничение на количество процессоров

При увеличении числа процессоров заметно увеличивается требование к полосе пропускания шины памяти. Это накладывает ограничение на количество процессоров в SMP архитектуре. Современные SMP-системы позволяют эффективно работать при 16 процессорах.

Проблема когерентности кэш-памяти

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

Альтернативы

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

Другими подходами являются асимметричное мультипроцессирование (ASMP), в котором отдельные специализированные процессоры используются для конкретных задач, и кластерная мультипроцессорность (Beowulf), в которой не вся память доступна всем процессорам. Такие подходы нечасто используются (хотя высокопроизводительные 3D-чипсеты в современных видеокартах могут рассматриваться как форма асимметричной мультипроцессорности), в то время как кластерные системы широко применяются при построении очень больших суперкомпьютеров.

Источник

УТП + SMP = продающий маркетинг

Smp что это такое. 08022017 07. Smp что это такое фото. Smp что это такое-08022017 07. картинка Smp что это такое. картинка 08022017 07

Предложение должно быть одно, такое, которое не смогут предложить конкуренты или хотя бы не пытались это сделать до сегодняшнего дня. Это должно быть что-то уникальное, то, чего еще не было и это может определить не только предложение, но и сам бренд. Выделяйтесь, оставьте шаблоны конкурентам!

Прошло 50 лет, но все эти 3 пункта по-прежнему актуальны. Мы не советуем тратить ни одного доллара на рекламу, пока у вас нет «УТП». И в целом, не думать о каких-либо рекламных активностях, пока вы не проверили свое «УТП» на модели тестирования позиционирования по технологии Джека Траута, превратив его в «SMP» (single-minded proposition).

Что такое «SMP»?

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

Одним словом, это фундамент, на котором строятся все успешные кампании.

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

«SMP» примеры:

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

Как создать «SMP»?

Начните со знакомства со своим продуктом или услугой. Важно, чтобы вы действительно отнеслись к этому серьезно. Инженеры Lexus настолько вживаются в роль своих клиентов (обеспеченных людей), что перед проектированием автомобиля они начинают есть пищу, носить обувь, ходить в места, которые предпочитает клиент. Нужно стать клиентом своего бренда, чтобы ответить на простые вопросы: Что Вам нравится? Что Вам не нравится?

И находясь именно в таком настрое, ответьте на следующие вопросы:

К последнему вопросу обычно и формируются достойные варианты вашего«SMP». Зафиксируйте их и попробуйте оценить получившиеся ответы с позиции клиента (не зря ведь мы вживались в роль).

Smp что это такое. cat393. Smp что это такое фото. Smp что это такое-cat393. картинка Smp что это такое. картинка cat393

Проверьте ваш «SMP»

Если на эти вопросы ответ «ДА», вы получили ваш «SMP». Если нет, то продолжайте работать над этим, пока не создадите SMP, где все 3 ответа будут ДА.

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

SMP (Symmetric Multiprocessing)

В таксономии Флинна SMP-машины относятся к классу SM-MIMD-машин. Большинство многопроцессорных систем сегодня используют архитектуру SMP.

Содержание

Описание

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

Разные SMP-системы соединяют процессоры с общей памятью по-разному. Самый простой и дешевый подход — это соединение по общей шине (system bus). В этом случае только один процессор может обращаться к памяти в каждый данный момент, что накладывает существенное ограничение на количество процессоров, поддерживаемых в таких системах. Чем больше процессоров, тем больше нагрузка на общую шину, тем дольше должен ждать каждый процессор, пока освободится шина, чтобы обратиться к памяти. Снижение общей производительности такой системы с ростом количества процессоров происходит очень быстро, поэтому обычно в таких системах количество процессоров не превышает 2-4. Примером SMP-машин с таким способом соединения процессоров являются любые многопроцессорные серверы начального уровня.

Smp что это такое. SMP Multiprocessor.svg. Smp что это такое фото. Smp что это такое-SMP Multiprocessor.svg. картинка Smp что это такое. картинка SMP Multiprocessor.svg

Второй способ соединения процессоров — через коммутируемое соединение (crossbar switch). При таком соединении вся общая память делится на банки памяти, каждый банк памяти имеет свою собственную шину, и процессоры соединены со всеми шинами, имея доступ по ним к любому из банков памяти. Такое соединение схемотехнически более сложное, но оно позволяет процессорам обращаться к общей памяти одновременно. Это позволяет увеличить количество процессоров в системе до 8-16 без заметного снижения общей производительности. Примером таких SMP-машин являются многопроцессорные рабочие станции RS/6000.

Smp что это такое. SMP Multiprocessor with crossbar switch.svg. Smp что это такое фото. Smp что это такое-SMP Multiprocessor with crossbar switch.svg. картинка Smp что это такое. картинка SMP Multiprocessor with crossbar switch.svg

Преимущества и недостатки

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

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

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

Ограничение на количество процессоров

При увеличении числа процессоров заметно увеличивается требование к полосе пропускания шины памяти. Это налагает ограничение на количество процессоров в SMP архитектуре. Современные SMP-системы позволяют эффективно работать при 16 процессорах.

Проблема когерентности кэш-памяти

Каждый современный процессор оборудован многоуровневой кэш-памятью для более быстрой выборки данных и инструкций из основной памяти, которая работает медленнее, чем процессор. В многопроцессорной системе наличие кэш-памяти у процессоров снижает нагрузку на общую шину или на коммутируемое соединение, что весьма благоприятно сказывается на общей производительности системы. Но, так как каждый процессор оборудован своей индивидуальной кэш-памятью, возникает опасность, что в кэш-память одного процессора попадет значение переменной отличное от того, что хранится в основной памяти и в кэш-памяти другого процессора. Представим, что процессор изменяет значение переменной в своем кэше, а другой процессор запрашивает эту переменную из основной памяти. И он получит старое значение переменной. Или, например, подсистема ввода-вывода записывает в основную память новое значение переменной, а в кэш-памяти процессора по-прежнему остается старое. Разрешение этой проблемы возложено на протокол согласования кэшей (cache coherence protocol), который призван обеспечить согласованность («когерентность») кэшей всех процессоров и основной памяти без потери общей производительности.

Поддержка операционной системой

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

Поддержка многопроцессорности в ОС Linux была добавлена в версии ядра 2.0 и усовершенствована в версии 2.6. ОС Windows NT изначально создавалась с поддержкой многопроцессорности. Но вот Windows 9x не поддерживали SMP до выхода Windows XP, ставшей развитием Windows 2000, т.е. ветки Windows NT.

Альтернативы

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

Другая концепция — асимметричное мультипроцессирование (ASMP), в котором отдельные специализированные процессоры используются для конкретных задач, и кластерная мультипроцессорность (Beowulf), в которой не вся память доступна всем процессорам. Такие подходы нечасто используются (хотя высокопроизводительные 3D-чипсеты в современных видеокартах могут рассматриваться как форма асимметричной мультипроцессорности), в то время как кластерные системы широко применяются при построении очень больших суперкомпьютеров.

Источник

Ядра процессора или что такое SMP и с чем его едят

Введение

Многозадачность и её реализация

Те, кто когда-нибудь изучал архитектуру ЭВМ знает, что процессор сам по себе не умеет выполнять несколько задач сразу, многозадачность нам даёт только ОС, которая и переключает эти задачи. Есть несколько типов многозадачности, но самый адекватный, удобный и широко используемый — вытесняющая многозадачность(главные её аспекты Вы можете прочитать на википедии). Она основана на том, что у каждого процесса(задачи) есть свой приоритет, который влияет на то, сколько процессорного времени ему будет выделено. Каждой задаче даётся один квант времени, во время которого процесс что-либо делает, после истечение кванта времени ОС передает управление другой задаче. Возникает вопрос — а как распределить ресурсы компьютера, такие, как память, устройства и т.п. между процессами? Всё очень просто: Windows делает это сама, Linux же использует систему семафоров. Но одно ядро — несерьезно, идем дальше.

Прерывания и PIC

Возможно, для кого-то это окажется новостью, для кого-то — нет, но архитектура i386(буду говорить именно про архитектуры x86, ARM не в счет, т.к. данную архитектуру я не изучал, да и никогда с ней не сталкивался(даже на уровне написание какой-нибудь службы или резидентной программы)) использует прерывания(мы будем говорить только про прерывания оборудования, IRQ) для того, чтобы оповестить ОС или программу о том или ином событии. К примеру, существует прерывание 0x8(для защищенного и длинного режимов, к примеру, 0x20, смотря как настроить PIC, об этом дальше), которое вызывается PIT’ом, который, к примеру, может генерировать прерывания с какой-либо необходимой частотой. Тогда работа ОС для распределения квантов времени сводиться к 0, при вызове прерывания работа программы прекращается, и управление отдаётся, к примеру, ядру, которое в свою очередь сохраняет текущие данные программы(регистры, флаги и т.п.) и отдает управление следующему процессу.

Как вы наверное поняли, прерывания — это функции(или же процедуры), которые вызываются в какой-либо момент времени оборудованием, или же самой программой. Всего процессор поддерживает 16 прерываний на двух PIC’ах. Процессор имеет флаги, и один из них — флаг «I» — Interrupt Control. Путем установки данного флага в 0 процессор не будет вызывать никаких аппаратных прерываний. Но, так же хочу заметить, что есть так называемые NMI — Non-Maskable Interrupts — данные прерывания всё равно будут вызываться, даже если бит I установлен в 0. При помощи программирования PIC можно запретить данные прерывания, но после возврата из любого прерывания при помощи IRET — они вновь станут не запрещенными. Замечу, что из-под обычной программы вы не сможете отследить вызов прерывания — выполнение вашей программы остановиться, и только через некоторое время возобновиться, ваша программа этого даже не заметит(да-да, можно проверить то, что было вызвано прерывание — но зачем?

PIC — Programmable Interrupt Controller

Как правило, представляет собой электронное устройство, иногда выполненное как часть самого процессора или же сложных микросхем его обрамления, входы которого присоединены электрически к соответствующим выходам различных устройств. Номер входа контроллера прерываний обозначается «IRQ». Следует отличать этот номер от приоритета прерывания, а также от номера входа в таблицу векторов прерываний (INT). Так, например, в IBM PC в реальном режиме работы (в этом режиме работает MS-DOS) процессора прерывание от стандартной клавиатуры использует IRQ 1 и INT 9.

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

Как вы поняли, это электронная схема, которая позволяет устройствам отправлять запросы на прерывания, обычно их ровно 2.

Теперь же, давайте перейдем к самой теме статьи.

Для реализации данного стандарта на материнские платы начали ставить новые схемы: APIC и ACPI. Давайте поговорим о первом.

APIC — Advanced Programmable Interrupt Controller, улучшенная версия PIC. Он используется в многопроцессорных системах и является неотъемлемой частью всех последних процессоров Intel (и совместимых). APIC используется для сложного перенаправления прерываний и для отправки прерываний между процессорами. Эти вещи были невозможны с использованием более старой спецификации PIC.

Local APIC и IO APIC

В системе на базе APIC каждый процессор состоит из «ядра» и «локального APIC’а». Local APIC отвечает за обработку конфигурации прерываний, специфичных для процессора. Помимо всего прочего, он содержит локальную векторную таблицу (LVT), которая переводит события, такие как «внутренние часы(internal clock)» и другие «локальные» источники прерываний, в вектор прерывания (например, контакт LocalINT1 может поднимать исключение NMI, сохраняя «2» в соответствующий вход LVT).

Более подробную информацию о локальном APIC можно найти в «Руководстве по системному программированию» современных процессоров Intel.

Кроме того, имеется APIC IO (например, intel 82093AA), который является частью набора микросхем и обеспечивает многопроцессорное управление прерываниями, включающее как статическое, так и динамическое симметричное распределение прерываний для всех процессоров. В системах с несколькими подсистемами ввода / вывода каждая подсистема может иметь свой собственный набор прерываний.

Каждый вывод прерывания индивидуально программируется «as either edge or level triggered». Вектор прерывания и информация об управлении прерываниями могут быть указаны для каждого прерывания. Схема косвенного доступа к регистру оптимизирует пространство памяти, необходимое для доступа к внутренним регистрам ввода-вывода APIC. Чтобы повысить гибкость системы при назначении использования пространства памяти, пространство двух регистров ввода-вывода APIC является перемещаемым, но по умолчанию оно равно 0xFEC00000.

Инициализация «локального» APIC’а

Локальный APIC активируется во время загрузки и может быть отключен путем сброса бита 11 IA32_APIC_BASE (MSR) (это работает только с процессорами с семейством > 5, поскольку у Pentium нет такого MSR), Затем процессор получает свои прерывания непосредственно из совместимого с 8259 PIC’а. Однако в руководстве Intel по разработке программного обеспечения указано, что после отключения локального APIC’а через IA32_APIC_BASE вы не сможете включить его до полного сброса. IO APIC также может быть сконфигурирован для работы в унаследованном режиме, так чтобы он эмулировал устройство 8259.

Локальные регистры APIC отображаются на физическую страницу FEE00xxx (см. таблицу 8-1 Intel P4 SPG). Этот адрес тот же для каждого локального APIC, которые существуют в конфигурации, что означает, что вы можете напрямую обращаться к регистрам локального APIC ядра, в котором в данный момент выполняется ваш код. Обратите внимание, что существует MSR, который определяет фактическую базу APIC (доступен только для процессоров с семейством> 5). MADT содержит локальную базу APIC, а в 64-битных системах может также содержать поле, определяющее 64-разрядное переопределение базового адреса, которое вы должны использовать вместо этого. Вы можете оставить локальную базу APIC только там, где вы ее найдете, или переместить ее туда, куда захотите. Примечание: я не думаю, что вы можете переместить его дальше, чем 4-й ГБайт RAM’а.

Чтобы включить локальный APIC для приема прерываний, необходимо настроить «Spurious Interrupt Vector Register». Правильное значение для этого поля — это номер IRQ, который вы хотите сопоставить ложным прерываниям с младшими 8 битами, и 8-й бит, установленный в 1, чтобы фактически включить APIC (подробнее см. спецификацию). Вы должны выбрать номер прерывания, у которого установлены младшие 4 бита; проще всего использовать 0xFF. Это важно для некоторых более старых процессоров, потому что для этих значений младших 4 бит должны быть установлены в 1.

Отключите 8259 PIC правильно. Это почти так же важно, как настройка APIC. Вы делаете это в два этапа: маскирование всех прерываний и переназначение IRQ. Маскировка всех прерываний отключает их в PIC. Ремаппинг прерываний — это то, что вы, вероятно, уже сделали, когда вы использовали PIC: вы хотите, чтобы запросы прерывания начинались с 32 вместо 0, чтобы избежать конфликтов с исключениями(в защищенном и длинном(Long) режимах процессора, т.к. первые 32 прерывания — исключения(exceptions)). Затем вы должны избегать использования этих векторов прерываний для других целей. Это необходимо, потому что, несмотря на то, что вы маскировали все прерывания PIC, он все равно мог выдавать ложные прерывания, которые затем будут неверно обрабатываться в вашем ядре в качестве исключений.
Перейдем к SMP.

Симметричная многозадачность: инициализация

Последовательность запуска различна для разных ЦП. Руководство программиста Intel (раздел 7.5.4) содержит протокол инициализации для процессоров Intel Xeon и не охватывает более старые процессоры. Для общего алгоритма «всех типов процессоров» см. «Многопроцессорная спецификация Intel».

Для 80486 (с внешним APIC 8249DX) вы должны использовать IPIT INIT, за которым следует IPI «INIT level de-assert» без каких-либо SIPI. Это означает, что вы не можете сказать им, где начать выполнение вашего кода (векторная часть SIPI), и они всегда начинают выполнять код BIOS. В этом случае вы устанавливаете значение сброса CMOS BIOS в «warm start with far jump» (т. е. Установите положение CMOS 0x0F в значение 10), чтобы BIOS выполнил jmp far

[0: 0x0469] », а затем установите сегмент и смещение точки входа AP в 0x0469.

«INIT level de-assert» IPI не поддерживается на новых процессорах (Pentium 4 и Intel Xeon), а AFAIK полностью игнорируется на этих процессорах.

Для более новых процессоров (P6, Pentium 4) достаточно одного SIPI, но я не уверен, что более старые процессоры Intel (Pentium) или процессоры других производителей нуждаются в втором SIPI. Также возможно, что второй SIPI существует в случае сбоя доставки для первого SIPI (шум шины и т. д.).

Обычно я отправляю первый SIPI, а затем жду, чтобы увидеть, увеличивает ли AP счетчик количества запущенных процессоров. Если он не увеличит этот счетчик в течение нескольких миллисекунд, я отправлю второй SIPI. Это отличается от общего алгоритма Intel (который имеет задержку в 200 микросекунд между SIPI), но попытка найти источник времени, способный точно измерять задержку в 200 микросекунд во время ранней загрузки, не так-то просто. Я также обнаружил, что на реальном оборудовании, если задержка между SIPI слишком длинная (и вы не используете мой метод), главный AP может запускать ранний код запуска AP для ОС дважды (что в моем случае приведет к тому, что ОС будет думать, что мы имеем в два раза больше процессоров, чем есть на самом деле).

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

Ищем информацию, используя MT-таблицу

Некоторая информация (которая может отсутствовать на более новых машинах), предназначенная для многопроцессорности. Сначала нужно найти структуру плавающего указателя MP. Он выровнен по 16-байтовой границе и содержит подпись в начале «_MP_» или 0x5F504D5F. ОС должна искать в EBDA, пространстве BIOS ROM и в последнем килобайте «базовой памяти»; размер базовой памяти указан в 2-байтовом значении в 0x413 в килобайтах, минус 1 КБ. Вот как выглядит структура:

Вот как выглядит таблица конфигурации, на которую указывает плавающая структура указателя:

После таблицы конфигурации лежат записи entry_count, которые содержат больше информации о системе, после чего идет расширенная таблица. Записи представляют собой либо 20 байт для представления процессора, либо 8 байт для чего-то другого. Вот как выглядят записи процессора и ввода-вывода APIC.

Вот запись IO APIC.

Ищем информацию при помощи APIC

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

Запуск AP

После того, как вы собрали информацию, вам необходимо отключить PIC и подготовиться к APIC I/O. Вам также необходимо настроить BSP локального APIC’а. Затем запустите AP с использованием SIPI.

Код для запуска ядер:

Замечу, что вектор, который вы указываете при запуске говорит о начальном адресе: вектор 0x8 — адрес 0x8000, вектор 0x9 — адрес 0x9000 и т.п.

Теперь, как вы понимаете, чтобы ОС использовать много ядер, надо настроить стек для каждого ядра, каждое ядро, его прерывания и т.п., но самое важное — при использовании симметричной мультипроцессорности все ресурсы у ядер одни и те же: одна память, один PCI и т.п., и ОС остаётся лишь распараллелить задачи между ядрами.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *