Smart: an advanced shared-memory simulator-towards a system-level simulation environment