Многоядерная архитектура ПК, планирование доступа ядер к системной памяти

мой офисный компьютер имеет 8 ядер. Недавно я обновил систему с 4 ГБ ОЗУ (в двух модулях) до 24 ГБ ОЗУ (в шести модулях) и заметил значительное увеличение производительности при работе нескольких ядер. В частности, когда все (или почти все) ядра активны и работают программы, которые требуют больше, чем обеспечивает кэш каждого ядра (8 МБ).

старый и новый ОЗУ имеют одинаковую скорость (FSB 1333 МГц). Поэтому я подозреваю, что это не то, что происходит.

Это возможно, что (некоторые?) Архитектуры ПК позволяют ядрам одновременно получать доступ к системной оперативной памяти, если используемая ими память достаточно "далека"? Я не уверен, что" далеко друг от друга " может означать, но, возможно, есть способ для одного ядра читать/писать на карту 1 (или чип 3 на карте 1), в то время как другое ядро может одновременно читать/писать на карте 2 (или чип 1 на карте 1)? Являются ли архитектуры ПК (и, возможно, операционные системы) такими умными?

3
задан Simon Sheehan
14.04.2023 13:12 Количество просмотров материала 3214
Распечатать страницу

2 ответа

при условии, что материнская плата поддерживает трехканальной операции, то увеличение производительности, по крайней мере отчасти, в связи с переездом из двухканальный трехканальный.

2
отвечен sblair 2023-04-15 21:00

Ну там NUMA. Когда он используется, каждое ядро получает часть ОЗУ, назначенную ему. Таким образом происходит именно то, что вы описали. Один процессор будет работать с оперативной памятью, назначенной ему, а другой будет работать с другой частью оперативной памяти. Некоторые материнские платы даже не обнаруживают ОЗУ, если нет достаточного количества процессоров, чтобы использовать все это. Я не знаю, так ли это с компьютером, упомянутым здесь, но если это компьютер уровня рабочей станции, то это возможно.

другой вариант память чередования. Некоторые компьютеры могут получить доступ к памяти быстрее, если память "разбросаны". Принцип заключается в том, что в то время как один модуль выполняет операцию записи, другой модуль может принимать команды, поэтому нет необходимости ждать завершения операции записи в одном модуле, прежде чем начать в другом модуле.

представьте массив чисел. Каждое число представляет собой ячейку памяти. Предположим, что в этом примере каждое упрощенное расположение равно одному байту по размеру. Поэтому, если процессору нужно записать 4 байта, он запишет данные в первые 4 ячейки памяти. Нормально Волд на таком же модуле памяти и вероятно на такой же микросхеме памяти. Компьютер должен ждать завершения каждой операции записи перед отправкой следующего датума в память. Если используется чередование, адреса отображаются по-разному. Если у нас есть компьютер с 4 слотами памяти, адрес 1 будет на первом слоте, 2 на втором, 3 на третьем и 4 на четвертом. Этот путь когда обработчику нужно написать 4 bytes, он будет отправлять их на первые 4 адреса памяти, но поскольку они находятся на разных модулях, ему не нужно ждать завершения каждой операции записи. Вместо этого он будет отправлять датум в первое место, а затем во второе и так далее. Таким образом, к моменту завершения первой операции записи остальные 3 уже близки к завершению, поэтому данные можно быстрее записать в память.

3
отвечен AndrejaKo 2023-04-15 23:17

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх