sonyps4.ru

Как определить 2 или 4 поточный процессор. Потоковые процессоры

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

Поскольку у меня есть 4 ядра, я не ожидаю ускорения, запустив больше потоков, чем ядра, поскольку одно ядро ​​может работать только в одном потоке в данный момент. Я не очень разбираюсь в аппаратных средствах, поэтому это всего лишь предположение.

Есть ли возможность запуска параллелизуемого процесса для большего количества потоков, чем ядра? Другими словами, мой процесс завершится быстрее, медленнее или примерно за такое же количество времени, если я запустил его с использованием 4000 потоков вместо 4 потоков?

13 ответов

Если ваши потоки не выполняют ввод-вывод, синхронизацию и т.д., и там ничего не работает, 1 поток на ядро ​​получит максимальную производительность. Однако это, скорее всего, не так. Добавление большего количества потоков обычно помогает, но после некоторого момента они вызывают некоторое ухудшение производительности.

Недавно я занимался тестированием производительности на двухъядерном процессоре, работающем на приложении ASP.NET на Mono, при довольно приличной нагрузке. Мы играли с минимальным и максимальным количеством потоков, и в итоге мы выяснили, что для этого конкретного приложения в этой конкретной конфигурации наилучшая пропускная способность была где-то между 36 и 40 потоками. Все, что за пределами этих границ, хуже. Урок выучен? Если бы я был вами, я бы тестировал с различным количеством потоков, пока не найду нужный номер для вашего приложения.

Одно можно сказать наверняка: потоки 4k займут больше времени. Это много контекстных переключателей.

Я согласен с ответом @Gonzalo. У меня есть процесс, который не выполняет операции ввода-вывода, и вот что я нашел:

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

Машина 1.86 - это компьютер macbook с SSD. Другой mac - это iMac с обычным жестким диском (я думаю, это 7200 об/мин). У машины Windows также есть жесткий диск емкостью 7200 об/мин.

В этом тесте оптимальное число было равно числу ядер в машине.

Я знаю, что этот вопрос довольно старый, но все сложилось с 2009 года.

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

С процессорами Intel количество потоков определяется гиперпотоком, который составляет всего 2 (если доступно). Но Hyperthreading сокращает время выполнения на два, даже если не используется 2 потока! (т.е. один конвейер разделен между двумя процессами - это хорошо, когда у вас больше процессов, а не наоборот).

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

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

Из моего собственного опыта, если у вас много ввода-вывода, много потоков - это хорошо. Если у вас очень интенсивная работа с интенсивной памятью (прочитайте источник 1, прочитайте источник 2, быстро вычислите, напишите), то больше потоков не поможет. Опять же, это зависит от того, сколько данных вы читаете/записываете одновременно (т.е. Используете SSE 4.2 и читаете 256 битовых значений, что останавливает все потоки на своем шаге... другими словами, 1 поток, вероятно, намного проще реализовать и вероятно, почти так же быстро, если не на самом деле быстрее. Это будет зависеть от вашей архитектуры процесса и памяти, некоторые продвинутые серверы управляют отдельными диапазонами памяти для отдельных ядер, поэтому отдельные потоки будут быстрее, если ваши данные будут правильно поданы... вот почему, на некоторых архитектуры, 4 процесса будут работать быстрее, чем 1 процесс с 4 потоками.)

Фактическая производительность будет зависеть от того, сколько добровольного урожая каждого потока будет сделано. Например, если потоки вообще не имеют ввода/вывода NO и не используют системные службы (т.е. Они связаны на 100% cpu), то 1 поток на ядро ​​является оптимальным. Если потоки выполняют все, что требует ожидания, вам придется поэкспериментировать, чтобы определить оптимальное количество потоков. 4000 потоков будет иметь значительные накладные расходы на планирование, поэтому, вероятно, тоже не оптимально.

Ответ зависит от сложности алгоритмов, используемых в программе. Я придумал метод вычисления оптимального количества потоков, выполнив два измерения времени обработки Tn и Tm для двух произвольных чисел потоков n и m. Для линейных алгоритмов оптимальным числом потоков будет N = sqrt ((mn (Tm * (n-1) - Tn * (m-1)))/(nTn-mTm)).

