Доступ к памяти в многоядерных процессорах против нескольких процессоров
У меня вопрос,
Возможно ли многопроцессорному компьютеру доступ к данным из ОЗУ (система с одним ОЗУ) Например, если машина имеет 2 процессора p1, p2, которые выполняются параллельно, возможно ли, что они имеют доступ к одному и тому же оперативной памяти для чтения и записи (запись ofcos находится не в одном месте)
Я понимаю, что в многоядерных машинах это будет невозможно, поскольку шина данных используется совместно.
1 ответ
Пока ОЗУ сопоставлено со всеми ядрами или процессорами (например, в многопоточном приложении), к ней можно обращаться с любого ядра или процессора.
Нет разницы, если вы обсуждаете однопроцессорный / одноядерный, однопроцессорный / многоядерный, многопроцессорный /(каждый с) одноядерный или многопроцессорный / многоядерный. Поскольку у них нет собственной системной оперативной памяти - ОЗУ в кэш-памяти не является системной ОЗУ - единственная доступная ОЗУ для всех из них - системная ОЗУ.
Единственное различие между многопроцессорным / одноядерным (как в более старых системах) и однопроцессорным / многоядерным (современные системы) заключается в том, что первый должен координировать доступ к ОЗУ с помощью внеполосной логики, тогда как для последнего вся координация происходит на микросхемы, а иногда даже встроенные, что, конечно, приводит к гораздо более быстрому и более эффективному электронному доступу к ОЗУ.
В случае многопроцессорных / многоядерных решений AMD каждый процессор владеет частью оперативной памяти системы. Сами процессоры связаны с каналами высокоскоростной передачи данных (HyperTransport), чтобы облегчить доступ к ОЗУ, не принадлежащему процессору, осуществляющему доступ к нему.
В любом случае программист должен решить, как процессоры / ядра получают доступ к ОЗУ. Конечно, они могут читать и / или писать в одном месте, если этого хочет программист.