Почему нет 256-битных или 512-битных микропроцессоров?

95

В 8-битном микропроцессоре его шина данных состоит из 8 строк данных. В 16-битном микропроцессоре его шина данных состоит из 16 строк данных и так далее.

Почему нет ни 256-битного микропроцессора, ни 512-битного микропроцессора? Почему они просто не увеличивают количество строк данных и не создают 256-битный микропроцессор или 512-битный микропроцессор?

Что мешает создать 256-битный микропроцессор или 512-битный микропроцессор?

Майкл Харрис
источник
20
Даже маркетинг не может просто увеличивать число вечно.
Олин Латроп
82
Почему еще нет лезвия с лезвием 256?
Ракетный магнит
11
@OlinLathrop Проверьте Gillete Fusion Power , с 5 лезвиями и батареей!
Восстановите Монику
6
Ответ примерно такой же, как и на этот вопрос: у нас есть машины с 1, 2, 3, 4, 5, 6, 8, 12 и 16 цилиндрами. Почему у нас нет 32-, 64- и 128-цилиндровых машин?
Рассел МакМахон
13
@ Рассел: Потому что тогда будет глобальная нехватка цилиндров.
Олин Латроп

Ответы:

110

Думаю об этом. Что именно вы представляете себе «256-битным» процессором? Что делает разрядность процессора на первом месте?

Я думаю, что если никаких дальнейших уточнений не будет сделано, разрядность процессора относится к его ширине ALU. Это ширина двоичного числа, которую он может обрабатывать изначально в одной операции. Следовательно, 32-битный процессор может работать непосредственно со значениями шириной до 32 бит в одной инструкции. Таким образом, ваш 256-битный процессор будет содержать очень большой ALU, способный складывать, вычитать, ORing, ANDing и т. Д., 256-битные числа за одну операцию. Почему ты этого хочешь? Какая проблема делает большой и дорогой ALU достойным и оплачиваемым даже в тех случаях, когда процессор считает только 100 итераций цикла и т. П.?

Дело в том, что вы должны платить за широкий АЛУ, независимо от того, используете ли вы его много или только небольшую часть его возможностей. Чтобы оправдать 256-битный АЛУ, вам нужно найти достаточно важную проблему, которая может действительно выиграть от манипулирования 256-битными словами в одной инструкции. Хотя вы, вероятно, можете придумать несколько примеров, таких проблем недостаточно, чтобы производители почувствовали, что когда-нибудь получат отдачу от значительных инвестиций, необходимых для производства такого чипа. Если есть нишевые, но важные (хорошо финансируемые) проблемы, которые действительно могут выиграть от широкого ALU, то мы увидим очень дорогие процессоры с целевым назначением для этого приложения. Однако их цена помешает широкому использованию за пределами узкого приложения, для которого оно было разработано. Например, Если бы 256 бит сделали возможным использование определенных криптографических приложений для военных, вероятно, возникли бы специализированные 256 битные процессоры стоимостью от 100 до 1000 долларов каждый. Вы бы не положили один из них в тостер, блок питания или даже в машину.

Мне также должно быть ясно, что широкий ALU не только делает ALU более дорогим, но и другие части чипа. АЛУ шириной 256 бит также означает, что должны быть пути данных шириной 256 бит. Одно это заняло бы много кремниевой области. Эти данные должны откуда-то приходить и куда-то уходить, поэтому для эффективного использования широкого ALU необходимы регистры, кэш, другая память и т. Д.

Еще один момент заключается в том, что вы можете сделать любую арифметику ширины на любом процессоре ширины. Вы можете добавить 32-битное слово памяти в другое 32-битное слово памяти на PIC 18 в 8 инструкциях, тогда как вы можете сделать это на той же архитектуре, масштабированной до 32 бит только в 2 инструкциях. Дело в том, что узкий ALU не мешает вам выполнять широкие вычисления, только то, что широкие вычисления займут больше времени. Поэтому вопрос скорости, а не возможностей. Если вы посмотрите на спектр приложений, которым необходимо использовать числа определенной ширины, вы увидите, что очень немногие требуют 256-битных слов. Расходы на ускорение только тех немногих приложений с помощью аппаратного обеспечения, которое не поможет другим, просто не стоят этого и не приносят больших инвестиций в разработку продукта.

