Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Apr 20, 2019 5:39 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next
Author Message
 Post subject: Больше ядер !
PostPosted: Fri Mar 09, 2012 1:03 pm 
Offline
Kernel Developer

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


Top
   
PostPosted: Fri Mar 09, 2012 1:12 pm 
Поддерживается:
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) - система стартует, но естественно никакого квадрата, т.к. ядро одно, не зависает.

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


Top
   
PostPosted: Fri Mar 09, 2012 2:37 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Добавил вывод числа CPU на доску отладки.
Перенесу код с определением числа CPU в транк.


Top
   
PostPosted: Fri Mar 09, 2012 5:40 pm 
А как он будет работать? При загрузке будет рисование пингвинов выводиться в лог на черном фоне?


Top
   
PostPosted: Fri Mar 09, 2012 6:55 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Перенёс в транк. Данные выводятся на доску отладки.
Число процессоров определяется по таблицам ACPI. Если ACPI нет, то cpu_count равно 0, но на доске будет "1 CPU detected", чтобы не смущать народ.


Top
   
PostPosted: Fri Mar 09, 2012 6:57 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Вау, круто. А можно как-нибудь эти ядра нагрузить из клиентских приложений? Или планировщику поручить на них часть задач скидывать?


Top
   
PostPosted: Fri Mar 09, 2012 7:00 pm 
Боюсь, что придется все собственными ручками в ядре делать.

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


Top
   
PostPosted: Fri Mar 09, 2012 7:13 pm 
Все нормально: на i5 определилось 4 ядра, на Athlon 64 x2 определилось 2 ядра.


Top
   
PostPosted: Fri Mar 09, 2012 7:16 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Сделаю ещё определение топологии, чтобы различать логические ядра и физические.


Top
   
PostPosted: Sat Mar 10, 2012 1:22 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 4976
Можно выводить ещё на чёрном фоне во время загрузки... вместе с частотой процессора.

_________________
Через тернии к звездам


Top
   
PostPosted: Sat Mar 10, 2012 8:29 am 
Загрузочный лог на черном фоне полезен лишь при зависании, а там знать сколько у тебя ядер не очень важно.


Top
   
PostPosted: Sat Mar 10, 2012 12:03 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 4976
Проц i3-330m определяет 4 ядра, на самом деле 2 физических, 4 потока.

_________________
Через тернии к звездам


Top
   
PostPosted: Sat Mar 10, 2012 11:33 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1301
Serge
Однако теперь надо начинать серьезно продумывать формат исполняемых файлов для Колибри-64,
адресную модель для второго ядра,
API-64,
и еще протокол межпроцессорных сообщений.

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


Top
   
PostPosted: Sun Mar 11, 2012 12:28 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
art_zh
Я могу набросать общий код инициализации, но особенно сильно лезть в это дело пока не буду. Смысла в приложениях без полноценного доступа к сервисам системы не много. Как и писал раньше все это больше "Сделай Сам".

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

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


Top
   
PostPosted: Wed Mar 14, 2012 9:52 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1247
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?

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited