Quelle est la différence entre la gcc/g++ et ce1/cc1plus?

Quand je compile mes projets et vérifier les ressources utilisées par l'exécution de top, la grande CPU/mémoire de porc est parfois appelé g++ et parfois cc1plus. Quelle est la différence entre les deux, et que je devrais l'appeler cc1plus directement?