6

I've looked everywhere and I still can't figure it out. I know of two associations you can make with streams:

  • Wrappers for backing data stores meant as an abstraction layer between consumers and suppliers
  • Data becoming available with time, not all at once

SIMD stands for Single Instruction, Multiple Data; in the literature the instructions are often said to come from a stream of instructions. This corresponds to the second association.

I don't exactly understand why the Streaming in Streaming SIMD Extensions (or in Streaming Multiprocessor either), however. The instructions are coming from a stream, but can they come from anywhere else? Do we or could we have just SIMD extensions or just multiprocessors?

Tl;dr: can CPU instructions be non-streaming, i.e. not come from a stream?

David Cian
  • 541
  • 1
  • 6
  • 16

1 Answers1

10

SSE was introduced as an instruction set to improve performance in multimedia applications. The aim for the instruction set was to quickly stream in some data (some bit of a DVD to decode for example), process it quickly (using SIMD), and then stream the result to an output (e.g. the graphics ram). (Almost) All SSE instructions have a variant that allows it to read 16bytes from memory. The instruction set also contains instructions to control the CPU cache and HW prefetcher. It's pretty much just a marketing term.

robthebloke
  • 9,331
  • 9
  • 12
  • 6
    The cache-bypassing NT store instruction (`movntps`) in SSE1 is actually called `_mm_stream_ps()` in intrinsics. But I think that name follows from "Streaming SIMD Extensions", moreso than the other way around. 100% agreed on saying it's just marketing and not very meaningful or helpful in understanding what SSE is. – Peter Cordes Nov 04 '19 at 23:18