bcache is specifically for using an SSD to cache something with much higher latency, usually a hard drive (or RAID array), but possibly also a network block device. Because of that, bcache is tuned to take advantage of the strengths of current SSDs, and to avoid write patterns that lead to excessive wear of the SSD, and to distinguish between random accesses (where SSDs excel) and sequential (where a RAID5 might be faster). This makes bcache better than the more generic dm-cache for the right workload, but it also means bcache is more complex - at best, it is months away from making it in to the staging area.