Логическая организация структура и ресурсы компьютера которые может использовать программист

Обновлено: 04.07.2024

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

1.1. Что такое архитектура компьютера

Четкого определения, что такое архитектура компьютера не существует, поэтому я приведу наиболее известное и симпатичное мне:

Архитектура компьютера – это логическая организация, структура и ресурсы компьютера, которые может использовать программист.

Архитектура компьютера включает в себя архитектуры отдельных устройств, входящих в компьютер. Хотя компьютер состоит из многих внешних и внутренних устройств, но реально программисту на ассемблере приходится работать только с тремя устройствами компьютерной системы: процессором , памятью и портами ввода-вывода . В сущности, эти три устройства определяют работу всего компьютера и работу всех внешних устройств подключенных к нему. Все эти три устройства соединены между собой при помощи трех основных шин: шиной данных (ШД) ,

шиной адреса (ША) и шиной управления (ШУ) (рис. 1.1). Шины это просто набор проводников по которым передаются цифровые сигналы (машинные коды) от процессора к памяти, от процессора к портам ввода-вывода, и обратно от этих устройств к процессору. Все три шины вместе образуют системную шину или ее еще называют магистраль .

Существует еще такое понятие как микроархитектура . Если архитектура это программно-видимые свойства устройства, то микроархитектура – внутренняя реализация архитектуры. Для одной и той же архитектуры разными производителями могут применяться существенно различные микроархитектурные реализации с различной производительностью и стоимостью.

Рис. 1.1. Структурная схема компьютера

Например, к архитектуре процессора относятся регистры и набор инструкций (команд), которые может использовать программист в своей программе (далее в книге мы с ними познакомимся подробнее). А к микроархитектуре процессора – способы конвейеризации, распараллеливания, буферизации вычислений и другие технологии, предназначенные для увеличения скорости работы процессора. В микроархитектуре процессора тоже может использоваться свой набор команд, но он обычно недоступен программисту.

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

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

1.2. Системы счисления

Слово "компьютер" (computer) с английского языка переводится как "вычислитель", т. е. машина для проведения вычислений. И это полностью соответствует действительности, т. к. на уровне "железа" компьютер выполняет только простейшие арифметические операции с числами, такие как сложение и умножение. В СССР, да и в современной России часто компьютер прямо так и называют: ЭВМ ("электронная вычислительная машина").

Сердцем компьютера является процессор, называемый часто центральным процессором (ЦП) или микропроцессором . Именно центральный процессор выполняет все вычисления.

Так исторически сложилось, что практически все цифровые микросхемы, в том числе компьютерные процессоры, работают только с двумя разрешенными уровнями напряжения. Один из этих уровней называется уровнем логической единицы (или единичным уровнем), а другой — уровнем логического нуля (или нулевым уровнем). Чаще всего логическому нулю соответствует низкий уровень напряжения (от 0 до 0,4 В), а логической единице — высокий уровень (от 2,4 до 5 В) 1 . Два уровня напряжения было выбрано исключительно из-за простоты реализации.

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

1 Диапазоны приведены для процессоров с напряжением питания 5 В (в современных процессорах оно как правило ниже).

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

Следует отметить, что были попытки сделать ЭВМ на основе троичной логики (например, отечественная ЭВМ "Сетунь", 1959 г.) и даже на основе десятичной логики (американская ЭВМ "Марк-1", 1943 г.). Но распространения они не получили, т. к. их устройство сложнее машин на основе двоичной логики, а потому они дороже и менее надежны. К тому же все, что осуществимо на машинах с троичной и десятичной логикой (и вообще любой недвоичной логикой), то осуществимо и на машинах с двоичной логикой.

