- •Рабочая программа учебной дисциплины «Архитектура компьютеров»
- •Лист согласования
- •1. Пояснительная записка
- •1.1 Место дисциплины в структуре ооп.
- •1.2 Цели и задачи дисциплины
- •1.3 Перечень профессиональных компетенций
- •2. Тематический план
- •3. Содержание дисциплины
- •3.1 Содержание тем дисциплины
- •Тема 1.Введение
- •Тема 2. Класс simd
- •Тема 3. Класс mimd
- •Тема 4. Методы параллельных вычислений
- •Тема 5. Алгоритмы и методы организации функционирования вычислительных систем
- •Тема 6. Производительность вычислительных систем
- •Тема 7. Сети эвм и телекоммуникации
- •4. Вопросы для итогового контроля (зачет)
- •5. Критерии оценки знаний
- •6.Список рекомендуемой литературы.
- •6.1 Основная литература:
- •Учебно-методический блок
- •1. Теоретическая часть
- •Лекция №2 Формы представления чисел в эвм.
- •Алгебраическое представление двоичных чисел
- •Вычитание
- •Лекция №3 Основные термины и определения предметной области
- •Классическая схема эвм.
- •Системная шина
- •Лекция №4 Классификация эвм
- •Лекция №5 Центральный процессор
- •Регистр
- •О сегментах.
- •Лекция №7 Загрузка и выполнение программ на компьютере
- •Лекция №8 Параллельные вычислительные процессы и системы Виды параллелизма
- •Реализация параллельных систем
- •Параллельные вычислительные процессы и системы Нейровычислительные системы.
- •Сложности использования параллельных систем
- •Параллельные вычислительные процессы и системы Программирование параллельных систем
- •Лекция №10 Классификация вс по соотношению потока команд и потока данных
- •Сравнение параллельной и конвейерной организации вс
- •Лекция №11.
- •Лекция №12. Вычислительные сети
- •1 Лабораторные работы № 1, 2 «Работа клавиатуры»
- •2 Лабораторная работа № 3 «Работа видеосистемы»
- •3 Лабораторная работа № 4 «Работа внешних накопителей
- •4 Лабораторная работа № 5 «Работа дисковых накопителей
- •5 Лабораторная работа № 6 «Работа с портами
- •Приложение а справочная информация по вызовам bios
- •Приложение б справочная информация по вызовам функций ms-dos
- •Приложение в
- •Литература
О сегментах.
Сегментный регистр хранит стартовый (начальный) адрес памяти, определенный операционной системой для хранения команд программы (CS), переменных и констант (DS) и стека (SS) – для временного хранения результатов обработки, параметров вызываемых из программы процедур и адресов возврата из вызываемых процедур. На приведенном ниже рисунке графически показана связь сегментных регистров и соответствующих им сегментов. Рисунок отражает принципиальную связь между сегментными регистрами и сегментами программы, откуда следует, что программные сегменты не обязательно располагаются в оперативной памяти в порядке, отображенном на рисунке. Не стоит забывать, что в программе могут задаваться и дополнительные сегменты данных (такие, как ES, а в процессорах 80386 и выше еще и FS и GS), но приведенные 3 сегмента программы присутствуют в любой программе.
Сегмент начинается с границы параграфа (адреса, нацело делящегося на 16, с четырьмя двоичными нулями в младших разрядах значения адреса). Ячейки памяти внутри сегмента нумеруются относительно стартового адреса сегмента. Расстояние в байтах от начала сегмента до любой другой ячейки внутри этого сегмента, называется смещением.
Имена сегментных регистров строго зарезервированы, и поэтому при появлении этих имен в программе процессор обращается к своей внутренней памяти.
0000 Сегмент
стека
Сегмент
данных
Сегмент
кода
Max
адрес
Оперативное
запоминающее
устройство
Адрес
Адрес
Адрес
SS
DS
CS
Рисунок 4.3. Связь сегментов и сегментных регистров.
Регистр CS содержит адрес первой команды программы. Сумма содержимого этого регистра со значением смещения в указателе инструкций – регистре IP – дает адрес команды программы, которая должна быть передана следующей для исполнения.
Регистр DS содержит адрес первой переменной или константы, объявленной в программе. Команды используют этот регистр для поиска значений операндов, участвующих в операциях обработки. Этот адрес, сложенный со смещением переменной, дает ссылку на определенную ячейку со значениями исходных данных, промежуточных результатов или выходных данных.
Регистр SS позволяет реализовать в памяти стек, который программа использует для временного хранения адресов и данных. Адрес из этого регистра складывается со смещением, хранимым в указателе стека SP, и суммарное значение указывает на текущее слово в стеке.
Регистр ES используется в программах, обрабатывающих строковые последовательности. Если Ваша программа предполагает такую обработку, Вы должны проинициализировать этот регистр соответствующим значением (аналогично принудительной инициализации основного сегмента данных DS).
Описанные выше правила использования стековых регистров процессор применяет автоматически. Как правило, для целей программирования ссылаться на сегментные регистры не нужно.
Лекция №6.
Основы автоматизации вычислительного процесса
Ранее были даны определения алгоритма и программы. Алгоритм может быть записан в разных формах: словесной, формульной, табличной, графической или на языке программирования. Не останавливаясь на особенностях форм записи алгоритма, отметим, что языки, представляющие алгоритм в виде последовательности читаемых программистом (не двоично-кодированных) команд, называются алгоритмическими языками. Алгоритмические языки подразделяются на машинно-ориентированные, процедурно-ориентированные, объектно-ориентированные и проблемно-ориентированные.
Машинно-ориентированные языки (их еще называют ассемблеры) относятся к языкам программирования низкого уровня - программирование на них наиболее трудоемко, но позволяет создавать оптимальные программы, учитывающие функционально-структурные особенности конкретного компьютера. Программы на этих языках, при прочих равных условиях, будут более короткими (для ЭВМ) и более быстрыми. Кроме того, знание основ программирования на машинно-ориентированном языке позволяет специалисту подробно разобраться с архитектурой компьютера. Отличительной особенностью таких языков является генерация транслятором в большинстве случаев одной машинной команды на один оператор языка.
Все остальные языки программирования относятся к языкам высокого уровня и основаны на макрокомандах. Макрокоманда при трансляции генерирует много машинных команд, как правило, более десяти, а в некоторых случаях и несколько сотен команд. Этим обстоятельством объясняется большие объемы машинных кодов программ при малой длине исходных текстов.
Все языки программирования, и языки машинно-ориентированные, и языки высокого уровня, для их восприятия компьютером требуют наличия программ перевода - трансляторов на машинный язык.
Трансляторы бывают двух видов: трансляторы-компиляторы и трансляторы-интерпретаторы.
Компиляторы при трансляции переводят на машинный язык сразу всю программу и затем хранят ее в памяти машины в двоичных кодах. Интерпретаторы каждый раз при исполнении программы заново переводят в машинные коды каждую макрокоманду и передают ее для непосредственного выполнения компьютеру. В памяти интерпретируемые программы хранятся в виде исходных макрокоманд и потому в любой момент читаемы человеком. Откомпилированные программы в памяти ЭВМ практически человеком не читаемы. Но их можно вызвать в специальную программу-отладчик (DEBUG и его разновидности), который переведет эту программу на язык Ассемблера и, тем самым, сделает ее "человекочитаемой" (это еще один довод в пользу изучения языка ассемблер).
Алгоритм решения задачи, заданный в виде последовательности команд на языке вычислительной машины (в кодах машины) называется машинной программой. Команда машинной программы (далее команда) - это элементарная инструкция машине, выполняемая ею автоматически без каких-либо дополнительных указаний или пояснений.
Машинная команда состоит из двух частей: операционной и адресной.
-
КОП
Адреса
Рисунок 1. Функциональные части машинной команды
Операционная часть команды (КОП - код операции) - это группа разрядов в команде, предназначенная для записи аббревиатуры выполняемого действия.
Адресная часть команды (адреса) - это группа разрядов в команде, в которых записываются чаще всего идентификаторы данных или имена регистров Ml 111, хранящих информацию, или метки машинных команд. Часто эту часть называют адресами операндов, т.е. чисел, участвующих в операции.
По количеству записываемых адресов (обозначаются а1, а2, а3,...) команды делят на безадресные, одно-, двух- и трехадресные.
В трехадресной команде (рис. 2) а1 и а2 - адреса первого и второго чисел, участвующих в операции, а3 - адрес ячейки памяти или регистра, куда следует поместить результат выполнения операции.
КОП |
al |
а2 |
а3 |
Рисунок 2. Типовая структура трехадресной команды
Двухадресная команда имеет структуру, представленную на рисунке 3. В таких командах, как правило, al — адрес ячейки или регистра, где расположено первое число, и куда после завершения операции должен быть записан результат выполнения команды (обратите внимание: при этом "старое" значение первого числа изменяется). Второе участвующее в операции число хранится в а2.
-
КОП
а1
а2
Рисунок 3. Типовая структура двухадресной команды
В одноадресной команде (рис.4) единственный адрес al может обозначать либо адрес ячейки памяти или регистра, где хранится участвующее в операции число, либо адрес ячейки памяти или регистра, куда следует поместить результат операции.
-
КОП
а1
Рисунок 4. Типовая структура одноадресной команды
Безадресная команда содержит только код операции, а информация для нее должна быть заранее, до появления этой команды в программе, помещена другими командами в определенные регистры Ml ill (безадресные команды могут использоваться только совместно с командами другой адресности). В изучаемом нами Ассемблере применяются двух, одно и безадресные команды.
Итак, команды представляют краткую нотацию (запись) системы команд.