Исключающее «ИЛИ», сложение по модулю 2, XOR, логическое сложение, строгая дизъюнкция, поразрядное дополнение, побитовый комплемент — такое количество названий говорит о важности этой операции. Для двух переменных результат выполнения операции является истинным тогда и только тогда, когда лишь один из аргументов является истинным. Приоритет операции такой же, как у дизъюнкции |
Название операции «исключающее ИЛИ» обусловлено тем, что результат данной операции отличается от результата «ИЛИ» только в одном случае из четырех случаев входа — случай одновременной истинности обоих аргументов «исключается». Ещё в русской грамматике значение данной логической связки передаётся союзом «либо». Обозначение Å, конечно, короче.
13. Побитовые операции процессора
Логический сдвиг
Логический сдвиг влево |
Логический сдвиг вправо |
Сдвиг, при котором уходящий бит исчезает, не влияя на оставшиеся биты, а на месте появившегося бита записывается бит 0.
Пример работы операции сдвига:
- Пусть у нас есть число 10101010b (в двоичной системе).
- Если сделать сдвиг влево на 1 бит, то получим число 01010100b.
- Если сделать сдвиг исходного числа вправо на 1 бит, то получим число 01010101b.
В большинстве процессоров уходящий бит сохраняется во флаге переноса. Эта функция широко используется при работе со многобайтовыми числами.
Арифметический сдвиг
Арифметический сдвиг влево |
Арифметический сдвиг вправо |
При этом сдвиге слово рассматривается не просто как группа битов, а как целое число в дополнительном коде. При сдвиге влево ведёт себя как логический сдвиг, при сдвиге вправо уходящий бит исчезает, не влияя на оставшиеся биты, а на месте появившегося бита устанавливается бит, соответствующий знаку.
|
Пример №1
Пример работы операции сдвига 8 битного числа в прямом коде:
- Пусть у нас есть 8 битное число: 0000 0010b = 2. (записанное в двоичной системе, в прямом коде).
- Cдвиг влево на 1 бит, дает число: 00000100b = 4.
- Сдвиг вправо на 1 бит, дает число: 00000001b = 1.
Пример №2
Пример работы операции сдвига 8 битного числа записанного в дополнительном до 2х коде:
- Пусть у нас есть число 11111010b = −6 (в двоичной системе, в дополнительном коде).
- Если сделать сдвиг влево на 1 бит, то получим число 11110100b = −12.
- Если сделать сдвиг исходного числа вправо на 1 бит, то получим число 11111101b = −3.
Вывод
Легко заметить, что при арифметическом сдвиге сдвиг влево соответствует умножению на 2, а сдвиг вправо — делению на 2 (в общем случае — на основание системы счисления) с округлением к −∞. Например:
1011 = −5 1111 = −1>>a 1 >>a 1 ---- ---- 1101 = −3 1111 = −1Схемотехническая реализация операций сдвига очень проста. Именно поэтому эти операции рекомендуют использовать для операций умножения и деления целых чисел на числа, равные степени 2 (2, 4, 8, 16, 32, 64 и т. д.) — если, конечно, такое округление отрицательных чисел не мешает.
Циклический сдвиг
Циклический сдвиг влево |
Циклический сдвиг вправо |
При этом сдвиге уходящий бит появляется на месте появившегося свободного на другом конце числа.
Пример
- Пусть у нас есть число 11111010b (в двоичной системе).
- Если сделать сдвиг влево на 1 бит, то получим число 11110101b.
- Если сделать сдвиг вправо на 1 бит, то получим число 01111101b.
|
14. Состав внутренних регистров процессора Intel в реальном режиме, назначение и способ использования.
15. Назначение регистра флагов, признаки результатов выполнения команд.
Процессор i8086 был выпущен компанией Intel в 1978 году, и являлся первым 16-ти разрядным процессором фирмы Intel. Процессор содержал 14 16ти разрядных регистров, имел 20-разрядную шину адрес, что позволило адресовать 1Мб памяти.
Современные процессоры Intel являются крайне сложными устройствами. В рамках данного курса ограничимся следующими необходимыми сведениями:
1. 32х разрядные регистры и вычислительные устройства
Доступны 3 режима работы: реальный (8086), защищённый (80386), режим v86
Адресуется 4Гб памяти (64Гб для Pentium Pro и старше)
Сначала рассмотрим программирование процессора в реальном режиме.
Регистр процессора — это сверхбыстрая память внутри процессора, предназначенная для хранения временных данных и результатов операций (регистры общего назначения), или содержащая данные, необходимые для работы процессора — базовые адреса, адреса таблиц, уровни доступа и т.д. (специальные регистры). Современные процессоры Intel(AMD) содержат большое количество регистров (около 50), большинство из которых имеет специальное назначение (управление состоянием процессора, управление задачами и виртуальной памятью, и т.д.) и используется только в программировании операционных систем.
К регистрам общего назначения процессоров Intel относят 8 регистров — EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Регистры EAX, EBX, ECX и EDX могут использоваться для любых целей без ограничений — временного хранения данных, аргументов или результатов различных операций. В некоторых командах используется только некоторое подмножество этих регистров — команды умножение, деления, организации циклов и др. Младшие 16 бит из этих регистров имеют собственное название — AX, BX, CX и DX соответственно. В процессорах 8086-80286 существовали только 16-ти разрядные части этих регистров, 32-битные регистры EAX, EBX, ECX и EDX появились только в процессорах 80386. Кроме этого, отдельные байты регистров AX-DX также доступны как отдельные 8-ми разрядные регистры и имеют свои имена, старшие байты — AH, BH, CH, DH, младшие — AL, BL, CL, DL соответственно.
|
Регистры ESI, EDI, EBP и ESP имеют более конкретное назначение и применяются для хранения временных переменных различного рода. Регистры ESI, EDI чаще всего используются для косвенной адресации памяти и работы со строками, регистры ESP и EBP при работе со стеком. Также как и в случае с регистрами EAX-ECX младшие 16 разрядов этих регистров доступны по именам SI, DI, BP и SP соответственно, в процессорах до 80386 присутствовали только 16-ти разрядные регистры.
Регистры CS, DS, ES, GS, FS и SS называются сегментными регистрами, и являются регистрами специального назначения. В этих регистрах хранятся 16ти разрядные числа по которым процессор определяет базовую часть адреса, начало сегмента, который используется для вычисления реального (или, как говорят эффективного) адреса. Регистр CS используется для определения сегмента, в котором находится исполняемая часть программы, для определения эффективного адреса исполняемой команды используется пара регистров CS:IP. Регистр SS для определения сегмента в котором размещается стек, для определения эффективного адреса вершины стека используется пара регистров SS:SP. DS, ES, GS и FS (GS и FS появились только в процессорах 80386) могут использоваться программистом для определения собственных сегментов, и называются регистрами сегментов данных.
Регистр признаков, также называемый регистром флагов — FLAGS. Регистр недоступен для прямого обращения. Каждый бит является флагом, то есть устанавливается процессором в 1 при выполнении некоторого условия в процессе выполнения команды, и используется процессором для управления поведением программы. Рассмотрим наиболее значимые флаги:
• CF – флаг переноса. Устанавливается в 1, если результат предыдущей операции не уместился в приёмнике и произошел перенос из старшего бита или произошёл заём при вычитании. Пример: после выполнения команды прибавления 1 к 0FFFFh флаг переноса будет установлен CF=1.
PF – флаг чётности. Устанавливается если младший байт результата предыдущей команды содержит четное число битов, равных 1.
AF – флаг вспомогательного переноса. Устанавливается если в результате операции произошёл перенос из 3го бита в 4й.
ZF – флаг нуля. Устанавливается, если результат предыдущей команды — ноль.
SF — флаг знака. В точности равен старшему биту результата
DF – флаг направления. Используется командами обработки строк. Если DF=1 строки обрабатываются в сторону уменьшения адресов, DF=0 – в сторону увеличения.
OF – флаг переполнения. Устанавливается в 1, если в результате выполнения предыдущей операции с целыми числами со знаком получилось число выходящее за допустимые пределы. Например при сложении двух положительных чисел получилось число с единицей в старшем разряде.
16. Понятие шины и передача данных, ширина шины, состав шины.
Разрядность шины определяется числом параллельных проводников, входящих в нее. Первая шина ISA для IBM PC была восьмиразрядной, т.е. по ней можно было одновременно передавать 8 бит. Системные шины современных ПК, например, Pentiurr IV — 64-разрядные.
Пропускная способность шины определяется количеством байт информации, передаваемых по шине за секунду. Для определения пропускной способности шины необходимо умножить тактовую частоту шины на ее разрядность. Например, для 16-разрядной шины ISA пропускная способность определяется так
(16 бит * 8,33 МГц): 8 = 16,66 Мбайт/с.
При расчете пропускной способности, например шины AGP, следует учитывать режим ее работы: благодаря увеличению в два раза тактовой частоты видеопроцессора и изменению протокола передачи данных удалось повысить пропускную способность шины в два (режим 2х) или в четыре (режим 4*) раза, что эквивалентно увеличению тактовой частоты шины в соответствующее число раз (до 133 и 266 МГц соответственно).
Все шины компьютера можно разделить за их предназначением на несколько типов. Вот они:
- Шины данных — все шины, которые используются для передачи данных между процессором компьютера и периферией. Для передачи могут использоваться как последовательный, так и параллельный методы, можно передавать от одного до восьми бит за один раз. По размеру данных, которые можно передать за один раз такие шины делятся на 8, 16, 32 и даже 64 битные;
- Адресные шины — связаны с определенными участками процессора и позволяют записывать и читать данные из оперативной памяти;
- Шины питания — эти шины питают электричеством различные, подключенные к ним устройства;
- Шина таймера — эта шина передает системный тактовый сигнал для синхронизации периферийных устройств, подключенных к компьютеру;
- Шина расширений — позволяет подключать дополнительные компоненты, такие как звуковые или ТВ карты;
В то же время, все шины можно разделить на два типа. Это системные шины или внутренние шины компьютера, с помощью которых процессор соединяется с основными компонентами компьютера на материнской плате, такими как память. Второй вид — это шины ввода/вывода, которые предназначены для подключения различных периферийных устройств. Эти шины подключаются к системной шине через мост, который реализован в виде микросхем процессора.
Также к шинам ввода/вывода подключается шина расширений. Именно к этим шинам подключаются такие компоненты компьютера, как сетевая карта, видеокарта, звуковая карта, жесткий диск и другие и их мы более подробно рассмотрим в этой статье.
Вот наиболее распространенные типы шин в компьютере для расширений:
- ISA — Industry Standard Architecture;
- EISA — Extended Industry Standard Architecture;
- MCA — Micro Channel Architecture;
- VESA — Video Electronics Standards Association;
- PCI — Peripheral Component Interconnect;
- PCI-E — Peripheral Component Interconnect Express;
- PCMCIA — Personal Computer Memory Card Industry Association (также известна как PC bus);
- AGP — Accelerated Graphics Port;
- SCSI — Small Computer Systems Interface.
А теперь давайте более подробно разберем все эти шины персональных компьютеров.
Шина ISA
Раньше это был наиболее распространенный тип шины расширения. Он был разработан компанией IBM для использования в компьютере IBM PC-XT. Эта шина имела разрядность 8 бит. Это значит что можно было передавать 8 бит или один байт за один раз. Шина работала с тактовой частотой 4,77 МГц.
Для процессора 80286 на базе IBM PC-AT была сделана модификация конструкции шины, и теперь она могла передавать 16 бит данных за раз. Иногда 16 битную версию шины ISA называют AT.
Из других усовершенствований этой шины можно отметить использование 24 адресных линий, что позволяло адресовать 16 мегабайт памяти. Эта шина имела обратную совместимость с 8 битным вариантом, поэтому здесь можно было использовать все старые карты. Первая версия шины работала на частоте процессора — 4,77 МГц, во второй реализации частота была увеличена до 8 МГц.
Шина MCA
Компания IBM разработала эту шину в качестве замены для ISA, для компьютера PS/2, который вышел в 1987 году. Шина получила еще больше усовершенствований по сравнению с ISA. Например, была увеличена частота до 10 МГц, а это привело к увеличению скорости, а также шина могла передавать 16 или 32 бит данных за раз.
Также была добавлена технология Bus Mastering. На плате каждого расширения помещался мини-процессор, эти процессоры контролировали большую часть процессов передачи данных освобождая ресурсы основного процессора.
Одним из преимуществ этой шины было то, что подключаемые устройства имели свое программное обеспечение, а это значит что требовалось минимальное вмешательство пользователя для настройки. Шина MCA уже не поддерживала карты ISA и IBM решила брать деньги от других производителей за использование этой технологии, это сделало ее непопулярной с сейчас она нигде не используется.
Шина EISA
Эта шина была разработана группой производителей в качестве альтернативы для MCA. Шина была приспособлена для передачи данных по 32 битному каналу с возможностью доступа к 4 Гб памяти. Подобно MCA для каждой карты использовался микропроцессор, и была возможность установить драйвера с помощью диска. Но шина все еще работала на частоте 8 МГц для поддержки карт ISA.
Слоты EISA в два раза глубже чем ISA, если вставляется карта ISA, то она использует только верхний ряд разъемов, а EISA использует все разъемы. Карты EISA были дорогими и использовались обычно на серверах.
Шина VESA
Шина VESA была разработана для стандартизации способов передачи видеосигнала и решить проблему попыток каждого производителя придумать свою шину.
Шина VESA имеет 32 битный канал передачи данных и может работать на частоте 25 и 33 МГц. Она работала на той же тактовой частоте, что и центральный процессор. Но это стало проблемой, частота процессора увеличивается и должна была расти скорость видеокарт, а чем быстрее периферийные устройства, тем они дороже. Из-за этой проблемы шина VESA со временем была заменена на PCI.
Слоты VESA имели дополнительные наборы разъемов, а поэтому сами карты были крупными. Тем не менее сохранялась совместимость с ISA.
Шина PCI
Peripheral Component Interconnect (PCI) — это самая новая разработка в области шин расширений. Она является текущем стандартом для карт расширений персональных компьютеров. Intel разработала эту технологию в 1993 году для процессора Pentium. С помощью этой шины соединяется процессор с памятью и другими периферийными устройствами.
PCI поддерживает передачу 32 и 64 разрядных данных, количество передаваемых данных равно разрядности процессора, 32 битный процессор будет использовать 32 битную шину, а 64 битный — 64 битную. Работает шина на частоте 33 МГц.
В PCI можно использовать технологию Plug and Play (PnP). Все карты PCI поддерживают PnP. Это значит, что пользователь может подключить новую карту, включить компьютер и она будет автоматически распознана и настроена.
Также тут поддерживается управление шиной, есть некоторые возможности обработки данных, поэтому процессор тратит меньше времени на их обработку. Большинство PCI карт работают на напряжении 5 Вольт, но есть карты, которым нужно 3 Вольта.
Шина AGP
Необходимость передачи видео высокого качества с большой скоростью привела к разработке AGP. Accelerated Graphics Port (AGP) подключается к процессору и работает со скоростью шины процессора. Это значит, что видеосигналы будут намного быстрее передаваться на видеокарту для обработки.
AGP использует оперативную память компьютера для хранения 3D изображений. По сути, это дает видеокарте неограниченный объем видеопамяти. Чтобы ускорить передачу данных Intel разработала AGP как прямой путь передачи данных в память. Диапазон скоростей передачи — 264 Мбит до 1,5 Гбит.
PCI-Express
Это модифицированная версия стандарта PCI, которая вышла в 2002 году. Особенность этой шины в том что вместо параллельного подключения всех устройств к шине используется подключение точка-точка, между двумя устройствами. Таких подключений может быть до 16.
Это дает максимальную скорость передачи данных. Также новый стандарт поддерживает горячую замену устройств во время работы компьютера.
PC Card
Шина Personal Computer Memory Card Industry Association (PCICIA) была создана для стандартизации шин передачи данных в портативных компьютерах.
Шина SCSI
Шина SCSI была разработана М. Шугартом и стандартизирована в 1986 году. Эта шина используется для подключения различных устройств для хранения данных, таких как жесткие диски, DVD приводы и так далее, а также принтеры и сканеры. Целью этого стандарта было обеспечить единый интерфейс для управления всеми запоминающими устройствами на максимальной скорости.
Шина USB
Это стандарт внешней шины, который поддерживает скорость передачи данных до 12 Мбит/сек. Один порт USB (Universal Serial Bus) позволяет подключить до 127 периферийных устройств, таких как мыши, модемы, клавиатуры, и другие устройства USB. Также поддерживается горячее удаление и вставка оборудования. На данный момент существуют такие внешние шины компьютера USB, это USB 1.0, USB 2.0, USB 3.0, USB 3.1 и USB Type-C.
17. Базирование адресов в ЭВМ. Логический и физический адреса.
Адреса бывают логические и физические. Разберем, что это значит.
Адреса в основной памяти, характеризующие реальное расположение данных в физической памяти, называются физическими адресами. Набор физических адресов, с которым работает программа, называют физическим адресным пространством. Иными словами физический адрес это адрес, по которому процессор (или другое устройство) обращаются к RAM, используя шину адреса. Совсем просто можно сказать, что физический адрес это номер байта, к которому мы обращаемся, в адресном пространстве.
Пользовательская программа, которая загружается в память для исполнения, не видит реальных физических адресов, а имеет дело с, так называемыми, логическими адресами. Это нужно, потому что одна и та же программа может быть загружена в разные области памяти, в зависимости от того какие другие программы к этому моменту уже загружены в память. Логические адреса обычно образуются на этапе создания загрузочного модуля программы. Т.е. логический адрес это адрес, который «знает» программа. Набор адресов, используемый программой, называют логическим адресным пространством
В процессоре должен быть особый узел – блок преобразования адреса (БПА). Программа указывает свой (логический) адрес, он попадает в этот блок, блок что-то с ним делает такое, чтобы из этого адреса сделать физический, и лишь затем такой преобразованный адрес попадает на шину адреса. Это называется отображение логического адреса на физический, или трансляция логического адреса в физический. Способ отображения зависит от режима работы процессора отдельно для реального и отдельно для защищенного режима работы.