Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Прочие языки программирования > Assembler
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #2  
Старый 03.09.2012, 18:45
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Все просто. Получить ID проще всего действительно через ЦПУИД. Можно считать из АПИКа. Номер процессора обычно равен номеру его Local APIC (хотя в таблице ACPI 2 номера - один ACPI CPU ID , и второй для его LAPIC'а; но делать их разными не имеет смысла). А HTT - который HyperThreading? Если да, то по спецификации SMP от интела для системы нет разницы между разными процессорами, разными ядрами одного камня и разными тредами процессора. LAPIC'у каждого из них назначается свой ID, по которому он уже работает.
Проверял своей осью на компе. 4 ядра, гипертрединг. Нашлось 8 нормальных ядер и 8 заблокированных (в таблице ACPI помечены недоступными).
[offtop]Что, кстати, подтверждает слухи о том, что у интела один конвеер на серверные 8-ми ядерные процы и на остальные. Просто ядра блокируются для десктопов.[/offtop]

Я, например, в обработчике прерывания локального таймера использую такое определение:
Код:
     LOCAL_APIC_ID_REG     = 20h

     mov  rbx, [LAPICAddr]
     mov  eax, [rbx+LOCAL_APIC_ID_REG]
     shr  eax, 24                                       ; Get LAPICID
(синтаксис - FASM)
Где LAPICAddr - виртуальный адрес страницы, которая отображена на пространство MMIO локал апика. Физический адрес я получаю при инициализации системы из ACPI таблицы.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 03.09.2012 в 19:10.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:47.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter