Вопросы к экзамену

Вопрос 1

Многоуровневая компьютерная организация

Нажми на карточку, чтобы перевернуть

Р1.pdf, стр. 1–3

Вопрос 1 · ответ

Многоуровневая компьютерная организация

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

Физически компьютер способен выполнять только ограниченный набор простых машинных команд. Эти команды образуют машинный язык, который непосредственно понимается аппаратурой. Однако человеку неудобно писать программы на таком языке, потому что машинные команды слишком примитивны: сложить два числа, проверить число на ноль, скопировать блок данных из одной области памяти в другую.

Чтобы упростить программирование, вводятся более удобные языки. Самый нижний машинный язык можно обозначить как Я0, а соответствующую машину — как М0. Компьютер реально выполняет только команды языка Я0. Если создаётся более удобный язык Я1, то программа на нём должна быть либо транслирована, либо интерпретирована.

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

Интерпретация — это поочерёдная обработка команд программы. Каждая команда языка верхнего уровня переводится в команды нижнего уровня и сразу выполняется. Программа, выполняющая такую обработку, называется интерпретатором.

Для удобства можно представить, что для каждого языка существует своя виртуальная машина. Например, если есть язык Я1, можно вообразить машину М1, которая будто бы напрямую выполняет команды Я1. На самом деле команды Я1 всё равно будут переведены или интерпретированы на более низком уровне, но программист может работать так, как будто машина М1 существует реально.

Так возникает иерархия языков и машин: нижний уровень самый простой и близкий к аппаратуре, верхние уровни более удобны для человека, каждый уровень использует предыдущий как основу. Компьютер с n уровнями можно рассматривать как n разных виртуальных машин, каждая из которых имеет собственный машинный язык.

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

Итог: многоуровневая компьютерная организация упрощает работу с компьютером за счёт уровней абстракции. Каждый уровень скрывает сложность нижнего уровня и предоставляет пользователю более удобный язык и набор операций.

Вопрос 2

Современные многоуровневые машины

Нажми на карточку, чтобы перевернуть

Р1.pdf, стр. 3–5

Вопрос 2 · ответ

Современные многоуровневые машины

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

В лекции рассматривается модель шестиуровневого компьютера.

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

Второй уровень — уровень микроархитектуры. На этом уровне находятся регистры, арифметико-логическое устройство, тракт данных и схемы управления. АЛУ выполняет простые арифметические и логические операции. Регистры вместе с АЛУ образуют тракт данных. Работа тракта данных может управляться аппаратно или с помощью микропрограммы. Если используется микропрограмма, то она фактически является интерпретатором команд следующего уровня.

Третий уровень — уровень архитектуры набора команд. Он соответствует машинному языку конкретного процессора. На этом уровне определяются машинные команды, форматы команд, регистры, доступные программисту, способы адресации и правила выполнения команд. Команды этого уровня выполняются аппаратно или интерпретируются микропрограммой нижнего уровня.

Четвёртый уровень — уровень операционной системы. Он является гибридным: часть команд совпадает с командами уровня архитектуры набора команд, а часть добавляется операционной системой. ОС предоставляет дополнительные возможности: другую организацию памяти, выполнение нескольких программ одновременно, управление файлами, управление устройствами ввода-вывода и защиту ресурсов.

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

Шестой уровень — уровень языков высокого уровня. Он предназначен для прикладных программистов. К таким языкам относятся C, C++ и Java. Программы на языках высокого уровня обычно транслируются компиляторами на более низкие уровни. Иногда используется интерпретация: например, Java-программа сначала переводится в байт-код, а затем байт-код интерпретируется виртуальной машиной Java.

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

Итог: современные многоуровневые машины строятся как иерархия уровней: цифровая логика, микроархитектура, архитектура набора команд, операционная система, ассемблер и языки высокого уровня. Такая организация упрощает работу с компьютером и скрывает сложность аппаратной реализации.