5 ms·
> I don't think many or any of the Phoronix benchmarks are based on a pipeline with indirect branches at their core. I think a bunch are. e.g. for instance FFM
by jcelerier 8y ago
> I don't think many or any of the Phoronix benchmarks are based on a pipeline with indirect branches at their core.
I think a bunch are. e.g. for instance FFMPEG / libavfilter which is basically a node graph set up at runtime. Don't know for cinebench since it's closed source, but Blender present in the benchmarks is also based around a nodal rendering architecture. Stuff like PHP / CGI also heavily depend on function pointers for their behaviours - PHP with its plugin architecture, and CGI where all web requests go through FPs : https://github.com/php/php-src/blob/master/main/fastcgi.c#L880 https://github.com/php/php-src/blob/master/main/fastcgi.c#L8....
- BeeOnRope 8y agoRight, I think I understand what you are saying about "pipelined" implementations. Sure, I can believe that at a high level there are some indirect branches to implement some kind of processing pipeline: but you'd have thousands or millions of instructions doing the heavy lifting for each chunk of data that passes though the pipeline, for every branch that you need to take to get to the next stage. So I still doubt that that indirect branches are "dense" in those benchmarks: it just doesn't make sense since the core work they are doing are highly tuned encode/decode/whatever kernels, even if there is a control layer over top of that using indirect branches.