Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
86
Добавлен:
10.05.2014
Размер:
1.71 Mб
Скачать
    1. Организация памяти данных

Память данных, как и память программ, может наращиваться до 64 Кб.

Младшие 32 байта памяти данных рассматриваются, как 4 банка регистров общего назначения по 8 регистров в каждом. Текущий банк определяется словом состояния программы (PSW).

Следующие 16 байт могут рассматриваться, как единое большое слово в 128 бит, доступ в каждый бит этого слова независим.

Следующие байты не несут никаких специфических функций (вплоть до 127 байта).

В архитектуре процессора предусмотрен набор специальных регистров (Special Function Registers), адреса которых находятся в области 128-256 байт.

      1. Подключение внешней памяти данных

Вариант подключения внешней памяти данных представлен на рисунке

Здесь используется прямая, косвенная, регистровая и непосредственная адресация.

ADD A, R7 регистровая адресация

ADD A, 35h прямая адресация

ADD A, #15 непосредственная адресация

ADD A,@R0 косвенная адресация

    1. Система синхронизации

Как правило, в системе синхронизации используется внутренний генератор.

Цикл команды состоит их целого числа машинных циклов. В течение машинного цикла процессор проходит через шесть состояний (S1, S2, …, S6). Каждое состояние длится два такта (P1, P2). Таким образом, машинный цикл реализуется за 12 тактов, следовательно время выполнения машинного цикла равно 1 мкс.

Большинство команд выполняется за 1 мкс, некоторые команды выполняются за 2 мкс, команды MUL и DIV выполняются за 4 мкс.

  1. Межкомандные зависимости

Влияние конфликтов на производительность конвейера оценивают с помощью среднего количества тактов на инструкцию (CPI).

CPI = CPI1 - идеальный конвейер (1 такт на команду)

Прибавки к этой величине осуществляются за счет конфликтов (блокировок)

CPI = CPI1 + Sст + Sд + Sупр = CPI1 + Sст + Sraw + Swar + Swaw + Sупр

Sд = Sraw + Swar + Swaw

Sст - структурные конфликты

Sд - конфликты по данным

Sупр - конфликты по управлению

Оценивая все эти составляющие, можем подобрать наиболее эффективные методы для уменьшения влияния конфликтов.

Причиной конфликтов является взаимозависимость команд.

Если есть зависимость между командами - параллельно они выполняться не могут.

Параллельные команды (IPL) - команды, которые могут выполняться одновременно.

Существует 3 типа зависимостей:

  • по данным

  • по именам

  • по управлению

Зависимости по данным:

Условие возникновения зависимости: i-ая команда вырабатывает результат для более поздней j-ой команды. Зависимость такого рода заложена исходном тексте программы. Ее нельзя убрать. Но блокировки из-за этих зависимостей можно снизить. Этой зависимостью вызывается конфликт RAW (чтение после записи). Этот конфликт определяет верхнюю границу пересечения во времени команд в конвейере.

Обнаружение зависимостей: Если конфликт связан с обращением в регистр - обнаружить его легко. Но есть сложности обнаружения такого конфликта когда идет обращение к ячейкам памяти, в связи с большим количеством способов обращения к этой ячейке

Зависимость по именам:

Условие возникновения зависимости: две команды используют одно и то же имя операнда, но при отсутствии передачи данных между ними. Существует 2 типа зависимостей:

  1. Антизависимость - зависимость, которая вызывает конфликт WAR (запись после чтения).

  2. Зависимость по выходу - вызывает конфликт WAW (запись после записи).

Конфликты по именам не носят принципиального характера и они устраняются с помощью метода переименования регистров. Этот метод может быть реализован программно - на уровне компиляции. Возможно использования аппаратных средств для переименования. Иногда переименование выполняется с помощью архитектурных регистров, может использоваться специальная группа регистров - регистры переименования, которые из программ не доступны.

Пример:

Конфликтная ситуация:

1) ADD R1,R2,R3

2) SUB R2,R3,R4

3) AND R5,R1,R2

4) OR R1,R2,R4

1) и 2) - антизависимость, блокировка WAR

1) и 3) - зависимость по данным RAW

1) и 4) - зависимость по выходу WAW

Устраним этот конфликт:

1) и 2) - в SUB писать не в R2, а например в R6, но все следующие команды, которые тоже используют R2 должны быть изменены.

1) ADD R1,R2,R3

2) SUB R6,R3,R4

3) AND R5,R1,R6

4) OR R1,R3,R4

1) ADD R7,R2,R3

2) SUB R6,R3,R4

3) AND R5,R7,R6

4) OR R1,R3,R4