Прочитайте мою статью относительно расчетов оптимального числа для различных алгоритмов: pavelkazenin.wordpress.com

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

Слабое масштабирование: как время решения зависит от количества процессоров для фиксированного размера проблемы на процессор.

Сильное масштабирование: как время решения зависит от количества процессоров для фиксированного общего размера проблемы.

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

Это справедливо даже тогда, когда число потоков превышает количество ядер. Например, предположим там 8 произвольных единиц (или AU) работы в программе, которые будут выполняться на 4-ядерном компьютере.

Случай 1: выполняется с четырьмя потоками, где каждый поток должен заполнять 2AU. Каждый поток занимает 10 секунд для завершения (с большим количеством промахов в кеше ). С четырьмя ядрами общий объем времени будет составлять 10 с (10 с * 4 потока /4 ядра).

Случай 2: выполняется с восемью потоками, где каждый поток должен заполнять 1AU. Каждый поток занимает всего 2 секунды (вместо 5s из-за уменьшения количества промахов в кэше ). С восемью ядрами общий объем времени составит 4 с (2 с * 8 потоков /4 ядра).

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

4000 потоков за один раз довольно высоки.

Ответ: да и нет. Если вы делаете много блокировки ввода-вывода в каждом потоке, то да, вы можете показать значительное ускорение, делая до 3 или 4 потока на каждое логическое ядро.

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

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

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

Вы не можете знать, пока не проверите.

Вы найдете, сколько потоков вы можете запустить на вашем компьютере, запустив команду htop или ps, которая возвращает количество процессов на вашем компьютере.

Вы можете использовать man-страницу о команде "ps".

  • ps -aux| wc -l
  • ps -eLf | wc -l

Расчет количества пользовательских процессов:

  • ps --User root | wc -l

Кроме того, вы можете использовать "htop"

Многоядерностью процессоров в нынешнее время никого не удивишь. Наоборот, все стараются чтобы их компьютер поддерживал как можно больше ядер, а следовательно быстрее работал, и это правильно.
Если касаться именно процессоров, то уже давно на рынке встречаются только два производителя - это Intel и AMD. И если вторые рассказывают про свои 8ми и 10-ядерные процессоры (имея ввиду что их много, а значит они мощнее), то первые имеют по 2 и 4 ядра, но делают акцент на свои потоки (не нужно писать гневных комментариев что ядер бывает и больше т.к. здесь и далее описываются процессоры для домашнего использования).

И если посмотреть на сравнительные графики производительности процессоров, то Вы можете увидеть, что 4-ядерный процессор (не все) от Intel будет обгонять 8-ядерный от AMD. Почему же так? Ведь 4 меньше чем 8, а значит должен быть слабее... Но если копнуть поглубже (не прям до кешей, частотой, шиной и т.д.), то можно увидеть одно интересное слово, которым часто описывают процессоры Intel - поддержка Hyper-threading .

Технология Hyper-threading ("гипертрендинг" в простонародье) была изобретена Intel`ом и используется только в их процессорах (не во всех). Я не буду особо глубоко вдаваться в её подробности, если хотите, то можете почитать про неё на . Данная технология позволяет как бы разделять каждое ядро надвое и в итоге вместо одного физического, мы имеем два логических (или виртуальных) и операционная система Windows думает что установлено два вместо одного.

Как узнать сколько потоков в процессоре?

Если Вы хотите узнать про конкретный процессор, то чаще всего в описании в магазинах указывают поддержку Hyper-threading либо вставляя это словосочетание, либо просто абревеатуру HT. Если же нет такого описания, то всегда можно воспользоваться самой правдивой информацией на официальной странице Intel`а http://ark.intel.com/ru/search/advanced/?s=t&HyperThreading=true
Рекомендую пользоваться только этой информацией ибо она самая точная.

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

Запускаете любым удобным способом (проще всего сочетание горячих клавиш Ctrl +Shift +Esc ) находясь в любом месте (хоть читая эту статью) и, если у Вас Windows 7, перейдите во вкладку Быстродействие.