Олин Латроп
источник
9
Я ненавижу это говорить, но я не согласен здесь. Позвольте мне придумать пример: рендеринг графики для видеоигр. Это маленький рынок, о котором вы, возможно, слышали, десятки миллиардов долларов.
Ракетный магнит
39
@Rocket: Во-первых, ОП спросил о микропроцессоре , а не о графическом процессоре. Во-вторых, рендеринг графики не требует особо широких слов. Множество мелких операций можно выполнять параллельно, но я бы не назвал 8 процессорных ядер, каждое из которых работает с 32-битными данными, «256-битным» процессором. Вы называете свой четырехъядерный ПК «256-битным» процессором только потому, что каждое ядро ​​может работать с 64-битными данными изначально? Я думаю, что это неправильное использование этого термина, и даже маркетинг Intel, похоже, не использует несколько ядер таким образом.
Олин Латроп
30
@Rocket: SIMD - это другой тип параллелизма, но я все равно не назвал бы его широким ALU, просто несколько небольших ALU работают параллельно. Вы не можете сделать 256-битное сложение со всеми переносами, например, на таком SIMD-процессоре. Параллелизм - это не то же самое, что более широкий ALU. Вы, кажется, выходите из своего пути, чтобы быть противоположным. Возможно, вы можете спорить о том, что является параллельным, а не о более широком, но использовать нетрадиционные определения и затем утверждать, что другие интерпретации потрясающе неправильны , просто участвуя в конкурсе писания.
Олин Латроп
15
@Rocket: просто потому, что процессор может работать на 256 битах одновременно, выполняя кучу операций параллельно, не делает его «256-битным» процессором. Это подразумевало бы, что он может работать непосредственно с числами шириной 256 бит, что не может. Как вы сказали сами, между отдельными параллельными блоками ALU нет переноса, что делает его не 256-битным ALU. У вас, кажется, есть необычное определение того, что означает разрядность процессора. Это не количество бит, которые он может обработать за раз, а ширина слова, которое он может обработать в целом.
Олин Латроп
19
Когда я учился в школе, нас учили, что люди, занимающиеся программным обеспечением, измеряют разрядность с точки зрения ширины «логического» набора команд, а специалисты по аппаратному обеспечению измеряют разрядность с точки зрения ширины шины. Таким образом, 8088 был 16-разрядным процессором для программистов и 8-разрядным процессором для специалистов. 8086 был 16-битным для всех. Конечно, специалисты по маркетингу выберут наибольшее число, которое смогут найти, поэтому будем надеяться, что они не прочитают эту ветку комментариев и не начнут продавать 512-битные процессоры! :-)
Марк Харрисон
34

Ну, я не знаю о 256 или 512-битном, но я слышал о 1024-битном процессоре (я не могу найти его сейчас). Слово VLIW , очень длинное обучающее слово . Так что это шина инструкций, а не ширина шины данных. Преимущества состоят в том, что вы можете реализовать параллелизм на уровне инструкций (ILP) в больших масштабах.

Мое первое знакомство с ILP должно было произойти 20 лет назад с DSP Motorola, в которых были инструкции по выполнению MAC (умножение и накопление AC) при перемещении данных в память и из нее, чтобы вы могли выполнить новый MAC для следующей инструкции, не тратя впустую время между двумя MAC для перемещения данных.
Сегодня существуют также контроллеры общего назначения, предлагающие эту опцию. VLIW применяет это в гораздо более высоком масштабе.

20

Дальнейшее чтение
VLIW Architecture

stevenvh
источник
большинство финансовых расчетов :( сейчас сталкиваюсь с этой проблемой
так растерялся,
Я думал, что x86 был VLIW CPU. ;-)
Macke
1
@MarcusLindblom Только если под VLIW вы имеете в виду слова с инструкциями переменной длины. ;-)
CVn
3
@ AK4749 В этом случае ваши прогнозы также могут быть сброшены банками, которые обрабатывают ваши транзакции с использованием «настоящих» правил бухгалтерского учета. То есть, если вы собираетесь выполнить план, основанный на этих правилах, он не даст ожидаемых результатов, потому что реальные банки будут использовать реальные правила бухгалтерского учета, а не точность наноцентов. И, конечно же, потому что рынки неопределенны. Таким образом, если ошибка в 1 цент в начале дает ошибку в 1 триллион долларов на выходе, то этот триллион долларов является только эффектом симуляции, а не тем, что ваши клиенты должны использовать для составления планов.
Фотон
1
Конечно, они никогда не использовали бы прогноз на десятилетие в качестве основы для текущих решений, даже я, как программист, не был бы таким глупым. Однако (и, чтобы быть ясным, мы решили проблему расходящихся ошибок, чтобы она не существовала), крупнейшие клиенты на самом деле требуют эти типы возможностей для любых гнусных целей, которые они предпочитают не разглашать своим поставщикам. Кроме того, проработав в финансовом пространстве пару лет, я могу вам сказать, что финансовые компании действительно используют вычисления с более высокой точностью (1/2)
так растерялся,
28

