Добавлен: 20.10.2018
Просмотров: 2010
Скачиваний: 14
―Flags‖ – состояние регистра флагов («П» - переполнение при выполнении операции,
«0» - ошибка деления на 0, «М» - ошибка выхода за границы памяти, «Т» - игнорирование
тактовых импульсов, «Е» - указана неверная команда);
―Cell‖ – значение выделенной ячейки памяти в области ―Memory‖ (используется для ре-
дактирования);
―Keys‖ – подсказка по функциональным клавишам;
―Input/Otput‖ – область, используемая Simple Computer в процессе выполнения программы
для ввода информации с клавиатуры и вывода еѐ на экран.
Содержимое ячеек памяти и регистров центрального процессора выводится в декодированном
виде. При этом, знак «+» соответствует значению 0 в поле «признак команды», следующие две циф-
ры – номер команды и затем операнд в шестнадцатеричной системе счисления.
Пользователь имеет возможность с помощью клавиш управления курсора выбирать ячейки
оперативной памяти и задавать им значения. Нажав клавишу ―F5‖, пользователь может задать значе-
ние аккумулятору, ―F6‖ – регистру «счетчик команд». Сохранить содержимое памяти (в бинарном
виде) в файл или загрузить его обратно пользователь может, нажав на клавиши «l», «s» соответ-
ственно (после нажатия в поле Input/Output пользователю предлагается ввести имя файла). Запустить
программу на выполнение (установить значение флага «игнорировать такты таймера» в 0) можно с
помощью клавиши ―r‖. В процессе выполнения программы, редактирование памяти и изменение
значений регистров недоступно. Чтобы выполнить только текущую команду пользователь может
нажать клавишу ―t‖. Обнулить содержимое памяти и задать регистрам значения «по умолчанию»
можно нажав на клавишу ―i‖.
ЛАБОРАТОРНЫЕ РАБОТЫ
Лабораторная работа 1. Организация современных персональных компьютеров
Цель работы
Изучить архитектуру современных персональных компьютеров. Понять назначение основных
функциональных блоков, интерфейсов их взаимодействия и схему работы центрального процессора
и оперативной памяти.
Задание на лабораторную работу
1. Прочитайте главы 1, 2 и 3 практикума по курсу «Организация ЭВМ и систем».
2. Напишите реферат на одну из приведѐнных ниже тем согласно Вашему варианту задания. Ва-
риант выбирается исходя из двух последних цифр Вашего учетного имени по модулю коли-
чества тем.
3. Изучите устройство материнской платы персонального компьютера на примере любой совре-
менной модели.
Темы рефератов
1. Интерфейс конфигурации и управления питанием (ACPI).
2. Процессоры семейства Intel. История развития.
3. Система команд процессоров семейства Intel.
4. Микроархитектура Intel Net Burst.
5. Микроархитектура Intel Core.
6. Микроархитектура Intel Atom.
7. Микроархитектура Intel Nehalem.
8. Архитектура Intel x2APIC.
9. Технология Hyper Threading.
10. Архитектура IA64 (Itanium 2, VLIW, Intel EPIC)
11. Сравнение технологий IA32 и EM64T (Intel 64).
12. Аппаратная поддержка виртуализации в процессорах Intel (Intel VT)
13. Аппаратная поддержка виртуализации в процессорах AMD (AMD-V)
14. Расширение системы команд Streaming SIMD Extension (SSE, SSE2, SSE3, SSE4).
15. Расширение системы команд MMX, 3DNow.
16. Интерфейс PCI, PCI-Express.
17. Интерфейс USB.
18. Интерфейс Bluetooth.
19. Интерфейсы D-Sub и DVI.
20. Интерфейс IEEE1394 (FireWire).
21. Принципы работы процессорного кэша.
22. Предсказание переходов. Спекулятивное выполнение.
23. Параллелизм уровня команд (Instruction Level Parallelism, ILP). Конвейеризация.
24. Параллелизм уровня потоков (Thread Level Parallelism). Технология
25. Параллелизм уровня заданий. Многоядерные процессоры.
26. Шина Hyper Transport
27. Внешняя память. Дисковые массивы RAID.
28. Оперативная память. Чип SPD.
29. Набор микросхем системной логики. Архитектура. Примеры существующих чипсетов.
Процедура защиты реферата
Защита реферата производится в сроки, указанные в календарном плане и проводится в два этапа:
1. беседа по представленному в реферате материалу;
2. рассказ «устройство узлов персонального компьютера».
На втором этапе студентам предоставляется один из узлов персонального компьютера и требует-
ся рассказать назначение этого устройства и его основные характеристики.
Контрольные вопросы
1. Что такое ЭВМ? Персональный компьютер?
2. Зачем нужна материнская плата?
3. Зачем используется блок питания? Корпус?
4. Что такое набор микросхем системной логики?
5. Что такое форм-фактор?
6. Сколько шин в персональном компьютере? Зачем они нужны? Как определить пропускную
способность шины?
7. Виды памяти? Статическая и динамическая память?
8. Что такое интерфейс? Какие интерфейсы используются в ПК?
Лабораторная работа 2. Разработка библиотеки mySimpleComputer. Оперативная
память, регистр флагов, декодирование операций.
Цель работы
Изучить принципы работы оперативной памяти. Познакомиться с разрядными операциями
языка Си. Разработать библиотеку mySimpleComputer, включающую функции по декодированию
команд, управлению регистрами и взаимодействию с оперативной памятью.
Задание на лабораторную работу
1. Прочитайте главу 4 практикума по курсу «Организация ЭВМ и систем». Изучите принципы
работы разрядных операций в языке Си: как можно изменить значение указанного разряда
целой переменной или получить его значение. Вспомните, как сохранять информацию в файл
и считывать еѐ оттуда в бинарном виде.
2. Разработайте функции по взаимодействию с оперативной памятью, управлению регистром
флагов и кодированию/декодированию команд:
a.
int sc_memoryInit ()
– инициализирует оперативную память Simple Computer, за-
давая всем еѐ ячейкам нулевые значения. В качестве «оперативной памяти» использу-
ется массив целых чисел, определенный статически в рамках библиотеки. Размер мас-
сива равен 100 элементам.
b.
int sc_memorySet (int address, int value)
– задает значение указанной
ячейки памяти как value. Если адрес выходит за допустимые границы, то устанавлива-
ется флаг «выход за границы памяти» и работа функции прекращается с ошибкой;
c.
int sc_memoryGet (int address, int * value)
– возвращает значение указан-
ной ячейки памяти в value. Если адрес выходит за допустимые границы, то устанавли-
вается флаг «выход за границы памяти» и работа функции прекращается с ошибкой.
Значение value в этом случае не изменяется.
d.
int sc_memorySave (char * filename)
– сохраняет содержимое памяти в файл в
бинарном виде (используя функцию write или fwrite);
e.
int sc_memoryLoad (char * filename)
– загружает из указанного файла содер-
жимое оперативной памяти (используя функцию read или fread);
f.
int sc_regInit (void)
– инициализирует регистр флагов нулевым значением;
g.
int sc_regSet (int register, int value)
– устанавливает значение указанно-
го регистра флагов. Для номеров регистров флагов должны использоваться маски, за-
даваемые макросами (#define). Если указан недопустимый номер регистра или некор-
ректное значение, то функция завершается с ошибкой.
h.
int sc_regGet (int register, int * value)
– возвращает значение указанного
флага. Если указан недопустимый номер регистра, то функция завершается с ошибкой.
i.
int sc_commandEncode (int command, int operand, int * value)
– кодиру-
ет команду с указанным номером и операндом и помещает результат в value. Если ука-
заны неправильные значения для команды или операнда, то функция завершается с
ошибкой. В этом случае значение value не изменяется.
j.
int sc_commandDecode (int value, int * command, int * operand)
– деко-
дирует значение как команду Simple Computer. Если декодирование невозможно, то
устанавливается флаг «ошибочная команда» и функция завершается с ошибкой.
3. Оформите разработанные функции как статическую библиотеку. Подготовьте заголовочный
файл для неѐ.
Защита лабораторной работы
Для защиты лабораторной работы необходимо подготовить программу, демонстрирующую
использование созданной библиотеки функций (сборка программы с библиотекой, использование
заголовочного файла, примеры вызовов каждой функции, проверка корректности работы функций
при различных входных значениях).
Контрольные вопросы
1. Что такое вентиль? Какие значения он может принимать?
2. Сколько вентилей необходимо, чтобы получить логические функции НЕ, ИЛИ-НЕ, И-НЕ, И,
ИЛИ?
3. Что такое таблица истинности? Булева функция? Как они связаны между собой?
4. Как получить алгебраическую булеву функцию из таблицы истинности? И наоборот?
5. Каким образом можно синтезировать логическую схему по таблице истинности? По алгебра-
ической формуле?
6. Что такое система счисления? Чем отличается позиционная система счисления от непозици-
онной?
7. Как получить качественный эквивалент числа в непозиционной системе счисления? В пози-
ционной?
8. Как перевести числа из двоичной системы счисления в десятичную? Восьмеричную? Шест-
надцатеричную? И наоборот?
9. Что такое двоично-десятичное число?
10. Как в ЭВМ представляются отрицательные числа и числа с плавающей запятой?
11. Что такое дополнительный код? Зачем он используется?
12. Как перевести десятичное число с плавающей запятой в двоичное?
13. Какие базовые типы данных используются для хранения переменных в языке СИ?
14. Что такое флаг? Зачем он используется? Каким образом можно манипулировать флагами? Что
такое маска?
Лабораторная работа 3. Консоль управления моделью Simple Computer.
Текстовая часть.
Цель работы
Изучить принципы работы терминалов ЭВМ в текстовом режиме. Понять, каким образом ко-
дируется текстовая информация и как с помощью неѐ можно управлять работой терминалов. Разра-
ботать библиотеку функций myTerm, включающую базовые функции по управлению текстовым
терминалом (очистка экрана, позиционирование курсора, управления цветом). Начать разрабатывать
консоль управления Simple Computer (вывести на экран текстовую часть).
Задание на лабораторную работу
1. Прочитайте главу 5 практикума по курсу «Организация ЭВМ и систем». Обратите особое
внимание на параграфы 5.4 и 5.5. Изучите страницу
man
для команды
infocmp
, базы
terminfo
, функции
ioctl
.
2. Откройте текстовый терминал и запустите оболочку
bash
(оболочка запускается автоматиче-
ски). Используя команду
infocmp,
определите (и перепишите их себе) escape-
последовательности для терминала, выполняющие следующие действия:
очистка экрана и перемещение курсора в левый верхний угол (clear_screen);
перемещение курсора в заданную позицию экрана (cursor_address);
задание цвета последующих выводимых символов (set_a_background);
определение цвета фона для последующих выводимых символов (set_a_foreground);
скрытие и восстановление курсора (cursor_invisible, cursor_visible).
3. Используя оболочку bash, команду echo –e и скрипт
2
, проверьте работу полученных последо-
вательностей. Символ escape задается как \033 или \E. Например – echo -e "\033[m". Для про-
верки сформируйте последовательность escape-команд, выполняющую следующие действия:
очищает экран;
выводит в пятой строке, начиная с 10 символа Ваше имя красными буквами на черном
фоне;
в шестой строке, начиная с 8 символа Вашу группу зеленым цветом на белом фоне;
перемещает курсор в 10 строку, 1 символ и возвращает настройки цвета в значения «по
умолчанию».
4. Разработать следующие функции:
int mt_clrscr (void)
- производит очистку и перемещение курсора в левый верх-
ний угол экрана;
int mt_gotoXY (int, int)
- перемещает курсор в указанную позицию. Первый
параметр номер строки, второй - номер столбца;
int mt_getscreensize (int * rows, int * cols)
- определяет размер экрана
терминала (количество строк и столбцов);
int mt_setfgcolor (enum colors)
- устанавливает цвет последующих выводимых
символов. В качестве параметра передаѐтся константа из созданного Вами перечисли-
мого типа
colors
, описывающего цвета терминала;
int mt_setbgcolor (enum colors)
- устанавливает цвет фона последующих вы-
водимых символов. В качестве параметра передаѐтся константа из созданного Вами
перечислимого типа
colors
, описывающего цвета терминала.
Все функции возвращают 0 в случае успешного выполнения и -1 в случае ошибки. В каче-
стве терминала используется стандартный поток вывода.
5. Оформите разработанные функции как статическую библиотеку myTerm. Подготовьте заго-
ловочный файл для неѐ.
Защита лабораторной работы
Для защиты лабораторной работы необходимо подготовить программу, демонстрирующую
использование созданной библиотеки функций (сборка программы с библиотекой, использование
заголовочного файла, примеры вызовов каждой функции, проверка корректности работы функций
при различных входных значениях), а также программу, выводящую на экран согласно рисунку 1
содержимое оперативной памяти, регистров и назначение клавиш.
Контрольные вопросы
1. Взаимодействие с устройствами в Linux. Специальные файлы устройств.
2. Функции open, close, read, write.
3. Терминалы. Типы терминалов. Эмуляция терминала. Режимы работы.
4. Управление терминалом. Команды. Низкоуровневое управление.
5. Что такое escape-последовательность?
6. Как определить escape-последовательности для терминала?
2
Скрипт – это текстовый файл, содержащий команды оболочки. Запускается на выполнение командой bash имя_файла.
Лабораторная работа 4. Консоль управления моделью Simple Computer. Псевдографика.
«Большие символы».
Цель работы
Изучить работу текстового терминала с псевдографическими символами. Понять, что такое
шрифт и как он используется в терминалах при выводе информации. Разработать библиотеку
myBigChars, реализующую функции по работе с псевдографикой и выводу «больших символов» на
экран. Доработать консоль управления Simple Computer так, чтобы выводились псевдографические
элементы.
Задание на лабораторную работу.
1. Прочитайте главу 5 практикума по курсу «Организация ЭВМ и систем». Обратите особое
внимание на параграфы 5.2, 5.3, 5.4.2. Изучите страницу
man
для команды
infocmp
, базы
terminfo
(раздел псевдографика).
2. Используя оболочку
bash
и команду
infocmp
, определите escape-последовательности для
переключения используемых терминалом кодировочных таблиц (enter_alt_charset_mode и
exit_alt_charset_mode) и соответствие символов для вывода псевдографики (acs_chars).
3. Используя оболочку
bash
, команду echo –e и скрипт, проверьте работу полученных последо-
вательностей. Символ escape задается как \033 или \E. Например - echo -e "\033[m". Для про-
верки сформируйте последовательность escape-команд, выполняющую следующие действия:
очищает экран;
выводит псевдографическую рамку, начиная с 5 символа 10 строки, размером 8 строк
на 8 столбцов;
с
помощью
псевдографического
символа
«закрашенный
прямоугольник»
(ACS_CKBOARD) в рамке выводится большой символ, соответствующий последней
цифре дня вашего рождения (например, день рождения 13 января 1991 года, выводится
цифра 3).
4. Разработать следующие функции:
int bc_printA (char * str)
- выводит строку символов с использованием допол-
нительной кодировочной таблицы;
int bc_box(int x1, int y1, int x2, int y2) -
выводит на экран псевдогра-
фическую рамку, в которой левый верхний угол располагается в строке x1 и столбце
y1, а еѐ ширина и высота равна y2 столбцов и x2 строк;
int bc_printbigchar (int [2], int x, int y, enum color, enum color)
-
выводит на экран "большой символ" размером восемь строк на восемь столбцов, левый
верхний угол которого располагается в строке x и столбце y. Третий и четвѐртый па-
раметры определяют цвет и фон выводимых символов. "Символ" выводится исходя из
значений массива целых чисел следующим образом. В первой строке выводится 8
младших бит первого числа, во второй следующие 8, в третьей и 4 следующие. В 5
строке выводятся 8 младших бит второго числа и т.д. При этом если значение бита = 0,
то выводится символ "пробел", иначе - символ, закрашивающий знакоместо
(ACS_CKBOARD);
int bc_setbigcharpos (int * big, int x, int y, int value)
- устанавли-
вает значение знакоместа "большого символа" в строке x и столбце y в значение value;
int bc_getbigcharpos(int * big, int x, int y, int *value)
- возвращает
значение позиции в "большом символе" в строке x и столбце y;
int bc_bigcharwrite (int fd, int * big, int count)
- записывает заданное
число "больших символов" в файл. Формат записи определяется пользователем;
int bc_bigcharread (int fd, int * big, int need_count, int * count)
считывает из файла заданное количество "больших символов". Третий параметр ука-
зывает адрес переменной, в которую помещается количество считанных символов или
0, в случае ошибки.
Все функции возвращают 0 в случае успешного выполнения и -1 в случае ошибки. В каче-
стве терминала используется стандартный поток вывода.
5. Оформите разработанные функции как статическую библиотеку myBigChars. Подготовьте за-
головочный файл для неѐ.