Так как компьютер способен воспринимать только два управляющих сигнала: 0 и 1, то и любая программа должна быть ему представлена только в двоичных кодах, т. е. в машинных кодах . В старые добрые времена операторы первых ЭВМ программировали напрямую в машинных кодах, переключая специально предусмотренные для этого тумблеры, или пробивали двоичные коды на перфолентах и перфокартах, которые затем считывала ЭВМ и выполняла операции согласно этим кодам. Перфокарта представляла собой картонный прямоугольный лист, на который была нанесена цифровая сетка (рис. 1.2). Информация на перфокарты наносилась оператором путем пробивки отверстий в нужных местах цифровой сетки на перфокарте с помощью специального электромеханического устройства – перфоратора. Наличие отверстия означало код 1, а его отсутствие – код 0. Информация считывалась с перфокарты в процессе перемещения ее в специальном устройстве считывателе. В считыватель обычно подавалась сразу стопка перфокарт с нанесенной информацией.

Рис. 1.2. Перфокарта с пробитыми отверстиями

Однако записывать и запоминать огромные двоичные цепочки, первым программистам было неудобно, поэтому они стали вместо двоичной системы использовать другие системы счисления, например десятичную, восьмеричную или шестнадцатеричную. Сравните: двоичное число 11001000 будет представлено в десятичном виде как 200, а в восьмеричной и шестнадцатеричной соответственно как

Здесь еще раз отмечу: недвоичные системы счисления первые программисты стали использовать исключительно для личного удобства. Компьютер не способен воспринимать десятичные, шестнадцатеричные или восьмеричные числа, а только и только двоичные коды!

Надеюсь, вы знаете, что в десятичной системе счисления используется десять цифр (от 0 до 9), в восьмеричной системе счисления используется только восемь цифр (от 0 до 7). В шестнадцатеричной системе счисления используется 16 цифр, где в качестве первых десяти цифр применяются цифры десятичной системы, а недостающие шесть цифр заменяются буквами латинского алфавита, т. е. полный набор шестнадцатеричных цифр выглядит так: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Как в литературе, так и в программах на ассемблере, для обозначения системы счисления, в которой записано число, принято ставить в конце числа букву b (Bin) –

для двоичного, o (Oct) – для восьмеричного, h (Hex) – для шестнадцатеричного числа. Для обозначения десятичной системы счисления обычно не используется никакой буквенной приставки или в редких случаях ставится d (Dec). Одно и то же число, записанное в различных системах счисления, будет выглядеть так:

200 d = 11001000 b = 310 o = C8 h

Таким образом, операторы первых ЭВМ стали составлять свои программы в более удобной системе счисления (восьмеричной, шестнадцатеричной или другой), а потом переводить их в двоичный машинный код. Наибольшее распространение у первых программистов из всех систем счисления получила шестнадцатеричная система счисления, которая до сих пор является основной в компьютерном мире. Вас, наверное, интересует, почему получила распространение именно шестнадцатеричная система счисления? Все просто, в отличие от других систем счисления перевод из шестнадцатеричной системы счисления в двоичную систему и обратно осуществляется очень легко — вместо каждой шестнадцатеричной цифры, подставляется соответствующее четырехзначное двоичное число, например:

486h = 10010000110b , где 4h = 0100b, 8h = 1000b, 6h = 0110b

Для сравнения лишь покажу, как перевести десятичное число в двоичное (возьмем для примера число 200). Для этого надо его делить на 2 и записывать остаток справа налево:

200/2 = 100 (остаток 0) 100/2 = 50 (остаток 0) 50/2 = 25 (остаток 0)

25/2 = 12 (остаток 1) 12/2 = 6 (остаток 0) 6/2 = 3 (остаток 0)

3/2 = 1 (остаток 1)

1/2 =0 (остаток 1) Результат: 11001000b

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

11001000b=1×2 7 +1×2 6 +0×2 5 +0×2 4 +1×2 3 +0×2 2 +0×2 1 +0×2 0 =128+64+8=200

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

Мы не будем изучать правила преобразования чисел из одной системы счисления в другую, т. к. надеюсь, вам не придется это делать вручную. Лучше доверить эту задачу любому инженерному калькулятору, например стандартному Калькулятору в операционной системе Windows (вызывается Пуск -> Программы -> Стандартные -> Калькулятор ), для этого в его меню Вид должен быть выставлен режим "Инженерный".

Если все-таки вы желаете научиться делать перевод чисел вручную, то советую почитать любой учебник по информатике.

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

