3 ms·
Intel has shared ports across scalar and SIMD for a long time (only recently they've split them apart). I don't know whether they share silicon though, quite li
by dzaima 2y ago
Intel has shared ports across scalar and SIMD for a long time (only recently they've split them apart). I don't know whether they share silicon though, quite likely that they don't.
The complexity of using parts of vector ALUs might not be worth the saved silicon (even for something as expensive as float division, which has both SIMD and scalar versions (both operate in the same register file, just differing in the number of elements processed), both Intel and AMD have the same throughput for the scalar version and 128-bit SIMD version[0]).
It additionally allows separating bypass networks, e.g. the output of a SIMD add will never be directly used as a memory address (or, in the case of a gather, an extra cycle or two of latency is acceptable considering the amount of loads that will follow and in general the throughput-centric nature of SIMD), whereas for a scalar op that's an extremely important path. Or, in general, it allows making different tradeoffs between scalar & SIMD.
[0]: https://uops.info/table.html?search=div%20xmm)&cb_lat=on&cb_tp=on&cb_HSW=on&cb_SKL=on&cb_ADLP=on&cb_ZEN2=on&cb_ZEN4=on&cb_measurements=on&cb_sse=on https://uops.info/table.html?search=div%20xmm)&cb_lat=on&cb_...