Тракт данных Функционирование памяти Микрокоманды Быстродействие и стоимость двоичный сумматор блок декодирования Кэш-память


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

Прогнозирование ветвлений

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

Единственная проблема состоит в том, что эта модель совершенно нереалистична. Программы вовсе не являются линейными кодами. В них полно команд переходов. Рассмотрим простые команды листинга 4.4. Переменная i сравнивается с 0 (вероятно, на практике это самое распространенное сравнение). В зависимости от результата другой переменной, к, присваивается одно из двух возможных значений.

Возможный вариант трансляции на язык ассемблера показан в листинге 4.5. Язык ассемблера мы будем рассматривать позже в этой книге, а сейчас достаточно знать, что программа, более или менее похожая на программу из листинга 4.5, вполне возможна. Первая команда сравнивает переменную i с нулем. Вторая совершает переход к предложению El se, если i не равно 0. Третья команда присваивает значение 1 переменной к. Четвертая команда выполняет переход к следующему оператору программы. Компилятор поместил там метку Next. Пятая команда присваивает значение 2 переменной к.

Листинг 4.5. Программа из листинга 4.4 после трансляции на язык ассемблера

сравнение i с 0

переход к Else, если они не равны присваивание значения 1 переменной к безусловный переход к Next присваивание значения 2 переменной к

CMP i. о BNE Else Then: MOV k. 1 BR Next Else: MOV k, 2 Next:

Мы видим, что две из пяти команд являются командами перехода. Более того, одна из них, BNE, — это команда условного перехода (переход, который осуществляется тогда и только тогда, когда выполняется определенное условие, в данном случае — это равенство двух операндов предыдущей команды СМР). Самый длинный линейный код состоит здесь из двух команд, поэтому очень трудно организовать высокоскоростной конвейер.

На первый взгляд может показаться, что безусловные переходы, например, команда BR Next в листинге 4.5, не влекут за собой никаких проблем. Вообще говоря, в данном случае нет никакой двусмысленности в том, куда дальше идти. Почему же блок выборки команд не может просто продолжать считывать команды с целевого адреса (то есть с того места, куда осуществляется переход)?

Сложность объясняется самой природой конвейера. На рис. 4.24, например, мы видим, что декодирование происходит на второй ступени. Следовательно, блоку выборки команд приходится решать, откуда вызывать следующую команду еще до того, как он узнает, команду какого типа он только что вызвал. Только в очередном цикле он сможет выяснить, что получил команду безусловного перехода, хотя еще до этого он вызывает команду, следующую за командой безусловного перехода. То есть в значительной части конвейеризированных машин (например, UltraSPARC III) сначала выполняется команда, следующая после команды безусловного перехода, хотя по логике вещей так быть не должно. Позиция после перехода называется слотом отсрочки (delay slot). Pentium II (а также машина, используемая в листинге 4.5) не поддерживают слот отсрочки, а обойти эту проблему путем внутреннего усложнения часто сложно. Оптимизирующий компилятор постарается найти какую-нибудь полезную команду, чтобы поместить ее в слот отсрочки, но часто ничего подходящего нет, поэтому компилятор вынужден вставлять туда команду NOP. Хотя программа остается корректной, объем ее растет и работает она медленнее.

DMA (Direct Memory Access) Прямой Доступ к Памяти. Открывает доступ к памяти напрямую, не загружая центральный процессор. Это ускоряет работу устройства, передачу данных, и снимает значимую часть нагрузки с процессора.
Уровень микроархитектуры Тракт данных — это часть центрального процессора Adobe Photoshop редактор для работы с графикой