Изучение любого языка высокого уровня обычно начинается с освоения основных команд и написания первых простейших программ. Но с ассемблером так сразу не получится. Это объясняется тем, что программы на ассемблере напрямую манипулируют устройствами компьютера, в первую очередь процессором и памятью. Языки высокого уровня скрывают от программиста все манипуляции с компьютерным «железом». Таким образом, чтобы научиться программировать на ассемблере, необходимо знать архитектуру компьютера.

1.1. Архитектура компьютера.

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

Архитектура компьютера – это логическая организация, структура и ресурсы компьютера, которые может использовать программист.

Архитектура компьютера включает в себя архитектуры отдельных устройств, входящих в компьютер. Хотя компьютер состоит из многих внешних и внутренних устройств, но реально программисту на ассемблере приходится работать только с тремя устройствами компьютерной системы: процессором, памятью и портами ввода-вывода. В сущности, эти три устройства определяют работу всего компьютера и работу всех внешних устройств подключенных к нему. Все эти три устройства соединены между собой при помощи трех основных шин: шиной данных (ШД), шиной адреса (ША) и шиной управления (ШУ) (рис. 1).


Рис. 1. Архитектура ЭВМ.

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

Оперативная память предназначена для загрузки программ и для временного хранения различных данных, необходимых для работы программ.

Порты ввода-вывода предназначены для взаимодействия с пользователем и другими устройствами.

Шина (bus) – это группа параллельных проводников, с помощью которых данные передаются от одного устройства к другому:

  • Шина данных (data bus) используется для обмена команд и данных между процессором и оперативной памятью, а также между устройствами ввода-вывода и ОЗУ.
  • Шина управления (control bus) используется для передачи специальных сигналов, которые синхронизируют работу всех устройств, подключенных к системной шине. Например, процессор должен знать, когда можно читать информацию с шины данных. Для этого используется специальный сигнал готовности шины данных.
  • Шина адреса (address bus) используется для указания адреса ячейки памяти в ОЗУ, к которой в текущий момент происходит обращение со стороны процессора или устройства ввода-вывода (чтение или запись).

Все три шины вместе образуют системную шину или ее еще называют магистраль.

1.2. Системы счисления.

Слово "компьютер" (computer) с английского языка переводится как "вычислитель", т. е. машина для проведения вычислений. И это полностью соответствует действительности, т. к. на уровне "железа" компьютер выполняет только простейшие арифметические операции с числами, такие как сложение и умножение.

Сердцем компьютера является процессор, называемый часто центральным процессором (ЦП) или микропроцессором. Именно центральный процессор выполняет все вычисления.

Так исторически сложилось, что практически все цифровые микросхемы, в том числе компьютерные процессоры, работают только с двумя разрешенными уровнями напряжения. Один из этих уровней называется уровнем логической единицы (или единичным уровнем), а другой — уровнем логического нуля (или нулевым уровнем). Чаще всего логическому нулю соответствует низкий уровень напряжения (от 0 до 0,4 В), а логической единице — высокий уровень (от 2,4 до 5 В). Два уровня напряжения было выбрано исключительно из-за простоты реализации.

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

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

Так как компьютер способен воспринимать только два управляющих сигнала: 0 и 1, то и любая программа должна быть ему представлена только в двоичных кодах, т. е. в машинных кодах. В старые добрые времена операторы первых ЭВМ программировали напрямую в машинных кодах, переключая специально предусмотренные для этого тумблеры, или пробивали двоичные коды на перфолентах и перфокартах, которые затем считывала ЭВМ и выполняла операции согласно этим кодам.

Однако записывать и запоминать огромные двоичные цепочки, первым программистам было неудобно, поэтому они стали вместо двоичной системы использовать другие системы счисления, например десятичную, восьмеричную или шестнадцатеричную. Для сравнения: двоичное число 11001000 будет представлено в десятичном виде как 200, а в восьмеричной и шестнадцатеричной соответственно как 310 и С8.

Стоит еще раз отметить, что недвоичные системы счисления первые программисты стали использовать исключительно для личного удобства. Компьютер не способен воспринимать десятичные, шестнадцатеричные или восьмеричные числа, а только и только двоичные коды!