«Битность» микропроцессора обычно определяется в единицах размера регистров общего назначения. Размер определяет, насколько большие числа процессор может обрабатывать изначально и сколько памяти он может получить доступ. 64-разрядных чисел достаточно для почти любого алгоритма, а объема адресуемой памяти (16 миллионов терабайт) достаточно для того, чтобы еще некоторое время вперед. Нет просто никакого преимущества в увеличении размера регистров общего назначения. С другой стороны, область арифметико-логических единиц (АЛУ), используемая для выполнения операций над регистрами, масштабируется с квадратом количества битов. 256-битный ALU будет в 16 раз больше и значительно медленнее.

С другой стороны, есть смысл в расширении процессора, чтобы можно было выполнять много мелких операций одновременно. Фактически процессоры Intel Sandy Bridge и Ivy Bridge делают именно это, они имеют 256-битные регистры SIMD и могут выполнять две арифметические операции и одну операцию с памятью за такт на них. Таким образом, можно было бы назвать их 256-битными или даже 768-битными процессорами, если бы вы были хитрым маркетологом, желающим сгибать регулярно используемые термины.

Муравьи Аасма
источник
Это впечатляющая архитектура.
Trygve Laugstøl
6
+1 за «подлый маркетолог, желающий согнуть регулярно используемые термины».
Дэн Нили,
14

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

Например, Motorola 68000 - это 32-битный процессор. Он имеет 32-битные регистры данных и 32-битные адресные регистры. Теперь первая версия этого архитектурного семейства предоставляет только 24 бита адресных строк. Кроме того, существуют варианты, которые имеют только 8-битную шину данных (поэтому 32-битные операции с памятью выполняются процессором в виде нескольких циклов доступа).

Теперь о том, почему бы не перейти к 256 и 512. Процессоры «изначально» манипулируют несколькими типами данных, поэтому полезно посмотреть, что означает 256 или 512 бит для каждого из этих типов данных в отдельности. У нас есть целые числа, указатели и типы с плавающей точкой.

  1. Целые числа: программы получают большое преимущество от 32- и 64-битных целых чисел. Если ограничение 64 бита, исправление для этого должно иметь программно-реализованные целые числа bignum. Языки высокого уровня могут реализовывать целочисленные типы, так что операции плавно переключаются между "fixnums" и "bignums". Конечно, вы получаете удар по производительности с bignum, но вы должны учитывать это в целом: сколько операций в программе - это операции bignum. 256 или 512 битные числа не устраняют необходимость в bignums, они только увеличивают запас, прежде чем мы перейдем на bignums. Если вы хотите манипулировать 2048-битными открытыми ключами, 512-битные целые не подойдут (но bignum с 512-битными цифрами может быть быстрым).

  2. Указатели. Более широкие указатели допускают две вещи: более широкие адресные пространства и дополнительные метаданные, хранящиеся в указателе. В наши дни адресные пространства являются виртуальными, и поэтому они могут расти, даже если память не растет. Предполагается, что если у вас есть 128-битные указатели, адресное пространство настолько велико, что вы можете поместить все процессы пользовательского пространства операционной системы и ядра в случайных местах в одном незащищенном пространстве, и они маловероятны сталкиваться. Вместо того, чтобы просто создавать большее адресное пространство, можно использовать более толстые указатели для переноса битов, которые не являются адресными битами, таких как информация о референтном объекте (тип, размер и другая информация) или информация, связанная с безопасностью. Вероятно, есть некоторая «оптимальная упитанность» для такого рода вещей, и, если бы я догадался, я бы по-прежнему ограничивал ее до 128 бит. Это не Кажется, имеет смысл перейти к 256-битным указателям, не говоря уже о 512. Более толстые указатели имеют недостаток: они раздувают все структуры данных, которые содержат указатели. И, как правило, вы хотите, чтобы указатели были одинакового размера, в противном случае вам потребуются сложности в архитектуре набора команд (например, сегменты памяти), когда у вас будут полные указатели (дескриптор сегмента и смещение) или только локальные указатели (смещение в некотором понятном сегменте) ,

  3. Типы с плавающей точкой: Больше битов в числах с плавающей точкой означает большую точность. Я бы сказал, что типы с плавающей точкой получают наибольшую выгоду от более широкого представления. 256 или 512-битный плавающий тип улучшит стабильность числового кода и качество научных вычислений, которые требуют много итераций, и накапливает ошибки на этом пути. Точность в числах с плавающей запятой не совпадает с точностью в целых числах: мы не можем разделить тип с плавающей запятой на диапазоны, такие как фиксированные числа и большие числа. Большая точность с плавающей запятой влияет на качество всех неточных чисел, будь они близки к нулю или имеют большую величину. Больше битов в показателях с плавающей запятой также может значительно расширить диапазон чисел с плавающей запятой и намного быстрее, чем добавление битов к целому числу bignum.

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

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

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

