Dave has already mentioned the differences between Harvard and von Neumann architectures.
An example of a von Neumann architecture, where there is just one address space for RAM, Flash, I/O and EEPROM, is the HCS08 family from Freescale. Here is the memory map of one of its microcontrollers that has 128K of Flash and 4K of RAM:
Note in this figure, memory address 0 is at the top. It is also not to scale; the address 0x8000 (32K boundary) should be exactly in the middle.
This microcontroller has a direct page (sometimes called page 0), i.e. 256 addresses which can be accessed with just an 8-bit address (which reduces the size of the instruction by a byte). The first 128 locations, 0x0000 to 0x007F are used to map I/O registers. This is followed by the 5K of RAM, from address 0x0080 to 0x17FF. By doing this, the first 128 bytes of RAM are also located in page 0. This is followed 256 additional addressed reserved for additional I/O registers at 0x1800 to 0x18FF, then more RAM, then the first segment of Flash, then 2K of EEPROM.
Then additional pages of Flash. Note they have page numbers too (PPAGE). Remember I said this microcontroller has 128K of Flash? How do you fit that into 64K of address space? By using paged addressing. There is a "paging window" at 0x8000 to 0xBFFF (16K) where one of eight 16K pages of Flash (128K total) can be mapped. Which one is controlled by a paging register. When the compiler is generating jumps or subroutine calls, it knows to update the paging register as needed.
Some of the pages can also be addressed directly (PPAGES 0, 1, and 3) without using the paging register. This is needed for things like interrupt handlers, which may occur at any time. Common subroutines, like the C library, are also good candidates for these pages.
Not shown are the reset and interrupt vectors, which start and the top of memory (0xFFFF) and go down.
Pure Harvard architecture machines have much simpler schemes, there is one address space for Flash starting at 0x0000, another for RAM starting also at 0x0000 and still another for I/O ports starting at 0x0000 (sometimes RAM and I/O are put together in the same space, known as memory-mapped I/O). If I/O ports are used, they acre accessed via special instructions such as IN and OUT.
Because they are separate spaces, they can have different widths. The PIC16 microcontroller from Microchip for example, has a 14-bit instruction width and 8 bit RAM and I/O busses.
What's the advantage of each? Well with a Harvard architecture, you can have 64K of program space, 64K of RAM space, and 64K of I/O space, all using 16-bit addresses. So it's good for 8 and 16-bit microcontrollers. Because the program is in Flash, it can't be modified.
With von Neumann architectures, you can run programs out of either Flash (or ROM) and RAM. This is how PC's work: when they first start up, they boot up using a BIOS (Basic Input/Output System) ROM, which reads the OS off of a hard drive and loads it into RAM. From then on, programs execute out of RAM.
There are also "modified Harvard architecture" processors, which allow part of the instruction space to be viewed as if it were "read-only" RAM. This is usually done using a paging window similar to the one in the HCS08 diagram earlier. In the PIC24, this feature is called Program Space Visibility (PSV).