Найти тему
Владимир Денисов

8. Память 01.02.01

ЗАМЕЧАНИЯ!

1. Эта редакция полностью отменяет содержание пункта 8 первой версии проекта.

Пункт 8. Память. - времено сохраняется, только из-за коментариев к нему.

2. Приведенный текст по своей сути является продвинутым вариантом первой версии, где то до уровня 1,5 поэтому в тексте есть некоторые концептуальные нестыковки с первой версией, которые будут устранены во второй версии. Будьте терпимы!

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

8. Память КНП.

8.1 Единицы измерения информации, хранящейся в памяти.

Минимальной единицей хранения информации в памяти, является двоичный разряд называемый битом. Бит принимает значение "0" или "1".  

Единицы измерения информации в порядке возрастания можно представить в следующей последовательности:

1 байт = 8 бит (1 бит для адресации)

1 Кбайт (килобайт)=1024 байт (10 бит для адресации)

1 Мбайт (мегабайт) = 1024 Кбайт = 1048576 байт (20 бит для адресации)

1 Гбайт (гигабайт) = 1024 Мбайт = 1048576 Кбайт = 1073741824 байт (30 бит для адресации)

1 Тбайт (терабайт) = 1024 Гбайт = 1048576 Мбайт = 1073741824 Кбайт = 1099511627776 байт (40 бит для адресации)

1 Пбайт (Петабайт) = 1024 Тбайт = 1048576 Гбайт = 1073741824 Мбайт = 1099511627776 Кбайт = 1125899906842624 байт (50 бит для адресации)

1 Эбайт (Эксабайт) = 1024 Пбайт = 1048576 Тбайт = 1073741824 Гбайт = 1099511627776 Мбайт = 1125899906842624 Кбайт = 1152921504606846976 байт. (60 бит для адресации)

Более крупных величин измерения информации международная система СИ не предусматривает. Но вычислительная техника развивается так быстро, что новые более крупные единицы измерения информации могут появиться в самое ближайшее время в том числе и в пределах горизонта (2025-2035 гг.) А это предполагаемое время создания и реализации нашего проекта. Если такие величины появятся в нашем проекте до расширения единиц измерения информации в Системе СИ, то я предлагаю ввести дополнительную приставку к единице Эксабайт. По типу: 1 КЭбайт = 1024 Эбайт, возможно несовсем благозвучно, но не забывайте, что это временно.

Просто нам сейчас важно определиться с предпалагаемыми объемами нужной нам памяти.

8.2. Предварительные замечания.

В КНП осуществляются процессы: Сбора, Накопления и Использования информации. Каждый из них в том или ином виде содержит обработку данных. В ряде случаев данные обрабатывают и на входе и на выходе процесса.

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

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

- внешняя. Хранится на внешних, по отношению к ФБ, устройствах. Виды внешней памяти, её внутреннюю структуру и алгоритмы доступа к внешней памяти определим на более поздних этапах проектирования;

- виртуальная. Является мнимой памятью, которая существует за счет её моделирования (имитации) на пространстве физической памяти конкретного ФБ. 

- оперативная - физическая память ФБ; 

- регистровая - свербыстродействующая память. Количество и типы регистров зависят от специализации ФБ. Регистровая память связана с процессором ФБ отдельной от ОП шиной; 

Каждый из видов памяти в каждом конкретном ФБ может иметь свою специфическую структуру.

Кроме основных видов памяти КНП использует и вспомогательные, это: стековая память, кэш память и ассоциативная память.

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

Информация в ВК КНП хранится в двоичном виде.

Наименьшей еденицей информации в ВК КНП является бит. Бит может иметь значение "0" или "1".

Информация между основной памятью и другими частями ВК КНП передается блоками, количество битов в которых равно или кратно 8. Восьмибитовый блок называется байтом и является основным элементом передаваемой и хранимой информации. Биты в байте нумеруются последовательно слева на право от 0 до 7. 

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

Длина поля определяется либо кодом операции, которая должна быть выполнена (т.е. задается неявно), либо задается явно как часть команды.

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

Диапазон всех адресов памяти называют адресным пространством, другими словами адресное пространство это размер виртуальной или оперативной памяти ФБ.

Номер байта в адресном пространстве виртуальной памяти называется логическим адресом.

Номер байта в адресном пространстве оперативной памяти называется физическим адресом.