Kaz
источник
Хорошее описание. Кстати, обычные процессоры x86 долгое время имели 80-битные числа с плавающей запятой, начиная с первого аппаратного модуля с плавающей запятой для них, если я правильно помню. 80 бит являются внутренними для FPU, тогда обычно экспортируется 32 или 64 бита.
Олин Латроп
Технически, уже сделано. Google "нан бокс" или "монахиня бокс". Более перспективными являются метки аппаратных типов в 64-битных ARM, но, к сожалению, это будет не скоро.
whitequark
3
Можно было получить доступ к версии 80 напрямую. Еще в 90-х, когда я учился программировать в TurboPascal, был 80-битный тип с плавающей запятой.
Дэн Нили
@DanNeely: я иногда думал, что процессоры выиграют от трехмерных координат с плавающей точкой, объединяя либо три 80-битных числа в 256-битный блок, либо три 42-битных числа в 128-битный блок, или три 21-битные числа в 64-битный блок. Интересно, насколько сложно было бы реализовать такую ​​вещь и насколько она может оказаться полезной?
суперкат
@supercat GPGU Википедия: Большинство операций на [NVidia] GPU работают в векторизованном виде: одну операцию можно выполнить
Каз
9

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

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

  • 4 бита: достаточно для цифры, следовательно, практично для калькуляторов (в стиле BCD), кассовых аппаратов и т. Д. (Что является довольно ограниченной областью)
  • 8 бит: достаточно для символа (ASCII), практично для систем обработки текста (это ОЧЕНЬ обширная область), а также для звука низкого качества
  • 16 бит: когда были популярны 16 битов, 2 ^ 16 адресов памяти были разумным количеством (по крайней мере, намного более разумным, чем 2 ^ 8 или 2 ^ 32). 16 бит дают вполне приемлемое качество звука, и большинство аналого-цифровых преобразователей дают результат менее 16 бит, поэтому расчет с такими значениями в 16 битах имеет смысл
  • 32 бита: 32 бита соответствуют точности большинства (но не всех) измеренных человеком величин, и, если вы не имеете дело с большими базами данных, адреса 2 ^ 32 были достаточны для большинства практических целей.
  • 64 бита: иметь> 2 ^ 32 байта памяти сейчас практично.
  • 128 бит: на данный момент небольшое преимущество перед 32, кроме криптографии. Когда мы ожидаем более 2 ^ 64 байтов на жестком диске? наверное не скоро.
pjc50
источник
1
«640K должно хватить на всех». -Билл Гейтс (1981)
Джиппи
6
@jippie - Гейтс никогда не говорил этого.
Ракетный магнит
1
На самом деле большинство 8-битных процессоров были способны адресовать 2 ^ 16 байт памяти, а 16 битов 2 ^ 32, 80386 (32 бита) теоретически могли бы также адресовать 2 ^ 64 байта (4 ГБ) памяти, что было бы довольно бесполезно в любом случае в те дни ...
Аксель
1
20
3
@ Майкл - это на все времена, и я видел это на протяжении всей своей карьеры: очень немногие действительно дальновидные менеджеры по продуктам там. Анекдот: в начале 1970-х годов на лекции Роберта Нойса о будущем микропроцессоров он предсказывает текущую миниатюризацию, и кто-то из аудитории говорит: «Черт, я бы не хотел потерять весь компьютер в трещину в полу». На что Нойс презрительно ответил: «Ты совсем не понимаешь. Тебя не волнует тот, кого ты потерял; у тебя будут тысячи других». Это было в начале 1970-х годов. Роберт Нойс был провидцем.
Stevenvh
9

