stringtranslate.com

Исполнение вне очереди

В компьютерной инженерии выполнение вне очереди (или, более формально, динамическое выполнение ) — это парадигма , используемая в высокопроизводительных центральных процессорах для использования командных циклов , которые в противном случае были бы потрачены впустую. В этой парадигме процессор выполняет инструкции в порядке, определяемом доступностью входных данных и исполнительных блоков [1] , а не их исходным порядком в программе. [2] [3] При этом процессор может избежать простоя во время ожидания завершения предыдущей инструкции и тем временем обрабатывать следующие инструкции, которые могут выполняться немедленно и независимо. [4]

История

Выполнение вне порядка — это ограниченная форма архитектуры потоков данных , которая была основной областью исследований в области компьютерной архитектуры в 1970-х и начале 1980-х годов.

Раннее использование в суперкомпьютерах

Первой машиной, использовавшей выполнение вне очереди, была CDC 6600 (1964), разработанная Джеймсом Э. Торнтоном , которая использовала табло для предотвращения конфликтов. Он разрешает выполнение инструкции, если ее исходные операнды (регистры чтения) не должны быть записаны какой-либо невыполненной ранее командой (истинная зависимость), а регистр назначения (записи) не является регистром, используемым какой-либо невыполненной ранее командой (ложная зависимость). ). В 6600 отсутствуют средства, позволяющие избежать остановки исполнительного устройства из-за ложных зависимостей ( конфликты записи после записи (WAW) и записи после чтения (WAR), которые Торнтон назвал соответственно конфликтами первого порядка и конфликтами третьего порядка , который назвал истинными зависимостями ( чтение) после записи (RAW)) как конфликт второго порядка), поскольку каждый адрес имеет только одно местоположение, на которое он ссылается. WAW хуже, чем WAR для 6600, потому что когда исполнительный блок сталкивается с WAR, другие исполнительные блоки все равно получают и выполняют инструкции, но при WAW назначение инструкций исполнительным блокам прекращается, и они не могут получать дальнейшие инструкции. до тех пор, пока регистр назначения инструкции, вызывающей WAW, не будет записан предыдущей инструкцией. [5]

Примерно два года спустя IBM System/360 Model 91 (1966) представила переименование регистров с помощью алгоритма Томасуло [6] , который устраняет ложные зависимости (WAW и WAR), делая возможным полное выполнение вне порядка. Инструкция, адресующая запись в регистр r n, может быть выполнена до того, как будет выполнена более ранняя инструкция, использующая регистр r n , путем фактической записи в альтернативный (переименованный) регистр alt-r n , который превращается только в обычный регистр r n . когда все предыдущие инструкции, адресованные r n , были выполнены, но до этого момента r n дается для более ранних инструкций и alt-r n для более поздних, адресованных r n .

В модели 91 переименование регистров реализовано с помощью обхода , называемого общей шиной данных (CDB), и буферов операндов источника памяти, в результате чего физические архитектурные регистры остаются неиспользованными в течение многих циклов, поскольку самое старое состояние регистров, к которым обращается любая невыполненная инструкция, находится в CDB. . Еще одним преимуществом модели 91 перед 6600 является возможность выполнять инструкции вне очереди в одном исполнительном блоке , а не только между блоками, как в 6600. Это достигается с помощью станций резервирования , с которых инструкции передаются в исполнительный блок. когда он готов, в отличие от очереди FIFO каждого исполнительного устройства 6600. Модель 91 также способна переупорядочивать загрузки и сохранения для выполнения перед предыдущими загрузками и сохранениями, [7] в отличие от 6600, который имеет только ограниченная возможность перемещать грузы мимо грузов и магазины мимо магазинов, но не грузы мимо магазинов и магазины мимо грузов. [8] Переименованы только регистры с плавающей запятой модели 91, что делает ее подпадающей под те же ограничения WAW и WAR, что и CDC 6600, при выполнении вычислений с фиксированной запятой. И 91, и 6600 также страдают от неточных исключений , которые необходимо было устранить, прежде чем выполнение вне очереди можно было бы применять в целом и сделать практичным за пределами суперкомпьютеров.

