#milkymist IRC log for Monday, 2011-06-27

kristianpaulwpwrak: (flip flop) some resistors and transitors, and thats it the 1 bit ADC00:54
terpstrait annoys me so much that the lm32 is missing a 'mulhi' instruction to retrieve the high 32-bits of a product.09:26
terpstrai would be able to perform division in software in ~26 cycles then without needing the bloated multicycle divider09:26
lekernelinteresting... can't see how off the top of my head though *g*09:34
lekernelthe multicycle divider isn't bloated, it's just slow09:34
wolfspraullekernel: I did my 'Intel meeting', was quite nice09:38
wolfspraulI demoed Milkymist One and it worked perfectly! camera and all09:39
Fallenougood !09:39
wolfspraulI highly doubt much, if anything, will come out of it, but I do believe I gave them a good show and they enjoyed it.09:39
wolfspraulthey are part of a 80-person strong group whose exact role in the company I still don't understand after asking multiple questions about it and listening to detailed answers09:40
wolfspraulit's something about the unknown future, understanding people, finding new ways of life, etc.09:40
wolfspraulif they ever read this in the public log here, they will laugh. very nice people, definitely.09:40
wolfspraulI got a free lunch out of it, ha09:41
lekernelI should bring them to hackerspaces and squats in Paris... hahaha09:41
wolfspraulyes they go to all those places too09:41
wolfspraulthe group is a sub-group of Intel Labs09:41
wolfspraulI showed them azonenberg's homecmos pictures too09:42
wolfspraulsaid we want to do an Intel 4004 replica, maybe they can find someone to support it09:43
lekernelha, that would be awesome :)09:43
wolfspraulI think it was a good meeting. I enjoyed, I think they did. all fine.09:43
wolfspraulmy expectations into what comes out of it are zero though, except for the free lunch, and knowing that Intel employs good people.09:44
wolfspraulthe camera worked really nice, simple mode09:45
wolfsprauleverything worked09:46
wolfspraulclick through patches09:46
lekernelmine's been continuously running for 4 days now09:48
lekernelno more giant bugs it seems :) nice!09:48
terpstralekernel, the multicycle divier makes my lm32 quite some LUTs bigger09:53
lekernelglancing at the code it should be only some 30-40 LUTs, no?09:53
terpstrai report back with hard #s09:54
terpstrait's not insignificant as that09:54
terpstra1481 ALUTs without divider (arria 2)09:57
terpstra1587 with09:57
terpstra(note that this is with all other options -- hardware watchpoints+breakpoints turned on so the lm32 is already relatively large)09:57
terpstrathe nasty divider also takes 32 cycles to issue which impacts how responsive an interrupt handler can be09:58
Fallenouis division necessary in the interrupt handler ?09:58
terpstrano, but if you in the middle of a division, the CPU must finish it before your interrupt handler can run10:00
terpstraso the existence of a division anywhere in your program reduces the worst-case responsiveness of your controller by 31 cycles10:00
Fallenouoh ok10:02
terpstraso, with debug features disabled, the lm32 is ~1000 LUTs vs 1100, so 10% area needed to get the slow 32-cycle hardware divier10:02
Fallenouis it possible to make the divider pipelined , divided into 2 or 3 pipeline stages, and that the interrupt can occure between those pipeline stages ?10:03
terpstrai doubt adding a 'mulhi' would cost as much since the synthesis software already uses a dedicated multiplier block10:03
Fallenouor maybe the instruction HAS to be completed anyway :/10:03
terpstrathe divider in the lm32 is not pipelined10:03
terpstrait's multi-cycle issue10:03
lekernelcompletely replace division instruction with 'mulhi'?10:03
lekerneland make the compiler use mulhi for division10:03
lekernelif it works as good as you say, it's less area and more speed10:04
terpstrayou would need to add a division algorithm to libgcc.a that uses mulhi, but yes, that's what i would prefer10:04
lekernelscrew libgcc.a, we'll use llvm now :)10:04
terpstrathen your divider could be interrupted as normal code10:05
terpstrayou made an llvm backend?10:05
terpstrait works?10:05
lekernelI didn't, but jpbonn did10:05
terpstrait works? ;)10:05
lekernelin a large part yes10:05
lekernelthere are still some bits missing so we can't compile the complete milkymist software with it, but there are already good results10:06
terpstrai assume the quality of the assembly takes a hit?10:07
terpstrai give it a spin10:08
lekernelhaven't tested yet10:12
lekernelI don't know if llvm-generated code is faster than gcc-generated code, I even have read benchmarks saying the opposite10:13
lekernelI have posted build and test instructions on the ML btw10:14
lekernelterpstra, I still fild it a bit strange that the lm32 divider takes so many LUTs10:50
lekernelit's just a simple restoring divider ...10:51
terpstralekernel, it has to interlock the cpu11:11
terpstra[ 52%] Building Mico32GenRegisterInfo.h.inc...11:22
terpstratblgen: Unknown command line argument '-gen-register-desc-header'.  Try: '../../../bin/tblgen -help'11:22
terpstratblgen: Did you mean '-gen-register-info-header'?11:22
terpstrathe git head of llvm-lm32 doesn't compile cleanly11:22
lekernelah yeah, it's been broken for a few days11:24
terpstrathe fix is to edit lib/Target/X86/CMakeLists.txt11:35
terpstra-tablegen(Mico32GenRegisterInfo.h.inc -gen-register-desc-header)11:38
terpstra-tablegen(Mico32GenRegisterInfo.inc -gen-register-desc)11:38
terpstra+tablegen(Mico32GenRegisterInfo.h.inc -gen-register-info-header)11:38
terpstra+tablegen(Mico32GenRegisterInfo.inc -gen-register-info)11:38
lekernelTarget/X86 ?11:39
terpstrasorry Mico3211:39
terpstrai was comparing against X86 ;)11:39
terpstrahrmph. adding 'mulhi' also adds 10% to the lm32.11:48
GitHub102[llvm-lm32] sbourdeauducq pushed 1 new commit to master: http://bit.ly/lDYe2s11:53
GitHub102[llvm-lm32/master] Mico32: fix tablegen invocation (thanks terpstra) - Sebastien Bourdeauducq11:53
terpstraso no savings in area = why bother11:58
terpstra(except latency i still i guess)11:58
terpstragot the llvm clang going now12:07
terpstrathe assembler is definitely not as nice as gcc's. for example, it doesn't lift constant expressions from a loop.12:07
terpstraand it doesn't combine sequential basic blocks:12:08
terpstrabne      r2, r3, $BB0_212:08
terpstrabi       $BB0_312:08
terpstrawhich is somewhat strange, as these are pretty basic optimizations i'd except llvm to support in the intermediate ssa optimizations12:09
lekernelcould be because of missing bits in the llvm backend? I suggest you ask jpbonn about this...12:16
terpstrai'm reading the llvm clang documentation atm12:17
terpstrai have a feeling it's just missing some optimization passes being toggled on12:17
terpstraaha! the constant lifting thing is indeed an oversight in the mico32 backend12:19
terpstrathe problem is it doesn't lift 32-bit constants out, thinking it can use a 'addi/cmpi/etc' where it is unable since the immediate is not 16-bit12:20
terpstrathe arm&mips backends get it right. copy-paste time. =D12:22
lekernelrun3 m1 pcb's are back. adam should send some pictures soon.12:45
GitHub169[extras-m1] sbourdeauducq pushed 1 new commit to master: http://bit.ly/lF2M8h14:29
GitHub169[extras-m1/master] brochure: update from feedback (Werner, Kristianpaul) - Sebastien Bourdeauducq14:29
wpwraklekernel: much better ! two issues: the formatting of the lower right corner of page 3 is confusing17:42
wpwraklekernel: the line should go to "USB ports" but goes to "Like a computer". i'm not even sure where  "Create effects .." belongs. should this be a subtitle of the screenshot ?17:44
lekernelthis text, the screenshot and the usb port legend should go together...17:44
wpwraklekernel: hmm. they look very disconnected. also, all the other lines to features at the bottom have short descriptions. so one doesn't expect USB to have a long one.17:46
wpwraklekernel: maybe just use "USB ports for mouse and keyboard" and format the text in a single column, under the screenshot ? the text talks about the GUI too, so it would fit.17:46
wpwraklekernel: the second issue is the formatting inside the dashed boxes on page 4. there's no inner padding on the top, left, or right, and the interline spacing is very large. this looks odd.17:48
wpwraklekernel: (not sure if people who haven't struggled with text formatting in their life would recognize this as odd, too. or if they'd find it an interesting new style.)17:49
wpwraklekernel: what also makes the text on page 3 look more disconnected is the wide space between paragraphs. such space also suggests that things are meant to be separate.17:50
lekernelmaybe i'll just remove that space18:01
wpwrakthat may do the trick18:02
lekernelaccepted at http://www.liveperformersmeeting.net/18:39
lekernelnow I have to get a visa for Belarus and learn the Cyrillic alphabet :-P18:39
lekerneljackgassett, speaking about xilinx silicon bugs, this one really sucks too: http://www.xilinx.com/support/answers/39999.htm19:49
lekerneland ofc "To use an 18K block RAM instead, RAMB16BWER must be instantiated".... NO, they could not make their software turn initialized block RAMs into RAMB16MWER's ...19:50
mwallelarsc: is the linux mm framebuffer driver supposed to work?22:37
wpwraklekernel: how would you describe the principal objective of the M1 project in one short sentence ?23:44
wpwraklekernel: (for the characterization of qi-hw projects in my FISL slides)23:44
--- Tue Jun 28 201100:00

Generated by irclog2html.py 2.9.2 by Marius Gedminas - find it at mg.pov.lt!