История универсальных процессоров является продолжением более ранней истории вычислительного оборудования .
В начале 1950-х годов каждая конструкция компьютера была уникальной. Не было совместимых вверх машин или компьютерных архитектур с несколькими, отличающимися реализациями. Программы, написанные для одной машины, не работали ни на какой другой, даже на других машинах той же компании. Тогда это не было серьезным недостатком, поскольку не было разработано большого количества программного обеспечения для работы на компьютерах, поэтому начало программирования с нуля не рассматривалось как большое препятствие.
Свобода проектирования того времени была очень важна, поскольку проектировщики были очень ограничены стоимостью электроники и только начинали исследовать, как лучше всего организовать компьютер. Некоторые из основных функций, введенных в этот период, включали индексные регистры (на Ferranti Mark 1 ), инструкцию сохранения обратного адреса ( UNIVAC I ), непосредственные операнды ( IBM 704 ) и обнаружение недействительных операций ( IBM 650 ).
К концу 1950-х годов коммерческие производители разработали компьютеры заводского изготовления, которые можно было доставлять на грузовиках. Самым распространенным компьютером был IBM 650 , в котором использовалась барабанная память , на которую программы загружались с помощью бумажной перфоленты или перфокарт . Некоторые очень высокопроизводительные машины также включали сердечниковую память , которая обеспечивала более высокую скорость. Жесткие диски также начали становиться популярными.
Компьютер — это автоматические счеты . Тип системы счисления влияет на то, как он работает. В начале 1950-х годов большинство компьютеров были построены для конкретных задач числовой обработки, и многие машины использовали десятичные числа в качестве своей базовой системы счисления; то есть математические функции машин работали в десятичной системе счисления вместо двоичной, как это принято сегодня. Это были не просто двоично-десятичные числа (BCD). Большинство машин имели десять электронных ламп на цифру в каждом регистре процессора . Некоторые ранние советские разработчики компьютеров реализовали системы, основанные на троичной логике ; то есть бит мог иметь три состояния: +1, 0 или -1, что соответствовало положительному, нулевому или отрицательному напряжению.
Ранний проект для ВВС США , BINAC, пытался создать легкий, простой компьютер, используя двоичную арифметику. Он глубоко впечатлил промышленность.
Еще в 1970 году основные компьютерные языки не могли стандартизировать свое числовое поведение, поскольку у десятичных компьютеров были слишком большие группы пользователей, чтобы их можно было оттолкнуть.
Даже когда проектировщики использовали двоичную систему, у них все еще было много странных идей. Некоторые использовали знаковую арифметику (-1 = 10001) или дополнение до единицы (-1 = 11110), а не современную арифметику с дополнением до двух (-1 = 11111). Большинство компьютеров использовали шестибитные наборы символов, поскольку они адекватно кодировали перфокарты Холлерита . Для проектировщиков этого периода было большим откровением понять, что слово данных должно быть кратно размеру символа. Они начали проектировать компьютеры с 12-, 24- и 36-битными словами данных (например, см. TX-2 ).
В эту эпоху в проектировании компьютеров доминировал закон Гроша : стоимость компьютера увеличивалась пропорционально квадрату его скорости.
Одной из основных проблем ранних компьютеров было то, что программа для одного компьютера не работала ни на каком другом. Компьютерные компании обнаружили, что у их клиентов было мало причин оставаться лояльными к определенному бренду, поскольку следующий купленный ими компьютер в любом случае был бы несовместимым. На тот момент единственными проблемами обычно были цена и производительность.
В 1962 году IBM попробовала новый подход к проектированию компьютеров. План состоял в том, чтобы создать семейство компьютеров, которые могли бы работать с одним и тем же программным обеспечением, но с разной производительностью и по разным ценам. По мере роста потребностей пользователей они могли бы переходить на более мощные компьютеры и при этом сохранять все свои инвестиции в программы, данные и носители информации.
Для этого они спроектировали один эталонный компьютер под названием System/360 (S/360). Это был виртуальный компьютер, эталонный набор инструкций и возможности, которые поддерживали все машины в семействе. Чтобы обеспечить различные классы машин, каждый компьютер в семействе использовал бы более или менее аппаратную эмуляцию и более или менее микропрограммную эмуляцию, чтобы создать машину, способную выполнять полный набор инструкций S/360 .
Например, машина низкого уровня может включать очень простой процессор для низкой стоимости. Однако это потребует использования более крупного эмулятора микрокода для обеспечения остальной части набора инструкций, что замедлит ее. Машина высокого уровня будет использовать гораздо более сложный процессор, который может напрямую обрабатывать большую часть конструкции S/360, таким образом, запуская гораздо более простой и быстрый эмулятор.
IBM сознательно решила сделать набор инструкций достаточно сложным и очень производительным. Несмотря на то, что компьютер был сложным, его управляющая память, содержащая микропрограмму, оставалась относительно небольшой и могла быть сделана с очень быстрой памятью. Другим важным эффектом было то, что одна инструкция могла описывать довольно сложную последовательность операций. Таким образом, компьютерам обычно приходилось извлекать меньше инструкций из основной памяти, которую можно было сделать медленнее, меньше и менее затратной для заданного сочетания скорости и цены.
Поскольку S/360 должен был стать преемником как научных машин, таких как 7090 , так и машин обработки данных, таких как 1401 , ему требовалась конструкция, которая могла бы разумно поддерживать все формы обработки. Поэтому набор инструкций был разработан для манипулирования простыми двоичными числами и текстом, научными числами с плавающей точкой (похожими на числа, используемые в калькуляторе) и двоично-десятичной арифметикой, необходимой для бухгалтерских систем.
Почти все последующие компьютеры включали эти инновации в той или иной форме. Этот базовый набор функций теперь называется сложными вычислениями с набором инструкций [ требуется цитата ] (CISC, произносится как «сиск»), термин, который появился много лет спустя, когда вычисления с сокращенным набором инструкций (RISC) начали получать долю рынка.
Во многих CISC инструкция могла обращаться либо к регистрам, либо к памяти, обычно несколькими различными способами. Это упрощало программирование CISC, поскольку программист мог запомнить только от тридцати до ста инструкций и набор из трех-десяти режимов адресации, а не тысячи отдельных инструкций. Это называлось ортогональным набором инструкций . Архитектура PDP-11 и Motorola 68000 является примерами почти ортогональных наборов инструкций.
В то время с IBM конкурировала также группа компаний BUNCH ( Burroughs , UNIVAC , NCR , Control Data Corporation и Honeywell ); однако IBM доминировала в ту эпоху с S/360.
Корпорация Burroughs (которая позже объединилась со Sperry/Univac, образовав Unisys ) предложила альтернативу S/360 с их большими системами Burroughs серии B5000. В 1961 году B5000 имела виртуальную память, симметричную многопроцессорную обработку, многопрограммную операционную систему (Master Control Program (MCP)), написанную на ALGOL 60 , и первые в отрасли компиляторы с рекурсивным спуском уже в 1964 году.
Первый коммерческий микропроцессор , основанный на двоично-десятичном коде (BCD) Intel 4004 , был выпущен Intel в 1971 году. [1] [2] В марте 1972 года Intel представила микропроцессор с 8-битной архитектурой, 8008 , интегрированную pMOS-логику, повторно реализующую ЦП Datapoint 2200 на основе транзисторно-транзисторной логики (ТТЛ) .
Конструкторы 4004 Федерико Фаггин и Масатоши Шима продолжили разработку преемника 8008, Intel 8080 , немного более похожего на миникомпьютер микропроцессора, в значительной степени основанного на отзывах клиентов о лимитированном 8008. Подобно 8008, он использовался для таких приложений, как терминалы, принтеры, кассовые аппараты и промышленные роботы. Однако более способный 8080 также стал исходным целевым ЦП для ранней стандартной операционной системы для персональных компьютеров под названием CP/M и использовался для таких сложных задач управления, как крылатые ракеты , и многих других применений. Выпущенный в 1974 году, 8080 стал одним из первых действительно широко распространенных микропроцессоров.
К середине 1970-х годов использование интегральных схем в компьютерах стало обычным делом. Десятилетие было отмечено рыночными потрясениями, вызванными падением цен на транзисторы.
Стало возможным разместить целый ЦП на одной печатной плате. В результате мини-компьютеры, обычно с 16-битными словами и памятью от 4 до 64 Кбайт, стали обычным явлением.
Считалось, что CISC являются самыми мощными типами компьютеров, поскольку их микрокод был небольшим и мог храниться в очень высокоскоростной памяти. Архитектура CISC также решала проблему семантического разрыва , как это тогда воспринималось. Это было определенное расстояние между машинным языком и языками программирования более высокого уровня, используемыми для программирования машины. Считалось, что компиляторы могли бы лучше справляться с работой с более богатым набором инструкций.
Пользовательские CISC обычно конструировались с использованием логики bit-slice компьютера, такой как чипы AMD 2900, с пользовательским микрокодом. Компонент bit-slice — это часть арифметико-логического устройства (АЛУ), регистрового файла или микросеквенсора. Большинство bit-slice интегральных схем имели ширину 4 бита.
К началу 1970-х годов был разработан 16-битный миникомпьютер PDP-11 , возможно, самый продвинутый малый компьютер своего времени. В конце 1970-х годов были представлены более широкие суперминикомпьютеры , такие как 32-битный VAX .
IBM продолжала выпускать большие, быстрые компьютеры. Однако определение «большой» и «быстрый» теперь означало более мегабайта оперативной памяти, тактовую частоту около одного мегагерца, [3] [4] и десятки мегабайт дисковых накопителей.
IBM System 370 была версией 360, доработанной для работы виртуальных вычислительных сред. Виртуальный компьютер был разработан для снижения вероятности неустранимого сбоя программного обеспечения.
Серия больших систем Burroughs (B5000, B6000, B7000) достигла наибольшей доли рынка. Это был стековый компьютер, операционная система которого была запрограммирована на диалекте Algol.
Все эти различные разработки конкурировали за долю рынка.
Первый однокристальный 16-битный микропроцессор был представлен в 1975 году. Panafacom , конгломерат, образованный японскими компаниями Fujitsu , Fuji Electric и Matsushita , представил MN1610, коммерческий 16-битный микропроцессор. [5] [6] [7] По словам Fujitsu, это был «первый в мире 16-битный микрокомпьютер на одном кристалле». [6]
Intel 8080 стал основой для 16-разрядного Intel 8086 , который является прямым предком сегодняшнего вездесущего семейства x86 (включая Pentium и Intel Core ). Каждая инструкция 8080 имеет прямой эквивалент в большом наборе инструкций x86, хотя значения опкодов в последнем различны.
В начале 1980-х годов исследователи из Калифорнийского университета в Беркли и IBM обнаружили, что большинство компиляторов и интерпретаторов компьютерных языков используют лишь небольшое подмножество инструкций сложных вычислений с набором инструкций (CISC). Значительная часть мощности ЦП игнорируется в реальном мире. Они поняли, что, сделав компьютер проще и менее ортогональным, они могут сделать его быстрее и менее дорогим одновременно.
В то же время вычисления ЦП стали быстрее по отношению ко времени необходимых доступов к памяти. Разработчики также экспериментировали с использованием больших наборов внутренних регистров. Целью было кэширование промежуточных результатов в регистрах под контролем компилятора. Это также уменьшило количество режимов адресации и ортогональность.
Компьютерные конструкции, основанные на этой теории, были названы вычислениями с сокращенным набором инструкций (RISC). RISC обычно имели большее количество регистров, к которым обращались с помощью более простых инструкций, с несколькими инструкциями, специально предназначенными для загрузки и сохранения данных в памяти. Результатом стал очень простой центральный процессор, работающий на очень высокой скорости, поддерживающий виды операций, которые компиляторы использовали в любом случае.
Распространенный вариант дизайна RISC использует архитектуру Гарварда , в отличие от архитектуры фон Неймана или архитектуры хранимых программ, характерной для большинства других дизайнов. В машине с архитектурой Гарварда программа и данные занимают отдельные устройства памяти и могут быть доступны одновременно. В машинах фон Неймана данные и программы смешаны в одном устройстве памяти, требуя последовательного доступа, что создает так называемое узкое место фон Неймана .
Одним из недостатков дизайна RISC было то, что программы, которые на них работают, как правило, больше. Это связано с тем, что компиляторы должны генерировать более длинные последовательности более простых инструкций для выполнения тех же результатов. Поскольку эти инструкции в любом случае должны загружаться из памяти, более крупный код компенсирует часть быстрой обработки памяти дизайна RISC.
В начале 1990-х годов инженеры японской компании Hitachi нашли способы сжать сокращенные наборы инструкций, чтобы они помещались в еще меньшие системы памяти, чем CISC. Такие схемы сжатия использовались для набора инструкций их серии микропроцессоров SuperH , представленных в 1992 году. [8] Набор инструкций SuperH был позже адаптирован для набора инструкций Thumb архитектуры ARM . [9] В приложениях, которым не нужно запускать старое двоичное программное обеспечение, сжатые RISC-процессоры становятся доминирующими в продажах.
Другим подходом к RISC был компьютер с минимальным набором команд (MISC), ниладический или набор команд с нулевым операндом . Этот подход осознавал, что большая часть пространства в инструкции использовалась для идентификации операндов инструкции. Эти машины помещали операнды в стек с выталкиванием (последним пришел, первым вышел) . Набор инструкций был дополнен несколькими инструкциями для извлечения и сохранения памяти. Большинство использовали простое кэширование для обеспечения чрезвычайно быстрых машин RISC с очень компактным кодом. Другим преимуществом было то, что задержки прерываний были очень маленькими, меньше, чем у большинства машин CISC (редкая черта в машинах RISC). Архитектура больших систем Burroughs использовала этот подход. B5000 был разработан в 1961 году, задолго до изобретения термина RISC . Архитектура помещает шесть 8-битных инструкций в 48-битное слово и была предшественником конструкции с очень длинным словом инструкции (VLIW) (см. ниже: с 1990 года по сегодняшний день).
Архитектура Burroughs была одним из источников вдохновения для языка программирования Forth Чарльза Х. Мура , который, в свою очередь, вдохновил его более поздние разработки чипов MISC. Например, его ядра f20 имели 31 5-битную инструкцию, что соответствовало четырем 20-битным словам.
Чипы RISC теперь доминируют на рынке 32-битных встраиваемых систем. Меньшие чипы RISC становятся все более распространенными на чувствительном к стоимости рынке 8-битных встраиваемых систем. Основным рынком для ЦП RISC были системы, которым требуется малое энергопотребление или небольшой размер.
Даже некоторые процессоры CISC (основанные на архитектурах, созданных до того, как RISC стал доминирующим), такие как новые процессоры x86 , преобразуют инструкции внутри себя в набор инструкций, аналогичный RISC.
Эти цифры могут удивить многих, поскольку рынок воспринимается как рынок настольных компьютеров. Конструкции x86 доминируют в продажах настольных компьютеров и ноутбуков, но такие компьютеры составляют лишь малую часть от всех продаваемых сейчас компьютеров. Большинство людей в промышленно развитых странах имеют больше компьютеров во встроенных системах в своих автомобилях и домах, чем на своих столах.
В середине-конце 1980-х годов проектировщики начали использовать технику, называемую конвейеризацией инструкций , при которой процессор работает над несколькими инструкциями на разных стадиях выполнения. Например, процессор может извлекать операнды для следующей инструкции, вычисляя результат текущей. Современные процессоры могут использовать более дюжины таких стадий. (Первоначально конвейеризация была разработана в конце 1950-х годов компанией International Business Machines (IBM) на их мэйнфрейм-компьютере 7030 (Stretch).) Компьютеры с минимальным набором инструкций (MISC) могут выполнять инструкции за один цикл без необходимости конвейеризации.
Похожая идея, представленная всего несколько лет спустя, заключалась в параллельном выполнении нескольких инструкций на отдельных арифметико-логических устройствах (АЛУ). Вместо того, чтобы работать только с одной инструкцией за раз, ЦП будет искать несколько похожих инструкций, которые не зависят друг от друга, и выполнять их параллельно. Такой подход называется проектированием суперскалярного процессора.
Такие методы ограничены степенью параллелизма на уровне инструкций (ILP), числом независимых инструкций в программном коде. Некоторые программы могут работать очень хорошо на суперскалярных процессорах из-за присущего им высокого ILP, особенно графика. Однако более общие задачи имеют гораздо меньший ILP, что снижает возможное ускорение от этих методов.
Ветвление является одним из основных виновников. Например, программа может сложить два числа и перейти на другой сегмент кода, если число больше третьего числа. В этом случае, даже если операция ветвления отправляется на второй ALU для обработки, она все равно должна ждать результатов сложения. Таким образом, она работает не быстрее, чем если бы было только одно ALU. Наиболее распространенным решением для этого типа проблем является использование типа предсказания ветвления .
Для повышения эффективности нескольких функциональных блоков, доступных в суперскалярных конструкциях, зависимости регистров операндов оказались еще одним ограничивающим фактором. Чтобы минимизировать эти зависимости, было введено неупорядоченное выполнение инструкций. В такой схеме результаты инструкций, которые завершаются неупорядоченно, должны быть переупорядочены процессором в программном порядке, чтобы программа могла быть перезапущена после исключения. Неупорядоченное выполнение было главным достижением компьютерной индустрии в 1990-х годах.
Похожая концепция — спекулятивное выполнение , когда инструкции из одного направления ветви (предсказываемое направление) выполняются до того, как станет известно направление ветви. Когда направление ветви известно, сравниваются предсказанное направление и фактическое направление. Если предсказанное направление было правильным, спекулятивно выполненные инструкции и их результаты сохраняются; если оно было неправильным, эти инструкции и их результаты стираются. Спекулятивное выполнение в сочетании с точным предсказателем ветвления дает большой прирост производительности.
Эти достижения, которые изначально были разработаны в ходе исследований для конструкций в стиле RISC, позволяют современным процессорам CISC выполнять двенадцать и более инструкций за такт, тогда как традиционным конструкциям CISC для выполнения одной инструкции требовалось двенадцать и более циклов.
Получающаяся логика планирования инструкций этих процессоров большая, сложная и трудная для проверки. Кроме того, более высокая сложность требует большего количества транзисторов, что повышает энергопотребление и тепловыделение. В них RISC превосходит, поскольку инструкции проще, имеют меньшую взаимозависимость и облегчают реализацию суперскалярных процессоров. Однако, как продемонстрировала Intel, эти концепции можно применить к проектированию сложных вычислений с набором инструкций (CISC), если выделить достаточно времени и денег.
Логика планирования инструкций, которая делает процессор суперскалярным, — это булева логика . В начале 1990-х годов важным нововведением стало осознание того, что координацию работы компьютера с несколькими АЛУ можно перенести в компилятор , программное обеспечение, которое преобразует инструкции программиста в инструкции машинного уровня.
Этот тип компьютера называется компьютером с очень длинными командными словами (VLIW).
Статическое планирование инструкций в компиляторе (в отличие от динамического планирования в процессоре) может снизить сложность ЦП. Это может повысить производительность, а также снизить тепловыделение и стоимость.
К сожалению, компилятору не хватает точных знаний о проблемах планирования времени выполнения. Простое изменение множителя частоты ядра ЦП повлияет на планирование. Работа программы, определяемая входными данными, окажет значительное влияние на планирование. Чтобы преодолеть эти серьезные проблемы, система VLIW может быть улучшена путем добавления обычного динамического планирования, что приведет к потере некоторых преимуществ VLIW.
Статическое планирование в компиляторе также предполагает, что динамически сгенерированный код будет редкостью. До создания Java и виртуальной машины Java это было правдой. Было разумно предположить, что медленная компиляция повлияет только на разработчиков программного обеспечения. Теперь, когда для многих языков используются виртуальные машины с компиляцией «на лету» (JIT), медленная генерация кода влияет и на пользователей.
Было несколько неудачных попыток коммерциализировать VLIW. Основная проблема заключается в том, что компьютер VLIW не масштабируется до разных ценовых и производительных точек, как это может сделать динамически планируемый компьютер. Другая проблема заключается в том, что проектирование компилятора для компьютеров VLIW очень сложно, и компиляторы, начиная с 2005 года, часто выдают неоптимальный код для этих платформ.
Кроме того, компьютеры VLIW оптимизируют производительность, а не низкую задержку, поэтому они были непривлекательны для инженеров, проектирующих контроллеры и другие компьютеры, встроенные в машины. Рынки встроенных систем часто были пионерами других усовершенствований компьютеров, предоставляя большой рынок, не заботясь о совместимости со старым программным обеспечением.
В январе 2000 года Transmeta Corporation предприняла новаторский шаг, разместив компилятор в центральном процессоре и заставив компилятор транслировать ссылочный байт-код (в их случае инструкции x86 ) во внутренний набор инструкций VLIW. Этот метод сочетает в себе простоту оборудования, низкое энергопотребление и скорость VLIW RISC с компактной основной системой памяти и обратной совместимостью программного обеспечения, предоставляемой популярным CISC.
Чип Itanium от Intel основан на том, что они называют явно параллельным вычислением инструкций (EPIC). Этот дизайн предположительно обеспечивает преимущество VLIW в виде повышенной пропускной способности инструкций. Однако он избегает некоторых проблем масштабирования и сложности, явно предоставляя в каждом пакете инструкций информацию об их зависимостях. Эта информация вычисляется компилятором, как это было бы в дизайне VLIW. Ранние версии также обратно совместимы с более новым программным обеспечением x86 с помощью режима эмулятора на чипе . Целочисленная производительность была разочаровывающей, и, несмотря на улучшения, продажи на массовых рынках продолжают оставаться низкими.
Текущие [ когда? ] конструкции работают лучше всего, когда на компьютере запущена только одна программа. Однако почти все современные операционные системы позволяют запускать несколько программ одновременно. Для того, чтобы процессор переключился и начал работать над другой программой, требуется дорогостоящее переключение контекста . Напротив, многопоточные процессоры могут обрабатывать инструкции из нескольких программ одновременно.
Для этого такие ЦП включают несколько наборов регистров. Когда происходит переключение контекста, содержимое рабочих регистров просто копируется в один из набора регистров для этой цели.
Такие конструкции часто включают тысячи регистров вместо сотен, как в типичной конструкции. С другой стороны, регистры, как правило, довольно дороги в пространстве чипа, необходимом для их реализации. Это пространство чипа может быть использовано иным образом для какой-то другой цели.
Intel называет эту технологию «гиперпоточностью» и предлагает два потока на ядро в своей текущей линейке настольных процессоров Core i3, Core i5, Core i7 и Core i9 (а также в своей линейке мобильных процессоров Core i3, Core i5 и Core i7), а также предлагает до четырех потоков на ядро в высокопроизводительных процессорах Xeon Phi.
Многоядерные процессоры обычно представляют собой несколько ядер процессора на одном кристалле, соединенных друг с другом через общий кэш L2 или L3, шину на кристалле или коммутатор перекрестной шины на кристалле . Все ядра процессора на кристалле совместно используют компоненты межсоединений, с помощью которых они взаимодействуют с другими процессорами и остальной частью системы. Эти компоненты могут включать интерфейс шины на передней стороне , контроллер памяти для взаимодействия с динамической памятью с произвольным доступом (DRAM), когерентную связь кэша с другими процессорами и некогерентную связь с южным мостом и устройствами ввода-вывода. Термины многоядерный и микропроцессорный блок (MPU) стали общепринятыми для обозначения одного кристалла с несколькими ядрами процессора.
Одним из способов обойти узкое место фон Неймана является объединение процессора и DRAM на одном кристалле.
Другим направлением развития является объединение реконфигурируемой логики с универсальным ЦП. В этой схеме специальный компьютерный язык компилирует быстро работающие подпрограммы в битовую маску для настройки логики. Более медленные или менее критичные части программы могут быть запущены путем разделения их времени на ЦП. Этот процесс позволяет создавать такие устройства, как программные радиоприемники , используя цифровую обработку сигналов для выполнения функций, обычно выполняемых аналоговой электроникой .
Поскольку границы между аппаратным и программным обеспечением все больше размываются из-за прогресса в методологии проектирования и доступности чипов, таких как программируемые пользователем вентильные матрицы (FPGA), и более дешевых производственных процессов, даже начали появляться аппаратные средства с открытым исходным кодом . Слабо связанные сообщества, такие как OpenCores и RISC-V, недавно анонсировали полностью открытые архитектуры ЦП, такие как OpenRISC , которые могут быть легко реализованы на FPGA или в изготовленных на заказ чипах кем угодно, без лицензионных сборов, и даже признанные производители процессоров, такие как Sun Microsystems, выпустили проекты процессоров (например, OpenSPARC ) под лицензиями с открытым исходным кодом.
Еще одним вариантом является безтактовый или асинхронный ЦП . В отличие от обычных процессоров, безтактовые процессоры не имеют центрального тактового генератора для координации хода данных по конвейеру. Вместо этого этапы ЦП координируются с помощью логических устройств, называемых элементами управления конвейерной линией или секвенсорами FIFO . По сути, контроллер конвейера тактирует следующий этап логики, когда текущий этап завершен. Таким образом, центральный тактовый генератор не нужен.
По сравнению с тактовой логикой, может быть проще реализовать высокопроизводительные устройства в асинхронной логике:
Сторонники асинхронной логики полагают, что эти возможности дадут следующие преимущества:
Самым большим недостатком ЦП без тактовой частоты является то, что большинство инструментов проектирования ЦП предполагают наличие тактового ЦП ( синхронной схемы ), поэтому создание ЦП без тактовой частоты (проектирование асинхронной схемы ) подразумевает модификацию инструментов проектирования для обработки логики без тактовой частоты и проведение дополнительных испытаний, чтобы гарантировать, что конструкция не имеет проблем с метастабильностью .
Несмотря на это, было создано несколько асинхронных процессоров, включая
Теоретически, компоненты оптического компьютера могли бы напрямую соединяться через голографическую или фазированную систему коммутации на открытом воздухе. Это обеспечило бы значительное увеличение эффективной скорости и гибкости конструкции, а также значительное снижение стоимости. Поскольку разъемы компьютера также являются наиболее вероятными точками отказа, система без шины может быть более надежной.
Кроме того, по состоянию на 2010 год современные процессоры используют 64- или 128-битную логику. Оптическая суперпозиция длин волн может позволить использовать линии данных и логику на много порядков выше, чем электроника, без дополнительного пространства или медных проводов.
Другим долгосрочным вариантом является использование света вместо электричества для цифровой логики. Теоретически это может работать примерно на 30% быстрее и потреблять меньше энергии, а также обеспечить прямой интерфейс с квантовыми вычислительными устройствами. [ необходима цитата ]
Основные проблемы этого подхода заключаются в том, что в обозримом будущем электронные вычислительные элементы будут быстрее, меньше, дешевле и надежнее. Такие элементы уже меньше некоторых длин волн света. Таким образом, даже оптическая логика на основе волноводов может быть неэкономичной по сравнению с электронной логикой. По состоянию на 2016 год большая часть усилий по разработке приходится на электронные схемы.
Ранние экспериментальные работы были посвящены использованию ионных химических реакций вместо электронных или фотонных действий для реализации элементов логического процессора.
Относительно обычной архитектуры регистровой машины или стековой машины , но схожей с архитектурой Itanium компании Intel , [12] Иваном Годаром и компанией была предложена схема адресации временных регистров, которая призвана значительно снизить сложность аппаратного обеспечения ЦП (в частности, количество внутренних регистров и возникающие в результате огромные деревья мультиплексоров ). [13] Хотя ее несколько сложнее читать и отлаживать, чем имена регистров общего назначения, она помогает пониманию, рассматривая ленту как движущуюся конвейерную ленту , где самые старые значения спадают с ленты и исчезают. Она реализована в архитектуре Mill.
... асинхронная схема по всему чипу. Нет центрального тактового генератора с миллиардами глупых узлов, рассеивающих бесполезную мощность. ... ядра процессора сами по себе внутренне асинхронны.