?

Log in

No account? Create an account
Does MIPSfpga support multicore? If you don't need cache-coherence, yes - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Does MIPSfpga support multicore? If you don't need cache-coherence, yes [Dec. 2nd, 2015|11:50 pm]
Yuri Panchul
Начальство из Великобритании высказалось в духе, что я, как американец, мог бы побольше уделять внимание англоязычному форуму по MIPSfpga, а не троллировать бедных украинцев вопросами, считает ли украинское правительство преступлением подрыв собственных линий электропередач и собирается ли оно соответствующим образом наказать преступников, если считает. Итого, написал англоязычнй постик. Сейчас прибежит гуманитарий prakapovich и поправит мой английский как он выражается "советского инженера":

http://community.imgtec.com/forums/topic/does-mipsfpga-support-multicore-if-you-dont-need-cache-coherence-yes/

Several professors asked me whether MIPSfpga support building multi-core systems.

The answer depends on whether you talking about multi-core systems with cache coherence or without cache coherence.

If “with cache coherence”:

MIPSfpga is not suitable for cache coherence protocols (MESI and similar). Some very advanced students or researchers can implement MESI protocol in MIPSfpga by replacing MIPSfpga modules for caches and writing their own coherence manager block. However the resulting implementation is not likely to be practical in terms of performance improvement. Multi-core with cache coherence becomes practical only for MIPS mid-range (MIPS interAptiv, MIPS I6400) or high-end (MIPS P5600, MIPS P6600) cores which are available only for commercial licensing.

If “without cache coherence”:

MIPSfpga can be used for specialized multicore systems where each core has its own mostly separate memory space and the cores exchange information with each other infrequently, via logic connected to memory-mapped registers in uncached address space. This is an important area for academic creativity. However keep in mind that such way of using MIPSfpga is practical only for _some_ applications like parallel internet packet processing, but is not practical for general-purpose computing.

Same thing is applicable to MIPSfpga commercial relatives – MIPS microAptiv UP and MIPS M5150.

If you don’t know the meaning of “cache coherence” and “MESI”, you can start from Wikipedia:

http://en.wikipedia.org/wiki/Cache_coherence
http://en.wikipedia.org/wiki/MESI_protocol

Are you interested in multi-core systems?

Yes, including MIPSfpga-based systems with cache-coherence
3(14.3%)
Yes, including MIPSfpga-based systems without cache-coherence
2(9.5%)
Yes, in high-end multi-cores with snooping-based cache-coherence
0(0.0%)
Yes, in high-end multi-cores with directory-based cache-coherence
0(0.0%)
I am also interested in hardware-supported multithreading
1(4.8%)
I am also interested in heterogeneous multi-core systems
2(9.5%)
Меня также заинтересовал вопрос про подрыв линии электропередач
4(19.0%)
Я хочу продолжение романа про Радулову
7(33.3%)
Из-за бугра плюете?
2(9.5%)
LinkReply

Comments:
[User Picture]From: techwork
2015-12-01 09:59 pm (UTC)
А что гранта Эрефия не даст ? вот печалька ...
(Reply) (Thread)
[User Picture]From: panchul
2015-12-01 10:02 pm (UTC)
Ставить меня и слово "грант" в одно предложение - это какая-то дикая, безумная фантазия. Я никогда в своей жизни не охотился на гранты. Только на инвестиции, зарплаты, бонусы, гонорары, но не на гранты. Этим занимаются совсем другие люди.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: yigal_c
2015-12-01 10:03 pm (UTC)
* where each core has its own separate memory space

а каким образом в таком случае предполагается осуществлять связь между корами?
(Reply) (Thread)
[User Picture]From: panchul
2015-12-01 10:09 pm (UTC)
Да, надо поправить вместо separate типа mostly separate или написать "... and the cores exchange information with each other infrequently via logic connected to memory-mapped registers in uncached address space".
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: new_mikha
2015-12-01 10:14 pm (UTC)
Интересно... Как я понимаю, возможность сделать Flush присутствует. Тогда непонятно, чем эти отличается от других процессоров? Собственно, аналогичные проблемы есть при программировании на языках высокого уровня, в т.ч. в дот-нете (вроде бы и в джаве). При условии механизмов для acquire-release операций, или memory barriers (что с помощью flush можно сделать) - проблемы решаются.

Edited at 2015-12-01 10:15 pm (UTC)
(Reply) (Thread)
[User Picture]From: panchul
2015-12-01 10:30 pm (UTC)
Да, но делать постоянно flush - это замедлить выполнение программ на два порядка. Также см. ветку выше про некэшируемую память.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: abelits
2015-12-01 10:17 pm (UTC)
At some point I ended up implementing a heterogeneous multi-core system with FIFOs passing data between otherwise completely isolated cores. Then the goal was to combine a non-real-time full-featured Linux system with a relatively simple real-time device control while keeping latency between two to the minimum. Cores talked a lot to each other, implementing a packet-based protocol, and FIFOs kept things running efficiently enough.