Точные исключения

Чтобы иметь точные исключения, после исключения должно быть доступно правильное состояние выполнения программы. К 1985 году были разработаны различные подходы, описанные Джеймсом Э. Смитом и Эндрю Р. Плешкуном. [9] CDC Cyber ​​205 был предшественником, поскольку при прерывании виртуальной памяти все состояние процессора (включая информацию о частично выполненных инструкциях) сохраняется в невидимом пакете обмена , чтобы он мог возобновиться в том же состоянии. исполнения. [10] Однако, чтобы сделать все исключения точными, должен быть способ отменить действие инструкций. CDC Cyber ​​990 (1984) реализует точные прерывания с использованием буфера истории, в котором хранятся старые (перезаписанные) значения регистров, которые восстанавливаются, когда исключение требует отмены инструкций. [9] Смит смоделировал, что добавление буфера переупорядочения (или буфера истории или его эквивалента) в Cray-1S снизит производительность выполнения первых 14 циклов Ливермора (невекторизованных) всего на 3%. [9] Важные академические исследования по этому вопросу провел Йель Пэтт с помощью своего симулятора HPSm. [11]

В 1980-х годах многие ранние RISC- микропроцессоры, такие как Motorola 88100 , имели неправильную обратную запись в регистры, что приводило к неточным исключениям. Инструкции начали выполнение по порядку, но некоторым (например, с плавающей запятой) для завершения выполнения потребовалось больше циклов. Однако выполнение самых основных инструкций за один такт значительно уменьшило масштаб проблемы по сравнению с CDC 6600.

Развязка

Смит также исследовал, как заставить различные исполнительные блоки работать более независимо друг от друга, а также от памяти, внешнего интерфейса и ветвления. [12] Он реализовал эти идеи в книге Astronautics ZS-1 (1988), в которой был отделен конвейер целых чисел/загрузки/сохранения от конвейера с плавающей запятой, что позволило переупорядочивать данные между конвейерами. ЗС-1 также был способен выполнять нагрузки раньше предыдущих магазинов. В своей статье 1984 года он высказал мнение, что принудительное применение точных исключений только в конвейере целых чисел/памяти должно быть достаточным для многих случаев использования, поскольку оно допускает даже использование виртуальной памяти . Каждый конвейер имел буфер инструкций, который отделял его от декодера команд и предотвращал остановку внешнего интерфейса. Чтобы еще больше отделить доступ к памяти от выполнения, каждый из двух конвейеров был связан с двумя адресуемыми очередями , которые эффективно выполняли ограниченное переименование регистров. [7] Похожая разделенная архитектура использовалась чуть ранее в Culler 7. [13] ISA ZS-1, как и последующий POWER от IBM, способствовал раннему выполнению ветвей.

Исследование приносит свои плоды

С POWER1 (1990) IBM вернулась к внеочередному исполнению. Это был первый процессор, сочетавший переименование регистров (хотя опять же только регистров с плавающей запятой) с точными исключениями. Он использует файл физического регистра (т. е. динамически переназначаемый файл как с незафиксированными, так и с зафиксированными значениями) вместо буфера переупорядочения, полного данных, но возможность отмены инструкций необходима только в модуле ветвления, который реализует буфер истории (называемый стеком счетчика программы). от IBM), чтобы отменить изменения в регистрах счета, связи и состояния. Возможность изменения порядка даже инструкций с плавающей запятой по-прежнему очень ограничена; из-за неспособности POWER1 переупорядочивать инструкции арифметических операций с плавающей запятой (результаты стали доступны в определенном порядке), их регистры назначения не переименовываются. POWER1 также не имеет станций резервирования , необходимых для внеочередного использования одного и того же исполнительного устройства. [14] [15] В следующем году IBM ES/9000 модели 900 переименовала регистры также для регистров общего назначения. Он также имеет станции резервирования с шестью записями для двойного целочисленного блока (в каждом цикле из шести инструкций можно выбрать и затем выполнить до двух) и шестью записями для FPU. Другие устройства имеют простые очереди FIFO. Расстояние до заказа — до 32 инструкций. [16] A19 из мэйнфреймов A-серии Unisys также был выпущен в 1991 году и, как утверждалось, имел нестандартное исполнение, а один аналитик назвал технологию A19 опережающей конкурентов на три-пять лет. [17] [18]

