Types in prolog could be added as system predicates, and I think some extensions do this. I know there was a version called Turbo Prolog that generated compiled code. So, Prolog can be compiled or not, it is just that interpreting is far easier to do.
There's a de-facto standard bytecode and virtual machine design for byte-compiled Prolog, known as the Warren Abstract Machine. There are links concerning it and derived designs here: http://news.ycombinator.com/item?id=1649138