- •Устройство эвм
- •Процессорор
- •Микропрограммирование
- •Способы ускорения традиционных эвм
- •Нетрадиционные архитектуры эвм
- •//Архитектура бесперспективна, ибо запрограммировать задачу для такой машины по-видимому невозможно.
- •Матричные
- •Векторные
- •Конвейерные
- •Торовые (Grid)
- •История эвм
- •Традиционные архитектуры эвм на примере ibm/360
- •Risc, cisc – компьютеры
- •Основные принципы построения hll-машины «Самсон»
- •Организация памяти
- •Команды чтения-записи
- •Арифметические команды
- •Логические команды
- •Передача управления
- •Организация циклов
- •Работа с вырезками
- •Реализация виртуальной памяти
- •Реализация вызовов процедур
- •Сoroutine - сопрограмма
- •Парал. Процессы
- •Понятие технологии программирования
- •Жизненный цикл программы
- •Реализация
- •Постановка задачи, оценка осуществимости
- •Планирование
- •Управление
- •Проектирование, этапы проектирования
- •Вопрос 20(7). Технология Real. Статическая модель.
- •Конвертер из sdl в объектный программный код
- •Качество разработки по
- •Стандарт качества iso
- •Стандарт cmm
- •29. Организация коллектива разработчиков
- •30.Тестирование программ
- •31.Психология программирования
- •32.Документирование
- •33. Case-технологии
- •34.Сопровождение
- •35.Системы реального времени
- •36.Понятия сбоев и отказов
- •37.Инструментальная и целевая эвм
- •38.Комплекс вычислительных средств
- •39.Параллельные процессы, работа с временными интервалами
- •40.Организация вычислительных процессов
- •1.Процессы.
- •2. Данные.
- •41.Технология rtst
- •42.Технология real. Статическая модель
- •43.Технология real. Динамическая модель
Работа с вырезками
[L1:u1, L2:u2] int A
«Паспорт» массива: хранятся границы и шаги (шаг2 – длина элемента, шаг1 – длина строки), адрес начала массива. При триммерной вырезкеи формируют новый паспорт в другом сегменте памяти. В статике лежит только адр. Массива (из-за того, что сегмент огранич 64 кб - ?)
Тогда адрес элемента A[i,j] вычисляется по формуле:
A[i,j] = A' + (i – L1)*шаг1 + (j – L2)*шаг2 =
= A' – L1*шаг1 – L2*шаг2 + i*шаг1 + j*шаг2
С0 = A' – L1*шаг1 – L2*шаг2 – можно вычислить заранее для ускорения работы
В "Самсоне" массивы представляются сегментами.
Длина паспорта – 16 байт.
Для одномерного массива с 2-х байтовыми элементами значения С0 в зависимости от L будут такими:
(С0 = A-L*шаг)
L=0 C0=16; L=1 C0=14; L=-1 C0=18
Если длина элемента 1, то умножать на шаг2 не надо. Если длина элемента 2, то можно сложить. Если длина элемента 4, то надо сдвинуть или два раза сложить.
индБ – байтовый, индЦ – двухбайтовый, индП – четырёхбайтовый.
инд1 , инд2, инд – для 1-, 2- и т.д. мерных массивов
Как избавиться от С0: договорились писать массивы от 0 или от 1, С0:=16 (если от 1, то останется дырка в два байта).
Если массив передаётся как параметр процедуре, то мы не знаем, с какими элементами мы работаем. Разделили массивы на «хорошие» – в которых умножать не надо, – и плохие. Для плохих генератор массива возвращает нулевое смещение, т.е. начало паспорта. Для хороших возвращает начало самого массива.
Для хороших массивов вырезка работает за три такта. //Вырезка – наиболее частая операция при умножении матриц, представленных в виде массивов (особенно одномерных).
Контроль за диапазонами индексов: включается или отключается на первом такте. Если включен, то все массивы считаются плохими.
Два режима работы 1) отладочный 2) режим счета
Реализация виртуальной памяти
Впервые введена в языке Ада, ~ 1960 год.
Основная идея: создать иллюзию большой памяти.
Главная особенность: физические адреса нельзя запоминать (так как сегменты могут переместиться).
В таблице сегментов хранится либо адрес в памяти, либо ссылка на внешнюю память (различие, например, по младшему биту).
Физический адрес = адрес начала сегмента + смещение
Преобразование мат. адреса в физический ~ 10 тактов.
НО: обращение к памяти идёт неравномерно (есть небольшой кусок памяти, к которому происходит ~ 90% всех обращений) (Copyright Терехов 2004).
«Фокус» в "Самсоне":
Есть стек адресов – 16 записей по 24 бита.
ЧА – читает мат. адрес, преобразует в физический, записывает его на верхушку стека.
Условие: если на сегмент есть хотя бы одна ссылка из стека адресов, то этот сегмент откачке/перемещению не подлежит (проигрыш невелик).
Если сегментов не хватает, происходит "встряска": пробегаем по сегментам, находим тот, к которому было меньше всего обращений. Его вытесняем во внешнюю память (но с учётом условия)
ПА – по физическому адресу находит математический. Можно просто бежать по всем сегментам и искать, в какой попадает данный физический адрес (чтобы найти № сегмента). В "Самсоне": есть ещё один стек, параллельный стеку адресов (16 записей по 16 бит), в который записывается N сегмента. Тогда команда ПА по номеру сегмента в таблице сегментов находит адрес начала сегмента, вычитает его из физического адреса и получает смещение.