|
Тема 6.4. Процесс ассемблирования⇐ ПредыдущаяСтр 18 из 18 В результате изучения данной темы Вы будете:
Поскольку программа на языке ассемблера состоит из ряда операторов, на первый взгляд может показаться, что ассемблер сначала должен читать оператор, затем компилировать его на машинный язык и, наконец, переносить полученный машинный язык в файл, а соответствующий кусок листинга – в другой файл. Этот процесс будет повторяться до тех пор, пока вся программа не будет откомпилирована. Но, к сожалению, такая стратегия не работает. Рассмотрим ситуацию, где первый оператор – переход к метке L. Ассемблер не может ассемблировать это оператор, пока не будет знать адрес L, а L, в свою очередь, может находиться где-нибудь в конце программы, и тогда ассемблер не сможет найти этот адрес, не прочитав всю программу. Эта ситуация называетсяпроблемойопережающей ссылки, поскольку символ L используется еще до того, как он определен (то есть было сделано обращение к символу, определение которого появится позднее). Проблему опережающих ссылок можно разрешать двумя способами. Во-первых, ассемблер действительно может прочитать программу дважды. Каждое прочтение исходной программы называетсяпроходом, а компилятор, который читает исходную программу дважды, называетсядвухпроходным компилятором. На первом проходе собираются и сохраняются в таблице все определения символов, в том числе метки. К тому времени как начнется второй проход, значения символов уже известны, поэтому никакой опережающей ссылки не будет, и каждый оператор можно читать и ассемблировать. При этом требуется дополнительный проход по исходной программе, но зато такая стратегия относительно проста. При втором подходе к решению этой проблемы, программа на языке ассемблера читается один раз и преобразуется в промежуточную форму, и эта промежуточная форма сохраняется в таблице в памяти. Затем совершает второй проход, но уже не по исходной программе, а по таблице. Если физической памяти достаточно для этого подхода, то будет сэкономлено время, затрачиваемое на процесс ввода-вывода. Если требуется вывести листинг, тогда нужно сохранить полностью исходное выражение, включая комментарии. Если листинг не нужен, то промежуточную форму можно сократить, оставив только «голые» команды. Еще одна задача первого прохода – сохранить все макроопределения и расширить вызовы по мере их появления. Следовательно, в одном проходе происходит и определение символов, и расширение макросов. Подведем итоги Для компиляции программы недостаточно замены команд языка программирования на машинный код – необходимо отслеживать метки и макровызовы. Для этого применяют двухпроходовую стратегию. Вопросы для самоконтроля 1. Можно ли следующую программу ассемблировать в два прохода? А EQU B В EQU C С EQU D D EQU 4 2. Подумайте, как можно поместить макроассемблер в бесконечный цикл? 3. Что значит проход компилятора? Объясните смысл каждого прохода. Раздел 7. Архитектуры компьютеров параллельного действия Скорость работы компьютеров становится все выше, но и требования, предъявляемые к ним, тоже постоянно растут. Если говорить коротко, насколько бы мощными ни были компьютеры, этого никогда не хватает для решения многих задач (особенно научных, технических и промышленных). Скорость работы тактовых генераторов постоянно повышается, но скорость коммутации нельзя увеличивать бесконечно. Главной проблемой остается скорость света, и заставить протоны и электроны перемещаться быстрее невозможно. Наконец, поскольку размеры транзисторов постоянно уменьшаются, в какой-то момент времени каждый транзистор будет состоять из нескольких атомов, поэтому основной проблемой могут стать законы квантовой механики. Чтобы решать более сложные задачи, разработчикам приходится разрабатывать все новые и новые вычислительные системы с различными способами организации. Невозможно построить компьютер с одним процессором и временем цикла в 0,001 нс, но зато можно построить компьютер с 1000 процессорами, время цикла каждого из которых составляет 1 нс. В этом разделе будут рассмотрены основные принципы разработки компьютеров параллельного действия. Все эти машины состоят из элементов процессора и элементов памяти. Отличаются они друг от друга количеством элементов, их типом и способом взаимодействия между элементами. Тема 7.1. Организация конвейерных и параллельных вычислений В результате изучения данной темы Вы будете:
Разработчики компьютеров стремятся к тому, чтобы повысить производительность машин, над которыми они работают. Один из способов заставить процессоры работать быстрее – увеличение их скорости, однако при этом существуют некоторые технологические ограничения, связанные с конкретным историческим периодом. Поэтому большинство разработчиков для достижения лучшей производительности при данной скорости работы процессора используют параллелизм (возможность выполнять две или более операций одновременно). Существует две основные формы параллелизма: параллелизм на уровне команд и параллелизм на уровне процессоров. В первом случае параллелизм осуществляется в пределах отдельных команд и обеспечивает выполнение большого их количества в секунду. Во втором случае над решением одной задачи работают одновременно несколько процессоров. Каждый из этих подходов имеет свои преимущества. Конвейеры Уже много лет известно, что главным препятствием высокой скорости выполнения команд является их вызов из памяти. Для разрешения этой проблемы разработчики придумали средство для вызова команд из памяти заранее, чтобы они имелись в наличии в тот момент, когда будут необходимы. Эти команды помещались в набор регистров, который назывался буфером выборки с упреждением. Таким образом, когда была нужна определенная команда, она вызывалась прямо из буфера, и не нужно было ждать, пока она считается из памяти. В действительности процесс выборки с упреждением подразделяет выполнение команды на два этапа: вызов и собственно выполнение. Идеяконвейера еще больше продвинула эту стратегию вперед. Теперь команда подразделялась уже не на два, а на несколько этапов, каждый из которых выполнялся определенной частью аппаратного обеспечения, причем все эти части могли работать параллельно. На Рис. 7.1, а) изображен конвейер из 5 блоков, которые называютсястадиями. Стадия С1 вызывает команду из памяти и помещает ее в буфер, где она хранится до тех пор, пока не будет нужна. Стадия С2 декодирует эту команду, определяя ее тип и тип операндов, над которыми она будет производить определенные действия. Стадия СЗ определяет местонахождение операндов и вызывает их или из регистров, или из памяти. Стадия С4 выполняет команду, обычно путем провода операндов через тракт данных. И, наконец, стадия С5 записывает результат обратно в нужный регистр. Рис. 7.1. Конвейер из 5 стадий (а); состояние каждой стадии в зависимости от количества пройденных циклов (б) На Рис. 7.1, б) показано, как действует конвейер во времени. Во время цикла 1 стадия С1 работает над командой 1, вызывая ее из памяти. Во время цикла 2 стадия С2 декодирует команду 1, в то время как стадия С1 вызывает из памяти команду 2. Во время цикла 3 стадия СЗ вызывает операнды для команды 1, стадия С2 декодирует команду 2, а стадия С1 вызывает третью команду. Во время цикла 4 стадия С4 выполняет команду 1, СЗ вызывает операнды для команды 2, С2 декодирует команду 3, а С1 вызывает команду 4. Наконец, во время пятого цикла С5 записывает результат выполнения команды 1 обратно в регистр, тогда как другие стадии работают над следующими командами. Конвейеры позволяют найти компромисс междувременем ожидания (сколько времени занимает выполнение одной команды) ипропускной способностью процессора (сколько миллионов команд в секунду выполняет процессор). Если время цикла составляет Т нс, а конвейер содержит n стадий, то время ожидания составит n×Т нс, а пропускная способность – 1000/Т млн команд в секунду.
Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|