Earlier ARM® cores (e.g ARM7™, ARM9™) supported two instruction sets. This code could be compiled in either 32-bit ARM code or 16-bit Thumb® code. The ARM instruction set was used for maximum performance while Thumb provided better code density.
ARM Cortex® devices use a new instruction set called Thumb-2. Most Thumb-2 instructions are 16-bit, but six of them are 32-bit. This mix of 16 and 32-bit instructions improves code density while maintaining performance.