Э. Таненбаум - Архитектура компьютера (1127755), страница 92
Текст из файла (страница 92)
д. М)с-1 — это простая машина с программным управлением, последовательным выполнением команд и полным отсутствием параллелизма. М1с-4, напротив, является микроархитектурой с высокой степенью параллелизма и 7-ступенчатым конвейером. Производительность компъютера можно повысить несколькими способами, основным из которых является использование кэш-памяти. Кэш-память прямого отображения и ассоциативная кэш-память с множественным доступом позволяют ускорить обращения к памяти. Помимо использования кэш-памяти, применяют прогнозирование ветвлений (как статическое, так и динамическое), выполнение с изменением последовательности операций и спекулятивное выполнение команд.
Наши три процессора, Репг1пш 4, 1)!ггаЗРАВС П1 и 8051, рассматриваемые в качестве примеров, похожи в том плане, что их микроархитектуры неочевидны для программистов, пишущих на языке ассемблера архитектурного уровня. Репг1пш 4 реализует сложную схему преобразования 18А-команд в микрооперации, их кэширования, передачи суперскалярному ИВС-ядру для выполнения вне исходной последовательности, подмены регистров и применения всех остальных описанных в этой книге трюков, позволяющих разогнать оборудование до максимально возможной скорости.
Что же касается процессора П)~гаЯРАВС П1 Сп, то, если не считать многоступенчатого конвейера, его микроархитектура достаточно проста запуск и выполнение команд, а также получение их результатов осуществляются без изменения последовательности команд. Процессор 8051 прост до крайности — к одной основной шине подключено несколько регистров и одно АЛУ. Вопросы и задания 1. На рис. 4.5 регистр шины В кодируется через 4-разрядное поле, а шина С представлена в виде битового отображения.
Почемуу 2. На рис. 4.5 есть блок «Старший бит». Нарисуйте его схему. 3. Когда в микрокоманде установлено поле )МРС, регистр МВй соединяется операцией ИЛИ с полем БРЕХТ АП1ЖЕБЯ, чтобы получить адрес следующей микрокоманды. Существуют ли такие обстоятельства, при которых име- Вопросы и задания 369 ет смысл использовать поле ТМРС, если в ХЕХТ АГ)ОВЕЯВ находится зна- чение Ох1ЕЕ7 4.
Предположим, что в листинге 4.1 после оператора Н имеется следующий оператор: Каким будет новый ассемблерный код при условии, что компилятор является оптимизирующим7 5. Напишите два разных варианта трансляции для 11Ъ'М следующего оператора на языке 0ача: 1=г~-п+б: 6. Напишите на языке 0ача оператор, ставший источником следующего кода для 1~Ъ'М: 10ОВО 1 1ЕОВО Ь 150В В1Р05Н б 150В ООР 1ЯОО 15ТОВЕ 1 7. В этой главе мы упомянули, что при трансляции показанного ниже оператора в двоичную форму метка Е2 должна находиться среди младших 256 слов управляющей памяти: 11 (1) доте 01; е1зе дото 02 А может ли метка Е1 находиться, скажем, в ячейке с адресом Ох40, а Е2— в ячейке с адресом Ох1407 Объясните, почему.
8. В микрокоманде 1В свре93 микропрограммы для М1с-1 значение регистра МРК копируется в регистр Н, а в следующей строке от него отнимается значение регистра ТОК. Казалось бы, это удобнее записать в одном операторе: ьт саредз 1-МОР-105; гд Почему этого не делают7 9. Сколько времени потребуется машине М1с-1, которая работает на частоте 2,5 ГГц, на выполнение следующего Тача-оператора: 1=з+г: Ответ дайте в наносекундах. 10.
Аналогичный вопрос только уже для машины М1с-2, тоже работающей на частоте 2,5 ГГц. Опираясь на полученный результат, ответьте, сколько времени займет выполнение программы на машине МТс-2, если эта программа выполняется на машине МТс-1 за 100 нс7 11. Напишите микропрограмму для МТс-1, чтобы реализовать 1ЧМ-команду РОРТИО. Эта команда удаляет два верхних слова из стека. 370 Глава 4.
Уровень микроархитектуры 18. Вернитесь к предыдущему вопросу. Существуют ли такие состояния, которые 19. Нарисуйте конечный автомат для прогнозирования ветвлений, более падеж 20. Сдвиговый регистр, изображенный на рис. 4.18, имеет максимальную емкость 6 байт. Можно ли сконструировать блок выборки команд с 5-байтным сдвиговым регистром? А с 4-байтным? 21, Предыдущий вопрос связан с удешевлением блока выборки команд. Теперь рассмотрим вопрос его удорожания. Может ли когда-нибудь понадобиться сдви- 12. 13.
14. 15. 16. 17. На машине 1'1гМ существуют специальные однобайтные коды операций для загрузки в стек локальных переменных от 0 до 3, которые используются вместо обычной команды 1ЕОАО. Какие изменения нужно внести в машину 11 тгМ, чтобы наилучшим образом использовать эти команды? Команда 15НЙ (целочисленный арифметический сдвиг вправо) поддерживается в ) УМ, но не поддерживается в 1)Ъ'М. Команда извлекает два верхних слова из стека и заменяет их одним словом (результатом).
Второе сверху слово стека — это сдвигаемый операнд. Он сдвигается вправо на значение от 0 до 31 включительно, в зависимости от значения пяти самых младших битов верхнего слова в стеке (остальные 27 бит игнорируются). Знаковый бит дублируется вправо на столько же битов, на сколько осуществляется сдвиг. Код операции для команды 15НН равен 122 (Ох7А). Команда 15НЕ (целочисленный сдвиг влево) поддерживается в 1"т'М, но не поддерживается в 1) Ъ'М. Команда извлекает два верхних слова из стека и заменяет их одним значением (результатом). Второе сверху слово в стеке — сдвигаемый операнд.
Он сдвигается влево на значение от 0 до 31 включительно, в зависимости от значения пяти младших битов верхнего слова в стеке (остальные 2 бит верхнего слова игнорируются). Нули сдвигаются влево на столько же битов, на сколько осуществляется сдвиг. Код операции 15НЕ равен 120 (Ох78). Э'т'М-команде 1НУОКЕЛНТОАЕ нужно знать, сколько у нее параметров. Зачем? Реализуйте ЯЪ'М-команду ОЕОАО для М(с-2. Эта команда содержит однобайтный индекс и помещает локальную переменную, находящуюся в этом месте, в стек. Затем она помегцает следующее старшее слово в стек.
Нарисуйте конечный автомат для учета очков при игре в теннис. Правила игры в теннис следуюгцие. Чтобы выиграть, вам нужно получить как минимум 4 очка и у вас должно быть как минимум на 2 очка больше, чем у вашего соперника. Начните с состояния (О, 0), то есть с того, что ни у кого из вас еще нет очков. Затем добавьте состояние (1, 0), означающее, что игрок А получил очко. Ребро от состояния (О, 0) к состоянию (1, 0) обозначьте буквой А. Затем добавьте состояние (О, 1), чтобы показать, что игрок В получил очко, а ребро к состоянию (О, 1) обозначьте буквой В. Продолжайте добавлять состояния и ребра до тех пор, пока не нарисуете все возможные состояния. можно безболезненно удалить, никак не повлияв на результат любой игры? Если да, то какие из них эквивалентны? ный, чем тот, который изображен на рис.
4.29. Он должен изменять прогноз только после трех последовательных неудачных прогнозов. Вопросы и задания 371 говый регистр большей емкости, скажем, на 12 байт? Если да, то почему? Ес- ли нет, то почему? 22. В микропрограмме для микроархитектуры М1с-2 микрокоманда 11 1саред6 выполняет переход к Т, если бит Х установлен в 1. Однако микрокоманда Т та же, что и для до1о1. А можно ли перейти к до1о1 сразу, и станет ли машина работать быстрее после этого? 23. В микроархитектуре М1с-4 блок декодирования отображает 11Ъ'М-код опера- ции в индекс ПЗУ, где хранятся соответствующие микрооперации. Кажется, что было бы проще опустить ступень декодирования и сразу передать 11Ъ'М-код операции в очередь.
Тогда можно использовать 11УМ-код операции в качестве индекса в ПЗУ микроопераций, точно так же, как в микроархитектуре М1с-1. Что не так в этом плане? 24. Компъютер содержит двухуровневую кэш-память. Предположим, что 60 Ж обра щений к памяти — это кэш-попадания в кэш-память первого уровня, 35?«вЂ” в кэш-память второго уровня, а 5 «« — это кэш-промахи. Время доступа составляет 5, 15 и 60 нс соответственно, причем время доступа в кэш-память второго уровня и в основную память отсчитывается с того момента, как становится известно, что соответствующая память нужна (например, доступ к кэш-памяти второго уровня не может начаться, пока не произойдет кэш-промах при поиске в кэш-памяти первого уровня). Каково среднее время доступа? 25.
В конце подраздела «Кэш-память» в разделе «Повышение производительно- сти» было отмечено, что заполнение по записи выгодно только в том случае, если имеют место повторные записи в одну и ту же строку каша. А если после записи следуют многочисленные считывания из одной и той же строки? Будет ли полезным заполнение по записи в этом случае? 26. В черновом варианте этой книги на рис. 4.27 вместо 4-входовой ассоциатив- ной кэш-памяти была изображена 3-входовая ассоциативная кэш-память. Один из рецензентов заявил, что читателей это может смутить, поскольку 3— это не степень двойки, а компьютеры все делают в двоичной системе. Поскольку потребитель всегда прав, рисунок изменили на 4-входовую ассоциативную кэш-память.
Был ли рецензент прав? Аргументируйте. 27. Компьютер с пятиступенчатым конвейером после обработки условного пере- хода простаивает следующие три цикла. Насколько этот простой снизит производительность, если 20 Ж команд являются командами условного перехода? Другие причины простоя не учитывайте. 28. Предположим, что компьютер вызывает до 20 команд заранее. В среднем 4 из этих них являются командами условного перехода, причем вероятность правильного прогноза каждого составляет 90?«.
Какова вероятность, что предварительно вызванная команда находится на одном из правильных путей? 29. Предположим, что нам пришлось изменить структуру машины, представлен ную с помощью табл. 4.11, чтобы использовать 16 регистров вместо 8. Тогда мы изменим команду 6, чтобы регистр К8 стал целевым. Что в этом случае будет происходить в циклах, начиная с цикла 6? 372 Глава 4. Уровень микроархитектуры 30. Обычно взаимозависимости затрудняют работу конвейеризированных процессоров. Можно ли что-нибудь сделать с Ъ'АЪЧ-взаимозависимостью, чтобы улучшить положение вещей? Какие существуют средства оптимизации г 31.
Перепишите интерпретатор М1с-1 таким образом, чтобы регистр ЬЪ' указывал на первую локальную переменную, а не на связующий указатель. 32. Напишите моделирующую программу для одновходовой кэш-памяти прямого отображения. Сделайте число элементов и длину строки параметрами программы. Поэкспериментируйте с этой программой и представьте полученные результаты.
Глава 5 Уровень архитектуры набора команд Программа на языке С Программа на языке РОЯТЯАГ«' 90 Программа на языке РОНТЙАМ 90, скомпилированная в машинные команды Программа на языке С, скомпилированная в машинные команды Программное обеопечение Уровень архитектуры набора команд Аппаратное обеспечение Программа из машинных команд выполняется микропрограммой или аппаратным обеспечением Аппаратное обеспечение Рис. бли Уровень архитектуры набора команд — ето промежуточное звено между компиляторами и аппаратным обеспечением В этой главе подробно обсуждается уровень архитектуры набора команд (15А).
Как показано на рис. 1.2, он расположен между уровнями микроархитектуры и операционной системы. Исторически этот уровень развился прежде всех остальных уровней и изначально был единственным. В наши дни этот уровень очень часто называют «архитектурой» машины, а иногда (что неправильно) — «языком ассемблера». Уровень архитектуры набора команд имеет особое значение: он является связующим звеном между программным и аппаратным обеспечением. Конечно, можно было бы сделать так, чтобы аппаратное обеспечение непосредственно выполняло программы, написанные на С, Сч-+, 1ача или других языках высокого уровня, но это не очень хорошая идея. Преимущество компиляции перед интерпретацией было бы тогда потеряно.