|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Суперскалярность и внеочередное выполнение командУ полноценной конвейеризации, более или менее эффективно обходящей перечисленные выше проблемы, есть одно несомненное достоинство: она настолько сложна, что, единожды реализованная, позволяет легко построить на ее основе целый ряд интересных новшеств. Для начала заметим, что коль уж есть очереди готовых к выполнению команд и известны взаимозависимости между ними по данным, есть техника переименования регистров, позволяющая разным командам одновременно задействовать одни и те же регистры для разных целей, и, наконец, есть надежно работающая система сброса конвейера, то можно: запускать на исполняющие устройства сразу несколько команд (если они не зависят друг от друга и могут быть безболезненно выполнены одновременно); переупорядочивать независящие друг от друга команды так, как это необходимо (этот подход назвали внеочередное выполнение команд - Out-of-Order). Техника переупорядочивания и внеочередного выполнения команд ослабляет негативные эффекты от медленной оперативной памяти и от наличия зависимых цепочек команд. Реализация внеочередного выполнения команд - это всего лишь усложнение схемы планировщиков, запускающих готовые к исполнению команды на исполнительные устройства в другом порядке, нежели они на планировщики поступили, плюс усложнение схем сброса конвейера и сохранения полученных результатов: результат выполнения прошедших вне очереди команд все равно должен сохраняться в последовательности, строго соответствующей расположению команд в изначальной программе (если случится какая-то ошибка, то результаты выполнения запущенных вне очереди команд придется аннулировать). Для того, чтобы обеспечить эффективное использование большого количества специализированных исполнительных устройств (например, 4-6 команд в течение одного такта) необходимо иметь и соответствующую производительность подсистемы подготовки команд (Front-end процессора) для выполнения (например, 4 команд за такт). Ядра процессоров, в которых обеспечивается генерация (подготовка к выполнению) нескольких команд за такт, называют суперскалярными. В ядрах современных процессоров на выполнение в исполнительные устройства выдаются внутренние упрощенные команды. На этом этапе развития различия между RISC- и CISC-процессорами почти стираются - просто у ядер RISC-процессоров декодер, превращающий исходные архитектурные команды в содержимое очередей планировщиков, устроен гораздо проще, чем декодер, дешифрирующий хитро упакованные команды CISC-архитектуры. Т. е., фактически все ядра современных CISC-процессоров "в глубине души" являются полноценными ядрами типа RISC-процессоров - ведь исходные программы они в любом случае преобразуют «на лету» во внутреннее RISC-подобное представление. Правда, разной сложностью декодеров дело не ограничивается: все-таки классическую RISC-программу не только проще преобразовывать, но и результирующая внутренняя программа из него получается лучше - планировщикам гораздо легче его обрабатывать (в ней меньше зависимостей и операций с оперативной памятью).
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |