2006 Wednesday

Thu, 26 Jan 2006 09:56:09 +0000
tech lca

In the morning I attended the writing a gcc front-end tutorial. This was really interesting to find out about the internals of GCC, and also got into some of the new features gcc will have in the future. While being intersting, I think if I was writing a new language right now, I would still do the classic approach of outputing C (or maybe C++) and then passing that to the normal compiler.

Jimi Xenidis gave a cool talk about the new Cell processor and (failed) attempts to optimise the zeroing of pages. The basic idea of this work is to zero out pages in the background and keeping a set of zeroed pages ready, rather than zeroing on demand.

Unfortunately, it is really quick to zero a page, because of the dcbz instruction, which invalidates cache-lines without having to touch memory. This instruction has a 1 cycle latency so for 4kb pages, they can be zeroed in 32 cycles. Unfortunately the instructions to get the DMA engine to zero pages is almost 400 cycles. It was actually pretty encouraging that the overhead was only around 1%, which is really just in the noise.

The really interesting thing would be if they used bigger pages. For example, if you were using 4MB pages, instead of 4kb pages the dcbz aprroach would be slower, and would actually suck more because it would probably require writeback. Hopefully once the Gelato guys will get their super page stuff into the kernel soon.

The afternoon had the excitement of the Linux australia AGM, where it was announced that 2007 would be held in Sydney. This was followed up by a dinner meeting between the LA and committees at Table 7.

Dinner drinks were hosted by the Google hiring squad, who basically put a big tab on a bar in the city for us, which basically meant free beer for the whole conference.

blog comments powered by Disqus