В общем случае обработку информации на ВМ можно рассматривать в виде иерархической системы уровней, представленных в табл. 1.1.
Таблица 1.1
|
Пользователь данного уровня |
Уровень |
Примечания |
|
Постановщик задач |
6 – концептуальный (язык спецификаций) |
Задаются режимы и виды обработки данных, необходимые для решения задачи, состав системных ПС |
|
Пользователь функционального ПО, решающий задачи из конкретной предметной области |
5 – проблемно-ориентированных ПС (входной язык пакета программ) |
Уровень приложений для конкретной предметной области |
|
Разработчик функциональных программных комплексов |
4 – промежуточного ПО (например, язык UML) |
Middleware ( 1 - Delphi, Visual C; 2 - DCOM, CORBA, RMI) |
|
Разработчик функциональных (прикладных) программ |
3 – языков высокого уровня |
Паскаль, СИ, С++, Java, Prolog |
|
Системный программист, прикладной программист |
2 – ассемблера |
Программирование фрагментов программ высокой эффективности |
|
Системный программист
|
1 – ОС |
Выполнения привилегированных команд, управление памятью |
|
Программист/электронщик (системный архитектор) |
0 – машинных команд |
Цифровое кодирование и представление команд |
|
Программист/электронщик (системный архитектор) |
(–1) – микрокоманд (микроархитектурный уровень) |
Описание набора элементарных операций, реализующих машинные команды |
|
Электронщик
|
(–2) – межрегистровых передач |
Реализация элементарных операций как пересылок между регистрами |
|
Электронщик (технолог) |
(–3) – вентилей (цифровой логический уровень) |
Технологический уровень, устройства машины представляются в виде интегральных схем |
Системы промежуточного ПО:
1. Инструментальные среды программирования (Delphi, Visual C, С++ Builder)
2. Инструментальные технологии программирования (DCOM, CORBA, RMI, ECLIPSE)
Особенности многоуровневой организации:
1. Каждый верхний уровень интерпретируется одним или несколькими нижними уровнями.
2. Каждый из уровней можно проектировать независимо.
3. Модификация нижних уровней не влияет на реализацию верхних.
4. Чем ниже уровень реализации программы, тем более высокая производительность достижима.
Преобразование операторов языков высокого уровня (ЯВУ) в машинный код или даже в микрокоманды требует от транслятора, во-первых, умения распознать операторы и команды различных уровней и, во-вторых, для любого оператора ЯВУ – генерировать десятки или сотни команд низкого уровня. Это приводит к усложнению транслятора, увеличению трудоемкости его разработки и снижению производительности генерируемых программ (особенно, при отсутствии оптимизации). Наличие этих проблем называют семантическим разрывом между уровнями. Способы его преодоления зависят от типа архитектуры ВМ:
1) для традиционных ВМ, считающихся машинами со сложным набором команд (CISC), используется специализация машин, при которой операторы проблемно-ориентированных языков могут непосредственно выполняться аппаратными средствами машины; платой за повышение производительности является увеличение сложности устройства управления и отход от универсальности; примерами могут служить: аппаратная реализация графических преобразований; аппаратная реализация операций с векторами и матрицами;
2) переход к ВМ с сокращенным набором команд (RISC), характеризующихся ограниченным списком простых команд, оперирующих в основном данными, размещенными в регистрах; в результате реализация операторов ЯВУ на основе команд RISC-процессора оказывается почти столь же эффективной, что и аппаратная реализация, но не усложняет устройства управления.
В зависимости от способов связи между устройствами различают следующие виды организации ВМ:
1. Структура ВМ с непосредственными связями показана на рис. 1.2.
ЦП – центральный процессор
ОП – оперативная память
ВУ – внешнее устройство
Рис. 1.2
Каждое устройство может связываться с любым другим. Причем взаимодействие пары устройств можно организовать наиболее эффективно. Этот способ применялся в двух первых поколениях машин, но с возрастанием числа устройств машины такая организация становится сложной и дорогой в реализации.
2. Структура ВМ с канальной организацией показана на рис. 1.3.
ВУ
ВУ
Контроллер
Канал 1 (Мультиплексный)
ЦП ОП Канал 2 (Селекторный) Контроллер ВУ
Канал 3 (Мультиплексный)
Контроллер Контроллер
ВУ ВУ
ВУ ВУ



Рис. 1.3
Центральным элементом машины является память ОП, которая хранит программы ЦП и каждого из каналов, являющихся процессорами ввода-вывода, работающими параллельно с ЦП по собственной программе, выбираемой из ОП. Различают каналы: селекторный – управляет только одним ВУ и применяется для подключения быстрых устройств; мультиплексный – управляет несколькими более медленными ВУ.
При данной организации все еще очень большое количество связей. Большая специализация процессоров различного типа затрудняет их интегральное исполнение. Такая организация применялась в машинах третьего и частично четвертого поколений.
3. Cтруктура ВМ с магистральной организацией по типу «общая шина (Unibus)» показана на рис. 1.4.
А
Р
Б Общая шина (ОШ)
ЦП И
Т
Р
Память К1 МЛТП
ВУ1 К1 К2 К3
ВУ ВУ ВУ
Рис.1.4





