Да, да, и «да, в некотором смысле»
В системе с распределенной памятью разные модули ЦП имеют свои собственные системы памяти. Доступ из другого процессора, скорее всего, будет медленнее или с более ограниченной моделью когерентности, если это вообще возможно. Это будет более типично для мультипроцессора с передачей сообщений.
Использование нескольких потоков для параллельного программирования - это скорее программная парадигма, чем аппаратная проблема, но вы правы, использование термина thread по существу указывает, что используется одна общая память, и это может или может не включать фактические несколько процессоров. Он может даже не включать несколько потоков ядра, и в этом случае потоки не будут выполняться параллельно.
Мне не совсем понятно значение последнего вопроса. Конечно, под «распределенной памятью» или «общей памятью» подразумевается «распределенная по процессорам» и «общая для процессоров», поэтому я полагаю, что термины применимы только к многопроцессорным или потенциально многопроцессорным системам. Если мы говорим о нескольких процессах в программном смысле, я думаю, что это в значительной степени требование для систем с распределенной памятью и, по сути, требование (они могут быть , называемые потоками) для системы с общей памятью.
Я должен добавить, что когерентные системы с распределенной памятью, но с кешем существуют, и представляют собой тип многопроцессорной конструкции с общей памятью, который называется NUMA. Несколько лет назад эти машины были безумной окраской параллельных вычислений, но теперь процессоры Intel Core i7 вывели NUMA в массовое русло.