The advent of multi-core processors, particularly with projections that numbersof cores will continue to increase, has focused attention on parallelprogramming. It is widely recognized that current programming techniques,including those that are used for scientific parallel programming, will notallow the easy formulation of general purpose applications. An area which isreceiving interest is the use of programming styles which do not haveside-effects. Previous work on parallel functional programming demonstrated thepotential of this to permit the easy exploitation of parallelism. This thesis investigates a dynamic load balancing system for shared memory ChipMultiprocessors. This system is based on a parallel computing model called SLAM(Spreading Load with Active Messages), which makes use of functionallanguage evaluation techniques. A novel hardware/software mechanism forexploiting fine grain parallelism is presented. This mechanism comprises aruntime system which performs dynamic scheduling and synchronizationautomatically when executing parallel applications. Additionally the interfacefor using this mechanism is provided in the form of an API. The proposed systemis evaluated using cycle-level models and multithreaded applications runningin a full system simulation environment.