На самом деле, такие процессоры существуют и являются общими, в зависимости от того, как вы определяете битность. Вы почти наверняка используете его сейчас. Как объяснил Олин, 256-битные числа не очень полезны, но как насчет 4-х 32-битных чисел? Что делать, если ALU может добавить 4 пары 32-битных чисел одновременно. Такие ALU (о которых я знаю) были впервые реализованы в векторных суперкомпьютерах в 1970-х годах. Первый раз, когда у меня был такой компьютер, у меня был один из процессоров Intel Pentiums с MMX.

Intel MMX парень

Помните тех парней?

Микросхемы MMX имели набор команд «Одна команда - несколько данных» ( SIMD ), позволяющий добавлять 1 × 64-битную пару, 2 × 32-битную пару, 4 × 16-битную пару или 8 × 8-битную пару.

Но это ничего. Современная видеокарта имеет графический процессор (который раньше обозначал графический процессор, но теперь обозначает общий процессор). Это часто широкие реализации SIMD, способные к разветвлению, загрузке и хранению в 128 или 256 битах одновременно. Прототип микроархитектуры Intel Larrabee включает более двух 512-битных регистров SIMD на каждом из своих ядер.

GPU SIMD

Обратите внимание, что SIMD не следует путать с многоядерным. Каждое ядро ​​ЦП будет иметь свой собственный широкий ALU, способный складывать набор целых чисел.

Rocketmagnet
источник
1
«1 × 16-битная пара, 2 × 32-битная пара, 4 × 16-битная пара или 8 × 8-битная пара» Вы уверены, что правильно поняли эту часть?
CVn
4
На первый взгляд, он выглядел как Kraft Single с логотипом Intel
Крис Лапланте,
4
Переменные 4x32 бит все еще только 32 бит. Битовая единица - это максимальное индивидуальное целое число, с которым ALU может работать. Выполнение этого много раз параллельно не увеличивает ширину бита. -1
Коннор Вольф
3

Потому что нам это пока не нужно.

Обычно битность (которую я бы определил как число бит в регистре) переводит более или менее непосредственно в объем адресуемой памяти. Это, конечно, упрощено, поскольку в зависимости от процессора, у регистров может быть 2-кратная длина битности, или существуют методы, позволяющие обойти эти ограничения памяти (кто-нибудь там помнит, как программировал на 16-битных окнах?).

Axel
источник
3

«Почему они просто не увеличивают количество строк данных и не создают 256-битные»

Все процессоры Intel, которые соответствуют сокету LGA-2011, на самом деле имеют 256 выводов данных, соединяющихся с 256 линиями данных на материнской плате, которые ведут к DRAM. Я был бы немного удивлен, если бы на вашем последнем ноутбуке или настольном компьютере не было как минимум 256 строк данных. Могу я спросить, откуда у вас ошибочная идея, что они «не… просто увеличивают количество строк данных»?

В спецификации 6.1 сокета LGA-2011 , раздел 6.1, указано, что эти процессоры имеют 256 контактов данных и 76 контактов контактов (адрес банка + адрес памяти).

davidcary
источник
-1

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

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

Пауло
источник
-4

Компьютерная система в своем понимании является вычислительной машиной, которая требует некоторых входов и дает некоторые выходы. Мы должны удовлетворить компьютер в этих линиях, поэтому разработчики пришли к эталону, имея 3 шины, а именно адресную шину, шину данных и шину управления. 1) Выборка шины адреса / выбор определенного адреса в памяти для операций чтения / записи. 2) Шина данных затем выбирает данные, представляющие эти данные, в / из процессора и памяти для целей обработки / хранения. 3) Шина управления создает протокол управления интерфейсом и просит систему его соблюдать.

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

С самого начала, из-за различных причин, таких как сложность H / W, стоимость, требования, эффективные алгоритмы и основная причина, по которой рыночная сфера является основными препятствиями для производства высокой ширины шины данных, как упомянуто хостом вопросов, скажем, 256 бит или 512 бит Это возможно! Но требования еще нет, объем рынка еще не виден с потребностями сегодня и отсутствием дополнительной поддержки программного обеспечения.

256-битный процессор обозначает ширину шины данных, которую может обрабатывать конкретный процессор, или ALU может обрабатывать за одно выполнение. Мы начали с 4 битов, затем 8,16,32 и в настоящее время 64 и даже 128 битов, которые являются настоящими продуктами Market Scope.

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

Шри Кришна
источник
6
Использование заглавных букв делает это трудным для чтения.
pjc50
хм, да, мне нужно начать делать это.
Шри Кришна
@ pjc50 Может, он из Германии? Ой, подождите, «Запрашивающий» и «Купить» также
Alex