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

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

Старая и новая RAM имеет ту же скорость (FSB 1333 МГц). Таким образом, я подозреваю, что это не то, что продолжается.

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

1
задан 01.11.2011, 23:17

2 ответа

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

2
ответ дан 12.12.2019, 08:37

Хорошо существует NUMA. Когда это используется, каждое ядро получает часть RAM, присвоенной ему. Этот путь точно, что Вы описали, происходит. Один процессор будет работать с RAM, присвоенной ему, и другой будет работать с другой частью RAM. Некоторые материнские платы даже не обнаружат RAM, если не будет достаточно подарка центральных процессоров для использования всего этого. Я не знаю, если это верно, с компьютером, упомянутым здесь, но если это - компьютер уровня рабочей станции, чем это возможно.

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

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

3
ответ дан 12.12.2019, 08:37

Теги

Похожие вопросы