[fpc-devel] Blackfin support

Hans-Peter Diettrich DrDiettrich1 at aol.com
Tue Jul 13 16:45:40 CEST 2010


Florian Klaempfl schrieb:

> Memory throughput is a bottleneck, I/O not really. So multithreading has
> a real advantage on NUMA systems and systems where different cores have
> dedicated caches. One or two years ago, I did some experiments with
> asynchronous assembler calls and it already improved significantly
> compilation times on platforms using an external assembler.

Good to know :-)

> The problem
> is that the whole compiler is not designed to do so. This could be
> solved by an approach we want to implement for years: split the
> compilation process into tasks (like parse unit X, load unit Y, code gen
> unit X) with dependencies. This should also solve the fundamental
> problems with unit loading/compilation causing sometimes internal
> errors. The first step would be to do this without multithreading, later
> it could be tried to execute several tasks in parallel.

I should know more about available threading features (blocking, 
synchronization...). IMO compilation should be done in two steps, with 
the first step providing the interface for used units, from a .ppu file 
or by a new parse. Once this information is available, the using units 
(threads) can resume their work. The final code generation can occur in 
further threads.

At least I know now what to look for, in my parser redesign. It seems to 
be a good idea to reduce the number of global links, so that in a 
following compiler redesign multiple threads can do their work 
independently.

DoDi




More information about the fpc-devel mailing list