
- •Базовая структура компьютера
- •Процессор, оперативная память, устройства ввода-вывода, внешняя память, шины.
- •Представление информации. Целые, вещественные, символьные данные.
- •Структуры машинных команд. Трех-, двух-, одноадресные системы команд процессоров.
- •Стек. Его использование и аппаратная поддержка.
- •Risc-процессоры.
- •Cisc-процессоры. Микрокомандный уровень архитектуры.
- •Пример базовой архитектуры - pdp-11
- •Структура процессора. Регистры и их назначение.
- •2.2. Архитектура с общей шиной. Адресное пространство.
- •2.3. Форматы команд.
- •2.3.1. Двух-, одно- и безадресные команды. Примеры
- •2.3.2. Организация ветвлений и циклов. Регистр состояния процессора.
- •2.4. Методы адресации.
- •2.4.1 Прямые методы адресации.
- •2.4.2. Косвенные методы адресации.
- •2.4.3. Использование счетчика команд и указателя стека в методах адресации.
- •2.4.4. Позиционно-независимые программы и методы адресации.
- •2.5. Организация ввода-вывода.
- •2.5.1. Контроллеры устройств. Регистры устройств и их адресация.
- •2.5.2. Ввод-вывод по опросу флага готовности.
- •2.5.3. Прерывания устройств и их обработка.
- •2.5.4. Система приоритетов в обработке прерываний.
- •2.5.5. Ввод-вывод с использованием механизма прерываний.
- •2.5.6. Устройства с блочной передачей данных.
- •2.5.7. Прямой доступ к памяти и его использование для ввода-вывода.
- •2.6. Синхронные прерывания (исключительные ситуации) и их обработка.
- •3. Шинная архитектура
- •3.1 Структура шин. Подшины адреса, данных, управления. Ширина шины.
- •3.2. Синхронизация шины. Синхронные и асинхронные шины.
- •3.3. Временные диаграммы операций обмена по шинам.
- •3.4 Арбитраж шины.
2.4.1 Прямые методы адресации.
Один из способов определения операнда — просто дать его полный адрес. Такой способ называется прямой адресацией. Как и непосредственная адресация, прямая адресация имеет некоторые ограничения: команда всегда будет иметь доступ только к одному и тому же адресу памяти. То есть значение может меняться, а адрес — нет. Таким образом, прямая адресация может использоваться только для доступа к глобальным переменным, адреса которых известны во время компиляции. Многие программы содержат глобальные переменные, поэтому этот способ широко используется. Каким образом компьютер узнает, какие адреса непосредственные, а какие прямые, мы обсудим позже.
2.4.2. Косвенные методы адресации.
Косвенная адресация является альтернативой индексной. Использование косвенного метода в сочетании с другими, такими, как регистровый, индексный или автоинкрементный, дает возможность получить весьма изощренные приемы адресации.
Существует множество способов применения косвенной адресации. Например, с ее помощью можно обеспечить передачу параметров в подпрограмму (как альтернатива индексному методу);
кроме того, косвенную адресацию можно использовать для создания структур данных и для многого другого. Все это осуществимо потому, что при косвенной адресации задается не просто «адрес операнда», а «адрес адреса операнда».
Машина позволяет обеспечить большую глубину вложения, адресуясь к ячейке, которая, в свою очередь, содержит адрес другой ячейки, к которой выполняется косвенная адресация.. По экономическим соображениям максимально возможное число бит в команде применяется для прямой адресации памяти, вследствие этого бит признака косвенной адресации употребляется как часть команд, а не как часть адреса операнда.
Когда машина имеет короткое слово и невозможна прямая адресация ко всем ячейкам памяти, тогда в первую очередь следует выполнить косвенную адресацию. Это объясняется тем, что обычно используемое в качестве косвенного адреса слово бывает длиннее, чем адресное поле команды, и поэтому с помощью косвенной адресации можно обратиться в любую область памяти, а затем уже выполнять индексирование.
Если же длина слова позволяет адресовать всю память, то предпочтительнее прежде исполнять индексацию, поскольку это облегчает, например, передачу параметров в подпрограмму.
2.4.3. Использование счетчика команд и указателя стека в методах адресации.
Подпрограммой обычно называется часть программы, к которой можно многократно обращаться из других, причем разных, мест основной программы с последующим возвратом в место, откуда произошел вызов.
Стек – это один из способов организации памяти, несколько отличающийся от организации памяти с произвольным доступом. Память ЭВМ, организованная в виде стека, включает в себя определенное количество одинаковых запоминающих ячеек, однако доступ к этим ячейкам не может осуществляться произвольным образом, т.е. в любое время к любой ячейке. Доступ к ячейкам стека осуществляется не по адресам ячеек, а только через так называемую «вершину стека» - ячейку памяти стека, доступную в данный момент времени. При последовательной записи данных в стек загружаемые данные последовательно помещаются на вершину стека, при этом ранее записанные данные как бы проталкиваются вглубь стека. В каждый момент времени для чтения доступно только слово, находящееся на его вершине. При этом прочитать слово можно только один раз, т.к. после прочтения оно выталкивается из стека и на его место становится слово, записанное ранее. Такой способ организации памяти коротко формулируют в виде: «последним пришел – первым вышел».
При работе со стеком содержимое регистра-указателя стека интерпретируется процессором как адрес «вершины» стека (адрес ячейки, в которой число, записанное в стек последним).
Регистр-указатель стека всегда содержит адрес последней записанной ячейки стека, то есть указывает на вершину стека.
Метод адресации ячеек памяти, который используется при засылке чисел в стек, носит название косвенная адресация через регистр (указатель стека) с предварительным автоуменьшением его содержимого.
Метод адресации ячеек памяти, который используется при чтении чисел из стека, носит название косвенная адресация через регистр (указатель стека) с предварительным автоувеличением (автоинкрементный метод адресации).
В ЭВМ автоматизация действий при обращении к подпрограммам осуществляется с помощью, имеющейся в системе команд любой ЭВМ пары команд вызов подпрограммы (передача управления на адрес первой команды подпрограммы) – возврат из подпрограммы (переход к команде, адрес которой является следующим за командой, вызывавшей подпрограмму).
При выполнении команды вызов подпрограммы процессор осуществляет следующие действия:
- текущее содержимое регистра-счетчика команд процессора (адрес, на который нужно вернуться из вызываемой подпрограммы) пересылается в стек.
- задаваемый в команде вызова подпрограммы адрес входа в подпрограмму помещается в регистр-счетчик команд.
- после этого из памяти считывается команда, адрес которой находится в счетчике команд, то есть первая команда подпрограммы, и начинается выполнение подпрограммы.
Командой возврат из подпрограммы должна завершаться любая подпрограмма:
- получив команду, процессор извлекает из стека записанный туда ранее командой вызов подпрограммы адрес возврата и помещает его в свой регистр-счетчик команд.
- тем самым управление передается команде, следующей за командой вызова подпрограммы.