Таким образом, операторы первых ЭВМ стали составлять свои программы в более удобной системе счисления (восьмеричной, шестнадцатеричной или другой), а потом переводить их в двоичный машинный код. Наибольшее распространение у первых программистов из всех систем счисления получила шестнадцатеричная система счисления, которая до сих пор является основной в компьютерном мире. И все из-за того, что в отличие от других систем счисления перевод из шестнадцатеричной системы счисления в двоичную систему и обратно осуществляется очень легко — вместо каждой шестнадцатеричной цифры, подставляется соответствующее четырехзначное двоичное число.

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

Язык ассемблера прозвали низкоуровневым языком, потому что он максимально приближен к машинному языку, а значит к "железу" компьютера. После языка ассемблера стали появляться высокоуровневые языки, такие как Бейсик, Паскаль, Фортран, Си, С++ и пр. Они еще более понятны человеку, но преобразование в машинный код высокоуровневых программ значительно сложнее, из-за чего размер кода, как правило, получается большим и менее быстрым по сравнению с ассемблерными программами.

Если операторы первых ЭВМ переводили свои программы в машинный код вручную, то сейчас эту работу выполняют специальные программы— трансляторы (англ, translator — переводчик). Для языков высокого уровня транслятор принято называть компилятором (англ, compiler — составитель, собиратель). Для языка ассемблера обычно тоже не используется слово транслятор, а говорят просто: "ассемблер". Таким образом, ассемблером называют, как язык программирования, так и транслятор этого языка.

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

1.3. Биты и байты.

Цифра в двоичной арифметике называется разрядом (или точнее "двоичным разрядом") и может принимать значение ноль или единица. В компьютерном мире вместо разряда часто употребляют название бит.

Таким образом, минимальной единицей информации в компьютерной системе является бит, который может принимать только значение 0 или 1. Однако минимальным объемом данных, которым позволено оперировать любой компьютерной программе является не бит, а байт. Байт состоит из восьми бит. Если программе нужно изменить значение только одного бита, то она все равно должна считать целый байт, содержащий этот бит. Биты в байте нумеруются справа налево от 0 до 7, при этом нулевой бит принято называть младшим, а седьмой — старшим (рис. 2).


Так как в байте всего восемь бит, а бит может принимать только два значения, то простой арифметический подсчет показывает, что байт может принимать до 2 8 =256 различных значений. Поэтому в байте могут быть представлены целые числа в диапазоне от 0 до 255, или числа со знаком от -128 до +127.

Однако не только байтами может оперировать компьютерная программа, но и более крупными единицами данных— словами, двойными словами и учетверенными словами. Слово состоит из двух байт, при этом биты с 0 по 7 составляют младший байт в слове, а биты с 8 по 15— старший (рис. 3). Понятно, что слово может принимать до 2 16 =65536 различных значений.


Двойное слово, как следует из самого названия, состоит из двух слов или четырех байт, а значит из 32-х бит, а два двойных слова составляют учетверенное слово (64 бита).

Существует еще более крупная единица, которая называется параграф и представляет собой 16 смежных байт.

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

2 Архитектурой компьютера называется ее логическая организация, структура и ресурсы, которые может использовать программист.

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

5 Основа вычислительной машины - процессор. В нем расположены арифметико-логическое устройство - АЛУ, устройство управления - УУ и регистры для временного хранения информации. АЛУ осуществляет непосредственную обработку данных: сложение двух чисел, умножение одного числа на другое, перенос информации из одного места в другое и т.д. Данные процессор считывает из ОЗУ (оперативной памяти) компьютера, туда же он пересылает результат действия над этими данными. Устройство управления координирует взаимодействие различных частей ЭВМ. Важнейшими характеристиками процессора являются:

6 Важнейшими характеристиками процессора являются: Разрядность Тактовая частота Адресное пространство

