Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
conspectVM.pdf
Скачиваний:
27
Добавлен:
10.02.2016
Размер:
3.85 Mб
Скачать

О выполнении некоторых команд i8080

Команды пересылки данных между регистрами кодируются в одном байте (это типичный случай регистровой адресации) следующим образом:

01DDDSSS

где DDD - номер регистра назначения; SSS - номер регистра приёмника. Соответственно 01 - код операции пересылки. Никаких флагов команды пересылки не устанавливают. На выполнение команды тратится один машинный цикл.

Кодировка номера регистра (DDD и SSS)

Код Регистр

000 B

001 C

010 D

011 E

100H

101L

110M

111A

M – содержимое ячейки памяти, адресуемое регистровой парой HL .

Пересылка из ячейки памяти в регистр и из регистра в память осуществляется с помощью косвенно регистровой адресации. Это означает, что адрес ячейки памяти загружается в регистровую пару HL, а в командах типа MOV A,M (такие команды кодируются как 01DDD110) в регистр A будет загружено содержимое ячейки памяти, адрес которой содержится в HL. Так как в таких командах требуется обращение к памяти, то на их выполнение нужно два машинных цикла. Система команд процессора очень экономична - она не рассчитана на поддержку языков высокого уровня. Все это появится в Intel-процессорах позже.

Замечу, что средняя длина команды в типичной программе равна двум байтам.

Аналогично работают и команды записи в память.

Команды непосредственной пересылки двухбайтные. В первом байте кодируются код операции и регистр, а второй содержит байт пересылаемых данных:

00DDD110 XXXXXXXX

Очевидно, что для исполнения команды требуется два цикла.

Более интересна версия этой команды MVI M,d8, когда байт непосредственных данных пишется в память.

Она кодируется так:

00110110 ХХХХХХХХ

Исполнение занимает три цикла.

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

Команда кодируется так:

00RP0001 xxxxxxxx zzzzzzzz

где RP - регистровая пара; хххххххх - младший байт данных, zzzzzzzzz - старший байт данных.

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

Команда прямой загрузки аккумулятора LDA a16 позволяет загрузить в него данные, на которые указывает адрес, содержащийся в самой команде.

Длина команды три байта. Кодируется она так:

00111010 хххххххх zzzzzzzz

где xxxxxxxx - младшая часть адреса; zzzzzzzz - старшая часть адреса.

Исполнение занимает машинных четыре цикла.

Симметричная по действию команда STA.

Команда LHLD addr (мнемоника расшифровывается Load H and L Direct) загружает в L содержимое ячейки памяти по адресу, кодируемому во втором и третьем байтах команды (т. е. адресация прямая). В H загружается байт из ячейки addr+1.

Команда выполняется за пять машинных циклов. Обратная ей по действию команда SHLD (Store H and L Direct).

Команда LDAX reg (мнемоника от Load accumulator indirect). Содержимое ячейки памяти, адресуемой регистровой парой BC или DE, за два цикла загружается в аккумулятор.

Обратная по действию команда STAX reg.

Очень полезная команда XCHG. (H)←>(D), (L)←>(E). Выполняется за один цикл.

Арифметические команды

Начнем со сложения. Сложить аккумулятор с содержимым регистра ADD reg

Кодировка: 10000RRR

Выполняется за один цикл. Обратите внимание, что все арифметические команды изменяют флаги: Z,S,P,CY,AC.

Для выполнения многобайтового сложения необходимо учитывать перенос. Поэтому младшие байты слагаемых складываются с помощью команды ADD, а все последующие в помощью команды ADC reg. Она учитывает при сложении содержимое флага переноса. Понятно, что в этой системе команд легко написать арифметику, которая будет работать с целыми числами длиной несколько килобайт (что и было сделано в системе muMATH-80).

Аналогично устроены команды вычитания.

Разновидностью команды сложения является команда инкремента регистра, необходимая для адресной арифметики и организации циклов.

INR reg

Кодировка: 00ККК100

Устанавливаются все флаги, за исключением CY.

Обратная по действию команда DCR reg.

Довольно редко используется команда DAA (мнемоника от Decimal Adjust Accumulator) выполняет следующие действия: если содержимое младшего полубайта (нибла) аккумулятора меньше 9 или установлен флаг CY, то (A) + 6, если значение старшего полубайта больше 9 или установлен флаг CY, то 6 добавляется к содержимому старшего полубайта.

При этом устанавливаются все флаги.

Логические команды

ANA reg

Флаг CY сбрасывается, а AC устанавливается (в 8085). В микропроцессоре 8080 на эти флаги влияет результат операции над третьими битами операндов.

В командах групп XRA и ORA флаги CY и AC сбрасываются.

CMP reg - сравнить регистр (Compare register), вычитает содержимое регистра из аккумулятора. Содержимое аккумулятора не изменяется. Флаги устанавливаются как при вычитании. Z=1,

если (A) = (reg). CR = 1, если (A) < (reg).

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

(CY) ←(b7).

RRC - сдвигает содержимое аккумулятора вправо. (CY)← (b0), (b7)←(b0).