Обратите внимание на верхнюю строку с загрузкой процессора и конкретно на количество "квадратов". Вот как раз сколько их будет - столько и будет всех ядер, включая все потоки. Если точнее здесь отображаются все логические/виртуальные ядра, а потоки как раз они и есть.

Если у Вас Windows 8, 8.1 или 10, то такой вкладки не будет, зато есть Производительность.


Здесь я выделил куда нужно обратить внимание. Кстати, я не зря кликнул по этому графику правой кнопкой мыши, потому что если выбрать пункт Логические процессы, то график изменится и будет похож на тот, который в Windows 7, т.е. будет 8 "квадратиков" и графиками загруженности по каждому ядру.
Если у Вас обратная картина, т.е. отображается не один, а несколько графиков, значит как раз и выбран данный пункт в свойствах самого графика.

Разумеется есть ещё несколько способов того, а в данном случае потоков.

Например можно вызвать свойство системы (сочетание клавиш Win + R и вводим systeminfo ) и увидеть там.

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

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

Многоядерность и многопоточность

Когда мы изучали вопрос, то обратили внимание на особенность процессоров Intel – в стандартных инструментах Windows отображается разное число ядер. Это обусловлено работой технологии Hyper-Threading, которая обеспечивает многопоточность.

Чтобы вы больше не путались в понятиях, разберемся раз и навсегда:

  • Многоядерность – чип оснащен несколькими физическими архитектурными ядрами. Их можно увидеть, потрогать руками.
  • Многопоточность – несколько одновременно обрабатываемых потоков информации.
    Ядро может быть физически одно, но программные технологии на его основе создают два потока выполнения задач; два ядра – четыре потока и т.д.

Влияние количества ядер на производительность

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

  • архиваторы;
  • медиапроигрыватели;
  • кодировщики видео;
  • дефрагментаторы;
  • антивирусы;
  • графические редакторы.

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

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

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

Разработчики игр и программ в курсе об этой особенности, поэтому постоянно оптимизируют код под выполнение задач на многоядерных процессорах. Но эта оптимизация не всегда успевает за увеличением количества ядер, поэтому не стоит тратить огромные деньги на самые новые мощные процессоры с максимально возможным числом поддерживаемых потоков – потенциал чипа не будет раскрываться в 9 программах из 10.

Так сколько ядер выбирать?

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

  • Если компьютер приобретается для работы с документами, серфинга в интернете, прослушивания музыки, просмотра фильмов, то хватит двух ядер. Если взять процессор с двумя ядрами из верхнего ценового сегмента с хорошей частотой и поддержкой многопоточности, то не будет проблем при работе с графическими редакторами.
  • Если вы покупаете машину с расчетом на мощную игровую производительность, то сразу ставьте фильтр на 4 ядра минимум. 8 ядер с поддержкой многопоточности – самый топ с запасом на несколько лет. 16 ядер – перспективно, но велика вероятность, что пока вы раскроете потенциал такого чипа, он устареет.

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

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

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

Ещё на сайте:

На что влияет количество ядер процессора обновлено: Январь 31, 2018 автором: admin

Вопрос #1 - “Назначение, состав, основные характеристики микроконтроллеров”

См. вопрос #6

Вопрос #2 - “Классификация микроконтроллеров”

Все МК можно условно разделить на три основных класса:

    8-разрядные МК для встраиваемых приложений;

    16- и 32-разрядные МК;

    цифровые сигнальные процессоры (DSP).

8-разрядные МК обеспечивают реализацию алгоритмов управления в реальном масштабе времени, отличительные признаки: модульная организация (на базе одного процессорного ядра, различающийся объем и тип памяти программ, объем памяти данных, набор периферийных модулей, частота синхронизации); закрытая архитектура (отсутствие выводов шин адреса и данных на корпусе).

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

По архитектурам:

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

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

Вопрос #3 - “ Тенденции развития архитектуры

См. вопрос #24

Вопрос #5 - Обзор микропроцессоров управления потоками событий”

С точки зрения организации обмена командами между процессором и памятью все компьютеры можно разделить на четыре класса:

SISD (Single Instruction Single Data) - «один поток команд, один поток данных»»;

SIMD (Single Instruction Multiply Data) - один поток команд, много потоков данных;

MISD (Multiple Instruction Single Data) - много потоков команд, один поток данных;

MIMD (Multiple Instruction Multiple Data) - много потоков команд, много потоков данных.

Из этой классификации видно, что фон-неймановская машина является частным случаем, попадающим в категорию SISD. Возможные усовершенствования в рамках архитектуры SISD ограничиваются включением в нее конвейеров и других дополнительных функциональных узлов, а также использованием разных методов кэширования. Две другие категории архитектур (SIMD, в которую входят векторные процессоры, и конвейерные архитектуры MISD) были реализованы в нескольких проектах, но не стали массовыми. Если оставаться в рамках этой классификации, то единственной возможностью преодоления ограничений «бутылочного горла» остается развитие архитектур класса MIMD. В их рамках обнаруживается множество подходов: это могут быть и различные параллельные и кластерные архитектуры, и многопотоковые процессоры.

В самом общем виде многопотоковый процессор состоит из двух типов примитивов. Первый тип - это ресурс, поддерживающий исполнение потока, который называют mutex (от Mutual Exclusion - «взаимное исключение»), а второй - события. То, как физически реализован тот или иной mutex, зависит от выбранной схемы - SMT или CMP. В любом случае выполнение процесса сводится к тому, что очередной поток захватываает mutex на время своего исполнения, а затем освобождает его. Если mutex занят одним потоком, то второй поток не может его заполучить. Конкретная процедура передачи полномочий на обладание mutex от одного потока другому может иметь случайный характер; она зависит от реализации управления, например, в определенной операционной системе. В любом случае управление должно быть построено так, чтобы ресурсы, состоящие из mutex, распределялись корректно и подавлялся эффект неопределенности.

События - это объекты (event), сигнализирующие о об изменении во внешней среде. Они могут переводить себя в режим ожидания до наступления иного события или сообщать о своем состоянии другому событию. Таким способом события могут взаимодействовать между собой, и при этом должна обеспечиваться преемственность данных между событиями. Ожидающий исполнения агент необходимо информировать о готовности данных для него. И как в распределении mutex должен подавляться эффект неопределенности, так при работе с событиями должен подавляться эффект неизвестности. Впервые схема SMT была реализована в процессорах Compaq Alpha 21464, а также в Intel Xeon MP и Itanium

Нет достаточных оснований для однозначного утверждения о преимуществах CMP по сравнению с SMT. Опыт создания процессоров, реализующих SMT, является гораздо большим: начиная с середины 80-х годов созданы несколько десятков экспериментальных изделий и несколько серийных процессоров. История развития CPM пока короткая: если не учитывать семейство специализированных сигнальных процессоров Texas Instruments TMS 320C8x, то первым успешным проектом стал Hydra, выполненный в Стэндфордском университете. Среди университетских исследовательских проектов, нацеленных на построение CMP-процессоров, известны еще три - Wisconsin Multiscalar, Carnegie-Mellon Stampede и MIT M-machine.

Кристалл Hydra состоит из четырех процессорных ядер на основе известной RISC-архитектуры MIPS . Каждое ядро имеет кэш-память команд и кэш-память данных, а все ядра объединены в общую кэш-память второго уровня. Процессоры выполняют обычный набор команд MIPS плюс команды условного хранения (Store Conditional или SC), предназначенные для реализации синхронизационных примитивов. Процессоры и кэш-память второго уровня объединяются шинами чтения/записи, а кроме того, есть вспомогательные адресные и управляющие шины. Все эти шины являются виртуальными, то есть логически представляются проводными шинами, а физически разделены на множество сегментов, использующих повторители, и буферов, что позволяет повысить скорость работы ядер.

Niagara - «сплав» MAJC и Hydra

У процессора UltraSPARC T1, более известного как Niagara, два основных предшественника - Hydra и MAJC.

