Board.KolibriOS.org
http://board.kolibrios.org/

Больше ядер !
http://board.kolibrios.org/viewtopic.php?f=35&t=2027
Страница 1 из 2

Автор:  Serge [ Пт мар 09, 2012 1:03 pm ]
Заголовок сообщения:  Больше ядер !

Я добавил в бранч kolibri-acpi определение числа процессоров - переменная [cpu_count] и запуск одного ядра - функция start_ap. Каждому процессору присваивается номер начиная с нуля для загрузочного. В таблице smpt сохраняется apic id процессора под номером N. Всего таблица рассчитана на 16 процессоров.
start_ap запускает процессор N и переводит в режим ядра. После чего процессор в цикле рисует квадрат размером 32х32 пикселя с координатами х= cpu_apic_id*64, y=0. Теперь пытливые Самоделкины могут использовать эти ядра по своему усмотрению.

Автор:  Mario [ Пт мар 09, 2012 1:12 pm ]
Заголовок сообщения:  Re: Больше ядер !

Поддерживается:
ASUS M3N78-VM (Athlon 64 X2, 2 ядра) - система стартует и показывает серый квадрат в левом верхнем углу, не зависает.
Dell Inspiron (Intel i5, 2 ядра + хипертридинг итого 4 виртуальных) - система стартует и показывает серый квадрат в левом верхнем углу, не зависает.
ASRock M3A770DE (Athlon-II 64 X2, 2 ядра) - система стартует и показывает серый квадрат в левом верхнем углу, не зависает.

Не поддерживается.
Roverbook U800 (AMD Geode LX800) - система стартует, но естественно никакого квадрата, т.к. ядро одно, не зависает.
eBox-3300MX (Vortex86MX) - система стартует, но естественно никакого квадрата, т.к. ядро одно, не зависает.

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

Автор:  Serge [ Пт мар 09, 2012 2:37 pm ]
Заголовок сообщения:  Re: Больше ядер !

Добавил вывод числа CPU на доску отладки.
Перенесу код с определением числа CPU в транк.

Автор:  Mario [ Пт мар 09, 2012 5:40 pm ]
Заголовок сообщения:  Re: Больше ядер !

А как он будет работать? При загрузке будет рисование пингвинов выводиться в лог на черном фоне?

Автор:  Serge [ Пт мар 09, 2012 6:55 pm ]
Заголовок сообщения:  Re: Больше ядер !

Перенёс в транк. Данные выводятся на доску отладки.
Число процессоров определяется по таблицам ACPI. Если ACPI нет, то cpu_count равно 0, но на доске будет "1 CPU detected", чтобы не смущать народ.

Автор:  SoUrcerer [ Пт мар 09, 2012 6:57 pm ]
Заголовок сообщения:  Re: Больше ядер !

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

Автор:  Mario [ Пт мар 09, 2012 7:00 pm ]
Заголовок сообщения:  Re: Больше ядер !

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

З.Ы. CPU not found - это старая хохма. :mrgreen:

Автор:  Mario [ Пт мар 09, 2012 7:13 pm ]
Заголовок сообщения:  Re: Больше ядер !

Все нормально: на i5 определилось 4 ядра, на Athlon 64 x2 определилось 2 ядра.

Автор:  Serge [ Пт мар 09, 2012 7:16 pm ]
Заголовок сообщения:  Re: Больше ядер !

Сделаю ещё определение топологии, чтобы различать логические ядра и физические.

Автор:  Leency [ Сб мар 10, 2012 1:22 am ]
Заголовок сообщения:  Re: Больше ядер !

Можно выводить ещё на чёрном фоне во время загрузки... вместе с частотой процессора.

Автор:  Mario [ Сб мар 10, 2012 8:29 am ]
Заголовок сообщения:  Re: Больше ядер !

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

Автор:  Leency [ Сб мар 10, 2012 12:03 pm ]
Заголовок сообщения:  Re: Больше ядер !

Проц i3-330m определяет 4 ядра, на самом деле 2 физических, 4 потока.

Автор:  art_zh [ Сб мар 10, 2012 11:33 pm ]
Заголовок сообщения:  Re: Больше ядер !

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

Кстати, свет ведь клином на 64 битах не сошелся. Кто-то может захотеть использовать "вторые" ядра как API-ускорители, а кому-то надо будет засунуть туда одно монопольное RT-приложение.

Автор:  Serge [ Вс мар 11, 2012 12:28 am ]
Заголовок сообщения:  Re: Больше ядер !

art_zh
Я могу набросать общий код инициализации, но особенно сильно лезть в это дело пока не буду. Смысла в приложениях без полноценного доступа к сервисам системы не много. Как и писал раньше все это больше "Сделай Сам".

Хотя никаких неразрешимых проблем с исполнением 64-х битных программ в Колибри нет. Главное чтобы все указатели передаваемые ядру лежали ниже 2Gb. Каждый процесс создаётся как обычная программа Колибри. У процесса есть триггер kernеl-mode/user-mode. В user-mode процесс помечен как спящий и не планируется на 32-х битном ядре. В режиме ядра наоборот. Соответственно при смене режимов происходит миграция процесса с одного ядра на другое. Фактически это работает как IPC в микроядерной системе, только передаётся не сообщение, а весь процесс.

Похожим образом и smp организуется. Глобальная блокировка на входе в ядро, так что только один процессор в режиме ядра. Так FreeBSD работала.

Автор:  hidnplayr [ Ср мар 14, 2012 9:52 pm ]
Заголовок сообщения:  Re: Больше ядер !

Nice work,
I can debug on a quad-core i7 (8 threads) and an old dual Pentium III server, if it is of any use?

Страница 1 из 2 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/