Страница 1 из 1

память с параллельным доступом

Добавлено: Ср фев 13, 2013 14:01:56
thunder87l
Слышал что существуют RAM чипы с возможностью одновременно писать и читать или читать две разные ячейки.
Если существуют двухканальные, можно предположить что где-то есть и 4x. Собственно интересует - где предел этому безобразию и где купить такое чудо. Применение - параллельная обработка массива данных несколькими процессорами.

Re: память с параллельным доступом

Добавлено: Ср фев 13, 2013 14:13:18
petrenko
Да, разумеется, существуют ИМС двухпортового, трёх- и даже много-портового ОЗУ.
Стоят дороже, нежели однопортовое статическое ОЗУ, но если кому деиствительно нужно - покупают.
Насчёт найти - не поленитесь попользовать поисковые машины. Советую АльтаВисту. ( гугль Вам и так насоветуют "стопицот" раз все, кому не лень )
P.S. Только вот что то есть смутные сомнения, что после той "параллельной обработки массива данных несколькими процессорами" результаты могут оказаться зело чудными.

Re: память с параллельным доступом

Добавлено: Ср фев 13, 2013 14:45:57
thunder87l
Насчёт найти - не поленитесь попользовать поисковые машины. Советую АльтаВисту


Да, двухпортовую то я нашёл, и даже четырёхпортовую. Но вопрос то был - что на данный момент в конце линейки и где ЭТО купить?

P.S. Только вот что то есть смутные сомнения, что после той "параллельной обработки массива данных несколькими процессорами" результаты могут оказаться зело чудными.


Понятия не имеете для чего система, но уже имеете смутные сомнения насчёт результатов?

Re: память с параллельным доступом

Добавлено: Чт фев 14, 2013 13:51:20
Alexeyslav
Сомнения оправданы. Несколько процессоров будут иметь доступ в одну и ту же область памяти, один может изменить какие-то результаты который возьмет второй - когда это будет происходить несинхронно могут быть различные ситуации когда один процессор возьмет результат второго до того как он его выложит в память или даже В ПРОЦЕССЕ. Нужна будет синхронизация какая-то, но тогда накой многопортовая память? Ведь куда проще выделить для каждого процессора отдельный участок памяти - страницу например, а для возможности межпроцессорного обмена - иметь возможность предоставлять каждому процессору доступ только к одной или двум страницам памяти, обойдясь при этом обычной однопортовой памятью. Даже в таком случае, можно что-то сделать с многопортовой для ускорения работы - т.е. дать возможность одновременно одному процессору писать в страницу памяти а другому читать из той же страницы.

Re: память с параллельным доступом

Добавлено: Чт фев 14, 2013 18:48:34
Rokl
thunder87l писал(а):Слышал что существуют RAM чипы с возможностью одновременно писать и читать...

Это стандартная процедура DRAM.
ОЗУ обычно работает в режиме ЧТЕНИЕ,ЗАПИСЬ,ХРАНЕНИЕ.
DRAM может ещё работать в режиме ЧТЕНИЕ,МОДИФИКАЦИЯ ЗАПИСИ.
Т.Е. можно одновременно прочитать содержимое ячейки и тутже в цикле чтения, не производя повторной выборки, изменить содержимое ячейки(произвести модификацию записи).

Re: память с параллельным доступом

Добавлено: Чт фев 14, 2013 21:07:47
Alexeyslav
Это касается только одной ячейки, иметь возможность записи по одному адресу а чтение производить по другому ОДНОВРЕМЕННО - это уже совсем другая способность.

Re: память с параллельным доступом

Добавлено: Чт фев 14, 2013 21:16:53
Rokl
Alexeyslav писал(а):Это касается только одной ячейки, иметь возможность записи по одному адресу а чтение производить по другому ОДНОВРЕМЕННО - это уже совсем другая способность.

Только кто выставит другой адрес и КАК???, если адресная шина проца и ОЗУ занята первым адресом????

Re: память с параллельным доступом

Добавлено: Чт фев 14, 2013 21:23:23
Meteor
Не обязательно таскать данные через общую шину, равно как и адрес выставлять.
С процессорами конечно заморочка, а вот в ПЛИС реализовать доступ на чтение и запись можно без проблем

Re: память с параллельным доступом