Магистрально-модульная организация компьютера предполагает выделение общего универсального канала (магистрали связи между элементами системы – модулями) и определения общих правил взаимодействия. В центре ВМ – центральный процессор, управляющий информационной связью между устройствами, подключенными к магистрали (ВУ и память). Магистраль, называемая также Общей шиной (ОШ), представляет собой множество проводов. По одной группе проводов (шина данных) передается обрабатываемая информация, по другой (шина адреса) – адреса памяти или ВУ, к которым обращается процессор. Есть еще третья часть магистрали – шина управления, по ней передаются управляющие сигналы (например, сигнал запуска операции в устройстве и др.). Всякая информация, передаваемая от процессора к другим устройствам по шине данных, сопровождается адресом, передаваемым по адресной шине. Это может быть адрес ячейки в оперативной памяти или адрес ВУ.
На схеме через МЛТП обозначен мультиплексор, обеспечивающий подключение нескольких ВУ к одному входу ОШ по нагрузочной способности, К1-К3 – контроллеры ВУ, Арбитр – аппаратная система приоритетов, разрешающая конфликты при одновременном обращении устройств к общей шине.
Типичная шинная транзакция включает в себя две части: посылку адреса и прием (или посылку) данных. Шинные транзакции обычно определяются характером взаимодействия с памятью: транзакция типа "Чтение" передает данные из памяти (либо в ЦП, либо в устройство ввода-вывода), транзакция типа "Запись" записывает данные в память.
В качестве используемых и обрабатываемых в ВМ типов данных следует указать:
целые и вещественные числа, участвующие в арифметической обработке;
коды команд и адреса памяти (беззнаковые целые числа);
коды символов (беззнаковые целые числа), используемые в текстовых сообщениях;
битовые наборы (последовательность нулей и единиц), используемые в логических операциях;
отдельные биты, используемые в операциях условных переходов и как биты состояния устройств ВМ;
данные мультимедиа обработки (видео и аудио информация).
Представляются в позиционной системе счисления в виде
,
где S – основание системы счисления (СС), используются S = {2,8,10,16},
i = [0, s-1] - разрядный коэффициент
Если аппаратные средства ВМ используют двоичную СС (S=2), то в программах для компактной записи чисел применяют S = 8, 10,16. При записи чисел в программах для указания СС применяют окончания: B (двоичный), O (восьмеричный), D или пусто (десятичный), H (шестнадцатиричный). Приведем примеры записи чисел и их десятичные значения: 101B = 5, 101O = 65, 101D = 101, 101H = 257.
Для представления 16-ричных цифр, больших 9, используют буквы:
10 – A , 11 – B, 12 – C, 13 – D, 14 – E, 15 – F .
Наконец, заметим, что смешанные числа, содержащие целую и дробную часть, в позиционной СС в форме с фиксированной точкой представляются в виде

Для преобразования целых чисел (ЦЧ) из одной СС в другую используется правило: для получения числа в новой СС надо его значение в старой СС разделить на основание новой СС, представленное в старой СС, и последовательно получаемые числа остатка взять в обратном порядке. При этом для преобразования большого числа в двоичную СС лучше сначала преобразовать его в 16-ричную СС и затем каждую цифру заменить на тетраду (4 бита) ее двоичного изображения.
Для преобразования дробной части смешанного числа из одной СС в другую используется правило:
для получения дробной части числа в новой СС надо его значение в старой СС умножить на основание новой СС, представленное в старой СС, целую часть частичного произведения зафиксировать, а дробную снова умножить на основание новой СС и так повторять пока дробная часть очередного произведения не станет равной 0 или не будет достигнута требуемая точность. Полученные цифры целых частей произведений записать в прямом порядке как дробную часть числа в новой СС.
Обработка целых чисел.
Различают беззнаковое и знаковое (с учетом знака) представления и обработку ЦЧ. Беззнаковые двоичные ЦЧ длиной n бит изменяются в диапазоне [0, Nmax], где Nmax = 2n – 1 . Например:
n = 4 - диапазон [0, 15] , n = 8 - диапазон [0, 255] , n = 16 - диапазон [0, 65535],
n = 32 - диапазон [0, 232 = 4*230 4* (103) 3 = 4 *109].
Если результат арифметической обработки беззнаковых ЦЧ выходит за допустимый диапазон изменения, то возникает переполнение, которое фиксируется по наличию переноса из старшего разряда результата операции и установке флага переноса в «1».
При использовании ЦЧ с учетом знака диапазон их изменения разбивается на две части: положительные числа ( для n-битного числа - [0, 2n-1 – 1] ) и отрицательные числа [- 2n-1 , 0]. Если результат арифметической обработки положительного числа превышает 2n-1 – 1, то возникает переполнение (положительное), а для отрицательных чисел переполнение (отрицательное) возникает, если результат меньше (- 2n-1). ЦЧ с учетом знака могут представляться в 3-х формах: прямой код и два инверсных кода: обратный и дополнительный. Во всех 3-х формах старший разряд считается знаковым и для положительных чисел равен 0, а для отрицательных равен 1.