Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Микропроцессоры типа RISC

Микропроцессоры типа CISC

Особенности:

- предусматривается возможность работы в вычислительной сети;

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

- микропроцессоры могут работать в двух режимах: реальном (Real mode) и защищенном (Protected mode). В реальном режиме имитируется (эмулируется) работа МП 8086, естественно, однозадачная. В защищенном режиме возможна многозадачная работа с непосредственным доступом к расширенной памяти и с защитой памяти, отведенной задачам, от посторонних обращений;

Микропроцессоры типа RISC

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

Функционально МП состоит из двух частей:

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

* интерфейсной, содержащей адресные регистры МПП, блок регистров команд, схемы управления шиной и портами.

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

13. Структурная схема микропроцессорной системы.

Процессор, построенный на одной или нескольких БИС, называется микропроцессором.

Набор БИС, обеспечивающих построение цифровых устройств, образует микропроцессорный комплект (МПК). Он позволяет совместно со сравнительно небольшим числом микросхем средней и малой степени интеграции создавать миниатюрные вычислительные устройства для разнообразных применений.

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

 

14. Основные концепции языков программирования.

- Обоснованно выбирать язык программирования для реализации конкретного проекта;


- Разрабатывать более эффективные алгоритмы;

- Систематически пополнять набор полезных языковых конструкций;

- Ускорять изучение новых языков программирования;


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


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

 

15. Парадигмы языков программирования.

 

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

· состояний программы и команд, изменяющих их (императивное программирование),

· математических функций без состояний (функциональное программирование),

· объектов и взаимодействий между ними (объектно-ориентированное программирование),

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

· значений и операций, преобразующих значения (программирование на уровне значений), и т.д.

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

Императивная парадигма программирования (Algol, BASIC, FORTRAN, PL/1, Ada, Pascal, C, C++, Java) описывает процесс вычислений посредством описания управляющей логики программы, т.е. в виде последовательности отдельных команд, которые должен выполнить компьютер. Каждая команда является инструкцией, изменяющей состояние программы. Программа, написанная в императивном стиле, похожа на набор приказов, выражаемых повелительным наклонением в естественных языках.

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

Императивное программирование является противоположностью декларативного программирования; второе описывает, что необходимо сделать, а первое — как именно это сделать.

Декларативная (Prolog) парадигма программирования определяет процесс вычислений посредством описания логики самого вычисления, а не управляющей логики программы.

Объектно-ориентированная парадигма (ООП) (Java, C++, Object Pascal, Smalltalk) представляет программу как набор объектов и их взаимодействий. Основными понятиями ООП являются следующие:

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

 

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

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

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

 

16. Критерии оценки языков программирования.

 

Читабельность:

- Простота (количество элементарных конструкций, множественность свойств, перегрузка операторов);

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

- Управляющие операторы и оператор goto;

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

- Синтаксис (правила образования идентификаторов, написание и семантика ключевых слов).

Легкость создания, надежность:

- Легкость (простота и ортогональность, поддержка абстракции, выразительность);

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

Стоимость:

- Затраты на обучение программистов (простота и ортогональность языка, опыт человека);

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

- Затраты на разработку компилятора;

- Стоимость и эффективность выполнения программ.

 

17. Объекты данных в языках программирования.

 

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

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

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

18. Механизмы типизации.

 

Типизация – это способ защититься от использования объектов одного класса вместо другого или, по крайней мере, управлять таким использованием.

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

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

Строго типизированные языки имеют следующие преимущества:

· Все выражения будут согласованы по типу.

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

· В большинстве систем процесс редактирование-компиляция-отладка утомителен, и раннее обнаружение ошибок просто незаменимо.

· Объявление типов улучшает документирование программ.

· Многие компиляторы генерируют более эффективный объектный код, если им явно известны типы.

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

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

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

Наследование без полиморфизма возможно, но не очень полезно. Это видно на примере Ada, где можно объявлять производные типы, но из-за мономорфизма языка операции жестко задаются на стадии компиляции.

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

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...