RAL - (Rotate Left trough Carry). Сначала (CY) заносится в младший бит аккумулятора, а потом в CY записывается содержимое старшего его бита.

Формально: (b0)←(CY), (CY)←(b7).

Аналогично со сдвигом вправо: (Bn)←(Bn+1), (CY)←(b0), (b7)←(CY).

Команда CMA (мнемоника от Complement Accumulator) инвертирует каждый бит аккумулятора, т. е. 0 становится 1 и наоборот. Флаги не устанавливаются.

Команда CMC инвертирует содержимое флага переноса. Другие флаги не устанавливаются.

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

CALL addr - при ее выполнении в стек записывается адрес следующей за CALL команды, значение указателя стека дважды декрементируется, а управление передается по указанному адресу.

Команда возврата из подпрограммы записывает в счетчик команд адрес из вершины стека, увеличивает указатель стека на 2 и передает управление на новый адрес. Поэтому если модифицировать адрес возврата в стеке, то можно перейти совсем в другое место.

Для этого есть, впрочем, более удобная возможность - команда PCHL. Она позволяет передать управление по адресу в регистровой паре HL.

Иногда в системных программах используется команда останова HLT. Процессор останавливается, регистры и флаги не устанавливаются. Для запуска важно подать сигнал Reset.

IN port - данные из порта с указанным номером считываются в аккумулятор. Циклов 3. Флаги не изменяются.

OUT port - содержимое аккумулятора помещается на шину данных для записи в указанный в команде порт.

Команда JMP.

Данная команда передает управление в программе по адресу, указанному в коде команды.

Код

11000011 JMP <A16> ALALALAL AHAHAHAH

где <A16> - выражение со значением от нуля до 65535 ALALALAL - младший байт адреса

AHAHAHAH - старший байт адреса

Команды условного перехода.

 

 

 

 

 

Команда

условного перехода проверяет состояние триггера

признака, определенного именем команды.

 

 

 

Если

состояние

триггера

удовлетворяет

условию,

определенному

именем

команды, то управление в программе

передается

по

адресу,

который указан

в коде

команды. В

противном случае управление передается следующей команде.

Код

 

 

 

 

 

 

 

• 11JJJ010 •

<J> <A16> • IF (COND)

• 3

10 •

• ALALALAL •

 

•THEN PC<=<A16>•

• AHAHAHAH •

 

•ELSE PC<=PC+1 •

где

<J> - имя команды JNZ JZ JNC JC

JPO JPE JP

JM

<COND> - условие

Z=0 Z=1 CY=0 CY=1 P=0 P=1 S=0 S=1

 

JJJ - шабл. битов 000 001 010

011

100 101 110 111

Команда RST.

 

 

 

 

 

 

 

Данная

команда

передает

управление

подпрограмме

обработки прерывания по адресу, равному номеру прерывания, умноженному на 8, при этом сохраняется адрес возврата из

подпрограммы, т.е.

адрес следующей команды в стеке.

Код

11NNN111

RST <N>

 

где

<N> - номер прерывания 0 1 2

3 4 5 6 7

 

NNN - шаблон битов000 001 010 011

100 101 110 111

Команда EI.

Данная команда устанавливает триггер разрешения прерываний в состояние "1", тем самым разрешает прерывание микропроцессора после выполнения следующей команды.

Код 11111011

Команда DI.

Данная команда устанавливает триггер разрешения прерываний в состояние "0", тем самым запрещает прерывание микропроцессора после ее выполнения.

Код 11110011

Микросхема КР580ВМ80А - функционально законченный однокристальный микропроцессор с фиксированной системой команд. Применяется в устройствах обработки данных и управления.

Микропроцессор имеет раздельные 16-разрядный канал адреса и 8-разрядный канал данных. Канал адреса обеспечивает прямую адресацию к внешней памяти объемом до 65 536 байт и 256 устройствам ввода и вывода.

Условное графическое обозначение микросхемы показано на рисунке 1, назначение выводов указано в таблице 1. Структурная схема микропроцессора изображена на рисунке 2.

Рис. 1. Условное графическое обозначение микросхемы процессора КР850ВМ80А

Таблица 1

Рис. 2. Структурная схема микропроцессора КР850ВМ80А

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

Втакте Т1 микропроцессор выдает на адресный канал адрес ячейки, в которой хранится команда программы, а через канал данных - информацию состояния.

Втакте Т2 анализируются состояния сигналов на входе RDY, "Подтверждение останова", и в зависимости от состояния этих сигналов микропроцессор переходит в состояние ожидания, останова или приступает к выполнению такта Т3.

Втакте Т3 при наличии сигнала высокого уровня на входе RDV микропроцессор принимает информацию по каналу данных, анализирует состояние сигнала на входе HLD, и если этот сигнал высокого уровня, то после окончания такта Т3 переходит в состояние захвата.

Взависимости от кода выполняемой команды машинный цикл завершается после выполнения тактов Т3, Т4 или Т5.