Регистровая память адресуется типом и номером регистра.

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

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

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

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

Из них полноценным компьютером является только БУВВ. Он может использовать всю существующую номенклатуру устройств ввода-вывода и все основные виды памяти. Кроме того он единственная часть КНП который использует энергонезависимую память. Память остальных функциональных блоков энергозависима и теряется при выключении питания.

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

В наших рассуждениях в данном материале мы считаем БУВВ "черным ящиком" осуществляющим процессы Сбора и Хранения информации.

В КНП его миссия избавить другие процессоры от прямого взаимодействия с относительно медленными устройствами ввода-вывода.

Процесс выполнения расчета на КНП начинается с получения Задания на расчет. Задание поступает в БУВВ, от пользователей КНП. Допускается множество вариантов выдачи и исполнения Заданий. Все требования к выполнению расчета оформляются в виде пакета инструкций на Языке Управления Заданиями (ЯУЗ).

Корректно составленное Задание представляет собой набор задач, которые должны выполнятся в определенной последовательности.

Задача представляет собой программу допускающую свое автономное исполнение при наличии исходных данных. Задачи из разных Заданий могут выполнятся параллельно. Однако не все Задачи одного задания допускают параллельное выполнение. Допустимость параллельного выполнения задачи указывается программистом в специальной инструкции Языка Управления Задания.  

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

Нечто подобное происходит и при записи информации в Хранилище данных, т.е. меняется структура, выбирается место хранения информации, формируется её поисковый образ и задается Владелец, сохраненной информации. 

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

Все эти операции задаются программистом через инструкции Языка Управления Заданиями.  

Готовые к исполнению задачи передаются в БУЗ. 

БУВВ передает информацию в БУЗ и обменивается информацией с БУПС. 

БУВВ:

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

- передает БУЗ блоки управления задачами;

- инициирует в БУЗ выполнение задачи;

 - выдает в БУЗ по его запросу необходимый набор "микропрограмм" машинных команд.

- передает в БУПС входные данные к Задачам и получает от него результаты выполнения Задач.

БУЗ и БУПС по мимо обмена информацией с БУВВ и между собой - обмениваются данными и управляющими сигналами со всеми ВБ на верхнем уровне иерархии.

БУПС представляет собой "усеченный" компьютер, который имеет все виды памяти, и не имеет устройств ввода-вывода.

БУПС поддерживает единое адресное пространство для виртуальной памяти всех компьютеров первого уровня иерархии КНП. 

БУПС: 

- получает от БУЗ информационные блоки памяти задач;

получает от БУЗ информационные блоки памяти Процессов;

- получает от БУВВ входные данные к Задачам и передает ему результаты расчета;

- предварительно готовит виртуальную память для каждого ВБ;

- передает в ВБ запрошенную им страницу виртуальной памяти;

- по запросу ВБ сохраняет переданную им информацию в ВС.

Основная задача БУПС обеспечение максимально высокой скорости доступа ВБ к его виртуальной памяти.

Для объяснения процесса подготовки ВП ВБ, необходимо сказать, что исполняемые модули КНП имеют структуру ориентированную на их параллельное выполнение. Она формируется автоматически из программ на этапе трансляции. В чем она заключается? В случае разработки программ на любом языке программирования программист прежде всего ориентирован и мотивирован на правильную реализацию алгоритма решения задачи, а не сокращение размера программы в машиных кодах и повышение скорости её выполнения. По большому счету правильная реализация алгоритма и является основной задачей любого языка программирования. Поэтому многие языки поддерживают эту концепцию средствами языка не задумываясь, о других свойствах программ разработанных на этом языке, которые образуются стихийно. Но для повышение скорости выполнения программ прежде всего необходимо их максимальное расспараллеливание и сокращение размера. Так как КНП расчитан на увеличение скорости вычислений, задача расспараллеливания выполнения программ и сокращения используемой памяти является приоритетной для каждого его ФБ. Поэтому БУПС для увеличение скорости выполнения программ делает следующее:

1) Динамически увеличивает для приоритетных Процессов скорость работы с ВП. Путем выделения большего количества страниц в своей ОП для моделирования ВП ВБ на котором выполняется процесс. Вплоть до обращения в БУЗ с просьбой о приостановке менее приоритетных Процессов, тоже использующих в своих ВБ виртуальную память. Из-за того, что КНП допускает работу ВБ без использования ВП, загрузка ВК в этом случае не страдает. Выполнение Задачи без использования ВП задается соответствующей инструкцией Языка Управления Заданиями. Как и право Процесса расширять свою память за счет других Задач и Процессов. Алгоритмы этих действий мы рассмотрим позже.

2) Убирает из текстов программ все инструкции присвоения начальных значений переменным, заменяя их прямым размещением соответствующих значений в ВП ВБ. Такое же действие выполняется и для определения начальных значений для других областей памяти: массивов, структур и т.д.  

БУЗ представляет собой еще более усеченный компьютер, чем БУПС он не использует внешнюю память.

Кроме БУПС и БУВВ он обменивается информацией и управляет работой всех ВБ.

БУЗ:

- в случае необходимости создает и готовит на базе ВБ - ВМ для выполнения Задач;

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

- осуществляет декомпозицию задач на Процессы. 

Под Процессами мы тут понимаем куски кода программ, выделенные программистом или транслятором - для параллельного выполнения. И окончательно оформленые БУЗ. По большому счету Процесс это, то что исполняется ВБ.

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

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

Назовем такое событие ГКПК (граница концептуального порядка команд). 

Начиная с границы ГКПК начинается новая концептуальная последовательность команд (КПК).

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

Последовательностью РПК точно является первая КПК в программе. Назовем её первой КПК программы (ПКПК). 

Деление программы на КПК и РПК выполняет транслятор в процессе подготовки загрузочного модуля программы ориентированной на паралельное исполнение.

Некоторые РПК могут состоять из небольшого числа машинных команд иногда даже из одной. И выполнение их на разных ВБ не рентабельно. 

Поэтому перед выполнением мелкие РПК объединяются в группы, на них заводится специальный управляющий блок. И все они выполняются на одном ВБ. 

БУЗ сначала отправляет на выполнения все РПК программы, выделенные транслятором, кроме первого. Для чего строятся специальные блоки управления процессом.

После отправки на выполнение всех РПК программы, оставшийся её текст содержит одну единственную КПК (она же и ПКПК), которая по сути дела является одной длинной РПК. Иногда настолько длиной, что ее выполнение на одном ВБ становится не рентабельным. И она делится БУЗ на несколько последовательностей ОПК (отложенные последовательности команд), более приемлемого размера. Алгоритм такого деления мы разберем позже. Первая из ОПК в ПКПК объявляется РПК и отправляется на выполнение в ВБ. Остальные ждут готовности своих данных. Готовность ОПК к исполнению может наступить задолго до окончания всех ранее запущенных РПК программы. Этот процесс отслеживается БУЗ и он переводит, в случае готовности её данных, ОПК в статус РПК и передает её на выполнение в ВБ, как Процесс.

Добавлю еще несколько слов по структуре пограммного модуля программы готовой к параллельному исполнению:

1) Он состоит из команд в двоичных кодах Универсального Языка Ассемблера;

2) Не содержит циклов, которые "тупо" заменяются прямой записью последовательности команд;

3) Не содержит условных операторов, которые заменяются КПК - исполнение, которых зависит от значения определенных данных в памяти;

4) Команды этого модуля содержат адреса данных в ВП ВБ;

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

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

- управляет действиями БУПС во время выполнения Задач и Процессов.

Основная задача БУЗ декомпозиция Задач и их данных до уровня Процессов. С последующей сборкой итогов выполнения Процессов в результаты решения Задачи.  

ВБ представляют собой компьтеры без устройств ввода-вывода и внешней памяти. Каждый ВБ имеет собственную ВП, меньшего объема чем виртуальная память ВС КНП, которую поддерживает БУПС. ВП ВБ имеет свою область в виртуальной памяти КНП размер, которой равен размеру собственной ВП ВБ. Обмен информацией между ними осуществляется через специальную стековую память.

ВБ взаимодействуют с БУЗ, БУПС и всеми вычислительными блоками подчиненного ему уровня (БВ). Взаимодействие осуществляется посредством обмена данными и управляющими сигналами.

Основные задачи ВБ:

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

- распаралелить программу на более мелкие фрагменты, подготовить данные для их выполнения и передать эти фрагменты на выполнение в БВ;

- собрать результаты выполнения фрагментов программы в БВ и передать их в ВП БУПС.

