- •Устройство эвм
- •Процессорор
- •Микропрограммирование
- •Способы ускорения традиционных эвм
- •Нетрадиционные архитектуры эвм
- •//Архитектура бесперспективна, ибо запрограммировать задачу для такой машины по-видимому невозможно.
- •Матричные
- •Векторные
- •Конвейерные
- •Торовые (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. Динамическая модель
Основные принципы построения hll-машины «Самсон»
Решение: ограничить класс входных языков.(только статические)
Задача транслятор аппаратура результат
То, что сделано на этапе трансляции, перепроверять на аппаратуре не будем. И обратно, что не удобно делать транслятору, должна делать аппаратура. Ограничили класс входных языков статическими языками: Алгол-68, Паскаль, Модула-2, Ада. В таких языках транслятор знает всё о переменных и может сделать то, что потом на архитектуре делать не надо.
Обычно в машинах проверяется переполнение и опустошение стека. В этой машине транслятор гарантирует, что такого не будет(кроме рекурсии – только там проверка), также нет неправильн. Кода операции, непр.использ регистра и т.д. Есть только деление на 0.
От транслятора можно добиться большей надёжности, чем от аппаратуры.
Остаются ошибки типа «деление на 0». Их должна проверять аппаратура, ибо они динамические.
Итоги:
главная беда старых машин – при их создании не верили в трансляцию;
транслятор и архитектура должны создаваться в одном коллективе с общей целью.
Адресная шина 24 бита (16 Мб памяти). Позже вернулись к 32 битам (2 Гб памяти).
Реально в программе мы имеем доступ к сегментам. Можно организовать страничную или сегментную память.
Страничная – память выделяется стандартными кусками (проблема – внутренняя фрагментация, т.е. в кусках).
Сегментная – память выделяется произвольными кусками (проблема – внешняя фрагментация, т.е. между занятыми кусками остаются свободные).
В "Самсоне" – сегментная организация памяти, метод граничных маркеров (Copyright Л. Григорьева).
Сегментные регистры, адрес = база + смещение.
Есть как сегменты данных так и сегменты команд.
Память с кодом "read only" можно читать несколькими процессами.
Регистр команд (РК) – текущая исполняемая команда в текущем сегменте.
Ориентация на совершенную польскую запись.
Три стека:
стек целых;
стек адресов (каждый элемент указывает на произвольную ячейку памяти);
стек вещественных.
Р егистр G – адресует глобальные данные.
Регистр L – адресует статику текущей процедуры.
Основной адресуемый элемент – слово.
@ - адрес верхушки стека.
C8 (L/G) – 8-ибитовое смещение
C16 (L/G) – 16-и битовое смещение
Итого шесть типов адресации.
Младший бит смещения указывает относительно L оно или G.
Тогда остаётся только четыре принципиально разных типа адресации. В водопроводе сразу определяется, L или G.
Стек – аппаратный регистр, сидящий внутри процессора.
Главная часть транслятора – глобальная оптимизация регистров.
40% команд в программе – чтение, ещё 40% - переходы. На каждые 4 чтения – одна запись.
Чтение: Ч адр (ЧС8, ЧС16, Ч@, Ч@8)
Запись: П адр (ПС8, ПС16, П@, П@8)
ЧН – непосредственный операнд. Ч0, Ч1 – на верхушку стека целых 0, 1.
ЧУС4 – укороченное чтение.
Для часто используемых команд – короткий код команды. Для редко используемых добавляем несколько битов – не жалко.
Организация памяти
Адресная шина 24 бита (16 Мб памяти). Позже вернулись к 32 битам (2 Гб памяти).
Реально в программе мы имеем доступ к сегментам. Можно организовать страничную или сегментную память.
У каждого процесса в Самсоне есть сегмент данных, так и сегмент кода.
|G -(шапка)-|---(сегмент данных)--------L-------------|
|IR-(шапка)-|---(сегмент кода)-----------PC------------|
//PC-указатель на текущую команду
//IR-указатель на начало сегмента кода данного процесса
//G – указатель на глобальные данные процесса
//L – указатель на локальные данные процедур процесса (статика процедур)
Страничная – память выделяется стандартными кусками (проблема – внутренняя фрагментация, т.е. в кусках).
Сегментная – память выделяется произвольными кусками (проблема – внешняя фрагментация, т.е. между занятыми кусками остаются свободные).
В "Самсоне" – сегментная организация памяти, метод граничных маркеров (Copyright Л. Григорьева).
Метод граничных маркеров – храним списки свободных/занятых сегментов с 2-мя словами по бокам (длина куска, + => свободен, - => занят), при выгрузке сливаем куски. При выделении памяти применяем стандартные методы поиска первого подходящего куска, либо минимально подходящего, либо откусываем от большого.
Есть как сегменты данных так и сегменты команд.
Память с кодом "read only" можно читать несколькими процессами.
Регистр команд (РК) – текущая исполняемая команда в текущем сегменте.
Есть три стека:
стек целых;
стек адресов (каждый элемент указывает на произвольную ячейку памяти);
стек вещественных.
Основной адресуемый элемент – слово (16 бит).
4 типа адрессации:
а) Статическая $8/$16 и L/G
б) Динамическая
@ - по адресу, взятому с верхушки адр. стека
@8 - по адресу, взятому с верхушки адр. Стека + сдвинулись по 8-бит смещ