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 linux.conf.au 2007 would be held in Sydney. This was followed up by a dinner meeting between the LA and linux.conf.au 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.