Архитектура с выделенным доступом к памяти

 

В архитектуре с выделенным доступом к памяти обращение к основной памяти возможно только с помощью двух специальных команд: load и store. В английской транскрипции данную архитектуру называют Load/Store architecture. Команда load (загрузка) обеспечивает считывание значения из основной памяти и занесение его в регистр процессора (в команде обычно указывается адрес ячейки памяти и номер регистра). Пересылка информации в противоположном направлении производится командой store (сохранение).

АСК с выделенным доступом к памяти характерна для всех вычислительных машин с RISC-архитектурой. Команды в таких ВМ, как правило, имеют длину 32 бита и трехадресный формат.

В качестве примеров вычислительных машин с выделенным доступом к памяти можно отметить HP PA-RISC, IBM RS/6000, SPARC, MIPS R4000, DEC Alpha и т. д. К достоинствам АСК следует отнести простоту декодирования и исполнения команды.

Четвёртое поколение (1972–1984) осуществило переход на СБИС (тысячи транзисторов на одном кристалле). Появление языков высокого уровня привело к резкому снижению востребованности CISC инструкций, так как компиляторы использовали только небольшое подмножество из них. Оказалось целесообразным перейти к архитектуре с сокращённым набором команд (RISC) и использовать высвобожденные ресурсы (транзисторы) для улучшения количественных характеристик CPU.

 

Литература:

Таненбаум, Э. Архитектура компьютера/ Э. Таненбаум. – СПб.: Питер, 2007. – 848 с.

Цилькер, Б. Организация ЭВМ и систем / Б.Я. Цилькер, С.А. Орлов. СПб.: Питер - 2007, 672 c.

 

Лекция 4. Архитектура микропроцессоров

 

· SSE (англ. Streaming SIMD Extensions, потоковое SIMD-расширение процессора) — это SIMD набор инструкций.

· MMX (Multimedia Extensionsмультимедийные расширения) — коммерческое название дополнительного набора инструкций, выполняющих характерные для процессов кодирования/декодирования потоковых аудио/видео данных действия за одну машинную инструкцию.

· 3DNow! — дополнительное расширение MMX для процессоров AMD, начиная с AMD K6 3D.

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

· Hyper-threading (англ. Hyper-threading — гиперпоточность). Торговая марка компании Intel для реализации технологии «одновременной мультипоточности».

Hyper-Threading – это название технологии, существовавшей и ранее вне x86 мира, технологии одновременной многопоточности (Simultaneous Multi-Threading, SMT). Идея этой технологии проста. Один физический процессор представляется операционной системе как два логических процессора, и операционная система не видит разницы между одним SMT процессором или двумя обычными процессорами. В обоих случаях операционная система направляет потоки как на двухпроцессорную систему. Далее все вопросы решаются на аппаратном уровне.

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

· Многоядерность — наличие двух и более вычислительных ядер на одном процессорном кристалле или в одном корпусе в центральном процессоре.

Во всех существующих на сегодняшний день многоядерных процессорах кэш-память первого уровня у каждого ядра своя, а кэш 2-го уровня существует в нескольких вариантах:

1. разделяемый — кэш расположен на одном с обоими ядрами кристалле и доступен каждому из них в полном объёме. Используется в процессорах семейств Intel Core.

2. индивидуальный — отдельные кэши равного объёма, интегрированные в каждое из ядер. Обмен данными из кэшей L2 между ядрами осуществляется через контроллер памяти — интегрированный (Athlon 64 X2) или внешний (Pentium D).

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

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

Примеры конвейерной обработки: выполнение циклов команд, арифметика чисел с плавающей точкой, циклы.

Выполнение типичной команды можно разделить на следующие этапы:

1. Выборка команды - IF (по адресу, заданному счетчиком команд, из памяти извлекается команда);

2. Декодирование команды / выборка операндов из регистров - ID;

3. Выполнение операции / вычисление эффективного адреса памяти - EX;

4. Обращение к памяти - MEM;

