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