Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Dokument_Microsoft_Word_2.docx
Скачиваний:
8
Добавлен:
23.03.2015
Размер:
200.53 Кб
Скачать

17. Классификация Флинна

Классификация М. Флинна [38, 303] является одной из самых ранних и наиболее известных классификацией архитектур вычислительных систем. В основу классификации положено понятие потока. Поток - это последовательность, под которой понимается последовательность данных или команд, обрабатываемых процессором. Рассматривая число потоков данных и потоков команд, М. Флинн предложил рассматривать следующие классы архитектур: MIMD, SIMD, SISD, MISD.

Single Instruction Single Data [stream] - "один поток команд, один поток данных", архитектура SISD (ОКОД). Описание архитектуры компьютерной системы, подразумевающее исполнение одним процессором одного потока команд, который обрабатывает данные, хранящиеся в одной памяти (рис. 2.1а.).

Multiple Data stream processing - "один поток команд, много потоков данных", архитектура SIMD (ОКМД). Описание архитектуры параллельной компьютерной системы, подразумевающее исполнение одной текущей команды несколькими процессорами. Эта команда выбирается из памяти центральным контроллером SIMD-системы, но работает она над разными элементами данных (чаще всего - элементами массива). Для этого каждый процессор имеет ассоциированную с ним память, где хранятся массивы однородных данных. В эту категорию попадают, в частности, векторные процессоры. (рис. 2.1б.).

Multiple Instruction Single Data [stream] - "много потоков команд, один поток данных", архитектура MISD (МКОД). Одна из четырёх возможных архитектур параллельного компьютера в классификации М. Флинна. В этой архитектуре данные подаются на набор процессоров, каждый из которых исполняет свою программу их обработки. Подобная архитектура ещё никогда не была реализована (рис. 2.1в.).

Multiple Instructions - Multiple Data [stream] - "много потоков команд, много потоков данных", архитектура MIMD (МКМД). Одна из четырёх возможных архитектур параллельного компьютера. В этой архитектуре набор процессоров независимо выполняет различные наборы команд, обрабатывающих различные наборы данных. Системы в архитектуре MIMD делятся на системы с распределённой памятью (слабо связанные системы), к которым относятся кластеры, и системы с совместно используемой памятью (shared-memory multiprocessors). К последним относятся симметричные мультипроцессорные системы.

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

18. Способы перевода программы в машинный код

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

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

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

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

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

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

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

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