ВБ обрабатывает полученные от БУЗ РПК и отправляет их на исполнение в подчиненные ему блоки более низкого уровня БВ. Передача информации от ВБ к БВ осуществляется через стековую память. 

Обработка РПК в блоках ВБ заключается в следующем:

- во всех РПК логические адреса ВП ВБ заменяют на физические адреса в ОП БВ;

- необходимые для исполнения РПК данные помещаются в ОП БВ; 

- после чего на исполнение в БВ сразу отправляются короткие РПК;

- затем длинные РПК делятся на несколько более коротких ОПК; Первый из них объявляется РПК и отправляется на исполнение в ВБ; Остальные переводятся в статус РПК по мере готовности данных. Прелесть такого подхода заключается в том, что любую досточно длинную РПК можно легко превратить в более короткие РПК. Сначала переделав ее статус в КПК. Потом выделив из нее все РПК (кроме первой) и отправить их на выполнение, затем разбить остатки на РПК и ОПК, после чего по мере готовности данных превращать ОПК в РПК и передавать их на выполнение. Этот процесс можно повторять до получения РПК необходимого размера. 

В случае необходимости каждая такая итерация должна происходить на дополнительных уровнях иерархии. В нашем случае можно ввести еще один уровень иерархии процессоров между БВ и БФУ поручив ему окончательную ликвидацию "длинных" РПК. Весь вопрос насколько это полезно. Предлагаю обсудить:-).  

- результаты исполнения РПК возвращаются в ВП БУПС.

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

БВ взаимодействуют с управляющим им ВБ и всеми вычислительными блоками подчиненного ему уровня (Блоки Финального Уровня). Взаимодействие между БВ и БФУ осуществляется посредством обмена данными и управляющими сигналами.

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

Основная задача БВ избавить подчиненные ему вычислительные Блоки Финального Уровня (БФУ) от необходимости напрямую обращаться к ОП. И по возможности сделать такие обращения более редкими.

Для этого осуществляется интерпретация переданого РПК в машинные коды КНП, ликвидируются все виды адресации данных кроме непосредственного, все операнды команд переносятся в регистры. 

Фрагмент программы в машиных командах КНП передается в БФУ, полученные результаты расчета возвращаются в ВБ. 

ФБУ представляют собой двухпроцессорную систему на общем поле регистровой памяти. Первый процессор занимается обменом информацией с БВ и поставкой команд и данных второму процессору. Второй процессор просто выполняет вычисления в соответствии с полученными программами. Оба процессора работают синхронно и выполняют все возложенные на них действия за один машинный такт.

Теперь попробуем грубо подсчитать как все это выглядит.

ВП уровня КНП - 16 ТЭбайт. Согласен, что это цифра большая, но во-первых это всего лишь размер адресного пространства, а во-вторых она более-менее расчетная так, как родилась из предельных возможностей адресации памяти в Универсальном Языке Ассемблера.

Внешняя память БУПС - 16 ТЭбайт это реальный размер данных на внешнем носителе уменьшать будем наверное все, но после обсуждения.

Внешняя память БУВВ - 16ЭЭбайт.

Виртуальная память БУЗ не более 16 ГБ.

Виртуальная память БУВВ 64 Тб.

Виртуальная память БУПС 4 ТБ.

Виртуальная память ВБ 16 ТБ.

ОП БУЗ - 1 ГБ ;

ОП БУПС - 256 ГБ с возможностью наращивания;

ОП БУВВ - 64 ГБ с возможностью наращивания;

ОП ВБ - 4 ГБ с возможностью наращивания; 

ОП БВ - 64 Мб; Регистровая память обьемом до 16 КБ

Регистровая память ФБУ - до 1 Кбайт;

Для всех блоков где регистровая память не указана она будет определена позже максимальный размер около 4 Кб.

Примерно 2048 процессоров. Если не считать переферии все должно поместиться примерно в три шкафа размером 1м X 1м X 2М. Хотя не обязательно делать для размещения компонентов шкафы с квадратным основанием, очень футуристично выглядят круглые шкафы, а в обслуживании скорее всего более удобны шкафы "распашонки" с прямоугольным основанием. Хотя для создания привлекательного иммиджа КНП лучше чтобы часть его шкафов имела круглую форму, а часть состояла из "распашонок".