В середине 90-х годов, на волне увлечения специализированными Java-процессорами, в Sun Microsystems была предпринята попытка создания процессора «с очень длинным словом» - Very Long Instruction Word (VLIW). Эта инициатива получила название MAJC (Microprocessor Architecture for Java Computing). Как и в других проектах, стартовавших в то время (Intel IA-64 Itanium), в данном случае ставилась задача переноса некоторых из самых сложных операций в ведение компилятора. Освободившуюся транзисторную логику можно использовать для создания более производительных функциональных узлов (functional units), с тем чтобы обеспечить продуктивный обмен командами и данными между CPU, кэш-памятью и основной памятью. Таким образом, преодолевалось фон-неймановское «бутылочное горло».

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

Niagara воплощает в себе лучшее из двух альтернативных подходов к реализации многопотоковости - SMT и CMP. На первый взгляд, он очень похож на Hydra, но скорее Hydra можно назвать «макетом» Niagara. Помимо того что в последнем - вдвое больше ядер, каждое из них может обрабатывать четыре потока.

Собственный подход к созданию многоядерных процессоров предложила корпорация IBM, чей проект Cell назван «гетерогенным мультипроцессорным чипом» (heterogeneous chip multiprocessor). Архитектуру Cell именуют еще и Cell Broadband Engine Architecture (CBEA). Мультипроцессор Cell состоит из ядра IBM 64-bit Power Architecture и восьми специализированных сопроцессоров, реализующих схему «одна команда много данных». В компании IBM эту архитектуру называют Synergistic Processor Unit (SPU).

Потоковые процессоры

Потоковыми называют процессора, в основе работы кото-рых лежит принцип обработки многих данных с помощью одной команды. Согласно классификации Флинна они принадлежат к SIMD архитектуре. Технология SIMD позволяет выполнять одно и то же действие, например вычитание и сложение, над несколькими наборами чисел одновременно. SIMD-операции для чисел двойной точности с плавающей запятой ускоряют работу ресурсоемких приложений для создания контента, трехмерного рендеринга, фи-нансовых расчетов и научных задач. Кроме того, усовершенство-ваны возможности 64-разрядной технологии MMX (целочислен-ных SIMD-команд); эта технология распространена на 128-разрядные числа, что позволяет ускорить обработку видео, речи, шифрование, обработку изображений и фотографий. Потоковый процессор повышает общую производительность, что особенно важно при работе с 3D-графическими объектами.

Может быть отдельный потоковый процессор (Single-streaming processor - SSP) и многопотоковый процессор (Multi-Streaming Processor - MSP).

Ярким представителем потоковых процессоров является семейство процессоров Intel, начиная с Pentium III, в основе рабо-ты которых лежит технология Streaming SIMD Extensions (SSE, потоковая обработка по принципу "одна команда - много дан-ных"). Эта технология позволяет выполнять такие сложные и не-обходимые в век Internet задачи, как обработка речи, кодирование и декодирование видео- и аудиоданных, разработка трехмерной графики и обработка изображений.

Бесспорными представителями класса SIMD считаются матрицы процессоров: ILLIAC IV, ICL DAP, Goodyear Aerospace MPP, Connection Machine 1 и т.п. В таких системах единое управ-ляющее устройство контролирует множество процессорных эле-ментов. Каждый процессорный элемент получает от устройства управления в каждый фиксированный момент времени одинако-вую команду и выполняет ее над своими локальными данными.

Другими представителями SIMD-класса являются вектор-ные процессоры, в основе которых лежит векторная обработкаданных. Векторная обработка увеличивает производительность процессора за счет того, что обработка целого набора данных (век-тора) производится одной командой. Векторные компьютеры ма-нипулируют массивами сходных данных подобно тому, как ска-лярные машины обрабатывают отдельные элементы таких масси-вов. В этом случае каждый элемент вектора надо рассматривать как отдельный элемент потока данных. При работе в векторном режиме векторные процессоры обрабатывают данные практически параллельно, что делает их в несколько раз более быстрыми, чем при работе в скалярном режиме. Максимальная скорость передача данных в векторном формате может составлять 64 Гб/с, что на 2 порядка быстрее, чем в скалярных машинах. Примерами систем подобного типа является, например, процессоры фирм NEC и Hitachi

