Логический/физический номер процессора

Тема в разделе "WASM.WIN32", создана пользователем Jin X, 8 дек 2009.

  1. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Всегда ли логический номер процессора присваивается одному и тому же процессору/ядру? Если я делаю SetThreadAffinityMask(X, 1), то всегда ли я буду попадать на один и тот же процессор/ядро? И если я сделаю из этого потока EAX=1,CPUID, то в битах 13..12 EAX (The processor type) и при EAX=0Bh,CPUID в EDX (x2APIC ID of current logical processor) всегда ли я буду получать одно и тоже число?
     
  2. Valentin

    Valentin Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2007
    Сообщения:
    128
    data.
    szebx dd 0
    szeax dd 0
    szesi dd 0
    szedx dd 0
    szedi dd 0
    szecx dd 0
    code.
    proccessor proc
    mov eax, 1
    cpuid
    and edx, 0100000000000000000y
    .if !ZERO?
    ; Варианты серийного номера процессора

    pushad

    mov eax, 1
    cpuid ; get Processor Signature
    push eax

    mov eax, 3
    cpuid

    pop eax
    mov ebx, eax
    shr ebx, 16
    and eax, 0FFFFh

    mov esi, edx
    shr esi, 16
    and edx, 0FFFFh

    mov edi, ecx
    shr edi, 16
    and ecx, 0FFFFh

    ;ЗАПОМИНАЕМ ЗНАЧЕНИЯ РЕГИСТРОВ С НОМЕРОМ ПРОЦЕССОРА
    MOV szebx,ebx
    MOV szeax,eax
    MOV szesi,esi
    MOV szedx,edx
    MOV szedi,edi
    MOV szecx,ecx
    popad
    .endif
    xor eax, eax
    ret
    proccessor endp
     
  3. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Зачем мне серийный номер процессора? Вопрос совершенно о другом.
    Всегда ли логический номер процессора присваивается одному и тому же физическому процессору/ядру? Если я делаю SetThreadAffinityMask(X, 1), то всегда ли я буду попадать на один и тот же процессор/ядро?
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    никто это не гарантирует, однако для большого ряда конкретных случаев - это так.
     
  5. gorodon

    gorodon New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2009
    Сообщения:
    301
    У меня был прецендент по этому вопросу - у одного пользователя стояло два отдельных процессора на материнке... Некорректно определялись серия процессора (разные значения eax при выполнении cpuid с eax=1) - оказалось, что процессоры имели разную версию изменений модели. Код выполнялся то на одном то на другом проце...

    Решение проблемы было почти таким же:
    GetProcessAffinityMask - SetProcessAffinityMask
    больше проблем не возникало...

    Поэтому на ваш вопрос отвечу утвердительно.
     
  6. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Эт радует ;)