5. Запоминание результата - WB.

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

1. Вызов операндов

2. Выравнивание экспоненты

3. Операция

4. Нормализация результата

· Предсказание ветвлений

В любой более-менее сложной программе присутствуют команды условного перехода: «Если некое условие истинно — перейти к исполнению одного участка кода, если нет — другого». До тех пор, пока не станет известно, какой участок кода после условного перехода окажется «актуальным» — его невозможно начать декодировать и исполнять (см. внеочередное исполнение). Для того чтобы как-то примирить концепцию внеочередного исполнения с командами условного перехода, предназначается специальный блок: блок предсказания ветвлений.

Он пытается предсказать, на какой участок кода укажет команда условного перехода, ещё до того, как она будет исполнена. Процессором производятся вполне реальные действия: предсказанный участок кода загружается в кэш (если он там отсутствует), и даже начинается декодирование и выполнение его команд. Причём среди выполняемых команд также могут содержаться инструкции условного перехода, и их результаты тоже предсказываются, что порождает целую цепочку из пока не проверенных предсказаний! Разумеется, если блок предсказания ветвлений ошибся, вся проделанная в соответствии с его предсказаниями работа просто аннулируется.

Алгоритмы, по которым работает блок предсказания ветвлений, преимущественно просты. Чаще всего команда условного перехода встречается в циклах: некий счётчик принимает значение X, и после каждого прохождения цикла значение счётчика уменьшается на единицу. Соответственно, до тех пор, пока значение счётчика больше нуля — осуществляется переход на начало цикла, а после того, как он становится равным нулю — исполнение продолжается дальше. Блок предсказания ветвлений просто анализирует результат выполнения команды условного перехода, и считает, что если N раз подряд результатом стал переход на определённый адрес — то и в N+1 случае будет осуществлён переход туда же. Однако, несмотря на весь примитивизм, данная схема работает просто замечательно: например, в случае, если счётчик принимает значение 100, а «порог срабатывания» предсказателя ветвлений (N) равен двум переходам подряд на один и тот же адрес — легко заметить, что 97 переходов из 98 будут предсказаны правильно!

Разумеется, несмотря на достаточно высокую эффективность простых алгоритмов, механизмы предсказания ветвлений в современных CPU всё равно постоянно совершенствуются и усложняются — но тут уже речь идёт о борьбе за единицы процентов: например, за то, чтобы повысить эффективность работы блока предсказания ветвлений с 95 процентов до 97, или даже с 97% до 99...

· Предвыборка данных

Блок предвыборки данных (Prefetch) очень похож по принципу своего действия на блок предсказания ветвлений — с той только разницей, что в данном случае речь идёт не о коде, а о данных. Общий принцип действия такой же: если встроенная схема анализа доступа к данным в ОЗУ решает, что к некоему участку памяти, ещё не загруженному в кэш, скоро будет осуществлён доступ — она даёт команду на загрузку данного участка памяти в кэш ещё до того, как он понадобится исполняемой программе. Результативно работающий блок предвыборки позволяет существенно сократить время доступа к нужным данным, и, соответственно, повысить скорость исполнения программы. К слову: грамотный Prefetch очень хорошо компенсирует высокую латентность подсистемы памяти, подгружая нужные данные в кэш, и тем самым, нивелируя задержки при доступе к ним, если бы они находились не в кэше, а в основном ОЗУ.

Однако, разумеется, в случае ошибки блока предвыборки данных, неизбежны негативные последствия: загружая де-факто «ненужные» данные в кэш, Prefetch вытесняет из него другие (быть может, как раз нужные). Кроме того, за счёт «предвосхищения» операции считывания, создаётся дополнительная нагрузка на контроллер памяти (де-факто, в случае ошибки — совершенно бесполезная).

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

 

Архитектура VLIW

 

Архитектура с командными словами сверхбольшой длины или со сверхдлинными командами (VLIW, Very Long Instruction Word) известна с начала 80-х из ряда университетских проектов, но только сейчас, с развитием технологии производства микросхем она нашла свое достойное воплощение. VLIW - это набор команд, организованных наподобие горизонтальной микрокоманды в микропрограммном устройстве управления.

Идея VLIW базируется на том, что задача эффективного планирования параллельного выполнения нескольких команд возлагается на «разумный» компилятор. Такой компилятор вначале исследует исходную программу с целью обнаружить все команды, которые могут быть выполнены одновременно, причем так, чтобы это не приводило к возникновению конфликтов. В процессе анализа компилятор может даже частично имитировать выполнение рассматриваемой программы. Наследующем этапе компилятор пытается объединить такие команды в пакеты, каждый из которых рассматривается так одна сверхдлинная команда. Объединение нескольких простых команд в одну сверхдлинную производится по следующим правилам:

· количество простых команд, объединяемых в одну команду сверхбольшой длины, равно числу имеющихся в процессоре функциональных (исполнительных) блоков (ФБ);

· в сверхдлинную команду входят только такие простые команды, которые исполняются разными ФБ, то есть обеспечивается одновременное исполнение всех составляющих сверхдлинной команды.

Длина сверхдлинной команды обычно составляет от 256 до 1024 бит. Такая метакоманда содержит несколько полей (по числу образующих ее простых команд), каждое из которых описывает операцию для конкретного функционального блока. Сказанное иллюстрирует рис, где показан возможный формат сверхдлинной команды и взаимосвязь между ее полями и ФБ, реализующими отдельные операции.

 

Архитектура VLIW

 

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

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

В качестве простых команд, образующих сверхдлинную, обычно используются команды RISC-типа, поэтому архитектуру VLIW иногда называют nocтRISC-ap-хитектурой. Максимальное число полей в сверхдлинной команде равно числу вычислительных устройств и обычно колеблется в диапазоне от 3 до 20. Все вычислительные устройства имеют доступ к данным, хранящимся в едином многопортовом регистровом файле. Отсутствие сложных аппаратных механизмов, характерных для суперскалярных процессоров (предсказание переходов, внеочередное исполнение и т. д.), дает значительный выигрыш в быстродействии и возможность более эффективно использовать площадь кристалла. Подавляющее большинство цифровых сигнальных процессоров и мультимедийных процессоров с производительностью более 1 млрд операций/с базируется на VLIW-архитектуре. Серьезная проблема VLIW - усложнение регистрового файла и связей этого файла с вычислительными устройствами.

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

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

Основные сферы применения.VLIW-процессоры пока еще распространены относительно мало. Основными сферами применения технологии VLIW-являются цифровые сигнальные процессоры и вычислительные системы, ориентированные на архитектуру IA-64. Наиболее известной была VLIW-система фирмы Multiflow Computer, Inc. (Уже не существующей.) В России VLIW-концепция была реализована в суперкомпьютере Эльбрус 3-1 и получила дальнейшее развитие в его последователе - Эльбрус-2000 (Е2к). К VLIW можно причислить семейство сигнальных процессоров TMS320C6x фирмы Texas Instruments. С 1986 года ведутся исследования VLIW-архитектуры в IBM. В начале 2000 года фирма Transmeta заявила процессор Crusoe, представляющий собой программно-аппаратный комплекс. В нем команды микропроцессоров серии х86 транслируются в слова VLIW длиной 64 или 128 бит. Оттранслированные команды хранятся в кэш-памяти, а трансляция при многократном их использовании производится только один раз. Ядро процессора исполняет элементы кода в строгой последовательности.

 

Архитектура EPIC

 

Дальнейшим развитием идеи VLIW стала новая архитектура IA-64 — совместная разработка фирм Intel и Hewlett-Packard (IA - это аббревиатура от Intel Architecture). В IA-64 реализован новый подход, известный как вычисления с явным па-раллелизмом команд (EPIC, Explicitly Parallel Instruction Computing) и являющийся усовершенствованным вариантом технологии VLIW. Первым представителем данной стратегии стал микропроцессор Itanium компании Intel. Корпорация Hewlett-Packard также реализует данный подход в своих разработках.

