Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы_сиппо.doc
Скачиваний:
18
Добавлен:
22.04.2019
Размер:
230.91 Кб
Скачать
  1. Микроархитектура Intel Pentium 4.

При рассмотрении процессоров различают понятия «архитектура» и «микроархитектура». Архитектура – это логическое построение процессора, т.е. то, какой машина представляется программисту. Это понятие охватывает перечень и формат команд, формы представления данных, способы адресации памяти и т. д. Все процессоры Intel, начиная с Intel386, поддерживают архитектуру IA-32. Микроархитектура – это структура процессора, отраженная в его составных частях и связях между ними. Микроархитектура – это конкретный способ реализации архитектуры. NetBurst (пакетно-сетевая) – Pentium 4.

Рассмотрим микроархитектуру NetBurst:

  • гарвардская архитектура кэш-памяти 1-го уровня

  • конвейер длиной 20 ступеней (Hyper Pipelined)

  • суперскалярная архитектура

  • 128 физических регистров на 8 основных логических

  • два блока АЛУ, работающих на двойной частоте процессора (Rapid ALU)

  • изменение последовательности команд (out-of-order execution)

  • предсказание переходов (branch prediction)

  • 144 команды SSE2 (Streaming SIMD Extensions – поточная SIMD обработка)

  • Технология HyperThreading (только Xeon).

4. Регистры и режимы адресации процессора Intel Pentium 4.

Регистр – многоразрядная ячейка памяти, предназначенная для временного хранения текущей информации. Регистровая память – самая быстродействующая в компьютере. Совокупность регистров называется регистровым файлом. Регистры процессора делятся на: доступные программисту (user-visible registers), внутренние регистры процессора (internal registers).

Основные регистры процессоров Intel:

  • регистры общего назначения

  • сегментные регистры

  • регистр указателя команд

  • регистр флагов

  • системные регистры

  • регистры FPU, MMX- и SSE-расширений

Регистры общего назначения (РОН) – регистры, предназначенные для выполнения текущих вычислений. Регистров общего назначения 8, все они – 32-разрядные: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.

Сегментные регистры (16-разрядные): CS – сегмент кода, DS – сегмент данных, SS – сегмент стека, ES, GS, FS – дополнительные регистры. В сегментных регистрах хранится адрес соответствующего сегмента (указатель на строку в таблице GDT или LDT).

Регистр указателя команд – EIP (Expanded Instruction Pointer), 32 разряда. Содержит адрес следующей команды относительно начала сегмента. Прямого доступа к нему нет, но команды перехода косвенно его изменяют.

Регистр флагов – EFLAGS, 32 разряда. Хранит информацию о состоянии процессора и о результатах выполнения команд. Флаг – это бит, принимающий значение 1, если он установлен, и 0, если сброшен.

Системные адресные регистры: GDTR, LDTR. IDTR, TR.

Управляющие регистры: СR0-CR4 (Control Registers).

Регистры отладки: DR0-DR7 (Debug Registers).

5. Язык Ассемблер. Области применения Ассемблера. Программы на ассемблере. Общая схема трансляции программы.

Язык ассемблер - это язык низкого уровня. Структура и взаимосвязь цепочек языка близки к машинным командам вычислительной системы, где должна выполняться результирующая программа. Применение языка ассемблера позволяет разработчику управлять ресурсами вычислительной системы (ЦП, ОП, внешние устройства и т.д.) на уровне машинных команд. Каждая команда исходной программы на языке ассемблере в результате компиляции преобразуется в 1 машинную команду. Транслятор с языка ассемблера часто называется «ассемблер» или «программа ассемблера».

Язык ассемблера может применяться как самостоятельный инструмент разработки приложений, так и в качестве встроенного средства разработки языков высокого уровня.

Транслятор - это программа, которая переводит (с англ. translate) с нотации одного языка в нотацию другого языка.

Компилятор - это транслятор, который переводит программу из нотации одного языка в нотацию машинного языка. Машинным языком может быть код конкретной машины, любой объектный код.

Трансляторы могут быть интерпретаторами (interpreter), т.е. совмещать анализ исходной программы с ее выполнением. Различие тут в том, что результатом работы интерпретатора будет не машинный код, а последовательность обращений к библиотеке функций интерпретатора.

Интерпретатор в отличие от компилятора может выбирать одну за другой инструкции и сразу их выполнять. При интерпретации (это важно!!!), в отличии от трансляции или компиляции, может быть начато выполнение программы, которая содержит синтаксические ошибки.

Процесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием. В отличие от компилирования, ассемблирование — более или менее однозначный и обратимый процесс. В языке ассемблера каждой мнемонике соответствует одна машинная инструкция, в то время как в языках программирования высокого уровня за каждым выражением может скрываться большое количество различных инструкций. В принципе, это деление достаточно условно, поэтому иногда трансляцию ассемблерных программ также называют компиляцией.