Современные высокопроизводительные компьютеры
Затем мы обсудим современные технологии компиляторов, используемые для увеличения степени параллелизма уровня команд. Для начала запишем выражение, определяющее среднее количество тактов для выполнения команды в конвейере: CPI конвейера = CPI идеального конвейера + + Приостановки из-за структурных конфликтов + + Приостановки из-за конфликтов типа RAW + + Приостановки из-за конфликтов типа WAR + + Приостановки из-за конфликтов типа WAW + + Приостановки из-за конфликтов по управлению CPI идеального конвейера есть не что иное, как максимальная пропускная способность, достижимая при реализации. Уменьшая каждое из слагаемых в правой части выражения, мы минимизируем общий CPI конвейера и таким образом увеличиваем пропускную способность команд. Это выражение позволяет также охарактеризовать различные методы, которые будут рассмотрены в этой главе, по тому компоненту общего CPI, который соответствующий метод уменьшает. На рис. 6.1 показаны некоторые методы, которые будут рассмотрены, и их воздействие на величину CPI. Прежде, чем начать рассмотрение этих методов, необходимо определить концепции, на которых эти методы построены. Параллелизм уровня команд: зависимости и конфликты по данным Все рассматриваемые в этой главе методы используют параллелизм, заложенный в последовательности команд. Как мы установили выше этот тип параллелизма называется параллелизмом уровня команд или ILP. Степень параллелизма, доступная внутри базового блока (линейной последовательности команд, переходы из вне которой разрешены только на ее вход, а переходы внутри которой разрешены только на ее выход) достаточно мала. Например, средняя частота переходов в целочисленных программах составляет около 16%. Это означает, что в среднем между двумя переходами выполняются примерно пять команд. Поскольку эти пять команд возможно взаимозависимые, то степень перекрытия, которую мы можем использовать внутри базового блока, возможно будет меньше чем пять. Чтобы получить существенное улучшение производительности, мы должны использовать параллелизм уровня команд одновременно для нескольких базовых блоков.
|