Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В первых компьютерах программа представляла из себя набор машинных кодов из 0 и 1, например:
...
Каждый код это был либо код команды или число, с которым нужно было выполнить операцию сложения, умножения... Однако, сделать ошибку в такой программе очень легко, а найти ее трудно. Ввод такой программы выполнялся на наборном поле из тумблеров: каждый тумблер был либо включен(это 1) либо выключен(это 0). Результат выводился на специальную панель из лампочек. Каждая лампочка – это тоже 1(включена) или 0 (выключена). Набор 1 и 0 считывался глазами как 2-ое число. Программисты должны были хорошо знать двоичную систему исчисления и кодировку всех команд. Позднее для ввода больших программ стали использоваться перфокарты, затем перфоленты и еще позднее магнитные ленты.
Перфокарты представляли из себя картонные карточки с пробитыми дырочками в определенных местах. Каждая дырочка – это 1, а не пробитая дырочка – это 0. Каждая колонка такой карты – это был код из 8 битов. С каждой перфокарты считывался набор таких кодов. В отличие от перфокарты перфолента была уже и длиннее, что позволяло на нее записывать гораздо больше информации.
| ||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
Магнитные ленты позволяли записывать еще больше информации. Они не рвались и не размокали в воде и в 1980-ых годах они были основным средством для длительного хранения данных- архивов, а также для текущего использования. Жесткие диски сделали еще шаг вперед. В отличие от лент и перфокарт считывание данных с них выполнялось не перебором всех предыдущих данных, а прямым обращением к месту диска, где хранились данные.
Принцип исполнения машинных команд процессором можно изобразить схематично так:
Запуск – { выборка команды - исполнение команды } – останов
В фигурных скобках указаны 2 действия, которые повторяются в зависимости от количества команд. Каждая команда считывается в оперативную память компьютера, а затем последовательно передается процессору. В процессоре есть набор своих встроенных в него ячеек памяти, которые называются регистрами процессора. Каждая такая ячейка имеет свое назначение и все они разбиваются на 2 типа:
1) доступные пользовательским программам:
регистры данных: для хранения данных для выполнения команды, они бывают разных типов для хранения данных разных типов
адресные регистры: в них заносятся адреса команд и данных в основной памяти
2) управляющие (не доступны пользовательским программам):
программный счетчик: содержит адрес команды, которая должна быть выбрана из памяти
регистр команд: содержит последнюю выбранную из памяти команду
флаги (коды условий): это набор битов, которые устанавливаются процессором в зависимости от результата выполнения команд.
Регистры процессора можно сравнить с ящиками на рабочем столе, в которых находятся инструменты и материалы, необходимые для работы в данный момент. А оперативную память можно представить как склад, который находится в другом задании. Адресный регистр можно представить как ящик, в котором лежит записка с указанием где именно на складе находится нужный вам материал. Регистр команд - это как другой ящик, в котором лежит инструкция по выполнению работы (что и как нужно сделать). Программный счетчик – это как 3-ий ящик, в котором указано, где нужно взять следующую инструкцию после того как закончите выполнять текущую. Чтобы выполнить какую- либо работу вам нужно пойти на склад (оперативную память) и взять материалы для текущей работы. Затем разложить материалы на рабочем столе по ящичкам (регистры данных), взять инструкцию (из регистра команд) и выполнить ее. После выполнения инструкции результаты разложить по ящичкам для заказчика (флагам). Затем посмотреть, где взять следующую инструкцию (из программного счетчика) и все повторить сначала: пойти на склад...
Все действия процессора можно условно разбить на:
процессор - память
процессор - устройства ввода-вывода
обработка данных (вычисления производимые процессором над данными)
управление (выбор действий по условию, повторение команд...)
Пример:
каждая команда имеет вид:
биты 1-4: Код команды | биты 5-16: Адрес данных в памяти |
сами данные в памяти часто хранятся тоже в виде 16 бит (это одно слово), где первый бит – это знак числа, а остальные биты – само число.
Представим, что на вход процессору дана задача из 3 команд:
1) 0001 0111 0001 0101 - команда 0001- загрузить значение из памяти (по адресу 0111 0001 01012 =71516) в регистр-аккумулятор
2) 0101 0111 0001 0110 - команда 0101- добавить к аккумулятору значение ячейки памяти(по адресу 71616)
3) 0010 0111 0001 0110 - команда 0101- сохранить содержимое аккумулятора в памяти(по адресу 71616)
Каждую из этих команд можно изобразить в виде 16-ого числа (1 715, 5 716, 2 716)
Сами команды находятся в оперативной памяти по адресам 100, 101, 102. В регистре программного счетчика будет находиться адрес первой команды т.е. адрес 100. Она будет выполнена так:
Исходное состояние ячеек оперативной памяти и регистров процессора:
Память Регистры процессора
N ячейки | значение в ячейке | значение в регистре | название регистра | |
100 | прогр. счетчик | |||
101 | аккумулятор | |||
102 | регистр команды | |||
... | ||||
715 | ||||
716 | ||||
... |
1) 0001 0111 0001 0101 - загрузить значение из памяти (по адресу 71516) в регистр-аккумулятор. После выполнения этой команды в регистр «аккумулятор» скопируется число 0004 из ячейки памяти с адресом715
Память Регистры процессора
N ячейки | значение в ячейке | значение в регистре | название регистра | |
100 | прогр. счетчик | |||
101 | аккумулятор | |||
102 | регистр команды | |||
... | ||||
715 | ||||
716 | ||||
... |
2) 0101 0111 0001 0110 - добавить к аккумулятору значение ячейки памяти(по адресу 71616)
Память Регистры процессора
N ячейки | значение в ячейке | значение в регистре | название регистра | |
100 | прогр. счетчик | |||
101 | аккумулятор | |||
102 | регистр команды | |||
... | ||||
715 | ||||
716 | ||||
... |
3) 0010 0111 0001 0110 - сохранить содержимое аккумулятора в памяти(по адресу 71616)
Память Регистры процессора
N ячейки | значение в ячейке | значение в регистре | название регистра | |
100 | прогр. счетчик | |||
101 | аккумулятор | |||
102 | регистр команды | |||
... | ||||
715 | ||||
716 | ||||
... |
Это простой пример работы процессора, при этом показана только работа с памятью.
Процессор может аналогично ввод-вывод данных выполнять на устройства ввода-вывода. Современные процессоры выполняют команды, в состав которых входит много адресов и используют множество регистров, при этом многие регистры для данных 32-битные, а не 16-битные.
Весь процесс исполнения можно изобразить схемой:
память <------> процессор <------> устройства ввода-вывода
Процессор взаимодействует с устройствами с помощью системной шины. Ее разрядность влияет на скорость обмена данных.
Особенности работы на компьютерах без ОС:
3) программы выполнялись последовательно: сначала выполнялась программа одного пользователя, а затем запускалась программа другого пользователя.
4) Расписание: каждому пользователю отводилось свое время, которое он заказывал для выполнения его программы.
5) Подготовка к работе: для запуска программы нужно было предварительно загрузить в память машины компилятор с этого языка и саму программу(с магнитных лент или перфокарт), затем сохранить скомпилированную программу (на магнитную лент или перфокарты) и уже затем снова загрузить скомпилированную программу (если нужно добавить библиотечные функции) и запустить на выполнение. При этом каждое действие выполнялось вручную специальными командами. Если возникала ошибка в программе, то весь процесс повторялся сначала.
НЕДОСТАТКИ:
· простои машины: если пользователь заканчивал пропускать задание раньше своего расписания, то компьютерное время не использовалось (а оно было очень дорогое!)
· длительная отладка программ: т.к. процесс подготовки занимал много времени, то отладка (исправление ошибок) очень долгая
· большая потеря времени программиста на запуск программ и их выполнение.
Дата публикования: 2014-11-29; Прочитано: 378 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!