В архитектуре IA-64 предполагается наличие в процессоре 128 64-разрядных регистров общего назначения (РОН) и 128 80-разрядных регистров с плавающей запятой. Кроме того, процессор IA-64 содержит 64 однобитовых регистра предикатов.

Архитектура EPIC имеет следующие основные особенности:

· поддержка явно выделенного компилятором параллелизма. Формат команд имеет много общего с архитектурой с длинным командным словом - параллелизм так же явно выделен. К каждой длинной команде (128 бит) прилагается небольшой (3-5 битный) ярлык, который специфицирует формат команды.

· наличие большого регистрового файла

· наличие предикатных регистров. Множественный предикатный флаговый регистр позволяет избавится от паразитных связей по управлению из-за регистра флагов.

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

 

Технология IA-64

 

Дальнейшим развитием идеи VLIW стала новая архитектура IA-64 — совместная разработка фирм Intel и Hewlett-Packard (IA - это аббревиатура от Intel Architecture). В IA-64 реализован новый подход, известный как вычисления с явным параллелизмом команд (EPIC, Explicitly Parallel Instruction Computing) и являющийся усовершенствованным вариантом технологии VLIW. Первым представителем данной стратегии стал микропроцессор Itanium компании Intel. Корпорация Hewlett-Packard также реализует данный подход в своих разработках.

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

 

 

Отличия архитектуры IA-64 от x86

 

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

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

Команды в формате IA-64 упакованы по три в 128-битный пакет для быстрейшей обработки. Обычно это называют "LIW encoding". (Русский аналог подобрать сложно. Наиболее адекватно, на мой взгляд, перевести как "кодирование в длинные слова команд".) Однако компания Intel избегает такого названия, заявляя, что с ним связаны "негативные ассоциации" (negative connotation). По той же причине Intel не любит называть сами команды RISC-подобными (RISC-like), даже несмотря на то, что они имеют фиксированную длину и предположительно оптимизированы для исполнения за один такт в ядре, не нуждающемся в микрокоде. Intel предпочитает называть свою новую LIW-технологию Explicitly Parallel Instruction Computing или EPIC (Вычисления с Явной Параллельностью Инструкций, где "явной" означае явно указанной при трансляции). В любом случае формат команд IA-64 не имеет ничего общего с х86. Команды х86 могут иметь длину от 8 до 108 бит, и процессор должен последовательно декодировать каждую команду после определения её границ.

· Каждый 128-битный пакет содержит шаблон (template) длиной в несколько бит, помещаемый в него компилятором, который указывает процессору, какие из команд могут выполняться параллельно. Теперь процессору не нужно будет анализировать поток команд в процессе выполнения для выявления "скрытого параллелизма". Вместо этого наличие параллелизма определяет компилятор и помещает информацию в код программы. Каждая команда (как для целочисленных вычислений, так и для вычислений с плавающей точкой) содержит три 7-битных поля регистра общего назначения (РОН). Из этого следует, что процессоры архитектуры IA-64 содержат 128 целочисленных РОН и 128 регистров для вычислений с плавающей точкой. Все они доступны программисту и являются регистрами с произвольным доступом (programmer-visible random-access registers). По сравнению с процессорами х86, у которых всего восемь целочисленных РОН и стек глубины 8 для вычислений с плавающей точкой, IA-64 намного "шире" и, соответственно, будет намного реже простаивать из-за "нехватки регистров".

· Компиляторы для IA-64 будут использовать технологию "отмеченных команд" (predication) для устранения потерь производительности из-за неправильно предсказанных переходов и необходимости пропуска участков кода после ветвлений. Когда процессор встречает "отмеченное" ветвление в процессе выполнения программы, он начинает одновременно выполнять все ветви. После того, как будет определена "истинная" ветвь, процессор сохраняет необходимые результаты и сбрасывает остальные.

