>При этом, при суперскалярности специализация станков постоянна. Я правильно уловил?
>При конвеерности специализация станков строго не фиксированна
вовсе нет, суперскалярность это и есть конвеерность, подразумевает наличие конвеера с предсказателем переходов, а epic это конвеерность без планировщика, подразумевается, что команды уже заранее распараллелены компилятором
суперконвеерная архитектура - это, когда несколько одинаковых конвееров (для увеличения общей производительности).
современные процессоры могут в идеале до 20 (или около того) команд одновременно выполнять (взависимости от длины конвеера, количества конвееров и характеристик поступающего потока команд) //явное сходство с вниманием человека, который может одновремено около 7 параметров отслеживать//
специализация есть на уровне блоков (как на заводе цеха), напр блок вычисления целых чисел, блок для чисел с плавающей точкой, блок mmx, блок sse, итд
к чему я это? а! вот про эту цитату:
>можно получить свободу чувствовать и приближение развилки событийных ветвей, и >способность выбирать не первый попавшийся вариант событий!
похоже на предсказатель переходов!
nexus (#43, 2005-06-05, 20:51:33 )
rezuq,
Давай несколько вернёмся к началу нашего разговора и попытаемся ещё раз более детально остановиться на понятиях, стараясь всё-таки отыскать точки соприкосновения с повседневной реальностью. Дабы мы оба, как впрочем и все остальные, имели общее представление о конвейерности и суперскалярности, я поискал в сети материал и несколько оптимизировал его. Вот что мне удалось получить в результате кройки и шитья. :)
-----------------------------------------------------------------------------------------------------------------------------------------------------------
“Конвейерность и суперскалярность“.
Для повышения скорости работы процессора каждый этап выполняется специализированным блоком процессора. Чтобы уменьшить число простоев, следующую команду загружают в процессор и начинают выполнять не дожидаясь окончания выполнения предыдущих - это и есть конвейеризация.
Конвейеризация вычислений – это когда каждая последующая команда начинает выполняться сразу же после прохождения первой ступени конвейера предыдущей командой. Под конвейером в данном случае понимается такой метод внутренней обработки команд, когда исполнение команды разбивается на несколько ступеней (Stages) и каждой ступени соответствует свой модуль в структуре CPU. По очередному тактовому импульсу каждая команда в конвейере продвигается на следующую ступень, при этом выполненная команда покидает конвейер, а новая поступает в него.
При этом каждая команда может выполняться довольно долго, но за счет одновременного выполнения нескольких команд (находящихся на разных стадиях обработки их процессором) общая скорость работы процессора повышается по сравнению с последовательным выполнением команд во столько раз, сколько команд умещается в конвейере; это число называется “глубиной конвейеризации” или “длиной конвейера“. В результате мелкого разбиения выполнения команды на подэтапы удается повысить тактовую частоту процессора (т.е. частоту, с которой процессор “заглатывает“ на выполнение очередную команду).
Конвейерную обработку можно сравнить с работой грузчиков, стоящих в “цепочке“ и передающих из рук в руки упаковки с продуктами. В этом случае процесс погрузки (разгрузки) существенно ускоряется по сравнению с тем, когда каждый грузчик бегает с отдельной упаковкой к месту их складирования. Процессоры, имеющие несколько конвейеров, называются суперконвейерными, а имеющие несколько ступеней - суперскалярными. В простейшем случае можно разложить выполнение каждой команды на несколько этапов:
1. Считывание команды;
2. Распознавание команды;
3. Подготовка аргументов;
4. Выполнение операции, заложенной в команде;
5. Запись результатов.
Каждая из этих операций тоже может быть разложена на несколько: так считывание команды состоит из отправки запроса в подсистему памяти и получения ответа. Подготовка аргументов, если аргументом является ячейка памяти, может потребовать дополнительного считывания данных.
Подобная система хороша лишь при отсутствии нарушений последовательного выполнения кода - операторов перехода и аппаратных прерываний. Попытка организовать конвейерную обработку команд натыкается на конфликт разных команд, находящихся в конвейере, при доступе к одинаковым устройствам (в полной мере это проявляется в суперскалярной архитектуре).
Читать дальше