Добавлено: Чт фев 14, 2013 21:50:38
Rokl
Meteor писал(а):Не обязательно таскать данные через общую шину, равно как и адрес выставлять.
С процессорами конечно заморочка, а вот в ПЛИС реализовать доступ на чтение и запись можно без проблем

И что? проц всеравно занят единомоментно либо одним адресом, либо другим.Просто вы в ПЛИС назначите регистр хранения числа, где оно будет валяться, пока проц занимается другим числом. Другое дело два проца и ПЛИС...

Re: память с параллельным доступом

Добавлено: Чт фев 14, 2013 23:01:07
ibiza11
Просто вы в ПЛИС назначите регистр хранения числа, где оно будет валяться, пока проц занимается другим числом. Другое дело два проца и ПЛИС...

видимо вы с ПЛИС не работали. Что мешает плис работать с памятью в двух потоках с разными адресами без участия процессоров?

Re: память с параллельным доступом

Добавлено: Пт фев 15, 2013 01:26:10
Alexeyslav
Это ведь и называется двухпортовая память. В случае одной памяти доступной двум процессорам для выполнения ОДНОЙ или совмещенных задач больше времени уйдет на синхронизацию чем выиграешь на совместном доступе. Многопортовая память хорошо себя показывает на конвеерах, когда несколько исполнительных блоков могут брать данные одновременно с разных частей памяти.

Re: память с параллельным доступом

Добавлено: Пт фев 15, 2013 07:13:14
Meteor
Rokl писал(а):...Просто вы в ПЛИС назначите регистр хранения числа, где оно будет валяться, пока проц занимается другим числом...

Если использовать ПЛИС в качестве расширителя портов ввода\вывода, то да. Но например у меня в ПЛИС реализована и двухпортовая память (2шт пока) и устройство записи данных (с 2х каналов) и обработка. Для обработки выдергиваются данные из обоих блоков памяти с разными (редко одинаковыми) адресами. И процессора нет ваще! :shock:

Re: память с параллельным доступом

Добавлено: Пт фев 15, 2013 21:36:59
Rokl
Meteor писал(а):... Но например у меня в ПЛИС реализована и двухпортовая память (2шт пока) и устройство записи данных (с 2х каналов) и обработка. Для обработки выдергиваются данные из обоих блоков памяти с разными (редко одинаковыми) адресами. И процессора нет ваще! :shock:

Ключевая фраза - ...данные из обоих блоков памяти. Т.е. вы организовали два независимых банка памяти и их каким то образом используете.
Топикстартер имел ввиду один чип памяти с независимой выборкой по двум разным адресам:
thunder87l писал(а):... Слышал что существуют RAM чипы с возможностью одновременно писать и читать или читать две разные ячейки.

Re: память с параллельным доступом

Добавлено: Пт фев 15, 2013 22:46:54
Meteor
Rokl, поясняю.
Реализовано два одинаковых блока являющихся двухпортовым ОЗУ емкостью 256 Байт. У каждого блока есть шина адреса записи, шина данных для записи, шина адреса чтения и шина данных для чтения. Запись в блоки происходит одновременно. Так же и с чтением. Отличие может быть только в том, что в данный момент запись была по адресам Ni, а чтение по адресам Nk и Nm, где i, k и m могут принимать как разные, так и одинаковые значения.
Микросхемы двухпортовой памяти устроены совершенно так же - 4 шины, из них две адреса и две данных.

Re: память с параллельным доступом