· Компиляторы для IA-64 будут также просматривать исходный код с целью поиска команд, использующих данные из памяти. Найдя такую команду, они будут добавлять пару команд - команду предварительной загрузки (speculative loading) и проверки загрузки (speculative check). Во время выполнения программы первая из команд загружает данные в память до того, как они понадобятся программе. Вторая команда проверяет, успешно ли произошла загрузка, перед тем, как разрешить программе использовать эти данные. Предварительная загрузка позволяет уменьшить потери производительности из-за задержек при доступе к памяти, а также повысить параллелизм.

 

 

Формат инструкций IA-64

 

Поле каждой из трех команд в связке, в свою очередь, состоит из пяти полей:

· 13-разрядного поля кода операции;

· 6-разрядного поля предикатов, хранящего номер одного из 64 регистров предиката;

· 7-разрядного поля первого операнда (первого источника), где указывается номер регистра общего назначения или регистра с плавающей запятой, в котором содержится первый операнд;

· 7-разрядного поля второго операнда (второго источника), где указывается номер регистра общего назначения или регистра с плавающей запятой, в котором содержится второй операнд;

· 7-разрядного поля результата (приемника), где указывается номер регистра общего назначения или регистра с плавающей запятой, куда должен быть занесен результат выполнения команды.

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

Если в исходной программе встречается условное ветвление (по статистике — через каждые шесть команд), то команды из разных ветвей помечаются разными регистрами предиката (команды имеют для этого соответствующие поля), далее они выполняются совместно, но их результаты не записываются, пока значения регистров предиката (РП) не определены. Когда, наконец, вычисляется условие ветвления, РП, соответствующий «правильной» ветви, устанавливается в 1, а другой - в 0. Перед записью результатов процессор проверяет поле предиката и записывает результаты только тех команд, поле предиката которых указывает на РП с единичным значением.

Предикаты формируются как результат сравнения значений, хранящихся в двух регистрах. Результат сравнения («Истина» или «Ложь») заносится в один из РП, но одновременно с этим во второй РП записывается инверсное значение полученного результата. Такой механизм позволяет процессору более эффективно выполнять конструкции типа I F - T H E N-E L S E .

Логика выдачи команд на исполнение сложнее, чем в традиционных процессорах типа VLIW, но намного проще, чем у суперскалярных процессоров с неупорядоченной выдачей.

 

Intel Itanium

 

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

· Увеличенные вычислительные ресурсы ядра

Регистры IA-64:

o 128 64-разрядных регистров общего назначения;

o 128 80-разрядных регистров вещественной арифметики;

o 64 1-разрядных предикатных регистров.

· Выполнение до 6 инструкций за 1 цикл

Формат команды:

o идентификатор команды;

o три 7-разрядных поля операндов - 1 приемник и 2 источника;

o особые поля для вещественной и целой арифметики;

o 6-разрядное предикатное поле (64=2^6).

· Выполнение 2-х SIMD операций с плавающей точкой c 98-битными операндами за один цикл

· Большой кэш: 24 МБ у двухядерной версии (по 12 МБ на ядро) предоставляющий данные каждому ядру со скоростью до 48 ГБ/с.

· Большое адресное пространство: 50-битная адресация физической памяти / 64-битная адресация виртуальной памяти.

· Маленькое, энергоэффективное ядро: с тех пор как функции распараллеливания передали от Itanium к компилятору, в ядре уменьшили количество транзисторов.

В режиме IA-64 это был самый быстрый процессор для вычислений с плавающей запятой, имеющийся на рынке. В то же время в целочисленных вычислениях он лишь немного превосходил процессоры равной частоты с системой команд x86. При выполнении же неоптимизированного под Itanium программного кода для x86 его производительность была в 8 раз меньше, чем у x86 процессоров на той же частоте.

 

Предпосылки развития ВС. Закон Гроша для ВС

 

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

Построение же вычислительных систем позволяет значительно сократить затраты, так как для них существует линейная формула

 

 

где:

Сэвм и Свс – соответственно стоимость ЭВМ и ВС

