A data cache for Prolog architectures