Pull to refresh

Comments 24

Перестал читать после:
Каждый знает, что чем больше ядер у процессора — тем мощнее будет процессор

А как правильно? Чем больше ядер, тем немощнее?

Лучше не использовать абстрактное «мощнее». И все же для обычного пользователя гораздо важнее скорость ядра. Ядра 8700k под разгоном, например, на треть быстрее чем ядра у threadripperr.
Для обычного пользователя очень сложно придумать задачу где не хватит ладно не 4, а 6 или 8 ядер + ht (smt).
Правильно рассматривать связку процессор-ПО, иначе это будет сферический конь в вакууме. Если к процессору на 100500 говноядер прикрутить ещё столько же, то мощнее он будет только греться. В общем случае ПРИ ПРОЧИХ РАВНЫХ я лично предпочту Тактовая частота х2, чем Количество ядер х2.
В общем случае ПРИ ПРОЧИХ РАВНЫХ я лично предпочту Тактовая частота х2, чем Количество ядер х2.

Нет, подождите. Про частоту там ни слова. По вашему утверждению «перестал читать после „чем больше — тем мощнее процессор“» вы предпочтёте количество ядер х1, чем количество ядер х2.

Там ещё про много чего нет ни слова. Так что «По вашему утверждению», при добавлении ядер ЛЮБОЙ софт будет лучше работать?
Там ещё про много чего нет ни слова.

Откуда вы знаете, вы же дальше не читали.


Так что «По вашему утверждению», при добавлении ядер ЛЮБОЙ софт будет лучше работать?

Как вы это придумали? Там же написано «тем мощнее будет процессор», а не «любой софт будет лучше работать». Софт и при увеличении частоты не всегла лучше работает, sleep 60 вообще пофиг на мощность ваших ядер.

Откуда вы знаете, вы же дальше не читали.
А почему я должен это знать, я, как нормальный человек, читаю последовательно и осознаю прочитанное сразу, а не по завершении чтения.
sleep 60 вообще пофиг на мощность ваших ядер
Гениальный пример притянутости за уши, снимаю шляпу. Может ещё расскажете, как на sleep 60 влияет увеличение количества ядер?
Может ещё расскажете, как на sleep 60 влияет увеличение количества ядер?

Давайте расскажу. Никак. Но как это опровергает утверждение «чем больше ядер — тем мощнее процессор»?

Т.е. вы подтвердили, что более «мощный» процессор не будет быстрее выполнять программу. ЧТД.
Я так понимаю это про Интел, у АМД в настройке мелких нюансов чтото будет отличаться?

Интересно, спасибо.
Архитектура системы команд одна — x86, так что всё также
Симметричная многопроцессорность? Оглянулся вокруг, не нашёл. Сплошная NUMA.
В телефоне посмотрите :) Да и в компьютере тоже. С точки зрения софта — между core и processor — разница небольшая.

Смотрю в компьютере.


[    0.000000] NUMA: Initialized distance table, cnt=2
[    0.000000] NUMA: Node 0 [mem 0x00000000-0x7fffffff] + [mem 0x100000000-0x47fffffff] -> [mem 0x00000000-0x47fffffff]
[    0.000000] NODE_DATA(0) allocated [mem 0x47ffd5000-0x47fffffff]
[    0.000000] NODE_DATA(1) allocated [mem 0x87ffd4000-0x87fffefff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.000000]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.000000]   Normal   [mem 0x0000000100000000-0x000000087fffffff]
[    0.000000]   Device   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000001000-0x000000000009bfff]
[    0.000000]   node   0: [mem 0x0000000000100000-0x0000000059dfcfff]
[    0.000000]   node   0: [mem 0x0000000061e05000-0x000000006c5cefff]
[    0.000000]   node   0: [mem 0x000000006f7ff000-0x000000006f7fffff]
[    0.000000]   node   0: [mem 0x0000000100000000-0x000000047fffffff]
[    0.000000]   node   1: [mem 0x0000000480000000-0x000000087fffffff]
...
[    0.000000]   node   1: [mem 0x0000000480000000-0x000000087fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000047fffffff]
[    0.000000] On node 0 totalpages: 4080995
[    0.000000] Initmem setup node 1 [mem 0x0000000480000000-0x000000087fffffff]
[    0.000000] On node 1 totalpages: 4194304
...
[    0.000000] mempolicy: Enabling automatic NUMA balancing. Configure with numa_balancing= or the kernel.numa_balancing sysctl
[    1.388022] pci_bus 0000:00: on NUMA node 0
[    1.520013] pci_bus 0000:17: on NUMA node 0
[    1.652026] pci_bus 0000:3a: on NUMA node 0
[    1.725399] pci_bus 0000:5d: on NUMA node 0
[    1.792512] pci_bus 0000:80: on NUMA node 1
[    1.888016] pci_bus 0000:85: on NUMA node 1
[    2.020032] pci_bus 0000:ae: on NUMA node 1
[    2.089461] pci_bus 0000:d7: on NUMA node 1

Где вы тут SMP нашли? Я могу порыться в старых компьютерах, и в районе Core2 найти SMP, но с тех пор...

Ну тогда в телефоне :)

Или вот, моя машина:

[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] Setting APIC routing to Xen PV.
[ 0.000000] NUMA turned off


lorc:rumprun-x86/ (master✗) $ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
>> начали ставить новые схемы: APIC и ACPI. Давайте поговорим о первом.

А о втором(ACPI) будет позже или как? Больно интересно каким боком ACPI имеет отношение к SMP.
Вы можете найти таблицу MADT (APIC) в ACPI

Информация, требуемая для инициализации процессора хранится в ACPI таблицах. На данный момент это более предпочтительный способ для работы с многоядерными и многопроцессорными системами. Тот способ, который указан в статье (через нахождение _MP_ структуры в памяти) оставлен для совместимости. Спецификацию от него уже даже на сайте Intel не найти — только на сторонних сайтах.
А в UEFI так сделать уже вообще не получится
>>таблицу MADT (APIC) в ACPI

Точно, есть там Multiple APIC Description Table, давненько туда не заходил.
И судя по количеству присутствующих там записей, LocalAPIC есть не только у каждого железного ядра, но и на HT потоки, оные LocalAPIC имеются.

ПС если вы так глубоко в теме, может знаете почему в Win7/8/10 менеджер устройств в прерываниях показывает такое дикое количество ISA IRQ десятки и даже сотни? А PCI имеют странность быть минусовыми (0xFFFFFF9A-0xFFFFFFFF) сотнями?
Скоре всего шинда реассигнит IRQ девайсов, из-за этого, возможно, показывает такое дикое количество.
Хорошо написано, но кто не в теме, тому может показаться, что многозадачность как-то связана с прерываниями… В то время как аппаратные прерывания призваны обрабатывать прерывания от оборудования, чтобы не опрашивать «железо» постоянно, оборудование само вызывает прерывание…
Мало отзывов, видимо новое поколение не изучает глубоко железо.
Сразу, наверное жава-быдлокодить учат.
В ARM в общем, все то же самое. Только вместо APIC — GIC (Generic Interrupt Controller), который состоит из глобального Distrubutor'а и нескольких CPU Interfaces (по одному на ядро). Запуск secondary ядер — платформозависимая процедура, и чтобы программисты не мучились, во всех современных системах происходит единообразно — через обращение к firmware.

Вообще, x86 выглядит очень запутанной и местами нелогичной из-за огромного legacy. ARM не стесняются периодически дропать поддержку старых механизмов, поэтому архитектура у них проще и стройнее.
Sign up to leave a comment.

Articles