1: Алгоритм Тамасуло Разработан в компании IBM в начале 80-ых годов. Первоначально использовался в вещественном сопроцессоре IBM 360/92. Это алгоритм динамического планирования инструкций, позволяет исполнять инструкции в порядке отличном от программного. При одновременном исполнении двух и более инструкций позволяет разрешить RAW, и устранить WAR и WAW конфликты
2: Алгоритм Тамасуло Разрешение конфликтов RAW происходит за счет запуска инструкции, только когда готовы ее операнды. Устранение WAR и WAW конфликтов происходит за счет переименования регистров с использованием станций резервирования (Reserve Station). RS используются для хранения операндов инструкции и воссоздания графа зависимостей по данным между инструкциями, которые находятся в исполнении.
3: Схема процессора для реализации алгоритма Тамасуло
4: Состав процессора Очередь планирования (Instruction queue)ОП Регистровый файл (FP Registers) РФ Станции резервирования (Reserve Station) СР Простое вещественное устройство (FP adder) Сложное вещественное устройство (FP Muliplier) Общая шина данных (Common Data Bus)ОШД Устройство вычисление адреса (Address Unit) Буфера загрузки (Load buffer) Буфера сохранения (Store buffer) Устройство работы с памятью (Memory Unit).
5: Схема процессора для реализации алгоритма Тамасуло
6: Этапы исполнения инструкции
7: Устройство СР Состоит из двух дескрипторов операндов. Дескриптор операнда содержит значение операнда или ссылку, если значение операнда на момент планирования еще не вычислено. Ссылка - это номер СР, который содержит инструкцию вычисляющую данный операнд.
8: Планирование инструкций Выборка с вершины ОП. Выборка происходит по 1 инструкции за такт. Выборка осуществляется в программном порядке, так как очередь FIFO Декодирование. Назначение на исполнительное устройство. Если все СР устройства заняты, то инструкция возвращается в ОП и ожидает освобождения RS. Выборка операндов. Если операнды вычислены, то они выбираются из РФ, если нет то в дескрипторах СР устанавливается ссылки на другие СР.
9: Ожидание готовности операндов, исполнение, сохранение результатов Инструкция ожидает в СР до тех пор, пока не будут вычислены все ее операнды и записаны в соответствующие дескрипторы. Передача вычисленного операнда происходит по ОШД вместе с номером СР, который его содержал. Каждая СР слушает ОШД и сравнивает значение номер передаваемого по ней СР с ожидаемым. Если номера совпадает то она забирает значение операнда с ОШД. Передаваемые по ОШД данные сохраняются в РФ. Если все операнды находятся СР, то инструкция отправляется на исполнение.
10: Обработка инструкций загрузки и сохранения. Инструкция загрузки: Вычисление адреса Выполнение загрузки по адресу Инструкция сохранения: Вычисление адреса Ожидания готовности операнда. Выполнение сохранения по адресу. Буфер загрузки: поле адреса. Буфер сохранения: поле адреса, СР для операнда.
11: Порядок исполнения инструкций загрузки и сохранения. Определяется наличием зависимостей между инструкциями по ячейкам памяти. Адреса ячеек вычисляются на первом этапе. Инструкция загрузки ожидает завершения всех предшествующих инструкций сохранения по данному адресу. Инструкция сохранения ожидает завершения всех предшествующих инструкций загрузки и сохранения по данному адресу.
12: Файл переименования Находиться в РФ. Содержит имена переименованных регистров. Состоит из двух полей: Если значение находиться в регистре, то ссылка равна нулю, если нет то ссылка указывает на СР, которая его вычислит.
13: Пример 1 1. L. D F6,34(R2) 2. L. D F2,45(R3) 3. MUL. D F0,F2,F4 4. SUB. D F8,F2,F6 5. DIV. D F10,F0,F6 6. ADD. D F6,F8,F2
14: Обозначения Op — операция, которая будет выполняться Vj, Vk— готовые значения операндов. Qj, Qk— ссылка на СР, на которой будет рассчитан соответствующий операнд. Значение «0» – данные записаны в Vj или Vk соответственно. Busy — флаг занятости. Issue — стадия планирования инструкции. Complete — стадия выполнения и завершения выполнения. Result — стадия сохранения результата
15: Такт 0
16: Такт 1
17: Такт 2
18: Такт 3
19: Такт 4
20: Такт 5
21: Такт 6
22: Такт 7
23: Такт 8
24: Такт 9
25: Такт 10
26: Такт 11
27: Такт 12
28: Такт 15
29: Такт 16
30: Такт 56
31: Такт 57
32: Пример 2 1. L. D F6,34(R2) 2. L. D F2,45(R3) 3. MUL. D F0,F2,F4 4. SUB. D F8,F2,F6 5. DIV. D F10,F0,F6 6. ADD. D F6,F8,F2
33: Такт 0
34: Такт 4
35: Такт 5
36: Такт 6
37: Такт 7
38: Такт 8
39: Такт 9
40: Такт 15
41: Такт 16
42: Такт 17
43: Такт 18
44: Такт 19
45: Такт 20
46: Такт 21
47: Такт 57
48: Такт 58
49: Общее описание алгоритма
50: Достоинства и недостатки алгоритма. Достоинства: Повышение пропускной способности Уменьшение времени простоя процессора Недостатки Большие аппаратные затраты на реализацию дополнительных устройств.
51: Пример задачи Дано: C 3A 4 B Р-р R1 соответствует A Р-р R2 соответствует B Р-р R3 соответствует C