К1 и К2 – коэффициенты пропорциональности, зависящие от технического уровня развития ВТ,

Пэвм и Пi – производительность ЭВМ и i-го из n комплектующих вычислителей (ЭВМ или процессоров).

 

 

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

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

Основные принципы построения, закладываемые при создании ВС:

· возможность работы в разных режимах;

· модульность структуры технических и программных средств, что позволяет совершенствовать и модернизировать вычислительные системы без коренных их переделок;

· унификация и стандартизация технических и программных решений;

· иерархия в организации управления процессами;

· способность систем к адаптации, самонастройке и самоорганизации;

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

Цилькер, Б. Организация ЭВМ и систем / Б.Я. Цилькер, С.А. Орлов. СПб.: Питер - 2007, 672 c.

 

Лекция 5. Концептуальное понятие о ВС

 

Модель вычислителя

 

Модель вычислителя есть пара: c = <h, a>,

где h и a – описания конструкции ЭВМ и алгоритма ее функционирования при обработке информации (или коротко: h – конструкция вычислителя, a –алгоритм его работы).

Конструкция вычислителя допускает следующее представление: h = <U, g>,

где U={ui}– множество устройств ui, i=1..k (k=5 для концептуальной машины Дж. фон Неймана); g– описание структуры (или просто: структура) сети связей между устройствами ui.

Говоря иначе, структура вычислителя – это граф, вершинам которого сопоставлены устройства ui, а ребрам – линии связей между ними. В основу конструкции вычислителя кладутся следующие три принципа:

1. последовательная обработка информации т.е. (последовательное выполнение:

o операций на множестве U устройствui, взаимодействующих через связи структуры g;

o микроопераций в пределах устройств ui;

2. фиксированность (автоматическая неизменность) структуры (и g, и микроструктуры устройств ui, i=1..k;

3. неоднородность составляющих устройств ui и связей между ними (структуры g).

Алгоритм работы вычислителя обеспечивает согласованное функционирование всех устройств (множества U) и связей между ними (структуры g) в процессе обработки информации или, говоря иначе, при решении задач. Для решения любой задачи вычислитель должен иметь исходные данные D и программу p или запись алгоритма вычислений (на одном из возможных языков). Поэтому алгоритм a допускает представление в виде суперпозиции: a=a(p(D)).

 

Для заданных D и p алгоритм a должен приводить к однозначному результату. Степень универсальности алгоритма работы вычислителя определяется разнообразием классов решаемых задач.

 

Итак, на основании вышеизложенного, модель вычислителя – с = <U, g, a(p(D))>

где U – множество устройств, обеспечивающих ввод, обработку, хранение и вывод информации; g – структура связей между устройствами; a – алгоритм работы вычислителя или алгоритм управления вычислительными процессами при реализации программы p обработки данных D. В модель вычислителя вкладывается каноническая ЭВМ Дж. фон Неймана.

 

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

Таким образом, мы можем дать еще одно определение: средство обработки информации, основанное на модели вычислителя, называется ЭВМ. Процесс проектирования ЭВМ включает в себя выбор системы счисления и формы представления данных D; определение средств для написания программ p вычислений; подбор состава U вычислительных устройств и системы операций, реализуемых ими; формирование структуры g и разработку микроструктуры («логический» синтез) устройств ui из U выбор элементной базы и конструирование устройств и построение такого алгоритма a функционирования вычислителя c, который обеспечивал бы реализацию и программ p, и, в частности, операций как последовательности микроопераций.

 

Допустимы аппаратурные, аппаратурно-программные и программные реализации модели вычислителя. Аппаратурное исполнение c предопределяет каноническая ЭВМ Дж. фон Неймана; такое исполнение соотносится с первыми ЭВМ (первым поколением ЭВМ).

 

Возможности совершенствования ЭВМ

 

Был найден кардинальный путь преодоления ограничений, присущих ЭВМ. Этот путь связан с диалектическим отрицанием принципов модели вычислителя.