Широкое внедрение

Первые суперскалярные однокристальные процессоры ( Intel i960 CA в 1989 году) использовали простое табло планирования, как и CDC 6600 четверть века назад, но в 1992-1996 годах быстрое развитие технологий, ставшее возможным за счет увеличения количества транзисторов , привело к сокращению их распространения. на персональные компьютеры. Motorola 88110 (1992) использовала буфер истории для возврата инструкций. [19] Загрузки могут выполняться перед предыдущими сохранениями. Пока хранилища и филиалы ожидали начала выполнения, последующие инструкции других типов могли продолжать проходить через все этапы конвейера, включая обратную запись. Емкость буфера истории на 12 записей налагала ограничение на расстояние повторного заказа. [20] [21] [22] PowerPC 601 (1993) представлял собой развитие однокристального процессора RISC , который сам по себе является упрощением POWER1. 601 позволял инструкциям ветвления и операциям с плавающей запятой обгонять целочисленные инструкции, уже находящиеся в очереди извлеченных инструкций, четыре младшие записи которой сканировались на предмет возможности диспетчеризации. В случае промаха в кэше порядок загрузки и сохранения может быть переупорядочен. Переименовать можно только регистр связи и счетчика. [28] Осенью 1994 года NexGen и IBM совместно с Motorola предложили переименование регистров общего назначения в однокристальные процессоры. Nx586 компании NexGen был первым процессором x86 , способным выполнять внеочередное выполнение, реализованное с помощью микро-ОП . Расстояние дозаказа — до 14 микроОП. [29] В PowerPC 603 были переименованы регистры общего назначения и регистры FP. Каждый из четырех исполнительных блоков без ветвей может иметь перед собой одну ожидающую команду, не блокируя поток команд к другим блокам. Буфер переупорядочения с пятью записями позволяет не более чем четырем инструкциям обогнать невыполненную команду. Благодаря буферу хранилища загрузка может получить доступ к кешу раньше предыдущего хранилища. [30] [31]

PowerPC 604 (1995) был первым однокристальным процессором с переупорядочением на уровне исполнительных блоков , поскольку каждый из трех из шести его блоков имел станцию ​​резервирования с двумя входами, позволяющую новой записи выполняться раньше старой. Емкость буфера переупорядочения составляет 16 инструкций. Очередь загрузки из четырех записей и очередь сохранения из шести записей отслеживают изменение порядка загрузки и сохранения в случае промахов в кэше. [32] HAL SPARC64 (1995) превысил возможности повторного заказа модели ES/9000 900, имея три станции резервирования с 8 входами для целых чисел, чисел с плавающей запятой и блока генерации адресов , а также станцию ​​резервирования с 12 входами для загрузки. /store, что позволяет лучше переупорядочивать доступ к кешу/памяти, чем предыдущие процессоры. Одновременно в переупорядоченном состоянии могут находиться до 64 инструкций . Буфер повторного заказа на 40 записей. Грузы можно повторно заказать как перед погрузкой, так и перед складами. [35]

Практически достижимая скорость выполнения за такт еще больше выросла, поскольку полное выполнение вне очереди было далее принято SGI / MIPS ( R10000 ) и HP PA-RISC ( PA-8000 ) в 1996 году. В том же году Cyrix 6x86 и AMD K5 привнесла передовые методы переупорядочения в обычные персональные компьютеры . С тех пор, как в 1998 году компания DEC Alpha получила возможность выполнения внеочередного выполнения ( Alpha 21264 ), наиболее производительные процессорные ядра с нарушением порядка не имели аналогов среди ядер с нарушением порядка, кроме HP / Intel Itanium 2 и IBM POWER6 , хотя последние имел неисправный блок операций с плавающей запятой . [36] Другие высокопроизводительные процессоры с упорядоченным порядком сильно отстали, а именно Sun UltraSPARC III / IV и мэйнфреймы IBM, которые во второй раз потеряли возможность выполнения внеочередного выполнения, оставаясь в нормальном порядке до поколение z10 . Позже крупные процессоры с упорядоченным выполнением были ориентированы на многопоточную производительность, но в конечном итоге серия SPARC T и Xeon Phi перешли на выполнение вне порядка в 2011 и 2016 годах соответственно.

