Что делает процессор общего назначения - он по шагам (грубо говоря 1 такт = 1 шаг, хотя современные процессоры обладают кучей довесков, позволяющих 'забегать вперед', делать несколько шагов за такт и т.п.) выполняет программу, в случае с sha256 это тысячи шагов, каждый задействует тысячи и тысячи полупроводников, на каждом некоторое количество данных складывается/сдвигаются биты/сравниваются и копируются. Современные процессоры содержат несколько ядер (4, 6, 12...) работающих абсолютно независимо (за исключением доступа к памяти, но это отдельный разговор с отсылкой к scrypt)
Что делает GPU - да уже почти то же самое, сейчас шейдерные процессоры на столько круты, что почти приблизились по универсальности к CPU, только в видеокарте их тысячи, одна беда - код они выполняют одномоментно один и тот же (почти...), и еще больше условностей по доступу к оперативной памяти.
Что делает чип ASIC - за один такт сотни и тысячи ядер сразу же решают необходимую задачу, каждое ядро очень маленькое и примитивное, всего тысячи полупроводников (возможно кто и сделал циклы, пробегающие несколько раз за один такт, это возможно но не реально сложно).
Но, если я не ошибаюсь, любая программа - это последовательность инструкций. Если одна инструкция не зависит от другой, то их можно выполнять параллельно, на нескольких ядрах одновременно. Получается, что алгоритм sha256 нельзя эффективно "распараллелить" на нескольких ядрах? А GPU - это вообще не совсем понятно. Ведь GPU может выполнять только отдельные мини-программки - шейдеры: вершинные, пиксельные и геометрические шейдеры. Они зашиты в видеоадаптер. Получается, что некоторые шейдеры хорошо "подходят" для вычисления sha256-функции.