Вопрос #6 – “Архитектура однокристальных микро-ЭВМ семейства МС S -51”

МК i8051АН: CPU MCS-51, память программ 4096 байт, память данных 128 байт, 4 параллельных 8-x порта I/O, 2 16-x таймера, последовательный порт, внутренняя 8-x магистраль, гарвардская архитектура (см. вопрос 2), макс. размер адресного пространства каждого типа памяти – 64К, открытая архитектура.

Процессор.

Устройство управления (УУ) вырабатывает управляющие сигналы, поступающие по шинам инструкций во все блоки машины.

Арифметико-логическое устройство (АЛУ) предназначено для выполнения арифметических и логических операций преобразования информации.АЛУ обычно состоит из двух регистров, сумматора и схем управления. Сумматор - выполняет сложение поступающих на вход двоичных кодов. Регистры - быстродействующие ячейки памяти различной длины. Схемы управления принимают по шине инструкций управляющие сигналы от УУ и преобразуют их в сигналы для управления работой регистров и сумматора. АЛУ выполняет арифметические операции (+, -, *,:) только над целыми двоичными числами.

Интерфейсная часть микропроцессора.

Узел формирования адреса - устройство, вычисляющее полный адрес ячейки памяти.

Шины данных, адреса и инструкций . УУ формирует управляющие сигналы для:

    выбора из регистра-счетчика адреса команды ячейки ОЗУ очередной команды программы;

    выбора из ячеек ОЗУ очередной команды и приема в регистр команд;

    расшифровки кода операции;

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

    считывания из регистров адресов операндов, выборки операндов и выполнения операции обработки;

    записи результатов в память.

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

Схема управления шиной и портами выполняет следующие функции:

    формирование адреса порта и управляющей информации;

    прием от порта информации: управляющей, о готовности порта, о состоянии;

    организацию канала для передачи данных между портом и МП.

Вопрос #7 – “ Организация внутренней и внешней памяти МС8-51”

В архитектуре семейства 8051 память программ и память данных разделены (гарвардская архитектура). Каждая из них имеет размер 64 Кбайта, вы* бор одной из двух матриц памяти осуществляется сигналами PSEN, RD#, WR#. Организация памяти в микроконтроллерах семейства 8051 иллюстрируется рис. 2.3. Память программ может быть целиком внешней (сигнал ЕА = 0), либо при обращении по младшим 4К адресов код извлекается из ячеек внутренней памяти микроконтроллера, а содержимое старших 60К берется из внешней памяти системы (сигнал ЕА =1). Микроконтроллеры 8751Ы имеют бит секретности, предназначенный для защиты внутренней памяти программ от доступа извне. Значение этого бита программируется один раз, очищен он может быть только при полном стирании всей внутренней памяти программ. При установленном бите секретности запрещается не только чтение внутренней памяти извне, но и ее допрограммирование, а также ступают на внешние адресные выводы. В режиме 64К содержимое (ЕРС) принимает фиксированное значение 0FFH, поэтому все команды выбираются со страницы 0FH. Внутреннее ПЗУ программ в модели 83C196NP, размещенное на странице 0FH (адреса 0F2080H..0F2FFFH), выбирается при значении внешнего сигнала ЕА = 1. Это же ПЗУ может выбираться со страницы ООН (адреса 2080H..2FFFH), если в регистре реконфигурации CCR1 установлено значение бита REMAP = 1.

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

Память данных делится на внешнюю и внутреннюю, каждая из них имеет свое пространство адресов. В архитектуре MCS-51 пространство адресов внутренней -памяти данных объединяет все внутренние программно доступные i ресурсы. Это пространство размером 256 байт в свою очередь делится на пространство адресов внутреннего ОЗУ (размером 128 байт) и пространство адресов регистров специальных функций. Область внутреннего ОЗУ изображена на рис. 2.4, ячейки области занимают младшие адреса внутренней памяти данных с ООН по 7FH. В этой области памяти выделяются два фрагмента:

♦ младшие 32 адреса занимают четыре регистровых банка, каждый из кото-рых содержит по восемь регистров общего назначения R0..R7. Текущий банк определяется значением битов RSO, RS1 регистра PSW. Таким образом, младшие 32 ячейки ОЗУ, кроме адресов, имеют имена;

♦ ячейки с адресами в диапазоне 32..48 имеют прямо адресуемые биты, адреса битов этой части ОЗУ находятся в диапазоне 00H..7FH.

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

Эта область формально занимает старшие 128 байт внутренней памяти данных, но обращение должно осуществляться по определенным адресам ячеек или отдельных битов. Обращение по промежуточным адресам приведет к ошибочному результату. Все регистры имеют как символические имена, так и адреса в качестве ячеек внутренней памяти. Часть регистров содержит прямо адресуемые биты. Адреса битов находятся в диапазоне 80H..F7H. Назначение регистров специальных функций следующее:

Формат всех регистров специальных функций будет рассмотрен в разделах, посвященных описанию системы прерываний и функций отдельных блоков ввода-вывода. Здесь приведен формат регистра PSW, хранящего слово состояния процессора. Этот регистр вместе с аккумулятором содержит результат выполнения команд.


Вопрос #8 Порты ввода-вывода МС8-51. Особенности работы, программирование .

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

Вступление

Прежде чем начать разбираться, на что влияет количество ядер процессора, хотелось бы сделать небольшое отступление. Еще несколько лет назад разработчики ЦП были уверены в том, что технологии производства, которые так стремительно развиваются, позволят выпускать "камни" с тактовыми частотами до 10 Ггц, что позволит пользователям забыть о проблемах с плохой производительностью. Однако успех достигнут не был.

Как бы ни развивался техпроцесс, что "Интел", что "АМД" уперлись в чисто физические ограничения, которые попросту не позволяли выпускать "процы" с тактовой частотой до 10 Ггц. Тогда и было принято решение сфокусироваться не на частотах, а на количестве ядер. Таким образом, началась новая гонка по производству более мощных и производительных процессорных "кристаллов", которая продолжается и по сей день, но уже не столь активно, как это было на первых порах.

Процессоры Intel и AMD

На сегодняшний день "Интел" и "АМД" являются прямыми конкурентами на рынке процессоров. Если посмотреть на выручку и продажи, то явное преимущество будет на стороне "синих", хотя в последнее время "красные" стараются не отставать. У обоих компаний имеется хороший ассортимент готовых решений на все случаи жизни - от простого процессора с 1-2 ядрами до настоящих монстров, у которых количество ядер переваливает за 8. Обычно подобные "камни" используются на специальных рабочих "компах", которые имеют узкую направленность.

Intel

Итак, на сегодняшний день у компании Intel успехом пользуются 5 видов процессоров: Celeron, Pentium, и i7. Каждый из этих "камней" имеет разное количество ядер и предназначенные для разных задач. Например, Celeron имеет всего 2 ядра и используется в основном на офисных и домашних компьютерах. Pentium, или, как его еще называют, "пенек", также используется в дому, но уже имеет гораздо лучшую производительность, в первую очередь за счет технологии Hyper-Threading, которая "добавляет" физическим двум ядрам еще два виртуальных ядра, которые называют потоками. Таким образом, двухъядерный "проц" работает как самый бюджетный четырехъядерник, хотя это не совсем корректно сказано, но основная суть именно в этом.

Что же касается линейки Core, то тут примерно схожая ситуация. Младшая модель с цифрой 3 имеет 2 ядра и 2 потока. Линейка постарше - Core i5 - имеет уже полноценные 4 или 6 ядер, но лишена функции Hyper-Threading и дополнительных потоков не имеет, кроме как 4-6 стандартных. Ну и последнее - core i7 - это топовые процессоры, которые, как правило, имеют от 4 до 6 ядер и в два раза больше потоков, т. е., например, 4 ядра и 8 потоков или 6 ядер и 12 потоков.

AMD