Вконце машинного цикла снова анализируется состояние сигнала на входе HLD. При низком уровне сигнала проверяется, окончено ли выполнение команды. Если команда не закончена, то микропроцессор выполняет следующий машинный цикл команды, начиная с такта Т1. В конце каждой команды микропроцессор анализирует состояние сигнала на входе INT. Если сигнал высокого уровня и прерывание ранее было разрешено командой EI, то микропроцессор переходит к выполнению машинного цикла "Прерывание", начиная с такта Т1. В противном случае первый машинный цикл новой команды начинается с такта Т1.

Действия, выполняемые микропроцессором в конкретном машинном цикле, определяются 8-разрядной информацией состояния, которая выдается через канал данных в такте Т1 каждого машинного цикла. Эта информация может использоваться для выработки сигналов обращения к микросхемам памяти, устройствам ввода/вывода и для организации различных режимов работы микропроцессора.

Взависимости от сочетания сигналов состояния, выдаваемых в конкретном цикле,

машинные

циклы

 

можно

разделить

на

 

10

типов:

1.

Цикл

М1

-

прием

первого

байта

команды

в

регистр

команд.

2.

Цикл чтения ЗУ (запоминающего устройства) по содержимому программного счетчика

или

содержимому

одного

из

 

регистров

ВС,

DE,

HL.

3.

Цикл записи в ЗУ - запись в ЗУ по содержимому одного из регистров ВС, DE, HL.

4.

Цикл

чтения

 

стека

-

чтение

ЗУ

по

содержимому

указателя

стека.

5.

Цикл

записи

в

стек

-

запись

в ЗУ

по

содержимому

указателя

стека.

6.Цикл ввода - ввод информации в регистр результата (аккумулятор) из внешнего устройства.

7.Цикл вывода - вывод информации из регистра результата во внешнее устройство.

8.Цикл прерывания - прием кода команды RST или CALL из контроллера прерываний.

9.

 

Цикл

 

 

останова.

10. Цикл прерывания при останове - прием кода команды RST или CALL при выводе

микропроцессора

из

режима

"Останов"

по

прерыванию.

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

Сигнал высокого уровня на входе RDY обеспечивает автоматическое выполнение команд программы микропроцессором с частотой тактовых сигналов. Если на выводе RDY установлен сигнал низкого уровня, то микропроцессор переходит в режим "Ожидание" и формирует выходной сигнал WI высокого уровня.

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

При подаче на вход HLD сигнала высокого уровня микропроцессор переходит в состояние "захват" и подтверждает переход в это состояние формированием сигнала высокого уровня на выходе HLDA.

Буферные схемы канала адреса и данных микропроцессора переключаются в высокоомное (высокоимпедансное) состояние, а выходные управляющие сигналы - в состояние низкого уровня (за исключением сигналов TR и HLDA). Микропроцессор переходит в состояние "захват" в такте Т3, если выполняется цикл чтения и на входе RDY сигнал высокого уровня, и в такте, следующем за Т3, если выполняется цикл записи. Сигналы HLD и HLDA позволяют организовать режим прямого доступа к памяти для любого внешнего устройства, формирующего сигнал HLD.

При выполнении команды HLT микропроцессор переходит в состояние "останов" и переводит буферные схемы канала адреса и данных в высокоомное состояние. Из состояния "останов" микропроцессор выходит при наличии сигнала высокого уровня на одном из его входов:

на входе SR - микропроцессор начинает работать с такта Т1 цикла М1;

на входе HLD - микропроцессор переходит в состояние "захват", а после перехода сигнала HLD на низкий уровень возвращается в состояние "останов";

на входе INT - микропроцессор переходит к выполнению цикла прерывания при останове с такта Т1, если команде HLT предшествовала команда EI "разрешение прерывания", иначе он остается в состоянии "останов".

Сигнал высокого уровня на выводе INT позволяет прерывать выполнение текущей программы и переводить микропроцессор на выполнение подпрограммы обслуживания устройства, выдавшего запрос прерывания (например, часов). При поступлении сигнала INT микропроцессор (после окончания текущей команды) переходит с такта Т1 к выполнению машинного цикла "Прерывание" в том случае, если прерывание было разрешено ранее командой EI. При выполнении цикла "Прерывание" в такте Т1 микропроцессор выдает по шине данных сигнал состояния "Подтверждение прерывания". По окончании подпрограммы прерывания происходит возврат к прерванной программе.

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

Лекция 9

ОРГАНИЗАЦИЯ ПАМЯТИ

9.1.Адреса памяти

9.2.Код с исправлением ошибок

9.3.Кеш память

9.4.Иерархическая структура памяти. 3 фактора иерархии

9.4.IDE, SCSI, RAID интерфейсы

Шины

Шина — это группа проводников, соединяющих различные устройства. Шины можно разделить на группы в соответствии с выполняемыми функциями. Они могут быть внутренними по отношению к процессору и служить для передачи данных в АЛУ и из АЛУ, а могут быть внешними по отношению к процессору и связывать процессор с памятью или устройствами ввода-вывода. Каждый тип шины обладает определенными свойствами, и к каждому из них предъявляются определенные требования. В этом и следующих разделах мы сосредоточимся на шинах, которые связывают центральный процессор с памятью и устройствами ввода-вывода. В следующей главе мы подробно рассмотрим внутренние шины процессора.

