Some context:
Fiber is a datastructure where the execution context is saved. Eg. registers (including instruction pointer) and stack etc. That is a fiber: data.
You normally use a threadpool, core pinned, to execute these fibers.
Since you jump in userspace, you more or less only have to pay for cache misses.
There are many upsides of designing a program using fibers. The major downside i see is that you can not blindly trust mutex and semaphores any longer - since the fiber can change execution thread while yielding/waiting for condition.