I believe, similar solutions may be useful for more purposes than one I had (real-time networking and clock synchronization), and it's an interesting thing for students to see as an example, considering that on the Linux side you end up with a traditional interrupt-driven device driver for a character or possibly even network device, and on the other side it may be something completely different, with different expectation for timing and processing model.

Edited at 2015-12-01 10:19 pm (UTC)
(Reply) (Thread)
[User Picture]From: panchul
2015-12-01 10:45 pm (UTC)
*** a heterogeneous multi-core system with FIFOs passing data between otherwise completely isolated cores ***

Во-во, ты бы зарегистрировался на MIPS Insider и запузырил бы там такую тему. Сначала на английском, а потом на русском - нужно захватить англоязычный мир русским языком, как это делают ммм некоторые жж-юзеры в художественной литературе.

Edited at 2015-12-01 10:46 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: oppad1
2015-12-01 10:34 pm (UTC)
кэш то там виртуальные адреса кэширует поди?
для когерентности добавляют в таг еще и реальный адрес или более элегантное решение?

(Reply) (Thread)
[User Picture]From: panchul
2015-12-01 10:41 pm (UTC)
Virtually indexed physically tagged

В таге реальный адрес

Все адреса между L1 и внешним по отношению к ядру миром - физические/реальные, как в транзакциях к памяти или L2, так и в интервенциях.
(Reply) (Parent) (Thread) (Expand)
From: rubir_ru
2015-12-01 11:16 pm (UTC)
начальство в тренде. Осторожней, Юрий, а то уволят за рассейскую пропаганду в ущерб британской :)
(Reply) (Thread)
[User Picture]From: abelits
2015-12-02 12:14 am (UTC)
У меня создалось впечатление, что будучи недостаточно просвещёнными европейцами, в которых потухла страсть к несению бремени белого человека, начальство Панчула в области пропаганды ставит ему задачи исключительно относящиеся к архитектуре MIPS, к которой он имеет прямое отношение.

Пламенные носители света цивилизации и развитой европейской мысли, выросшие под гнётом клятых москалей и кровавой гэбни, знают, что всякая деятельность должна в первую очередь быть непосредственно направлена на распространение идеологии великого государства, в котором находится работодатель, и только после этого помогать непосредственно работодателю с его какими-то планами по завоеванию умов и сердец архитектурами процессоров и учебными материалами, распространению лицензий и организации сотрудничества. Ибо не может компания добиться успеха, если её продукция будет применяться вне контекста великой европейской цивилизации, и никакая работа не имеет смысла, пока самая важная цель, беспрекословное принятие идей свободы всем населением Земли, не достигнута в полном её объёме.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: craftwr
2015-12-02 06:10 am (UTC)
Очередной план по завоеванию мира еще не предлагали?
(Reply) (Thread)
(Deleted comment)
[User Picture]From: panchul
2015-12-02 06:35 am (UTC)
Э-э-э, нет, они хотят чтобы было несколько коров на одном FPGA.

Даже если делать на несколько FPGA - проблема когерентности кэшей первого уровня все равно остается. Особенно если такая система используется для прототипирования ASIC-а.

Замечу, что если строится система перманентно предназначенная именно для FPGA (не прототип ASIC-а) и используется именно RS-232 то он будет настолько узким бутылочным горлышком, что о когерентности L1 кэшей можно забыть сразу.


Edited at 2015-12-02 06:42 am (UTC)
(Reply) (Parent) (Thread)
(Deleted comment)
(Deleted comment)
(Deleted comment)
[User Picture]From: prof_killjoy
2015-12-02 07:23 pm (UTC)
Есть идея куда получше. Вместо того, чтобы пихать два огромных и тормознутых ядра mipsfpga, можно просто сделать одно реально хорошее, например вдвое меньше и вдвое быстрее, как это и делается профессионалами в отрасли. А так получается ситуация, если клуб не может подготовить одного хорошего велосипедиста, то зачем-то решает выпустить тандем из двух хромых. Мне вот каждый раз кажется, что в этой «революции» MIPS уже достиг своей «вершины», но нет, раз за разом накатывает новая волна креатива.

Помнится, я как-то в качестве примера упоминал одно fpga-ядро, где мне приходилось быть консультантом по суперскалярности. Там вот как раз < 10000 LE Cyclone (точную цифру господа держат пока в секрете даже от меня) и 6 Coremark/mhz (> 100 MHz на Cyclone III). Но — не MIPS, что впрочем ничего не меняет. Ну и вообще таких ужасных параметров, как в mipsfpga, еще поискать в отрасли надо.

Edited at 2015-12-02 07:26 pm (UTC)
(Reply) (Thread)
[User Picture]From: panchul
2015-12-02 07:41 pm (UTC)
*** можно просто сделать одно реально хорошее, например вдвое меньше и вдвое быстрее, как это и делается профессионалами в отрасли ***



*** Ну и вообще таких ужасных параметров, как в mipsfpga, еще поискать в отрасли надо. ***

MIPSfpga = microAptiv = M14K > Cortex M3:


(Reply) (Parent) (Thread) (Expand)