I have two leftover 2GB RAM modules that I removed from my MacBook Pro when doing an upgrade. I was just wondering if these were usable with, for example, an Arduino. I'd be too much of a beginner to actually try to do this now anyway, but I'm curious if it is at all possible, or if that's just way too much memory for a microcontroller to address.
I'm going to say no: the most basic incompatibility is that there's way too many pins on those modules even be able to interface it physically to an Arduino. Ditto for similar small microcontrollers. An ARM Cortex M3 is getting closer, but few of those actually have the external bus necessary to interface RAM in such a fashion (I think).
But I'll play along an go further. Assuming you could interface the chip to the Arduino somehow another basic electrical compatibility problem is the voltages required. I think these RAM modules use something odd like 2.2V - not present on a vanilla Arduino board or really, any other basic hobbyist microcontroller.
Assuming that was taken care of then the chip would pretty much work like any other external memory to the Arduino. This is really done all the time - people add external EEPROM to store important constants or SD/MMC cards for storage of webserver logs and such. Of course, within this context the RAM modules presents no real benefit to the Arduino. Its main feature is speed and the Arduino (and yes, other hobbyist microcontrolers) typically don't break 25MHz in clock speed. They're too slow to care about speed. And storage size isn't a big issue since interfacing to an SD/MMC card is distinctly easier and provides as much space to play with.
So even if it were possible it wouldn't really be advisable.
You could conceivably use a system of latches to allow something like an arduino to generate 32 bits of address, and you could probably devise some scheme to generate the refresh cycles, but there'd be almost no point in doing so, except as a technical exercise.
The interface circuitry would probably be the most complex part of the resulting system, and there'd be little practical value in the result; the arduino would not be able to execute code out of the RAM, the storage would be volatile, and would probably consume more power than the arduino as well. If you want to store data, an SPI EEPROM is probably a much better solution.
You'd need a low voltage driver (SSTL), and some way to control about 100 channels (each differential, so about 200 pins. Think BGA.)
Most DRAM has to be refreshed at at least 1kHz and probably more to have a low bit error rate. This will then form a major background task and use up most of the prcoessing power of the Arduino, if it's even possible to refresh memory at such a rate.
What you can look at though is with some microcontrollers, e.g. PIC24F/H/dsPIC33F, they support a parallel master bus interface, which allows some types of parallel SRAM to be accessed. There's even support with C, as this external memory can be mapped onto several in code variables and even blocks which combine both internal and external memories. The external memory requires you to write some PMB code. You'd only be able to address up to about 1 MB with this though.
No, not without a paging interface of some kind between the memory and the MCU. Some of the AVR MCUs do in fact have a built-in external-memory interface - Atmega2560, for example (see section 8 of the ATmega640/1280/1281/2560/2561 data sheet). But the address space is measured in Kilobytes, not Gigabytes.