Я не могу понять это, в чем разница между суперскалярным и многоядерным процессором?
Я продолжаю смешивать их, поэтому некоторые простые замечания о том, что они делают, были бы великолепны.
Я не могу понять это, в чем разница между суперскалярным и многоядерным процессором?
Я продолжаю смешивать их, поэтому некоторые простые замечания о том, что они делают, были бы великолепны.
Ответы:
Суперскалярные процессоры означают, что вы отправляете несколько команд за один такт. Причина, по которой это отличается от многоядерности, заключается в том, что вы получаете только один счетчик команд. Таким образом, вы отслеживаете несколько инструкций в полете, но все инструкции взяты из одной программы. Это все еще только один процесс. Теперь я сказал: «Вы получаете один счетчик команд», и технически это верно в том смысле, что нет никакого смысла в том, что ваш код будет испытывать несоответствие, за исключением использования некоторых схем прогнозирования ветвлений (Спекулятивное выполнение: вы одновременно выполняете обе ветки и выбрасываете «неправильное» «результат прогноза).
Когда вы попадаете в многоядерный режим, у вас одновременно выполняется несколько потоков команд. Важной частью является то, что каждое ядро (выполняющееся со своим собственным счетчиком команд) также может быть суперскалярным для более быстрого выполнения каждого отдельного процесса!
Можно иметь суперскаляр без конвейерной обработки или выполнения не по порядку, имея так называемое очень длинное командное слово или «VLIW». Это также называется «статическим» суперскалярным (т. Е. Оно находится в самом коде). Именно здесь у вас в основном достаточно компонентов для одновременного выполнения нескольких инструкций, и вы получаете сразу несколько инструкций, а затем запускаете их. В самой простой форме представьте, что вы сказали, что «этот процессор будет всегда извлекать и выполнять две инструкции одновременно». Тогда, пока кодер сможет найти работу, которая будет выполняться одновременно в одном и том же процессе, вы удвоите свою пропускную способность! Если вы не можете найти две инструкции для соединения, вы просто объедините одну инструкцию и NOP. Эта идея не очень хороша главным образом потому, что если вы сделаете более совершенную версию процессора, которая может выполнять 3, 4 или более инструкций одновременно, весь ваш старый код будет поврежден! Но они решили это довольно изобретательно, вы должны проверить явно параллельные вычисления команд или материал "EPIC", если хотите узнать больше.
Динамический суперскаляр с конвейерной обработкой может использовать как независимые от данных инструкции, так и параллелизм на уровне команд, что делает его такой мощной комбинацией. По сути, это позволяет вам при достаточном количестве оборудования выполнять одновременно как можно больше независимых инструкций.
Динамический суперскаляр с конвейерной обработкой и выполнением вне порядка был, по сути, пределом параллелизма на уровне команд: вы пытались бы выполнять несколько команд одновременно на одной и той же стадии, пытаясь найти операции, которые работали без зависимостей от данных. Вы можете закончить не по порядку, вы начнете не по порядку, есть все, что вам нужно сделать, чтобы держать голову прямо, делая суперскалярные вещи. Многоядерный говорит: «Эй, программист! Дай мне несколько проблем, которые я могу решить одновременно!» и затем, поскольку программист способен видеть независимо решаемые проблемы, находящиеся за пределами нескольких строк в скомпилированной сборке, он может более эффективно программировать эти решения для многоядерных систем.
Суперскаляр даже не способен решать такие проблемы, как «как мне быстрее выполнить эти две программы». Это может только выполнить каждую независимую программу быстрее.
Надеюсь, это поможет, извините, если это немного разобщено.
--Редактировать--
Модифицировано, чтобы учесть точку зрения ajs410, что я перепутал несколько идей.
Если вы посмотрите на более ранние процессоры, такие как 80486 или Pentium, то ЦП представлял собой единую логическую единицу обработки. Он выполняет один поток инструкций за раз. Один процессор был также одним кремниевым чипом. Если вам нужна большая вычислительная мощность, вы можете купить дорогую серверную материнскую плату, в которой есть слоты для двух разных процессоров. Тогда у вас было два процессора и два процессора.
В какой-то момент закон Мура означал, что у нас в кремнии было так много транзисторов, что вы могли поместить все схемы для двух процессоров в один чип. Теперь у вас есть потенциал для путаницы имен. Скажем, у вас есть два процессора, это может означать, что у вас есть два пакета кремния старого стиля или более новый пакет одного кремния, но с настройкой обработки двух процессоров. Чтобы решить эту проблему, мы теперь подразумеваем, что ЦП - это единый кремниевый пакет, а ядро - это единый логический процессор внутри него.
Суперскаляр относится к технике, используемой в ядре, чтобы попытаться улучшить производительность и позволить ему обрабатывать в среднем больше инструкций за цикл. Скалярный процессор выполняет не более одной инструкции за цикл, суперскаляр означает, что он потенциально может выполнять более одной инструкции за цикл. Например, если процессор имеет функциональную единицу для целочисленной арифметики, а другую - для целочисленной арифметики, то почему бы не использовать обе одновременно для выполнения двух команд одновременно. Что если у вас есть три целых числа и два числа с плавающей запятой? Теперь у вас есть еще больший потенциал для параллельного выполнения. Но вам также нужно больше транзисторов для реализации и гораздо более сложная логика для надежной работы. В реальном мире вы склонны использовать суперскаляр в сочетании с нестандартными конструкциями, потому что они дополняют друг друга.