C3 Memory system

C3 has been equipped with different kind of memory for any evenience.

FLASH memory, EEPROM memory, SRAM memory and of course there is the Propeller internal main memory.

I won't go too deep in this but, as you can imagine the choice is evident... Since the Z80 CPU is clocked at 3,54 or 3,58 Mhz, we need a fast memory access.
In fact a typical memory access in Z80 assembly is: 
LD HL, 0xXXXX ( 16bit address )
LD (register), HL
 
 And it takes 16 cycles for the first instructions to load the address to read from, and the second one loads the location just stored into a 8bit register, taking extra 13 cycles. With a total of 29 cycles I can: setup the address and load the byte contained in it.

Let's make an example:
with a NTSC Sega SC-3000  we have the z80 clocked at 3,579,545 Hz, we will have the access to a byte in memory in (1/3,579,545 ) * 29 = 5,8 us
 
This means that I need to achieve this access time to have a good emulation.

The optimal idea would be to use the cog memory which is the fastest, but unfortunately is very limited ( 512 longs = 2048 Kbytes ), and is shared  with the program that is running on it.  

We could use the Propeller shared memory of 32k, but we must keep in mind that all variables, arrays and buffer used by the emulator will be placed there, so the amount can be reduced drastically.

The only choice is SRAM located on the SPI/I2C bus, using if needed a cache on shared memory.