Первые персональные компьютеры имели одну внешнюю шину, которая называлась системной шиной. Она состояла из нескольких медных проводов (от 50 до 100), которые встраивались в материнскую плату. На материнской плате находились разъемы на одинаковых расстояниях друг от друга для микросхем памяти и устройств ввода-вывода. Современные персональные компьютеры обычно содержат специальную шину между центральным процессором и памятью и по крайней мере еще одну шину для устройств ввода-вывода. На рис. 3.32 изображена система с одной шиной памяти и одной шиной ввода-вывода.

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

Хотя разработчики процессоров могут использовать любой тип шины для микросхемы, должны быть введены четкие правила о том, как работает шина, и все устройства, связанные с шиной, должны подчиняться этим правилам, чтобы платы, которые выпускаются третьими лицами, подходили к системной шине. Эти правила называются протоколом шины. Кроме того, должны существовать определенные технические требования, чтобы платы от третьих производителей подходили к каркасу для печатных плат и имели разъемы, соответствующие материнской плате механически и с точки зрения мощностей, синхронизации и т. д. Существует ряд широко используемых в компьютерном мире шин. Приведем несколько примеров: Omnibus (PDP-8), Unibus (PDP-11), IBM PC (PC/XT), ISA (PC/AT), EISA (80386), MicroChannel (PC/2), PCI (различные персональные компьютеры), SCSI (различные персональные компьютеры и рабочие станции), Nubus (Macintosh), Universal Serial Bus (современные персональные компьютеры), FireWire (бытовая электроника), VME (оборудование в кабинетах физики) и Сагаас (физика высоких энергий). Может быть, все стало бы намного проще, если бы все шины, кроме одной, исчезли с поверхности Земли (или кроме двух). К сожалению, стандартизация в этой области кажется маловероятной, и уже вложено слишком много средств во все эти несовместимые системы.

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

устройством.

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

Таблица 3.3. Примеры задающих и подчиненных устройств

Задающее устройство Подчиненное устройство Пример

Центральный процессор Память Вызов команд и данных Центральный процессор Устройство ввода-вывода Инициализация передачи данных

Центральный процессор Сопроцессор Передача команды от процессора к сопроцессору Устройство ввода-вывода Память ПДП (прямой доступ к памяти)

Сопроцессор Центральный процессор Вызов сопроцессором операндов из центрального процессора

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

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

время, результатом является булева операция ИЛИ над всеми этими сигналами. Такое соглашение называется монтажным ИЛИ. В большинстве шин одни линии являются устройствами с тремя состояниями, а другие, которым требуется свойство монтажного ИЛИ, — открытым коллектором.

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

Разработка шин и принципы действия шин — это достаточно сложные вопросы и по этому поводу написан ряд книг [128, 135,136]. Принципиальными вопросами в разработке являются ширина шины, синхронизация шины, арбитраж шины и функционирование шины. Все эти параметры существенно влияют на скорость и пропускную способность шины. В следующих четырех разделах мы рассмотрим каждый из них.

Ширина шины

Начало Ti определяется нарастающим фронтом генератора. За часть времени Ti центральный процессор помещает адрес нужного слово на адресные линии.

Поскольку адрес представляет собой не одно значение (в отличие от генератора), мы не можем показать его в виде одной линии на схеме. Вместо этого мы показали его в виде двух линий с пересечениями там, где этот адрес меняется. Серый цвет на схеме показывает, что в этот момент не важно, какое значение принял сигнал. Используя то же соглашение, мы видим, что содержание линий данных не имеет значения до отрезка Т3.

После того как у адресных линий появляется возможность приобрести новое значение, устанавливаются сигналы MREQ и RD. Первый указывает, что осуществляется доступ к памяти, а не к устройству вводавывода, а второй — что осуществляется чтение, а не запись. Поскольку считывание информации из памяти занимает 40 не после того, как адрес стал постоянным (часть первого цикла), память не может передать требуемые данные за период Т2. Чтобы центральный процессор не ожидал поступления данных, память устанавливает линию WAIT в начале отрезка Та. Это действие вводит периоды ожидания (дополнительные циклы шины), до тех пор пока память не сбросит сигнал WAIT. В нашем примере вводится один период ожидания (Т2), поскольку память работает слишком медленно. В начале Тз, когда есть уверенность в том, что память получит данные в течение текущего цикла, сигнал WAIT сбрасывается.

Во время первой половины Т3 память помещает данные на информационные линии. На заднем фронте Т3 центральный процессор стробирует (то есть считывает) информационные линии, сохраняя их значения во внутреннем регистре. Считав данные, центральный процессор сбрасывает сигналы MREQ. и RD. В случае необходимости на следующем нарастающем фронте может начаться еще один цикл памяти.

