Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Тема 6.4. Процесс ассемблирования





В результате изучения данной темы Вы будете:

  • понимать, что такое ассемблирование программы;
  • иметь представление, о типичных проблемах, возникающих в процессе ассемблирования программ, а также о способах их преодоления.

Поскольку программа на языке ассемблера состоит из ряда операторов, на первый взгляд может показаться, что ассемблер сначала должен читать оператор, затем компилировать его на машинный язык и, наконец, переносить полученный машин­ный язык в файл, а соответствующий кусок листинга – в другой файл. Этот про­цесс будет повторяться до тех пор, пока вся программа не будет откомпилирована. Но, к сожалению, такая стратегия не работает.

Рассмотрим ситуацию, где первый оператор – переход к метке 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/Т млн команд в секунду.

 







ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.