[FFmpeg-user] CPU and GPU

Mark Filipak markfilipak.windows+ffmpeg at gmail.com
Tue Mar 3 09:47:34 EET 2020

I hope what the analogies below will help folks better understand the 
technology we use.

Transistors are to logic gates as quarks are to electrons, protons, and 
neutrons. Logic gates come in 2 flavors: AND and OR, and it's from them 
alone that all other digital elements are made.

Logic gates are to FSMs (finite state machines) as electrons, protons, 
and neutrons are to atoms.

FSMs are to CPU units (code crackers, execution units, cache 
controllers) as atoms are to molecules. Microcode is relatively simple 
sequences that operate on CPU units in the way that RNA sequences 
operate on ribosomes.

CPU units are to CPU cores as ribosomes are to cells.

CPU cores are to main boards as cells are to organs. Machine code 
coordinates the operations of CPU cores in the way that hormones 
coordinate the operations of organs.

Main boards are to computers as organs are to organisms. Programs 
determine computer behavior in the way that instincts (and sometimes, 
thoughts) determine the behaviors of organisms.

So, you see, programs are layers removed from machine code and machine 
code is layers removed from microcode. Microcode requires no execution 
environment. Machine code requires a CPU environment. Programs require a 
computer environment.

FPGAs are collections of configurable logic gates that can be configured 
to make anything that can be made with logic gates, including any type 
of processor or sequencer in addition to static logic.
Since they are configurable, much capacity is lost to connections not 
made, for example, to redundant input/output transistors not utilized, 
to routing channels only partly used, etc.
However, in addition to a sea of uncommitted gates, some FPGAs contain 
hand crafted (compact), commonly needed peripherals (e.g., SPI, HDMI) 
and even cores (e.g., ARM).
SoS (software-on-silicon) licensors such as NGCodec are companies that 
have developed the particular configurations (i.e., circuitry) to make 
an FPGA (such as are made by Xilinx, which purchased NGCodec), that are 
particular to a specific task such as processing video streams or 
network protocols.
So. you see, thinking about the logic gates in FPGAs and what can be 
built with them is like thinking about electrons, protons, and neutrons 
and what can be built with them.

More information about the ffmpeg-user mailing list