Выбор алгоритма и временных диаграмм выполнения основных операций
Оценим длительность основных операций, имеющих наибольшую встречаемость (вес) и потому определяющих производительность процессора (табл. 3). Будем делать оценку времени выполнения (Т) команды в количестве машинных тактов (Тм).
1. Загрузка (регистр-регистр):
L R1, R2 (R2) = (R1)
0 15
По команде LR производится выборка из регистра второго операнда и запоминание полученного значения в регистре первого операнда, с одновременным уничтожением его исходного содержимого.
RK | BO | ЗР |
------ | ------ | ------ |
Т = 3*Тм
2. Загрузка (память-регистр):
L, R1, D2 (X2, B2)
0 31 {D2+(X2)+(B2)} = (R1)
Команда L производит пересылку полного слова по адресу D2+(X2)+ +(B2) из основной памяти в регистр общего назначения R1.
PK | AO | BO | ЗР |
------ | ------ | ------ | ------ |
Т = 4*Тм + Тп
3. Запоминание (регистр-память):
ST, R1, D2 (X2, B2)
0 31 {D2+(X2)+(B2)} = (R1)
По команде ST содержимое общего регистра R1 помещается в основную память по адресу, который определяется как D2+(X2)+(B2).
PK | BO | ЗР |
------ | ------ | ------ |
Т = 3*Тм + Тп
4. Сложение/вычитание, фиксированная запятая (регистр-регистр):
AR R1, R2 (R1) + (R2) = (R1)
0 15
Для выполнения команды AR содержимое регистра R1 складывается с содержимым регистра R2 и результат помещается в R1.
При выполнении SR от содержимого регистра R1 вычитается содержимое регистра R2 и результат заносится в R1.
PK | AO | BO | ЗР |
------ | ------ | ------ | ------ |
Т = 4*Тм;
5. Сложение/вычитание, фиксированная запятая (регистр-память):
A, R1, D2 (X2, B2)
0 31 R1 + {D2+(X2)+(B2)} = (R1)
По команде А содержимое первого операнда, считываемого из R1, складывается с содержимым второго операнда, находящегося в памяти по адресу D2+(B2)+(X2). Результат помещается в R1.
РК | АО | ВО | ОП | ЗР |
------ | ------ | ------ | ------ | ------ |
Т=5*Тм+Тп;
6. Сложение/вычитание, плавающая запятая (регистр-регистр):
AER R1, R2 (FPR1) + (FPR2) = (FPR1)
0 5
При выполнении команды AER содержимое регистра с плавающей запятой FPR1 складывается с содержимым регистра FPR2 в следующей последовательности: сравниваются (СП) и выравниваются порядки (ВП), отрицательный операнд преобразуется в дополнительный код (ДК), результат операции (ОП) нормализуется (НР) и записывается в FPR1. При выполнении SER из содержимого регистра FPR1 в той же последовательности вычитается содержимое регистра FPR2, результат нормализуется и заносится в FPR1.
PK | BO | СП | ВП | ДК | ОП | НР | ЗР |
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ |
Т = 8*Тм
7. Сложение/вычитание: плавающая запятая, регистр-память:
АЕ, R1, D2 (X2, B2)
0 31 (R1) + {D2+(X2)+(B2)} = (R1)
По команде АЕ содержимое первого операнда, считываемого из регистра с плавающей запятой PPR1, суммируется, в указанном выше порядке, с содержимым второго операнда, находящегося в памяти по адресу D2+(B2)+ +(X2). Результат заносится в FPR1.
РК | АО | ВО | СП | ВП | ДК | ОП | НР | ЗР |
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ |
Т=9*Тм+Тп
8. Умножение, фиксированная запятая (регистр-регистр):
MR R1, R2 (R1+1)*(R2) = (R1)
0 15
Сомножители (слово) находятся в регистрах R2 и R1+1. По команде MR сомножители перемножаются и результат (двойное слово) заносится в R1 и следующий за ним регистр, обозначаемый как R1+1. Используется алгоритм умножения одновременно на 2 разряда множимого. Принимается соотношение коротких и длинных операндов: 80% и 20%.
РК | ВО | ОП | ЗР |
------ | ------ | -------------- | ------ |
Т = 10*Тм*0,8 + 19*Тм*0,2
9. Умножение, плавающая запятая (регистр-регистр):
MER R1, R2 (FPR1) * (FPR2) = (FPR1)
0 15
Содержимое регистра FPR1 (двойное слово) умножается на содержимое регистра FPR2, результат (двойное слово) нормализуется (НР) и помещается в FPR1. Операция суммирования порядков совмещается с операцией перемножения мантисс. Используется алгоритм умножения одновременно на 2 разряда множимого. Принимается соотношение кратких и длинных операндов: 80% и 20%.
PK | BO | ОП | НР | ЗР |
------ | ------ | -------------- | ------ | ------ |
Т=16*Тм*0,8+30*Тм*0,2
10. Деление, фиксированная запятая (регистр-регистр):
DR R1, R2 (R1)/(R2) = (R1, R1+1)
0 15
По команде DR двойное слово в регистре R1 и R1+1 делится на содержимое регистра R2. По окончании выполнения деления частное помещается в R1+1, а остаток – в R1. Применяется алгоритм без восстановления остатка. Принимается соотношение кратких и длинных операндов: 80% и 20%.
PK | BO | ОП | ЗР |
------ | ------ | -------------- | ------ |
Т=19*Тм*0,8+35*Тм*0,2
11. Деление, плавающая запятая (регистр-регистр):
DER R1, R2 (FPR1) / (FPR2) = (FPR1)
0 15
Делимое считывается из FPR1, делитель из FPR2. По окончании выполнения операций частное нормализуется и помещается в FPR1. Принимается соотношение кратких и длинных операндов: 80% и 20%.
Преобразование порядка совмещается с операцией деления.
PK | BO | ОП | НР | ЗР |
------ | ------ | -------------- | ------ | ------ |
Т=28*Тм*0,8+56*Тм*0,2
12, 13. Условный переход
BC, M1, D2 (X2, B2)
0 31 {D2+(X2)+(B2)} = (RPSW)
При выполнении условия (ПУ), содержащегося в поле М1, происходит выбор следующей команды по адресу D2+(X2)+(B2), в противном случае выполняется следующая по порядку команда. При наличии альтернативного буфера команд считаем вероятность нахождения команды в буфере р=0,8.
Успешный переход:
РК | ПУ | ВА | ВК |
------ | ------ | ----- | ------ |
Т = 4*Тм*0,8+Тп*0,2
Неуспешный переход:
РК | ПУ |
------ | ------ |
Т=2*Тм
Т=
14. Операция алгебраического сравнения (регистр-регистр):
СR R1, R2 (R1)/(R2) = (R1, R1+1)
0 15
Команда CR производит сравнение содержимого (R2) и (R1) и устанавливает признак результата в соответствии с этой разностью. Содержимое регистров остается неизменным.
РК | ВО | ОП | ЗР |
------ | ------ | ----- | ------ |
Т=4*Тм
15) Операция сдвига влево/вправо (регистр-память):
SLL R1, D2 (B2)
0 31
Команда SLL производит сдвиг содержимого регистра R1 влево на количество разрядов, указанное как адрес второго операнда. Принимается средневероятное значение сдвига на 3 разряда.
РК | ВА | ВК | ЗР |
------ | ------ | ----------- | ------ |
T = 6*Тм
16) Определим время Тп, исходя из таблицы значений зависимости вероятности обращения к буферной памяти от ее емкости:
Таблица 2
Емкость буферной памяти (Кб) | |||||||
Вероятность обращения (р) | |||||||
Время обращения к памяти будем определять условно в количестве машинных тактов и исходя из следующего выражения:
Тп = р * Тб + (1 – р) * Тц;
где р – вероятность нахождения информации в кэш-памяти;
Тб – цикл обращения буферной памяти;
Тц – цикл обращения основной памяти.