8 Основная память - это устройство для хранения информации. Она состоит из оперативного и постоянного запоминающего устройств. Оперативное запоминающее устройство называется ОЗУ, постоянное запоминающее устройство ПЗУ. ПЗУ энергонезависимая память. В ПЗУ находятся: Программа управления работой самого процессора Программы управления дисплеем, клавиатурой, принтером, внешней памятью Программы запуска и остановки ЭВМ Программы тестирования устройств, проверяющие при каждом включении компьютера правильность работы его блоков (POST Power On SelfTest) Информация о том, где на диске находится операционная система.

10 Разберем схему работы в общем случае на примере команды чтения из памяти. процессор устанавливает на шине адреса адрес ячейки памяти, которую хочет прочитать на шине управления процессор выставляет сигнал чтения и сигнал готовности заметив сигнал готовности, все устройства проверяют, не стоит ли на шине адреса их адрес память «замечает», что выставлен ее адрес память читает адрес память выставляет на шине данных требуемую информацию память выставляет на шине управления сигнал готовности процессор читает данные с шины данных

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

Многоуровневая структура компьютера: языки, уровни и виртуальные машины

Существует огромная разница между тем, что удобно людям, и тем, что могут компьютеры. Люди хотят сделать X, но компьютеры могут сделать только Y. Из-за этого возникает проблема.

Вышеупомянутую проблему можно решить двумя способами. Оба способа подразумевают разработку новых команд, более удобных для человека, чем встроенные команды. Эти новые команды в совокупности формируют язык, который мы будем называть Я 1. Встроенные машинные команды тоже формируют язык, и мы будем называть его Я 0. Компьютер может выполнять только программы, написанные на его машинном языке Я 0. Два способа решения проблемы различаются тем, каким образом компьютер будет выполнять программы, написанные на языке Я 1, — ведь в конечном итоге компьютеру доступен только машинный язык Я 0.

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

Второй способ означает создание программы на языке Я 0, получающей в качестве входных данных программы, написанные на языке Я 1. При этом каждая команда языка Я 1 обрабатывается поочередно, после чего сразу выполняется эквивалентный ей набор команд языка Я 0. Эта технология не требует составления новой программы на Я 0. Она называется интерпретацией, а программа, которая осуществляет интерпретацию, называется интерпретатором.

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

При интерпретации каждая команда программы на Я 1 перекодируется в Я 0 и сразу же выполняется. В отличие от трансляции, здесь не создается новая программа на Я 0, а происходит последовательная перекодировка и выполнение команд. С точки зрения интерпретатора, программа на Я 1 есть не что иное, как «сырые» входные данные. Оба подхода широко используются как вместе, так и по отдельности.

Впрочем, чем мыслить категориями трансляции и интерпретации, гораздо проще представить себе существование гипотетического компьютера или виртуальной машины, для которой машинным языком является язык Я 1. Назовем такую виртуальную машину М 1, а виртуальную машину для работы с языком Я 0 — М 0. Если бы такую машину М 1 можно было бы сконструировать без больших денежных затрат, язык Я 0, да и машина, которая выполняет программы на языке Я 0, были бы не нужны. Можно было бы просто писать программы на языке Я 1, а компьютер сразу бы их выполнял. Даже с учетом того, что создать виртуальную машину, возможно, не удастся (из-за чрезмерной дороговизны или трудностей разработки), люди вполне могут писать ориентированные на нее программы. Эти программы будут транслироваться или интерпретироваться программой, написанной на языке Я 0, а сама она могла бы выполняться существующим компьютером. Другими словами, можно писать программы для виртуальных машин так, как будто эти машины реально существуют.

Трансляцию и интерпретацию возможно выполнить только в том случае, когда Я 0 и Я 1 не сильно отличаются друг от друга. Но ведь цель создания Я 1 заключалась в создании языка более удобного для человека. Очевидно что она не может быть достигнута. Чтобы решить эту проблему можно создать еще одну виртуальную машину М 2 и язык Я 2, который будет более понятен для человека, чем Я 1. При этом, программы написанные на языке Я 2 могут транслироваться на язык Я 1 или выполняться интерпретатором, написанным на языке Я 1.

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

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

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

Современные многоуровневые компьютеры