Почти все процессоры для телефонов и других приложений более низкого уровня оставались в порядке до c. 2010. Сначала на Snapdragon появился Qualcomm Scorpion (дистанция дозаказа 32) , [37] а чуть позже на смену A8 пришла Arm A9 . Для бюджетных персональных компьютеров x86 первые модели Intel Atom были первыми, кто бросил вызов AMD Bobcat , а в 2013 году на смену им пришел вышедший из строя Silvermont . [38] Поскольку сложность внеочередного выполнения не позволяет достичь наименьшего минимального энергопотребления, стоимости и размера, упорядоченное исполнение по-прежнему распространено в микроконтроллерах и встроенных системах , а также в ядрах телефонного класса, таких как Arm A55 . и A510 в конфигурациях big.LITTLE .

Основная концепция

Чтобы оценить исполнение вне порядка, полезно сначала описать порядок выполнения, чтобы иметь возможность сравнить их. Инструкции не могут быть выполнены мгновенно: они требуют времени (несколько циклов). Поэтому результаты будут отставать там, где они необходимы. В порядке все равно приходится отслеживать зависимости. Однако его подход довольно прост: каждый раз останавливаться. out-of-order использует гораздо более сложные методы отслеживания данных, как показано ниже.

Процессоры по порядку

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

  1. Инструкция получения .
  2. Если входные операнды доступны (например, в регистрах процессора), инструкция отправляется соответствующему функциональному блоку . Если один или несколько операндов недоступны в течение текущего тактового цикла (обычно потому, что они извлекаются из памяти ), процессор останавливается до тех пор, пока они не станут доступны.
  3. Команда выполняется соответствующим функциональным блоком.
  4. Функциональный блок записывает результаты обратно в файл регистра .

Часто в процессоре упорядоченного порядка имеется запись битового вектора , в регистры которого будет записываться конвейер. [39] Если для каких-либо входных операндов в этом векторе установлен соответствующий бит, выполнение команды останавливается. По сути, вектор выполняет значительно упрощенную роль защиты от опасностей, связанных с регистрами. Таким образом, при выполнении вне порядка используются двумерные матрицы, тогда как при выполнении по порядку используется одномерный вектор для предотвращения опасностей.

Неисправные процессоры

Эта новая парадигма разбивает обработку инструкций на следующие этапы:

  1. Получение инструкции.
  2. Расшифровка инструкций.
  3. Переименование инструкции.
  4. Отправка инструкций в очередь инструкций (также называемую буфером инструкций или станциями резервирования ).
  5. Инструкция ожидает в очереди, пока не станут доступны ее входные операнды. Инструкция может покинуть очередь раньше старых инструкций.
  6. Команда выдается соответствующему функциональному блоку и выполняется этим блоком.
  7. Результаты ставятся в очередь.
  8. Только после того, как результаты всех старых инструкций будут записаны обратно в файл регистров, этот результат записывается обратно в файл регистров. Это называется этапом окончания или выхода на пенсию.

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

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

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

Разделение диспетчеризации и проблем позволяет исключить проблемы, выходящие за рамки заказа.

Одним из отличий, созданных новой парадигмой, является создание очередей, которые позволяют отделить этап отправки от этапа выдачи, а этап выпуска — от этапа выполнения. Ранним названием парадигмы была «отдельная архитектура» . В более ранних процессорах с упорядоченным выполнением эти этапы работали довольно синхронно и конвейерно.

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

