Which architecture do modern computers use?
Modern general-purpose high-performance processors use separate instruction and data caches, and so could be classified as modified Harvard even though they use a unified address space. (Some microcontrollers—usually to provide extra memory or protection without a memory protection unit—use a Harvard architecture in which data and code use separate address spaces.)

x86 might be considered a little more nearly "pure" von Neumann than some other ISAs in that self-modified code is guaranteed to be handled properly if a jump is used. Many other ISAs require an instruction synchronization instruction and may require explicit invalidation of any modified memory from the instruction cache (i.e., the instruction cache is not necessarily coherent).

Cross-modified code is somewhat more complex; even x86 requires a synchronizing instruction.