ПЛИС фактически не имеют «ворот» как таковых. Как правило, они имеют справочные таблицы (LUT). LUT обычно реализуются с использованием SRAM. Например, спартанские 3 FPGA используют 16-битные SRAM; то есть четыре адресных входа выдают один выходной сигнал. «Программирование» выполняется путем загрузки SRAM с битовой комбинацией, представляющей таблицу истинности, так что, например, для 2-входного XOR у вас есть адрес 00 = выход 0, адрес 01 = выход 1, адрес 10 = выход 1, адрес 11 = выход 0.
Все это означает, что на самом деле FPGA имеют много, много лишних и ненужных вентилей для выполнения одной и той же логической функции. Если вам нужны ПЛИС для перепрограммирования и быстрого создания прототипов, то это здорово! Фактически, некоторые люди реализуют проект сначала в ПЛИС, отлаживают его, а затем переходят на ASIC, который будет меньше, быстрее и потребляет меньше энергии, и в то же время делает то же самое, что и ПЛИС.
Современные микропроцессоры также конвейерные. Например, в простой программе на ПЛИС очень большой расчет, включающий несколько сложений и, возможно, несколько умножений, и сравнение могут выполняться в одном и том же тактовом цикле. Выполнение всей этой работы за один такт означает, что такт должен быть длинным. В конвейерной реализации (которую можно реализовать в FPGA и часто используемой для достижения временного закрытия), большой расчет разбивается на части, и каждый фрагмент выполняется за один гораздо более короткий тактовый цикл. Все еще требуется примерно столько же времени, чтобы выполнить вычисление, но преимущество состоит в том, что после того, как первый кусок вычислен, и первый частичный элемент данных перемещен ко второму элементу, первый элемент может немедленно начать обработку второго элемента данных. Первый расчет все равно займет много циклов,
Итак, в двух словах, FPGA имеют общую логику, а CPU - специфическую логику. FPGA имеет общую маршрутизацию, в то время как CPU имеет специфическую маршрутизацию. ПЛИС может быть конвейерной, но ЦП определенно конвейерной.