Scalar, Vector, Superscalar

  • 용어정리를 해보자.
    • Scalar 는 한번에 하나의 data 에 대해, 하나의 Instruction 을 실행하는 것이다 (Single instruction, single data).
    • Vector 는 한번에 여러 data 에 대해, 하나의 instruction 을 실행하는 것이다 (Single instruction, multiple data)
    • Superscalar 는 말 그대로 scalar 가 여러개 있는 것이다. 즉, 한번에 여러 data 에 대해 여러 instruction 을 실행하는 것 (Multiple instruction, multiple data).

Superscalar Processor, ILP

  • Superscalar Processor 는 이런 superscalar processing 를 지원하는 processor 로, 한번에 여러 instruction 에 대해 IF 및 ID 를 수행한다.
    • 즉, 여러 instruction 이 issue 된다.
    • 몇개의 instruction 을 issue 할 수 있는지를 Issue-width 라고 부르고,
    • Issue-width 만큼의 Issue slot 이 있고 Fetcher (IF) 와 Decoder (ID) unit 이 있다.
  • 이런 superscalar processor 를 활용하여 병렬연산하는 것을 Instruction Level Parallelism (ILP) 라고 한다.
    • 구체적으로 말하면 여러개를 issue 하는 기능을 탑재한 processor 를 superscalar processor 라고 하는 것이고
    • 여기에 실제로 여러개를 issue 하며 process 를 돌리는 parallel processing 방법이 ILP 인 것.
    • 따라서 최대 N 개를 issue 할 수 있을 때 (즉, issue-width=N), 실제로 매 cycle 에 issue 되는 instruction 의 양은 이것보다 작을 수 있다.
    • 이에 따라 여러 process (thread) 로부터 instruction 을 받아 뿌림으로서 동시에 issue 되는 instruction 의 양을 저 N 에 최대한 근접하게 하는 방법이 multithreaded processor 이다.
  • 이와 비슷하게, 여러 instruction 을 하나로 묶은 큰 instruction 하나를 issue 해 superscalar 와 같은 느낌을 내게 하는 방법도 있다.
    • 이것을 Very Long Instruction Word (VLIW) 라고 한다.
    • 옛날에는 intel 과 HP 에서 개발해서 팔아먹었는데 요즘은 안쓴댄다.