2010-07-09 3 views
14

Скажите, есть ли у меня такой процессор, как this, который говорит # cores = 4, # threads = 4 и без поддержки Hyper-threading.Темы по сравнению с Corees

Означает ли это, что я могу запускать 4 одновременных программы/процесса (поскольку ядро ​​может работать только с одним потоком)? Или это означает, что я могу одновременно запускать 4 x 4 = 16 программы/процесса?

От моего копания, если нет Hyper-threading, будет только 1 поток (процесс) на ядро. Поправьте меня, если я ошибаюсь.

ответ

10

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

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

+0

Возможно, вы захотите быть осторожным с использованием «одновременно». Для пользователя может показаться, что некоторые задачи происходят одновременно, но фактическое оборудование может не выполнять каждую задачу одновременно. Я думаю, что сообщение @mikaelbrandin с информацией о параллельном и параллельном возможно. – user3731622

+1

@ user3731622 Я сделал эту точную точку в своем ответе, объяснив, что процессоры могут чередовать инструкции. Как я мог сделать это яснее? –

+0

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

5

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

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

12

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

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

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

Гиперпоточность создает 2 логических ядра на 1 физическом ядре и делает переключение между потоками намного быстрее.

2

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

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

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