Далее проясняется значение восьми символов на временной диаграмме (см. рис. 3.34 и табл. 3.4). TAD, например, — это временной интервал между нарастающим фронтом Т( и установкой адресных линий. В соответствии с требованиями синхронизации TAD < 11 не. Значит, производитель процессора 1арантирует, что во время любого цикла считывания центральный процессор будет выдавать требуемый адрес в пределах 11 не от середины нарастающего фронта TV Условия синхронизации также требуют, чтобы данные поступали на информационные линии по крайней мере за 5 не (TDs) до заднего фронта Т3, чтобы дать данным время установиться до того, как процессор стробирует их. Сочетание ограничений на TAD И TDS означает, что в худшем случае в распоряжении памяти будет только 62,5-11-5=46,5 не с момента появления адреса и до момента, когда нужно выдавать данные. Поскольку достаточно 40 не, память даже в самом худшем случае может всегда ответить за период Т3. Если памяти для считывания требуется 50 не, то необходимо ввести второй период ожидания, и тогда память ответит в течение Т3.

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

Ограничения на Тм и TR[. означают, что WREQ и RD будут установлены в пределах 8 не от заднего фронта Ть В худшем случае у микросхемы памяти после установки MREQ и RD останется всего 25+25-8-5=37 не на передачу данных по шине. Это ограничение дополнительно по отношению к интервалу в 40 не и не зависит от него.

Тмн и TRH определяют, сколько времени требуется на отмену сигналов MREQ и R~D после того, как данные стробированы. Наконец, ТОн определяет, сколько времени память должна держать данные на шине после снятия сигнала КП. В нашем примере при данном процессоре память может удалить данные с шины, как только сбрасывается сигнал RT); при других процессорах, однако, данные могут сохраняться еще некоторое время.

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

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

Асинхронные шины

Хотя достаточно удобно использовать синхронные шины благодаря дискретным временным интервалам, здесь все же есть некоторые проблемы. Например, если процессор и память способны закончить передачу за 3,1 цикла, они вынуждены продлить ее до 4,0 циклов, поскольку неполные циклы запрещены.

Еще хуже то, что если однажды был выбран определенный цикл шины и в соответствии с ним были разработаны память и карты ввода-вывода, то в будущем трудно делать технологические усовершенствования. Например, предположим, что через несколько лет послевыпуска системы, изображенной на рис. 3.34, появилась новая память с временем доступа не 40, а 20 не. Это избавило бы нас от периода ожидания и увеличило скорость работы машины. Теперь представим, что появилась память с временем доступа 10 не. При этом улучшения производительности уже не будет, поскольку в данной разработке минимальное время для чтения — 2 цикла.

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

По этой причине были разработаны асинхронные шины, то есть шины без задающего генератора, как показано на рис. 3.35. Здесь ничего не привязывается к генератору. Когда задающее устройство устанавливает адрес, MREQ, RD и любой другой требуемый сигнал, он выдает специальный сигнал, который мы будем называть MSYN (Master SYNchronization). Когда подчиненное устройство получает этот сигнал, оно начинает выполнять свою работу настолько быстро, насколькс это возможно. Когда работа закончена, устройство выдает сигнал SSYN (Slavf SYNchronization).

Сигнал SSYN означает для задающего устройства, что данные доступны. Oi фиксирует их, а затем отключает адресные линии вместе с MREQ, RD и M$YN Отмена сигнала MSYN означает для подчиненного устройства, что цикл закончен поэтому устройство отменяет сигнал SSYN, и все возвращается к первоначальному состоянию, когда все сигналы отменены.

Стрелочки на временных диаграммах асинхронных шин (а иногда и синхронных шин) показывают причину и следствие какого-либо действия (рис. 3.35)

Установка сигнала MSYN приводит к запуску информационных линий, а также ь установке сигнала SSYN. Установка сигнала SSYN, в свою очередь, вызывает отключение адресных линий, MREQ, RD и MSYN. Наконец, отключение MSYN вызывает отключение SSYN, и на этом процесс считывания заканчивается. Набор таких взаимообусловленных сигналов называется полным квитированием. Здесь, в сущности, наблюдается 4 события:

1.Установка сигнала MSYN.

2.Установка сигнала SSVN в ответ на сигнал

3.Отмена сигнала MSYN в ответ на сигнал

4.Отмена сигнала SSYN в ответ на отмену сигнала MSYN.

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

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

Арбитраж шины

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

Возникает вопрос: «Что происходит, когда задающим устройством шины могут стать два или несколько устройств одновременно?** Чтобы предотвратить хаос, который может при этом возникнуть, нужен специальный механизм

— так называемый арбитраж шины.

Механизмы арбитража могут быть централизованными или децентрализованными. Рассмотрим сначала централизованный арбитраж. Простой пример централизованного арбитража показан на рис. 3.36, а. В данном примере один арбитр шины определяет, чья очередь следующая. Часто бывает, что арбитр встроен в микросхему процессора, но иногда требуется отдельная микросхема. Шина содержит одну линию запроса (монтажное ИЛИ), которая может запускаться одним или несколькими устройствами в любое время. Арбитр не может определить, сколько устройств запрашивают шину. Он может определять только наличие или отсутствие запросов.

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

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

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

На рис. 3.36, 6 изображено 2 уровня (хотя в действительности шины обычно содержат 4, 8 или 16 уровней). Каждое устройство связано с одним из уровней запроса шины, причем, чем выше уровень приоритета, тем больше устройств привязано к этому уровню. На рис. 3.36, б можно видеть, что устройства 1, 2 и 4 используют приоритет 1, а устройства 3 и 5 — приоритет 2,

Если одновременно запрашивается несколько уровней приоритета, арбитр предоставляет шину самому высокому уровню. Среди устройств одинакового приоритета используется система последовательного опроса. На рис. 3.36, ОБИДНО, ЧТО в случае конфликта устройство 2 «побеждает» устройство 4, а устройство 4 «побеждает» устройство 3. Устройство 5 имеет низший приоритет, поскольку оно находится в самом конце самого нижнего уровня.

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

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

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

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

При другом типе децентрализованного арбитража используется только три линии независимо от того, сколько устройств имеется в наличии (рис. 3.37). Первая линия — монтажное ИЛИ. Она используется для запроса шины. Вторая линия называется BUSY. Она запускается текущим задающим устройством шины. Третья линия используется для арбитража шины. Она последовательно соединяет все устройства. Начало цепи связано с источником питания с напряжением 5 В.

Когда шина не требуется ни одному из устройств, линия арбитра передает сигнал всем устройствам. Чтобы получить доступ к шине, устройство сначала проверяет, свободна ли шина, и установлен ли сигнал арбитра IN. Если сигнал IN не установлен, устройство не может стать задающим устройством шины. В этом случае оно сбрасывает сигнал OUT. Если сигнал IN установлен, устройство также сбрасывает сигнал OUT, в результате чего следующее устройство не получает сигнал IN и, в свою очередь, сбрасывает сигнал OUT. Следовательно, все следующие по цепи устройства не получают сигнал IN и сбрасывают сигнал OUT. В результате остается только одно устройство, у которого сигнал IN установлен, а сигнал OUT сброшен. Оно становится задающим устройством шины, запускает линию BUSY и сигнал OUT и начинает передачу данных. Немного поразмыслив, можно обнаружить, что из всех устройств, которым нужна шина, доступ к шине получает самое левое. Такая система сходна с системой последовательного опроса, только в данном случае нет арбитра, поэтому она стоит дешевле и работает быстрее. К тому же не возникает проблем со сбоями арбитра.

Принципы работы шины

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

записывает в него информацию. Однако существует еще несколько типов циклов шины. Давайте рассмотрим некоторые из них.

Обычно за раз передается одно слово. При использовании кэш-памяти желательно сразу вызывать всю строку кэш-памяти (то есть 16 последовательных 32-битных слов). Часто передача блоками может быть более эффективна, чем такая последовательная передача информации. Когда начинается чтение блока, задающее устройство сообщает подчиненному устройству, сколько слов нужно передать (например, помещая общее число слов на информационные линии в период Ti).

Вместо того чтобы выдать в ответ одно слово, задающее устройство выдает одно слово в течение каждого цикла до тех пор, пока не будет передано требуемое количество слов. На рис. 3.38 изображена такая же схема, как и на рис. 3.34, только здесь появился дополнительный сигнал BLOCK, который указывает, что запрашивается передача блока. В данном примере считывание блока из 4 слов занимает 6 циклов вместо 12.

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

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

Еще один важный цикл шины — цикл для осуществления прерываний. Когда центральный процессор командует устройству ввода-вывода произвести какое-то действие, он ожидает прерывания после завершения работы. Для сигнала прерывания нужна шина.

Поскольку может сложиться ситуация, когда несколько устройств одновременно хотят произвести прерывание, здесь имеют место те же проблемы разрешения конфликтных ситуаций, что и в обычных циклах шины. Чтобы избежать таких проблем, нужно каждому устройству приписать определенный приоритет и использовать централизованный арбитр для распределения приоритетов. Существует стандартный контроллер прерываний, который широко используется. В компьютерах IBM PC и последующих моделях применяетсямикросхема Intel 8259А. Она изображена на рис. 3.39.

До восьми контроллеров ввода-вывода могут быть непосредственно связаны с восемью входами IRx (Interrupt Request — запрос прерывания) микросхемы 8259А Когда любое из этих устройств хочет произвести прерывание, оно запускает свою линию входа Если активизируется один или несколько входов, контроллер 8259А выдает сигнал INT (INTerrupt — прерывание), который подается на соответствующий вход центрального процессора Когда центральный процессор способен произвести прерывание, он посылает микросхеме 8259А импульс через вывод INTA (INTerrupt Acknowledge — подтверждение прерывания) В этот момент микросхема 8259А должна определить, на какой именно вход поступил сигнал прерывания Для этого она помещает номер входа на информационную шину Эта операция требует наличия особого цикла шины Центральный процессор использует этот номер для обращения в таблицу указателей, которую называют таблицей векторов прерывания, чтобы найти адрес процедуры, производящей соответствующее прерывание Микросхема 8259А содержит несколько регистров, которые центральный процессор может считывать и записывать, используя обычные циклы шины и выводы RD (ReaD — чтение), WR (WRite — запись), CS (Chip Select — выбор элемента памяти) и Xfl Когда программное обеспечение обработало прерывание и готово получить следующее, оно записывает специальный код в один из регистров, который вызывает сброс сигнала INT микросхемой 8259А, если не появляется другая задержка прерывания Регистры также могут записываться для того, чтобы ввести микросхему 8259А в один из нескольких режимов, и для выполнения некоторых других функций Когда присутствует более восьми устройств ввода-вывода, микросхемы 8259А могут быть соединены каскадно В самой экстремальной ситуации все восемь входов могут быть связаны с выходами еще восьми микросхем 8259 А, соединяя до 64 устройств ввода-вывода в вухступенчатую систему прерывания Микросхема 8259А содержит несколько выводов для управления каскадированием, но мы их опустили ради простоты Хотя мы никоим образом не исчерпали все вопросы разработки шин, материал, изложенный выше, дает достаточно информации для общего понимания принципов работы шины и того, как центральный процессор взаимодействует с шиной А теперь мы перейдем от общего к частному и рассмотрим несколько конкретных примеров процессоров и их шин

Аркад – самый богатый в Вавилон человек

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

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

3.Золото нуждается в защите, а потому предпочитает осторожность и советы мудрых людей.

4.Золото не любит, когда его заставляют работать в той области, где человек не сведущ.

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

Достоинства и недостатки ассемблера

Недостатки:

Трудоемкость и длимтельность программирования и отладки

Проблемы переносимости

Достоинства:

Ресурсоемкость и скорость работы

Полный доступ к аппаратному обеспечению

Ограничение ресурсов ВТ (кредитные карты)

Кто-то должен писать компиляторы и асемблеры!

Обычно 1% программы отвечает за 50% времени выполнения, а 10% программы отвечает за 90% времени выполнения.

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

Трансляторы бывают двух типов: трансляторы-компиляторы и трансляторыинтерпретаторы.

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

В памяти интерпретируемые программы хранятся в виде исходных макрокоманд и поэтому в любой момент читаемы человеком.

Лекция 10

ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ

Содержание

1.Структура учебного плана.

2.Литература.

3.Понятие параллельных вычислений.

4.Необходимость параллельных вычислений.

5.Сдерживающие факторы.

6.Характеристика необходимых знаний и умений.

7.Содержание курса.

8.Вопросы для обсуждения.

1. Структура учебного плана

-Лекции – 24 часа (каждый понедельник по 2 часа).

-Лабораторные работы – 24 часов (каждая пятница по 2 часа, вычислительный центр).

-Самостоятельная работа – 102 часа.

-3 модуля по 8 лекций.

-Экзамен.

2. Литература

1.Воеводин В.В. Модели и методы в параллельных процессах. - М.: Наука, 1986.

2.Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. -С.Птб.: BHV-Петербург, 2002, -608 c.

3.Гергель В.П., Стронгин Р.Г. Основы параллельных вычислений для многопроцессорных вычислительных систем. – Н.Новгород, ННГУ, 2001.

4.Шпаковский Г.И., Серикова Н.В. Программирование для многопроцессорных систем в стандарте MPI: Пособие / Минск: БГУ, 2002, -324 c.

5.Антонов А.С. Параллельное программирование с использованием технологии MPI. –M.: изд. Московского университета, 2004, -71 c.

6.http://www.parallel.ru

* Источники [1-5] в электронном виде можно найти в Интернете по адресу http://www.transmarket.net/learning

3. Понятие параллельных вычислений.

Под параллельными вычислениями (parallel or concurrent computations) можно понимать процессы решения задач, в которых в один и тот же момент времени могут выполняться одновременно несколько вычислительных операций.

При этом:

-Параллельные вычисления не сводятся к использованию только к многопроцессорных вычислительных систем (существуют ли последовательные компьютеры !?).

-Одновременные выполняемые операции должны быть направлены на решение общей задачи.

-Параллельные вычисления следует отличать от многозадачных (многопрограммных) режимов работы последовательных ЭВМ.

4. Необходимость параллельных вычислений

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

1. Опережение потребности вычислений быстродействия существующих компьютерных систем (ex., Problems of Grand Challenge)

моделирование климата,

генная инженерия,

проектирование интегральных схем,

анализ загрязнения окружающей среды,

создание лекарственных препаратов и др.

Оценка необходимой производительности –1012 операций (1 Tflops)

2.Теоретическая ограниченность роста производительности последовательных компьютеров

3.Резкое снижение стоимости многопроцессорных (параллельных) вычислительных систем

1 Cray T90 processor – 1.8 GFlops ($2 500 000),

8 Node IBM SP2 using R6000 - 2.1 GFlops ($500 000)

5. Сдерживающие факторы

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

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

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

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

-потери производительности для организации параллелизма – согласно гипотезе Минского (Minsky),

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

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

-постоянное совершенствование последовательных компьютеров – в соответствии с широко известным

законом Мура (Moore) мощность последовательных процессоров возрастает практически в 2 раза каждые 18-24 месяцев (исторический экскурс показывает, что быстродействие ЭВМ увеличивалось на порядок каждые 5 лет) и, как результат, необходимая производительность может быть достигнута и на "обычных" последовательных компьютерах.

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

-существование последовательных вычислений – в соответствии с законом Амдала (Amdahl) ускорение процесса вычислений при использовании p процессоров ограничивается величиной

S 1/(f+(1–f)/p)

где f есть доля последовательных вычислений в применяемом алгоритме обработки данных. Закон Амдала определяет принципиально важные для параллельных вычислений положения:

1.Ускорение зависит от потенциального параллелизма задачи (величина 1– f) и параметров аппаратуры (числа процессоров n).

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

Пусть, например, f = 0,2 (что является реальным значением), тогда ускорение не может превосходить 5 при любом числе процессоров, то есть максимальное ускорение определяется потенциальным параллелизмом задачи. Очевидной является чрезвычайно высокая чувствительность ускорения к изменению величины f.

Данное замечание характеризует одну из самых серьезных проблем в области параллельного программирования (алгоритмов без определенной доли последовательных команд практически не существует). Однако часто доля последовательных действий характеризует не возможность параллельного решения задач, а последовательные свойства применяемых алгоритмов. Как результат, доля последовательных вычислений может быть существенно снижена при выборе более подходящих для распараллеливания алгоритмов

-существующее программное обеспечение ориентировано в основном на последовательные ЭВМ.

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

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

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

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

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

Для ответа на данное замечание следует отметить, что "однородность" последовательных ЭВМ также является кажущейся и их эффективное использование тоже требует учета свойств аппаратуры. С другой стороны, при всем разнообразии архитектур параллельных систем, тем не менее, существуют и определенные "устоявшиеся" способы обеспечения параллелизма (конвейерные вычисления, многопроцессорные системы и т.п.). Кроме того, инвариантность создаваемого программного обеспечения может быть обеспечена и при помощи использования типовых программных средств поддержки параллельных вычислений (типа программных библиотек MPI, PVM и др.);

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

6. Характеристика необходимых знаний и умений

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

-архитектура параллельных вычислительных систем;

-модели вычислений и методы анализа сложности;

-параллельные методы вычислений;

-параллельное программирование (языки, среды разработки, библиотеки).

7. Содержание курса

Таким образом курс «Параллельные и распределенные вычисления» состит из 3 самостоятельных частей:

-архитектура параллельных ЭВМ и их классификация (4 лекции).

-технологии разработки параллельных программ (4 лекции): системы программирования Open MP, Linda,

MPI.

-моделирование и анализ параллельных вычислений.

8.Вопросы для обсуждения

-За время существование вычислительной техники быстродействие вычислений увеличилось в 105 раз. Существует ли предел роста быстродействия?

-Параллельные вычисления необходимы только для задач с высокой вычислительной трудоемкостью?

-Согласны ли Вы с утверждением: развитие вычислительной техники – это история совершенствования архитектуры и практическое использование параллелизма.

-Как вы думаете, верно ли утверждение: чем мощнее компьютер, тем быстрее на нем можно решить данную задачу?

Принципы построения параллельных вычислительных систем

Содержание

1.Основные виды ЭВМ.

2.Принципы фон-Неймана.

3.Структура традиционных ЭВМ.

4.Как повышают производительность компьютеров.

5.Вопросы для обсуждения.

1. Основные виды ЭВМ.

Электронные Вычислительные Машины (ЭВМ) разделяются на аналоговые (АВМ) и дискретные (ЦВМ) машины.

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

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

Другой, наиболее распространенный тип ЭВМ - цифровые вычислительные машины (ЦВМ) или машины дискретного действия. В машинах такого типа вся информация представляется в виде цифровых .

Базовые элементы вычислительной техники, классические ЭВМ - это вычислительные машины фон-

Нейманновской архитектуры (Von Neumann architecture).

2. Принципы фон-Неймана. Структура традиционных ЭВМ.

Основные архитектурные принципы построения ЦВМ были разработаны и в 1946 г. опубликованы Дж. фон Нейманом (John Louis von Neumann), Г. Голдстайном (H. Goldstine) и А. Берксом в отчете: "Предварительное обсуждение логического конструирования электронного вычислительного устройства". Ниже перечислены эти принципы:

1. Программное управление работой ЭВМ.

Программа состоит из последовательности команд, хранимых в Оперативном Запоминающем Устройстве (ОЗУ); каждая команда задает единичный акт преобразования информации. ЭВМ поочередно выбирает команды программы и выполняет предписанные в них дискретные вычисления. В любой момент времени работы ЭВМ выполняется только одна команда программы.

Так алгоритм вычисления площади трапеции с основаниями А и В, высотой Н {S=0.5*(А+В)*Н} можно представить в виде последовательности (шагов) элементарных вычислений - команд ЭВМ (трех-адресных):

Команды Комментарий

+, A, B,P1;

Р1=А+В

 

 

*, P1,H,P2;

Р2=Р1*Н

 

/,P2,’’0.5’’,S;

S=R2/0.5.

 

2. Принцип условного перехода.

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

Так, определение максимального числа может быть выполнено программой: MАХ = B

IF (A<B) GOTO L

MAX =A

L ..............

Команды перехода позволяет реализовывать в программе циклы с автоматическим выходом из них.

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

Оперативном Запоминающем Устройстве (ОЗУ), что и исходные данные. ОЗУ – структурно состоит из пронумерованных ячеек. Над программой можно производить арифметические действия, изменяя ее динамически.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]