Добавлено: Сб фев 16, 2013 01:24:37
petrenko
"Alexeyslav" верно говорит, что смутные сомнения обоснованы.
Действительно, независимо от сути проекта, возможны разнообразнейшие "спецэффекты" при работе именно с таким ОЗУ.
А если никогда не требуется параллельный совместный доступ нескольких устройств( в т.ч., возможно, нескольких CPU ) в одну область памяти, то и память такого типа применять нет смысла, в таких случаях просто части массива данных копируются в локальные ОЗУ каждого CPU ,а потом уже производится "стыковка" обработанных кусков.
И вообще эти вопросы очень подробно описывались и прорабатывались ещё в период 1977~1989++( судя по годам издания литературы на эту тему )
А тут даже зачем то уже спорить начали, к тому же, прямо скажем, ни о чём. :dont_know:
Для примера ведь можно посмотреть на ИМС двухпортовой памяти типа {155/133/533/555}РП1 ( aka {54/74/54LS/74LS}170 ,пожалуй самого маленького объёма из любых, серийно выпускавшихся... ) ,или на ИМС трёхпортовой памяти типа {155/133/533/555}РП3 ( aka {54/74}172 ) ,чтобы не спорить хотя бы по вопросу определения, что есть такое "двух-, трёх-, или N-портовое ОЗУ. И другие справочники и учебники тоже можно посмотреть.
В нынешнее время, разумеется, выпускаются ИМС гораздо большего объёма, нежели тогда.
И неверно будет утверждать, что поисковые машины ну никак не могут найти, где и какие ИМС продаются и по какой цене.
Как раз продавцов и цены находят в первую очередь. Это вот с "дэйтащиитами" поскуднее будет, но тоже шукают, если не лениться составить правильный поисковый запрос. :roll:

ttlp111.gif
(2 КБ) 981 скачивание

ttlp140.gif
(2.82 КБ) 398 скачиваний

Re: память с параллельным доступом

Добавлено: Пт май 10, 2013 15:25:44
thunder87l
petrenko писал(а):"Alexeyslav" верно говорит, что смутные сомнения обоснованы.
Действительно, независимо от сути проекта, возможны разнообразнейшие "спецэффекты" при работе именно с таким ОЗУ.
А если никогда не требуется параллельный совместный доступ нескольких устройств( в т.ч., возможно, нескольких CPU ) в одну область памяти, то и память такого типа применять нет смысла, в таких случаях просто части массива данных копируются в локальные ОЗУ каждого CPU ,а потом уже производится "стыковка" обработанных кусков.


В общем то я интересовался raytracing'ом. Сама по себе трассировка лучей - штука не сложная, если не лезть во всякие извращения вроде матовых поверхностей и сглаживания. Вполне выполнимо на FPGA. Нет никаких препятствий к тому чтобы выполнять трассировку хоть всех пикселей паралельно, за исключением того, что каждый трассирующий блок должен иметь доступ ко всей сцене целиком. Никаких спецэффектов с моей точки зрения быть не может, потому как 1) в FPGA блоки синхронизированы, 2) трассировщики только читают из памяти. В процессе трассировки объекты из памяти перебираются один за другим - пока не окажется, что луч пересекает объект. Приходят к результату они по идее в разное время, поэтому читать сцену одновременно для всех трассировщиков неэффективно. Два варианта - либо многопортовый чип, либо несколько одинаковых чипов. Мне почему-то кажется, что многопортовый как-то удобнее.

Re: память с параллельным доступом

Добавлено: Пт май 10, 2013 17:00:45
Alexeyslav
Мне кажется, что многопортовость в данном случае даст фору только когда трассировка луча будет выполнятся быстрее чем чтение одного задания из памяти помноженное на количество процессов. При этом на каждый процесс нужен свой порт, экономика в данном случае даст знать что это тупик.

т.е. читаем мы данные из памяти(не важно, сразу все данные или по частям по ходу вычислений - главное тут соотношение времени когда выполняется чтение данных с общей памяти и времени собственно вычисления) обрабатываем у себя и выплевываем результат. Вот когда время потраченное на чтение данных из памяти всеми процессами будет равно времени вычисления одним процессом - это граничное условие при котором еще имеет смысл одновременного чтения данных из общей памяти, иначе если время вычисления будет больше - память будет простаивать и имеет смысл уменьшить количество портов и ввести очередь чтения - все равно память будет иногда простаивать.

Re: память с параллельным доступом

Добавлено: Пт май 10, 2013 23:37:48
thunder87l
Согласен. Я ещё не прикидывал тайминг. Надо бы сперва написать рабочий трассировщик, а потом смотреть размер vs. скорость. Если за один такт FPGA реально просчитать одно пересечение, то скажем 4 ядра трассировщика работающих параллельно таки потребуют одновременного доступа к памяти. Если на вычисления уйдёт 4 такта, то лучше организовать очередь. С другой стороны 4 такта - это либо сбросить количество пикселей, либо глубину трассировки. Но это уже лирика. В любом случае - ответ я получил, спасибо :)