Добавил:
ИВТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экз ответы.docx
Скачиваний:
21
Добавлен:
15.01.2024
Размер:
15.08 Mб
Скачать

4. Особенности представления чисел в форматах с фиксированной и плавающей запятой. Особенности аппаратной реализации арифметических операций над числами в форматах с фиксированной и плавающей запятой.

Из лекции:

Модуль это просто число по модулю (в десятичной 2.375)

Прямой код этот тот же модуль, только старший бит отвечает за знак, 1 - значит минус

(-2.375)

Дополнительный код - инвертируем число по модулю и добавляем единицу к младшему разряду

Все числа имеют фиксированную длину и количество знаков после запятой. То есть в четырехразрядную целую часть мы никак не можем записать число 16

Число с плавающей точкой состоит из 3 частей

1 бит для знака, 8 бит для экспоненты и 23 бита для мантиссы

Число 228 представлено как 11100100, но так как старший бит всегда 1, то его мы убираем, запоминаем и сдвигаем число на 1 влево, в мантиссу записывается

1100100..00

В биты для экспоненты, используя смещение, записываем число 127 + 7, такой способ упрощает аппаратуру и проще сравнивать числа

Аппаратная реализация сложения, умножения и деления чисел с плавающей точкой:

5. Архитектура системы команд. Система команд и способы адресации операндов. Классификация архитектур по сложности кодирования инструкций (risc, cisc). Уровни абстракции представления микропроцессора.

Системой команд (СК) вычислительной машины называют полный перечень команд, которые способна выполнять данная ВМ.

Система команд (instruction set) — это совокупность команд, или инструкций, выполнение которых на аппаратном уровне поддерживает процессор.

Различают шесть основных способов адресации операндов:

∙непосредственная;

∙прямая;

∙регистровая;

∙косвенно-регистровая;

∙косвенно-регистровая со смещением; ∙относительная.

Под архитектурой системы команд (АСК) принято определять те средства вычислительной машины, которые видны и доступны программисту.

Классификация архитектуры системы команд

Классификация по составу и сложности команд

Пытаясь преодолеть семантический разрыв, разработчика ВМ в настоящее время выбирают один из трех подходов и, соответственно, один из 3 типов АСК: ● архитектура с полным набором команд: CISC (Complex Instruction Set Computer);

  • архитектура с сокращенным набором команд: RISC (Reduced Instruction Set Computer);

  • архитектура с командными словами сверхбольшой длины: VLIW (Very Long Instruction Word).

Уровни представления микропроцессорной системы

Микропроцессорная система может быть описана, например, на одном из следующих уровней абстрактного представления: 1) "черный ящик"; 2) структурный; 3) программный; 4) логический; 5) схемный .

На уровне "черного ящика" микропроцессорная система описывается внешними спецификациями; перечисляются внешние характеристики.

Структурный уровень создается компонентами микропроцессорной системы: микропроцессорами, запоминающими устройствами, устройствами ввода/вывода, внешними запоминающими устройствами, каналами связи. Микропроцессорная система описывается функциями отдельных устройств и их взаимосвязью, информационными потоками.

Программный уровень разделяется на два подуровня: команд процессора и языковой. Микропроцессорная система интерпретируется как последовательность операторов или команд, вызывающих то или иное действие над некоторой структурой данных.

Логический уровень присущ исключительно дискретным системам. На этом уровне выделяются два подуровня: переключательных схем и регистровых пересылок.

Сxемный уровень образуется резисторами и конденсаторами. Показателями поведения системы на этом уровне служат напряжение и ток, представляемые в функции времени или частоты.

6. Компиляция программ с языков высокого уровня в машинные коды (представления условных операторов, циклов и вызова подпрограмм на примере языка ассемблера RISC-V). Трансляция, ассемблирование, компоновка.

RISC (Reduced Insrtuction Set Computer) — архитектура с сокращённым набором команд. В таких архитектурах поддерживается относительно небольшой набор простых инструкций (обычно до 100), притом все они имеют одинаковый размер. RISC также является load/store архитектурой, это значит, что для того, чтобы выполнить какую-либо операцию над данными, их необходимо предварительно разместить в регистровом файле. Все операции происходят только с данными в регистровом файле, а для доступа к основной памяти используются специальные инструкции типа load и store.

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

Условные операторы

Условный оператор if реализуется за счёт использования инструкций условного перехода.

Циклы

Оператор цикла while также реализуется за счёт применения инструкций условного перехода.

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

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

Пример вызова подпрограммы с сохранением сохраняемых регистров на стек

Компиляция программ с языков высокого уровня происходит в несколько этапов. Сначала высокоуровневый код компилируется в код на языке ассемблера, который затем ассемблируется в машинный код и сохраняется в виде объектного файла. Компоновщик, также называемый редактором связей или линкером (linker), объединяет полученный объектный код с объектным кодом библиотек и других файлов, в результате чего получается готовая к исполнению программа. На практике, большинство компиляторных пакетов выполняют все три шага: компиляцию, ассемблирование и компоновку. Наконец, загрузчик загружает программу в память и запускает её.

Ассемблирование - это процесс преобразования исходного кода на языке ассемблера в машинный код, который может быть выполнен процессором. Для ассемблирования программы на языке ассемблера RISC-V требуется использовать специальные ассемблеры, которые понимают инструкции этой конкретной архитектуры. Процесс ассемблирования включает в себя преобразование мнемоник ассемблерных инструкций в бинарный формат, понятный процессору архитектуры RISC-V.

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

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