Целью буфера является разделение доступа к памяти и выполнения функций в компьютерной программе и достижение высокой производительности за счет использования мелкозернистого параллелизма между ними. [40] При этом он эффективно скрывает все задержки памяти с точки зрения процессора.

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

Разделенные архитектуры обычно считаются бесполезными для вычислений общего назначения, поскольку они плохо обрабатывают код с интенсивным управлением. [41] Код с интенсивным управлением включает в себя такие вещи, как вложенные ветки, которые часто встречаются в ядрах операционных систем . Разделенные архитектуры играют важную роль в планировании архитектур с очень длинными командами (VLIW). [42]

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

Разделение выполнения и обратной записи позволяет перезапустить программу.

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

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

Микроархитектурный выбор

Процессоры IBM PowerPC используют очереди, которые распределены между различными функциональными блоками, тогда как другие процессоры с нарушением порядка используют централизованную очередь. IBM использует термин «станции резервирования» для обозначения своих распределенных очередей.
Ранние процессоры Intel с нарушением порядка используют очередь результатов, называемую буфером повторного порядка , тогда как большинство более поздних процессоров с нарушением порядка используют карты регистров.
Точнее: микропроцессоры семейства Intel P6 имеют как буфер повторного порядка (ROB), так и таблицу псевдонимов регистров (RAT). ROB был мотивирован главным образом восстановлением неверного прогноза ветвей.
Семейство Intel P6 является одним из первых микропроцессоров OoOE, но было вытеснено архитектурой NetBurst . Спустя годы NetBurst оказался тупиком из-за своего длинного конвейера, предполагавшего возможность гораздо более высоких рабочих частот. Материалы не смогли соответствовать амбициозным целевым показателям конструкции из-за проблем с температурой, и более поздние разработки на основе NetBurst, а именно Tejas и Jayhawk, были отменены. Intel вернулась к дизайну P6 в качестве основы микроархитектур Core и Nehalem . Последующие микроархитектуры Sandy Bridge , Ivy Bridge и Haswell представляют собой отход от методов переупорядочения, используемых в P6, и используют методы переупорядочения из EV6 и P4 , но с несколько более коротким конвейером. [43] [44]

Смотрите также