Теперь стоит сказать про AMD. Список "камушков" от данной компании огромен, смысла перечислять все нет, поскольку большинство из моделей уже попросту устарели. Стоит, пожалуй, отметить новое поколение, которое в некотором смысле "копирует" "Интел" - Ryzen. В данной линейке также присутствуют модели с номерами 3, 5 и 7. Главное отличие от "синих" у Ryzen заключается в том, что самая младшая модель уже сразу предоставляет полноценные 4 ядра, а у старшей их не 6, а целых восемь. Кроме этого, и количество потоков меняется. Ryzen 3 - 4 потока, Ryzen 5 - 8-12 (в зависимости от кол-ва ядер - 4 или 6) и Ryzen 7 - 16 потоков.

Стоит упомянуть и о еще одной линейке "красных" - FX, которая появилась в 2012 году, и, по сути, данная платформа уже считается устаревшей, но благодаря тому, что сейчас все больше и больше программ и игр начинает поддерживать многопоточность, линейка Vishera вновь обрела популярность, которая наряду с низкими ценами только растет.

Ну а что касается споров касательно частоты процессора и количества ядер, то, по сути, правильнее смотреть в сторону второго, поскольку с тактовыми частотами уже давно все определились, и даже топовые модели от "Интел" работают на номинальных 2. 7, 2. 8, 3 Ггц. Помимо этого, частоту всегда можно поднять при помощи оверклокинга, но в случае с двухъядерником это не даст особого эффекта.

Как узнать сколько ядер

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

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

Преимущество двух ядер

В чем может быть преимущество двухъядерного процессора? Много в чем, например, в играх или приложениях, при разработке которых основным приоритетом была однопоточная работа. Взять хотя бы для примера игру Wold of Tanks. Самые обычные двухъядерники типа Pentium или Celeron будут выдавать вполне приличный результат по производительности, в то время как какой-нибудь FX от AMD или INTEL Core задействуют гораздо больше своих возможностей, а итог будет примерно таким же.

Чем лучше 4 ядра

Чем 4 ядра могут быть лучше двух? Лучшей производительностью. Четырехъядерные "камни" рассчитаны уже на более серьезную работу, где простые "пеньки" или "селероны" попросту не справятся. Отличным примером тут послужит любая программа по работе с 3D-графикой, например 3Ds Max или Cinema4D.

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

Конечно, можно взять и какой-нибудь бюджетный "процик" из семейства Core i3, например, модель 6100, но 2 ядра и 2 дополнительных потока все равно будут уступать полноценному четырехядернику.

6 и 8 ядер

Ну и последний сегмент многоядерников - процессоры с шестью и восемью ядрами. Их основное предназначение, в принципе, точно такое же, как и у ЦП выше, только вот нужны они там, где обычные "четверки" не справляются. Кроме этого, на базе "камней" с 6 и 8 ядрами строят полноценные профильные компьютеры, которые будут "заточены" под определенную деятельность, например, монтаж видео, 3Д-программы для моделирования, рендеринг готовых тяжелых сцен с большим количеством полигонов и объектов и т. д.

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

На что влияет количество ядер процессора

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

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

Двухъядерники незнакомы с такой проблемой, потому как не обладают слишком высокой производительностью и тепловыделением соответственно, а вот многоядерники - да. Самыми "горячими" считаются камни от AMD, особенно серии FX. Например, возьмем модель FX-6300. Температура процессора в программе AIDA64 находится в отметке около 40 градусов и это в режиме простоя. При нагрузке цифра будет расти и если случится перегрев, то комп выключится. Так что, покупая многоядерник, нужно не забывать о кулере.

На что влияет количество ядер процессора еще? На многозадачность. Двухъядерные"процы" не смогут обеспечить стабильную производительность при работе в двух, трех и более программ одновременно. Самый простой пример - стримеры в интернете. Помимо того, что они играют в какую-нибудь игру на высоких настройках, у них параллельно запущена программа, которая позволяет транслировать игровой процесс в интернет в режиме онлайн, работает и интернет-браузер с несколькими открытыми страницами, где игрок, как правило, читает комментарии смотрящих его людей и следит за прочей информацией. Обеспечить должную стабильность может даже далеко не каждый многоядерник, не говоря уже о двух- и одноядерных процессорах.

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

Подведение итогов

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



Загрузка...