реклама на сайте
подробности

 
 
> Micro-Kernel on Chip, прошу анализ, критику, идеи и т.д. и т.п.
alman
сообщение Dec 24 2012, 10:30
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 22-12-10
Из: Россия, Ростовская обл.
Пользователь №: 61 800



Уважаемые господа и дамы, позвольте проконсультироваться по вопросу аппаратного микроядра. Я слаб в микроэлектронике, поэтому прошу отнестиcь снисходетельно.

Итак, существует микроядро L4 спецификации X2. Я довольно давно с ним работаю и приблизительно столько же времени мечтаю увидеть его реализованным на кристалле. Чтобы добавить поддержку микроядра в микропроцесссор, необходимо модифицировать два блока - MMU и декодер команд.

К системе команд добавляется несколько команд. Главная команда Inter Process Communication (IPC). Для её реализации необходимо выделить на кристалле блок памяти для описания задач - Task Control Block (TCB). В общем случае TCB одной задачи должен включать следующе элементы - копия всех регистров ALU, буфер для описания соообщения (64-регистра), поля, описывающие задачу (приоритет задачи, текущий квант времени), данные для MMU, обеспечивающие привязку таблицы страниц к задаче, возможно что-то ещё. Адрес TCB в памяти одновременно является глобальным идентификатором задачи (нити исполнения, программного потока).

Команда IPC включает две фазы - фазу передачи сообщения и фазу приёма сообщения. Аргументом команды IPC является регистр, содержащий идентификатор задачи (физический адрес TCB), с котором происходит обмен сообщениям.

Что происходит, когда декодер команд распознаёт команду IPC? Анализирует фазы команды. Если фазы передачи нет, то процессор устанавливает флаг ожидания в TCB текущей задачи, сохраняет регистры ALU в TCB, затем выбирает TCB с наивысшим приоритетом, не находящимся в фазе ожидания приёма, и загружет ALU из выбранного TCB - в результате происходит переключение задачи.

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

Важным, на мой взгляд, моментом, является ситуация, когда блокированы все IPC - например, каждая задача находится в ожидании готовности другой или какого либо события. В этом случае процессор должен переходит в состояние низкого потребления энергии.

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

Ещё одна возможность L4 IPC - аттрибут, указывающий два интервала времени - время передачи сообщения и время приёма сообщения. Время описывается экпонентиальной величиной с двумя граничными состояниями - 0 - не блокироваться, если удалённая сторона не готова и бесконечность - ждать готовности удалённой стороны. Прияём, время передачи и время приёма - независимы.

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

И наконец, MMU. Отличе L4 MMU от традиционных MMU является возможность использования страниц разных размером. Т.е. описатель виртуальной страницы содержит аттрибут, описывающий её размер. Таким образом блок памяти, например, 96 Кб, может быть описан двумя выравненными виртуальными страницами - 64Кб и 32Кб. Т.е. MMU должен поддерживать страницы с размерами, minimal_page_size * 2 в степени S.
Где S лежит в интервале от 0 до значения, описывающего полное адресное пространство.


Надеюсь, я смог достаточно понятно выразить "требования" к процессору с аппаратной поддержкой мироядра L4, хотя. многие моменты сознательно/нечайно упустил. Приглашаю к диалогу о возможности/трудоёмкости реализации данного расширения. С радостью отвечу на вопросы по микроядру L4.

Кому и для чего может понадобится такой процессор? Это процессор нужнем мне - я реализовал POSIX совместимую операционную систему на базе примитивов L4X2, которая вполне удачно и оптимально использует идеи этого микроядра.

В качестве бонуса прилагаю к теме раритетную спецификацию L4 X2, из которой ещё не убрали поддержку ARM. В свежих версиях спецификации остались только IA32, AMD64, PowerPC, PowerPC64.

Сообщение отредактировал alman - Dec 24 2012, 10:34
Прикрепленные файлы
Прикрепленный файл  l4_x2.pdf ( 1.01 мегабайт ) Кол-во скачиваний: 29
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mad_max
сообщение Dec 24 2012, 11:58
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Ну, а от людей чего Вы хотите-то?
Пообщаться на тему возможности/трудоемкости, да возможно,
да трудоемко за вечер пятницы не сделаешь.
Если ищете outsource, то есть другой раздел форума на эту тему.
Если это research, то как-то переформулируйте свою просьбу,
а не то что вот мне надо, давай те все вместе напряжемся и сделаем.
Go to the top of the page
 
+Quote Post
alman
сообщение Dec 24 2012, 13:48
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 22-12-10
Из: Россия, Ростовская обл.
Пользователь №: 61 800



Цитата(Mad_max @ Dec 24 2012, 15:58) *
Ну, а от людей чего Вы хотите-то?
Пообщаться на тему возможности/трудоемкости, да возможно,
да трудоемко за вечер пятницы не сделаешь.


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

Цитата(Mad_max @ Dec 24 2012, 15:58) *
Если ищете outsource, то есть другой раздел форума на эту тему.


Пока не ищу. Да смысла нет приходить с чужим PDF (L4 X2 Reference manual) и говорить: "Сделайте такое, как тут описано, только в железе".

Цитата(Mad_max @ Dec 24 2012, 15:58) *
Если это research, то как-то переформулируйте свою просьбу,


Для начала хотелось бы узнать, что такое "плавающая маска для виртуальных адресов в TLB"? Мне подсказали, что она необходима для реализации MMU с поддержкой FlexPages - виртульных страниц различного размера.

Цитата(Mad_max @ Dec 24 2012, 15:58) *
а не то что вот мне надо, давай те все вместе напряжемся и сделаем.

Нет нет, я никого ни к чему не принуждаю. Лишь надеюсь, что тема аппаратной реализации синхронных сообщений и расширенного MMU будет интересна кому-либо ещё. Мне кажется тут даже две темы - можно не следовать стандарту и сделать микрокронтроллер без виртуальной памяти, но с поддержкой сообщений. Т.е. тему можно расценивать так же и как обращение к разработчикам оригинальных CPU.

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 17:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016