Современные компьютеры можно представить как структуру, состоящую из 6 уровней:

Структура шестиуровневого компьютера

Структура шестиуровневого компьютера

Ради полноты нужно упомянуть о существовании еще одного уровня, который расположен ниже нулевого. Этот уровень не показан на рис. выше, так как он попадает в сферу электронной техники и, следовательно, не рассматривается из-за сложности материала. Он называется уровнем физических устройств. На этом уровне находятся транзисторы, которые для разработчиков компьютеров являются примитивами. Объяснить, как работают транзисторы, — задача физики.

Уровень 0: Цифровой логический уровень

Объекты цифрового логического уровня — вентили. Хотя вентили состоят из аналоговых компонентов, таких как транзисторы, они могут быть точно смоделированы как цифровые устройства. У каждого вентиля есть один или несколько цифровых входов (сигналов, представляющих 0 или 1). Вентиль вычисляет простые функции этих сигналов, такие как И или ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют 1 бит памяти, который может содержать 0 или 1. Биты памяти, объединенные в группы, например, по 16, 32 или 64, формируют регистры. Каждый регистр может содержать одно двоичное число до определенного предела. Из вентилей также может состоять сам компьютер.

Уровень 1: уровень Микроархитектуры

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

На некоторых машинах работа тракта данных контролируется особой программой, которая называется микропрограммой. На других машинах тракт данных контролируется аппаратными средствами.

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

Уровень 2: уровень архитектуры набора команд

Уровень 2 мы будем называть уровнем архитектуры набора команд. Каждый производитель публикует руководство для компьютеров, которые он продает, под названием «Руководство по машинному языку X», «Принципы работы компьютера У» и т. п. Подобное руководство содержит информацию именно об этом уровне. Описываемый в нем набор машинных команд в действительности выполняется микропрограммой-интерпретатором или аппаратным обеспечением. Если производитель поставляет два интерпретатора для одной машины, он должен издать два руководства по машинному языку, отдельно для каждого интерпретатора.

Уровень 3: уровень операционной системы

Этот уровень обычно является гибридным. Большинство команд в его языке есть также и на уровне архитектуры набора команд (команды, имеющиеся на одном из уровней, вполне могут быть представлены и на других уровнях). У этого уровня есть некоторые дополнительные особенности: новый набор команд, другая организация памяти, способность выполнять две и более программы одновременно и некоторые другие. При построении уровня 3 возможно больше вариантов, чем при построении уровней 1 и 2.

Новые средства, появившиеся на уровне 3, выполняются интерпретатором, который работает на втором уровне. Этот интерпретатор был когда-то назван операционной системой. Команды уровня 3, идентичные командам уровня 2, выполняются микропрограммой или аппаратным обеспечением, но не операционной системой. Другими словами, одна часть команд уровня 3 интерпретируется операционной системой, а другая часть — микропрограммой. Вот почему этот уровень считается гибридным. Мы будем называть этот уровень уровнем операционной системы.

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

Еще одно изменение, появившееся на уровне операционной системы, — механизм поддержки более высоких уровней. Уровни 2 и 3 обычно интерпретируются, а уровни 4, 5 и выше
обычно, хотя и не всегда, транслируются.

Другое отличие между уровнями 1, 2, 3 и уровнями 4, 5 и выше — особенность языка. Машинные языки уровней 1, 2 и 3 — цифровые. Программы, написанные на этих языках, состоят из длинных рядов цифр, которые воспринимаются компьютерами, но малопонятны для людей. Начиная с уровня 4, языки содержат слова и сокращения, понятные человеку.

Уровень 4: уровень Ассемблера

Уровень 4 представляет собой символическую форму одного из языков более низкого уровня. На этом уровне можно писать программы в приемлемой для человека форме. Эти программы сначала транслируются на язык уровня 1, 2 или 3, а затем интерпретируются соответствующей виртуальной или фактически существующей машиной. Программа, которая выполняет трансляцию, называется ассемблером.

Уровень 5: уровень языка прикладных программистов

