Mappers and reducers can be run on different threads and thus on different cores. Hadoop supports multiple processes on one machine. The speedup is easier to see for large jobs. m1.large for example runs twice as many mappers and reducers on the same number of instances as m1.small.
However, there is typically not a way to have a single mapper or single reducer run on more than one core/thread. Not sure what Hadoop 0.21 supports on this kind of multi-threading, will try to find out more.
The number of mappers and reducers used by m1.large and m1.small per instance is in the emr documentation. Amazon has based this number on the number of cores each instance type supports.