Рекомендации

  1. ^ Кукунас, Джим (2015). Мощность и производительность: анализ и оптимизация программного обеспечения. Морган Кауфман. п. 37. ИСБН 9780128008140.
  2. ^ «Выполнение вне очереди» (PDF) . cs.washington.edu. 2006 год . Проверено 17 января 2014 г. не ждать выполнения предыдущих инструкций, если эта инструкция от них не зависит
  3. ^ "Празднование столетия". Регисская средняя школа . 14 марта 2011 г. Проверено 25 июня 2022 г. Алгоритм «позволяет выполнять непоследовательное выполнение последовательных инструкций, которые обычно останавливаются из-за определенных зависимостей» (также известное как выполнение вне порядка).
  4. ^ «Выполнение вне очереди». pcguide.com . Проверено 17 января 2014 г. Эта гибкость повышает производительность, поскольку позволяет выполнять выполнение с меньшим временем ожидания.
  5. ^ Торнтон (1970, стр. 125-127)
  6. ^ Томасуло, Роберт Марко (1967), «Эффективный алгоритм использования нескольких арифметических единиц» (PDF) , IBM Journal of Research and Development , 11 (1): 25–33, CiteSeerX 10.1.1.639.7540 , doi : 10.1147/ rd.111.0025, S2CID  8445049, заархивировано из оригинала (PDF) 12 июня 2018 г. 
  7. ^ Аб Смит, Джеймс Э. (июль 1989 г.). «Динамическое планирование инструкций и космонавтика ZS-1» (PDF) . Компьютер . 22 (7): 21–35. дои : 10.1109/2.30730. S2CID  329170.
  8. ^ Торнтон (1970, стр. 48-50)
  9. ^ abc Смит, Джеймс Э .; Плешкун, Эндрю Р. (июнь 1985 г.). «Реализация точных прерываний в конвейерных процессорах». 12-я ИСКА .
    (Расширенная версия опубликована в мае 1988 года под названием «Реализация точных прерываний в конвейерных процессорах».)
  10. ^ Маудгилл, майя; Василиадис, Стаматис (январь 1996 г.). «О точных прерываниях». п. 18. CiteSeerX 10.1.1.33.3304 . Архивировано из оригинала (pdf) 13 октября 2022 года. 
  11. ^ Хву, В.; Патт, Йель Н. (1986). HPSm — высокопроизводительная архитектура с ограниченным потоком данных и минимальной функциональностью. АКМ . стр. 297–306. ISBN 978-0-8186-0719-6. Проверено 6 декабря 2013 г. {{cite book}}: |work=игнорируется ( помощь )
  12. ^ Смит, Джеймс Э. (ноябрь 1984 г.). «Компьютерные архитектуры с раздельным доступом и выполнением» (PDF) . Транзакции ACM в компьютерных системах . 2 (4): 289–308. дои : 10.1145/357401.357403. S2CID  13903321.
  13. ^ Смотерман, Марк. «Каллер-7». Клемсонский университет .
  14. ^ Грохоски, Грегори Ф. (январь 1990 г.). «Машинная организация процессора IBM RISC System/6000» (PDF) . Журнал исследований и разработок IBM . 34 (1): 37–58. дои : 10.1147/rd.341.0037. Архивировано из оригинала (PDF) 9 января 2005 г.
  15. ^ Смит, Джеймс Э .; Сохи, Гуриндар С. (декабрь 1995 г.). «Микроархитектура суперскалярных процессоров» (PDF) . Труды IEEE . 83 (12): 1617. дои : 10.1109/5.476078.
  16. ^ Липтэй, Джон С. (июль 1992 г.). «Проектирование высокопроизводительного процессора IBM Enterprise System/9000» (PDF) . Журнал исследований и разработок IBM . 36 (4): 713–731. дои : 10.1147/rd.364.0713. Архивировано из оригинала (PDF) 17 января 2005 г.
  17. Зиглер, Барт (7 марта 1991 г.). «Unisys представляет мэйнфреймы Top Gun» . АП Новости .
  18. ^ «Новый мэйнфрейм Unisys оставляет большую синеву в пыли» . Блумберг . 25 марта 1991 года. Новый A19 использует «суперскалярные» методы научных компьютеров для одновременного выполнения множества инструкций. A19 может выполнять до 140 операций, что более чем в 10 раз больше, чем у обычных мейнфреймов.
  19. ^ Улла, Наср; Холле, Мэтт (март 1993 г.). «Реализация точных исключений MC88110 в суперскалярной архитектуре» (pdf) . Новости компьютерной архитектуры ACM Sigarch . Motorola Inc. 21 : 15–25. дои : 10.1145/152479.152482. S2CID  7036627.
  20. Смотерман, Марк (29 апреля 1994 г.). «Обзор Motorola MC88110».
  21. ^ Дифендорф, Кейт ; Аллен, Майкл (апрель 1992 г.). «Организация суперскалярного RISC-микропроцессора Motorola 88110» (PDF) . IEEE микро . 12 (2): 40–63. дои : 10.1109/40.127582. S2CID  25668727. Архивировано из оригинала (PDF) 21 октября 2022 г.
  22. ^ Смозерман, Марк; Чавла, Шучи; Кокс, Стэн; Маллой, Брайан (декабрь 1993 г.). «Планирование инструкций для Motorola 88110». Материалы 26-го ежегодного международного симпозиума по микроархитектуре . стр. 257–262. дои : 10.1109/MICRO.1993.282761. ISBN 0-8186-5280-2. S2CID  52806289.
  23. ^ «Техническое описание микропроцессора PowerPC™ 601 RISC» (PDF) . Проверено 23 октября 2022 г.
  24. ^ Мур, Чарльз Р .; Беккер, Майкл С. и др. «Микропроцессор PowerPC 601». IEEE микро . 13 (5). Сентябрь 1993 года.
  25. ^ Дифендорф, Кейт (август 1993 г.). «Микропроцессор PowerPC 601» (PDF) . Горячие чипсы .
  26. ^ Смит, Джеймс Э .; Вайс, Шломо (июнь 1994 г.). «PowerPC 601 и Alpha 21064: история двух RISC» (PDF) . IEEE-компьютер . 27 (6): 46–58. дои : 10.1109/2.294853. S2CID  1114841.
  27. ^ Сима, Дежё (сентябрь – октябрь 2000 г.). «Пространство проектирования методов переименования регистров». IEEE микро . 20 (5): 70–83. CiteSeerX 10.1.1.387.6460 . дои : 10.1109/40.877952. S2CID  11012472. 
  28. ^ [23] [24] [25] [26] [27]
  29. Гвеннап, Линли (28 марта 1994 г.). «NexGen выходит на рынок с 66-МГц Nx586» (PDF) . Отчет микропроцессора . Архивировано из оригинала (PDF) 2 декабря 2021 года.
  30. ^ Берджесс, Брэд; Улла, Наср; Ван Оверен, Питер; Огден, Дин (июнь 1994 г.). «Микропроцессор PowerPC 603». Коммуникации АКМ . 37 (6): 34–42. дои : 10.1145/175208.175212 . S2CID  34385975.
  31. ^ «Техническое описание микропроцессора PowerPC™ 603 RISC» (PDF) . Проверено 27 октября 2022 г.
  32. ^ Песня, С. Питер; Денман, Марвин; Чанг, Джо (октябрь 1994 г.). «Микропроцессор PowerPC 604 RISC» (PDF) . IEEE микро . 14 (5): 8. дои :10.1109/MM.1994.363071. S2CID  11603864.
  33. ^ «SPARC64+: 64-битный процессор SPARC HAL второго поколения» (PDF) . Горячие чипсы .
  34. ^ "Ле Sparc64". Научно-исследовательский институт компьютерных наук и случайных систем (на французском языке).
  35. Гвеннап, Линли (16 февраля 1995 г.). «Intel P6 использует несвязанную суперскалярную конструкцию» (PDF) . Отчет микропроцессора .
  36. ^ Ле, Хунг К. и др. «Микроархитектура IBM POWER6» (PDF) . Журнал исследований и разработок IBM . 51 (6). Ноябрь 2007 г.
  37. ^ Маллиа, Лу. «Высокопроизводительное процессорное ядро ​​Qualcomm и платформа для мобильных приложений» (PDF) . Архивировано из оригинала (PDF) 29 октября 2013 года.
  38. ^ Ананд Лал Шимпи (6 мая 2013 г.). «Раскрыта архитектура Intel Silvermont: серьезно относимся к мобильным устройствам» . АнандТех .
  39. ^ «Внутри модели второстепенного процессора: Табло» . 09.06.2017 . Проверено 9 января 2023 г.
  40. ^ Смит, Дж. Э. (1984). «Компьютерные архитектуры с раздельным доступом и выполнением». Транзакции ACM в компьютерных системах . 2 (4): 289–308. CiteSeerX 10.1.1.127.4475 . дои : 10.1145/357401.357403. S2CID  13903321. 
  41. ^ Куриан, Л.; Хулина, ПТ; Кораор, Л.Д. (1994). «Эффекты задержки памяти в разделенных архитектурах» (PDF) . Транзакции IEEE на компьютерах . 43 (10): 1129–1139. дои : 10.1109/12.324539. S2CID  6913858. Архивировано из оригинала (PDF) 12 июня 2018 г.
  42. ^ Дороевец, Миннесота; Оклобдия, В. (1995). «Многопоточная несвязанная архитектура». Международный журнал высокоскоростных вычислений . 7 (3): 465–480. дои : 10.1142/S0129053395000257.
  43. ^ Кантер, Дэвид (25 сентября 2010 г.). «Микроархитектура Intel Sandy Bridge».
  44. ^ «Внешний интерфейс Haswell - анализ архитектуры Intel Haswell: создание нового ПК и нового Intel» .

дальнейшее чтение