Уровень 5 обычно состоит из языков, разработанных для прикладных программистов. Такие языки называются языками высокого уровня. Существуют сотни языков высокого уровня. Наиболее известные среди них — С, C++, Java, LISP и Prolog. Программы, написанные на этих языках, обычно транслируются на уровень 3 или 4. Трансляторы, которые обрабатывают эти программы, называются компиляторами. Отметим, что иногда также имеет место интерпретация. Например, программы на языке Java сначала транслируются на язык, напоминающий ISA и называемый байт-кодом Java, который затем интерпретируется.

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

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

Набор типов данных, операций и характеристик каждого отдельно взятого уровня называется архитектурой. Архитектура связана с программными аспектами. Например, сведения о том, сколько памяти можно использовать при написании программы, — часть архитектуры. Аспекты реализации (например, технология, применяемая при реализации памяти) не являются частью архитектуры. Изучая методы проектирования программных элементов компьютерной системы, мы изучаем компьютерную архитектуру. На практике термины «компьютерная архитектура» и «компьютерная организация» употребляются как синонимы.

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

Архитектура фон Неймана.

Архитектура компьютера, имеющего одно арифметико-логическое устройство, через которое проходит поток данных, и одно устройство управления, через которое проходит поток команд. См. также “Принципы фон-Неймана”.

Логическая организация, структура и ресурсы компьютера, которые может использовать программист. Определяет принципы действия, информационные связи и взаимное соединение основных логических узлов компьютера.

См. Язык ассемблера.

Читается аски. Американский стандартный код обмена информацией. Широко используется для кодирования в виде байта букв, цифр, знаков операций и других компьютерных символов.

Аудиоадаптер (Sound Blaster, звуковая плата).

Специальная электронная плата, которая позволяет записывать звук, воспроизводить его и создавать программными средствами с помощью микрофона, наушников, динамиков, встроенного синтезатора и другого оборудования.

Один или несколько файлов данных, предназначенных для хранения, изменения и обработки больших объемов взаимосвязанной информации.

Группа из восьми битов, рассматриваемая при хранении данных как единое целое.

Библиотека стандартных подпрограмм.

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

Наименьшая единица информации в цифровом компьютере, принимающая значения 0 или 1.

Считывание информации с внешнего устройства в память компьютера.

См. Логический элемент.

В информатике — тип данных, содержащий числа, записанные с десятичной точкой и (или) с десятичным порядком.

Электронная плата, которая обрабатывает видеоданные (текст и графику) и управляет работой дисплея. Содержит видеопамять, регистры ввода-вывода и модуль BIOS. Посылает в дисплей сигналы управления яркостью лучей и сигналы развёртки изображения.

См. Накопитель на жёстких магнитных дисках.

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

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

Второе поколение компьютерной техники.

Машины, созданные в 1955—65 гг. Элементная база — дискретные транзисторные логические элементы. Оперативная память на магнитных сердечниках. Высокопроизводительные устройства работы с магнитными лентами, магнитные барабаны и диски. Быстродействие — до сотен тысяч операций в секунду, ёмкость памяти — до нескольких десятков тысяч слов. Языки высокого уровня, широкий набор библиотечных программ, мониторные системы, управляющие режимом трансляции и исполнения программ.

Результаты работы программы, выдаваемые компьютером пользователю, другому компьютеру или во внешнюю память.

В языке программирования — запись правила для вычисления некоторого значения. Строится из констант, пеpеменных и указателей функций, объединенных знаками опеpаций.

Гибкий (флоппи) диск.

Круглая пластиковая пластина, покрытая с обеих строн магнитным окислом и помещенная в защитную оболочку. Используется как носитель небольших объемов информации.

Глобальная сеть (ГВС).

См. Сеть компьютерная.

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

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

Стержень-ручка, отклонение которой от вертикального положения приводит к передвижению курсора в соответствующем направлении по экрану дисплея. Часто применяется в компьютерных играх.

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

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

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

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

Символическое имя переменной, которое идентифицирует её в программе.

Статьи к прочтению:

Лекция 323. Atmega 8: Принцип работы АЛУ


Похожие статьи:

Читайте также: